pax_global_header00006660000000000000000000000064144560707540014526gustar00rootroot0000000000000052 comment=06d4c11e699b0351765f10398abb4f663a984f36 codec2-1.2.0/000077500000000000000000000000001445607075400126655ustar00rootroot00000000000000codec2-1.2.0/.clang-format000066400000000000000000000106531445607075400152450ustar00rootroot00000000000000--- Language: Cpp # BasedOnStyle: Google AccessModifierOffset: -1 AlignAfterOpenBracket: Align AlignConsecutiveMacros: false AlignConsecutiveAssignments: false AlignConsecutiveDeclarations: false AlignEscapedNewlines: Left AlignOperands: true AlignTrailingComments: true AllowAllArgumentsOnNextLine: true AllowAllConstructorInitializersOnNextLine: true AllowAllParametersOfDeclarationOnNextLine: true AllowShortBlocksOnASingleLine: Never AllowShortCaseLabelsOnASingleLine: false AllowShortFunctionsOnASingleLine: All AllowShortLambdasOnASingleLine: All AllowShortIfStatementsOnASingleLine: WithoutElse AllowShortLoopsOnASingleLine: true AlwaysBreakAfterDefinitionReturnType: None AlwaysBreakAfterReturnType: None AlwaysBreakBeforeMultilineStrings: true AlwaysBreakTemplateDeclarations: Yes BinPackArguments: true BinPackParameters: true BraceWrapping: AfterCaseLabel: false AfterClass: false AfterControlStatement: false AfterEnum: false AfterFunction: false AfterNamespace: false AfterObjCDeclaration: false AfterStruct: false AfterUnion: false AfterExternBlock: false BeforeCatch: false BeforeElse: false IndentBraces: false SplitEmptyFunction: true SplitEmptyRecord: true SplitEmptyNamespace: true BreakBeforeBinaryOperators: None BreakBeforeBraces: Attach BreakBeforeInheritanceComma: false BreakInheritanceList: BeforeColon BreakBeforeTernaryOperators: true BreakConstructorInitializersBeforeComma: false BreakConstructorInitializers: BeforeColon BreakAfterJavaFieldAnnotations: false BreakStringLiterals: true ColumnLimit: 80 CommentPragmas: '^ IWYU pragma:' CompactNamespaces: false ConstructorInitializerAllOnOneLineOrOnePerLine: true ConstructorInitializerIndentWidth: 4 ContinuationIndentWidth: 4 Cpp11BracedListStyle: true DeriveLineEnding: true DerivePointerAlignment: true DisableFormat: false ExperimentalAutoDetectBinPacking: false FixNamespaceComments: true ForEachMacros: - foreach - Q_FOREACH - BOOST_FOREACH IncludeBlocks: Regroup IncludeCategories: - Regex: '^' Priority: 2 SortPriority: 0 - Regex: '^<.*\.h>' Priority: 1 SortPriority: 0 - Regex: '^<.*' Priority: 2 SortPriority: 0 - Regex: '.*' Priority: 3 SortPriority: 0 IncludeIsMainRegex: '([-_](test|unittest))?$' IncludeIsMainSourceRegex: '' IndentCaseLabels: true IndentGotoLabels: true IndentPPDirectives: None IndentWidth: 2 IndentWrappedFunctionNames: false JavaScriptQuotes: Leave JavaScriptWrapImports: true KeepEmptyLinesAtTheStartOfBlocks: false MacroBlockBegin: '' MacroBlockEnd: '' MaxEmptyLinesToKeep: 1 NamespaceIndentation: None ObjCBinPackProtocolList: Never ObjCBlockIndentWidth: 2 ObjCSpaceAfterProperty: false ObjCSpaceBeforeProtocolList: true PenaltyBreakAssignment: 2 PenaltyBreakBeforeFirstCallParameter: 1 PenaltyBreakComment: 300 PenaltyBreakFirstLessLess: 120 PenaltyBreakString: 1000 PenaltyBreakTemplateDeclaration: 10 PenaltyExcessCharacter: 1000000 PenaltyReturnTypeOnItsOwnLine: 200 PointerAlignment: Left RawStringFormats: - Language: Cpp Delimiters: - cc - CC - cpp - Cpp - CPP - 'c++' - 'C++' CanonicalDelimiter: '' BasedOnStyle: google - Language: TextProto Delimiters: - pb - PB - proto - PROTO EnclosingFunctions: - EqualsProto - EquivToProto - PARSE_PARTIAL_TEXT_PROTO - PARSE_TEST_PROTO - PARSE_TEXT_PROTO - ParseTextOrDie - ParseTextProtoOrDie CanonicalDelimiter: '' BasedOnStyle: google ReflowComments: true SortIncludes: true SortUsingDeclarations: true SpaceAfterCStyleCast: false SpaceAfterLogicalNot: false SpaceAfterTemplateKeyword: true SpaceBeforeAssignmentOperators: true SpaceBeforeCpp11BracedList: false SpaceBeforeCtorInitializerColon: true SpaceBeforeInheritanceColon: true SpaceBeforeParens: ControlStatements SpaceBeforeRangeBasedForLoopColon: true SpaceInEmptyBlock: false SpaceInEmptyParentheses: false SpacesBeforeTrailingComments: 2 SpacesInAngles: false SpacesInConditionalStatement: false SpacesInContainerLiterals: true SpacesInCStyleCastParentheses: false SpacesInParentheses: false SpacesInSquareBrackets: false SpaceBeforeSquareBrackets: false Standard: Auto StatementMacros: - Q_UNUSED - QT_REQUIRE_VERSION TabWidth: 8 UseCRLF: false UseTab: Never ... codec2-1.2.0/.github/000077500000000000000000000000001445607075400142255ustar00rootroot00000000000000codec2-1.2.0/.github/workflows/000077500000000000000000000000001445607075400162625ustar00rootroot00000000000000codec2-1.2.0/.github/workflows/cmake-sm1000.yml000066400000000000000000000027221445607075400210060ustar00rootroot00000000000000name: Build SM1000 on: [pull_request] env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) BUILD_TYPE: Debug jobs: build: # The CMake configure and build commands are platform agnostic and should work equally # well on Windows or Mac. You can convert this to a matrix build if you need # cross-platform coverage. # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install packages shell: bash run: | sudo apt-get update sudo apt-get install octave octave-common octave-signal liboctave-dev gnuplot sox p7zip-full python3-numpy valgrind - name: Install ST Standard Peripheral Library (SM1000) working-directory: ${{github.workspace}}/stm32 shell: bash run: git clone https://github.com/whimsicalraps/STM32F4xx_DSP_StdPeriph_Lib - name: Install SM1000 prerequisites working-directory: ${{github.workspace}}/stm32 shell: bash run: sudo apt install gcc-arm-none-eabi - name: Build SM1000 working-directory: ${{github.workspace}}/stm32 shell: bash run: | mkdir build_stm32 cd build_stm32 cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/STM32_Toolchain.cmake -DPERIPHLIBDIR=${{github.workspace}}/stm32/STM32F4xx_DSP_StdPeriph_Lib .. make codec2-1.2.0/.github/workflows/cmake.yml000066400000000000000000000036021445607075400200660ustar00rootroot00000000000000name: Build Codec2 for Linux on: [pull_request] env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) BUILD_TYPE: Debug jobs: build: # The CMake configure and build commands are platform agnostic and should work equally # well on Windows or Mac. You can convert this to a matrix build if you need # cross-platform coverage. # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install packages shell: bash run: | sudo apt-get update sudo apt-get install octave octave-common octave-signal liboctave-dev gnuplot sox p7zip-full python3-numpy valgrind clang-format - name: Create Build Directory shell: bash run: mkdir $GITHUB_WORKSPACE/build_linux - name: Configure codec2 CMake shell: bash working-directory: ${{github.workspace}}/build_linux run: cmake -DUNITTEST=1 $GITHUB_WORKSPACE - name: Build LPCNet and Run ctests shell: bash run: | cd $HOME git clone https://github.com/drowe67/LPCNet.git cd LPCNet && mkdir -p build_linux && cd build_linux cmake .. && make && ctest - name: Build codec2 with LPCNet working-directory: ${{github.workspace}}/build_linux shell: bash run: | cmake -DLPCNET_BUILD_DIR=$HOME/LPCNet/build_linux -DUNITTEST=1 $GITHUB_WORKSPACE make -j4 - name: Run ctests working-directory: ${{github.workspace}}/build_linux shell: bash run: ctest --output-on-failure - name: Test library installation working-directory: ${{github.workspace}}/build_linux shell: bash run: cmake --install . --prefix "$HOME/codec2_install" && rm -rf "$HOME/codec2_install" codec2-1.2.0/.gitignore000066400000000000000000000002601445607075400146530ustar00rootroot00000000000000build_linux stm32/build_stm32 stm32/libstm32f4.a stm32/unittest/lib/python/__pycache__/ stm32/unittest/src/libstm32f4.a stm32/unittest/src/*.map stm32/unittest/test_run/ *.pyc codec2-1.2.0/CMakeLists.txt000066400000000000000000002254431445607075400154370ustar00rootroot00000000000000# # Codec2 - Next-Generation Digital Voice for Two-Way Radio # # CMake configuration contributed by Richard Shaw (KF5OIM) # Please report questions, comments, problems, or patches to the freetel # mailing list: https://lists.sourceforge.net/lists/listinfo/freetel-codec2 # # Note: this has to be at the beginning of the file in order for CMake to # actually recognize this override (vs. simply telling the macOS build toolchain # to mandate the current release). set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "Minimum OS X deployment version") cmake_minimum_required(VERSION 3.13) project(CODEC2 VERSION 1.2.0 DESCRIPTION "Next-Generation Digital Voice for Two-Way Radio" HOMEPAGE_URL "https://www.rowetel.com/codec2.html" LANGUAGES C ) include(GNUInstallDirs) mark_as_advanced(CLEAR CMAKE_INSTALL_BINDIR CMAKE_INSTALL_INCLUDEDIR CMAKE_INSTALL_LIBDIR ) # # Prevent in-source builds # If an in-source build is attempted, you will still need to clean up a few # files manually. # set(CMAKE_DISABLE_SOURCE_CHANGES ON) set(CMAKE_DISABLE_IN_SOURCE_BUILD ON) if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") message(FATAL_ERROR "In-source builds in ${CMAKE_BINARY_DIR} are not " "allowed, please remove ./CMakeCache.txt and ./CMakeFiles/, create a " "separate build directory and run cmake from there.") endif("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") # Set default build type if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Debug") endif() # Build universal ARM64 and x86_64 binaries on Mac. if(BUILD_OSX_UNIVERSAL) set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64") endif(BUILD_OSX_UNIVERSAL) set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "Minimum OS X deployment version") # # Find the git hash if this is a working copy. # if(EXISTS ${CMAKE_SOURCE_DIR}/.git) find_package(Git) if(Git_FOUND) execute_process( COMMAND "${GIT_EXECUTABLE}" rev-parse --short HEAD WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" RESULT_VARIABLE res OUTPUT_VARIABLE CODEC2_HASH ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) message(STATUS "Codec2 current git hash: ${CODEC2_HASH}") add_definitions(-DGIT_HASH="${CODEC2_HASH}") else() message(WARNING "Git not found. Can not determine current commit hash.") add_definitions(-DGIT_HASH="Unknown") endif() else() add_definitions(-DGIT_HASH="None") endif() set(ARCHIVE_NAME "codec2-${CODEC2_VERSION_MAJOR}.${CODEC2_VERSION_MINOR}.${CODEC2_VERSION_PATCH}") add_custom_target(dist COMMAND git archive --prefix=${ARCHIVE_NAME}/ HEAD | bzip2 > ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.bz2 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) # Set default C flags. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-strict-overflow") # Check for what C standard is supported. if(NOT WIN32) include(CheckCCompilerFlag) CHECK_C_COMPILER_FLAG("-std=gnu11" COMPILER_SUPPORTS_GNU11) CHECK_C_COMPILER_FLAG("-std=gnu99" COMPILER_SUPPORTS_GNU99) if(COMPILER_SUPPORTS_GNU11) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu11") elseif(COMPILER_SUPPORTS_GNU99) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99") else() message(SEND_ERROR "Compiler doesn't seem to support at least gnu99, might cause problems" ) endif() endif(NOT WIN32) # -fPIC is implied on MinGW... if((NOT WIN32) AND (NOT MICROCONTROLLER_BUILD)) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") endif() set(CMAKE_C_FLAGS_DEBUG "-g -O2 -DDUMP") set(CMAKE_C_FLAGS_RELEASE "-O3") # # Setup Windows/MinGW specifics here. # if(MINGW) message(STATUS "System is MinGW.") endif(MINGW) # # Default options # option(BUILD_SHARED_LIBS "Build shared library. Set to OFF for static library." ON) option(UNITTEST "Build unittest binaries." OFF) # LPCNet needs to be bootstrapped because codec2 and freedvlpcnet are # cross dependent. option(LPCNET "Build codec2 with LPCNet support." OFF) set(LPCNET_BUILD_DIR FALSE CACHE PATH "Location of lpcnet build tree.") # Setting LPCNET_BUILD_DIR implies LPCNET=ON if(LPCNET_BUILD_DIR) set(LPCNET ON) endif() include(CheckIncludeFiles) check_include_files("stdlib.h" HAVE_STDLIB_H) check_include_files("string.h" HAVE_STRING_H) include(CheckSymbolExists) # Check if _GNU_SOURCE is available. if (NOT DEFINED _GNU_SOURCE) check_symbol_exists(__GNU_LIBRARY__ "features.h" _GNU_SOURCE) if (NOT _GNU_SOURCE) unset(_GNU_SOURCE CACHE) check_symbol_exists(_GNU_SOURCE "features.h" _GNU_SOURCE) endif() endif() if (_GNU_SOURCE) add_definitions(-D_GNU_SOURCE=1) endif() check_symbol_exists(floor math.h HAVE_FLOOR) check_symbol_exists(ceil math.h HAVE_CEIL) check_symbol_exists(pow math.h HAVE_POW) check_symbol_exists(sqrt math.h HAVE_SQRT) check_symbol_exists(sin math.h HAVE_SIN) check_symbol_exists(cos math.h HAVE_COS) check_symbol_exists(atan2 math.h HAVE_ATAN2) check_symbol_exists(log10 math.h HAVE_LOG10) check_symbol_exists(round math.h HAVE_ROUND) check_symbol_exists(getopt getopt.h HAVE_GETOPT) configure_file ("${PROJECT_SOURCE_DIR}/cmake/config.h.in" "${PROJECT_BINARY_DIR}/config.h" ) # Output path is such that #include in codec2.h works set(CODEC2_VERSION_PATH "${PROJECT_BINARY_DIR}/codec2") configure_file ("${PROJECT_SOURCE_DIR}/cmake/version.h.in" "${CODEC2_VERSION_PATH}/version.h" ) include_directories(${PROJECT_BINARY_DIR}) # CMake Package setup #include(CMakePackageConfigHelpers) #configure_package_config_file(cmake/codec2-config.cmake.in # ${CMAKE_CURRENT_BINARY_DIR}/codec2-config.cmake # INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/codec2 # PATH_VARS CMAKE_INSTALL_INCLUDEDIR #) # # Find lpcnet library # if(LPCNET) if(LPCNET_BUILD_DIR) # Theoretically this shouldn't be needed as we're also defining LPCNET_BUILD_DIR # in the PATHS section below. But on Fedora 37, CMake can't find LPCNet (at least # in Docker) without this. set(lpcnetfreedv_DIR ${LPCNET_BUILD_DIR}) find_package(lpcnetfreedv REQUIRED PATHS ${LPCNET_BUILD_DIR} NO_DEFAULT_PATH CONFIGS lpcnetfreedv.cmake ) if(lpcnetfreedv_FOUND) message(STATUS "liblpcnetfreedv found in build tree.") add_definitions("-D__LPCNET__") else() message(FATAL_ERROR "LPCNet include/library not found in build tree.") endif() else() find_package(lpcnetfreedv REQUIRED) if(lpcnetfreedv_FOUND) add_definitions("-D__LPCNET__") message(STATUS "liblpcnetfreedv found.") else() message(FATAL_ERROR "lpcnetfreedv library not found.") endif() endif() endif() # # codec2 library and demo apps # add_subdirectory(src) add_subdirectory(demo) if(UNITTEST) # Pthread Library find_package(Threads REQUIRED) message(STATUS "Threads library flags: ${CMAKE_THREAD_LIBS_INIT}") add_subdirectory(unittest) endif(UNITTEST) message(STATUS "Build type is: " ${CMAKE_BUILD_TYPE}) string(TOUPPER ${CMAKE_BUILD_TYPE} _FLAGS) if(_FLAGS STREQUAL "NONE") message(STATUS "Compiler Flags: " ${CMAKE_C_FLAGS}) else() message(STATUS "Compiler Flags: " ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${_FLAGS}}) endif() message(STATUS "Libraries linked: " ${CMAKE_REQUIRED_LIBRARIES}) set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Next-Generation Digital Voice for Two-Way Radio") set(CPACK_PACKAGE_VENDOR "CMake") set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING") set(CPACK_PACKAGE_VERSION_MAJOR ${CODEC2_VERSION_MAJOR}) set(CPACK_PACKAGE_VERSION_MINOR ${CODEC2_VERSION_MINOR}) if(CODEC2_VERSION_PATCH) set(CPACK_PACKAGE_VERSION_PATCH ${CODEC2_VERSION_PATCH}) else() set(CPACK_PACKAGE_VERSION_PATCH 0) endif() # Return the date (yyyy-mm-dd) string(TIMESTAMP DATE_RESULT "%Y-%m-%d" UTC) message(STATUS "Compilation date = XX${DATE_RESULT}XX") set(CPACK_PACKAGE_VERSION_PATCH "${CPACK_PACKAGE_VERSION_PATCH}-${DATE_RESULT}-${CODEC2_HASH}") if(WIN32) # # Cpack NSIS installer configuration for Windows. # See: http://nsis.sourceforge.net/Download # # Detect if we're doing a 32-bit or 64-bit windows build. if(${CMAKE_SIZEOF_VOID_P} EQUAL 8) set(CMAKE_CL_64 TRUE) endif() configure_file(cmake/GetDependencies.cmake.in cmake/GetDependencies.cmake @ONLY ) install(SCRIPT ${CMAKE_BINARY_DIR}/cmake/GetDependencies.cmake) set(CPACK_PACKAGE_INSTALL_DIRECTORY "Codec2") set(CPACK_CREATE_DESKTOP_LINKS "") set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}") set(CPACK_NSIS_URL_INFO_ABOUT "http://rowetel.com/codec2.html") set(CPACK_NSIS_MODIFY_PATH ON) include(CPack) elseif(UNIX AND NOT APPLE) # Linux packaging SET(CPACK_GENERATOR "DEB") SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Mooneer Salem ") #required SET(CPACK_DEB_COMPONENT_INSTALL ON) SET(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT) SET(CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS ON) SET(CPACK_DEBIAN_LIB_PACKAGE_NAME "codec2") SET(CPACK_DEBIAN_PACKAGE_DEPENDS "lpcnet (>= 0.3.0)") include(CPack) cpack_add_component(lib REQUIRED) cpack_add_component(dev DEPENDS lib) endif(WIN32) ######################################################################## # Create Pkg Config File ######################################################################## configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/codec2.pc.in ${CMAKE_CURRENT_BINARY_DIR}/codec2.pc @ONLY ) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/codec2.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT "codec2_devel" ) ################################################################## # Tests ################################################################## if(UNITTEST) include(CTest) enable_testing() add_test(NAME test_clang_format COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}; clang-format --dry-run --Werror src/*.c src/*.h unittest/*.c demo/*.c") add_test(NAME test_freedv_get_hash COMMAND sh -c "${CMAKE_CURRENT_BINARY_DIR}/unittest/thash") if(UNIX) # Uses pthreads add_test(NAME test_fifo COMMAND $ ) endif() # 16<->8 kHz float resamplers add_test(NAME test_fdmdv_16to8 COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; ${CMAKE_CURRENT_BINARY_DIR}/unittest/t16_8; DISPLAY=\"\" echo \"diff_fft_mag('in8.raw','out8.raw'); quit;\" | octave-cli -qf ") set_tests_properties(test_fdmdv_16to8 PROPERTIES PASS_REGULAR_EXPRESSION "PASS") # 16<->8 kHz short (int16) resamplers add_test(NAME test_fdmdv_16to8_short COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; ${CMAKE_CURRENT_BINARY_DIR}/unittest/t16_8_short; DISPLAY=\"\" echo \"diff_fft_mag('in8_short.raw','out8_short.raw'); quit;\" | octave-cli -qf ") set_tests_properties(test_fdmdv_16to8_short PROPERTIES PASS_REGULAR_EXPRESSION "PASS") # 48<->8 kHz float resamplers add_test(NAME test_fdmdv_48to8_short COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; ${CMAKE_CURRENT_BINARY_DIR}/unittest/t48_8_short; DISPLAY=\"\" echo \"diff_fft_mag('in8.raw','out8.raw'); quit;\" | octave-cli -qf ") set_tests_properties(test_fdmdv_48to8_short PROPERTIES PASS_REGULAR_EXPRESSION "PASS") # 48<->8 kHz short resamplers add_test(NAME test_fdmdv_48to8 COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; ${CMAKE_CURRENT_BINARY_DIR}/unittest/t48_8; DISPLAY=\"\" echo \"diff_fft_mag('in8.raw','out8.raw'); quit;\" | octave-cli -qf ") set_tests_properties(test_fdmdv_48to8 PROPERTIES PASS_REGULAR_EXPRESSION "PASS") # Basic sanity check of Quisk complex band pass filter. Note complex filtering cosw(wn) gives # just the +ve freq exp(jwn) so output power is 0.5 input power add_test(NAME test_quisk_filter COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; ${CMAKE_CURRENT_BINARY_DIR}/unittest/mksine in.raw 1500 1; cat in.raw | ${CMAKE_CURRENT_BINARY_DIR}/unittest/tquisk_filter | sox -t .s16 -r 8000 -c 1 - -t .s16 out.raw vol 2; cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; DISPLAY=\"\" echo \"diff_fft_mag('in.raw','out.raw'); quit;\" | octave-cli -qf ") set_tests_properties(test_quisk_filter PROPERTIES PASS_REGULAR_EXPRESSION "PASS") add_test(NAME test_CML_ldpcut COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; CTEST_SINGLE=1 octave-cli -qf ldpcut.m") set_tests_properties(test_CML_ldpcut PROPERTIES PASS_REGULAR_EXPRESSION "Nerr: 0") add_test(NAME test_CML_ldpcut_one_stuffing COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; CTEST_ONE_STUFFING=1 octave-cli -qf ldpcut.m") set_tests_properties(test_CML_ldpcut_one_stuffing PROPERTIES PASS_REGULAR_EXPRESSION "Ferrs: 0") # Golay (23,11) unit tests add_test(NAME test_golay23 COMMAND sh -c "${CMAKE_CURRENT_BINARY_DIR}/unittest/golay23") add_test(NAME test_golay23_runtime_tables COMMAND sh -c "${CMAKE_CURRENT_BINARY_DIR}/unittest/golay23_runtime_tables") # check channel simulator measures correct Peak to Average Power Ratio (about 0dB) with a sine wave input signal add_test(NAME test_ch_papr COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}; ./unittest/mksine - 1000 10 | ./src/ch - /dev/null --ctest") add_test(NAME test_codec2_700c_octave_port COMMAND sh -c " cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./c2sim ${CMAKE_CURRENT_SOURCE_DIR}/raw/hts1a.raw --phase0 --postfilter --dump hts1a --lpc 10 --dump_pitch_e hts1a_pitche.txt; cd ${CMAKE_CURRENT_BINARY_DIR}/unittest; ./tnewamp1 ${CMAKE_CURRENT_SOURCE_DIR}/raw/hts1a.raw; cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; DISPLAY=\"\" octave-cli -qf --eval 'tnewamp1(\"${CMAKE_CURRENT_BINARY_DIR}/src/hts1a\", \"${CMAKE_CURRENT_BINARY_DIR}/unittest\")'") set_tests_properties(test_codec2_700c_octave_port PROPERTIES PASS_REGULAR_EXPRESSION "fails: 0") # ------------------------------------------------------------------------- # FDMDV Modem # ------------------------------------------------------------------------- add_test(NAME test_FDMDV_modem_octave_ut COMMAND sh -c " cd ${CMAKE_CURRENT_SOURCE_DIR}/octave/; DISPLAY=\"\" octave-cli -qf fdmdv_ut.m") set_tests_properties(test_FDMDV_modem_octave_ut PROPERTIES PASS_REGULAR_EXPRESSION "errors......: 0") add_test(NAME test_FDMDV_modem_octave_mod_demod COMMAND sh -c " cd ${CMAKE_CURRENT_SOURCE_DIR}/octave/; echo \"fdmdv_mod('test.raw',1400); fdmdv_demod('test.raw',1400); quit\" | DISPLAY=\"\" octave-cli") set_tests_properties(test_FDMDV_modem_octave_mod_demod PROPERTIES PASS_REGULAR_EXPRESSION "0 errors") add_test(NAME test_FDMDV_modem_octave_port COMMAND sh -c "$ && DISPLAY=\"\" octave-cli --no-gui -qf ${CMAKE_CURRENT_SOURCE_DIR}/octave/tfdmdv.m" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/octave) set_tests_properties(test_FDMDV_modem_octave_port PROPERTIES PASS_REGULAR_EXPRESSION "fails: 0") add_test(NAME test_FDMDV_modem_octave_c COMMAND sh -c " cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./fdmdv_get_test_bits - 14000 | ./fdmdv_mod - - | ./fdmdv_demod - - 14 demod_dump.txt | ./fdmdv_put_test_bits - ; cd ${CMAKE_CURRENT_SOURCE_DIR}/octave/; DISPLAY=\"\" octave-cli -qf fdmdv_ut.m") set_tests_properties(test_FDMDV_modem_octave_c PROPERTIES PASS_REGULAR_EXPRESSION "errors......: 0") # ------------------------------------------------------------------------- # COHPSK Modem # ------------------------------------------------------------------------- add_test(NAME test_COHPSK_modem_octave_port COMMAND sh -c "$ && DISPLAY=\"\" octave-cli --no-gui -qf ${CMAKE_CURRENT_SOURCE_DIR}/octave/tcohpsk.m" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/octave) set_tests_properties(test_COHPSK_modem_octave_port PROPERTIES PASS_REGULAR_EXPRESSION "fails: 0") add_test(NAME test_COHPSK_modem_AWGN_BER COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./cohpsk_get_test_bits - 5600 | ./cohpsk_mod - - | ./ch - - --No -30 --Fs 7500 | ./cohpsk_demod - - | ./cohpsk_put_test_bits -" ) add_test(NAME test_COHPSK_modem_freq_offset COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./cohpsk_get_test_bits - 5600 | ./cohpsk_mod - - | ./ch - - --No -40 -f -30 --Fs 7500 | ./cohpsk_demod - - | ./cohpsk_put_test_bits -" ) # ------------------------------------------------------------------------- # OFDM Modem # ------------------------------------------------------------------------- add_test(NAME test_OFDM_qam16 COMMAND sh -c "${CMAKE_CURRENT_BINARY_DIR}/unittest/tqam16") add_test(NAME test_OFDM_modem_octave_port COMMAND sh -c "PATH_TO_TOFDM=${CMAKE_CURRENT_BINARY_DIR}/unittest/tofdm DISPLAY=\"\" octave-cli --no-gui -qf ${CMAKE_CURRENT_SOURCE_DIR}/octave/tofdm.m" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/octave) set_tests_properties(test_OFDM_modem_octave_port PROPERTIES PASS_REGULAR_EXPRESSION "fails: 0") add_test(NAME test_OFDM_modem_octave_port_Nc_31 COMMAND sh -c "NC=31 PATH_TO_TOFDM=${CMAKE_CURRENT_BINARY_DIR}/unittest/tofdm DISPLAY=\"\" octave-cli --no-gui -qf ${CMAKE_CURRENT_SOURCE_DIR}/octave/tofdm.m" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/octave) set_tests_properties(test_OFDM_modem_octave_port_Nc_31 PROPERTIES PASS_REGULAR_EXPRESSION "fails: 0") add_test(NAME test_OFDM_modem_octave_qam16_uncoded COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; echo \"ofdm_tx('test_qam16.raw','qam16c1',3,12,'awgn','bursts',3); ofdm_rx('test_qam16.raw','qam16c1', 'passber', 0.05, 'packetsperburst', 1); quit\" | DISPLAY=\"\" octave-cli") set_tests_properties(test_OFDM_modem_octave_qam16_uncoded PROPERTIES PASS_REGULAR_EXPRESSION "Pass") add_test(NAME test_OFDM_modem_esno_est_octave COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; echo 'pkg load signal; esno_est; esno_est_tests_octave' | PATH_TO_UNITEST=${CMAKE_CURRENT_BINARY_DIR}/unittest/ DISPLAY=\"\" octave-cli") set_tests_properties(test_OFDM_modem_esno_est_octave PROPERTIES PASS_REGULAR_EXPRESSION "AWGN Pass.*MPP Pass") add_test(NAME test_OFDM_modem_esno_est_c COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; echo 'pkg load signal; esno_est; esno_est_tests_c' | PATH_TO_UNITEST=${CMAKE_CURRENT_BINARY_DIR}/unittest/ DISPLAY=\"\" octave-cli") set_tests_properties(test_OFDM_modem_esno_est_c PROPERTIES PASS_REGULAR_EXPRESSION "AWGN Pass.*MPP Pass") # ---------------------------------- Data Mode burst acquisition tests ---------------------------------- add_test(NAME test_OFDM_modem_octave_burst_acq COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; echo \"ctest=1; ofdm_acquisition; quit\" | DISPLAY=\"\" octave-cli") set_tests_properties(test_OFDM_modem_octave_burst_acq PROPERTIES PASS_REGULAR_EXPRESSION "P.acq. = 1.00") add_test(NAME test_OFDM_modem_octave_datac0_postamble COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; echo \"ofdm_tx('test_datac0.raw','datac0',1,100,'awgn','bursts',3); ofdm_rx('test_datac0.raw','datac0','packetsperburst',1,'postambletest','passber', 1E-6); quit\" | DISPLAY=\"\" octave-cli") set_tests_properties(test_OFDM_modem_octave_datac0_postamble PROPERTIES PASS_REGULAR_EXPRESSION "Pass") # Check C port of burst acquisition add_test(NAME test_OFDM_modem_burst_acq_port COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; echo \"tofdm_acq; quit\" | PATH_TO_UNITTEST=${CMAKE_CURRENT_BINARY_DIR}/unittest DISPLAY=\"\" octave-cli") set_tests_properties(test_OFDM_modem_burst_acq_port PROPERTIES PASS_REGULAR_EXPRESSION "PASS") # Give uncoded Octave burst data modem a workout on a poor channel (0dB SNR MPP) add_test(NAME test_OFDM_modem_octave_datac0_mpp COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; echo \"ofdm_tx('test_datac0.raw','datac0',1,0,'mpp','bursts',10); \ ofdm_rx('test_datac0.raw','datac0','packetsperburst',1,'passpacketcount',9);\ quit\" | DISPLAY=\"\" octave-cli") set_tests_properties(test_OFDM_modem_octave_datac0_mpp PROPERTIES PASS_REGULAR_EXPRESSION "Pass") # Same for coded Octave burst data modem - look out for bit rot as simulations evolve .... add_test(NAME test_OFDM_modem_octave_datac0_mpp_coded COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; echo \"ofdm_ldpc_tx('test_datac0.raw','datac0',1,0,'mpp','bursts',10); \ ofdm_ldpc_rx('test_datac0.raw','datac0','packetsperburst',1,'passpacketcount',9);\ quit\" | DISPLAY=\"\" octave-cli") set_tests_properties(test_OFDM_modem_octave_datac0_mpp_coded PROPERTIES PASS_REGULAR_EXPRESSION "Pass") # Check Octave and C compressed waveforms are about the same add_test(NAME test_OFDM_modem_datac0_compression COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/unittest; ./check_comp.sh ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/src") # ---------------------------------- ofdm_mod/demod level C modem tests ---------------------------------- # noise free uncoded 700D test, including reading and writing payload bits add_test(NAME test_OFDM_modem_700D COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ofdm_get_test_bits - | ./ofdm_mod | ./ofdm_demod --testframes > /dev/null") # noise free coded 700D test, including reading and writing payload bits add_test(NAME test_OFDM_modem_700D_ldpc COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ofdm_get_test_bits - --length 112 | ./ofdm_mod --ldpc | ./ofdm_demod --ldpc --testframes > /dev/null") # noise free 2020 test, including reading and writing payload bits. fsk_*_test_bits # used as it does it's own frame sync add_test(NAME test_OFDM_modem_2020_ldpc COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./fsk_get_test_bits - 5000 | ./ofdm_mod --ldpc --mode 2020 | ./ofdm_demod --ldpc --mode 2020 | ./fsk_put_test_bits - -q") add_test(NAME test_OFDM_modem_AWGN_BER COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ofdm_mod --in /dev/zero --ldpc --testframes 60 --txbpf | ./ch - - --No -20 -f -50 | ./ofdm_demod --out /dev/null --testframes --ldpc --verbose 1" ) add_test(NAME test_OFDM_modem_fading_BER COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/unittest; PATH=$PATH:${CMAKE_CURRENT_BINARY_DIR}/src ./ofdm_fade.sh ${CMAKE_CURRENT_BINARY_DIR}/unittest") add_test(NAME test_OFDM_modem_phase_est_bw COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/unittest; PATH=$PATH:${CMAKE_CURRENT_BINARY_DIR}/src ./ofdm_phase_est_bw.sh ${CMAKE_CURRENT_BINARY_DIR}/unittest") add_test(NAME test_OFDM_modem_time_sync_700D COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/unittest; PATH=$PATH:${CMAKE_CURRENT_BINARY_DIR}/src ./ofdm_time_sync.sh 700D") if(LPCNET) add_test(NAME test_OFDM_modem_time_sync_2020 COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/unittest; PATH=$PATH:${CMAKE_CURRENT_BINARY_DIR}/src ./ofdm_time_sync.sh 2020") endif() # 700E at a little above AWGN operating point add_test(NAME test_OFDM_modem_700E_AWGN COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ofdm_mod --in /dev/zero --testframes 10 --ldpc --mode 700E | ./ch - - --No -22 | ./ofdm_demod --mode 700E --ldpc --testframes -v 2 > /dev/null") # 2020B AWGN test add_test(NAME test_OFDM_modem_2020B_AWGN COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ofdm_mod --in /dev/zero --testframes 10 --mode 2020B --ldpc --clip --txbpf | ./ch - - --No -19 | ./ofdm_demod --mode 2020B --testframes --ldpc -v 2 > /dev/null") # ------------------------------------------------------------------------- # OFDM Data modes # ------------------------------------------------------------------------- # To integrate a new mode/waveform we prototype in Octave, get the core OFDM modem # running in C (ofdm_mod & ofdm_demod), then the FreeDV API (frredv_tx & freedv_rx). # Here we test Octave and the C versions of the OFDM modem working together, to help # prevent any bit rot between them # DATAC0 burst mode Octave Tx, C Rx add_test(NAME test_OFDM_modem_datac0_octave_burst COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; DISPLAY=\"\" octave-cli -qf --eval \"ofdm_ldpc_tx('${CMAKE_CURRENT_BINARY_DIR}/test.raw','datac0',1,100,'awgn','bursts',3)\"; cd ${CMAKE_CURRENT_BINARY_DIR}; cat test.raw | ./src/ofdm_demod --mode datac0 --out /dev/null --testframes --ldpc --verbose 1 --packetsperburst 1") set_tests_properties(test_OFDM_modem_datac0_octave_burst PROPERTIES PASS_REGULAR_EXPRESSION "Coded PER: 0.0000 Tpkts: 3") # DATAC1 C Tx, Octave Rx add_test(NAME test_OFDM_modem_datac1_octave COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}; ./src/ofdm_mod --mode datac1 --in /dev/zero --testframes 20 --verbose 1 --ldpc > test.raw; cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; DISPLAY=\"\" octave-cli -qf --eval 'ofdm_ldpc_rx(\"${CMAKE_CURRENT_BINARY_DIR}/test.raw\",\"datac1\")'") set_tests_properties(test_OFDM_modem_datac1_octave PROPERTIES PASS_REGULAR_EXPRESSION "Coded PER: 0.0000 Pckts: 4") # DATAC3 C Tx, Octave Rx add_test(NAME test_OFDM_modem_datac3_octave COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}; ./src/ofdm_mod --mode datac3 --in /dev/zero --testframes 20 --verbose 1 --ldpc > test.raw; cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; DISPLAY=\"\" octave-cli -qf --eval 'ofdm_ldpc_rx(\"${CMAKE_CURRENT_BINARY_DIR}/test.raw\",\"datac3\")'") set_tests_properties(test_OFDM_modem_datac3_octave PROPERTIES PASS_REGULAR_EXPRESSION "Coded PER: 0.0000 Pckts: 5") # DATAC1 C Tx, C Rx, uncoded add_test(NAME test_OFDM_modem_datac1 COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ofdm_mod --mode datac1 --in /dev/zero --testframes 10 --verbose 1 | ./ofdm_demod --mode datac1 --out /dev/null --testframes --verbose 1") # DATAC1 C Tx, C Rx, coded add_test(NAME test_OFDM_modem_datac1_ldpc COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ofdm_mod --mode datac1 --in /dev/zero --testframes 10 --ldpc --verbose 1 | ./ofdm_demod --mode datac1 --out /dev/null --testframes --ldpc --verbose 1") # DATAC0 C Tx, C Rx, coded, burst mode add_test(NAME test_OFDM_modem_datac0_ldpc_burst COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ofdm_mod --mode datac0 --in /dev/zero --testframes 1 --verbose 1 --ldpc --bursts 3 | ./ch - - --No -17 | ./ofdm_demod --mode datac0 --out /dev/null --testframes --ldpc --verbose 2 --packetsperburst 1") # DATAC4 C Tx, Octave Rx, burst mode add_test(NAME test_OFDM_modem_datac4_octave COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}; ./src/ofdm_mod --mode datac4 --in /dev/zero --testframes 1 --verbose 1 --ldpc --bursts 5 > test.raw; cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; DISPLAY=\"\" octave-cli -qf --eval 'ofdm_ldpc_rx(\"${CMAKE_CURRENT_BINARY_DIR}/test.raw\",\"datac4\",\"packetsperburst\",1)'") set_tests_properties(test_OFDM_modem_datac3_octave PROPERTIES PASS_REGULAR_EXPRESSION "Coded PER: 0.0000 Pckts: 5") # DATAC13 Octave Tx, C Rx, burst mode add_test(NAME test_OFDM_modem_datac13_octave COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; DISPLAY=\"\" octave-cli -qf --eval 'ofdm_ldpc_tx(\"${CMAKE_CURRENT_BINARY_DIR}/src/test.raw\",\"datac13\",1,3,\"awgn\",\"bursts\",5)'; cd ${CMAKE_CURRENT_BINARY_DIR}/src; cat test.raw | ./ofdm_demod --mode datac13 --out /dev/null --testframes --ldpc --verbose 2 --packetsperburst 1") # DATAC4 C Tx, C Rx, burst mode add_test(NAME test_OFDM_modem_datac4_ldpc_burst COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ofdm_mod --mode datac4 --in /dev/zero --testframes 1 --verbose 1 --ldpc --bursts 10 | ./ch - - --No -17 | ./ofdm_demod --mode datac4 --out /dev/null --testframes --ldpc --verbose 2 --packetsperburst 1") # DATAC13 C Tx, C Rx, burst mode add_test(NAME test_OFDM_modem_datac13_ldpc_burst COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ofdm_mod --mode datac13 --in /dev/zero --testframes 1 --verbose 1 --ldpc --bursts 10 | ./ch - - --No -17 | ./ofdm_demod --mode datac13 --out /dev/null --testframes --ldpc --verbose 2 --packetsperburst 1") # ------------------------------------------------------------------------- # LDPC # ------------------------------------------------------------------------- # tests ldpc_enc/ldpc_noise/ldpc_dec add_test(NAME test_ldpc_enc_dec COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ldpc_enc /dev/zero - --sd --code HRA_112_112 --testframes 200 | ./ldpc_noise - - 0.5 | ./ldpc_dec - /dev/null --code HRA_112_112 --sd --testframes" ) add_test(NAME test_ldpc_enc_dec_HRA_56_56 COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ldpc_enc /dev/zero - --sd --code HRA_56_56 --testframes 200 | ./ldpc_noise - - 0.5 | ./ldpc_dec - /dev/null --code HRA_56_56 --sd --testframes" ) add_test(NAME test_ldpc_enc_dec_H_212_158 COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ldpc_enc /dev/zero - --sd --code H_212_158 --testframes 200 | ./ldpc_noise - - -2.0 | ./ldpc_dec - /dev/null --code H_212_158 --sd --testframes" ) add_test(NAME test_ldpc_enc_dec_HRAb_396_504 COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ldpc_enc /dev/zero - --sd --code HRAb_396_504 --testframes 200 | ./ldpc_noise - - -2.0 | ./ldpc_dec - /dev/null --code HRAb_396_504 --sd --testframes" ) add_test(NAME test_ldpc_enc_dec_H_256_768_22 COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ldpc_enc /dev/zero - --sd --code H_256_768_22 --testframes 200 | ./ldpc_noise - - 3.0 | ./ldpc_dec - /dev/null --code H_256_768_22 --sd --testframes" ) add_test(NAME test_ldpc_enc_dec_H_256_512_4 COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ldpc_enc /dev/zero - --sd --code H_256_512_4 --testframes 200 | ./ldpc_noise - - 0.5 | ./ldpc_dec - /dev/null --code H_256_512_4 --sd --testframes" ) add_test(NAME test_ldpc_enc_dec_HRAa_1536_512 COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ldpc_enc /dev/zero - --sd --code HRAa_1536_512 --testframes 200 | ./ldpc_noise - - -2 | ./ldpc_dec - /dev/null --code HRAa_1536_512 --sd --testframes" ) add_test(NAME test_ldpc_enc_dec_H_128_256_5 COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ldpc_enc /dev/zero - --sd --code H_128_256_5 --testframes 200 | ./ldpc_noise - - 0.5 | ./ldpc_dec - /dev/null --code H_128_256_5 --sd --testframes" ) add_test(NAME test_ldpc_enc_dec_H_4096_8192_3d COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ldpc_enc /dev/zero - --sd --code H_4096_8192_3d --testframes 100 | ./ldpc_noise - - 0.0 | ./ldpc_dec - /dev/null --code H_4096_8192_3d --sd --testframes" ) add_test(NAME test_ldpc_enc_dec_H_16200_9720 COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ldpc_enc /dev/zero - --sd --code H_16200_9720 --testframes 10 | ./ldpc_noise - - 0.5 | ./ldpc_dec - /dev/null --code H_16200_9720 --sd --testframes" ) add_test(NAME test_ldpc_enc_dec_H_1024_2048_4f COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ldpc_enc /dev/zero - --sd --code H_1024_2048_4f --testframes 100 | ./ldpc_noise - - 0.0 | ./ldpc_dec - /dev/null --code H_1024_2048_4f --sd --testframes" ) add_test(NAME test_ldpc_enc_dec_H_2064_516_sparse COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ldpc_enc /dev/zero - --sd --code H_2064_516_sparse --testframes 100 | ./ldpc_noise - - -2.0 | ./ldpc_dec - /dev/null --code H_2064_516_sparse --sd --testframes" ) # ------------------------------------------------------------------------- # FreeDV API # ------------------------------------------------------------------------- # Test 1600 using number of frames decoded and correct rx txt channel output add_test(NAME test_freedv_api_1600 COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_tx 1600 ../../raw/ve9qrp_10s.raw - | ./freedv_rx 1600 - /dev/null --txtrx 1600.txt; cat 1600.txt") set_tests_properties(test_freedv_api_1600 PROPERTIES PASS_REGULAR_EXPRESSION "frames decoded: 503 .*cq cq hello") add_test(NAME test_freedv_api_700C COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_tx 700C ../../raw/ve9qrp_10s.raw - | ./freedv_rx 700C - /dev/null") set_tests_properties(test_freedv_api_700C PROPERTIES PASS_REGULAR_EXPRESSION "frames decoded: 125") add_test(NAME test_freedv_api_700D_backwards_compatability COMMAND sh -c "$ 700D ${CMAKE_CURRENT_SOURCE_DIR}/raw/testframes_700d.raw /dev/null --testframes --discard" ) # speech output on valid signal (at least 70000 samples), to exercise freedv_bits_to_speech() speech output logic add_test(NAME test_freedv_api_700D_speech COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_tx 700D ../../raw/ve9qrp_10s.raw - | ./ch - - --No -20 | ./freedv_rx 700D - /dev/null --squelch -2 -vv") set_tests_properties(test_freedv_api_700D_speech PROPERTIES PASS_REGULAR_EXPRESSION "frames decoded: 62 output speech samples: 7") # no random speech output due to trial sync when listening to noise add_test(NAME test_freedv_api_700D_burble COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_tx 700D ../../raw/ve9qrp.raw - | ./ch - - --No -8 | ./freedv_rx 700D - /dev/null --squelch -2 -vv") set_tests_properties(test_freedv_api_700D_burble PROPERTIES PASS_REGULAR_EXPRESSION "output speech samples: 0") add_test(NAME test_freedv_api_700D_AWGN_BER COMMAND sh -c "dd bs=2560 count=120 if=/dev/zero | $ 700D - - --testframes | $ - - --No -20 -f -10 | $ 700D - /dev/null --testframes --discard" ) # exercises complex rx codepath, albeit with just real samples add_test(NAME test_freedv_api_700D_AWGN_BER_USECOMPLEX COMMAND sh -c "dd bs=2560 count=120 if=/dev/zero | $ 700D - - --testframes | $ - - --No -20 -f -10 | $ 700D - /dev/null --testframes --discard --usecomplex" ) # check real part of freedv_comptx() matches freedv_tx() add_test(NAME test_freedv_api_700D_real_comp COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/unittest; PATH=$PATH:${CMAKE_CURRENT_BINARY_DIR}/demo:${CMAKE_CURRENT_BINARY_DIR}/unittest; ./check_real_comp.sh" ) # exercises freedv_comptx() add_test(NAME test_freedv_api_700D_comptx COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/unittest; cat ${CMAKE_CURRENT_SOURCE_DIR}/raw/ve9qrp_10s.raw | ./freedv_700d_comptx | ./freedv_700d_comprx tx > /dev/null" ) # exercises freedv_comprx() add_test(NAME test_freedv_api_700D_comprx COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/unittest; cat ${CMAKE_CURRENT_SOURCE_DIR}/raw/ve9qrp_10s.raw | ./freedv_700d_comptx | ./freedv_700d_comprx rx > /dev/null" ) if(LPCNET) add_test(NAME test_freedv_api_2020_to_ofdm_demod COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_tx 2020 ../../wav/wia_16kHz.wav - --testframes | ./ofdm_demod --mode 2020 --verbose 1 --ldpc --testframes > /dev/null" ) add_test(NAME test_freedv_api_2020_from_ofdm_mod COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ofdm_mod --in /dev/zero --mode 2020 --verbose 1 --ldpc --testframes 10 | ./freedv_rx 2020 - /dev/null --testframes" ) add_test(NAME test_freedv_api_2020_awgn COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; dd bs=32000 count=10 if=/dev/zero | ./freedv_tx 2020 - - --testframes | ./ch - - --No -24 | ./freedv_rx 2020 - /dev/null --testframes" ) add_test(NAME test_freedv_api_2020B_mpp COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; dd bs=32000 count=60 if=/dev/zero | ./freedv_tx 2020B - - --testframes --clip 1 | ./ch - - --No -25 --mpp --fading_dir ../unittest | ./freedv_rx 2020B - /dev/null --testframes" ) endif() add_test(NAME test_freedv_api_2400A COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_tx 2400A ../../raw/ve9qrp_10s.raw - | ./freedv_rx 2400A - /dev/null") set_tests_properties(test_freedv_api_2400A PROPERTIES PASS_REGULAR_EXPRESSION "frames decoded: 250") add_test(NAME test_freedv_api_2400B COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_tx 2400B ../../raw/ve9qrp_10s.raw - | ./freedv_rx 2400B - /dev/null") set_tests_properties(test_freedv_api_2400B PROPERTIES PASS_REGULAR_EXPRESSION "frames decoded: 250") add_test(NAME test_freedv_api_800XA COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_tx 800XA ../../raw/ve9qrp_10s.raw - | ./freedv_rx 800XA - /dev/null") set_tests_properties(test_freedv_api_800XA PROPERTIES PASS_REGULAR_EXPRESSION "frames decoded: 125") add_test(NAME test_freedv_api_rawdata_800XA COMMAND sh -c "./tfreedv_800XA_rawdata" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unittest ) add_test(NAME test_freedv_api_rawdata_2400A COMMAND sh -c "./tfreedv_2400A_rawdata" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unittest ) add_test(NAME test_freedv_api_rawdata_2400B COMMAND sh -c "./tfreedv_2400B_rawdata" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unittest ) add_test(NAME test_peak_levels COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/unittest; PATH=$PATH:${CMAKE_CURRENT_BINARY_DIR}/src ./check_peak.sh") set_tests_properties(test_peak_levels PROPERTIES FAIL_REGULAR_EXPRESSION "FAIL") if(LPCNET) add_test(NAME test_peak_levels_lpcnet COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/unittest; PATH=$PATH:${CMAKE_CURRENT_BINARY_DIR}/src ./check_peak.sh LPCNet") set_tests_properties(test_peak_levels_lpcnet PROPERTIES FAIL_REGULAR_EXPRESSION "FAIL") endif() # ------------------------------------------------------------------------- # Reliable Text # ------------------------------------------------------------------------- add_test(NAME test_freedv_reliable_text_truncate_string COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_tx 1600 ../../raw/ve9qrp.raw - --reliabletext AB1CDEFGH > 1600_reliable.raw 2>/dev/null; ./freedv_rx 1600 1600_reliable.raw /dev/null --txtrx 1600_reliable.txt --reliabletext 2>/dev/null; grep 'AB1CDEFG' 1600_reliable.txt | wc -l") set_tests_properties(test_freedv_reliable_text_truncate_string PROPERTIES PASS_REGULAR_EXPRESSION "20") add_test(NAME test_freedv_reliable_text_ideal_1600 COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_tx 1600 ../../raw/ve9qrp.raw - --reliabletext AB1CDEF > 1600_reliable.raw 2>/dev/null; ./freedv_rx 1600 1600_reliable.raw /dev/null --txtrx 1600_reliable.txt --reliabletext 2>/dev/null; cat 1600_reliable.txt | wc -l") set_tests_properties(test_freedv_reliable_text_ideal_1600 PROPERTIES PASS_REGULAR_EXPRESSION "20") add_test(NAME test_freedv_reliable_text_ideal_700D COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_tx 700D ../../raw/ve9qrp.raw - --reliabletext AB1CDEF --txbpf 1 --clip 1 > 700D_reliable.raw 2>/dev/null; ./freedv_rx 700D 700D_reliable.raw /dev/null --txtrx 700D_reliable.txt --reliabletext 2>/dev/null; cat 700D_reliable.txt | wc -l") set_tests_properties(test_freedv_reliable_text_ideal_700D PROPERTIES PASS_REGULAR_EXPRESSION "21") add_test(NAME test_freedv_reliable_text_ideal_700E COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_tx 700E ../../raw/ve9qrp.raw - --reliabletext AB1CDEF --txbpf 1 --clip 1 > 700E_reliable.raw 2>/dev/null; ./freedv_rx 700E 700E_reliable.raw /dev/null --txtrx 700E_reliable.txt --reliabletext 2>/dev/null; cat 700E_reliable.txt | wc -l") set_tests_properties(test_freedv_reliable_text_ideal_700E PROPERTIES PASS_REGULAR_EXPRESSION "21") add_test(NAME test_freedv_reliable_text_awgn_1600 COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_tx 1600 ../../raw/ve9qrp.raw - --reliabletext AB1CDEF | ./ch - - --No -25 -f -5 > 1600_reliable.raw 2>/dev/null; ./freedv_rx 1600 1600_reliable.raw /dev/null --txtrx 1600_reliable.txt --reliabletext 2>/dev/null; if [ `cat 1600_reliable.txt | wc -l` -ge 10 ]; then echo 1; fi") set_tests_properties(test_freedv_reliable_text_awgn_1600 PROPERTIES PASS_REGULAR_EXPRESSION "1") add_test(NAME test_freedv_reliable_text_awgn_700D COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_tx 700D ../../raw/ve9qrp.raw - --reliabletext AB1CDEF --txbpf 1 --clip 1 | ./ch - - --No -12 -f -5 > 700D_reliable.raw 2>/dev/null; ./freedv_rx 700D 700D_reliable.raw /dev/null --txtrx 700D_reliable.txt --reliabletext 2>/dev/null; if [ `cat 700D_reliable.txt | wc -l` -ge 10 ]; then echo 1; fi") set_tests_properties(test_freedv_reliable_text_awgn_700D PROPERTIES PASS_REGULAR_EXPRESSION "1") add_test(NAME test_freedv_reliable_text_awgn_700E COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_tx 700E ../../raw/ve9qrp.raw - --reliabletext AB1CDEF --txbpf 1 --clip 1 | ./ch - - --No -15 -f -5 > 700E_reliable.raw 2>/dev/null; ./freedv_rx 700E 700E_reliable.raw /dev/null --txtrx 700E_reliable.txt --reliabletext 2>/dev/null; if [ `cat 700E_reliable.txt | wc -l` -ge 10 ]; then echo 1; fi") set_tests_properties(test_freedv_reliable_text_awgn_700E PROPERTIES PASS_REGULAR_EXPRESSION "1") add_test(NAME test_freedv_reliable_text_fade_1600 COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/unittest; ./reliable_text_fade.sh 1600 -28 3 0 '${CMAKE_CURRENT_BINARY_DIR}/src'") add_test(NAME test_freedv_reliable_text_fade_700D COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/unittest; ./reliable_text_fade.sh 700D -19 8 1 '${CMAKE_CURRENT_BINARY_DIR}/src'") add_test(NAME test_freedv_reliable_text_fade_700E COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/unittest; ./reliable_text_fade.sh 700E -22 8 1 '${CMAKE_CURRENT_BINARY_DIR}/src'") if(LPCNET) add_test(NAME test_freedv_reliable_text_ideal_2020 COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_tx 2020 ../../raw/ve9qrp.raw - --reliabletext AB1CDEF > 2020_reliable.raw 2>/dev/null; ./freedv_rx 2020 2020_reliable.raw /dev/null --txtrx 2020_reliable.txt --reliabletext 2>/dev/null; cat 2020_reliable.txt | wc -l") set_tests_properties(test_freedv_reliable_text_ideal_2020 PROPERTIES PASS_REGULAR_EXPRESSION "9") add_test(NAME test_freedv_reliable_text_awgn_2020 COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_tx 2020 ../../raw/ve9qrp.raw - --reliabletext AB1CDEF | ./ch - - --No -22 -f -5 > 2020_reliable.raw 2>/dev/null; ./freedv_rx 2020 2020_reliable.raw /dev/null --txtrx 2020_reliable.txt --reliabletext 2>/dev/null; if [ `cat 2020_reliable.txt | wc -l` -ge 9 ]; then echo 1; fi") set_tests_properties(test_freedv_reliable_text_awgn_1600 PROPERTIES PASS_REGULAR_EXPRESSION "1") add_test(NAME test_freedv_reliable_text_fade_2020 COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/unittest; ./reliable_text_fade.sh 2020 -26 4 0 '${CMAKE_CURRENT_BINARY_DIR}/src'") endif(LPCNET) # ------------------------------------------------------------------------- # FreeDV API memory leaks # ------------------------------------------------------------------------- if (NOT APPLE) add_test(NAME test_memory_leak_FreeDV_1600_tx COMMAND sh -c " valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes ./freedv_tx 1600 ${CMAKE_CURRENT_SOURCE_DIR}/raw/hts1a.raw /dev/null" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/src ) set_tests_properties(test_memory_leak_FreeDV_1600_tx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors") add_test(NAME test_memory_leak_FreeDV_1600_rx COMMAND sh -c "./freedv_tx 1600 ${CMAKE_CURRENT_SOURCE_DIR}/raw/hts1a.raw t.raw; \ valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes ./freedv_rx 1600 t.raw /dev/null" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/src ) set_tests_properties(test_memory_leak_FreeDV_1600_rx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors") add_test(NAME test_memory_leak_FreeDV_700D_tx COMMAND sh -c " valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes ./freedv_tx 700D ${CMAKE_CURRENT_SOURCE_DIR}/raw/hts1a.raw /dev/null" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/src ) set_tests_properties(test_memory_leak_FreeDV_700D_tx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors") add_test(NAME test_memory_leak_FreeDV_700D_rx COMMAND sh -c "./freedv_tx 700D ${CMAKE_CURRENT_SOURCE_DIR}/raw/hts1a.raw t.raw; \ valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes ./freedv_rx 700D t.raw /dev/null" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/src ) set_tests_properties(test_memory_leak_FreeDV_700D_rx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors") add_test(NAME test_memory_leak_FreeDV_700C_tx COMMAND sh -c " valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes ./freedv_tx 700C ${CMAKE_CURRENT_SOURCE_DIR}/raw/hts1a.raw /dev/null" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/src ) set_tests_properties(test_memory_leak_FreeDV_700C_tx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors") add_test(NAME test_memory_leak_FreeDV_700C_rx COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_tx 700C ${CMAKE_CURRENT_SOURCE_DIR}/raw/hts1a.raw t.raw; \ valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes ./freedv_rx 700C t.raw /dev/null" ) set_tests_properties(test_memory_leak_FreeDV_700C_rx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors") add_test(NAME test_memory_leak_FreeDV_FSK_LDPC_tx COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes \ ./freedv_data_raw_tx --testframes 10 FSK_LDPC /dev/zero /dev/null") set_tests_properties(test_memory_leak_FreeDV_FSK_LDPC_tx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors") add_test(NAME test_memory_leak_FreeDV_DATAC0_tx COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes \ ./freedv_data_raw_tx --testframes 10 DATAC0 /dev/zero /dev/null") set_tests_properties(test_memory_leak_FreeDV_DATAC0_tx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors") add_test(NAME test_memory_leak_FreeDV_DATAC1_tx COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes \ ./freedv_data_raw_tx --testframes 10 DATAC1 /dev/zero /dev/null") set_tests_properties(test_memory_leak_FreeDV_DATAC1_tx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors") add_test(NAME test_memory_leak_FreeDV_DATAC3_tx COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes \ ./freedv_data_raw_tx --testframes 10 DATAC3 /dev/zero /dev/null") set_tests_properties(test_memory_leak_FreeDV_DATAC3_tx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors") add_test(NAME test_memory_leak_FreeDV_DATAC4_tx COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes \ ./freedv_data_raw_tx --testframes 10 DATAC4 /dev/zero /dev/null") set_tests_properties(test_memory_leak_FreeDV_DATAC4_tx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors") add_test(NAME test_memory_leak_FreeDV_DATAC13_tx COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes \ ./freedv_data_raw_tx --testframes 10 DATAC13 /dev/zero /dev/null") set_tests_properties(test_memory_leak_FreeDV_DATAC13_tx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors") add_test(NAME test_memory_leak_FreeDV_700E_tx COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes \ ./freedv_tx --testframes 10 700E /dev/zero /dev/null") set_tests_properties(test_memory_leak_FreeDV_700E_tx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors") if(LPCNET) add_test(NAME test_memory_leak_FreeDV_2020_tx COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes \ ./freedv_tx 2020 ../../wav/wia_16kHz.wav /dev/null" ) set_tests_properties(test_memory_leak_FreeDV_2020_tx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors") add_test(NAME test_memory_leak_FreeDV_2020_rx COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_tx 2020 ../../wav/wia_16kHz.wav t.raw; \ valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes \ ./freedv_rx 2020 t.raw /dev/null" ) set_tests_properties(test_memory_leak_FreeDV_2020_rx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors") add_test(NAME test_memory_leak_FreeDV_2020B_tx COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes \ ./freedv_tx 2020B ../../wav/wia_16kHz.wav /dev/null" ) set_tests_properties(test_memory_leak_FreeDV_2020B_tx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors") add_test(NAME test_memory_leak_FreeDV_2020B_rx COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_tx 2020B ../../wav/wia_16kHz.wav t.raw; \ valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes \ ./freedv_rx 2020B t.raw /dev/null" ) set_tests_properties(test_memory_leak_FreeDV_2020B_rx PROPERTIES PASS_REGULAR_EXPRESSION "ERROR SUMMARY: 0 errors") endif(LPCNET) endif(NOT APPLE) # ------------------------------------------------------------------------- # Codec 2 modes # ------------------------------------------------------------------------- add_test(NAME test_codec2_mode_dot_c2 COMMAND sh -c "./c2enc 700C ${CMAKE_CURRENT_SOURCE_DIR}/raw/hts1a.raw hts1a.c2 && ./c2dec 1600 hts1a.c2 /dev/null" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/src ) set_tests_properties(test_codec2_mode_dot_c2 PROPERTIES PASS_REGULAR_EXPRESSION "mode 8") add_test(NAME test_codec2_mode_3200 COMMAND sh -c "./c2enc 3200 ${CMAKE_CURRENT_SOURCE_DIR}/raw/hts1a.raw - | ./c2dec 3200 - - | sox -t .s16 -r 8000 - hts1a_3200.wav" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/src ) add_test(NAME test_codec2_mode_2400 COMMAND sh -c "./c2enc 2400 ${CMAKE_CURRENT_SOURCE_DIR}/raw/hts1a.raw - | ./c2dec 2400 - - | sox -t .s16 -r 8000 - hts1a_2400.wav" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/src ) add_test(NAME test_codec2_mode_1400 COMMAND sh -c "./c2enc 1400 ${CMAKE_CURRENT_SOURCE_DIR}/raw/hts1a.raw - | ./c2dec 1400 - - | sox -t .s16 -r 8000 - hts1a_1400.wav" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/src ) add_test(NAME test_codec2_mode_1300 COMMAND sh -c "./c2enc 1300 ${CMAKE_CURRENT_SOURCE_DIR}/raw/hts1a.raw - | ./c2dec 1300 - - | sox -t .s16 -r 8000 - hts1a_1300.wav" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/src ) add_test(NAME test_codec2_mode_1200 COMMAND sh -c "./c2enc 1200 ${CMAKE_CURRENT_SOURCE_DIR}/raw/hts1a.raw - | ./c2dec 1200 - - | sox -t .s16 -r 8000 - hts1a_1200.wav" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/src ) add_test(NAME test_codec2_mode_700C COMMAND sh -c "./c2enc 700C ${CMAKE_CURRENT_SOURCE_DIR}/raw/hts1a.raw - | ./c2dec 700C - - | sox -t .s16 -r 8000 - hts1a_700C.wav" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/src ) add_test(NAME test_vq_mbest COMMAND sh -c "./tvq_mbest; \ cat target.f32 | \ ./vq_mbest -k 4 -q vq1.f32,vq2.f32 --st 1 --en 2 --mbest 2 -v > /dev/null;" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unittest ) set_tests_properties(test_vq_mbest PROPERTIES PASS_REGULAR_EXPRESSION "MSE: 0.00") add_test(NAME test_700c_eq COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/unittest; PATH=$PATH:${CMAKE_CURRENT_BINARY_DIR}/src ./test_700c_eq.sh") # ------------------------------------------------------------------------- # FSK Modem # ------------------------------------------------------------------------- # Octave FSK Modem, to make sure we don't break reference simulation add_test(NAME test_fsk_lib COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; DISPLAY=\"\" octave-cli -qf fsk_lib_demo.m") set_tests_properties(test_fsk_lib PROPERTIES PASS_REGULAR_EXPRESSION "PASS") add_test(NAME test_fsk_modem_octave_port COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; PATH_TO_TFSK=${CMAKE_CURRENT_BINARY_DIR}/unittest/tfsk octave-cli -qf tfsk.m") set_tests_properties(test_fsk_modem_octave_port PROPERTIES PASS_REGULAR_EXPRESSION "PASS") add_test(NAME test_fsk_modem_mod_demod COMMAND sh -c "$ - 10000 | $ 2 8000 100 1200 100 - - | $ -l 2 8000 100 - - | $ -p 99 -q -" ) # 2FSK modem at Eb/No = 9dB, SNR = Eb/No+10log10(Rb/B) = 9 + 10*log10(100/3000) = -5.7dB # Ideal BER = 0.0094, set thresh 50% higher add_test(NAME test_fsk_2fsk_ber COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./fsk_get_test_bits - 10000 | ./fsk_mod 2 8000 100 1000 100 - - | ./ch - - --No -26 | ./fsk_demod 2 8000 100 - - | ./fsk_put_test_bits -b 0.015 -q - ") # 4FSK modem at Eb/No = 6dB, SNR = Eb/No+10log10(Rb/B) = 6 + 10*log10(2*100/3000) = -5.7dB # Ideal BER = 0.016, set thresh 50% higher add_test(NAME test_fsk_4fsk_ber COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./fsk_get_test_bits - 10000 | ./fsk_mod 4 8000 100 1000 100 - - | ./ch - - --No -26 | ./fsk_demod 4 8000 100 - - | ./fsk_put_test_bits -b 0.025 - ") # shift FSK signal to -ve frequencies add_test(NAME test_fsk_4fsk_ber_negative_freq COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./fsk_get_test_bits - 10000 | ./fsk_mod 4 8000 100 1000 200 - - | ./ch - - --No -26 --ssbfilt 0 --complexout -f -3000 | ./fsk_demod -c -p 8 4 8000 100 - - | ./fsk_put_test_bits -b 0.025 -q - ") # Low SNR 4FSK uncoded PER/BER test: # 4FSK modem at Eb/No = 2dB, SNR = Eb/No+10log10(Rb/B) = 6 + 10*log10(2*100/3000) = -15.7dB # Theoretical BER is 0.14. # Pass condition is 10% PER add_test(NAME test_fsk_4fsk_lockdown COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; bits=512; tx_packets=20; rx_packets=18; tx_tone_sep=50; Rs=25; ./fsk_get_test_bits - $(($bits*$tx_packets)) $bits | ./fsk_mod 4 8000 $Rs 1000 $tx_tone_sep - - | ./ch - - --No -16 --ssbfilt 0 -f -3000 --complexout | ./fsk_demod -c -p 8 --mask $tx_tone_sep -t1 --nsym 100 4 8000 $Rs - - 2>stats.txt | ./fsk_put_test_bits -t 0.25 -b 0.20 -p $rx_packets -f $bits -q -") # Octave 4FSK LLR reference simulation - make sure this keeps working add_test(NAME test_fsk_lib_4fsk_ldpc COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; DISPLAY=\"\" octave-cli -qf fsk_lib_ldpc_demo.m") set_tests_properties(test_fsk_lib_4fsk_ldpc PROPERTIES PASS_REGULAR_EXPRESSION "PASS") # Command line Unique Word (UW) framer in hard decision mode add_test(NAME test_fsk_framer COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./fsk_get_test_bits - 300 | ./framer - - 100 51 | ./deframer - - 100 51 --hard | ./fsk_put_test_bits -") set_tests_properties(test_fsk_framer PROPERTIES PASS_REGULAR_EXPRESSION "PASS") # Command line Unique Word (UW) framer with LLRs and LDPC (no noise) add_test(NAME test_fsk_framer_ldpc COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ldpc_enc /dev/zero - --code HRA_112_112 --testframes 10 | ./framer - - 224 51 | ./tollr | ./deframer - - 224 51 | ./ldpc_dec - /dev/null --code HRA_112_112 --testframes") # mFSK soft decision rx_filter to LLR mapping add_test(NAME test_fsk_llr COMMAND sh -c "${CMAKE_CURRENT_BINARY_DIR}/unittest/tfsk_llr") # 4FSK LDPC modem with framer at Rs=100 (uncoded Rb=200), rate 0.8 code # SNR = Eb/No + 10*log10(Rb/B) = 5 + 10*log10(200/3000) = -6.7dB # Coded Ebc/No = Eb/No - 10*log1010(0.8) = 5 - 10*log10(0.8) = 6.0dB # (calculation ignores small UW overhead). See also test_freedv_fsk_ldpc below # which is the same thing bundled up into a FreeDV "mode" add_test(NAME test_fsk_4fsk_ldpc COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./ldpc_enc /dev/zero - --code HRAb_396_504 --testframes 200 | ./framer - - 504 5186 | ./fsk_mod 4 8000 100 1000 100 - - | ./ch - - --No -25 | ./fsk_demod -s 4 8000 100 - - | ./deframer - - 504 5186 | ./ldpc_dec - /dev/null --code HRAb_396_504 --testframes") # 800XA framer test add_test(NAME test_fsk_vhf_framer COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./c2enc 700C ../../raw/ve9qrp_10s.raw - | ./vhf_frame_c2 B - - | ./fsk_mod -p 10 4 8000 400 400 400 - - | ./fsk_demod -p 10 4 8000 400 - - | ./vhf_deframe_c2 B - /dev/null") set_tests_properties(test_fsk_vhf_framer PROPERTIES PASS_REGULAR_EXPRESSION "total_uw_err: 0") # VHF Ethernet-style packet system add_test(NAME test_freedv_data_channel COMMAND sh -c "./tfreedv_data_channel" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unittest ) # --------------------------------------------------------- # FreeDV API raw data # --------------------------------------------------------- # Burst mode with test frames: 3 bursts, each burst is two frames long add_test(NAME test_freedv_data_raw_ofdm_datac0_burst COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_data_raw_tx --framesperburst 2 --bursts 3 --testframes 6 DATAC0 /dev/zero - | ./freedv_data_raw_rx --framesperburst 2 --testframes DATAC0 - /dev/null --vv") set_tests_properties(test_freedv_data_raw_ofdm_datac0_burst PROPERTIES PASS_REGULAR_EXPRESSION "Coded FER: 0.0000 Tfrms: 6 Tfers: 0") # Burst mode with data file I/O: add_test(NAME test_freedv_data_raw_ofdm_datac0_burst_file COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; head -c $((14*10)) binaryIn.bin; ./freedv_data_raw_tx DATAC0 binaryIn.bin - --bursts 10 | ./freedv_data_raw_rx DATAC0 - binaryOut.bin -v; diff binaryIn.bin binaryOut.bin") add_test(NAME test_freedv_data_raw_ofdm_datac1_burst_file COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; head -c $((510*10)) binaryIn.bin; ./freedv_data_raw_tx DATAC1 binaryIn.bin - --bursts 10 | ./freedv_data_raw_rx DATAC1 - binaryOut.bin -v; diff binaryIn.bin binaryOut.bin") add_test(NAME test_freedv_data_raw_ofdm_datac3_burst_file COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; head -c $((126*10)) binaryIn.bin; ./freedv_data_raw_tx DATAC3 binaryIn.bin - --bursts 10 | ./freedv_data_raw_rx DATAC3 - binaryOut.bin -v; diff binaryIn.bin binaryOut.bin") add_test(NAME test_freedv_data_raw_ofdm_datac4_burst_file COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; head -c $((54*10)) binaryIn.bin; ./freedv_data_raw_tx DATAC4 binaryIn.bin - --bursts 10 | ./freedv_data_raw_rx DATAC4 - binaryOut.bin -v; diff binaryIn.bin binaryOut.bin") add_test(NAME test_freedv_data_raw_ofdm_datac13_burst_file COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; head -c $((14*10)) binaryIn.bin; ./freedv_data_raw_tx DATAC13 binaryIn.bin - --bursts 10 | ./freedv_data_raw_rx DATAC13 - binaryOut.bin -v; diff binaryIn.bin binaryOut.bin") # FSK LDPC default 100 bit/s 2FSK, enough noise for several % raw BER to give # FEC/acquisition a work out, bursts of 1 frame as that stresses acquisition add_test(NAME test_freedv_data_raw_fsk_ldpc_100 COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_data_raw_tx --testframes 10 --bursts 10 FSK_LDPC /dev/zero - | ./ch - - --No -5 --ssbfilt 0 | ./freedv_data_raw_rx --testframes -v FSK_LDPC - /dev/null") set_tests_properties(test_freedv_data_raw_fsk_ldpc_100 PROPERTIES PASS_REGULAR_EXPRESSION "Frms.: ( 9|10)") # FSK LDPC 1000 bit/s 2FSK, Fs=40kHz, as different configs can upset acquisition add_test(NAME test_freedv_data_raw_fsk_ldpc_1k COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_data_raw_tx --Fs 40000 --Rs 1000 --tone1 1000 --shift 1000 --testframes 10 --bursts 10 FSK_LDPC /dev/zero - | ./ch - - --No -10 --ssbfilt 0 | ./freedv_data_raw_rx --testframes -v --Fs 40000 --Rs 1000 FSK_LDPC - /dev/null") set_tests_properties(test_freedv_data_raw_fsk_ldpc_1k PROPERTIES PASS_REGULAR_EXPRESSION "Frms.: 10") # FSK LDPC 10000 bit/s 2FSK, Fs=100kHz, each of the 10 bursts has 100 frames add_test(NAME test_freedv_data_raw_fsk_ldpc_10k COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_data_raw_tx --Fs 100000 --Rs 10000 --tone1 10000 --shift 10000 --framesperburst 100 --bursts 10 --testframes 1000 FSK_LDPC /dev/zero - | ./ch - - --No -16 --ssbfilt 0 | ./freedv_data_raw_rx --testframes -v --Fs 100000 --Rs 10000 FSK_LDPC - /dev/null") set_tests_properties(test_freedv_data_raw_fsk_ldpc_10k PROPERTIES PASS_REGULAR_EXPRESSION "Frms.: 1000") # FSK LDPC Rs=1000 bit/s (Rb=2000) 4FSK, Fs=40kHz, this needs --mask and 2Rs shift to work reliably add_test(NAME test_freedv_data_raw_fsk_ldpc_2k COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; ./freedv_data_raw_tx -a 8192 -m 4 --Fs 40000 --Rs 1000 --tone1 10000 --shift 2000 --testframes 10 --bursts 10 FSK_LDPC /dev/zero - | ./ch - - --No -22 --ssbfilt 0 | ./freedv_data_raw_rx -m 4 --testframes -v --Fs 40000 --Rs 1000 FSK_LDPC --mask 2000 - /dev/null") set_tests_properties(test_freedv_data_raw_fsk_ldpc_2k PROPERTIES PASS_REGULAR_EXPRESSION "Frms.: 10") # --------------------------------------------------------- # tests for demos # --------------------------------------------------------- add_test(NAME test_demo_c2demo COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}; ./demo/c2demo ../raw/hts1a.raw hts1a_out.raw; ls -l hts1a_out.raw") set_tests_properties(test_demo_c2demo PROPERTIES PASS_REGULAR_EXPRESSION "48000") add_test(NAME test_demo_700d COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}; cat ../raw/ve9qrp_10s.raw | ./demo/freedv_700d_tx | ./demo/freedv_700d_rx > ve9qrp_10s_700d.raw; ls -l ve9qrp_10s_700d.raw") set_tests_properties(test_demo_700d PROPERTIES PASS_REGULAR_EXPRESSION "158720") add_test(NAME test_demo_700d_python COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}; cat ../raw/ve9qrp_10s.raw | ./demo/freedv_700d_tx | ../demo/freedv_700d_rx.py > ve9qrp_10s_700d.raw; ls -l ve9qrp_10s_700d.raw") set_tests_properties(test_demo_700d_python PROPERTIES PASS_REGULAR_EXPRESSION "161280") add_test(NAME test_demo_datac1 COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}; head -c $((510*10)) binaryIn.bin; cat binaryIn.bin | ./demo/freedv_datac1_tx | ./demo/freedv_datac1_rx > binaryOut.bin; diff binaryIn.bin binaryOut.bin") # test Rx of two modes in parallel, with AWGN noise and sample clock offsets add_test(NAME test_demo_datac0c1 COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}; ./demo/freedv_datac0c1_tx | ./src/ch - - --No -24 -f 20 | sox -t .s16 -c 1 -r 8000 - -t .s16 -c 1 -r 8008 - | ./demo/freedv_datac0c1_rx") set_tests_properties(test_demo_datac0c1 PROPERTIES PASS_REGULAR_EXPRESSION "DATAC0 Frames: 10 DATAC1 Frames: 10") # Set common properties for tests that need Octave/CML set_tests_properties( test_CML_ldpcut test_CML_ldpcut_one_stuffing test_OFDM_modem_octave_port test_OFDM_modem_octave_port_Nc_31 test_OFDM_modem_octave_datac0_mpp_coded test_OFDM_modem_datac0_octave_burst test_OFDM_modem_datac1_octave test_OFDM_modem_datac3_octave test_OFDM_modem_datac4_octave test_OFDM_modem_datac13_octave test_fsk_lib_4fsk_ldpc test_OFDM_modem_datac0_compression PROPERTIES ENVIRONMENT "CML_PATH=${CMAKE_CURRENT_BINARY_DIR}/cml" ) endif(UNITTEST) codec2-1.2.0/COPYING000066400000000000000000000635361445607075400137350ustar00rootroot00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, see . Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! codec2-1.2.0/README.md000066400000000000000000000220641445607075400141500ustar00rootroot00000000000000# Codec 2 README Codec 2 is an open source (LGPL 2.1) low bit rate speech codec: http://rowetel.com/codec2.html Also included: + The FreeDV API for digital voice over radio. FreeDV is an open source digital voice protocol that integrates modems, codecs, and FEC [README_freedv](README_freedv.md) + HF OFDM and FSK modems, FEC used in the FreeDV API + APIs for packet data over radio [README_data](README_data.md) + An STM32 embedded version of FreeDV 1600/700D/700E for the [SM1000](stm32/README.md) ## Older code In July 2023 this repo was refactored, older code can be found in https://github.com/drowe67/codec2-dev ## Quickstart 1. Install packages (Debian/Ubuntu): ``` sudo apt install git build-essential cmake ``` Fedora/RH distros: ``` sudo dnf groupinstall "Development Tools" "C Development Tools and Libraries" sudo dnf install cmake ``` 1. Build Codec 2: ``` git clone https://github.com/drowe67/codec2.git cd codec2 mkdir build_linux cd build_linux cmake .. make ``` 1. Listen to Codec 2: ``` cd codec2/build_linux ./demo/c2demo ../raw/hts1a.raw hts1a_c2.raw aplay -f S16_LE ../raw/hts1a.raw aplay -f S16_LE hts1a_c2.raw ``` 1. Compress, decompress and then play a file using Codec 2 at 2400 bit/s: ``` ./src/c2enc 2400 ../raw/hts1a.raw hts1a_c2.bit ./src/c2dec 2400 hts1a_c2.bit hts1a_c2_2400.raw ``` which can be played with: ``` aplay -f S16_LE hts1a_c2_2400.raw ``` Or using Codec 2 using 700C (700 bits/s): ``` ./src/c2enc 700C ../raw/hts1a.raw hts1a_c2.bit ./src/c2dec 700C hts1a_c2.bit hts1a_c2_700.raw aplay -f S16_LE hts1a_c2_700.raw ``` 1. If you prefer a one-liner without saving to files: ``` ./src/c2enc 1300 ../raw/hts1a.raw - | ./src/c2dec 1300 - - | aplay -f S16_LE ``` 1. Or you can use your microphone and headphones to encode and listen to the result on the fly: ``` br=1300; arecord -f S16_LE -c 1 -r 8000 | ./src/c2enc $br - - | ./src/c2dec $br - - | aplay -f S16_LE - ``` ## FreeDV 2020 support (building with LPCNet) 1. Build LPCNet: ``` cd ~ git clone https://github.com/drowe67/LPCNet cd LPCNet && mkdir build_linux && cd build_linux cmake .. make ``` 1. Build Codec 2 with LPCNet support: ``` cd ~/codec2/build_linux && rm -Rf * cmake -DLPCNET_BUILD_DIR=~/LPCNet/build_linux .. make ``` ## Programs + See `demo` directory for simple examples of using Codec and the FreeDV API. + `c2demo` encodes a file of speech samples, then decodes them and saves the result. + `c2enc` encodes a file of speech samples to a compressed file of encoded bits. `c2dec` decodes a compressed file of bits to a file of speech samples. + `c2sim` is a simulation/development version of Codec 2. It allows selective use of the various Codec 2 algorithms. For example switching phase modelling or quantisation on and off. + `freedv_tx` & `freedv_rx` are command line implementations of the FreeDV protocol, which combines Codec 2, modems, and Forward Error Correction (FEC). + `cohpsk_*` are coherent PSK (COHPSK) HF modem command line programs. + `fdmdv_*` are differential PSK HF modem command line programs (README_fdmdv). + `fsk_*` are command line programs for a non-coherent FSK modem (README_fsk). + `ldpc_*` are LDPC encoder/decoder command line programs, based on the CML library. + `ofdm_*` are OFDM PSK HF modem command line programs (README_ofdm). ## Building and Running Unit Tests CTest is used as a test framework, with support from [GNU Octave](https://www.gnu.org/software/octave/) scripts. 1. Install GNU Octave and libraries on Ubuntu with: ``` sudo apt install octave octave-common octave-signal liboctave-dev gnuplot python3-numpy sox valgrind clang-format ``` 1. To build and run the tests: ``` cd ~/codec2 rm -Rf build_linux && mkdir build_linux cd build_linux cmake -DUNITTEST=1 .. make ``` 1. To just run tests without rebuilding: ``` ctest ``` 1. To get a verbose run (e.g. for test debugging): ``` ctest -V ``` 1. To just run a single test: ``` ctest -R test_OFDM_modem_octave_port ``` 1. To list the available tests: ``` ctest -N ``` 1. Many Octave scripts rely on the CML LDPC library. To run these from the Octave CLI, you need to set the `CML_PATH` environment variable. A convenient way to do this is using a `.octaverc` file in your `codec/octave` directory. For example on a Linux machine, create a `.octaverc` file: ``` setenv("CML_PATH","../build_linux/cml") ``` ## Directories ``` cmake - cmake support files demo - Simple Codec 2 and FreeDv API demo applications octave - Octave scripts used to support ctests src - C source code for Codec 2, FDMDV modem, COHPSK modem, FreeDV API raw - speech files in raw format (16 bits signed linear 8 kHz) stm32 - STM32F4 microcontroller and SM1000 FreeDV Adaptor support unittest - Code to perform and support testing. Part of Debug build. wav - speech files in wave file format ``` ## GDB and Dump Files 1. To compile with debug symbols for using gdb: ``` cd ~/codec2 rm -Rf build_linux && mkdir build_linux cd build_linux CFLAGS=-g cmake .. make ``` ## Building for Windows on a Linux machine We recommend using Linux to cross compile for Windows. On Ubuntu Linux: ``` sudo apt-get install mingw-w64 mkdir build_windows && cd build_windows cmake .. -DCMAKE_TOOLCHAIN_FILE=/home/david/freedv-dev/cmake/Toolchain-Ubuntu-mingw32.cmake -DUNITTEST=FALSE -DGENERATE_CODEBOOK=/home/david/codec2/build_linux/src/generate_codebook make ``` This will create a working `libcodec2.dll` file for use with other applications (e.g. FreeDV GUI which is in wide spread use on Windows). Please note the utility/development command line applications (e.g. `freedv_rx.exe`) may not work exactly the same on the Windows CLI compared to running on a Unix machine/shell. For example pipes may not function as expected, and ctests are not supported. Our primary development and test environment is Unix, and we lack the resources to support and maintain these applications for other operating systems. ## Including Codec 2 in an Android project In an Android Studio 'NDK' project (a project that uses 'native' code) Codec 2 can be added to the project in the following way. 1. Add the Codec 2 source tree to your app (e.g. in app/src/main/codec2) (e.g. as a git sub-module). 1. Add Codec 2 to the CMakeList.txt (app/src/main/cpp/CMakeLists.txt): ``` # Sets lib_src_DIR to the path of the target CMake project. set( codec2_src_DIR ../codec2/ ) # Sets lib_build_DIR to the path of the desired output directory. set( codec2_build_DIR ../codec2/ ) file(MAKE_DIRECTORY ${codec2_build_DIR}) add_subdirectory( ${codec2_src_DIR} ${codec2_build_DIR} ) include_directories( ${codec2_src_DIR}/src ${CMAKE_CURRENT_BINARY_DIR}/../codec2 ) ``` 1. Add Codec 2 to the target_link_libraries in the same file. ## Building Codec 2 for Microcontrollers Codec 2 requires a hardware Floating Point Unit (FPU) to run in real time. Two build options have been added to support building on microcontrollers: 1. Setting the `cmake` variable MICROCONTROLLER_BUILD disables position independent code (-fPIC is not used). This was required for the IMRT1052 used in Teensy 4/4.1). 1. On ARM machines, setting the C Flag \_\_EMBEDDED\_\_ and linking with the ARM CMSIS library will improve performance on ARM-based microcontrollers. \_\_REAL\_\_ and FDV\_ARM\_MATH are additional ARM-specific options that can be set to improve performance if required, especially with OFDM modes. A CMakeLists.txt example for a microcontroller is below: ``` set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) set(MICROCONTROLLER_BUILD 1) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mlittle-endian -ffunction-sections -fdata-sections -g -O3") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -ffunction-sections -fdata-sections") add_definitions(-DCORTEX_M7 -D__EMBEDDED__) add_definitions(-DFREEDV_MODE_EN_DEFAULT=0 -DFREEDV_MODE_1600_EN=1 -DFREEDV_MODE_700D_EN=1 -DFREEDV_MODE_700E_EN=1 -DCODEC2_MODE_EN_DEFAULT=0 -DCODEC2_MODE_1300_EN=1 -DCODEC2_MODE_700C_EN=1) FetchContent_Declare(codec2 GIT_REPOSITORY https://github.com/drowe67/codec2.git GIT_TAG origin/master GIT_SHALLOW ON GIT_PROGRESS ON ) FetchContent_GetProperties(codec2) if(NOT ${codec2_POPULATED}) FetchContent_Populate(codec2) endif() set(CMAKE_REQUIRED_FLAGS "") set(LPCNET OFF CACHE BOOL "") add_subdirectory(${codec2_SOURCE_DIR} ${codec2_BINARY_DIR} EXCLUDE_FROM_ALL) ``` ## Building Debian packages To build Debian packages, simply run the "cpack" command after running "make". This will generate the following packages: + codec2: Contains the .so and .a files for linking/executing applications dependent on Codec2. * codec2-dev: Contains the header files for development using Codec2. Once generated, they can be installed with "dpkg -i" (once LPCNet is installed). If LPCNet is not desired, CMakeLists.txt can be modified to remove that dependency. codec2-1.2.0/README_cohpsk.md000066400000000000000000000017131445607075400155150ustar00rootroot00000000000000# README_cohpsk.md ## Introduction ## Quickstart 1. BER test in AWGN channel with just less that 2% average bit error rate: ``` $ ./cohpsk_get_test_bits - 5600 | ./cohpsk_mod - - | ./ch - - --No -30 --Fs 7500 | ./cohpsk_demod - - | ./cohpsk_put_test_bits - SNR3k(dB): 3.41 C/No: 38.2 PAPR: 8.1 BER: 0.017 Nbits: 5264 Nerrors: 92 ``` 2. Plot some of the demod internal states, used to chase down freq offset problemL ``` $ cd build_linux/src $ ./cohpsk_get_test_bits - 5600 | ./cohpsk_mod - - | ./ch - - --No -40 -f -20 --Fs 7500 | ./cohpsk_demod -o cohpsk_demod.txt - - | ./cohpsk_put_test_bits - $ cd ../../octave $ octave --no-gui $ cohpsk_demod_plot("../build_linux/src/cohpsk_demod.txt") ``` 3. Run Octave<-> tests ``` $ cd ~/codec2/build_linux/unittest $ ./tochpsk $ cd ~/codec2/octave $ octave --no-gui octave> tcohpsk ``` ## References ## C Code ## Octave Scripts codec2-1.2.0/README_data.md000066400000000000000000000564151445607075400151500ustar00rootroot00000000000000# README_data.md # Introduction FreeDV can be used to send data over radio channels. Two APis are supported: + VHF packet data channel which uses Ethernet style framing. + Raw frames of modem data over VHF and HF channels. ## Credits The VHF data channel was developed by Jeroen Vreeken. ## Quickstart Raw modem frame API: 1. Let's send a 128 byte frame containing some text over the modem: ```sh padding=$(head -c 115 < /dev/zero | tr '\0' '-'); echo "Hello World" $padding > in.txt ./src/freedv_data_raw_tx --bursts 1 datac3 in.txt - | ./src/freedv_data_raw_rx --framesperburst 1 datac3 - - Hello World -------- ``` Note we've padded the input frame to 126 bytes, the DATAC3 framesize (less CRC). VHF packet data API: 1. Simple test using mode 2400A and VHF packet data ```sh $ cd ~/codec2/build_linux $ ./src/freedv_data_tx 2400A - --frames 15 | ./src/freedv_data_rx 2400A - ``` You can listen to the modem signal using: ```sh $ ./src/freedv_data_tx 2400A - --frames 15 | aplay -f S16_LE -r 48000 ``` 2. Same for 2400B and 800XA ```sh $ ./src/freedv_data_tx 2400B - --frames 15 | ./src/freedv_data_rx 2400B - $ ./src/freedv_data_tx 800XA - --frames 15 | ./src/freedv_data_rx 800XA - ``` 3. Using a different callsign and secondary station id ```sh $ ./src/freedv_data_tx 2400A - --callsign T3ST --ssid 15 --frames 15 | src/freedv_data_rx 2400A - ``` # Raw Data using the FreeDV API The raw data API can be used to send frames of bytes over radio channels. The frames are protected with FEC and have a 16-bit checksum to verify correct transmission. However the raw data API may lose frames due to channel impairments, loss of sync, or acquisition delays. The caller must handle these situations. The caller is also responsible for segmentation/re-assembly of the modem frames into larger blocks of data. Several modes are available which support FSK and OFDM modulation. FSK is aimed at VHF And UHF applications, and the OFDM modes have been optimised for multipath HF radio channels. For simple examples of how use the FreeDV API with raw data frames, see the demo programs [freedv_data1_tx.c](demo/freedv_data1_tx.c) and [freedv_data1_rx.c](src/freedv_data1_rx.c) The full featured sample programs [freedv_data_raw_tx.c](src/freedv_data_raw_tx.c) and [freedv_data_raw_rx.c](src/freedv_data_raw_rx.c) can be used to experiment with the raw data API. ## FSK LDPC Raw Data Mode The FSK_LDPC mode uses 2 or 4 FSK in combination with powerful LDPC codes, and was designed for VHF or UHF AWGN channels. Parameters such as the number of FSK tones, sample rate, symbol rate, and LDPC code can be selected at initialisation time. The frame format is: ``` | Preamble | UW | payload data | CRC | parity | UW | payload data | CRC | parity | ........... | | frame 1 -------------------------| frame 2 -------------------------| ... frame n | ``` Only one preamble is transmitted for each data burst, which can contain as many frames as you like. Each frame starts with a 32 bit Unique Word (UW), then the FEC codeword consisting of the data and parity bits. At the end of the data bits, we reserve 16 bits for a CRC. Here is an example of sending some text: ``` $ cd codec2/build_linux/src $ echo 'Hello World ' | ./freedv_data_raw_tx FSK_LDPC - - 2>/dev/null | ./freedv_data_raw_rx FSK_LDPC - - 2>/dev/null | hexdump -C 00000000 48 65 6c 6c 6f 20 57 6f 72 6c 64 20 20 20 20 20 |Hello World | 00000010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ..| 00000020 ``` Notes: 1. The input data is padded to 30 bytes. The (512,256) code sends 256 data bits every frame, we reserve 16 for a CRC, so there are 240 bits, or 30 bytes of payload data required for one frame. 1. The '2>/dev/null' command redirects stderr to nowhere, removing some of the debug information the test programs usually display to make this example easier to read. When testing, it's convenient to use an internal source of test data. Here is an example where we send a single burst of 10 test frames: ``` $ cd codec2/build_linux/src $ ./freedv_data_raw_tx --testframes 10 FSK_LDPC /dev/zero - | ./freedv_data_raw_rx --testframes FSK_LDPC - /dev/null Nbits: 50 N: 4000 Ndft: 1024 bits_per_modem_frame: 256 bytes_per_modem_frame: 32 bytes_per_modem_frame: 32 Frequency: Fs: 8.0 kHz Rs: 0.1 kHz Tone1: 1.0 kHz Shift: 0.2 kHz M: 2 frames processed: 131 output bytes: 320 output_packets: 10 BER......: 0.0000 Tbits: 5440 Terrs: 0 Coded BER: 0.0000 Tbits: 2560 Terrs: 0 ``` The default is 100 bits/s 2FSK. The (512,256) code sends 256 data bits (32 bytes) with every codeword, the remaining 256 bits reserved for parity. The `--testframes` mode reports `320 output bytes` (10 frames where sent), and `Tbits: 2560`, so all of our data made it through. In real world operation, 16 of the data bits are reserved for a CRC, leaving 240 payload data bits per frame. Taking into account the overhead of the UW, CRC, and parity bits, we send 240 payload data bits for every out of 544, so the payload data rate in this example is (240/512)*(100 bits/s) = 44.1 bits/s. We can add some channel noise using the `ch` tool and see how it performs: ``` $ ./freedv_data_raw_tx --testframes 1 --bursts 10 FSK_LDPC /dev/zero - | ./ch - - --No -5 --ssbfilt 0 | ./freedv_data_raw_rx --testframes -v FSK_LDPC - /dev/null frames processed: 336 output bytes: 320 output_packets: 10 BER......: 0.0778 Tbits: 5440 Terrs: 423 SNR3k(dB): -13.00 C/No: 21.8 PAPR: 7.5 Coded BER: 0.0000 Tbits: 2560 Terrs: 0 ``` The `ch` stderr reporting is mixed up with the testframes results but we can see that over a channel with a -13dB SNR, we obtained a raw bit error rate of 0.0778 (nearly 8%). However the LDPC code cleaned that up nicely and still received all 10 packets with no errors. Here is an example running 4FSK at 20000 bits/s (10000 symbols/s), at a sample rate of 200 kHz: ``` $./freedv_data_raw_tx -m 4 --Fs 200000 --Rs 10000 --tone1 10000 --shift 10000 --testframes 100 --bursts 10 FSK_LDPC /dev/zero - | ./ch - - --No -12 --ssbfilt 0 | ./freedv_data_raw_rx -m 4 --testframes -v --Fs 200000 --Rs 10000 FSK_LDPC --mask 10000 - /dev/null frames processed: 5568 output bytes: 30144 output_packets: 942 BER......: 0.0691 Tbits: 528224 Terrs: 36505 Coded BER: 0.0022 Tbits: 248576 Terrs: 535 ``` Some notes on this example: 1. We transmit 10 bursts, each of 100 frames in length, 1000 packets total. There are a couple of frames silence between each burst. This gives the acquisition algorithms a good work out. 1. Only 942 packets make it though this rather noisy channel, a 6% Packet Error Rate (PER). In a real world application, a higher protocol layer would need to detect this, and arrange for re-transmission of missing packets. If the SNR was a few dB better, all 1000 packets would likely make it through. If it was 1dB worse, nothing would get through; LDPC codes have a very sharp "knee" in the PER versus SNR curve. 1. Our first tone `--tone` is at 10kHz, and each tone is spaced `--shift` by 10kHz, so we have FSK tones at 10,20,30, and 40 kHz. For good performance, FSK tones must be spaced by at least the symbol rate Rs. 1. Although the `ch` utility is designed for 8kHz sample rate operation, it just operates on sampled signals, so it's OK to use at higher sample rates. It does have some internal filtering so best to keep your signal well away from 0 and (sample rate)/2. The SNR measurement is calibrated to a 3000 Hz noise bandwidth, so won't make much sense at other sample rates. The third argument `-12` sets the noise level of the channel. 1. The `--mask` frequency offset algorithm is used, which gives better results on noisy channels, especially for 4FSK. ## Reading Further 1. Examples in the [ctests](CMakeLists.txt). 1. [FSK_LDPC blog post](http://www.rowetel.com/?p=7467) # OFDM Raw Data modes for HF Radio These modes use an OFDM modem with powerful LDPC codes and are designed for sending data over HF radio channels with multipath fading. The current modes supported are: | FreeDV Mode | RF bandwidth (Hz) | Payload data rate bits/s | Payload bytes/frame | FEC | Duration (sec) | MPP test | Use case | | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | | DATAC0 | 500 | 291 | 14 | (256,128) | 0.44 | 70/100 at 0dB | Reverse link ACK packets | | DATAC1 | 1700 | 980 | 510 | (8192,4096) | 4.18 | 92/100 at 5dB | Forward link data (medium SNR) | | DATAC3 | 500 | 321 | 126 | (2048,1024) | 3.19 | 74/100 at 0dB | Forward link data (low SNR) | | DATAC4 | 250 | 87 | 56 | (1472,448) | 5.17 | 90/100 at -4dB | Forward link data (low SNR) | | DATAC13 | 200 | 64 | 14 | (384,128) | 2.0 | 90/100 at -4dB | Reverse link ACK packets (low SNR) | Notes: 1. 16 bits (2 bytes) per frame are reserved for a 16 bit CRC, e.g. for `datac3` we have 128 byte frames, and 128-2=126 bytes/frame of payload data. 1. SNR is the target operating point SNR for each mode. 1. "MPP test" is the number of packets received/transmitted on a simulated MultiPath Poor channel (1Hz Doppler spread, 2ms delay) at the operating point SNR. From the callers point of view, the frame format of each burst is: ``` | Preamble | payload data | CRC | payload data | CRC | ........... | Postamble | | frame 1 -----------| frame 2 -----------| ... frame N | ``` In the next layer down, each frame is comprised of several OFDM "modem frames", that contain pilot, unique word, and FEC symbols to handle synchronisation and error correction over the challenging HF channel. The preamble and postamble are used to locate the burst and estimate it's frequency offset. Having both a pre and postamble increases the probability of successful detection of the burst in a fading channel. Here are some single frame bursts on a MPP channel at 5dB SNR: ![](doc/pre_post_amble_mpp.png) You can see what a mess the MPP channel makes. Sometimes we find the pre-amble, other times the post-amble. Using both increases the probability of detecting the burst, it's a form of time diversity. If the probability of missing the pre-amble is P(fail)=0.1, then the probability of missing the pre and post-amble is P(fail)*P(fail)=0.01. If we find either we can work out where the burst starts and start demodulating. Here is an example of sending 3 bursts of 2 frames/burst, a total of 6 frames: ``` ./src/freedv_data_raw_tx --framesperburst 2 --bursts 3 --testframes 6 DATAC0 /dev/zero - | ./src/freedv_data_raw_rx --framesperburst 2 --testframes DATAC0 - /dev/null --vv BER......: 0.0000 Tbits: 1536 Terrs: 0 Coded BER: 0.0000 Tbits: 768 Terrs: 0 Coded PER: 0.0000 Tpkts: 6 Tpers: 0 ``` Lets add some noise and a 20 Hz frequency offset: ``` ./src/freedv_data_raw_tx --framesperburst 2 --bursts 3 --testframes 6 DATAC0 /dev/zero - | ./src/ch - - --No -14 -f 20 | ./src/freedv_data_raw_rx --framesperburst 2 --testframes DATAC0 - /dev/null mark:space: 0.79 SNR offset: -1.03 ch: SNR3k(dB): -0.96 C/No....: 33.82 ch: peak.....: 16394.23 RMS.....: 9814.35 CPAPR.....: 4.46 ch: Nsamples.: 33440 clipped.: 0.00% OutClipped: 0.03% modembufs: 35 bytes: 84 Frms.: 6 SNRAv: -1.15 BER......: 0.0319 Tbits: 1536 Terrs: 49 Coded BER: 0.0000 Tbits: 768 Terrs: 0 Coded FER: 0.0000 Tfrms: 6 Tfers: 0 ``` We still received 6 frames OK (Tpkts field), but in this case there was a raw BER of about 3% which the FEC cleaned up nicely (Coded BER 0.0). Just above that we can see the "SNR offset" and "ch: SNR3k" fields. In the silence between bursts the modem signal has zero power, which biases the SNR measured by the `ch` channel simulation tool. This bias is the "SNR offset". So the true SNR for this test is actually: ``` SNR = -1.15 - (-1.03) = -0.12 dB ``` The same offset applies the the Peak to Average Power measurement (CPAPR) returned by the `ch` tool, but in the other direction. So the unbiased CPAPR is: ``` CPAPR = 4.46 - 1.03 = 3.43 dB ``` CPAPR refers to the PAPR of the complex valued signal. In the `raw` directory is a real world off-air sample of a signal sent between Adelaide and Melbourne (800km) using about 20W on 40m. This can be decoded with: ``` ./src/freedv_data_raw_rx datac1 --framesperburst 1 --testframes ../raw/test_datac1_006.raw /dev/null --vv BER......: 0.0134 Tbits: 73728 Terrs: 986 Coded BER: 0.0000 Tbits: 36864 Terrs: 0 Coded PER: 0.0000 Tpkts: 9 Tpers: 0 ``` It's also useful to listen to the file, you can hear co-channel SSB, the bursts starting and stopping, and some fading: ``` aplay -f S16_LE ../raw/test_datac1_006.raw ``` Here is a spectrogram (waterfall on it's side - time flows from left to right, frequency on the Y axis): ![](doc/test_datac1_006_spectrogram.png) The multipath channel carves notches out of the signal, and the level rises and falls. The 27 carriers of the `datac1` channel can also be observed. The SSB is the fuzz along the top. The SNR varied between 8 and 16dB. The fading is even more obvious on the scatter diagram: ![](doc/test_datac1_006_scatter.png) The X shape is due to the level of each carrier changing with the fading. In some cases a carrier is faded down to zero. The FEC helps clean up any errors due to faded carriers. ## Modem Performance and Throughput The following curves illustrate the OFDM raw data mode performance and throughput over AWGN and MPP channels: ![](doc/c_tx_comp.png) ![](doc/c_tx_comp_thruput.png) The signalling modes (`datac0` and `datac13`) tend to have a "long PER tail" at they are short in duration compared to the fading period. The throughput curve can be used as a guide for "gear shifting" between modes. These curves were generated by [snr_curves.sh](../unittest/raw_data_curves/snr_curves.sh) ## SNR estimation and clipping The modem estimates the SNR of every received packet, which can be useful for selecting the best mode to maximise bit rate while minimising packet error rate. Clipping (compression) is enabled by default on each modem waveform to maximise the Peak to Average Power Ratio (PAPR). Power amplifiers are usually rated in terms of peak power (PEP). For a given peak power, clipping increases SNR over the channel by 3-4dB. Clipping works by introducing controlled distortion, which affects the SNR estimator in the modem. When clipping is enabled, the SNR reported will start to roll off. If clipping is disabled, the modem will report a more accurate SNR. This command line demonstrates the effect: ``` ./src/freedv_data_raw_tx datac3 /dev/zero - --testframes 10 --bursts 10 --clip 1 | ./src/ch - - --No -100 --fading_dir unittest | ./src/freedv_data_raw_rx datac3 - /dev/null --testframes --framesperburst 1 -v ``` Try adjusting `--clip` and `No` argument of `ch` (noise level) for different modes. Note the SNR estimates returned from `freedv_data_raw_rx` compared to the SNR from the channel simulator `ch`. You will notice clipping also increases the RMS power and reduces the PER for a given channel noise power. CPAPR will also reduce with clipping enabled. The following plots illustrate the SNR estimates versus actual channel SNR with and without compression (clipping). Not that even with the uncompressed waveform there is a small offset of around 1dB, possibly due to modem implementation loss or noise in the frequency, phase, or timing estimators. ![](doc/snrest_snr_ctx.png) ![](doc/snrest_snr_ctxc.png) ## Reading Further 1. See the raw data example in Quickstart section above. 1. For simple examples of how use the FreeDV API, see the demo programs [freedv_datac1_tx.c](demo/freedv_datac1_tx.c) and [freedv_datac1_rx.c](demo/freedv_datac1_rx.c) 1. [freedv_data_raw_tx.c](src/freedv_data_raw_tx.c) and [freedv_data_raw_rx.c](src/freedv_data_raw_rx.c) are more full deatured example programs. 1. The modem waveforms designs are described in this [spreadsheet](doc/modem_codec_frame_design.ods). 1. Examples in the [ctests](CMakeLists.txt) (look for "FreeDV API raw data") 1. [Codec 2 HF Data Modes Part 1 blog post](http://www.rowetel.com/?p=7167) 1. [HF Data Acquisition](https://github.com/drowe67/codec2/pull/171) GitHub Pull Request 1. [datac4 & datac13](https://github.com/drowe67/codec2/pull/364) GitHub Pull Request 1. [FreeDATA](https://freedata.app/) uses these modems # VHF Packet Data Channel The FreeDV VHF data channel operates on a packet level. The FreeDV modems however typically operate on a fixed frame base. This means that data packets have to be sent in multiple frames. The packet format is modeled after Ethernet. As a result, any protocol that is compatible with Ethernet can potentially be used over a FreeDV data link. (There are of course practical limits. Browsing the world wide web with just a few hundred bits per second will not be a pleasant experience.) ## Header optimization When there are no packets available for transmission a small 'filler' packet with just the sender's address will be sent. When there is a packet available not all of the header needs to be sent. The sender's address can often be left out if it was already sent in a previous frame. Likewise when the packet has no specific destination but is targeted at a multicast address, this can also be transmitted in a single bit as opposed to a 6 byte broadcast address. ## Addressing Since the format is based on Ethernet, a 6 byte sender and destination address is used. It is possible to encode an ITU compatible callsign in these bytes. See http://dmlinking.net/eth_ar.html for more info. Or have a look at freedv_data_tx.c and freedv_data_rx.c for an actual implementation. ## Packet types The 2 byte EtherType field is used to distinguish between various protocols. ## Checks Not all channels are perfect, and especially since a packet is split up over multiple frames, bits might get lost. Each packet therefore has a CRC which is checked before it is accepted. Note there is No FEC on 2400A/2400B/800XA. ## Available modes The data channel is available for modes 2400A, 2400B and 800XA. ## API The data channel is part of the regular FreeDV API. ### Initialization After creating a new freedv instance with freedv_open(), a few more calls need to be done before the data channel is usable. ``` void freedv_set_data_header (struct freedv *freedv, unsigned char *header); ``` The address that will be used for 'filler' packets must be set. The freedv_set_data_header() function must be called with a 6 byte header. ``` typedef void (*freedv_callback_datarx)(void *, unsigned char *packet, size_t size); typedef void (*freedv_callback_datatx)(void *, unsigned char *packet, size_t *size); void freedv_set_callback_data (struct freedv *freedv, freedv_callback_datarx datarx, freedv_callback_datatx datatx, void *callback_state); ``` Using freedv_set_callback_data() two callback functions can be provided. The datarx callback will be used whenever a new data packet has been successfully received. The datatx callback will be used when a new data packet is required for transmission. ### Operation ``` void freedv_datatx (struct freedv *f, short mod_out[]); ``` During normal operation the freedv_datatx() function can be used whenever a data frame has to be sent. If no data is available it will request new data using the datatx callback. The callback function is allowed to set 'size' to zero if no data is available or if it wishes to send an address frame. For reception the regular freedv_rx() functions can be used as received data will automatically be reported using the datarx callback. Be aware that these functions return the actual number of received speech samples. When a data frame is received the return value will be zero. This may lead to 'gaps' in the audio stream which will have to be filled with silence. ### Examples The freedv_data_tx and freedv_data_rx test programs implement the minimum needed to send and receive data packets. ## Mixing voice and data Encoding only voice data is easy with the FreeDV API. Simply use the freedv_tx() function and provide it with speech samples. Likewise encoding only data is also easy. Make sure to provide a source of data frames using the freedv_set_callback_data() function, and use the freedv_datatx() function to generate frames. However there are many use cases where one would like to transmit a mix of voice and data. For example one might want to transmit their callsign in a machine readable format, or a short position report. There are a few ways to do this: ### Data bursts at start and/or end of transmission This method simply transmits voice frames during the transmission, except for a few moments. For example when the user keys the radio the software uses the freedv_datatx() function for a number of frames before switching to regular voice frames. Likewise when the user releases the key the software may hold it for a number of frames to transmit data before it releases the actual radio. Be careful though: depending on your setup (radio, PC, soundcard, etc) the generated frames and the keying of your radio might not be perfectly in sync and the first or last frames might be lost in the actual transmission. Make sure to take this into account when using this method. ### Data and voice interleaved Another method is to generate a mixed stream of frames. Compared to a small burst at the beginning or end a lot more data can be sent. We only need a way to choose between voice or data such that the recovered speech at the other side is not impacted. #### Detect voice activity When it is possible to determine activity in the voice signal (and it almost always is) this presence can be used to insert a data frame by calling freedv_datatx() instead of freedv_tx()/freedv_codectx(). This method is used in the freedv_mixed_tx demo program. When the option --codectx is given the codec2 library is used to determine the activity. ``` $ ./src/freedv_mixed_tx 2400A ../raw/hts1a.raw - --codectx | src/freedv_data_rx 2400A - $ ./src/freedv_mixed_tx 2400A ../raw/hts1a.raw - | src/freedv_data_rx 2400A - ``` The advantage of this method is that the audio is not distorted, there was nothing (or near nothing) to distort. A drawback is that constant voice activity may mean there are insufficient frames for data. ### Receiving mixed voice and data Receiving and decoding a mixed voice and data stream is (almost) as easy as receiving a regular voice-only transmission. One simply uses the regular API calls for reception of speech samples. In addition, the callback functions are used for data. There is one caveat though: when a data frame is received the API functions (like freedv_rx) will return zero as this is the amount of codec/voice data received. For proper playback silence (or comfort noise) should be inserted for the duration of a frame to restore the timing of the original source speech samples. An example of how this is done is provided in freedv_mixed_rx ``` $ ./src/freedv_mixed_tx 2400A ../raw/hts1a.raw - | src/freedv_mixed_rx 2400A - ./hts1a_out.raw ``` ### Insert a data frame periodically This is a very simple method, simply insert a data frame every n frames, (e.g. once every 10 seconds). Since single FreeDV frames are relatively short (tens of milliseconds) the effect on received audio will be minor. The advantage of this method is that one can create a guaranteed amount of data bandwidth. A drawback is some interruption in the audio that may be noticed. ### Combination of the above. A combination of the two methods may also be used. Send data when no voice is active and insert a frame when this does not occur for a long time. codec2-1.2.0/README_fdmdv.md000066400000000000000000000131361445607075400153300ustar00rootroot00000000000000# README_fdmdv ## Introduction A 1400 bit/s (nominal) Frequency Division Multiplexed Digital Voice (FDMDV) modem based on [FreeDV 1600 Specification](https://freedv.org/freedv-specification). Used for FreeDV 1600. The FDMDV modem was first implemented in GNU Octave, then ported to C. Algorithm development is generally easier in Octave, but for real-time work we need the C version. Automated units tests ensure the operation of the Octave and C versions are identical. ## Quickstart Built as part of codec2, see [README](README.md) for build instructions. 1. Generate some test bits and modulate them: ``` $ cd codec2/build_linux/src $ ./fdmdv_get_test_bits test.c2 1400 $ ./fdmdv_mod test.c2 test.raw $ play -t .s16 -r 8000 test.raw ``` 1. Two seconds of test frame data modulated and sent out of sound device: ``` $ ./fdmdv_get_test_bits - 2800 | ./fdmdv_mod - - | play -t .s16 -r 8000 - ``` 1. Send 14000 modulated bits (10 seconds) to the demod and count errors: ``` $ ./fdmdv_get_test_bits - 14000 | ./fdmdv_mod - - | ./fdmdv_demod - - 14 demod_dump.txt | ./fdmdv_put_test_bits - bits 13664 errors 0 BER 0.0000 ``` Use Octave to look at plots of 1 second (1400 bits) of modem operation: ``` $ cd codec2/octave $ octave-cli octave:1> fdmdv_demod_c("../build_linux/src/demod_dump.txt",14000) ``` 1. Test with timing slips due to sample clock offset of 1000ppm: ``` $ ./fdmdv_get_test_bits - 30000 | ./fdmdv_mod - - | sox -t raw -t .s16 -r 8000 - -t .s16 -r 7990 - | ./fdmdv_demod - - 14 demod_dump.txt | ./fdmdv_put_test_bits - octave:98> fdmdv_demod_c("../build_linux/src/demod_dump.txt",28000) 27552 bits 0 errors BER: 0.0000 ``` 1. Run Octave simulation of entire modem and AWGN channel: ``` $ cd codec2/octave $ octave-cli octave:1> fdmdv_ut ``` ## References 1. [FreeDV 1600 Specification](https://freedv.org/freedv-specification) 1. [Testing a FDMDV Modem](http://www.rowetel.com/blog/?p=2433) ## C Code | File | Description | | --- | --- | | src/fdmdv_mod.c | C version of modulator that takes a file of bits and converts it to a raw file of modulated samples | | src/fdmdv_demod.c | C version of demodulator that takes a raw file of modulated samples and outputs a file of bits. Optionally dumps demod states to a text file which can be plotted using the Octave script fdmdv_demod_c.m | | src/codec2_fdmdv.h | Header file that exposes FDMDV C API functions | | src/fdmdv.c | C functions that implement the FDMDV modem | | src/fdmdv-internal.h | Internal states and constants for FDMDV modem, shouldn't be exposed to application program | | unittest/tfdmdv.c | Used to conjunction with unittest/tfdmdv.m to automatically test C FDMDV functions against Octave versions | ## Octave Scripts Note these require some Octave packages to be installed, see [README](README.md) | File | Description | | --- | --- | | fdmdv.m | Functions and variables that implement the Octave version of the FDMDV modem | | fdmdv_ut.m | Unit test for fdmdv Octave code, useful while developing algorithm. Includes tx/rx plus basic channel simulation | | fdmdv_mod.m | Octave version of modulator that outputs a raw file. The modulator is driven by a test frame of bits. This can then be played over a real channel or through a channel simulator like PathSim. The sample rate can be changed using "sox" to simulate differences in tx/rx sample clocks | | fdmdv_demod.m | Demodulator program that takes a raw file as input, and works out the bit error rate using known test frames. Can be used to test the demod performance with off-air signals, or signals that have been passed through a channel simulator | | fdmdv_demod_c.m | Takes an output text file from the C demod fdmdv_demod.c and produces plots and measures BER. Useful for evaluating fdmdv_demod.c performance. The plots produced are identical to the Octave version fdmdv_demod.m, allowing direct comparison of the C and Octave versions | | tfdmdv.m | Automatic tests that compare the Octave and C versions of the FDMDV modem functions. First run unittest/tfdmdv, this will generate a text file with test vectors from the C version. Then run the Octave script tfdmdv and it will generate Octave versions of the test vectors and compare each vector with the C equivalent. It plots the vectors and errors (green). It also produces an automatic checklist based on test results. If the Octave or C modem code is changed, this script should be used to ensure the C and Octave versions remain identical. This process has been wrapped up in the `ctest -R test_FDMDV_modem_octave_port`. | 1. Typical fdmdv_ut run: ``` octave:6> fdmdv_ut Eb/No (meas): 7.30 (8.29) dB bits........: 2464 errors......: 20 BER.........: 0.0081 PAPR........: 13.54 dB SNR.........: 4.0 dB ``` It also outputs lots of nice plots that show the operation of the modem. For a 1400 bit/s DQPSK modem we expect about 1% BER for Eb/No = 7.3dB, which corresponds to SNR = 4dB (3kHz noise BW). The extra dB of measured power is due to the DBPSK pilot. Currently the noise generation code doesn't take the pilot power into account, so in this example the real SNR is actually 5dB. 1. To generate 10 seconds of modulated signal: ``` octave:8> fdmdv_mod("test.raw",1400*10); ``` To demodulate 2 seconds of the test.raw file generated above: ``` octave:9> fdmdv_demod("test.raw",1400*2); 2464 bits 0 errors BER: 0.0000 ``` It also produces several plots showing the internal states of the demod. Useful for debugging and observing what happens with various channels. codec2-1.2.0/README_freedv.md000066400000000000000000000326771445607075400155160ustar00rootroot00000000000000# FreeDV Technology FreeDV is an open source digital voice protocol that integrates modems, speech codecs, and FEC. On transmit, FreeDV converts speech to a modem signal you can send over a radio channel. On receive, FreeDV takes off air modem signals and converts them to speech samples. FreeDV is available as a GUI application, an open source library (FreeDV API), and in hardware (the SM1000 FreeDV adaptor). FreeDV is part of the Codec 2 project. This document gives an overview of the technology inside FreeDV, and some additional notes on building/using the FreeDV 2020 and 2400A/2400B modes. ![FreeDV mode knob](http://www.rowetel.com/images/codec2/mode_dv.jpg) ## FreeDV API The general programming model is: ``` speech samples -> FreeDV encode -> modulated samples (send over radio) -> FreeDV decode -> speech samples ``` The `codec2/demo` directory provides simple FreeDV API demo programs written in C and Python to help you get started, for example: ``` cd codec2/build_linux cat ../raw/ve9qrp_10s.raw | ./demo/freedv_700d_tx | ./demo/freedv_700d_rx | aplay -f S16_LE ``` The current demo programs are as follows: | Program | Description | | --- | --- | | [c2demo.c](demo/c2demo.c) | Encode and decode speech with Codec 2 | | [freedv_700d_tx.c](demo/freedv_700d_tx.c) | Transmit a voice signal using the FreeDV API | | [freedv_700d_rx.c](demo/freedv_700d_rx.c) | Receive a voice signal using the FreeDV API | | [freedv_700d_rx.py](demo/freedv_700d_rx.py) | Receive a voice signal using the FreeDV API in Python | | [freedv_datac1_tx.c](demo/freedv_datac1_tx.c) | Transmit raw data frames using the FreeDV API | | [freedv_datac1_rx.c](demo/freedv_datac1_rx.c) | Receive raw data frames using the FreeDV API | | [freedv_datac0c1_tx.c](demo/freedv_datac0c1_tx.c) | Transmit two types of raw data frames using the FreeDV API | | [freedv_datac0c1_rx.c](demo/freedv_datac0c1_rx.c) | Receive two types of raw data frames using the FreeDV API | So also [freedv_api.h](src/freedv_api.h) and [freedv_api.c](src/freedv_api.c) for the full list of API functions. Only a small set of these functions are needed for basic FreeDV use, please see the demo programs for minimal examples. The full featured command line demo programs [freedv_tx.c](src/freedv_tx.c) & [freedv_rx.c](src/freedv_rx.c) demonstrate many features of the API: ``` $ ./freedv_tx 1600 ../../raw/hts1.raw - | ./freedv_rx 1600 - - | aplay -f S16_LE $ cat freedv_rx_log.txt ``` Speech samples are input to the API as 16 bit signed integers. Modulated samples can be in real 16 bit signed integer or complex float. The expected sample rates can be found with `freedv_get_speech_sample_rate()` and `freedv_get_modem_sample_rate()`. These are typically 8000 Hz but can vary depending on the current FreeDV mode. ## FreeDV HF Modes These are designed for use with a HF SSB radio. | Mode | Date | Codec | Modem | RF BW | Raw bits/s | FEC | Text bits/s | SNR min | Multipath | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | 1600 | 2012 | Codec2 1300 | 14 DQPSK + 1 DBPSK pilot carrier | 1125 | 1600 | Golay (23,12) | 25 | 4 | poor | | 700C | 2017 | Codec2 700C | 14 carrier coherent QPSK + diversity | 1500 | 1400 | - | - | 2 | good | | 700D | 2018 | Codec2 700C | 17 carrier coherent OFDM/QPSK | 1000 | 1900 | LDPC (224,112) | 25 | -2 | fair | | 700E | 2020 | Codec2 700C | 21 carrier coherent OFDM/QPSK | 1500 | 3000 | LDPC (112,56) | 25 | 1 | good | | 2020 | 2019 | LPCNet 1733 | 31 carrier coherent OFDM/QPSK | 1600 | 3000 | LDPC (504,396) | 22 | 2 | poor | | 2020B | 2022 | LPCNet 1733 | 29 carrier coherent OFDM/QPSK | 2100 | 4100 | LDPC (112,56) unequal | 22.2 | 3 | good | | 2020C | 2022 | LPCNet 1733 | 29 carrier coherent OFDM/QPSK | 2100 | 4100 | LDPC (212,158) | 22.2 | 5 | good | Notes: 1. *Raw bits/s* is the number of payload bits/s carried over the channel by the modem. This consists of codec frames, FEC parity bits, unprotected text, and synchronisation information such as pilot and unique word bits. The estimates are open to interpretation for the OFDM waveforms due to pilot symbol and cyclic prefix considerations (see spreadsheet). 1. *RF BW* is the bandwidth of the RF signal over the air. FreeDV is more bandwidth efficient than SSB. 1. *Multipath* is the relative resilience of the mode to multipath fading, the biggest problem digital voice faces on HF radio channels. Analog SSB would be rated as "good". 1. *Text* is a side channel for low bit rate text such as your location and call sign. It is generally unprotected by FEC, and encoded with varicode. The exception is if reliable_text support is turned on (see reliable_text.c/h); this results in text protected by LDPC(112,56) FEC with interleaving. 1. *SNR Min* is for an AWGN channel (no multipath/fading). 1. All of the modems use multiple parallel carriers running at a low symbol rate of around 50 Hz. This helps combat the effects of multipath channels. 1. Some of the Codec 2 modes (2400/1300/700C etc) happen to match the name of a FreeDV mode. For example FreeDV 700C uses Codec 2 700C for voice compression. However FreeDV 700D *also* uses Codec 2 700C for voice compression, but has a very different modem waveform to FreeDV 700C. Sorry for the confusing nomenclature. 1. Coherent demodulation gives much better performance than differential, at the cost of some additional complexity. Pilot symbols are transmitted regularly to allow the demod to estimate the reference phase of each carrier. 1. The 1600 and 700C waveforms use parallel tone modems, later modes use OFDM. OFDM gives tighter carrier packing which allows higher bit rates, but tends to suffer more from frequency offsets and delay spread. 1. At medium to high SNRs, FreeDV 700C performs well (better than 700D) on fast fading multipath channels with large delay spread due its parallel tone design and high pilot symbol rate. It employs transmit diversity which delivers BER performance similar to modes using FEC. FreeDV 700C also has a short frame (40ms), so syncs fast with low latency. Fast sync is useful on marginal channels that move between unusable and barely usable. 1. FreeDV 700D uses an OFDM modem and was optimised for low SNR channels, with strong FEC but a low pilot symbol rate and modest (2ms) cyclic prefix which means its performance degrades on multipath channels with fast (> 1Hz) fading. The use of strong FEC makes this mode quite robust to other channel impairments, such as static crashes, urban HF noise, and in-band interference. 1. FEC was added fairly recently to FreeDV modes. The voice codecs we use work OK at bit error rates of a few %, and packet error rates of 10%. Raw bit error rates on multipath channels often exceed 10%. For reasonable latency (say 40ms) we need small codewords. Thus to be useful we require a FEC code that works at over 10% raw BER, has 1% output (coded) bit error rate, and a codeword of around 100 bits. Digital voice has unusual requirements, most FEC codes are designed for data which is intolerant of any bit errors, and few operate over 10% raw BER. Powerful FEC codes have long block lengths (1000's of bits) which leads to long latency. However LDPC codes come close, and can also "clean up" other channel errors caused by static and interference. The use of OFDM means we now have "room" for the extra bits required for FEC, so there is little cost in adding it, apart from latency. 1. 2020B uses unequal error protection, only 11 bits from each 52 bit vocoder frame are protected by FEC. This provides strong protection of the most important bits. The effect is a gentle "slope" in the speech quality versus SNR curve, but with some audible errors even at high SNRs. 2020C has a LDPC code that protects all bits - it will have no audible errors at high SNRs, but will fall over at about 5dB SNR. 2020B and 2020C have a modem waveform similar to 700E - a high pilot symbol rate to operate on fast fading channels. Compared to 2020, B&C have a shorter frame duration (90ms), lower latency and faster sync, but require a few more dB SNR. ## FreeDV VHF Modes These modes use constant amplitude modulation like FSK or FM, and are designed for VHF and above. However 800XA can be run over HF or VHF on a SSB radio. | Mode | Date | Codec2 | Modem | RF BW | Raw bits/s | FEC | Text bits/s | | --- | --- | --- | --- | --- | --- | --- | --- | | 2400A | 2016 | 1300 | 4FSK | 5kHz | 2400 | Golay (23,12) | 50 | | 2400B | 2016 | 1300 | baseband/analog FM | analog FM | 2400 | Golay (23,12) | 50 | | 800XA | 2017 | 700C | 4FSK | 2000 | 800 | - | N | | FSK_LDPC | 2020 | - | 2 or 4 FSK | user defined | user defined | LDPC | - | - | The FSK_LDPC mode is used for data, and has user defined bit rate and a variety of LDPC codes available. It is discussed in [README_data](README_data.md) ## FreeDV 2400A and 2400B modes FreeDV 2400A and FreeDV 2400B are modes designed for VHF radio. FreeDV 2400A is designed for SDR radios (it has a 5 kHz RF bandwidth), however FreeDV 2400B is designed to pass through commodity FM radios. Demos of FreeDV 2400A and 2400B: ``` $ ./freedv_tx 2400A ../../raw/ve9qrp_10s.raw - | ./freedv_rx 2400A - - | play -t .s16 -r 8000 - $ ./freedv_tx 2400B ../../raw/ve9qrp_10s.raw - | ./freedv_rx 2400B - - | play -t .s16 -r 8000 - ``` Note for FreeDV 2400A/2400B the modem signal sample rate is 48kHz. To listen to the modem tones from FreeDV 2400B, or play them into a FM HT mic input: ``` $ ./freedv_tx 2400B ../../raw/ve9qrp_10s.raw - | play -t .s16 -r 48000 - ``` Simulate FreeDV 2400B passing through a 300 to 3000 Hz audio path using sox to filter: ``` $ ./freedv_tx 2400B ../../raw/ve9qrp_10s.raw - | sox -t .s16 -r 48000 - -t .s16 - sinc 300-3000 | ./freedv_rx 2400B - - | play -t .s16 -r 8000 - ``` ## FreeDV 2020 support (building with LPCNet) 1. Build LPCNet: ``` $ cd ~ $ git clone https://github.com/drowe67/LPCNet $ cd LPCNet && mkdir build_linux && cd build_linux $ cmake .. $ make ``` 1. Build Codec 2 with LPCNet support: ``` $ cd ~/codec2/build_linux && rm -Rf * $ cmake -DLPCNET_BUILD_DIR=~/LPCNet/build_linux .. $ make ``` ## FreeDV 2020 tests with FreeDV API ``` $ cat ~/LPCNet/wav/wia.wav | ~/LPCNet/build_linux/src/lpcnet_enc -s | ./ofdm_mod --mode 2020 --ldpc --verbose 1 | ./ofdm_demod --mode 2020 --verbose 1 --ldpc | ~/LPCNet/build_linux/src/lpcnet_dec -s | aplay -f S16_LE -r 16000 ``` Listen the reference tx: ``` $ cat ~/LPCNet/wav/wia.wav | ~/LPCNet/build_linux/src/lpcnet_enc -s | ./ofdm_mod --mode 2020 --ldpc --verbose 1 | aplay -f S16_LE ``` Listen the freedv_tx: ``` $ ./freedv_tx 2020 ~/LPCNet/wav/wia.wav - | aplay -f S16_LE ``` FreeDV API tx, with reference rx from above: ``` $ ./freedv_tx 2020 ~/LPCNet/wav/wia.wav - | ./ofdm_demod --mode 2020 --verbose 1 --ldpc | ~/LPCNet/build_linux/src/lpcnet_dec -s | aplay -f S16_LE -r 16000 ``` FreeDV API tx and rx: ``` $ ./freedv_tx 2020 ~/LPCNet/wav/all.wav - | ./freedv_rx 2020 - - | aplay -f S16_LE -r 16000 $ ./freedv_tx 2020 ~/LPCNet/wav/all.wav - --testframes | ./freedv_rx 2020 - /dev/null --testframes -vv ``` Simulated HF slow fading channel, 10.8dB SNR: ``` $ ./freedv_tx 2020 ~/LPCNet/wav/all.wav - | ./ch - - --No -30 --slow | ./freedv_rx 2020 - - | aplay -f S16_LE -r 16000 ``` It falls down quite a bit with fast fading (--fast): AWGN (noise but no fading) channel, 2.8dB SNR: ``` $ ./freedv_tx 2020 ~/LPCNet/wav/all.wav - | ./ch - - --No -22 | ./freedv_rx 2020 - - | aplay -f S16_LE -r 16000 ``` ## Command lines for PER testing 700D/700E PER with clipper AWGN: ``` $ ./src/freedv_tx 700D ../raw/ve9qrp.raw - --clip 0 --testframes | ./src/ch - - --No -16 | ./src/freedv_rx 700D - /dev/null --testframes ``` MultiPath Poor (MPP): ``` $ ./src/freedv_tx 700D ../raw/ve9qrp.raw - --clip 0 --testframes | ./src/ch - - --No -24 --mpp --fading_dir unittest | ./src/freedv_rx 700D - /dev/null --testframes ``` Adjust `--clip [0|1]` and `No` argument of `ch` to obtain a PER of just less than 0.1, and note the SNR and PAPR reported by `ch`. The use of the `ve9qrp` samples makes the test run for a few minutes, in order to get reasonable multipath channel results. Low SNR MPP channel 2020B command line: ``` cat ~/LPCNet/wav/all.wav | ~/LPCNet/build_linux/src/lpcnet_enc -x | ./src/ofdm_mod --mode 2020B --ldpc --clip --txbpf | ./src/ch - - --No -22 --mpd | ./src/ofdm_demod --mode 2020B --verbose 1 --ldpc | ~/LPCNet/build_linux/src/lpcnet_dec -x | aplay -f S16_LE -r 16000 ``` ## Reading Further 1. [FreeDV web site](http://freedv.org) 1. [FreeDV GUI User Manual](https://github.com/drowe67/freedv-gui/blob/master/USER_MANUAL.md) 1. [Codec 2](http://rowetel.com/codec2.html) 1. FreeDV can also be used for data [README_data](https://github.com/drowe67/codec2/blob/master/README_data.md) 1. [FreeDV 1600 specification](https://freedv.org/freedv-specification) 1. [FreeDV 700C blog post](http://www.rowetel.com/wordpress/?p=5456) 1. [FreeDV 700D Released blog post](http://www.rowetel.com/wordpress/?p=6103) 1. [FreeDV 2020 blog post](http://www.rowetel.com/wordpress/?p=6747) 1. [FreeDV 2400A blog post](http://www.rowetel.com/?p=5119) 1. [FreeDV 2400A & 2400B](http://www.rowetel.com/?p=5219) 1. Technical information on various modem waveforms in the [modem codec frame design spreadsheet](https://github.com/drowe67/codec2/blob/master/doc/modem_codec_frame_design.ods) 1. [Modems for HF Digital Voice Part 1](http://www.rowetel.com/wordpress/?p=5420) 1. [Modems for HF Digital Voice Part 2](http://www.rowetel.com/wordpress/?p=5448) 1. [FDMDV modem README](README_fdmdv.md) 1. [OFDM modem README](README_ofdm.md) 1. Many blog posts in the [rowetel.com blog archives](http://www.rowetel.com/?page_id=6172) codec2-1.2.0/README_fsk.md000066400000000000000000000211641445607075400150130ustar00rootroot00000000000000# README_fsk A FSK modem with a non-coherent demodulator. Performance is within a fraction of a dB of ideal. The demodulator automagically estimates the tone frequencies and tracks frequency drift. Here is a typical Bit Error Rate (BER) versus Eb/No curve: ![BER versus Eb/No curve](doc/fsk_modem_ber_8000_100.png) Note how close the theory line is to measured performance. This modem can demodulate FSK signals that sound like [this sample](doc/lockdown_3s.wav); and is used to receive images from the [edge of space](https://github.com/projecthorus/wenet): ![HAB image from edge of space](doc/wenet_image.jpg) ## Credits The Octave version of the modem was developed by David Rowe. Brady O'Brien ported the modem to C, and wrote the C/Octave tests. The modem is being maintained by David Rowe. Mark Jessop has helped improve the modem operation by testing against various balloon telemtry waveforms. Bill Cowley has developed the Log Likelihood Ratio (LLR) algorithms for 4FSK. ## Quickstart 1. Build codec2: ``` $ cd codec2 && mkdir build_linux && cmake .. && make ``` 1. Generate 1000 test bits, modulate them using 2FSK using a 8000 Hz sample rate, 100 bits/s, play on your sound card: ``` $ cd ~/codec2/build_linux/src $ ./fsk_get_test_bits - 1000 | ./fsk_mod 2 8000 100 1200 1200 - - | aplay -f S16_LE ``` The low tone frequency is 1200Hz, and the upper tone 1200 + 1200 = 2400Hz. 1. Add the demodulator and measure the bit error rate over 10,000 bits of 100 bit/s 2FSK: ``` $ ./fsk_get_test_bits - 10000 | ./fsk_mod 2 8000 100 1200 100 - - | ./fsk_demod 2 8000 100 - - | ./fsk_put_test_bits - [0099] BER 0.000, bits tested 9900, bit errors 0 PASS ``` We get a Bit Error Rate (BER) of 0, as there is no channel noise to induce bit errors. 1. Same thing but this time with 4FSK, and less verbose output: ``` $ ./fsk_get_test_bits - 10000 | ./fsk_mod 4 8000 100 1200 100 - - | ./fsk_demod 4 8000 100 - - | ./fsk_put_test_bits -q - [0099] BER 0.000, bits tested 9900, bit errors 0 PASS ``` 1. Lets add some channel noise: ``` $ ./fsk_get_test_bits - 10000 | ./fsk_mod 2 8000 100 1200 100 - - | ./ch - - --No -26 | ./fsk_demod 2 8000 100 - - | ./fsk_put_test_bits -b 0.015 - SNR3k(dB): -5.76 C/No: 29.0 PAPR: 3.0 [0099] BER 0.010, bits tested 9900, bit errors 103 PASS ``` The `ch` utility takes the FSK modulator signal, and adds calibrated noise to it (the `--No -26` value specifies the noise). Try changing the noise level, and note how the Bit Error Rate (BER) changes. The BER is 0.01, which is right on theory for this sort of FSK demodulator at this SNR (2FSK non-coherent demodulator Eb/No=9dB). The SNR is calculated using the signal power divided by the noise power in 3000 Hz. The C/No value is the same thing, but uses a noise bandwidth of 1 Hz. There is less noise power when you look at just 1Hz, so C/No is higher. Peak to Average Power ratio (PAPR) is 3dB as a FSK signal is just a single sine wave, and a sine wave peak is 3dB higher than it's average. 1. You can visualise the C modem operation with a companion python script, for example: ``` $ ./fsk_get_test_bits - 10000 | ./fsk_mod -p 10 4 8000 400 400 400 - - | ./fsk_demod -p 10 -t1 4 8000 400 - /dev/null 2>stats.txt $ python ../../octave/plot_fsk_demod_stats.py stats.txt ``` 1. Send some digital voice using FSK at 800 bits/s, and try the two 2400 bits/s FSK modes: ``` $ ./freedv_tx 800XA ../../raw/ve9qrp.raw - | ./freedv_rx 800XA - - -vv | aplay -f S16_LE $ ./freedv_tx 2400A ../../raw/ve9qrp.raw - | ./freedv_rx 2400A - - -vv | aplay -f S16_LE $ ./freedv_tx 2400B ../../raw/ve9qrp.raw - | ./freedv_rx 2400B - - -vv | aplay -f S16_LE ``` 1. LDPC encoded 4FSK, with framing: ``` $ cd ~/codec2/build_linux/src $ ./ldpc_enc /dev/zero - --code H_256_512_4 --testframes 200 | ./framer - - 512 5186 | ./fsk_mod 4 8000 100 1000 100 - - | ./ch - - --No -24 | ./fsk_demod -s 4 8000 100 - - | ./deframer - - 512 5186 | ./ldpc_dec - /dev/null --code H_256_512_4 --testframes SNR3k(dB): -7.74 C/No: 27.0 PAPR: 3.0 Raw Tbits: 100352 Terr: 6701 BER: 0.067 Coded Tbits: 50176 Terr: 139 BER: 0.003 Tpkts: 196 Tper: 4 PER: 0.020 ``` In this example the unique word is the 16 bit sequence `5186`. See also several ctests using these application. Other codes are also available: ``` $ ./ldpc_enc --listcodes H2064_516_sparse rate 0.80 (2580,2064) HRA_112_112 rate 0.50 (224,112) HRAb_396_504 rate 0.79 (504,396) H_256_768 rate 0.33 (768,256) H_256_512_4 rate 0.50 (512,256) HRAa_1536_512 rate 0.75 (2048,1536) H_128_256_5 rate 0.50 (256,128) ``` If you change the code you also need to change the `frameSizeBits` argument in `framer/deframer` (`512` in the example above). 1. The FSK/LDPC/framer steps above have been combined in a FreeDV API mode. See "FSK LDPC Raw Data Mode" in [README_data.md](README_data.md). 1. FSK modem C files in ```codec2/src```: | File | Description | | --- | --- | | fsk.c/fsk.h | core FSK modem library | | fsk_mod.c | command line modulator | | fsk_demod.c | command line demodulator | | fsk_get_test_bits.c | source of test bits | | fsk_put_test_bits.c | test bit sync, counts bit errors and packet errors | | fsk_mod_ext_vco.c | modulator that uses an external FSK oscillator | | framer.c | adds a unique word to a frame of bits to implement frame sync for LDPC codewords | | deframer.c | locates and strips a unique word to implement frame sync for LDPC codewords | | tollr.c | converts bits to LLRs for testing LDPC framing | 1. GNU Octave files in ```codec2/octave```: | File | Description | | --- | --- | | fsk_lib.m | Core FSK modem library | | fsk_lib_demo.m | A demonstration of fsk_lib, runs a single point BER test | | fsk_demod_file.m | Demodulates FSK signals from a file, useful for debugging FSK waveforms | | tfsk.m | automated test that compares the C and Octave versions of the modem | | fsk_lib_ldpc_demo.m | CML library LLR routines and LDPC codes with fsk_lib.m | You can run many of them from the Octave command line: ``` $ octave --no-gui octave:1> fsk_lib_demo ``` 1. A suite of automated ctests that exercise the C and Octave code: ``` $ cd ~/codec2/build_linux $ ctest -R test_fsk 1/9 Test #39: test_fsk_lib ...................... Passed 3.37 sec 3/9 Test #41: test_fsk_modem_octave_port ........ Passed 4.17 sec 4/9 Test #42: test_fsk_modem_mod_demod .......... Passed 0.06 sec 5/9 Test #43: test_fsk_2fsk_ber ................. Passed 0.24 sec 6/9 Test #44: test_fsk_4fsk_ber ................. Passed 0.12 sec 7/9 Test #45: test_fsk_4fsk_ber_negative_freq ... Passed 0.07 sec 8/9 Test #46: test_fsk_4fsk_lockdown ............ Passed 2.84 sec 9/9 Test #47: test_fsk_vhf_framer ............... Passed 0.06 sec ``` These are written in ```codec2/CmakeLists.txt```, inspect them to find out how we test the modem. 1. ```fsk_demod_file.m``` is useful for peering inside the modem, for example when debugging. ``` $ cd ~/codec2/build_linux/src $ ./fsk_get_test_bits - 1000 | ./fsk_mod 2 8000 100 1000 1000 - ../../octave/fsk.s16 $ octave --no-gui octave:1> fsk_demod_file("fsk.s16",format="s16",8000,100,2) ``` ## Further Reading Here are some links to projects and blog posts that use this modem: 1. [Horus Binary](https://github.com/projecthorus/horusbinary) High Altitude Balloon (HAB) telemetry protocol, 3 second updates, works at 7dB lower SNR that RTTY. 1. [Testing HAB Telemetry, Horus binary waveform](http://www.rowetel.com/?p=5906) 1. A really useful reference on a variety of modulation techniques from [Atlanta DSP](http://www.atlantarf.com/FSK_Modulation.php). I keep this handy when experimenting with modems. 1. The [RTTY modem project](http://www.rowetel.com/?p=4629) that kicked off the FSK modem work. 1. [Wenet](https://github.com/projecthorus/wenet) - high speed SSTV images from balloons at the edge of space 1. [Wenet High speed SSTV images](http://www.rowetel.com/?p=5344) 1. [FreeDV 2400A and 2400B](http://www.rowetel.com/?p=5219), digital speech for VHF/UHF radios. 1. [HF FSK with Rpitx](http://www.rowetel.com/?p=6317), a zero hardware FSK transmitter using a Pi 1. [Eb/No and SNR worked Example](http://www.rowetel.com/wordpress/?p=4621) 1. [FSK LLR LDPC Code Experiments](https://github.com/drowe67/codec2/pull/129) 1. [FreeDV API FSK LDPC Raw Data Mode](README_data.md) codec2-1.2.0/README_ofdm.md000066400000000000000000000243601445607075400151560ustar00rootroot00000000000000# README_ofdm An Orthogonal Frequency Division Multiplexed (OFDM) modem designed for digital voice over HF SSB. Typical configuration for FreeDV 700D is 700 bit/s voice, a rate 0.5 LDPC code, and 1400 bit/s raw data rate over the channel. The OFDM modem was first implemented in GNU Octave, then ported to C. Algorithm development is generally easier in Octave, but for real time work we need the C version. Automated units tests ensure the operation of the Octave and C versions are identical. ## Credits Steve, David, Don, Richard ## References 1. Spreadsheet describing the [waveform design](doc/modem_codec_frame_design.ods) The OFDM tab descrives the baseline 700D OFDM waveform. 1. This modem can be used for sending [raw data frames](README_data.md) over HF channels. 1. [Towards FreeDV 700D](https://www.rowetel.com/?p=5573) 1. [FreeDV 700D - First Over The Air Tests](https://www.rowetel.com/?p=5630) 1. [Steve Ports an OFDM modem from Octave to C](https://www.rowetel.com/?p=5824) 1. [Modems for HF Digital Voice Part 1](http://www.rowetel.com/wordpress/?p=5420) 1. [Modems for HF Digital Voice Part 2](http://www.rowetel.com/wordpress/?p=5448) # Examples Built as part of codec2-dev, see [README](README.md) for build instructions. 1. Generate 10 seconds of test frame bits, modulate, and play audio out of sound device (SoX v14.4.2): ``` $ build_linux/src$ ./ofdm_mod --in /dev/zero --testframes 10 | play --type s16 --rate 8000 --channels 2 - ``` 1. Generate 10 seconds of uncoded test frame bits, modulate, demodulate, count errors: ``` $ build_linux/src$ ./ofdm_mod --in /dev/zero --testframes 10 | ./ofdm_demod --out /dev/null --testframes --verbose 1 --log demod_dump.txt ``` Use Octave to look at plots of C modem operation: ``` $ cd ../../octave $ octave --no-gui octave:1> ofdm_demod_c("../build_linux/src/demod_dump.txt") ``` 1. Run Octave versions of mod and demod (called tx and rx to avoid namespace clashes in Octave): ``` $ cd ~/octave $ octave --no-gui octave:1> ofdm_tx("ofdm_test.raw","700D",10) octave:1> ofdm_rx("ofdm_test.raw") ``` The Octave modulator ofdm_tx can simulate channel impairments, for example AWGN noise at 4dB SNR: ``` octave:1> ofdm_tx("ofdm_test.raw", "700D", 10, 4) ``` The Octave versions use the same test frames as C so can interoperate. ``` build_linux/src$ ./ofdm_demod --in ../../octave/ofdm_test.raw --out /dev/null --testframes --verbose 1 ``` 1. Run mod/demod with LDPC FEC; 60 seconds, 3dB SNR: ``` octave:6> ofdm_ldpc_tx('ofdm_test.raw',"700D",60,3) octave:7> ofdm_ldpc_rx('ofdm_test.raw',"700D") ``` C demodulator/LDPC decoder: ``` build_linux/src$ ./ofdm_demod --in ../../octave/ofdm_test.raw --out /dev/null --verbose 1 --testframes --ldpc ``` 1. Pass Codec 2 700C compressed speech through OFDM modem: ``` build_linux/src$ ./c2enc 700C ../../raw/ve9qrp_10s.raw - --bitperchar | ./ofdm_mod --ldpc | ./ofdm_demod --ldpc | ./c2dec 700C - - --bitperchar | play --type s16 --rate 8000 --channels 1 - ``` 1. Listen to signal through simulated fading channel in C: ``` build_linux/src$ ./c2enc 700C ../../raw/ve9qrp_10s.raw - --bitperchar | ./ofdm_mod --ldpc | ./ch - - --No -20 --mpg -f -5 | aplay -f S16 ``` 1. Run test frames through simulated channel in C: ``` build_linux/src$ ./ofdm_mod --in /dev/zero --ldpc --testframes 20 | ./ch - - --No -24 -f -10 --mpp | ./ofdm_demod --out /dev/null --testframes --verbose 1 --ldpc ``` 1. Run codec voice through simulated fast fading channel, just where it starts to fall over: ``` build_linux/src$ ./c2enc 700C ../../raw/ve9qrp.raw - --bitperchar | ./ofdm_mod --ldpc | ./ch - - --No -24 -f -10 --mpp | ./ofdm_demod --ldpc --verbose 1 | ./c2dec 700C - - --bitperchar | aplay -f S16 ``` 1. FreeDV 1600 on the same channel conditions, roughly same quality at 8dB higher SNR: ``` build_linux/src$ ./freedv_tx 1600 ../../raw/ve9qrp_10s.raw - | ./ch - - --No -30 -f -10 --mpp | ./freedv_rx 1600 - - | aplay -f S16 ``` 1. Using FreeDV API test programs: ``` build_linux/src$ ./freedv_tx 700D ../../raw/hts1a.raw - --testframes | ./freedv_rx 700D - /dev/null --testframes build_linux/src$ ./freedv_tx 700D ../../raw/hts1a.raw - | ./freedv_rx 700D - - | aplay -f S16 build_linux/src$ ./freedv_tx 700D ../../raw/ve9qrp.raw - | ./ch - - --No -26 -f -10 --mpp | ./freedv_rx 700D - - | aplay -f S16 ``` ## FreeDV 2020 extensions 1. 20.5ms symbol period, 31 carrier waveform, (504,396) code, but only 312 data bits used, so we don't send unused data bits. This means we need less carriers (so more power per carrier), and code rate is increased slightly: ``` build_linux/src$ ./ofdm_mod --in /dev/zero --testframes 300 --mode 2020 --ldpc 1 --verbose 1 | ./ch - - --No -22 -f 10 --ssbfilt 1 | ./ofdm_demod --out /dev/null --testframes --mode 2020 --verbose 1 --ldpc SNR3k(dB): 2.21 C/No: 37.0 PAPR: 9.6 BER......: 0.0505 Tbits: 874020 Terrs: 44148 Coded BER: 0.0096 Tbits: 649272 Terrs: 6230 ``` ## Acquisition tests 1. Acquisition (getting sync) can be problematic in fading channels. Some special tests have been developed, that measure acquisition time on off air 700D samples at different time offsets: ``` octave:61> ofdm_ldpc_rx("../wav/vk2tpm_004.wav", "700D", "", 5, 4) build_linux/src$ ./ofdm_demod --in ../../wav/vk2tpm_004.wav --out /dev/null --verbose 2 --ldpc --start_secs 5 --len_secs 4 ``` 1. Different time offsets effectively tests the ability to sync on fading channel in different states. Stats for a series of these tests can be obtained with: ``` octave:61> ofdm_time_sync("../wav/vk2tpm_004.wav", 30) pass: 30 fails: 0 mean: 1.35 var 0.51 ``` ## Octave Acceptance Tests Here are some useful tests for the Octave, uncoded modem. The rate 1/2 LDPC code can correct up to about 10% raw BER, so a good test is to run the modem at Eb/No operating points that produce just less that BER=0.1. The BER2 measure truncates the effect of any start up transients, e.g. as the frequency offset is tracked out. 1. HF Multipath: ``` octave:580> ofdm_tx("ofdm_test.raw","700D",60,2,'mpm',20) octave:581> ofdm_rx("ofdm_test.raw") BER2.: 0.0803 Tbits: 84728 Terrs: 6803 ``` 1. AWGN: ``` octave:582> ofdm_tx("ofdm_test.raw","700D",60,-2,'awgn') octave:583> ofdm_rx("ofdm_test.raw") BER2.: 0.0885 Tbits: 84252 Terrs: 7459 ``` ## C Acceptance Tests Here are some useful tests for the LDPC coded C version of the modem, useful to verify any changes. 1. AWGN channel, -2dB: ``` ./ofdm_mod --in /dev/zero --ldpc --testframes 60 --txbpf | ./ch - - --No -20 -f -10 | ./ofdm_demod --out /dev/null --testframes --verbose 1 --ldpc SNR3k(dB): -1.85 C/No: 32.9 PAPR: 9.8 BER......: 0.0815 Tbits: 98532 Terrs: 8031 Coded BER: 0.0034 Tbits: 46368 Terrs: 157 ``` 1. Fading HF channel: ``` ./ofdm_mod --in /dev/zero --ldpc --testframes 60 --txbpf | ./ch - - --No -24 -f -10 --fast | ./ofdm_demod --out /dev/null --testframes --verbose 1 --ldpc SNR3k(dB): 2.15 C/No: 36.9 PAPR: 9.8 BER......: 0.1015 Tbits: 88774 Terrs: 9012 Coded BER: 0.0445 Tbits: 41776 Terrs: 1860 ``` Note: 10% Raw BER operating point on both channels, as per design. # Data Modes The OFDM modem can also support datac1/datac2/datac3 modes for packet data. The OFDM modem was originally designed for very short (28 bit) voice codec packets. For data, packets of hundreds to thousands of bits a desirable so we can use long, powerful FEC codewords, and reduce overhead. The datac1/datac2/datac3 QPSK modes are currently under development. Here is an example of running the datac3 mode in a low SNR AWGN channel: ``` ./src/ofdm_mod --mode datac3 --ldpc --in /dev/zero --testframes 60 --verbose 1 | ./src/ch - - --No -20 | ./src/ofdm_demod --mode datac3 --ldpc --out /dev/null --testframes -v 1 SNR3k(dB): -3.54 C/No: 31.2 PAPR: 10.4 BER......: 0.1082 Tbits: 36096 Terrs: 3905 Tpackets: 47 Coded BER: 0.0000 Tbits: 12032 Terrs: 0 ``` Note despite the raw BER of 10%, 47/50 packets are received error free. # C Code | File | Description | | :-- | :-- | | ofdm.c | OFDM library | | codec2_ofdm.h | API header file for OFDM library | | ofdm_get_test_bits | Generate OFDM test frames | | ofdm_mod | OFDM modulator command line program | | ofdm_demod | OFDM demodulator command line program, supports uncoded (raw) and LDPC coded test frames, LDPC decoding of codec data, and can output LLRs to external LDPC decoder | | ofdm_put_test_bits | Measure BER in OFDM test frames | | unittest/tofdm | Run C port of modem to compare with octave version (see octave/tofdm) | | ch | C channel simulator | # Octave Scripts | File | Description | | :-- | :-- | | ofdm_lib | OFDM library | | ofdm_dev | Used for modem development, run various simulations | | ofdm_tx | Modulate test frames to a file of sample, cam add channel impairments | | ofdm_rx | Demod from a sample file and count errors | | tofdm | Compares Octave and C ports of modem | | ofdm_ldpc_tx | OFDM modulator with LDPC FEC | | ofdm_ldpc_rx | OFDM demodulator with LDPC FEC | ## Specifications Nominal FreeDV 700D configuration: | Parameter | Value | | :-- | :-- | | Modem | OFDM, pilot assisted coherent QPSK | | Payload bits/s | 700 | | Text bits/s | 25 (note 4) | | Unique Word | 10 bits | | Carriers | 17 | | RF bandwidth | 944 Hz | | Symbol period | 18ms | Cyclic Prefix | 2ms (note 1) | Pilot rate | 1 in every 8 symbols | | Frame Period | 160ms | | FEC | rate 1/2 (224,112) LDPC | | Operating point | | | AWGN | Eb/No -0.5dB SNR(3000Hz): -2.5dB (note 2) | | HF Multipath | Eb/No 4.0dB SNR(3000Hz): 2.0dB (note 3) | | Freq offset | +/- 60 Hz (sync range) | | Freq drift | +/- 0.2 Hz/s (for 0.5 dB loss) | | Sample clock error | 1000 ppm | Notes: 1. Modem can cope with up to 2ms of multipath 1. ``` Ideal SNR(3000) = Eb/No + 10*log10(Rb/B) = -1 + 10*log10(1400/3000) = -4.3 dB ``` So we have about 1.8dB overhead for synchronisation, implementation loss, and the text channel. 1. "CCIR Poor" HF Multipath channel used for testing is two path, 1Hz Doppler, 1ms delay. 1. The text channel is an auxiliary channel, unprotected by FEC, that typically carries callsign/location information for Ham stations. codec2-1.2.0/cmake/000077500000000000000000000000001445607075400137455ustar00rootroot00000000000000codec2-1.2.0/cmake/GetDependencies.cmake.in000066400000000000000000000020221445607075400203760ustar00rootroot00000000000000# As this script is run in a new cmake instance, it does not have access to # the existing cache variables. Pass them in via the configure_file command. set(CMAKE_BINARY_DIR @CMAKE_BINARY_DIR@) set(CMAKE_SOURCE_DIR @CMAKE_SOURCE_DIR@) set(UNIX @UNIX@) set(WIN32 @WIN32@) set(CMAKE_CROSSCOMPILING @CMAKE_CROSSCOMPILING@) set(CMAKE_FIND_LIBRARY_SUFFIXES @CMAKE_FIND_LIBRARY_SUFFIXES@) set(CMAKE_FIND_LIBRARY_PREFIXES @CMAKE_FIND_LIBRARY_PREFIXES@) set(CMAKE_SYSTEM_LIBRARY_PATH @CMAKE_SYSTEM_LIBRARY_PATH@) set(CMAKE_FIND_ROOT_PATH @CMAKE_FIND_ROOT_PATH@) set(CODEC2_DLL ${CMAKE_BINARY_DIR}/src/libcodec2.dll) include(${CMAKE_SOURCE_DIR}/cmake/GetPrerequisites.cmake) get_prerequisites(${CODEC2_DLL} _deps 1 0 "" "") foreach(_runtime ${_deps}) message("Looking for ${_runtime}") find_library(RUNTIME_${_runtime} ${_runtime}) message("${RUNTIME_${_runtime}}") if(RUNTIME_${_runtime}) file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/bin" TYPE EXECUTABLE FILES "${RUNTIME_${_runtime}}") endif() endforeach() codec2-1.2.0/cmake/config.h.in000066400000000000000000000017071445607075400157750ustar00rootroot00000000000000/*-------------------------------------------------------------------------- ** This file is autogenerated from config.h.in ** during the cmake configuration of your project. If you need to make changes ** edit the original file NOT THIS FILE. ** --------------------------------------------------------------------------*/ #ifndef _CONFIGURATION_HEADER_GUARD_H_ #define _CONFIGURATION_HEADER_GUARD_H_ #define SIZEOF_INT @SIZEOF_INT@ #cmakedefine HAVE_STDLIB_H @HAVE_STDLIB_H@ #cmakedefine HAVE_STRING_H @HAVE_STRING_H@ #cmakedefine HAVE_FLOOR @HAVE_FLOOR@ #cmakedefine HAVE_CEIL @HAVE_CEIL@ #cmakedefine HAVE_MEMSET @HAVE_MEMSET@ #cmakedefine HAVE_POW @HAVE_POW@ #cmakedefine HAVE_SQRT @HAVE_SQRT@ #cmakedefine HAVE_SIN @HAVE_SIN@ #cmakedefine HAVE_COS @HAVE_COS@ #cmakedefine HAVE_ATAN2 @HAVE_ATAN2@ #cmakedefine HAVE_LOG10 @HAVE_LOG10@ #cmakedefine HAVE_ROUND @HAVE_ROUND@ #cmakedefine HAVE_GETOPT @HAVE_GETOPT@ #endif codec2-1.2.0/cmake/version.h.in000066400000000000000000000024121445607075400162070ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: version.h AUTHOR......: Tomas Härdin DATE CREATED: 03 November 2017 Codec 2 VERSION #defines \*---------------------------------------------------------------------------*/ /* Copyright (C) 2017 Tomas Härdin All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ //this functions both as an include guard and your typical HAVE macro #ifndef CODEC2_HAVE_VERSION #define CODEC2_HAVE_VERSION #define CODEC2_VERSION_MAJOR @CODEC2_VERSION_MAJOR@ #define CODEC2_VERSION_MINOR @CODEC2_VERSION_MINOR@ #cmakedefine CODEC2_VERSION_PATCH @CODEC2_VERSION_PATCH@ #define CODEC2_VERSION "@CODEC2_VERSION@" #endif //CODEC2_HAVE_VERSIONcodec2-1.2.0/codec2.pc.in000066400000000000000000000004631445607075400147600ustar00rootroot00000000000000prefix=@CMAKE_INSTALL_PREFIX@ libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@ includedir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@/codec2 Name: codec2 Description: A speech codec for 2400 bit/s and below Requires: Version: @CODEC2_VERSION@ Libs: -L${libdir} -lcodec2 Cflags: -I${includedir} codec2-1.2.0/demo/000077500000000000000000000000001445607075400136115ustar00rootroot00000000000000codec2-1.2.0/demo/CMakeLists.txt000066400000000000000000000013431445607075400163520ustar00rootroot00000000000000add_definitions(-DFLOATING_POINT -DVAR_ARRAYS) include_directories(../src) add_executable(c2demo c2demo.c) target_link_libraries(c2demo codec2) add_executable(freedv_700d_tx freedv_700d_tx.c) target_link_libraries(freedv_700d_tx codec2) add_executable(freedv_700d_rx freedv_700d_rx.c) target_link_libraries(freedv_700d_rx codec2) add_executable(freedv_datac1_tx freedv_datac1_tx.c) target_link_libraries(freedv_datac1_tx codec2) add_executable(freedv_datac1_rx freedv_datac1_rx.c) target_link_libraries(freedv_datac1_rx codec2) add_executable(freedv_datac0c1_tx freedv_datac0c1_tx.c) target_link_libraries(freedv_datac0c1_tx codec2) add_executable(freedv_datac0c1_rx freedv_datac0c1_rx.c) target_link_libraries(freedv_datac0c1_rx codec2) codec2-1.2.0/demo/c2demo.c000066400000000000000000000043711445607075400151330ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: c2demo.c AUTHOR......: David Rowe DATE CREATED: 15/11/2010 Encodes and decodes a file of raw speech samples using Codec 2. Demonstrates use of Codec 2 function API. cd codec2/build_linux ./demo/c2demo ../raw/hts1a.raw his1a_out.raw aplay -f S16_LE hts1a_out.raw \*---------------------------------------------------------------------------*/ /* Copyright (C) 2010 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include "codec2.h" int main(int argc, char *argv[]) { struct CODEC2 *codec2; FILE *fin; FILE *fout; if (argc != 3) { printf("usage: %s InputRawSpeechFile OutputRawSpeechFile\n", argv[0]); exit(1); } if ((fin = fopen(argv[1], "rb")) == NULL) { fprintf(stderr, "Error opening input speech file: %s\n", argv[1]); exit(1); } if ((fout = fopen(argv[2], "wb")) == NULL) { fprintf(stderr, "Error opening output speech file: %s\n", argv[2]); exit(1); } /* Note only one set of Codec 2 states is required for an encoder and decoder pair. */ codec2 = codec2_create(CODEC2_MODE_1300); size_t nsam = codec2_samples_per_frame(codec2); short speech_samples[nsam]; /* Bits from the encoder are packed into bytes */ unsigned char compressed_bytes[codec2_bytes_per_frame(codec2)]; while (fread(speech_samples, sizeof(short), nsam, fin) == nsam) { codec2_encode(codec2, compressed_bytes, speech_samples); codec2_decode(codec2, speech_samples, compressed_bytes); fwrite(speech_samples, sizeof(short), nsam, fout); } codec2_destroy(codec2); fclose(fin); fclose(fout); return 0; } codec2-1.2.0/demo/freedv_700d_rx.c000066400000000000000000000032601445607075400164740ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_700d_rx.c AUTHOR......: David Rowe DATE CREATED: April 2021 Demo receive program for FreeDV API (700D mode), see freedv_700d_tx.c for instructions. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2021 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include "freedv_api.h" int main(int argc, char *argv[]) { struct freedv *freedv; freedv = freedv_open(FREEDV_MODE_700D); assert(freedv != NULL); /* note API functions to tell us how big our buffers need to be */ short speech_out[freedv_get_n_max_speech_samples(freedv)]; short demod_in[freedv_get_n_max_modem_samples(freedv)]; size_t nin, nout; nin = freedv_nin(freedv); while (fread(demod_in, sizeof(short), nin, stdin) == nin) { nout = freedv_rx(freedv, speech_out, demod_in); nin = freedv_nin(freedv); /* call me on every loop! */ fwrite(speech_out, sizeof(short), nout, stdout); } freedv_close(freedv); return 0; } codec2-1.2.0/demo/freedv_700d_rx.py000077500000000000000000000025711445607075400167110ustar00rootroot00000000000000#!/usr/bin/env python3 ''' Demo receive program for FreeDV API 700D mode. cd ~/codec2/build_linux cat ../raw/ve9qrp_10s.raw | ./demo/freedv_700d_tx | ../demo/freedv_700d_rx.py | aplay -f S16_LE Credits: Thanks DJ2LS, xssfox, VK5QI ''' import ctypes from ctypes import * import sys import pathlib import platform if platform.system() == 'Darwin': libname = pathlib.Path().absolute() / "src/libcodec2.dylib" else: libname = pathlib.Path().absolute() / "src/libcodec2.so" # See: https://docs.python.org/3/library/ctypes.html c_lib = ctypes.CDLL(libname) c_lib.freedv_open.argype = [c_int] c_lib.freedv_open.restype = c_void_p c_lib.freedv_get_n_max_speech_samples.argtype = [c_void_p] c_lib.freedv_get_n_max_speech_samples.restype = c_int c_lib.freedv_nin.argtype = [c_void_p] c_lib.freedv_nin.restype = c_int c_lib.freedv_rx.argtype = [c_void_p, c_char_p, c_char_p] c_lib.freedv_rx.restype = c_int FREEDV_MODE_700D = 7 # from freedv_api.h freedv = cast(c_lib.freedv_open(FREEDV_MODE_700D), c_void_p) n_max_speech_samples = c_lib.freedv_get_n_max_speech_samples(freedv) speech_out = create_string_buffer(2*n_max_speech_samples) while True: nin = c_lib.freedv_nin(freedv) demod_in = sys.stdin.buffer.read(nin*2) if len(demod_in) == 0: quit() nout = c_lib.freedv_rx(freedv, speech_out, demod_in) sys.stdout.buffer.write(speech_out[:nout*2]) codec2-1.2.0/demo/freedv_700d_tx.c000066400000000000000000000037131445607075400165010ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_700d_tx.c AUTHOR......: David Rowe DATE CREATED: April 2021 Demo transmit program using the FreeDV API (700D mode). usage: cd ~/codec2/build_linux cat ../raw/ve9qrp_10s.raw | ./demo/freedv_700d_tx | ./demo/freedv_700d_rx | aplay -f S16_LE Listen to the modulated Tx signal: cat ../raw/ve9qrp_10s.raw | ./demo/freedv_700d_tx | aplay -f S16_LE \*---------------------------------------------------------------------------*/ /* Copyright (C) 2021 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include "freedv_api.h" int main(int argc, char *argv[]) { struct freedv *freedv; freedv = freedv_open(FREEDV_MODE_700D); assert(freedv != NULL); /* handy functions to set buffer sizes */ int n_speech_samples = freedv_get_n_speech_samples(freedv); short speech_in[n_speech_samples]; int n_nom_modem_samples = freedv_get_n_nom_modem_samples(freedv); short mod_out[n_nom_modem_samples]; /* OK main loop --------------------------------------- */ while (fread(speech_in, sizeof(short), n_speech_samples, stdin) == n_speech_samples) { freedv_tx(freedv, mod_out, speech_in); fwrite(mod_out, sizeof(short), n_nom_modem_samples, stdout); } freedv_close(freedv); return 0; } codec2-1.2.0/demo/freedv_datac0c1_rx.c000066400000000000000000000100161445607075400173770ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_datac0c1_rx.c AUTHOR......: David Rowe DATE CREATED: Dec 2021 Demonstrates receiving frames of raw data bytes using the FreeDV API. Two parallel receivers are running, so we can receive either DATAC0 or DATAC1 frames. Demonstrates a common use case for HF data - the ability to receive signalling as well as payload data frames. usage: cd codec2/build_linux ./demo/freedv_datacc01_tx | ./demo/freedv_datac0c1_rx Give it a hard time with some channel noise, frequency offset, and sample clock offsets: ./demo/freedv_datac0c1_tx | ./src/cohpsk_ch - - -24 -f 20 --Fs 8000 | sox -t .s16 -c 1 -r 8000 - -t .s16 -c 1 -r 8008 - | ./demo/freedv_datac0c1_rx Replace the final line with "aplay -f S16" to listen to the simulated Rx signal. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2021 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include "freedv_api.h" #define NBUF 160 int run_receiver(struct freedv *freedv, short buf[], short demod_in[], int *pn, uint8_t bytes_out[]); int main(int argc, char *argv[]) { // set up DATAC0 Rx struct freedv *freedv_c0 = freedv_open(FREEDV_MODE_DATAC0); assert(freedv_c0 != NULL); freedv_set_frames_per_burst(freedv_c0, 1); freedv_set_verbose(freedv_c0, 0); int bytes_per_modem_frame_c0 = freedv_get_bits_per_modem_frame(freedv_c0) / 8; uint8_t bytes_out_c0[bytes_per_modem_frame_c0]; short demod_in_c0[freedv_get_n_max_modem_samples(freedv_c0)]; // set up DATAC1 Rx struct freedv *freedv_c1 = freedv_open(FREEDV_MODE_DATAC1); assert(freedv_c1 != NULL); freedv_set_frames_per_burst(freedv_c1, 1); freedv_set_verbose(freedv_c1, 0); int bytes_per_modem_frame_c1 = freedv_get_bits_per_modem_frame(freedv_c1) / 8; uint8_t bytes_out_c1[bytes_per_modem_frame_c1]; short demod_in_c1[freedv_get_n_max_modem_samples(freedv_c1)]; // number of samples in demod_in buffer for each Rx int n_c0 = 0; int n_c1 = 0; // number of frames received in each mode int c0_frames = 0; int c1_frames = 0; short buf[NBUF]; // read a fixed buffer from stdin, use that to fill c0 and c1 demod_in buffers while (fread(buf, sizeof(short), NBUF, stdin) == NBUF) { if (run_receiver(freedv_c0, buf, demod_in_c0, &n_c0, bytes_out_c0)) { fprintf(stderr, "DATAC0 frame received!\n"); c0_frames++; } if (run_receiver(freedv_c1, buf, demod_in_c1, &n_c1, bytes_out_c1)) { fprintf(stderr, "DATAC1 frame received!\n"); c1_frames++; } } fprintf(stderr, "DATAC0 Frames: %d DATAC1 Frames: %d\n", c0_frames, c1_frames); freedv_close(freedv_c0); freedv_close(freedv_c1); return 0; } int run_receiver(struct freedv *freedv, short buf[], short demod_in[], int *pn, uint8_t bytes_out[]) { int n = *pn; int nbytes_out = 0; int nin; // NBUF new samples into DATAC1 Rx memcpy(&demod_in[n], buf, sizeof(short) * NBUF); n += NBUF; assert(n <= freedv_get_n_max_modem_samples(freedv)); nin = freedv_nin(freedv); while (n > nin) { nbytes_out = freedv_rawdatarx(freedv, bytes_out, demod_in); // nin samples were read n -= nin; assert(n >= 0); memmove(demod_in, &demod_in[nin], sizeof(short) * n); nin = freedv_nin(freedv); } *pn = n; return nbytes_out; } codec2-1.2.0/demo/freedv_datac0c1_tx.c000066400000000000000000000065771445607075400174220ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_datac0c1_tx.c AUTHOR......: David Rowe DATE CREATED: Dec 2021 Transmitting alternate frames of two different raw data modes. See freedv_datac0c1_rx.c \*---------------------------------------------------------------------------*/ /* Copyright (C) 2021 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include "freedv_api.h" #include "ofdm_internal.h" #define FRAMES 10 void send_burst(struct freedv *freedv); int main(void) { struct freedv *freedv_c0, *freedv_c1; freedv_c0 = freedv_open(FREEDV_MODE_DATAC0); assert(freedv_c0 != NULL); freedv_c1 = freedv_open(FREEDV_MODE_DATAC1); assert(freedv_c1 != NULL); // send frames in different modes in random order int c0_frames = 0; int c1_frames = 0; while ((c0_frames < FRAMES) || (c1_frames < FRAMES)) { if (rand() & 1) { if (c0_frames < FRAMES) { send_burst(freedv_c0); c0_frames++; } } else { if (c1_frames < FRAMES) { send_burst(freedv_c1); c1_frames++; } } } freedv_close(freedv_c0); freedv_close(freedv_c1); return 0; } void send_burst(struct freedv *freedv) { size_t bits_per_frame = freedv_get_bits_per_modem_frame(freedv); size_t bytes_per_modem_frame = bits_per_frame / 8; size_t payload_bytes_per_modem_frame = bytes_per_modem_frame - 2; /* 16 bits used for the CRC */ size_t n_mod_out = freedv_get_n_tx_modem_samples(freedv); uint8_t bytes_in[bytes_per_modem_frame]; short mod_out_short[n_mod_out]; /* generate a test frame */ uint8_t testframe_bits[bits_per_frame]; ofdm_generate_payload_data_bits(testframe_bits, bits_per_frame); freedv_pack(bytes_in, testframe_bits, bits_per_frame); /* send preamble */ int n_preamble = freedv_rawdatapreambletx(freedv, mod_out_short); fwrite(mod_out_short, sizeof(short), n_preamble, stdout); /* The raw data modes require a CRC in the last two bytes */ uint16_t crc16 = freedv_gen_crc16(bytes_in, payload_bytes_per_modem_frame); bytes_in[bytes_per_modem_frame - 2] = crc16 >> 8; bytes_in[bytes_per_modem_frame - 1] = crc16 & 0xff; /* modulate and send a data frame */ freedv_rawdatatx(freedv, mod_out_short, bytes_in); fwrite(mod_out_short, sizeof(short), n_mod_out, stdout); /* send postamble */ int n_postamble = freedv_rawdatapostambletx(freedv, mod_out_short); fwrite(mod_out_short, sizeof(short), n_postamble, stdout); /* create some silence between bursts */ int inter_burst_delay_ms = 200; int samples_delay = FREEDV_FS_8000 * inter_burst_delay_ms / 1000; short sil_short[samples_delay]; for (int i = 0; i < samples_delay; i++) sil_short[i] = 0; fwrite(sil_short, sizeof(short), samples_delay, stdout); } codec2-1.2.0/demo/freedv_datac1_rx.c000066400000000000000000000035741445607075400171670ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_datac1_rx.c AUTHOR......: David Rowe DATE CREATED: April 2021 Demonstrates receiving frames of raw data bytes using the FreeDV API. See freedv_datac1_tx.c for instructions. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2021 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include "freedv_api.h" int main(int argc, char *argv[]) { struct freedv *freedv; freedv = freedv_open(FREEDV_MODE_DATAC1); assert(freedv != NULL); freedv_set_frames_per_burst(freedv, 1); freedv_set_verbose(freedv, 2); int bytes_per_modem_frame = freedv_get_bits_per_modem_frame(freedv) / 8; uint8_t bytes_out[bytes_per_modem_frame]; short demod_in[freedv_get_n_max_modem_samples(freedv)]; size_t nin, nbytes_out; nin = freedv_nin(freedv); while (fread(demod_in, sizeof(short), nin, stdin) == nin) { nbytes_out = freedv_rawdatarx(freedv, bytes_out, demod_in); nin = freedv_nin(freedv); /* must call this every loop */ if (nbytes_out) { /* don't output CRC */ fwrite(bytes_out, sizeof(uint8_t), nbytes_out - 2, stdout); } } freedv_close(freedv); return 0; } codec2-1.2.0/demo/freedv_datac1_tx.c000066400000000000000000000064551445607075400171720ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_datac1_tx.c AUTHOR......: David Rowe DATE CREATED: April 2021 Demonstrates transmitting frames of raw data bytes using the FreeDV API datac1 mode. The data on stdin is transmitted as a sequence of modulated bursts. Format of each burst: ...|preamble|data frame|postamble|silence|.... There is just one data frame per burst in this demo. usage: cd codec2/build_linux head -c $((510*10)) binaryIn.bin cat binaryIn.bin | ./demo/freedv_datac1_tx | ./demo/freedv_datac1_rx > binaryOut.bin diff binaryIn.bin binaryOut.bin Listen to the modulated Tx signal: cat binaryIn.bin | ./demo/freedv_datac1_tx | aplay -f S16_LE \*---------------------------------------------------------------------------*/ /* Copyright (C) 2021 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include "freedv_api.h" int main(int argc, char *argv[]) { struct freedv *freedv; freedv = freedv_open(FREEDV_MODE_DATAC1); assert(freedv != NULL); size_t bytes_per_modem_frame = freedv_get_bits_per_modem_frame(freedv) / 8; size_t payload_bytes_per_modem_frame = bytes_per_modem_frame - 2; /* 16 bits used for the CRC */ size_t n_mod_out = freedv_get_n_tx_modem_samples(freedv); uint8_t bytes_in[bytes_per_modem_frame]; short mod_out_short[n_mod_out]; for (int b = 0; b < 10; b++) { /* send preamble */ int n_preamble = freedv_rawdatapreambletx(freedv, mod_out_short); fwrite(mod_out_short, sizeof(short), n_preamble, stdout); /* read our input data frame from stdin */ size_t nread = fread(bytes_in, sizeof(uint8_t), payload_bytes_per_modem_frame, stdin); if (nread != payload_bytes_per_modem_frame) break; /* The raw data modes require a CRC in the last two bytes */ uint16_t crc16 = freedv_gen_crc16(bytes_in, payload_bytes_per_modem_frame); bytes_in[bytes_per_modem_frame - 2] = crc16 >> 8; bytes_in[bytes_per_modem_frame - 1] = crc16 & 0xff; /* modulate and send a data frame */ freedv_rawdatatx(freedv, mod_out_short, bytes_in); fwrite(mod_out_short, sizeof(short), n_mod_out, stdout); /* send postamble */ int n_postamble = freedv_rawdatapostambletx(freedv, mod_out_short); fwrite(mod_out_short, sizeof(short), n_postamble, stdout); /* create some silence between bursts */ int inter_burst_delay_ms = 200; int samples_delay = FREEDV_FS_8000 * inter_burst_delay_ms / 1000; short sil_short[samples_delay]; for (int i = 0; i < samples_delay; i++) sil_short[i] = 0; fwrite(sil_short, sizeof(short), samples_delay, stdout); } freedv_close(freedv); return 0; } codec2-1.2.0/doc/000077500000000000000000000000001445607075400134325ustar00rootroot00000000000000codec2-1.2.0/doc/c_tx_comp.png000066400000000000000000001067041445607075400161230ustar00rootroot00000000000000PNG  IHDR ?zj 2iCCPdefault_rgb.iccHgPY<@BPC*%Z(ҫ@PEl+4EE\"kE t,ʺqQAYp?{ossp e{bRɎ(tջ{i常r)teJOYLgWX\2XyKο,]~ )sT8بlOrTzV $G&D~SGfDnr&AltL:5204_gK!FgE_zs zt@WOm|:3z @(U t08|A $`(E`8@-hM<.L@ށA2@F 7 Bh( ʀrPT UAuP t݄84 }aXև0v}p4 ^O6< "@]p$BV)GVC!Bd h(&JerFTVT1 uՁECDh2Z@Ёht]nDѓw aa0Θ Lf3sӆL`X VkaӱJI%vG)p`\.Wk] p xq:o—;IA"X| q B+aH$͉^XvbqD%iRi/82! L ے&US{1O,BlXXؐ+ NP6Pr(3;Yq8WJ)Hq"HJ IKIJGJJIKa8y"Ֆ͒="{MvV.g)Ǘ+;-Hז,L_~NAQI!ER¬"CV1NLMZ)VL $L`V0{"eyeg :JJU*[5JLGU殖֢HVQ?ާ>حѩ1͒fX9֘&YF3U^FuX6m]}G1Չ93 |UҪU$]nnCM/OS~~>&   .y݆i񍪍&v\mu:ƑGLMv|253Θ՘lOv19|y-Եl^Zä́UUКij}ZhlfSoV6¶vʼn伲3صs-[{'BCSGhGfhgWΣ<lqu%V>svu.֪MZ26,b&*4r**4j:*@LMLyl,7*us\m|GD\bh$jR|Robrv`NJA0"`H*hL֧uӗ? ͌]֙ՙdKd'eo޴gTcOQ{rswol m ڳMu[NO [A^i۝;OrR V (m? Yrˆ[EEE[?Xި%%Ga%oDDiNe̲²7Yn\^{p(㐰­Rr_bULp]u[|͞iU-x4:zccǞ77Q'z̚KZ!'lsWnk]8q/v=s}ٚvZ{aԱC) _}ABEKr.]N<{%DƞWzuW8}nX8[[Mowf[@;]wv8d3tyoy02*|`a׏2-<>+|"ߵ~o /ۏ?yx??'󟓟O)M5MMqb݋ɗ)/f 櫳/ M^̛oy=}na>|ZZ.V|R?B, pHYs  tEXtSoftwareGPL Ghostscript 9.50]E IDATx?oX&2o+2LO"C0mo8 lIO`dop#{v=iT Qu`Th S4H/4fl萢XG_jLo`>;Pw@  5@pj;Pw@  5@pj;Pw@  5@pj;Pw@  5@pjlzl`0> t]?>>Ec[ݨXzx=f39ҜXV+R8kN5.a0ɑE8j!u)k]ik v8e|B~Zm\~Vƞ?lǍb|a+:??sd/9_u5wwŋȯi-EpEmaPxy^|;kS*4zT"IVD6!~EBׯ_?<<*HV<'N SQf9f)_"V1H-L,O LkTOĖa*-e{A6ע oΗ<<jvĿK 7oȿdgՏ9qSݟٻZ苊7dkStXn;)SH J!|n7~E pV|SV7&ct]}it䕯2&Aӑ XXƈ-9y[x=|G۟9wu/ @upq*!0Msy$WdZ[!\+bļ:???ht||ɿak%߼y#ÓPg9ׯeq D2Zk 2'''6,2~rx|||"WsξML|3*zQ&Ni`u 0-Uu}[EA M̨)PKmjoz4}Wi[nyuοdlr*%r4Jo,纮?g]ʋ~͛7۟;`M,˒7@]wuR&i[Sk2խP5^__ځjT"edx[sTJeÇ?nz+P{|_e7Fp/˿~7?wm[Ҵ_)V{ ױK׿M K߿~|oۦ7 ՓKM҉+%/+-jWZvJa*S Y+~c[ euZi 7ά31,^^JBMhqS+D0^ Ro j g<]ax-e"u=)6tQTᵔR@k΅hpȰ7c %%ڜ+-cq,ݻwB._~qqgg>\Ɵ7߬g;Qsr+Beٙ4=7Cv /`<.||7|?O!/HicۍZHQ)`FDy*ݗ_˫]Y*+e֏>SPx<~=Ç?x<7?B~}*w/ձ'6d#fŖ ˞}wq4|%+`{{M<]}?B<{,8/"c^z?O?ϟzd7yN\vǜ3ܡE7C1y_x XfnEҎJHcN9?Ld ի/B?>|BwSK={?g+-J)iFH*aQM^^uֱPkì2ˋ#C} _ȜLycV^}e ܋s҄N‰9|擉'ԕ6C$Ԯ'io k[) R"ɱɐ_SfOnYtkV3!zIY9+DܗVUV/j&I "tJ˒uY6qe獬F^z39㷿]bI]ܮ:͢s(B-\ǎ]J׳.@}%nqY!ÇoV0-'fNvo&Y` GvTf%^,o}}J|凣VK-TI*e!-[Y"UӮ8T ӧOyA" wH[>|믿>{իW}BF׫/P|2b[~o)lnqe`ĽKԹ1൤t>Z1wU 1T55/\ !nnn}'P/K27S טlchH:g|k{${-%Kj'l\ GpkUccu}^{ 9K=2uZʐeɔDq2!nTos2a+oQiDy7 h[c9*VQyBqtJzJ=iLM}>}@| 뷿ʇF?Xh쏹ęgEjwb/@Nx~5 5[ 5u,kFpBKhNvFpfd3D/vbif 6fHThpv4O[(yG!4kAp~QqvbfԄ%$QX6۪3*JCvD$C_Vڨ8t:=== ɉm2L&]{|e'''m !,Yr8fv,Dy6|z~i=Є֨.RRQz2j?<wVP 'ٙ*w 2(ݍ)Bx't(t:T^k8黻N wzO`te%ڷh}.B]x۽VSĄhّ?&%m[)0vw9;BX{y禃x,`l@u+!mrA9 B8owvWmSn7Mi3wJ2MӲ,4MӼs.{IkcFO95b4ɛ.~+5Mŋv[|||#aF#:۶Uր;VBwN .۪CxyF-}Z1U/i_W׭&Ty˫W]ו %T] 1hy 9deeY 47cB!)}TTW-!D1R^^#<Ҿ[X(j ѰwR\" 5]^]nd{YR4ԸW:kn׸'N#sOz} /y_q/ 5MTS ,%z5d ?+"7$*O3Kd! vj3RLB{WEWC6wk@po:*XB}@\$+"mRg&{F !4B<҄gO8 d23;20⎪2y6'w 7ZŚQ!!j|E~0;bܛ^ Ew";Y5O#3^ZQ;:(s¸CQțg*mN;w#ʞ@ Y,pPi=#30 zHDjZHv%@b:W $;CU KE=~L9*6Br[sj=T ވO>gKZYؼU\ˣQd&˫K!D˫+qm G^qUcss,˲m[ γ{JU'XoA_y|4E!#Kշ5Dž& ca=lmn~]zݲ,u;i2swN3Lkض8N5 C>$W4n$v8NOOOepxrr"#d2L&z=,]-R>'''m !y =1fڛU?\+GY f"N\q2?<Gq#C˲=s]n[5NeCPv!aC:Fp8]P0S.gN;}WYO/ z=0á̎f!n]םNiʰ.m~xxPfQ*T30 i Ԯ f B5=LT`0A9,nOUiMv:t*/5MqY4@q| WS"kt@^/fg?DbzE9uk5Ep8T H+Ilc۶S1eeKi+,۷e~pp0emA.cփ,:ݱa7`VJpv/Ki}4 Pu&eaeYiyqq!xu]0prj<R4_xnUG9nh4Rm[` YĪhf[L}N@Ujͅ+q*w.Sk%O4.(( BtBwIM,q_*gիAx'Q}yǥuFna [Yޮj3Z+^ffu|`'h IDAT OĺIpHt^tVRG|R^yS1F!R#j gt*EVXiiǛ(4Tզ7!]%ЄF~q)Q~fӧOB,Vxn]^oWBҧŽu&˫ˍm zyf*TL9Xc%^P-_Z-Je}vMYx` TTDLI(2/IjT %o8<3̐׋ٟ[s#U"#ڝ, kdv7aU;Và;ApG~ c.!c"ٝAw,Aww,F F8+ c`xfMJE+ah8;ޅhRv'Y@XL|b*04Kb9m"P ;.;t 4|tDN/5;*Iܱ05Re|I@쎥04yO 1g r 2Q@>w,&#>%m AwXRMc:ձ]h[wEpGQEcq MCpbj:$*ddw@&;A)w,AwQ+> dkU\$' U c%\Πf1;214Ɉ[uObP[WNBܱ}Rkz:ny"-Ͷdwf\3w,i;̬d(I ,?qh6 S}<O& [ Nw,X\dBUVʠ{<ONNcuy4|qphd2Yjjͦ7]]]mzjnBK!Z-&e=_ΧOֹUD'۬]Ӯ./[])GQKh}QjJ8jۻ8iZг|?>>>??Om{8ڶ]6"*ې9Mo2xݏQ_?)|,gtɲ #\$#痴 `8zg˗/eQ˅i>xyzms~߲,u;J8_Ya2㻻h$}X^BwG6 Wgh;l6pFF1{ݵzf:ͨ!8މ҄e@vLTmApzz*xim򻻻N8m~zznt:UCbd2l}_βGONN<3MC˲|/adwT_qL_б8O?Oac}ߗ#ixGQ:TYʢzb|br<< U aC:Fp>cjTAjݩn_;|6_vEI.za C5M|mO&u]oۮNS4eXm?<<{hr;6R~)vǚ%`}c Od29;;S. ^ْfww7ҧwww*m !x|Ng:z' iǑc $_1A5>.]x½Gラ8W# vrFΎ!R6m>p:T=wvv+,۷e~pp0eU%4;}2V2Rׄ잳;`!shM<==iL,2 Cni򦪺O&`0pAF#4߼ysxx(dwXi/^PȪw9nh4Rm[` ǽǽRN^WYoIAbҎqZdELrt~)6jbW+AyjF)L7^j1icVqvc+^)4Ky:/|cs%ns<,}/_׭A`YeYr HKB Dvj2Ŋ2vr ԄdeeYnz *<1KZr²Ԟ(frEcBkƈ; eg|̀B'˗+P0um 8ݳEOv.'7[$8q&*"n22hCpR%%@tDd*[SiY 'm5|?6"2R%IKNLr  GIS\e;WIh΢OnkNR?}԰dwh-3 D_5g-&Kjۀf 3 $ϼB{J 0Z3P-&fZIj-BpGeͰFM/fh&d20F9/@Eh]zWbWd d!Fph67-c"P 2qA p./P(F"V.bj+4"2|@pǪym \ 6c9">iXqs9Y%L;;/ rQِjEvLh5GpGd uN]Ό;'c=q"ٝ}5FPko !4M\vuy:: vuuE-!b%tm;ceY=}27e{{{mVfVͦby}k+jZsrOlȸl6ОUB9 W12-\ `8zg˗/eQ˅i>áan%纮} k9>>NL;i+5 Cv2Fc!z ~q`0_a[%TVI$15%0#dŅz`'EYnu4MܶmunәL&Uimlv!R{^x-y:N,}_1L&^O>Ku˲ԈɉmB~y%2P*0K:M` 4W0Cw2!2*gbFj)s~ˑr}<ː G{,zim<ϻxxxP}:ch4 `4e;t:ruөm۞}NApvvz3MStO@*F܁|`W^/y<{=y/CzӴ+P{4Jֻ;4Uv!u p]7j6mh4L&睞4Zyv۲t*ʅ0!ae#`*J ݳٜy z=0á̎Fr'^gY,,k<Pvt:5MSu9oC&Wc#(AaK}ԝSYo˙w܋=+oŗ_Ҏ65LdF9-^u]W6<8S$icVqVVb+^W= P2{ 7O8k5Xx'}˗ ,˒e9ޮ!R`53>}*y_ަ<< ejB;$(w`R{ E<$RDfvHd z=0á&m۞L& +un;NMӔa]۶aP*T9NjLV(n̳ t`=8Ss͘P1!%"R{۽VSĄbّ?AV*ƶmէb8 Pz<7Ʋo[xԐ͛Cx8 am264/^hdջq7 c4Ͱm[@ڌ?[Vͦk(@*bE )˦݋\,IIB$rt~IXRDضzu] T6O=cT?mVFna [Y垯uʁY/@pNJ\$ Z8H{$,á{ݝ )e^|R^yS#R`{h3!…0G[7 ?y<>-v9L,!bG3`zl0lb5=}TV*䚳Rf,q.2?VQ$]Y9{87YCrY*Apdѫfsف.pIO((;89,KdtI k~$_Fp/ݻw6 @ev3~NB躱QsoZ Ǐ?㦷H??yB&EI3"qUh2q/Ǐ?|pvv dfj{j :FE:rgIFp/˻w~Mo%O g d"ZIspt@2eOWRL~&VL s3#@Խ|vue۠/]G$T?~On YׄeTb W$Gp"gr qwvv7uJTN H+eqاz#֡з,';ܳo6?~Ϟ=o~~???70ЎECqⳬz4G螛ApO o ?4={__ϟ?Ï?8 z붷'v4NIFMuŖi77嚸܃|`ٍ`+XKROydt;Tnnn 5Mćs >~]ٳC˿,yқ̓\Jt{{[>( M@<m^seho?~ff3K\@-L@pOի/B?>|BwSK={?gtwmY"ωl\%F3!ė9CtfImyv# {y{J^]."7+l(JX{dH`t{&MKa+jΞ!I _*ށFY8GGVcm gP9l}^z왜pF?vl,)ω2gGݤ2B>dt]qḋFpvx2QFy-Ttz?eY~?6&>32h-ѫt a>&d? <ڌyïٳW^i!]UQ%v`];WBQWOLXQKqS ޅ]]^[QH KN$,]`0F"ue^Zh`ӊV +a$?9֩;d1aدXpic˾1Є31+6 6֢iv!0 ˲<˲ iK IDAT@&x4WR,f`3ZQ׻T)YNt_!S{㜟/``Yy[5 6`|kԥy(;m^Tj@F^~|eY !x<}xF.Feٶ-kc|߿8>> ۷o#;zC%۶yg0xȕ-FpPoĸ{]~ (2gW^?ett]׮v;d21:"mێt]0C+_VLvrrbaە59A}{}Fuٳmˁ1 "9')rU$G}WQAxz=qLӔ1:yOq~xWv]yrh_.Wme˲zSF1`EJ|*v3MSp8v]0 uq|h<8v[9&IM2 Cbw$t4^xgM[e6oF"lt3 c8ݩ0M 9>@y( g؆[2S^S3^8yJ$ըd29;;}uhFBUӢfsϻ _Dnr<w,Yb)h63sroD۽VSĄhّ?&%m[)0vwlBuh4W2iˁ1f3?fB5'4OOOiaQsy$4-2M4͋ u]Ȥ1 #ܧR1M }.Tmvr<9u4![tjޣib{xO%-FWKs:B\^};_߯ڝS29X zu] T6OYHF\9< @}H[e`ӊ2 7M}n _vJ syϑ1BpEbݲo)eBovA7w#T@ϹR3ڦP*iGc,SB ܌iQ"W!4@1UhXܜex ,+qX=m9P6;KEbفĩt{ ";S0S# C@iUBAc,|{&;RM֍eVP-i6fl90Π;&#W Hhc Bp jh 53FpShU;*e劖!f@sQ"ΧHVIh257|vuu%.E皻[ZӧOބ|./[GG"PG qx}nzuy}ye> ZOGw_%o=P16dhܳ onnm/noo1'_?|óE4E5=f&2ϩ, Fx5;2ùXff[bs!h ;*Jя^]k Th{UqB-0;DR:cFH4 z8_ݛ,cFD z $ݱq%3QnL#Qɣ KƮC_3 3Ĩzdw`ܫ]Yb|/"7L{i5l{U1D$!YEpP3d5bo[^y &W,'WւS"ۊ^a|M*wj;$Ңߦ7|vuu_-!e£Ujׅ2|iӛWKQıq)Q^ qRPQty::R-.o4M\c8GOE\ -Sʇ^qUss@FMޱ P:}R>|+LRQ)awȌ3 ؓ[d7_2zxofh4ZF`0(uK 69쌶^TX!z'M]?HnQw)^^RxIvx||Ӂ!WU,Xdw4E}QɮӸX㜟/DeYoAʛe @1֪-UxnT`^sӽ^r˲ABxy8\>,˲m[ γُyK$W4nK899mc0 z=!g۶3ecV ВH/#O'6GF-g'6j&;G^~tu]K5XF91MS6]\\<<<>ݮ<9/6DzeYr_E2뀘&CZ<;ڡq$g3_V-4Mݮ Aຮ6ami۪sAY`8N'q9eTS60ߎפb;yrIC8z=0]8CiSp3P{e|R1y旼kYDvTt$[vd_:Ͼ>5B?+|t2qhFT.E _Dnr<w[++iTl6g݀_cb^__)bázhggG aƶmէb8NE7, v4߫ @y=o $rKl"SE{BfsWD.唃UyiAx'Q}y/J\9< @}H[e/fgbV ˘Lg 5NԗIŲ;Di QrT@urk3)-3Y呟ˎi0 ֌Rj%9`Pi%>Vʊ푞^Q-]PS&lAJň{(:ʢθ{ 9^^UL516,J(N[wcbW,fgPzM3@#UquuhK涩K!Z-Q-O>mzBv`v% WW-ъ,v(jѴWW*ɻ_R}]Ϧ>w0dn\Ye*a׵-L/nb=%N89Kk 8Rf~Q~mcɂ+Y_{ҘU$fi9健d'u-2.D|o%3Nd ;-Q_= kt%'^;U1փYel)JM_'pgr'5&(3&ճQ:k }RӖ,)d"c -ד:+Q4# DƸ;bT7f79U1_+ֳ{U ;MC؜3T@zA,YαrT|ZBxj*J)dPAwH$3d~Ye4gS";# L9 XP 2]q&XDq^7|vuuݠ%ZyUQ%jӧMoZB"VMb4!,y{JPڊ-YQ+*Pe ߻o0ٓhRWL|&![Eonn4oWm7Nnook1Wm)"SS{X Eq/o2ubP:`2/=ُ.h0F;I뺺[zIkAe/*YT=@^*$Cr5lSL/@{B.$xEz;"<>&iiʒxLT3Ĵ6>}߿ȅ+jN'{9P-/oׯ_?C_}Mocn=cvÁ\Gx4'P3GRƾ[l6rvj;;; JeضB t*Wx|6 [`Ħ(E2Qji4OR/_}F6 [i=uq9 S@l;lJY##gL7[%Z Kv @prEeV-4JsC9@3`Dq{\F4'h ;n(T3qwYe%;bm$ML58 3h-9"4deLNv[ktԫmZeZ_>}&,%(h[Y.8jK4!.36RZхL yд˵l V@+nC6conn淓CN|5p{{[BT_Go2YLEX6jEհ#Bw}q%x)+utTP*톋0]\@tk^M\čIi@\4qc ȭRQD , QW0%]j8!_> /^}K̺Q: &.^BpzzR݁(wQ{ޚٗw(>j*Cj+ 38\;I[vպ̎㾿_(Eѕ+WNOO[$X#eMƠ3xpoLi 3@vVpHѳ̜{fk.ڲFw 2>85-m4H!F=SDQE(sY~B0R-1ǓM5ӈ s2ܯ]6"Hv! -nNG[w Lιr3>\Iuaݹs's|||Cp4nCס9Je{{{xRg"}v!Чu%Z#?ٳgR;Y"ّ|v1y~-WJQRtΝ(*^RO}ssT*6ollr\To޼yttEQ||䵵>a2>$@ =,OifyQ{{{/__ǬVkkkqK|.r9>?p||7ۛܽ{7ާT*}GvK$BpHݣ&3/LrܷOZ㏛onnFQAF...݈ٛ髫_'|uΤ @vO(Ӥ5nll<{luuuuu5ҹ Ījy=xRl\Vk6LvQ3)Ӛ-Ϟ={QK<큽yێytt7he>::j>ྲྀ d&gp܀E7;5oB)?ss^.\߈;t}Ʈ5EуJŽig;vQ?=dzm 75`{]g~L>|͛qwT*-..J'˗/X>ku1(YxFw||k;MVV~ }BuQhiy)_uvL[k szݼ=??u{IG^ŘFs @FOt it^`w$\>dQ|kJRŽä lvpdw ;͇$$BvR X;ǧ%$Kv@w%^"Ӧs<5h=ޔS{s pw`z6q ٽAU$u w03JݓY5r-*c FpF zeg잦8j趄lcL{.CJfs ://8Ӹ(5уGjR@pȎI{ٻIzH01X2]e2X>DR@{Zzj=QqӥX-|}vEE1ĪD1CX6+ӫ3$մ ~H僃A{ } vxx4R$15 QrG ]ez֢wO{djbY?̪5 $dyypJދ2?|dcpqp.;88vKpȈ':+MICԥCz' LpȂ{K2{O,4o3 LO=ƍ IDAT:63\޵;";*33 }Юo@8H 4Zw{ciL(e ;lds`.Epnڲ)Bp HKLͲ;0U;aFvGpzzvvw_~ tetZj(wI(}mnnm9::T*Ϟ=;>>Cwl2frc9Je{{{ݽ{uW,..>{l, R>!tV~aݹsT*m{?W*FD{{{ ą"HqJ'|2??gr'<{k^Ur?f\n{F~ǝOW_}GrR,..߼yhcc#xl7@ %- 8x'nA?::qT*q_퍍j|_mZ766=zooA:I?ݻ>R飏>js{WwXQvI/Lح!x{{{qqq{{hԮTՏ?yAƛ޼yZϷiZ\\lhĚ_VWWTa|; gwtl zhmX\\|/ mg^[[{?<59~0>şt>{k_c&sٳGmooonnv yێΝ;Lխka|;MWO̎B6~3 9Y9ELT.\ojZQ=xG4;W* .9:vssgL0>=@'A~M8w{י踿Û7o...6[KRܕT*|22Y\\l=f<5dG}gϞ>??ݻw>|<^a|X^^>882ط.ҴK12kQrGʈduh-S{cZW!{k="Ҫ1iN,7ǣW;wݧy̨c>hgxFFw||k Zt>L 0IxflKi:ߒF/|L8ۚ&~u{`L2X5CT3 Lcdv?v1ٽO.dڙLk[pv?Qv"؆ ! Cuv;Lƙ= g wHȰ=F @rF Pv Y3H'Lа=Fh!35>HOfV.WHW0Lt^QFi]&!MK\n4~>Qlv(7tv?889<<\ZZ:gZ)lUPCuyO7I'Č9bZvGGH ;LhCnEt9|M5LafuºfwAf`ͤ2'ŘF=5aw=4snw8/tdT!se KFkzdH~IKtL5HpȒ !oxfҢ50mfHvlܙ&,J&= L00 @:Τ 0%fI $NpZVզ] j*j2i j͛(>ofeeeڅ }?5r|ݏ- 0 ^F}R/]tppO?]t?vDgxPizuys4O4;ƴniօ szzz֭(666޼y hk\ݮ7 Odb?+3}" ·~;77Yף(j ghIL5uOW\z0}".]߮[[[ryaaa22W>`֮SD}۞* NMF^۷oߎoT*Ǐ߸qu=(p$jkяcj=y^׉ &*J DQl;T~… rWZv޽|>??3Rg' \6RTϴOmOR) ^|~aaaŋq_6?ҥK?R͛)+'UL}YzkvEܦBzWRϟ?jJ̋/޼ysո>rfyys?8rF))IЯdQ)D˪V7K$^/N/R~ QEݓou--'0p5Y^򙞋r}bNp^~:|>vWZqF=feeʕ+Gg~\__oxpk{{YZ ⛁SH ɞB^EУ_2JҧҲv3e]Aע܏~rIPl#{c0'v-J\.J ~%5ĖCl: O"3H׼gKr2Ž >^vH@-JV봏٩{'{_\KpR D" L\NMpRIܙ>Ipg0 ` 8M3Jl^,F8}bEՄbrʔobΗ(ZW̼?rW?8 'Z73S9'ʩ=I僃f$/ D˦&qEJH eejCEk2SsbԢ>tdDܜi wpĘwI1  @64l-;5!LC ;@p3Op'|.Fl-ޛvxիW>G{`E+Od޾};"EQՠѲ/.^]M[_lye% ĩ[ZZvR*m>~X\/sq7H,kZ[_,Ԣ٭=dR_Q׺R*dE}* ˓Z*'C ; &I"ibjAp!et /6RL/2w;~ `hxoW^bT)R,F8i{0bEՄbrʢbyU@-w5)K~v+#(q?nMi!r ^R`yy`GTl?i:< @& gSV`RޛvxիW=yxQ6NdJ޾};"EQu2XllJE(FQ*@\Տ?N gT-J\񏛙4"TaX^^>88qƬtf2tE)уePkϴEH-]=S}fZNkX-J\븋LUDE}*L`BpR#@wYK@pwfF R ;@p Dp 2> :e0w` t/@W;i7`"ߙOpQ-ta $1a;@p@YxoW^bTR,F9si!(?oŤYb۷oQPlUbԞWj$q]5Ė#>8nPۘS9o- ]=X6 qZxʎLl )};;עIjL&S3!jQeq/}I8O;٤-=+2Ԣ@'=|Zf@EѲ`&.tej4':adaӌLp'E\xzAp4Ѓ L:   ;@p qd@fYwKfi8~ b4;@p F $z 3Dp'] 8CÕfxoW^bTR,FY:i!(ibf_be-vjM\i{niiiEH\/n)|pp0.Yy'u60;nf_׹Z{Ig壘z7]T3u-SV?ǣ Yi3LUI3 _=0]HeNj&#3}` .!A ;@p\F sL܁T҈&))I)ͭwRGs+&STŐw$~Z4 dO& ;@p8 l @*#@w ;Yܗ3 aY_"N@ Q :y:8`?  ;@p;=mREpzY3 dlt{ ?&&@  01 E6 H643A@ƙrl ;@p'CCpO ؐ];l ;bw;JZwf) S-Jp $@wNI5`|s wk  ;@pY3_馊Ip`XXR9Op"_2Gp_2Jp99&!w  MC1d&< odd<@]43Npi{3&EpzQ3Sק] S<I@IyJׯLDdNO-b|jS'dkk֭[?ִ @?==vZEsss/^asd>.]:88h͛)`L2` ޴ qׯ_ڟ?> !d׺}ccccc#J2ZىҥKONNov…rܿL|>__oߞhi0JR(Z{^O/۹\_?y$Sw`(g.6ׯ_ ֻ*J>\V[__T*M/_~qV[YYŋ|A']^^NAGK,T2C:5l]^qY{({'T.{/[zIiܻ_(ϷUVoܸ\reww.]*˟}Y<~[IAS!WP$ƫEc,SSOnx#JkZE/_nn]rxJ^0, mKONNp% IkS`!tU{ CXYY37o\xqE`F)j5!SվWNPd _* n\vڴ @ VxaT4;@)ى:f?99Vۅ ܔJG0w}׺?40& ! NpJR(Z+k^O/[jǏ[\xѧ&pa|.AC>ׯ_ ֻ*J>\V[__T*oߞVQ BV+ ϟ?vAks bqz/ԹkZrJreeʕ+S("A9v)ks bOʓ'O(~zZE˗[BŋZ6wПkp biۖkB/?߿w^T/|Пkp "AK}aE 7^|ɓ~iaa?vkCq .EY_=cms$1:kԓ'Ov]-^51QKMBƷ9>ÅNg֨xc篍5Ip bK}hq?sss~?xu͛7/^| I[ٹ~zkzEQZ5,ץ>)j5jի.V(jS+ukcr "qK*:RP(eܗ_~y޽jox[[*BØ\HR/F12EV׳XYYvYI<^a9%Ĺ.u @w FV{i^/ Bacc9[_7ߴ͟}[n2<}ŋͭu;޿sPOu뽗/_n^woZ^ ­[ BZ]__o[T\|_nVqZ^tPͧ (>f~دLG;v>ӧͥI>Ǐ_|knjk~֋/:+ʕ+WYsaa;;;}\k׮mmm=Ћw0Bwqirʕ/~qSjλjk/⋶6o׿?^Z5CpӧO[7޿m%vv#ӝk~QIDATxu¯z}}=޺}c^|ʕ+_TU kڽ{N籅Ǐ^k֖ׯ_WrOV5P?~|ƍ?̭[JRׯ_o_l +++/_|EVݽw^E/^F EmxEF\Wi?JR(ѿP(lmm xtBrոio]x(B:pO?j8q@V~zxrܵʍ7*J^乹k׮vڪ9 \Ҝ/ XXXG>|>_ s~O>w juVGU+Wzi. P\緶&>}zz믿n+ׯ/^8ra _~ֽ{a4/]]tW_VJҶlիWO{(ߺuu~|>V7o޴ rFce`Pz_P( 8>[n5g<99}ꓓ۝W0 >}7ߌZ9 ]?O6`4ZVuUWk8G  @w ;@p @w ;@p @w ;@p @w ;@p @w ;@p JGIENDB`codec2-1.2.0/doc/c_tx_comp_thruput.png000066400000000000000000001000341445607075400177040ustar00rootroot00000000000000PNG  IHDR ?zj 2iCCPdefault_rgb.iccHgPY<@BPC*%Z(ҫ@PEl+4EE\"kE t,ʺqQAYp?{ossp e{bRɎ(tջ{i常r)teJOYLgWX\2XyKο,]~ )sT8بlOrTzV $G&D~SGfDnr&AltL:5204_gK!FgE_zs zt@WOm|:3z @(U t08|A $`(E`8@-hM<.L@ށA2@F 7 Bh( ʀrPT UAuP t݄84 }aXև0v}p4 ^O6< "@]p$BV)GVC!Bd h(&JerFTVT1 uՁECDh2Z@Ёht]nDѓw aa0Θ Lf3sӆL`X VkaӱJI%vG)p`\.Wk] p xq:o—;IA"X| q B+aH$͉^XvbqD%iRi/82! L ے&US{1O,BlXXؐ+ NP6Pr(3;Yq8WJ)Hq"HJ IKIJGJJIKa8y"Ֆ͒="{MvV.g)Ǘ+;-Hז,L_~NAQI!ER¬"CV1NLMZ)VL $L`V0{"eyeg :JJU*[5JLGU殖֢HVQ?ާ>حѩ1͒fX9֘&YF3U^FuX6m]}G1Չ93 |UҪU$]nnCM/OS~~>&   .y݆i񍪍&v\mu:ƑGLMv|253Θ՘lOv19|y-Եl^Zä́UUКij}ZhlfSoV6¶vʼn伲3صs-[{'BCSGhGfhgWΣ<lqu%V>svu.֪MZ26,b&*4r**4j:*@LMLyl,7*us\m|GD\bh$jR|Robrv`NJA0"`H*hL֧uӗ? ͌]֙ՙdKd'eo޴gTcOQ{rswol m ڳMu[NO [A^i۝;OrR V (m? Yrˆ[EEE[?Xި%%Ga%oDDiNe̲²7Yn\^{p(㐰­Rr_bULp]u[|͞iU-x4:zccǞ77Q'z̚KZ!'lsWnk]8q/v=s}ٚvZ{aԱC) _}ABEKr.]N<{%DƞWzuW8}nX8[[Mowf[@;]wv8d3tyoy02*|`a׏2-<>+|"ߵ~o /ۏ?yx??'󟓟O)M5MMqb݋ɗ)/f 櫳/ M^̛oy=}na>|ZZ.V|R?B, pHYs  tEXtSoftwareGPL Ghostscript 9.50]E IDATxݿoX[˦f+w8( igCf`B3E&r)6g;I|L^ѕ]؀i`=hS~P~z dyl6= )@pRH;w @  )@pRH;w @  )@pRH;w @  )@pRH;w @ iR)lv4M!DR1 cCk5T*!~Z 0"]EnouA-uR>Rajjj꺮Bp0Av%EDF"Sr@Ψ8ޞVT*}_ꖋ3;Y0a8!Dp0JEƎ dB-2Lbssw\וٳgbQqpp_*ZGDQ榜Lp  50M,}^/hHكvիW|>{-z]U]xBzUho/VM|Ϟ=G{j#Q~:Jq"~x3!d?g:J|/z]lN^BVF#~*^׶ely)*_j_FQ.S={m®U?'[z.xY+ F,9onnTV?t+jDҒ̗X?XBy'ʃH{Ձߞ?P̽#CǷץh< 5 ?>-)?$t#/N]7>%<뢶3|sL*eʽ5?bI~uG>/g.//۠G9~^trYmȮF.5sw/T'[P|J"஦["o^Չ8t{S IЎ3}DW$;{g2r\.w{:F:/9x*$ J˕i6rիW/ z$ϋ2̓?{OV_] Ώo&v`oT{UR4MnQa|4z}IJ,`J>.y#Ύ]]]-JݚAj&Sonn UwFAVxWa$Ƀ vrrRjl/ˆaȥ~vōd ,Z^^_&8>*H oSeYJ0 ]׽B\]]%$L'''apy_$Mˍ8]ו8<'''mA&I;Y$iٓŮ !KuxxhYU0]ZZ)Jz;t]?`ww7"Mq*%W1++Fyvvvvj֖LA,--eq|>_ ø*-4bꪼL777ONNQ]ig˲L fuuUiخۋqr|rr8NP/~]|ɼU9 zjriiٳg{F";S0>,[|v/`\^oyj:3_UٵZ^!乫g{k8ɯBgz˘c~Mz|HKuPZj+~{TJĖ1 ?/3(Yzd0Ȳ0rիɹkϤrC= B YF2{]sC^FNj."9~:"$ FrR>R k0|\.zb4onn<@e8 ZA#OwFdE7 C~6k@ps*u]|,,,lmmܼxbgHJFU`rrCjSd8ijFlfhE(c˵G (RR @  )2_8::Bloo7z'Nܶ!wŪ2_o>|?-_u.[YY9;;[YYyL@B}7-\r>|x۷o} ]!?,r-<{䉜,x @Blll{N7ķ !?~rw!'k7o[z@HiaF0}ea9vqq0$E" bC]Ըh[/r]@?IUCpO3ѣw!`۶yӧOO>f@-b`ܜڃ8gggi>|ضϟ v-A)2sr>Myv b)g;eB5.mlldWuV0X]4- s=,i̟f8e_$$v @*⨍Y3l~jxkfƒ:@wUS1=[bHw#gf/$fqxRRgK{}EH~c k3 ;3!!&&R,Rs9l)&4u\eWZ*:.Y6i9͎o̍͜|<;v8+(aFl?MU>Ԟƫ4["jn٫cIcPKU!AޱY˖|_Ef,us/qa YKu-}>z7U7s0*wƥgD<+9"GX=:ȵJp;#;4X6f9]WFϢɌ `.y3H>̜!0"D;SA3w쎁";eW IĨ ybZ;!"1|yVǷy00;]!Ln VuHGv`3y|)o L0׈Pqw<HfsȎT  S##EyAdGCpdy-H); h:H/; kȎ#f}#8ّ wEdGGDvd 0yK,qA,ȍutCdG3GExvoyi YEp̨>3Q Fp̖nً)v$ c(Z2Y`۔0? !ȎyCp"nBBd|"fKJdQJ<";@p5ޒ՘kODv@"fQ{LREف8;`Fu,v'fZK3j"%x |11@7,KøIjLXS|RL=:dOdۈb׽R8@7w0vdq";&!9ف`H@?`nHgQHw0v=9ƫPNvuԵEp&S;;W$4kf`%ׁ>1ƋN a~ 0(H^0@ X0H;;ہ"0rw0^L#Ap#t;0w0FLBpt;0&w `d%`|@ hd-;wbqTc9;`҂Zq ;(1  v`2@ Z۩Ƈ e|Z#H;ہq#A $0aw0,ہ {c<; dHNgT {hn" ~1LH;@_X.;7ہ#ޘnv`*ہY@pRK )@p*g f/|:f )w@Lz`RbiiɶE󼛛{`1 {?~꫕ku߾}!sǏ߾}+z.`/|r{{{r뺹\Ç޽{=w0%`6{>|(/..noo={䉜Gxq]=|WgggʊTc2ɖ qL3~ׯ_yY㾲K!]KǏy6aWBz~m3z3.Zb3W־龯0>Ξ::k#8OL5LbH`ܓ|Ia۶O>rƲ]kO<>1v`psjJ|Y.sF.?zH •f=v._d^{&۶=ϓNOO?}SĄ]~0;]\`Q*dqq۷~_Ç?|8ٙi><>>m=w0nfBG7wX__T}'ILO+ ÝT񻮫y0mj v<;H>C9AQ܏dBA40vm. Zc{6eyg۶r ͪ4%7;jU6(˻7Y.i8Y}vww-B A ]@ͩ=7CM0 5M[5ʨh4dI88N6A6 էyb1~\Z:, pa^]]mnn8N^,+K]ׅQ èT*Ba+;,YdIf3~nwwW;Y/// P1ڶm}]}OcRj>FMӼ |>of^Fڅ[[[ .y^>;3q8#QiQ ;viZ>}^!ú,h{0 kO `(ɔ>dy jVrRԾzc6-}edA@-E - z]kՕyNYefW{ːkAڶ}rr/Ѹ$DQԭTc˲TBr\u]^xgB4L4mssu]YcYVEmSGpGjB]kn7 ZE0t]Wu&iniaqxx(x4Mҭ>ҐBJpP0VWWjyss#gu]T*peY}@-4G ~~~>'.ÿ2wGA{} TmTcLσ& ^G~7z7wf0o<̬iUe&$Gxg]T]>ܥ'ڳ$ V(_>{&/Kd1x%Tf޵s<9i.,,,//`XU8 (pRwUI@ )@pRT YA0L҅-IyA1jw%I@ )@pR\T L҈H;G;w @J )@p 0C(>@p`H/;ƨT*Je܇  \}0)BpS2 =;88aJ%4G>$ ܁ #?h@E2O;av4KREBu0 unmJbeYjz^vܻTu⺮*摟(B -(pR>=M}P(hf.3mۅBVu}Ʋ,lu]T*m' czZrywwWFZV4MsG>K44UeYBb`4`5Yи~ZAP4%^F#!88N6A6 էy2@B u˲ ߿u]Eޞ0 y/iB13K0TŽO wvly^>W}V*9ޏyss|4z.ommɍ2 !3fۿMTq]岚nO{ءi|zn r2޲Fa$)T K((;JjVrR$r\6-}aJk$P(uySaWWWɚ]T q_0CNض}rr)jҒ|EQRm,R} !岬lGuuei2˲(Rnc:Qt_jaxrF޽lEQq6Okv:FG0 卭 ݮY53bmmmScZ??k;w2wQLJpG0 oLg\*ئVU*˲03MR!vww 0 X,e4fw- /g04Mn׸+|@8ya8ӭMFC)|8lܮB u˲ ߿u]Eޞ0 5M+ }]"8Gw (\^^mjp7j6ygR߇Z,=4MPNA~>7M^[[[rLBxu`|Ț=[dz 觋x8e5ݮ6퇰,Vءi|zn r2޲FaL2sla5|d|Iukޞ*w)J-,//JB5OBBPMa\]]y'엗*p`Pn f[<m>99QKėh\ZZ(V*ӱeYO!D\@*UO>iWWWij麮,SV_ "ϥD{צajX,뺪31MSu0L4 0C̢iZMر>ҐazjkkKn,˵Ze=᠆ahdջquRY?w 4a'keśA-,2.ݫQAwlwĶa7r}fB=}T=ۮx`i_(4M3 Cm۶BPTƲ,(r8N(tX׫ժl ldjZM4q4M3MSZ%(A978_WÇW4͇۶fG{Ro7.g04Mnױ+Cv@8ya8ӭMFCyeYJE'ȷwX(0}qznYV !(R߷%0 CiZPR>7...{Nˍ~vսbwB>iam۶ GQ~6qxU{ V=jءi777AA èr]Vyڅ[[[NX0]sޗaBl8S 0 CuUO}_~*Jr2޲)}֩/tofkޞ*wQA9[>0|GQtrr"y? ! B^7quuyY_^^u>Nܙ !nN_m'''jz/KKK]m,R} !r^7M۶rٙ~:BuueieEQNA 0uyfiI}m}QVŢVSinipPh&{Fx~pP0VWWjyss#sJEβ,komӷ~~~>'&LP ˴,(ݫVQ0( @5F)":FG0 u]}!5~aM孖|ټn!{x% τw%Vz]~_\!g}Ń^4"ǻ(2s?4 ٙ`U8-J$b053[1k@T &[w @ iܙ @"H;w H;#)@pRTqwDRi뺵Z-q&w}-t7R \}0ىoT*<<\.^`U>ٿzwpp00,Jil988}?4F 0ey-{/" ð}iRIavk#W*4-RX,ONN2չ뺪G~B(~jArodzP#Cͤi M PemP(jXymۺ]@JŶ햣79jT*oZ,=ϓS}4͛ |iuxkkKn] u 0;%^*8rYMZM,VNx Mz0 deYF#Ð HR۳\.1S7NՇ*1j=UR*+XY^^n3 CUZӢT*-PHQ(Y0+rn80<",ϸB[4ۿ?535 ¶퓓DL|)ƥ% n2XBeY0]]ZZO'4+45Mt]WXE:5u+7o|wB?7o\__O{t_qbv0jX4 CuUObaiar-M.S. 0W^mmmrY.o00VWWB4]θ^T0,R`2e_U7߬~i |]ׇ~;eZܶ{} TmTm~:vn8u]Py0vC0...&p Y \r7R]ad=O>Uooo4# =">q/w^9Q x4e 1-|?uS!ē'O߿[YYf  +vdŋ;;;S1}A,$Gfm?~}?۶3 qn'e-Ç>|8::RK@>~xcc#^34EcaLYNOO_~m&3gv'Pܥϟ?\ǣ_~e I2LӧO秧_\g1~pnoo>}zxxȪ2qƽws%^__Bޚ矧=.#!e6͛7}r9?~WfG>q ?ٻwԖm!7|8| L!H.#7|Ӳ0,*w}G `F\ ep]_1:2%a%Y j0 ?㏟?~M6wN@OY jZpowtttvvW_A rp/rwwr^뺞Uxb !bUTTLSAp/W~8w>@v7 ZE0t]Winiaqxx(ciZM.ޱ>(eJ}1 Cq0TU5n``Bs2_DxbKZ]-,r+Dw{O ÈH..wlm0C_(fQݶCYvqq6C:!0w2wQ*f]걦ic˲TBr\[ulRR2ݶ@G7{_noo_~ݲu\.Çw޽}Z˄]-$QVŢaj4u]7 4M0 8<Ei6];w~˳(H0>~yއBǏ-\,yyP>ṷkq{qGnŰ >Q'`="/_ķݵ|7onoov%ܢ޾~t]t-'i7umψ<<8>D"*H IDATJ2fζ=??'wIֻRb/gLۍ]ygܜGGG?S?1y.@Q'`2qO/K|۷os\KcY.Hȶ%#'_~B|Ç\jlllt R$+++1\.moo{LmΛu2>d.ΓSTI?anVh|G0l\dL}y{:O{ \}+ʃ<+˺j`06~_Yairyl#ϙfۼWژ}T*8NM,Ju0 p][RiY=)œNǑ- d?R)FvP3#ϟn=ML}P(hf.3mۅBVu}Ʋ,lu]2MaZZe۶뺺GQT,0tGliٲSi#5r>20 5M[5(h4䄷8!ct6A6 էy*F;*m[v~ppEڗU4ͭ-UG:Snj;F0 }]}OcRC-ifZ躮حz0677=K0wK|~q] -i~˲j`ӈ/s|?wSA F)~JҵZmooO>[حrKa^^^d!SusBB!y;9D Y{4}O?m%bK4.--QuƲ,է\.uy ]]ZZ][TTLS鸆Lƅ1 ZjeYB4eaW**if}gg[gEgzjkkkss3(jəj*q`dLBsЅ0Bxbʏ#ZR-,2.'ݫQAwlwދ\lAE2wew,fh&iO-u2i?ǻwQf[<ϻ[̍gneAn;9<ݭ̆}δ${t;)b}$'y-s;1l, we$K @ P5R'-3|ѓکzB{%DtsfdW[2hNNSLLfֳj~4EsIދc@%dlg~Nsgmf}>43R}>Ky1fdNC|'{s?ZNGMe4_ЦhS3tzAE_ӎ_-ϨPh_)a@vh63[jb/hP>>c5EB^99 Ȗ8۱Yu; 'Z?̼W>O'cg-eDf2(D?cMffĺeK6ce<=qML}>2-y y}(#B Q\~bD/B ~t`6NscF_-v0.r_|s߷m$8ŧ㭣BV(S\+ {ErINc'nRF6Hs.cwTRaVl4 D| '4eꥷj|{3 iY=**bujٽ]y4~AbVǽz*yeAp?=d]zNKUs,fQ;:!E/qo{c _f:m|]tSɲ5}^Reg[+cXõniP-Ҫ]1)"Cj FMRgBh W ƵtXsnbՕnQf5}Z*|тqua+_~5N3DpuAƒ% %*h@p"{({Dl @ګ*M}+v8\`ֈ앤~cW`̐*sxQL&3 `A dbw<;UI-? i:ı;}q^!ЊI3:yRx|~ppf[fJS ?>M== kip@Q+3]=˲>|HpWKٍ:Uz˔<͔x4lSVZ@ Ԩn3 (j^/~KFW:NFNѣG0~?NNN~2bVY__w'I ^'V(1=ztrr,#66 N.SnSc2i]So&*y=kh(TkG儖tnܸ1??n"sw7nJ[f}}ݲn f9{{+ϟ?___zj Ѩ12bHj7EvI _:M8==ϽC)("Eؔ*Pyߢ QJ- Fl9U h4SX_|^gYV1:p/_8,k}}}kkKT]ݮX&(2?t:WN|H@(I Rt SCT_fr@+VV?5ovIn `48˸.cYם巶 899yU axToY֍7ܓs@eҢ|o-mO-We4A"WehA-xe>T cnkv[tY/`YnX89^1b9GoÔfwS|g94) ;NNE|ooogg"b2}gHTĝ-~Idd<u]+n(]Im=A@~e |qDY^H4Oi^kU0%iyECasQ=w3T7"{0mS{&i[t6H\Iʍ&ҹBy:@ڃ6ӆbɼI"eR2^] =REX_8}JFH *lnxҹgrfy2 PME8 \zՈbwrQ&% *fR"{:$*ҤֳpUp˯sMT=T1f~ꌮ2aTk.#&whrWPj?;=^ATן'@ΊnBLѵvCzS"&L0|e4<t"/#|'9;m:({LRdwp#ЃJW=؎cDr@@ SFWv^٦v4 FhܬT/ߘp3L*"VhÝ|GѣG:gǏ?|pppprrt6773Sėu[ٽx}dMSDgDqq03 eL&{h4Ot:=Xh4:99aˈ[[[Ng}})ϋ{?}I^'6$>8ˈ L#^XZȰHq>8E %@pS_nt:7nܘot7-nYV]XXĆݮg+Yz =|}}իn/,,L&F^gh4ϋ-KcƜ/Q2"nGq (n̈ h4S}_|^gYVq9p/_8,+2.zob%~nWlÇDtgǏe:իWU? ?5߆*^ zݒʊ;2om'aCje,˺~έ-M߿oY/caayng+neɧ3ڍ1"yqס{ofe7ӧģָsc\[ʣKP=VdDvbܫVzk:yoooggg4lmme;:n-~=rZH׎FN>KD?)b5Ōy|F!׏2BR3D{(K.$N0677W8Kw@wߝ2a1u7F5?$^Gk&,gW߿ny];Nnۇ"ϋd–YXXpS )فW^ onn%ϋV<~իWNs¦#?u+W!{v^wI@j™6'XZZ:==/z8s8xJݢ.^=88 L&geu%;'AĈmL&CH~%ӕ]`R{&C:-..FH4L;X&"" ەoj;s;==3al1BZݍkƠ@dv{t^. 403}az9`䩽T}kI^{X##?*AS|%N(ZPqS{%';[{=,*Ɇ!TmvR{"C@Nr],m>v⎪aHfU.V':ٽf+-$`p~~h4ýGXZZbTQH A+72Ht^sş?^ETӒȼQ@-S޽乜H #dӰgg;UBۘUdVdR' ;,#nwO8Io')l>;;[Y. h%|Vl@wԚzXUlk.Uv2wͥ4/T"&("QeP;GH_ll-1[?wzv&OS+_Jd+L =*XugI;T 4[f,&NŜWL,ZG?ꍆRݛ dj'ȳ;'{v*!تAe X#fJӷA>KKNta aݿR|*[+ٮmbS>W/T@&[aݳZqB**Ub^ sb/XfF> /" R =;|d81]$(i_nK3",/%|yMڦhi7dwJ9TM^ {>-RbT\$k5/<0=s&3F@TLU83]G-hdaM7yKЗXe^Rқ"ac)2ܨiA[eGsC1gV9U"I^ZbnӖ ;S*PyKPq/]N8%U66Z$ʺD`ɡHy@lW#w#Wv g\vjw\XknZ73쀖c[B-պ%{Y/uYwv˰i>k} dh/a\e'WJ~S:HVflqW.Z7V{ O%y +Nj7/B.4?7BoΨ_#i;[& ^>GS.?(NTMf)K]eJ] N~!OsoYI(ݨPrQ}{Ϫ\gP7*9KjCfRՖry"}1K%;pqJjϲZsX:W[Aå_ؑW(1{ H_5/>s3+[:Ozdcv_xRzgYcD´Ґhh\WzO׼w֝;PdU~"κ*&+{V/'[ f>@!kP;M}ۖ&C+smsyV>=hME FLXв}r"׮RϯmvNOϜǢG4}>$o #Ǣ$t|_mAZSdaHx^zg:##@z4(R\k%r4)9]t01VW4W^eK키WvAmŝT)*$c2KԹZ)r?y:Jݔ.^+3Y'PwFY⌧rp/--3;}ܡYjC~?lX_WM(7*V11x I4]k8@Y̅@qJ~36@ekJ΍8QiG THK^t)*S#v} +fv2LEŽHƕ耊vDTʍ1I3D;$t Cpכ?[8UKaԎظ2MPqbTJoz?Q.@{"ǫH6"+Dv];̠ML$:y6:!7j&`Y"J=Soa4s0?; +Q=/Բ_^tEJoTS5Nbv&=\?0T;˺ëS ܨ31 zB0dF~\~h4޽{͛ׯ_~%P:aZ21ogb ^qy @,kmmMؗ֎ cqi)2bY(Ȭ%LIl~I7r3;03t`00 cuuՙh4a :$*8U^2z1z$%Pu6JSo ={)TrR95 A?-jW\qSEDS$A}}#ˍFC\d-|yee%}N<;w;c09Ǜ7oc077wtt[gϞyٳs &w߳ŋw}suuՙGxUO? ONB,l6͛7|Ѳn'3 5{0}z~ueeErjr_8;NoݺH>`pbn|yy޽{~<<77wSݜ1%Uͭ9E#q`˗/Jk4O~xgq=lllloo?}T\*8üvZX_7qjܶ͛sssO> h4dooOU.X仇R,++x~hظ؎,5nST* O"KӋ/۷o7y*-Z)LvqJ5rH&daa`?F֭[[o$xӦ,5'N`0oϚ5pBX`!dNzzڵkL&sĈwܡ#C ѷw9r$y.]dmmm{5 / &O|%Dg'azIII?\dŋnjӾ+d2D"EQh4={tpp3f={6<<߿ , BBB>|͸JR`2~jQ+,,,Eg>}d6KC aX СCflh4J\vrJ9BaPPXa :uTQQŋΝ6$$~{WX_ZZ}vPxa{{+WFGGoݺO?5lߚ:u*˽z?t:2W ]ϩTO?t鯿:Y&,,ڵk+aeea]]ɓ' _ 1cD"4i۷KJJ~'HRIkbؖP( 99>qf_Ҥ;BݸqcYYO>DV{zz6sݹs. lB7d Ó Bs֬Ygc?d-XmRsHIIu:]MM =ݻw`?`uX3f'Nx`„ )!!!\.w֭/?VZmUUL&fnnn'Or劗$I|tuk׮}Ə&=zRM޽{bqhhZ6j*++k#G3]*:88 :nt1m„ FA}3ބ N>x͛7xju``W_}A?ne_ݽ{Qqʔ)Fqd֮] qqq1An2jEa>{%]|7gw޽jժ}յpĉvvvӧO_l~3gпimݺuaaa:EQׯ߼yg}m6{{o֨UaǎFZvrr2t]4eʔqƥIttts+&qC 0Lyg'Mt][[;w4. իW_e˖3f 45Y9ooo,Xl4B+#K4??k׮O7JիW?S \bT#BqFVVݏJ>W~`cƌ6%_V'tm6ZMQ˶m۞bѥek=JII1_TrP^z)Km뭷x<^\\ܜ9s|+B(k.~YYY7|CQcl2fΜ?~t R46++('֤I7{zzR5i$H$F+#s7onN2&Qٙ_FFJ2355F(z)JHH?_"ߵk>.[*** W(ԣG$%%O%%%K,gJEQ噍5rpvdP}@.FEeDF.Fuο=FW^Gw4.**z O\tIPg ;k$o޼gϞϯۿrÇ&OlѣG ٳ>o}}hXt7vi &R ښV~(P`B!db!B ,B!,B!B!BX`!BaB!V+,,;w?#V!BX`S}ي+n߾]QQAߧ!B ہ˖-u6b!B Ç666}$'p B 3lp8*JVA!XOS~~;ShѢ7o777Bh@(ZXXA!XMP(۷otjҤIR}ժUW^ckk[^^gΜ8p`v!B:tk֬;a„۷!C}݄ؼyshhOjjٳgq BLEuҋHܹsglly<PZZ:v+W@]]]yyW ɩ#7^!Saj,<Y2S@S...{D_6664xCHru+V yu߀H# JOOOOO7X TTmE" `*>ex*ᑅBy*/ B IB!j?WUUEOt:B[!PYOiΜ9C7n ž={@!t-^Ν;&,T:_~3ީ}'FR(Ò۷_vm.\h&N{ݽ{ydFp×t\$<<\&uB$%%%::(\;QQQ|6afO>ѽ3l^ ݋JLL4z|/wpp0/`^(۫T*Ä{ݻwz8E|~xmTz]vM< r\̃Ypvv$y83xI%88ڵkz ,GY<<ڴGB!dZX`!BaB!ipc!8f3l3]`b77$ 5牑E$K:."H:!:x`H[s K$;pu wN>pϯ{gD"ѬYx;-˰?pFdddN>+BBBLXcUƍ~zShTؚ< ouaxEfk* w='002ܙ;O;2,H233 ,«zZ:ۡM鄷 353’[ 3ſZ-ς,JMx`'wB! !@rȑ>$cB=+0YR9vcǎFS*j,Bg4)x*]_UU\fLtMM ngbX ݓdj8#r<&&(aDDDNEښvg8""˥fs\;';fd2qj(Ýe866(pM6?~b1;88sۿGGG&V~ƌA~Rzꨨ(D2bĈ]v{BT*Upp;Y#;B!I݉o_ٽkSL!I EEE+V^xa„ wܙ6mYF*N2e2ƌe˖+W 6oׯ__d ܄eܸq2qqqqqq<Yfݽߌ`׹eϞ=Ep~{E%$$0LrR?BT*[t:EQeee<~3֮]K/ѣEڵkƌΆ6!jYddd;:Ttqz(kkkzZQQQZё. 5Fr<> fiiikk4|p׊QFر_޸qѣGqX! :ݯ5o5n`srrrrr /wÝ296H4k,.Ng2O˓H$F;?>}:]Wlqfoиq_i-.&t[tqqq?L.@ppkZ'fE6]K;siG%Iff3^`GN8ٹ~Fooo˰𪫫3:NvCㅛ< oѕ7fkf%06=g'~nҒՍ$d\*rB!.,B!B! !B ,B!B!XB6(#Fp$wFp$pGr{,n Hɽi8{#O 8YdGr| HψZp$G w dɽ;8{##B%,B!B! !B ,B!B!X!BX`!B!,B!jOㅛ< oѕ7fkf%06=g'0n鞑vcXMƭLx#pз2hE͞_͞M=7jOf;ff]?Ývg?++˴?Xr6"Cw! `AXg}SV"ԩSOm޼pl۶Фeff6y砠 cҼQLa¸q0 "...66`r]`tAu޳gKCCRtqqټyVmku:EQ'Od2۶mkr1cddd\|b?֭[=== #%%%</55*:))ɄY,kꂷEƒ0, e3E&%%%>>~Ĉ A 4Z7<{X,''>xAA;w߿/H$ɓ?_|x?BZZ,Abʆ &322RRR{9S6,55 ;#BfCL>?gΜ_s8uLv~iRwMZvɓ'-SN7o޼y/_.H?NdzF-JG=}˗/O874-!jYThsaZDfETm :jUO^p!%%ח$I j˿%K7N)J(`XXX@j===ꚋ[ZZVWEEEf"IR_*Jz:;;=z/=f͚̬,z撒ݻwcBu76Kv_$oA[O5M>sСZj h4E'WXܸqĉ C$k^heekj.nX|'+Wsĉm۶K[nmٲ%++KR\rڵeee`Bre ޢLnߛ6YDg|||"##nnn[ne2, O=zb}5_TTٳV~~~ǎ~77߬\ ,B[iR/nu s~ ƕMYYٖ-[ G{"IrÆ ~~~_XlzPWWdK3fΝ; ~w۶m?]^^2~xww &nB!1s)7y= ^/$I_~9r899kÆ PWWwȑ7r9s,ZV**~8 IDAT#G  ]\\x>0xd!<>/TDQQǎkt'va8=|piᴬ,[[[}իcƌ۷oO6i,lB!:PG kh~K,irmZ8(2~Ƿu9]B! !B ,B!,x&t[t卅na-L`n} BݒaLx_%=<<<<<ܒ 44444p'FlH$:(BD"IKKqEښvgX"ѽfs\M=7jO?????aNDf2D]?Ývg?++ gAfffFF"((Ai7nq0 qqqAfi0#Eb*LSb ndFc,3ej>Xe>̮vCӷ6+DpvЭ\ҿ!BXķufN֓?'F0xS=܍FvZ?\?MrDބV.6c VIOQxBU}LVЫRZ k+'?EiʊRK_ʢ4ɲ~--UEGaG (U+.>ڬoj$`+B!̸rz'lw{duRJ`H$bpY#&Ɗ7(ɲ ^|h++A-0O1ie FBaI8.^i vf.\.H3Ҧ^`bx' lrX5?55 tp>J^\`xV>"u.K=̗Ba0ߓ"6%[JLLzaƢvv@Q*ۚ ؖ*MV'KNZ]a²imukVZŦG(d8 ZEB #* AKg j!88`Xg;ݽ/Փ /VE3'{Jϒۧwe($ 1bYUjnD.tuUljD.6#jʒ!###ʗWUUYXXxyyXMJ277WRqIIIr<- {x<,ロ$kea H?P$ZEk[l<"݋ (j-6$K*'+B1Ayhl6dR!CS-[6w]v) ggM6mܸpGr ]hQDDD q=ьX,had2YUUjL& Cj~}\R[[~RHf b|VLFځ&T*Ti^«>2]C=,>']˰@?q ^q ܿ(Pku]HQ86W|nf&YUN0yYYٲe˒ 4j(p8v޵kcPP_TTwW 6&᫯ڱc=aDRWW'r|}eoon:}UV@CC… ++:S ,X斔Dϡ<16x`È`ꋓ*-Χb /tG*ތK>HΞ̊d3F.J'\i*+ * + <\+M#kÑkz3(899Ue2 !_& 9yr$--Hhh"mU3,H 7:bAdTNgs6U ߨq>w't=V$͚5˨͠gs gee`M#X[[+HJKK7nhccn:鼽y|ط?o!njjjjQ]sEAO\ƍWRRϟ?޼y&.ӧO늠 co1nܸׯwꄄ"b\,0X{FYKXVCȴLג4Q3(R ,r=*SNUE}ʌޗT* | t>@Liyzzfgg7TޚQ a[S5>ρN۶6nO8q_/++;011`xyy?Yt)ݰ(ݰxLL+nݚdggϙ3~jԩk׮9s9s_AZј]XxDK.[AD}mp("ug@+5~c)"՚ ߊ)Rːe mNֵWFD} GJ/Hsk(il!Pi=eԜݾ8g57ZȀZ^?TBP FdH߿帡ZUUܩS޺u@ǎ۰a=FEE;vl/_>|3X`@[%…x;|9X, #ӭ\,{x]w .NA~L)5 2"' (`y KȢl L7ױL{7 @۷bOV BPZɗ9k֬۷޼yӰ:o<î$I9rWg0p޽{ B$j57k̘1QQQtWYYYCCðaZRCCСCw /~]v@uu|Cnٲ%44t۶mX`=e2$%%=.˘ oǼ{3/!8P՜Rw5ޖNr X߭k.=@Q OH ʭGOkpY;+KąZ%I֢( ! -[lk׮8v]!rww?`pWWaÆK񑑑N׮][]] 7n?~|@@/_ªx+D"?@ d }f͚5aaaUUUgϞݴi9n),:=axSRi]J+`Z/~9XUs{PU[5IC@)gjt:}_.@x0DBt/&cA[B~bAcIu ҒBBQ5".\t~… _5]Kߟ>%񼽽K.M<~i̘1rƌ[o?^ь5>k9dٳ'I={T*۷oW^*>}Z?͛7-Ze '.Y,\*nsFy{*ŇnHBqq1=C_@~ynE  .rr{oVC6%= k,wV 1!>s>c||<Uxd!<̂aNRSyA&_UZ]YYimmM'=zdaaaee 555Zήv(++3Bj6i,lzjl~]U.L=ǽPE/÷# _7SZQW[K!HUYqTkLþ\rP@Q a+@QK!X[i.R{e;Vs z*lg UFrj*#E ~CAGӈ'FQBaִo=<3`jkkztK34!{JGل:}ELQ*BSxVU=V (5EP,jxb$PmB!,PwBEQA+3-M `)Ql&-O~yE$0+IgOԔUGrXKL+)zZ6aY0!BW[]\n)eg@ <$5sl4G繁J(b p dَdZy[|!XY]ܼ}ew߾Ep EF̶/u@;26A,rX5,kY@_[8|08L!X虓EO4پpӑ Qa-oN$/L>™.u`rE+teu7&ӂe՗i%6-BX`gT[gڞݯ`{`'Ur9>mrPcy`dWH` D.۴Ba"##L&XrYG3b°p7`@%/X{ߗ1|7½XR{^45ĶVcM !XСCӅ*SoD**=>_R]K 9 tx]QZMئB ,vLv \OGp8!!!{_ɏj}V>;.ط2]\6/*ޝ@,i! =tՠQ#o///;;K| 崮ZhPfmYgN͹Tev,4۴BaEg0-C_b–0 B6êJJP2{˝`{*6-BX`gˀZ9aՈato-<@5Lx7ҝp ޸R7 W$BYZEZ4G2g۴Ba1TK($+8 wq}@8*]z{bB!,j=VQ#DY4=Xޘ"ELɀ}7PWe~>>PE+<2yPynvxv!__m]5Yc;g݇3*MH [9Sw2;A{=|c7FaBOD<8HiL744|GMfgg{{{z{{KNj9T*㍊GݻB%D"9x X}ZpB)NM%?zmIÆN=x"Ie=C@0\ߑ5X E07o5zL5BuJL#e?zgϞXEQjgΜigg%̙3篿jrof֬YǎѣG/X?( 66f}4[jkk駟9<;#pC8(1"kBg?̪Fs7o|+M۴ֽ-|򼨞o -SDy 偪TeK`L/Bi9y򤅅kϞ=cbb 裏=z'?~#""-Zh_}QF)FLf/\000000pРA&Lۺv9|Akj7SG`ie˖޽7nصkW^6l`mmJ0ݵ{ ߹1pG:G+$PS[.,Nh`ؐ5< >MV?+q|"Yfm߾}ܹ/JZz޽{_{֟"ӧJT*aL&"<<ݽ>}g٥t_(JR#MW?~y&ioobŊAaP(~駼XYYY^^NWW0eʔÇT*}mիW,VBB\.7 |XcE:,JʒdlbԦ+wZ=9nn+o dCBA4bٳ EvTWȔZV.O:S':}tMM tҜ9sU (ڵkΝ[`\._t uCCCrrJRT񬬬B)X...  [ }feeU_____oT`FO ARj*48x&= p ʳj/#&"jl5&"ME1贘RC^F2hZ/\|mq.C%Fip $ID  ? bVXIoS =-czuin`?s1f1\nsj#<]%\\\֮]][[KwFC&&&WUVٳ~zz܇M6>00pl$IN|MP'|oI`0BBBϟ_QQ޼y߿qpN*(2mKwosP%Ւd8KJj!{{㒍ρ@S/G-mH_wfY0$_czFQZJm666w9vعs炃x<r劓S[~+WKѣG-#nnnyyy}ݟyܹ1cƴ7NۺuP($ BƐfٳg…9###8pOO؁*?~ m9rȊ _~];|5NUTS: cZIXV}EGY#''#,jQnBmhYԂeggr-.>{l`` s+d}sn %䴌 ^a#:yumQ6XE/Sؐ ~_`p1x=kgQQ#kZÑamllΝzwn߾=''>hgIb%$$߻w)55555p'FryLLQ$""%0 "111F0######>i{y}'0̤$.Ng2kAݕL&31111<<<<<<11фu^G`-_|ܹøAAAtww?|oPס/l''2VcT* Pf3]ôWl")ɶYzY0Bu69i=E nJPk~݁wZyhKL ujp^`p: DX=# 2_jgzFDuEcAJtW6,8o8S}ڥ ʇi zk!2' LBmX/+[>/=UePĆ,.SãSF :u#dm[ !Y,:d[6~LQwM7Lҙ&]t@SPP#88GG9mōYHvҽNҙZe[.˓>s;'3ǒ3?a] G=CۼvOuA(N;qB<LU<)jY_p R6mu}G7J#)$> n(,]*Xٯtb1_t|#P$w{0^ !0e~ 0Rd2l}RTT$JH$DRTT4 -2L*iXt% _SI9Vx8{oJZ_R[Ew<;+_|Rp[.@U,?>Uˊӫzs'T4IG"f'x{Hhx\'NDEEEII?WZe+VX19"\parr}({(Φ(j D VSۊ kQg:KII (@+g2`ُZ4xC"<636''鰰0h<7aDRZZc` NJ+릙.ao0僅_ob޼ƞNC޼;D:>`XWW,4 7ci=zMumPW3xLÎqa6]֋_bq8b_ OǠjNu}m^%ȍ W %Daܚ={0RUQQ^AٳGFOWR$*ci.Ųb;&io_Z7(+ ŋga^YX p-MpqXOHJ~{[ʖq.̥4U7Of:z#P,Um3]E:E>1\b 00sB `0^h{-^ 7ugۆZo)_eoV:yv^<$4WbXyyy)))===fuȸU;Ď7RXX1FcuNKKc2c>£[&92[K% bC:b'Mdש1Zfz0\U*. pbf{ =u~/. z}wqa~kb !֡o,uS&/:Ҡj6>}CGӤ5"lFj*c^bŊa̱o &'`[:-#;;k ¦yBj_0omT=nTn-i*!O@՛3G'fJŲQ;csrrh 3i"}ˆg3vJrȕ5*X#˟|[F%L`!¦ zB&;o6l8縳8tq /˕ M-X},X fb%rX}>hѢ:#3,vCae?kі wn;(n]D: Gls뿏c%Q X݌z]`a%o1f7jpNmSSx˙5Sbz=æLKMj^NOzzQm1.JcOJftb%w0OA,6G8!4͞/|R9v&E!{׷P$) 7K0Fs4c5^ӏ2 KZ|sO{(&OuG/ T*X0֠jV4ğoQ>evskGMz^+ ;' #f'/~u  ,Y֢ ~8)O;&vv+u¯un5]i{54[*X#6r1x"#ܢm1 ^ꛫz~{}4q$Ʋv_0}ھUG5g[ظY@i9dG,A14-l靹=޷|L OKiEx ocggTG2l|E" >#BQԐ+G7{{=W4n:*fH$RX͢°֓_l>uRnB[a:a,gȦFdGkt ~|ãƗ ,Ƙ.Q sj47{^`t=|g0YC6{6rUiVkE MzCw{T|,lܭ'u}y =bwj/cu͞Yhz2 5q`}Ygp ֛[9CyF0X |5RE _NM+J&zݹjK_K!,NY{_f}wf}.\\#Fa! BT;֝^UoyoT&-`;ELShH0MqG'~b F,0\1ٺf֎us[ʠZ<fN9 7J?0p !DUI|Z,54O_!,^,/uz¾rnt)G8Ҏ#N4Z:nJWĒf/hz.5eJ ,AS3j8["A/ȏNR$Nl!~NVtŠYU 3e}X F Bf܅ =v0r*KOJ3ЄeC!]B>tNj'WƦr& ոc]HSUdP维S8<&.Kտ2K=k7'/ 1$XW;N}YޮM-\U W";#jQ19Vqx1X0L =5Dz1ssx ьu/>>>>>>ϟ'd2L6>l)**JCZ$mG(DRTT4pkdRtHˍ#,Hx<ޘ"<\B388888#̰J¯xm{%1ԂןV:SH5}yHPE+֝,)^5r豄CgMxw}QLOxQQQc)f'\eժUƼbg6! .LNNF,dggSPE%%%?\TK$ٽ3_r5ti;2m|;O>+`p-sRwɡi:,, -޳`hz2 p"MrAg8oVŔ[.Bsz)YݸGjjlX HD̬+WNXlCZ6\=yR}:.?M̈ IDATw2#E4'\f\ HZ ?mw~*0Xƥw$ɠNuz,W =z!s\-UF _Tv? mڗ'"h0*XC'Kf>YhiZDkDw9gi!n0,+h4sItm/=mH^lIVU5*&XtS7 `\80.n/rG_%lsBk4*D@JQ_V:-0p5CN6;y +19ij) }=CR9^C`\9meC+e4n?U~kP9w<) tߟݪcT<4rCPP+`܀Ks _ں ZSaX{1ļr˜|~o^o7AaZŦ0,!`,q,30K\ѤSRg3tMҳ;c9[ 3;LEc"9ZU0 JJJBg<|@~NJEdgqD^mmynaef q!M9Y];n(H"1"J6ՕÆjr+_ex.0`,,g766vÆ wy 0hRtu{ZKX֡olhֈ6h\_,& \xiŬՁ4!nS[zNɋ_8B2q:uMaHsrc9?(g6)C `84mo/(-=~mWKumߜka&dGKz;awLv #6: .̥4UCFhQ\&" `P555UUUaA3~<ɢ;!'J,^ԸsHup_4>8KP*j* AX0"lì49up+G]WIA[ú":fզ_G=z,!pnM)ȷrCb(&@0 1?>2U=Ou^io. Qz;K=IXBw } K[]GSPic/Vm5[ij$XKMMMII!5[z{{322 ~ȵBKaaaFFƐMG8--dN<,£$|y§:#A ~`E _Nl,J/ndw(dd]!4mP*K(6\"$l?<!ZԸsQ,XFp0@ *OԔ;> 5m5dVO%av!,^E 7H&~G5=Y{s__X|f b\{tttVVwvoNT1!"%6ל]XLQ@0%%%1zXBOXϺuzAR5꥙W]Ht8^$XV;tTtt4M..."{',1e\ Hל]w*[]>@DFB#k=1hdHBgBcs-$!$'X}}}ŝƖζԺ:d4G"fEb!Z wl:Ef sT*׮]t ,_i׮]Kwd]`8 . ~e+ng.ޱ9Zߴk#fܜ+l_5k֡C֭[WVVqFOOO:qDEGGGGGD"w,=B|{׶q m8 /\wf'o'/{) E~$wΈ'_J~'|rڵȑ#,s$i>ݑNo*{B\6 ipPlNWPV[[[p8>>>jjjHLU~9` F)i߾n ֟uzAJم`Qkģ:77` †[I_&wװ ;yT F!(F(J?+**jH*֭[׬YgEQH$̌}>h)Tm [YYٳ(jjj;cYK=ztҤI߿?==vժUvۃ>p]tttZZ/S㎴E[v-/bZ F*/ItM"hm۶YZZB,--1 `DB;9:Pp2e_zfH5ӟjoLի ![n]~=W#jkmwKo.JV(]J*1o%yix.oޢ5Cx[IcsM0kϞ=]z}UUUOOyy5Wd2F3ԩSwߖ-[r9!F*Κ5k;+<Ȗ-[6n܈c0 JJJ6u謩 .o),,4޾lٲqDJu'ߵkWuu`hܵk׆ JܹsrWAAAVV͛ ![n%/ӦMÁ5...MMMAZ{hu<1B(0ބمÖ`1́e 5;5ڴiӼy>}َ;om۶jmm=zh``P^XƚǦUvHֵ׏ oz}ցkIwc(HZͭŠ1Q̀+U ӹ\/\'MApOQi 4ouetDF=%ޱ9<•eFw(!Jz^PBzzz 5`]ML&sULq8LSks]QI{c\u4fKiB*69dh~z.W"n|qdޛ>}̙3WX!_~刈3gN8Dbr+ibٓ% wV)w-Q )#cBql/f8tܯ MӾ72nnnO;w.!䧟~ !&x?[uV,;oaJF4ukDO'II{O^Vf5-SOX|gBaH W`Ms&M){z~~;W~Ϟ=k׮7Xyyy)))y w]7##cHKZZ\KZZڐY#RXX1FcuNKKX"<:LOOOOO6>d?~H8BfP^IZY۠ }5ʓ#4~Sw!!opľvWۯz\߄:exLfmm-SSSSSSSp"Ww^3$?`v룏> OMM/W_꫑lnnF'&\e;O1O5WfJ ~DlURRd~PeD2x giKnT>{Ҁ]BƝу. ԕ 0f,0x*XԌ`ዋ*igb_WdB\m9. ;U3xvqvg.XLQ8R0ʆw(|>8KY&dfKQQT*"H?dZ$IQQ(d2T:FcuH$<oGxtgx]!(G:M.Y8]:>[x$驱Of-cH"vc]Xv+Wc}NjB`}ªUyŊ+1Ǻ,%K̟?ժUz^.?֭[t`\nj {(Φ(j D4Xr\CtXXD7g3J;mezv ^PF]Vf7sbX:_8SEhϰ4>aD߳n; R9k޼yl6[]&O|;Ly5#X•'"T-:~z!g:U.z<4B8vNKZ}_7dr%ḲL+l駟^|b,;HnP*O(wOx8Gz\%ޞr8jr턏x2K/&+$X s}w9)_;}?֫]H(C_2:;.@`Xst ^">En, m8 /BZ%p[ [ Y윗}ӱsjRY .4]hQ`rYm[NJ 5,+///555%%ju<##c! ^vFxtgx]d2Ԙl+[%:*j,;;k `\J*k#S>)UBr;]Ν3>d֢O0>!???555555??'-#bp'=pe?+FwNۛwlM`H0]'6gnYLy5#XW"澨jҋ L"\aBŠU:5Bΐr;XD;X((7ՂY&+R11L^΂YB j* 6n' Y<'bb [~]g3;[1o?.` o~Bh"Wql_J3c`4X/<)v({? S1?>2K@ˆwO~ٵlA  (s֎ܢ---nԳvM5wkXEk<2 D`\9Ŷh~|sVB[NXq;Q$X#ƺs8X2.v^w2 m-&pXDza\gO&dfKQQT*"H?dZ$IQQ(d2T:FcuH$<oGxtgx]!ݣGx_]\9wk4@]K("崼6wHK'.yOcx񢢢'rj*c^bŊa̱o &''G!{(Φ(j"iz.'"l:glNNMaaaf!tʒxw;k~ubTj֔4ag_SUF~Ns'~0Y{}BEERre4[aDc}{(),D4#|gٝ [ >MNa'ѶSh^sc59XYY+b-CC0YHְi7NjvBLj뭛>2m}0XNJ/CHf$ߘ؁X;PmFH,u66u4T 67t:ɝ覓 $XWBYx^GUdݖ IDAT]E1q,NR)$XC6y&WcQĘciuVU= Mê8X0/. Ww3Nd!u,-񃅝}:Br6;]t6)iX+_o Vrc%angl(LJ:>vnsU~~~>qS*ׇEEX}`%rX}>c%w0Vr+tmoQŎba=!@ r}lsު`0 Nt:`%>cX`a%o1fX},uw;T~ } (BHӫB;N}gkg !D4jNJF<Xscۡ <7ṉBx?BkT%+]0 ȱzi'_w;wEY2yv-1[4@p hG^ܾGʤ/4@piv:hs\hԱ uX4݅}:9cP$Xבc->+Xrӡu, >: {i_Yjs:,pG*6@pu$Xvju),wlKѸcBH=8PJHH(..cvwE'o\?5{\2 /a 6_噯"lvg-!䰪^)տXdq۬u,ɾ%y )3v vvvRD"FP5dʑk1͞^of/ty<]pfϦ_.#>"SE Ա{WжWFPC"3v7{3v =/X W͞a]3!=)f`PurBW{mъ,^Y0.>qxς! Zpgag50Նۭ]TSlloz5RhnT\_;-՛"q`V;'$ c#dpK*ꏽ)Uoiy7Xڶzw8`N?Bc]b^*j!9Æ_rNن,k\'“̉}W|:W2r}(X 0m|,<_*u,oc,fֱ䪲Nh'L;AetX zYx?PǪTrJKR^QZ*YB0`\:VwӈҸ-Svyb7g$XXǚEnPE m9ǎucC硏I_ V zYi8(TWcnk: sCWc^c;e>Ա  JK/XRᓨc,{K: _OX\Kѽ| WER%?KBM3Wy{#l"}UțweZ8MU$FXn wiR{g/>>>>>>ϟ'd2L6>l)**JCZ$mG(DRTT4pkdRtHˍ#,Hx<ޘ"<\B388888xlGwwL?£0!& SbAQ~I#..6LWsъ#wO5"s+?WU(,vykopbfo[#> XTT'Sݬ +Z+C"@p3 ?zz7so wV ` "3,7ֱ6Lw}pnx?KX !%h8W|^y~̽oF[#plE9`XԔBHaaaaa\7##cHKZZ\KZZZoo(fdd iXtҘL昏"<:LOOOOO6>d?~HhxZ h$+昚D],hHLˁVVo4ˊ"& '秦S÷$"I}sNA$Wm5m:E+!`VͿB!i-Z#grrr!,5 /ߧyl}ކ;~l[gO o%x0 /}gߥrUm+;~K8QY|/{KIXFcɼ~^v]/gf\E_"+ XWpN)Pk(UeNQp݌լ9̄hY{V$ \Flw1B;@5ުܣvgc5+vm00Hw  b2e<ҶOioS$NCeW~豄>D`;h:a2i~ (#KmNֈ־eTL[514#`@{ʠUl%J])UfTF Gk}j[s #!XR5+%Y,,lPyݠjGYHwoҦvf q~w/xњvI_yzK3ҷҤd4(Ո', p9e4ja;K]saR~Vt l^m/ne0 `Tqľgw_]m,(:yuțp~5z_o ~M,^ h}h-Oq95߫Ys=n/oOH/m.<:MŦFc 0Vb !Z7 `SwQ<8oQ+_ ߜka&ZgP `+^wcJE_Zʸa 3|WLy,$Xbs%}gTO<]nm]4}+_־c5Kj,@}q~,p]mKDAF_͇DvGį &NAie0p``if)p]=Wx,t받8M}^{---oۯccE-f4XG" kV=_fu+_Sֈgo y78Jbcccbb<;wıb\IX߅TUe>!MtBp獮~MY{{ 5rY"RTG"yxxx0x$!9v68/W5꥙DB]p%X4MT*Jj\n@@@CC˿-[@Ӓo*fcN)ޯpbg+Ь,^/4SNw}[l儐T:k֬ݻw_}`@/^7~]x5^֔w]֪U?_]]ݻw_~eéSfgg_Zn̙3 zĉOc.r,xf8 .kC!䭥^y3#w͜C1Km6C C lPߟP($|JSV*JR ]cdd̙35e뷳oh4_GKhkh UUUG<#qٔYr.E!Eꁒ. q!<>u-#[/;=j߫5O|_p466㨲 SR>}փ7EbXT-jjj*..Ak !Ν;pd=V{ڮ\ԡJsuu||rj%!+ɧt/f(D[8ۻ=7C VUuܭ/ݡ$Rl)BaBBw}lo2ޮz=={!Č"$6w^=uTlZ֫VJ@ \tҊ߽5.B#B4衃 !ꖢf6iJIqp%z0BMQ%_Xrd?D8Y(%myF_}C֬#++"H$2m "_s-b8//-$88Cfb17 gg &πN |>?"" ,OV|~ttceestKs_F7;6XeC/*;(蔘eCS -X3ט 3fSLa5 _x`W\o1`t YB&Lp….Dc322h 4 d(c/Do,:\}F#2pRo Y{.G`3b_捅ٙpk$lt{SOpsv2icua# gsTFy!<:KqϥiL}k4Aig3om Șʺ Ee.S#n<uƦdHl#S+p 6 [J󪲪 jkk \{bA0;zX[p]0"4="oz2k֬}B;aڱbA8'Em[:EhǸ(]˓m',*[9 y h4/%9mFp&|N]Q[X0;b͸ДXEh<0ss7U233͂HZ3V,O;'.BO*'k.kʆtCvXFy6Uccy]/vZxy DӾNj !.QuM? '%C(wb^0>~_zO%PVBX޼y3)))11C[d2Yjjjd\KrrL&3@Knnnjjjͪ '''s8O0yvaLIIIII1턍pQ˓Us'L Hqͫ.1; Get=fX8] 뀑ixE#-׫ ,;;;oooooo8{D" m "_s-b8//-$88Cfb17 gg &πN |>?"" ,OV|~tt4y>,L{mXITԣR9Cˌ3uŔ)So_x>jtŕ HOO(JL$=7Zy"a4M]†yX79 MN; X9=ywN(..w^#]Ѭ_9-lXH w.~@F>{92w]}̢zr77-STcZo1U@e5zИ4Z|ė4]UUUO?ҡ2ơ0>ji,WY[NFxG+QT8Ǜ<ηZtEey`wXKqQXX(Sn><BQY(D;* DDёQ_9-lXH w.~@F>{9 8o;>?WT ukwlmm*X?XPakaT9ӝ*yj0턍pT9O0ySth\ f5q|hNFG rƍgnnTr?UVr8UY1!J ѣ;E7tұnlR,LX8hUn{/Ɏh`hbk+1{O@`{ۣNի0; , Pݢ@N_Z{ĊxaIDAT%] YZ3l/x<(0; , %wb%OYbwX@M(R5Tw{3r#"s#(n5pĝب'\KP`˳$u'VdO-QFx/0᣷pc!av&Ś1)y8slU Eniߟ:p26ʮZu,Eh"|Eh1!\sv"?PQQxY$ Y)B0c^M\s0\FsVK2˖Z{l=uNtӮsmo6퍅16.\Rd?\TЪ'Prl0;">ؖ-'O=EQ];wMg g g{&.5-]՘Q{X/8{36ͬ=(^$ ױd0 {b?1G(z#zb<)ų%Ϡ?VG\D`΄HR7ݐ] ߊWU7!?[Q`nھzr%۞d=9I̥("g>hkC!Ml$ װYU?z vGe0MY퉀߯4:@,est**Z2C9 @"yUYU^ )sQQ݄Ulo+-E(z5KqϥiL#kV\'R5iC 6o,$΄Xs? acz½`;{n><H>y%%%X[[[XvvvYYYD"HyhK^^^pppXMZ(yyyDܡqvb|†ɳJOݟg@@@@@i'lt> O0y󣣣ِhUbbg^59egg+Jg, 8ݏg'Q* z QEem9cb ,^,AY3R X %TM! X=Q,jF( st8Nl@ X\85'$if8/٦'+A(!4->Y"/FO,XRK, 07j_# X 5f%F,8[T0ˋ`jKX_p}.G(^F*%@p]}-7YY[X(\糅 0=P`,Y^X(1ji,O^(zoro޼B_-2,55CKrrKz%99Y&%77755Cf턓9'l<;K0yvFwNp8YYYN,O`ypn߾=w%vNLJJJJJ̤눆+X@Ulõ@hc-s„ .\3 !C Y# G)*VN9E;zr͇ TU(* ,`hUeUY{A@B(1 KҘD ac=P`s5UX(1K+C(!4{jF( st8Nl@ X\85'$if8/٦'+A(!4{X~+ =P`C 0_bqyזw =P`cJ\B ͅbyY.@q]}W](P`3,Yl/HUJ `[n4@ -<-M( ifX(1艅 X(a\3!pzb渽2JÑCQDRsGk4Hk͇ 4# +j[aXH󪺹s}E?l۶6,(ڱG{کD&hZWQ캂U[[a[[[lp[GQ[x H Ţ+Xr|ܹ֭[aL\.GƢ!Y1z=4x eiEӴ4px<މ'-ZA.69G,C1WjZ"( K.͞={ʕQF޽ǏJJJjkkj56ֶo߾RY;vؽ{Z]] Ϟ;w阘JU[[oݻW ` 89vZ]]СC/2!dڴiׯߵkn0BHCCCLLÇmX\'9< e|V:~xDDw|uuuwVWSfggwʹH$beL;bYqd16ߟP($|JSV*JR /}Q(*<<=BKK !O>(jii# pdf[`ux|d|Ohhs,11qĉBp'Oĉ(ϟ?(DZ˗/7nٳgqdYCC믿x1l,vRՃ.((еϙ3G$keeeZx͛7/\ye˖]r{;͟?JIIYn{wX_oذQٌ3wd ,@&$Jg͚r常-[#~bٵkW}}nNM6cƌDooy555xUUUu-[DQF޽;;}^^^ӧO cǎ]ti\\baUVM>fŮo ;566;ӧOo M )4H$=ӧT*x lK/;VsRRѣG-ZXXիWϟ/ˑمΚ5c֭(Y_~V?~\.O YZZZXXw}}b߬`]]Սb lsܹ+Wp\Z[n |FIII?rK/dkkpX!oذaDr &  !xV$,gff_lZ[[wsU7VVV ~ao`~iٲe}ٞ={P]ɓnjR lvMn-BPT {/x[*>}:"";2ã7ƌ#HFk;+999r\*?~|֬Y&LPPPGEDDB KKKؽUkks9w\CCСCx ,$GmQSNݷoaVLXkذa .5kSuuɓuwۈD"' Bќ:uɰFijjRڇ/D?\\\f㛋ԩSC na\hM Rnݺ?{{{# dgϞutt3f 0cǎuttJ03p ,X( ,X ‰'M3n8dJw }vg/_v7G\.O-7o޼̙3͓r|&Mҽs={V;FiivT."C999n& 3*BR677߸qcś7o0`@HHn%eee>>>~rssʞ{2훼}BX`Z(<&&f̙gϞ XtW^yE$=Y333h<螪:tg WWM6}F'RTJẋ~vZBVFQytI˗/988YfӦM!!!z3|EO3f9sFמ0}_?r{-,,|o;<.=?lذ˗x}鮍BT*Ucc |WFrpp>zl\C "Zp~L&;{'!DTFEEX2{;v8p ++QW Bjuxx-Zt1_~ܹ7n>,--ݻwɓmllKHH}f͚>3!d̙aaa 燆jc)JwwuMJJH$ؾ \[oGעT*?+SꞚ3gʕ+ !'Nx;l۶mҤI/_?~=##C{[ִiӮ^*J z]eeeɓ'>>>{QT'333..^|"VHHH"P`Z~׫B 7\tI-H tXIKKK{{ QY[['( ujU?DiӦʕ+23C N.ӯ~g??QFu֬YCӴFJ  ,\}8xf]{y{{; ,@O M}Y++]vn߾}޼y cƌ%}ݾ}˵+7?-p1@baa䔞}( r3g/w(vءT*t5܀q<" i;?iX`A\\\``Mtt {4P(M4hPLLL[[n 6GFF~W?0M4);;[O>ȑ#?|)Sbqkk)Ju5@{ß~iDDX,./badVTT?B/ 6m4?pݺukHrOT{{{QQQ~\\\!555su'BBBΟ?m!//ȑ#wޝ={vHHHii***R(h~gϝ;M ([bEXXXסCv6)]JKK/^?^jmm o;ތavCggA$ <a`0yIENDB`codec2-1.2.0/doc/lockdown_3s.wav000066400000000000000000001356541445607075400164140ustar00rootroot00000000000000RIFFWAVEfmt @>data>:Lk[i6`% +ػ2(+3f.w\.~ -N  #* E;xK0*I mҤo#8@, " ^(b_"rkI_( qs!@&oGJt @:E "z'wm Rf<H+G'f֊1MO-0cg1D .'*e n@< _͠-q ?H B2M#E ['Ltn:!wxrd$:0UF(4T@ teF*&ZI ( 4{% p9i!ԈS N5 s5o(<#);\1 @ 0 L-I جX3g=*Gy"$4= 6laޫ "X K^ I ZM {.[$ %D$pghݰc8+ufЅ 2Jm61gi,J630 !A#ӁnH2`U#Y< (%T &- e!^)4Vau"ovsg!7D`9;Kݐ+a`8G&,' ?f9S&Py.Lz'2{1]}Mh:B__r$=VgF7>>20 yxSe@ y-) HEKIH'#d `D)d?V,[vY!mWgC0/  31 5XX 2 F)K]NH:I1 &!u = n+ +"Df>E*Kٶ#! ).g(w &w%%lbT #]"Oܻ2SЎ( + !N& rR2Ҋ*+ I{c ;^8V#Kyy?[23Za}ݙf  DMl)(Nf&2 @ .C!5%D8*F6 ! (4r$ ?dpH,[ $Mj5&Ql?%n)O3*h|;i޶ )tQ  R;o.r . 3<0H7/Q#׼2$v!.R-t; >E)q-Y?;,v4&o:u1V5MߌEGE :[d&տx>'?׭`ڄ,*]xwB${-{>o=ٻ׬D&%K#>zn]7p Y. 2 M wa z ^"AhG%/[%2) -!! /QqajݐY:e  $ x* M T(y @ U +s . ̼%(uiy fll-Z?G7H ;0O}ɚ3 <:- F98,erz#% cB.#5=6n1 J%̈~[/O#*yK! b: K+HV< c2r" Z Sj0 _ ,>Ai+ z D vuņ+ 3: "  ]kNBK.\ [ l?=)Ƚ$ INM{!9j qR A "۠K_YmH1eܷOZ S  Daɞ&G~$ |^Mߑs*&8G GBH l3 !Q`)] |Pr78{3; K4C MNs762YW!Y},%|_p ,S/_OA|Q_ ![)5> 0>k%# !Agv0(;s i ( q Z (3#K ݐGH ]jG98 #)6 R ,C!sǟ,#Vl* u' ! {x< X<\_$"=D)39۸; 5JP=0Dk 86gO\. 4tM)N_? ^z{ "F!IM97,B Kkr Q6e! 81 Ca  vP:-64Jf (hD;`g"8p wr"|'"tJ:3+ XD*  bi T!1A5'Դm(%_d  ' a7g._Lj y " $2aM/ ( `. R</&0<* U6sߌב ;֧̏'n>/a"kg7#S p ,3/wiKn$b/]sD)Yl]a 'Q+ Y0Ex4>8f>MzL5?[e~U w K~r!D qݟE9=|,`u?pF  s+ QؽH#*]!\S5? 0("+Q- w<HkPQNIs1*f#rGbK=EBE 6ITfq s 3ߌB/e%ݡ1H:Dt=i\ W,a: 4 `&Sj-   i%#f#6, l,' 'I"1 -es<N2G5 S>"/?C@ $ u' %J d=y'?ד}w}  r ٬C>( 'R>۬ }@,Va` `\ )& <*?dZ~&]ז#t] x+=;>/XV r -!8`LX *B*=% rԭ Wh#Z#+ :Kۘ, 9 "?C%eaNf,3! Uo'82+ QfֈG.; X BB|~;u ܁ A 'Pfi)  VECJ#εyP"kEi  wnJ/ ί*_#LU%ԅ$ <5 TK5$ %j2 #h" 1y S d`el%}JVc# #6bN0\ $$+mbϼ'T*y*KM& su&=!+ӘR !4׀N  Q,[%1&YtL ϮnF)3Օac32Z< &Aa]_#'#RyFS .C ,o 02f$=6*{2ud _ I?2 Y1 N * 35  -6~d5> +9hU$969Y' & 5 J" g A A7xu m @+)D4MQS Z ]TZ ڎ7NT_m0O] yy po [#WO # ڎWU%^ 2*f9 w c.J { Jɼ2%Y) $ ja llka #_8ϩ3GAG&; ?NXa|(5!"Y`g2ڧ&O7-KI/O7,xMIr+!9 cLP uj )p  %p7o zzؾp$#(Yh';0T!NahQ*S# Ψ'26'oQ a +{f" (>+^.f n3[T%IJDf.)uJ )rv[4;jp:B пv zY l!o7XeS pQf @+;ק#0un,^>BQ n y $ 8{ `e =BU?BGڵP>~#UC l-\.5); U [.-O T!,UW%h~+c<"m:ۓޕ7%rsi&{Wԭ|!? S( f9+:h x(~90@'/]dW%735 ? S/#!K1Rf dϟZ*"64Զ/b_Eg0:2ѝK+Gw%) J+J(˃? =S3 q2- yrn -~"2Mq nh2II?zn_܁ o3yym|\v&Zl-{Y 6ZEL$  䂾iQ/ 7 > %y  6v\iE  S ^ v·ׄ P4`k>C R !#ϼw" .ahygC n24ga^B۽Xrv }Z @~5).SA + )մv=?"@i$s6^#Aߗ">"k*d9(=Gs'B!d1z  K36f7)hk #$CeNKN ƞ4K)aVj$ &ǹW$#U Lѿ l!'}!TU#/m$o<=c&$r@ߢ361@L @C ˎ_z )j,R)^. :r1]؉ b"G?п=$> B tph ]E=L۴",'> 3[0+mLYv  +R]=4+4>;c52# !H *B RM8eYt0> O/ >-&8ք(T"#ظ~U$ #e% +CK0]y!SO^ Hg1ް#=Q19gL V!ElfKQH x$[ED")cj"(fl Mi"g3-j'[34܍uM40",3 Q"8ިǐW @6u!M'OZ 5/  z9 f( ~ -Pѿh)HB/$ ,& /۷?{اm),!WD< N+ ¿+B$-9 <*~ܿkH-2 $ r.5}%fX }4H79*rG&iI  U 1TH( e -5*, `l-5"yH 'V~#pX&Q=i Xݴ%  H.[6ux; 2cM$ c E3>+"Y%j@%3܂c"A!%%  V' $)(ZnQ~vp# ݞ^ o!X$,4 HVt<53,qګu%" Z?-y-LА7kC'`r=^>]W 0Ҋ 3%j'ܧ%5{F g_z=ޏӵҍ|C5* 77O $G/Rc<ݭX k#8#i_d:(x\M6$RuI@G#R"%/z^LkZ0/(RW)O'ͪ'!夽jJ& H+H,, 5Fh ܝa?V$bT_=g%B=YfL ~)%N(P 6J%B  g O6cR'l&nI*UC | D@ O; $;9;9 F?;&X E6HeUqb Vh,t0U&5ic.N8 d?u )w&(3 5 mx ځڱ /mѶ=zI#hS&$Be\(HYsxeh*"Z`/ @˙  7r ݧ$LM* { - &1%&$%~!Ws<I$4i?ނ"L#@غ-|*}8ؚ' h'ndZ*,9 #ؼHDQ a(Daю$6#b{TvVv2.D>/ @ x2 ,35-29**" Hs՚x+7 bqy <$IQj!#*$X3K{# SL"!x rUD*,C/ ;Np4#\3#@+f9˦ 8w? ׾9 &;^Z[E'&U˳ +J?usW >hk'Xp }&1Q4-`K80,J|!MH !) =S݋c B&ݝ 6y! L 77w!G5:> f].զ R+?"y.dF2K$5?Zs-& 4q#x1 R!m&2i/CFY 5D"[ h) R+ 3N 1~Bl!I?@n*B%hӠ-\q8&0 u6ּtp8I/ "~91PrBNE *5H/ O.3"?eɡ%"1m&7*B>=R D=8 &SL c j\Bq:*2_Eu8d=^ Rܹ / iB "mC6V,|m7*&X j[] {is5.G6D92%wm-iS ,aR% , 6+p ~7g ,+B-w t 8%#r&,@r} 2 &J@: hh3 ap,1 ]eC0??>ZH0(~bz&$~l{K%$Nli<5%?A AZтK:~qJ[s_1f 4 W #@; 7*lcS]s/#?(&uۉ2pV ~"? %' Jl$i" FB؞, .-w2Y0Q*0!9v32S %ڕ]+AJ K3 _ڇC7 > T3% 4)xG]^7+C .[ Dx3q  +'Ԋh$:x} OS/8Foьm=$! ?6N^tv! P)p$揺.!(6uӘ/;h GG evn m ! B y;Gm?31KP " 7r nݛ i=.Vŧ. H~ nЍ3W\$άH[F FD/RPC5 Kޙ'l  ;2b;l'XvG&=r;8V~ 5 ɝ1 Z=  h'/8[zBJz 8B,'-Ο3W$I bLֆ+z`*"Hl C:Mwy. N< ܐ (Z 6] | H:$+9iCuQ(~-2 j) $(W~ a" 9+d I6'nbb< ;&pW)f T93j"^טׄY>q)I0=e1/- ~ofI  iHF"P$ ] ݮ݉L'bw"#- m9!`Z; %)+"9"z5} VatК2O Wa1 @wQC< to 7O^N" La6{ %A ?vۮs l͗0/@"#% b#u2Q*VZ= w)-4ڱ)Y;91ykoPږ/n8)?BARl t՚O # 4 y3Z6jnEkx B"D),&;P  |CAt<u\ # !Vg _D,R"Kݼh %"r-' ~9A5vf (9g !rh Ү8 n P8@ YҔ+&O  nW)f J\|!$$$>tqY;H#B.0*X_!-(4!,Z) \ .c,7Kf$bi<@XC//>KzˤP((BM*$'` Dg+%:7L*1+| )/"*1Ū,XHa jJ,!R e!_(DP/OE{4,;@ z$-=Toʋ>-=%ZXkY8 3 >a F n& A2 Cv 6%\Q נ 4 d'Uɻ )-usi67ʄ1 h[:*4 #&)ac|HU10$8n5&n*-/r$3"dRJHo*׼. ՞?Wj`Um6,D -V995xR1$_0GUW&H @*(6A!yOR08'<ABUjo a1 #,*#J-9 r,ܚ~ &%m_RژA}2 ` %o%43<C Fq-:B&$#r$D =W7ws߁`)f00R^У N!-ߞ&I' Д[`$Tc(đGJn<7tAx;ώU'?ڛ]7Y&SNFk*+ N2._.v' !p Jt! 03b/.pK3 xw0B sD8T0R|DejN#T) aKf;F~Pm1zg( c$6 zЉ`7 7jn neiYJ5XD~4٢&EIg[`:@9 iRȢ> a751 "% z,%* ~ @ dP }Uh"S"# z xb!C +E r/YyOT)Th9!N FQRDv =Z e V t) T sp&VHR 5t8t Y5Q u$7D /&)eJ$ _.80@J-C)#\W Qy y@$sC') zA\l"|0-ܫ!5%L P3|_ 12"$GD)Pv!0$_z9# bQt/?7 IR]߽=F%ftSX 80= "N@# ކ/W_1v@F + /׏V"" %0Ciڴ2o16+6&fq:$8Kn.(;k r2:;.^)- kQ8 2 *JsA0Ӵ. XOdaR T ԮD]&kK CW Z1 n' Bt"JUAw$ v*נ)% @mU3!uQ @e 7&a!lI+*E$ lnM2 { |EpP6Op]H( )Ȗ"V56aBEe, gyKo'4"(H 553 xӝ4 8 P )ȯWa/k-@'C֔+RD.e&>6[O_ M~&i%J !H{fb()I.43?cx+ٔ2 -!~#FƢv+\ ` XQ N<~I+ѶF". 3 `̷#c$x| ]܁E@M xpv/;EJڹ %^bޥ8$ Pq: Wd1k"*4`/䣺 ߆I&U1'W!׸! s#+;\!-_ "GS /ڤ  =nLd l_ {PwK :ҹM*?#- J'  v0G EI3]%%9'![V+٘׏#6[ "4x7bWj0 1# R=WAg Vg20 3 $_q6D:*=+? V$ cbK"υ3)\g)֐qe An0pk "& "H^\%L}& h1ܚ  b#μt +)yK S_q 7#6"3oY@O(%'& APG gEDH5&`?pܨ*U_R*sPξ17fӶO0;&P< *8,lxo*] >&j.O # ]A܉Wa5I(- d' r@Э$! 1Fr 2 # u3<Kp; `~H} j&r   _%d9 ')SK]#pV)3ip:  e dvc\2;~0#  4`! Hޅ m&ݘ+ Qt}~(nSOY=ڿ" 6sP j8J+<w! 2  -(je2H1FN0#-h $'ov4MrG 'R*#ޅp: E '-ia&BD%0-n'* |m nVH$̸EIG?"=Y$+ߧɳ2jr 668!lRXIL;$%I[  p-"&]  ]& R *5˂d/,:$s#(#=B#!}p)8TL +\X(+[q_UA !iu `3 b_ô{8A%-P ( q-ڐ|ې*t D CjVaw: QBu #)V4 Ki>g]֫'"s$%u .? pͲ3 !hO'^iG>$ 3,3.ِߓ? !2%B9?'J"p5#Obݖ#3 <+o"Z :\>G @޺[ TP̨9D 8 !Sj`[ @ =@rGLb.T EVM6r_W  #j}5` 'hHN36` ֝ d'<D?$a1SW&  $I"_~l)D[._ n 2W#" R ++  "z'1G-# eWd8vBQ0zx"t lk NZ!:0b# )$ zan M'i y:I7%N !~KH4c"C(lN ,%JϢU @tEڸDwz(  WNP+Lͬ2;C,ӿy]4e^`"3:<Ķ=' M!`1E "ԙ-+%l8|  ڽ;%XPD VK|(ZTܷ:q'52 /8 9=.Vծo1!Jg21 9݁"NRI LE76#(6 ̲pe% k hs~p%:#fy l#j&N lk7ou4)Pz<  S/TR^*CI2` ƧuI5 :dزuj('f2F/G:Qq6#" W^7 ? A+Yq<[>}n25 ;qκ!n#^N/{34 < I : o[;"Ԣ=f/h@\""ۧ "Wy4q@_,fG5b Etyӥ Me);ѩ!D9R˿ A`)Dі."Umb # mJBK S'eZLl /1"9/!ЕPu.Yn*yդ'Od5j2(JLv/0W9E E A {=! p6%Q](P?4L .f iQ\(g  =Vx*ԋ&s.4Q[ FQ'lZ0OZv3Wl8}s 9dT3xlKC1?LQ?[*$Vtܯ\!F^)SQs cL'V)9,c؄Cx #n& "k (" Nh4 u Jc 848*E $t, +]-*;xՅ߄' OC>Rc9XFlO+J %,һ .[4a2+܏d4f$&86֮*' B\RD  s ##M7 }M,'5YRKGB iψбK J  OS5(b Yu&e|k7 o4Io) 60mn/N! > r]cv_ 22cߓsY)NN  (72{ y I YLC-%ӭ9+ &Df%hL : PZ^" ԈE+&?mMJ cS>ɰ .ެ@>  X dA *'^Qry#5UEٕ!6" d ?u  $J(; bqD ,'&МZ&ir {hCS ggN,m,r { ߴk pz !:z ] R  'G 1 c_ ')T#Rd:rK1]L*!.O,u}+ 0h% C#%qn'0a [5+#^ %8,O(o&Y$/ ag2ߞ i Gp;(&E)^4q8 y f _* {u ,&G ;4CKO=  [? ٖߊ-6d׻%b+1*y|\%%a:oC ;f,K ` +kY :|L>zqۨ *3+z Du!^Uړ!3#O .TA|Ӭd-)IxmZ; 43!_D* ~#@- YSAD;E~1) ` xi s0!5eC?K]p$(## 0т.8 .&$k]$l58/ߧ O9*s!׀ 9kw,6r:%C2I!!t9GZjń"(^ NDҾyB lD g|<9> 8: PӼ߂3 E } Ne!ulf@$"`'U.9 !; XԷfA b M+ W" $BK/N1 V <&4D7*]]\, SQ,+<Yݟ72*N) ݏ@ x=__߾ < u[-oޤ-r'KJT< \dLF99,U,Xż ,a {~ ۔%( M7D'[>Y02]i[]^:z6 [ Tf v3.nFyPbo*! YGU#4$٪vAz U|YtD"t} g(A0cT(#p)| lh(2heGdC T ho&+ 2$*-7pK kx&x U A #Ae|M<;&+ZD5! "=|1sWUA/8 /? GD -<ޓT t BҸOL"ꜳ8C,Oަa(sz pܽAb+%rղ8w"ZҏnU.8tݞ<+ lX{u !t4%C (\a)*öt(>l G2*W4Vh&suΐ4(}uQ݁ f1Bm$(UB& ktX_.N<  *͸{$[TBQj!D_cs> /'q"beZ M@ۏ._ED 5/q oqM4a)#J #&N𯸞NJ e:#N3T75ַԤC6(3ܟ _@ Sݔ$>vopfٸ/S  b !'a;ۡgf~LF0 w / ȁ)B $5+ NIM!HB'W) 8RVѡ |RE:9O#$rz*;y(% әJ ߂5 3 "n,REy8g?P P[1p ($* ٔ6AB~ e)MSլ>5 $~֖$wU K| 6.##an*eݕ߱A" )И " eX+7 '#pׯRc! 1Nj$ 4KB1a&&!W {OOƐp_- q"pM ( Տ%[" s 2*D, ' UZ&0$lW&G3$,:O< ;v -&S>_6'H ZI e $`v #: WZ!c&0G+"+;N;ht֞"$K:dJ ey]|b`&) Zt9$=$Aݡg) }DZow2&}(?## z?  % : 8Y("<`mi0鉿}(xY7G5~Xڏ" $d ~,:G Y8r*ƿS,2@o$ގ&-#B}~ >jؚ5nH'۞ 1 !>}b6N>hvb ;&  Eی$m7"s4+~52#8 AV<@ *z ,* l4 1?*h( "  mk)h#  /"3WAr*q$޲V |@ 'Wu21 )X=#2F " :9Evz> ܝ.Df@ $ /u6,%;,96. idfp$1>N;bvs0*BI ޮ-?%Mx \ u]6 ~ !v9;`prU0 3 # ~5'|Ud O2Z x"(/Bu'i { f~&2~eMe *`Jn$<v# .wؐ3<g~/R!mܨsL | lfB Pkr K D1&  Uc!JX !% ;h2W;p݌a>\-/-o px2v!$K-M4 LR};^38a*'&6$V$s !Y# K*JxEߞ^)K'  ]Ø=Wt{ ڿ%* ;7Jkv΃rB*8"%O;c܏*I fٝ-F3 TǎO]Vzk+l*Ai WbyA" 'qCt/" l )/t/;Ki-b"@k<[$grJ- `&6Od wpR ?# DR~[] (P: _ /*pC  |p$U?#"  -W҈ w#2g2陻~t'?"Xהe"3"˳}EB{,I mjn B\ fzDa|%f  {K/? <p,)/,a@!D w޾ӥ;|JkFVsCh &8Fx. lf`!#"A  9#j4Hc.}u̜`#&q:+|- ) -!VQu;91%#rHG vpeܫ#Je' 9?  '7? Gp q562ٰ z" ُ*!.QT<+8hF ")R;*,/o mX;` ض 5 yxR͎"xd #9!#j b(Y&| +W[:A,p4"k j߆-,s +sc5I$:qk1 s@J% T~4<](f-rU̷y#%,\ R2޻V&.!^VaXՆY vQ>ۨg.& kM0*0 Hн:%'7hR׈?"L*/oa  ~ j"_}Zi 9r% \!bt\  OԔ!,a z  7=غ04G *Dlbx / `~ &f#=l N)2(f_#t-< " 9n-k&  X;Wx@A 4$I4xO\X BXx!(3=^Z 5`0Z+ۊ-:9 Q((*0(= 3H F >k"%a$Ki%P> ܤC0 +<YW<y!  6:qc&  eI! a<VQ O N2xڵvl){+*{.^:C'\ 0߳ -1HjZ0/$cEx@"GL "~6%Y4^ .fd @V /)d\B0e"K$q1 D`у%"$4ZO  o"v- Z'&^y2W`#f:qon%8 4ݘogα|^JFcϨM/gT ~ u \[ * !~U  nS2 /H#C rf,Z zs  c t 3$4 ` m{12pǎs\[[*S ӝT(]-iXc!K '!/xQ h 3%_MS~# *> C $+ 1d.{0'!GДB (C%ew-(2D(c p* [5N Z!+q >>f!!+1')o!^H,ޡ0 Xz7Z Nn!Z$ G:)i>my P4.\v !x#k*8<ΈH3Oe #% 0! :a ޫ~ (Z3Zȟ)N+mؗU'l] kـ=T! ?"<.SӚg&l(zځ$I{JB^*%rc& VH Ltڷy4!C !"9 t:: To$- %-렼{ 48)Kٶ"SCcK8"s&8#Qi+3d'?' (ǁW/@2b3 ^ӻ9l$#9No ކ'z*8_ܸy xv'넻!*( ,4&Gǫ49Y- O l&'ڨLw1JQ9^~3**Q{7T COLM0.H$#ͪ;C#6["w/0nf &Z%,(눤ùx*d~8b:1ݵ[03cVhg FWJZNP ]#v$!#R\;#' s ,1, S Hi$SUrX NA'u6q\N7  ~<{@K Ʀ3aiMe $c V G#$=2س9~]]ֆ"]ۗ?0DUz Kzy8VA} ' ߍ[:Q_Rn^.CD^ d`J ^r?U;(Q(d",-ND ʓ[ !Y : OCg eܚu WgG! :%2 ܱgk#!3P65p d,kbY! R _40ݗ1 |tsd**!,#_q0]3.\ w"r/+p B \$G2P؋ lEV?!_Jx.<wND+@#w * h", qM ^ `Qb'DbW^") %)W#+L 2'F ]zFO-x ʿ,B(c @h E| H >8*)n-5G[ 8X%5./ %m$,Iz<)?C pZ{t'&]ڑ#rdP ws+79 M2  M#;7<3,jyt/ [.(*!p` Bj %'۠z8{>#T_>X8C "s4 /B&1}-s%! 7ش(: 3rɻR OT&֙Y٣U!!I1 v,+1-8<'8=9 &Y J*L ;!*K FM!۹/`~.4(g l"r R}թ5?{ 9"n*eq2R %,~ +-q$ !X:T S D(O-yߏ WߣckԻ ݅>x  \Ԣ %m^4Q K pR2*\/?;#.30 >3!DŽ.#K;M :b8,F_"p5*?a8[!o%]p~y `Y,O%YA  U?ia(A՗ v%gٔ >O)o rM@#B EP F**ʉ l.3+B!o V y'6ABH&"Y eRx $Q%wY ]Q / :+F dg uj=f3Z1Y n eг0s 9 o*< @:-~[ ht(g-6'?- ` `ۗ h g d I'{+X [X(.8Jf3í(YcdL4<3׾"sؓ/"(*D*' 0Q.tg}P#ZpR6N9f>2(+se  }/LgR^\0|? I $XR3`: *K8 oڗ# Z/ >_֦k!S-n G ( p: ?3U $0&,n ?A+OL [ 9M&1Fjq9 RD+ 9F#-+;"#mXsjKrD Oi !i tv rS9]N R0 7d [5=Ggޟv$ &)T! ܚ7;}#:$UONPh(b5 H3c Uh b0j5v))\r ilwx!c e L-:G(  fC(,+D?cg+S &-Qcpl,Kn%:L6iH$ּ $5g : D +O$/ג *9&% "P@@k HP8AݼOk+Kd A * =_^UR^ .f2KyABs3c*vDŞBD ( V n\7tzMB9Φ& ,q5l rL%''c.-{ k.  jdU `z = S 7j36@MѶ]}2ݽi*5 Ym {9m`ajw Cz( Ne*݊ .keRCvB(#+]jE1*V۹!{2,WZ,vv3: l!:&y|ao#EJp-=a3TP/'iԂjT$?TK,( ^3w ,N TF1@n  J(| ԡ()%V!c Q$<40=BC؄7 T:`q 04! tީe%oޥ&&~ }> <I$ d؅`\or nCۻ M277h78Ґg+?$~ & *,))ߩ 235ZhQ#0= $P %K8cT: =ĕkI< M d1})c:_D;o W8: 3r g΋"CV'S'p{?&:ٓ$ ,QWg A=0Q 2 <{A " 1P;"R #B <7*9YH$= @2Aؗ:(\> L! zbܲ9 NNIBpY6k!O ! NTe1"ށ ,G٧[7 Hx5M  5{2'wK `+!K:ѱh' ;h$0dg\Y  W/ / ;ٲAr AJt5^> y @  $fl)1a VOCsRh."$L֟D7;zf) M G{DP h=^;(9r c |g- 3j Tȯ40 ץ"?g!vِ/ )Ђ2,w9~JݑM 17.}И0 I+ !e2! sZ#O&TXx Ԟ"9IO}=1c`" ] g6M jڳS/O]W}-䍸Sn.Oa-(g(C}1B"$:(--6,Qq~/ փ'xU R yُ{"*kL%&Dh:%_ }- ޿, iT+Ck 4,z B*v':41%&N@l@r q0{ A$o={Έ;&u!g C!H6$*' UBj#")7q!SG#981n 7$]ܻͧ CT.+! ަ B( F+̓$D E U,& q4F?  (&}**NQ ^z zctGayx" cM& ߝ|;c6yWBkFM> VT} t ~X ۡ s& Yf*m[jߠw' (4&jCz N#40z8 Eյ-  r [ݢ7 g i &Q_J$&P!= Ea bۜeu L@P!<:> L0 mr' lkga!N_F#Ws9! N T.@'8ֽD*fK&?L4 "foٻϥ$-96*5ȴ PḒ{)!1:6p1K9 z)hZ bUQ-)S yUG%X 6XJU[!*R1M;Ī{ *I0; c52|c%mr /|**n~  #8 S:R ,'[d {ŪfX p(n-; c  55~@$[/ & *ʀm {-A2dK(+* b!r'2'.¿1#".I N"@J)B#$ c a. _E ڻJ1Tb[9'ӡ5l$>)$_74 0 ڛUD 0u M03ߘh *jɳ.H'2mX) EMA*(B>2 .zK ,dB7 T=aFt՞51.$u{b:i!1|] +DKo ~m*B K%y/^>2F `N ~W @#ْ e4e V Ztrj {9 fa$LlH/nV! g"fWs40DEھ;//ߟ "jLGiy5bɟT [aHЪ 6lȒק 0e(e.2E  u@` @%U8@}Ggf[NQmq0 ^ /yg /8#&zVH&G,V2H,)/i :2&#  !L;c < o2&8haIu _+ (S3'fۦL0 $V= q*Dj9 '8- u  &<2+0c /*۪2##):L F <jڷ&DKK-nA½I%D ;/!7 ~l \ &ϝ2<- C ,T : !#*هG/rn٫z(F7qn@{^ 쿯5Fv 3}%  !j}A7I4A<K"&G3R 2~%;d =i (Z0Nq1q Pu2)k)!G*ltSo M I״s bx N, Fye:V"WW w(0GY 1EPd>  ]CHJ% Ja7 qQe R a N# 3# ?s:,f ( 8 )N1Y3 iΝ/'3 kI?i;  q U'wP167[(,5(ɩqʹILa -"Dۅh&.] Gugh )?-&.,V()rU 3% Agm}lZpREpa S-q \ %9hkvKuHDK4;dI*1{" ?$Hq]I@ :2L G?8 e  BbJEԒ? % <PiBAES J*:Aahϵֹ2 Z1! v9Ke(G1hPsl1: 'E[܏8fټpFD-ߴuܠ !]`  Oߗ %I(!Bqډ .bͩ0M|[j6r _"S  U(*/ ӣs(j ʯ9/ d4N6Ϻ~3?] ]t e)Y=.+fy 'M2mW"H%DCe3:&)́|=z&*TЗ : hzZېc|w&{΅U yNf. L{1+Num0ps  7{^Wٖ) J7izA//@gM- H>3%)t A@@߮b#'T=4uXpZn *ky <)eǖ+C XbtH1Oii`B^ GI% `r)!)-ݻ!V(9!g)2˩;(&"L 7W27V6B=zzxT t"6ܬV  #i#Xz j^% @ܘͲ! f//G/d Ӿ:nl++S%үDmC4n6[ GE  YUyi}Y 4 $sޟrE  G/ ]ۮA1!b. Qe/ڻ1 6 7K )8)|ZQ:ӪŖ n[z -!\<[O 'Ҕ .  `-m0"VQeݧ;.>[%, NOY)|  (Έ$>'1%\ 8*w84=;h¯+<( CebMy m--")6RX)aUB kؠuZڙ2.e [ήgE+3#۴ P*A ')rUq , P9$%P8Z5_<31%*Dr&j /D5)$?|" FNW 5Iyݶm91 >/ "*.5D -q!B{s _ow 8 * ބb)f B4t 8*V  8=7!=1\Ae o Q֧a.El\*i(@.d<'m8L-]u W7L=J.* ]@$T[(vL~}U:d NE7ja+*%[%e6F%;ӹЃ /  |" _ D=y% }! I ן+0 ;*/ܺ)0H rc{~5m"v =k2wv"cER'8xeaP+$.`zR Ho; (86)8c,Hy-=jb t,ܟ,-#ၹF2Q/zj+110 |U)Y#ge/lR %mN- vKCIQ?H+^8o4qڗ_codec2-1.2.0/doc/modem_codec_frame_design.ods000066400000000000000000000722601445607075400211110ustar00rootroot00000000000000PK Vl9..mimetypeapplication/vnd.oasis.opendocument.spreadsheetPK VConfigurations2/floater/PK VConfigurations2/menubar/PK VConfigurations2/popupmenu/PK VConfigurations2/toolbar/PK V'Configurations2/accelerator/current.xmlPKPK VConfigurations2/statusbar/PK VConfigurations2/progressbar/PK VConfigurations2/toolpanel/PK VConfigurations2/images/Bitmaps/PK V manifest.rdf͓n0 H]Z~zk[W.X/1N{4NeqH(9O e$[&(RKD7]Ynr?˦Z .gٌ71#lc׈]*j_m4->S{CqUIf) 6Z٢pxsqC;5k%e1hhc)[m{GIWbpT]vZ-x2j?UBh71fs@)M2{&L#VS![7/ *zbcpQU<29< ,s"U͖5 ͤ5s)c$j h[Ԏ3$s.+yUU t3VxT$Qk$""竎Zt~9lۺ/Q E.%ϱբ>aT3e+>7*:&1vJ!6XS4-6,OPYUV1CeuY`)" ]ȾJRveսwbHRlo/ח&Pv-,S՝CיEMK>?ڣү7'1z1Nq:c/" ESp> ;%W1޾1RX(Y{f}غYz҇o7 gjd;AھBN7S?`${9,.M݆Q%vr.w!9N1`^" Ѭi*m<޻XF;TX۲√o7Dk@ ci`vo$FA^׌ :gM KPi=ȎIDZ{pa8 mJH-: ]Jmi\PMbv7=4E yTZ;ݺV#C܎$݈oE,)ڂK$xN@Z;~5K(c74섡a8 2 2& nfJ05ŌVz:f{8% #7JNFeTvlH owP.XDoz~Bj %Cf W3ŐuZz_\\'\ ux~GNMNDi$ag>q| LJ)=pp%aopqpYع??}jn_5UOs:U{R8;V^VUSuW1ķu(6DE 4݋^5,Ўr[l5FAε, ί]uǯ+}j(ey&| 5:݈J(ORb&! l*S_rǮw[l$\cS 1xj'Nv,ҿ_ʊeFB9y23e~ieda ~uΎP~Ilq$o%Յ2\Z VWWWNrV_ "hUx~Y>ƮZ" 0fU#dHWVQ)39bQmPء>.vڿ=PKz9};PK V settings.xml]w:ϯ3֯N?ZofiH8$ן3ұ:E[;~{`|RP?)-b0Lk6BbvH!c|zcZAԥ5 Um8-m?JI1bèkot@4vG"nsORa@I#e$v *nS>:} deĆ`s7z,A_;]ͺiaK0e"8klZN#Y){b:m>~O.b;YAA +_Uv{ul@p `|#F$?~W%̏U`˥RE~rXs硇uu aÁ񀓃z^  $pI<Ó'{韝r} y덬o5wnz&&b, A82whax#e3ǟ:U_!Gvze*Mo4RS{4LjU]Rn m(qjA0?<^`bݱhfTf\okO\'e_۱z7\:g;uF]iRKp}Y]lJ?&dA_]Tpas޺c;PYTo:>:&ɻxbHt8^ ]k`18 PmL?ӟk"6 b1k^>s=.ϗWc !al?EU 煛Jux +4b}.l9y-d"Rcʞp^YfpeUt_̗NOs~\L> Zfeq|os7M?)Zd쨣僩qs_[0I B$lG9v|S%fpeSCU<ω؂A*ufŴ PKo{L6nPK V{^&^&Thumbnails/thumbnail.pngPNG  IHDRʼn7PLTE           "")(2")"$$$%',&(++%!-)%++*"*2'/8+-2+3<4,&21/<2'<3*44436:58<855979>:6;;<-7@7CCCDFIFHLKFCHFHNIEKJJEKRDNXJMRFP[LQUKR[RLGPOPYRKSSSSVYUX\ZVSXWX]XU\[[MXbT[cT^i[]bY^h\ag\fp]hr`VKbXNc]Wga\pf\tj_ccdbejdimjfbmhdkkkdgqdkrenxjnrjnxfpzlquks{pgarkermjxmcpopuplzpf{skwwxmvnxt|v}z|vm{s~{~t{v{}ûɽ¸ĻȾ»Ƽ#IDATx T[׹/Ivvt4muS^l:U%L@Nd1GJ2A~62A{e G*#b2 ,)%qA,}~&i25霳?;lH62uSgdYz *gڑOUʡA켍ĵdggOyg4Ƴ(N>]@\&_CjB=Kvo O9_[yed ꙂLcZ|;`#\=B5d_vUxb)ٟ@֓o_Ӑ5EK;7=p5aeϝYmPps!K,{=4h#3 ,z,rŻNjM?B$ZE%ޯ\gKܥY \ğI,_`d~GLXDzY_‹YgqQ#$*\2CӉet7 Nz` 8ej7!@\FbuFꛏ=nGRZt!&}PwČ;k@uɜ''28?<73'oe.N)GzS/V':O_"6=g7c/߼ؖ0WWD U`Z-xc{55YxmBY^0=Kag/O'Kꇞw:1o?mx93s \+dg _77os~ɂd9GqAraB7K[XzpgsW'-c "7YD2Yh~i8͚=?؊P+< `fb@-!·&fBrjD4A}0n-/o%o,80i9\c{SE_c\9{b}D60Ρv"8:S`nz =ΖO{ir .lԾ嗶VmTUtt !+?ؤXDF<*w̻r5$:wŮF/}vp4lv/[W&VWd9CԴ1ź=0;emWV7Nu *-K>\ǁ=E;G+8zABR A|ߖ*O&1u9\Ť梁SB}2E!T)kepƨ]6m!2>:W'G;i_cVK80rI9?ЄO~Is$/zbq%&6_&$D%O : D"@d 2 D"@s=Q2{wj'msbCQ]f B*AS$B} 2װlTiY6 CK.n_]V =',P"ɲ%p([<QӒvRHs57=[d= W<4 -/=ScG t/N~pF}#®ꛤG? q6?,8"@*N"mÐ q@\GkM¤N'ZTzېCEVR Cy2QXkax{h-Ms-G#cF|D [`|  d!6BBٗuҵr/af?qIgvkϺ- {DUt[4yVaa;\ q\W;6ŵDf jzZH թӺnM6HMk!W~*&<;!':, ?~'W:+fQ9_$õVpz@)ȵsb\B%&lx푴KM =ߒ=V]շ) ,6D1 Şȁ=V+3(3 Qo5 ia.dЬh!FrgpvTCɵt-j d |dunU@mE,XP@l-2DG P$K"4GD!H}0E4O[TҌ(~2j$DdsD_~K8Ḉ]?m6!ĜןtTtYV̋23Oh&괌'd*B2dyyd/p@/4.VIb%$9mzsl\>lA1L 8(#9clі7@rRvo;1j4XəBD(NK3LVP`\ vMRfhP!7LuNo=R&=R؁H>89kq3 l "W.AHhS!%Osip+cH[Mt''qTpW!4@ : Llt2}O@j>K[`֎[nUOzgPe,"h\Y:&m0)>/&L_q:.̙a3+ ;,jx̊NslzKSK?vyT祩>E֮A6ԣ7M^-ea!Q32'Xp\0[Ha Z2>n v1DHv!tꈡxBgrM:zZpEkADlM{*JL=>R_gψݽ w87Φ{3/olܪEVF'Ռ3bkW]gꖘ]7עNbo<1bCv Gv2Xb6{0mkMJ`᫄A1juʢs'*U4m= &U^Hp$*ی!&C*$e/ O9ъ_ÒKC T5l@pl|r"5 f9eN4,lR.pMu c'g]HpTԷ_*P9Lr!^(!e.D֫58&E]&B.Uo $-Tht?!ibOO0-L>s?#v[[TkiF+9eslM?\Y\@[bC&t`*E#*  ך0i77٦*j Ϫ lW t h5]L KFxs$o>%%Mu3@P^F?.(Dp5 5حx`Nxpb!wϭ&9u @#E$9c#ξMjD'il+zT}!S{u\BMI;L]GȚwCY3SyU䶖H %2K&C6d~c!nķĽtvCh-Mo*DޜZw.KGNyy!d+b -e1 Y7ɍZmGY97 m'6()TT^U FeBC`3~$F`~ W>Nβ9*9(jwT+Tk5%-"kLrdȎNؤLl= &%)OB)_ Yɩ0MuJ,BcP~:JqQAҿ(&D,#vbT%t^.TD}pVo_hZP44'yKJU/Gvؔfՠ9Ѿ;e rښ<ѲC;z@56g{frٻ]R{~BsH[=QpCϕQ;]mxp']ٱn Bm)ڮ#fR,YZ9N{;eoA@̒F3 hSCWu9DNT(0)S48 rnDԚm kf-ʄ6{١ ǹqw 0&iGbf"rj;% %yNj׭ՃmMvwnYYiqNvaTQ_a f= n3l4ǢrtThJϺ&c/J⭋E˷VhD"@d 2/}sy[1tos#v1]s C@\)p4H!(}TJ=#L+EQap&Q&mN)N1J}ʺ6 /PL5n( WJˡG*Gvqe;DfIbGtՌvD3`VƦi堝܍kh{b!eoA =(Lټu2U6w,(Lמe5ζ-/'pLz(h(ai6l)lv x}xo9̍bN3F;$,-Z4Ӑ-V䌈Z|TL0DrLgRҡɔ˚ D&8!nja8gLTx*z߃AQ ?Œ2tc+^KE<)KtPxH+*13\U3.:6~[Yձݣһ׎yT8NO9r !u T(rxʙj8EtLźpU_)h H5K&Ed@ mԙV.< iLHqqY_<Թ֊E  q]ccAtnjpN rnҳ,z+ gVw5:b蝹 ,C;)~ Mua^;9uSSc&kd ":GX5Kk$FK5kZe-ƹgEz280U3p`.x nyc:9YT޾|n"HI^q] ʽ UGvUӋX'hǏC{(( qqt\h]W2(Z5vś'sIqZa$aD3:O+9A  YBoZvMpT0\С|:l,yJS j>(!=9bQ&Im3h2$g<O4" r.I}oj@Q1|PX4QH@)/aoT|ģ1 Qt/ѡ;j?֊-sZJcrOQN$8ɑK:bGy$C Ue&jP#q %ɷ̘C /QpjM[YJn쥍s;6ì^C6+ѿrh2"Slh3l2dۚƑW4E7@"\TH'W44~lR6ɾ8xI;D>B,FPS$aѻ? XWiE3bw쿣A?%pܘkIer_:N-8N\uWP9L%*DxY$~gZ~HN[2D lՈVIxV#8pM[PM"[N܁b;fHn 9VOL* l fx.?ݸAwc47 ?xUP"λ3& qոtptDvwN)q͍0xc3Vu4{GB{#Cs.jDx$ӽ.}쒄XH3#vv);p%H'$qI&!jŀ bJF(ֆu)053:zNn6Θsb\ 2]Ǥcz tLtp`^+-")<$#v+ϞqR[O%yNEq4υ})&)Ƀi1µH[//w;'<5}Ͻ@4@ez r15#LN4mY|u5@j`۫FIM3g=lU6+a dhۣc7DD?hC\, GFj>6gt"X IENDB`PK VMETA-INF/manifest.xmlMn0"ݲ, 3u"*iyޛYmqؐ7J*@!l֋U'hx)r'E'ɝTN0|PTKrF[ǑZ>˨D*g!8z;>! JEuՀ^}CM_!2N' [#C쀊34B=@"lCmz\2!%X( Lzxz3h6TN g4(pzsӀ$L+o͆t-L_BJf?n/F%1hEe~]PKCPK V content.xmlr7?Or-9`$l'b;ħ+թ9!9в[ry&R̅9%$0 4q7Oe?At Go^??_'Al x4g#V{=q!t,QlMY>xuϕ<ٳ~ںV^}S_LĶi?q_*l0wEюG}*D4ˣ ^~(͡ %.+0.<5),zt!n?gI/Jsy@?8_^x$#he^vhn5.^${$$Y sllE#~V^.皋d>ibygO=ly![%Iv+ڛ"bV?C^=O,`6Sak^߫PZŹ6 EEq)$ʯvA {Szz]=z[óA:JYzC刏#lGҗoV+T嚹@| d f#.AƃqR/#o >Y\7cKg8Cɳ4lbbxbQz45\g0_k}M#U5͵pF6jmsjm6¶Wm^um XӷPiAUM-V6l6lWo!Q*l]U lIW2\eKC`aOi,40z[ūxtys}0a~YKfh{t{6nǭy/N"fYth>o}/$=Q6G7E{qhzٛ$Cq6U:> Gn' _>x3Y`2YTrW%rwhזG#hkSI^|&#;zx,J.Ee4&vN9OÍ-|ehm.ǟY8&,rV6+Yd͓i2I>y3_>iMѨ#'O_.E qD[ݕ`]ߣ?>G~0ycwjtw .,k1xxhyފrM4`͓h8\Ei45Vɿ#?IXiTCwYJ`>/O9[KҼlhﲴ]oo]{ܺh~z]X"*}8KyW5κx<ެfl'9̮8kE5p5@m<)X\Yܨ\8' NP~9}m}3g3,NOu4<}ToUT&[]Y>=o'f,<73Fl-h>3NfYd:7#_pAd>&yN,6| ma*N!_\d.ֶesm;F G 9{>m`/=AMFYΣP v5XR8xym") ;t4|IƭU?rdq'YQjt,oFC eP+l-֚@lIx9+c{8Եt/Z oPf(E~Gy_x.Q*w;‚QR U+Oi<u:3TF cðrw*e 惨$[`7ѧ[~9g]q~r4fqʷxRQ#1Dh:{Q[Baח2 dXHBEг8Mi`-٧2n4CY99zUw;e<`k`Fk`<4}Bxzɗ1p[{~ؼf3;|m'kQZfɠc>1vP$Ke-w]]bAY%52QUJ2J+ eǷEl'zV("UvgCe[PyRE@"2ﳹL%RRD:DroxD|;krx)Ɉ'GE<03`yttL\vabr& pN'*+=7z`V٤hc5Ry_RU)tCI7ӫk+{%vEZ9]FwA1  `35^fQ/~)y"+]341b$8kذ'#3#S`3wPĝŹ<&S$gbSOŢwrF?WUs\;e"rفxIY4L"M[,c:VBQ SVnUYtՆDO7BQګ}x&M@,_?Ut/.(w6,`hPfuv>ܷcޅAS-{T e})._t}lT||o w~9FY ҟE?|nN܋iFW^JTa4?YTA2BY 0ˉtt+tɠe{`VqDN y>p2b)<^`<ϳ0^oCE)0?cNƷ O396gJ0h*ړVI*s+ x{I6hH"?(Xeʸ"NV4-2kkyc*f%Q?Qk6M` ﻄK*9豨յ"wChm_J q-]cYB.3,_ǰ.糬XIe`Ob[7yU'V1 ۸H$ؕj eox(~*ܙT $vT閼GVkK̻L,_tus+#T^cu%"McZ!`V|&̙Ⱦ<:9m1Jw$,wkKYBQDmxvW5_kfC*`.`^Rj= Q"nb 2V }Q'|FS߃d<㛄g9K;YZP?&)uۻL[;ӳ[jz_/{3=5z,^8ї2f/v+BÝV![|T8lh0 ]ϣ!F+5ٔ 7q>qvֽ~oi80u^EN|$,YGl&9w]ă34O)ǶY fb6mo䬿+Luz!m̌v=h]X;:FWGqmM6cM9-Zz(GKI (_oUcYV/lрcR+5Z~̾9J6Rly1۫jnWAPO=ݰ TE{rll&ת}yԭG$yXVn*9J& R1gʧ.*KWG 7ܔ6FCnhlc .R:2m;ﱬbpL~!Vc"Ғ۞ 2e?dJ#~ D0KO&Qh x< vS|UTmQL? ,VsBl$]mJq%Op:-˪F*و8ocYˈ> ijlv>~$|,j5ZȆldFll Q3P%fFtmkD\#%3zp*j䪻Ѯ-1F*Va7LcF0v FFE=4 0u2 @nbL.a5@ h0 Ө/N͙N_;TW4ro/h1YSXĴ@P1=:ƶG k B Lj܁PL}˱}׳  w9&5l$8Ѣ0#3G祢dDŽP ]Ɓ19jTB]mأh^n1xT/u*%=v\-X-ue$]- 愧!TKlRH-,QUQsE qs\a ߉W2lljS%ԵzDzVY]SP6*-6,m1JX/t_I`b2=`BGp,k5Yʆ/c2|~x)PZE7 `b0Cak6~ Y"fT19XnKdȌv quLT03*ֶ7c03݆fu=MDuf<,}wkyۓR=Ӏ16;҃!:rM<oG+t9gmAyTΖInsmm%#OJj\PSt]_ Gcʮ4GGc{2+US0[{A$c&"|;)&.= 'ʸGK woJ&.=!P-d`}>4\ -^5a} >F _$S;z0zg9_RV$xF3ol J-U dfP`s?9gPj r ,*|,, geytc/ -Z~# Ċ{f{礃p]' ҝ$ ݩ]swkacP p)Gz׵Dxc.=֦ Sq^ؖBϖnJ"*[xz!+9!VJKҪ/`kkZ Z6~ 5F?FӠ j>KjԘ @ `!=5FjL)1Jڝ:1,`$3J2zpwFf0izz`+ V[Q!?bäQyDE=5O+p5ajIU|9x|Ic;/%i@we\R4L3̴LL=j z3Iɠ-DF7該=eSY=1T`S9S zz`S1j~0ݒ2AO=ZϠ j3z;2詭*OQ|`r7|쮋Od$T/ߡHЩgD Zʖ+FL2CE z}֩J<AS!lUf$":Fi|0u@.G)UM*1:SC_?&{[T|Zض`0|vo5n|\ 'x4W Wipi…N؀ LsfQr+lES1E`q|ho꾞޺7A]/( 9lx+RVaK86. k*MB,f2BKq`TVBX~l!/A'`״T29Ây0'== FA[&y6d iAWכ9S]w- y6P!uuC(CQsB"=J ŐXn@:Fb)Շl՞2SZ@Ҭ[,Ouj֕f6ZqE؆&aGPR-#nh4TG,N_WE$a;{0m+zP.kX{H],deyhLsq`sTF۫euQo;% M_Ue;"t5Z9e'5c JȠ!?J"t-vGө;O`/I1 .Pdd!yN/A=" &sXQcB(5gMjߤ՛ nP{TUh([KQ 뿍JЕTBe_*7Q^[u1$ݮKKBB&ꨐ+>q0Cm Zb`\U-s] X4blL\/40O允j(ס,C}sGo#f ʉhӶk1~,k5YBc 4Bl M3P%nchCLMEId&sYҹcY}(c۠hq1(EE3xh:DcDl i CS\dzD=3$C1$Actͤ˴h<)ѡ { FC |A{K{Tuu n/)rufh@j4`PE;:Ơʚo*2ugaU*rO>"^TƳN{s?^_aٵ$w3SW6sm,-ZQ4)o3Ms(|*4nԌղj1GΙ8a 4YJ8_x. 0cCUAp6:Ge,v=>_rg<9aHC4TIC[@&Z`YɎyK S`\''lp=VЮIc4mX Ƞi:CqcུŴH(K "BOLS?C%8=}pWNY% zelĞߠi8MA可|w"EϞ *w&|Q4KIG,W|:,4 S*zrL_(av:=0^F偡#k & s#+1æb* \ڶ\{4Zl=T05P9?>nyeUHP 8?,^=ސJU )b;Ts%'J  "wnJυ8/(}( È0waD'wݢd_(AUε9 -+ QL0j[Lj4g`1QESnB)Q -32c_8]\,~;G|w"DQC*_Іc 1a1-* Mkծs$yX8X#{ i5b|3K8GÎH!JS|%"kY2lH?QEO9ufEy{'f3+\b8W/'Ûտ`7Tl;iPK: 2'PK Vl9..mimetypePK VTConfigurations2/floater/PK VConfigurations2/menubar/PK VConfigurations2/popupmenu/PK VConfigurations2/toolbar/PK V'.Configurations2/accelerator/current.xmlPK VConfigurations2/statusbar/PK VConfigurations2/progressbar/PK VConfigurations2/toolpanel/PK V/Configurations2/images/Bitmaps/PK Vh lmanifest.rdfPK VRmeta.xmlPK Vz9}; styles.xmlPK Vo{L6n Fsettings.xmlPK V{^&^&Thumbnails/thumbnail.pngPK VC`<META-INF/manifest.xmlPK V: 2' =content.xmlPKp*pcodec2-1.2.0/doc/pre_post_amble_mpp.png000066400000000000000000000103311445607075400200050ustar00rootroot00000000000000PNG  IHDR+&bKGD pHYs  tIME .͸fIDATx]8PZ>_{5S~Lތep`7J:']d+3ƙ}J)uAP@XVa@Xx! p{,}m8+O8%aa%UW)Եzh~əRJxSX~=7MvgAf)`:N]%ae)L\a@XVV + Q=ν.t{i4}a @oV @XѨONX@XGaE++TTa/,@X 5FaWOFX! xEq@X,;Jy#T8Mh`.!Xj?sEX1Q)㍰R͂ 8f܍Vr;qvn+`c'TV(yk'+ Za%d3Ҝpa%4܆o _ ciXLh4=ŠEׄ+dHxWg|g L}*&s?^>hq>6k|%='}VXj‚sȱ6+6U+g7+#ʹ5AXFJ,h0=_ aa4Q3F<+Phy6bNaECqhyy%Ra8炭74Va=grysҤ ,\C(&dXkA#q 0='M뺻8ؘP_Mae i( y{NzʊUl^ +QJ4?p~{Oi(WTRJMڨ+ۏsɻ> 舛j̈́M%yR<ޯ7>~B1h<\ljү/hdSaYXz0W_H^˷ۇ6#6bv+05ii4J5<=gu@X7X]W^ :52.+z +x揰Y m#4yXXG`"pbC0;V7VW@XhU V;Z6'VLϳ|zi|Š qL+Qε,0! V]m5+BQt͗)I%%5E3wSUmI/F-IaE7fj 'XŸ9Ha;}vV o bÊ͋žq3녲B5M"3EX1X1Š q\XVa@Xa@X$ p^ 5+E4PM n(գ*Y 3 X9659 ;Zz1~ hOcf0+Ԩ:zNX+6bTX)|1ku!TPZ]j|Vla>ߘSͅl+TsT&V4+`܅j!JKL-JH]0V,@ 06 0a4)Psυ$} aMVVfŠK`"f9+  `B@V^+& `3@X(+ ðXhx+/_A#q@XLFuwA#q pZX O<G &hWU_ZJɨzzh~əRJxSX~=7MvgAf)`:N%ۧTXY k#q@X\I@XaCvVa@XVa@Xa@XaV}~ + gq B -+ +p  + + + + + + [j2 ?8 < *8P1}1h:+x0cSu=+@h/h̯<;+/^ꨎjcya2mO#WV2u7՞uO)-{VF. +g=VYk꩖yַ:MTzߖ]:p꘯jw~کc=+h--5d]-AE-{1yŠ:]GQȗU A45D{,lDZ~\Á&+:5yԳ]Y^NOs;}b|6}(RHy|rwf|T~!{Va@Xa@Xaל PYIENDB`codec2-1.2.0/doc/snrest_snr_ctx.png000066400000000000000000000644131445607075400172260ustar00rootroot00000000000000PNG  IHDR ?zj 2iCCPdefault_rgb.iccHgPY<@BPC*%Z(ҫ@PEl+4EE\"kE t,ʺqQAYp?{ossp e{bRɎ(tջ{i常r)teJOYLgWX\2XyKο,]~ )sT8بlOrTzV $G&D~SGfDnr&AltL:5204_gK!FgE_zs zt@WOm|:3z @(U t08|A $`(E`8@-hM<.L@ށA2@F 7 Bh( ʀrPT UAuP t݄84 }aXև0v}p4 ^O6< "@]p$BV)GVC!Bd h(&JerFTVT1 uՁECDh2Z@Ёht]nDѓw aa0Θ Lf3sӆL`X VkaӱJI%vG)p`\.Wk] p xq:o—;IA"X| q B+aH$͉^XvbqD%iRi/82! L ے&US{1O,BlXXؐ+ NP6Pr(3;Yq8WJ)Hq"HJ IKIJGJJIKa8y"Ֆ͒="{MvV.g)Ǘ+;-Hז,L_~NAQI!ER¬"CV1NLMZ)VL $L`V0{"eyeg :JJU*[5JLGU殖֢HVQ?ާ>حѩ1͒fX9֘&YF3U^FuX6m]}G1Չ93 |UҪU$]nnCM/OS~~>&   .y݆i񍪍&v\mu:ƑGLMv|253Θ՘lOv19|y-Եl^Zä́UUКij}ZhlfSoV6¶vʼn伲3صs-[{'BCSGhGfhgWΣ<lqu%V>svu.֪MZ26,b&*4r**4j:*@LMLyl,7*us\m|GD\bh$jR|Robrv`NJA0"`H*hL֧uӗ? ͌]֙ՙdKd'eo޴gTcOQ{rswol m ڳMu[NO [A^i۝;OrR V (m? Yrˆ[EEE[?Xި%%Ga%oDDiNe̲²7Yn\^{p(㐰­Rr_bULp]u[|͞iU-x4:zccǞ77Q'z̚KZ!'lsWnk]8q/v=s}ٚvZ{aԱC) _}ABEKr.]N<{%DƞWzuW8}nX8[[Mowf[@;]wv8d3tyoy02*|`a׏2-<>+|"ߵ~o /ۏ?yx??'󟓟O)M5MMqb݋ɗ)/f 櫳/ M^̛oy=}na>|ZZ.V|R?B, pHYs  tEXtSoftwareGPL Ghostscript 9.50]E IDATxOYF5?5-`8J!sq3$Rb,n 'Ri GfF!+X[Zwcrl:/EQ>`9ǖml]@  @p$H;w @  @p$H;w @  @p$H;w @  @p$H;w ckkRF199սBADrƆbX*as\Xr ؈)^ZZtr<99LP :eH[nG-,,ʊjK]XXt*SF 4NRgm0YF1>>~"u^R*{XJ_V;}֍P.+s.tzϗNOIS////--5%_V777rѨT*moo8w߼y:z>ADqT ϾG:1m&umSWӯ_ "cccjַ/ݷnr޶47cܷ山1瘛7oz 2~"jyllL]ufՓeD_pA <]y88|uCu 3\TZݨNyt{qmSPO> 2ssoszzr15 w ?Uʊ;9?Տ|w\WWTyfa'D;=w9)}Ġ.?xD ~U;L Křv5`'\=ݿp)z_hoݺvyUU1*Wӧggg+yKܺuׯ'''67Jҥnl^'HUҜ$v/,^7g/W@X@Jlnn.,,x&H@H`zcQT 7TD,JNlU3k, YDgofsȨ+kkkjo߾}X,sZU']YYQ_]ڿ.E---Yoݺ >2Z^h mݟ{-}}S*)Tpy N93Hp8e  f܁Sәj[#wdC\? WgV:ŰfI ul9U&V wb iy=ewU j۷ojZ)7`^Nuv_ }ϑגo߾9eYίIA y2ccc0ط^XX_`x̸t_1ؾ*|Yl>j_ի>_ׯ_fB$rBjuַo51?99祥%xөreyê/aiiP(7o$/_8v[wL'ngBnq;99qoaw%b фvuZNAYHP=e8>;Nޙ ]n޼lٶR Vo_-uv~t| ؘ{epY:u38gzJw))UutYXX`z=76U e>"@us\5 56>>>RY~邌 w-; ]VݻS5kX5˗/WVV|ã\.///3V=NH\rA:,KDտD| 3 ;B>sȡ? "ߺP(W* \NOJB3NNpOzIWX accؠaLNN5˲n߾}~~ Z~mmmS. N`x̸zscB^ommݸqP(Vvxˉr1ȫ`Hw h$H;w @  @p,]T#LOOonn@yut]dggDŽ2ĘJ )CxjjJw"Ze;3zBp~9a}` &aR}x Z,E Qa=D p>R{=  L,E3 =:̸ Dw ;Bj26==qttDhj=p/lCDp@h=] ;@jׅH@X=0nZe wtsjG}"_stw{)wmuu5Vш,$Qݲn̈́{'wD\.Wˈߟ\___]]@ƲSsQla½3;ܿFRloo6jP߯Ba}}=H=M"RD~"#LFcccP(,--r\ƆsFdyPT* jnqߪϟby vڻcq*´h4ONNݻWTNNNnnn;+BADY.khlnn6 }9qqW'Vk)Bj*t X7ϟT,JUTr\Tr&sfsǽ\.}vvZK{pc|Z^^vSY3{:dwS.aXJeaa o^YYYZZ{rrŢܫjѨVzZFmc|x9taOyۙ-cH%!T{!RS{u~>/qu{ϻ>V8nj70|~AmUo?ܸqVRrA Cyxjj* 3Cc*ΐJ )C{5 hjϻ1*38q;W6t~teeŷ]Z33/5199NVuT')^b8E,--} _~S*JƆ๷X,:#4 cccj-ߪ&''+ӧOڠɷa˄vpyԦ1Nj(Z]]W0ur9άyPrBAu|Y=1RQoG>@Ԟ #LRP(D>>>圤>>>*㌠W3j]^-j3xc|rFԧ`z FpGrZ/_npkkk?\/Ee(w%%VUTM^ K`hl 3k۶I&"#LFcccP(,--r\/ecc}h<]*zBauuhxtoU"'bY>v ͹oT*cccbqttTSuZZZj4'''ݫT*{'''777Eduuukkk}}Y.khlnn6 }9%7ox*藻]/{̌;8<==~Z\V듓NR*JW)J]eToh;w ƷU U%qJ ,CLĐ2yB Đ2ČJ?Z뙒o驖<:%ѱ(u`0CK/_|N=#6u͛7oݺuvvfn޼fo޼n<;;S7vallӧ-zvv\XXy]=1U)j؞zݏ]V]B!RmL%WR!eT=:Ip߳:>*㌠Wm-jz^^-jB1U)Bro 3!]͵wng#}zψIOx_s>ĹNc3wS{|)4S7;;;226Q~;wh, hSQF-˹skȫ,߫qwړbXTTOu =7OjO>Ze"Q* ^X|S{gHS{*C{-߿?88|쬎~A[{blg_>)CjO {dW" v˒`۽$=!a)'7/Xν,EM!;@bNnӆ B^̸#NjoҜf'3!В[6k'3C =>jgG,Ik;҇wjjQ3w;-c}!-~=Ւ.wO -}a|W'=AE==W3;3Oe=U M\{1[RWP[x!g>w NNL:g)jsuSeR9qVWW^孭FY_jW|Ir\V{˗/#|cc~T*듓[[[HS%bY7;"kRloo5x^_[[ޮVBa}}= 2SSS( KKKj"\.r>Yh4VWW BT U1U :`yy۷o=-dq/EuG?Tiiih,//ܻwRխuw4WT.ggg\}Fh4TX=onn.,,L* dv,;2LmdgggJUTr\Tr&sfsǽ\.(vv/"R=1U---˥R͛77oT,v9:>#:҄T*'b*߾}{eeIώ\.P,^VFZjՓӽ{ ;dYȈȱs_kv󪳙 pehq;? "7nyUT*mmmr\.799黁ccOjzd^}Dwƍf&E]YYY___ZZ A]z>;ߪNNN~2F{@Fij)nYSvQ\%2ҷoߜ5_~S*JƆ๷X,:#4 cccj-ߪԉ^.ж9"CĶCQ,//;*||||kkkuuucccmmMDQs{g>P(LNNrB:[> ߪr۷Ս[[[̻@XmԮ~_Ub5?GLk LRP(xvIW;r9'Af$ZZ,UvroUFX@;H@w=S}=s3x˾cv: Yzt|,2Q`iDZ^^>:: n7 =^բ:Ky)WĮv<ɻ s=8 Ō)x/Z0SSSΎ!2TbHbL%WR2Z]%-s]YӼxޫvK/M>Q8vvvt`.m)O M 3 bnjAS{[J|14,pOFjzb [͚7a@:.}BApzxcm֖nawBpbB{;Уu'%q>=uځvtthF}j RT Ԏ#3dB IDAT ǶFp D# @pz $1Ȕ.`vd 3@a$# ab^*vÜ'Ft= ҝځq a̸e!=1;fځq&)88l #L1BjI 44#)X LRT f ,vhg2;;U4RTK,wr|,bvjkqڰ;;Õnϻ0"=@<V /iJ;v/wc$i̪gDp}'%ɩb2,85iIRT_l`zzzssSwDIZj;pk5J-LeSSSKmۮjKh2CʰHw M D>4 2H2;JȨLubt]JjG@$v˲ܻb9=vuchAz0B]jԎ,`v3_~5+h[~}5XNjGz@8X/ڑFwSݲtv!#`X͵ɰ 22R=]7Gp<.b_l")Gp6wqoSQuvM\{OE"?av5zUs=S-̵#;}*}cDvڑ%wH11NK{U 7MҺUĶ;!aw'wLڅߎ ݺl dtRT>]'ڥeG{F\{hA5->z*:v4řn&yR;ЎD^%&_w.gv!4-M؞Fj|ȮS;[vK,'vj;Y^ijw.wkۖkVE[S1`Bp SJow.*;Y})j~~pȄؖ^!#ζ%vfہNTik'1*Z-ݟQڎtnىH$B>]F>::]bH%!Tr||<55 c1Cc*пU[cĻJZ,DK^mgN%bwɝ#kw/En Ӛ\{ܸUPt)*A8L]u*jTl9w"*vR8;)aRT?W^xQ 3D" tW3ItBp *@L,T} dZgtBp L[*̵!HF-EzqDp yZ*m wFSwO]CJR;1@Lǝ@1@26۶E 3d}Y @Ψv!0Q=L!`(M2A(%>p?MwbRT!U `څIStApv*~YX `Hwtg}>?}cR;}! 1#}܁8-@˖X!ͳ]۩MjVcD{ځD"emd!R=F}v푝 @萱,R;~1@TT'Pi]zM]G  ڃ@6D(1={I@vX|`zzzssSw̻ZSj5yvz]gvW@& LeSSSKmۮjKh2CʰHw MZ}t> YCp`X}1Bj2P"TTO^^Qv  5D֦֧*u (OE XG );}=9̲$XnN'=)a@"mjoUXivOxj/;}9{^n 0vKM 3RTe+4vA-a;H5ed=H:&@7LjCdL~AZb޴Ds,/~cd3)jw;pjvc7q d3\=n~d]7iTÌ;Mq6BgGmq@$Ԯ&݃zqwz-vKkd )Ō;u\;̸.ҥNjnjw.9wϭ_̬qhȮ'W ܭ=JQǸ']7z܅7; N9{S;M2X ȜR%{N>nii'Y 'fRԾ'گ'ȐR{nu ; "mNtb=*@qc=ܷ|>UdYD=t;888x;w ~58N 888_tfJj,ApȈ* jqUѲĵ$"GtffǏGGGuY1==\֛۝l -oo}Ȼwfgg;= 6k@N*9>:W%i255Sو/_]j Đ2lc*9::]B!OmL%aPI?O_\+_Ő2lc*vTb q_x.>|~;88[׮P8c{U%l ,8LLLB ,ˊbR{˩SWr@@>z¹TDfff2*S7{ d <~Zer\,XBQjmu| {FGGO>tPx mLdqaH,..H  }.@j@=*sss2h]Z6!$Nch0; 1BO0 w@2$>nn;'H32 NwMGvi:[0A124#/_Զʝ;w޽{ @-`8_>==M|rppbX*0Ifj=ve7zӧNӳg:B:S;=?<Ç>|xzzOU3hW 20֦뫝AIjo _ ;tqqÇW^G^z:3S%!ϵ[b[ ;~qqc۷or,"O<|xBsdMMSף Íh^T߽{777_~JBp ldU˗/wQݹsgbbBv{ KQI˝ Ejj , qwj?:>Pv&"4=I̵Ht=1D?Ԑ1Һ F,ѣGeq1h)D .}ffՑ;w[_Ϧv'PD$Dv;[=@ZJjM mnYW@ =~QZBd$Xv^TDX,Jڊ7wq7@9*_%ÇǏ+JZu>6UDfgg_~],7JEj!L{}O@ [>MI!|Hs怶m$Rvg&nZ*qqhjy̸W~zzedddnnNom8Q3277ɓo߾}Ν;###? ЗyLj.)>}:??=RӛNZj;=FwStU1j)jS,dS>]?q~~_?"-fjj*jKh2CʰHw M{ٳgq bYh:Bnc.vAzѣG?zhww7rDvO;XlޫYlW^^^^g=vpnQlg/2KQ-j d:w~S'y^D K0L/^ȇG1Xw][l'1t$)jS/FpddMevqtuvSED^z5==-"B_z.У^Z۩SetuV4ǐd]>|'OHR?۷oOOOuWq {~ 0m rppp}˗>|pdd kKQ{vr3dSuʶBpQܭ*YpD{JA3 8U/sss"r}Ą c<[=p ]ǏKD@mbbLk;=efffooso>ҤRHzNS;Vӟtzz3L"3&R{1T*0.޽{GQwy c"鴏;Bp奈8I$4~UR;!2?~|ǏEdvvvnnnddrwwѣGzc,y"}R;Ǐ>|tkOziD; &R>X,/ÇØ ڗjiq*np?88sӧOEdqq۷?`pMnyuv4I ջw@yR{{;;)Ӟگיh! ܩCJt$f28   @7/&cmqo)$&@_#!]Sf<`vj=ʉҒ',yw=Xbj;  E6|4=cBbL%!Tr||<55 cFǸ.0ekΐJ )Cj%+ٯ7\fw0gu#[mOq-EUlۻY= $1sss]\۩QZS;"ks,g\MG8vuDU_j/-"u[{np?^X"3YTnp͛r<22;d `{"R; R/O<)J+ݡ݄LjrqqQ.߾};33+!{ݩ݈.,Emwww'OxBw9 Fv&@wgΝ;=11"Yԩ= 1qg{LvgϜ Gc:<JAj-}ffFw '5>|IH t0v.tةw Ç>|P/..~酅W^- @YbySՒ#y;~qqbCZZ,E۷B; yVw*Q1Bjd7SNOOܿׯ_BsK=#ʄBV5|NORW>}Uths-EU tp333a.)=+۶LAc4L[VW_3mt; (}ff_suwwΝ;c0Odkqhj$nĄ ÇKmFݢSrXRTϣ4 !>|ㅅO>}w"rppJR, ۑ3B3m[m_m}_Wuׯ߾};77s0|~gW7{k;KQ Q;."N^w<|bbv]iyQM"/ED,ݗwICW@f NUq7@* y1t8OY@p&gj;WU^.[},U@rR{!q >IDAT_ *Ō;Xy{N(ua2Ťv@(q`(]bp{ bUw(m{G_vS%"bI!0)Lk'bdq06_Pupr6Bp yY 0@:mnBdR;`l H`@|{u1=AjFp6 KQJW{䩽wDp~4R Vǔ"HXڃʐC H'R@Hd42,E  m̚k=;TѶLIYHRT@(Oj޼tC1"w!f$Ď LN}@;vG 1HXAdzzzssSw@2S{VX]RSN@*y%wS1 1Cc*9>>[YKQ/;3"Tb{U1 c*1 1ޫvvvt`.vNjjSe9[?7n`(w`R֦v#QU jiiIw5Z${@hq`43SꄱmVÌ;sڥ}ݹnY>ʔمw!P68kRP;a!0)1Ĕ>@{LwBp08':W Ʀ@$ bl NDwkm<uvD;hnY-SC6Fpv@rhn"VUBBp7KQ[ndw2*;/$1ă S{[dpS{} @ LDj@ rR; 楨QR'z@D;1 dS\dZj'1R 4-E.M  fM :wâ= Egjg%l `pV.*v"Č{T...*XX]2RT+ _aR{ ACpÏ?{4Ѷ U&rydd_~ywNOOpXEjĶ|0 {$*tdb@*{s᡾pLOO;cMOKǏ߽{777g6wwrU@wёiGGǡw(N0Ԕ Ō{|(1C* _>\igxi ,Cؐĉ/{fggGFF|oݹsGcIm 1!GX,V*!sppӧEE}[(Ķd|oD;WqDT:<<, 333{{{bÇJ=߿?88|@himgDv GdNj ;RseI&}"t̵: KQI L#̸E{ Œ;Evwo*&7t; ܁l@H@;2.܁Z{C&"޽UFZ%0<;~1/Euv";a!A$&F;@4@9nL[^wR; 2=&H! 䜚@4T m4vy4#bBjQ _jiG;.Eu&@gw bh>UZqdHR*Z<  GjoL;ݹLp܁93^w "_a]t=ā 6[gIGG H˲"OEWdm!UgH@ 6Z܁d0=TDV vwo Ŋ*|^DjNLZ-a_u=ȗyg؞@y%ʆt`۶]tdH%։[U} ҺZ>Z yTbH1W2 Đ2lc*ΜJ D;`(wS{sޘ;x(uG[,[,, "̸Ɖ**Y|CI/;`'==+LdwѦv-Zܑ$*/wchW# LvRRν1Bj Ho"Tz ٰn]Toj˴>/^T [qBNj^wV jw L©%'[:A :bZe,m{Х~|܁a {Ev!VwtN-ZD{C-@0[넷-\,%}יV`q*g)eN\:0fS[8[.m-=-]Qu ăV-VSteЅlv>?t l FS:^ Nd Tu٨--]KQ޾myjӥuxfܑr>̲"lzi ݸVApG5,;H;aA.}^I> āpkR8w-H_dBdhEpGq,oF8s\&ܞ!i9[bgiqP$iR.L\iIq2vcӊ"[roS!$xIBH=X}VNO/-8N"{rrdk EF:^dAp7|p8}л,N1M ..dNp'D2[>{vwXHdV5Kj.MO;MuEm";wR]% S~L";ud&0IzԞ,(;)PO6r;xj_vdϰ@pgYnק=Y`Xm;)./Z^!JA0}=dHp'EJ\ ~ɦ׼Sǔ,UX;ny}f/~wRH ɻGwEA3jȐmmi1J5[t4iAtOy۫_^{^;nJ3ѣGGU\ٳk9=9a={:^:I+# ]ڞ>}u y5$>|u pxrrIrcҙnnc\ɼho7dqE%K˗Ko07䤌an*YJrR07NO%9Uߧ޴.&Wwle>EM]jzܹOXiTT NutۻKSe٭~R ]s70?iKطb;|JS{J-OoqFBܹ;oAjxK61X>vc4HSo5ܚl3g퀷OPs-ΐ{쁱v;ܹP*Atbpw޾Te\N,rd_Y ſOt NNNoEcj_7 33~vcIL-f-1S_ƽv=Rr}aPJf^>i*[ܬӔiX}O^OiI;rR?%[ϩ, s1t,@p/ RcLEX3Ev܋dɫ\A{ լӉ=MpϣI=,d_Y ,9'.dÈ{];+4dHpϣ%MN`p- {F('2áeˆ;J%cy!3婨R;@ƴ0i=F @挸sv|ٳgR;@y+i~hsRFJ믇f]E䦒i9$'egui%GK^} V*6L @hɵiXu=pʬ1e}]H&'=+TT ,DjVྂv#`%q_)*#CjXaFWgĽvu &vaĽvbĽx!##'Hv%kNp;ZerNj !NYsY(|V=vq#SQ /D>|߲s 0Qojw4BDQǏLN]r<4# qN'z^Tv6kE}~~j777/J>\f˗K)}!vww0|e`ooo0|9(*=> $APTvvv~EQeP`zA߿OWK- "߃Jnj޾};qafSŧUa`0 V}2p5S4QoLVe0  A<w(=P; @S8in??[.B `֍,ܳEZ7 /R.jt:߿Kr9ZVe9 ً( Ï?f]jǏ+JE{{{V˗Y\NɳdLa8,s㞽rundgss^z\Nɳ8΂ 2'#ً8 NEG %2 (rJ2?={a>GGGgZ߳. a4r9e2Mp_n蛃 FP*ׯ_[ Bf.Yq_0 ߿Q}ikk+`)2˜J0]i4̭jo߾ {ðmooy&`S aww7 +2'=A2y\.onnf]EQrwQrZ;w( @p90(:>>8Y6. /^;<88 'Tw:W+'O*htW|_[0P Qq~v{oooCzVk⍽^o1lg\Ǐ_J5:uRX" ejvw5#ݻrp'~㝝d˃>͛pht<=}N3~ǃhkɓіz~vv6UL*P [EF#i:OTՉݪVڍGtLE#q|xxf~߹zׯ_wlll\;NwbsӉ5 j22/_LvH)Z.'5O>AŋiRIsrњT*z}^$w'@Zz3{>???988VݺׯfH&F˼^q V5qۦJF?AP.'9ry_ Ma508G*asOӻ?Z)r0$c7=`0N_ wRwݷo8QM~jggg|֎Gkp;FJEqOWu~qGQt#PZew( @pw( @pw( @pw( @pw( @pw( @pw( @pw( @pw( @pw( @p?o 0 IENDB`codec2-1.2.0/doc/snrest_snr_ctxc.png000066400000000000000000000752461445607075400173770ustar00rootroot00000000000000PNG  IHDR ?zj 2iCCPdefault_rgb.iccHgPY<@BPC*%Z(ҫ@PEl+4EE\"kE t,ʺqQAYp?{ossp e{bRɎ(tջ{i常r)teJOYLgWX\2XyKο,]~ )sT8بlOrTzV $G&D~SGfDnr&AltL:5204_gK!FgE_zs zt@WOm|:3z @(U t08|A $`(E`8@-hM<.L@ށA2@F 7 Bh( ʀrPT UAuP t݄84 }aXև0v}p4 ^O6< "@]p$BV)GVC!Bd h(&JerFTVT1 uՁECDh2Z@Ёht]nDѓw aa0Θ Lf3sӆL`X VkaӱJI%vG)p`\.Wk] p xq:o—;IA"X| q B+aH$͉^XvbqD%iRi/82! L ے&US{1O,BlXXؐ+ NP6Pr(3;Yq8WJ)Hq"HJ IKIJGJJIKa8y"Ֆ͒="{MvV.g)Ǘ+;-Hז,L_~NAQI!ER¬"CV1NLMZ)VL $L`V0{"eyeg :JJU*[5JLGU殖֢HVQ?ާ>حѩ1͒fX9֘&YF3U^FuX6m]}G1Չ93 |UҪU$]nnCM/OS~~>&   .y݆i񍪍&v\mu:ƑGLMv|253Θ՘lOv19|y-Եl^Zä́UUКij}ZhlfSoV6¶vʼn伲3صs-[{'BCSGhGfhgWΣ<lqu%V>svu.֪MZ26,b&*4r**4j:*@LMLyl,7*us\m|GD\bh$jR|Robrv`NJA0"`H*hL֧uӗ? ͌]֙ՙdKd'eo޴gTcOQ{rswol m ڳMu[NO [A^i۝;OrR V (m? Yrˆ[EEE[?Xި%%Ga%oDDiNe̲²7Yn\^{p(㐰­Rr_bULp]u[|͞iU-x4:zccǞ77Q'z̚KZ!'lsWnk]8q/v=s}ٚvZ{aԱC) _}ABEKr.]N<{%DƞWzuW8}nX8[[Mowf[@;]wv8d3tyoy02*|`a׏2-<>+|"ߵ~o /ۏ?yx??'󟓟O)M5MMqb݋ɗ)/f 櫳/ M^̛oy=}na>|ZZ.V|R?B, pHYs  tEXtSoftwareGPL Ghostscript 9.50]E IDATxݿo[ˢ|i@*XPрU|\L؀MD5Ґ eLsM XSMEK~FA.].|@H̐N/3k)̶߅= @p"D;w @ @p"D;w @ @p"D;w @ @p"D;w @`zVu^L&SN"_d2BT*U.%bnr|>>4Jr\* hr`r9.LXot6M&zW+JZM&n:߁|s|y5Fcm;w jssSjxrrP777+>0}T?gze>M9;;[\\t;aq/Wߜ˫10*Jez/^BlooWTժd9:;wvT*!ė/__MK$7U;w9%l6h4_owLΗ 1P*D*{P|YN_rXtk-H蹧V++jDPP+̑j1W|>_*տwvvd)H"BJ%Ύ ^T*Q"{$w]YT@VkۍF [AZj*aѥR˗/BA~[^4xPf^/OhT*^W(z^V\+{Q_ zRG}GRES=#ˀ䷴±*Fۿ?z|R?|Y>{ώrֱw6TCEuέ[,A*ryqqQ~&\9Ց7mYj07֭[BUN>|K2WV[ee<ǽF/nߜ[/_*={%$IQ_u)o'5ls<1Ac ѣ%zSs=Z~g%YnݺeBEɤhJiz/i@>~ɉlz=(/|?`sQz( nA.>phzܹ#?a* `d6r۳g;ksϟONN?3d(h8F_9H԰-/VD}I>YtT#M- _ߊ<=~{|RCp"RlnnZ&,sò6Zg/kIÇ+%  IDggg4wwweN <|P{i"~▮)5Wg'TOVM:θӄ:b8 ՙH?JɉQ?|jjG2Q<=~<T >99T*rvP%+֭Yj>K.:Y{ppp<.e^(RT^&n øW0H˙\N!+PKO| Ff^D"!oh4wܑ/Wѐ/i/X묏`q̻Cb\.'I焪V#t{=F;~+'`,N"h.--ɈL&|2TIŒQŢ\h5LZCKdU՝A.;99eF!;ޖQs0H]6۳/_ܹsGi'PhI/,Ϟ=yV/i8?HtKKKQn;ucxz> I3@]wvv7kqfQnK˗-;fI\Qh4Ţv5&wA)L-xy*oW,72/ܳݻS9e^7޿ȷm z/aO_U~KrE}דr|w b[~׻w>|0Lv]9J-2Ç9;9jnݒɴd[Ö -ɐm\o _Uhu#Yw|⋋_|)?{P 卖)M0ORr|Ν;BO&{{{lVsu`,d2l6d/_nݺ%?Yq۞CxBn(qۭ?J*IZ`L-@= D t%Pmة^!7_Zũj>|l Cts֨ Q8Ч\.EhdRV q/_<{Kjo4;;;nq"CAb`c|iL&Y9S;xqP(DzE/ T;w @ @p"D300ӸsLXYYT*a 4ԕhf3;N=)tQo ]D-BQo?،K4ߥA֣ޅTcL" R_@Nda}l`JH `H" pQ`wvQ*@EpH#g P?5 ̸70P4f0)R0RtP*Q>5̸`Lib#(;R{$0_D31Ej;@#;( ^XQw`=(R{}}>P0X:79Cpb}}]?x~~^վ|nܸ@juuuU~͛7޿;R\bq_zO>YTV~嗷o߾yZ21bpzz^{^p}^wzzG!‚KZr}mmpUFc/^vL&KRXL&v{B_Jj3񭭭}۷C!7|,,,M{|pWvww#cXd2vf2RsceeE> %jwqqa97߼~|@IeH}i'z^ZM$B!Tn+VThBrJ2*{RIN؏ !RN"{8}Y6r\/L:>>7b邗h"/QK te:/QG}z,;:Np]Zql j5dR!b^/J2aۯf2rT*eU*݆d9ީ }iѰ!1'lji?NSxy9x~oKҩO% 5p~~.lEΔ׏@3Z^jT*j5f2|>_VUzp3nW׸ˉ|!ٙVz8vZ(@:kUe;Vmnn[.~m·^urrJ \NFFm4QN]A ?X.ommmaaAn8#o qHCfPA˿޾}[4zL>$I :6{ r\V2>| {PqFa8zbq{{[{J?A>^r1ةRvwazjw0{ j&y\.ѣGl@RvhQ|>/򁗫r:An(bQ9i2TjgϞ: W-j}[ˑ7n}kkka  yK"D^ !;;;TX,eǫT*NvlvooOdd*J&rW^U;;;n8vZ.3L*z#=@YB+2Vv;HȤ.& yUFd;l-Wr9T8NedH HGpGf*dRnH$`UO[V-==& (j`1ũ0HfԸŽwBj#ff1w@j`w12!^0&R;>^^^9x~oK\Sk@ۏ4HOs?n0;@P'cBw@ E;@A`OvR;C ?V)bw-cq1fGj0`*7*s)bAX rt< ! aX>DŽjh4|lŋvwvvƾ;})jVD*=nNkܫժgggv[) \veJNML"pk榊Ž~m^urrJ \NFFm49^  E㿢[!w@ܾ}[4zL>O&R$L:`)n#ŧy~ !\.VOW/򁗫r:J%E@8/CL]GvR{XgrӘBJɤoQH$zX,v[hggGnvJԬy&I&T*ɤRT*'ozt;ghi"Kl5>aq*j>d2D"J`-H$jGvǫșr#DWs\ozp΀N3LmQ.AH$~cKnv >BmBj'#ߗ3eeeE޿38B)ڛ3畾գR>R#]I.c̸ϊ@G[VpS0H ,4Awq||\sEbhjKQg]vI;q6jcbwaOa'S{`4;)jDvS̵=JeUjWAp &EqFpѢvK p&wa1h'S@T$Hqƌ;v"; z#۳s*1#RT;S a! BcS@4lllǤvĐ,XYYT*vQ(:N]٧fH|~BfkNt:!*3`yy9f]ŒvpT*Zvvv\/̗f9y#!?.:NK~ tKyQ*8VF_xPr۵ZT*%z> T]tG;1sZ;=vݝFn3LT bx0f ~20AX1s^\.g2l6+缫jmjneur\د7[,3L>vLX,z=Kn8v*[d2Bppp30Lq 1l+ '''߯jWɤ\X,zTY~U6/a:˝R){w^Rz=d9DZSwUR4>O ` 5(D B!}D"!jz^RT>BTl6+Ϋj"pJrj*YByGsw_zu-y2̷MWVmnn(W(2߽{w{{[WR)uB.ShzFv:GxN KR&!oP#WE!C_0n߾-XZZrT&T*Jɤ_y9ޅtF`Bjej2n};Ғ$WRRfɤǫz+UR,n8vzrr"`>_y `eكrY>rU.S'z=}E@8NeG*WE}|>pDp< U"kD^/rn!vvvnXtJIR dRd2d2Je2YٲW,q4Jmoo߽{W,JzywsfR#Ts.g2ˆrD"JdB$ #UFLܑFNի\Nls;-˅BAW|Nm FpGfH$_eңc6"jFj;]_0Lv{jYe0"w s+mZ5L? V+蟲rpK{\{ٜ,=Z,1p_ڲt~m?~@T dCש0aHu|b#E;w0YH}`܏}f*"F3 }TFw0=n v2nIf%X \̸O@hCM4O1;3E@,C =vDFAܽhf">(Aw \;DpGUFc/^R4ufS! {AZ`jh8j^0Hl P$r cc#-X \w̹^W.3L6sjjn:\.sWٛ-L&w]L&S,{Gst|T {(O8 ,l !_?hf{^P899~VӿL&+X,R$Sl6_d\,JٻzJɰ8$9nf|>~n)ggynOs]Gv`6L ...D6=88PCKϟ-|>_./Wr9uB{Y\\d1q4ɔr9!vfWf9;nlZjgwD=߿wQLMc *JD^rnwvv;;;nX,]R)5dd*d2fooOTvN`B+++ vx~ѺiCwbo>c~t\\\|W7o›7oc?אZ`B^nĀ=W9`oDNիri*xNieeǟ /).XYYBt:ǞN^ 9gx.F? 倽0eH/^_|___^^t .bW8VWW~gOOOj.qFCĂ~WԠSܕ~0&̍Apߍ7~>J&y Hӫ8;09bkkk}}HTRjIwy|JwB-Bzl9ȳ8QApʍ7 .f}JJeYKӮ@qy)S̸mzڗ#CS] (ATZM #Yv ( =[6mⲆD֪\7dTgb44݋Z(|a虝vkпhdc#ܚ <2/w"fFSkcЈ';Q2#mj }VRaf+  e)ŝ_le T/Zfq* 2̺c67v'T>qWvP&U?T;3m-A2ad2;n1XT*6q#wqG<0 {phTƒHolx=Gwf,,EU*6f^`(`BL#X2/F8s̸0CխT~΀>F,{J; Y1 k 1;a2R5=1/51GJR Bt~@mljrd׭k#j4FVӵM(N=Ō{j80ZʂMt?/Q`[c4D[b{*VSDfٝre_,bd/]~^ޜd}M_z~"KevcKQ axIfz3o2)~SN0V@zTU*^Ӏ|7s i̸>(AwQ.-GnZ^/K+6kurJjh4|lŋvwvv#r۵ZT*%z>v0 =Ww5pDv`2wQVݍDnX,f2Fn3LTi]QYvy?q )s^\.g2l6+缫jmjn%(rYcެ|ڏg2b(XqT6nBppp+ SKژPDCdT!D{ _l j5dR٧X,R$3l6_(Cs.;;;KRz^Rz2;rc27W^+h/Nj]cߣݺ+P#cD"!jz^RT>BTU|ZM$W]Πw]u^^Ve?;;kB|>xNW^ݺuK6`6M}ȮF?5m n=2GvH<"CvnY677Uo"ݻ2($Jr F5nh49:s ծP(ܿT*e2;0NSeCSa#@!B.Ke|^ORT*L:n]Kon4Rx <~5Rab---鱸h+RmU*^zJΣd2i9^:UŢׂ>pM3N!LCT]-3uXb=_C7@p>%ay0ǻ)YL(5d{*M@6.?66Ҫa&NCp>N*ک=" cdee%!Tسrܝ宨NX;Z6.h?7{)V+N{hqڗ k ]D}12.[:;ޗzv9.3^´ L>cyL\S{dA;J(ũ}P`}܁!X\h>#:Je-Z>q@p̝wUr)kc= S`q>n1,Ωx #; vǼX?j0>6cfGScdoZ;50rj WhT},,6-}#sn\^UG~YҿAmu6cf 3o Rv X0.S{}T>,Be__F7E@U1׍ ѯV*#kcH@07r:]diHCKe L/qDm 0ƻ{QAJڱ1zj7);`Yc"@8irq0NMnj,B%10.+eVrN%m c?4ug%Kd͟D mF2ʔRddD;Gw@$od){gr ~5ϸ#*meeR= 3kZ͖s]7>Vzeo1Z`鰇0L̀@o6tm?OoF]zSbo:QWe_:c qdԫ[lF%4v:CCQ6糧aVgbiZvb/dU>.1,NաΩKTjGv&Bc`tw@q9MecA_}(DIct0YŒ;`E.SKeq|sR*c?i#"`RT j! iSܞa6~S#_mm'vEq03xUosuVJeP*8?~Hw7|7o86R;̫x[[[ϟ?W_?<v9;͕OKW^$iZtZ Z b_|yttٳ-Wׅ>|NLCj~TQpΣ߸qѣG=:==Ψ:ӶR]0̙DH/@ mqjyR{cέ?R[U'j[dqWgZt:=bo`eeR= pH !Zn7AgӖ#ns͖`66B0nOkݗcdTж,mmYwӟ&OADR-U^Մ\N~zqqQ՞?`NcKQ}R(?zH>x}Vk4궩B9 .KecCxKOz_wDdQ}|E#{;`$vvᔫ.~,*=*0e1 ߿___W͛Ϟ=s|8==駟<6c {Q?Q a\"tQpZ__VO}W_y;Ĕ} RTC80twS/Zwk DAƍ??C}Sϟ|I}KQ RC0ܕ-J`vvS*E7\jDRL;`*V>8P`62&.?8phW8eq*#@|eB\=nߒsũiVK9EpxRTmwa /_|Ǐ>i^t:*G]4 0L냆a0dEf_|ytttzzzqqa>}bw ]vֱU?G_*گ4Iu =}=":Z2MR !Ļw7}KQMn0L;>nZtyWxwRs~~~ttmS_ԮB띍_f%ioxy%n38w!˗/_~t3Ņӧ>Nßj/_,..r7n29{&\w^~S!DVBÏ?wݼys.NOOۅ7o͛7dweww>v!a> A>x@N7nx/]TՅ_~۷o޼9==V S)-uJbaad5 IDATA>^~~~KZM= X[[{O|i|.ҷi}܇/¼^jO~Sh6[c_]V<B{—:7|,,,M2+G1^g;bN` 14ɓ'2Irj._2yOX㾺jo>B7n}=`dp6n^e5.L/S;dhB&3}֌o/Nj0 =ήR>͛7߼yB{=<@c///j~̾/KO7-!Wl8w!ޞ,eB,,,0/`.}e·M?6HMDWJe޿ߋRǏ=:Ә}j1 ь'O=z䉜t_NG߶ H?JkW}6ȮjZvtt\.?~a}}]m(ovUV4v]kmn3;'UR~xxx޽gϞ !_~O?ݸq#Ɲhcߍ4'Uj}LoFAj0OF-Ex= S3-]Qp6vQ50DRc6q[Vj=C[Fpii9rR1{WTmש[j'ũ#^ӧO+++˧Ng#LSKjי3!QpbGRU .kj2[j///_ή۶>#F]s-9U "ֵ MO)&F$2})FkË笯Og0e.46Rԁ}@9;`(ϟ>}|S̸S 1 ^zUV޼yC rdPQ{/iZR4wԾ]a;2{d\Dr>GGGO>7nq0+++J%񱱑B4iH !Zvϵ7MWW ~%۠^~~RF f|ŋ=4@o6tm?OoF]V a_! Sk/>#a:|ݴ;~Co?b3/|F"~_ !okӧO嗵G`ޘBC2\0>0X[EɁbLIjϫׯݻ͛a\SpOȉQpvqy3#G}ݱ]xyyu.հ`ڴv9~i:>2nؚԴ[L®20bᇰCLR!3 @J7ohKQN9Bjח,\wLKw޽{'^YY|egax@uj̫o<<{LĐr0ܿk6LSysYb_,EvyTCrY Qp_]]>߿wdLDKQm]a^n'c\oQ,F57oT0޽Pe3<'c 2qG=ydsss}}Ç_}֖r{;zSaüiS?e7@bT*͛?ϟ;Bm~YWT] vb4.X[[Sy]y͛7n0[V:WsHm-EuKoд °4r59xwGz;ıTƾujfߗ2|ejɍ]cO[F^tl 0>Yhnlsͮ2?dv=Je`|Je]8VSm#nOv/ڝϳFv?fQ;`P*`X gK2E"C7iOފA:͙u:ǶKMBČ;yIbR[}JkU6/ڶu 2!w˰DvsT|WyLay)o C D1=J(mlfӫf˽Wl|z !DZ5ˁl6m~BQoߜֻ|9Xq^_7n껸kk1:ʷx oApV໔w/Nb.N5V16t wM tHFۏO2q0=MrN߰\n[zy(FƍJJ#PI0}&)J7-f@NTLjeq5SCw}ݴ}~p& ,;Awd׿7u>%;52 4shiRc MNb`/{[&Gj͞@$ zۇ!K-y멝]n?6G7ˏXf/ ]Și}KQ} 3\eBa8., l51 ak` w^>aBcEjT+9\CX:sz)uj52TFXvj1`jE$iy?+-/ϰ$/ʘڤaR6;P 3w_jI<2qg8TOl)E}}jR;`&՗3`eeR= `lqEr=RRN&8rtms{u(Υ2W1qvL 3"^>|\c@h}qR<=βR@ؘq=^%BtEn; tw3RT/>;(:4@ەq 4]_摊v9nuC `,N v2 d vUr4Kcv[Vq7 `tp_r\=,u&)L1p|D{˯;eMμf-1gbwJmdi[[_,t ; `g \\5t$ 1 pS"1TͦR`}lKKT5:}PǙ#UG8Ԯ0]Q{vqb܁|hy_EPw 5dSQG2&]g=r~v!w /z,~X;KT 5)O|];VJGju3_ )*%!Y[[[{͢{۬բ(߳۷^k)t^cբ('9jB^ɁLۯ뙶uuiYg3=nHuFSWRr SB.62ċ,X7Ī2K߾t]1,1HMuܿQyJ݄|TR{tV(8#@ju)ޢ;opojߴj/e~; @v?q^a M .Q}]VKDpQ*{_Q*d V3~kZv0mneHM{`u{s-J_aHMi`*c/I&w R4z*ĞM(fUJ\{Oy;P*;0IS{;aE{<D 0ػ?#qMGHj hZk|ÇwwwH]_jK|XtG^"+{.=;Pr^@h_q<LZjzvvh4>|UT)Xkkk_NEm}ޛv])rLVVV.//"Q~->(gidum5ڇs)oaY#rku5/&׿t1fڟziWWWupۏ$W='le[{(wB1ܞ…\>?M{ ...־yuE'''ϟ?ZTvww?h4MлtL=T󕕕:ooo-4j5sH}A'R}SQ-kFF9Z[[{͢{kg؏L-lnnmף(m&m~g0/Ŀ NX]]ʹziWWW?uv;C$oe5kyVY^pOzYvQ~J]ŦT/ymKWB3~Os * SX}ƦCS7w1'M $k%P2xW @ REFQc{V0qgX]xߞ/{vL[Cp X{nv`Ы==fLNExc[rK;|1zށ[Hpe Jp^ d.w) vZ鲪 Opg~BH$Hߟx{>?h`fzMEd]@`2 :#CYݖ~;60>MN")KeJQjcv@j)j=Fpgy-fh@jۣ(* Dy{>42vuԷpO?i( eSzs8DxOq;?.bS*ChtWl=IKe|}GBfc/ɩ0CS{Ov ("#d`ʮh=ݑ?z=m*j:D@@w' tڟ ->T%sdĝɺc"R;)Rந@֔v`LArJyL$$7${((f 븗ZTyaH ,47Ro)8D)TQ;0o&y<R;5U<Y3mwErBp'4cJeREjJEܗL/Iڟq$\G4}v+VܗLKYOj*IDAT Je6-+EA677ϥv %3i̱\y %1%޼y36k <{Є a z>K)~ Zm]ȫ69iz}kQ=Oո"hQoMr--,噅d}OzYvQ~J]ŦTMT3j1(jTHzˤn (;i39u`yɯLE |zwҖR ˢ;#2NhO %9/i ܙM)h5ZOjNEQT.^:== omm Q)2[__?99hoo/hDQrl6ڹZ[[>PfWV?ӧݪΖ?cT{T*Fӣϟ/hT>,#5[xBx9qgVӧOQ得NOO:ٯomm]^^.v\S s_Ɉ;X__?99hoo/hDQrl692jYxaWs.o!E۾-;nnnRl6߽{wxxl6><_YYBtl5\.6#ܯR~N1jl6;j_af\T={l>yZ^^^?_*˗/NOO;[666+-6rQXn/Pc}}}}!777E Brw Ipq @, FVl6jZ}YwAׯ_7_~o߿?;;ZT,pNS'''C_}qV믿>|o#h4O>mZjuZ>}Cټ<::{ee50N\G i{N:(ٹJټ3XjFr߿߽ʃ޽{Qo۷gggGGG[[[Ioӧ?~mwwÇ(Fpssw#NK|Ƌ/:C ui4/ŋ/^xWo3ßr{{jtJrqqW^իW3ct]|ӧO;O>%}n4󎕕VVVvvv޽{=VO> 4n Vݻw?Sfɓ'^˗/_+v>|x8=caX__AE<è򾩨roؾvMǏ(zYJ`To}oq|1fjZOw4*.;;;Ck駣V5J{{{;trj\wM$*VwHf'`eerhٳgrŋ 1>?|X{;;S>==*ӭQoy,cj{?ԭr|xxYh}#1_ۧO666 jÃδԎ2/C=zhT-M\gQmO+˗/(~|iٌy-}}s|uH&UjۋIZnJZMrOYyss777+HHp`_\\/h4W 95k0#h4Z}UkZFcwR ;@p @w ;@p @w ;@p @w ;@p @w ;@p @RU/*IENDB`codec2-1.2.0/doc/test_datac1_006_scatter.png000066400000000000000000001167361445607075400204640ustar00rootroot00000000000000PNG  IHDR^ bKGD pHYs  tIME   IDATxodU?~:l,D{5DI2MWoi4W!/ .(I +l5tw2f]0a] f 0/νuGGu'LLZ LI^q=St q ?=??;;?g޽K>(=DD//O=WBN׋7үگ211dq''sۿ=C?Cϔ9O='" >99qrzի!,+}~__W~G~~:/2򕯤{?ߥp^1""z饗_%{ky&&&&&s+??JyӯO??OW\ۿ%" .SO=Ekkkw)h-z{CI{cU)oo~Kadʲb&&&&&&湚eiuX?gy._lwĤޱc2}yG \SOoM#|٘YFÇ*T'J,,lbbbbbҲ.vLLLL^r{>&K+9w/Ӆ 'K-?]9dֺI{>&l={B &jbbbbr bdU1[dZr4p011Hy׾>j`:_f^ɤre'k}&&&&&&s*ɞ>y&o??GyLhow̋511YMLLLB[g4#71111p5i(40F+BΗ25i*u# &&&K',Sj}4嗽"T&i+111p51d U8enFZq<ϩ119Kr4ۅ.%jRX̏Xd#y ̭cƾ\ MNjzkU[&1k>.X:ֶLa9jqνD3gb~KUX,ay=yc5p5Xk톜RBX!6YE"|ZM&i4Rw]1k'"IGkZFK+mlAF{!9uZE|lF6 T"|%zu :hX"P \C-#0X7>{})zj{8ƽx{Zh5~zk]̋5p=ӂRDw&b\bYxн]ؤFi=Zvh5y=L'kyZ \V4Ot!I NQ66 mYk1NƜ" |/[>cgv{K{4jS wۅ2g:Rl" yvAꆪqsO3̠ aZgE0Lw}hjH3 wVicqyҋ504p]zISF(SbHL Img膯C#O3*c4r}˿~.kbjPbXoܸmr28RsSmhu7:kFKv5mgk( gk\w}wQ֧ys/Mr%ZRCX_`rO1g58F۬o#F ۹R.5POIb3tB'6lE;GR{caԽJifG? P(]F/iifhCacOiA=i:ֽ1X,KܿYls?2LGd`H=! E>I7myRfq ;w5VUYA/80bC{Byevn8cSfFu/S)wVigkթŪd<%Zv}\CtGp$d`H=36g빍GzrPd*y-'įA:JRV#?GdKQ-\7^2GB=H+O%?_xt76;K΄l *낙km72OtHʐr4⦲}$ǬA0Z] ޓT2˒h{;/0O"9Z*iO&rZF, _.{`-r$;F**F $0Uweo),uLꆧm|I]8BSr*${Xb*c<'o8\NN c$lKDi.Xg͋51p"p~lQEʵ'~]*/οpWCGEJ~R )>G! :*!P@cCϣFhx)soII={P],PbZ^SobƲ8xvksG T*BS\IvQ_vN{ZlQSt}9tq9aV\.ш,#F]^qSUY_Q^)"FgO6;t}Q0qjrR\ ;Q*7vOD9w[05ZK7bϽpFպEՊ0\J+׮!WՂ$mcEl֌ xIOKA Ef^{8rn f2U3s~/Fи,G[ULaHϷId$YrD{٥բNi+EK8A˟2"@K&zkwM AS=~/΅Ey1 ]Yڳ N"2G_-bg{Lb0FڸXbJǷs'uEK&SS)|!2AFt@E(s (0EOaaYzdkfA)ᰰsTX).SEQ63mǨl*Gh4⿖%Oˑߥyow868H#>K=zRHaޣhj@W՘R;? 2ڽ6t,eR%iՅx1O+YvB.H) A5ؚa;v+|pQj3 &Dzkݢ:.[n^iF#{cP)EĈV}9yՐ:a 5q'<蒉kcEl>goL[Ah*sCd>/7Sbk`Ht@jO,9 /l0w׳=Vq-YrHfZض :Iw"51kQEm4f%|`V;8GHuY JlJFmIg )nts̓^WYFP#4F 'JWFcXwR=Pud W~껟:~G f]$L^2ET 9'WY`U2h=0.*eڼ!Sis FV[]'l92o:S-N(HJn% QIqt>Km<ĺH4.pܟzΣї*?U @Uz5RSz؟}* \Ue+C!=PxTcHݐ[yeNV~6xjlUؽ6,@Y+=:3\gŐ#&Q. /u!3N{ _~OzSI?\ʉ컕Zu|Ui+ucki&~~Xut|M6 5pm{Ѭ]MW$Z*6ՇUnU0$?Q[x%?qR (gG[!y*A $c@,>bw)5b|EeUɆ_GX_wnY:&&XlԧrXʽt-бl31pM0STĨx3Uǁ䥄oC}GjcJ~+ R,3ィxӻn19|Jʨ3"t^&xM>#{9M0Y 'Ӡ1Dq*ݟj!lUPP;@G81訃ԛLo*i#ҼDYY̹Ī8UJEjظn*qGrSW̒-P4{"%}]isCsX*)WL Vz)џ6U~Ŕ-yYҝa$H7t4j -XrCB)ĩTйm:*ThlQpfe7]> "5י-/M/1Na<R"p:3ǽ$͐lSSDvCXXxXFt'l+J~SuIAjT+A3TM-ŋEY´kb $ iI@jY()BijxAF)$YɹZ8}_ OhM"|8܂"~^7*j)eN&Īk|N˓I%{46s)a&Ezu<gӢms+0Әtd4x\Ӽ++|b')B(gkV]:[*~ !8d@k{Cx-Ek \>3tF:SSb)ߧ1qu<א/A'Vl$O$#7w1 Nb d_v_vt~QZ3+pCm̱P4=y[~¤&]=V.NjDVzki.y#}"_<M^}i_4guDYuswps 4u/=|VRɉ-x g6 [n yW:.?ޓ[9X{TmB,mh{ck,![RC &˜R1pM b+tV7gΰt ysj uk*R I+U[H>u\h|#}r*ǯҪ3Nq o|ìbaiTƘ8Q?i 6Dx*n۹ߓP$_5n:% њUj`hrfErL)LR; [F}OEWLHdž EreT E~V9qˇFh*v6CW)aʼ jgܓ8d#dЕѐjDc*|Ճ<Ѐ֝_Qop:253ߡ2F-CtIck7I R=[_^u IDAT5jjRtсp1VE͡*rvFoilJr ۼ[H5k=_M /YiUyNEY^tE xL E jní2R \`(8lqAUNMǕ*Mh)-z6Rβ0z$j,b:2 A7*y5L[U }Z%(W{cGI{g{Y Ў)mҐ6is 7nЧ>)?qZYYqx =w}XP/_Vp#iB jaAz@YX.+LLE=+~fLEa 1-VNPIria]8ba R:\ 3CyqDhHF\qq Og?Yp}/oַew,TB!˅߉V%Ck4hSpc;4.p*r̹9`H-{i᧐ R9?>% K#qVis# W7XCA}8ܾ脆j/s!I*Z/  ==?|A""zO7n?moW#G>򑥼!U!X [x?C=MAF^v=D`Fށ|?+ce$6j[ްZkatUu;5:&UϒȘU4Ǩac쐰+M*52zk^S;wxo|䄞yަt}<˗.D\emFōy)zdpgرd8Ocy2tBpԟEpd:*dei Thc 1h?$*4mUaR^g@c!3O(p7 ǵcltwu""$osms$uX#LotTG5!;S2DJG&?m/6t1A"!7*xؓFXuJ-w]tpp(k y^ַKW繦*iR$XispqP$Cuh@U^腅%Ь iZgʨ RժS=!)oeMo{Ȉv>pn̠j| 2 Zb#\!Й?UW0n :ނw2oPh0RN#<\E2$MncdW l@j\Wg wcVRybw9!VxIm3*ra1)ܾHDQ0#߇l\⿪ }бϟX)(= fK͗NMZ]Up/4( t|C4{:R لk"ð/*8B!F[x[BV@nҘDvUe0BֆFo,W9!U[@zsHSAN+/$Ms{1h0}X,/6uυ1P`k쌽U$"N{y#c2sh*s2u#d{Y1a܇\x»k:ȺxlV.ӪƾX̝g{)QpA[L7E ƹU4dE2gq%3d:p:%&TU%*g{`K1A!LԞ0 yaOIE N+mDW]&:.M@PuFw‹zyRN,<(s'H/48WhB l$=T.DTx;'xhyeh,ULga%#yt5N1$׌Qunpg]vc$+%W0FMsBmbd͓qZ8*E>=:ښTnd@iX䬃kNRtJDD !dzSc uҼZ*#2̋`Ċi朰 =kHVEphzNA3-ɲ4]I =݃-Y6q7چ8M $u&9ry̍ȱZ@A_'G%dE笔\aki;ykƌlS>M+n3E wPBJR\ZqW*6,mw[ˬ8%mpl=ɡhPAp -cJ?$l\HQ o-N<-.Ow:` iXhUmd`FAd]B8 !蚘݊Q \OM/ ezVtwGɹ:ǿwV9^]#x}Qk? ϾDs-³/G.?@/) Y blwhVFiefVhX'Gy񜉈het/~%gݥܥYoߤA>~ONǃ\7;w:ˁsŚ} Ͼ)|Nq/s5Ϲj=֕yXU~!;29}ٗ}2:~X7~~Vhex^ZbgQGϼny9kN޳u7nں-pK }8y 1SCϡ :w }ߺ['ߪTj^H7xNfSg*!`w~[t8;U+ҊZJTl4F& ΓW ъ)km]s,7g*,f 'J`,,|F͉"RrnD9$)lO){{.Kui1bY6B|)*DH2EE}+׮r]/C?Si;"m aPa!/EF6 1wQM3ޓvS.io$c^Oa j)?KOUc~q)//ۗS$xiݫ96G>wVlwx]wDP!2T EaY4R{E)H<2XY$\GT8JI)_ItB{E*AORIl :jꢱx7~}Q$M B6tA>k97f7 k5϶nY5pm SXTd/}xLтv?W?īU?VγԌIrݒߡ3\8,8y`Li4qO. }z`/{xȝS{:1z/QgdCtr34ʰCU@")fQ'xm֩!L \g1ٱPI.*C{y!wi*ܜBNsqu@3^Heț7uh8swKyD{aR`p?==C`yN>iG9af.[NaJ C \PygbKKs1p]Pib9 +#-O֟ϻ(ضk9|~Lb&Ue%#8߷LZ<ѵkC[o0u34:M 8 S]Zp0G0;=˹TΡ$i7xnXv #olpuoE"Ѓ)F\C#ae Pg!gIUm>jk!T@$.hJpd+׮{3nJybSϥMn9R9ćb6 S:N30G/ e6Zx`H7 Rݩq^(gP{c,s!~s9 >c-˛BZ_9ϟ뙲ӦUI-pj z|ji)iO[r )ۨX)hDLY*+=3T䤵-is;'7dy:_/\#IuLhJc31p=s ,É?ޓ  V6b /JRCg~NZ ,ϡhxZ߸:hQo+#ImEv'7`5p5Bmʞ2s'#+Y*=M|很51Mf+^ /t{Nۡ-VLc!2ܿ[u\ U1#iBm8lэn`(֧ gʬf!Ci5yJ)$(?V*z!ϛn*/iSK#/_V;4x틵( iM4*Pl`ȅIOptEN_!$nRGpWIBĩ7K?QfQnHS YBqiyR_{Ix$ >4XcS)INzeoH7ſA x:ي\&% Q +^I&VNiB1p;Ϸ)=qqs 4E-x.sgZd[Ҍ0^oᨈ;֏Bob]$L \MH . 4bLI0K:n_r(,X#|[,ܴ`:ՃeV%{qȃɬq=CR3g8s|j 2g dWm(C?P*$Z2fɇ~ !-e*Bohҫv&Tr|٪諸+mV.#$3Cڅ_{(F¼6:Q.$dZ{0$:& /R*OVowZT^phڀ31߯zm+yuۺO)s>tCSdT#HcI0ZǫX$Z 8}i2 \ϨT MU eLNܿH<6s)ǖU̟Q{I>+-%\ 2_hL W?Ի;x^l34֪uP =X뜊 "gS&=w#58?9qp4oz  aq y[UQAI+wtƦpo% 3U{P@C 2ԞxZ\(9v iV eB+} }w/ ;Py}U"?{QgQ:<>9:߽t<\wdůDǃK}'PsUYsmo٥-3d0_79D9-t:VSM/2b/bH|sCrs?W$R84h3m{Qc?{0t|K{uaڄXI՗be2])JUie[,PAHlJn)|Caq,Z9JO٪/:NsGR$[֙%[>-YGibp{q%I g>>Uy怑m@w{ͅolOt=-׆ޣT'HoybڃJc"T;r-5 ad{m8<#\#E+* `}V텣AN; b:W3`L GI Ђg!0]U{T"'„7Nx]BՙdDB-s)]Ud/Mo \MX'1XH@Enn?tB}#˫U!k9Tz7*qSU,)lI(N#冑Q#wBW]Oai6OvVRAk!Z /c&4oa X֝yS Њ/ ˢUii"<^#Z6DeئjMmǶ<W)YMVȊ {?=܏[-T铛f'Fi7gߵ)@R*zc!xPg |6;KV~ )Z us 8Vl CS?T'gAuN#lƅAFk6uJq08bsBOԔ8'vCK͓J ytaf25'iaёAtK=/F`<_ZEQ ym\$s ߸q>?NYʊ-[:_o x@s(ǃ//޹K;[_lo}5ůT;wcxn9h;[t<,fZl m3C qKšk?#groK_Ӈ@)Ľ,ք^3x~ų$"~FOx+g<{! w=/❻❻ů; }^43~z^iw?<5:4-K\޽K'賟,]p>яҗezB;ۤ2R;,{:rzGuU'6T6ޜv!pbAFzIiQ)Bh8yr6eBBƘ Xn_C2p ^ ͣyZչv ÏuBgYu( \{9:<=DDnܸaj=K!Υ"Mo3`G/8 -F![\B'Ci ]2$3vZfD!]lP3?4EOˢC52zk^S~ӝ;w>W\˗/^9N ߙ=6)L{OA[Ro[xj2(* yu(?16'Mbh;e=T׃ Ozƞy4ڞV 9ݝ y&<3}}fv;N/LݮP}Q{ZjAT8j akK+3g\BH-@X-FdR8\ 뽺y%A뚷LZ\@*䱇 cI#أaQ %&0#%*M˗/;t oy[h8O?M.\'x>Si ̡.*IX%y@nՏ)wVicR+kxS) e^5Pd׫,+ExY-Pwhՙ9#gܿ]Հ34 @dΝ|3O~0wƔLFeycMCP!0lR'YӪ#_$8:/KϷz0\ 1{][{PVs^eYw \M# OUV wIʺ 3)TzUYC^is >3 T`HdlU~ 5~2W$nhB%'vSomB>2cS&&S )& ڈ9#Dep|ϿlV#0)rr(rǧׄ~yZ;rIdn:3psbtP!X СgԀS!w=^iLɟy\XN~;cL \ X!\z ^%+*i("컖;=4/:2< SĪPe]+B筽I9.OzUC#{ƆsMg{Sl`lnc⪎k \M& !>y4u)6w:+(|wR :x9XnզZ_bm5ۺa]u;R029n<-rc:%D?,zz3#“fE61f皂O]/.""&^\BM7|ۗаna/aδd9v _4J~N$ ې1'e^zF[:@]cj~ȊΘTbȳkII҈Yj+\gN,FkpF|#|+)c4ﺷ)ccU4D6_PU>w %|slL<^dO6dd.E6k jHB q4ȋǸǒ)RbL&F%xYxmv?oBE9+}Jrdy"01D,,L=fRXZ6"K-ya]B !!^j!I>,ÕU!CUؕSWV7l]op':#-=9mR_~k7-41դEiJ!:tU XTz8x8ՁS˳Je^VMR-t$R) ;L}Ph*ytuü/kXύp2QDi=1`MF5k#y5|}Ĺx2àz}qN=ӣAN;DgJ2F79@⛶3-g x ;q蜕1WY̞~}a8`݋?G '`2k:*†ɦmYɛ9GVARt  UKXx0J"+BeXN|늅%"=Z_lv PMB]6H6pm $f!3v:gIDE4ϒ~͎!FCj (1JT*EB{4n+•) PE;nwǬ IZ0VwH p+@[JvlNy Ӵ3CϘeJʊ:˲{9{/Z^T_;] t~g/< )lJ2}Tq\kQw,!$VLv\C$yg\).steuϪB2$ {|ʜDY-zj{X [޸-HFTjz8@ Ζ^<42}ǔ`FU %FzbE>,jHՑBP"EL֒s zLƇ6E)spC8!}WcNK\[ީhSFw7M 6t )HO9y11(4^Р{HE'B"*I{ ugu%kz TgELQ/`jXD)I|._41ģUrq n_,(k+CCT i8uFB$AӂJsC湨 )FpVUfdk=D (hǓg"S+ k%tAD?s?~kq^6u(NK0+s$ؕB%z6< wyTs]b̥IX}l!i p8Q Y2-=ƠS䔱}GC0/-=V-.nUS1Cޚ(gvfYΑh袄\W酼P>'rs8ų$$(`܄ Nm gTR nw)G*^ͳ-PX6o8$A%0^G3Kswwvk  Ɣ L&t*0-Ǟ+)ֺNGZ0.gJek^`6+,Ibdևޡ]*s@SfHWw096QxXDȘpu6҆y3b瓲ٸ֚}xۗhsJ[{7֤&\N!kl <Yk Eƃ- c;Q~Wg専T%ƯA(稅"*U䦡̚hy~>GI'OanF#F]Rdi|!7{a*sV9܎45z)`F@q±VҫZ4D˵*~Q֧50R٭mymc{RB&$g+3zglMМf+:qeZ*lzk]gcMAZZ٢xPŸ)=%=dkj""!&o-r;%F/4 nk%?_cP4 *U!`[ΌkpG8lSղ-tG}VK#y L'qb{45og;92^(iddCҲbY񗂋pGh.iMhK\^Ŷ^KY C#ݚXh&7+( /V(:J+})>OT <8Mt lM} {U}cP `́wqh!O.B`u\?(x#'80؊j[[ׅQ]DX_/-nթ Q!b{C52tlr $l_9^iz\"-_6VӨS/X|ilFi0N 9: 4P^dGʂ'ĘjR,T pNT),B*Yd?N{Vi-!TzNk?fC7IvcC*;p[ ieS.)D(GHZELDt1=U9* H-Ƹ^NjpE#ߌf}ʵ6k}Vj2AcAf{vc0V4r>jkEqo!k l?7RxD /8XTV7  Jx&}ذÍup /OƍO}<}VVV7^r|ϝ;G7"=e[W1&!Ҽ m :Nh C.sR_0UV_c9]zCCg'%y>AڌyǞUNJ;6 /AtYٓ*qDXoO Tڔ~iqd9XċI5O6i \޽K'賟,]p>яҗez7s}[Zȋj:uQL3C!;ЛaY5+ȱjxZBݶB$&Y-% %0??s #XB"7@=eS+E?C=6nr{l1\HO.ȵ1Fe]V!iDT3./Yͩ+WZą{Ο?O> 7nx+_JzG#܄ blaEECONX51geF2_ ǩ]ϹJ3gjPX6/>XMglqFnE1߁_ [۸UTDTC;}#/)^Sat52zk^S;wxo|䄞yަt}?>:`Y)y -0y6e(;meϴANjQ.(V" 3Kyo2шa 3h^sN4Bhȿqŭ*^ &9,܈^% X:us֨ygy9nx嗩o Mo~o:`SxXhSoy1!*x!O/䍔VyhDShE8/LR6Dy66Xռ1nM͝\ <2x{Ґ[ꪐlFgQc9O˯M1Uַ h&1:=D-t[ORwvzꩧ_~BoxCP][՚"LaT(pb3`b`Uv&qz׵pcOLl &>%Uf Rua6z]Ck7d<\vg3)v.s(?~&rN9թʦy^ yzN0d1s{k]- ^o"w]tpp(ž=zM,v Ercw_z,م:Q/oڛ%9U% "|ބ&LDL%PLJJUN*(xGT3[ QGdP⳺CE{]`(y}r \Dy:&IDR dpՌ2PړaD|XYȴ׏T\\fJo*ժe׹p h"C4J0=naZmo-҆*@Cq<8: m?I8G*{Oy1ر Rz]F+HT/6f":дߎ2x3pPfYp;IDAT ۡZP&}hesE%YTqׯx=i). b^xI][YtZ߇^ՔbSaŒNVz42CӔY&UNM0MtB&|whDX^7Fv+ +1OxRcVrN!*-e5mxkB &XTwNJ/Fg_m0UٛM al٬İsڈ+9qDZ咏xl@(VT)S#*pdP 0ܡUb/?cj,A3!Fx~5Jr7@zB(Ϥk&J+PMfD8@Z"N8yL:2U"+/jѥ!Ԍ2CN K![9^.$-bY5ηJ)SgĆI a71p\yRDm)26ay q9w~bPe yzԦڈQ! cX>ש-ڪP^mu}G+o27j( BZ8 mkvs\2R)cX{6;*F^5ƙToګp}ץdCGİ+c)V Q9-E*͝uyhzB#0pU hrn+SUeUz!J*,[" Wy"eؓV^Xp3SwԹ4_z +Pm[5h5CET2kIKp!Me' .SUZ=D_z=s~! \[AVL`uWP]1*Q }"Ra>f- Oica=%04[*,CH4ߧ55OCxw9F'_"d5I؟R=yG6[uax#= 5LXNI!MvoZ  ^)Ë" q L2ENjjYHέ_]>0UU;Z4vg缯AeZWe:7{>7{f,8Vf/НK'8|_hs ==:!";˗hykheA af_I&Ez?!?7`4[lӣ|~^OσO'}uiuyZYlӣӿgwϓw'5Ig{LÇ НK47^[\G57͞!),{,,_Ρ)3i2%ZrYl)ޕYYl_]Nýnp?PC)Ks [-XbykՕ9xc(r-v$تfYʱlf?qϵXt9hǧt1|)[wf,TC{, @VaND}vo$XHMN$jtnUt|c۫;=ʵ_7z+i&7γPz*@!y̕E;X}b USYv/nBFP#dYmUzii3M3Y_xR^mĖ`2.XKiy) W[o!R={ip/~0 vq%k!_U1C1p~"`W.XH''[cRFF K&q ;6< uTIҐ{Y7YƪZ{]:EL<H`d6dl"` ԐH:k](XP96,YW>*'-`bĭu'CB-9}nS#V~$Z8ysp=d+?1p,j*dAx'PX$#%BX~tP Е0rcC۾Bg E+#[| e)8Y Srd3(qo\(=ZPX#bb-L@e Qt~2Qzx2:L)>)Yh%*OJܣ U-k+kȒH O*@5{̪尰lKN3K,YӕyU,BN؆ ʙ[䗢zиNB=/DbwJk^J&%-,+v=Z)jCzynRnܥmux4|!^zm2^sM '9Cr9l_cqGgZ#W rVWDZZ./dgZ6˞L{BrVfz:yN[+Ұ:vK*hZ7Zr$#BƔ*,H2ӕlkIV2cyt@7Ҽ(u-d19Gr=V[a4aX,i~M62B'Țޡ$K?D^کKd,S2lAAr|1 0i3)̳,h _'Ҁ{LK^"=fZ`mf*0t#^3ti/>XPsrANEP/6*Z(=!TPЪ싓Mk6 IX2 NRz\W5'$IE zVgh+n7skYe: 8Y}[#IYd kyS*0\\+ja8b8ij`GP:JHȖ60]$eIk[CXy+Y7#t T 񰟳8-jEXE)J߶=*Fw6=&9L=(e\K)T#4J/bPRXP)49{47cTVAHd!:uv!*@"^ɿ <ĬH2O7Mxa+)?ז.Ku"GbkWbC6t.lr] rZJ}^Z2`tNR,.YscʁEbuBV>/n '$K5..!+ &iާ|2H\zi.vzvy頜4i a}E9k-7 o+Ag8u `Y! 266-Yz PM4Muv2#+c0adŚ f0,C874!J *J&=Qhd"rm/ ""( *'Ogn#u$-P BNFBXiJN 1w}BcDʼn(߬ٲ?龠u,ho%-,*pf YVyFi3 ӦE0a(lY[XBC͇tv-`Ȝe]D6^Y P] 0S0jTxXP  ` ?TU1Uɐ,ZAԢ\(629 ʹm_+SP h`xȞ3 sP@eQBA.+%TAkF>!SP@ 0+000g 4+ƃ-`(:I \R |o7!cIby7 2 t@i`<# (>+0%kX`(W(yΨE\L+P͵H$8 (V+p^@H+ )UPN+HN*aa 5T7nܠVEn] sQ F~tpbs=88~_^^]}lJ5}n>|Ϊr g2|(eOlMz]Oo˗/P-[uss677q'b@>.4ik}罟 nNE$;Ӫ`T%36_/ݹsI{< ϧF`< "|M^@J:\"Bo`$?S;(2,aTWx>{6S/..G$vBvR}R;yqPk@Uo}wѳgϢ> ꫯb{7qj P }㧟~9zŋtmza}/^WoMÍs 3@5)Gߧ/_~e:::ѣGE=y666W_ׯV98ݻ.믿⮏Y4Mz{ٳgltr333D.ϸ< γ@n˗q,^yz#z9}[oe+믿Vy< c\۷oGKKKg}{ѵkע>(zEEQt~~hii)jZJt=ܴ ='2TO߀(W\\r(WrFyf!Έ IENDB`codec2-1.2.0/doc/test_datac1_006_spectrogram.png000066400000000000000000032362631445607075400213460ustar00rootroot00000000000000PNG  IHDR ?bKGD pHYs  tIME "q IDATxyp]}}DzkUCW4Aq *9 ̾.\@&WU_>lmm777o=z7F3Ƌ $o fR;^ >zV;Q,aY,BZž}pU__G4^AAQrK={>qHO}S_u~|_WUr9Ʊ<jEAAA񽎥ixlAAdA됓  c    nzAAAql+4AAAĽm,0AAAqoAAAA1AAAAqLAAAdAAAAAAA1AAAA|c9{DHJ3az~Ї|`{ AAF:}n84zqRH  ~ލc٣ E!&Þhpt?v-}8ÃOq4 $={l }H3(<{N)d?_P!ZAlK8J<ackF}Ki#=mF dR0A=gaaHQlNB陇?gJJ>qHK(<{ [_>{f=vtNy| -" t<ȈCЇ,drjƨHmk,[ݱ} )2>g=/# 97̣:&a)Be\uØ([ފY*H!OM2yfZԂҠ'+O?#`i&( EÚ q hcjPC3\PI]wGP&  Goo&o{ՂqK7<@v"w4PvayEDu:sCfߎiHnʥrW\ y0:nR:!ʀ >vQhA7Ҽ:jXO8з_E,ILq {}sqi}fv<5 "- ,&?qKOEcXyN?{XZ 0}w~S{l?*O?mdH~錢ad~_?yjJ=6 ,vI~"7 d!EL4#׷~XB[WD"~ R[=~g w9UiC1RAwɸ^!,t m"CcDY* zlX#K,uK9OQA 8EvZBeԀ5ps'ɊX~='~ 1a3KT鳝C@?5v7!#EDЈͻ9 A] Mx VR| ?oF 6c)G6a@u}bT-߹I 7m;&ˣ4 7)aFfP]*/Q#N+B{_!&><6 B0H8dB ,YŤok,+2Jw(Rd,XQof]+y 7<25{A(w⻅¾e)ˑKnGp?NF0{JQ!FnߨsUV2~%HwBPTvw2_kʁWgk2 tw˴ſ0ϋq|H_r=uŭӸ 1lty+"CL86#VƩl_m뛰//@&!tfO2 ys +>("d>K!B x4n 3?ܿ4BuԣwFԒj 59 j䑶5H8r$K2];EtѰxv#Z݄ՔOPq~xQre߫E$ARvB;nDLe,a\=ǹ1ڲ4 ז!j@<樂iνwG-g h9Q|)n$Q_n~$Y๭gdȹS k7zqi{}/ɂy/{jln< doYn853<<#f& T>}ߜfD*[!L٣XړG`8o'OQ %AN`囔#(҃!V01ahOhUK/fQU`,@)v=JM^G@ɷndJE.A`B :'m&btd0SgRU0.\.qji:ijvfѵ&n97T$ jANH0~DÆPQ 왠혎3:P{lcl>RUC%H3Ӱ// ?'Xtө _x:s&lqwDr_dG~'bq0DTMDv/}j6|Gev$FdɆ@ ) >[7 Dx[4>gf<ZQxQ-" *PQQBe~ U"DCaڮÃz2r|&*2~fnڀdv'?yxdGYQaI4 bEu\YMs!&~~^S}iL CԹ1(Z @0ʀj͝Ns(PBo&,EDf3H„UԶ9|Q`>6cd%c|`H4vg<>yjzT因![dvT**Us~X~ v%DGaF9sMRnЍb}[u%ۼz!Ģ\&0N5Cbr+n'NC`OZ˸41B^zO8dթSO EfđJg#ٿ;Zzifӕ˲tf4(ɲg/4Ue>(2Go:o3S %q'"4DYGr;e4z7MCu;>|~.;Hy|%We~D3g<[ J Wu$7"4mf A_!?0 J #}yh {W~z2«YɟMA Пc_1+n,Jo@,qe4X 7ӱ N9;צ,['.\Uyh]|cB!.A =rE`air#WA ڀKh zy;\ f8 @PUhFa8T'9 ןg"nMHʩ<'xDt.Eٜ9@alp6/}黄|qd~);v6#g3:AJ;s71j mlvt) 0TI@ZJkc,Rf#fČZos<f6;ل3݂)JvA~MՖS)4i)=8M6]WM1.;*_F: q~٣, qhgEu< DH5֔J(=0V;9HT>~A/ˌi㎟< }24h)Mp+Z$iꦵʃ6g^U>f5ܕǘh:b cCmi9DG[2wH"qƷBny=c%Vꑊ':AU\,ER|-4m{7NR"2YKZeF@>$1ލ=>O.`d{ IpCMefA/Gr~ R8̢='w|&pTYL{^o|OQ3Dnob?)D陇Yv;PDBxǔ,@U AUQoi߄NC){Ƽ٣YR)֗᥷} :kJ^age4 \mcyZdjv9k]t65fmuv6[O;)<ɘ's;ʯܤ\qm#0Yz[a hs*yᾖNtcJ65坎|٦ i _ʴֆqjq7~zO[;ŎscErvcLUÃ(dmroṷze#=xF]׽#{S~(`4Z:ͭ/1ՎVE~wP5ۙNɭ kvLKWI6&R"Ν 9嶲7yWuVid7 7!Z`qhďGkJ_׾vƧOO JQ@f!vE9 BHWaE< #eD$D7Co 1DG%Ա~XRo|tsv}5\ч?(0Ձ>H "AĪqXW^rb8Qj{mVcrPk=P Ì`KkYY.5 kX( R @Ğ{>j _MQY aysZ+pV9{Eh wafX$ΛDfC-XKe("(HX"rn4X2$Ez06'Z+176 d0X,VGP !7o@-Xt " ȗ6- H}ˏP%DByOc?=y +1KÀ."m #"t}V aT /ְׇ`"Lۆ<5ئ d' !UXyP`GCjPyafk{R5l9p?Z?%)"^ Y:m5hOt]"?`_> YBB"y;P0L?{ܳ}HdRTaU<{l!0밫L76w+mQ ()ޥ/E c0/^iy0JƠw)5e}ioqv4 [_>#t0SQkl31Tߺě& A^Ce, Z5'67aoB%!19YT`n2[ + LO"7"I{f~5O@JvC TOGa7LTDDϤ¯|eH*Rg}?Ұc>GzDo|V P!X*A/@/!@R nPl[" fAK*B\XeC0S:zސ^}|-B[.9;MƲTb@tel!`oe HӰ]d={iBL||/UC0 @]C"(E76(H Ё,Qt1S?44+w 0@eCʖ V갲9v5QH1 j#t5ciCN$!eh3P^烕PׁrX[U"n=1Zi@a| ihk`dP#>@jnzKZхGF:9E|m[d*TX} 2up9\d\.yەk&_^}%VD] Zx)1AJgھu H8>Xrc9g^I됒IoyxCSPV CdO8-kYrKk/yj?)`Z]םm ԎN@Q'Of/Ra34Vseْ>uR@$k++ڞ~e}f|~!ð셰|[}I^@6b=QHwqdԆ kyV!z`fsݰCJ[QU!~2]w ͯ5B&vþ9zu66-2U}]Lv22tp ]ry' &! mkJ077R8 eTJ;:T;jfYUP7'ӄ`\_99pQfACAHo\}cONa X2'Gf&3,>\H(&NYEq nH3GwVPCXN=(%J8:6q[#yy9o"v=@Shb ~z7 ]qX'HB ,/  ްq4L+ļ 9|xwg/r<fuܔR=qv! ȗuǎ_DvZVUvu@XFm΍a 0,E@5؂/g#(f=Uk5_7X3}6LgϾ,{ ų Ha⨀'i"vHxt5F"0UW{$і&RȁŢKcNSg'(ۨ wMy;]Ym^5Ҍ<DmD|a6W\<E/.yyX#Z[3O{+Ul`"uՄ/kMo Re 9?㵼"`:Y .׊5eUL23a}AWxZXREcWjq ,CdDzy|)IONIΞN'c+胘i4FsɵF3eTog_aJ ` Z lГa UWmGujxP 2vi!aH5@XZ9;nEP-hwx95wtXQ8IJ*ԢţoNC ŽlF 3@m>vT ֝DM^ҚE$TXυ5q-ZlNj(op)}6qXT=6lPMm, &ڢ~GPTmҫFp\#<>֦tOV[EYd ڱ]L0u7'4:<1Zm<+(,Y].8ue8UokGxx%1;# ޥ0Y! ZC)谂*=+Y ozRryB#u<RйAhDL9MŜ@k#4'eCQFgws˔dJm5f@1UڷiW4 \ZYU^&d]VoJ KaA_Fp3.[ƙ^o#*BkM@a kcyjv.JCcГA2-?Gp?yJ`(4K,kp}`XF@C(KqHuXd?}X͗Ȟ.BTM/ LSSra&0NşCpK_Sg+2+j%n ןeu:I# ٽ6S0Ri &{Fif&̇M݆G;ϫ0Ckd, mB_o|G)ɩFCDRtי`+"ăGT?=5,AIxv.xf| (W #f"tE3eq(k\!^ywEŠ#!vg+&¡u@NB/ǩ:KnwJ |~g>w뼦KҀ¯]_U9V~{8g>KP_y4Jgt¾:>3ȕA_e VPcm~3sy~^SLhx9hΞoۡQנ>:uwoΎD`<. ? ?Ef&B?@8iRMzjGJp]c\ePYVSn GmG=qT~m~/} xV}'4;&̹" Ѩwt}*1?5l(nO/.!Oa:y7$}(r֞eNғ{ r7^y}u91™OλQ3D hxJ"; nnf)f7TA¸4Ӟ杭nT1^:O~MV/gO)T+hj[b1CmGm!{}'>{w3Vc:{0&Km(.V?tQ"üW$7t$w#Bg(MwFE(* k"xNQsѿ>'N AkʲY*q43 3}/05a-"TEc!m~lQUaFО/"KƵًzJb㎂-u/cijakU((jذO!Wm(o^u52]Yf&Frmj^%ߎFo)#16T``v7Z a{tmm,@8ĺsIC0YdzMfPz2q^ITz@nǐnY{w}e5hK8M}B9Չ֖a|ӝ#cO PLb^W X*qi*K G؆Uaݾ啎gtiNMQcY͛l;yC-4 1݀2{}+oCOa%c,5(JC0NFΣA΂WMrpE-̃}a)fYC:swU}yeFJOD<)~F3S4@QXlCr[bQ(>ɱC>,5^OAh&i 9a ^EtE-m<`HS>O"}@I_(a!H9[<l{Y,PrdV,?uborD`n+B^$~R\JA`)eK]s.&Ҍ /G_^?q#e&59YX{w_,⧼ꗮOi`WLe6~tOVx {z[u_$j xNfX:EU vp$55!'}q?G:Cspq49? ҩÎ1x"#6X}xYe#x52C)~7-q-@HdիixF~ ?WDAj/z C}X8^He߽ΨGQ¯_vaܺLMݻKP@YރZ}6}22P>)Y'X`kŸuˡ>J/aLqlǧܥfu>S;L1ۣV̫ZGG\<*WOʫk\Nɐ拧z\փǴC)vpm[9U*1;C^,i|3d[W vݢ/en?%Ɛ9w^c$l<~nmm2wTI1PF6KqHSXuPeVF0?[CZ,~qb&?\ce ,v23ejHyvnqrQ>(EK:uW+mrbw|k(ll]727>DQ9Uc_Gg{znetsfZGuSitXpA,f5k &1 Z!x~wD_T|5ϟ\zޒa~&s|Wъ 4xcFAܩIS:Klj@}?cc7kg%@+N Xk0 O\+v^ /_C/[26N8`b":+:>d6&-#wڻ,!''zebu3/G~\@׼3#$Ģ$Hg:3Écξ6>5%JY:|dԄ|r͂%0R[kf-"ab)nvf0Dց{O%ze~ MK3vNaEȚd]7hZ_ 3NR^*ufo?Du:>bJW’xJ)_0C`n,1>ޖ{ӯXۀOhE`l7)cI-,w@2lZ}Цy߃}w 1;w;K H^M5b x~|?g*2*?=OvR`*oXHoyoٲ4F!R[PR%o7GmBA&E |J?9(Evo]Ebcmtr]nK2:g*+\ց>-#vDirc~}c}KdMO߁%r*~Wm#Y^@lsbNs?aĕmzn2H6ˍ1ޥafW<Raty#ȻiNŬзXA Ln^rc#=֟GI*amPӻXl"u sciSq=YIO672Ȯˌ`. 8˧ ?>EedJFT Y,ӃwӉ$#LEݜ Y;,3VCm7n]F}&Y+EJ%;A-]lqlC` x|Įf;&NSzc\מ13F:+d–n^ O͑TÖDZ<_9MV:{{)?{ BBΑwp)Y 'e"gVz`r:$Q,CD6'I,L>,SaPuS{iz1[idXۀ:bbtVeP2TIs]zr䣩;2N`3NSgV`yG3ၘH@Y#*-8~ t^Y u /)h&QэW!k4$1p nZЂBa=ӭ6CK gZ=18F|zH߀?UiA|A9MN7!5PIhYJ磌Mfq0f*cdI6Lx>|֡>IulsH+>`$H6l $zá}x(vT-,9CEɾB3a2g("7VL}TbH6\߯@ʰ:2sJ?⬈˳8A3( Wxd ɺZGU۵DKȆSR_g_i066%ҽoŖ`ڄ"1)Π2dxVjd 6=D u* ^ ;6rqiZQPgq0񾍯m^ZX{=ѧ4P8arξr(_\ 3.wJ=BYF6 EHy74CȎizALu4NH0f{MpN]h&<Ђk.;E}N.Nk=ICxY`1`^:M@/[2ЯQ88FAYCB#6{Blu˞ 1I<}MtNR tt-!5V@+*qjEAAÓax)T=dkAIP8vzP#leO4;۝ex .WbeݳX'uŊ}nY5l9:t"BarE%zWe4"p-@+B]'[)ma<%Z-g& -`c{o0v3!ȥ6EVi%_8-3(aFҏl^A, 6%W3XY ?G a :<&Y`LAC=@~ T9xf0Ρ!fyaܺ / (O!o߇F\d6N4!d 'BV2V2>څy}>a7Ӏ$,{k|Ȑ ;`t0-V[p s9؅n5rh@\ނ9E$~ X+8n P +mF=Z@P#' "RG0*m@aJJ~>kOF!9_ƈ|[wMx_>@꿞:v~!  s>:kD ;iH}Cye"%~ =NJ{[a ? nxcЧm*5pH@2/9d! gxR ;{>9| A;J*e`I&о@pXC"}pmF  nԹ> w<Ax <PeL*^4B(>S Z2N\ '"Z^#5ɢ~} ꐀ7ousK#q9 U"+= A4D[DTNAc?C|9R#Oz*xkaGuM )HGxS 4!EЇ5(8hPƲ|&n>aWQBexp%/!DW79fLT-/"N!f/ő-EAc5|eG#  '9O"~X(=>p`},P\ކ^kY}rgyH|"WSL9 CkiTo|3X'!<<ª5OD~H!@@, (zk<$/g IDATqr#,$%(!9|f\8{!Y~ (] Ehh^LBZ꥛r*8 co| ${4&.Er! , g`.QC"s)xwQ'PBxîOHDűj4t$lrb|_ݑ\8a:iAGtلJ5>NS k<ٱ b컹uX#DQd!p' 5-7ٜA{k-蟘Nz.4!{'ѦOA9hS ȒBO{L;RlFqZ/A :{?D$&G͵~/: 0KeffO'M=M^yF߿>,uQ c;ɵ Ldo;Beich?QqΞOQ V[t4 CZu#Ylx &.FfWz-ZgvM뜗eÃgO1,.}pn=~tꐡp?P?XRYقq~e3c(xW1e(e~n "{31}k ,Yob<"J(_FiC`BdV `XDzR@G pu'VNv,]o#wC #Aj~υqx%3Ө4ql!|T&-imtf xu}$_$zsO?zl+ y5[؋L [a'Ȅ]eʨ3%cPm ͳ9fދl8PNp%Cph0 iQEvN{T@nCzc6:>#RIYX;huJ'R'RsQ_H𧪰0T^;BI0tn:(TǟiVLq[4dݕ/]{9NFX 11J/Zl^!&Q7R%HeW3<r&vCFc66TM`vCJs-x #^F_H|gz:DgfHp֊h^i}8:mY&);sFb"FDę)K|vUݘ"ڼC+&,#߫B>]D]jy 6-R3NVC0C-T c6CDt CJCGp. 3"+:Z֪,a/0Cd8%*IPOZ( qv{z6M(w͑y3Hex^P-~n 2)-8?A@KJh 9 Cէۜ@;I*ʡ`i+Hz Z@u@ׯChPnobT*LEp,\5\zFB Z؂ݙ=8wexaT ^9 ՔYEw|tcQdAL$dx() bɓK i ^؜0i^}E;64Fq]5HZJpIu138t?Z d_alb" 9ρs+Fo["FڸFSA 1+K|si=({=QRV )DwhgP3glX$C{QfW!ztF6 kI:FQ fgFK̬ǥ>pY3Lb,vGaK8Y&LXX$H]TX~t!ֹ1mzشKv#n1nJ{z~OIFj!Qʔ]fPwֵ{F0^WLA-E&hk{AՑkWP:>5=L{٘''Hl֍rpx]Aw"Э:ڂ==`7c4 WT I{cAH[={[՚ aK< su2mp~? @a5߭ OW_@u:v#P㡇M9_r{c.E]kנSu"5ݏ ]=H8;rJgbx'@!5#pʭx*&_S{x02`o߇4/Πz |z !_^BS7XVEa;IH}2xۇ| W)U!2vd!EXNGw(ϳA{(e*>nMpx@2v#AL80C' H5}{4x͋IȺnhd>5C (·=MC\#$+BPFQzmjB!pgIk iIi BJe?^Yex,:z&yC @!b݅}rzKJIFQת0מA GJ OR\Jv9'`h3M>[֪ D~o  5ݘE-)Aِ~iHM@\ނm.NRdO0Ial*0&a5$xJu*Fc:ž/Ƚ#"T*Q|4 (6=A3cG`2hnf܄yu>ĵ  |cr< G G9DךЇ(`DL};:T!"Þ?y>53P$Fa]?9.PCX qv(B0![9OhbI{Ox? {bP?7 BW1QF?E.=HOwv+PR%O`mJwXwBsr2] p4ZҌs9D8*>qcׇStww8H[|72e8 aŠ 6 4FVL$ ! ~B}BHۿB& _6퇨rަNdah_HB0lS6Pm ;/f |jK>7-*@rդc$zRAmJA HmӞl4Bxu쫢ݞah%|}"`smhܗ -mž}qh%x_E /o0j4P0G v]P\/gP1ʌ>ZAST9=kda]EsvRv$7("_C2<cX'D } ߃41'xDtSQH$ |m W @c$J15|y!&qgJ"tw~CbpB('5askksǨ/Y`nl҈Kq "d3MM4l$T{~fnᆵTAjZ99U>3EH!6zj_ }ٓh9hSc.[+3Ģzuabmi. Ӱ%$Ð;P_<V !CPoL 5X$KLnC0!H?6$PT`=x SBk" >}6\xb \^DٓТRd>G`*x{'svB4ڃw3,s'sⴷ-ƻ-p,Re "l!KP$v }p>VAWV;03Sh)2)>p[P#zj aNE~Liʇi 5TR 0<RTy!nyÏܮϞK\¥6|^w1fbx[`I*NK~L5E2ƖxR kĚ6)wqa $jl6$櫤y8q):&Jj.NA^kc h/_!m/z/'@.+C(j~4F8mi]0uRꘟu['huC\\ 0p{4?h\^ufWiehq9jAZ4+}=.)hl=LZ [4tqܖ,bC^\˫<G,@6!`68-^Ohh[, [%N|OPaxƏ̇tͭ&z Ւ0kcڄ6olwff+B-M<&6Gr0=@pɄg>@i}wE<v1Buf)+:.b"׬Osyҽe'!$N a'(aG(eo!@ʹwiY;;g]WpD< h;DFAasbӂ3 h[z~a4Z}y@pmܵU:AIivl U%/Fۺ . [w{@Cpoy%i?&o^8ڥ5mZcbG+XQudd/bһ'NYl L_gHAl 5\@+.nª[s, "{wxHedf G'ËG]sLz/4CزzcJ/0 р\% Z$iB(xB@Mߩ#N㟤(KsFFjc! XP2,j"G+IbLqr83 ctigd-E%+gW0}2׆1x* f2y:"F"3ewl8I&dJ_Xi݂av@p[a]9Uo0[K$Ɓatҽuعc S g^G[_?ԑN33T]! ~i~4[Mԓ% t?nIOz_8GGرc4+q}~ {wgeFk3iƧ2y"?M>6{=E,2)iJB܄TB}XBA c#''CY|K^L0] n[ъy/2_|=vQR$S[PPVF0-E^|e۵( -79-ȣ}mi/JٺU~֊;Vޯ +tB)& `=,S kZ+,S*c gzelul1(BG$Rs2_W2Db{AxKϐb&" u@| ~ޥ4~- ͋ A-T,gy=qeh@Dc*KƸszsѳ8~u!5ޅΠk쎖m ŏh fO=Et]_fDyVT$X+ShèKmO3z0?ؽ>,k7h!W~$AYkbQ4&C).&LtwG2 Zo6ܤˬיrx?Uwj/8* L}g/3 "oovigBsOMX!j2?أY.dVt׆yڣ1Gnq$ĢYOusamZl'$(]?^Ƚ=>O1@$:)U|t{w||lku/ KvAnJ0? X*N~3X|^s6%O${L]r[ؘیf[HY q0.g]SN9䮉np.WrIc'z."nH3}.rcH[w)tMxiܺL݂k%ϑ򿓣F#^RGlxވkjݼ+iDўe}cw۵bU{:Y7kY73xuUx˭XFc3O͋W@)K}) -`u,M%cqlb ;@/!wP2 =DinǙZ6Ng3FceR4 UFI4^Tc@h: "@$H[ԱbuBy(\4Q{UTp^6;%}cW[>!KMÞ&pSIv>%o,ǍuA=,]{9HT^S!felq2u=Ah=O PwHHDaXlŋb_н94ǂ,!+ IDAT: p}@xIY3GQbhwtGӠKSЂ"8OmQf͂%`W)Z^%QMg^2Yj<9^.zzFnr_8-cK3lsW>Ouq/ҵ|bf4ZQwNMW-֠e'^do 9H=Պkp/O֍lC)BشPj(N' _NCP 1 B94NJdfmО!:S( b"_% T'm$h/_z|P_d}chX8}ezX=R#1qr>ha~7-–DGٰzwO !.Rmw|ƃ)x z#K32{!:A91IV6<`b%~lfa{y{ya3EHͭ˰*Bm򸞌S޽%?OͱڻsȞ]B1}edHBi)>Tq!c fewt(|f%\;h!N8^{ GP TԀu)Qp-5=lvP41*'Ğd\^]˫9Dlxh/V `9f ZY.=\RW y{Ymy>û;l&->e1MFY.l {Ɵl~vl)5a3?awzb]J ~gbT\O9ޱ|^0q꣢=Q${u癏zwۛͲ3Z칈k4;e~\ĊdX{ jr;@OYR^%˷[ypѮ7H}ap sט5 gfo?$}'Ģdf*{^55p_ݖh^ tփþ^xd߼'=\tt}mRY.4ɗ"7I4? qrPKHL0wuxGg$s?u 1 h5%fO<Ѧk-]rF,~2_X؛Uv8܃X# /!*Ħgb<߃ycfbދ2C;EP#"1 _kAǺ-^LbKLJm `-RUgFU>hYP8lX/Cې BN`,-ĥ~ƿƅ_E ~u tL yq]H iv}}%f<Ɛ@~wѓ`G4AvS/m !c6LyXzg -~#d%zHB+ fNmNPN7)܄|ޒIX<@s( ҆%'BlYp&~HGE_9|{K;JkS`d6KHzgN7Y))w.0Z]1Y2ԍu PWǷh[^S:ˬ+?1@c Iok̩"\^%. O+RUNa E,Y\VEETYC^r+*&=]UHG c9clI@yA܃v* iu4eѾFZǼvdV6A B;1 Ρ>|CgY|))zl)ڂ\顫eНX-u|E툂GJu@DOMȓ*B;N3SO`P~sgb\;$]Hż MHd SwN]qNc%ir>['ûcmq`=oǵ N`=6lŋ(6 5^% 7Eˍ/)bYxga#E|IÁDpKFkjOl3KaxZPϰd^O_'u؊YoG_: !|ء=vhmHPƢn"7A76rFғ>u"KiXshx~6 >^ q#hL`bjP>g1G&c|是K_vȵq+"İ-(B N7iYC\sѦtgfq2D~OY2^Cq&[2rdnk亴_[zQ!Md6V =s[?$s ˫hBcb"A3N#l\P)zČ+"p}{b"=gsҽ"EPe @Gb)\^e׮xۈ> VZhDT=>vMy[},Cݬ=y>sA5{S;9} B\^Byn̈́}AoP#/xwy~R&(qpM7/6ӣALA1 ^0%yդ9򴈀Sp|7ZP@g/CT~ oo.!wk}6ٳq*'d@!nYFmPKhB(,}$ p:wHQZDEs )Bl8#֠>_rC;=T!6u#G'O@G-)^;@[\$')I"TQ8YFkPA򏷉:3C6N`K"'Qt'*>W`ܺfǣdU"Ơa޻ǕaϹ  HCrx!BkIDKQ*GJ"۩+vʕTbIE?d{eIGpvNbAwݧ5?sڪ~llwy֩wzGh-6x/wޥ.m(HMHkscT*!LlN*U6D{M[,ޅhM b1>A5c}D|{388Ere[ ~tw~> s{8/rᎏUEt},m: ㋄$I.rb} àsHssCd6L=Qh\EM*eH6\х`Aݦ w߾eM c iy*]İ^S1(S`"nV:rMkRȂ!/˄H8 >4uǣ%gs<Xҡn7|pHϡvpQ]%b#<\m8` 3{gVLIb0e4GMᗴv11?\HN;(JE0SSC([}$+dC5x!)OυCKNq:"$%?7".d(7 @}6 :)'},2tі#zO0ނ8=b#h00?CTfd(b 0;ާl&ed,c!xK/T{Ը~5|&1~TC~fJ}w{:ߏu~2d%kZ߳n>"mootb>RLK5/!kL棾$Plkz<]*#&ʸOV ~tU.Wl|<;5wδGXh ބ6?H¡6ڹFWF[ؙ& W!5A^=!P.rjA v G} #gبK-T΄`yIwlk 4GkDo'j氀&^8T?jMQ#Ş9Ϲ)->/]Ys4h{%4NǘrۙW@}bRGƼ /eҗ[@P^F̅Љs(3 &e&TPIyBʝD'%8az[CǨSnEv:X9ZbWM59m:fVAiVnO=Zfh_Rnt+@*j;vd.`f/B~H{,/&؂hF`͵t8Σ5(2uhl݋R64\w/–+#u톇 [ZXgyQU0߁5=o&EP%Xq-;;Yt:NRF2k|*bP&C:+k] Pu6x ψ]jщsns*+kc*EvѢ&)&=!ʤQe6)yu!˒h MtĶƘJ(Jf}"D>KM1on7Z(D#F?:Bؔm[`i{ݼw#*3P AVtr!* hE~ef-:Z WAQQ:P_ cO^){h%M<.5F ?^Uej-V3Qc=M+;a>z~s4w!I9lUd!z }t&'u̵8,ge?1{j}h=>O\lC1ZdRz# ԕקjkfW*9oRӥ37eyy#QH>dךC1ˀ$ѿC,!d#1a0CkI.hfɌ-P[/e8aVb#kQ-a$n1ڏBۅ\K{8`᛿aZ#ȷˆ'hYud>macO)e6U‡P[V?9?j B {g>+`Eq{sg?D /B9Z< )~trNi"혊4ȍU cQ4} Y]~f//Xa)8AiWD)/BCu;$ !P2$m6umLWį8#z/>%^ CnLmDxXAJߍsܵ_bpQ7<7@49;{.[t֨WRCbwњLAHLsOMź" I*usυ(Q|67ke B˂dN,bԢÕPCZpmD:Xwm("Z >4a4M ߎg~Ԃ] 6]pkwEМ7f!o_JfVL4?$k^˰KM&(ТMV+uzϞ3#rx*H-a|p9h?wz0~ fr4y(e VJBIo>"@׮ %:Ķ {5 w [$!҆TP}+G(Yb\LzֻɉY-}W`p_:,5w.v* |/bϲUHrk5 RM,!xLvn>m2bSEaf2, #CYgS9*n>~ .CZ^sa(8?aDw'%(܁ZGau$fnhN h~*e^Z2 Et"W<e3< @}6Iσ{om([UVΏǘNۗpVj)thWϲi\H,bFHny|p0`ɭާE&]}jlG:!ߥDFPCZHYڿ*nD?'GtGV8gN󮪐_C28Yƚ,M/'˄ !NJˠ6"bk]:_+SۚF6v"Ҍ嵾[ݴgv9 o꨾f(ˋscȳ»[ޫ$yDL=O!:PW l8E/-ك^ar:V?o(Gy5pYH67E{՘$1^6v\guN׶TԏXIy?}s5]W5Ϭקо<[S0aj:H>i!틈l,jNCH"BbAco-b!5L".bOHK'I>Q2C:/.\ؿ<2#0UT /Sџ8[(,{m;1 ;h2tKWpg@lr6Uv=݇L:O@/x\b&-OE! IDATȢG{ 5r$M@fD S~X742&JyVY\Q#='XGu3ÐȐ 1p!4ւT7Y(+2Clޏ[A`W(j G /!VgbkZ⹻o>b9g*NJ#wa؁~NIi yt6X0P 1(1\hHQ>{@&L{kgښi[?1Рb}^֏R6)_۽u 0"<'{$GekmXfTBa: ZCMoǰr%G:S w ݽCj_7Oi9"^^4HZÚYqwuS zn=`+'c'A\8Vcw = D_쏭ilL,&m^iٲ8ךlRs[C=_jdr]H P TbtxG3^bPY a GSȩT<d`9*^.8'[gYS8f8j2E&%ǥDAf8!}̘^Z{\7Ʋ cq2;z?Uc o!cM[œI&*xͶ_ )ws)oSʅR"`k(G>[_ SN"Ya4+cOBjpTl29 @Ooo_;wP:g]C4gP4څa`@ :PSzvqسv (9ˆs>2d&5NR@lE0<{|<%"vz6 tN-@ϰN0&LEmJL7Ѽ4H2*Cx Qa 1/) 4%+8,SYpw6sF9; voZmpa1ԝ&EyWQ9#"/qvx,\fNQP K$vmm>B I| Sb܃Z? =Î%<8}y{IFx2׉n-&8pHTp"d3 S-N Y/ÃLNIƘ g^8g|m*,רK.A^ځsr!?+ppy!Dw,fW<#SYFs'ka)Rº 6w| w#O{6quڐlz.a:Ϩh]n(0G(U N Yߍ<8+-TDqeb8INs?pNfJP+p b8m4dC(h@|N@6s J"1RעL4T T밋%V|9c k/E @TD8Ȏ!!!P0;;h !s[v>gna^aO]\&}iks; |kϏe{'!t! 1pp9r NHZt8 m6 sF@e͑ #.B99y ^QIX*uH=#l\ nhPcI82ܶNhnAN (_= Gޝ<."uq(5}~ 1& n@, /Ta>`lBb%"p|P\5 7]ԦT7qקY_J(v5]\Sš͑Yd5Z- Ӣb?{H &4NVvaO`+@ޅkzF# |.{E M STįy*NOCtҟ܃89|SAği0ό"ȅu *w* [ (!!T9K; |m@g(˂Ep3'_m)?a~e߾C!T!6Jk0 pM|=(mz ;ȞSol W:&"T<./ӽmw*t \ǀ]Z}]w'G!$p_nuw7_<9iԮtm~ym v\ND6xˆG[+$Z|u1gmB:\02s4Ga ~>݋֦ \CppAH$u ϞC 6{yH|v,n5iT+z-E(B@͆>'p&]!5$}g: HΩQp'(yϾt k'4gCAp||8 # 5MTxhש)x"5vϜbsoφN Slx'>&/o #;1aUSw bճ N by0fY Rq[{ǚ8b,A zؗ(401~7_\\1 W:-;@svK@?;'Q;CsY |o XʇB)@Z|WΣFڸPCdAċ<=@VVA ( aaXnה,xc'^5\:[P(xHJc=oCj 22GtӡGGښ=)RmtxVy i ukmy tJw[9}~fW{gA ttX:I V*6 H,.ˆ9 < ]E;&FI9nx.REjmiųDu59Ҙ Exz`ûbg1Hta)<YH{:u΃:UEϙ]'flݧl{f59vH,/,DQ-PFŌLX+k}]ʣEOӳ ]  sjв?7a{&XC{gxDs\ NO_"\b&N27.I=x$ iU[JH=3͑|U2P=:ό."C2MRpEQHMNA=X 'bXĜ#rh(E6 1b-(t_{ך 16:)'Ї(/kg3t+54&Y2:pG< $=ALЇT4&T^-Xsl%w5 A)I?pBDk6".Z GPK9t}%vD)1S" W"Ӧ?*1Ѵ,B|hlx ,!&G"͏ei3"B_tB3?\M#*@a;qz ꡁ@e0gLʙ6%_oVEmopx,,Qw* M2z*ԧ s({ҏ\^P]ʖPM'}V;zݤ#fGK/3W: 0_ό&LGjgyE(WkR8cR*=^89ƧuvqQ➈=_KoTe$V%@&X"sQOdLEwxc׍w-qBבU+4_Cj۴IWkagDz! xyHp̠J_ȱ}n "`fW̴# &3ci69ZǞy|$_ޯ{sb$ 'H}nALĸ,rj!R #9tM@Xc(Sou `pmpdNպ$% Aao,ÆP'sLnD{MNsH-hoMyi E82{zzƝ1tĽz8i 9?|Dh_E@juB:eEh gCO> :bdxϏG(ZݬEUX/ .r|27o 2͠M*|: !#*tvD&t!^R(B0] CD3e1<A@ؕ .{n {%W=b/4l|>L#h:3ԈX`g/#>œ(ܶs`P;>[zgF.a鿛-LP~]&T\8Է[dð!3@l!à=77? !k36B&XSo lp XOB k X!A{ǀof!ElվјTQ[Rp`&h ːts\>}BSBaB|f1gm8s¿nT}J2z/g ly;@k22RB"IHv(kmNAcC1rYԢ {?>]`]vBhW #5}ߛȋcQXy6*p4zƧkTS$02!8t9g3l PZiՌ(\5!w1-EBM]Tϙ0bV 3kzLdmK%= 'y*>(GdӳZYԝC| ЂmԯNp_k+7P${KAvS_zh n>B(cKOaGCӈ8HK CDuX6<9hɴ EX+k:Ĉ9g'ЩY1b"Pq{-NAyGyAu0_ۆ{ЧdV=`nƔ:8f`]Ծ<U/B@^9(rzڧ>h1|1 1eMǺێnISˢV<#rL7 !>^p`(;ښ@6߼sx_\TFE~׶I+NO2WDCNU(z{Sp8fڷ;dpQ´e^v%ɲ ubvuK%G+ $/ oSi8ww UC'2чQre\;Q,R>~HZzh1?3Pu1zzٽd 6zMEs#ko>- \XzΞ:]%͍9B)?3s;5=@V u D 92t\ V!UJo_y4G0hLYo3|K 庅 >Qwg' mwחu;qgp!`]ga bxLB?3N"xY&Q${gε8FL;+'K b#GY@G|t|||]e@scC3a, !1> 6O'2쩛K0,ҟ\vku|,NN8ضa}{YwK[8γ4w.!I{oo߂toGLt=]dH;֋`_o2?!0/"@9,DZN&L߾ߣUq{Woh_Bӌ)IP=s;k%2 rg!ᇻ̵ى3VxYfeB3shGE},=\ R][j_g^$>͕un7+oo,#zs߾k,)ϥ׌}bg?׃ "2Izmjˢ9.+'# #ӞEOW@ t(d[h84QtQ;aqXn aN ]~[axI9$i}OE zi klL|}f P?ȂGh D*NN4xyE#AB)-º~ DVHou ճcN2Fѱmleg8L{`X,΂3m̅q*GݽwT.5Mwsm7m p$|V'NGk@ޫ+  >?.(_rhh61=zc'$GK]Jwc`r١>%oy8Às r03eM2G_ yvB.=70nqz HE.omj 0) = sn{Vc&'"̊(VLÉG{4\х]A&* Y{6XkM&(2"x5`;L~oL]xYFcHvgrlK=@Z+dnj/X1T3pAK/AԁN-;a"0=2 V_i9c0Nf )Nĕxf"%[۔ Ko<[᠍PC ۈ:+͘d pH,c!ʈ90*r)I D/>`z LLt=5Q v=řتδX_ ~oDIxE!ֈ^,WƁy 4Rdv5[ `g2O8]Gı]DEK 00I ir=fsĵ("pkrko {}&~L[Tlǣ 2$SD>oQxݛA({ qz 6%*K hMqrp[h_'VJꏵ]ZG2}3DAfG=TQ0Z|"ֲEp@gB/UU@zqzXo6ݭXi- 2˚nǨG XphM2-&#NO3Oyar?F?Y/ܽXKc tޏ?/{!`I%!?g`F!4=t(FHa*)0`wI$*np,zQ|)O'>CMhYdSYۻǚ]>Zx{HA6!;2%>愾Ѩxo#jv>c,=ݾ;LTyEJl{'p XY'}Yo^~2 zPcn5⑾ecu$kz=?㌐<n3b.lBG $U9&e4ô*cpD 䙍1 %wxt`\Ql03_jjexn_6baz 0pE' mF2vY|rsOZwTt%͚_ '%XAyb&t i]_;p-\dѢ\ZȍsP߿ 3&0u€XPP"(OfS\D;(1ο jSATNl:xg-eTNˈllO RX6_ -o:.Szņ6?ֻqjRYb#wa}朚i#.3u3&15B"xr_K)i4exn ^E: "9ԽX@d]]'ZZvy6 PR\|Il+߹.ek't#0F܁vA&A_M'amjXN 鿴$sl ;P^<\BcB={ #FcB)!Nf!#bG G #q:@z & 2CzKڲآo9tTʹv$i%Z A;Bb"gHԕCGrt}Q!8S9Y4e_ s:u֙qr~#H,Zf"t8˲ؤD*ÌUF鯿3Bxmn zB̗kydwtÚh:5_BkW`UD[7}~k8Db BMz2w.1EUC.X11v|2f]VT΄Px ]@ދ^PTl'Vt~8)m0ӰM:x v~Q옊ʙP2`<%o2 */="<ЩKJH~dGȨZ[ xw|U0G[E~ 7ayI(l}E?y Vdr*9OQKue\Ve G>YFZߺPd7wWkڙQc, ۰{1l&k.uRpx<ڙ#h{r?C0O>!a#PIQm"Lp@ֻ /"P"޸"?QKw.Q=Y,B3+$2\nٛ&vy6^Uգ7%&HBf}G3= h8ӢoQO/ oEz.ճd؃$+GGg!YFQƄ *z+T@l#ߠE^2CDɘVo|!2b,E-=lĕn.` S4Xg'E6&-d.>sYŅ!#2"D1l G\;Oga~w^= RuYd=J{Όb.H_(UHV;`c{ *^& 2QO^ipԛ{l X#~y0å+!)Z{毙fQTՆwcokڱq&KIC.DkPF:a0NscL\ԿlMw٤@Յ8AuJڙ2~=!@Oqx NʥAm!\rKw9vcI؊fI 69M /T i" X) bc2|&E`_c8&ۍ~Q}OǟpFD8F]fssH0,zBζd/3ydZ^+Rְ wjDP\2İNSvXGr#F2 a*" eо @-XE[-B)ƥ4a+0޾HA見ʌ@d{o#}}98ΌJ$%-KXxw/r-A8A6Aw-YkkYDG)579̋=Ouqh_9{9R-Q).xb1＀ZTHf׉{4F %(-/+Mi)O%py 4vCsTEi^ix:vӋϲpR&VB )vAc\Yk@˚ eAy4&l*as!y*0Z[!g 0ڈ x  on\ϝH;/3IIJQ[:~fN :MWҴ8#j6V#6SvOO"m"bbPaՉ(!U,o珅[=t8JŎ( z(լn4Y\NwcfmS,U Xϴ9@''|Caɰ5xʤBh0v.S m;D{ijmQb),ri8yq/ DURM%`_ӢMPlP2 #3UI`=d@`)⮴B @(:{5  o %w5|!] `(b["һu)â'uI+ҿ(FSr8$P RWˈIm2s?{oۨuQCR*;BЉs:Bw^ҀN^QB2qˌTҏ[a0z|+uP55uVVE#:2*vLd`Z}FvT)`oIi@=M&or:NeZCâz@m{G(ڧ:UI hdVH`(yRDGP;gMc&CmV/}ӌIjk͵2B##ƍa~ eY)7z 4>Z Aa|Mu>Ÿ+?iT,n|"ׁQxZ['F{^_,weGj]t )El6!=:cɑn&c=C8|G<@ ሡ@89V`hS,Vҳq|xRXk\X,݃6N ݡq|P0:n#xң5ԖZnk$/k0,; cZ-l !#v2m'C9zB&ҰV`0aOXk*aLOY4!((B:ʦrk5rsp]i%kmų$VDzgh6'T1Of@2}L^dW. I=0 )Q_Tt:%ᨘep%k!eHl{7_`zܒocU62s⭦ƶ.&)Qx~nhaU@elb\ '<ȣ#ò(H_>s`Qr0ZTf;QJ=TKIH^OV*a!ٓWK(8/yL )~8N}M>ZBh"ͬ!W?!#٤էb*?|}2MLڊ*R~_Pw,#7,ׯqx~ꄆZpĤ@HO+{l~ckS6A7Sd)i윀^RNERYJA.!./QD[Q=x/k>u-!h;S@4ЦxGM9׀NA9̂DGĴ Ͼŏx'^>Gü(t=/DJ*%,@R:?A/ML3$mI\ç/ jz[+&%0Z K1[m{0jD,ZQ g3J[L7S &,3_CuA=S¸ʤAjxԊw8\PX Ɨ)>5FWއy%2ˋX]@+4p<{*MEm 6NAs|jx7_ Q>$'M[BAz4 i{ +#~;l^ [7)h'N:p(]8S.QA_<s}S[7+â zQ&{Ov,bt!yħ ZNCa uO F7_ʩm}"{IKu߻u42-1ICeZ @ce7#Լ!#Y݂7_iAQx~G/:OCV5LG>z,EyA87 d̔pa?615 `=,頞ѕ"Gub+bO'@2dSGQk>g^^ 9Ky&x-t$Hj@wz3Bd9"=ș^̡uwk,9Ke]8z.6ANu 4G@a\8 \ksBy:Z*e>-ҹp2~P>Z N͋a%s6K>3NJ2ں0"lKrz9#"ׯunP{ˉsp<1vDud/檐n*nT{zt9jEe23|.kD4pj:ݩ1e|TlT{mN稿8{>wx̜-qt{a'%quW a1CqDw;.ND&}}'m2 ]DG8H~}߻ Oom\S茷<Sr[=\8C),W˫6=B b<TI=qP[݌NX v *% bbGGY(|:hU}&R3+GDݺKb34P|n%#Ssqb1t)%nl~AFN= ^ܥ6CLpEĥq|XDPd+ ܨJ|k2TYr\הhf *G}d]GvrNKB۹'\&VX.5YfNEQۨK;0 +kȪGs%)î,6CΥ2>g#mZ>zYX{v"]#>Խt:cY!ҭ: 8\s0^!8"aRan诛;v0a IDATU^ܤ2iwƶ<+h*ARſh -N P*S)Lhtևф[38h* ڍ:w RO;Z>kb C),G@p1G)(d1N3S!#Bi8UVGm^u&)@]S\N{]Tu.QxY?TYwxdW~ysN݁$03P$YtFÊ ~^u~ J[:!;BOfw5qYaj w|X(ɶ׽HMaP^O M3=brbIC[PyUa P:|¡Y©B%91Iy>&MӠx1$3rǶZ-߶tHc=怄 5ʧtGA>jwEOsPFQ/%_wۧt\b$Pc2)Ec {w(6Bc0f(&IɁz ."w)4T;%G$'Syv.lVFAʤha謬[gcY4鸠^@Yc6Dc8$ҕUh^pge5,q{` m%R5T. &ӑA5O Gُ|o%鬬B4"EJ>FKWI3rk5a̧fulpkXNL4߉攉1vjOɩXzA ȶH>%hͦ5=ٍz@πE |M0T!P:Y)}PG0TFDBLwp̈́v ";4>^6Ogi]hQC1)KZƎ^է᜘$~-w%bmSE_~`%hxwz&S5)7)2 |@rX[mcM [.<3cxLn;mҼ CW71B7Qʯc'Y?NaAmPZ>sl{)%b~?P|93-K/-SVjq".٥L(/$>)Q8^1׊hSS?!!v)2y}3];@oٯ.ۤtĺG}Dڈ㏶xǡ)*sdzi ^gdTIԟ긦Dc(|TCU7(\J5axĪLo;Jܡm7tǑr(&".:3A;'roGXbyO#UkyRnlډ~4q*Z#q_:*KHm:?[ڗN*zK]zH `2*1;I}-E#gP2i܅ "|cs33@2դc6wsY*SKcT'&&/36@f3C(2ΦpevPހaYRtfi aeo c"m / ?C#g}ctʫ ` 5@kM19L+!SO0?:=qhD.$Ux/ Sܠ0BF[/@>`sII-y&О6%^UQ; *4d_mFw"-g|z,7?>("gz"Ka?m ܾ8 { fq^=Wth_Q_ܡӉn+";ս&^T:9(!e{#_D%&;-*ǢU0>d듘u `vg AJ!j}"ZE0BB_ ,=qq? T!W[/{vBK}p['LjlЩHh71j͢31޺GIx;N3& 4Lr;(>Kh{X\@uUAVTaF)x[^@5"8k]Sҗi1DDBti7ՏfGiˆͿB5"ȪpN Q-@@]FREd—c"f|ib4jD5ɺ[-ɫT=nkuf I>u(ʺ> )w>V22 hDyJˋȿ?=BS XSF(谈DB5M lQςg1xMYjEx/J& H^@v\4FDp{(c~Ϟ™ɢqC͎`~[訥eZH(֑SIJ_=?=|!J&-U% 'qЋy}q;Ews)7\#N" D:57;H"KO8PifWfP%X, 禑ƆњgHWA$0* 4SfL@yDɗp{h͠ySg6E?7?#dzsYLCĈ^@n;lP$J %Զt\cf }_F3d={:37B8_$uzN!jQ֨|AyR&Yh4FgF6Ǐn6P~~ mQ0BjIiA#Ƿ0>iF'.eЋmZ_F)ܾ}{gI>N$ ߾B0x(Y+%YڂCadpH=lb@7KlkvؓwPl΍[yjTO `'qb2AlCs@Cn) X>C$]p1Ԉl}"7_%A O̳y/2ZE `l(IxkWtݡyoh ;$*h mi ~Qg2!=Z?Cܪ.?SDK}$"l\8N>Xlj} !8hI8-xgjTDI Ծ<'HT_Wx R)όV2DAk(Ğ}8:X1R ey_hGƇh כ8C"S{ivJ!w1 I"Dwui"$KD {@t6D\6&yd=Ae|&6e"D|\C9,Uj"B0Nw]É _W Djo^DPkhMk MS V'S#Qj2$-mZAF C$Q) c7)N(\XfVx*gwX6J>P2} c%vjic &v/g:'& TtE߼|o%?bT\.&:O^ ~7,|E—%Zʕ%lVFc&=ßAYfwH ڽ 0FzQBTQ}bilw3w}yXai)ؓ$q&n"mnf(Pe}$IauusIT݃)bO*(T}nLRӐf>Cj`K68<AAlA/T4r_[!sBABFmѤ,JX_iJ5ᯌ 2(:rxBQ Pqr!3MS~TEVT$]G>_ Z֒@SAVdǐѕ6#MB|w/Cx;B*+:z[2|Q2ȝ fYשyԟ*7^fGmڹfPG+ShJ͕2hbYTye>ka8{ ;BUn9ܽަV9fm'7:20M&%he]- g16JO5۾"y~OSy]䳧P49ǦP1d s012ЏJ!֩GyܱAL2=Z7{}ܑ~$EA:,#) Cr\UOp*(ș4 Sb_L!:5|zNTAeEC<%qF2ȑ(hp׺4{\k#&s("7xbTT9:7H{{Nk '!ζ@scUWų(Y|_/LZpXFv<=~Z}(VEsXsYG(: ң A gmClozdOfuy%xPDǐZ6k~D8HhL wR9ԟǿq'd#(mO$tޛjDϡYYft*J͢cCkX? Mx7*4F"xL _\>9Fq|A;CyNAA[f?wO)I^IFbW2$}qOsPFW9??ƅg.)[ #gSWP'ȍ0w=פmضVVBQyl$JEIGкGCQzAA^`<;~QS1axT4%t* pU^Aع)Kw}]jGiKPB/KD,ں-\ S1E$SUz$ c!O CA!GiA},I!̟$Qmre*='_41lO:}WG; -yhЗ˱>w{W}*Bom j橙-&My *NDk{ N,Pd*hZnπJ4|s0KPzv"JQ1TG߻B{WOm` $&gOj1Cl_SŇL|:.M/Uqp%4\?8Dؔgt$w?JAm\9 74C6NÉH8mÓGU{{b?NDDzUWPÎdEWPFOׅTF:#40H7F=>mY"[UPR1r?XS;qK锠G9S1o AQr_-b>эz bY/>JK7HfDq!zǤIm yA+3f秫vGNVV`)AtEctnğ74S qU,\@U=mܼIU^ˋ h5Һ P}~9NߣA+R!`݃Pj<xt ~)EA&|Ҙ'4:ը6o Xq kW;K56ݐrݺn%R¬Z gc 1Z}S0lf=8l;] Qkm!jȶ'$(QSHN6g ҏ[Do#!G8mƶfBJsP}dG/,ok*1 c[te8γs8q:k6w9[숼a̍sݏ,ӎtd2|eS]WOqVV{܈ClJg4wLWPE6 /9 ;m3SN%6z\͡be h_!bpW.uޭ;0I{Q=4>Jut8Р;u_Y;?U,7LZآ5:'Say'ek*eϿ6ױcE (01KQ]#;leKPrYamn#i GCVhiSTuAgi⹎dNG}?g1@' %ma 5Z`uJUV zJj2ǶZ;{BsO@Zm O DMO5qh֡b~lPMry 函Gtϡ1w*B^dă@ݨد#YYuJ 6(: Ppo%Q2fd!gk8)I6uƗ}('S{*Ѩ]jۊ<k~iof8:A,Fgf_LciRMrCL%$\J.)OИLA b(m8P|!'߻`<'F<^6hWLF 5-1]&( 'F]>^na}8{ea|),l Jn"!/`=G{8}OIR: Hc9j/Lצ,S|?hص t[šDY?^ƭT=YI|&b|?D2tJ%F!'A[Dn;bZbBjL#Tw/̑شn(in (?A,KSs@P:\H}2Lsɔ{EhE63x^W⹡ ~Y=/ΊfHE=rYǹp٣ufDZ v$ IDATID Eh1EY;(pUn~H^JMf'&[s}A|$W|0 jɩEWz,Me$d889ACʤ96!!:嶠-G.jx\ o! QcD&{ѧKQTI}+$7f"X:7Ckqr5m H 'I\ipT ~mԟA)B ]Szu\8q&zJ)T}j>Bp(hy *Gs*MmLԣ?1[69?;r9b6Mbu~?^GkzOD27_^$:c,:2 (5ԧ62MO#a.lS$V'.DNtmnwwP{at:#%H%_UsV`N$30mdeoD޼7B kM9Z*Nd'_H-A;8d]BW$ҿP,>W' M4AWkMh2D{9͕7nPid_>b^86璼pv2Q) Dvd-jO{x TFhī4C%n?~&|povQS<04~[dL&dJ'bƗMs%1gsMɗ0x MbM8 ~DImԵ=zҫDa߹ᗦo'J16ύ3HY*5M1'qF/d'enBj[]\@fj@`!0;{A@HuZ7zn^)4T1 C-^›C `@kV7 OПHΫ;ɟd]DIA!ط,x%aZTvFǡFN%iE fkkq1P㘑,D6KTfuO߿uz,o@+(4iFmײx&$=2OHfD{H@,Ff'KxsV'|F>{Jlzv2Bv/4L0ClE%{G[FCZBmz?.Ыw?j:6tat1.vSQ\Ep3r)l갈8/^k&%LQ:Q(ss=.xb:wlf#jxHػ)"vT*CߺMSrYLƁQvPM9\PZ4{ VBQ+Pq>4qFYh?D7Q7Vϲ9~_{(XmVh2&&)+>z1Ԏx渇E>"7,a4 $H:G6 ̌FBdT+ԺXC4½sdSsROWj5--DթMH+0HDch5'X9(㛞Sc!_<5/{.2.S1nB&FcPʼn:Ϸt\! DŽ ~_FzgO!ڇ(űa 9׵}}\x[,P(_U1bb5;.NrML$j"ݐ`@.D,⅓( ;Db|̃8٤?Z'y^5RLqyZ_HbiD91WGu;X]Te<-[e_3y)^/?K3]cTvX.rg!:/Cm4ubMA]E"5XmfED+̻YB"k41iYn61@N>_,' >BlT{ 8.=E,M-0dY:6#B4.CCx n?/GQ&<Exrui-9j¿|n(pvk5=hFIky֝':~ķ4C:ƆB A'B$gԧ!;~% )Ɩ0+7s?19 s ֬ȳbQmwPhh~f)#OqԜ6xaYR2p @IXh `O]ܨ6ngM>/g 1ϝB]Tgmk"E"(>ZqޛHzw~{gg83 !)Q%Rb8& lYd_$l`0uݵ" q^EK6eQ$E =GOtUuϕ{H 7@?}/iO=^YBmgs[-WnIyK墂 Gm=:/Na\ZU%ЛBmA~9j_/?DɔIчh DtV$츋cB6M9'mn-X!sqT"#2Z,vknl;&t8۸.-:r2r2N*œoi2HZggJ: Hք\ 6vY\]1+hqv^Q(YBw{G͛FA{tw~$P. 1'i/ p @ {=FutM̖7=TP38r֤VJM`W3e*!¼yceD9by=YsElןǝ.)J*Dʌ/{~W"BQ?ŠHD;8K+Ζ1ܵ ܙ8n2҇[wchK3e.ݬD.c, U H0 =BjָL4ѵ@7Қs=tӟ*>7d/ବ|]^1Lh{  Zly), .V>A(ڧ'N) S,/x_B#`ZIr.+BO *))ra??CѴs֢H$b4t {kx=xo1o_1XC1+*~Œ`3u$UKҜܹ]b6,J`d CMn$N@Fߨcon <-itVI116=r\耗V1o ŶGGLyŎh"StweaքQn6)#!tE! evUFoJh8Aȶtr ſ[VbMβƉIGSRI`+%\:KXA椆\,@*Mjv$ś/F h`Ir #}inݙ"ݬvc%-k R51!pe᠁By kB*Ux3%p0R v~_*VN 3+P<>P1О1&aHo,Aux!G_9thy)PqDFA+s)Ň1Ra5$B+>۵;b\& YH^)^?4q.-LaVN㬬 D|8FR:fV7|d|X$3fX))4ﺎ|iY '.9?tRN5t~E\?>/xCY:>q@);̣hBmtǓh( ^<˛(SX(/Nd% P-n&ImڗQQKh]90srȊ8p(UIQ.rƎhL2.3¼Ԭ8ؿcyA?PlZW-P>_,c |ԶD>d'PjM=WGr(r95':1A`ᄹI@Ex ĉ&x@¦"U>cGdS7pKȶw]J_tCwo}?>Ct NGQ[|^(t΋Ed.N,HxwŜj (;wuqݢ-ѽ=?#wQ:ޕ[t!vpCНN7iOƫ~ysMB~>|h t%g dx,-ݕüC6쐰|(^&;Uћ.o^$5㳘;}C!;wU4ن8^,BgZ <䖂$X>6$nMDwC#" P@"jfQ|H󫖊?"oN7mtR~VGaDQ'd:O{qxW =U(s JnE,)~DMϷ'|qQ, ;}z"(fc.0?+-:sS-%5KBGtfM]Zŀ7#ꁂrg6-8~pM^c` yLIead n":"#d]}Hd] #od좵r ұI,**v}iE{¹C]ג[(|ډߩ7P'd bvCXȉ`;(xTې1;h-o&*mGlv!P#[aC4as|=~/"$GU6AL%h-H]((}q7K 枃#?dKœZC :jdNu Uuk?![II&( Tx6HeGU-56J&%X ٫{BTkئ.}7BחLण4~e:Ya38Qщ'Y8ߢO\LVRz{YtvU%Jqk~> 콘$ Zg/`K"#?r ^S*\ϠdhŘئ:*#HU27,+>h^^v^j="K.{ޕ[]~yZ(~f[6z֎h\?6[7Fxn.@Φ?=}2)b,׏juJ_dgH@ȏ2frs &J_&mUh:d9>3FkX.N+ťS52T ܓϠ(O搏(saGw83 5PJh7@'%T`8R+?7(#TpnbT-52{eb:q%^%j-jGpH #VP&eymBNzŸuh@w%˨UtQߩK0?Wr)#S6c΄Ő17TYtNFށ]Cn= ?`wd쵥-ψVˏՊV9# `MAYͣ8%W;7=%k xA!#Mju?[ )=bw4Oܭ; MuB:o1jЋ!Nb2_,%Z %jrvHDZY˯wB{bN(2l>(_(澍| {B3g΍->=_;~nZUTi]*]pNNR[D/S1];{G uV'"$>4Z62d/l? Uw8mv(~:@ G2 v^ SQf8P,ؙe IDATM&P)3DWmB;6nUeI OxA'[8#:% H{Iz>jEP0j$U|Z*,q5[SxD8%LgL~@v$=qvrEwEIgP\Jݗ ./nsI%ZF{y$~2IdzO~LG}hXt*$-/#|~Jc_^'U,ƅv"W\?7I&ބ MLz΄њ|>JHD*KX[ 6J4FL'Op dΡkHǚL{5Z"Pw C-F$C^Ok m"<,:pF&4t;!~ b2vP!"r-b` z4MN"$~K3 I -c_A^DxEq,!="(ǰCxc e0߼* Ҙo^EvQ1D56^<:/Q)\xubcrY=־2N&re gg9hxĞ-Q|EuzgKD:d GHtr(DOH,v*SK-I=t%K PD| aO8DT7/ő=~\tC B 0x8ZkkxJl84Fxf " +t(q}Rnбlu ~_ȡZJ%@ګEnRǛƲқCtqV9Z;)W RHt9 &P﬉mqYZM]1SΡ4%gg_RgPd9݌3(@ K99 "sx t`:'"zHDU|%M m¼?IH[}fK̍}<ǡ}inNA6%s9s,4`',jA8(k,}~п ?Rx/֫ Hg3z}tJ&,0[St'hkBs FqYcڃ D}xO}Iatww+U4,Ҟ#zsiH/Ӝ ,${u_ѕTP<7!E.#g5Ma(ۭL;[ h(~yUq."/oOCmV.M!=ZGr=8;w@Pk-cӂ㨁 V>?!;O|gi`IO pCDP"EF{[$_/3f҄d{"2pUW%%N8PDQ4g dKFls8/;g41w}fЖ҃G@᭧CͰpJ{2!Itw:WZ6h=8* \G=]IKwmSKO7.e m;6e'~ \؂߅ ۞2 #4b6Ewؙ \wqiSt ѥ6H?T=83f30O6NP=n7/bz]򑷣H!=ZMB=>+"R$hϭt,gȴʮpi},#ќ}TB] Z Ъ#83nMXZ#,riE0wՆPJ_0wzd#A>Z}kpRPah-tf(} r}ͥ<^`UO~6|[$nG8r^'F&bІ@ThM fHZ?S8{gAfBP3Q;첺:dUԞXFU0tBFJܹv6wph\Gfy]G::+,KԧTܺ+v=Hjz6^&!``Ze% 8O3 OS=rg륄gSBհ^tzYmcڒ@:6n؇ Ǟi#wB\ḌdrŞY}S݌C>{*xDǧ }<]n- *bizp&ܟͩDmD0ʖhF .%h7Q~?DY1w.M0//w}ҩ  wgOhC!?TeD>UMZB\7>ˮ<9MTJPڋctJ!Z Yr2h.>FѯJ cLo9QmB:@-1{8(  /=JnP`D&0o-EBO{t |J̽a]4JQ'b=vr)2d^Wub+6ߘE/ )nVX$$6kYi 9d<.O{=9~Vl iaݖ"2m^mài/*.y;z+I~1oЛJҞI%>ۜJlWQ,kn67vqQîZ*.Ǝp*DŽV6A`B@ "D\oNw.R>w㞟'etcQO'Elm а{ 4P6c"u"O(ZkbQA.͑ܣ}& "lg x&qtCx_@"c,+ƅY' F'^y@ 򲌗 9`aL#.4>F{WHDE_?!14[xcch~zo2wƸ="ux& & h~0$5߬Ź@ 7|`].찻kX9+?0d[Fۮzn XMiH ë#r"u<̊VՈ.n?x/;Y ym7dOH|EbSae#~0x7Q$}MӹX&ƛGZ^0vcJ΄Thh90kH!Y#͒|)@< .:__nL㧷Co@ܤk̿Ntb?^/b1›*|;kb"70|" 0}$d$D5Tmn(˛ȱ(J~ v "&bM/{琖duziI H>P]|cW O)9(= YI!7ӥTR/yz9BDMz) r"A/kO2{Cg8B|R$ ͇T>7U@UDf7}a~B"UQ]0 !q'wтav_ހFqq qi^ GhS)z)tNP`uSc$bD1޾3HWZ4cPΣ`)"91I9{Huz#=&z t'ePN"_OҌ؜,#~DwU.ܙ%u Y#Ncҷ-]Ey'Z~zBV;@ޫa}jk0'wn^8U&vN^'ﮈlfR'fN*d{@( B?V2 #H6ݴY#6d g!W'H~ɼK=>Rp6Yzeܗi~n OMKcH>q'h28'rk^! 2ݧ!OVQgo0JverΗNa/q抄;;= &RJ:+u#wn, q=WB{g~V.9ȣJ:E`[84{{PcS7-ח vXEoZ#Aگ q'Ƅx^K?&w8;Hy영SJM/OR?RD٬ r#x{yYVAD=>Vg( x$xk0m=?M6MgE>}F'tu U p[d[M"ȱ7vp823?o;U`JwM=|hTct ) ";EJ"J" !cA5Pd+[H-ś+S9cV~A.nӾ4Ca] 8{]5B6tP,+~%=ZŚC٩ñIXC1C}si'kHÞ_#WgQ! $%S [tNdP{.'ɸկL`UJs2ӥS umQ~bCI$Rś)! ַ_B~1<9^y@VƆB^G cQsQ %זI,viͧ?uO C4!"ߊTE׷y3WĸxK'0pmqo2O` j_%Wi)ňdh|q>;uiIb(ȠiT_Ә".ygSN9DFSURtR YfhwsHcd:0J.&mtcOD ǐ8ƺ@er|W ERO0v/hm(d<(j'̊v}lH4 a D2]v5ܠNG8oÂ4RQd<ȵ QsD"qp:7Uqg1xhA bK"C%rW{tq:U SU&iR")/by8F0޻eP=ͧM\F؊El,CF @iVi}u;+{,p\a}d4z|TMF韛<4Er!d?Ө5$I2\)$v(Hב}zsV.*E)mr,fGxStKB[%\STq] !o#]<*#R%2ʚOQ"h]q d))HAEq<((%AFznڏѵೱHBu7v(xpNjaާ-;j<cylFIEGK(68۟m*cL9vi~FX#I J8Emh&l>[zCkXH)R'*USsHO1($ЂsE-ӂ~="}pqr Xa}e{ QjAA}$ܚ[=z3!1FdhX<ɂ0OIŜ-EE7Dg?GHo?H1QܸK.JdvH 2wئs!B]ln.'#*vik¼O7md1=!eZ~ɧT%B8hOG1jO-@,bZ-JouPcxH{Wnc;6#88Gt8lFFK}$\iY~S&0_Ĺp7Bo1![NPQTJ>Z*O8NLA:t[ XЉ A>J=8=btd>麠 "ڱ0nIH#Y6f/?A:5f$']~ eq;`9D{ hPQGDȺkz= #!F¨h-;b]5'DFDwD܄aGڤ AMZ4"`" :OjEƲS{ GXv›РΦS 'J2!CC?%Fo:M#8AMP(T]?6FPA?|G6c8=)VXJg ŒS!IcZOT{1@8C=a3,Ѫ@F ɧ P;~$naTBH+Nz\G'"QQpZ[y0*TƂ5Sd#]~QX;Kjxulb:Z۔) Z|Z5!XQzbNYiF+h-2k-!Ǟd,QM~B~n.0t"nuf g9ӵ4Gm$AkK*갱O]'l: z߼H?.v]z UllF> )Z} rg8~_;7?_JƤw-N&i ?]Ɔn:l-@e@2ᓜTY+ O~:DW1 1"2(]4;\B$Hgh0s%^is\DևъأmA=GB-ћe/}AD9MC[ih+Q*)}xI/?4ڞ5:GTTQ#Fֺ`ψi32W`%(CzQc,P%㈜7ɉpWHNuH;~th~$Ss8՚o,$:r"*3Rކ@GϠúǯay Kk;C 9:Zߣٛ( ^}ft*r\Nh'ΔrgK(a=4KIKua` eu^R^#*tp$+>- m;ahU%S ꟡Y>k{ t(+Ty:97Bb2Y|ާ+[PsRv7?gKudC9e]g}P*>^иnTvzkU+GjHo&-΋F:M9)јH~:ޞhU_nvhg#z_DJVk[6g䃕Ow.L""Afda:sx*8ϬݿG iHr +HDإSЉ-~)ڕ>oqzE0b}v[_xb%i _Q>,{&2mO^+i.63Mz_8'iM` 4|ܷP~1]tQ sLcRUM*R8$3E$E!p F38SF]S{!"F,4yB~1J2!hm5z:Q*k *MNֱ4B#G{*&*Rmeǧސ:R$  ͳctNt#ٖPH}1ws%Þ-?W&0P 'DX>6;GWtiszSh7+7 pb&@e[=n`tz1Ct\ mzr2c)GMFCpWT__pe|.O*ңUD(}~ $IB&(W]rd?$uFo@&$ݔ:M6+d& a,B}>FutiD_^4&w:$ndS5et ;cJa""6ebM7HKD$g{ImD?}i.Rv+OW܈a4_}~Ճ؍ŽM$?+5Bs2UOR?Z>CXVQZ@ᄄ9)L[.M&uU7ghO&-5P݀v@s`_ޤqOEK;MMHwq3x%XZ`ڼY: bOl?=tЖ7?p1H&)yڤ|:XP5I>*Ѻ0E7|V(u1b51 Z^,IDO )|Kam%ـZ̚bYh -EQkucě1C{$rId4|o0ԟ7eڥuq#L+ tgƔR'_, ÃZzq^lޙYNQG_;Qw,dPP}~^`WDN`wH=oZoj?0g5GŗQL4{9-Vz֡ XH;6KM`n Q=^`r ,#; q5z '+}f^CK$}mքBm"mkLvIP ԕ ̭:0?a]zA9Of342o/{..qR[(9DsB LEQ"˦z8RYoB,jҋE<3|̬Ym9oncm]Q\+UA9)/6%B>ui*JܒȗR>>?ƛ3QMA4M71# A)__{e(ٕwf7ǯqNN*0~cg'1Z^FQ55XK$%zUԏ:T78PpNNH-P#l)}}⒨6@^bz{qNLZudky؋Zj^ I \|"@mW9QQq*g 8yBA=v+g鞛\.=Onb֖7U8:0^0YDU4Լq{+(/6 ƩK JjFl/a^w==yR9b_\%fv4.TMG_kw=gkv>;>Q8R92l]8u8ړ5J̌ZBǑgPHv=f,z-W]qD/M:iaJoQhZ&{#Gѽ.|!`ƒ(b #-10JlF31!W>ݼJ~`iצiY(#l^1ķ:ŁYotoiyY*ݨܔ&l J>U'6v %$֥.$T 6\1}5d$lRKm#U%4t"ʑYvwd(J[ړI쩜93#}U/.1k/' C@/)x N*(nK%8|pشD8e ~z*-KM[D4f(j,ëJfPCУs -rwKxFb]lLENDJqIb+t୼w^=W_> *WbGz[6j-G[fՃGcRq$+@*}Aq,J*ZF0xBz'Dd|guK-* rZTY*>zSE*XUXH{H'*-n(J7ij?وPf# wSte13Xe7u&n?o6IA%&HD}X}omTnN3balVIr5b{]W0ԃQwɅAmYC: RKꅨ#CRWjNbNj]6z4'IP) qF35*ןic2f_!w}xYbǣ1r$Ԩݏ%;T?;?–Xms__P>YR9 Jk˻\z~օ6~B'{!zH|7 pN.oxW]QN2\dFz@$n B?|Df!=3}rlz+NZۥ3a:J\Y%(N8sE9g(no | CC:}B&)Q{MֳD)~gye2A'{Hpl ahh7_< 1htWaRUOoEjlYN`?oIt!+-̆/H"DO.Z>ߣ`{WbuʯP7Ju{eӛT$ލCyG}$"{쌸 2j*=gxF;2U-whםA6cRd\J=B"= `&hg4C}K{HT*P:jw~ aJo-iF1q`trE]mKZF:x+/0X{$(5uYq}\VoKJ^}kv뎦~wX )9N {״q~ __HE\*&zs_f6,ƭDzrSˌll?jm9#azL\9Fo|?Edߋ6ǿq-6OedlĵJIbN,=}UPbԟsR;[Z*^V:6PYЈB3`-OĴ,nEU 58\H?kF07qNOnEzjOSB- SC~VE89GIl^a#}samp`%ffݥ$9܃F'ůam P T'\$ ?zN$C?߂V;Jj-ĺ 3368vc (ʃ':{]<ϗ6/ M Hi1T 췕hYt'gw0ֱNFZj>zA;gsS68t~ )qܳCQV2>7;{reb`yNu\@tt0VkM|vG>oPm( >BpϠ~zK=X|-ڗz6'E@{'S9QZm8CS8j#^Dp9Ԍha'+_zX B@ޫ<^Ƌk(w >~BNF*6P7JRMގ*~r_%CEukqst¨8sfR Օ"b21Jo/U9{z{WHT[6[v$Hs̠=l&_bj|O:iDly3R=RcyҷT6ߜgZV8wBz]F~>7&'.jĴ>_CUӱnc}t=JQ\O6HtdՑ{ʾ>|MkTyE=_&%:qHwIlEZ]!\&0 {T 8I,N1Fx&rQylϡQqgHtrg@x}1kT&L.@-U%dW̿H[m]weqCKPxMEQX%}NNG HگVTriJa߂(=l~3U'%M ĮE.~x{tGS(~(NOnS^9K刉U1>ycNH/jHfU}%(~F1!] %PWd~)y&[4%X1qH07E(_~ByߞQIR]R.j+=DGmGzVꯍEa$4DqnwОc6M<"xvZq`䳑Җ7k+}PyXE!yUJEzeo]}_?ABܿVoE2z]Q֏bms@\f8{}TB1rͩt&WYjh~}Jԅ|t\:OKXnƢyߧ߿_#g8L &fUmo]{϶w}}73\ $&GڏamKtgw=6 B@,}Qv9#h6ИG1F90v9/W @_vr!7p{$rR J>=v wϋ9 w$Ʊ4y2pHEegvI;d@^iiaztO_wD8lSDiƋ˾ߏ 4v^gTl?ex ]ܡ'Hnh]ع@ N{\!A=FfaK $~,-1ҹCꪼd֚u khG:LF;W$?y)W t2JU'On7>')a=@/GM%ݣ7#%J (Cz_@K(ƬmfiD,Fg_[ir`G䦨^ӳ }3>㥾MbyW@ɯt>VITh,+ٙ{o_fP<'+ (H}M{@LԠͦS)~zKٙ $Bbc YAt`j/ J7f.c&ݜlDժll߿*w"4T)'+>J06Hr=Dq}Zg+xYb>%AGtR31F7xq 8J￁?;tbmݞC;"`]fJCjU%Hմ&n RXS?fwM|s`^S YJu^è$nJiOnFyvA;p\[qSfMwNS=&Չ mÓxY=OFdײhn^S,d__7i~-'v,{wMNkTGe MGhW]p=O\B}jgw@:;ŲoUx^G2#R'"`ovפtV;b)_g׆ټla_da??Y[U$'_dQitQuDjU h,ĿK4s;46O&Հie^7n"t*yƠ`ig^tַ~(ff5l#<<{xC .v TK*N$V%=ư¡Kie5~oOc#ȥŞ2:LX)R"hw[GEbG"VĞRygĎZ/l&${3~{ 8&e-"z'1h`SK41C<;]*b,p3#eM*w|.WY5f5 RB,[(~R"܁kwQuA jU7I8?ܤ;MكJGr yhIaviO& f$&cAhhIw8A|[r T+#dxEr$YgU_;-J9NxhxG:PƋVmlDY.Gy̏ot,6rYwjmoN3o_}~QM]s&Lv(yMOW+bOdS/f|7r{g{%V7mԧd>]Pc>Ec*М Ly7=D)>+/Mb$7}IzH^&^0*!nW9B w@X:;o(/W~cĿAl83D~ԟݦ,ݩ3 Sh?@@okNyJ s4N ᜘I읶UCbFCHzw^z>ZȄbn5/И1IAq׷S.ߝ#XOлS ܩ5n;C B==U1)ƨ;Q9̍\xC# atLW'x˴d|n{l0C 4qܼGW./ЇFb -A(d^ɪ8h]HecX(и8Nbۑ< b_-)$&#fIiV8HJ dЛaT+-j[6#8:Ѧ'J1iI+>kCW1bo/L`T;(ߝy8ȧ;4fSgU( {24oRzQH-K6Oht F˧!6dOPDPHfIGhan ncK;.вY:)oMa(J6CsBz*MwH?ecޜ&#T^KCX 6%&\K#|(_`ҥrOU7Ж7HYq?y@8`0"\|efѲY|Л߉@ a+`(W⿒{mIjG"H[:9,BYPkMb=CyRږߵ(/6iMeѹtXG HzGf%&7ؖBmtDL"m:{^]q2:u* G{~'F5qiC)*3[QRmL94)EC#N~2X8{43E/u mLr--^x8YJ%k05yZ'Cjo!kÃ0̌LAYS"*T&1?rh`Sl&);6ᕳ ` -;GQq Z߷_:-mEh |]ۑٹygqjgQLebD"*-i?#,P4L9!^\E0n}cX!eܦ7pONʼ1*㰟^9 S#O6J{y%}t?'3X+eG [k6;8cR YL✜v'ף}(K8Ŋ'euh -TB <1'`n\Z# ytO2-:U]tUzUǞ*QЖ7;{xM8N^19iwп$wAk BU#a: cOf b E8>rqngVῖ.}vꅑHy)jm*M"Ke$XzA^T Tq9e:g@k".geV^nGH1͚Qu1S2 0 gbNJ!1*FKaʧ38i:E{d;(q[ȲhBcr?pSM_N.ȢzdlGZ f 8#]9óD<ؓU LP/ZèVhbE4XYSCy~&ϴEQKTghӳ-[]hzvxuEͼQwɬ:oY3>N{͚ķl 8BC%4tw+ c]|KAI&i |EE9!<<+gg [:G xI41q~t=~g֯pg :?yI wȾʋ|c,@{|K>\ZM ,9TJkT,~}{ls̐+֝wϣ\:M MQb4[͆Odt. (3h[Cy̆OA}w=*moEnR۷%L.dTh uC!q烋ubԮWɬV>)Ď]ߒ5暑igU|iX['c-T bKWi8Yh:F $FEym)Q/KNϕyGzjSYPiNXejdƾ96NP*r6(/70 Dg SJ`] W–$翾k (bƑ,{0bO}-)kxHlO!; =R@hjI Kl~w9YY_e/[y1eU<[D6v}vRh"% 2Kv +5s'pR򳉨=1%d\)bF3dM\n^}-LGk"Rqh4C0Yk{oQvK}NcZѩe1WdI+`~|D2J|قC`wD' zNg0NQjNjzao sSJL|}. [mY_ȚD.>Guwh;%Heޒ:w̺ĕ9bzΰvJd݉GP-G#k?E4GqWuK̡6S^(5uI-Q_VfF]G97Ջ[y!c 1=^=KN{؈QZ*%m!=XX{%s]=AqXr|pL*ʪѿbW\6_ξ"KJ~9 }B}X{ ?: moKyJmֈ"9ݑfK=c,oFVk"7kE>@+C$)zWV^DmsO&,kYX~z*fo0aRpr=;X\Y~"g){2j(uĠ&qkUD|S.NVZCwmO\̪sʋB*_ì:oj[ oV9UAkԤ|./0>DI&$,Gh7Xv#I .N*f-d0rwf)m(<EOGS ,BWlk(y SXž\G]0V2[b[TcQ[$6m&0!C7$B7QSR!zNQ6޵(ܳASa}\΃ % >R$&ϐыXV`9`,'%oEykpaXTOfQm aJGFH͕Du{t $ܫ drw+Q@4֧'C&`(QSxIɝ&^B!M}!V IDATEs'zPp!!*ſتǤV;3qҏk{{$|"3TQF;f#{CH=.E*Fo V?Zqe54&֏o  J,A@!ئ07`V]6Qw+tt*r_{?ַ F Gҷa6C2jQ:c`t%&F<_ml[WQؼ`v3ICOϯcu=!V@['xE$4.OS;Ic$Ba${kRH,iC9m, +UTҜ6+QOw4I4OzQr~WM(R\&b;yLX ts|OTb'q>H|Oltz㭼_x\`q?:Oj!Ç#9LeQڠ3&Ƴۨ }zJ!wuk'Qߤ{oȼp/-N'(~ڢrDsX$o d}7b}*3X (j!GPoQ 9a﷦qS`5SS}uڗ&Il6]+h<[$?XD=2Kx;:[8o |6u׈/hY3 c>xE8sc}xr1+.<`7hU -ֈA겼c$\oMӝ/F871~~-T1ܦ/ F@[ޠuyV#O.JO6kC`Yѓ u$m>1FiaXz>;C-? N:z>Lqc69~O-AH8!W{%]߁͠ wvaFl}]ouk}X)ls+ |y-Ag/Vj?N~y_}N V]@X=_˞& 2jo<)J[8OhØwQG4Ҙmls$~ͷ t&Yƪz|؊jfV ,L'PCP3MMCE E9R\:DwPSInz*Uq0~~$셷vHs ܤ}f$kO % Wfi_L,źkiu _U}-<\qׇ5|:3C|7w&h6, ¡@n?{xk^3w|Rx4I .j* !^{eRJg SY[y)bPwl-PhAr+j2zޛugzݷFoh4@).HZ(ȋF+*ǕI;q$R䚸jq̔'qmY+#Y($X@ciz޳ @wf}Yϋqz1nEUd[6=gL"zߥSqTGB++{_^YN.r,w>$ri@qsHl BŞٗ~v7ܩ zM^ ~_1J jK@P,?5Jݤ֒pS$|Ex H(,u<Ev|J"f;= &̊ߟk$NIYΑn U! $>̺,fH?eP24(>]П[q&Z-[S Pp[ZOLM(J`Bk)v|<(bZU5E&޲Q|CԒT9K/7/x(҅nBJ-q]>u`v:(T<"q% O1C@㚉"vT> ԑ!q&||vLQ,8熊sLO}$/"yfKތKvL3f"ٞP:>S9y]d08I~{?boz>?yAdBu 9(="ݤ:s'P3̊Kbͦ;\Om.@=:4rs㠩h-1y1ք?7Hé$O7\QND];-؝86{dEp^ )}ZY\s ʢ ~#xQbME sDMOV 6OA#***Eܠsȫ?1moD) ?"(0ZSvGRYШN ^SL{ Y8kranWp]|q88/h;n޲}Lv m/'vZ|J" ݤQhMb!QPPՖΧoZY/~=7.F?w b_s_Kx j2RcS3>f(M(4UQ;P%DvI%MY"K֯yQW}N[SFܰb]<GCQrxU.C8J#뺠6٦=2zIdX3+QB?.@){Q}xkBqTNz㚳~]@c: 35LΣ5hV5Qz`Ԅ, oqO,Q86t( %׉_ݴGfIt7D}^?]w{c:kPN駔LO~%.>'CO1~ߩ >;^ !d;ȉpmַ\ωz$R(aou${Ͷ 3ftP儨5K~X:r;VWEQg6~݁x) T#pdu@aT|A ܹukYY^tNi2R<6\~UQnFQ((.rzq iuEŞ; qvN ~Z372)j%*VWD=xBՎ8į&3cXn7x;lҋK8UI1!LO wۆh21JZ'n%&Ghvݟ,kl}ڀ["iz%_q$+yapH!z puq R-őmGM!r:ѿHk&Yu/!m`G$0zQIܰ>F|l[.~,AgT"H- Gh76i=?KxA%(cG]B9 R*=j2Mł;A^Bw֑lJ5 Q1dì*įh }GL {"N)cUxJ"޺tWV/G5`mSroq:# Zۧc ζ=΋Vr$ NՏ|^YPx=.'ѿ'0iNk!I~D>p >0IȵP޹,$x ' u}Xq!iOZ.Jr! OO ʇ .bΨDCESX1+Q "mq qѵWT̲hI!#'G[x(=x8a ;y7Q,-]24ĩIa(7o_%nDQ6WzQ7t̟@ +e,,'^ 9w#AytFUOAw1/n>cy]U#m:DU(\@xS$T?jw>O}(&k(0>2$S%z$O3-4gBpeX{1J'TB h ˳C9:߻(}FGYtFt%EʄENb0y-5IȻe@ufjvYvh,@o6fX rk,Nx(\5*yIH7.ieMd0ݴU;JZԺH+J}&@b\aTmAgb>G%o/X߽29YlD7릯,H9} 8Gg>rgα<$*"_FNƅ0 ͼJl9ٸ_|&P3:I5QKq,i2JFc)>p|}Yy o)Jp>PFh76;Bm.@b\$e.3Eg>Q\=3}n;o8zG8oi]{87;tǂ(jsbh="xcΉvQ޻jYGvS Z-Q۔L{:qpDN<Y$/z)g@ttqsK6t''<Ǒ]L/)zwwiW&HzWiϋᾣKI&DuK2Aq אz+9%J+2 gȺNg"Dߣ˧qR'fx>OmNAo@23a'34 ؘPF(L/c|gXQ>ߞ%,HnRb)̪'lҥQ]͠=qf& J )\[3a*z| pPJ ZPWw Buօ۳'AwI&(j'rCi"g*b=W6'{. m ^uU:)ur,J}umݽa")CvX͔AʏY*$jr:(S9={(Ϣ^N#wzRJVT?:)Iׇ>9dUf*#58'_[-˝Z-W郔WN(~q rڹ,Y4s'C!Mkw>RT gҨ?x<,?VՙiPx+n3UG\:V5޾##ɸzq~<"`6/um%H=]/S7@>z2zOt"bAm7nR|y/d} )9"!2;XTlm&a΋gÛ%[t 1xw 0R6Iq .P4MՒB8nKX1 lET43|k-Fաkb+|繪,/QFCu)Dvm]k2C_%L 4޴h̄r㘛M̿L}YriZD=SAF-q_uOf]&^?y#CDu _Ud[PJ&#*A._z/"|΁)" ;$>̧7VD([JN, z$(mg8N5EOV^D?Bru9aКybt+*ʞYqUK6]{+*<}}dW;6̀8-wvwE?n?@߮}㡴,*|`jkEP?GmF#}9F Ԏ+􅪹Z ĽzSPGiO\>vXdg;#m.+mJK:jUl՚< nBu&寞&XphNh,v~@ErDnSEMoxBg!V+622" 5[9cOu9@z049ȷqB/=K`)%A߮QBT'HP`_b 0KBS"8K$nu o٘%AwGIp}ʠuF\t ^BƎjə<$a\.kA϶I~_X;Ϳ:G/#%b5Q5bE6ZYtx.iq~n{uJd0+~pkdA|P"KXCpc!;3ixp'oϲylz(]P"[:fjWX j%w%{z} =T,H4rn]t~fKY^DۮWbۚˣԧ Lա|WRvQn,ւ=A'ٴ:d&PG<]Q70w'>6"AElk_ە&uS%j:5 .{&ǏH)ao_KDMLvuMnI^}*w.RAԟT;=M0=b?Τ wD^C>zze;`9Gi %q WqdgWlP̎ěkgYI8dJ_SfwCgܐ(B]S~*:$G?Q ,/"%bZa&pt)ؾIu(i5\/ˋO= qz%⩌`N<9SNE0d?3 sd[(9IzP?194'=vT5O}=I o;k~OA^txߗ'|9AM< { 9 \\:3`9BuQ,qȸxY<̪j+XoT}1puml W4~giC^2(x]Z'M( CS4s3fb9_>Eψ\yA7p x=F霜 h Ok߭(t@xZ IDAT&2ijs:4N`͌vHKm5% *J ^JYcQ<|O%q&,ɕ0@>!|bpTTLM _Z _?z%Up33`_|I-'?KoW7&ϩwikbZeK(/+ȶDs)(n!I ab%gjiUvt 9ʄpgQl)znQ< bb,M<5%H̺ aa`"U4]2ID -LLFq },+cy*;PD^%m#30եW]$4>$;~xnfV{$'TQAjU. yPBC.VK :I o67;AF\蟼OS b$E9L4{OݱLM6qJ5 l[߽Dc /dcʫ. a}'TB̊GgQomRSvPE=χ7|(cc<>A{5%76y`GD$d ^9(LM)l~1Gn',:8X@`U9|Ԧz:^OG#Doi`eB}{#Pq*QiTA!臑%}_Z_֚2R>a-j>r@kB#|Rl_{HSӄvm:)!ǢȒg7=*$w=IG†V荇s$vDKvPj5Gb4쐂8Q )X+y:!̍OLўP|tGl|vo Odg$>Ӥ|9a=.nP%hН 0S#w%_'` tsSGL* gs|J45K^L S~jS]2IP1rBx69N+Pf0Kqsi7'olٲ1QGTb;8c)L=6t+  0VL=ohNh-#i?T۝/M {fNH!yMsR=??\%gi_k=,>8F<;MA=CGB?Io:)(N &TA={,Byzr+S:&y3Tj/vBF %Cڗ#5@>04QlB$PWjI,4.L:s)esa;NBI+ŋV,EY_45]W(v3{ŧ3BzIz1@ͣ~ш`Uk'PJUpΡ,N@$w 6[p+O+ˋȎ;$^&*HDAu H}evJqlp_-K'Σ2 .՟"\9@ǃVerY7Pz.#G8Silw@I/xtډqzD}quk_ &bhd:P{5CjGKg(0gDĕR f@OǏq#rja>t>Yz/(!.m!'4QHL&#-xdSU=^ʠDN{fFQ zB5V+mZ"g)Dg8 S{P ~ZɟßQ>ɫ>vT#zڴuzEp?Gyh7(@xXP&Xi_aT kU;xI$iN{]8IΦ`aܰ]Z]g%9\H:*](/Tbdt]n)ڂ_m~YZfjaPŎjȢ3_OBwB zWgNFdD.8ssHczR÷{C͹ucI#/hͣYG茙3PZV=v<ܠQ?!nD漅Ҳ+>fg{P}}fVғH*"9FRP4zbR}}Mi| 寞|Pl8-ڣgB5ȎO{L(S97/P?ISxDhyݺ7r{;,̫̉kX/зg ʃ]A^Ld+"S}qgGhL|wU>QJ fGQ6?{Bc7Do/.Q<7bȺN++ x ~UT sA[6,RzSf *K.)ys} ,M'}QLVcobhz+ qn3 >"vS">I|JNYn+"΁ #ZJNXVWcolR )qiM8SXa+XжG?;cl|*q 4 BZ l,ŏ c1Q]R/Q)RBX?WVWu YڂGe#hTC%o&5)q>~4[h}|FNG"zϥ:$5K!;F7 k@샡 ;&߲]b,/t0zCpEu)qG%nBg߼wHõV;,MKXAv g.L]x4qUOa5Fx7rxUЀx*ֽʁAWhL{ ߩEchgZ'>3" k6??Ay9JAa5F}F\ M_Ұɯ/)C&Yľ?#:dΩ0$TH%&{`)#xL;3Q_z  EdNx˦srklf_b-lN5x,&(5P\iLO\OᨆE͡*买}y*2C{Uj/r.uTpz@};mGlStFd_+ v%3fIK 8Āj<FYN$c€ObnBw|J8ҪB̶@o Pgև|'?P8=xnf3o; W zI.1p aV mvEs@&3T|\a/lbz;m$:\/e]WK+T'"Oڇְ`Ps!I!0,:\Nt3ޖd{C;>?( V4 ' S^T鍋tpzuG—'h~(#ȶ'h/ ˋOv({ǔ4f UvdڰC> cwyMjԖ| ~*=yr^Bpoz8M)U1+.m* pMDv@vqӚc<9A3H}a*Aj3ց 8PNx `_~B. ;sX%(ˋb0$lzq 5nf &@n::.gD~A֊mLhI'W.kid̲M附jݗNJ(Cv^ j.>]kuSNjΘb>-!{MeZ>FIFkAh!,S=$o`HY itH.!Q(%Wkhiv ח-v,x8 _x+7$B } Hڑ$|b^BWd M$IVzӧ3"Ӝ(WiMJww%P06> D/0*Pa.>c#D=Neif$;L4A2yN@[(??"H%-*2kМЩ5C/K eҳOS>$јHD 2~s]hzq#-%ZS.g<]}#,{P>!IiTxh5^gwyu#(egq& (Ր|iڸH>e׎K@6=E!4>ԖB";7.9fN[;BĠS{?ǎȘ%"yݔ P^)|"^ {Ir5>t>pyNɓU\p}KOVM[tt.FcQЖ4L4bw6CL_n8'^L*<--A{a6 lLfe >F3(w(3IQW$>hӚ P8azsiϥ\q!2?lϥ,Gs &6dĨHt?Wg{1: /7)1N_;GT8Ԣ1>_3O+XG:iJ.3w,TDۯDʌWoSx9)ZY*()c!63qo.?_C}dGd[Y3)(4 Op:E+`/@#mjs";KZtS Qfz*:X']ڥFH{D,JX1P[Y+ {_9&I y>ݴNk6BM^DrϐXZnGgYH),WI^w&e96v js 'YҘhV#ꢇғqMh<:cA| Z_wG sKr¦󈯩80QIEEozxLiE!ӞЩ,HS32rvF^5njQ7w\JsJ"vסurdͣ%&P?'7x GHr4ft"5WiNQ8n#4|(1' N:F达J/P>=BdCkȏv)6C#"g'Sy@${ 3FlS]aq:.}aF($К4i/,x"ǿxJYVZͣv jE*TQ+m;ĐϭJ wV$+TQsѿs4ybm{#TyݴB#`t0F9C66{'X1!M{Z'?3;#pyα<+ڳKۛX+yc 1:qRhGDFP4;Ez1Dh9Lo!!p7Nb:pa4M4$huWidI؝GM'Ӥ|Q5!E߼&( *gd{#w{xaP< yM;M؎i4hq BqHMPY (g%JB.58GXAJ>$c(momS;A@"M3`>_yS>qqMɁ^RzihHY )phLgP f.8#:ȏq %xaV8 񌛉#~??I$tWr=Op-M: ֤F|,ZZ90p<߿.^J{~v dL{N~uOB ӭةuFq2 ~f䬄49Nm^AOyhj %ќ!S ҞKMK4{t2S^6|@@ΨO'#z"sov(V]H'ujip~#uIfELWR r"S[/4L݇cF“|qf%t n ugDR7$g+hAAbEdJx${l?4OG7Q؍' %,IQ(T&Q~@ #ZꡕUڹ.v%:S&" ; L7hCK4ˈxvD0}$uϩdPx%uVM$zE! YA}&Xkq=Xj`gm#4E1*B }%˘M챾6AGlM. %MZ/zD5-xK[&ZEGelv׈aSl unc|[Pj ']ܔ-+4|ƿ|'(3␺$>GDtJ+:NGkI4eU3=Fa]'o.s)"\>s_!*h8A.țNxt;'jӰ LC|k#DfݛY̲ҝwh&5#>$Ԉ`$>_ ؍1ZLItHOW0#S[ Ҝwd=Ԧ36\f=USÏa›.VLFmJ>p :țQ!*<[>tݒ]19;f!Se-y$x$ wγh\F{֠6+a)t$JL茈uĦ5anlԎ8A4a631G BpcƮڑ ?IX7=),9?}f,W܀ހf;ܤ<) LiF,\Wu ($ ^tנvB :gG IDAT<ĩk4f f}Y 5ָB2;'\,RZ:^M]엢L`qAHD{a}U!%oU))(-Ed ptPfL~_X‘c 8x!cLct,$|[&3VE{+U _ȣLmf(Cpg{wݏSG;g#2ӏce\r9~ LzDrJ3$mGM|EN~|hNx"wfK#NTyp2 ĺD~$ޡ"P'۴N`}Fg'Do¥*-/IHMB[׷JN#D7%Qw8Vʒoc-l`˄7$ܕ6^@iF32uWTnZ?M|YY]]}TVKݲ,2elca= ;<ޅ}Xaw ,ð c{1Ȗ,[-uKjwW]YyqR '~F~޲L<dQᬇd{F8Qa) yoF4nL {dWH{P""D54M0N8YqͬLQlׄEubVlI:ʁ95*O%EjQvi[.%!a0.܉ZO&9{쨂C9B$ds%b!Oqr!:)5QZT)>_gQ}u<Զ1Ri '!õD<6 DLDK.0F r2~e籾s:r_^@yuq2 ]V4#{n1TOd|>Y:Rє 'HT8L|M3/Q}H!%}&yIk4ύ~HQy =ujH IѨ/KL -s OEI4?bc}fX2]kijCoFb<0LkM?B.CD@b%$2zVGȮYA)-z 3:gġx[w) MZsD;4b:ߺ-n?xDnLIiBYy$d~I#8O`W'iH;-z!cTO2ZGFn8;;Ń'g[wo؈;E՟=/UX%uߒ8\t+׵H&}wlG +F lK$t("xȮY|A_Bnamh{}̇2q _耉Ͻ)4錿S%(+$ĄOƋn lyȦ/,g'e["Gݙs%QWH|dӧn'Xf\P;.|Ϝ7p:c CE_o<5_̐x060XthK&z[m Uʟ=/*Pq$>{);3eDZlQe j@()`^e\m Q _tqp_ՐdY m[/{eU z[FlOn']e,E?`B8mԬpQe7xq&^D_yd5ث% `fS*Ԑop _C%- qmm ɓC5[־ 6>bs&\i.#_a_E$LCo sY}Fes=/ iL=p_WlE@nQVsacdIΜBx.eDrE溋a p!;)Vڏ{8Y+a#M ŀ蚺_9zt Sm< pr*q.jI={}^KF#:&n3|p(:2,oF5iӿx>;# #!~Iogi P +iS{ 0,2c2Bk+{p=c[Cw}oJQPnGit,!j_b?7ۏj%ے7\Bb/h]$jbb{Sk }3 ؊$Ԙ״|D4R[fQ>9KxU{׀c758e 7g RMx']ï>Eݚ8 ϞǞleրt3+Depl\T,xCqݲ<gFHaEё:dmIWylqf}_15䞂-* +>i ]|ԞoMw'p1,Bܰ9fA6 p.;,^W|̐q.zWd܋AGH;AKu}Ed:?z^͡ SsCgXնMk;{"aOu .uKo .Κ'Ͼ@bURuyf AZ, z4RީmGn|7hoDhWAAq&p>]"=!/ h橣½gV6W/_kxLm~2@ O.a/~VWR̂VW"2ҝ5$WTYBYH 2W/};$"bnOwFΈHwFAvDsI!0T?rQQ&ڲ qDŋ, .қ uaK [$_IGme{fQ6_%1̿SX4O;#$cX5 Ն+: &|d/da C5(>_]kM!Z aRӢn;#gPrsQõ`>0u&"!zx^ҟSkLbgű=b0Z Ժb9ɓzhװvc{9vSŽ֗P[菇u~T9HD ̺X+6D߿WU@87vOugG^1@~Wh&ׅftt#!T4"sӣ 7b"g(aFn") ;`](\j~'" g]ԎF $&?O9ݢ~ͧU["s'TdMA?o@.'#|CЅ48 U# 2Ʀ۽ dPwuF%aeү X`GX2֕D%Z4" J_Mz^*1vX~> 4XeR2.v J./ư(9$Q27B֯MJz%&C8NÉO)|^c5uVk9h{;*WtDn;_A# wi$?"]ȠTƏUǑd<Xo]uGV5IT8NDE9<)FrS%vMc#|Eb7u9:[$Re![rF=?R&?&H8I^MP!'fU#PdԁBD4`H3C˛;8c3}.V+jQ,%Q'nZH (?-̆$"+*MjhH}#_hĈߗh梔gtE'ʔh+$ezI•(C ZjQ2ĬKo9Y%,1>d80;25'[h_%Q\C釮ֹIXrptئbK=a1b]/YtOF&⬹_TObeע~\ږ|zSG'ܰhSHJ(C1"ZMcWdܷIKӛS7ٕYcCeC:gM.SdKL}C SHևh5dP 4M dyBşzc0?Ua b]y~HQx21R(zcuk<]@>(ƖzM=sM]/N"P6 c0{^c";')?#\* A _j+Th)|vib5CF_,2Ԣ\`F\Jg=I71WU#(kOui28.e_EJ%6iicȵrx:j։_68m_ƈ(6J.I&*yDڈ-ڏ͊^ 36mx}ֹR"ϾƵIj'4P8WDpEsI݂QJ"u+;'ʺElUF$X7v3c$; bK:W$%Ց8GMj̐ޝ48ż7%Fie}b2屮klq!8j 8:,rhM+yl?&o1ZxHLtaHr?+eRm2 zR8#M g#}Ez6@f25l#)AIboY@BO,⛐"lN!1?Ah_A OE%²4TPAȾc\ %D/*$?5ɰݑĵ63,8F6i<6N0u):p:vO-Yb)!ccD^O"1{2[ߟh{AW_K$W|&1!:)_P??aC277mz*]IEbRPU_9hYI*z7qD#{c!d;o*{"ԶH9=Ó%U HZ LLz@oTe*`-2wb8XV=ҿ O)7dH~HXo*]n"M1JNˋomPy8IBMR$. $1GڋJ<ևޒG!Ցhk(ۡqDz k{]0O;=N#SGVQ\,Y޸*ϿNhL-tUD{ '!ɕ:@/$Tr@ϫ9C"0}l_%~[e  _NyXU_P#Z$T5ĸx H%oB.!Ud5dɀ_8/&yLYUvڋG5BI} Ȁ-d|#di=ͣX8Cg>$b 6}\m7$f8ۚ Ff@tq=) +;L3ObE"5ݦ9"2f˫Shmg*b*Ga2m\G#TB:0dq27+t}#х AƒʫSDžq!}]ЯGU.ž2\k DbXf7Nfdt!cUֺ{)/L%ZNwLmxIp85A"9\ Gy'$;F;OB9YO![$B T ƧceFMD{v>rOçrFHj@L^uQ\N)T<֚=iGRkĉ6(! j7r.e,Sprم^LD67~`,!eؔqd5IAFhxF%T5Jk눪l>!BKejoHFn1ڶH[gGˉ]S>]O8yj5qhuHeWB9kK2oP&mn|PFGs.c*S)KDE7JAuENx&mT0 Rm N%JA6} erJdCmY#|FKg'q[߱m&Pnjj 82âfwAm)Ӡ;85hJ^|-%qڬgMWII{@TqJk3j'4߷DdWT 3:?j53&8'vAl#U4'P&0/۵O]O(t'0,l?& |3y"_6+QM@j~[/BQ\.GM]?ha>(%/;jۆh懖IYIIdt0[ :I ZE?П yP{8O>7 }3@ /\ .ݺKhDdB|-|ZԲpc۟8LƓXȸpk=j$G8YMKjGL| vQ(?D-v6O7%ZM*#QFFɀaQ8-~gd6wU_= IDATKµǣqwg:>Vv@o;h:/Xl0 ~M_B:(vHgZgsq:-ћJ0;Id3>m'\&\;`*eAuoeğ\.̱(N/]dGVVqcՇ2Q+j8R=]&c O'Й ^c{`%eW~ڢ74PĤЋH0wTEoXANw%_ƒbbW7{)|b=1I8Q@B#!Bn?9E["0#6O%jR(|Ѥ]^~*l{C/q_؞`5Aa aqb;44s s} zF$c-"g+}ڥ(Cub_ȼP?OKUKBg G35Y'YK = zoh8Fו>7ȍu%798psaeD)8˭c+W9>ExC Ngh$1ýV[YrozY}uso2e6ykP4W:H:[8 I% {)2fMfe=S>PWܧ? V"w ޯ>a̿@h@(Ir] E; ?D凧IJ?Aq)р%{瓋/~1ԁ~/?O_FI;EI!#+*FY{a?ɴTsWf|uv^#jm:ԡi٢}w! iKEK>Z98QanfcZ%vbLIȨoKqicע(zHݎҭĘ~xk Gec]tG-RZCm ~e\ofDN32em+LJ0"IApD$>` j!EcH^$80 ~oè#AKk,d,ա3SS~$%Q[ ®hYD^pg\CcUC=#x+AhDO=z2~9B>D7I zlDUH' e(G# L|Acu'*VFE+ BP)d&^l00,X;>F'^(2ι߾%dD_m_.y L ²,3̪hBdПr ?#{J`Ęr؝&8SryT1ĊPʏ'q!ZWs#F)ah/h]]j|s,gQ'\=2qUqmF%Prj2Mc9N0C)i-j$_F6SNhDw.&32m9ߕd_>># .!3%{%qL&z 1cuТ_H%$f'ǯe xx.č ^d_MH :SLwΤ7#9BClC댐\?k^ _z 2^LL{_LiQavxl6Ȑ0 ÁG60IݔȽ\%7}iƉ~Q0AjuDf~uM"V'%(KW`ҥ(IB2Ql֙ݳs6IC IaH BCgHv3*ý8G'ԍg =GD_{ N$b6=!=,|D_y܄F+$)?sw`yhCƿN}r'!<[*m€ѢM3mMA5)j-d6Av/tsnQ\*GĔL)CR/ߟn1(7˝ ]\11*5$ Y _Ͱ8| }~=J̲Z¿W6>J H~;l)']Q!mAy_=غ}o: EpZPyyY@xbR^Z1D-T* Fxpw *N6$"*CH|ύ!T`+:MeiG9rb-0[ɣyZuŀCԞÌ}@r1DŞNcP|H뙣sJB]qu77'ҙ$xWJjW79lo)HZs4WfgVH#OTvTO*' S ׶Y62'q#֖Q4^y2Zn`6<&]C)tJbxr ;$=#l_g&EfTɃz3" VYrZ7SDelm0`3,Mb8MBڛlǤI۴&lEʪ=#i}*+$ hƏ<>kXCaA #Sb]f7콷C_*:]$*L'E/:s3xm3cFV+is4%/ʃpimThڌ#sS[ BM+(6LUa1cŬo@p&E.t!>r/"JbK*٫=UTpnݥ{"h@ /Yoj$L<e7}d[(j]d}#pou(ruOߗ~i_Iρ);Kޮw̆vƾ1O%ƀIQ u܂9Ct( .xFwFdQ-F0 q:.4/g_aمQ\F큼e7ljȸF6-*TCXSb~o9d7$ZI{6@'.j@o\m"*;G%.3=7(X;^,f@1qgꖂuܫbs]- {;=Vsn! yKқyLVXR1 {ͣ@ȮxMC"BS:{VT(u4Ծ]2 ^\߿rn'M7lK׆oѝ0["Hiqj_'+DoUP86¨Iw6* Y,q:;NZưFu UTV\R/G`"=ǁNߣH5haU?4+~|?[#uď(߹|}ђ#ҀJ`Ң ^/G$'%$ZQ u5&lFР%-4Cc"s4fB1Զ >wtf8.Ya.Jfɱ6L/9yx~Q}Y;v dyKGoSٲSE*r{oNOH4*m;&1y&$èDDHn@̧y+e#Z3$δN Ye$)mW\a(ctUM7'T$FEFG;l43:^P "L5vfNvohu'IL?&/…/Z*})CpKzqVC?Öي{  Nx 7XemJ5C} &a̻k0g7)"-j1TMi 0T1htZIMg=,g|ϹVխtsDH$1)DI yIǶ̏](,x~Ϭ5:Թ{硡vڥ)/e-A&)` UY=a^Z8s=NCpt']W9ـcp֭s\_6biLixTl)`%g,`߁5!~e-U{BzI%82"eD _*p/-:6P_)=0ُh>ia_^Β$ 86\@emtWrX-|CVzrǢuIVNՈi)o=?,v2O!u΋[$#Gi{WJ G =*/3(yM'}[;"{CB;!6b=a;bw1fܞ6ٌK1ܲ[PM\FR e/'qFj | ޲SOE !DG:sY6vB),8k]ø"YJk Al3ğ`dw~,Y:ZjEKY13-qb:T伛 F8ݿz/5RLMp$u{TJ-w ;F?&Q~|DkcDR@2SvQ納Hcf - EYeQ A: @Ar9VYbM 3 ᠘Fb4ql<[O,j0mᤠ_T_-c~;Mg0g"v Hl0-kq,xhs? ]+9Zϔ8U!Eo`zQc:{"/q;"T!1;d*3\+"H\fz?p5x Wh)=:!a"naZa{3GtFTe+(@t ԁBsR|Y0*0W50I6-dV4jL}rHM/dqIWR`%c^}ɝ'i 7!~: g6SUbҷDS2ZS|c8e!ZW^E!֥+lGvμEv]B8eڂtew %7yH%Q31}7KS$B'eosz:X IH43x1ٌsnɦD$qW]i4ضQ$ Q1??_=yBb+Y 1٣Dz#Xj@W:<0_3d^4ߌhR{G  Ɲr9(>^Ax)YT`tQ9ą39G'_4MӾ߃ `io}"9";!uGt9ba1)R[ ߎK3Sְ?{WB2#^b8!K*?)*yYR^S~j'Du"͜<9w1 /H!?Lb[HH?_H)UOFA ċCw.4OVċW}&xDJ ?]E tQ!5tPon4Zc8W4"]%UI1" =wҷ &?~ UQkf)?ÌK)!#Eg_ 4O$k*'XϦQ,RU2QOtBt^dj^K}1r#(,~:B tR%~ij4lw IDAT7]^:P!jG#L'$YVH=Q:-LIGPH$dn :sT#F*ݣyr=Ri8l ܂FZB!!C:8$GxsWE(x\XAYP{Fba|?9P8^$Cb^Ti {uXK:%^yy/ DJ _YU}OIyxT<5J~ĥZ;CAz * FK%?Yck;"sMcSVJnƾJq>hSJC͠4tFO1XV~Lg깐+Y^q G&& =VzgmZsky.q x3 >6KZQCly}q!6@CTfV~v TK UP؅cAw Gcoh JBe1O+k{t*rp hMzZ_!1/1K [?@RUtŹ$Q ԪF-JcVc4Ysy#)`T/VU%1N$8+*[ EìFX~XߋhErw"sT]`W-L?7 *l}`( / UWF{°atԁJ#;vSN y =-MZiw.@-bsOSl F<')_6[mc J0p8aj3Kz[y,p fL6qPAoD`%Awb-a#CO|'#i*lC>0zCo^к 4FUpeA5Z4)!Pغ] M0VI 3(0>Gbr@.TL42xsE+Ad RD㨍21V;50I8VYܺ*OiҿЙKB"M!EeT(nCA`௤.tSם 6S(_*5"ķ/F`W ^cWI$[GF`=h)2۴i25>35AO+D7 HU E>O9 %T}٫io%ܟ_16sXB!O|ᅝ r:qy[ 8 ɺLQMn!8ЙgyD,UVfKБr2wPfMEhb^IuƁ,?]er=+\R3(c%ⴃ'X_=Oth ?UsўH 2EjAww :1 w& č&wP_Q|uHl鄎UI=x9 }coxY(\ UVL{1DgϡY XI=rdE73woKoVryׯo.j*M@f82u#EypTaTt3q.A RH_)\]K1̐/b P?a:(w,@`geDSiΓK*BSacg2uUG0:_+ Oeƒ}b@K(KgfN1AyܬLM8ϼL:xz"*WWm,Af5*x{A@4z[L|BeuE)J;61a:z%EAvY// OLnĖJэ"ƖTEd-חz<]}0r]`ϯsbSh<+JE+ AFe Ѫ_Ҟ "A`RhPv};$q0٫ģzvwMTG 2d^ޠ $QR6'2,+L}4ўY5H׈?DdX5M޼6\`x4P3 P fyKe]\6))?}08 C֥bDua/.`b .88/ t9f{.O-HhKo]d3~Vܺ@j[r7m@LhI*5Q] 쭄Gte a`BH[̒4CNtO\#hL0R;*{>o≪6nP &}h˟82w4<2K”=uE$VXHLT%$ˬxhf%@9SJ>ތT+k_&prƚԥp7E5-3Sl20_t,%KFR ; u}WV$`By܄waqѻ#}泷׈R_h*ۈfՔKz͸z3֒T;3CXDg`a:>]}F FcՓfE,~qWH>AH&R-DLRu,2+!ޖW{UA ΚĹ JP# ]if~4ӿe:2d)`9-'Ku *HvDaǠ ͝mkyz_~=uJ* fCuOd%Ti6y:6, 6 嫤Ŏf QdzG=(RQUW!c!fx%Փ z>hBFS'f"p0*L}Qǝ L)nKX _>sWFu nQ={CE|^ֱX(!%UWZLv5!UȠ $L~_dJfja6B"I^%uB* hS@) 1vL2FⴌbCP7}d.4Q}|} ߒ;mH]F$[!lkTn?m2uƧ;g0,MokR$(%eA{XG'{3K+iݵmZPU;#NuxG MV50s}[1HNĭ %L='΅;~Eab]E%Ŋ( Ŭ?f**Ǽ3TmO!bo}#ԏTԑ-?֠E4wh+2:΢ */c6䆩]͠w'ڍbgMY-m Bi#iwg[ŘZ'M0(iqGJ̳/d[T-ƟUB4KP|-ڙPIADKp`}QAZF6w^ j}~BRkHхf[œEo%ī\rOFTCK flĘ <`6wJG0$FO'O QpjqInw̦(^"^w ] uVH77/_[XCܢNFOVR59R@ ݇v`ohW;"omD!2!ʽ%5c*bdb(Al!z@J }hyB  W# [RNU\0hAdtwTp0 ̎$I\r. JnbHԼ;K] 3{|(]KxTX ? fCg\_Bh?ݢِ-Eʳ/7)ׇ;u -r /uՈ}$ *aWNҐ` -yΧzhU0{;BŘg'Խ9!t!<(lP9VV-mՕ!们Wod%+ ^)f3Kth\~"'.8u+I=廁Qxzw>z-ᵛrOsN •5Rh2|^EhOݏՊ'`Ju"Fe K4y]Vp6b!=Jwfx\@zmRCk+d6H7}d>{Ϟ$MXޠ S@`5G5p`.$GIdv0)rS-UbEwC"[#2imbUSRbR*NПOJ u[ O$;{h>:K|O &w,fKp=$w{I_A~C3:%j6TW5=?KYzb0J/SzФUUh1 O'L|7d8 ??K]p1Bk*+hBy wL~اb'2S!/(vB1>"e=$(-Kf^`M` !av",rK1G*߈ 2*]1Ya2zhhR  7W1urC{EB[NhׯdNh&q#`n  w&˦[_\+$`*$4O((]+V;68ѧV:0 *b# إ6eR,Ѣb FO{I?#),~GcW½u+!+9nٟ {?Aw 6P!FCtYg})D$}ř;d)jVȒܱ}> EKӦVF* e0Smk; =[[2TʈsX[k?"~OB0%x1a]&jC}kRajܳIuCR^`^I3rmM9HV8ŲWHHeHgfC{"* [\iMYlTr]""LRkQ1:ZGs&^N}@}a=.dZWs0b'kWd֮ ZTRԨQ?k+ݡH uդ礼_x{g m!@K(``f csmW?g'i3P*m/E00HPh3}D4Pa4!=]Hz9El3ȘܜN~tCnL~Sw4Z6huDlxDV)\j8n0J2`V`.V\W4$H``Z|M}'=M턆./NV5jcFKe4ai fH8KVLp`_d]95D qs],|,=wXl3RI4bʭ_?ȨLQ"3 +9@oMqTz{@Y 07owt%˰[7(!pÂ< ȘwRp7_JOu@dIGVq.wy$ƣirEfhB92xF!J(ݺ!a20R`RC / t'OBa8ZW]kz*!F?M9`Oc嗧)Q5 e?gtbg3&y*tLpp/ u0~!aRD .Dص?<":'%_Q1[*?Dj<|Pi`Φ%eu Q TwVѮ>y/lIfTZ  ^J MIlJecOa8͆OaKb^i>2ox$Uĩ{rk$*Oj-R.镘Ub'\ ?!E{*ľ/+ɮlԷxn* ;C"[g8-L&._%sUUuďqZ%`0-j)%’><%K%ohvNCe5$#Ѥ֧q"X{Փ 1AWuOL\hR%823BɰX'd+d:̌H;.)8@=**#Ȓ#|$~V#Gzh޼:~{8;crG,)t 6w-ޖFv0ӟ)^,ܢKՒK Zt"[c8a54ɀ F VC2ASPF$v%+r>%U#3!)-G4CLy Iƶ^V!—:&I9PBZkYYXW7Pr -(8COo^VrD@<]5̀"ؕWJ@UĎ&{G*<H=R|A={.=9M[CVyJ3*oʏOjvFWY(FdHC)!;ȔcKOa6`1{'/90{:_%,"ң ݣvT &q.u@٩`:{lY{m,Mu&3[z^Vϻ?v(R+ЬhkWK%aC Dr|Rae6`{JF/bc)loLq[C"pҀ>r,ɅThTUo?)?}Z: }i(!u!Fꎾy"ɹ4hw.yXV"SnĭK+ |wTSo# @VjJZo@l n~!%P*xa ZCyDkbCTb}g'b"%\_%Nњw)KdbDw2?`Կ)a"-&L]1:/#cA`WN\LKl3ڹbrC e۞W%hbMVݒwrWĶ m3bڍo@E7B.;͏b&y$ph"oDb|Ӳڔ<|p w4RV9r IDAT}c0#Axz?1gT:Ad9yɶ*F]PHՓ:H k (?#QҝEOdAЛ$fC"N##+ 0Dy%}wȴ*v&@MNʗ7h]PrN;zI(A d5wz_ɓ(CӟKpK4% i GkQ%ۥ4M_^Cf 0/H0^_-jEބng+Haz%!e+ϾD); &wL9"]J/JWofxdzGD"d2[0!fC*(t?t|J(}N=sgDl\spZE1 *jhnB R.Kĺ|6ÜLp  ֎L=r#% 4#9Qצּ|'sr<{]޿1H)I6зJ Xȱ?~<~LGZ͐JiJs A)܁_ ΛL) T\}w&@[u8}ҐЉC$rl4z+8# 'U_o#}_df׺_=~:#?+9.ZfKjƞܒ FSrދ+UƱ l L $5V$<@]}"iZDdO~^% c9 "=dtzD F]SY#;l.WQBQ9!wSύۈPxp_VxL WR zs Z_AjurLfI4Κ uqd8x*RoHHR(m^ppVY 'Fg87u@84itG'dV^[FEu T=!P}{uüc08z>1G1=mџ0]].YLsr&]GN|wU'"x=@(`8YeVl,]Ft L~E {FɢHa "`4TFs.zO/ ɯ*lOE?0 4<#E |g A2}0kOw#}rv;WbvNV&ܐ33$J{A%xIVÝLs*mb *bxȆ c}튍r_a%&)>P|҈l o _sgfwy5sU6REӶ -LDcZ.nTV' AذXvr'E >ZzDmiL0">yHߡK!cTrHZ"]35ʿA[=& q ::A)ҫ w4hN$#Cf?34>KgTNf !o`௦nZL=8űTE޵ 2 {&z>PkHBшs!^O5H6:!q#*ZGeTNIx@뀂#*Pp-KQ},yئsfiMXgi=YK byH:<8NwDB z{#%WLfѱ~9J(҃]1'+F-Uy3l"Ce]) EƢ^rѾPdsj + g$073]z-c`J8!u╈(`~NAx bECrS0棂 S:(4^f1NFC zcg/zBX wR^hReViQ%$w rFo'IFbfIC7Q I # Dy=WU"6;: +RsK{aG d*!uB(g29r=A& b +&Mj7{7!S`[?>35@fdO(t dRJ$0z`+`HWY.0T?8P8 ϽN2 o#߈KyfU'P#>:;>Mg  #ez{a S 0.y@1 zr$QV!7;F㨆mQ! l=#H F'+%7"bp6TB[#-S{TM\Y ,ezxytǮ{HA l>&. = 4hMRWY1hQT uvq9YA?e_<1߱@ R5  V+Bv3VdS?мOac+do>{TbTTN% f >|_ip@7O{Az]޷@iPPx62Q qcx ]zs:4i g)i<:64+c 4yd@f%l% mo"&6#Bl@cSqg"|[293X`2R&wCUrTh2 (Bg R!T?Ϫ4NČ&fuqXBwN-tG6Oz&Th>=ie];Y=wyͼg^]U]Ԣ`03ہby`2b ȃ m!j޻=۹g>3oyp-?~J~AP-%(:&޾OΒa~5) Gy&"CċӰsy,l&A͍7HybME:gTerQSU2Y`߼D1XU gyleG]oc5,G`P%qMb]8Yj }ųݘ8m" V%G8XxE nȌ[z{Gf+܅̘[ ͋:߸L~_bAh K| ;aWJzGauJB}@vaFW?:6}x~;ij~>=)Qad]R<5tu;AZ ][n"U U:"}*-enߚun;ocQ`ٚkq .XL+z .dv+mLi}pkRm^=GaϤX1u5Y25wAN47-f#im^ #LU*Dh^5i1C'b y[|#>Hgޟ<(F!1lN TW` 'MYY&rg"¶Ir˜tM`e7+Y#U&O Y*v@TBWevnsSh@gPݞ:?: exHi>0ޜbbuXy`".JEyuyKXvGL\K't6/ާ=2Wa.hy|>/h<"\P.r}yÏT>!$VncNpD,4kHUO7'ϳZsnN B-#-T=oW]^3Fd&Gy=D_\$`Y3zԥgwQ]/5פZ1]ӹ4 W"J9̦3DtO:+}2+l|ש.*9 Py*T;ԫ]RǍ_Y^Z`"LzUb+&c޿}CPB鈉5.?Eo3WP\$Eh'=y\[@RC..ma>dudsj(c4f@;&9wՍ~(ToF9{v`e"?kfS^XH.Kumf@@!.Į켟w>c]tOrў--p}FbD"9y̬ǎFEKZ=cڏT_n=Ih>^"czi e8hB s̈;gpQBTBK0k?|Tj:P-σk4Kh"omU`ijC֝/T%!2|CԚx6=An]ުdTZ&$4k "I1[Hz}NrHN| NՃE֎d̾gZ44QT w'9+^Q{2QZ.-wCI>6qf- P+ֲe>:ph*'sΘKymjƨBA[>T$ܨ78^Yr&j'.91J7V6cR=AfSa;{pOpcR;d\t -#G֯b dqG`=8b6 BGm Kߥt[ Ό @-洉d/q5[ e p+E\ /L]ę^MUSjc$}a k'D7n3~da[6#>c@/b7c{('<31J5& c *`]f3:CD.N;K?\f!g)F#D>_IV"kf?0/0Q$) 9K,ȝV3lPKiL\+'9E V=~Uru~1͙ QZ >kS3Q'#1|2<>"ecOr@mi\.>rBdI|̣4L:?U&wQo،4\~b3=ߩUv"#p R,ZzEʯtg0RA#CijiX!\3Ѐv"P>e{KY(P |( l ZBRpg#j1SZQhqG{Y&]{yܯWĘRLʣ󸕄QOb7[57Jg-P``52o,̢h?"3yy+a+T.^ǾyІBJffDIs?8bŤ+c@7]Fɛ3ġ@K' -1)A:P}씃&b٥]sCA#O(K($ D|,fV[Dl2vx Llڍ%!>T:bLuten3e9VhUWBFx G7tWY1+:DghXz;V )HøecU6?+Y_Hxzق x-v&矠X@bx3-]^۟eGibm?ƂfM*SNSplB Ր/9+6e:ת\zMͤg. bޡqXa21?f*`#ݭ2sgX-Pvd4(}@DA z,A5y-A9kD|'Sqib"AZ%BD"*>SzMF =vZ }xc8-m9 r,>U/Xx6o韈loLc YMIMg2L=?3]5IMH\(7$̣VP@ibW1Nyz+]B3#h`5N b399r֋ 3I>AP3HjrV PicoOC-S tΚxE  ϔ %MÀтt~=!݌.h=g#fjG'_\k H7:>A‹ǖR(Ÿ.iWduS8Tkh+K^_$Bd*/ݏO Ī8BݯP2x;q8+TBܯI!26Fxt).ē >F>RPCSU%Y*/I8egй: 7] };gc”J!~E4J$$^;oO室MȮ|DYCDDo$ՌH^pOȼI>"5i2٭IE%ph|5fPi l Ԛ\~KyvV IDAT nw,-9Πk nM]v_#͠ƏTZ,F,J9V'K~(7ؿnĚ6qa[$h7y`ؿ38 #*ѓ4Ka.!2u()$VVɚ..HgB^#zB"JC`[l}vݤq0 k|6MvCG&vIozK2f䙜KJ%=T5"8D:-W=ccX$LEf $U$uJ 8&s -Zp%gG=s>x8 ;N5C`=Ϣ0ɚ./t")+To-k# 7U޼3LJ]#oHy:7/3&sm0ZBU]6yNI,M/x3_58f7JÊpCk!#RDhR;]bG#ex+#< F_;+Zm)gxΣAjuW.ec]<ÁLl߮2w—HRGc~eci! W^Mc}١j% H6}^.\oq5(N?I%/o!y"]'jl dbEL }]`w;} IFwE";yi؄#]: kPE0}y:PP3A>b}MU٘d x|@ 5pkѬBvK*^HfNXqRD&LhҕU?mS^#đ_B (T^bb{W]0o+ց8=D7"3-9lTG}p^3!n)#_l\g"Ѽ@h1K;E=zH}qsτ8*Iͧ\Ђnl$XKH^Rd7'F ZgȰ :K謘xyTs$df*B a!"GCt|>4ΏC=QkҸ;EzS'K:C&veԲ R 'gth$8J je5rHOb,K1;4 &Er.a|trϊ Va͓OeS/_@|>/L79̾2p=5B/4}CcteLVW81AZt6EMQVE.Ch\8`&AIP#APTJq'DDQ:T|}7>^1M,:q^ >S?-7';)7D?88ViaLs֟[dvEt ]?z'pdPu5MPH0+Z`A0P TG* xLgT ^ʁTBvV,o NP:$xwA&Qܳ[ E&v_/Ypآ(6/|'B4ގs[ PfݣhI5Bq=we2{A8Q,Lu cAqR73("68tfȋϝdC\F٘* l;1.w*k;E Q^ϒ}Mgt*-!? G2tȢ kI܋!cF+DC'q8,HV{Esx+'x41^#K LL ܜ?s7Wgr&@kdװu7E 'to^ViY,OyW"C.s,Wan&6̮6^@YK3^5JDs/1h4ߛ!4U ^5ѷucE($7li6w+1kdoHUzur]'.j&Kh_|gIzGv/\DXWlF/iYe-_J 1tRY[2w͇yo N'$mi8MwjW̗z6GXC]h0*.k6"R+!.\/id"# ^;EzO`}1MnvHcD$ f\ⱆv}A Nt`;kmu ?/p1 ރ.* ^ Oͱ*3;գsD@`JZyVu"PWM&6 &K&I #b ĕ \H氷,J@_qЎLת;N8:d#̓4m?a0YB&I,( oD#Ed@u`(#GhHNZt. b g,{Y!'ީ o+@pzqM3Cjx u .DŽ70\Ihl3[c%g0zhNetAJoLTu:)B8WFo !/^`1A^Gu;ʛ <6(J7=m21[ Иzy& _ibEbd?1^ ,~<$B6{=Eyb_eRB&սGA/X1)T3d7\F+dI*G013*۽}T[e4Z6O p&iRM9\?.# :w(Ge[s>Ư@BM-jq@鷯{z`FuJpg >tϚT$ :KvOC^}pv3ᕠ̂bC`%5ީ jd6`te}ls}ZO O/~F+)%i >FeRlޅQ#c9EtA0niҧ" YFv3&R/҂,||Gǝ8ý+*>3fo1:c64v/7'm=6jԉB'v%| W>Jڭ3[Cv-Xh>"T. ]dz zH(܉lS$*+l'wvs'x9oo2XIzuKwPRi3&aĺ|>9Zc5]>4M+!fjL\G VdDP^[%Zg9&/%`:4TGEr|Mf%HT=l@ ԬCm u.m_PCӴP dE,/>w"b;W&rxi U2z wPNLk?R"X:fZ29 KF_5%Buq'-+ҤZm=Ĩ$`3 g5^%b5=" b#6w'%tGtbj BY^>u, ܰ* Y)opu'0PLF u"Wٷ3cĢ5Ȣ}vJ g/| 9DW)‰r[sY*_5]kYt@GPj(vLVݑ56 :9@yr$%u>M"Q2[eDW"S~Wp=-D$]E4NșCϢ[ A='oru;e&yZBw"4W[/ '1id_7x}K9 ե.V폦PKh%+ttnmiD*g`azu Sd\G3<$wDT=B+A3v&Mh?V2cdDFR ( DCEq` {9dԾo5&9A XEfå>fMtrB)\Si=S9f &UM+>~Ni JHA?g+-fi;mI )_eci+#ďr$Bq=OKhi2w4BT!?,`|#uub|?G('yŊkDg\S#tjT}X޶IPBz_!S0xGL2k KJ?2bK65PV>W_]\|Qе -7džrP'FL2:p<6%5%LM( hibMs5D俕&&HTѣ.ƮNMP !n z߻@hho*ѯI4 -ybޡ3L9:p.[q(٣#LX@p6{eb D@bt%0LbuqKq ?Vde 'D$56~)CEܗy"UahD'-k`ƏUPBpk1 THcF ݳ 3 A6ϾB;ooO,j$ah!N-&D܄xeNLɴPڳ |(lCU;c0G7h1@nN ١7;*ZF %XjM ;7ak2Js:V;!d*Μ7**l,F zS+D6G5PV}%aWH;?On#*X: 7^Tm?"=1H^~e2Y*ȮgSArWQncGRy9)s:ڡCCf'B_g@?hW},n%f#`-BfKas6Qp*=?; IYLEL"Ҍ'ȁ;%_>\U00zƸ.f?5me&wn2~d&Zhz}m4bLAxFL `LTVx2;lu,H7%Ba;%;)eB"@i$1xy#A:;?"0uJ/tϪHh~xrDdv :^Q$n9߹HAzbC/& q `GS}g} jdx$O4tC&Kh1[_mpnx0:^DPuGMT/|絣w20c;!1Q1{  „ FOcuADt=F+UR:!+Lc91#VX _BgBĤZ۷zA=a!$а}q~H`hh+K.QH7B@qQDzbc-FXBI@<]Bd=fg( *;JȮ zBsd(XBݴдo Ft`,ဥ]fO-;mQB9'$u mΕc{#h^ձwdӷ"i l Q{Ro6Q"Y 4IvFTTj%#&@N7$0zWzYi3,%8)IqoB}hy_B/I,ak*ڐH!f Uz9?us$Z? M,iskRX1j4r^Տ`+3T8gHY&eH?!ϋ"-Ź~B*"FZU >"Y $vO`] -ċ4J2vMcJ۫0//KN+%83kO4GP]i*?ki!msf@岊I-8R8S/3Ӽ]o=tz8KX?2a]E%?SQk.,ۻ%TWָ!淳Š ष%8}I_I{ Jlw ,GTA ̶`=FIWvs6&Ofe>m8SاK؞!sx8O=Ip>+HT¢R#x#EmuzYJ,£ɇ^^k5ɤ_SڲzJ^2]yVK[V'{d,N7i%chmiݘ¿h/a! ^9¹J-$C^fE(IVƌ<ti lr1KvF#GvMq4Yb8]5ye 'Q}At3$)04;x/^a G:uqMV9WQ݄'P=0$ 97d< }0A32{51nQ#5o-nIQGy_(]G)IJ+1ccVDl>S(: w!.G{$?wa J{J_ԲO|KmިMɠxŴ*䢴ۅv}Ad417c/[1o{8eMs_=KH>[gڛ6=IwVd]ݵ[2(/+K;,D1oZcہ-Z23H-ydE ?V)w>{ea3[8(; [ȥ'amQ 0if]R, {Lb'gF *phcu|Jtu]/?dpW7Y/ AUfRNg\%{?bϷqNZvjsCZPyv7Ķ!,9K#P3K=J[gb "-פ nu&Pk~2cI%Ch`DgBc @.@yDje;42[:3>$;NA4*X_Q~\4 JH-;EJh nROКT^V+T?Yc_k([&/@Z4s;"Jz'Mq$PW,:qc0푽)P6ƍbfZ{t&u,AQ 7N118Xon""ү$~'yܠ1aq!v Z4"#LChN(y3.9:|Ayw FhlLzTjot&Aew.a524j,K7`" ^R'{ѠrƵL[H4-TWP>4E\t.'d>Xc6dH誄B0&ݩo=ļB:b=*^b; VZ1߆;LXPE̛1- hτLUH(tTW*(6^>FJR݈1K&N]tH JQp҂8O3X!DO#3'&Qđ&T7*Glc6ʆ{d %r@t[Q8]4;Ruu_~}OP>+XUp&CR~Lbʟ+*P(XF4Ĩhq&M@O#Bb*5͢U QZg,He&9"5/פ}c3w)2&\P!D:Z_PW( PBU #cg]6Bops!^ŗM*gѺġD:df~.` a {cFyNi_|i9/a 0>?/Vj'2{+#n*D7Rץ|ŧ%;{#D4:!SQ]!j!++CuV_H/h>7BbH`p 71!*c8uz$/.9<$`=ZQR`cuJEvՍ}"jfUI%~# Ac_^J 1;!(ajm$~LjDUn }?TbP|>p JXqĦ9+nuj@{ 3Cu)\#;ZlzroX>[2$NcP6hOؖtffu*pei"Fj.Or.q̚CM"Z=0pKVAD''H **`& #T:'*()RJn::NV(8YIE8Ő-Z AyoBZ)tU+'䁻[,D#1?G45Jmcԏĉ_}͠ oԊG(}?@9gKT8(p2=jȬ}uk{PcV݈[fwP,RK?쐦 7?VOoDo>5m'tJNG$gO#gi`(\YzO~] H|32'acaW: -5o 6{  _'w[n^13DEYC$s0Fu⫲#ٯȎerIJ͈ҫ>1ҏ&1Ws h]t?>&&lh=G?MjXk&l`ᯬI4Z'QaO;3 <;/]¬`;|A=wun dR7{ 4YJ^q'&@~ kI֟F7A%g\$-S(jP?"EvQ[(VMF{Aj }"{[eM)z- /枳3U-žh5 7OO጑fMX-pFbnj2M!g ):RޓRJE,i騸tkSKN3yuf{ZX8e>NlKO">Ě't{m49Rz՗ ^1Ib][&UH.(D}k:fMaL^W;1Z^HNB|;G=1Z aK' W} jKa&nJ{@)$NC*e+tvUԈH> &*%pP pԼJgeHr9$vstTO7<:P|5dP1.oR%59A>ɛ[*-McjMU eE?rr9ےs./D/tT5`QL}ё dn~!,j#K.f Oh&t\2Qkhf$A1w?ƶU7d]6>vNDF{ {D5D%*CTtCpS Y$Xj֒pD.FHn 5v"N@g2s*W$z=awwbY70: {U-ܔJ@ Pyi toXח1:P|1vh*!%rxuzÂ`KMmR#qzW^C7 1|cܲPI#Q^KQ̃6먶|MvN# `d]~[LH^\ܫ ^{6 +k&5E:6e8])bonJD]Mr20+zaq fM'FK!%!zGg6C{RZcAQa'aT5ԾD9/af{a&:fø R G;'`8HEZr{rOYΦP9U/3)Hw+PMNy_VHfw )G'~#E3yc HM KQ7Am vZGpf+V<켆5t7"D 1OCto^xu'HP XD͕h(n xfms`Ce"UA(DB1'oI2(i_|o"ƭ UTj!PP6 Bc4"1:[iGij*gΆgq4_U╈ge*ţe篐 PO[*͈L%N?k*?77 8~LePTK;oZ qs %L3&ڇCߌX7.|u_BM&Ԏ+K9Xh$WBPlǢ;*yCC}X0 0$CdEQKUTږjA\n+W,wC{WOؔ^S.! P.yR&uS*  \ުѯFҒ:EgjCk.Eo"8cKBG<?6LB |]Eə3]ݦ&w[@|c<Mg&XA#\PΝ_yPquHUpz^*"m 7~2Y .fOF^E*c_wYRėTMdf4#o.vm#Fz^{SKBa]J77lZhE]Mjdd=N !_zE?R *kW .PLp8%TG8>֚j|7wIE-0B6xfPiα1 8GIBWՐp̡S2h )]Qh9򑏝gG'>py8o:cb OlSYRCK}N[ը1C3][ =V܀wb@diO> %9 ;h5MuE(1_`Bk6]WZNqb۠zS"rL@w̢y*(Ji.?qiTeP@ u'+h<aTz _`185}0AB-#FbA m(|<~wlDͨTug*MyovN"O(Xk-(U4.Oi(=AI7`iL~*#t-M0dKzUv S@$(}e#kt:f0"sċ+S+! 􏹔80[LGwT# ۧTzSnu*٣'hO !P;ҟHW>p v9nV!cm.ֺp1 ^6ˆ A TW·At C6xܔ|!-\H-Iz^iװK!>צ~$A]0dh1 WHohc%QLx[UTE%_Α{ݣ_VUBy8 G]=ޗuD Ӝhpވ-"Uu"KnXXGuTui՞l ś(MJa_l#W,sI*Lhrͧ-/Ԏ Q 5pWmՉ!/@=*M()Qqr>:%I9ޮS V%x%bZ /"6`_[Aq\FS֛(oS&;i.ѫj m}G 1/IgR{BhSGC⫂Gϳs (޴ OCt?:]Z?"f}04˺Iuh6 C,{'U?&|. O!W?,X_26BH0#q]ىfC!C㐂Y0׸389ps&gcka(|wo!y IDATu`$xF[kE1:>Fǧy MΫ63NF"OGw j #Z88o,Ԧ/u)OѴT23C+op2cWҙ> Q9' T"\R{2,HP]LDoO%E);ҳ 鎇DjD`?;Q3VY}-q.Z&]1C$|ܴS=`.?&Q*钼;2= ŗ8$>5K8f=]x/)}YNJ3o%" Z*#C-=K·2@__9`,E|Q2d8D]ޜTtHULK)W!_:-Μye{ٞHC):!уơJ\MlSއ؛YhکGOУ;!LD#$В?֓ў7I!; d>x u~4ҡǤM>)u)%IL 똻ϜPW$Z'UY?+$ў6=E%teH|LŧO^rM8Y\B⎼cS@[ j #["5?s*>*3ΑI+*/CU(f|"B60W|/a3@$|zR]Я?Bu;3ְ>~Bi 'm4+`PvAYW/d2L}vړiRu3Z*9f|y(t >iv ueoMpuy R-~CM{z-pKڑvA~Eaত%$vDO5t#-9Sm])H{SecpӗHM}KAF'pӧ3+O\OxIYSUGI_!3$xh!\y{({zlC/+K#=x/i˴ :1_NJ #WUhϤPmٜjqvNQM۞t,Kr#Vi?)o6SDBFHW|D:-ûUԡ!s:0> $(FlMImyrL~ߑM{;Ex#U`P(t?a UGʒFpD0ԎEa: Y΁0|"zB|5ďI`Ci*m˙ c 5K4 QМEOS(H@y MbE*#ֶd4c j'cЕCh%a i Jl[-i,՞O*n601rKfN ;ɐʗt:ӂt6&Zaؤ&,c >luT=v#Fvt}d/4뤗|^u8ņP P1 %d  ]{;k[u7kW BXȁO6zNrs}  zs Z^ ӈwS|`?:*zG9JhD /rbnT~%ěq Q04z>BY'u@sSnMl͐~UǛvL,XL:g&Y}oQ r}ތ0B25BN u6lmӲcF/-B5ΨKeZ}.:YE՟c:8'w(A8BVؠv@mfhO{=Ov~Ǥ;Q+0)gl>|_ e: 3 &7>H$Af.c>o\sC0Fs ҀƜB#?S r64Ckuh[:WCn.@H(d&[5 z:K&wEe~}sKtDkN{c0jВH>l`~k * m9oDK#KjB; Rќ9ۧ1/w"O~gf1t;osQ%9+ ~߽ r$Q6:~&8\ ZK Guı 8;?9ڏpH$Y:G@ 0DtGm1Gȹ*[?f?[{ JMΆ;b лb/zpf]ʇ _M@^\pY1ǎLOءVӈj`DxɈpDyA[LM\S9!wgߔש_AI{H@lCea\z5Gn2/䊂׈+oج=ƻM0weCǠ"£6N5`8O]]fVD"͒aߟ>6AGҙ$yP 96M 89m7MzUHD'ʀ5?0tNs.NKwDMj7 {?dPt'"|̥5v)SIÝ<~\uZ'JuxzE381J+{ ƥ{MUEQ5r?cXv™Qt{h ͒yv`[uS TG!qZe/IXP {u<>$8F0oD ?lxʡ|!cGIX6~[oP!Rw(!j#Y3yHG>JM4\eaEQG˸S9qU:%GF4]C U¸I$Ơ"wh(#U?Aa+/ݦ$وHhvĠ,U_TJRw@P}ˠd$c.FTz0C_ZAqZ%qv2TA\a)=7Bwܒ ፈRJhNKhʦ}gw#ݑ$} 71Z ~\qX~2!uAX[l$)2KVQ>I=y8F4l=)+Z *UִFJ+kl]8[O(Lؠ9+ L- p5Aa*AkP;YtkTn϶U <8/~d;Th(es1OKPy`{_Y%!(BbçW/Q;%"vo1bPN_!h\D5Q̯^#(IN~ 0Q֥z<.~R>dZt |dP z}JԦc>SzGz |Q .kɹfWX&EjHwHfvt,P ww5DG#*yфC )\Ph=7S14C+/ؗ<_w1uʿ&sh1@C >rpkOСNz͠%t̓ķ~Oc]!+*>cuCe5,'IgB!ԡw; OWiSkď7:zS)4ߣ.t,&C_q;1:=m;I9E= Gc+M;nZ o``}㇟ҙb&e,$sY! N.\Qo&/iA mEԸb?s};+Bnl6SGhY1cصc1^Dxc=Y[ؚ]YXu[jnvl6I$H@uWf O "Pf}p˵X?j|yddkl6K<|^őE]>ٌΠN'?~ӳt$tߪ =ZOϑYըjMf?):#kg?G˷J5¬DK4$Tl"YBS?S#]{uOdb D(j2b諆~US'<1w՝QrwUy*t3(e_zE\H2߽:U2i`N{<<Ů?q-B_1n@im$-%g<|EsMImj4&yfcB2:қ0Np% ٓɭKxU?bk45$=>Gt fS==̒O;coq&f83PQ[N^e<1w5dGE6H< HJQ:C1rQBo IIPc.n=adgİ^J!A,H黇uŁy8I;&{풊^ś< u^蜏k(-;YX0b4eܙMŗ}!6AuFGu , koWa$2{&%`P™P(݀b_PIdZC{'?sZ'UvVj >Ws.ĚBTI408rbjdaϺ8?Ҫi )A$T|0 UemV4ʱ"+N]B9'c- OsO5|̞$JmS*R~+lJܪ?ا[cc]X(5x*1t bY1aI 1F]̦1D$~6V(.P]aT2Fܽ31) ׳!CDSWwMcol-JJcψ _! )mÞ\ER)N <'SFu9ٓI"N&U%֋TNwi2vťI< %d7/rDW#J%u"tmy!I]9ګ0#Ђ\){e ˜'IApB|GѧQz̞o>CP<-STֶD}HE>a4&(@$𮗯{<[bb6%2fH3 <Ŀ= T˨3ˆ6,/V˵hMR IDATl >ΰ*w%-1'vDuIӗ}: "D-FHknr 2{.K.3/VDP4<=~FI|"!{2ۍ_>ܲhc[wSF+6#`Sxɥzʺ߰| |GwWL xNBW#ܙ$:^Yß)z>@aIaUUas]Uh=$9ž{Z1FQbR2 gͣJq )XS)iSd,wkL'HvLEnyZ=ѹ_ :b Rc1‚NÏrYHYwi #jTOJwU=!DM|a\tX'޼jJF@{I;JV,*=ES3:2su[v]Fj"+'otRz .+1s;?_5FL~#!UE.UE\M*9b6éf;&edaZo5yq)UDN?As 0P0 M7b$=8ٍCȝ#b#WD[,V)oJ(wLjؗ7N w*)}J>>;&U~I})corݟ:Fn#Wi8F7Ay& AcMgljSߔ t!hk14ڽ,F2`V JW"C;J ^5A)G6(2?@zmTaǨ Ve֕s]O Myyxދ#|l"a"%is#nPWdLDٔcOoXd6Urhm9te#j; $m4ZwwF95 *:nneH_z_ щ3Olsrd2N'"r,<:;(\Z}NU#(]0/ਘ-^BgHH/·uڄa%-fa+{>mBo?4d&D4mfD3<AdHǡ)-O{?j ;-䶆nYFWd+&?p$sA gRT->rj3|πۼMN*}fy$AVlc23ڢr;rJc%[uqd8W:nQ].2SgW0\[at}F^WO''a<ȸecX[tu\EEc,;E +d5ΞZc|͞c%*Ss2R@#R0<֔,Ĵඕdǚ\oO,{Р1>!X9 #}ΎmأX83C1[lqYq_Z| {L;ی|LDg9);l]0g7ŃBc4cmJ7Ql]g839$n/(C"<aYn## 6q5TR=E> ,v-"$|t W q&d2V yu#_r_45[q%P(ޒ]VJ&.W)NwQ̘r̎BycfoK~`C숙|fPs,}|\<ߦsLuP eB^Xh˄y1bM1Yd2Pb_4Rah6Z1ef>]D+ ADR=NhMLN7Y*2̲l2Ct'MmSUX UԞLO!)\2bbVhjLQ|B\:K&Ùڅs ڡw*}K-bkP 0sJLع];|lXu\j2Fy# TRH] gR{@XG$#Q ë%frm6zELG+B/4#@GjŘLpfHap3 M_Bu8ÌBBDŽdREfDC.n/ _w;wr+xO,`taٔZd̐Ĩxc1@#Sexqﴇd4ߓARSXAnKe8#OArž. S'U)}6P`o;a`7_dhR(\0i>z®)CMe4.l'c1yCTvE ށ0D.\jBMTrDL#wr )5U.$:tNdw$o_nB#1S]!/a c*J(~AQ4❘x)2PDJDglM2Դh&ȒJ$Devu}pJoAc D]NLΫcL|GeCk &e>0 a9a+RUIwlIT/9ttqDxTQIڟB5(nH|o:}:#c2c2+ IΒB)\Bj&~fcyܺU[{9!4LI{5:'$&;4N82g_G$&/ZO(VD2UdOfࣽukĺDVs q½5f }=c~uݟ:F* NW,;W<=EBq%/( 1V _hKtϖe2z?>ܣpي:&ќOx#iWNBup3RGӛ|e6hCH5g!>I5'٥hL%, F1Op_?HB̞L00qt "U&yf_^~ c;lt} S|)atBlA96G:?9Wfγ:Se!%́O0 W}Ů,Af]1 ~"AqYL";A[5:Ӵ"Y=tGt V})0RWpĴoeHwLBvXnr]&pT|_#*:y|45uJˎ'qTAoePe͑](%L% ,) b!R$!9 o5MN$G눺{M&~"YgԾpY %"3ߣh a-#>#h& c@$1QbUΘP:m#%NL,Srk"{2<֪5D.tM4mZ=na/Lkb3/v1M4vQ=E,r̞L il&Mf쵷gtf'jNԊ"7:cq&A;:R5eXEz_[; +82Bnbm)rfn@k"{nrH4ٗ^>Tl\nW# lDس<~(!Zi;MצzQ9Ʌ蔘_X^व͚_aUX,<{eHf:%Sս)Qs-̄8]lJHL۱"jfH^[fM1WA4l_H)Ʉ뢢hyWT%X)7ב"0o?yћOgj[B{ʢo E_ B}h| {Olp{c4]|wF@Q"qDk4JqI:{9ttQ sO9a6׵/~_WbꟺI)h]+*=Cw^#d1 ]-")k00B5EFbbmB8Y(v%|h́Y_!^g]5$wjۍskaUAMP|"*~A!eg'θVJY"+yJ _csP0|~ w~k 'SR4ޟTq(^S&7=ѿj P$_/s_`{L;jwMMuL-D^S(O]Dw߭dt_8{5WhNk$[䮊kXT U>sD3BL^ ̃:R"kFw1z5 X2Wt&^e+$hFH!n=!/#B u j TGDI׉-W:z]DUދ(^#9[ZW!/ꩀd#xS7gXQa #qF `m @!b4%a=f, l-u rtXQcíd6\;> jH^G@kGkjWo_a0%1*嘉ل?Xk*;O­}2RMezՑ1 *a^GkjZF}뷈dzG/Zʨռr ml R^chʯ_xQԶԿ!Q R=Il[pnyD=yXxC0T_"D6Ιc߾BzǦDv`NԆ} J8fMA 1A'KCN8V=($j-{bGJ}T)^~U ψiYT]x-jݢLhh@ԭ]Vq:g r)ǯ SY68xҢ*ћpcBNdR} 0߸H'6$(2I%0 >zly,Q{'B R o6I&i2/m$NJsDLd5 C1BcgRVuK;(Ԕ4/PPU!Y`;NI^W;ƛ&YL4G03P;*!y71)D쒤2<(!qW F@{P$j'}F!_3ПDa C$Q6AL52 88!&R,ӫJV/Pe#`73(5q'$m ]þ[%f4R@$Q~ŅMPNp_-Sj 2/O Hd,@+ѡ_2tFM";J`lnT/F6e&^N |$hahI]{Wn)"(>0'iJW&bZ?4}GCJd7%)P( 55z"$_A$I.f)YVf/ Q̘c9 pfmoPд-RnHW։]|!]t3tqoS6hN*mZunqZO%L~U,.{8Y}:d1"ZdkS!,òP/o{d?3B+}!GTHˌUEco^í +o.AtU qedȯ?CgkīYfY[:߾T3xאUP }#C_5+>e3=z& { 8o\5Jx`~բ}LyN&4eNQHVYӢ')?} ɞ#dMɯuBp`ޓu~J*KL~n%ʷ"⬎-RĝaQЛ3ɯGfudF s2AAfmKTȑPzQnE Pjv%$.xeUc3%Kɯn&diru‚F3 :`}2玑,L]nd* /]?3;>҅IR/OWh}h Nti>VƭKnX󢮭V( CV*Z 0Adz1xQV2ER")*iu~VN([g}'Ft M71G IDAT) y yra5"Fz_ew^IK\s_?URe&Tb}2bC 2br 1TUM%*%'$WoȄ)AGgP3(1; $ _Xc8S$4)Hg] c"KwhkI܅ NQF̗g<*-YTAo%d7uZ!Qd&t("RTb}RR涁HԮx +*c/99RA)"Q~Yb01||Z611'!`v/p c_e+Cz :s!7T:n䒄ר}U?#L#WGܤ[إK#8"yR+ui>1::t ϟ!? Uj_Kt8ÊJ/"6%F_h>SNnċxT. NmĤ)t_bDcϞrY1%b kb |<;C7BwEwP*F6HrB z?Advh3ZCl8Pi<&&jGAȜbB5 zŔ*k{Pxw>$+ƶF]A7`lk3+6* zGL +7<RRj4->2d  ZYݞPB5Luuv[/]ML~n؄N&[lEo^T>)*Z,B[pn;Gy9Lb*V"*՘P%wG@ >|6Hcu*rV_9%Y]1 'j kP}=h*L~mEи"TsCO#{M\n|pV}gfSD^D{EngR|Ѥ?B$6u6~ 3CHu'BzSm1%)<7R.x`tR|Mb@A ֭'Ga|⃊%xGHGWE!51ȩ\j[O0ɯuQ!N/RËW$-}7EQd kE(&Kjs]>Z'Ӱ|H"!* ˻5JӰsB~Ki(df%}/Y_ޏA$+jsI$AjG8 jog=Q\ѩ6!A+ӰI" ׸D7Hdf"ZW/ 7YGU+<9sk#u5fXM5Gde$Q!wHի! c¾( IǯtRbr>_ vșw#ϋ>5"6<w&ʮڤٿj:BxTS[_38&S_ܛbXOhH-Q'9 302GUHX$fB댜<jWRVMxXQ|02K_{d+C=S@~b8΋{ .Ԏ:2ăI6F}JR TMM`phF0 rY5aa)]ІqbVȝV>q @dEڪn@o>#gxT,̞7Zd/ WI :"y2k?VXճ}"Ri kBu}5&c7J"A@I*rpV9T%Au}q";I(#Y0=kKT k:eV+䁂?~d/B󴎽%ٓ,Կ-*27AVMP5>48*ἇ1/o"oG"֖AdDSgQe3OQ`?7Ƭ*GλhCXnMc[W+z`m8GK҅׏~/@{I#߾Bd E; ٍ^OTU )y=MxCp&5CT]E{*^!c󆸎ځKK |TO>vzPE1FP_9Z3WB=~ { ՈM?#p&g,xw^CRjhoOuW*`jF9!E;jz9Rߑu(#Urd|0B=~VWɭ(d$A?t-+oevQhgB0&Arꥄ#Y5-_==&VEӰ&4 {z#]x*K#Püp/;4c&2P̓T֞γ zWT)lLfO\H UAVt6~bnR,N|)ʵDnU%\LCSB ANa'>y {scx #ĭ6Q)N]8ZgbgijK瘨)V$s{0BDJlJtu=O #W[bOKtU3zypXPX ё]H@~}}X&#RYa|߾f )(pyFK8bgn G!#^5uF/B] +D=?BoޤCPq'2SC"I&sG/$,|6`"`jhąWQ{ =РpMh4few׻/{o%y޻׾W/UhbHI,ZFeyy3}";9O8f87yv]lɒ,iLI4 HKoms}]n}%Q4TZU{&9iMBY倭zoԻqziGid>@zIoDnC"*9%?#-ĉC.݇ʌ}y|n / Twf6'?셷C\{n`6)ACx7 *\pc07JavH>Vh*FqF1tR2UzКj -!vNNԵ '+-C."{ԾBk.ay 5@J[-TN%5bmteײ(tOL AƈF1fS ҂3OOFbl<ҝsH7f]TP=[aȝ7=bm !$U }D[\\U[؂FO*$T*(u?*P|.ȩk$ { lN EOp,9۴Ʀ=+eSN#;~ߐ Lk֧~:$igL(Q(.B Zw2fu j4^L\PIҩ(F`B$[gqNoՂlL]G|%ΞX& d ײ`;?ɌլMB}=B"7nǨi& 5?[d(>*iJJVI-h=/.{XWi#] H]oҞКhX5AޔoXY}|֋l !N\EG_--,Ч8BdMhCt]?8M$8IV 2+2R$z9f]JBp?.8ƬC|-DcuE7.P(j[wFf7RMs^:%C___tN 9h(`吰eF =-췄hMyyFkcyJ/zJ+k4%=SU;h?R='}oBnAMqh}?d`*,L*h7C'6[tOV|5~x/1wr=YՍ¹vVm]7vN%}CU wU~k1 I4[aS YQJiGk/ө名wlPw|j*쿻F=G2/2d6$D/->aW;u  JE7/٧{fk$ Q62)*hz|S!ҘUAF>[.k͐*ިB9'A2ou6G'1.-`5<Jt&b!m95ˋȥR&z]xYl't xIR iNnYY/H@ b;qM::jh67\7.3| {8BoxGt[;j:}5ÈО*㄃͏LieB8F86ГEvz:_W6Ԯ`/]V(F[ "C-њY ^,eevH"+*B&Ic΢pEϼDe&@*Շ ԎIUwv0t&Atǧ8'ʔݟ{MAJ!R oȶaW\YaPAsl}l=)!vK]QE3st2~ @*;~eD U`OLhvH^ ĪKd[d225bsXp-:zWyV>]OF)XXP9]wp:kk޽PRI`c>B檊u6Z7? 1uЛɢ:!g d5x8n Izͥ=rܛU5zS.C6T0]UIqF]OZ js^䤩6/iV# Kh'gd5gxhH*\]pS>_R"r&y!Ȏ$&̪̘Ġx1+@Jh%c_Ë}lGkReP%uKa}8 1Ъ^*uK ܔ|bKh7QKKKtQ΅]%zPC(XU!)|1͐msS**-3}x Pf,Ceћ<%^NY!vWc>|~x[Y4X%J66qY-?uR%Rta Zj@AJǾF&֣ӵ&'ZG>T4GtЫCiABe2WvڻߐĂB+R=X` bZ~!.e~1<]*6Jì*F;,(c4Bm1TQVrn;]3 %XYjФSC |(IUʩYq%&hM* .*n]ܯv]S5 [mev:'K֓ydI=L+^UfU -5SN3- hn@o/({jgKl%)K{vSpέEٽ^ƾ鋨;-ZAgԥD7B6/" S$aܔ*wTTK)T[f ٰet -]ڿ:הd&!^Σ>Y9-V(\$Nȼ%Mz3 &pGeCOAu{F^j|dK&{~=gbVU^{ C]XEf|'+tGD{:O#Hy=ۡ?$;}M֪\'oJ 5ZӂȖ| *ήj ]gZ*&v+ՐZ`6B oyƧ0zWw3}vAJkT}2g% BqCt=WI?o#NWW>o&uB;Fs5nQMMBe7 Є$+EV75s0 t5nAos/x!'d9x{_KK{Ts&P@!߾}Hڃɽ!x*ڷ_÷zPkW^$;Ц&MI3TC";!W%Oǒya*ס9?ڔr}C+;Q} z?taV "\7E]Ŀv#<DS󒺽5lUs#QFݒ]2wM;/W{__R>vNYzò@ijw,?%3ֈ:t5/U^&[U냡$vV#ЪhTe}KOd-֤JMܷW`bloO7x)O|E%*p2>Ԑ7nҜ/x=<9`/_.\"{%c1ζ*>w^?d;)鍆lYAX5>Ut=F_rYWgwt!{Yxd>U-}ﬤ&1ھgh<6 `<}Qvkuq@t67r, rp2 &٫-~tZ? [Ɵ]!n[8(C(>$m.Do'$Q_'П77p=W~@kJV$KpSKo c-[QedKDֻOu(FasGI Imğ1n⿔!eݣv*1֥WNvU:>Cw#fc R c6^DZ\K/4 G SnW9ViޖHHm/m;M@p|Rrgcdl}d7BC^t*Z[% Q HvKcFnlޟddkoFct'LXe)k>> 0ptBXqZ4(D3}\Wc'.g* ]07X7u}u7C&CR'Ɖ.ԩ>BZ72B; 5!\:W|p#R]d+xBe̺OYN bpbBf'0zN|I^_jSD4Zc=gߝG6) ˈ "5yͬpc*EtwK\9 =VDQF^Iv 2f$+iB2R;gj3Mx F{XL#Qs4YFo+:&"h}ܵސJt3S^A{(Z i `@eR&Tq*.+ #ѿu|OL;eQߠy<@\טؚB2eZHX >=_Gt5E؛&JICujg&\W>Y$(7L0T9sY IDATUH`](f+P:[CXliT<݃= qٓ;n  .b 'R=*rQ'\S]韽@$Uyr.JWC21?^8:3: BHEB0VQ)Il{t&\Clݨ'yoX 5}r/oZ3v~0pT П. :fvQ9qc!JdBkњb &3s>a$WZx)5_ޘRztBU0M|@'̸|n 73vX0q,Mt$(@~{,rGSA\0w*Z_@ P O$ch"Z㿿@L^s | 706cbjRr Uokf}#m̋FH暂YWu|xk[n1)]6Qqz_ MuTy4$ A T3:Xyd]X{.îIYCsEgLΜIt]%qV6tėA< E0\/nzƣ_\>nB!yG5rW:VX{mМI, h=00>(a4I䳈Nj8F#EtT/#!ڧ3%'G*$5R/38X&zi`ja!k(CZx kUC 5u>_ ZDӟNa$j7 Fo_ߐ. AطQ1E}. a-g%iV!/=W tԝ!M}_~eb]GT+(}[Q_Vƍ&T܂O1>I{B:qHRܶ 5t:#Ei$]4J/X}F"!FSНNӘP]8G G5J-0)y>1! wį.bBo$_YdC}NF%)Wf]hIBu6ȤP4MK"ȫӣ^]a^Q!u2\S;[`mv#wE`2J?C+EvI68,ET$ϷA??'f˜<>p|D&|5{Oáeb6h| (z~ސ yrKxsF' ,'g$3r}Q)!ΪyA,P=EaI_}j)m^WI[qvmd+OT)Wi wҨ6 wS-zq^[P۞ It|7"(} 15Ak5E5B.фͦ.p*cpWLo(4^ ĕvTV[rk<-A! 5y} k M'lvN$ ID{?֡QiPɟHlXn3k[!CLj{W3w;L9 A=my "o^cyJdM1 unQ{TgjzZ u 4 r)]oἑɄޔAN`(uNav3ô*v.QIݶQ}K$?8R3DvM9l U]ξnP*qƧ 3*UFDFb,F+h(}Dã7#Sm&Gvo0W̄is]wHU`5[hK&>XOfR / HNk_?O]?:*7%&>܄C9挂'ѷt3P=S(z*oCI&pSqܦEl`%N2t+LEwČ!@ƙ.[^ I(ۄmAš̀ސ6b3T":vAJ_MėOL+*^kQ=n_t?Y8VǿBqTfX3-Xj& ab,868F⾠5{3ipqcOŊU kGx>^Ġ{@5g#l9[- M5>_}(KO"uh ̕6it*:ސ vQ_ye:a] |S 0 E*^yld6x$Tp?$54m貤|CKدf)?(c]*[D,c+ \|MqGɸ+:N.9 c ı;'(MJz\0-+|47F4V,Kf_Puܦv4fz^\EkF,uAlKlKIdUpl@w6K第\+'8v]}AJ7Dzaڄ%걀}bK]xkc0.N|bF5u E`I\{U;|gƜBs䘴`dѻBƆ!ڼFM}UP0(JX*`kCs7a[ᓸA|1R=DƁ8NJ߸nhbmXO_X}0K2jD|_"~,"ۻ i9quk+W7i=^!NFb EC , ;?w{&3kXVeam/:nl+s{VyCDQ(-"_@22?&գ!Q?жbH:Qԙa$.rxn2HЯ9Rv|Ω/t>i(빲JL:P?c x]K{=j(RwCAHO_!pѥ6fҞI]A1"Q-<"t2p=?|PsLsu&c 0`iBg"7ut|P`:AX{Ԏ+>orG7h.Лqet)#1Gʴt0fWH-ZHYj. ]Ϫ2&k>[S%D\M#Q<'m65AdLcJ!MyhΑ4ͳcW=VE"w"Bhƈ-_>^fn1ܘ*c_^f0=RstΔn!_1r׾kqO"^}:=7Bk" mn RϾMK ļ\B=8ǠWyd1H(D6lUi|[uՖe_oJɁSڞ% ;"TCC;0U5%)|),}vWm!U%n"^ hWtr}ƼOPrLaBטEܢhp̣p>Q'&x%J/`6dOt`D,2X/ hrIJO0 AS݂q5AƮMIBj}27fH6lo> _rQmAZbƿ9k"44l܃pMkjoZ)sScq8:;c<4] Y[]|5PC&25Ʋ f<38Y8Sƿ-H+d |AnHP_v*{ʯ_e-ܢʻ?s}}'y֣;N;=Ǜ{YU \Q)O}|WիE,&G|G|R{V3͖`)pl(E/gw5z_EʒLI~`$R'9[a8Ʒl>5>_LϬrXPj/S9boXXK:.OD1ݒV.ޠgpjץݪI ]cJ}?u'`ܲX@wTޓ; 4ɾ6lvzW5h?sV /2^RIkubO2tIo)^4h sEuA3[e"S2U^Ux`bMޓmC24]r}7=G߳k 9Y<=IV0}@VNע$ ooYgAu9ڵT [ȳeGޏ8jq)hyOZUiCִUѫQmPz߃,ebO˪dCm:?Fu$o8$)\ ~ǝgz/HݑX}ߒ) m27J_Kdn h)xrj}+n=G ҡ_9Ǎ}{/\_: R!ΨKs&BnfuQOiWK PK [fbiY>CzE D^) z*CQ{_~6zbO;D512OO6!Cr`9gK,z}o׺ɜ`Y(^(c PN%P@bu"qKg̦IK|JϑKfUƿ%-,N_ r̕:є@3dUenIu*gKW,ti ]tI_ّPM,e>Қi R!q! ?3MA{*@@&QKO?%ԮGx* Wɼmu’.yn +U'5 w ƺC+R;Y@k:6ƌJs&UsbHu Sg `:lˋ(h}YAqgozx2I j:bƍK({OHiN\_>˘&+Xt~!)c,j<67nJ{$ u7ny7;0x0SckG r"2V=ќmnR;P=92 M mj쓵r \j|/DCRR/ Q=GMYuv~*~0K8C(Xj!jgyr$﩯g(ZHcFZǏZp&uÍCo薬kf32v 莨R0ۮ+?47IcV8*n\[#^$ꊴh] ]Ohj PCr=>bI-@ -*Ft΅h3(Or9ܣ,&?Ot ghq+6Y՟:Lsp.ϝ#u'>kYO!d7}~W]F_ўh7.=״쐑b} r  tCy-~0KB瘴 O޿ߍZ5G89HV_So]}"Flmz,(^>Az}sKf4Zf#28hDw:vk XD)9B]!bG5cW{D/- "UXGk&hlEim4'uh@C!풁(lK{olЮe'?Boa: _xG{T 7Y`]гTƞ hHjX$TM$`Ul_F#)9[I}ئN* 8mx&/e:u;"[nG 8Cۂ<mA a'y ?esC͓̚Kعc dJ'Qzxk 4pvJw 5D]=NOv8>•7aa]рCxtO)dzzlH=o-KشȎSQZ<[h?GX&p=\* L(U { Ҝ,Iއ = j}14ۧ g 4XWVϠ&#Ij}f:;x{5 G7>;NF9DcQF_Y2CHXQs zQ!ZQ0>%!wc*i3|&N}IM'&<tkefRžԏ(#$oSqm_N QH-"&[ [|̾&!vv#1Ӥ${EcJNF~v"VC)C'79[Eykg7+S7єcˈS"g> :*"]gIN$`xK}{N m@Q;-IXTVQm(B +![!E#10u:~)d:%*WTA,`^9`'h3=%-P.tCdwo#u'bh]f xPn'pMwGIz'Ztm Eg"ΘBNc+aI>k;?dt|e[3Y9 u|d' n"$0q >Z&( Vϥ IDATޛHwz߹{č=2"2r_jڗޛ܆4IQ93I4F21<1hlBKmh!(qHiM4쵪%+++_?ͻ|)2U=sņB{x5;kJ]}lH(Mr/7 0{ɿFh2uGV u 06-Պ~e8=]މbm:K!a"$&_u:Lj DDd!($1v{hhGb~`@"Yu@l }Ř`pzb3c :@acdZ*Pg7shOGG}БJ6:TqN͒ys颽q8fjެ_џwqϑZq{sg=}8fEu:SS&&8~FO\Ո|Q5DKբve΢ \BכDgƿxӳI#'R a$5;ΩYF%?vR Jrse2$bJo+J-Gr~O{G]ʐˤ[4)^~ϖq*X*4"OˎДWQkSۯf=Ky@e0!]%܈։=$f^IHm U` {e4[:u}7-rū(NxYs; X o`Uv@4Ijt /'0"7by. ٕ}nENΣ: ? Sw}:6$9v|lh@Nw*HS<㕿oqۋx F9si*f1D} з?AF']G0U7e`B K=?P"(R/9ҽg6jƧӵI_6d1Q>ErKE,Aꎆ:/}BO%Us] OScj@TDc6;=9 )36ͤGM&Y :yV IǍ2ke|HI3j4 %EDZRzB\k)̾8þCSd CI5#B0|2//~6#Ѧ UIY tHD*W&:)e|AAՉ )=Ex>3gBώ;f.,6 5JJMF'g0>N`T!gcO ]V+iʼnM@4s7_!4.FephaEJ!]؈L¡e[?2lQiӚf:LHyTTPckLmֱ`JpcII⿓T+# Vi59 =]ƾ>A'ZW%ih3Hx5!ޕS!fs5hhFH,fx\ -nDe,^'Ċ*UPɈ \ ԎTdHuHk<H51fDz5EnM$hlgѬ~ػ c J138lN7 \0H6E40:/%X١y/Oh }bx[KGNd>;gK$ѭSiV{y"]p+VߦuH2PMDr)'[ll?',Y7ɚ1̑:&sc^LoF'{B`%%Nq&ZWĊB0\p}DCW X]#p y!Px\y}$@9N{ N1&wKhD=pu@ep'V,AWc@_XMrd; t }IgBhAc %\)w;@E(cFgA"BbbG{ϝOe84VKfMW]>`=I-l?n" h6 M4Np }w]j*T$h<$Gf?'щA)*Īh {'D BSPyNq[#E$w"„ V̌~BW T{\@YydĈѶEJ*E4GxY?3=IԺ\cdfx &^BU-ĩ&]N(1F)wn< X@E{@s uZd ,C4)jlc[Sշf-MY!extb\i-z)dg?uTzr )=}wbGz4 7'zܾ= ZG_gom&os=2 [I1=b+N3yh#3Ld}LT"ٝN)*u*vI/JuԊ=NXu'< <4[!U TAht<찺R:'\Mu48:A83ED1x>xZ#$f0'CZ8rx\4eؖ_ ϧP|?Q|x˰c{G+L~CgӨ= <Gvi3-n(|hrJDpș䈾oҷUR: *1z}İa4R6(7`0e1K&uh >nQ5b&.F-U;S& ;$E?7{惬zθdQ=Iꢉt0VPhP{H!: -\XL4hlpz&-|;Ow!N8b06ޑP±Q}変술tRM&; ht*g2$L5;IFI/\YӤH;G}Wgt |]0pMgk|L=ўWȿjį&0hp>F,6: D[oFIu"1jDzIc1I΢`﷨?&ԑ%|2?a4NF=4FK•TWɰ!7p>$0Z#Wq<6FK}u ]ۓ`ۻ$w}:Ka"s`Qo, Z}*c S*}F]ÝszI^oRdƴ'+ͺk"aU!4Tk.te ʜpL */x}5PkqThXK7Px&yaU%tU e" l#¹qZGd_ jOK#z4'цrIĪ2rm:-2T|UFܼ4?4}bOF)f`o8(a6IwN:CKnFBİ B>iӟi4Yh|z-~_P—jhOxIĮf8D*}Ϭr"ڵXxޡyTPO S]%̛&MNl~rw<|.y7Pz#HT_ngT RbJ7x`>Mv)b5X=Re'A"C\XnѰm}63K z}guuJ􈁮24m;Imh*Ĭk$S)^P.xi͇]ȜJajRvc]ETVZC:b̢C|'EZv AJ@lJWn<ГkjR&+m'MPɐ~Z"Τ{CS1~I]ނё3}laEv잲H]9:CBf8uUN"pjއ87#K[m4h#)v2 F( wAVjHaڄ "`HjǸ5X,ȜA G1e> dhyIcՊR*]$P]!5d%UtԐ#n1ª ::Y}qePRQc;i 4nr z3`ʌL0Xm&7k?qU PLC&rו.Z$; GʸAמXX&+9:IK)%T5d? r]0 xNqs ]+}LgEPr1!6Rkqbn c1{2rtD sߘP}yX}L3(d2M|k%uR,|s  Noh8Eq-&}OnJǰ$}Jxз4tbU@B6" Ooop`gB]ͮM{S*¶i[*eEVN1Qna!w1.%vPм]|{f1I2%t/39g&=DcR>Nq{+ aiA.$ rXjÕ5C]o7s:~oK\I5v7sL_M1*V~JM/I@!n֥ahl>#vqd٦kbTЈSQo;h}9GEᄌ(kN 'Oy@U%K$IJu4측Fy5PVC;߼v3q?,59 5$UmypmJ [>Q0:{+CY46ZC#4eNb9AuL'X ڣz wIRK{5~-2}LjYO_l3dg@W`!Ԗ6*/8m: wxg -Ej<øeW bіyFL S*JGcpRmNc>  4v$ߖHĈ@fεQD6[+4?@\LਤVeu)X;g9Wj?+8C 0Ew*.?<$0 74R>VC`^Hz={+肬I]brOhN :J_>8=ܢKjLn)$2Z+BBJX e&Gr'fkwPAxHWڑ| 1_m "R1PU ӑms%Pp'NJMc~JJzYKD~5'Q̆K 6~@#3V+ ޭֈ߾DuiAU2;P*kx /}4nQνFOz+{xla 9OoD&btnѐZ%Sj2{x9cj,{TTW2 SɫO1 }h"X^Aۗ6eWT(^ZXIlltg!]ЂU{~'|E(#]lk!1I0g} z>B*bMfՂ'={Xe5o-91;]n1F7}p*.o^Vr_>˨bP2̎9[Rv,\W@ү1i sa׎+Z.ߟ{: ?5~H5= .|AyʉC K3 V{-,ϷczLKF6Ѧ'Ol?b2YP߽g۪_mZshNc P`K۟J ŏQug*;w[m(T'MpM'e=Q]mnÇgKy-N.hh ⱚ1OnиQd-lF{[ Ԟ IDATI2ЙK>n3vSqZZ1a2LkGe b{ŗ2v9$N8Py'@u4n%#'!FONh<i0Z*3 M`ƣp BIi2sa ΥeiF*{=K_Y6S/$6ǧLh@-dDbhTn;ҘN(槦VcmH=S|x_7w |J.#j#n,^]NXKMj~Rs.'0'Q*~ao 4%Q9&2b~,zq'OŌ/T0,hmsNǒtUU}yn8bEVыh'ٟU*R&Oi,~5 aTf6C-.쐎`i^ש.O'#\IJA~l ?!0r2_#5W 4YMZ؃!e$H0M>}}{Mz"$jg D75"#$eRѸ`8"vLD,XOt<Ӫwx)PBO먈Oݱ,X/$2W%wtRg׈(~GQ#:dbZB?lr*T(o=搶.L⽟#ꚨatEdNTdr-[B :͢WK)hɊ'~\VXg9"$ggwt6>nVC\E_J3lQ\*bR_鴊tT?I߳v,Yn^eG!m3 T_Zdo I7!M᫘5>&EV|"C| t  Etĺ LEF%YJl),s>c3.7vw_GT]'[?_F#;Ug븍 Uw!`X+NW.|fG\&IoARq窨[&Y;~:y&_ 몄Oa6T_IFs!Bl(b_TbnQntuaXX2b0RL6$(TFo.fb }n$f+->6jTH^Eyh/MIkdp% $f|ϕsYٹ[$QJ՘ړ(|o { A\ 06 zbW ܥp.!>P.R<'[?'׳N0;p\pE0f0i UI[_eyd+WJi45ɨ2$U͘ Y,|'-'^%:${z13l]Q{* 9H.{ x%F{( f FDjӣMr[鯮S*̾B`5=.N~-ްl_{ :Ռȿp̭>E)XKr(I7]XBLJJ^dX͠&tŔnRAO޽Gob72cD`rSR;83Kt-h|x42˂6Z]'ٿ|/=NId=eFFuڊQ%H9@3pRg'iܒҙO;Qt tƾOafL/)QrDyAF}3(㈫h]aI ,SUT$;^"ՋD SP =:ϟC I!eXE'b6r$6=V6K?FnѠGeP g2O$MqH&)o>} E]zsw3p ]X;h51Eh $w&^l1w2`8!+SvqCy͑Up!"L M ԑBzE)@T3*Īté~_i`cKDhBj3$s&Ԥ{ܣ&DR1z/ i oub@r]xFI ^:'JQ& i-I6:~ V/K& _m<+2âp`_7>1[  zLI:YI.M tL<4^NtN(%K:g|:&2. ,#I AwQVB] bkۏB2%+95zcO!˓g g}̴%=6DG {SA9ՁCR41y$4^H{loNLֈÐӌt p@;cL]3LzѦK! ]BW9^Da2")2WuUe,NlȾxO1;N %nTVPBSd#O uSY ?%VcO8xp"IYNGQDokuMHSld6R$wvvcDFZ~}s &3\ 4 V)| Y:.a~=Fn)7 @gm`g@qR nRZMIhɗnU?#c t8 s1nA^Oi!ߏp*^pJ1?pzR-\NR}0H"oZ.rzrSbv~&Fokr-+*I@-q :_i&uSH_ey7RK*t>+eև]"X i P:0/rrr0hk[h2б*#OI[)^ q*V&|E4H=t(Q[ј 0cSP9=3u1k*.W-G}BU#qB ( zSeBn%ec<9 e$У~`IJ8ABzzOnt45)uUnDg#B7 4 zZ8&othBU%鈅ՎAJHM<은N gt0$eC;c$%$ߟi|,5DQ(EBQk o5k$^Va;n"gIn9xZKD:b!Ota@,zbDEjMIT@q4BgggͨĪt( 0JE%W*4OhVu_^Q~=> B+Jq-H}x'2T+'+tjmHqJ1+DE?#H9~\a4W#/-H \(6 (jDh}ZLX7]l8kJeI݀Q^HZ#Z$:{ϚG+HSD>/F'4Au"/#TwQ*%FSiD ^Z!շ~hwo( a)E<Zvj \vlԨ?ZpTyRrvLPZ`J!R| [C=+5NwdXӌ-Tx=~B4rb̦p*XQ}sHM/=ݯx~n?oDwW'/O ZuJDgnL1{\v)P2:9٨M7m+~+"5tM٤3C>.(FFƮ$z?z~ÀQ%nʤ.ۡuuHpQ RRuFt\t7lĥ~FЖ&_2W UAᐛ:bxn * Q3.~6@L܌n%bIH J0{y5p&Ve$_"JxC| Pٻh^n% 3סadL:@%_mw Uh/ꂚ\ۋЬg NqٻV#Z >c {B?h٢nD gm 9%F91TC$K7e;S (M `C.E=vD􃈉lˀ1]P45/<*;>)#2 \hnHF0HUH-CFDDʨ1aܔԵPVX,OF#l[hK&fZ]dŒلԮb# `L2:3D(Z?b)%)(K.MSЙ匇]3>޸RK.-L((0)%ޜ@ծ#_ =].=HlC] 6é(0OhL< ~AE]J /M)LmKY^5 2C!NV%IJBc]{/Pjp,f1 DFwVݣ &7FZH䳗 m u |Ti~>dm!D$a%p*Eo5Zp5ԁC_i LrEKTKy`uMC6Eq?}b 9!! r7gѻb?nQ;8ܣTSAΒ-)L~7NP7YBFk #"#R2Iݫ=+ӯj{ew֤7dK'!zn$]{*bU2K.柿%0&ܑ>c ݧ"ׯA&\D {qux˴HD0c{\"sX|G(>Do]%=$8U k!]Iv`^q"Do|ᄠ9#'uTKBB'O(G?M1xyQ7ɺb@L,9d/ܣ9u`Pi .P7a8:]$wFY}~:T^$ַjPoY):]D(B|zD!ƣ1 }䓇>.p{m[ 8 M |9]fvٿ9*#Rg3MDQ~3IL\,bQM-$bu21])Z2_gDswwmsu.G#`<Xsi /@Da{"R0&^AlO.3 WTˠ"D>R_PznN|+?uS<ץ̨$귝Snj$#[n 9YO`WYqZ*.uwb-ĸb+DmRwdpktLP6R.Ctw;$= o<8Ci;ؖщȿoJϜ_]Z{w/bt=!"/E.bSҟ3? -r|olW\B"M` K+"`n;$FFג2KJhkD4JRo<,~L߾*(]وa9(FFkĨ>JԦwuyWKBoSCx@H "z*̀J-UPS 2*ET!tIYdEe2pB#R$삂gXu(o>ėT@zr~A"$!uMK# e2у$s/aMGȮUV b2b>k*^G=6NJЌPZ2g(LUYm$Rpy:+ 87+WyK1Ho~rOы#/lH.Kp2b?EiN@=봏(F7n=3tPG?k_Gdޕـc*=1cbeڇ$k2>Ũku 9|xuG!2yG,N4|U R<3]aI":g4BW%|SlZGt|GEmPt t(oQӘBc&8RCb gf|Lkl}8 12IOH~.ɎI̞X}@0f,Q7R?C,W/`6S|~DgD16i$&+?kޖ4U 1rJ۬M;ø¨P|SwLUxCIKG(EFO^6ɩDiz'\҈c$Y5ELߠL k#38%0FDB,5Mc=Ze(R-zc Bo0>d'ߢLJUʿj]P%D ].X&ɼtVAeYkmv:tC7 b _PςT?'1i!"0K fDewlH,g Y/NgɽV- 2^6xQAID YA>b7Du%"#Nn}.Npp(.C2~٣Rs1dF vRȜj20WtP!2  6K%EƮda]#FGN*w>vuT* +}?btuK58d~ gXS ~M%VHb`tG6.2=L>FWsttr$,'RM(BN2jSk*nZ%0d#/->)% 0pic@kbB=pTͫ$`Me1yRjqB>|ދY{$!LST]}&EIlqbPW9yLd֡KI Wps:$r/G$b;WPO+0^62Ua|2N7Ir} &_G0*PhI`)SL7mxDwG ih)qmM0[,aqJ28XNE": տhaX*f%KE&C@(\m( ܔԯ\lL)J^esjH?em8sqZG47CZ#zOWɌ]q321$hI$gLnf/YP:6KjźD="Tҏ9X7i?gw,P FzS!a}A1yD2NN"(d02q5W.xّy[`q" oH $8;އjD>Gr? mc<:ߠ;/n u'}ؚ;JwH o_"k"0mܔޕH_p,+^D !TpzIƿazv*^F }$kv%$glf">jGaX1 a<DPw#A G8yMFsQu3Ӓ8-x^'8٧qZeC.1D*8S=- ꚌJi0\IQoXDq$ w[0ߊ%^cXb8%:7ԦJh_8@)'+6;U 3}>.Œwy` ҙ!Kߧ p%}H,FS\ѐF"%u>Ò0('}I;& da$\sJ G4+_.ɄMB눌]LpmԎ­9M>m1 a6j^ HU"||>[O `D]q/~QzE?4dTm>֔|A13̈́fwVėj.2MjB;K2) kbHa)c: ]7 ` @Pd7&?0!;t?}Բqj ᝘@f3!٫*-Kgdݰ iԮ^B NNf@|빾@7N I.71* Sgѻb{ի=S;9 aURwսu=0v%d8;*K8hj=9!C DCsC&_3C 5io)cwfzhM k#pQRÇWXK8zMZ`/__4&xb>9 aYN1UDSIJBAPlk]̌ꮑzLB_F) P:SgLEP bgd9)pr񿜧7}I E/g! 3>~ɅfwRziQI^& hI,x V_XL ?&cM1a/)KJ8Y5‡+:ЧRAU|HMs =[;&ك{}d/D* ?8M w^""S 5bn,ҕ۴uo_u@%2y 6Y-a&4a_qOz>ʑv'K!_+u /d>'$E-L&Et4v( vN`t" !㦄p?HDJw/ծR)Л(^cl1op3N!q:Nx&Ѿ'$7<:&֤+ fK~L !ꉹRI廆P-݅EkRe4&1{PNb]@V;`$]T0T;"$¬Ou0m?-Ű3}ReDVqJ? ֋MvZ*ow۸ϓ|8Yd_1/#Uu%&~3%X"wUK`D+*c>'gp -M ;'pKgD輻Z 7îѫzWMBh>Aj'|"KI.lD{)jA#FFU;z!nJA>0[ ZmiFxot=XrA ӣ\bP֐}IԮvĨ(Ɛ@4H 5|? -Ch~&+]CU*1jdhC0t(~sT$od~uMCѭR ["KlTUu]"ƈ>DcAv|Z.윔X|܏YneqwZi-|buz?RbjL֚W0F*h67PImdEh0NocC ͏D&cbU$C\ޢP)0 W0%{tO.+Ja f d5əs3un02HP<}F3!?̐x{epzodz:nN(!B}lGRpK_hـzDy@72qN9#(ċCn%0Lh=M5('{ٚpxan Ƽܹ5=b͇f:t CCڿH2}d (4xhb I6k^_=\ErTIht|Y^K2LpRIp,z(٢<yw/|.u:E=QtTcGR_.P8 M6h x҈Hʕ&F|g/XS!Dy}7xFLJ=GdiddgLkй4ğȴ)=j#$ܔ!)X8R':^/ xye٣ !N Y >ozҟO1#]ggFb'Y2.A/aJ8c><@!_b GJ8\ݠp{D)fNor6yk_QM[Ok.+? ]KԙH9=.]Z@V+ֱDMM*I鐙|Y̅e"2Dj.OOI?bp]ɀ(HЉ2d^= 7|~ 5MLLC^h~&P, h&8$zxozG;`&D#lTI{K1y*y) p"vEoRTI\fr~݈%y2vq7אr%D˄2$.p Pdb>s7QM P_qZ1P8{(|Cg8.c$l۠(] i+0I.vQLjn磋w|J4fTJ- WHϵ8Z]gjv;^c6>TPqOE**JlO;e)<Qߤ&M|_r~(T0+JϿA ^& N2]m2hDC@ÕM_QP\pKװbu2: :)o)l:#EFHJmxI"I|:kHEOVȞ!Jإ ~gFJŏC7bD^ ?>F)ha9DT2q*8B`F8e@QމH? R2ߺ\*Zuw2Oџ\ SvG"ym w:SП㨍v9I\єqr2Y }:sM F:m:d~ j*8mݧ0~sm0YDdBH#BCz҂kMG ]'A'H.D8VHc! ͓1B&<,&3qǒI# "[f'ӛH^x;;}9”V'3D[t?:K瀌?B:۟(3 2^ :OI?l / -mzېLv5% C*O7zt3&"֚iڮgBtBx܌k  V\FSqWCݿUKbbv#\{ N).8tT@ϋ,u(^0 (g0".2xB7oL?!rgID6B0n|t7,)s~%"\5e"؎ =`=VF4jPQ2}x)ނGL#gTp=">2d9"~`XtG^M%vD|qt™1S.і)-ؿ͠3Evpx\1޸CgϗH%U<%? ^\B $R%r/b)bvhAIp'uGc$kTTF~wd)BM$UEu"C3t0cydGw|VM'~"97bXR|ol7#Hx-4__B YbzsBBxEUN@<.P  |+`5FOdpr }BU>V!z>~iEtLi% ]<h`Y]}D|CT}⊃h̥vݏ0COe&q/E֦1z8GCh-V+CbueӵL<_A0Ta 7E"FVɵZ&Kק0ds}:'~HhMV B7Pv3T ]ߔy ]kXCq({?@ Xg8Pl|ǰFSVp&[ rek #wUh:@l2Gh+ +&4AXa*>V!jf[-<ƽ/>U gXI-ɰOiYhd6`Pоc=ڥ)vCmiQb*NFKCOIx :#nF؁T/tuB"fzp}ܝ~5C9dx(dK}Jh/皬m lIR1V :zј[{UgsfC q 2lφ,}60Szw73]LW@D7wI}!r O8"2{c1q}U =7Ros|ztf_I{Q{1/c3%f@{Ewl;Z^åxEv!Hl 6+:+K'qEO?!7=x^A!WfA.*jFx[ĐaA5dme t"'&ua,ߧs*ЯI4?{= 7bw G.^Aہlmcrn~Wm*=v݀}]/Є! =g0 }vw{]ZO0: QLKB2K*ps1ז-am$QlYWpO?ؐP/ٟ͛ id'b4X22mו64+E OmKl>)JLda> 1{~ u:'=zGE-Eڋ ~D|B~qbugиs9ϗPP-!1Em"Gn^Za"s B-Hh/rJq-K䊄W/˺--X=Fh457Ti_%=b` t]#31@/2vc~P?]a\- D]Ǯ /\ #)Բ'npܳBw|XTjY=Ϙ($vNE"Sg4Y«\W6pF CVLgDs`M,wh z_XL&Juy|_آwCS) nYdhW}QPnm&UXx_0}މ0 5EDߕd)xFxO4pګq]\W{ IDAT!.IB˷bʔ`Z;D=e;_" pb.v%DŏI)g'0D`G<PXfy72*!zJur_Co{p6t'ps.]"r|,W;(6QQ!]քsNUf&P޹uJH2~R%C"B:v#hSQ6ne++7yxODC|=tYAW˸Gi&_I,+,:AobJ٧l-uH&tu(\ #(I oܧD %3J'P(AUu|QB]fa22 ߎng͓qBBOAu~clhc{N|OV'ACD}4$&íj(]#O="B'<һi†IJ/3,u[#pT2?|~mcܣa'9rbǙqQn%P,z7:3ŷdi b5NHAuޥ@@A TP(l_%h A2$%98}=v˓4Uv~v;!!q+j2y?1ocqOT|6=,Rãj|/q= #JJQ}"RMzLej jWPB2"邅T^ z*u;Cm(4u{*O$Z8xdj]7!\B 1ֺ}Ed-w'2Ԥf+Mw˴0!ӽU HdsCD^dU#1PmEd,?jNq0)匃,G8s l^D[ͫ;qDc FE<-?(*)!=L wUZYhwX(.n&CY VHӏ*5WP La#ol2 wau@&yn۟ؒƠN}m3|gm$\4~٢_3+6l XS +M46[d}Z͒Q*mlH]$W$He8lW,yK QQ O L/tAsSaH 52$šOZ9~J#I<&E]QR8)i{ !.!}[I.Og0 K!=t s>қ_@%켁}?VZ'YXc2w߻EpI 'AbRƛpqB=BNl>(EFxJ(H pq(LZB-/ٶmy]V&htV?sxϑ*Bv"̔CiBWaKHrGVQ 4Kf8硘b۽$NK%-z] 1Gqy(rw:QoRrLFXWȽddc=zWݔ ={ 2m0h02xLzV] o^P.$FJZ^Jɴ] ľ!?q.0:U!yq2E1ĖG)fhVHf`45%XS)+9AS-OR/%dj cJج?C@(I-o_9^)dn#e  faK0BT4OyD'v}ң~"AǠ"2µLwNa44)r>Xv)Dq4FG\P!ReTQA$ʯ1z2ݘI>QyaA2zO7}Eu;E.soo?cp3I4 YRB9+lwtShCA'O9-b=cl0X4+&pF#܌߱]r|{ۤ7hC!UQ9+ ᤇ5Ok]pEBsG#P`F&auxfݾ{1Ua0iF6 #n^Yt52MU& eg>4=X%"O% 0~ٯ4T7ɣ?Qvi2@M&p;@k)跾 iqFopnN(^Zզy42G8M5m͕#ML C[Q> ZDTf#C|&Ć͓.)Ip%BuYxkIt-$izṷ.՘wN^+%x;6\m^̱. ˗IYM-][)ɯ?LNmT[I,dБ1O}-x*ɘA%Du`#cLcc%+]e/N @#x#KGzDzQ/ UB3FuWe>އc K2(uyh˞T̎qFjs M Xit}US z:Z;"+TJ$TR] r!%A>ڣu/v!ZaIo*{l\g sL$MrhXY5zwx% u\ӹx*iT8>/s>In~VVuUQ A*Bx# :,bpLYJ`ewlER%#:w_E)ƠЗjOoHS~%,%h Jq2$d1]zpbz C1yMM9g5"G+KڕVqoSHEj•=xutό1q^Uiܹ]tڎ&e܍M!ծȈaIuAMڣ2Ih1`[^Z P} uoH/LA?R7@Tki#X_y[H/J--'."q2d]}M(}XH=mOFbUn^FO:Ka5CJg#K^ټG_3%W m G=+/nttV,9}WVbJgcWd^#zO̝jL{ɋJ֧_m Wd?jH1) 9*>j./Q6`ygQ1b*O)t W\'v/t0}^Soj8Q 0*1~!\La$76J~ՔsF'_#$"pT %;rTbK~J{SRR!qVY%m.^.qWjϝ&{'kU?bܴz &+ͭ9=ܧKrM!jL&<%ʑz A23/0&S.SۨjH(۶JJG\RY4ٻr1ڂ P1WI/Ō\vBfھ Vc̀ D?r&ګqD?9Ep6;L~)ْVrY[X >.5OJQ)l]3~HS~ÇnҏUZO$AUlzO I /$yVMHP: +/\!`biHX_?Gnֿ{|w.VBDTKk_}|?w8"i#*!FW6h>}zbvj ܧOK(Ҹ3`nވ}4UdɅty }dQ yjY:S))uT"+mE;5~w_ݹ~љT?9E2;׬`/i)F#C|279SoC ̺'{R p)qf&1[1_յKW/zfT"rЛQP+nV3PV924aߤKmN\"zRru&gTBɵdo2 N.O]x`L!l.cLV -c=+dpO!w+MHJv_;E`)|tZOvI= K:O;Tҥ?Cߏz1ĩu@& N6b/+(7?<`GRe}НǤ_NQ<-K!ths3Xw]F+P Q~@<~jpwhH*Zfd0[1RqRg}=}~3&c] 7/~>gd(,z8H={|"ڕe>8ىL=CUMaM8ϟJP_ }b]%0%T2{B}ͦ=G\SG,A.&D)`n`kgIӉ@~'Ab]!wn$(4if%i[}LZS3̙de?~4"r 3+- 9)o}*f([(|kimmQ_'3٥hװ$@ ddP|/f8ZAY^p-ĉ&7ҝяtQ7uFs@I8{f10(i236Fפ{ b Y}ʠJ]'!"HE(Px{/āM&ߠ!ZL~z~ZbP-=c-d_OMfC_N 26/4SIr_ 9G[s ϱutg}G$ \5O p 4!#Jg#bѐ" W'agr!}ׄPwu,Wa&T Ԧ^8Fmҟ x̔I>oR+s٫_Ufl uOa=wq,?=o/uu;$7L- ){B;;G Skojd_ϧ m;(ۺTpfIG*C0\&?Bv8Aϰ34Rin)2"E+ ݙ^PnS$ښAz%_QhŧƑ2J^VX%$c}R?6B\ä2l`dhktH2f= rl?%`P|M?2{CC}5VQtD!QxӡYT Q2:4A% 0yKN 1 AJ~D&ڶ,ݧm؎2XfJfP][%HO2Oc "S 6C3c|ɦ7wtNxMh p&Doh}(a3I<ݦmi} }[s^S8"b2T+F/u%cP͢>J{Cy:KНc1OHnJ0PlJ_g`Pi5W$hC4P=μEo{ě9A0a5r8ǧTq}[L;ӝj[cw<곲`1):"PRNY}7ߜArOY?Zh>`pLB)L54aone;߷γicUP/Aj`oF4k9AMƂ\faܑ3 [xZ""(| "3m\Q=3AO /;6CThgdc/`*8\=jŀƂ`GRV*+1׶?=Tlg¸E4WAC3Q5ya5Ɛ`z%LPF:.H3 KOFg$fGfU͈-&pIaD=y@㨜Cs#ӓz =`Ztd֗Fw.4ZY"-FfRgl=2AvŤ~\@okπ #C„  =>%|4_C5"?VpF ꏆ}9 0Gxc!:Ef:΁ IDATqPH-8#^&7"ܼFs3 vaL{UG TjMIZ_aɉF4Bz)&u_D )(h Qg.)Rkg]! RxZS1J_%ex*I{Iƴ !@!w3_Vc B;Y"w"`X4T>/ۤVW _cmpv"F#8>uŒi,DLފK*CKFhdo*4K?7$h֬@ % At+M*y3S$uL[c]&(#jMH|x(Qh .ֱ z#27bo)u 'w*HBtN ]~ KfQP, k0~6 VUo !FKeOZ y1TLJS|oaZ'hDMS(PH!OF-_sp-H r߹;&|4]ܶEMj5/$qAbC.kΰIZTGeda(e FGRV!&'tSHًS 7UfcKX͈oZHc1UwI9½> JI_;GB/7o}ݣyPE9!WgX]Ww 0cT]gvaHlά`!w_gp|A"Thy/<w WtgO?9 ݐ~ 96K2{G,at|֟L0Nj?DOg=;Nq('U* * 6JwZ0OWz{D#@5+*OEd 'мI+ zUyȷ4BT̎S+$2Ԟaxb ^F1 BF7&*f*4pT%L^0,ět&64thm;F_z{ N!ޠrmt \FL1!O6|'NU+l>#{I; П$(4I44jد[hT+!P]?3h Y;)D,dL=1vzS KwX7pd,?BoJʀQ*/u:6.T1: YV S cga i .hۚWU:{ "9wxYWtb0.;=Ol ɛ9oltUE w(24 gj T~IuEPQ~޴Q*%T2f]Flx B'6T,_GXk Ui~a'O1b ^0IʱX{:ٖQ]` s6J7`ji.I57_~b}iMrKChՊvp mg D # >y?j*Ï0U.Ire&f/k8yḅ7O0޴-E~A \_U*rj'( mp߮L8Җ1UjOI(К Ŀw3Q#W2wbV0֯F>ݩ?8x#fܕ֭͑,BKꇭGEĺVЪ\Plruf`-$67tD Q`LL諸60\W;ڣ:ҞeOq fo[[ҖS{vb2̺Rws+NAcP?;֗ {SHhsv$#z/^U)Y_N^TXfl%%W4 X&MK(I+a0,Ōg:ٶ|0CeYJYWَ<ߊ@di}AAdE@ - ~J06/ͺ, _ HF2MpD6etڣ6}+gq3沬hk쁣}LeP$WZ@=ޓ`MR Uvr5y av;/kU4h'kY'OzQeL H]\Z7\Ll ϑ ކd?qJZ}8:)㺖Tjo@E"*= R2^h^;`cY9Akw1L!GD((\V(aRO(\Vb44w[11C1cck)r7bWLJ꼅l1kM%:2[@'d'$߻ h߷WU`y_8y͇l&F"ލ-$BM~Yr\(\I԰WfJ<%魨Ƒ m!"eiTaV]i _]f1+\1um߃=5o訴1=uW9oם$0uѿ8YWƝ2'Ff"~Hh AĬkdUn}.%θ8g5"#{Č\hCh ?ƾ&C G" aP"[ڳI6r-r|2jIUc'j ;nc'qOtwY A}p&;: URw{=O"vzZ:zJpe@!eA~Uic[Mlќ\ɿܽOo}=#ͩ B[f'j F(#XGVTVp*0ًM*z Y{Óٟ@g^,D!鐭=Hr=$sUkrНIma)~N^eX ۀ\P1E,/8X56ɛ :=(n|Hm㈌@՜7 /\a䲇|$sM=|lCY k1\gTB~H0W=%ZMHp] J[7Lj5p?Sm{?qj71|HWKd=ޝŪ1x;mľgONa$w"#Hl}W.iKٛF=rHg좿6EVL8[h[>$cZmZѷ{c'I9~s1›%|m9c۾i=?oS_P VH$G "Cjl>DĐkD9gΔ!CuAn khWN\S!Z`z'yScO12բ۠*`dLdji4*T>Pqߗw(|i#%$T욬`ۛ1âBbQgODĂμ-GcBG%f)T?NQ@9x$&wMĞ06?H{L࿿W)?˪{N>alk1fMCX2\]=J_c2 ,/^ -3LRZX{|xS )E$Gl^>blAkB0Ρ/P]19 R 7MOWL2&f`O6ETmqHϰ"YYW@> J*nр줈LBdE)eRXYR$qib ZL*F PY@-H&7FTRr)";>e%ޙauCәP1 J(cM1_ݤP]/7YBuw JƠ -c)|ϹO-xl))Ʊ?c$<,3H195f TbG 8=#@ܢiE5AwZS@Vi}K!>CY3|"N5 ZݠI,IF&ڸi*L{T^!޸/.P:kJ:H=%ܲGBb#Fc]J}͏%#Pa0@HE-(Q]AB`4Il,Io,)G Fa/>1!-*FGgteqTq`5b-({ڻL[UOG*Y ~YC>%T^lI jihh},VBW;CJo_Md)L`\?) CQ:$sK{t 7=3]YF=r/c~V9ܜ̯5=DD=KIa1 SiD۟zL$qIT6J 7AB1+Ro )5(|.S>ګw,w8 ::g>_ʠesۏ}"2ќC4԰ҙ] mvĠ,ׅo/&޾s!#mD;"3-RO$TF/+x(m Pw2wd|K h|Cԡ`PsV:Rp7])Ts}CP8 Xj_7P*O]4pFT޿٢;-t⨸S_`o=:>&c6D 'b~<8#W9:s"*^^;-Qy?hd?{QM7-Wh=^&1v[鿞1k*ŕ|aq/)_bX0Z1}:I%&DўI0tJN޶7!sŭF̠lчUyVF7Q Ct?4IjDQK?n,Jfs^Nb'qc8p nѫ=͕p^x 飤? ?@]^{$_J؛ FDS0u^lUڇr7njehuR1z"{a" HhHd%xFuǏ<ABО["lB9/{r>[D;g}z)@)Yu~"Qs؋: Y d\@|4n[eђ/xrBaત]$+~1`J]û݅n)2o,-Y!9BKd\fo`&=zSo1 Cfo9| vK^źj19@`coz:0Z[ ʧ=HG~Lrez9t"$e.7 G3t8>*h;IC=r!%zRA&MyKP (!TKJH Jg$n[`UAzQ Uƀ Jp71ڂ~(R}!@rHs?7vm kڒp&M|p,&e,Q:逭C>DjDL'ZL/cc[3|R˂BDtgh헛 '^[0Csl`& Iu0 CĢ-t) J\u bB+&N)ec&/pr!r8ymU ySLz>RTO>)}N1f6nV-ُ-!V1Z͠;QI9Q޼Ű_F8:bW fݓn G9W8ѡ9}>xԽia䝕u8  @K2MQHlkȱ=cﮭ zw+1Xٲ5ڱf=c[9% HUwVU޹?F *˯}MoGU_&aDww !6Bu8Rugl;\j٥(M1M?s),mG靖;k|Y\ տGTFc*/l cmm6E S&~6$Ve]y.;+Hs3(b-^mcO `@hiېրN0h,8PeHHSQut Xk1d b>~oC8McbU(z/"DY"5Bx:xi߆Ζ@}q3|&>[J#([]V}dAE#Iq~/ #/;TJLcCY^1֝8.7lr.xp[u梷`Y*ωLqUۀNzg{}׊v/Qcّ̝Qq΀|Wcb?*]B=+!Dő; R`JYn\rWRJ=u؝P͉&iNί[#B)YG$֐m6uYI I,k*)Q)GE-Z{aDb'vL.I4豣;'RE-f;s?h8 C>|sqI^x~ߧjqi$I/nQ34|&qc>}"^#4+> QNoj/8O'"!]ŸV $tf4W|y~.į X|"xYd1dPab-btZ[.B0К[$TGtҤt>`9g"; јĊM 0Fy-Γh=Eyr6XUo)o>kh~֦46e>-ާ#!2 H\6Ik\N*+iѳƃjҧW ȼ`.v=hvcs7WZ*mj=6OHR_:x JWk8Ȋ^Iak/bXHc䎸t|GC6܌;G2[t&Y|1^>FITR6 FڥULxyCޤΌ`U{ >\IA#1jp-A`ё@jhۓmJKl#)F| sM4 kzn_N0Ee0?zdXr.Ғ9eӯC3Z[MŀnQpvk>Z#.Dגdٗ:fқ *eeT=BO_NG4O s MI% #{$BY5sz/8]RU< tNnꨯDB[K("*15I2j$BLB֏43,Kĩ<*귔]6qh@#F җ4:b dbEaXP$Nxˢw$C;oDAlZ}fNc}-'xbb+E?;dwx'"Hbo]֞Q7hq)zS5 K" Kxu7Q4-4Gư,@F1 Ib]Z (xfC[aahgsAg9{4-$'yΦ9,ImnQ 2 A(R*E:n(>)NIxg ]-\9ɐ(Vq1FKb/6NeuQaGTRwz3!nZ ^ l6[lx @tEy%g$TFL,$FdC]]X5bm@vdW&WG2Si[ n䈞i LZG|MPq'h2:%- LQwq b5f\UC c &g2wU#i%1U2*oicMÞO0EGbԤOd FKqcG] >葜.(/cPPH1EnF[yP1(//:{ht Չ5{\d)R°c]XD+U5:ޓ#w+$b]4NpYBU]!^Z&87m/&{kHwV_O7 ҔDpԒD{3ĺHI.}'"%zf y=氾tNᘅ[4Jb $MjD֗O,?=L(}%KK$*:I>{d _EawfkxiPF)r& qjG (h>ͧ'B+b8V&%Lz@ͽh g+ Gfі$iAk?k](qC |hIct`xh>=A ?r9:`gMt@&|Z<{?[yD"d_?of߼AX>0e[`#I?Qz#P P*^>c!${Sf#s]!َ=O0-&)y$2A$)h 䯇8% Xn^ р^ )#b c℅u F+$aC7XPg,Ddw~ԡxdpGBe3C\'IA2M#Cv]aIg0[bT~BYҙ&[',gX,ZE`,rIc*c#޸MW^CraTBt m.dUԈJfCÁZަjˬ\TORyYB4Yl+kU%P!,9 1P%,bDsPrG QCGB1ڮ̈켇ȔGjP(yqbW޶[w5W6٬i]5#S|VHB3hjS`B2'CL-2w#1b$R8JŤ_tG q!?S_iUI-FYpp;&悶jF]‰ MsQWvvto'WDNRVc1 Tb&?w[8'\vT/S|Y% 9DoQ'Z9֙*7DOFLn2wEjL Pm1dF$k dq@VHdLJ ͽ)m7i8RZSIOl6<^* x=ç?+?،ĸ\S|YlV|Sr3О5wС)fC*6hH1o'w4E ɖE]}]Cb VbPE5ҡ1]CGN 폪Ȼ{i @\n3Snq݋\_/8y!*a:[F,sD]V2*P͐J+lu$A傃JT^ 0eF^UqQw՗J6[" ͥX̓鑿*Q=/Os_1*zgʣEu`*qbonz.r`YD m@a8c+QC7'xKِ/n$)z6 Ed;g#pHB)Aە ak{^ُ6Dከ9YXԷ+DqǾt)j_̒09$f A: Yg{#֡FA:mnjeƦK;+ 䶻XsxrHgVBŵ?rx'ӗL2FCĆwR*eX;o}>y&Ə%Vg7Z&WIܸE"oV|Jg7Tۢ3X_'lv,z Ȱ> i쏜)C&64rʽu"e2`Iƶp47JL2?bNӝ)]7w$o8ĪP쏜dXV|Wl&b܎]!*T<ϱ jMluV)BH)5ufC:z/D W^@Elk©* [D?YqRnlR{.@aɸՀϼSC&NA%sAhPbj"nPeԝ57Deg_9 { # M*%D횧 QPn%4[|)ޔ9 ,д jDg>G,(UHOmVLJHXHh  |gp?%̸l{?U#g/YbmvLPȶ օN Pnp;5s ?V׬ qs USIX/tQ7}[F@jQTҵ` A uKѺh?O8m3׊:y-z 6{۲bܻE3p=خXq2~y{ k|u6 ~NzqRɓXE._:< \v__,$I… r{W9} ƥ%YM(o 9@FXko.ۓˊ f+$=#ND GpP>J* P%\Y#LCkYgMՐXFoxʤy*wMr?1eO3HI/qS Pcl( Z"6#fgغ]ܔ HRS"$cyr߱t:-&R`s3F Ŏ2P'$hL[n*O\LD,hq`pAꩨCPQ>Lru!8.r2]&Ɖ&GV՘~TCгd̫ 2~}Cd%F}dwY38\un9HXE(d _XxU~q٧E噾úc ڭ$ )RM#I`|~d~H ,5K$~ͧQ %~%Q47Ov)ư"cHf٠#xp[{WMZ8itM VnVHt&Q,?=%r_X/[5viM˶(d|G?0XXk[,oj #H$}UK%S>՗1XvDy)P?& I*dgLا&čz<5dsʰ깘!ѓt bڀeGeu+V~wQ,wJ)cuN9f2lۋ)@ԠSzQ%wgu}VC]-vAY.k'm3H1G4 :ֲ Ν4}r"csòFjDwF"{;fxУ*$p:Q!),ݭy}ePAYDVԂ@O\3Q{H]BO*'(QZwezOˌc%x{w5n7M"__ƮKd"YfQQP86THT%6PKykF߈> [!vE|LKX0;芷lї+tgdrSlߠw'Gg$4 DC"2cT٭o)$W> LCcU%a=dMZdg;+Ic>3H_/L$ 5g,=(3@œQCN89ilSk4Kř64hĪ-.yBhJe=إ} AR托 a_dxlxODLf+l#1$c(G(=̮6-XQ1Z#MFdH hu(!ŢNF~r$wG%p IbhZx8F#ћiYWI/+:&l=KIJ,DS >^J"t2wCdWf[OxLKER {*Jߺ@H$6BC EX"5dPObO(s &Ӡ8yE@#/tX}Ԡ WQ|<龳`TB+AJeGL*/\(Q!-s~ zCqOaxtB@Jbpy@|6 !7qIjiz E GK !jOaXe ""SGo^X;%cy.2~Ibр9n1͐Pa8"C$D}bٞfـތoU^ YFXc`:`PRJ`)d#V~zޔLzvm6t Ry!xֻ&OOb2f3FFOMLv@`h+2~Z)i2tq*rK 6Ib]&;#lhq>+ .Dq|D%ߺ$d~IpY&zj8 wd ,Dz'Ak 1+!Yٗ 0âs1(ۢDq"GS"2qQz1!Oo%pX{0`P [*qQנݷ(U֞ BMb8b $o%{I&4dG " !ar}7i|`yڟ^tpjs3DŴl+T;gI`:G"Jߝ(VsΡH [pN\Ȟ[BMWwc(B.$T]KػӤ 0 {Byx1o)˼ʕ+,..GlsEO??ͪ;˸:^1bkGV!QRG]Ni.P[(*WWPW>>$wMlo܄(/ci6O$H+KDM8a-A˃^en=? %Q]C(C #v]j{6Y:(v ` ~ʰg n(j -j/W;Z22eE,hAc%z_p#In_ <  X!b4?_s2%9i] 5Pg#Pc߼J7<:9ǣ䖕!dfR8ؤ/yN!-J\Kx1KVk)~gJx%CP3> ^Ekw.|X )6 ,7pLGx$ i9" *&#|H?Qܼ쟻SQrzrmdEx'%z^U ;[ IDATIzQ̆a88? ylt2>kIr_Jh00; af*vRFJ7 &w$W)DWa).D(iW0-Zc.G ,8t)RB6%;)H#eX{IzoLaܨdz +$WR Gyi@GCB$&KAygn"I5 i!A?0 CAOhx]ܾNQYVAYX1m1ǷPo3벻I-ӥ$XL|BM'H3 ;Vk#F{NO&R$!vyϛ]&&v삺jQjn4DdƸ:-1&맒(++地U@u75|Kz MP{ \`{"&>.gg`1Szl.QDŽ%BEѹyzBtt^T]6҆10ug[>o G-1S7]$~!ڵEPf/Գt*+)cS8mL.P%B3CdĒBOx+IrDbIwc () ':dԮ=wi$xE"XH,l , 5Ac>$LtT:D*~_k&J+ɿ:/P|Uf{\! Xu{B!{{cHJh2cnү[좹Nv>$sȱщNlvBAE+G.X_:G99Go\GsU:L"E54c*DzR3<>Sqsc!N b32Q,6!Tua~v~b{:"b/*! AK3%dH`t.ۗ#}o"k֍-TY2{G{_kI&)T Az&#=2g&=2E\ǛܯMPޣW8Ř'u5o||g,E - S}aR\q%6W_`1{hP{`\flA(1gcΦEJW@ѯ,hesa(55aT*?6 ~=Cr!.7e3 =vBy'k9q͈L0RI鵈@Ә`DKGud*/<& T-ߝFeYfڀ++9f4b姧)6F- #ɓ!Ruze[]azH=p*2cuweϭ?V'U*2R GlO"E2ַuwBJ-vM&ώ:Q>GUo_Bwbր!LpymNj%_&hcXϣ_I<\qO~p?qni4;"Џ~a2H߱"1y e1kXH68+T^rp/[RbXv8|< =-[`ϷsMo4Ic!g8f'6|KVD L%`KM@|GTV [Nwu!vMŶB xJU#Łer(gm~=Oq1}WgZ7W,1f?:XǦoX//)qTI a1Yp=շXi4;F߲>QGCSCBS@}(۶5%DݣR|*=] :g N"( a_/dxY(|tK/12'wYK*Jq3ʮ5LoBnZ%v gEYY?w:47dmށC c ;H4IQ1 wrJc]zZt!`(~IfEh j-cO1'TY ?Iͣ -c&V;PM l(ۢ3ڊA Ca5"dJ/dqB19ɝz0RGb#]J3%M +Rb7G CM3]JOh}sLxM0Ӥ ?) @fCWuIf45ěsdžS;cX^6)9>K(hέLp#8uُ(}g(W(Uc0R Wf} ܾ3•[$3bc쏜Dq@5v|S&fC7)NynldQ 4w[7L5[JDu,`cCj0XHTL3^7T$:B)w1OY?7 F04 Sc1k ҨfH9+j 6,*#Va(S)FhX[wkFLeWPxe~Q4hYTM:S?xMO充>Φu}pR(h݉]VLeLݳ u.~R}팯 bi(zfDŽٝDwz7FܫQҹHZsVyk4˿x>S$HO~;vz|vv>2 3y4;DRUZOKd ʙ+Я,=R7 U̵>#zO MxmhFZ[a|ՁZBHr`T!{S*Up%2б-Vެzpxd"Xswu$:]IP_p٣,6wF bY"xK`w4&&ˍ<]}M|>Ѯ&$Pk,އtGT$?cf.*;%zLDw-Vڂ ڿ7O*iZwt:=2WDqʭJU4k?aϧlϐ}]#V%LL-0!%|Tw8kB1ineHIa(k}$ev oNQu%ځu6 ,\먲PFsY]HKZLsZcM}J?8߷R'+,s_a>@{3ȁMѸT&{|K&XWDZH)id[=6>P&$|В>џPs@ŞP]ht4K*,4 :RV`#%ch(.K,+i$…$=5Dl1V@ԏXOoenH&W bEXWt0 VA2;mkylRz@wVW<=![x2 ;# $Zy8Q~?EFZýũ _ɜ3NBOs$c, THX=fi2zO*8 /3<=%p1e]gxOP>n2WޤQ|YA8GpҨ=x>IQNI{ >9YowFwc!6$HQ$/D;*'5vR<8'3xR3v؎f*/Z,bIFg>fAx9C}tI=*)o'>!-Pd`Vr!ۗFykFrT:^zO0yfh%=cO2\gK K =15fq* M :G4R~Ay`#Ub+1ۏE^4t- q,Q 7t xQ[q]g^A&ϼB&RQ޾Tg|D %PîƽJZ a,66 bgΑ2?=KGX, S&Y2qRuiiN":3*#!w2KF(#x#Ӕ~,?}HQN&j\s!mBϡkQTMom4N$ I*(ا&`| Bw6ؓ)EX + êJE9wCPԠx7#td KljA%w]Ehɓ\"~Zb5B#t?xhvg,[t+3rEZk*㟽BMt5KI3X0 җMzk &"1Ny!?\ҭtp}irDjAQ' /KItP olF I_|=Wk'}^Wшs>FXhpVxݢ?܄΁-A},W1s.#cl=ւN0zJG[3s1h$oBe!FGs4?2Jqp"T [;=a(te #計Dȶ1^[:1#U[g j1b th-J/9u$Cx疱<\Nw`xzNVЯm}URYrfG ,i{I_$z사nOl8WݽzHW<}yq΢0UP"|0܈&LcQVW?ȱ۝@ՕehB$tDC}љ*$$FJJQ0 ּ6%PQG4G(,~Z!a|[ na5Bu$l #'w{Rw4Zʆt[NIƀ gIªKbH;ZIPuT5ĝt~fz7+{&Q v6|G58%عOؔ&VC,n{9*v_x*MYf5tujw 6D{-M1/(oߌe1^ sqV~@PD ;/S(lwd0Ȃ@ G%mO=LEYmAYf Uk IDAT!dkܨΨTIGuZNiY>Fg5%j$bkSpU%fKײ{X5r 1nYy݌ M^ JG-EReܗj'Q}E74Y>EDt[>SInwtR MyB[5,c6&4L,I/B)kn 2*5Y&=q?9m"]aDՅѳ}FIn4ᅲw⽂#ct`=sAzF/E\{%Udz_EVGe_93e{e6 Y֑p0!Nh؊+>ooIΒO^G8B| FG?C |^wf]u[ΐ*ŌWRSRn,c*bJTӧj{N ?-Z_`o)H_Enk!چ]y 1F Qw=S=; iS!q*WE)y(=UDoh~[ !P=Q(W<,IGI&H_BzZuHl=꼜&6Y:25kYx+Bȍ 7:ab5 T!yDa-_`6>n+*n3*{Vߖge_;eb+S~$??7 <&;>s AҿtBڞY0@h)4uY4)JC216[t?F7 X^Xb"DY8fO(z//?)~~O~<{X'\wuc)q~]|4Jvu:nA%uqCg S d $ﶱ› ƅw'0Z$v|GxC$:)A쒇id zGΈwHf1fbeB!w$]%*JXHXZDU]^,a$!T !&ÝA9 h*iu$TXa/^dxtL~}4SNv@܆X(`eam1+pKI2d$)Sv!T5jwf@q$KCkY"+f%Eh=TxI?I^N`d Q BI P؄ xd]'uCϷ,t&T/tOY󂷵"q"$d 22fPп=.')-,|<ɝ(\R9/n|Bg">:[ĵ`st2̼AF+ JЀH&JOc98Qj x bji V6iRc2ߌ/dp'R=N^; Y^`̛*/8|b<;}HL(+<`QR64;)O` hK&ڒPVe2+ۧooݡ2ֲZ޴ZoHlhTq0*)2wbR5^NEk{Lʢ1߁M%S}ƠuϮf 4 ~F$IAjd9ɷP~¤~{Ǜȣb;> !}C 5T2߂ĖT7ܒ ]O5_9K~]`ŐـIE ݘp'01Af14ޢWIwG%"$?O;4zD\O*{KrMz\SH4d"OoRG*_\ <ѝC 4 ̟]}H~"?Rgs2E,tgP]}ՠTt'r)L<%y 1gY0ΓJ'u _(aq PIԳ)•>ݹ$ ~+ bg@ߐ D*ۂO%|t9W0Wh8$7B=;W|r:gUOM "ՐƸ`*B)7s=H+ć\uDr+"aju { EV2 yOB"jG^x{\qA4]gP[HD[ ZwCtueTǠxͧqVbk(=I!΁ѓmO7'TWD (YuS!A1-D$jzu7^%}~CuY>AI[íX Src· z31&ūY|&B#+8ʡ,YĆ]V;λ4MHD愼 W{BFbJ]P]Y&>փn^eX *ldkD&0M{k DZ}ZM8vV7yL+I(AUGUo4mp*' AJOQDzϜExsڇ`37hx2W9/),)}xzrrZӬ9IJP }S2?PCbbBYm?-khd1ޅXK3Ġ@2n_qMf[jZDb'Ʃ?%U33,*]VH 6?2w ZMAE0F_nb"F'czSR$UfaH;׆Sץ(R-]T*kr]WX MHS01*$n3'X -1ZFGzn@㧎I&jfI*{x5F \v)&w *2_yUa`^ k1E=kG,40@"dU;Cj5ƫeHUk73cD?Y긼WT1;*]Ngub 1A_8Kcn)b=)R5a4tt規f *.iػ72+S){j]U}CR:UX]eh7g*uH";JB*IH*.:Ě|8'QGsdOy^<`9s_c(1n`[̢M5֤쨈^CM"]`ttTHЊq;{켲7\OT4Fm1駡?8Ƽtmz~ OSTG:IU#4gteyTP}E:1͇j{x`~䖏3'z~r@ppK1kOXi`nj-v 6/J޼㼑Ο}W[Z7$xw敏Kz%/e5kR0UHn$[v=;˻}0fy9n~… ֌I~We DɕuTJz O+\uQ ENT HJiJB@P+J084Bk+X͈ .{t~+$VUْs2:NyD〃J~QJӸJOhdnk4QG)a5F _D8=JLZbH%6U! ~1VIJ͋`z?+ ABoFZbaǤu$&"Fpx{ԥ}ckݺ:J Lا$/\apN|e,[菴WSCWȾ=՛ eN@:b1(k?#Z!AREF&Unan*)21Ր! >dP":݇"7۸e$)Ή.Q jOeccUeΜ3M6ޓܼBH@rU:,zBe/Zh)%V[ FSŌ:ZEQH R/->taRhFt =>sLw}vNXz 0z>) vr jUF(8YUE}:oG$bZg<)V F~,dUvNxdHMԁG:E7_E9S$);ݺ`&``XQH|mk Q*_A"ʰuRe]69`] ݂Q4d}(5@"_.]E*(3 AG*M^͋اUin|p . *#Ǧ>L"}Eqo6 Cga9?ꋗp>| /J<ͼMg.7~jHs'RqObd{R1AC w"G4;Haui%Y28U\FDߜǩ>DT6)"tfU_ExFƕ?Nr{I:Idi$;4OI8AUs:^"e6e0SPt*ʔ@Esc :ƤvMbpefg9 "Pb_qu1v]Aԉ 95Qْ{ zeS tŢϢf凗OOې] OEG]ZtNrz5dnuP>M@G^Vu(&Jc~Z% ˨ |A~, FχXUU:c0$6NI ^!j4eg}{'%QXc>+* #W#Ol>Ud) %S%11DՋa $Hذ=J/>g컱}s_g4N x7p bM}X@3bl<&#xnADqm6N>P$H)T9$~QѾ*:.^_ ýaf&$͎ίnm1Ȳ2͗ j&]'Le?oe8?<=!`X$ KZ?2)2J;Ux~D95KOc1O(~@JdWJ^1;2Fás$Kb;D Zwz-= p2UܧxԦ}bД6Qde gl!ڛ ?; IDATaB1ȸ)&ƚ2( ެ$;] GHo%7 K&ε:c+D6 T/YE%_oa8XӤZ` 4 A6PBF́γsL?4qT ]6X?+/Ha5LgQ›(f$n$P{*cXY1#]Zi:+s9 [jD斆TV>!LH(<6w* AUƇImܡeXx2 t5{#M7I@/;tZXH*Q(HLPdّ˘iB4\w t#ڇuS1?3vfUŰC"f1ڨWxڶ[ʹ n:2.n3Ap6D]S!rN3dCޑ88XMc}ZH_DLB6Ҟ,czO@'Y"Cr2n ki]$T#ܣS g|F^ qգ^6Hx?"ـ_wRĎ]?0F)b%.t^cl@;xo/ .F/H1-?u/A,>N: !BA T2zOL3ƃ#/ߟdXUSށtVp1JO>nJ#=06ɭ|*/+DJ BdL$\!0Ayɠ$:a2x#"2UH"|PPPx^z{ Sl>eʒ¤|1s1zOkuE:?0NzM*B˯OUI]fc8#aU`kc}[ h/'LM PyT> 4,26 k:HLhx.ֆ(D5Y^ Ԡ]aAghxňI܂`\ͫI~* |G(=#/]C`)z2o\FP Vc:s>Sgxz@\We.ea-FdbWm;I=X!c:N-EA Fm̐:&Jho`NιxJtoҋ:iy͘ї]N%dq}.k4up ]iC(zca5O7oI2հf'W)^ѝ\;b))p3u2ErN3*_}tTOw^2YY R %55B]kߟ&37}_}LwVvVv3H3k " &k]Lau5f哇7` :XUX{Od̎G nl> ϲyƢ7әo=!c>Ռq .{N9)^ ~@C?%c9^!@ }_p==F$@;8ug/#]˨XM_<yKM~sr`mOKM4'BHIzĦX S!cԀn'Ix n4 O5e>HttNV.D`0._Ԫ=~kI::פab66l;s bp]a}sUխZݒd ^0cL<8! $$$ 8&30@ 8`0-[ZRKE]{ݪrs[*g>GRis1hTpf5b{v+k!0[vp ^-$a)pP򜊮Ddta*V`bKzzslXzYQP-Ċ<Vo%v5}U1<#ǩNt,(?3+v l45%פDn+l]UD=*(:x) /JlGL}%4.թ6EvZ9k>=ʲUTCfzHJVb4#\0K, ,6kCTOOfTHP诎r(dg-jnxr, JBa}K!Ѵ>qg#]'Ř|KQD(MHME9p\eThѷ8g )JȮLz\G(k&>{g5,'v "݀jB0Z؈]%1ff 袈{ Qa?V>^ũKC}juMX݇D#TsE _* `k_M3q4v-[o~/O)xH $mф?wnJi1U/KJHc8.ٓCKT':3U0H̘| Qq 1[:ݙ K>Fω_ -E}ÙanH{ϜB*bl({,JyӠ `7?}H7ʾ+@@K*>1Zd\Z{^2|Nw^# S]$T X8׽o՝&;H#m+QK( ri:QS̥&up+x2TZ';g$Q,1H.W}Q@%No dQ"23YujMMZ홗1\ΒJ+d9Y }Kc~:j8Ǫ ,TgO]$k#4{ox"?wNX53$кTùCp&c*W%?TL^/ 9S<=uIˋ-PљnZbH&~Ңu"Q%i/A)@W}n}zP*S9b "#M8cʌ| F_ܓ[8Hjec*ܽes2yPNGfw28e(,BvBJ`^$ R"clD% ~;U~z$'`.-Дߐ<B:bw4P&EGBq.j0$t'Ju߻J +"bap3 A:*H% 3|yġG([OG->RzU+Jj AYr)$pE+T[H_+`Kh}` l %Nm\NhDu:EG씇tR&>Pr-*?(gn -RrΘDh W C6&!;+BILO<"=tLQ4iNTRBU ^ZOIvPC jDf5 ڋNc?xEco;bU+/zhAf6x*1 !VU7SRxĪ_+N ‰<a /胂+2z_ I+MI[ A"R(yeGtGl8Y7wje\,NsW1q#B\DExA<.Neffת vlb"$z (2nG|j,wWkıD0%3Jp wq%3(;4X@l$(vHw7Ce@gP|"WFS&rOLyAipfqJ_WY,P_X? *iF'O'qbzFqY0>dXFm(ıLl(xcM)r18JC|s2 #WI+#LD<`,w*]C6#¦uC'Lak>~XO!Ԉrv@p\ʌxeNGK82M?|Yf#2FHIkPy 3Q( YPmA ?Po ECu;9p zL)?`9Lʢl$HbA&S) wM! /T߽:*[dg#kzy&gJTLCl@yJDnI4D5j HR_d kHhk'6a=NZR):-=-treۜ,)*őV.~JzDK(y|/ Ǡokit Id}-$ܨ#)"^D"0-ҌƅB̓є\ }3^VuhUCmDVȿ֥}:S jާٱH̘?L7_8{: _qI"sSRrvI&oH er:ڊȰM6ϐڕ:^` CoboH1IM06 IDAT4xAK-k!f}қ2"IƥBf]zK S_Wœ( )_y|*qv ȔSnle7E֙ "zDp0J3 *U|2Z&#SC|{Dl:`A#fC*Jciey.LБL[&O(O9X9g}d :ȖP*)F2z[`%<ijE<8 bRM űD odtI:4[Kly4-fCHF_G©bnDr?Ɲ SK>sR>HF$Qq;k!jOIIM )0"H AV$q9Hh,i6꾆uGòNY]H7b34mTD4-bo?+N#T[I0wT7܂Bn٣sB#Di Tu= +a%!ՈΒLA?Y3h.g;okɄXsա?wԅnD}%_L@ tFR"N$UCq"2|hmo<8Ws̆[VqNAKvdĦWz r$a^#& x,]I8c aYZ3 zO"h2'zG2Dz/]lQ·7 ?8I헟GL`5BQBrW e u(M}U(O :ڛ)´8M lymbns aF"!2^Z"%]n<{,MmwaXW(,:"-1/ddlmbq$㴏(M0Rp2$S>'ĩDDB\a2#*m o!$T\B'M} "FG"VGJDi76{)S &,SyѡsL+JB)eEwSn 0UFc6)N<1Nd( m(޽D`d|\[0+^B<8?ݢs*WE)-vweVTnҐR4 ɬ#C"hDcElS10tt}"FUb &e#:DLH/ެ?R&rSi?:K4)*P#,E|)ڀL($Z@/0 Мp=eKtLbқGBlxQbwѐ =_z3s©~&#Y!A|LTX#JHjYf!Mq&Mkt5M/ HY!|(j{Dl'!!I" !gdRNwQE/]&c~4]NJd6B܂BSd&_e [Ci8wto1Z/Di *YW[-?49N`)-V'7;l=ڒȭD:IDP,g$jW]R(ݺCʪGtkf5r '|l@fcݐ84MR_%ipbid{p{mpdv²=#fJx6eh부FLY'/ Km/$Q_[-+)uGi[HA!u-}p6n>'ws>N.=mMP,S{$қCǥ)E^NX3p"l/E~Gnm"裙IP0T(#:28|rܗth7S5mҕì'*1Wxh NaC,@>5zs|ף/$K9~&Ͽ9Oy]V7+<_ лNr5@ը+ߏd<e!Ͼ}Tɡ'OQ^/ͽ~+P{ ?&;} B*l(HA[ڒ<c74"_D!{Z,ewY;j쥙8٠sHƕq5t=MjKep4\1byhҀ4sMM: HC1F{Q::Bh9sr9|y/hC #=2}-XOtG*w &wkߚiۤC;t+ ,&KgP >2zYR))ugQUMHD]-$uO6b~"?p* 3_T1 $^m=1TykMDx+%Yg{X y2jQ,Q`ҵ *CRS A`dia8=z-kN|6}v5{ FS&{KfON[Q2- A&A h/Q (I+ASA$WF QLFq'#u]#Ϩ8秈R[N&݄*k-b%})D}Sd:ds_J?͍Gέt  3 }3 [?4Eki[)s;=ڃ4q(]FL;< tD\Y]!sLl>2 GD52^9mٔ"h *'za: vu|DK_ؿSQ> y%ĹJzDŽL| CϮHzaWgg/͍8i7?wŕWA-y` k}uW#]_&n$tKBԿ*@ FSa_`*+HъMwE&ʣh\įJ%/.j Oxw44[`[.6&B7#%A0䦎fʱ/sEh]':.G,]M=qP/ ֻX0Vȝe7Y(4O͚p/  ǎ`4=QA aI(X#CϬPJ1JBҺ^Rf ?t{ : ŗTjLɣ70PybGypN2| (X͟ޣ2 ɬGCm(1|X Bz/N+GDD\Fr0Nũ4 zDƐj :+U҃CBg1Z}o(ۊa D f 4'B 7#"C3!nY\9&z?{~Bko] YڸLc{oC(؆B{oڎ,S2! ws&кW4]*ѩ k3r+Ӿ-K]ԃ{Q$sUֈD7.(֏a UK!4~NsB6**^IFU=q}:!0U(d]a6/rH8y-wzo>a=hk`MLJXoi!t`B;/|Cl6"f % J"LX#SSzgG#0T DH(6 A+P%  ?΢BNB`~7Ž=Ԕ*ا/IhLDz=[D)b]J==u(%!ۻpg{$s$ 1 i"{!Gfqfr݈Ȑ2cvMM뫬wNk'جfirđ=CO\cp?XHhxL/#K*߻bWQ= yqHQj.Pm3 Q=ސ0w}5P2JC# uW]G*8c .I_J}}M͏dB՗-A&A1qsT#5),1a<EtWCi8jp%GO)*kn-!v Wя}*GyCKZReޜ(#!kf;K$su"GgوGcBIft&=EHdk $w`vY…cQa蜜bY&j^?h#,Dk!Q{UX(h9Eb`꤯81hdV_7!tr8GCCz[`zmtUߌyD%0(J8 C81q|aE~ޘ!r2iGUHP,߈p8]$jB6A T 􄉏]{wq_a]1pN >V&XI ;x%ѕz2h|,9$JdC%7Q@ rW^ދII6;4Q|aІկnhJ3OH@p5R=- {~j% n WQ%DFUsJQ ? ^O0 1 #Fe{=AdZBlxBT)P:|OdDw_rwl.qe[ƞh{d3NsILr&Dŋ43ǖeKHvJ"%J $޻k_~lZq/Ѝ[yKf[" [od`D+!E>s1q썉wT^1ˠ82*u^h! OĽ/(B $=a_mE1Z!?} g/5 zfUH~a(AluԕGGP=kHG q6z=u oY• ʴC2O gHĊQE>Z(@*Ifyj*; ~4I(XKK>MIdnGaz{-؂J§! 18:Ngʠ_ȖPkg+8#i{RE IDATVWI]l:fLNH 4(Q߄⼋ʛ?uFG)]Px~SC*8ʌ}eƑ4S_nR-f>V>z@.Zрol=?oacj7celS"\27`*Y25+̈=7aY-,z{eb0b͇1?ŅI,{XY7!Ѡ@Ƌ4d27}c!c/7siY~;ڨJ+o \F^ڊ^pȘ!qѩu$EB+ {*uBHLD5/*Y ,@ʺ BwG1ڢ5dBHq Wp_6F+Oup)sJH= 8jEx[9M"ucn :AfXWR xH 8ɷP'tYic2@%.=xcm~zq$}%܌7p==.ZMQD$W{7$ ??"1(ň_(o\_biOXDi>T`33{!F§'E)THtؑ)P9N({fE&v1:3"x>46~{EvHyLf2EdA4ڦC*t2#:ѯNZ'K2'#ڂI{ sUFY2/%c8JglH'1kp-J$촄I!{!C:'( ][(b%!eR6}5R$u5 qM#;oՏ\KA}ƨ)Xs)zb4]H:r=MEcN`K/1jNޒEsOelWKz!yPx= v`-:fMlL򎰁i,~{,wxBl,(C\1­^D!>a#ko۴PQ}Fi-Uu,^Wc.ЗًmU)rTȿ9M{p=F# HŶI>CoJĿ|fZ|-hdGiJt9Mْ]V\ ^, )oB5Q5WU䚾Ctc¡2|Oed_Z`P05EP`U %ޏ:)Eevp(H[ |ClD6!wvOdlvĮG wޠ3!Q|- {I,iD$MǯlԠ_+ {үwJrEyen:8 QlA6kBp~X{_gCIHe#&gB K i۩$`DRO*!Ʀ~Ӥg1 F+< fXNBM,1ϱyRfde}L.HNcoYwwz~ ޟV$W$6?U"|kʱ(NBjxK8heִڕ ]#쬽?S_?/Fk}i@$EM|J=\"}‡u0׮ fT(^\%RP(Ax@{_T4 -ܧ~Pazl<)MX`=b}$5C帄wDQP5?9=!cI$n+5g#9zM0[$XJj!PȺLAQ0K"RH'_D(a2N a#iEut7ccj J(#tbFC~$BƠԟ- ާ [=<[ԷTS"}]&ZغOG0 ?`@XhdWba4iD1T\D$KFd*NNdxn^L!=Y|S¬X>@@ޘh0 nQO-㌤g}؂NDnt 4֡ b#T|I{6F܍ےX{DGdv 'B;(G'ϐ[V0Oߤ߭Й| z}2#y|B+.R(?ނ‹K(Z 7.XADJc~JxGg9*5 C&Fɿi=  . A鎋!~ޠy2 aK8>|ly*dSCdVhϊ ZO"L$=5IK eG$jG"HD*r<r,Y앐HEemb2k ER bxbdR$6~q+'2@4*cb*9:@oGz`NT\HsS3,ʢjMcd'Gs￝Ibd>; iJU͏&AȊڭɻ.$T k3T*ެ։ sYxá1'#Z z:F{<6@l@L& >57:"!z.Cw\TZfbOz2mO;5Ikg|I\T~`(>.e}ܢ+'|aK. xD|6V4iLLKN"${Mk7^h@J01LP l% &ElզNL:JHcYH. p2:C?Yg* s*}ܣvřvpKɛ"֞6 tKu 3DGPo;P~Ǔ%œiXe;yrk~[xR+M8_&V.$}EaiQA1TF/љ3}E8꟥BK NĐ|AN<RQ_\ߑuVN!(iHܕp 2&\ $iIŜ8Y 9,]&i{2#!Z]W :ޡ'D7$HD6a芃g(w u$!FCw_5VHJKȮLb4B{%aQzHo*`0"*#oȤv_H2^C$V*/L] ]x_S,šاΣ\]b?&CYh <2ѿ=K 1d=Id?rVB->C|,h=^udQmDP6hgra4 t_u>KS<FH.^HQ; d#`Xҫ.qغr{M"wV ZOI|r@7Wp *Fc;o+g K"{ +:A`H̓)"|S{qhV|Ywbg%6_Y"mQhI.@I>AxBzc""hG04d!!n: w+C쮊b^"Bʜ@SA7瓸R9i0|;?e Ԏ(m[K hِIڏNu<"bBhė%:3fM&%ߛ&aKwh΂, fCb΁1ܸh )D=eCʀ2x~ Ÿ Ҋ ` *\G#=QyD&CҷBbQ2AW%%qy TVBr ?DܘAzGYqq=D ܥbքDihnQq_ 9*R(ӚVh?P7@!;Y =V;Ygp_ هԥ8;l=5hVQˣf0*ўQOy Q}Yթ2wk43_iEƨ9\Bx6mocD$#&*L ;A 9+Kv5I%wN (wC,BԤ}$L?|²iwNbqG9t<%y..N2O2Uȥ|KCYTtpFӤ.TV&J]"јy^QqL_Й 1DzR4NRl"(*њΤ2V>d'.cd.6|cb=˲Pz/ᔅ 草\|~P3t\M0gKT`DQ/8 c>ڹ8j-9I,>K(KG$d2\B m'Ris?*B dp8IF%CSnHi+(qB*N!8ਲh [cQj%Sd)VER;dfKl~H_7gȮ(`Mp J_!/G4$z P&H7n "_G0[!^Bc0 ZO.7\$n&ߐhOi4iudK=)dnc|#e/|F7C6[Q߯7 % &?:g ms4@x`s oyk2)]ܱiiJ< 1ޒlb:, J7C)a)ssCO k X ɼ9omc*]`f֙KpxbÌ K[mzOID6eV&1R5m cbD%;zX!nwRiX%_][׉.gcFB޶nkJ7Cb/eP?p#Y)tH>{e(ɫ*!Col>pw[8v%{Ʀ/ Jy5g3{4Ħ;d=:w>nFHn ]n^65x@ !_]z5y"$aS3Bjz>mΉy/F[51aKY\as { 8Pz z'53@ǐu/Ҟg{WU)tlu-F-se/硩Э =/a]#5]w(PWQw(ӎ8EOkw@sUq1wμ qQˣ(b=b9h]Sl1[-FVg;EԮ[bU)}j`䬅Ոl (o! +/x4ZnĜV8" NA[i;X i*}44.ܞvɥE bN~aPX|w}x!ًx9J%I`OY DUԔC .^co0LPC>+KXr\}t ;'7os+^M-C-{;ߓGr}̯eu<5Nϐp=>{'- -,ֲ'**`zKboa sA-̷WV2;spB[QW6)vPٗ:JKVGFźZ XxALßDtjuj-y` 2?3W&{C(Gr_܅貂U{Op/===K@ q|cHuO,nwvdl_eq$ F@x+NM/agn yCeGBYLSy' MIdd=z d46 B935&f~)ľجĬ}U\̐¹]a6Fb}JES>=KM@ۍP`H!$hعX}&k!vJY|xy! LoT9եTſyˤKmI+.?ߢ1$STJG&[a2Rƅ؉u8: "H⃕8z[&}N[mK62n6 hh*jKA;"Я{:$;!+ӓ QP*:01 m6&jc:V`ZUnuTG|֡{#uZEQG.,|M3rwonDa¢ T|FYy΅"8CqX"E3˨oƀ+kXѩE*13BCɿ]9 9J%_0`XI8#>~e#㌼f-vXy|C_ tiۆE%z+WpGdT[|[ep>e37n](Jb)ʋzBHw:$0Cb+ [G'\<$s='`e]B! =:,6#Q]*ACaWF˸ :ӤD 7Ha\ZFtD#yiI̍>0yԖ ˁBgRvD ;7&lF3Έ*apt_C}s2NJ#$LV>Dv%%1#U _S!v[cSP"$L}iHw{'zM[!|IOI^Wq2FE\K2%DG(iGg)OË fwy|R;#y2FrQ[Dj%: Ust‹IP=Rwh?|>^#oM>2JO I?3𯿍+9ZD!,:ئ7B$"UNj4NӹC[A[0q"f;.Qx#W Կ_fiLwB!O!%uִJU@9/} ىCX9'`5ܘ a%^Dv?[flHM#R q2b *z7N y{.?KP!ft' tCl )@F92et"j m{6Rih+D>} 8ъtoU;Ct" VN@f8YHt^:OzSaize(}ra DtαWp9_'Rf$t?^"WLY'2?s K{&wiM:Y@P|4Ѻ2gMf%џJ3UK',Yq <<YGfC/&?H%s2DCX` uVn{ic>7&7ȭ.P``u%GG"IlTGiɘlNFA:%* [U{)Ԁ/k~{ ݲDpzZ3$Ⱥ*Q#U{5<[eV H`W;R=L2$| KP@m dR|"\MОH}MLsMўR䒾Fڔ4CI?AP}.H6l N`uѤ36g]y!BdM!v}"GPmH8>!"¹;=ۦH]OS L:"! b aږ~Мe DFޒqMHBEzgėe g<`#-dPnD|6dPoHh;ndu@!6DzJιrG|)H-zȨAJVwaڤXX$.-iȲ46Bk.솨?i`Ѭ?y@љiQ=X#ќnz rbrgQN_kB.Qq' ?Ei -Xj򈯹w>'vu{D6mqf 8YQśP:e "B˧MNIGco덖sIReKT|r}#V;)6.06EQ-µ*P=ȑ"yH1]]T b m4wDe1.5 z-"[2**QnqaRq{,zKfpr/" /&hxx/rA_oӞ0DO&Rq±u 1ԝu~ E'ܹ]$v\%r :** ڻQ͐mOZ"M& fS߁F. !T5&X.^WË 7'f8T3-x,K"b* nQL('ൄ2-* ELDU3s ]RLYa3ui9&X+H$fs1̫&]AbAa?p铧LȖv;"eϔ-Gz"z/%IiOF7ӝP>9'h^rA,g=ԾdnbaoNmkE(MBɖ]QG!mL$ Y6B3$Ry£  ;PQOUּ: ']Փ6Abp4o֬?#4OxdGG3~hrh䮄(&vp-Ftֺ$NKOޝ;-}g}ȁ\;_EGGGmퟛ.3+ ,>@Wיi쐽ala˚ĵEbB#V u?(|"3dTA:=k쀁K7&^BQa"d꧊U`i7kwUhyd hB>zD8^@7/N;unDJ:f8 W_ÛBT~iH|ۥ#*ߗI$W!k.љ _#V@>m 6T-e3hHJĞHw;b4$V!mO(:b?gXGRB%gJ`/ PrYsqaq|-y+" eN"2êb{zkP[&#@!PԩIMJk`D ĪoJ,}ho%O<=`$rHU6T!~eH͓&z'9lrbzcU4qgU~8v { d^w :]D*p vf 1rkd{+Pc3F ^GoCwaJlRH(%27"ĽV?" WT̆x6?}P>fA$d bkl[ /QyQ81"$ !%oi_ꖎOUj'[{q}|*:ܽ>?~Fbb]ȞH$K@m^H@ĚjGh]Ohg7wßMrt`/5|\@z_,4TNޠ7]dI&p-QY)Zp(C$ڏ fj@^)|C̒x[ {âs!yCKj`kԿ1pNLμ04FN)?w)OS,HMuٖ,r R/Ԟi<11:9d|I?6#^$ EzxĨ<'*c>d27~$ɈPPn8 O=qZQtԚԿ/ZN7*u m Lh sBhnt}7PٓkO{GrK]=TZTR=߹M'",P2S[lΨlU H# B`^W|T[YD;t8o=T:Am*CUqf'j 3*$0wL5N@i!T7bvIxCq)!o&ߕvF^NScw(H6>:4alNsT"GJ>x{H CIlK@c˼mMHcvz>:d[&~Kl \_%5סS]`0Ϗ}ՠxGIA S70?oQJ힆Bl[&0$\T<>tRÓUrg[9^br]ɘV">ꄍ1m*ߠxaŤpY[hI$;  ֟VG|&4{$_?S}C ''L;h PtEom=V\d쒀 'hAusOٽ&#s;.B'OhP}>3zr@/POʷTǫDBQ+l|EA`FT!8#S[4t(PLQH$d_T앐=+Hd3l-)ΕhEP.%#>N:d{"I\4Lg^񴏶c^ٓ%#VH c4ؕ@#D_btJw"wcPQ蟰ѶU_(2\:OIAue'#٣7qPODĎXf~1eƿۡސ}MX=V}QeVD~p+HSqiO!!1 /a "|C6P tILLhءmJ~Dr$03^gt{Rkᄋ#i?2_ 1:=֢PR@JyhvՎ5uU 0 uĚO+ﯢ -zHL4IBDsGq2v^fXVMdZGT~m)F{r$}ܬNHO|0xa7Cgk&- k=1o˺9/haZFGl=,3ww}ǐԝ#uOQ TD~E'~[ btg%Bj?Wbpjʋ!C=: "0 %%7nk$>N]%GM=}Y3N(Ecm-!N?汋2!+3~hB ~4J=rc=f&jlhmmY0.:NV$MpT\=M3a0$ w5?zTHByI4߽~/`GpL"Vŷ4 k k@-'b3t9:U",ZGZ^wÇ~69^JgV.!nϽL{D|3'!;cGvOUCxNvҮ:\DN_njg=F=>=MQ{§.ut'P5Qo&||0)NeAbC,~zz33i06/e*bo*FEU i폈aZt'%>USPԄGЉ/B3=brqqs9 7#N6^%CIv;3=G*Yk:mB迻Gx+\>Ф%Ґڭ<ݛYT5d<֦HtO/i~I H/\ʃ/N*Qh -q!R1 iwO1S Lүkjȃk vki܈ oJgE$,bOh+Ln_- ?dl[dC8>y5*sύؾʋ>7]N ryLaQFi(K5P`p"ɋE²ql8cԀPh67gw4YEO*!#[ӧGDQygMURI(Jl޴ :x#QՐ7, _ZC45`a7--L|["sI%(hGX;Cڃ$.K;m<5bC󀄢4&<:2ò: {i|HrK$Ve1x Ofͩ+l>&-#~w)ZH/U7DSo)ԪcՠqԄGo7'1B"R!@{ .$qGQ9 [>`aͳB ŴGopie+N٧a{Lv0F}^U7E3puWQY jCd\WibXȖ>i>{d 23,Rŵ}27"_~u _.Xiyo:D!~W/-#]f".92 yrxprx T=%Q~6Wq* ΕI &D{I1!OETP*uxs$/Mlė5u+"stcVbzo(vyH w~D0tL;eS<'HH?ݎ(0D##UMA38! m.ƪAEEew&BI ڼBc͈!c=Ni8Q$Z٨A#[k6\%$}bpPi2?&otCtyڱ uR%M*8)xnDGh  w JgA3 ر3_U(*@r *cWlBOxVD*ܙ4G8&xD*)+ULģخbXTZ]FG4q-Y>b:lYX89X-DY"|0 -N=#7/}r}&2C@d_x/!_iBSbZaIG[xR{LJ4~4@W}B_I8G$A\# J }|.;ٛg~=;]سN 4if۹b[B) 4B%ޥ30Eh]PƖJJW3mB%boOVC)gE Yq{BS*ߗI6c.GVHX`NeK@хz逕ILjM5{^}ҎPpK<-`DoT2Hc:09i(FK7jdoZ)岸F N> &*X}>TEzeXRv?69]UHhRw$D!:w! WJl=j"CKzv/-bݷ_Aj2B d"Wо}J)+?Hg':~Ht^)e"z ٓ\g>[';&E 1n wG2'|P#J,rg3-49bH `Rtzr@{:H1}Ĩ!{2o`;&AenH7މ#( č"*nBLf2'5eG>' \͢-;>)Q;`dُH]XsS 0ڎsr4] J#p]9?S]&fkl ܼ\E;D&FG'+bb;Tn6Jt/h4N&G\Y朁|Faֽ nJX8R~.pCc r8Հn/NlINݦcg-$|i_YęR"IjIB~+ύ^Qpc6=/|W7 Q#l4h|Bp'Ȃ& ee$(fl ѳ75o\lAR"u]2h,HI߿e&c6{\ !T1L8̝di|B6WVI`\(^ t~*=8ty8)ٗbc>Өy}W'Di}Y]T63 N{A&4A @B=ydmp|lox=V ml  QMrBbgb"LT2,.ش KᎶ- .Si??N$Csw0|mC2oXeʧ;D5FG.AoF;<$Jwo |&\SB{/xu/geԡD. R*iƦ'7#k3&E|U#{3@OؙQQK u'l4TdŀyOdzDOXW Ծ DSX{( ~"ҷ Q| #B ׺XϽo=M\WLz j G}~"q>2bDrUUMƾlu 'tL &chn@&7af80QnҪ'-6Ǧ?#6$3=!c6k8%AUDBp4BI$ HdW_5X-Kh7LbD4P1 ҉.bQ,w|H 9|3G} yYg8xۖΕ[SԶ2͗Q#ABsAPi5U}ȤEy)IbCtP$1L0~Ig_b.}f@Ih|Qp ҌMsA&J3FGHߔ LwQH/AOR [I@% 5n*ȕ a=#"{wG .ƣ*qԎM pJ.(n$Xcj=IF!n>P?#}E$WJc:G43ٌh-tELZTI佈?>և t]@NXD#^H*,EhLJF @rFqw @S :mF&r]jBg{`(}i S*d6&&B¬BG2FBh0n0̛w5*/$4+YX^"U,Ԓ"b/<+z߆JvDh0m3P_Ⱦ2x?0d,$d)3V\jň>{F c2+XʇňH%Wko\jLT=Mʤ+;/bt!H17O*,Nm2ciqn\DK=ӟI܃INἇdu}Ad7_&/ z^[ېbf%Β.uܱ k!9G-|v0BILfBKG)gvg)DDh<cT($7M:$ƚyj #F9ȞS쀾J#o5=B6)>r S!92,SLy^Z)D{_66p4fcЌ'C$$POH++ܹ_Ƹn+$=@#0Пt?abQw(I|75 QeRڥw:y= /TpF®[nXkU2>׳r =:.ӞH t܊rgbT ?P hΤH_WӑB62,xn! -]$hS#Gt<S;tMxڭ)hvL%i<5W-e^M J|#ZK2-3<NfǶ8Yuc^aXN(b8Y]K g$Q"65CaȽpcOeF.F#S?<bx6ݓ!3DHLjU<&W<:f+"0%᜕KAN$%zr 4r;ZÊBϨ@ܜI*=e3LT~,S0DHȽSCP'3xU' vFFq%䬋,G$n!Ddi1JIddΨ  ZpiB̕2ju>u^P9*os'uB \jH57eY9-ڱ{mR{,A`pXMBBoԮp:IH f,Fe;ue+ПS!aGg;گm=r!GzDfD*fuE ](t?"ҏT8EVQfff d2ew}TZOYkD2PM]Ǯ=kYi_9|  jLw\M\؋ tG085MˋQ^X=[aMĕ>)<&1*F=D@&9WO y2vud|]"{Vg ?bia ]S&R`3ciu"{YThDhx@O(H(KFb}N^&`+N3F񜀗B,3]1z _ qGq %PU(OΔ~R@P™%7]"Y΋.'gRbDB 8zDSb}nZF sFD/γ[=ZDIFHPVJyWMXd/up &q7"mX$~$q=A_ߍ[ qfI,|ri1|dY((o40 ђ1:Bac&m%u |gupONaݗqdERaW?V󎪨bCM5(\U"6uGKď+ATDKx nL~+Hr/ӛq!sR|nC%:}~x ]\80:ZE3LiGCq!!J*{`$j^dyVjEWp6qU%h 1Z wIiJC3 b4HFB,J@d{G@^/M*Q{%12SUb5jbqNİI; M!#No. fCx>`FhlW@#Wi vFa9mZ1RzYc2N:)OR+`l8-G&HD2- )0Zw-FKJtG+$_aOnӛNvTFU" |p !pĉ"+wK..27$x頙>)Z䧒h(20:acG8a+FD͜A+C)q0#L8* u(fo8 %Nwi~삎~>dz0Ed/D$_z pV)̗n?2&b%LML":_ZN<3 ?,2(g]oʸIu/"Bf@Fj'xDԮ5k.ܿF)1) L ]aQ}H:y IDATM;R2F;B[7~grCGc8P1tXy{%~va͡w( Etz; CG=ضk*!#[DT5Dn$).i)\Z] Ҟm5D't3t;qT3Q5ىmEI<4P<µ~"DJsM~acTG""B HB(ޑs3LXtlN"7 LTR5MP4 {] ջpʋƪA欁Q}w Cu蘊8_ˢ]u]O{=o: uR -*iu6^}LtlE* D `d[F3|D{=UHRwVAk &vDݍ{?xoωk`U#}SBm+"w!n3_d˰5TT0ݛY?y+?=CX * P.FSV( ;/\%^ORwx~ɇ$Ve T27"AK4H$ߍm3I^6`2WB'bkv_wolҁ)O3[dOD7^ؙ>NznqigGWװ@8i܈HDp'+ J(?lqzZh/QЗb X.''ȼVtּC#/>ᐻ(v"5ЗwN#QW;F|SM /ՄN㓇j ^@g>FzHj߼D|S|+$GEl/޼&^z&F[i>RAq)W UQ ^vZ_l$vDG&,s} (YAdzK$7&MxURKPy l %˄23tB},|oG~׃bW:Xk6^B"E(CBVH|3Ch}-qv>B?vMɯoC8 {Mƞ zg;o Րـo:bDxYx^Wd2g bTPCzsB5tO1[D8,"eomh-*_ 뽐l<7ذqƛ59o1,yp)E7Ebf+VDvO/#alˤ.k]ĸ}_] HҮr"# DwQ숭|]}i5? VH"'/0ڶF:q%ڳ?xVf@ZWgLAd@ʻk145 JZPO6oo(+[{؏Z.y.zaBC$/qF'`=;m**u%qq}jHPhώ,69&ǷϏ__C.QxLkdx9nat5=ȨH]$8(Ũ 15Mg1IwF&=C贎T9 wPcx U1u!17!"Wutlt 1zs 01n&SIeTd쿙x<4~>Ag|WEq%tD0Hޖՠx.$TURzǏ } &WU6c ٛ>^KX(گ0Y=TxFy? Ho$2#bQTeHa1½#/ʌh * ÓUfR?"2ut@JpLtv/% D֓k.ò̗LQQa-7;k߻zFcaHqD%[^L8>3ɱX9sĉȎD^d)ȶX2Q H&F]U]˭o39F{RDsa3l:d%#B/'3.2tqo) d&!VQnأ进FHl I"cg&&l2xFg.sL?QG.io'I03gPD"i9ӚU ,l œ4UՑe.+Q ^c27 #v=zѧu@A[gBw7ST~Ve)I&odkQG"\Mh)Cm c_ ƨ4@̖ A*j ϐ>c754WFrH4UX^.&"|i--I UA܀/f<wZ*.o zlHFoLzcĪddWؗ<'SpȽMg!Cb{"EBMoFG{ ??FRg.|qj/][k?3-; eA-$7B:OM X X7,r$kSjc|6锳Gġ5eEBrKj0l Q%II\4.h?n%-О6)[,m54k}?_npٚa^YR/I85Xv!;` 4_Q|Hn8%]*)5#XJe94W@wK?i%~K0t!{gIcl>4ae\֒Fx%Cj: ߓ\& ŝa5Z:r /?bΔ\?vTW^p;1V' }v9 rܝu2K0gh=$2E %h$xQOs l-p0 5F=/hbdM/L3VG?$A<U~ko8OO`=6?(4w%Ev-R  s1:Հ> Ƶ{~ԃ> dNO{VRh䮷I~zA*8Tv𖌟Sp˄5ҟ$*~5 (Ku1O[B*R8B`۠jķam je |io]B1 iRUs' u:L$J$H_ۤh'?P%#^я/ݥ<˯Gsba2&}Q 5KKWb^yQAucRk92=P}:%2 /J區iNzDF@+,bTL%yW UiaHŔ^y@z=bX:{,eOFp)% vfu2NCH`K:=OT(.E*o8ieuV -(]pW-E&JuP|ϭ}"ԯN+|4[31]n17\5R9S5Yzlkt'SPcm _H5bl@KKk(f(R47OOD-y 9s̆ZIr/u3q0p8L4f7I Td0.h$7#`PAvSQup&5Fw/o{IP!NnX:Q-Nz)8w>MBH)~E=d~RxPK9E9Y`"a\[,"6uqPx:$Eɛ:d?y??:5Nh"N," %T7^!JVF p:aRźIEl#lwP%z Df'=#H J>3UtO!wGd0B#3 "P\Zs_z7V66gLaEtuHWPxy$կ!ș2ćTMz:=nHn{8{3nOyH^Dp{d;!e "@Vv*)oObo96Ljf_DB ٹi0- NYv)/IiOixn'ռԪsF^Dr/'f>|?I?P(ܰ%SgIn(6]Б%?Ol_~/] eg!ݫ̪=K'wSN5a'./+v"" 3"TDz՗q ݖx]7*yJv" V]$nrha^ʠ/Yߊr\h.Gc>|b7X}b hJv^tPQ>Y͞ O5q dr{WE4[aO"޺1 d-B= /VbUʩ=B֞4Hwgb6K;O#R-ߖԊ"MNJAvGԽ30 ܒ)A;J?-#ܼ{8 4{yF7¸A^m,kBD8aV(~TX2@.n^ ^}C$Zfa$6$ȫA7tٖݑ <˨"IbCpF&6$8&P/7!dNz%r$׶=F[HW.=nw[?RBҲ[C {V+{Q jȎT餮5nGΥ1Ca#rNl=^dg>fqwEikzOF.p w&(w7)bd=@ehC8QCd̋w;īo^eEgj hmXWՕRjK)~Q]vLhÓ2*;1&XyHpe"M{ى 7/[-= 9.s):ʑ)9F߉RT_N$f={Tɯ_'ا{xE?ڋsڋeTkdn1tG+{1vaMr3@9rcCQ^Z!>Ѝ]٣c-'$jl?="@NLԈk?w iJ~V^,7LٻRq$ gI?ߓc5} ċlͱy܂BO`]$_A^xHX΢bA'K \n\`]^fƎT5w=ppF'N,9o @"NX$ T3-t/#zO@^ؑ{Sr=&<~$N :&^;w0+`?S|3_G`蓗dhi !.q t\r3l VCN,c06L&ܰ ߉L6|֏.hXXsQ1 z̽ZFx&.zۃko!(A,V[>xwT x9Zh:ROa()ח޾"tD >LXs|/ˁNMq& ĊO RX@Dp*F2 t3Eh ?6!-Ľ5t3E7~qɾJvk*(7i?;ApNৠ?,h 4O,C'|jvjl?*ي0 l /QoRxSQM-+Y>?M`S54tK_Q -Gt *-b?0U֟6l:`4/L`5~>x?#$\׺l/Н .)G O >:͍܊WLC* KJIb:FCv "Gdg*aRv*%BSSFJ)6$iOOd!λ$JzI X0w,: _colH,H02Iϩ-1#I7.#ST ZBGNA'{/1 ACPiBӈNRcjĊ@#=2Ni]~75oR4!q`Ln+r&\O1UbA!%摧R9b@&3vM~_ck |M|~4€7uZ/SY?3LK~l)ꨄI P)!"9 Q$)o~iaR7ZAJΏXqUqͧwNf9@dg!FI'$؃YS4`n @B{c>^J%T4h 'lzα>Ugfjv^%`>Z.c "y1xaҼPa|"b;4$VcK~$AK%d#z *:9٠&CoRpt (84(b!< IDAT9v#ʐuˤ7^ޢ?"="#:3$Gb/?{8AM4jgƻ**N-IjV6d4Ւ׽ H?_J y1RzO]S39t;&O庳;^AY1Ä c )l*gaPU)]О7dž-9vK1kЛLd-7"L߾EJ);#q+s$?}Ώ?񭝻f&X:ɋ˄ DzP.}#Csb^HhYĆ "E#qifԒt)Q)Nk1S11 0(ktfOèwVY3.0^{ ΔNj=ϣV(nH4ZF!ߛ$VeSɋ4^˨a(-^]0ld@$T:鿸@qԆF*`hI`[l x &kY ;4[1^V`Iv07g&U [~ Rn6Op d{(4jH뀌 뒨؃ Le510>Gy2'z;&Q@Pyff]4>9^%"PD ZLP Q nY0rPk[/OCc$e]g6gip cÌ|*`$df~ ?#Y%t7R>C/&b]Oi<: @ TFNP P(܉N%P2A{F{sl1!{Ox뮌jzMu{(<C 硖KLЙ)4FpA"N,4{}E\m ?&bӻY12/q۠YuuDH1 s!€"f|J֡$)Ajo;Ys0;B$J_hTLÂ~[T_sLid746N b{L'L[l 2G#=b% hEu@.:^8ЍE /+KB"KB|>ڧudk&q6P|:M4S)dxlOW#JHFvm fLjԿ~@DgCFv3Zsܿ\cHFB+d;D@+(`lj5N"B Tz&h0T1j.N w8dhM7vP*D't'R1NIH𸇯)(IA\I^1y D3T&=t-8Hw/}뉭%2uW &Ckt%F~*&VnA杧6bB4'}H]{Cr͗F鎫&bdL4Mo_@02Bo.Hvjٓߧu;hӓ#y…1Dݙ~ZHo[PldL ޡ:uz'WBB~IZA^ XYg))yTA桏B T=e%H eE|~O!P=hϙ2%xE)yξ|p*2*}:3KSꦌzR{՝TB}M= c̜N9=raE $/P$|ީ:Ծ7G A +]t楚*L:"Φ)^Tŗ{?%Ves0+B/$VUQM#~)$hEA*(](6?+/Zm[}%Htc"+&LF٘Ȉ-œEwB Ʉ2t%Og$p(z$4Vђ4)2!ԡo4r<tcmf,T@XMav:^?v̖`" +Y6'`63)8Y%d?g]@b, ]fFi=1:× K8ݠaY 9LL51} >*m]cOp-K{p6Ld`5AbK54R.o'UQ.+TwXk鐁c;mU߹"<?X%\_2T{݃UtNwp 5{XQ*1i)tx);-rKdk, oI 9S@p@f/Ƿ9BxswNj˓U,Ϗ:6= Z/c5bZǩZx4Ϟ'0r4$ٷoIY ֺMt隔\yZ%KfvMa-)4z6 k4} 7ֈ2!ot*o>VaPE|b27_ neMٷF (VH]3P'(v$u*~\~=\C&#I6lJ Júmr&72oHևwשEadRJ{74. б32…1gu3x]dSdHjC6§lnW|]/׺8}\fC^C@ Llѡ(1Xa*fh}H{]# &os,C?ѭ(D]`ym黹1nUUs]C= [?&XI;Sak~Gܣ:O:lSTS(:Gˤ#IJ:# B] &p%N U8$Ⰽ?n`O)4]iK*H`p IuaM3A0GQ'[,f}cX \M oetJaUj!Q.) Ʀov ?kf&i7(e"5g R Ķp;@eZ-W:(~ )}Ԋ;!ͅxC!nV8"B*o.Uyi IbCÌmTBS4&zCchKz\!}Olz8YC0>Sc_Q/,{>!aRGuc­AT[Cg`0P=oә0~5F ,Tc[e~Fed:uiϓ\ChU?J |A5sć݋~* w`./-үE%TsI_11wb-7};G4A.N^djޖUgh.J& vֲ>5QYɣlTIm 5˨W-l:;uW;S:xwh+#gu U6/0MXND2:VإCS I*T-+X1)vA-y~%Tv;*F??8T~ MGsbr891ٍ*P3l`&Hn26f\a=i>1uJ1~1Ak^gߞ?0dAXatc9L@1A%y!硚&ڙZߗKS0T Pc]4aҞPd~R1{&C*IA@;l|Oœ*6?-h/$ؙ2k#7X2s} 'П 0AL: 6{BU)UI<"&N ik 2|eT$7b,^1GMڴa! @#'  N-dw(+c8\b=Zr?^ְ]RDPxd!Ȉo(l}GIYC~6ACl ꚉ?㒞x::J4j~Dob%fϓqLj vvHwĸ,ƅNBF%Td2˛(Bh. eyw~C2 oFl>)XSvpihmu;tf4O.v-r_LTH]],/zWPb-3^m`tV"]z2tlG=:tFdnkL}b73C ݆oQ;Ha`bxGk-ra\r)葷yxaX\U(܌X*d>ʼnr&C2w5Γ'o頤6W $_43*Ewʯ{4or(M"FxM{VƦidGϢ;Rp` VF?E)0X^AQ@Cb]iՈSc8w?-g`Og=Jހ`cħ]\&gAJWz2|B)5nHa X}6UISiz?NYv?wI$AbTl73" UKg- s럏̟uHQ"+a3]TKER~Й~eե70˜LG䨤rA ʒ̚ W4s6<|i [ޯ$s[#۝L}ek Ki(ALtF'*pzbJzxlȮ$ UcnIʃ}-7x%/!.h<}p(<ֿi:34>9*}ȫ}U'r)GnzfQícMOEDl8*^.P*~*{FgJz#>u?S}eo&zr{0$P"h_F8%޸=릏p]X.8_ /+Ϧeh_ďt]kEc=w 19.*m(">uXgG*ny.NA)jg R+`6T#ڟtb? -!+LKތ}{s \Gs)ܺCd(ZLjyb/-UR!sh,GcO2hVy?8 \e{ְTmI[ZOAY17SlfWN,ܺKq!fq iӭ?-@tDKlE#*&Y[X{-s;UѬvBO(]OJC*A:|"d$TJ%KẆv!`H\O|92$+kЙTw~4EhG9Mۿ$߻Lǵ ?=OC[7 OиtNZv_aRsjWo[ۇ~dӒpi=Z猴cↁaTJ}sA#}KqE/H(`P">GrCnPyOsjH2mU#,ܔn#gij{t`?-EץzL ~j-yNp뎌PrkR--}:_z[[PhD_]4yP`5wBEI~4Gcƍ_9pTf~"6{ϴ#yt΁P_}ȒԊTðwת-imV%Ԑ)yOvkҟPVLF^ IYyYYY[VUW>=3M` H )ZaY*Br#, 2RHd[6)lA$ I$p FwR[fe/N!9xo_o.*:9}|Jb]o:ü,^CqklK0?  ۊM+ ψߢCL>rT%h?h D"V􌝏/|=Άd/F_x vS0kn(^5mDP}Z%drDЌ&>wgkp_Pu|* `]&*(^ƼlSz&A [co )tMy?eJC̶,Qd'7+ fݗcxJ&3k889=k3X8cܢѬVSdAc'-R@q7Da }"t.ޠm6/L ٩>b\ߢ"i%ݧK ?H+ dMԤaꒅoq.3Z1t^i0\͈ yΘ̪ɗՃ_S css-Nj4t^q=`_kf$oH?^cgAM/w=!FC,0{&wBb4M 翢U *7$+ϮqW uNnqT(҉>еM=f>rس.N3X=IAI{}=B9Bϫ m;O&9QjLZΡC@nX̽1u>T#,)Kgr:`2%1hۑ8gSԗh2e+ *I(섇Vђ܇yX'IFI+C;894٤&#IZHd%mwFrA7=~e N}Зt?5EjBn7&i9ft|-k0p$C 4EPh'Nuh(il}H2ٟ "PG}䩅oyFU>Uἲ4ޟP9,M$_h*It)Jx5km>R2]Pćq$cN-9zJ>_2h~k v2}r>g )Q* 3k{5/$X݅S u{Q%Q!vI=J~rlgyFj^>3!q,Škk}t39`+{0߸'Z WXxt>2ߞh/f _ `UIr&r Htل׉&9pɃO*SMn#m$ <] 'ԪcJō=11nxڦ1$ƻ$ |f;x 0lEzi@BcOoJCsbTP-.O]vv F46ŕ!}0z)!, xCg;&FD6ĩ]*'Εq}?z9Y krc_&v@v l5E~+{t{6}.$5^{F`u%qB$NH2>6u]$Osw]#7 d'>4P7rL9 }.nC%Rt x cA21 1shNҌqn cJL}pHٯjl~C#)ݥe&:q&8=8<Th3b;o4{B#0B)/ߣ9eR^o;kqoUɿt8"KIPHDxQ7N9ɜNXLÌAVlDƋ%gK%oxxO/:$!]n-Ϫ:}G43YP1'oqyR[uH.l?>U@LflBf 9FEZ&&ڙm~sv,L4F6b] !dKh- +gy1m6ИE"`YdX޶W%V ƒ] *ުDjy^vA#xQMGF3^/S1: D1cb I1J[$^`f-7R'C IX=[ZDNgNθnC'аxa~9I6o- B$[*#i❯طGwX JuJB7 {t߮#pR?c[H3eͣ gн] j_tԠa "C"S#3Oߴw!ߠޘ&tGLۈٙGV%Y4O?7}|>VQDDog5 :o8yWj订[j) /0]dKKx3PwNX4"P~EaXʐg?Aኤ EQ3f[?{;uvx][&W Me{% c߂T0Lb}w{$1 W` 9dd1wƧElx ?cu$~4>3}v(y> ~b/ O=KIX?0)czz8/:R .*B6bUXϫ-YĤpkfPHUL[&q&%$m`v}露 e![(dVtީwJQ[%l@z:ZkS<;mZԯFS&Z:OrVLvlbv=Y3(A3$?軣DZXZŸ|n/5pg-r"7U6Mb> McC /yhԖ~]qW*_X{zAEe+:[~,ŬĒ- 9ԑhKy:"6vO1ĎNj!Tyć =Ī4R Dd*ٹK?D1.Oۘ] Q]K:aDy&Ch&D)ka73*֦O FAI@;Q: Lrc 얘Miښfs5dkU fJh!"%2Ƌqz-ÝiW5eHF&:0CF{$?|hwBI2ƭWW kh*E)Ƞ晛顋sJq{;%Jhtȁr^K*-*Y 0Xy 0p耕0}F 03*)PEIWRqb.`xa z^ 0fY#"Ae )"Y&`ڬU Nw5 c`L6v{W[Ck ,{6;UO {9 _8"nhwlՈ*Iq ߷;[SJg&K8#FKC\•q-Srd~Cw{4fV .Q.ytW@SR٨"K1Q$v`dS^ j1>QXSm}6ox D6D "苮:pG9@P*{Nh8W,tOyJjYoR(8g4/J($w>Y3 vN*wXR(QIYS3#$^+E YlNrRcGrT<$1p6$P7%NJFvaHT2 N,wUrAb Š1DHʷ!TtOXhNɤ{UHt`wyJu4na1ݑxo;OVLXVL|;O$5fN<3|:Wdzf@n[IxlL~XŠsiE C1.|cH࠺Ѕew71Aݠr'd︢Bn5Ml'"ؔoit>zY&I':iBD v74lTѮqY },)ldӒŹ nI%Ě1ANjg=DFdĶ j$O#1YKʙua\DjHE2wgGA'[77Tt- =IT3og[R˘]e(T{. ,ԍR!?;#yr/;{WAt?cZ"$s=&+%NL&8%*J*bjG7'<7-܎Q5|pgʪ{o}ǀP=ğOF:ÖAhLLυγ6; AEy%yM< Hiʡ{y\GE.w1gcWc FK:Z 5@Py (2n)Pcjdh`t2"IdP'Tc1tC1b.'&㞃s˄H#7C0e 31K j%VA6qMjVVZLyU|9cOp3&s- Q@0$:vNg0KC™ |JAuC{yv\#I4"0,qOŷyRRS b!}[rTge+uq6%˟Z#4%q#Hm$ .,(5 LJj]Tft70!gks o6ރslr ddJF:QQ@<1Db03{`ݰ0GJ2$ C"zr"J5jW5F PD I'z /ؙ=pm{B@Y(35o*HT l2AZ8IEUIUQQD$ZtRDu 0i4'*T^wA2SWJyW1:DPTvAP K  *7&7㳄')J a'>4 o1/,/ouxCZ "ʣUkUC<ئ! yOWi SIf^+&6%[ј}3aOh/CTHu@j>6P-GvY )Wџ&1?˰j܁T]kX D2!rZƝ5ٸ8z1O IW٨;oTG-ĹLA 1Y//L8t|K#z:VG'g|w ĥ`SzJDפpޢ8j I$Q|H5$6MAEQ. @]ϱѦ\{"#!xحӾWWIPJmD/1mjm$!V>[_,bWթ^%"ty}IVJX ijo}4P~|#q8NNݍ*8 #<kw Z0&zj IDAT3u4MSN=A-ޓfB<0Kq_'Z))Hs<4L](DXI'w ,*NbdHc%S ZD?$LH/ju7\-R&9&IfM=eUHNX@PjH7#$,r{-OPOQEHUCJJ:99QԐl~@Gb]J~p" `! R@ P-ԔuVKieH¹* CMaBbidR0ui)kZc^~"JUޏ͛ecJVZkDGފB`cK5ZoJd5`VtG7k)t{z+ '&&o~<-AAfDlKG&*IInI H/б;h2+s"_52M0XX& ` |F㢚x=ڇn^1Elœg}rpGY0/tW}BM^V^mAbA~C ;:Nccq^4R,аD6ȱzFVuTY =YPs)~C2x$AB񢉵dd!523#',|3$4tC8/_MϦC7.c"V?F _#>"(`Rt_p3wo=H#ߺ̽_Xa ?Q9Ȋy2M5?z>QooJ+1ZD0\"Qfd~9T]s?i?c!t: iYVoFrJb[-T#׉':cHhXT|꿠Wnd˳Lt&ljZAR+1![\PyRP19/XsI54_,$T$5RJ Ud0yd(1LZ m1<sl5"܂wb97;.+<;M jdT|R`mm i6$樜7ʙMdBFGO V cxb3kq` g7"IaQ2~ETRitTؽhwDgr kZ.ұQ ߿dHy)@TWhB.T?xg85Q$ʳ&wO:w{/VQSplat b_"rh4O[+U.Ć Q"~a)^3%(/`kX]`Mz}_j,oDwDĺoA>&9b 1 zG(X M)ߐ<$%F kvB<0) 3hMCܵH':YDL4o·U^P^hx'ڽ.oyd<%^(XCDL<:CcSOl, d`CZ4cziPO2>cչk 4⮅>V~(1XP}K*)QSd~Z ?;!tDƼDWyE킆> ʦ&oݷ6D |#c;[Gg(P0*'?sF`$;q%k.H+?Z͗G"kӠvE ²ZrRaCWРRe 7qw4o'lʰc1}V@M+NKn?t [Gq| 0h񚮝%[qcw{9 dg{X"F#zIׁXR9ouнZx dO"B 2 Zߌ;&hہMћM47˜ȱ*hAT bAKfBjDsz־D d@C&: j3QH$1C5afh#s vt{ ~UcvWAE=݄#5kuDGcan qFS۽ճJFKCz2k ԾxwF^T ,́@]wXE~`;m`{_{! Չֱs"݀ |p6U1VSAUm (?,5S:Ov3jLN)dGp9 5J j-PpGp^}\Gt}eL+RZHhOЌ)cُi]+d&K)%'9IzV_A*rm/DbgT6_{1Ȭt7A$ΐ 2R f̫Cba8tfBqSvW+&AQӏ|y.֐vB5i3W!t_{)2~t̯C kAT2(T@cQFdg/ g{d=j<ܧx3V_D YHXٯo*´N سT}Q>n|IR%eu72*_XC `1a~;(#)W ~>]C]/ŏ.1"D)_JbCZCҝuG'*C|~7O+${=F5Kh~FWQeb#?RUTp[ڂޏ ١rkBJ|mS5[#o ڻhzd >O GP[bJ1{v@RU̜.(ld &k}48*x1cogXVw-z V7UoR,}=P̄~V~##'pԙ J?#pt^O}l$\%+#jr&[nGK;E$2RJVWlDcUĈ_InGez_☠~q7H;!RU 6ؠ|CχS/j1+wE [t ZmV`uh{՞W|2xVqv2er; &k ;ہ=Hw-Rt=eOR1WqZ>cXOl@ngNfA>/@u=vt464|sG{dv_t;_|%5VbF-qxbcްvN{nO$A])D%}"h)HrmO]PE|Lj+p% #+p n;񖊤(]4 ( eFvߡtw\RA|xDw3:܆FxEdBV3rMQ~.pA 8lƟYĖd)Ci?$0F{odyw~~=w_h4 Hq)J%ŖD#ۊIdfǮLj8R7ɮȖ%YXe-."@l ڍFo'Vz9]<{iܫ"F|rinYpʓ&_ؤ?nў0:n\&p_GD5lXk`bg#KʯtL 2uR;,Zcqe w{+o Ѓ' Ip#$FBh@y^bLdLaU~,"2šc~L|Hႍ[PPxe͢C_Gٴr#t4 ?$9樾BPE܉YTWbSHm(l>^`pLhn?VAueY8l'wN 'meb;: NL/{|S":z/~$%kȲN2j9:M(6=;J <6$!=֊Kc+b.6i}g@ 0X-5 Ͼ/15 d6FWevnF#ȑDLiKH0n(N kȖ]x PV01 SeroH$ucb.K5+߳IE+ I=AAaCv@{RNj ȋ"?CGԿ=6SY2W4{|f?‹G eO/(/ؠqz Q{$Fҫ u#*(2JH䕛H4AxufAA`0?*"s"[y)-+)Rwt't6|g"G.28Z!QcBoL#|I0ܭy{@P|Pr9xY#8K#DzF(cCJdKpSNSy(|,wL9"xQكŲ.N%BSs d#<]rP=QEfhwD/SD3n 1;UE^IU['HD7$rov:['#$l}BQ^slq@M@lGW%$^CU.k=@;>zla>DoTjn 7. {z[_䯄^ ضuiR<"|G17d~`S?,FMCӚh !ʂMԞL`N :(YڏW{/Y~F#!bMp38>q6*^ Ӟp#U n?IxKCq 1$r?;@>T&vi in r2IsA3K.4iېpэJAHxc# &}=kOh-Ѻ]T{LAL|ΥԐ]?:ͧ$ D 2aM@/|cRKxɘo{Ds{g}F2BUQ(WLEc:/8B3P*ĽUÿv /#/o1ܓPܧΒZ 31]TBuW1/-Nz{;--vJTB6EJ߫bBhк"&ɼmY}(ÐKUDCdCT$CtnGfbbn(D75UiDP՘ޒ݀. V"nuH4'bD6 u+Ί8Wd'0''LQQfN/4*L.{BkOgFH!{pg& t4[wa ̐R3QLEޒ9e諁Wc9H! 7M')MroXsq^҄K.ɃU0hېQn FMa ӊPkf5G%HXg'QV} TP'u$PDY3\jD%r)Mĉv$,|4>*vpKz%֪Pڵ.L9Nb VrH($>oZ&'ܘD}k47l*vvTj|lQbs3AܷQ2ה-ńO& *vJ(P /kgיk}2#jFUI^$pPEk(}o;'I$x4Jo;=-#J?JbPO4@:/Dob8m3| 27= *T覇w7XN&l~v6$p^?2$wAoA ϐ= ryF~,vz[uH.kwPβ2/.?Ce7}J88)ascDHoD{h]X1q'>'%EWl'Hvnw|+ UX{GQ/ҳ{TԽ1vAjS!Hz8ɐOcp焷hMf =!]*)+,<R_ m A7焳gPͨYX|wn%yF# 1DG폜³B"yt{uaHꎇ\Ӊ}5"6(va)jnގHm8c$L̹5\i8 ̆K{%sQJ8ɖV螜@EggU6N' ,?vDzXkp%|<*!Z7d)zu3!".KB1jVH=KIpTDE%:QJQE̺3n9w8mRd/ٳدW NQY씘'.6[B W7E=F*QoC󣧶#/Rv"[WZO"D9ܤ.TA+z4q1Xz&JwLC;X~^Tt&ljlH/.I5%|ȅ!Շ%تK IDATu3_#TRU+EkL$O"P5Y1g*D7QT%@N ܪ+Ñ(vJd*QZmմ?JdZ lso, ƺcث{tuآLp'ȖhIՄ̰ _#ťz$}g0vToluHb}̟ e{;S=cI6)H1kYLNbVv"Tx)NaJcL тP#'dnyCBǞ{zbNU >#i P= J6'8ILW䚾=Uٵ\uļDᒇt&Z^hN|jY~~,?DÂu,FM¯ Iu0KVX fQf^#F <0<4;듫M WƏ"*ye2 Q*O$Xcb.c/I.nB J&Mg2;"?*#/,2~ y nlzv'4!9=%Q'uUЙ/2(і.9$;d`qqynIA#4fDfDơ!iSNJB:t2*CY !**`0!.G&V% K* TxvJGNRepF  04gd%왢J8Ɇa=?yYB*4ILeʓ!JBq^ Ij2L1̨u3z#D/P92r}<[;/@3wM=1d_urbD/'*)iD4*.mx'Z{#>y2ÛGZKf JK)uXgHޖ ׳ŠE@픇^W 6y.X#DVe27=BQ{li;{iSlLBM u#H?w# tJ!Mҿ]g$ Kϊ^#<- bNvI}DuP U ioX34 ouSEuw֥~H%D[lIlIUj' ,cAX.fL6 +[*\4qz&̐]M?=l!*x3ebKQ I I*Cm*:f6DD'-і$ Q^,$q xe^wtI ه՟MړsLqd_buo]a}^Y_]:OwhmcEXIDޘLpk8)O݉)ė]6Vi>6JB&DiLr:Kt/h gjpoHfHy(de(G*|,wA.SySp#4#@o UNͽK=T!RXb^DˍЙPH]vFP;,S?$=$`M@Z Y2^Ƨ;S}zSo]ܾ'uT@ 0pER={ݥ_4gр,!GHe}r8K݇}_Djԏ#}e .' dO?۟;‹@*3/4k}j,M7chvZD.gtJo`Ls] 0Q}n),1hC"S;"3ZO%P)m;&Sw":#JhA!p .dSц2̷hWi4zk%FI$Q(vh1ѷ뛐}Cg&Ec)@>BHf6=©/P=`-C^HTOh1 e:2üLs>BI=$]/aAdxLkFJP7/Tr79?GAj>seyqh""1.dLkО rea6Jr'MNEf_BXHمGx'4R_ Wk@{EmT7 eOi1fu @grxbtUʀ*+8zK=ا2ƦBAaN{%FXKT1KACXkf3`Wr݊Dc0K:S=#9/8ݸs1E<8̜ǕJN5RkWd.kmxfGZ [ Y D}fY`.oFGR4o=>S1h9+1ɳ\'IC@cنqЙQTOƈlIt?wɾ(q趏/.R8=]a`u "Ӟ|(PU.E%Y @v5ؗW:E>jnEUң=Z'B2,hP$ O~ŋiKX~*FoT4SPO D5"*yڨItQ>ڍs(۔X1 <]C7 ty@ ='}QƉB5Oq3ȒNən1flj,w@juvO}Ҏe;IsI/c?8PvRaԜAeQ := H}z/iOG[mx̃x8 2qL /\BVTӚ%b߼IQ5|C7Ͻ)s164g#S%]oWk[ =v(@^#n[+%tvNKQZ `EtI韹Bf![j~[y*~GPLu7ŮndKkߜ'9B}3Jlg :24 g\NJ Ê˞Ot-; __ dK ~Taϟt|BZTw8[OgPS.ƂNk{12E愅sHP5PK=hf͢Տ"!lo8G :֙9%5!ù8͍$7,-ktqICzqGy&a -p걛Dt~ &2\Q1]ld:eľɄJ'r27G[dc!KLO9um6 z+q&^PьH(]rP8'EpFڝ:z[" r9@,o-Ad% @­}d[}!{QwtHQZS !!|C`N:X*vB&?Ao`O:*UO eeOSp$cK&&1"Ua34jUH*xDO{tIx@rIta~)e`dvpX-/=EnJ%8DdE1 DQOV$쨈_ i( M ihx1u<<97;/1W5XH%' 7CS|LAe*|q4B@BD"/gEn٤_Mdv`z…6z;$0ʐ>~WBzeAg@!hĜD{BdRQl$"B2|:Q1n2DI( 'l"KHRzq7@Fh⟾_A*IUZH (ˇ8QJh5bz&w1r`$'IB"ttNPJ-0 BYE /4荇4 t dn?匍cJL}2otSyVQ7*"rBU톊wFYda]ٕsCn>7?; 7XDzQ5װƦBD'%NB}p d]BQ :)9iWV}eER?/R!fVGD)4O! YTr vB{bPg:{=$GfEF*MdM&g,_-][HKѐ {<yAHzG?݈?Q;뒽"R?d jHlH]}ܤaf&h .paT&?]g ~#u9z&~.Ӟ^D"Kcµ$b(=cMeXwP螰0O)߻I#0y.L~adv̮һ^d>lV&Q[Hrȩw5M{ExLAx⃛ JcgT'HN)ƃ>/I,>kFNa>@TzY`!Pc;>Z[Fsئ_PQ VHJNQitΔ=];* 5ǨZa0$7wCDٿ{{^ R ,dO4?2-Jh)b@$pXf9a9׈[+z9#5482z4`E#6 嚊 je}^C+5}Z3wxB#ˇAʑu6q쁎(m'd`J#*QRsϾ%`rUdsvPp Sc}: -c0&ycNHzæ7aIr/3SqiUD$‰ 7!Q?hR<`` 9{G[?|yK+Ho!hMa/l{~${IkDoKWQI`u*?rdVD(d.mve<+jv^ )g $LGd ;Md{M6QϲCKJLrnn4Hi-aݩ \thH#G-No,DjiL}q/&ln_ [*I {3w1dSja$ԮY Q L|H =Ia?jݒ~ۤM_Di[{GeGM=홨:#!A(.0iZ@s&1udY@݁=d=#&m1V Z\[oOv}m{3JDqXjP2hY Xԏz1gbp%Cg㤄] =_<~fNa]1kdxxh7},eUʉ&rWa<4@)ޢi(u'_~-1}`ť=OƳR nRp1fTo䐿!dd5dԐM_Xm}J$%X[ ~:'c$NW^` >*\h- `@dɺW>'*uCac&9 J6ƪkj*I~'JF=z&˧I΅t+!YҫEVHo$z(!lgyJDLV${} v,g[4zK7nKDWdy;A.ݒĠ !R 16Tv9o`gvTS}b2ž!k~k+Ƅ?z[䈚+*kM%̯]@E܅ )bn&ZݻR)lo"<7%\u`+K*&*4%RWU( jJGb<̳1i #alLxEtGnYnܷHDUrCi ?2N+cUX,8I{lH/lm%xMۺ IDATy?aMCf1 *6Ih0vWt oza@؂!4H,~('X7C?2O|HsFEJeP~J&r8{P5MS l@mZL~Uw׹gQ8,k4៍RZaޤw!jwaV!:pR]OU3׋ >ZK G1D?bp9ֆqO&1kOF^70fۜϽv^%e/Gwrbùi*t)z ?kFHM'Qit-ܦI85$qEO%r!Vw*5UDR:re¥!Y 0>j|'/Bm7 #g[fD_(}ñ.GTԞ۠jNDtd}=dӱx,oEY8_/pz.مlbrKe;P{0ط< irJՌJlNeޣ?|zF?wKlʤPb9ܘooFmUOĿTV$߸oNE7n4gKD,qW&$=Ġ [\y&ڥDA*e^a^f/=BY?$C <'Fw"K؍Wujh"f(1`uhޒH{xh= iq&7.Q;#mr{l#v("BΔ/ J~5@,-ɝV$S Z#2f#D4UMl}B&h2. ),'SG'y7$Jk)h]\WP̪<5GTN* KuIz^#ȏR{jI_trMa2 :F &>33FqE=83C U/-`E\b YMSxQ<gዻb@P2,Q@웁pA=Ԁ攌 *ye7]vE!j~HEĞa6"5vQ[+K0>Nn@&"-}OuTr9 U݊VSQIC_b8@k*ֲ̰#m[Avd="w5zQ`#>Re.rzBSg)3T&ˤoB\2h(z,JwHh W.҇K(f7.ۧK/Nd ֢gg FDY@lO\ȱqFD~G$_X0cEB$!!]hπz]Zk?k8LtUۊk}\e6Wy+ 94Z Q;l2(dBn%Ky 0$vH\쎣w@ s.-S{o`Bq%z NJ/zCd c;LXQ0bmpl{RIHmޔKuS%u(a'*YSްͳ4.sCC6- 7#[25p5~AVٺe nm/n1<9޼]Ȟ8>4̿M (ìD8+i`2C=v) Y6-}쌆C`B}T?dRSqM!ΈHI"c/ 菛tvG<f@U]yjώ.p<1epv; :,o`gCOv=K}@AHmfK5تNŞqRvL2xqRecYeKfSiQN&z}'?(N/d]}==?r{?`7-&ɉXv$3ȇAS0. BSDp~ 1P:ӈW; #`D^i{OKKbaܵg^Kuu% ΅{5Qek=G!O`A$$CxJ@(ts;s̐` Q w lTF1A.ķ%p/Erb(ĚZPV3 f#:Y8af-:.NK*<.'=!aȉ{쀉KR ѽ, ?S]H.M /x.89A;S}-">44㲬Ot)_K g-5<gCwMܼB0iC e;(kT5YwΠ:2Ӥ `2c3ZZHz%)B@ȵ*W7W,z;7] hcN^,[?{(Ũ!faW9TPF BN$GbEI}U sZr-\IKRκ2?bn3SpuE} 镐b+R#VԟTdN+RӄfL˳&kLl J@gEd 7e0#P;"h筍24%B3ƜOY~Šn2R8D;, ~z(A ԊC~Lo!&{oLhXkYB*&ṾiY"#!i澸[ٌKR-,}Ȥny~+&">)D])J(m*<T6@0;]-9fX16z SM&YWЇJfXzHX@D'*כٕ!k*A4]_W8O:'%*We]N6iH JфDl=#4VHEcT|fAu% UFR-@R{R٭+i%S9$ezݧ4M.+$ 5Ɲk Qݝ}NRG規=1$#2%Litp 8Gu %+)xߔ\u*Nn,HEB#(\ZsX.LdG x7eG!}KUGSTrCkfh ~Y<3R%ԪKYaR#ڻuNbd@mvK_@.ՔUNeȡV߱۟t)ݡF4?uAU9`v%TT Z˽)&# @4ݝڡ&ԑOw1oZ<I #^?9Gj3°*( ,ɬtq2Ѥl7P̘B#H(pzԲvJ9Wd~.{\<ѕ7#磧Y)rɻ&|g\ś?Ir]o:^2 0uDk@&-EKY++T?6Aϵ*sD]*}n/ \Eb5G i b-Bƻ:pAgvbE]З*75)&5r7Uj+GL`O?ZsnL)YVwh&Achin0It+1A 5<-=G߹E/`Gw 58/DdnjAp]c>b V[92묾UESL$??R=HzzB~^SFh(QyTxy61}|n4CYK)$/|'(Lfz.=Y> jĽW԰S1^=V%y1Io!d퐵0CKۭeVժ(A].o8~^o-DuZXM״k2rq6,>kt\ X}>KA8}v?CuDS߃&H9Q=F 7Q VIjMvىL.t[,B+ I) "PQ*Gj/\$zI&s1Udy Ƕq5ՙ\L_d*ګ1Z!{e&q0<3#W~v9A˛2XԊBx>Cne5pO)M7lҫ1 S8odѶ5M Mم|@FA?K17׉+u:3?uS5Dkx1J;LwxFW}@`t)$7>AG9:$u}At&hRa|zHv-~w,{# }{bvLo5} 00 ro>?· rA(Jn[VU`}$XQ/acE X:Ga<rTC2iU*W&f:_ʰQ~JC wΠ[ĪΠUXWa{dC'WsF:SH95p}kH@7l"L0K4Ee _vP =w}<J [P}pHU ~ o,{$mxZ/9yw- C  8Gf$'"T.:4NJH8 %߉W_^9dbd[!3(K*3ƨ 'AngB!kUGRI+: 3BiO [I=y9=X6|'=2qYB5%Sş-'<KuIc #܉HKYڇdv/$"Ro/Pʠ*t2X(]A-ʦ `fv(+6PI- k>mɽ(|)uXȡS|çnI,WǂX~FB砊(d@pH4v4"ڧE mCt#`TH׉597|Ǹh{t;\}@_X{#U/Sd$~DA}*8I,x:C±6Zq%ȼPG/_gK:4_el}jl,)$VýiW[dqa = o+ &N%"$ƭUA]nslW+ ꓿5&_EWLRm.F)QEax7.1ѓ|[~EN5(AyzI1}=RVjkS,Ws1~."Fvy ZWcpbD J)s~6fX d2 CJ k4s++t&᧑`/'?GGőB,N9& TEplNR#{?4I"?[E0-oOR9zLƓܛ1)sjms2?\_\U1q'J :>&޴n%B1"UJ_%?W.H'\$$^?Ȱ)r>W'D HN,lSo0d?*Fn'#"Hnnjs*{П3,3P|AF=/Z!O!1Kb_Li*}F}[e-F(JټŨZDčTԬǡM,̘X ݂^a'ArY)woVC9q e…)ڇMJB룼1b]%uDĕyf7"24鳤 )GN)2{RfG@umdܭ>I 9u|[a ^}N?Rޏ?~M!OI=UbPSvU?%!ue Օn$Lj+kDwa4ƘvYj!Ϡj$gg(y IdLIe`Y8C0!J5$m(d-@*P#Dٛ>qm3F)hN֑Ӫwtgtڂ̲GД5HFWNT5$*ʪ)?%#Mf"+!Vx}04hTwG5)Dr+ ',eiNWJH~m] C U#DW'rT*D`Bx63l&L*k[dABfQrz rwby î]qYVb/W4X{W.حZcn6xӣtuDX\"3 ː)U+îf/h9[(2]m٧OH'EhDCYqP4Hy(7>:ҽ 9uN9䚺[7d9r7ݼoh'䆲yT%ԏ '+?'p1&3RnHϤwUB%?s/F?"R+gvq̮T֊7eGNnw]Aマ~9&sY^Z5R_:ϸb2Hԥҧ X.P/ q>z$Vhx0_M~ Rk.F?A[бceZj%x|ߎ&1FGV unH窱/[#O\A;v!F??ɫ*{Q#TGzW/:ChB7'7n ՑYicnj7̺t(۵P#ϾQyuIѭ7x+:ۣ2RQp''8/S[  -k`4;tRUՇU()녤*vهL2~Jf;bTh߾HٔJ+-9Db)^jKVWߩtRoQ~mWa_ IDATNnl{o^;ɽ)DTȥkT< ͑ΚĦܰEG{\d]a&+J}1 KA]]uiR(iH5ySXK|Ց1.ᇨn]γ˒@dQ)ul@8yyކtXƛ̮>il1vFd\LBZ/I_|aDz?%A[m;bNi{cʎ'f7P}Y:67AДDo{Mֶ)\ɿV!AhHWK#yPy9=ED`KxX>U(] e妵hVFJv  -J(>ug΢8 auw(۽FvWL~wF?dƭ5Fn+.QwҕQU2K|[BY{]  ,%v/޺M޴b5aڹnjro\!̮;F# 䃱 N'<r֖]'Q{LpF?Dyc`$#zфdeK^żtrRyG$,}/^A-07(n&-y؛>1nNTh6! 3 mKr#^=^CzRDi wR=y$.X;KyZ?6CwPR&E3iY @,J@n75&:tMz~Lf9 dp\ j/'':fDmA`kX_zmfe#&`e᏿ 'ݶ}lq"0G + g r7T?݂ Ghҫ)P &urwFl9c2[k \1I3Mi{-g16ef3ф@Wܗ?z nFZ,ۂ}]܊D3@o0F9#g<M*;ڝ5 _ctg1]\:V0<d# &_"I`_)_ P&ýi 7ciU0*']CN?E3<}j88hy[C\r.ƅ;?4[+|ŧuDgΒɿp[Ho'`\1I4DϾJ;)f똗x~ gLoL+`,g_;R#;-Ԉ秠Z!t̃d`1=F IT5VduDK KD}ta/^O X6S J[hf>)WHB3 3/$1u^Z!w/GEAky[!F=bEAw?^ gdMS嵀KdC&e_ab@SNjUVbBsÐh4i'@5\˪(՝d\VQ|<P4u 裈݈QE%Sst=O8cX-yLNU1Q&.28S>8 wՎIؠ}@@m&l3}&7dT6Ba0ZK OP<Ŀ;*V!wgLoEI^HrE`8i}c9UY72s8 ,pH2r蟪:x%Q铲 "j%2wGh*)Bp 2cF: C)|T12%4GTܣ5gv)_\`pMOn-3'PG>#eR7Pt VPR6T/Y^:ꌪ1"I\^F)]uI/).olL!L$ט봞u"=:V)92Aoz>y%w޺fMfZT_r_c楀/o't*'󣾥 =rz1U|7jl+j_PHP6"H4_Ekfe#Dॵ]XI [dh]퍘 9(\|<*+(] )^wQ} ?O+LofeUP}gq5Kl W2Tz5HU0EY K6ŔS4=,bHN㉈upB )u|E0dH:ʗ{fa.K z :"P1HۈM:Cwq'(S*q~9>{\CEd"{rLs6I$V4F:$%6c>`oAs,2{2t=`SYo(~gÚgU@etiFiAr;dr$7{7y~s!#b-CUfw/ʈnQèdJۯ\IJh_6 `-A@)\WW#XF<(c%$|k g0jaeYQZ}T7$Nd~"ML}y>h ]mOZq *bf {Ձ:h*buZF-1+@(rUƭ]U͖T;*q4YCk1+vz-eUt/s?[OȜ55ܢ$w?|)UJ,/N6.ef֦xI*pPN@F`]_!H;*(;)-"]Ao WL"MC;yʘ2Fc̨fumB뺴ƞk6de-cܒ*%ԑOh6~ {#;j=k1֩??˦U^4>yT{ՕJW>1ƘXW7~ʇhq5rr >/՝i;;l ŏ0 c"~cՈGcsJ¼㰀b[F!<`7D җVCם͎TJב|5+>)OjϜ`\s|cՑT̢`bH>އu.ViI/ICbAo 3: uqVPG> u2HFw/#(t0j6ٛz@ߟOJJKJ! {TRRn.=*פ@}YI"k@6f?s%Yo1Q"Φ3w]vki !yn ш/\'ܷ{-WL^4+W#=!j0a6]Ho UNW}5m)/.tguyLVЇ)]$(nN Y)xt4:6V0!ZZ BK;Jh`t~iq0]RCK+%d~I{$뤻(W&7JKiO@,凞`8\!PH]YÝJZsI/Eפ?'~c&r/ԶlQZ[̦9?4:Zx.d^[l~-dˀ&^rLguJN\( c"+GVtT\Z$[b($/b^1:ҕUxC^Ӓ%faiZ@*꥗Qф\V;d8;LCtuP89v%N0c7\% d(j'ˠ*0` VNi,ɧM&%)Y.Mp"RtpU&^i<)h SI0h J h1haXDD/GOA}*P.2zjL404nҢ}"MdR[ {u[4x)OM Yrb&"֓ k:HMRD&fOЛW zGO96~z:+8cnjĊ#avAD2u緦B9PBƻU"M|͗H kKlC]Tl6I,kΌ A1Ǫ˂p,ARN">fC%`If ?5os !2$%O:5Ta04>f fǴgU}x6`OHbV/70\;*cG$%qU ﭑ؎i>.,twD **j_('j fcpʗ"H=l?@90 Ry.XG*)Xwf (F l ,DH@=K^Xl'RћP^1DYPը~~`:OU엟{*@'YIl| &T63$)osĊxgI= LYZj |[aTQ PF F6tq&cE_B5U(My /=dzF*K C{R O/3{MŨjEY)IAGX8ӄw!&DL9SYML21;`l fon31xwF|S̳rw!VzquI|5:u:Պ|ebI?9Bb\!$ Mq>1Mn3EOH7NhR}"{ġy𿭳2e5k`|ܥ;e0>5Kg=SOK6M*oo5Pכ̒[."":T5h@0{gG}34F5Ot' GlOɌOh/]&j0xj/gMGd>Kxd_eNX:R "R eQ '"J?s<vxQ/')K'6@T+$$܍sN23H= 'VUCͧu"ºylPo#OP_EOykGjX/FGD![)f^آ1^Ml5[OΒXgTYND;7sg S` UL`@V _SP,l~bAMD4Z*K3tӨ=V#ԡ K3h??OPMGfEQ u>Vu" ! 8'jl"-&Id`TQߕC(?z|K7ۙw?;K눂STk˂mXX$/ LMY/YGQ FL-L6&ao6FDٷb yW澰;StNDK fd|1PiTY'4X(tŸ3ퟬNY#59 WT:tD`^Z"Е9͉gT1beo=)b;A5rϟa7GJ`0 X9r>N^cd*i 7$C t ġlO40rx~b]Pʵ4~(/^s`^NC* 3iD3D"*x~\KgN2΅1.AN`Fraݟ}߾===3= $ڒlYzJrRnJ6rR6qeKD[Z^ˉزVzF(|pWOp8ɟ TP`o{9~!ۣUyx ȼGW%R[ g]W8, NL"V>ŝM`U+J\ ŋѺGKf`ķQVH jɽgp^c?כ)_EOh<^`eމ"yK) IDAT?<,iEW)KaLGܕHub=,8TAM}HF2W>qq^Ԙ5o4J:K~Jz̘x$190eR8V))<`3E*cY\yŨ.cKȜk1}TbR-aw*ɬOILi2\N!>SvuN[;lIB  H>I 3錧eBL"-y̌yDѩ}_yȥtAs2&dmdDU~)cB:HQ(?`(i&1h n^"%z@AR:ٵܓ.O(LOSp'4QT*ՈDHd KKXu#Cl2KdT/ !4$&_p}`!Ok#& q$*S) ׅ4s\2a:a#s7aw_bED,,3i$v:#*F[Jdw'Te+.͐t O SbU3 ƨC# x%3}Ix%SO$߹D#m(ތh!Dt:s$%Q]*Wth\⛤Cpll߂U D!$Dt&,Ov-X"2\UXRR<=!h!R/ϝGb}v> J@R pEYqj?Y LYCM iBLJ٢ޡ% 3&:O@f\Q115Fm y QvBK'%yslKe7`tef"n5pQ& bbWk]5,\h=bb"E"{]}&d#0"]n$L*ȗIm0@ؗM'qm3@ڿzݏP˳GՇ̟"`I%H8f7}Bfx0b;2f'/fY[\{YܭIq KDVE BKvMX3;O/VbU%}w08>WX]?8M`+oc~ /rOGeD魈Ȑ7J a bF2@"FP77$1ꈍ( >nfQ yrjpNdRႂ$? ,)t#1:U诨ĪGwNVz3!Έt=3Q=g2}1"eB(2-ac4'fo-(0m2>{<#F6aJ#5q<ƕ} z_DxN$RM 02 ydB\PfSH8ԩ|k W?Y$:H6a Z#efp-Ch+ ȸ)& !WdĽ7YKCd6鯊j;ymy`lJvɌ 2 -ȎL #w5ĸLH#bEDfaxb|j[]-Z`32&{2Ay "bѼ̨ hӱ}Ծ(,^yTC %_K)=,aYXXFpv'זIjR[#` -A`Cw\/!nJXѬh !M =EF'Of H܈ȔWcR}m\1!Q;;r9AքM8k}qvl(LOؽ_@\? l$JX ]Q52}pjFDkc⪇kfۿ緐J>+1Zᇎ"aW9d: ;`Q7Eǻ6qBގ!Ocd/D FTw =[H:vYX aoHxk7D-y*tNviQs>FCe L QRsr_%1cwE$fퟙ4c (NV}H8:Bkܒ> &V#!c=lΉ2XRQYz @AsB`DׇxA钂Ȑ#`JL㬌\cvYigvsWT7Co*k]4J3vڔ/byUX5;`*!_{+<27T̶9!VaqF&;(/ƨj䄻o] {=־Q=!+c5{Hؤ}(ccu wCM{/JhSw`v 'O ) {udJN'x=v`*MHߓ."O[-n@`뻵 ֖D~hA(9pqψ\S11ۏD&8Y-bj [VCؓ !zweJR|I_"֤}kv4<),ÚB~L} qaM ^z( }"@o-aRÄުz.w>c2cB,f0d`ٌ3 -lJsw! erRkINԴ#Q=!N_{JWo}*%Qgm}7ſ %a=xM(C%\UIT#xLbUңr[݇Tj_X 7 *sSXZ'Ra7޵*{X F[{QB gIcOqKbLfqf1|838YAIG"9^ >dZ*/āDIsTp=&Հʗޡ j Ua#*LI>Ps谮Xg} 5D.F_4:*1; NE\ `2׏#Joő0RΉ,#񤎟:2e$@e"{`tc3U!T>j2㊄|(w\o7_B?Z[0 ]1vC]觬x2b,sKP W1|/lު+ƖHԞ8$/Xў: ޮ̅*1 K!ܘ 'j|T|H#ԆNщ! *ūcnL# +/ V[Fg%*"VA|ӄvL4H}Ԯ+< n)8au^Tb>|stx!DQ"RBp52k8q(Qa9Dq楐ޑ ]QڱcI1MNQ}W}+"lV@)ԮDsb<$s`,}'3Lnjڧ#!r9p-d8D!|l␩KCjH~ݨ69ԞB1 @ԣsviTźr. {[ÕD5Ia6N:}G Iq(3q51u ]^ 9{ v$z'doǑ=7ιJDix-gğQr쐀c'N/2ȷ5- aU,%+軎:]nXG9ڃNbi~W;jq ~-D͑H-=MOW%4+:z0oϣ]0a<U|i!jF^BM̥5z]"-Gwߡ &)*?9<yRgbL4; #]#ض3Nxj4A)b|d!$^v|JPS I$›̭!Rdٍ?YÛN1soړIWTr߻/Ȯ HU*K>SeԲXLOfD4!<2X׉,/ʫIEG#lBkx>i#+X;ń;{VْpAg:aQ f2>O45ՑbH?pM"%HFij=A3=Q7 $އN>`<䗳d_9-v9&6R~FlrC[Wwi6/sݠMZ?6C 1sߝ_5P\"CِќLd%tNG2)%O^|BޚBfB"(:R g f^ Q >G(\O Ga"ˤs:$R5d_4}QUD\f|{ȄVF ޡhIEFHCQ+jL Τ=:ηl}ٖ.KOBE#@6>{*$3o^!-ݜTM-$ 2Zq suFJKDI7}6&I=Hbw_=V%Q):HRɌDQ-a1E1(SmpxȎٔvcy)! ȸS]FurRJLV#ni9P?T'G󂒢NJdnCw/XBǠVEQ_Q[ݥX94+OYlD%(J_%P%$_YQ0ELV"FSi*y x麨-7 !"Oӳe$-W=9aUQ8Wo3pLL!}Yp}L~dwU#{7AIToDs5vϨ/+$B\"UKI1%4tהݤE.r >ag\ˮb3BB{VCCOtS՛xg|O5^0{##6T^ƜЙ=ТfXO0J.JiΑQԘ &\gnLfk`2u4J`$X'H쓬)b0lG?4ii ZO]F&˸#]oq_$2&hiV'M ׅĨnL*E--#H#1Hl 9; B=2Pyyp9 R'1/]HT7rDݽ~|n>)sCCr['emQOxĨcac\ԆC|e`Q&l>+M{Pr>ڀksst6_**8ks1/7iu2"D/ IDAT<0I 3) FC%G5>kCp$ľS5,!iK8 w^ )M<3*5u i@"f$rr)jϡ ?z7ׯxbZ6R}_|n1:6MhJJ^y'AE"v(} sg)~<ӯ 57y$h 39\J91W%-қ^AtFa)ۿ T+>PQ"d5WrݒppSVygM'} %6H EIJT鯈گ$`WFu"QSgUv-"#abCH3֐z^kSpj T;/q #0"OTp7dscB;ك%>^)a $M*JH8(fpT3u}e.+]])ќ3Ik]cз2B+445BW"n쀒Dx!Sb-I%J1(⚇n]PZ憸,L8ߥB3-F_-w)>jog.!.J${UnWNXvNdJBwo(P{qcFDoU3}% 5çW.qs D"f)iϴV',3֐v`SǼ֨Fkv,g1b'@^u kS&nG36M5a]Q#u+#;-ohmL-cзxWpd9_021XNȮu)fH'&y)3 &)% ?7#fu<@4cPo;D1ƚL)}Ge&SױCFgngR1s3+" ۏ>)KR#}_{z'e܂twzYa]FgϣJGj蚅O¾Yʢ am2-Q.brpTf"/\SsZ21}43ٱq%)o4Ya}k839ȄT}4?h%;c`_qv΅734D;a\,~5r9i,!uZl2uhBH<3lS|+Ůƾl[[6^.ƛL=g} Ʌ >!ix#OtV>fR^ZLe_X/\xx*2.6&!%~%d"ˠ ڽ,yffpc̻$ J |$'Z_0>tuLqKxx΍<%-(艵6 0~;OCI"cf*|9|r84;(Gb⎍:Qo "Gzx75FJ5$++.X $W#.A8*qXVg]pd'6Ӧ$\SwH*>a%X|V2)K,I-dy1>~%BfHyE%wKolBLiRAȢG9R.Qӟ9O'k9v10 ~^bg AM}C?R!#1gI$h9McAkoo>E]}V㥛xWJQ Z#`/`92[2?ȿ S<BjD[1N}؊:HEuJ# !Z_'] ߉6 ~V"%j:PJ1ɶI HTH:*]#Ku$R4G)j_) a'oΏ9~Ao=*a9zhcKPc]1 lԶPRC;RIh;<ԙ:SVLY ;b{e J bzgof/Y 7 DyeB a`[w'Q~5zk ^9D,-Rwi)QUth^f?la$̯ڧX}( Ucpixmӯ5 %z*K~,o#jUǙ}q_DzDbXFi 3+-;Rw4"W<4GN$5 {Kb+)͏H,ՙ{)AdŢ/*ZmYaI"P ݘù5W-2 o0\]f*|*dJA?3Z$Ǥ<)FW "T JvH[3퀫79^1ڍv? tb= 0g^9S'+c$ ,AƵcͦYK7ن."kY5%QZ=XWC: (Ǔ7XY"SpqRJm߬q}RfypV%62<~7Pv4FGh#NRn%Ps?̣wK 2 )-$nlޟ":-Л*U 3 6MpCB}~!E*rfq7и-y:s3]Z .շQ+b!|!4+K"y$ūL9 f1PF; ױ&*3ڦsH%%Yb< ɉ-~š񘂗 nufs^s'7t)؀_-MW(F9SL?q)OkD9KdFǦQ'1Pޭ`vnd[obv#F^*} I]VT\-Gea?T G;ގ>{} ȿr#bXT~9NS]HdY(R{OU~-lW)x1՘mui 1"G1S -Ƨ8>,`T^ hT'w' SO@/"9:qK.(RH:8qT Mz&!Ԭ3&QFUK)ux/:~.biOCk8oNUyk~TPsD]D.dR"ӸAgaO/lQt .H>+2@ڷs4"_D>ڔJ~z$W&ו!a)Boչ]ƛ PU8!Y T "6<%XwUf^}Sf=0"\Wc&Ff]b+a Lds[:#1X+i"'\_FShxHTaQ 2ά_v{HREVh%:}WԾenUP(i7lh~0Zk)VOKn$pLi *}J @=`FO?W'{-:ųfx8 c\іDTNa>BU1,HW`o8Q{ _x?;GhJw0I(.2t/AqX_vOBQ<׮{ϣ/]"L؛ :^HaMz[Ϝ}=h=>K£yQ3: j8UzNwMcW ԝ5STW/cqiwb 7> ZbD{-2nP]YoV*aŗ<: s6!JV;cXEUm>2άJ~D.Pˤ#K^mgғss4l=&"UvɄv5k˯qG)k”Qz^w>oVTʒ,ɲlɱ18$!9ffpfz9C7iΡifi8C N=-$kd{ۻ\V*>χ_<>[tYSܖʩtD\ӄVD`I͍C|PYct&s$"\E//~5ֲ U3q2bzT[VBjC >fVdײ헕ta`ɀ_jWd =RtK ^HbO;$ꓹ0 I˃D/Y-0#|[b^c۔p_nX+T)'],8~~+.K['VPj? 8%bx7p 2I136c_cq }> *'AQef䘫Cr\'=`wN4.Qunđ(BuBmN@a"{eԏa.X5F8[{>x#߄AkeIJL.nz l|m'eHURLT5Lsz1Z@Ѻײд?EGw[mddKd4D_^^dIQ7/#Lpƒ[<U8%d!DiМQFtzKZ__5#מeU|T9*ǧSC lwh?<?y}Š$w2B"v!e܎$fίMHAՉMtńsWQFAxDD}"3dMV$B E7/'܈S?@un&>q?'rwb_ul\m ܟ%aG!w:[xQEs_'l4}?YD;u 3I_o1=)ZD V I "v^.DPTJ+ J?hlyLIdoߥy8OjFߨqqUD7ٗǬ)Xk ʦf ѻmtϭQC kMkD0O.ŗ Gjw[?ѧi _РCv.o&qp(x y'B pr)A4^R`#W= t %.X- qi WRq HZ \mޏBNUq L=C[H})Q~`P܎%5KkF_ )}$G&Ix NYI2G*ݕN T] 53J93AW:7`Y7T"yA(dϮ=z:师Dcul3Mg1,N>0Q6 t(%\8 Wzt&JN1PVBKtGdί~f7:x1|&W%ҧO"&F_FGP; p\6{e5ڢ_N0Z䋷6j>G`l6 ~$N0&c}\  }zKnpa|,+yl+SH`5rW1Lg:NAo 6>9Ct i쒭v^[QŗqhcC#,&jƥWK fx mn\ ^Phr&v2ceL|GkAhgAN uH$ų=H&[ %S!4 ו;|0ZPx\5^=NF'4 TTG8@7l:Lw"VBr x ъEGhu IO_ ]֏!hNf?e}g'9Xԏ:dl< {q; Ƌ;LÎHN+dC+}|ĢB椎tb(:,|L+h/f"mJdV@⪎]z^R0;'8:ZAN'{^Wuiϡf=nc1|C:H3j&zGE!s[ SkA`3=֪f++jLcC IDATƧa3-r=d(ץ{~&n:={P/%&k}*Xª /"HY(w14C۰. i;P9u˘@x?<,ՃA8Yl<?Osj"eZ@ W'ɇ8?msCogX@ǟ-ZuMќ1H_%VQM"VM[Z2TH"RI>A9EBmG}"ڮ8}2^'5@Eј@*7"ļU^{*C'ftTTO.>R#MiPz=d>q//ّ"4Vؙoyf E*)L|~y1tŬj:W2fC TH(^tiohOFGϬxotwB懰$˄1TB.F$onK" tڳh"pc3I̶`OsŽw {c#"Z;YkQ'}dG}DKx^0(h F5Jm`6"ҷ:,}HzF~x+Lv7=Z&0u{{ɝ-2ߊ3Mmj43h#|M`硻"5/H3Tp !)w5bdR\Nqآ;.GZwr~\N\q2K89D $#2t1$}/`Lq;K'ݓ]comT-Rk'4:*,ZAD(.޺Hp͍s>7ɬdvLR/ȜYCVAɤMpQ(}U3aij2,zpe U7R ֏&qS*A$9? vc !S[suqͨ-()domgF9璹퐼V%sNM&O_N2! '+!NVdekK,< %忿0\?=8uޠ$nl Mb]Nh8nVWFp$lwqmgcqbsm˰o'cdi3(wӓ4~y̍.ѹ.,?RLb%UPO*x97 AJQ "3_ƏM EkO_$*PM ge_RA*)C߽;T$wNa1_Й.c[7,}t.ALΩt'%ȯ7WɃԗ6 F+4wjO.ʡ7l[[U!ٓl|"S9A"CgYkE#0 ^A@g:""FT&ᨸ9DMe]d0zܦD):Z_ʒ٦m0V}%.| u]AJE %N J7{d ]3(1%^a"M*̺e9[]ú[#aiڄcT&^ Yy?TНИ 2?Wf'F.$Q?@{+ 7;=>}uNYjZ":C|?Eu$#eM/N—j4G<9 \RzӣNI`gac-~b)#Ő[EĈ};A 4 Қ{#bMOH4}N䣸<݃%fL͖M腫c*5N_ڊk _"ZY썈; 5 '*(!㎿xLjkg;2J/7N>e]0JObtBw$Oͱq@`PT #{˧i9&ȨβT. orI>ʶf@Fwo!Coˈ;K[jhQCKzd/VYy,NgZwL7߿ 1K`57K m͆PBt&7J,!6#'5$b62Bd3yFF2\.= [%b2_~9Eo_&0#b!3QoJ$~: waB]jIˊgacK) wƞĖew.Q5̚T:4K ._L"IMO1K( 7IIOklY(I٣weD$"}aAgQ PWNKФI9|&G5CbUe]%+lFE9M*EeT/yy3/'d`(nm8Y!0[ 85ه¹Wܿ>XHa}n@,FhS y_=Eh঵@x~Lv 5!ǻm_s5b5X?݈3]O۠fbT4[ "2U0Ke" z% Nx~zM脈o#斥ºS%=l)1w=h4[u:r]5²L}f œ(Z} WlC"XF5Cp 6>]5d #Xuyӗl9w#6tˊ\gmA5'œt*V4,ЛIݯ-"kwP='\C@=|֧NC)6 G+`|dKk:I M.E>oQ]3h-ؚC`5GtQG0V ~Y5ȗz$Ձ썈 iHmP%m,uo+-ffb,?=4vh/EʔBm\Z5b[mb9 TTMJr~QTFOz VBlM0rƥxv;kN_ҮF1w#lgtS Jfh'w2xdfk$h/Ŭt*:vnD/#}GDZN_ƹ7[ȗnZ*@_Ru'د?QN)[.Pof[pq?)s&[k%m0Uw ,Aۊ/;S_ 9N|o\z&B%߂;A\T{w˂Pjg7[# S*_c6#ޖmh-kJcX`祺`>m1λa+s,7/Sc$=jѷR(cÈ0BCR#@7X{DPc:,Ia"\7[[0YDv=\S)'ͣ4rl-yF^q؅M{ |C&fԛHuirbLbhAp%>NAG*^Z%#4"k;Ʊ>[&sU\ ALKEDޏ@4InV*׺.uIԏq9 UM"06\;RXU(Cspm<Rx |? CgԎHW1 Y3 C9Z!.38Tf0$]UA_hPߟpեDGT zGAue$vQVC#b>Tf:kio?B(P&pGm >J|=dhYu3\U;B ^ vC㯴 '[μ~9;a:an0Nޢ=qu;@1F)ꇷ:АUF{:ňY^ //Й-?`:v V]x,bɞU7P<ۢW:6k8"7-OA=ZM+1LJ(+WH?E(v^=0c$;U^ԝ.~dA|-bPUgh?Q!9UGޡ 1E f\U7*"Kkf*r`O!"lӚ1}u'XƬ>^RG^^?BuA6A\#)X'nafdG~4?[q$Ob9.*t+Cؕ,}^B&Yd ZMgL̅&V_X= Wn,.U;xߏ3hd&p1;V!%QBYDnDdpgp{ 5P-[pWw {:44>ةDK^xédѪ]ud{>h3$}w@x{&.̎`4Q$`l@KG)z%nEP+_xH_FDrs"7|3i*Wq=GG#BmD96InD}F-U} ZaI.IOe#2#R_z什MA`UQg_8Y %f!Hh6&% aC'lwv_" _C1Y͸|(%+rz=d.B_!]?Ka?$| ͌{11F*ww0kхt?HW)XCDǓ2aGRs"VQFEcH m2b?Dw{ a7喅{Bb5DyUL(PxH#t'4MqQUKeRCEE[;Jh"Zϑ꽻IlMEw hjсA@t4jju$6lZ$6"LNN%M:?#4@@ qHx)EVs HߚFw{>z_!Rbb /Xn-nZ; `'uuqQL0 qimӱ(  :ӐX+O:Kt+?626ğ(BhMkĿu2Q̒ք I%-JvlM0|+RU/]nĊl췉 vq`S$>&U~)$w#ɩ4fCx6``>: kbĪ!9Ȩ;Jh˫h##!9n&A l[J.ä}MS} Y Δ@ "Hz ò{[Է'0UjHR+rn+>CU>&{'[n֮ZCYP?L4p%,דl6qJ9XM;PP>œEԜ|{gT;2RDI&aD'":b 6j<4"TCeL|Z;qAgJg\{V0{e$Gm7Qng*|;'xd?Uϓ&Ja {4e)rtZ]+]GP.с ])UX ;!tsWJCKz><`X#[ؼC[8eJûjHoXV3:kBw~sOr{U(0p{S0M"U h5g=HpI%Ln,> DUU>5NӚf" ]7tvf /$= H=GQB+dIK fKDKɬt d ,YARi#wK.aɑ @FK ?zOCQk7LĦ4gDDoL1%[ _y<5#33|\NPɀa/Y0o:}/Ob "5h="lJ%ȈCXy~nYAFDtױs*1gK> i lU7=+6a]Bh=풄R/IфR$<&!c;J A!θG`F4$. HlywnhM,?nHEO s̢3ڂD(LhuA/#x: -/!!IA} g7arpvՃM^R0zB@`AkD@tD)7J~Koibmִ/}`MOy~ IDATٙΩG7(As($K7S*Ǧ77˒R͌;iJmzi/4L]`t> zpfU!5 "-ûzڇwT K]̚C"xwz Kڂ\S(5/򐕹u;#BRS7(*YYђy}"]ꪇd%`XHsg$Q%>0C͇yR/` KDrL󓔾'R!/ qq$4fA6hW :2udتw?(c$n\.O 6ђЅKX's%y7%,=ܲ4g,sGf%Q5ϡ dwC(^$@eRrM%pS*G3&КJ`o-X̦h-<?liGp ?5ZmNTđX}:S$ǏD[e5; 7\!|K*sŋ1%8+}_ׄ$Q $hOI=pS*NNk݈To(NhYC)Վhж`Y߾69xS(?D tNJХbKas6Te67alH1unMBlq$ Sx~)jv5ilii?BbIAAɪ^ޫ Ia1Z vANYSW&L(O}֞ >vV9t]ӗ)g+8;Xu_J^RprKe>0^RSvAz;o”TLOȃ>BM0r⟟}-bNYs^jPNڂꡈH >1{wP-LW}8tC>[V6箐G5:֞X~*ғIQh<:(2~DS Iz=g=c:fMGT Km̆g&KǨ] *6F'iq+ǫ\'$JʲLJUEm 7?@57)\eؗcz1pDb Y{/3T& miO]5OeP|P>a]Vcl :GbG|×or@}BM9/pr v^aë峛`wO QŬ9Rng t2RTo)A ŗI$Ƙc~݈֎zMCIDOr|u(1*O?"NIxJiN4Ճ)OdnDNkF#]Ɵ-%ĸ^Tщ,! QbXSHϻ,[! {w/K_,-0S7,'6h|l) Dq3 E4n"GCz oħ| =_ʇB􎂛Q #/ @eSDLT^3=RDcpʟ*2J55N{J=$0D'"TEtv4wsoRVA NhJXcZYV>`PFjNDtF{ǠF g47-MtR>ۨWu#m(x$`PhV(H"SWd;"@'`W~O޻hlҭ($kz72zs#Dc&OgNA(~FG2Dm|Ϣ7!{TFhcbL<<% T"WD?-{Ee?\άGAz $(9"4O$l=k4g=Q}fXVRȞ\%~uuܝ3[4wD6Ӳl6ɁBze#YU>mQ'XYy}Kr*%IogcoxFG`5&bFI3.g n._hmiH̶`}Gc V#dC1vKg1AThIzeƳ&/gx|VJqXc0V@)VO18қ؎}*CT )CdqXS_ls'M܂M{tӒiKǸ# s_f~ G3M/iJ_u$$?m[7q3p}ě %(tBR=B`hċCbG}6q?`8QN }ZW%QTpGa/:^eE l@H3٣]H$&IT h|bwz3=`  stV~j{Ci|jf=қ"?4Ipgo ֨||/Q|]YPz)FFkM[|z;c]u} m |[ؒ SU4SI +Jz rd3t$$MJ޴Fz%e eT}F'[/qRZj0|;#vpi &f'j >z'u"=2?YNO#VԞ7i"V 1}AjfY% 5FAiQ5>;OO0Mw3R ;UCD)zT\og"JUi7Rp$ =A:%ALUQGJ#9άn@]`zT="S?"ʤ0ʓG$Q|/wzNLCD~6Cc$Wi?Iw4D$h7Z!:ˉ'8~㿃b<eb,7d4% p!-FJgD+1G+5xwKOq]bPQvGU/S˴gS!uHc)Äbbw,tS#|&_Ȕ^~Q-P!hWfD N$ĮF o we{(lDly31-uLgu Ҳaׯ3n5tMκfDXQBՔO‹YZKY3?"t"Ka=[9WPsb7٭JT#mʗOerFJE ' Y%>Q(y)(щn-ʁGjCؓ#b&_i/O>#jCWgP03dG hfHt;g+溎3'4ºIdڋrb~bꓯt T}֑SG!őV­- dx:q_~?!B5Jj,i 7%;Vlcn4Wb$mbWtM~7/} 9"8A)G~HwJ^j2RzYWYK#)8Šca癐;bbtɾ+t}[~|*b&q_aIrR1 Al}v=7n37wK=߶M'zf$D[q.q&') BYe3[y#I߻*$w: D WQB't~FOc;G z9Fs)As̺|nl3Ƚz %L"${zl%l,hn +&ZB䳑0,kҳ{@jxǤ*QI{ֵG@/8f0-Y2yc]wgd]d&G>r +{DfΠr,=*?>|@^KKn=,S l܊ܓBTh.]5%?WUHm"3A+dU:-}}Ό0/'L|KJU$l0#W^\J o׷1,K+ͽ y$s^}.E~i-\ɄOL~eBUV5\ř]S GҒP%IB ⶎ."&'8^n|&l=T `4`?>%bwTCv3FK2{sk>K:ۇ/gsGYirδPfɗt=9_ N s!)`e鱇=AMLWh=)>>Cj'lG^lǤ!LQghKW:i#h^c~"j!tMz*J@._-V0mQMћwD?E#t:6/zqrEΨaYؒ~NǦ5uJL2,$W ] ҂RLate][A 4>~ Jb SWev2;FswRys9z' Q>G 1u gc4=Jcm3h>wdΉq:fY/-#'2d\zY1KgVgP$3v˵Y i}'8ҩJB  1T'mO?[ coz4fP!u?%eGgXyFqK&bP H0EoDpjzi.#R2|NopMiFD[[ۂVF>Ko""uOi$$jސa3:C:QB h|zX@ph(w{4X ??:!{nBGU3QA !{I _6 y6ܗ(fK#pT~D*2o gi{BR+~.!q_EnB)D@R;3_ưGχ{S44OMџ PZѨOx]ޣu%t@;::t$Ͼkl\߰:j;2Ht q̰oОӨ`qIZ#*ʭ4~!fze? IDATANXGd%$wgZ/}-̃Y>] Md@ f9v>?*C._;?r)\K~v'C5wUJuMVWD A$VHf')9GbB+8ap+73>;,*;,oi@l#E;D70nK1{ha2ob6iDCDl-Fş=Oo+:Yt~{fE@w*&-tKA|ܩ,n.,(@AMDcr-?w(O<%߰3`eP4x F@ 5|[ЙK  -z:~׷yC?yyk$6 jvbF^[&hC7~LTs2P#>BGlG 2i$뛋/]ߤ|8}VAۨ߳hp=A .N5HXY ʂ/E9%B0|:Gԧ̀|HxӞj jy7.E4˻aF%e}[ %la[?Im)X:z[úg}& JO)dJf4d.+@7Oc<;";׷| ?( Y-4OqK C&$[$8%k Zu8${Wʗg2MwOvEhM/yGd+߫aiU3N,M=4s[| 1:/$>kMpDY mLtBtU+oSL(e]VY'$pؕLh5$'unߑ A!hOl;@5tҎKqYx{MwvFݗ Vl2\ڲ%CI\ v ;ao&!ً0TLM}$ϦY})>bKo|6푿&Ǥ%sQkAG</b>c埝@2ٽp'˻Li6K\ |@RB7DUvzђ̫H7TewQ9/"{;eu՟#8W 17zQ&~Lz&dlQ&vhP&J&@zރ]Ô}Si=6B(pumX(XdVQBg>ѝ%{0*R\Hr['%^K)j {$}g-u)JʿvN&KϧђKiʔV~&^X$ZB'8mѝE>m ʔ5b֕PHZ Y{ŖD.ՌT5Ai)J_<#**|O"q"i: e2 Z"ֵ2=CK!P4 ʿve .sY ) n:ľĬKdf$ȡTY'/[hDz=@oho`,fg=}Ķ$aYc:џ.Yh}V,rO{9<SM'f`!ӫLMsa a֕ݽ;YWiX:e f]x}x-EsI j݀HAרa R îC?arfH샘dցػ7v< ~C47p˕^GlQB K.SG^@Lz-- $mDHHg2Hՙ<͟;M" & Q3244vψr={m WeHi-6}[';mu};8 D+Le[U4 o-l~0caf%d~ȕ0 [Gmh/atZϸ/yu]M7rt6Em pBiz1ލ[cT+Bsa{;m,l<j4Imm$ I P}b[ƗT{5H_:Af9lRm(o]!5!7.C#ק&-cWX1+)}  N9uQØ`A K7BoF/FDŽj`vT'ssCb{tPNbtCfUߒ!5%Τt{~%HOp}VذSL#i5,EԲx,%8p[NPhĆIhD(C azt ?ih*uFk I .Ls!F"`=?w+(p.h m+?3 L-:/{CFzgNfGh넶|1j$;i gfz*50'p4 '*Co >e"f{tb֊T+ A d`ID`;En#|6ZNjLYX( \ֽ rH#:֍~~<ΑmIk'a>0r_>Vf8PԤ3>F@%jH /;ĥymM}&4K*ӌS?!YaE#6j/0$Qط@zK6mLЙUQ}mZNU 0CjQg{ (s?C3?l=%nu&0bZ=hC1qWD  P`/",V~8 k?5C n2ϒ ^b(`2mA2cyR-:2zk>aa<; K}HgXSlHTk蕮 жDFBG .yg-f~Ȱ$8tg5!,FtmN@vC-k54_qʧX$Q.:A)b0wůk:F]sC}/M@ٓPS[/ b٫;.  !7'ٮWH.'S{{.(c r]Kf8NPԔ MEl>.l")LR;^ϧ0bIīMv7u4*é`EgdDKc74߮am9l;M΃X6ɜ51wi16-'ĦWVh.%eٿ 6umLBB {2$_0P}3!*@'N"uR]]'{SAgffv-X)B[/2-?0IU}O7 iZqڡB4l$;AT0F)= t>6$5K+;ˤ[4? {å;g47Ux~;k SxQ5tf5"QJYJBjK-dVB9K+!9G~5g',05Mo@tBKrebWh/¾ i^UL`y/N1[3\'Hk4?9؛ ;ejo@N&-}3SIm+؟ءXlQ{HTjR5g6 ~5٨y|CnMg %OJ|el`hȡ9P˰! c]' :cGZMэ٢z?aeZvd)wW/xo ),dn agU::FM)xLJ &}`_cx| we[3=O||fr bzd!PY֢ͧ͘+2J0cyJexbY٪Lh ΚG10UBj"Hکu I5Qe5%3C)Ԯ NGM_Yŋ*tl@ c eJ BG؄ig]4y%_h Z-0Vu1ћ| S{^kP{fG,Bϖ /ط_'e^Ȑ@Dpd@ČћOѯBoRŝ`0=wͲAOѱv$'k~-#F<9̕*k<̐tϢV< FyHUȫo1tg@fN&YlB*Qf*>%,)u+_L@/0I_ ;}ߐj$VH7? InC4T )CSد*Q%^@AL;bX^2 A%G8?( F}H8 ɆzBwZeBHz=SLK-6i8Wv/&;<͓r__0[_2ր:I)TLmVXA/l#2@p_U2 ?Q;2I[0 ѭ;(! @zb&J+@Q>ԅ>T|zK?ec̏\=:7T}GQ=CxH.e ܉C,"6 -ؗ,OZDx5gQ}>|[ON~C"(GJ=V7iy"X!wG7{R4沁6TmJIϫK)bh@ᚆѕ}R jG rwT+Xo$:}(B,6LU*x x!qHH =1ѷ;D&[tY"s[_5`eI%)X$u}ė bDHLi8| O5ƏS1zEw&S+dV}PThccl=&QڲK)jL9ҁ h+lGXuKHM钪G i>YCQFND*+7oˡ>%*G.| iIw=G ̦HtOzDsi{'b0*\ zD}vSĺBW_MpNN-VɿߥbI黂L¾_ۤs vC^ * oQi)tgUܣS*?:_]¥+ ~Vgi8nl4CK7$91TOh~r;cӝ4;R|/$Uꄶ`:i@AU%bW`8Zo'8*Z 1QUD[N*D'cFgLITٿj3L0k)zFiDJ@e3xWrZ e/=XDV(3Cʯ jG5bcwwDckm:ӎ$,Ƚ-H퀷`M1nX d쟸<3;ԞA0!5~Ƽ(dFE(G, qOsK"f7b1b@|bt agOZ G *_@Ӱ&ݧg ÊNbBzKE D2lG$x Zm8}Yχ-*o= j4eԃQDx߱!C(O!ľOwS,N&╷%%FHt&Pƥ~MّuSxF+ڬf$gW#XNhs6אݰms]g)]D$dJYHNP:RݝMnBKgPzGR)t G)Uz>fgM[߾}q H\@QdQr\+q<Ό**Wbx'uPcH06,;mA斊-R܍- "qW{g}Ժh#na Y]xs(%2K#ۈQ,J{JU\`Ilj' V+ڕcՊ PQ|h {x,jc飓0 >էZ"{xu,*/q6U=qضZM[ IDAT4{J/)Du`m]ceMZuٯ9̽좭Lޣ,y$64W$s7t⤿pAJtU\Pۺ+@9@+`עu'"eycLbTa)dXSQ2j[u@m?L @7?DJ 8*?Ml[:k-L*bUu_rtRĪPz}b6]bUX&/М-1~$s'p]s+$6Ϫ?H0ƪnnP#9H4G)C_'?$LPD>o"@o c;>6#C0z1F#s:l6ч2J/'jڐĦOĨnC"]d~Lx!&Rq eqMlLq̵>W6 -RVDkѦq,Mj'`PΘ=e4_Pi,9 o4Kc*J J-k8 }W?pKd9^Obٕ.iUSgm]_IwNcU2rv=Wٛ%_^jP"c7:-k0^g\HvhR&yQC6Qzm '{::\K+-V{, UV݀܍3_jj-o>P&+(ʍLl'byZDjYdzndP}O={t AlK*FI &Do;(^Ht]Rv][h91P҆Lb~"ߠ%2Z 0:)(y6{QFLk#*m?9QJEwj3=篣5s͈`Aidi4޵Ī*o z]ė _{ k ֊|k;tXc=&fC;˯ qoXIAavC̖ナ4U :fْ4Kf?E3ggV.'sKEo _ϞKD2"eku^됻 /mȝR(ɐĆB኏ oEXu^$+Q_b5gw?-ص p G89^̝=^-4GЕP?1ʈěR8~`f ݷw)(^9m2IP\Ԫ$]s"욌u4S埘g"=Tҟ9C*b5r<7= H[׉/p=EpHWOTm̎/_n k^sWdd606,Zˆ߼$qt[xA&pgQ}9/ưiW]'5'uvρăQ܍t7|A|$t%&js nA B]sRQ7j226{`oZ|N8TY^3D/ ox/ *0zLCgb4NIJ 6=sa:=WoX&v;;nFo `}u"/ȥ8JD"ҵ.nSdYxsa#A?n 0Q+Ip{CUa1Jr$6BK˸J_钸)y{@lMcY-L{mUFG+?uD_x]ԡQr>L/+Jl ڷ.Rȴ@ٻ*GJjɍޔNlGa:?yS{7)Up(sk<G?B)&_L=MX J ݷUS|5B5&p:#b*t/㐽ܢ~1۸%D{}joKe#B+AzmDXBk \%X OFv#$^1*%5OUPPJ-)\c&H0Y@h3 І2 Jl%Pѝ[SIb-{|X?}'Y𢡄UG FQjS6;}no-i:ݺG3TO))tr\ Rw{dN<^fH ݉l0:a,IhȰda T߾MmSBr= yFak)T???K^>jO^0!4luif,Ɖ}{NѮt7yuh4BBa@wq=O@JN#DnQGZ_4h=vP:FJ WqDQdPtUkpQTW~b0 FG+_:'34XZw2.ǭ;%̗KhIb۲&k͖o-X/exSS{!WHF rׇ߹hi.^$VQ/EK&Q:O%ܷ=Md^2|t~Y$eXÏ( *[63[;h_I\ mG/3iqJIfrͣz i3)&~5,W#RL\yȰAB)#;0|W<0b= lAf~MҟQojT|4%s!4ih ̫kUyjClaY?79 ޒ疻XǾY(O Hllmr0o*E)S*;:wB&~<3SEO$齃FM:ܔAÍ*P'ЫhL&?GMP$.1:\!w#;Rv1-$ZAu+ OHw52}O;8i cc|['uW!BMJ0qeD)9zyom;iҟ9#8}r~$ֆ <Sr#T/Bi JZե[.(#hݯ_>4"cv(qZb7觯߼7!&6tpA5\[LшD?\Gmi3v6{c6maf7 ro j$ 3'shA:pgx&0iw5WZ8 S=cڲ7'1Ag &%oAFwkw|1d.=x$~ַh/?u;xQZ',O?b ye{5>K$6/cR=Rlo'V*cHyoݩﶵh 6OcRDǞ$32ƔM{-P(8YjO(łt} EcİDCjYw`-2J'dFh4+;>1Ʀm!4Q'؝%e} ʁmv &J+6 f<`0`nCstma)d?B _|?gFXľgM2w#sߘm=Ū*6vQF[Ò`$8ekCW'|;?8.0KG%r%t>qUsE 6~,ĉ]B5Mn'.?F [.Vc$&yX}2`aP[u),DI'/][]W#qW-ۥVr.^"$q)I`+4erԏ%'/+n"k_i P^L;ae)q\w'{Y叟d4JayKT{~<{A顛/F})T ´m0Ǽ@%u?K] ]-`A*x_<5+TZ݂\*S߃^E:\\yMpZf>"3ۈsԏʿuV#?7GL/ď4 %9|?N}H Sh>`穐_G=hua7|V cP6`g ?~OKJf }ZdBX7 $|R/CM &^a K']g=amAw>F렂CCprԆDp&m܃0"?'KcIb}BqZZ]V/g 15W+ej%3h$=Jrݥy&~ZQό $J#hyÒ<˽qj .LXU$&՟XC'Ev8 4@P{Q?8Os!էT ;RNi%I^U?bYʯfN*?|+1B=9?"lͅϏ0WtJwu)֎trld?Q:+sL2k?١8 g9OCOݥu8> IzXw"K^\Oyүa08XĪg n(nƥXLx4A.FC8yw?{'n5WԞ&_J)34I%?[D v޻T(I] ?s_꒺lX]oH&Os^1te4fڭ IDAT]EReXSīPzu[8gKR/ėu7|&^0O^|Y?!]7V- v]a0烯ZFЃ:ZA`GD+1s R&fXn&Q` '$T|)\p П!R_}2)e)8yHٝ_7f{rꌇ> էY$e3r+~a3NU ~}Y( l!)e mt'9?u Տ4a#{4{g9Yc.:qDaObvCR~ϐxJP7Uds!}ќߖ* =avC$dT¿yeyCyoWT6&BQ=VU~Yqɐw%xdόTѭq0#ɄO<ri |";Cd4~kW}QBY2܊]XΣy`Pi =@qTpJ2;XJNڇ8e{]'Q$PkbCG12^ VHgOQ?&D&%AIc>ė1e:.*:~Qx𦖤ٛ la q7f飓$6+;u8,~&1 v}+L\Pʷʷ.r?\_krg4!Lzqp 3l~pn!]Ȇ6K`6z8KgF;I;N^n7`Œ/'ω'L`L ΂aƧKDm΂-(/A)͆zҫUnyc&|U(vD// J܍Ϝ"A̠АqXUż[_?2w]fђ}I|++}8KПV]KqC18:C. }tZ8( BZC1LT?}[94M1N)H :h.IQJc4{ pFmLd>wd>mc4H3WDq71֎Bw ݗ`Ҥ?_\IgB#vʈc4oa@l;radt_<_bvzyfUܬS d+IC:S$v]?WWq>X%ћNFtRLYe%$L-nҭߡ9٫14+eKNDdhbc>x0`M2[?(̋aK3>w R#>0I@D,q`#1ٗ#ϳ}@~ 4&d ![ ZI<K9Vw|g$N"Œt}w2!v'LE:.-#3^';'Y#ό1Vʛqe/F`}19vΣFIQՎkcuIqLZlz i2{fDi5, F$t ZuA8zu7)cw! qv !jݎ3k\?uyXu~D~w_aǓDyz\I'9, !f'8yAIڏ//%!>kr >{(Hh,̀qc (fz85ry⺮F!zAU=$DHmT/b|xl)^ g|zDv-&v ^ceJd&AG Cq\wV̕xFde $WC{udH?sfǧZ'DZWNmr@*jçb28Sq|qq2ߨT-rk $H\b^]Ee ;hx Yf8؎F G3wi=[BM"RCl,pQgT-j9~ikWYjN`t "Cv95`w~5f1Hn^N2F(u{g#N'`_pUyFfG:٢;6PW~P!Mdi(-N)\)oe ({TwHfi<L(B \U#Z Fs#?BcSyDM *RӶk =ԫIh+b# C]z!g)H<'v"YsK7Uw3=$Eʠ VU?u-C9TJ>_ vN8)BDy}$gPfhOL q22u֣LD8=<+ UdUI.RP׈ReˢT I Hq=)]f?9{S {@i|_wT'JΞo$B(R}gӸ}*NA%TUEs]JP1`5[#?4Mjgyۊ>bAI'8NsBRE8Q^䶆yķ nZSuP\ضS ]O&HWI(B5@غFbMKFϖ(ix)Q>N\6}I`)_BbMa0g4Ϣ&ҸwhV)"%+Ϟ%h3)O-cL:tS '@1/28Q-}fuI18dԜ'q6F.7+q$v ]{Į[$6C솼b,XhġγOK7* *b A̮;+T T]IJ`ܯ>L[41GbUC?d2PNv^q&mBUXO^Cv|_{NyB7O/c]]#j:]l[XrJ#:&plmj'A /xM37́i, 7 qh/7b j RZ c=ZD3. !vO'b؍6=gڨ7"_0LB" 3[r潵1{-rBC%|MFG`7FD#@?A&)NH^#$.Ę:6i:D9D$#?%gCPCډ4QKD$$3u!YbDPg1D.ANYo%6jbPZ PIz`ݍ/]'8u[ڇ΋)"3zkY GK?c}u~s1>5mm9d-?^Jag7_Л0al̔J{ 6ptL;*xİވCJh^E*(cSgl;wtfjD Il]Sg GM< 5>vO< af$@J23Ji8׺̷AHԀXbDLլM%{ ?180"d/n tdf;t6꒍]S9=V'Ws#:)|SeOcO $4j'C̦J:x=Ȍ!nJ>Gjj'BM 6٦]F]T5bp:* q#uX K H (k[`vĔ)4TGU2o>Tp&Š˞/. Pw'h)RBAR#%an>g, DpR%=xRTFC7Xu{&8ԪOgAE@7@84:h"5lRQ}7WЊ.`oϫkD}(P}0%'vbtG \7Efͷۤ6f }(XPW|Ei€z Cc>Oa\Þߨb6+}͠l5?" W.$G,Y085  rfx ABO/ZzAvie q:H{?4Ȳ3/g73o\jRT*-u7ju7CC Dxp301{zDӋPJ%զڗ3o};7dD}= XKP|2#7K9ܢYc3XI¹2ir#⇫XFmD'[F:pwP EIKEYv_$+_38F?bsH5cZ'mv~θ&XF!(g={^[Aͧ&8zyE/3΀:eFJtM `XS1ې{{Z///c SAi #H!BL@Ez"Xݢ:.d{${fϺtߋ -AP ~Wgw`4t GvV+Fs|yȠnPzs "ny`5*c.oL:.VU̡M|DoD26QU #N!=B2|bH]3tNL#[)Y7ǟ-shX_j,+0!x4c;fT^B7dHph&n /Oz"pпy㳄; >~(%`n2=!|[:|NP=DB_:~GA춤6%+$?/vΪ{Yܗ6X b+!<8'mEvL)k;JR R1} 3*P ׸ ]:p')uKv_ƈpM; 9_:>?/k?56Xa9 d\Z2(ę?zq5x ='B1UAh"NPG>qE|pJ&|cH5#?uUҫ:OX[*NQhRP'\r{M>/;NjEı\T~C%= ٛ:Q N$FkIJ^c, O'a:a1RdoQ N[5ÐBAFD)vRbQc5V~0O%)]^e!Ӣ* rū k?(zD\ƚJ} aZN50m[1XfuslDwA+fQ OfiCT+4?/YcP/+?c"'Ic1XGokyy P&b̦B$Sňp̀opb}bEH;($6d(A9O fuDMuY}Q;$ Ө^#;>'R=Q(wY>շ*gygxDd"}4\o_$(Ay2ƾ$HC[ ѧOK$x_bleGlQ 3IMDM/IzĞ$FvsH9u \Ү{?]`"~.f⚏h<KM$L'cpIIY@ܟ{LU{&!yx J>s_Aq$D LLH -iYbM)pBp}9E>'IZ5GϞg4fmt$Mr+YCKYC )%=3:8P?LLJ[X tIh{{fˮV{y{{O3&tU^:%>)Hül>􀙿a:t灌)NH5gr&=Hڞ/o~#GN"V֩Mn-RH`%I|e +͑xU5:)՘^WFcmX?;}cG=P "ȟ_e49A(З,-JKߌJDʇ *&W>30/d̦?P,P lMieݔrDKrqOH䑽b*ϕ?tT>n`Р?'c4DD|bMȃGD$X@E\ ?<s&F$%J 1 IDATYK;a-qJfv u]*9:TU½Yg.$(1?###zȷqUJERPԖRhM0>Nq{X`"-`&%^eҞ s4FMÄxwtTwHmKKrx0`5eSAu%L%+J&T._eI] s[E5wJP@Ѭ scf^|9®Ylq YB2&Ĩ.82,tg2W1lSJLP$$y$O x{Z <$V,>9Sڡ\Æ8&&>T'NGfRjr^Zɩ<7yb)ͨnuHN#8{`,㛎B86ɞ&{ʛOwy%ط7 $\x~ޜɰf=B*GR¸ .ZsH_t k$COv`$QG-L0:S:2Iat%" 9E*eOiO+'%FGvO<A XB&K;JFCP $j(y+V rdJN+f$#ws~N;)%Dkڠף^:n)uRuL=#3gF$+ĮΓ_$jB{h]siq)8g9[JXs }L!\<̒ĕ;gU9/ngЛv- u" a لʻR:=(q ymԶ%h{֩ş "}$ HC4DY7%\̊G>❑V(R)ft =}٪N3<]y81"sOcT~̣Б`L$gT$~Uȿ't`ރ%$Fh4+giz{aX?#ၩ! Ơ澆W~]z^Z &JW?"\ umnK|23=;i-EaJ!>q@+Äu람=h?Z xͯl~,KT` Q߼Nm<sP @5:? &*r):Glo]C;' ㊁yk*%uwL' )N?[d٦#,W?ڢyRgiHTd/OnJzlBBݳAbNPQ*Zs.; _!Q`p)Q ľ[M@#9HA";A}%!1]`L)#C 2vaLZ ½ѤJ6dR~#vaRKD*l|>M0IL2bD0K?Q+ ߏ>eO,4R(ODiZ'.J()")ȶYQ5F?= 1c‰M_1j`l8bae|G㐊;61Fòxhـhl}:dΓ&&eqd܏_U)rIS3o$/t 1Ɗ_ ,#Or3M(%l*KCE/a=/D' aoqK*͏ 1e(x(YԤ8#8ę1s|܃1 P}0% j[jr fL;ޥ9-}ZW#L%$Hh %{NHb$߶л )H8Ǽi".a&AF![>SG*mL5[C_B-2w?Y&)jTM ߑFa64k1I) b(Q& oh U5xe^#cGL  -xM5 _BF #c3~źcc}HE( Cs$_q&BɆh::S1I"/ چIlKs$UE F%OLi PLlL[ Zh1<9W>A6!LF+4D"})$(cܜuWl 2ڈ 9ԑ 2>(&#]}B*P bCވ@(8C Up=s&&A!EFS ^dI_~̭>A1E+>:GX[}XAx>A5CfLΧѯ,2<]%p{pZDhwB ixee$]7i[݄mp}V>}gG0>ZF| NQ2yZ't_] 3y($CV@z=$*3E_O0rz~|Hk ^X+ʮed99wPC[67 ՌQ=FHm'J_jBl&tIM\tL\ (\IT!gĀX$iz5$QQDŽ[64~-ļBYp e^gkF/F8NqxH3 ynZzScGkP6 *W]ܢN[-CA]rNF߽?8CzyD`ԍ 2P#oP^:PXr;Rg[M00fOak#Π( b$*+=&}L;Ehyû/8vb_-^RbYPDMBC Y 0 t5S*2 ΚBebv!dsBX&ȂqB"T-WZyb]I!_fI5YF0bn}-[.x>HbDOX8A{7Cs/y*n1u Y20즈ŗT#pu%&Ɇ e 1A0es,!j&%E7mCL*MG퓔 (6C(KF\XDD@A TϯM3*"R䚤>6GJ18*"jHel$B7Di^ɑވWyɿ0y]E-du!"[G8MvCŚ(fV9:3˸g5kXacaa=`O"L) M'WԀDKeoء5&M1$j9ǥ<sc\[ 2 {] Ph?#\ZFuVpR 5;~V15M7kbm[$ZB!H83V}Ixx( FGBfL w/iba PU$ {O׵P.Q@ 1j%z:ُ (fUh (eP2|C|Z"'zO\%e,xHp%VuL`oKskV/[(M) 2qv-M 1#v^SI;.ӿ|ݖNkSl;:^+%9Ήig*1VZ t$V2 wBWYĉX\'anQ%FM灧T$Uq*!̘q%aX&&؏4j_ f>Kc&NLdhM{S=ٔxq4ꆌ$'m:*SzWC0+ n-l 9#j9W9.ZD%Ss ̦j 瞎6P02r'>w'ZBh8m,ab;g5Rg';o\=YO|p:!Ȣ'ddCl;>LPjb%x T*C_~{C{oG|J7"ҏu*Kj7ُ81[U^4 ) 6nIoM 1VZ[00- ;rg5Z%2U?&ϜڏW3r=H޽FO#p` DFh}b0quJ޽Fs6ZD@:?Il:VS΁w-m6.!)A)t^GY7>؋S%DE }# +BLQ,veyr75b_fP'%T%+iF*h?͝ P19.FX g \0/)>S}K)ATD|roͰ& ~F%FI4Z}AxwkugS6(wtפ IKm"[CćX!uo_EWx}@DU4~>)э;X S)[ՓI*~:֖{JZr d\ل,{H]42hRH^0+"ɻװNJ;pJ*O!I;={C ҕۇs&= k[OpPr<CԶT+J7ϡ_{ȸj}h$'ܧ{DP,C )ވ`_1ѬK ͍e.h逌2xڥS\Y*4dSkh`?V,M<p*/^+ =ePo59$2msM)ж H 52Rwufb&Lrn@ܻGvW4ϟl뷫JPzW~Q98h,V]Z"̮k.nʱ5g?n v^(+r-g K=V"p$A<{ C -σ[{!C Jsn+6Rz5(C .T}1 UV{ymL^b!Qdv <͏!E^콫^bشʧw.0cGG f\2--6_P0OE Ox{># a^*Y8TdW1lB':"c@Q#ĒgGM ֊T&: a>¼l3^ʢ`ؕX@'dV#ҫ1֮|'qBw)Z$J NqQ؏WU c c=Nx ɱ)_hN烵c>Wk\ P`tVVRM6Q/Ȫvݛ>7.~4 ^|D B]Ol|>LHo&5_H^jĸ!b mpV2餾{fл>Mz l26Zlvwav oLk9*eSeTniaPF-DFj+>ZjʥD,P=_}f)]ک7{X&cxYJn(~<$>S0- .;| y'xB#X\ R=weж1*7 h#F.Bzi=Hⶉ6(y:J$=>~-M1gKam6~XùBojՐmC44 8kZLdtn-"uˤyJ:^}vhn).CjM {UcOCAv%sP#Nd(p {_̚ q-_w5Hv>[08GCL!њCSEZ/(.=sK1ֆA瘂ah5CS3UR5wMB`vប0FA5ľls6}BijpZweqE0=YVɬ& yڢqO@,Nkqa]FLޣg%o\g|v/\=+iJh |W;tNؒ; &ĕ!O긦[ z$qsœ=^, "A>i*W]"Cv_0j9j`J]wPiܩ +8NjK!31llU3L?-[ 5'gL{ås+L}¿y'k11Icubw|߾O8W؛YqvB\ g%J~j'hŨoO$}q#IGi2?{kChU~zh 7SM$ TWˡd~0:6}Ar6$ڷ/ʃtݳYjm2HSLR?oc7B:G-1V gfɮ{DoPX[*N*,URۂ<"54_D9{1AFz>18+*c-2{^aqVgJ}#Uk{-h̾bXOy{!j a>"-ViγDވ'% ~@tІXS))~Vc0Sc>j5u&yZ+ n~NnQ!.U(`aA0 X̱gWSih/ocE2[tOɮ$-/L3Y1[ aoO#ZK~:TM6}[mU֨>?o7R$u]ܵ4֕`X\JX'P K*OJ]nN#dQ?0%1z¨9rwI\%Hvsu"J7<k2q+ 2}hRw̦bޚC=-T:4dVl HtG-H*n5"ww$X6ц :3E&pK:v6NȬyX a͠|yُQvq xeԶhڠxkhZP2(DJ7чb8;Ps_g;+dowb-PvHz'd#L)XffȬPJݮa+ʹV9uFSyIWg4JZ(J6OQ$zc4w""C^M:DQz-dn#XMP*(!+P];UǼo\~cP$j$goXT+h;]->$6+e:GoB%C놆k+P S %AYs <⏏r+k GPDsJ[XoA ^ZQNQsGb}$h+4~*P%drՀ /5~.DB'-&yڟ\@ ko}NIT_FǗtx8D;0hawpvbԫ[áLq:`(6:&f/sFQmy/(B\ȓxr<]+q'r7/gH-:fcL3Q߸LJˑ:;NQ{EhơsxOΓ=v4镱f-0oKSCLF QG!i;E:%pOձ0:b\@ş(3/qa̸Q,}"RcJP|Ѥ 2%SH%8do't8N*uFU>WԮ ´NEY 2 {*<~P#֐_:s|\{4f7$ T/dw[2HoDX+$f\5x))APf&,~Uޏ+ nEvcC'f\g#Љ/#ְZ0{o$}y;22j%l5Ɯ  6`bXXְY53f1!2Bݒ[}OUwe}>RɞO #*|f쀣z"vb[>BG8UM4Y'ڤy4rꑺca87/&83%Ȅs_ m)TmgR?sr R 3-`MD g'}O%ݷZVID o$ld*_pN'B1N_m2N$4)c!D2zwh>S&Q:Z_((F%?.'Mzf]bs OTȿ- vw5QcH{L5 I`(oD7<@lQ$e5QyCJgPJ%c:e蝪` ׄk5w݅|Bϓ]_E!v^Ĉ. Rc18e4џU}k 0_BMhB`tuJE㘐Vݥ$7'iLٗHO͐ cs77p?(B0@i-gM)/%S +,;c-Rp}o9x$ceR-1b ]1{[0]%&N Z\ P9 XFLCO_|&zhp&Qiۛ(l߾|`SϷb: T^!i%}YC"ƮYBjQYwpsO+Heư*n2ob8?=Noi}${72wl"0~$B&!"1L8&6~jD9}BnԎB8IZl=g2`>!&-Cˣ"CBMoM%::0ymQ'T\ª&Hr Y4kTBN&&s$έ"l.w6kˡzőnGe!&XY'XNt? CeBh5U̠t^C Ñ8бl9&ry5y;,ָJo{@['Ug5"YbA T%.Q^(fh23 in/o1:8SM!5TOn MLӟUYhrE2zd'/;r )YRa0n>N`H>nosX`a /Q3 UAh>YwDZJ~$cW-v.SLs8EwI!Ht_?OO%KqnDĿ&CNDoDE~n)g+ U쉸Myq(^GIZ4}SAA/C+`lu0tpn} L~<$͇FzCiD#l= ymԦṿ$ [e$pq_{GfPe1)Wb׈3zNj]@T opt3.3-URʖ_x$e8n|kSIcTze ~ )%fؤ`)6NS*b\CLT/l<,ą=Pљզ -Ao_@mg &^8"kiQ:]sMU ,*fTxSUT+pqщ8Qy%s'`~-K(qV92,*Xw WvXSNT4i?sX ND/`P54kD{$&-k5G-yb#[|P~L ? F^R)ȧP| )a~4#R+8 rƣy?xP#\&sKbW[.ߍՄ1%vv>žct!q`7O pϷuRG>ΏH*%_aIAW>;'F_^!SٯDa(iNfe:?~"40xX#ӏ1#Ϗ^u qGɂҝe?B-Ul>D#k!g&zBQQb@"I=7!N^GwiYA2j&sŏɤ͒jGqc;9Y׉m DMVMv`$/HѾw54=ٌvIz?`X5qSj,~^zDŽ_\{jofYJk{ߓQ`G q=R^LsP|7Y:& 2:Q+ шXgwwVK>?&㔓3E6 ^!ΰjdQ-AIw3"JBlou6"jyבP߽?U!3HE5"Bߝ'`G8ۀ&a=M.A\ۨVǍb*m@tx̔k5VKrZ Vk[=ߛ5"z>nJ(bgIl_X`ql)nM6QoSD JO , .Q|ʡ(|/ $u/Vo$w# 0"JFHFHS'Qbk?xU y!% jN +ꠓMeRC"@l|l !jS 3I6)vM8Q 6Bj%bUv}֢WLn/أFD^-} ..H~0I@o |0I}X^Hnf'1:c9B%VQVjWo_ r-^}ǰx8GOl@bE!wM u5ԡĝXh3xÊ8_l>FDfNui/˴Pr9jȽkRH{hnJ!7|:NJЉІBEP;6*z27K#kA0'wU b*[25X _o\ -b8(֛ޕ7Gęvک aWGL} '/z*  #ͩ< 5:SI*qnWFGp̔zT}ND@Gv{};R" P-܈>wŎppD&K'|(ߝ}<9G'ٓѵ8[%HWF!ɯ]ru!蝘| e1{)s&Q&+Hn9|61T&4v ~?kSkЉ C?&}Cdڕ7)aU}foRYhO>~ `lk32$up!Y U,#ֱ,"NL|P$MK|b鯶i3 |D] &P)ԡDyaz/^h? C.Ù+#$P/QvS>;nT~"@Y!J}dwһ|HoX4ń nOK/:xI{Q<(mgbx6J1e#̆:i~x· IJSP3qqUќOg /eȿa$A:`5u)=ԟQi?R"y[.FL}c0\2 0+eFsf|L d7d&~4?=T7۔+(-1LD|vlBִ4F0U*ц'OF17=܌B?=Nj=CQ,`XfRù}C>|OVL 'Zd.yvaU´ ""G vV4>O5HlK4DP N_e'߉%e]D IDAT3bTxF.qY?|߿{ )ڝ:W%:dq InlL3t_KU1럚GRM켌{hm1VDVg }:Y)SsezHJh*h?&M̾BYw}8VQ& rBtTp ltO"KbY/M1xbZdX?uHƏi4+ҟXW]ZgxURv^2Lل#sjһ_fDsXY} Erjft|hBw| iS5 ("lTD#t"zrEX̊, =2 - Ťx  u1^aܜ 3߭1f}d &Pl:dOpN1~v@NbS1A_,\Y&\VCLU2`M/-j XI!}CG֧\Fn5!a s $7="%f%&޲7 8c0vg0%hՀ^ID>u:dA!B'>kIȿ-s%gĪBl.ň2qL.1, :}lo7uba;!aY^(2zl kO63؟%/%bkV xi=Ọ Wp-$fE2MBSeq͍K8хkB{yjl=3^wpRb-v-)dNهXLQ16MLLhV]D9nP/ ! 7iKSa x΁VA.B$MU6i8I1a}dnYdv5|U;3~>$;鑻"ә+M,ьCX~' V?=!y7'6nJ%&t6aْ~k2B?^4RSzzAι8[J.t :]xCYxIlc 9E~@$Fs>D@lS%vs(PDw$Ixso;4^rj :X%Ķ3- oIYY$ЌdYA.Fxh#yfH! Ϡo8|t9F6tۗQbܩOޢs E~HW*+;./R OH# .D>`6y>,B};pʔE(H* YSl࿕.`_$fDͩ zzfdߐDŽQ?T%^DC>IEa2pr %~1pq !4}C7]D`T,L~ۡvJl(dȘ `4ҳ=̳1OHDwx Q>qJ./j]!2-!O}OJ$MYx@((x1 jD;ŷV?"{2rhK)A>F`FX[l`y-:miycD(C|KCCʱɐģ=Y7?cc!hBzp.MHe7 Y.XxSs8c"dW},~G|3NbCBÞcvv+Ɓmڋc؇d)ߌhM$}f4å,Р!kq ׸oIQ3m!!  .c?2"]:9Ґ%0o] $ 1ɚ, -J $n5YXƣ&U?!:(.cXV_3y2`TpéA [g 57ԯ!&&B>غs+lXHZa*@}ȌJ}]dEE>e*`#Z R¯M*lpM}iK/D޲I]m=hyH FzSvRQi)$cl?n0Zi/E:7U/-e]+1vFʀKaz0&FCix7-jS͐rY64"K&^[)m  >^ /"|r2kp}rIrMuHF87 r; Qp|1|Y"*cj#bqV / ށi3FSƚJ[t*~'؏d*}6f)aXU(qiQiW]!,w%yUy\a=.1VOx$J `#v['^5[qV?CpcR (Nt1eUѼGZbXQ0I<ԡ^0Lyz*Yp>jOxH$>;Lbg1::Å,C NNɛ$";+#-,I}ȤQd0dXihsy/.!Wmo:,ƻNlY)7L̯%h?+' > Mw>J!l?`+p+KDbbH?T$[)`43!δKQA5Yo8x #vJS_ N>I1 Qoptu)0M[ 2^_g[V^EH]o1= jrb56$ >2?Y6} u^=zmP}?8Xҿ[BUBUL'^Q(,茟]jPݍ1>ɵ :2~Ge_8W[hMD Yu13 [14+#kgL*mvvdt]Y{A)ZFSދꪏt6ܮ vaybhC RR_e$˜U[QfM40} V)zsi,]SJo Կv$lΙvHT?ac ~p=EHJ]V|gDa7O5Uʇ ]ELΙ5bdbB*\? 2/_ "O|ɖ;TVHMA oX#{Bq_CObCd/"X5D&]J((YS rWE%Bauz@j ɗQ̦h4aL3dEM!֒+O~ /lEv%x] Be|Rk"KkJZ$qzW&0!WgN8Vb 6xN5Uø'}: TuOp0hC}ꤐ ) G6ȼ;$w}:U_ 6dr{CC"H^@躄VVMgO^ ~O>!?GԮBޝSQ"(%ߓʹ)gNJGw%vHH͈,@hwް֑oPM"›M8#c Ϯ%u7bKbՁLrUVVj-4C܅u]<.#ȶLHHҟ04@/+#Q_h*8F*~ްл7|g!YDY|Bw5`4"{i𙣤8kwQ5dE*dκ']ɩ"gQH#Vm_x/\Eu$MG975˸WHZV%ņڋ2O8Ŏvke1Rw6 9Jj-`/%ykqJΰRS%aCL7!UĚEBFHIh;=6Hܕ%_B@bæ"I_SE)&=őEdʆIb qz}]Hw%}+܊8#*m>cY{e e،%?1H,|:FY=&ƺ/$.l\Jy>7>l|d&4C_w(uϟFWQ*~eZR VfSԃѸUѸNXo5Ej)iN+F7/h 'GI;0Ib;IKY"EBm}:w#(.) [H>v ֺNѐ b1F:mk.}TB$L!^ 88KA1۪"6HfCLC&$DwɏT^?Gt2 ]me !hB's[b=TdC1Hޕ0U}84_L3H[Kuv@ar]G46/'JA."S?`zwnT7Jp)ɗ#F ;£$Cʧ]K*;Stufq*eCT)x 2N.pNfŰ!4̅*H`f蘔_ѝ7ԯ2M[|S!v_%0a8c 2%/d\΋ScR[c:⍅4OO ?PzyDAONG`w,ΠcϠ*F/aƫ#''!zԞ-R0x A `N)@?[%-o8Yop XJwBԛbrA{f[}L\&_Qui);ȹɋ[R)܌ {Rwu폎# ?~c9*+4ثm݀Y9&^axa4:2'w,'5"wBܤ̨SeBzGS`JI}MɲpLb-V%nok38մxu؛,gżۀz CtOMB"j$,Hƨ W\S-( ijwjGI./RzE|˦PQ|,-INA4w ouP8)1M4^R\>Q0F5CƮz4:_&唈<ޖI~ SYԡh줚[K[?'qK~* 2XW0C1p*bVΡ*hLJJފQ:c$~2FMi$5 i[b͈CBӟR1{ 5o~˨>ZA2k+H MȺ!'Hb"Z \`$EC:H|fӋ CVU9ب&up0$m%?sA)QBu0M PutނB^D#%Udŵw)RvON$$MrrȌ؊0ApcT1{͇eEAmJw-Y"sE߼AhЈ(\'#a#6OI[bk6rǤ'^fiiQJ' eBpgĽPJy hxB#HDD;&H[]s]!1 &ёdxGl RڧC7x2,18cLqr ^o2}޹ >O4Hx?lZ?TFB?.\IݓPW 䆆HQ^RA+.}*{ʷ385M`Ȯ ?Tz @lHX3>jGA {D}Uy) ?6Ơo2tgf*c>bRR } IDATDH 韚PUYҨ~IǰcN7~`PQdq}X0!ucpj,ΡqH'T$b!;m c(m 2ՈޔoFm"%w#d0=栶Ugqvy<xbHNw {;Km=6M.F En`|_%$UܭᄂѓM=T/ U1.]=B$ϿI)TD"?bTG7}s469oqmr:y) }z:C$b?Fy7 !/0mxFxz]$ZO4-"\JJ]n7FxFc_¬AӲPI4BSV;!Fo4DV֔suoO ku s:JXІĿ>ԫ-B3˄f,+lZ1fv@Ko&)ȪOk_,3lwҧvPCܡH?c\VTUz*lY0>n +u@R!fUYY:ڻI7"lWe𙓒௤&۷20ݎȿ+A.D1B([wg`uh<<J*ܼTYл]:$1NLfIټ,ȨTdt/+?[!~1 -Hp5R>e*9r _!yiВJ&fFv~8;GT 6ҋ>c2nC!5Tv0:.h+f$3;3#Nh R0vQ*[2jh4Mn\퀻bpܗ~d\VUq],k] e:-= eKuӕIrLZ*kW`TNwJliBKz.)ey 0vx㔡3Ȯ*_[?ܯ1X76ezŠ) GBMKTR+Qh)4Io@>^8@dGv[)ʏU 95kY$tD u3D g nZ2Z}w;=Jg伛|]D ayւzp%E%*R!4U!ZW#sm?9kvф췯2-]hZHF]Fdl vlNn*c-6>O%9VǸTE:>-*5%V^ZBɘ~>h4QJ?{Y%>(Pt Ms{+F{|GV9UUlʹYjTQHbD&,B>n4 c\&\{^ Ƣ*$A̪ 9$Q6q 3 g&;\DYxԚ*j*%=A7$ݘB% )Y1 rOcWC@wd=&Iԋ71jvR l`;O-4uEAz &Iz7&saA9B*UL}0v¬]ЛJi: …2mqIn0nmrH4iW}6o0}f{C>Ȓ9g Q1 8uA.& 4Z_pZ3:5KmOr# dl-{ -%vzn+=3љ`4ci dM bk56~1ž?]!e>y$q$%;8 A>-O$̹)\ Qm"Fe F;&o(tOx5Ď`#>g*?1nZgoz^oқ+t SiKڦy0Ewvև*5)fl sl-? TݰȊqKr14(\1't;O&]t a2f ~-DPcwdG\%+H^YR& 4wiךPHl B;(%7 t@gN.a_Pb"&/MBStv@s\wjFY V#N=?#,/~2}*ABB26WЕu`亃g^95] z?|@d3)?C(""?1((Ԏ(?Z&֙O ܼ@3MvNTbU!ZLfp* &yiM .?6EvLWPi7jᕲ!%> *4Ev$wW0_{ڧ+}^EzǧY)XOSqIU%݉iΫNDRQ!`B|^iN҉Ů|y~NLr,i[dcbixvk h}6+蝬ފhE?D<9A -Aa5B6?" :Jh`W:0Z0EAxz/&w']vXC̆Bdst  F/ <$,h[{TeBCzؒ(侹4dt~B_!Wnh}A?#vd4 JGøgRnDkA%5%,}vU4TˊI7TF/FOX+DĚJ4"S_S\h.*h]B =ox̒B{^ u h`}m9ɠ(|qg*2Nv ʯ@PĞ/ >ifۚMĞ]9r >}[&^cTf,nрELi06l$P*۟Dwb0f,o)7s1J$Ppžrl@_fg`c4؝=z)Az5v@$QMLH T B{j Fy&^!"}b.CyK2耵-$3(IK?EKJ*i-oKfdA<@)t$~0aPӴ>8zeRW6L0:~: ։AB!LHZ D/P;ߓ㳜2X9yxL먪Z:ZW`dIgn7*VDU +gyEE[4 D+ NY~֕#s0FfIa`7?&)\ܐԙ%ҫk^Vv@Xзt֕s&Z0TTT@uGvPdm26!E؛V#;Nv#<ܜ衼qrwBF{ E>v?ӽ38\U/Lٵ gdGB~vn^ ?ܐꇟW$ k@Ή^X YIT]~Hfœ~ؾ<dBzvgD9yרUveOnOE h-=1ڐp͇]o#FS>_z EAKUw\rz݋S] !oÖ<]í_˓\1ZIV7 #<.$X~feߜ/R|NofM!@D( Z T4UFp2F\ZJCC֕v2Er,#dIO@*/GƉ?d$|fkw8zǦL$m7=}O2:!7=q(7~h%͡GN.nǺ"VQ.b\_;GjR2aFҔ5IHVEy2o*"v}FKF9X dWDu%v ez"4cK LSi-n.֏dc 'H7u>ލ /J|X9-ZL{"Usx葨RwH{{h-7uAh*#̚TdVҌ_jAJZsPoTOhV_ 0ZP]PPA9zBzK/m bMz5K$cђ6-UB(+2[6I.k$=|[FH&ǎ㔴>ѝe4SF*|KT*j 15uRߎGGm3o8)7k6S;(YS ?PqZJ!"ט ]9Rj3Z1 1ABaF}r-$T􋷈5IC~ђU.)~]_Gv3蒔\21H},Oub5ƘtpoemA1; G]v+I |\W'h>F |[% 0k'5{YPԢ}dv0+~&ZM# rHTXLC̣3`<w{* 1e!Pþc庳`^e1=J/_OTb cQXr^TG9%r,+- pE*^2#Rq!C$Vi>1(m$AkRsRvJ4'n',73rv$QI&.I%Rؕ&Ju[= 3)EK/]!Om9PMZO57Z_zpB%܋gH[lZMl U Z/y[_vEAJɣ:S!z#]rnQӵk&(-n'r#I籀m_M t&%8M*O+&Dd|`J }Ѡ$?\QOee\]ΌF3 rK.Wo͌2 `Byhn %xӯ  `PJYiS*fC!0Hvۀ!/~Jvfgrgc{%$+zD et&&z^v&&$Swpa%7e?9^b5:* FoLK.`$ ~L9@|[N^ɤ?&I=5ւInPa|2Aϱ [ 0A鍐 VA78+ujO&'C|ꩽ2Gw E)7xy7/ēp~Fv bY`hLz Ww!bq7g0 镈޸JjHT)^Qhј?O*g+6$!i՘뫴Y)=3ҟeoƘ%I^OYm c~KBϜĮWQg*(TI4V=&sĪBbњ&KH8eYSPzMwF^wFxL3$jbi`E2xw3t?4c_~FG)^x5A!.j!Oe2gVDXJ1^yStf+3δ s?DB8%I IDAT|'f/+\ wЯcwT|[%LHiiz̼69 v5~܍>8Oi Ji ]/_Z>yعn:7{D `7RE[CFW "y4F Rz eQAgZGxۂĹ%:=FΐJKd|ԁguAe>Zq &2-e4Ҵģ>{$ ;6*?z9" I^(TsL~.[)h5eHI!ϗlU]ϡ~qLbO%sK,ԎLџP`r@?!= bIJ}ՍTКܼ;c!ͫd+b/g2 L+ZOctXK7/]'Q"!nF!ʆdo*dnw\NIlx Ȁu*%(Eu$hdݑ՝ Xqj(u˂NDDП{s}6> wSM0xȊbTW#2ͪTR/_E5QG%S~\´9S6xuZ`̍% mOZWhw6#4>:>2A "*g*LӤ<ɯ_ks;~қɓ͓O>{9{K{z'+|A-?D&eG*n FPMjП;}RkaRCߑ0VD~>M٥UH}&IʿiF/Ȝ^A$ԞyOL}QeV?WџўITehLNўB!{G!⣽zp~ւIhMA@oB} Z}S ZO*Z ;*JyB>F`+'bK#xFuc]`ZH`p08Hɪ n v50./25-ё5HP;fw@݉hS)Н1hL\DR^?( "y"sW*.t勘V{jemAR}vIGklqy:!}f}#)+=M{|71 nzyt$N$'24 g6sjM;!TA:dы-g?ID! ~u5a?&\(3DNY,(_^{|  0qKi7&~ S3N2({*Bt>0Mo.R0? M>$%?Sej *=6{ML·oa+U0F?OphM@m&,Bzm`g3PaY7{x57Dv? eQCٹׅI|̖E%}T݋{bσڽ*ƃHtcsUٳqq{+:٤%CglMIn=!Ast+/j$rQ%a $RZL;RbllZBOtˡ `0*HƘ;hvbCE T͠y(MsE~lXU0[=DlDDP Nڦ3bPTB &ŘM(mTbS_,{Wi_! c5bꇓi[ĶdHh(IĎِFbt 3^fiUj !$Z?0*bn}pQ &VGv#dqb:g]F:ֈ58XR c[%sZBDB@3eR|g@kAF?0 2LhE {H^J`@tNT0O0M=Fh*Pӛt%s/fߟ!X!w+7;l%Kvs5~(ƪY p-PC]ҧ4ݘ4>Q=_B{.&wKavHm$['Ryic HSIBg!KlԎI* Aj?#uO ٷurb9͠ sGv>MhhTt5 ;RWP/#菨u ulzւ"i9FT2+osS #Y"4>zGEKlɿ?]J?j[A)g {Tр5rb16O:$%ÃQ&uՀܭ$ l8V̘/nR?1AR!{CP>A<`0IxA?D8%FxHW0:!{KH6 P~iK LUP}Haqz =wz7 -6:(N@O߼w 7  V{.;y;t%"a 3h(/}cIJ7Vw!!X*'D#9̚jp ua6Z!HKRYъlCVgo bĠ 4GF !Jud\j`oFfe SR:ӕ 7 ,}0e׎˨'?B?Ol*J24Uw"D;DzК]{{?#?=6I҇etB |&6͘I~n/nȌӫ7]: KØȌGk_L6$dhBٕ+$b阮XR/?I0Vc{=E2+lԊB<¾vcĬ ܜ"R AJ9/М=coC>c6~JJk i]7+vĪ)U%<ܒȎ{@prn?U^2E )G ݊97`ƈPZINe|;A4;G:) ̚ڒ*\uvS$y_6KVG{_c/Xƭ|^y-ɲt,Z_UcMn٤L ɭ/=وi*yHI̚sQ1y/Kcݕ0IPTNJٴJ y1( D>OXo!n ]BW/R?[D 3v kULj̽L'*.Щi-R}tx|7 gJ-˨Z?&yuϐ](\P|e%)?Uul卷$-j}emnVu&Uxn?7-? t"3x(==W3s-1_ C)D;](iȮˌt/0`Nɨ_}5|[iy8>D~'fXV_!HDo>+^ހ2mP&T G<ʾC+/Y-ˮU$b0(xNg#u%J}4%T^q@ Dpn\7ԏ9cG&0MF KEK yNk $| }ZK [-z 'VI~휌XhCL)\̒C` m~on2xz !Hcv~ވEbۣ73"#~&;r{AwJVKG4)FzΣb-ni~0 Ԡu s N\mpOu uD_JR1"|3Aϻ)mS3KwJﱀ&hQ4?'  Q `h<hԹUD= Ll>#"mz OiՈ.L4}M{.WR 9ҚJk0fgGi%4q:''U['rEfi39I&s3I&>؞x-21%k7-)b#A 襺Uum6ű?0A.yb$h}- %Iϊʣ4 ALo&bTi~&dFeѷ;l~QTŁw*7JȰ%$(ѝHWdHuZ,:# 8W+K qwLo~%UCIA\,r(Y6B~J$#VySk.S;p !c9T7kқ}})Q^II/4ytތ:ub bqaUBLJک8F]ktO 2F ic Iو\7G{K$X(m8c&?8CX1|͟%ػsOViaDN`bieΜF{6Ddn4?6`\#*-zWU^BVk"㠬66괞%R9 IU:J~V[Qᔰ>}с UoJ$`  aP}hJxWjª=_&A>spgyVy(q,NUpr"T>b8nA!C0v`~ZJB]b̈*t\?dj%$)O($>^ŏCTaQ7%;>VeXɰy22ݣq&_cP?fR{DrUdd:؊F"r߾I@' J@XU nB(W>Y!D^.򔂳oQMG"0%/.h:EOTt*.!}yau`" ;<ܧ1Q.ju@U%=3=K+?NFeݠy("3c gfKTr ZSeM4Of0#(tvG5N6PBpp"Mܿ|_~B:GoRΰ]8Ĺ$rD` gR~,"% +`?^aw >g I)8ޥYHZ&b$1BHmќK5P36F~hە̫:h/&yKaxiu(|B`BxPg?G|q]UD9dzU{J}0 󖰦'}tGo>$~6NZr5؛A=o֯ IDATJ.ƺK{:O;pO8 C[5$ %; 0utLpIXLnؕ"F]&s[|&߁ H-,?+CNy8$!y[!\F* ؘ6D éʠXHqz ̣MQDe:'JH'R7#g0 /_ ㌊oh68*NCm$VTܽ%Ϊ>ٷ$÷fA|w^I FJp*82\őGN9<:+vY(kݹZU-!OW.uz]L:vVqS -!{5dG JikDND{)??K`DFDzM苍jjȝ>\?G%2jx;<7`jDbI"u)mF9z/\-19:B&lT m3ܖP+ ?`PքZ|pTzo ON+ HFh,/aimj]><{xyԈTz 41 ef_&~/tgd#7; 8@3<֚PV©C Y-[uAِS  l>قDhWp&=udlGG3_YzB} (@-? A4iք~j1U17E5͠'BڇyŽc|dXG.esW| ~Lrm+[.'iH'!gqq ߼/|Ke$Rϩ5WdKomb޵|^(HZ?"qS\bkϛx(qd+SQm(}{ԟ%0#rW$@[G!WD@~"!~F PrY{6ѳM:>OąHPDZ;&"Pؠj~\ܛى:_ O|um2 mRwM䯻|e{:hG`Jvl,GT[FUC[Gs>,4$a߾&Y@U jƒfVP" o_6 Yܞ Q$IUX`#=-R PԀg&LL>/#/rKw:>$قgOڧu] @]堨љ}H(̰-vCLG.`@902Uʿ:H&6CC0SHFÎޒ/1\ghR~y=X 5@G:X ]zk:>安IU>zυʸ15M+jb?Í_mЈfeB]8G$T[F`H2 zأ$BeE kl7iHWu4LI' oZ;q@仝yɚ%~B|M6VSp>V"qv1H2{g`M)do MXA*M֟chiBSп7;Q]ZwB 2R(S;ed}vfcI>|GEPNA1On=x=O(WQwpmzwM+7vIaIvcևmatzUٗߨ>["/,KIBZ7dBCؼ ]ך3 -(}d=cdwV o/{'>fP2p w!k//)%,Nj֑Ͻ%5[s(mV[,  Jyeml eUp2:>{L3|) yىMZ} am="dU-D@}@&a,bȱ82E$Kx7#MM&Z{TwCb(AvG QAIhTCj'tܔ4TQlAQD;;KKi_0q3 5b}CwZ%+D̰ c$BKHpқIDoF]ebf) S̀' E3_ QmuLI7 uWEdogEikXDh*͈y#CIX#Qa@gQ)Xg3r) ]^Lawϱi9܇ CbG ,{fC .H%'Hm@efav`{~M6D*~\RbQʧ5=, mV?Q $a-HF]ft_3py~n㄂~m֕'xyvg>:*@_f%Z7TYߚ`oqo EI ch*"zG}ԺJ[D{=֓pӛR(δD*|2"qSc h t 4[x1|< 2hiSgV! e/)܍y%Lp7؎&tf@?ɇHLi> $C'Gt#LE{#Hoũ@^2~@|$V'FqԇlM!5;Cҫ靚AE\+ȶQIPdfuj{H`6fP{!h5tX= }]M0̙xP:9}$ʱ?6ϣ9$iCؘ_!_^KHHq} ۹+7b[5btu;Jĩ2Z_LԎC|fWO kDt_=5djɁԴA Yoɼf57wty& Kvlj[L\Pm< K!N߮s? U(+r(JuLDL*u|v鬝cnF Ut#wST~ /r_8A|Ea;I`DF^)*E- Hޕ; Odu !uz@||A<bM+lF]ە&t}%=+]߾F(#1׺]>~l;Bp2k7u/<1 ZI$CcFDI$bN{XҟMl{{VdYDdG?&ELk!Hەf(_9oE|$'{t\&B6V3$KoS~X"2@ӈFzDag I 7PZybU(zY&Omh[}PC)]gkۙ&פ(Cŭ!-;wY(PCO#~`ttbt?(n^Mb6DȖϠb䆴WS(K&5D:kGS6L[no|j sfY2;Qg?!zNdv~6}W8ҝ[‘d6@Ӡ01A$6UaAz c8ױVj1!sK8Gs)ڿpeN9[w~&ĸM\"-#U&b/C)-jbĞUq2*ƹzniF*q ]yoHcy#H^Fv}6#@na$R$5X6^z7(P#h #8CGVhu=Q'^4@,',".h:HKAJâzmoV"wu;Ǯ3G+^^!ؓ²-%bT/8x wIԟ2qnDK%w urU1d7DF,h&K{쁛)|/O$P2FoiYٟ}`bְ/RVQ>F Z+#(;\@LGP{,`XքR&2'M:05bP ]X<:É÷p;,T*7b {MDxK Թ>_ik}h7Mzy /P*%EXG"(y#EM@u`V<6n!:u9vj2NN"^CU溂И=Sl YΧHVB3"(ӭHx1ٕ1[`ru0TZG3ˢ~(%VMHL^D{zhAk2rD_[8;}y[ U(}w, u>d/f_eC-pMgj'KBg_{އPbl-6_1_ Mh$V|Nuh/HFÅO!_5/^[¸`g79 F j5A3ܼ fK,?tj'$̦x'uW3kODTGyF# ɽ٦N~A]mz4d/4HNC{kTE8"_#5EݛE"5z80^we>(fpKSfD @qTB IDAT M5mQCehc}4wλCKv.J:4pjdhJ7/+fu Z4t0Q!V>,jqVש?KbϿ[!fi/L46N}ij>QɨK4?m0A="ip<›H'$ԾD0f`% {lk1q6%FG 7O{(=FBB*6QW .ӿѫTvn࿞ʲ줸T;ܫX4~2O/pc8~u(7cjW1$r@o֠mJėT#B}%KLkcD1rH^Qz&#GǟpIUqUlHk$lB3BVH,[EXiꒉ݌ GF>S3-AFl&!RnQ?C^LQ <"FAOCȾ>ROԘǫlLLOK*K1令5T=_#4a3MWxH!c] 9o"-A #~vSj$E!l^yui?U!4b )LAIlZ$tT[;%#E^#qF8?s*jOa8aY Q;nbd2BeeprSP3dt;lչ1&NnwJH)s4~rU+:GluY1[ak*| 5(^p4/vDDf\ͣ Hȴw @$/Q +2B]kcqǫPS`'IU0E.1U-ZZآF`pLΓ;1GGd1m 3CϕupNY KIw]RP?ǮH*j_Yy&ރ?5%܌DbM :;M{OXƮl>S?pS:"/>3Ml|r{g2Q ) 2ߟCgX}*Kʠ%]V_Q3ݱe \UV7B'h<[&ySc\4I_qPg:pf@혺9U,KLk16ߒɽ)xKŞQ\]r !E% L  NU.dt>73SĹpb ;y ]ڵ$n.Bo)wML3pXɄ,<t0*>Q$#M:q]dV{Eg"v]X՘u2:|ԣ}jKxXKjm7S^U1/?@$~LɃ7bX.Q+LM5X }+%fʹSIU,'b&0.356K85,4с~OdHH2Gep$Lj+xx$dw71.-dTqdEz&F &^EZ٢{'-oߐ֟_ub mW}ZG`ib-+7}z'dxdMpfhk-4Y{#%;]F);#/|"rX$ycsԓ?U_g`SBy!*`% V & ~QWɽfOد=-eҠ?6Cc"]8Bl6 MX-Pض¯l^ҬdH^R,NEzÑbIl74@ctCXB [z@ RT38Kj@I0/y/t}dMaoBD+MK |G.As6)k`9!Ěܨ;f+¹AԖtgc3ץ0Hw&nDꀯX$6B[qҷ x~&W2"K}|[,6NY-wN؞[PLBW'rZ UFk4 6o]kC_C+u ]=KĶ5P;^RhAq)k b%$O&1gHECh67QU)M0bMo Jr+"eW%-! 73m `,lؕ>9/o*!G =WĶ`.ڵ.{wy0~Aa5_ gX;9m]|Pr%!/B{qi)4XݐSbt bg"u϶mķ}p%,ɵɕCjڢ?CxK uiWCMaR~$V`хknϛ$=~?&}ukv#.H|z2Il7B{2v5dӤrŋ؈NGw=mD)|bkp)<_߹D' %6>#lXQ,r?y^z@8}d5 Nemh/q ţYDZ|b=(pQ-LH w.|Y^/yM՚hKsw`H>p©FMPc [ {]/mޜ~kOFx_ >Q#q퐿%LY-mPzf^R]9@T߹ѕL\gh_zw88%%kY[c{{qh˽?D BC1>{}g7bRܛmc+kv#]"s+gXISQ.I҃Gdo$YN+FeYDȰ62uO^cI`1yn Q^H0QIcP:XӇoJP3.)3vE? [Ϙ讔F$׽aΓzO1v)`RÕSQbAKaقC(p--_}^c]!f]=#b81ڂ(Vt~/%a2(h?p¯&S_܏]W-ODdoI9W>(rzuԒ:'.Ř pn%0 ߌcs/,JtuMK&ΚA(zu eX #v2Q' # "tuZDp )JfY9 Zcuyw=F^݀j$׽V̗^h=v3.A۠62ܿ7t1|D\4zqsӮ(Fq!m"~Bָ3$Ҙ^Gûbn]A:e/mkXc9hM9ٙ_c a侗aTk\J]pdI]IiGF'{WτWƨ^=9`dթ'E q x_ۉ'C:r}Wnb^+ʚf|-9 !Ӈp*>(_S!J:Pzs kT0nўwd2 _xϣ]DvpMseک ގN-F7aio")Or|w/Zݤ-=2==^;2E v$A}bcͰvhuzI]Y]2Ia#SDJ#G>H tXg-*t0[Mr<[Pi8 Ra>䡷ue1='?0r %io)4&,jbݗʨZ3y`$S%4x$CGZ=2lR7va4'mV]z.*C (3Yٴ(=aV#{WQ)$6o]wLh)R+}An9j4-Dט RVgԒN9X皳-\%yv\qBPgrĶ4Oko TN16[&Uҙ}t'Mm<}Jov+=@K_Jt8sPoJB I6vl }y/FFvMlG&vo" iNYhVH=@Ͻf v+a¦*["sӤ^~ -7Q$QZ.KXt?qA6*o sZ2A-KHRv]nľ0ܨcUqnmПwh`jFI'Gg}pV/_&qq'9NwgwM[/)mhv#yjb 'H9ku _u?pDs`X mizƝw@ '|I+/B!HY2"~&[OJqb? Aֱ)*MwcK=1(T=/xn1OFuIo4gt9Lҷ-TO~>#θ"D5~'K ht%B5p D??Ѻ::^&}!yW1KgKD\ :lZTO⥑ǪAN?nl3:JH#w[h4eS&"DNBy^1=L/V&FO0cIMO*bL]aoa0~>.U$B[wtF_êkLZf|@f)թ4㲏Wg)F7~$Kr5-htoGh쪢ӜSSĦ6t/ )K22P_ Kc]ܞFW(C-c}?M%i3YUGs IDATj&ڠTtʓ1Gxm ©)է"Rޢjc⫊欢4bLs >q#[(%\a0Wv T^F(\2KI3vVI5`n1i`(W'&ƼPl !Y/ pQzt*+3eoKw2Rbk`2fvƼM^)-37-N0l/eY"N|Gx)#S"fdH|21zyԚGsZz,BK3'Zh_]a3xi! p`]pOld?]z% B`d&G$7NK[JiGOd &2\0M#cd?ؖ owu*Gef|=sƬLWˊL~^&[<5)p?~W.N;hsӸYQҜ Q*KiNP^+wlNp:iqR!Snwp&ҳʯ<N^k'S,$2.*P  /fl Khu=Ͳ.~%"Hj :A<&EQ?u _<ޱ4;f>p]T'/)X}U Y(j[`DeEdz>̤ [>Z.7,l2#_ܨ`ŨR`{J6>h9oE$zlˑ'%2Y Ngqbئ|&Q&Sz}'vGTJox0g!bnҕh7.\C_Y#(Paܜ]鋢hY1wbqJŦ`5鑹ץ3jZCz_;ް(ʤȽ!ΛmisZC(\ ˟a?=#2DPWڨlfH6Q ^k4{R1MjԾqsm&:} ˧~,lNVa"/dؕ6/j$X`GnibuQ6NYT5q9%?P(`x A5f7Js'xDps#&Ic5oy)+s!Cd h/_=9ץCL{qdR눪c5|T.AFEzkK8xOBS c͏΂N9AhjK8:ϓ7(1[R"f!vM~? b{}ww ˉ Cp#roTI~ķ"b[="Oɵ^,牗s%.JSL]RCI|3?aϓ~)A]W}> &{K7bzm >s)Rʵ󁸺eOȸNDuY&`$-PKc䪨{M|+=!jt;|o_OT$ dS3"C^VQGuXK=y(r lLPcNdќ.wgntfeBCΨDhw]̬b+-d P?$kJjOyE<|) jG Wׇ׷rɪ?v?IqdV3-Q?~0nKFh_+nz>{[WI*WU[Y#H(ߩ__ЮǸKb.v#$BeQ>% (]OZ,KcU~&F(f;3ac#)y~Mw̟E-qЙ8|ENYi·}t !ho`A^*ъ0")1ɑh f3=%dh(z#?~[НIKoʡ5v`-r}&[N2w ?ab__%qqi)c$w2J$4wc"z)SxJx4{m%PQ"{L߿/Lb6i,f6 y2(|y>0K䘠kDFs$|t:?7T| 7olНZoaW'rR1B{T=İ15qo]B&Y6JEץg_"*ڦd)UZ#02Yn6򠩔i*'n]t?.2Hnhdo71|ѧ8vcT7 }x-P-$?nnTO1s`q.\gS$tzx3z 0. @oh0-7Pc,hÎIe 61 k[:A!qKx>Qlʽ (B) GDMM`J:Fq Uq^Ra;4jo=8J2Ch$7R6fdؕz݇l8݀)9SQGDF 2U'd~ 'I~+]Bȟb})v2ЈKtb^*"8ܥug_g$Cˀ N?/5Rtq]Uw-EmauS1jGķ"B[rkvDuCMZ.9thuh28Kl=-B3LoMCtg|KgN'͟K_Qķ lfߟCd1:A}A#$(^rɼ٠y 4Wf) 4Q\wON/>6/lj(ze01v17?K/i5"0ko 4vS}t6^5lj ;/xA툽!;C5^F1v% K>`64z#0|hÍ0/ci^V]hCT0jN2cR |$җ "d=?S?1JDwL#y3PdC1Г>{e_g`7'q 3|OLRyRQ(ۢ080ih,̋KQni3׈NǹfQN`:ZKB~ݴmҟ=1-b=/S|أdU=p*!I:'e]r6>6Z/9#Y"@`b5|J2=s jJ~Hh%QWo,v q͋Jي{mO 2wԊ/#zm:MRgWuw~k80׳t![>c^^é@xfUvQbX5;NZDr'JaN;d!R@#؁~N5fgt wv$і|SO?m C[{t=_4#WZ2dLk+`k˾%Eo8RGwaUCE19h'tP?R9&E&@?"tBF+bۊޢ>DD@n!BkKلEF4 ro`$==L0T⛂6R>$x 3cjإvA$q]NHȱ2w;$6|k8ύ{ (:EjPwg81MiOfeAuQ%vC[oaWCBCO$VVZ-IT 6/f?me, O*K4gcCtLBCuMw)rmՐϜ[ shji`hF0׏.>B %bD}0= 5s| |[m>4/*e qu-32~Ip6Fm?N:_ Wo ͗??yemXP= +Z$\]w44_hmsH|6}v.QJ&'mVqܜN7E$eUQ$Oi{Ϣ>>\#׽cLI/>gFLT? iu:; |s>$rBF/9x'6B#'^6]s[4hOJ6XHH8VlfD qxxїB_m4#dW4g;C3UeYs"=. s/$#aqp}7Z־OďiiCvN9.!{A޾ 3aCmA͛ *3uqW {r1P?mT9寮o3izbkK|@ *RhB"N'|#fbS Vjg-S'qvtp<?ǸF*t'ch}A񸅈`4/ L~FK68݉8䯵hb4~2"H-˔+ـz r{1ZFE=ҷuv_&"V]c>%v,XB~žk]* :Ħ{LgR# p+|Do4x80My^Dl˥5m1u$vIgH qD3T(B.B>5-Xzķ5j rBK#dҝL4g`Q]˜]vkl}`ˤzt# YM1. ʛ>$1cUq,>BrnP&աhK}xT$+Č EF2LIS k=)37<3CL7]$0:1Zp zIn\zG(Q8Ԟ/8$֥T+S0q0I) Fl ?3۟.0oVktOL rҝ~vƌ,<_oƅ|/p!ݲL{tdstb'׮}!nSTvasd#4("x(;D[F?~,\nE[,Ddw|boWqΈSHAE82~#1#{6cG= H4ȹ`74:;/)g- o41A<ܮ;'tۊdg2vMQɍIhDjbMZO ")nQ'؀f`ą=f|vmbJh/dA))̝&v[솠k VW~{M 9&fzx*F2EIpdOϑ{ӥ9̳k6 &#Wt`=% IDATݓsV' tG \~ sGf [Ī! 3hE$tH-uXOҿ>CxD~@NmG(f:l}0 Ө|ԙ^{IP^ִ ?9GiF.l[ĵJ`:Sg]h j~\:=d3}zzOd -45P)^Xy *s`#I" Ʀjtv!}S'zE4p6 ^̟[ P}ߺN+orE*O(q{1"c2+jw< ZPќVհΤidm;TGY?UĮ]VSSF?N:GbuhLkĦ[U))wpQr+;E&%LhL6 M`(BGmv"W$hTP<Npfc6J'(з-B3B-;nZϥ3(^#xxs=I]ڏO qmޅVP w1[ORzاxde]Ls~vNbUc ϝ)bDa`ڙ\4rtT;qJwH{C1 cE=o+guߓutC#c4)n)cO$s+Ft-P8 uiSo3]$򄉛׈?;4jD-;XfIL7qʸŐ<ƿMC0I5,bbJw"0B&~2f"1"Ps"9?Dޕu֎_(,)3(FMa}uLƟB΄7" EzX߸Dϡ1_,ƥ->wIl;V&+'do'seI;[4'T9ɬZ!:}|fKAMtwHh=ù_ggg0=d #i%gޠ; sc[=kWqs:c}hߌv(zDȍϜݳPKqEXRu*Z#bC2FkKj8Q+:3~AwiΌ(f;(Bih-t`c-d֚K8=K;^N$ ԒVdNlZ+;Ip\1W+v_#d g .9 > .CLCSZRjczobА6gNa%_ȵt';&Q-.}EN{& kxV꒾.tGC>Y TNWH>f7 ]H&dŌ@P=C:ɇ>qxؖ&85N͏tIDt/K.QP%i&MX$[ϘxI]i _#ψN{4%klt$F>LY+' 7|5Xem8yvPw4(/f"hp\1SH-XU8-Ӹ?I(9q٠_G=jVoH;s3h|nNxc~v8]koK~L$5(GyYGN';tG540[z>7ĝ"C#1 ?4H{2ͣ2뮮{sgc8 b)hAB0(AAʲlf8laA, E)E$@ s؝kgggvg;m2#2=uf{zr 262]#2eurLN vb˪pgQV:,?\-tg$83v;'Dn6 pcCV '>9@V#SZ{OZ1\f-[b$u/L{#>Bw(GD'a빴okR"KpXc s bz?r<<~b$d/&ݣ! ;Br;TUb=œ%i{!X!.J(scͧpZ:߫d4{E :>Kw|I>a>xS? ~@\G+jw&_'{Ktٿa_337 먡f63*ͥl!i3ŽJ)+F? _ّ][O=GkI39U~B30${JQUc5$IdO /_+tYO<#JɱUd耽!|?'39U&CURj;nAcWHD[>Y*IbKV:EUs9}ZxOa}% o`쯷K?&;zn(ф|Ӳ؛@$32\v 2lL.NW j. {Cps{& dHT1qN[R ۽ Bl4O2U%2U^+(f*g@AoQZbBA!?>Md/^:?,[mY$Uo? .jT,5#ϸ^͑x{ԓ-N0v5"C!cNp `_#D6 }MtMBf`E1E ]b>Q&(b}߼HXtu@AbXa-6>zѧy\e/J*I]c(tm'5]͟6<ܔRi2MT  Ѽx(;dzB<푽*hUȖkR3<>h\! rE!Š[X3(z?WCP|M 8n%~3&/!V;.=1$GJqm4# =BH(@i$BHUbER[yZAUJ}Dhi4Fe! J7UZDΑU*b44]?`?ITER'xy? r?4ެg4NZTY$:XYMlUHa60辊,b{(o\!^S잖U?Ryk`J'2ؗ>1[RQc0;1 YMWzԟ(yZY`EFOMb  T35M`fBPt=a{CQTw㞚ϩ8WJ48Z-<5:KPw[=]}^Y_@ptq,#4_z^JWϨoĨ΋96Dk wp:"*N2Rᬩ\gP6_i2ڈ4s5ސƙ*1Ḡ=G : =6@"uRd$5~oLP%4>:Kz=!aY(h4?2KވØY.k(vNi/E8E Kw6 o5L:OO<1 %^2<1g͓Ԫ$᝘[t?0[ps j*ϼß9W. L\AZ0i3*h Ad)BxyX\ܢ̠4bR |A( ^plg`#3>iH-]u_ IngPb3QOI{^%:9Į .}"TJg5tkQz[e}:-uȦ{ƃUu2FIP,)@?ϥ&ft4`ԥaE v%Ȝl^Gl-mjGW#/; \OAݬd>?# j[gZGcuU_a$Q|.Ec(\@Њ-̂˓rG3b!?P6Ls.N3tƊ=iZ5P( rmZ}ݥq*ˣW :'B]djN/ppi 'J{@0Ջ)[/6VBE.:` w$[2jًQ.` h=c:>3߼0StxѽLzSV9gP yzs8 mܽ!RtuvCHcfRf&t@!wCt.Z%b*ΝIDHzapwFMo8P)$cWd"Մ"ELLip{&#ӫylszlܩ};"wU;1^ kBj2]2F"RxrϬx4$*П6L'-Ä=7cDh ro<`RMP#fyB#P?w~Bhju׽_?g P+s\1c=%9>îitmrOg 4ّ'nIbV#F )B:lX5N- #+xm~Ocq@U!QmTי,vh>*`@_tNfjq~ :X{v̪BR8'?4:BFe__=^C{ -&aP7w&?X!wGa!z̃{ gb>#6cWkDug 8~JC+}qDlts1wwSb a>f0fc&9v ) m;uFO{ QFQdNsPNH!NL:[#t2kIA"F?Fd\%.Rd|fU.MSRԥw ESzEvȣ#[L{̐b}-.YJ۟T'gQ _8DO.ra"{ƨj"KY 7G>鐻,gq Ip`L0W۳Kt=f4ce ~#RwZtfOCN2*nY2jBva k(WG[y$wX۷F1 =l!}N7q”' r!T?ӟhΓsr=Ȩjbklj?xD2? nE\* !}u<3tsl}(S>ʣ-^A|ŧ?z+, =W5X'YbȨVfO4O(#mS_v(_qi,fU wbbCC5D,*C!"S DS( w#은mZrdGYAóT~M/e{6g42UIȮt5LB_B>G xy$kZ!jA[ػ y-}m.M4EP#ez:OW2ZXĺNv5ĹKr< Xe4AVοg(*0mOT(Lr ɴO<24[ Wߢ+(x%%-~!a8څD(NBDo:$0S)\4HLhjxdaD0Hai4J$"[fY4֮.FPc6#yiEnMݣ&zC꡿fMx/ Ӡ_ӳUmCso;?>AGt aPPxΝ&ztI?==Hu S7S(En97'Ī3TZτΨL|QϋwݫN 5W ,-駮[CA~GICF?1BðB`a&|t_3Ovʚ(wxu*ƃtgUjO?gI\a FEQ~yX&q~tFb{^R~0?ɓO8Pz[s( YKZG16 fbC'4Iԫk BT%U2uNUyG!Xq x= 5I81pazO+!A_,PtigSAic1<ߟNG<~>z;دC"Ŋ 3~'/so3 IDAT~'JMMӬ=`hߚ U҈T$Jr̴IdH]?2Ik>?m + ~N!wnc_èZws!cYҁN-dAʜit,)[6O O\_%G 'T4O!eb?jD$]2J` qKU( nQc8+ cBX23Z) FxMVcS%\E 3WDx0C fR:9Nl&(Ĺ-eo5Y{2#i*FJ5H3v575b'bQtBSC/L3OoF#/B z{Dtr=(RQJúEPgeujr OEЛщ SeZG&Q!h tBȬƘQYJ:S=3;`&MoNy-8 t/)Fa$wG\}]56ZmR" cey ki2P*Uvd6Z+$Zzrx$ ne"$*Ĩ=0%AV>v~9dB+t1Fԟ%7[ P=IM6URV@3oP|GltT4O:R~o"4'U3I!7؎6[r3H oAj(}Rv"aĮqwtfٛ4?9̻ %<'{b).QJⳗOsjvr}ݹ(fE1R 2AŴO&tH&3"neP5jNyF頊R;}eY1`ҤlUPGG%ݧ=H-M QmRCiq>&3_}FcfE<X2Gj5F Xk*DFB1Pb s,<+z^rtb /tGk<+LO6FS, W\ ɬE+o$fV*`00IFQ9s.^%fAJSm:^ 0:@pkQ闦HqyMfnʗ50i*cԁ@)҅m)jH Zttf6+,|MEo`f}qzK;YQv%NhHgj9!46Y_q2oqgk$4@10DD3dvN BfEds#]EXf뚼 1qcJԈO7hlڄ4C*>L4-;\ˆQlk(K4O*L;<,NC:Efb\cNFrh3zOr, Ф{&w?$LiX} =@rlᄁ$S kW/K+PZ6;O9}6 OLHңG0{T!ʙG!f7yTw{Gv8E>N]9+7ilӈrp%Ñ>D :#D{7w^rE)byÛ*$jml 'to|wН9BjCp'`'*8+:nq3:_ok';w4 VBk%3}HGt $:*(\hߥx^UV=rJJj6R^2 AM:- ||ڿ|}ެeWC(fn3)^D8Y+茟(|ETީ|(Th28Gܖi:J@0g1Fj I-+q*ا>'yL!L[hC{GELSY  # q:M?Dq %VLHOu{`'vpV= 47Fhk$'W;1*I&Bnra_7`8S~] -8Tux0?>[j.j$[mVS)can=B0Y0!•5 gmhC ?'$> QGu{,r&tJޑ*PXd,A֢&[/Z^-CΓ>4&1se߾+)BǮ( Xfth.럘֬BW$ithM#.X_wr%ybKHgUzOU;'7%^FЯ?$ yɐh a6eUܤ&Xu%9_ vUMD;1suQ#T -0|ڧ5w] .}XCuwmr88(+`3i|мБ`A.ћ5iXfR^ϓ7duy*~ɦ|!!0 -_i>+ic,[4MrpL, +a.0z!|@Evф'䯵1$c3{{ ?b|f7yJ,ԪqIj̯\4Uur]lM`EjE__^&ϒ^Ry`:EA#\^}ijě}y垚MލTf[e$#pi[^^ z/HL8w+UtJc}: 34H; RC27V4aJ`l HW/mNe\y) cW#j_<윱H˹ եXD1۵LZH"1j m {SX"SEI &RHNSwdAisM'?@&GG߰H&[1C RXe7fl#AR-'tfcئwXtysMG Zecas qgH4zOaT6 ~!"NtoC31٢a-pz4-V ֻ)=htG)6DNzhj2Q=!5gfʹz!KlqϤyL'N*c4n1Ko2xz__qp=䦃XjF:͗|#=.3BTEMȃ4kAg,:kb8[T/,m5i~̍ qV#y!a<2K17㥨4X[Cb"<: .'0V O 7ݘ39#ZFsxe$+;>]xdwP Iכ聄 :+&a.&.mr w|XJ'jpUJ6Å+K㵫)&uOBQr%IQ  BO} R} ReP?`.#`mk%V$e)G=hQj[#*}ϔ;;Yt!eg30!i4OƈmOd+-Ic>cZş)5Ð*Y1ꆄ;} {ĭjsDʻ?fCĤW.dPS9ԖN#kdg9_XW1W}0Zc / O {:n3ROnET.Ra 1 T! jv jDj[ékȬ$Hm+)83$d?sYs%Ṛ>BKOAsF[Lgu/6)ܒZ5HȬ8 n0=BB]WNc# } Jq gE#,@z@J]j.B+.aD'$w1w2~Vca<3T]N`JB|')q )^R0Z&žk2-UÏgG4O^k)ن'[] ޣuHُ߳rDL$Y`HVlP!0@׉}eE j0h[CpxR`Ubnڒ+KX-?^#2%ClĺBhǗ<})['=?K ZQErj܃Pi܍`eTDGRגvD[,w1^Jr,i{ժZ"iuPm8f[ÔB<' 1V})ԡrwc\o։/_G,a_ U/' +r\4z1^Ae;>͠f̎׉mRu&2 UaPϑ}vFGa8)}PJ]߃=Xtg!?}`lHՙِUÑ]Fa=1ty= p8TÐd׮>Z'올bo'尷o^ax|RF1Ê@5?XE5 fȰ"ױwB >B;ogT:JXCug +;>~FVpLx2 *C&%ڍ8)F1.V=كŤvcZK6lRusҩ FM qT2!IAǒU Qtz }dX%lF(_P ᙢ!P#;Fjx jIH;e!$Бws &:BH(Ub@󨾿)+W4߬i7%|-oʱ9PP7h l b/L~sWH]}dp#XM*1T"Pa0fH?TZ6L&RkXi "! UwL\@|7C2{<$q3{3M1Q3ShhIщL"ICsŠHбzNp⒜gvȮx R_Hm&HR.45H01{G|_O 0Dna5ߢ;^$i?6'' RR7},;4s7ww=r+32JEhP3kl{l0czh Ԁ BRRkUV*+̈}pߗw'*J`(EgFؽsy)^1!vh70ȄQ Vj4X7dS~QliA5V>}/tߪנW!|^2B:y{eyosD*4ֹ' ɞ%ސB./\AO_VK.s?b] jG%б#4J^A mFHE 2mRtMp7"1C*(Ǜ <5  Gc 7q>pH%qf5$5 +ޖydG,jNZ;w6W7Ppro}Z.Z&QpWVARAd(=e"^>byٍe ޽(kX^r9bm#^*ǪW (%sK(N17&U0A2JDEt]{0@Xas7gwZ{F|6戮*dnv$t5APRFh}UBP1Z^H]m椆#_^d'm7;@x:%;ΡLF/[qPqUⷶѱPm.}͕?~C\xV716l8yqt0RD 5p{8yDVDW\[.A!X@wl]7= 6;vAfs~=dᕷx~F(:2r{A5EMDIDZ>cIcDKE#1prQhv"MkB# *q =&%72&kφUA.͎(݋#o)>+_D(ZZzDFԝ5b =N"@ƾ6 R w*%aou /'sV~oB,;r|(Ŏ|@KmJ󠇓?Tpo˸PU%u@%Vc3P@lE:&F˥Dő@2 \Ӛނ}֘Ba1?LFK0srtWb@|`9($TD.Q~1R Z4t >cWL~9Cgש] vF QZ(^ʣsu5T[! ȕ>_/N>jGZCTExrO3t#Pd+P{ܔO!3Y/TQAmP8"Maz'3Mz4ihVTZByf?ޏЬFy ֆ%*̇Q[tG X*yA;AfUPKߪi&֊B⡜UG& Axgֆ|Tlȣo8(俩Ҟjf7`nD63Q&q4t"exppTRFh&^XatJDt] ߽H#{0;!=Fޡv(DRDcIOjK'h)ɇN@k:ZK!`g=]Xw-LtY)tFʂI6YȒF6N(3z@1GSH8#G?q>}ku:0E+ Ц&ک \OJ4+^OQ.ݠCȾNp_$$/sQm! n?svAS H>iO!\ER)Ik6>PB@l3I{b'^7ɑ ПG e[/3 tŜ0) qpd\ \SF\C^Cuhw#+TBvƠ bkHv0'\9-"F]bOg/Ӊ-JIzل~eB'[į`4I<^12)DB7x kÝ_U+7tQpnnҙH0c ܄ kl'xP] 2gN2Z>F{,` v_V7ukoP?SڍB|di3~ŏDq̎] J@V,8l/uT*v(WX.ov<:+C}ڔ1>.F˧P35[mtI GQ\Y1kCsYޤWe$U\A˫8V1 qLWU҈$nש,3ɹ>~ĠdlP7A'ΐN#tcW鯼z A⨬ĵ98?ݘ7߫rFXo9@t 2_É넪6>ZWP&,W[u|=w܅z; P)*C4 ppVVw]bv)R7wwyI{27V}$$j/CwXǽALE9~۫>tuYhoǘ۔Qr~_ r}n\N'g.CC_㨇Ɋwu-Y_@Feڽ;]y,zH\?mz[Fmn f%p벝@>&5J_ZD KdYV#81k<\~D˜]Jk]g9(SCv##]A<\Fq}ϥvgqwpƲp4oD˝]1. 7\Sƿ)^ZxgP`woU! WOh$IP\I(^Cq]s(?9nBo:sI Ed;?sϔ/32-zoׂƤ%o\7}VhNzNT`vܥ.+m( EEnRШuWf;|<:MRрgdȿϟ%TU,ʗ&?{A&g$cbU2a昁G2II8*KD9}ܰ$uœoۂX_/#7e_k\]7nEr}. i*G ܰ"_Β'vA: o:H%#.aԥ1Pf#Kta-s}67Dy3|P.  +#}PUF]վ5 LSY?+\!TU_l/E}a:|S q*ݙ=*P_okòܐ1y.){@WVw>;)TzOt Z:[!A8=1~\w?ZFG,S8*~O%P;#QT֘jCwD!Pc iߋi#:#:ɬ!1|?X =^[ ΁" E/Ոe~D&И2(Rq 4z תDK2 }}\Tf;l?-Bo&>bGdU xSY$O)qb K+hVqk^V6PQRQ?alRhHM#2>VB Ӝ։B!6[b3l="yWМѕA$DsҠ7m6~,!zE u2tP|e!}>2щrKV TgK,i>k=0"Qo27Wg!&twc x1Cc:Θĺ!܇j:޴)X*Cpamo_mȤhMTߐ=^X7[~%-9WLnE~jqceQ4I ]OSWWQփmBtsہBPP}"lll?W:7A$-L/) atV_hE͏P~zRA1IoH''H'=d)Z .޳{-ߕ# i8d/n!ø i8 !М*DzGJZUȦi.hXo;cIM߼r ^IV<#Ch w6{}| 7~e[rFwb)JYN`|OOMcV349s>vB8@d Pv֣;7T2@ ^̭>ަaS׶5y'PPa/r8'fЕbDOyXE&jGiMH~m@̺KPlldK=bQ9 $ БoDs^5C,oD#H%%30>>{ $Q씂R o{ sIW>SԱ:ኋy{ @(,n*}nox˞ָ &f4'TN{6>Svƌh:qATARvFZ[N|]|R)daK) ?A̚M~GV*s_Y_JXpVv' JFo>CFi*!>oԞ3,P?K=vI5.\KO1gCdG^t9`Ύ 2 B&Տ_X`]A Km ( zePMPog8 9qA<Sm* M԰ix EgL8z4 :?muCr )F"x<Q@_R;7$ؑi4gy-Z&vJ0HtFuG_C,!TʩsKMOS1+A&ugkw(A;AR=iat4߬\?4TNItwTl𚊲MЉ-&' #`T1'=]""5ڋ_q_?1tUИj$6Փu b*݂O&t&}Jw'dn=j3 Že:+1R4$}=ZiDMP|YVQ{=asX>qY@WC.Iu>;rqc#[%4E_?$(|mqɧ@ra@wiMOftQo??u-ct<3)/w`j*EPğ_B1 đ}&"T ;f ИUk6Qtihy#1Ⱦ֠=C?'m֤bQh/ ugLrAqo>0Don>c7/o/FMnٳddhNtSL;?q0Bx(AGohؒxsAqȅH>am;}]>=Gu`.R8%ђ(O0I2pҷltMr LVI~2Mt9=.'ct͏&:D^J[XZOq,hdn) /[T@uX` p{&VQl<-%hHߵEq,) t;ɢrRڂΉ>R~ȤI|{o4!7.Dj,|9= !X\۰0|`r߀?H')]oh+zM.j8+wdѯnw!;J QyH 6~tP3uW"cbΨN(>j&47B7`ae~ 0!ja!ϜU.j*..{ G%o#p&ڽUnL5?V"No"8? Ve`5aR3BE7}5)*?f LUv4 ZdzliMdn#8iНU*O>]pΑݢEkG%R1 "?&!kWXs $}\MGJ,og[R byMnǬ[ O!\q CZ"@{`btUmԻc OtIQuFH\mOBtyhpbguԾ<e%'F#y8/3%;Q% ݍC~̤_(D//X(%4%F!5MBã$%i v=-U 8V7-i&Xk2OSM(^5b)2x7Q =*ֆQ顴{8Y7ϖ.7zj_d>s>c]$ Nh揕Y6~q5ÙGdmn}-e3:B@xIUpK&ljS IOtA {c1a%{ (ͳ6Տ=7z>b+DsGz }SC`w9K a)ܺ50蜱f`.>0C TϻKYXwbb_Kx|\+/R?¸C IDATt'̲Nj10Lm|oˊx˨D-@|k*SNPM>*ɷt.lP?Pg*= m1L|-[FFhqtNH) vTP@xM2QR6.tHztaNF%9-AlAf{}~0IxCW7,霜JH< JbN7`,2`ur/=@O-cs|fx[{Ate9v>HL4hOa=q L!O5አ53M=D_-J EL5FP?+1{e(kGd"$/0`'5~ r}=dޛzs ?Cle4OcFÉAx+̚O }Oe4js~|'''Lza.vOPܔo.XM:oߒtA]E//KuÓ'8w 0h=τTOkhI>0; ˿|Ox{cg&~ȓ̀δ+M0Rhl GkD.|*'(m T}rP;"7,Xp.V%P'D%}F4 ="1<M"5Ok0Q$; /8q}" /z{D\hpiO  ? W%b^Qi b*jK*/ ^i/G>dZ%yOI^ a{۲l  q g3h(,|,IqB8ȉkA(#I]R8r,3K/?f"޸=R6`P\)V}} RBG=>}"\{}q[}?9cXƝUZw f"sg%I@xZAO`LV4Mx)˪XRlۂƔ.Ż+yג3NOo 4"Iن)1tƙU񃨍."j*1߇:.>^1XoP];(A7-YSQj{ lk4tⷪ&T?u# Jפ$#8dA& _x/%^ל ޻?&nXaSt '*M^JIrao4\ھ%qv Ņô Oi ^&8wN1p!^[S;(rزGS 6_13:DVcVMo8 cہ|=z$"킬J(|qp3.I͓[2"l3Kˋ2cX>NGB4f-6Inht_["{yBT>+3h}]L "&; z}s0FtR OfiBa}1e{t*?-* j?' ;w1Hɿ[ų25~f !UTiHrL~F6eS'6%*.xc}?1I&.(t+Rm)Z~)P~eqkђH zE^_'Xů5MivpOH6lh$C}'5ޞ.!K Z@ز96hNrc l$s-B{'nMI5!KeRV^?ᡪE~Suy[OXj/eWN'lRwh6sq%Y$?h5}j7=nRLljD;=:kQr Z}\)ٍuɵ?ЩFxuOl1zx]^hl1]g(" Vh3j%-^U8J'X|Ota("d NE(cm#a}>\a{;r3IXu w)$j)wwH,;%9*[1ƾ'yO ҷIPU@t$>[ ZO52r^ oyIhm`6qۺjѵ7$}.#]ry'e0H"ǖ5@x]h'sˌڠ{VmjsN[{G6I;[~*ãu>ű #&l+G<8k }S\+3ŕ/Ɓ.x $v%u19+_q)lhwL'9 X.~_%u[!1U'; 2bç3S#[̵Oل%8DKe2|F.VClPD,^H%-oW21iBhnKJa&֓spkx܃} '۔ޕ}ܷ5O 8fSG^cÕw tq[+CiBsDkı锝zO|RUL.nR#X]lhbxܵ>NDS06 @5)q.z7 v7[r\!)e01Vq,(qFab@ @=Ћ=Sۯ[;5O@@gD#7LI-UTFDg@в}ԕچNdӧ;*3 NҗULie5Dt l!J"GcVxDl1!Z!wBWV0=}5B Hwq- @C1<j/]M/ϣ9m/BN:LhAQ wz""c)Ew|}̊Z p,nN*O$ Ju.^HAbޣ7@!rנt@"ӟhr\I7Ѓ,?="( &GrAG,oe$&SY ݜF{%1OgeB-ց4I}›p1닸ϟĜ ybAL%Cn됒I.>>&%y 5<x.!\S0Hj$&{pUڪKtl U6b@izY^} )d~wD)OKS5`PFARL e HEܽcI=~۾?ƹ0_nu&BwŨ )BFEDV]\SL%Gaqo-V>1Y֌'# l.ӣߤy^ɥWiL]{ 7[ Gv+5=S:Lu-l2!梶dwP5N9JcO s?n6Ƌ gg:a."jG0r=b+[!|/l 1l2B_nH=Mz4DK2kQ(")俩`q{n#z Sޱ{2ZW3dn-Tr!|ڏ4&P =i7 ~}ލ J"%YRر+)bO͌S*8ĎJM{FȒ[dCK,$Kh4z~Ͻg?6.9Odhgy{cSĿ]eE- |,5#\_djktM]n^7C}JѶu(l[$Uf7M?F7/gq3 A`Á`go)M«Rɤ y dˠMaQF"Ki ܡdC>ke\ž-Y4I(Q`bVȧ]j_`*+ oOHpԥgiTCT-fg%LUKpV(i1jG)EEL}VLV@㈀TD*j[qĖI0Q(`,iC#(Ltd\"=fyq [?9X8-vA_t;u(4t3d'&mC '1m0/椛!">_Jh r # ΄b9G<ɐv$?Qd44B3c;4Y̼p_Uf,!j,K ]p H]Y!fKuM>3JgzD2k60fM!GyC2fIVJufp&l 1c\!|LgΒ%=cl|Dl/!V`ЙI׮(gg[E `~Ntqee`:7!OLr?(_p6b{C22_8edzΚHPg\:9(_^֑F'FJL{V+i !Ak_ 6K8webKpN;Ě L)W(!Yb/44vʥ:>VMfT\ &s1JO9+0!K~{A~ƏT69/u5'2N̋uJwCD(f2$ <#(H3{ ʚTN=CR)J7ӔA『Pz>k곫@!nBg&Ej L3ŚJwz%+PVX:61^#K=QD٧5kuT a!"7gRo1M )ՈZc1oEuP$Z:p ?c$ZȐ0P?~?#®19ܜе TIޅ#Kyl1=i% Auf7IP9~"x*zK~t,cR)wMͭ{t=b,RwuNaɽH靄mب}}ZF">Q6,Wꓴ| T<~v˦PvRK}/˭_ |[:^$)υ*,e2 7(fp<bޘAy#O{< J9Δ"ocRC,dyg~ ̀`)YT5bR#U4>|ʛdM5y'K>mxNtzjL^4$4ث*&IkwLˊ$ke>BK+{(]_TkR:au*\eIԾLF;!)WDٽ &!jbHA(ߊ T2)\w#vU/E 3OV0~ڔpmf nfY0K} +a`!s֩]P]f??Y oe2_UYTQ7ҹ$:bW! [ѭ ѭ؛ ˲6EV ߸k'z0o6;CRH.؅Z'ĒpX?1zܛh;BŻ_.~.t͇IP?;Fv#Zg")Oy7$-%$WoώSwVeouЄQUa4Ǔ} k~5&?JoLhJSg[dLfE RL9PZՉ>境S*Z_vLcߟi刊]^!#ɕgzh*L~NK(~gG#2IG,MĆWCr<ϓFh=?#if d(ߐB;7']&)}S\&ukC+Ec_*)Н4!bq''P3T̀Qv1'=nS*֒U(Ć #L= ї4Z AN@O.Q L +!y|n goR-[`(=^K1*^Z z"-'qKn%A:!Y#J߷Nctm=H*MʂD&Hu 6)-BAjDd&MlVz-_$s'LAX `U +XESV%]8klj-}{]!##J"pWNtFe+(㣄 'AF;c3lTPdV,Lҙ6.ijc1ЖV鉯,%淮ZwH. z*霘f̊ՀnIh R ?3EXJЮgh&fх׊eH$-<+*Ĉ! ]vPbnQn7Z3ii7x|Jh(h oYHȠ$kR*D]3!:'bĽ ̓HWbh^ d' sd-:+9:WuZl&a6I1,Kh;:{?m$ܰ"(@mRҬ)eq i ,Mj4q 9"+!zwЌ\ͣuR79r"$RB$R@Er20t#$Q>c 6FퟪJш$:47Xw-XO% "+ov0ie-*-`DL4iʯXI lދ42:Bz&jz""=%.4oTOvpZ)Dէa5@x&oDFo6A(D`)mFtF,NtB$4fKUDC'QSy4{d"u{|5c&!ݝ4ǃ!ҶbsG#);;6C#mIXX45Ag+g$:Y?Jp4xbJ84'K'^V;0?_$L42: Z_JbL m=^ZKvޥuQ\Hkȵyޞy]&MXH"]a&Ak+d6V?a6Tp~'c{ FaR}Na6 9;Ɇ93iJ­.Bhϐg ! ml41c}cd$BXT-?4x#y~&x?(=;ʦ[X@;`"G br>h;}K-RaMT9^^N"[#gw̄Gd&*g\* ߏo& -VN-Tw{Pze.uʷB'BW%b!.lsLbJH>KdIĠ3-}p\ޓyQoE#hItpssPy#)b|h*;89XIdIN!YEfXNV5u#66hWgJuYeXfα[q&O!Uzߪ?f]VeeMk}Pgα}&ѝJhyI{*[> V#B I7oAZfD3->=!՜JnARh%'uT*7Oډ 0m_:j9k,ϳ0ce_ŰeV} JLk-AkFw€2z0ͳz s>g3G,R1&$"?8ALn'_av7+ϽCb[*TxLi /?<%J{TVJi} F"<BKR3ljl0Я̣@f1Wֈ-!Z2/%)_\+2wګXSX/]^v#Y@'F]] ͖/;X^gH@Fғww2c,Rq!\ҙT5^E.$c'ʷW6 C{@ժU”TMoAy$~WGL:L.xeԦۭqޗC=+ZݨnB@^Q=0nLUO*ƪİ5̫ qylm/R2Z2޵Xi9s5G0t-/fhWqȼxȖΩ0orZ sɧ0k>F;+eg+77r2g ?&e=)-kc>]Olַ{>G'Lxexrlʼ]:Kz]Z:Uǚ&b[\A qd8Z?!ʮ-X{9)"OO:,U?SanٴOzKid]b** uN%he4e#Zb6fpKʻ,+]OUq Z&`_EhZȅ.;TݒՈyN*YZMypጪr 1HY$ ]i齇u- #?5K 17#nK}HGhMZ! jDv+=աO!Ȉ]><,[3ڱna%E5>1. S < T1bݞ/FF[:ɜMfoFdMlga"+Ts]9ncW!;tM$}0c+Zjmo ®VSЬf3/+L#h.OHv/CX9$4O{U.-_nMX]LrɵC>,FRBޠFH"EPIYߔ]o7JT|+-A8*DO5ͫ5Z5O7cTIWݛ!wuHÏ;S Ti-ksudLM?ә xggtR8tM2,j/\2:!*YOAcC*/\!;/Uq\ϭ:,/XZHjsNkdۏ,o]bg,zUlIV7sgdw*~2~hG%wyVeZ$VAE:=`:J>"zS lX$C1̚Oj;&(te~R-!#**G Q?Ӈ9`/lA A9;{)T}zL=ř4Q=Ȇ9HfFIl~WMLOou, g)I.)T/&4YbY^_Gy%-0[1AVL(x`R@{VA oIegF}, cLƿVƘHt!J)  DpGUGA 2kʡEJ$`媘[};/s8,/0)/"miʢ)֏HHks8؋($ {*qbd E0[56-Il@on@hΡN8+̈b|"ڳ7:}h8j(,h`S)bC6ĠPNDMA(X5N/!4UD mf#R42"Og[-_Hc$Lmshը=cdU jg+Xk1t#ڑ xh}Hi,] $]owbFLSwI1ChV7v:ha)7~h]>p}-aPHcNsxK\4A1޸%ձ1ZGҌ\tz#:͐D~B2Ui0=!x2 =":1Fȗ(z7hD;5jE@_ѧQt(8&+ѫhd\FCLJ1.`yXs5;$誂O0U{GMh=7(1 ߾iRXfĺT^PEF^ݓG)-."SOH6΂T3iNLNL+{H $OE.m==FtOO.@{m$  &P}c OJUc]Zb|*)IUPamRNyѺ>dhIMtB,c>9C>=Uܣūx' *H8G=+_y禈SaJEa~ X db( f'"yj/An1vD)]( P\evL”J#ݍQ%D ڥwh;man@i5$u,zO&Dё) +Wdw E0+Anllz2\!|,UlwHPGiJ;G48* "pfR()+.z_V4&a\?1:L^"L\ aJި/FbEbwUYĎ8+<[@rm:BoH'a{1NP"[eG}DDLvQPq$UɿU2>͑hAJْzӂ>o21ӂJ+%0K GCyX6`ĪWcYwLb!&lXpR "E :Zø­:>˟/~C@'+Tl俓&<t T iY"Ke;\l &=Zq"8vrGwav &S/,TJXv;+-ћ $pKЙQ;iv;h~#n'hJ1ɬ(=.^ƅ:cE(DJ Yd_\Ta/^bęSQ: k/`,k)u%35Z@Q!?r9 V*ޱaǤwسXꖘO?gܥ'yfo#o ֣Q9:͇EP#^Q*o}%bU!(x+KNJgC'bQ|D[C8lНM!bWX 7P#zUzCzWZ$Ӡtm*Į4wl t&Ods.f[ɢ{C.# N q@_VU6 _OEd/H·\b_0y|GdCFbgQ?)?A j# kP)#-E$ "AGI(wzf%ױ Z1RۨEkVØ쇼SwvDYBF.xEƷ/s'r{kwڒTQ!و/is`6bw{%]˫>UB'T< L۲Z}M0:1_~(})k,]X7,ֆ,ft%]fvw(5c̢%DJwRH.!/# 6M%ei1oޢ_m|Ђq2q[)UCb5ARyb_$>yI붵lTyf!(斶0^~*#3K,.ݓAʜo%ZKKٍZJToI%R!Pn4N%5 <} DKG6J?Oe.D$5QEt yj69.U YrnzUzƦ|GY)\X-o>i(X7ѻ>(lIEgo^Jr2'2dyL?-HpjSRӵݒ{vJ8dMr632Z3}2y=Oz%uqQK)W打{aU{oWДYz#5{Qz(e.MvsɧPN:ΧVY-\;(NDj'![׳BT"ěWM|F[$5v_; 6V%DݺKfn]`Lty?+AJ㓇gL<3ljWd35+]=`5"Gz%34 7؛ j/[0b$nЏ&epJXw:ly%ٮɬ{^H'_ʞ;AoXR譗.KPzw{{9RT݄wUx7ݲ.a!U>/=]CՏ*U|zGwL%vzAqx9}n2 0'oPCOK{Orc?qt(A,{G ĺϪҊ]T?F%(^otuо;8{oP㠹ɮB_5/{oѭxٙdXl׈nݥu@R~d "/ՁcBuAoR3*3sAF`.X &hp X:.`=C<#q!w[#= h1 ZRףea yeд=um" \rM(Bѻ [Tuݘї [Ϩ(ߐ2"h'CW<υf8[irYbWϳ <k$v49hJ%=_D]evD!jYLy|@FmٓoEe|!;'lf} LM9k;2'.I>Zz[8FbLmBO֮ƒ$-  W{[$L}umNp h*Ed;TxB9+0c!2%̻cnq&-"0-pCl_;.s \(^}*X)#C̼b$I-ԯ'GtzHAUR<~~P# &C6UOZm_{y-pMH4ȉ59RBIoCAjŬɈ;b>m_foInҨ90RolMlS[4_KgMˀH#PL 9; (!ѯ>DŽ5}‹4TOƘdlҏU 1,X*!( IDAT*f s2]xcS=1T҅W-)D3x>SD&M#1z^L7_8E45|fѪUԣH/ImJևǰCEj;"XP3 K9~p!hJfE,o}z\ Kްu4ɞ1EٲZSvF鍥0ie!?[)q[;XNh;z$8Ǫ2g,AfOޟ"㓘 2y4mr,~^fՄ Wc{4!?P( hPkp0-Rd_ -EpIVfuaZ FbtY~ h! wYTJ/q8ZUaBf@-P7\ x}Zf DC4눉 Hp!u _1T?aS3TLӠ?:A~يUOJܣ(8*V vNj+`PN'!5@G/Ć*H[:Y{jFnӄiڇ*ije>*dD"L8c:vCPӣ7,2.C>{]ZOWX&u\a om@bL~@{ D6ndkLMzHq*z/!ȥ?nz γd=Pl'fU 1~Nd2GIiiQ^{Vs}*3|OM T2kv<cSD7d~w|hZ??&QBUMJduto q߿)Yj&C[mGd JPA21B@lǰvƫ`IUY%@"H} 31G)N ϏCGPFߡ7l4[ m/."ƫ4WT쿺2 QDx0*?;C^ ڡ}sT_]ˠ ΨJ~'LjdWBDգ7b6=i _@gJӉuxlDԭu,(Mj~Tމ`__˄lfƈMbB[eV ܊!qo5PMGTNHAHΌLcƘ̈́Aó 'cHmt;G})sK#!{50[1__j]`8 9Ed0!Bh T@Iلz1bqooJEEtWEy}#+X+maDWOfEt&P;nވ^<z^QH/+eOZ΄A`4@htAݒû7hwVލ0EjCfՓ~mT"z'fH{MA #g"A1,)neorS6i\I~EwUOaMwR[ +=Ē%JJF^AJ !n5!A` h?FĒE4Duu3og7f8_geG{>Ig~sM+*+L{3=mb,0$. 6DI mHZ.%mH+)bW`pTD H0@LLLjW>é PݕYyϽ}<'P_1h=Udǰzİ4bx(ϸ5]!^ Lvhtiz-Ϣ .xoJPjϿM<`)Itllb 1tAbL|U<Ƅ2 ùsnɦb\ v|Rzǎb8'4f~n$Z;$Y6~@#ь  5, =m6TH/_`'q."C%53A4? uËs3>ER}5y ifLB6 l@S8G;5܂$ՈC9&%o] xd qw iO3 C,;W2*>}'@H&īwkS$F13vkmf!Z̮VG^x };7 cp,l@h:)%3To3|YYj9g<*rZy>E6(1do|;.~ E4Wc8/(z2K`c$cJќX/: ۄ ޟ77-o:4hIEMc4x*{:jn$9D7Nhl93WM12s$E>:X$%.^'^%J㈨Ab}OpOA-DoH\fCY4_)6U9q#'TԜ?/ @2XdE:A`n?]$˪m✪ /یk*+2-H8봏iny{Ӫyg/~H E?Q*Nȼ|ɝ"_#0#S%<6fR̈bAhb,;db1>H]";"W3 [ꞎUT?wh4BKo(uhLY, چ $^ú>qji0?C[pI\y_g1[1.v8dVuiDIs*]f39\WkkgL`&ob4lV1DDzW22 B`PoRqQA"$Ӛ lW W'i"CMj_9**'s bipt@뱀qU|T"]pկb UEf,O=ITHW O>^u:J ::/A܀L_?w;CPD9w_~CrvmPX)Ř=X]cR9 idRAQgZQ2k}Ǥu '}RCFQ3B'SxrxyMjxDO+ٜ>R|6S2/.@hHl=lX 6~d̚FF 0j97Ppj, g#So\@ssDcR ΉG̪]GOLGZsRV@#Afg&s/f<=8Z)wFA6b[[D[C2}ӧU>0HFcF[{h4O?!| ^:? '%7v}݁IzynRCM9Z~VKce]*>|F95ȥpKێlr{ϧh1\L+@$6w? Hl>dTݧʯ>`R}MAXv@c=bVf4>0epN^yFk qJ*Od^Z'J()uٷv=v1dRE B$l䲒W $v)*jU]+7NAgP׈uJ"g-H?xϞG *6c6h{hzE,>yYZVU`+sC$t(~e @u}<;[oaRĬRtY!)cTCJ69"s %I `[cqJZ;ьC}I4R8սe$#Zn_3MQ=Tg?o"TNtU&~*&rr  R4*4Ty64Sm8Z?2}-ft_j)tUIzޠŸeeW>z_Go)^T\i0wpwoJ Q kIL] =d3}J3+]Uֽhc)U(EOl>cbb:}O^#%-؃|ቩhw g$Top017TWV>»-HQESctvВ$w2_[eABb7}粪PdGq9W|oAhM2N3Kb\@VjEUl'UprKR;1C&uݟfy_#2$E -p j -&Y") 1Z@x*%wb/NK?It=ɿN#1'= *19W'$xx+Sx9-%IɶmXYI# zfwQ77в9dBr*: 3G`~㽻8Hߤd@z`u+ 5WtcRYߖH=O^u 6 f -AoE1!8̼>!8 l(`u/_94E?5C瓸yU=$ħ~F9: y+Y!c!}_# h> Q` 3fGa4/ý?vSCJN -V PSN)kOZ4J8t x#GR eSg)1|7KH4cnՏ|5RFLV=/A$Xf2"& .[Ҙy>!Eq&wץd9@J 4 !r-ףT^vR o!6a~^'}zU$.m;g=-Xy 119PʅOU/Ap:7 h?GKnGrQö IDATWtQ4c=".]ØD˫4eĞN sd#wP0>tCؠi:S-H*AK_Sޙy "TFKȬy CxSV'ϽPW28gp9/.eupReW3Td;&1'ѩ*] h~"bXS`-n.5קbb2撒$l6en݊}"7܂ N z*]&s$>w:fO{4W5úF5H4JiqK1.h<1ԿE:{ɮI>Qgb_%Ct΋ ?ZL "PC!ȯ5$yJΏ37 Z$2$)L&m3b&ۍ{JP݉"d"[b|smi[&ΆvpF9y";&CM#3Ftu#&R~H_^gyx9h AFWB̞`[M]͢vK+Qbyeyzl}Hcfey˗W8z[w˄3#z048|QǘL)Hxաy<_cj< X "ڭMCuD Å={U'БɐcJAUKv_汗S)=,d|"G6`|?^u"H~)'79;sj/IiBLK YN5Iz9I/DטU:2o 3,жu(do N)b۴OS&A耨gVBFsڗe5H8i+~ɒCzUFD[;8gd5Jr.wKnpQ"ʄ0N2&tx v XGTpd/YtLHQ6"?ޤ) C}d#1!f.z90YRhv_DHgʘɠ a|, vých:?2dhnQCkÒd?8?=m$*\SǂʅhO/[ԙ=Tm&NJ㘝Si:VH"Joz~NLAᯯ-L#4UݼKge6 ܢntֹ ]Aw_YsO}OVݲ=?߁N|o` 5Ə̒rl0T6Z q0J"S'2kc%sL$$^F_@KĻ}IVN%n7p?DK OV`@x93ZyK#=`Ss }s-]`=Zn jPKќ NF-"Fu )n1omtW B"KcFu>A`4S|H2#c`:G|WS2nQ.jV`TԽ&iķb t2oz_vR&~Frg^]%h`28jztO!RTO r%zL٢&#>RpQܴAH3|j NJ$v`"_ Dz:~JQDr\0ӠIbCG!G:.ZU${BVd7QV.h ,[ hGI9v0eH3nק";ƅw❘c1R>~KUdn п.ME#~-%2zn)o'U:%Mnk^?Rς\OKf/8Uk8Y8ՈдTDT3fWMWi|h nH1a, w,&5MIh0Ҥ'IH&1Uz *O8Eu:㢍ı uK8fMMtZ/T:0NQa'|R0yͭ5UcbmHh z'c&^ZBktd>K/Ŗ9݊Nl܍r.Kd [{@[{[ ^p]B8:@Lf#p5 n )~h[UM]/A2=@#Ԫm+y*o8N]+0p=\ϡ.I3ɩ)zL`6u:8ip.Eߥ0I}F̜ͨO6 {ň5r  ̔0al0{߼+Ѯ5q2A7'+!3.} )yNx8 =Q'S.VI.!;@> l@>+?QhџXfHߵ1쀞LgC±N"㒾hwuE11^X%K%;7܋N 4J_&25 :S Y  _JSG)/ilbdiBԡ1Lch7 >4a⛌vӜ>hSC  0>fܶ0z5%оv 9`0c)6G2AX t 0m[kCKtO( !ۈZ9v1 oޯ”Efc(:98k9~kBAӋ!fH!1!~sg3\LUӋؙ + 3!70]F[謹j & #@z4S9BK`]\d??x6& ^Z BLQQ]]j̨xj! #V86Hm)Tg6d\!NV#I爆+)Ry]z+ɴ zY<a XsX6^}_}xF-d$B{mA=\~30]X&]}\xHRG҈Xh $+ZL;s_ޢD=!{?9ш@ *>C枃ݍ lEmМ ߋ]LK @`YCa_7^6_oo]ĴQ3EOaݐY kW' 90 :Y O*/ *w4$b*$@z;kneВO sc"+*38ȎIߕ$$*N/;މuss"Xe4|MrWވSpRwHUXD$1ZGM#M*x#fX)A50qZ&߸~ϻ[x'Hoz D}ԭ4qUKX-r װe z̝!rONDRyAhHR;1Q$T:5TLќNU 4@핷4Yim'sEiՠkJٰr 3'kD,yI\4uTS-~Fy@bs \no*hVZPNc C )Hm蓘VS`ĎGJhXC0h=v FO VOFh#WGs(-r`;dyx0T4^F#9G岠w*PXUB)kLN{Cl"'w1>c$ 4& W :G"`VK 9vhA .'ƍ5d2$hd0|ew4:a욠51%ӈ,07bi2S#U ,K:fGr\[|+8h&N>&mG k[_'MпC/ Qx3iܢMbS MfHp=K =?3lNԁc3ۛYf`\7j؏p5ɋGnW=:G5B)Shed&Ds%&_mI&~V5EEp֦A\_P$I 42o!çT_HRn$96)wp7#묟8VʍEEvQ;IfjDt=g +\ڿB#5(|b1Uiq[ fpuAdLu@D+1~M!!O#N ')|>v__{N7'4=P\{M4.h;9Cd{ts.p'6 w42ݏ=^gU~2A<_P&BP-7V]0 T͗ =^#{E @$ ;?>ϸ1WHAJRX k'eߺMta<4g:=wɻ^Jpډ#z?sTM7ZHD>zo&dMI$z ^C7eܵsY^aTtAzGkPT1U< )K: $ҏq+/Ya)_0kG5H!> rn<=S2DNI!76HHW~Pb\uBv ؐܐ,OrCPHWO54. iP$Y?d\ʯle7o'%Y& Xo&swhY]y`mOa=/yb]ɨ;jMfNHdF蓈ьy|KIq@dH{5fs߇khA4Im`k"b*C )0? ݉ܝx=/ TUdw_]rϕI{+ۣ\Ϣ{XZ1욢 U"]jfq,H_T^RLdG]5$o6PG|-қ~C{`d Lj-pXP S~7z*c`8k` Qkv;{% ~ jU(ݞ:,gϱ!3 s}q8OiK~b'U5kwT) h/˼ʱfj2hTkfk4(}ƞخw-9U/٨/c;p@Ez[#9pYȨV:rcb!f*g oe/&p]fk-FAMd_d%n=ݲi6lKc4l+T oxޡ^lSnE8sh` WМQg%:&EA&?4=<_E4v"43I9TDn4T+nZDlP&'B_eMYЯH.˽P|CADH^%f˽< IDATS4}81XQ6޾=+WA*UڮX ,.'7h.b\%bݴKovbyT鈁\1' >>a6 Ef?qkw,ڮ1|U{-'02fNb5PT{MnRm)UG{Ȣiz HߋIHXc6,FcSx wUL[ [N1MOFu@ߒP !ONyN?Vh*S_{Rΰ"{;;-ȝ5e `61Ԁ*s2zz8?7i^JU%<.7P5c7 [Wn |v׀ߧTpr:A&P^[#yUF_'v-{9~;$Ot68y|2aC0WBy2[?1ЗbIEnȦ 6}.>s ]1镒( viPx![ Ia'D*9Y >[$df4d7/?P"}*'&DBW1=I!5^H I1H` G$vT?O7oۆ3o|oC v>+hF +2gW6x6Iht'™+`. s)!  vh%Lh]G٤SkRVn!Tagu 6U2tcľy%'K#G31A=yTI:4'%9"8xJd,N,D&Z(Мԙ%{rX[*zE#IPBEj KBҷ$0TZ ^$yJ{oMiؚJ`* },k_AI膌.~Yc@z1$gE:EC.~ ZS{I4IDfKGF `TkDV ?&H"Y^1&3)nQdᦤjW:sDM$Z:OH;S# UT^S]Y+\PjHfWHlxY;B{w\W#IwNR~s"WCxY2"fVQGQn:QBp.'^ q*O I[ ʮ)|!{~ BD$''ȼzKT%1:xt]%ġ9#q"!UEfP Et$q>+hBo@GD zGmĉCy[ROIߚdm4?2Ξ?M2~j`O F_m4OO9Z@j9޲!AI/5ܽ `.UxpvU |nAh\p]l#OkB-$z(ͨh.ķCܬx*ݣEkM{rUC%Ts $!؛r꾎x],Ox:Oh3߼M#39jGw")EK`6$ɯC-b=/-P?R ZߦVac1I\^Vآ 6>dYnN#wd!^wQ1)5{&QjTl J{xY(k2zl8 SW.b(/S&a$?rط,J3-y=+3\+xGH@~w,@O9R":%0nzS߫XS_:K'U"֞k qḯķu6A?u{hc,mf&!uKl# %Xj_[$ fJkJ w)(ZW1j)*#:~"uޢ3& QaIH k^Bke"|(Y?S~uGx)q8CY08deD+$hG4ҧY1_IQLN/|`V1Wu794q c]F`09XsyF6kOugF9pKxIٞ K۞Jc`QKvt)gu:b.3Lf~.?[d)uflH뱀zNe)K*{csK>sqP0^6=V ʐ쿼KarTO7ilشk&I|'5j@19;l~_H_SnT(S"?PTc-ʷ:i;cXMSyC*aE% |O>f<9#$"~ &nv+FCuEAT~@d~ڂI@- Yx8gл!C:tX/\3m7䚦b wm>`m$T|[*o{eV|  @؉?H5\x :CC% =΢ԞߋxL>PFag8 aD}2QϑQEQypi cT֟6>ҜRѓ F{+DAk*a"4W3:wdLr VUл!AtE'Mʉ/wۧp {#biw~΀5eў0(8W,95M8aDh*;\Y26ΉDjU5=i$8?arpߤŪTwQYv4"]b3'ڿrnAe>"7"ќ6}2K{"1+^peG #p&C_>ak{WQ Ҟ U5:ũ<AO 'Mש1ZИӞ]ް\dĊ`/! ( ѳED$P|AecX'PaҢ6F ?%&o$-j%2V%$HΌJ(磎1nנ)Ǔwxŋ(RDOTci)ou\ s!~IJ?#e?@sPuE5:aޣ3_ $Vz=6[r\O8&&P 1TAͭ]yg1l&@훈{28A U⎦1߹23+e bZ =cox4-y[{q"]=:{DN|THod sFV~Pp ZSؖ,XEZ.{dZ{J0>GeԆBb[rmodzHo:G?bq3:c ^o) M~uM4a fEc$WO%Y݆Ρ,Ό- @w "kf|fZWHWTz$Q R&,ҨضB50(p$ 5e {&NdL|&ޯ4iL'Hݓ!I~BBZ3BrWxD /]`|VeVD` FzCa8?7B`*$o4g",'&h+TnA+?qzv+FzAJXyV8 WUF?>YT87S(P)`ߨ$8vOi!| ThnLW#?)$a+lQ_%~#Ō-c wt Ls>4Aw$bB? P5z?_h-0TYqf|6+ u[M v^ʰ B`޶h5_s߬Z4$YSmRbٍQd] ll4j'zÖu%D䮬@1 [W@4ގv%z"ϥ1;:/ Nz[>Z >7#|)K/N#ς^)I4E+ؗ'U+>Փ#1٧TI]|UC/$|>NQ}ixNcJCbեq #7FȤ?}Ƌc 3JI)kU"]re<v0ۏȼ[ޕ;Јt7ހ!jߍ:^a4^3MN::ocBV ?KREoG$V]K=7H/]ڦWSFpCnYH/D|愄}Ey2>slj&RYىFrBBҋRZ% {;PWH.*;gN7344_?'7|;2zDu`+4'Dc 5I|{ (^U ]+Gc(ڣ&a&$y0OgD%M=㈷ވ蕒tWߒW!^0(eWW0^Hꁋ6=IlSJyVEǏ)G&\XU'/|P+MŏP޸LaK7dwF4ܼ6P/Fhѝ\Ma5E{G,ߒ6uixo$Gn䱷ޕrw?$e/I&ԿxPDjkQ*;*5IE ^-AN#l)e\L O8pVpV/ZuFe!3QM/.!2iI˂yG-z2,נ;uFޒD1vƌYQQ Jb:ѩظEϜ"s N$J |wBeZp0+bdž:WQ*!melZl)=tԾp0BlS!eޑhH潈iN* ]lb.8נa18) NVGD6EAi䢲|I}$a"uut-wq ~GW>2K(B϶yI-zXc&=JƯ+q;mƉ,zctF~P)bRޟH68##UC ,::ގyMvHau\۱$;~&`%r#cϬU ߑְf Kah^!^ՑlHM^D)ZsZ1/33_w>d[GbM4!ֲfD x DZ7e!]ԉϊ_71ސ@sEWn`E'K;᢯ed-cϗ>#ݽkiMڸyiT I=m:IAh3D˪?; HХ.K\1֛k\on:[#HO)`zZ'1Z'vi 5IBv \@$:&&$@zjgР\ IڇGm8go>9KjeeX|7A_I3d}sk+uw|" F D 0%h@j| ua qz'XeS 2iTOp:ϽwxRV:so\wlC B3cjIzWwq/QK"UO|z%blsK4d%K7Yӌxr׻4ȸ [OByP9l_zC:doֈbsqoܥ?/AIOў(HM,[aĽ&'0[Fg3,YF[w/Q'(V/N&\G\cڀ+Ia %yKes(!X4z(ƾu^ċ+ mZGU>;AQ}ʮ6r 6b(x+*zcwϑ]Y4/*+ IDAT'2 dPW&s%z u!'Q]Xq7P$/3I{&20nN><IN$ &nN'sB 'I},S{Irp(PU ImX}}Hl=n H_8ÿu]1A狈P!sM1W}|FFrξ<}|Jo+u̪Mtq!Z>tFMNAKgOպU)G-ƈthLè&m! 3H8x+U9Mlʐ\+. $U"/\G%ݗh#i &զ & _'mbrт䒴}YA`@1.024fu]24Sib"O$yI?$~>PШ}a*W|O@oљJ"/( 9 "UP>R\*uis>"!VYҟ,েKKb j?&(%F[}SK2Z(ds}xF J%쭈 }L#wU&sCfU@D'tJv/̐ZP(~.S"E (\v5,gxܜc CKkʠpA{¢{D=dS!emQq1 Ή.:8>zK댦Ba"F{o_9HsS÷3jQ;YY?%Ʃ`XH-B Hݏp\6񍀁mAi/4 f  ={Sg&M~=P菤<߾D^iΨ(k&:NOdkTwhABc]4Ami+KF<"Z !-"jH?+D,1*G$>X]2)Z#1dELBwXߐ_>?[~hrn 5|2Jg䮇ĶcqmW=^BvZaUŢ7b/A3O˽V(`85 MzK^-v-7HKȮA:5NtwQB[cy UIZ"jz1@PcdJrwDJ/pbbjBkҖUV Gl/,х,' 4z;v8Kl1;qkUVZdrlKх`h  /CjBYU}]ް2V1m k0$fRۖ^ OOQ4= Hy3?GBcJR~jڬAm@ɮU (鏤hu9*%UGG1֛6^Z}h.& G0X gfs^yzNN a iIEv6zO?ИO.У~R?ӐX }]`dxzʼJ'$u?=?DcRjHR'I/7 ,D89HO.m>&w5\{PtJRoŏ)c]œU^ڕ U 7#N^߽>7o({Ge:Cܓ<54Nkt*n;@(Z[COڜQNbV\Z ?AEx՜RH>gfiLx#YI [Qh~$NVݭXʄ/hw!ATB 6w Ƭ6=I+h]K 8Z ߐ4v5 :21=I`돮{ LI ڷG(\{D۵97o s>](ؖp+ܓ(|^5G4{c-roW)-ӆmn>[Tk4&i} ^Bw폣#*&/y0z&Btxz.l0(~=%̊Kt% m{2%@ɕ@r.:VFIr=$$J9z!k Jz-NN}]Hsp|7?Jו`Ðue@{Q ? ܹGA2rCYD1Ym8Қs*˗h7 P\\m6ZŪzD@>Z7ťj`ќ Bň6J6^!VpRQvz;1`BIJ3"C~^ , &89pe3 =8l>#!ܢ'a@7=DG%0#R0LuB QHFiޗì%LpgqOE=wFxCUd *G#]=Y0BZ=Z= f #WiMm9&kj둺dUܼs _:q_ t{h;՞+U"O F堅Yv!ΰ~Ρ! hGm)w;Vnjd0 kR;9"FG/-MXuj܍.V-º@%hOjqܼg4?4A"єi#ʧtNeBk2$ qjST)lLu>Ή*ޕ9_~&O̢!P9l/ Vͧ3n#Azɣ>kS2762l=S^b@sB#0n<7WI !StG, ۇ fC}jQY"EȜZqp/XM$$c>n0tt qA.Og/nZ*N^!}H%=AD-ѷ1IKҢvzfR!Z"7`Sc|ا佪 Ԟ̝Aw;eV>)s>/"S>*%.d2 ug@C@5.|C+lJC? -DTOPml3hl-h3w:FKn6xnP \9X\S!Ƥ;&qz9*BU8@h/k_=5ޓ]Z,M!?r ~:qZ*'cRԎ ͨ ϗP]A GT5LJiS="F&}cl>@Q߻K fv}e@}V. y Zilyw%zœ̝֤'#E%yMP.Og=~bT$Qe,TW^3nco'uV3j2pXfT?O}=s{;MɁ`0($A(TIrWڵrٵrP-땸iY$03``0'u}s8ܓٔVTMt|/VvJmIbU;[W ;EbE)h:8c4*b%4J#>Bd Gmڇ¹tmNz΅)z :lLMRE)YQ ~"Bj"WǬC(VwqdmS[t6,|G*.vK(D0V7x)QňT/6u /P&Y|1k $%42Fy}r%-4zsT1^5YwcZMK> i[{~B(4bZt:Tdg3wt橈ŏb p6ezx0*$ZT7i$JGzLG]IKTԿm4IFI6O=b*eg%4S]9 _#T\Ui3%O|,0vNzuL-hMD.Y_%ai^{W!}{$(}3Kj* 6Tp_HNh1J0F1"FRi/) fCνx:r CAԁq%O 1J`c8>=ށt^3dpSR2; 3F'*1a. >#|)H`T~"[?RCmhĺB,y洘Cg=8gי-*tN!s~D z*mǠ?""ANhd?yyή&$$TQ\"t ab]7>s@r> 㴊]D{MyW-XW4>+uyd|l! #TДKAz'W9&F'Up6EjAF ehR.Ii*ΘެlM%ۏ5+"TH+MŒM(*T]A|ziX[I@ 1K[ ͕Q6bН3 ݉P U1H-(d@"(+2:Y 4$~& r$WqQBM ^%?) ̺#$|J!^F!*"㬎j(, %¬ʦ0cdCN3xjQQb$~BaEjlA #rS&َqv<$CFc[ GĮ&Q sH H(${ٮ'kH 4+(!7P=p,0[1/ΫVf\QRHEd}Pa )cF) Y8#'RD̽w# ;q> 6 [RH?)>p!K`x~1ޜ$#*GX0Qwcz*n)VR2MZ.HY:f(eN )k}*6dNW|IC!b RڊR^h|0cIsm=T%ElrBJ]ca/ ݌.QLwNGwFD1/#8AT u \QT!//$`$DQH8DOK_X&qxgha ;"Wo}yWx~V01 r뒐'շ+ĸI6ޫȌp;`ܗJ"ah@c0Pi%Pa3L$p 4rok0 D‘˅RqV22tl [zDNOkĆ>|LY:U@Qv4Ji| ㌄̧JPٍ7=c3mhAX9`쑵f_;Y "+y} ]:s *clʟ_+a5GɄ3:1EoY2{Ga0#K:~JabxDBG_B,hD@Z`ֻi]xQ!755 |THjK*.:$vNIs2YFrS7LW7J.Kj-j(@B9 cb=$-잶_H҂o|&?U"w;?s.B(4N%ЇRUy&[^dX0F*'r!NVs~~0rh876{8~"VeA/Pyl>!R)bUz5C{U*+k({)k7O1M\qo(+L,)[+r$GkD.}ϜF>; -M>kt>0*cn?=[lP6wX- ENK)3胈k}g ;K]!+^Dr%U#ZK&FG"ʣZ߷(6"OhXcDewI ?}֋SZ[2+>lCi9k~E*κŀl TKqÑ؊P'D ~'L}V;DɈC(cA`+h- LZ {jĊKӋ */6mR$@0X &Zib2Aђ>o.bnqbfCs\ߚX?>IjE;SxE|5dxT,"Mj?jM^sn@+c ZDQ(]{ 31ٛrzbD $yqmYn8dw"HRڤCf5@KO]'Deg'zlo+bT >~݀; 섊BDd. /%iHn#RsUb'P!Qǻ~b,::iБ8W8?\;4Oⶎ4WT ĦT6]hp*OBlĔۏdMЯi';8{Tf<^/2i .aChF?xo$,t%vg<_[$LFNjok3~My&!tbD0kxs?4onc|Gʔ+? 6;1C*PQ7LRKmTHXvn_d3['tkXg4fC6V]` \ UKNFA)dx։C)eC,Q"yVe,F_A.+귮( Nxi\eǫD1%Rn2T>oџχՂaFT r3`Lh]7~@~ы:#v-lْ>Q,xoʉOԒВ>`{[![,~,1HaI#:%)/s'iQ*c"Oh!x&sO}:|8[12 Ѿ)}hjt$MOȇ(Sbweü7|܊ e_R>F]wW'&T1DI)DV0.]&В~Sf+rsosF RzFwi/Z ) lTJϜ9bJOܭ$LIr_-=$=]w`}!}XeqmZ8Lb Ho2yaaXIlZ!ʷ1,i_.e΍}?:)~^AzqĹ {L#U^ыH_Yَ%$ fCNc5fna"ڇbZGccZ-mqFy 1Q}Jo8BJ45PB)7p܁b%NVQF +5x57FHi}Rt($֥~.6L\@LH&h-x3Ba?O`ƻ mɾEbE!FW[27ެ`EgAAI/`"m!st+&Y60˺, W<1͑>75`6Bu6a7g2qc򟸈|"أNJ|A>IހFNtt(@댈uEoΖ޲.HUҞG~.[}=D.CYR\JٽZ!~hnH ~>MJC3{>hmaYgIqV6_e)ˋf'5wKfyH1#|$s:THcL k#v)iff+}DaW6HdF6R6/DL1st&\5GO(}}; Ƈ)iz*xM\~rh1~Y̻:IuNߏ9Wvoe0ZLEswZ} M ɧ+I; "+}g'{X)NZ~j74-4+>LM\/bh.uVu'Gb!w^,<&X5Nu>GT(@0A07OXE~)5<ߤ<$>#}Sz| 1ͳL3Ca"Ti2E#@e㢽hQ|s\I^gtAáu3?+s^&b<NthYngV1.& cl2U2amO g+l (Z`R0SzLNk{;8xM|i|<ЌA21VY)K'o?]3 7Z~ߌ>ޖ=Xޫt]ִ=FbvTaODޜCFtgM $1Y0DP5hLZa#2wcPWiu%WOxw~ 33+^J!=G>#)k:dSY@c[a+D4;>7Bu Q^PH-A.nQ!B{@{)L-,ߠ͟+=x31U4G|(7`Ēʨ$7~:˨d%TbJH' !){֩}6O1#3@ L&Ja 4OPxۧdxg mO^?ZEl^RKk7ɼ׹*߹OhZHi.}>1HUבּ$ǚ`j<鼜Z7j_ n%&$@Λ {>d1-_h1Y"{ (_kUJJ>ݘA{epBt; vd'/J*sUz kvї=_8,}CR<#xY6;ϗч1~BJT otNZkAJq֢=;0P3MJD&cL gB oHryeC4*T9c /(E)S:$/ܗI|5Quy 1MJE6!qVl 6P)ПV:U?z*qF\ ?1M* V#x{5z>RPPYw:F&rM"'R '4"ƅ{[As%U1͓u}J!fNG8  e5^!&+@]ސ w~F* 7d* ,PuFsF <dwDph ){%7ug=FiDDt n5+"[%ލhqZP')42 ~"rpͭsXY<*Tn,.TBI5 sL۸A{3M Y iPSeҚPb$uC !a$e9db6~⋏)f~Ór9A|+xaEYXIe2;&S.i@gcK#܁bE6JG*t{M1Yi3*EL^DoA|kD叶_UO0E̖`>g 1$FwǬ L"i{(FtIx,vyIҙ!A: )791qP6BJG}U/ cV3ctwO FF:L ~wCFU""W#ęk9hɀ%}ǢuT0kWh锋)7=S= ~=WYߋWZVZ1<4"RX-DDg:(vR3Pdg1'ȇOrKTpJM]ɧ[_+38Q)tܐV;Ip%޲(>T=`=\;Yb+g9&?Z)?iȡv{32)]ʱ~Z0,zgJ,/0Dd 'P-W0\sǏUso|1bR'X;$J$gTO,:d0*EEz'"shרd wDgAzg'{-BߺJ\uTW@85ԍRֻI%rL]vҾ4Eak? zvgĕUܳUDus9`ӯ ܃%2Bʯ m/}W)R1ɯߤQ1,tOij\H^VNT IBfcN%$ٵX͐q*+" BG߇o*Z IDAT+gk#GD=M|E.d2C/&>Q6R.tcvϠ`+)"{91ӿ}): E)tc6~<'S_ĪD܅z疱 PKdF~LJTM-Z%1Vtb![dhb _B4Cj-DJDgj8ܛmG;:$#SX#*+l)<-H?)Ej9rI=TX`dV&̖H(Xyɢs4EFQsk잘}bp:r\}ݘ΢E(6e*Pvۨ.:j>-61,Io^(ӝ@)^%xmaC";]e88_I>tv")cQYX] 7oIiёIKxx~\UlM4LV>Os&JP⢏"x2+NWB΂ύWr T//p'#߱dz*DLmt^ke2oㄎhDPw'b,&fBԾUgΣ룅{!!\Hlg 7CC>f#T9+X@uKxgjh#3$6?HBꑔse/΂ PaIp ۙ`4^VaTTQпP;]E%^IDgA!|NxDdT奈&NV [gtM oHUWVQ.PzXGDJfHer__S &T' D$6dcH}m*!ɇg; V3F08WcT{-`cpXCQL5v /KO- j6WI9{ۤ.@@|HjJ*HLWC+z\jG~2plB[`wT  Zw|Аu *~QYòLz'" ʰkr7vQ -[4j_S NT/ vl̆R=064W䦧yBC]̲ՈM?B*h2UZO1>[Ϛ }⦉?o"1 _US{"#&JF?\_a4QcUhqwc:K)Y$ x)TD:2=e&!<ʣs AdQZID(y~KXo#>rAV0kM /6j.G,gXPx3ʂLZQ)p'F>+%>7%ӝ:O$6#K&DGB6^IW0g+Tħ9a_3ȔBҐAюE߷ Cu[x3zb'4ܹ΋%#OlH$)Otؾ:ګROD-U !E6nL.b!M Ո$L{jH7=iJ&C~"bD-Sn T?Mbmt3r+ %dWU>:<)=Eo'I /x-kb5]A_ xr%pNPS>vS<8_}B ZAk }ܞ%3}M}D+ " .P_N$bMoL]4@?3X_&rfcsuD5Л:G{GdQp-o/겍"3f녈:$}Y5{C ]2|O7 s4Pv 8~LèM*eޛɑwzOYuWWWwWW_h !!GDR;VH yWpk9ۻ+]Kk"%%p$3 0`p7 ;m~??gSUYo4qo

ڷ}o0lORT8NsǶmco_)Ÿ1S_cu#`߽D?~r]~\<#8SQ%UQ.z}@uϽS}}'ϡ0__^/0k O3u0ߥx4u޷.ޢ aĚ\Ls|aq.1gS`Fzz '}xzu^^`Q_tbo@R Dɦ󔹝^Li1_ I]Komxsee14:qxDǗe4ۧ*ߝ~5YJbr+O 䍫ߛ6=_3>=VGTMAYL둩40 >7x$QzzH Omu!'cVQӆbXQNq=-O<=oCeܗ==}>|~ps1?>=x5{r`!†_y2ߌ8q]Ns*|>Mo7\|/8<]z1bL"}~+?ׯ]p^8޹ójb!x^\n緺zsny8o9<W~RyΌ%O>j>>:>Jўg\bm~:n#^o76=wvB}xA.s-5huYW@ mL~9ֹ>^J :q~b=疦/؟m|X3q3w3š1p]<;1|\?H\_IUs +}:YYm1\ٞ-og9D0ry&|nqHyI&Smsq~cLv:]wp]>/* 6G?]y4*&;ˬi֬8j1Vx?37<OpI &xNeh; g}#mx+'t>J2|/낛^=C[Kh{Z ;;194~z#x|FM;X8O'嫅xMuaQA}'5E6>9S_pg/1UGfڊ#{|eBWx|/-8Ų{9wDŽjTzT?cZgn|S:'굉ޝ6W͏Bu}qGM_TY8f~Oqf=4?v**)^K{Dmљ>#(n "ǃh`GW^irM-}?Lm Ko<_!w;{)_XˏOp %}j}+ Ϭ98 ?/S>'=>0^;!_،TwvFbt?;gmMyEN|+ORqYTֹ=:0i:9c!`g>20>xLỷA14\8yt\.]dqw2ꉂ}g5# 6nO1\vi^ŋqgo|x!Dq}R'(r[}zd7пכ˜)^|'3H{sy2HxUs .c]3s1`;CrVQk_ٻh\<;?s9f+$oMqnͧMZ =E8*LyKQ&zCBdβ]Z!:t\NzeWĸ~U8]:ɦ wH֢x}j9:$JTLiK/f!&27*}a[;"70Lް _& #uo/#8<7Vto/ U>~oWIW9*U(NczW#SZ?hS-އrXuȒCαaJn<_F_c/aσz(ҹLDjg=p:: bU~L ^:L?kĈ`g>yb5Q~a3ϯX4ė5 K#uM'(ᴄ| 1xꨱQeG5=?+$D!,2S*0 Rls@z`{,?[߮H.GqW yzƍ_yGT3#|Uw(P^Z1( 0 #Apk{bըS^wUvGID4F>AЉ%9qP) u]_;xKQݧR1Y1膟ƋƏx.yx h> ;YlT0{hL߅h{W7_$X}4wW{0A`h\D~f: }%Ϣym auE0,ݝ#]4^QW߃6 [F̹ U3fg89zu ]z;`h~rm"VrѵƷmxAywKzӟq|CŸ=u^ʑ:u qiu\80Tj7  ͧ</-x=qⷃuӑ+z\:qt#j}oj]ǻ7_ۏt=9p;0Z}<ofs맮߾TyǶd/?w=DlOﻦ Z9"{4OymvB! 9tLbXfu'>Otw4iFo@ w5Q9,y*ww^zI 9uvOO|OHZz _kM-㘜t]ifGr&/"Yt|j أJ.㵞5TDT-!6 ua`kz1gЛ7 E1q낮 }S vA* (cx͉bx/=>{|z_5Ƕ=ygy`>dǨsr=YS:]øZ8q=#|Mxb5?&?I2s&_\F,KØlIr"k֣4@>\Y. =~==G3||z&w(w8 1e1槇z%,ȅ:$㺜xsUw52xsw MqL^ <+zM'bxqnHu꿾+lL119ߡ<înOX|Ց~uٴ\L;9jSMxosKQ&Qϟ 5c/`i#oCnzMPxQV()'`rqPnzP"x~'K@<xpo Ԏ9GdqF E`=k9Nv.)^. 5t+Bw@&TI~ >S쎽0J'ЍiWg=Vqr߱$,>S9T_' Dy{끽h$gKTMjQ:XY'w~0y` bSl;x!:M%oL@`IlNѷXuBDڱ31AR=&;ؕ< %:::ټF=śΫ^{똳D%-Gw^1ԥ'ۿD6xן7VوiݿCmAKssjDfG0h G^/, "tm ũmm s:pAKB$&x˃8*N }YtjDޟ~"A"Gɝ@kLy ?,,Y5 o|iѓ$/_0;L]w&<s,qZN} w:,=$KΞ}s}0&zyx=lߏ8!ks=')gzWs`O!!/=ar #G%"T=Lb{]ge%gu$L(e` DJKh@dU^u9đ)<3;rJ "`d -]cCQxx`r<:%G55- ;QTn[HmʂZř t[8!" NuD'ZԿQUQ\u[L4 ֥Ͳ{9'6\;N-I4yz @6n*z" a k {G52*7rD_4Q8;*[{ѱFrZ53Yֿ8yM,o!VP]YfjV@!}/k&3m]F)z%[tdva#\zop$O 0#Z6Q͹%Ӑq_923k*d#"VsN;d-%vp]%oA]ЈDvDXM&͚ƈp(Fy ̿'Pq˯רRxqͽ8Եz toLŹ42uLCO'Ql5'j0{z9(׀yc4m_|y7ql-L l_|}8Xp*~3ɗ2l鮱hN]@ƔІ;kI=H|+c'[:k9^M#f(]G-cXHĬJ%W:qayFLeS XrԾ6LɖXƉ,zf]rkZLj9pneˉ(K㶲&) 'e0'1HI4XY-M OQ1d!P1x.Ɣ"OD=fj̾5xVBմ-Lɽz9PVYYL{Ҫ2 gWNDhp_1EHaJzD1%¢x%LLTh8Gaٳe37֏+fp!C "\pCOeæwńe?H=]H=p.9V>{V@9~]="p M?y>3FR:VDcr|kӧLçlXFC+I܃\W|yĺN‹x?hnRdF 33E+l"NƘ FɃG࢕6({2_J(*/x3PS8 K[&w~AaH}($:qt|h_bȵ)(!mrq 2%U[?ȣJ:xj5˼f" M$wn$YY"U~0iPp4J^n#-2UI0$_G35]JCFgIUSf\}W#Ѫg^d?pOGۯSp} ޝ}A "ϯ}^R$G{yr"V8|x*~lAdo 7q1G4=֦:j9KKW)MObbv׶!(;fg~S:&PDざ^[箞9_Q1D֠LP{Hf4Llޘ'Qϓ̳nH-;[{9`-qc v76vD*:A8(?lMoצ9^IC(ja Sx˻gd([Hu%+S+/'KIɰaQ6XMfoO[AuC­3{&ܙ;'(#TzD++ɵ(l=)n$w5iլ(|XCZNeY+zOUnpf,&[)~1Z4&Ʒ6ʬiMgǼ䁸%aRqnyyZhߨA ;sLCM^*N6r+ƬF>&֊iG|Rޭ g$+Cx2jfto [Ȏ9jZ~JW1gWō|DyNc9 #RR(t~DRe5CbMD֞pM1'#ħ)wOYbdiؼazSUF%@(S6Y%Z@ AM(etiBX\3 yB9 8w ORWL)ܘpmæ2PwQкK7X&CnY)ʻэDIzDyYKbJ۝yH%k.yMjN-Vf+ EXIa/4{SiG~š'E&L(X/ogG93 -5NŞK5OscR<=,(_%`ac6|}{8[0Vք_hV쇯3:֤^'ke[gu{I}ǣ|uJ1'\*OMb\HF"bJcђdly?O*\^Y;[UcS_WF=;V7 70yO0^`7JdJxT]cK?1ak'Sq[*T/.o~2_%ц[s=,8P RZSqf飹I-2s0ԹnP!?-*BU(i!lHw&#$'Gxmd4*.M  X9 E VW!go 1SR"ɔZ˫-+[E[O":O\`k|-,|$j?f╿hh $:T$~yS?r\8:\%7DYHS%'ZO (=<lRw8q$% >DԠT;u`3N:ɡ&Őo]v)&|K>hv }bi|W?9P?G~P2Ix])=x<' vȔ"ŴioNLȚkdjt]ZeF+F-,E(쬇T (S*).o"1;ɝ t0yRz/~]Fb[w޶kqɕ3{3Bcpy:2fkw+s.:+b"5(x5PM1~Of}6@,`5!Dn|K_bg~b ]᨝qh=oBFJfxQ1+HA!cjb7k.6sۅ MOhWRo$>Zqd9OӾ/\ 䕍Y_c5!c1"62qJ Jp珎4Xܟ\a&_yE[Y>]l #:gvזf5va&Oio@)椋NKZP-vy^/]b%/1wg(ko}p `,X q-񈴢y *({5 V9!ft6{9};_w (35C80N*(sV9V?&`U`P]8\n:/X@}'HL;ZHՄ&S'w4'pL:iE'}\nbTk{yeN*RO͂Ld"VtYYR:7ףS!#-+׃`N =zqʤ>mT1)T%޲9:'s0;0>'.fBO3cV̇X"fuK$Lő(qs)!pYƔxM1gki(u`(T䇩:b)S3omr6jCv9Y( ],K,dt)&Y|`Ѫ`ArBݣ9BnC;>v 6H26Ap) I _$,|舍3VM+$ݥo^c0d )93C0 ~?965s>J^x@Ҋ$;/nzwqR9ԫ) #WDr!0RH^hRgFh vdt5YHu'4~-<}xcn $UAc\@kmLͣsH"1?х*<oƽ-ztڷў.FQqቍkxǜ*:޽>q3 Gxf'u7_2A&,CCrl Αyo~,Z@F/MM͡MuLqz~3~1_Ɇ#se,Ĉ wv5'x;EL[ֲi_n D[4@{>""MEŬ9"6DWι^Qi[1}T"Vnr y88M-LR|tA)2D2 ;H ,75M_: ԒPhDH<<5%+#!m.zm%ZO%mr#B* {dM#' c:0K ;3Ìpk M.ɏXNN'7x)Nupvb Y, ]}!eY$IJw4i+-BQrPւl!gPkZ9Bfz@[|)O`-Q/r*i@+s$9EvN1WV[G5Y>ۘ=$<;dcX(a8[كŝ'ީb«HG:z`y C"^D#IUz{PkIg1-nϩdx7AAW>x;v18`&M{>YdbwߤcaXLC- f1@S %kf^bAeYdn;T5t.( kHp J\\XuO$`F) /7DkAZ%>1'= G ѣ%ƩfNxZ宸qH1fFjM,M&Qa뇎*64b~8.=+f~x4~c9%~bb*No〘"6DجH؎:N,"L$5;{|nV:{y4~Y_ޱmqHj#b 1לADH<9Y@~dעojN v=K ;תPxǟINkzTgZ9߶<433a^m>ʍJJ_qxZ:Hue o;m)%OW VWlJG"=C1 AZzv_UJIAG\Ę87D^SW0E.ΰ uK ' wl#jmFsBɽY[9q"(Jagl.Փw񠭉U1UO<"Hy!(dyfHE 3υّ,q ,d_$c&Ui-.{x޲ Oe`T))tLБ6IDM F3(|B\`( ߜ/%Fϔ3A:%;WNrg(ܒXl7B֛?6Vd$_wߺ6~c^3@.g+,?`.{IoHxs%֠eE3hedOa <GW##\1,:Uj{ӬUKnKb.B>u8ڳ(ڍ9;י]1Ƈmç飌E|LXkPAs>I?齞Ց;vpϣϤ|geS=Ͼ\y &QH|u&Zx=5|"Ky_ő87'FO.i|ќaMd켶N=*: jGCΨ" nGom%Rn NiTbi5 V E?8 T9`7G8Ȣ@ ]k@ZD\{4e g$ϙdC+%$1CxdK+ *S *cH&z `} %A O=Ui{3k"2pO4WQ送[>Q-`e 8b< >p(@qg;€PHE>&:ZIpu\b$zy-Y!js!v<9:Vv֘Q !#CJ,"lEx(ߡ S(<<~ u]Dj>66 J {3O*Z5W7Jv{Q|A!ݧ 6s;FƧc,@&G kO OfU"<ZrLG|z ;@s0~8,%yS`{J&%RS!zɬjhԉa5DpF(N:9/ykN$w:tC@]:сq"D&HH/ Rr]cߘli{#8~4,*Nabc10G>''U{Q%[n v\\ }~Ö ,Y!No22毯%"R0ٳq5'wN hF LzrXRPE=)8IY'DoC϶ȘxQ2P$9ǙnaHipr J3=`}dhErCK2c X?6zG0F8N 3~ D#F 9#|?S0 H?׮yFSЕ> ō x9u<+)ըyţK29=y!g~p2^?A\h#5CO T䪽M.νmd(fX=L& d{ GM"K=5"9Lpzcl,Ai#TՉn\"'8$RN:A A#_rzē%j-P=^At:Qcw\aݑ6I.u:uO(Fɽg֝T(9&['C1Q2bL_2H}Dxd2n 'Q|0F kg>2g϶E)I;l-vKo;ݷo'>Or +H]~iwv-v58d eJVkf>,Dz'7F *a=xt.eߌ+pܸV% '3k) [|d E1lʌ z2OvJ̛  qf* (*5%֘X$!gR9ՠ%37̛ˀybʁ d 1ƻE8VR}qiH˄ZX笏)nIEAl;h9Fט(# ?0 )x 1ۍ$RpʅË"ߩ;޻m 8iy͈X cI8TQFL ';;` XLS"uCF6bڴe (' W$|.,H0 .Ba5Mv-scVr, Dq%DBhKd+QA&|`n.@[ӌ&8Ƽ`ı ȅ 50=*(i_Bqu LӾ׼Bt4A?O)> U԰ćW-LVK@f&y2AYIx#.t5'U=Oy5 z,De2{NyCHtm) UkIۏ)HcL_]G3.\ v$#IhUAɖFg1hQͦ@ch Bo%)g|T!we2 ̳a'+, (YN4BީעF`WEwuE+P P9Yx6@CS D  ^'pѻ*ZW. n++L0*|+|aAHi^s0c+$\Aխ^lDAu$#^phAADlj$<`릍%hx3t֞IZ.4UnK&cђZ!!1{  EJ'ԍ9ut!JONCGbb_j C%ň07i1E9L&Q ճOI<ڴ#9|o")U:EWYl'Č]Q4z^sX,JR}5)(ZšcBow=GtyJUoQ2nK sF^!Ci/L# "I|wB@&JJTyjd#8JˤiC><%|Q3s:9C^?tdt x|\䥂Ys(zȋ;|OJ mnw~<8f7QDŽ.+qдljTb Zd ֈ`g&lj&Q uVxߙj!r_ q#A=}1GRBMJktĊiY%jЄVPwʱizj㾧7B9<&t &**ƶB<ٍ"D|+#xi01rfO(6#Y, !hBmەmN+cPHA3\OpIgΧx^O)D %݉ΠTn \*HI1qrt *_S:XVQ5}Sj|g(A$>e4Mh/`X tJBILG5Vx_+Pfa#A/(m>H,|2reLshZ" kJWvbdEpm/DO!eKY&Q)Ƭ$qP 4G 0_TILw+#*lXAC$A9mh|d5#}Oq0׶(Cg !} ?s Mgj>_zl!@MAlcì8mXzBZRP3Vt\_WVnG1k43 F/ZϏ%A-&L "{@!_0b#P! RYieĀt8H'_ 9hb rtlV0?ͯǧPl#|)`z+ T'X4+M!~.5= ű֧2`5džp+="]^rs?ߦ RIcsXU0_Q,+&`K8#eя"YO'YP/4FBHOw'<:#KD5U/gvo#%`u>18 3ڃ߀A(u?F#Dz(o. "2[~w9-)]Iy -D̫oy :K8Ε7<߶pauu:2 B|-EDrq,Dz~pQ&jy=1+5)j&Js&,}8lIm꽆8yA<~1\+9q> ϩITS</^)b9kBcr1Ņ+}? l0X4#Gf& ј2+ÖEJoLI&x &dl*#K,\VJSU"5O\KǺOzCto #aq]S/͘BTt}2L2d-? WM7^O98.c~#a#l0 w &.9X^$[6KT"M'*zXzVeo,zc=q".Izt[1眕M_ޫ06m@F\ڧ{gWǩG"G*{&}.4'߷a&tOYk1'pE_ċDs~{+v(~w$mkeMy h?xM4`%G+dÎETGlB (CH@k hS.4D #K#][|[cstFCauRh$Hak3lPɳN&Ϧ$֣Rʃi&B{k8[iL6|?8ZY?ìx#ԗE}lׇz=|O;=ʉzjYDM<[w#?AXfkWqjy~H=댁ߡ9u!VS?)/8?97 OY k~+X ؏wxSձGG9Gu-'˯߹E^xd=mw~<ّ~rHf%u_bMv:y,MKܿ#jSܟagQ|~2#ͯ?97y6܊37^1/RxLW̚q H)G k5%zb&vAs3BmYS& C\Ϲ_L U`j=2cKFd$0eٶQ 0C/QQbO .RdCG_u-`I#Ğg8z0EoȻ!P{,J4k lm˽`rJ=Vc1RR u)T"ѡ@HxcUw1sB|U2ڠiT~UdY Fҗ!_qYf5wvP:Io&ȑ#ԌN[Ud~2n: no=\Wo_L!Sy4DD;暸؜ZX=~WjI$2@1 ׶(A[RyNJ^ϦU/|:8nצG A\}s>9WqPs~[<|Wy}G4hP[0RׯՎ+pUМ=-ON=aqP{cxˑS1o49>'.Gcq@bʢO-=2+Ћ7ĭ$I8$]5MVakwu=tOAF('CEIu.,&Զdy)f3T-)J'zetuAZa{HH0a#U-/ʁI \T( RFHfԛHY$, -tv좖y&{B$鄬`Γ\wIJɻ O_XB7Qr%ʀ׹QfBڏyc"NT:g)0; {ML_rLh1QzB-ܠSY"dvB98)v,xS^niX_hȘDҕ@X'G(&K/)xsuZIpU"벍TaA'{\sRҌnuI 1Szew=㉌M?<钻R `+D4h V#N9K== "jNdyPˈm{X<^F^y%^X۬![#_Fܽ^~w4Md?7U6~9h:="Oޞ3Z>uw83t:O&wOqNjcQ߫\bc Փ# l}K=J"s?{by.=q9w=߃X H\xw[s%km]YJZӣ-aP (ʢb)sG'ujMd5g0AnCC<,i:[4sRn=-2lƩ썴lϡje5pGgpۘ6Vz!!Ũ'$i)>f_'x[@noq= 6.ft E'7G)B 'dK*+7 ŎXןx*Bk~8ȄY'~='C/aѥK@0,1$6L㇌qeQ5"FvW'Xxȶl8HHH -D'{y~S[ Qb'>Ye 1'o4uMX)pL3/䋩1"?zgƨDŽ;on:'C^Y.Yc>~~#:~qR&f$gGÙPxͩK '=&|mu EֶD-f*Iߥ% 4H*kG&c %B8j,l3$e-ԡX LF:dQF~<bQ,rǞ E<4!*kUQ"f05 5)&!fJ*$ө&+\BXT^9X!gk༠ - h" .x4+Sf\r%IzE>$(j<5@'D5;z\,~qs%Gk(XEo#f WF] xY-mҟ;!NB'fqR36-YǯѬTlcwC H= ~r:g<_DQZ%1ǦAB˼]Ktw,WYrƦ:c5ϖ-(ex^}v|~؎j&y:MWڳq<|qzzQuNGٲjCd{[xʘn=fbCg"k"#k%Sϙ~H*G7脫ci]`s|nGq0C]L>O$"o/ G}KGq0Ӝ{_ A;kXxM7!Kԭ =j*kϝzQǡrGŜg-sRo_?UϤj'1sxuF*{սqZxJrFOq_|SUvO4LEyy+?K4ɢG7>/5S"Qu߰9fMmk`ݾdCмzA s]^V;;W~Ɍz>$3;,1dzgy7!utP5B*PI&a}hPK\bMh7PkXrNfC`7/)Z|Wd1-qxD<_ihCѱ3i7ğ>Z7|eܭG{Hך#O_YYo7['p *|qßZS~.=vGRqs9ozzAI3Se~9>?>ze:pGSAJɰsϜ2°Z8! PNc`9X;rHGިm 8 \J*f ! 83  X+7[}'H DɼJcBGHxkD&u>yiŕ(%%LxʈQ~juQ:MY đܠ"9;Orʮ矗 Wq G9'Q8^ްVL^#󒼞!UjE ΋?_Lw3&.z}U->{#^I( g%j!S ;{QT^ᓥ\A^pGiDFEdáS>7^1r*Gz"#[g@#@&XK,J7GNpFq9"S cI}߳n Yib[.:)65ӪqUHUhQP֤)S˜sB4 {1Fȑ\_KwNvHQkC+%: \M~B[IBɸf'Qw(Ӊc 51TYW iT4lTNQ&Ŕ,$"| M91=,'Fk0 C(gϫKli=q!eJaa ?\DŭMܖI_;s-ANɯSi#Ic&D#5 ƠMHqq= l 9E,KQD "ISq V$ +I s,1v?"_M=f!+~ޗ~o^hx|&zuE/RUJk_LuEXzK,>+7Ϋw<~t?,~u6A^G0*]H }ԗ1jIQO+Q=q&a(n/k |%GoJpϾF(wӭ 2-q$q&ϵ⺜MK(f27AS2q໣"״Y8Ԫ Ry &ߥb Š9+T?̲CRs8Bu>&1u},1LLHWak^MC <\x׶-1^6B;pUb=RFhrtȽz}7 NrY?O|Q2ju=H}d Zm~&"3T|3}׊8q޲v1wv.p9V#ؿLeT^ìr 4Iܟ.Mo:_O췪L5|LNPl|!r44T%LpoJeٯ{p"6='rd@_|WuU"Zb5)QR'D rM0#dYu Kuʕ*0s0=yeN('f9`^D֍!Fn)(y' PHm~9Kl:\xvKW#SUxH΍D5 BBqdKNoxA@D}"t #dFN0Y*'|'!?dKf RTZ| 97= AJ|z{50f}"KgLQJxJPw=`; byqY 0B9LW%齐MQwQ|^cl=m _EL~s+'|kZo9'KΫqX$-ƺx!N]s\[>! g ~dAD‹sV}uM|!lTTu'.͚ :-~A(xXgA2ͺ;d'k4K +Z7t m I>-10 T}x|G|a/i~cS͹Jb?o&#Vi'q㘥Iy.m ΰCws-;3x/k }8W'`ڼwzq,ڿ1w޽'y]x'=ku&mזc6uMCd} 5Ȓ=Bq}TXi:wxw}ry]A"1\1_BI!F:p 2C {6)2_o'=<כkLS=?~*{g9h4M%8o]߶_eG[gޡ7ٯ=c_:.]Eּtp޹ sLCW1>,h0h Hj}Yr2o}][-05THB8:+Nv˼)H}~rP2{Ś.,Oؐz$0ozgg!b~y~|`g!Uz,S_wO_2)`zߧ!SɆd 1_ɈD o?7y}tcT H׆}-,wsǯpOR=r={?t5 pB}U,|D]Y)¢O F?xt'-o8*)7e=`h)zuVLn)%D`tA&REKI@/Z)!>@&I]Α*jaui(% ]tKBYk=3}SD:#y8=kC[z{f7דӳ%<~?pϬxWd%{x"khgIp?u`&{qŹl r1>KT{^ͷuR'.#<"\w';wq*quv w }0<0GA_oOWY,#?&nY|w=XrsP_wb;_㟾t71<:soDD]j ?1N<{upu:珿1oZL XLAz?~z=o^ϯ?^2=c^~%%ιNy'0uǷ+ #Dw]q)= Nؚ`߯NGfgC%EԒF]r$)=OD'Qk%/5G欟`6lMeZo2Ae#sߧI vD|8C=Xt'1AeRy"/AGg8\G% Jw5%ZY[rr8KF|8 `|DC: #X8EKMEhDžU!OqLzOy TiI68MTܾGgX(1gB4g$:T! ;] SE7dz2:4α2<:.{uSixL֡L)7%PeS*0EȠ DSiH#`:jā2,CcOwu0/'w=g0so2u__;ݚw里91kwX":pNoUxzwqFOw_Gxx7+tLw~>ב[8yRoN>1 G3}'͆/_)Z`bd|>FCmvt&/'i,̵z'ecnQj}aHH/?od7gۋw]3e#{ϯ3u|4vr%?Q>AQw(||dr0:b+_7!#3F'<6I5؃[0n \ȂT/>5/]:L%xt <y;x}yȓoX2U^ӼfkpD'Zbt/.}sd;h׮}}}8%W?;2Gq1|u8-{tzuVYBDh73d/ MJ+vɢ;1GȑWo2Z~yjgPUߟ70d׾y}_><^Լ8׿z|0}|xȜ+@]9\@Ga qG!dC.gι8S#(\‘=`$jc lP,p1*BѵF2 dB֠S m+Ԋ'&Na_1 ;!/2M27ҝ0O{M|` ,:@lB8fpV+53To L QIWD'd*eW* h9ʑ!?,T4[!)y:#-Eَ}h5 !"NEPAܴ`AIDNv_nJMM2^)i@!k8hme_Xxc.;9c(3x=IFh`(8< a׺,{NyYeAI,p民/o]$EAT,jǏ#ET7>׎#ohU>s={yn]\qB9񓹯Ng{ ΣMy2!ޫqrS 8_czX{8#8t}~17;$;IS3xޏY7NG^rIS|{s׿xi}Kc߯f~'Ͽ }׷g{l5}x2[l (1ϯѱfbjݥ>dlO},;?=b?QK#>>9??yq??,^VK^sz>^_y:jk\J.<<{\k Mk!DGڎ10{t.̗"CZZt5T7 @od'֎) |l;RRA z4&5OGZ\GŋN͊Z`RW R\Y#,O-޲ rPD^*Е/;ŰLl!8lXQ[PxT pAXʔOOIvEU42 j^N uR@DlɥAmӡ{B`*qN@Q* RG# UD# [].8fYHfəBN$:USY, J!{D[G%I[‚9!xε$JD뉋h< qS6 H8 #`T.Af:Mszܽ dD|bH8ZBʘYCp@JNoh_&{jצ;3W|3s>E?]c'ǫo}x[ G񆛉~r30Mvss:xrX ZzUn /? Mϯp:#7ׯ&Bc5*79뿳981A=v޳b;kk^+O-+&JDvp<_8#">3SXG,xp᏿_8/g G^ɹ[ɶ=ɛ@\dIoKf:$"3GpĩvU؇T$PiDD2 A@N'8D9Dy!'mKPNe)kE&2((c<̇'.-aG$&2$vw.bJ;ԖXmLfV*EAĚ'!DzJwh2/fMƱqab%J xD(x), XLPhN8J!t/UI ͵H6xS"M6A(OꊒOM EͨO÷ D3% *S0YLenK3{XD@1%S6{s8:%- 73jx׃Q2@fa53IPka1Z[#dVREm6xh~G\΍ t{6%נk!+ާc\ƿ\:>_8~q~߆gz^⽮Wmy?#Gǯۼm遛֡猌Hy'"chE08a)S d@ɖ*FZy>m'aoK\NȺ(3oF Lc4VҦyȀD}\")NӯE3<Ltr%]r`2BQ,8ZLDjKTb}yo'Dĩb%^'A5%Z - PCM=Q|M=rǛ2azyxnk'U3OCM|~x>ϧs`''` wl=[lyoqѐ "(q6K .0Xj KUs hѸ Z:^QrrhM&LI|ZBvࣴ %7!."ÛIAn>ɷ!2ȚP¬e_eR1e *TMQS(bزTQLHʌ]*>G#jc&' Hq%!gTԑe!xPdK 8BJ+ b#r'rz8< M(fP*KAi13 D(+}IMj=`OPr2chVD\Y T"|Ҡ~.LL KLwHzfX:j "c1aP*8uB*GckY(m*D C 6k{uMP.AT9x`Ī-eu;*ef۩8J FԋV%pnHvBFC{<<R%?NEdϾ#YOKg˫ uCsUk; <]3Qyn}<>RyޜFHj'Knci 9!QU1$權ɚ%{]ry.7|νF-5μ|)]j.]:MS2x<?> :|߿֒epe;o&a?7S5~p[ό̙oO׮V}$;֞tI|yMߝǾg/Klo'uA=}OkͿqj_QL$JO{!LPDp+BPwҎ41`ȋDZbPD5:=]C;M$ ]tK)IŕT ]M;RXL0  !4K0?q1&G$R/-En!p027*)\Tn0d XAW(Sx!Rc Ij`^jpE_/Y9 E\'^'߿\_\LcVz ;ih:/*kqizHB˝F9\H؈ے[QcqRD0pDSr#|C=S YCe %ut1 _ӣhLKhJnui0޺O$TcB', Q.3B]Zަl"b𑓨T+o.f-3ĺ)Po X$L2+0*Y:|;naԢ6$K4t8d('lK +V=O>adT8FI Eߦ2lJ| 溦.5ԓ5N11 oS봣a,S\jkUW O1}xOu⭜Ks+>o|-޲?~J\zo&\'kI<ӼWDץُ&POUߊƜZ#a\m?=tW}½~qKy?'><Ǧ= .>ϧ=g߾=}c׽2ᇻoul9Ԟu"_1CHɑ:c5$X UrEhmG j^YO&v BA<`ʒHAHH H^K5iusم5lLr9&#j@6D=KA%6dKekD 1F$de+@ ^hB*BIVp `ZAJDo9|AxU]KPKvv9r~Zn' F!1D仒D T8P gmK AA!$" T`BىQBh&S=#"%D`UI$T4U'-8@Ĥ c&!:Ȩ䪉"!AЍ{gA<ƝEJI"APEi q|fN@Sݝugs~cn @Ew_NLHkS*3ubڅY/o8 J.Xߍ%laSyOF3:k/~~1@S>]WGi5?_=f=7W%=m}#Ke_y2׭ b{H\Lڗ?Cޯק&]W#f}UjxTI8OaͱTfYB7~NzbTMk9ߏ4q>| ,j+ǟLg{YuOmŸs;S9[V>1g c9㊵ϖ9W͟[wWu1oo8!z|dsqY&ω&y￿YgF]vޞ2 YFo\tAr"k>2NjrEZ.g'ѽ a\TIK nL$] "YJ`QA!NIcP@P `è <9.W$Dط(2$J JD@)"v_Wؽ.q/Dx$R.Agxt?><+m]|{bq~S{Ŕt\|?VOo_3]j}\&eP1sUS=H`L~~Sj%"HL܀2+6y="V!M4XIoy(N*x-R($P3DU)u0 &$bܒ l45lJ.)& I-Bh8eb@ʖ P|Mvvfe,H17R.#0&gE(yb ]f4lH%y'd4sY]O,pDyZE ||.OhaM';;-H%Q9 abHXaiHA"MM/"@,T <VD n! 9ĉމÁUMcx2t'E }{6DP!ƉAnT 2ش"pO`bDT^$T -U"<̴ "F+0_DZ 1KQQ!"rMEՕX]~<{y߁G\5Re+8 lln0&'dŰAIݣ',yEySAI&ֳ :ቮLǤ`R)bT^&}y y&n=$ml@r\s1npv~^f+ oXMD\>=>'?|}b!|~֪o>=_F/73S~|y3._dצ?־#X](n?'+-gMnݟц qC$y | Ё5C, o ` ;YJvd gű(P dά)& 5*"I,pH"q%;KɕbJ);liu ?jtC8$lI9'\3?N|3cw3 Vi+Pf6 Dj6HI"C'֩ h ʖh! d!U,p5v )U@$$ 0 "5NP A<kI@Y #$4CAeH36 *&חeNh!"ATDr]RRcBStDDn4Cd?PEL9S$D EX2&ځIbtQRPR L"Jh4" !&Nj` R{df@pIVPVbh  :XI$)V/(kVŮD5+q3GP{ E![Anv􃭆  d{X N4ioD'# + HCbPZE ز7-,ifmjU;J(k>t:C"M~Y!*4%傛"Lx"AlNY1剚TDr _qzlqJ1Ζ aFRp))y#cWe2 X4ZvT6o =(Q+:)d-JVZ&/8&<}_UUWiq>4ΟNW͞=Xqv]_Kr#@f4;95R$e#~wK9-s4sq7w5UO3X!'p~~y/}<X3ܣKOB(rkE}:^. }1ϣ^8O?.ׯ:z_OL2%G^nwyꄥ %^!CRP& AT$ߠIS"{ VRl ^y5a M(D2&mQ_9d4,$Ġ26:1 9"h Ai"bDKȒ,`! l$r zm@"[F s!؃"P#s 2PRad0ō QA}S LMJ²M J@LSPBȼ +ZGE"fghBJǂ6*A u/a jas **1A`$ H[m+q رdԕAtf0K$5e}*LQ2$D4}Tb1FJ ʄ$(^ ] ``QiZ[{q!<14ѢB;o9 TƀĊ\0VrtceWMud6Ǚ DA3Xv]P.Iim՗ XXRQ8H0&W6N&kN2R!(X <2"w^T0B1Di-A+hA3cDEY"-$2 EV Z=mNT%%<ћ%L ,JYzM!Lf@ $, -b!XaA'!@$@#DN""MmK@vlɠKmJM$b$lCQ$gIQȍ+HV!3vuw udYXT‰:5*A Di`oS_aHJKq7 @VDHIdxsr rkDnwv06BO ےN%TG=0'f=HG<|XMsLZ 8+/ٰf M#A:noL *[d>SP df.sYX^zj"XBӅm:6 fU[w]8y$x88EG:2سII!1hP'iLѦnf, Ӈ.Z 4C($`8rNZbP;AJ;@p" ac{G@(S*H:y^(ސP7K( !ɷi*Ř61`! sZEpCAQb! Un!H( A4k$5N5%N43U0,Nz! <y`t91xʯF׫us2ɷ7\s&(zqN $bP{6C)n /= CmR/Nt%7pWD2LQ X0\5%\ίĢSz1]nUģiJr "4m3PfaȂ0((&"GniCdr*a8T6OH-rAp`R $%eU&[3 A-vR'Ț :D, ]Z&R!h(,dP/ݙx1R#DBڣdNǀF5(6t.6ir/2f5*D 0 F7H+ Z/IB E  M $؞BD2*R/Q%jHdp-C hL&", YYd?=%-x%KbHB'#pHg-i!Ewb*6T`͐ʩN|isАXIN2.Lm"rP`799=Edǰ%D3rLŲ̐#FapMʤ@e1CM"Q)"0W^d l6-- BY1s W MlY3LpJI#8>^+(Ptc[& N %Rl"%h :EC^j@3`L{ D2$Cg #Tqs&™Ƞ+̢ Fp3i"B`%$i( R&`R.D ;;8=G\ZB{֪u>w'8q N)9b2%R8B.Ҁ@EyΩl&=?@<"# l@3FXPg6_ec9$5R zd / ckH $S=NÓ"=BP`Geȳ{ZNT%[@0LG YQ 8&Dj@LS Ԉ\dkOS.b؂2 Q܄on(<@Q <4ΛD #s$.w@4jְoI7l!GCF $'D48,Sҁ $bfnh&d U3Lħ dSZix&L@chd%+$*  d !F]<}NNkpȠ; IMKR&[U1-%<&N]Lå(;d86n #u 7{G[[I7]roҌHz[XfS$:]JR]JLFoф`b8K@A#!6j%``B'0*ra¢c %6jfւ"Q ' ERimNugDA%Atw*(0q-$]SGlL6C6\p"hJOj+ޏo3@0L8%[`ؑh4Cl Dl;{(E#Br^FuYXy#$$F<`M Pb$P4QZ* J Ğrcy6ɁtFFKn0T=p!4SJ*֬LA+|8ji xg""MM ˔2s@O*lvYợ$`V!ȋV^T#5mqa( 1%e8= cbBs6! >¹_̂+yhkX-R?5)lyX $m+"6-$D"djS7K Rӱe&n$0.q"1 HD@H8H16tY`)+?>[V{܃.i`8%W5'f SE (K\9@99$&#0 >(R B"E0 */[ dD!Nh %>1sAJ !]h*F&`֋C@.j@ԖҭA٦YA霚*L PZAQ.n˔@G!#T6Hhb2݋g HDBZ'@M ,   GZ%FSވ"+5%G,p@ y۪ !PDHGXP4*\l e B&n-$8m@|<8. p.͒vÙuE<:8UԹ 2@D3Ch N 樄dh$ N;H68L L-+D#VB72E  L1(!ߒDkWSd9la) LJMsh׫)FR1fM*DNz$|+[ ÕD#2X`%b"14IVIvM@".bbH)tdHAƓ˘8B8< y {FD[wCW%\GdŽ`ȘH `:XTYia #r)s΢{5 j6XD';* t0DB<&xm,ݰ;zZr=# '0ır'f*&[YS b|A!aP..4j$1Z BEul mà#%5D,0.].E`C ;a$mhӆQ#;hжA9WHq, zKZ7]) PC`vj|,NQ&<+[K撮KI8ş"!9o, A&b! -vMI "dvkqx܎;g lLx[iD Gg3ΰx@&^Ȉc#V& DyNB ڼ5=&/\FT50v0  Tdi&ĐWe@[N i" 9K)-%i@4FqTd֭/8S.ZLujk9WHK nD:yFL˳x Kkgahʑp uPfʠy51PdE"GDQvXWH) !B,K<GfIcC,F!ؙE- Y2\T2()PJj#f'(@Z݇^Txz2Py †/R%ĉ4QC(%ol]0n%iJ(1eIiN $JX(@M.%Wk@10$ƒA (r;q@EL;_&ZXX4 B[nP" 1"h z0-#ɜQfYTQI/ qI0xDHsk)2w4) bn<љTB%ɑ*cT: 1`Nhf-a&F魢̝6ˎ!7jy+)"@Yz" -:SQVȀA dT86^ ex Ye'jIei(NƐ։˙WbE̷rGd1g;BBܒVF(UW аYG=wz= }qe&ΗЉSlرE LIDvf@C!=7xBɖ KoSJVcz7 e̙9q ix]᛺LCi Nqxȓ6 D +"4 X[h"#vld^U:fbI0WH*: 9&ف[fXF!6@(K0k,1ֲ{kWzbb'iMLV5ZHp}%\*8gM|N)*\8Vl$܇狣J_rpߜ:WIMErA8ec6@H~B=TIPrHfXAyq A^FTa`Æj]L-oѺoQiJdH`It(Rìk "8#q =7 Pn@B}I9p'ĶeD`2Q\x}HzzG^heKfy"4LMw.Yܬ$?Hf#4fбdU DTLHt.t%ڪĹCf@2 @c)@mA&PZ\T@$D vBj: b*< 7痉pD~p`׹u $T9]2&@) ,t3m0V]4Ҷ#D`D%1bK5Q *\3=ڸ-jx""6o*SM7Ђ% $D~L aln44DЄF[6JFM'LUw߂~]`zC{%NőxPmZ1s6pu_w[e!#_IbPMcL&6`جU2[JeMA/v%@8%Zo17+ dNVYldBn U`@bRXjPZ C+.,^8 <" &/D+Kh1/$(ނ;Q)@0 JT(vӇ%Y A7׌QY*kѡ".*)d$ǜe4LX "6b ʥSD$i*w+D@j\2d &e(b*s*Df-bhUR\^7pcT,r/QkT..$-4O( TXBP"  D>tYaI(EU‰Bn"Li;;\d( p)5&Xgy;@')ha󼁕P7?QiHI $ꓚ6]l o%~"pL‡Q3pH̉R:Y( qJ*df%-fDoQ j 0)0E )6$ZàRfY)dD4uy:];G!b`a\5Qr\9!d+~EQa4lG1RH᠀zjD*l2! yH=%YkDKHAHt`i#-T(F1U%ZA~  ;cFmĭɗ-wīǗ`Bd)1$BP$d*Mj1){;=LT,Q1I,a b0R.!#=5F'`xf G~4r,4KA'gH=|qY^VKǜ&}$VcEocx:%i y(zQ cp2Q1 KI pb!RpIp !0N4kɄtuSX p]w O5$d#U1l( MR6B#ZĖ i$e Ѝ;VBL`<_"8 QQ _]&(T`8"#@7SbjgO`( m*.dU@\jmƞ3a\ۊ5 M BTֳ%XtE >"y- +@>8Q+4aǷ )[ * jK+rIAB싴c)]$?;Aϧy9TdL@B*HCIf`aσf vDdeZY5Lҷv`iy8;qRU;-TX_"BX(d_=l,:GPm8Xs6HpL&9F;mEN4pXXm)/qɧ{eҤ쫊t͝@nfoCa|BhCBKsD­tK3lj87PSsl{5͐a C]Q)eJZl4< q QXB-wFܠhU'3"scfJ GDyH4Sv[MY$'a['ק 4쵕 ==2`u; Oubt XSa'YM"#5VD ''B$4;J8M4g.Uq$.Ο:; X& , yıQpV^L8ץJ`I. !Bët8!sY'VcI`2kU2%W-,@`@d }QVa:)MdNfДb!03rq84&i-Eڷ[tQ8V}q!BwAEfdGKมs;FI`Bn1LUʲm&&`+1%Yaݐ1= :GDK Oj{hr>aƈ g,s# ҽٚOxA ==jӫ7(\ÈB.q(84 0D;)tBeЯ.DCi1"ԝ1G^ dЙTw1*eE xh)GD,B,+Xα E@C%0H@hd%yXSQPl(^Vqq"z)`"I53IRD a\h "G5dcrRYoqRFDF|x-;& X2j*2^()yp-ܢi,y" * *d ,E;ǴBCiJs2gHd^fCq7aedP"Cm B{XDQEH_q̊a9@դ &L@a6$VVQ `Rc-n$6D>j Y%ߥopI!etEEE1 CCRN&a`"cͰ  f*$̊@c\ B4X */TB;BSq$!0 .C6.; !pW4Yl@*^ɦ"DVY5ۏD@,gU)M,YU9)5#$QI3F W į84rqlQ!E w[vB"'fv3.- 4 U AfH" jy/Bo\QƧ,"K$بsixLuGa!H`*z ӌ%YF%vlPFA>N8:;1!M,-5Zx[ T `Ncteg$- 6' l_ MZI61LYbj] m"KNQ=0#ld)LHrH|I%ؿ `}%\1B7E (Z!ᅫ)5!)%JEdN@!73u<x$dJCdU 9 $hijTCkFE24;ahS hB}μ&LIsF%@Y;`2HKҥ2 MdBȟwD5M"!FӨmLw n\OJ0ȲhDu1Ae$rsn 4- =}z2eLv:@ouexk%^HJ,xب̥8,\[A$-JKs4$(5{wL骛%X=0D$;efu]:BiOM]&0+n L5RW}!E2*'e vfQirlԆU%o$Q ݞ -|SP1dpn&0.2 mAR\ @{DD!\{b&eR`H 8DH} R M(4X;z"1JH!D(%( ӓ}"Ѥ/>0cPPCږ`6罩LP4)L7nC͌ I?!yBe7'l:'B|؃6Da (=EWBBDR$&%dt IiQ)jP)<: !d"6% M ۊv,U1QT $zi@L0A; Dbiݪ#\b `D8ʂI F f @Z$!(PK  L2lG+c-!!$Dj2d)v:;(.lݍV7\02o<1&7M#@B"$nV}`S}0CV!J-P6O/rC-ErAPzLT7W,E:LY @-/ -2eF \WƎ_QF|^@+2_Q+TOv&$\WA E1 @$ ɆP 2#@9;n"8dѝ`b4+\r5h*.\3q,lݜW{#%AS"ӌiFٿZ-0L\oգ HbEG#=8CBЦI "[;@]rYML~W eK2Lv.nnDl CdvP' s0zN ҁ>-Vt ִҴږXDYS:)Crw쓠cDַ|À\H!]Hx1iXDv5ĸͲCyyhpSEP;M2SLr0 ֙T 6 dw>\*+UhS&vrN٪S,D! _&<2d@ʩ a :ՉG!ڮ $TD, F4Be!=a 2BZ̢2 TK Eb31КbͧSVQDZ)}{X!1%+d=2T7M[q2IH#dC43*E25eRgBŠ 0aR+H3b"-eӈak IJ8c!(&xDB`cma ϔRU~}פ%m5NͶ" 8aVFkߐ Wd묠 + Zٶ$-1As`rwF]w;H'<?#PG-?hJdޗ+Xx,Rb^&n Jtzze+r+fH$Jl/lu`ILOVQX PO{Nhə(FS3z6GDSE0H*1Tg- @7Qd)ߠ7qB4x@`Sf0GEIx9û%/ zL Ḧ́ ~X!h  iQb)DR6d\&|l5 " 2Ƽdq̉ɍDˠO$07`+7 !(4lHp3ξ{+B[kP !@@RNɢbI/`6(ѰHȯ[3<=Pʊ@ROi:0r_$RVQyQnn [z#ONĄ&qLjq"\t 0uF Ry!87lXriD}x)$'$|tY DY!(%`Q1pbPbk V!Y6 1 XYr48PAt(DHsDNu @)AsT* DcF &1&޲Wmm(E؉_6zkMM 'UyrjϫEkH1]ְ3@a2/3'@HKFo]+3%woghVk cҽdΗ4'fMˑfECD煶0`\yb,#$&6Fb$e[F8r-AXቔ)xpOXdA r C<*w`g`\U ]& %jF+Ws%Et@X"lr`4EY%ɩ CPXb.~|xp`@ߒR^fMblZ{mIji(PyЃ\ቶ@@#n 53YPcdK(х$4Kl_VM! ]arC9^Szf'|y=gEU$®HR3Q R10ONòIxVN͞wSĐ,:6v+b]K&0ҐffRĤH2Hp,8%'ؐT7Ip(tFFY#@BV@,-HLNAm}ae h !am$"8ed7E9\h9!LdVě@, 0 Y F:#(H׵ ,(KE8$yL[B_> Ed a*ċBsXB=J2"e0/5(DE %+9DG;!A ,THW&*dTH2Zz\1IKindSZ;V HXt',E%,5sH\CN0dÖAD d" x5qʎȖK-ZKÂGA黬Z n F Ug@He\`Vقr5WnòXO :QOȢ9iȪO*M62t *6|ݹ< !a(CRK"NHHБ,(-bKΉ9I@1"RL TQ܄pM\x1dʲЙbn8&F"VNmBŐyT'SI +Ǣ]&f%%E2jj s?f6T)W6 C2VH"IO:)}L0SIEy$MA*׿EDUΛ),pD B@6sǠWO*'E ĥԄd$'+ޮ,ԔTCJ8m.j$, n&r"ɑu/\8%q" '{$ 'ɐ*t ;{j]1 ̞hpyAȌMuGD*"жMT8l |:Tʖ<.j ',A0IKAQsqBxuF;HELEEºtYHLV1*&M&$BXYY'HH`jd+`,R)XC-˄YFe%紴ag D|QjX*:[kS$K MB!&T)Xd9FR6h$cTbI9&llap1#h-HBaw/D}9w%"[n,0V 4zDsgEvVbRF;!!"ARy<#1KeD% 2d$K)I^肴jyRO%IdA#p%}ܳj@RԺEͣꔆckYS͔Q˔"zwDX#>yprIؕ3hey[*J 0qk776XE,@T0@ōp)"-"(0e? .$A3aĒiKEXh$rQw |dTL X\ `"Aә^aˁɋ}+Z z2^S-z֊:̒Z`N$P'=0Dz$BeHfcˮA iŹmHt^`7@hs K4X' `Bd\d$@I-2['؟_s"W C"Q8 [T/@ (*\]5sY KfGmG&P ~B  Y :Y=) ]kڽ\W's:&;aM\!%YP6RHLsc@>uO'P#Ը Dib}=5i"E.=G>?*ts'ae1^Ebi(}cVm"3A}V^q.t,S@l&oy XC! HĴ/.$cE?P+H(32qcA*Cc[u+ۉ=H65h敁R2">imw3el=bmHw'XE#Ŕ}vN-1I3.=i x]$l| rɰܩ ̈́z!4Psl#]%SxFORy\n'^qhw(;.C%=.u;'ӫhzɲ/3;8!Ͳ7#wK\%g kn$S)3 ↛1rwUcłt'uD(VSWQR[mI?B:= 8N%HZc\\N',\7mq]׍5Gu:fjzGow8gεړXA[3OŒH͏pHĂ*C)Z1nʍřÚS]9d:jg«haEH'_ҤB#]Y@]^ڢRJ`+34:s DŽNb Ƴ.j,pwSMd!j{ k -\~P2_fV+]$=(te;9KS$Qsο%+\5z(J&LÄ{ pqE6NLIkgw)n&aA|W~-,lgpayVz ~Eg7Zs+#ϚHpŐ&JG3 =XxY~#.X7Bv~#m@g4Sğ/}񽓚1r0m w|~ /<h/g$DfR5ajhs†71<2Tj7>>s0=exhޭ@g$uꬬ>߷{9ѧy+륑- T&BcF-$XanlMCA^D\ fIH+RO ^>+͡jIH+)P7C~z‚@D>%E QAֿg"-$xN tV:İCH栤v`xuA缎<_;\6ѱ㌽ݹ q(H#< ",o}쮰!R 5Z?=8} 8 V%匠@t'YS4wހlG _K4J K^gZpfoOVF0ˆ,qT-65b w,N`+NHa^zoZ A?ez߭V:{ ??,H)_OȅKu;idk<˶4̯I! 4Czk(U!*m2.CZ$Va Lp?™|T }y=9T kg9Pgߝ>n=,8]D_)QßkKNfkGDrϒD7/&H3[~yKA^yAb!3L{$djW+PLޏ:x旔Z(V~:"prwqLge :x2iWSX Ӧey8])̴IɯCČf9- SXuG6E4wv07&U!R|{n7QG9t'.toR]s:ĀޣNyξ,TRCݿh s|tb6}ny P~Xk:]BȐ_ң$`[sܞ1d:n؃}O~>.2.~H֔#h;z ^H/[^Ѓ§ᾆ]ǔ~@;j>ρQ_~%6K wfS[:e 9X3dh;g?{UzP?=Cz2"Ѻ, #0WgeL_e]WqOƐ&=Y=x}<8醝+DYNɉ~q?F\|랕pC}@>:{0Dޮf}ml=-&K$tD'# -HCB`<&Sx`VX~vE.?O$]z&>.![dzaؗ'9h BUm=;N*5B3DY \1u5 KWh"{ٙ[l<~~$>=z. K}~|^$'ݙ%ݿx3ow1$ Xnmc&*c0 Mt;ݩM!䥡8;%{.E%iCg0H_ gSOc* S^\7泥zxl}͈3R >WkW_%B U}_&z8{5Ͼ[$U7¦u!pqA | a:8QYR⼤z;4s[{)䰺bPߎyJĮ8 6ko)ᰞ)H'm/S.0.c_ !F LhFJ}=I%tcUzm)L{$ ;yZmzp0[YD Ft4c51ͽ E4SqO~#yOw]<5XM]!8G~YijG'sC#z㬓rI<; kt/ JJo?F;ǻeCzx9cu?޾19d>$š{Ol8yn?- .\b~\n5[e};UZ$*;=5RྴU9'<J:z{P0 "wTCtp^ӳ5jd@TKKDE>h8[}9g 3?b[<"ɋqCNrD>1 ;z=1A&xh<=͉:3YKܵ}0`*?B5. Lݒβ576J9݇8[O8Lf;rSa劤2̗gsOm%I#|-3ܟgpg4]efhl=tL~6>5 Dgs~wg_ _Iǟj1|M *;Tꇵ M2"﯄յ9=AkGA6 K#f<=Uy&)=V^4u )s׿3AuǗgH_c w'iZY1&a+겣:3e3D!J.U} hk[,]weP@Ypws3~ʼnbg\)5Wt+8i4KO{ +a\F`xWb0*k݄U9ty/OQy 2{?rk@O#k; =uxLAY~J;xv.ǮVk9l^GDܸ) i`:NT}{yҤ ?КDkS֮zR;dXU $/Kk@ a.P,3.d!=sybS?x@f9%'cl-˴>ʸRw(b?;s)JCSOcPL8Nj  d#vxk!D"JZם]w5ⴝĜ8}|5Aᦊȍ]Gڽ%dgYT9D3އS:m>l96vV9f~DEcY8T{&BJ`8q+} }_ӌ~RoP2esD6xa>4GNu!J6FpWKs$y;-8 t]!Y bZ'mXezzM>ų Eq>3<VZ=tF#:}`hb2780J-WC2)JOXE8ѵ&|;3]UOԟֳK0ɜ<4a~sž`U(mhqkxRc Q^ 5iUDR>M'R5Q ACf>ZQZXKo>5@0ܻ;J;P@5oט#t"Y^C ys_ջT $eaxe }C|0"=T) qztq3P'74xs={+ר{܌T=4E`b>kbwgB[)AP6bkJ@chw"6| Q h3O֙jqJ#?C~VIk>L̉7lsT.LTԜ"lĵOW]A}er-ckr;w@(?Oi:N9?{-'}[I~9lBF>Gtow0|S@A?3>p,^I|QN,R>QUqp?no9ye[Y{B/75|EB=Iǣ^#QC.CM sg=/Wݾp; ă^q|w}}@0ྡྷkҁH,  F,zz?ҥ47&_&)CIBҞE}Kvi_3˨kDmɜ߫a42Qpf0DGsqYY+9 ᜟF?[-7&w'ZqlBHBG A=xb&dJس]b;8S}c.A?< \]> MEr{|mŽ9*u;xxvot.{ߠz )A;|86%dD[6I2x-158{d)z^Gz|i}[9ijt}{P. o9>0-|IOUTcw½FCbi K*iېn?((%'氏&HYH~kRqCy_k}֓U%N-u i H %@B(N{D%RH٭OAУotQOE(W)ߥ'v!Op @}fb`Tx=?i$PG.D! `)3 HB?ӟgl/MΎq2/6ns`2ZT" BDj)(,i#׀E(r@Ѻ5&_@}g{e%ȢYMס[> .,vW鬲>:iiO I qU=mk %aNEBa}g«p1mX$1 wQ )gC`.~xخR(|wE>ؘ&%P^ 9 O y"naQF3 U—1Q\ X=?3OY,_Y-܋M DuD|=zL"NUM7)?FLGܻU"Cµis S?ו1ezt} y/O iAmiey>?/ }q@Gupn7 8pO\MH~hCPUP|鵥BAy ^JZq5O@S^őgG@zwwu"w^#d߯Jxx_-Y*AW m2+Mw@i"kAM`Y"fS8sBgBWt]cʪNoES}oR#B\*켝(繱`ΓW~NjxC%Iu+Pi*('EJ1'aUAB9b> QҚC%WɢaAb/ק&: >wѿ]Q)SX?ЕkW=;\!o}ܖP@IRC6yp>ʤICp{M}L5.t/uENm ^ +AO8STYXyEB;~[:\ E?ӹ}ķ7\F^[4eq'2ͻNR~8\y[ev" W7} @R˰OᆊpQi`5eǞ:Z-6ᧁC_Zٲt"*lN~FEç7ŞZ0y40mCq=p+3jk^H3q^|P 毾 +U놷'; B?@ qus :GM98BpO}H6]B|z,Qe DV6RH=bB1]w}Mi1{CGFPunIe`ã,~~Ѥ͙}=m2z޾2}# ûm|Ҥ:6~o9 *+YL:P(:? >Bj㲷\6=q0 _xra43ߥ8-O`WM S|U af@dC cѶ}XVL^_=䊮XOT`ࢠ!=ebWHuOdξ!riߨ'fXz5f`?ݎGtqoF'=\kAХ7M=2tA(G߾$F D{@ >.Z0xE$EA3>5&]BKEU39QIPV$H*V|_Cx/6{|s3ݾ|+%u'O]6Bs愲G>"ou%h4%J% *?&ii^XpcR|8vx#L@}.`YaowiY\_+S'q0h6K|Q@DIf&Q-aLeij#-|PKpGOaC>[%fOx缴#D;?V7l-lro&g'u߽ x|JЬ0>zRAC]~uPA? .DF}/ÐM,gfCE jb/L ;;rx`Ԓ ǽ|US.{(ι!BC qo1>cIITV$XMdjK<}JA߹,VATkb31 փM({Zut&DZ^9ؕ, *6s"S{)V'o$ջ{ZS$F![q/þQ\%Y?.N"5Txjvq0VX@iWT:!NƐi~m1Np.*?hv>mE O. lDuqkC")5+ V ,(Q†a?ePZh٢( R^h)⊏g'ȺKZ%=hЖ|&˼X9MN' _#o SC wŵ'!F-Eo9aW]hWd{"ģa 7I3DC=Ď+_MRB2EZWǫI:enѾ *^" .g=6Av~yT@-U' \? o 5D1^F^K7Tvbc޲y>ļVD WʀhzhAS.?|*V= z̕?NJVAF%<4JakkYȴT5mSFUſ# pܕIm6vWr}=1dnx1#ӊˌz-3 ]/.T9 E3>*W OdŠeAOy,cݻ҈xHLL'rhIfЋ!٣ŕlO49Į~d=߾6!pJ?JjՉ䂨(*;-tف+X]BP$RN]sHz$薠|c7y p!9#H2ӫbxJ_@h90}Y\?rќ\9w0`6*[b}}vBXRE#֏Nބj6 K^y 9-.ʠTiO|94өxGwc̴"`OJ}~,PFFa?O (Px,Z]m %:xEf8gG"z GI S8-: +IIE;xbZ$㫙 r6z}>bb2l6w=Ayl+ZI I0FGݢ@.ߧ5 3#訿rW Ή5wU0^<o hzMqKc.7/^)&Z~<%K>= mo Xh%G#gtw(e?|t$swxN )9.3Pm=Zg[6}I|"BUf7`5`0h&gF@P?D} { }1iJG}/\!:)aW48tƨIuB1-Y2S p"1ȍSoHP柯IL95#0O20ZmKFn F(mUj 1W%4{nk:I_\z~ŵ4b@#އ&j윶{|&ug2QYP/\1JȨdwz@Kܼg ׾ vfN?QQ1%}Y{06eO׾*:E2S?TӕrHA:?eb*/$c(Cst6h.=;Iv+9]_gThȎNk6qʖI]~^_u H x[3{9cױ%u5XfdbY*v{cCosɁ &S<^͞=->x4V} c< ,ۓR({ D/$}k7 kߚ^ &DKorUsS К[]rqZ_7 @agϿIsxb(YÒ ?H1==z{دjelC՗]Br=o4fz|:k6dbS\,\(zF% o ӤZ|ⶢW(o%($Srg~ (*IkPXVf!\}n{5H ]Z(?7J YyzfT~I <U>~}z@ꞋC />sM<8*Dꮇn=r5{ϧtÈ}Ò.*~-C9b(U{4Q\=TܻpZ z4uƧKؿ>|o 7MӍdS "x5щjpgG0l|,_kO( S賁uw X--/b u[ t-× Ө| FJ$ ҁkڣU%U=8޽i)uazc ukeCxʕܿs^ ^&z9-b ٜ!}hCY?ILlaCiHQD"}%[Y #'uG"0ЋY%=`Wm,g.xBv ='E~ġ @6nm R5Ҵ9)b?T/ ` jGð]|+@D8.80IguU$S0~*=@:ړsπ`D}VOO oߡA*B(dKBq5Z}su V{p5jT A.)HHf{s|\`P^t[s>_Cz@(h aebh@|LVpl{-T~Y_e`yLDKr -9Gr'|:=aBa qa<2(,I/o !o-وsk]V/o4FbGg+l|gGFV-NLϠu}K:B1I?2_4Gvu=#|.*Yk!ͼMJHg֚Oć`#(u.@B_~"SMsk@q\y-/^iqn5d*b[[&XpB F=\{|B*㧋GoӬW$-[cSsؠQ2;aF`qOKY  <3ٻ[s 7?kky]3@{)õC۵=g Re轶+Fw]C?kܞ?oGz 1[hX(Yl(=HGfd!PB!mοTIzt+G2a1SvڐE0ټ{28L3*82S?ӎٻ*ޏ\7=jXۿ}t.P .  aZ'`|\i}";?Nb?[j$==$c-A2?h97w&1L7 4]SzNNb|[ӹr$j4eԎ3hSטb9޴>T?)0. vN]Wuh HD{8 c^i~nQ3H^4}{p-=]1>@rOn ee|YխNj!tb"<}sڥ̌Oό5AD|#4)>%ՠ19gMIg,$ =Iaߞ=<F؆JBn4_}a|$m]?;s.{m?N #F錅xLYn|EWw?=HcOM잗D I?woOm3ꏠ% M}*>}JMf[S>ZUq}(n6no)PaYOoozӘ~95Nk.$D>eSmf11awp#(ޅ"?<@?!=NVuT2JĨIdl4skf牒Tߑӹo(?>F1nIf*Xg]lZ( a=o8`F }zn2"}w;< ,/#)O!5d_MGz~^xqŋ@|aDO-8Sڸaۤ]WӗgkJ.Lt_edjsz䇈~ !b<g .^ҏx 1cze0^\fwc#E[`S O \sDer&:#p%[_aGn|$fgNuw ̖ EH\Ok\fכh~X,j?t,I!ڍ ~w۷?ׄ5V469j)*$A46[R=jz?G&oٲ$ѺެIlR{~yD_reg鋃^*5?=x#}Zŝ͢hP?ċYx }>#Ih&cj=0Zdsb )7zw""7eYQr"Sѻ8@ת~pkko#s~xڟt7eID>rc-B#/3B[<3EO7]|a|ܟ\GYe9u}8c=Oq.zz>x}G}7֨ *rA8<0̛+ 8k+t4oпQC 5|>8ܚ>KsF `<P ݨ;!0$u[ {?K>WqZ0P}auD B/r9.d0=YMxqw[пGpNb|/^0DŽ_C'M~Cg ҍqTTR07(gRx)}*}X~H SB`GqpoH JǬg*  A޼}咨5y~7=}YNGS5m~ş}1CAA,t&r|%v$z.z~]ЁOy# t:v&4}t/'`ZNxCXW>y?$-_],#2gMscSW78Ux"'Ru3o=~rĵ$L:?G` , Qzyw:=>m>0c&سp=x"Y[/#mʵMy=SBzd^x)GKg-ZkE|@npkd V+f@RHz@pzaaՐαGbc[4a՛'4zy>f} -+ߟi.aXz;ϗe,Jk(ph6C+2;]RޞP3gx$ΛFNW|QQ7A? qPE;:\/m6XY‡$:߿9@m^գc Q]bڕ@"4-n3~z*6tW]?PfAMd\Ĕ+|(0~eX y}xTj og^2}Vuw>02tO2WQ SIi:q:$u}> 7;ؒLj%?>@&+5-wQpQ?4Ev_p%Hzۤ/.ɀgb힀ux3k;KؘAXy:Oʒރ6c<}Y cbDC @=/L:h|uJb{ #ox\v M=OV0Wzf61ND2iLpo [{۞ORP8͹suK 'cjQ?KsBw`&-pUGy^! Z$Hs=?u!K|8*ȝ[ _0g(,^`{ ka4a'bnxHtg*<[jܯ&,=#CૠgySL&o;܄i"}j犋U.tbk\wxf'My(" IU[〻 EųTtۺH5(Q6ђ`EUf@^}}sZKz!=>辱 Nr|KM˟E(A>. ~,:xĒֹ9{ $ts$/kTp<*|dA΁~E)xS6XIzCo0K7ɕ.E6 aYÔ=3)b#k=I3JM^iҍݯl)7|u>Sw|j.1/gAxd*tL|C[]}̌cҷ]35j,';v_Իu0'N=ۣm>Iӳowʸ&S}Oa<^&d<BݯkxA9G᱑C{(b'wCWx pCW} ~>OGok7yh~kOJ8O`[FALҐvI!ftm76[.2MRR6kև]8x >QNG]~Q}[fpAa(_:Xar98K1=ځ)HA e)%NjGF1#1{l7U)oA+%BP͚Iۭ[:":Rz$GA,KFN]ˊ]+`S͔EFYVYhC`*[&'roVWbX/nPz0_EWl܄n1j$\FE>T9i!>g82:O0zO D^Dza:8gNNS{t'밖)U2~M_H2=}?rTBo-;窉T9 L1HO^4"L@${4{1wA$G}]r㧸mM =ħ|!Dـ5 ? Z(;'7^~xL5+>v3?`qֆ:W5~pύdHw*)OYh#a>JʟM|#`\UMf-q*[=z|nl}gpdC~}5V/w׹[CI;Xt=@p63#}YN>CmhTz~qA?2r%מ0uKܖ,. '"Rj!'b%>r|m}a #Y__ o0m@S :}lI/" r9Sݸ[6o:*?A@UbB:jK*g*CS|JVP"0ZAbJqk* pa=ex⒪6#^M~a#\Wb8Bpqh`8&lGP׊d{nn 7ֆ2qkC37KqxxRēwQ(餭lS פ6t0 +I/$^d!.)AP W}&%Qk=B}^Qi+[g:}#֤LN+>|*/Pe֡ׯq v?=OhEHR p|cXJ ؓ( 8%cYpPr[X-G\@="")cLU5R: ۧ=XٱZ kGX{̻.I=qe[;<%$oxa!BrhU_OӐ>! ^9(1o,-f wP4Ϲlwi~CfXf>#Bφ=P|峘.@Yf=;Ne,m7`2K7Ί L!A{}_ {,E߁KD$l,J\}ܵ:W 5/|{ȌK'CnYo?K:/=l)WU/? ']r(#9'<x"P9'fŴF. Cb 5%,!Ti6gS'e`b}!Gy*yʞ'* U$r$- nhۖ }S<,"Zڐ6uImq$`jPUTQ瑾twܧ FBj ^jb P )48R  3'AwǼK vfM 8W?}B N{5/-7_:Q]jn‘jU#eᲢ&_~R[OhfM\}!tz7,hz }:4q`"Yo|Lr\ˌ |ul C'o{ɭAL$ys\K?qi%֦Bp0 z7kp%\a`U>i'^щr7my(tϳ.q(jov +745SA?gL<Ǩ=zoنL #b}RRL܇7^s5>PE8_ 0$g>x{j:cy/Gul@*)_==}83we"ɵJo[rO1tp_|+C]%CP78%O0Ʊ{Du&Ձ܀_) 'B&j6|t/&=Y&J}A>  l|{p Ab5$ZwN-*:G 6 J;J0D$jTZHЕ`7l̵n`D!.I, A4<Ƣɸ|XiJH@BʭȌGGmXaBpʼn $2Ŗ1@RcTQ&`žehLa2\~rF0ʽqBw|ʖ{ #SAP|:g|}CM[|F/3JZ.36Ł|<#W$^zΧ tLI|'IF'+Jw݂]K::˧-٥d^3{m ƆZf& FD7Gx k1Pґ+˝4AxbDP uV=&p=~y2Rj'ݞF]: <qs`E4{^xH`4c\҆W_=r\T$ܼY?䫱_}Vc69/j%Hji2/aJܸ)"=}x* Zlg1ӞKYą\;(f+\y=O*4g 1.e}榑ʼ,|JOnshⱐߕ}2Iw?a yMF ﲟ^?$|ik?7.x5=O\ *g'9a`=3}#z ѧYF?s͊;?ν#xz #0ι =ۊ?g}E~g!>.%'0Kb:u:]+' ;q}þ1﫝zxMrMٔXA7f@*78@C-zQABCcR'&@N[ަ41D\UWTUKnf0RB ` IHR}{r➴|x7N/Hbkz Az+1A3R$R ~UyԨ7im $75OĞ~\:PiS2oz+(\gJ (D=WraKUB-HlKgjJoƭx%b 4hZdPGUG>7KqW y}ełH=4&'eQ/?Km*Al#=yvNi-;`'j )(girǙbNy("yKJ0S@r`z+(ri&vaw{/U}0y?BN+eTx+ttH{Y'U䧘)=fZeů@ S @KL㏇+:e Dܻ}*k.h~ {:0\?=/PU]xfc;~ "a{2rs^\F~wƒm }=0 njA(2w" h'f88? 2(\%m /UV{=,O~Nt~ѿ ʶS1'?2c`AğGj{Bz8WeCZa[aq\2'אZ^z^i޶|^LeUN; F'1م79R hJϻy7Y]V0-.' ɧOe>H_{>'ޡoޥ/djLjLA[2y<&2'S, 7u/xgӆÂIaDމvꉥМxxҝHA@VW0IG<tZi}z,]@~F +X<]v ,)t"i?XgVoйݨE-K%"xZҎ~g|(K$ j%b~dt L DDNq]XlߍUE0ezm ..sMQ:oG}xO@ T UMQxҿ?16 cS{aHzE3|HQZhE͌Cw` Īghu[P} g}.b%OiZ?|h^n^T*@1I;F=ڥ(K|~5bǢX !qY}}HzJ 1ulh"aCvmVxJl_s)&s,H7:g[<Ȇc*a^&I?:l?}>&4'||$r|oY= xTQ½}`J 6mlLcEK Q,y#oxon>^b |F3Mg]#c3aS롯[)k|Q9^ gmFga- HV4Uܜy/¬'/;\{X`; z}qj .n53>C¶Pg×HjPk\{[mU0}6A[sDґށD1w+7s.>`uo_v0MnԻZAj} ;H]NMO[MToǿ>֫ye.wz{!((+)UttRT W=gͰ1pŜHδ ! 4tߙq/؁Yp,b-ϞV#Bh [|&hH'$'Cw׭^Z}+]vBE>rۄQ0*C_j{ã4}|ZUHmbݼ@HK3{ǽ|Ţ+¸)ҼtO~@S`L} O†E^8T CX}!EropZ3h;HոV9A@t5*Eg9|z iKp1;W5}x} ] /K|=vH&'L 6_[}_w[` }+r}Nnuo̼VJ`"n/ЍF XGiq =8l.$%s }h|~9UxwĝI׬BۋZ'zqKE}x`lQ2;>* =Bg4X0Cb{_:U=Bzu xS_&@-[7I? &l;6c6)~R}w.7ѭ#/3:-'zxLhۯ$g3H&-*nosU;MۂlGe" oOYE"mwo7ӐjB҉!wU$rF 0"q't" n7Z\#'+nb賤bf~cA;ta/b=ߛp_GJ4õ??+!=Q95ES?h@s].@ ^B:UhVwW*\f< hD"=P4}+ >B,;ލz$M{߃5m+ =g^Vbߺfձ#v VVv UQ?MDQWS'n,}oI3 8snBtq]Ǻ]g* ؐ2𨮀1~|n rOLimxAdX^<8-THH)E_*Lw )/`)FXj9J 6t Jf?-O\_2ML{%^~LYg]dwaʷBaaFC@ScbC8s関B/rB`@yޜXxض]~Xh~̓}4_/➋>0}HCV~m>maxr:swbEg>} a6uv}i;o1yG׫P,~<| GWK{҆dW9"_7 jGiWx~6i0P?f.PTQȁwJFרO2J`l&7~Bm< ,ϥGV;㥋n?vyKHCG!8Iş7mu y DF?;slפW+m;lM b w8 Pj fl>"*)XsƊJ4C6W wsg^6?+( Y{T[|D) ,^T*>U? /#:W 58B i@#%ya;T㍟fU@ʷaq2ri糕ȹ)lsD[1'8|>U#uOJ5ht?^|ONpgwM[s?bw=7QEMBF? QcC*t! 7<p!*0@8lD Fk^F,.VeX +%lqG9R(W\ _~1}<^!-(Ao$2cM$䁶Z׉AD4\/|gΞVAo1Y|aOB3fi"=bw(w|Q~43Bo1!(,6קN)A½_qMgv s鴮b|Sj ~sYR\?|l٤ rJ<+ ,foʬ eWͪc/Qċ4k Ak^Ew=/w8g쓉[O 6MaV*A^T#ޝI'肓8RTJdS:4BƑU^'gPoz#zb<@]eGf>oeMwTqP` NSTmiGAG{ɽb >hlEJT8zy#aEߦN杄Q0їۯsk>⡁%rDN 'IV9zK}iPi$ էPv:ԅCeD Zӥ_|NM4 QJv_,kgZM WjւhmCJIH{"S iExNaqK;۷y31Ȧ"hT'x<*#O}1#^ϟT\}Y"^|S, F} ۇNYQz*=?"3o R:쟳`TY]#8eA05zA -?$UD%Pߡ}ׄm%<7ᵈ%-7]av;c3v}<)pt>B8k#GCPD')?}|>=v잲Tui+NYQ/(\z 9kB0(+o bdA{:QOEG(ʊ;9|#= *AiftTH |rP;g1%Drz]YHdgVQ߄aX!!1nL L{?$F͉ANaoxSeM\[`G7(E7z7A3[:'Nw 8eAOF]yF+Bu%.-N퓣r%°̝Ҭŏ w-_~:Yk 3 ] GE'>YQd%*,x2UAﲞ- kSdMvX\h. F{1Z&̳>x<2,gI luŮj1] Y2V<ܵO>kHHcc#jh6o|8?>B4)B&{n"]i˾ܱ< "cӅȠH. I&F;^?GӞ >V٪( TAPP׀}'EfV֋YRg(Zgˇze.jbKҐ`7]%+D*\W4H0kǼ@SUS z_vx!.рE-U7gD5ϮWwoBH/!ī?kR*\ۧ 0zzObC )'q ur7@|A`r~E $rt+uRC_`|аU(̮ ȓ黌Vsr=,JwLG̦?xS"ޗ^ ļ5F*Dؐ_.CemP1&qSqIB /\5Cn+T5Nx$=R.!͒1$8Zl Ӵ sf_իJ7T$A%Rׁ?wëk&9N KD~8.!{W ug #@DH_JcHP`TIm!u'|.b줌Wiլp=rZc ,O2IT#&8XV?<6ـp==F UFW523XY3o@ɼtb+d^zv)K'Ku' əoR^FTsSfu }iBlr̞U 9xVWD6$RkO_|>~_Y4dh_E"u Tg:~o\M O~n='L ҽά\Tz y HESfW)i.t\HEb`mQ+l_"" k JV a> |NꇕT5֥+ !@_@[5/ 3m0e0Sg r="f 쎣MVѯAjNry%P]@aMW,:U63} NLBy!J;a@F r}"'5N[P{[)0_P|1_}38z7z,)J!Eؠz` ЍЦq_Ym!'}T:g{TFXn4sGD,5C\JX)5uJ5s2@_A0窾.#̶SA" 546O<eJm(c'33Ri&5zxuցçҡ)M~ NmX&Z{c5>ةIu`}a3dm3=h &,F80KNi| /eFKoOrODq"p OGNCz6"ĈvDf%+<%z{b<悀H߂*(xlVYU@޿~! EJxXUm}bkȀe+#ӒA:’8"uDbտO;57/zɋ 㾦x)`8|ӑH$f0sX?Pφ,HKy,N*OrD!zO~i3r`BygY+ 5%n_ * KCqEZN$ÕABLZ, 1M`ܝ*_FI%hRRN̲J]73>zKg3$5TLS;}bNT%׎atz'vC{PJ*;_]B#NDJnx,U&'XS؞ 0GE4,#e/zwA^l '/Q"_\SPhS|hpP釖BrΕ EY{Ǟx|ôRN\w}/@h-4Hi*sAb3sL\&<\Nե{P V%< _KF4U"CVk_ 1L@N3|eL/U#hOV 6.OH!, !h{B(04ܬ@ZЖ%lj'Dmg ,5:}O) UZ~rceWTIgdX5c 5޴ X-B^ڝ] 47XCZ'.MXRo.&!cI^V-y @/":nc{[}_%&wXZURaYVui}2&򳖰Qqdx^\(,:0 ):!Z,QT%rd~8ؠOVIՏ#FzM=o5k?2!ˉeoC|]hє՟GTKbLE䄘wn#!Sxo~['bNCF5OO?aӶQ{^)#«/]jx 4hz ߯.t\DADYv->ׂso*",`Nz?ܑ$z=CkDzL}z,nBGݺxq5tRnHdIo@Qt%)Ba_Gw+ڋN_**+R /0a:z)2Y' J?xO~: |[W`ɯ1= em@隃,V+(fvyh0 ߬|J]4CqHzgԓ:5D )= #!܎mZE.3Yfv<7e4} "Ȓ wKѢ*qhޘ NwքA=m9,r\k q.F\S =6Obm7 XAʚzySZab/s _OO!1}GPeՉxv@KxHƚ:Po_ tw۾ eN_"12fD*ߎ1 dzƘ9:dD<4,13 #LédÏ_C+I\|[\O5In ! 4N=Ml  Piw狍%,^}@,(H>XEV0}jJxb$M w ooeFjLoN? F =^g"$K:+Pwipfr+inv>x+bAq Q}iF݂4z |Rw"ܝ{]TPDIqzIdHƸ|p `zoSy!ׁC15j;߶n#gn($!E۟>Υ}"?T=pX9&Eށ*S|xfo3 $Xfyan۳?IU|u$ďx*4.}V]=n[ M_Zx%jUB1[/Ԋk#OeEe=^ۡ'f_ѽ~ pGߖ]  %x߸_#YkĪ㫦6lۛKک Qb*CmEr#?cdȾ{{ Ny*ލ#My*HP=c>:iMQA k+,6}zU;eI5nyE$'e'g>jpCN1~M6M=@ɪpYH3]irx.]ZN['O_ܱ6>gH8 _Th Zap4"Ә"*f_g'=R}&p=~-v)}G?c0RӿES`\ #0$xV)Y$TOЛa@ً -b xe"*ȼoyY-$,[)@&[>.TU#. 2~" lYSfTE@D CҾ2 sA(@X2Ǔf`&cj=#hC@3h%eTDZ?77JӬ|ԉ=|( \]0RߞdV/ ֩< ժ2։=O%4f& wCJ1~\}lCU2ތt1b {I!iaE}GEҙ1熰;%WzQ=tQM\d-ְzd #,&C߀ao~-9ayssB%MH4zs[s0 `" XyE&DMMOB R=AGh2/ryå8çڨ'º AAwJAhgƪE ?^ I"PÍ-)w<Y"_Kg==F8web²H8wy} 09SOF,%MT@:줥B IC8Pe f2O# !۰|z c\{zCȳץ|'pEnz={DGIOrh::S]Aq,'8CHS {@PkԒV7 :HEoېXJO"p)HiG"zECC5m#m]ԫAH'}{{hgƌ~`TSa(OC<==1tv@.2AtxE5$ qyg}'s qZA9ߵ<`XFf3ׯmiLC`"F(US=??9*.)Oi\FU t0?OmCu}s8KSoEx_P^vyZz! 0 +p1y#xaƧ_s! 1BgO~v~'mWǧ(/,g{u y^ P-lP?9>6LF W7{)s>\Oa9op@T}|i߿>?3Kx܅'@H~",ZiU|6\nI"R{c!nl_ki&(z'Ow_?<дXXx58|= 񡋣SnS‡?o}G<&mb6'HN"ׁ 5U_V{}&!1AQaq?\6l|2w&=_8]X{i82pɸ 'o1&oO A_Im;|m},?Q~&Ng姜0DO9<:x_O 3>'Sϱx1 7-K)Jo{;?kuyx}VQ >Ú3LB%v?Dw@!@@ QbH0*t G*V4Y ] %AF՚_1Fbn=G (ZU7gPP]qUDPb nU$j A5W҈ͽ1>.)YND Um %S*D@G>B.(T@ C2$ .j5R,hwՠPJTwE@!i7T|D@ZU")**u" VrHGĕ)2& W h1@j A]#&Q*! 5"U3ǹ"($H<[^u!0A )|c#e9F¥C͊%j 4 R!hl(0G)răp)(v@jt"IA>,$5=gH,$0M45 ֪҂6'd1,dIM쐡JAB6(0 AG |a ȉ"Ty=7 ZX8 VHJ6^@QPǒF}l 11T F-<PD!BLAWJQ͢@GBHhTfW HX5MGACd :pWzkҲR`yRwe+?YN0qədZ~b} TF^Mcm=Ɲ<ă'~&34yqľ\*ڤ}_tӾ! jܞwgY\ Ki/&OIP_|Gb$v|4''&Fۛ<2 ' Aj]{p|R? {ӟ;g i}pKιn؞WlmZqgZYSٕ/aw*lܫxxz|,'ҦsI4ܳ~e!~9ɿX9΃k{9Urz^&wtv=MAJ,L;Έ3Oy2V|^|W7Drai7mڠ73fe:e曮q>Oo߄T5(sR}pnW&L't=n`_-5PڿA ֈ4/] ڡ2wZ{ř% 1J`^Ng{C*a`l,^@JfNgx"ep~jlQR觳Ux5%I*ísݪz?ٯn[oA ~UmiW%c2˭f>kLiǹd7=P)p8hٛbbnuNU9P?}"O#ϔyJqGbmn{a"9 8 m#1wh6=L>i~em>o߻?g} &)=\cAEZg-2U{0]֗T@''BOU9<KKux^ ,YuW-):9Żnf(gJNk/ef9<)(9Nޙds_[|8$^;<9}+CSĨIGqq#ec"zt,9{uu2.n袧Y"-XmzΔhU=qX0m- q>1#24qW=0=I S`50Fķ7)cdQ,1ީ~~At9A7XM?g iSb0ŀ w^^xp{LF|I;W3ِӯJ86oY|Ukvm=Et<?rp< Yk;fN&zs} 9'.Ge4V/=G9ĻoEfZI^}sx|J߿[) àHatnGYFk$B&]wc ~=aC}WsHNU&k\8Y2xuJzBW=^b{߯v0ZM1U'_2CYTۖ3ryDMt}~U;'ΉR'-:ݭki_92FMdŁ>XK^l2tM*BIq 5;ecq_UkZQp9OWK8Eorz~6,iʇ/ƮJ4N6m>Xؿ2u㎐SWr҇ɓnsQ+Ez^'l? gYz€'Z G3=\ aivfqb$AY=~ |Y}\7~!ok+mɶ{$$՗6uf͔M3Aێ}+.{,JT9~{ ]"I_ǞYDﱿ$ycst&MS}P(C{Jt@cCXOaͳ_i{Wq&_Z|cE})~|5?8λ`Twu{&g=z^qgLUw`EF&sY$_s|H8BRBGz~qRrOjKn/$g-={ߛ:tzk~]<&YӰT9fO{2 #DH$pz?Xa76x"~yoO =s~S?K?zwTK9 SMlxz{  ,5%+hT [=V'p~s8;FOly>-8DV9[iv( >,DYà9ZAGlQ |TdOĞLb"Y08s>RZ:1{ 8Y/.O~0a %OUAdo9׃{{svSA;=E! Fv4w=Yzr:@G]O@5^P%E̾[ Um~_%R"{{iZ~ou*K\@;zbVe"#(4sGt.fL9Ls(G++_kwL}ۘh*RY-s=(dP?#i2PHP75x}}x<7TfS* Xv_0}4r\I%~ubھ, O"tt)=]#¾fQ_(4$.]fJk-@{xAafZ\| wl<5)I1xNt30f٬gO A-Mk?k|?B X5/!&r` ?gCO{̈IqCob:$=Ohwމ_Z^',DP{{(csvx q ) yin|hPiV>agl):=e6'_A.~e&؆X|9 |_@>*}3O:#[I~9Nr(cw?u]m} Vhyxz=a~t쯀8C.upSԝg η:Ffr|bi ?L ,'g#\m]ҏ9} KFA~p}}0OOg=N-hDi?4kϙBwQccҠORi9&U̻ãI.-2\vӲis> puצmCӏ,qekCiePM4ɾx@B_F82Y"剸5Idz,5[==fd|4O-ȯJ.NٹGѨp6P w8q ɘsC\&k*Çӹ%V>656%vnmR®um?g^\pEc5V9X%-i C$-鷟܄#gG BXcg| cId$B 4'qv`l*M 67GVd |?/8ԒO B%廴~w1Io~^Iѱ G1^D/W'oSѤCP:t9X5 ~GWnMhs[c1!?8 ?Ns>ork*jrM_LGa 9:!x}?W4절qs& '(/K9I=/!~-PAN`i fw_rqs=+xl}ϭ]\R/c[=bw}Vר}M%E_(#Bsdc(p<Qgd_OD:7/ߎ뛟}*a-o7\?tڛ{3KO ^0!/c;Ӹ>mǥs/r3Y5dm#|n5ێiཆzu"niP8O-xZ MsdT y}ǰž޶wwj Ҟd ;}g IN7^Pw4Q~f8MrnYD9*g|wduk'}_d=ןIxTQb>hx;ӝϑB<,}ʋEaiXz!0,9f!ax@ъLQUeuGhe OQ(yt(rEߞEӪf"(|!3V)ʏ6M㒲^COд]_R E߸|֜kg R9o D_ @3*bêGf(|O Q? zzՉ۾ȇq}:b)ko<A3OӘ,y}d#ƅGx7x⌑Ȟ16ǿ(7H+ޑp8qDOa[}s<,*GbN@ODr d3~y@h9TSEL=qms0TȱĻ46EtZs~'9SʆЈ PUs)i{NrDN'ΰ=^}۫)OeWo >aʏ_4h9iDCB2ېnD-&) ^vd(QZ^2L@,S-!(Wz^va+% j [r?Bd-tLYoB955Oc(;Q>_ "* olcM_BzXw 0c/OV4v gx@%A(t0@=bl8<0rI$E]/wث S'F"R>՚ze+U0݂_i]#{o^^S.S taui+gГ)J6,I+xƎQ(zͰVH.h/M9*}X47/iGM=>Ӆ<&(R[Ξ2B3)0A5ˇr=* Fg8!2?ŷC֪ ]F.z)-@MC'B׭M8bQ^".:_g_> -a|R>X14OGjrG!iUu=/}1l:l[?O|8: ~vue;߃vh?IU"-])/=Q_," ;=7w%'GnN:g=Ҧ< !gpiV<{[OBB;8zH!>oDt }/HQ~?K,wó/P[~=ZozJA/0>946qB&LqKƽ|z :Ps+`&@f3ܿU (m"QK TN?K0D#$4I>!;ԝ?-soF}hx?..~}Z&>jSD=GxVTc꾱^FSQK3*G]Jݶ^NfرSqa6wݺ| `!?X E~ S f^߾IipK[ޟ!,n")[6RU#=0T_HLtG,G, 'Ch ߮=Jq x3dz2Aq8G@/Q!ˍZ{'^Kx0W}|ky1 _/i;|~NԖ(l?dAFI&R}﷦D>s+F !M0LC}v:?wqP1gɏ]%`{_O[/m)2QnbO@ɏ;̮C ,)C!E~{&O@rsi |:co#Ԓn!0Eޞ&IYP1xj a֞2.ĨhiQX#>6 f=={fd|6آ<̓M9k|bnþR1hF5Ej A#u?ݨ•=+j}Q?@k~~0]~Z'13НDTA$pǐ z3OHxBglH G Eex"̖j¶|@sA\Lۀ+ bhGWeOQJq&ߞC'PS6WAtЇ&=^ .+$!xJO?!.-}zj&1JQ{:uMs3{ԇp@'̐gAsSPb9jUJ'}A־j͛yGc3ՆRdĚDfzۙ2??‹/7╁;}!Ie3Z׊ރYv6RD6q.,n{8ح˧]c|Dt^ #s[< Te&/'NY-[J`| 6e‚VY)* ⿀&o^8ߎ#q>{.U^'l"/@uF­TJo"_@i3 8MmbIտo}:GǍKZʂWO)E\9M'uU?ͭXBծЏxJ" o*³QMhxvR)צ n&?',<נH\= [3Z EF^m|H!L}(X}[np{WFaps<(ږ]~UL)"D9Qa~9IԚ #$(Gt诠9 6.GTk&=X!,ha5߿G8R cXyy;VQeOAIzGxVS }f{1E2hUK]:^;?<+R} Y~ZˎL?n,[q͸u iz p>O"iLm"ѡ/AB44aAMZ9J%_<+~N8mchOqEW>ee_ѻۀx<# !Q㕿uE~}Tri?eތ,>Wxj rGbP㬱iZA&!wzs$S>mSm8TqD&LW4+1STH~dq4X`tN=X!s4(V HFW@_sb{(b+}B_@Wx`\x8~W3+xWyZ"Wm θTE@<*„'`\rWJ%z5f, b҅ 0D\tT@h=BTz W\!$(fH8&p}*:S U=="i]@Ψ}Pi}o4Wf*@NdC4n?5m'x0:O#b?.Xw〖.EwU:)=L MeTҗḊD֓݅KrKb@ƽyIXpbX>ŗ7{X*R|iC`No(y*.%!?&#D]Z\?B==$)sAƻ7nx*{j rk9ẙ=?@C}S?"ŭtc'߰Az'^ϵ"u"Gi>qY(B&c CkUdHrlƈ5uSݓU 먇K>f'cD\ D7/0Cx_`dHsͦ}ab,#︚y/}5I=+9U\Iq0\;^ oHY"iUJ?>;b@T:@d3AV dOhleIv̘"c&9*9!Ǭ@8dxG/}>7W';ƒ*طΩ.[o-WI0[~KLAZ WoMb+\s+Q٩W><2)m-N )|J>)OW(L.o_پJ8Y@`̻̯:hɃ f_4~ꌫ|Z;ZJMk9c|/ $@5_GT'WvbK>Q{#ɍhԲ_E+J Tr 礰&,F>zzUqO߱"’T§x+f:X E8zX/h]絓G2VsXRȋ\*ȷrFۧ/ď y}dOqXv+YOMJA/?G.J:MsݾH:SW@JC?'X,qffA~"|K=ƝCac٥O/*{\);}YM:rWpn*^7hǼ'ܳĝ #M7^h7 c<=`GNN5|xTt]0C}x[e?LkU'M{UDlm&Fz#]hkt5 sF^%{I@q /ZoA}h(sy"w2Wf1[g EQy _{%}!N?gIO:ȴ:v̒ Ү Zܚ+R+qird `Ei|,?TV4g4=RbB62jG< X_n!d GOfUV97kC_&tvkg:jv"r{炦LNVCx k"zZK3*l^qXbQooXq:M1?PWQ{ꦆa&:=G& (C:xb^P꜂(\rS|X&CPTw@}t6,F%'OX9Ix:`HYYZōe&)Uf=< s[1mYnhPc={} OE;2*PsU74O\p0;"cQbPR3 x™=O+z܃4l5S.%/45v-PH?iu*Du7,3zP_x-gfO3"2$ 뱀"NB#m& w7০]vl-)cߞ0KZ|Uq0dW|X@rڽ%)A`oz)0 !g K D`4~) HmֻjJ_iZ#]5´un;OC:ƗgIXܿ֨dw>azN+(iM0?F ceOQ Re_&4 LT8_pʥ4"k-0[Гu)['E6՛zA.hEx4zk=yY*z}ɅiFqܹe|k5x,X ޲HOT_2KǥBP<j˞>rhVK뗧7T)ߞr`K8h"2 2Zhuɾ -P%{/D{ CSN8guhM3@޵x#uZ6F(W*ݧa?{7Q!#PK_7Wvj?Occ 2)zƹ;-ZtiMlhwX9Ό*Tgu=o\w_]^?)(Ґ=ެ9IaS9<΂%Ͽy#{+턏@o9g:M  u|zmfXa( n+g$G0Bч.Z rc2{S^`Dc}F=?6yI9YPczDU VCe@BU61D蛞&C, Ru|CPK$3de1]GPxM㑟Q{X7}fx02{_53Oeh'yIH 6͡4Sf^BCr**]8"J7 |c*=LOOB\$ϨS'^Bq6| cy#_ i)VS}8y0SmNJR%ɉ 7bz層)ҜSh-)AuMp 3bupL{z Oxf,/~tq z!YQ%iۀi{L*+4ď)U, ā|킏9 1$~än|g^j;X=mf{u֤'v@!7PaFKð.7oJQ xDStό'su$wĒ\woE}8?򆌑reg?F^߁0kh_#LGHa )pJZ[_ Rdl*KS45t/MwMhs'St%=K4`%_iUu/vhGE'!|WL%e  M.AګhqBVQ, Kv>R[ZäʹWr| 4J [y m>exՂ#B"-@}kW# h5^% "e^omrnX晸ք+GiyOW j̶l2*%>=\3q,Jv Q "Rt=OB~!B=hb7H.E.6Zל8t_+,SObO5qc4Q3&8Lnd4G[<L,B ~qkGg0\(_ p-1bsRݷ}Xin7~[>~U=!f&37k/PӣC?O bԇ_]3$VGܱU#}d:+]~"4zGblN_}G| A+vOp\'-}z&I9A6gtz'<{'dҾ`^" 5/f[ 8Lx%aHȬvy>_:P`aԠ"_'҅u: Al ӓn& k0g&*3*+toj-LI1lWm]Ft?_;:zb{Wm{21_85Z1?}zٞlo@:\Y,yoszUx}M!b',<_?۽gOgO y{⚃z6>ݏx(M`_gPzw猺Qs3 PO|ލ#l \<4Oy3eNo{33-}$R:pJ'<ҽ;'{ ACxOG3J\Re%ARTD Y֞Ё.3yoK>/l Qׅ9SV{7JuU*(@O"j?bҞ"* -sw;t*/}O~& ˫9G.``vR b3?y'uS!sDw{X+) $@Kznw}*x.Gμ=*p $Rj)+25pB B|Cf:;g~ygߘ5höWoǞ)sf/8b"I&x=iMU["UC~{?'?M%kIT诬}Bsg ejdL͵5~tͿ^ܭ."e_xfPg<l &!,V:~k!>dr(wSOlgs [@&p& nᧉnq$y@&̇159d_D#ϝه"* ـBQk? A*=Hrt\3=|O;uwG /?uaR]NLD!DZߣĹ?~z-(*PN;Q;Hm<4quw!o l輟_;o"^U3Nw={N4=nwxFuEU|$7g_Dq?<`!0"T}؄L?8[f g$& Bs?<(響uDPTpIVs4$?+4V=)T F+Ydp)&T}%UUR~e'romG\g⟟2{>'wSfWgTz3y7>'Q_P8&N__]z}`[8pWjv?'o?9?w&&ɮxvƮa>Lհ59e}K1/)0A7}Kf\1{F<w?e?ɩi~JݞOqIE?uO+}ϻ}>=x'_2FUo4/lՇ+7^J+ror?>#TRsN\3K| y^9 *iXq{kVAmb?SXwD D_ntJ]oy%}mJR xgm}w24"A Pp[:ʒ'`}bxJN7TH~,Peۭ^?ҾLvvڱOz磆+O)rt^>"h"9^) բ}TDJDI?| KK=_G[2B;ߒii).:qU= \x&Uҍt4.evct$]m#Y2;t9})ak ġ)I}α‘X.}> {wW{;WTQj1׿G\=,yE}\wLx{Ϣ@B4߶L|h]ӶC+uU~g[9Won ;J~.^.w=&2ߏ`'ګHG+7Ծdzؐ;'2*}}:3oRu& Oo sB$}8͛y虱NԙbraʡJ~w)~/Dzvv5ʢ|RĂpm2*w$_OʜO}.~I$uc9^ =]?/,W_/GWC>x|PVbq #$$U'Z7-`z\Ԗ>Tr'JGRp}LOL pon28o .cN"<%*0-ǠkYS5/aޛO,UWzy dD>2sPA",!^pg!glz&Jxd)4R5dOSw:~^oY#pͧJ1g>_A~4 u34ix^ckJh7,:[ԄG|v([>ts)ޜ9zsm/Ffb߈rꕟ=xBƝ1 p5 3 L? oZ&9,_|}jC}c&>G Ϙ_Ʋw1J~w/ֳ!ЄšSHI쩇W_:z_/9?|_|?%_McX=?U8 ?u@p0^}mw|D? ;zhbHLs?c'S9,6m/Sq7{<]Se-̥Cs {}&1(P>X<-';M#JKWhYj翀V6АK󇢐d(0w_.%[Vv(UzY?-MQ:- /ٳz23t>u!_z'>m /6:2e#{VI7z<-Y/$:~ /oOΘĭD{ZB #PG v;u;?=N8̊DZ@"bҨeJH'Ǐ%I.?D mAJζ?cȠS9$lRd~YYڴ j` #;If.+}*- 㟫$D$LWׯ+\Cg?^4)(/+ :NT+XIo[-Proş<ce.5)eXLҪ)x2#L_]NFr|C]A= :o?7/~x$=wP, [V{k*N9?[7-&L=@AasbsK}/ΕP $b 2i_keynHF{iQls|exs ĭoל1 9>-ߘza.HgW/os?$~贻bX9}}f{ݾTQ.\U̷_H{{Sײ>P랉>Zw϶!IeDΗCm×{ӮsS>i?Sl#1'm<7T?&z?LUɰ|%NT"o#/,OuC~爴CT(`:oڦ1uI*މ熤i#¹9 b!D¢dԭ*&[$Wî߷} dp>}f lmȁ\8xSJVv(w=̔)!բvJּm3eNpX)%R{EpS:&bU,!rӡ_Т7LB`j[wh@jRm3Ѐ|rTsp@3~'@ YQtsDX45j9e(H'5N6tQ ÿYE=!\(,(F3_$Ӧ_~-PWA=w'@4H*G{RIOFvȋgzxEeȪ,|u`$3$@`tꎤl~' õ2pL7u#S<~-P00;.86wΠtF.=>\ ԙ,1B#Hi=ࡱ;qx>v[!ؾW/{[ڧNpcmxpMdWXOeAlx\_; Q`NyhK]#Ew{H޾9"}k.oiقCjg@w|+C6{o~O_#w ˭=)|V#<^?;?)?}#ʎCȩ{!&c>q/<~?<)~iJu~N?H#i/}?Ճ=A{y~K+}oϩ1zsĻ }W4H+ PwҍwgCoFwtᒎ0D# hvq~ZGeO{0P >}mW3/iǶB9 - dU.ckSX$VO**B@8a7<-PhuU|h&(Kqyz->{QC705 X<8kُ$paH}x/}$yC<]!Ք)UQ; V?ۍ積LvB{s9 1LLuvVVzșլ$|FKBo~J{ QД8՚vX.]wDlE[<įk,0UI;qo..A\D(w氨ЕpƬ<4/5R^ D1ҏ ƜA;jH4GΤE15xZ5QJPs˪n Čc樋h^$coB0 ]e4/ EowSwT%~yILOd;;-Mܷ!}m|[ a`p+0ml_*MFսPaiI!' X_2pT]Byg[=*AT0zO4Ѧ[Ifh^ROnT nN^zC?O~aQMӤ=@Sc] xR rٻtr7 ͯ &6oO1Q契"7\|>w܇vh%i`busg ":%iq]\=Z4KѸ|*\?}9z=VvL}_F߿I#JR9"-?aG˼y_/SgyS[_r*ߡto<\*sB%1њ|$#2 __UN\GĮ1I˲oh(1~(>,({k<@}~W,շ l{$?zwC|=~!èuF# K^~R/ő3fϝJ(U@'}-4 qtY慟+oGGگAgHxFoũMfFû')OVs(,o a}6܇'Xm*񀟀X/&g(n~)ٟO4?;3-+g4,bb- YrڅZ3LRp -dJQuXVj ] DɶA#U߹_4A}Үcu>xDt_ )R(~?<+x9LMń֬{m:-ͼ_ HA(Fk㤪hZs^爠MC҅L_1DhګH7r`M=L^ٿJq3R[`P`CsEoqth{QΔ 6\}OzɅ B}(>'Շ]~xjպqi;;6uRꟇ@wgSRAۮ__ʑ83/3(/w 1ceH8|S*kuC/yjc+]Έ/0l`.{#aQmotDjJΌp/x"?S4DXz{=*l.?8zf-7 {W|QS2HQ)Gx>MȵT=&з $pz{ج_Z:cTNfsC0[x2~dAүy&o"{yM2/N3=]ەM;ץ?5NWXDaY;_S缾^V;ʃ>QO }}AW e30V⨬[fx$aLv -=*!\άX'6ޅݷ`'k 4j@0+՚̩.x{-$5<xy=bLOիjN|i_gin{_jPM?j.?O\RZfDhhTx;i̝gg)fYy5,NVj{]ZK?=yaJ2B  g&6H~g^cbs(5Qȁ0"m:qJ{J h) ʭ)Y<(ZlFA9spD4;BMWAQ*D$EOd@:Ib|n0zJ_bVY oG1oҌLz }[JY6_ ꈪ[PzB6+,, p< g^N5+C #!rʍYP ep"G>^#s{} $ Qrm90; *=!Ǵ˹)|z]jJS?k_>.(|D`N7T8$۟ւ|TB@|Z:}DOlTȒw=2|?@hj!uCH)K J=H7})w߀:BЧWᗊ5L~ 3 _ 'YӴЊq~ԛUl`|'O' }`@0Xztu'^&e:\:,``@-߻ݞZ))ʏ~ICS2~f+E|"qNOر; v."NO sh$*Ѹ@H{w ?wݳQU5un9$<[mSh8ge);,57. 3 m~/(#. ]0<@,6+HkA䵈!ghBWGV7ν2Ֆw9:Y }(UvBzHQ q `QF?*ie*-Ck/iC(䚚JNx$%L jz.2E݊ /S:T]Bbj9ǤVJ +pRD)n2DK>UjF~gOo)/ Q' izzq5& m| 5To@őB| < d7x/rnq}t9WuVIfEU!Xsq 7BLjn}5xU6PЌx &x['BccoG!t1jdxqXt{OgSX5&SډH}Ou[^qu^? 8afd9i;s#_X$[ْ\b'>37b_L{/bMx}sjHbErP4 XlͻI"յE ӞbA}{n=!Pk7@;EϞI7CBu3X9n\8UB'h&-^lF&r3m(YaL4I$iߣWₜ2YFNsdz-%9xSRodowd^ 1jgr ܯx T)7DǍ3؏ my(*EAJ*(N 3t %EX]G`׍ SoTS/85jZM{KD{˂,9Z!H*=Z\iد6&IFyJ1Z3ÿx b$ [A<e1' l,`AqpsRމD WwI,{^ O}ǛF`v=O8,4#vm^ܚr%"$* 9|eLFHnho =̟-' /xB(ڡ.id<6JօId/9{X R .W3xv[1c)"R>M+~SU /gY7Ll=K o!V; W2HM7*q6炯(aeZ>3 CRUg)jsښ}$eظG߶~cِ& V!׈17lFU)U+)z&oڋ5]_ W :وQ2H-V(dƣqD&xYXoq=Tby4MHƲ*FJMM*ʆuW܀M2?qXPxU.TX+pSj"$$ X\:N!}֡-,_S $ {H3!V|BÂa o*ƳwhzkH<}u''"CCFxPPqMT8ZA4ͦSmsE/駁s8T=u4$3)"@T||`.5QhK90 uI;_II!ȷ`o?/-aȒ|J`7s.Ih9}'-=, ?MsT>c%3CKae0_@CbuPd 8"al ,<}H,xc 0,0ApEh?q􇬜R=vvP4 PlsR yk̅$B)m!|eW@˅q f-_yDÉat0ܿyAm]8N}K(T#@@Tbոz}A{Ϟ!LL3GɐƒL/頎ߗp+/*`>A8DtެYixB̢04R 8 &hy" |d}x/a =s'|EM7'{OܬM-7LC*&M$񀮅:FtII .f!0@AA`ɴAҸڹ!>$3Hmf_xeCdw:J<( '13s0@m[s@a`;?k bq u;C*OJ˭4= u?3Ag Xʃ}8w}+LzZD+ |kJSXv$Ad*i/=hDt>{1B/aF5h Q·fZHBhOk]/ Q-U+,-Q;5\e8% :l& eidܑeԐ=-E )0R VWI `|dÚTW8q~,2 MEF :n辆 U~=@6"HTq9:!m"_Ѩry*36߃m~b0/1ߜI D'y pY/@`n6j(*}=7hc >-naT`) YϰQt!6++}10ܭF< Q8Ov5 F(4y`_+!|X|<Dz<|1 "~ l9 EJZxCDAikM&QqOMvX=;fNk,\'ʓF> 7TOπpa(յ 훼me<F}Wߐs)yhEIDT w Jt|8yt;1b*5P!oIRQX~ly|=e=x<` nPAlSbNЯXmW 1`+YMtQ{Z]{=A?k62|4t0k}+@I\v0LZū?jŠ$M}qCA(1IQY+g|w7PY@*'ٮ}O# ].~"ƀ" wܺe$pC Fz57!F+(GI:̈{ϼm٘_@Aapx.K̉_`0I0|NDoe;|xz.L~XbDe(\IkQEYZSA80GMnk<.&GK`p{@amMLjrȏqJ A@9v~:b+ :;C,\+6|NEz9bLW5I!HVY;Uij0H!Xd7t)]raIsԉ+RsZdD؀U~Sp~(P":t 9ɅZi0;bRcAar]a:O kN@Cir4H.b4Z.rTWzp.R;P ZSa!{ a4 G>Oi_'e6 F=}>GCPY_ LqCZ=5CEy8dIO.i ċaQM  -&8[+B% XP$SJ `doOB1F?ZRBqAĚ+ PP,OۃrQT5z =T-j{A Vl=?Z h=%h ֚hDbK ώuȈoh0Dk?xM D_ 9'R]*?U!2v JGqqܚFRp;D$:Z?s#} #)|Zc}eڟF26 M}^$.@a9S,#^J=9އD"5KcB\Ԏ<$&1`9<A ݰ< FOoPV(w3& uiFe V|fԒѕE T+p|0PaD@a}'Bq6@ٲj7qԵz fInqk< ~g=S@&XT-KXz;NlJBWq'f%(Sl͂Sx)QE-Jrs cR OJd 9'/4.ݕC#(OFRPM<٧uuo舘c SՁT6 ^'̛4Ҹ7u)S{|AH+!=T,gJ<N1ilJPIiӓo5V?ig1k]ԕz_u$"i߹t&*W F@ ZFh`̉yQVsC0'<BP^/3̢"Q"!s06#ĚIGqnͿlk0[ZP ڭxF)q_NqK~h1ȷ/¯G!&*B׳0A_55OxFgPf}ZIGYt:C|ޏE3!$u7}t<(lm)JĒSHUBm![@ CߣhCOJ(+zs J&v.1ݯĵ / 'a]d1P0\L.~{Ǧ\.}t}8y+Y4ѥM/byO7n*zfN%3Ԣ/<^=^؇E m?XaN$ L ԯguZ'/}l-sTQCϘxf EyDl_~>`#z+uP$!XxL<@UDPfq1o 15Љ Of:\FdnxDԠ0Jz@u5:6o1N[G"N0g'煉T@}_TQzN#4;-cl:$3EGE}DE'?:hč}οS2TP3=w \m ~`FfF%% ߮kQB T|lbSm֧O6}:≉\: r3x?0>?Teʏ "xhD*;10^]Z6h@$ ~3/} 0kyu_a)fG`R9"4x: #m<"=!5XlhҜW3\Ij,ئ.>QJAO0CA=/[3:%>ʔ< @ v-7`jt`id H[@RQcEO|a+ dcE' e{ᬡ&ktx{*@pA |5e}@f@*#{ мz~zH,IĠ j0\"LE<U. Ek!4K=8z_^D CmYP#Kv7(` ji~ ́J_|<#H@KBSFԵ:'愞m؋A_{hh ٞ()gSŖH]?))l n%m(\zu΅0D]A=χBa[Ѧ׌uaz>" !q~*-`!R.=x1zbjIWZsּ#,( oݳ<(6 m^@pX쎎:] 0e_'qjW)_ ' 5@xsC oah H$/@" f`p̆S %xb"!n(j> F-x-аЪhI+M5E}`9 z]y/U2 [@Z$@d~J7TRh8L߾ }8yRѓ=c:EL){qb7gP닊]?T4^1bWُV1V/YQ<ݐ{sBcpQБyR#VQ-FuaD.Y.[;I_ ,0lDr'Sx*-4` ZFzQ!·xI(?2gʧ0?L+6"Fhe㏊OkDԗ{7씉 Bd0bo@H~6H ztAU,+ )"YIS+ gJZ i_H]zHPa`vyr NXO,U}_og}P8,}ǏXCE:jo|j;gi[c  Jj Fn|V#c1 HEJOεf/zHl\2:CiR6`x4;%2Wig PhD\|T$ ӭI(j= ЧbEDڧ4.ƀ$}fP-V015짐qPHOv"w󔣤:KxPvėA_OKdFy ЩS"IJ۰ ;ٺFnvۿQ7סIhtpE# dPbȹcƠ}W+8[,x"]dTMQ^yyc>||`c*H2B5^]l V2<8OB[UP`qVPnU;h" dx GH#Ě") p 955-AaF|G6xu $$5ۃ jIC4Nxp^LT%` za[eQVưϹq$ @8AVve{:ԀM&֝{Cf9߲(YʨC0c"$#]}~OoVd3> =9xN$ayբ,F_<9oYqk|i1uZ0*%3CD"P5׿R*S&N_.V@fm`h^Mȏ<ZMr4|&EX.ŎU ʜ:GBd,7վQ'؏{X[/9(g'|@R bxNT4|, h\R"$&Wھeel/ {>&N $ Y_VbZ|DIkjHHXT,<\(0YU(֊=a^قW1ՉI:@7KBIy}5T1f| A ST/D%H*?<h}"@[k{!=ChDLa}g=Mq =c 1T_LX;, !b@< }u26߃\j{6jd4}𕢰csO qlb(%S',f~RTNH8 V`[3P" x`摒u'c %9֚mA<Πhh.=Y'/hO)4;#}"26;B E-&i % *D3o,Yׯ(z,b/I Sß/~߿ tYS:۞7[|%WevՀv3Ű]m8w{(V~6xLV[uD]:tOE hGEKA8G9mz'ñL[MombTDYtٮ>T)kAv 3}p> o=|c|6}y^@l{ȉ[Jy;Ix<"ۣ~2)=!ᬭ˳Pd>__P)lhy*Lj-vLy$E ya_A 7{?%!1AQaq ?~_o}?w'\UFU?%g'x?ߔ@\);WP?j`ohHj#>쥁quῃp?=%2|> [^l@'έec_ һ/2׍N;%{XSGBOԳ}ex(Z)*yntJRo-4;L K5f(zxǁ= "V#6E$t]czThhκO{P82^OcU_ܲ8%]:V G| "!#&<58"⟂qA(yhյ=c Q.Ͳ$t(.k§GDtP/OB)t@fϜz9[!s4rF3PTQ"%mh%Y ~+FTKҌ ,o27$!CAmڔ ECD,Uu7[-?P+O*9ZX HjXç٢,:R/Dgc"Q^ 8U?X0h,A)A(Ljқgu@Ҭj6/eEa0'LPJ¥@Zpm2)cBT/>]w?wPH0$8"VW!)d|\ONeK/~&&-cd"CJ1~ }"(.$`:PM.yR p :ęxkO5(hߤ^]bh8`Veau$F;.uIh0dW!D | z6v}tZԃ1O`{\wH y!{O\(h(L Fs mm(jR-u֔}M$XzT`zP#O[B~h;95m_ۨBVe)R].&H|(%t45OC(:?.?&u$^;gJ$|wLN<`aת0?[u "q1B>!2FfY NAk*5)q>J&`<:!cl$EEb7`SA@`a*B T 0(J񂇫EӶb>4 *  VRE8%A/WM:yFNP];E Ҹ"pA*q!#%Uc@ASa*? %`1bJn-J""-R0 hCU!Nk@,hK:7H?I5;J49+!wZiGSG\ jbCEpWiFאh> 6:?A>m˜@><5  biZHU5$R D;_~{Yژ(7$92 Gv$ 2q*szutP9 ieaJY Vu>ޟdP_$NrQ( [+jze+4-T L+$ F-5M=5VVQ:"k%Y} R'FDUUө KâpM p9O d8f ˼Z֜]Tl &:$N'B,\-+8Yj|YJA)F _i `2Z }L( $ihcRࣔ~n5dW:4[.?AIO'3Ohqeu@"ft/Uh D Aol>jF7tT^~Ah#FK cۍY(ЬsL uCVFѪƃ‘\oC>/#AWtB3b!=Pg\t"&'TQR:'R__3 } d޷hQt!%5kHoY( \XFTTlCsI4$_(.E#?"dyEҨ7kAX5𒀞*u2,)ʢj'Wmq<`Mő5I 0PEin|X߇bP, NQڕ!PvB7 bN )UlI@BE​/2qp:*vZ(iEEވZSɵӖ^0U +P]$t8GƀX.D҈Vr^H{(BQUIʌ_pegeBAU9hÏvq+_%OtN1Eia-9Vz p{sW58F alFrpz^© ҺA[G-2 FMtWuK&@>qtUp'buӢxG@kc _aÀM80W@'?X KOkE\LYDї"4C2v6"樼WcagrOZ1]c_Q9`rSn 1, 4'\j>\t"`-RLWIpM.^u "@=CD.w*qUЉ2YY<,4YVb hxB(A!oC J &$%BMeE 0Aߊ'a~&u1C.|S`Xn`J:,H_j-&`lA%1l8 n&HP~Z D)GDQ+84:/s Zr#4 O> % m<6SkD;`Y >2)Y^@h#><XӨWj$tLS8SIWXRJ1o4-pdw!DB} PL} B4lXXq:1 6VM5DK kȊn:I!J@T* ES1T4c, HD#1HJū~O.J!ͱ|/%g0ii S!&%4` u#p},XBR?XhkibJ؟4H2VV\O4AMgk6Qp`R>5Pà.ѽ)ƘWP&#i騨T͚óp̭\}:205R PZGOA~620ǀLXI)5E"VĀR?TU 87 mm[âa/|\iL Zlc$j&1Db>H'Ѭ`,EeTқ`YaAHLuQ"L|8a HeGv~@tAj /骎 Q J,?k57? ?|lm%{P]%Tzj+Xҙ"h3F AJaޓ_B}i<4Ϭ͖*7hX2Z[`Y@COGՒ4e(-zHH+b7:0ڣeqK ud @aD8(L|_EIK 4J(a@?L&~hVD N=PC-cFM*2C)cL!H@XcT$>Qa.@"b>ZT !X*e"BPެ:Q_-(`LG^jLPMjEr.l"$*Lh R!CD`IlR6Bîu:+$nLGjU-2S&ufQUy|L@J-/Š 0D$2: PSdPѪ^=HI?#!U $UmB %/ DH+A@j"$ Ba 'T9E(S(DQ NnqeUhF 4ЊBJ@ ash<&R4ƪ"01T "Q@!@+F LT'A!b5@$RE/9 @R6 !Q$6@~بZ%"BS8v"B<.Џx&'ꑣ@5'uyuNҋ,"bBȒ2$b5 FPS 10'2 5(Fcnѱ6P@R` 84Q4J15S 3IUƌ\5'6A4UCZf#z \t6jY֫ %lhWJ' |3TĹN?\G({ fOĭO IAN A$#PK!"֫MFȪ郕@ ^C(bX+5WJa^ðhv.H%Yk05^{ClߡGLAE *z@ԃ@%:^H]T"F#̎@HjZ_;&%@%^9 (jKr]"?UP(.* Z?LpC J]>XX?$&Eca<=h.))zTjb'3[P |o H8"f1*`~@v0 ȃKQ+wOE­2>.N-uz*WB".ZT[Uc0bt|#Ai"A@h(-[DžZ6Y 8`$jJ*XFgs& EB{S/Z^( LS:::4ʘ@A{Wh4* BpӮ>?I!"DlJ@2wJf@dQœD"3>>(Ap&|Z^b`ѻAyA3bC53σ&"Z*872]O(ѐ B@?}e$*?j"*Jjvj(X0 _ *hx(DQXH@Ɩ| 0zh)~#* @̥Ph~}DDEU|1?5lV=8EDB%ҐR*j1bz@%QSE, `@;@+PjPTH#tBeOP!mH`Q.J 1}7TB1tU5D@Ap F>h ꁉ&QX)9`BE U`.lkV 5F34#HD'R\Az(!74VM i@ "/2b-aCnEjv`(YW45|!쪊 (A`HMC%!G0E!\ XDmP@@҉0^$m @ (j QcQ?S4l0%dGj@[+Aŀ@@2!G2xˡi("DӲ&!BQòP׆وY*'6>%qH`J Zt@`נ $i!K1uͲ'E0  2SÈ(-+%(2RjЂX/SP F@XEC]*1POw6Qu(g F" F-_(CNu\BWSAZMGeiDH0rjZ^H!@B.9:566p+@"+9M*ˊѫq5 bM8wd*H~fZ QUgvP @0>1*^9 )C!0hR%% E`ED+˥+.|ChF68Ҵ!pQ %Yl['9Tˆ_ fa#"a8F@nWC": GMF2UAT4s`+'yh) AKA( 2# \4b}xj =AZuj$hkq*< 諛P pu|ʣh z0nkDqа@MiX@P%5?R lC* "ǘ5P ;U8tX(V@>NC UT$JS0]ѡSr !ptV*`M 5 RÒ( Q8h>j8QQJ.%WX*"kFM p|$Ҩ*~cAAXWD=؉Uh uu :hAoJ A1S ,R~J (<d)J| @ъUuD A)};L +A"`eTA4`!T#= $WZ QRS| S"Q*iSS 6! I2( 4}_Q[R2VHJb?]/3?x(Xt0 PE_SQUr+lŠ HAk*Z%(/ @$j:Q\  5AP}1.gR =aATbCDdd}Anh?S JtP'TpAJړTI4R+*z$jR -VOPU*F!0Dc8^ Fmi BphuK曙B iNP",L*/)D-c,%<FV5yEUbr&X6$5>wb0bCNP: 'P%/$߱bĨALlw]*cҚ ("Έ K@~ 5H$vJr I< IlG {'Ӹ"@pvÈ$F#h+^PVШ:2T \HB@Ufi3i!tU s @YC VS?7ѐ$e,U %!vڐ.0TQzUQxAD# "PxHN D-ryjDT l-pBȈ`@A+B -/'cXT‡J1[1):fPNI"H$ p Q Wmg(px- \@$F?A*԰F#򡁾`im; b7-GU& e*He0.jZ$DB (Djh|Jߴw TE .\'L%~ˌ4 GB(;& bR0" X*Zc.G@ "Fh3P~%k&CjԵ2(0 l q)QTŠiᆳ,1O:H%& 4,LD0 0 R |paX:CVH*5 #@<6)fC * lP~WmM%МP$/Ƞ՚ A-LO*t]0< R>1US#!pBa+b.jQ1p+\ [dB (1HR@܌(0Ȋh%)(<2 ahȉ_,"@<.W@ԭ 2`z[B"1pc x#'ę@N_J@QPgrh d X0XweR"e(d*B+LN?[I' -R $BWD\ -āHޗB8RL`a0@$Vh,%|;"iU 1F*! @@"MB &2h]Ș]Q(jl5d9OMR$42Ph@EVc` LRRAX A aH4BqgF<E 0.HLE*o+X> Ig?ӺXPʊ.C/Pv#iT(" n"Z#ldM E`~x_v(*e Ee uvk Š$ԃJ`ie1l`"}*)4P"! +< @e0^0p)pދnj_b,wxj8*LD.{*iE:ttxZ+SQ (Վ ]! K^ `ZeT iRC DJN! z uuf}]Ro* TH :\0$k"pfZ!RDLi >(+Q&R 64\H*&t^@t "EN`◀<*i BRDumA4!g-5NrH!, %/ (E/%Ce*ycCALUM8Pw X%SHأ"Sbp)5@!b[11(QO5,X&<$}H( tt6Nf.=@p +(DB&#Pp@KAt@A":ī8OfiDBKRj!Z\9d(GJ0쵚JLkȽ!%5@ *Ł A!B`k]$$S)Œ ;A} (tGu0 8$SpSFmCy4?=רZD!(L'? 8–qRH"4BGyd` !IF`Tt!J Ay¢ )6CXH֍t+@ pCR iL`(9*`R%`ץLZ2&dP,V&A=H.LCZiAU SjbP# P,%hPC@ PX X 3FQ@8r,fmv!!@cV|Qb",۽ EPIxDfR2J⊞kz怖Y*TH|aLlبF(%AAC>Bh_4 -XR JA)۰֮(ZĎ B@ X!'Wf&} Ug1E&c!Z P)~ FP?"€u 5ZJ .]*E 2V, `FٲSNTd.-"fgT 5 })YԐA|2Mw4nх.$[rk:.p" L:B- r@$'6 `!HGbQ7d0uF:aQѥBr߀ 5瞪}T"bBiDqh!ŋb 2Le Ul Qt k MyLL r;(O0b" ꠤO/vR$ƨO"Oa@Q$LR 'T*P !VB , )(\M:`a%l./BM)‚!Z4t!G H4Ҙ > g`ob Y%%VAY`(L,FŽ'(~X4"34 B/7@ c EZ(Eb*pF8ЈmD0UX, Р!FeR!l$SSius(}b zڱa *88HDҍHJ+Efl@ZBQ k~.0mB +uG$rT0Mc(@0ޠ1VARP"9(JVRu |V"Gpv (HCJ% pHYDÕCA8Xc*P n C*1[%PDeV"GQbD#j$]%vV(O) nL1hC @]o&`A,% #S@:,C'0ф BZ@#QuYXPQ;cD x`hOANM(Mh/8"&eF(šLIbOT:$2}F*XQE]ђXCϔD+rbi@x J)~DP05aHx\ 'AP pC怴E%l kɭE< 80RP"H .R4Ē>Y2sl PTOʀE+ǎU&@[F91YX*S€nPV imQ@cK hʈ`a07*@+J04vUлPxa apcY,cօ0ݠB*(-&Tbihp( 1,F;ZT5 @ƄXMk̩RTF F1+)&E; RVUg`Hj6' (X ]R+e(Ykq)?Ep @{t}U @ Gi PT6*bD{-3P$Mɤׂ PQ`TTV& PՑV1HOZMH򡘒K9:7Ph @H<]% R"Q@l!dh *! :mJ)P.0pPx*H$y]2)1hH%P_KHIq@$XD*t̋S V`w "G֧Bd"DKWbD^PX J] TbǒR3 8D D(2>YP.E32N_CLCmB6@؀$T!Iw8& - BсAj\=0cD&j@Xp8J|"` ґiu%p( b!X ZA*0~ N@C8WXhAK@EY_IC5Eؐ PЁm;~'QD9DnPX0 H **!޼?Z? `lpD(R'S "_Aq,I k$/1ȅk Vi~-,"G0A`}PKG9 14SU@h$· $WL% uZ4 ouWQ>pf =T3PQB $FD2H !Cmkˀ_ Y2գHnDd!v+ 0=pXx*m Rbx . I #~f UC`H ['B4`triHC(ZveF(zMEM(F0F<#EtA$5lH(h hl];E:0*Df mLpu*o- {H T)9< BU @ȷ",յLe!4  0k"¦RZO#^ }t=GC $j B4%`5ô"Q+xũ5%PqI54lk= #J ~*(!j!TGPvA(KPߋ> @EP+OW&#{+Ơc% ˆ-#?<4 4j5j qK@p9N@N/Jip1Po`(HN@W A|R0zEQb6h͈<& x՘2p)T ,#m\4| (g4MQA5-#hIGSf$p [60@8~+-xiE(`:vʃ\48ue\B 2V( hj+0STZ׍P$$|A:ؐ!\xXH*BT.Z04]oai R@A>ҶZCo*DQak@.Tp ͔lxX:XZB'g#(yt%F<)/4Ѷ4 7Ѐ@Xԍ3B@p'Pt8Z p#E RS€"!@~<8T $!<AE}N,X ) \0sw )c9AIN~>C&˰  %5hڪN ( "BDzX;G 5h,ZAA@eYRT%|AA `( l|@bٱbC a'B@tRm!G%e 'E&Q!%`7ˊs:YQtJR*L=~d 4"$5@>/m YQTdchW kkHctV#)C@RZ{dR< p`b0"@Pބ ٨'FD*) [ D<#!f'W:6= 9QHd& IITP̍d @BXm[@6 ]֔fZ]N%UL>1}5ӡ%-VEA"`R):w]DŽ S"؁H6Cp52hJR冸/MtS*՘+Һ9~eP85KVy20(-43w&tqj\LI`TbZPbH2,;!W *xU4< 6+@A!U#PzrTos~A0e PNHD^CQbk R!\T.\8tڧL( (DZAT '%RL2:K`0Win4 CNB@ U `Ȟ5Q >AS, IDEAVN%UQW@@PP xsKJ( 3QD0bEM}puW^))K-d)$7B,;k@>kAr|OpJ"†+c@9` nڀ8'/8:g@ OPk85C(2[AODkG" uu %@eJ"Px]V T; k6$lJT"-`祤 s J,p:AB&#DA%ij5'TJD)AVWsbࠤPb{4BULE4շURWTHX*0{ ^(ԛ |l` +UGH;@=~ F+"`K|("Jx~BAF@2Q( !QA;TO:')eXZ膔XP CO 9h,M p ( A4V:HbQ4(FZrE 4>2d;ڀVB%(X@ʷGhJ/0 b2Uxec]g'a=-X CchR6@@SYfQHLT[bcUDB]@ U+juC`r< S!Bh@d Zj < ,T"Qs0EP 6XSPbZ[z&B x&S\*B@B]ab ЈJj)AAE+6fT J("&#N-B-һE I1\r<QVaeXڀ(Ǵ+ ! Vx\Q#P@>d\ L(r,)t&(TdC jQ:@SQAE:F@< jH@#EAS2j %Y÷g‚[EP-ɟ jSF7$964ʩr _D?Q| Tx)j.xE@XiSaиH@jUj $ΉAV~ O R U$)+E.Q(8oT hJ @EaV@yUSD!4c0)؂x̐~MVlBDH"Eѐ~`T‹2( DEdT)TBW$2~qyτ@D OTUJ& P$yS Dqfڀ+g"|:8T @Vف`>"$@(OOXH03$f.6K[l h&lFj05i+eDl| H5U*?D"<> `R[jT訔vFIJT*hRrDi*j TQ!274G’ 5BB@W$?R90j؅MH#-"P`Fam(XҘ,O<ՠ+@R)"+XE%S(@: ЀP($C0$t>!9I]J=x4OP1Z$@@nrXBD N-D "&-h ZPD(Bv%T8@D '*]+ڃ؄ vrt**ۓ$MUR I瘑"RnZ4 ]ROTMPAP*ĝ-"`S͓h0G kx Kip2 l3pF(f!(߁ C؟p0b[X4tY( jBԪ HF1,!)FpLpT|V ,"I\ +' ²a E ڞEJ]@@M 4 cP faQT,b)ٕ CQ".;_HZM"@UD]QP>`m@J)4Ff|vN2>x쪛x!PAT qu!Ty` 0`sp 5* "U)Âbeɀ/ㇱIJi1D'ouPD(-$O!A|QP'ak*<6qC)`DŹ@,C\0A&Y&Jԧ8I4TSx2ը$0"FdyNz*J#6]l-EB}- P bB|"*f*M\BH!A*`:`5"!Y hUj5m]B@0N$\H]> P4_UZ\ PH4]*aRHTD2@ S^Z, kKjHB &C 4b%F1>VX RThӗ(~ U<c07<CV2*!<߀ pp>QVij $Ebl.= D<~*Tj}d@HH+!,\f^.2.M9 ̂'tF gi0AIqJeVHb= ,Е2x UI Q A Z!)۪9oN F"Ūm @C( (U $%!coTRDF ^DRV4Մ[<E ?{dPs/03 AM(4 `+.щYD% 4c_ Epx2vpա9<̲& mA*1! 8$-DA@iX&p^ELx- =rFZ%TF8KRAD K`J1^.*\V$P;yPPU_EDiZJ *LQ2ĥ`PI&PV q_<ΈRgcU- ФHꀦQRщ'Q!тf&hz4 SŀxC,ȤԐ 8!cHEPO M1TK45(4krTJv`mhK\ZdmH1?h| p@@x1X/CdE*p`%"*@%%HRC P )pyAuW)H@ QD"UjL"۠UMdL@X@ 0LjR&hf,W $R z.5A , ?9|?t d{!0bZcYw>|TrL !FGM*2myd-Pb)f / 1~lhlM/]QTip%La VPOwH C$8ݨ @`PB:JքР#jπ#b!BT k $˳ѓ>, Py$E KH_"vH!"*47@מ$CDA-afE! \VK/% bK:.o3N_S4TeIe 2:q8Envt&JqRt5 ~ aH]6/@ЩTe[+ciA`5. xb%FDIA_KAA0) ArJYD p,um AE"PCLU4ЀE) EH%6D <b5T"ePrIb8Q:HrX2MjweBQD',LD*3Vp>ɾ4*PVfA ѐko04l(ⶀOh)Jx rаv0)%S>u*\Ä %-:RȑQPb*&i&v(aMR*v"t]ADҀ!|kdCBNٮT +&s5U -HZUu ( ӥHq $(H5c]D/YBk Ŭ)ph  Q9)^@ESPTD̺P(RPp Air0Mw' _;R P+6)D~3Db*F@ɳ#&9 >I5]8B8ť!*_$^)*P =Pq.`7@*:H)ȥN@EVxQYHS¤x_V6%-k_L;т V*TPC9}Ӥw@4E(@N. Aʂ eJ QogJDª,%0 ASH9&oaK0Q!i((@mme "+֗q~xRaP6L/ԃ' Am d 顚E4JYQ,4ÉX\M n  u;YbVI<@|#)I"Ń@`rf5$D`>, '-$N#SpРDDv Q`W@jиRpA Xf6P(4XF[􆢭Tzi *.E)AClHP &QHAhsI@ ,GHT򪩂8"&˓ f@{mm`PT^(Q#@,0(8Mb-PK\Hm (g: fg[I"i`b(! <_+ 1>z@ "0EhSRSPB 8⼦hFnJ*&/AB a)C#^ըjj&A8)5u*"jBUyL|d@BelD>JK`; ,GùP BPf7աz ] B`$)@2UvUo NhDRB|tgp:{ COY)%ńgW I@:1mM(Љ H Ph@1U=ljLF7B](l^RQL@@Т=Ct$LP%R|gTH:h ZULTP$_a;)QKA $(i5ZY#@G`ԗb h>& E蠮,mM“%h}jA, ]"EbT[Dg$P$hB6hREDƤZD+"h%UIhLk T C_>P"`I(CBAQiKMv@ S* bhSr`y´hh@Y GSj,B Az)0OTI.%dGU24HE@m'ۖ3&F1x F}!t7{xR0@5A< F*cD퀭ic @R{HIZOXX 6b !B3͑6\(X AHEB*Aܓ*brt Aia( EbBp!}E AElU=l1,cJvCȞ 7h at\Uɝ*)5~  lI5B'KD P=uEZ%*gvmPP 1D>B*XT@R [ ^),^}(\©lXbS $?a EBtug@`OH#nBꐼf!&X;NKSYyKZ)"؅ARC4E B|}eZ\N(AVtu0#J]z8n\O r M0OXT8Y5I”@-94)L UΣA $7B񜙞c)%Jubi@2i!ug4ZZYj.hHA UD#("UfIipAT p}Ũ G*@; UE@q2&D&,s:EUh&Y5x8(5iqH(Y@4hQK ҆&V@*TZ-AOvK|q HғtQtWF PSٖȳFBHDBq8zJyׄ H|( "{*¨U7=X]1JòTM9ɭPw AQJ hhE\~T#cCVZĬ(EPw Q#A BfcbT)4hc9\QĘ&@ QR }S-@xxh'*Ǒ{rNPFMAZ2%Dh i׆!DgᐩsTj0ԸD(,Dqh0"ڻKnЅ hW`OQPBxANw֮TaA|C(p=Dj£C "_8F` %r/@TS!2.()D؆^*1%`)Sj;LiDbDּ T|fk@6,_15\g4wa#N"j K >+ *PMEFӢLXh렀pFX^O  JWOȢʀLR5Ia ,z G/%[8%R4‡B:Hzbjnr@Z$|lPP%uME& P|r%Z%$ѯD8.Ÿ5K8EhRb@ 1 F$E*J*#G\Y RQh"@ ȒZ0)RhC LA! @U>0c#n 8XdUO"\0:P|0Gt#B,b=(9ABp`y6ZA簡[2=v}-!W @oj f!@ƎKy(OX ~"!(;P5 jtiKHT0B9,CN-sTc@gu8LZ,j J谪^ lH*PH舃D>`B. Cy"x wW:"QYw$0TГG`L<ZH0*q/X23YOQhUf+&Z^.]PJ pgr $J"EP5˿Tow2 "ЬB@6$`:.3 NTDE6X1!^ 4$ېS!@ %Bjу<"ɝZ K :A TCQT:\}yZ1"RThPR#E " a+[  kEr,5]GBѠS,74 x ! lVTv`DŽVlBȀKX& ,VP 6BØ"UHjyFM [h,D>Bڕ `Fq83:9H(oӖ1$+4"@qR :3 x0cUI'?EV 8+pߥhJ ~V @lT@ EpU4.Z%D !Cgm3жI}Y g7O[uQ"/xAX*P01sڌG&:`=9X(,OCC0*AA1TM HWf  XX  ˅c"Ѕ#)̆60TB<2ۆ$NK!i!XRs E6PP#E̤Fzۅ>xfDY PdG" ׄUB9P+z"@>x %V$ ۋ!e0W7G$AZ h))j0%a@* VU:VXQF "A@BEh*< @)@@ U**`!QT?Q9l7@|J |y#SXPX y,B,"CQHI#۹(Ӌd]"}Rr!*4AJO)?Ԇi)@*ѰH'ZWF`cPd>#)VAF .i`JPz6(JԂbdBE RKJDPp$ԪXO(bVD]]iC`MS@RMpd**tPxi5$XA kD]M#4j5ȐYHQ6 %Cj?Q;'KR cmj&Pj4*, 6@׭~=T3xk]hy" `@ՈN# ѩO-t ()UYeJ@ ! Xg-PD;{RtF" QQ& y=J@ p& %(0ܢhဇ0AQZ᳚VkR67, Ez,jbjDtL.sُ?AGȆ9tR04"-;MG8|(@ It+? C" JES3+DT`I@ X#/`D cG9b Fs CkIZ5PPp7%8J/jånLLwwfs@2ʌ`],QB΃ưK=-!5pSjxAҮlE ]$P5Zu#ɻ !M`RBLEAM'^. (9hh 0rdPYE@giQC("@ nU!dR0X4DEׁ`bQhOq6fVҌq(1,}#%"EDz*hTUXA(0LbSSV܉@-GȲeMOxH6/ndNLi rd b'U6YVnvP AcYPAnjV"-Ao%M*-!# @QeAM+caA3 p##8l,H0Z[BF@B8 E#eD k "Íe)@*"d) }ViWH=-Zh(@CP4؀e%=$%A =LHI$HFPՃ%hs a\J[4p-Fe^!AP-UHq'[:V41@腴~60TlpAF@?@ WT-V*ŀ)@%0[2.Lʆ"2"0ՄDH~ODM2 SC_" h'UWtQᴉA~_])BC#z DiR5mNHD蠹 z@ SᏁih2-x ,"SB, )pS#n `!@d#Hz jfA_XA*:(Ӑ),CAC]CQq4HZ<2Ԝ rU:tIE,8(JOF  `S̈X* (%x ^(ɗ0j0Դn'f|"kDRdP~"oDєL261l EBX(f"b8J!|#.9nmR9ٿ fA8EJX/pf (V1Ec "-3:R,J@n'AJW! .iPӦA@8PCFN栁D<(v8!vԬJ4W&i"kDl񑄤ÁrP CPX.+(b x[ )S @@$CI)M W e'؄T=\ *,YQi [Њ'ttTꀠ:I-4ZGL'ά1R tE3Hڈ_R,:Q!4`r!jɁ@E`: $JWDt"GEmNpZ\Zed"X CεKeC?C@Jd-: ǏRPDA1(*bLA l!tt85 1D*!EÈ)*` ,P GOp`75Pi^!*Yu怉DTfGDѿ[@%4#  >w|"H?E2ZΥ0!+IK@51ywċ$Ih"+N-Ui@^AV/>}"ү3D*EKbjs( PǷۊl -Q~9S(|ܔ +Qz(@Y *GPU`΃Ud&-yBЦ"P6+)3>QS.!V?BJڠ t5t[p b^,>NjU2Ab;X߰XQgA0@0JB dG(A0V %#ATiL|ʒZ+~H )(Df:= J38~ 5) ZA|DMP01jzB( IUb$Z[ th`/J#Yg@M 8?( il0 H:xlI- q$J\M i9!2A4df?t7T4<=:)xG)ǨJ</`4,F@JyxR #P?B(pk+15lMM8gt&(dS"`ڥfw<(Q 2JQD!ba+ l@D,sSF)PPᯣ}n(|>1j-E(2T K1R #DBJEꖐ>xijZTp?@""MBlP, AO  PڴH 0KIIU!1%,Pb?i")PVH(Hlr,, @~BNo$H xi__J 0iB\ uP)BщAB ,PSilx۰!ݠ4 x iV>` Rh*6} tj*zQuB)j5JU QZmP#'Jt6 rh% c0Pk !II ^X2b B%Th+Ju ;*62#5@uʖ֋QD@0󪐩PXѤF@Q+h UBCDXE]9[!F8>@HVh*t@~ nT`Ci%R-n0xQJ-11u qc6D B.=A)p9gOT@!UjB@yU!% S ׀gA%P$-#( *] J㽱D? цJ H8@ѣqB%0Z`$Z(ETYZ}@lk0 Ss:h ?0l^#KPZ]>UX@6(QlB L]B4obP/LF"Y%$j}@}7!R0WZ4qeCĥ B ׅth۱""FԲ4*;,E\3NqENA^V2DӔJ-$4(aF=0#  PP**PQj P)EQ:1*P6f']ru+b"(0!j)G@"k9CN|Pk4 5&` (J$ ~-Z0l>`B'~T#ZX ac0PBt_H="a&v0`i5QytBƢ UȟH ab &%V&ܾ C8"7Q*S˶*(*smCKi!^ A, E&YXRv NS(*D(/nR  BW$@3&',ЪF95 G|"~6P ҾUd&h|E)":`s'- 1 5ɅJB6n=]d*$W}RaJ Ko^!R(bUjBCTEnX o}ށX<P^ cp< VU!P@v (*jc,Vx+TmH$5JK'Oh1T l\l8' `7`LKq^Z)hQ<2||7I Zª!dPExN<d ,@ ȅb'A(EӨ}<0- gt n-h!*D3 4!XRh-68n v h#N%IPRNhR*y:BWPR., ҬEBhh(:P gzÍ^Pb*M$v"ŨG!X`+(o R$Pn Ȣ]QJBH4w&zp *LY_YDF,-*u@0|2*H! 5lENE(GAPUƏPQP@]+8$5BZ$/7F  (P$i#|2BeD`8Jt0B+X`F14W9VRl.mA,($ਭ jZ@l1x0nL`̢KARXJfӔ%E 5ؙUt! hQm)qV!TYFh*.D$xuju _GpUh2BaMDhPq*,WÄ(\gDh,05L•ER't"-9 6JDʚŵm?B< 逨 >/cR+`dTPWU ~&"* -U&%$3Y3X$kJ+ ɘh4|xLPuS|)CQrKu )uQ E`\B!m 4qQ#dS*-=8ԒNa!qQb{hPd^nj@4U]?2,Ch0F"FH@Zc)#>F#pm*l!9CrjP,` 8J!2 4͐.@ 'g@) zX"BL@X! h+{CY |h_5Rp44 XEj.T ( @@ Oůh@㑕)P@h2KGDat)W1K UZ ?j(&4jye:22 A7LjT3V QDH^Q1nu=B Er{DH%jzA Pݛ܋t Y1p""$-O0.$(i@"jR|+(VtDhǫE!P%x#-Kvud#@NL%~A`àb@~O @:&- .D|ӡ$ g- Jo@HNm T WE h3j5P1 ,B:JքHe- ,LOmih !?B‹z`D*?I!U ʚG pGSUJPN*,r ]Rn.  X-^b/(0(* h[T4?E`!,Qw*jBѨ5ɮ*qN#(b:!c-6|R@?HԾ~HCHf˄UާN F?VаRES* $ TkCX5QRqnh - %&1 4Hs@b,ZA w_@-;Ȥ@PmAB0 (PI#s.zH0&ka- H( D2f*25&%R@3EHR0`b+ƤR* a Hy5!F"u_M330MuzlT,nRZ᭣ֹz*AEhJy+IB *)ZXv^T2!zGu}@m.cSPaKz4Vņn֥ :P 0B%~֘&R aG :H.рMBp]+,D\Q5F*@$X!E8@X6NQ)b*MHu& 2PNh \Q#[(g$$ d 82$j/=4B1ʘH(Оj".!>(Ra(2)aPHb 0 F*"*8!_Imb A I#G@QH4 hT("?_x,XV<+i؊I A<y:0nilPG+Ȏԍ= 0-+P^~`8E P`%LKe `bߐ&bABGI_yf%w1@(DE(|CΡa OeXDGY2(HWi @̻'x6"U i¥.(Qn@Z誋B 5xB!ԊEUjaVn#)] [#DƋaZ4a((Tux 3aU.THD#F|ܭEL* *RVCFSd@ i-]S\K* 8MTπb C表F(Ab.EDh"q jC "*'n#H#;3 R_. o@pPc ]ȷ,@FaJ$b؊%@$"# կP@9|FI[o_e`(,hQAE `<@DI%Tc)1Wf/©F!C!,J$x~H_-nh@))"D󞕄=&AȂ-b%5Wlc STvU̇ ܈/5`A8@**4hIu OF<)7AkQʢ"MI r[ ĊJOzBϐ8|Ir Ȋc8NOn'2wƘ|4E偓BCEP?jzL6@uja4@!BPD^tс&c0?H0T NU쟞&z@'-YxL$- bt(ڎ!0AIaAr f5Z$n"=c<Zb @}L@X*#l@ P^%A&#wB@L4@ v4 k d@n?\kp#hk3BCI6 ċ )Wۉ PylA 3 7AGѡ}@# %(-%{B!M L]_[o+H(AP`%e*"RJQzrKSځ (KTE. )rpSOC`&CFl: |%) AS~ҭx M<:V j4"ŀ hF Hj_=#|lԌ6HpbAeEJ> @!tW"B)JiDmhBHUT|UU))(Q<ɝ# @P#(bA:ƩD[( RDBh4\DDP)r`J^ Q ɪZWMA"/E"!HժRB /_/J b(5 Xtu%yFROUa(-@h6 h1k)n*R.(o@ *UF^ix ]b8tGX4 @9D0W )PSUI)GF Li (|aehwoXJ,oDZcbDJy!Z@(@ Fa҂E%E௧B.zPF]M `*!Pp$f+HRz@kjI*,Rʲ) $}CU&KV ] X]%b.AYQz$ K% rXz%Q 6% Lr@K43 [`'Bւ"bkE D$KDK6BEdAW",S`(Bx(obΑP=t@wJlc0܀]32TH28!5X.O%p?t\*4j Y ,s0BhVIX*l<Sl$XHrH`ZBg0T~h*PXb(|eC26E A-=  B]@O HǙ"èDA<4,N N'@|Ƃ[G Wl5aVRCPJLTѾp*4CPj%@5+° ,jĮ`14AtaXWZ:PP 0l 귐bG\I-@ģJ!i(DQQ0eQ~'Z 4")Bh( '0RJFIP@@0B/Z8H# Zl/ SQH+j@!4=tc .U8%1U{)ZދVjTPS֦҇Eģj k 4 Vt*á"0D3(>UA"#d 7"NDRt|@U[PM 4[)@MS^d.0P+]<?DZD1u4̂a ?*[H B4URD݂Q>LuW@~5е^Abt*@{={T:UAX !*449`?*0EpJʁ܅t*8U}Q ZC " vHq Q>P[Sw׿ڈr n& AdnXX QpC> (WhDiāD4 *g+ ڠ"ը%pn}4-VR*Xu( 1CM}@'H>y#ha(;YάlZzZnL`+ؓ!=v$۱7r|g"0AJ%jP81>B :*O)R`"2;nuB 1HXM~JU ! !<33 `U 9R՗Tr"R 9c9&GάC=qh^: $t9:_tt)7C5CQP 6xxS/+S* >KT/|f S b+ 0 )J`CÔhxP>9JXWUDQ_`0_@T^A| Rak3)3KE ˡ|%j\IXE\b$ƺ@lH0eMXN!M*j IL6 h Q & mZjJ q\cr$q" +Px2mH)YgQ8d}:RaBIZlf20`rx,BJHT<|SfE6lx]f#c'2RDFtZ8~. /( mRqiho]BD ` oLþRM'PC\H!@^r"fQqSw,Q'ׂ#hZ$h r"wL@4%7ym /$Ұ2rck1Tʃ 1c=H0 bcN2GKmKyKԚ 6HamH(0f'VGm 2خG@dCj@B X`K,-6mZ-61-4]@A tVK15()*.A—F" %8& ; B`8I)"TEY#lFa,$QrI@@ CUS8O,S|A P )L\"4@ aBDT(`-F(JGp B4f8@.+>RX . *bFPNQDA*= XQ*Ɉ<4juԊ#(X^YQdB)bF<E &$HFLQ(Ki,P SjWQHK5ںE # -QTkz CߔW'ݟŷLx1c@lQUx: ؠ.!(+p _O⳿q+O@oix<^ ޓH:_o`4@E| ,4eǡ=$%W0Y"0u@2gֿ,F"`^C6JJ/RG4,ۘb4KB*4CUFlc%ԔFN$!( X@\fLtFF_B%8߃@  vDbRj 0?4xǠP0akB'E1])!T6r0+#SK#$0z!ZG 4 uJz5)ab)XIH à`Oq4&%@.,wCa:PH[`]HOo:$P$aqIE@!_GC6PJ,)*5dߤX(T#6U~aԁV3LPt~ M05+TVZS& XQLЁPKt 6R,c^9EԻ NeEX@2HZx)Ϣ&kGU~. ֢70vB#(D5kWD^ƅ,ҿ())$)T@}"A+,s`F`PϥPC ErtQB4 B JU};%#1 DfCo8e*,0fS&- B5)P@*((L@g0] qP8i2&$(H ŀz/F<[ #+!K8*q"ej(-E* pe~.f$`-+ 7g`'=$l|!d|v(!,2!QJs9} Zpߜ.o~LވʼnP@;SP B|<ҹA5 4+[E! MG t0@ 7 HA1j 2^+ ZHpCP2$miR(&9eA&TXrLlU$^ʖKr1h-`WR = 6 DZ*6j`CXUB T@=@4*GDGMZ$N Px JET)C@c=oIG(o[v MQSh[Qh U-ģ,,Z VcLAx b¥*(ª҂Q`(P2#Bx, HpR S`1:F+Cz)"PR* lبxbQdp3(W. *>IBZմb`+IiCB$Aq` FWV‚tSUbqIXRSG6y.\@EhRJk&j:~ h2ߔ8%GRn $Vju#0%mKLfG )&J2F7CNkQj|a7BG@$+}`F /+UI~|*ND/h2^(HT : 3Ƞe ^/DPYd ,@Bc Er`,J<,YC WB)0Q=R0AKrB9akE6@ A`D`H`At$ "#I`ZT|I.#wJ| ġMD p@م0u0)<u DoP`@)]ς  gv C(1 1Z)rP$Ih’H]ۀ EPih ` cCJBReBq7tBv5E:L2VՇѣK@ ZR.R@B P*rE#p0YhHlQM:tJTVSH )`D5@JUWd'@FtT/JBn=+Q+%RߪHo*UoT)*P@2U"D-EԪmİs9L눣w ]4J'N [ -jhKaf(c,Mĸ-5"U0%5 )MyJCS3/'u/+4B#I4iz+}]Ng6i(=&ϡgYm*r+!(C#5"F/L-mֺ Zz/$QiTm1!R25jd#p"#i ʫb8, XBRtH=IhND+z гF Dѵi@GJ d%Jd`\0=# `Aنْ &I*`…Pډ\a9On X+ %EQ 0/T%dvqՆ$QLJiCQN^%q4 *0{i EI*M6>>1F _D|qE$@ s `A !HPTՎJ,eg@D)_W*~K7M%O xCnH  :ZK`FAL KAv0S= P.%UQWR(:`],p14 "C2 ATvk-K4 4TH 4RDH~ "E3B (ǡQhb4Qa3_ d+B~W1,|.@ AYxR)ʅRXD;4!/Z( 5xJl D @ t@A)Nf1VqOłP3R(B($ )BA( C ВĈy6ơ!X|&t.sam  '1P@%~Qyq޼ i6>yvw@QOeyU&%sSrqPDDH⪋|b# ;âT<,n:ZU'hF,R@ְR^EGhih" (" j!zc@BHTq@bb4( 4(@NME* tYxf;)`!(J* >z"CD R įU D )`X$(+5B!| \.A. C`) xH0&^)0Q)@.&>#Hq B(PQ CDnH骰!z!Z%S 0bN1+4;:d S)jօ5,6"D^ P#_!!;H MىVy$=zv{H@!'CT"1o0gsS'Sx ILÆ  @Z([VdK~W[CX9J֠lM*'߈L*ͻj" rr=#ck=C6F5s,*RH( v1~&gdI "Y! $K%$'Jݖ.pKWHOv˒qccXF/+a 0\ 䫕ͧʼnwh%|$Ŵj@)y]gN&j 4;4Rvp%ze5gEˮ4QN13$ݧA("Ėɹ:HRItx5BPf ja!U@(嶼R!W$ `y!PLiրxRT40H@Y8"+X f_=pԎwULA .Hr* XJYQ48 (E><hV(<Φ.EFA3qB$K(),/C# $xâ@,_B4@*J *pc/p!`( =M\yTG9,,c'@6m;>CL _ hN(aH 4DA:"THVR1FpEFR'Q;nһQ:S4,Rǧ a?8 )4(DU1QAQHaUK@u~ Ģ)DKIX>*>Q4R@IT% )(~ QG4סp)XwR1Uj%-/D(ݡGB ҈   Q -;*8&҈ $BҡV#xHU(^٪,EV( B3Y#$1# p+T:ڕ)R bi:5D@SL ](T<}*qzAVJ5W;%ZۼN U/ڄpYlDUI'jPM-X4l8]"̘X@AKu.5 ~ hWצS&:o)Zh`0f4koy1h|ĩpJR_I_|*#IBI9X)7BJQ<5_Nkw!W-wqھ 7U@BG&LF%@WDGݷ l屁"46P%;F΄$$e,n4< Gp\䈀PB% [ v ҄⩼;e+cjZC ) BnmmPTCRqXH\($}!L# D #VVt>Y@8ʈ,TQha<|SȈt z @ *# @jZÁ ꄞ h@+!PZU iR#CrP4@,e~fDZfC,U,"lF*S&.l'7tMHK(Eyb (c]i(2 "Rxp/N2emLK=(pE+d6k .J(ƛ(Eq-H D@crjC1@. o$ДP@1)jAL|HFJ V~TW\.>{Ktj *%%%S4X=Ƒ/ > `}zjB T WOJd㥷Տ[_pY𕦥 ' H%A^C bA!Z?`zKRc[P/BZ(@l)m>C{ N\4_`U}_TnS Df`f-E=cN![蜞 2fk`} Q/`!I l @&hCI.k,NhLmF aNΞT P9r6:ԝ7= ]b/3*P fCborrj}#s7QA7JDx!JTCMA@%>%<8)UX=4KD7E }.Jz0hfIDş KG~e,E&|ɔ죶ഊiW "XL2hal9&%Q /EEsP.Q)xzfM-dAb$c,3C@HR.`gxOP>JL#TI@gBˬ`h6 G4 ,(}09P" u1Yr<ALѡEKPbLM.xYt%hlAHj&rj( 2t>eoTؖ&d-`լ.x _РvV=P4EZ!I/!yЁq KlE^@h)Rn'I0DVDhʤ+R+ERH*ҥ\)E1YU&P"QD@Z[uD* }Pa%P*Ji%蛒V)&v((@|IjV+V"S=aUܬڀoPap8dEkABRױGYL E2iJHHW+ -\ʥ8]. 54cXJ}|Jɚ@j{}%Hx&,-;kD:!E&B"ArfѬhsmւrX GIT0hݮ!K=߸~QJn>[Dp؊˕tQ B UA4 W q*D&80U ~ J 9Iae-=0Pi ݻ%`- QiЃ5]נG]!9:Zc%bg f H7)tB2& :)ky)>: P|5,…  /TKA*MDHʷp2<@z$TBEĚay q!PV%ZADV8,`-PnWڨ$C JUIjwh Y+/H!tH1cX̄7E8p@b3ys$+: :j̐M t^m}II'>)& ʅ ({]9zPDuk0Hw"G="1/(` IŹ G'r" L(۲TP`KYKW%pTȳ (!%E`SԱW A 32Jfc^Q~)\5R%TVe(bI#@!lN,N8Q2!JAh?F̈́(.F>H+ i2HR$T@hE.#Z2@VP@ l*c6`۪ꖟ.$f6p&RV@i[j!Z)>8WO"Rtw6*"BiN ٔ tK6[2A.Z#a%T'Jq*[I%39`]@e BĤT \#^xUb d]H6$Ul-tᭅnew2 S4PW[QB,WTbx{5Ũ\p'JΊfO9*bE#Ϙ $2۳@/Qx96ڲ6R90itQV6  #="L,qkd*7T!<Cןh4f@y;"Z7"S [9WN)&@L %*A$#.j$r" dIS%$HcؕG, ZXx͗衱Ǒ 3rp 3GB 8,&ü}oɒh ֩q!oIAt}]0ƍ9X:VLL5i[C[+HdETҟ 4/rR)pˎJGIȖ,ոձBTل*]& %.KT ȸE -m$-h6 TU!C - Cq#RD=ylW肘-}wV[<*XM/ӣ%Lzz +ƺZ(Δ2lPuq$R]#ES<9 eR,[/9u_2bb+ .yҺF.bQ$7)'#$mI~HZ4Q!B\h JjYZ`["'| D%0;QBM!f(q=U KvWm]A8Oƙ%Nbf-,*Z"O K' !x\dY-h&ċhxSqR:̏0AoH"yԓWr u4%\1P#Ł[dڦwHAp(˜1+pfPT9 \xJG*Z칎QT"lH9 4@HP|fIQT@pcu9Q.}kJ jCu aR6d%xLy;u$W !G#gS kTlZ j|)%Aǹb"z|;"_MϊZn+2dSЇ r@%< C +ҲkQW&P/IPj!q4o!Jz!gR6'U#v-'nQ<ݮÍUĥ"i*X8ErI. *u20z^vG"&U''IIeDwx 3EQ[0>m-%#f kd ^A;p< fKewhA">hY 1 A*T,G4 }"iBS ]EeZ"3@EA+ӈ}ә ,Q^.Ъ`5``1~P:o&z L#L2@^Q*DʘșC-.&AdTA(NVF>/qdP 8&şLJ f`A'$0 J X#@@mj,L̥ 2fC~@w#-Oe }@* H y(\jk4̐XHj>`qb:,cNމQba\4N6N߈$\ϗI@<.V}mNk&њ9Zt|>zPdX{e *hviIX5 'c Q'eŘxۺ4t4H;+dLH;mv"^̊Moj5)IۃT9mS2{6E@缩h MdU i- BLp e 7Lh`P/<v0T`ZD@$'^*aH1 [ QX; Pp~+-Yp8jˣ!f2F0y$  @D@)S #,]j-Z*fwNSQuCzͺ(TiQEt_:tMpOtJ<\{CBtrB@m e ekBrYEb#,Lh! =SIE'RQK+X$ԃ / [4Y}R{aԭz*?#ىA @1@,xC;j`iTU))PDȕ)PY"pE}Q*,}l<*[ZZUyj)ʹA}ܖP4!GWfI eڴaaD+bDm 1 S V-4a>8(O`-X pn0<< "L$^/e|$.2*<]6mKN@D: XR ЊUZZ_: ֌"5qQh%H" D4PjtD5VuRJ%qe*!hAQhviۖ .8(5;8G8$vB-@.cyJ! N&dymP+Hb]q*_4D6%wBP!jX+h<@@(+IipB`aݮ  V]@b[ځN캎z3)$Uf6=FD! ZkңFWZASGVD0;5Hbr ez&ěhD5,>\HzD%B$B*ȢiU@)L J-B܅y`0\DJ2Hp 8 fb,JCt}2%/PGð dI*Jpu˱MGa*HXC L-հ (`+z1 p"9B cQH`x# "+TI> $K,LRY Zh&ӡ$ZM1W7 miej@$ j? APK 84$'PF U=_!(@:(#h]u",a ,$uZ(ZDś"OqCfj ab 7 t3C7P} &LJ"ڊbS3$P!@EDy MkUx%۴KxWp>€ԼJ-\=5Be/ O5lHI6"G}RGԕjP.#,#4Iط61 HRh^ i"C| =qEGOv )joDtȀ1l# "ZʐXD *< gLKEuWOoxն筻8(E+>{K4@ogDְ5?"؈aXƏR SHΤJ!"t ńj2 5 <&ڨT0hQ;D!g{B(PM Ղ$ z*>B X_"H9XߑkGdr`ȓGHVVI11(BI[Y\!j1%A j %l]R3V`"XTF>w)lEkb@0Zm6H%8 g@1Tg 1ltB]Aщ7?R pd!  쫤"­ KR -4mLC0!1|P+Z,h4~- D7;lS➈X6K^F]@Ȥ*d6CnbU^8̢@'v)/3 AX6"SH#ƩuCHc@bhzoC2cO7F3& S!Ӌ$!L5,$ o @}JqkwK|$Z@+Fs)= ;rQP k&Bt:( a (Kc\BHՈܜXvf cXcզK$ X"Q/c>&/iT&k1ii O"atUp( L`I0 <ѝ?.Ր" * Ao3عb#3гvX&+љH[Ba# +艪7H\q^c`yょ֔DsjLke A=FA0x "Q+d Yz )Ɠ Yf=yHMvA&'BR(mIDpZQlؕHN]X@d֊\z6 *(B xw*4 ֳ49@ Hhp;́rS/l <` I*xT[5aᔂ,Tn欒V# JhKIB恖"<(mzn8 c IiQ`"7 [:(v(")[zR y Aъ%PcaGpn9B7:0|T l|3|B ӿhAn ln*QrJ{H0x((2EJOcp4 $da,Dx$h#( Ht C\\=jwT,"GĘ阇LD(;Ѯ,F'< gJ<D 6[̍0 rQl`œm e aQFF &[K@ITF7[0-h#bd"-(6q]#<m  ȤY3/.ekW<¨!c9 At-醼rBfiRPZ¾&FGgԒFE&C*C*!B4L Pyʈ(8-,%>_P 6WܐJHL)_+0Y`^/@5 9 Tޞq@8X%D! KJ\1Ft_ -o0;5(HX KQ\gu5 f\|@hI(O H \ˤ3}"#xhUq=S頨,E)-?nJ`JŸ=Uah*h7N*!KQE|GX;B[سIHQ!@ AWҨC %NkW@ Yg!IЂ}L&">B %5)Q)2L M#˙РͣT#ė<.mJ'L>ɝ-1D1F$!H%񨯄A(sB /5G "0TO?ТP @$$}I>@M h[1".A0(Չ`|S 'zX0e P$VW+D yME;J eHi@twT0!.vPK`ь\Fh*[Ӳ@2 PMC*R4+J}Xt_Ur@1֬P|((2_+DOH@кjV`ć "nf;mxZ .5H΢6j"BIЊb*p"iA҇ "*, {d˅Ja -e@ 0#KO= j܄I d (앓bh7VP6Z9ULS4mFt4>%DxC|  CѴڀMq$<.24 IhV@@DH* nIPJ#e`ּ$(Bm%'2GV[Sep "KD誄aSl/HASTȴnRb*xG0aZ0WOZZCm*:VBGLɅՂ$3@3ipKuSr42.$Bv4'ĢuUEL0*-ʛիU#L%H-dڑ2ih`eGwWZJSC[8!cՂ cF@-#$l.$UX#[AjUXM-Z ={bšp /` p+ 7(F-% ό`H.D>,BrP =^PPЕl-*X 8 .Ѱ=|o(EPD#{$)a v'([U3!MU X"$Lu\> ҀK"4g28|A&;\8 ˛h *)QX))!O]8.vbP´0;[Eok aH V@L*s鷻#Fp#e4ڊg I嘫о{JAh} [ȘU_nme\x&5[MĉNIA*і-Vql2i)%O%!JQ@BD@ 4x,z @`Հs)(jB !2)@c,4EU5EbBIoѱ(5Cl -;uvQ"ТJ!~"P[A)\AT* Jbf\;&Te%>A ,P(W!ZB,qa-fxRPQPo5[%RasЊD(GCJ>ǕkI#R2@"}-{b*^NTRy* ZO L}~XRV! O`P4 Y !D h"bXMh0!4"d~8=#Guw\$ D F] J!&ZcB<0($1D XSB0ЯX ,Pи E݌#Z-xK{ |~ OTc 4rIי',BT^WPpԽM9k+l'հW(&^ O) ؉I44\{YLR-&0e#g"3BFQ1JH^ІA߱!b^ b|} V,$PJNζ!i 2O>ɻ{<9P~I$Z1& *G&VR.-5lD*jUcVeB] %#llX˲n34ڿ)Y,܈%pLДDғy?M3SA(>Yկ@:5r 8c K%g Dӂ88 L¢=kAD7ĂM؉TʞfY7"pV2P*x(,!J Hdr-C!a)d,) a.d31|DU=)ı4BTSiH;)A&]^sC znFܵ'Tg hryD"Z4PT!P$&5`T B+ i @G*) nV V@5! 5@XM@D]؆&vB})J> cа$_P ߁@a= OtRIC@ &2."]p|`WD$AS"i>)j_ `I-ҡ(QZ RPp ( cۉ!& BR{44xE@T:Fw$IFWr%TUJg%RU"!H[O =.CZjc@`o`D@ :eP*!qZ+P0|5$*1"pq &|qpXTšqDZ@A&@@~rіWSR+Ty0ZGZ$h5 rX@0Z*l`;(2C_t{q-".`>Ac@56( 4 DDOT">V(e$Ӏ$IBAT2aum|{F)B-FU 70/tEA_<# lJb(dCtBLc*/Vln0Ֆ#D4j q,BcUi a'B_;liP10 RXF J-JjZL:%ηB4O<FN<$'! HA?W{yTꐡs@QדQʷUZ{-_Ouή# mT; =XIKxIP4[[#zTRƾŘ@%"!`!K ;vU*@<?зR'Pu/EZ+D ,P>D 3YEqhi2tWLU`/)ʖdymGvt9(|jBASgH_J@H^>ͮTLU PDvd rh h:nb K|o]UOx`|F KQ0j?E~nLL_lc1)_Ov`D$ 2oTAf7@XJ" tNX HA"aF@vFA(ƧPe:0Z-BU!Q ѡaOJ | G6A V{"DZ%H/;9FA nJ}!ea T \ TC& Y)nnZHYD4x8Py9M':J(!X&ʬ G H=&_k!j/jPYj( jqE<=2Q[Mqiкe01L"T Mulo047M Dèt"l! ,^$P@HUXUI0$$^fIHfI^ yK!5 D&nY󝊛 a( /&텒A9EaYDڤ>ҁ` -'h)'JGJ>.4 !I3 "{ ^'סG@F:h,0T.Ҭ>DJ  3 1Z eO&!<"нH*$^Fh t %^hG+6AP03ZS) `6euRz$#aIE !46>%AۍǃJR  5#@ GEc^ L#[#["Zj%N*z4n#5c$Qx}QN F(rżFvy$\ꙴ.,0F_$ET$Zo$== [F-LWf菉XlbĔ|0jYzf r]:Dy):lMEPORC0٨3JrpHSLR[>K0\"s'024A0"E#[ BzPAVaBjt! KDB֡@{XY"2vy2NB&IB )A_7CPB<)? XO(JeQ5߉BS@l@1Ɋe (/D)7ZKFzd<>C^Yoxk]k ިGp&>"cTC9T@h|¸17kiWa s z@t'CHuC7QEhcP0X UX<2hQ4Je3PjffHi`JP7 DOH#H"RiV x@ Mҩ( ڹ41&h'DTe([VٗG\BH N\dYʭ"ǜ;gc]EpaPB+ KJSn gfKTZ"l i Bh"(d =jTxP c R2AD5U>)//!)8Q[p-*;<0^f(Fh|(4$)t e0FgUVX JPf<!* cz㽳I tjOdG 9 ^jMGaΠƆ*3Fx Ry`b\DtP/(ZP\}vE w4.#6ETTPM^C%C~b) 0( UQ2A%((VΟ- $F1E˳)ȓT~T`4i@A~ZIE;IмL3v O&8 ~ Ld:Xhʥ̈(:L.L[QWGE$3D{?lIg;X#Gh ɬO)כ=Fn *ihpwJ0A(< :j\RJyI T Caق'P5%RKѰ!g-cm9  H=> F[P6(KaMbQE<2xþ=( ):FR2k T A''!" EAjUR'B@6!ܱR$ iVJJRX. Geqǎ^Ğxd~"$8 P"!RS, 3 YTi,Z#ƷvprG #0zHϩq,cS]GP="qiR]Ma W#@# ";40A" zRp,-Zf'Ljc@ xCThEZyN &$H4*}v5Rt}! pϠ…s@K=lv |8C?PXOhJvc^x/m-U9!O1}~_o. ֲh%X FT7wPGD_/: Z"yUN PoQx)_ "e>hqn-Hh/7e0 moA>@MzIB,:8+-!t I$0-ʼӼP:!oIXE0b¼ (hlV[C!?UIprꦑ_)BBDP҉*aE HDd ƶ8lj& 44x@b:*!Ltx, 5\Q+ |!38,T)- T^P^ aFƹ} 0d/#7 hAdz\H! %Lt´~s҃#U1x@")Ik襛@XT0?dJ+@>NPqbuF $Em([T`|dsW@v| +) +M %W@ `ty? KDYj}p c%&Ԃxȋ(B!^q%0Aא`/\XƖHvPְƂOQ;SK4"h Q-Hm B,Ť!T&ߡ& 9$I08H' @a!gH'uU(Lģ J2edr6fQ5 )?r|A@!+R,^t- Cm%sM!I DВ@T D^j"H@(>!6UU`,BHz)4dE6EBeK&/jA@ЕGAj,Ȑ ?֬?4s=-B|f (vL2XZ4W`u}",hDԨݹ "[|#"Z !!=JR#b;(m(X*  ᫒&ծn$F^I3$0^ThrtTAL!k_zhz8N(,[7BU$ mͅa_Q"QgD1>PQ(Š} M8!PTJ#.ץ(Q\F.#R57 (5~ Hd0ꪒ];5HV&UWFJ*n!`*}ԏB47B"J=2bDB ԒYA=&0&6FDhAA6%=T# < )yHAtCX8T:b@T@RbpCV邴f($/#W'HrfƮsvv6nԂSs$@jxK(!KTYJ)2x)$ҐJ*-*G\4j$;bD\DiHy%Jz@kvu3@ ɩĀ6P@ƭp*FG,THVTT^" B@TmYEy SX "@Pg8Li:3{eE,ܺȵv8$B|9҄೻Mᚓ+Ȅ; 4fG79BYx pec Aa_*%f#8ѓ 6hUJl JTL5A[G@7JY`yŀ#z„x7EQ:8r%J,z\EBz) CaPSW .ƪ7.ꆃ\d >VOdI1!΋!4QŠR" T{%*2' ;xBA @x "5 BL@M i1NUaE sFeT 8 1A>5:<`J@zdPY څ:@,, H(Z CƈJaZL/@',ml(R]Hd %@ISZ84,HNb$K&:<=&VAl"aQj}ѡp<\9_$gYHq"@W8@h<˓j)DsIUCCQ]) :::(c护" HSSp LiH0# 0(o@D.M@X[!T!14#3a-R)'1@Aml i! hR =\) Ԁctܜ"h׆/!XI%7:TMdV8 Ss PtFm8! . d _ 2iCCPdefault_rgb.iccHgPY<@BPC*%Z(ҫ@PEl+4EE\"kE t,ʺqQAYp?{ossp e{bRɎ(tջ{i常r)teJOYLgWX\2XyKο,]~ )sT8بlOrTzV $G&D~SGfDnr&AltL:5204_gK!FgE_zs zt@WOm|:3z @(U t08|A $`(E`8@-hM<.L@ށA2@F 7 Bh( ʀrPT UAuP t݄84 }aXև0v}p4 ^O6< "@]p$BV)GVC!Bd h(&JerFTVT1 uՁECDh2Z@Ёht]nDѓw aa0Θ Lf3sӆL`X VkaӱJI%vG)p`\.Wk] p xq:o—;IA"X| q B+aH$͉^XvbqD%iRi/82! L ے&US{1O,BlXXؐ+ NP6Pr(3;Yq8WJ)Hq"HJ IKIJGJJIKa8y"Ֆ͒="{MvV.g)Ǘ+;-Hז,L_~NAQI!ER¬"CV1NLMZ)VL $L`V0{"eyeg :JJU*[5JLGU殖֢HVQ?ާ>حѩ1͒fX9֘&YF3U^FuX6m]}G1Չ93 |UҪU$]nnCM/OS~~>&   .y݆i񍪍&v\mu:ƑGLMv|253Θ՘lOv19|y-Եl^Zä́UUКij}ZhlfSoV6¶vʼn伲3صs-[{'BCSGhGfhgWΣ<lqu%V>svu.֪MZ26,b&*4r**4j:*@LMLyl,7*us\m|GD\bh$jR|Robrv`NJA0"`H*hL֧uӗ? ͌]֙ՙdKd'eo޴gTcOQ{rswol m ڳMu[NO [A^i۝;OrR V (m? Yrˆ[EEE[?Xި%%Ga%oDDiNe̲²7Yn\^{p(㐰­Rr_bULp]u[|͞iU-x4:zccǞ77Q'z̚KZ!'lsWnk]8q/v=s}ٚvZ{aԱC) _}ABEKr.]N<{%DƞWzuW8}nX8[[Mowf[@;]wv8d3tyoy02*|`a׏2-<>+|"ߵ~o /ۏ?yx??'󟓟O)M5MMqb݋ɗ)/f 櫳/ M^̛oy=}na>|ZZ.V|R?B, pHYsgRtEXtSoftwareGPL Ghostscript 9.26Xn IDATxl\}GPmo/Rth+nK&M['Gz{;\- F1$^I):?R;&kU%箄1FHwY F6ϴFqm .8Y?hfΙ3gHɘ<|s\~]s[( tX(5ۋ>0e %|A) ^shN߸%aF끔"B2²}Q^ cZ|×P@LJƂ !6 @y%`/B Bv2%GJMBCe++a"@CA/h%a* GC6(0 !xd"*JX.H)Xp!`X՗0h3rCt5P)V8)E 49L[W Xsš!`o *JB^r]XsE!`!r& m<@Qh3rCm%!o= H H! 3r%7 n]($B8#7YT=[Rm偔"7B9x!oWXpy!1ȭ*JBz()Esy! T  Gy%9䁆@za`C) y"5 Bn K Bp$ / yja,8hDx9J  5BC B[IH6R0Ph(9փ?(BC3rhB5ZIKa` B;@/9(qB^AB$%x@@/BYCHJ -^4k8#ǰmխ%!o= a,8pg[0FC؊hUn$)E  Q^ /b D5"Xs+4x(^!Ba#QB)E 8(!}K{0@rWXpy4@aR_CQ(a,8$B@e (hqFyC#6 cp !~YBo=gW‚EfY2yɍ*JB"5ECy@ n]( ![4"cC +aW^pccf\.WՅ^YY*˕Jeaaa||<5v끓KKKFo3z]WJB_r_}J)b!bQ/r@\JNVk6gϞʄsQZnrʄa,8|o \__WJgDF^ R)HJF|j)&''sc]zL칤0fa,0&a.] eT{@[Vݞ>r%>oSQ׏9rL3r#Ct W=*ΘQ^EovKKKKKKf.\ПZ\\٩T*cccNt:fscc#x ٳ'ׯ_O$=#AaKW%g%ΘXp8@xk׮%JRTvvvFvj6'Q1/>+#"c㙰'>3H)Xp8@X*Fv=>>uއ&>彣 0"NײWz!̑ ӌ՘iGJƂjB}Nx:"`ݞ{B}N>55;*^@@1Gӌ' p,F%K׃t=$t+Aj7%6.2ZT*U*lll[yh Co?93> cQ:Cj{ϷZ'N(JP<66677Wfggu;|٬VQ_ӵ) w+-Ea\ }}) RQ^E[RgΜ9rʊɓ' B{---mɓ'_jᯉ4C CBͽL8cGy%9̷{lllZ;SR$):/$_Ξ=O8k %°{˙<հ|v_F&L\ gXsa,8D (Mw ԲB#Bͽ0ZH)XpQ^@9GL@פ]iUg BJƂ +y4=|v﹬hTd¾]H)(" F <{Ӡ6J&,ʃD}LX؅3faWx@!WuQd7Ӆ3fy0Bi++6Mƒp 2aCLbQ)E *!:缫s^uNAJBåDB¾8iƂ wB^o_ R\ʄ"EJƂ w 92f0փiɒP ~3}RXs=cadCzpi  ~3}q,FyȭF D6 ?#u}kC[^rNf}Z*2ᐘ 0fȖ""=[a3,yɹ  FG14~(tglE&Lw]04yU6݄0''#c0!1 K ܇F*KQ2ṯ?S2?$8"4! DsE fcOX8JH) qfY.XCWVV677rRYXX9o=[co2|ͫ[S>oxZ]*2!G,6?0rV+J;;;Zl={6&noo?;;;;;;zh={vjjJPBXKg<ǕeTN0<\ۙܧ*ރo3%a By9266VTFՊ`P:#l+ }EE`dfa,8G nrrY)ts>jt>!EpU(i[((v0+a,8F 5h՚KRzT*-..f~x2!E{0}UH&L %f"9$pzҥZ<777m'Y~ A/9 LP*L8b c Ba\ +677766*.\ׯ_Ԟ={IXTX0(o4|ωoJI9b<n ڵkC}}RT*;;;Fcccc)P B`< <) U0(ƭ)L !к(Dž]p,J/r@X7qm6 d噟{[;$5Q?>T,pk +ya,8 A F{r#NTj7 Sf~e{aa-((R(0!yea$|)O2[;5Y .G) +*oGis,Ƥ4 A D3.) 6>$[|ו IDATSH)XpaLJC(oA $g|aA,TIJ)E<^A P" 㣁\GOW E'_Y<^! y JB+WZP$ p,5Ƃ#?B {L .) c|jok|O?/yU&*f@JƂ#B C'^zCEq$} K?H GL0uII0\8B _ͷѨPc|=a"F%D(!̷$P1>ja3a&%a"ǚ#5!2b|4 5Θ1(9R3ryW㣆x?' p,"[@Xh]&$D﨎vR01~n?R}O},>k 꿖嵵VU*jR#B:?{afp xʁ7&RD Qz{ħOpO>r=Ubǖ%Ȅ)RA $P]t&TJ7?o_y\v'?koyx12ȄRF B u;Օ{ +GxfjBal0t-Mo) @I8"+yDqd@d2E&'TdB GGy%X @2?)7B{r#K& )E L0$*DJB )E ((SD;3!{ 0sa,8R#BSxXۑ @J6?H@܂@yڽ/0m , 0'Bal@8Cݢ0< sWH@; 0p]3':O?dH7PJn+Q!w}P"㣅xݏ41UW\xGBPj66.) P^ cы@g1 8 )RcdNa"pUS|AuC/91(,ହha=&BO{; Jz(0b"P~b4JK ÃG B,ǚ{@PP'P qByBa~bE& FyB 0=_9Y*| cawg |! vƂ{a"!ꆻB'͊_^"(#xLHLbG,uW'Xpa\0!A +dBJ;5)E .9D B Rw?K}裀k^Oxωxܥ3ħO^~)E .5w cK_{`LK ) 0f"w P=]l&TL茨vK1 cQ/r%ޖP8 ?*jWR\Jy%" `'%a%>ķ5>'> ]0Q^#cmD D@ә[fGa%>dB\~Dh!bB Yɫ{(X] Pӫ誠$LX"cn+`˻>(HDg¨^9+?rѓF0>gNgޏ0_lGXp !`"@:6I>%t. Cy%m~7cLK!lwo&ϣPq቉yyy{{;ɣwi#Glll}1 aw>U% P$35`>!\JNVk6gϞyԻvj4Fckkk~e`"W+uiIP^ɣ:NV+.\ z}uuuii)QkkkvZpqqT*G]tIe𨩩 1 a}_r`=3>*68B|;dȷ3L0!l6Rj5XRi4Vkjj*Q]MdGe ]bGG̸%גR^bav]..,JNϞ=[*>ký{s7pe v{/@RX aܣn#ƉjTRz^*sLoscϞ=1{u$6 B <7J}Qo2TyֆۄK›ߗFqB8@8k׮ U}ù{TD~zԧ xL#s(}[×0?b)FyB8@T*-C{߿?恳]" G6;WV+?RQPTIx1Rd0D o-#bm$O4FfBCJ^y$Cb Y^R0"Fҁp}}=t:v{zz: m.h4Jib"aQ&FOok|O? bJR0ҡC{oZ'NPJ-,,_ngggNgkkT*>| gff:$t@e 7uH)!9s̑#GVVVVVVGN<_hQJ0f!^ٷ|u~'ԱPЄAͨjj+?wxvTBYl+LMM]xqccjy睕JVJ%v_y dBG*+ Gy%()(H@N,* ~K›Cy%X3[. Ȅ]կ~׼h0W/=!C2FJƂ4}0ryW8.Pg¢'/8w{ %I-},^`aBtLsfv˕1>NU(00Qt&MLظalb12 ē7-.4Q0M(dc/.{3dLXQdCg¾ҙ05>'D֖/{lxSg T׮-\x!9z# ;<5J^ɫ{Zž3Q!_ ~Xc| * 1t$ )İBC= PgBOBI]] \&G@w0vL&DNbrۻD!ce R#Q ]I?3"c=G }P8*!rLI80AD"`" r !`Z&̩ty$EJbQ=B!H76eќį?;`cLaBP,./DL bBJ 0W4Bd΍L<qofp4#@"a>b!@&$!H)XpWq ! {Y ?V`8-¸0]C$¥nXpBe @[L8P ƠƂ@$bi-__*(} 38u6bvDal!X9p# s2{0 b0٠ 1 d„(kjۅ@F,Djd(#b3Ay%Ebh NHјGZq4"@ p[~dD qh2HG?׼i^඄P抶#D!ޯcdB$a{&dpTpDB@#BH23!d6ʄ^nll?lj066䁝N8{lRrҒqMf/f@ƋǔRoZ:DquQK'(ϼ˵ZT*MOOjfy$p}}=SFckk+#@X%{p(1΄ܖ0i1ܣ~7v:ZV./\j|yҥZ[[[ΝS#B^YyੂTp;flF u]\\l4z=&/oZJ4=& ,wxs=*{D*D<]_WFǒ%2aNȄ9!fVG*JhZSSS}uY R;;;J{fPBo=@Ux:+28-E!yv]..,JN-dJR/t~VU*j½jR,zfjw~cZ FI7b!o TJx՚噏=Y_x̙Egp/>^N8Ɔ@!&v])cA,n&Lo{3âLH ^}W(ݐig~Hł.6Z]]j{oZ'NPJ-,,/h۳j7xjϟo6sssQwrEh;B% ú6&X IDATcyWJWxW?\ŢC+a,8lo TJ9sȑ#++++++#'O 6MgiiI)U·"dUK n,׿Bnf _:x3~`LD+ NJ=*`>ŋ766Z֝wYT%^RܹsQZZZz{޳/>-~߸8)c)ܙPR}ꉅ¸GLu fff2C}N/@Pbw~c %;R+M;3*Q"!zJ)sv]aw2r#p%& Q^#(B@LUNJ8(H*vՃ]HוP ӗ?:]%a)E CQ"QU!A:ͯ,EFHI}bʄ"GqH B9~<%3G3$P)I)Xp@PfTUaѮf>L>9ތ5>J&4 )E B"Q"+AUT@\ńA>g. ® 31)EBmEࣉ]C>(ctLਙP)W?;A8,ވK֖}rv`8{]|ekg@kB(!G+{Q v Rg3xI̍PJ -F rDDQt Bޅ"L#Mn\U{%"pk}qVsByB@dNa RzB8n`xu~)Ʉ"c! @,\: UԐwPsQ;͠H)Xpd@G]SOc7μ$ v?M)( Gh/R0Y!Cc"VBv#%˅B2H)#P1\^3v0t#\ *|j P`B oy̑ {#1,?}eiUcR')dr>{j <8R (!bt&C2%a3Ʉj*|΄Yݕ~W P(?6fB\Lcgrh@JƂ#ۊ>H.}P@v7;CcKŮWWb@g,+ G +޴ī]9Z˷ h@ !H`3 {BԾ?\.Ƃ#^ son(vJ3Lfz cm7"m~.G./tpI΄jwbajuBal.B2w/i*t=aU!RWpB9aԄef&TJe_./**$55څJBX2zǻ?"w̑\$̹[}X*)4*m ӦF{R>#2@4A,|WOD$ȄJ*TY}kW}'~)E '!D(`/|G}"ZP4mH)Xppczk"Vh_ ΄1_ |@VP/.+.' [ n.,ହha&BXj* -\Xh;+al!D(!EjgB~z8*?&Hn4Pk0! C8/dB[|2aba ǭ  5{Y ?P R.,4'oB'\&w +L8b0΄N)E FF&By<3al6ae2;|xbb_^^NN311ፂP&cpdQWnt "Y^^>zhݞj3ze \>؇@K$>J&1~Y p b!<5:NV+.\SJ?~^.--?vssҥKZMH`P}սg+,'t?{=*a$-,,4Z\\l4z=>? 6)p%WЦdM=* afVG*JhZSSSQ<{J88#Ffp0R.A=eTӉ JET*z!xա@L X#]OhH5S1p0xߏZB-a@}( epTt=uLXpb 퉦vldP$0N{oy-%XqgB-ž;blF gkkK\~=S{ty E^x[93t3') Mn!εk׊> }Qɯ7XAgB¼]}?lTO8(%!R  aR7~r"s1;<,ؑ !U!vv]Lȕ a$Yh PGb B22¢ew$|`O$29r7zB=5ZQ؊ aHm;NݞE4j0;A&*,NVoWO$"4:T.kښRj9rD)|Mݞ-(X *_|P)e2)P"[0Ι3gă>nOvZ.CMfŁLh0#q.^jJuJs}ܹDh/69%_|lǜg`jT C0pr}Otl[xːDP޴kQ!@a"㣙Kx%s(ՖQ]~pB(\!%'D,n]CsY=:sQ)6{E 7/!CJBHbbd03wn|6{3?EpfJ>5XBU Ԩ$6#EQ\aN_7{B쪚'ߘ ՕLR !Q0VOEOį3> C0>0GQWZ!~jFa,8$2sѮz0LRuVn) խSWXpȠ!$3wUJEOzwԑoHUӰ舆- `Gn-Cy%,5G@^Ɣun~ԧcaga +<%Fτ q @d3ʹ* } aRQ̼MK_\H#$zjz Ȁܘ*MzBXHUgv7e|T]p f !!!װU-_V|CBBtzK\F τoRLOEJH@2p枥+˙*XpmdәPcq%25#ca+Qq+\F]7hsTC_ڌ(T(>TC%=5{q1QDK,6?>#&(A¾I)0xZ᧊y0> Q,G$|VNvG7A|;W*Ul6* ?s'#wU}㛿 Q8G6bI(W``&,$yW∅^!P"ڳj0>7v}e t%a )E ! Bۣ͠P GO$&TXB㣁KBeń$/ %F )E <!Dh}ݲ Uaoz]C*-Gw-3K~ Q{0#10"wŠ 2SpˆkU.jP*9:(%]O2Ti Qpd$H)IB$K;*IJ7s`a/aa ID,TH2G3! Sޓ0LhF ͏cȝco# 6{7rt;L4K 2u5}DMv""%bG3aEOJ¡P^#@\]Ƥ tp/zD7d{ \X*gAGԱP 3GGgTIhT&,IP^#ڎ@,9\8 K] w'uV0yUxsa̮g"hwxRBE2D%iJ߸٨^a,e`&-麵0T&îX0;WplI"PǣFdO}G> v|4P2R:"Eix uݍt]PĕXfbߋ_ͤ}0wTV%Cљ{~GОb!b!@!89Tv*⚺_9 C%c2Is1L{LT1L cr]d: y8>ѕoԙPXNOS]@_B vؕaOݚ+? C^* cn38wh'I6A:*́l%!B,ч!PddM Udn*e=]?A]L$AM~a c"bfXe.wk9q}eXP CRGIG<0<< Ri,TWPok1G3afO}|ǻ?@_:> >bhn](f\V ccc#>dyynw=jrrri1|(â6T0(%lXר0*n X8J ) Ru, ;޵ɟQ$ǭ 9rV+J;;;Zl={6&&yHa7v=/I,JQ&H]V>G:0`)v|T g~?,]d·LDŶUyJfؒk/s𓿁jr|?^WWWښ>wȿc攁3wUwܡڸ2ܵ)R斨(} k|a"a|;p3_P_T,L<&HUiȄ?UaV W E,wꩧz߸|ڵk{;C^|7O=TN=do RyްX}bGaC|=}?>S { {KdpcsI2ŚwRl̷^9 u^k1LCgHrNPb |4c]NHI nAq! 3p *MY I(&Plҭ'$-b.K  I ]K'!=yu \ynX<ٽf28$ KgCޒ4BBG) p4H}duQ':Kc6ZјS.^(^Mׯ_7Hԗ*ؗ }VJOy鯯abHIС8Z z}Ƣf>n=z{;=zY(qb$x :-d#B9I8E%Ӭ%˾Q%P|~bb_Ng}?06ZW}B# d(-L%n0?i\zmyƘP YiV `WBiV j՟/ZH0$D*2k=~x ";E* 6gy* #Bz ǚ#Hm|3{1Bnǿ2zL&?6I"[Rwh!нg ㏧:20ZtL 1xZ,[-桽]H N(\ L,@˕!3*GJ2ݕ_#/}l/DBz… Fc}}]ny!<'}N\gX'06ty5x'aYEBqc_ZpE"a%= r|SN~6D=oӔ%t>V&gU.Eۿ]yN-H.$ue$M h4[[[S,k4 әdjMw_Tfj>Z$c<+s6-t'[xN2m֐%!, ¬pN!ᄜ7E0˲oia0˓ !gB D 5B>}zf IDATf͛>sZ֕+WcϟǙ$;Oa={͛Ν㑢+++gϞx ~f}ϗY_g(G REi4?WEcAp)?)*A+BFo6}s@Yc7ogz%@xX`0őPhQw߿1X :lFZ&VWWeF;dQ12Y?lyjO)!Gi Ra}ο[E6SK;f $0TA!(L'O!r TUH(+2xK<|N"!R!H$4CBѽ !cرc/b:rА, ?p\t_;wm}j %MQ1S$2E`pZ(.928#*j*Н2" r:6e\~l^Onpi&t6H'&`3JlFJC R|4+*螤KvFD [5EJe]^M-4mͼs[ClPP D aaBQNB },ɇ~Oh DBg>NH a*ZHz2{;BS-mZ:ImFl iy׷Q:SGՇvN2KfY~({Mf zzj_bPq]$ؗM1؈thf9{WO~fG?JR 7o׍ V$4*c9͏sZ>|w?{OCJaw |"2)uU0ZH:dLqPF[4iL ҟ]KuFHdkN1Z%[CGgv^zfmIE n4}bj gt';GzgEG+ "%TeK?u;8OLqrWqe: NM H&`j*wMA "5U|5whZt[hY=dT*1H5 I1?eBF9*8pu)QԨ(P.H!$TpyF08Ϯ1jMG`T ׾/R^e$fT a?1$B8rT|zZ_hi4W"JT]'9?e鄫~FrAiɬ hD2υ^;e[ - bG%d<3n}#ice-OFf-])®B}9OQ9n??0$$dHqA tATWxf٧cނ,S%Xsߠ64 `¦"!|+I( u{S]Kk0F5drBBN/',ՙWg LJL?,ށ Bx !RlY!v{FwIIL `GlZȴ!D =Y̢F* 3$fh57®Buh ˚rER8C?iQ?u;E ZH( D aRlv?n@*m_Z<$<-4:et;ڦB' k>t tő:B" )iN ZH(D mS?պ3Tg^*Ya I şNZ(e.5f'H>AYg`Ø\fΣ#Yv zByCK(QBV8i!|B@"!Op[ On?,vhh!!W!$BYz:10$R2K=B&KNL?d [IHa!sl};l]wmUsG?:hUGN*c@/Z#-t灑p~tVDBʑS<rn, p!t JGm ; G=<߉1 ķKwSRʸY1CbN8>;{Jȳwe}}' 3KM޳]Fh4PWB-PO]^ HXʄR:D5x*̲m)y]\7cQ=C}߫ě5BY+LrƘHS oބ1v @Y0()[&@'AFZPYŒz @p/q_YIܮ;'}.L#,T!,y0#0RX]yP N(&ʩfYۿ]B5]|ѓeYٜ-xTn4;(Ed֙]S\RC;sa)P.G:#+U8'd&A Y~)*bSR eO҅n#H,(i'Yn3Do,g~ïDCYoW_+~\ǿyoi$L OZ&rk\ϕ-˨޾!g 395G%0ZH@ٌ)rvTn_;(Hf\ ZQKf8 !5üCX tl,2UM 7 wp y])1׍x#@ +^!̲_r=<ȁ {'MU '`@fm3=*d9~Ak0 Gt20ZI3 L5̘!2:b, GLK |.ͅC >[զaaH9|iO)0'Y N':LBXJ ' BX3 !FCh!ZlfH 1Cgw@͇lpZk^ Zlmz1Cc|ha 0=e_$LBhNEOr~ ٌR;,(2pz:S7(&#" +YK۽yK>`S{;zy;rKb9?}1{vEmf/cc!!u1SX`%fhϽnH!V0s9)HW!psϼ2O|h60{D^WŃ@fia2wksӝ-mi'!&|-6n0XG2vrH f#G'N:BP! )~_ s%,~o\'r !̲lS;O|ĻDFxМw6(d+0T),arρ^ȷ`|*`{qyv1K61؎1:BL N.lw0b|Zд03q?nvQ,6A=PAB8a109a$!,_@l^0˲:C $dYVHI@OO[f#tOf'#O4CdѤ#@PAgSICIC@p) O>7)?q'{\*F&{?F)%1v|[/׊16o?{>(ԏ~Eo??瓾֔Y-+G]֏FFʠƂA!(-T %g"ByDs*J [g %MGB%]-  C혣.ة<4 avH!,T3M$,L!0 af KT9lpUN0˲'>GfkŒīA^wBX3UeoB`Pd AB٦lveiMpbqϡ^7r vYP m"لjRĉ㭃(™E!dVϽŴr(:㟟gnA1k Uc'>CNQ!kBFU4?5FٌoZxm_MXnC{ի&ͤb 9zԵ'P{JFq,WP.}TS ,`x!Hp=k)ßyZ V9d˃w<:a M]gֲ 3Mx@f(iaXbҘ9?<閲hg=H fmЃ]=XAj7vvO z?3V$-$BX$I?bfJ! L"Z'*b fI#H=ZHD@0aP1;*L UxZ@:;ϭپQԋrF ѝ}ۛ棓aWa~!,b^2'f3'Z'ٞ aZ* ZH =5C~{mHԆT-TJCǸ[9(w2v=䳙xԙvwwshX|lш]6 ucLP׮]b72\-"!*~x6Q3M1oӻ{ C(7)F<7zϯWv S'_$J ?vc!m/$d! &b0cI+cc.CmvETP6n3d-OC+3&1Oev\l~X;d-9s6\ hna B^p"'!61$!|q⁧-$rE%ܲKX^&\uR:oWR m suN^Uߺ&F#FI{ D["D< "dTCSg~jO ~-z &}_z_;<4 RB0-gEjN ¶5& C lQJkia!Jz1B%e-6͍T0CFڋC  }W *ЈgI'?#Z- U bh!04 'B+,͌2 m0ۣ ,=&UloFKP_ -tSqm꜖:*S*>1Zgmm\K3[SjsL ?0ʝ Du='Bhl/x`B 3 ehaEŒh!CA01ؘ am2!& ԁ^ հuYl!Hb\'-9`rZZ/oc( f30X*[dZ账T-v;"ݴGwRB"I3QA&gޜPO`NɃY(-*o//!L #!\XXHHkAH+btYk9%z ^Vذ*63qa)x`72-n pJ=dB"F:-xB6uB NrFBIGB/j#t!),ZdB( 4g}iP*ZsL4Lp?!*U-l;Pߒ Z0 Pn:*ܰJ.˴ìEs k=%+6 AІfF&H%w!4j'4>7a@5-$P;h6 IDAT=qw#ZH B j$r5F188UP&Ѻaha91 m¼ʏ IMh!d$z!;rTBH0Z   a/? <--$BhCaV'fGC(]@-i^5 TSɞ<ҷ07z@ȈcyyS>r1PF(zF%/;8F #߹LyW+sMZD49a0k{\0*'fR!@3KPQBT!B; 90#t' FkQ|NUO `lA Ô@Li8L-L.%`d0` ENzR(i! Ш""i@ 椅v׽Պ39'ɧHl//8[!L('j0!qjtBKʶ@]bG:`aFd&gΜYYYǏ{W[֕+Wfggo޼sύѣG'+g-6:1/3Ώ\/=c#~P,P#G}D4fwigD[y}ϗ#3C^פbGi-ٽ2loFNZùmҼ|VOEƛ2LJ_}-`H|ŏ;owO;Eԏ~͵u;F?`"OP |66:sawiglG}K۳[\\xٳg/] 3 𻔐?F$^ʀM7;R'F2 d4X-d1ؗMR Ѝ5:*nj?X0)2)tH?o*7[RH5QBf2L!TBx1l uTK;lgG3̂s׎7| k Pw>  3BgalW#T*>}Kd/- `NZs(mS\ j hf[2o,wгz⵿N:eܮ,;7WZH3!H YI?A/ hR<2pB[ABxW'L'falWX__y ^ttOZmiTĸTMZ5b3AG]h!{&WZh"9&]q0glp&'ZH'Y:NoI28`h!l 3K 3{%fvX@bX "QB^P υIK @d:a;|=r7$Hy?ԅ`=p.x),81BGƑڈnr 3;7 -$BI˛f8a#B%H#ƻxǗ0N CA;`aF#FF,n4333Y%쫃Ȇ=NʈSyQш8F\gv ->cN0⩗1 3ZFN`Pم0 r[0K`B=q۲s*'-BW*Tw.w]TUv BrN(VuJH uT A ~сn-0CB ] 3ooh![o͊s#ԥ =E wqB`\6N#ʜ0T0|0}UFDX\\lZr55*4rvo_uP.8+521)82?N),Xf\ꤥlA|k69f5]Gez;xե` m'[eU;DYe'jNBLؾ'=I #bN??XDWth3ƀLJR`P(dR #zBf)8!zQ TP̨;-d_BZ(XnvqQ >=lYfgqNNX=",dD u hdP^LɋPN12CsWW"- oCndSgQwBB9Nʗ'}1RAY-wpPVSU7pi{V)?Ct(8%IxtŒPY!$@O$Q0+sBc5yXw}V2ҳ} !lIVJɴ)OLy{` Ϻ}aȉ"B6O|i-cPF+  '{/!Lo9a B2 V^wT 3BQr*(v "f7qoE[I¶<iQ;g#;*Ss~geGݘI@+9[F}ƀ̥oQ B1 |aɄ{"`D)[ Gcy 693 S-eǶPUg-0#T 7E&2 c6y&`|f&Rts sF0KL RY22M3Hmd#GڞO8R%$ o(^*oFx(s];Q@ig(:!Wk>b.UD';cmUY|?!K0+Th a T@06P JA,UAٌP3tj f >[ HkbNy2ah{ B"z7  9Enz= _a+y)poVvyX4J\Yja(H(g '-F'tJJ2"hPNe,BK 垰Z Ց 3R )@ !!u]ʩ0&gQE(`Ȇ e;ӵ{Ν[awb)MpQg>$ Y#wP~ޜ!LBYg$yB7ݽrtB 賿?Y>qb-ilQΖlFO lR'I- +r}UF(D QP-LL&/QYӱT"i!> (JCaZ'(һaYg򣅀$xy_ڞs$*HN ;2NBf ,C`<1?3m|Gw_)` E&Nlt>A5*([$t"Rm0=8R,8Ot?2LN+b#`|vfVq̖%7rH&PXv>p%`TAp<-F;RfD N Ď*U9Ď6l<$BF ovO3?EȔ]Yw׾ 1w~Vg }aF(D PO'-@́6BrYBoIrHE m,)[ୀl-9ٯTAo- qc{W{?5+]/> &BL"[[B n77U{JKPLo d 'ײ/Y!Rh@<1>YЖ4x=zT,;lgYw^9Vww7 ʃV-ӌ:.!!Gbs3भ"+"h!l6"-9Лk|c|YLo@/Cr*=!-4>-^Pcd)_"B ˩BJ}9qB>n91ߌM!J }"̇ayB}o4&Љ7>ӌܳfd-$QDI T-\!7V3&|4LGjՑ ^Dt`~8Fmoa7n"F2n+* "3AI"H}]ԐQ p2!vGrFm m!ȱF/ |),/P[ ]U[J)PRʏl{R؀#cob$`h#5Gi cP(F2U\TVB)4"8RL  %$ wBN(N*NhS?wfZ1]b@)BpDžդ .2Ik6f&U4@4 TV' )PR^J xQ.R*L?.B jӔѲOi1\i3[Q* A&1j";NB^S({d3fuk'vBEBBe` uB! /_@""B J |H6qO yPTF$B@Pr P d[GƑ?G}b8cHs Ӳ{GUi>ȩ\1ҍ^D Χy-]qcT`f򣅾6t2CóFnO=H84RJT)(T)$HD Y?m{ W ئ%BXBfۈ[Ma)ft#Jw `V2}G2\i4b?U%싡a0̓$2!4Vȏ*LHB!{ϟk9a!dc&UwX^a7*mhal!:yd|z)p%Pvmf`H!,^UpC@1; >ΠJe{JhwfoAAξ[Pp5 "\VXb7f e'kQ%HUu!g6=&vTEDD8SYqk?0!$$ccc-?Rtҧ|۪Og;0hiu^8vfҵn(;PL6?l=1s[T$Dn/nJ_Zt.E=NPv"Ns,BH3L-fjrځ@Fq277h4ƐJu}l0):@^d%ʂD v$O:OQ:εѿ:dMa*ȟ 2˴uZ{&VfpB7FbᮑW!2/j!(X >hz;١!xԩi oɥ\Ә+-,2)-ڎH@%? u~U輕C@[k!$b~~ʕ+fΝ;ッnuèGEJ*+cZ/bE/\R!XAfR(%a#3DB_)\fYj*Jo3&eaiTRy̨jZЍczz\BhcB @?mZy ޒ+hzk "v͛7777_~b d%B1` H-PFR!a~owvoG EJE T3 F7fφ}֭1=#-TTX/BrㄅBxϗ7ް=zf:w|2IG c0tY1kbD^ 8b 8ʜPg ,]2DwR:,5',  GґȕCsFw30005S IDAT5ZXXͦD PޢSSSFcnn,:]N ߆0Zh[#݀nf5'kgDBL mC]0@*LB 3$SŲ QFDy$q<@ecAnHt؇nLZhab?aSp\rW<`D$F|_´z#BBLh梎0,B$4NX!]{O!L[9D"^2gt0!}E#|r֖ "(Bu޴NN %xr/k tAhp^ʃiݗ1 ]6>9 ;|z} aE c :lݕv*_FF=lkkG{E!!7 \ph,,,啎O@^A&Y{~ti0!Fh!~a٩ nqeXX*LAEl,x"9_miTqD€τZ,',Bx]g:{u,z ɓ'aeD%@//WWW=$ BHO!3<<<77ZVR':H }1~?^Ȇh tX&vOv`joCF€O`Vs?{)Ge1߹0K U-kxIxVar†tqB6%2I2-DΘ~"@rZ #BfIBIkxPo/ZIqBX*\t7:՜С+W={-kkkO>h__23k׮ݼyar!$Pw_9E1TtD錰cuSiBz{\HYxrZZH,i,N} -ƁşUf|/a澄RpVYTaz+鄐:[A{mZHB<-d>AY8ڶVurx0@k>t^)gG+""]9)F,OK]IFZ'@[@N)ԣxBH u3#r:~l]o4 T ә-f&Ԗ#31i<#HsnQ̒o)dIѭP43ơEJ+} a@',ɧ1cR777'''ϝ;j\Fy!Ei!sL( k[fO Fa'm!d(,VF[DelYgZ Bd)&-3vK85 Jzȴ%,5'wGݿ*C[hzӧst[A@Cݿ;ېÙ#1}^RՁi&4` ϼi!k3Ȕ3Ɲ)Bg*@ `Ka=QW !K ;`U^ ?Cxaqqj9rdhhHOHH"BzA܇!68yB"D -2xZLsF d/ܶKBhhވᄶFLHN(i1\FY:NaQ^"rA@Gݿ;}Bj5Cs?b=E έz NqyyގȶI(GT{EA 1I+͡Bsk"v*VqۅZ4 BH ĢߝŐmFYTMb%@>^Q#6aBC BFXh8݌z`ȭq^ Bf!s Jc QǯZ@BA@H| VɻkvQ"yEn7w5OZ(Xhud6O/C 8O$-D#wge;;=:A7:p52l[OᄘYΣ~pG.fo O(E  Z EBOOcA@H}}♪uP 'l1CBN Y"fB8z0 -g{*J`;lg1/Ua9pzvаҦOQI@  !<-"d4!'$6hCվזڵk+++kkkfl6GGG+++j6ϟ_!$rA_1)@h!K %M.-}BF?Rh -yPv2`FR!_ۄA`9 D\~^!+m(!iQ2%HQ~ L{ڵ7onnnʲԩSkkk}}}';loo'$x!#i%+ʘ2j~03Tk0E k`Z wGm?,l `M a#03 oK~˷MNTo 4oHTר/H0Ɩܹ|MƘ޸qczzl^zV5>>}Çoll:t_y^/G BH \;sTn̏,6i^u߰@!N张0-c zӽKl/+Y%.lXپVoËَaZJ2ʨjia0'$Bʧ3!%9%rAVݻwGFFc?nB $,2Gaac)2aċl:I #9atPvE:coقHsNSB~ƣHZdƖ0Ж J˦pBb16ZΝ;ښNs{ΝqNy@+"NLL,-- ǎq]Bh4F#c;;d;zN͇n>h\t3v{Zl:\qqT}2`B/'u*lvTo4w3=6񧴝vĻ[7/Ҹb?#zg3^n6%~]GQna20h 7Ib?S=ʉ*qThDjBG%k3M7JgT0_j2*!dݾ}Gu܇Ǒ6BfBWcCB)^(Q-4Y@g.) 1 e=Y3lk7)f %6GzM*CT t?0ħ_Bf-^m'OF'$y09*D߿6P@ј-FcllL鶰h4pЩ BH F;vxB$-b ; @s:6(N$p\eLzsB)2*ј:-T5:!8BcZd1d|A)rc]>rkz}$<@Tf$333D QVk~~~iii{{l>}aCOOxh4X݂m܃0JНWL&P+IUsLQ[cMEO9|N_ɤ鄵/^f;Ji *8 dXLւC12H43{wNouvd!wޝ|I% BF P6#%je166 ؽ kS-=d<#0jW)>w3^!2p0rnOPLCp_0C8p#WD@K%‡ž_PNQca?{kLoK@!8Zm4C m0N&tB 3LWzaNd#H`B(Fɯ^ !˶/\h4F!@!= \|9_* 'Z쟅B?a b> m0,8\޴ Ng(09aRaLHBI3cpF(fz+Nepܜ]p}}ݸ@A{ @۷o>|A5*Bg1n獙b872\BAy 0r"rݹNڦra࿽0rSѠAqX{` EcYycuև*1֘Bx[ F':9Mo1{766FFFSFGGO>;~sZ֕+W5 D i xV^H2I#!s/9hj&&&677šWrH A@5:::== UI@-{W0>Y -N:wyC=S`ySl<:4Bf> /;vm,̋ل$iH^Q-TPTD$Rap(reĘ :R!AB[ϴ0?볷vPH ;JMiC <_YOUWe p1g!SY[GwGsmdLye"sf .w+ s]y>e#=:A6%=Sz}uJ th4'OT%-Tp$„w O<~#mdI/=i! uJ}Lى?u| :Ït!goš׊ @(#<)+24+s֯nW튤NYצ}cx)b4I䝅oFdgl.h!܂ uC|i!Ɣ|H9[)` -$r sZW:i,11aډh!\hI j:V#8"G}pT#h(qXvNM%X* GGqF Zՙr胷tx}Oz|;paaOMM):0.%! '&e |Ӑ{{ yg1AaEL31lN@[Ⱦc)][p^Q20 a]vMcu~p^[[%)VWW .ThAD_&9!K0U"zqJQ-sn<#@nA`BgB 7W,//OMMӗ\9—/_7q8;BF 0,,,LMMT*RF&0ۓOl>1NP,\R}+hL3D1HA2@YѰ]p.'5M@/#FBȹܜh@v BPqI᱕|CNsTY.(ԜPwƨ$Ó5< H2R*, ]B7B}# 'O !oWt.\ 6;;!НҤ`Z䄰h ,CTh֓hRaf"[KW*D[* Uzbtg/1)atBAF .,,`:!ͨF ' -F;:V #HSIQ E1#NNF R!_h&]l}ڐ\ ±1=Kف@ dD B_ЗID|V pb7^|#1 N%;-1-QŲv-@$P!\XX ܁@ dD @]V' vTRvω: mC aPi ` O@`i`PzICB#\<"b0@!#BH ŏD޴кιAPORpiNRo- r\L;NZpr3uK* H¨gob2J "`i!D_Z(`B ' SJl$jr ]Q+B)}GyM*1sBnؠ ~Vʰ[xggeYOe'ѣGc?Ovā<{?6cK۳1=y=LK͸-?t1f)֚}Ύ|C,7:v'x6'}7`<t >Q0nƣo0|/(t B|,~ڟ9sfeeevvvhhHnXZZ}ÇES^y啃:;w BA@ 8ʹP]Z{OGA_3Ɛu]m"<]!q`k0^0;.3A ℀Ka£8ItEx$N(^:|8}ւʰ+W={ҥKecccdddpp֭[1F!jP| IDAT)-z|Sp,L3EF&U d Iy"sH &Q&fa*4+Y"V6" [heÍFcff&˲U@ @ x@\em/ʝlgǩgRѠ NG⧢:18)t¥YY>!6' * Ѻ[;1BkZիOw D Bbh!v hAm'ܽ(Ndk#2 ug8n\)oT_8ͻWXOZ9Aj9244$ow D B83.XvT>W*tn}9idžII4Kx&u(:iab/jDռ2'@x*(.5mzi BXK 봐3C@qQBdnOfJ6?m>PɃ L( Ot&B@0N(7i2͌џ}}HOrE~30ȟ~@ !@HW~al`N J(ی mR!> [/Z,})^ŀhar===1Z`!$)/"LlqɥBo`RΈ`ziR}tx=I8!Сl.W -H@ !@H+66Ya/-Aa霣8+2-`Rl$E K:'dЗ2G JDzW0A ]l6ϟ?dRY\\_YY9t@U Bb\aYlxi-^Rؽ,<qKJ^999cDpqqŋD B@>788r+xP>hx%#B`}zz|֪w@z X !N{/h^M֙*Q: qtٜ<|ݻw_|Y!?!Х(5`@ T[[['OPK^V w'z*O7\r[o;zbv$`X(m%"gl ዕw+; mdݳ90dG()eY&'T:P ;A !@3 ~\YM T\^[O)|-LplMzn1R! G6"BgYgSN] BH  (=j $RUAA1@g CʉCŒ- UJn0T9QV0xMo@w]ZZZ__?-..Z#G @@ !TD!Q_#B#qFf"Bn9'Ph}@ < uRk$َ\Lo@@BB{Tgm,"k'ℬzR!>|Txyȕ TG@SM 6!$(TrTJ,0s "BTxIFg â@ @uN,?@ A@ P}BQTpP*d<@H -`g`"OoD0hC  DEOx-DJ2'dB^!m3z@[٠@Ez*haӧ +++j6ϟY: @@ t,6JL+4x.(eNR!2|&:I*<GLz;wLLLloo2VVVcn;3-ooo'$"Q5b/-TOD*+,Uxz+$9B޽;22 [>CˌC⋜>3?|c !D BW'x흝z{9q+hSB$'ԯB8=5}޸qczzzrrܹsS١!.ʵ|W J!@.yɤN;¥R!2} FqM9W0̙3+++o߶Uc?u+"NLL,-- UJ  A@ t#J\[ Z66b_&a+|TL#6(P֝7 {i}waѣ"|Tˆ>C@ !$݋ri!R* 1R^jQV@9;; B(Ia~bmm(nݺ% !m#$"QK*HB aN=HLN?RCK`ԗLx~fټ~:ŋ/!$"XP Y:Z+rVTvFhaB^2{"h$< Byl֜0}9tȉӍT8um~qǂk e=H(8x}ӧO_reqqі3fkk(P!$} kVtPG%G1bcaz^!r劼]pcccddDXH "BJZ@1zgYF>PE;ɧv$PݻwO:yY:??$2Ǝ?IcպrPBz!$L BJ PqL a'aH0WOo-"B1hZl^zUl,;\zE;J !@ x0b F0) BI0WNo@V4&9244$'$NB@DE^ybhM*k)0 H^>-1@ 0B*<^*dd P'zзwvk(@BD s2,"1r ~)`zO:x"*b-D A@ RI]WIB&wNNjBPcB_€@  D !=l0I G 4 $3g< .B@ #!4 ӓ0?S8aX$bE666N:OB+++j6ϟP _P\vmeeemm1l6h5h4XVY h1p_o/ -4"^/\v͛}}}7o\YY%NH 5)cNZ[[g0&''ϝ;7"H "-R! !V\@>ٳgepcccddСC/"g'8*|F ga` '''@yc iB(Rx9A:N$c˱;oaSٛWznh4*<4ue/Y YZɲ&IRק}id`T585^8a(666~jQ #Ɲ330n F[CsQ!?_SHaOp&Q=C c_UEQ!rs`pyy$c( Be{M[}s…?vPv>} !$Ir/o!;ܽ2?NJ.VU׷/UՋ(F)qz+0q 4D]p^E +C$IGA7l#OYeYvttBxp{ bWEOÇ?3z,|y_trrrppjZVyxK1Kwwwy}s_` pd^ejZ}lz xdT@A©U퐅5ցKKK!7xK![&a,-olEl^]]yBjZm{{{^竫4MkmXy{IBFcoo>./˲`wE4M|Rpxxvy/bۼoY^[[cmw/߾} !4ḯRχ}Fh$Iv_xi 0;eE2-^c[ώPՆGEeJe?KDmgYt:I,dž+++!<4{]0MBQE "5ᕗ\6VcG,vIp̱H`.!@Ԇs'32`BBx=ϑ.Hizrrrr8!Yhrgn&qss3g[,\a#h4$v FcofgoۻB*PՆG`0ȲlKǗ' q L c{OcB8fIiPTfs'1gv9'1pss3ǫl> qI|LiI` KZ ^+q}}}.4$Lĥ rRQm}O@!@\vvv4mggg!,B3' f :'''iZ?#2զmI`ݼ9zYVǶ~h4,;::̦HQ*R]Yxggg(A)DJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJD\wIENDB`codec2-1.2.0/octave/000077500000000000000000000000001445607075400141465ustar00rootroot00000000000000codec2-1.2.0/octave/H2064_516_sparse.mat000066400000000000000000002220241445607075400173260ustar00rootroot00000000000000# Created by Octave 3.8.1, Wed Mar 23 13:59:47 2016 ACDT # name: HRA # type: sparse matrix # nnz: 7223 # rows: 516 # columns: 2580 208 1 1 296 1 1 368 1 1 242 2 1 323 2 1 362 2 1 84 3 1 150 3 1 437 3 1 114 4 1 211 4 1 409 4 1 314 5 1 361 5 1 372 5 1 135 6 1 261 6 1 270 6 1 349 7 1 422 7 1 481 7 1 90 8 1 167 8 1 300 8 1 64 9 1 212 9 1 407 9 1 57 10 1 195 10 1 253 10 1 26 11 1 50 11 1 55 11 1 52 12 1 317 12 1 488 12 1 16 13 1 406 13 1 487 13 1 142 14 1 372 14 1 470 14 1 120 15 1 360 15 1 429 15 1 244 16 1 314 16 1 431 16 1 167 17 1 399 17 1 402 17 1 164 18 1 203 18 1 259 18 1 133 19 1 136 19 1 404 19 1 179 20 1 211 20 1 257 20 1 22 21 1 56 21 1 101 21 1 180 22 1 195 22 1 243 22 1 413 23 1 436 23 1 463 23 1 161 24 1 229 24 1 487 24 1 224 25 1 489 25 1 514 25 1 121 26 1 295 26 1 496 26 1 57 27 1 101 27 1 150 27 1 22 28 1 109 28 1 358 28 1 394 29 1 487 29 1 504 29 1 17 30 1 184 30 1 234 30 1 9 31 1 87 31 1 490 31 1 54 32 1 279 32 1 511 32 1 84 33 1 233 33 1 240 33 1 20 34 1 399 34 1 415 34 1 98 35 1 176 35 1 412 35 1 311 36 1 470 36 1 484 36 1 322 37 1 433 37 1 490 37 1 308 38 1 364 38 1 416 38 1 86 39 1 197 39 1 252 39 1 91 40 1 115 40 1 472 40 1 77 41 1 194 41 1 489 41 1 41 42 1 314 42 1 478 42 1 110 43 1 423 43 1 493 43 1 192 44 1 246 44 1 381 44 1 18 45 1 98 45 1 139 45 1 11 46 1 401 46 1 480 46 1 210 47 1 291 47 1 511 47 1 133 48 1 268 48 1 362 48 1 248 49 1 272 49 1 293 49 1 276 50 1 357 50 1 466 50 1 389 51 1 458 51 1 503 51 1 100 52 1 298 52 1 359 52 1 37 53 1 327 53 1 342 53 1 4 54 1 21 54 1 142 54 1 239 55 1 298 55 1 326 55 1 15 56 1 299 56 1 369 56 1 32 57 1 225 57 1 304 57 1 15 58 1 220 58 1 320 58 1 7 59 1 272 59 1 364 59 1 10 60 1 51 60 1 486 60 1 109 61 1 177 61 1 261 61 1 82 62 1 93 62 1 105 62 1 19 63 1 84 63 1 316 63 1 50 64 1 403 64 1 471 64 1 137 65 1 150 65 1 476 65 1 278 66 1 336 66 1 430 66 1 43 67 1 275 67 1 460 67 1 181 68 1 236 68 1 379 68 1 89 69 1 476 69 1 484 69 1 206 70 1 243 70 1 253 70 1 113 71 1 261 71 1 446 71 1 285 72 1 373 72 1 400 72 1 10 73 1 330 73 1 447 73 1 95 74 1 248 74 1 373 74 1 12 75 1 310 75 1 472 75 1 180 76 1 365 76 1 490 76 1 23 77 1 155 77 1 272 77 1 93 78 1 240 78 1 401 78 1 100 79 1 144 79 1 158 79 1 124 80 1 276 80 1 471 80 1 200 81 1 229 81 1 328 81 1 130 82 1 292 82 1 417 82 1 81 83 1 99 83 1 312 83 1 149 84 1 175 84 1 344 84 1 6 85 1 101 85 1 331 85 1 251 86 1 317 86 1 429 86 1 181 87 1 365 87 1 383 87 1 227 88 1 297 88 1 341 88 1 156 89 1 404 89 1 501 89 1 215 90 1 260 90 1 361 90 1 194 91 1 333 91 1 410 91 1 284 92 1 417 92 1 480 92 1 206 93 1 462 93 1 477 93 1 177 94 1 434 94 1 492 94 1 171 95 1 474 95 1 508 95 1 174 96 1 444 96 1 482 96 1 40 97 1 119 97 1 332 97 1 136 98 1 309 98 1 336 98 1 187 99 1 261 99 1 429 99 1 89 100 1 260 100 1 310 100 1 98 101 1 344 101 1 369 101 1 156 102 1 435 102 1 460 102 1 44 103 1 80 103 1 291 103 1 30 104 1 123 104 1 346 104 1 48 105 1 257 105 1 365 105 1 78 106 1 183 106 1 392 106 1 349 107 1 358 107 1 402 107 1 126 108 1 197 108 1 452 108 1 56 109 1 78 109 1 120 109 1 3 110 1 16 110 1 430 110 1 212 111 1 264 111 1 301 111 1 43 112 1 260 112 1 419 112 1 111 113 1 459 113 1 462 113 1 183 114 1 195 114 1 406 114 1 63 115 1 390 115 1 410 115 1 54 116 1 147 116 1 342 116 1 35 117 1 217 117 1 493 117 1 63 118 1 467 118 1 500 118 1 333 119 1 353 119 1 390 119 1 158 120 1 165 120 1 498 120 1 96 121 1 120 121 1 378 121 1 100 122 1 151 122 1 230 122 1 270 123 1 335 123 1 403 123 1 38 124 1 83 124 1 188 124 1 97 125 1 106 125 1 443 125 1 4 126 1 28 126 1 258 126 1 139 127 1 326 127 1 505 127 1 163 128 1 252 128 1 499 128 1 67 129 1 70 129 1 148 129 1 251 130 1 298 130 1 508 130 1 139 131 1 182 131 1 485 131 1 42 132 1 153 132 1 241 132 1 214 133 1 300 133 1 382 133 1 117 134 1 260 134 1 289 134 1 26 135 1 122 135 1 264 135 1 98 136 1 111 136 1 182 136 1 132 137 1 143 137 1 455 137 1 105 138 1 302 138 1 481 138 1 13 139 1 135 139 1 264 139 1 61 140 1 235 140 1 451 140 1 330 141 1 362 141 1 489 141 1 223 142 1 236 142 1 483 142 1 183 143 1 232 143 1 485 143 1 95 144 1 287 144 1 365 144 1 295 145 1 371 145 1 376 145 1 95 146 1 309 146 1 447 146 1 55 147 1 248 147 1 301 147 1 29 148 1 248 148 1 382 148 1 65 149 1 176 149 1 278 149 1 35 150 1 215 150 1 237 150 1 75 151 1 169 151 1 409 151 1 130 152 1 183 152 1 285 152 1 8 153 1 155 153 1 168 153 1 98 154 1 140 154 1 292 154 1 344 155 1 446 155 1 463 155 1 46 156 1 91 156 1 290 156 1 239 157 1 277 157 1 482 157 1 155 158 1 263 158 1 339 158 1 131 159 1 234 159 1 323 159 1 75 160 1 126 160 1 376 160 1 246 161 1 376 161 1 386 161 1 3 162 1 335 162 1 495 162 1 44 163 1 162 163 1 286 163 1 260 164 1 490 164 1 502 164 1 199 165 1 398 165 1 450 165 1 21 166 1 182 166 1 322 166 1 99 167 1 105 167 1 115 167 1 118 168 1 378 168 1 390 168 1 76 169 1 469 169 1 483 169 1 8 170 1 159 170 1 370 170 1 87 171 1 119 171 1 426 171 1 271 172 1 457 172 1 461 172 1 257 173 1 292 173 1 441 173 1 171 174 1 249 174 1 406 174 1 98 175 1 108 175 1 162 175 1 44 176 1 59 176 1 73 176 1 255 177 1 451 177 1 506 177 1 17 178 1 20 178 1 256 178 1 276 179 1 362 179 1 511 179 1 91 180 1 228 180 1 507 180 1 50 181 1 57 181 1 107 181 1 21 182 1 306 182 1 498 182 1 90 183 1 459 183 1 491 183 1 262 184 1 301 184 1 323 184 1 118 185 1 208 185 1 274 185 1 208 186 1 329 186 1 478 186 1 214 187 1 357 187 1 516 187 1 35 188 1 82 188 1 337 188 1 140 189 1 396 189 1 450 189 1 159 190 1 279 190 1 304 190 1 58 191 1 137 191 1 183 191 1 277 192 1 396 192 1 502 192 1 158 193 1 272 193 1 285 193 1 180 194 1 202 194 1 249 194 1 53 195 1 396 195 1 420 195 1 93 196 1 282 196 1 427 196 1 58 197 1 120 197 1 349 197 1 264 198 1 308 198 1 386 198 1 40 199 1 389 199 1 508 199 1 98 200 1 287 200 1 353 200 1 4 201 1 43 201 1 413 201 1 284 202 1 311 202 1 500 202 1 183 203 1 371 203 1 375 203 1 24 204 1 59 204 1 304 204 1 7 205 1 326 205 1 485 205 1 123 206 1 125 206 1 410 206 1 133 207 1 223 207 1 484 207 1 57 208 1 190 208 1 306 208 1 223 209 1 285 209 1 353 209 1 124 210 1 134 210 1 431 210 1 156 211 1 348 211 1 377 211 1 202 212 1 219 212 1 239 212 1 34 213 1 74 213 1 156 213 1 324 214 1 343 214 1 438 214 1 67 215 1 72 215 1 402 215 1 452 216 1 455 216 1 499 216 1 63 217 1 367 217 1 503 217 1 123 218 1 179 218 1 200 218 1 303 219 1 368 219 1 458 219 1 303 220 1 395 220 1 419 220 1 169 221 1 267 221 1 490 221 1 40 222 1 227 222 1 230 222 1 32 223 1 59 223 1 203 223 1 24 224 1 225 224 1 397 224 1 32 225 1 65 225 1 73 225 1 5 226 1 21 226 1 436 226 1 220 227 1 300 227 1 398 227 1 218 228 1 310 228 1 326 228 1 103 229 1 266 229 1 293 229 1 222 230 1 259 230 1 363 230 1 113 231 1 362 231 1 416 231 1 111 232 1 168 232 1 497 232 1 100 233 1 104 233 1 458 233 1 30 234 1 69 234 1 250 234 1 146 235 1 344 235 1 443 235 1 266 236 1 417 236 1 460 236 1 4 237 1 47 237 1 60 237 1 195 238 1 335 238 1 476 238 1 14 239 1 103 239 1 227 239 1 55 240 1 126 240 1 392 240 1 145 241 1 394 241 1 494 241 1 37 242 1 41 242 1 352 242 1 40 243 1 122 243 1 422 243 1 18 244 1 166 244 1 383 244 1 184 245 1 313 245 1 468 245 1 188 246 1 265 246 1 344 246 1 267 247 1 438 247 1 443 247 1 38 248 1 118 248 1 199 248 1 116 249 1 265 249 1 425 249 1 35 250 1 204 250 1 417 250 1 60 251 1 316 251 1 496 251 1 53 252 1 439 252 1 452 252 1 133 253 1 142 253 1 472 253 1 58 254 1 90 254 1 396 254 1 9 255 1 180 255 1 246 255 1 296 256 1 440 256 1 449 256 1 63 257 1 281 257 1 458 257 1 57 258 1 392 258 1 395 258 1 30 259 1 312 259 1 398 259 1 17 260 1 210 260 1 283 260 1 86 261 1 137 261 1 253 261 1 157 262 1 189 262 1 391 262 1 105 263 1 240 263 1 307 263 1 29 264 1 247 264 1 268 264 1 73 265 1 240 265 1 337 265 1 285 266 1 320 266 1 501 266 1 122 267 1 251 267 1 269 267 1 9 268 1 157 268 1 499 268 1 31 269 1 324 269 1 409 269 1 199 270 1 208 270 1 408 270 1 347 271 1 415 271 1 434 271 1 73 272 1 245 272 1 365 272 1 55 273 1 180 273 1 264 273 1 135 274 1 262 274 1 407 274 1 86 275 1 94 275 1 267 275 1 2 276 1 141 276 1 150 276 1 42 277 1 191 277 1 253 277 1 67 278 1 110 278 1 254 278 1 119 279 1 165 279 1 269 279 1 21 280 1 165 280 1 185 280 1 351 281 1 361 281 1 434 281 1 35 282 1 61 282 1 306 282 1 213 283 1 488 283 1 508 283 1 173 284 1 378 284 1 510 284 1 61 285 1 138 285 1 287 285 1 176 286 1 178 286 1 347 286 1 194 287 1 229 287 1 318 287 1 109 288 1 396 288 1 439 288 1 72 289 1 157 289 1 235 289 1 77 290 1 168 290 1 307 290 1 273 291 1 397 291 1 503 291 1 133 292 1 266 292 1 281 292 1 244 293 1 289 293 1 303 293 1 90 294 1 240 294 1 468 294 1 313 295 1 347 295 1 366 295 1 220 296 1 299 296 1 415 296 1 27 297 1 84 297 1 434 297 1 192 298 1 451 298 1 480 298 1 63 299 1 133 299 1 368 299 1 299 300 1 391 300 1 497 300 1 208 301 1 469 301 1 500 301 1 202 302 1 324 302 1 504 302 1 3 303 1 137 303 1 195 303 1 66 304 1 116 304 1 188 304 1 14 305 1 60 305 1 125 305 1 19 306 1 365 306 1 502 306 1 127 307 1 207 307 1 496 307 1 68 308 1 200 308 1 475 308 1 348 309 1 472 309 1 492 309 1 246 310 1 450 310 1 481 310 1 26 311 1 428 311 1 501 311 1 87 312 1 330 312 1 407 312 1 75 313 1 139 313 1 309 313 1 20 314 1 159 314 1 302 314 1 215 315 1 223 315 1 372 315 1 93 316 1 217 316 1 442 316 1 212 317 1 330 317 1 357 317 1 180 318 1 245 318 1 464 318 1 149 319 1 234 319 1 436 319 1 114 320 1 238 320 1 249 320 1 133 321 1 418 321 1 429 321 1 48 322 1 391 322 1 493 322 1 235 323 1 367 323 1 412 323 1 17 324 1 308 324 1 340 324 1 247 325 1 291 325 1 385 325 1 257 326 1 304 326 1 489 326 1 42 327 1 67 327 1 172 327 1 149 328 1 244 328 1 353 328 1 57 329 1 288 329 1 322 329 1 363 330 1 382 330 1 477 330 1 75 331 1 130 331 1 439 331 1 334 332 1 461 332 1 509 332 1 67 333 1 335 333 1 490 333 1 97 334 1 118 334 1 311 334 1 29 335 1 187 335 1 478 335 1 109 336 1 334 336 1 364 336 1 241 337 1 324 337 1 450 337 1 59 338 1 441 338 1 448 338 1 332 339 1 462 339 1 479 339 1 15 340 1 112 340 1 372 340 1 228 341 1 445 341 1 463 341 1 6 342 1 59 342 1 495 342 1 186 343 1 214 343 1 312 343 1 81 344 1 230 344 1 269 344 1 271 345 1 372 345 1 425 345 1 31 346 1 44 346 1 341 346 1 103 347 1 106 347 1 501 347 1 122 348 1 167 348 1 415 348 1 150 349 1 181 349 1 193 349 1 105 350 1 211 350 1 225 350 1 110 351 1 193 351 1 481 351 1 92 352 1 148 352 1 437 352 1 277 353 1 409 353 1 433 353 1 213 354 1 264 354 1 281 354 1 358 355 1 364 355 1 509 355 1 37 356 1 353 356 1 428 356 1 100 357 1 174 357 1 278 357 1 129 358 1 263 358 1 509 358 1 46 359 1 283 359 1 458 359 1 367 360 1 406 360 1 506 360 1 118 361 1 312 361 1 481 361 1 26 362 1 349 362 1 509 362 1 115 363 1 118 363 1 463 363 1 211 364 1 455 364 1 504 364 1 3 365 1 181 365 1 209 365 1 77 366 1 259 366 1 415 366 1 217 367 1 323 367 1 510 367 1 23 368 1 175 368 1 347 368 1 24 369 1 33 369 1 246 369 1 145 370 1 152 370 1 388 370 1 70 371 1 299 371 1 307 371 1 48 372 1 141 372 1 237 372 1 68 373 1 320 373 1 472 373 1 179 374 1 314 374 1 407 374 1 112 375 1 131 375 1 318 375 1 30 376 1 62 376 1 228 376 1 110 377 1 235 377 1 441 377 1 177 378 1 335 378 1 417 378 1 14 379 1 231 379 1 467 379 1 97 380 1 340 380 1 469 380 1 68 381 1 244 381 1 457 381 1 66 382 1 425 382 1 515 382 1 103 383 1 169 383 1 324 383 1 105 384 1 311 384 1 402 384 1 83 385 1 497 385 1 510 385 1 231 386 1 241 386 1 254 386 1 29 387 1 37 387 1 112 387 1 383 388 1 436 388 1 470 388 1 45 389 1 117 389 1 345 389 1 64 390 1 184 390 1 463 390 1 42 391 1 294 391 1 302 391 1 32 392 1 157 392 1 378 392 1 201 393 1 350 393 1 416 393 1 269 394 1 301 394 1 312 394 1 67 395 1 94 395 1 241 395 1 9 396 1 162 396 1 381 396 1 149 397 1 273 397 1 327 397 1 3 398 1 13 398 1 94 398 1 34 399 1 182 399 1 207 399 1 86 400 1 101 400 1 335 400 1 373 401 1 486 401 1 498 401 1 51 402 1 341 402 1 343 402 1 409 403 1 434 403 1 476 403 1 130 404 1 322 404 1 427 404 1 39 405 1 74 405 1 444 405 1 80 406 1 144 406 1 351 406 1 177 407 1 284 407 1 414 407 1 118 408 1 139 408 1 186 408 1 34 409 1 111 409 1 178 409 1 248 410 1 403 410 1 457 410 1 175 411 1 214 411 1 459 411 1 50 412 1 52 412 1 460 412 1 37 413 1 323 413 1 333 413 1 76 414 1 327 414 1 471 414 1 14 415 1 172 415 1 334 415 1 7 416 1 227 416 1 389 416 1 122 417 1 230 417 1 398 417 1 49 418 1 208 418 1 327 418 1 262 419 1 277 419 1 315 419 1 27 420 1 221 420 1 504 420 1 79 421 1 120 421 1 481 421 1 102 422 1 409 422 1 437 422 1 295 423 1 339 423 1 386 423 1 113 424 1 123 424 1 431 424 1 26 425 1 223 425 1 488 425 1 111 426 1 252 426 1 442 426 1 135 427 1 209 427 1 241 427 1 10 428 1 237 428 1 356 428 1 356 429 1 429 429 1 471 429 1 97 430 1 295 430 1 402 430 1 21 431 1 253 431 1 424 431 1 2 432 1 35 432 1 433 432 1 129 433 1 162 433 1 287 433 1 451 434 1 454 434 1 459 434 1 140 435 1 243 435 1 298 435 1 60 436 1 199 436 1 463 436 1 42 437 1 295 437 1 322 437 1 191 438 1 385 438 1 458 438 1 33 439 1 360 439 1 386 439 1 152 440 1 241 440 1 464 440 1 25 441 1 170 441 1 232 441 1 279 442 1 390 442 1 492 442 1 99 443 1 175 443 1 285 443 1 22 444 1 402 444 1 441 444 1 124 445 1 198 445 1 227 445 1 168 446 1 288 446 1 292 446 1 305 447 1 397 447 1 405 447 1 34 448 1 275 448 1 377 448 1 104 449 1 330 449 1 336 449 1 224 450 1 267 450 1 466 450 1 154 451 1 161 451 1 441 451 1 50 452 1 341 452 1 513 452 1 71 453 1 283 453 1 350 453 1 97 454 1 193 454 1 276 454 1 60 455 1 62 455 1 142 455 1 209 456 1 258 456 1 492 456 1 73 457 1 162 457 1 176 457 1 57 458 1 254 458 1 404 458 1 10 459 1 259 459 1 286 459 1 322 460 1 374 460 1 437 460 1 159 461 1 408 461 1 483 461 1 375 462 1 415 462 1 474 462 1 104 463 1 268 463 1 446 463 1 17 464 1 54 464 1 291 464 1 273 465 1 312 465 1 323 465 1 374 466 1 424 466 1 474 466 1 81 467 1 302 467 1 463 467 1 121 468 1 342 468 1 414 468 1 160 469 1 376 469 1 496 469 1 157 470 1 172 470 1 231 470 1 411 471 1 453 471 1 493 471 1 88 472 1 214 472 1 491 472 1 236 473 1 281 473 1 464 473 1 166 474 1 379 474 1 484 474 1 88 475 1 447 475 1 448 475 1 53 476 1 170 476 1 191 476 1 164 477 1 434 477 1 441 477 1 135 478 1 230 478 1 258 478 1 36 479 1 121 479 1 296 479 1 375 480 1 423 480 1 497 480 1 291 481 1 305 481 1 381 481 1 211 482 1 441 482 1 484 482 1 4 483 1 276 483 1 419 483 1 233 484 1 244 484 1 318 484 1 84 485 1 121 485 1 125 485 1 94 486 1 110 486 1 222 486 1 47 487 1 461 487 1 487 487 1 29 488 1 323 488 1 516 488 1 10 489 1 151 489 1 285 489 1 306 490 1 309 490 1 502 490 1 54 491 1 431 491 1 449 491 1 183 492 1 202 492 1 294 492 1 16 493 1 200 493 1 211 493 1 128 494 1 329 494 1 384 494 1 42 495 1 210 495 1 358 495 1 86 496 1 352 496 1 451 496 1 96 497 1 164 497 1 414 497 1 488 498 1 503 498 1 509 498 1 31 499 1 113 499 1 135 499 1 109 500 1 126 500 1 241 500 1 150 501 1 231 501 1 444 501 1 42 502 1 152 502 1 392 502 1 332 503 1 454 503 1 474 503 1 110 504 1 311 504 1 469 504 1 315 505 1 433 505 1 444 505 1 44 506 1 86 506 1 203 506 1 321 507 1 449 507 1 500 507 1 82 508 1 130 508 1 282 508 1 109 509 1 231 509 1 350 509 1 235 510 1 262 510 1 286 510 1 80 511 1 189 511 1 231 511 1 212 512 1 290 512 1 478 512 1 35 513 1 288 513 1 365 513 1 128 514 1 429 514 1 465 514 1 80 515 1 143 515 1 467 515 1 215 516 1 311 516 1 472 516 1 7 517 1 70 517 1 497 517 1 115 518 1 226 518 1 484 518 1 44 519 1 451 519 1 513 519 1 102 520 1 277 520 1 513 520 1 281 521 1 362 521 1 455 521 1 86 522 1 134 522 1 242 522 1 27 523 1 51 523 1 502 523 1 79 524 1 81 524 1 385 524 1 280 525 1 343 525 1 504 525 1 33 526 1 171 526 1 358 526 1 227 527 1 466 527 1 479 527 1 142 528 1 149 528 1 390 528 1 113 529 1 194 529 1 407 529 1 104 530 1 310 530 1 416 530 1 102 531 1 119 531 1 266 531 1 281 532 1 315 532 1 330 532 1 161 533 1 186 533 1 206 533 1 238 534 1 300 534 1 412 534 1 197 535 1 469 535 1 471 535 1 106 536 1 349 536 1 496 536 1 111 537 1 427 537 1 498 537 1 72 538 1 123 538 1 380 538 1 163 539 1 168 539 1 325 539 1 76 540 1 117 540 1 159 540 1 41 541 1 174 541 1 219 541 1 58 542 1 144 542 1 504 542 1 4 543 1 224 543 1 447 543 1 46 544 1 116 544 1 340 544 1 45 545 1 173 545 1 383 545 1 122 546 1 198 546 1 416 546 1 281 547 1 457 547 1 475 547 1 219 548 1 287 548 1 373 548 1 52 549 1 147 549 1 410 549 1 53 550 1 65 550 1 486 550 1 45 551 1 258 551 1 368 551 1 66 552 1 272 552 1 501 552 1 264 553 1 499 553 1 511 553 1 69 554 1 315 554 1 413 554 1 37 555 1 81 555 1 91 555 1 16 556 1 186 556 1 278 556 1 138 557 1 168 557 1 257 557 1 221 558 1 341 558 1 486 558 1 176 559 1 316 559 1 369 559 1 176 560 1 190 560 1 506 560 1 98 561 1 178 561 1 214 561 1 42 562 1 291 562 1 402 562 1 75 563 1 232 563 1 430 563 1 92 564 1 280 564 1 348 564 1 80 565 1 174 565 1 476 565 1 158 566 1 260 566 1 333 566 1 163 567 1 242 567 1 331 567 1 71 568 1 226 568 1 441 568 1 26 569 1 181 569 1 204 569 1 49 570 1 120 570 1 187 570 1 109 571 1 113 571 1 450 571 1 108 572 1 138 572 1 194 572 1 70 573 1 294 573 1 382 573 1 85 574 1 106 574 1 224 574 1 378 575 1 481 575 1 497 575 1 186 576 1 287 576 1 411 576 1 178 577 1 377 577 1 462 577 1 9 578 1 104 578 1 252 578 1 12 579 1 125 579 1 275 579 1 4 580 1 383 580 1 457 580 1 74 581 1 234 581 1 446 581 1 25 582 1 369 582 1 415 582 1 65 583 1 289 583 1 502 583 1 207 584 1 348 584 1 413 584 1 8 585 1 52 585 1 121 585 1 339 586 1 389 586 1 515 586 1 5 587 1 239 587 1 485 587 1 45 588 1 219 588 1 476 588 1 205 589 1 344 589 1 353 589 1 163 590 1 378 590 1 381 590 1 234 591 1 338 591 1 488 591 1 14 592 1 418 592 1 480 592 1 56 593 1 137 593 1 385 593 1 77 594 1 363 594 1 425 594 1 62 595 1 116 595 1 314 595 1 185 596 1 207 596 1 224 596 1 55 597 1 335 597 1 383 597 1 89 598 1 449 598 1 506 598 1 19 599 1 202 599 1 280 599 1 228 600 1 358 600 1 515 600 1 117 601 1 216 601 1 388 601 1 113 602 1 134 602 1 422 602 1 80 603 1 319 603 1 386 603 1 9 604 1 100 604 1 396 604 1 8 605 1 11 605 1 408 605 1 38 606 1 265 606 1 329 606 1 74 607 1 233 607 1 340 607 1 10 608 1 172 608 1 371 608 1 112 609 1 267 609 1 359 609 1 32 610 1 45 610 1 138 610 1 205 611 1 256 611 1 431 611 1 8 612 1 23 612 1 200 612 1 242 613 1 318 613 1 361 613 1 142 614 1 221 614 1 393 614 1 119 615 1 169 615 1 189 615 1 26 616 1 245 616 1 436 616 1 158 617 1 306 617 1 411 617 1 28 618 1 281 618 1 319 618 1 148 619 1 181 619 1 316 619 1 54 620 1 289 620 1 478 620 1 69 621 1 116 621 1 293 621 1 28 622 1 173 622 1 390 622 1 81 623 1 346 623 1 422 623 1 91 624 1 327 624 1 414 624 1 142 625 1 194 625 1 445 625 1 78 626 1 205 626 1 232 626 1 158 627 1 326 627 1 503 627 1 49 628 1 345 628 1 397 628 1 66 629 1 201 629 1 443 629 1 45 630 1 111 630 1 296 630 1 179 631 1 448 631 1 493 631 1 249 632 1 366 632 1 374 632 1 91 633 1 399 633 1 432 633 1 90 634 1 293 634 1 430 634 1 219 635 1 222 635 1 493 635 1 153 636 1 170 636 1 206 636 1 339 637 1 358 637 1 437 637 1 90 638 1 442 638 1 477 638 1 14 639 1 19 639 1 295 639 1 56 640 1 187 640 1 352 640 1 60 641 1 159 641 1 492 641 1 392 642 1 456 642 1 509 642 1 9 643 1 299 643 1 375 643 1 162 644 1 206 644 1 214 644 1 274 645 1 290 645 1 314 645 1 102 646 1 169 646 1 430 646 1 79 647 1 253 647 1 283 647 1 89 648 1 412 648 1 467 648 1 206 649 1 252 649 1 491 649 1 114 650 1 202 650 1 350 650 1 365 651 1 377 651 1 421 651 1 2 652 1 331 652 1 499 652 1 232 653 1 497 653 1 499 653 1 172 654 1 203 654 1 511 654 1 36 655 1 313 655 1 367 655 1 8 656 1 115 656 1 125 656 1 14 657 1 255 657 1 379 657 1 317 658 1 373 658 1 482 658 1 173 659 1 364 659 1 476 659 1 65 660 1 237 660 1 505 660 1 2 661 1 245 661 1 411 661 1 37 662 1 291 662 1 446 662 1 112 663 1 269 663 1 507 663 1 273 664 1 342 664 1 390 664 1 38 665 1 54 665 1 264 665 1 179 666 1 218 666 1 290 666 1 107 667 1 269 667 1 419 667 1 244 668 1 373 668 1 460 668 1 9 669 1 170 669 1 474 669 1 173 670 1 256 670 1 414 670 1 67 671 1 270 671 1 422 671 1 141 672 1 213 672 1 317 672 1 265 673 1 305 673 1 327 673 1 156 674 1 288 674 1 437 674 1 96 675 1 203 675 1 422 675 1 102 676 1 315 676 1 404 676 1 158 677 1 238 677 1 320 677 1 77 678 1 87 678 1 416 678 1 96 679 1 192 679 1 242 679 1 331 680 1 334 680 1 362 680 1 2 681 1 26 681 1 429 681 1 102 682 1 127 682 1 366 682 1 302 683 1 352 683 1 399 683 1 94 684 1 240 684 1 438 684 1 23 685 1 277 685 1 293 685 1 93 686 1 114 686 1 245 686 1 92 687 1 102 687 1 448 687 1 408 688 1 432 688 1 461 688 1 95 689 1 139 689 1 390 689 1 229 690 1 332 690 1 415 690 1 2 691 1 278 691 1 356 691 1 25 692 1 128 692 1 482 692 1 326 693 1 411 693 1 504 693 1 62 694 1 91 694 1 284 694 1 82 695 1 317 695 1 428 695 1 166 696 1 296 696 1 378 696 1 185 697 1 265 697 1 268 697 1 7 698 1 343 698 1 400 698 1 170 699 1 291 699 1 308 699 1 15 700 1 217 700 1 468 700 1 30 701 1 124 701 1 416 701 1 216 702 1 350 702 1 393 702 1 93 703 1 220 703 1 394 703 1 94 704 1 242 704 1 405 704 1 186 705 1 220 705 1 355 705 1 24 706 1 62 706 1 408 706 1 124 707 1 233 707 1 438 707 1 268 708 1 300 708 1 323 708 1 36 709 1 190 709 1 424 709 1 108 710 1 393 710 1 401 710 1 156 711 1 445 711 1 483 711 1 448 712 1 513 712 1 516 712 1 65 713 1 478 713 1 493 713 1 134 714 1 346 714 1 362 714 1 356 715 1 375 715 1 424 715 1 79 716 1 131 716 1 372 716 1 91 717 1 99 717 1 234 717 1 165 718 1 272 718 1 515 718 1 63 719 1 160 719 1 386 719 1 30 720 1 355 720 1 382 720 1 123 721 1 279 721 1 500 721 1 56 722 1 112 722 1 314 722 1 164 723 1 305 723 1 402 723 1 97 724 1 107 724 1 425 724 1 348 725 1 403 725 1 460 725 1 262 726 1 336 726 1 456 726 1 72 727 1 109 727 1 172 727 1 294 728 1 322 728 1 501 728 1 3 729 1 143 729 1 247 729 1 33 730 1 371 730 1 495 730 1 36 731 1 147 731 1 173 731 1 143 732 1 204 732 1 492 732 1 79 733 1 192 733 1 226 733 1 31 734 1 308 734 1 476 734 1 158 735 1 180 735 1 439 735 1 124 736 1 279 736 1 346 736 1 46 737 1 127 737 1 293 737 1 131 738 1 194 738 1 353 738 1 115 739 1 145 739 1 317 739 1 103 740 1 239 740 1 435 740 1 33 741 1 124 741 1 152 741 1 280 742 1 288 742 1 487 742 1 22 743 1 24 743 1 119 743 1 69 744 1 177 744 1 348 744 1 80 745 1 191 745 1 424 745 1 343 746 1 433 746 1 499 746 1 386 747 1 429 747 1 494 747 1 295 748 1 308 748 1 495 748 1 107 749 1 270 749 1 469 749 1 39 750 1 136 750 1 251 750 1 122 751 1 330 751 1 501 751 1 18 752 1 73 752 1 401 752 1 215 753 1 469 753 1 516 753 1 78 754 1 302 754 1 308 754 1 166 755 1 274 755 1 457 755 1 136 756 1 221 756 1 280 756 1 163 757 1 246 757 1 454 757 1 222 758 1 393 758 1 440 758 1 5 759 1 328 759 1 432 759 1 405 760 1 431 760 1 470 760 1 196 761 1 454 761 1 497 761 1 253 762 1 391 762 1 399 762 1 401 763 1 426 763 1 451 763 1 78 764 1 269 764 1 344 764 1 138 765 1 434 765 1 487 765 1 184 766 1 329 766 1 432 766 1 190 767 1 245 767 1 439 767 1 131 768 1 149 768 1 516 768 1 5 769 1 151 769 1 278 769 1 141 770 1 338 770 1 461 770 1 91 771 1 328 771 1 462 771 1 84 772 1 299 772 1 313 772 1 10 773 1 433 773 1 475 773 1 210 774 1 374 774 1 386 774 1 184 775 1 230 775 1 233 775 1 171 776 1 202 776 1 396 776 1 39 777 1 472 777 1 475 777 1 20 778 1 177 778 1 439 778 1 283 779 1 360 779 1 424 779 1 92 780 1 402 780 1 495 780 1 337 781 1 387 781 1 431 781 1 257 782 1 316 782 1 434 782 1 172 783 1 181 783 1 433 783 1 160 784 1 418 784 1 436 784 1 28 785 1 52 785 1 456 785 1 134 786 1 198 786 1 403 786 1 170 787 1 174 787 1 341 787 1 18 788 1 20 788 1 423 788 1 110 789 1 197 789 1 359 789 1 108 790 1 110 790 1 296 790 1 85 791 1 294 791 1 324 791 1 21 792 1 268 792 1 309 792 1 62 793 1 123 793 1 480 793 1 122 794 1 151 794 1 508 794 1 23 795 1 43 795 1 435 795 1 10 796 1 87 796 1 144 796 1 128 797 1 250 797 1 478 797 1 161 798 1 237 798 1 401 798 1 152 799 1 247 799 1 358 799 1 156 800 1 233 800 1 287 800 1 65 801 1 143 801 1 484 801 1 249 802 1 367 802 1 512 802 1 124 803 1 231 803 1 443 803 1 191 804 1 339 804 1 367 804 1 282 805 1 381 805 1 459 805 1 139 806 1 141 806 1 452 806 1 220 807 1 233 807 1 445 807 1 238 808 1 355 808 1 468 808 1 24 809 1 204 809 1 316 809 1 60 810 1 225 810 1 271 810 1 66 811 1 382 811 1 514 811 1 41 812 1 208 812 1 388 812 1 196 813 1 224 813 1 448 813 1 185 814 1 206 814 1 474 814 1 68 815 1 159 815 1 413 815 1 72 816 1 87 816 1 307 816 1 51 817 1 80 817 1 86 817 1 121 818 1 275 818 1 293 818 1 12 819 1 103 819 1 320 819 1 218 820 1 365 820 1 433 820 1 13 821 1 33 821 1 302 821 1 101 822 1 374 822 1 394 822 1 89 823 1 117 823 1 222 823 1 93 824 1 145 824 1 414 824 1 298 825 1 332 825 1 344 825 1 293 826 1 368 826 1 456 826 1 197 827 1 309 827 1 356 827 1 201 828 1 297 828 1 475 828 1 332 829 1 421 829 1 468 829 1 36 830 1 63 830 1 456 830 1 128 831 1 212 831 1 426 831 1 160 832 1 213 832 1 494 832 1 182 833 1 373 833 1 428 833 1 42 834 1 107 834 1 339 834 1 19 835 1 249 835 1 288 835 1 53 836 1 247 836 1 494 836 1 259 837 1 318 837 1 448 837 1 116 838 1 242 838 1 270 838 1 331 839 1 464 839 1 504 839 1 131 840 1 312 840 1 507 840 1 84 841 1 164 841 1 381 841 1 125 842 1 240 842 1 405 842 1 43 843 1 103 843 1 379 843 1 285 844 1 328 844 1 498 844 1 79 845 1 345 845 1 469 845 1 112 846 1 262 846 1 489 846 1 66 847 1 160 847 1 247 847 1 66 848 1 209 848 1 354 848 1 288 849 1 401 849 1 445 849 1 93 850 1 325 850 1 500 850 1 93 851 1 249 851 1 467 851 1 158 852 1 186 852 1 217 852 1 87 853 1 201 853 1 277 853 1 104 854 1 112 854 1 385 854 1 134 855 1 250 855 1 318 855 1 131 856 1 262 856 1 513 856 1 156 857 1 215 857 1 218 857 1 58 858 1 70 858 1 253 858 1 33 859 1 473 859 1 483 859 1 6 860 1 170 860 1 249 860 1 42 861 1 126 861 1 325 861 1 16 862 1 143 862 1 161 862 1 130 863 1 211 863 1 351 863 1 182 864 1 313 864 1 505 864 1 354 865 1 370 865 1 475 865 1 141 866 1 183 866 1 440 866 1 12 867 1 220 867 1 229 867 1 65 868 1 174 868 1 412 868 1 60 869 1 388 869 1 461 869 1 1 870 1 346 870 1 371 870 1 169 871 1 351 871 1 427 871 1 175 872 1 182 872 1 377 872 1 82 873 1 173 873 1 439 873 1 44 874 1 48 874 1 338 874 1 82 875 1 214 875 1 473 875 1 108 876 1 370 876 1 500 876 1 17 877 1 163 877 1 292 877 1 69 878 1 92 878 1 167 878 1 28 879 1 95 879 1 315 879 1 29 880 1 228 880 1 230 880 1 80 881 1 134 881 1 261 881 1 145 882 1 461 882 1 464 882 1 25 883 1 251 883 1 294 883 1 66 884 1 398 884 1 407 884 1 88 885 1 205 885 1 226 885 1 14 886 1 282 886 1 406 886 1 64 887 1 372 887 1 488 887 1 290 888 1 363 888 1 426 888 1 160 889 1 348 889 1 432 889 1 46 890 1 83 890 1 515 890 1 113 891 1 321 891 1 511 891 1 1 892 1 175 892 1 421 892 1 251 893 1 265 893 1 489 893 1 55 894 1 160 894 1 439 894 1 61 895 1 252 895 1 282 895 1 185 896 1 479 896 1 515 896 1 199 897 1 340 897 1 483 897 1 153 898 1 257 898 1 325 898 1 13 899 1 64 899 1 323 899 1 237 900 1 285 900 1 462 900 1 150 901 1 419 901 1 443 901 1 269 902 1 369 902 1 491 902 1 5 903 1 23 903 1 377 903 1 100 904 1 196 904 1 384 904 1 126 905 1 283 905 1 349 905 1 243 906 1 286 906 1 491 906 1 312 907 1 327 907 1 353 907 1 56 908 1 97 908 1 226 908 1 219 909 1 411 909 1 420 909 1 203 910 1 331 910 1 495 910 1 156 911 1 184 911 1 428 911 1 144 912 1 297 912 1 409 912 1 164 913 1 325 913 1 473 913 1 161 914 1 284 914 1 461 914 1 87 915 1 341 915 1 357 915 1 236 916 1 245 916 1 473 916 1 203 917 1 302 917 1 371 917 1 10 918 1 294 918 1 343 918 1 216 919 1 231 919 1 360 919 1 13 920 1 247 920 1 398 920 1 166 921 1 319 921 1 500 921 1 239 922 1 404 922 1 465 922 1 19 923 1 190 923 1 401 923 1 141 924 1 180 924 1 319 924 1 51 925 1 491 925 1 513 925 1 284 926 1 441 926 1 483 926 1 61 927 1 147 927 1 216 927 1 11 928 1 303 928 1 405 928 1 75 929 1 148 929 1 424 929 1 205 930 1 291 930 1 473 930 1 31 931 1 350 931 1 455 931 1 128 932 1 471 932 1 516 932 1 49 933 1 197 933 1 235 933 1 2 934 1 396 934 1 476 934 1 33 935 1 187 935 1 308 935 1 5 936 1 92 936 1 248 936 1 135 937 1 201 937 1 281 937 1 100 938 1 269 938 1 482 938 1 194 939 1 200 939 1 244 939 1 78 940 1 264 940 1 481 940 1 154 941 1 250 941 1 407 941 1 245 942 1 338 942 1 345 942 1 51 943 1 104 943 1 309 943 1 321 944 1 470 944 1 506 944 1 121 945 1 379 945 1 417 945 1 160 946 1 248 946 1 485 946 1 114 947 1 168 947 1 363 947 1 74 948 1 271 948 1 320 948 1 44 949 1 113 949 1 192 949 1 113 950 1 146 950 1 470 950 1 59 951 1 205 951 1 231 951 1 259 952 1 267 952 1 513 952 1 6 953 1 71 953 1 246 953 1 49 954 1 296 954 1 299 954 1 144 955 1 221 955 1 447 955 1 6 956 1 385 956 1 467 956 1 22 957 1 153 957 1 163 957 1 214 958 1 347 958 1 510 958 1 171 959 1 482 959 1 498 959 1 98 960 1 252 960 1 337 960 1 181 961 1 339 961 1 417 961 1 225 962 1 453 962 1 491 962 1 368 963 1 390 963 1 457 963 1 8 964 1 289 964 1 422 964 1 274 965 1 284 965 1 340 965 1 154 966 1 229 966 1 422 966 1 262 967 1 269 967 1 298 967 1 234 968 1 263 968 1 273 968 1 21 969 1 167 969 1 301 969 1 19 970 1 27 970 1 447 970 1 352 971 1 369 971 1 449 971 1 9 972 1 80 972 1 356 972 1 165 973 1 243 973 1 374 973 1 20 974 1 432 974 1 436 974 1 90 975 1 230 975 1 299 975 1 85 976 1 153 976 1 225 976 1 255 977 1 280 977 1 452 977 1 367 978 1 397 978 1 468 978 1 174 979 1 239 979 1 490 979 1 29 980 1 380 980 1 403 980 1 145 981 1 208 981 1 432 981 1 43 982 1 244 982 1 387 982 1 1 983 1 8 983 1 38 983 1 3 984 1 72 984 1 277 984 1 153 985 1 271 985 1 340 985 1 10 986 1 354 986 1 514 986 1 280 987 1 328 987 1 485 987 1 77 988 1 233 988 1 355 988 1 221 989 1 224 989 1 253 989 1 12 990 1 297 990 1 400 990 1 11 991 1 297 991 1 389 991 1 142 992 1 204 992 1 460 992 1 370 993 1 461 993 1 492 993 1 143 994 1 190 994 1 356 994 1 116 995 1 259 995 1 300 995 1 145 996 1 151 996 1 400 996 1 223 997 1 306 997 1 404 997 1 330 998 1 375 998 1 404 998 1 36 999 1 195 999 1 498 999 1 9 1000 1 189 1000 1 369 1000 1 157 1001 1 304 1001 1 330 1001 1 99 1002 1 155 1002 1 273 1002 1 271 1003 1 279 1003 1 311 1003 1 88 1004 1 232 1004 1 248 1004 1 291 1005 1 352 1005 1 491 1005 1 49 1006 1 123 1006 1 126 1006 1 89 1007 1 177 1007 1 216 1007 1 47 1008 1 339 1008 1 495 1008 1 94 1009 1 401 1009 1 449 1009 1 394 1010 1 493 1010 1 505 1010 1 344 1011 1 384 1011 1 407 1011 1 305 1012 1 376 1012 1 380 1012 1 38 1013 1 340 1013 1 425 1013 1 30 1014 1 38 1014 1 246 1014 1 39 1015 1 171 1015 1 437 1015 1 6 1016 1 79 1016 1 153 1016 1 129 1017 1 161 1017 1 211 1017 1 1 1018 1 78 1018 1 256 1018 1 242 1019 1 340 1019 1 387 1019 1 268 1020 1 293 1020 1 515 1020 1 200 1021 1 238 1021 1 297 1021 1 298 1022 1 465 1022 1 507 1022 1 182 1023 1 191 1023 1 440 1023 1 297 1024 1 435 1024 1 480 1024 1 175 1025 1 179 1025 1 361 1025 1 27 1026 1 244 1026 1 412 1026 1 117 1027 1 387 1027 1 395 1027 1 135 1028 1 184 1028 1 431 1028 1 108 1029 1 211 1029 1 412 1029 1 246 1030 1 307 1030 1 371 1030 1 60 1031 1 352 1031 1 506 1031 1 38 1032 1 342 1032 1 435 1032 1 225 1033 1 316 1033 1 421 1033 1 48 1034 1 196 1034 1 462 1034 1 12 1035 1 351 1035 1 504 1035 1 124 1036 1 353 1036 1 483 1036 1 229 1037 1 445 1037 1 472 1037 1 55 1038 1 69 1038 1 436 1038 1 50 1039 1 97 1039 1 507 1039 1 311 1040 1 368 1040 1 370 1040 1 70 1041 1 180 1041 1 183 1041 1 133 1042 1 274 1042 1 485 1042 1 119 1043 1 136 1043 1 330 1043 1 151 1044 1 275 1044 1 389 1044 1 199 1045 1 342 1045 1 381 1045 1 73 1046 1 189 1046 1 473 1046 1 70 1047 1 75 1047 1 272 1047 1 98 1048 1 395 1048 1 449 1048 1 26 1049 1 145 1049 1 364 1049 1 76 1050 1 147 1050 1 192 1050 1 99 1051 1 205 1051 1 345 1051 1 154 1052 1 185 1052 1 312 1052 1 112 1053 1 222 1053 1 252 1053 1 76 1054 1 218 1054 1 333 1054 1 236 1055 1 413 1055 1 501 1055 1 273 1056 1 297 1056 1 388 1056 1 22 1057 1 374 1057 1 491 1057 1 109 1058 1 144 1058 1 246 1058 1 206 1059 1 453 1059 1 507 1059 1 61 1060 1 372 1060 1 393 1060 1 34 1061 1 138 1061 1 355 1061 1 146 1062 1 302 1062 1 358 1062 1 292 1063 1 316 1063 1 367 1063 1 132 1064 1 237 1064 1 417 1064 1 254 1065 1 356 1065 1 499 1065 1 42 1066 1 46 1066 1 81 1066 1 1 1067 1 40 1067 1 516 1067 1 121 1068 1 339 1068 1 494 1068 1 310 1069 1 343 1069 1 490 1069 1 33 1070 1 184 1070 1 228 1070 1 41 1071 1 242 1071 1 480 1071 1 49 1072 1 125 1072 1 367 1072 1 168 1073 1 216 1073 1 427 1073 1 226 1074 1 345 1074 1 387 1074 1 247 1075 1 305 1075 1 349 1075 1 459 1076 1 477 1076 1 510 1076 1 47 1077 1 148 1077 1 349 1077 1 211 1078 1 214 1078 1 411 1078 1 187 1079 1 199 1079 1 321 1079 1 41 1080 1 303 1080 1 449 1080 1 58 1081 1 306 1081 1 315 1081 1 8 1082 1 123 1082 1 307 1082 1 388 1083 1 440 1083 1 458 1083 1 359 1084 1 404 1084 1 490 1084 1 129 1085 1 292 1085 1 462 1085 1 83 1086 1 210 1086 1 323 1086 1 129 1087 1 328 1087 1 406 1087 1 190 1088 1 350 1088 1 452 1088 1 55 1089 1 210 1089 1 456 1089 1 189 1090 1 337 1090 1 357 1090 1 48 1091 1 94 1091 1 153 1091 1 258 1092 1 309 1092 1 359 1092 1 60 1093 1 408 1093 1 503 1093 1 58 1094 1 151 1094 1 375 1094 1 13 1095 1 76 1095 1 352 1095 1 205 1096 1 276 1096 1 385 1096 1 263 1097 1 266 1097 1 392 1097 1 232 1098 1 325 1098 1 442 1098 1 151 1099 1 482 1099 1 485 1099 1 96 1100 1 155 1100 1 260 1100 1 77 1101 1 332 1101 1 445 1101 1 31 1102 1 254 1102 1 423 1102 1 53 1103 1 209 1103 1 512 1103 1 64 1104 1 321 1104 1 410 1104 1 174 1105 1 297 1105 1 361 1105 1 197 1106 1 243 1106 1 396 1106 1 200 1107 1 355 1107 1 421 1107 1 25 1108 1 259 1108 1 514 1108 1 93 1109 1 164 1109 1 300 1109 1 191 1110 1 221 1110 1 412 1110 1 139 1111 1 453 1111 1 487 1111 1 217 1112 1 361 1112 1 489 1112 1 5 1113 1 15 1113 1 19 1113 1 117 1114 1 338 1114 1 352 1114 1 51 1115 1 357 1115 1 447 1115 1 212 1116 1 289 1116 1 347 1116 1 72 1117 1 240 1117 1 321 1117 1 28 1118 1 149 1118 1 400 1118 1 2 1119 1 249 1119 1 394 1119 1 236 1120 1 263 1120 1 284 1120 1 114 1121 1 219 1121 1 510 1121 1 320 1122 1 447 1122 1 508 1122 1 35 1123 1 434 1123 1 502 1123 1 106 1124 1 261 1124 1 281 1124 1 74 1125 1 300 1125 1 459 1125 1 28 1126 1 159 1126 1 177 1126 1 425 1127 1 479 1127 1 483 1127 1 282 1128 1 342 1128 1 388 1128 1 49 1129 1 93 1129 1 399 1129 1 132 1130 1 213 1130 1 379 1130 1 2 1131 1 57 1131 1 180 1131 1 82 1132 1 141 1132 1 186 1132 1 47 1133 1 177 1133 1 209 1133 1 143 1134 1 335 1134 1 502 1134 1 142 1135 1 410 1135 1 418 1135 1 100 1136 1 315 1136 1 326 1136 1 25 1137 1 188 1137 1 214 1137 1 79 1138 1 166 1138 1 432 1138 1 43 1139 1 223 1139 1 274 1139 1 24 1140 1 307 1140 1 401 1140 1 23 1141 1 354 1141 1 413 1141 1 399 1142 1 492 1142 1 512 1142 1 92 1143 1 170 1143 1 322 1143 1 97 1144 1 187 1144 1 264 1144 1 290 1145 1 453 1145 1 513 1145 1 31 1146 1 195 1146 1 239 1146 1 69 1147 1 127 1147 1 501 1147 1 109 1148 1 349 1148 1 464 1148 1 165 1149 1 410 1149 1 419 1149 1 83 1150 1 151 1150 1 259 1150 1 41 1151 1 207 1151 1 418 1151 1 98 1152 1 130 1152 1 306 1152 1 84 1153 1 147 1153 1 307 1153 1 195 1154 1 216 1154 1 319 1154 1 319 1155 1 417 1155 1 484 1155 1 347 1156 1 439 1156 1 512 1156 1 222 1157 1 369 1157 1 453 1157 1 37 1158 1 83 1158 1 363 1158 1 39 1159 1 461 1159 1 508 1159 1 104 1160 1 326 1160 1 454 1160 1 5 1161 1 406 1161 1 424 1161 1 196 1162 1 381 1162 1 450 1162 1 207 1163 1 227 1163 1 275 1163 1 47 1164 1 126 1164 1 270 1164 1 4 1165 1 270 1165 1 301 1165 1 223 1166 1 258 1166 1 260 1166 1 141 1167 1 394 1167 1 512 1167 1 32 1168 1 108 1168 1 161 1168 1 47 1169 1 331 1169 1 494 1169 1 81 1170 1 228 1170 1 323 1170 1 96 1171 1 333 1171 1 346 1171 1 31 1172 1 72 1172 1 189 1172 1 68 1173 1 95 1173 1 348 1173 1 101 1174 1 209 1174 1 376 1174 1 145 1175 1 319 1175 1 345 1175 1 177 1176 1 351 1176 1 464 1176 1 85 1177 1 346 1177 1 421 1177 1 129 1178 1 379 1178 1 381 1178 1 271 1179 1 284 1179 1 342 1179 1 334 1180 1 392 1180 1 464 1180 1 224 1181 1 315 1181 1 359 1181 1 36 1182 1 191 1182 1 455 1182 1 117 1183 1 147 1183 1 492 1183 1 56 1184 1 463 1184 1 470 1184 1 70 1185 1 95 1185 1 359 1185 1 410 1186 1 486 1186 1 505 1186 1 212 1187 1 415 1187 1 465 1187 1 87 1188 1 167 1188 1 343 1188 1 298 1189 1 324 1189 1 420 1189 1 361 1190 1 377 1190 1 435 1190 1 160 1191 1 390 1191 1 428 1191 1 164 1192 1 375 1192 1 510 1192 1 34 1193 1 410 1193 1 478 1193 1 19 1194 1 92 1194 1 193 1194 1 52 1195 1 354 1195 1 419 1195 1 66 1196 1 106 1196 1 380 1196 1 310 1197 1 364 1197 1 414 1197 1 4 1198 1 106 1198 1 181 1198 1 105 1199 1 370 1199 1 394 1199 1 40 1200 1 132 1200 1 266 1200 1 180 1201 1 193 1201 1 396 1201 1 137 1202 1 396 1202 1 491 1202 1 263 1203 1 321 1203 1 395 1203 1 37 1204 1 134 1204 1 192 1204 1 73 1205 1 119 1205 1 421 1205 1 237 1206 1 393 1206 1 404 1206 1 29 1207 1 327 1207 1 507 1207 1 135 1208 1 195 1208 1 456 1208 1 20 1209 1 506 1209 1 512 1209 1 7 1210 1 30 1210 1 251 1210 1 336 1211 1 341 1211 1 384 1211 1 197 1212 1 253 1212 1 442 1212 1 68 1213 1 233 1213 1 421 1213 1 2 1214 1 82 1214 1 334 1214 1 131 1215 1 283 1215 1 384 1215 1 28 1216 1 55 1216 1 317 1216 1 60 1217 1 207 1217 1 320 1217 1 88 1218 1 301 1218 1 391 1218 1 94 1219 1 430 1219 1 477 1219 1 58 1220 1 167 1220 1 171 1220 1 83 1221 1 248 1221 1 336 1221 1 38 1222 1 163 1222 1 273 1222 1 218 1223 1 475 1223 1 500 1223 1 7 1224 1 77 1224 1 446 1224 1 1 1225 1 218 1225 1 414 1225 1 71 1226 1 124 1226 1 340 1226 1 296 1227 1 367 1227 1 484 1227 1 149 1228 1 176 1228 1 306 1228 1 355 1229 1 415 1229 1 453 1229 1 146 1230 1 426 1230 1 445 1230 1 179 1231 1 188 1231 1 327 1231 1 64 1232 1 380 1232 1 405 1232 1 2 1233 1 58 1233 1 406 1233 1 418 1234 1 488 1234 1 506 1234 1 155 1235 1 209 1235 1 236 1235 1 127 1236 1 170 1236 1 491 1236 1 76 1237 1 164 1237 1 371 1237 1 348 1238 1 354 1238 1 508 1238 1 54 1239 1 134 1239 1 471 1239 1 83 1240 1 212 1240 1 446 1240 1 251 1241 1 334 1241 1 501 1241 1 48 1242 1 255 1242 1 290 1242 1 27 1243 1 220 1243 1 366 1243 1 185 1244 1 349 1244 1 507 1244 1 32 1245 1 110 1245 1 250 1245 1 84 1246 1 288 1246 1 394 1246 1 4 1247 1 227 1247 1 403 1247 1 89 1248 1 350 1248 1 458 1248 1 107 1249 1 201 1249 1 266 1249 1 360 1250 1 406 1250 1 509 1250 1 257 1251 1 319 1251 1 351 1251 1 29 1252 1 442 1252 1 493 1252 1 54 1253 1 117 1253 1 252 1253 1 318 1254 1 330 1254 1 510 1254 1 56 1255 1 228 1255 1 456 1255 1 95 1256 1 148 1256 1 176 1256 1 295 1257 1 424 1257 1 440 1257 1 51 1258 1 267 1258 1 419 1258 1 45 1259 1 155 1259 1 378 1259 1 47 1260 1 452 1260 1 506 1260 1 24 1261 1 161 1261 1 399 1261 1 256 1262 1 345 1262 1 442 1262 1 173 1263 1 217 1263 1 319 1263 1 92 1264 1 474 1264 1 514 1264 1 154 1265 1 179 1265 1 462 1265 1 63 1266 1 208 1266 1 275 1266 1 255 1267 1 328 1267 1 459 1267 1 321 1268 1 367 1268 1 378 1268 1 132 1269 1 254 1269 1 350 1269 1 76 1270 1 173 1270 1 226 1270 1 116 1271 1 210 1271 1 494 1271 1 92 1272 1 259 1272 1 430 1272 1 308 1273 1 458 1273 1 494 1273 1 20 1274 1 296 1274 1 394 1274 1 52 1275 1 277 1275 1 486 1275 1 178 1276 1 206 1276 1 442 1276 1 292 1277 1 296 1277 1 381 1277 1 87 1278 1 162 1278 1 233 1278 1 216 1279 1 480 1279 1 500 1279 1 275 1280 1 430 1280 1 504 1280 1 16 1281 1 183 1281 1 504 1281 1 152 1282 1 202 1282 1 308 1282 1 151 1283 1 268 1283 1 494 1283 1 165 1284 1 263 1284 1 366 1284 1 226 1285 1 274 1285 1 353 1285 1 276 1286 1 312 1286 1 469 1286 1 36 1287 1 374 1287 1 439 1287 1 1 1288 1 96 1288 1 463 1288 1 333 1289 1 445 1289 1 516 1289 1 30 1290 1 66 1290 1 109 1290 1 428 1291 1 463 1291 1 473 1291 1 17 1292 1 321 1292 1 473 1292 1 136 1293 1 250 1293 1 343 1293 1 11 1294 1 204 1294 1 383 1294 1 192 1295 1 194 1295 1 435 1295 1 45 1296 1 129 1296 1 282 1296 1 40 1297 1 78 1297 1 509 1297 1 34 1298 1 342 1298 1 420 1298 1 268 1299 1 485 1299 1 514 1299 1 68 1300 1 289 1300 1 333 1300 1 292 1301 1 387 1301 1 450 1301 1 54 1302 1 67 1302 1 307 1302 1 85 1303 1 119 1303 1 477 1303 1 120 1304 1 256 1304 1 375 1304 1 116 1305 1 241 1305 1 398 1305 1 206 1306 1 341 1306 1 466 1306 1 92 1307 1 110 1307 1 382 1307 1 99 1308 1 215 1308 1 479 1308 1 213 1309 1 276 1309 1 452 1309 1 91 1310 1 226 1310 1 283 1310 1 15 1311 1 186 1311 1 285 1311 1 14 1312 1 276 1312 1 495 1312 1 43 1313 1 266 1313 1 482 1313 1 112 1314 1 198 1314 1 425 1314 1 305 1315 1 331 1315 1 430 1315 1 319 1316 1 455 1316 1 505 1316 1 157 1317 1 167 1317 1 322 1317 1 136 1318 1 232 1318 1 444 1318 1 76 1319 1 89 1319 1 503 1319 1 25 1320 1 355 1320 1 497 1320 1 141 1321 1 166 1321 1 449 1321 1 95 1322 1 336 1322 1 486 1322 1 82 1323 1 147 1323 1 338 1323 1 11 1324 1 397 1324 1 440 1324 1 32 1325 1 167 1325 1 355 1325 1 41 1326 1 260 1326 1 488 1326 1 74 1327 1 175 1327 1 413 1327 1 49 1328 1 282 1328 1 352 1328 1 301 1329 1 465 1329 1 513 1329 1 122 1330 1 265 1330 1 331 1330 1 128 1331 1 178 1331 1 333 1331 1 338 1332 1 453 1332 1 506 1332 1 94 1333 1 189 1333 1 423 1333 1 129 1334 1 132 1334 1 183 1334 1 265 1335 1 273 1335 1 361 1335 1 71 1336 1 202 1336 1 474 1336 1 11 1337 1 132 1337 1 461 1337 1 109 1338 1 209 1338 1 409 1338 1 22 1339 1 62 1339 1 425 1339 1 328 1340 1 400 1340 1 411 1340 1 13 1341 1 397 1341 1 481 1341 1 105 1342 1 114 1342 1 397 1342 1 22 1343 1 225 1343 1 470 1343 1 196 1344 1 299 1344 1 332 1344 1 240 1345 1 288 1345 1 395 1345 1 198 1346 1 259 1346 1 343 1346 1 7 1347 1 228 1347 1 298 1347 1 146 1348 1 149 1348 1 159 1348 1 181 1349 1 319 1349 1 476 1349 1 115 1350 1 160 1350 1 512 1350 1 62 1351 1 327 1351 1 398 1351 1 61 1352 1 406 1352 1 444 1352 1 218 1353 1 411 1353 1 516 1353 1 64 1354 1 217 1354 1 505 1354 1 170 1355 1 374 1355 1 499 1355 1 222 1356 1 286 1356 1 397 1356 1 15 1357 1 229 1357 1 421 1357 1 99 1358 1 236 1358 1 271 1358 1 36 1359 1 129 1359 1 130 1359 1 31 1360 1 232 1360 1 424 1360 1 258 1361 1 403 1361 1 456 1361 1 69 1362 1 266 1362 1 270 1362 1 41 1363 1 432 1363 1 463 1363 1 56 1364 1 189 1364 1 431 1364 1 60 1365 1 115 1365 1 334 1365 1 129 1366 1 338 1366 1 397 1366 1 33 1367 1 120 1367 1 399 1367 1 103 1368 1 342 1368 1 509 1368 1 57 1369 1 197 1369 1 335 1369 1 21 1370 1 248 1370 1 341 1370 1 103 1371 1 310 1371 1 443 1371 1 127 1372 1 269 1372 1 392 1372 1 165 1373 1 298 1373 1 509 1373 1 13 1374 1 79 1374 1 338 1374 1 39 1375 1 156 1375 1 284 1375 1 328 1376 1 453 1376 1 468 1376 1 105 1377 1 325 1377 1 382 1377 1 228 1378 1 468 1378 1 477 1378 1 107 1379 1 116 1379 1 443 1379 1 120 1380 1 246 1380 1 331 1380 1 86 1381 1 210 1381 1 455 1381 1 98 1382 1 438 1382 1 445 1382 1 27 1383 1 43 1383 1 169 1383 1 54 1384 1 256 1384 1 296 1384 1 205 1385 1 378 1385 1 511 1385 1 167 1386 1 294 1386 1 491 1386 1 244 1387 1 398 1387 1 408 1387 1 74 1388 1 84 1388 1 427 1388 1 238 1389 1 366 1389 1 408 1389 1 38 1390 1 122 1390 1 318 1390 1 89 1391 1 311 1391 1 405 1391 1 5 1392 1 174 1392 1 182 1392 1 120 1393 1 346 1393 1 392 1393 1 329 1394 1 377 1394 1 390 1394 1 37 1395 1 320 1395 1 488 1395 1 37 1396 1 111 1396 1 219 1396 1 278 1397 1 309 1397 1 368 1397 1 24 1398 1 243 1398 1 369 1398 1 140 1399 1 162 1399 1 384 1399 1 118 1400 1 329 1400 1 372 1400 1 127 1401 1 165 1401 1 336 1401 1 203 1402 1 307 1402 1 399 1402 1 23 1403 1 229 1403 1 502 1403 1 106 1404 1 266 1404 1 515 1404 1 286 1405 1 305 1405 1 356 1405 1 243 1406 1 267 1406 1 486 1406 1 72 1407 1 94 1407 1 325 1407 1 152 1408 1 230 1408 1 293 1408 1 86 1409 1 454 1409 1 504 1409 1 61 1410 1 131 1410 1 162 1410 1 22 1411 1 72 1411 1 451 1411 1 11 1412 1 50 1412 1 295 1412 1 6 1413 1 209 1413 1 339 1413 1 34 1414 1 199 1414 1 220 1414 1 256 1415 1 283 1415 1 471 1415 1 269 1416 1 329 1416 1 421 1416 1 158 1417 1 178 1417 1 351 1417 1 175 1418 1 400 1418 1 433 1418 1 211 1419 1 236 1419 1 334 1419 1 317 1420 1 388 1420 1 392 1420 1 253 1421 1 423 1421 1 465 1421 1 50 1422 1 127 1422 1 303 1422 1 50 1423 1 190 1423 1 418 1423 1 27 1424 1 287 1424 1 306 1424 1 130 1425 1 175 1425 1 316 1425 1 454 1426 1 477 1426 1 515 1426 1 41 1427 1 274 1427 1 317 1427 1 250 1428 1 314 1428 1 438 1428 1 267 1429 1 465 1429 1 482 1429 1 144 1430 1 389 1430 1 454 1430 1 303 1431 1 410 1431 1 475 1431 1 11 1432 1 350 1432 1 370 1432 1 104 1433 1 131 1433 1 459 1433 1 63 1434 1 263 1434 1 496 1434 1 18 1435 1 108 1435 1 505 1435 1 124 1436 1 201 1436 1 384 1436 1 104 1437 1 127 1437 1 185 1437 1 58 1438 1 130 1438 1 172 1438 1 140 1439 1 468 1439 1 497 1439 1 25 1440 1 59 1440 1 171 1440 1 151 1441 1 223 1441 1 281 1441 1 58 1442 1 148 1442 1 400 1442 1 239 1443 1 341 1443 1 418 1443 1 286 1444 1 336 1444 1 499 1444 1 155 1445 1 414 1445 1 436 1445 1 217 1446 1 235 1446 1 391 1446 1 27 1447 1 36 1447 1 108 1447 1 182 1448 1 288 1448 1 468 1448 1 10 1449 1 171 1449 1 280 1449 1 398 1450 1 405 1450 1 422 1450 1 65 1451 1 111 1451 1 313 1451 1 190 1452 1 395 1452 1 467 1452 1 81 1453 1 271 1453 1 398 1453 1 69 1454 1 122 1454 1 464 1454 1 119 1455 1 154 1455 1 167 1455 1 78 1456 1 150 1456 1 254 1456 1 20 1457 1 164 1457 1 168 1457 1 136 1458 1 403 1458 1 448 1458 1 106 1459 1 460 1459 1 465 1459 1 51 1460 1 374 1460 1 505 1460 1 188 1461 1 213 1461 1 471 1461 1 200 1462 1 208 1462 1 312 1462 1 350 1463 1 464 1463 1 467 1463 1 303 1464 1 310 1464 1 418 1464 1 133 1465 1 143 1465 1 403 1465 1 53 1466 1 356 1466 1 374 1466 1 73 1467 1 204 1467 1 470 1467 1 15 1468 1 81 1468 1 459 1468 1 158 1469 1 273 1469 1 347 1469 1 262 1470 1 314 1470 1 468 1470 1 150 1471 1 287 1471 1 395 1471 1 192 1472 1 380 1472 1 425 1472 1 10 1473 1 16 1473 1 19 1473 1 289 1474 1 410 1474 1 472 1474 1 162 1475 1 313 1475 1 510 1475 1 362 1476 1 385 1476 1 456 1476 1 234 1477 1 410 1477 1 428 1477 1 232 1478 1 406 1478 1 495 1478 1 16 1479 1 23 1479 1 75 1479 1 225 1480 1 240 1480 1 255 1480 1 334 1481 1 370 1481 1 467 1481 1 294 1482 1 373 1482 1 465 1482 1 6 1483 1 416 1483 1 425 1483 1 105 1484 1 355 1484 1 512 1484 1 125 1485 1 204 1485 1 387 1485 1 68 1486 1 176 1486 1 426 1486 1 72 1487 1 187 1487 1 335 1487 1 176 1488 1 329 1488 1 453 1488 1 239 1489 1 357 1489 1 474 1489 1 20 1490 1 292 1490 1 487 1490 1 163 1491 1 282 1491 1 480 1491 1 353 1492 1 384 1492 1 462 1492 1 118 1493 1 212 1493 1 344 1493 1 117 1494 1 273 1494 1 511 1494 1 170 1495 1 202 1495 1 207 1495 1 90 1496 1 262 1496 1 309 1496 1 258 1497 1 385 1497 1 419 1497 1 50 1498 1 198 1498 1 419 1498 1 45 1499 1 191 1499 1 395 1499 1 88 1500 1 402 1500 1 424 1500 1 87 1501 1 230 1501 1 272 1501 1 128 1502 1 266 1502 1 346 1502 1 85 1503 1 179 1503 1 382 1503 1 4 1504 1 389 1504 1 460 1504 1 62 1505 1 210 1505 1 352 1505 1 34 1506 1 165 1506 1 169 1506 1 268 1507 1 375 1507 1 442 1507 1 258 1508 1 261 1508 1 476 1508 1 183 1509 1 287 1509 1 404 1509 1 25 1510 1 302 1510 1 473 1510 1 146 1511 1 471 1511 1 511 1511 1 85 1512 1 250 1512 1 330 1512 1 44 1513 1 144 1513 1 196 1513 1 133 1514 1 284 1514 1 334 1514 1 107 1515 1 279 1515 1 329 1515 1 140 1516 1 277 1516 1 438 1516 1 87 1517 1 382 1517 1 438 1517 1 64 1518 1 118 1518 1 503 1518 1 18 1519 1 65 1519 1 255 1519 1 70 1520 1 126 1520 1 481 1520 1 76 1521 1 235 1521 1 500 1521 1 95 1522 1 158 1522 1 420 1522 1 309 1523 1 354 1523 1 472 1523 1 147 1524 1 150 1524 1 509 1524 1 34 1525 1 53 1525 1 394 1525 1 308 1526 1 331 1526 1 450 1526 1 19 1527 1 68 1527 1 255 1527 1 237 1528 1 280 1528 1 472 1528 1 21 1529 1 51 1529 1 373 1529 1 217 1530 1 219 1530 1 365 1530 1 115 1531 1 432 1531 1 488 1531 1 49 1532 1 90 1532 1 305 1532 1 177 1533 1 236 1533 1 496 1533 1 201 1534 1 213 1534 1 418 1534 1 88 1535 1 137 1535 1 193 1535 1 149 1536 1 289 1536 1 368 1536 1 163 1537 1 256 1537 1 305 1537 1 5 1538 1 366 1538 1 508 1538 1 325 1539 1 469 1539 1 495 1539 1 455 1540 1 484 1540 1 494 1540 1 96 1541 1 125 1541 1 199 1541 1 52 1542 1 289 1542 1 420 1542 1 77 1543 1 454 1543 1 514 1543 1 24 1544 1 49 1544 1 450 1544 1 152 1545 1 155 1545 1 201 1545 1 130 1546 1 392 1546 1 496 1546 1 207 1547 1 221 1547 1 238 1547 1 67 1548 1 181 1548 1 264 1548 1 220 1549 1 238 1549 1 411 1549 1 36 1550 1 137 1550 1 358 1550 1 18 1551 1 85 1551 1 229 1551 1 48 1552 1 222 1552 1 287 1552 1 88 1553 1 105 1553 1 493 1553 1 40 1554 1 228 1554 1 346 1554 1 148 1555 1 351 1555 1 409 1555 1 179 1556 1 380 1556 1 489 1556 1 6 1557 1 22 1557 1 102 1557 1 155 1558 1 379 1558 1 480 1558 1 19 1559 1 322 1559 1 413 1559 1 138 1560 1 409 1560 1 435 1560 1 74 1561 1 215 1561 1 290 1561 1 39 1562 1 234 1562 1 317 1562 1 51 1563 1 174 1563 1 303 1563 1 198 1564 1 275 1564 1 348 1564 1 141 1565 1 356 1565 1 376 1565 1 142 1566 1 182 1566 1 314 1566 1 106 1567 1 212 1567 1 422 1567 1 103 1568 1 272 1568 1 297 1568 1 67 1569 1 203 1569 1 343 1569 1 111 1570 1 194 1570 1 250 1570 1 107 1571 1 426 1571 1 513 1571 1 186 1572 1 215 1572 1 466 1572 1 68 1573 1 279 1573 1 290 1573 1 37 1574 1 234 1574 1 289 1574 1 166 1575 1 279 1575 1 431 1575 1 28 1576 1 388 1576 1 503 1576 1 94 1577 1 164 1577 1 451 1577 1 289 1578 1 318 1578 1 516 1578 1 15 1579 1 219 1579 1 328 1579 1 126 1580 1 205 1580 1 305 1580 1 121 1581 1 152 1581 1 427 1581 1 43 1582 1 74 1582 1 361 1582 1 108 1583 1 304 1583 1 307 1583 1 117 1584 1 242 1584 1 469 1584 1 128 1585 1 136 1585 1 341 1585 1 406 1586 1 440 1586 1 476 1586 1 71 1587 1 304 1587 1 371 1587 1 333 1588 1 466 1588 1 489 1588 1 39 1589 1 238 1589 1 328 1589 1 38 1590 1 347 1590 1 355 1590 1 69 1591 1 201 1591 1 310 1591 1 313 1592 1 373 1592 1 437 1592 1 267 1593 1 275 1593 1 515 1593 1 17 1594 1 325 1594 1 402 1594 1 249 1595 1 364 1595 1 386 1595 1 40 1596 1 362 1596 1 403 1596 1 351 1597 1 393 1597 1 412 1597 1 40 1598 1 103 1598 1 357 1598 1 202 1599 1 394 1599 1 440 1599 1 138 1600 1 365 1600 1 486 1600 1 262 1601 1 359 1601 1 448 1601 1 105 1602 1 338 1602 1 399 1602 1 324 1603 1 332 1603 1 337 1603 1 75 1604 1 322 1604 1 514 1604 1 267 1605 1 369 1605 1 426 1605 1 123 1606 1 270 1606 1 478 1606 1 141 1607 1 216 1607 1 506 1607 1 156 1608 1 363 1608 1 462 1608 1 78 1609 1 135 1609 1 360 1609 1 112 1610 1 353 1610 1 466 1610 1 408 1611 1 460 1611 1 496 1611 1 97 1612 1 157 1612 1 279 1612 1 173 1613 1 282 1613 1 397 1613 1 91 1614 1 402 1614 1 479 1614 1 99 1615 1 414 1615 1 428 1615 1 239 1616 1 393 1616 1 505 1616 1 25 1617 1 196 1617 1 421 1617 1 376 1618 1 403 1618 1 461 1618 1 25 1619 1 178 1619 1 257 1619 1 254 1620 1 294 1620 1 437 1620 1 185 1621 1 276 1621 1 418 1621 1 157 1622 1 193 1622 1 315 1622 1 15 1623 1 282 1623 1 440 1623 1 61 1624 1 217 1624 1 498 1624 1 71 1625 1 86 1625 1 337 1625 1 113 1626 1 234 1626 1 387 1626 1 237 1627 1 351 1627 1 490 1627 1 237 1628 1 433 1628 1 437 1628 1 48 1629 1 337 1629 1 466 1629 1 29 1630 1 64 1630 1 220 1630 1 89 1631 1 236 1631 1 500 1631 1 1 1632 1 184 1632 1 479 1632 1 79 1633 1 423 1633 1 470 1633 1 41 1634 1 64 1634 1 218 1634 1 3 1635 1 362 1635 1 380 1635 1 24 1636 1 241 1636 1 431 1636 1 13 1637 1 210 1637 1 243 1637 1 187 1638 1 247 1638 1 396 1638 1 96 1639 1 483 1639 1 492 1639 1 52 1640 1 298 1640 1 443 1640 1 30 1641 1 122 1641 1 507 1641 1 137 1642 1 191 1642 1 373 1642 1 70 1643 1 243 1643 1 477 1643 1 82 1644 1 245 1644 1 395 1644 1 1 1645 1 46 1645 1 188 1645 1 47 1646 1 458 1646 1 496 1646 1 34 1647 1 278 1647 1 366 1647 1 444 1648 1 447 1648 1 457 1648 1 146 1649 1 311 1649 1 422 1649 1 63 1650 1 326 1650 1 336 1650 1 47 1651 1 360 1651 1 376 1651 1 59 1652 1 71 1652 1 450 1652 1 154 1653 1 224 1653 1 391 1653 1 115 1654 1 354 1654 1 494 1654 1 129 1655 1 148 1655 1 245 1655 1 298 1656 1 360 1656 1 384 1656 1 61 1657 1 74 1657 1 77 1657 1 3 1658 1 6 1658 1 44 1658 1 64 1659 1 215 1659 1 478 1659 1 85 1660 1 290 1660 1 438 1660 1 75 1661 1 374 1661 1 454 1661 1 244 1662 1 313 1662 1 407 1662 1 12 1663 1 200 1663 1 285 1663 1 47 1664 1 185 1664 1 508 1664 1 101 1665 1 116 1665 1 198 1665 1 103 1666 1 133 1666 1 457 1666 1 7 1667 1 28 1667 1 261 1667 1 169 1668 1 224 1668 1 322 1668 1 125 1669 1 467 1669 1 492 1669 1 213 1670 1 357 1670 1 482 1670 1 271 1671 1 291 1671 1 338 1671 1 378 1672 1 473 1672 1 512 1672 1 271 1673 1 379 1673 1 405 1673 1 100 1674 1 388 1674 1 420 1674 1 126 1675 1 188 1675 1 312 1675 1 134 1676 1 246 1676 1 464 1676 1 131 1677 1 340 1677 1 416 1677 1 31 1678 1 67 1678 1 80 1678 1 32 1679 1 240 1679 1 412 1679 1 16 1680 1 144 1680 1 249 1680 1 310 1681 1 475 1681 1 501 1681 1 222 1682 1 314 1682 1 412 1682 1 95 1683 1 193 1683 1 452 1683 1 12 1684 1 179 1684 1 505 1684 1 154 1685 1 215 1685 1 426 1685 1 89 1686 1 150 1686 1 379 1686 1 391 1687 1 423 1687 1 451 1687 1 205 1688 1 360 1688 1 479 1688 1 8 1689 1 192 1689 1 387 1689 1 27 1690 1 102 1690 1 137 1690 1 1 1691 1 159 1691 1 340 1691 1 85 1692 1 127 1692 1 507 1692 1 192 1693 1 204 1693 1 483 1693 1 85 1694 1 154 1694 1 459 1694 1 117 1695 1 168 1695 1 203 1695 1 140 1696 1 423 1696 1 453 1696 1 127 1697 1 373 1697 1 420 1697 1 132 1698 1 172 1698 1 358 1698 1 35 1699 1 48 1699 1 84 1699 1 31 1700 1 140 1700 1 499 1700 1 12 1701 1 327 1701 1 503 1701 1 263 1702 1 292 1702 1 408 1702 1 121 1703 1 358 1703 1 443 1703 1 6 1704 1 221 1704 1 350 1704 1 81 1705 1 426 1705 1 515 1705 1 65 1706 1 154 1706 1 200 1706 1 71 1707 1 101 1707 1 295 1707 1 78 1708 1 331 1708 1 376 1708 1 88 1709 1 337 1709 1 442 1709 1 140 1710 1 235 1710 1 369 1710 1 85 1711 1 102 1711 1 423 1711 1 227 1712 1 251 1712 1 346 1712 1 347 1713 1 409 1713 1 420 1713 1 68 1714 1 238 1714 1 445 1714 1 50 1715 1 283 1715 1 456 1715 1 7 1716 1 151 1716 1 465 1716 1 44 1717 1 307 1717 1 337 1717 1 215 1718 1 278 1718 1 475 1718 1 128 1719 1 357 1719 1 438 1719 1 26 1720 1 247 1720 1 258 1720 1 2 1721 1 484 1721 1 506 1721 1 96 1722 1 229 1722 1 377 1722 1 55 1723 1 152 1723 1 364 1723 1 66 1724 1 69 1724 1 185 1724 1 54 1725 1 311 1725 1 321 1725 1 22 1726 1 241 1726 1 305 1726 1 161 1727 1 225 1727 1 282 1727 1 258 1728 1 388 1728 1 509 1728 1 7 1729 1 230 1729 1 301 1729 1 13 1730 1 140 1730 1 321 1730 1 124 1731 1 146 1731 1 398 1731 1 101 1732 1 370 1732 1 456 1732 1 265 1733 1 429 1733 1 511 1733 1 21 1734 1 26 1734 1 465 1734 1 83 1735 1 134 1735 1 281 1735 1 233 1736 1 466 1736 1 516 1736 1 203 1737 1 240 1737 1 450 1737 1 274 1738 1 372 1738 1 435 1738 1 59 1739 1 197 1739 1 286 1739 1 354 1740 1 389 1740 1 416 1740 1 99 1741 1 145 1741 1 475 1741 1 59 1742 1 136 1742 1 254 1742 1 139 1743 1 176 1743 1 393 1743 1 13 1744 1 187 1744 1 469 1744 1 377 1745 1 400 1745 1 414 1745 1 107 1746 1 264 1746 1 429 1746 1 102 1747 1 221 1747 1 460 1747 1 23 1748 1 366 1748 1 389 1748 1 184 1749 1 446 1749 1 478 1749 1 32 1750 1 311 1750 1 492 1750 1 115 1751 1 364 1751 1 503 1751 1 61 1752 1 186 1752 1 453 1752 1 169 1753 1 404 1753 1 444 1753 1 320 1754 1 363 1754 1 393 1754 1 27 1755 1 101 1755 1 467 1755 1 171 1756 1 243 1756 1 294 1756 1 293 1757 1 400 1757 1 420 1757 1 57 1758 1 120 1758 1 157 1758 1 62 1759 1 146 1759 1 279 1759 1 46 1760 1 389 1760 1 513 1760 1 58 1761 1 203 1761 1 497 1761 1 147 1762 1 190 1762 1 204 1762 1 139 1763 1 278 1763 1 444 1763 1 235 1764 1 300 1764 1 514 1764 1 52 1765 1 260 1765 1 348 1765 1 46 1766 1 196 1766 1 459 1766 1 375 1767 1 430 1767 1 454 1767 1 46 1768 1 106 1768 1 270 1768 1 218 1769 1 260 1769 1 413 1769 1 319 1770 1 367 1770 1 440 1770 1 368 1771 1 436 1771 1 494 1771 1 61 1772 1 222 1772 1 434 1772 1 29 1773 1 359 1773 1 465 1773 1 174 1774 1 433 1774 1 505 1774 1 172 1775 1 417 1775 1 429 1775 1 83 1776 1 184 1776 1 384 1776 1 325 1777 1 371 1777 1 514 1777 1 29 1778 1 301 1778 1 466 1778 1 200 1779 1 275 1779 1 486 1779 1 198 1780 1 336 1780 1 475 1780 1 18 1781 1 111 1781 1 510 1781 1 303 1782 1 428 1782 1 436 1782 1 114 1783 1 129 1783 1 437 1783 1 173 1784 1 304 1784 1 434 1784 1 213 1785 1 303 1785 1 457 1785 1 35 1786 1 73 1786 1 516 1786 1 102 1787 1 224 1787 1 454 1787 1 20 1788 1 449 1788 1 473 1788 1 35 1789 1 175 1789 1 332 1789 1 211 1790 1 255 1790 1 433 1790 1 46 1791 1 446 1791 1 479 1791 1 180 1792 1 326 1792 1 499 1792 1 99 1793 1 123 1793 1 405 1793 1 301 1794 1 315 1794 1 482 1794 1 250 1795 1 315 1795 1 497 1795 1 208 1796 1 223 1796 1 503 1796 1 178 1797 1 327 1797 1 411 1797 1 93 1798 1 161 1798 1 351 1798 1 30 1799 1 194 1799 1 199 1799 1 76 1800 1 97 1800 1 380 1800 1 52 1801 1 201 1801 1 216 1801 1 165 1802 1 309 1802 1 420 1802 1 159 1803 1 383 1803 1 387 1803 1 372 1804 1 407 1804 1 426 1804 1 225 1805 1 302 1805 1 450 1805 1 278 1806 1 326 1806 1 404 1806 1 138 1807 1 209 1807 1 370 1807 1 136 1808 1 324 1808 1 447 1808 1 145 1809 1 198 1809 1 386 1809 1 231 1810 1 356 1810 1 452 1810 1 79 1811 1 107 1811 1 135 1811 1 44 1812 1 88 1812 1 253 1812 1 137 1813 1 189 1813 1 482 1813 1 50 1814 1 276 1814 1 416 1814 1 55 1815 1 247 1815 1 276 1815 1 119 1816 1 144 1816 1 171 1816 1 125 1817 1 339 1817 1 419 1817 1 39 1818 1 320 1818 1 420 1818 1 138 1819 1 221 1819 1 288 1819 1 101 1820 1 169 1820 1 241 1820 1 25 1821 1 140 1821 1 474 1821 1 166 1822 1 226 1822 1 391 1822 1 23 1823 1 118 1823 1 368 1823 1 192 1824 1 379 1824 1 488 1824 1 18 1825 1 333 1825 1 365 1825 1 39 1826 1 69 1826 1 400 1826 1 178 1827 1 300 1827 1 363 1827 1 116 1828 1 262 1828 1 354 1828 1 28 1829 1 218 1829 1 274 1829 1 178 1830 1 265 1830 1 415 1830 1 59 1831 1 257 1831 1 345 1831 1 188 1832 1 251 1832 1 376 1832 1 198 1833 1 310 1833 1 467 1833 1 16 1834 1 27 1834 1 138 1834 1 96 1835 1 265 1835 1 479 1835 1 46 1836 1 227 1836 1 295 1836 1 186 1837 1 369 1837 1 391 1837 1 108 1838 1 220 1838 1 382 1838 1 59 1839 1 146 1839 1 483 1839 1 255 1840 1 412 1840 1 444 1840 1 199 1841 1 265 1841 1 446 1841 1 258 1842 1 272 1842 1 390 1842 1 252 1843 1 286 1843 1 304 1843 1 88 1844 1 286 1844 1 510 1844 1 118 1845 1 229 1845 1 507 1845 1 134 1846 1 283 1846 1 385 1846 1 383 1847 1 395 1847 1 452 1847 1 150 1848 1 209 1848 1 216 1848 1 5 1849 1 372 1849 1 457 1849 1 139 1850 1 290 1850 1 472 1850 1 239 1851 1 488 1851 1 498 1851 1 228 1852 1 293 1852 1 438 1852 1 38 1853 1 184 1853 1 408 1853 1 227 1854 1 360 1854 1 388 1854 1 263 1855 1 342 1855 1 368 1855 1 43 1856 1 194 1856 1 498 1856 1 67 1857 1 132 1857 1 464 1857 1 175 1858 1 313 1858 1 462 1858 1 97 1859 1 290 1859 1 466 1859 1 188 1860 1 448 1860 1 508 1860 1 63 1861 1 385 1861 1 515 1861 1 147 1862 1 162 1862 1 321 1862 1 189 1863 1 232 1863 1 375 1863 1 17 1864 1 31 1864 1 337 1864 1 154 1865 1 270 1865 1 448 1865 1 62 1866 1 271 1866 1 273 1866 1 370 1867 1 383 1867 1 455 1867 1 219 1868 1 318 1868 1 435 1868 1 1 1869 1 242 1869 1 380 1869 1 198 1870 1 251 1870 1 354 1870 1 22 1871 1 157 1871 1 254 1871 1 56 1872 1 79 1872 1 242 1872 1 90 1873 1 119 1873 1 324 1873 1 318 1874 1 421 1874 1 489 1874 1 15 1875 1 401 1875 1 477 1875 1 20 1876 1 178 1876 1 245 1876 1 171 1877 1 231 1877 1 427 1877 1 45 1878 1 152 1878 1 195 1878 1 100 1879 1 207 1879 1 508 1879 1 30 1880 1 55 1880 1 187 1880 1 126 1881 1 163 1881 1 210 1881 1 131 1882 1 274 1882 1 328 1882 1 234 1883 1 313 1883 1 498 1883 1 11 1884 1 125 1884 1 145 1884 1 207 1885 1 251 1885 1 485 1885 1 254 1886 1 256 1886 1 304 1886 1 299 1887 1 468 1887 1 493 1887 1 349 1888 1 385 1888 1 392 1888 1 120 1889 1 329 1889 1 507 1889 1 196 1890 1 227 1890 1 324 1890 1 21 1891 1 272 1891 1 400 1891 1 26 1892 1 317 1892 1 419 1892 1 170 1893 1 196 1893 1 430 1893 1 114 1894 1 427 1894 1 439 1894 1 77 1895 1 466 1895 1 513 1895 1 8 1896 1 96 1896 1 432 1896 1 57 1897 1 216 1897 1 417 1897 1 190 1898 1 449 1898 1 496 1898 1 11 1899 1 14 1899 1 364 1899 1 214 1900 1 441 1900 1 474 1900 1 212 1901 1 333 1901 1 511 1901 1 345 1902 1 484 1902 1 493 1902 1 179 1903 1 363 1903 1 435 1903 1 225 1904 1 383 1904 1 487 1904 1 64 1905 1 303 1905 1 366 1905 1 114 1906 1 155 1906 1 364 1906 1 80 1907 1 172 1907 1 455 1907 1 185 1908 1 188 1908 1 384 1908 1 66 1909 1 348 1909 1 359 1909 1 138 1910 1 169 1910 1 195 1910 1 149 1911 1 256 1911 1 329 1911 1 43 1912 1 199 1912 1 263 1912 1 190 1913 1 193 1913 1 349 1913 1 127 1914 1 188 1914 1 248 1914 1 3 1915 1 455 1915 1 486 1915 1 3 1916 1 86 1916 1 371 1916 1 153 1917 1 161 1917 1 166 1917 1 222 1918 1 235 1918 1 257 1918 1 210 1919 1 247 1919 1 471 1919 1 11 1920 1 288 1920 1 339 1920 1 56 1921 1 135 1921 1 380 1921 1 104 1922 1 344 1922 1 357 1922 1 53 1923 1 427 1923 1 437 1923 1 153 1924 1 381 1924 1 441 1924 1 130 1925 1 148 1925 1 191 1925 1 56 1926 1 261 1926 1 443 1926 1 83 1927 1 128 1927 1 268 1927 1 71 1928 1 193 1928 1 197 1928 1 274 1929 1 287 1929 1 444 1929 1 95 1930 1 221 1930 1 306 1930 1 74 1931 1 347 1931 1 363 1931 1 121 1932 1 155 1932 1 160 1932 1 106 1933 1 172 1933 1 346 1933 1 173 1934 1 204 1934 1 345 1934 1 16 1935 1 334 1935 1 376 1935 1 114 1936 1 255 1936 1 401 1936 1 270 1937 1 380 1937 1 479 1937 1 33 1938 1 189 1938 1 195 1938 1 53 1939 1 241 1939 1 243 1939 1 267 1940 1 277 1940 1 514 1940 1 49 1941 1 226 1941 1 481 1941 1 332 1942 1 448 1942 1 489 1942 1 306 1943 1 413 1943 1 445 1943 1 68 1944 1 81 1944 1 432 1944 1 35 1945 1 441 1945 1 451 1945 1 28 1946 1 223 1946 1 460 1946 1 32 1947 1 162 1947 1 252 1947 1 213 1948 1 429 1948 1 443 1948 1 24 1949 1 292 1949 1 332 1949 1 113 1950 1 205 1950 1 283 1950 1 40 1951 1 146 1951 1 416 1951 1 18 1952 1 439 1952 1 502 1952 1 9 1953 1 110 1953 1 140 1953 1 89 1954 1 114 1954 1 164 1954 1 294 1955 1 304 1955 1 415 1955 1 250 1956 1 261 1956 1 359 1956 1 256 1957 1 378 1957 1 470 1957 1 70 1958 1 88 1958 1 90 1958 1 208 1959 1 278 1959 1 411 1959 1 291 1960 1 386 1960 1 425 1960 1 91 1961 1 123 1961 1 422 1961 1 82 1962 1 226 1962 1 352 1962 1 314 1963 1 329 1963 1 344 1963 1 39 1964 1 165 1964 1 501 1964 1 7 1965 1 83 1965 1 386 1965 1 181 1966 1 295 1966 1 335 1966 1 78 1967 1 213 1967 1 458 1967 1 13 1968 1 408 1968 1 449 1968 1 301 1969 1 355 1969 1 478 1969 1 405 1970 1 414 1970 1 480 1970 1 112 1971 1 336 1971 1 477 1971 1 316 1972 1 440 1972 1 487 1972 1 156 1973 1 366 1973 1 413 1973 1 393 1974 1 409 1974 1 444 1974 1 12 1975 1 142 1975 1 244 1975 1 110 1976 1 153 1976 1 157 1976 1 48 1977 1 168 1977 1 451 1977 1 73 1978 1 128 1978 1 423 1978 1 166 1979 1 470 1979 1 480 1979 1 39 1980 1 266 1980 1 297 1980 1 17 1981 1 82 1981 1 284 1981 1 132 1982 1 280 1982 1 495 1982 1 204 1983 1 428 1983 1 431 1983 1 104 1984 1 250 1984 1 384 1984 1 63 1985 1 360 1985 1 418 1985 1 62 1986 1 238 1986 1 363 1986 1 1 1987 1 99 1987 1 325 1987 1 45 1988 1 53 1988 1 245 1988 1 393 1989 1 424 1989 1 447 1989 1 5 1990 1 176 1990 1 313 1990 1 115 1991 1 285 1991 1 485 1991 1 47 1992 1 263 1992 1 436 1992 1 18 1993 1 212 1993 1 391 1993 1 248 1994 1 268 1994 1 357 1994 1 16 1995 1 316 1995 1 512 1995 1 272 1996 1 377 1996 1 490 1996 1 75 1997 1 335 1997 1 487 1997 1 317 1998 1 387 1998 1 417 1998 1 84 1999 1 168 1999 1 512 1999 1 70 2000 1 144 2000 1 324 2000 1 342 2001 1 428 2001 1 496 2001 1 207 2002 1 326 2002 1 366 2002 1 14 2003 1 132 2003 1 152 2003 1 191 2004 1 232 2004 1 452 2004 1 77 2005 1 252 2005 1 343 2005 1 154 2006 1 300 2006 1 361 2006 1 12 2007 1 51 2007 1 389 2007 1 107 2008 1 146 2008 1 254 2008 1 230 2009 1 308 2009 1 446 2009 1 132 2010 1 371 2010 1 471 2010 1 280 2011 1 486 2011 1 502 2011 1 42 2012 1 279 2012 1 399 2012 1 23 2013 1 275 2013 1 485 2013 1 147 2014 1 370 2014 1 395 2014 1 149 2015 1 223 2015 1 345 2015 1 17 2016 1 33 2016 1 474 2016 1 18 2017 1 304 2017 1 337 2017 1 8 2018 1 296 2018 1 481 2018 1 174 2019 1 217 2019 1 249 2019 1 73 2020 1 442 2020 1 510 2020 1 261 2021 1 360 2021 1 458 2021 1 197 2022 1 280 2022 1 514 2022 1 72 2023 1 75 2023 1 90 2023 1 4 2024 1 354 2024 1 362 2024 1 15 2025 1 182 2025 1 463 2025 1 34 2026 1 139 2026 1 347 2026 1 163 2027 1 397 2027 1 477 2027 1 159 2028 1 236 2028 1 257 2028 1 136 2029 1 442 2029 1 489 2029 1 12 2030 1 361 2030 1 405 2030 1 36 2031 1 45 2031 1 143 2031 1 196 2032 1 233 2032 1 259 2032 1 3 2033 1 193 2033 1 286 2033 1 40 2034 1 479 2034 1 495 2034 1 167 2035 1 206 2035 1 382 2035 1 71 2036 1 153 2036 1 224 2036 1 101 2037 1 121 2037 1 177 2037 1 111 2038 1 299 2038 1 446 2038 1 100 2039 1 201 2039 1 260 2039 1 237 2040 1 255 2040 1 427 2040 1 300 2041 1 426 2041 1 438 2041 1 32 2042 1 318 2042 1 434 2042 1 76 2043 1 286 2043 1 511 2043 1 9 2044 1 54 2044 1 187 2044 1 14 2045 1 143 2045 1 383 2045 1 137 2046 1 302 2046 1 423 2046 1 6 2047 1 57 2047 1 193 2047 1 53 2048 1 148 2048 1 430 2048 1 202 2049 1 320 2049 1 427 2049 1 71 2050 1 231 2050 1 447 2050 1 52 2051 1 218 2051 1 435 2051 1 148 2052 1 377 2052 1 487 2052 1 219 2053 1 498 2053 1 502 2053 1 17 2054 1 206 2054 1 338 2054 1 299 2055 1 359 2055 1 407 2055 1 41 2056 1 238 2056 1 323 2056 1 108 2057 1 235 2057 1 407 2057 1 48 2058 1 379 2058 1 387 2058 1 143 2059 1 160 2059 1 166 2059 1 65 2060 1 391 2060 1 512 2060 1 316 2061 1 381 2061 1 473 2061 1 133 2062 1 261 2062 1 310 2062 1 142 2063 1 297 2063 1 457 2063 1 92 2064 1 277 2064 1 490 2064 1 1 2065 1 2 2065 1 2 2066 1 3 2066 1 3 2067 1 4 2067 1 4 2068 1 5 2068 1 5 2069 1 6 2069 1 6 2070 1 7 2070 1 7 2071 1 8 2071 1 8 2072 1 9 2072 1 9 2073 1 10 2073 1 10 2074 1 11 2074 1 11 2075 1 12 2075 1 12 2076 1 13 2076 1 13 2077 1 14 2077 1 14 2078 1 15 2078 1 15 2079 1 16 2079 1 16 2080 1 17 2080 1 17 2081 1 18 2081 1 18 2082 1 19 2082 1 19 2083 1 20 2083 1 20 2084 1 21 2084 1 21 2085 1 22 2085 1 22 2086 1 23 2086 1 23 2087 1 24 2087 1 24 2088 1 25 2088 1 25 2089 1 26 2089 1 26 2090 1 27 2090 1 27 2091 1 28 2091 1 28 2092 1 29 2092 1 29 2093 1 30 2093 1 30 2094 1 31 2094 1 31 2095 1 32 2095 1 32 2096 1 33 2096 1 33 2097 1 34 2097 1 34 2098 1 35 2098 1 35 2099 1 36 2099 1 36 2100 1 37 2100 1 37 2101 1 38 2101 1 38 2102 1 39 2102 1 39 2103 1 40 2103 1 40 2104 1 41 2104 1 41 2105 1 42 2105 1 42 2106 1 43 2106 1 43 2107 1 44 2107 1 44 2108 1 45 2108 1 45 2109 1 46 2109 1 46 2110 1 47 2110 1 47 2111 1 48 2111 1 48 2112 1 49 2112 1 49 2113 1 50 2113 1 50 2114 1 51 2114 1 51 2115 1 52 2115 1 52 2116 1 53 2116 1 53 2117 1 54 2117 1 54 2118 1 55 2118 1 55 2119 1 56 2119 1 56 2120 1 57 2120 1 57 2121 1 58 2121 1 58 2122 1 59 2122 1 59 2123 1 60 2123 1 60 2124 1 61 2124 1 61 2125 1 62 2125 1 62 2126 1 63 2126 1 63 2127 1 64 2127 1 64 2128 1 65 2128 1 65 2129 1 66 2129 1 66 2130 1 67 2130 1 67 2131 1 68 2131 1 68 2132 1 69 2132 1 69 2133 1 70 2133 1 70 2134 1 71 2134 1 71 2135 1 72 2135 1 72 2136 1 73 2136 1 73 2137 1 74 2137 1 74 2138 1 75 2138 1 75 2139 1 76 2139 1 76 2140 1 77 2140 1 77 2141 1 78 2141 1 78 2142 1 79 2142 1 79 2143 1 80 2143 1 80 2144 1 81 2144 1 81 2145 1 82 2145 1 82 2146 1 83 2146 1 83 2147 1 84 2147 1 84 2148 1 85 2148 1 85 2149 1 86 2149 1 86 2150 1 87 2150 1 87 2151 1 88 2151 1 88 2152 1 89 2152 1 89 2153 1 90 2153 1 90 2154 1 91 2154 1 91 2155 1 92 2155 1 92 2156 1 93 2156 1 93 2157 1 94 2157 1 94 2158 1 95 2158 1 95 2159 1 96 2159 1 96 2160 1 97 2160 1 97 2161 1 98 2161 1 98 2162 1 99 2162 1 99 2163 1 100 2163 1 100 2164 1 101 2164 1 101 2165 1 102 2165 1 102 2166 1 103 2166 1 103 2167 1 104 2167 1 104 2168 1 105 2168 1 105 2169 1 106 2169 1 106 2170 1 107 2170 1 107 2171 1 108 2171 1 108 2172 1 109 2172 1 109 2173 1 110 2173 1 110 2174 1 111 2174 1 111 2175 1 112 2175 1 112 2176 1 113 2176 1 113 2177 1 114 2177 1 114 2178 1 115 2178 1 115 2179 1 116 2179 1 116 2180 1 117 2180 1 117 2181 1 118 2181 1 118 2182 1 119 2182 1 119 2183 1 120 2183 1 120 2184 1 121 2184 1 121 2185 1 122 2185 1 122 2186 1 123 2186 1 123 2187 1 124 2187 1 124 2188 1 125 2188 1 125 2189 1 126 2189 1 126 2190 1 127 2190 1 127 2191 1 128 2191 1 128 2192 1 129 2192 1 129 2193 1 130 2193 1 130 2194 1 131 2194 1 131 2195 1 132 2195 1 132 2196 1 133 2196 1 133 2197 1 134 2197 1 134 2198 1 135 2198 1 135 2199 1 136 2199 1 136 2200 1 137 2200 1 137 2201 1 138 2201 1 138 2202 1 139 2202 1 139 2203 1 140 2203 1 140 2204 1 141 2204 1 141 2205 1 142 2205 1 142 2206 1 143 2206 1 143 2207 1 144 2207 1 144 2208 1 145 2208 1 145 2209 1 146 2209 1 146 2210 1 147 2210 1 147 2211 1 148 2211 1 148 2212 1 149 2212 1 149 2213 1 150 2213 1 150 2214 1 151 2214 1 151 2215 1 152 2215 1 152 2216 1 153 2216 1 153 2217 1 154 2217 1 154 2218 1 155 2218 1 155 2219 1 156 2219 1 156 2220 1 157 2220 1 157 2221 1 158 2221 1 158 2222 1 159 2222 1 159 2223 1 160 2223 1 160 2224 1 161 2224 1 161 2225 1 162 2225 1 162 2226 1 163 2226 1 163 2227 1 164 2227 1 164 2228 1 165 2228 1 165 2229 1 166 2229 1 166 2230 1 167 2230 1 167 2231 1 168 2231 1 168 2232 1 169 2232 1 169 2233 1 170 2233 1 170 2234 1 171 2234 1 171 2235 1 172 2235 1 172 2236 1 173 2236 1 173 2237 1 174 2237 1 174 2238 1 175 2238 1 175 2239 1 176 2239 1 176 2240 1 177 2240 1 177 2241 1 178 2241 1 178 2242 1 179 2242 1 179 2243 1 180 2243 1 180 2244 1 181 2244 1 181 2245 1 182 2245 1 182 2246 1 183 2246 1 183 2247 1 184 2247 1 184 2248 1 185 2248 1 185 2249 1 186 2249 1 186 2250 1 187 2250 1 187 2251 1 188 2251 1 188 2252 1 189 2252 1 189 2253 1 190 2253 1 190 2254 1 191 2254 1 191 2255 1 192 2255 1 192 2256 1 193 2256 1 193 2257 1 194 2257 1 194 2258 1 195 2258 1 195 2259 1 196 2259 1 196 2260 1 197 2260 1 197 2261 1 198 2261 1 198 2262 1 199 2262 1 199 2263 1 200 2263 1 200 2264 1 201 2264 1 201 2265 1 202 2265 1 202 2266 1 203 2266 1 203 2267 1 204 2267 1 204 2268 1 205 2268 1 205 2269 1 206 2269 1 206 2270 1 207 2270 1 207 2271 1 208 2271 1 208 2272 1 209 2272 1 209 2273 1 210 2273 1 210 2274 1 211 2274 1 211 2275 1 212 2275 1 212 2276 1 213 2276 1 213 2277 1 214 2277 1 214 2278 1 215 2278 1 215 2279 1 216 2279 1 216 2280 1 217 2280 1 217 2281 1 218 2281 1 218 2282 1 219 2282 1 219 2283 1 220 2283 1 220 2284 1 221 2284 1 221 2285 1 222 2285 1 222 2286 1 223 2286 1 223 2287 1 224 2287 1 224 2288 1 225 2288 1 225 2289 1 226 2289 1 226 2290 1 227 2290 1 227 2291 1 228 2291 1 228 2292 1 229 2292 1 229 2293 1 230 2293 1 230 2294 1 231 2294 1 231 2295 1 232 2295 1 232 2296 1 233 2296 1 233 2297 1 234 2297 1 234 2298 1 235 2298 1 235 2299 1 236 2299 1 236 2300 1 237 2300 1 237 2301 1 238 2301 1 238 2302 1 239 2302 1 239 2303 1 240 2303 1 240 2304 1 241 2304 1 241 2305 1 242 2305 1 242 2306 1 243 2306 1 243 2307 1 244 2307 1 244 2308 1 245 2308 1 245 2309 1 246 2309 1 246 2310 1 247 2310 1 247 2311 1 248 2311 1 248 2312 1 249 2312 1 249 2313 1 250 2313 1 250 2314 1 251 2314 1 251 2315 1 252 2315 1 252 2316 1 253 2316 1 253 2317 1 254 2317 1 254 2318 1 255 2318 1 255 2319 1 256 2319 1 256 2320 1 257 2320 1 257 2321 1 258 2321 1 258 2322 1 259 2322 1 259 2323 1 260 2323 1 260 2324 1 261 2324 1 261 2325 1 262 2325 1 262 2326 1 263 2326 1 263 2327 1 264 2327 1 264 2328 1 265 2328 1 265 2329 1 266 2329 1 266 2330 1 267 2330 1 267 2331 1 268 2331 1 268 2332 1 269 2332 1 269 2333 1 270 2333 1 270 2334 1 271 2334 1 271 2335 1 272 2335 1 272 2336 1 273 2336 1 273 2337 1 274 2337 1 274 2338 1 275 2338 1 275 2339 1 276 2339 1 276 2340 1 277 2340 1 277 2341 1 278 2341 1 278 2342 1 279 2342 1 279 2343 1 280 2343 1 280 2344 1 281 2344 1 281 2345 1 282 2345 1 282 2346 1 283 2346 1 283 2347 1 284 2347 1 284 2348 1 285 2348 1 285 2349 1 286 2349 1 286 2350 1 287 2350 1 287 2351 1 288 2351 1 288 2352 1 289 2352 1 289 2353 1 290 2353 1 290 2354 1 291 2354 1 291 2355 1 292 2355 1 292 2356 1 293 2356 1 293 2357 1 294 2357 1 294 2358 1 295 2358 1 295 2359 1 296 2359 1 296 2360 1 297 2360 1 297 2361 1 298 2361 1 298 2362 1 299 2362 1 299 2363 1 300 2363 1 300 2364 1 301 2364 1 301 2365 1 302 2365 1 302 2366 1 303 2366 1 303 2367 1 304 2367 1 304 2368 1 305 2368 1 305 2369 1 306 2369 1 306 2370 1 307 2370 1 307 2371 1 308 2371 1 308 2372 1 309 2372 1 309 2373 1 310 2373 1 310 2374 1 311 2374 1 311 2375 1 312 2375 1 312 2376 1 313 2376 1 313 2377 1 314 2377 1 314 2378 1 315 2378 1 315 2379 1 316 2379 1 316 2380 1 317 2380 1 317 2381 1 318 2381 1 318 2382 1 319 2382 1 319 2383 1 320 2383 1 320 2384 1 321 2384 1 321 2385 1 322 2385 1 322 2386 1 323 2386 1 323 2387 1 324 2387 1 324 2388 1 325 2388 1 325 2389 1 326 2389 1 326 2390 1 327 2390 1 327 2391 1 328 2391 1 328 2392 1 329 2392 1 329 2393 1 330 2393 1 330 2394 1 331 2394 1 331 2395 1 332 2395 1 332 2396 1 333 2396 1 333 2397 1 334 2397 1 334 2398 1 335 2398 1 335 2399 1 336 2399 1 336 2400 1 337 2400 1 337 2401 1 338 2401 1 338 2402 1 339 2402 1 339 2403 1 340 2403 1 340 2404 1 341 2404 1 341 2405 1 342 2405 1 342 2406 1 343 2406 1 343 2407 1 344 2407 1 344 2408 1 345 2408 1 345 2409 1 346 2409 1 346 2410 1 347 2410 1 347 2411 1 348 2411 1 348 2412 1 349 2412 1 349 2413 1 350 2413 1 350 2414 1 351 2414 1 351 2415 1 352 2415 1 352 2416 1 353 2416 1 353 2417 1 354 2417 1 354 2418 1 355 2418 1 355 2419 1 356 2419 1 356 2420 1 357 2420 1 357 2421 1 358 2421 1 358 2422 1 359 2422 1 359 2423 1 360 2423 1 360 2424 1 361 2424 1 361 2425 1 362 2425 1 362 2426 1 363 2426 1 363 2427 1 364 2427 1 364 2428 1 365 2428 1 365 2429 1 366 2429 1 366 2430 1 367 2430 1 367 2431 1 368 2431 1 368 2432 1 369 2432 1 369 2433 1 370 2433 1 370 2434 1 371 2434 1 371 2435 1 372 2435 1 372 2436 1 373 2436 1 373 2437 1 374 2437 1 374 2438 1 375 2438 1 375 2439 1 376 2439 1 376 2440 1 377 2440 1 377 2441 1 378 2441 1 378 2442 1 379 2442 1 379 2443 1 380 2443 1 380 2444 1 381 2444 1 381 2445 1 382 2445 1 382 2446 1 383 2446 1 383 2447 1 384 2447 1 384 2448 1 385 2448 1 385 2449 1 386 2449 1 386 2450 1 387 2450 1 387 2451 1 388 2451 1 388 2452 1 389 2452 1 389 2453 1 390 2453 1 390 2454 1 391 2454 1 391 2455 1 392 2455 1 392 2456 1 393 2456 1 393 2457 1 394 2457 1 394 2458 1 395 2458 1 395 2459 1 396 2459 1 396 2460 1 397 2460 1 397 2461 1 398 2461 1 398 2462 1 399 2462 1 399 2463 1 400 2463 1 400 2464 1 401 2464 1 401 2465 1 402 2465 1 402 2466 1 403 2466 1 403 2467 1 404 2467 1 404 2468 1 405 2468 1 405 2469 1 406 2469 1 406 2470 1 407 2470 1 407 2471 1 408 2471 1 408 2472 1 409 2472 1 409 2473 1 410 2473 1 410 2474 1 411 2474 1 411 2475 1 412 2475 1 412 2476 1 413 2476 1 413 2477 1 414 2477 1 414 2478 1 415 2478 1 415 2479 1 416 2479 1 416 2480 1 417 2480 1 417 2481 1 418 2481 1 418 2482 1 419 2482 1 419 2483 1 420 2483 1 420 2484 1 421 2484 1 421 2485 1 422 2485 1 422 2486 1 423 2486 1 423 2487 1 424 2487 1 424 2488 1 425 2488 1 425 2489 1 426 2489 1 426 2490 1 427 2490 1 427 2491 1 428 2491 1 428 2492 1 429 2492 1 429 2493 1 430 2493 1 430 2494 1 431 2494 1 431 2495 1 432 2495 1 432 2496 1 433 2496 1 433 2497 1 434 2497 1 434 2498 1 435 2498 1 435 2499 1 436 2499 1 436 2500 1 437 2500 1 437 2501 1 438 2501 1 438 2502 1 439 2502 1 439 2503 1 440 2503 1 440 2504 1 441 2504 1 441 2505 1 442 2505 1 442 2506 1 443 2506 1 443 2507 1 444 2507 1 444 2508 1 445 2508 1 445 2509 1 446 2509 1 446 2510 1 447 2510 1 447 2511 1 448 2511 1 448 2512 1 449 2512 1 449 2513 1 450 2513 1 450 2514 1 451 2514 1 451 2515 1 452 2515 1 452 2516 1 453 2516 1 453 2517 1 454 2517 1 454 2518 1 455 2518 1 455 2519 1 456 2519 1 456 2520 1 457 2520 1 457 2521 1 458 2521 1 458 2522 1 459 2522 1 459 2523 1 460 2523 1 460 2524 1 461 2524 1 461 2525 1 462 2525 1 462 2526 1 463 2526 1 463 2527 1 464 2527 1 464 2528 1 465 2528 1 465 2529 1 466 2529 1 466 2530 1 467 2530 1 467 2531 1 468 2531 1 468 2532 1 469 2532 1 469 2533 1 470 2533 1 470 2534 1 471 2534 1 471 2535 1 472 2535 1 472 2536 1 473 2536 1 473 2537 1 474 2537 1 474 2538 1 475 2538 1 475 2539 1 476 2539 1 476 2540 1 477 2540 1 477 2541 1 478 2541 1 478 2542 1 479 2542 1 479 2543 1 480 2543 1 480 2544 1 481 2544 1 481 2545 1 482 2545 1 482 2546 1 483 2546 1 483 2547 1 484 2547 1 484 2548 1 485 2548 1 485 2549 1 486 2549 1 486 2550 1 487 2550 1 487 2551 1 488 2551 1 488 2552 1 489 2552 1 489 2553 1 490 2553 1 490 2554 1 491 2554 1 491 2555 1 492 2555 1 492 2556 1 493 2556 1 493 2557 1 494 2557 1 494 2558 1 495 2558 1 495 2559 1 496 2559 1 496 2560 1 497 2560 1 497 2561 1 498 2561 1 498 2562 1 499 2562 1 499 2563 1 500 2563 1 500 2564 1 501 2564 1 501 2565 1 502 2565 1 502 2566 1 503 2566 1 503 2567 1 504 2567 1 504 2568 1 505 2568 1 505 2569 1 506 2569 1 506 2570 1 507 2570 1 507 2571 1 508 2571 1 508 2572 1 509 2572 1 509 2573 1 510 2573 1 510 2574 1 511 2574 1 511 2575 1 512 2575 1 512 2576 1 513 2576 1 513 2577 1 514 2577 1 514 2578 1 515 2578 1 515 2579 1 516 2579 1 516 2580 1 codec2-1.2.0/octave/HRA_112_112.txt000066400000000000000000001423741445607075400163020ustar00rootroot00000000000000# Created by Octave 3.8.1, Wed Mar 15 17:24:05 2017 ACDT # name: HRA_112_112 # type: matrix # rows: 112 # columns: 224 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 1 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 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 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 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 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 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 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 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 0 0 1 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 0 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 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 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 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 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 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 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 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 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 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 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 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 0 1 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 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 1 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 1 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 1 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 1 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 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 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 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 0 1 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 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 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 1 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 1 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 codec2-1.2.0/octave/HRA_112_56.txt000066400000000000000000000451021445607075400162200ustar00rootroot00000000000000# Created by Octave 3.8.1, Wed Mar 15 17:59:13 2017 ACDT # name: HRA_112_56 # type: matrix # rows: 56 # columns: 168 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 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 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 1 0 0 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 1 1 0 0 0 1 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 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 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 0 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 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 1 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 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 0 1 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 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 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 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 1 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 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 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 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 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 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 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 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 0 0 0 0 0 0 0 0 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 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 1 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 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 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 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 1 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 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 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 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 1 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 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 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 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 1 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 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 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 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 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 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 0 0 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 1 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 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 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 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 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 1 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 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 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 1 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 1 0 0 0 0 0 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 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 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 1 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 0 0 0 1 0 0 0 0 0 0 0 0 0 0 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 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 0 0 0 0 0 0 0 0 0 0 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 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 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 1 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 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 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 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 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 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 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 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 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 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 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 1 0 0 0 0 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 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 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 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 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 1 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 codec2-1.2.0/octave/HRA_504_396.txt000066400000000000000000030727141445607075400163300ustar00rootroot00000000000000 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 codec2-1.2.0/octave/HRA_56_28.txt000066400000000000000000000114041445607075400161440ustar00rootroot00000000000000# Created by Octave 3.8.1, Wed Mar 15 18:20:20 2017 ACDT # name: HRA_56_28 # type: matrix # rows: 28 # columns: 84 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 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 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 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 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 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 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 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 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 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 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 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 1 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 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 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 1 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 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 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 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 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 1 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 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 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 1 1 codec2-1.2.0/octave/HRA_56_56.txt000066400000000000000000000307011445607075400161460ustar00rootroot00000000000000# Created by Octave 3.8.1, Wed Mar 15 18:12:09 2017 ACDT # name: HRA_56_56 # type: matrix # rows: 56 # columns: 112 0 0 0 1 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 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 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 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 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 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 1 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 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 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 1 0 0 0 0 0 0 0 0 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 0 0 0 1 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 1 1 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 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 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 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 1 0 0 0 0 0 0 0 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 1 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 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 1 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 1 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 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 1 0 0 0 0 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 1 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 1 0 0 0 0 0 0 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 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 1 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 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 1 0 0 0 0 0 0 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 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 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 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 1 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 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 0 0 0 0 0 0 1 0 0 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 1 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 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 1 0 0 0 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 1 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 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 0 1 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 0 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 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 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 0 0 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 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 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 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 0 1 1 0 0 0 0 0 0 0 0 0 0 0 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 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 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 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 0 0 0 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 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 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 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 0 1 1 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 0 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 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 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 1 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 1 1 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 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 1 codec2-1.2.0/octave/HRAa_1536_512.mat000066400000000000000000000460321445607075400164760ustar00rootroot00000000000000MATLAB 5.0 MAT-file, Platform: MACI64, Created on: Fri Mar 15 09:02:45 2019 IMKxI@Ɠ)~g@fꉕ$!9YDrcٟ6Gӱ?q{J9ߗz׎Lg^Y6lf`" &*jVXryjG^UQAX VM'k2ȇtʊ%CInŏC2uh#~aj PE0ڂ"<ޱV)"B7cfmvtLyPG_Ff"kH!y=zAXm FLyj t% a2`((qLUjJ ;XD;Q C2ܺxBR.I/IJUmEJp }RՈ>=4k72K#:fӋOeė܀\ я?+BuYnT(d[D~HoD<ܕ4yd0qeXVXNA 0 ?-zҢ44;݀PlJWV<֊3$WYwu`)1rӄ,$*ޣ9Zղ"W!HIڪhMԵ: d߃EGtVV$Ke Zϕ,"h.RMFbNrt+?z;wI0 ?́(m4TqRlJۑN8b9)OtիػphJê$: (*TX66w(!>5E0ݽ '_-@zǬmM|cPz`K 6qJǾV+)M{6Ùqֺ] 1|~x8k߁>"Kc6Ǐu\+{~Nԁ7&&]@22" =/۬AaV{dO_ ]`5WX>6ڬ1ZKχ뫶y3]K0/4I`.b?sg$:!Ckne VVPYRQx~eZ՗ф|9ԪF-q$yng0^|Ul2!x_ <.E@Z9tD Ux8j 7Ο;+is9X.m5N@&8,H?yl3LqzlA0 ? P75m3ZpH?K@BőS 7.{w5ϧEܓ}M"O(j) Mxp=Kߛm?N8o2I5X$e0,^Nh[xRt.kdVN90?MCQ"r1LȎA)=x]y -*]qbƭ{w6~2H7OXb:)XM\ޒ%PT&#L]ԓPs`ͧId0xZlW^?y+ŧbh c(: ƈL o 0 BMe&p,-R_"N:cPdDf5^_ۄ儋njT)m-dnqǿed6_e 0Z~ 䨂60X;(iEࢣ-B1 iMY,kamht'&FA . ZfSn@ȃ͢]-UKgrҔǤhgy2h3 *VC:ŗ]q#VVbO` UZ( d1ÜV=!"n"HzD`{քYe[9g#nyεFS96EAǀG` >B GYޠc?^oo[3? )߈7x +lojڅ ;f.jzפ k&}h<]ˈgs,Ҵ!EU/KVmU]HnpE<=2T:*μ0t`v\3PɁcn|&=k&U,궐҇Em:x)#+O̮pC,G6T2WMMXV lJk>&UCur90 Ĝ:MJ"ihe#XlkBύ=F?Tȝ5JL07_JKt-`cn#;$+pSW'De/u\b0T A\ e`ګ:0. #r_A`ǨBw0;+ܗA j Z9 nu-:\(4vuG̑D[ DW9l'`X5UPpŌ,S>dQ4 1@g`¾83ĊjhVH_(c`̰f` CY>B'Q"L?DO/h>}Q M0L`oe XC>&PYA#8\4?:ÈL3ߠ[̰6P.Q;>޵8tɞJOW#r3#I|NCB^17)#ƟӵC/HC,b7 !C%I\ p6CRZ K 0 Œ_& %g[i0` )UWƾȲh)&R&RVO(do0oh'Hw`;yPb0͘V7~q~%{^K(-7BI 0/-؍ vȃf/M^7R8>" QrVUGXA 2Hx7Kf#Q%b*1[.`*0,+q*|CXෙ4Qr<(3:rbl.J ƧK\ #X0[Hg <$K'10 ?`* 9HήÖ4WKe]I9B* 3L({w?!6&VWc.E:eR\K5ߞ9ݨ$-ʸ%>xwwTZg8[|],Jb#:@[;%K|Lg10 ?XB6u͈:aZaBzg71s<#~KL.1%U$$U@&hk"eF۳`A%*is IM]T<{uԪ QMEjhvB#oYXZa>zEhT 0vo!J4Ho+ FZ7PQ2Cpm$ &đ'ws| P"['o`w#Rx<Q $Z1uw^rDT C$W FQр6`:7vc1v%<X!x1͖>'79Βt$eLE\fü_ c€/EPIA 1l?ZqE[ 0 /-~U4I@+֎A_i'oun )~/R֫ACd?rDI Nx~˄GO,EۢF+WD& 5+6 ʓ=-G$^ܔZhGC1z=GK1 A ?@m.,X՛C8 aNWKl!Lzt6M.ANubMGV`Νmܽ* !.+5cUⓧJT?a=ibknQJTl)>RUW\TF-`߂e|Zhv;A F4 P.;7/n BC)k`يLhXY `:vRHUuy͖OOmx!S=.'innj#2 ÜCX=p%=}b,fRN]z>Nǔ @ FBĞ.8|5i6m]?!W. /pӤKRm k\sxlj$uYY{b6G~T=ZXX{W;#3;&4ٝÒEX}D!( PwI0 ?5`K7֍)8,F=l,6v6ACRJY u1 ܅L[NcNHGEjYO&x޽JVckjZn$F/K8vrXp.P_< 3X6z)€ItF</:A  Jyich1s+_I4a5,PԖl#5j1EXkB Œ`px3qR1;Kr HrHNT$vag>qL_&PrLs)C'~U0FW]{Rܘ xDɋ(%5 ptRT!tLyT^ mH˃6i= #',cϏt.nNURt>_4uϠ8: 6`5D"X ?RC$KՆc.(W{rH@ GA 6Hbv87O;SPWb Ts NB֕}'Ё} 0CHκ; $k8Vk voಯZG] &uЂto&lցSq.lBނ37A!Ff\s; iM5 >_Z '&A؉0btLoD/ Jf,MvN_xDqu=KNO ZBQ2gC_тFy9.Xj\C˰5U gۍ}#j,ٱ3dWhLixI.:5e-zj)78PPq=xbV/?p35r̤ !4`_lW_2oʇ]7T'L媒p=rg#E+?ܙK 0ED:б?R{Ms$ *= 8|@JF 88h!A`{zfVI`OTm^c.4VJ C `?$)]1q!s -\(Q&VX1 /qOIC7G u90Ē_( OJKzBkA(mD/}#5`̃Oly:ͫKrfkO[4&.,! %s8 N%zoaBG?fqLF+"/hq"X۟X';W/!'A @%)Ҿ ܖ9 Ĝ:M*rʨΌM(,܎V2\4D޼Dr95b?z9Urx^<i(()m:~jJg9f@ D_ѩd"m{#&8,٫Rz|G}C kIK]sBNIgNA0 Fm $N=Z͑p+(H-bq+ɝSjLȡCʽ Ox^XPx6@ d~ee6f1N>匰3Fx$Pv4\lD@ b)pBh"tq9SqA j6ۺ08Z.vK{ 1Τ0ܮ7Dt,1އ{<:5Ծ:0:D⁈ :fλrP'R&Y8_,B+34u{2 0 K#TinJي Ji]1L:z@KI Em-snMs:nz,Rit 0-lO7_+ e)Lo.EhdfXB8]b5,#E?!S9Ld5@t2w[ 0/-">jMf9d?,ea*'&8㓝Z5!`1猿yek\֥晣C#Έ&cb8w$Qjks9ǽ1C6*VƵE%8Y7uKCW(AKΛװ7 $cOkcڍ)?~"w|R''^䮠ԘA0v=xQi K6I ӥɲsstx:ң'' $9ƇNB DB_hC^}n@!H)a1HL2-("2a3,.J]BA 0?-VuUd,0Ģܿ$-<Yc⏮-SgpB/ U< iPM.vU9FJX `7"1t(IEa6@TxFVI(mϖ`D-m62!X xagLodR9A v8R[&IKrE tњEE[ &jF7YtckO_<ҍ.7`HGUEc)Ўغ7Uut `ϢsOco9 do[Ly:_D-BB!aCXaV[̊L3+&rg qN't10 ?TjA OlA|_}m>YJaMGM2fP6a] .m}G-4<UG Xk*Tx ؅س<,6d6O;Gޗaj+M/g2GawAr,XA*RTA ?{cZwef94c ?! :.Q)_] P{Y9w__6nT|1@ 1 X3Qo%uV7<~J|cj`)Mѐ9%5oFE^fAFcJ)}~M}ՑbͱR`.gڪDn8G'Ka`ePyv需ۻ)Alb:uAczIA7d^Ll7EB_%158kQ$LDcp20rQ C//a SmҨ{[_013!8Aꂘrb ȡH O~b+v4mX~ No'@)rhv%$Ǐ<0\8sDG|_JMKtbm{ ſTҧųzA 0 Z<mВd'vNdvzQښzM) $E^^H.0SK1QUo)Y!!>p+NPĨ8fJ|^ ^hk* @!\Hl*PicFlKݓX_~ !PdT.w < w9s9;0/MDϻaJ1xT)v*3{3c -s=E2فLF CVmW7$.*5El>Kf94xu{ޙqu:A, [EAx]&n LtTM~2Z ,A A0 FA>S-0On@o(pXÕ}g9(Qd(51DtH4фyjmg #,J!C)+Rc+HdwY[,+>I#~ݣ>Ih^6||f{,U L!Ƿf/.Dv g#+,Z SN[t$l; HZUcv5lTm ~g aݙkUXj a2,ZX 1Z2VE_Lתo`_ˊ,~!Qu0MFR/$u0S-!F52f2DcŒ`:v C?{ 0 Qi$8"z|˶#˥b҆0GRoTfA^?>pVX+#x mnIF]Jj E!NMpGn*5hLtFX}6e~u4?ٮ&6(Zn%O%!C}|5۱|A ?])Pd':b& *q~M% l4 7T{gQNhFtJ8E4=$Em^7>4|Ӟ˃*cF6E@*3:R7%:A(e (9~fZ^v?Un 0xK "_&S# bJ%1` y龇DdeO6F+es:NL5ժai6y|B3/w9. 1}2Ƚ9O#qO3  y'zqk@p7Q_< {A pKGH@l<&̮E8d%Sk6s(訮\ rS)}~l܀k벭Pp6ԢbN/6sBɕˌ/?6¤cDj&YdaDɶ;Au%6Ⱦ<)_@5+Ci2}=LeK 67PBS+;IKOc,d,]-D@ DE_ƧH:֌ۋM #Mtz\c-JL#1'-7AZ)h ]}LNlF05r;Qr"C\@Y AఈGW7KH]\PؠmSp)'ŚQ_@4p{y:(&j˲b3)C+7I ꁲpz `Is%#H$:_qF![f!^ R 장dOm W݂2Ѷ|9|Q&wʝ}FHդ۰zh/\􊪼do4QAIry\Bo䙱 spJ m*ٜ<,B=萭VPcv%7;-~xpNM&䪍H-ދZI> M4rUfԊi/&^j_cw{rz%&R+Cg N1: yK&87'dOo[ ܗ 0 K#<@TjI.qZH(p be"d,wE %y.ѓ0 UuX#CGۓW՚m 7[ a©΄fClX 8ՔGLp@Rymwd,RjQ6x npܔA 0 zK!l,GS= 1&QHMd6CP. f-Ί$Dr E۴$_iyQCZ+D{Ƃ~hex-:R8$L=B}uZ$EV)UWvjȓj1 'xIլ9 NA5l*Z)P}NH3"/! /ኙ?D |o5 yK4ϟCcY kf;1_탹U+Ke3eM\_ycn쀞~q3kAtBXh}6{xRAFA 6 ΕCgt쎓\(}L9֙DK2@*K!5*ϐ aD)Lbar_1eï'NOBӀ:=H&uq!@ FbШy$tkN3hGL^K`.K 0~! K!f;9K Cv᎘00Є޲io^P o5y^Ali&<wJPcN#j:-|:Labpo8Ro .h W;m8ɴLA 04.wMsv g8 q3@ g8 q{6A @4*HzÏf Xe8 q3@ g8 q3@ܳ.A @4&H;}~0]* q3@ g8 q3@ p1 0 ?qSM9hfU3@ g8 q3@ g8=p1 0 ?QWi9`fU3@ g8 q3@ g8=p1 0 ?!]i9hfU3@ g8 q3@ g8=10 ֿ}ЃD3^pq3@ g8 q3@ g?10_l 8hW3@ g8 q3@ g8T 0KfCw + + + +10 ֿ̜vN g8 q3@ g8 qҡ0{M]VfvG q3@ g8 q3@ g+>c` 0jcodec2-1.2.0/octave/H_1024_2048_4f.mat000066400000000000000000000635461445607075400165720ustar00rootroot00000000000000MATLAB 5.0 MAT-file, Platform: MACI64, Created on: Mon Jan 11 21:14:11 2021 IMfxYQ0 m<GD%&FKY73maDc,G\k:*~T=[j ݠh DS"YME>8c_,Vi PBsW} u`7ڧePsG#n58}zGF>ՙ`ىxXz<0!ԶF 5{3  ̋Ë~ڻр{P>@ʍ54[ 4x۫d,^r_Mx ǬEr`fp@x]3xYz(X寇a|oXayaO=e8?a`i<@A&&>~k LÇP$waD@h8v8LVpѰR"y[vt渃 Wo1TwLH̚]g,ݳ=|lt`0}K\w8/_ XKMdnMܪOjY^A E/ӎP,l|@mjzJ.O$l?Z+NbpVѨn@d.Dԗ qhҨjN 7P{aݵRٱdZ:uf|)Ƕqqi>gc3OG[͈˪eA0D 0LAFSCėxQ+"'_W:pXrdۈr<@!&F"BL (b6"1cWohd'zgiL2tZkϛ[`+[NypWZ'Uȡ ɀ&W;L!n+K%m5oR+VŚ$_,ĸ?h'T /3֤l ۆM>rO\RMf 0aX t{MP@p>l;d/򏀭hjFh^*Y2\auZi^^[k<3"g&._85?'>OHX A#0 i%߾D\ǽxV߆$R!f'̭FF'>J?]pJGv:Θ?dLx7Փx+C =Ż})E}Y0 #Ӵ ı[PsFD(&/g$Y7hN'8Fxsyk62r;a7t|hMܤ`x,$]o.3%wh5~~iHh.j8ҧK5"M:$pc|CWi`8DŽޞ/6Q(FXOT{K:Jc[QػBA +;RRQyY[0_< +0G[`LbQΆQop,/)A1l*.8Z_ 5Ma:^o;u'㳸d<;IԠ%m{Xf7"[uܐSp;8Wvyb0HY%ĵ!: 2Y"9"==9&W>π28"~I,;AmΏaZt渤KSmi9LSY c73f9}PbXD1AT _(_xmO zr5Xik; ۣ0z~Sz*Gg$3elvQ " w^B15f‚<戏U>.赥գ9QOB 8/_NL^06 q|6SuEQ$HWZ-PkqN.w< Df2Iv7lFՆNoEQՊMɴޘZ)gvjgߪ30h?HO]x9 W%P/˥eF7I|.LObb'n1 %'Ϯ~ʬ4sk!Z> ȎY hqhdBׇvpr;;Y -/cO6l "L#^wy>-&/;%U.XS0EnN~QÛVQjBیVJ0ǖ=[:t@Se}AF/!!-#<%gkъ[B*u}3l1z΀@zڈ =L \tJϮ | E=L{2D9dY{V :_T*O ;ւv? DthD@ɻtl ,;6J2>@0_Ŋ>,6 Y+ͫK@(yfdXҰD]nS!#kK'oA JMB vh*ӤP iLMh/:)6jzx \Ȕ/",zڔ\^yuN| M$ | T@T{Լ~N`(퐜vG\{Mb2i'? z3W/ DirɽzElH t|N(NVP7y*ðGNue&|ؾs֏%M܁[bVEx ~ SF,%S  @"eP*.\p=39m.g"&i޲`auzpwqe W}qVfK;x'R#M7GPe<)7^hKW+YI03to, Ei2^~H K _v p-s2S{ J0F: 7BǪmro4~5M('k5>j)\q^9^=1Zְ;S/SZf;V]m<Ή|(\f2=ŠpR1 7nYtwAI=G-'fq־mJ喲1w-c@\Yilhc C Զ | _z+vu  CSWFy㊜;$ vdču`]kla(t8Ɉ"[oüPbC[^twDgb0˲%J,e!=%|؟p>YDE7m#2뭖Z*?:'FV`A!y `'ҁZdq11PSYVǂ_D) 8ܙ D},Saj0 Kܽ԰1h/K<UB1D'd|iҀ:87Ml]fn4 'N t,e?@Kx;ͳ_|L8K.Q.PDTWŭ_;thP4t6m/WN,"uDRU~}%tw$)_F0mM?slM(? _zoi'`&pDGCl *[F1fYqn}b;ЖO?0+iOzρJKh|a拝 ;,<U$ݤ<-niC7mhz&h)SEM4J$?̋f`"1&H`Er=@.:@;JUM"KV{Rw%%X ꩭ9[jqRq 嵸AXyxtjǙ-*#~Ie<{,vr,ou{7Ax-ʒdhnٌ): zv +r֬t'A]bbzdc0q7H#(ӈ}ّE.[./ .9bc^r:mF)3߄9ó3,J9]>b?{ƣ5;Y ^w@sY7MEC :8l j'Jn6܁ 1NqUtw,D9u'Rfpg]WPd|X! JkfNk:*ɶ7FVr@?|9I| C- Av9 BQv? l J*G)gx @u|Cƽlt5۞y\vC-Y] dRCwMmc^?43EbPO[CL @hsF%Qu)>O U}l2nFKggY2*7݉bav_P5"bo1׺5$V>%m@A^%cwNV I443jUuf酏22ɯ평1΋&H49 $ܷCkr X3;Mm:2 ~X0 ;L,՗*jI#hkAL~I*}=vVﵩ) (DE/*:֋P bugtvH,_I Ɍ5J]/Uhgb; }! ~ ~hB@< ;/$2~#Jl3'gTh"hD4ێ F6ZwPrwÁp8?6p0v' (/s^ F"o~X|mJL_ O; rf:}X²XĠqaB7 CL,30FIXs'}v tnW(?gm\ؒEl/gWY{י \^~X ,eKwaBz@d4kVZS*[c+Q7_t=6o#wici;<|.!x,XvLY6&!VL 2Y<_nMGTGR<)G+ܼC؂BPjV7d"$ibCP/36C)>Y2c/=>,ߝ^^em=+J$Ԫa_L"aH7 Z:jEꑬ H|UdSuYa% xKN{#Sc}F&WE2v]P$Zkb*-q3sI=ƅƆ)eRniX0+ӓbIM+GJ9s+aoHXklYDg.i!cO!&JTJуaqMLWb{bM QaC,s< ϰ>jD X2W)XhN/n1P'dXఛ>}L,!I<ѫ&/Xؓ]CF_&ϋP{Ê ̏܁]nJ̬ k!r{.I4zk` .ה$x jC_tO ͸w|c"3{oZ&O` K XkHȆ}XQ +~: }/؃A5ͽb>d?:!dU ^X݅}Fj撗]z4ϦsZ,1oc@ɜU`d#ѽx^hK L(IR>$TU*B7Zcg3d?1X^*ؗ UK|]_bTX[ܚYt1KLa, կ%yOsUz^M{es$滁\U67ݍE}VwC3dEH{ev^ї>XK0_Zf$֐ ነ NpTΦ b6[c: 4mR<#ku;eadI)ʀv,ʘ{LeSەq[PѻSnϏePAshOjҶU{ʽV6j_f_VY('EGBlaX$t-ZA*8*9\&(# z )10 O#QBAeovD~*҄ΥU`ӡs-wQ qKj1*n+Z"#n7#;.yM+0|Tx:4y|a椄齤?x {*>#ړN/mA!HHd)mlNkeLJ@*A/CQ:"}ӗש <# TRPPWu.*d4YK̢䃶Aq&c =0D?W1δ,Tp &6~]K7wi#&*!@wUt+Jbr8="(0xrSz#0bf +hU#m~> DQctŒ` k񟸅PԓWc7psʮc`C()y$t#B?ȊSLrD792:仂^Yf<Q aEMh]ZCYuiTBcbJ k55$7'JƸzÎw #?4Un֫ӾHxgAt+d~ͭkA0DvB,S cXQXs p8$J\2'Y!?6_~W߉$1Bϩ*^/9: O؋ /A 0 Dv[b&v.$8F،ɂzG?lT&Ral>,*|-B]Aa%n+"@mFg$:-ܤDX(b,:=A0CAݸ-*-95qeXKi<͉?jJa }00+bq0BwuΨdK}vc~ A 0 D\!q7i2 7Qhȉ8><7"UރaPB!mϦ3Z:/IE%ަ*eȔA DQ ;MP:eڴ8.*A@Dgt* C/% 0'si>tdʃa:ԩz[bِl<* S&I.X7A 0D.tY@D۵ǰxȋ @VHBdӕ~pH쇬QCH _G x#fwlݞ(ٖUUq-y8ӡ0 CnKw0N/mx__˺K5S݋szV)K7(4dnl Ò x=H:7pb>I< EQXLFRو׊m[ԕ;THz= ǎ 5nD:?%V%`6!P{md9A0DQzKHRF\Ho D; ,n23X.y'l[ma4ԛlޯ"YU9aa} ,@OԌ#V"AnA0DQqgL!J[6j0.o?2Q={uNך7~*f$v5&(0F(697Ӹu9VbM.mhI#6 !LXS? VV,JFU'V{!~ڬ6MK10 CpK# Q%$;5e9Np<ݩZ;(̈%ǻ2ϙ#^37V?jU'X>Q^|kޤz~$}P(dd<A DQ;MZ H-NdT`Dah%҃aiv\Cnc@×p+o. تfܚwlV +DWb؎ Ӂ!Ai{x?(X5DoND_eUeO}zX^M-aąv+`# dp6a#wup[Ŀ`R:! BQiؙ Z,{:"c2N6ၢF2AԱbX3Fy;`:a&[_ x&Zi L*0uKvs^ a/]tS9 0 DZ|lAѴv$x,fTjbڄ3:| W z}(N R& qtСvLo 0CtY)U*Dqx~,e=fΝxɽBGC%Vf {"ڱRd3\ ,&81/t<Ң9!V؜ 0 CѰQ#oT9W4%{xFeFa8US,jQvGgeWP,6g6PZ~F2q٠f=nmG@ SA 0 Dv%bU㐤oS74"cz7q;$j"vy!:vs" n1(8rbGiy9J[mZ?26]c`YOױ5m˱10 CrKWB")qȀ,#@CU4*.QFŒ+8P*zjvvV(?lq_(Z͵d˥"n2o2oӁ ARh_۷v0tPml-> enC+L;!f(K%S$]Nm^| ۴~~10 Cfa7qhxT_uUlH$i6@1aǻu'|F J>&-yҺ0q3YyޡC9s{xn%Q!(1ҋ At@5A}b(3#1( H[Y T2WdE>U)t"-hE1ҕ`@tD/>Hv^# ,,$h DQ?mtMT<'.$&R Q#MJ8jUng?XZcQOh0IBԾùUH;lZb܈rE[Ծ@o9\*D/e.I DQs+D"|QbHΟ;" ٸpm&T#\}({UEL6]k R2fUJl|s:K PzK{:KXA@uf$~¼ 5טe-olޱ\Y}],h+Vɩae-dgɹ|TF-ȍ~eCn}=A DQm!io Q2M f9=p` 2(9͚S. O?Rmk͙ F8StoOa2A 0DQsKwWh oMQ% W]by?oq5D쑰WZ IC0:-~ |5 Nh#W9 QL)]P? ĞEZ vN=^ڪq> hAQo\بdI$iRUHX\xjQ8{:;]vtRrV DQ?UBQA'zBNr"@6gˠl)Jd cTWL|NFF8-L3VQ*9Z|3fYu&6xϱaB=}A DQ BMņ3EwB2!7d*T!A1nb}%Nv?G./RfyA⑮/N6Q5>y/okлA CQBMJ۹PۤXe/!~<Ŷ9bc{5¹fwa嗺R˾G<3"!Sl  . F\4_־4wA0CzKtSG p _})TzLke׬' pԴ9vyoWjN&H+*?mkE_>nBwzL\j^ ~oA EQ5 *軳~ C@avPlBG *U" @jkѼb~o2ѣ ARm(z y:Q0yK{M`mi߷1Вu 0M";* +]5,K3utϦ#9͗DsrO1EK7%2FgH7UAǿ21 AS ةQt>;hy:n1t8ꮳ$N;8+/relmG[JZ TB3,yH0kËXxA DQzKp݈Logbgf @U_@}p:kl-Qz1+ mfGP"*g/`W>A tv!-)hK'sr=; EQ-2! xIe W6/I I >눳;r4o "bff99tG%tt榖-}_cdNCckꔋ=1@C_KE B ٵ_Q9 ݟڜi7 gf雭&\*u /K$]&7#Nmyk1SfDh:"SL a10DpKYDGĕ3ZKk?HrpaoȀNT,a#eЂ# e$>KQIvGe7a$d z7^UIcqlӋ CQ.О @\y%Y޺hwf7vN O>";v[gkX<::tEϞ՛#2!sJvR#v;0 fE]+Ms'`de߯#KH)Dx}Tn۳B"+T)ibzu [ޔZmA0DrK7.4cld+M^8;>fݱ WMHUN=UFo{xw'{?-Yeq%7E}x_PaAfc mA DQݸ0$Bj̤\msX}:"+&0Y}B bM8D.lnu֮2]E٦]?w"l|5ˁȾd4 9 A,K=+s䡡5zP+e_ 9JvqHlCkŏgnѫTR@TƇLXpOuBc ~n$0P*eA CQ{Kv1b7f8Ȗ0hQli 6A&-Sʄ~xVשp1 CQzKwFjD!6n-kpY Ur+"X߿_ `mhC_sّBɧw xڳϦS-obuꝴNvG%7A DQ]3+bbh5>x ߊda=fp8 `-W,e!3]bEl6,;%v ?9)^0?gjKDI 90 DQsKSсh8z,RDR/X+Mexm0JNnUV5/Cm%qCɲͲ,([;Hs.yu+4&nPp޿ CQ6qḅ\N[Խ``.]'ݲٰ(; 7]Tʪ*9uz1 0 C([Cڒ0#?Sޙ{1m]V(ЧtKJZk]sֵxVDjfgcӓv&3p90DpKKY`•xbz(秼d'wq7}0G $`YËU>kZ2K!.yErXgÏ'+1 CQQ Ph78 & ?6m8_N8T#fXõzWdK[q8ٚO@VTs\J`3|:iHV 10 CfaCBhC!1>K $u.к$KvR)V7b ?bн`!1tc h䗼V{O`$^9؂ A ! CQg; 2Ԛ4֎WհA.5LU+Z^#իW%Glkv?_jAzEZi{p.y60{Nʳ+gVͱ90 DQFB4(qxl3#;@3njv(4H|!o-STzl񍆄a0%y~X׬ I CpKWݰ+L;@k]jdrâ(1"?BIDH+Yd3J7o,|p??iJB緋`) U OQ2<A@@lbT\@A DQzK5& -  vJj )_Ca`~d4i};wv $wj-3WZgLj-h_҂65|pKaF{R=Q 0.=@ T8￰:FfW}~EzY:7sOCkmB`a"'ͬ&蘂X++Iê@jĮG{A DQn)B "@ZC"l $"Ş(.aI&Ud/oel}&/YԳC'?-g۲VE}U D" 1 CQ2Ij LH;c`k^=1[!qըħ2Gv‚v7D:>r,r?R)4EMW".f C2VL&6?* )0 !IoűBl͸%c* A DQzK#Q㢤ȴoa"!q .ێƂ"T=(w#MKٔ\(FMXRΫq{p kȨ{o?qۿٽ%(H]bw+mX]1 CfPTi`uYϭD')>X2tW ˢe4;6)ٱ,J9ȉw'OxH To%#A@CQvąFv&F\P8İڎkZWLh]k @v3wD+2  ٧/N-ҽhgj!%(1!Aͭ D9e:1Dh.V3AA, 3g \sYogwbp3/1+"pPlP2pbk%o}Ա01ieTsUkG` &Lc1 0 ?U3,]aaaaaa}1 0 ?S3Y 1 0 ?S3YwA 0 տ(r' ϼcf) gffffffpA 0 տ(rg kf9effffffp1 0 ?鱨*&/Y 1 0 ?鱨*&/Yw10ӕq6۸=00000010ӕq&ۺ;aaaaaaA 04.wMs0]1333333xA 04.wMs2]1333333xA @4*Hz`@@@@@@CA @4*Hz`@@@@@@A @4&H;}?lk A @4&H;}lk 1 0 ?QM9.<1 0 ?qSM9.<1 0 ?aUi9.<1 0 ?QWi9.<1 0 ?1[i9.<\1 0 ?_i9.<\10 ֿsЃD3 00000010 ֿE\̴^g 10_l i.i10_l i.I1 0 ?i(zF+3|000000 10 ֿsЃD3v 3aaaaaa@1 0 ?_i9lk ]1 0 ?1[i9lk /]1 0 ?QWi9._1 0 ?aUi9._1 0 ?qSM9._1 0 ?QM9._A @4&H;}^._A @4&H;}^._A @4*Hz 3000000kA @4*HzK3000000KA 04.wMsxafXcffffff|A 04.wMsxifXcffffff|10ӕq&cn]S10ӕq&cn]A 04.wMsv xA 04.wMsv xA @4*HzÏf 5aaaaaaSA @4*Hzf 5aaaaaaA @4&H;}~0]1333333A @4&H;}~2]13333331 0 ?QM9hfXcffffff<1 0 ?qSM9lfXcffffff<1 0 ?aUi9`fXcffffff<1 0 ?QWi9dfXcffffff<1 0 ?1[i9hfXcffffff<]1 0 ?_i9lfXcffffff<]10 ֿSЃD3^g 1 0 ?I##6\d8cffffff|10_l hxcffffffq10_l lxcffffffQ10ӕ&6޻.@10 ֿ靓ЃD3^g A 04;(kfXcffffff1 0 ?!]i96]1333333O]1 0 ?AYi96]1333333\1 0 ?QWi9nfXcffffff1 0 ?aUM9nfXcffffff1 0 ?qSM9nfXcffffff1 0 ?QM9nfXcffffffA @4&H;}xgfXcffffffA @4&HF;}xofXcffffffA @4*Hzlk SA @4*Hzlk 3A 04.wMs`@@@@@@|10 ֿX\000000810ӕq&ރu0cffffff#10 ֿX\@@@@@@|A 04.wMs3000000xA @4*Hz.cA @4*Hz.#A @4&HF;}v A @4&H;}v 1 0 ?QM9`@@@@@@<1 0 ?qSM9`@@@@@@<1 0 ?aUM9`@@@@@@<1 0 ?QWi9`@@@@@@<1 0 ?AYi9`@@@@@@<\1 0 ?!]i9`@@@@@@<\1 0 ?#Pi9`@@@@@@<.10 ֿ=ЃD3б{]133333310_l @@@@@@X~10_l @@@@@@Xv10_l v 7aaaaaa10 ֿ]ЃD3{]133333 1 0 ?#Pi9kfXcfffff.1 0 ?!]i9v \1 0 ?AYi9v \1 0 ?QWi9`@@@@@@71 0 ?aUM9`@@@@@@1 0 ?qSM9`@@@@@@ط1 0 ?QM9`@@@@@@wA @4&H;}`@@@@@@7A @4&HF;}൙`@@@@@@A @4*Hz2]133333vA @4*Hz6]133333nA 04.wMsWf 5aaaaaa 10 ֿX\^g 10ӕq&V@@@@@@l10 ֿX\v 3aaaaaaA 04.wMs_lk ž A @4*HzffXcfffff|A @4*HzjfXcffffflA @4&HF;}w300000A @4&H;}300000g1 0 ?QM9of 5aaaaaa1 0 ?qSM9f 5aaaaaa1 0 ?aUM9f 5aaaaaa1 0 ?QWi9/f 5aaaaaa1 0 ?AYi9of 5aaaaaa\1 0 ?!]i9f 5aaaaaa\A 04;(.=10 ֿ}ЃD3@up 10_l jv 7aaaaaa{10ӕ&8cfffffP 0Kf@w7J& a0@10ӝ@n@ L& a10 ֿ`{w g10 տ9;p@@@@@@Eԡ0{M]Vfvp@@@@@@%ԡ0ӻK]Vfv=p@@@@@@c` 0>#codec2-1.2.0/octave/H_128_256_5.mat000066400000000000000000000027701445607075400162600ustar00rootroot00000000000000MATLAB 5.0 MAT-file, Platform: MACI64, Created on: Thu Jul 2 18:03:50 2020 IMFxX[n0 lβcX=AzPcR3u~hwx%#3&Ň9<'kyIg^] ,⳸cjŦ{Ɩ%<*ˊXeP5Dn'mqb&WZG^4JY ‡h` Aޑj.gpD$ %U! .P֋hmȮA0ْ0ڥ=\ff |c3r8NǘH dXDφ`2E5`lԑ'I~vCY](iI!B|=+ ۭ8ag:*jGN]VGqE1VAEScDS9G_j~3_W@á#sg( U5^1FuJnB3v!)X P,ˠtEC" W&39RNs(*tGWK _z6fUT$kc/b5L݁P`B٢tD軳y|n%C/Bh; 3s9)|<m޻av$JN_ЀU|LH؆9⯊_.3x!CN0x >GGpJ#'Wץl%hcJDjF |]8?/&Z8:O^]"AD=bsC~b@t3{[j 1-# !óXsuUe{:hv#T{YG{vN` hS8uٚQ9HP*ΕROqj&ƞSBefDgOVăB]zBSWF T` ' 'LE4p}α ð81:{$'4 0o2HljGcc` 0S$xc``0b6 31#7f @2$xc``0b6 31#Cf @7'xc``b6 3"aXxr~nf3~$xc``0b6 #3Cb^1 @xc``b6 b`XJ3TH׫4G@Ǎf'xc``b6 31 CQbI*'T9kKcodec2-1.2.0/octave/H_256_512_4.mat000066400000000000000000010005751445607075400162560ustar00rootroot00000000000000# Created by Octave 5.2.0, Sat Apr 15 09:25:58 2023 ACST # name: H # type: matrix # rows: 256 # columns: 512 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 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 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 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 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 1 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 1 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 1 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 1 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 1 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 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 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 1 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 codec2-1.2.0/octave/H_256_768_22.txt000066400000000000000000030012351445607075400164050ustar00rootroot00000000000000# Created by Octave 5.2.0, Sun May 03 15:23:46 2020 ACST # name: H_256_768_22 # type: matrix # rows: 512 # columns: 768 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 codec2-1.2.0/octave/H_4096_8192_3d.mat000066400000000000000000006144471445607075400166130ustar00rootroot00000000000000MATLAB 5.0 MAT-file, Platform: MACI64, Created on: Tue Dec 22 11:27:54 2020 IMxM@0!V vmt-40vfJ`hV5H:Ǧz4&}EV\@b6wo3QY$RO Ҏ1!jӼ_ ӱ CA, [FRĒ~5WSxٟa9\DF 5=Xȴ Q 5|(5Z`m< t. A @gT0s5&r%ԭ:ǯA>< hF B?iNA0Ulv1㤿 1!DQp#A5 03F߿AV(Ere'?ڇ(,awr='DM&jP CQiD,:lMzTPo5UA|ݧSBx=DNWѩ ̟&oT%IiEY/3F[[ ! DQio" q1&`)&TJExhRӟ # 6̆qwbfo\kث@7 ]|WiA DQi+KL뿭֔RTM7f1v˃=K(vU0`\BXĨ|/BN#v+b"X:|\J AiȃANȋ5.?񏳓Nn3F7g4BmDnh<A5NV,@[=[ DQ'(dܳ'/[@(6=t)tI ˃ jWoW%s*ëf3MN>t\ V}K DAi)TȐ;+4d F=n= 8,:%% `fr)+qo|ஈ-cU$~zW9 CQiY$[ib535Luoå_Gm}0>aZ+*A~<}*ķ(:JO#%\=Wx DQ4c0`ΐGY1.ۍٔ)$5RaFdM{xϪ9QB7^ hrpcKYe_ReԻDQ5"QYDfd)fǣ*?aHX  2 Y(AKHN0r9 CQBKؓԗ2gVᶜFE]ͥ xg!_>`]lӂ`{fJ ADQ}KKlHVlvM*0J#`-[?|𙹚)mo~dv;N㘍ՋW{뙨65e,9ZA EQkiRGݑȭIX?HuXx'ס4Qi[Ȉ3  V㌥52>r¸sj/JS+A DQ,-L1 mk|y8Ԙ"Y0E'vm[Y,nAsqt&S@#O<k#0b9 CQN41fBb * J'Y;`Mps#u.DP ;^Ĵy$,%}&T1Y A DxKw/D.4#TC8⥢eQdDxQ⦢Sظl7h4|z0Um8Tרpyvq DQJ<eZERB_ 8@Iś7nL )#E)`^eyHUw-,/<8&47}M @i qP@IqqX{絧ԫH w5uWmN3\&Yw3٢'[&DAg+NA zK#B@a`. Xԣ_}mmsjX^9=tD(؉(&9/vPM 9W^A DѺłTU{I3=PFuEu$-K3^^ߗgKC(+#`@WSI`D(ADQ鉝L$] hUZ)W;*RHZ:d/~ ^ "bXaH yX,G}0_`YkZ 0 Dڅ tayLud:E/ ,'e(}R]Qȧ$ pD֎#s|FeTIi{ CQ_Q mJkXd*=0տs rB?!p/`ysX,ڠ sv7!ر ! CQiR6_u)]ZZ(f_@tpĎvNy?K$cyÄ>vz9dU_45 \B1 Amm1n9Lm5BJ:*xbW:Yt'n7{ST<5dӶ [  #A DQ]X]Uې!)bušV^$7 b_`-:c߲xa|4-ΪeOa&aDcK @? f"fv/|8<@'DoN S7MmQ%L:9{pux w%Ct ŚrkNI!DQ;&.z( Zs[0ypZ_ Vf?ًaՀ>2 `ɒhJ.O˼4  [zqD}a.xLEV\4,L] k2']Ў om*y62U1S,D8RU=g=o`ȫX-$4:QQiPi 5\Pa*x5|?m_%ESR)2'Ti\Ɣ )ɡ:GOC 縉8A CѺm,2zd"!4e*,8tcXh$|~/D~g9_/Wnךr@1 @m"T oPX!Rc*4YDOt =PҌ: _1^.mt&R=ر @קmл%H @9rl‚[HSA&x:[?:]>ps?!w]\.=%EvA DQi B1k;%Q `pܤ/>j ' DC lj^K-u_-%zCN ?Za5)~ ; DQM[Yh̻ 2!"kR- ) ;?ͪ[c߼8Y K qԹvzHk?hNHU{4C,c A<$ki R waJނ 5f2G!,^\E(F%@*%Ȅa |A0QzKP[t &pn '/a;MiOsuͳ.Zў.+aI;Qq2QFòo/ ?j";!EQ'6d S 5Tխ P"|`.tGMH@UJ5(묜aIderKƺpHv4ԋ DAoZ18(jv 9?8\uϟέ4vpXK<[NmR<$܈\H<=V ձ EQ"P,C#or{ul+ S #6rrYrh#nb+5'6ҭ-,84b7 !EQi+0&{Ef-_;W>k ĨkjIF+]'4)b$|L!>`8l 1UED WE!3 CQ^Z)B4` IkO[ RVdK{gm? cB) MxX)z'a[BTC#sA6 Aiè m`jC>?9eMCIQ#XPb0ooP SX#)#\Gf*&l1 CQFfῡi-la/`p}ߑ Z X(edO=h%m}/( JLQuT׋ CAiWSʻ 05 C]_uc.r{~w :m 3bTyP ʋ< $1 CQQ+B7AК~Bҟ l\4""Zc׉Udؽ+$6V*//x̨Y\˹# H#A0DrKqabZ ߎt31`.AD4U#-Ds "N-N e_PR]QA0wŹg+Oa˚VnA DQi["$m-j~Eز){>]9 H'~(ǧmt Vq=Xy+ɺ=^uA DQsKwR[dF"N8FJ mXz%,F :pOu/cx2!r9b}(nm 3P1 BQݍ67hkkK;R`JT!#:!V>٥"G7DC8pv =D~o`_&`}eԱ CQfua(ZCwFlCcb(eUbV>Kt,4r1j 5:8ߙh*Z|pɪSm^ᇉj\:3;.O10 Cf AT\7Zjw}eAt +9r7uYz9KooO74Luy\u Qi+ QBnYt0o/.:hw$yTLa1:#foN*F*V+IU&͊lA DQi+;J濝o^#O->C.FW'`BK={J#/+|tDrNKKkmy;U71 0 CdYPUPm8nKe5Y]#~N񈮸7na6B޲_"!jNcRk b8:)~sKvA EQiǔIMj)Wx ;*X@jb2qskO)C^dTp/Gfuw5A DQi [ADM3[ \U`:)F3^u:7$P[ҷȃm˴wr2e9XTט"5A 0DxKgEDS BukEXV% 0';²#z9 #QC zv!6B ] #*%}\AZu̽6-g CQ=r ZSd$S>`fN9X(_GY: 4S;jBkx԰K )(4p4Fp\ۢI('+w?-/0a+0bȣg 10 CBTHNbZ[|:<٫+rEMN,\$%Mc"QBBdLȆ~{!} !? CQiDplT{^- yK7Qx:9&7Ce2A9XрBVx<2A^{~i>`زad'~<  DQd#JM랅؈ҡg!l4^IWd-sq%>|ꡃ$u2c?`sRLV͉ A CQ.i[qht$J,<)"3bl(}  `A/ "ki5u*@0~3vv+3xB 0CtsΡ h0ˌSaXB1G&ŸPZ\,oSn 8kV>ϳuv U" ԅtS P4Jx2`DT<2ˡ%TnI/42Q:Ԟ A DQi;h)]J)$>hvNQpՐS |~j\\H< ٍc>cwgK?|3kӁ !CQi'xZ@aCWCW]a( Uѝ+f4{H:o1#C^j4sK\3ozpI>A*>Q a%A]@Zp 3Ue}3+eG3{Jֱ(ZEѱBgı:|M]`pNi:/}3 X w; Q ~fjt[b})jQ*pf)9VPSsEzm_p.P޸?2'i^^F Ӂ!AiKQO-?`jK»g W2Ok*J9g9]@EUCL DQ3d6_Zwh+)i{fUM(2tGCg>Tvؗrb@,YgA @Oړ&Zę"1p5(ϘG;د0/@`dҞͰBR'!H;?1o\d>m`cl"KL7ҁ Ai' D V"iHNd;,6%\#^+8!J/4vȻl@G9); A|K#Kce h ';|3#]@2*KeW] %p =5rHm'f,$o|j%nEg}sBDv-^3;},MhUxO-B" lkG/1 CQ\,mmN65,'GtQE,< NkLݱ[9IJ}\羯X* upԛ((ÂxK@DQicgb!]Z=<վ Go{ T4P]pFM)pWg "6ʚ& }I)^FG4_a=J )aə9 CQi0Ĉ濓7cTW.S*.xw1z?P]=P9:NqrnsuUoGɁtX1 Aml1`׀aoxhnn# bpWmIuN)_q+QW:->vҮ)~ 1 CpKulq+5v'hQȭly"J@ki`E >fٓ0aeZy/Pq} DQnҵX=4FڐYpv7QmYL" bK>~4 #>W`_Եo`s.# `/+sA DQiڴ3 ҅wfD =LLPm5~|!YaqDqNCS衮%h1 CQzK3GJP!vȂI'?~ UCb9f)siieAQ)@N>8b((6>6b|Bԉ!CQi+PJVG}̰l2W3xh Hxy%!zPe-vkGv<9ܬDվvf抜<A CQݺjdCJ:stOX$owX95gkk\xQF)gZ,Z](k䙤8"p Rz 9 CQ|KSH/r_.HZêZ;[8`N]VlLuTs Xe8. WI1k;mQʘ816A DQi[ !j)Jq)f 0ƣ@=ԗjgINHāN/!p.7SiN\B7d0- BQɉc*@P03 +^t\\o#sSCK l%Ci+. $tA мh88-jeAI&7RXҟ5>&]e=䘇 )TW:, YK5 q_ƙ@ amET ;'9M6RͶ5SOw ;J:\c1S6pBwuvc)AhGX$qA @(A:s, A2ȿG `ȋO䡙Au'ʿjs;" tR^If1!DQ[7!U,LF̦a[~n]"lb BXh+cJ%$hAӤMU|bF$JKy{Q@{KUv"R lM)Sw1]*d!c# e g&-%ӳt%NRXQ @!DQ}AqT;oLP4.T?&{G j:{΁  - 4v6g/U:#ۢufLp܆!ӫǮr,A QiK4_杠(%z{`waZ%"_ҏ'U|.Ypg oVk#U&_2p@`sEn2oA @=/V2sai)kaW 3PZyE|Fk'S#;*yäNzrY*]MZ) CQiML|[ 3@Z=O}>*MD-y-#\hĈ1rNjI fW&"'I!CQvYC["[~l20#-&ㅃSf=֏?ZX9ZHxW֔Fh7ub$'Yj9F)J@ EQo"FnH<{ 4 hp'y,N[ZU.G1-{۸zoEk*$_I ߈, ^RNa:jG<Q{#Fz O8|(wd1 CQT*TĀZ7@VYia,1Œ/bC7"~¿8t 1 CQsU!DS翉1vBk"" ՞0i&LQ^$1`!f)@CyxH*Q?A DQi[ IBbEOc VjIVƗA-&7D"M,VSFwp/Ϗ"O%A DQi`*V2ѝ/`+"Tol[&¿=ޝrg/I_+_LRz[VDШ T큈qfbGq1 CQi-gIL-JY%7lC'@r. ` ~vv|@ ՛+ S {PԊ$@뽪A @)1hљ&r`1VH_PIQ2`c׍S @ұDG#=Lh[1Ns; @! DQM L 4Zd ฯ-ƻ)'kA~yS\g@X($ ĀѨ!^d{m* CQiR@[oZũ$qץ80};#%ׂ֫=n~? )}YCţc ;0>1 CQrK3€HqSU\;|.ZHͦYzPG轔RTO,O.ViM$0hc:K DQ8>] T-11(zHA>4Œo&"~ob&%ZSieU!-X+R@c sEnZT9#O"Us^)kuh[48=7/E&0^evH{?(OF ]b"ך}\Jj,}EK EQM#E6-p(1B4E@rb*NTd_P?JY$2 Bgp!pF%i@|61:a; CQ霸 "!_5]KG%PkO]sO!b&&ZEq1 ]\JҀ`g}= x"8"1 AS w6ZLO4b˜^ڙ7X |G1h"yh%əHP>R\g.!CMGtYǣ嗸 CQ+!(H[ZoXQR LW%'ߩ|@3>)߰1U;ҹ`;xrXc2GG,k 1 CQ@qαq[}X kgv}|b8h;E`4V!II*JX^'J>I rgK EQm=HxDJp5FOq19D:zei"mQK»=w<[Ǐ'K CA{K{]7+ET[8<+ƨ:rt"-d}x09\RGBW K? HZerv1 CQ;UbRR(unȴIT/ϑ!j&LPk +R`$NPSOu5DT{| Wa!k#3 1 CpKw`CA@m8:|\Wh1 CQY!i[4Zg6SzILjXɲOfݴ+χ"^/m$`(kA3b CAi;Dy{$~f!GEeT#-kP˃lc"IysK|k/Ml1 @:m,!1 UI#3ԣĘK2OzTKs}-ж،O8p i\1 DQ "6$ueE=F֬'뫒l(̇h*  +(|" $~"fP,X|^xMlöTEֻ DQ֪0tHRpLdzbso>'OA`%:'<xjoZr6+8N۳gc|oU1 DpK;6vLAd((K8H6^LhPZ[hp⸭MH?dʫJ` uZNY.C]w;&gQ1!DQ-,D# faE g@pXGVD%ʈhh=YԱ/彺KZD;D|"cϰlC|̻UK@ DQi O!1y#yQ1x ^m:&?n=߄~NԹw|mF] gGȾ"kzE|VxyOHQ @!D g{6~T}GHve=j\>?^k7>+<`1GBjv-cAR+I CQ@[u*+-EJ5](i5ݙq&DtCd:FY&U6^>ue#`%Q aveUf2*Җ*ݏ0H=i|sA9'MqhݷUnBh N_<~(k 0CQ=Ujoo*0aHc~GtZ+=3C兟(|=Mp0*U oScy_Q7&2` !Cѱm@a4&]0`/iԦaR!3$#3,麱_}hV {5+-.ʾwZ BAi !Pգyvz?cEY®ͨ k%JVd2[ K@zn>osΔ(\ndӁ !CQi70&ozLܒxf4[c7H*ԣ~\Q{T;:$x}rp1 @-qD[ )1Z.hqm>%2C iP5m*3^c0^FOd_.`[ۆ{ۇHq:sZ*S>; Q-td(2F6Z/g+8m;9ι Unn tzӲ/%Q ;IQ[0Q!:4I @s DKU7!`g-,wAQ*:tSwy'a0B 30 KLk A`$l72p˙1 DQZ c6$T]`I'>+uVtxSoc_r7 . 1AbnL&ƦC.M^ B})@ DQ ,*F! m;S0&c6Ӹk~*N7Aq5(scC}`w] AoZ6SOk2KR^xH.՝++͞J(Og 2YRe-[:hø43}cI DQ];MIچ{|݉x>9OFlx:xPþ|Q8F*B7_C)w|HtkQA CQi[3lШNHS>t ǭ4:FqB@'Gr(k][4gEp}>qߥ!#bOtCa Qi@0a[_UKEkgl$[=aI"yʢseEo.^boXt*ZNGm? !?=|mniA O^JQH*3fvs08̸SWBMItcE)Mcj:nbekWB}2rbW=7qc9 DQm+1K)AGpőR [Gه.M$L&)Kx;,ґ/f +D!FWNv f?bA DQ&- ҙtDЈ %Zi<59㧫޶M;SleұC&eδcce 3_嚄V)KDd ر CQ.61Cl|:gQ̄zs0mOR%= ٯKѾ,o: @/LN"  ^mK 2 CAi ">lHѝۍS/$ghn)G;vE\ӜY 캡T D3 -A0DQzKp1)Q;0К!ޡc[5,Qm̧><|xHY8c3j`0EBu}F5!d?bhꓻF;Q DBGa'Zt|}ZٺyVgbaE}2rwLVZ7'F"k"Z#,$7lSe&q1!DQ-lM4с62@:`pppU2S)[(x0Yo _:"(cuńFMji 0 Ѳ|!&Hp 8cD;׸zКejoG=iڣҁ},*J8s/aW8zNA @H"hgNܠRl D, nrwr>iPUݾj<ă 4BJEP?31 CpKWb`E b7bhbŞXh ]}vН9FqNe],B pgZMӚ nt;X1!DQm)F8gsL"C="7MB-0qh.ojߙN=gP D'w; DQ-׻UJ2oIctG6VG H#/سձ j{k ># bA A{GE%ٹp5K  np?>)"rznoZk3IQ µÂ0:܆]<\ DQ?-tՅH$=kD2. ̑U@48՝y?|)Hvًe/n#`I,ѭA @7E ̉ ]`LMYGΘ .n49+e;D~A>@q]ZԠ2"&2eA0DQzKpEӢ|À#2iRKz/fb!{ZG*++| T؟ ;%SWZylw)gTӁ CQiy)bCk?|oWc*,}.y3 K͊/{G&BHhUKB!doJ.w# bZI Qp!! TwMI-zCL]>"^W4 .ڍ6Ml  E9$Hʢs'֭ A @A[*̼.1mԕ>kB}QEI9U(fƼB|,6 vKi,'*v1 @P-Y2S(RG]:[44D}פ9%mhy Vf`N[2zZqR7^ A @=1A(e‘6-%:z8BF..D,zy5Έ{,VL2#=IYs T,d^u6:6A DQtaka[[lrrF!$,[W KҜinCq_=& , *}VlJO(a=1 Q%3+Rf(3l'TCH/A ;:鴉2 v,Ӣp>`p%yMJ4U+:6 DQvkM ,n| Yg8SZ@^}r/$@Zup7TBsڡr; IDQiac) %RJVu{NBo 8"Em ?S`P⏱Xnb'yk5ު^M=N1!DQ-Mpkh b,mT5z;'0A<7&V) XpJ1Z#WV!wOQK EIP˼gO(A-aNx,I!X9 K2JƸX})e`GSlBiʙ&W`Q.un:(EfX)XDDgGQ @!D#4=_AQZn_9PgSVG[=PD 郥u@"WaΉ^ (+b7Q@ DQih{ɛQOkw[\[HOXa9'p͍% JEoS'1fV_F@A Q/(y;VM[]~j^x7JV,=c8+sе㌒*IMڧ,~(e% )Oc1 DNM0p$)TA ( tIjJ|OzuGV`ưa'930/?u?A DQi+Dk*eKu\:Qxn҅tY`lc0fDhW\BZL}|PnJF䥏rzn 0 Cf"PT[8kt";ѩ"4B[^^IX=0 &WK,GFKHQeZF\A DfB!DL W)FRis]+Nr^fƛؼ-4:66TzQZ5?fpfCd-R6l&z5A @={imv eo慿`!l򘵕BG7c'aެڹW@-qNKd|Obj=(ⱋ' A DQm$6$21VŒ R+]!2A݋m{~)O%䥇v˳bh7hW DQ(E/< ξzW<Ɖ߬ߌ]`lUsIXA p:N&1t&B;.VR_!5  DQicFJ)1꘢~/9R/qK|%ф[@~ڹP1ACs&Z)AY<ƷǦ׷u&A DQsKw! `eH[nL[ رH %6!5 Q..h:>/=XSu{$ߒL< 'dBMkDGPp CAio޼(81-OeV$Gvoʇa?ԊK} Z+g'rUKBi*E_(~? DAi Qqysқ,`)Pe SSҚC4^AN/v]"v`VOծT5j2=1 P4RBh`'Qh : L|ͽ̟=V$J~ ;+Ա E?䀉hRj= 1qkUnD\t^1n3xeLl3= տeDMx*t5 j~:l5R @@io:Qf^%ZktCj;[ 1/pAQ`'<%h%ց 00ݰ!BrAB2z:2 % 0@ ZMDȝcM%֮u@_ֱ 00>ЁD ew ~A2+gց 0@_Sһ >$^]v*Έfpx'M1 0@O; zCs4ņJ+.RXձ 00i> $༜`}v?(M^U^ա0@hЊ rIt^=non3ϲTv$ֱ 0 0gRe_D', 5@Pd }ad >cd5G 0@RyHbsz:\ _' |Tõiֱ 00ӬX*@] Q"(Wn 1}:.&j ֱ 01)"ߠe<9a g "jTI@1o>Lutwtx` i p/~ֱ 00>€*}A@"qzfF  0@рwc VT\fbSEl 0@,Q&H@!4wTY[ 3~硵!| 1id>䰊G=7[J @*0\@&?2ֱ @@_FM$!q`yx0¤|֡@izTp U|e6 @A?isXXG3F@>|Ɠc$Fdׁ 0d &oz;ׅH8/&. ֱ 00ؘ* H;l2px6 xᗀ?t jՁ 00ioLTH.(-r:{xe3p C 00Ҿ,TDI&8D⹃۬ 1H`ֱ @1i/ i8QG=`3 A4t H5ֱ 0iw/=fJlLXX̚ĵu!0@Psr*I /c`2rֱ @A̅70X.vd H1MsQ4 0 0@iX&HV)֤<p:C<6 !0@_Ԓ45Dp0\x) D @i hwT}lœa)^ z6A 0@L@6NA>&8|SB,g rGׁ 00^0@1`)Nw "X&0,cy& % @EAoZt& \{"qz5+00irM&Tu`3.r 0@~ I0D%D1Y4Ձ 001d E5G'Њ͒U9ױ 00̬,־ "CDv7uϪ " e7 ֱ Ӝs(KSAEfc%8G=0ESt 0@b&M/N:si>OE` a ֡0A82 pCo: \ؤsPױ 00ӼPh1k$8tb[ m A 0@4 $۝> |P1p x$A 0@$c $L~M>ap"E.ױ 00^d_D"%_(ܭV}A 0@4x24Iҹhe7p%> AjX {%ر 0iO,y  T! 0@nÏ%M@ U4Lv { AoZ!xEa֒ ձ 00i^*n99KA`-#<:. ֱ 1ҌKA 03 !DK

,ձ 00^DD< 4p㰙17b< @iGƤMPȗ1+Ն8aց 00Ӄ=[ `;Ϳ-"@ @@oZ f*pXv`,->`U ON`ձ 0AgA (Xr~(8:%E^" 0 0]"n4@7k֩ ֱ 00}U@dJ"`,@b'r 0 dB #M` nXOtx810@o: 2#pBn5C|>Cc Ѡ 0Ӏ#f*8\0F@Ct$9ױ 00\j D|LxVP0mܥ;zbױ @@_R'wUZn#_l'/z1 0@O 7{A0^g:@[w9a-ձ 0 0ӹSb_ 6Ju+A0ȓ 0@Ҏ BQh&#DvsaY4 ȺF ر 00ӼRb?ej[M#m`(rh 0i Џpp|p8@x) 0@@| *MO"NwHіϳ<Z|1I0 ο>&W0˫^-"p˃] 7N/ա@AiG1 v+DgH2@K* A @_]!c}36@ ;+ ! "'NT7k|' 9OV 1@@i}@LdEtd+ å,!lrAR9o;c|6|AQƎձ 00i^(B$'C\ 5Ϭ4 0@NCЖ M3Bmd3җױ 00ӼZ D0l"Pc/ A 0 οw  C-,6@* {~bfԱ 00i 2D $8$1 Z{ɂ 0@Gr7A:v1`'KqyCց 001D&TkD+% p+ c, I0@4*kWA>$C:ee>`tPvk* ֡0Aظ 0G\t~ֱ 0 Gݣt !2(էݿձ 00i~0`_*0G ;tg{ 0tr?Aq-:Iց w 1&xD|,-HݼfpDe2ױ 00R "!TJIΌȌՁ 00i0 JQˆU^dxdBƨ 0@ҎgP&BN{DqCv#X0oֱ1_Za_H&ʩNX)/ֱ @@_B׻:`|.hױ 00鎽@YR:yM`SK6"ֱ 00P(/HPV L#p^p00NՓd>U04J nC&@4CxA 0@nK b V:@B >=9e\A 0@4ٝ>F@ $X*ֱ 00i~hY"5bEgp0$qm @@ojح nc/g\UG @AiKǁTB"`/y R7rOց 00^!C\PPULx@ 7Xh&2u ؠց 00~$,*dsASoDZ{Ψuױ 0ipM.P M<,>Xֱ 0iOp!-F<!-| k 10P n|DD]6j&` 8}@1 0 ?d*!r_|pda? 0 @ҝ A: 4S;-'A @{CQ]V֍^üp4A 0@4"w >Th^pT 0@NP裢yHb:+ wlGꂋձ 00鎝*/"A"<= `> v 0@nO Hal%gH/@AORs`}Dx=`>"Ihw,DΥA @_K eY j ց @_Dn/|"`S^xB>e*aScر 00̨~ ""r 61}J)|A @_"p` K^h5 <%L/+ 01ҬBkO)E|6|ZX ձ 00i֎ d#g*9FJx/撥 ֱ 0022S,J[@E6= @_ D"wؓ5-cbF@_ @1i[NI>h0Hr" ֱ 00|"}ADJ |L6*b 0@ T!p@`չwc` \Eeֱ 00Ȟ3e@![:r3~zՁ @V,A}#t.3a~) sx*!0@P NTc}|a`0*+y @A+ω0SA^w# uZ4<1@@ihfZJD4p3d ۃ4 0@NgS BLo@f4 (uA @_2KCƬ>p ` [LGc4 0@ig((V DpKn^-|H1Ӝ`i5ֱ 00.ݙ*@Ȁ$K `.:Ix,@ 00>@(ڒLpzFpߙ7 Xyhln04$ձ 00iN`־ CD0qDW7xKeQֱ @@ioA B@LI.q 2-ݢyx 0@i@M0\^c;~_re`X `@13'$q;`+z|iP̴A 1o/ V>Eq=GTrCױ @1_ =)I|`B490%ae 0 t-@BrAJ9$Z0@,Mzձ 01̐"=z Jz#:,pױ @Ai HD` d{C8!lq47 @@oZ@L+CN@sz@k=yyRՁ 00i 3T0(6[ 00gLluX@Y,MiVֱ @@ion!$I#4 &Sx10@o2P_@ T%t$_`$0 \ױ 00o&`mA0_z%#Xkri@uI 0@iWQAHP6-^hhPyn\ 0@ҮEw NwH,&k9- @@i,-dwe{3n`ߘ/8ױ 0i0$,,h!kyBK G<*: 01l~Ȟ Ktڥ3P}2EUFI00Nѫd( ] !;(5@7 0@.a,M& Xз !"x 00o.Z BЯ0v^r#@ֱ 0ӽJ0d Ss=p&#y 0@iw(R&<f961F(Gy䬼8ڛ1 O;kܽ C /c lfG6 @A! *ZNpx $Ȧrձ @@i7U)@߱Q xB#9ֱ 0At)#XBwEtz@о/<)4pׁ 00ޠ t# lpw-7_,bP;Rֱ 00^"! t#10R@=Wֱ 0 g ]`0Wlt~I]n0$Z ! Fa2NUV4i]2IF`īm 1 @et` :O-: DsUQ~ 0@J?wL0dX \n @@o[AfUt"P 0_= Ai< %FEVׁ @_/ } @52t.pwOc 01^)TM{R>6&IpL" 0@Үڻ Dvph j[bq- 0@iPл +0Ϊz:ֱ 00i>V¾ R2$;>2 w8qoױ 00Jݻ)aIDX" P;z6ע8ձ 01̐"A=Nvph(;w}Ucxց 00;Bn$T *8~H&iop ٱ 00^Х GSz{y =s8A @_Z0_ `] O04S8ֱ 00ӈ 2eg;,5 P|E\q0MK10@4K- d#T{ #QA S akֱ 00>}@i=σ9qrXqLsT 0@Ҿm n $3`/,# :ֱ 0\бB!!j:iH0A 0@4-@ȝ> `|vi+4d%t@Bہ9> 0A;(8S=6p+JzBo.ֱ 00.)R""h|+XN R~J9:00>zh2j;-?.0ꫲձ 00\Th ":oL̢ b@% 0@QPMX,sg I/$Kt1 0@;usRm096L;*kձ 0 0=k}Nw331^pױ 00iR/D"ֺlٳ60~ ֱ @@i{KҤH"z"3x4% 0@}uFĻ LsԶ#` 2>VR;0@i2Vpf;`@Pq=}T11o( o[@ֱ 00}EYPBU^~40>JND Fױ 00i^V $TwݮZ_ L 1#Ձ 0 DK.Aַì> 8ԁ @~!n +v`D2|ɏK|kձ d]&? P@ s)L4-ױ 00RdD?;;A1A8],1 0@O;t*8!.MA 0 ο w H m\>x$p(yt[ׁ @@&lF;@!ց 00+\P*B;-H`Qt 00Ү a3t92Hkhֹ00iVH:i>`l1X+ֱ 00iNh7`_!TGvxSSb)7 PV Z֡1i4G2@MGfhT)fծa 0@iW諊M#v\g800: 0@:T!@dwWVNu:>qՁ 00iA7 Kp5J7ﱅ@@oZwa.tRrb+-e+2S m h36 lPMxֱ 00ӽ![왉`&bXjP89I  0@҂H!B2ҵp 0@~*ػBF4@n;6 O;6rֱ 00P%/D`@:{#4l 0A~  @c#x͙>DաjnL@֡0ҵU5¿%$tՕso$1q*`ױ dEw|MZe]p !̰ 0@ҎP&'I9s̍~~5 @_|In'♼R؏ 07 0@>*r7A1|IJ]x*i BGJyVEVZ pwY5̶!0@If `TeM| ( 0i@H&CZ#^01ϕ<s57V 0 @!n_AP< =F/mֱ 00 ݻ/$kYK=.7/L @_B}4]] tsW`w@ 0@]!=e+ 00n=L&}Qp^o Jֱ 0iOppl*^2gCpaG87@ 0@iw!tEy~:_U Ձ 0 wD#@D N:3Y 16g 0@nTM0L ϙD[wu* 0@iw(TE&$E<Z]׊X+ 0@i(EԻ $@Sp&`5CdzA 1o Kk`}DA'X~ձ 0Aҩ@ ".xW{ȍ]\<<3hGo 0@nೢM!#/wF BVHց 0@.AM$"GfۼLg-x$@ɤY 0@҂R&#l9P\d%ֱ 0+* )!NC`,U< pkvl0ֱ 00 N@e_!R1p%U'v N*$ 0 tC$w N2'::YG.F<\1 0o<$*Xc\\E"l!01OOb0(J4r Ɏ0_7CH!>210@o8I"_YF`!g.ֱ @@i۟5ᮠ!=]~ . bAHױ 0 {A. }LT;K$s 0@ighc *zPl0# ձ01,@oIsp\k<|F0 rֱ dᠻ \ үNW| xGD- FG5M $ɚ[V[Xfq 0 @ҝ ߴ$GsF tZ\1 0@:JUB F̔J#K<``f 0@iw(E&C#X/ _C SC1 0@O;w Z{A0;>^*% <סG% 0@K*MJMĸtp | 1I `zA004&GB#`S>G,?۹6 @DAoZw`?/> V0#_ L`5d 0 @ݠ~D.;+5_ֱ 0igAֱ?T &֡ 0EAغ@M'/^!iU3V %A @_L >VY:@q<.-7ro 0@NˊMPmg; ͕a|# 0@NPS{7A!$7 Dh 0@i#wDUp [ `<` 0 d;ADuU<5,)* 00ҾB2Q<E't 0@Q& U ?;äց 00]1lrAB{uƸ#.xOg 0A#Lp`>wKFy#& ց 00=!IrA "Goxr8wRFױ @@i'F ER$&16m Ԙ_ZA 0@o24)<9e|Um: 0@P}r7AD@D2kTMA @_ >E XЖ' ) >k/ 00}@ALpF@:,2|䕢hDi 0@.Я n'*{a|hbF=Aa}@ձ @@F^W6mM NEֱ 0 ;g0 AyȜm 0@Џn1]vg `9ֱ 00<E2D!X,ʒ{% 00iVC'Gr:gݙ1 0@ ]CKSi^)p9xչ 0 1{B Trz >8I1+VL1 O; V{@Ԓ|N!t47A 1ovpP` pZ 0@._-M B"(qpv->0Oe @A+Ι C+}xD%54@AOZ 9|fE@>Pp n: W 0@nP_" IHz5 | 0i㓖wױ 0ipǘ&Ut:\f(.sр/ֱ 0@  A\^W$p@AOZ RkVpIvl#+_--CTց 00>1lrA "b':M |~rOpFձ 01,D (x]"'?Tpkֱ 00T/KBqu)y"oi`a~6;1 0@O;Dg;2u0Py_yu3 v]P)ڻ #%[i`/},c. 0@Pw $#dc# y@ 01,QEU1#A u˯Ok@TA @_!UpRokdiv>5 @@oZ` ;dx,co3Kׁ 00=!JrAX@@O/u#wձ ,@E\.UtIo6@A 1o $ x>*dX l 0@nPZD h"w@'` VPu O ց 00io"NH.(E#\$k 2kOyj`X 01ifÞ )7CM@ E n/r, 0t;һ &`0yʴW.t%` k` ձ 1i7lD$-O>b"G@ìFl Ko&p+A 0@4"dw (387P`LQEV$!00eHL-w ~}y=3>2|Q[ 01."*\UTgA8O kRcd @@o2S -ER\0@AOZ >`Fz  W+ 0@i Ăw v897Te 0@/ w *wwr)ͳ@4}] (0{b xLN y @1i!T D0~.xtr+ 0!M$*N0ԑP  pFHi1 @4MI4J|K)0r8` 0 t;C_s7T;d'vjw ]ց 00]\PAUu:qq$< 01iF@dOO.U9 Ο 0@i' b Xtg|nqo4@ց 00! b;pWVֱ 00Y+d U9NI4OPs 0@9@(r7At(B(`8  ֱ 0AtiDw\?` ozA{ա0i7h-H0i1 0@OtB^2Ld/Eb=j_D 0@ nyplOf- 00Ү~J2\;h fR1'䉃[ @EAoZ E0Sp@v^<8̢ /c 0@D t8*7ƨ i11o lD*Xi$;>xL xi 0@nЇ!Cv$p ֡ @@i6!ܹ\S:R'_.@ 00nPJL&zF@̉. ¦d)|HA 0@L,);}*>p1i\5h%@9s 0@ҾM#vy* @1ik$N8_G ~bL @1i;88P|T 0+r ++l 0@N  "$^w]@Rmr[A 0@4&NAm`(cϼsEƁ#ֱ 00ӜBh 2 g:0-F+ר 0 d;B-iUAs&

7#`}-5]\eT>1 0@vs 1+_hÁLZ@k[ 0i 1 \8QRPc8ho6ׁ 00i+hrA-X X:y>L`#100ҝZdQL\4- q@4cxsA 0@oz*HSGNKE;I[s֡0@8 1D@wp7<=xY+Pa 01<;DDhV 0@P*r7AX<пA4pI}n90q1 0@O;;I0ʙ5n gxKֱ 01t$'@< uX@c` |U 1 0o k-TqAS^ \:3[| 01 Q!dOLo9| nQA 0@o <,SІg6=E]Gx̰yn A @_DnjNn`7 |S(չ KS*$H3ܓl*pj wt;O!X 0@P_h w v9 ZawPW 0@ݢz7<4a%!HRjkHv 0@ҝ&*:&m4px@fA 0@oz&FNA%T/OGCj -8Kֱ 0 BHT* 묊TyzRCP;+p݋,Ա01 AiP `%yױ 0K ׌ "V1C#c?hk[ 0@i (walhb4krNV6) .C*Ew䓐 mf*(WЛ ]pfױ 00<@"*MlT`87K @i'aB"%mz Q[<-Zף @@oZ 3}+9_~ @}ҝ 00nЗ`2x`ϛ+`95\W>sK֡ 0 $R [o.{d<~/+I&v 0@iw(B-G:<]aԼ| mر 00~a_2d |dvͷyo]KA 0@oy)臖xr;}KMOQ 0iWB2A5n240@L%iV61 0o@h,ٱEg>2 7f, 0 d;C)ńHuN LR* ;ֱ @_ZJ#N~`ap Nf ,1 0oZ{-5oT(1 0@OwP(u܍cUa>p y8 A 0@oK;} /*35S 0@.gK&U<()C\ױ 00B "*.ֱ 0 0}id_ Ýv ˩8 r 0@NЇPA1(:Oe
ױ 00ӝP }ADJ@rDx`ڸdAq n @馈|M %4pvձ 0 {Z"{eINLxcۡD&A 1o ™9F@.0ֱ 00|c`)9@@O6:cW)||fa2,qkp+ 0@iC|YnGv4 4 mpRn}`S 0 1g;BR#i\ CQ`3?=|ׁ 00=1i*G->>!1sn8 @1-!jR2>8O( p̱ ^Q@AOZ PkVrDQ j@+;[ 0@NW `Ud0_sH擳"hYi` 0@`*n@I2g:k@3=+T{Ձ @_Dn/eyX?c<`)UqCL* ~ J2Pp—C Y\8' Ձ 00{BnJ8g:@!.~2ZA @_ >DĻ,M3,3ԁ 01ZI&y.`}y=@9.-`1 0@RB 2-Km ֱ 00龀`> [D'I fM5p < 0@. p7AH>tLt+q 0@]!PZ޽ bUlpБgt>A/ԠU_ֱ @@@/Dҥ .È-jgcֱ 00n}Jj_(D,I|C(/ֱ 0 0K-^lC7 3+4>C. AoZ >d=l':pDCVֱ (-4t/q0Ӫxi|X7 0iNA2AAZ%0,)Ա 0@ iԻވ"ZKoٺЌ,O ױ @@iG "X\=-IS 2AA׉ 00 E#tƂ x{'֡ @@ >q*% ,~`; 0@Ҿ;AMQ3@KO͇Z3(PBX6 0@w1^85}%Ƣ۳b.ӱ @@iGcn N+ej.J 0A a{FgzS@WƩ"/%ֱ 00ӝY4 EU4wGSsI`*ֱ @@inb* , )]ֱ 00B#$ A  .2ȸGk1 @uܽP@z i԰g]_ 1i}ܣUvxc%iCp. 0@N`n |t`wq&w ֱ 0ip :xm?j Kq>:_-R 0@i['0S`Wtca=g x=6zJ1 AoBrCؓ`/s @XV1 0@O"Xݘ,3TL` 1@i .4W s#N9(s @@3!FppsOu\ a&tw 0iwGM&&upƄ|`SsFMP @@i Xد36841=0C( v@z7A>I"f#*l<XI\ 00i7G r;pw,.ЦPtIn oՁ 00A\P*X}ܳaiA 0@Ll;Ӕ*`>o3car`r?Hֱ @@i,,G HFq;5"u`ց @_ Kx+cY}n] 0@B~ M`A`Lb  0@ihj0wbz;\HGo$6 cձ 01,t bO:"9(y4`? 0@ҮP IPr|Vr>7R0! 0@nOJnHM;r=W$ r @i0ħw4i &@>29)Ա01l@9il`//*p% 0@P &(`@=a=%~8֡ 0i<$]'vl sxԱ 01TL"HdO@qOL2}GIHI h~@*V;Vq$rwձ @@]A&ID+_@ó1gi^S> |Iԁ 0 `b Rg`;o9(ĦA,Ŷ.ձ 00=Jd_!J"?Ywrཾ7PpA 0@o$,;M*x><X 0@NПT-w #ϝl*e`<Pʨp 00=A"^ud>S #y]6q#}ֱ01,@sHP8}v *p"Jp'ձ 00^@Vao2%]~rt< `)seֱ 00P1}AD%;Uap/xjS EQ/Ι@Ǎ`>;>%`#pr [ 0@~\C0Hw;VNvr7{ ց 00iM.(XgewhX{#5[B 0@i'h_w'#,n  tEoH4;Q D1gY]ֱ @@/+Nk2)[zFm5烢yԁ EAvR /voWׁ, [ֱ 00n*}AewRLtA 0@B.PM#*3yp5=;ձ01 @O &pỏX{(7)L;'ֱ 00(Ⱦ C%9AS2|  @~ř܀S;cV,p& ֱ 00^`"E8*[c|CM`ENA 1oVvUlDd: /xe.O 0@.G)>&AIL;HQpIJֱ 00\X@¾ Jy)> N pΪhU ց 00`*K.(ԝ[lu=j> ֱ01Ҍ@K\}U{mvR1ޔE@ @DAoZ'\TD,l#I!4ֱ 0A#b j{ϿL9aQD X 0@.gI&VP$yfpYrױ @@nBI|o;@eyMS4 z@Ϳ 0A>}' B@`>+_.>AKׁ 00~щ&TUbbY)h5;i7j 1ij T`}0\&|+ u1 0oKUcU)%'S._A @_Z3ûc.XEr0&* 0@PPC0& []60)W8 0@iOA*wIr; e I0ձ @@-P `m>2 e ֱ 0b)!WN`;@0s] ADY 2'!L ,w7MԱ 00i`!ɐD:\|ay1 0@O ]nu@Q[͍l0aGlf7,ױ @@iRn@@I~x\G)` cm%NA 2q-y 6Q!  0 @"6n`|^}*&e28jzձ 00}$ Q$Nwl'pfZ 0@ZnO&g\pűֱ 0A,"R Kp7[T@N4/l\Ihɓrց 00iC\PUe;n8tlvdlkA 0@4XdSG!t>U@(>`;W S3 0@~Pw1;w+}|0`V$ֱ d) % \o9W2?y>7P""`[ @_~w YܑR8؃ ֱ 00i B!CD+l0~M byg! 0@҅NW >5B`;* t 0@O-!L Zmyk<ց @_ n>r;<dp}Is 0@ҎJn|"Eo3j!V `@ I[ @A^A U@KDcx+9+%_8ֱ 01l  tW ('tVI! ƂA;֬ x.g'q 0 d@br7>^$EIK ` @A2SA^K`K. %EΧ~0h 00i诨 g0%?k @/Mp?2]P @1i[8I `R9=`|ȓ<8N !0 i,PwwL{ Dpj`W@ױ 0 0;eTtbng:1x\ֱ0@wvAD39|ϐ_0 eYA 0@ҝ)n $`C'4}<3 _@@oZw Ȑ>dw*34 x\]ױ 0i.br@)Ūr <; 8Nr{ձ01iHΜ4wUi'<  0@GR&AU$|>8,p#Sֱ 0EA4)%M@C@/{9}y:%@ձ 00H\ d pQz#NS`H j 0@ҝBn0~@ ܬ"Ձ 00{Bi`I ` @_6ر 00]Y+}ANw*kߔM Pֱ 00i>ɾ 2$xC\fY ; @A-AfGv=D~&fnB9]Vց 000ʒ b .N9gx!nu 0@Ү`_U{7A AcuA ɬZn$ 0iWP>" \B@7)?]O ց 000#P -OZ]ۆ+&E 0@W&BU8¸'#+c& `)u @inF+PƦؤ9Fձ 00Щb@ 9Jf.F {}4\S @DAoZ.TC/k Sk[q?ֱ @@@^K'a|@Btp 0 tB"M`@ JˠI"X-X6!ց 00=QgrA("xh/ kֱ 0i jL PEHDsu2Ggiֱ 0iW]D6h% 'إs0?ձ01iHsH}G a`?5`^ 0 ds7X-g 0@_K n$:u?`۬c*ZXՁ 0 CL!@tFwTbO (  ] @@oZdEl:Fu& E]hr,/T1 0@O;Hһd ![Z+p^"1ߪ @1ikCP0'x]D . 00,grDy w *)ewԱ01iVH*̝4wyz{R Ar2 0@P* r7AXŝ^D;i79O1 0o|Z{vl@"8V9hݎ 0@G) 4˝lcRnA0_r':OIhu-ֱ @@ioǻ `̄f=~1ݢׁ @_^J* pXg~Aw{w2(A 0@oz"hV[\84nCLB 0@NƐMXlLv~mlp 0 @f w1N4fdNxF=1d]ֱ 00nQ/Ȓ(ew^gj@ ׀: 0iW5840M|kk+ױ @@iGBM F@#[Tp^Lg 0A&\.ֹ @ijK+y&HK 5h7FX>x m@L$[OTY5SpaڡHs @igAs7AMnP2"=Wֱ 0@ A- dfN]Zf'< 0@Ї4& tdW ^lI@_^ x 'X̀a"EA 0@ozgSPBBѯ0eu^)^콓_@ա0i : q:a;##չ 0@i)x ,Y8*AkGylֹS6q 0B-Mz*Q%0ҲgeeA 0A rF$jn(ÿ ر 00 t D/3\P0Z#Ա AigH1]Ա 00>Ѕ@e_EQ"6Sx#!ձ 00iv (Cs]J8 "(AShe@#CB{ɶ_U 0@ЇQ T^:e!fL vBM`~nI-wj.dw9@ 0@iWKM$#ps-.ON: `P 0@NWx7A' Kxv 0@~*T&Lj P7[2n 0@}onDzO1'PX @i bn>ڤP/l_ܣm01e 0 dA? >D`V 39{=@sUQ 0_v  9qy`?== Ai+1Ke2DN:`8O;?Yױ 00Й}A G;{xL@3ձ 00E猉i@}ގi?05#A 0@ozc4iZ(o`< Kق阦 0@Ү_P&VN/onp)k&~334A 0@oz*1zYnBC \ 0ҝbѻ "h0٭pGqSN 3 ߽1 0@wq)(h`4K G(7, ֱ @i[;* r$&~"'X 0@GB&Uֿ0WġUsֱ 00i.P1}AXH+x#`2 @igDAs7A Mgfb7DOZ@@oZfp[A!G&wr~ =~( 90 ?ҩy$|v6wzS bH/Hױ 0 ;w+Kt'qURG`HN0}t=oա0@itE5OHdwƸ2b4U 0@i0Jһ E_Xy)+ABX+ 0iWЏ#|Zxnp*&(А37' eց 0 PskL)] 0 @")@|N;>7L>hu Aik0h@3S"\v9'7ם=ֱ 00ihjoX>,=9)A @_Z uݑAwe8J=>X7MbAֱ 00x DI n;@ar64Q>S 0@BGhAQ&&/#w;\Xʹ|7S=& 0@Nо  HA:TR o<.ֱ 0 {B)1hg;j/:xJzT 0@ T XYu&6,S2n`s 0@B7(D $<;6)] ~; 0_*piaG)k4qR,|W @i1*l  ջ 1 0AOئ `f^pձ|L`ּԪ#wKر 0EA.DU~0:iV$an 0@ү"nP  ۩>' @EAoZ {f*p"`>N,pu+<ܝA 1o8)^yi:'Cֱ @@iۯVn@ E"90iIU`VA 0@<@S-tr~ʋXYXY,Ё ֱ 00鮝*}A(Jzn'Pp^;ց 00 8e##~spGvib% @Ai۸cgB޲XR ?Pټ¡A 0οyC)h $8J xJe571 @܉{A.w'l?-ձ 00\ P 2DIPtإl6/q~p%J5y& 0@.a05w :pF Pֱ͇ @1i5=A]'Z_*ֱ 0@ҙ@Qkyȝb hvVQ⣡0@o: !Lv8D _+G,s/)`׉ 0@i(>n !`<pgu̺@ )ֱ 00P}AD`:4> pa6H1 0@O ;E{Ap, % 6^ ֱ 00~޲$"{pLa%@0 1i"}ȁUM@:iTR 0Aӂ QLʙ>S> F@i0@`nWwJ \r/ֱ 00zA*}Aw~e9@r@nK < 0@ig裨x7A VpClc|6bp 0iv=48|FO֍] 0 t;APC cpNlla)` w<ձ 0i/p5UksXb Hdֱ 0 A{Ӈp7*TCiFM.KE8ֱ 00,LT(JS,`t 0@NMJ"xҙ5su-_2rFW ðҌILy u\<`5~eQtױ @@@, Wd`4101o e(>tuF ڬ1Rױ 00ӽ !Dtr~`Q5#Ѕ.ձ 0 @FE} PE;$P [V:A 0@ozFȖNAy@bSɑՃ{a6Fk 0@B M ֛JO`!0N&U @@iLC.ܦ/ֱ 00iNd 8q<^J[ 0@Џs7UzQ> xd4!0@f դD0&-/aE 0@& !Jv=@o  0@i7hĻ x@N` U`)2lK ֱ 0@v)Ҋ ^A˚P 9U4O8 EQhЂs&7>Q|B<*87w.ֱ 00] /ȐHKN3tnU^4404` 0 d;B nU  āS` 00Ҏj g\ja7<.<6 0@~F&*d3>NpǼ,, @k<A 0@$- ՜tdɂSWձ 0A҈R@HnG3=`/^Pux\NaXA0_%RpG@6 g Pe@@j =^w8G9>\~ 0@n!B `@ Y~O(=0@ix%n35ts2|{ֿ@@j9 Ⓢ, P9J&ֵ#$։ 0@P `T{SI,/勳l@@oZ Ü ztqm?/G @@oZ>LYew&lvv2? ױ 0@),h A#hie 3?ֱ01Ҵ·4wvCv3_\0fH_Y֡ 0EAD {@Eq!@\C-toՁ @_nWߋ#r;w_- @# 00B%LpxUNKNEձ 00i SHSr7Xˈ?4p't)A@1o\vP" ''=4ֻ 0@@kȝnDuoil. 0_ ^vMN1e Xˁr+ 0@nG)*r7A@H0Xt"ϛg,fm+ֱ@@_Zk wX[RtZiN! A @_r` .bK%sL1gL8 0iHl'C Pv9a`pMֱ 00.,"쑍[?f0_)` iᑜm@Xձ01Y) |jtH4[1&|ց 00iэ"-vxԬCS 0t]A'`§w b`:.zh 0@NW V|reMhVZP1 0o$@k`ϒ-N9oc\ vllA @_.`(,^t2 ֱ 00i^R$ @J%A'* >11oPDׯN| A1 0o$ v*FdY*Rkb1 @ݝ{A(!`.`UUi ˼',ֱ0@iH^) hyZoȾݑx*ر @@,,lRFPrI pG};pMֱ 00@A}A(J4:Ji;A^vxU1 0@;tuhAл_t4[.N֩0 t {y4ώ`3r`' KS׉ 0@]ǻX"Q b/FZ>` ֱ 00i^T"a_%T@.3I <4yiױ @iQ dp%qzYRǚR}iֱ @@ADxM"$e+lf*ax 0@Ҏ -M0#(4rM&|Jw@AOZ޸N`_JĤ]\ DMGֱ 00 K"%="9B4Mֱ 0EAҒ*M n9?q>n6p%ց 0{BBrAA&t 7,ͳYNny @@oZ 8$2SFȊgiYh^ٕ_Lց @iwD ^(T:>yr;Teױ 00Ӽ@U 2DvY0iZ@ې @oZL+%oy" 0@O&*&x\zX©K 0@ U !FϜvq@hLP凄 71 0@;w T "Jw Wn)SpTL @iWn>h",Gt)69g-ء 0i@nl`-pFl 0 @gr7$kvjfV>5lA` 0@Ҏ BR&#g;p2Ů@' Zֱ 0Ai袈ܭH&߸!k۬/A @_ ~D0nSd|DO(ǝס0@Zh{h""蓷^%ց 0016E b\:C9, { Cֱ 00n;Ed *sQy*'l10@i=xn78v ORp:$SEvI 0@n`MHLqpQ4<=l9?wfL 0@>A&UPC' *iֱ d&% \|{lڔ3P:𶣷*-1 OVsJIlaIKi:": @2 `:A/9 E @q^ֱ 0 {Aׂ$ad9eq_ZBTaׁ @(n#v(0 k&,c @@ik}xLAB`ZN}7u: 4S~ױ @i à *oF>Wh3Aԁ 00ip.f9]%ǹ96[-/ 0@>ܡp7Uv(AӾT 0i@ΚLP8v`z_`ҿ/s 0A@ aF\z PHx f@ 0@}AVn@ $jH}O2xL.2 0@ҝ ?UNKJŧ6d`0 0@o<۝ ]8ΐ,AL]ց 00iRt }oqfֱ 00"T $"hf&Ep Yױ @@-$6g^4 ʵ g@G8B]P 0@ig(J `0X": `>pkֱ 0 0 [(`CJhabaZLsA 0@4 pi TXH|/;bfXw 0@ҎૈnJv;we $p]Mf@Ձ 00ӻ¹brAAZyfhj'`/_ֱ 00i^*H[tV쥝pqNgР 0@P(%wDUpV0owV4Fױ 00^ TP”HD4~a_w x 00i(Lp(_n\fü KMCd6 F%d]~g\1- 0@ &ݙu | Dq ױ @@i7P IcNeM1(ց 00}&,*vil _2p6ױ 0 0}]JDWQwp0@oZ1LVphOV @?K; =}S @iG0MG~^'+eύEB 0A (IX^#SlϮn"w 0 d%4"VA]KZR 0@ҝ@(0q̕jO 3@ׁ Ӿ0JaU@:@OHK<5 0i :@IQYZnǾء 0i<Փ"r8pHxzر TXh#$Q$IV(&29; #|{@[ 0Av <0SF%9XADGZ̧ X4. 0@N௠ b*ࢷF?i@h v@GM@RdDjl- 0iwv>"~_||ָYDձ01i,|HsH".w, ! ֱ 0 {B4* Q@~Hfzd5Ds@@oZ>ۭ 0kr:+Vp)0=Z ;ց 00i 3HF\8G^qI Yz&@10 ?b4x} '=hO|}Q/1"\֓] @@i[zL!1]YN3d@36.1 0@Owr-*{A@iUHmWMY bֱ01l@] &p#DZ lW* *"nh[K&.iIG 0@i3Z $r:pN~2/=t) 0@'PPnG ^:]dU-. 0@i'("w+48Ĥp?`y) 00NЗ`& xF|=`7)#4<ֱ 0ipBrAZ Dq5@(o }n ]%ֱ00@klf5G<(yձ 0i>`4KYv:7|H=-2%A 0@4x dSFPv?x[vÆ]f%ֱ 0AҩQHw|ک! e5 0@iWOb&U@O; O 2 ֱ 0]+QQdB|l F-C 0@BYi BU|-O`(cZ98˾9B0ֱ 00< HP{φ"jN1,I;]`$ŝ 0@C<m80&rQױ 0 0}"iA"A`#0 L 1Xױ 00}UX TAr-~R^72\ @1ik)bR ZN[ T4 0@ig( V ($it{kX?(ױ 0ipVtn#x,G E,MWz 0@i(E??jo7$p' 01ng)=AAlH$;e^ ~rֱ 0i0:^@U;{-`_x#4 0@ih H$ l]o"%`1 9 @AA@VR/}Qz_6  v Rd.'7Fψ 0 t;CHu*=Kp̀4ϻ$t\ 0@N hM$u@HlaAP/ m54Qxn37b}DZ ձ 00Y*C BaI BGX;\W͠k. 1i `WZ2x}XXֱ @@mАM@h]1-@,Wc 0@.oĻ " HH }@n|_Mױ  RP~h+u1y6ֱ 01l@P ("`3}&xHjPbױ 0EA4),m&x1+KNV(y 9 0@NЇһ ;P^\`Ld>tձ 0EAti,F$n/xEN:qL8ъ+ Y 0@AKMH";ۅ|H͙ց 00ibrA)(@pK˟X 0@҂.PDw">uZG@1o| 0@i'諈w00#|0%p 8֡0@鎀 qBBOg8vբA 0@oz+w ڄVmׯ \0> )?< 0@]_ T%89J3$q ױ 00ӜPTPe_Dv;;@IEIձ 00R$b_2*v LȞ \;< `): ց 00iVdE( V:`x|8OR!9n4ױ 0 {AHxU\X0ey2a 0@.`&H>T]2Xy ;3? ׁ 000Ú\PA Vo0QYp+NMloֱ 0i F۝E`8Gx\`+^ @i'1Z";Pga, r떁O,! F%ɝh#3S N|-ױ 00J@!TG 3= uֱ 0igwN6<l3*^R|8XU 0@Ҿܠ B!U _ pH Mֱ 00= D@ջ798 Sױ 00 Re_!!g;\i8(f/wH00ݡ& N:@)3tDq` v+(r7A Ir:}K~‡8Ձ 01PP%@"]-Ф71)1 0@O]K^$LGz6ց @~[G AI/%. ֱ @@io-|nyȣV`ʵ( 0@.DwPtHb0-  6;_ױ 0@imBA7-7j\>@α v]GE#wB UpBqh\``yú00оzb2>*])\@,jȽ ׁ 0 wŘ tVx¸,KRF@ @_ $wSx/.~|^Puí-0W @_~%2@e&~V7_A@1oWD~Ruq-g]/N'!Dֱ 00<С0dIv`)G =zXR &ֱ 00\@* Ϛ}IޓHֹ 00LDC8)+`ױ 0Av!@+[{@Хw%1 0AO[ RIf꫏y2I `OQC`#ֱ 00=}A"4r~bљU aLe?&.ر @@FmLaFpX6oN2`Oױ 00ӼP (K"`Sz/HTuq^3`ֱ 01& @\H h/4ט^_. 0@Cn@ *( 8ͩHaE 8ց 000d";l`0_qI4jm91 0@vR-B0lޱ 0Kcױ @@_A/RR$5 Pj&rֹ 0 @g\M B:ei0a}𷔥ر 0i?pRI.(T2 |K%Jء @@\5D9};8҃_e^Ձ ΰb@, tjl8Y7gց 0@_K4M "ew>ax638A0_;>0? @̶(fƨq1 0@Ow!w/Vr,O@gɚ4Pk/10@ou_A@8C# ̬< 0@.QL2 d1* @ @)/ 4 1i|LP(\=@D hH*?6 ֱ @@iE &`͖:mJ<<ʤsֱ0 1g3KÝ4u&>nKHa@AOǖiJ%_%  0id>D#r&v+]o~{6^` @ 0@ FewA ~{*#l ء0@hW ;r8\@: !1!!Uy},&|T 0@GH BPR@R=`I#6`!0@'c;SI^6"(@3< 0 BH\?Xjk"<ر 00} T*!C>]l0ױ @@iB|n(10`^8O} 01PH $k亃L2.+ֱׄ @Ai@|d66 iMF&ֱ 0 K `U. # KN9 0@>:һ kewv.|o:i L: @i7Gz7A Ut)e66(x!0@O,rANUS"~q2B]S.v 0@ҮPhE &K;0{oekH,A 0 ?鑨fDy\lr??/dASW 1iw#drU`MB!O6ֱ 0iY<$;*r@zg)n 0@ПjAK`ǀc ?fA 0@o 靂>h"vOǼ 4 00>'"g o:Ml~ (:t2'n ձ 00iNQHWL`(x)`]ׁ .!>BBgϬ:@J pQy_} 0@Ҏ`)}M$1촋K >TO! 1 0@Owu*8E^!DO;y!Q(~a~ױ 0i"šP"U"0-p"Ŏ8T ֱ 0 BD/`@;^OczH2:A 0@oz; * K#AI < 01<: ynzZ |p@ 0@ҝA*4U9R 3%j00iK&!U|_zp$p&3ֱ 00iΝdfhD v+ 0@iWwBB#ḛ< Ա @AiA haBnJ#fp>p [| xYԱ d&  \lv n56˃G8, 0@nPnS;o 8d+ }w 0@Naln8 QԚxJsױ EAiKbbl!x7+iU\+8hx2mֱ 0i0^ UDL\B&ܲ9v ԁ 001: Z(o- qjN+h,1 0@wphA[{A($^9e'C8Q6 0A_ 3±UY.oM4G 0@]GwDԛN `#Ё5= ձ @@i +&DL{w8c[UWֱ 0@i,nG18`!w0 Knf{WA @_.V}셝  ֱ 00 $ }l`b?*{H AoZ ~ <]N2b&; @ϑ= ց 00 \Pxտ\ޮ`1:@ֱ 0+,)!)'d"C^!1q1hT 0@.K r7A<cpRQ5ֱ 00,}!!1o;MI@ MOi> A @_M0`+z;9,= 0]۴Oֱ 00~P $ Vu";{!$#Ş 01W" B@k!Nh L/ @_Z h$1"gb _i0yp AoZDL>r2"ӄuNֱ 0 {A2!b H8筧0 ƱeWձ 0iF6VA ::*xj@Qz ԁ 00ӂGLEU,z Wi'» ֱ@_Zi REOt`/>p*"ΑO ֱ 0i_tH.PJ#`&!>=7 lD?4ž}_y%,J1 0o`jLHR-K 4sb/ֱ @@M@hp`3K|  F1 ֱ 00i^J "*7`u83ֱ g N@ںg8@v達 A 0@o { w )v1) 9|dp9\Ա 0 @6"/ " Y6pA01oD"S=`a4yB'B! `ձ 0ݻtAEHHHR(5VFx2.ց 00=!8jrAR|"yleUpׁ @_ >__"V4(.d1РA 0@oz&H`pє=;i0Zȥa KM`>fJ8Ȓ@D .Zxց 00i0` F59&MCn! t} R IHu`` {p.fm3 Ձ 00io EL.(Bk@ߙV|XIuo+ 00NO*Lp1b>qDu2-7 0@i?!Z&U,EQDq!0@qS܉6`E.p@ep}̧ 0@PЖp7Aa_k6 ׆+ʼn8e 0@Џ&U@7}$o Y`Ձ EA_ _/erAWU{,l ؠA @_]+)* X'G& 0@NG'LpJ `doց 00{AaC䂊Nw l4+- ׁ 01ҮPhAd`S=`=% /<^ 0@Jr7U^pC<5ao 0@i((U\5G(#&I x< 0_[08Nn^x{wA=P 0@.PweFtɶ$F3^i0@ց 0@_mBCEdwW~J~ѪY ֱ 00inh "C !o|3>ر 00i>T/LNoZY[Z֡ 0@]Aw 7S`W%@ɢ\4*@H\ױ 0 :(HPW@-HOΊVQd 0@.o)ѻ `@ F1ji4<Ѹr 0@iݠM0"AoqrX%ouJ $ 01iJ$ Tق1!"uP@Z'K3ֱ 0i${)*L =Y[弄QIxgձ 00i^Q$zw8xQuv`E @@o`ElD@l^|C7e` >AAp7ARhz2y->GjÜ Kס009$ "`|} {|- A @_ ûc0X-y^Acٔ`QA 0 tA9 ~#yFklWTa@A @_Z0Q `"<@S9{ 0@i&!Uwt1#QLpg4 0A餇`[տ sђG<;1 0@;us J{Asy/,'|A @_ w cv8e0+kձ 00iZ! KE;L4;w g;q&* 01,BD Ife(+6 @_> w a lP->~fw(ֱ 00]x $(C;2{uhiM 0@iwhMB"8-{?~3xTֱ 00i.hY`/$~P L Kn__ձ 00^ Ⱦ ʐDt*VV25%x 01G )`zȐ__Ue1 0@OwprkAAH0g:@Zcw rB,s 0@iS T7  7i.+ֱ 00}/H4 `/W3@} 0@n B y%Uy 9u!58U{+k 0AӶA%3~qN}q' Sm} ׁ @_ }uVX43 E&ձ 00nX+/Ȑ(\~Z_q0}* 0@in` F\>ت Bvd 0@.iw$*Y_tnsE."$ױ 00 } 2dvUԾD Q\4x`ĔRLg A @_"]=؈;^8G/XF(ֱ 00̌,pP,;J 01iQdOpy0)wCbPij&at00qױ 00i^`~ Bĝ,88 0b 0@ЇB ao;6`/@̢˜ A 0@o{w er:?2])7 0@i'w$#ht8oA pV 0iw&OK:-cR,,@'7| ֱ 00iNh7"d_!TwSr@j q%`ձ 00i抑d/ 3i0fH`+ֱ d)I R.\|[N?N\@! 8<4J 0@҂#H&C#9ht` 0@ >n !VpO@M`He`'R٧!r=A 0@D5)*w} {9Cyd 0@Ph !J30[9 MsG;A 0@oz")(<(U7z:G=>ey@o vֱ QF}A!iCe [.Fc 0@]AA&GV8DrZSaLDձ 0 {B.)}*nz:?sFoLP` 0@>:BA-MG@Kz>K֡0@Z\ "`/ 3ތ!@i]vE7s"ؐK+ 0@CnH/C.$AtV 0A6`Q36vFn<$@;| "ֱ 01Ҵ"*@'wNbiĴm @@oZ`EvЀ?iA^l(ֱ Ai 0pF >hj,0+可61 0@O8:DZ^0YzyR 0@ҎP E 1n4 # oeY@ɶHA @_81tU0n:7| `U: 0@Pn<& Nw';hjZ @iw0m*J`QG<1sw 0@AA B>IG%7S- g-(X1 0@A&H@Lq"v x5lKաֱ 00\"}A{{JlVoXƃ̖1 0@vRx@DRŭXaa<ձ 0 0{@ MHgcpL_,lA 0@oz,NA?Tz:W> *xyO 0@@(r7A>Q^g:<(N"5ew1ֱ 0ip00U߄7 9@:MF0@` E:,fD<0Ck* ; @@_3$xĩ=U41P 0@nG w|)pX *&l~\ 0@i_]br7B`Won1 1!Tx))|1ױ 00ӼD/$|H`! 0 `ʔ{ !0@gP$TT5fG;lj+K6ױ @@iByH-1<qΏ`pց 000 $**y) u; kԱ 0ATMUFQUެ M_&69 @_"h#FHn3 -.`ԡ@i"R 85Qnxlkց @_ J&"/0g'@#- (1 0@O.!($pGM \·Rr ֱ 00^޲,!,[*leՁ 00i JAp.?axxZ ֱ 0iO' :hv,7_>r,1 @]]\ J4D@Yڸ + lױ 0@i-DnWX%a7e . 0@i'(~M|B"&(d-~ͧ[ ֱ 0ݺ3UE$W56\'`1 :I) !$$L9(- @Ai;Ip`U\&A @ 0]9%#LMaUCG1f= 0@P @Hwt豥@73w$ A(- q(̴#Ig(a._ 4a̜:ձ 00 TB|+Prt/Y]FQH1 0@O;uoA&sp n;[l 0@i/Mx8Ǯ|q.vL!"o!00Qi/Y*{a>t ֱ 00~PukYH;1A!+ƿQ[@ 00i&B0#hF9 ~5t61 0@;w&T " XS8 0@i&x7U@¯C? Ա01 qD]xع篷W΁2!X, 0_%86# Ov:A 0@$a;mFlq~( O X,R 0@@At䙲0چG=ㆣPֱ ӌ}ADcli1o'$( Pց 00{B;p 6:ֿabzD ֡ @Ac10.lx$J-7 4.Pn 0@NЏ-(!$S)Tu*} 0@im 4r;lx8GA1 0@OwtB-ܽ CT-t^\.6!1y34m>vױ 0 0@PBɓ % 0j.ء0@i&zǿ$&0)Sn 0@Ҿ Jn !PsL- `~^O@@oح 㑌;TG( ֱ@_)_*:ГpA 0@oK蝂ƒR,ӿ?ڙl %hՁ 00>ѡ`rA MRy= Sy1a 0@.PP!$`+fPR&ֱ 0iw"ҹСUz%M_M1 0@Or7\B#1DmifJ 0@n ؏MC"g:PWrݍAG_Iׁ 00{a  *2Nw~R^jE\ֱ 00>*}A$pYpixTwձ 00Ё. s$ک"P21p XI1 @}A]4[Hhh^!M|ܨH  0@r7A =g;! c@A 0@oz*rg}Ъu >V98f0\+=VO:Ա 00P! {ʘ% ej/`,2zN 0@.Ѡ&w JAo:,`r@¢[ 0@i R &vCST5W 01Q DЕc:8CXױ 00ӜЂP읁 DW6d "g}Ì Ai_`B"Lkz= G3B>jS @iG FMhn |Elޢ\ ,A 0@Dw Jr2{R^.ձ 00龀`)^%C"K9H,ayֱ 01," P|Éu\+7D[Tz 0@N }UM$<1l7vcq> @igZ&( Taz{N ؔr6R,ց 00i$PFpYNN(CxGV2R:) 0@Ҏ -}MH"0  83 ֱ 0EA- f8üK0P @^I@o>gYֱ 00Ӽ$ ( 9<p'0pJ 0@P@k*Teٌ+{o @ig01Z *_`!IE&c&_- @_ |Mx"7D]mx3y 0@>@i&A$U@^,c^1,k\''ֱ 00;#¾ YDNw6{*Ɯ`@HsԱ dY9r~}@dI"O8Aeo!@@ α[*  S`]iJ @Ai{8 F?`m`5||Uձ 0i_EP:J#\0g0:§m9tֱ 00\[DQ"`*`sCOCBj6$A 0@4* SPmSv`~c q2+[Kر 00Ƅ)Y? .0udֱ 00>бR /ئ/g<cnA00oz% A?v8o"9^7udTױ 00d_%RAއ EN5]ha @ȿ &x>0n36PUPq[ @@oD2S&XP,!J8?h_<00i;C_r& U vWq!ׁ 00}t&TPUz;; t^84ة 0@| !r:%?MbH>rԱ 0in1 dx#!1@r<"+ ա0@8<5D{@\Qx6 `ց 0 wE `y`EU|Ɯ3vtx\ 0@iL+(6;@{}ş)Nhֱ 00Ӭ:*A`ΩRek5pK 01NPԞ S"7= ~AyGg Aik($:S}6u9=8LspYKdJ-xՁ 00{bV:\{7 +h` ձ 00ind !X<s b4j ֱ 00]Y* C`3S+b'| 0@#R HHkp KQZX 0@i( H&&#QN^iO|Q;&pQ 01ҝS \"H01:ݳ'WP؁ 00Ӿ!"t;*Vng<9Vױ @AO,@1҃;&/uO+l1 1tM00Ц+@1 00O.mEӈU[2-DjÙlwֱ @@m/-p7A Cs7 zl$Pd5ֱ 0i/pc4/&0B4{x 0@i(Tw<"Toȡ*x`kH?X[ 0 @ҝ ~D7x"PPhK` ֱ @@iAĻ 1>3<#; 0t/iA& m32 }zh@@oZ  Ȑw95^~/}6)v1 0@Owvuiջ}q, PŖq ԁ @@_BM447vh'h'Vx7,Wֱ 00iƞP" 2*ֿ@ _lՋ00ihdpT~)@Wq A@!q$ 0HRKs0AIcM? 0 t;C M!*$d2_ 0@-۟!Zh g\>;Fy8һlw}ױ 0iPP$ٻق-ًoX8&'&OO?*1 0ohٲ&$vN@g\[ 00nAMU1xw!52 000K,`$}΁*p_M 0t(h0X83 }%^YPH . 0@NO)*r7A!$qNwB6DzrDqN00Nd|Pt&Ϫ}YFԄԁ 00ia? JR_241.f;.* 0@]A B>! ;E-Fb#ک @AkpAV:}`d ] 0@AF `@:3G9  0@i'}MD Vrd(w 01N/*jO>'xHoBN! $i 2!ֱ @_[XI0,p+uN9[ 0@:AQ&Uտזq`S @ 0 t;CAHC&V$-X,#E @ձ 0@)mRFDU#OȓfPēH @ig0Ѵ1w ^ʽ-;gzT_10@O;wAs7@UL qjdYk @EAozKp+1S"F;@ 0@ J[ y#_@KT( 0i@H&裔F<NX?: R/5#`] @@oZ?L+ O+ձ01Ҭ@iWt@ZxGs(sܖֱ 00"a_D,Uip 2TxI 1o9*1ENj a,%M 00Ҽ:=A@ ýpK6}&VBձ DU/%ܑgv, p`!0A %x&GDO6*_8OY ,29ׁ @_$>C5þUy 0 dB?M `w"0e)I{;Q8ֱ @@i;1vNf@z@=ց 00]!ҙ\PDUgvb nlnx\ԁ 00iD7 JFc yL>㤁֧Em@S 0@iWC":gL^a\1 0@;tvR^m9hp}^[-ر 0 @E}Bb 7P/x~0a @iwA"%.Y dg\}lױ @@mn!7Rj<0o3Y 0@]A(X BIt~x1:<r`%)L5.֡ @AiW$L'Ȇ`]nh.$&p.? ձ 0EA!" ,8nSS=_H 0@麃H&<Р׸8,fpX= ӎ-pvkGU03PBExpb։ 0@i(>n !9h0@>O 1 0o;Ih}Sư"#HU 0@n >r7Aw= `ƒ1.R7 ֱ 00Ε 2>X:i.ռ8!00OOV1H|*v(D, ^tF p 0@iG%r7A($ޖ 4 6h 3A 1o Etr{I<$}3NrmaA 0@o|NACҔt\XͳWh+o-=Eֱ 00}c/`FR\ױ 00i]Bd!@N`0B >~ @iG wi(̙95Aױ 00^P@&rYaǧ.( A @_~U. ,wp~::(ر 0 sF!/`@ @;Ԃ6: pVaM-ױ @@BĻ.E>c5FxF6] 0@.P_! &gdw>7cxC)։ 0@.Q? DD?P]9iB$ձ 00NG*H @BT@$9PϿEk;h*- A 0@4&Fp!}E_`bFL 0@>)  Ft~sJOZױ ҶiE?U?[ *&( @sz+^9 0@iWw@@KN`y.( X o ر01i6HH| `Momñ\޲=u|&A @_"q``Vq@5fXLr6ձ 0 {AB(ыqG}@U1@1 0@;uu+{A $g;*$%ÑvF 0@ЏM!*JDƕ̠waƥIFױ 00ӼС 2D0ɩdg=GОW| 0@ihŻ!aj'.}pA @igwyZv:9zSqUN]zE(UZՊ ס0@iL]; "N@JYH,fՁ 00i_ Q0<O< ؠ.#ب1 0@O;8u+:!D|l8d[57A Yֱ 0 B*E/@*Xg:KYlJ3@]ձ 00. $"@m;0Up9E 0 d;Ai>% wUIz;@<3p)F3vձ 00>k#% F>2@Aی!ׁ 0w*5 `3ruֱ @@oEn&T;>iq@!γ0G`ױ 00}* "(D@Sޛ,3[5`. 01QJDTbIyOdPY5-tց 00{bUX8_9KuHkL 0_ވvK.@~~a8`-%5 @Ai{@U<)@p ֱ 00ݻ4) UwXj@Dpj-G 00>A gSw_|XJر 00^RDX$SP @{R9LՁ 00 C ZԼ|z"1 lRH 2󂭎u6La  0@ҎPC-M<\5uxaOWVl} 01P䗋`=h~m],0Fsձ 00|TA+ D*g:lU,(3u$ֱ 00й YKCi7Wձ 0Al@HtWK(Q* k1 0@O;:t{A0d0`!7I^&Q9' v!J=Iy "=YMveK @AҥP`u_ !007DV+U~` ^@>{(,p1 0o ,UlTs#C V@eֱ @@i/ Er:@3 *m< vTܭL1L %A?{ױ @_* >ŋgr;7(x:7.iv @i7a0D`U ϡL=g?/'L.mՁ 0i`Kn8!$\[@3_ 01iFx!=A'%sOd`9gpO) 0@PQ&#Do:p:1@- i@ց 00Ӿ \: t T71J 0@n in` `Lz/^AqԱ 00iN脠ž3dI"5bi1 0@Ou"(AH0Nw'oVFֱ @@i%n K+$f9gر @@io2!Eaz(HwO @ieH$%ix@vp.R7) lk1 0@;w .x UduCHmLlط 0i@{Ē D>1<|e, 0@:`E `1`@nm3'Ź00_&*F eVfr 0@WA&  ƙ\DIJ@@[ 0 @} C~tj6QC ձ @@,|D EH":8zZY2_) @AiZGgŪDHPpXlց @h0 &xA#xUvnPΛ iC7  0@݂6x7p:`J4~7rݳ 0AyXTp‚= 7+0DR 0@A x7A|$`g:+1|æ2M[. 0@iWABf `6vpEՁ @1L R* dollujp @1iwT#` &.@8cMsױ 00ҡ*SFD".KŻ{3CFԡ @@ix!NUִU: @D? 0@~w!Nu) `i Pd\1 0@-L0hQnu 9 @@oZw_&4U`n,aq# xtց 00A\PEUpAt^޴y޹ 00i*{|_^='`[* @A{؂\@f*>`CܢP8ƃG @@3$ &A/gʌ@AOZCcJpYN8BoI/_&0 0}tV|x7A"ItxfrF,1Cs1 0@ҢM@0% ~XWA 0@o  w &_NXM;<1}09/ձ0@i v8<"4P$8A`;fH 0@Gw!LJ 1 0*8Z{@cu"5|j0'Y tA 0@oz&0;%TmWx5L xֱ YXˈ_$*0qxOu @_4MEJ u 4ر 1]FDH&~J u5ر 1]FDH&J u 5ر 1]FDH&J u4ر 1]FDH&>K u 4ر 1JDH&~K uر 1JDH&K u ر 1NDH&K uر 1NI&>H u ر 1RI&~H uر 1RI&H u ر 1]VI&H uر 1]VI&>I u ر 1ZI&~I u ر 1EdXgر 1@I&I u ر 1m]@I&>J u ر 1@I&~J uر 1m\AI&J u 0owA n_uA 0οi0AHH`U}\  vBI&%:2A 0οiTh콪`{ A 0οiTh콪`s 1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~XgA 0οiTh콪`y vBI&%: vBI&%$u 0o!Dd[H u5ر 1-AI&uر 1AI&uر 1-@I&uر 1m]@I&`C ر 1@I&`; ر 1Ed).<ر 1ZI&`+ ر 1]VI&$:Gر 1]VI&%:7ر 1RI&$:'ر 1RI&%:ر 1NI&$:ر 1NDH&%:ر 1JDH&$:ر 1JDH&%:ر 1]FDH&H u5ر 1]FDH&I uo5ر 1]FDH&J uO5ر 1]FDH&K u/5ر 1BDH&H u5ر 1BDH&I u4ر 1BDH&J u4ر 1BDH&K u4 0oA nu 0oA n3u 0oA nSu 0oA nsu 0oBDd[Dr]3x1 1޿iDCb&.1 1޿iDCb*.<1 1޿iDCb..10޿iL(*&$:10޿iL(*f$:10޿iL(*$:10޿iL(*$:10޿iL(*&%:10޿iL(*f%:w10޿iL(*%:g10޿iL(*%:W114*z0$ ~114*z0$ ~:114*z0$ ~Z114*z0$ ~z114*z0$ ~1 ð?顨r玮d]=1 ð?顨r玶d]=1 ð?顨r玾d]L=1ðͿiTOw.:G1ðͿiTOwn:71ðͿiTOw:'1ðͿiTOw:1ðͿiTOw.:104*OwgJ su 104*OwghK se 104*OwgK sU 1ðͿiTOw>:C1ðͿiTOw~:31ðͿiTOw:#1ðͿiTOw:1ðͿiTOw>:1 ð?顨r玭d]=1 ð?顨r玵d]=1 ð?顨r玽d]T=114*z0$ ~>H :114*z0$ ~~H :114*z0$ ~H :114*z0$ ~H :114*z0$ ~>I :10޿iL(*~I u10޿iL(*I u10޿iL(*I u10޿iL(*>J u10޿iL(*~J uc10޿iL(*J uC10޿iL(*J u#10޿iL(*>K u1 1޿iDCXg01 1޿iDCXg01 1޿iDCXg0 0oBDd[u` 0oA n?$: 0oA n_$: 0oA n$: 0oA n$:ر 1BDH&%.5ر 1BDH&&. 5ر 1BDH&'.4ر 1BDH&(. 4ر 1]FDH&).5ر 1]FDH&*. 5ر 1]FDH&+.4ر 1]FDH&,. 4ر 1JDH&-.ر 1JDH&.. ر 1NDH&/.ر 1NI& . ر 1RI&!.ر 1RI&". ر 1]VI&#.ر 1]VI&$. ر 1ZI&%. ر 1Edo`ر 1@I&'. ر 1m]@I&(. ر 1@I&).ر 1m\AI&*. 0owA n%:A 0οi0AHH`UYr]3 vBI&%^ 2A 0οiTh*K q{ A 0οiTh*K qs 1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~/`1ֿiTp $ ~?`1ֿiTp $ ~O`1ֿiTp $ ~_`1ֿiTp $ ~o`1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~`A 0οiTh*K qy vBI&%^  vBI&%: 0o!Dd[#.5ر 1-AI&`$:ر 1AI&`$:ر 1-@I&`$:ر 1m]@I&`J uC ر 1@I&`J u; ر 1Ed Xg<ر 1ZI&`J u+ ر 1]VI&`\ Gر 1]VI&`\ 7ر 1RI&`\ 'ر 1RI&`\ ر 1NI&`\ ر 1NDH&`\ ر 1JDH&`\ ر 1JDH&`\ ر 1]FDH&`".5ر 1]FDH&`&.o5ر 1]FDH&`*.O5ر 1]FDH&`../5ر 1BDH&`".5ر 1BDH&`&.4ر 1BDH&`*.4ر 1BDH&`..4 0oA nL$: 0oA n$: 0oA nL%: 0oA n%: 0oBDd[ux1 1޿iDC櫂Xg1 1޿iDC櫂Xg<1 1޿iDC櫂Xg10޿iL(*\ 10޿iL(*\ 10޿iL(*\ 10޿iL(*\ 10޿iL(*\ 10޿iL(*\ w10޿iL(*\ g10޿iL(*\ W114*z0$ ~hH :114*z0$ ~H :114*z0$ ~hI :114*z0$ ~I :114*z0$ ~hJ :1 ð?顨ruPg=1 ð?顨rڒuPg=1 ð?顨ruPgL=1ðͿiTOw~ G1ðͿiTOw~ 71ðͿiTOw~ '1ðͿiTOw~ 1ðͿiTOw~ 104*Owg+.u 104*Owg-.e 104*Owg/.U 1ðͿiTOw~ C1ðͿiTOw~ 31ðͿiTOw~ #1ðͿiTOw~ 1ðͿiTOw~ 1 ð?顨ruPg=1 ð?顨r֒uPg=1 ð?顨ruPgT=114*z0$ ~ . 114*z0$ ~!. 114*z0$ ~". 114*z0$ ~#. 114*z0$ ~$. 10޿iL(*%.10޿iL(*&.10޿iL(*'.10޿iL(*(.10޿iL(*).c10޿iL(**.C10޿iL(*+.#10޿iL(*,.1 1޿iDC櫂ߒ`01 1޿iDC櫂`01 1޿iDC櫂`0 0oBDd[$:` 0oA n\  0oA n|\  0oA n\  0oA n|\ ر 1BDH&Xg5ر 1BDH&Xg 5ر 1BDH&Xg4ر 1BDH&Xg 4ر 1]FDH&Xg5ر 1]FDH&Xg 5ر 1]FDH&Xg4ر 1]FDH&Xg 4ر 1JDH&Xgر 1JDH&Xg ر 1NDH&Xgر 1NI&Xg ر 1RI&Xgر 1RI&Xg ر 1]VI&Xgر 1]VI&Xg ر 1ZI&Xg ر 1Ed I uر 1@I&Xg ر 1m]@I&Xg ر 1@I&Xgر 1m\AI&Xg 0owA n\ A 0οi0AHH`Ugu vBI&%[{]32A 0οiTh*..{ A 0οiTh*/.s 1ֿiTp $ ~>h u1ֿiTp $ ~~h u1ֿiTp $ ~h u1ֿiTp $ ~h u1ֿiTp $ ~>i u1ֿiTp $ ~~i u1ֿiTp $ ~i u1ֿiTp $ ~i u1ֿiTp $ ~>j u1ֿiTp $ ~~j u1ֿiTp $ ~j u1ֿiTp $ ~j u1ֿiTp $ ~>k u1ֿiTp $ ~~k uA 0οiTh*..y vBI&%@{]3 vBI&%@^  0o!Dd[Xg5ر 1-AI&\ ر 1AI&\ ر 1-@I&\ ر 1m]@I&).C ر 1@I&).; ر 1Ed `<ر 1ZI&).+ ر 1]VI&Ir]3Gر 1]VI&Yr]37ر 1RI&Ir]3'ر 1RI&Yr]3ر 1NI&Ir]3ر 1NDH&Yr]3ر 1JDH&Ir]3ر 1JDH&Yr]3ر 1]FDH&Xg5ر 1]FDH&Xgo5ر 1]FDH&XgO5ر 1]FDH&Xg/5ر 1BDH&Xg5ر 1BDH&Xg4ر 1BDH&Xg4ر 1BDH&Xg4 0oA n0\  0oA n0\  0oA n0\  0oA n0\  0oBDd[L$:x1 1޿iDCf`1 1޿iDC`<1 1޿iDC`10޿iL(*`Br]310޿iL(*`Fr]310޿iL(*`Jr]310޿iL(*`Nr]310޿iL(*`Rr]310޿iL(*`Vr]3w10޿iL(*`Zr]3g10޿iL(*`^r]3W114*z0$ ~!. 114*z0$ ~#. 114*z0$ ~%. 114*z0$ ~'. 114*z0$ ~). 1 ð?顨rJ@=1 ð?顨rhK@=1 ð?顨rK@L=1ðͿiTOwB]3G1ðͿiTOwF]371ðͿiTOwJ]3'1ðͿiTOwN]31ðͿiTOwR]3104*Owg8gu 104*Owg8ge 104*Owg8gU 1ðͿiTOwC]3C1ðͿiTOwG]331ðͿiTOwK]3#1ðͿiTOwO]31ðͿiTOwS]31 ð?顨rJ@=1 ð?顨rXK@=1 ð?顨rK@T=114*z0$ ~3114*z0$ ~3114*z0$ ~3114*z0$ ~3114*z0$ ~310޿iL(*Xg10޿iL(*Xg10޿iL(*Xg10޿iL(*Xg10޿iL(*Xgc10޿iL(*XgC10޿iL(*Xg#10޿iL(*Xg1 1޿iDC~K u01 1޿iDCK u01 1޿iDCK u0 0oBDd[|\ ` 0oA nCr]3 0oA nEr]3 0oA nGr]3 0oA nIr]3ر 1BDH&_`5ر 1BDH&o` 5ر 1BDH&`4ر 1BDH&` 4ر 1]FDH&`5ر 1]FDH&` 5ر 1]FDH&`4ر 1]FDH&ϒ` 4ر 1JDH&ߒ`ر 1JDH&` ر 1NDH&`ر 1NI&` ر 1RI&`ر 1RI&/` ر 1]VI&?`ر 1]VI&O` ر 1ZI&_` ر 1Ed &.ر 1@I&` ر 1m]@I&` ر 1@I&`ر 1m\AI&` 0owA nWr]3A 0οi0AHH`U%: vBI&%ou2A 0οiTh*dg{ A 0οiTh*dgs 1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.A 0οiTh*dgy vBI&%u vBI&%I{]3 0o!Dd[0`5ر 1-AI&Fr]3ر 1AI&Fr]3ر 1-@I&Fr]3ر 1m]@I&XgC ر 1@I&Xg; ر 1Ed `J u<ر 1ZI&Xg+ ر 1]VI&&uGر 1]VI&fu7ر 1RI&&u'ر 1RI&fuر 1NI&&uر 1NDH&fuر 1JDH&&uر 1JDH&fuر 1]FDH&&`5ر 1]FDH&f`o5ر 1]FDH&`O5ر 1]FDH&`/5ر 1BDH&&`5ر 1BDH&f`4ر 1BDH&`4ر 1BDH&`4 0oA nDr]3 0oA nLr]3 0oA nTr]3 0oA n\r]3 0oBDd[0\ x1 1޿iDCI u1 1޿iDCJ u<1 1޿iDCK u10޿iL(* u10޿iL(*u10޿iL(*)u10޿iL(*9u10޿iL(*Iu10޿iL(*Yuw10޿iL(*iug10޿iL(*yuW114*z0$ ~3114*z0$ ~3114*z0$ ~3114*z0$ ~3114*z0$ ~31 ð?顨r+Yu=1 ð?顨r-Yu=1 ð?顨r/YuL=1ðͿiTOw wG1ðͿiTOww71ðͿiTOw+w'1ðͿiTOw;w1ðͿiTOwKw104*Owgu 104*Owgڒe 104*OwgU 1ðͿiTOwwC1ðͿiTOww31ðͿiTOw/w#1ðͿiTOw?w1ðͿiTOwOw1 ð?顨r`+Yu=1 ð?顨r`-Yu=1 ð?顨r`/YuT=114*z0$ ~114*z0$ ~114*z0$ ~/114*z0$ ~?114*z0$ ~O10޿iL(*_`10޿iL(*o`10޿iL(*`10޿iL(*`10޿iL(*`c10޿iL(*`C10޿iL(*`#10޿iL(*ϒ`1 1޿iDC-.01 1޿iDC..01 1޿iDC/.0 0oBDd[Ar]3` 0oA nu 0oA nu 0oA nu 0oA n'uر 1BDH&~I u5ر 1BDH&I u 5ر 1BDH&I u4ر 1BDH&>J u 4ر 1]FDH&~J u5ر 1]FDH&J u 5ر 1]FDH&J u4ر 1]FDH&>K u 4ر 1JDH&~K uر 1JDH&K u ر 1NDH&K uر 1NI&>H u ر 1RI&~H uر 1RI&H u ر 1]VI&H uر 1]VI&>I u ر 1ZI&~I u ر 1Ed Xgر 1@I&I u ر 1m]@I&>J u ر 1@I&~J uر 1m\AI&J u 0owA n_uA 0οi0AHH`U|\  vBI&%:2A 0οiTh*`{ A 0οiTh*`s 1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~XgA 0οiTh*`y vBI&%: vBI&%$u 0o!Dd[H u5ر 1-AI&uر 1AI&uر 1-@I&uر 1m]@I&`C ر 1@I&`; ر 1Ed ).<ر 1ZI&`+ ر 1]VI&$:Gر 1]VI&%:7ر 1RI&$:'ر 1RI&%:ر 1NI&$:ر 1NDH&%:ر 1JDH&$:ر 1JDH&%:ر 1]FDH&H u5ر 1]FDH&I uo5ر 1]FDH&J uO5ر 1]FDH&K u/5ر 1BDH&H u5ر 1BDH&I u4ر 1BDH&J u4ر 1BDH&K u4 0oA nu 0oA n3u 0oA nSu 0oA nsu 0oBDd[Dr]3x1 1޿iDC`&.1 1޿iDC`*.<1 1޿iDC`..10޿iL(*&$:10޿iL(*f$:10޿iL(*$:10޿iL(*$:10޿iL(*&%:10޿iL(*f%:w10޿iL(*%:g10޿iL(*%:W114*z0$ ~114*z0$ ~:114*z0$ ~Z114*z0$ ~z114*z0$ ~1 ð?顨rd]=1 ð?顨rd]=1 ð?顨rd]L=1ðͿiTOw.:G1ðͿiTOwn:71ðͿiTOw:'1ðͿiTOw:1ðͿiTOw.:104*OwgJ su 104*OwghK se 104*OwgK sU 1ðͿiTOw>:C1ðͿiTOw~:31ðͿiTOw:#1ðͿiTOw:1ðͿiTOw>:1 ð?顨rd]=1 ð?顨rd]=1 ð?顨rd]T=114*z0$ ~>H :114*z0$ ~~H :114*z0$ ~H :114*z0$ ~H :114*z0$ ~>I :10޿iL(*~I u10޿iL(*I u10޿iL(*I u10޿iL(*>J u10޿iL(*~J uc10޿iL(*J uC10޿iL(*J u#10޿iL(*>K u1 1޿iDCXg01 1޿iDCXg01 1޿iDCXg0 0oBDd[u` 0oA n?$: 0oA n_$: 0oA n$: 0oA n$:ر 1BDH&%.5ر 1BDH&&. 5ر 1BDH&'.4ر 1BDH&(. 4ر 1]FDH&).5ر 1]FDH&*. 5ر 1]FDH&+.4ر 1]FDH&,. 4ر 1JDH&-.ر 1JDH&.. ر 1NDH&/.ر 1NI& . ر 1RI&!.ر 1RI&". ر 1]VI&#.ر 1]VI&$. ر 1ZI&%. ر 1Ed o`ر 1@I&'. ر 1m]@I&(. ر 1@I&).ر 1m\AI&*. 0owA n%:A 0οi0AHH`UYr]3 vBI&%^ 2A 0οiTh*K q{ A 0οiTh*K qs 1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~/`1ֿiTp $ ~?`1ֿiTp $ ~O`1ֿiTp $ ~_`1ֿiTp $ ~o`1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~`A 0οiTh*K qy vBI&%^  vBI&%: 0o!Dd[#.5ر 1-AI&`$:ر 1AI&`$:ر 1-@I&`$:ر 1m]@I&`J uC ر 1@I&`J u; ر 1Ed Xg<ر 1ZI&`J u+ ر 1]VI&`\ Gر 1]VI&`\ 7ر 1RI&`\ 'ر 1RI&`\ ر 1NI&`\ ر 1NDH&`\ ر 1JDH&`\ ر 1JDH&`\ ر 1]FDH&`".5ر 1]FDH&`&.o5ر 1]FDH&`*.O5ر 1]FDH&`../5ر 1BDH&`".5ر 1BDH&`&.4ر 1BDH&`*.4ر 1BDH&`..4 0oA nL$: 0oA n$: 0oA nL%: 0oA n%: 0oBDd[ux1 1޿iDCXg1 1޿iDCXg<1 1޿iDCXg10޿iL(*\ 10޿iL(*\ 10޿iL(*\ 10޿iL(*\ 10޿iL(*\ 10޿iL(*\ w10޿iL(*\ g10޿iL(*\ W114*z0$ ~hH :114*z0$ ~H :114*z0$ ~hI :114*z0$ ~I :114*z0$ ~hJ :1 ð?顨ruPg=1 ð?顨rڒuPg=1 ð?顨ruPgL=1ðͿiTOw~ G1ðͿiTOw~ 71ðͿiTOw~ '1ðͿiTOw~ 1ðͿiTOw~ 104*Owg+.u 104*Owg-.e 104*Owg/.U 1ðͿiTOw~ C1ðͿiTOw~ 31ðͿiTOw~ #1ðͿiTOw~ 1ðͿiTOw~ 1 ð?顨ruPg=1 ð?顨r֒uPg=1 ð?顨ruPgT=114*z0$ ~ . 114*z0$ ~!. 114*z0$ ~". 114*z0$ ~#. 114*z0$ ~$. 10޿iL(*%.10޿iL(*&.10޿iL(*'.10޿iL(*(.10޿iL(*).c10޿iL(**.C10޿iL(*+.#10޿iL(*,.1 1޿iDCߒ`01 1޿iDC`01 1޿iDC`0 0oBDd[$:` 0oA n\  0oA n|\  0oA n\  0oA n|\ ر 1BDH&Xg5ر 1BDH&Xg 5ر 1BDH&Xg4ر 1BDH&Xg 4ر 1]FDH&Xg5ر 1]FDH&Xg 5ر 1]FDH&Xg4ر 1]FDH&Xg 4ر 1JDH&Xgر 1JDH&Xg ر 1NDH&Xgر 1NI&Xg ر 1RI&Xgر 1RI&Xg ر 1]VI&Xgر 1]VI&Xg ر 1ZI&Xg ر 1Ed I uر 1@I&Xg ر 1m]@I&Xg ر 1@I&Xgر 1m\AI&Xg 0owA n\ A 0οi0AHH`Ugu vBI&%[{]32A 0οiTh*..{ A 0οiTh*/.s 1ֿiTp $ ~>h u1ֿiTp $ ~~h u1ֿiTp $ ~h u1ֿiTp $ ~h u1ֿiTp $ ~>i u1ֿiTp $ ~~i u1ֿiTp $ ~i u1ֿiTp $ ~i u1ֿiTp $ ~>j u1ֿiTp $ ~~j u1ֿiTp $ ~j u1ֿiTp $ ~j u1ֿiTp $ ~>k u1ֿiTp $ ~~k uA 0οiTh*..y vBI&%@{]3 vBI&%@^  0o!Dd[Xg5ر 1-AI&\ ر 1AI&\ ر 1-@I&\ ر 1m]@I&).C ر 1@I&).; ر 1Ed `<ر 1ZI&).+ ر 1]VI&Ir]3Gر 1]VI&Yr]37ر 1RI&Ir]3'ر 1RI&Yr]3ر 1NI&Ir]3ر 1NDH&Yr]3ر 1JDH&Ir]3ر 1JDH&Yr]3ر 1]FDH&Xg5ر 1]FDH&Xgo5ر 1]FDH&XgO5ر 1]FDH&Xg/5ر 1BDH&Xg5ر 1BDH&Xg4ر 1BDH&Xg4ر 1BDH&Xg4 0oA n0\  0oA n0\  0oA n0\  0oA n0\  0oBDd[L$:x1 1޿iDCf`1 1޿iDC`<1 1޿iDC`10޿iL(*`Br]310޿iL(*`Fr]310޿iL(*`Jr]310޿iL(*`Nr]310޿iL(*`Rr]310޿iL(*`Vr]3w10޿iL(*`Zr]3g10޿iL(*`^r]3W114*z0$ ~!. 114*z0$ ~#. 114*z0$ ~%. 114*z0$ ~'. 114*z0$ ~). 1 ð?顨rJ@=1 ð?顨rhK@=1 ð?顨rK@L=1ðͿiTOwB]3G1ðͿiTOwF]371ðͿiTOwJ]3'1ðͿiTOwN]31ðͿiTOwR]3104*Owg8gu 104*Owg8ge 104*Owg8gU 1ðͿiTOwC]3C1ðͿiTOwG]331ðͿiTOwK]3#1ðͿiTOwO]31ðͿiTOwS]31 ð?顨rJ@=1 ð?顨rXK@=1 ð?顨rK@T=114*z0$ ~3114*z0$ ~3114*z0$ ~3114*z0$ ~3114*z0$ ~310޿iL(*Xg10޿iL(*Xg10޿iL(*Xg10޿iL(*Xg10޿iL(*Xgc10޿iL(*XgC10޿iL(*Xg#10޿iL(*Xg1 1޿iDC~K u01 1޿iDCK u01 1޿iDCK u0 0oBDd[|\ ` 0oA nCr]3 0oA nEr]3 0oA nGr]3 0oA nIr]3ر 1BDH&_`5ر 1BDH&o` 5ر 1BDH&`4ر 1BDH&` 4ر 1]FDH&`5ر 1]FDH&` 5ر 1]FDH&`4ر 1]FDH&ϒ` 4ر 1JDH&ߒ`ر 1JDH&` ر 1NDH&`ر 1NI&` ر 1RI&`ر 1RI&/` ر 1]VI&?`ر 1]VI&O` ر 1ZI&_` ر 1Ed &.ر 1@I&` ر 1m]@I&` ر 1@I&`ر 1m\AI&` 0owA nWr]3A 0οi0AHH`U%: vBI&%ou2A 0οiTh*dg{ A 0οiTh*dgs 1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.A 0οiTh*dgy vBI&%u vBI&%I{]3 0o!Dd[0`5ر 1-AI&Fr]3ر 1AI&Fr]3ر 1-@I&Fr]3ر 1m]@I&XgC ر 1@I&Xg; ر 1Ed `J u<ر 1ZI&Xg+ ر 1]VI&&uGر 1]VI&fu7ر 1RI&&u'ر 1RI&fuر 1NI&&uر 1NDH&fuر 1JDH&&uر 1JDH&fuر 1]FDH&&`5ر 1]FDH&f`o5ر 1]FDH&`O5ر 1]FDH&`/5ر 1BDH&&`5ر 1BDH&f`4ر 1BDH&`4ر 1BDH&`4 0oA nDr]3 0oA nLr]3 0oA nTr]3 0oA n\r]3 0oBDd[0\ x1 1޿iDCI u1 1޿iDCJ u<1 1޿iDCK u10޿iL(* u10޿iL(*u10޿iL(*)u10޿iL(*9u10޿iL(*Iu10޿iL(*Yuw10޿iL(*iug10޿iL(*yuW114*z0$ ~3114*z0$ ~3114*z0$ ~3114*z0$ ~3114*z0$ ~31 ð?顨r+Yu=1 ð?顨r-Yu=1 ð?顨r/YuL=1ðͿiTOw wG1ðͿiTOww71ðͿiTOw+w'1ðͿiTOw;w1ðͿiTOwKw104*Owgu 104*Owgڒe 104*OwgU 1ðͿiTOwwC1ðͿiTOww31ðͿiTOw/w#1ðͿiTOw?w1ðͿiTOwOw1 ð?顨r`+Yu=1 ð?顨r`-Yu=1 ð?顨r`/YuT=114*z0$ ~114*z0$ ~114*z0$ ~/114*z0$ ~?114*z0$ ~O10޿iL(*_`10޿iL(*o`10޿iL(*`10޿iL(*`10޿iL(*`c10޿iL(*`C10޿iL(*`#10޿iL(*ϒ`1 1޿iDC-.01 1޿iDC..01 1޿iDC/.0 0oBDd[Ar]3` 0oA nu 0oA nu 0oA nu 0oA n'uر 1BDH&~I u5ر 1BDH&I u 5ر 1BDH&I u4ر 1BDH&>J u 4ر 1]FDH&~J u5ر 1]FDH&J u 5ر 1]FDH&J u4ر 1]FDH&>K u 4ر 1JDH&~K uر 1JDH&K u ر 1NDH&K uر 1NI&>H u ر 1RI&~H uر 1RI&H u ر 1]VI&H uر 1]VI&>I u ر 1ZI&~I u ر 1Ed Xgر 1@I&I u ر 1m]@I&>J u ر 1@I&~J uر 1m\AI&J u 0owA n_uA 0οi0AHH`U|\  vBI&%:2A 0οiTh*`{ A 0οiTh*`s 1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~XgA 0οiTh*`y vBI&%: vBI&%$u 0o!Dd[H u5ر 1-AI&uر 1AI&uر 1-@I&uر 1m]@I&`C ر 1@I&`; ر 1Ed ).<ر 1ZI&`+ ر 1]VI&$:Gر 1]VI&%:7ر 1RI&$:'ر 1RI&%:ر 1NI&$:ر 1NDH&%:ر 1JDH&$:ر 1JDH&%:ر 1]FDH&H u5ر 1]FDH&I uo5ر 1]FDH&J uO5ر 1]FDH&K u/5ر 1BDH&H u5ر 1BDH&I u4ر 1BDH&J u4ر 1BDH&K u4 0oA nu 0oA n3u 0oA nSu 0oA nsu 0oBDd[Dr]3x1 1޿iDC`&.1 1޿iDC`*.<1 1޿iDC`..10޿iL(*&$:10޿iL(*f$:10޿iL(*$:10޿iL(*$:10޿iL(*&%:10޿iL(*f%:w10޿iL(*%:g10޿iL(*%:W114*z0$ ~114*z0$ ~:114*z0$ ~Z114*z0$ ~z114*z0$ ~1 ð?顨rd]=1 ð?顨rd]=1 ð?顨rd]L=1ðͿiTOw.:G1ðͿiTOwn:71ðͿiTOw:'1ðͿiTOw:1ðͿiTOw.:104*OwgJ su 104*OwghK se 104*OwgK sU 1ðͿiTOw>:C1ðͿiTOw~:31ðͿiTOw:#1ðͿiTOw:1ðͿiTOw>:1 ð?顨rd]=1 ð?顨rd]=1 ð?顨rd]T=114*z0$ ~>H :114*z0$ ~~H :114*z0$ ~H :114*z0$ ~H :114*z0$ ~>I :10޿iL(*~I u10޿iL(*I u10޿iL(*I u10޿iL(*>J u10޿iL(*~J uc10޿iL(*J uC10޿iL(*J u#10޿iL(*>K u1 1޿iDCXg01 1޿iDCXg01 1޿iDCXg0 0oBDd[u` 0oA n?$: 0oA n_$: 0oA n$: 0oA n$:ر 1BDH&%.5ر 1BDH&&. 5ر 1BDH&'.4ر 1BDH&(. 4ر 1]FDH&).5ر 1]FDH&*. 5ر 1]FDH&+.4ر 1]FDH&,. 4ر 1JDH&-.ر 1JDH&.. ر 1NDH&/.ر 1NI& . ر 1RI&!.ر 1RI&". ر 1]VI&#.ر 1]VI&$. ر 1ZI&%. ر 1Ed o`ر 1@I&'. ر 1m]@I&(. ر 1@I&).ر 1m\AI&*. 0owA n%:A 0οi0AHH`UYr]3 vBI&%^ 2A 0οiTh*K q{ A 0οiTh*K qs 1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~/`1ֿiTp $ ~?`1ֿiTp $ ~O`1ֿiTp $ ~_`1ֿiTp $ ~o`1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~`A 0οiTh*K qy vBI&%^  vBI&%: 0o!Dd[#.5ر 1-AI&`$:ر 1AI&`$:ر 1-@I&`$:ر 1m]@I&`J uC ر 1@I&`J u; ر 1Ed Xg<ر 1ZI&`J u+ ر 1]VI&`\ Gر 1]VI&`\ 7ر 1RI&`\ 'ر 1RI&`\ ر 1NI&`\ ر 1NDH&`\ ر 1JDH&`\ ر 1JDH&`\ ر 1]FDH&`".5ر 1]FDH&`&.o5ر 1]FDH&`*.O5ر 1]FDH&`../5ر 1BDH&`".5ر 1BDH&`&.4ر 1BDH&`*.4ر 1BDH&`..4 0oA nL$: 0oA n$: 0oA nL%: 0oA n%: 0oBDd[ux1 1޿iDCXg1 1޿iDCXg<1 1޿iDCXg10޿iL(*\ 10޿iL(*\ 10޿iL(*\ 10޿iL(*\ 10޿iL(*\ 10޿iL(*\ w10޿iL(*\ g10޿iL(*\ W114*z0$ ~hH :114*z0$ ~H :114*z0$ ~hI :114*z0$ ~I :114*z0$ ~hJ :1 ð?顨ruPg=1 ð?顨rڒuPg=1 ð?顨ruPgL=1ðͿiTOw~ G1ðͿiTOw~ 71ðͿiTOw~ '1ðͿiTOw~ 1ðͿiTOw~ 104*Owg+.u 104*Owg-.e 104*Owg/.U 1ðͿiTOw~ C1ðͿiTOw~ 31ðͿiTOw~ #1ðͿiTOw~ 1ðͿiTOw~ 1 ð?顨ruPg=1 ð?顨r֒uPg=1 ð?顨ruPgT=114*z0$ ~ . 114*z0$ ~!. 114*z0$ ~". 114*z0$ ~#. 114*z0$ ~$. 10޿iL(*%.10޿iL(*&.10޿iL(*'.10޿iL(*(.10޿iL(*).c10޿iL(**.C10޿iL(*+.#10޿iL(*,.1 1޿iDCߒ`01 1޿iDC`01 1޿iDC`0 0oBDd[$:` 0oA n\  0oA n|\  0oA n\  0oA n|\ ر 1BDH&Xg5ر 1BDH&Xg 5ر 1BDH&Xg4ر 1BDH&Xg 4ر 1]FDH&Xg5ر 1]FDH&Xg 5ر 1]FDH&Xg4ر 1]FDH&Xg 4ر 1JDH&Xgر 1JDH&Xg ر 1NDH&Xgر 1NI&Xg ر 1RI&Xgر 1RI&Xg ر 1]VI&Xgر 1]VI&Xg ر 1ZI&Xg ر 1Ed I uر 1@I&Xg ر 1m]@I&Xg ر 1@I&Xgر 1m\AI&Xg 0owA n\ A 0οi0AHH`Ugu vBI&%[{]32A 0οiTh*..{ A 0οiTh*/.s 1ֿiTp $ ~>h u1ֿiTp $ ~~h u1ֿiTp $ ~h u1ֿiTp $ ~h u1ֿiTp $ ~>i u1ֿiTp $ ~~i u1ֿiTp $ ~i u1ֿiTp $ ~i u1ֿiTp $ ~>j u1ֿiTp $ ~~j u1ֿiTp $ ~j u1ֿiTp $ ~j u1ֿiTp $ ~>k u1ֿiTp $ ~~k uA 0οiTh*..y vBI&%@{]3 vBI&%@^  0o!Dd[Xg5ر 1-AI&\ ر 1AI&\ ر 1-@I&\ ر 1m]@I&).C ر 1@I&).; ر 1Ed `<ر 1ZI&).+ ر 1]VI&Ir]3Gر 1]VI&Yr]37ر 1RI&Ir]3'ر 1RI&Yr]3ر 1NI&Ir]3ر 1NDH&Yr]3ر 1JDH&Ir]3ر 1JDH&Yr]3ر 1]FDH&Xg5ر 1]FDH&Xgo5ر 1]FDH&XgO5ر 1]FDH&Xg/5ر 1BDH&Xg5ر 1BDH&Xg4ر 1BDH&Xg4ر 1BDH&Xg4 0oA n0\  0oA n0\  0oA n0\  0oA n0\  0oBDd[L$:x1 1޿iDCf`1 1޿iDC`<1 1޿iDC`10޿iL(*`Br]310޿iL(*`Fr]310޿iL(*`Jr]310޿iL(*`Nr]310޿iL(*`Rr]310޿iL(*`Vr]3w10޿iL(*`Zr]3g10޿iL(*`^r]3W114*z0$ ~!. 114*z0$ ~#. 114*z0$ ~%. 114*z0$ ~'. 114*z0$ ~). 1 ð?顨rJ@=1 ð?顨rhK@=1 ð?顨rK@L=1ðͿiTOwB]3G1ðͿiTOwF]371ðͿiTOwJ]3'1ðͿiTOwN]31ðͿiTOwR]3104*Owg8gu 104*Owg8ge 104*Owg8gU 1ðͿiTOwC]3C1ðͿiTOwG]331ðͿiTOwK]3#1ðͿiTOwO]31ðͿiTOwS]31 ð?顨rJ@=1 ð?顨rXK@=1 ð?顨rK@T=114*z0$ ~3114*z0$ ~3114*z0$ ~3114*z0$ ~3114*z0$ ~310޿iL(*Xg10޿iL(*Xg10޿iL(*Xg10޿iL(*Xg10޿iL(*Xgc10޿iL(*XgC10޿iL(*Xg#10޿iL(*Xg1 1޿iDC~K u01 1޿iDCK u01 1޿iDCK u0 0oBDd[|\ ` 0oA nCr]3 0oA nEr]3 0oA nGr]3 0oA nIr]3ر 1BDH&_`5ر 1BDH&o` 5ر 1BDH&`4ر 1BDH&` 4ر 1]FDH&`5ر 1]FDH&` 5ر 1]FDH&`4ر 1]FDH&ϒ` 4ر 1JDH&ߒ`ر 1JDH&` ر 1NDH&`ر 1NI&` ر 1RI&`ر 1RI&/` ر 1]VI&?`ر 1]VI&O` ر 1ZI&_` ر 1Ed &.ر 1@I&` ر 1m]@I&` ر 1@I&`ر 1m\AI&` 0owA nWr]3A 0οi0AHH`U%: vBI&%ou2A 0οiTh*dg{ A 0οiTh*dgs 1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.1ֿiTp $ ~.A 0οiTh*dgy vBI&%u vBI&%I{]3 0o!Dd[0`5ر 1-AI&Fr]3ر 1AI&Fr]3ر 1-@I&Fr]3ر 1m]@I&XgC ر 1@I&Xg; ر 1Ed `J u<ر 1ZI&Xg+ ر 1]VI&&uGر 1]VI&fu7ر 1RI&&u'ر 1RI&fuر 1NI&&uر 1NDH&fuر 1JDH&&uر 1JDH&fuر 1]FDH&&`5ر 1]FDH&f`o5ر 1]FDH&`O5ر 1]FDH&`/5ر 1BDH&&`5ر 1BDH&f`4ر 1BDH&`4ر 1BDH&`4 0oA nDr]3 0oA nLr]3 0oA nTr]3 0oA n\r]3 0oBDd[0\ x1 1޿iDCI u1 1޿iDCJ u<1 1޿iDCK u10޿iL(* u10޿iL(*u10޿iL(*)u10޿iL(*9u10޿iL(*Iu10޿iL(*Yuw10޿iL(*iug10޿iL(*yuW114*z0$ ~3114*z0$ ~3114*z0$ ~3114*z0$ ~3114*z0$ ~31 ð?顨r+Yu=1 ð?顨r-Yu=1 ð?顨r/YuL=1ðͿiTOw wG1ðͿiTOww71ðͿiTOw+w'1ðͿiTOw;w1ðͿiTOwKw104*Owgu 104*Owgڒe 104*OwgU 1ðͿiTOwwC1ðͿiTOww31ðͿiTOw/w#1ðͿiTOw?w1ðͿiTOwOw1 ð?顨r`+Yu=1 ð?顨r`-Yu=1 ð?顨r`/YuT=114*z0$ ~114*z0$ ~114*z0$ ~/114*z0$ ~?114*z0$ ~O10޿iL(*_`10޿iL(*o`10޿iL(*`10޿iL(*`10޿iL(*`c10޿iL(*`C10޿iL(*`#10޿iL(*ϒ`1 1޿iDC-.01 1޿iDC..01 1޿iDC/.0 0oBDd[Ar]3` 0oA nu 0oA nu 0oA nu 0oA n'uر 1BDH&~I u5ر 1BDH&I u 5ر 1BDH&I u4ر 1BDH&>J u 4ر 1]FDH&~J u5ر 1]FDH&J u 5ر 1]FDH&J u4ر 1]FDH&>K u 4ر 1JDH&~K uر 1JDH&K u ر 1NDH&K uر 1NI&>H u ر 1RI&~H uر 1RI&H u ر 1]VI&H uر 1]VI&>I u ر 1ZI&~I u ر 1Ed Xgر 1@I&I u ر 1m]@I&>J u ر 1@I&~J uر 1m\AI&J u 0owA n_uA 0οi0AHH`U|\  vBI&%:2A 0οiTh*`{ A 0οiTh*`s 1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~Xg1ֿiTp $ ~XgA 0οiTh*`y vBI&%: vBI&%$u 0o!Dd[H u5ر 1-AI&uر 1AI&uر 1-@I&uر 1m]@I&`C ر 1@I&`; ر 1Ed ).<ر 1ZI&`+ ر 1]VI&$:Gر 1]VI&%:7ر 1RI&$:'ر 1RI&%:ر 1NI&$:ر 1NDH&%:ر 1JDH&$:ر 1JDH&%:ر 1]FDH&H u5ر 1]FDH&I uo5ر 1]FDH&J uO5ر 1]FDH&K u/5ر 1BDH&H u5ر 1BDH&I u4ر 1BDH&J u4ر 1BDH&K u4 0oA nu 0oA n3u 0oA nSu 0oA nsu 0oBDd[Dr]3x1 1޿iDC`&.1 1޿iDC`*.<1 1޿iDC`..10޿iL(*&$:10޿iL(*f$:10޿iL(*$:10޿iL(*$:10޿iL(*&%:10޿iL(*f%:w10޿iL(*%:g10޿iL(*%:W114*z0$ ~114*z0$ ~:114*z0$ ~Z114*z0$ ~z114*z0$ ~1 ð?顨rd]=1 ð?顨rd]=1 ð?顨rd]L=1ðͿiTOw.:G1ðͿiTOwn:71ðͿiTOw:'1ðͿiTOw:1ðͿiTOw.:104*OwgJ su 104*OwghK se 104*OwgK sU 1ðͿiTOw>:C1ðͿiTOw~:31ðͿiTOw:#1ðͿiTOw:1ðͿiTOw>:1 ð?顨rd]=1 ð?顨rd]=1 ð?顨rd]T=114*z0$ ~>H :114*z0$ ~~H :114*z0$ ~H :114*z0$ ~H :114*z0$ ~>I :10޿iL(*~I u10޿iL(*I u10޿iL(*I u10޿iL(*>J u10޿iL(*~J uc10޿iL(*J uC10޿iL(*J u#10޿iL(*>K u1 1޿iDCXg01 1޿iDCXg01 1޿iDCXg0 0oBDd[u` 0oA n?$: 0oA n_$: 0oA n$: 0oA n$:ر 1BDH&%.5ر 1BDH&&. 5ر 1BDH&'.4ر 1BDH&(. 4ر 1]FDH&).5ر 1]FDH&*. 5ر 1]FDH&+.4ر 1]FDH&,. 4ر 1JDH&-.ر 1JDH&.. ر 1NDH&/.ر 1NI& . ر 1RI&!.ر 1RI&". ر 1]VI&#.ر 1]VI&$. ر 1ZI&%. ر 1Ed o`ر 1@I&'. ر 1m]@I&(. ر 1@I&).ر 1m\AI&*. 0owA n%:A 0οi0AHH`UYr]3 vBI&%^ 2A 0οiTh*K q{ A 0οiTh*K qs 1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~/`1ֿiTp $ ~?`1ֿiTp $ ~O`1ֿiTp $ ~_`1ֿiTp $ ~o`1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~`1ֿiTp $ ~`A 0οiTh*K qy vBI&%^  vBI&%: 0o!Dd[#.5ر 1-AI&`$:ر 1AI&`$:ر 1-@I&`$:ر 1m]@I&`J uC ر 1@I&`J u; ر 1Ed Xg<ر 1ZI&`J u+ ر 1]VI&`\ Gر 1]VI&`\ 7ر 1RI&`\ 'ر 1RI&`\ ر 1NI&`\ ر 1NDH&`\ ر 1JDH&`\ ر 1JDH&`\ ر 1]FDH&`".5ر 1]FDH&`&.o5ر 1]FDH&`*.O5ر 1]FDH&`../5ر 1BDH&`".5ر 1BDH&`&.4ر 1BDH&`*.4ر 1BDH&`..4 0oA nL$: 0oA n$: 0oA nL%: 0oA n%: 0oBDd[ux1 1޿iDCXg1 1޿iDCXg<1 1޿iDCXg10޿iL(*\ 10޿iL(*\ 10޿iL(*\ 10޿iL(*\ 10޿iL(*\ 10޿iL(*\ w10޿iL(*\ g10޿iL(*\ W114*z0$ ~hH :114*z0$ ~H :114*z0$ ~hI :114*z0$ ~I :114*z0$ ~hJ :1 ð?顨ruPg=1 ð?顨rڒuPg=1 ð?顨ruPgL=1ðͿiTOw~ G1ðͿiTOw~ 71ðͿiTOw~ '1ðͿiTOw~ 1ðͿiTOw~ 104*Owg+.u 104*Owg-.e 104*Owg/.U 1ðͿiTOw~ C1ðͿiTOw~ 31ðͿiTOw~ #1ðͿiTOw~ 1ðͿiTOw~ 1 ð?顨ruPg=1 ð?顨r֒uPg=1 ð?顨ruPgT=114*z0$ ~ . 114*z0$ ~!. 114*z0$ ~". 114*z0$ ~#. 114*z0$ ~$. 10޿iL(*%.10޿iL(*&.10޿iL(*'.10޿iL(*(.10޿iL(*).c10޿iL(**.C10޿iL(*+.#10޿iL(*,.1 1޿iDCߒ`01 1޿iDC`01 1޿iDC`0 0oBDd[$:` 0oA n\  0oA n|\  0oA n\  0oA n|\ ر 1BDH&Xg5ر 1BDH&Xg 5ر 1BDH&Xg4ر 1BDH&Xg 4ر 1]FDH&Xg5ر 1]FDH&Xg 5ر 1]FDH&Xg4ر 1]FDH&Xg 4ر 1JDH&Xgر 1JDH&Xg ر 1NDH&Xgر 1NI&Xg ر 1RI&Xgر 1RI&Xg ر 1]VI&Xgر 1]VI&Xg ر 1ZI&Xg ر 1Ed I uر 1@I&Xg ر 1m]@I&Xg ر 1@I&Xgر 1m\AI&Xg 0owA n\ A 0οi0AHH`Ugu vBI&%[{]32A 0οiTh*..ƽ A 0οiTh*/.= 1ֿiTp $ ~>h u1ֿiTp $ ~~h u1ֿiTp $ ~h uo1ֿiTp $ ~h uO1ֿiTp $ ~>i u/1ֿiTp $ ~~i u1ֿiTp $ ~i u1ֿiTp $ ~i u1ֿiTp $ ~>j u1ֿiTp $ ~~j u1ֿiTp $ ~j uo1ֿiTp $ ~j uO1ֿiTp $ ~>k u/1ֿiTp $ ~~k uA 0οiTh*..Ɲ vBI&%@{]{> vBI&%@^^ 0o!Dd[Xx4ر 1-AI&\ر 1AI&\ر 1-@I&\^ر 1m]@I&).= ر 1@I&).ֽ ر 1Ed `ݳر 1ZI&).ֽ ر 1]VI&Ir]{4ر 1]VI&Yr]{3ر 1RI&Ir]{2ر 1RI&Yr]{1ر 1NI&Ir]{0ر 1NDH&Yr]{?ر 1JDH&Ir]{>ر 1JDH&Yr]{=ر 1]FDH&Xx4ر 1]FDH&Xv4ر 1]FDH&Xt4ر 1]FDH&Xr4ر 1BDH&Xp4ر 1BDH&Xn4ر 1BDH&Xl4ر 1BDH&Xj4 0oA n0\  0oA n0\  0oA n0\  0oA n0\^  0oBDd[L$1 1޿iDCf`1 1޿iDC`1 1޿iDC`10޿iL(*`Br]{<10޿iL(*`Fr]{;10޿iL(*`Jr]{:10޿iL(*`Nr]{910޿iL(*`Rr]{810޿iL(*`Vr]{710޿iL(*`Zr]{610޿iL(*`^r]{5114*z0$ ~!. 114*z0$ ~#. 114*z0$ ~%. 114*z0$ ~'.^ 114*z0$ ~). 1 ð?顨rJ@|<1 ð?顨rhK@x<1 ð?顨rK@t<1ðͿiTOwB]{1ðͿiTOwF]{1ðͿiTOwJ]{1ðͿiTOwN]{1ðͿiTOwR]{104*Owg8W 104*Owg8W 104*Owg8W 1ðͿiTOwC];1ðͿiTOwG];1ðͿiTOwK];1ðͿiTOwO];1ðͿiTOwS];1 ð?顨rJ@]}<1 ð?顨rXK@]y<1 ð?顨rK@]u<114*z0$ ~+114*z0$ ~ 114*z0$ ~+ 114*z0$ ~ 114*z0$ ~+ 10޿iL(*X7>10޿iL(*X7<10޿iL(*X7:10޿iL(*X7810޿iL(*X7610޿iL(*X7410޿iL(*X7210޿iL(*X701 1޿iDC~K u1 1޿iDCK u1 1޿iDCK u 0oBDd[|\ 0oA nCr] 0oA nEr] 0oA nGr]  0oA nIr] ر 1BDH&_`x4ر 1BDH&o`p4ر 1BDH&`h4ر 1BDH&``4ر 1]FDH&`x4ر 1]FDH&`p4ر 1]FDH&`h4ر 1]FDH&ϒ``4ر 1JDH&ߒ`8ر 1JDH&`0ر 1NDH&`8ر 1NI&`0ر 1RI&`8ر 1RI&/`0ر 1]VI&?`8ر 1]VI&O`0ر 1ZI&_` ر 1Ed &.֍ر 1@I&` ر 1m]@I&` ر 1@I&` ر 1m\AI&`  0owA nWr] iS [%gXf iS [%oX 0߿) [eж 3Lw à޿X@]:  _ k c a:A  _z kA  _z kA  _ze X'`A  _zU X'`1 ð?Pg $]9yA °KлtA ° Kл"ibA ° Kл*bA °`Kuл"iaA °`Kuл* aA ° Kuл"i`114%;*x1 ð?A]ɾ wE `1 ð?A]ɾ wU`1 ð?Q[ɾ wi,{1 ð?Q[ɾ waz1 ð?Q[ɾ w-Yz1 ð?Q[ɾ woQlz1 ð?aYɾ wI,z1 ð?aYɾ wAy1 ð?aYC w-9y1 ð?aYC wo1ly1 ð?qWC w),yc` 0L$d'xc``0b6 31#7fa`b```"'xc``0b6 31#Cfa`b```^$xc``0b6 #3Cb^1 @xc``b6 b`XJ3T@%5Y@ Ĥ:'xc``b6 31 CQbI*'T9kKcodec2-1.2.0/octave/Mat2Hrows.m000066400000000000000000000007151445607075400161550ustar00rootroot00000000000000function [Hrows Hcols] = Mat2Hrows(HRA, RAmode); H = full(HRA); [Nr Nc] = size(H); if nargin==1, RAmode = 1; end; if RAmode==1 H= H(:,1:Nc-Nr); [Nr Nc] = size(H); end Max_colwt = max(sum(H)); Max_rowwt = max(sum(H')); Hcols = zeros(Nc, Max_colwt); Hrows = zeros(Nr, Max_rowwt); for i = 1:Nr nz = find(H(i,:)); Hrows(i,1:length(nz)) = nz; end H = H'; for i = 1:Nc nz = find(H(i,:)); Hcols(i,1:length(nz)) = nz; end codec2-1.2.0/octave/autotest.m000066400000000000000000000036731445607075400162050ustar00rootroot00000000000000% autotest.m % David Rowe Mar 2015 % % Helper functions to plot output of C version and difference between Octave and C versions 1; function stem_sig_and_error(plotnum, subplotnum, sig, error, titlestr, axisvec) global no_plot_list; if find(no_plot_list == plotnum) return; end figure(plotnum) subplot(subplotnum) stem(sig,'g;Octave version;'); hold on; stem(error,'r;Octave - C version (hopefully 0);'); hold off; if nargin == 6 axis(axisvec); end title(titlestr); endfunction function plot_sig_and_error(plotnum, subplotnum, sig, error, titlestr, axisvec) global no_plot_list; if find(no_plot_list == plotnum) return; end figure(plotnum) subplot(subplotnum) plot(sig,'g;Octave version;'); hold on; plot(error,'r;Octave - C version (hopefully 0);'); hold off; if nargin == 6 axis(axisvec); end title(titlestr); endfunction function pass = check(a, b, test_name, tol, its_an_angle = 0) global passes; global fails; if nargin == 3 tol = 1E-3; end [m n] = size(a); if m > n ll = m; else ll = n; end printf("%s", test_name); for i=1:(25-length(test_name)) printf("."); end printf(": "); if its_an_angle % take into account pi is close to -pi for angles in rads e = sum(sum(abs(exp(j*a) - exp(j*b)))/ll); else e = sum(sum(abs(a - b))/ll); end if e < tol printf("OK\n"); pass = true; passes++; else printf("FAIL (%f)\n",e); pass = false; fails++; end endfunction function pass = check_no_abs(a, b, test_name) global passes; global fails; tol = 1E-3; [m n] = size(a); if m > n ll = m; else ll = n; end printf("%s", test_name); for i=1:(25-length(test_name)) printf("."); end printf(": "); e = sum(sum(a - b)/ll); if e < tol pass = true; printf("OK\n"); passes++; else pass = false; printf("FAIL (%f)\n",e); fails++; end endfunction codec2-1.2.0/octave/ch_fading.m000066400000000000000000000014011445607075400162220ustar00rootroot00000000000000% ch_fading.m % David Rowe % April 2018 % function to write float fading samples for use by C programs function ch_fading(raw_file_name, Fs, dopplerSpreadHz, len_samples) randn('seed',1); spread = doppler_spread(dopplerSpreadHz, Fs, len_samples); spread_2ms = doppler_spread(dopplerSpreadHz, Fs, len_samples); hf_gain = 1.0/sqrt(var(spread)+var(spread_2ms)); printf("hf_gain: %f\n", hf_gain); % interleave real imag samples inter = zeros(1,len_samples*4); inter(1:4) = hf_gain; for i=1:len_samples inter(i*4+1) = real(spread(i)); inter(i*4+2) = imag(spread(i)); inter(i*4+3) = real(spread_2ms(i)); inter(i*4+4) = imag(spread_2ms(i)); end f = fopen(raw_file_name,"wb"); fwrite(f, inter, "float32"); fclose(f); endfunction codec2-1.2.0/octave/channel_lib.m000066400000000000000000000056751445607075400165770ustar00rootroot00000000000000% channel_lib.m % % Commonly used channel simulation functions 1; function [spread1 spread2 path_delay_samples] = channel_multipath(channel, Fs, Nsam) % Winlink multipath definitions if strcmp(channel, 'mpg') dopplerSpreadHz = 0.1; path_delay_ms = 0.5; elseif strcmp(channel, 'mpm') dopplerSpreadHz = 0.5; path_delay_ms = 1.0; elseif strcmp(channel, 'mpp') dopplerSpreadHz = 1.0; path_delay_ms = 2.0; elseif strcmp(channel, 'mpd') dopplerSpreadHz = 2.0; path_delay_ms = 4.0; elseif strcmp(channel, 'mpf') dopplerSpreadHz = 4.0; path_delay_ms = 4.0; elseif strcmp(channel, 'notch') dopplerSpreadHz = 0.0; path_delay_ms = 2.0; elseif printf("Unknown multipath channel\n"); assert(0); end path_delay_samples = path_delay_ms*Fs/1000; %printf(" Doppler Spread: %3.2f Hz Path Delay: %3.2f ms %d samples\n", dopplerSpreadHz, path_delay_ms, path_delay_samples); if strcmp(channel, "notch") % simple notch filter (not time varying), hand tweaked to be 10dB down at about 1300 Hz (Fc-200Hz) spread1 = 0.5*ones(1,Nsam); spread2 = j*0.2*ones(1,Nsam); else % generate same fading pattern for every run spread1 = doppler_spread(dopplerSpreadHz, Fs, Nsam); spread2 = doppler_spread(dopplerSpreadHz, Fs, Nsam); end % sometimes doppler_spread() doesn't return exactly the number of samples we need if length(spread1) < Nsam printf("not enough doppler spreading samples %d %d\n", length(spread1), Nsam); assert(0); end if length(spread2) < Nsam printf("not enough doppler spreading samples %d %d\n", length(spread2), Nsam); assert(0); end endfunction % returns real rx signal with noise added, input is complex tx signal function [rx_real rx sigma] = channel_simulate(Fs, SNR3kdB, freq_offset_Hz, channel, tx, verbose=0) Nsam = length(tx); rx = tx; if strcmp(channel, 'awgn') == 0 [spread1 spread2 path_delay_samples] = channel_multipath(channel, Fs, Nsam); rx = tx(1:Nsam) .* spread1(1:Nsam); rx += [zeros(1,path_delay_samples) tx(1:Nsam-path_delay_samples)] .* spread2(1:Nsam); end woffset = 2*pi*freq_offset_Hz/Fs; rx = rx .* exp(j*woffset*(1:Nsam)); rx_real = real(rx); S = rx_real*rx_real'; rpapr = 10*log10(max(abs(rx_real).^2)/mean(abs(rx_real).^2)); % SNR in a 4k bandwidth will be lower than 3k as total noise power N is higher SNR4kdB = SNR3kdB - 10*log10(Fs/2) + 10*log10(3000); SNR = 10^(SNR4kdB/10); N = S/SNR; sigma = sqrt(N/Nsam); n = sigma*randn(1,Nsam); % printf("SNR3kdB: %f SNR4kdB: %f N: %f %f\n", SNR3kdB, SNR4kdB, N, n*n'); rx_real += n; % check our sums are OK to within 0.25 dB SNR4kdB_measured = 10*log10(S/(n*n')); assert (abs(SNR4kdB - SNR4kdB_measured) < 0.5); if verbose printf("foff: %3.1f Hz SNR(3k): %3.1f dB ", freq_offset_Hz, SNR3kdB); printf("measSNR3k: %3.2f dB N: %3.2f dB\n", 10*log10(S/(n*n')) + 10*log10(4000) - 10*log10(3000), 10*log10(n*n')); end endfunction codec2-1.2.0/octave/cohpsk_demod_plot.m000066400000000000000000000026731445607075400200310ustar00rootroot00000000000000% cohpsk_demod_plot.m % David Rowe May 2015 % % Plot Octave outputs from cohpsk_demod, c2dec, to visualise what's going on % when errors hit the system #{ $ ./cohpsk_get_test_bits - 5600 | ./cohpsk_mod - - | ./ch - - --No -40 | ./cohpsk_demod - - -o cohpsk_demod.txt | ./cohpsk_put_test_bits - octave> cohpsk_demod_plot("../build_linux/src/cohpsk_demod.txt") #} function cohpsk_demod_plot(fn) Nc=7; Nd=2; Ns=6; load(fn); Ncf = 100; % number of codec frames to plot Nmf = Ncf/2; % number of modem frames to plot Nms = Nmf*Ns; % number of modem symbols to plot figure(1) clf; % plot combined signals to show diversity gains combined = rx_symb_log_c(:,1:Nc); for d=2:Nd combined += rx_symb_log_c(:, (d-1)*Nc+1:d*Nc); end plot(combined*exp(j*pi/4)/sqrt(Nd),'+') title('Scatter'); axis([-2 2 -2 2]) figure(2) clf; subplot(211) plot(rx_phi_log_c(1:Nms,:)) title('phase') axis([1 Nms -pi pi]) subplot(212) plot(rx_amp_log_c(1:Nms,:)) title('amplitude') axis([1 Nms 0 1]) figure(3) subplot(211) plot(rx_timing_log_c) title('rx timing'); subplot(212) stem(ratio_log_c) title('Sync ratio'); figure(4) plot(f_est_log_c - 1500) title('freq offset est'); axis([1 Nmf -50 50]) figure(5) y = 1:Nms; x = 1:Nc*Nd; z = 20*log10(rx_amp_log_c(1:Nms,:)); mesh(x,y,z); grid title('Channel Amplitude dB'); a = min(min(z)); b = max(max(z)); axis([1 Nc*Nd 1 Nms a b]) end codec2-1.2.0/octave/cohpsk_dev.m000066400000000000000000000346061445607075400164620ustar00rootroot00000000000000% cohpsk_dev.m % David Rowe Mar 2015 % % Coherent PSK modem development and testing functions % cohpsk_lib; % Init HF channel model from stored sample files of spreading signal ---------------------------------- function [spread spread_2ms hf_gain] = init_hf_model(Fs, nsam) % convert "spreading" samples from 1kHz carrier at Fss to complex % baseband, generated by passing a 1kHz sine wave through PathSim % with the ccir-poor model, enabling one path at a time. Fc = 1000; Fss = 8000; fspread = fopen("../raw/sine1k_2Hz_spread.raw","rb"); spread1k = fread(fspread, "int16")/10000; fclose(fspread); fspread = fopen("../raw/sine1k_2ms_delay_2Hz_spread.raw","rb"); spread1k_2ms = fread(fspread, "int16")/10000; fclose(fspread); % down convert to complex baseband spreadbb = spread1k.*exp(-j*(2*pi*Fc/Fss)*(1:length(spread1k))'); spreadbb_2ms = spread1k_2ms.*exp(-j*(2*pi*Fc/Fss)*(1:length(spread1k_2ms))'); % remove -2000 Hz image b = fir1(50, 5/Fss); spread = filter(b,1,spreadbb); spread_2ms = filter(b,1,spreadbb_2ms); % discard first 1000 samples as these were near 0, probably as % PathSim states were ramping up spread = spread(1000:length(spread)); spread_2ms = spread_2ms(1000:length(spread_2ms)); % change output samples so they are at rate Fs reqd by caller spread = resample(spread, Fs, Fss); spread_2ms = resample(spread_2ms, Fs, Fss); % Determine "gain" of HF channel model, so we can normalise % carrier power during HF channel sim to calibrate SNR. I imagine % different implementations of ccir-poor would do this in % different ways, leading to different BER results. Oh Well! hf_gain = 1.0/sqrt(var(spread(1:nsam))+var(spread_2ms(1:nsam))); endfunction function write_pilot_file(pilot, Nsymbrowpilot, Ns, Nsymrow, Npilotsframe, Nc); filename = sprintf("../src/cohpsk_defs.h", Npilotsframe, Nc); f=fopen(filename,"wt"); fprintf(f,"/* Generated by write_pilot_file() Octave function */\n\n"); fprintf(f,"#define NSYMROW %d /* number of data symbols on each row (i.e. each carrier) */\n", Nsymrow); fprintf(f,"#define NS %d /* number of data symbols between pilots */\n", Ns); fprintf(f,"#define NPILOTSFRAME %d /* number of pilot symbols on each row */\n", Npilotsframe); fprintf(f,"#define PILOTS_NC %d /* number of carriers */\n\n", Nc); fprintf(f,"#define NSYMROWPILOT %d /* length of row after pilots inserted */\n\n", Nsymbrowpilot); fclose(f); filename = sprintf("../src/pilots_coh.h", Npilotsframe, Nc); f=fopen(filename,"wt"); fprintf(f,"/* Generated by write_pilot_file() Octave function */\n\n"); fprintf(f,"float pilots_coh[][PILOTS_NC]={\n"); for r=1:Npilotsframe fprintf(f, " {"); for c=1:Nc-1 fprintf(f, " %f,", pilot(r, c)); end if r < Npilotsframe fprintf(f, " %f},\n", pilot(r, Nc)); else fprintf(f, " %f}\n};", pilot(r, Nc)); end end fclose(f); endfunction % Save test bits frame to a text file in the form of a C array function test_bits_coh_file(test_bits_coh) f=fopen("../src/test_bits_coh.h","wt"); fprintf(f,"/* Generated by test_bits_coh_file() Octave function */\n\n"); fprintf(f,"const int test_bits_coh[]={\n"); for m=1:length(test_bits_coh)-1 fprintf(f," %d,\n",test_bits_coh(m)); endfor fprintf(f," %d\n};\n",test_bits_coh(length(test_bits_coh))); fclose(f); endfunction % Rate Rs BER tests ------------------------------------------------------------------------------ function sim_out = ber_test(sim_in) sim_in = symbol_rate_init(sim_in); Fs = sim_in.Fs; Rs = sim_in.Rs; Ntrials = sim_in.Ntrials; verbose = sim_in.verbose; plot_scatter = sim_in.plot_scatter; framesize = sim_in.framesize; bps = sim_in.bps; Esvec = sim_in.Esvec; ldpc_code = sim_in.ldpc_code; rate = sim_in.ldpc_code_rate; code_param = sim_in.code_param; tx_bits_buf = sim_in.tx_bits_buf; Nsymb = sim_in.Nsymb; Nsymbrow = sim_in.Nsymbrow; Nsymbrowpilot = sim_in.Nsymbrowpilot; Nc = sim_in.Nc; Npilotsframe = sim_in.Npilotsframe; Ns = sim_in.Ns; Np = sim_in.Np; Nd = sim_in.Nd; modulation = sim_in.modulation; pilot = sim_in.pilot; prev_sym_tx = sim_in.prev_sym_tx; prev_sym_rx = sim_in.prev_sym_rx; rx_symb_buf = sim_in.rx_symb_buf; tx_pilot_buf = sim_in.tx_pilot_buf; rx_pilot_buf = sim_in.rx_pilot_buf; hf_sim = sim_in.hf_sim; nhfdelay = sim_in.hf_delay_ms*Rs/1000; hf_mag_only = sim_in.hf_mag_only; f_off = sim_in.f_off; div_time_shift = sim_in.div_timeshift; [spread spread_2ms hf_gain] = init_hf_model(Rs, Nsymbrowpilot*(Ntrials+2)); if strcmp(modulation,'dqpsk') Nsymbrowpilot = Nsymbrow; end % Start Simulation ---------------------------------------------------------------- for ne = 1:length(Esvec) EsNodB = Esvec(ne); EsNo = 10^(EsNodB/10); variance = 1/EsNo; if verbose > 1 printf("EsNo (dB): %f EsNo: %f variance: %f\n", EsNodB, EsNo, variance); end Terrs = 0; Tbits = 0; s_ch_tx_log = []; rx_symb_log = []; noise_log = []; errors_log = []; Nerrs_log = []; phi_log = []; amp_log = []; EsNo__log = []; ldpc_errors_log = []; ldpc_Nerrs_log = []; Terrsldpc = Tbitsldpc = Ferrsldpc = 0; % init HF channel hf_n = 1; phase_offset_rect = 1; w_offset = 2*pi*f_off/Rs; w_offset_rect = exp(j*w_offset); ct_symb_buf = zeros(2*Nsymbrowpilot, Nc*Nd); prev_tx_symb = prev_rx_symb = ones(1, Nc*Nd); % simulation starts here----------------------------------- for nn = 1:Ntrials+2 if ldpc_code tx_bits = round(rand(1,framesize*rate)); else tx_bits = round(rand(1,framesize)); end if strcmp(modulation,'qpsk') [tx_symb tx_bits] = bits_to_qpsk_symbols(sim_in, tx_bits, code_param); % one frame delay on bits for qpsk tx_bits_buf(1:framesize) = tx_bits_buf(framesize+1:2*framesize); tx_bits_buf(framesize+1:2*framesize) = tx_bits; end if strcmp(modulation, 'dqpsk') [tx_symb prev_tx_symb] = bits_to_dqpsk_symbols(sim_in, tx_bits, prev_tx_symb); tx_bits_buf(1:framesize) = tx_bits; end s_ch = tx_symb; % HF channel simulation ------------------------------------ hf_fading = ones(1,Nsymb); if hf_sim % separation between carriers. Note this effectively % under samples at Rs, I dont think this matters. % Equivalent to doing freq shift at Fs, then % decimating to Rs. wsep = 2*pi*(1+0.5); % e.g. 75Hz spacing at Rs=50Hz, alpha=0.5 filters hf_model(hf_n, :) = zeros(1,Nc*Nd); for r=1:Nsymbrowpilot for c=1:Nd*Nc if c > Nc time_shift = sim_in.div_timeshift; else time_shift = 1; end ahf_model = hf_gain*(spread(hf_n+time_shift) + exp(-j*c*wsep*nhfdelay)*spread_2ms(hf_n+time_shift)); if hf_mag_only s_ch(r,c) *= abs(ahf_model); else s_ch(r,c) *= ahf_model; end hf_model(hf_n, c) = ahf_model; end hf_n++; end end % keep a record of each tx symbol so we can check average power for r=1:Nsymbrow for c=1:Nd*Nc s_ch_tx_log = [s_ch_tx_log s_ch(r,c)]; end end % AWGN noise and phase/freq offset channel simulation % 0.5 factor ensures var(noise) == variance , i.e. splits power between Re & Im noise = sqrt(variance*0.5)*(randn(Nsymbrowpilot,Nc*Nd) + j*randn(Nsymbrowpilot,Nc*Nd)); noise_log = [noise_log noise]; for r=1:Nsymbrowpilot s_ch(r,:) *= phase_offset_rect; phase_offset_rect *= w_offset_rect; end s_ch += noise; ct_symb_buf(1:Nsymbrowpilot,:) = ct_symb_buf(Nsymbrowpilot+1:2*Nsymbrowpilot,:); ct_symb_buf(Nsymbrowpilot+1:2*Nsymbrowpilot,:) = s_ch; if strcmp(modulation,'qpsk') [rx_symb rx_bits rx_symb_linear amp_ phi_ sig_rms noise_rms sim_in] = qpsk_symbols_to_bits(sim_in, ct_symb_buf(1:Nsymbrowpilot+Npilotsframe,:)); phi_log = [phi_log; phi_]; amp_log = [amp_log; amp_]; end if strcmp(modulation,'dqpsk') [rx_symb rx_bits rx_symb_linear prev_rx_symb] = dqpsk_symbols_to_bits(sim_in, s_ch, prev_rx_symb); end % Wait until we have enough frames to do pilot assisted phase estimation if nn > 1 rx_symb_log = [rx_symb_log rx_symb_linear]; %EsNo__log = [EsNo__log EsNo_]; % Measure BER error_positions = xor(rx_bits, tx_bits_buf(1:framesize)); Nerrs = sum(error_positions); Terrs += Nerrs; Tbits += length(tx_bits); errors_log = [errors_log error_positions]; Nerrs_log = [Nerrs_log Nerrs]; % Optionally LDPC decode if ldpc_code detected_data = ldpc_dec(code_param, sim_in.max_iterations, sim_in.demod_type, sim_in.decoder_type, ... rx_symb_linear, min(100,EsNo_), amp_linear); error_positions = xor( detected_data(1:framesize*rate), tx_bits_buf(1:framesize*rate) ); Nerrs = sum(error_positions); ldpc_Nerrs_log = [ldpc_Nerrs_log Nerrs]; ldpc_errors_log = [ldpc_errors_log error_positions]; if Nerrs Ferrsldpc++; end Terrsldpc += Nerrs; Tbitsldpc += framesize*rate; end end end TERvec(ne) = Terrs; BERvec(ne) = Terrs/Tbits; if verbose av_tx_pwr = (s_ch_tx_log * s_ch_tx_log')/length(s_ch_tx_log); printf("EsNo (dB): %3.1f Terrs: %d Tbits: %d BER %5.3f QPSK BER theory %5.3f av_tx_pwr: %3.2f", EsNodB, Terrs, Tbits, Terrs/Tbits, 0.5*erfc(sqrt(EsNo/2)), av_tx_pwr); if ldpc_code printf("\n LDPC: Terrs: %d BER: %4.2f Ferrs: %d FER: %4.2f", Terrsldpc, Terrsldpc/Tbitsldpc, Ferrsldpc, Ferrsldpc/Ntrials); end printf("\n"); end end Ebvec = Esvec - 10*log10(bps); sim_out.BERvec = BERvec; sim_out.Ebvec = Ebvec; sim_out.TERvec = TERvec; sim_out.errors_log = errors_log; sim_out.ldpc_errors_log = ldpc_errors_log; if plot_scatter figure(2); clf; scat = rx_symb_log .* exp(j*pi/4); plot(real(scat), imag(scat),'+'); title('Scatter plot'); a = 1.5*max(real(scat)); b = 1.5*max(imag(scat)); axis([-a a -b b]); if hf_sim figure(3); clf; y = 1:(hf_n-1); x = 1:Nc*Nd; EsNodBSurface = 20*log10(abs(hf_model(y,:))) - 10*log10(variance); EsNodBSurface(find(EsNodBSurface < -5)) = -5; EsNodBSurface(find(EsNodBSurface > 25)) = 25; mesh(x,y,EsNodBSurface); grid axis([1 Nc*Nd 1 Rs*5 -5 25]) title('HF Channel Es/No'); if verbose [m n] = size(hf_model); av_hf_pwr = sum(sum(abs(hf_model(:,:)).^2))/(m*n); printf("average HF power: %3.2f over %d symbols\n", av_hf_pwr, m*n); end end if strcmp(modulation,'qpsk') % set up time axis to include gaps for pilots [m1 n1] = size(phi_log); phi_x = []; phi_x_counter = 1; p = Ns; for r=1:m1 if p == Ns phi_x_counter += Npilotsframe; p = 0; end p++; phi_x = [phi_x phi_x_counter++]; end phi_x -= Nsymbrowpilot; % account for delay in pilot buffer figure(5); clf subplot(211) [m n] = size(phi_log); plot(phi_x, phi_log(:,2),'r+;Estimated HF channel phase;') if hf_sim hold on; [m n] = size(hf_model); plot(angle(hf_model(1:m,2)),'g;HF channel phase;') hold off; end ylabel('Phase (rads)'); legend('boxoff'); axis([1 m -1.1*pi 1.1*pi]) subplot(212) plot(phi_x, amp_log(:,2),'r+;Estimated HF channel amp;') if hf_sim hold on; plot(abs(hf_model(1:m,2))) hold off; end ylabel('Amplitude'); xlabel('Time (symbols)'); legend('boxoff'); axis([1 m 0 3]) end figure(4) clf stem(Nerrs_log) axis([1 length(Nerrs_log) 0 max(Nerrs_log)+1]) end endfunction function sim_in = standard_init sim_in.verbose = 1; sim_in.do_write_pilot_file = 0; sim_in.plot_scatter = 0; sim_in.Esvec = 50; sim_in.Ntrials = 30; sim_in.framesize = 2; sim_in.Rs = 50; sim_in.phase_offset = 0; sim_in.w_offset = 0; sim_in.phase_noise_amp = 0; sim_in.hf_delay_ms = 2; sim_in.hf_sim = 0; sim_in.hf_mag_only = 0; sim_in.Nd = 1; endfunction codec2-1.2.0/octave/cohpsk_lib.m000066400000000000000000000364611445607075400164530ustar00rootroot00000000000000% cohpsk_lib.m % David Rowe Mar 2015 % % Coherent PSK modem functions % 1; % Gray coded QPSK modulation function function symbol = qpsk_mod(two_bits) two_bits_decimal = sum(two_bits .* [2 1]); switch(two_bits_decimal) case (0) symbol = 1; case (1) symbol = j; case (2) symbol = -j; case (3) symbol = -1; endswitch endfunction % Gray coded QPSK demodulation function function two_bits = qpsk_demod(symbol) if isscalar(symbol) == 0 printf("only works with scalars\n"); return; end bit0 = real(symbol*exp(j*pi/4)) < 0; bit1 = imag(symbol*exp(j*pi/4)) < 0; two_bits = [bit1 bit0]; endfunction % init function for symbol rate processing -------------------------------------------------------- function sim_in = symbol_rate_init(sim_in) sim_in.Fs = Fs = 8000; modulation = sim_in.modulation; verbose = sim_in.verbose; framesize = sim_in.framesize; Ntrials = sim_in.Ntrials; Esvec = sim_in.Esvec; phase_offset = sim_in.phase_offset; w_offset = sim_in.w_offset; plot_scatter = sim_in.plot_scatter; Rs = sim_in.Rs; Nc = sim_in.Nc; hf_sim = sim_in.hf_sim; nhfdelay = sim_in.hf_delay_ms*Rs/1000; hf_mag_only = sim_in.hf_mag_only; Nd = sim_in.Nd; % diveristy Ns = sim_in.Ns; % step size between pilots ldpc_code = sim_in.ldpc_code; rate = sim_in.ldpc_code_rate; sim_in.bps = bps = 2; sim_in.Nsymb = Nsymb = framesize/bps; sim_in.Nsymbrow = Nsymbrow = Nsymb/Nc; sim_in.Npilotsframe = Npilotsframe = 2; sim_in.Nsymbrowpilot = Nsymbrowpilot = Nsymbrow + Npilotsframe; if verbose == 2 printf("Each frame contains %d data bits or %d data symbols, transmitted as %d symbols by %d carriers.", framesize, Nsymb, Nsymbrow, Nc); printf(" There are %d pilot symbols in each carrier together at the start of each frame, then %d data symbols.", Npilotsframe, Ns); printf(" Including pilots, the frame is %d symbols long by %d carriers.\n\n", Nsymbrowpilot, Nc); end sim_in.prev_sym_tx = qpsk_mod([0 0])*ones(1,Nc*Nd); sim_in.prev_sym_rx = qpsk_mod([0 0])*ones(1,Nc*Nd); sim_in.rx_symb_buf = zeros(3*Nsymbrow, Nc*Nd); sim_in.rx_pilot_buf = zeros(3*Npilotsframe,Nc*Nd); sim_in.tx_bits_buf = zeros(1,2*framesize); % pilot sequence is used for phase and amplitude estimation, and frame sync pilot = 1 - 2*(rand(Npilotsframe,Nc) > 0.5); sim_in.pilot = pilot; sim_in.tx_pilot_buf = [pilot; pilot; pilot]; if sim_in.do_write_pilot_file write_pilot_file(pilot, Nsymbrowpilot, Ns, Nsymbrow, Npilotsframe, Nc); end % we use first 2 pilots of next frame to help with frame sync and fine freq sim_in.Nct_sym_buf = 2*Nsymbrowpilot + 2; sim_in.ct_symb_buf = zeros(sim_in.Nct_sym_buf, Nc*Nd); sim_in.ff_phase = 1; sim_in.ct_symb_ff_buf = zeros(Nsymbrowpilot + 2, Nc*Nd); % Init LDPC -------------------------------------------------------------------- if ldpc_code % Start CML library currentdir = pwd; addpath '~/cml/mat' % assume the source files stored here cd ~/cml CmlStartup % note that this is not in the cml path! cd(currentdir) % Our LDPC library ldpc; mod_order = 4; modulation2 = 'QPSK'; mapping = 'gray'; sim_in.demod_type = 0; sim_in.decoder_type = 0; sim_in.max_iterations = 100; code_param = ldpc_init(rate, framesize, modulation2, mod_order, mapping); code_param.code_bits_per_frame = framesize; code_param.symbols_per_frame = framesize/bps; sim_in.code_param = code_param; else sim_in.rate = 1; sim_in.code_param = []; end endfunction % Symbol rate processing for tx side (modulator) ------------------------------------------------------- % legacy DQPSK mod for comparative testing function [tx_symb prev_tx_symb] = bits_to_dqpsk_symbols(sim_in, tx_bits, prev_tx_symb) Nc = sim_in.Nc; Nsymbrow = sim_in.Nsymbrow; tx_symb = zeros(Nsymbrow,Nc); for c=1:Nc for r=1:Nsymbrow i = (c-1)*Nsymbrow + r; tx_symb(r,c) = qpsk_mod(tx_bits(2*(i-1)+1:2*i)); tx_symb(r,c) *= prev_tx_symb(c); prev_tx_symb(c) = tx_symb(r,c); end end endfunction % legacy DQPSK demod for comparative testing function [rx_symb rx_bits rx_symb_linear prev_rx_symb] = dqpsk_symbols_to_bits(sim_in, rx_symb, prev_rx_symb) Nc = sim_in.Nc; Nsymbrow = sim_in.Nsymbrow; tx_symb = zeros(Nsymbrow,Nc); for c=1:Nc for r=1:Nsymbrow tmp = rx_symb(r,c); rx_symb(r,c) *= conj(prev_rx_symb(c))/abs(prev_rx_symb(c)); prev_rx_symb(c) = tmp; i = (c-1)*Nsymbrow + r; rx_symb_linear(i) = rx_symb(r,c); rx_bits((2*(i-1)+1):(2*i)) = qpsk_demod(rx_symb(r,c)); end end endfunction function [tx_symb tx_bits] = bits_to_qpsk_symbols(sim_in, tx_bits, code_param) ldpc_code = sim_in.ldpc_code; rate = sim_in.ldpc_code_rate; framesize = sim_in.framesize; Nsymbrow = sim_in.Nsymbrow; Nsymbrowpilot = sim_in.Nsymbrowpilot; Nc = sim_in.Nc; Npilotsframe = sim_in.Npilotsframe; Ns = sim_in.Ns; modulation = sim_in.modulation; pilot = sim_in.pilot; Nd = sim_in.Nd; if ldpc_code [tx_bits, tmp] = ldpc_enc(tx_bits, code_param); end % modulate -------------------------------------------- % organise symbols into a Nsymbrow rows by Nc cols % data and parity bits are on separate carriers tx_symb = zeros(Nsymbrow,Nc); for c=1:Nc for r=1:Nsymbrow i = (c-1)*Nsymbrow + r; tx_symb(r,c) = qpsk_mod(tx_bits(2*(i-1)+1:2*i)); end end % insert pilots at start of frame tx_symb = [pilot(1,:); pilot(2,:); tx_symb;]; % copy to other carriers (diversity) tmp = tx_symb; for d=1:Nd-1 tmp = [tmp tx_symb]; end tx_symb = tmp; % ensures energy/symbol is normalised with diversity tx_symb = tx_symb/sqrt(Nd); endfunction % Symbol rate processing for rx side (demodulator) ------------------------------------------------------- function [rx_symb rx_bits rx_symb_linear amp_ phi_ sig_rms noise_rms cohpsk] = qpsk_symbols_to_bits(cohpsk, ct_symb_buf) framesize = cohpsk.framesize; Nsymb = cohpsk.Nsymb; Nsymbrow = cohpsk.Nsymbrow; Nsymbrowpilot = cohpsk.Nsymbrowpilot; Nc = cohpsk.Nc; Nd = cohpsk.Nd; Npilotsframe = cohpsk.Npilotsframe; pilot = cohpsk.pilot; verbose = cohpsk.verbose; coh_en = cohpsk.coh_en; % Use pilots to get phase and amplitude estimates We assume there % are two samples at the start of each frame and two at the end % Note: correlation (averging) method was used initially, but was % poor at tracking fast phase changes that we experience on fading % channels. Linear regression (fitting a straight line) works % better on fading channels, but increases BER slightly for AWGN % channels. sampling_points = [1 2 cohpsk.Nsymbrow+3 cohpsk.Nsymbrow+4]; pilot2 = [cohpsk.pilot(1,:); cohpsk.pilot(2,:); cohpsk.pilot(1,:); cohpsk.pilot(2,:);]; phi_ = zeros(Nsymbrow, Nc*Nd); amp_ = zeros(Nsymbrow, Nc*Nd); for c=1:Nc*Nd y = ct_symb_buf(sampling_points,c) .* pilot2(:,c-Nc*floor((c-1)/Nc)); [m b] = linreg(sampling_points, y, length(sampling_points)); yfit = m*[3 4 5 6] + b; phi_(:, c) = angle(yfit); mag = sum(abs(ct_symb_buf(sampling_points,c))); amp_(:, c) = mag/length(sampling_points); end % now correct phase of data symbols rx_symb = zeros(Nsymbrow, Nc); rx_symb_linear = zeros(1, Nsymbrow*Nc*Nd); rx_bits = zeros(1, framesize); for c=1:Nc*Nd for r=1:Nsymbrow if coh_en == 1 rx_symb(r,c) = ct_symb_buf(2+r,c)*exp(-j*phi_(r,c)); else rx_symb(r,c) = ct_symb_buf(2+r,c); end i = (c-1)*Nsymbrow + r; rx_symb_linear(i) = rx_symb(r,c); end end % and finally optional diversity combination and make decn on bits for c=1:Nc for r=1:Nsymbrow i = (c-1)*Nsymbrow + r; div_symb = rx_symb(r,c); for d=1:Nd-1 div_symb += rx_symb(r,c + Nc*d); end rx_bits((2*(i-1)+1):(2*i)) = qpsk_demod(div_symb); end end % Estimate noise power from demodulated symbols. One method is to % calculate the distance of each symbol from the average symbol % position. However this is complicated by fading, which means the % amplitude of the symbols is constantly changing. % Now the scatter diagram in a fading channel is a X or cross % shape. The noise can be resolved into two components at right % angles to each other. The component along the the "thickness" % of the arms is proportional to the noise power and not affected % by fading. We only use points further along the real axis than % the mean amplitude so we keep out of the central nosiey blob sig_rms = mean(abs(rx_symb_linear)); sum_x = 0; sum_xx = 0; n = 0; for i=1:Nsymb*Nd s = rx_symb_linear(i); if abs(real(s)) > sig_rms sum_x += imag(s); sum_xx += imag(s)*imag(s); n++; end end noise_var = 0; if n > 1 noise_var = (n*sum_xx - sum_x*sum_x)/(n*(n-1)); end noise_rms = sqrt(noise_var); endfunction function [ch_symb rx_timing rx_filt rx_baseband afdmdv f_est] = rate_Fs_rx_processing(afdmdv, ch_fdm_frame, f_est, nsymb, nin, freq_track) M = afdmdv.M; rx_baseband = []; rx_filt = []; rx_timing = []; ch_fdm_frame_index = 1; for r=1:nsymb % shift signal to nominal baseband, this will put Nc/2 carriers either side of 0 Hz [rx_fdm_frame_bb afdmdv.fbb_phase_rx] = freq_shift(ch_fdm_frame(ch_fdm_frame_index:ch_fdm_frame_index + nin - 1), -f_est, afdmdv.Fs, afdmdv.fbb_phase_rx); ch_fdm_frame_index += nin; % downconvert each FDM carrier to Nc separate baseband signals [arx_baseband afdmdv] = fdm_downconvert(afdmdv, rx_fdm_frame_bb, nin); [arx_filt afdmdv] = rx_filter(afdmdv, arx_baseband, nin); [rx_onesym arx_timing env afdmdv] = rx_est_timing(afdmdv, arx_filt, nin); rx_baseband = [rx_baseband arx_baseband]; rx_filt = [rx_filt arx_filt]; rx_timing = [rx_timing arx_timing]; ch_symb(r,:) = rx_onesym; % we only allow a timing shift on one symbol per frame if nin != M nin = M; end % freq tracking, see test_ftrack.m for unit test. Placed in % this function as it needs to work on a symbol by symbol basis % rather than frame by frame. This means the control loop % operates at a sample rate of Rs = 50Hz for say 1 Hz/s drift. if freq_track beta = 0.005; g = 0.2; % combine difference on phase from last symbol over Nc carriers mod_strip = 0; for c=1:afdmdv.Nc+1 adiff = rx_onesym(c) .* conj(afdmdv.prev_rx_symb(c)); afdmdv.prev_rx_symb(c) = rx_onesym(c); % 4th power strips QPSK modulation, by multiplying phase by 4 % Using the abs value of the real coord was found to help % non-linear issues when noise power was large amod_strip = adiff.^4; amod_strip = abs(real(amod_strip)) + j*imag(amod_strip); mod_strip += amod_strip; end % loop filter made up of 1st order IIR plus integrator. Integerator % was found to be reqd afdmdv.filt = (1-beta)*afdmdv.filt + beta*angle(mod_strip); f_est += g*afdmdv.filt; end end endfunction function ct_symb_buf = update_ct_symb_buf(ct_symb_buf, ch_symb, Nct_sym_buf, Nsymbrowpilot) % update memory in symbol buffer for r=1:Nct_sym_buf-Nsymbrowpilot ct_symb_buf(r,:) = ct_symb_buf(r+Nsymbrowpilot,:); end i = 1; for r=Nct_sym_buf-Nsymbrowpilot+1:Nct_sym_buf ct_symb_buf(r,:) = ch_symb(i,:); i++; end endfunction % returns index of start of frame and fine freq offset function [next_sync cohpsk] = frame_sync_fine_freq_est(cohpsk, ch_symb, sync, next_sync) ct_symb_buf = cohpsk.ct_symb_buf; Nct_sym_buf = cohpsk.Nct_sym_buf; Rs = cohpsk.Rs; Nsymbrowpilot = cohpsk.Nsymbrowpilot; Nc = cohpsk.Nc; Nd = cohpsk.Nd; ct_symb_buf = update_ct_symb_buf(ct_symb_buf, ch_symb, Nct_sym_buf, Nsymbrowpilot); cohpsk.ct_symb_buf = ct_symb_buf; % sample pilots at start of this frame and start of next frame sampling_points = [1 2 cohpsk.Nsymbrow+3 cohpsk.Nsymbrow+4]; pilot2 = [ cohpsk.pilot(1,:); cohpsk.pilot(2,:); cohpsk.pilot(1,:); cohpsk.pilot(2,:);]; if sync == 0 % sample correlation over 2D grid of time and fine freq points max_corr = 0; for f_fine=-20:0.25:20 f_fine_rect = exp(-j*f_fine*2*pi*sampling_points/Rs)'; % note: this could be pre-computed at init or compile time for t=0:cohpsk.Nsymbrowpilot-1 corr = 0; mag = 0; for c=1:Nc*Nd f_corr_vec = f_fine_rect .* ct_symb_buf(t+sampling_points,c); % note: this could be pre-computed at init or compile time acorr = 0.0; for p=1:length(sampling_points) acorr += pilot2(p,c-Nc*floor((c-1)/Nc)) * f_corr_vec(p); mag += abs(f_corr_vec(p)); end corr += abs(acorr); end if corr >= max_corr max_corr = corr; max_mag = mag; cohpsk.ct = t; cohpsk.f_fine_est = f_fine; cohpsk.ff_rect = exp(-j*f_fine*2*pi/Rs); end end end printf(" [%d] fine freq f: %f max_ratio: %f ct: %d\n", cohpsk.frame, cohpsk.f_fine_est, abs(max_corr)/max_mag, cohpsk.ct); if abs(max_corr/max_mag) > 0.9 printf(" [%d] encouraging sync word! ratio: %f\n", cohpsk.frame, abs(max_corr/max_mag)); cohpsk.sync_timer = 0; next_sync = 1; else next_sync = 0; end cohpsk.ratio = abs(max_corr/max_mag); end % single point correlation just to see if we are still in sync if sync == 1 corr = 0; mag = 0; f_fine_rect = exp(-j*cohpsk.f_fine_est*2*pi*sampling_points/Rs)'; for c=1:Nc*Nd f_corr_vec = f_fine_rect .* ct_symb_buf(cohpsk.ct+sampling_points,c); acorr = 0; for p=1:length(sampling_points) acorr += pilot2(p, c-Nc*floor((c-1)/Nc)) * f_corr_vec(p); mag += abs(f_corr_vec(p)); end corr += abs(acorr); end cohpsk.ratio = abs(corr)/mag; end endfunction % misc sync state machine code, just wanted it in a function function [sync cohpsk] = sync_state_machine(cohpsk, sync, next_sync) if sync == 1 % check that sync is still good, fall out of sync on consecutive bad frames */ if cohpsk.ratio < 0.8 cohpsk.sync_timer++; else cohpsk.sync_timer = 0; end if cohpsk.sync_timer == 10 printf(" [%d] lost sync ....\n", cohpsk.frame); next_sync = 0; end end sync = next_sync; endfunction codec2-1.2.0/octave/crc16.m000066400000000000000000000044761445607075400152550ustar00rootroot00000000000000% crc16.m % %The CRC calculation is based on following generator polynomial: %G(x) = x16 + x12 + x5 + 1 % %The register initial value of the implementation is: 0xFFFF % %used data = string -> 1 2 3 4 5 6 7 8 9 % % Online calculator to check the script: %http://www.lammertbies.nl/comm/info/crc-calculation.html % % function crc = crc16(data) % crc look up table Crc_ui16LookupTable=[0,4129,8258,12387,16516,20645,24774,28903,33032,37161,41290,45419,49548,... 53677,57806,61935,4657,528,12915,8786,21173,17044,29431,25302,37689,33560,45947,41818,54205,... 50076,62463,58334,9314,13379,1056,5121,25830,29895,17572,21637,42346,46411,34088,38153,58862,... 62927,50604,54669,13907,9842,5649,1584,30423,26358,22165,18100,46939,42874,38681,34616,63455,... 59390,55197,51132,18628,22757,26758,30887,2112,6241,10242,14371,51660,55789,59790,63919,35144,... 39273,43274,47403,23285,19156,31415,27286,6769,2640,14899,10770,56317,52188,64447,60318,39801,... 35672,47931,43802,27814,31879,19684,23749,11298,15363,3168,7233,60846,64911,52716,56781,44330,... 48395,36200,40265,32407,28342,24277,20212,15891,11826,7761,3696,65439,61374,57309,53244,48923,... 44858,40793,36728,37256,33193,45514,41451,53516,49453,61774,57711,4224,161,12482,8419,20484,... 16421,28742,24679,33721,37784,41979,46042,49981,54044,58239,62302,689,4752,8947,13010,16949,... 21012,25207,29270,46570,42443,38312,34185,62830,58703,54572,50445,13538,9411,5280,1153,29798,... 25671,21540,17413,42971,47098,34713,38840,59231,63358,50973,55100,9939,14066,1681,5808,26199,... 30326,17941,22068,55628,51565,63758,59695,39368,35305,47498,43435,22596,18533,30726,26663,6336,... 2273,14466,10403,52093,56156,60223,64286,35833,39896,43963,48026,19061,23124,27191,31254,2801,6864,... 10931,14994,64814,60687,56684,52557,48554,44427,40424,36297,31782,27655,23652,19525,15522,11395,... 7392,3265,61215,65342,53085,57212,44955,49082,36825,40952,28183,32310,20053,24180,11923,16050,3793,7920]; ui16RetCRC16 = hex2dec('FFFF'); for I=1:length(data) ui8LookupTableIndex = bitxor(data(I),uint8(bitshift(ui16RetCRC16,-8))); ui16RetCRC16 = bitxor(Crc_ui16LookupTable(double(ui8LookupTableIndex)+1),mod(bitshift(ui16RetCRC16,8),65536)); end crc=dec2hex(ui16RetCRC16); endfunction codec2-1.2.0/octave/diff_fft_mag.m000066400000000000000000000014531445607075400167220ustar00rootroot00000000000000% Compare the magnitude spectrum of two int16 raw files function diff_fft_mag(filename1, filename2, threshdB = -40, ignore=1000) % load samples and ignore any start up transients s1 = load_raw(filename1)'; s1 = s1(ignore:end); s2 = load_raw(filename2)'; s2 = s2(ignore:end); len = min([length(s1) length(s2)]); s1 = s1(1:len); s2 = s2(1:len); S1 = abs(fft(s1.*hanning(length(s1))')); S2 = abs(fft(s2.*hanning(length(s2))')); figure(1): clf; plot(20*log10(S1)); hold on; plot(20*log10(S2)); plot(20*log10(abs(S1-S2)),'r'); hold off; error = S1 - S2; error_energy = error*error'; ratio = error_energy/(S1*S1'); ratio_dB = 10*log10(ratio); printf("ratio_dB: %4.2f\n", ratio_dB); if ratio_dB < threshdB printf('PASS\n'); else printf('FAIL\n'); end endfunction codec2-1.2.0/octave/doppler_spread.m000066400000000000000000000020431445607075400173260ustar00rootroot00000000000000% doppler_spread.m % David Rowe Jan 2016 % % Returns gausssian filtered doppler spreading function samples for HF channel % modelling. Used PathSim technical guide as a reference - thanks Moe! function [spread_FsHz states] = doppler_spread(dopplerSpreadHz, FsHz, Nsam) % start with low Fs so we can work with a reasonable filter length sigma = dopplerSpreadHz/2; lowFs = ceil(10*dopplerSpreadHz); Ntaps = 100; Nsam_low = ceil(Nsam*lowFs/FsHz + Ntaps); % fill filter memory % generate gaussian freq response and design filter x = 0:lowFs/100:lowFs/2; y = (1/(sigma*sqrt(2*pi)))*exp(-(x.^2)/(2*sigma*sigma)); b = fir2(Ntaps-1, x/(lowFs/2), y); % generate the spreading samples spread_lowFs = filter(b,1,randn(1,Nsam_low) + j*randn(1,Nsam_low)); % resample to FsHz, scaling for desired spreadFreqHz spread_FsHz = resample(spread_lowFs(Ntaps+1:Nsam_low), FsHz, lowFs); assert(length(spread_FsHz) >= Nsam); % return some states for optional unit testing states.x = x; states.y = y; states.b = b; endfunction codec2-1.2.0/octave/esno_est.m000066400000000000000000000113751445607075400161520ustar00rootroot00000000000000% esno_est.m % David Rowe Mar 2017 % % Functions for estimating Es/No from QPSK symbols, and supporting tests 1; #{ ---------------------------------------------------------------------------- Estimate the energy and noise of received symbols. Signal power is distance from axis on complex plane. Noise power is the distance orthogonal to each symbol, to provide an estimate that is insensitive to fading that moves symbol towards he origin. For QAM we need to use pilots as they don't have modulation that affects estimate, for QPSK Modes we can use all rx symbols. ---------------------------------------------------------------------------- #} function EsNodB = esno_est_calc(rx_syms) sig_var = sum(abs(rx_syms) .^ 2)/length(rx_syms); sig_rms = sqrt(sig_var); sum_x = 0; sum_xx = 0; n = 0; for i=1:length(rx_syms) s = rx_syms(i); % only consider symbols a reasonable distance from the origin, as these are % more likely to be valid and not errors that will mess up the estimate if abs(s) > sig_rms % rough demodulation, determine if symbol is on real or imag axis if abs(real(s)) > abs(imag(s)) % assume noise is orthogonal to real axis sum_x += imag(s); sum_xx += imag(s)*imag(s); else % assume noise is orthogonal to imag axis sum_x += real(s); sum_xx += real(s)*real(s); end n++; end end % trap corner case if n > 1 noise_var = (n*sum_xx - sum_x*sum_x)/(n*(n-1)); else noise_var = sig_var; end % Total noise power is twice estimate of single-axis noise. noise_var = 2*noise_var; EsNodB = 10*log10(sig_var/noise_var); endfunction #{ Plot curves of Es/No estimator in action. Plots indicate it works OK down to Es/No=3dB, where it is 1dB high. That's acceptable as Es/No=3dB is the lower limit of our operation (ie Eb/No=0dB, 10% raw BER). #} function [EsNo_est rx_symbols] = esno_est_curves(EsNodB=0:20, channel="awgn", plot_en=1) Nsym=1000; rand('seed',1); randn('seed',1); tx_symbols = 2*(rand(1,Nsym) > 0.5) -1 + j*(2*(rand(1,Nsym) > 0.5) - 1); tx_symbols *= exp(-j*pi/4)/sqrt(2); if strcmp(channel,"mpp") % for fading we assume perfect phase recovery, so just multiply by mag spread = doppler_spread(2.0, 50, length(tx_symbols)); tx_symbols = tx_symbols .* abs(spread); % normalise power over the multipath channel run S = tx_symbols*tx_symbols'; tx_symbols *= sqrt(Nsym/S); end for i = 1:length(EsNodB) aEsNodB = EsNodB(i); EsNo = 10 .^ (aEsNodB/10); N = 1/EsNo; noise = sqrt(N/2)*randn(1,Nsym) + sqrt(N/2)*j*randn(1,Nsym); S = tx_symbols*tx_symbols'; N = noise*noise'; EsNo_meas(i) = 10*log10(S/N); rx_symbols = tx_symbols + noise; EsNo_est(i) = esno_est_calc(rx_symbols); printf("EsNo: %5.2f EsNo_meas: %5.2f EsNo_est: %5.2f\n", aEsNodB, EsNo_meas(i), EsNo_est(i)); end if plot_en figure(1); plot(EsNodB, EsNo_meas, '+-;EsNo meas;'); hold on; plot(EsNodB, EsNo_est, 'o-;EsNo est;'); hold off; axis([0 max(EsNodB) 0 max(EsNodB)]); grid; figure(2); plot(tx_symbols,'+'); end endfunction function esno_est_test(channel="awgn") test_point_dB = 5; [EsNo_est_awgn rx_syms] = esno_est_curves(test_point_dB, channel, plot_en=0); if abs(EsNo_est_awgn - test_point_dB) < 1.0 printf("%s Pass\n",toupper(channel)); else printf("%s Fail\n",toupper(channel)); end endfunction function esno_est_tests_octave esno_est_test("awgn"); esno_est_test("mpp"); endfunction function esno_est_test_c(channel="awgn") test_point_dB = 5; [EsNo_est rx_syms] = esno_est_curves(test_point_dB, channel, plot_en=0); rx_syms_float = zeros(1,2*length(rx_syms)); rx_syms_float(1:2:end) = real(rx_syms); rx_syms_float(2:2:end) = imag(rx_syms); f = fopen("esno_est.iqfloat","wb"); fwrite(f, rx_syms_float, "float"); fclose(f); printf("\nRunning C version....\n"); path_to_unittest = "../build_linux/unittest" if getenv("PATH_TO_UNITEST") path_to_unittest = getenv("PATH_TO_UNITEST") printf("setting path from env var to %s\n", path_to_unittest); end system(sprintf("%s/tesno_est %s %d > tesno_est_out.txt", path_to_unittest, "esno_est.iqfloat", length(rx_syms))); load tesno_est_out.txt; printf("test_point: %5.2f Octave: %5.2f C: %5.2f\n", test_point_dB, EsNo_est, tesno_est_out); if abs(EsNo_est - tesno_est_out) < 0.5 printf("%s Pass\n",toupper(channel)); else printf("%s Fail\n",toupper(channel)); end endfunction function esno_est_tests_c esno_est_test_c("awgn"); esno_est_test_c("mpp"); endfunction codec2-1.2.0/octave/fdmdv.m000066400000000000000000000655621445607075400154420ustar00rootroot00000000000000% fdmdv.m % % Functions that implement a Frequency Division Multiplexed Modem for % Digital Voice (FDMDV) over HF channels. % % Copyright David Rowe 2012 % This program is distributed under the terms of the GNU General Public License % Version 2 % fdmdv_common; % reqd to make sure we get same random bits at mod and demod rand('state',1); randn('state',1); % Functions ---------------------------------------------------- function f = fdmdv_init(Nc=14) Fs = f.Fs = 8000; % sample rate in Hz T = f.T = 1/Fs; % sample period in seconds Rs = f.Rs = 50; % symbol rate in Hz f.Nc = Nc; Nb = f.Nb = 2; % Bits/symbol for PSK modulation Rb = f.Rb = Nc*Rs*Nb; % bit rate M = f.M = Fs/Rs; % oversampling factor Nsym = f.Nsym = 6; % number of symbols to filter over Fsep = f.Fsep = 75; % Separation between carriers (Hz) Fcenter = f.Fcentre = 1500; % Centre frequency, Nc/2 carriers below this, % Nc/2 carriers above (Hz) Nt = f.Nt = 5; % number of symbols we estimate timing over P = f.P = 4; % oversample factor used for rx symbol filtering Nfilter = f.Nfilter = Nsym*M; Nfiltertiming = f.Nfiltertiming = M+Nfilter+M; Nsync_mem = f.Nsync_mem = 6; f.sync_uw = [1 -1 1 -1 1 -1]; alpha = 0.5; f.gt_alpha5_root = gen_rn_coeffs(alpha, T, Rs, Nsym, M); f.pilot_bit = 0; % current value of pilot bit f.tx_filter_memory = zeros(Nc+1, Nfilter); f.rx_filter_memory = zeros(Nc+1, Nfilter); f.Nrx_fdm_mem = Nfilter+M+M/P; f.rx_fdm_mem = zeros(1,f.Nrx_fdm_mem); f.snr_coeff = 0.9; % SNR est averaging filter coeff % phasors used for up and down converters f.freq = zeros(Nc+1,1); f.freq_pol = zeros(Nc+1,1); for c=1:Nc/2 carrier_freq = (-Nc/2 - 1 + c)*Fsep; f.freq_pol(c) = 2*pi*carrier_freq/Fs; f.freq(c) = exp(j*f.freq_pol(c)); end for c=floor(Nc/2)+1:Nc carrier_freq = (-Nc/2 + c)*Fsep; f.freq_pol(c) = 2*pi*carrier_freq/Fs; f.freq(c) = exp(j*f.freq_pol(c)); end f.freq_pol(Nc+1) = 2*pi*0/Fs; f.freq(Nc+1) = exp(j*f.freq_pol(Nc+1)); f.fbb_rect = exp(j*2*pi*f.Fcentre/Fs); f.fbb_phase_tx = 1; f.fbb_phase_rx = 1; % Spread initial FDM carrier phase out as far as possible. This % helped PAPR for a few dB. We don't need to adjust rx phase as DQPSK % takes care of that. f.phase_tx = ones(Nc+1,1); f.phase_tx = exp(j*2*pi*(0:Nc)/(Nc+1)); f.phase_rx = ones(Nc+1,1); % decimation filter f.Nrxdec = 31; % fir1() output appears to have changed from when coeffs used in C port were used %f.rxdec_coeff = fir1(f.Nrxdec-1, 0.25); f.rxdec_coeff = [-0.00125472 -0.00204605 -0.0019897 0.000163906 0.00490937 0.00986375 ... 0.0096718 -0.000480351 -0.019311 -0.0361822 -0.0341251 0.000827866 ... 0.0690577 0.152812 0.222115 0.249004 0.222115 0.152812 ... 0.0690577 0.000827866 -0.0341251 -0.0361822 -0.019311 -0.000480351 ... 0.0096718 0.00986375 0.00490937 0.000163906 -0.0019897 -0.00204605 ... -0.00125472]; % we need room for Nrdec + the max nin, as we may need to filter max_min samples f.Nrxdecmem = f.Nrxdec+M+M/P; f.rxdec_lpf_mem = zeros(1,f.Nrxdecmem); f.Q=M/4; % freq offset estimation f.Mpilotfft = 256; f.Npilotcoeff = 30; % here's how to make this filter from scratch, however it appeared to change over different % octave versions so have hard coded to version used for C port %f.pilot_coeff = fir1(f.Npilotcoeff-1, 200/(Fs/2))'; % 200Hz LPF f.pilot_coeff = [0.00223001 0.00301037 0.00471258 0.0075934 0.0118145 0.0174153 ... 0.0242969 0.0322204 0.0408199 0.0496286 0.0581172 0.0657392 ... 0.0719806 0.0764066 0.0787022 0.0787022 0.0764066 0.0719806 ... 0.0657392 0.0581172 0.0496286 0.0408199 0.0322204 0.0242969 ... 0.0174153 0.0118145 0.0075934 0.00471258 0.00301037 0.00223001]; f.Npilotbaseband = f.Npilotcoeff + M + M/P; % number of pilot baseband samples f.Npilotlpf = 4*M; % reqd for pilot LPF % number of symbols we DFT pilot over % pilot est window % pilot LUT, used for copy of pilot at rx f.pilot_lut = generate_pilot_lut(f); f.pilot_lut_index = 1; f.prev_pilot_lut_index = 3*M+1; % Freq offset estimator states f.pilot_baseband1 = zeros(1, f.Npilotbaseband); % pilot baseband samples f.pilot_baseband2 = zeros(1, f.Npilotbaseband); % pilot baseband samples f.pilot_lpf1 = zeros(1, f.Npilotlpf); % LPF pilot samples f.pilot_lpf2 = zeros(1, f.Npilotlpf); % LPF pilot samples % Timing estimator states f.rx_filter_mem_timing = zeros(Nc+1, Nt*P); f.rx_baseband_mem_timing = zeros(Nc+1, f.Nfiltertiming); % Test bit stream state variables f = init_test_bits(f); endfunction % generate Nc+1 PSK symbols from vector of (1,Nc*Nb) input bits. The % Nc+1 symbol is the +1 -1 +1 .... BPSK sync carrier function [tx_symbols f] = bits_to_psk(f, prev_tx_symbols, tx_bits) Nc = f.Nc; Nb = f.Nb; m4_gray_to_binary = [ bin2dec("00") bin2dec("01") bin2dec("11") bin2dec("10") ]; m8_gray_to_binary = [ bin2dec("000") bin2dec("001") bin2dec("011") bin2dec("010") bin2dec("111") bin2dec("110") bin2dec("100") bin2dec("101") ]; assert(length(tx_bits) == Nc*Nb, "Incorrect number of bits"); m = 2 .^ Nb; assert((m == 4) || (m == 8)); for c=1:Nc % extract bits for this symbol bits_binary = tx_bits((c-1)*Nb+1:c*Nb); bits_decimal = sum(bits_binary .* 2.^(Nb-1:-1:0)); % determine phase shift using gray code mapping if m == 4 phase_shift = (2*pi/m)*m4_gray_to_binary(bits_decimal+1); else phase_shift = (2*pi/m)*m8_gray_to_binary(bits_decimal+1); end % apply phase shift from previous symbol tx_symbols(c) = exp(j*phase_shift) * prev_tx_symbols(c); end % +1 -1 +1 -1 BPSK sync carrier, once filtered becomes two spectral % lines at +/- Rs/2 if f.pilot_bit tx_symbols(Nc+1) = -prev_tx_symbols(Nc+1); else tx_symbols(Nc+1) = prev_tx_symbols(Nc+1); end if f.pilot_bit f.pilot_bit = 0; else f.pilot_bit = 1; end endfunction % LP filter +/- 1000 Hz, allows us to perform rx filtering at a lower rate saving CPU function [rx_fdm_filter fdmdv] = rxdec_filter(fdmdv, rx_fdm, nin) M = fdmdv.M; Nrxdecmem = fdmdv.Nrxdecmem; Nrxdec = fdmdv.Nrxdec; rxdec_coeff = fdmdv.rxdec_coeff; rxdec_lpf_mem = fdmdv.rxdec_lpf_mem; % place latest nin samples at end of buffer rxdec_lpf_mem(1:Nrxdecmem-nin) = rxdec_lpf_mem(nin+1:Nrxdecmem); rxdec_lpf_mem(Nrxdecmem-nin+1:Nrxdecmem) = rx_fdm(1:nin); % init room for nin output samples rx_fdm_filter = zeros(1,nin); % Move starting point for filter dot product to filter newest samples % in buffer. This stuff makes my head hurt. st = Nrxdecmem - nin - Nrxdec + 1; for i=1:nin a = st+1; b = st+i+Nrxdec-1; %printf("nin: %d i: %d a: %d b: %d\n", nin, i, a, b); rx_fdm_filter(i) = rxdec_lpf_mem(st+i:st+i+Nrxdec-1) * rxdec_coeff'; end fdmdv.rxdec_lpf_mem = rxdec_lpf_mem; end % Combined down convert and rx filter, more memory efficient but less intuitive design % TODO: Decimate mem update and downconversion, this will save some more CPU and memory % note phase would have to advance 4 times as fast function [rx_filt fdmdv] = down_convert_and_rx_filter(fdmdv, rx_fdm, nin, dec_rate) Nc = fdmdv.Nc; M = fdmdv.M; P = fdmdv.P; rx_fdm_mem = fdmdv.rx_fdm_mem; Nrx_fdm_mem = fdmdv.Nrx_fdm_mem; phase_rx = fdmdv.phase_rx; freq = fdmdv.freq; freq_pol = fdmdv.freq_pol; Nfilter = fdmdv.Nfilter; gt_alpha5_root = fdmdv.gt_alpha5_root; Q = fdmdv.Q; % update memory of rx_fdm_mem, newest nin sample ast end of buffer rx_fdm_mem(1:Nrx_fdm_mem-nin) = rx_fdm_mem(nin+1:Nrx_fdm_mem); rx_fdm_mem(Nrx_fdm_mem-nin+1:Nrx_fdm_mem) = rx_fdm(1:nin); for c=1:Nc+1 #{ So we have rx_fdm_mem, a baseband array of samples at rate Fs Hz, including the last nin samples at the end. To filter each symbol we require the baseband samples for all Nsym symbols that we filter over. So we need to downconvert the entire rx_fdm_mem array. To downconvert these we need the LO phase referenced to the start of the rx_fdm_mem array. <--------------- Nrx_filt_mem -------> nin |--------------------------|---------| 1 | phase_rx(c) This means winding phase(c) back from this point to ensure phase continuity. #} wind_back_phase = -freq_pol(c)*(Nfilter); phase_rx(c) = phase_rx(c)*exp(j*wind_back_phase); % down convert all samples in buffer rx_baseband = zeros(1,Nrx_fdm_mem); st = Nrx_fdm_mem; % end of buffer st -= nin-1; % first new sample st -= Nfilter; % first sample used in filtering %printf("Nfilter: %d Nrx_fdm_mem: %d dec_rate: %d nin: %d st: %d\n", % Nfilter, Nrx_fdm_mem, dec_rate, nin, st); f_rect = freq(c) .^ dec_rate; for i=st:dec_rate:Nrx_fdm_mem phase_rx(c) = phase_rx(c) * f_rect; rx_baseband(i) = rx_fdm_mem(i)*phase_rx(c)'; end % now we can filter this carrier's P (+/-1) symbols. Due to % filtering of rx_fdm we can filter at rate at rate M/Q N=M/P; k = 1; for i=1:N:nin rx_filt(c,k) = (M/Q)*rx_baseband(st+i-1:dec_rate:st+i-1+Nfilter-1) * gt_alpha5_root(1:dec_rate:length(gt_alpha5_root))'; k+=1; end end fdmdv.phase_rx = phase_rx; fdmdv.rx_fdm_mem = rx_fdm_mem; endfunction % LPF and peak pick part of freq est, put in a function as we call it twice function [foff imax pilot_lpf_out S] = lpf_peak_pick(f, pilot_baseband, pilot_lpf, nin, do_fft) M = f.M; Npilotlpf = f.Npilotlpf; Npilotbaseband = f.Npilotbaseband; Npilotcoeff = f.Npilotcoeff; Fs = f.Fs; Mpilotfft = f.Mpilotfft; pilot_coeff = f.pilot_coeff; % LPF cutoff 200Hz, so we can handle max +/- 200 Hz freq offset pilot_lpf(1:Npilotlpf-nin) = pilot_lpf(nin+1:Npilotlpf); k = Npilotbaseband-nin+1;; for i = Npilotlpf-nin+1:Npilotlpf pilot_lpf(i) = pilot_baseband(k-Npilotcoeff+1:k) * pilot_coeff'; k++; end imax = 0; foff = 0; S = zeros(1, Mpilotfft); if do_fft % decimate to improve DFT resolution, window and DFT Mpilot = Fs/(2*200); % calc decimation rate given new sample rate is twice LPF freq h = hanning(Npilotlpf); s = pilot_lpf(1:Mpilot:Npilotlpf) .* h(1:Mpilot:Npilotlpf)'; s = [s zeros(1,Mpilotfft-Npilotlpf/Mpilot)]; S = fft(s, Mpilotfft); % peak pick and convert to Hz [imax ix] = max(abs(S)); r = 2*200/Mpilotfft; % maps FFT bin to frequency in Hz if ix > Mpilotfft/2 foff = (ix - Mpilotfft - 1)*r; else foff = (ix - 1)*r; endif end pilot_lpf_out = pilot_lpf; endfunction % Estimate frequency offset of FDM signal using BPSK pilot. This is quite % sensitive to pilot tone level wrt other carriers function [foff S1 S2 f] = rx_est_freq_offset(f, rx_fdm, pilot, pilot_prev, nin, do_fft) M = f.M; Npilotbaseband = f.Npilotbaseband; pilot_baseband1 = f.pilot_baseband1; pilot_baseband2 = f.pilot_baseband2; pilot_lpf1 = f.pilot_lpf1; pilot_lpf2 = f.pilot_lpf2; % down convert latest nin samples of pilot by multiplying by ideal % BPSK pilot signal we have generated locally. The peak of the DFT % of the resulting signal is sensitive to the time shift between the % received and local version of the pilot, so we do it twice at % different time shifts and choose the maximum. pilot_baseband1(1:Npilotbaseband-nin) = pilot_baseband1(nin+1:Npilotbaseband); pilot_baseband2(1:Npilotbaseband-nin) = pilot_baseband2(nin+1:Npilotbaseband); for i=1:nin pilot_baseband1(Npilotbaseband-nin+i) = rx_fdm(i) * conj(pilot(i)); pilot_baseband2(Npilotbaseband-nin+i) = rx_fdm(i) * conj(pilot_prev(i)); end [foff1 max1 pilot_lpf1 S1] = lpf_peak_pick(f, pilot_baseband1, pilot_lpf1, nin, do_fft); [foff2 max2 pilot_lpf2 S2] = lpf_peak_pick(f, pilot_baseband2, pilot_lpf2, nin, do_fft); if max1 > max2 foff = foff1; else foff = foff2; end f.pilot_baseband1 = pilot_baseband1; f.pilot_baseband2 = pilot_baseband2; f.pilot_lpf1 = pilot_lpf1; f.pilot_lpf2 = pilot_lpf2; endfunction % Experimental "feed forward" phase estimation function - estimates % phase over a windows of Nph (e.g. Nph = 9) symbols. May not work % well on HF channels but lets see. Has a phase ambiguity of m(pi/4) % where m=0,1,2 which needs to be corrected outside of this function function [phase_offsets ferr f] = rx_est_phase(f, rx_symbols) global rx_symbols_mem; global prev_phase_offsets; global phase_amb; Nph = f.Nph; Nc = f.Nc; % keep record of Nph symbols rx_symbols_mem(:,1:Nph-1) = rx_symbols_mem(:,2:Nph); rx_symbols_mem(:,Nph) = rx_symbols; % estimate and correct phase offset based of modulation stripped samples phase_offsets = zeros(Nc+1,1); for c=1:Nc+1 % rotate QPSK constellation to a single point mod_stripped = abs(rx_symbols_mem(c,:)) .* exp(j*4*angle(rx_symbols_mem(c,:))); % find average phase offset, which will be on -pi/4 .. pi/4 sum_real = sum(real(mod_stripped)); sum_imag = sum(imag(mod_stripped)); phase_offsets(c) = atan2(sum_imag, sum_real)/4; % determine if phase has jumped from - -> + if (prev_phase_offsets(c) < -pi/8) && (phase_offsets(c) > pi/8) phase_amb(c) -= pi/2; if (phase_amb(c) < -pi) phase_amb(c) += 2*pi; end end % determine if phase has jumped from + -> - if (prev_phase_offsets(c) > pi/8) && (phase_offsets(c) < -pi/8) phase_amb(c) += pi/2; if (phase_amb(c) > pi) phase_amb(c) -= 2*pi; end end end ferr = mean(phase_offsets - prev_phase_offsets); prev_phase_offsets = phase_offsets; endfunction % convert symbols back to an array of bits function [rx_bits sync_bit f_err phase_difference] = psk_to_bits(f, prev_rx_symbols, rx_symbols, modulation) Nc = f.Nc; Nb = f.Nb; m4_binary_to_gray = [ bin2dec("00") bin2dec("01") bin2dec("11") bin2dec("10") ]; m8_binary_to_gray = [ bin2dec("000") bin2dec("001") bin2dec("011") bin2dec("010") bin2dec("110") bin2dec("111") bin2dec("101") bin2dec("100") ]; m = 2 .^ Nb; assert((m == 4) || (m == 8)); phase_difference = zeros(Nc+1,1); for c=1:Nc norm = 1/(1E-6+abs(prev_rx_symbols(c))); phase_difference(c) = rx_symbols(c) .* conj(prev_rx_symbols(c)) * norm; end for c=1:Nc phase_difference(c) *= exp(j*pi/4); if m == 4 % to get a good match between C and Octave during start up use same as C code d = phase_difference(c); if (real(d) >= 0) && (imag(d) >= 0) msb = 0; lsb = 0; end if (real(d) < 0) && (imag(d) >= 0) msb = 0; lsb = 1; end if (real(d) < 0) && (imag(d) < 0) msb = 1; lsb = 1; end if (real(d) >= 0) && (imag(d) < 0) msb = 1; lsb = 0; end rx_bits(2*(c-1)+1) = msb; rx_bits(2*c) = lsb; else % determine index of constellation point received 0,1,...,m-1 index = floor(angle(phase_difference(c))*m/(2*pi) + 0.5); if index < 0 index += m; end % map to decimal version of bits encoded in symbol if m == 4 bits_decimal = m4_binary_to_gray(index+1); else bits_decimal = m8_binary_to_gray(index+1); end % convert back to an array of received bits for i=1:Nb if bitand(bits_decimal, 2.^(Nb-i)) rx_bits((c-1)*Nb+i) = 1; else rx_bits((c-1)*Nb+i) = 0; end end end end assert(length(rx_bits) == Nc*Nb); % Extract DBPSK encoded Sync bit norm = 1/(1E-6+abs(prev_rx_symbols(Nc+1))); phase_difference(Nc+1) = rx_symbols(Nc+1) * conj(prev_rx_symbols(Nc+1)) * norm; if (real(phase_difference(Nc+1)) < 0) sync_bit = 1; f_err = imag(phase_difference(Nc+1))*norm; % make f_err magnitude insensitive else sync_bit = 0; f_err = -imag(phase_difference(Nc+1))*norm; end % extra pi/4 rotation as we need for snr_update and scatter diagram phase_difference(Nc+1) *= exp(j*pi/4); endfunction % given phase differences update estimates of signal and noise levels function [sig_est noise_est] = snr_update(f, sig_est, noise_est, phase_difference) snr_coeff = f.snr_coeff; Nc = f.Nc; % mag of each symbol is distance from origin, this gives us a % vector of mags, one for each carrier. s = abs(phase_difference); % signal mag estimate for each carrier is a smoothed version % of instantaneous magntitude, this gives us a vector of smoothed % mag estimates, one for each carrier. sig_est = snr_coeff*sig_est + (1 - snr_coeff)*s; %printf("s: %f sig_est: %f snr_coeff: %f\n", s(1), sig_est(1), snr_coeff); % noise mag estimate is distance of current symbol from average % location of that symbol. We reflect all symbols into the first % quadrant for convenience. refl_symbols = abs(real(phase_difference)) + j*abs(imag(phase_difference)); n = abs(exp(j*pi/4)*sig_est - refl_symbols); % noise mag estimate for each carrier is a smoothed version of % instantaneous noise mag, this gives us a vector of smoothed % noise power estimates, one for each carrier. noise_est = snr_coeff*noise_est + (1 - snr_coeff)*n; endfunction % calculate current sig estimate for eeach carrier function snr_dB = calc_snr(f, sig_est, noise_est) Rs = f.Rs; % find total signal power by summing power in all carriers S = sum(sig_est .^2); SdB = 10*log10(S); % Average noise mag across all carriers and square to get an average % noise power. This is an estimate of the noise power in Rs = 50Hz of % BW (note for raised root cosine filters Rs is the noise BW of the % filter) N50 = mean(noise_est).^2; N50dB = 10*log10(N50); % Now multiply by (3000 Hz)/(50 Hz) to find the total noise power in % 3000 Hz N3000dB = N50dB + 10*log10(3000/Rs); snr_dB = SdB - N3000dB; endfunction % sets up test bits system. make sure rand('state', 1) has just been called % so we generate the right test_bits pattern! function f = init_test_bits(f) f.Ntest_bits = f.Nc*f.Nb*4; % length of test sequence f.test_bits = rand(1,f.Ntest_bits) > 0.5; % test pattern of bits f.current_test_bit = 1; f.rx_test_bits_mem = zeros(1,f.Ntest_bits); endfunction % returns nbits from a repeating sequence of random data function [bits f] = get_test_bits(f, nbits) for i=1:nbits bits(i) = f.test_bits(f.current_test_bit++); if (f.current_test_bit > f.Ntest_bits) f.current_test_bit = 1; endif end endfunction % Accepts nbits from rx and attempts to sync with test_bits sequence. % if sync OK measures bit errors function [sync bit_errors error_pattern f] = put_test_bits(f, rx_bits) Ntest_bits = f.Ntest_bits; % Append to our memory [m n] = size(rx_bits); f.rx_test_bits_mem(1:f.Ntest_bits-n) = f.rx_test_bits_mem(n+1:f.Ntest_bits); f.rx_test_bits_mem(f.Ntest_bits-n+1:f.Ntest_bits) = rx_bits; % see how many bit errors we get when checked against test sequence error_pattern = xor(f.test_bits, f.rx_test_bits_mem); bit_errors = sum(error_pattern); % if less than a thresh we are aligned and in sync with test sequence ber = bit_errors/f.Ntest_bits; sync = 0; if (ber < 0.2) sync = 1; endif endfunction % Generate M samples of DBPSK pilot signal for Freq offset estimation function [pilot_fdm bit symbol filter_mem phase] = generate_pilot_fdm(f, bit, symbol, filter_mem, phase, freq) M = f.M; Nfilter = f.Nfilter; gt_alpha5_root = f.gt_alpha5_root; % +1 -1 +1 -1 DBPSK sync carrier, once filtered becomes two spectral % lines at +/- Rs/2 if bit symbol = -symbol; else symbol = symbol; end if bit bit = 0; else bit = 1; end % filter DPSK symbol to create M baseband samples filter_mem(Nfilter) = (sqrt(2)/2)*symbol; for i=1:M tx_baseband(i) = M*filter_mem(M:M:Nfilter) * gt_alpha5_root(M-i+1:M:Nfilter)'; end filter_mem(1:Nfilter-M) = filter_mem(M+1:Nfilter); filter_mem(Nfilter-M+1:Nfilter) = zeros(1,M); % upconvert for i=1:M phase = phase * freq; pilot_fdm(i) = sqrt(2)*2*tx_baseband(i)*phase; end endfunction % Generate a 4M sample vector of DBPSK pilot signal. As the pilot signal % is periodic in 4M samples we can then use this vector as a look up table % for pilot signal generation in the demod. function pilot_lut = generate_pilot_lut(f) Nc = f.Nc; Nfilter = f.Nfilter; M = f.M; freq = f.freq; % pilot states pilot_rx_bit = 0; pilot_symbol = sqrt(2); pilot_freq = freq(Nc+1); pilot_phase = 1; pilot_filter_mem = zeros(1, Nfilter); %prev_pilot = zeros(M,1); pilot_lut = []; F=8; for fr=1:F [pilot pilot_rx_bit pilot_symbol pilot_filter_mem pilot_phase] = generate_pilot_fdm(f, pilot_rx_bit, pilot_symbol, pilot_filter_mem, pilot_phase, pilot_freq); %prev_pilot = pilot; pilot_lut = [pilot_lut pilot]; end % discard first 4 symbols as filter memory is filling, just keep last % four symbols pilot_lut = pilot_lut(4*M+1:M*F); endfunction % grab next pilot samples for freq offset estimation at demod function [pilot prev_pilot pilot_lut_index prev_pilot_lut_index] = get_pilot(f, pilot_lut_index, prev_pilot_lut_index, nin) M = f.M; pilot_lut = f.pilot_lut; for i=1:nin pilot(i) = pilot_lut(pilot_lut_index); pilot_lut_index++; if pilot_lut_index > 4*M pilot_lut_index = 1; end prev_pilot(i) = pilot_lut(prev_pilot_lut_index); prev_pilot_lut_index++; if prev_pilot_lut_index > 4*M prev_pilot_lut_index = 1; end end endfunction % freq offset state machine. Moves between acquire and track states based % on BPSK pilot sequence. Freq offset estimator occasionally makes mistakes % when used continuously. So we use it until we have acquired the BPSK pilot, % then switch to a more robust tracking algorithm. If we lose sync we switch % back to acquire mode for fast-requisition. function [sync reliable_sync_bit state timer sync_mem] = freq_state(f, sync_bit, state, timer, sync_mem) Nsync_mem = f.Nsync_mem; sync_uw = f.sync_uw; % look for 6 symbol (120ms) 010101 of sync sequence unique_word = 0; for i=1:Nsync_mem-1 sync_mem(i) = sync_mem(i+1); end sync_mem(Nsync_mem) = 1 - 2*sync_bit; corr = 0; for i=1:Nsync_mem corr += sync_mem(i)*sync_uw(i); end if abs(corr) == Nsync_mem unique_word = 1; end reliable_sync_bit = (corr == Nsync_mem); % iterate state machine next_state = state; if state == 0 if unique_word next_state = 1; timer = 0; end end if state == 1 if unique_word timer++; if timer == 25 % sync has been good for 500ms next_state = 2; end else next_state = 0; end end if state == 2 % good sync state if unique_word == 0 timer = 0; next_state = 3; end end if state == 3 % tentative bad state, but could be a fade if unique_word next_state = 2; else timer++; if timer == 50 % wait for 1000ms in case sync comes back next_state = 0; end end end %printf("corr: % -d state: %d next_state: %d uw: %d timer: %d\n", corr, state, next_state, unique_word, timer); state = next_state; if state sync = 1; else sync = 0; end endfunction % Save test bits to a text file in the form of a C array function test_bits_file(filename) global test_bits; global Ntest_bits; f=fopen(filename,"wt"); fprintf(f,"/* Generated by test_bits_file() Octave function */\n\n"); fprintf(f,"const int test_bits[]={\n"); for m=1:Ntest_bits-1 fprintf(f," %d,\n",test_bits(m)); endfor fprintf(f," %d\n};\n",test_bits(Ntest_bits)); fclose(f); endfunction % Saves RN filter coeffs to a text file in the form of a C array function rn_file(gt_alpha5_root, filename) Nfilter = length(gt_alpha5_root); f=fopen(filename,"wt"); fprintf(f,"/* Generated by rn_file() Octave function */\n\n"); fprintf(f,"const float gt_alpha5_root[]={\n"); for m=1:Nfilter-1 fprintf(f," %g,\n",gt_alpha5_root(m)); endfor fprintf(f," %g\n};\n",gt_alpha5_root(Nfilter)); fclose(f); endfunction % Saves rx decimation filter coeffs to a text file in the form of a C array function rxdec_file(fdmdv, filename) rxdec_coeff = fdmdv.rxdec_coeff; Nrxdec = fdmdv.Nrxdec; f=fopen(filename,"wt"); fprintf(f,"/* Generated by rxdec_file() Octave function */\n\n"); fprintf(f,"const float rxdec_coeff[]={\n"); for m=1:Nrxdec-1 fprintf(f," %g,\n",rxdec_coeff(m)); endfor fprintf(f," %g\n};\n",rxdec_coeff(Nrxdec)); fclose(f); endfunction function pilot_coeff_file(fdmdv, filename) pilot_coeff = fdmdv.pilot_coeff; Npilotcoeff = fdmdv.Npilotcoeff; f=fopen(filename,"wt"); fprintf(f,"/* Generated by pilot_coeff_file() Octave function */\n\n"); fprintf(f,"const float pilot_coeff[]={\n"); for m=1:Npilotcoeff-1 fprintf(f," %g,\n",pilot_coeff(m)); endfor fprintf(f," %g\n};\n",pilot_coeff(Npilotcoeff)); fclose(f); endfunction % Saves hanning window coeffs to a text file in the form of a C array function hanning_file(fdmdv, filename) Npilotlpf = fdmdv.Npilotlpf; h = hanning(Npilotlpf); f=fopen(filename,"wt"); fprintf(f,"/* Generated by hanning_file() Octave function */\n\n"); fprintf(f,"const float hanning[]={\n"); for m=1:Npilotlpf-1 fprintf(f," %g,\n", h(m)); endfor fprintf(f," %g\n};\n", h(Npilotlpf)); fclose(f); endfunction function png_file(fig, pngfilename) figure(fig); pngname = sprintf("%s.png",pngfilename); print(pngname, '-dpng', "-S500,500") pngname = sprintf("%s_large.png",pngfilename); print(pngname, '-dpng', "-S800,600") endfunction % dump rx_bits in hex function dump_bits(rx_bits) % pack into bytes, MSB first packed = zeros(1,floor(length(rx_bits)+7)/8); bit = 7; byte = 1; for i=1:length(rx_bits) packed(byte) = bitor(packed(byte), bitshift(rx_bits(i),bit)); bit--; if (bit < 0) bit = 7; byte++; end end for i=1:length(packed) printf("0x%02x ", packed(i)); end printf("\n"); endfunction codec2-1.2.0/octave/fdmdv_common.m000066400000000000000000000133641445607075400170030ustar00rootroot00000000000000% fdmdv_common.m % % Functions that implement a Frequency Division Multiplexed Modem functions % 1; % Given Nc symbols construct M samples (1 symbol) of Nc filtered % symbols streams function [tx_baseband fdmdv] = tx_filter(fdmdv, tx_symbols) Nc = fdmdv.Nc; M = fdmdv.M; tx_filter_memory = fdmdv.tx_filter_memory; Nfilter = fdmdv.Nfilter; gt_alpha5_root = fdmdv.gt_alpha5_root; tx_baseband = zeros(Nc+1,M); % tx filter each symbol, generate M filtered output samples for each symbol. % Efficient polyphase filter techniques used as tx_filter_memory is sparse tx_filter_memory(:,Nfilter) = sqrt(2)/2*tx_symbols; for i=1:M tx_baseband(:,i) = M*tx_filter_memory(:,M:M:Nfilter) * gt_alpha5_root(M-i+1:M:Nfilter)'; end tx_filter_memory(:,1:Nfilter-M) = tx_filter_memory(:,M+1:Nfilter); tx_filter_memory(:,Nfilter-M+1:Nfilter) = zeros(Nc+1,M); fdmdv.tx_filter_memory = tx_filter_memory; endfunction % Construct FDM signal by frequency shifting each filtered symbol % stream. Returns complex signal so we can apply frequency offsets % easily. function [tx_fdm fdmdv] = fdm_upconvert(fdmdv, tx_filt) Fs = fdmdv.Fs; M = fdmdv.M; Nc = fdmdv.Nc; Fsep = fdmdv.Fsep; phase_tx = fdmdv.phase_tx; freq = fdmdv.freq; fbb_rect = fdmdv.fbb_rect; fbb_phase_tx = fdmdv.fbb_phase_tx; tx_fdm = zeros(1,M); % Nc+1 tones for c=1:Nc+1 for i=1:M phase_tx(c) = phase_tx(c) * freq(c); tx_fdm(i) = tx_fdm(i) + tx_filt(c,i)*phase_tx(c); end end % shift up to carrier freq for i=1:M fbb_phase_tx *= fbb_rect; tx_fdm(i) = tx_fdm(i) * fbb_phase_tx; end % Scale such that total Carrier power C of real(tx_fdm) = Nc. This % excludes the power of the pilot tone. % We return the complex (single sided) signal to make frequency % shifting for the purpose of testing easier tx_fdm = 2*tx_fdm; % normalise digital oscillators as the magnitude can drift over time for c=1:Nc+1 mag = abs(phase_tx(c)); phase_tx(c) /= mag; end mag = abs(fbb_phase_tx); fbb_phase_tx /= mag; fdmdv.fbb_phase_tx = fbb_phase_tx; fdmdv.phase_tx = phase_tx; endfunction % complex freq shifting helper function function [out phase] = freq_shift(in, freqHz, Fs, phase) freq_rect = exp(j*2*pi*freqHz/Fs); out = zeros(1, length(in)); for r=1:length(in) phase *= freq_rect; out(r) = in(r)*phase; end mag = abs(phase); phase /= mag; endfunction % Frequency shift each modem carrier down to Nc+1 baseband signals function [rx_baseband fdmdv] = fdm_downconvert(fdmdv, rx_fdm, nin) Fs = fdmdv.Fs; M = fdmdv.M; Nc = fdmdv.Nc; phase_rx = fdmdv.phase_rx; freq = fdmdv.freq; rx_baseband = zeros(Nc+1,nin); for c=1:Nc+1 for i=1:nin phase_rx(c) = phase_rx(c) * freq(c); rx_baseband(c,i) = rx_fdm(i)*phase_rx(c)'; end end for c=1:Nc+1 mag = abs(phase_rx(c)); phase_rx(c) /= mag; end fdmdv.phase_rx = phase_rx; endfunction % Receive filter each baseband signal at oversample rate P function [rx_filt fdmdv] = rx_filter(fdmdv, rx_baseband, nin) Nc = fdmdv.Nc; M = fdmdv.M; P = fdmdv.P; rx_filter_memory = fdmdv.rx_filter_memory; Nfilter = fdmdv.Nfilter; gt_alpha5_root = fdmdv.gt_alpha5_root; rx_filt = zeros(Nc+1,nin*P/M); % rx filter each symbol, generate P filtered output samples for each symbol. % Note we keep memory at rate M, it's just the filter output at rate P assert(mod(M,P)==0); N=M/P; j=1; for i=1:N:nin rx_filter_memory(:,Nfilter-N+1:Nfilter) = rx_baseband(:,i:i-1+N); rx_filt(:,j) = rx_filter_memory * gt_alpha5_root'; rx_filter_memory(:,1:Nfilter-N) = rx_filter_memory(:,1+N:Nfilter); j+=1; end fdmdv.rx_filter_memory = rx_filter_memory; endfunction % Estimate optimum timing offset, re-filter receive symbols function [rx_symbols rx_timing_M env fdmdv] = rx_est_timing(fdmdv, rx_filt, nin) M = fdmdv.M; Nt = fdmdv.Nt; Nc = fdmdv.Nc; rx_filter_mem_timing = fdmdv.rx_filter_mem_timing; P = fdmdv.P; Nfilter = fdmdv.Nfilter; Nfiltertiming = fdmdv.Nfiltertiming; % nin adjust % -------------------------------- % 120 -1 (one less rate P sample) % 160 0 (nominal) % 200 1 (one more rate P sample) adjust = P - nin*P/M; % update buffer of Nt rate P filtered symbols rx_filter_mem_timing(:,1:(Nt-1)*P+adjust) = rx_filter_mem_timing(:,P+1-adjust:Nt*P); rx_filter_mem_timing(:,(Nt-1)*P+1+adjust:Nt*P) = rx_filt(:,:); % sum envelopes of all carriers env = sum(abs(rx_filter_mem_timing(:,:))); % use all Nc+1 carriers for timing %env = abs(rx_filter_mem_timing(Nc+1,:)); % just use BPSK pilot [n m] = size(env); % The envelope has a frequency component at the symbol rate. The % phase of this frequency component indicates the timing. So work out % single DFT at frequency 2*pi/P x = env * exp(-j*2*pi*(0:m-1)/P)'; norm_rx_timing = angle(x)/(2*pi); rx_timing = norm_rx_timing*P + P/4; if (rx_timing > P) rx_timing -= P; end if (rx_timing < -P) rx_timing += P; end % rx_filter_mem_timing contains Nt*P samples (Nt symbols at rate P), % where Nt is odd. Lets use linear interpolation to resample in the % centre of the timing estimation window rx_timing += floor(Nt/2)*P; low_sample = floor(rx_timing); fract = rx_timing - low_sample; high_sample = ceil(rx_timing); %printf("rx_timing: %f low_sample: %f high_sample: %f fract: %f\n", rx_timing, low_sample, high_sample, fract); rx_symbols = rx_filter_mem_timing(:,low_sample)*(1-fract) + rx_filter_mem_timing(:,high_sample)*fract; % rx_symbols = rx_filter_mem_timing(:,high_sample+1); % This value will be +/- half a symbol so will wrap around at +/- % M/2 or +/- 80 samples with M=160 rx_timing_M = norm_rx_timing*M; fdmdv.rx_filter_mem_timing = rx_filter_mem_timing; endfunction codec2-1.2.0/octave/fdmdv_demod.m000066400000000000000000000227621445607075400166050ustar00rootroot00000000000000% fdmdv_demod.m % % Demodulator function for FDMDV modem (Octave version). Requires % 8kHz sample rate raw files as input % % Copyright David Rowe 2012 % This program is distributed under the terms of the GNU General Public License % Version 2 % function fdmdv_demod(rawfilename, nbits, NumCarriers=14, errorpatternfilename, symbolfilename) pkg load signal; fdmdv; % include modem code f = fdmdv_init(NumCarriers); Nc = f.Nc; Nb = f.Nb; Rs = f.Rs; M = f.M; Fs = f.Fs; Nsync_mem = f.Nsync_mem; test_bits = f.test_bits; Q = f.Q; P = f.P; modulation = 'dqpsk'; fin = fopen(rawfilename, "rb"); gain = 1000; frames = nbits/(Nc*Nb); prev_rx_symbols = ones(Nc+1,1); foff_phase_rect = 1; % BER stats total_bit_errors = 0; total_bits = 0; bit_errors_log = []; sync_log = []; test_frame_sync_log = []; test_frame_sync_state = 0; error_pattern_log = []; % SNR states sig_est = zeros(Nc+1,1); noise_est = zeros(Nc+1,1); % logs of various states for plotting rx_symbols_log = []; rx_timing_log = []; foff_coarse_log = []; foff_log = []; rx_fdm_log = []; snr_est_log = []; % misc states nin = M; % timing correction for sample rate differences foff = 0; fest_state = 0; fest_timer = 0; sync_mem = zeros(1,Nsync_mem); sync = 0; sync_log = []; % spectrum states Nspec=1024; spec_mem=zeros(1,Nspec); SdB = zeros(1,Nspec); % optionally save output symbols if nargin == 5 fm = fopen(symbolfilename,"wb"); dual_rx_symbols = zeros(1, 2*Nc); dual_rx_bits = zeros(1,2*Nc*Nb); end atimer = 0; % Main loop ---------------------------------------------------- for fr=1:frames % obtain nin samples of the test input signal for i=1:nin rx_fdm(i) = fread(fin, 1, "short")/gain; end rx_fdm_log = [rx_fdm_log rx_fdm(1:nin)]; % update spectrum l=length(rx_fdm); spec_mem(1:Nspec-l) = spec_mem(l+1:Nspec); spec_mem(Nspec-l+1:Nspec) = rx_fdm; S=fft(spec_mem.*hanning(Nspec)',Nspec); SdB = 0.9*SdB + 0.1*20*log10(abs(S)); % shift down to complex baseband for i=1:nin f.fbb_phase_rx = f.fbb_phase_rx*f.fbb_rect'; rx_fdm(i) = rx_fdm(i)*f.fbb_phase_rx; end mag = abs(f.fbb_phase_rx); f.fbb_phase_rx /= mag; % frequency offset estimation and correction [pilot prev_pilot f.pilot_lut_index f.prev_pilot_lut_index] = get_pilot(f, f.pilot_lut_index, f.prev_pilot_lut_index, nin); [foff_coarse S1 S2 f] = rx_est_freq_offset(f, rx_fdm, pilot, prev_pilot, nin, !sync ); if sync == 0 foff = foff_coarse; end foff_coarse_log = [foff_coarse_log foff_coarse]; foff_rect = exp(j*2*pi*foff/Fs); for i=1:nin foff_phase_rect *= foff_rect'; rx_fdm_fcorr(i) = rx_fdm(i)*foff_phase_rect; end % baseband processing if 0 % easier to understand, but more memory and CPU hungry filtering and down conversion [rx_baseband f] = fdm_downconvert(f, rx_fdm_fcorr, nin); [rx_filt f] = rx_filter(f, rx_baseband, nin); else % more efficient filtering and down conversion [rx_fdm_filter f] = rxdec_filter(f, rx_fdm_fcorr, nin); [rx_filt f] = down_convert_and_rx_filter(f, rx_fdm_filter, nin, M/Q); end [rx_symbols rx_timing env f] = rx_est_timing(f, rx_filt, nin); rx_timing_log = [rx_timing_log rx_timing]; nin = M; if rx_timing > M/P nin += M/P; end if rx_timing < -M/P; nin -= M/P; end %printf("fr: %d rx_timing: %d nin = %d\n", fr, rx_timing, nin); rx_symbols_log = [rx_symbols_log rx_symbols.*conj(prev_rx_symbols./abs(prev_rx_symbols))*exp(j*pi/4)]; [rx_bits sync_bit f_err pd] = psk_to_bits(f, prev_rx_symbols, rx_symbols, modulation); % optionally save output symbols if (nargin == 5) % this free runs, and is reset by an "entered sync" state if (sync_track == 0) sync_track = 1; else sync_track = 0; end if (track == 1) && (sync_track == 1) dual_rx_symbols(Nc+1:2*Nc) = rx_symbols(1:Nc).*conj(prev_rx_symbols(1:Nc)./abs(prev_rx_symbols(1:Nc))); dual_rx_symbols_float32 = []; k = 1; for i=1:2*Nc dual_rx_symbols_float32(k++) = real(dual_rx_symbols(i)); dual_rx_symbols_float32(k++) = imag(dual_rx_symbols(i)); end fwrite(fm, dual_rx_symbols_float32, "float32"); dual_rx_bits(Nc*Nb+1:2*Nc*Nb) = rx_bits; %dump_bits(dual_rx_bits); else dual_rx_symbols(1:Nc) = rx_symbols(1:Nc).*conj(prev_rx_symbols(1:Nc)./abs(prev_rx_symbols(1:Nc))); dual_rx_bits(1:Nc*Nb) = rx_bits; end end % update some states prev_rx_symbols = rx_symbols; [sig_est noise_est] = snr_update(f, sig_est, noise_est, pd); snr_est = calc_snr(f, sig_est, noise_est); snr_est_log = [snr_est_log snr_est]; foff -= 0.5*f_err; foff_log = [foff_log foff]; % freq est state machine [sync reliable_sync_bit fest_state fest_timer sync_mem] = freq_state(f, sync_bit, fest_state, fest_timer, sync_mem); sync_log = [sync_log sync]; % count bit errors if we find a test frame [test_frame_sync bit_errors error_pattern f] = put_test_bits(f, rx_bits); if (test_frame_sync == 1) if (bit_errors) printf("fr: %d bit_errors: %d\n", fr, bit_errors); end total_bit_errors = total_bit_errors + bit_errors; total_bits = total_bits + f.Ntest_bits; bit_errors_log = [bit_errors_log bit_errors/f.Ntest_bits]; else bit_errors_log = [bit_errors_log 0]; end % test frame sync state machine, just for more informative plots next_test_frame_sync_state = test_frame_sync_state; if (test_frame_sync_state == 0) if (test_frame_sync == 1) next_test_frame_sync_state = 1; test_frame_count = 0; end end if (test_frame_sync_state == 1) % we only expect another test_frame_sync pulse every 4 symbols test_frame_count++; if (test_frame_count == 4) test_frame_count = 0; if ((test_frame_sync == 0)) next_test_frame_sync_state = 0; else error_pattern_log = [error_pattern_log error_pattern]; end end end test_frame_sync_state = next_test_frame_sync_state; test_frame_sync_log = [test_frame_sync_log test_frame_sync_state]; end if nargin == 5 fclose(fm); etfilename = strcat(strtok(symbolfilename,"."),"_et.bin"); fet = fopen(etfilename, "wb"); fwrite(fet, entered_track_log, "short"); fclose(fet); end % --------------------------------------------------------------------- % Print Stats % --------------------------------------------------------------------- % Peak to Average Power Ratio calcs from http://www.dsplog.com papr = max(rx_fdm_log.*conj(rx_fdm_log)) / mean(rx_fdm_log.*conj(rx_fdm_log)); papr_dB = 10*log10(papr); ber = total_bit_errors / total_bits; printf("%d bits %d errors BER: %1.4f PAPR(rx): %1.2f dB\n",total_bits, total_bit_errors, ber, papr_dB); % --------------------------------------------------------------------- % Plots % --------------------------------------------------------------------- xt = (1:frames)/Rs; secs = frames/Rs; figure(1); clf; [n m] = size(rx_symbols_log); plot(real(rx_symbols_log(1:Nc+1,15:m)),imag(rx_symbols_log(1:Nc+1,15:m)),'+') axis([-2 2 -2 2]); title('Scatter Diagram'); figure(2); clf; plot(xt, rx_timing_log) title('timing offset (samples)'); figure(3); plot(xt, foff_log, '-;freq offset;') %hold on; %plot(xt, sync_log*75, 'r;course-fine;'); %hold off; title('Freq offset (Hz)'); grid; figure(4); clf; plot_specgram(rx_fdm_log, Fs); figure(5); clf; subplot(311) stem(xt, sync_log) axis([0 secs 0 1.5]); title('BPSK Sync') subplot(312) stem(xt, bit_errors_log); title('Bit Errors for test frames') subplot(313) plot(xt, test_frame_sync_log); axis([0 secs 0 1.5]); title('Test Frame Sync') figure(6); clf; subplot(211); plot(xt, snr_est_log); title('SNR Estimates') subplot(212) snrdB_pc = 20*log10(sig_est(1:Nc+1)) - 20*log10(noise_est(1:Nc+1)); bar(snrdB_pc(1:Nc) - mean(snrdB_pc(1:Nc))) axis([0 Nc+1 -3 3]); figure(7); clf; hold on; lep = length(error_pattern_log); if lep != 0 for p=1:Nc plot(p + 0.25*error_pattern_log((p-1)*2+1:Nc*Nb:lep)); plot(0.30 + p + 0.25*error_pattern_log(p*2:Nc*Nb:lep),'r') end hold off; axis([1 lep/(Nc*Nb) 0 Nc]) end figure(8); clf; subplot(211) [a b] = size(rx_fdm_log); xt1 = (1:b)/Fs; plot(xt1, rx_fdm_log); title('Rx FDM Signal'); subplot(212) plot((0:Nspec/2-1)*Fs/Nspec, SdB(1:Nspec/2) - 20*log10(Nspec/2)) axis([0 Fs/2 -40 0]) grid title('FDM Rx Spectrum'); if 0 % interleaving tests load ../unittest/inter560.txt lep = length(error_pattern_log); lep = floor(lep/560)*560; error_pattern_log_inter = zeros(1,lep); for i=1:560:lep for j=1:560 %printf("i: %4d j: %4d inter560(j): %4d\n", i,j,inter560(j)); index = inter560(j); error_pattern_log_inter(i-1+index+1) = error_pattern_log(i-1+j); end end figure(8) clf; hold on; for p=1:Nc plot(p + 0.25*error_pattern_log_inter((p-1)*2+1:Nc*Nb:lep)); plot(0.30 + p + 0.25*error_pattern_log_inter(p*2:Nc*Nb:lep),'r') end hold off; axis([1 lep/(Nc*Nb) 0 Nc]) end % optionally save error pattern file if nargin == 4 fout = fopen(errorpatternfilename, "wb"); fwrite(fout, error_pattern_log, "short"); fclose(fout); end endfunction codec2-1.2.0/octave/fdmdv_demod_c.m000066400000000000000000000065731445607075400171110ustar00rootroot00000000000000% fdmdv_demod_c.m % % Plots Octave dump file information from C FDMDV demodulator program, % to give a similar set of plots to fdmdv_demod.m. Useful for off % line analysis of demod performance. % % Copyright David Rowe 2012 % This program is distributed under the terms of the GNU General Public License % Version 2 % function fdmdv_demod_c(dumpfilename, bits) pkg load signal; fdmdv; % include modem code f = fdmdv_init; Nc = f.Nc; Nb = f.Nb; Rs = f.Rs; M = f.M; Fs = f.Fs; frames = bits/(Nc*Nb); load(dumpfilename); % BER stats total_bit_errors = 0; total_bits = 0; bit_errors_log = []; sync_log = []; test_frame_sync_log = []; test_frame_sync_state = 0; % Run thru received bits to look for test pattern bits_per_frame = Nc*Nb; for fr=1:frames rx_bits = rx_bits_log_c((fr-1)*bits_per_frame+1:fr*bits_per_frame); % count bit errors if we find a test frame [test_frame_sync bit_errors error_pattern f] = put_test_bits(f, rx_bits); if (test_frame_sync == 1) total_bit_errors = total_bit_errors + bit_errors; total_bits = total_bits + f.Ntest_bits; bit_errors_log = [bit_errors_log bit_errors/f.Ntest_bits]; else bit_errors_log = [bit_errors_log 0]; end % test frame sync state machine, just for more informative plots next_test_frame_sync_state = test_frame_sync_state; if (test_frame_sync_state == 0) if (test_frame_sync == 1) next_test_frame_sync_state = 1; test_frame_count = 0; end end if (test_frame_sync_state == 1) % we only expect another test_frame_sync pulse every 4 symbols test_frame_count++; if (test_frame_count == 4) test_frame_count = 0; if ((test_frame_sync == 0)) next_test_frame_sync_state = 0; end end end test_frame_sync_state = next_test_frame_sync_state; test_frame_sync_log = [test_frame_sync_log test_frame_sync_state]; end ber = total_bit_errors / total_bits; printf("%d bits %d errors BER: %1.4f\n",total_bits, total_bit_errors, ber); % --------------------------------------------------------------------- % Plots % --------------------------------------------------------------------- xt = (1:frames)/Rs; secs = frames/Rs; figure(1) clf; plot(real(rx_symbols_log_c(1:Nc+1,15:frames)),imag(rx_symbols_log_c(1:Nc+1,15:frames)),'+') %plot(real(rx_symbols_log_c(Nc+1,15:frames)),imag(rx_symbols_log_c(Nc+1,15:frames)),'+') axis([-2 2 -2 2]); title('Scatter Diagram'); figure(2) clf; subplot(211) plot(xt, rx_timing_log_c(1:frames)) title('timing offset (samples)'); subplot(212) plot(xt, foff_log_c(1:frames), '-;freq offset;') hold on; plot(xt, sync_log_c(1:frames)*75, 'r;course-fine;'); hold off; title('Freq offset (Hz)'); grid figure(3) clf; subplot(211) b = M*frames; xt1 = (1:b)/Fs; plot(xt1, rx_fdm_log_c(1:b)); title('Rx FDM Signal'); subplot(212); plot_specgram(rx_fdm_log_c(1:b), 8000); title('FDM Rx Spectrogram'); figure(4) clf; subplot(311) stem(xt, sync_bit_log_c(1:frames)) axis([0 secs 0 1.5]); title('BPSK Sync') subplot(312) stem(xt, bit_errors_log); title('Bit Errors for test frames') subplot(313) plot(xt, test_frame_sync_log); axis([0 secs 0 1.5]); title('Test Frame Sync') figure(5) clf; plot(xt, snr_est_log_c(1:frames)); title('SNR Estimates') endfunction codec2-1.2.0/octave/fdmdv_demod_coh.m000066400000000000000000000151221445607075400174260ustar00rootroot00000000000000% fdmdv_demod_coh.m % % Demodulator function for FDMDV modem (Octave version). Requires % 8kHz sample rate raw files as input. This version uses experimental % pseudo coherent demodulation. % % Copyright David Rowe 2013 % This program is distributed under the terms of the GNU General Public License % Version 2 % function fdmdv_demod_coh(rawfilename, nbits, pngname) fdmdv; % include modem code modulation = 'dqpsk'; fin = fopen(rawfilename, "rb"); gain = 1000; frames = nbits/(Nc*Nb); prev_rx_symbols = ones(Nc+1,1); foff_phase = 1; % BER stats total_bit_errors = 0; total_bits = 0; bit_errors_log = []; sync_log = []; test_frame_sync_log = []; test_frame_sync_state = 0; % SNR states sig_est = zeros(Nc+1,1); noise_est = zeros(Nc+1,1); % logs of various states for plotting rx_symbols_log = []; rx_timing_log = []; foff_log = []; rx_fdm_log = []; snr_est_log = []; % misc states nin = M; % timing correction for sample rate differences foff = 0; track_log = []; track = 0; fest_state = 0; % pseudo coherent demod states rx_symbols_ph_log = []; prev_rx_symbols_ph = ones(Nc+1,1); rx_phase_offsets_log = []; phase_amb_log = []; % Main loop ---------------------------------------------------- for f=1:frames % obtain nin samples of the test input signal for i=1:nin rx_fdm(i) = fread(fin, 1, "short")/gain; end rx_fdm_log = [rx_fdm_log rx_fdm(1:nin)]; % frequency offset estimation and correction [pilot prev_pilot pilot_lut_index prev_pilot_lut_index] = get_pilot(pilot_lut_index, prev_pilot_lut_index, nin); [foff_coarse S1 S2] = rx_est_freq_offset(rx_fdm, pilot, prev_pilot, nin); if track == 0 foff = foff_coarse; end foff_log = [ foff_log foff ]; foff_rect = exp(j*2*pi*foff/Fs); for i=1:nin foff_phase *= foff_rect'; rx_fdm(i) = rx_fdm(i)*foff_phase; end % baseband processing rx_baseband = fdm_downconvert(rx_fdm, nin); rx_filt = rx_filter(rx_baseband, nin); [rx_symbols rx_timing] = rx_est_timing(rx_filt, rx_baseband, nin); rx_timing_log = [rx_timing_log rx_timing]; nin = M; if rx_timing > 2*M/P nin += M/P; end if rx_timing < 0; nin -= M/P; end rx_symbols_log = [rx_symbols_log rx_symbols.*(conj(prev_rx_symbols)./abs(prev_rx_symbols))*exp(j*pi/4)]; % coherent phase offset estimation ------------------------------------ [rx_phase_offsets ferr] = rx_est_phase(rx_symbols); rx_phase_offsets_log = [rx_phase_offsets_log rx_phase_offsets]; phase_amb_log = [phase_amb_log phase_amb]; rx_symbols_ph = rx_symbols_mem(:,floor(Nph/2)+1) .* exp(-j*(rx_phase_offsets + phase_amb)); rx_symbols_ph_log = [rx_symbols_ph_log rx_symbols_ph .* exp(j*pi/4)]; rx_symbols_ph = -1 + 2*(real(rx_symbols_ph .* exp(j*pi/4)) > 0) + j*(-1 + 2*(imag(rx_symbols_ph .* exp(j*pi/4)) > 0)); % Std differential (used for freq offset est and BPSK sync) and pseudo coherent detection ----------------------- [rx_bits_unused sync f_err pd ] = qpsk_to_bits(prev_rx_symbols, rx_symbols, modulation); [rx_bits sync_unused ferr_unused pd_unused] = qpsk_to_bits(prev_rx_symbols_ph, rx_symbols_ph, 'dqpsk'); foff -= 0.5*f_err; prev_rx_symbols = rx_symbols; prev_rx_symbols_ph = rx_symbols_ph; sync_log = [sync_log sync]; [sig_est noise_est] = snr_update(sig_est, noise_est, pd); snr_est = calc_snr(sig_est, noise_est); snr_est_log = [snr_est_log snr_est]; % freq est state machine [track fest_state] = freq_state(sync, fest_state); track_log = [track_log track]; % count bit errors if we find a test frame [test_frame_sync bit_errors] = put_test_bits(test_bits, rx_bits); if (test_frame_sync == 1) total_bit_errors = total_bit_errors + bit_errors; total_bits = total_bits + Ntest_bits; bit_errors_log = [bit_errors_log bit_errors/Ntest_bits]; else bit_errors_log = [bit_errors_log 0]; end % test frame sync state machine, just for more informative plots next_test_frame_sync_state = test_frame_sync_state; if (test_frame_sync_state == 0) if (test_frame_sync == 1) next_test_frame_sync_state = 1; test_frame_count = 0; end end if (test_frame_sync_state == 1) % we only expect another test_frame_sync pulse every 4 symbols test_frame_count++; if (test_frame_count == 4) test_frame_count = 0; if ((test_frame_sync == 0)) next_test_frame_sync_state = 0; end end end test_frame_sync_state = next_test_frame_sync_state; test_frame_sync_log = [test_frame_sync_log test_frame_sync_state]; end % --------------------------------------------------------------------- % Print Stats % --------------------------------------------------------------------- ber = total_bit_errors / total_bits; printf("%d bits %d errors BER: %1.4f\n",total_bits, total_bit_errors, ber); % --------------------------------------------------------------------- % Plots % --------------------------------------------------------------------- xt = (1:frames)/Rs; secs = frames/Rs; figure(1) clf; [n m] = size(rx_symbols_log); plot(real(rx_symbols_log(1:Nc+1,15:m)),imag(rx_symbols_log(1:Nc+1,15:m)),'+') axis([-2 2 -2 2]); title('Scatter Diagram'); figure(2) clf; subplot(211) plot(xt, rx_timing_log) title('timing offset (samples)'); subplot(212) plot(xt, foff_log, '-;freq offset;') hold on; plot(xt, track_log*75, 'r;course-fine;'); hold off; title('Freq offset (Hz)'); grid figure(3) clf; subplot(211) [a b] = size(rx_fdm_log); xt1 = (1:b)/Fs; plot(xt1, rx_fdm_log); title('Rx FDM Signal'); subplot(212) spec(rx_fdm_log,8000); title('FDM Rx Spectrogram'); figure(4) clf; subplot(311) stem(xt, sync_log) axis([0 secs 0 1.5]); title('BPSK Sync') subplot(312) stem(xt, bit_errors_log); title('Bit Errors for test frames') subplot(313) plot(xt, test_frame_sync_log); axis([0 secs 0 1.5]); title('Test Frame Sync') figure(5) clf; plot(xt, snr_est_log); title('SNR Estimates') figure(6) clf; [n m] = size(rx_symbols_ph_log); plot(real(rx_symbols_ph_log(1:Nc+1,15:m)),imag(rx_symbols_ph_log(1:Nc+1,15:m)),'+') %plot(real(rx_symbols_ph_log(2,15:m)),imag(rx_symbols_ph_log(2,15:m)),'+') axis([-2 2 -2 2]); title('Scatter Diagram - after phase correction'); figure(7) clf; subplot(211) plot(rx_phase_offsets_log(1,:)) subplot(212) plot(phase_amb_log(1,:)) title('Rx Phase Offset Est') endfunction codec2-1.2.0/octave/fdmdv_mod.m000066400000000000000000000016451445607075400162710ustar00rootroot00000000000000% fdmdv_mod.m % % Modulator function for FDMDV modem, uses test frames as input and % outputs a raw file of 16 bit shorts at a sample rate of 8 kHz. % % Copyright David Rowe 2012 % This program is distributed under the terms of the GNU General Public License % Version 2 % function tx_fdm = fdmdv_mod(rawfilename, nbits) fdmdv; % include modem code f = fdmdv_init; Nc = f.Nc; Nb = f.Nb; frames = floor(nbits/(Nc*Nb)) tx_fdm = []; gain = 1000; % Scale up to 16 bit shorts prev_tx_symbols = ones(Nc+1,1); prev_tx_symbols(Nc+1) = 2; for i=1:frames [tx_bits f] = get_test_bits(f,Nc*Nb); [tx_symbols f] = bits_to_psk(f,prev_tx_symbols, tx_bits); prev_tx_symbols = tx_symbols; [tx_baseband f] = tx_filter(f, tx_symbols); tx_fdm = [tx_fdm real(fdm_upconvert(f, tx_baseband))]; end tx_fdm *= gain; fout = fopen(rawfilename,"wb"); fwrite(fout, tx_fdm, "short"); fclose(fout); endfunction codec2-1.2.0/octave/fdmdv_ut.m000066400000000000000000000226161445607075400161430ustar00rootroot00000000000000% fdmdv_ut.m % % Unit Test program for FDMDV modem. Useful for general development as it has % both tx and rx sides, and basic AWGN channel simulation. % % Copyright David Rowe 2012 % This program is distributed under the terms of the GNU General Public License % Version 2 % fdmdv; % load modem code fd = fdmdv_init; Nc = fd.Nc; M = fd.M; Fs = fd.Fs; Rs = fd.Rs; Nb = fd.Nb; P = fd.P; Q = fd.Q; % Simulation Parameters -------------------------------------- % Short-ish run for ctest. For regular development try frames=100, EbNo_dB=7.3 frames = 25; EbNo_dB = 100; Foff_hz = -100; modulation = 'dqpsk'; hpa_clip = 150; % ------------------------------------------------------------ more off; tx_filt = zeros(Nc,M); rx_symbols_log = []; rx_phase_log = 0; rx_timing_log = 0; tx_pwr = 0; noise_pwr = 0; rx_fdm_log = []; rx_baseband_log = []; rx_bits_offset = zeros(Nc*Nb*2); prev_tx_symbols = ones(Nc+1,1); prev_tx_symbols(Nc+1) = 2; prev_rx_symbols = ones(Nc+1,1); ferr = 0; foff = 0; foff_log = []; tx_baseband_log = []; tx_fdm_log = []; % BER stats total_bit_errors = 0; total_bits = 0; bit_errors_log = []; sync_bit_log = []; test_frame_sync_log = []; test_frame_sync_state = 0; % SNR estimation states sig_est = zeros(Nc+1,1); noise_est = zeros(Nc+1,1); % fixed delay simuation Ndelay = M+20; rx_fdm_delay = zeros(Ndelay,1); % --------------------------------------------------------------------- % Eb/No calculations. We need to work out Eb/No for each FDM carrier. % Total power is sum of power in all FDM carriers % --------------------------------------------------------------------- C = 1; % power of each FDM carrier (energy/sample). Total Carrier power should = Nc*C = Nc N = 1; % total noise power (energy/sample) of noise source across entire bandwidth % Eb = Carrier power * symbol time / (bits/symbol) % = C *(1/Rs) / Nb Eb_dB = 10*log10(C) - 10*log10(Rs) - 10*log10(Nb); No_dBHz = Eb_dB - EbNo_dB; % Noise power = Noise spectral density * bandwidth % Noise power = Noise spectral density * Fs/2 for real signals N_dB = No_dBHz + 10*log10(Fs/2); Ngain_dB = N_dB - 10*log10(N); Ngain = 10^(Ngain_dB/20); % C/No = Carrier Power/noise spectral density % = power per carrier*number of carriers / noise spectral density CNo_dB = 10*log10(C) + 10*log10(Nc) - No_dBHz; % SNR in equivalent 3000 Hz SSB channel B = 3000; SNR = CNo_dB - 10*log10(B); % freq offset simulation states phase_offset = 1; freq_offset = exp(j*2*pi*Foff_hz/Fs); foff_phase = 1; t = 0; foff = 0; fest_state = 0; fest_timer = 0; sync_mem = zeros(1,fd.Nsync_mem); sync = 0; sync_log = []; snr_log = []; Nspec=1024; spec_mem=zeros(1,Nspec); SdB = zeros(1,Nspec); % --------------------------------------------------------------------- % Main loop % --------------------------------------------------------------------- for f=1:frames % ------------------- % Modulator % ------------------- [tx_bits fd] = get_test_bits(fd,Nc*Nb); [tx_symbols fd] = bits_to_psk(fd, prev_tx_symbols, tx_bits); prev_tx_symbols = tx_symbols; [tx_baseband fd] = tx_filter(fd, tx_symbols); tx_baseband_log = [tx_baseband_log tx_baseband]; [tx_fdm fd] = fdm_upconvert(fd, tx_baseband); tx_pwr = 0.9*tx_pwr + 0.1*real(tx_fdm)*real(tx_fdm)'/(M); % ------------------- % Channel simulation % ------------------- % frequency offset %Foff_hz += 1/Rs; Foff = Foff_hz; for i=1:M % Time varying freq offset %Foff = Foff_hz + 100*sin(t*2*pi/(300*Fs)); %t++; freq_offset = exp(j*2*pi*Foff/Fs); phase_offset *= freq_offset; tx_fdm(i) = phase_offset*tx_fdm(i); end tx_fdm = real(tx_fdm); % HPA non-linearity tx_fdm(find(abs(tx_fdm) > hpa_clip)) = hpa_clip; tx_fdm_log = [tx_fdm_log tx_fdm]; rx_fdm = tx_fdm; % AWGN noise noise = Ngain*randn(1,M); noise_pwr = 0.9*noise_pwr + 0.1*noise*noise'/M; rx_fdm += noise; rx_fdm_log = [rx_fdm_log rx_fdm]; % update spectrum l=length(rx_fdm); spec_mem(1:Nspec-l) = spec_mem(l+1:Nspec); spec_mem(Nspec-l+1:Nspec) = rx_fdm; S=fft(spec_mem.*hanning(Nspec)',Nspec); SdB = 0.9*SdB + 0.1*20*log10(abs(S)); % ------------------- % Demodulator % ------------------- % shift down to complex baseband for i=1:M fd.fbb_phase_rx = fd.fbb_phase_rx*fd.fbb_rect'; rx_fdm(i) = rx_fdm(i)*fd.fbb_phase_rx; end mag = abs(fd.fbb_phase_rx); fd.fbb_phase_rx /= mag; % frequency offset estimation and correction, need to call rx_est_freq_offset even in sync % mode to keep states updated [pilot prev_pilot fd.pilot_lut_index fd.prev_pilot_lut_index] = get_pilot(fd, fd.pilot_lut_index, fd.prev_pilot_lut_index, M); [foff_coarse S1 S2 fd] = rx_est_freq_offset(fd, rx_fdm, pilot, prev_pilot, M, !sync); if sync == 0 foff = foff_coarse; end foff_log = [ foff_log foff ]; foff_rect = exp(j*2*pi*foff/Fs); for i=1:M foff_phase *= foff_rect'; rx_fdm(i) = rx_fdm(i)*foff_phase; end [rx_fdm_filter fd] = rxdec_filter(fd, rx_fdm, M); [rx_filt fd] = down_convert_and_rx_filter(fd, rx_fdm_filter, M, M/Q); [rx_symbols rx_timing env fd] = rx_est_timing(fd, rx_filt, M); rx_timing_log = [rx_timing_log rx_timing]; %rx_phase = rx_est_phase(rx_symbols); %rx_phase_log = [rx_phase_log rx_phase]; %rx_symbols = rx_symbols*exp(j*rx_phase); [rx_bits sync_bit foff_fine pd] = psk_to_bits(fd, prev_rx_symbols, rx_symbols, modulation); if strcmp(modulation,'dqpsk') rx_symbols_log = [rx_symbols_log pd]; else rx_symbols_log = [rx_symbols_log rx_symbols]; endif foff -= 0.5*foff_fine; prev_rx_symbols = rx_symbols; sync_bit_log = [sync_bit_log sync_bit]; % freq est state machine [sync reliable_sync_bit fest_state fest_timer sync_mem] = freq_state(fd, sync_bit, fest_state, fest_timer, sync_mem); sync_log = [sync_log sync]; % Update SNR est [sig_est noise_est] = snr_update(fd, sig_est, noise_est, pd); snr_log = [snr_log calc_snr(fd, sig_est, noise_est)]; % count bit errors if we find a test frame % Allow 15 frames for filter memories to fill and time est to settle [test_frame_sync bit_errors error_pattern fd] = put_test_bits(fd, rx_bits); if test_frame_sync == 1 total_bit_errors = total_bit_errors + bit_errors; total_bits = total_bits + fd.Ntest_bits; bit_errors_log = [bit_errors_log bit_errors]; else bit_errors_log = [bit_errors_log 0]; end % test frame sync state machine, just for more informative plots next_test_frame_sync_state = test_frame_sync_state; if (test_frame_sync_state == 0) if (test_frame_sync == 1) next_test_frame_sync_state = 1; test_frame_count = 0; end end if (test_frame_sync_state == 1) % we only expect another test_frame_sync pulse every 4 symbols test_frame_count++; if (test_frame_count == 4) test_frame_count = 0; if ((test_frame_sync == 0)) next_test_frame_sync_state = 0; end end end test_frame_sync_state = next_test_frame_sync_state; test_frame_sync_log = [test_frame_sync_log test_frame_sync_state]; end % --------------------------------------------------------------------- % Print Stats % --------------------------------------------------------------------- ber = total_bit_errors / total_bits; % Peak to Average Power Ratio calcs from http://www.dsplog.com papr = max(tx_fdm_log.*conj(tx_fdm_log)) / mean(tx_fdm_log.*conj(tx_fdm_log)); papr_dB = 10*log10(papr); % Note Eb/No set point is for Nc data carriers only, excluding pilot. % This is convenient for testing BER versus Eb/No. Measured SNR & % Eb/No includes power of pilot. Similar for SNR, first number is SNR % excluding pilot pwr for Eb/No set point, 2nd value is measured SNR % which will be a little higher as pilot power is included. Note current SNR % est algorithm only works for QPSK, gives silly values for 8PSK. printf("Bits/symbol.: %d\n", Nb); printf("Num carriers: %d\n", Nc); printf("Bit Rate....: %d bits/s\n", fd.Rb); printf("Eb/No (meas): %2.2f (%2.2f) dB\n", EbNo_dB, 10*log10(0.25*tx_pwr*Fs/(Rs*Nc*noise_pwr))); printf("bits........: %d\n", total_bits); printf("errors......: %d\n", total_bit_errors); printf("BER.........: %1.4f\n", ber); printf("PAPR........: %1.2f dB\n", papr_dB); printf("SNR...(meas): %2.2f (%2.2f) dB\n", SNR, calc_snr(fd, sig_est, noise_est)); % --------------------------------------------------------------------- % Plots % --------------------------------------------------------------------- figure(1) clf; [n m] = size(rx_symbols_log); plot(real(rx_symbols_log(1:Nc+1,15:m)),imag(rx_symbols_log(1:Nc+1,15:m)),'+') axis([-3 3 -3 3]); title('Scatter Diagram'); figure(2) clf; subplot(211) plot(rx_timing_log) title('timing offset'); subplot(212) plot(foff_log, '-;freq offset;') hold on; plot(sync_log*75, 'r;Sync State & course(0) fine(1) freq tracking;'); hold off; title('Freq offset (Hz)'); figure(3) clf; subplot(211) plot(real(tx_fdm_log)); title('FDM Tx Signal'); subplot(212) plot((0:Nspec/2-1)*Fs/Nspec, SdB(1:Nspec/2) - 20*log10(Nspec/2)) axis([0 Fs/2 -40 0]) grid title('FDM Rx Spectrum'); figure(4) clf; subplot(311) stem(sync_bit_log) axis([0 frames 0 1.5]); title('BPSK Sync') subplot(312) stem(bit_errors_log); title('Bit Errors for test frames') subplot(313) plot(test_frame_sync_log); axis([0 frames 0 1.5]); title('Test Frame Sync') figure(5) clf subplot(211) plot(snr_log) subplot(212) %plot(20*log10(sig_est(1:Nc))-20*log10(sig_est(Nc+1))+6) %axis([1 Nc -6 6]); sdB_pc = 20*log10(sig_est(1:Nc+1)); bar(sdB_pc(1:Nc) - mean(sdB_pc(1:Nc))) axis([0 Nc+1 -3 3]); codec2-1.2.0/octave/fsk_demod_file.m000066400000000000000000000105271445607075400172630ustar00rootroot00000000000000% fsk_demod_file.m % David Rowe May 2020 % % Demodulate a file of off air samples and plot a bunch of internal % states. Useful for debugging the FSK demod configuration #{ Sample usage to explore demodulator operation with a 100 bits/s 2FSK signal: $ cd ~/codec2/build_linux/src $ ./fsk_get_test_bits - 1000 | ./fsk_mod 2 8000 100 1000 1000 - ../../octave/fsk.s16 $ octave --no-gui octave:1> fsk_demod_file("fsk.s16",format="s16",8000,100,2) Same thing but complex (single sided): $ ./fsk_get_test_bits - 1000 | ./fsk_mod 2 8000 100 1000 1000 - - | ./ch - fsk.cs16 --complexout octave:2> fsk_demod_file("fsk.cs16",format="cs16",8000,100,2) #} function fsk_demod_file(filename, format="s16", Fs=8000, Rs=50, M=2, P=8, avoid_dc = 1, max_secs=1E32) more off; fsk_lib; plot_en = 1; states = fsk_init(Fs, Rs, M, P); if strcmp(format,"s16") read_complex = 0; sample_size = 'int16'; shift_fs_on_4=0; elseif strcmp(format,"cs16") || strcmp(format,"iq16") read_complex = 1; sample_size = 'int16'; shift_fs_on_4=0; if avoid_dc states.fest_fmin = states.Rs*0.5; else states.fest_fmin = -Fs/2; end; states.fest_fmax = Fs/2; elseif strcmp(format,"iqfloat") read_complex = 1; sample_size = 'float32'; shift_fs_on_4=0; if avoid_dc states.fest_fmin = states.Rs*0.5; else states.fest_fmin = -Fs/2; end; states.fest_fmax = Fs/2; else printf("Error in format: %s\n", format); return; end fin = fopen(filename,"rb"); if fin == -1 printf("Error opening file: %s\n",filename); return; end nbit = states.nbit; frames = 0; rx = []; rx_bits_log = []; norm_rx_timing_log = []; f_int_resample_log = []; EbNodB_log = []; ppm_log = []; f_log = []; Sf_log = []; % Extract raw bits from samples ------------------------------------------------------ printf("demod of raw bits....\n"); finished = 0; ph = 1; secs = 0; while (finished == 0) % read nin samples from input file nin = states.nin; if read_complex [sf count] = fread(fin, 2*nin, sample_size); if strcmp(sample_size, "uint8") sf = (sf - 127)/128; end sf = sf(1:2:end) + j*sf(2:2:end); count /= 2; if shift_fs_on_4 % optional shift up in freq by Fs/4 to get into freq est range for i=1:count ph = ph*exp(j*pi/4); sf(i) *= ph; end end else [sf count] = fread(fin, nin, sample_size); end rx = [rx; sf]; if count == nin frames++; % demodulate to stream of bits states = est_freq(states, sf, states.M); if states.freq_est_type == 'mask' states.f = states.f2; end [rx_bits states] = fsk_demod(states, sf); rx_bits_log = [rx_bits_log rx_bits]; norm_rx_timing_log = [norm_rx_timing_log states.norm_rx_timing]; f_int_resample_log = [f_int_resample_log abs(states.f_int_resample)]; EbNodB_log = [EbNodB_log states.EbNodB]; ppm_log = [ppm_log states.ppm]; f_log = [f_log; states.f]; Sf_log = [Sf_log; states.Sf']; else finished = 1; end secs += nin/Fs; if secs > max_secs finished=1; end end printf("frames: %d\n", frames); fclose(fin); if plot_en printf("plotting...\n"); figure(1); clf; rx_nowave = rx(1000:length(rx)); % skip past wav header if it's a wave file subplot(211) plot(real(rx_nowave)); title('input signal to demod (1 sec)') xlabel('Time (samples)'); subplot(212); last = min(length(rx_nowave),Fs); Nfft = 2^(ceil(log2(last))); Rx = fft(rx_nowave(1:last).*hanning(last),Nfft); RxdB = 20*log10(abs(fftshift(Rx))); mx = 10*ceil(max(RxdB/10)); f = -Nfft/2:Nfft/2-1; plot(f*Fs/Nfft, RxdB); axis([-Fs/2 Fs/2 mx-80 mx]) xlabel('Frequency (Hz)'); if length(rx) > Fs figure(2); Ndft=2^ceil(log2(Fs/10)); specgram(rx,Ndft,Fs); end figure(3); clf; plot(f_log,'+-'); axis([1 length(f_log) -Fs/2 Fs/2]); title('Tone Freq Estimates'); figure(4); clf; mesh(Sf_log(1:end,:)); title('Freq Est Sf over time'); figure(5); clf; plot(f_int_resample_log','+'); title('Integrator outputs for each tone'); figure(6); clf; plot(norm_rx_timing_log); axis([1 frames -0.5 0.5]); title('norm fine timing') figure(7); clf; plot(EbNodB_log); title('Eb/No estimate') figure(8); clf; plot(ppm_log); title('Sample clock (baud rate) offset in PPM'); end endfunction codec2-1.2.0/octave/fsk_horus.m000066400000000000000000000637001445607075400163350ustar00rootroot00000000000000% fsk_horus.m % David Rowe 10 Oct 2015 % % Project Horus High Altitude Balloon (HAB) FSK demodulator % See blog write up "All your modems are belong to us" % http://www.rowetel.com/?p=4629 fsk_lib; % Basic modem set up for Horus function states = fsk_horus_init(Fs,Rs,M=2) states = fsk_init(Fs,Rs,M); % Freq. estimator limits - keep these narrow to stop errors with low SNR 4FSK states.fest_fmin = 300; states.fest_fmax = 2800; endfunction % init rtty protocol specific states function rtty = fsk_horus_init_rtty % Generate unique word that correlates against the ASCII "$$$$$" that % is at the start of each frame. % $ -> 36 decimal -> 0 1 0 0 1 0 0 binary dollar_bits = fliplr([0 1 0 0 1 0 0]); mapped_db = 2*dollar_bits - 1; sync_bits = [1 1 0]; mapped_sb = 2*sync_bits - 1; mapped = [mapped_db mapped_sb]; npad = rtty.npad = 3; % one start and two stop bits between 7 bit ascii chars nfield = rtty.nfield = 7; % length of ascii character field rtty.uw = [mapped mapped mapped mapped mapped]; rtty.uw_thresh = length(rtty.uw) - 2; % allow a few bit errors when looking for UW rtty.max_packet_len = 1000; endfunction % I think this is the binary protocol work from Jan 2016 function binary = fsk_horus_init_binary % Generate 16 bit "$$" unique word that is at the front of every horus binary % packet dollar_bits = [0 0 1 0 0 1 0 0]; mapped_db = 2*dollar_bits - 1; binary.uw = [mapped_db mapped_db]; binary.uw_thresh = length(binary.uw)-2; % no bit errors when looking for UW binary.max_packet_len = 360; endfunction % Look for unique word and return index of first UW bit, or -1 if no % UW found Sometimes there may be several matches, returns the % position of the best match to UW. function [uw_start best_corr corr] = find_uw(states, start_bit, rx_bits) uw = states.uw; mapped_rx_bits = 2*rx_bits - 1; best_corr = 0; uw_start = -1; found_uw = 0; % first first UW in buffer that exceeds threshold for i=start_bit:length(rx_bits) - length(uw) corr(i) = mapped_rx_bits(i:i+length(uw)-1) * uw'; if (found_uw == 0) && (corr(i) >= states.uw_thresh) uw_start = i; best_corr = corr; found_uw = 1; end end endfunction % Extract ASCII string from a Horus frame of bits function [str crc_ok] = extract_ascii(states, rx_bits_buf, uw_loc) nfield = states.nfield; npad = states.npad; str = ""; str_dec = []; nstr = 0; ptx_crc = 1; rx_crc = ""; endpacket = 0; st = uw_loc + length(states.uw); % first bit of first char en = uw_loc + states.max_packet_len - nfield; %printf("\nst: %d en: %d len: %d\n", st, en, length(rx_bits_buf)); for i=st:nfield+npad:en field = rx_bits_buf(i:i+nfield-1); ch_dec = field * (2.^(0:nfield-1))'; % filter out unlikely characters that bit errors may introduce, and ignore \n if (ch_dec > 31) && (ch_dec < 91) str = [str char(ch_dec)]; else str = [str char(32)]; % space is "not sure" end nstr++; % build up array for CRC16 check if !endpacket && (ch_dec == 42) endpacket = 1; rx_crc = crc16(str_dec); % found a '*' so that's the end of the string for CRC calculations ptx_crc = nstr+1; % this is where the transmit CRC starts end if !endpacket str_dec = [str_dec ch_dec]; end end if (ptx_crc+3) <= length(str) tx_crc = str(ptx_crc:ptx_crc+3); crc_ok = strcmp(tx_crc, rx_crc); else crc_ok = 0; end str = str(1:ptx_crc-2); endfunction % Use soft decision information to find bits most likely in error. I think % this is some form of maximum likelihood decoding. function [str crc_ok rx_bits_log_flipped] = sd_bit_flipping(states, rx_bits_log, rx_bits_sd_log, st, en); % force algorithm to ignore rs232 sync bits by marking them as "very likely", they have % no input to crc algorithm nfield = states.nfield; npad = states.npad; for i=st:nfield+npad:en rx_bits_sd_log(i+nfield:i+nfield+npad-1) = 1E6; end % make a list of bits with smallest soft decn values [dodgy_bits_mag dodgy_bits_index] = sort(abs(rx_bits_sd_log(st+length(states.uw):en))); dodgy_bits_index += length(states.uw) + st - 1; nbits = 6; ntries = 2^nbits; str = ""; crc_ok = 0; % try various combinations of these bits for i=1:ntries-1 error_mask = zeros(1, length(rx_bits_log)); for b=1:nbits x = bitget(i,b); bit_to_flip = dodgy_bits_index(b); error_mask(bit_to_flip) = x; %printf("st: %d i: %d b: %d x: %d index: %d\n", st, i,b,x,bit_to_flip); end rx_bits_log_flipped = xor(rx_bits_log, error_mask); [str_flipped crc_ok_flipped] = extract_ascii(states, rx_bits_log_flipped, st); if crc_ok_flipped %printf("Yayy we fixed a packet by flipping with pattern %d\n", i); str = str_flipped; crc_ok = crc_ok_flipped; end end endfunction % Extract as many ASCII packets as we can from a great big buffer of bits function npackets = extract_and_print_rtty_packets(states, rtty, rx_bits_log, rx_bits_sd_log) % use UWs to delimit start and end of data packets bit = 1; nbits = length(rx_bits_log); nfield = rtty.nfield; npad = rtty.npad; npackets = 0; uw_loc = find_uw(rtty, bit, rx_bits_log, states.verbose); while (uw_loc != -1) if bitand(states.verbose,0x8) printf("nbits: %d max_packet_len: %d uw_loc: %d\n", nbits, rtty.max_packet_len, uw_loc); end if (uw_loc + rtty.max_packet_len) < nbits % Now start picking out 7 bit ascii chars from frame. It has some % structure so we can guess where fields are. I hope we don't get % RS232 idle bits stuck into it anywhere, ie "bit fields" don't % change dynamically. % dump msg bits so we can use them as a test signal %msg = rx_bits_log(st:uw_loc-1); %save -ascii horus_msg.txt msg % simulate bit error for testing %rx_bits_log(st+200) = xor(rx_bits_log(st+100),1); %rx_bits_sd_log(st+100) = 0; [str crc_ok] = extract_ascii(rtty, rx_bits_log, uw_loc); if crc_ok == 0 [str_flipped crc_flipped_ok rx_bits_log] = sd_bit_flipping(rtty, rx_bits_log, rx_bits_sd_log, uw_loc, uw_loc+rtty.max_packet_len); end % update memory of previous packet, we use this to guess where errors may be if crc_ok || crc_flipped_ok states.prev_pkt = rx_bits_log(uw_loc+length(rtty.uw):uw_loc+rtty.max_packet_len); end if crc_ok str = sprintf("%s CRC OK", str); npackets++; else if crc_flipped_ok str = sprintf("%s fixed", str_flipped); else str = sprintf("%s CRC BAD", str); end end printf("%s\n", str); end % look for next packet bit = uw_loc + length(rtty.uw); uw_loc = find_uw(rtty, bit, rx_bits_log, states.verbose); endwhile endfunction % Extract as many binary packets as we can from a great big buffer of bits, % and send them to the C decoder for FEC decoding. % horus_l2 can be compiled a bunch of different ways. You need to % compile with: % codec2-dev/src$ gcc horus_l2.c -o horus_l2 -Wall -DDEC_RX_BITS -DHORUS_L2_RX function corr_log = extract_and_decode_binary_packets(states, binary, rx_bits_log) corr_log = []; % use UWs to delimit start and end of data packets bit = 1; nbits = length(rx_bits_log); [uw_loc best_corr corr] = find_uw(binary, bit, rx_bits_log, states.verbose); corr_log = [corr_log corr]; while (uw_loc != -1) if (uw_loc+binary.max_packet_len) < nbits % printf("uw_loc: %d best_corr: %d\n", uw_loc, best_corr); % OK we have a packet delimited by two UWs. Lets convert the bit % stream into bytes and save for decoding pin = uw_loc; for i=1:45 rx_bytes(i) = rx_bits_log(pin:pin+7) * (2.^(7:-1:0))'; pin += 8; %printf("%d 0x%02x\n", i, rx_bytes(i)); end f=fopen("horus_rx_bits_binary.bin","wb"); fwrite(f, rx_bytes, "uchar"); fclose(f); % optionally write packet to disk to use as horus_tx_bits_binary.txt f=fopen("horus_rx_bits_binary.txt","wt"); for i=uw_loc:uw_loc+45*8-1 fprintf(f, "%d ", rx_bits_log(i)); end fclose(f); system("../src/horus_l2"); % compile instructions above end bit = uw_loc + length(binary.uw); [uw_loc best_corr corr] = find_uw(binary, bit, rx_bits_log, states.verbose); corr_log = [corr_log corr]; endwhile endfunction % simulation of tx and rx side, add noise, channel impairments ---------------------- % % test_frame_mode Description % 1 BER testing using known test frames % 2 random bits % 3 repeating sequence of all symbols % 4 Horus RTTY % 5 Horus Binary % 6 Horus High Speed: A 8x oversampled modem, e.g. Fs=9600, Rs=1200 % which is the same as Fs=921600 Rs=115200 % Uses packet based BER counter function run_sim(test_frame_mode, M=2, frames = 10, EbNodB = 100, filename="fsk_horus.raw") timing_offset = 0.0; % see resample() for clock offset below fading = 0; % modulates tx power at 2Hz with 20dB fade depth, % to simulate balloon rotating at end of mission df = 0; % tx tone freq drift in Hz/s dA = 1; % amplitude imbalance of tones (note this affects Eb so not a gd idea) more off rand('state',1); randn('state',1); % ---------------------------------------------------------------------- % sm2000 config ------------------------ %states = fsk_horus_init(96000, 1200); %states.f1_tx = 4000; %states.f2_tx = 5200; if test_frame_mode < 4 % horus rtty config --------------------- states = fsk_horus_init(8000, 50, M); end if test_frame_mode == 4 % horus rtty config --------------------- states = fsk_horus_init(8000, 100, 2); states.tx_bits_file = "horus_payload_rtty.txt"; % Octave file of bits we FSK modulate rtty = fsk_horus_init_rtty; states.ntestframebits = rtty.max_packet_len; end if test_frame_mode == 5 % horus binary config --------------------- states = fsk_horus_init(8000, 100, 4); binary = fsk_horus_init_binary; states.tx_bits_file = "horus_tx_bits_binary.txt"; % Octave file of bits we FSK modulate states.ntestframebits = binary.max_packet_len; end if test_frame_mode == 6 % horus high speed --------------------- states = fsk_horus_init(Fs=9600, Rs=1200, M=2, P=8, nsym=16); states.tx_bits_file = "horus_high_speed.bin"; end % Tones must be at least Rs apart for ideal non-coherent FSK states.ftx = 900 + 2*states.Rs*(1:states.M); states.tx_tone_separation = states.ftx(2) - states.ftx(1); % ---------------------------------------------------------------------- states.verbose = 0x1; M = states.M; N = states.N; P = states.P; Rs = states.Rs; nsym = states.nsym; nbit = states.nbit; Fs = states.Fs; states.df(1:M) = df; states.dA(1:M) = dA; % optional noise. Useful for testing performance of waveforms from real world modulators EbNo = 10^(EbNodB/10); variance = states.Fs/(states.Rs*EbNo*states.bitspersymbol); % set up tx signal with payload bits based on test mode if (test_frame_mode == 1) % test frame of bits, which we repeat for convenience when BER testing states.ntestframebits = states.nbit; test_frame = round(rand(1, states.ntestframebits)); tx_bits = []; for i=1:frames+1 tx_bits = [tx_bits test_frame]; end end if test_frame_mode == 2 % random bits, just to make sure sync algs work on random data tx_bits = round(rand(1, states.nbit*(frames+1))); end if test_frame_mode == 3 % repeating sequence of all symbols % great for initial test of demod if nothing else works, % look for this pattern in rx_bits if M == 2 % ...10101... tx_bits = zeros(1, states.nbit*(frames+1)); tx_bits(1:2:length(tx_bits)) = 1; else % repeat each possible 4fsk symbol pattern = [0 0 0 1 1 0 1 1]; %pattern = [0 0 0 1 1 1 1 0]; nrepeats = states.nbit*(frames+1)/length(pattern); tx_bits = []; for b=1:nrepeats tx_bits = [tx_bits pattern]; end %tx_bits = zeros(1, states.nbit*(frames+1)); end end if (test_frame_mode == 4) || (test_frame_mode == 5) % load up a horus msg from disk and modulate that test_frame = load(states.tx_bits_file); ltf = length(test_frame); ntest_frames = ceil((frames+1)*nbit/ltf); printf("Generating %d test packets\n", ntest_frames); % 1 second of random bits to let estimators lock on preamble = round(rand(1,states.Rs)); tx_bits = preamble; for i=1:ntest_frames tx_bits = [tx_bits test_frame]; end % a packet len of random bits at end fill buffers to deocode final packet if test_frame_mode == 4 postamble = round(rand(1,rtty.max_packet_len)); else postamble = round(rand(1,binary.max_packet_len)); end tx_bits = [tx_bits postamble]; end if test_frame_mode == 6 states.verbose += 0x4; ftmp = fopen(states.tx_bits_file, "rb"); test_frame = fread(ftmp,Inf,"char")'; fclose(ftmp); states.ntestframebits = length(test_frame); printf("length test frame: %d\n", states.ntestframebits); %test_frame = rand(1,states.ntestframebits) > 0.5; tx_bits = []; for i=1:frames+1 tx_bits = [tx_bits test_frame]; end end tx = fsk_mod(states, tx_bits); %tx = resample(tx, 1000, 1001); % simulated 1000ppm sample clock offset if fading ltx = length(tx); tx = tx .* (1.1 + cos(2*pi*2*(0:ltx-1)/Fs))'; % min amplitude 0.1, -20dB fade, max 3dB end noise = sqrt(variance)*randn(length(tx),1); rx = tx + noise; printf("SNRdB meas: %4.1f\n", 10*log10(var(tx)/var(noise))); % dump simulated rx file ftx=fopen(filename,"wb"); rxg = rx*1000; fwrite(ftx, rxg, "short"); fclose(ftx); timing_offset_samples = round(timing_offset*states.Ts); st = 1 + timing_offset_samples; rx_bits_buf = zeros(1,nbit+states.ntestframebits); x_log = []; timing_nl_log = []; norm_rx_timing_log = []; f_int_resample_log = []; f_log = []; EbNodB_log = []; rx_bits_log = []; rx_bits_sd_log = []; % main loop --------------------------------------------------------------- run_frames = floor(length(rx)/N)-1; for f=1:run_frames % extract nin samples from input stream nin = states.nin; en = st + states.nin - 1; if en < length(rx) % due to nin variations its possible to overrun buffer sf = rx(st:en); st += nin; % demodulate to stream of bits states = est_freq(states, sf, states.M); %states.f = 900 + 2*states.Rs*(1:states.M); %states.f = [1200 1400 1600 1800]; [rx_bits states] = fsk_demod(states, sf); rx_bits_buf(1:states.ntestframebits) = rx_bits_buf(nbit+1:states.ntestframebits+nbit); rx_bits_buf(states.ntestframebits+1:states.ntestframebits+nbit) = rx_bits; %rx_bits_buf(1:nbit) = rx_bits_buf(nbit+1:2*nbit); %rx_bits_buf(nbit+1:2*nbit) = rx_bits; rx_bits_log = [rx_bits_log rx_bits]; rx_bits_sd_log = [rx_bits_sd_log states.rx_bits_sd]; norm_rx_timing_log = [norm_rx_timing_log states.norm_rx_timing]; x_log = [x_log states.x]; timing_nl_log = [timing_nl_log states.timing_nl]; f_int_resample_log = [f_int_resample_log abs(states.f_int_resample(:,:))]; f_log = [f_log; states.f]; EbNodB_log = [EbNodB_log states.EbNodB]; if test_frame_mode == 1 states = ber_counter(states, test_frame, rx_bits_buf); end if test_frame_mode == 6 states = ber_counter_packet(states, test_frame, rx_bits_buf); end end end % print stats, count errors, decode packets ------------------------------------------ if (test_frame_mode == 1) || (test_frame_mode == 6) printf("frames: %d EbNo: %3.2f Tbits: %d Terrs: %d BER %4.3f\n", frames, EbNodB, states.Tbits,states. Terrs, states.Terrs/states.Tbits); end if test_frame_mode == 4 npackets = extract_and_print_rtty_packets(states, rtty, rx_bits_log, rx_bits_sd_log); printf("Received %d packets\n", npackets); end if test_frame_mode == 5 extract_and_decode_binary_packets(states, binary, rx_bits_log); end figure(1); plot(f_int_resample_log','+') hold off; figure(2) clf m = max(abs(x_log)); plot(x_log,'+') axis([-m m -m m]) title('fine timing metric') figure(3) clf subplot(211) plot(norm_rx_timing_log); axis([1 run_frames -1 1]) title('norm fine timing') subplot(212) plot(states.nerr_log) title('num bit errors each frame') figure(4) clf subplot(211) one_sec_rx = rx(1:min(Fs,length(rx))); plot(one_sec_rx) title('rx signal at demod input') subplot(212) plot(abs(fft(one_sec_rx))) figure(5) clf plot(f_log,'+') title('tone frequencies') axis([1 run_frames 0 Fs/2]) figure(6) clf plot(EbNodB_log); title('Eb/No estimate') figure(7) clf subplot(211) X = abs(fft(timing_nl_log)); plot(X(1:length(X)/2)) subplot(212) plot(abs(timing_nl_log(1:100))) endfunction % --------------------------------------------------------------------- % demodulate from a user-supplied file % --------------------------------------------------------------------- function rx_bits_log = demod_file(filename, test_frame_mode=4, noplot=0, EbNodB=100, max_frames=1E32) fin = fopen(filename,"rb"); more off; read_complex = 0; sample_size = 'int16'; shift_fs_on_4 = 0; max_frames if test_frame_mode == 4 % horus rtty config --------------------- states = fsk_horus_init(8000, 100, 2); rtty = fsk_horus_init_rtty; states.ntestframebits = rtty.max_packet_len; end if test_frame_mode == 5 % horus binary config --------------------- states = fsk_horus_init(8000, 100, 4); binary = fsk_horus_init_binary; states.ntestframebits = binary.max_packet_len; end states.verbose = 0x1 + 0x8; if test_frame_mode == 6 % Horus high speed config -------------- states = fsk_horus_init(Fs=9600, Rs=1200, M=2, P=8, nsym=16); states.tx_bits_file = "horus_high_speed.bin"; states.verbose += 0x4; ftmp = fopen(states.tx_bits_file, "rb"); test_frame = fread(ftmp,Inf,"char")'; fclose(ftmp); states.ntestframebits = length(test_frame); printf("length test frame: %d\n", states.ntestframebits); end if test_frame_mode == 7 % 800XA 4FSK modem -------------- states = fsk_init(Fs=8000, Rs=400, M=4, P=10, nsym=256); states.tx_bits_file = "horus_high_speed.bin"; states.verbose += 0x4; ftmp = fopen(states.tx_bits_file, "rb"); test_frame = fread(ftmp,Inf,"char")'; fclose(ftmp); states.ntestframebits = length(test_frame); printf("length test frame: %d\n", states.ntestframebits); end if test_frame_mode == 8 % test RS41 type balllon telemetry -------------- states = fsk_init(96000, 4800, 2, 10, 16); states.fest_fmin = 1000; states.fest_fmax = 40000; states.fest_min_spacing = 1000; states.tx_bits_file = "../build_linux/src/tx_bit.bin"; states.verbose += 0x4; #ftmp = fopen(states.tx_bits_file, "rb"); test_frame = fread(ftmp,Inf,"char")'; fclose(ftmp); #states.ntestframebits = length(test_frame); #printf("length test frame: %d\n", states.ntestframebits); states.ntestframebits = 1000; read_complex = 1; shift_fs_on_4 = 1; % get samples into range of current freq estimator end if test_frame_mode == 9 % Wenet high speed SSTV, we can just check raw demo here --------------------- % despite the high sample rate the modem sees this as a 8:1 Fs/Rs configuration states = fsk_init(8000, 1000, 2); states.tx_tone_separation = 1000; states.ntestframebits = (256+2+65)*8+40; % from src/drs232_lpc.c states.freq_est_type = 'mask'; read_complex=1; sample_size = 'uint8'; printf("Wenet mode: ntestframebits: %d freq_est_type: %s\n", states.ntestframebits, states.freq_est_type); %states.verbose = 0x8; end N = states.N; P = states.P; Rs = states.Rs; nsym = states.nsym; nbit = states.nbit; frames = 0; rx = []; rx_bits_log = []; rx_bits_sd_log = []; norm_rx_timing_log = []; f_int_resample_log = []; EbNodB_log = []; ppm_log = []; f_log = []; Sf_log = []; rx_bits_buf = zeros(1,nbit + states.ntestframebits); % optional noise. Useful for testing performance of waveforms from real world modulators % we need to pre-read the file to estimate the signal power ftmp = fopen(filename,"rb"); s = fread(ftmp,Inf,sample_size); fclose(ftmp); if sample_size == "uint8" s = (s - 127)/128; end if read_complex s = s(1:2:end) + j*s(2:2:end); end tx_pwr = var(s); EbNo = 10^(EbNodB/10); variance = (tx_pwr/2)*states.Fs/(states.Rs*EbNo*states.bitspersymbol); % First extract raw bits from samples ------------------------------------------------------ printf("demod of raw bits....\n"); finished = 0; ph = 1; while (finished == 0) % extract nin samples from input stream nin = states.nin; if read_complex [sf count] = fread(fin, 2*nin, sample_size); if sample_size == "uint8" sf = (sf - 127)/128; end sf = sf(1:2:end) + j*sf(2:2:end); count /= 2; if shift_fs_on_4 % optional shift up in freq by Fs/4 to get into freq est range for i=1:count ph = ph*exp(j*pi/4); sf(i) *= ph; end end else [sf count] = fread(fin, nin, "short"); end rx = [rx; sf]; % add optional noise if count noise = sqrt(variance)*randn(count,1); sf += noise; end if count == nin frames++; % demodulate to stream of bits states = est_freq(states, sf, states.M); if states.freq_est_type == 'mask' states.f = states.f2; end [rx_bits states] = fsk_demod(states, sf); rx_bits_buf(1:states.ntestframebits) = rx_bits_buf(nbit+1:states.ntestframebits+nbit); rx_bits_buf(states.ntestframebits+1:states.ntestframebits+nbit) = rx_bits; rx_bits_log = [rx_bits_log rx_bits]; rx_bits_sd_log = [rx_bits_sd_log states.rx_bits_sd]; norm_rx_timing_log = [norm_rx_timing_log states.norm_rx_timing]; f_int_resample_log = [f_int_resample_log abs(states.f_int_resample)]; EbNodB_log = [EbNodB_log states.EbNodB]; ppm_log = [ppm_log states.ppm]; f_log = [f_log; states.f]; Sf_log = [Sf_log; states.Sf']; if (test_frame_mode == 1) states = ber_counter(states, test_frame, rx_bits_buf); if states.ber_state == 1 states.verbose = 0; end end if (test_frame_mode == 6) % || (test_frame_mode == 8) states = ber_counter_packet(states, test_frame, rx_bits_buf); end else finished = 1; end if frames > max_frames finished=1; end end printf("frames: %d\n", frames); fclose(fin); if noplot == 0 printf("plotting...\n"); figure(1); clf; plot(f_log); title('Tone Freq Estimates'); figure(2); plot(f_int_resample_log','+') title('Integrator outputs for each tone'); figure(3); clf subplot(211) plot(norm_rx_timing_log) axis([1 frames -0.5 0.5]) title('norm fine timing') subplot(212) plot(states.nerr_log) title('num bit errors each frame') figure(4); clf plot(EbNodB_log); title('Eb/No estimate') figure(5); clf rx_nowave = rx(1000:length(rx)); % skip past wav header if it's a wave file subplot(211) plot(real(rx_nowave)); title('input signal to demod (1 sec)') xlabel('Time (samples)'); %axis([1 states.Fs -35000 35000]) % normalise spectrum to 0dB full scale with sine wave input subplot(212); if sample_size == "int16" max_value = 32767; end if sample_size == "uint8" max_value = 127; end RxdBFS = 20*log10(abs(fft(rx_nowave(1:states.Fs)))) - 20*log10((states.Fs/2)*max_value); plot(RxdBFS) axis([1 states.Fs/2 -80 0]) xlabel('Frequency (Hz)'); figure(6); clf plot(ppm_log) title('Sample clock (baud rate) offset in PPM'); figure(7); clf; mesh(Sf_log(1:10,:)); end if (test_frame_mode == 1) || (test_frame_mode == 6) printf("frames: %d Tbits: %d Terrs: %d BER %4.3f EbNo: %3.2f\n", frames, states.Tbits,states. Terrs, states.Terrs/states.Tbits, mean(EbNodB_log)); end % we can decode both protocols at the same time if (test_frame_mode == 4) npackets = extract_and_print_rtty_packets(states, rtty, rx_bits_log, rx_bits_sd_log) printf("Received %d packets\n", npackets); end if (test_frame_mode == 5) corr_log = extract_and_decode_binary_packets(states, binary, rx_bits_log); figure(8); clf plot(corr_log); hold on; plot([1 length(corr_log)],[binary.uw_thresh binary.uw_thresh],'g'); hold off; title('UW correlation'); end endfunction % Over the years this modem has been used for many different FSK signals ... if exist("fsk_horus_as_a_lib") == 0 run_sim(test_frame_mode=4, M=2, frames=30, EbNodB = 20); %run_sim(5, 4, 30, 100); %rx_bits = demod_file("~/Desktop/115.wav",6,0,90); %rx_bits = demod_file("~/Desktop/fsk_800xa_rx_hackrf.wav",7); %rx_bits = demod_file("~/Desktop/2fsk_100_rx_rpi_rtlsdr_002_ledger.wav",4); %rx_bits = demod_file("~/Desktop/phorus_binary_ascii.wav",4); %rx_bits = demod_file("~/Desktop/binary/horus_160102_binary_rtty_2.wav",4); %rx_bits = demod_file("~/Desktop/horus_160102_vk5ei_capture2.wav",4); %rx_bits = demod_file("~/Desktop/horus_rtty_binary.wav",4); %rx_bits = demod_file("~/Desktop/FSK_4FSK.wav",4); %rx_bits = demod_file("t.raw",5); %rx_bits = demod_file("~/Desktop/fsk_horus_10dB_1000ppm.wav",4); %rx_bits = demod_file("~/Desktop/fsk_horus_6dB_0ppm.wav",4); %rx_bits = demod_file("test.raw",1,1); %rx_bits = .rawdemod_file("/dev/ttyACM0",1); %rx_bits = demod_file("fsk_horus_rx_1200_96k.raw",1); %rx_bits = demod_file("mp.raw",4); %rx_bits = demod_file("~/Desktop/launchbox_v2_landing_8KHz_final.wav",4); %rx_bits = demod_file("~/Desktop/fsk_800xa.wav",7); %rx_bits = demod_file("~/Desktop/rs41_96k_10s.iq16",8); end codec2-1.2.0/octave/fsk_lib.m000066400000000000000000000355711445607075400157500ustar00rootroot00000000000000% fsk_lib.m % David Rowe Oct 2015 - present % % mFSK modem, started out life as RTTY demodulator for Project % Horus High Altitude Ballon (HAB) telemetry, also used for: % % FreeDV 2400A: 4FSK UHF/UHF digital voice % Wenet.......: 100 kbit/s HAB High Def image telemetry % % Handles frequency offsets, performance right on ideal, C implementation % in codec2/src 1; function states = fsk_init(Fs, Rs, M=2, P=8, nsym=50) states.M = M; states.bitspersymbol = log2(M); states.Fs = Fs; states.Rs = Rs; states.nsym = nsym; % Number of symbols processed by demodulator in each call, also % the timing estimator window Ts = states.Ts = Fs/Rs; % number of samples per symbol assert(Ts == floor(Ts), "Fs/Rs must be an integer"); N = states.N = Ts*states.nsym; % processing buffer size, nice big window for timing est bin_width_Hz = 0.1*Rs; % we want enough DFT bins to get within 10% of the tones centre Ndft = Fs/bin_width_Hz; states.Ndft = 2.^ceil(log2(Ndft)); % round to nearest power of 2 for efficient FFT states.Sf = zeros(states.Ndft,1); % current memory of dft mag samples states.tc = 0.1; % average DFT over longtime window, accurate at low Eb/No, but slow states.nbit = states.nsym*states.bitspersymbol; % number of bits per processing frame Nmem = states.Nmem = N+2*Ts; % two symbol memory in down converted signals to allow for timing adj states.f_dc = zeros(M,Nmem); states.P = P; % oversample rate out of filter assert(Ts/states.P == floor(Ts/states.P), "Ts/P must be an integer"); states.tx_tone_separation = 2*Rs; states.nin = N; % can be N +/- Ts/P samples to adjust for sample clock offsets states.verbose = 0; states.phi = zeros(1, M); % keep down converter osc phase continuous % BER stats states.ber_state = 0; states.ber_valid_thresh = 0.05; states.ber_invalid_thresh = 0.1; states.Tbits = 0; states.Terrs = 0; states.nerr_log = 0; % extra simulation parameters states.tx_real = 1; states.dA(1:M) = 1; states.df(1:M) = 0; states.f(1:M) = 0; states.norm_rx_timing = 0; states.ppm = 0; states.prev_pkt = []; % Freq. estimator limits states.fest_fmax = Fs; states.fest_fmin = 0; states.fest_min_spacing = 0.75*Rs; states.freq_est_type = 'peak'; %printf("Octave: M: %d Fs: %d Rs: %d Ts: %d nsym: %d nbit: %d N: %d Ndft: %d fmin: %d fmax: %d\n", % states.M, states.Fs, states.Rs, states.Ts, states.nsym, states.nbit, states.N, states.Ndft, states.fest_fmin, states.fest_fmax); endfunction % modulator function function tx = fsk_mod(states, tx_bits) M = states.M; Ts = states.Ts; Fs = states.Fs; ftx = states.ftx; df = states.df; % tone freq change in Hz/s dA = states.dA; % amplitude of each tone num_bits = length(tx_bits); num_symbols = num_bits/states.bitspersymbol; tx = zeros(states.Ts*num_symbols,1); tx_phase = 0; s = 1; for i=1:states.bitspersymbol:num_bits % map bits to FSK symbol (tone number) K = states.bitspersymbol; tone = tx_bits(i:i+(K-1)) * (2.^(K-1:-1:0))' + 1; tx_phase_vec = tx_phase + (1:Ts)*2*pi*ftx(tone)/Fs; tx_phase = tx_phase_vec(Ts) - floor(tx_phase_vec(Ts)/(2*pi))*2*pi; if states.tx_real tx((s-1)*Ts+1:s*Ts) = dA(tone)*2.0*cos(tx_phase_vec); else tx((s-1)*Ts+1:s*Ts) = dA(tone)*exp(j*tx_phase_vec); end s++; % freq drift ftx += df*Ts/Fs; end states.ftx = ftx; endfunction % Estimate the frequency of the FSK tones. In some applications (such % as balloon telemetry) these may not be well controlled by the % transmitter, so we have to try to estimate them. function states = est_freq(states, sf, ntones) N = states.N; Ndft = states.Ndft; Fs = states.Fs; % This assumption is OK for balloon telemetry but may not be true in % general min_tone_spacing = states.fest_min_spacing; % set some limits to search range, which will mean some manual re-tuning fmin = states.fest_fmin; fmax = states.fest_fmax; % note 0 Hz is mapped to Ndft/2+1 via fftshift st = floor(fmin*Ndft/Fs) + Ndft/2; st = max(1,st); en = floor(fmax*Ndft/Fs) + Ndft/2; en = min(Ndft,en); #printf("Fs: %f Ndft: %d fmin: %f fmax: %f st: %d en: %d\n",Fs, Ndft, fmin, fmax, st, en) % Update mag DFT --------------------------------------------- % we break up input buffer to a series of overlapping Ndft sequences numffts = floor(length(sf)/(Ndft/2)) - 1; h = hanning(Ndft); for i=1:numffts a = (i-1)*Ndft/2+1; b = a + Ndft - 1; Sf = abs(fftshift(fft(sf(a:b) .* h, Ndft))); % Smooth DFT mag spectrum, slower to respond to changes but more % accurate. Single order IIR filter is an exponentially weighted % moving average. This means the freq est window is wider than % timing est window tc = states.tc; states.Sf = (1-tc)*states.Sf + tc*Sf; end % Search for each tone method 1 - peak pick each tone location ---------------------------------- f = []; a = []; Sf = states.Sf; for m=1:ntones [tone_amp tone_index] = max(Sf(st:en)); tone_index += st - 1; f = [f (tone_index-1-Ndft/2)*Fs/Ndft]; a = [a tone_amp]; % zero out region min_tone_spacing either side of max so we can find next highest peak % closest spacing for non-coh mFSK is Rs stz = tone_index - floor((min_tone_spacing)*Ndft/Fs); stz = max(1,stz); enz = tone_index + floor((min_tone_spacing)*Ndft/Fs); enz = min(Ndft,enz); Sf(stz:enz) = 0; end states.f = sort(f); % Search for each tone method 2 - correlate with mask with non-zero entries at tone spacings ----- % Create a mask with non-zero entries at tone spacing. Might be % smarter to use the DFT of a hanning window as mask mask = zeros(1,Ndft); mask(1:3) = 1; for m=1:ntones-1 bin = round(m*states.tx_tone_separation*Ndft/Fs); mask(bin:bin+2) = 1; end mask = mask(1:bin+2); states.mask = mask; % drag mask over Sf, looking for peak in correlation b_max = st; corr_max = 0; Sf = states.Sf; corr_log = []; for b=st:en-length(mask) corr = mask * Sf(b:b+length(mask)-1); corr_log = [corr_log corr]; if corr > corr_max corr_max = corr; b_max = b; end end foff = ((b_max-1)-Ndft/2)*Fs/Ndft; if bitand(states.verbose, 0x8) % enable this to single step through frames figure(1); clf; subplot(211); plot(Sf,'b;sf;'); hold on; plot(max(Sf)*[zeros(1,b_max) mask],'g;mask;'); hold off; subplot(212); plot(corr_log); ylabel('corr against f'); printf("foff: %4.0f\n", foff); kbhit; end states.f2 = foff + (0:ntones-1)*states.tx_tone_separation; end % ------------------------------------------------------------------------------------ % Given a buffer of nin input Rs baud FSK samples, returns nsym bits. % % nin is the number of input samples required by demodulator. This is % time varying. It will nominally be N (8000), and occasionally N +/- % Ts/2 (e.g. 8080 or 7920). This is how we compensate for differences between the % remote tx sample clock and our sample clock. This function always returns % N/Ts (e.g. 50) demodulated bits. Variable number of input samples, constant number % of output bits. function [rx_bits states] = fsk_demod(states, sf) M = states.M; N = states.N; Ndft = states.Ndft; Fs = states.Fs; Rs = states.Rs; Ts = states.Ts; nsym = states.nsym; P = states.P; nin = states.nin; verbose = states.verbose; Nmem = states.Nmem; f = states.f; assert(length(sf) == nin); % down convert and filter at rate P ------------------------------ % update filter (integrator) memory by shifting in nin samples nold = Nmem-nin; % number of old samples we retain f_dc = states.f_dc; f_dc(:,1:nold) = f_dc(:,Nmem-nold+1:Nmem); % freq shift down to around DC, ensuring continuous phase from last frame, as nin may vary for m=1:M phi_vec = states.phi(m) + (1:nin)*2*pi*f(m)/Fs; f_dc(m,nold+1:Nmem) = sf .* exp(j*phi_vec)'; states.phi(m) = phi_vec(nin); states.phi(m) -= 2*pi*floor(states.phi(m)/(2*pi)); end % save filter (integrator) memory for next time states.f_dc = f_dc; % integrate over symbol period, which is effectively a LPF, removing % the -2Fc frequency image. Can also be interpreted as an ideal % integrate and dump, non-coherent demod. We run the integrator at % rate P*Rs (1/P symbol offsets) to get outputs at a range of % different fine timing offsets. We calculate integrator output % over nsym+1 symbols so we have extra samples for the fine timing % re-sampler at either end of the array. f_int = zeros(M,(nsym+1)*P); for i=1:(nsym+1)*P st = 1 + (i-1)*Ts/P; en = st+Ts-1; for m=1:M f_int(m,i) = sum(f_dc(m,st:en)); end end states.f_int = f_int; % fine timing estimation ----------------------------------------------- % Non linearity has a spectral line at Rs, with a phase % related to the fine timing offset. See: % http://www.rowetel.com/blog/?p=3573 % We have sampled the integrator output at Fs=P samples/symbol, so % lets do a single point DFT at w = 2*pi*f/Fs = 2*pi*Rs/(P*Rs) % % Note timing non-linearity derived by experiment. Not quite sure what I'm doing here..... % but it gives 0dB impl loss for 2FSK Eb/No=9dB, testmode 1: % Fs: 8000 Rs: 50 Ts: 160 nsym: 50 % frames: 200 Tbits: 9700 Terrs: 93 BER 0.010 Np = length(f_int(1,:)); w = 2*pi*(Rs)/(P*Rs); timing_nl = sum(abs(f_int(:,:)).^2); x = timing_nl * exp(-j*w*(0:Np-1))'; norm_rx_timing = angle(x)/(2*pi); rx_timing = norm_rx_timing*P; states.x = x; states.timing_nl = timing_nl; states.rx_timing = rx_timing; prev_norm_rx_timing = states.norm_rx_timing; states.norm_rx_timing = norm_rx_timing; % estimate sample clock offset in ppm % d_norm_timing is fraction of symbol period shift over nsym symbols d_norm_rx_timing = norm_rx_timing - prev_norm_rx_timing; % filter out big jumps due to nin changes if abs(d_norm_rx_timing) < 0.2 appm = 1E6*d_norm_rx_timing/nsym; states.ppm = 0.9*states.ppm + 0.1*appm; end % work out how many input samples we need on the next call. The aim % is to keep angle(x) away from the -pi/pi (+/- 0.5 fine timing % offset) discontinuity. The side effect is to track sample clock % offsets next_nin = N; if norm_rx_timing > 0.25 next_nin += Ts/4; end if norm_rx_timing < -0.25; next_nin -= Ts/4; end states.nin = next_nin; % Now we know the correct fine timing offset, Re-sample integrator % outputs using fine timing estimate and linear interpolation, then % extract the demodulated bits low_sample = floor(rx_timing); fract = rx_timing - low_sample; high_sample = ceil(rx_timing); if bitand(verbose,0x2) printf("rx_timing: %3.2f low_sample: %d high_sample: %d fract: %3.3f nin_next: %d\n", rx_timing, low_sample, high_sample, fract, next_nin); end f_int_resample = zeros(M,nsym); rx_bits = zeros(1,nsym*states.bitspersymbol); tone_max = zeros(1,nsym); rx_nse_pow = 1E-12; rx_sig_pow = 0.0; for i=1:nsym st = i*P+1; f_int_resample(:,i) = f_int(:,st+low_sample)*(1-fract) + f_int(:,st+high_sample)*fract; % Hard decision decoding, Largest amplitude tone is the winner. % Map this FSK "symbol" back to bits, depending on M [tone_max(i) tone_index] = max(f_int_resample(:,i)); st = (i-1)*states.bitspersymbol + 1; en = st + states.bitspersymbol-1; arx_bits = dec2bin(tone_index - 1, states.bitspersymbol) - '0'; rx_bits(st:en) = arx_bits; % each filter is the DFT of a chunk of spectrum. If there is no tone in the % filter it can be considered an estimate of noise in that bandwidth rx_pows = f_int_resample(:,i) .* conj(f_int_resample(:,i)); rx_sig_pow += rx_pows(tone_index); rx_nse_pow += (sum(rx_pows) - rx_pows(tone_index))/(M-1); end states.f_int_resample = f_int_resample; % Eb/No estimation (todo: this needs some work, like calibration, low Eb/No perf, work for all M) tone_max = abs(tone_max); states.EbNodB = -6 + 20*log10(1E-6+mean(tone_max)/(1E-6+std(tone_max))); % Estimators for LDPC decoder, might be a bit rough if nsym is small rx_sig_pow = rx_sig_pow/nsym; rx_nse_pow = rx_nse_pow/nsym; states.v_est = sqrt(rx_sig_pow-rx_nse_pow); states.SNRest = rx_sig_pow/rx_nse_pow; endfunction % BER counter and test frame sync logic ------------------------------------------- % We look for test_frame in rx_bits_buf, rx_bits_buf must be twice as long as test_frame function states = ber_counter(states, test_frame, rx_bits_buf) nbit = length(test_frame); assert (length(rx_bits_buf) == 2*nbit); state = states.ber_state; next_state = state; if state == 0 % try to sync up with test frame nerrs_min = nbit; for i=1:nbit error_positions = xor(rx_bits_buf(i:nbit+i-1), test_frame); nerrs = sum(error_positions); if nerrs < nerrs_min nerrs_min = nerrs; states.coarse_offset = i; end end if nerrs_min/nbit < states.ber_valid_thresh next_state = 1; end if bitand(states.verbose,0x4) printf("coarse offset: %d nerrs_min: %d next_state: %d\n", states.coarse_offset, nerrs_min, next_state); end states.nerr = nerrs_min; end if state == 1 % we're synced up, lets measure bit errors error_positions = xor(rx_bits_buf(states.coarse_offset:states.coarse_offset+nbit-1), test_frame); nerrs = sum(error_positions); if nerrs/nbit > states.ber_invalid_thresh next_state = 0; if bitand(states.verbose,0x4) printf("coarse offset: %d nerrs: %d next_state: %d\n", states.coarse_offset, nerrs, next_state); end else states.Terrs += nerrs; states.Tbits += nbit; states.nerr_log = [states.nerr_log nerrs]; end states.nerr = nerrs; end states.ber_state = next_state; endfunction % Alternative stateless BER counter that works on packets that may have gaps between them function states = ber_counter_packet(states, test_frame, rx_bits_buf) ntestframebits = states.ntestframebits; nbit = states.nbit; % look for offset with min errors nerrs_min = ntestframebits; coarse_offset = 1; for i=1:nbit error_positions = xor(rx_bits_buf(i:ntestframebits+i-1), test_frame); nerrs = sum(error_positions); %printf("i: %d nerrs: %d\n", i, nerrs); if nerrs < nerrs_min nerrs_min = nerrs; coarse_offset = i; end end % if less than threshold count errors if nerrs_min/ntestframebits < 0.05 states.Terrs += nerrs_min; states.Tbits += ntestframebits; states.nerr_log = [states.nerr_log nerrs_min]; if bitand(states.verbose, 0x4) printf("coarse_offset: %d nerrs_min: %d\n", coarse_offset, nerrs_min); end end endfunction codec2-1.2.0/octave/fsk_lib_demo.m000066400000000000000000000062411445607075400167440ustar00rootroot00000000000000% fsk_lib_demo.m % Uncoded FSK modem demo fsk_lib; % set up waveform function [states M bits_per_frame] = modem_init(Rs,Fs,df) M = 4; states = fsk_init(Fs,Rs,M,P=8,nsym=100); bits_per_frame = 512; states.tx_real = 0; % complex signal states.tx_tone_separation = 250; states.ftx = -2.5*states.tx_tone_separation + states.tx_tone_separation*(1:M); states.fest_fmin = -Fs/2; states.fest_fmax = +Fs/2; states.fest_min_spacing = Rs/2; states.df = df; states.ber_valid_thresh = 0.1; states.ber_invalid_thresh = 0.2; end % Run a complete modem (freq and timing estimators running) at a % single Eb/No point. At low Eb/No the estimators occasionally fall % over so we get complete junk, we consider that case a packet error % and exclude it from the BER estimation. function [states ber per] = modem_run_test(EbNodB = 10, num_frames=10, Fs=8000, Rs=100, df=0, plots=0) randn('state',1); rand('state',1); [states M bits_per_frame] = modem_init(Rs, Fs, df); N = states.N; if plots; states.verbose = 0x4; end EbNo = 10^(EbNodB/10); variance = states.Fs/(states.Rs*EbNo*states.bitspersymbol); nbits = bits_per_frame*num_frames; test_frame = round(rand(1,bits_per_frame)); tx_bits = []; for f=1:num_frames tx_bits = [tx_bits test_frame]; end tx = fsk_mod(states, tx_bits); noise = sqrt(variance/2)*randn(length(tx),1) + j*sqrt(variance/2)*randn(length(tx),1); rx = tx + noise; run_frames = floor(length(rx)/N)-1; st = 1; f_log = []; f_log2 = []; rx_bits = []; rx_bits2 = []; for f=1:run_frames % extract nin samples from input stream nin = states.nin; en = st + states.nin - 1; % due to nin variations it's possible to overrun buffer if en < length(rx) sf = rx(st:en); states = est_freq(states, sf, states.M); states.f = states.f2; [arx_bits states] = fsk_demod(states, sf); rx_bits = [rx_bits arx_bits]; f_log = [f_log; states.f]; st += nin; end end num_frames=floor(length(rx_bits)/bits_per_frame); log_nerrs = []; num_frames_rx = 0; for f=1:num_frames-1 st = (f-1)*bits_per_frame + 1; en = (f+1)*bits_per_frame; states = ber_counter(states, test_frame, rx_bits(st:en)); log_nerrs = [log_nerrs states.nerr]; if states.ber_state; num_frames_rx++; end end if states.Terrs printf("Fs: %d Rs: %d df % 3.2f EbNo: %4.2f ftx: %3d frx: %3d nbits: %4d nerrs: %3d ber: %4.3f\n", Fs, Rs, df, EbNodB, num_frames, num_frames_rx, states.Tbits, states.Terrs, states.Terrs/states.Tbits); ber = states.Terrs/states.Tbits; else ber = 0.5; end if plots figure(1); clf; ideal=ones(length(f_log),1)*states.ftx; plot((1:length(f_log)),ideal(:,1),'bk;ideal;') hold on; plot((1:length(f_log)),ideal(:,2:states.M),'bk'); hold off; hold on; plot(f_log(:,1), 'linewidth', 2, 'b;peak;'); plot(f_log(:,2:states.M), 'linewidth', 2, 'b'); hold off; xlabel('Time (frames)'); ylabel('Frequency (Hz)'); figure(2); clf; plot(log_nerrs); title('Errors per frame'); end per = 1 - num_frames_rx/num_frames; end [states ber per] = modem_run_test(EbNodB=6); BER_theory=0.01579; % for Eb/No = 6dB if ber < 1.5*BER_theory printf("PASS\n"); end codec2-1.2.0/octave/fsk_lib_ldpc.m000066400000000000000000000024051445607075400167400ustar00rootroot00000000000000% fsk_lib_ldpc.m % % Library of common functions used for LDPC coded 4FSK modem experiments fsk_lib; ldpc; % set up modem waveform, real signal that an pass through a SSB radio function [states M] = modem_init(Rs,Fs,df) M = 4; if Rs == 100 P=8; end if Rs == 400 P=10; end; states = fsk_init(Fs,Rs,M,P=10,nsym=100); states.tx_real = 1; states.tx_tone_separation = Rs; if Rs == 100 states.ftx = 1500 -2.5*states.tx_tone_separation + states.tx_tone_separation*(1:M); elseif Rs == 400 states.ftx = 600 + states.tx_tone_separation*(0:M-1); else disp("unknown symbol rate"); end states.fest_fmin = 500; states.fest_fmax = 2500; states.fest_min_spacing = Rs/2; states.df = df; states.ber_valid_thresh = 0.1; states.ber_invalid_thresh = 0.2; states.amp_scale = 1000; end % set up modem waveform and LPC code function [states code_param] = fsk_lib_ldpc_init (HRA, Rs, Fs, df=0, plots=0) [states M] = modem_init(Rs, Fs, df); N = states.N; if plots; states.verbose = 0x4; end Hsize=size(HRA); states.rate = (Hsize(2)-Hsize(1))/Hsize(2); code_param = ldpc_init_user(HRA, modulation='FSK', mod_order=states.M, mapping='gray'); states.coden = code_param.coded_bits_per_frame; states.codek = code_param.data_bits_per_frame; end codec2-1.2.0/octave/fsk_lib_ldpc_demo.m000066400000000000000000000144641445607075400177540ustar00rootroot00000000000000% fsk_lib_ldpc_demo.m % % LDPC coded 4FSK modem demo, demonstrating soft dec using CML library functions fsk_lib; ldpc; % set up waveform function [states M] = modem_init(Rs,Fs,df) M = 4; states = fsk_init(Fs,Rs,M,P=8,nsym=100); states.tx_real = 0; states.tx_tone_separation = 250; states.ftx = -2.5*states.tx_tone_separation + states.tx_tone_separation*(1:M); states.fest_fmin = -Fs/2; states.fest_fmax = +Fs/2; states.fest_min_spacing = Rs/2; states.df = df; states.ber_valid_thresh = 0.1; states.ber_invalid_thresh = 0.2; end % Run a complete modem (freq and timing estimators running) at a % single Eb/No point. At low Eb/No the estimators occasionally fall % over so we get complete junk, we consider that case a packet error % and exclude it from the BER estimation. function [states uber cber cper] = modem_run_test(HRA, EbNodB = 10, num_frames=10, Fs=8000, Rs=100, df=0, plots=0) rand('seed',1); randn('seed',1); [states M] = modem_init(Rs, Fs, df); N = states.N; if plots; states.verbose = 0x4; end % set up LDPC code Hsize=size(HRA); Krate = (Hsize(2)-Hsize(1))/Hsize(2); states.rate = Krate; code_param = ldpc_init_user(HRA, modulation='FSK', mod_order=states.M, mapping='gray'); states.coden = code_param.coded_bits_per_frame; states.codek = code_param.data_bits_per_frame; % set up AWGN noise EcNodB = EbNodB + 10*log10(Krate); EcNo = 10^(EcNodB/10); variance = states.Fs/(states.Rs*EcNo*states.bitspersymbol); data_bits = round(rand(1,code_param.data_bits_per_frame)); tx_bits = []; for f=1:num_frames codeword_bits = LdpcEncode(data_bits, code_param.H_rows, code_param.P_matrix); tx_bits = [tx_bits codeword_bits]; end % modulator and AWGN channel tx = fsk_mod(states, tx_bits); noise = sqrt(variance/2)*randn(length(tx),1) + j*sqrt(variance/2)*randn(length(tx),1); rx = tx + noise; % freq estimator and demod run_frames = floor(length(rx)/N)-1; st = 1; f_log = []; rx_bits = []; rx_filt = []; for f=1:run_frames % extract nin samples from input stream nin = states.nin; en = st + states.nin - 1; % due to nin variations it's possible to overrun buffer if en < length(rx) sf = rx(st:en); states = est_freq(states, sf, states.M); states.f = states.f2; [arx_bits states] = fsk_demod(states, sf); rx_bits = [rx_bits arx_bits]; rx_filt = [rx_filt abs(states.f_int_resample)]; f_log = [f_log; states.f]; st += nin; end end % count bit errors in test frames num_frames=floor(length(rx_bits)/code_param.coded_bits_per_frame); log_nerrs = []; num_frames_rx = 0; Tbits = Terrs = Tperr = Tpackets = 0; uber = cber = 0.5; cper = 1; for f=1:num_frames-1 st = (f-1)*code_param.coded_bits_per_frame + 1; en = (f+1)*code_param.coded_bits_per_frame; states = ber_counter(states, codeword_bits, rx_bits(st:en)); log_nerrs = [log_nerrs states.nerr]; if states.ber_state num_frames_rx++; end % Using sync provided by ber_counter() state machine for LDPC frame alignment if states.ber_state st_bit = (f-1)*code_param.coded_bits_per_frame + states.coarse_offset; st_symbol = (st_bit-1)/states.bitspersymbol + 1; en_symbol = st_symbol + code_param.coded_bits_per_frame/states.bitspersymbol - 1; %printf("coded_bits: %d bps: %d st_bit: %d st_symbol: %d en_symbol: %d\n", %code_param.coded_bits_per_frame, states.bitspersymbol, st_bit, st_symbol, en_symbol); % map FSK filter outputs to LLRs, then LDPC decode (see also fsk_cml_sam.m) symL = DemodFSK(1/states.v_est*rx_filt(:,st_symbol:en_symbol), states.SNRest, 1); llr = -Somap(symL); [x_hat, PCcnt] = MpDecode(llr, code_param.H_rows, code_param.H_cols, max_iterations=100, decoder_type=0, 1, 1); Niters = sum(PCcnt~=0); detected_data = x_hat(Niters,:); Nerrs = sum(xor(data_bits, detected_data(1:code_param.data_bits_per_frame))); Terrs += Nerrs; Tbits += code_param.data_bits_per_frame; if Nerrs Tperr++; end Tpackets++; end end if states.Terrs printf("Fs: %d Rs: %d df % 3.2f EbNo: %4.2f ftx: %3d frx: %3d\n",Fs, Rs, df, EbNodB, num_frames, num_frames_rx); uber = states.Terrs/states.Tbits; cber = Terrs/Tbits; cper = Tperr/Tpackets; printf(" Uncoded: nbits: %6d nerrs: %6d ber: %4.3f\n", states.Tbits, states.Terrs, uber); printf(" Coded..: nbits: %6d nerrs: %6d ber: %4.3f\n", Tbits, Terrs, cber); printf(" Coded..: npckt: %6d perrs: %6d per: %4.3f\n", Tpackets, Tperr, cper); end if plots figure(1); clf; ideal=ones(length(f_log),1)*states.ftx; plot((1:length(f_log)),ideal(:,1),'bk;ideal;') hold on; plot((1:length(f_log)),ideal(:,2:states.M),'bk'); hold off; hold on; plot(f_log(:,1), 'linewidth', 2, 'b;peak;'); plot(f_log(:,2:states.M), 'linewidth', 2, 'b'); hold off; xlabel('Time (frames)'); ylabel('Frequency (Hz)'); figure(2); clf; plot(log_nerrs); title('Errors per frame'); end end function freq_run_curve_peak_mask(HRA, num_frames=100) EbNodB = 4:10; m4fsk_ber_theory = [0.23 0.18 0.14 0.09772 0.06156 0.03395 0.01579 0.00591 0.00168 3.39E-4]; uber_log = []; cber_log = []; cper_log = []; for ne = 1:length(EbNodB) [states uber cber cper] = modem_run_test(HRA, EbNodB(ne), num_frames); uber_log = [uber_log uber]; cber_log = [cber_log cber]; cper_log = [cper_log cper]; end figure(1); clf; EbNodB_raw = EbNodB+10*log10(states.rate) semilogy(EbNodB_raw, m4fsk_ber_theory(round(EbNodB_raw+1)), 'linewidth', 2, 'bk+-;uber theory;'); grid; hold on; semilogy(EbNodB_raw, uber_log+1E-12, 'linewidth', 2, '+-;uber;'); semilogy(EbNodB, cber_log+1E-12, 'linewidth', 2, 'r+-;cber;'); semilogy(EbNodB, cper_log+1E-12, 'linewidth', 2, 'c+-;cper;'); hold off; xlabel('Eb/No (info bits, dB)'); ylabel('BER/PER'); axis([min(EbNodB_raw) max(EbNodB) 1E-4 1]); title(sprintf("%dFSK rate %3.1f (%d,%d) Ncodewords=%d NCodewordBits=%d Fs=%d Rs=%d", states.M, states.rate, states.coden, states.codek, num_frames, states.Tbits, states.Fs, states.Rs)); print("fsk_lib_ldpc.png", "-dpng") end % Choose simulation here --------------------------------------------------- init_cml(); load H_256_512_4.mat; HRA=H; more off; % single point [states uber cber cper] = modem_run_test(HRA, EbNodB=8); if cber == 0 printf("PASS\n"); end % curve %freq_run_curve_peak_mask(HRA, 200) codec2-1.2.0/octave/gen_rn_coeffs.m000066400000000000000000000022531445607075400171230ustar00rootroot00000000000000% gen_rn_coeffs.m % David Rowe 13 april 2012 % % Generate root raised cosine (Root Nyquist) filter coefficients % thanks http://www.dsplog.com/db-install/wp-content/uploads/2008/05/raised_cosine_filter.m function coeffs = gen_rn_coeffs(alpha, T, Rs, Nsym, M) Ts = 1/Rs; n = -Nsym*Ts/2:T:Nsym*Ts/2; Nfilter = Nsym*M; Nfiltertiming = M+Nfilter+M; sincNum = sin(pi*n/Ts); % numerator of the sinc function sincDen = (pi*n/Ts); % denominator of the sinc function sincDenZero = find(abs(sincDen) < 10^-10); sincOp = sincNum./sincDen; sincOp(sincDenZero) = 1; % sin(pix/(pix) =1 for x =0 cosNum = cos(alpha*pi*n/Ts); cosDen = (1-(2*alpha*n/Ts).^2); cosDenZero = find(abs(cosDen)<10^-10); cosOp = cosNum./cosDen; cosOp(cosDenZero) = pi/4; gt_alpha5 = sincOp.*cosOp; Nfft = 4096; GF_alpha5 = fft(gt_alpha5,Nfft)/M; % sqrt causes stop band to be amplified, this hack pushes it down again for i=1:Nfft if (abs(GF_alpha5(i)) < 0.02) GF_alpha5(i) *= 0.001; endif end GF_alpha5_root = sqrt(abs(GF_alpha5)) .* exp(j*angle(GF_alpha5)); ifft_GF_alpha5_root = ifft(GF_alpha5_root); coeffs = real((ifft_GF_alpha5_root(1:Nfilter))); endfunction codec2-1.2.0/octave/gp_interleaver.m000066400000000000000000000020051445607075400173270ustar00rootroot00000000000000% gp_interleaver.m % % David Rowe May 2017 % % Golden Prime Interleaver. My interprestation of "On the Analysis and % Design of Good Algebraic Interleavers", Xie et al,eq (5). 1; % Choose b for Golden Prime Interleaver. b is chosen to be the % closest integer, which is relatively prime to N, to the Golden % section of N. function b = choose_interleaver_b(Nbits) p = primes(Nbits); i = 1; while(p(i) < Nbits/1.62) i++; end b = p(i); assert(gcd(b,Nbits) == 1, "b and Nbits must be co-prime"); end function interleaved_frame = gp_interleave(frame) Nbits = length(frame); b = choose_interleaver_b(Nbits); interleaved_frame = zeros(1,Nbits); for i=1:Nbits j = mod((b*(i-1)), Nbits); interleaved_frame(j+1) = frame(i); end endfunction function frame = gp_deinterleave(interleaved_frame) Nbits = length(interleaved_frame); b = choose_interleaver_b(Nbits); frame = zeros(1,Nbits); for i=1:Nbits j = mod((b*(i-1)), Nbits); frame(i) = interleaved_frame(j+1); end endfunction codec2-1.2.0/octave/h0p25d.mat000066400000000000000000000501511445607075400156550ustar00rootroot00000000000000MATLAB 5.0 MAT-file, Platform: MACI64, Created on: Tue May 16 14:58:04 2017 IMOxK 0 DSSxc{4S\ -vR牴b138z,2:H=oq3vv'O*%ր1BL<|Ec)YQ yMꮫ xX!E&`iuEU_]4 ;NI&Gه>.Kq1 ҩR!nT\Bʷ}mT4YopajZa @EKܥI@#>;t:T<02=Uar7d0Ѥ-@3H5,,V|]K%A6CFfwW^bmG GlGwd3&\D.M&AׂW"Ea&;@) 0 ڃ*U:y"#0b PdbH0([GJim_7x^ 3X=%3H s53t%⨂} 3n`4)2Ox(@1dY^3'Ωgmn A DQ]BmIt |Wq)qQڅ%R~'ºF/:tV :zIV#?ͣԹ:;gl`PB #텱lFI7?wRq¸Ak:hn Czq&:aw21*m`kݬ`V-DA>R\cK!(o̡xe E>""8d"J́&Pަr0*tTTsX ϑۧՕ;Z%D@A DQzK{%;WDEdeS0)I[>bV5gҙgQ[FDĝ2ӧI`ᅉG{W eD61 DQ@ W٨&64.zêF3P n"lnϊUT]o\؈%=#c?ڦuW^'|@ O{BspB#@\q P? y1f 6qħt!D/ Q_8OǜT.*u]fZԍwE{!BYsyCff˷˧R^,;0)4#0oP`Q6QFR`L<9s9~5/e>JM'Q5tBJuitÕcE*↓FxT<^n|ر EQvAkJm$@bk:f]ۇkq(`wb/FbR G?*H;"yS*ȣ I+{ SW. >E4K EQM;5X}=#5J?j?Kth,#LMDk O7gJCnQ!gSt26}S0%Uj\7f⯠{Q^A DQsK ƉBI,Yt,t q%P_Z!v?ٝIkWݟė_*0uN7 E Hr΢%{4=0& QQ B޿Y] e f+7AR*y!yۜti$ ԸwOI-oz}mk#O v?SB,($J?10  6Jnc}*Z9].1:> ԓ7!n^+巚i2UGKXN=_ Oj~ vcjfI6̿Y[; /#^ SbKj¤ʔlO8ѡ J L^k >aPسaeTXɈ);k*m[VQ6_ P?@"c-;ɤ+E,:< pM&W@=0\]D#R!h29h:GNv%꒓%(vL2?8 DQ?C"Tl\JgB|ܾ(&0IƢYgY.&Ή=[0W΄ad+6R>3 L9tla$.10 fb[lcYߵ'//A8#I0L:ܫCߠuΏkfV!ہ-aj,LL}v=4HK CQ91ǧ{fFBJ[J?$amtV[%*jɭzY;ͦO:IPF14 ܇;Mp+N"[l',+A DQ 1j6nLNy߾pPl!^-1YV;TȔ kVoQakT!h`/:l<^bFg)S`X=;A DrK3&4Soa\A-sK1Vuc(MV.X#$$nG@HO|?Jb-Be;Z$ Ȱ 5"OQꭚ_b1 DQS91I`&]\V1kl,_Ѿ_ hR:#<`BX!'Pԭ3ȭaxߏIb2RԘ Tw`qE\xrNi"/E\K0EQklkDgbLÝ_i`/m vmt~L2HBnog2CuG1cA璡%uAHc:e7lWMbY=tUOA0Dvm46Pao禕aL8$C|eNQM=3^L%)8(RF'Df9tԇ#5Md`)LުNvԱ CQvAR;c)x[L9AqGA#vi,N-VIYsC꾩-_n<wqaύ-W[ x36A DQMQd6]0,{E)}K)| FcTUヅ]eCFkQT^u_3X"Znʏ'j2׹1)y`1kA Y7fFL{pz'i/U֢M_eZA_O Z \*cQ*=bI߉ݟD(RP獤Pr`UI3Qr \I {+Pܐ@x Dߕ(c^=,VRvdVh#0>B4& zFhq( $C(E+e+w4 vJ;o^!-2`dc4aFh ɔW^ZP`79<&H@^6#[ D4  &j$!G؉EoHֱU{ DQGgMIfA :e)VnjE18T㼓O@U*=!×1J|֛#zPQ h^yVo5XKJA 7ZD I68cFbRNȆf+n 0;q*$h$ކ*Tı˥WB UY^H/bW6Sx_ qGxv/3W?pP)| .ٱ EQXmƒܳԤ֐E)kc(aF >][9=qN6\3[Q .af>1"ң#]kpeXsJ6aJuG7NA DQkbk4u: C)|Iб]j&jqhmaD!c;:NRI/κ턍FH07^# K!QVuDK /E0!d q\'C:~j!AN<+j/!0 S>AG]%la:Zz>ya^צEŵgfE,΅nA CQݹf EkZvWލ~v|kFŹe e-\tظ[Wf7g)];WԧV@UXPUylel|zA 0 DvFA4b!|R2Bf\[wCT#8^[D_õ&sN*G?`Ǚ-&L1Gf7=JrN(`5 g%'3Pa[ Q C0[B#q-S EPA Ƙ\lkahyaKe5t:d$s_kS>ހZkSwwЊYMF,}F엱 Ki5 !`CSڂOqC_N6\c3;X,5-M7 r.'"Drzm2moIBd/q ^ x  0?[wi$0,F:H$ $7@!tuͱ)$/mCdp:doZEHbڏ|u6p #fA[6L/Cm"-=10DQcDcجYK Ȣ&}}#`ψtUY'ױKdU jkYPџ4[pV No%RH*D:F6hZ/Oݽ0K^ )@Z,[@ViMo aڬ:4/H[hڇA^KEu|3){;-p!V Xuՙ/;QLm(Go 0 RRKH8Z06٤XBG ?w>rFJ6cN xU|EpᜓȖ.C/;EbͤIL55RmCޣ_{V EQvcLLQQY 'K>>BkJLg2'9 4cŝJs~`t_Em i`!{ QQ7d̻˅)JHRVp3.Y=Dֱ EQt&`w`bǠƯ[`-RB|`;>B5 ~6_c)$lӬr E J +^bj\K0D/m\ւjCc`9gL0~JH A !Ch--xyE6 J]5p!j+ P?d1k[+wƏL'ȡJI,PyBoQKL\i#A#V2e`/6(G,% 3RD`K}EzwZr\ΐ쓹1MM_#Fk /V-@ic̖:G?cQ;6"7Y\Di>0~rj1  1 CpKw@7uB1C#ZHk;:߳g`>ESK#86K}!&nh,0͛}"+Jƾ|8o! =j 6(8$I DQO@PCPv2-ȑ[[ U) ڮq/~a|.FT =IξI[+T{3kWgblВ!\1R P^3 FZ;Du ~C8̽0LʓpT8TB06fE-ɢ' pFLx^vμ`S*ĶtA?⇂\3Ļu0PiP" 'C@Dt t8J uaFmk,v/?/qCeZPT용a. jj0BG=עG~O/ Y,d[f0r\9 N&9 Lgc`cf3l,w?=NR 0K0&֤RgvXx\I$$%C_ۍ©I9gSAh8C(bl158 0CCIta$HA`kSTA‚wZBJZǕ 82ScXB%C6nJix妌l#+A?kp,:ˎ c !?Y B/t60m-q 2 ʷʖ' ݊֝mUbpџ6AhgHvR(br;NLݷ> x{tz!tODUj 1 ?ݱCD@u)c4&*qSOrLkn77ư *aQT:*~cbZ&ɒuyhkCF53f OX3E9RJA DQM܊Dj1)3`ӣiL!?浥;0Df|^<$uFq]N%4y;2#c}ts+WNl5I 1d|ǸA DQzK7(@m δ;[sa׵ _r6Lĭ>{=1Ξl>wV4R!mmDvs66mbQlxo1VpA! ޳1nP(sVSl CrFg )4H̀p!(I̱#EQ|( Q;ɰS2 ٓ-ch9ٙ&KC]jҤy++Z^zhyG]_ǑmULlL‹4A5S)(DHS!ְ ɒl"cl.0PԒ#*SQ{]JT;g<H!BJ-RA0yRWZ;pޚ8ţfRѝ1sy=FIEV (D.}3?@ue^MNW. ]4۞~q|6HBd*H(avK0rK{m IͬtÞ t)_O@L|K;u̸[-/;60,m͞jO7p/4 s #ي.jU0kI0 Bؼ: c6$zMiI;XnJ9gֱ,X}y /fLEܡdruVg^pң[+uXx~z DQ?΄IܳPdĞ^ ~gaEƘunڹe4z˰]W`B)G1eGA 0.kAКd+g řс^F14r}k(6jn<;̐SP@}1 1o BHZ7][O(@@B 2P@1 1oBফ{((@@B z; @1a!`^S0((@@B 2uԱ00 G&p*K(@@B 2P @1a!`^SL]p  d!( 1 1oHফ 2P  d! 0iw8 j.x@B 2P V 1 1oHফ  d!(@@ @1a!`^SŖG(@@B 2PC1 1oBফ{((@@B 2P1 ð?q3M ̍(  d%((@)Y1 0 ?qSM u  2P@".1 1oBফ8{((@@B 9 @1a!`^S0((@@B 2]Ա00 G&p*K(@@B 2P^ @1aQ!`^S ]p  d!(1 1oHফ 2P  d! @1aQ!`^Se!(@@B Ա00 G&p*N.X@B 2P ~ @1a!`^SŢG(@@B 2P1 1oBফz{((@@B 2P1 0 ?qSM ̙ݻ6  2P@" y1 _{| ;   (@$P-1 1oBফ{((@@B z8 @1a!`^S0wQ 2P  dԱ00 G&p*'K(@@B 2P @1aQ!`^S]p  d!(1 1oHফ 2P  d! @1aQ!`^Sۺe!(@@B Ա00 G&p*.X@B 2P  @1a!`^SŮG(@@B 2Pc1 1oBফ{((@@B 2P1 0 ?qSM ̥<  2P@"  x10 pK B@"D  1 1oBফ8{((@@B 6 @1a!`^S0wQ 2P  d[1 1oHফ.8@B 2P  0iw8 j)(@@B 2P 1 1oHফ׺ 2P  d! @1a!`^S e!(@@B Ա00 G&p*.X@B 2P  @1a!`^SźG(@@B 2P31 1oBফz{((@@B 2P1 1o BHZ7]ձ  d!(@@1 0 ?Ig 3gw(   (@$PHч@Ա00 G&p*tO,e!(@@B @1a!`^S0wQ 2P  d+1 1oHফ.8@B 2P  0iw8 j)(@@B 2P 1 1oHফﺷ 2P  d! @1a!`^S;e!(@@B cԱ00 G&p*n.X@B 2P >1 1o@HZ7] 2P  d!1 1oBফ{((@@B 2P1 1o BHZ7]ս  d!(@@V10 ֿ]5c`@"D   Ա00 G&p*OtO,e!(@@Bw @1aQ!`^S0wQ 2P  d1 1oHফ^.8@B 2P  0iw8 j)(@@B 2P6 Ա00 G&p*8{`)(@@B 2P @1a!`^Ske!(@@B 31 1oBফ  d!(@@1 0 ?qSM Gv >eD (@d@1 1oBফz{((@@B 2PԱ 01鬀!HW] 2P  d!{ԡ0 g#f(@$PH@"D_}Ա00 G&p*tO,e!(@@BG @1aQ!`^S0wQ 2P  d1 1oHফ.8@B 2P  @1aQ!`^S]p  d!(Ա00 G&p*{`)(@@B 2P> @1a!`^Se!(@@B 1 1oBফ  d!(@@1 0 ?qSM wv >eD (@d@1 ð?q3M uS P2P d3 Ա 01鬀!HW]/ 2P  d!zԡ0 k#f(@$PH@"D}Ա00 G&p*tO,e!(@@B 0iw8 j  d!(@@7 1 1oHফ.8@B 2P  @1aQ!`^S]p  d!(Ա00 G&p*8{`)(@@B 2P~ @1a!`^S˺e!(@@B S1 1oBফ  d!(@@1 1o BHZ7] 2P  d!1 1o4BHZ7])(@@B 2PԱ 01鬀!HW]G 2P  d!x10o,LXZw@B 2P  41 1oHফ{((@@B z? 0iw8 j  d!(@@ 1 1oHফ~.8@B 2P  @1a!`^Sl]p  d!(Ա00 G&p*{`)(@@B 2P @1a!`^Se!(@@B #1 1oBফ  d!(@@1 1o BHZ7]׺ 2P  d!1 1oVMW.x@B 2P xcԱ 01錀 A'ҽ]p  d!(Ա 1i/M(@@B 2P>:1 1oHফx{((@@B = 0iw8 j  d!(@@w 1 1oHফ.8@B 2P  @1a!`^S,]p  d!(S1 1oBফg 2P  d!1 0 ?qSM ؽ.D (@dB1 1oBফ  d!(@@Ա 017ɞફG(@@B 2P1 1o VMW.x@B 2P aԱ 01l@ A'ꪾӽ]p  d!(ԡ 1i& jѽN 2P  d1 1oHফ{((@@B z< 0iw8 j  d!(@@ Ա00 G&p*  d!(@@ @1a!`^S]p  d!(#1 1oBফ 2P  d!1 0 ?qSM \ٽ.D (@dB1 1oBফ  d!(@@Ա 01鬀!HW].8@B 2P {ԡ 1i, !i'8uUlO(@@B 2P Ա 01l@ A'~Խ]p  d!(ԡ 1i& j}Dv 2P  d߁1 1oHফx{((@@B : @1aQ!`^SwQ 2P  dԱ00 G&p*  d!(@@ @1a!`^S]p  d!(s1 1oBফ 2P  d!1 0 ?qSM ڽ.D (@dB1 ð?q3MJ.x@J P2P ~YԱ 01鬀!HW].8@B 2P yԱ 01${{((@@B 2PwԱ 01L@ A'>ս]p  d!(ԡ 1i& }w 2P  dǁ1 1oHফ{((@@B z9 @1aQ!`^SwQ 2P  dԱ00 G&p*  d!(@@? @1a!`^Sl]p  d!(C1 1oBফ 2P  d!1 1o BHZ7].x@B 2P Ա 1iqoDH&`u_}Uݗ @B 2P  21 1oHফ{((@@B z6 @1a!`^SwQ 2P  dC1 1oBফ.8@B 2P 1 0 ?qSM pcS (@dDJ1 1oBফߺ 2P  d!Ա 017ɞફtoe!(@@B ԡ 1i$ !i'8uU 2P  d!Ա 01l@ A'OvQ 2P  dԱ 01L@ A'ꪘtoe!(@@B |Ա 01${wG(@@B 2P !08rAzzU7@B 2P  ?Ա00 G&p* 2P  d @1a!`^SwQ 2P  d1 1oBফ.8@B 2P 1 0 ?qSM pfS (@dDJ1 1oBফ 2P  d!Ա 01鬀!HW]|{((@@B 2PzԱ 01Դ${   d!(@@Ա 01L@ A'RvQ 2P  dԱ 01l@ A'toe!(@@B ԡ 1i, !i'8uUt_b:,(@@B 2P@Ա00 G&p*[ 2P  d1 1o@HZ7]  d!(@@1 1oBফ>.8@B 2P 1 1o BHZ7]p)(@@B 2PV1 1o VMW  d!(@@ybԱ 01錀 A'7G(@@B 2PԱ 01,@ A'`ֽ]p  d!(|Ա 01 @ A'[vQ 2P  dԱ 01鬀!HW]G(@@B 2Py1 1o4BHZ7]'O(@@B 2PԱ 00@޳fn7D(@fD (@g1 1oBফx{((@@B >1 0 ?qSM O(@dD h1 1oBফ.8@B 2P Ա 01鬀!HW]  d!(@@{ԡ 1i, !i'8uU}]  d!( Ա 01l@ A'CG(@@B 2PԱ 01L@ A'`Խ]p  d!(Ա 01Դ${uoe!(@@B LԱ 01鬀!HW]CG(@@B 2Px1 ð?q3M3uS P2P d c` 0codec2-1.2.0/octave/horus_high_speed.bin000066400000000000000000000053101445607075400201560ustar00rootroot00000000000000codec2-1.2.0/octave/horus_payload_rtty.txt000066400000000000000000000240061445607075400206440ustar00rootroot00000000000000 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 0.00000000e+00 codec2-1.2.0/octave/horus_tx_bits_binary.txt000066400000000000000000000013201445607075400211430ustar00rootroot000000000000000 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 1 1 1 0 0 0 1 0 1 1 1 0 0 1 0 0 1 1 0 0 1 0 0 1 1 0 0 0 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1 0 0 1 1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 0 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 1 1 1 0 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 1 1 1 1 1 0 1 0 0 1 0 1 1 0 1 0 1 0 0 0 0 1 0 1 1 1 1 1 1 0 1 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 1 0 1 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 0 0 1 1 1 0 1 0 1 0 0 0 1 0 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 1 1 0 1 1 0 0 1 1 0 0 0 0 codec2-1.2.0/octave/ldpc.m000066400000000000000000000154071445607075400152550ustar00rootroot00000000000000% ldpc.m % #{ David Rowe 2013 Octave functions for the CML LDPC library. To install and compile CML support: $ sudo apt-get install liboctave-dev $ git clone git@github.com:drowe67/cml.git $ cd cml $ make If you have configured codec2 with cmake -DUNITTEST=1, then you will already have CML (e.g. under build_linux/cml), as it is used to run unit tests. To use CML when running Octave simulations from the Octave CLI, set an environment variable for CML_PATH in your shell or in your codec2/octave/.octaverc file: setenv("CML_PATH",sprintf("%s/codec2/build_linux/cml",getenv("HOME"))) #} 1; function init_cml() currentdir = pwd; path_to_cml = getenv("CML_PATH"); if exist(path_to_cml, 'dir') == 7 cd(path_to_cml) CmlStartup cd(currentdir); else printf("\n---------------------------------------------------\n"); printf("Can't start CML in path: %s\n", path_to_cml); printf("See CML_PATH instructions at top of this script (ldpc.m)\n"); printf("-----------------------------------------------------\n\n"); assert(0); end end % init using built in WiMax or DVSB2 code function code_param = ldpc_init_builtin(code, rate, framesize, modulation, mod_order, mapping, constellation) if strcmp(code,'wimax') [code_param.H_rows, code_param.H_cols, code_param.P_matrix] = InitializeWiMaxLDPC( rate, framesize, 0 ); end if strcmp(code,'dvbs2') [code_param.H_rows, code_param.H_cols, code_param.P_matrix] = InitializeDVBS2( rate, framesize); end if nargin == 7 code_param.S_matrix = constellation; else if length(mapping) == 0 code_param.S_matrix = CreateConstellation( modulation, mod_order); else code_param.S_matrix = CreateConstellation( modulation, mod_order, mapping ); end end code_param.bits_per_symbol = log2(mod_order); code_param.ldpc_data_bits_per_frame = length(code_param.H_cols) - length(code_param.P_matrix); code_param.ldpc_parity_bits_per_frame = framesize - code_param.ldpc_data_bits_per_frame; code_param.ldpc_coded_bits_per_frame = framesize; code_param.data_bits_per_frame = code_param.ldpc_data_bits_per_frame; code_param.coded_bits_per_frame = code_param.ldpc_coded_bits_per_frame; code_param.coded_syms_per_frame = code_param.coded_bits_per_frame/code_param.bits_per_symbol; endfunction % init using user supplied code function [code_param framesize rate] = ldpc_init_user(HRA, modulation, mod_order, mapping, constellation) [Nr Nc] = size(HRA); rate = (Nc-Nr)/Nc; framesize = Nc; [H_rows, H_cols] = Mat2Hrows(HRA); code_param.H_rows = H_rows; code_param.H_cols = H_cols; code_param.P_matrix = []; if nargin == 5 code_param.S_matrix = constellation; else if length(mapping) == 0 code_param.S_matrix = CreateConstellation( modulation, mod_order); else code_param.S_matrix = CreateConstellation( modulation, mod_order, mapping ); end end code_param.bits_per_symbol = log2(mod_order); code_param.ldpc_data_bits_per_frame = length(code_param.H_cols) - length(code_param.P_matrix); code_param.ldpc_parity_bits_per_frame = framesize - code_param.ldpc_data_bits_per_frame; code_param.ldpc_coded_bits_per_frame = framesize; % these variables support 1's stuffing (not using all data bits to lower code rate) code_param.data_bits_per_frame = code_param.ldpc_data_bits_per_frame; code_param.coded_bits_per_frame = code_param.ldpc_coded_bits_per_frame; code_param.coded_syms_per_frame = code_param.coded_bits_per_frame/code_param.bits_per_symbol; endfunction function [codeword s] = ldpc_enc(data, code_param) if code_param.data_bits_per_frame != code_param.ldpc_data_bits_per_frame % optionally lower the code rate by "1's stuffing" - setting Nunused data bits to 1 Nunused = code_param.ldpc_data_bits_per_frame - code_param.data_bits_per_frame; codeword = LdpcEncode([data ones(1,Nunused)], code_param.H_rows, code_param.P_matrix); % remove unused data bits from codeword, as they are known to the receiver and don't need to be transmitted codeword = [ codeword(1:code_param.data_bits_per_frame) codeword(code_param.ldpc_data_bits_per_frame+1:end) ]; else codeword = LdpcEncode( data, code_param.H_rows, code_param.P_matrix ); end s = Modulate( codeword, code_param.S_matrix ); endfunction function [detected_data paritychecks] = ldpc_dec(code_param, max_iterations, ... demod_type, decoder_type, r, ... EsNo, fading) % handle "1's stuffing" case where we don't use all data bits Nunused = code_param.ldpc_data_bits_per_frame - code_param.data_bits_per_frame; symbol_likelihood = Demod2D( r, code_param.S_matrix, EsNo, fading); % initialize the extrinsic decoder input input_somap_c = zeros(1, code_param.ldpc_coded_bits_per_frame - Nunused); bit_likelihood = Somap( symbol_likelihood, demod_type, input_somap_c ); input_decoder_c = bit_likelihood(1:(code_param.ldpc_coded_bits_per_frame-Nunused)); % insert "very likely" LLRs for unused data bits (in 1's stuffing case) input_decoder_c = [input_decoder_c(1:code_param.data_bits_per_frame) ... 100*ones(1,Nunused) ... input_decoder_c(code_param.data_bits_per_frame+1:end)]; [x_hat paritychecks] = MpDecode( -input_decoder_c, code_param.H_rows, code_param.H_cols, ... max_iterations, decoder_type, 1, 1); [mx mx_ind] = max(paritychecks); detected_data = x_hat(mx_ind,:); endfunction % Packs a binary array into an array of 8 bit bytes, MSB first function packed = packmsb(unpacked) packed = zeros(1,floor(length(unpacked)+7)/8); bit = 7; byte = 1; for i=1:length(unpacked) packed(byte) = bitor(packed(byte), bitshift(unpacked(i),bit)); bit--; if (bit < 0) bit = 7; byte++; end end endfunction % unpacks an array of 8 bit bytes into a binary array of unpacked bits, MSB first function unpacked = unpackmsb(packed) bit = 7; byte = 1; for i=1:length(packed)*8 unpacked(i) = bitand(bitshift(packed(byte), -bit), 1); bit--; if (bit < 0) bit = 7; byte++; end end endfunction % symbol interleaver that acts on bits 2 at a time function y = interleave_bits(interleaver, x) y = zeros(1,length(x)); for i = 1:length(interleaver) dst = interleaver(i); y(2*(dst-1)+1:2*dst) = x(2*(i-1)+1:2*(i)); end endfunction % symbol de-interleaver function x = deinterleave_symbols(interleaver, y) for i = 1:length(interleaver) x(i) = y(interleaver(i)); end endfunction codec2-1.2.0/octave/ldpc_fsk_lib.m000066400000000000000000000202211445607075400167340ustar00rootroot00000000000000% lpdc_fsk_lib.m % April 2015 % % Library version of ldpc4.m written by vk5dsp. Application is high bit rate % balloon telemtry % % LDPC demo % Call the CML routines and simulate one set of SNRs. % This function is an updated version of ldpc3() which uses less % of the CML functions % % sim_in the input parameter structure % sim_out contains BERs and other stats for each value of SNR % resfile is the result file % 1; function sim_out = ldpc5(sim_in, resfile, testmode, genie_Es, logging=0); if nargin<4, testmode = 0; end estEsN0 = 0; HRA = sim_in.HRA; framesize = sim_in.framesize; rate = sim_in.rate; mod_order = sim_in.mod_order; Lim_Ferrs = sim_in.Lim_Ferrs; Ntrials = sim_in.Ntrials; Esvec = sim_in.Esvec; demod_type = 0; decoder_type = 0; max_iterations = 100; code_param = ldpc_init(HRA, mod_order); bps = code_param.bits_per_symbol; if (logging) fod = fopen('decode.log', 'w'); fwrite(fod, 'Es estEs Its secs \n'); end for ne = 1:length(Esvec) Es = Esvec(ne); EsNo = 10^(Es/10); Terrs = 0; Tbits =0; Ferrs =0; for nn = 1: Ntrials data = round( rand( 1, code_param.data_bits_per_frame ) ); codeword = ldpc_encode(code_param, data); code_param.code_bits_per_frame = length( codeword ); Nsymb = code_param.code_bits_per_frame/bps; if testmode==1 f1 = fopen("dat_in2064.txt", "w"); for k=1:length(data); fprintf(f1, "%u\n", data(k)); end fclose(f1); system("./ra_enc"); load("dat_op2064.txt"); pbits = codeword(length(data)+1:end); % print these to compare with C code dat_op2064(1:16)', pbits(1:16) differences_in_parity = sum(abs(pbits - dat_op2064')) pause; end % modulate % s = Modulate( codeword, code_param.S_matrix ); s= 1 - 2 * codeword; code_param.symbols_per_frame = length( s ); variance = 1/(2*EsNo); noise = sqrt(variance)* randn(1,code_param.symbols_per_frame); % + j*randn(1,code_param.symbols_per_frame) ); r = s + noise; Nr = length(r); [detected_data Niters] = ldpc_decode(r, code_param, max_iterations, decoder_type); error_positions = xor( detected_data(1:code_param.data_bits_per_frame), data ); Nerrs = sum( error_positions); t = clock; t = fix(t(5)*60+t(6)); if (logging) fprintf(fod, ' %3d %4d\n', Niters, t); end if Nerrs>0, fprintf(1,'x'), else fprintf(1,'.'), end if (rem(nn, 50)==0), fprintf(1,'\n'), end if Nerrs>0, Ferrs = Ferrs +1; end Terrs = Terrs + Nerrs; Tbits = Tbits + code_param.data_bits_per_frame; if Ferrs > Lim_Ferrs, disp(['exit loop with #cw errors = ' ... num2str(Ferrs)]); break, end end TERvec(ne) = Terrs; FERvec(ne) = Ferrs; BERvec(ne) = Terrs/ Tbits; Ebvec = Esvec - 10*log10(code_param.bits_per_symbol * rate); cparams= [code_param.data_bits_per_frame code_param.symbols_per_frame ... code_param.code_bits_per_frame]; sim_out.BERvec = BERvec; sim_out.Ebvec = Ebvec; sim_out.FERvec = FERvec; sim_out.TERvec = TERvec; sim_out.cpumins = cputime/60; if nargin > 2 save(resfile, 'sim_in', 'sim_out', 'cparams'); disp(['Saved results to ' resfile ' at Es =' num2str(Es) 'dB']); end end end function code_param = ldpc_init(HRA, mod_order) code_param.bits_per_symbol = log2(mod_order); [H_rows, H_cols] = Mat2Hrows(HRA); code_param.H_rows = H_rows; code_param.H_cols = H_cols; code_param.P_matrix = []; code_param.data_bits_per_frame = length(code_param.H_cols) - length( code_param.P_matrix ); code_param.symbols_per_frame = length(HRA); end function codeword = ldpc_encode(code_param, data) codeword = LdpcEncode( data, code_param.H_rows, code_param.P_matrix ); endfunction % Takes soft decision symbols (e.g. output of 2fsk demod) and converts % them to LLRs. Note we calculate mean and var manually instead of % using internal functions. This was required to get a bit exact % results against the C code. function llr = sd_to_llr(sd) sd = sd / mean(abs(sd)); x = sd - sign(sd); sumsq = sum(x.^2); summ = sum(x); mn = summ/length(sd); estvar = sumsq/length(sd) - mn*mn; estEsN0 = 1/(2* estvar + 1E-3); llr = 4 * estEsN0 * sd; endfunction % LDPC decoder - note it estimates EsNo from received symbols function [detected_data Niters] = ldpc_decode(r, code_param, max_iterations, decoder_type) % in the binary case the LLRs are just a scaled version of the rx samples .. #{ r = r / mean(abs(r)); % scale for signal unity signal estvar = var(r-sign(r)); estEsN0 = 1/(2* estvar + 1E-3); input_decoder_c = 4 * estEsN0 * r; #} llr = sd_to_llr(r); [x_hat, PCcnt] = MpDecode(llr, code_param.H_rows, code_param.H_cols, ... max_iterations, decoder_type, 1, 1); Niters = sum(PCcnt!=0); detected_data = x_hat(Niters,:); if isfield(code_param, "c_include_file") ldpc_gen_h_file(code_param, max_iterations, decoder_type, llr, x_hat, detected_data); end end % One application of FSK LDPC work is SSTV. This function generates a % simulated frame for testing function frame_rs232 = gen_sstv_frame load('H2064_516_sparse.mat'); HRA = full(HRA); mod_order = 2; code_param = ldpc_init(HRA, mod_order); % generate payload data bytes and checksum data = floor(rand(1,256)*256); %data = zeros(1,256); checksum = crc16(data); data = [data hex2dec(checksum(3:4)) hex2dec(checksum(1:2))]; % unpack bytes to bits and LPDC encode mask = 2.^(7:-1:0); % MSB to LSB unpacking to match python tx code. unpacked_data = []; for b=1:length(data) unpacked_data = [unpacked_data bitand(data(b), mask) > 0]; end codeword = [ldpc_encode(code_param, unpacked_data) 0 0 0 0]; % pad with 0s to get integer number of bytes % pack back into bytes to match python code lpacked_codeword = length(codeword)/8; packed_codeword = zeros(1,lpacked_codeword); for b=1:lpacked_codeword st = (b-1)*8 + 1; packed_codeword(b) = sum(codeword(st:st+7) .* mask); end % generate header bits header = [hex2dec('55')*ones(1,16) hex2dec('ab') hex2dec('cd') hex2dec('ef') hex2dec('01')]; % now construct entire unpacked frame packed_frame = [header packed_codeword]; mask = 2.^(0:7); % LSB to MSB packing for header lpacked_frame = length(packed_frame); frame = []; for b=1:lpacked_frame frame = [frame bitand(packed_frame(b), mask) > 0]; end % insert rs232 framing bits frame_rs232 = []; for b=1:8:length(frame) frame_rs232 = [frame_rs232 0 frame(b:b+7) 1]; end %printf("codeword: %d unpacked_header: %d frame: %d frame_rs232: %d \n", length(codeword), length(unpacked_header), length(frame), length(frame_rs232)); endfunction % calculates and compares the checksum of a SSTV frame, that has RS232 % start and stop bits function checksum_ok = sstv_checksum(frame_rs232) l = length(frame_rs232); expected_l = (256+2)*10; assert(l == expected_l); % extract rx bytes rx_data = zeros(1,256); mask = 2.^(0:7); % LSB to MSB k = 1; for i=1:10:expected_l rx_bits = frame_rs232(i+1:i+8); rx_data(k) = sum(rx_bits .* mask); k++; end % calc rx checksum and extract tx checksum rx_checksum = crc16(rx_data(1:256)); tx_checksum = sprintf("%02X%02X", rx_data(258), rx_data(257)); %printf("tx_checksum: %s rx_checksum: %s\n", tx_checksum, rx_checksum); checksum_ok = strcmp(tx_checksum, rx_checksum); endfunction codec2-1.2.0/octave/ldpcut.m000066400000000000000000000227501445607075400156250ustar00rootroot00000000000000% ldpcut.m % % David Rowe 18 Dec 2013 % % Octave LDPC unit test script using CML library, based on simulation % by Bill Cowley VK5DSP % Libraries we need ldpc; qpsk; function sim_out = run_simulation(sim_in) % Note this is effective Eb/No of payload data bits, sorta thing we % plot on BER versus Eb/No graphs of decoded data. So if we have a % rate 1/2 code, each codeword bit will have Eb/No - 3dB. EbNodBvec = sim_in.EbNodBvec; Ntrials = sim_in.Ntrials; verbose = sim_in.verbose; % Init LDPC code ------------------------------------ mod_order = 4; bps = 2; modulation = 'QPSK'; mapping = 'gray'; demod_type = 0; decoder_type = 0; max_iterations = 100; if strcmp(sim_in.code,'wimax') rate = 0.5; framesize = 576*4; code_param = ldpc_init_builtin(sim_in.code, rate, framesize, modulation, mod_order, mapping); elseif strcmp(sim_in.code,'dvbs2') framesize = 16200; rate = 0.8; code_param = ldpc_init_builtin(sim_in.code, rate, framesize, modulation, mod_order, mapping); rate = code_param.ldpc_data_bits_per_frame/code_param.ldpc_coded_bits_per_frame; else % deal with H stored in different file formats tempStruct = load(sim_in.code); b = fieldnames(tempStruct); ldpcArrayName = b{1,1}; % extract the array from the struct HRA = tempStruct.(ldpcArrayName); [code_param framesize rate] = ldpc_init_user(HRA, modulation, mod_order, mapping); end % optional 1's stuffing if isfield(sim_in, "data_bits_per_frame") code_param.data_bits_per_frame = sim_in.data_bits_per_frame; code_param.coded_bits_per_frame = code_param.data_bits_per_frame + code_param.ldpc_parity_bits_per_frame; code_param.coded_syms_per_frame = code_param.coded_bits_per_frame/code_param.bits_per_symbol; rate = code_param.data_bits_per_frame/code_param.coded_bits_per_frame; printf("data_bits_per_frame = %d\n", code_param.data_bits_per_frame); printf("coded_bits_per_frame = %d\n", code_param.coded_bits_per_frame); printf("coded_syms_per_frame = %d\n", code_param.coded_syms_per_frame); printf("rate: %f\n",rate); end % ---------------------------------- % run simulation at each Eb/No point % ---------------------------------- for ne = 1:length(EbNodBvec) randn('seed',1); rand('seed',1); % Given Eb/No of payload data bits, work out Es/No we need to % apply to each channel symbol: % % i) Each codeword bit gets noise: Eb/No - 3 (for a rate 1/2 code) % ii) QPSK means two bits/symbol.: Es/No = Eb/No + 3 % % -> which neatly cancel out ...... (at least for rate 1/2) EsNodB = EbNodBvec(ne) + 10*log10(rate) + 10*log10(bps); EsNo = 10^(EsNodB/10); variance = 1/EsNo; Tbits = Terrs = Ferrs = Terrs_raw = Tbits_raw = 0; tx_bits = []; tx_symbols = []; % Encode a bunch of frames for nn=1:Ntrials atx_bits = round(rand( 1, code_param.data_bits_per_frame)); tx_bits = [tx_bits atx_bits]; [tx_codeword atx_symbols] = ldpc_enc(atx_bits, code_param); tx_symbols = [tx_symbols atx_symbols]; end rx_symbols = tx_symbols; % Add AWGN noise, 0.5 factor splits power evenly between Re & Im noise = sqrt(variance*0.5)*(randn(1,length(tx_symbols)) + j*randn(1,length(tx_symbols))); rx_symbols += noise; % Decode a bunch of frames rx_bits_log = []; for nn = 1: Ntrials st = (nn-1)*code_param.coded_syms_per_frame + 1; en = (nn)*code_param.coded_syms_per_frame; % coded arx_codeword = ldpc_dec(code_param, max_iterations, demod_type, decoder_type, rx_symbols(st:en), EsNo, ones(1,code_param.coded_syms_per_frame)); st = (nn-1)*code_param.data_bits_per_frame + 1; en = (nn)*code_param.data_bits_per_frame; error_positions = xor(arx_codeword(1:code_param.data_bits_per_frame), tx_bits(st:en)); Nerrs = sum(error_positions); rx_bits_log = [rx_bits_log arx_codeword(1:code_param.data_bits_per_frame)]; % uncoded - to est raw BER compare data symbols as code is systematic raw_rx_bits = []; for s=1:code_param.coded_syms_per_frame*rate sym_st = (nn-1)*code_param.coded_syms_per_frame + 1; raw_rx_bits = [raw_rx_bits qpsk_demod(rx_symbols(sym_st+s-1))]; end Nerrs_raw = sum(xor(raw_rx_bits, tx_bits(st:en))); Nbits_raw = code_param.data_bits_per_frame; if verbose == 2 % print "." if frame decoded without errors, 'x' if we can't decode if Nerrs > 0, printf('x'), else printf('.'), end end if Nerrs > 0, Ferrs = Ferrs + 1; end Terrs += Nerrs; Tbits += code_param.ldpc_data_bits_per_frame; Terrs_raw += Nerrs_raw; Tbits_raw += Nbits_raw; end if verbose printf("\nCoded EbNodB: % 5.2f BER: %4.3f Tbits: %6d Terrs: %6d FER: %4.3f Tframes: %d Ferrs: %d\n", EbNodBvec(ne), Terrs/Tbits, Tbits, Terrs, Ferrs/Ntrials, Ntrials, Ferrs); EbNodB_raw = EbNodBvec(ne) + 10*log10(rate); printf("Raw EbNodB..: % 5.2f BER: %4.3f Tbits: %6d Terrs: %6d\n", EbNodB_raw, Terrs_raw/Tbits_raw, Tbits_raw, Terrs_raw); end sim_out.rate = rate; sim_out.BER(ne) = Terrs/Tbits; sim_out.PER(ne) = Ferrs/Ntrials; end endfunction % --------------------------------------------------------------------------------- % 1/ Simplest possible one frame simulation % --------------------------------------------------------------------------------- function test1_single(code="wimax", data_bits_per_frame) printf("\nTest 1:Single -----------------------------------\n"); mod_order = 4; modulation = 'QPSK'; mapping = 'gray'; demod_type = 0; decoder_type = 0; max_iterations = 100; % CML library has a bunch of different framesizes available if strcmp(code,'wimax') framesize = 576*2; rate = 0.5; end if strcmp(code,'dvbs2') framesize = 16200; rate = 0.6; end code_param = ldpc_init_builtin(code, rate, framesize, modulation, mod_order, mapping); % optional 1's stuffing if nargin == 2 code_param.data_bits_per_frame = data_bits_per_frame; code_param.coded_bits_per_frame = code_param.data_bits_per_frame + code_param.ldpc_parity_bits_per_frame; code_param.coded_syms_per_frame = code_param.coded_bits_per_frame/code_param.bits_per_symbol; framesize = code_param.coded_bits_per_frame; end % find out what rate we actually obtained ... rate = code_param.data_bits_per_frame/code_param.coded_bits_per_frame; printf("Ndata_bits: %d Nparity_bits: %d Ncodeword_bits: %d rate: %3.2f\n", code_param.data_bits_per_frame, code_param.ldpc_parity_bits_per_frame, code_param.coded_bits_per_frame, rate); % decoder needs an estimated channel EsNo (linear ratio, not dB) EsNo = 10; tx_bits = round(rand(1, code_param.data_bits_per_frame)); [tx_codeword, qpsk_symbols] = ldpc_enc(tx_bits, code_param); rx_codeword = ldpc_dec(code_param, max_iterations, demod_type, decoder_type, qpsk_symbols, EsNo, ones(1,length(qpsk_symbols))); errors_positions = xor(tx_bits, rx_codeword(1:framesize*rate)); Nerr = sum(errors_positions); printf("Nerr: %d\n", Nerr); endfunction % --------------------------------------------------------------------------------- % 2/ Run a bunch of trials at just one EsNo point % --------------------------------------------------------------------------------- function test2_multiple(code, Ntrials=100, data_bits_per_frame) printf("\nTest 2: Multiple: %s ----------------------------\n", code); % these are inputs for Wimax mode, e.g. framesize defines code used sim_in.code = code; sim_in.verbose = 2; sim_in.Ntrials = Ntrials; sim_in.EbNodBvec = 3; if nargin == 3 sim_in.data_bits_per_frame = data_bits_per_frame; end run_simulation(sim_in); end % --------------------------------------------------------------------------------- % 3/ Lets draw some Eb/No versus BER curves % --------------------------------------------------------------------------------- function test3_curves(code,fg=1,Ntrials=100) printf("\nTest 3: Curves: %s -------------------------------------\n", code); sim_in.code = code; sim_in.verbose = 2; sim_in.Ntrials = Ntrials; sim_in.EbNodBvec = -2:10; sim_out = run_simulation(sim_in); EbNodB = sim_in.EbNodBvec; uncoded_awgn_ber_theory = 0.5*erfc(sqrt(10.^(EbNodB/10))); figure(fg); clf; title(code); semilogy(EbNodB, uncoded_awgn_ber_theory,'r-+;AWGN;') hold on; semilogy(EbNodB, sim_out.BER+1E-10,'g-+;AWGN LDPC;'); hold off; grid('minor') xlabel('Eb/No (dB)') ylabel('BER') axis([min(EbNodB) max(EbNodB) 1E-3 1]) legend('boxoff'); end % -------------------------------------------------------------------------------- % START SIMULATIONS % -------------------------------------------------------------------------------- more off; format; % --------------------------------------------------------------------------------- % Start CML library (see CML set up instructions in ldpc.m) % --------------------------------------------------------------------------------- init_cml(); % Ctest kicks off these tests using env variables if getenv("CTEST_SINGLE") test1_single return; end if getenv("CTEST_ONE_STUFFING") test2_multiple("wimax",10,576); return; end % Uncomment and try some of these tests if you like .... %test3_curves("H_1024_2048_4f.mat",1) %test1_single("dvbs2") %test3_curves("dvbs2",1,10) %test2_multiple("wimax") %test2_multiple("H2064_516_sparse.mat") %test3_curves("wimax",1) %test3_curves("H2064_516_sparse.mat",2) %test3_curves("H_256_768_22.txt",2) %test3_curves("H_4096_8192_3d.mat") %test3_curves("H_212_158.mat") codec2-1.2.0/octave/linreg.m000066400000000000000000000013671445607075400156130ustar00rootroot00000000000000% linreg.m % David Rowe April 2015 % % Based on: % http://stackoverflow.com/questions/5083465/fast-efficient-least-squares-fit-algorithm-in-c % % finds y = mx + b to best fit n points x and y function [m b] = linreg(x,y,n) sumx = 0.0; % sum of x sumx2 = 0.0; % sum of x^2 sumxy = 0.0; % sum of x * y sumy = 0.0; % sum of y sumy2 = 0.0; % sum of y**2 for i=1:n sumx += x(i); sumx2 += x(i)^2; sumxy += x(i) * y(i); sumy += y(i); sumy2 += y(i)^2; end denom = (n * sumx2 - sumx*sumx); if denom == 0 % singular matrix. can't solve the problem. m = 0; b = 0; else m = (n * sumxy - sumx * sumy) / denom; b = (sumy * sumx2 - sumx * sumxy) / denom; end endfunction codec2-1.2.0/octave/load_raw.m000066400000000000000000000002251445607075400161130ustar00rootroot00000000000000% load_raw.m % David Rowe 7 Oct 2009 function s = load_raw(fn, len=Inf) fs=fopen(fn,"rb"); s = fread(fs,len,"short"); fclose(fs); endfunction codec2-1.2.0/octave/mag_to_phase.m000066400000000000000000000036651445607075400167640ustar00rootroot00000000000000% mag_to_phase.m % % David Rowe Sep 2015 % % Slightly modified version of http://www.dsprelated.com/showcode/20.php % % Given a magnitude spectrum in dB, returns a minimum-phase phase % spectra. Both must be sampled at a Nfft. My understanding of this % is rather dim, but a working example is good place to start! function [phase s] = mag_to_phase(Gdbfk, Nfft = 512, verbose_en = 0) Ns = length(Gdbfk); if Ns~=Nfft/2+1, error("confusion"); end Sdb = [Gdbfk,Gdbfk(Ns-1:-1:2)]; % install negative-frequencies S = 10 .^ (Sdb/20); % convert to linear magnitude s = ifft(S); % desired impulse response s = real(s); % any imaginary part is quantization noise tlerr = 100*norm(s(round(0.9*Ns:1.1*Ns)))/norm(s); if verbose_en disp(sprintf([' Time-limitedness check: Outer 20%% of impulse ' ... 'response is %0.2f %% of total rms'],tlerr)); end % = 0.02 percent if verbose_en if tlerr>1.0 % arbitrarily set 1% as the upper limit allowed disp(' Increase Nfft and/or smooth Sdb\n'); end end c = ifft(Sdb); % compute real cepstrum from log magnitude spectrum % Check aliasing of cepstrum (in theory there is always some): caliaserr = 100*norm(c(round(Ns*0.9:Ns*1.1)))/norm(c); if verbose_en disp(sprintf([' Cepstral time-aliasing check: Outer 20%% of ' ... 'cepstrum holds %0.2f %% of total rms\n'],caliaserr)); end if verbose_en if caliaserr>1.0 % arbitrary limit disp(' Increase Nfft and/or smooth Sdb to shorten cepstrum\n'); end end % Fold cepstrum to reflect non-min-phase zeros inside unit circle: cf = [c(1), c(2:Ns-1)+c(Nfft:-1:Ns+1), c(Ns), zeros(1,Nfft-Ns)]; Cf = fft(cf); % = dB_magnitude + j * minimum_phase % The maths says we are meant to be using log(x), not 20*log10(x), % so we need to scale the phase to account for this: % log(x) = 20*log10(x)/scale; scale = (20/log(10)); phase = imag(Cf)/scale; endfunction codec2-1.2.0/octave/melvq.m000066400000000000000000000110621445607075400154500ustar00rootroot00000000000000% melvq.m % David Rowe Aug 2015 % % Experimenting with VQ design for mel LSPs, also handy VQ searching routines 1; % train up multi-stage VQ % ~/codec2-dev/build_linux/src$ sox -r 8000 -s -2 ../../wav/all.wav -t raw -r 8000 -s -2 - sinc 300 sinc -2600 | ./c2sim - --lpc 6 --lpcpf --lspmel --dump all -o - | play -t raw -r 8000 -s -2 - vol 3 % % octave:> load ../build_linux/src/all_mel.txt % octave:> melvq; vq = trainvq(all_mel, 64, 3); % octave:> save vq function vq = trainvq(training_data, Nvec, stages, city_en=0) vq = []; for i=1:stages if city_en [idx centers] = kmeans(training_data, Nvec, 'DISTANCE', 'cityblock'); else [idx centers] = kmeans(training_data, Nvec); end quant_error = centers(idx,:) - training_data; printf("mse stage %d: %f\n", i, mean(std(quant_error))); training_data = quant_error; vq(:,:,i) = centers; end end function [mse_list index_list] = search_vq(vq, target, m) [Nvec order] = size(vq); mse = zeros(1, Nvec); % find mse for each vector for i=1:Nvec mse(i) = sum((target - vq(i,:)) .^2); end % sort and keep top m matches [mse_list index_list ] = sort(mse); mse_list = mse_list(1:m); index_list = index_list(1:m); endfunction % Search multi-stage VQ, retaining m best candidates at each stage function [res output_vecs ind] = mbest(vqset, input_vecs, m) [Nvec order stages] = size(vqset); [Ninput tmp] = size(input_vecs); res = []; % residual error after VQ output_vecs = []; % quantised output vectors ind = []; % index of vqs for i=1:Ninput % first stage, find mbest candidates [mse_list index_list] = search_vq(vqset(:,:,1), input_vecs(i,:), m); cand_list = [mse_list' index_list']; cand_list = sortrows(cand_list,1); % subsequent stages ........... for s=2:stages % compute m targets for next stage, and update path prev_indexes = zeros(m,s-1); for t=1:m target(t,:) = input_vecs(i,:); for v=1:s-1 target(t,:) -= vqset(cand_list(t,v+1),:,v); end prev_indexes(t,:) = cand_list(t,2:s); end % search stage s using m targets from stage s-1 % with m targets, we do m searches which return the m best possibilities % so we get a matrix with one row per candidate, m*m rows total % prev_indexes provides us with the path through the VQs for each candidate row avq = vqset(:,:,s); cand_list = []; for t=1:m [mse_list index_list] = search_vq(avq, target(t,:), m); x = ones(m,1)*prev_indexes(t,:); cand_row = [mse_list' x index_list']; cand_list = [cand_list; cand_row]; end % sort into m best rows cand_list = sortrows(cand_list,1); cand_list = cand_list(1:m,:); end % final residual target(1,:) = input_vecs(i,:); out = zeros(1,order); for v=1:stages target(1,:) -= vqset(cand_list(1,v+1),:,v); out += vqset(cand_list(1,v+1),:,v); end res = [res; target(1,:)]; output_vecs = [output_vecs; out]; ind = [ind; cand_list(1,2:1+stages)]; end endfunction % Quantises a set of mel-lsps and saves back to disk so they can be read in by c2sim % assumes we have a vq saved to disk called vq % % ~/codec2-dev/build_linux/src$ sox -r 8000 -s -2 ../../wav/vk5qi.wav -t raw -r 8000 -s -2 - sinc 300 sinc -2600 | ./c2sim - --lpc 6 --lpcpf --lspmel --dump vk5qi -o - | play -t raw -r 8000 -s -2 - vol 3 % % octave:> test_run("vk5qi") % % ~/codec2-dev/build_linux/src$ sox -r 8000 -s -2 ../../wav/vk5qi.wav -t raw -r 8000 -s -2 - sinc 300 sinc -2600 | ./c2sim - --lpc 6 --lpcpf --phase0 --dec 4 --postfilter --lspmel --lspmelread ../../octave/vk5qi_mel_.out -o - | play -t raw -r 8000 -s -2 - vol 3 function ind = test_run(samplename) more off; input_vecs_name = sprintf("../build_linux/src/%s_mel.txt", samplename); input_vecs_name mel = load(input_vecs_name); load vq; [res mel_ ind] = mbest(vq, mel, 5); mean(std(res)) output_vecs_name = sprintf("%s_mel_.out", samplename); fmel_ = fopen(output_vecs_name,"wb"); [r c] = size(mel_); for i=1:r fwrite(fmel_, mel_(i,:), "float32"); end fclose(fmel_); end %ind = test_run("hts1a"); %load "../build_linux/src/all_mel.txt" %vq = trainvq(all_mel, 64, 3); %save vq; % [X] save text file of "vq quantised mels" % [X] load back into c2sim at run time % [X] train on continuous mels % [X] sorting/stability % [X] see how it sounds % [X] Goal is to get VQ sounding OK, similar to UQ at 20 or 40ms dec, % [X] sig better than current 700 % [X] check all indexes used with hist codec2-1.2.0/octave/newamp_700c.m000066400000000000000000000226511445607075400163520ustar00rootroot00000000000000% newamp_700c.m % % Copyright David Rowe 2017 % This program is distributed under the terms of the GNU General Public License % Version 2 % % Library of Octave functions for rate K, mel spaced % vector quantisation of spectral magnitudes used in Codec 2 700C mode. 1; melvq; % mbest VQ functions % -------------------------------------------------------------------------------- % Functions used by rate K mel work % -------------------------------------------------------------------------------- % General 2nd order parabolic interpolator. Used splines originally, % but this is much simpler and we don't need much accuracy. Given two % vectors of points xp and yp, find interpolated values y at points x function y = interp_para(xp, yp, x) assert( (length(xp) >=3) && (length(yp) >= 3) ); y = zeros(1,length(x)); k = 1; for i=1:length(x) xi = x(i); % k is index into xp of where we start 3 points used to form parabola while ((xp(k+1) < xi) && (k < (length(xp)-2))) k++; end x1 = xp(k); y1 = yp(k); x2 = xp(k+1); y2 = yp(k+1); x3 = xp(k+2); y3 = yp(k+2); %printf("k: %d i: %d xi: %f x1: %f y1: %f\n", k, i, xi, x1, y1); a = ((y3-y2)/(x3-x2)-(y2-y1)/(x2-x1))/(x3-x1); b = ((y3-y2)/(x3-x2)*(x2-x1)+(y2-y1)/(x2-x1)*(x3-x2))/(x3-x1); y(i) = a*(xi-x2)^2 + b*(xi-x2) + y2; end endfunction % simple linear interpolator function y = interp_linear(xp, yp, x) assert( (length(xp) == 2) && (length(yp) == 2) ); m = (yp(2) - yp(1))/(xp(2) - xp(1)); c = yp(1) - m*xp(1); y = zeros(1,length(x)); for i=1:length(x) y(i) = m*x(i) + c; end endfunction % quantise input sample to nearest value in table, optionally return binary code function [quant_out best_i bits] = quantise(levels, quant_in) % find closest quantiser level best_se = 1E32; for i=1:length(levels) se = (levels(i) - quant_in)^2; if se < best_se quant_out = levels(i); best_se = se; best_i = i; end end % convert index to binary bits numbits = ceil(log2(length(levels))); bits = zeros(1, numbits); for b=1:numbits bits(b) = bitand(best_i-1,2^(numbits-b)) != 0; end endfunction % Quantisation functions for Wo in log freq domain function index = encode_log_Wo(Wo, bits) Wo_levels = 2.^bits; Wo_min = 2*pi/160; Wo_max = 2*pi/20; norm = (log10(Wo) - log10(Wo_min))/(log10(Wo_max) - log10(Wo_min)); index = floor(Wo_levels * norm + 0.5); index = max(index, 0); index = min(index, Wo_levels-1); endfunction function Wo = decode_log_Wo(index, bits) Wo_levels = 2.^bits; Wo_min = 2*pi/160; Wo_max = 2*pi/20; step = (log10(Wo_max) - log10(Wo_min))/Wo_levels; Wo = log10(Wo_min) + step*index; Wo = 10 .^ Wo; endfunction % convert index to binary bits function bits = index_to_bits(value, numbits) levels = 2.^numbits; bits = zeros(1, numbits); for b=1:numbits bits(b) = bitand(value,2^(numbits-b)) != 0; end end function value = bits_to_index(bits, numbits) value = 2.^(numbits-1:-1:0) * bits; endfunction % Determine a phase spectra from a magnitude spectra % from http://www.dsprelated.com/showcode/20.php % Haven't _quite_ figured out how this works but have to start somewhere .... % % TODO: we may be able to sample at a lower rate, like mWo % but start with something that works function [phase Gdbfk s Aw] = determine_phase(model, f, Nfft=512, ak) Fs = 8000; max_amp = 80; L = min([model(f,2) max_amp-1]); Wo = model(f,1); sample_freqs_kHz = (Fs/1000)*[0:Nfft/2]/Nfft; % fft frequency grid (nonneg freqs) Am = model(f,3:(L+2)); AmdB = 20*log10(Am); rate_L_sample_freqs_kHz = (1:L)*Wo*4/pi; Gdbfk = interp_para(rate_L_sample_freqs_kHz, AmdB, sample_freqs_kHz); % optional input of aks for testing if nargin == 4 Aw = 1 ./ fft(ak,Nfft); Gdbfk = 20*log10(abs(Aw(1:Nfft/2+1))); end [phase s] = mag_to_phase(Gdbfk, Nfft); endfunction % Non linear sampling of frequency axis, reducing the "rate" is a % first step before VQ function mel = ftomel(fHz) mel = floor(2595*log10(1+fHz/700)+0.5); endfunction function rate_K_sample_freqs_kHz = mel_sample_freqs_kHz(K) mel_start = ftomel(200); mel_end = ftomel(3700); step = (mel_end-mel_start)/(K-1); mel = mel_start:step:mel_end; rate_K_sample_freqs_Hz = 700*((10 .^ (mel/2595)) - 1); rate_K_sample_freqs_kHz = rate_K_sample_freqs_Hz/1000; endfunction function [rate_K_surface rate_K_sample_freqs_kHz] = resample_const_rate_f_mel(model, K) rate_K_sample_freqs_kHz = mel_sample_freqs_kHz(K); rate_K_surface = resample_const_rate_f(model, rate_K_sample_freqs_kHz); endfunction % Resample Am from time-varying rate L=floor(pi/Wo) to fixed rate K. This can be viewed % as a 3D surface with time, freq, and ampitude axis. function [rate_K_surface rate_K_sample_freqs_kHz] = resample_const_rate_f(model, rate_K_sample_freqs_kHz) % convert rate L=pi/Wo amplitude samples to fixed rate K max_amp = 80; [frames col] = size(model); K = length(rate_K_sample_freqs_kHz); rate_K_surface = zeros(frames, K); for f=1:frames Wo = model(f,1); L = min([model(f,2) max_amp-1]); Am = model(f,3:(L+2)); AmdB = 20*log10(Am); %pre = 10*log10((1:L)*Wo*4/(pi*0.3)); %AmdB += pre; % clip between peak and peak -50dB, to reduce dynamic range AmdB_peak = max(AmdB); AmdB(find(AmdB < (AmdB_peak-50))) = AmdB_peak-50; rate_L_sample_freqs_kHz = (1:L)*Wo*4/pi; %rate_K_surface(f,:) = interp1(rate_L_sample_freqs_kHz, AmdB, rate_K_sample_freqs_kHz, "spline", "extrap"); rate_K_surface(f,:) = interp_para(rate_L_sample_freqs_kHz, AmdB, rate_K_sample_freqs_kHz); %printf("\r%d/%d", f, frames); end %printf("\n"); endfunction % Take a rate K surface and convert back to time varying rate L function [model_ AmdB_] = resample_rate_L(model, rate_K_surface, rate_K_sample_freqs_kHz) max_amp = 80; [frames col] = size(model); model_ = zeros(frames, max_amp+2); for f=1:frames Wo = model(f,1); L = model(f,2); rate_L_sample_freqs_kHz = (1:L)*Wo*4/pi; % back down to rate L % AmdB_ = interp1(rate_K_sample_freqs_kHz, rate_K_surface(f,:), rate_L_sample_freqs_kHz, "spline", 0); AmdB_ = interp_para([ 0 rate_K_sample_freqs_kHz 4], [0 rate_K_surface(f,:) 0], rate_L_sample_freqs_kHz); model_(f,1) = Wo; model_(f,2) = L; model_(f,3:(L+2)) = 10 .^ (AmdB_(1:L)/20); end endfunction % Post Filter, has a big impact on speech quality after VQ. When used % on a mean removed rate K vector, it raises formants, and suppresses % anti-formants. As it manipulates amplitudes, we normalise energy to % prevent clipping or large level variations. pf_gain of 1.2 to 1.5 % (dB) seems to work OK. Good area for further investigations and % improvements in speech quality. function vec = post_filter(vec, sample_freq_kHz, pf_gain = 1.5, voicing) % vec is rate K vector describing spectrum of current frame % lets pre-emp before applying PF. 20dB/dec over 300Hz pre = 20*log10(sample_freq_kHz/0.3); vec += pre; levels_before_linear = 10 .^ (vec/20); e_before = sum(levels_before_linear .^2); vec *= pf_gain; levels_after_linear = 10 .^ (vec/20); e_after = sum(levels_after_linear .^2); gain = e_after/e_before; gaindB = 10*log10(gain); vec -= gaindB; vec -= pre; endfunction % construct energy quantiser table, and save to text file to include in C function energy_q = create_energy_q energy_q = 10 + 40/16*(0:15); endfunction function save_energy_q(fn) energy_q = create_energy_q; f = fopen(fn, "wt"); fprintf(f, "1 %d\n", length(energy_q)); for n=1:length(energy_q) fprintf(f, "%f\n", energy_q(n)); end fclose(f); endfunction % save's VQ in format that can be compiled by Codec 2 build system function save_vq(vqset, filenameprefix) [Nvec order stages] = size(vqset); for s=1:stages fn = sprintf("%s_%d.txt", filenameprefix, s); f = fopen(fn, "wt"); fprintf(f, "%d %d\n", order, Nvec); for n=1:Nvec for k=1:order fprintf(f, "% 8.4f ", vqset(n,k,s)); end fprintf(f, "\n"); end fclose(f); end endfunction % Decoder side interpolation of Wo and voicing, to go from 25 Hz % sample rate used over channel to 100Hz internal sample rate of Codec % 2. function [Wo_ voicing_] = interp_Wo_v(Wo1, Wo2, voicing1, voicing2) M = 4; max_amp = 80; Wo_ = zeros(1,M); voicing_ = zeros(1,M); if !voicing1 && !voicing2 Wo_(1:M) = 2*pi/100; end if voicing1 && !voicing2 Wo_(1:M/2) = Wo1; Wo_(M/2+1:M) = 2*pi/100; voicing_(1:M/2) = 1; end if !voicing1 && voicing2 Wo_(1:M/2) = 2*pi/100; Wo_(M/2+1:M) = Wo2; voicing_(M/2+1:M) = 1; end if voicing1 && voicing2 Wo_samples = [Wo1 Wo2]; Wo_(1:M) = interp_linear([1 M+1], Wo_samples, 1:M); voicing_(1:M) = 1; end #{ printf("f: %d f+M/2: %d Wo: %f %f (%f %%) v: %d %d \n", f, f+M/2, model(f,1), model(f+M/2,1), 100*abs(model(f,1) - model(f+M/2,1))/model(f,1), voicing(f), voicing(f+M/2)); for i=f:f+M/2-1 printf(" f: %d v: %d v_: %d Wo: %f Wo_: %f\n", i, voicing(i), voicing_(i), model(i,1), model_(i,1)); end #} endfunction % Equaliser in front of EQ, see vq_700c_eq.m for development version function [rate_K_vec eq] = front_eq(rate_K_vec, eq) [tmp K] = size(rate_K_vec); ideal = [ 8 10 12 14 14*ones(1,K-1-4) -20]; gain = 0.02; update = rate_K_vec - ideal; eq = (1-gain)*eq + gain*update; eq(find(eq < 0)) = 0; endfunction codec2-1.2.0/octave/ofdm_acquisition.m000066400000000000000000000220051445607075400176600ustar00rootroot00000000000000% ofdm_acquisition.m % David Rowe Jan 2021 % % Simulations used for development of HF data modem burst mode acquisition % % To run headless on a server: % % DISPLAY=\"\" octave-cli --no-gui -qf ofdm_acquisition.m > 210218.txt & ofdm_lib; channel_lib; % Build a vector of Tx bursts in noise, one burst occurs every padded_burst_len samples function [rx tx_preamble tx_postamble burst_len padded_burst_len ct_targets states] = generate_bursts(sim_in) config = ofdm_init_mode(sim_in.mode); states = ofdm_init(config); ofdm_load_const; tx_preamble = states.tx_preamble; tx_postamble = states.tx_postamble; Nbursts = sim_in.Nbursts; tx_bits = create_ldpc_test_frame(states, coded_frame=0); tx_burst = [tx_preamble ofdm_mod(states, tx_bits) tx_postamble]; burst_len = length(tx_burst); tx_burst = ofdm_hilbert_clipper(states, tx_burst, tx_clip_en=0); padded_burst_len = Fs+burst_len+Fs; tx = []; ct_targets = []; for f=1:Nbursts % 100ms of jitter in the burst start point jitter = floor(rand(1,1)*0.1*Fs); tx_burst_padded = [zeros(1,Fs+jitter) tx_burst zeros(1,Fs-jitter)]; ct_targets = [ct_targets Fs+jitter]; tx = [tx tx_burst_padded]; end % adjust channel simulator SNR setpoint given (burst on length)/(sample length) ratio mark_space_SNR_offset = 10*log10(burst_len/padded_burst_len); SNRdB_setpoint = sim_in.SNR3kdB + mark_space_SNR_offset; %printf("SNR3kdB: %f Burst offset: %f\n", sim_in.SNR3kdB, mark_space_SNR_offset) rx = channel_simulate(Fs, SNRdB_setpoint, sim_in.foff_Hz, sim_in.channel, tx); % optional BPF if strcmp(sim_in.mode,"datac4") || strcmp(sim_in.mode,"datac13") [rx delay_samples] = ofdm_complex_bandpass_filter(states, sim_in.mode, rx); l = length(rx); rx = [rx(delay_samples:l) zeros(1,delay_samples)]; end endfunction function results = evaluate_candidate(states, det, i, Nsamperburstpadded, ct_target, foff_Hz, ttol_samples, ftol_hz) results.candidate = 0; if det.timing_mx > states.timing_mx_thresh % OK we have located a candidate peak % re-base ct_est to be wrt start of current burst reference frame ct_est = det.ct_est - (i-1)*Nsamperburstpadded; delta_ct = abs(ct_est-ct_target); delta_foff = det.foff_est-foff_Hz; ok = (abs(delta_ct) < ttol_samples) && (abs(delta_foff) < ftol_hz); results.candidate = 1; results.ct_est = ct_est; results.delta_ct = delta_ct; results.delta_foff = delta_foff; results.ok = ok; end endfunction % test frame by frame acquisition algorithm function Pa = frame_by_frame_acquisition_test(mode="datac1", Ntests=10, channel="awgn", SNR3kdB=100, foff_Hz=0, verbose_top=0) sim_in.SNR3kdB = SNR3kdB; sim_in.channel = channel; sim_in.foff_Hz = foff_Hz; sim_in.mode = mode; sim_in.Nbursts = Ntests; [rx tx_preamble tx_postamble Nsamperburst Nsamperburstpadded ct_targets states] = generate_bursts(sim_in); states.verbose = bitand(verbose_top,3); ofdm_load_const; timing_mx_log = []; ct_log = []; delta_ct_log = []; delta_foff_log = []; state_log = []; % allowable tolerance for acquistion ftol_hz = 2; % we can sync up on this (todo: make mode selectable) ttol_samples = 0.006*Fs; % CP length (todo: make mode selectable) target_acq = zeros(1,Ntests); state = 'acquisition'; for n=1:Nsamperframe:length(rx)-2*Nsamperframe pre = burst_acquisition_detector(states, rx, n, tx_preamble); post = burst_acquisition_detector(states, rx, n, tx_postamble); % adjust time reference for this simulation pre.ct_est += n; post.ct_est += n; timing_mx_log = [timing_mx_log [pre.timing_mx; post.timing_mx]]; % state machine to simulate acquisition/demod processing next_state = state; if strcmp(state,'acquisition') state_log = [state_log 0]; % work out what burst we are evaluating i = ceil(n/Nsamperburstpadded); % i-th burst we are evaluating w = (i-1)*Nsamperburstpadded; % offset of burst in s() for plotting purposes ct_target_pre = ct_targets(i); ct_target_post = ct_targets(i) + Nsamperburst - length(tx_preamble); pre_eval = evaluate_candidate(states, pre, i, Nsamperburstpadded, ct_target_pre, foff_Hz, ttol_samples, ftol_hz); post_eval = evaluate_candidate(states, post, i, Nsamperburstpadded, ct_target_post, foff_Hz, ttol_samples, ftol_hz); if pre_eval.candidate if pre_eval.ok == 0 target_acq(i) = -1; % flag bad candidate end if pre_eval.ok && (target_acq(i) == 0) target_acq(i) = 1; % flag a successful acquisition next_state = "demod"; modem_frame = 0; end delta_ct_log = [delta_ct_log pre_eval.delta_ct]; delta_foff_log = [delta_foff_log pre_eval.delta_foff]; ct_log = [ct_log w+pre_eval.ct_est]; if states.verbose printf("Pre i: %2d n: %8d ct_est: %6d delta_ct: %6d foff_est: %5.1f timing_mx: %3.2f Acq: %2d\n", i, n, pre_eval.ct_est, pre_eval.delta_ct, pre.foff_est, pre.timing_mx, target_acq(i)); end end if post_eval.candidate if post_eval.ok == 0 target_acq(i) = -1; % flag bad candidate end if post_eval.ok && (target_acq(i) == 0) target_acq(i) = 1; % flag a successful acquisition next_state = "demod"; modem_frame = Np-2; end delta_ct_log = [delta_ct_log post_eval.delta_ct]; delta_foff_log = [delta_foff_log post_eval.delta_foff]; ct_log = [ct_log w+post_eval.ct_est]; if states.verbose printf("Post i: %2d n: %8d ct_est: %6d delta_ct: %6d foff_est: %5.1f timing_mx: %3.2f Acq: %2d\n", i, n, post_eval.ct_est, post_eval.delta_ct, post.foff_est, post.timing_mx, target_acq(i)); end end end if strcmp(state, "demod") state_log = [state_log 1]; modem_frame++; if modem_frame > states.Np next_state = "acquisition"; end end state = next_state; end if bitand(verbose_top,8) figure(1); clf; plot(timing_mx_log(1,:),'+-;preamble;'); hold on; plot(timing_mx_log(2,:),'o-;postamble;'); plot(0.45+0.1*state_log,'-g;state;'); title('mx log'); axis([0 length(timing_mx_log) 0 1.0]); grid; hold off; figure(4); clf; plot(real(rx)); axis([0 length(rx) -3E4 3E4]); hold on; plot(ct_log,zeros(1,length(ct_log)),'r+','markersize', 25, 'linewidth', 2); hold off; figure(5); clf; plot_specgram(rx, Fs, 500, 2500); all_mx = [ timing_mx_log(1,:) timing_mx_log(2,:)]; figure(6); clf; [nn xx] = hist(all_mx); semilogy(xx,nn+1); grid; figure(7); clf; cdf = empirical_cdf(0:0.1:1,all_mx); plot(0:0.1:1, cdf); grid; end Pacq = length(find(target_acq == 1))/Ntests; Pfalse_acq = length(find(target_acq == -1))/Ntests; printf("%s %s SNR: %3.1f foff: %3.1f P(acq) = %3.2f P(false_acq) = %3.2f\n", mode, channel, SNR3kdB, foff_Hz, Pacq, Pfalse_acq); endfunction % test frame by frame across modes, channels, and SNR (don't worry about sweeping freq) function acquistion_curves_frame_by_frame_modes_channels_snr(Ntests=5, quick_test=0) modes={'datac0', 'datac1', 'datac3'}; if quick_test Ntests = 5; channels={'awgn','mpp'}; SNR = [0 5]; else channels={'awgn', 'mpm', 'mpp', 'notch'}; SNR = [ -10 -5 -3.5 -1.5 0 1.5 3.5 5 7.5 10 15]; end cc = ['b' 'g' 'k' 'c' 'm' 'r']; pt = ['+' '*' 'x' 'o' '+' '*']; for i=1:length(modes) figure(i); clf; hold on; title(sprintf("%s P(acquisition)", modes{i})); end for m=1:length(modes) figure(m); for c=1:length(channels) Pa_log = []; for s=1:length(SNR) Pa = frame_by_frame_acquisition_test(modes{m}, Ntests, channels{c}, SNR(s), foff_hz=0, verbose=1); Pa_log = [Pa_log Pa]; end l = sprintf('%c%c-;%s;', cc(c), pt(c), channels{c}); plot(SNR, Pa_log, l, 'markersize', 10); end end for i=1:length(modes) figure(i); grid; xlabel('SNR3k dB'); legend('location', 'southeast'); xlim([min(SNR)-2 max(SNR)+2]); ylim([0 1.1]); print('-dpng', sprintf("%s_ofdm_dev_acq_curves_fbf_%s.png", datestr(clock(),"yyyy-mm-dd"), modes{i})); end endfunction % main starts here ----------------------------------------- format; more off; pkg load signal; graphics_toolkit ("gnuplot"); randn('seed',1); % --------------------------------------------------------- % choose simulation to run here % --------------------------------------------------------- if exist("ctest","var") % simple tests to run as part of ctests frame_by_frame_acquisition_test("datac0", Ntests=5, 'mpp', SNR3kdB=5, foff_hz=0, verbose=1+8); else % other development work here frame_by_frame_acquisition_test("datac13", Ntests=100, 'mpp', SNR3kdB=-4, foff_hz=0, verbose=1+8); %acquistion_curves_frame_by_frame_modes_channels_snr(Ntests=50, quick_test=0) end codec2-1.2.0/octave/ofdm_demod_c.m000066400000000000000000000016541445607075400167310ustar00rootroot00000000000000% ofdm_demod_c.m % David Rowe April 2018 % % Plots data from The C OFDM demodulator ofdm_demod, in similar format to % plots from Octave OFDM demodulator ofdm_rx.m % % Useful for of line analysis of a demod run function ofdm_demod_c(filename, mode="700D") ofdm_lib; more off; % init modem config = ofdm_init_mode(mode); states = ofdm_init(config); ofdm_load_const; states.verbose = 0; load(filename); figure(1); clf; plot(rx_np_log_c,'+'); mx = 2*max(abs(rx_np_log_c)); axis([-mx mx -mx mx]); title('Scatter'); figure(2); clf; plot(phase_est_pilot_log_c(:,2:Nc),'g+', 'markersize', 5); title('Phase Est'); axis([1 length(phase_est_pilot_log_c) -pi pi]); figure(3); clf; stem(timing_est_log_c) title('Timing Est'); figure(4); clf; plot(foff_hz_log_c) mx = max(abs(foff_hz_log_c))+1; axis([1 max(length(foff_hz_log_c),2) -mx mx]); title('Fine Freq'); ylabel('Hz') endfunction codec2-1.2.0/octave/ofdm_helper.m000066400000000000000000000210611445607075400166100ustar00rootroot00000000000000% ofdm_helper.m % % Misc functions that are used to support OFDM modem development, that % aren't required for modem operation 1; %------------------------------------------------------------------------------ % print_config - utility function to use ascii-art to describe the modem frame %------------------------------------------------------------------------------ function print_config(states) ofdm_load_const; % ASCII-art packet visualisation s=1; u=1; Nuwsyms=length(uw_ind_sym); cr = 1:Nc+2; for f=1:Np for r=1:Ns for c=cr if r == 1 if (c==1) && states.edge_pilots sym="P"; elseif (c==Nc+1) && states.edge_pilots sym="P"; elseif c>1 && c <=(Nc+1) sym="P"; else sym=" "; end elseif c>1 && c <=(Nc+1) sym="."; if (u <= Nuwsyms) && (s == uw_ind_sym(u)) sym="U"; u++; end s++; else sym=" "; end printf("%s",sym); end printf("\n"); end end printf("Nc=%d Ts=%4.3f Tcp=%4.3f Ns: %d Np: %d\n", Nc, 1/Rs, Tcp, Ns, Np); printf("Nsymperframe: %d Nbitsperpacket: %d Nsamperframe: %d Ntxtbits: %d Nuwbits: %d Nuwframes: %d\n", Ns*Nc, Nbitsperpacket, Nsamperframe, Ntxtbits, Nuwbits, Nuwframes); printf("uncoded bits/s: %4.1f\n", Nbitsperpacket*Fs/(Np*Nsamperframe)); end %----------------------------------------------------------------------- % create_ldpc_test_frame - generate a test frame of bits %----------------------------------------------------------------------- function [tx_bits payload_data_bits codeword] = create_ldpc_test_frame(states, coded_frame=1) ofdm_load_const; ldpc; gp_interleaver; if coded_frame % Set up LDPC code mod_order = 4; bps = 2; modulation = 'QPSK'; mapping = 'gray'; init_cml(); % TODO: make this path sensible and portable load HRA_112_112.txt [code_param framesize rate] = ldpc_init_user(HRA_112_112, modulation, mod_order, mapping); assert(Nbitsperframe == (code_param.coded_bits_per_frame + Nuwbits + Ntxtbits)); payload_data_bits = round(ofdm_rand(code_param.data_bits_per_frame)/32767); codeword = LdpcEncode(payload_data_bits, code_param.H_rows, code_param.P_matrix); Nsymbolsperframe = length(codeword)/bps; % need all these steps to get actual raw codeword bits at demod .. tx_symbols = []; for s=1:Nsymbolsperframe tx_symbols = [tx_symbols qpsk_mod( codeword(2*(s-1)+1:2*s) )]; end tx_symbols = gp_interleave(tx_symbols); codeword_raw = []; for s=1:Nsymbolsperframe codeword_raw = [codeword_raw qpsk_demod(tx_symbols(s))]; end else codeword_raw = round(ofdm_rand(Nbitsperpacket-(Nuwbits+Ntxtbits))/32767); end % insert UW and txt bits tx_bits = assemble_modem_packet(states, codeword_raw, zeros(1,Ntxtbits)); assert(Nbitsperpacket == length(tx_bits)); endfunction % automated test function test_assemble_disassemble(states) ofdm_load_const; Nsymsperpacket = Nbitsperpacket/bps; Ndatabitsperpacket = Nbitsperpacket-(Nuwbits+Ntxtbits); Ndatasymsperpacket = Ndatabitsperpacket/bps; codeword_bits = round(ofdm_rand(Ndatabitsperpacket)/32767); tx_bits = assemble_modem_packet(states, codeword_bits, zeros(1,Ntxtbits)); tx_syms = zeros(1,Nsymsperpacket); for s=1:Nsymsperpacket if bps == 2 tx_syms(s) = qpsk_mod(tx_bits(bps*(s-1)+1:bps*s)); elseif bps == 4 tx_syms(s) = qam16_mod(states.qam16,tx_bits(bps*(s-1)+1:bps*s)); end end codeword_syms = zeros(1,Ndatasymsperpacket); for s=1:Ndatasymsperpacket if bps == 2 codeword_syms(s) = qpsk_mod(codeword_bits(bps*(s-1)+1:bps*s)); elseif bps == 4 codeword_syms(s) = qam16_mod(states.qam16,codeword_bits(bps*(s-1)+1:bps*s)); end end [rx_uw rx_codeword_syms payload_amps txt_bits] = disassemble_modem_packet(states, tx_syms, ones(1,Nsymsperpacket)); assert(rx_uw == states.tx_uw); Ndatasymsperframe = (Nbitsperpacket-(Nuwbits+Ntxtbits))/bps; assert(codeword_syms == rx_codeword_syms); endfunction % test function, kind of like a CRC for QPSK symbols, to compare two vectors function acc = test_acc(v) sre = 0; sim = 0; for i=1:length(v) x = v(i); re = round(real(x)); im = round(imag(x)); sre += re; sim += im; %printf("%d %10f %10f %10f %10f\n", i, re, im, sre, sim); end acc = sre + j*sim; end % Save test bits frame to a text file in the form of a C array % % usage: % ofdm_lib; test_bits_ofdm_file % function test_bits_ofdm_file Ts = 0.018; Tcp = 0.002; Rs = 1/Ts; bps = 2; Nc = 17; Ns = 8; states = ofdm_init(bps, Rs, Tcp, Ns, Nc); [test_bits_ofdm payload_data_bits codeword] = create_ldpc_test_frame(states); printf("%d test bits\n", length(test_bits_ofdm)); f=fopen("../src/test_bits_ofdm.h","wt"); fprintf(f,"/* Generated by test_bits_ofdm_file() Octave function */\n\n"); fprintf(f,"const int test_bits_ofdm[]={\n"); for m=1:length(test_bits_ofdm)-1 fprintf(f," %d,\n",test_bits_ofdm(m)); endfor fprintf(f," %d\n};\n",test_bits_ofdm(end)); fprintf(f,"\nconst int payload_data_bits[]={\n"); for m=1:length(payload_data_bits)-1 fprintf(f," %d,\n",payload_data_bits(m)); endfor fprintf(f," %d\n};\n",payload_data_bits(end)); fprintf(f,"\nconst int test_codeword[]={\n"); for m=1:length(codeword)-1 fprintf(f," %d,\n",codeword(m)); endfor fprintf(f," %d\n};\n",codeword(end)); fclose(f); endfunction % Get rid of nasty unfiltered stuff either side of OFDM signal % This may need to be tweaked, or better yet made a function of Nc, if Nc changes % % usage: % ofdm_lib; make_ofdm_bpf(1); function bpf_coeff = make_ofdm_bpf(write_c_header_file) filt_n = 100; Fs = 8000; bpf_coeff = fir2(filt_n,[0 900 1000 2000 2100 4000]/(Fs/2),[0.001 0.001 1 1 0.001 0.001]); if write_c_header_file figure(1) clf; h = freqz(bpf_coeff,1,Fs/2); plot(20*log10(abs(h))) grid minor % save coeffs to a C header file f=fopen("../src/ofdm_bpf_coeff.h","wt"); fprintf(f,"/* 1000 - 2000 Hz FIR filter coeffs */\n"); fprintf(f,"/* Generated by make_ofdm_bpf() in ofdm_lib.m */\n"); fprintf(f,"\n#define OFDM_BPF_N %d\n\n", filt_n); fprintf(f,"float ofdm_bpf_coeff[]={\n"); for r=1:filt_n if r < filt_n fprintf(f, " %f,\n", bpf_coeff(r)); else fprintf(f, " %f\n};", bpf_coeff(r)); end end fclose(f); end endfunction % Helper function to help design UW error thresholds, in particular for raw % data modes. See also https://www.rowetel.com/wordpress/?p=7467 function ofdm_determine_bad_uw_errors(Nuw) figure(1); clf; % Ideally the 10% and 50% BER curves are a long way apart plot(0:Nuw, binocdf(0:Nuw,Nuw,0.1),';BER=0.1;'); hold on; plot(binocdf(0:Nuw,Nuw,0.5),';BER=0.5;'); % Suggested threshold for raw data modes is the 5% probability % level for the 50% BER curve. The pre/post-amble has a low chance % of failure. If it does make an error, then we will have random % bits presented as the UW (50% BER in UW). This threshold means % there is only a 5% case of random bits being accepted as a valid UW bad_uw_errors = max(find(binocdf(0:Nuw,Nuw,0.5) <= 0.05))+1; plot([bad_uw_errors bad_uw_errors],[0 1],';bad uw errors;'); hold off; grid xlabel('bits'); printf("for Nuw = %d, suggest bad_uw_errors = %d\n", Nuw, bad_uw_errors); end % Returns level threshold such that threshold_cdf of the tx magnitudes are % beneath that level. Helper function that can be used to design % the clipper level. See also https://www.rowetel.com/?p=7596 function threshold_level = ofdm_determine_clip_threshold(tx, threshold_cdf) Nsteps = 25; mx = max(abs(tx)); cdf = empirical_cdf(mx*(1:Nsteps)/Nsteps,abs(tx)); threshold_level = find(cdf >= threshold_cdf)(1)*mx/25; printf("threshold_cdf: %f threshold_level: %f\n", threshold_cdf, threshold_level); figure(1); clf; [hh nn] = hist(abs(tx),Nsteps,1); plotyy(nn,hh,mx*(1:Nsteps)/Nsteps,cdf); title('PDF and CDF Estimates'); grid; end % helper function that adds channel simulation and ensures we don't saturate int16 output samples function [rx_real rx] = ofdm_channel(states, tx, SNR3kdB, channel, freq_offset_Hz) [rx_real rx sigma] = channel_simulate(states.Fs, SNR3kdB, freq_offset_Hz, channel, tx, states.verbose); % multipath models can lead to clipping of int16 samples num_clipped = length(find(abs(rx_real>32767))); while num_clipped/length(rx_real) > 0.001 rx_real /= 2; num_clipped = length(find(abs(rx_real>32767))); printf("WARNING: output samples clipped, reducing level\n") end endfunction codec2-1.2.0/octave/ofdm_ldpc_rx.m000066400000000000000000000223271445607075400167720ustar00rootroot00000000000000% ofdm_ldpc_rx.m % David Rowe April 2017 % % OFDM file based rx, with LDPC and interleaver, Octave version of src/ofdm_demod.c #{ 1. Streaming mode operation: ofdm_ldpc_rx("test_700d.raw","700D") 2. Burst mode, tell state machine there is one packet in each burst: ofdm_ldpc_rx("test_datac0.raw","datac0","packetsperburst",1) #} function ofdm_ldpc_rx(filename, mode="700D", varargin) ofdm_lib; ldpc; gp_interleaver; more off; pkg load signal; % init modem config = ofdm_init_mode(mode); states = ofdm_init(config); ofdm_load_const; states.verbose = 1; pass_packet_count = 0; i=1; while i <= length(varargin) if strcmp(varargin{i},"packetsperburst") states.data_mode = "burst"; % use pre/post amble based sync states.packetsperburst = varargin{i+1}; i++; states.postambledetectoren = 1; elseif strcmp(varargin{i},"passpacketcount") pass_packet_count = varargin{i+1}; i++; else printf("\nERROR unknown argument: [%d] %s \n", i ,varargin{i}); return; end i++; end % some constants used for assembling modem frames [code_param Nbitspercodecframe Ncodecframespermodemframe] = codec_to_frame_packing(states, mode); % load real samples from file Ascale= states.amp_scale/2.0; % /2 as real signal has half amplitude frx=fopen(filename,"rb"); rx = fread(frx, Inf, "short")/Ascale; fclose(frx); Nsam = length(rx); prx = 1; % Generate tx frame for BER calcs payload_bits = round(ofdm_rand(code_param.data_bits_per_frame)/32767); tx_bits = fec_encode(states, code_param, mode, payload_bits); % Some handy constants Nsymsperframe = Nbitsperframe/bps; Nsymsperpacket = Nbitsperpacket/bps; Ncodedbitsperpacket = code_param.coded_bits_per_frame; Ncodedsymsperpacket = code_param.coded_syms_per_frame; % init logs and BER stats rx_bits = []; rx_np_log = []; timing_est_log = []; delta_t_log = []; foff_est_hz_log = []; channel_est_pilot_log = []; snr_log = []; mean_amp_log = []; Terrs = Tbits = Terrs_coded = Tbits_coded = Perrs_coded = 0; Nerrs_coded_log = Nerrs_log = []; error_positions = []; Nerrs_coded = Nerrs_raw = 0; paritychecks = [0]; EsNo = 1; rx_uw = zeros(1,states.Nuwbits); rx_syms = zeros(1,Nsymsperpacket); rx_amps = zeros(1,Nsymsperpacket); packet_count = frame_count = 0; % main loop ---------------------------------------------------------------- rx = ofdm_rx_filter(states, mode, rx); f = 1; while(prx < Nsam) % insert samples at end of buffer, set to zero if no samples % available to disable phase estimation on future pilots on last % frame of simulation lnew = min(Nsam-prx,states.nin); rxbuf_in = zeros(1,states.nin); if lnew rxbuf_in(1:lnew) = rx(prx:prx+lnew-1); end prx += states.nin; if states.verbose printf("f: %3d nin: %4d st: %-6s ", f, states.nin, states.sync_state); end if strcmp(states.sync_state,'search') [timing_valid states] = ofdm_sync_search(states, rxbuf_in); else % accumulate a buffer of data symbols for this packet rx_syms(1:end-Nsymsperframe) = rx_syms(Nsymsperframe+1:end); rx_amps(1:end-Nsymsperframe) = rx_amps(Nsymsperframe+1:end); [states rx_bits achannel_est_pilot_log arx_np arx_amp] = ofdm_demod(states, rxbuf_in); rx_syms(end-Nsymsperframe+1:end) = arx_np; rx_amps(end-Nsymsperframe+1:end) = arx_amp; rx_uw = extract_uw(states, rx_syms(end-Nuwframes*Nsymsperframe+1:end), rx_amps(end-Nuwframes*Nsymsperframe+1:end)); % We need the full packet of symbols before disassembling and checking for bit errors if (states.modem_frame == (states.Np-1)) packet_count++; % unpack, de-interleave PSK symbols and symbol amplitudes [rx_uw_unused payload_syms payload_amps txt_bits] = disassemble_modem_packet(states, rx_syms, rx_amps); payload_syms_de = gp_deinterleave(payload_syms); payload_amps_de = gp_deinterleave(payload_amps); % Count uncoded (raw) errors rx_bits = zeros(1,Ncodedbitsperpacket); for s=1:Ncodedsymsperpacket if bps == 2 rx_bits(2*s-1:2*s) = qpsk_demod(payload_syms_de(s)); end if bps == 4 rx_bits(bps*(s-1)+1:bps*s) = qam16_demod(states.qam16,payload_syms_de(s), payload_amps_de(s)); end end errors = xor(tx_bits, rx_bits); Nerrs = sum(errors); Nerrs_log = [Nerrs_log Nerrs]; Nerrs_raw = Nerrs; Terrs += Nerrs; Tbits += Nbitsperpacket; % LDPC decode % keep earlier mean amplitude estimator for compatibility with 700D if states.amp_est_mode == 0 mean_amp = states.mean_amp; else mean_amp = mean(payload_amps_de)+1E-12; end mean_amp_log = [mean_amp_log mean_amp]; % used fixed EsNo est, as EsNo estimator for QAM not working very well at this stage EsNo = 10^(states.EsNodB/10); % TODO 2020 support for padding with known data bits [rx_bits paritychecks] = fec_decode(states, code_param, payload_syms_de,... payload_amps_de, mean_amp, EsNo); errors = xor(payload_bits, rx_bits); Nerrs_coded = sum(errors); if Nerrs_coded Perrs_coded++; end Terrs_coded += Nerrs_coded; Tbits_coded += code_param.data_bits_per_frame; Nerrs_coded_log = [Nerrs_coded_log Nerrs_coded]; % per-packet SNR estimate EsNo_estdB = esno_est_calc(rx_syms); SNR_estdB = snr_from_esno(states, EsNo_estdB); snr_log = [snr_log SNR_estdB]; end % we are in sync so log modem states rx_np_log = [rx_np_log arx_np]; timing_est_log = [timing_est_log states.timing_est]; delta_t_log = [delta_t_log states.delta_t]; foff_est_hz_log = [foff_est_hz_log states.foff_est_hz]; channel_est_pilot_log = [channel_est_pilot_log; achannel_est_pilot_log]; frame_count++; end states = sync_state_machine(states, rx_uw); if states.verbose if strcmp(states.last_sync_state,'search') == 0 pcc = max(paritychecks); iter = 0; for i=1:length(paritychecks) if paritychecks(i) iter=i; end end % complete logging line if (states.modem_frame == 0) && (strcmp(states.last_sync_state, "trial") == 0) printf("euw: %3d %d mf: %2d pbw: %s foff: %4.1f eraw: %3d ecod: %3d iter: %3d pcc: %3d snr: %5.2f", states.uw_errors, states.sync_counter, states.modem_frame, states.phase_est_bandwidth(1), states.foff_est_hz, Nerrs_raw, Nerrs_coded, iter, pcc, SNR_estdB); else printf("euw: %3d %d mf: %2d pbw: %s foff: %4.1f", states.uw_errors, states.sync_counter, states.modem_frame, states.phase_est_bandwidth(1), states.foff_est_hz); end end printf("\n"); end % reset stats if in streaming mode, don't reset if in burst mode if strcmp(states.data_mode, "streaming") && states.sync_start Nerrs_raw = Nerrs_coded = 0; Nerrs_log = []; Terrs = Tbits = 0; Tpacketerrs = Tpackets = 0; Terrs_coded = Tbits_coded = 0; error_positions = Nerrs_coded_log = []; end f++; end Nframes = f; printf("Raw BER..: %5.4f Tbits: %5d Terrs: %5d SNR3k: %5.2f\n", Terrs/(Tbits+1E-12), Tbits, Terrs, mean(snr_log)); printf("Coded BER: %5.4f Tbits: %5d Terrs: %5d\n", Terrs_coded/(Tbits_coded+1E-12), Tbits_coded, Terrs_coded); printf("Coded PER: %5.4f Pckts: %5d Perrs: %5d Npre: %d Npost: %d\n", Perrs_coded/(packet_count+1E-12), packet_count, Perrs_coded, states.npre, states.npost); if length(rx_np_log) figure(1); clf; plot(exp(j*pi/4)*rx_np_log(floor(end/4):floor(end-end/8)),'+'); mx = 2*mean(abs(channel_est_pilot_log(:))); axis([-mx mx -mx mx]); title('Scatter'); figure(2); clf; plot(angle(channel_est_pilot_log),'g+', 'markersize', 5); title('Phase est'); axis([1 length(channel_est_pilot_log) -pi pi]); figure(3); clf; amp_est = abs(channel_est_pilot_log); plot(amp_est,'g+', 'markersize', 5); title('Amp est'); axis([1 length(channel_est_pilot_log) min(amp_est(:)) max(amp_est(:))]); figure(4); clf; subplot(211); plot(snr_log); ylabel('SNR3kdB'); subplot(212); plot(mean_amp_log); ylabel('mean amp'); figure(5); clf; subplot(211) stem(delta_t_log) title('delta t'); subplot(212) plot(timing_est_log); title('timing est'); figure(6); clf; plot(foff_est_hz_log) mx = max(max(abs(foff_est_hz_log)),1); axis([1 max(Nframes,2) -mx mx]); title('Fine Freq'); ylabel('Hz') end if length(Nerrs_log) > 1 figure(7); clf; subplot(211) stem(Nerrs_log); title('Uncoded errors/modem frame') axis([1 length(Nerrs_log) 0 Nbitsperpacket*0.2]); if length(Nerrs_coded_log) subplot(212) stem(Nerrs_coded_log); title('Coded errors/mode frame') axis([1 length(Nerrs_coded_log) 0 Nbitsperpacket*0.2]); end end figure(9); clf; plot_specgram(rx, Fs=8000, 0, 3000); if pass_packet_count > 0 if packet_count >= pass_packet_count printf("Pass!\n"); else printf("Fail!\n"); end; end endfunction codec2-1.2.0/octave/ofdm_ldpc_tx.m000066400000000000000000000113711445607075400167710ustar00rootroot00000000000000% ofdm_ldpc_tx.m % David Rowe April 2017 % % File based ofdm tx with LDPC encoding and interleaver. Generates a % file of ofdm samples, including optional channel simulation. #{ 1. 10 seconds, AWGN channel at SNR3k=3dB octave:4> ofdm_ldpc_tx("test_700d.raw", "700D", 10, 3) 2. 10 seconds, multipath poor channel at SNR=6dB octave:5> ofdm_ldpc_tx("test_700d.raw", "700D", 10, 6, "mpp") 3. Data mode example, three bursts of one packet each, SNR=100dB: octave:6> ofdm_ldpc_tx("test_datac0.raw","datac0",1,100,"awgn","bursts",3) 4. Data mode example, three bursts of one packet each, SNR=100dB, with CRC to enable demodulation by freedv_data_raw_rx: octave:6> ofdm_ldpc_tx("test_datac0.raw","datac0",1,100,"awgn","bursts",3, "crc") #} function ofdm_ldpc_tx(filename, mode="700D", N, SNR3kdB=100, channel='awgn', varargin) ofdm_lib; ldpc; gp_interleaver; channel_lib; pkg load signal; randn('seed',1); more off; tx_clip_en = 0; freq_offset_Hz = 0.0; burst_mode = 0; Nbursts = 1; crc_mode = 0; i = 1; while i<=length(varargin) if strcmp(varargin{i},"txclip") tx_clip_en = 1; elseif strcmp(varargin{i},"bursts") burst_mode = 1; Nbursts = varargin{i+1}; i++; elseif strcmp(varargin{i},"crc") crc_mode = 1; else printf("\nERROR unknown argument: %s\n", varargin{i}); return; end i++; end % init modem config = ofdm_init_mode(mode); states = ofdm_init(config); print_config(states); ofdm_load_const; if burst_mode % burst mode: treat N as Npackets Npackets = N; else % streaming mode: treat N as Nseconds Npackets = round(N/states.Tpacket); end % some constants used for assembling modem frames [code_param Nbitspercodecframe Ncodecframespermodemframe] = codec_to_frame_packing(states, mode); % OK generate a modem frame using random payload bits if strcmp(mode, "2020") payload_bits = round(ofdm_rand(Ncodecframespermodemframe*Nbitspercodecframe)/32767); else payload_bits = round(ofdm_rand(code_param.data_bits_per_frame)/32767); if crc_mode unpacked_crc16 = crc16_unpacked(payload_bits(1:end-16)); payload_bits(end-15:end) = unpacked_crc16; end end [packet_bits bits_per_packet] = fec_encode(states, code_param, mode, payload_bits); % modulate to create symbols and interleave tx_symbols = []; for b=1:bps:bits_per_packet if bps == 2 tx_symbols = [tx_symbols qpsk_mod(packet_bits(b:b+bps-1))]; end if bps == 4 tx_symbols = [tx_symbols qam16_mod(states.qam16, packet_bits(b:b+bps-1))]; end end assert(gp_deinterleave(gp_interleave(tx_symbols)) == tx_symbols); tx_symbols = gp_interleave(tx_symbols); % generate txt (non FEC protected) symbols txt_bits = zeros(1,Ntxtbits); txt_symbols = []; for b=1:bps:length(txt_bits) if bps == 2 txt_symbols = [txt_symbols qpsk_mod(txt_bits(b:b+bps-1))]; end if bps == 4 txt_symbols = [txt_symbols qam16_mod(states.qam16,txt_bits(b:b+bps-1))]; end end % assemble interleaved modem packet that include UW and txt symbols modem_packet = assemble_modem_packet_symbols(states, tx_symbols, txt_symbols); % sanity check [rx_uw rx_codeword_syms payload_amps txt_bits] = disassemble_modem_packet(states, modem_packet, ones(1,length(modem_packet))); assert(rx_uw == states.tx_uw); % create a burst of concatenated packets atx = ofdm_txframe(states, modem_packet); tx = []; for f=1:Npackets tx = [tx atx]; end if length(states.data_mode) % note for burst mode postamble provides a "column" of pilots at the end of the burst tx = [states.tx_preamble tx states.tx_postamble]; end % if burst mode concatenate multiple bursts with spaces if burst_mode atx = tx; tx = zeros(1,states.Fs); on_time = 0; off_time = states.Fs; for b=1:Nbursts tx = [tx atx zeros(1,states.Fs)]; on_time += length(atx); off_time += states.Fs; end % adjust channel simulator SNR setpoint given (burst on length)/(total length including silence) ratio mark_space_SNR_offset = 10*log10(on_time/(on_time+off_time)); SNRdB_setpoint = SNR3kdB + mark_space_SNR_offset; printf("SNR3kdB: %4.2f Burst offset: %4.2f SNRdB_setpoint: %4.2f\n", SNR3kdB, mark_space_SNR_offset, SNRdB_setpoint) else SNRdB_setpoint = SNR3kdB; % no adjustment to SNR in streaming mode end printf("Npackets: %d Nbursts: %d ", Npackets, Nbursts); states.verbose=1; tx = ofdm_hilbert_clipper(states, tx, tx_clip_en); [rx_real rx] = ofdm_channel(states, tx, SNRdB_setpoint, channel, freq_offset_Hz); frx = fopen(filename,"wb"); fwrite(frx, rx_real, "short"); fclose(frx); if length(rx) >= states.Fs figure(1); clf; plot(20*log10(abs(fft(rx(1:states.Fs)/16384)))); axis([1 states.Fs -20 60]) end endfunction codec2-1.2.0/octave/ofdm_lib.m000066400000000000000000001271261445607075400161100ustar00rootroot00000000000000% ofdm_lib.m % David Rowe Mar 2017 #{ Library of functions that implement a PSK OFDM modem. #} 1; qam16; esno_est; ofdm_mode; ofdm_state; ofdm_helper; %------------------------------------------------------------- % ofdm_init %------------------------------------------------------------- #{ Modem frame has a pilot every Ns symbols. There are Ns-1 data symbols between every pilot. e.g. for Ns=4, Nc=6: |-Nc-| Time DDDDDD | PPPPPPPP --- | DDDDDD | | DDDDDD Ns | DDDDDD | | PPPPPPPP --- \|/ DDDDDD | | Freq------------------> In this figure, time flows down, freq across. #} function states = ofdm_init(config) Rs = config.Rs; Tcp = config.Tcp; Ns = config.Ns; Nc = config.Nc; bps = config.bps; Np = config.Np; Ntxtbits = config.Ntxtbits; Nuwbits = config.Nuwbits; ftwindow_width = config.ftwindow_width; timing_mx_thresh = config.timing_mx_thresh; tx_uw = config.tx_uw; bad_uw_errors = config.bad_uw_errors; amp_scale = config.amp_scale; amp_est_mode = config.amp_est_mode; EsNo_est_all_symbols = config.EsNo_est_all_symbols; EsNodB = config.EsNodB; state_machine = config.state_machine; edge_pilots = config.edge_pilots; clip_gain1 = config.clip_gain1; clip_gain2 = config.clip_gain2; foff_limiter = config.foff_limiter; txbpf_width_Hz = config.txbpf_width_Hz; data_mode = config.data_mode; states.Fs = 8000; states.bps = bps; states.Rs = Rs; states.Tcp = Tcp; states.Ns = Ns; % one pilot every Ns symbols, e.g. Ns=4, ...PDDDPDDDP... states.Nc = Nc; % Number of carriers states.M = states.Fs/Rs; % oversampling rate states.Ncp = Tcp*states.Fs; states.Nbitsperframe = (Ns-1)*Nc*bps; % total bits in all data symbols in modem frame states.Nsampersymbol = states.M+states.Ncp; % number of samples in a single symbol states.Nsamperframe = Ns*states.Nsampersymbol; % number of samples in a modem frame states.qam16 = [ 1 + j, 1 + j*3, 3 + j, 3 + j*3; 1 - j, 1 - j*3, 3 - j, 3 - j*3; -1 + j, -1 + j*3, -3 + j, -3 + j*3; -1 - j, -1 - j*3, -3 - j, -3 - j*3]/3; rms = sqrt(states.qam16(:)'*states.qam16(:)/16);% set average Es to 1 states.qam16 /= rms; states.qam16 *= exp(-j*pi/4); % same rotation as QPSK constellation states.Np = Np; % number of modem frames per packet. In some modes we want % the total packet of data to span multiple modem frames, e.g. HF data % and/or when the FEC codeword is larger than the one % modem frame. In other modes (e.g. 700D/2020) Np=1, ie the modem frame % is the same length as the packet/FEC codeword. states.Nbitsperpacket = Np*states.Nbitsperframe; states.Tpacket = Np*Ns*(Tcp+1/Rs); % time for one packet in ms states.Ntxtbits = Ntxtbits; % reserved bits/frame for auxiliary text information. Uncoded/unprotected so may % be of limited use going forward, consider setting to 0 states.Nuwbits = Nuwbits; % some basic sanity checks assert(floor(states.M) == states.M); % UW symbol placement. % Note we need to fill each UW symbols with bits. The LDPC decoder % works on symbols so we can't break up any symbols into UW/FEC % encoded bits. states.uw_ind = states.uw_ind_sym = []; % lets see if all UW syms will fit in frame Nuwsyms = states.Nuwbits/bps; Ndatasymsperframe = (Ns-1)*Nc; states.spread_uw = 0; if states.spread_uw uw_step = 1.8*floor(states.Nbitsperpacket/states.Nuwbits); else uw_step = Nc+1; % default step for UW sym placement end last_sym = floor(Nuwsyms*uw_step/bps+1); if last_sym > states.Np*Ndatasymsperframe uw_step = Nc-1; % try a different step end last_sym = floor(Nuwsyms*uw_step/bps+1); assert(last_sym <= states.Np*Ndatasymsperframe); % we still can't fit them all % Place UW symbols in frame for i=1:Nuwsyms ind_sym = floor(i*uw_step/bps+1); % printf("%d sym: %d\n",i, ind_sym); states.uw_ind_sym = [states.uw_ind_sym ind_sym]; % symbol index for b=bps-1:-1:0 states.uw_ind = [states.uw_ind bps*ind_sym-b]; % bit index end end % how many of the first few frames have UW symbols in them Nsymsperframe = states.Nbitsperframe/states.bps; states.Nuwframes = ceil(states.uw_ind_sym(end)/Nsymsperframe); states.tx_uw = tx_uw; assert(length(states.tx_uw) == states.Nuwbits); tx_uw_syms = []; for b=1:bps:states.Nuwbits if bps == 2 tx_uw_syms = [tx_uw_syms qpsk_mod(states.tx_uw(b:b+1))]; end if bps == 4 tx_uw_syms = [tx_uw_syms qam16_mod(states.qam16, states.tx_uw(b:b+bps-1))]; end end states.tx_uw_syms = tx_uw_syms; % if the UW has this many errors it is "bad", the binomal cdf can be used to % set this with the ofdm_determine_bad_uw_errors() function below % % Nuw=12; plot(0:Nuw, binocdf(0:Nuw,Nuw,0.05)); hold on; plot(binocdf(0:Nuw,Nuw,0.5)); hold off; states.bad_uw_errors = bad_uw_errors; states.ofdm_peak = 16384; % use this to scale tx output to 16 bit short to a peak value of 16384. Adjusted by experiment states.amp_scale = amp_scale; % when using the clipping, this is the manual gain value. Adjusted by experiment, trade off between % increased average power and BER states.clip_gain1 = clip_gain1; states.clip_gain2 = clip_gain2; states.txbpf_width_Hz = txbpf_width_Hz; % this is used to scale inputs to LDPC decoder to make it amplitude indep states.mean_amp = 0; % use a fixed EsNo for LDPC decoder, this seems to work OK and avoid another estimator states.EsNodB = EsNodB; % generate same BPSK pilots each time rand('seed',1); states.pilots = 1 - 2*(rand(1,Nc+2) > 0.5); %printf("number of pilots total: %d\n", length(states.pilots)); % If set, place pilots at carrier 1 and Nc+2 to support low bandwidth phase est over grid % of 12 pilot_samples. Used for 700D and 2020 states.edge_pilots = edge_pilots; if states.edge_pilots == 0 states.pilots(1) = 0; states.pilots(Nc+2) = 0; end % carrier tables for up and down conversion states.fcentre = fcentre = 1500; alower = fcentre - Rs * (Nc/2); % approx frequency of lowest carrier Nlower = round(alower / Rs) - 1; % round this to nearest integer multiple from 0Hz to keep DFT happy %printf(" fcentre: %f alower: %f alower/Rs: %f Nlower: %d\n", fcentre, alower, alower/Rs, Nlower); w = (Nlower:Nlower+Nc+1)*2*pi/(states.Fs/Rs); W = zeros(Nc+2,states.M); for c=1:Nc+2 W(c,:) = exp(j*w(c)*(0:states.M-1)); end states.w = w; states.W = W; % fine timing search +/- window_width/2 from current timing instant, % set this to roughly twice the maximum delay spread states.ftwindow_width = ftwindow_width; % magic number we adjust by experiment (see ofdm_dev.m acquisition tests, blog post on 700D sync) states.timing_mx_thresh = timing_mx_thresh; % Receive buffer: rxbufst + D P DDD P DDD P DDD P D % ^ % nominal start of current modem frame if length(data_mode) Nrxbufhistory = (states.Np+2)*states.Nsamperframe; % extra storage at start of rxbuf to allow us to step back in time else Nrxbufhistory = 0; end states.rxbufst = Nrxbufhistory; % start of rxbuf window used for demod of current rx frame states.Nrxbufhistory = Nrxbufhistory; % D P DDD P DDD P DDD P D states.Nrxbufmin = states.Nsampersymbol + 3*states.Nsamperframe + states.Nsampersymbol + states.Nsampersymbol; states.Nrxbuf = Nrxbufhistory + states.Nrxbufmin; states.rxbuf = zeros(1, states.Nrxbuf); % default settings on a bunch of options and states states.verbose = 0; states.timing_en = 1; states.foff_est_en = 1; states.phase_est_en = 1; states.phase_est_bandwidth = "high"; states.dpsk = 0; states.amp_est_mode = amp_est_mode; states.foff_est_gain = 0.1; states.foff_limiter = foff_limiter; states.foff_est_hz = 0; states.sample_point = states.timing_est = 1; states.nin = states.Nsamperframe; states.timing_valid = 0; states.timing_mx = 0; states.coarse_foff_est_hz = 0; states.foff_metric = 0; % generate OFDM pilot symbol, used for timing and freq offset est rate_fs_pilot_samples = states.pilots * W/states.M; % During tuning it was found that not including the cyc prefix in % rate_fs_pilot_samples produced better fest results %states.rate_fs_pilot_samples = [rate_fs_pilot_samples(states.M-states.Ncp+1:states.M) rate_fs_pilot_samples]; states.rate_fs_pilot_samples = [zeros(1,states.Ncp) rate_fs_pilot_samples]; % pre-compute a constant used to detect valid modem frames Npsam = length(states.rate_fs_pilot_samples); states.timing_norm = Npsam*(states.rate_fs_pilot_samples * states.rate_fs_pilot_samples'); % printf("timing_norm: %f\n", states.timing_norm) % sync state machine states.sync_state = states.last_sync_state = 'search'; states.uw_errors = 0; states.sync_counter = 0; states.frame_count = 0; % number of frames we have been in sync states.sync_start = 0; states.sync_end = 0; states.modem_frame = 0; % keep track of how many frames received in packet states.state_machine = state_machine; % mode specific state machine states.packetsperburst = 0; % for OFDM data modes, how many packets before we reset state machine states.postambledetectoren = strcmp(data_mode,"burst"); states.npre = states.npost = 0; % counters for logging % LDPC code is optionally enabled states.rate = 1.0; states.ldpc_en = 0; % init some output states for logging states.rx_sym = zeros(1+Ns+1+1, Nc+2); % Es/No (SNR) est states states.EsNo_est_all_symbols = EsNo_est_all_symbols; states.clock_offset_est = 0; % pre-amble for data modes states.data_mode = data_mode; if length(states.data_mode) states.tx_preamble = ofdm_generate_preamble(states, 2); states.tx_postamble = ofdm_generate_preamble(states, 3); end % automated tests test_qam16_mod_demod(states.qam16); test_assemble_disassemble(states); endfunction % Gray coded QPSK modulation function function symbol = qpsk_mod(two_bits) two_bits_decimal = sum(two_bits .* [2 1]); switch(two_bits_decimal) case (0) symbol = 1; case (1) symbol = j; case (2) symbol = -j; case (3) symbol = -1; endswitch endfunction % Gray coded QPSK demodulation function function two_bits = qpsk_demod(symbol) bit0 = real(symbol*exp(j*pi/4)) < 0; bit1 = imag(symbol*exp(j*pi/4)) < 0; two_bits = [bit1 bit0]; endfunction function out = freq_shift(in, foff, Fs) foff_rect = exp(j*2*pi*foff/Fs); foff_phase_rect = exp(j*0); for r=1:length(in) foff_phase_rect *= foff_rect; out(r) = in(r)*foff_phase_rect; end endfunction % ----------------------------------------------------------------- % ofdm_mod - modulates a complete packet (one or more modem frames) % ---------------------------------------------------------------- function tx = ofdm_mod(states, tx_bits) ofdm_load_const; assert(length(tx_bits) == Nbitsperpacket); % map to symbols in linear array if bps == 1 tx_sym_lin = 2*tx_bits - 1; end if bps == 2 for s=1:Nbitsperpacket/bps tx_sym_lin(s) = qpsk_mod(tx_bits(2*(s-1)+1:2*s)); end end if bps == 4 for s=1:Nbitsperpacket/bps tx_sym_lin(s) = qam16_mod(states.qam16,tx_bits(4*(s-1)+1:4*s)); end end tx = ofdm_txframe(states, tx_sym_lin); endfunction % ---------------------------------------------- % ofdm_txframe - modulates one packet of symbols % ---------------------------------------------- function tx = ofdm_txframe(states, tx_sym_lin) ofdm_load_const; assert(length(tx_sym_lin) == Nbitsperpacket/bps); % place data symbols in multi-carrier frame with pilots and boundary carriers s = 1; tx_frame = zeros(Np*Ns,Nc+2); for r=1:Np*Ns if mod(r-1,Ns) == 0 % row of pilots tx_frame(r,:) = pilots; else % row of data symbols arowofsymbols = tx_sym_lin(s:s+Nc-1); tx_frame(r,2:Nc+1) = arowofsymbols; s += Nc; if states.dpsk tx_frame(r,2:Nc+1) = tx_frame(r,2:Nc+1) .* tx_frame(r-1,2:Nc+1); end end end % make sure we use all the symbols assert((s-1) == length(tx_sym_lin)); % OFDM upconvert symbol by symbol so we can add CP tx = []; for r=1:Ns*Np asymbol = tx_frame(r,:) * W/M; asymbol_cp = [asymbol(M-Ncp+1:M) asymbol]; tx = [tx asymbol_cp]; end endfunction % ----------------------------------------------------------- % est_timing % ----------------------------------------------------------- #{ Correlates known samples (for example pilots or a preamble) with a window of received samples to determine the most likely timing offset. Optionally combines known samples from two frames (e.g. pilots at start of this and next frame) so we need at least Nsamperframe+M+Ncp samples in rx. Can be used for acquisition (coarse timing), and fine timing. Tends to break down when freq offset approaches +/- symbol rate (e.g +/- 25 Hz for 700D). #} function [t_est timing_valid timing_mx av_level] = est_timing(states, rx, known_samples, step, dual=1) ofdm_load_const; Npsam = length(known_samples); Ncorr = length(rx) - (Nsamperframe+Npsam); corr = zeros(1,Ncorr); %printf("Npsam: %d M+Ncp: %d Ncorr: %d Nsamperframe: %d step: %d\n", Npsam, M+Ncp, Ncorr, Nsamperframe, step); % normalise correlation so we can compare to a threshold across varying input levels av_level = 2*sqrt(states.timing_norm*(rx*rx')/length(rx)) + 1E-12; % correlate with pilots at start and (optionally) end of frame to determine timing offset for i=1:step:Ncorr rx1 = rx(i:i+Npsam-1); corr_st = rx1 * known_samples'; corr_en = 0; if dual % for the streaming voice modes we also correlate with pilot samples at start of next frame rx2 = rx(i+Nsamperframe:i+Nsamperframe+Npsam-1); corr_en = rx2 * known_samples'; end corr(i) = (abs(corr_st) + abs(corr_en))/av_level; end [timing_mx t_est] = max(abs(corr)); % only declare timing valid if there are enough samples in rxbuf to demodulate a frame timing_valid = (abs(rx(t_est)) > 0) && (timing_mx > timing_mx_thresh); if verbose > 1 printf(" av_level: %5.4f mx: %4.3f timing_est: %4d timing_valid: %d\n", av_level, timing_mx, t_est, timing_valid); end if verbose > 2 figure(10); clf; subplot(211); plot(rx) subplot(212); plot(corr) figure(11); clf; plot(real(known_samples)); end endfunction % ----------------------------------------------------------- % est_freq_offset_known_corr % ----------------------------------------------------------- #{ Determines frequency offset at current timing estimate, used for coarse freq offset estimation during streaming mode acquisition. #} function foff_est = est_freq_offset_known_corr(states, rx, known_samples, t_est, dual=1) ofdm_load_const; Npsam = length(known_samples); % extract pilot samples from either end of frame rx1 = rx(t_est:t_est+Npsam-1); rx2 = rx(t_est+Nsamperframe:t_est+Nsamperframe+Npsam-1); % "mix" these down (correlate) with 0 Hz offset pilot samples corr_st = rx1 .* conj(known_samples); if dual corr_en = rx2 .* conj(known_samples); end % sample sum of DFT magnitude of correlated signals at each freq offset and look for peak st = -20; en = 20; foff_est = 0; Cabs_max = 0; for f=st:en w = 2*pi*f/Fs; C_st = corr_st * exp(j*w*(0:Npsam-1))'; C_en = 0; if dual C_en = corr_en * exp(j*w*(0:Npsam-1))'; end Cabs = abs(C_st) + abs(C_en); %printf("f: %4.1f Cabs: %f Cmax: %f\n", f, Cabs, Cabs_max); if Cabs > Cabs_max Cabs_max = Cabs; foff_est = f; end end if states.verbose > 1 printf(" foff_est: %f\n", foff_est); end endfunction % Joint estimation used for data mode burst acquistion function [t_est foff_est timing_mx] = est_timing_and_freq(states, rx, known_samples, tstep, fmin, fmax, fstep) ofdm_load_const; Npsam = length(known_samples); Ncorr = length(rx) - Npsam + 1; corr = zeros(1,Ncorr); % set up matrix of freq shifted known samples for correlation with received signal. Each row % is the known samples shifted by a different freq offset M = []; for afcoarse=fmin:fstep:fmax w = 2*pi*afcoarse/Fs; wvec = exp(j*w*(0:Npsam-1)); M = [M; known_samples .* wvec]; end % At each timing position, correlate with known samples at all possible freq offsets. Result % is a column vector for each timing offset. Each matrix cell is a freq,timing coordinate corr = []; for t=1:tstep:Ncorr rx1 = rx(t:t+Npsam-1); col = M * rx1'; corr = [corr, col]; end % best timing offset is the col with the global max of the corr matrix max_col = max(abs(corr)); [mx mx_col] = max(max_col); t_est = (mx_col-1)*tstep; % obtain normalised real number for timing mx mag1 = known_samples*known_samples'; mag2 = rx(t_est+1:t_est+Npsam)*rx(t_est+1:t_est+Npsam)'; timing_mx = mx*mx'/(mag1*mag2+1E-12); % determine frequency offset for row where max is located [tmp freq_row] = max(corr(:,mx_col)); foff_est = fmin + fstep*(freq_row-1); if verbose > 1 printf(" t_est: %d timing:mx: %f foff_est: %f\n", t_est, timing_mx, foff_est); end if verbose > 2 figure(10); clf; subplot(211); plot(rx) subplot(212); plot(corr) figure(11); clf; plot(real(known_samples)); end endfunction % streaming mode acquistion, used mainly for voice modes function [timing_valid states] = ofdm_sync_search_stream(states) ofdm_load_const; st = rxbufst + M+Ncp + Nsamperframe + 1; en = st + 2*Nsamperframe + M+Ncp - 1; % Attempt coarse timing estimate (i.e. detect start of frame) at a range of frequency offsets timing_mx = 0; fcoarse = 0; timing_valid = 0; ct_est = 1; for afcoarse=-40:40:40 % vector of local oscillator samples to shift input vector % these could be computed on the fly to save memory, or pre-computed in flash at tables as they are static if afcoarse != 0 w = 2*pi*afcoarse/Fs; wvec = exp(-j*w*(0:2*Nsamperframe+M+Ncp-1)); % choose best timing offset metric at this freq offset [act_est atiming_valid atiming_mx] = est_timing(states, wvec .* states.rxbuf(st:en), states.rate_fs_pilot_samples, 2); else % exp(-j*0) is just 1 when afcoarse is 0 [act_est atiming_valid atiming_mx] = est_timing(states, states.rxbuf(st:en), states.rate_fs_pilot_samples, 2); end %printf("afcoarse: %f atiming_mx: %f\n", afcoarse, atiming_mx); if atiming_mx > timing_mx ct_est = act_est; timing_valid = atiming_valid; timing_mx = atiming_mx; fcoarse = afcoarse; end end % refine freq est within -/+ 20 Hz window if fcoarse != 0 w = 2*pi*fcoarse/Fs; wvec = exp(-j*w*(0:2*Nsamperframe+M+Ncp-1)); foff_est = est_freq_offset_known_corr(states, wvec .* states.rxbuf(st:en), states.rate_fs_pilot_samples, ct_est); foff_est += fcoarse; else % exp(-j*0) is just 1 when fcoarse is 0 foff_est = est_freq_offset_known_corr(states, states.rxbuf(st:en), states.rate_fs_pilot_samples, ct_est); end if verbose printf(" ct_est: %4d mx: %3.2f coarse_foff: %5.1f timing_valid: %d", ct_est, timing_mx, foff_est, timing_valid); end if timing_valid states.nin = ct_est - 1; else states.nin = Nsamperframe; end states.timing_valid = timing_valid; states.timing_mx = timing_mx; states.coarse_foff_est_hz = foff_est; states.sample_point = states.timing_est = 1; endfunction % two stage acquisition detector for burst mode function results = burst_acquisition_detector(states, rx, n, known_sequence) ofdm_load_const; % initial search over coarse grid tstep = 4; fstep = 5; [ct_est foff_est timing_mx] = est_timing_and_freq(states, rx(n:n+2*Nsamperframe-1), known_sequence, tstep, fmin = -50, fmax = 50, fstep); % refine estimate over finer grid fmin = foff_est - ceil(fstep/2); fmax = foff_est + ceil(fstep/2); fine_st = max(1, n + ct_est - tstep/2); fine_en = fine_st + Nsamperframe + tstep - 1; [ct_est foff_est timing_mx] = est_timing_and_freq(states, rx(fine_st:fine_en), known_sequence, 1, fmin, fmax, 1); % refer ct_est to nominal start of frame rx_buf(n) ct_est += fine_st - n; results.ct_est = ct_est; results.foff_est = foff_est; results.timing_mx = timing_mx; end % Burst mode acquisition ------------------------------------------ function [timing_valid states] = ofdm_sync_search_burst(states) ofdm_load_const; pre_post = ""; st = rxbufst + M+Ncp + Nsamperframe + 1; en = st + 2*Nsamperframe - 1; pre = burst_acquisition_detector(states, states.rxbuf, st, states.tx_preamble); if states.postambledetectoren post = burst_acquisition_detector(states, states.rxbuf, st, states.tx_postamble); end if isfield(states,"postambletest") pre.timing_mx = 0; end % force ignore preamble to test postamble if (states.postambledetectoren == 0) || (pre.timing_mx > post.timing_mx) timing_mx = pre.timing_mx; ct_est = pre.ct_est; foff_est = pre.foff_est; pre_post = "pre"; else timing_mx = post.timing_mx; ct_est = post.ct_est; foff_est = post.foff_est; pre_post = "post"; end timing_valid = timing_mx > timing_mx_thresh; if timing_valid % potential candidate found .... % calculate number of samples we need on next buffer to get into sync if strcmp(pre_post, "post") states.nin = 0; % printf("\n rxbufst: %d ", states.rxbufst); states.rxbufst -= states.Np*states.Nsamperframe; % backup to first modem frame in packet states.rxbufst += ct_est - 1; states.npost++; % printf("%d\n", states.rxbufst); else % ct_est is start of preamble, so advance past that to start of first modem frame states.nin = Nsamperframe + ct_est - 1; states.npre++; end else states.nin = Nsamperframe; end states.ct_est = ct_est; states.timing_valid = timing_valid; states.timing_mx = timing_mx; states.sample_point = states.timing_est = 1; states.foff_est_hz = foff_est; if verbose printf(" ct_est: %4d nin: %4d mx: %3.2f foff_est: %5.1f timing_valid: %d %4s", ct_est, states.nin, timing_mx, foff_est, timing_valid, pre_post); end endfunction % ---------------------------------------------------------------------------------- % ofdm_sync_search - attempts to find coarse sync parameters for modem initial sync % ---------------------------------------------------------------------------------- function [timing_valid states] = ofdm_sync_search(states, rxbuf_in) ofdm_load_const; % update rxbuf so it is primed for when we have to call ofdm_demod() states.rxbuf(1:Nrxbuf-states.nin) = states.rxbuf(states.nin+1:Nrxbuf); states.rxbuf(Nrxbuf-states.nin+1:Nrxbuf) = rxbuf_in; if strcmp(states.data_mode, "burst") [timing_valid states] = ofdm_sync_search_burst(states); else [timing_valid states] = ofdm_sync_search_stream(states); end endfunction % ------------------------------------------ % ofdm_demod - Demodulates one frame of bits % ------------------------------------------ #{ For phase estimation we need to maintain buffer of 3 frames plus one pilot, so we have 4 pilots total. '^' is the start of current frame that we are demodulating. P DDD P DDD P DDD P ^ Then add one symbol either side to account for movement in sampling instant due to sample clock differences: D P DDD P DDD P DDD P D ^ Returns: rx_bits - (hard decoded/raw/uncoded) demodulated data bits from packet aphase_est - phase est for each data symbol rx_np - output data symbols after phase correction rx_amp - amplitude estimates for each symbol #} function [states rx_bits achannel_est_rect_log rx_np rx_amp] = ofdm_demod(states, rxbuf_in) ofdm_load_const; % insert latest input samples into rxbuf rxbuf(1:Nrxbuf-states.nin) = rxbuf(states.nin+1:Nrxbuf); rxbuf(Nrxbuf-states.nin+1:Nrxbuf) = rxbuf_in; % get latest freq offset estimate woff_est = 2*pi*foff_est_hz/Fs; % update timing estimate -------------------------------------------------- delta_t = coarse_foff_est_hz = timing_valid = timing_mx = 0; if timing_en % update timing at start of every frame % search for timing in a window centered on timing_est, the window will typically be around 2Ncp wide as we could % get a shift of +Ncp or -Ncp if we swing from one delay extreme to another st = rxbufst + M+Ncp + Nsamperframe + 1 - floor(ftwindow_width/2) + (timing_est-1); en = st + Nsamperframe-1 + M+Ncp + ftwindow_width-1; [ft_est timing_valid timing_mx] = est_timing(states, rxbuf(st:en) .* exp(-j*woff_est*(st:en)), rate_fs_pilot_samples, 1); % printf(" timing_est: %d ft_est: %d timing_valid: %d timing_mx: %d\n", timing_est, ft_est, timing_valid, timing_mx); % if we are in a deep fade timing_valid will not be asserted as ft_est will be garbage, so we don't % adjust timing est, just freewheel for now if timing_valid % adjust timing_est based on ft_est timing_est = timing_est + ft_est - ceil(ftwindow_width/2); % Track the ideal sampling point, which is Ncp for a multipath signal whose delay varies between 0 and Ncp. The % timing est will be bouncing back and forth due to multipath so we may need to use the upper or lower limit of % the timing est to track the ideal sample_point. A good way to explore this algorithm is to disable the feedback % loop for nin adjustment below, and look at the plots from ofdm_rx with +ve and -ve sample clock offsets % (sox can be used to resample). The "4" constants are small guard bands so we don't stumble outside of the CP % due to noise. delta_t = ft_est - ceil(ftwindow_width/2); % just used for plotting sample_point = max(timing_est+4, sample_point); % we are at max timing est, so sample point just above sample_point = min(timing_est+Ncp-4, sample_point); % we are at min timing_est, so sample point Ncp above end if verbose > 1 printf(" ft_est: %2d mx: %3.2f coarse_foff: %4.1f foff: %4.1f\n", ft_est, timing_mx, coarse_foff_est_hz, foff_est_hz); end end % down convert at current timing instant---------------------------------- rx_sym = zeros(1+Ns+1+1, Nc+2); % previous pilot st = rxbufst + M+Ncp + Nsamperframe + (-Ns)*(M+Ncp) + 1 + sample_point; en = st + M - 1; for c=1:Nc+2 acarrier = rxbuf(st:en) .* exp(-j*woff_est*(st:en)) .* conj(W(c,:)); rx_sym(1,c) = sum(acarrier); end % pilot - this frame - pilot for rr=1:Ns+1 st = rxbufst + M+Ncp + Nsamperframe + (rr-1)*(M+Ncp) + 1 + sample_point; en = st + M - 1; for c=1:Nc+2 acarrier = rxbuf(st:en) .* exp(-j*woff_est*(st:en)) .* conj(W(c,:)); rx_sym(rr+1,c) = sum(acarrier); end end % next pilot st = rxbufst + M+Ncp + Nsamperframe + (2*Ns)*(M+Ncp) + 1 + sample_point; en = st + M - 1; for c=1:Nc+2 acarrier = rxbuf(st:en) .* exp(-j*woff_est*(st:en)) .* conj(W(c,:)); rx_sym(Ns+3,c) = sum(acarrier); end % est freq err based on all carriers ------------------------------------ if foff_est_en freq_err_rect = sum(rx_sym(2,:))' * sum(rx_sym(2+Ns,:)); % prevent instability in atan(im/re) when real part near 0 freq_err_rect += 1E-6; %printf("freq_err_rect: %f %f angle: %f\n", real(freq_err_rect), imag(freq_err_rect), angle(freq_err_rect)); freq_err_hz = angle(freq_err_rect)*Rs/(2*pi*Ns); if states.foff_limiter freq_err_hz = max(freq_err_hz,-1); freq_err_hz = min(freq_err_hz, 1); end foff_est_hz = foff_est_hz + foff_est_gain*freq_err_hz; end % OK - now channel for each carrier and correct phase ---------------------------------- achannel_est_rect = zeros(1,Nc+2); aamp_est_pilot = zeros(1,Nc+2); for c=2:Nc+1 % estimate channel for this carrier using an average of 12 pilots % in a rect 2D window centred on this carrier % PPP <-- frame-1 % --- % PPP <-- you are here % DDD % DDD % PPP <-- frame+1 % --- % PPP <-- frame+2 if isfield(states, "phase_est_bandwidth") phase_est_bandwidth = states.phase_est_bandwidth; else phase_est_bandwidth = "low"; end if strcmp(phase_est_bandwidth, "high") % Only use pilots at start and end of this frame to track quickly changes in phase % present. Useful for initial sync where freq offset est may be a bit off, and % for high Doppler channels. As less pilots are averaged, low SNR performance % will be poorer. achannel_est_rect(c) = rx_sym(2,c)*pilots(c)'; % frame achannel_est_rect(c) += rx_sym(2+Ns,c)*pilots(c)'; % frame+1 aamp_est_pilot(c) = abs(rx_sym(2,c)) + abs(rx_sym(2+Ns,c)); elseif strcmp(phase_est_bandwidth, "low") % Average over a bunch of pilots in adjacent carriers, and past and future frames, good % low SNR performance, but will fall over with high Doppler or freq offset. cr = c-1:c+1; achannel_est_rect(c) = rx_sym(2,cr)*pilots(cr)'; % frame achannel_est_rect(c) += rx_sym(2+Ns,cr)*pilots(cr)'; % frame+1 aamp_est_pilot(c) = sum(abs(rx_sym(2,cr))); aamp_est_pilot(c) += sum(abs(rx_sym(2+Ns,cr))); % use next step of pilots in past and future achannel_est_rect(c) += rx_sym(1,cr)*pilots(cr)'; % frame-1 achannel_est_rect(c) += rx_sym(2+Ns+1,cr)*pilots(cr)'; % frame+2 aamp_est_pilot(c) += sum(abs(rx_sym(1,cr))); aamp_est_pilot(c) += sum(abs(rx_sym(2+Ns+1,cr))); end end % pilots are estimated over 12 pilot symbols, so find average if strcmp(phase_est_bandwidth, "high") achannel_est_rect /= 2; aamp_est_pilot /= 2; elseif strcmp(phase_est_bandwidth, "low") achannel_est_rect /= 12; aamp_est_pilot /= 12; end aphase_est_pilot = angle(achannel_est_rect); if states.amp_est_mode == 0 % legacy 700D/2020 ampl estimator for compatibility with current C code aamp_est_pilot = abs(achannel_est_rect); end achannel_est_rect = aamp_est_pilot.*exp(j*aphase_est_pilot); % correct phase offset using phase estimate, and demodulate % bits, separate loop as it runs across cols (carriers) to get % frame bit ordering correct rx_bits = []; rx_np = []; rx_amp = []; achannel_est_rect_log = []; for rr=1:Ns-1 for c=2:Nc+1 if phase_est_en if states.dpsk rx_corr = rx_sym(rr+2,c) * rx_sym(rr+1,c)'; else rx_corr = rx_sym(rr+2,c) * exp(-j*aphase_est_pilot(c)); end else rx_corr = rx_sym(rr+2,c); end rx_np = [rx_np rx_corr]; rx_amp = [rx_amp aamp_est_pilot(c)]; % hard decision demod if bps == 1 abit = real(rx_corr) > 0; end if bps == 2 abit = qpsk_demod(rx_corr); end if bps == 4 abit = qam16_demod(states.qam16, rx_corr, max(1E-12,aamp_est_pilot(c))); end rx_bits = [rx_bits abit]; end % c=2:Nc+1 achannel_est_rect_log = [achannel_est_rect_log; achannel_est_rect(2:Nc+1)]; end % Adjust nin to take care of sample clock offset. When debugong or exploring how timing loop works % it's a good idea to comment out this code to "open the loop". nin = Nsamperframe; if timing_en && timing_valid states.clock_offset_est = 0.9*states.clock_offset_est + 0.1*abs(states.timing_est - timing_est)/Nsamperframe; thresh = (M+Ncp)/8; tshift = (M+Ncp)/4; if timing_est > thresh nin = Nsamperframe+tshift; timing_est -= tshift; sample_point -= tshift; end if timing_est < -thresh nin = Nsamperframe-tshift; timing_est += tshift; sample_point += tshift; end end % use internal rxbuf samples if they are available rxbufst_next = rxbufst + nin; %printf("\nrxbufst: %d rxbufst_next: %d nin: %d Nrxbufmin: %d rqd: %d Nrxbuf: %d\n", % rxbufst, rxbufst_next, nin, Nrxbufmin, rxbufst_next + Nrxbufmin, Nrxbuf); if rxbufst_next + Nrxbufmin <= Nrxbuf % printf("Can maybe use rxbufst!\n"); rxbufst = rxbufst_next; nin = 0; end % maintain mean amp estimate for LDPC decoder states.mean_amp = 0.9*states.mean_amp + 0.1*mean(rx_amp); states.rx_sym = rx_sym; states.rxbuf = rxbuf; states.nin = nin; states.rxbufst = rxbufst; states.timing_valid = timing_valid; states.timing_mx = timing_mx; states.timing_est = timing_est; states.sample_point = sample_point; states.delta_t = delta_t; states.foff_est_hz = foff_est_hz; states.coarse_foff_est_hz = coarse_foff_est_hz; % just used for tofdm endfunction function SNR3kdB = snr_from_esno(states, EsNodB) ofdm_load_const; % We integrate over M samples to get the received symbols. Additional signal power % is used for the cyclic prefix samples. cyclic_power = 10*log10((Ncp+M)/M); % Es is the energy for each symbol. To get signal power lets % multiply by symbols/second, and calculate noise power in 3000 Hz. SNR3kdB = EsNodB + 10*log10(Nc*Rs/3000) + cyclic_power; endfunction % ---------------------------------------------------------------------------------- % assemble_modem_packet - assemble modem packet from UW, payload, and txt bits % ---------------------------------------------------------------------------------- function modem_frame = assemble_modem_packet(states, payload_bits, txt_bits) ofdm_load_const; # Due to the operation of the FEC encoder or interleaver, Tx data # usually comes in "packet size" chunks, so assembly operates on an # entire packet (multiple modem frames if Np>1) p = 1; u = 1; modem_frame = zeros(1,Nbitsperpacket); for b=1:Nbitsperpacket-Ntxtbits; if (u <= Nuwbits) && (b == uw_ind(u)) modem_frame(b) = tx_uw(u++); else modem_frame(b) = payload_bits(p++); end end t = 1; for b=Nbitsperpacket-Ntxtbits+1:Nbitsperpacket modem_frame(b) = txt_bits(t++); end assert(u == (Nuwbits+1)); assert(p = (length(payload_bits)+1)); endfunction % ---------------------------------------------------------------------------------- % assemble_modem_packet_symbols - assemble modem packet from UW, payload, and txt bits % ---------------------------------------------------------------------------------- function modem_frame = assemble_modem_packet_symbols(states, payload_syms, txt_syms) ofdm_load_const; Nsymsperpacket = Nbitsperpacket/bps; Nuwsyms = Nuwbits/bps; Ntxtsyms = Ntxtbits/bps; modem_frame = zeros(1,Nsymsperpacket); p = 1; u = 1; for s=1:Nsymsperpacket-Ntxtsyms; if (u <= Nuwsyms) && (s == uw_ind_sym(u)) modem_frame(s) = states.tx_uw_syms(u++); else modem_frame(s) = payload_syms(p++); end end t = 1; for s=Nsymsperpacket-Ntxtsyms+1:Nsymsperpacket modem_frame(s) = txt_syms(t++); end assert(u == (Nuwsyms+1)); assert(p = (length(payload_syms)+1)); endfunction % ------------------------------------------------------------------------------------------------ % extract_uw - extract just the UW from the first few frames of a packet, to check UW % during acquisition % ------------------------------------------------------------------------------------------------- function rx_uw = extract_uw(states, rx_syms, rx_amps) ofdm_load_const; Nsymsperframe = Nbitsperframe/bps; assert(length(rx_syms) == Nuwframes*Nsymsperframe); Nuwsyms = Nuwbits/bps; rx_uw_syms = zeros(1,Nuwsyms); rx_uw_amps = zeros(1,Nuwsyms); u = 1; for s=1:Nuwframes*Nsymsperframe if (u <= Nuwsyms) && (s == uw_ind_sym(u)) rx_uw_syms(u) = rx_syms(s); rx_uw_amps(u) = rx_amps(s); u++; end end assert(u == (Nuwsyms+1)); % now demodulate UW bits rx_uw = zeros(1,Nuwbits); for s=1:Nuwsyms if bps == 2 rx_uw(bps*(s-1)+1:bps*s) = qpsk_demod(rx_uw_syms(s)); elseif bps == 4 rx_uw(bps*(s-1)+1:bps*s) = qam16_demod(states.qam16,rx_uw_syms(s), max(1E-12,rx_amps(s))); end end endfunction % ------------------------------------------------------------------------------------------------ % disassemble_modem_packet - extract UW, txt bits, and payload symbols from a packet of symbols % ------------------------------------------------------------------------------------------------- function [rx_uw payload_syms payload_amps txt_bits] = disassemble_modem_packet(states, modem_frame_syms, modem_frame_amps) ofdm_load_const; Nsymsperpacket = Nbitsperpacket/bps; Nuwsyms = Nuwbits/bps; Ntxtsyms = Ntxtbits/bps; payload_syms = zeros(1,Nsymsperpacket-Nuwsyms-Ntxtsyms); payload_amps = zeros(1,Nsymsperpacket-Nuwsyms-Ntxtsyms); rx_uw_syms = zeros(1,Nuwsyms); rx_uw_amps = zeros(1,Nuwsyms); txt_syms = zeros(1,Ntxtsyms); p = 1; u = 1; for s=1:Nsymsperpacket-Ntxtsyms; if (u <= Nuwsyms) && (s == uw_ind_sym(u)) rx_uw_syms(u) = modem_frame_syms(s); rx_uw_amps(u) = modem_frame_amps(s); u++; else payload_syms(p) = modem_frame_syms(s); payload_amps(p++) = modem_frame_amps(s); end end t = 1; for s=Nsymsperpacket-Ntxtsyms+1:Nsymsperpacket txt_syms(t++) = modem_frame_syms(s); end assert(u == (Nuwsyms+1)); assert(p = (Nsymsperpacket+1)); % now demodulate UW and txt bits rx_uw = zeros(1,Nuwbits); txt_bits = zeros(1,Ntxtbits); for s=1:Nuwsyms if bps == 2 rx_uw(bps*(s-1)+1:bps*s) = qpsk_demod(rx_uw_syms(s)); elseif bps == 4 rx_uw(bps*(s-1)+1:bps*s) = qam16_demod(states.qam16,rx_uw_syms(s),rx_uw_amps(s)); end end for s=1:Ntxtsyms txt_bits(2*s-1:2*s) = qpsk_demod(txt_syms(s)); end endfunction %----------------------------------------------------------------------- % ofdm_rand - a psuedo-random number generator that we can implement % in C with identical results to Octave. Returns an unsigned % int between 0 and 32767 %----------------------------------------------------------------------- function r = ofdm_rand(n, seed=1) r = zeros(1,n); for i=1:n seed = mod(1103515245 * seed + 12345, 32768); r(i) = seed; end endfunction % build a single modem frame preamble vector for reliable single frame acquisition % on data modes function tx_preamble = ofdm_generate_preamble(states, seed=2) tmp_states = states; % tweak local copy of states so we can generate a 1 modem-frame packet tmp_states.Np = 1; tmp_states.Nbitsperpacket = tmp_states.Nbitsperframe; preamble_bits = ofdm_rand(tmp_states.Nbitsperframe, seed) > 16384; tx_preamble = ofdm_mod(tmp_states, preamble_bits); endfunction % ------------------------------------------------------------------------------ % Handle FEC encoding/decoding % ------------------------------------------------------------------------------ function [frame_bits bits_per_frame] = fec_encode(states, code_param, mode, payload_bits) ofdm_load_const; if code_param.data_bits_per_frame != code_param.ldpc_data_bits_per_frame % optionally lower the code rate by "one stuffing" - setting Nunused data bits to 1 Nunused = code_param.ldpc_data_bits_per_frame - code_param.data_bits_per_frame; frame_bits = LdpcEncode([payload_bits ones(1,Nunused)], code_param.H_rows, code_param.P_matrix); % remove unused data bits from codeword, as they are known to the receiver and don't need to be transmitted frame_bits = [ frame_bits(1:code_param.data_bits_per_frame) frame_bits(code_param.ldpc_data_bits_per_frame+1:end) ]; else frame_bits = LdpcEncode(payload_bits, code_param.H_rows, code_param.P_matrix); end bits_per_frame = length(frame_bits); endfunction function [rx_bits paritychecks] = fec_decode(states, code_param, ... payload_syms_de, payload_amps_de, ... mean_amp, EsNo) ofdm_load_const; % note ldpc_dec() handles optional lower code rate zero-stuffing [rx_codeword paritychecks] = ldpc_dec(code_param, mx_iter=100, demod=0, dec=0, ... payload_syms_de/mean_amp, EsNo, payload_amps_de/mean_amp); rx_bits = rx_codeword(1:code_param.data_bits_per_frame); endfunction function [tx nclipped] = ofdm_clip(states, tx, threshold_level, plot_en=0) ofdm_load_const; tx_ = tx; ind = find(abs(tx) > threshold_level); nclipped = length(ind); tx(ind) = threshold_level*exp(j*angle(tx(ind))); if plot_en figure(2); clf; plot(abs(tx_(1:5*M))); hold on; plot(abs(tx(1:5*M))); hold off; endif end % two stage Hilbert clipper to improve PAPR function tx = ofdm_hilbert_clipper(states, tx, tx_clip_en) tx *= states.amp_scale; % optional compressor to improve PAPR nclipped = 0; if tx_clip_en if states.verbose printf("%f %f\n", states.clip_gain1, states.clip_gain2); end [tx nclipped] = ofdm_clip(states, tx*states.clip_gain1, states.ofdm_peak); cutoff_norm = states.txbpf_width_Hz/states.Fs; w_centre = mean(states.w); centre_norm = w_centre/(2*pi); tx = ofdm_complex_bandpass_filter(cutoff_norm, centre_norm,100,tx); % filter messes up peak levels use this to get us back to approx 16384 tx *= states.clip_gain2; end % Hilbert Clipper 2 - remove any really low probability outliers after clipping/filtering % even on vanilla Tx [tx tmp] = ofdm_clip(states, tx, states.ofdm_peak); % note this is PAPR of complex signal, PAPR of real signal will be 3dB-ish larger peak = max(abs(tx)); RMS = sqrt(mean(abs(tx).^2)); cpapr = 10*log10((peak.^2)/(RMS.^2)); if states.verbose printf("Peak: %4.2f RMS: %5.2f CPAPR: %4.2f clipped: %5.2f%%\n", peak, RMS, cpapr, nclipped*100/length(tx)); end endfunction % Complex bandpass filter built from low pass prototype as per src/filter.c, % cutoff_freq and center_freq are normalised such that cutoff_freq = 0.5 is Fs/2 function out = ofdm_complex_bandpass_filter(cutoff_freq,center_freq,n_coeffs,in) lowpass_coeff = fir1(n_coeffs-1, cutoff_freq); k = (0:n_coeffs-1); bandpass_coeff = lowpass_coeff .* exp(j*2*pi*center_freq*k); out = filter(bandpass_coeff,1,in); endfunction % Complex bandpass filter for Rx - just used on the very low SNR modes to help % with acquisition function [rx delay_samples] = ofdm_rx_filter(states, mode, rx) delay_samples = 0; if strcmp(mode,"datac4") || strcmp(mode,"datac13") w_centre = mean(states.w); centre_norm = w_centre/(2*pi); n_coeffs = 100; cutoff_Hz = 400; cutoff_norm = cutoff_Hz/states.Fs; rx = ofdm_complex_bandpass_filter(cutoff_norm,centre_norm,n_coeffs,rx); delay_samples = n_coeffs/2; end endfunction % returns an unpacked CRC16 (array of 16 bits) calculated from an array of unpacked bits function unpacked_crc16 = crc16_unpacked(unpacked_bits) % pack into bytes mod(length(unpacked_bits),8); assert(mod(length(unpacked_bits),8) == 0); nbytes = length(unpacked_bits)/8; mask = 2 .^ (7:-1:0); for i=1:nbytes st = (i-1)*8 + 1; en = st+7; bytes(i) = sum(mask .* unpacked_bits(st:en)); end crc16_hex = crc16(bytes); crc16_dec = [hex2dec(crc16_hex(1:2)) hex2dec(crc16_hex(3:4)) ]; unpacked_crc16 = []; for b=1:length(crc16_dec) unpacked_crc16 = [unpacked_crc16 bitand(crc16_dec(b), mask) > 0]; end endfunction codec2-1.2.0/octave/ofdm_load_const.m000066400000000000000000000024711445607075400174620ustar00rootroot00000000000000% make like C #define for ofdm modem Fs = states.Fs; bps = states.bps; Rs = states.Rs; Tcp = states.Tcp; Ns = states.Ns; Np = states.Np; Nc = states.Nc; M = states.M; Ncp = states.Ncp; bps = states.bps; Nbitsperframe = states.Nbitsperframe; Nbitsperpacket = states.Nbitsperpacket; Nsampersymbol = states.Nsampersymbol; Nsamperframe = states.Nsamperframe; timing_mx_thresh = states.timing_mx_thresh; Nuwbits = states.Nuwbits; Ntxtbits = states.Ntxtbits; tx_uw = states.tx_uw; uw_ind = states.uw_ind; uw_ind_sym = states.uw_ind_sym; Nuwframes=states.Nuwframes; W = states.W; w = states.w; timing_est = states.timing_est; sample_point = states.sample_point; ftwindow_width = states.ftwindow_width; Nrxbuf = states.Nrxbuf; rxbuf = states.rxbuf; rxbufst = states.rxbufst; Nrxbufmin = states.Nrxbufmin; pilots = states.pilots; rate_fs_pilot_samples = states.rate_fs_pilot_samples; foff_est_gain = states.foff_est_gain; foff_est_hz = states.foff_est_hz; timing_en = states.timing_en; foff_est_en = states.foff_est_en; phase_est_en = states.phase_est_en; rate = states.rate; ldpc_en = states.ldpc_en; if ldpc_en code_param = states.code_param; max_iterations = states.ldpc_max_iterations; demod_type = states.ldpc_demod_type; decoder_type = states.ldpc_decoder_type; end verbose = states.verbose; ofdm_peak = states.ofdm_peak; codec2-1.2.0/octave/ofdm_mode.m000066400000000000000000000302161445607075400162570ustar00rootroot00000000000000% ofdm_mode.m % % Library of functions to help setting up OFDM modes %------------------------------------------------------------------------------ % ofdm_init_mode - Helper function to set up modems for various FreeDV modes, % and parse mode string. %------------------------------------------------------------------------------ 1; function config = ofdm_init_mode(mode="700D") % defaults for 700D Tcp = 0.002; Ns = 8; Ts = 0.018; Nc = 17; config.bps = 2; config.Np = 1; config.Ntxtbits = 4; config.Nuwbits = 5*config.bps; config.ftwindow_width = 32; config.timing_mx_thresh = 0.35; config.bad_uw_errors = 3; config.amp_scale = 245E3; config.amp_est_mode = 0; config.EsNo_est_all_symbols = 1; config.EsNodB = 3; config.state_machine = "voice1"; config.edge_pilots = 1; config.clip_gain1 = 2.5; config.clip_gain2 = 0.8; config.foff_limiter = 0; config.txbpf_width_Hz = 2000; config.data_mode = ""; if strcmp(mode,"700D") || strcmp(mode,"700d") % defaults above elseif strcmp(mode,"700E") || strcmp(mode,"700e") Ts = 0.014; Tcp=0.006; Nc = 21; Ns=4; config.edge_pilots = 0; config.state_machine = "voice2"; config.Nuwbits = 12; config.bad_uw_errors = 3; config.Ntxtbits = 2; config.amp_est_mode = 1; config.ftwindow_width = 80; config.amp_scale = 155E3; config.clip_gain1 = 3; config.clip_gain2 = 0.8; config.foff_limiter = 1; elseif strcmp(mode,"2020") Ts = 0.0205; Nc = 31; config.amp_scale = 167E3; config.clip_gain1 = 2.5; config.clip_gain2 = 0.8; elseif strcmp(mode,"2020B") Ts = 0.014; Tcp = 0.004; Nc = 29; Ns=5; config.Ntxtbits = 4; config.Nuwbits = 8*2; config.bad_uw_errors = 5; config.amp_scale = 130E3; config.clip_gain1 = 2.5; config.clip_gain2 = 0.8; config.edge_pilots = 0; config.state_machine = "voice2"; config.foff_limiter = 1; config.ftwindow_width = 64; config.txbpf_width_Hz = 2200; elseif strcmp(mode,"qam16c1") Ns=5; config.Np=5; Tcp = 0.004; Ts = 0.016; Nc = 33; config.data_mode = "streaming"; config.bps=4; config.Ntxtbits = 0; config.Nuwbits = 15*4; config.bad_uw_errors = 5; config.state_machine = "data"; config.ftwindow_width = 32; config.amp_scale = 132E3; config.EsNo_est_all_symbols = 0; config.amp_est_mode = 1; config.EsNodB = 10; elseif strcmp(mode,"qam16c2") Ns=5; config.Np=31; Tcp = 0.004; Ts = 0.016; Nc = 33; config.data_mode = "streaming"; config.bps=4; config.Ntxtbits = 0; config.Nuwbits = 42*4; config.bad_uw_errors = 15; config.ftwindow_width = 80; config.amp_scale = 135E3; config.state_machine = "data"; config.EsNo_est_all_symbols = 0; config.amp_est_mode = 1; config.EsNodB = 10; config.tx_uw = zeros(1,config.Nuwbits = 42*4); config.tx_uw(1:24) = [1 1 0 0 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0]; config.tx_uw(end-24+1:end) = [1 1 0 0 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0]; elseif strcmp(mode,"datac0") Ns=5; config.Np=4; Tcp = 0.006; Ts = 0.016; Nc = 9; config.data_mode = "streaming"; config.Ntxtbits = 0; config.Nuwbits = 32; config.bad_uw_errors = 9; config.state_machine = "data"; config.ftwindow_width = 80; config.amp_est_mode = 1; config.EsNodB = 3; config.edge_pilots = 0; config.timing_mx_thresh = 0.08; config.tx_uw = zeros(1,config.Nuwbits); config.tx_uw(1:16) = [1 1 0 0 1 0 1 0 1 1 1 1 0 0 0 0]; config.amp_scale = 300E3; config.clip_gain1 = 2.2; config.clip_gain2 = 0.85; elseif strcmp(mode,"datac5") Ns=5; config.Np=58; Tcp = 0.004; Ts = 0.016; Nc = 35; config.data_mode = "streaming"; config.Ntxtbits = 0; config.Nuwbits = 40; config.bad_uw_errors = 14; config.state_machine = "data"; config.ftwindow_width = 80; config.amp_est_mode = 1; config.EsNodB = 3; config.amp_scale = 145E3; config.clip_gain1 = 2.7; config.clip_gain2 = 0.8; config.edge_pilots = 0; config.timing_mx_thresh = 0.10; config.tx_uw = zeros(1,config.Nuwbits); config.tx_uw(1:16) = [1 1 0 0 1 0 1 0 1 1 1 1 0 0 0 0]; elseif strcmp(mode,"datac1") Ns=5; config.Np=38; Tcp = 0.006; Ts = 0.016; Nc = 27; config.data_mode = "streaming"; config.Ntxtbits = 0; config.Nuwbits = 16; config.bad_uw_errors = 6; config.state_machine = "data"; config.ftwindow_width = 80; config.amp_est_mode = 1; config.EsNodB = 3; % clipper/compression adjustment: % 1. With clipper off increase amp_scale until peak just hit 16384 % 2. With clipper on increase clip_gain1 until about 30% clipped % 3. BPF will drop level beneath 16384, adjust clip_gain2 to just hit 16384 peak again % 4. Clipped/unclipped operating point for same PER should be about 1dB apart config.amp_scale = 145E3; config.clip_gain1 = 2.7; config.clip_gain2 = 0.8; config.edge_pilots = 0; config.timing_mx_thresh = 0.10; config.tx_uw = [1 1 0 0 1 0 1 0 1 1 1 1 0 0 0 0]; elseif strcmp(mode,"datac3") Ns=5; config.Np=29; Tcp = 0.006; Ts = 0.016; Nc = 9; config.data_mode = "streaming"; config.edge_pilots = 0; config.Ntxtbits = 0; config.Nuwbits = 40; config.bad_uw_errors = 10; config.ftwindow_width = 80; config.timing_mx_thresh = 0.10; config.tx_uw = zeros(1,config.Nuwbits); config.tx_uw(1:24) = [1 1 0 0 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0]; config.tx_uw(end-24+1:end) = [1 1 0 0 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0]; config.amp_est_mode = 1; config.EsNodB = 3; config.state_machine = "data"; config.amp_scale = 300E3; config.clip_gain1 = 2.2; config.clip_gain2 = 0.8; elseif strcmp(mode,"datac4") Ns=5; config.Np=47; Tcp = 0.006; Ts = 0.016; Nc = 4; config.data_mode = "streaming"; config.edge_pilots = 0; config.Ntxtbits = 0; config.Nuwbits = 32; config.bad_uw_errors = 12; config.ftwindow_width = 80; config.timing_mx_thresh = 0.5; config.tx_uw = zeros(1,config.Nuwbits); config.tx_uw(1:24) = [1 1 0 0 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0]; config.tx_uw(end-24+1:end) = [1 1 0 0 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0]; config.amp_est_mode = 1; config.EsNodB = 3; config.state_machine = "data"; config.amp_scale = 2*300E3; config.clip_gain1 = 1.2; config.clip_gain2 = 1.0; config.txbpf_width_Hz = 400; elseif strcmp(mode,"datac13") Ns=5; config.Np=18; Tcp = 0.006; Ts = 0.016; Nc = 3; config.data_mode = "streaming"; config.edge_pilots = 0; config.Ntxtbits = 0; config.Nuwbits = 48; config.bad_uw_errors = 18; config.ftwindow_width = 80; config.timing_mx_thresh = 0.45; config.tx_uw = zeros(1,config.Nuwbits); config.tx_uw(1:24) = [1 1 0 0 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0]; config.tx_uw(end-24+1:end) = [1 1 0 0 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0]; config.amp_est_mode = 1; config.EsNodB = 3; config.state_machine = "data"; config.amp_scale = 2.5*300E3; config.clip_gain1 = 1.2; config.clip_gain2 = 1.0; config.txbpf_width_Hz = 400; elseif strcmp(mode,"1") Ns=5; config.Np=10; Tcp=0; Tframe = 0.1; Ts = Tframe/Ns; Nc = 1; else % try to parse mode string for user defined mode vec = sscanf(mode, "Ts=%f Nc=%d Ncp=%f"); Ts=vec(1); Nc=vec(2); Ncp=vec(3); end Rs=1/Ts; config.Rs = Rs; config.Tcp = Tcp; config.Ns = Ns; config.Nc = Nc; if !isfield(config,"tx_uw") config.tx_uw = zeros(1,config.Nuwbits); end end % ------------------------------------------------------------------------------ % codec_to_frame_packing - Set up a bunch of constants to support modem frame % construction from LDPC codewords and codec source bits % ------------------------------------------------------------------------------ function [code_param Nbitspercodecframe Ncodecframespermodemframe] = codec_to_frame_packing(states, mode) ofdm_load_const; mod_order = 4; bps = 2; modulation = 'QPSK'; mapping = 'gray'; init_cml(); if strcmp(mode, "700D") load HRA_112_112.txt code_param = ldpc_init_user(HRA_112_112, modulation, mod_order, mapping); assert(Nbitsperframe == (code_param.coded_bits_per_frame + Nuwbits + Ntxtbits)); % unused for this mode Nbitspercodecframe = Ncodecframespermodemframe = 0; end if strcmp(mode, "700E") load HRA_56_56.txt code_param = ldpc_init_user(HRA_56_56, modulation, mod_order, mapping); assert(Nbitsperframe == (code_param.coded_bits_per_frame + Nuwbits + Ntxtbits)); % unused for this mode Nbitspercodecframe = Ncodecframespermodemframe = 0; end if strcmp(mode, "2020") load HRA_504_396.txt code_param = ldpc_init_user(HRA_504_396, modulation, mod_order, mapping); code_param.data_bits_per_frame = 312; code_param.coded_bits_per_frame = code_param.data_bits_per_frame + code_param.ldpc_parity_bits_per_frame; code_param.coded_syms_per_frame = code_param.coded_bits_per_frame/code_param.bits_per_symbol; printf("2020 mode\n"); printf("ldpc_data_bits_per_frame = %d\n", code_param.ldpc_data_bits_per_frame); printf("ldpc_coded_bits_per_frame = %d\n", code_param.ldpc_coded_bits_per_frame); printf("ldpc_parity_bits_per_frame = %d\n", code_param.ldpc_parity_bits_per_frame); printf("data_bits_per_frame = %d\n", code_param.data_bits_per_frame); printf("coded_bits_per_frame = %d\n", code_param.coded_bits_per_frame); printf("coded_syms_per_frame = %d\n", code_param.coded_syms_per_frame); printf("ofdm_bits_per_frame = %d\n", Nbitsperframe); Nbitspercodecframe = 52; Ncodecframespermodemframe = 6; printf(" Nuwbits: %d Ntxtbits: %d\n", Nuwbits, Ntxtbits); Nparity = code_param.ldpc_parity_bits_per_frame; totalbitsperframe = code_param.data_bits_per_frame + Nparity + Nuwbits + Ntxtbits; printf("Total bits per frame: %d\n", totalbitsperframe); assert(totalbitsperframe == Nbitsperframe); end if strcmp(mode, "qam16c1") load H2064_516_sparse.mat code_param = ldpc_init_user(HRA, modulation='QAM', mod_order=16, mapping="", reshape(states.qam16,1,16)); end if strcmp(mode, "qam16c2") framesize = 16200; rate = 0.6; code_param = ldpc_init_builtin("dvbs2", rate, framesize, modulation='QAM', mod_order=16, mapping="", reshape(states.qam16,1,16)); end if strcmp(mode, "datac5") framesize = 16200; rate = 0.6; code_param = ldpc_init_builtin("dvbs2", rate, framesize, modulation='QPSK', mod_order=4, mapping=""); end if strcmp(mode, "datac0") || strcmp(mode, "datac13") load H_128_256_5.mat code_param = ldpc_init_user(H, modulation, mod_order, mapping); end if strcmp(mode, "datac1") load H_4096_8192_3d.mat code_param = ldpc_init_user(HRA, modulation, mod_order, mapping); end if strcmp(mode, "datac3") load H_1024_2048_4f.mat code_param = ldpc_init_user(H, modulation, mod_order, mapping); end if strcmp(mode, "datac4") load H_1024_2048_4f code_param = ldpc_init_user(H, modulation, mod_order, mapping); code_param.data_bits_per_frame = 448; code_param.coded_bits_per_frame = code_param.data_bits_per_frame + code_param.ldpc_parity_bits_per_frame; code_param.coded_syms_per_frame = code_param.coded_bits_per_frame/code_param.bits_per_symbol; end if strcmp(mode, "datac13") load H_256_512_4.mat code_param = ldpc_init_user(H, modulation, mod_order, mapping); code_param.data_bits_per_frame = 128; code_param.coded_bits_per_frame = code_param.data_bits_per_frame + code_param.ldpc_parity_bits_per_frame; code_param.coded_syms_per_frame = code_param.coded_bits_per_frame/code_param.bits_per_symbol; end if strcmp(mode, "datac0") || strcmp(mode, "datac1") || strcmp(mode, "datac3") ... || strcmp(mode, "datac4") || strcmp(mode, "qam16c1") ... || strcmp(mode, "qam16c2") || strcmp(mode, "datac5") || strcmp(mode, "datac13") printf("ldpc_data_bits_per_frame = %d\n", code_param.ldpc_data_bits_per_frame); printf("ldpc_coded_bits_per_frame = %d\n", code_param.ldpc_coded_bits_per_frame); printf("ldpc_parity_bits_per_frame = %d\n", code_param.ldpc_parity_bits_per_frame); printf("Nbitsperpacket = %d\n", Nbitsperpacket); Nparity = code_param.ldpc_parity_bits_per_frame; totalbitsperframe = code_param.data_bits_per_frame + Nparity + Nuwbits + Ntxtbits; printf("totalbitsperframe = %d\n", totalbitsperframe); assert(totalbitsperframe == Nbitsperpacket); Nbitspercodecframe = Ncodecframespermodemframe = -1; end endfunction codec2-1.2.0/octave/ofdm_rx.m000066400000000000000000000173301445607075400157660ustar00rootroot00000000000000% ofdm_rx.m % David Rowe May 2018 % % OFDM file based uncoded rx to unit test core OFDM modem. See also % ofdm_ldpc_rx which includes LDPC and interleaving, and ofdm_demod.c #{ 1. Streaming mode operation: ofdm_rx("test_datac0.raw","datac0") 2. Burst mode, tell state machine there is one packet in each burst: ofdm_rx("test_datac0.raw","datac0","packetsperburst",1) 3. Burst mode, enable only postamble detection: ofdm_rx("test_datac0.raw","datac0","packetsperburst",1, "postambletest") #} function ofdm_rx(filename, mode="700D", varargin) ofdm_lib; more off; pkg load signal; % init modem config = ofdm_init_mode(mode); states = ofdm_init(config); print_config(states); ofdm_load_const; states.verbose = 0; pass_ber = 0; pass_packet_count = 0; i = 1; while i <= length(varargin) if strcmp(varargin{i},"packetsperburst") states.data_mode = "burst"; % use pre/post amble based sync states.packetsperburst = varargin{i+1}; i++; states.postambledetectoren = 1; elseif strcmp(varargin{i},"passber") pass_ber = varargin{i+1}; i++; elseif strcmp(varargin{i},"passpacketcount") pass_packet_count = varargin{i+1}; i++; elseif strcmp(varargin{i},"postambletest") printf("postamble test!\n"); states.postambletest = 1; % at high SNR avoid firing on data frames just before postamble states.timing_mx_thresh = 0.15; else printf("\nERROR unknown argument: %s\n", varargin{i}); return; end i++; end % load real samples from file Ascale = states.amp_scale/2; % as input is a real valued signal frx=fopen(filename,"rb"); rx = fread(frx, Inf, "short")/Ascale; fclose(frx); Nsam = length(rx); prx = 1; % OK re-generate tx frame for BER calcs tx_bits = create_ldpc_test_frame(states, coded_frame=0); % init logs and BER stats rx_np_log = []; timing_est_log = []; delta_t_log = []; foff_est_hz_log = []; sample_point_log = []; channel_est_pilot_log = []; snr_log = []; Terrs = Tbits = Terrs_coded = Tbits_coded = Tpackets = Tpacketerrs = 0; packet_count = frame_count = 0; Nerrs_coded_log = Nerrs_log = []; error_positions = []; prx = 1; nin = Nsamperframe+2*(M+Ncp); states.verbose = 1; Nsymsperpacket = Nbitsperpacket/bps; Nsymsperframe = Nbitsperframe/bps; rx_syms = zeros(1,Nsymsperpacket); rx_amps = zeros(1,Nsymsperpacket); Nerrs = 0; rx_uw = zeros(1,states.Nuwbits); % main loop ---------------------------------------------------------------- f = 1; while(prx < Nsam) % insert samples at end of buffer, set to zero if no samples % available to disable phase estimation on future pilots on last % frame of simulation lnew = min(Nsam-prx,states.nin); rxbuf_in = zeros(1,states.nin); if lnew rxbuf_in(1:lnew) = rx(prx:prx+lnew-1); end prx += states.nin; if states.verbose printf("f: %3d nin: %4d st: %-6s ", f, states.nin, states.sync_state); end if strcmp(states.sync_state,'search') [timing_valid states] = ofdm_sync_search(states, rxbuf_in); else % accumulate a buffer of data symbols for this packet rx_syms(1:end-Nsymsperframe) = rx_syms(Nsymsperframe+1:end); rx_amps(1:end-Nsymsperframe) = rx_amps(Nsymsperframe+1:end); [states rx_bits achannel_est_pilot_log arx_np arx_amp] = ofdm_demod(states, rxbuf_in); rx_syms(end-Nsymsperframe+1:end) = arx_np; rx_amps(end-Nsymsperframe+1:end) = arx_amp; rx_uw = extract_uw(states, rx_syms(end-Nuwframes*Nsymsperframe+1:end), rx_amps(end-Nuwframes*Nsymsperframe+1:end)); % We need the full packet of symbols before disassembling and checking for bit errors if states.modem_frame == (states.Np-1); rx_bits = zeros(1,Nbitsperpacket); for s=1:Nsymsperpacket if bps == 2 rx_bits(bps*(s-1)+1:bps*s) = qpsk_demod(rx_syms(s)); elseif bps == 4 rx_bits(bps*(s-1)+1:bps*s) = qam16_demod(states.qam16,rx_syms(s), rx_amps(s)); end end errors = xor(tx_bits, rx_bits); Nerrs = sum(errors); Nerrs_log = [Nerrs_log Nerrs]; Terrs += Nerrs; Tbits += Nbitsperpacket; packet_count++; % per-packet SNR estimate EsNo_estdB = esno_est_calc(rx_syms); SNR_estdB = snr_from_esno(states, EsNo_estdB); snr_log = [snr_log SNR_estdB]; end % we are in sync so log states rx_np_log = [rx_np_log arx_np]; timing_est_log = [timing_est_log states.timing_est]; sample_point_log = [sample_point_log states.sample_point]; delta_t_log = [delta_t_log states.delta_t]; foff_est_hz_log = [foff_est_hz_log states.foff_est_hz]; channel_est_pilot_log = [channel_est_pilot_log; achannel_est_pilot_log]; frame_count++; end states = sync_state_machine(states, rx_uw); if states.verbose if strcmp(states.last_sync_state,'search') == 0 if (states.modem_frame == 0) && (strcmp(states.sync_state, "trial") == 0) printf(" euw: %3d %d mf: %2d pbw: %s foff: %4.1f eraw: %3d snr: %5.2f", states.uw_errors, states.sync_counter, states.modem_frame, states.phase_est_bandwidth(1), states.foff_est_hz, Nerrs, SNR_estdB); else printf(" euw: %3d %d mf: %2d pbw: %s foff: %4.1f", states.uw_errors, states.sync_counter, states.modem_frame, states.phase_est_bandwidth(1), states.foff_est_hz); end end printf("\n"); end % reset stats if in streaming mode, don't reset if in burst mode if strcmp(states.data_mode, "streaming") && states.sync_start Nerrs_log = []; Terrs = Tbits = frame_count = 0; rx_np_log = []; sig_var_log = []; noise_var_log = []; end f++; end Nframes = f; ber = Terrs/(Tbits+1E-12); printf("\nBER..: %5.4f Tbits: %5d Terrs: %5d\n", ber, Tbits, Terrs); % If we have enough frames, calc BER discarding first few frames where freq % offset is adjusting Ndiscard = 20; if packet_count > Ndiscard Terrs -= sum(Nerrs_log(1:Ndiscard)); Tbits -= Ndiscard*Nbitsperframe; printf("BER2.: %5.4f Tbits: %5d Terrs: %5d\n", Terrs/Tbits, Tbits, Terrs); end SNR_estdB = mean(snr_log); printf("Packets: %3d Npre: %d Npost: %d SNR3k: %3.2f\n", packet_count, states.npre, states.npost, SNR_estdB); figure(1); clf; tmp = exp(j*pi/4)*rx_np_log(floor(end/4):floor(end-end/8)); plot(tmp,'+'); mx = 2*max(abs(tmp)); axis([-mx mx -mx mx]); title('Scatter'); figure(2); clf; plot(angle(channel_est_pilot_log(:,2:Nc)),'g+', 'markersize', 5); title('Phase est'); axis([1 length(channel_est_pilot_log) -pi pi]); figure(3); clf; plot(abs(channel_est_pilot_log(:,:)),'g+', 'markersize', 5); title('Amp est'); axis([1 length(channel_est_pilot_log) -3 3]); figure(4); clf; subplot(211) stem(delta_t_log) title('delta t'); subplot(212) plot(timing_est_log,';timing est;'); hold on; plot(sample_point_log,';sample point;'); hold off; figure(5); clf; plot(foff_est_hz_log) mx = max(abs(foff_est_hz_log))+1; axis([1 max(Nframes,2) -mx mx]); title('Fine Freq'); ylabel('Hz') figure(6); clf; stem(Nerrs_log); title('Errors/modem frame') if length(Nerrs_log) > 1 axis([1 length(Nerrs_log) 0 Nbitsperframe*rate/2]); endif figure(7); clf; plot(snr_log); title('SNR estimates'); figure(8); clf; plot_specgram(rx, 8000, 500, 2500); % optional pass criteria for ctests if pass_ber > 0 if packet_count && (ber < pass_ber) printf("Pass!\n"); else printf("Fail!\n"); end; end if pass_packet_count > 0 if packet_count >= pass_packet_count printf("Pass!\n"); else printf("Fail!\n"); end; end endfunction codec2-1.2.0/octave/ofdm_state.m000066400000000000000000000200001445607075400164410ustar00rootroot00000000000000% ofdm_state.m % % Library of state machine functions for the OFDM modem 1; %------------------------------------------------------------------- % sync_state_machine - calls mode-specific sync state state_machine %------------------------------------------------------------------- function states = sync_state_machine(states, rx_uw) if strcmp(states.state_machine, "voice1") states = sync_state_machine_voice1(states, rx_uw); elseif strcmp(states.state_machine, "data") if strcmp(states.data_mode, "streaming") states = sync_state_machine_data_streaming(states, rx_uw); else states = sync_state_machine_data_burst(states, rx_uw); end elseif strcmp(states.state_machine, "voice2") states = sync_state_machine_voice2(states, rx_uw); else assert(0); endif endfunction %-------------------------------------------------------------------- % Due to the low pilot symbol insertion rate and acquisition issues % the earlier OFDM modem waveforms (700D and 2020) need a complex % state machine to help them avoid false sync. %-------------------------------------------------------------------- function states = sync_state_machine_voice1(states, rx_uw) ofdm_load_const; next_state = states.sync_state; states.sync_start = states.sync_end = 0; if strcmp(states.sync_state,'search') if states.timing_valid states.frame_count = 0; states.sync_counter = 0; states.modem_frame = 0; states.sync_start = 1; next_state = 'trial'; end end if strcmp(states.sync_state,'synced') || strcmp(states.sync_state,'trial') states.frame_count++; % UW occurs at the start of a packet if states.modem_frame == 0 states.uw_errors = sum(xor(tx_uw,rx_uw)); if strcmp(states.sync_state,'trial') if states.uw_errors >= states.bad_uw_errors states.sync_counter++; states.frame_count = 0; end if states.sync_counter == 2 next_state = "search"; states.phase_est_bandwidth = "high"; end if states.frame_count == 4 next_state = "synced"; % change to low bandwidth, but more accurate phase estimation states.phase_est_bandwidth = "low"; end if states.uw_errors < 2 next_state = "synced"; % change to low bandwidth, but more accurate phase estimation states.phase_est_bandwidth = "low"; else next_state = "search"; end end if strcmp(states.sync_state,'synced') if states.uw_errors > 2 states.sync_counter++; else states.sync_counter = 0; end if states.sync_counter == 6 next_state = "search"; states.phase_est_bandwidth = "high"; end end end % if modem_frame == 0 .... % keep track of where we are up to in packet states.modem_frame++; if (states.modem_frame >= states.Np) states.modem_frame = 0; end end states.last_sync_state = states.sync_state; states.sync_state = next_state; endfunction %------------------------------------------------------- % data (streaming mode) state machine %------------------------------------------------------- function states = sync_state_machine_data_streaming(states, rx_uw) ofdm_load_const; next_state = states.sync_state; states.sync_start = states.sync_end = 0; if strcmp(states.sync_state,'search') if states.timing_valid states.sync_start = 1; states.sync_counter = 0; next_state = 'trial'; end end states.uw_errors = sum(xor(tx_uw,rx_uw)); if strcmp(states.sync_state,'trial') if states.uw_errors < states.bad_uw_errors; next_state = "synced"; states.packet_count = 0; states.modem_frame = Nuwframes; else states.sync_counter++; if states.sync_counter > Np next_state = "search"; end end end % Note packetsperburst==0 we don't ever lose sync, which is useful for % stream based testing or external control of state machine if strcmp(states.sync_state,'synced') states.modem_frame++; if (states.modem_frame >= states.Np) states.modem_frame = 0; states.packet_count++; if (states.packetsperburst) if (states.packet_count >= states.packetsperburst) next_state = "search"; end end end end states.last_sync_state = states.sync_state; states.sync_state = next_state; endfunction %------------------------------------------------------- % data (burst mode) state machine %------------------------------------------------------- function states = sync_state_machine_data_burst(states, rx_uw) ofdm_load_const; next_state = states.sync_state; states.sync_start = states.sync_end = 0; if strcmp(states.sync_state,'search') if states.timing_valid states.sync_start = 1; states.sync_counter = 0; next_state = 'trial'; end end states.uw_errors = sum(xor(tx_uw,rx_uw)); % pre or post-amble has told us this is the start of the packet. Confirm we % have a valid frame by checking the UW after the modem frames containing % the UW have been received if strcmp(states.sync_state,'trial') states.sync_counter++; if states.sync_counter == Nuwframes if states.uw_errors < states.bad_uw_errors; next_state = "synced"; states.packet_count = 0; % number of packets in this burst states.modem_frame = Nuwframes; % which modem frame we are up to in packet else next_state = "search"; % reset rxbuf to make sure we only ever do a postamble loop once through same samples states.rxbufst = states.Nrxbufhistory; states.rxbuf = zeros(1, states.Nrxbuf); end end end if strcmp(states.sync_state,'synced') states.modem_frame++; if (states.modem_frame >= states.Np) states.modem_frame = 0; % start of new packet states.packet_count++; if (states.packetsperburst) if (states.packet_count >= states.packetsperburst) next_state = "search"; % we've finished this burst % reset rxbuf to make sure we only ever do a postamble loop once through same samples states.rxbufst = states.Nrxbufhistory; states.rxbuf = zeros(1, states.Nrxbuf); end end end end states.last_sync_state = states.sync_state; states.sync_state = next_state; endfunction %------------------------------------------------------- % fast sync voice state state_machine %------------------------------------------------------- function states = sync_state_machine_voice2(states, rx_uw) ofdm_load_const; next_state = states.sync_state; states.sync_start = states.sync_end = 0; if strcmp(states.sync_state,'search') if states.timing_valid states.frame_count = 0; states.sync_counter = 0; states.modem_frame = 0; states.sync_start = 1; next_state = 'trial'; end end if strcmp(states.sync_state,'synced') || strcmp(states.sync_state,'trial') states.frame_count++; % UW occurs at the start of a packet if states.modem_frame == 0 states.uw_errors = sum(xor(tx_uw,rx_uw)); if strcmp(states.sync_state,'trial') if states.uw_errors <= states.bad_uw_errors next_state = "synced"; else next_state = "search"; end end if strcmp(states.sync_state,'synced') if states.uw_errors > states.bad_uw_errors states.sync_counter++; else states.sync_counter = 0; end if states.sync_counter == 6 next_state = "search"; end end end % keep track of where we are up to in packet states.modem_frame++; if (states.modem_frame >= states.Np) states.modem_frame = 0; end end states.last_sync_state = states.sync_state; states.sync_state = next_state; endfunction codec2-1.2.0/octave/ofdm_time_sync.m000066400000000000000000000011321445607075400173200ustar00rootroot00000000000000% ofdm_time_sync.m % David Rowe June 2019 % % Tests ofdm modem sync time, using real, off air files function ofdm_time_sync(filename, Ntrials=10) time_to_sync = []; passes = fails = 0; for toffset=0:Ntrials-1 atime = ofdm_ldpc_rx(filename, mode="700D", interleave_frames = 1, "", start_secs=toffset, len_secs=5); if atime != -1 passes++; time_to_sync = [time_to_sync atime]; else fails++; end end printf("pass: %d fails: %d mean: %3.2f var %3.2f\n", passes, fails, mean(time_to_sync), var(time_to_sync)); figure(1); clf; plot(time_to_sync); endfunction codec2-1.2.0/octave/ofdm_tx.m000066400000000000000000000053641445607075400157740ustar00rootroot00000000000000% ofdm_tx.m % David Rowe March 2018 % % File based, uncoded OFDM tx. Generates a file of ofdm samples, % including optional channel simulation. See also ofdm_ldpc_tx.m, and % ofdm_mod.c #{ Examples: i) 10 seconds, AWGN channel at SNR3k=3dB octave:4> ofdm_tx("awgn_snr_3dB_700d.raw", "700D", 10, 3) ii) 10 seconds, multipath poor channel at SNR=6dB octave:5> ofdm_tx("hf_snr_6dB_700d.raw", "700D", 10, 6, "mpp") iii) Data mode example, three bursts of one packet each, SNR=100dB: octave:6> ofdm_tx("test_datac0.raw","datac0",1,100,"awgn","bursts",3) #} function ofdm_tx(filename, mode="700D", N, SNR3kdB=100, channel='awgn', varargin) ofdm_lib; channel_lib; randn('seed',1); pkg load signal; tx_clip_en = 0; freq_offset_Hz = 0.0; burst_mode = 0; Nbursts = 1; i = 1; while i<=length(varargin) if strcmp(varargin{i},"txclip") tx_clip_en = 1; elseif strcmp(varargin{i},"bursts") burst_mode = 1; Nbursts = varargin{i+1}; i++; else printf("\nERROR unknown argument: [%d] %s \n", i ,varargin{i}); return; end i++; end % init modem config = ofdm_init_mode(mode); states = ofdm_init(config); print_config(states); ofdm_load_const; if burst_mode % burst mode: treat N as Npackets Npackets = N; else % streaming mode: treat N as Nseconds Npackets = round(N/states.Tpacket); end % Generate fixed test frame of tx bits and concatenate packets tx_bits = create_ldpc_test_frame(states, coded_frame=0); atx = ofdm_mod(states, tx_bits); tx = []; for f=1:Npackets tx = [tx atx]; end if length(states.data_mode) % note postamble provides a "column" of pilots at the end of the burst tx = [states.tx_preamble tx states.tx_postamble]; end % if burst mode concatenate multiple bursts with spaces if burst_mode atx = tx; tx = zeros(1,states.Fs); on_time = 0; off_time = states.Fs; for b=1:Nbursts tx = [tx atx zeros(1,states.Fs)]; on_time += length(atx); off_time += states.Fs; end % adjust channel simulator SNR setpoint given (burst on length)/(total length including silence) ratio mark_space_SNR_offset = 10*log10(on_time/(on_time+off_time)); SNRdB_setpoint = SNR3kdB + mark_space_SNR_offset; printf("SNR3kdB: %4.2f Burst offset: %4.2f SNRdB_setpoint: %4.2f\n", SNR3kdB, mark_space_SNR_offset, SNRdB_setpoint) else SNRdB_setpoint = SNR3kdB; % no adjustment to SNR in streaming mode end printf("Npackets: %d Nbursts: %d ", Npackets, Nbursts); states.verbose=1; tx = ofdm_hilbert_clipper(states, tx, tx_clip_en); rx_real = ofdm_channel(states, tx, SNRdB_setpoint, channel, freq_offset_Hz); frx = fopen(filename,"wb"); fwrite(frx, rx_real, "short"); fclose(frx); endfunction codec2-1.2.0/octave/plot_fsk_demod_stats.py000066400000000000000000000031011445607075400207220ustar00rootroot00000000000000#!/usr/bin/env python3 # # Plot fsk_demod statistic outputs. # # Copyright (C) 2018 Mark Jessop # Released under GNU GPL v3 or later # import json import os import sys import time import subprocess import numpy as np import pandas as pd import matplotlib.pyplot as plt _filename = sys.argv[1] if len(sys.argv)>2: _sps = int(sys.argv[2]) _x_label = "Seconds" else: _sps = 1 _x_label = "Sample Number" _ebno = [] _fest1 = [] _fest2 = [] _fest3 = [] _fest4 = [] _ppm = [] _time = [] _f = open(_filename,'r') for _line in _f: if _line[0] != '{': continue try: _data = json.loads(_line) except Exception as e: #print("Line parsing error: %s" % str(e)) continue _ebno.append(_data['EbNodB']) _fest1.append(_data['f1_est']) _fest2.append(_data['f2_est']) if 'f3_est' in _data: _fest3.append(_data['f3_est']) _fest4.append(_data['f4_est']) _ppm.append(_data['ppm']) if _time == []: _time = [0] else: _time.append(_time[-1]+1.0/_sps) _ebno_max = pd.Series(_ebno).rolling(10).max().dropna().tolist() plt.figure() plt.plot(_time[:len(_ebno_max)],_ebno_max) plt.xlabel(_x_label) plt.ylabel("Eb/N0 (dB)") plt.title("Eb/N0") plt.figure() plt.plot(_time,_fest1, label="f1 est") plt.plot(_time,_fest2, label="f2 est") if len(_fest3) > 0: plt.plot(_time,_fest3, label="f3 est") plt.plot(_time,_fest4, label="f4 est") plt.legend() plt.xlabel(_x_label) plt.ylabel("Frequency (Hz)") plt.title("Frequency Estimator Outputs") plt.figure() plt.plot(_time,_ppm) plt.xlabel(_x_label) plt.ylabel("PPM") plt.title("Demod PPM Estimate") plt.show()codec2-1.2.0/octave/plot_specgram.m000066400000000000000000000014771445607075400171740ustar00rootroot00000000000000% plot_specgram.m % David Rowe May 2017 % % As the name suggests..... function S = plot_specgram(x, Fs=8000, fmin, fmax) step = fix(20*Fs/1000); # one spectral slice every 5 ms window = fix(160*Fs/1000); # 40 ms data window fftn = 2^nextpow2(window); # next highest power of 2 [S, f, t] = specgram(x, fftn, Fs, window, window-step); S = abs(S(2:fftn/2,:)); # magnitude in range 0 2 axis([0 max(t) fmin fmax]) end xlabel('Time (s)'); ylabel('Freq (Hz)'); endfunction codec2-1.2.0/octave/qam16.m000066400000000000000000000015541445607075400152560ustar00rootroot00000000000000% qam16.m % David Rowe May 2020 % % Octave QAM16 functions 1; function symbol = qam16_mod(constellation, four_bits) bits_decimal = sum(four_bits .* [8 4 2 1]); symbol = constellation(bits_decimal+1); endfunction function four_bits = qam16_demod(constellation, symbol, amp_est=1) assert (amp_est != 0); symbol /= amp_est; dist = abs(symbol - constellation(1:16)); [tmp decimal] = min(dist); four_bits = zeros(1,4); for i=1:4 four_bits(1,5-i) = bitand(bitshift(decimal-1,1-i),1); end endfunction function test_qam16_mod_demod(constellation) for decimal=0:15 tx_bits = zeros(1,4); for i=1:4 tx_bits(1,5-i) = bitand(bitshift(decimal-1,1-i),1); end symbol = qam16_mod(constellation, tx_bits); rx_bits = qam16_demod(constellation,symbol); assert(tx_bits == rx_bits); end endfunction codec2-1.2.0/octave/qpsk.m000066400000000000000000000067561445607075400153200ustar00rootroot00000000000000% qpsk.m % % David Rowe Sep 2015 % % Octave functions to implement a QPSK modem 1; % Gray coded QPSK modulation function function symbol = qpsk_mod(two_bits) two_bits_decimal = sum(two_bits .* [2 1]); switch(two_bits_decimal) case (0) symbol = 1; case (1) symbol = j; case (2) symbol = -j; case (3) symbol = -1; endswitch endfunction % Gray coded QPSK demodulation function function two_bits = qpsk_demod(symbol) bit0 = real(symbol*exp(j*pi/4)) < 0; bit1 = imag(symbol*exp(j*pi/4)) < 0; two_bits = [bit1 bit0]; endfunction % Inserts pilot symbols a frame of symbols. The pilot symbols are % spread evenly throughout the input frame. function frameout = insert_pilots(framein, pilots, Npilotstep) lpilots = length(pilots); lframein = length(framein); frameout = zeros(1, lframein + lpilots); pin = 1; pout = 1; ppilots = 1; while (lpilots) %printf("pin %d pout %d ppilots %d lpilots %d\n", pin, pout, ppilots, lpilots); frameout(pout:pout+Npilotstep-1) = framein(pin:pin+Npilotstep-1); pin += Npilotstep; pout += Npilotstep; frameout(pout:pout) = pilots(ppilots); ppilots++; pout++; lpilots--; end endfunction % Removes the pilots symbols from a frame of symbols. function frameout = remove_pilots(framein, pilots, Npilotstep) frameout = []; lpilots = length(pilots); pin = 1; pout = 1; while (lpilots) %printf("pin %d pout %d lpilots %d ", pin, pout, lpilots); %printf("pin+spacing-1 %d lvd %d lframein: %d\n", pin+spacing-1, lvd, length(framein)); frameout(pout:pout+Npilotstep-1) = framein(pin:pin+Npilotstep-1); pin += Npilotstep+1; pout += Npilotstep; lpilots--; end endfunction % Estimate and correct phase offset using a window of Np pilots around % current symbol function symbpilot_rx = correct_phase_offset(aqpsk, symbpilot_rx) rx_pilot_buf = aqpsk.rx_pilot_buf; Npilotstep = aqpsk.Npilotstep; Nsymb = aqpsk.Nsymb; for ns=1:Npilotstep+1:Nsymb % update buffer of recent pilots, note we need past ones rx_pilot_buf(1) = rx_pilot_buf(2); next_pilot_index = ceil(ns/(Npilotstep+1))*(Npilotstep+1); rx_pilot_buf(2) = symbpilot_rx(next_pilot_index); % average pilot symbols to get estimate of phase phase_est = angle(sum(rx_pilot_buf)); %printf("next_pilot_index: %d phase_est: %f\n", next_pilot_index, phase_est); % now correct the phase of each symbol for s=ns:ns+Npilotstep symbpilot_rx(s) *= exp(-j*phase_est); end end aqpsk.rx_pilot_buf = rx_pilot_buf; endfunction % builds up a sparse QPSK modulated version version of the UW for use % in UW sync at the rx function mod_uw = build_mod_uw(uw, spacing) luw = length(uw); mod_uw = []; pout = 1; puw = 1; while (luw) %printf("pin %d pout %d puw %d luw %d\n", pin, pout, puw, luw); pout += spacing/2; mod_uw(pout) = qpsk_mod(uw(puw:puw+1)); puw += 2; pout += 1; luw -= 2; end endfunction % Uses the UW to determine when we have a full codeword ready for decoding function [found_uw corr] = look_for_uw(mem_rx_symbols, mod_uw) sparse_mem_rx_symbols = mem_rx_symbols(find(mod_uw)); % correlate with ref UW num = (mem_rx_symbols * mod_uw') .^ 2; den = (sparse_mem_rx_symbols * sparse_mem_rx_symbols') * (mod_uw * mod_uw'); corr = abs(num/(den+1E-6)); found_uw = corr > 0.8; endfunction codec2-1.2.0/octave/sample_clock_offset.m000066400000000000000000000007201445607075400203250ustar00rootroot00000000000000% sample_clock_offset.m % % David Rowe June 2017 % % To simulate a sample clock offset we resample by a small amount % using linear interpolation function rx = sample_clock_offset(tx, sample_clock_offset_ppm) tin=1; tout=1; rx = zeros(1,length(tx)); while tin < length(tx) t1 = floor(tin); t2 = ceil(tin); f = tin - t1; rx(tout) = (1-f)*tx(t1) + f*tx(t2); tout += 1; tin += 1+sample_clock_offset_ppm/1E6; end end codec2-1.2.0/octave/spec.m000066400000000000000000000050701445607075400152600ustar00rootroot00000000000000% spec.m % Jean Marc Valin % % Spectrogram function for Octave % % Copyright (c) John-Marc Valin 2012 % % Redistribution and use in source and binary forms, with or without % modification, are permitted provided that the following conditions % are met: % % - Redistributions of source code must retain the above copyright % notice, this list of conditions and the following disclaimer. % % - 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. % % - Neither the name of Jean Marc Valin nor the names of its % contributors may be used to endorse or promote products derived from % this software without specific prior written permission. % % 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 FOUNDATION 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. function X = spec(x, Fs, framesize, start, stop) gr=[zeros(1024,1),[0:1023]'/1023,.68*[0:1023]'/1023]; %gr=[.4*[0:1023]'/1023,[0:1023]'/1023,.68*[0:1023]'/1023]; %t=[0:1023]'/1023; %t=(1+.25*t-cos(pi*t))/2.25; %gr = [zeros(1024,1),t,.68*t]; %colormap(gr); if nargin < 2 || isempty(Fs) Fs = 44100; end if nargin < 3 || isempty(framesize) framesize = 2048; endif offset = framesize/8; X = 20*log10(abs(specgram(x, framesize, 48000, blackmanharris(framesize)', framesize-offset))); XM=max(max(X)); X = max(XM-30,X); %size(X) F = -[framesize/2-1:-1:0]/framesize*Fs; %F = [0:127]/128*24000; T=[1:size(X,2)]/Fs*offset; %imagesc(X(end:-1:1,:)); if nargin < 4 || isempty(start) istart=1; else istart = round(start*Fs/offset); end if nargin < 5 || isempty(stop) istop = size(X,2); else istop = round(stop*Fs/offset); endif istart = max(1,istart); istop = min(istop, size(X,2)); imagesc(T(1+istart:istop), F, X(end:-1:1,1+istart:istop)); X = X(:,1+istart:istop); codec2-1.2.0/octave/tcohpsk.m000066400000000000000000000577041445607075400160140ustar00rootroot00000000000000% tcohpsk.m % David Rowe Oct 2014 % % Octave coherent PSK modem script that has two modes: % % i) tests the C port of the coherent PSK modem. This script loads % the output of unittest/tcohpsk.c and compares it to the output of % the reference versions of the same modem written in Octave. % % (ii) Runs the Octave version of the cohpsk modem to tune and develop % it, including extensive channel simulations such as AWGN noise, % fading/HF, frequency offset, frequency drift, and tx/rx sample % rate differences. % TODO: % % [X] Test % [X] AWGN channel % [X] freq offset % [X] fading channel % [X] freq drift % [X] timing drift % [X] tune perf/impl loss to get closer to ideal % [X] linear interp of phase for better fading perf % [X] freq offset/drift feedback loop % [X] PAPR measurement and reduction % [X] false sync % [X] doesn't sync up on noise (used EsNo = -12) % [X] similar but invalid signal like huge f off % [X] ability to "unsync" when signal disappears % [ ] some calibrated tests against FreeDV 1600 % + compare sound quality at various Es/Nos % [ ] sync % + set some req & implement % [ ] way to handle eom w/o nasties % + like mute output when signal has gone or v low snr % + instantaneous snr % [X] ssb tx filter with 3dB passband ripple % + diverisity helped for AWGN BER 0.024 down to 0.016 % + Only a small change in fading perf with filter on/off % + however other filters may have other effects, should test this, % e.g. scatter plots, some sort of BER metric? % [X] EsNo estimation % [ ] filter reqd with compression? % + make sure not too much noise passed into noise floor % [X] different diversity combination % + taking largest symbol didn't help % [X] histogram of bit errors % + lot of data % + ssb filter % + compression % + make sure it's flat with many errors pkg load signal; more off; global passes = 0; global fails = 0; cohpsk_dev; fdmdv_common; autotest; rand('state',1); randn('state',1); % select which test ---------------------------------------------------------- test = 'compare to c'; %test = 'awgn'; %test = 'fading'; % some parameters that can be over ridden, e.g. to disable parts of modem initial_sync = 0; % setting this to 1 put us straight into sync w/o freq offset est ftrack_en = 1; % set to 1 to enable freq tracking ssb_tx_filt = 0; % set to 1 to to simulate SSB tx filter with passband ripple Fs = 7500; % predefined tests .... if strcmp(test, 'compare to c') frames = 30; foff = 58.7; dfoff = -0.5/Fs; EsNodB = 8; fading_en = 0; hf_delay_ms = 2; compare_with_c = 1; sample_rate_ppm = -1500; ssb_tx_filt = 0; end % should be BER around 0.015 to 0.02 if strcmp(test, 'awgn') frames = 100; foff = 58.7; dfoff = -0.5/Fs; EsNodB = 8; fading_en = 0; hf_delay_ms = 2; compare_with_c = 0; sample_rate_ppm = 0; end % Similar to AWGN - should be BER around 0.015 to 0.02 if strcmp(test, 'fading'); frames = 100; foff = -25; dfoff = 0.5/Fs; EsNodB = 12; fading_en = 1; hf_delay_ms = 2; compare_with_c = 0; sample_rate_ppm = 0; end EsNo = 10^(EsNodB/10); % modem constants ---------------------------------------------------------- Rs = 75; % symbol rate in Hz Nc = 7; % number of carriers Nd = 2; % diveristy factor framesize = 56; % number of payload data bits in the frame Nsw = 4; % frames we demod for initial sync window afdmdv.Nsym = 6; % size of tx/tx root nyquist filter in symbols afdmdv.Nt = 5; % number of symbols we estimate timing over clip = 6.5; % Clipping of tx signal to reduce PAPR. Adjust by % experiment as Nc and Nd change. Check out no noise % scatter diagram and AWGN/fading BER perf % at operating points % FDMDV init --------------------------------------------------------------- afdmdv.Fs = Fs; afdmdv.Nc = Nd*Nc-1; afdmdv.Rs = Rs; if Fs/afdmdv.Rs != floor(Fs/afdmdv.Rs) printf("\n Oops, Fs/Rs must be an integer!\n\n"); return end M = afdmdv.M = afdmdv.Fs/afdmdv.Rs; afdmdv.Nfilter = afdmdv.Nsym*M; afdmdv.tx_filter_memory = zeros(afdmdv.Nc+1, afdmdv.Nfilter); excess_bw = 0.5; afdmdv.gt_alpha5_root = gen_rn_coeffs(excess_bw, 1/Fs, Rs, afdmdv.Nsym, afdmdv.M); Fcentre = afdmdv.Fcentre = 1500; afdmdv.Fsep = afdmdv.Rs*(1+excess_bw); afdmdv.phase_tx = ones(afdmdv.Nc+1,1); % non linear carrier spacing, combined with clip, helps PAPR a lot! freq_hz = afdmdv.Fsep*( -Nc*Nd/2 - 0.5 + (1:Nc*Nd).^0.98 ); afdmdv.freq_pol = 2*pi*freq_hz/Fs; afdmdv.freq = exp(j*afdmdv.freq_pol); afdmdv.Fcentre = 1500; afdmdv.fbb_rect = exp(j*2*pi*Fcentre/Fs); afdmdv.fbb_phase_tx = 1; afdmdv.fbb_phase_rx = 1; afdmdv.Nrxdec = 31; afdmdv.rxdec_coeff = fir1(afdmdv.Nrxdec-1, 0.25)'; afdmdv.rxdec_lpf_mem = zeros(1,afdmdv.Nrxdec-1+afdmdv.M); P = afdmdv.P = 4; afdmdv.phase_rx = ones(afdmdv.Nc+1,1); afdmdv.Nfilter = afdmdv.Nsym*afdmdv.M; afdmdv.rx_fdm_mem = zeros(1,afdmdv.Nfilter + afdmdv.M); Q = afdmdv.Q = afdmdv.M/4; if Q != floor(Q) printf("\n Yeah .... if (Fs/Rs)/4 = M/4 isn't an integer we will just go and break things.\n\n"); end afdmdv.rx_filter_mem_timing = zeros(afdmdv.Nc+1, afdmdv.Nt*afdmdv.P); afdmdv.Nfiltertiming = afdmdv.M + afdmdv.Nfilter + afdmdv.M; afdmdv.rx_filter_memory = zeros(afdmdv.Nc+1, afdmdv.Nfilter); afdmdv.filt = 0; afdmdv.prev_rx_symb = ones(1,afdmdv.Nc+1); % COHPSK Init -------------------------------------------------------- acohpsk = standard_init(); acohpsk.framesize = framesize; acohpsk.ldpc_code = 0; acohpsk.ldpc_code_rate = 1; acohpsk.Nc = Nc; acohpsk.Rs = Rs; acohpsk.Ns = 4; acohpsk.coh_en = 1; acohpsk.Nd = Nd; acohpsk.modulation = 'qpsk'; acohpsk.do_write_pilot_file = 0; % enable this to dump pilot symbols to C .h file, e.g. if frame params change acohpsk = symbol_rate_init(acohpsk); acohpsk.Ndft = 1024; acohpsk.f_est = afdmdv.Fcentre; ch_fdm_frame_buf = zeros(1, Nsw*acohpsk.Nsymbrowpilot*afdmdv.M); % ----------------------------------------------------------- tx_bits_log = []; tx_symb_log = []; rx_amp_log = []; rx_phi_log = []; ch_symb_log = []; rx_symb_log = []; rx_bits_log = []; tx_bits_prev_log = []; uvnoise_log = []; nerr_log = []; tx_baseband_log = []; tx_fdm_frame_log = []; ch_fdm_frame_log = []; rx_fdm_frame_bb_log = []; rx_filt_log = []; rx_fdm_filter_log = []; rx_baseband_log = []; rx_fdm_frame_log = []; ct_symb_ff_log = []; rx_timing_log = []; ratio_log = []; foff_log = []; f_est_log = []; sig_rms_log = []; noise_rms_log = []; noise_rms_filt_log = []; % Channel modeling and BER measurement ---------------------------------------- rand('state',1); tx_bits_coh = round(rand(1,framesize*10)); ptx_bits_coh = 1; Nerrs = Tbits = 0; prev_tx_bits = prev_tx_bits2 = []; error_positions_hist = zeros(1,framesize); phase_ch = 1; sync = initial_sync; acohpsk.f_est = Fcentre; acohpsk.f_fine_est = 0; acohpsk.ct = 4; acohpsk.ftrack_en = ftrack_en; if fading_en [spread spread_2ms hf_gain] = init_hf_model(Fs, frames*acohpsk.Nsymbrowpilot*afdmdv.M); hf_n = 1; nhfdelay = floor(hf_delay_ms*Fs/1000); ch_fdm_delay = zeros(1, acohpsk.Nsymbrowpilot*M + nhfdelay); end % simulated SSB tx filter [b, a] = cheby1(4, 3, [600, 2600]/(Fs/2)); [y filt_states] = filter(b,a,0); h = freqz(b,a,(600:2600)/(Fs/(2*pi))); filt_gain = (2600-600)/sum(abs(h) .^ 2); % ensures power after filter == before filter noise_rms_filt = 0; % main loop -------------------------------------------------------------------- % run mod and channel as aseparate loop so we can resample to simulate sample rate differences for f=1:frames tx_bits = tx_bits_coh(ptx_bits_coh:ptx_bits_coh+framesize-1); ptx_bits_coh += framesize; if ptx_bits_coh > length(tx_bits_coh) ptx_bits_coh = 1; end tx_bits_log = [tx_bits_log tx_bits]; [tx_symb tx_bits] = bits_to_qpsk_symbols(acohpsk, tx_bits, []); tx_symb_log = [tx_symb_log; tx_symb]; tx_fdm_frame = []; for r=1:acohpsk.Nsymbrowpilot tx_onesymb = tx_symb(r,:); [tx_baseband afdmdv] = tx_filter(afdmdv, tx_onesymb); tx_baseband_log = [tx_baseband_log tx_baseband]; [tx_fdm afdmdv] = fdm_upconvert(afdmdv, tx_baseband); tx_fdm_frame = [tx_fdm_frame tx_fdm]; end % clipping, which along with non-linear carrier spacing, improves PAPR % The value of clip is a function of Nc and is adjusted experimentally % such that the BER hit over no clipping at Es/No=8dB is small. ind = find(abs(tx_fdm_frame) > clip); tx_fdm_frame(ind) = clip*exp(j*angle(tx_fdm_frame(ind))); tx_fdm_frame_log = [tx_fdm_frame_log tx_fdm_frame]; % % Channel -------------------------------------------------------------------- % % simulate tx SSB filter with ripple if ssb_tx_filt [tx_fdm_frame filt_states] = filter(b,a,sqrt(filt_gain)*tx_fdm_frame, filt_states); end % frequency offset and frequency drift ch_fdm_frame = zeros(1,acohpsk.Nsymbrowpilot*M); for i=1:acohpsk.Nsymbrowpilot*M foff_rect = exp(j*2*pi*foff/Fs); foff += dfoff; phase_ch *= foff_rect; ch_fdm_frame(i) = tx_fdm_frame(i) * phase_ch; end foff_log = [foff_log foff]; phase_ch /= abs(phase_ch); % optional fading if fading_en ch_fdm_delay(1:nhfdelay) = ch_fdm_delay(acohpsk.Nsymbrowpilot*M+1:nhfdelay+acohpsk.Nsymbrowpilot*M); ch_fdm_delay(nhfdelay+1:nhfdelay+acohpsk.Nsymbrowpilot*M) = ch_fdm_frame; for i=1:acohpsk.Nsymbrowpilot*M ahf_model = hf_gain*(spread(hf_n)*ch_fdm_frame(i) + spread_2ms(hf_n)*ch_fdm_delay(i)); ch_fdm_frame(i) = ahf_model; hf_n++; end end % each carrier has power = 2, total power 2Nc, total symbol rate NcRs, noise BW B=Fs % Es/No = (C/Rs)/(N/B), N = var = 2NcFs/NcRs(Es/No) = 2Fs/Rs(Es/No) variance = 2*Fs/(acohpsk.Rs*EsNo); uvnoise = sqrt(0.5)*(randn(1,acohpsk.Nsymbrowpilot*M) + j*randn(1,acohpsk.Nsymbrowpilot*M)); uvnoise_log = [uvnoise_log uvnoise]; noise = sqrt(variance)*uvnoise; ch_fdm_frame += noise; ch_fdm_frame_log = [ch_fdm_frame_log ch_fdm_frame]; end % simulate difference in sample clocks tin=1; tout=1; ch_fdm_frame_log_out = zeros(1,length(ch_fdm_frame_log)); while tin < length(ch_fdm_frame_log) t1 = floor(tin); t2 = ceil(tin); f = tin - t1; ch_fdm_frame_log_out(tout) = (1-f)*ch_fdm_frame_log(t1) + f*ch_fdm_frame_log(t2); tout += 1; tin += 1+sample_rate_ppm/1E6; end ch_fdm_frame_log = ch_fdm_frame_log_out(1:tout-1); % Now run demod ---------------------------------------------------------------- ch_fdm_frame_log_index = 1; nin = M; f = 0; nin_frame = acohpsk.Nsymbrowpilot*M; %while (ch_fdm_frame_log_index + acohpsk.Nsymbrowpilot*M+M/P) < length(ch_fdm_frame_log) for f=1:frames; acohpsk.frame = f; ch_fdm_frame = ch_fdm_frame_log(ch_fdm_frame_log_index:ch_fdm_frame_log_index + nin_frame - 1); ch_fdm_frame_log_index += nin_frame; % % Demod ---------------------------------------------------------------------- % % store two frames of received samples so we can rewind if we get a good candidate ch_fdm_frame_buf(1:Nsw*acohpsk.Nsymbrowpilot*M-nin_frame) = ch_fdm_frame_buf(nin_frame+1:Nsw*acohpsk.Nsymbrowpilot*M); ch_fdm_frame_buf(Nsw*acohpsk.Nsymbrowpilot*M-nin_frame+1:Nsw*acohpsk.Nsymbrowpilot*M) = ch_fdm_frame; next_sync = sync; % if out of sync do Initial Freq offset estimation over NSW frames to flush out memories if (sync == 0) % we can test +/- 20Hz, so we break this up into 3 tests to cover +/- 60Hz max_ratio = 0; for acohpsk.f_est = Fcentre-40:40:Fcentre+40 printf(" [%d] acohpsk.f_est: %f +/- 20\n", f, acohpsk.f_est); % we are out of sync so reset f_est and process two frames to clean out memories [ch_symb rx_timing rx_filt rx_baseband afdmdv acohpsk.f_est] = rate_Fs_rx_processing(afdmdv, ch_fdm_frame_buf, acohpsk.f_est, Nsw*acohpsk.Nsymbrowpilot, nin, 0); rx_baseband_log = [rx_baseband_log rx_baseband]; rx_filt_log = [rx_filt_log rx_filt]; ch_symb_log = [ch_symb_log; ch_symb]; rx_timing_log = [rx_timing_log rx_timing]; for i=1:Nsw-1 acohpsk.ct_symb_buf = update_ct_symb_buf(acohpsk.ct_symb_buf, ch_symb((i-1)*acohpsk.Nsymbrowpilot+1:i*acohpsk.Nsymbrowpilot,:), acohpsk.Nct_sym_buf, acohpsk.Nsymbrowpilot); end [anext_sync acohpsk] = frame_sync_fine_freq_est(acohpsk, ch_symb((Nsw-1)*acohpsk.Nsymbrowpilot+1:Nsw*acohpsk.Nsymbrowpilot,:), sync, next_sync); if anext_sync == 1 %printf(" [%d] acohpsk.ratio: %f\n", f, acohpsk.ratio); if acohpsk.ratio > max_ratio max_ratio = acohpsk.ratio; f_est = acohpsk.f_est - acohpsk.f_fine_est; next_sync = anext_sync; end end end if next_sync == 1 % we've found a sync candidate! % re-process last two frames with adjusted f_est then check again acohpsk.f_est = f_est; printf(" [%d] trying sync and f_est: %f\n", f, acohpsk.f_est); [ch_symb rx_timing rx_filt rx_baseband afdmdv f_est] = rate_Fs_rx_processing(afdmdv, ch_fdm_frame_buf, acohpsk.f_est, Nsw*acohpsk.Nsymbrowpilot, nin, 0); rx_baseband_log = [rx_baseband_log rx_baseband]; rx_filt_log = [rx_filt_log rx_filt]; ch_symb_log = [ch_symb_log; ch_symb]; rx_timing_log = [rx_timing_log rx_timing]; for i=1:Nsw-1 acohpsk.ct_symb_buf = update_ct_symb_buf(acohpsk.ct_symb_buf, ch_symb((i-1)*acohpsk.Nsymbrowpilot+1:i*acohpsk.Nsymbrowpilot,:), acohpsk.Nct_sym_buf, acohpsk.Nsymbrowpilot); end [next_sync acohpsk] = frame_sync_fine_freq_est(acohpsk, ch_symb((Nsw-1)*acohpsk.Nsymbrowpilot+1:Nsw*acohpsk.Nsymbrowpilot,:), sync, next_sync); if abs(acohpsk.f_fine_est) > 2 printf(" [%d] Hmm %f is a bit big so back to coarse est ...\n", f, acohpsk.f_fine_est); next_sync = 0; end if acohpsk.ratio < 0.9 next_sync = 0; end if next_sync == 1 % OK we are in sync! % demodulate first frame (demod completed below) printf(" [%d] in sync! f_est: %f ratio: %f \n", f, f_est, acohpsk.ratio); acohpsk.ct_symb_ff_buf(1:acohpsk.Nsymbrowpilot+2,:) = acohpsk.ct_symb_buf(acohpsk.ct+1:acohpsk.ct+acohpsk.Nsymbrowpilot+2,:); end end end % If in sync just do sample rate processing on latest frame if sync == 1 [ch_symb rx_timing rx_filt rx_baseband afdmdv acohpsk.f_est] = rate_Fs_rx_processing(afdmdv, ch_fdm_frame, acohpsk.f_est, acohpsk.Nsymbrowpilot, nin, acohpsk.ftrack_en); [next_sync acohpsk] = frame_sync_fine_freq_est(acohpsk, ch_symb, sync, next_sync); acohpsk.ct_symb_ff_buf(1:2,:) = acohpsk.ct_symb_ff_buf(acohpsk.Nsymbrowpilot+1:acohpsk.Nsymbrowpilot+2,:); acohpsk.ct_symb_ff_buf(3:acohpsk.Nsymbrowpilot+2,:) = acohpsk.ct_symb_buf(acohpsk.ct+3:acohpsk.ct+acohpsk.Nsymbrowpilot+2,:); rx_baseband_log = [rx_baseband_log rx_baseband]; rx_filt_log = [rx_filt_log rx_filt]; ch_symb_log = [ch_symb_log; ch_symb]; rx_timing_log = [rx_timing_log rx_timing]; f_est_log = [f_est_log acohpsk.f_est]; end % if we are in sync complete demodulation with symbol rate processing if (next_sync == 1) || (sync == 1) [rx_symb rx_bits rx_symb_linear amp_ phi_ sig_rms noise_rms] = qpsk_symbols_to_bits(acohpsk, acohpsk.ct_symb_ff_buf); rx_symb_log = [rx_symb_log; rx_symb]; rx_amp_log = [rx_amp_log; amp_]; rx_phi_log = [rx_phi_log; phi_]; rx_bits_log = [rx_bits_log rx_bits]; tx_bits_prev_log = [tx_bits_prev_log prev_tx_bits2]; ratio_log = [ratio_log acohpsk.ratio]; ct_symb_ff_log = [ct_symb_ff_log; acohpsk.ct_symb_ff_buf(1:acohpsk.Nsymbrowpilot,:)]; sig_rms_log = [sig_rms_log sig_rms]; noise_rms_log = [noise_rms_log noise_rms]; noise_rms_filt = 0.9*noise_rms_filt + 0.1*noise_rms; noise_rms_filt_log = [noise_rms_filt_log noise_rms_filt]; % BER stats if f > 2 error_positions = xor(tx_bits_log((f-3)*framesize+1:(f-2)*framesize), rx_bits); Nerrs += sum(error_positions); nerr_log = [nerr_log sum(error_positions)]; Tbits += length(error_positions); error_positions_hist += error_positions; end printf("\r [%d]", f); end % reset BER stats if we lose sync if sync == 1 %Nerrs = 0; %Tbits = 0; %nerr_log = []; end [sync acohpsk] = sync_state_machine(acohpsk, sync, next_sync); % work out how many samples we need for next time nin = M; if sync == 1 if rx_timing(length(rx_timing)) > M/P nin = M + M/P; end if rx_timing(length(rx_timing)) < -M/P nin = M - M/P; end end nin_frame = (acohpsk.Nsymbrowpilot-1)*M + nin; prev_tx_bits2 = prev_tx_bits; prev_tx_bits = tx_bits; end ber = Nerrs/Tbits; printf("\nOctave EsNodB: %4.1f ber..: %4.3f Nerrs..: %d Tbits..: %d\n", EsNodB, ber, Nerrs, Tbits); if compare_with_c % Output vectors from C port --------------------------------------------------- load tcohpsk_out.txt % Determine bit error rate sz = length(rx_bits_log_c); Nerrs_c = sum(xor(tx_bits_log(1:sz-framesize), rx_bits_log_c(framesize+1:sz))); Tbits_c = length(tx_bits_prev_log); ber_c = Nerrs_c/Tbits_c; printf("C EsNodB.....: %4.1f ber_c: %4.3f Nerrs_c: %d Tbits_c: %d\n", EsNodB, ber_c, Nerrs_c, Tbits_c); stem_sig_and_error(1, 111, tx_bits_log_c, tx_bits_log - tx_bits_log_c, 'tx bits', [1 length(tx_bits_log) -1.5 1.5]) stem_sig_and_error(2, 211, real(tx_symb_log_c), real(tx_symb_log - tx_symb_log_c), 'tx symb re', [1 length(tx_symb_log_c) -1.5 1.5]) stem_sig_and_error(2, 212, imag(tx_symb_log_c), imag(tx_symb_log - tx_symb_log_c), 'tx symb im', [1 length(tx_symb_log_c) -1.5 1.5]) stem_sig_and_error(3, 211, real(tx_fdm_frame_log_c), real(tx_fdm_frame_log - tx_fdm_frame_log_c), 'tx fdm frame re', [1 length(tx_fdm_frame_log) -10 10]) stem_sig_and_error(3, 212, imag(tx_fdm_frame_log_c), imag(tx_fdm_frame_log - tx_fdm_frame_log_c), 'tx fdm frame im', [1 length(tx_fdm_frame_log) -10 10]) stem_sig_and_error(4, 211, real(ch_fdm_frame_log_c), real(ch_fdm_frame_log - ch_fdm_frame_log_c), 'ch fdm frame re', [1 length(ch_fdm_frame_log) -10 10]) stem_sig_and_error(4, 212, imag(ch_fdm_frame_log_c), imag(ch_fdm_frame_log - ch_fdm_frame_log_c), 'ch fdm frame im', [1 length(ch_fdm_frame_log) -10 10]) c = 1; stem_sig_and_error(5, 211, real(rx_baseband_log_c(c,:)), real(rx_baseband_log(c,:) - rx_baseband_log_c(c,:)), 'rx baseband re', [1 length(rx_baseband_log) -10 10]) stem_sig_and_error(5, 212, imag(rx_baseband_log_c(c,:)), imag(rx_baseband_log(c,:) - rx_baseband_log_c(c,:)), 'rx baseband im', [1 length(rx_baseband_log) -10 10]) stem_sig_and_error(6, 211, real(rx_filt_log_c(c,:)), real(rx_filt_log(c,:) - rx_filt_log_c(c,:)), 'rx filt re', [1 length(rx_filt_log) -1 1]) stem_sig_and_error(6, 212, imag(rx_filt_log_c(c,:)), imag(rx_filt_log(c,:) - rx_filt_log_c(c,:)), 'rx filt im', [1 length(rx_filt_log) -1 1]) [n m] = size(ch_symb_log); stem_sig_and_error(7, 211, real(ch_symb_log_c), real(ch_symb_log - ch_symb_log_c), 'ch symb re', [1 n -1.5 1.5]) stem_sig_and_error(7, 212, imag(ch_symb_log_c), imag(ch_symb_log - ch_symb_log_c), 'ch symb im', [1 n -1.5 1.5]) [n m] = size(rx_symb_log); stem_sig_and_error(8, 211, rx_amp_log_c, rx_amp_log - rx_amp_log_c, 'Amp Est', [1 n -1.5 1.5]) phi_log_diff = rx_phi_log - rx_phi_log_c; phi_log_diff(find(phi_log_diff > pi)) -= 2*pi; phi_log_diff(find(phi_log_diff < -pi)) += 2*pi; stem_sig_and_error(8, 212, rx_phi_log_c, phi_log_diff, 'Phase Est', [1 n -4 4]) stem_sig_and_error(9, 211, real(rx_symb_log_c), real(rx_symb_log - rx_symb_log_c), 'rx symb re', [1 n -1.5 1.5]) stem_sig_and_error(9, 212, imag(rx_symb_log_c), imag(rx_symb_log - rx_symb_log_c), 'rx symb im', [1 n -1.5 1.5]) stem_sig_and_error(10, 111, rx_bits_log_c, rx_bits_log - rx_bits_log_c, 'rx bits', [1 length(rx_bits_log) -1.5 1.5]) stem_sig_and_error(11, 111, f_est_log_c - Fcentre - foff, f_est_log - f_est_log_c, 'f est', [1 length(f_est_log) -5 5]) stem_sig_and_error(12, 111, rx_timing_log_c, rx_timing_log_c - rx_timing_log, 'rx timing', [1 length(rx_timing_log) -M M]) check(tx_bits_log, tx_bits_log_c, 'tx_bits'); check(tx_symb_log, tx_symb_log_c, 'tx_symb'); check(tx_fdm_frame_log, tx_fdm_frame_log_c, 'tx_fdm_frame',0.01); check(ch_fdm_frame_log, ch_fdm_frame_log_c, 'ch_fdm_frame',0.01); check(ch_symb_log, ch_symb_log_c, 'ch_symb',0.05); check(rx_amp_log, rx_amp_log_c, 'rx_amp_log',0.01); check(phi_log_diff, zeros(length(phi_log_diff), Nc*Nd), 'rx_phi_log',0.1); check(rx_symb_log, rx_symb_log_c, 'rx_symb',0.01); check(rx_timing_log, rx_timing_log_c, 'rx_timing',0.005); check(rx_bits_log, rx_bits_log_c, 'rx_bits'); check(f_est_log, f_est_log_c, 'f_est'); check(sig_rms_log, sig_rms_log_c, 'sig_rms'); check(noise_rms_log, noise_rms_log_c, 'noise_rms'); printf("\npasses: %d fails: %d\n", passes, fails); else papr = max(tx_fdm_frame_log.*conj(tx_fdm_frame_log)) / mean(tx_fdm_frame_log.*conj(tx_fdm_frame_log)); papr_dB = 10*log10(papr); printf("av tx pwr: %4.2f PAPR: %4.2f av rx pwr: %4.2f\n", var(tx_fdm_frame_log), papr_dB, var(ch_fdm_frame_log)); % some other useful plots f = figure(1) clf subplot(211) plot(real(tx_fdm_frame_log)) title('tx fdm real'); subplot(212) plot(imag(tx_fdm_frame_log)) title('tx fdm imag'); f = figure(2) clf spec = 20*log10(abs(fft(tx_fdm_frame_log))); l = length(spec); plot((Fs/l)*(1:l), spec) axis([1 Fs/2 0 max(spec)]); title('tx spectrum'); ylabel('Amplitude (dB)') xlabel('Frequency (Hz)') grid; f = figure(3) clf; % plot combined signals to show diversity gains combined = rx_symb_log(:,1:Nc); for d=2:Nd combined += rx_symb_log(:, (d-1)*Nc+1:d*Nc); end plot(combined*exp(j*pi/4)/sqrt(Nd),'+') title('Scatter'); ymax = abs(max(max(combined))); axis([-ymax ymax -ymax ymax]) f = figure(4) clf; subplot(211) plot(rx_phi_log) subplot(212) plot(rx_amp_log) f = figure(5) clf; subplot(211) plot(rx_timing_log) title('rx timing'); subplot(212) stem(ratio_log) title('Sync ratio'); f = figure(6) clf; subplot(211) stem(nerr_log) title('Bit Errors'); subplot(212) plot(noise_rms_filt_log,'r', sig_rms_log,'g'); title('Est rms signal and noise') f = figure(7); clf; subplot(211) plot(foff_log,';freq offset;'); hold on; plot(f_est_log - Fcentre,'g;freq offset est;'); hold off; title('freq offset'); legend("boxoff"); subplot(212) plot(foff_log(1:length(f_est_log)) - f_est_log + Fcentre) title('freq offset estimation error'); f = figure(8) clf h = freqz(b,a,Fs/2); plot(20*log10(abs(h))) axis([1 Fs/2 -20 0]) grid title('SSB tx filter') f = figure(9) clf plot(error_positions_hist) title('histogram of bit errors') end % function to write C header file of noise samples so C version gives % exactly the same results function write_noise_file(uvnoise_log) m = length(uvnoise_log); filename = sprintf("../unittest/noise_samples.h"); f=fopen(filename,"wt"); fprintf(f,"/* unit variance complex noise samples */\n\n"); fprintf(f,"/* Generated by write_noise_file() Octave function */\n\n"); fprintf(f,"COMP noise[]={\n"); for r=1:m if r < m fprintf(f, " {%f,%f},\n", real(uvnoise_log(r)), imag(uvnoise_log(r))); else fprintf(f, " {%f,%f}\n};", real(uvnoise_log(r)), imag(uvnoise_log(r))); end end fclose(f); endfunction % function to write float fading samples for use by C programs %function write_noise_file(raw_file_name, Fs, dopplerSpreadHz, len_samples) % spread = doppler_spread(dopplerSpreadHz, Fs, len_samples); % spread_2ms = doppler_spread(dopplerSpreadHz, Fs, len_samples); % hf_gain = 1.0/sqrt(var(spread)+var(spread_2ms)); % % % interleave real imag samples % % inter = zeros(1,len_samples*4); % inter(1:4) = hf_gain; % for i=1:len_samples % inter(i*4+1) = real(spread(i)); % inter(i*4+2) = imag(spread(i)); % inter(i*4+3) = real(spread_2ms(i)); % inter(i*4+4) = imag(spread_2ms(i)); % end % f = fopen(raw_file_name,"wb"); % fwrite(f, inter, "float32"); % fclose(f); %endfunction codec2-1.2.0/octave/tfdmdv.m000066400000000000000000000251351445607075400156160ustar00rootroot00000000000000% tfdmdv.m % % Octave script that tests the C port of the FDMDV modem. This script loads % the output of unittest/tfdmdv.c and compares it to the output of the % reference versions of the same functions written in Octave. % % Usage: % % 1/ In codec2-dev/CMakeLists.txt, ensure set(CMAKE_BUILD_TYPE "Debug"), to % enable building the C unittests. Build codec2-dev as per % codec2-dev/README. % % 2/ Run the C side from the Octave directory: % % codec2-dev/octave$ ../build_linux/unittest/tfdmdv % codec2-dev/octave$ ls -l tfdmdv_out.txt % -rw-rw-r-- 1 david david 3419209 Aug 27 10:05 tfdmdv_out.txt % % 3/ Run the Octave side (this script): % % octave:1> tfdmdv % % % Copyright David Rowe 2012 % This program is distributed under the terms of the GNU General Public License % Version 2 % more off format fdmdv; % load modem code autotest; % automatic testing library % init fdmdv modem states and load up a few constants in this scope for convenience f = fdmdv_init; Nc = f.Nc; Nb = f.Nb; M = f.M; Fs = f.Fs; P = f.P; Q = f.Q; % Generate reference vectors using Octave implementation of FDMDV modem global passes = 0; global fails = 0; frames = 35; prev_tx_symbols = ones(Nc+1,1); prev_tx_symbols(Nc+1) = 2; prev_rx_symbols = ones(Nc+1,1); foff_phase_rect = 1; channel = []; channel_count = 0; next_nin = M; sig_est = zeros(Nc+1,1); noise_est = zeros(Nc+1,1); sync = 0; fest_state = 0; fest_timer = 0; sync_mem = zeros(1,f.Nsync_mem); % Octave outputs we want to collect for comparison to C version tx_bits_log = []; tx_symbols_log = []; tx_baseband_log = []; tx_fdm_log = []; pilot_baseband1_log = []; pilot_baseband2_log = []; pilot_lpf1_log = []; pilot_lpf2_log = []; S1_log = []; S2_log = []; foff_coarse_log = []; foff_fine_log = []; foff_log = []; rx_fdm_filter_log = []; rx_filt_log = []; env_log = []; rx_timing_log = []; phase_difference_log = []; rx_symbols_log = []; rx_bits_log = []; sync_bit_log = []; sync_log = []; nin_log = []; sig_est_log = []; noise_est_log = []; % adjust this if the screen is getting a bit cluttered global no_plot_list = [1 2 3 4 5 6 7 8 12 13 14 15 16]; for fr=1:frames % modulator [tx_bits f] = get_test_bits(f, Nc*Nb); tx_bits_log = [tx_bits_log tx_bits]; [tx_symbols f] = bits_to_psk(f, prev_tx_symbols, tx_bits); prev_tx_symbols = tx_symbols; tx_symbols_log = [tx_symbols_log tx_symbols]; [tx_baseband f] = tx_filter(f, tx_symbols); tx_baseband_log = [tx_baseband_log tx_baseband]; [tx_fdm f] = fdm_upconvert(f, tx_baseband); tx_fdm_log = [tx_fdm_log tx_fdm]; % channel nin = next_nin; % nin = M; % when debugging good idea to uncomment this to "open loop" channel = [channel real(tx_fdm)]; channel_count += M; rx_fdm = channel(1:nin); channel = channel(nin+1:channel_count); channel_count -= nin; % demodulator -------------------------------------------- % shift down to complex baseband for i=1:nin f.fbb_phase_rx = f.fbb_phase_rx*f.fbb_rect'; rx_fdm(i) = rx_fdm(i)*f.fbb_phase_rx; end mag = abs(f.fbb_phase_rx); f.fbb_phase_rx /= mag; % sync = 0; % when debugging good idea to uncomment this to "open loop" [pilot prev_pilot f.pilot_lut_index f.prev_pilot_lut_index] = get_pilot(f, f.pilot_lut_index, f.prev_pilot_lut_index, nin); [foff_coarse S1 S2 f] = rx_est_freq_offset(f, rx_fdm, pilot, prev_pilot, nin, !sync); if sync == 0 foff = foff_coarse; end foff_coarse_log = [foff_coarse_log foff_coarse]; pilot_baseband1_log = [pilot_baseband1_log f.pilot_baseband1]; pilot_baseband2_log = [pilot_baseband2_log f.pilot_baseband2]; pilot_lpf1_log = [pilot_lpf1_log f.pilot_lpf1]; pilot_lpf2_log = [pilot_lpf2_log f.pilot_lpf2]; S1_log = [S1_log S1]; S2_log = [S2_log S2]; foff_rect = exp(j*2*pi*foff/Fs); for i=1:nin foff_phase_rect *= foff_rect'; rx_fdm_fcorr(i) = rx_fdm(i)*foff_phase_rect; end [rx_fdm_filter f] = rxdec_filter(f, rx_fdm_fcorr, nin); [rx_filt f] = down_convert_and_rx_filter(f, rx_fdm_filter, nin, M/Q); #{ for i=1:5 printf("[%d] rx_fdm_fcorr: %f %f rx_fdm_filter: %f %f\n", i, real(rx_fdm_fcorr(i)), imag(rx_fdm_fcorr(i)), real(rx_fdm_filter(i)), imag(rx_fdm_filter(i))); end for i=1:5 printf("[%d] rx_fdm_fcorr: %f %f rxdec_lpf_mem: %f %f\n", i, real(rx_fdm_fcorr(i)), imag(rx_fdm_fcorr(i)), real(f.rxdec_lpf_mem(i)), imag(f.rxdec_lpf_mem(i))); end #} rx_filt_log = [rx_filt_log rx_filt]; rx_fdm_filter_log = [rx_fdm_filter_log rx_fdm_filter]; [rx_symbols rx_timing env f] = rx_est_timing(f, rx_filt, nin); env_log = [env_log env]; rx_timing_log = [rx_timing_log rx_timing]; rx_symbols_log = [rx_symbols_log rx_symbols]; next_nin = M; if rx_timing > 2*M/P next_nin += M/P; end if rx_timing < 0; next_nin -= M/P; end nin_log = [nin_log nin]; [rx_bits sync_bit foff_fine pd] = psk_to_bits(f, prev_rx_symbols, rx_symbols, 'dqpsk'); phase_difference_log = [phase_difference_log pd]; foff_fine_log = [foff_fine_log foff_fine]; foff -= 0.5*foff_fine; foff_log = [foff_log foff]; [sig_est noise_est] = snr_update(f, sig_est, noise_est, pd); sig_est_log = [sig_est_log sig_est]; noise_est_log = [noise_est_log noise_est]; prev_rx_symbols = rx_symbols; rx_bits_log = [rx_bits_log rx_bits]; sync_bit_log = [sync_bit_log sync_bit]; % freq est state machine [sync reliable_sync_bit fest_state fest_timer sync_mem] = freq_state(f, sync_bit, fest_state, fest_timer, sync_mem); sync_log = [sync_log sync]; end % Compare to the output from the C version load tfdmdv_out.txt % --------------------------------------------------------------------------------------- % Plot output and test each C function % --------------------------------------------------------------------------------------- % fdmdv_get_test_bits() & bits_to_dqpsk_symbols() n = 28; stem_sig_and_error(1, 211, tx_bits_log_c(1:n), tx_bits_log(1:n) - tx_bits_log_c(1:n), 'tx bits', [1 n -1.5 1.5]) stem_sig_and_error(1, 212, real(tx_symbols_log_c(1:n/2)), real(tx_symbols_log(1:n/2) - tx_symbols_log_c(1:n/2)), 'tx symbols real', [1 n/2 -1.5 1.5]) % fdm_upconvert() plot_sig_and_error(3, 211, real(tx_fdm_log_c), real(tx_fdm_log - tx_fdm_log_c), 'tx fdm real') plot_sig_and_error(3, 212, imag(tx_fdm_log_c), imag(tx_fdm_log - tx_fdm_log_c), 'tx fdm imag') % generate_pilot_lut() plot_sig_and_error(4, 211, real(pilot_lut_c), real(f.pilot_lut - pilot_lut_c), 'pilot lut real') plot_sig_and_error(4, 212, imag(pilot_lut_c), imag(f.pilot_lut - pilot_lut_c), 'pilot lut imag') % rx_est_freq_offset() st=1; en = 5*f.Npilotbaseband; plot_sig_and_error(5, 211, real(pilot_baseband1_log(st:en)), real(pilot_baseband1_log(st:en) - pilot_baseband1_log_c(st:en)), 'pilot baseband1 real' ) plot_sig_and_error(5, 212, real(pilot_baseband2_log(st:en)), real(pilot_baseband2_log(st:en) - pilot_baseband2_log_c(st:en)), 'pilot baseband2 real' ) st=1; en = 5*f.Npilotlpf; plot_sig_and_error(6, 211, real(pilot_lpf1_log(st:en)), real(pilot_lpf1_log(st:en) - pilot_lpf1_log_c(st:en)), 'pilot lpf1 real' ) plot_sig_and_error(6, 212, real(pilot_lpf2_log(st:en)), real(pilot_lpf2_log(st:en) - pilot_lpf2_log_c(st:en)), 'pilot lpf2 real' ) plot_sig_and_error(7, 211, real(S1_log), real(S1_log - S1_log_c), 'S1 real' ) plot_sig_and_error(7, 212, imag(S1_log), imag(S1_log - S1_log_c), 'S1 imag' ) plot_sig_and_error(8, 211, real(S2_log), real(S2_log - S2_log_c), 'S2 real' ) plot_sig_and_error(8, 212, imag(S2_log), imag(S2_log - S2_log_c), 'S2 imag' ) plot_sig_and_error(9, 211, foff_coarse_log, foff_coarse_log - foff_coarse_log_c, 'Coarse Freq Offset' ) plot_sig_and_error(9, 212, foff_fine_log, foff_fine_log - foff_fine_log_c, 'Fine Freq Offset' ) plot_sig_and_error(10, 211, foff_log, foff_log - foff_log_c, 'Freq Offset' ) plot_sig_and_error(10, 212, sync_log, sync_log - sync_log_c, 'Sync & Freq Est Coarse(0) Fine(1)', [1 frames -1.5 1.5] ) plot_sig_and_error(11, 211, real(rx_fdm_filter_log), real(rx_fdm_filter_log - rx_fdm_filter_log_c), 'Rx dec filter real' ) plot_sig_and_error(11, 212, imag(rx_fdm_filter_log), imag(rx_fdm_filter_log - rx_fdm_filter_log_c), 'Rx dec filter imag' ) c=1; plot_sig_and_error(12, 211, real(rx_filt_log(c,:)), real(rx_filt_log(c,:) - rx_filt_log_c(c,:)), 'Rx filt real' ) plot_sig_and_error(12, 212, imag(rx_filt_log(c,:)), imag(rx_filt_log(c,:) - rx_filt_log_c(c,:)), 'Rx filt imag' ) st=1*28; en = 3*28; plot_sig_and_error(14, 211, rx_timing_log, rx_timing_log - rx_timing_log_c, 'Rx Timing' ) stem_sig_and_error(14, 212, sync_bit_log_c, sync_bit_log - sync_bit_log_c, 'Sync bit', [1 n -1.5 1.5]) stem_sig_and_error(15, 211, rx_bits_log_c(st:en), rx_bits_log(st:en) - rx_bits_log_c(st:en), 'RX bits', [1 en-st -1.5 1.5]) stem_sig_and_error(15, 212, nin_log_c, nin_log - nin_log_c, 'nin') c = 12; plot_sig_and_error(16, 211, sig_est_log(c,:), sig_est_log(c,:) - sig_est_log_c(c,:), 'sig est for SNR' ) plot_sig_and_error(16, 212, noise_est_log(c,:), noise_est_log(c,:) - noise_est_log_c(c,:), 'noise est for SNR' ) fr=12; stem_sig_and_error(13, 211, real(rx_symbols_log(:,fr)), real(rx_symbols_log(:,fr) - rx_symbols_log_c(:,fr)), 'rx symbols real' ) stem_sig_and_error(13, 212, imag(rx_symbols_log(:,fr)), imag(rx_symbols_log(:,fr) - rx_symbols_log_c(:,fr)), 'rx symbols imag' ) stem_sig_and_error(17, 211, real(phase_difference_log(:,fr)), real(phase_difference_log(:,fr) - phase_difference_log_c(:,fr)), 'phase difference real' ) stem_sig_and_error(17, 212, imag(phase_difference_log(:,fr)), imag(phase_difference_log(:,fr) - phase_difference_log_c(:,fr)), 'phase difference imag' ) check(tx_bits_log, tx_bits_log_c, 'tx_bits'); check(tx_symbols_log, tx_symbols_log_c, 'tx_symbols'); check(tx_fdm_log, tx_fdm_log_c, 'tx_fdm'); check(f.pilot_lut, pilot_lut_c, 'pilot_lut'); check(f.pilot_coeff, pilot_coeff_c, 'pilot_coeff'); check(pilot_baseband1_log, pilot_baseband1_log_c, 'pilot lpf1'); check(pilot_baseband2_log, pilot_baseband2_log_c, 'pilot lpf2'); check(S1_log, S1_log_c, 'S1'); check(S2_log, S2_log_c, 'S2'); check(foff_coarse_log, foff_coarse_log_c, 'foff_coarse'); check(foff_fine_log, foff_fine_log_c, 'foff_fine'); check(foff_log, foff_log_c, 'foff'); check(rx_fdm_filter_log, rx_fdm_filter_log_c, 'rxdec filter'); check(rx_filt_log, rx_filt_log_c, 'rx filt', 2E-3); check(env_log, env_log_c, 'env'); check(rx_timing_log, rx_timing_log_c, 'rx_timing'); check(rx_symbols_log, rx_symbols_log_c, 'rx_symbols', 2E-3); check(rx_bits_log, rx_bits_log_c, 'rx bits'); check(sync_bit_log, sync_bit_log_c, 'sync bit'); check(sync_log, sync_log_c, 'sync'); check(nin_log, nin_log_c, 'nin'); check(sig_est_log, sig_est_log_c, 'sig_est'); check(noise_est_log, noise_est_log_c, 'noise_est'); printf("\npasses: %d fails: %d\n", passes, fails); codec2-1.2.0/octave/tfmfsk.m000066400000000000000000000330621445607075400156220ustar00rootroot00000000000000% tfsk.m % Author: Brady O'Brien 8 February 2016 % Copyright 2016 David Rowe % % All rights reserved. % % This program is free software; you can redistribute it and/or modify % it under the terms of the GNU Lesser General Public License version 2.1, as % published by the Free Software Foundation. This program is % distributed in the hope that it will be useful, but WITHOUT ANY % WARRANTY; without even the implied warranty of MERCHANTABILITY or % FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public % License for more details. % % You should have received a copy of the GNU Lesser General Public License % along with this program; if not, see . % Octave script to check c port of mancyfsk/fmfsk against the fmfsk.m % #{ FMFSK Modem automated test instructions: 1. Use cmake to build in debug mode to ensure unittest/tfsk is built: $ cd ~/codec2 $ rm -Rf build_linux && mkdir build_linux $ cd build_linux $ cmake -DCMAKE_BUILD_TYPE=Debug .. $ make 2 - Change tfsk_location below if required 3 - Ensure Octave packages signal and parallel are installed 4 - Start Octave and run tfsk.m. It will perform all tests automatically #} %tfsk executable path/file global tfsk_location = '../build_linux/unittest/tfmfsk'; %Set to 1 for verbose printouts global print_verbose = 0; fmfsk pkg load signal; pkg load parallel; graphics_toolkit('gnuplot'); global mod_pass_fail_maxdiff = 1e-3/5000; function mod = fmfsk_mod_c(Fs,Rs,bits) global tfsk_location; %command to be run by system to launch the modulator command = sprintf('%s M %d %d fsk_mod_ut_bitvec fsk_mod_ut_modvec fmfsk_mod_ut_log.txt',tfsk_location,Fs,Rs); %save input bits into a file bitvecfile = fopen('fsk_mod_ut_bitvec','wb+'); fwrite(bitvecfile,bits,'uint8'); fclose(bitvecfile); %run the modulator system(command); modvecfile = fopen('fsk_mod_ut_modvec','rb'); mod = fread(modvecfile,'single'); fclose(modvecfile); endfunction %Compare 2 vectors, fail if they are not close enough function pass = vcompare(vc,voct,vname,tname,tol,pnum) global print_verbose; %Get delta of vectors dvec = abs(abs(vc)-abs(voct)); %Normalize difference dvec = dvec ./ abs(max(abs(voct))+1e-8); maxdvec = abs(max(dvec)); pass = maxdvec=states.nin ninold = states.nin; [bitbuf,states] = fmfsk_demod(states, modin(1:states.nin)); modin=modin(ninold+1:length(modin)); obits = [obits bitbuf]; o_norm_rx_timing = [o_norm_rx_timing states.norm_rx_timing]; o_symsamp = [o_symsamp states.symsamp]; o_rx_filt = [o_rx_filt states.rx_filt]; end close all pass = 1; % One part-per-thousand allowed on important parameters pass = vcompare(t_rx_filt,o_rx_filt,'rx filt',tname,.001,8) && pass; pass = vcompare(t_norm_rx_timing,o_norm_rx_timing,'norm rx timing',tname,.001,9) && pass; pass = vcompare(t_symsamp,o_symsamp,'symsamp',tname,.001,10) && pass; assert(pass); diffpass = sum(xor(obits,bits'))<4; diffbits = sum(xor(obits,bits')); if diffpass==0 printf('\n***bitcompare test failed test %s diff %d\n\n',tname,sum(xor(obits,bits'))) figure(15) plot(xor(obits,bits')) title(sprintf('Bitcompare failure test %s',tname)) end pass = pass && diffpass; test_stats.pass = pass; test_stats.diff = sum(xor(obits,bits')); test_stats.cbits = bits'; test_stats.obits = obits; endfunction function [dmod,cmod,omod,pass] = fmfsk_mod_test(Fs,Rs,bits,tname,M=2) global mod_pass_fail_maxdiff; %Run the C modulator cmod = fmfsk_mod_c(Fs,Rs,bits); %Set up and run the octave modulator states.M = M; states = fmfsk_init(Fs,Rs); omod = fmfsk_mod(states,bits)'; dmod = cmod-omod; pass = max(dmod)<(mod_pass_fail_maxdiff*length(dmod)); if !pass printf('Mod failed test %s!\n',tname); end endfunction % Random bit modulator test % Pass random bits through the modulators and compare function pass = test_mod_fdvbcfg_randbits rand('state',1); randn('state',1); bits = rand(1,19200)>.5; [dmod,cmod,omod,pass] = fmfsk_mod_test(48000,2400,bits,"mod fdvbcfg randbits"); if(!pass) figure(1) plot(dmod) title("Difference between octave and C mod impl"); end endfunction % run_sim copypasted from fsk_horus.m % simulation of tx and rx side, add noise, channel impairments ---------------------- function stats = tfmfsk_run_sim(EbNodB,timing_offset=0,de=0,of=0,hpf=0,df=0,M=2) global print_verbose; test_frame_mode = 2; frames = 70; %EbNodB = 3; %timing_offset = 0.0; % see resample() for clock offset below %fading = 0; % modulates tx power at 2Hz with 20dB fade depth, % to simulate balloon rotating at end of mission more off rand('state',1); randn('state',1); Fs = 48000; Rbit = 2400; % ---------------------------------------------------------------------- fm_states.pre_emp = 0; fm_states.de_emp = de; fm_states.Ts = Fs/(Rbit*2); fm_states.Fs = Fs; fm_states.fc = Fs/4; fm_states.fm_max = 3E3; fm_states.fd = 5E3; fm_states.output_filter = of; fm_states = analog_fm_init(fm_states); % ---------------------------------------------------------------------- states = fmfsk_init(Fs,Rbit); states.verbose = 0x1; Rs = states.Rs; nsym = states.nsym; Fs = states.Fs; nbit = states.nbit; EbNo = 10^(EbNodB/10); variance = states.Fs/(states.Rb*EbNo); % set up tx signal with payload bits based on test mode if test_frame_mode == 1 % test frame of bits, which we repeat for convenience when BER testing test_frame = round(rand(1, states.nbit)); tx_bits = []; for i=1:frames+1 tx_bits = [tx_bits test_frame]; end end if test_frame_mode == 2 % random bits, just to make sure sync algs work on random data tx_bits = round(rand(1, states.nbit*(frames+1))); end if test_frame_mode == 3 % repeating sequence of all symbols % great for initial test of demod if nothing else works, % look for this pattern in rx_bits % ...10101... tx_bits = zeros(1, states.nbit*(frames+1)); tx_bits(1:2:length(tx_bits)) = 1; end [b, a] = cheby1(4, 1, 300/Fs, 'high'); % 300Hz HPF to simulate FM radios tx_pmod = fmfsk_mod(states, tx_bits); tx = analog_fm_mod(fm_states, tx_pmod); if(timing_offset>0) tx = resample(tx, 2000, 1999); % simulated 1000ppm sample clock offset end %Add frequency drift fdrift = df/Fs; fshift = 2*pi*fdrift*(1:length(tx)); fshift = exp(j*(fshift.^2)); tx = tx.*fshift; noise = sqrt(variance)*randn(length(tx),1); rx = tx + noise'; %Demod by analog fm rx = analog_fm_demod(fm_states, rx); %High-pass filter to simulate the FM radios if hpf>0 rx = filter(b,a,rx); end timing_offset_samples = round(timing_offset*states.Ts); st = 1 + timing_offset_samples; rx_bits_buf = zeros(1,2*nbit); test_name = sprintf("tfmfsk run sim EbNodB:%d frames:%d timing_offset:%d df:%d",EbNodB,frames,timing_offset,df); tstats = fmfsk_demod_xt(Fs,Rbit,rx',test_name,M); pass = tstats.pass; obits = tstats.obits; cbits = tstats.cbits; % Figure out BER of octave and C modems bitcnt = length(tx_bits); rx_bits = obits; ber = 1; ox = 1; for offset = (1:400) nerr = sum(xor(rx_bits(offset:length(rx_bits)),tx_bits(1:length(rx_bits)+1-offset))); bern = nerr/(bitcnt-offset); if(bern < ber) ox = offset; best_nerr = nerr; end ber = min([ber bern]); end offset = ox; bero = ber; ber = 1; rx_bits = cbits; ox = 1; for offset = (1:400) nerr = sum(xor(rx_bits(offset:length(rx_bits)),tx_bits(1:length(rx_bits)+1-offset))); bern = nerr/(bitcnt-offset); if(bern < ber) ox = offset; best_nerr = nerr; end ber = min([ber bern]); end offset = ox; berc = ber; if print_verbose == 1 printf("C BER %f in test %s\n",berc,test_name); printf("Oct BER %f in test %s\n",bero,test_name); end stats.berc = berc; stats.bero = bero; stats.name = test_name; % non-coherent BER theory calculation % It was complicated, so I broke it up ms = 2; ns = (1:ms-1); as = (-1).^(ns+1); bs = (as./(ns+1)); cs = ((ms-1)./ns); ds = ns.*log2(ms); es = ns+1; fs = exp( -(ds./es)*EbNo ); thrncoh = ((ms/2)/(ms-1)) * sum(bs.*((ms-1)./ns).*exp( -(ds./es)*EbNo )); stats.thrncoh = thrncoh; stats.pass = pass; endfunction function pass = ebno_battery_test(timing_offset,drift,hpf,deemp,outfilt) global print_verbose; %Range of EbNodB over which to test ebnodbrange = (8:2:20); ebnodbs = length(ebnodbrange); %Replication of other parameters for parcellfun timingv = repmat(timing_offset ,1,ebnodbs); driftv = repmat(drift ,1,ebnodbs); hpfv = repmat(hpf ,1,ebnodbs); deempv = repmat(deemp ,1,ebnodbs); outfv = repmat(outfilt ,1,ebnodbs); statv = pararrayfun(floor(.75*nproc()),@tfmfsk_run_sim,ebnodbrange,timingv,deempv,outfv,hpfv,driftv); %statv = arrayfun(@tfsk_run_sim,modev,ebnodbrange,timingv,fadingv,dfv,dav,mv); passv = zeros(1,length(statv)); for ii=(1:length(statv)) passv(ii)=statv(ii).pass; if statv(ii).pass printf("Test %s passed\n",statv(ii).name); else printf("Test %s failed\n",statv(ii).name); end end %All pass flags are '1' pass = sum(passv)>=length(passv); %and no tests died pass = pass && length(passv)==ebnodbs; passv; assert(pass) endfunction %Test with and without sample clock offset function pass = test_timing_var(drift,hpf,deemp,outfilt) pass = ebno_battery_test(1,drift,hpf,deemp,outfilt) assert(pass) pass = ebno_battery_test(0,drift,hpf,deemp,outfilt) assert(pass) endfunction %Test with and without 1 Hz/S freq drift function pass = test_drift_var(hpf,deemp,outfilt) pass = test_timing_var(1,hpf,deemp,outfilt) assert(pass) pass = pass && test_timing_var(0,hpf,deemp,outfilt) assert(pass) endfunction function pass = test_fmfsk_battery() pass = test_mod_fdvbcfg_randbits; assert(pass) pass = pass && test_drift_var(1,1,1); assert(pass) if pass printf("***** All tests passed! *****\n"); end endfunction function plot_fmfsk_bers(M=2) %Range of EbNodB over which to test ebnodbrange = (8:14); ebnodbs = length(ebnodbrange); %Replication of other parameters for parcellfun %Turn on all of the impairments timingv = repmat(1 ,1,ebnodbs); driftv = repmat(1 ,1,ebnodbs); hpfv = repmat(1 ,1,ebnodbs); deempv = repmat(1 ,1,ebnodbs); outfv = repmat(1 ,1,ebnodbs); statv = pararrayfun(nproc(),@tfmfsk_run_sim,ebnodbrange,timingv,deempv,outfv,hpfv,driftv); %statv = arrayfun(@tfsk_run_sim,modev,ebnodbrange,timingv,fadingv,dfv,dav,Mv); for ii = (1:length(statv)) stat = statv(ii); berc(ii)=stat.berc; bero(ii)=stat.bero; berinc(ii)=stat.thrncoh; end clf; figure(M) semilogy(ebnodbrange, berinc,sprintf('r;2FSK non-coherent theory;',M)) hold on; semilogy(ebnodbrange, bero ,sprintf('g;Octave ME-FM-FSK Demod;',M)) semilogy(ebnodbrange, berc,sprintf('v;C ME-FM-FSK Demod;',M)) hold off; grid("minor"); axis([min(ebnodbrange) max(ebnodbrange) 1E-5 1]) legend("boxoff"); xlabel("Eb/No (dB)"); ylabel("Bit Error Rate (BER)") endfunction xpass = test_fmfsk_battery plot_fmfsk_bers(2) if xpass printf("***** All tests passed! *****\n"); else printf("***** Some test failed! Look back through output to find failed test *****\n"); end codec2-1.2.0/octave/tfsk.m000066400000000000000000000437551445607075400153110ustar00rootroot00000000000000% tfsk.m % Brady O'Brien 8 January 2016 % David Rowe May 2020 % % Automatic testing of C port of FSK modem by comparing to reference % Octave version. Currently just a subset of tests enabled in order to % run in a reasonable amount of time as ctests, but still trapping any % bit-rot. #{ FSK Modem automated test instructions: 1. Use cmake to build in debug mode to ensure unittest/tfsk is built: $ cd ~/codec2 $ rm -Rf build_linux && mkdir build_linux $ cd build_linux $ cmake -DCMAKE_BUILD_TYPE=Debug .. $ make 2 - Change tfsk_location below if required 3 - Ensure Octave packages are installed 4 - Start Octave and run tfsk.m. It will perform all tests automatically #} % tfsk executable path/file if getenv("PATH_TO_TFSK") global tfsk_location = getenv("PATH_TO_TFSK") printf("setting tfsk_location from env var: %s\n", getenv("PATH_TO_TFSK")); else global tfsk_location = '../build_linux/unittest/tfsk'; end % Set to 1 for verbose printouts global print_verbose = 0; global mod_pass_fail_maxdiff = 1e-3/5000; fsk_horus_as_a_lib=1; fsk_horus; pkg load signal; % not needed unless parallel tests running %pkg load parallel; graphics_toolkit('gnuplot'); function print_result(test_name, result) printf("%s", test_name); for i=1:(40-length(test_name)) printf("."); end printf(": %s\n", result); end function mod = fsk_mod_c(Fs,Rs,f1,fsp,bits,M) global tfsk_location; %command to be run by system to launch the modulator command = sprintf('%s M %d %d %d %d %d 0 fsk_mod_ut_bitvec fsk_mod_ut_modvec fsk_mod_ut_log.txt',tfsk_location,M,f1,fsp,Fs,Rs); %save input bits into a file bitvecfile = fopen('fsk_mod_ut_bitvec','wb+'); fwrite(bitvecfile,bits,'uint8'); fclose(bitvecfile); %run the modulator system(command); modvecfile = fopen('fsk_mod_ut_modvec','rb'); mod = fread(modvecfile,'single'); fclose(modvecfile); endfunction %Compare 2 vectors, fail if they are not close enough function pass = vcompare(vc,voct,vname,tname,tol,pnum) global print_verbose; %Get delta of vectors dvec = abs(abs(vc - voct)); %Normalize difference dvec = dvec ./ abs(max(abs(voct))+1e-8); maxdvec = abs(max(dvec)); pass = maxdvec=states.nin ninold = states.nin; states = est_freq(states, modin(1:states.nin), states.M); [bitbuf,states] = fsk_demod(states, modin(1:states.nin)); if lock_nin states.nin = states.N; end modin=modin(ninold+1:length(modin)); obits = [obits bitbuf]; %Save other parameters o_f1_dc = [o_f1_dc states.f_dc(1,:)]; o_f2_dc = [o_f2_dc states.f_dc(2,:)]; o_f1_int = [o_f1_int states.f_int(1,:)]; o_f2_int = [o_f2_int states.f_int(2,:)]; o_EbNodB = [o_EbNodB states.EbNodB]; o_ppm = [o_ppm states.ppm]; o_rx_timing = [o_rx_timing states.rx_timing]; o_norm_rx_timing = [o_norm_rx_timing states.norm_rx_timing]; o_Sf = [o_Sf states.Sf']; o_f1 = [o_f1 states.f(1)]; o_f2 = [o_f1 states.f(2)]; o_fest = [o_fest states.f]; o_mask = [o_mask states.mask]; o_fest2 = [o_fest2 states.f2]; o_nin = [o_nin states.nin]; if M==4 o_f3_dc = [o_f3_dc states.f_dc(3,:)]; o_f4_dc = [o_f4_dc states.f_dc(4,:)]; o_f3_int = [o_f3_int states.f_int(3,:)]; o_f4_int = [o_f4_int states.f_int(4,:)]; o_f3 = [o_f1 states.f(3)]; o_f4 = [o_f1 states.f(4)]; end end assert(vcompare(o_Sf, t_Sf,'fft est',tname,.001,1)); assert(vcompare(o_fest, t_f_est,'f est',tname,.001,2)); assert(vcompare(o_mask, t_mask,'f2 mask',tname,.001,3)); assert(vcompare(o_fest2, t_f2_est,'f2 est',tname,.001,16)); o_fest2(1:12) t_f2_est(1:12) assert(vcompare(o_f1_dc, t_f1_dc, 'f1 dc', tname,.01,8)); assert(vcompare(o_f2_dc, t_f2_dc, 'f2 dc', tname,.01,9)); assert(vcompare(o_f2_int, t_f2_int, 'f2 int', tname,.01,10)); assert(vcompare(o_f1_int, t_f1_int, 'f1 int', tname,.01,11)); if M==4 assert(vcompare(o_f3_dc, t_f3_dc, 'f3 dc', tname,.01,4)) assert(vcompare(o_f4_dc, t_f4_dc, 'f4 dc', tname,.01,5)); assert(vcompare(o_f3_int, t_f3_int, 'f3 int', tname,.01,6)); assert(vcompare(o_f4_int, t_f4_int, 'f4 int', tname,.01,7)); end assert(vcompare(o_rx_timing, t_rx_timing,'rx timing',tname,.02,3)); % Much larger tolerances on unimportant statistics assert(vcompare(o_ppm , t_ppm, 'ppm', tname,.02,12)); assert(vcompare(o_EbNodB, t_EbNodB,'EbNodB', tname,.02,13)); assert(vcompare(o_nin, t_nin, 'nin', tname,.0001,14)); assert(vcompare(o_norm_rx_timing, t_norm_rx_timing,'norm rx timing',tname,.02,15)); diffpass = sum(xor(obits,bits'))<4; diffbits = sum(xor(obits,bits')); if diffpass==0 printf('\n***bitcompare test failed test %s diff %d\n\n',tname,sum(xor(obits,bits'))) figure(15) plot(xor(obits,bits')) title(sprintf('Bitcompare failure test %s',tname)) end assert(diffpass); test_stats.pass = 1; test_stats.diff = sum(xor(obits,bits')); test_stats.cbits = bits'; test_stats.obits = obits; endfunction function [dmod,cmod,omod,pass] = fsk_mod_test(Fs,Rs,f1,fsp,bits,tname,M=2) global mod_pass_fail_maxdiff; %Run the C modulator cmod = fsk_mod_c(Fs,Rs,f1,fsp,bits,M); %Set up and run the octave modulator states.M = M; states = fsk_horus_init(Fs,Rs,M); states.ftx(1) = f1; states.ftx(2) = f1+fsp; if states.M == 4 states.ftx(3) = f1+fsp*2; states.ftx(4) = f1+fsp*3; end states.dF = 0; omod = fsk_mod(states,bits); dmod = cmod-omod; pass = max(dmod)<(mod_pass_fail_maxdiff*length(dmod)); if !pass printf('Mod failed test %s!\n',tname); end endfunction % Random bit modulator test % Pass random bits through the modulators and compare function pass = test_mod_horuscfg_randbits rand('state',1); randn('state',1); bits = rand(1,10000)>.5; [dmod,cmod,omod,pass] = fsk_mod_test(8000,100,1200,1600,bits,"mod horuscfg randbits"); if(!pass) figure(1) plot(dmod) title("Difference between octave and C mod impl"); end print_result("test_mod_horuscfg_randbits", "OK"); endfunction % Random bit modulator test % Pass random bits through the modulators and compare function pass = test_mod_horuscfgm4_randbits rand('state',1); randn('state',1); bits = rand(1,10000)>.5; [dmod,cmod,omod,pass] = fsk_mod_test(8000,100,1200,1600,bits,"mod horuscfg randbits",4); if(!pass) figure(1) plot(dmod) title("Difference between octave and C mod impl"); end print_result("test_mod_horuscfgm4_randbits", "OK"); endfunction % A big ol' channel impairment tester shamelessly taken from fsk_horus % This throws some channel imparment or another at the C and octave % modem so they may be compared. function stats = tfsk_run_sim(test_frame_mode,EbNodB,timing_offset,fading,df,M=2,frames=50,lock_nin=0) #{ timing_offset [0|1] enable a 1000ppm sample clock offset fading [0|1] modulates tx power at 2Hz with 20dB fade depth, e.g. to simulate balloon rotating at end of mission df tx tone freq drift in Hz/s lock_nin [0|1] locks nin to a constant which makes tests much simpler by breaking feedback loop #} global print_verbose; more off rand('state',1); randn('state',1); % ---------------------------------------------------------------------- % sm2000 config ------------------------ %states = fsk_horus_init(96000, 1200); %states.f1_tx = 4000; %states.f2_tx = 5200; if test_frame_mode == 2 % horus rtty config --------------------- states = fsk_horus_init(8000, 100, M); states.f1_tx = 1200; states.f2_tx = 1600; end if test_frame_mode == 4 % horus rtty config --------------------- states = fsk_horus_init(8000, 100, M); states.f1_tx = 1200; states.f2_tx = 1600; states.tx_bits_file = "horus_tx_bits_rtty.txt"; % Octave file of bits we FSK modulate end if test_frame_mode == 5 % horus binary config --------------------- states = fsk_horus_init(8000, 100, M); states.f1_tx = 1200; states.f2_tx = 1600; %%%states.tx_bits_file = "horus_tx_bits_binary.txt"; % Octave file of bits we FSK modulate states.tx_bits_file = "horus_payload_rtty.txt"; end % ---------------------------------------------------------------------- states.verbose = 0; N = states.N; P = states.P; Rs = states.Rs; nsym = states.nsym; Fs = states.Fs; states.df = df; states.M = M; EbNo = 10^(EbNodB/10); variance = states.Fs/(states.Rs*EbNo*states.bitspersymbol); % set up tx signal with payload bits based on test mode if test_frame_mode == 1 % test frame of bits, which we repeat for convenience when BER testing test_frame = round(rand(1, states.nsym)); tx_bits = []; for i=1:frames+1 tx_bits = [tx_bits test_frame]; end end if test_frame_mode == 2 % random bits, just to make sure sync algs work on random data tx_bits = round(rand(1, states.nbit*(frames+1))); end if test_frame_mode == 3 % ...10101... sequence tx_bits = zeros(1, states.nsym*(frames+1)); tx_bits(1:2:length(tx_bits)) = 1; end if (test_frame_mode == 4) || (test_frame_mode == 5) % load up a horus msg from disk and modulate that test_frame = load(states.tx_bits_file); ltf = length(test_frame); ntest_frames = ceil((frames+1)*nsym/ltf); tx_bits = []; for i=1:ntest_frames tx_bits = [tx_bits test_frame]; end end f1 = states.f1_tx; fsp = states.f2_tx-f1; states.ftx(1) = f1; states.ftx(2) = f1+fsp; if states.M == 4 states.ftx(3) = f1+fsp*2; states.ftx(4) = f1+fsp*3; end tx = fsk_mod(states, tx_bits); if timing_offset tx = resample(tx, 1000, 1001); % simulated 1000ppm sample clock offset end if fading ltx = length(tx); tx = tx .* (1.1 + cos(2*pi*2*(0:ltx-1)/Fs))'; % min amplitude 0.1, -20dB fade, max 3dB end noise = sqrt(variance)*randn(length(tx),1); rx = tx + noise; test_name = sprintf("tfsk run sim EbNodB:%d frames:%d timing_offset:%d fading:%d df:%d",EbNodB,frames,timing_offset,fading,df); tstats = fsk_demod_xt(Fs,Rs,states.f1_tx,fsp,rx,test_name,M,lock_nin); pass = tstats.pass; obits = tstats.obits; cbits = tstats.cbits; % Figure out BER of octave and C modems bitcnt = length(tx_bits); rx_bits = obits; ber = 1; ox = 1; for offset = (1:100) nerr = sum(xor(rx_bits(offset:length(rx_bits)),tx_bits(1:length(rx_bits)+1-offset))); bern = nerr/(bitcnt-offset); if(bern < ber) ox = offset; best_nerr = nerr; end ber = min([ber bern]); end offset = ox; bero = ber; ber = 1; rx_bits = cbits; ox = 1; for offset = (1:100) nerr = sum(xor(rx_bits(offset:length(rx_bits)),tx_bits(1:length(rx_bits)+1-offset))); bern = nerr/(bitcnt-offset); if(bern < ber) ox = offset; best_nerr = nerr; end ber = min([ber bern]); end offset = ox; berc = ber; stats.berc = berc; stats.bero = bero; stats.name = test_name; % coherent BER theory calculation stats.thrcoh = .5*(M-1)*erfc(sqrt( (log2(M)/2) * EbNo )); % non-coherent BER theory calculation % It was complicated, so I broke it up ms = M; ns = (1:ms-1); as = (-1).^(ns+1); bs = (as./(ns+1)); cs = ((ms-1)./ns); ds = ns.*log2(ms); es = ns+1; fs = exp( -(ds./es)*EbNo ); thrncoh = ((ms/2)/(ms-1)) * sum(bs.*((ms-1)./ns).*exp( -(ds./es)*EbNo )); stats.thrncoh = thrncoh; stats.pass = pass; endfunction % run a bunch of tests at a range of EbNo's in parallel function pass = ebno_battery_test(timing_offset,fading,df,M) %Range of EbNodB over which to test ebnodbrange = (5:2:13); ebnodbs = length(ebnodbrange); mode = 2; %Replication of other parameters for parcellfun modev = repmat(mode,1,ebnodbs); timingv = repmat(timing_offset,1,ebnodbs); fadingv = repmat(fading,1,ebnodbs); dfv = repmat(df,1,ebnodbs); mv = repmat(M,1,ebnodbs); statv = pararrayfun(floor(1.25*nproc()),@tfsk_run_sim,modev,ebnodbrange,timingv,fadingv,dfv,mv); passv = zeros(1,length(statv)); for ii=(1:length(statv)) passv(ii)=statv(ii).pass; if statv(ii).pass printf("Test %s passed\n",statv(ii).name); else printf("Test %s failed\n",statv(ii).name); end end %All pass flags are '1' pass = sum(passv)>=length(passv); %and no tests died pass = pass && length(passv)==ebnodbs; passv; assert(pass) endfunction %Test with and without sample clock offset function pass = test_timing_var(df,M) pass = ebno_battery_test(1,0,df,M) assert(pass) pass = pass && ebno_battery_test(0,0,df,M) assert(pass) endfunction %Test with and without 1 Hz/S freq drift function pass = test_drift_var(M) pass = test_timing_var(1,1,M) pass = pass && test_timing_var(0,1,M) assert(pass) endfunction function pass = test_fsk_battery() pass = test_mod_horuscfg_randbits; pass = pass && test_mod_horuscfgm4_randbits; pass = pass && test_drift_var(4); assert(pass) pass = pass && test_drift_var(2); assert(pass) if pass printf("***** All tests passed! *****\n"); end endfunction function plot_fsk_bers(M=2) %Range of EbNodB over which to plot ebnodbrange = (4:13); berc = ones(1,length(ebnodbrange)); bero = ones(1,length(ebnodbrange)); berinc = ones(1,length(ebnodbrange)); beric = ones(1,length(ebnodbrange)); ebnodbs = length(ebnodbrange) mode = 2; %Replication of other parameters for parcellfun modev = repmat(mode,1,ebnodbs); timingv = repmat(1,1,ebnodbs); fadingv = repmat(0,1,ebnodbs); dfv = repmat(1,1,ebnodbs); Mv = repmat(M,1,ebnodbs); statv = pararrayfun(floor(nproc()),@tfsk_run_sim,modev,ebnodbrange,timingv,fadingv,dfv,Mv); %statv = arrayfun(@tfsk_run_sim,modev,ebnodbrange,timingv,fadingv,dfv,Mv); for ii = (1:length(statv)) stat = statv(ii); berc(ii)=stat.berc; bero(ii)=stat.bero; berinc(ii)=stat.thrncoh; beric(ii) = stat.thrcoh; end clf; figure(M) semilogy(ebnodbrange, berinc,sprintf('r;%dFSK non-coherent theory;',M)) hold on; semilogy(ebnodbrange, beric ,sprintf('g;%dFSK coherent theory;',M)) semilogy(ebnodbrange, bero ,sprintf('b;Octave fsk horus %dFSK Demod;',M)) semilogy(ebnodbrange, berc,sprintf('+;C fsk horus %dFSK Demod;',M)) hold off; grid("minor"); axis([min(ebnodbrange) max(ebnodbrange) 1E-5 1]) legend("boxoff"); xlabel("Eb/No (dB)"); ylabel("Bit Error Rate (BER)") endfunction % We kick off tests here ------------------------------------------------------ pass = 0; ntests = 0; pass += test_mod_horuscfg_randbits; ntests++; pass += test_mod_horuscfgm4_randbits; ntests++; stats = tfsk_run_sim(test_frame_mode=2,EbNodB=5,timing_offset=0,fading=0,df=1,M=4,frames=10,lock_nin=1); ntests++; if stats.pass print_result("Demod 10 frames nin locked", "OK"); pass += stats.pass; end stats = tfsk_run_sim(test_frame_mode=2,EbNodB=5,timing_offset=1,fading=0,df=1,M=4,frames=10,lock_nin=0); ntests++; if stats.pass print_result("Demod 10 frames", "OK"); pass += stats.pass; end printf("tests: %d passed: %d ", ntests, pass); if ntests == pass printf("PASS\n"); else printf("FAIL\n"); end codec2-1.2.0/octave/tnewamp1.m000066400000000000000000000172061445607075400160660ustar00rootroot00000000000000% tnewamp1.m % % Copyright David Rowe 2017 % This program is distributed under the terms of the GNU General Public License % Version 2 #{ Octave script to compare Octave and C versions of newamp1 processing, in order to test C port. c2sim -> dump files -> $ ../build_linux/unittest/tnewamp1 -> octave:1> tnewamp1 Usage: 1/ build codec2 with -DDUMP - see codec2-dev/README 2/ Generate dump files using c2sim (just need to do this once) $ cd codec2-dev/build_linux/src $ ./c2sim ../../raw/hts1a.raw --phase0 --postfilter --dump hts1a --lpc 10 --dump_pitch_e hts1a_pitche.txt 3/ Run C version which generates a file of Octave test vectors as output: $ cd codec2-dev/build_linux/unittest $ ./tnewamp1 ../../raw/hts1a.raw 4/ Run Octave script to generate Octave test vectors and compare with C. octave:1> tnewamp1("../build_linux/src/hts1a") 5/ Optionally listen to output ~/codec2-dev/build_linux/src$ ./c2sim ../../raw/hts1a.raw --phase0 --postfilter \ --amread hts1a_am.out --hmread hts1a_hm.out \ --Woread hts1a_Wo.out --hand_voicing hts1a_v.txt -o - \ | play -q -t raw -r 8000 -s -2 - #} function tnewamp1(input_prefix, path_to_unittest="../build_linux/unittest/") printf("starting tnewamp1.c input_prefix: %s\n", input_prefix); visible_flag = 'off'; newamp_700c; autotest; more off; max_amp = 80; postfilter = 0; % optional postfiler that runs on Am, not used atm synth_phase = 1; if nargin == 1 output_prefix = input_prefix; end model_name = strcat(input_prefix,"_model.txt"); model = load(model_name); [frames nc] = size(model); voicing_name = strcat(input_prefix,"_pitche.txt"); voicing = zeros(1,frames); if exist(voicing_name, "file") == 2 pitche = load(voicing_name); voicing = pitche(:, 3); end % Load in C vectors and compare ----------------------------------------- load(sprintf("%s/tnewamp1_out.txt", path_to_unittest)); K = 20; [frames tmp] = size(rate_K_surface_c); [rate_K_surface sample_freqs_kHz] = resample_const_rate_f_mel(model(1:frames,:), K); melvq; load train_120_1.txt; load train_120_2.txt; train_120_vq(:,:,1)= train_120_1; train_120_vq(:,:,2)= train_120_2; m=5; m=5; eq = zeros(1,K); for f=1:frames mean_f(f) = mean(rate_K_surface(f,:)); rate_K_surface_no_mean(f,:) = rate_K_surface(f,:) - mean_f(f); [rate_K_vec eq] = front_eq(rate_K_surface_no_mean(f,:), eq); rate_K_surface_no_mean(f,:) = rate_K_vec; end [res rate_K_surface_no_mean_ ind] = mbest(train_120_vq, rate_K_surface_no_mean, m); for f=1:frames rate_K_surface_no_mean_(f,:) = post_filter(rate_K_surface_no_mean_(f,:), sample_freqs_kHz, 1.5); end rate_K_surface_ = zeros(frames, K); interpolated_surface_ = zeros(frames, K); energy_q = create_energy_q; M = 4; for f=1:frames [mean_f_ indx] = quantise(energy_q, mean_f(f)); indexes(f,3) = indx - 1; rate_K_surface_(f,:) = rate_K_surface_no_mean_(f,:) + mean_f_; end % simulated decoder % break into segments of M frames. We have 2 samples spaced M apart % and interpolate the rest. Nfft_phase = 128; % note this needs to be 512 (FFT_ENC in codec2 if using --awread) % with --hmread 128 is preferred as less memory/CPU model_ = zeros(frames, max_amp+2); voicing_ = zeros(1,frames); Aw = zeros(frames, Nfft_phase); H = zeros(frames, max_amp); model_(1,1) = Wo_left = 2*pi/100; voicing_left = 0; left_vec = zeros(1,K); % decoder runs on every M-th frame, 25Hz frame rate, offset at % start is to minimise processing delay (thanks Jeroen!) for f=M:M:frames if voicing(f) index = encode_log_Wo(model(f,1), 6); if index == 0 index = 1; end model_(f,1) = decode_log_Wo(index, 6); else model_(f,1) = 2*pi/100; end Wo_right = model_(f,1); voicing_right = voicing(f); [Wo_ avoicing_] = interp_Wo_v(Wo_left, Wo_right, voicing_left, voicing_right); #{ for i=1:4 fprintf(stderr, " Wo: %4.3f L: %d v: %d\n", Wo_(i), floor(pi/Wo_(i)), avoicing_(i)); end fprintf(stderr," rate_K_vec: "); for i=1:5 fprintf(stderr,"%5.3f ", rate_K_surface_(f,i)); end fprintf(stderr,"\n"); #} if f > M model_(f-M:f-1,1) = Wo_; voicing_(f-M:f-1) = avoicing_; model_(f-M:f-1,2) = floor(pi ./ model_(f-M:f-1,1)); % calculate L for each interpolated Wo end right_vec = rate_K_surface_(f,:); if f > M sample_points = [f-M f]; resample_points = f-M:f-1; for k=1:K interpolated_surface_(resample_points,k) = interp_linear(sample_points, [left_vec(k) right_vec(k)], resample_points); end for k=f-M:f-1 model_(k,:) = resample_rate_L(model_(k,:), interpolated_surface_(k,:), sample_freqs_kHz); Aw(k,:) = determine_phase(model_, k, Nfft_phase); for m=1:model_(k,2) b = round(m*model_(k,1)*Nfft_phase/(2*pi)); % map harmonic centre to DFT bin H(k,m) = exp(j*Aw(k, b+1)); end end end % update for next time Wo_left = Wo_right; voicing_left = voicing_right; left_vec = right_vec; end f = figure(1); clf; mesh(angle(H)); f = figure(2); clf; mesh(angle(H_c(:,1:max_amp))); f = figure(3); clf; mesh(abs(H - H_c(:,1:max_amp))); passes = 0; tests = 0; passes += check(eq, eq_c, 'Equaliser', 0.01); tests++; passes += check(rate_K_surface, rate_K_surface_c, 'rate_K_surface', 0.01); tests++; passes += check(mean_f, mean_c, 'mean', 0.01); tests++; passes += check(rate_K_surface_, rate_K_surface__c, 'rate_K_surface_', 0.01); tests++; passes += check(interpolated_surface_, interpolated_surface__c, 'interpolated_surface_', 0.01); tests++; passes += check(model_(:,1), model__c(:,1), 'interpolated Wo_', 0.001); tests++; passes += check(voicing_, voicing__c, 'interpolated voicing'); tests++; passes += check(model_(:,3:max_amp+2), model__c(:,3:max_amp+2), 'rate L Am surface ', 0.1); tests++; passes += check(H, H_c(:,1:max_amp), 'phase surface'); tests++; printf("passes: %d fails: %d\n", passes, tests - passes); #{ % Save to disk to check synthesis is OK with c2sim output_prefix = input_prefix; Am_out_name = sprintf("%s_am.out", output_prefix); fam = fopen(Am_out_name,"wb"); Wo_out_name = sprintf("%s_Wo.out", output_prefix); fWo = fopen(Wo_out_name,"wb"); Aw_out_name = sprintf("%s_aw.out", output_prefix); faw = fopen(Aw_out_name,"wb"); Hm_out_name = sprintf("%s_hm.out", output_prefix); fhm = fopen(Hm_out_name,"wb"); printf("Generating files for c2sim: "); for f=1:frames printf(".", f); Wo = model_(f,1); L = min([model_(f,2) max_amp-1]); Am = model_(f,3:(L+2)); Am_ = zeros(1,2*max_amp); Am_(2:L) = Am(1:L-1); fwrite(fam, Am_, "float32"); fwrite(fWo, Wo, "float32"); % Note we send opposite phase as c2sim expects phase of LPC % analysis filter, just a convention based on historical % development of Codec 2 Aw1 = zeros(1, Nfft_phase*2); Aw1(1:2:Nfft_phase*2) = cos(Aw(f,:)); Aw1(2:2:Nfft_phase*2) = -sin(Aw(f,:)); fwrite(faw, Aw1, "float32"); Hm = zeros(1, 2*2*max_amp); for m=1:L Hm(2*m+1) = real(H(f,m)); Hm(2*m+2) = imag(H(f,m)); end fwrite(fhm, Hm, "float32"); end fclose(fam); fclose(fWo); fclose(faw); fclose(fhm); v_out_name = sprintf("%s_v.txt", output_prefix); fv = fopen(v_out_name,"wt"); for f=1:length(voicing__c) fprintf(fv,"%d\n", voicing__c(f)); end fclose(fv); #} endfunction codec2-1.2.0/octave/tofdm.m000066400000000000000000000237171445607075400154470ustar00rootroot00000000000000% tofdm.m % David Rowe and Steve Sampson June 2017 % % Octave script for comparing Octave and C versions of OFDM modem % % If running from the Octave command line a good idea to clear globals before % each run: % % octave> clear; tofdm; % ------------------------------------------------------------------ Nframes = 10; sample_clock_offset_ppm = 100; foff_hz = 0.5; more off; format; ofdm_lib; autotest; ldpc global passes = 0; global fails = 0; init_cml() cml_support = 1 % --------------------------------------------------------------------- % Run Octave version % --------------------------------------------------------------------- % useful to test the modem at other Nc's, but if Nc != 17 we aren't set up for % LDPC testing so disable if getenv("NC") Nc = str2num(getenv("NC")); cml_support = 0; else Nc = 17; end printf("Nc = %d LDPC testing: %d\n", Nc, cml_support); config = ofdm_init_mode("700D"); config.Nc = Nc; states = ofdm_init(config); states.verbose = 0; ofdm_load_const; printf("Nbitsperframe: %d\n", Nbitsperframe); if cml_support Nuwtxtsymbolsperframe = (states.Nuwbits+states.Ntxtbits)/bps; S_matrix = [1, j, -j, -1]; EsNo = 10; symbol_likelihood_log = bit_likelihood_log = detected_data_log = []; % Set up LDPC code mod_order = 4; bps = 2; modulation = 'QPSK'; mapping = 'gray'; demod_type = 0; decoder_type = 0; max_iterations = 100; load HRA_112_112.txt [code_param framesize rate] = ldpc_init_user(HRA_112_112, modulation, mod_order, mapping); assert(Nbitsperframe == (code_param.coded_bits_per_frame + states.Nuwbits + states.Ntxtbits)); end tx_bits = zeros(1,Nbitsperframe); rand('seed',1); payload_data_bits = round(rand(1,(Nbitsperframe-Nuwbits-Ntxtbits)/2)); states.mean_amp = 1; % start this with something sensible otherwise LDPC decode fails if cml_support ibits = payload_data_bits; codeword = LdpcEncode(ibits, code_param.H_rows, code_param.P_matrix); tx_bits(Nuwbits+Ntxtbits+1:end) = codeword; tx_bits(1:Nuwbits+Ntxtbits) = [states.tx_uw zeros(1,Ntxtbits)]; else tx_bits = create_ldpc_test_frame(states, coded_frame=0); end % Run tx loop tx_bits_log = []; tx_log = []; for f=1:Nframes tx_bits_log = [tx_bits_log tx_bits]; tx_log = [tx_log ofdm_mod(states, tx_bits)]; end % Channel simulation ---------------------------------------------- rx_log = sample_clock_offset(tx_log, sample_clock_offset_ppm); rx_log = freq_shift(rx_log, foff_hz, Fs); % Rx --------------------------------------------------------------- % Init rx with ideal timing so we can test with timing estimation disabled Nsam = length(rx_log); prx = 1; nin = Nsamperframe+2*(M+Ncp); states.rxbuf(Nrxbuf-nin+1:Nrxbuf) = rx_log(prx:nin); prx += nin; rxbuf_log = []; rxbuf_in_log = []; rx_sym_log = []; foff_hz_log = []; timing_est_log = timing_valid_log = timing_mx_log = []; coarse_foff_est_hz_log = []; sample_point_log = []; phase_est_pilot_log = []; rx_amp_log = []; rx_np_log = []; rx_bits_log = []; snr_log = []; mean_amp_log = []; states.timing_en = 1; states.foff_est_en = 1; states.phase_est_en = 1; if states.timing_en == 0 % manually set ideal timing instant states.sample_point = Ncp; end for f=1:Nframes % insert samples at end of buffer, set to zero if no samples % available to disable phase estimation on future pilots on last % frame of simulation nin = states.nin; lnew = min(Nsam-prx+1,nin); rxbuf_in = zeros(1,nin); %printf("nin: %d prx: %d lnew: %d\n", nin, prx, lnew); if lnew rxbuf_in(1:lnew) = rx_log(prx:prx+lnew-1); end prx += lnew; [states rx_bits achannel_est_pilot_log arx_np arx_amp] = ofdm_demod(states, rxbuf_in); % log some states for comparison to C rxbuf_in_log = [rxbuf_in_log rxbuf_in]; rxbuf_log = [rxbuf_log states.rxbuf]; rx_sym_log = [rx_sym_log; states.rx_sym]; phase_est_pilot_log = [phase_est_pilot_log; angle(achannel_est_pilot_log)]; rx_amp_log = [rx_amp_log arx_amp]; foff_hz_log = [foff_hz_log; states.foff_est_hz]; timing_est_log = [timing_est_log; states.timing_est]; timing_valid_log = [timing_valid_log; states.timing_valid]; timing_mx_log = [timing_mx_log; states.timing_mx]; coarse_foff_est_hz_log = [coarse_foff_est_hz_log; states.coarse_foff_est_hz]; sample_point_log = [sample_point_log; states.sample_point]; rx_np_log = [rx_np_log arx_np]; rx_bits_log = [rx_bits_log rx_bits]; mean_amp_log = [mean_amp_log; states.mean_amp]; EsNo_estdB = esno_est_calc(arx_np); SNR_estdB = snr_from_esno(states, EsNo_estdB); snr_log = [snr_log; SNR_estdB]; % Optional testing of LDPC functions if cml_support mean_amp = states.mean_amp; %mean_amp = 1; symbol_likelihood = Demod2D(arx_np(Nuwtxtsymbolsperframe+1:end)/mean_amp, S_matrix, EsNo, arx_amp(Nuwtxtsymbolsperframe+1:end)/mean_amp); bit_likelihood = Somap(symbol_likelihood); [x_hat paritychecks] = MpDecode(-bit_likelihood(1:code_param.coded_bits_per_frame), code_param.H_rows, code_param.H_cols, max_iterations, decoder_type, 1, 1); [mx mx_ind] = max(paritychecks); detected_data = x_hat(mx_ind,:); % make sure LDPC decoding is working OK % assert(codeword == detected_data); [m n] = size(symbol_likelihood); symbol_likelihood_log = [symbol_likelihood_log; reshape(symbol_likelihood,m*n,1)]; bit_likelihood_log = [bit_likelihood_log; bit_likelihood']; detected_data_log = [detected_data_log detected_data]; end end % --------------------------------------------------------------------- % Run C version and plot Octave and C states and differences % --------------------------------------------------------------------- printf("\nRunning C version....\n"); % Override default path by: % 1. if running from octave CLI: setting path_to_tofdm = "/your/path/to/tofdm" % 2. If running from shell....." set PATH_TO_OFDM = "/your/path/to/tofdm" if exist("path_to_tofdm", "var") == 0 path_to_tofdm = "../build_linux/unittest/tofdm" end if getenv("PATH_TO_TOFDM") path_to_tofdm = getenv("PATH_TO_TOFDM") printf("setting path from env var\n"); end path_to_tofdm = sprintf("%s --nc %d", path_to_tofdm, Nc); % append Nc for variable Nc tests if cml_support == 0 path_to_tofdm = sprintf("%s --noldpc", path_to_tofdm); end system(path_to_tofdm); load tofdm_out.txt; fg = 1; f = figure(fg++); clf; plot(rx_np_log,'+'); title('Octave Scatter Diagram'); axis([-1.5 1.5 -1.5 1.5]); f = figure(fg++); clf; plot(rx_np_log_c,'+'); title('C Scatter Diagram'); axis([-1.5 1.5 -1.5 1.5]); stem_sig_and_error(fg++, 111, tx_bits_log_c, tx_bits_log - tx_bits_log_c, 'tx bits', [1 length(tx_bits_log) -1.5 1.5]) stem_sig_and_error(fg, 211, real(tx_log_c), real(tx_log - tx_log_c), 'tx re', [1 length(tx_log_c) -0.1 0.1]) stem_sig_and_error(fg++, 212, imag(tx_log_c), imag(tx_log - tx_log_c), 'tx im', [1 length(tx_log_c) -0.1 0.1]) stem_sig_and_error(fg, 211, real(rx_log_c), real(rx_log - rx_log_c), 'rx re', [1 length(rx_log_c) -0.1 0.1]) stem_sig_and_error(fg++, 212, imag(rx_log_c), imag(rx_log - rx_log_c), 'rx im', [1 length(rx_log_c) -0.1 0.1]) stem_sig_and_error(fg, 211, real(rxbuf_in_log_c), real(rxbuf_in_log - rxbuf_in_log_c), 'rxbuf in re', [1 length(rxbuf_in_log_c) -0.1 0.1]) stem_sig_and_error(fg++, 212, imag(rxbuf_in_log_c), imag(rxbuf_in_log - rxbuf_in_log_c), 'rxbuf in im', [1 length(rxbuf_in_log_c) -0.1 0.1]) stem_sig_and_error(fg, 211, real(rxbuf_log_c), real(rxbuf_log - rxbuf_log_c), 'rxbuf re', [1 length(rxbuf_log_c) -0.1 0.1]) stem_sig_and_error(fg++, 212, imag(rxbuf_log_c), imag(rxbuf_log - rxbuf_log_c), 'rxbuf im', [1 length(rxbuf_log_c) -0.1 0.1]) stem_sig_and_error(fg, 211, real(rx_sym_log_c), real(rx_sym_log - rx_sym_log_c), 'rx sym re', [1 length(rx_sym_log_c) -1.5 1.5]) stem_sig_and_error(fg++, 212, imag(rx_sym_log_c), imag(rx_sym_log - rx_sym_log_c), 'rx sym im', [1 length(rx_sym_log_c) -1.5 1.5]) % for angles pi and -pi are the same d = phase_est_pilot_log - phase_est_pilot_log_c; d = angle(exp(j*d)); stem_sig_and_error(fg, 211, phase_est_pilot_log_c, d, 'phase est pilot', [1 length(phase_est_pilot_log_c) -1.5 1.5]) stem_sig_and_error(fg++, 212, rx_amp_log_c, rx_amp_log - rx_amp_log_c, 'rx amp', [1 length(rx_amp_log_c) -1.5 1.5]) stem_sig_and_error(fg , 211, foff_hz_log_c, (foff_hz_log - foff_hz_log_c), 'foff hz', [1 length(foff_hz_log_c) -1.5 1.5]) stem_sig_and_error(fg++, 212, timing_mx_log_c, (timing_mx_log - timing_mx_log_c), 'timing mx', [1 length(timing_mx_log_c) 0 2]) stem_sig_and_error(fg, 211, timing_est_log_c, (timing_est_log - timing_est_log_c), 'timing est', [1 length(timing_est_log_c) -1.5 1.5]) stem_sig_and_error(fg++, 212, sample_point_log_c, (sample_point_log - sample_point_log_c), 'sample point', [1 length(sample_point_log_c) -1.5 1.5]) stem_sig_and_error(fg++, 111, rx_bits_log_c, rx_bits_log - rx_bits_log_c, 'rx bits', [1 length(rx_bits_log) -1.5 1.5]) % Run through checklist ----------------------------- check(states.rate_fs_pilot_samples, pilot_samples_c, 'pilot_samples'); check(tx_bits_log, tx_bits_log_c, 'tx_bits'); check(tx_log, tx_log_c, 'tx'); check(rx_log, rx_log_c, 'rx'); check(rxbuf_in_log, rxbuf_in_log_c, 'rxbuf in'); check(rxbuf_log, rxbuf_log_c, 'rxbuf'); check(rx_sym_log, rx_sym_log_c, 'rx_sym', tol=10E-3); check(phase_est_pilot_log, phase_est_pilot_log_c, 'phase_est_pilot', tol=1E-2, its_an_angle=1); check(rx_amp_log, rx_amp_log_c, 'rx_amp'); check(timing_est_log, timing_est_log_c, 'timing_est'); check(timing_valid_log, timing_valid_log_c, 'timing_valid'); check(timing_mx_log, timing_mx_log_c, 'timing_mx'); check(coarse_foff_est_hz_log, coarse_foff_est_hz_log_c, 'coarse_foff_est_hz'); check(sample_point_log, sample_point_log_c, 'sample_point'); check(foff_hz_log, foff_hz_log_c, 'foff_est_hz'); check(rx_bits_log, rx_bits_log_c, 'rx_bits'); if cml_support check(symbol_likelihood_log, symbol_likelihood_log_c, 'symbol_likelihood_log', tol=1E-2); check(bit_likelihood_log, bit_likelihood_log_c, 'bit_likelihood_log'); check(detected_data_log, detected_data_log_c, 'detected_data'); end check(mean_amp_log, mean_amp_log_c, 'mean_amp_log'); check(snr_log, snr_log_c, 'snr_log'); printf("\npasses: %d fails: %d\n", passes, fails); codec2-1.2.0/octave/tofdm_acq.m000066400000000000000000000060451445607075400162660ustar00rootroot00000000000000% tofdm_acq.m % Octave <-> C test for OFDM modem acquisition ofdm_lib; autotest; randn('seed',1); pkg load signal; more off; % generate a file of transmit samples filename = "test_datac0.raw"; ofdm_tx(filename,"datac0",1,10,"awgn","bursts",1, "txclip"); printf("\nRunning Octave version....\n"); config = ofdm_init_mode("datac0"); states = ofdm_init(config); states.verbose = 1; states.data_mode = "burst"; states.postambledetectoren = 1; states.timing_mx_thresh = 0.15; ofdm_load_const; frx=fopen(filename,"rb"); nin = states.nin; rxbufst = states.rxbufst; rx = fread(frx, nin, "short")/(states.amp_scale/2); f = 0; timing_mx_log = []; ct_est_log = []; foff_est_log = []; timing_valid_log = []; nin_log = []; while(length(rx) == nin) printf(" %2d ",f++); [timing_valid states] = ofdm_sync_search(states, rx); timing_mx_log = [timing_mx_log states.timing_mx]; ct_est_log = [ct_est_log states.ct_est]; foff_est_log = [foff_est_log states.foff_est_hz]; timing_valid_log = [timing_valid_log states.timing_valid]; nin_log = [nin_log states.nin]; % reset these to defaults, as they get modified when timing_valid asserted states.nin = nin; states.rxbufst = rxbufst; rx = fread(frx, nin, "short")/(states.amp_scale/2); printf("\n"); end fclose(frx); printf("\nRunning C version....\n"); path_to_unittest = "../build_linux/unittest"; if getenv("PATH_TO_UNITTEST") path_to_unittest = getenv("PATH_TO_UNITTEST") printf("setting path from env var to %s\n", path_to_unittest); end system(sprintf("%s/tofdm_acq %s", path_to_unittest, filename)); load tofdm_acq_out.txt; fg = 1; passes = 0; ntests = 0; tx_preamble = states.tx_preamble; stem_sig_and_error(fg, 211, real(tx_preamble_c), real(tx_preamble_c - tx_preamble), 'tx preamble re') stem_sig_and_error(fg++, 212, imag(tx_preamble_c), imag(tx_preamble_c - tx_preamble), 'tx preamble im') passes += check(tx_preamble, tx_preamble_c, 'tx preamble', 0.1); ntests++; tx_postamble = states.tx_postamble; stem_sig_and_error(fg, 211, real(tx_postamble_c), real(tx_postamble_c - tx_postamble), 'tx postamble re') stem_sig_and_error(fg++, 212, imag(tx_postamble_c), imag(tx_postamble_c - tx_postamble), 'tx postamble im') passes += check(tx_postamble, tx_postamble_c, 'tx postamble', 0.1); ntests++; stem_sig_and_error(fg, 211, real(timing_mx_log_c), real(timing_mx_log_c - timing_mx_log), 'timing mx') passes += check(timing_mx_log, timing_mx_log_c, 'timing_mx'); ntests++; stem_sig_and_error(fg++, 212, real(ct_est_log_c), real(ct_est_log_c - ct_est_log), 'ct est') passes += check(ct_est_log, ct_est_log_c, 'ct_est_mx'); ntests++; stem_sig_and_error(fg, 211, real(foff_est_log_c), real(foff_est_log_c - foff_est_log), 'foff est') passes += check(foff_est_log, foff_est_log_c, 'foff_est'); ntests++; stem_sig_and_error(fg++, 212, real(timing_valid_log_c), real(timing_valid_log_c - timing_valid_log), 'timing valid') passes += check(timing_valid_log, timing_valid_log_c, 'timing_valid'); ntests++; passes += check(nin_log, nin_log_c, 'nin'); ntests++; if passes == ntests printf("PASS\n"); else printf("FAIL\n"); end codec2-1.2.0/octave/train_120_1.txt000066400000000000000000002650001445607075400166310ustar00rootroot00000000000000 6.7484 7.6125 6.0332 5.2789 1.5239 2.2353 2.0748 0.5289 0.8748 2.5432 -2.2863 -3.1910 -0.0434 -1.9857 -3.3605 0.7069 -5.9493 -0.5672 -0.6798 -18.0977 4.0503 3.9086 2.9225 2.3773 0.6580 -0.4363 -0.0644 2.4063 1.3428 2.4542 0.5275 0.9820 -1.3277 0.6811 0.0273 -0.1838 -0.0222 -0.6478 -2.2405 -17.4152 13.3284 12.1212 10.6531 9.8214 11.0388 15.8120 19.7110 16.5488 16.1068 15.8771 7.2553 4.2486 -6.0036 -12.5476 -20.1299 -28.2803 -25.3971 -21.7907 -11.5143 -26.8590 21.4405 18.4703 17.8693 14.9679 11.2994 6.4906 4.7717 0.1959 -0.8801 1.8991 1.9793 -4.9755 -7.7852 -10.0492 -8.5295 -8.2893 -4.1203 -12.4072 -16.1660 -26.1817 4.0023 3.8279 1.2681 1.0053 0.7002 -0.3886 3.4465 -1.4055 -6.7846 -2.3345 -2.9050 -0.1344 3.4192 2.4319 10.0096 3.9279 0.6807 0.3220 -3.8325 -17.2565 29.8276 21.1543 12.7853 13.0246 5.8164 3.7469 2.4198 0.1510 -4.5449 5.2695 11.7552 -4.8954 -6.0291 -8.9780 4.9650 -10.6540 -12.5363 -21.6056 -18.2985 -23.3739 4.8610 5.1207 6.5382 9.8638 15.4754 18.8192 14.8018 10.7685 12.4401 14.0392 2.9200 -3.7283 -9.7213 -13.5526 -16.0730 -13.7571 -5.4267 -12.2552 -14.5143 -26.6193 3.0429 3.0335 4.4785 5.6483 5.3476 5.7519 3.5651 4.9007 4.9672 -0.7330 -0.6458 6.5888 5.2957 -2.0068 -6.0189 -7.2145 2.5545 -5.8358 -7.4936 -25.2263 5.9384 7.0203 10.7433 15.2477 14.8437 8.0949 3.1384 -0.0014 -0.1756 2.1601 8.1029 0.4123 -6.8062 -9.6038 -6.2302 0.4409 -8.9878 -10.1638 -4.6903 -29.4840 7.1880 6.1134 5.4021 10.5427 17.0718 14.5658 6.8632 2.2257 0.4412 3.8257 9.0388 -1.1212 -6.7639 -9.2412 -8.6575 -2.9951 -8.6659 -9.4220 -6.6046 -29.8068 9.8859 4.3889 3.6253 3.2033 4.6563 4.5967 1.8747 -0.0037 3.2114 3.8854 3.1501 0.8523 -5.2830 -8.4603 -5.1159 -3.9157 6.9800 -1.5270 -6.0421 -19.9624 7.6208 10.1888 12.8648 16.4838 14.9269 7.8064 3.5594 -2.8048 -3.6303 -10.8596 -7.1254 -2.8890 5.4295 -2.5015 -5.5359 -2.9934 -6.5980 -7.1493 -4.9387 -21.8545 12.7227 17.1387 21.7055 19.8068 12.1832 5.8645 -2.4103 -3.8445 -5.5496 -5.5608 -0.2010 5.1772 -1.4666 -6.6602 -1.2573 -3.1593 -10.7925 -14.3751 -12.0047 -27.3167 7.4465 7.8765 9.4912 12.2074 12.1631 11.4780 7.6294 2.6922 0.1566 -2.1903 -1.5699 -1.8031 2.2555 -1.5591 -7.9267 -10.3612 -5.5432 -5.5673 -10.0797 -26.7960 0.3749 1.9725 2.6868 6.3326 8.9635 12.8113 13.6523 14.0916 11.2443 1.2914 -1.9954 -2.9443 -4.6718 -4.3132 -3.4613 -8.1105 -7.9033 -7.0956 -6.5898 -26.3361 10.3072 10.6822 8.8253 4.8992 4.3627 8.8165 9.7824 3.7264 0.4265 0.6068 3.0934 2.9121 -0.6717 -5.8045 -1.7344 -9.1008 -8.8333 -6.0633 -11.2321 -25.0005 10.6992 14.8060 18.9665 22.4210 21.8710 15.6647 10.6160 12.1366 14.0479 7.0707 -3.8212 -12.1770 -16.1111 -19.3389 -18.8315 -17.5346 -7.9646 -9.4592 -17.5614 -25.5000 9.9592 11.7001 14.2704 14.1434 7.3322 4.2766 -0.0567 -2.7113 -5.7358 -6.7390 -5.9067 -0.1939 4.8177 -3.9810 -7.2528 -3.2695 -1.5685 -7.8940 -6.3355 -14.8548 17.6322 19.5153 22.4362 16.2943 10.4698 2.5066 -2.3936 -5.3770 -7.9766 -9.8004 -12.9640 -13.1015 -9.8076 -5.7565 1.8732 0.4843 3.3621 -1.0048 -4.8377 -21.5543 9.9491 17.4987 23.2236 17.3142 6.8072 6.6873 1.9421 1.1415 2.9409 6.8470 2.4633 -7.2869 -8.9792 -3.3155 -0.1918 -11.8037 -18.6298 -12.6475 -9.7620 -24.1984 9.2080 9.9971 12.5064 20.0609 20.9647 10.9574 7.4360 4.4943 4.8454 11.0636 1.8176 -7.3479 -12.5617 -15.3912 -11.5022 -5.0309 -14.7556 -15.4294 -6.4150 -24.9176 7.7917 9.3291 11.8185 15.3501 19.3235 20.6869 19.8160 14.6028 10.2893 9.9407 9.8534 3.6182 2.7695 -5.2735 -19.7962 -24.6834 -27.0316 -25.6805 -24.9149 -27.8096 0.1108 3.1261 6.8163 12.4528 16.9192 10.8153 2.6109 -0.2652 -4.8897 -6.1056 -7.3218 -4.4594 4.3004 3.7728 -2.8276 -0.0458 1.0104 -6.4884 -6.4860 -23.0456 12.9442 10.3059 3.1303 2.1611 1.4795 2.7580 6.9527 8.4487 7.1533 1.4465 -0.9113 -3.9971 -4.9090 -5.3881 -3.1011 -0.4922 -1.1819 -5.3279 -8.2374 -23.2345 25.0945 17.8572 8.9500 2.7040 0.2187 1.4115 0.7421 0.5831 -0.3096 0.9334 -2.9667 -4.0352 -2.8473 -4.8594 -4.5863 -4.4311 -2.8466 -4.4808 -5.1669 -21.9645 14.6124 19.7986 21.2066 15.7620 8.7509 3.7653 -0.5239 -3.8894 -6.8522 -8.4979 -8.1879 -5.8438 0.5485 6.7415 0.4745 2.6750 -10.3676 -15.0245 -12.2357 -22.9125 11.9959 12.9771 17.1177 21.5310 16.8892 10.8731 9.7276 8.5106 12.9569 2.2512 -6.9324 -13.2124 -16.5380 -18.0518 -16.6252 -9.7038 -6.1220 -8.7542 -6.8998 -21.9905 12.8107 14.5670 13.4289 7.1693 3.4265 3.1397 2.5457 -1.2214 -0.3887 2.4506 3.9777 0.9056 -6.9195 -7.3811 -3.2619 -0.3714 2.6266 -6.3479 -12.2319 -28.9244 2.6437 2.2575 3.8643 6.0625 10.9091 16.9554 21.5045 12.7233 9.3579 9.4439 12.8585 4.4528 -2.4283 -4.7330 -2.2502 -11.3098 -18.5273 -22.4570 -23.1304 -28.1976 10.5757 10.9392 14.0126 18.2101 14.3745 8.6896 4.9080 1.0411 2.3482 7.2221 4.5440 -5.0353 -11.2852 -13.0882 -10.9600 -3.0288 -9.5005 -10.2217 -6.6739 -27.0717 14.6172 4.5412 13.3824 9.2916 19.2818 13.6563 14.4089 10.1260 1.6926 3.9361 -0.6461 -5.1244 -9.3641 -13.9807 -11.4128 -11.8597 -0.8237 -20.3149 -12.3561 -19.0515 4.0591 4.6177 7.7662 6.8737 9.4052 10.1099 12.8714 8.1202 6.6015 7.9224 1.7548 -1.6325 -4.8379 -5.0955 -2.1947 -8.4220 -11.8799 -10.7107 -12.0066 -23.3222 -3.3385 -1.1297 3.0554 4.9769 3.8625 8.6998 8.0974 -0.5519 -1.0699 -5.4771 -4.7235 -4.8192 7.1236 -0.4895 -2.0107 0.1838 3.5180 3.2804 3.1904 -22.3779 10.9362 15.2821 18.1297 12.4682 2.6895 -1.2007 -1.7676 -6.1681 -6.0524 -5.8064 -3.1002 4.3237 2.0263 -5.5109 1.0348 -0.4760 -4.6274 1.4107 -7.5329 -26.0586 27.0648 22.2199 14.8908 7.7845 2.8689 -0.0364 0.0683 -0.1186 -1.6323 -2.4217 -4.0112 -2.3476 -5.4442 -5.8509 -6.4386 -6.2558 -6.7739 -5.9348 -7.0916 -20.5398 4.3156 -0.2499 1.1824 2.8225 8.1910 5.2798 2.2597 -3.0043 -5.0382 -5.2727 -4.0013 2.6952 8.1245 -1.1517 -1.8957 2.4603 3.0897 -1.0817 -0.1353 -18.5898 17.5894 22.9315 26.4862 22.1620 13.7474 13.5177 15.2005 16.3224 4.9523 -4.2419 -8.3503 -12.4022 -12.6698 -6.7159 -16.2122 -20.1926 -20.5969 -16.0749 -12.5173 -22.9353 6.5871 8.0443 8.4339 11.3345 17.3665 13.4455 6.9211 2.0512 -0.7348 -1.2898 1.0076 8.4862 -0.3360 -6.4714 -5.9432 -4.1602 -12.1155 -12.4645 -10.9269 -29.2355 19.0066 20.3716 18.0417 9.4806 4.8058 0.3359 -4.1091 -8.1930 -8.9962 -9.7495 -13.2924 -8.6275 -4.9424 6.0502 -6.8142 -7.1166 -3.0922 8.8016 5.6937 -17.6547 4.7309 -6.5949 4.9914 7.3489 9.0188 4.1567 7.1949 0.4917 5.0462 7.5219 1.5314 -15.3803 5.3130 -0.0983 -7.0327 -1.2671 -0.4646 -1.6442 -0.7446 -24.1190 13.7639 5.1424 5.3193 3.8945 3.9574 1.4034 0.1896 -4.0608 -2.5264 -4.9434 2.8459 2.6311 -2.7915 -3.7842 -0.3711 0.5487 5.3766 -4.3496 -3.2801 -18.9656 12.6752 14.7799 16.2157 18.6944 14.1390 7.0937 3.8206 -2.4778 -3.9766 -4.4531 -2.8711 3.2148 0.6800 -9.1748 -10.1600 -6.0557 -0.8581 -9.2828 -14.0109 -27.9924 15.0025 18.2042 22.4086 21.6195 14.2308 10.5772 6.7291 6.0463 11.7877 8.4162 -3.4731 -11.2708 -15.6923 -17.5613 -14.5235 -4.5248 -17.8954 -18.3529 -10.3105 -21.4173 2.5368 2.8687 8.7229 5.2089 8.9671 2.8847 -1.3535 -4.4273 -4.9060 -7.8939 -15.4750 -10.4797 -4.4811 6.5892 9.9939 12.9078 3.2705 1.3246 3.7883 -20.0468 8.5207 11.8364 16.4466 19.9166 16.0662 8.4129 4.3290 -0.8928 -3.7592 -5.4071 -4.2870 0.4615 9.9611 5.8190 1.7969 -7.7765 -17.3073 -19.5235 -17.7924 -26.8211 3.0595 10.0158 11.1623 5.9413 3.1988 -2.1129 0.3528 -3.0158 -2.3599 -1.3347 -1.0479 3.9189 7.8019 3.0538 -1.6139 0.8043 -4.9290 -6.9959 -7.2918 -18.6077 17.8476 19.4332 25.4614 19.1508 12.2748 9.4543 6.1101 3.6929 2.9336 5.5407 -9.2238 -17.0071 -20.8856 -22.9308 -21.1711 -15.0234 4.8627 2.2867 -2.1943 -20.6125 9.6165 8.8018 11.1694 14.6183 18.4154 13.4481 7.1580 4.1650 1.8242 0.9521 5.1356 4.0270 -5.9523 -12.0202 -14.3055 -10.5893 -2.8308 -12.2805 -13.3723 -27.9806 13.4166 16.7617 20.6572 22.0976 15.9129 10.6410 5.4061 3.1570 -0.7256 1.2303 5.9463 5.1273 3.4864 1.6884 -10.9215 -19.5567 -22.8693 -20.4758 -24.0420 -26.9379 8.0404 15.9476 21.0441 15.0820 8.2842 3.1036 -0.2419 -4.2559 -6.0751 -7.4529 -5.5847 1.5520 8.3483 3.3751 -1.0503 -10.4691 -11.9360 -5.5738 -6.8713 -25.2662 19.9950 20.2102 18.7443 12.7220 5.8592 3.8088 0.4504 -1.5876 -0.0425 -3.0873 5.5382 -0.1499 -5.8500 -7.9372 -6.2374 -0.2643 -15.0702 -16.9914 -9.3644 -20.7458 -2.6024 -7.4950 -1.2522 3.5119 3.9726 3.4991 2.4457 3.2158 -0.1830 -1.7087 -7.3996 -6.8962 -5.2421 -7.5762 -9.1433 6.6126 10.5297 10.4556 18.2991 -13.0433 0.8317 2.2343 3.6899 5.6335 5.8479 6.4330 6.0022 5.3630 2.3387 -0.5344 -1.0716 0.6509 -0.7175 -4.0229 -6.0631 -4.7546 -1.9700 -4.6226 0.0933 -15.3616 -9.3660 -6.9175 -4.9307 -3.1828 -1.6587 -1.4971 -0.1586 0.6208 0.5169 2.4709 4.6017 5.3127 4.5449 3.2690 3.7590 3.4511 3.8260 3.9369 4.8805 -13.4790 -1.1830 0.5095 1.1754 2.3109 2.2722 1.3243 1.6529 -0.1799 -0.2874 -1.2863 -2.2761 -1.5668 -1.2037 -2.4367 -3.9243 -2.1186 2.3502 1.4312 9.5827 -6.1467 9.2349 10.7650 18.1608 20.6655 13.5769 5.4902 3.0323 -1.0259 -0.5010 1.7689 10.3810 12.0253 9.1922 -4.9615 -15.0315 -19.9651 -21.4377 -17.6800 -6.4577 -27.2328 10.6391 10.7983 11.4949 16.5329 19.2664 13.6129 6.1846 2.4573 -3.1501 -7.1814 -7.9387 -2.6238 4.6419 -5.9113 -9.3510 -7.0591 -3.2275 -10.2820 -10.5308 -28.3726 18.6364 19.3874 19.5930 14.3075 9.4402 3.6045 -1.9801 -5.5352 -9.0094 -10.9308 -12.7345 -14.0779 -10.9593 -3.8674 6.3753 9.5959 -1.4018 -7.4988 -6.1435 -16.8015 9.4969 11.3591 11.5468 7.8918 4.7217 3.0266 4.2145 2.2878 1.2224 5.6903 10.6919 4.2718 0.7184 -3.7583 -6.7954 -8.0558 -7.9668 -10.2861 -12.5018 -27.7759 1.9805 4.9512 7.0160 7.8284 8.7891 8.0863 7.7994 7.9865 8.6027 13.1944 14.7771 11.0643 2.1716 -5.7171 -10.9834 -8.7615 -16.8907 -14.3039 -17.4732 -30.1175 7.4683 9.4924 11.1231 14.0490 15.3387 7.9538 5.2116 -0.0275 -3.0014 0.1050 0.6547 7.9660 -2.3476 -7.0894 -4.6113 -2.0949 -15.9720 -16.2041 -7.4758 -20.5386 4.8388 4.2032 3.5738 6.4994 10.8701 16.7006 14.8672 6.7149 3.1448 0.6167 2.5321 7.5899 1.6456 -3.0073 -4.4465 -2.3406 -11.2907 -15.6965 -17.0827 -29.9328 9.8208 5.5733 3.2835 2.3197 5.4502 9.1113 10.3794 8.6442 6.0107 6.4897 4.2548 1.1709 -4.1757 -9.6942 -10.5243 -11.8609 -10.0641 -3.4488 -2.2532 -20.4873 5.8783 5.8851 7.6595 5.2009 5.1000 1.9820 2.2615 1.4023 -1.1079 1.1247 3.7199 2.8362 -0.5182 1.4421 1.5607 -8.4521 -3.7106 -1.6008 -5.2750 -25.3888 13.8298 17.3228 17.9494 18.8765 12.6415 7.5326 5.2828 1.0300 -1.0231 -5.4994 -6.6194 -2.5155 4.6895 -3.4515 -7.2113 -4.1051 -13.7542 -14.3604 -11.8611 -28.7541 -8.8559 -3.0649 2.2249 4.9828 6.4170 6.9906 9.9342 12.0149 12.2463 14.3103 18.4345 6.3234 4.2404 -2.7341 -6.9396 -10.7644 -10.1668 -12.3674 -16.3891 -26.8371 10.9983 13.5279 16.2801 19.6892 16.9475 11.0028 3.9633 1.1799 -2.0078 -0.9850 2.7247 -0.1311 -6.6215 -8.5890 -4.3971 -11.9543 -15.4358 -13.3278 -4.8427 -28.0217 7.2013 9.1028 13.1142 19.8377 22.5360 16.6528 11.8330 10.3141 12.9885 15.8372 9.0995 8.4627 1.1838 -14.4656 -21.4397 -23.6775 -22.5547 -24.8595 -24.4974 -26.6692 -8.4073 -6.6779 -3.9580 -1.6241 -2.1470 -2.2867 -2.2534 -3.0205 -4.5931 -2.5545 -2.1350 -1.3098 1.1053 -1.1397 1.2170 6.2234 3.6093 9.8015 23.5766 -3.4260 9.6955 11.4467 15.0851 15.4765 9.8267 3.5490 -0.5777 -2.7726 -5.1878 -5.7225 -4.4558 0.4969 9.2914 5.8917 6.4235 -4.2514 -11.0149 -9.4893 -13.0444 -30.6665 2.9943 1.4307 0.8714 2.2925 2.1145 2.9148 2.4003 1.9382 1.6662 -2.3476 -2.0877 -1.9322 3.3342 1.7171 -0.9114 3.2785 1.7852 1.4651 -1.3549 -21.5695 7.7138 9.3400 11.7519 14.3217 14.9762 11.0903 9.9040 9.3599 10.4611 6.3795 -3.9927 -7.6734 -12.4888 -12.1729 -5.7999 -5.5417 -9.5690 -9.5926 -7.6846 -30.7825 4.4498 9.2290 15.0677 17.9679 11.2745 2.6730 -0.9888 -5.6255 -7.5349 -8.4589 -8.4510 -5.5027 1.7669 4.3143 -4.8629 -2.0721 4.6797 -5.0125 -4.4213 -18.4923 11.1829 12.4396 12.7925 12.6901 8.0150 3.4089 1.7847 -0.2306 -2.0077 -1.0178 2.2167 -0.4542 -8.4111 -8.9029 -8.0861 -3.9439 -6.2512 -2.2635 -2.1307 -20.8306 -0.0237 3.5900 4.5144 3.8794 5.7527 11.0182 8.9091 7.1863 7.0702 7.1782 4.7799 0.6784 -4.3508 -5.3991 -6.5953 -5.6132 -9.5378 -5.6903 -1.3834 -25.9632 -2.7117 -1.4799 1.2116 2.3262 3.7406 3.7668 1.2697 0.2086 0.7399 -1.3479 -2.2145 -3.7982 4.9747 -0.4583 -1.7465 -0.9161 7.2119 0.8965 -0.2723 -11.4012 7.6123 10.5335 16.3125 23.5319 21.6117 16.3290 18.2001 16.9715 0.9425 -7.0707 -12.7338 -16.0871 -18.4761 -17.8994 -14.8763 -4.8440 -8.9433 -6.8294 -0.8772 -23.4080 9.1763 3.0851 4.6724 8.0499 14.6517 16.8559 10.4532 11.9797 13.2732 7.6578 -1.4245 -7.0469 -11.9925 -15.0269 -14.7577 -15.9057 -2.4494 -8.2002 -4.4694 -18.5819 -0.3793 0.7119 0.4558 1.7011 3.1548 7.4097 8.6888 7.5902 9.1020 7.3493 9.7346 15.2626 6.8726 -0.7975 0.8553 -9.6815 -9.3426 -14.3122 -13.9791 -30.3963 5.2988 6.3406 1.2009 3.3308 2.0290 2.8107 1.0030 0.4513 -1.4458 3.0391 1.2595 -9.2407 1.3164 1.9175 0.7738 1.8301 0.5948 -0.9497 -2.7482 -18.8117 23.5623 25.0580 25.0568 22.4174 16.4713 14.4026 11.1159 5.0250 -1.0266 -8.5971 -10.1924 -9.6120 -11.8638 -13.7028 -4.2000 -6.0100 -12.7481 -18.5497 -22.5946 -24.0120 -5.0424 -4.2120 -3.2703 -0.4028 1.8335 3.2012 2.3768 2.0802 0.6396 0.2079 0.1418 -0.1844 2.5056 -0.2078 -1.3169 -0.2911 0.8140 1.7717 5.2809 -5.9255 7.6330 9.9835 15.1303 18.9128 13.0001 5.9224 1.3978 -3.1674 -6.4703 -8.3713 -7.7470 -5.2412 1.6661 5.3754 0.9111 2.2634 -7.6214 -11.2828 -5.6474 -26.6470 15.3965 19.4488 18.3928 11.4564 4.0261 0.4604 -4.6326 -9.8409 -11.0926 -12.7123 -13.1035 -12.3357 -8.4063 1.3638 7.8807 5.5655 3.4210 0.7205 5.4867 -21.4953 4.0267 4.8087 7.0895 9.6094 12.6372 17.6545 19.7244 17.4364 13.7517 13.9367 6.0059 -4.5448 -9.4075 -13.3403 -13.6620 -10.1856 -10.5214 -17.1512 -19.3146 -28.5537 26.5287 22.7007 21.6748 17.6005 11.9372 12.6653 5.4749 -6.1299 -8.9419 -6.9620 -5.7222 -5.6209 -8.6350 -10.0876 -8.1562 -7.7238 -5.4233 -10.0839 -13.1237 -21.9717 3.9740 4.1572 5.7242 12.4480 17.3522 11.6512 5.2405 1.2103 0.5569 2.7329 9.6369 -0.5073 -5.1263 -2.7956 -0.7621 -3.7186 -1.7764 -8.4788 -18.8985 -32.6208 6.8442 11.6517 15.0164 13.0383 3.5465 0.5949 -3.0134 -7.5262 -8.2082 -8.6101 -7.2813 -1.2345 9.2720 5.1011 6.0543 -0.9163 -4.5878 3.4588 -4.8078 -28.3926 7.8637 4.0004 -2.9380 2.0521 2.2442 -0.4633 1.8855 1.9277 -0.6295 1.3834 1.2896 1.0703 -0.4938 1.5669 0.0079 -1.5584 -2.0070 0.9263 -0.4846 -17.6435 5.8623 7.6023 7.9357 8.1933 9.8252 14.3094 18.5980 17.6310 14.1029 11.3791 8.9224 4.7903 -4.5730 -11.3683 -17.8078 -14.2065 -11.2294 -16.2936 -23.1509 -30.5225 -1.7942 -0.0063 1.9950 3.6026 3.2262 0.8396 2.3621 2.3730 0.2704 0.4107 0.3605 1.3362 -2.3048 -2.1177 -2.8566 0.0808 -2.4432 2.0828 10.0173 -17.4341 16.0587 21.3030 20.2092 12.2290 4.0091 1.0523 -3.6402 -8.1002 -8.5006 -10.1681 -9.7303 -7.7995 -1.2107 8.9891 5.5157 1.2399 -8.3907 -7.4334 -1.1958 -24.4366 15.8248 21.2415 22.3705 19.6523 12.6511 4.9800 2.0524 1.2562 -2.0002 -7.0989 -8.4866 -8.1644 -3.6111 2.9801 -6.3159 -7.3905 -2.5939 -11.1587 -18.1433 -28.0453 11.4701 14.8919 19.2495 17.1766 9.1256 4.6224 0.3569 -3.6692 -6.2969 -8.7664 -7.4764 -1.7487 3.4354 -4.0219 -5.5797 1.1971 -7.0079 -5.6899 -4.9140 -26.3546 4.0502 6.3561 7.7528 13.2425 22.1071 16.8285 10.8539 9.9555 11.6373 14.4871 1.0686 -6.0140 -8.7291 -9.9474 -5.2420 -14.0196 -19.6200 -16.4317 -13.2116 -25.1241 14.0747 12.9823 14.7396 18.3580 20.8024 21.6686 20.4893 18.2777 14.8271 4.2101 -4.6228 -5.0852 -8.9555 -9.9704 -14.4886 -22.2364 -24.8924 -24.6202 -19.9776 -25.5806 6.5756 6.5342 9.0959 14.5314 20.6452 22.1123 17.0555 14.5823 18.4626 9.7441 0.1482 -4.4759 -4.9624 -0.2271 -12.9306 -21.6336 -23.8195 -22.7039 -21.8165 -26.9179 -2.4130 -0.2375 2.8918 5.5011 6.7427 5.7418 5.0778 5.1858 4.3188 3.4462 4.3416 1.8899 2.3449 -0.9372 -1.2877 -2.8414 -4.0969 -5.4193 -7.2573 -22.9920 18.6934 11.3904 9.2311 9.3832 5.4199 3.6295 -0.1793 0.6487 -3.5589 -4.0062 -6.2031 0.6797 0.8497 -5.8255 -3.0197 -0.8407 3.4120 -4.6925 -10.2551 -24.7566 -1.1447 1.5640 1.4686 1.7604 1.7234 2.3262 4.7312 2.6246 3.8383 6.5465 3.3830 1.7225 -1.7619 -1.0275 -1.1491 1.9434 -4.9663 -2.3871 -2.8449 -18.3507 14.1023 13.5650 10.1510 8.7911 7.7313 7.6480 9.2651 8.0399 4.9244 6.1141 5.5459 -0.9256 -6.1550 -7.0836 -8.6484 -9.0926 -9.2649 -13.5303 -12.0852 -29.0925 9.8451 13.4743 16.9269 13.4623 5.8133 1.7553 -0.7487 -3.9831 -8.1249 -9.5689 -8.7611 -6.3983 -0.6612 10.9895 12.8583 0.3283 -8.6023 -10.4136 -5.9048 -22.2865 19.2227 18.1307 15.9732 13.2757 8.9377 4.0318 2.7371 2.4204 4.8079 5.9436 -1.6587 -5.6682 -8.2354 -8.6156 -5.7373 -5.9194 -13.5825 -11.1928 -9.7272 -25.1435 9.7172 12.7596 17.7880 19.5982 13.1714 6.9756 4.2961 1.3629 -0.4383 4.9630 8.7840 0.9395 -2.9094 0.8700 -9.7739 -17.6442 -19.7626 -14.0983 -10.0576 -26.5411 19.7847 26.9921 27.0885 20.9467 13.4352 6.9927 3.8926 5.5073 6.3950 3.6410 -3.5260 -9.9366 -12.2833 -15.4366 -15.2739 -13.4030 -13.6697 -14.5223 -14.0162 -22.6082 -4.7450 -2.3439 -1.2527 0.2681 2.5169 3.0271 3.2731 1.1854 -1.4898 -2.2085 0.9214 6.1154 5.0556 7.1405 5.3972 1.8235 -0.1874 -0.9732 -2.7856 -20.7382 2.7354 2.9846 4.5226 11.0075 16.9767 9.7039 5.0497 0.2367 -2.2382 -2.2319 3.3972 5.8953 -3.5572 -7.9222 -5.1006 4.0687 -6.7980 -6.9512 -1.5062 -30.2728 1.8923 1.9933 1.7272 1.4697 2.1029 2.7198 2.2271 0.4083 1.4890 2.3633 0.0136 -3.1335 -1.8351 -3.4645 -2.5082 0.1244 -0.6305 -0.2515 2.6670 -9.3744 7.3147 10.8559 16.3202 21.3322 15.5047 5.7917 2.0324 -0.5787 -3.8385 -3.1611 4.7722 6.9085 -0.8153 0.2585 0.5455 -11.9753 -19.4608 -19.4821 -11.0006 -21.3242 -4.8271 -2.3317 -0.8263 -0.6913 0.0284 2.1785 4.8530 2.4866 0.5257 1.0973 0.9581 2.0508 -0.0850 -0.3240 -2.1544 -3.6769 8.2530 1.6818 2.7619 -11.9586 28.0344 21.3292 26.7011 15.9009 17.4755 11.8357 5.0600 6.5559 -4.3031 -3.5802 -8.7494 -8.4692 -7.5683 -2.5689 -10.7488 -16.5549 -18.6071 -16.7713 -13.4451 -21.5263 11.4465 12.5754 14.6510 12.0835 5.3520 1.6789 2.3021 -2.4719 -2.0905 -0.5169 -2.1754 -2.9241 -2.7917 2.0815 1.0635 -3.6587 -4.7680 -6.8125 -8.2348 -26.7899 11.1007 8.9165 11.8079 11.0313 1.9749 -0.9229 -2.4670 -6.7769 -9.1537 -10.4373 -8.8596 -6.3617 0.2425 8.3330 2.9722 9.5504 -3.2943 -3.1680 4.4488 -18.9367 12.7055 18.2073 17.6143 9.1957 1.5762 -1.0952 -4.9687 -6.1290 -7.3791 -7.2053 -4.3066 3.6014 9.8467 10.7313 -1.8676 -11.4282 -13.9225 -8.1802 2.6837 -19.6797 0.8368 -1.7610 0.4628 2.3612 5.1160 7.7374 9.4921 4.3865 6.1712 5.6238 6.3738 5.3491 2.7348 5.4859 4.6651 -8.4273 -10.9892 -8.6750 -10.7619 -26.1822 12.9582 16.0251 19.0637 18.9347 12.6765 7.8161 3.8112 0.9397 6.1611 7.4639 -2.5194 -7.1391 -10.2242 -10.1934 -4.1747 -5.7525 -14.4868 -8.2946 -13.9643 -29.1013 29.3165 26.9707 19.9517 12.4469 7.3647 2.8794 1.4068 -2.4963 -5.4012 -4.1083 -5.2153 -6.4891 -5.9548 -6.4872 -6.6510 -6.7351 -9.9422 -8.4833 -11.8558 -20.5171 7.6646 7.8496 5.3460 3.4574 6.3183 1.1408 3.1494 5.1045 0.2373 1.0847 -0.4320 -0.3662 -0.3503 -0.5473 -8.1949 -0.9695 -1.7599 -3.3828 -3.0248 -22.3253 7.0587 8.6157 9.7452 14.4294 20.8498 17.0788 7.0614 2.4228 -0.5017 -1.0215 3.1054 5.3564 -3.4904 -7.3987 -7.4398 -7.0656 -8.8032 -12.8630 -18.8666 -28.2731 5.7670 -2.6937 9.6459 -0.7839 10.7523 2.7960 -2.6113 -3.2915 -6.2928 -7.6167 -12.6729 -5.4796 5.0447 13.7582 10.3050 4.5191 -1.3433 5.4917 -1.7375 -23.5567 -11.2311 -7.9712 -5.4028 -3.3542 -3.1975 -4.2245 -3.9952 -5.3576 -5.3493 -4.8108 -5.4962 -2.9288 2.5785 4.7736 13.8058 17.8731 9.8332 14.9500 11.0220 -11.5171 2.8142 1.3603 4.2714 4.8975 4.3374 -3.4231 3.1881 5.0714 3.9705 6.2234 3.7268 5.2790 1.3825 -7.6582 -2.9268 2.0075 -4.0570 -5.6086 1.2855 -26.1418 4.9776 6.4457 7.7463 9.3687 9.5559 9.1954 6.3666 4.9237 2.1719 1.7788 1.4634 -0.3859 -6.1409 -5.3778 -2.6336 -2.5068 -8.3667 -7.0441 -11.2867 -20.2514 10.0472 11.9967 16.4907 19.9334 16.2325 9.2915 4.3130 0.7097 -4.0959 -8.1186 -10.5064 -10.3134 -5.2102 1.0801 -1.5982 -3.8949 1.2501 -7.5248 -12.9333 -27.1495 17.0433 19.1713 22.6813 17.1064 8.7516 4.3917 -0.7236 -5.3026 -7.9288 -8.3773 -7.4784 -3.7859 -2.5186 0.0200 -1.5465 0.1954 -10.7830 -12.0301 -3.0579 -25.8283 18.6591 22.3501 23.5831 19.0252 13.9063 13.3289 9.0463 -3.2346 1.2718 1.4619 -4.3706 -7.4089 -10.7710 -11.8151 -0.8947 -8.7094 -22.3259 -8.0672 -18.5235 -26.5118 3.2886 3.8514 1.5062 4.9096 3.9001 3.8964 -0.6349 -1.5534 -1.3119 -2.3130 -1.8455 -3.5666 -2.6094 3.4411 -1.0089 -3.0556 4.5250 3.3979 1.1349 -15.9520 -5.6652 -3.8931 -1.8885 1.6299 2.3371 2.0746 2.1285 0.4372 0.0031 4.2521 5.2010 3.3227 2.8933 1.9467 2.1449 0.9405 2.1680 2.3807 -1.3113 -21.1022 21.7270 24.2953 23.2112 13.4917 7.3423 1.4843 -3.1924 -4.8355 -10.3896 -11.3960 -12.8133 -11.6304 -9.9774 -2.6034 3.7943 3.5260 -4.2988 -6.0579 0.3494 -22.0269 7.1102 6.3521 11.6650 18.7864 16.7459 8.3216 5.8454 4.3436 9.4868 7.7601 -3.1382 -10.3196 -14.1642 -15.1634 -11.6972 -1.8200 -7.1959 -8.5258 -1.8553 -22.5374 14.2212 17.8028 21.4842 24.9383 24.9854 22.3982 21.3770 20.9687 13.4315 0.0683 -9.1695 -13.1215 -13.8982 -14.9798 -18.1636 -20.5802 -22.0396 -23.0260 -22.3178 -24.3795 8.9039 9.7955 9.3225 11.7206 17.8844 21.1802 19.2262 17.3421 13.9029 7.3860 -2.6995 -8.3297 -10.1319 -8.7756 -6.0590 -8.7597 -15.4747 -24.0243 -25.5723 -26.8375 3.8554 4.2234 6.2441 12.5445 18.1461 14.0699 5.9992 2.7220 1.0526 2.1813 9.5825 3.3502 -4.3618 -5.0291 0.5610 -10.3142 -15.3449 -12.7063 -7.6401 -29.1358 -8.9085 -6.1917 -3.8341 0.0473 -0.3559 -1.0455 0.4343 0.7424 0.1788 -2.4081 -1.5815 0.7755 2.7896 -0.3538 0.5914 4.7530 5.3039 5.5717 8.4610 -4.9697 6.0177 9.1902 12.5400 17.6650 18.0833 11.1113 3.6376 -0.9348 -2.4340 -3.3221 -2.4870 5.4750 6.1443 -3.6923 -2.5169 -0.6902 -11.0083 -16.8129 -17.3554 -28.6106 12.6629 16.5188 17.0120 11.3763 2.7817 -0.7077 -5.5288 -8.1972 -9.1883 -10.5072 -9.3239 -6.2042 2.0877 8.3448 2.7802 8.4635 -5.0126 -9.0230 -5.5900 -12.7449 26.6077 25.1133 19.7421 13.7493 7.5294 4.8418 5.8235 5.9404 3.3399 4.8147 -1.6758 -4.4299 -7.1722 -6.5470 -9.6023 -9.9251 -17.0327 -19.5694 -18.7525 -22.7953 9.3391 15.4719 19.7226 13.6838 5.7655 2.9423 -0.2309 -3.0447 -5.0071 -3.6430 3.6089 8.1171 -1.0555 -2.5360 2.0952 -6.4482 -11.0547 -9.9411 -11.5931 -26.1921 6.7164 12.9088 8.1465 2.9974 -1.5306 3.7966 4.6355 0.1956 -4.4054 2.5643 -3.5126 -0.4027 0.5107 -1.6406 0.9829 -5.6846 -0.0083 -4.8894 -3.3272 -18.0535 1.8584 3.5453 10.7864 10.3313 8.8364 11.3153 12.6550 8.0839 10.2072 14.1247 0.1105 4.9955 5.9811 7.9709 7.5141 -6.0319 -21.0185 -23.4977 -32.6987 -35.0693 13.1044 15.4062 17.5958 18.0756 11.3524 4.3670 2.6428 0.8781 0.0399 6.6751 8.2361 -2.6757 -10.1776 -9.8299 -3.1506 -9.5151 -14.3971 -6.2859 -13.5883 -28.7532 0.0688 2.2921 6.5965 8.3598 8.2327 8.6486 7.1471 7.1631 4.4823 3.4067 11.3001 9.5567 0.6574 -2.5849 -6.7404 -8.6614 -8.6399 -12.0189 -13.1958 -26.0705 9.5134 11.1944 14.6379 21.3303 20.9351 12.8622 5.9234 3.0673 0.5662 2.8569 7.4992 -0.6339 -9.8527 -12.4761 -11.2573 -4.7464 -13.5940 -18.0638 -14.8928 -24.8691 5.5904 5.1588 4.7053 4.3271 5.8271 9.5093 8.4110 1.6453 -2.2667 -2.6767 -1.4248 -1.1260 2.4114 -1.8009 -4.8190 -8.2201 -2.9355 -0.2567 -0.3488 -21.7105 0.4175 1.2148 5.1829 9.3743 9.7458 5.9476 5.0377 2.5369 -2.7391 -8.8960 -11.0818 -7.0650 -7.4393 -1.4335 10.1963 9.6385 5.0133 -4.2894 -3.8725 -17.4890 8.8274 9.1037 13.6965 18.9331 20.4960 15.7102 9.1227 5.5813 1.7546 1.3849 6.9672 6.4807 5.2247 4.2668 -9.8256 -18.2374 -24.2455 -24.1902 -22.7864 -28.2649 -10.4296 -11.2348 -7.6061 -8.6646 -7.9499 -6.1250 -4.3918 -6.8877 -5.4461 -2.2579 -1.3507 2.2980 4.8244 12.7426 12.4434 14.4927 14.8125 12.9871 9.6224 -11.8790 8.8890 12.0408 17.2338 23.3492 22.1801 17.3250 16.4611 18.6109 12.0359 -2.1102 -7.5218 -11.7288 -11.4854 -7.6790 -11.7033 -21.2349 -23.6258 -19.3358 -7.8566 -23.8442 -7.7648 -7.6325 -5.9874 -5.7763 -5.5038 -4.9788 -3.5524 -3.9264 -4.7269 -2.6727 -1.6911 -0.4884 1.8633 1.5449 3.1375 9.0909 11.6855 13.4220 16.9117 -2.9544 17.5979 21.0040 20.3690 15.7264 13.3239 13.0722 13.4678 1.7577 -6.0904 -6.9925 -8.3415 -10.6335 -9.5482 -1.5234 3.9870 -6.9271 -17.4878 -18.4739 -8.9267 -25.3608 6.1805 4.1462 3.5010 2.7230 3.9708 8.1302 9.4910 3.6927 2.9790 2.0598 -0.6100 -1.6298 -2.5238 -2.5441 -3.9959 -2.7189 -3.9403 -3.9477 -4.9568 -20.0067 7.7322 4.4707 5.2320 7.8782 9.1005 5.4418 6.0577 3.7093 0.1939 -0.2785 1.1984 -2.6011 0.6595 2.7395 -0.9452 -4.5096 -8.4529 -6.4501 -6.8768 -24.2995 -6.4169 -3.8203 -3.3676 -1.3384 0.0068 -0.0917 -0.6540 -1.1092 -2.2062 -2.8976 -3.0409 -2.6706 2.9750 6.3064 7.4779 12.0806 5.7715 5.5715 0.9432 -13.5194 7.6067 9.3813 13.4849 19.9139 22.7781 18.4350 15.9140 18.9134 10.1002 -4.3291 -8.2178 -13.6741 -15.7040 -16.5313 -14.1193 -3.7115 -13.7922 -12.8183 -7.7992 -25.8309 4.7167 3.8923 5.7519 8.0369 12.8563 16.7380 15.0698 9.7568 7.4623 7.4165 7.7550 1.1797 -6.3964 -6.5897 -1.5093 -9.7231 -17.0341 -15.7607 -12.6623 -30.9568 9.6098 13.4286 18.7280 18.1791 9.8536 3.5779 1.4841 0.4639 -0.5329 2.6536 9.8742 -3.2808 -8.9269 -11.0817 -6.3122 -2.5681 -15.3236 -12.3977 -1.9946 -25.4341 3.8990 7.6431 13.4623 16.8504 10.0821 3.4259 -0.1709 -4.7791 -8.1809 -9.2214 -8.3021 -5.9798 2.0125 6.9915 1.4712 6.5493 -3.7836 -4.9571 1.3613 -28.3737 13.9079 16.7984 20.6342 24.6533 24.3507 19.3643 17.9172 18.3920 11.7020 0.0010 -10.1043 -14.9084 -18.2285 -20.4094 -21.5267 -19.7383 -13.5385 -9.5045 -16.6159 -23.1465 7.1797 11.3922 15.7490 19.3949 17.3819 10.7478 7.3006 6.1472 9.1598 11.0073 4.7816 -2.4892 -3.7349 -3.7521 -1.7971 -9.8976 -22.2914 -25.7550 -23.0236 -27.5010 5.6600 8.4600 10.4652 12.1954 14.9914 18.5645 17.0459 10.3163 4.8130 2.3220 0.5889 4.1108 1.2082 -9.3950 -13.7061 -13.1090 -10.1060 -11.3113 -21.8744 -31.2396 -1.8886 -0.7563 0.4909 4.9127 6.9239 5.1456 6.2254 6.4299 5.1768 9.1990 13.2223 5.4194 -3.0538 -4.7242 -5.1855 -3.7939 -7.3421 -6.1816 -4.3871 -25.8328 11.3455 9.9507 8.1659 6.0877 1.4526 0.9704 4.7975 4.0208 -0.5941 2.5357 1.5340 -4.3306 -1.6103 -4.4373 -0.0323 -2.6725 -2.0195 -3.5278 -6.3697 -25.2666 -0.8009 5.6194 7.0974 6.1331 7.2063 7.4038 4.5741 8.4379 4.2968 7.9137 13.0725 2.3362 0.6963 -2.4917 -4.9374 -7.2728 -8.2160 -9.6329 -14.4558 -26.9800 9.4449 12.4990 15.8206 17.3018 10.9373 5.5366 0.8716 -1.2105 -2.4770 -3.4484 1.0611 6.1591 -1.7466 -7.5929 -6.9295 -2.1338 -8.9361 -10.3674 -6.3554 -28.4344 11.5326 10.9047 16.3163 21.0845 11.9757 7.0511 0.8356 -4.9870 -6.9450 -9.2309 -9.7748 -8.2038 -2.2957 5.5139 -5.4119 -2.7410 2.4166 -7.4497 -6.0628 -24.5286 9.3064 9.3678 11.2235 13.9991 14.4345 11.1982 6.3282 1.4131 -2.6884 -7.1825 -11.0075 -12.3749 -9.2573 -6.0414 2.3206 4.6097 3.5670 -3.2208 -9.5445 -26.4507 -6.7163 -6.0323 -3.7943 0.8820 3.6629 4.3198 4.7402 4.0799 4.8854 5.8718 8.3927 9.6825 10.5717 3.8917 0.9125 -1.2807 -3.7018 -5.7570 -8.2525 -26.3582 10.2748 11.6455 16.3809 20.1490 18.2488 12.7899 10.3972 8.0106 -0.6794 -6.4024 -9.7054 -13.5667 -14.6497 -16.1902 -6.9531 0.2117 -0.7067 -1.2331 -10.6728 -27.3488 13.3782 16.3500 15.3612 8.9247 3.4890 -0.7729 -2.6106 -7.5432 -8.0129 -7.6140 -7.8535 -2.4356 6.5050 -4.5887 -3.2816 5.8982 -1.3889 0.3111 0.3606 -24.4762 10.0811 14.1057 20.3635 24.0314 20.3690 17.0236 16.4460 19.2548 6.0111 -3.4365 -9.9143 -13.0905 -15.0150 -11.4726 -6.6405 -10.0976 -14.6658 -19.9459 -19.4800 -23.9274 -7.1817 -5.5458 -1.6137 0.8007 1.9284 2.5116 0.3432 3.3359 0.2833 -1.3305 -2.4960 -1.6366 -2.6968 3.6695 6.8225 4.4926 6.1940 6.7541 2.2072 -16.8418 9.6326 11.3478 14.3982 20.7665 19.7772 12.3406 6.1933 1.0438 -1.1521 -1.5860 1.8440 7.8419 -1.5328 -9.8703 -10.1973 -2.2440 -12.0413 -18.5948 -20.6014 -27.3660 1.5056 1.6880 4.2152 9.5291 17.0514 16.2096 8.5432 4.2111 4.4898 11.7231 5.5770 -4.8191 -7.5020 -5.9733 -0.7664 -10.2798 -14.8967 -9.8638 -3.1062 -27.5357 15.2115 17.9992 21.5012 24.9136 19.1760 15.8798 16.4094 17.8040 5.9025 -3.3769 -10.4408 -15.3738 -18.5882 -19.7882 -17.7007 -14.2386 -13.9566 -13.8247 -5.8162 -21.6922 12.1911 17.2966 17.4896 10.6943 3.5061 -0.1018 -2.5405 -6.3143 -7.6095 -8.5828 -7.4501 -2.2275 8.4004 0.0230 -1.6734 2.8727 -8.2243 -7.2548 -0.5950 -19.8998 -0.4264 0.0708 1.9133 6.0904 12.7810 17.8469 12.0313 4.9753 4.2790 6.9401 10.3052 0.2003 -6.7328 -10.0168 -10.0292 -2.7869 -5.6536 -9.3242 -6.0818 -26.3818 7.8387 12.9821 20.1116 21.8527 15.0291 10.4182 9.9996 12.5177 11.6815 -0.1048 -5.5624 -6.4577 -2.0918 -6.3498 -17.7376 -20.9015 -21.1073 -13.6752 -3.7477 -24.6953 18.0184 21.7405 20.2020 16.4376 12.3859 12.2417 12.1975 6.3324 -4.4281 -11.4734 -5.9353 -8.8421 -10.3280 -4.7973 3.4477 1.4017 -15.9637 -17.1346 -16.9459 -28.5571 8.9922 8.4069 10.2569 10.5303 10.1285 4.9362 1.8698 -0.0537 -5.3906 -5.9983 -4.6797 1.6021 -1.9697 -5.3874 -2.3336 -0.9265 -2.7071 -2.3523 -3.3933 -21.5307 0.1643 -2.2100 -0.9888 -3.4801 -0.5275 -1.4680 -0.5683 -1.5514 -0.4216 0.5034 -0.8521 -2.7835 0.5014 -1.2182 -0.7495 5.2974 5.8643 8.2766 6.0259 -9.8143 7.6720 8.0788 9.1059 14.2217 21.6149 24.6272 15.4198 12.7487 14.5686 14.3925 0.6524 -7.7122 -12.3140 -13.4374 -8.0366 -14.9387 -21.7305 -22.0625 -19.3233 -23.5474 2.2815 1.7578 -0.6674 1.7705 0.4755 0.4978 -1.3799 -2.1107 -2.6075 -3.5652 -2.8715 -6.8295 -1.7109 2.8096 -0.7449 2.5543 8.6739 -0.5359 6.8846 -4.6821 18.2027 16.9209 12.1191 7.6862 3.0545 0.5751 -1.6156 -1.2378 -3.1289 -4.2377 -5.6464 -5.0994 -5.0515 -1.2417 1.1802 1.1938 0.3821 -6.3202 -6.4152 -21.3203 3.5023 4.9407 6.5095 8.9494 13.2647 15.1725 11.9431 6.2423 1.1652 -1.6313 -2.9929 -1.9072 3.4422 2.8306 -3.2309 -5.3351 -2.3238 -10.7536 -17.8375 -31.9502 4.7778 10.3180 13.9538 16.0868 9.1380 2.9991 -0.6627 -4.2067 -5.6625 -4.9839 -1.2287 7.7334 9.3244 7.4153 -4.1228 -11.6166 -8.7569 -5.6012 -5.8002 -29.1044 -3.8341 -1.3838 -0.9472 -0.4209 1.7906 4.2155 2.2324 4.3091 1.1357 8.4456 9.7973 6.3722 2.6068 0.3293 0.1016 -0.3203 -4.2313 -3.6986 -3.9405 -22.5593 7.9933 10.9520 14.6109 19.7867 15.1983 6.5296 4.9056 0.7415 -0.5271 -0.1092 6.9036 12.3792 7.7901 2.0866 -9.1117 -12.3605 -5.7793 -23.1437 -29.0076 -29.8384 25.8990 23.1895 19.6721 15.4616 9.3167 5.4831 6.1546 7.4477 4.2279 -1.3757 -8.0309 -11.4646 -10.4795 -7.5543 -4.2227 -6.0439 -16.4547 -16.3865 -13.0397 -21.7998 5.9702 6.6918 8.5551 14.7594 15.5278 10.2403 6.0423 1.7099 -0.1415 0.4245 5.8906 10.2752 2.9571 1.0304 -7.5844 -15.4930 -16.0321 -8.3602 -12.0263 -30.4370 0.2377 1.2490 0.9118 1.8024 3.7548 4.8963 5.1515 4.2684 0.3786 0.5058 0.4839 -0.9914 1.4073 1.1727 -2.9065 -4.4307 -6.9456 -0.2385 0.3969 -11.1044 4.9017 3.2442 -1.2482 -1.2472 -2.0773 -5.4371 0.3708 4.1825 12.1289 1.2950 -2.3136 -3.1723 -0.4429 -1.6571 -9.7455 6.5626 13.4075 7.0987 -2.0865 -23.7642 26.5958 8.4474 11.9082 11.6976 1.4010 -0.2500 3.9848 3.6429 -6.0468 2.5341 -5.2699 -11.5085 3.8103 -6.3108 -2.4679 2.1530 -6.3876 -7.1780 -8.4060 -22.3496 2.2962 0.8041 0.8352 6.6150 14.5461 15.0856 3.2964 0.5549 -1.6557 -2.0236 2.8955 7.5016 -1.2031 -5.6899 -4.7833 1.2942 -7.3403 -8.3771 -4.0417 -20.6100 -3.1520 -0.4969 6.6485 7.8768 5.5605 6.5283 5.6337 4.1543 13.9779 2.7762 6.1398 -3.7070 -1.7982 -2.8944 -6.0041 -6.5265 -11.4873 -1.5122 6.0580 -27.7754 -8.0020 -4.6131 -0.7821 3.3160 4.4465 4.7754 2.8155 1.0612 4.8060 6.0492 5.9390 3.1446 2.8568 -0.6657 -2.6961 -2.1500 -0.9756 -0.2816 -1.9847 -17.0594 12.4378 17.8157 22.2857 21.4926 15.3987 11.6565 8.4610 -5.9608 -14.7466 -15.8101 -21.8850 -17.3295 -13.0545 -3.3503 5.7314 1.5346 1.1396 -7.5940 -1.8366 -16.3862 0.8964 0.1937 0.1104 1.6479 5.6517 12.1890 10.2771 4.4234 1.0502 -0.5311 1.2594 6.8796 5.2931 -3.9156 -6.0500 -0.9098 -4.2858 -6.9837 -7.0958 -20.1002 19.8439 13.4280 9.6622 10.6650 8.0950 5.5066 1.7572 -1.0429 -0.8012 -2.8142 -0.4934 1.3117 0.5243 -6.1730 -8.1290 -6.3324 -1.5063 -10.0417 -9.1390 -24.3207 -2.7279 -1.7097 -1.1534 1.6639 5.7537 6.7942 10.6044 12.5105 10.6069 10.0936 6.6639 5.7680 -0.0784 -3.9348 -2.0808 -2.5423 -7.7730 -12.2311 -11.4054 -24.8224 10.1275 12.1619 16.2723 20.8127 20.9740 14.8019 10.1842 6.5306 4.4543 7.4531 12.2713 6.9620 6.8204 -5.0668 -18.1362 -24.0479 -25.9037 -25.4208 -24.3890 -26.8618 -9.9466 -6.5695 -9.8093 -1.7391 0.0580 3.2073 7.0375 2.3619 -1.1764 -5.8692 0.3050 -4.2033 11.2777 -0.3904 7.8268 9.8649 4.7504 6.9825 7.6743 -21.6424 14.0137 16.9699 19.0697 15.0058 7.0268 5.9083 2.9474 2.1595 3.8159 7.2602 11.3975 7.5965 1.6600 -6.7074 -13.8401 -15.7435 -16.6488 -16.4066 -16.4466 -29.0384 6.2399 3.2858 -0.2213 -1.4923 1.3132 3.9330 3.5221 2.8631 1.3615 -0.0790 -1.0125 -1.0737 -0.3033 -0.8480 -0.4749 -1.1495 0.1031 -0.2090 -1.3002 -14.4580 14.6593 20.5101 23.6344 20.8409 12.5620 6.6891 3.7103 -0.8534 -3.6042 -5.9363 -7.0110 -3.7764 1.6775 -5.6072 -12.2281 -10.8044 -4.3275 -11.1148 -14.7836 -24.2367 17.5445 22.4817 15.1353 12.5880 5.1049 1.9643 5.3928 -3.5987 -0.4750 11.7373 12.9388 -3.8264 -3.5752 -8.3127 9.4226 -10.0441 -20.2747 -19.0638 -21.8010 -23.3385 11.5639 14.1176 19.1780 24.7909 18.2344 11.0457 8.2594 6.6617 7.5852 14.1840 12.1883 7.8148 -0.4947 -16.4472 -21.5615 -22.7378 -21.8493 -21.9703 -24.9810 -25.5820 7.3833 6.5793 5.7205 10.2722 16.6567 15.1599 9.5922 5.5668 5.0234 9.3817 5.3741 -5.1082 -9.8091 -12.3432 -12.5495 -6.2366 -5.9929 -8.3697 -6.8581 -29.4426 0.3726 -5.6285 -3.2253 2.1557 3.8332 12.1538 14.6059 12.3634 15.7294 17.0679 4.8054 -1.6834 -7.5585 -11.9417 -12.8749 -9.7037 -1.2933 -5.8852 -6.0304 -17.2623 12.4589 17.5375 23.1698 18.7129 9.0574 6.8369 3.3366 -0.7668 -3.5028 -5.8079 -2.0422 3.5413 -5.4920 -15.4559 -14.9601 -7.1860 -2.1139 -10.3945 -4.5301 -22.3991 7.7831 5.9803 3.3957 1.1363 0.6624 -0.3876 -1.2270 0.5350 0.3563 5.2276 9.1991 8.9238 2.6320 -1.9335 -4.2120 -2.5342 -1.0999 -4.9168 -4.9485 -24.5720 12.7865 11.7808 12.0132 12.7418 11.7725 11.2618 10.9064 7.0094 3.3808 -2.3233 -4.5714 -6.7413 -8.0255 -8.7048 -10.9950 -7.0616 -9.3710 -7.6597 -4.9100 -23.2897 7.4583 10.3954 16.3813 20.3810 16.5656 9.1371 4.5296 4.0559 6.8658 9.8043 0.1187 -6.6202 -8.4161 -2.4957 -9.4787 -16.3418 -17.6122 -13.1639 -7.5007 -24.0638 10.5778 12.5102 15.4500 16.2510 14.1076 12.4513 11.9259 10.4537 6.3771 1.6824 -3.8825 -5.5239 -8.8633 -8.0708 -4.6460 -3.2386 -13.9943 -17.4761 -15.8823 -30.2093 16.5450 21.4563 20.0130 10.5420 0.7521 -0.1817 -5.7313 -0.2690 -4.1817 -0.5968 6.2079 4.1626 -0.4622 5.1095 -10.2058 -16.0783 -19.9597 -11.6630 4.3789 -19.8380 0.6538 1.9228 2.2930 5.2351 12.5744 11.0394 7.4850 0.8228 -3.4564 -5.0324 -2.9456 4.4755 9.6050 1.6136 0.0025 -0.9954 -6.7769 -7.8860 -2.9330 -27.6973 14.1315 17.7109 22.9482 25.5022 19.8506 12.4355 10.8121 14.0608 12.2635 -2.6541 -11.3457 -15.5204 -18.0730 -18.7390 -15.7720 -7.2576 -9.9721 -9.7355 -17.1060 -23.5400 -5.7314 -4.0590 1.0581 0.9805 1.3616 2.7093 6.3692 11.6381 12.0180 9.1818 6.8001 1.9409 3.0785 -2.5335 -5.7990 -0.6774 0.8325 -4.7436 -7.1073 -27.3175 -1.0640 0.7851 2.7160 6.1021 12.1198 15.4431 10.3026 4.0089 1.9648 -0.0384 2.4993 9.2599 1.9572 -4.2838 -3.1953 -1.1928 -7.8283 -8.5999 -10.0789 -30.8773 -5.6296 -4.3307 -2.3209 -0.8933 0.2894 -1.9304 -2.0575 -2.7780 -6.2185 -5.9192 -6.6197 -5.5076 1.7000 -2.2417 6.7340 9.7221 5.4135 15.4230 16.2356 -9.0706 21.8983 23.2393 21.5176 17.3026 15.6381 10.7095 -4.6739 -9.4131 -7.3736 -9.6360 -10.3893 -7.6173 -3.6940 2.4229 12.3234 -14.8401 -14.2133 -12.8790 -4.4302 -25.8921 11.8056 15.6560 20.2939 16.8416 9.1858 2.5617 2.6711 -1.0207 -1.4500 -0.2437 6.6714 6.5193 -0.4136 -1.1308 -3.7531 -13.8441 -14.3531 -10.4897 -18.0817 -27.4259 55.7273 39.9360 26.2526 15.0127 6.4718 0.7391 -2.3157 -3.1939 -2.9475 -3.3569 -5.3235 -7.9446 -10.6626 -13.1662 -14.2100 -14.4691 -14.4121 -13.8376 -15.6433 -22.6564 3.7665 2.9173 4.2496 1.8470 7.9023 14.8241 11.0448 3.4540 2.7173 -3.8368 2.5626 4.5604 2.9217 -9.5401 -8.3622 -8.8234 -1.4224 -0.0449 -2.7094 -28.0285 -9.3983 -8.0419 -4.4832 1.9754 -0.3749 4.6985 6.4445 3.4462 1.2139 4.1530 -6.0488 0.4383 7.0647 3.8491 2.7818 -2.6890 2.0052 6.3893 4.3086 -17.7324 10.6303 13.7716 17.1718 20.1678 12.2486 3.3600 2.4058 -2.5934 -4.8765 -6.0115 -4.6562 -0.7932 8.0003 -2.2840 -3.8243 0.1863 -9.1648 -14.9839 -14.0940 -24.6607 16.6586 21.6444 20.8223 12.8954 8.1955 4.1214 1.5648 -2.8573 -5.5724 -6.5555 -5.8004 -2.3591 4.8330 -0.2831 0.7092 -9.8961 -15.4807 -12.0228 -6.1807 -24.4365 6.2715 7.1856 9.0377 12.3924 19.0793 22.2584 18.7678 12.6682 9.6569 13.2645 2.9549 -2.9501 -4.4734 -4.2440 -12.7065 -19.5653 -21.3156 -21.7041 -19.8037 -26.7746 6.6118 7.9766 9.5899 16.7112 22.8331 15.9736 8.1328 4.9522 3.0471 7.2666 11.8402 -1.4154 -4.2808 -5.2523 -8.9476 -17.0691 -18.3281 -12.6216 -21.0003 -26.0198 17.3127 17.4868 17.7344 12.4834 5.8856 4.6009 1.0730 -2.7678 -2.0723 -0.4628 -3.7999 -5.8370 -8.6148 -7.6108 -6.5104 -2.5688 -1.6184 -6.1466 -7.5013 -21.0659 3.4054 5.0769 7.0766 9.8006 20.0250 22.5645 11.5478 6.2329 4.4723 6.4844 10.6573 0.2331 -6.2477 -11.0870 -10.3507 -4.2484 -15.1989 -19.0756 -16.4193 -24.9492 4.7627 -2.1833 -2.2828 -3.7716 2.8453 7.5100 11.3439 6.1880 0.3611 -1.2837 -10.2990 -7.9318 -4.0985 1.3582 6.4088 6.3304 9.4372 -0.3781 -7.0962 -17.2205 0.0639 1.7461 3.2578 7.1373 14.2936 21.0383 16.8137 10.1108 14.3040 14.1399 0.3676 -6.3231 -10.5295 -12.7919 -9.1838 -2.4821 -12.1068 -13.6518 -9.1740 -27.0298 6.2012 6.2177 8.6617 15.7008 20.0807 16.3263 9.7644 7.6670 11.6809 8.6315 -2.6559 -7.4948 -10.0457 -10.1131 -6.9875 -12.9972 -15.7760 -10.0148 -6.4425 -28.4048 8.4071 5.8192 3.5662 1.9627 2.4472 1.8597 -0.7370 2.3814 0.1779 1.4958 2.9385 -6.0143 -2.3152 0.3049 -1.7145 0.7158 -1.3399 -5.1439 2.0438 -16.8555 7.4409 3.3788 6.5115 14.5248 13.0646 4.0268 -1.1894 -5.0999 -7.6910 -8.4282 -7.9356 -3.3516 6.9774 0.9806 -1.3988 5.5785 -3.1694 -5.2282 1.6484 -20.6401 11.6728 5.2904 7.2713 8.1521 8.6202 4.8390 1.9077 -2.7604 -4.5028 -8.9428 -12.4662 -11.0383 -4.7642 4.2903 3.3702 1.0547 5.8752 0.7203 -0.1952 -18.3942 1.7662 2.1132 0.6823 0.5069 -0.7694 -0.5730 -0.6749 0.4539 -2.3850 -0.8937 3.2905 1.9366 4.8907 8.8910 3.4773 1.6832 -0.3850 -1.0325 -5.4486 -17.5299 11.1327 8.1369 5.9398 7.2387 9.0755 13.7563 15.6715 10.9671 4.3603 6.5521 8.2784 8.2998 -3.5109 -8.8874 -13.5723 -11.9565 -11.2912 -14.9059 -15.3573 -29.9274 17.2359 18.8517 18.1626 16.5245 13.3466 10.8703 8.4673 4.7337 2.6350 0.0183 1.1954 4.7388 -2.9359 -6.0731 -7.4347 -16.3769 -19.9350 -20.0072 -15.2078 -28.8095 15.9881 16.1253 11.9372 8.7157 5.3883 4.3873 5.5095 5.6589 0.5361 -1.1208 -4.8170 -4.8077 -4.2337 -3.8897 -5.7866 -5.1486 -6.6937 -4.6271 -8.1104 -25.0113 10.5287 10.4645 11.0189 12.4921 10.2092 2.1803 0.6775 -1.9607 -7.8737 -8.5232 -10.8456 -10.0601 -9.5234 -5.7091 4.1283 1.9979 4.9082 2.3842 -1.6831 -14.8109 6.8712 7.1195 7.8478 9.0102 7.5469 4.9121 6.0618 3.0705 0.6628 1.7728 2.7140 6.3541 3.1029 -4.2377 -6.3687 -2.2545 -6.3865 -11.4164 -9.6711 -26.7119 16.6601 22.0460 20.3084 13.4923 8.0021 8.7024 10.1260 10.4026 4.1888 -3.7328 -6.1710 -10.8693 -16.0494 -7.8483 0.2833 3.3381 -13.0116 -16.9474 -14.2501 -28.6704 -1.6472 -1.5329 -0.7265 -0.8590 1.5500 3.3445 6.0600 5.7678 2.9402 4.2316 1.8384 -2.4116 1.7488 -1.1846 0.2843 -0.4495 1.5215 -2.2191 -1.2847 -16.9723 5.4499 9.2168 13.6525 18.6245 21.2266 16.3225 10.2029 13.7648 16.3433 7.8345 -0.8506 -3.0654 0.8282 -4.7895 -14.3191 -13.6263 -16.5382 -25.7242 -26.3799 -28.1733 5.4928 7.2730 11.4735 16.9546 13.9651 4.9178 1.4991 -1.5005 -3.3689 -4.2367 1.4622 8.4912 0.6337 -0.2593 0.3732 -7.8143 -10.1871 -7.5615 -7.0778 -30.5301 6.6781 5.8903 6.7632 9.1810 8.8397 9.7239 8.7155 7.7970 6.3227 3.4228 0.2514 0.1110 -1.6716 -5.4364 -5.9387 -8.2352 -7.5149 -7.0855 -8.8552 -28.9591 11.8209 17.4970 19.5821 14.6674 8.7810 10.5929 17.1599 11.1304 -1.5934 -2.4291 -7.1040 -7.2023 -9.3009 -11.7782 -8.5498 -11.3872 -9.7560 -0.1211 -12.0128 -29.9970 10.1575 12.1948 14.9933 16.4447 14.1842 8.2787 4.1829 1.5996 -0.4007 2.6686 4.5920 3.8070 -0.5362 -2.8498 -6.0317 -8.0974 -11.2561 -15.9690 -16.7096 -31.2528 17.3728 16.5602 12.1580 2.2953 -0.7338 -2.2088 -3.0060 -3.4950 -5.7703 -1.8968 -4.1417 -2.2550 -0.4691 -0.6536 -2.4783 -1.3584 1.1130 -1.5486 -2.1800 -17.3041 10.9509 14.6912 20.9171 20.7445 13.3882 9.0276 8.4810 10.4480 11.1634 -1.3107 -8.8976 -12.4550 -14.1419 -12.2168 -8.1653 -9.1840 -14.6536 -10.7798 -3.3490 -24.6582 -4.2511 -4.3180 -6.4235 -4.0719 -2.3887 -3.1485 -4.2032 -3.5194 -7.5010 -5.4107 -2.3368 0.6165 -2.5480 -6.5746 5.7100 1.8165 14.8553 24.3830 15.8024 -6.4884 6.8815 10.8626 15.3667 14.4704 2.5878 0.6962 -3.7687 -7.2033 -9.3334 -10.5308 -9.6190 -8.2135 -3.3921 8.1225 8.7748 9.4979 -0.1825 -3.9609 2.5378 -23.5939 10.7457 13.4613 16.3838 18.1633 11.9764 6.2322 2.2046 -1.6815 -5.4025 -5.3261 -1.9194 5.7850 7.0183 8.8506 -7.0398 -15.8090 -17.0181 -9.4482 -9.5562 -27.6203 4.4895 6.7459 11.3127 18.7251 18.1351 6.5502 1.1677 -1.0341 -3.9953 -2.3382 3.5745 11.8555 2.9192 6.0596 -4.8984 -13.0118 -16.2470 -15.0252 -10.6982 -24.2871 10.1449 10.3471 14.7490 16.1718 16.9528 11.3815 6.8749 1.4265 -2.7864 -6.1956 -8.0139 -7.8556 -2.8591 4.0596 5.4548 3.3633 -10.2166 -16.2406 -18.8135 -27.9450 9.5266 9.8619 11.6564 16.1435 22.5856 19.0228 9.5649 5.1013 3.9082 6.9523 9.4453 -4.8784 -10.6008 -16.0258 -16.6123 -14.7740 -6.6639 -13.8342 -16.3927 -23.9867 -2.8166 -0.2578 2.8925 4.4555 5.6756 4.6914 3.4417 3.4041 1.8890 1.8575 -0.5242 1.9867 0.9536 -0.9744 -1.4010 -2.1961 -1.2827 -2.3186 -2.1481 -17.3281 6.5757 10.4876 15.8653 20.5177 18.3749 8.4114 4.7411 0.5009 -2.9659 -4.1461 -4.5681 -0.6566 5.8038 -2.3737 -8.5532 -6.5787 -2.8561 -13.7548 -17.8769 -26.9485 7.1295 8.3469 8.9916 14.7649 20.5000 15.5149 7.3359 0.6792 -1.5195 -5.0373 0.9468 7.0372 -4.0339 -9.7787 -8.9444 -0.8558 -12.0386 -13.0157 -7.1764 -28.8465 -6.3643 -3.5600 -0.9853 1.3808 3.5164 4.4752 4.2783 4.1699 0.4058 -0.8097 -0.9913 3.1386 9.3653 -1.1057 -1.2662 0.7587 1.7985 -2.7481 1.1071 -16.5641 10.8441 6.1056 4.5464 11.5523 11.5304 4.8593 1.2036 0.6177 -6.5224 -11.5032 -13.3278 -7.1852 -1.6717 9.2735 6.7578 -0.9050 -7.2789 -6.0827 3.0089 -15.8228 2.4300 2.4475 8.1825 8.1925 2.2974 10.8311 15.5690 1.4027 0.3290 -0.4366 6.3648 1.0487 -0.9166 -8.1367 -8.1915 -9.5690 -3.4184 0.0616 -4.9205 -23.5675 18.5545 22.2390 21.2685 17.0100 9.6982 4.7320 4.3296 7.5541 8.1889 7.8498 0.4258 -3.7349 -6.3446 -8.3581 -11.0931 -16.2715 -16.4055 -15.8123 -17.4410 -26.3892 5.3049 3.9686 5.5462 12.1792 19.9309 17.0320 8.3644 7.8784 10.6383 15.3943 3.6647 -0.1421 3.0499 -3.2605 -15.9284 -20.0685 -19.5084 -15.1548 -11.4151 -27.4740 -4.1173 -2.8993 -1.1226 2.7523 4.1168 4.2377 1.6192 1.4859 2.7141 0.4810 0.9555 -0.9423 1.2205 0.5970 0.3948 0.4670 2.1347 1.5199 1.6806 -17.2954 15.7137 20.9924 24.3419 24.5468 20.7453 18.1011 19.1224 15.9122 12.9399 8.1629 -8.2323 -12.3399 -17.0242 -22.3729 -23.1787 -23.2286 -17.6989 -10.8077 -20.3082 -25.3873 -1.2634 1.8562 5.1481 8.6050 8.7868 9.5351 6.6634 3.8160 -0.1296 -4.6560 -0.5036 -0.2003 1.6621 -1.6607 -2.8913 -4.8208 0.3233 -5.1066 -6.1044 -19.0592 10.6986 11.8307 11.5659 12.4490 11.1880 6.9008 2.6629 3.0301 3.4569 5.3227 2.5092 -1.0853 -3.8118 -7.0840 -4.9747 -7.3629 -11.0099 -5.9887 -11.0008 -29.2965 13.6712 17.1821 19.2431 13.3261 5.9589 0.4984 0.3670 -2.3834 -3.2315 -2.1198 4.8356 0.4745 -8.1763 -11.1278 -9.8688 -0.1733 -8.1227 -9.3563 -5.3546 -15.6426 -5.7735 -2.5076 -1.5044 -1.1663 0.0004 2.3285 2.2748 3.5509 0.5101 -3.3403 0.8431 1.7502 3.2945 -0.4888 1.3903 4.0779 1.6571 2.3564 6.2297 -15.4829 9.1796 11.0931 14.7746 19.7918 17.0503 10.0451 7.8355 5.3063 5.9805 11.7545 10.2992 6.2216 2.6489 -6.8542 -15.2068 -16.6927 -14.0990 -23.4163 -26.3767 -29.3354 4.4691 6.3690 7.7808 12.8470 20.5705 17.7665 9.4381 6.2778 2.4431 5.0549 9.9596 3.2883 -2.2059 2.0400 -4.0438 -15.0151 -19.7303 -18.2469 -20.2388 -28.8235 25.3208 24.3974 22.6154 19.5733 14.8131 10.5701 9.4361 4.3748 -1.5593 -4.3511 -14.7283 -17.6258 -0.9520 -8.5196 -7.3624 -3.2510 -9.9332 -17.3271 -21.4343 -24.0570 22.3042 16.1278 12.0077 14.7975 10.7206 8.3648 8.0610 10.1267 7.5498 1.8723 -3.9201 -8.2481 -10.1623 -11.3760 -12.7367 -5.0050 -3.3744 -11.9178 -17.4700 -27.7220 4.0018 3.5852 3.3315 5.3461 4.3656 2.8461 -0.0206 -2.5696 0.1895 5.1002 3.3534 0.2158 1.3297 -0.9671 -0.5937 -1.9855 -1.7054 -1.7064 -4.2453 -19.8713 -0.1820 0.3377 2.3741 5.1705 4.8793 2.2995 4.3309 2.2662 0.4173 -0.8843 6.0098 9.0178 2.9640 -0.8977 -1.5385 -6.1656 -4.1289 -4.7989 -1.1105 -20.3607 7.6526 7.4466 4.8852 0.6442 1.5298 0.3141 2.6136 0.1768 0.3184 1.5717 0.2364 -0.4716 -4.0283 -1.7854 1.1771 -1.1242 0.5833 -0.2901 -4.6526 -16.7979 19.3739 25.1966 25.2676 19.4367 10.1976 2.4144 -1.1928 -4.0638 -8.7478 -10.5230 -11.0799 -12.5634 -10.0392 -5.3666 3.7592 3.3440 0.1212 -8.8586 -13.7562 -22.9202 9.6043 10.5410 12.3377 19.7574 26.3167 19.8022 16.1636 16.4176 17.5852 2.8061 -5.6826 -11.1198 -15.0897 -15.5002 -11.1047 -14.2676 -20.4525 -20.5783 -15.3843 -22.1521 12.9015 20.6704 27.9257 24.9274 19.2594 24.2150 19.1475 0.5334 -3.3152 -12.4822 -15.0498 -16.9033 -19.2802 -17.1972 -9.8015 -9.8416 -13.7988 -8.2071 -2.2124 -21.4912 14.4389 13.4012 16.1103 14.9288 9.7959 11.0171 12.0893 -1.4171 -9.8704 -8.5713 -15.4225 -18.6377 -16.5003 -13.9403 1.0172 8.7826 2.1557 -0.7217 -0.1613 -18.4945 3.2298 2.2245 4.4788 6.2407 6.6193 4.0854 3.5648 2.2977 2.4361 0.5689 -4.6553 -1.2701 -2.8888 -2.1474 -1.0212 -1.5878 -0.7381 0.5436 -4.6923 -17.2887 12.1886 11.0008 17.9358 24.3010 22.2969 15.0778 12.8771 17.0838 11.2261 -0.0847 -7.9648 -13.0993 -17.1559 -19.7583 -18.6302 -14.9903 -5.4184 -14.9564 -12.1370 -19.7926 18.1628 19.7982 21.7942 23.1496 22.2974 18.3029 13.8973 12.5987 14.0955 8.3018 -1.2018 -2.7097 -5.1243 -15.5625 -20.9814 -25.9011 -25.5502 -25.1062 -24.3739 -25.8874 5.1200 2.6682 2.7787 5.1220 7.7683 7.6609 0.3239 -0.5597 -2.1976 -4.2025 -2.3433 5.4581 3.3195 -4.6819 -7.7339 -5.9433 6.7709 -3.0093 -0.4617 -15.8570 3.1474 3.9068 4.6743 6.1980 3.9172 5.5703 3.7560 5.3815 6.4792 7.4263 4.0188 -0.9053 -2.9276 -4.2640 -3.8751 -2.5664 -3.8921 -5.7279 -7.3914 -22.9261 7.7606 7.9634 9.2590 13.4058 20.9130 19.2571 11.4285 9.1142 10.4227 12.6605 1.3940 -7.8667 -12.9049 -16.1586 -15.3321 -7.7158 -10.1835 -11.8246 -14.2319 -27.3607 9.9378 9.7046 10.1765 13.1670 9.5151 2.2155 -0.0456 0.0357 -0.3521 -1.2640 0.0667 3.9496 -0.7853 0.9935 1.7327 -2.1738 -2.4763 -8.9075 -14.5354 -30.9548 9.4566 14.4761 17.5184 16.5421 10.8319 4.8634 3.7958 1.0301 -0.7413 -4.7772 0.1278 10.6261 1.7256 -4.7562 -1.8151 -1.2979 -10.9708 -19.1139 -21.0656 -26.4558 4.1609 4.3674 5.1630 10.4393 19.9966 22.0365 15.0772 16.7404 13.2009 0.0579 -7.2967 -13.1855 -16.4671 -16.2778 -13.5417 -3.6468 -7.6575 -10.0591 -0.8708 -22.2374 9.2619 9.2850 10.6963 10.0411 5.3819 1.8030 1.0922 -0.3660 -0.8976 -3.1810 -0.6819 -3.8642 -8.4569 -8.9974 -5.5095 -1.9498 -5.7587 -2.8793 9.9987 -15.0177 16.0944 15.0736 17.4290 17.1266 16.3425 13.9152 -0.3124 -3.4633 -3.3349 -5.5676 1.0220 7.3152 5.0978 0.8308 -5.9027 -14.3898 -14.2461 -12.2320 -23.5828 -27.2154 2.0137 5.7764 10.2219 14.9245 16.5703 10.5235 3.0729 -1.4882 -7.2050 -6.2506 -5.1311 1.5065 6.9953 -1.4430 1.8240 -1.5831 -9.7701 -7.7954 -0.2269 -32.5358 0.8118 3.1428 4.1975 8.8492 17.1316 16.9999 8.6244 -0.0326 -4.9530 -5.2292 -0.1353 6.3691 -2.1837 -2.6835 3.8299 -6.3313 -4.7140 -0.2060 -11.6261 -31.8615 16.0656 15.8566 16.2660 14.0919 7.2745 1.1478 0.5592 -3.1884 -2.7528 -3.9872 -1.5200 -5.6031 -7.1936 -11.6082 -9.9024 -5.9648 -1.2652 -4.4434 -0.5317 -13.3008 6.0546 7.8172 12.5175 18.9740 18.6314 12.5099 8.6741 7.3229 9.6232 16.1584 9.3568 6.3688 5.3827 -10.1648 -19.1392 -25.0842 -25.6307 -21.0082 -12.2957 -26.0685 8.7645 5.7385 7.3877 9.4659 8.7034 6.7927 2.2815 1.6420 0.5587 -0.7987 1.2054 8.0228 11.5479 4.5805 -6.4932 -9.4841 -11.6576 -7.6077 -9.5897 -31.0604 13.5337 13.1762 15.6646 19.9549 24.3470 21.3479 19.5471 19.3675 13.3653 -0.5856 -8.6584 -13.2572 -16.9863 -17.9847 -20.7708 -15.4798 -11.0509 -15.4702 -16.1382 -23.9221 9.4656 10.0639 11.4433 14.6680 18.7771 15.2024 9.3195 5.1370 1.9578 0.3561 3.7670 8.6933 1.3200 -4.9956 -10.6736 -14.3320 -17.7829 -18.0592 -14.3140 -30.0137 1.5799 4.3053 2.3818 2.8910 -1.2059 -0.8300 -0.1903 -0.1292 1.0233 3.9206 3.9828 2.2978 3.2320 -2.5703 -2.6923 -1.3776 2.9213 0.1727 -0.5110 -19.2019 6.8519 4.8647 1.9844 2.2401 3.7555 1.5005 -1.3694 0.5704 2.1485 0.7600 0.6917 -1.0898 1.8295 -1.7615 0.1607 -2.4085 0.4928 -1.2003 -0.2145 -19.8066 26.8652 27.9313 22.2964 13.2728 4.9234 4.9750 10.5105 12.7213 4.9587 -6.5278 -2.0124 -3.4059 -5.9594 -7.3378 -10.2568 -18.1183 -18.7465 -15.1523 -18.6899 -22.2476 11.7015 12.5524 16.8036 20.5917 17.3325 11.6535 7.9132 3.4464 6.4909 8.4604 0.1120 -8.6770 -13.3036 -17.0534 -16.5775 -11.3553 -3.4540 -9.9071 -10.9540 -25.7760 20.0026 21.9415 20.1743 15.7692 9.6829 6.6171 12.1877 15.1379 6.9729 -2.6223 -11.9260 -8.0030 -5.4775 -7.9242 -14.3282 -6.4602 -11.9823 -18.5276 -14.5214 -26.7133 8.4727 10.3130 16.1554 22.5237 20.4885 15.1245 10.9192 10.3785 14.0959 8.6752 -2.6735 -8.1503 -8.9174 -2.4684 -9.1899 -21.2524 -22.7439 -18.1241 -17.6618 -25.9650 16.4001 11.0790 6.5408 3.9922 0.9638 0.6155 0.1321 -0.0033 -1.5205 -0.5347 0.0838 -0.8675 -0.2837 -1.6297 -1.6342 -2.7530 -2.7291 -3.0597 -3.9086 -20.8833 12.8347 13.9930 15.6832 15.4917 10.9362 11.4157 15.6476 4.3710 -10.8720 4.3584 -2.6363 -7.3238 -10.3423 -4.3725 0.4684 7.2994 -11.0045 -18.8176 -14.2499 -32.8805 12.3323 15.8058 21.8399 24.3008 14.4087 10.9930 7.8357 8.0265 12.8222 14.2335 5.8155 6.0731 -6.0593 -17.6762 -22.1263 -23.2555 -24.2165 -21.7123 -15.9183 -23.5226 5.7344 5.3389 3.8374 3.4190 2.8812 1.7219 0.1439 1.8580 -0.5349 2.0653 -5.3722 2.7017 1.0724 -0.8636 -1.4371 0.4192 -0.6553 -2.1126 -0.7370 -19.4805 8.7871 8.8914 10.5080 13.7939 18.1053 18.3809 13.6037 9.9123 6.2489 7.8891 6.4768 -2.8713 -8.9109 -11.1699 -11.8847 -5.8137 -11.8112 -19.3777 -21.5409 -29.2171 21.2487 22.5877 21.7624 19.0832 14.4498 8.3623 6.4664 3.1545 -0.2860 -1.9696 -3.9389 -1.8288 -3.7243 -9.6176 -13.7865 -15.0846 -11.3343 -12.9399 -16.9243 -25.6805 15.5067 16.3749 16.3110 12.8646 5.4498 2.4274 -1.0299 -3.2700 -3.2357 -0.0252 7.5399 -0.6948 -6.2588 -9.1664 -6.8883 0.7600 -11.6902 -9.9820 -1.1495 -23.8436 15.5548 17.3265 20.2482 21.9118 17.7825 12.4436 8.5947 8.3626 10.7582 6.8704 -2.6150 -7.1451 -11.7102 -15.2112 -16.7335 -10.8661 -12.1430 -16.7183 -19.7849 -26.9260 9.7348 18.6985 22.2000 9.7733 3.5414 -0.9890 -5.4561 -5.4928 -8.4760 -6.8757 -4.1569 6.8951 2.1633 -1.2892 3.0483 -7.4717 -12.0842 -7.7317 1.0735 -17.1050 6.6628 6.9628 9.2890 7.3292 2.0881 -0.1054 -1.5163 -4.7058 -4.4988 -5.4883 -6.5025 -2.6194 5.9468 -1.1287 -0.4851 5.3144 -1.6440 -1.6601 4.2795 -17.5182 11.7595 13.0074 13.6551 14.3417 13.9024 11.5890 9.9365 4.1950 -1.2916 -2.3847 -1.5414 -3.1381 -5.4213 -4.9864 0.0096 0.2286 -7.5940 -13.3606 -21.1287 -31.7780 16.5560 21.1528 18.2294 14.8217 11.7211 5.8948 0.1128 -5.7142 0.4819 3.4296 -7.6731 -15.2596 -14.0910 -4.3450 4.2359 -1.2610 -8.7829 -14.4366 -8.1323 -16.9402 -9.6162 -5.8920 -0.4336 -0.0688 3.9825 0.7100 -1.9156 -3.0982 -4.8027 -4.2612 -2.6264 1.0431 5.5418 11.1806 9.5552 5.0905 3.5862 4.3463 5.8670 -18.1885 9.2493 12.5210 14.8487 20.3042 16.9267 10.5281 5.4085 -1.4152 -5.3054 -5.3250 -4.1371 2.4443 0.8006 -8.0900 -7.9314 -5.9206 -13.5877 -13.0043 -4.8031 -23.5116 5.9148 6.0122 7.7679 11.9347 14.3202 11.1880 5.7941 0.6362 -0.9006 -3.7616 -1.0465 6.3361 0.5894 -7.7629 -9.2778 -6.0898 -0.4740 -7.4253 -3.1780 -30.5771 9.0470 12.9059 18.1346 24.2631 23.6353 19.2579 20.8877 17.0355 3.1774 -5.2773 -10.0473 -14.9178 -17.5773 -16.4551 -11.9394 -9.6664 -11.9143 -7.0063 -19.2353 -24.3080 11.6229 13.7686 16.3077 18.9730 21.2077 21.1770 18.6717 15.5260 14.4577 10.9286 -2.0523 -9.7658 -14.1470 -18.3895 -20.2191 -19.9491 -14.1791 -17.4745 -18.9708 -27.4939 -1.2854 -2.7859 2.0352 3.8729 2.5634 1.1875 2.9803 3.4105 0.6928 -0.5396 -6.4408 -2.1739 4.1284 -0.7168 -3.4324 -5.3047 2.1060 6.1169 6.1700 -12.5844 3.6719 5.1933 3.4330 2.0915 1.7090 4.9193 7.5225 11.4575 7.7921 1.1072 -1.3846 0.6720 -0.8916 -0.5196 -2.8857 -5.7085 -3.7344 -4.4707 -6.4364 -23.5377 5.0076 6.0603 5.6858 5.8716 4.9796 4.3510 3.2343 -0.0278 -1.6006 -3.6879 -3.6306 -0.3994 -2.7867 -5.8602 -4.3815 -4.1661 1.9375 0.0251 1.7605 -12.3723 1.5611 2.5677 6.9184 12.7642 12.9002 7.6294 1.5737 -0.4407 -4.6258 -3.3019 -0.3274 9.4821 8.3473 7.1185 0.9099 -4.2945 -2.0947 -5.5952 -16.6889 -34.4035 -10.0770 -9.2074 -7.5499 -5.3349 -2.0639 0.7289 3.3239 5.0911 7.8838 10.9963 10.2149 9.1756 7.3923 3.8453 -0.9308 -1.4293 -1.7749 -2.4954 -0.6350 -17.1538 11.6964 15.7897 21.5631 25.0743 21.2867 19.0704 20.7015 14.1826 0.0839 -7.4606 -11.2687 -14.0743 -15.6804 -14.7951 -10.8010 -12.5161 -17.6133 -13.8075 -7.4286 -24.0031 -6.9283 -6.6188 -5.8684 -5.5056 -3.6164 -2.5751 -3.3395 -0.3521 -3.7955 -8.6077 -6.1256 -4.7755 -5.6371 1.9017 5.4236 6.9088 17.0056 9.6477 17.8081 5.0500 1.0400 4.3584 5.7473 5.9965 7.1951 11.1543 16.3999 17.9219 13.7898 8.5105 6.6032 8.3888 3.1208 -8.4853 -12.1692 -10.3091 -9.4060 -16.3383 -22.0676 -31.4510 4.0785 3.7601 3.2477 4.5535 2.8617 2.8959 4.0341 3.3572 -6.7255 5.4042 2.4187 1.2230 0.1581 -3.0654 -1.9472 0.8423 -1.1312 1.2092 -3.2861 -23.8888 7.3239 6.9150 9.3764 18.0744 16.9415 9.6050 5.2932 1.9763 2.0297 6.2840 11.8379 10.9565 8.5711 -5.0433 -15.8094 -21.0356 -22.5868 -18.9436 -8.4281 -23.3379 -1.7885 -4.8321 -3.3241 0.9574 -0.7694 -4.0018 -4.5674 -4.5260 -2.6221 4.0186 7.6808 10.9687 1.1618 6.5552 7.2914 5.9801 0.8194 -0.4241 1.0077 -19.5855 2.5382 2.7665 6.6332 9.6977 12.0223 5.6888 5.2502 -0.0648 0.1790 1.7261 3.6718 4.6019 -4.2546 -5.2838 -8.6175 -3.5030 -2.8900 -5.1451 -3.1562 -21.8607 -1.7959 -1.6410 -1.3048 -1.9856 -1.1093 -0.5878 -1.7759 -0.7425 -2.7139 -3.3222 -3.9402 -1.9787 -4.1788 -1.9573 -0.0518 0.6181 5.7386 8.4544 14.2974 -0.0227 1.9227 3.4879 4.9261 5.1627 4.2257 4.6417 3.0455 -0.4550 -1.9330 -4.6665 -6.5225 -3.7829 -5.2713 -1.4162 3.7054 5.6573 7.0460 2.7847 -1.9201 -20.6381 5.4951 4.1184 5.0794 4.1307 2.3794 0.0327 -0.8237 -1.5895 -3.7505 -6.6385 -6.0766 -2.2466 -0.4080 -4.9327 -5.8400 -1.6035 0.3752 6.5602 12.3259 -6.5875 6.8048 2.6542 8.2117 4.3594 9.5824 4.9978 9.2805 5.4616 0.1801 2.8218 4.8979 8.0336 1.3602 -0.8584 3.0641 -6.3167 -11.4947 -13.9096 -9.3665 -29.7643 20.4394 23.8508 19.9523 13.4804 4.7063 -0.8810 2.3157 4.3508 4.6054 2.6117 -2.8160 -5.7052 -5.0189 -10.4846 -14.5942 -12.8055 -6.1098 -12.0585 -7.7055 -18.1337 9.9351 14.3502 19.5530 16.3727 7.0796 2.9949 -1.1604 -3.2246 -3.9592 -2.8637 3.6007 8.3194 1.5624 4.0080 -6.2282 -13.2960 -15.2078 -10.4525 -5.9946 -25.3891 5.5354 4.2644 3.4234 3.5650 3.9406 1.8276 0.2709 0.3493 -0.0020 -0.7304 1.8692 2.1692 -1.3779 -0.9234 -5.0911 0.1335 -1.1518 -0.8308 -1.2357 -16.0052 14.7180 8.4248 6.7389 6.9731 8.7963 12.7964 14.6589 10.3137 3.2909 -3.7235 -5.8542 -6.9864 -6.8348 -4.2701 -4.4326 -5.4747 0.7281 -9.3904 -11.2298 -29.2424 9.1842 9.7851 10.8472 12.9244 10.6955 6.8423 4.6037 0.7650 -2.0301 -2.7855 1.3686 5.5053 -1.4464 -8.6948 -6.8949 -4.4565 -9.3587 -11.9106 -7.0277 -17.9162 9.5187 11.0469 10.8992 10.5477 12.4336 17.9310 22.0092 22.1029 21.2249 17.7472 4.1368 -3.9142 -11.6583 -18.8125 -22.4708 -24.5855 -14.9292 -12.6855 -22.7109 -27.8313 12.0341 16.6419 15.8489 10.0396 3.3655 -1.8695 -5.2143 -9.4106 -10.9745 -12.0991 -12.0450 -11.1231 -7.2635 0.0306 12.4231 12.6061 4.1888 -1.9085 0.6831 -15.9537 -1.3674 -0.5228 -4.0775 -3.8100 -1.0761 13.7500 19.2044 15.7231 9.5615 7.9996 6.5298 3.6199 0.5658 -1.3324 -7.5527 -6.3571 -7.0946 -6.2162 -8.1181 -29.4293 7.3145 11.1318 15.8219 21.2414 19.7326 13.4391 10.1286 13.1458 13.5220 4.5818 -4.9865 -10.4663 -12.4137 -8.4915 -7.5278 -14.5074 -14.9519 -10.6855 -18.9716 -27.0572 -2.6938 -1.0116 0.5434 -0.5197 1.2510 2.7810 -3.1452 2.3461 1.3093 1.0916 0.2998 1.6109 9.4326 9.1761 -2.9635 -1.3175 -1.3459 -2.3687 -0.4622 -14.0137 -0.6799 -0.1341 0.7366 1.5016 2.3553 1.9877 1.8684 -1.1687 -1.7388 -0.3259 3.2899 3.7096 2.8005 -0.4016 0.0798 0.8146 0.2490 -0.5574 0.0812 -14.4681 -4.5962 -1.7335 2.2323 4.9758 4.1965 6.1120 6.3004 -0.2420 -0.4268 -3.4101 -1.9343 1.8578 -0.3352 -3.5061 -2.9167 0.7871 0.7063 -1.6356 3.3878 -9.8196 13.1227 13.7568 12.0750 11.2378 13.9543 15.7037 14.8582 9.5334 0.1292 -3.0889 -7.7565 -10.9896 -5.4579 -2.1373 0.1387 -11.7169 -13.0933 -7.4977 -12.3640 -30.4077 29.3087 22.8979 20.4744 14.9176 7.8398 2.3822 -3.7671 1.0563 -3.5131 2.1709 4.1060 -2.4865 -7.3802 -9.3667 -9.8213 -8.8247 -9.4073 -14.9259 -16.1530 -19.5079 8.2477 12.7093 19.4580 20.8257 15.6422 8.6762 4.5782 4.1335 5.6439 14.7051 12.4104 11.4909 -6.3291 -17.1032 -20.7835 -24.4558 -22.5241 -14.5649 -5.2278 -27.5328 0.7217 4.0954 5.2473 1.5270 1.7119 3.5822 -1.4614 0.8720 -1.3606 -1.4757 -0.4869 1.0336 -0.7433 2.0743 0.6152 -7.1442 0.5920 6.3583 2.8714 -18.6301 20.3582 21.7378 21.8475 15.5031 8.5323 5.5254 -0.6584 -4.0833 -5.5901 -5.8466 -2.2597 3.0499 -4.1864 -7.3615 -5.3521 -8.6549 -8.7165 -10.8646 -9.6599 -23.3202 7.9037 5.3843 2.5963 1.7924 -4.1648 1.1119 1.0025 0.4959 -1.4533 -3.0047 0.7379 1.8636 2.4329 0.9500 -0.1706 -0.3177 0.7889 1.1735 -0.4730 -18.6499 -1.9942 -2.2404 1.0361 1.1275 2.4246 0.9687 -0.7731 -0.4350 2.7773 4.6081 2.2666 5.9874 1.4863 -4.3135 -1.0943 3.1059 -4.9201 3.6382 1.5522 -15.2082 15.5189 17.8940 20.2047 21.1613 16.5719 9.8830 6.2072 1.5961 -2.8649 -4.2350 -1.2109 1.6294 -0.3114 -6.2890 -6.6470 -6.6461 -16.7097 -18.4834 -19.5782 -27.6908 4.5707 9.9453 16.9194 16.3836 7.5074 1.7185 -1.6704 -4.6470 -7.1710 -7.5216 -6.2372 -1.4728 9.1990 4.5872 4.2446 -3.1203 -10.1462 -8.9093 -2.0237 -22.1562 10.2043 6.2265 8.0480 6.0822 2.9673 -0.2686 -0.4905 -3.3479 -4.2925 -4.0224 -2.6407 -3.8742 0.6899 3.7007 5.8631 8.8480 -1.0855 -6.5692 -4.1304 -21.9079 12.9155 18.0966 19.8262 14.0767 6.9947 1.6106 -0.8791 -6.2102 -7.3162 -10.2835 -10.9883 -8.3441 -1.6557 0.0080 -5.7847 1.4192 -5.5022 -4.2471 3.9784 -17.7147 5.1637 8.0679 12.5738 17.5701 14.9252 4.1592 0.9276 -0.3161 0.0005 3.6819 10.2605 3.1026 -2.7955 -2.8307 -1.1861 -9.2862 -11.7976 -5.3295 -15.7634 -31.1274 6.9673 6.7974 6.1367 10.4782 15.9809 13.2295 4.9742 0.4813 -4.1310 -5.6911 -5.9712 -1.2511 7.3306 2.6442 0.3224 -0.8372 -7.4799 -9.3018 -8.5882 -32.0913 13.1396 12.9563 12.3478 9.0857 2.3849 -0.8490 -1.4825 -4.2362 -7.2804 -7.4639 -6.8853 -6.4479 -4.2443 -8.2231 -3.9022 0.4289 0.1896 3.7001 6.9697 -10.1879 15.3330 18.1603 22.1112 21.6848 13.1886 10.5333 8.8464 9.6626 12.4137 13.9577 10.1420 -0.2864 -11.4409 -16.9791 -19.7494 -15.6645 -19.7643 -22.5000 -23.5283 -26.1208 6.8457 -6.8649 5.4271 5.2712 -1.3685 5.0072 1.5557 0.4655 -8.6121 0.8133 -3.3697 -1.5367 2.2231 2.7614 0.6905 -0.9517 3.9757 2.5271 6.8378 -21.6975 4.0198 5.3861 1.4690 -2.5892 -0.7717 2.5302 1.6444 0.6228 0.0646 3.2916 3.8112 -0.6089 2.1623 0.1459 0.1339 0.1325 -1.6768 -0.5331 -0.5013 -18.7335 -7.1586 -2.6175 0.5796 4.1833 -1.3849 0.3608 -8.9238 -4.4835 -1.6026 -5.1856 -8.3891 -1.4730 9.5706 -8.3291 11.6042 11.1480 -0.2734 4.8182 12.1074 -4.5509 12.6166 14.8923 16.2633 17.1269 18.2744 19.2870 16.5858 10.4162 6.9131 6.3384 2.9142 -1.3754 -10.9051 -16.4865 -19.5016 -17.7616 -6.9047 -16.5161 -23.1066 -29.0706 10.8009 12.8094 14.6516 18.7246 16.6285 12.1161 8.7229 6.4887 7.8806 10.1330 4.1720 -4.3839 -6.8368 -8.8011 -8.4415 -14.6175 -16.9291 -13.3638 -20.2402 -29.5143 6.2190 6.4291 6.1608 8.0273 9.8018 9.8514 6.5431 7.0773 5.8326 5.6116 8.2150 7.4679 -0.2957 -6.5386 -7.9000 -7.1888 -10.2895 -12.2362 -14.0338 -28.7541 8.0266 9.6417 12.2059 15.4655 15.3945 10.4886 6.7757 2.3300 3.3664 6.5551 2.3159 -4.1967 -9.2962 -11.8145 -9.9788 0.0400 -6.7484 -6.4088 -11.3916 -32.7710 -6.0361 -3.7035 -0.2831 1.4674 0.7756 0.3247 -0.7445 -0.5024 -2.1341 2.7813 -0.1459 -3.5635 -3.9893 -4.2930 -0.5948 5.6527 2.1314 14.0267 12.5554 -13.7247 -14.2301 -11.8469 -5.4438 -2.2899 3.4911 0.4713 0.7187 -2.7114 -1.5588 -2.8210 -0.0887 1.5060 2.8286 9.3500 12.2742 8.0817 12.1298 7.7574 3.4239 -21.0423 10.2809 9.4545 10.3039 12.6386 19.4980 22.5798 19.2258 15.3342 18.1620 10.8305 -3.6184 -11.2472 -16.1533 -19.0561 -21.3742 -19.1215 -7.0133 -13.0322 -12.3255 -25.3663 -7.1992 -4.0950 -0.4752 -0.0397 -1.2923 1.2680 2.1020 -2.0159 0.5678 -4.1475 -2.2860 1.2468 2.9160 3.7433 -3.5078 6.2645 5.1466 3.3947 11.0482 -12.6391 -1.4558 2.6350 2.5261 -0.4261 7.9067 7.3761 10.5050 2.1413 -4.1382 -2.8818 6.9021 5.4317 4.9534 4.5363 -2.8372 -3.4508 -1.0165 -1.6706 -9.0235 -28.0132 5.4483 7.0338 8.8713 13.9617 19.3432 16.5740 12.5536 13.7232 15.1487 4.1979 -4.0767 -8.9863 -10.9482 -13.1722 -11.3412 -7.4945 -4.4916 -3.5707 -22.8865 -29.8879 12.0309 14.2862 17.8716 18.2606 13.3426 8.9006 1.3455 -9.4180 -11.1012 -15.4444 -17.4768 -17.9985 -12.4515 -5.2431 8.8612 5.5913 6.3114 -1.1018 0.2013 -16.7679 16.8689 16.8256 18.5632 14.4683 8.2457 2.7262 1.7491 0.4673 -4.4682 -6.2835 -4.3280 2.1966 -4.4856 -9.6447 -7.5807 2.0175 -9.6747 -9.7002 -3.6650 -24.2978 10.3443 9.5624 9.5859 9.3945 7.7097 5.9502 5.4955 7.0578 3.8970 1.8002 2.9026 0.8300 -0.8072 -3.4283 -8.7861 -9.4681 -7.6897 -10.0581 -8.5829 -25.7097 8.4589 13.9060 18.3570 21.8577 20.8363 13.5168 7.0018 3.5585 0.2984 -4.3657 -7.6435 -5.4526 -6.4991 -0.0823 -10.9834 -14.4890 -9.9873 -4.5713 -15.9935 -27.7237 -2.7942 -1.0695 -0.1214 2.5877 1.5098 1.0893 1.5717 3.2131 6.2989 10.9335 9.8682 8.6743 4.8838 1.8707 -1.0579 -3.7852 -5.7917 -7.6708 -7.9578 -22.2525 25.1784 20.8581 17.0052 12.9557 7.7424 3.9815 6.0072 3.4663 -1.9041 -8.1079 -11.4077 -11.8642 -8.7727 4.7601 2.8284 -7.3135 -15.0133 -13.8178 -7.5999 -18.9821 13.6088 10.9215 11.1892 11.7633 13.2294 6.3264 1.9267 -1.7303 -3.3278 -4.4979 -7.2855 -3.9683 5.3311 -1.6679 -8.5378 -6.9275 2.8396 -8.2151 -5.8206 -25.1573 20.0774 19.5893 17.1250 15.9021 10.2327 5.8537 4.1551 8.7468 6.2824 -1.6643 -0.8142 -5.7458 -5.8553 -6.7971 -4.8129 0.1863 -14.4064 -22.1846 -19.7857 -26.0848 1.9579 3.5459 5.6047 9.8227 17.1510 16.9383 8.2371 2.3829 -0.9137 -2.6491 -2.1733 3.0262 6.5399 -2.8952 -2.9389 -0.9532 -9.2242 -11.9604 -12.7131 -28.7857 2.7147 5.0851 5.9010 8.2492 9.0379 12.5344 15.7585 7.9343 2.8699 -7.6515 -7.5935 -7.0792 -7.0329 -0.2973 -4.1153 0.8146 0.8342 -8.0293 -6.0641 -23.8708 -1.8671 0.2021 1.1744 3.3514 3.8114 4.6535 6.4708 5.5903 4.6873 6.1200 7.1503 10.8820 10.1467 5.0564 -4.0471 -7.0223 -5.8028 -7.0328 -13.2761 -30.2485 14.4582 17.2732 16.2772 7.1332 0.6525 -4.4947 -7.7910 -9.8395 -12.5801 -10.7856 -8.8712 -4.2717 7.2719 0.7198 1.5521 3.5804 -2.9845 0.1717 6.3548 -13.8266 28.6852 25.8888 20.5479 11.1546 4.6177 1.8681 3.9247 1.2950 -2.9240 4.3050 4.3461 -5.4196 -7.8904 -10.2821 -8.2802 -13.9910 -11.2895 -12.5380 -13.7725 -20.2458 6.9489 8.2782 12.9177 18.1269 10.1196 2.5932 -1.2838 -5.9588 -9.0612 -10.7381 -10.6395 -8.4104 -4.0818 7.0965 0.3344 2.1418 2.2817 -3.7137 1.6102 -18.5618 6.2919 7.1483 7.7499 10.3266 12.7585 21.8234 21.7899 13.6697 7.2737 9.3185 13.4418 -0.1530 -6.4198 -9.4554 -7.4143 -12.4542 -21.2295 -24.5545 -24.4585 -25.4529 3.2078 1.1604 2.3820 7.1676 15.6309 19.6735 9.8897 7.8474 10.1305 10.4050 -1.8220 -9.0708 -12.7476 -14.2980 -11.7869 -3.2366 -4.1439 -6.6114 -0.0121 -23.7655 4.9484 5.9562 10.0092 16.2669 12.9260 3.9525 0.4920 -2.9838 -4.7825 -5.0706 -3.0972 4.4166 5.1484 -3.0885 -2.2935 1.8467 -6.6209 -8.5405 -3.2672 -26.2180 9.1190 11.7308 15.3181 20.5759 15.7183 7.6900 3.7341 -3.2723 -6.7161 -9.0437 -8.0703 -0.5930 6.4087 3.5269 3.0413 -8.4178 -14.7425 -12.7049 -6.9905 -26.3121 1.4852 -0.6829 -1.5690 -0.2848 5.5052 12.8631 6.4129 0.4626 -3.5500 -5.4162 -3.9006 -1.4888 7.5205 5.6490 1.1393 5.5204 -1.2344 -6.2194 -3.0728 -19.1390 11.9158 15.3244 18.2371 17.8689 12.9861 8.5734 2.6935 -0.4620 -0.3115 4.3187 1.8359 -6.5328 -11.3944 -12.3343 -10.2127 -3.2123 -10.7404 -11.6243 -6.0915 -20.8377 -1.1406 4.4681 1.0243 1.7567 0.8452 1.0568 1.7113 1.4304 8.2151 0.5703 1.2053 -5.7909 -4.3638 0.9165 -4.5872 3.4354 6.9859 3.9875 -3.5121 -18.2142 18.8171 22.5033 16.7157 10.3549 3.9514 1.6962 -0.6346 -5.9992 -6.8816 -7.3001 -7.9076 -4.3326 4.9348 4.6458 0.9437 -3.5521 -9.3640 -2.4386 -11.4118 -24.7409 -0.9409 0.5904 2.2794 4.9547 5.8743 8.7846 11.0088 11.1838 11.6958 14.1355 8.9116 2.5256 -1.8779 -5.6262 -5.5753 -9.1754 -9.0981 -12.4659 -11.4699 -25.7149 0.4141 2.8215 2.0838 3.1886 4.2216 1.7188 4.6179 2.9704 1.6545 -2.8460 -0.9511 2.6537 -1.8008 0.9825 1.2384 1.5282 -0.7271 -3.0940 -0.8090 -19.8659 6.0430 4.6516 4.3017 7.7179 6.7963 6.2910 8.7476 8.7592 7.7014 12.1586 8.0227 -1.3414 -6.0075 -8.1097 -6.8511 -6.6141 -5.8068 -8.7086 -9.3302 -28.4218 7.1395 6.4611 6.4770 6.5752 5.7360 5.6174 3.8338 -0.3402 -1.9803 -2.2319 -4.1316 -3.2411 -2.2252 4.1950 1.9636 -1.7425 0.5431 -3.5115 -6.8529 -22.2844 17.8843 21.4402 20.6904 15.9517 9.7051 2.5656 -1.5516 -7.4554 -8.8729 -10.2263 -8.6781 -5.1896 -0.7045 -6.7680 -8.2898 -6.9326 1.3954 -3.2208 -6.0504 -15.6928 10.6767 10.3544 18.1231 11.2879 6.1413 -0.3610 -2.4504 -5.1076 -4.9943 -4.9704 -2.3126 5.9757 0.9523 -4.2427 -2.5152 4.9197 -8.3019 -9.0057 0.3384 -24.5078 9.9161 11.8977 18.2327 24.4645 22.2618 14.5543 11.0874 11.6473 16.7269 16.7802 10.9221 4.3259 -12.8739 -20.0422 -22.5408 -24.1296 -20.9142 -22.6765 -24.3668 -25.2731 9.4023 7.3715 11.9062 12.5120 7.0268 13.6459 7.2747 2.8388 14.6515 22.1573 24.2647 6.5863 -1.1334 -12.1075 -18.8356 -21.0343 -18.7149 -21.3705 -23.1378 -23.3040 6.1154 6.8878 8.0486 2.0830 11.4555 24.4875 10.2548 8.5452 8.1934 -4.1865 11.8854 1.3485 1.9895 -14.5678 -11.0286 -3.4615 1.3428 -19.7548 -24.2069 -25.4313 10.3570 12.8522 17.3265 22.8368 16.6859 10.9743 8.2198 6.8557 9.3432 12.2609 5.1561 1.5410 1.3448 -11.6896 -19.8579 -22.4891 -19.3409 -16.0157 -19.9891 -26.3720 -2.2958 -3.0198 2.5524 6.5326 5.0549 2.8939 1.6085 1.4431 -0.1701 -2.0055 1.1867 -1.3016 -2.2987 6.1240 3.0188 -0.9646 2.6135 4.0735 0.2584 -25.3041 3.3425 -4.9398 1.7857 0.9810 8.2974 13.8760 7.3422 4.3951 4.0317 8.9378 9.1371 -1.7588 -9.1168 -12.4667 -12.0238 -9.0772 4.3501 -0.6556 4.4305 -20.8684 2.6724 2.4627 -2.5441 -3.3045 -4.2917 -1.4508 1.5865 -1.0572 -2.1109 1.4870 -1.0006 3.5002 3.7107 1.3794 -1.6261 0.0378 2.0162 0.3261 3.2452 -5.0385 3.1268 4.8784 8.6218 13.5865 14.1019 7.2490 1.4764 0.4142 -1.4440 -0.1256 6.7242 13.6333 7.9001 5.1808 -8.7618 -15.9427 -17.5740 -13.2732 -3.9031 -25.8689 8.7515 17.2518 23.5164 15.7690 8.1574 4.9814 0.5026 -0.4621 -1.5217 2.4458 11.1982 12.8925 8.2107 -10.1894 -18.8969 -20.9839 -19.6436 -9.2705 -7.3159 -25.3934 11.7980 12.1448 14.6065 20.2682 20.5368 14.0544 8.9695 7.1447 9.3182 10.2279 -1.3945 -9.8630 -14.2310 -14.2600 -11.2940 -5.3186 -14.6453 -16.0278 -14.7441 -27.2906 8.3692 9.6882 12.8542 17.3005 21.1340 18.5917 11.2777 5.5517 0.5470 -2.3437 -2.3633 -0.2054 0.7833 -4.4844 -5.7547 -6.4185 -15.2118 -20.9890 -20.6002 -27.7265 3.2540 3.5495 5.6572 11.4443 18.6822 14.2818 7.9623 5.8581 7.6636 11.2380 10.4719 -0.3434 -0.9127 0.3323 -9.6682 -12.3368 -7.0303 -17.5040 -22.5944 -30.0053 10.5668 4.7765 4.8789 5.9385 13.1029 20.5979 14.5257 8.6496 2.4271 -1.1640 1.2029 9.4957 -0.0200 -12.5730 -14.8513 -9.4220 -4.4288 -12.9535 -14.3720 -26.3782 3.6092 2.1429 -0.2581 2.1516 6.0252 4.4742 4.3520 2.9527 3.6102 2.6901 -0.0942 2.2564 1.3309 -0.5758 -1.1090 0.1191 -0.1180 -0.1015 -5.5503 -27.9075 8.4206 12.6530 18.9633 23.9855 21.2540 9.7237 1.5121 -0.7361 0.7545 -1.5581 2.4158 9.9186 6.7278 3.6705 -12.4971 -19.8574 -23.2581 -23.7200 -10.9203 -27.4525 22.1951 16.4633 13.2055 7.4970 2.2280 -2.4528 8.7730 10.6870 4.9929 1.1178 -5.3802 -8.2471 -5.7256 -8.8078 -8.3540 1.5835 1.5054 -11.6521 -13.9564 -25.6726 -7.9053 -6.5840 -6.0103 -4.8986 -4.2425 -4.7462 -6.7261 -8.5401 -8.6906 -8.8402 -5.6306 -0.7673 8.6501 5.0800 13.9798 11.4953 10.0314 17.4290 14.9683 -8.0522 11.9359 8.4098 2.8637 0.1621 4.2653 2.6990 1.2433 -1.9101 -2.5608 -4.4372 -0.7370 5.0345 2.4512 -1.2451 -4.6924 -2.0267 0.3932 -0.7445 -1.8229 -19.2813 -1.3202 3.8184 7.4609 11.6391 16.2849 25.4929 15.8707 1.4126 12.3759 21.2527 8.1587 -3.8943 -14.7860 -10.6930 -17.9239 -16.3824 -1.7644 -13.0054 -19.3451 -24.6522 9.8443 9.9627 12.5201 13.7261 10.3992 6.6290 2.9281 -0.7644 -3.9695 -5.3737 -8.3704 -7.5382 -1.7207 5.7599 1.9410 -0.8146 0.5436 -5.6632 -12.2155 -27.8236 6.4290 4.7082 3.9317 3.1702 -1.6353 -3.6078 -6.3150 -9.1986 -10.3233 -9.8065 -5.8063 -1.3404 -0.7673 -2.2448 -1.2797 7.1795 3.2561 15.5273 14.8629 -6.7401 23.9506 22.1558 17.7456 14.4350 8.3329 3.1023 4.3134 8.6024 3.8015 -3.9642 -10.7800 -9.6229 -10.8860 -10.6376 -8.0083 4.7524 -6.4851 -13.7226 -12.4871 -24.5980 9.5760 11.4366 12.9012 14.4846 16.8425 19.5473 19.7042 15.2736 12.0272 11.0446 7.4677 1.1314 -9.0848 -18.3215 -23.8214 -23.1710 -19.9932 -10.2715 -17.3599 -29.4137 -3.4431 -3.1613 -1.9102 -0.6935 1.3870 1.2966 -1.0892 -2.4642 -3.0407 -4.4927 -5.4209 -4.2773 -0.5358 0.4090 1.2794 5.8990 14.3402 3.7638 11.1512 -8.9972 15.2464 18.8014 25.3166 19.5775 11.0313 6.5896 5.6381 2.9552 5.1185 13.2540 13.6736 8.5584 -8.3365 -15.9401 -20.3756 -21.2859 -21.2275 -19.3217 -15.1325 -24.1407 3.1035 6.1792 5.0462 3.5926 7.0741 6.4046 9.9419 7.7684 4.2113 3.6277 6.5092 5.5900 -1.7178 -6.4492 -7.8871 -6.9582 -5.1379 -8.3058 -10.5436 -22.0490 -0.7280 0.5704 3.9717 5.9469 6.0780 4.0770 1.2426 -1.3458 -3.2314 -4.6819 -6.2378 -5.0198 -1.2080 10.5808 2.6382 3.7712 3.8446 -1.7555 -1.1558 -17.3572 5.3326 5.4267 9.8240 16.2001 13.6887 6.9510 1.1917 -1.6723 -2.5788 -2.7648 2.6931 5.4843 -4.2095 -9.6143 -6.2919 3.6211 -3.8754 -6.5263 -5.2823 -27.5977 2.5771 3.4727 5.4467 8.8349 9.8870 12.1341 12.0826 7.7444 4.5255 0.7889 -2.0382 -4.7604 -5.7542 -4.6241 -2.4718 -4.0958 -6.2797 -4.6267 -9.5398 -23.3031 14.7846 16.0256 18.4400 18.7731 12.4129 9.2087 4.9463 5.2837 7.9434 9.1983 5.6775 1.0431 -7.1678 -12.3799 -13.9635 -9.4290 -13.5075 -18.2553 -21.2672 -27.7670 14.0860 12.6160 17.7362 22.8480 13.2766 7.4189 5.7487 1.8704 2.3287 6.7312 16.7040 13.9396 0.1199 -14.2720 -18.2397 -22.3862 -24.8172 -19.6941 -10.4326 -25.5823 1.2702 -1.2740 -3.7100 -0.5628 -4.5219 -4.4580 -7.7100 -8.3547 -7.0524 -3.3805 -3.0927 1.9780 6.7217 16.8392 12.2288 6.1018 4.3647 3.7046 7.0648 -16.1569 -1.5691 -0.6625 0.8145 2.7114 4.5683 6.3808 5.3169 3.3697 3.7409 -1.1329 1.3502 1.4333 7.1092 8.0819 7.4140 -0.3489 -3.5222 -5.2023 -8.9373 -30.9159 8.8791 11.5486 17.4354 21.9590 18.7721 13.0614 12.3597 15.8383 7.9901 -4.7504 -11.1404 -17.0402 -20.1418 -20.5768 -16.8543 -10.2710 3.5082 1.5897 -6.0317 -26.1349 1.4924 2.3041 3.6995 3.9735 2.9478 1.4182 -0.1153 -0.7081 -1.6935 -4.7155 -3.8966 -1.0552 4.3924 3.5582 4.7903 3.4573 4.4498 3.7588 -4.9783 -23.0800 19.7104 23.5312 26.4663 21.1276 13.4352 11.0142 11.5216 12.6431 11.6620 1.8352 -2.6313 -2.1531 -10.9044 -16.4683 -19.1821 -21.4207 -21.6631 -20.6795 -14.5440 -23.3003 -7.3825 -5.1236 -2.0803 -0.3985 -2.1515 -3.3191 -2.5398 -3.6553 -4.6673 0.2450 -1.1380 0.4163 -5.0235 -3.1123 1.6781 0.5456 9.2542 19.9831 16.2303 -7.7611 2.5108 2.1845 2.6268 3.2213 4.7277 4.9151 4.4068 2.5115 -1.2667 -1.0470 -0.5840 3.1980 11.3786 3.1343 -1.5396 -0.7790 -4.2909 -5.9553 -4.0558 -25.2973 1.3099 3.8149 5.9305 6.0290 6.2561 6.5634 6.5483 2.2558 2.8164 5.8479 6.7553 3.8567 2.7371 -0.0626 -3.8527 -5.1436 -5.5124 -7.3236 -9.2045 -29.6219 6.9414 7.8896 11.9174 19.4391 22.8159 17.5130 12.8967 11.7403 13.3801 0.6255 -8.6365 -13.1338 -15.0777 -14.1269 -8.2615 -12.9862 -16.1846 -10.2908 -1.8314 -24.6297 13.6675 18.7539 23.7644 23.5665 14.5584 8.2788 5.9566 3.8037 5.8231 9.3954 3.8096 -3.7071 -3.0809 -2.7965 -15.3910 -22.2338 -22.7083 -19.7578 -17.2327 -24.4698 6.8878 4.6215 4.0830 1.7534 6.3161 9.3030 9.1793 1.8539 -3.8953 -6.2684 -7.2830 -6.1167 0.8013 5.3564 -0.9241 -2.6976 1.7576 -1.1627 -4.9125 -18.6528 11.5366 9.1379 9.1023 13.3107 15.2931 8.4262 2.0019 -1.8545 -5.3470 -10.4980 -13.1650 -8.7617 -2.8037 6.5213 -2.9746 -1.1653 2.8950 -3.9002 -0.4074 -27.3478 8.1149 5.2054 4.7193 10.9119 14.2393 9.7159 2.7743 0.0628 -0.9042 2.5046 6.2675 4.5297 -1.7121 -2.7212 -6.4591 -8.2032 -12.1525 -9.7960 -4.5542 -22.5432 10.4270 10.1489 7.8411 6.9092 5.2675 3.1553 3.1860 0.3063 0.4719 -0.8710 -0.6868 -1.1505 -4.6137 -2.9984 -2.9661 -2.8540 -3.0302 -2.2057 -5.9823 -20.3547 16.5991 18.8180 20.4139 16.0812 15.2582 13.6000 9.7730 4.8200 7.2670 0.5444 -5.1929 -8.9752 -12.2178 -15.2451 -9.0857 -9.6324 -11.9042 -7.0554 -15.8485 -28.0175 6.9984 7.5807 9.7172 14.2935 21.1422 18.8026 13.0729 13.6068 15.6061 5.7873 -4.4176 -10.6630 -14.9625 -15.2760 -12.1485 -4.9859 -13.8661 -15.0801 -8.9505 -26.2577 4.8529 5.9107 5.9519 3.1046 -0.7986 -3.8000 -3.3218 -6.5949 -9.5964 -7.6925 -7.0336 -3.5031 2.4411 -0.1901 9.1699 13.0532 0.4243 10.9470 3.0406 -16.3654 2.3975 0.4924 3.8005 6.1460 0.9043 2.1381 -0.0106 2.9239 -11.7677 -3.8359 -3.4925 0.8716 3.4740 -2.8287 -3.8786 1.2858 6.8931 -2.1701 3.3894 -6.7326 -3.5428 -1.3900 0.9285 2.4806 2.9675 0.7980 0.9612 0.2854 -2.0562 -1.3222 -1.9025 -0.0059 8.6474 4.6327 1.6964 0.3984 0.9512 1.7069 1.4812 -17.7159 17.4798 18.9995 21.9699 20.6967 14.4015 9.2408 9.2963 4.6834 -0.5765 -2.0466 -4.6870 -8.1340 -10.8400 -6.9387 -4.9129 -2.3346 -9.5282 -16.6374 -22.8620 -27.2700 30.2051 29.0816 22.7010 15.9702 13.2347 12.3034 7.9736 1.7110 -2.9050 -5.8220 -9.0457 -11.4933 -10.9824 -10.7128 -9.7198 -11.4470 -12.1083 -14.3720 -14.3489 -20.2236 4.3667 5.6948 7.6382 9.1345 7.9965 5.9946 4.8983 4.5838 1.3099 -1.1182 -2.4032 -2.5986 -0.3123 -3.8248 -3.3874 -4.6492 -2.5381 -4.1010 -4.4278 -22.2567 13.3799 15.9919 18.2801 18.5738 14.5051 15.0610 12.6361 1.8684 -4.4789 -7.5763 -7.3687 -5.7285 -8.7693 -10.0970 -1.0795 0.7696 -6.5956 -14.5402 -16.2583 -28.5735 1.2989 -0.2985 -0.1264 2.2528 6.1919 9.0850 11.5888 9.6084 6.4565 4.6999 3.8291 -3.1433 -2.0178 -5.4377 -3.5892 -2.4088 -3.4525 -6.5279 -6.8848 -21.1245 6.6990 6.9952 6.9900 10.6461 18.1760 23.4925 20.7738 19.3068 14.5258 4.1679 -5.0313 -10.5967 -15.7569 -18.7535 -19.3572 -18.4953 -9.1098 -8.3084 -3.5080 -22.8561 0.3614 -3.0919 -2.2049 0.2924 3.5194 12.3203 10.5339 6.5081 2.9888 3.7587 9.6208 6.5139 -3.3458 -8.5883 -8.7468 -4.7300 1.1707 -5.5824 -3.0982 -18.2001 3.6833 5.1669 7.0034 5.1138 6.2451 5.1324 2.9024 -0.2756 0.6913 0.7688 2.7471 -3.0081 -4.2841 -1.6790 0.6913 -2.2915 -1.1739 -2.5591 -2.7007 -22.1738 11.4726 11.0663 10.8078 10.4446 10.6033 12.3965 13.0646 7.6243 1.8855 -2.1733 -3.8981 -0.7658 2.9887 -2.4982 -10.2150 -14.2533 -12.1696 -5.4330 -8.3400 -32.6080 -6.7179 -4.6131 -3.1636 0.0876 0.6888 1.0614 0.5541 -3.5030 -3.5922 -2.2597 -0.8136 6.0096 11.8925 2.9252 -1.1450 -0.4619 -0.0294 2.9522 6.4894 -6.3616 5.3482 3.7310 5.0957 3.1029 1.6780 3.1184 0.5161 -3.5018 -4.5034 -6.3519 -7.8639 -5.6580 -5.1767 -2.3928 0.1325 3.3098 7.8210 11.9881 4.4190 -14.8118 8.2697 5.8835 6.0215 10.4427 12.0342 7.5709 3.5443 -1.0166 -4.1313 -6.5619 -5.0660 -0.8575 7.1102 -0.6052 -4.0956 0.6756 0.8926 -4.2551 -6.4788 -29.3772 2.0192 3.9566 4.9448 8.0890 14.6263 15.3545 12.2775 10.3302 7.2993 12.5826 7.7803 -2.3944 -7.4949 -10.2984 -9.7837 -7.3581 -7.2692 -6.1954 -16.7366 -31.7295 12.8428 15.9200 16.2497 11.8540 3.8000 -1.0057 -2.5059 -6.5320 -8.3900 -9.9165 -9.6596 -6.0113 1.0447 13.8469 7.3566 -4.1906 -11.0801 -8.0052 3.2361 -18.8537 17.2020 18.6360 23.3502 20.5862 15.5823 12.7495 6.4445 -6.6661 -9.1710 -15.5663 -21.8272 -18.4838 -16.7082 -14.2582 2.8891 3.6115 -0.4823 -0.0577 2.5754 -20.4057 11.2405 16.2045 19.5245 19.0279 10.8160 4.2621 0.0074 -4.8018 -7.7494 -9.5065 -10.8518 -10.4718 -6.2617 1.5892 9.5055 4.0459 -4.2300 -9.8946 -9.4119 -23.0441 21.5981 16.6548 9.2131 4.2901 -2.7752 -6.0814 -5.7172 -6.8518 -5.3057 -3.6255 1.9348 7.8994 -1.3260 -8.0365 -10.6481 -6.5275 -3.0468 3.5257 5.6627 -10.8371 2.3529 1.9098 1.1705 -1.0129 0.2322 -2.1724 -2.7849 -0.3004 1.1108 2.9625 0.3261 -2.0946 1.0272 3.4696 1.9753 1.1513 2.4885 2.1442 0.7739 -14.7298 -1.7003 -2.4848 -2.4346 4.7038 24.9669 27.0962 7.9463 4.7152 0.1920 -0.8991 -0.8489 9.9068 -2.4800 -9.4907 -11.9321 -1.8570 -6.2441 -11.0862 -11.2891 -16.7804 14.9206 17.9220 23.4494 28.4771 23.9338 22.5858 21.7793 9.3991 -3.6346 -10.2702 -14.3748 -16.3264 -19.3026 -18.4585 -17.3134 -12.2710 -10.5930 -10.9994 -7.9141 -21.0092 10.8472 9.9985 8.1012 5.6373 0.7372 0.0745 -0.8638 -1.7933 -2.9142 -3.0150 -2.2427 -0.7782 -2.5201 -6.2197 -5.1933 0.2777 -5.0155 0.2927 4.1108 -9.5213 11.2774 17.5024 20.7927 14.9512 8.8893 5.3831 1.1126 -0.5407 -1.8226 -0.7548 3.8991 14.1917 11.4189 -2.2812 -13.1711 -17.2396 -15.8893 -13.7806 -15.9376 -28.0009 -1.8142 -1.3801 -0.2831 1.3820 1.7722 1.4623 -1.2023 -3.2113 -5.2345 -6.7523 -4.9565 -2.8637 4.0779 -2.6764 0.8821 14.4958 8.5614 4.5439 7.9060 -14.7091 10.5077 13.8832 19.5676 20.8530 17.7078 12.7109 11.5269 8.0218 2.2318 -5.7244 -10.1683 -12.8120 -14.9230 -10.7023 -2.0109 -8.3963 -10.2008 -5.4032 -10.7793 -25.8902 -0.2509 1.3469 0.6421 2.6377 6.0659 4.3721 5.3520 3.9824 -1.7069 -2.0895 -5.2191 -1.5370 -3.3737 1.3384 4.0383 10.2321 1.6548 -3.2413 -5.1470 -19.0973 6.4953 9.3365 14.1057 20.6271 16.1168 7.3580 1.4929 -2.7587 -4.0681 -3.9748 1.3672 8.9105 -0.9200 -5.3133 0.3345 -6.1299 -12.7503 -9.3229 -13.4612 -27.4454 0.6201 2.4328 4.9760 9.2545 15.4025 12.2971 5.7680 5.0077 4.0499 4.2155 9.7060 7.7493 5.8274 0.3852 -5.9984 -11.5236 -7.3050 -10.3504 -20.7971 -31.7176 -3.7294 -1.4413 -3.7524 -4.5904 -3.2743 0.7360 -3.2763 -4.8007 -0.6213 4.9030 10.4614 11.0474 17.3494 -0.7763 5.4732 0.7769 1.2498 -0.7639 -2.1070 -22.8638 6.7163 9.2255 12.3187 17.6924 17.6404 11.8940 7.0991 4.2645 4.3021 9.9874 5.8382 -3.4579 -6.9519 -4.8090 -2.1538 -14.0697 -18.7474 -17.3320 -11.2745 -28.1824 14.7156 19.4663 14.7897 6.5422 1.1728 -2.3524 -4.9286 -7.8168 -8.8525 -9.4747 -10.7274 -8.5129 -4.4565 7.8312 0.0283 4.0451 1.6338 -1.3894 4.4306 -16.1441 19.0680 22.0875 24.6110 22.0341 17.3706 15.8785 14.1658 11.9508 4.4308 -1.1373 -6.4223 -10.3244 -11.8572 -13.5064 -14.4779 -15.1004 -15.5216 -16.8251 -22.0101 -24.4145 9.0336 19.0176 24.4867 24.6758 18.9461 11.7838 7.6427 4.7750 1.2864 0.4513 1.8155 -1.2592 -9.2086 -14.2929 -15.7555 -13.6408 -7.7748 -14.5157 -21.5902 -25.8770 1.4827 0.2805 -0.3810 1.4732 8.2340 8.1707 10.0600 8.3087 4.1212 2.7249 3.5821 7.9718 3.7426 -2.6511 -5.3909 -4.4519 -4.5293 -6.7232 -8.9602 -27.0648 10.5705 10.6700 11.7791 12.1925 10.0236 6.6964 5.1163 2.6148 4.7648 2.5521 -3.9125 -7.4628 -9.6721 -9.3307 -9.9466 -8.0895 1.1968 -3.8200 -3.4846 -22.4580 7.5905 8.3863 11.5587 16.2565 22.0088 23.0422 17.8049 13.1018 17.1694 13.5769 -0.2381 -1.8062 1.5806 -10.3901 -20.8106 -24.7914 -25.0524 -24.3552 -19.3769 -25.2554 7.3275 11.6160 16.6781 15.5131 8.1538 4.8147 -1.7134 -2.9599 -6.5688 -7.0695 -0.9248 5.3367 -4.5080 -7.1758 -3.4270 -3.5021 -8.7907 -5.2842 1.7479 -19.2635 8.6994 13.7488 20.2706 15.6056 8.0300 2.7906 -2.4915 -6.3762 -9.0577 -10.4892 -11.7811 -10.7422 -7.7494 -0.3422 10.0858 3.8928 3.9680 -2.0796 -2.0561 -23.9265 -1.8066 -1.3696 1.0493 1.3711 1.9691 1.1999 -1.8646 -1.9643 -1.7749 -1.3390 -3.3717 3.1526 1.2109 0.7990 0.4966 2.5531 3.3704 2.3429 4.9229 -10.9469 4.0689 7.4175 12.6940 18.0600 16.5869 9.3259 4.5282 2.8636 1.6428 4.7328 12.4121 9.1212 6.2302 0.0152 -12.5596 -17.7355 -18.6999 -12.7970 -17.6503 -30.2571 0.8292 2.6495 1.8804 4.1439 5.6667 5.7021 4.9475 6.8868 6.7950 8.0289 10.5666 8.6874 1.8534 -2.2297 -6.3646 -6.7900 -8.1505 -9.3082 -10.0423 -25.7522 7.1022 3.8236 1.8946 4.4230 4.7840 4.6315 5.8219 2.7914 1.6501 0.4344 2.2205 4.0071 0.0326 -2.6285 -2.5436 -3.5874 -3.6688 -4.2155 -7.0087 -19.9643 0.1242 12.2019 4.3084 4.2478 1.9093 0.6288 1.1102 1.5269 2.2918 5.1362 2.1955 -5.7687 1.1936 -1.4469 0.2971 -4.6605 0.8522 1.2017 -3.9848 -23.3647 -5.1159 -1.2775 2.5260 4.1265 3.4097 -1.7194 -0.8844 -1.4795 -5.4958 -6.8537 -1.5398 0.9661 -2.3240 -4.8943 8.2925 3.4432 -1.7853 6.3100 13.4410 -9.1454 3.9898 4.3777 4.2357 3.0453 3.7447 2.5019 1.1011 -0.4780 -2.4003 -0.6497 0.8291 0.2117 0.0985 -0.2133 0.3830 -1.7850 -1.0322 -2.1328 -1.6069 -14.2203 11.3622 14.7416 16.8859 15.0883 9.9488 8.7692 4.3995 -2.0242 -2.6878 -1.0092 0.7764 -2.2298 -4.0840 -8.1165 -6.2525 -5.2064 -7.0092 -6.7164 -9.2528 -27.3833 3.6579 2.8996 4.0461 8.3701 17.0082 23.3625 16.2578 7.1955 17.3887 6.3999 -4.2883 -9.9015 -12.7556 -12.3388 -5.4680 -10.3674 -10.9476 -10.1432 -6.0175 -24.3585 7.5312 5.8939 4.3265 4.0014 2.9087 1.6542 2.9601 3.9087 1.3700 -2.9778 -0.8059 -0.8752 -0.9920 -0.8125 -0.8336 -0.0306 -2.6451 -2.7999 -4.2986 -17.4834 15.3876 20.0855 22.6771 20.6277 15.1509 8.8202 3.6289 -2.1904 -8.5688 -13.1818 -15.2549 -15.0083 -12.7233 -8.7307 0.5974 4.3829 -2.2770 -0.0304 -7.8902 -25.5026 23.6589 23.2539 20.3520 15.1761 11.4144 5.8059 5.4712 1.3160 0.0827 -2.4308 -7.0613 -6.1765 -1.8534 5.6004 -1.4387 -15.4564 -17.3870 -18.8680 -17.3832 -24.0763 11.6709 14.1123 21.1753 25.8068 20.7082 14.0630 14.1588 17.9220 14.6153 4.8179 3.3194 0.4690 -11.4997 -19.1991 -21.5666 -21.4213 -21.1902 -22.3547 -22.1566 -23.4508 4.6799 3.0606 1.6539 6.2007 -2.0201 3.0954 0.5569 3.2707 1.3312 0.0725 1.8286 -5.9667 2.6570 -0.0978 -1.2174 -2.2597 0.2234 1.4765 -4.2077 -14.3379 9.3104 11.8578 14.9832 13.1906 8.5578 4.2616 -0.4942 -3.0677 -3.2171 -5.1322 -1.7298 6.6384 -0.8475 -8.0712 -9.5863 -5.8386 2.6610 -8.3104 -6.0285 -19.1373 2.2896 3.8587 4.9224 8.6357 13.9236 17.8222 15.7427 11.5211 7.5272 9.1679 9.7247 5.7451 0.5275 0.3504 -6.2281 -12.9212 -14.0843 -20.5964 -26.6432 -31.2855 18.9039 18.0327 13.6297 9.7561 7.4319 5.3744 2.9646 1.7415 0.6716 0.6859 2.7446 0.5342 -4.3187 -6.1877 -6.9311 -9.8734 -11.9041 -9.1281 -8.9591 -25.1690 6.4513 6.7843 9.4438 12.9549 16.4801 14.9093 8.2954 1.6877 -2.5193 -4.4922 -6.7348 -6.9853 -4.6783 0.7181 1.0483 -5.1128 -1.1161 -7.5305 -12.3980 -27.2058 codec2-1.2.0/octave/train_120_2.txt000066400000000000000000002650001445607075400166320ustar00rootroot00000000000000 -1.2668 -1.2477 -0.0681 3.8419 -0.0693 -1.7919 -1.5943 0.8402 0.1550 -3.1526 -3.0204 0.7337 -0.2603 1.6590 0.0230 5.5893 -2.4959 1.9604 -0.6348 0.7999 2.6673 1.4923 1.1408 -0.7478 -1.0755 -1.3421 -0.4884 0.2535 0.2951 1.5088 1.9447 -2.6620 2.3751 1.5298 4.1357 -6.5630 -2.1766 -2.7535 -0.7706 1.2362 -0.6415 -0.4348 -1.2178 -0.9870 -1.1057 -2.1421 -2.3594 -0.4977 -4.1484 -4.7120 5.5425 3.0695 3.6610 2.9729 2.4379 -1.6136 -1.3052 2.1342 1.9164 -0.5692 1.5930 -1.1175 -1.2476 1.6203 2.5315 2.3427 -0.5223 -3.1063 -2.1739 -1.4774 -2.6108 -3.5842 -0.3828 -0.1511 0.8929 2.5717 -1.7657 1.8954 6.0193 -1.3272 -0.2102 -0.3681 -1.2724 -1.1520 -0.3715 -0.5633 -2.5238 -1.7680 4.7356 5.6452 0.8620 0.8750 -0.8932 -1.5918 -1.4047 -0.0720 -0.6080 -0.7876 1.3972 0.0717 5.1178 -1.5391 -4.2881 -1.9745 1.3515 2.4014 0.9329 3.4647 -2.4062 -0.4224 2.8708 -1.6053 -3.1492 -2.6783 -2.6937 -4.4645 1.8599 -0.5456 3.8910 3.8770 -1.7119 -1.0101 -0.5002 -1.7849 -0.4884 0.2279 -0.8335 -1.0083 -1.2819 0.1129 -1.3674 -1.3338 0.9290 3.0765 2.6339 3.5627 -2.2713 0.6565 -1.2099 3.6022 -1.5938 -1.3264 0.9856 2.8765 2.3700 1.2528 1.2586 -1.2453 -1.3974 -1.4988 -1.6309 -1.2183 -0.1625 -0.8690 0.0030 -2.0081 1.3580 2.9585 3.3396 -3.4520 -1.3680 -0.6304 -2.5755 -1.2397 4.9487 2.7251 1.4675 -0.1832 -0.3932 1.4723 1.7410 0.6216 -1.0849 -0.7112 -0.3751 -1.7539 0.1222 1.9858 -0.5248 -4.2444 -1.2786 -0.2384 0.6718 2.9763 -1.6959 6.4607 -3.9459 -2.0560 -2.7306 -0.2583 0.0389 -3.6271 -4.0721 0.8260 0.8112 2.8769 2.2400 0.5444 0.3571 2.0995 2.5196 2.3359 1.6620 0.6250 -1.0528 -0.9133 1.8668 1.2853 1.4368 1.4676 1.1301 1.3664 1.1076 -3.2853 -0.4530 0.4467 -4.7302 -3.8149 -3.9866 0.9865 0.1738 1.2940 1.3514 -0.3684 -0.7078 -0.2329 1.3467 -1.0678 -0.0262 0.2448 -0.8418 -0.3910 2.7415 2.9948 -4.5965 -0.1192 0.2496 0.4684 0.0669 -2.5805 0.2482 -1.3236 -1.4810 0.9433 3.4287 2.2233 8.9344 -1.1138 0.4585 -3.7470 3.0416 -2.7394 2.2880 1.6598 -3.6439 0.0633 -2.7363 -1.2617 -3.1924 -2.0500 1.4672 -1.3248 -0.5511 1.4512 -0.4710 -1.2381 2.9453 -2.3244 2.3249 -2.1969 0.9414 -1.9926 0.5254 0.0792 -3.2076 -2.4140 3.5291 3.5738 -0.0613 -1.0556 1.5560 0.0091 0.0770 2.8542 -1.4594 -2.0102 0.5440 2.8119 -0.2925 -0.7111 0.9589 -1.6923 -1.8606 1.1040 -1.6733 -0.0895 3.6894 2.7628 -6.9922 0.4138 -1.5539 0.6820 1.4458 0.4297 -0.4115 -1.3266 0.5024 -0.6975 -0.3820 1.2840 0.9597 -1.0561 2.2198 0.1292 1.4343 3.0313 -3.9845 0.6776 0.3380 -3.7217 -2.0283 -1.5216 1.0103 4.8788 3.7028 4.4000 -0.3076 2.4853 2.2296 -1.5213 0.4360 -5.9903 -2.6578 -2.3985 -2.0127 1.3737 -3.7950 2.3105 -0.2099 -0.3839 -1.7339 -0.9861 -0.2078 -1.2579 2.5808 -0.9255 3.2388 1.0999 3.6754 4.6424 1.9111 1.4716 2.7531 -0.2725 -0.3573 -0.5392 -4.2109 -6.4662 -2.3713 -2.0442 0.7177 1.4094 0.7205 6.8683 1.7836 7.1562 -2.9368 3.4036 -0.6064 2.3377 2.8714 -7.0408 -9.7129 4.1278 -3.4444 -5.9919 5.5073 -0.8996 -7.5142 1.2434 0.8042 1.5886 0.8754 -0.4378 0.2336 0.0424 -0.1245 0.0847 0.6402 2.6508 1.6375 -3.2393 -2.2823 -2.1435 -1.5628 0.4271 2.2571 2.5048 -1.5933 -2.3629 0.6292 1.1956 0.8357 -0.8634 -0.1796 1.8589 0.6940 2.8309 2.5569 -0.4253 0.2913 0.7772 1.4180 3.4210 -1.9468 4.2236 -7.3361 -3.7802 -3.5980 -2.6029 1.9034 -0.7126 -2.3343 0.2344 3.6545 3.9405 3.0203 0.1937 -1.1906 -1.9012 -0.6667 -1.2590 -1.1021 -2.6650 0.1400 -1.4183 -1.2342 0.0547 0.1519 1.1906 -3.6125 -2.2485 -1.0820 -1.9912 -1.1521 -2.2527 -2.5383 0.9320 1.1572 2.0230 1.6579 1.3763 6.4432 2.1652 -2.0259 1.9724 3.2824 -0.4615 -1.1909 -2.4539 -1.1530 -2.1790 -0.7355 -2.0941 0.6246 1.7502 -3.3266 -3.4374 -2.6486 -2.2938 0.9286 1.3396 -2.1323 0.2739 1.2664 4.4111 1.3864 3.9050 2.8286 1.2861 -1.9752 0.7423 2.4137 1.8854 -1.1393 -2.5802 -2.9355 -3.6740 -1.8244 0.3099 6.1403 4.6215 -2.0636 -3.7172 -0.9400 1.4240 -0.3669 2.0205 0.6217 1.0369 -0.1561 3.9621 -1.3649 0.2912 3.5366 0.8537 -0.9376 -3.7333 -6.5447 -1.2107 3.3183 2.5758 1.9693 -4.8690 0.6212 0.0985 1.5746 0.2433 -2.6173 2.3890 0.6849 -1.1521 -2.0382 -0.8953 0.8771 1.1996 -0.9704 -1.3679 -1.1460 0.0582 0.2636 -1.9785 0.5235 1.6427 0.6362 0.7411 5.6052 -0.3533 0.6579 -2.9883 0.5989 -3.9928 -2.1937 3.8742 2.0056 2.3132 -0.4478 -2.0855 -4.3607 -2.1260 5.3544 1.9827 5.3407 -0.8346 -2.4624 1.1729 -4.3825 0.7623 -1.9429 1.4240 -3.3103 0.0394 2.0113 2.6733 1.2484 -0.2186 0.1156 -0.4856 2.4501 0.8179 -1.1164 -2.1952 -0.9719 2.0728 0.4002 1.1891 1.7518 -1.2571 -3.3136 -1.9012 1.8860 6.9767 2.4311 -2.0414 3.9100 5.5378 -1.7478 -0.8304 2.8523 -1.4075 0.1309 1.8232 -2.8868 -7.5003 -3.4867 -3.2756 -2.8584 6.2611 -7.4682 1.6940 3.5074 1.3392 1.0862 2.9814 0.8158 -2.6160 -2.3837 -0.8255 -0.1595 2.0087 -2.8876 -2.4727 -1.3574 -1.2864 -1.5711 -1.0772 0.4648 2.7262 2.1044 -0.3970 -0.1430 -0.9788 -2.1195 -0.7774 4.0804 3.7123 1.5082 0.2869 -2.5968 -2.0127 1.5147 3.7486 3.2447 0.6959 0.3308 -2.4516 -3.4598 -4.1669 -0.6870 0.2709 0.0724 0.3235 -1.9536 -2.7454 -3.3392 -1.9023 -1.0150 0.7511 -0.0539 -2.8386 5.2737 5.1053 1.4372 1.4046 1.4504 2.4912 -2.6526 -0.6188 -0.6530 -0.5369 -6.9550 1.3233 4.3542 2.9502 0.9929 -0.1186 -0.8657 -2.3452 3.5061 2.8348 -4.1741 -4.1264 4.6970 3.0117 -0.2849 -8.0081 3.4452 0.7819 -2.7443 1.7251 -4.0878 -0.8849 -4.7521 5.0067 -3.3510 -4.8233 -6.6328 4.8752 -0.7474 3.8614 2.6271 0.9119 1.0371 2.2968 4.3160 -3.7042 0.9900 0.4960 4.7952 -2.2300 0.5901 2.0654 1.7824 -0.5570 0.4874 2.7659 0.8232 -0.1306 -0.6795 -1.3143 -1.2480 0.9969 2.0563 0.1625 0.7346 0.0223 -1.6836 -2.9087 -4.1058 0.1406 -0.5074 -0.8373 -0.8579 -0.0460 -0.0854 -1.4221 -0.6935 2.5302 2.2014 2.2225 0.5896 1.2715 -0.7624 -2.7997 -5.3296 4.0372 3.2176 -1.4146 -1.3705 0.0565 -3.8190 -1.1051 1.5169 -0.5542 -1.5591 0.2921 -2.1144 1.6664 2.8275 0.7745 2.6977 4.4021 -0.2010 0.0685 1.3158 -0.8045 -5.9834 1.7874 -2.1592 0.9509 0.6749 -0.0635 0.3751 0.6561 0.4718 -2.3144 -4.9191 -3.0907 0.5499 -0.3498 1.2370 2.6699 1.5353 1.6809 1.2117 -1.3733 0.0977 1.3610 0.0102 -0.4207 0.8139 -2.9454 -1.1694 1.1826 3.5742 4.3331 1.4143 1.7017 -1.2428 4.8459 -4.4642 -0.0684 -1.7273 -0.1932 -2.6041 -1.4272 0.2873 -0.9676 -0.1422 -1.2013 -1.8690 1.2475 -2.8884 -0.3842 -0.3588 2.7759 -2.0060 -2.2023 -2.6599 -2.5791 -3.1221 3.2645 1.8131 2.8630 6.3144 -4.2619 0.7589 -0.7608 4.8657 -0.8104 2.3449 0.3057 -2.2411 -1.3084 0.6572 -0.3790 0.2674 0.5337 0.4996 0.8832 2.3616 3.9339 4.7846 -2.7473 -0.5167 -0.0864 0.9288 -4.3018 -4.0903 -1.8294 2.9658 2.7467 -1.9276 -4.0009 -0.7257 -0.6616 -2.0255 -1.2898 0.3022 1.5810 3.0521 2.5790 -3.2369 -0.4791 0.4455 0.1138 1.1032 0.9003 -1.5708 0.1285 5.2204 -2.8190 0.8203 0.5992 -1.3205 -2.1549 5.0256 -1.6050 0.5506 -2.8092 -0.2831 -1.6376 -1.8233 -0.0177 2.5319 2.0586 0.9166 -1.5417 -0.3071 -1.4039 0.1090 -0.1359 -0.4821 -0.5060 -1.1903 -0.1205 1.3010 0.0989 0.2280 1.3298 1.4648 0.7280 0.0076 -1.4837 -0.1633 1.2525 0.9437 -0.0019 -3.9783 0.5988 -4.0941 -3.4220 0.4966 -5.4678 6.0636 1.1749 -0.1830 3.3518 3.5480 1.4243 2.5791 -5.9065 -1.8723 -1.6703 1.3990 6.8845 1.8643 -1.2344 -3.7475 -1.1880 3.5819 1.2282 -0.2187 -0.8194 -0.0683 0.6784 0.9405 -0.1871 -1.0635 -2.3089 -1.7476 -2.3377 -1.8039 -0.2123 0.7402 0.8810 0.7063 -3.8015 4.2698 1.5426 -0.7508 -2.5319 -1.4606 1.0638 -3.8848 1.2060 2.6878 -1.2315 -0.1629 -2.2730 -3.3361 -1.6208 1.9855 3.4308 -0.2120 -1.4559 -0.3738 2.3568 2.3629 4.2004 1.5564 1.6137 1.4225 1.6668 1.3266 0.0460 0.1831 -0.3664 -1.4348 2.5690 2.2918 1.6955 1.6680 -1.3807 -1.0884 -1.0980 -0.5844 -1.0295 -3.6955 -5.3616 1.7128 -1.8066 -4.0653 -3.8214 -0.9531 3.4797 0.7961 -2.4955 -2.7851 0.0025 0.7872 1.0652 1.5456 -0.4352 1.9173 4.6258 0.3691 -0.1501 -0.2351 0.4458 -1.6777 -3.1299 -1.6947 -1.1535 -2.1999 -3.2226 -0.9846 -2.1533 -0.6467 2.0938 2.1307 2.9065 1.5181 3.0875 0.0486 -0.2157 1.3461 0.7741 2.7320 0.4413 -2.0098 -0.0651 -1.1313 -3.1454 -1.8173 0.4664 2.3278 3.1806 -3.0726 -1.5969 3.6994 0.6478 -0.6833 1.0635 1.1405 6.7102 -4.8934 -4.2029 3.4752 -0.0933 3.0911 3.1320 3.6764 1.2247 2.0977 -0.4399 -3.9470 1.4276 -0.2596 0.5511 -6.4999 -0.9385 3.2215 1.7397 -2.0786 -2.6160 -3.0150 -2.0586 1.9218 -0.2304 0.5955 -0.9572 -3.8115 -1.2133 0.9600 3.0247 8.6360 5.7851 6.1244 0.7094 -2.4410 -1.1712 -1.7901 -3.5399 -2.8318 -2.5468 -4.9596 -0.6022 0.6141 -0.5845 12.5835 1.8094 0.1352 1.7718 0.9427 -1.3690 7.1277 0.0421 -2.3404 -4.6650 1.4653 -2.4880 2.6056 -10.3828 -8.1067 4.1108 -1.2481 -1.8330 -2.7827 2.6214 2.9658 -0.2617 0.2806 -0.2164 2.8550 1.9755 -3.5301 -1.2350 0.9311 0.8713 -2.2265 -0.6005 2.6386 2.7666 -2.3603 -2.5163 1.6854 1.0161 -7.8883 2.8489 -0.9445 0.6006 -1.3214 -5.0651 -2.1702 -0.0289 0.1003 2.2883 0.0424 3.4686 2.0494 1.6327 -1.6152 0.1220 -2.8666 -2.2261 4.9579 -2.2581 -2.7323 5.9663 -1.3666 -0.2364 -0.3999 -0.9988 -2.0227 -0.0610 -0.5411 -2.2113 -0.2283 -1.7150 1.0239 4.2760 1.9603 -3.0526 -2.5894 0.8611 5.2528 3.4951 -2.2336 0.7875 4.7609 3.7023 0.7955 -3.1291 -1.3671 0.8798 -0.9947 0.2668 0.5762 -0.9479 -4.5541 -0.6922 0.0699 -5.8412 4.2302 5.0652 1.3544 -2.4661 -0.6224 -1.0865 -2.6815 -0.9958 1.6109 -1.7618 -2.5561 1.0357 -1.5863 -2.2811 3.4491 1.1806 -0.2855 -0.1380 -0.0202 5.6861 0.8289 -1.0913 0.5986 -1.1493 3.2455 -3.0884 1.7353 3.1908 5.0898 -0.4602 0.0751 -2.1427 -5.0910 -3.1667 -3.3291 1.9531 0.4802 -4.8101 2.2518 2.4380 0.6439 -7.3548 -0.0689 1.8997 5.7170 0.9491 -1.1588 -3.1119 -3.4525 0.2538 1.3345 -1.0500 -0.3870 -0.0472 0.1522 4.0806 2.8886 3.8741 -1.9507 -2.9183 -0.3828 -0.0805 0.4136 1.1466 -3.1863 3.5818 -4.1654 -5.7362 -5.0041 -0.9889 4.1884 4.8135 1.5658 -2.3781 0.8425 7.5151 7.3977 3.9243 0.6283 0.9194 -5.0741 -1.9566 0.2100 -4.9786 0.8760 -2.5989 -5.3114 2.2992 -1.9803 1.2150 9.1545 -2.1960 -2.8749 9.6686 0.5512 -4.1700 -1.1338 -4.1549 1.6645 -3.1643 -1.7800 4.9896 0.3390 -0.0421 -1.0391 -2.0347 1.0740 2.1840 0.9247 2.0617 -2.1994 -4.0653 -1.5118 -0.9397 1.3781 2.9104 -0.8864 8.5382 0.5495 -3.5922 -0.2482 -0.5485 -0.9604 -1.8453 -3.1808 0.3575 3.5141 2.7621 1.2101 -0.3665 -1.1827 -0.5351 0.4822 0.7598 0.8241 1.4976 -0.8943 -2.8067 -2.3512 -2.0448 0.3706 -0.9201 -3.9192 1.1431 0.4761 1.9809 -1.7817 1.1939 -1.2195 1.7524 -4.7374 1.1520 0.0973 1.5475 2.2848 -7.7870 2.0346 0.5213 2.8861 3.1077 1.1974 2.3936 -1.4248 -0.2888 -1.4706 -1.4588 -0.7677 -2.0426 -2.9918 -1.8722 -1.4336 0.4207 1.4107 1.0509 -0.1714 0.2221 1.3054 0.5884 3.1454 1.8747 0.1510 -0.5701 0.5457 2.7058 -0.0854 -3.4859 1.6593 1.0024 0.3202 1.0267 -0.2368 0.1208 -0.7272 -1.0487 0.2686 -1.0197 -1.3131 4.1829 1.0297 1.7779 -3.0898 -0.7777 -4.5532 2.1765 -0.3100 -0.4886 2.9341 -0.2895 -2.4210 0.9438 2.9490 1.2447 -0.4279 -0.4133 -0.2487 0.6464 0.1859 -0.8613 0.0690 -2.0024 -3.5783 -0.9123 -2.3469 0.3089 5.3909 -1.1710 13.8818 0.6217 -0.6459 -3.4218 0.8331 0.8918 2.2009 4.0596 -3.0380 -7.3862 -3.2105 -2.2108 4.7972 -5.3735 3.8870 -1.8190 -0.5123 0.9752 -3.6921 -0.8383 0.2536 -11.0226 4.4625 -7.9396 8.6657 2.6088 -1.0215 0.4492 -5.0641 2.7194 1.1735 2.2070 3.3733 -0.2605 5.5319 3.5989 0.2759 -3.6185 -2.9338 -3.4591 -0.2533 -1.2245 -1.1924 -0.1962 0.6099 -2.1289 -2.0002 -2.0390 -1.5592 0.7879 0.1165 -0.9325 -1.5485 0.4552 0.3883 1.9054 2.3495 3.9138 2.3594 0.1886 0.1750 3.7528 1.6899 -4.3270 -5.0437 -3.1410 -4.7768 -1.9628 -4.5893 5.9435 -9.6773 -0.4601 3.0571 1.2797 0.1161 3.5574 3.7157 -2.0222 5.9308 6.7823 -0.6999 -2.9933 -3.6606 -0.6207 -1.4032 -1.1364 0.2530 -0.9004 -2.7685 -4.3142 -0.7561 0.8142 -0.4715 0.8444 2.0053 0.5983 3.3363 4.4913 6.9146 0.4673 1.0959 -0.0886 0.2379 3.2725 1.2016 -1.1581 -1.3640 -0.6268 -0.3678 0.9051 0.7593 -2.2902 -1.4578 0.6349 0.5115 -4.4984 2.2315 2.2535 -2.7867 1.5345 3.6055 3.8842 2.1794 -0.7568 -1.0500 -2.1686 -0.6731 -2.0718 0.8001 -0.6819 1.1112 0.5707 -2.4862 3.1489 2.6767 2.5134 -1.9147 -4.1519 -2.4548 -2.0802 -1.9388 -0.7447 -0.8349 0.1123 0.1251 -1.3476 -2.6413 -0.4770 5.6864 -1.8563 -3.3514 -0.5309 -1.6295 -1.3453 -0.4664 4.5930 1.1909 2.9264 0.9356 1.5944 0.5951 -0.4177 -0.1304 0.5462 -1.3265 1.4534 1.6425 0.9730 0.8946 2.1586 4.2557 0.8968 -5.0524 -1.9576 2.6089 0.6571 0.7918 -2.2504 -4.5907 -1.7480 -1.6456 -2.0706 -2.4462 -2.5983 -2.5056 2.0863 -0.9159 -0.8806 -0.8052 -0.7776 1.0285 0.4522 1.5131 3.4530 4.9330 -2.7752 1.7750 2.1982 -0.0181 -0.0006 2.2117 0.6658 -0.1647 -0.7769 -0.3291 -0.0686 3.1830 1.8603 1.0488 -0.7866 -1.0352 1.6465 0.2395 0.3989 -1.2496 -1.9498 -2.6996 -7.5216 1.3320 3.9951 1.0405 1.3681 2.7153 3.0279 2.8206 1.9933 -1.5434 -2.0223 -1.0490 -1.2756 -0.1434 0.2554 0.8858 1.3178 0.3714 3.5670 -3.1912 -1.0147 -3.0243 -6.0993 -0.8348 -2.4017 -3.6731 -2.0399 -0.2474 -1.0640 -1.1488 1.3352 2.8367 5.1498 -0.0673 1.7148 2.0672 0.7800 -2.8302 2.8981 -0.7525 1.3119 -2.4119 -0.6222 3.0927 2.0509 2.4548 -1.3001 -3.9942 -0.7486 2.8523 0.1569 -4.3404 -10.5627 4.2087 4.2968 2.7013 -1.1646 0.2008 -2.4272 1.8708 0.5192 -2.3092 2.4416 0.6449 -3.5216 -3.8362 2.1329 -1.2999 0.6434 -2.5079 3.1409 -0.9430 2.1409 -0.9005 2.6639 5.8420 2.2508 -0.1834 -3.5407 -2.0329 -1.9827 -0.2675 1.5565 5.1512 4.1361 0.9497 -3.1897 -6.0608 -4.8346 -0.7128 -2.1849 -2.1809 0.1265 0.3295 0.2665 1.1233 -0.4722 2.7945 1.1909 0.4093 1.9529 0.6380 0.5674 -2.0255 1.8944 3.2610 -0.6543 -0.1603 1.6419 1.8339 -4.1284 -1.6495 -7.4417 2.7611 3.0349 -5.4696 5.3754 0.2729 5.1700 0.7296 -0.1265 -1.6533 -2.6659 -7.1882 -6.8851 -0.9549 2.6573 1.6288 -0.3149 -2.2361 1.6706 4.0565 3.2723 -2.0478 -0.6505 2.7769 4.9536 1.8310 -4.1026 -0.8540 2.2409 0.8671 -0.7209 0.8703 1.1461 2.9551 0.5102 0.4539 9.1307 -3.4339 -1.5513 -2.2902 -4.1038 -6.0580 -0.8757 3.5830 2.5081 -1.9449 0.3605 0.8645 0.6768 -0.2206 -2.5809 -4.5091 -1.0618 1.6342 0.5890 1.0199 0.7070 -0.4636 -0.7393 -2.0902 -4.3948 -1.8491 2.8967 1.9263 0.6394 4.9955 3.9485 -0.2145 -1.3652 -1.4955 -0.1736 -1.2527 -0.6868 0.0359 0.5854 0.7286 -0.5988 -1.0892 -1.2358 -0.5524 -1.8766 -4.8554 1.3154 3.0969 1.2141 0.4785 0.5435 0.9660 0.9526 2.5969 -0.3662 -3.4429 -2.5359 -0.7902 1.6794 1.3950 0.9304 0.5281 2.0451 -0.2820 -0.7620 -2.3113 -2.5279 -1.2407 -4.6199 3.9276 -1.3637 2.0692 2.0266 2.4150 2.8601 -0.0841 -1.4504 -2.5295 -2.1914 0.0160 -1.5806 -3.8581 -1.8751 1.2410 1.4792 -0.0268 -3.0304 1.1672 3.1034 -0.0043 -1.7750 1.0722 5.8103 3.7335 0.7830 -1.2601 -0.9248 -0.9753 -1.1580 -0.4657 0.9286 0.4457 -0.7164 2.9298 6.0232 1.1288 -9.2201 -2.6002 1.0866 3.5907 -0.3994 -0.8783 -0.4493 3.0463 -0.1320 -2.6865 -1.7683 0.5719 4.2697 0.4434 0.9403 -0.1787 -3.9995 -1.4954 -2.9666 0.5871 0.7458 -0.5643 -3.3758 2.4009 1.3630 3.2345 2.9305 0.6423 -1.0943 0.2605 -0.1269 0.1894 0.8801 5.6065 4.4842 -0.3360 1.6337 -1.0080 2.2349 -1.3371 -3.4195 -1.5849 3.4658 -2.7632 -2.8878 0.2535 -1.0857 -3.4858 -0.9736 0.5903 -1.1309 -3.8731 -2.8181 0.6957 -2.1930 -3.7976 -0.1684 0.3131 0.8609 0.0568 -0.1356 5.9915 2.3704 3.9840 0.5840 -1.9366 -2.6479 0.4937 2.7608 -1.4917 0.6707 -1.8279 0.4736 -4.3226 7.6508 -0.6770 -1.0388 1.6577 3.4357 2.1210 -1.6783 -1.9394 -0.4857 0.0446 -2.1769 -1.5641 1.5895 1.4750 -1.9161 -2.4617 -1.4865 0.9268 3.7356 1.9298 -1.0879 -0.9003 -0.6573 -0.4536 1.1463 2.5279 -0.9025 -2.1547 0.5579 -1.4546 -2.5618 -1.1020 1.7633 4.9058 -2.2707 3.2436 2.0698 1.3674 -1.4618 -0.4269 1.2764 0.3160 1.2237 0.7208 1.5117 1.4584 -0.5527 -0.7757 -2.7217 -4.0792 1.8261 2.7197 -3.9546 -1.7508 -2.0101 0.2659 1.9357 0.5705 -1.8509 -5.0017 -3.7512 -2.7574 0.2996 -1.1250 0.6895 2.7521 3.7090 3.4556 6.5334 -3.5389 -3.8970 -2.9436 0.7650 1.5177 2.3717 -1.2532 -0.7651 -0.7634 -1.6900 -2.3167 -1.0574 0.9291 -0.7963 -1.4770 -1.6646 0.5558 0.7009 3.4059 9.2719 1.4172 2.4588 -0.7901 -3.7873 -1.0613 -1.3173 3.2264 0.6063 -2.4159 -3.8529 -1.9936 2.6889 2.5115 0.8341 0.8209 1.2008 0.7255 -2.1489 -1.1543 -0.6443 2.0479 -0.7011 -0.5619 -0.0820 0.5538 -1.6613 0.8900 0.2673 1.2328 -0.1459 2.5186 2.3429 -0.5461 -0.5497 1.9452 5.1637 1.5156 -3.9805 -1.5621 -1.5331 -2.7711 -2.2357 0.7958 -1.6083 -2.3152 0.5758 4.0233 3.7838 3.0862 2.4680 -0.8644 -2.4804 -0.9694 -1.9035 -3.4966 -3.9590 -3.9724 -1.2080 -1.6237 0.7915 0.4354 0.8419 1.1287 1.8538 2.3476 -0.2827 -0.5315 1.6742 2.6296 -0.5391 -1.8812 2.7171 6.8646 3.9934 -2.0577 -0.8537 -4.3316 -2.4473 -2.8864 -0.3456 -1.9169 -1.4494 0.4578 1.9608 -0.1673 -0.8898 -2.1559 -2.4800 -1.5001 1.3457 3.3362 2.6367 1.4331 2.3397 3.7557 3.4063 1.6588 1.2723 -0.3658 0.5614 -2.5827 -5.6096 -3.4952 -4.1966 -1.5564 2.1965 0.1567 -1.6324 -1.8735 -2.1011 0.8687 2.8596 1.0227 5.0782 -3.8186 -0.4012 -1.0627 -1.0858 2.3105 2.5822 -1.0014 -0.6915 1.2628 0.1273 -4.3120 1.7113 0.5493 0.1877 -0.3065 0.0805 0.1700 -0.4682 -0.7192 0.7521 1.1935 -1.2445 0.5061 3.0407 3.3122 2.9044 2.0613 -2.6946 -2.8479 -1.4855 -3.4536 -1.5377 1.2611 1.2112 -0.4954 1.5849 2.8817 0.5597 -3.2189 -1.8993 -2.3996 0.0235 -0.9270 -1.1263 -1.6443 -3.5163 -1.2543 1.8410 4.5628 1.0754 -0.1607 1.6406 -0.8759 -1.6975 0.2532 6.4042 -3.4246 -2.9858 1.9661 -3.2513 -4.0109 -0.5134 2.5545 -3.0437 -2.1093 -3.6915 4.1398 6.0036 -1.3456 1.3628 -1.0285 5.2940 8.8405 -7.2360 2.8239 7.1563 -1.4248 -8.0410 -1.9196 1.8187 -0.9320 -3.1134 1.9133 4.5783 5.5866 -1.7440 -0.1615 -9.2039 4.4457 -2.5424 2.5822 -3.4268 -1.9594 -0.1440 -0.0014 -0.5248 -1.2740 1.9184 0.2637 0.9658 3.9879 -1.7646 0.8739 3.6824 -1.4748 -0.5493 4.1940 -0.5892 0.9704 -2.3393 -5.2036 -1.0319 -1.8153 -0.8777 -1.3975 -2.8688 -1.3150 0.6005 2.0795 2.0158 -0.0187 2.3273 5.2446 3.1910 0.5420 -1.0394 1.3294 -4.6550 -1.5318 -1.6999 0.2573 -0.3684 4.3069 1.2137 -1.8464 -3.0026 -0.9539 3.1554 3.4215 2.0922 0.4828 1.6102 1.1857 1.5577 -1.8593 -2.9907 -3.0640 -4.6355 -1.6614 1.3592 1.5116 -1.8833 0.6407 1.1519 1.5429 -0.7369 -1.7269 -1.6671 -0.1290 -0.7049 0.8116 -1.2198 -4.0157 -5.1437 -3.1965 2.3418 0.7111 2.6992 0.5585 1.9829 4.9644 1.1355 0.6364 2.1072 0.9870 -5.1572 -4.3363 -1.0839 -1.3521 1.8709 0.8132 -0.2938 -0.2079 -2.5242 -0.8999 2.3401 0.7392 3.1549 3.0568 -1.1375 0.0963 1.1908 -0.0136 -2.4241 -0.4209 1.6339 3.4114 3.5889 -1.4100 -3.5651 3.1831 2.0426 0.5548 -2.0177 1.6429 -3.2634 1.5780 -4.1305 -0.9389 0.1651 0.4588 -0.0751 2.0687 0.8544 -0.3821 -0.1978 1.0057 2.3289 3.0174 -0.3330 2.0178 -0.6679 -0.1993 -1.9170 1.6018 -0.3834 0.6526 1.9588 0.3355 -2.0462 -4.1767 -5.5379 2.7809 0.2282 0.4820 1.9051 -1.7350 -3.4716 -3.3685 -1.3005 0.1251 -1.5366 -1.9516 -2.1469 1.2541 3.7123 3.0390 0.8154 2.3154 2.5014 0.0685 -3.7166 -2.7442 -0.5589 1.8753 0.2528 -1.7122 -1.5279 0.3471 1.3429 -0.0809 -1.0979 -0.5556 2.8899 0.2864 2.1800 1.7006 -3.4442 -2.6681 2.9174 1.9107 -1.3132 1.1471 -0.3191 -2.5131 -2.6788 2.7236 4.0318 2.9420 3.1336 1.5351 0.4800 -0.0086 -1.0945 -1.1975 -0.4758 0.1588 -0.4970 -0.2437 -3.5219 -3.3061 -0.2958 -0.6947 -3.5085 -2.7613 0.0475 0.2365 -2.4104 -0.4597 -0.9262 -0.2261 1.8983 0.9162 0.3544 -1.0767 2.3229 2.3748 -1.6417 3.4712 -3.6716 0.1472 5.6077 -1.7531 -0.9915 -0.4352 0.4089 0.1890 -1.7111 -0.6401 -0.9353 -0.5743 0.3365 -0.6869 0.9392 0.8776 -0.2201 0.7815 -1.7487 -0.2509 3.0732 0.2971 3.0442 -6.4696 -1.5332 1.3136 7.9582 4.7035 0.4178 -1.4784 -2.4577 -0.6662 -2.4183 -3.1348 -2.0591 -4.3423 -0.2080 1.5975 -2.6953 0.1211 4.7779 4.5315 2.0419 0.8642 3.0824 1.7461 -0.8529 0.9231 -0.3502 -2.7586 -2.7081 -1.4853 1.1577 2.4953 -2.0279 3.1643 -1.1352 0.2786 -0.1650 2.4230 -0.5282 -0.4006 -3.7227 -3.9091 0.2639 -0.0395 -5.0339 1.4635 7.9381 -1.8279 -7.5321 1.8947 0.9696 -7.1991 7.7502 4.8838 -5.2722 5.2271 6.4012 -8.2785 -5.8271 0.4487 7.6786 -0.4051 0.3015 -0.5211 -1.1563 -1.5548 -0.8506 -1.7742 -0.6679 0.3853 3.9695 3.1450 -3.5632 -0.3392 -3.3757 1.3514 4.4934 -1.2754 -0.4248 1.0022 1.2601 -3.0667 3.2388 3.6288 -0.3263 -3.6989 -4.3941 -3.0073 -2.9882 -2.7834 -3.8873 2.3701 6.1068 1.0432 -2.8444 0.1460 -2.5272 1.8208 2.6818 7.7176 0.7699 -0.8674 0.6588 -0.0766 1.9350 3.3452 2.7012 0.4707 -0.8282 -0.7703 -3.8252 -2.8814 -0.2389 -1.3895 -0.9376 0.2572 -3.4418 -2.3763 -1.8695 7.4789 2.6558 0.8567 1.9741 0.6363 2.1993 1.9072 2.2211 3.7376 -0.0455 1.3289 -1.0736 -4.8817 -4.0284 2.4624 1.0596 -3.8101 -3.8498 0.8895 -0.5176 -2.3743 1.3083 3.7465 3.5865 0.1979 0.4072 -1.1714 -1.4598 -2.1688 -1.4971 -1.1953 -2.8028 -1.8515 1.1483 3.7654 -2.6485 1.2635 -2.4929 -1.4965 0.6356 3.3756 0.6583 -1.7286 -0.6675 0.3769 1.1159 0.0587 1.4828 1.2140 6.0165 1.2212 -3.4526 -2.4321 -0.8616 -2.2663 -0.0017 -0.0046 0.2615 0.0517 -0.8546 0.5801 -0.1095 3.4455 1.4668 -0.0851 -2.9245 0.0932 1.2861 1.1250 -0.6317 -4.0005 -4.4206 -1.5097 1.3643 -0.1238 -0.8046 -2.4500 4.2293 2.9297 3.2594 -3.0122 0.7633 2.2354 -0.6334 -2.7256 -1.7876 -1.8603 0.6549 0.1244 -1.8100 -1.7636 -2.7665 1.0419 3.6034 2.7187 -5.8124 -0.9848 2.8478 -0.3193 3.4835 2.5353 1.2184 3.0602 4.3425 2.4260 -0.5623 -0.8919 -0.2730 1.3901 0.4772 -0.5219 -1.3754 0.4815 2.4087 -5.0472 -5.6009 -2.8901 -2.4607 1.8809 3.5997 3.9232 -4.3669 -0.0346 -0.2122 -0.2290 -0.9365 -0.4221 -1.9300 -2.3572 -2.9919 -2.2394 3.2115 2.4104 2.4249 -0.5682 1.5001 -1.3857 2.6140 -1.8866 -5.6180 7.3368 1.3135 -0.4484 -1.1107 -1.9143 -1.2992 -0.5392 -1.0181 -0.6562 0.5186 -0.7919 -1.4379 -4.0959 2.4107 1.5417 0.0557 3.4844 1.7096 -0.8275 1.7994 2.0983 0.5209 -0.4549 0.1830 0.2262 -2.2572 -1.5931 -0.7026 2.6431 2.6098 4.0381 -0.4805 -2.9134 -3.5443 -0.6536 -2.1551 2.0956 1.2393 0.2979 0.9155 -2.0621 2.5682 -0.1092 -1.2889 -2.5682 -2.3378 -1.7259 -0.5628 -0.6114 -2.8295 -2.5690 -3.3678 -2.2669 0.6023 0.3823 5.9006 5.7607 1.9871 0.6942 1.2471 3.2445 0.4186 0.6515 1.8638 -0.3444 -2.0169 -0.6995 -2.9879 -2.4596 -1.0847 -0.8686 -2.3776 2.0331 4.8909 4.1694 1.2690 1.4079 1.9289 1.8820 -0.9986 -3.0198 -3.2390 1.7936 1.2201 -1.9231 -2.6761 1.6107 7.0585 8.8031 2.9894 -2.3291 -6.5825 -1.5641 3.0126 -4.0096 -4.0332 -0.6223 -0.5985 -0.8359 1.2689 0.3585 -2.9410 -1.2384 -0.3295 2.3565 3.0657 3.2204 1.0890 -0.5456 0.1283 2.9904 -0.0970 -5.2104 -1.5801 -2.5751 -2.3243 -0.3014 2.6881 0.5623 -1.5424 -1.9388 1.5825 -2.6631 -2.8705 -3.6445 -0.1511 1.0369 4.6018 2.7993 -0.5794 -0.1152 0.9196 4.1279 -0.7083 -3.1505 -2.1870 -2.5145 -0.8667 1.9629 3.7810 1.8562 -1.6347 -3.7832 -0.9972 1.0298 0.8253 -2.4369 -3.3827 -2.6892 -0.8231 -1.0820 -0.0375 -0.7937 -1.8433 -0.5302 3.8146 2.3123 1.6122 4.1004 5.6672 -1.0450 0.0824 -0.1000 -2.0200 -0.5383 2.2917 0.8366 -2.2105 -0.8495 2.1052 3.4989 -0.0827 -0.3031 -1.7154 1.3463 5.4572 -3.0939 -0.0935 -1.1704 -5.2410 2.4300 -0.5476 -3.7789 -1.9485 1.8338 2.9833 0.6807 1.8337 5.1432 -0.4532 0.5973 -0.6042 0.8753 -1.5014 0.4292 -2.2709 -1.2993 -0.1667 -1.6955 1.1932 -6.0865 4.2353 -0.4920 0.0568 -2.6837 -3.2294 -0.2920 -0.6790 2.7843 3.0219 1.7934 -2.2037 -3.0967 1.8829 0.5782 -1.6334 1.9235 4.5606 -4.2261 -0.0121 2.2982 -0.3517 -0.6429 2.5139 2.3667 2.2000 -1.8905 -1.3195 -0.0575 -0.6720 2.8832 0.3828 0.9744 2.9334 -0.6053 3.2595 2.5269 0.0016 -5.8119 -0.9627 -4.8744 -3.2058 0.8584 0.9302 0.3630 -0.3058 -0.9190 -1.1142 -3.3748 -2.6210 0.9921 -0.0440 -0.2277 0.8060 1.7478 2.0581 0.3900 4.4187 5.8430 -6.6138 -3.1191 -0.0680 0.3281 -0.0986 -1.1173 -1.9481 -2.4515 -1.0863 -1.3545 1.1448 2.8412 3.7501 2.6741 2.7224 1.8554 1.4018 -3.7195 -2.9142 -1.2068 -4.2062 2.9680 0.4170 0.2181 -1.3017 -1.3715 -0.9326 -1.1639 -0.6082 2.2905 2.1838 3.1530 3.3746 2.0088 -0.8055 -1.0486 0.7007 -1.7960 -0.3898 -2.4327 -2.4057 -2.1793 2.5060 -2.4912 -0.4925 1.9418 -0.6320 -1.0125 1.8048 -1.5360 -1.7457 -0.3001 0.5912 0.4548 -1.4661 -1.5177 -0.5917 5.6377 -3.6558 1.8798 3.7139 3.0715 -3.6543 -1.0770 1.7774 3.6503 0.2492 -2.5625 -1.2989 0.3077 -1.4511 -0.7454 -1.0293 0.9281 -0.0970 -1.4180 0.5544 2.0070 3.1415 2.3666 -0.7117 -2.8143 -1.7770 -1.8815 -2.2795 -1.1580 1.0865 -0.0453 1.6476 0.0859 -1.8231 -0.7599 -1.0013 0.0173 -0.6116 0.0110 0.6057 0.1048 0.3920 2.8241 -0.4223 -0.2920 3.4995 0.0544 2.8654 4.0202 1.6845 -1.8534 -2.9185 -1.4228 -3.6388 -2.0210 -2.4342 -3.4254 -1.7961 2.7218 6.6019 2.2780 -0.0758 -2.1727 1.0645 -0.3083 0.7762 -4.2733 -4.7209 -2.5347 -4.1434 -2.3709 0.1195 0.9517 -1.8672 1.5567 3.4133 0.9511 6.1534 5.0591 3.3617 4.3448 -0.8335 0.0697 -1.2096 -2.2085 -1.8188 0.0539 1.0537 0.6965 0.7551 -2.3328 -4.4085 -1.7944 4.6582 -1.8228 -0.3800 0.4342 0.9079 1.1727 -0.2538 -0.9787 1.6403 0.3758 0.2889 -1.0679 1.0017 0.9075 0.5642 -0.6092 -2.8652 -3.3111 -1.2627 1.6981 0.5866 2.5675 2.8589 1.6024 2.0917 0.4354 1.0342 1.2054 -2.7817 -0.5893 0.0883 -2.8199 -1.4010 0.8980 -0.3869 -0.4833 2.6033 -0.0884 -0.3699 7.2953 1.6809 0.8531 1.6498 -4.4993 0.0072 -1.9421 -1.8001 -2.5825 -3.6475 -2.3221 0.6178 0.3128 2.2040 -6.0307 -1.3653 -0.3786 0.0247 0.6616 0.7676 3.3234 3.0965 0.7765 -0.6097 1.0441 -0.9142 1.6186 -9.2158 -4.2017 2.5866 2.2875 2.0945 2.8697 1.5646 -0.3542 -0.0280 4.1718 2.5282 6.0404 2.9659 -1.0269 -1.4497 -5.6815 -3.9178 -3.9280 -6.4467 -2.5804 -4.6703 -1.3963 3.1437 4.3980 -0.5477 2.7035 6.0758 -1.5432 3.8376 1.4210 -1.1449 0.4892 1.3172 -2.0383 -2.2564 -2.1791 3.0272 -4.0284 -1.3615 -1.9716 -4.9880 3.8800 2.5715 -2.8049 5.2429 -2.0992 4.6290 1.9112 0.2401 1.2090 1.9221 -0.5051 2.0731 -0.8317 -1.4381 1.1319 0.2604 4.8570 -4.2486 -4.2343 -0.1445 2.6106 1.1135 -3.4590 -1.7688 1.2613 -1.9600 -4.6396 -2.9689 0.9238 0.7657 0.5574 -0.3650 -3.7022 -4.0756 -5.0362 0.3243 3.1880 1.7270 -0.7319 2.9308 3.7592 2.6099 -0.3181 4.3233 1.9146 -1.1863 0.1980 -2.2883 0.9330 3.8033 -3.0797 0.0635 -1.8773 -1.7344 -1.0161 0.1560 -0.1661 -3.8927 -0.3658 0.3316 1.1226 1.9542 -1.0490 -2.2906 3.6658 5.5322 -0.8058 -0.9870 1.9765 0.8081 -0.8891 1.6549 -1.7178 -0.2062 -0.6134 3.7968 2.8384 4.3753 1.2045 -6.0029 -1.5145 -3.5656 0.8785 -0.8278 0.9419 -1.3448 -1.9513 2.4604 2.9573 3.3043 2.2986 1.0394 -0.4185 -0.0890 -0.2841 2.2073 1.6514 0.3367 -1.0792 -1.4676 -0.8850 1.7747 0.0695 -7.9932 -5.3486 1.4171 -2.8766 -0.2007 0.3439 0.7801 -0.0362 -1.8832 1.2162 3.7611 1.5511 -0.2914 4.4891 2.4265 0.5170 1.2791 -3.0822 -4.3172 2.1550 -1.7349 -2.5924 -1.5044 -1.3853 -0.5001 0.6365 -1.9167 -1.9693 -1.6932 -2.5123 -3.1209 -1.5363 3.8772 1.7176 4.5613 2.2969 -1.7507 -0.4549 2.7398 -2.2572 -0.1132 1.3625 2.0183 -0.2587 0.7517 0.0083 -1.5665 -2.9108 -3.8211 -5.3272 -2.2879 -3.3006 3.2010 3.9688 4.6713 3.8047 3.4665 0.6502 0.9612 0.0958 -1.5002 1.1994 -1.8059 -0.0767 -2.8888 -3.8572 -1.6523 2.8392 3.7128 0.7093 -0.0657 0.9823 -1.6073 -2.1810 -1.5064 -0.6392 2.2679 1.7322 -1.1001 1.0422 1.4078 2.4192 -1.5382 2.1069 1.6101 -0.6015 -1.1106 -0.0731 0.3657 2.1738 0.6411 -3.2826 -4.2217 0.0005 4.1333 2.9287 4.0221 -1.0117 -7.1186 -0.3700 1.5812 0.1654 -1.9391 -3.3989 -5.4211 -3.3823 0.1417 -0.2090 -2.9282 3.8367 5.4395 2.1603 -1.6658 -0.0286 3.8151 -1.6236 -0.4057 -0.8473 2.3634 0.3434 0.0424 -0.3374 2.1055 3.8095 -5.8994 -4.2159 -2.8701 5.1790 -4.6791 -5.6257 0.4437 3.5907 6.0531 -2.4206 -0.6190 2.0474 3.5867 7.1475 -4.6633 4.1906 1.2868 -11.1492 4.8074 -5.2857 -2.3511 1.8870 -1.8753 -2.8109 0.3363 -1.9008 -0.4090 0.8741 -0.4525 -6.3796 0.4485 2.7092 2.5765 4.4129 4.7975 -0.3228 3.7712 2.7353 -2.7608 -3.9913 -5.9775 -2.6898 8.0565 3.5971 1.2374 3.4590 0.3338 0.6958 -1.1912 -2.2406 -2.0748 0.0857 3.9701 1.1276 1.2332 0.6559 -3.8152 0.9255 -3.3971 -2.4876 -2.5150 -2.0296 -1.0642 1.0080 0.6973 -1.7376 -1.5703 1.5923 -0.7283 -0.1226 -1.7315 2.4167 -0.4425 -1.5075 3.8846 0.5544 0.8966 4.6270 0.2600 2.8767 0.9007 0.0796 -2.1662 -1.5086 1.0148 -1.3370 0.8661 0.0749 1.4614 3.1800 2.1743 -1.6449 -2.7523 -2.7644 2.2901 -1.9100 -4.8716 -2.0883 6.1248 3.6336 2.1044 0.4628 -0.6805 -0.0353 -2.3281 1.0902 3.0334 -1.9070 -2.0882 -2.9673 0.1514 0.3556 -1.0151 -5.4063 2.3884 2.5624 -3.2553 3.9458 -0.0449 -1.3869 -1.5992 1.4579 1.4992 1.7691 0.8878 0.9518 0.7305 -1.5050 -1.6287 -1.6402 -0.3868 2.7983 -2.2046 -0.5051 0.1956 7.1623 2.4667 -5.9139 -3.1488 -3.5734 -7.3577 -7.1566 -1.3669 4.3200 2.1415 0.4237 -0.1707 3.4434 2.6751 2.2337 0.4895 2.5968 1.0123 -0.9145 -1.1189 0.9048 2.1474 0.4312 -1.1607 -5.2465 -1.6283 -2.7428 -3.2948 -2.2122 4.3049 4.7808 4.7619 0.2262 -0.6089 1.1643 3.3590 -2.1676 0.2134 -1.1502 1.4193 1.4168 0.3538 -2.8694 -0.0796 -3.4905 1.2508 2.0451 0.4490 3.1300 4.3899 0.1675 -1.3519 -0.0668 0.4245 -1.7121 0.2301 -2.2070 0.3069 3.1491 -7.5721 2.7986 3.8554 -4.1493 -1.6472 1.5232 1.5300 -1.0621 -1.4488 -0.8044 -0.3900 1.3086 -2.5549 -4.3776 0.5264 2.2421 -0.5299 -2.7363 4.9582 1.0929 1.1601 2.8351 1.9896 -4.9813 -0.2808 6.5366 -2.5283 -5.5972 -3.4516 -0.2385 1.8382 -1.6024 0.2804 8.8284 4.4416 -6.1238 3.7728 3.4763 2.9323 -2.3678 -5.5110 -4.9901 -0.1283 0.0084 0.4242 1.9342 1.5660 2.2346 1.0331 -0.6035 -0.4461 0.0271 0.7571 1.1796 0.2963 -0.9807 -0.5607 -1.4711 -2.5426 -4.1871 2.4178 0.2030 -1.7949 -3.6655 4.6035 2.2188 0.9702 -1.9037 -2.3323 -0.9270 -0.7473 0.4463 4.0069 3.2380 1.6378 1.5850 -1.9473 -1.2130 -2.1935 -1.9102 -3.3249 2.6456 1.0820 -1.3884 0.0570 1.8633 1.2717 1.6148 0.3758 2.9711 -0.8914 -1.2864 1.1672 2.0355 1.2245 -3.7030 3.7200 -3.0675 -1.9250 2.2356 -0.7355 0.5128 -4.4528 -2.9595 0.0288 -2.2984 -0.5209 0.3609 2.6675 -3.6910 -0.3519 6.3822 3.0237 -0.1277 -2.2553 1.0403 0.9970 -1.3107 -1.9745 -0.1646 4.8839 0.1333 -1.3256 -3.4240 -2.0441 -2.3190 2.2812 1.2138 -1.1727 -3.3340 -5.2226 3.6390 2.5124 -1.5642 3.4166 0.5330 1.8016 -0.3986 -2.9233 -3.7394 0.9982 -0.0060 -1.6833 4.3443 1.6231 -2.2576 -2.6516 -1.1317 -1.2013 0.7393 0.1827 -1.2343 -3.2192 2.3728 2.7817 1.6779 0.8901 0.5320 1.4647 3.7014 7.0412 -2.6912 -2.5104 -1.2474 -3.2389 -1.7690 -1.9167 -2.8243 0.8559 1.6454 0.6817 0.5231 -1.2522 -2.6542 -3.2288 -0.2864 0.0091 0.5513 -0.6182 -3.9328 4.4973 6.4951 0.4313 1.6808 1.1116 -0.2744 -1.5780 -1.8323 -1.2019 -0.3620 1.2906 -0.2832 -1.9105 -0.8966 0.8634 -0.4648 -2.3172 -1.9676 -1.7065 0.8232 -2.4736 3.5667 5.3037 4.3018 1.1191 -0.4003 -1.4016 -2.6548 -3.2373 -2.1471 -0.9075 -1.1057 1.1084 0.0584 0.6994 -2.2697 0.1501 -0.0187 -0.2177 -1.1214 2.5501 5.4533 5.8815 -0.4561 0.0366 2.4755 2.6766 3.3810 2.8797 -1.3067 -1.2604 0.4792 -1.5575 -2.0569 -1.1560 -1.3594 -0.7176 0.2831 1.2557 -0.1965 -2.5773 0.8488 0.4905 -3.0053 0.4234 -0.5334 -1.6405 -1.4903 -1.2901 -2.0368 -2.4054 -2.0422 -1.2649 -0.3204 2.3946 2.8987 2.5774 -1.9494 -5.6321 2.8212 3.6550 3.9850 1.2152 1.3991 -0.3406 -1.8395 -0.9841 -0.1468 -2.7046 0.5709 -0.0486 2.3079 -3.1973 5.7249 -2.0537 -0.8947 -0.5513 -1.5588 -0.0660 1.7712 1.4939 0.7539 0.8995 0.7376 -0.2144 -2.1136 -6.4960 4.0091 -2.7287 -2.8520 0.0889 4.2865 1.1559 1.4489 2.3747 -0.2811 -1.6675 -2.1043 2.4825 1.5983 3.0151 1.4924 1.4598 1.4466 -6.6156 0.3044 0.5145 0.8314 -0.5726 -1.4732 0.5522 1.0454 0.7132 -0.3595 0.4703 4.9451 2.9593 3.4319 -1.7835 -2.7963 -3.6604 -2.7125 1.2113 -5.0055 1.3846 2.3458 3.2640 1.8110 0.4827 -1.6195 1.9882 1.8256 3.5857 4.1301 1.6235 -5.1588 -3.8052 -1.7214 -1.0231 1.3522 -0.3858 -5.6155 -1.3895 -1.6421 -0.0480 3.7883 2.2512 0.5915 3.6595 3.6582 1.2917 -2.0747 3.0623 -4.8462 -9.6783 -4.7828 -4.1622 -5.2776 -1.2559 2.3471 0.9386 6.0401 4.8334 -1.7435 1.3593 -0.5609 -1.1658 -2.4817 -6.5550 -4.6100 -0.2509 0.7628 -0.8368 3.8495 3.9220 3.0356 2.0951 1.5781 3.7313 2.8834 -1.2291 -3.4270 1.5639 1.6072 -3.9116 -1.4268 0.2383 2.3216 0.1248 2.0796 1.5987 0.8138 -0.2165 -2.9254 -1.2364 4.4075 -3.3005 -5.5475 2.3771 2.6523 1.5551 2.5380 1.7514 -3.2529 -4.5520 -0.7746 0.9904 0.2665 0.8152 1.7416 -1.7222 -3.8193 0.6115 3.8698 -1.5065 -1.1919 -1.2590 -0.9540 1.8722 -0.1520 -4.1283 -0.5510 0.1951 0.7420 4.9546 -4.9471 -2.6326 -0.7296 -2.9661 3.2611 5.2949 1.3584 -0.3484 0.0238 -0.5367 1.0370 -2.4283 -1.4686 5.4446 2.1704 -0.2969 -1.9436 4.7301 0.0591 -5.0816 0.8281 -1.2416 -3.3762 -3.9320 -1.3993 -3.0591 -0.9292 2.5927 2.1047 2.4478 0.5704 1.2666 0.5289 -0.2372 1.2696 3.8278 3.1348 1.0903 -4.3525 -1.1346 -0.7430 -0.7480 -1.2610 -0.7625 1.0816 1.6556 1.2019 2.2812 3.2082 1.5688 -1.3094 -2.0639 -2.5822 -2.2528 -1.3400 -1.6246 0.6375 2.8900 1.4778 -1.3150 0.8081 -1.3233 1.3342 -0.4629 2.2543 -1.7177 1.7285 2.2425 -4.4738 0.6367 1.5497 -1.2988 0.3335 -1.1590 0.1744 -4.2648 5.1183 0.3072 -2.6556 0.8684 4.0404 1.9094 -0.2474 -1.1600 -0.9167 -2.2516 3.9300 2.7965 0.9719 -0.3105 2.6858 -1.8089 -6.0898 -5.0707 2.0812 -0.0971 -1.5043 0.0458 -1.0273 2.0234 0.1375 0.2390 1.2366 1.5253 1.5536 1.1452 -3.3801 -3.1595 -2.7411 1.0175 6.4814 1.4661 -1.2521 -3.3744 -3.5432 -5.4270 -1.3071 4.3703 3.6696 1.3422 -0.0191 0.4401 -0.0551 1.2610 4.9915 1.8859 4.2946 2.2533 1.2460 -0.3261 -1.8245 0.5397 -0.9620 -2.4208 -1.3984 1.3654 -2.3100 -4.0785 -1.5595 -3.3235 -4.1713 -3.8609 -3.6233 -2.2953 0.4590 -0.2721 -0.1506 -1.7078 0.0356 1.5074 1.0712 0.7854 0.7858 0.0168 -0.8160 0.0810 0.5445 4.5197 7.1653 -0.0742 -2.9674 -1.4650 1.0679 3.2208 3.0814 -0.6959 -0.9252 1.0871 0.1680 -0.9317 -0.6966 -1.1041 2.3656 1.0874 -0.7021 -0.5843 -5.9540 -1.0591 4.3651 0.6421 -2.3881 -1.1722 -0.2878 -1.3100 0.1054 2.7187 3.1286 1.3950 2.5138 0.8551 -1.0485 -2.7991 -1.7081 -1.9009 -0.2092 -1.1297 5.4416 0.9634 -4.8359 1.6679 0.3475 0.6761 -0.9160 -3.3303 -2.5114 -1.3053 -2.4606 -1.5909 -0.1066 1.2867 0.1087 0.6627 -0.9380 -2.1561 -4.1442 0.5530 3.6775 4.3771 4.5604 3.2095 1.8172 1.9142 1.3748 -1.2576 -1.3958 0.4060 -0.4725 -1.2643 0.8079 -0.6725 -3.4257 -3.2969 2.8901 -0.0329 4.2131 0.8390 -2.3538 -2.2196 3.3371 -1.2078 1.9496 3.6573 4.2326 1.1863 1.8389 -0.7982 -0.8176 0.9762 -2.1796 -2.4082 0.4600 -2.1099 -0.1300 5.8933 -3.2271 1.4122 -3.0287 -5.0286 0.1022 -1.9807 0.7977 0.4131 0.7926 0.7439 -2.7150 -3.1860 -1.6061 -0.5456 3.5797 0.0724 -0.4993 0.4656 -0.7994 -0.5991 0.0862 3.6997 -0.5342 -0.3047 0.9064 -0.7678 1.0025 0.1292 1.8299 -0.2181 -0.3367 2.6298 -1.6812 -0.7903 1.0473 -0.5336 -4.1833 2.6382 0.9480 -0.3031 -1.3062 -0.6706 1.4954 1.1070 -3.9483 1.1443 -2.8220 -2.9373 -1.7368 -1.1113 0.7976 1.0210 2.2881 1.7823 -1.6829 -2.1388 -0.0636 0.6047 1.3691 0.5354 -2.8472 1.9900 -0.2414 -1.8409 2.3664 4.6674 0.8100 0.5306 3.2216 2.7904 2.3222 -0.0940 -1.2977 0.6699 -0.3153 -2.0729 -0.4524 0.1611 0.0422 -0.9458 -1.6284 -1.0590 0.4113 -0.2203 -0.7025 -2.1711 0.6469 2.9521 -0.5269 -2.8396 -2.8290 -0.4167 -2.6035 -1.8694 -1.2710 -1.1950 -0.6111 -1.1719 -0.0843 4.1129 3.9912 -0.9572 -5.8704 3.6319 4.0418 2.8690 -1.7675 0.6361 2.5132 2.0830 1.8929 -1.5061 -3.5844 -4.2969 -2.8299 -0.6870 0.8308 1.3968 0.3529 4.0998 -1.6161 1.3306 0.5600 -0.5129 -1.6573 2.7621 -4.0964 -1.5173 1.2551 0.2978 1.5682 0.3497 -1.4315 -2.0554 -0.5756 2.5392 0.7900 3.4286 -2.9558 -1.7034 -0.8459 1.0513 5.1871 -2.5294 1.2695 -0.0257 0.0328 -1.2155 -1.2836 -0.9363 -1.2229 -1.6930 -1.8595 0.3399 -1.5276 -1.0107 6.4040 -1.9072 0.7733 0.6079 2.8719 3.0211 2.3070 -3.5448 0.3434 -0.5002 -6.6638 -3.5679 2.7288 3.1465 -1.8044 -3.2026 0.3954 1.5738 0.6840 -0.5029 1.1915 -2.4277 -2.8920 -0.4612 0.5352 2.0495 4.9107 0.7993 0.1809 3.3270 -7.7693 -2.7271 -0.5302 -1.6862 -2.6750 -4.1941 6.2224 4.1406 1.2187 -0.8566 3.2170 2.7593 3.3324 -2.3093 -1.4924 1.2643 -2.9807 2.3328 4.6730 -1.9398 -0.3214 0.7654 1.4453 1.0347 0.7854 -0.0281 0.6653 2.1756 2.5539 2.4886 2.8291 -2.3264 -5.6113 -4.1472 -2.1955 -0.1794 -0.8897 -2.9162 2.0658 1.8062 0.0689 -0.0814 0.5156 -0.9104 1.9645 1.4890 -0.7622 -1.4287 1.4489 2.2731 1.0561 3.0605 2.5928 -3.3062 -2.8865 -3.6767 -3.9506 -2.1727 -0.4806 5.1867 -2.7262 -0.4080 -7.2353 0.2532 -1.7494 4.8406 2.4161 -8.2402 -0.3311 1.0612 3.3760 -0.5373 3.2052 3.7144 -2.9286 10.7765 4.9188 -8.1638 -0.8809 -1.3612 3.8706 1.5102 0.3780 -7.4590 -0.9006 2.4899 2.4680 -2.4184 -1.4186 0.2908 2.1056 2.4328 4.2260 -3.9887 -6.7913 -1.0651 2.4289 0.5874 4.8024 -3.5488 -1.2691 -4.1749 -2.7407 1.4930 1.4665 -0.9212 -1.4630 -5.1747 -2.2251 0.8474 0.8540 6.6525 0.1651 -0.5706 -0.3287 3.1547 -1.4600 0.8291 2.5923 2.2733 3.8347 2.4921 1.8361 2.4264 0.2839 -2.7167 0.2831 -0.5469 -0.6398 0.3108 1.0194 -2.1389 -0.8456 -4.7666 -2.5049 1.2075 -5.6326 1.3761 3.1197 1.6020 -3.7739 -1.8529 0.6063 -0.8541 -1.6370 3.6233 0.8975 1.9643 3.5106 -0.3623 -2.4744 -0.7625 -0.7853 -1.5705 0.2237 -0.6207 0.0761 -0.4742 1.5632 2.7029 1.1570 0.8704 1.6827 1.2654 -0.5848 -2.6900 -2.6615 -0.9589 -1.6641 -2.7103 -1.4381 -0.4901 1.8045 -1.5216 -1.1394 5.0021 4.1235 1.5550 -3.7877 2.1859 2.5420 1.6423 0.7395 0.8846 0.9016 2.7752 3.3824 2.5574 0.4625 -2.0442 -1.8686 -0.1860 -1.7933 -5.0038 -3.5773 -1.2917 -2.0519 -1.8556 1.0146 2.7701 -4.4081 -3.4569 -0.8021 0.2773 2.5574 2.3862 1.3118 0.1408 0.6688 1.9053 -1.5497 -0.5855 1.2457 -0.5521 0.9630 -2.2470 -2.8924 -3.7430 6.1844 2.5961 0.4138 -4.3685 -4.3743 3.3166 1.9814 -1.9703 -1.1246 -1.8788 1.8555 2.5293 -0.6354 0.3032 3.9855 0.4439 -1.3412 -2.6733 1.5434 2.8406 -1.3900 0.5430 -0.9949 0.7752 0.5153 -0.3382 0.7590 -0.3806 0.6362 -0.0446 0.6992 -2.3407 -2.2180 -0.8794 1.9075 1.9883 2.6403 1.4665 1.1384 1.9497 -0.4373 -6.8420 -0.3690 1.5979 3.6520 2.5947 0.9915 -0.4587 -1.5761 -1.3889 -0.8595 -0.0002 0.3336 2.0392 1.9215 -1.5962 -2.1409 -2.1868 -2.0225 -6.9604 4.1862 2.2427 0.7081 1.2472 1.2274 -0.7827 -1.3963 0.1531 1.0164 1.1220 1.4236 4.7449 4.1970 -1.6566 1.4602 -0.4324 -5.0812 -4.6776 -3.2034 0.2020 -0.8325 0.5609 -0.8996 -1.1981 -0.4982 -3.3678 -3.1656 -0.4840 -1.6889 1.4162 1.8691 1.8944 0.6984 2.1971 0.7659 -0.3399 -1.0540 -1.9648 4.8986 2.2357 -0.4350 -0.8795 -3.0303 -1.1024 -3.6351 1.8563 2.2581 0.9526 -1.3180 1.0520 0.9676 1.4472 -0.2536 1.6459 0.5539 2.7964 -2.3045 3.1405 -0.8848 -0.5008 -4.0553 0.4143 -2.0566 0.3509 1.5804 -0.1468 -1.2009 -5.1236 -1.6316 -0.6083 -0.2262 -3.8727 -1.4106 4.1461 2.8353 5.5841 2.0344 -1.3445 -0.2669 1.6597 0.4425 -0.7448 0.4237 5.5027 3.4466 -0.9733 1.1101 0.3187 0.4016 -0.8934 -4.1773 1.2529 -1.0141 1.7716 -1.4207 2.0071 -6.7629 -1.4260 -0.8769 -1.9766 2.0620 1.2241 0.5250 0.4342 -1.3517 -2.8754 -3.0586 0.6098 2.2679 1.4929 1.4608 3.1011 1.5060 -4.8013 -7.5268 -0.6504 -0.5030 2.7780 2.8557 1.0462 3.4571 -0.7675 3.5730 1.8714 -0.1581 -1.7722 -0.3433 -2.7056 -3.0806 -1.9100 -3.1355 1.0548 -1.9906 0.4699 0.0873 2.5566 -0.1726 -0.8702 2.1464 4.3968 5.0995 -5.1171 -0.6968 -1.4896 -0.0495 0.8149 1.4216 -0.0327 -1.7535 -2.2313 -0.3210 1.9568 4.8784 -1.9324 -1.8058 -2.6431 -3.7316 0.3685 1.1306 4.9893 -0.2577 1.3848 -1.4341 -1.1497 -1.8056 0.1413 2.5710 2.9390 0.7055 -0.4196 -0.2614 0.1608 -0.6195 -0.3637 4.1643 0.3576 0.0984 2.2749 0.4728 -7.3150 -0.1921 -0.3248 -4.2895 -7.0396 -4.8802 -1.5844 1.4442 1.8886 0.5829 0.1608 -2.6352 -1.0632 0.4985 3.2097 6.3270 9.0622 8.0546 -0.4311 2.1200 -2.0642 -2.9293 -6.4319 -2.8918 -0.9105 -1.1049 -1.3358 0.0333 -0.4429 1.1140 3.2177 -0.2479 -0.9423 2.0518 -3.4204 -3.3752 -1.5080 4.5184 3.5104 0.8370 0.3279 4.1906 -3.6215 1.1012 2.8300 4.9338 4.9135 -1.4413 -4.6933 -2.9852 -2.2104 -2.0709 -0.2446 -1.7323 0.4460 -0.3491 0.7293 1.2549 1.5520 -1.6591 -0.0263 -1.3091 0.9607 -3.8105 -2.2705 -0.4801 0.0030 -1.0835 -0.8967 -1.8480 4.3428 2.2775 1.1261 1.5948 4.4091 3.5564 -2.1928 -2.8051 -1.2385 -1.6399 -0.9968 0.5731 1.3796 4.5581 4.2833 0.3675 -0.5438 1.9400 3.0816 0.3261 -0.8096 -2.6679 -2.1086 -0.8131 -4.9186 -3.6340 5.7405 0.0185 0.6308 2.5276 -4.0355 -1.8846 -2.0583 -1.2863 -0.2640 -0.1222 1.8197 -0.8215 -1.4173 6.3047 -1.3136 2.0735 -0.1627 3.0262 1.5599 -2.3044 -2.9292 -2.1284 -0.0060 -0.2974 -0.4468 0.2977 -1.5818 -0.3043 -4.9833 -4.4641 1.6692 5.7638 4.6547 3.7525 -0.9610 -3.9550 -2.2488 0.7885 4.2621 3.6322 2.1375 -6.9698 1.9153 2.5541 -3.4886 -0.8469 -2.9081 1.6869 -2.2603 -5.3537 -1.9240 -2.3796 2.8412 5.8922 -3.3838 0.7866 3.3273 0.7220 4.1493 -2.8075 1.2195 -4.1220 2.7912 5.5751 -0.9361 -3.7960 -2.0281 1.8743 1.5687 0.9347 -0.0119 5.1974 -0.9505 -1.5819 -0.0387 -0.2355 2.4835 -2.7180 -2.1816 -1.0347 -1.5606 -1.4552 0.4355 -1.6713 -3.1551 -0.2146 4.3156 -0.5064 0.6473 1.6157 0.4031 -0.7786 0.4664 2.3609 -0.8533 -2.7426 0.0584 3.6047 -1.3728 0.0256 -2.0089 0.7575 -3.1106 -1.7839 0.9710 1.5709 0.6757 -0.1854 -0.4792 0.2327 0.5721 1.3762 0.9344 1.6367 0.2158 0.6455 0.9744 -3.1471 -5.2734 -4.3577 3.1646 3.1365 2.2803 1.2303 -1.9960 -1.5643 0.6037 1.5540 2.1016 2.3825 0.8004 -2.0847 -2.7548 -1.5073 0.1971 -0.2707 -0.7690 -1.8324 -0.6385 -4.5361 -6.8801 5.4599 2.6660 1.1252 2.2850 1.3862 1.3159 -2.3092 8.5984 0.5061 -0.6741 -2.4670 3.2934 -0.6680 2.0327 0.6889 -1.8602 -0.9325 -1.2001 -4.3458 -2.5628 0.6948 -1.1889 0.4479 2.5950 1.2931 -1.9416 0.8421 1.5717 0.5751 0.5951 0.4783 -2.2142 0.3553 6.0828 3.0287 -2.3343 -3.2264 -0.7759 -2.0090 -0.3873 -2.4778 0.6768 -3.4990 -0.8957 4.2903 -0.6766 -0.6942 8.6603 -5.4134 -0.8727 -0.3504 -3.3092 -0.5586 -0.2913 2.8905 -3.0583 -2.9724 -1.7470 3.3250 -1.1022 -4.4193 7.6704 0.5149 -0.7173 -3.6000 6.0453 0.6802 1.0947 1.2451 3.8611 4.5266 1.8951 0.7625 6.2260 2.5223 4.8966 1.8380 -0.3753 1.3861 -7.5361 -6.8810 -3.7307 -4.9193 -2.5727 -4.5778 -0.3414 -1.4648 -1.9631 -1.4302 3.2813 2.7021 -1.3306 -3.5822 -3.4123 -2.6251 -2.5540 -2.9830 1.7868 1.1612 1.7944 0.6471 3.7619 3.5844 -0.4360 2.9666 0.0957 -2.6065 -0.4815 3.7667 3.2609 1.4317 5.8806 0.0973 -3.3441 -3.2874 -4.9485 -1.6589 0.7537 0.3424 0.9215 3.8135 -4.2041 -1.8751 -0.8917 1.0067 2.0227 4.0705 -1.6316 -3.7042 -1.3612 1.3654 1.6949 -0.0461 -0.4280 2.9316 0.2615 -3.3312 0.4341 1.2323 -0.8543 -0.8620 -4.8579 -6.1758 3.1382 4.9340 3.1899 -4.1097 -4.1313 -2.7947 -1.2657 -0.6757 0.0158 -0.2664 -0.7288 -2.8256 -1.9407 0.4965 2.0938 4.2596 1.7443 2.0920 3.1468 3.6217 1.9383 0.0884 -0.7586 -0.5474 3.7117 4.4423 -1.1991 -3.2034 0.2008 -1.1999 -0.3645 -0.3658 -1.5068 4.3945 -0.5362 -1.4209 -0.9138 -0.0750 -0.9590 3.3133 2.7513 -7.0608 0.5385 -0.2792 1.0180 0.1758 4.6409 0.9990 0.8572 -2.2212 -4.3593 1.0210 5.0992 3.1964 1.4429 -1.7425 -0.9214 -2.3245 -1.3975 -6.8773 2.8027 -1.1862 0.0560 1.7064 0.3215 -0.2518 0.0527 -2.5377 -4.4163 -3.0416 -0.1822 -1.1887 -2.9410 0.6761 3.4948 1.6101 1.2626 0.2612 5.6220 -3.9114 -1.0915 4.1888 0.3661 -1.7866 -1.1389 -0.0309 -0.9349 0.3853 1.9195 0.2339 0.3886 0.9745 1.4208 2.5313 4.3943 -4.6360 -2.5445 -2.1898 -2.5330 -0.3527 4.7621 0.5928 -1.4558 7.8057 -3.8468 0.8827 0.8768 -4.7631 -5.1731 0.0664 5.3199 -1.7890 -4.3428 1.9966 2.9221 -4.5512 5.1760 0.5820 -0.2561 -0.2887 0.6505 -0.8654 -0.4024 -2.5780 -0.0834 0.1440 -1.6096 -4.1370 -4.8240 -1.6968 2.0832 4.4015 2.3414 0.0326 -1.7738 3.0088 2.5338 2.2405 0.7822 -3.4270 2.3235 0.3274 -0.0892 2.1843 2.5930 1.3745 1.7373 2.8715 2.7285 -1.1274 -0.1783 0.9497 1.0004 -0.2974 -0.2919 0.6463 0.2228 -1.5085 -5.8708 -3.6910 -0.8536 -2.5539 0.0647 -1.6643 -0.8616 0.2098 2.2486 4.6647 3.8540 2.3834 1.3656 -0.2611 -0.7523 -0.2703 2.8630 1.1570 -1.6263 -4.3844 -3.5346 -0.0484 -0.8649 -4.9645 0.4867 0.6824 1.0939 0.6691 0.3291 -0.2396 -0.9714 -0.9487 0.4056 -0.8422 -1.0662 -0.8121 -1.8756 1.8363 1.0681 3.7568 2.7493 -2.2790 1.4171 -4.9986 0.0258 -2.0461 -1.9677 -1.8134 -2.6831 -3.0621 -1.6874 2.2873 0.6491 1.7878 1.1808 1.5028 -1.1540 -1.2923 -0.0603 -3.5107 6.4917 4.0814 1.4288 0.0396 -0.1721 1.7926 0.6400 0.0107 -3.4114 12.2384 -4.2391 -4.1672 -5.5139 -1.6966 5.3015 -0.9447 -4.0014 3.1093 5.2076 5.6201 2.3962 -5.3615 -1.8057 -0.2628 -4.9121 1.2301 -0.2653 0.0535 -2.1294 -3.7763 -2.5405 -1.3165 1.3892 1.1754 1.8095 2.3931 -0.5310 -0.8291 0.5926 -0.2725 -7.2218 1.8619 3.8534 3.4226 1.1011 -4.1789 -3.5276 -0.8324 -0.4176 -2.4000 0.0369 0.9853 5.4189 -1.8625 4.5416 -0.0534 -2.2531 -1.8390 3.0263 1.3992 -0.9141 -0.2291 0.6856 2.4454 -0.0313 -6.4975 -4.6128 -3.3675 -4.8986 -0.8354 2.3584 -0.6088 4.1352 0.6068 0.7211 0.2750 -2.0557 0.4476 2.7831 4.6078 -0.4014 5.9849 2.1061 1.2312 -1.9795 1.3230 1.1384 1.2773 1.7150 -0.7509 -3.8269 -1.1290 -0.1851 -3.0673 2.4551 -1.8006 -0.5768 2.5367 -0.4358 1.0236 2.8956 4.5161 -0.4242 -3.2309 -3.4534 -0.3567 2.4123 4.0459 3.3988 2.0862 -2.1774 -5.1260 -1.0930 -2.2588 -0.1938 0.5021 -0.2723 1.0175 -2.6722 0.0196 -1.3546 -1.6702 0.8080 0.6509 2.2336 -3.1316 -2.5501 -0.7668 1.9764 1.8647 -0.0801 0.9053 0.9563 -1.0947 0.3992 -1.9982 2.2428 2.0122 -5.4193 -2.6261 -0.7274 0.7121 1.7109 3.9486 1.6660 -7.9949 4.0953 3.7255 -1.4546 8.0933 1.7853 -4.2627 4.4208 9.6075 -2.0281 -0.5418 -3.5660 -1.9219 -6.8006 -1.4426 -1.8720 6.0536 -6.8174 0.7937 0.1276 -1.9787 -1.0115 0.4548 -0.6009 1.0489 -0.3883 -3.8168 3.5539 1.8044 -0.8020 2.2377 4.0130 2.5264 2.9341 2.9402 3.1940 -12.1756 -4.5827 0.7140 -0.0649 -2.6937 -0.9969 0.6136 -0.2092 0.1112 0.1733 0.0276 0.6804 -4.1810 0.4835 3.1126 -0.8365 -1.6005 3.1133 -1.3297 -0.4657 2.8302 2.7130 -2.7204 1.1750 -4.2305 -1.0868 0.5304 -0.1415 -1.2124 -0.8981 -0.8790 -0.8763 -0.9777 1.0148 4.1145 2.1714 1.2310 -1.6938 -1.4429 1.2355 6.6877 0.2382 -3.2655 -0.5189 -2.1503 -3.4325 -3.4567 -1.0918 0.5993 0.3527 0.3437 0.2288 0.7821 1.0173 2.2607 -0.9887 -0.3595 4.4457 3.7070 1.5475 -3.7173 0.7682 -0.5101 -0.3462 -3.7019 -3.2897 -0.3993 1.1225 4.7873 3.2500 -1.8347 -2.0699 0.0727 1.2966 -0.1512 1.4478 -2.4263 -0.3987 -2.4159 -3.3225 2.8445 0.7735 0.8954 3.5197 0.0807 -1.1966 -2.9464 0.8465 1.6234 1.1215 1.2824 3.7187 2.3234 -3.7329 -7.3924 -3.2192 -4.4371 -4.8564 3.1927 2.3654 4.5154 -1.0330 4.4531 3.2910 0.0329 2.1961 1.8627 0.5090 -2.3566 -3.1635 -1.4865 -3.4766 -3.4834 -4.5095 -2.4040 -5.5450 7.4389 3.1752 2.6905 4.3345 1.8695 -0.0444 -0.0458 2.4056 -4.2525 -4.2615 -2.8448 -1.4174 -1.4188 -1.0941 0.0321 2.7304 1.6246 3.7714 3.6887 2.3979 1.9374 0.7696 -7.0469 0.1811 3.9202 4.8839 -3.2038 -0.3977 -0.4109 -0.9615 -1.1887 -1.3425 -1.0669 -2.7829 -2.9395 1.2890 1.6984 -0.5601 1.6775 -0.5469 -0.8102 -0.2298 -0.7565 0.3451 3.1792 2.2226 4.5535 -1.3689 -5.7264 -3.6531 -1.3521 0.1463 1.7110 3.1890 0.7838 -1.0176 -0.2195 1.4384 0.0207 -0.4968 -1.0491 0.1749 1.0739 2.0378 1.3580 1.2360 0.4429 -0.0980 0.7773 -0.8979 -1.2165 -1.9337 -2.9157 -4.0101 -0.3148 -4.6460 -4.2945 4.1770 5.5969 1.4549 3.5448 1.4079 -0.8343 -3.2017 5.5239 2.2268 -0.3838 -0.0607 -0.6985 -0.6307 2.4635 -0.5381 -0.2883 3.4018 2.1088 2.9180 -0.5123 -0.9613 0.0579 -4.3385 -3.8027 1.0743 5.0578 -1.8280 -2.2439 -4.7171 0.9386 2.5388 -4.5218 0.1558 2.8380 2.3948 -1.9436 0.6339 -0.7954 1.9788 1.5836 1.1696 -4.5526 -0.5640 1.4447 7.0584 -6.8023 -4.5393 -6.0449 -0.5031 6.1354 4.8739 0.3624 -1.2047 -2.0776 -1.5816 -0.7523 -0.4259 1.9866 -0.1702 -0.4710 -1.9514 -1.5113 -0.2099 2.7070 3.8409 4.1635 -1.6517 0.8031 3.1180 -4.9637 -0.0100 3.3248 2.1375 1.3785 0.2103 3.0519 1.4244 0.2968 -0.3016 -1.2728 0.9142 0.2763 0.9396 2.3345 -1.6742 -3.9431 -3.4421 -2.5066 -1.7463 1.1359 -2.5381 7.3832 7.8862 -6.4414 -8.9767 0.1372 -3.3099 3.3247 -2.2516 -2.6663 1.5419 7.2572 -0.6762 -1.4552 3.0048 6.9210 -8.5959 -2.6649 2.5301 -0.7893 -2.1588 1.3303 0.1631 -2.4438 -1.2379 0.9953 2.7203 1.9038 1.2786 0.3887 2.8669 0.3680 -0.1846 5.6338 2.1238 -1.0482 -5.2051 -1.0787 -7.2281 -1.5184 0.1722 0.1645 -0.9895 -2.0311 -3.1149 -3.2980 -2.1249 2.0221 2.1048 -0.3058 -1.0676 -2.5289 -1.4215 -1.7517 2.9140 4.1244 -0.6494 2.6877 3.2611 2.5839 -0.5792 -0.4639 -1.9119 -0.6903 1.0816 1.7980 1.1866 0.4220 1.5316 0.8944 -2.9810 5.6782 3.5367 -0.9955 2.4778 -1.9477 -3.1693 -0.0340 -1.9442 -1.8186 -2.6506 -3.9601 -3.1838 -1.3333 -0.9936 0.4708 1.8640 0.2776 -3.5639 -1.8523 3.8979 6.3274 1.9935 2.4867 -0.2835 -0.1329 -0.9778 1.4936 2.4315 0.5084 -5.4702 -1.9007 -8.9624 0.7258 -2.6244 1.8683 0.7413 8.1690 -2.3570 -4.2143 -5.3821 5.3979 -0.3396 -0.0209 2.4866 -1.7903 8.5769 -2.6396 -4.5135 0.4288 6.3503 2.3682 1.2735 1.0581 0.7198 -1.3884 -1.1783 2.7862 -0.3150 -4.4216 1.0457 0.8020 0.2322 -1.8255 0.9933 1.5522 4.2681 -3.4105 -1.8681 -3.1691 0.4773 0.1022 3.5273 4.7298 1.5753 -3.6041 -2.4060 0.8414 1.2204 1.0785 1.4517 0.9533 1.0682 -0.0095 -1.2482 -3.7150 -1.4924 0.0586 0.2151 -3.5086 -0.8381 2.6097 1.3046 0.1797 -0.8433 -0.8002 -0.6737 -0.7817 -0.0181 -1.8564 -0.0021 1.7429 2.1363 2.4019 0.8520 -1.2013 -2.3776 0.1614 -1.6535 0.2922 -1.4730 -1.1555 -1.9989 -3.7971 -3.5419 -1.7702 5.6208 1.6756 -3.4769 -2.2174 -0.5921 -2.9465 2.4449 3.2181 2.5732 0.5741 1.4008 -1.6104 2.6683 4.0017 -1.0706 2.6808 2.4971 2.2595 2.6039 2.5012 2.7248 0.3061 -0.5761 -0.0415 -2.4607 -1.2162 -0.0800 -2.7145 -3.3777 0.3468 1.3821 -2.9010 -0.5334 -2.3262 -1.0750 -1.4573 -0.7869 0.2356 -0.1795 -1.7997 -2.4756 -0.7083 -1.2917 -0.2409 1.8121 2.3854 -0.0780 -2.6742 0.8926 3.1169 2.4329 -3.2335 1.5184 1.6752 0.8566 1.3578 1.5299 1.0786 -1.5960 -3.3648 -1.6673 1.3592 5.7139 -0.3364 -0.8154 -1.0911 0.3285 1.2167 -6.5169 3.5759 0.3841 -3.4189 2.2520 -0.3564 0.3665 -3.9427 -4.1692 -3.9599 -2.7914 -2.7852 0.8501 2.1268 3.1929 2.9997 0.9798 3.7115 2.7044 0.8023 -1.3597 -0.1213 1.8505 0.8537 2.3570 0.4425 -3.7419 1.1259 1.7278 1.7181 1.0824 0.9378 2.2855 -0.4426 -2.0998 0.2868 -2.3258 -2.4774 -3.5030 -2.1920 -0.0403 0.0689 -2.1823 -1.7516 0.3348 2.6371 4.8097 2.6282 3.1949 1.4763 -1.8168 -2.3026 -0.1157 -0.0177 1.6877 0.8500 0.1002 -0.5211 1.2286 1.5164 -0.6411 -0.9348 -3.1872 0.1863 -3.1762 -3.7899 3.6345 0.6239 1.6179 1.2014 0.2608 -1.9920 4.7736 2.9884 -1.6687 -1.5700 -3.2904 2.3265 0.1217 -0.6529 1.1537 -1.3430 -3.2660 -0.7427 -0.3946 -0.8553 0.7078 -2.5785 3.3274 0.7827 -1.1641 0.3099 2.0930 -3.8923 -2.1233 -0.2174 -1.0352 2.3827 3.2008 -1.3061 -1.3553 2.0138 -4.8137 2.2926 -0.4492 0.2262 2.3061 0.7030 -0.6796 0.6702 1.2330 0.3286 -1.1249 -0.2281 0.9008 -0.4257 1.5252 0.1413 3.8708 -2.7125 -0.1048 -1.3046 -2.6469 -1.7645 -0.4236 2.6448 -0.6022 -2.0396 0.9147 3.7884 2.4844 -0.2561 -2.4529 1.8969 -0.1479 0.6950 -1.2549 -4.9008 -1.2459 0.9313 0.6906 5.2636 -1.1277 -0.2394 -2.2895 -2.5856 1.8753 1.6780 -1.6532 -2.7599 -2.2450 0.5197 -1.6003 4.4426 1.0934 -0.3109 0.9191 -3.4242 1.3304 -1.5208 -0.9853 -0.2434 3.9418 0.4425 -2.2543 4.6335 -2.0037 2.2658 -0.6139 -1.3935 -0.0563 -2.9550 -1.9056 3.4601 -0.3817 -1.6475 -0.2910 -0.5503 1.7727 0.0114 2.6384 2.8574 0.5346 -5.4829 -2.6161 0.9580 3.3952 -2.9553 0.0039 3.9564 2.2087 -0.9348 -1.5953 -1.3780 0.1552 -2.1548 0.7917 1.8242 1.6997 -1.8826 -0.8677 -0.7876 -0.2152 2.3842 2.1467 1.7116 -4.1110 0.7023 1.9303 1.0064 0.0165 5.4286 -1.1464 -1.0459 -2.0088 -1.2634 -2.1806 -0.6159 0.3372 3.4050 -1.1188 -2.8596 -2.3910 -0.5550 5.4226 -1.0697 -1.9937 -0.8683 0.0341 1.1306 -1.3868 -1.9833 2.9612 -0.7025 0.9705 -3.1777 4.1388 0.7353 0.3664 2.0843 0.2998 -0.4050 -1.1895 3.2137 -5.0324 1.1351 -2.3244 -1.0092 0.5101 2.3070 2.1852 1.5304 -1.7001 1.6095 -1.4570 -3.9762 -1.6422 -0.2532 1.3474 0.8974 0.9819 -2.2295 4.7058 -2.0380 3.1038 -2.5420 -2.3311 1.9713 1.0803 -1.0686 -1.2321 0.3041 -0.5899 -1.6032 -0.6543 -2.1903 -2.1676 0.3844 0.2905 -0.5787 -1.1285 -3.3703 -0.5637 0.3705 2.2696 8.3763 0.1004 -2.3313 3.6108 -3.7738 2.3534 -6.3897 3.9802 2.8098 6.2413 2.5170 5.1260 2.4541 -1.7202 -4.9921 -5.7179 -3.3204 5.3271 2.0124 -5.7657 0.7907 -3.2116 0.3230 1.0311 1.3660 0.9706 2.0785 2.0724 -0.0151 -0.8301 -1.1195 -2.8044 -0.9819 0.0417 0.0944 -1.2077 -2.2323 4.1593 1.4207 -2.7654 -0.5102 -1.0909 1.0182 0.5812 0.3232 1.7040 1.6371 0.0882 0.7883 2.0623 -2.4549 -1.7632 -0.0828 0.1245 -1.0882 -0.0487 -2.0254 -0.8118 -5.9132 2.5533 0.4880 2.8199 -2.1755 -1.4110 0.7926 3.1903 3.2045 1.4005 2.2246 0.4995 1.4795 1.0003 1.4155 -1.8108 -1.7649 -2.0289 -4.9177 1.9399 0.4644 -0.6846 -2.6827 -0.1356 -2.3372 -0.8774 1.8295 2.5713 0.4237 -1.6200 0.7250 1.2049 -2.5557 -1.7837 -2.0535 1.8608 2.0142 1.1559 0.4140 -2.2055 2.6316 -1.0207 -0.4407 0.0634 -6.4760 2.3566 6.2881 1.1780 2.2768 0.5492 3.6691 1.5956 1.5393 0.8045 -2.4474 -1.1396 -3.0192 -2.8013 2.1788 0.9584 -4.0593 -1.3318 -0.6033 -1.5164 -0.2224 3.1469 4.1918 -1.5853 -2.9401 2.4424 -2.0556 -1.6902 1.4657 -1.4987 -4.5783 -3.9175 1.8499 2.5001 -2.9926 -3.1367 4.3814 2.8761 -0.3135 2.0766 0.2838 0.7448 1.5373 1.7127 1.9184 1.9954 1.4552 0.6636 -0.0775 -1.4076 -2.7023 -2.4765 -6.0615 -4.2297 -2.8214 4.4402 0.5975 1.2302 2.2798 0.9178 0.1873 0.8058 1.4948 0.4584 -0.6762 -2.1053 -0.4098 -0.9510 -0.4347 -0.3909 -1.0508 -2.5837 -1.0389 -4.2899 -4.0647 3.8453 2.2675 2.8481 4.5950 1.4936 6.4165 4.7690 2.1643 -0.5306 -1.7418 -1.1821 0.4655 2.4797 -1.0005 -2.7835 0.6462 1.0540 0.1648 -0.2195 -1.2133 -1.6876 -0.2896 -1.1843 -4.2375 -2.0895 0.6591 -2.4247 -3.5305 -2.0684 0.7993 0.5286 -1.0223 -0.9537 0.6266 1.4075 1.4620 1.6652 1.3324 -0.3799 1.6047 -0.4030 -1.4183 -0.7574 3.5079 -0.6351 -0.7402 -0.5022 -0.0104 -0.1501 0.0126 -0.8303 -0.6338 0.0643 0.7573 4.3586 2.2234 -0.7379 3.8453 0.8151 2.8221 -1.4249 -1.4011 -3.5524 -6.4818 1.5666 1.2970 2.6835 1.2613 -1.8292 -0.9390 -1.6773 -1.9287 1.2477 1.3854 -1.9138 -1.0744 1.6338 -4.8418 -0.5580 -1.2900 5.2745 -2.7458 2.6939 -0.9625 2.2835 1.8861 3.1363 4.0321 1.7435 0.5233 -0.7855 2.0137 0.8065 1.2174 -4.0074 0.5860 -1.0339 -6.4815 -6.1251 1.1641 -3.9644 -6.3895 7.8222 2.0846 1.7715 3.9399 2.2907 1.6049 0.7588 -0.5727 -0.4203 1.1669 0.6185 -0.3417 1.2484 1.5946 1.7091 -1.8086 -4.7596 -2.8399 -3.9325 -2.0296 -0.6780 -0.7509 3.2019 -0.3222 0.6190 2.2698 6.3269 5.8198 2.6992 0.0601 -0.5335 -1.7361 -3.6667 0.2231 -2.3194 -2.0166 2.4960 0.1420 -3.4765 -2.9842 -0.3195 -1.1974 -2.0840 1.2403 -2.3646 -2.0313 0.7252 3.2474 2.8194 3.1981 0.9009 1.1286 -0.9170 -2.4531 -2.4020 1.6229 2.3317 -1.4971 0.7586 -3.2903 -2.1223 -1.2864 0.3911 2.1547 -0.4814 -1.6208 -0.2568 3.7660 2.5927 -0.5335 0.5221 2.1027 -1.7193 -2.1878 -1.5973 0.4487 -3.0208 -3.0695 -0.2839 1.2100 -4.2182 4.8800 1.3123 -0.8216 0.0172 1.0117 1.8195 2.2767 0.0322 -4.7072 -3.7244 0.2876 1.2946 -1.1268 -2.0514 -0.3229 1.5642 2.8282 1.4525 -0.2405 0.3745 -0.8299 0.8658 -0.5885 -0.7711 -0.1566 0.2456 -1.1305 -2.1400 -1.5832 -2.7023 2.6573 2.8982 -1.9439 -1.4435 3.2616 3.0544 -1.0646 -0.2393 0.2808 -0.6774 -3.3509 5.3938 -2.1609 4.7541 2.6519 2.9104 -0.9771 -3.4464 1.3102 4.9024 3.0997 0.1198 -0.6878 -5.0516 -2.6241 -0.1390 0.3260 -3.7625 -4.6033 5.7644 -2.7192 0.3330 -0.0774 0.0212 1.7356 2.6966 3.8703 -1.2640 -2.2040 -3.8688 -2.8745 -0.3830 -1.2433 2.7247 1.1808 0.5913 3.3839 -2.9426 0.1962 -0.6047 -3.1975 2.2593 -1.7694 -0.8337 -1.4857 1.6357 3.0084 1.4757 0.7496 0.4982 -0.8638 1.0294 3.8151 2.5480 -0.4944 -5.1598 -4.1575 1.6819 -0.9028 -3.0629 2.9081 -0.6201 -4.1737 -1.1372 0.4218 -0.3980 -0.2873 -2.0904 -1.4241 1.1799 4.8192 5.5695 2.1240 -1.9634 -0.1503 -0.2208 -2.6623 -1.2140 1.5287 0.1773 -0.4832 0.3844 1.1759 3.6352 3.0816 -1.1382 -0.8341 -1.2549 1.7627 -0.2610 -1.7582 -4.6767 -1.9887 0.8806 -0.2903 -2.9331 -3.3697 0.3291 -2.5313 6.3991 2.6926 1.0793 3.1054 0.5446 -2.7707 -3.1154 -2.4354 -2.1091 -1.9215 1.5263 -0.5089 -2.1954 -3.0602 -1.7502 2.0283 3.0940 3.1639 6.0315 0.1168 -2.3219 2.2755 0.3024 1.4017 0.2037 -0.1188 0.3630 -1.7809 1.2589 -0.0416 0.1426 -0.2900 -0.0669 -0.9365 -1.7637 -4.6543 4.5857 0.7173 -1.2893 0.7992 1.8632 0.4734 -0.8667 -0.6645 0.3054 -0.1583 0.3900 0.1223 1.1996 4.2148 1.7843 2.7706 0.9297 -1.0663 1.2711 -0.1675 -0.5861 -2.5452 -2.9107 1.2640 0.2394 -4.6672 -1.7254 1.3908 0.5115 -0.8577 0.3878 0.7710 1.2838 -1.2112 -1.2930 -1.9359 -2.3893 -2.5796 1.2692 3.1933 -0.2748 0.2489 3.4206 -5.3967 -3.2312 2.6326 4.0600 -3.1151 -2.4768 -1.4409 0.0820 -0.0650 0.8542 2.7545 0.8481 2.7775 3.2925 -1.1392 -0.5600 5.6459 -1.5505 0.7937 -0.2372 -3.8294 -1.7699 -1.1681 0.3038 -1.4631 -1.5744 -1.0602 1.2727 5.2755 0.7411 2.6424 0.9111 -1.5443 -0.8217 -2.4580 -1.9627 -0.3229 -0.7005 -0.1842 1.4410 1.1190 -0.0388 -1.7254 0.4532 2.6735 -0.1320 -2.0731 -1.2667 -0.0059 0.4063 1.1045 -0.6500 0.2919 -0.2343 -0.1432 0.5161 -1.3203 -1.9223 -1.8439 -0.3541 2.5902 0.7807 0.9691 0.6136 -2.5760 -2.1039 3.3039 7.5737 4.8510 -1.9280 1.3509 -0.0624 1.3149 2.3856 -2.8836 1.6777 1.6919 -0.2315 2.0672 -1.6292 -7.7877 -7.8864 -2.4230 3.2949 0.1825 1.4326 1.8802 -0.7600 -3.5028 -2.0654 -2.5905 -1.9780 -1.3931 -2.0377 2.0912 -0.7666 -1.6801 0.1901 1.3312 -0.8245 -0.8221 9.1933 2.6121 -0.4925 0.6596 0.5183 0.0656 0.6099 0.2170 -0.2483 0.3752 0.0528 -1.3550 -1.9590 -3.0746 -2.7901 1.7480 0.0667 -1.3253 1.8365 1.2016 0.6331 1.5502 1.2179 1.5180 -2.8697 -3.0225 1.1901 1.2949 1.2425 -0.2655 -1.0124 0.1504 0.9476 0.8294 0.4980 -4.6214 -0.4714 2.3140 0.5042 0.0042 0.6173 0.0250 1.1274 5.2946 0.9166 -1.6961 2.6183 3.7503 -0.5464 -0.4536 -2.5804 0.7239 -3.0443 -0.9745 -0.5296 -1.2153 0.2578 -4.9483 0.2574 1.6442 -1.7218 -1.0182 3.2654 -0.3113 0.1627 0.2010 -0.6825 0.4894 0.3705 0.5406 -0.5307 2.3413 3.1334 -0.2531 0.7289 0.0127 0.8411 -0.5394 -1.5751 -4.4648 3.3442 -1.3619 -2.4473 0.7892 1.6007 2.2451 -0.0142 -1.8268 1.0211 1.1632 -0.4310 0.4809 0.7681 -0.3119 -3.1840 1.8621 0.7982 3.9396 5.5125 -9.0182 -7.2338 1.4720 0.3673 4.5691 3.1984 0.4848 -1.6299 -1.5279 -0.4613 -0.3940 -0.7641 -0.7740 -1.4705 -2.0718 -3.7739 -3.8204 -2.0882 0.9538 2.3794 3.3309 2.1292 0.9829 0.7475 -1.7639 -2.1300 1.8133 5.4637 4.9096 0.4400 -0.2077 -3.2872 -2.8010 -3.3973 1.4612 -0.7884 -0.4468 0.3167 3.0330 3.6546 1.5554 -2.1172 -5.0158 -0.6924 -0.9691 2.1549 0.9464 -1.8955 -2.4830 0.5229 1.0573 -0.1544 -2.7731 -1.7762 -1.2133 0.4997 -0.4040 0.0598 2.1564 0.9676 0.1749 -0.3066 1.3334 2.1020 0.1735 -0.6351 -2.2851 0.3979 2.1071 0.8723 -1.4327 2.7248 2.2122 -3.8366 -6.8693 2.9956 2.2340 0.2392 4.5854 0.8064 -0.4877 -1.9451 0.1604 -2.0173 -3.0467 -2.6229 -0.6828 -1.5402 -4.5504 -0.6274 -1.5654 -1.1048 -5.0244 1.2208 4.3959 1.7152 0.8404 2.3104 3.9110 1.3725 3.6004 -1.5868 -0.0242 3.0095 4.6972 -2.0723 3.7478 -0.0539 -1.3604 -1.6975 -5.1051 4.5477 7.4910 0.8111 -1.5236 -2.0035 -2.3201 -1.9156 -1.8399 2.7039 1.1102 2.7618 0.1987 -8.1775 4.2697 2.1482 1.1807 -0.8188 -0.0158 -0.9415 -3.1934 -7.6652 -5.2761 -0.4096 0.8289 -0.6591 -0.1321 -2.2645 2.6890 3.5308 -0.1860 2.2844 2.1691 2.4613 -2.6176 -1.9646 -0.3365 0.4490 1.7890 3.0096 1.2687 0.1913 0.7099 3.1055 2.4376 1.5156 0.2027 -3.2954 -0.8316 0.6250 2.5125 -1.9645 -4.7360 -2.0703 0.9801 -1.1590 -1.1869 -1.8206 -2.6697 -2.2474 -1.9247 1.3390 0.7955 3.2786 2.1796 1.2439 3.8310 0.9791 -3.7027 -2.0691 -3.3297 3.4700 4.0219 -2.0091 -1.9305 1.1296 2.7892 3.5086 -0.4192 1.8621 -2.4767 -4.5620 -1.3151 -0.4855 0.2130 4.0896 -0.2763 2.9118 1.5789 -0.3477 -0.8200 5.6054 -7.8822 -3.1730 3.5183 4.1815 1.9981 -0.8261 -1.4369 -0.3881 1.0213 -3.8793 -3.6636 2.2621 1.1803 1.7727 -0.7985 -1.2902 -5.0777 -1.2307 0.3381 4.4122 -1.4815 -0.6120 4.0477 1.4256 -1.6604 -3.5999 -1.9136 -0.3445 0.3946 1.6694 1.2905 0.9828 0.5724 -0.1289 1.3498 1.3379 0.2067 0.3656 0.2492 -1.2128 -3.2905 -1.7416 -2.0178 -2.6699 -1.3526 0.2496 0.4148 -0.8854 1.0823 -0.6203 1.2579 0.4148 -2.2346 -0.4015 1.4157 4.8809 6.6230 -3.5608 -1.8735 -4.5603 3.5038 0.3340 1.4937 -1.5420 -2.3850 3.1706 1.4707 0.1938 0.5057 3.8806 -0.0936 0.3334 0.4606 1.4472 -0.9030 -1.4318 3.5118 -5.2689 -1.4235 -1.2997 0.0053 -2.1257 -3.6561 0.1855 0.3705 1.1645 0.2341 -0.8092 2.3980 -0.3274 -0.4576 -1.1851 -3.8496 2.0281 -3.3309 0.9466 -0.0780 1.0318 4.0737 2.6190 -0.3495 -1.0083 -0.1238 -0.3756 -0.3626 -1.1974 -3.0280 -3.3983 -3.5184 -2.8303 -0.2464 -1.0525 0.7469 1.1667 1.9967 2.0536 5.8842 4.6720 0.6593 -0.2270 -1.2558 0.4368 1.4898 -0.0036 2.1872 4.7731 5.3388 2.1104 0.8610 -1.9286 -4.4764 -2.9139 -5.8875 0.1502 2.3687 -3.3444 1.8016 2.0118 0.3480 1.5855 -1.0664 -5.4053 -0.2559 -0.0970 0.6606 -3.0637 -4.0503 -2.5522 0.2345 0.1786 -0.3244 -2.5706 1.7286 2.2086 1.6927 2.7400 1.9340 -0.1619 5.4140 3.6846 -5.1534 -2.2469 0.7337 0.6464 -0.7291 -0.8337 -0.3024 0.3377 1.5178 1.0116 2.5850 0.9759 -1.3970 -3.2182 -3.6906 -0.0798 3.4993 -1.9939 -5.3046 1.4115 4.7666 0.0639 -2.9601 -0.9321 -1.3007 -4.5012 -0.6859 1.6271 0.8938 1.8188 2.7147 2.4868 2.4402 0.6577 1.2040 2.0247 0.2523 1.3499 1.0757 -5.3086 -0.2223 -2.6347 1.2887 2.2547 3.3766 1.8575 -1.7910 -1.7548 1.5265 2.7964 1.2240 1.9720 0.2687 1.8100 3.1328 -2.5860 -2.7821 -3.9778 -2.4086 -2.0066 -0.0746 -4.1265 0.8108 -0.0118 0.3510 0.2469 -0.3564 -0.0688 2.2772 2.9983 0.0220 -0.8672 -4.8310 -2.0824 0.0877 2.2501 0.0661 -8.6456 -1.6422 4.8643 2.3157 2.2152 -2.3502 1.9923 1.6641 -2.2786 3.4633 2.6050 -3.0058 1.5172 -5.3190 -0.9994 -2.4221 0.2495 3.8898 -2.0580 1.1705 0.4058 -1.2798 2.5712 -0.5349 0.7192 5.2963 2.7580 0.0542 -1.8363 0.6217 3.1975 0.8761 0.6926 0.1889 -2.2049 -2.6639 -2.3949 -0.4550 0.9028 0.9417 -2.3200 -1.6049 2.2215 -3.0876 -1.1840 0.0332 0.6867 -0.5444 -2.6560 -2.3272 -1.9975 2.7492 3.4613 1.2531 2.2970 0.6826 1.6161 0.8081 -2.8567 -0.2510 3.1363 -4.7699 -0.8591 1.4746 -1.9362 0.1179 0.1304 -0.0905 -0.0885 0.5876 2.0857 -0.3875 -1.3306 -0.8957 -0.1982 0.8458 -0.0513 -2.2349 -5.5634 7.5385 3.9965 -1.0630 -1.5645 -2.1020 0.2680 1.5416 0.4773 -0.0338 0.6704 0.3091 -0.0982 -0.8312 -1.8586 -2.1668 -3.0698 -3.6621 -2.8717 -0.1465 2.9749 3.0473 2.3156 -0.0362 0.7605 1.1471 1.5312 -1.4651 -1.1492 -0.6700 -0.6012 -0.1247 1.1550 -0.2106 -1.2695 -0.4411 1.1446 4.1491 2.6600 1.3124 1.6069 0.6316 -0.4851 -2.5715 -4.3867 -1.0040 1.7189 0.2437 0.6555 0.3411 0.8466 -1.7425 -0.1636 6.1311 0.6211 -2.7030 -1.5009 -0.1744 0.8660 1.3589 1.2490 1.1273 -2.7402 -0.0949 -1.5440 -1.8610 -0.9159 4.3927 3.3672 0.9009 -1.2521 0.6230 -0.5206 0.8245 -0.9087 -1.8374 0.0097 -3.1469 -2.4307 -3.0482 0.2541 1.9480 5.7092 -3.3716 -3.2953 2.6836 -0.9014 2.2171 0.1913 -1.6779 -0.9585 -1.3241 0.2292 1.4881 2.7969 0.2756 -3.8207 -2.4695 -0.3208 2.3024 2.5414 -0.1815 -0.2933 2.0837 0.9892 -1.0861 -2.9823 0.1186 0.1645 -0.3865 -0.8001 -0.3047 -2.3398 -0.6229 -0.0641 0.8491 1.7026 -1.1341 -2.0704 -0.3123 0.1814 3.8820 1.2943 0.4627 -0.5672 0.5181 -0.5712 -0.1015 -2.3234 -2.3520 0.9949 2.2704 0.9946 0.3560 0.9113 0.1017 -0.4530 0.8520 -1.0302 0.8806 0.3674 -2.6615 -4.8900 -2.9475 1.9045 2.6392 4.4864 2.3941 1.7010 1.9067 0.4931 -1.4348 -2.6074 -1.1597 -1.0504 -3.0460 -2.8157 -0.6597 -0.5920 -0.3406 -1.1230 -0.8586 4.9381 2.8734 1.4518 2.5923 -2.6625 -0.8669 1.9301 3.2551 6.1577 2.0399 2.6785 0.7380 -0.3115 4.7391 1.4868 -6.0175 -7.4317 -4.5623 -0.8590 3.8966 -0.1349 -2.5476 -0.0080 -1.4441 -2.7383 -1.8064 0.5147 0.5800 -2.6271 -3.9359 -2.9321 -2.4785 0.6104 -1.7343 -0.3653 -0.3024 0.2350 2.3057 1.9998 2.2392 1.9124 3.0438 -0.2241 5.1672 -2.2020 1.8580 3.3342 3.0400 1.0670 0.2251 0.5480 1.7906 0.7871 1.2850 -0.3795 -2.0150 -2.3713 0.5611 0.5214 -0.8547 0.0171 -1.8463 -2.7006 -1.7828 -3.0844 1.4841 -0.8100 -2.4242 -1.8509 -0.9746 -1.0553 4.8924 1.3818 -1.8605 -4.3708 -2.0142 6.4457 0.9506 -0.5924 0.1104 2.4175 -0.6754 -0.8459 -0.1554 -0.0530 -0.0877 -0.9877 -1.7358 0.3853 1.1022 1.2975 4.3189 -1.9877 -3.1833 1.0392 0.1796 4.1158 1.4650 -1.6177 1.6123 -4.1615 -3.2584 1.2187 -4.3136 4.5989 0.4487 -0.1107 -2.0381 -0.2337 2.5745 2.8339 -0.0417 1.4413 -1.4483 -1.1675 -6.2515 -6.9360 -3.2717 4.8492 0.9246 -0.9750 4.1724 1.7821 1.3820 2.0655 0.1081 -0.6949 0.1665 0.6685 0.8790 0.7273 0.1766 -0.0005 -0.2218 -0.4294 0.4489 -0.4843 0.2008 2.1975 4.5024 -1.0296 -1.2026 -2.5547 -1.0944 -2.3636 2.3396 2.1543 2.2429 4.7578 0.8390 -0.8895 4.6297 0.4985 -2.3653 2.1787 -1.0612 -0.8953 -6.2919 0.5546 -0.4272 -0.9670 -1.9781 -0.4692 -5.5295 0.6795 0.1530 -2.1926 2.1973 4.5005 -1.3453 1.3286 -2.0310 1.0783 -1.3510 -0.7983 0.6783 -3.4857 5.3977 -3.6561 -3.5986 6.0882 0.1428 -0.9697 3.0219 -5.1583 -2.6086 -0.0766 2.7222 2.0552 2.4096 3.0319 1.0596 -0.1283 -0.8104 -0.2732 -1.4259 -4.0229 -1.4469 -1.6716 -1.1861 -0.9216 0.6780 -0.0004 2.0118 0.6041 1.8333 3.1078 -1.8097 1.1817 3.7643 0.5185 1.9828 -0.3454 1.2321 -1.0494 -6.2996 3.9399 -4.6043 2.7296 -2.2906 -1.7821 -0.5503 -0.1687 1.5615 -2.9514 -1.9822 -1.7870 -2.0807 -0.6471 1.7376 -0.7108 -0.9897 0.1273 -1.5435 -3.4080 1.1979 3.2003 1.0189 -0.9731 -1.0790 -1.9655 3.5511 1.2692 3.4593 1.6049 1.8097 0.7952 2.3044 2.0422 0.0385 -1.4890 -2.6817 -2.4115 -2.0814 -4.7349 1.3168 5.2099 2.0691 0.2209 -0.3967 -1.3910 -0.0825 -1.3970 -1.3074 2.1664 -0.6317 -0.6961 -1.7818 1.7212 1.8896 0.7627 6.4133 0.0239 -2.0812 -0.6340 -0.8745 -0.8436 -3.5167 -3.0992 -0.4403 -5.0217 5.7819 4.7221 -2.9383 1.2443 -0.8542 -4.8873 -5.4381 -4.2630 -4.1290 0.7749 4.7768 0.2842 0.3115 -0.2820 0.2149 -0.1804 0.6193 5.7873 5.1866 -1.3257 -3.0389 -1.9693 8.9711 -0.5589 -1.7203 0.3016 0.2697 0.0913 0.2499 2.9554 0.3320 0.0927 -3.0516 1.3578 -0.8456 1.2764 0.1248 3.9102 2.8147 -2.3847 -6.7532 -2.2614 1.9868 1.2535 2.3588 1.8978 1.0798 1.0217 0.8258 -0.3312 0.8967 -0.1754 -0.3981 1.0150 -0.3879 -0.8493 -1.2690 -1.1797 1.5079 -0.1598 -2.3607 1.1269 2.6480 -7.2674 1.1746 4.6165 5.4940 3.4461 -3.9021 -1.6050 -0.1323 -0.9380 -0.4156 -1.9000 -0.2856 -1.2349 -3.6515 -2.9147 0.0530 1.1469 0.2371 -1.3253 3.8834 -1.7466 -2.2758 1.8844 4.6711 2.2076 -1.3597 -0.4741 0.4627 -0.0358 -0.0017 -1.0258 -0.6957 -1.0270 1.1372 -2.6040 -3.0616 -4.3523 1.6973 1.9314 1.1807 1.7410 1.9665 1.3206 -0.1069 0.8467 1.1209 2.6581 1.0313 -0.7646 -0.9327 -0.4666 1.3979 -1.1019 -2.4235 -8.2049 1.1737 4.9310 0.7484 0.2664 -6.0708 2.6104 1.1852 -1.5416 -3.6491 4.4048 -6.7437 4.6469 1.6802 1.2910 2.2789 2.7610 1.3944 -0.7732 -5.8136 4.4421 -2.2039 0.8414 -5.8722 -4.6747 -3.6578 10.0038 -3.9689 -0.5502 1.1683 -2.1974 -1.9082 0.1416 1.6772 0.3260 3.7162 2.4168 2.6207 -1.7735 1.5236 0.3480 -0.3569 4.1471 1.4471 -0.6226 -8.1997 0.0448 0.6532 1.4910 1.2058 1.7096 2.3950 1.7319 -1.5483 -1.8447 -2.2888 0.7634 3.2796 1.6709 -4.9985 -3.0829 -1.1211 1.2229 -0.2209 -1.1940 1.9569 -1.7811 -1.9523 -4.3005 -4.5837 1.0346 1.2567 1.0099 3.2344 2.8332 1.1895 -1.5164 -2.2052 -1.2334 -1.4331 2.1022 2.3179 5.6712 2.1958 -2.0504 -2.5243 -1.0460 -1.1815 -1.5300 -0.6842 -0.5633 -2.6867 -1.4016 0.6359 -2.0170 -1.2970 -1.6432 -1.0489 -1.3764 -1.1731 -0.5962 3.5229 5.3595 3.1187 3.4061 0.3009 0.8550 -3.1382 -0.6280 -0.8774 -0.9941 0.9435 0.9619 0.8520 -3.3796 -3.2423 -1.3758 3.3040 2.2194 1.0056 2.5348 -0.2996 0.9762 -3.7819 -0.3936 5.7234 -0.4105 -3.2428 -5.3967 -1.5226 4.3711 2.0836 2.1112 0.7032 -4.0183 -12.6551 -15.4852 0.9361 9.2253 10.5424 3.4081 3.4337 -0.7556 1.6657 0.8127 4.5992 -0.8160 1.8248 0.0419 0.5248 1.8646 -1.2814 -2.6618 -0.0669 0.1817 2.2151 -0.8152 5.1179 2.3104 3.6555 -8.7128 -2.0790 1.0629 -0.0963 -1.5473 0.4756 -2.0146 -0.1111 0.3482 -0.0235 -0.7175 -0.1449 -0.3857 -0.8724 0.4592 0.4980 0.2237 0.3924 0.2623 -0.5426 0.9370 -0.6701 0.1600 0.1978 1.4707 -0.4540 -1.0274 -0.9442 -0.4989 -0.2375 -0.5991 -1.2414 -0.4327 -0.2055 -0.5191 2.6955 3.9938 -2.7275 1.8004 1.9744 1.7067 -0.5541 -5.7033 0.6046 -1.4009 -1.3782 3.6669 -0.8575 0.6722 1.8197 2.2695 1.4265 -1.5445 -1.7430 -1.5937 2.0470 -0.1126 0.3473 1.4243 0.9317 -1.3895 -1.0640 0.4664 -0.0706 -3.0958 -1.0532 1.1198 0.9735 -3.1553 -4.9524 -1.8534 0.7715 2.4911 5.1271 0.4320 -4.1146 1.1236 2.7184 2.0135 1.9444 1.7813 1.8232 -2.6267 -5.6361 0.3774 1.0979 -0.3363 1.9497 1.0413 -1.2191 -0.8636 0.0511 -0.3375 -0.5315 -1.0284 2.1218 -5.0828 1.0827 -2.2172 -1.3936 0.4537 3.3006 0.9962 -1.2147 0.0930 -2.8723 5.6705 -3.0064 -0.6690 1.9882 3.1451 0.5101 1.4897 6.0735 3.0322 0.7197 2.5823 0.9024 -1.3595 -0.6102 -4.4164 -5.2345 0.5038 -1.7243 -1.0135 0.3868 -3.2999 -1.3127 -0.5603 -0.4395 -0.5779 -1.3273 -0.7737 1.1446 2.1363 0.5709 -0.9646 0.1742 -0.3429 0.7079 -1.3617 -0.1807 0.8278 4.5177 -3.6128 1.9484 -0.5738 4.9592 5.5662 -1.4308 2.4625 -1.3728 0.3179 2.5142 -3.1176 -3.0793 2.5866 -6.0767 -3.0209 -1.0428 3.7946 3.4423 -3.9407 3.8680 -5.8781 -3.2612 2.7097 1.8752 4.6096 2.6992 0.0622 1.9683 -1.5159 -0.2846 2.0429 5.1916 0.0415 0.4228 0.2499 -1.8859 -1.2282 -1.8414 -3.2239 -2.8594 -2.2718 -1.9470 -2.1050 -0.4172 -0.0660 -0.7815 -1.3234 1.6425 1.5960 0.1952 2.8005 1.8348 -0.0556 -1.7528 -0.3330 2.5351 3.2175 -0.0237 -2.6102 -2.3993 -0.4569 0.2104 -3.8124 0.5340 -7.1325 7.3739 -7.1474 5.0035 4.0837 1.7481 0.6285 2.1470 3.3649 3.4871 -4.6213 5.3643 -0.8361 2.3067 -0.6517 -4.1528 -4.1599 -0.0969 -7.2432 6.4977 -1.8922 6.0123 2.6649 3.9019 -2.9401 -5.9544 6.5995 -3.7727 -1.3909 -4.1986 0.3151 1.1248 0.2299 1.4836 -7.4381 0.2549 4.7727 -2.9947 -3.2755 0.0546 0.0075 0.5596 0.2523 -2.3268 -4.5642 -3.6799 -0.8395 2.7336 3.7088 2.7486 2.6118 1.5065 0.0463 0.4170 -0.5592 1.5006 -0.4534 -1.6715 -2.0529 2.9815 2.4495 1.7545 3.2822 2.8844 2.5666 0.0398 1.6192 2.6128 3.3153 -4.7284 -2.6356 -1.7561 -4.3333 -3.6328 -2.9815 -0.9212 -0.8755 -0.3601 -1.2811 -0.8024 1.2002 3.2220 -0.7626 -2.1102 -1.0525 -1.8044 0.6518 -0.3024 1.2038 0.2348 0.2257 -2.8991 -1.6610 1.3306 -0.9177 -2.5629 -0.6077 5.6868 1.7272 -0.1833 -0.3751 0.5635 0.1503 -0.2949 -0.6821 1.4873 -1.2805 -1.3007 -0.6803 0.0098 0.9789 1.7868 3.5914 0.8184 1.0857 6.4677 -3.3457 -6.7060 -2.0913 4.2126 1.0339 -0.8906 0.9053 2.8206 3.1913 0.4808 1.7342 1.1617 0.7387 3.7928 -0.7288 -6.1883 -1.6937 -4.9005 -3.6291 -0.7611 -1.4035 -0.2407 0.3643 -8.3754 -2.2519 1.3080 1.8062 0.8850 1.6497 2.0880 2.7261 0.2633 -0.5998 0.5979 0.7034 0.9960 2.9711 0.1650 0.8745 -0.1614 -0.6875 -1.3556 -3.6024 1.4188 1.0202 1.5256 1.6620 0.7476 -1.4390 -3.4051 -1.8780 0.4521 -3.9741 0.7867 -0.3719 -2.3721 -1.0437 0.6801 -0.2011 -3.0818 2.9062 4.2361 2.3315 0.1054 -2.6122 -4.3807 -5.3145 -0.2846 4.3842 3.0170 3.8061 0.7110 -1.0498 -0.2574 -0.9802 0.3402 1.2503 2.5457 -7.8042 -0.1469 2.8259 3.0062 0.8386 5.2058 7.1080 4.9534 -1.2430 -6.6855 -3.7117 -6.1961 -2.1515 -0.5576 -1.6169 5.7678 7.7780 -3.9195 1.0323 -4.8749 2.1979 -6.6948 5.7018 -1.1809 -0.9126 5.0054 3.2246 2.7220 2.5774 0.3515 -0.4988 -0.6659 -1.1531 -0.3512 -0.2899 -1.1677 0.8076 -0.0710 -1.3279 -1.8820 -2.0262 -1.5275 -2.2770 -2.2582 0.8080 -0.3421 -2.1542 -1.9404 1.9715 2.0717 1.2690 -0.5900 2.8831 2.5295 -0.0718 1.0132 -2.1895 0.9449 0.2787 2.8471 3.2171 -2.0622 -4.9892 -4.8142 0.1278 -3.5648 -4.5220 -3.8219 -0.0484 2.5590 3.3348 4.6892 3.0890 3.1738 2.4402 -0.3648 -2.0478 -1.8476 0.1171 -0.1749 -2.2364 0.1988 -2.2378 0.6726 0.5920 -2.5566 -0.8410 -0.4280 -0.4406 -0.5726 -0.3279 -1.8710 -2.4830 2.8140 4.1548 -1.1877 -1.2228 1.1741 0.7041 -4.1128 0.8974 1.6460 2.7315 1.4956 0.4265 0.6395 0.6244 0.2175 0.2548 -0.6436 -1.4509 -1.2471 -1.8889 -1.6984 0.6300 -0.0902 -1.4274 1.6267 2.2897 -1.4907 -1.0863 -0.5990 -0.3234 4.5402 1.1229 -3.0281 -3.4576 0.2465 1.1848 -0.3128 -1.4112 -1.7883 -2.4368 -3.6604 0.2309 4.1432 0.2306 3.9874 1.3414 -2.9661 0.2318 1.3943 2.8996 1.0512 2.1197 -6.4523 -0.8108 3.0394 2.9265 1.7276 -0.6852 -1.3401 -1.2086 0.2339 0.6323 0.9584 -0.4322 -0.4865 1.1438 3.9792 -0.5978 -3.3409 -0.0134 0.1557 0.5712 0.8836 0.6632 -0.5682 1.0909 1.0200 0.2143 1.7898 0.4314 -1.2105 -1.6888 -2.8939 1.5904 1.4323 5.0287 -2.4090 -2.6282 -1.2927 -1.8499 -3.8726 4.2691 2.7571 0.5054 0.5914 -0.4593 -1.9535 -2.8534 -5.1043 -5.0146 0.3167 1.9210 1.9920 1.2596 1.2329 -1.0134 -2.2148 -0.9619 3.3405 0.4893 1.9185 3.2509 -7.8257 -8.0514 -2.2922 4.6049 1.7841 0.2877 2.4600 0.2299 0.3961 0.7952 4.9841 0.5914 -3.3601 1.4043 5.5671 2.2508 0.0018 1.5100 -2.0511 -3.2867 1.5686 1.2169 -0.6391 -2.6751 -3.0325 -3.9104 -2.5516 -0.9763 6.3909 -1.3255 1.3817 1.7409 2.2064 2.8908 0.3118 0.3554 0.3092 -0.0695 -2.5566 -0.6363 1.1784 0.7886 1.7506 3.8841 0.1097 -3.4846 -1.1668 -0.2517 -0.3004 -0.0493 2.0270 0.2092 1.5440 3.4255 0.2943 -0.8517 -1.6072 -4.0976 -5.8976 2.4958 0.9988 2.8848 3.2891 3.3681 1.4676 3.2906 1.3735 1.1970 0.4611 -0.5875 1.7464 0.9583 0.5681 -1.4825 -4.2976 -3.2226 -2.3712 -7.0782 -2.8558 0.2917 -0.2746 -0.1545 -0.1213 -1.7658 -0.9647 -0.8990 -2.2776 -1.6043 2.1487 5.2377 -7.3002 -1.2976 0.8951 2.6087 1.9104 0.8944 4.2107 2.4289 -0.6124 -3.0624 4.5993 2.8908 2.6348 2.5753 3.5423 -1.3467 -3.6340 -1.3719 -1.5896 -1.7807 0.4182 -0.4869 -0.0081 -1.7322 -5.0302 -4.0281 3.2297 0.1854 0.7317 0.2006 -3.2143 -2.4079 2.3832 -1.4835 -2.9589 -4.3471 -9.4701 -8.6980 2.2131 11.9939 3.4222 5.6731 1.0493 0.9347 3.1770 3.6996 -0.0115 2.2951 -2.8928 -1.3571 2.2986 0.5686 -2.7234 0.0628 3.3595 3.0322 1.2528 0.1697 0.2877 -3.1109 -4.5198 4.2898 4.5477 -0.5365 -2.9437 -1.7760 -3.4896 -0.4971 0.5506 -0.8230 0.0226 -1.9088 -4.1034 -3.5139 1.8311 6.6465 1.9042 -0.2585 0.4811 -1.3603 -0.8669 -2.6469 -2.4021 -2.3699 -1.0708 1.8059 0.3697 0.3642 3.4726 3.6036 1.8666 0.3455 -0.4415 1.4530 2.1752 0.4141 0.9988 0.9339 2.0369 0.0808 -1.3138 -1.2683 0.1032 0.3074 0.3794 -2.2480 -4.4451 -2.7006 1.2456 0.0770 -0.9714 0.8948 -0.5528 -1.5023 -2.1884 -1.6190 -2.6643 0.3765 5.2588 1.9474 4.7336 6.0668 0.9206 -6.1173 0.2687 4.2344 -2.7801 4.7836 -5.9468 -5.1428 -3.5447 -2.6492 -1.1225 1.1104 -0.6763 -0.3734 0.7874 2.9348 3.7914 3.3802 -3.0687 -1.7645 -1.7552 0.4322 1.5566 3.1434 -2.9717 0.2913 0.3294 0.1693 2.3099 -0.6833 -2.4051 -0.8700 -0.1793 -0.7055 -1.1773 0.0766 -2.2742 -3.5734 -2.1986 0.6775 0.1605 0.0083 4.2284 1.3025 3.7892 -0.0746 -0.9582 2.5465 0.9486 0.1048 1.8316 3.4918 2.1758 1.1342 1.0848 2.4632 0.0993 -1.9453 -1.1703 -1.6274 -2.0353 0.8991 0.4736 -4.0911 -2.9565 -2.3552 -2.1133 3.5874 0.6208 3.4997 6.2697 4.2107 1.2652 2.1894 1.1355 -2.5271 -2.9525 0.0535 0.3829 -2.5199 -2.9063 -2.7287 -1.9607 1.4600 1.2748 0.4400 -4.8467 -2.3602 0.5243 2.9289 2.2684 0.4191 -2.1542 -0.2881 -0.2706 0.6758 5.4475 1.1883 -2.5477 -6.5024 -4.1506 0.6656 0.9576 -1.2352 1.0736 -4.8441 2.5699 3.2741 -0.7794 1.1463 3.5016 1.1120 0.8485 -1.0628 -0.8132 3.8405 -0.3344 1.2653 0.4357 0.5494 -2.5741 -2.4964 -3.4166 -4.9706 4.8271 -4.7341 1.1838 2.4711 1.8447 1.0979 -1.7573 0.3863 -0.5133 -3.1578 0.0583 -0.5417 4.1974 -4.6030 0.1241 -3.2329 4.6242 -4.6647 -2.4610 0.5959 3.2183 -1.2626 5.6612 0.3859 -2.3894 -1.0328 1.7896 5.5648 5.2220 1.8869 1.0956 -0.1977 3.2983 0.9466 -2.0813 -0.1679 -0.5816 -0.1714 -2.7510 1.1951 1.5496 1.6400 -5.0073 -9.8080 0.7738 -1.7298 -3.2257 -0.3183 1.9284 1.7227 0.8166 0.9095 0.5332 -0.5016 -1.2660 -1.9608 2.0035 -2.6922 3.7039 0.8905 -0.7247 2.7531 -3.0591 -0.5571 -0.0748 -0.5070 -0.2516 1.7723 1.4041 4.3520 1.7022 1.0990 -1.4641 -2.3620 3.1174 0.5476 1.5192 -1.9294 -4.9678 0.2919 -3.1451 1.3976 -0.5997 -1.9017 -0.3043 -4.5751 -6.4864 -2.8079 2.8553 1.4264 -0.6290 0.8259 1.1617 -0.8255 -1.1913 -0.9336 -0.8179 -0.6841 2.7254 1.9190 4.4832 2.4919 2.0452 -0.6788 2.9368 3.5644 3.7164 3.7726 0.3148 -2.5071 -1.0177 0.4365 0.4818 -2.1099 -3.0728 -1.1823 -1.8323 -2.5460 -3.2217 -2.5081 0.1068 -0.3340 2.0018 3.0001 2.0122 -0.8437 -0.0894 -3.5669 0.2151 1.3672 -1.1852 2.2748 0.2674 2.1266 -4.5961 -3.5181 1.6410 4.2095 -4.0873 0.0362 3.5548 -2.6567 1.8468 0.9915 -2.9528 1.3693 1.3737 3.6447 4.6399 3.0004 -0.4081 -0.5069 -2.0885 -2.1563 0.7639 0.4790 -2.4821 1.6495 0.8280 -0.4457 -4.8607 3.5285 3.1896 -8.5655 -4.4449 -2.6584 -0.3396 2.7055 3.1313 2.6691 -0.1405 -2.6920 1.1380 5.9263 0.1508 -2.5031 -2.5963 -2.2339 -0.4387 2.7348 0.1166 -2.0958 -0.1884 1.7591 -0.4506 -2.2585 -2.0183 -1.2141 2.3804 5.1371 -0.1012 0.7185 -1.9558 -5.5843 1.7274 2.5676 1.3295 -2.3148 3.4722 0.9168 0.3809 -1.2468 -0.6805 -0.8055 -0.5741 -1.3187 -1.6054 -1.8387 -3.0009 -2.2631 1.6411 1.0542 0.8630 1.3059 0.6660 0.5171 -0.9355 -1.8837 0.8703 0.3850 -0.0855 0.2754 4.4605 1.4674 4.0853 2.9178 0.0251 -1.7053 -2.9819 -2.0918 -1.9947 -0.8293 -0.6373 0.5052 2.1796 2.6733 -1.7046 -0.6344 1.3620 -0.4864 -2.0884 -1.6708 1.5012 1.5754 -1.5635 2.8252 -0.9149 -3.0463 -4.7327 2.7084 1.1209 0.7968 0.7865 -1.2527 -0.1248 2.6941 2.7972 2.2336 -0.0652 -0.4532 -2.9265 -0.0560 -0.4324 -0.3945 2.4620 0.7164 -1.5674 -3.1513 -1.6402 2.4149 2.9010 2.5761 3.2262 0.0749 -4.5314 -3.4112 0.2922 1.0743 0.0408 -1.5976 -0.5032 0.6577 0.7598 -0.7940 1.9710 1.1730 -0.6838 -2.2094 -1.9356 1.4952 -2.0825 -0.2927 0.7657 -1.8337 4.4472 -3.8324 0.7557 0.0732 -3.6271 -1.9071 4.3140 2.4552 -0.0317 0.9857 3.7325 2.7934 1.0157 -1.7096 -2.8454 -1.8953 -0.7562 0.3146 -0.3781 -1.0020 -1.6158 -0.3984 -0.0573 0.9972 1.0112 -1.0599 0.0370 3.6124 1.1087 -2.9047 -1.4832 -1.9899 -0.8731 -0.9330 -2.9066 2.3820 -0.1603 -0.7170 -1.1285 -0.9274 2.1578 6.4011 -1.6535 2.3099 -1.6654 3.7268 0.0883 -1.8527 -0.5184 -0.2568 0.6353 1.3687 1.8257 0.3226 -0.8766 1.0000 1.0853 1.2934 0.8779 1.7553 1.1543 -2.0442 -1.6763 -0.4593 0.9294 -1.2072 -2.2593 -0.6144 -2.8074 -0.3032 -1.2070 -1.3475 -1.8312 -1.7806 -2.9611 -3.1818 2.9332 -0.1240 0.1906 2.9202 -1.8371 1.0525 -2.0319 2.7074 -2.1979 -1.3072 -0.5591 3.0013 2.6600 4.9011 -5.1303 3.3870 -3.7967 -1.9466 -5.3864 -1.1368 -0.5684 3.7351 -0.5755 -3.2378 -4.4250 2.0350 3.9372 5.4701 -2.7768 5.9464 6.6849 -3.7875 1.9948 -0.4230 -1.3037 -1.9678 -3.1520 -1.4018 0.2092 2.8010 2.0760 -0.3324 1.0911 0.9050 1.7187 3.4255 1.0022 3.5722 -3.5224 -4.7658 -1.0745 0.2766 1.2898 -0.8471 1.9772 -2.9635 -3.0240 -2.2547 0.1703 1.7771 -1.6073 -3.1859 1.5410 1.4356 0.9203 3.9297 4.2495 5.7007 -4.0193 -0.8612 1.6423 0.8844 -5.1605 -1.1517 2.9132 0.8992 -1.0688 -1.5448 -0.9185 0.4003 -1.7700 -2.7768 -1.4639 0.2261 0.7139 1.7997 3.0514 3.3204 0.6803 0.9792 -0.2717 -2.6450 -0.2252 -2.2988 -2.9741 -2.4804 -3.0116 -3.1521 0.1074 1.3714 0.6662 2.0637 1.7849 -0.4611 -0.7720 -1.6172 0.8203 3.4203 0.8069 2.2581 3.2451 0.5915 -2.2429 -0.4245 -0.8028 -0.2290 0.2137 -0.4319 0.5580 0.2543 0.9172 0.8892 -0.4807 -1.2827 0.9202 1.1454 -1.6931 -3.6479 0.4568 3.9049 1.2435 2.6145 0.7928 -5.3425 2.6190 1.9162 0.9769 -0.1078 -0.4290 -0.3650 -2.8284 -4.4494 -5.9910 -4.8405 0.7110 -0.4595 0.2195 3.3942 0.9527 -1.8867 3.8742 3.7699 1.2150 1.7087 1.8829 0.7201 0.6607 -0.0626 -1.1940 -1.4411 -0.0944 0.1172 -0.7491 -0.3712 -2.5287 -2.1899 -1.2280 -1.4906 -0.5689 -1.4885 2.7842 4.0586 -1.1367 4.3200 4.6710 0.9897 -0.6156 -0.6851 -1.4120 4.1532 4.4321 1.1339 -1.0985 0.5736 1.4085 -4.6356 -3.3117 -1.5968 -3.4345 -0.7293 -0.0528 -0.3096 -3.6684 4.1880 -2.5398 -1.3830 0.0979 1.9654 3.5192 -0.0522 -3.2870 -3.8507 0.6356 -0.9850 -3.0198 -3.7269 -0.8310 1.9829 1.8339 -0.8073 0.2152 2.0459 6.1180 2.0688 0.4962 3.2227 3.5953 1.3395 -3.4218 -4.9933 -1.9981 0.9513 -1.0998 -2.7535 1.3298 -0.6976 0.0716 0.7392 5.8854 -4.3047 2.1890 1.9699 -2.4444 -0.0765 -5.8327 1.1129 0.8081 5.6003 5.5684 4.7020 2.8089 0.4347 1.1649 -4.9188 -11.4465 -1.3196 0.4225 -2.4705 0.3286 -0.0113 8.7340 -2.1220 -2.1264 -1.4373 -1.6231 -1.3969 -2.0111 -1.2620 4.3084 -1.2012 1.2341 0.1866 0.0635 -2.6548 2.3896 1.8088 0.0290 -4.3105 3.9166 -0.0331 -0.3748 -2.4710 1.0435 2.3583 0.6310 1.3989 1.5277 0.7608 1.0894 1.7235 2.0681 2.3537 0.9918 1.2164 -0.3325 -2.2666 0.1756 0.1615 0.5196 -2.6730 -7.1201 -2.9272 -5.4551 6.1563 7.8768 5.4153 -2.5369 0.0405 4.1259 -0.2108 -4.6599 -0.9803 -1.3472 -5.5873 0.0334 -6.0975 -0.7915 0.7551 -0.1575 2.8766 -3.5702 -0.2561 4.0100 1.0615 codec2-1.2.0/raw/000077500000000000000000000000001445607075400134565ustar00rootroot00000000000000codec2-1.2.0/raw/hts1.raw000066400000000000000000002734001445607075400150560ustar00rootroot00000000000000                      !plP.@L.+<' ], }Cd (1 3J@3:'SvCwm1}B+.MJv? 8Zwt*m;( +Nyp a@ .xMoY~#Ds5(+5hwFq"{"~9=) j Oq (SZ  hr md `n8{*&*lhpsJr[d. | h@P&x zm - V /ix J{ J; SIhs%xz%TqulWI ' _\Q\eu #  [Hp 2@ ]wUizbD q >v.WhZ!tYe [   9XuR7 b6 gD ( q2nYxo9 iV aH q(=.DJ<6$c T~$ &,jGz28\ P|MM]Uza?(+n@  L@5$9SHIs[tW + 8RlR'"bNjW@){o>^Trl"'WX?ham{` :ltHh/#PRK h3#kBWja7 Nb%5Q%##*x8C g\4uBH&6\~fOPA x0@%?`,R=YFt rvfHy8;] 5?j8.8( p VZyo4hi ?C0 w_vG op/  2$HxAwH]k+@'qv*VJzk8{DZ?? q/_Tj 25sjU wA Aػ۪ :h9# O"5 p&a Ml .B|*` "E`  [^f5r@j"o 1!Cp,>F`0"/1\ܝT~{Cy%>!L 'k P B#   //HtYS LxJ}$F,'Rj,6=!|&AN xZ0_+&FUz g*Em0\K]h I_Owz!6E-#P/&Ƣ3BOڱF$"t(^'v9C NVZ(lJZhI;G-/Dc \ >9~ƞN ,#  t!(/}XfJ01]"wi g3C=mSaoMB/~,,-dž^1%V:&1+~2c  `ߞ_i%I! _='  b26_(^$6//ا@ ˻q I0&,!/eqQ8m ! S Fmi0w :2{%"ߪ'Q2D43L Lhst'&YFل<=8#Y:&vmt| ^ } 6ԥ&9?P.)vV{A)\""h!a|R4E] X %xH<$#9rk G5&3f % u 9Dۓp Mf$4ic&PuB  bl-T>S, Y r9X" *p, 3Jn YQm5x%+?V~# S vYu    HYQzZ? K im5Ot"4VYZRtܶ  1e{'  1tvC-H O " x =)hS p+% T /6M *8bmNWdM_ "C wP F IODq]V $ d*Ht6~Bu)4Z,,9"$"0(/9)a g1=Q |" X] 6 rsO  |9Of\G<5 'G d 2.!ms B  # Hc Ya=q$zx  'l,(v(oI F]6q<#` M' Y?/ 0?M   \[~nH$ht,}yCF JEzNo*HZI&fhR{b U  R hz  u4+C)eu. Jj@}m#%rA|<_Mu<=Ht*p(*TK^xA@}~z6h2l& < Dx|%aU5vv,Q*  !vy ;]gi ;lj94*n6J;kHuJJc c!.'vG%G oP i\+RQTIhpp]0*F,ruu~D;9X3vHoQbGBBvFC>]ufor{ZaC Z[&oS.0Zk1dL>?Sr:%cK?=HH/H=~y0dCO7 ! ZLd U W$,T3@1 O)*ub\fW]D> ZOj0/p~gSAZk55V4rl7.m@d+W=1Q49uw-#%%:-;]<y{c~Y.N+*aFwFy$WgH;( 'F=8Kj!KTQ"j 2% y>EQus5 RoN3}?WF ,M $ & Lx MwBqlp8,>iPKj76/KDJj   XM Hj}%5[S K e j{oJcfaGD5  e h h k)_ (`7>Y ) 4Vqnik 6 1 nf: &r RYg{ &*k*lm  7u%~*LXj;dD^7=s! p5  MH[a j " W2NR ' }s y S}oS$MK_29 b |oy@rt o /tG4  dc|@ݫgb{G9# } B`65Hs p  6 "  {n Sd :kV  /eY u{]%5 Yz:2RQ V I H ![,sg$W2W q ~ d7 $(Kacso i  aHA.5@ ,dZI Z 8s4D2|WzZ}*uCju6EY ! } ^g >(L&;[rkd3q[ "D^ fM_ LO~M$&a.o8M:Xz3B*2Lk|nL~%KMUbN,=M=D)/w Tr]dT!(+*zm5 $Q,_s<yao,kond, ,CD*}sa[h CkuL$ (+5;1" ~z,;</(   *9DB=3,  %$     "  @}!v%SC\97$[Rlm :&}NI>@PSV7s<_*lPCGnZ{k -]t3~6<FY%~_[3H6, [Xu8 d?yhfoGQ bX}$ Z+)b(b<8*fGx$'J,De?_e&{4?EzYh[=l_*|- *4.B4\t3| Rc;c4x|LB:"L%jCo?3h%#D-s`@Gl#4>.SZv^Ul6(|ljs1;^-!Z cK_6MQ,uFUH@FQZKNJ"]luf2y\TI0o ]]y9U#:7zZ|&k]OzLg.*waMcx$5M9H5'}+O>GL=/  2 [,~[Y(4s;3>$NB2*D& 3[ ; ;E N0f;h  w<iB$@~v9Vk,KyW 2aY"$$m+Bޞ {P ^Mf8Y/_bdTf5f+Cch>;?7+?2-S ;G<z    $MZ,wt65H Xʱޑ)DR2W8K$߀Qȵ"pB !(?ZFt]d be) s.b0GKc!v2%;.)_pdVՐد =#D(49u3orD7HdJ2IBa $6~ P[ 0;[6r7(L"" 8w״Q [(j"@\?1Z$`T@ c%3 |r)wl  |#</ky "y2)8 'ӫS!VJ~XnI }j $!V %\H>  W%p3# '!] FK{Da .t7c! _ GP2d4L!*K)Y,A#wd oI5D#ZO4  &lU% & GF,X&/,X!qaR3PMUnfG7FCSY7i?$5r  2fSa/\n!,GHYCET([z/PGeNw. 7 7ESsUC7Mp /bk<iTT\v'=MM5(8JT[= jF[ T^ZG.6@1,"{YMYsW[hGAPv5Fin_F  '2,3..@?;;!('+!  6 }.'Z. G:.Mfak^BS' 8G!!(    ,.$   (      zN >6}!8$PYF;f xmbJnnSc9qAhdOB[u9%P3M ,,{G |S!CHV%TbYHA<>,z # vSQ.]=XZl5(8PB!]JhxX&TLKpRa[=FEY;xv"s'z=a~`;^"qs9a(w p6iM++ ( =X*I'(    %             "  $ yP[_k8GpW@:K};=QkiIP9/5 + p@U@6T.*~szISM9M &0 f}'[M$'*LqI; $3t ;45d G-pe~PxF V y IdhGD45g.b./y8:/Tv Xw:5M  ! v>jR4xx= xi 4w*Y T .%xLYWT $C!WZ,'X10m')s~|NK ~&(N&z,_ ] ? "9 tWA l q  TBNn 6",0VI "P@)Nku 5  _~.SJ N h F `>'bHIB\3wjFM 0 G n  w]#HL  Zth  fJv<Pr}A  kq_C'[*(fV&6x EQlNEJ0}3   8V s `!hR]azV~ + u![\dl+qd~'CSoY;g   @}jHe"T4Ej foOM#Dp a={ GM(F H& r7X6e#-Ji4?o=+q\Af xp|xc1Hd{8*'e\Ns[ACl@N3wEj/$*9"A^#_Y:N5B15EimY:!.i@%}*=[<,1 l? "Ri!CC?L'}C"[U88(iP!'bsZvvysQGniIUfMoR6 :^z 'FrvpZQF1vTfQS[/@! DD3eZw<;k*}XC"5PmPse<vmM8M%96M "kF2+ee^UYzhchq$1Nk]%sWU_: (=G_{vs"MsZJ1sv~vty $<^r; 6rCv< /=KPh2TzhD. {v*Fdu3iDCeS[({W5)7MR[myq}8hk[PD3~wmq '@P^rupfUD/bXa~T|_%lURMUilz.^|lfdN<,GS9' 1FC5+2C@8(+<CI;*} $/258BB=@?/31222'  ""           },:QFyYu#}iJh98NR.p+6bYMnq/I)X7fb<KetzZ&sGh"jS)b-h(KHslY?,4RWU#/LJqNy_3z?:ouk; q^wLFG9\RWr-m'1LDR 9#w-QZNIToeMMX6dNro9*v4Y&q_ 2w$U>.Eb0S=UnNvwOFWu=X&XF0b E0dBBkpOFQ7n9}*ZBy+x&2V!L*2cb]5pya| h8G@~p|Sr(H7j4E3+Rk @ K s , =_TrA(V\9.PSq}SwJTC$.*Lj"e   4N]+,|_8 | YwE)Ni 3*^ޤo&!)P frc\3dyO|] sc9:5 \TQ08a7i#GMX+z A%=0-xm@XS L29^5, s9 iUf B4 jWD(A9a]E H&VPk@- d;tD2*SaT?  )"D [q  p >Q^  Jx0Hxtb&Z05 nk4xՎDJS1:E%s(U"M:50FS%lHA 31^K%$  (&.:>c> Y^23jqB4Od>*g z`0ٞߘY6;.(lpRw&B m9'Bz iVz<w|fV9eZl&ݍڙ(!L.B-(ج2O|I5u@_,$."y2] -(0aqgI 8o8\ P3iq,"NI2؂ AL8-%}^(C9Zgz)^+.%,@Qag r$ }w u8+ ^<3..J?-Q=^_:[>)* ݿ1 #.B$!pL%#:i9 GK-\l ! zyzHwcDru_!܁6K=(e`Ф %"X67P$xyx \0&FGHp#w`k^&JT_wv {ToQlUUQxlՉ$(G=)3 CYio #*fMu <TY{GJ# f,t]FF`U60  |= .@O4-9-^  kJ/=ZH : X .sq  V!`LhziTUFnE[d$ oߴbfd&tYsG C *UF HBZRNqhx3$Ou9cDr5}J:f);W (UG h &[-L0}vwW-nw;O~z7^Fo|01e^Fn]Lunp] d_ }V?-ps7WNtW4dP?_Y>;|hBkc+S`;,y[ \olN){Wrdxo!\@[ ALCJ@RDd*=ake?:/* Obf;$M9QzN`Yc@\p,60^ @ LB\8p{{;D9H:>(X5J(3f] lxDIAuL#Y n&-dM@7A*n]I@68[w|*]S &7r U !<  '9 %zx 6 vLf3 m!]: Pu*<2-hYc# kX 9 ld  l  ]8UNU=0B LNU>tx:N|9mh]*en2swID,|i[^3bn'B +/;!pp!8 }(*/"'!  i?e|U'@0rbpJ       W0har!K?F^z/0BTHFh+#.p9 ]\loQ6bI55d}(w2*qrX[[[ ~P =)b{)U uW Z|Gz :g7& o I _dKnTH ,'+J~u$(P[EC,{W Id "` =C4;d h [r sZ5pA_ 3  k +cx \N 5YP$^O_7F8p+8Pf B0 KNpnG_tS "6 4CzlCf$ iKTz~,VO[%94vD:*7UNRM3QR~ q' v G }{2@YB6Xu 1  * W Fh2^wHls v~Ljn`~}LuMc1+q~Miz]1>qi?BVQ95u(3 Eku. !pU l nY/29D@qm &U.b F|NSfL' ~l[yG-n] :m#D4&36Ah " {6&i8)9/w)D/dFqiUIqD"Y=3gf6Vh[\4#)yDZj+\AFf+7925^A ;W4}X(+.H^J]&-4SJiNQlWj ]a A5;X:>&4?v<[ns_GT?Jba6S W=_(o -; '&Ix2<;n*:BZ[-&txX^zF7J=Yp<FSzJ ti^3mC0FvZoBl9N^9Rz@"g#M<tT,_[_5bk{.?'@;JMTXxQd k)S4, v! ]ln,f+ 993a.5Qdzk2~}it~j%FSePNP5@6 z.=JF2%=Qnh9j12|XJf  blZM}qhI*`s%cM q+%BwM7,R12|v"gV^"MKT+ }X p<k,HC7 RyYep0y7-w@w?{Kc&Lpav,lI}l_X\ +s,J()),X;ngd:,4oI#JOw:q]:*FG.~% fj  f'vLM"{4 =5uz-IR3,}%Ln!qm:,^V$XdW[U^c qL{8XgC@2-EJ g$GO!+L'f;`69&y=[b2&b|0 (+<-~lV{)z&4R%F^;$XvJb{A}x2WmCB98yf22t~_FpIBK$ /*[6-aMn{t[92*ky61. F#b~2K yb)>Ldp$,hm,vjpUo"UX }A>s0[Jy</A5F W\_ mHN.w*7UA*D:%D$$J [F. .u'"-Zzcm-J0Fn ojiI)<[m,^,s*G#C*>bT6 2:jLdEEsC=+s|:`{NZIYN[jeLR|gIp%$grv0 Dql@W"; k("b5 {3 X<^'wUQuW M4sD7 ]Z*FD>RBboa[ 20[P .%V/6GC2C6/T}'  W9)>i"WU[, 15  _fqzMf+!0 dI<B/}<B'ao vB[ fM2 *J "Z?6!' !                                                                     ! %       !"        "     ! tN[lM/\Yl. Q C0rj.$A-eecIv6fm},5$<o?}C$$ @ fB>z!KP -  e 8u_n@O!P@h*bPA>f>oBD #05_rG 01bx%  QjO 4$ 9LH! r  \T?>!yp,.k7]8 )I [  ,d sG Ic+aQU j R`:GY]] 1>bKh,h; XGI\;'+ w ׷kA6Z ,w<[ > } 6 gh_1-_P\i,9i5/ ;( cA DQwZsW 8t UW a%EU1lF^XF?IE% yjF"jjLG(Ww(c wNI 3y>P4R)X 8V:qQ`K 7% yV&B!D2}~jyT3@66=-s Xwa-0S$xaZd.+,o,@P>6\x}c'WIlH^ /F uwjz2*SW@q bfHr*r.ZFSC 5 n_j'!?R2t^Aqf,FwXVF& S0$(zVB  L+o B1OKOeN h>PB\"Mhr {fW_`=-Vx<:q"Dor} t!Zi > cR(8JAiq()k}E~ (tH v-:vpMAD2"8Ho:}7QR*w3 Lmy #;p: 0B(WR ,[+ID3Ml4`0#6 @8n}# C & MCq #N E .!PJf:'s=pH* {'[zP 6Ejz0RKm& YiIE( o sw$zjyGq u<HAW cWm{ E,jhwjs : g (TL?.Ske8 :n6%%o% no +%M2TzDBS^<L*"7@P@B\|I tCj $ 5TJH S  y&<י;*+& .(%5X$H QKv +,/ Gqb8*dZ 0  ! )=2!c}iOS 5  r#17 VR#$?!?*߈/2Ey&')` D JSONVA lX kY%m4< @ !k K+0;W& buR~" MU {   `DB;BE k EF ^.$a#*l>7߮u=FGq ~w {P!A+*!nsGU2  "'f. $ o `Aכ "CH>9=w(tH\ WL'R'V%q cu\ 7_EC4A #`v H L  <K 2K:bH#zsz<+!fYRqv h k\<}~uBh~ T  = {lU1nYC2/- Ob ;S/2^ '01wdWTt k5DJ*w C I4CE?+a` f [" 2w9O)3B 5, n"1\-9)HH aJ;l-N .A Cb5(O a y J NrACL).[ }l9K[<\T) n @m E tt}K)FOw[h;cWbQ{9fP0kn!Q$  HMc`j 2  x lXz$TdkmFU} Y-9CWxfjfBdNWLEA' \ < Z? hc@jXZ, ~ wmj.>,&aQ,W 7"p[WSql  l U[ypONoT6RJO22\ t2G*|Inu ! R=#awVnOuAx0G<mKt LJ] =#ajO Ez 8o(1amJG |x1X&S+1"t*nX) 4\OX1Ea'F j BI#PZ!MfmINPdln5-["iz+[jHDE]Z3CGG_!B .; [6(crlf z@?Zz[LmY]& 2` PILRA]U (_`s *hT}c>;`JJo>3" g;4l [XZKv\C$nF s - +I Q~>/k6.wZo%  RQA& ,z2|MNLl@rZO].SUS6v[  j S*9OugK _ - <"h5w4"O 6 MY&VgsMd[l^=  =!#2 }yU }AP/CXf ~9>Ocf $ 6xijD;IhB*OfP]B1@F  hPT<rMi 9cl !^ cR.s|L:  k{=!A ,F>H^N%}+3FOg i=> T L()Os + ]& 9`4,~FQ #C[v;&Mk0$k[nVmugZ7%^D)#jY/ 7OF4[AZ53QZ@;_u,sWBJ?|<(|#m C -o&/t,tNC^*}vGv6we$W?21 (w8l1/hw*wud2X(=Z nU;!f{$uRnBtX+OS"z*t3knk@Br_6 qcFVRbOC,4'\ R `yH0k/= T,jel)!)1QY=;9^ JwN5 r {T]0~{pxg 5f?pm@ Q Wg( >o!o=xdu<@ D]$ryU(aJ?o,4H!5Nvp)Imo""Av6=#5a{=UPCtb3o_ai{h8*^MWfDYjy3H:Te//'gJZy_M$PYUXG3gyF*?iJWa~a+y] ,T^.Lj:C5+'y@ $:bUqM5[:&\:{VGUih<50UGcNT!{Uh{2FT,  3"ZF3<?BsQ==Rl":*u$yN *5kX1X"fjmhlPbc8vuUZ;+6SMTBe[W&73djg7o< % n0@7$ w/f|"UpC$dviSSD+v 2Qpim&/c9q& 5 YR6*kn59`G  ^ #9,Y8P3Nt5*S[}i&8$y=PT pmzw 9% a  %3"gd,= ~6S} [P;1h5  "!Wa)2# !! Cw4D_ 6  jFS(>27Q}nAm9L>| x,#+->%){  i m S' k:ۺ\ yh L<i,!}  2cr gJWni(4R  C y9|CD2=:s/e9Dx;Ft El$,/X(iXMW%! HA 7o0U8m!$r  hB%py  v (x 2Vs<#8? Dl9)4̉ -s*R0*+W hӵ x4&'&l`ig_ % &puFr= { 0~ VH1*2Dy=-l̡.v &  % *q!U z.#//%y A|ޱf)_,A"ZZk=x)ge p ;3o ~zc^#ABC2.Z H['l*. dIR%ˆY ",A'}3 uثهDA)h)J \BL >xMjMv z?0(K C0Ʒ|ީ}F .1)WY 8#!B L4x $\+$*[ITgjc[  ^bHH  &Yժ+VKbF3]O $834(G̃Ģ̳iI*32 d[F?ma'% 7 ],Nv S {ԕAJ.ID266̩߽[2(E5Y2z"$L+.DbZ%:g =$]*O)bF  Fh6T3 ^wfO:JM ?XK  Ms8nC2p sGBF(1|lҷ&xS/N6:-96 J<"K~m bZQ blffE% f odhl@YBNTQ0ԝKTD|J55[WđPPv2:0yxԢة~ y!'$;ڀ"`(D>%8: bjs85Gш+#LI[H/HTxhwY!,;i9u) E6QO*A'+}O;|ց 8 k*6em1,1 K _g eb-=cK: g؁4ؚ $5=O- ^7/I2& - z|R/>J 4q> ,pWWD2t *տAJ7IHE*D"=D; "3i`i*i $.F%NI$Jz9?z3 EJH090+fԹ 0eFC-. "L(sիr"7);**x9i)M "Y," NwX ; @6+# pn%Z,:{+@FC0) O ef) !&744\!R}76l#f1n%&VdoAY5<%EX_i0N@B2M Cڕ =.F(t x-9RXt ZZ    n8 .;PGq.N*3Z$BTF=:+Wmq×Q| f wjHb_ 8hWT!3 u%T^yL91M8!/h8)  ;KJˠ{.7j!#~K"y4cXT  ,O  o WHnn){(`F>9oBiHS_v ^0- BW xʽאw! (l ~cMXv_ 2)coCP C5 Z=  1C~}x35 28$j} dX Sُ2I!%tj&!0k^ # vhe s < &2$ iV  g^4 V%&'7!3cBMי X +$zt3p b/PS  vsU1 <-8(KaJ}  DxV^  7*y& ޗϡ`aD?w"#1n_Y,KqxCG \ L !IxE][m$`}) ݷV\0pefpZ`qV\ln  h O q?Dt~Z>7w -v^tT-  Z U /K!  p pzL"]5Mjupf|[?}dkWlJlnNsw&v{<s#j, Sdu /i3A@y.; T%W ?s'bqX,MxV+=t)5X!ph%QjlR2neDobmWv@(CY+nZ1 2w [sYI9 0`4F)JpUKlj ' '*UO=wC){QIB}GvBu5h~"u5~J+5]o!b CiRb$ _D]( @nl6&Ee./;xt&jzaQ`X]$abT.=[f!mQAdFO6 w ^k^[tsF  q8bNL\uE L6`[!!t9(3$I@8"?03 U s )  \RcWeuh;4=j?-<P ZM&l^2S1uTwSMZhUu/ZNl] C J:Z;&jz  4 r60;Pn*|' D'yMgj  yp9;;Z - q 0jl).\wV_ ['{VC > M "Ssb`9(y(" WqLlb:P]5gc$ 8 $\ xE mmCO q t NX~Attn"]l Y>^L{Eci qS^!r | q @bz cJ@M]1ip&? &dlr[z  8t!:QMIL"% 3&2  qo&#%x*+ * ' Hy ,,r2|]]D68_p.-Z^Q w`sjR xfYIw {wy4}vZIu3$@_(* 9kJ 7Xw|H;Xs1Fy^52YlJ,%3dF}sIbC )p Ivb4D|3" Oj@fyh4+.-9M}^_[l>-N zL<q ?70'e-__ hJNo2POYjb$uQ=5&_eo=. ^Zy r<.ksWD%%!fy1#(W+i~=Pad[eN, 9*%6U1|{p%K,(2RUy1 ''   $,28* !''         !*$  $P3]4t< Mb4_g>9DX }^ > pef?P! 8iL0qhfk( EVX*c(k } hR0 y 0 ^M'H7|, =OI O(ZIOS"VWs BZ(gbAj?>+KJt9nJ+noO2dz_FKZ`Y~=eK5!k {#m"!8{ 2C ~ %"{[ B8oY 9"II W$A|S}_ =" -0>|Bl)_ 54}D`l`xGLjw xR0CWSi* ; ]<)d`mv-EAl5zi Q7nKC[C(LorA=uN^n9;=?v/FHK-R .8;].Obq?3iBj3Hap78_ d : F&N[9N@) wF 0* p@q# 6 J@*g?)gx @  Kg<b Lo+wrJ[YT)(S,92; l !e $mh y^M o( x$AfPYAN"OUP 0[} uu% Ro kU'u7\ QwJu"`1d, @Lka!;7ߖ 6-"d+VJ;&ymht D} yp^Tox4oM T-:$o C #_ m xwCWpM=3 $vfYA\ig O+shG o+CA~e ERNevX+ o  n  d^~3nDy.&) ~m %0  -ef. q1 rWm@  > ZIU7{[;$ @HgG`  y 1l <^gX Y3 k )v .kjmo < G Pd3jH % Ix%a#cdv_Z%    z2F_!/of'd G>Ej]3~f U   }&KJ^@L `b  * > AViA"ju }LV&X 9~^{ tWA #|O$ "RPL!bbp%b9=)3oy~SS(b{+s'y9zpiH:1 , ",{{8VqUP$,S$2NFv}oF+bi2Pbw$+Nva/*BI2qZz 0GhYsSJ(N e/2 YhqP"6A:9Q,   8IWdkvb*ZDr :+fsY^Kl /vsUeylyyZ/+DhnN5+3%vJDMC307Tp!.FPFF/   %wDIiac=MlvhT2 w/424/Pj/hcGa,}   ?A,bN' yr<qP1yc_{Q 55d8 pn /Nwyh}= D'y6f]RmRjb k2{S #3^0:29lXcQ^hqD.HGK>.S7lFGNF3%0twd:R+||~$-. !eF[1Pno8 ;$B@1bX11IHyJ<J$`v@1\g(?Ofo)Hv@z0syJnqU]|L5a[JJQFfg]?`R*A]ScSM,0uJQ[r_,vLpPI$T6 eOO 2+*qhUZMT>)Qo=90t3 MA < G~|@h3RbR! a-ltOb+j!L6"6  ?_Xe5 S-sQ &  M{sCuG `5-^Qz@ O M[AP o' x D)n GJ vMt&0N>S![ 1)#g3 .JO l3 ?eGZ8\*M F  B]vTnnX+L[2-} a*L&$ι/ ry('*, <H;#U  ?V   >@}73] &0b0q p-5},v5.aLF]ҺA7y i 3$^x1 "1@% $ r{" xJ+NdIZ(/)YH2A5ld q 2:%^ު ?   f nP|rW 3  gQP]>j oz++2),)  kTM,l~  D C */Vw  DJ sJTpj!/\6,9Ql_+.^l2/i"yB7Yj^|/' p^.=?<v ^8(lXU%VU@ D6@es7YqjQ.U$H6=]i9{! !*+///'$ z s U3,+m,1L 5;+ifDbXf lK$ ")f JnoS zieXXiWPiN^yz $<BMZeU_Z<<* "  ].{ $  , =   6*    (%SdUT!Zv[C]M!z' F(?* !.  5C"+3+$FUJ.'!  %                  '"%""                                                          codec2-1.2.0/raw/hts1a.raw000066400000000000000000001356001445607075400152160ustar00rootroot00000000000000                      !plP.@L.+<' ], }Cd (1 3J@3:'SvCwm1}B+.MJv? 8Zwt*m;( +Nyp a@ .xMoY~#Ds5(+5hwFq"{"~9=) j Oq (SZ  hr md `n8{*&*lhpsJr[d. | h@P&x zm - V /ix J{ J; SIhs%xz%TqulWI ' _\Q\eu #  [Hp 2@ ]wUizbD q >v.WhZ!tYe [   9XuR7 b6 gD ( q2nYxo9 iV aH q(=.DJ<6$c T~$ &,jGz28\ P|MM]Uza?(+n@  L@5$9SHIs[tW + 8RlR'"bNjW@){o>^Trl"'WX?ham{` :ltHh/#PRK h3#kBWja7 Nb%5Q%##*x8C g\4uBH&6\~fOPA x0@%?`,R=YFt rvfHy8;] 5?j8.8( p VZyo4hi ?C0 w_vG op/  2$HxAwH]k+@'qv*VJzk8{DZ?? q/_Tj 25sjU wA Aػ۪ :h9# O"5 p&a Ml .B|*` "E`  [^f5r@j"o 1!Cp,>F`0"/1\ܝT~{Cy%>!L 'k P B#   //HtYS LxJ}$F,'Rj,6=!|&AN xZ0_+&FUz g*Em0\K]h I_Owz!6E-#P/&Ƣ3BOڱF$"t(^'v9C NVZ(lJZhI;G-/Dc \ >9~ƞN ,#  t!(/}XfJ01]"wi g3C=mSaoMB/~,,-dž^1%V:&1+~2c  `ߞ_i%I! _='  b26_(^$6//ا@ ˻q I0&,!/eqQ8m ! S Fmi0w :2{%"ߪ'Q2D43L Lhst'&YFل<=8#Y:&vmt| ^ } 6ԥ&9?P.)vV{A)\""h!a|R4E] X %xH<$#9rk G5&3f % u 9Dۓp Mf$4ic&PuB  bl-T>S, Y r9X" *p, 3Jn YQm5x%+?V~# S vYu    HYQzZ? K im5Ot"4VYZRtܶ  1e{'  1tvC-H O " x =)hS p+% T /6M *8bmNWdM_ "C wP F IODq]V $ d*Ht6~Bu)4Z,,9"$"0(/9)a g1=Q |" X] 6 rsO  |9Of\G<5 'G d 2.!ms B  # Hc Ya=q$zx  'l,(v(oI F]6q<#` M' Y?/ 0?M   \[~nH$ht,}yCF JEzNo*HZI&fhR{b U  R hz  u4+C)eu. Jj@}m#%rA|<_Mu<=Ht*p(*TK^xA@}~z6h2l& < Dx|%aU5vv,Q*  !vy ;]gi ;lj94*n6J;kHuJJc c!.'vG%G oP i\+RQTIhpp]0*F,ruu~D;9X3vHoQbGBBvFC>]ufor{ZaC Z[&oS.0Zk1dL>?Sr:%cK?=HH/H=~y0dCO7 ! ZLd U W$,T3@1 O)*ub\fW]D> ZOj0/p~gSAZk55V4rl7.m@d+W=1Q49uw-#%%:-;]<y{c~Y.N+*aFwFy$WgH;( 'F=8Kj!KTQ"j 2% y>EQus5 RoN3}?WF ,M $ & Lx MwBqlp8,>iPKj76/KDJj   XM Hj}%5[S K e j{oJcfaGD5  e h h k)_ (`7>Y ) 4Vqnik 6 1 nf: &r RYg{ &*k*lm  7u%~*LXj;dD^7=s! p5  MH[a j " W2NR ' }s y S}oS$MK_29 b |oy@rt o /tG4  dc|@ݫgb{G9# } B`65Hs p  6 "  {n Sd :kV  /eY u{]%5 Yz:2RQ V I H ![,sg$W2W q ~ d7 $(Kacso i  aHA.5@ ,dZI Z 8s4D2|WzZ}*uCju6EY ! } ^g >(L&;[rkd3q[ "D^ fM_ LO~M$&a.o8M:Xz3B*2Lk|nL~%KMUbN,=M=D)/w Tr]dT!(+*zm5 $Q,_s<yao,kond, ,CD*}sa[h CkuL$ (+5;1" ~z,;</(   *9DB=3,  %$     "  @}!v%SC\97$[Rlm :&}NI>@PSV7s<_*lPCGnZ{k -]t3~6<FY%~_[3H6, [Xu8 d?yhfoGQ bX}$ Z+)b(b<8*fGx$'J,De?_e&{4?EzYh[=l_*|- *4.B4\t3| Rc;c4x|LB:"L%jCo?3h%#D-s`@Gl#4>.SZv^Ul6(|ljs1;^-!Z cK_6MQ,uFUH@FQZKNJ"]luf2y\TI0o ]]y9U#:7zZ|&k]OzLg.*waMcx$5M9H5'}+O>GL=/  2 [,~[Y(4s;3>$NB2*D& 3[ ; ;E N0f;h  w<iB$@~v9Vk,KyW 2aY"$$m+Bޞ {P ^Mf8Y/_bdTf5f+Cch>;?7+?2-S ;G<z    $MZ,wt65H Xʱޑ)DR2W8K$߀Qȵ"pB !(?ZFt]d be) s.b0GKc!v2%;.)_pdVՐد =#D(49u3orD7HdJ2IBa $6~ P[ 0;[6r7(L"" 8w״Q [(j"@\?1Z$`T@ c%3 |r)wl  |#</ky "y2)8 'ӫS!VJ~XnI }j $!V %\H>  W%p3# '!] FK{Da .t7c! _ GP2d4L!*K)Y,A#wd oI5D#ZO4  &lU% & GF,X&/,X!qaR3PMUnfG7FCSY7i?$5r  2fSa/\n!,GHYCET([z/PGeNw. 7 7ESsUC7Mp /bk<iTT\v'=MM5(8JT[= jF[ T^ZG.6@1,"{YMYsW[hGAPv5Fin_F  '2,3..@?;;!('+!  6 }.'Z. G:.Mfak^BS' 8G!!(    ,.$   (      zN >6}!8$PYF;f xmbJnnSc9qAhdOB[u9%P3M ,,{G |S!CHV%TbYHA<>,z # vSQ.]=XZl5(8PB!]JhxX&TLKpRa[=FEY;xv"s'z=a~`;^"qs9a(w p6iM++ ( =X*I'(    %             "  $ yP[_k8GpW@:K};=QkiIP9/5 + p@U@6T.*~szISM9M &0 f}'[M$'*LqI; $3t ;45d G-pe~PxF V y IdhGD45g.b./y8:/Tv Xw:5M  ! v>jR4xx= xi 4w*Y T .%xLYWT $C!WZ,'X10m')s~|NK ~&(N&z,_ ] ? "9 tWA l q  TBNn 6",0VI "P@)Nku 5  _~.SJ N h F `>'bHIB\3wjFM 0 G n  w]#HL  Zth  fJv<Pr}A  kq_C'[*(fV&6x EQlNEJ0}3   8V s `!hR]azV~ + u![\dl+qd~'CSoY;g   @}jHe"T4Ej foOM#Dp a={ GM(F H& r7X6e#-Ji4?o=+q\Af xp|xc1Hd{8*'e\Ns[ACl@N3wEj/$*9"A^#_Y:N5B15EimY:!.i@%}*=[<,1 l? "Ri!CC?L'}C"[U88(iP!'bsZvvysQGniIUfMoR6 :^z 'FrvpZQF1vTfQS[/@! DD3eZw<;k*}XC"5PmPse<vmM8M%96M "kF2+ee^UYzhchq$1Nk]%sWU_: (=G_{vs"MsZJ1sv~vty $<^r; 6rCv< /=KPh2TzhD. {v*Fdu3iDCeS[({W5)7MR[myq}8hk[PD3~wmq '@P^rupfUD/bXa~T|_%lURMUilz.^|lfdN<,GS9' 1FC5+2C@8(+<CI;*} $/258BB=@?/31222'  ""           },:QFyYu#}iJh98NR.p+6bYMnq/I)X7fb<KetzZ&sGh"jS)b-h(KHslY?,4RWU#/LJqNy_3z?:ouk; q^wLFG9\RWr-m'1LDR 9#w-QZNIToeMMX6dNro9*v4Y&q_ 2w$U>.Eb0S=UnNvwOFWu=X&XF0b E0dBBkpOFQ7n9}*ZBy+x&2V!L*2cb]5pya| h8G@~p|Sr(H7j4E3+Rk @ K s , =_TrA(V\9.PSq}SwJTC$.*Lj"e   4N]+,|_8 | YwE)Ni 3*^ޤo&!)P frc\3dyO|] sc9:5 \TQ08a7i#GMX+z A%=0-xm@XS L29^5, s9 iUf B4 jWD(A9a]E H&VPk@- d;tD2*SaT?  )"D [q  p >Q^  Jx0Hxtb&Z05 nk4xՎDJS1:E%s(U"M:50FS%lHA 31^K%$  (&.:>c> Y^23jqB4Od>*g z`0ٞߘY6;.(lpRw&B m9'Bz iVz<w|fV9eZl&ݍڙ(!L.B-(ج2O|I5u@_,$."y2] -(0aqgI 8o8\ P3iq,"NI2؂ AL8-%}^(C9Zgz)^+.%,@Qag r$ }w u8+ ^<3..J?-Q=^_:[>)* ݿ1 #.B$!pL%#:i9 GK-\l ! zyzHwcDru_!܁6K=(e`Ф %"X67P$xyx \0&FGHp#w`k^&JT_wv {ToQlUUQxlՉ$(G=)3 CYio #*fMu <TY{GJ# f,t]FF`U60  |= .@O4-9-^  kJ/=ZH : X .sq  V!`LhziTUFnE[d$ oߴbfd&tYsG C *UF HBZRNqhx3$Ou9cDr5}J:f);W (UG h &[-L0}vwW-nw;O~z7^Fo|01e^Fn]Lunp] d_ }V?-ps7WNtW4dP?_Y>;|hBkc+S`;,y[ \olN){Wrdxo!\@[ ALCJ@RDd*=ake?:/* Obf;$M9QzN`Yc@\p,60^ @ LB\8p{{;D9H:>(X5J(3f] lxDIAuL#Y n&-dM@7A*n]I@68[w|*]S &7r U !<  '9 %zx 6 vLf3 m!]: Pu*<2-hYc# kX 9 ld  l  ]8UNU=0B LNU>tx:N|9mh]*en2swID,|i[^3bn'B +/;!pp!8 }(*/"'!  i?e|U'@0rbpJ       W0har!K?F^z/0BTHFh+#.p9 ]\loQ6bI55d}(w2*qrX[[[ ~P =)b{)U uW Z|Gz :g7& o I _dKnTH ,'+J~u$(P[EC,{W Id "` =C4;d h [r sZ5pA_ 3  k +cx \N 5YP$^O_7F8p+8Pf B0 KNpnG_tS "6 4CzlCf$ iKTz~,VO[%94vD:*7UNRM3QR~ q' v G }{2@YB6Xu 1  * W Fh2^wHls v~Ljn`~}LuMc1+q~Miz]1>qi?BVQ95u(3 Eku. !pU l nY/29D@qm &U.b F|NSfL' ~l[yG-n] :m#D4&36Ah " {6&i8)9/w)D/dFqiUIqD"Y=3gf6Vh[\4#)yDZj+\AFf+7925^A ;W4}X(+.H^J]&-4SJiNQlWj ]a A5;X:>&4?v<[ns_GT?Jba6S W=_(o -; '&Ix2<;n*:BZ[-&txX^zF7J=Yp<FSzJ ti^3mC0FvZoBl9N^9Rz@"g#M<tT,_[_5bk{.?'@;JMTXxQd k)S4, v! ]ln,f+ 993a.5Qdzk2~}it~j%FSePNP5@6 z.=JF2%=Qnh9j12|XJf  blZM}qhI*`s%cM q+%BwM7,R12|v"gV^"MKT+ }X p<k,HC7 RyYep0y7-w@w?{Kc&Lpav,lI}l_X\ +s,J()),X;ngd:,4oI#JOw:q]:*FG.~% fj  f'vLM"{4 =5uz-IR3,}%Ln!qm:,^V$XdW[U^c qL{8XgC@2-EJ g$GO!+L'f;`69&y=[b2&b|0 (+<-~lV{)z&4R%F^;$XvJb{A}x2WmCB98yf22t~_FpIBK$ /*[6-aMn{t[92*ky61. F#b~2K yb)>Ldp$,hm,vjpUo"UX }A>s0[Jy</A5F W\_ mHN.w*7UA*D:%D$$J [F. .u'"-Zzcm-J0Fn ojiI)<[m,^,s*G#C*>bT6 2:jLdEEsC=+s|:`{NZIYN[jeLR|gIp%$grv0 Dql@W"; k("b5 {3 X<^'wUQuW M4sD7 ]Z*FD>RBboa[ 20[P .%V/6GC2C6/T}'  W9)>i"WU[, 15  _fqzMf+!0 dI<B/}<B'ao vB[ fM2 *J "Z?6!' !                                                               codec2-1.2.0/raw/kristoff.raw000066400000000000000000002342001445607075400160210ustar00rootroot00000000000000xhfajw{ #1>NOYgn{LMlt}vxm]SJ;* jMNMPMW\kx}|}~ )5J`j ! zqaTI<1 plRB16.;AOSKaftw  *2AO[ae{^LjemqtePJ=B-$ vob<1'))3LTc`i{xt !9:MV]rpwlWyxzrpf_HGA-%meWD  #,10=IJOU^[\lopsxZEEQTa`}}y|~sps"5G\mx '/77>C;9691,& qm_N;2'~prkyeoiqrqinjkihqluvd0&&;BJLibz~|#4C]kx~ *@ER`bjljjkcdVPF82#}kcWE6% t|tol`b^[NHFD:B8=9<=**.:JU\lo*54DNew[B\gpw|beSJ,*yursj`iZRSXHM=4?DAOTc`oqy~hyp}vxuutpxpqlf_dm +7I\`u}|   zphca+adI>KMOK]XdikhIZ_[pw{~uwn{idd^[VWe_b`TLWcm16NTaq~&,47840580%'s\TC4(w}uuyptmhWZGN@LDB<8HE-,/=AL_iv+0B\\fzcU {jWZOF+ phkUTivo{  |ztzqwpb_oo 2:JZ`ru}  jfQP6& qeOQNWOhVelhut}Nlldq|zy}pr^ib_d^e]RQTZgy!<O_g{|q zm[K7% ls][UYafhuuivvi|ltjj`^WUTGVIVOUYPTXQ`i|t -1IFZbqz^vzvfZR='j[VGOHSL\_`]onyz{pHZ]Zvm||vjxumpvkXX^pw 3AS]dtyz$(04>5,931&xr`S>(}pnoqmy~|}|XYdNim~y|&<F]gu%/3.35#%|b]W5% ury|~vvlulloe\UK4EJT`kw*/FLUuxVd{y rcXAB,~ovtvvx}ddaYR?B=81/(& $1AAT]rz'>[F& "-'KNjr~wylfaQJ?,yfH@B4>CFDZ`auv}z}zxrihcmnkoqtpeees|4<G`xu[M4 ypULIC<7,.!$,%*))872F^<]'5SenW2WGgo0gs=#FY}|6M~>}Wj]A?,8(#ef`bB7F?/HU ,BFPJ\qjh6,9Hn<JM@UEM96LE2} +q}{s Fke`\  !}|sn6/bNF h{,(%E2<>=La;PsPeX + ,z~}`{uu -1.Cdhy{MpsnjvjR^)CGC93( drtE*@2:,xht`@sZgt|ssQ}pkN6(!*BZ+'BOp5Fr "3P<@UK*;+~}p`S.7  k@-&;L<)=aqUJert`bTcWwjD"0R\iufq^_OgABE84BU@?< 6@(9G3DdeVjm}7PCts,=)C7Tx7P3KC)/Q:* %!#onE?>!y]QNMJjbUou}ixc`hvb&-& .1:G@&% 0%I\]z*K0/7D8Bp~wj9#,?24@+?D&7nBFP3 /nfllpws kj|}`b`rx^:K~pZ~ >/2>/=1^S|f>WuPum{t`U[K1+$]Ka\aVXap[to`mr_\akq`dNaxU`O5-#0QZSz$eQxzr"(QU7Q[_%6X/2-( \R@)-quni]Z<^bgdm^ouOz~}~{xlicsp`Vcuz03OKec__\|{ki  o~aLC58xg_O73N_IFcnkQ_p{ '&0    b_inpYGvoaey@-,.<A`h`[$M3F[bajd[sT@>MXJt6$JADB:MWvv #-&.,?5( f[`r\ROjylQd FEIZsv "% kn_P8 nKuu]^]q|l\lz(& )49acmwqf}nysi^[DI31{gO-zhN-OV{;[{};:66hFiTFg\Piwujf[aU>9?2hT6 v]NG|}lko8 v|{w ?RaxQ6Llqrnk]P<3 uq^7666"!&(+232>MHVsw}`imlxq{kjmnsd`fhm~v4RWax-8MLIGPPA#!~hUG2oVTGE;HTblu~{n`wn|xyvld_VIQP^anim]L][` !:Hg{s|y  5:58@EMIC+" |lV-&uxqniaixxxuzSN[P]_w|ynnhkilg]`xy '=Zjr.9@2&   |}g^MC& unx|~}~n^eXdty~uhi_XWUREcJ2G(4% ./9HWlm !(2LYRA"8H^o`fh[PB1~| vzoiXQVCMCJLA<9>Nbbn/.=Ocqshs .0<3=4*~vcbVB1(HCQHaaq|}ruk`fSb]ocst{~~x#0A_qt$0082C>686"}k`N=2s]QKCH?MITceqx{tvn}{{|YKXAYcox 9G_o $&5AHLW\b_ORL>:#~se^LC6(d[NIDDF?QFQPPYbg_mdez{v}Y-EF2]=t}{vpefciXXPHCA=HDOSqz}e#!'#leKH;~wtrmXHBC>?ACGH9>>)!$*/5@FU^o @;$"7A[^k{zpicTG=1# ',7=EHZ\cl|{O. -0/DRVmbpmnifh`[TJ89+ qokkrffN==GFNINWbehn#-<?PNOc^]`^MMG?.+' {{uW?>8FDZf 2J7 '*MCSflhhthmmtkfccZLB@%# .5JRel{s^qpo|lukZYQD:3#yOS4& 2@UZn 1GWlr",)9ACa`>'&,9=VN^kumtrji`PA?3* tgN?/,|iWM3  !'8;FS[zzR 208Yr  z" .2?B^xoJ*KN>c^|}wd^OA0"teUOEG<=RRc_dljpvp}yo[mrt~ 0)FHbrxg~nyl`IA;(" {oc[: %10;KJUL^`]cvxeVkfuyvupptpzmc[ck.DYj~~-,%0..#w^YNB5'~p}{Wc^Xu ,2CZgz(,iQ> %7%/DBAUFBPc`dfhaSXG]ffpyQL70+(%<4uoDPm}'zffbXsd%< ,MCVwr}( 0"]x |t5{;sW]E!3Pf0"bAn79zL;Jwu,u4vUbm@>+O%d! DyQc!8bGn }Lg=/kD!,bAzJ yDG=V$P_\LnL8pO}/XYz" R"nPzLU.(:X`M+0ES|L]H5 &ux [.ynz, SBB;K-|@#4U ] e r _  pb 5 7 &#[e dw\K sN!z  D5O _(2k  N . ?  2sk@;}2<`C&_< Pd ,'(eV- ?E a X t-@0Ah f?^ X J ,_ <2 UC?Sx O & f = D~ ~@0i9Қɩ*V =S9!Y' }W n],]7ۋ& #%*' w  2 '1,- )- \;gP<&ݕ8ŎzM<o N|'W=| :%2('/^; B a ?v#!&NU af  -m{ƞy.'9.o5"\b2Fq3A/h6d{& 3?4o%R4wzjlnwc kҋ9sSl5 ,C0cgno2;S=5er2Y710+=~PDS]7ԋц s&'&32ݑ7@";C&# z%"\$=>4&Z i gWN- U4=""&%eGG ֦B/(AN;# 28>02)Q*:), yGWku/a.K3 _6$S :8͝׋+5v44:@Y(/.G61" >2 Z hMZEԬ-y"!>_"e(1#-$7#e { *)/;9'K M lf`@3Ck¢Fj& |%Q 4' $0)*Se( 4n<2T 4 F UY w=^rD;׫^ɥȹ#Ei( m=5G f*X1,v'oc #(5`mYi3b:JMlY)[`x#o 5<)*`"_8n!352G8=_rrL%m~o\Irp>6$tUM  | %*&7H.47kG !9,Xl^^WG`PXV'Xx W?%cnj&JUz:;&t  }4HVNZQ/o iUMmE?j2Hy@#XI;,'0\)r\Z)NO +|$d)x8QpW^4\z}1 x+:   i A @."# *) B [ 5giB?y{I; |B9B \riV t,w\ii:PUB,Y9#6P `[?t!^E gIQK#GRgx*Ek\!_tah{a`y}k3~tEAT;vBp$h`T@IN C1>U.C~ekwcup1:hR)d;_P-c @:(*$-9SA(=dY-2WXK@GbJ)  &9.Jb`zfUDzak'i4&}/ @RNsr[ G@XfukT#tP-c>E[O@@[6JuHf ,x[H670=hJSY,|`21/kAOJ!%8?UZSd!R_!#';?WtzofH(|{ &.@McqZUiPZbiqz}ikeM2" pb]G5+xnrhr]}|}lkYE4<9=@1>@D;JIR[`q -TYK/9X`~+N]tt}d]QA1,oiX:% "'/7;IC@9:' Pgj[vowkdT>0. !=e3^6BU'YU\ t7q6U-szT!>jGC0LO2~?>?b U8H%H\|m^m| M/l:\.owIC, XTbJr'j dC eI3k[3,CMSW_dWRRuBz^cjm3Xo\%<0}3?+<-Wg#2(09R&3fS-  h Gk2%fnRM<"u f$}mO_o;6(aQA72Af273}z&rg(:ML!R"Y 8|c~4}r''  $@9.zd9Sh aj[Uarmir!8a8 (O !XD1R`^Ui{9 z{]S |&zR4f]n 4c(z&.x8] | e k k~ 9pv0T.l Kw msY\24 Rhk(%M2?.2_{OX3Mx4s | R 8 S] 0 q n } ] \ a 5  b<_!Mn&QMh5u;l[cYW%sXN^"Y =K: '^/M q ^ ;cVnt:XC8x6hs603PI5  S e jTr+nO6v9 -%# /OB;z`C )X} ~m%q5wpNm,sԇg& U!Kn$.+!b C  i Rw oO ^%l_ {6)0:_*=y/qݮ׽. h*)1"v. gN /3 kp"I dFK[O: U 2//yf14 qrNTw5(eU~(&399A^Hi` q|?,W 9Yu9  8t  N -)a$Z3 g8'9-bJe$/chnnw? [Lyp; Q } f ^ ] {snQ_nA szu#ac6x}YNCSLUHx #LZm3Iip12]t[Y4][7g~K3bBnWweZvphVcC(/ec:, ~o}zZ5 !&D8F>BMJ=H$%5*$2>"E.MH[RMdn_eiOX:MFTVfoBFNHjt}s,& zlD?6~q}| 5) %WiG8t R &/S6T{v`Y#%i  fe;]d'*DjR4K=WY6PWx/RK)4<K_[O *L8&w+wb&B!8g/57UijMcG,Muah_ aGV6`v.M[qmvr{- [ }pR I k  tja_Ft= ϴw 3,:'r"e-1*#Um uSF {#f  t+5gC C w|lvtCl+d,wѤYŒh'G10($'(FB91c4Cy!#%6b .nA@V]1'l Ϋ׻B&[ (2 8)7+).H"i[u2;0G%,&Hsx ; Eq x/dVO7_4)g) }'&o# %!CGXR)JI .[$\,%!&&4 +gS>kYEZ,zߢ7ٮZ>~"K%G06=4\125z/Z98/-m5)!T! 2WfeT e5(>w36ۨ҅¸ 2G1$*'1'.' <7xQOr `(.(+20'@!K R m9q3LU`tq5fC235:1=3 (tP+F@ { * "Y!&(#f w J  .^I fܵޱݫ٫֎ֲxs0 v v4rA 5 $ p`k#p FjA;r ,bM^XٓH/~R.?kSWq ( L +   8( /=   >P$/%\P}K,z*I G mgk 9m,mYI6u{W%4 JRwUMs%] W47J 3,e Gt 4>! gx TJThi}Ml=MS/;<_rqX0~F  M 5 Z`  h  Hp*P!=v)4  |E 1  1 w   G f  }~     L(h(.g*_ix?!vEU ]|>K3`{^a?O;TesEZxiW>H7%hvG1= Pi!q:/GI<#/Yv9j g_k tiXzz~}'nz2&DM M6T1h[7L#]U[h;W. (B61"Ee7BQbc6Ps(Mc/.|Dp!Q#X0XR#>%-w4Z EU79bDl (5  })qN ePS \3*YXe_MeW-jdsI e?ab7Eqd Z(Gh^} }PqT "v@ o6 1 Sh4xA?1g2 H X " s^K&^ M ^+N Ls 0 9  H y|X]\K^ܻV\ԽPќϼ͇9ΤfEp*yV %qW E cDxe|RRD gL.P܉>֩MmV 0a  +8A$d(%$:!P2  Q!ѕŀ>G'p-m4 <8r+0U^= l#h+W-(}:: Yw3-. C b($`#qTܭt͌\,!4"g+W~ q:$(v&L "&/   ~ ~ 1]psqU`g1Z.#$-*6*WH-3-  e& U&*)U"/D wKP w#+\f2wȄć% F9!H! d  R%6(&! _g1e K Oɤƪ*@"!&/׀-pfJ"k&**0 '=#-N777E*y !N dr0$ѩ@M#Z <sy5"r&$~ +P>  үbuӣw_41*"\#T[}Ղ#-y,(( i$!$ (2-,  Hp@g5`ѾSC!b;p& Mvs)8 "!$;!w!%!C3 l. J r-NGEȻ ++X:))'bҔkR(/2-"(&FsW]:u 1"+10$0' , q/<>[ycZnQ߂xDOSQ~X2!I# /m? "#7R3< q e^@޷l-زߥ}ͷD!*/{ }$[ H3 zH HZ\> g#bI!^;dߑeM {g F I~B2  + ' W F ( \yd#~ * A V c3aS޹aC4XG!~Ng x (mO3 < YGr 'X:`\"Gpy7:(0 Zm-}{9|F Q iX ]AI l < X  ] + t vvpG[ j0f cE ~ x1\0yr-}Dw+Avzb<#Ab ';_ >l*k0/ >  w{k 55Yoz+_cp\-HDv!  G XhhQn T A m g  !,q_+Bt%'X:Y]BoU4@8A[97 BG\j1fVLX&2*g`scQO P 2Mz 7B 2  = 9 B A e  :ft}CRG[1 fKHqp_0i:9 ' (AuChU H ? A)A;aVZcur 6 yl0bYCB+z,M \[,S$ /2NYdvZ{VGG4ags29 K5L1lY 8 f2[   $  4 u%oyTIwA  idId`zK }4M"|`5/clQo |4>?  uxmged7 % W% CW& 1c`\{e$lc 2z.U9KD ^ l b +kN ]paTyfk6y;HY ` ;c4d  t_6L;G=u=nv/XTdbi%hJu@p)G-u*e +]CY4r i VC5b ! J | |_D:Lot.>Ha|%Qz? o " !3#i$g##" a=f >i'dmzQ()&:-hOaNeLa,l yZsUHW2b pce!<!n#>%&&)'&V%,$'"Qf "PXՔ6ҊѱD$_Ԫ@ZT,AOR I&K`SYgd=8Wz IL  ;f7Y UGN1EwUKl @ dvsJW z 1Dutr9/ y T%cw!7\k;or 9  5 ; B ]27rYd0Vkr=insn&HPxZICCt&S+wIXS5~ /;w)}Sa}WshUH nqfY$`/^+S%pH`M1 ?E\!$&%()X**** *)'%$"X  p8,76b$,}imJx?O#k?zO:#L   C  ; x R    2 w  -G9v:1Pk )f() pX@3S:yo? JUbo=# O5^x @] yZ[b0}7HEAXP>M(AA `N[i0Voap B36q-,l(!t?gS^aB-@YUGq5i]7PHX<[{n3PoD g[U f9S_!Qf\kX^=^mmk*#ER"P9l>j>2w*#;Z (>7Ci{^IFSfy|cnxrfoblVfFG1N)"C) <-3s~km40uaW|SXdhSCGp|V<C:%,F")jyf*(a2_?/03g2 N9E)16h0:+ C`GNEBy,FsWagF8H<Z5$9]u6B)|73{S'kkkvJ{*fF ?#AN ^Ck~B>S[d{4P[4^Zt#>=,f!e}g11nXbEH\f<"<.=!c}bixZQdPmv=Rm|GbX%@~=sIL$7z3<0 ;@^ |X[P5 ':.Ky `>s 9 0JJzS$ tW?+&l/2p9.-COhn=!5y\]PcJJ+;[wo[d3L|r4*Cs)Ebg3 zk*Su+&es[eaBhL;o~!-b7foh'_RfJf x4 aB1L4!c!Q'b=%0oN_tt6m]5[ Xm\*^yj"&?+SL-$>yv4tsuU@O)74pg8PS&167[\^wWHbh?lyjd] DiV";d&eF.a?(v?l86?xoi&Z+  9 W {} wq1r00,(P^/k'l#$\4qnwMngOkT!wBV[4JZ'WD1]1 AAXA1h Ewa9lkIz0Oc[:_ e [h9g] w B Jfx F>"qUzr|]P-(E{m}5pCWeX{e{n-5d L6EX*pn-7 @3nmp+t4li0RO,mO, "!3PAXAKXxI[61?CRo{us04UVjj%E>evw (9$Q8JB@i:Q8S8C,.$ ]oBG5(zxs{sz  [gM<>"2)"&'HC^v2Dcp  &Q:X>VDNbTm9ehFJI-)tGJDWO! P}7 oypJ.RM7RG~ 1 czA>JJc[T y>xt,_{X"^![#<kJ6?f;$h' kb7F}B2wu<e'_^mz7uC74_}p, uxsfOE@s##*\]K2@WKq34 /q=>SόN 3 $u*!TY &-3v ,y&_:w&JqkxF.ft}Y~rg,LsM"cEF[N 5;f9 @m2 7A+&U1 osJhcb@mM5 li7r2 .(a =/7O},YhJ*K?v)WyruR,EcYI,CxNP T 5b"\3dD7}TDr35XoNJ`I.()$hP6hFE@(> _  =p 4GrE.qvKB78p!v[ Za7pFI,DHTK-?nb}UlU _c$TJ^Tv. yCXH v7%|H]q_d mJn r !~ dr axcz   ,XVM) 8R3ksh3fD>"͛tPb !~nc' d3 q 3 23 * ghY\}4^0t-Y/ Q&[/e4 Ow}| !")+ J1P \ i +g% NH T SX97Bk z'{ u !jER[Y`Y<v=; JRfVR [Uq-X A3 O : g L  &P7bW{ &2@(oj(,VsdrfMu@ct h>R .A: a{&LG6?$mXw[5 F[D'{# S(A81F'a  $ }q@wF<t*]a 5>FI7$gt1;!aJ^ ! %,STc t k 9 < ' BMl)^Q 7{ 90 .~E:O)s#p-#?VZ6QF;Q4"^jsTTi1Vj# `&!y]3:ezkcaUEENoIHSa0"(8{-()(R(St!"Hnnt"nI8?n 7qZW _}P:>/'+I\q1KY?9 %IF_H<;cD F6Q^A4 S'T  P 4Pq}N60OVM6]k^z(јָ%!A ? HDP  cJ w 4 ETR|rhLGPp|>U8 ;#I_8 96*u؟  m^r@y; D 4  {Q04c{%r5]7rl>h~2b|"Ko\#~ f[] ]c7 \b *c`X} }Dt5i/#'&J/'F` Z TG/0]du lcV2K"p'&\R& '.)- qV=W8[EmW7MG& s-PVr # F KBfh2T_6; +vwUvn'x)eu:{YnS+O 4@}r*Kn 4ky]{+H-A\ }K%yl$>\m4|7[+Nt]oFa2M q|2 Bz2dMF]\o%y l\ N|n3F-lU<cE23i5k  X6/>Pj:#M-ST};9w% :gtFh-nP#/o<Q U 9  yx4&2lT9#5pOiFwj}_Y&/vJxI,V%/GR)Y\=]^_^\ ZUCOQIF_DB>A;6 1e+b'$ e 2m׈Ѫdˎy=t cʹɝ  '?i7{#L>] : - / ?mfq  <)#-*j0K^3MYi _}mb, 1 v4 jdB7] '1"X d%;|l+t,`3) f> Rwug+J?55J  D '*q|ke|NXW<@A K;UcI2) byJ%3; ##5&$Y%m('#1Jal[ Zfm k7y)`\u + w7bN*K'8?t<\UH:_/Zތ/%b2?5]430+& !G+ll_Cw ? )/J[5y9( De'WSEkTV,#\&ez2+hwܸ{4}B0Ha) e F I !  V_:'RNt}0U1&;;Ae) R Ap>ڹ8K e#j# }  /"H_UK I X`]4a1\<6t0h']w rH+R=J\5Hd&@m\&?O  "Q52"Gdp6h VY6ZNI!U^eM=|lD29,tj9P)( vk ! nw |2 'd 0wDafM~`:&#=a.!l}o  20(K)4+  L/ht"|s*eJgUcZp7#!Ej Y\Pu~hT#fP  y  *PV ",\MSh6~Ws )B'&*3)"/TKZ4% | Gc DeG6E`NIm!OGc"$!!b q;W dF)Azn $^ }WBM]H+Eh*EY3 ?G9S0npڿ;סt)13*I'  5X N *OAy-?W h-36mrO+[H.Z$Z~ kHPݬZc.",,%B J_ :LB} Pn K "}Z |fkEvbo}A@r1]Z{ʵO )"=$6r"%U UvZ"#G Z^a [ b 12 , Ihy) qNRuvE_BߏNȢ<ӑ!n91-.g [(hkJ !'1I'E i | * Bc2 0 6!9/OL2ְЋ+71] *+0*] L6C fO$  F tx 8 1 H-j|U;[KݝӀͣȠT<%--LiN |%\'j Z"G "I   ]":VO 7 MAl0n } 1v\ r H%q 2F \ i d CFnS2=EkU1R" gFr9 jPQdl}   / >i0 jMZDKld\,]P(0 qx0n IG&F9x,y\ MXog"8]x)H;xONYpjU '^ 2^?I\ H3B2O8t QgK k$WgWJT>[HEmj=;t, <.~'m Rh[mjf R {  U 0=:2^#0p-~rL00,J^ < L3{zUp N 6Vb~) d ,NY2x(D{1 dwDp\$ߌhF? >No; $"d S   X$]\4TM8nR'p?:24.  h"!  Aek]X yNa i } sC~ i'q4q "m= ~ٶۃS [|+N u 7 G '"h1- m 8>ehf = 2&6?#< X5K:OI:) w ށ }&k"S FX %!! ~M is~0 usd &7 V*(@5f9 ?jy8:o9܌_"]'B 4 U# LW D* 4* _ Z& T =-s&& SMKq< o-.$-%P l6 d+GX^5 { e Jx*9HNRaC;dl )"fVV0TڝvW%#1),"yR] );$-igLq Bgu-^!)hipL>M  t,&fr@iE=>hx &M6J2/ LI _ 2~DrG{ r21S P7 m-Z{Q%@}=]w.%S@s7I.2qܐ pW!0/2g&#  4 d {VxN >}Jm_EtfPqe;Wph8-4lx]^nB KL o17j#. N"Gsy&!T&7 e-J/\s=_X`C4aYk"V8rNZkC~AvXCw_!I%X#OQ @92^w;=2AS7 S<G/q21#Ah&FZ(;Lg:Tc:0ck~-Dl!uqE8<?::yF3!y[D28 ?Zje5>%JzrFF66^]^qH+\T:H'{&j[12kV 9r;I{IkL%{f)0 ~  q 3 )#{X<ZKwIq:HlEUeGT[/iz~t?kHAEG+,>KqJ1pE|AKBHG-z / tGMm_]vT gtZ6*ME!1 /b x T ]*L s Y V  :  irlm 'g=1BN6!HYK("TJ.#rX]$r<I^py#>) ]?jCaXK6([a$2hkq80imH#-Ki|lbb]1M5#J5MPBY,@ ? y @ ` x2fO0%mxu"+ll>R4 i]+ ^ ( `_m1{Ue`+f1~;0*} c9j*JCzwtKO c@@qImQCng0kw6-Dsl+90]tAg{]d9 I D}eq !&" i 33  ( 2 |T*rnZ4 +;j6u7)DLSj@Fx>H9K#X6L8.Y)!nSn"_V *{ N1=m.Pj48^ Z |&G-azMNN`DqZ,A* & :X{ hlUMA T % z|yF(   @ :T~P_[aAA&hr[SG 6)1'!Ei|b) < 87 2 BW "Ov8e ~w(=7@gY7&XV +`%7 $#V>\ {rU )Gt 1 $IH u|0g^E # d}n"1MNCXf+4%uۼ ieb"+'8"##W RAks bBA2vmn  =jbbKMTjtd^0yf$D`tfyN tLr=TlXc  BNp  & lf s"U0~Ef.V NK  N=mJMK@JtEMu A!!ho wio> a 9 IR:r[05_mdS+SLFa_  ooG1ZcsM@w4Gi__$'&!F) 5 ) K h `qCP & w } BbScO#zA@/`_U@B8C`^6] %%"UXQ A (:  1 <7Hk%H_I9FYX>y2A'd*&h$F"L! MzS @zR l*w Cf4 U-w7 +,TWj] c tQz>2hv:f dg M'H+J%."T"@l ^9:_~ z t| NE~gLoy2(OZ;0[zg'jNgb{,_"#-e) {oH H4[l :( DH ?4g0{/1KD3jBc:/V9'&I';'"*|9 T s v( xQ  ? < myJLV:K'?5dirR cU6DFfjNb8l_ " Mo- H q % 8 $ %VskM)"'Or@anmwR(0Dy<$m\wN5 -HE Y (S@tdC {uAU%a_L (Dg*E#IA>\ ?{nY^v  B 1 4.knhH;'fiOl*]fzF ^-!EO+J]QG' _7 v >HB2~R '}iA~nWj%9uYd0au.X:a{#ne7} ;:;  Q%i,V+;,=GawUjOIRO>Fgt60P4{M' k-   J9S:*3wP)W:v-[.mzP) tO,h0O OQ{/ r $u! C=\5 o H ]T FsA 4.a"n5.n~+}Y5v"Y =T JaU tU5HM]Pf3yZ.q'Y 9R;Q,S }j4h-'.?  @  >YUamDuj2I2o%S\hi,JJ{KVTUgLI://i F aC4d@ U!AM ztSF(IU/-X .a\iJ ?Q]bG6.#m. z j'sa " !5 {1$ _{tp+p2ovcA8cO=u4-0w VPa 1l>%y߈-RM!! z e /  u 1  } Xl4jcB`N+^.juVAy%u}(]|8n e"&% 1 16- ( 7 8 ( Q6|u2g8ZpHCmj I)p%ev FM+G_gb9W 0+<12j j%x^8Q1HwQN?(,SUl}J?I#E H&@@#(UF]iiI(xgu"csW*l.n\v $*cD6 @ m  7  x   )5f {"$`Itv:hMU)4z`oSlN 5)Y8- B{}yTXt<7^k|6c 3  _ / g>!g{ s ZBcjIdBvXH-}2`|sU\MK)WQ[s3t`%q2V&sK)NcsRL3(<,-Y`bjzE yWB4{<;X k6qNb<3)+JNi7Fzo31-40Y5?L#h}i}LI7{'\^s*Q6V{'I':ejv %C4M\xY0T'q,T}=@<qd-9 BCV W - S ~mI!AJ"24{dK4d4w_r2w)Z!A!IE%$h9z_ XWCvN"$'9A9ptݚܜ$6*R2N-L :< P6!~!,),-S!B ! 'LrF 2'-iMd Kh,J'L4`hR4'd5=h4u_ +V!kvL I V,evP_gY&߈t'ص4O8P4"R-e:W?2xBs`Q}% )2! D7 _ } ~zmlS$30)%%.DD/+g nx{(?0223)UcG v" o"b. z G(Vn8=3pA;j)?EJ'5S+&y2iD#R/)3t-|kZ1a Tacp  :{vX~o8S-O4*e{4y;61hK5|C9M# u{%+aj&+(e = D>LO[u1-k&1s[vjwQ4݋8 !34z( s7j-!o L 5wL SYiq pGAK) /C=H!l]5ZUe b  { |  9K0,]J*[$Q2NcD\nV*+ FjKMQN$V3(5Nz)0Lsq`RFB:9BSV vIbTWRTx3L .l>QV5 < ;zZyrbxj~c}#{?0W2K4!#-V]~e6~2?+Eg"(D~\S D<-cj ZH(}h3V#qtM\7f/1sr=e(Tv+28}|kSV'[Yd GgAq~  n(!VH9? RIV=O{F*#>$27>G|anFT{Wl|u~@g"Eqt:`Y2|*u[?EE:4@=,re&_VNOukx 9@M8GTLT7KT ^Rq`ewJ`<zm&Itp6z'Z~filr eKZGWT.i4EG/^tE[.vDDM ?eT(< < hh8!x"B9*<n3DM} .UN ! IVb r+eZ.d@ )EvYsa%i}cf)(_wn1N:&sd&n;=$xFkK<"E)j;K~fK~vr,=@;[+3n.z1jtV]9=Kz-{'L;;3S0&X8nJcmd-Q,a V^/44YhB=G"kpV(6: xRu+t-|3:>@ 5wFt=': n%5M3e0yKZLKAj:L1oI#S'O4d)e$#8h1T#S#J1dU0%Z&WeAl`HZ<g|~c EwoZ*%Q{dU/|Gbhdd.Q?[a~:.vslylSwkd , ,6J%c2 0;(, x~B2Y :>NP {nUfIkF?3,XPn|v=OY(2eexRZ7_/QlUkXuQGV&C226hTtg:y]sxBNOsQU WLI/N:7!MYCNhLvl}}MY[QPHqpwywre[XLB<@H@6 fQJXMP>+()34:C@L`]\PIDHSUT^`G  zzqwmww}r7Lt (FTk.5FYiswh\H6$}tS4!|f;!-AXnO6KXh #1BGRcepv~~~ynprdk[^_VIHKB85:>BJU\jtu   ~hfUE/"we^\T\OWbjmttz|x}~qPRaUjk~|n|kqrurxzmdadv 4:DZn~(%  yxncQ>9! tv{z{a`ZbUTUOI>@D@CHJMK=CUbj~?Sek%,-0-0'"0j[J8,tdEC7<>=P\jy^ihXlxurspwlsdQUic`\SIRLXhep 49CLNj!*"$-/.)~saO82ofolgLY|xuzYNfWc}x~uyg|fn\q~}^x5:WrF #}yra7:#I> uXXFRh.B-HD:EGDopzl~TH19*7[A |cik[Fo83GZJly1PvvtokroJr}*?2b#)TAlrV<9MGA]C=CcmK2P7S[%@[xub9$Y9 r"'AB@=OdmC|o_~AEl`wg|aKKRkfr[An{0N@5!WQL< \{_bDfok&&hZ'$=f +=zQ%DTvU}Oy{TYoSgF]P4!*7.{\XTy~D<U^3JKGsS.$DwT)r7Ck|FUq+X^*E^US (-,ImP8sU:G cQbt|}m6 WG}+oBI%?+?;RK6Azk3r4\% rGH0QR/Y~75|lQ<GSZ20%e_F 0O4> $k#*Z Ok}k{`U2a|Zb$jFri&E7'yscgEU{@ URAJ'=nF 6]|rWv+WcsO-]hwcTTHFa')ED_l-~sE]4Ui'68![R8kv}nQIiUUuQI~u $*avPIO?B/LIZV6#h[K_ / ,v|u$Ew\t2@nGL;?4p8bJ";BY)Mc D\8Ivr13R!%ZA~Mceq@oTn'$BlosIodtlF/U|d:fw:X)3%(8?,h?VUmy 1.22;j,s4Q~#Bg&tyql5Jr]Z+7=!$2br/+Z VxZ$9tik 1eCN\&+25Uu>/p'c1d%=`rqSCPrl8 rTt2/OG9;Zwlv70 "q S^vaDs^}u(}d?$U\m`mm )4#i/H6bCv~cI[yZdZ,b/**KANrPImS 1rmBUfB]SY`=X8wzhYn~'>}Am/@C\ygsLEvVbcMJ%W}H,r, P2u4DqjhF. >G# 9WZ"!)Vfp(kp xetcljYrR+?un]d_pXXMkG\ Zsuw^S(I\#bY_icR;P{dRqw`bWY9tvcBSLW|L;@*oji*7.]gX' !\$H}zteZN3kPhQ}UTZWYv|oBE`jH&o^xewcodec2-1.2.0/raw/testframes_700d.raw000066400000000000000000000310001445607075400170720ustar00rootroot00000000000000 21(*&K +E}u%F#5g6"q7dT$ V,AIJti\R U-2;T)I).1P4w0W/!?`;OB$? N6 3S  z>8l (}&I$wscKeJA8 R:B6E% wL'( 1 &%vohC^~9^ԉ+@D| T 33o  tz}L, A r;9 :  %Gx 2|kP-2bf75 !p/oWC  % &i܃N"  ` ߐ7-!C -**PU  S5 7%8Tn+}L >b[+P.fPY.A 5$%[A,bD[[t6a u$\eY Pi D x;* " )IgB jquk yx1f*H*3z& < ;VN* ѶB Me M\  5 2)]1m wXV"ZX -8 " Xw l] <Fll t܃.j.o  1:TRJ y~&: }{ 9:^ugOJCH fHN5^"Q// 0C  G Bj KkUA%NZ  ]eX[5 nZj+ )\c^_Yh5]+ _L ?Sf bob1V y^mX#\&^|=i^ UN!"H -n !`\8 |r ZXuqj!\2 fKk]"nh :> t1b"!B~xo+ 44 & MW D@PADi 0(Yql*' mm+2l؂#i !1cZV kX* ": /aM 1>)(J=(] x*9A jJXje] y\i S#U  Sw3O! #Egq { ys~!> O,^e /b)Dπ7@X9|&3mN1! x5 E s k mw78? dH&f? Lga?w ~C 5 M#7 1!l  (#)N A x sw rt/xڸ6& 4 J 0qEw qs;R $WI"" #evW"ւ @d, Mg (% AU(*p fgC7 &Fs3  KV.%ie zBg,-@-I)6>0.?"!ti !L#&E\$9 ;-+ V co  o-F+r (}&I$wscKeJA8 R:B6E% wL'( 1 &%vohC^~9^ԉ+@D| T 33o  tz}L, A r;9 :  %Gx 2|kP-2bf75 !p/oWC  % &i܃N"  ` ߐ7-!C -**PU  S5 7%8Tn+}L >b[+P.fPY.A 5$%[A,bD[[t6a u$\eY Pi D x;* " )IgB jquk yx1f*H*3z& < ;VN* ѶB Me M\  5 2)]1m wXV"ZX -8 " Xw l] <Fll t܃.j.o  1:TRJ y~&: }{ 9:^ugOJCH fHN5^"Q// 0C  G Bj KkUA%NZ  ]eX[5 nZj+ )\c^_Yh5]+ _L ?Sf bob1V y^mX#\&^|=i^ UN!"H -n !`\8 |r ZXuqj!\2 fKk]"nh :> t1b"!B~xo+ 44 & MW D@PADi 0(Yql*' mm+2l؂#i !1cZV kX* ": /aM 1>)(J=(] x*9A jJXje] y\i S#U  Sw3O! #Egq { ys~!> O,^e /b)Dπ7@X9|&3mN1! x5 E s k mv97@[D*b7 CBZdT% xha Mj +FS4HqD DC9  JGU +6<3& 'y$ ϥb#G/.TWL -UQsݓp? % mwO~HD 2= a h 51&).'$B?. wѽkE<@=@,d_$U $09 Nle j2K&s (}&I$wscKeJA8 R:B6E% wL'( 1 &%vohC^~9^ԉ+@D| T 33o  tz}L, A r;9 :  %Gx 2|kP-2bf75 !p/oWC  % &i܃N"  ` ߐ7-!C -**PU  S5 7%8Tn+}L >b[+P.fPY.A 5$%[A,bD[[t6a u$\eY Pi D x;* " )IgB jquk yx1f*H*3z& < ;VN* ѶB Me M\  5 2)]1m wXV"ZX -8 " Xw l] <Fll t܃.j.o  1:TRJ y~&: }{ 9:^ugOJCH fHN5^"Q// 0C  G Bj KkUA%NZ  ]eX[5 nZj+ )\c^_Yh5]+ _L ?Sf bob1V y^mX#\&^|=i^ UN!"H -n !`\8 |r ZXuqj!\2 fKk]"nh :> t1b"!B~xo+ 44 & MW D@PADi 0(Yql*' mm+2l؂#i !1cZV kX* ": /aM 1>)(J=(] x*9A jJXje] y\i S#U  Sw3O! #Egq { ys~!> O,^e /b)Dπ7@X9|&3mN1! x5 E s k lv5@7XUvP |aWRk_: >u  2d.AaF Q :50 o OWT, # G ~LN %\ % U4!  F.v"=L )HYqv'@y8w H~ %}PMS*"8 -uf& ?PrgXL!gLҚ-6@-.Ooш W<Y1dYD$? 4C' ?}s b8D o (}&I$wscKeJA8 R:B6E% wL'( 1 &%vohC^~9^ԉ+@D| T 33o  tz}L, A r;9 :  %Gx 2|kP-2bf75 !p/oWC  % &i܃N"  ` ߐ7-!C -**PU  S5 7%8Tn+}L >b[+P.fPY.A 5$%[A,bD[[t6a u$\eY Pi D x;* " )IgB jquk yx1f*H*3z& < ;VN* ѶB Me M\  5 2)]1m wXV"ZX -8 " Xw l] <Fll t܃.j.o  1:TRJ y~&: }{ 9:^ugOJCH fHN5^"Q// 0C  G Bj KkUA%NZ  ]eX[5 nZj+ )\c^_Yh5]+ _L ?Sf bob1V y^mX#\&^|=i^ UN!"H -n !`\8 |r ZXuqj!\2 fKk]"nh :> t1b"!B~xo+ 44 & MW D@PADi 0(Yql*' mm+2l؂#i !1cZV kX* ": /aM 1>)(J=(] x*9A jJXje] y\i S#U  Sw3O! #Egq { ys~!> O,^e /b)Dπ7@X9|&3mN1! x5 E s l mx1?7hYwU ~\{m,-  N(Sb,! dPs fBV ~ ST%"+ Z;e#m}($L ?/^f \o q47 fAYTMXzHg `Sz Pil5 z/ T) D & S t 1Y 'Rt S  XH Ez#|??-i1:.X7ѣC1X4d0{\t -;U3$# L2 S!i  j1>%m (}&I$wscKeJA8 R:B6E% wL'( 1 &%vohC^~9^ԉ+@D| T 33o  tz}L, A r;9 :  %Gx 2|kP-2bf75 !p/oWC  % &i܃N"  ` ߐ7-!C -**PU  S5 7%8Tn+}L >b[+P.fPY.A 5$%[A,bD[[t6a u$\eY Pi D x;* " )IgB jquk yx1f*H*3z& < ;VN* ѶB Me M\  5 2)]1m wXV"ZX -8 " Xw l] <Fll t܃.j.o  1:TRJ y~&: }{ 9:^ugOJCH fHN5^"Q// 0C  G Bj KkUA%NZ  ]eX[5 nZj+ )\c^_Yh5]+ _L ?Sf bob1V y^mX#\&^|=i^ UN!"H -n !`\8 |r ZXuqj!\2 fKk]"nh :> t1b"!B~xo+ 44 & MW D@PADi 0(Yql*' mm+2l؂#i !1cZV kX* ": /aM 1>)(J=(] x*9A jJXje] y\i S#U  Sw3O! #Egq { ys~!> O,^e /b)Dπ7@X9|&3mN1! x5 E s k!mt;8@ TC*d: RBve] OrQ uB @/jpc} Q *H N e |0& (TV5`ޗ/X \T'W ,* T Gt k>8rS!ӱcodec2-1.2.0/raw/ve9qrp.raw000066400000000000000000066720001445607075400154320ustar00rootroot00000000000000 +1 3H#$ $//; $"3%C$ F( ,+# e +?)+3 ; !"%H"9?<-J,1G48 #!@; E3 *!"  &O#*H)* $LV. :<L>B8 4 JP #D55 6D!;E/  $BD 7 4"=8 G$D.&J% &;(E$/ 'Q0C $73 %) K6#-  / !   (N  $4 -& " &   < "A C32* !/II#B#$B"`*4+-%. A)('" )J/Yx6JA;TE3) 9 2S;>ZP=I$:%$ + 6S8=GE!.6+>&$4 $:3  V3 a(?S %1608f.&A!$*3# :31!)7&"$% '* 1'&<A;.+%0$? #[&M( G:2#(*2(B " DE3:1 'E&)! %$ ~! 0 (#  NLO<1cY "+ (1$- 4 %  8-C 6)%"+'@3#i"0( 5 =:1&(" (N>*4)+ "JH LM34:% 4AA%:Y4%4 /.D"L U (:69+ \.]&@ %:[J [H< ,x `6 ta$#%R- 8:/<9*2,#,((i51"& !    R;   ';$;L** 9Z)B# -#)* 4:.+$''/Z 3 @ Y*4# /4%1]FS ."    (#&+/'IR)?.D1B$?" " :'#. 45#+, <0& #a-!&(!  H-8+!  7 <8&((?:E#) `Q2 CP@`!/& >2  7'@. =/F0=V&V PD2N@;3A7+5%'!& c W:-  c)|slq2)3%."V<;D*387( 9 !!( +%-&& 1 2B:<iGC)e$&;!z.7nVT9(3R16'_/-I*+ $38.)(-># 4A2>O Uns RKOL. LF ? M %!  " " 1."!-/$9+/ !BU!' /)F5 Q D   4X 3A%E!G` $$-3 .+.F$#+ EI)< #6A=(>C3' # ]:9%\NP4/DX@*->GQ4 f.,w 'F 2  "-G .^&"5 1` p;7CoC5 &RY;31c/d%=dEA<,[~X&=CSS<UW=]B,#V-PiGCHsj}-~S *$a8 /KC^*h94e GJ})z2k-7 !cBRA?xS*hw)H|c,W RM;U(? =tR<4a?~J,L%AFQ&iHW~5HD1u<sxhO*cZb2^z7 ^4{ N w >bfZ$ C6mC;0jJ< G-z41I=Vlz+ h]|5Xnar3a@oRM^l JScvE~r"dFrBE_A`w&Ud\` hbOg I"zH :3Xu$>oX}|5*yArtf HUK/y~Y;9 C=[BsB)(AEG]^]PR0sI}jdU! ;!K4?Us3A9/T!~CCeLk:"p~e94JRR`>| &0$&A^?Ll8w{IUs[7`i#n{urnvSSX|Bjx$UOU ! *K A>ZS`#hM&WX'M||8edz7m/2lU%}yq>$<<4!1H#Sp~BeJxIxsU-41;Ljv\h4z_mxzB}h*mVa>\HU76U.B`vK;WB F>>2 (y-(JI^2S5I3%y>}bMw2~ !Kv(0  `c"f6aW@COL\^M^`bD A'97w1u)h$gt](COwUWKQ3P:C M'J}~(bLHg%cv$kj,1#C@HJU$ nNnamS&>02(HLkrcV5K^['j<k93LL66ww $FTdO.]GQ~qaRWb7_0#i*b:]rU? P PtIZ 5oY|mVGAwc?UQ  }!kY7 v5gG |R _ g/rR3*"Y/~@  QmgzXmC gTP7 "0_1|#-~p "et@pVIe l YPZ5QbO  Hz2Af  wJ4@t&n!GVaD&e_ ?&X {&Jl %aogK@%qU r@Y}X._c4. N W bEh"`p3QaSkK(!zhoe?3/4.P4e~ b i G a)9 jrITu? -)\`>f3/GAks_ l< ) n[J_93d,Qhhh f kRQ\N !j] $v_<^ f\ |P sT%8S`K'UuGz35 y vlxk:l;n = 'Z%"#GfF-. qz (>Y9WC[UxL< ~j%Sz{9Y"+{^k% (%Tij:!;|    d $(o A=!p N+ FBrD{{f^-$1|0b*wBG}F"8 q m*92{  j 4H2*o'AsE <,J  b*o \!Ym4b=E Z$1.xU8+G: Zq7v+J4?<X3u`~ $=.,[8 g.u> r/=^zv9W s ]*Dr\qQ4 J Pm)jsvuIIM/ښ*B& ["%%Tg"CGO=>&S< H6y"{Rl6n : NSPzNd%4*q;&C-, A weN]W g_I `sxe{P:{2T1{+ "1.I5*cs 3RHYUP}5}ED GX X] e 'OBC^$' }+Pa T /WedKV[A7 y " o b8$cI !S~ ~pyOS  , : $@=Sb S| zTcACC?,PsZ0|gZkD$M9t4$WKn`5TCdV^zntYXK3aO}P}:qej)Y!#x6XHk9jeNJ63SqY*rD3;PPdB. HZTAYvS)pr3[c`mI@X']nE[7-c21T[cy;I4; G>c2K0r QcI/^|pP6=4Hd?4_f|=wyVmhi8dF.]1,srL# 3#"pkqn [Ux.wloCh[]jo2;#M*IHis&rgogxmD wG1 .q7(ihT"V_N|WlywK ] ZUL=ka" 0EFH1s* a71.av 2'%] OUtWfotDag3Xt40\ =4_  ;$Y|4BeYM94/Jo6PG] } JhTd*!6+Bn%8 ZLj|KO' k | q'Z-kq9HFsD?.B( uxjDvY~Q!E!j|2<5p!/=2\/? U2cZTXLjy6d:VHM[cv{q9 @M:- *Z "y'b~j[ H s] M%X 2O<>s F:OGC'eWj?_F D1  ~)|L@F  yV&6 /gN6FGo G5/bV7[e}4M#GBNES01d>1j iL&b{\OQ O,d Pr -F1oUjBkj.~SDd `PO 8qAVh  R bzI K7FK= !vY UZ,.%I)QA܎Jf D!e/Y pW K @Z| hQ ! O$c B8+n1(4 d)Y@H"I+VPSz$66<? ic ipS\cc; abx = *UD-[ X}} 4-MGT@ _wR;q%BiM c   z 8o R +R?geL PP')FB Kftw") HD= dbWB5#V g9l "9/>fA.Ztj\ )6%17lLm ]  ; ~ad3%;  NR&z^.7 2 > 6R<VZq )5/ m@Pqe9.@3MA2 v BC5 2 7kMdoMW{mVF2*Xmk8'8`)C_sNLiqdf .jm ^Pb vvkS.![|Wo|$".( A   Sn1zo *K"&-<RQ  YTEsNQ K{/Ib{(F/2]# _ E\kLw6 3WKOW4Z k"x; =ud_8iB&X3{%ui1}0 YۨZe [{?|vS2{> o,<1Pv*   |n :"1? 7y &q]L).X Jnp'1" W;6 3R re 20_AssF}x=PJBp:l;(-trF`f\u! FV{z1 VRo| lJqwwu5:3f MCoPM$!_mQ30O'`>  !&Lo;[ Nb=gk S2/52B8m\wPo61P'7D!\j'iB$9X2\="=}l-cW -Bc E  P4zg7} : S>}2"X^m<]  Lm Kz=$@,-E.  F3Kr$KRuhTxf(Rv%@H%-<(15V<J6 h! afX#tS=VQ8nIBLX,SnxJt0Cw14}%%Wg=+Ork,'CR495#Rpxj }=l ]k. jAL,p$fMC$M|DRfRs9gAb@ q;"" u?uDpVC7Sg`xwlN>  ioe_Du$_).rI-?B xf6Fndtzj+Qp4]vE})\$'4D|M`<b ,2jn"C}k? Y5ftKB+v>1 FG9![e:x ?tc+4jIpY_sNMCqU"U|UHmfa0wX:(w,=  idy5=1%Gi;?b#n' SqhcpC5&x.k>f< dg2JXP<^@$l_RG5' ! 'Zvok0@km&Mnd\zlJ$,ac"\u=8[<?8+_qR1pd?AbEm80Y;Q\k5H^>-,`ao{6Y#a' pp0h"}/V73ephf{&]>W$y)jb\`*U`W_99uaay:'h (D+)-8mPj |b]*"uQ.q?p7,K:OQ L.SlY3lycMc(^K;F l8&2Bo[:=Z8tRKAoB$m{VD ealGuY ]>UY! oKL{\;%PK}'Q'/CNz?3E0O4]x 0_tN_^[b95~p'*?;@q#)  %h 9 7% b e'e~D>w1= 9=Ozd?~;bMPh_q)E+iCVKGWK$W2<U.9!i+(vGk{1%]9irEJ2tc_Hzg7*;8AY^H:/q p\VH3L&@8 d_|AHD;"z/W ! L));JF: B# hqguC~z_Y(j3C- G yrb{Xjd =( FpjEUn`= z 4PG "y@'Uj{uiQWyZ P = (bj'#M.em5~XI@U)XqtI^V-0A Bh: |i. aE5 2 r'Ld#_['cNI3N76sJM\$7W] xlLk F)xwbBvAY(+w@$2A iQjW aP M=%+ ?M='@n`h[jl}!?"S `[NL uIeD2Ito#Ci2e+_$1Kl=c  {gPElqn[.KW'@H"m|KyMjO|P|-w~Ypp1G% #e-J.rix r(9MKeDcNk78F  "4:3iTpH \# ei'B  &]mX,&$o3m_:tKc%-a |wV  D{{["  rL88$=: RzJj\.+D1f#r' nemK.;2N S  l 9g*,li# J { Sy:+/T$\QMu&:   i H-g(< !l4( i. m HV]"` PxF% wX=f`1^j aA w=0jRvX[~b,U CZVo^7WsqVk :Q)\NC%;lSRg o(4C% 30< [j)qFY- n _ (m6j M G;z=,%USh``P+5! ~ ^ iTto)?.yhBd <u 4~X;$ , } 72d]\='L*Gt N?-Vh5tv0O]?NZ%e13aWF({S6X]P.S3W Y)rd KyWz9TG@j)V5%Cn3{7|IYUF CE}x OqXOHVb/h.N3O;GU!01J1S~)~H3Ta9'Gq=!FZkQ8* ]u>c&VMzQGvB1W.1A=#"|F86+ d%Ll{96Iz,i RA-G~cZ`5TcN:;Ter/{VD`p#'GJU^S 2@}arw m?Bip$|N6a[-1 ;Cwj9w+q o  2s_u _E|+m  ]HQsbRh#J*8T ]V/Be@ Z:WQw E[ww  g:Z38NQAQrakK#E%9 . Bhm3B1.8/ jMA!6GEd8fDC&[!JSR@3'/trpq"XP![ qV O1;LXha =\ pz&?m 3 HL!Wg4:-3/ HS  P}>H?]s|g [aFuL2 V@Dn BP rjOt7FLq=}:Qz aq= EV k ?<<{nD]L'Z?#O, bn-z-'Y=M y:8  Ot S6|b /AC1 c`-)ys y\Y  m9]*jd> W  p  8 r~b9?bqd9(zq 0'}$7k$L;U?#N Yy% I j$P63a.T P mbM[9#:IHET<f+, z /j\x8 aDxXP Vk3L :'Yy9<FK;o3+|E6;]?n8 wb_ aiz swj$a^(}01R&PXw7 Bd*7l"c 3/.7ltV4etF Ea&~q&U{a/ P6 f=y*[_y"S9b+^m2| =}e@Z!r+]#|cX2 Bviv%(_ kF%}0O@Dad05zCz!8w,`Z:+\p+U~iUjp8G x@Pf}I(O,-A+/ 8I,YH:Lv _1GpL 2q  X|x+G" j/}=0Ao bmc?7n  >g y!/hR03P85ANF 0o/YQyZ3!^e TQ1 o z 09 =)_n+ k(v=-LVKl X\#L  a9: xw > >X H0 ,He0_WU{V]@zH|!\G^G%VFe{@("nI)(2{}$x.C vEO+msJ?l " 0U 2)WyqKG$= X G -#Ar ;Kd A! f1w n" 9=rTpo'fJj fMH$m 8>pwn,r>xy+q: #?L1/TWu a/csE9Gz A4b+8R F,6j4i hzb8+WyG|(mbp^m Z%gyZ(,h/$j+q6ZTaVC <{Dy R{7q ]gN7k!/rvkWLRzxT~bby%%*?-l qF0>jA$lI=YA)jh<+o|"dY%9gc._- ia6zjR`^5igH(Pi2o<*^Y;4g?K;fzO3M57MMJ>L^NGQ_g u  2Y?DK6 y  KL*M9- $K V& A !1?v  } r tP}$t 9IAO/ Oo|KZHk' +( Bb$-6 ] $  z`RbY*F1 9 ?/;mT4N   u} :[]#w n \Ysyk7E 3 -I : eD>,46-G  iIpO N l  q-b71tES eZ , ;]mXj*O>E   kwN>SDsmqWgV'n@3 nE " fE ] $tj+=Y7I _]k(G( J Y 4R)F:Gt4= #hcarjC} , ]   Tw&CFw[h/s j _ KZU+4(n Ysp5   5oC~js8H R _J7 L~g.D> ] {2'l$O E(tn  {rhMMc1'Y  wl. ;t(ICk,H ? 8 x"7H Xd D  ep)f|L+KtUX/RFg; Z5;bR/ s )+ Fq Q& dln3{ q#OZ] Kb^M? D  "r kj 5~"8\|quJ1 C4YYODM];gf t3 O /aWlXo4[-M_[=2YtBsQim^.V})*G!Dm&z=o1 (Gr4a?,-yONjLfn@ %=!&tV%|oR% +9DCt4&hs`KEkSD 4hD5z|=e@zGDMe(W 5E"U"k'Pfj/]wB)aNre}:shk*GrfJZ 7WxHvM\$Y7VaY@S:|woQVj\H}I~{hPf8XF>![[*+ go>IB85N%<&3YQFN;,VT o6OZ.K]ndfp0 U: ZuBn[ ;@oo/ tMH4DF k# xRb]9 w  BRWo>;#d*#kN1AY]D~g F] W?lx*  e=Rv,8%BA0 f}V1/|_1?mPc |XWB|d 5~d }s]Z6+k[1L:H=T fkEGfAr\XZJ #y`<*}Ky zh w \S|YGRK:]2 0J Od.SS_Y!%V" !K&)Z$5}   q gL( %D=6I Td{yf|uSk~s+h&~d" 0+% %}]| ?^f (s[4sO j@kw+#RmyzKk`}LlFQ!q)Ps >x1  2HP 7  zEJGHtx; 5& Dn9IC@yikqt>hJ -jk  (fYI o (;4 aJseEE&K<LZM o %]~'Eq  X> ;}T1+?  8H@WyBOT<0_(kD2O,K_kj U. La! v!<  E|YyFW  B ?r@/>}w 3 *_M|\ Z> '6Q b6iN#7)82s-R@ 0TnE$84 oaS^) '1r#Y&M%f=IxC *8Vm z T7$ m|VH }l%Pu `:Tys75 SK*_z P rT4 T l8E^a1l\ S ),i-1dwb;mCU `de^^cKe2" #} iR).@<J* [P b ?hg MTh) $J+ NJ / 7u"5,*^!W/e M&\%#_7^ h  | 7g_D  = Q{ 9 Uk zN_|8 Q1 P} !hG@F;Rf5%} |'k K-Gi o i4R 4;<&K  81 _Z@ ![-XbVp1R^|M#i!oN 7%_A  [29t  O; @ .t  @ f ~ lYJy:i*?TQBtz"1qaVS4X  [ g QvUO  ?.RPavZ m q G JM9o'\Y+TF(; "O Q :*C{ ;L  0Np1K`1b0FMp  WpF(]`*era3!a(A#:Z_6 {jTYCk5Cly b [  `@,1zDGKL t.' y |gY 8NcYj4640[}+~22" V( o) f c#RQL2 bF*j M lyzEHZZtlCG. 8// .?- aFQ9!! L/%{9=}.<7TB; 46MNm2)o@k|)V/H8NL,u  J~tkH$-Y;Yc.jOhh3F)S/]Se2>I\20d~a;U 1^ nxE~HKO2w@89|q6 9Gh0~1t9cC xO!|x} !Huq7"6!_`u~bxgY Ja  ?)5@:RhBf-MI=m@@qvVV7*/A-8i'y( WJdTsZ9)2L7U.@D<<BnPdt^ZCeoQ Ca0{zHb;CVPu;JMN?M3$0FpI Q'L^}iS\xC0E+S /~Pf{u7qh~_m5  5JMMQiK8/%7^( rp2cA{B8MP?!DC"o$Rn3- 0FOVQ{ sYw|&hl<k_Yb-?}\n^ `6h)\01cs,' `P1bskk-|A}Jw5e7[ fSp<0 Giw4Jk _1)RCLxBC'>lUAB 8<Dm8xk(V\d) Pl$_k( I ,p w2C -a*.4#t5Omy9D[M>V  wM JckjR(p?9o&3`&" ] ?DO|byE)>%pN_&. |IZ;$aW(Y~ m n2cO4O&W>]R@MI"dK1Bb/W6PWM9vr.[lo arE-S2c z'Z9V=)~H qEE9QL!&7VNKR uFm7j8kao=}^-%DZM_:{2ELdO0h74Jygtx1C&#2Ih LZb@GvXo&g*$WG(.2gG[D`2srKSNT7~zi5W8p1b<='nh6O_31&%}m_`/F>t#Cn7T?ulWtc_x:9@ i6J\*l>d Ep# 9%;b,o+1`$>pZTh"0l;(Pvj#jnr_Z{O1o>Fz5e|e*UU"7rB=m#x_)mO-Djo]C_Z9+sqJm$:jy;fAkuGL8s>b6{!NJ`szmD=4<7l gE!Gx.$Wtvs 7CR Uj+*B6w5z]u@~&#nw&($"Tpq&gbFd-[w%X+:4T$61pS7L-9WK+P\-Zc&0[b|_DP_Hd1;! C:XngdMCeYjePG8|Qu;8,k> $RgY+;6 &K$W5yN" ?S//b!Dp3% }2qW bG3 8uW08iT*~? Q{[4Wfwc3*.lr:pr+1cF:Et  'Ry2q-+6l!H<9 ~95};}i'\0#,L^*[$_ ) Sz /#>BIQ aIa $LX< +;4CQ'  j?fW  O{1u_2`Qii#kTyZhj$  #(\y>RpJx!E+:2CZ8t+b   t#Ho/ z<$RZ&C  op 4 u^:6j[w! _ |" <O1Vd Mz?X6!Er|\*F=22%cZ&= ZfaB[62GmY {/ACNp oALx> 3tkz, ~xpO c]|A{ /DB *iJ&[0qWv]T$>' !F/r-M@ E4.[i(Eia-KSQv'y-"`l&3x_}3z ;8& n|gE8_!C%th  o {_NwL["  >yAa >2 ;$] K| mX1h<K C s|%EO!6"xT\i}uSJOhB  2ek c7iIA{dS8'(1JI"en^4 X CA+,JXNe[[] t ;k"z *c ,:d8*h`8|yRCDDln#1-iel|Q5W7sJz G8 4Ko8^tA _DP`$T A T_XkXqL>xSp ~=087qt(5=eWeeNL~r|r8\1v Zw9_L8]2fEKsnEJ7c{eNIK1DOEOnhL&!^;u[{YWBz|2KJ1QqR'fy!{0&^iF01CC^on`cS0?13sg%(]^6,6& wuOq8wn ,B!\#t:-_:_{ZK]% 7OV =b9zNM T*s _Y<5=MM\x>0Hx4-\>iz8P yyuBb>fjGs1>R17nM7Br ){_&-6 z;tYznU MX4?^|MC8o,dWS62SZ--/O_AI W!Y$wD7~3uM]L&/.HEvd,* ~-U^'9qCJ# !w6o,KL 131%|HgqDf1wL/L PeilhbFwPC8j$$;/3 <k +A xCp+KuQHa f /b%q';v#&%fW*aM%py - x@kr4TXQq {lN {P|:9 ]nBur4mkD#8 @jDJ/y}]e~uf2H_SI> *v 3 RA)cKv[FPt2{[d iXI}: daR MsXge:*9W;5@.NK6>lD[(H+k< 0=RT!Z`i< M* w Y4rFZ`?{ZRXP ~gG.a'kB69Sd#M>6| 5k:W]Sj#fRZ;b5y|2`c@J7H)}R3?;iPNtQ8)b(,=PSZz&i$1hj?O2D:c P`"Z{D=%9rWk83uB*D.> ]+DqbLS%/h>BqpRPMoBYeOPmu 3h>n &uHNP<|QS@d3d6 f.^5>~qnL< "ZLo@Eo!rQ|81 TWT>OM?gXxw9Tr7~gIKM(dGE_f^>1pvQ`2n"p[n?l|7@{+W\xy_%N~mfVms]`{I%^qQ@7gR# x?vu4(o:>@N]\P0 JWunyT)W}MY~y{sd7n5tk m&(O+ 25qZez]Xb~gN`&j@! 8y)J:(\-E-% .ZO"m}K  cQ ud[nc~vS ,:n z S[ /B^D3w*2 ^%(Q;K j /omO z\g "3( Y]+ jK2 R~/r'B1[D e.eCzzQ[H38F87I%]6 V"E v D.*dC6:g7lL8zN|7?` ~,2-&|W"g ;Q x :\$V?k! z]j~k?.^f@&a)n3.ot.YD}l` [ L+c:2!>S#uEMbv %5W96`8QBs'NHDp:X8=?g{ r V:9H D Ow.lD6Cz(u [^ nz Df%D>!Qi8 QO; HQHb # 6 V[rqch;Jp*}648% :t1`[Z=zc^F!.KS \S;EXT^%QU7f_:7 32~p7U30jyMYA , K+l T ? y H  dgtsmi"embWza.'aHX5Q6eo/;l1)d@$ 5# jU6=+/CvN`]K`xPL9q@Id0.8&QN@c^ 3x v> |r\9 >4N.7VwFgj: y(RGy;4@lh=l*wyl#GRnS"]t6bkd^TxG4Q^[n:YM;YR7WiqnlL>82Z4QmF}. ,&4]1TQm !x:qIe~>`~I*w!Tl)~j!Fw~%22r{b|~{!0nK '# e^kxO_#cO@vxw[wJi2Kyj{Im!/3j'wT_,hX( r `c,RbwcJdVYC!:XT:zi*Z\6y.]oi6'' Z`}Ta B'~?l[Vb ]sL@puK7 L2S9PM ,(R3 J?4?y 49M7 IWr[Wh:<7xBOUlmog {)&'HkTa]o  jjRN\.=uq |_lO ~xEs&\RiG~t]P\iiC|vMJ Y 5?C .T 2?c`Olxp6BR6/:qpeqQ QWxYE MjC*Ja{0B>;JuRzNY"hTb*%gj(zEFu#(fDO O~n2Dzy Zm'U{2s }m9WH:VXZqpe@DZE3w@/IZcVS`mgMlP2?F!vyZOPQ@vd%6BRMoS~_BX~,-^GM/~9@TJ5*  t8z=,u6%LV CYi$roh!\xJK<<$!N$?_/?|tkKabk0SP4pP.saRzA >PBg f6={ t] a^, G(^ x^5Hw  \ ;M _r %f=+tt)OpI!n>Xik \WfS82>jK]J @,48eOE?TDu'3=pvZ'!aYH!S+" d-;/.]p b-LR/RxGkoQa(&H!o z9up!T  C iq& v y p =`@#9(Rk' &^):%8)xq   ZvHD y ? J_OHN+R W)B4^%d#s.BoP O   {b.m !*\?q5(bMa$.Nzv}@P{{X- ^   z;["E[BL.*^sCY ]`G9tf$lNx k ZK"^WQ|JH # z Zs unjJ f':/R\gRNV> ZID   % YoL.AVe%w3"^3PeeS`~ [ d %'~Cr501k d5' ~RY y s u0y|6\UH8".P c7`n =+vI2E5Da jZ *3hd9Q )aS xh"W5N~8V&AImPnK;" *_ w DS wXkPEX>"p|[e miDzB}d)w, k     OK=PwuZf)5iKLB)rA+uI=lhyN,m&@o 2  i v x:D"I;DB;1;!?UwwNr^\{jP>"uJ p} M8 Bu (Q_v+D[3d*gtp0PM&w 1)I{y J.pl*JOJV"_t  [y-W5hqp%mr )A`yw ' 8B+nW A'PgP\ZF4D| Pq3#m8MW=/?lkC pU17 `@T*3^ "S HCw E\#48SmSB\(n-3QckDhi)qj Z ?{C] omZm   zB_v*X Ws9oX *- )6,i%&dZg *?=/ u )KB^$M~ ;fmhZz?@\)hJy+, K6 .wS :n39zY`;2YMjy@?L|)r{<N-4B# h  ^ ]`]Lh2C $JG r;"%p) sx7hkSMDTSk>r"V^"*5PE /$ V g$x|e9^&RD)3o0<1  m rdo2ip^lpBz#} 3a'D&!! s P Hr%D# $nRRdcloxZlEJ }Rk8 /C=r ]MHuN]T *>o XM&Hgc'{ ,)/TJ]!p:$aW+[U .2sk-A}%Mp $y8Z lz=o*wF`=) `W40 -i HoBs dx)\1;~<,/vX 0b5 ;3*(1 F8}'k@4R:\2$6HwIbK t-` [: 3f aW3uT=e" lF:Yb5{z'v))G-}9$,> LTd'dn { K9"` YDOY2~u{0DEW }R,jOO d ` CmK k-? %OJPp+3e.v'G82o!VyF$8y#uJo{%! ^P#iw?>"jD 7rQIB_ai b'cf"~')bqr3G]X,~, \  % =P\ykJZe~;mPCnn]^F#'Txx08bEA0"* f7) .,F^e@a,13S"aQ3ZX ci+[P{uZ* Y U a_Kngw  !;iq!L^z"/kq"]p*p { eaSqy31 EJr  G8cP$jtA~cpkG#XWFx5@wR8 fER-3,F16%0~ e i>VS_3:l? J_Zs4+n& ]5&e7^:Qq ?ewZa}HFiHEy:Ct4&Zo]`#oKXZ{z=(3{  z1\o*PolbYufQ:YIK"&sC'+\Ne{0bBzX Vy <9%vR6><cH4 -, N[TU9 *'iz|/U"mhM#hDDU/~- Ch}y%TN ~?^&OGCKKTZ~hg4WK! "2p{ *%rM}[gov{ QS;Os@PiuZi ~!N8qR(f3Estj'XxZ}g}lGm],X:G@14'[:}SUfgRUGqaBr^{9JuC2fsr?`Cslb*QngUa5mzTg~752`R)J&m;hl2>WIx +28xH_7YGCm`xC &&)..1RL^zxP)@ ^N +E*<^[qG!xm g/(>z@dJY~G@ZJ^m;eUDpg.Zlr5}?F/] ;# q;rw  1Tvrp+ ]i}jb3(mw6tLs#& :e>_S38gCr~8Gr6IAA;||\P y5As? cnln4U<k%b<CK wA6?j^ } o KX'' yp5J52~`s \ H][/kvC3he .%h}7 z`%8+dGA-SP``Vs!9Zx9WTtK&g{q`UYU6SaNV|Am6rF.?HvbVp(agY?N`u'K9cI35~,`v\rVWnUk-^{2#Lazv6_Ex{gXQvK9#CZB"?ac2ls-N3`}< _!b<yd>lPe;+ J;Cc *d>diT" _2e:qm\!nLN/O"@1d.9gR EJ *mj(g7UEk[KNAv* yi %;3 ]&?>u T Z1vWhA ? wQK~ v g{[:x5o.zf \ T}9U_NY&40C|,"m IGh8N&@I\1C9YH G5 !>[ j 1NU 2L 3|*VJ &8 CzU d-_IIs>2u`z71 j ^)"om!],*'T ^M;0B$ W\!R7 !< 3D ky"tZ" *0jX1T4 sV&\CQJ.qb ~kU~})^\.R.* 8G Oh E q X;sh `Qhl9 )/fQc5 , B~ \ QtbQN*%b WL>b$vOTV qgP:u(k\uuUN |={]y$0Mf+j0Co- ;_ +V >LjJpzwtJ$P>]8;J:Z?<(@SL>~|*%KznqV]`Ja =5o Y}V-. ,=rE:trOC$CP0T8k/1@qvCydT]r ;$o k-o^HWj|Iat W8,i+j"dQ #kYTy|(tyu#hl+Bt{Hz0s&=/,d9E'96w%>Ibwv7D:;_npoD#ytj^I{q$@fN2&+ex;2j `$N/Bf'1I-=tgUI$0IPi(LO`#R,.@<r>6%BV; H5gb?fI>ub|gV]A#.1_"'AR fxRT4-ayf..@=~dGA( q[ao\!U4(dW5O+.|\TDbg`;cQNYYboA^{  stjE&i*T+ A6}$-GLq9CwAmPaX&:6wJ6fog#HBCl.Bg)w,Pa17ty#^lE .u:<zzrx VyB;#~6Z1(ORa{--B.Gsy!#h$p$f6dM i/M ?Azuyn >4YNE22i9z-Q;R m R~qxf0s>Po#y8=daetgn)+1\WZ0 i2cU~QWnR0Hu0)c11e!NiZjQw bA*0|<s6er2C=W%TQA  ?M+5.Nuw WJD4b%[ 1-6q!>N5b>d1 y'hLx=u:Qe4[yF M-K\jpsEG5{0]/d]KPzV^"L%\tB1. 7 &&[;}Fiv I g ZH;ES1k+VS](LL!P)x=n,j[`@|_fuq> 9F9C) t~tAqJ *pc9n(b 5P!pVo GVn P);d~\a6 ' +N}I-naJEo\<(`B)#>@m|n >C-gJohL[ UBSy?  "~f=ZZt)mg`Mm/|=EJhP=%+Pl&_9;J- = =rNAj ^ BeLJ"dTLNm )SKMG>SQkg@_4 $ $YsFg6kW^47 Zt JNg  :3:fm1{_MGm`\w3*|AV#zI(Vj*m7XR0*j\}qAU`/NvH G JPP< Ax~iU;%ND  7Eb_:8^&$STa.)eLWS-7lKq Z| 71 )C}MwI6[]q/e=.b3<qcjv"wkK0;!2;H& T ^ TS J eGLZh(YL BZ E_5ofvw&@SJx}OqN!d|:D >A*!Z\sV 26u%Qhf&`Mvy !gF%$-A xz Oiy(_i2b5_u=o E _<pj{r"n:d:El*1;_Nq]i? ^"Cw Z&5_*Y RC:/=P^jrGHdjWu oi M"Z Ng=Rr%1 FD  yhE' kz~ RaUGa 4 VHTJ, Q n zF Zv cjUJaq;|[v 'y t 6 4HbjZE' 6>cQ6f9^'IivI<3N!?^cE ; Y]$/" <5Rq2$CHZE9I.t4k?6$ng*U6>r#2m,K;I<\>\Jog6FETO`s$EF y==a]!T)cj_s--Z{et1?P@c6[(^X7^l?mx|;x#}Oo)),+2 M;VUw)X cdecy_c~tkc\NoxeW1Z;7F\l_xPYyvXFr2:I:Rz}dQ.1Y_x?q2!~D!hGSp EjidBXmRtSY*g2& u ODqI+{"+Ns9@ sXogWmN10gt=AG^*9?'rHv@qVZl(C,*okt/RMOd?&oLt7kv8l:NyH'S{.7Np!90q7-fW*#y;rZ{o*225Qk!\7MILPyy-MZ:B_*Q3Q EdD;= |QqA6FL#hwm}(Sg2a<Y 9QQ<a.c_;~D6u)&17K+>iw7Rc`t0Q?ckBV8;\Av0Oe;*+ %nTr$8 *jg15[w!@nD%(Rt Q+w]i$o~ :o@9U>QKV Sh K~22D6/>N0X 8 " iJ2 ,]q5pa,5+:="O$ 2|ySHakSLG(g'56A)B 1U!Y {t7 'p|eY:J8kw_ntr/w=MZZ.R Pp:=`Q%P2| 347#;շi d!>l]!~+6Nn2Q}(ZQ1-E y!S+1AqDGTZr)#e6+/ e `' hnHro :E8kqL27Z )lpd-W*| l OT)T6vH>"zN*Z0$ #sc< rA hC;)$ :17yX6 z ,Wd IZoO(.owZb4|J~! ^G3 q r%*2 :݋XM W f7JI|qLk?OM  #J<X:&iX$B)j.2a)uWeASm7K ->g,.l43ioY>6NQY+/]($V"5~(D ?% /TAD^OWDFV eA6%4[}BjW4[ J S E,8IE"-DZ031-VLuJ.j2 EvKJnkt}El+QZ\9o9Y6\Lu}6J =m$!GK gGb k]P/0NDaih:PUm1rSJ,uNi7 Q$o4 #Z&\iK$ jXIcwQqFdDE7(-9sly!}) z\65F-t< F>=_Rg?}Cx} %x<H!sUk)'KB4>qx<"V;*h_y=$Z BjX2Yh(`ReJ:VR,Z'zU{p1c_z &0Vy MMFdJ  ${7BTFLR6#B")M(@G i t}Q;i<3qivu I}J>=y36 C$$(gY1WUI^ X wL$~o9+[ZKV`&9EW :Z16IHtX]oKI;$lLSEd;")#auK*/ &z3l]61P>p /?C;Q\|{ & %W{Sda bWJ[bU> W>=ZY($|i> IF @l r r+.! }!B^Ph* Ly)>Ny&..uAC=Gq(@y^BK>.!|EOl E L HY(UQ/=0mFp |cASL  OzK[dHy}:LSHG(V<rq9S rq lUxpOZMG L C K8x7BD2V- \ q@Dwq|HT| &:/Y@w>hbrcP[j$CiIB#  p'bd^x1]r~nqM6^! 9gF$5 :fAtV5.h`u mmM*9 N~/L ehx`ZFI]"tNK4$c|!qY:tj`S$^_/!E9'q^2{-u{"O 1+uoSTNHBY-6z?'Xc7 5y;QrF q^UKdcu0/a9NN#j6 V 1.cqq& %^~l`]|j)|`/V\=B4 WRQsh7AhHDde.mR/JYq@`:.JT}UsFd90Tz_hA?tDH{Sx;>e(fp(00pN" , e^iCkmGgBCdlVR@8Dqxp|().1L 7K?QLC` s ;wXFPg7D* 3CSx,SeVI.;~\e)cfK(y_r3@ KnUng:NT\RXzzXop}^BA]Gut9A />dQtrFWvK{rcX]yr@}boLjOyzd?l,U W;KT3g:GY{SjwIc{_[{xfisEuGo`cB\6W?W[ZE2plXR{p"zoN} ua(Q(3+[>.|cYWs*>Ut%^iXX#G P}7v[K_NV"Gn.}S{RDC> hC0(To5Et 0So%? O> fHUs;7GXG QT3 u g>b{zP7A\M K$ AM1';]@~vTw}fx/F'4EtNW';)RdA qMq@f!1;[-JH 4A&qR}ibnz hC 3"5\KGb0dz'/N ":0F$y(Z+~<'  4Pp;1X&g`P%NY2~hS8vt =W]lTtCm'xQ@yC?]Yao>dYQapZ8E.jwC GMH' .oY U|f*YTs(JfAo{>Y4bbmp S "YNBFZFUD|[Vr.*NF%$'N.c_dz9@4Dbh|E>YJ NhxN0Q+X?luHEB<i>;h;O)](Gl;|Y58f{g#VhA2 )(Eqzbq;2I~ r)(\5Z!`5"#/@=sVxFh'x{{IHC8{uPN?=s^l^i4_`wZ6(U^p>f C %#Nblv,W%O(-YxoM-w1$r,ic rUhBrj  dk5j$lya- GS=) '%1 +h^dO:D d]NwB "KxW5:' %$AW!\Z8Q)c.9O!00)n{:IVT:;3rG~{;4/ wIk}?2w8E^w , ?HV,h4ry`LFj3g=`+5g Is4mH:>c`-<V|]M\?-* #6ydo8LbCf<p\mA6&~3|&5.bg\;,Ep<gZB?.21jz`? $PMxx32d6S{%veh,w{bGHa+KV7I!(x w26C.4~E)d> OU5'g-E 8A0ivef"h6@`U lXex-aZ9AQ+~?K)7][~y7eQAQtAh> wcjJU>JlV1 r`D(Eu# x3|N5wEM7^7l6bFIMv?jET3;OF^xkh,iN] mSCF\]3E*+4Q|:S8sazsj{( ZSi Zbk:'u kFdJb ~ &yUXomn2 .Y "03_?:5xPxx[$`i? }  9S;[{AW@w}"2T(y1}l!%Os> R$O/).T&m]Yv#TK![C-/fGpLTEw&j n  TUXu +@G|YCYk%B'V(A>/\Cu)X d6d#nfoOy @ -4#a@y}`E^ ["x<j|vh!b[]'/""2`JGvb?c64hF^s)&bG.bs V7KHZ,Jn~`w*~4 LH>m~7?,Y@3WY]zg~ Qf e-F:m8un.)j8Z$$d8EeZLc.B m9I.Qc5M&JC}o~':,RfC '&'Q:z0{Fju^8y*3~Qua1sH,~Fqnx8))cu778 p;=>d:-6xjZ?..vs s=vbn>2eaJv&6&6cW\,Bm\rj&'"{.Ko,4fyV7>aVIvH I2{$_&wjDg~in0*9 JxFeVPP9+:xRGfpwfE{C\#>Lul2PF&n<qgv BLBQ.>SD4gPl@kB|H8nT3\h\y PH.xo^Un5*e_xp.Prb'\]Y;+Q] p&o =^ Anf;K{u6iH w<'PsXUpFUE $'W-\g%R <0 2MY&\wnb0DAu],)<ZnYEy,f p l?w]~inV"~s*eh}IW],"0i:B|A5 V9QzF%.5(^5Uz1[6V8N87zoN:%9 2kww_DnjnGWtrU>2bBcmG<&:+-?0TS^SSLtmQsUlCbV'MltQD3JGScG\0Dz#xlz<F<|M~>tkP=-0;{0qvkldz C:ll~E7CM|Os)d:]`^G^g [!XQ!~(hxvGDM"VvjR,|,{ Fw lD#h.rc8iN/Qe-Ox:5<<po>K SUSWSi AW91 guNLA ]N7m`:I|J/(;%B4[F@s{>*<$^3hyZc33ZOnPaW!34A)z&i\sSbO1Me=L%pFA'yLb>'hXFNKuP,AHo]QEEf%bE\zV{["p17%7aF8lC|UGk5\`p & 4bi>KRg%/fO>'.5 sF+l~/F<%n{$=2LBE}Ijs ;i_l\F|m|Sd+"?W=zN*]kgvPE_Q@I.eThT/sYo )E++~2F  8x05_-**'/u;<tY3Ndptd|zbo,%zc9dK*g-Q !Rnq{:n_ teZ0 K3EkrN*\f=Q/d2cru;>~4p>]AO:!<e,C89o$-D4c,_3hB[t1;(R3"D,Q(BJNP%-SuCoteAyWHpS_ CFI;snJl ur%vl{YOvC%Eggc&(7D >M (pZn=v-$+RC,!.2)k-79[\uQp:3fV7\ |*LxUYKY?DqM.tAX9O.~e.htO*| w8G=-2v{U_AMPTg#`(~ byFNIOqt|Rne1>fpJ Y,2Yn^<qxK I s1AB:[gc=tf/88$ov))@4C\*6 (;CQIM/?MP 2Qz^G%u|AliSV be)2(S[+GwN@Y>=<Wzt;]duUPR-cFXG\Xq}#v.JL@~-S2l)MQs{O;7 X\=]jWEH/^l[P"?fkQD>#ojE-01y:Zvg=R]ah?0Tf.ByO -2# 9[Zi>E cw|~[uF8z5 13i~s);(\QlW%gv5*l` GhoZC B"f]U 1E]NHqq&8!>Dx4tQC- cff!ycl}zL4G,'JmfuQH1+[vu p'"Ou%;doOAla?>}uQ/ri~4|}E.i_=c~TM cSz,Z/KKX]aoM~m0F`ujQ~[0j >S%O`{.pxiz:Z{\PC#]@!+wl$Sqsrv.iX |b>EvkxN!rqm#~l'%ObR'LOtm|icYlx4=5u]`PCP 0\hn6ZLTl,i.$#`-]t?| Q[m:'5>Cyd%Vhip^FC;ND/#qTa+[Mv5kguONjQgo~`O$5(7hFTk~F:Gapc13uuC >2c*gf]\s*ky#)d uuu@NgBsng9riPYJZ))0n 7Pe|"OzGU9F]sJH&u.|Fnm(WlMwz92j[fuUGt7d2:&rV#l"o:F^y)d3Z;X%o\TBN9 T^iH7-AH UCYSCBCr?b!A2\]yQ wy1D7Oc"4mxNCP@_i_Zh  g s S] , BM@W3C*K[F9)%T$y5}$&E ? \ $:+ʩT& koc~=tlżυ Z3)4h/r ' f NlZ[TDLwM:S  +BsV4(55 uh:}c<= N qL#hУ4%2)X ;FaP 0s]^ͻ?*L #^ tF@I+xI^ .)cHVXB|u0 ,&"j 9 o0"P { G   # UK lNc׉?4'PH5B6  o#PB#g:0jX34'*FRWkt@QOIHQadK}\ 5*: 2WMڏЬ>C=[AT)s  fw U /] :" cy GguWO^>ectDN.0h}0$@z Xcsh1,8]ޫV;\Y8iB{S;J @b w: i  )@_g;BnUy' &1Q6;cp O <noc 9me8je{!0a Qz! 0T9E@_`Xt '=^(NhGjLf%a*,\*G H=`O[}g  on+M f7w; lN v%@_#/ RS1" _wGYE,L:;,  s `JfKijKvnA|& ($R hS T;3nvJar WJ2?5 Ws $ ;D QOmBE67}+Md.0O+(0Wn)U+ JS}jq3 V3e t g_$>  0 ! }%ETYr'3C u(GK  ߭  f+qw fmL2P0 dc3HOA(>~7#I$/- |xD P z'p5 Xi ( "fy,7bX +L)X4~  0kD; [ z DuJ4yN   o90 x}c9x=9:06 [ WvjSgnQJUNO.d /Ck_;E>Aj@ 4g ;pT e  W : | p.4@{fT*.A7[%D:wC5> hQn[Vh} U wX#bcWx su{[MyT  , g* Q= kSy@[,[ ;R zcL. id sD^LTVV*(]/g x n> C 1  >\Yn2t  Gi 4m b" HB0#Z VE8 H   Z {KR +'vZ \]4)a  U<M = f^m g+c5 C, HzPuaEf[1k w JoL| Sf~[&/doR5R \nk  \_\6FtT&zy[Fe&C.<e}aU*:SN\TyssqiC *F g-g ]pI}e9IF40Z_`S;mHropI-$>Gns]e}TeE^|wF Wi~.`AL ]W$tfqW?22uoYZ;a_~:; &{mC14!]/)rRehDxvn=z+n {_,.RQvl=Iho; (mNhB]|K r^M'(! E r}M@{o#kynjU 4)bdQr #4rv  6 ? J t >.jUx dZv!^i VH>Yx Oc=E+`A{j`R,vt%"\/ K6'I ) V;zU 7dz^^vV  njJ 3r{/JO='8W$%EH@SS`T" 6)l Q I Xg734L + e @Ci <T ~ _ `%$6% r N{ g S G9|  !XBvwj{5( Ff -,l@- ! sw ;h6F ;+- -6TkiU!PR+VY OpR&9 [R#B+zWti>!qQ 1>- l'8;=NݗkaAK2t)yX.   '| z7n0jcf2pk\N0;J&y3@TMiې! `qX$  `L/Wx ZAhsn>C*aHa# fT3Z;n=L#w/q *9' _At8~EehS~-V1_ݍ)?@U# HcWZKՒtb13%*>] 2d`]('sXOd 8w ~/> R=(Ac kv: $ !^+ 6 @?(FFx= !B-A 32& q  &V%+2FV78GG'/#!;D{ D!g: 60\:F( $XEw[r~ : DGDDp1n8  <%&},?C]l 8&  J]Cl`nBn.!{,W&$bXJ@ TQ8;{_SF+R  2V j P-O?mpNa p / gK'Pl\ cK.#7Wu } ht c E^.^_S[Gg4 -BF V i M(~ZigQ@R h  K  Ow yCdsKM||OkF@mV?1yI}cM95t`^|]#8QC" K*O2 E5-%` j]A  1q W Wp  3 ]! }u]'oJ7A  D:O VpRU\Xze3 , YR O h(CgmL%Xk :; ^x }L% o[! < g|[.[K+ 7ad PZ) $U, ~;A  o;aA ,I~ @ `Jo, T=Re%E d9-'3 G5 i6 = Vwz"2 2?=I -@/a)q  kSB bK{7[(pv+ zfW(D-kt " % y  Qo13H>uO   q>p _=/x 8 8\ / *) mla FyFOj5tkIF BP6w /eM z 0 u?1 Df 1(}@rhXet \7!He4. |q1_3gUw6"cRX5 )h )MLn /E ]$vQKB3 ; 30[ <0^9Z[ -LS<D n3D{ Sv!S( jO z  )2l| >>6S| }" f#&m F j H R6bMXG \Sf7a"tH J 9 ) Bhv9%AQNQE  N9 .h@>) qe^G /b; ! x  qYS|)H;U?  8 {a hPe.=,VvN] RU]G> 7.n ATy d ug Xak >,"ݰL^zx *& y vQ G 8 ~.M%UY z 6 i~]{x ?p; d^4J| +|v HW hY QA jA`{Oc- E0,|lf# f i5 m*42y \C J)"& K %@cah=A*U@[QXy9Sh +r 't^ 3+p Y %| +Z TTOk@ ] Q1 j=[yWk. ac9 +I >-K oe" S P >C  V5 l 6Q72[M  ) e I  V "l) }$  " F zYgPg u;7IrDWz6 0n3q5U167x  5 $} 7va A)c~|I /)U 31T`0J v1IB"# . 1cBk v? IvPNtE@ @~ J5=*D 4U]. pn> 12U -TCqJ5!MRPn k Y Fe \k9|d oM&q2~UDm >p M C}B( | 6cx7xC1 T | h ^ & 1d7V'x 44IZ SCd^C} _ " D 9b 5J;(Z@;8 E1S z@%;\mLI .dY4Kbv Q,[R {-J@AH.` T]X*S+W&}`z@i;7{DMx!9$o?Wtj*LEU%@nC ;TB{FNo64Q'ByjqQ-e\1H|R6c}Zg?>9ACyV_*;)a+bU"F\; YYGO{"YD/|x8p>(hYx2rS0b4Y _HV|y7b0F`7p#0]SjY`i1Ht[*IeB|d??t"((<"m9`$AB69DV;t>)"Z{V#V5&I'1<xG0J\JG vjaF/1/)-G4tI@0-4KR\dBrF>2*IE3+.55x/ad"0i? y<#a :$%X UU1aoN6W1AS.pP+PZElH9FnB<aUGlZ?AR8P*M]e+d=ffg4g.URO_}[@jAeuy GrxDgV *gS-L~{J;HBBkN~==.9H TOQ6T85K|.IS-V-_I4 O  H`%0mt\*(0TT KJ+ pj|2T9- jx>W9t@qkuFp| EtgStp(s; V|wy};0l$% |2N_ #.9 HTYH  h#*kgi`"2t 2n[ 55V= xPWe 0J-nFY8 Ro $#]' I \W-"6%pNs4 4 *pT~\IO)7uU D@6h!B; ښacڍGO!E+  BeUsn H0|s ]x tXX:9|V@4 C}& Lk DX.|!D ;k$ 6wo Tb  c }k,2  uQ#pN\Y1Qg2(.Z&y{_b`q = pBJGn ' w_?Y  CS e a5 y?*{ * Mb[/-'in<k _g} %jS a8D-"D>T6 bB;5wL%U#'+iQ](G|H|I4mpNDS)p,dH 31$')dg#odS GZQhq0 ps_'Xk:KN,1= O%+tPXpG'-1|(]K .q@c %B c6nSC 8_l?8rZ |Y6P]2+5^3',߫.G  khlZ9 N ;P4[E!h?61[k \?Y"0l;>~EGk(" NcJ 1F'}z-k cJyCOc||O@<eAU:2^X0P7@Ku ST; yQbXYtic @ c/ sC eklvp|b qSuv MCFG(h` abx 2mfd|SBEBM3EEV( s?P >91 %LJe T`O LM7 L- N77DO y $LDf;e->\.$qaGpRO   p2QAd&  L CO,4/:dqN zOM'` OX'd(1#8 @#8A iGt2Pc?XO,&;$;i ]lwtTb_x2(5  U [?SLGc &=G:Y'rGtnMe RWC]O L.3iiweP[h"dh&4JDCGH/9 nJnsfnUt* B!gL +-"do$M^rK3=44aHf}6Y@A#0;c1z^] |r qmM9Vp42bt&-L-1xJ{sIVyjP-R'F >KjH1qO _b<1I+|SM  }L1!fjZPxf:`ZK"'"qRThQU b Iqi@x W2J[tF OM D+zMMObGLV%35CD$ &r$(b. D 4#XX  }4BZ 7 hwE6[m'qY} {><h;s[TZY Ma[Wi#~%#z80P5: Z?u/jV+O. Ne|cPncE) c$N_u` "a"I i#J,C = n8 DV8s-W TEZ'cE " U\2 WCxm"5=K$k48vKWY Rp}| fvKJ e7/!'< A9IS:ZV1f_L!nGhI_F~J "%s:  qo=oV!n0F}{.u- O*N 7geQ:6#t`r^ h2K  p] 6m_<WpIps  zup>WcA1q<RFL"Em aU? S KG}%zQ# > OzOc  R\O0-mto # vs>#r  #"5dQTe{PhX)J(UKpR#i VQ"$;nq>3/Wjv9& xIMebDX  v# IU? bkcE;:i:N64/ybxU$dwSA* e N@* 89 T DfbJ\\B\kbt'H[2 |0?g*;y7[u)Y 4`'a$v Dq/FH|(F?C?7+;0,6vo8OSN " >-W):\l y*Kx4DIR[Vi00D: 3 .VBGv*oz8P( $%'GA>%#FdE67:tMxyc_n0l5 ZT"Bd=g{Vuc !X.Q/Qm8brw''sqRC` X.mM17KLuSYSa"hL!1GuMSy"W^D-pVNRp8D 7 UKwQ/eW=42}RzBs3tXLsu@'L.6}NN[7L4 9^_X iD+V OuJf;uZT "Gbs}bJ4 L]/S 6  T] p! xt kMQ"o$w/Cu1*f-y]Wz6sS";s1A_ |NR*0 Pd\"@,6p$sO ;!72; Ktm-Q6 W_#7Z :y.V]i LF\\%/Z=SmY^\afVS}x#w*fTEKceSIVEU-Z\HE/3j |rZ'fK>V2k88fazA"ux+s\2%!fFnVO92kS5dq3'Sg@ 4&uX_n `\9*4J$!Ae/x  ^!v($.Zi$czw|9W*@z*Jn2l^^\]Ny MR^Xyc>;#kPb_&yK^7RY05mO5F<i5o*  {"KcMVW-K} \K{wfxqkEB G.VjZexV K.p$*Pe )f_m\Z}[LAig2_88LmHEqOX=; ^Vg`?JdT`v1 @_I qL06FKac[&5 CayRsXc!B oTqEmbL6,l,uyi1<-tA[?R_$7D! # Tmp#jN\R<XTe6R'(B" HSx Gqb;D= }- KnD[6#RgA|sV,x/k;>@N lS@p@e% Eb2^<75@,5u4&'<(I`!h@p^isF:"Tt {%qK H/#!0x_mo#P;io+#ValmaU">5D+:MFH:5qA1nfJeF H^_ O=K%ou@'^ SYBXKoVabyZM>JGisR"a5BTqkmS 6p@(ic @9Lc,vV8@%BBs)YYA#"4 kp 5VGXFWD<wV_{W7DlQ%t**in?2sqN'20 zP+k69|C S@fOt+B_Zz/g VGojrDVH ]#?UnTJo7 s ZD 18Y2EHfC)#U$TdPAvXw?qzbN " Z M  zZAXIPXG`bW'hsb-  0 U]ZqrG3s @r8H b  <P85>-T;q`3m.LqCpPeLt|)aFZ|HaB)I*\HYX6# @):1'LN28/gw K-=jUG:NHUz.m$ \B)1x+@e%V Y# E ]Lf<G  [&A KHQ :  : <] .X X0:o$-LL{:(P'+38 ztK4 q]K i5% ~1q w Y{\m0m6Cos9rEBU$-# dI{6)h)}(`edwJ2T+ G4{}WEAK^zB>+t*-9mne P z8mK#%n("B!_' v  pP&0T!cog3;, (kh y 2$X XTH.=8<Q+&, iZCdll7@W e    ['C  1|i7AQF.#{' N2 [dznoys4^{ h  c Q WM(48Wfgx]y% 3JyG:T[utc% L:}VYgW_ Jl w3 6s5vhlTIMo_4K z:1 ?FVqP~=zSb5 E   S j1V(}yZR)T s W` Ca CP"i;>Fg2occB0 H T F8 Pj+-W^gR@p{XE:d|Ov =q W}yD`Q912;~ubao )  P d {9 $j m|O-NC{y=R 9 9M;{i$GYB kyp1b_jZ z ot iIq L -N/c,~6)  a \:[WT @"NHk]9X[38 v M ( IcE76}DVZ7FgcD2h vxEz=_1i}T\.0G(4{gz%ua, cW ?>VkS^*3lBLA } zc7>MRv,&;2o> Ccn  1soX-"\? Sn _  y #h,!." Y S| L<Epm;|p L9R2+[T  -uJDz0P`= B;ufi 1P?6/V6rxVsa ja 5W`m_F<  ` e)AamxZdh 3% __*  d%xghPFJ=RRQ!.[-ta)N C L YOH1e5{'4fzrc$X<3 r e73S/2q nm&Vgs + 9cT B*E$< 90D?{U _dA-3 *\k @-Fqe i2itD _KUCaSn{ Y\0L .  2^l%G`"# HW#be*xF vr|Ff z>KMB3U?wRs"PIz`>i] JRL q-pPI  l\j!U=|nSF1%6%X TCV:#m:P{y](_JTP fD&(|e1DmKTZ}wB|h;GT@LAYm2\GZ}Q!y~NbVpSX9Hp#R,C mZ#6j>\;T<B#,QR#X DO~u&fPXT>QC Qz"zo$ }(!mu1c zU?M gN{];]LIl}i~rRw6;-_ S&@,-dG,nlk}et%RUw[ r[ =p=*_b.p$\<* CXg,KInm: W_YXFKl&<d u<!H sY~;JJe%  0(S4f5-Y&`mc$>>kXq 22+?yG K W BKX>IF]-NQx*| . ;%OOXZY&%?~%9.;U?2 Xsm8%7<'.<:;niCw5wq )~lUxkY =~'GaVs 6O/Xmqz%9$lt0 q  ];4^ *EjnoMpV7(>h~n P J @ j=|~Emj~&SmS[nR:yy;OLW2nSu/TT{G<4u ' Q 3cK bi7Rv'Ss^hsY s 6`nba?$$l23Ie?,5[ S ^h5drC7$Co3mqHn3A]Yj$tR:+Exi ! lq Y!i \\Df/qd\:-`$O| Ry?!x// MB+P] `v yh P _mS.'1u FH*4r Ptf  cE ^_cy  _  V;W/_Qo@u:V)&yj/ [ S  ^:L9S0]^;1~27< V ^*NDY |+ ?C^5\ ,$t'Z<.o( `m K+Dm]&f uU]I:u5F eyIiRM&Y : & "oJZ~f ,s>:.la2)Pq$$9k[ `K/\1|oKFfMN:!u ' QFe<`3@R2(& %U8Cn2xwcW  W(^Vi~ /V)/q`&UjWscJ Qxu9?Mo[r4x o}\=6 9 az;$y|[s2>+345%^p_Qh#T,,O>,r5)T!{/2Ut!NJlTxd-F3Ha^W|$`&(N;|p/t Hb~?193ctWxA rx!9W,wzAX$Qh2 .ri ibEhV7&rRxW GM@'3Y-]iL{JcOh%:|"BNMfh4zv47]V-Z?3Kt9&'b<6NTymX-fjN^P]jQ^E|?,+WJ7US;$D6(\D^T%2k:g=K7\iT.a:M!TecAWo46mjE8Uai}am^2s%]|idCu%`N8q}6B=?_uMCh F."n> t?0Y ~,Sob+TgRp`we:H(bh>PgHVM{d<9I6Gc5N (dN[?*%AI7INNI? ^d$8_]F8"p:V H i] M]QloEC}W7Y^Vm#W]=F2t@iER&Xv:(} b\hy8`9xot:"Bsk(nrfkD{fG6K%]5Z$RW/8% 4[-0zL7`/AS@|_eQF2mM+q sao!Asd5vS-VG*]{C e2Jb*:KP"&|5wT !wz/EN/TJfNa:% c -CW(o4#83H;m skFSIcF$j HR* |u=.5XbV4 }50j 3gL<-%(m'LNq`xUib %Fj  +l p@`m#"VvG^C.bBpMI j{0/76k| DhMwXnG$%$]Va M3m>S-O%xo"fI*o@Q Q /xL?EA SJ7e T eG/$k]%t4\Q"6t j1r j9XH~:]s$F1.2lFG*4a `>Ns^D)c+we- !kZv#Ky- %5&Bxd ^W;o xNC{lPk_pro!z 448zXJd*5%6R{> R_N]*[ohB]"X 2&\hX`6NVMT"mL zx {ttLW}IhVbjQcvQPF ]#;Ifi[|z3P8 67 JD}  yU TEs %# & V;,pJ\XooQn+=ExD|rc?rfCjn\&yeXq2( _6^ SWo~$fHe #w SB 3D uXp-"4j$QDn;8de#>cv]" 4_oL /yi hsK9=Nc prqT^V $ bC{ p$UKFIIO;#=Gpk^Cvw` 6x$6UW `gz2?qbKPC662C&4{!.L"[u.iBHggGQb f(yAOX2n !znht(Erc Vt>-.P-+Q|)`xpubtS&r'^vs=<d{p`>FCij(|TPxb)Z)6X4xJ3T,ih}wd(,Ovna-wtL'{(.] ?=xZ4j 6M7ef4pWW$&=dW[3ILTMeeC ]J?3ov^ Cy9[_ IW o<`bc^-e h9  <} r,1 _/3/ 9}$R  +}d7VQlZ"x 099tCv=t@C{\j VG0 ]vWU-!|vOb,3=_}:)J4 u+`SUEc R ^#UiE,^,A3|cth<-"7x|  (S#hX@LQ(~H|NsHF\;K2CFt'>K*$ . o" v5xD2>W0:uI"[qh_(=Hg03It# C,5$RzZHDK$ B \BU* Hr?O xG)5;V5E4 *B6W^,bJ7w! z> dL ,g&. 'OqVb-sHHTy=/mM8n΂;^@}+_h*!K*R's5{Kguv C&NE 4Csf/ t ` f 4sc&-E/# ZW|zVM%S$w1~vh'$,R$)5#  uAqM #;:+oP%q_8Eu?UOwyz8@QRx[e|d)tM^.:.a(lF8P^OW  [ZNcZ@_ cTvg@\.c6LV$|t#-:>v>ZW$P`5 st w(ztK`J6-\Y :@KV_.^K> hJS&;Gt8 "w` H@-v [j ' jsAr%w " d|=~ m818G ?hV0C$0*q7h $+} = d_'Q)D g; z P6ig1.BpG H~_9+]n AYF (-PU l| 99G C MP7;W!k> $JZbxK^QA{C`l.3>=&@,n/K }X _ ;E, tn) p; foMgF=w. M[@S D\ XH 60GU~9"66jt n y >b#V9Jw(epL_H0YL`O[5 5$ K0 OAG e[q  W: 0St j  y +Pz]_bO:1&~r#&1 !J"|&\,`f!jg" O% 5'e*B$` 30J !OVRvmZ U  R' WI6m1"c#  d7R2W6lxz{>&2F 1%ZKyU% Ckfe{*6g0U rVV' + ?ouP Dc^(]9$K$qo% ^=vN*J5Ns 0T[,t?P t9SK`2|O,'%g{SA xg z(<ڑzw7 h!X'w?'R  ,-voa B W[NS/62Yph <% k-b+hs:5 m{g$H  a lg@(0LA Jo-IYC$~(ˉr *s c'G * 5>:j6NR<} A:! Y SAP.k;.z2Zo2 6tu(Cl- ^%R8f:!fap&0} 42 e-i$r; b6kCi"7&=%oz80߳|  `g|'Su~o}g KDU#@[a=Q6ق\=" +FJYp NS a (B pZ q #>6 aTBU_ctdtwT(6C&sl`y,}v, /F6/ M Ey spY j ]{10 bF-y>/b r(+ ,LDC v uy!2+g}NS9+V-E r k p #x0Uif:<t!FZ? e3PZw3{.uU>{JkKY fdTCT,]"CelpHZ_otfLz`4,n_ WVN:&@nza;>n+eqqQ.hMyJB~U E_wn(Xw5Q sVpePwJPSw 9{nBoEMa'9.c.1cI9HWP@c^YYOL= ^Q"JlUx&(c~JwY$o)R e( ( [|4~s  <Jll\f sry o ;m w)|$ #h  24vS7,O],p *#ZpY5 n[BhUX]Z7F/};=1RA*Ru;K9$ {j|PB5(n 33~$@y9zM<89nkw5.0)SGfOEQ'9a2  +7:L RR42#/9C0r CY: ^vON|-( 1[d(I\ 86Oe|93-~w4e0f%"ip 8 ,p vHfm%W= :/!by50\i%)~6Ndqdot-\; b S y%B}&uo_E-($ks%c#+utc A8g$[># P^1rJ]SS :3Hdk}=a Q|wm M06Nx 2}U@s?*}I^gJr7:m&QDK*9>23Z(  o\=Dx  X fLI=\xB}5+";Yh ek\_ J=J,2CP (  -5 REN] Iu: N4#d {NBtz OZ=WQ,+R^JeeWS<B*0H Y;7.D4 w'~Js~0U6AE/6-8UG ` [ a^35L_N&e Oo 42mu;n>f1Hg1q%[ }V 5 !vlPc]b]L+D95: NzN*3J;_^;~")4 l  T e 'o}*D2**g|qU y(- %o >]Y9z^vbhJbz#O={nxr1m * c S B[z 0 G79{mdnUc9)IY8gxC-nV~_3GS9P$slv0o &8Lz (c>C8+$ oYxAN-BV:_Xz- RfK4$n1oM> Vb /  X 5P42n|7 |`Gf$G/Mm _a>?\dOEy mb Eh !Xmx#H5RAw5=^}]w}2/X#jC<7U<Zze{\A45:<WPxlZV h Y+o ft 2 < Z O%8W6U#2";;yNLCkt1aR[0&1|~#b s _  H ;m?lnio!GDfv~ a#t^Fq:/{J>8LtOjy?v= P u  SfVIvtK?fJn+L~9w+j"_/V\gr im>lBQq UQ o[-}3b4W{|A ]s@XF({FvNNG{f  / HzLxK.jFc\c,'hrN r/lW] p" X  Q_KVk'BAbaC9;/CFLoyC4Y p+/1j\j:]ly}aS 8"q>677W&bm?2TY}c Y7& b]R 6 eKZEj =)|Lm &R-c!B" D+\Y ^ GJBYbv=AtUkn#d(w0K'nrwziNf. t6LBDn  b\ Pl-l7u;tsEJ !RK}bkh_p  Vm Gu__J{9qhk5"]?]wR {@oM; @;`9c3DV]X7wQ<Eb64*_^k=VNZ\ lI1$Sl&h6Z2m]KzhSbW).~.l1"zM 6RO2LyU#pkpi?MGOvfRRg+pk9z  |MInl+11j 6{WV=-bxzxn*#Gz0kg7Zox 1IOtz^f (a]6 s# $SZ\|MiA.ZJN2pOL] } Xg89W'[<eT#!f 2'A 1Y"{IER2U6c@lE@{D~I@z8F/|mp{JmdteOn)Z:#O-WBdr9xRNW8bb>+Ab^DzLclGkW_`VwN@cglPKju`1G5D+j[iwJ#4!MGOAlpT[g@femiJ%EC:z <+;[l 7r03*_v' G&  c)W^jWcCE8 O'C SrJ =s$^,C p]YCH t^'J[JCfvE|UT(< >GO <M*c>nwayy)GW_U2}OtVW&x5jU$@C] AlG#)&'@Cy(.,%*pFIVIt7iIF+PXKDV`= vY;L>Nn3f_0= w]4:_T,T]y'# ~4?]} f}ENc % g* W9002WSM7  ^Tg`)qV(kxnk V(t< jBNf:)l M V8Z&QKs $^b7 { P8 f~ Gs* Rmb~1 Zx!UiILKjM qcH_w%[*B#;?!K1`CoU {n x=Qf]bUK.f s \E(bELx 4vM_G{OP 4 & m Z?D 8@ _ *X?6K! 0Qk*R`V'H;)0I@6p$(eM<Q }oT WI*w\FHDAf J9 $Nk{vfqbq6eL_P 78.*N#>o%:L ZCF, e.su ~"}4\~q .F id2*v(w  -vHeq21 Y Z6zR c, $bajUkh`Esy%,DmT(^<"b u h<X69h90 a[L"C]3( 6.^g NnvA?$'BSKknic)}BZxWA5jBhUrIIfzyEx*HdaS a NJ*&! =/4} 3:' x?;V^>^;?. yE(*C%Sc ,zpwV  [ouj HVo@ZiRBhoySq/2XH8zyh Z WSx@:`nE"  3N:J"x ]d#eb$~x4exGmox  # KLu_c 3`Fyhev }xj{<TNG9oF*/(v?DpeV8hJqHw Z[@nV( -kTrHN6_&3INJ Rkku,7Vq+p(3 h48N:jU\,Jcr+&O  6TOQ tyVcq kYRJ`4vO4%"Oo]'o*{L@@)cYG'$z+94q_UFrTFE5 ,z\K1lnv-{Y#hc`ip@)b`#`l/x?kCYLDGLhFYIzjPX`e6""]vC.$Xv!AABaqe[ =qSOzIP $TN 7h:;[#U%?-\ADYV  zCr`=`1CcI  V!*#[Q^R3 jjHjUWB2xnJ0nEN ="M 9u*_lQ<)h!]d&>.\2f *jXRXH*Ni. '> p 0 8YEK  SV+,"U:xJhx(wBrE@KkN?P=r tB p gmtN x| +J #*ZO8SXLp]{n6rZk@J< JU~is,Og4d<;\#zrR"V%y'z!  p]$jWCC7V1C  1  vB g/TePP6MFW}? T T? X'Uo{"}jKK` }f5 rbt{,M72~Jt7($tg$^u}]u4)} =d/@:|mnE4%VV OsCL8rqOn=pKv@KrDk)oi{R>`!}V;PI~ cpI`gQv=-M-<cKP/ u!w2<>?bkO~?H7e)p  }+^ JOz(O3&-g 'JOq j>RT o]5gm0s 425^f[d |&  c$V}h' NS&X&8fa mi mi_">5i|~T<U8q%C'JTxg|RP  Kn' 64|<5M$3'd6^77mH5XL:Y^d p 8 v7)IY /W%L7/AkgKdO\Ae <nS% h`g0>hz;T #5  jb 416 :p:3qa3yp <T|j \gvxTL'{*8UBVLT[*]%  u yD,D {b[(J2yYnYM!hvb/n9caF1]<ar+ #W]e(|ju ,E(|xjuloqA !#j4u6On0~x3  qbk AfX@"8b  3RmJ[[<4<$ =3{`*,DL/fRtJ&:pt~ok3Lko21R<?jI?B|6 "U-,RTRbz<EF h7NQz#[iBu7& !~r;'jp5~tK0cN1G^*Q.HG[[:R__e/[`XLg*?L*b HX'HvE8OE>}3\D^\>yfesxR2 ?o&4XU8$<l Ny/1A7wBPz)c`k Sp+)*p\eC=W)1/ XS5pL/8@FfoDuwn@XF}I &eUh]enub4L&!{QVF)ML;}0]1%#oP&uw*Q\(OL~8e*5u>T 0$9x C_0AW@ q%h88b`?3P/gKzTx${?A.&uW=dz}T)Y5$n pWjP=C|!/!L4eZ{9TlKb v13USlJw={02e4wR@{D$:XO:;FvM.u Dx4i6P /je4-&Or *\2#vXSE{ ;q+D|v$M N4vgC(<FqhQE7c< L)O/oj'J:?M]bD,,n.-X;_=A? T\Ab;r2ZS9|~%6S\|&;02dOB 4$l@ 8s &j?|_F4n%rb)vW$\;c K O|wE$DFwN&8 0oH LKxEh<sq]341sN}oN;G 8}:T}PyZFO5#/#lnM8-N4._DKryHV+*>?Z?^o9/1h\0[F#)vyQpAv_3&z  Qgm yULH3Fy?@{"vG} == 9Z}\dU $[N&Dk5q.`5ihtCcu Kp?y'{F)z\m$KyAE/N fubR j)Gm(CVk%d:$F<+YGjZ jyj^Hd$nOYeST;  Tv/{ J|R),C1/(A R/F#9<rz};dxT'R#0 M5KTu Ttew,)3-/%?? lZMo F\50 @*Si7,KTA@p)hu m_B $!DML%oxZLI~a]<@ ccD}NCF>gsL<[p(a4|A8vHnCSh H\-+#o"$R/7 pqks}t0~wTV^CS<\LYBw^L0w3bpQ<0jY PzWH2g"Kz9_+WJ&C CmQy(!+KjVC\n_q6MJ$jD[AsGI5Qe  0PHbPlyEXMxKTDU9>xd[y `L gOP] Fh k?40w$@C cqE\wIusjz:t 8glSF"fYMABxzD a[W1a)(t5E{T H\}`%uFB KZ,XE[S;9?N_MP6E~p'*a XU QGSC) H-,x9F[&!]$8ftGM 6bltieHw{kUojN6&d Jpm2 Yg'yAVXfA"qx#IH @z8wfkW<y>Y=,.w,  ` 5Z&"X 4r`<{7]>2}|,~J0B cFxc H@# ?{yNA d9vX ZcMV "G^'HI/rF<[*z| ߧ/jY77,&&! 9d?Vd"q IL$]wBAvn ;'Zh"CaETX~pQ98I_vvdFsC jNK_^EJ:=(< 3ZRG},yRyyPigU~tl DMdo0b~Nyc.n?=C !QfGbnz^\b1rooL,.^6frkQ[ FJEs fmj,K0Uqe4p\7S?/7 C]z 6 \qC>wMg-K="9IM$zl'/U\g6 I:uZDc6;?-N=7a.W[8>^}t1f_.~: PiefWYfYu7 Ox!m8~n< 0UM 'POp|s2 xMp+QUD+eL/4F;=]'3n+I(ZolW6WU|m,<+##Ohz w gRS\98od8Hl Lekj51Hg8~p?h8~3bN'b+2>pFZ *Oy72;/bg\ ,!t^+z8$z8!rbRLY<3Z3S@ppIBe^:~w ?VL 04W AK3J2p'aXGWVG@P=w.\^ !!s] UDt"4goE3*uYt7{6 mX-+MwHvma1py\>c.C1Tr|ok3_w{Ks39<n\S2Jxb$[kTKIRvyeQ}/}NkZ-NN@`B\T"m  .47y& uWZvo{g hC ;f=$@z#gia# h.0~U b vtN}8j,JcIi E{AZG)zn5nJ) 6C[($  e`h3WSwf>  Y$Kk)8XZ;+b("i ~}m rz ai,5y |CE/GeUm~9b >w ,L9w6$B!ZFZcK_u [y(CD 1 h ucj% c*. u8{;: mz~{  _3>ThG4bqo ,UG)pPN k z c *yW}{Su}3v}! 3}p  `4a#UD< <xyEM}AV# 62`j3Re@r )U*;tR|o{; !UV 1l0B &a{I op<@,   US#iB]A3ra s=(8$ Z~ P: p15wL?|\Q !3^$dhj*\ot(R)[IP  21lY{(%Dxbw^8*%hG s< SW1-VFh{}6U{^+Z1ru;Wc^ c`3 vd[EhAI7A Ve5hi6  >i- 39:zs&L#7Q5};14/& U0 RSLQAF({#Nrv"w4 l ]$F]}FE! |[.3 P|N`rf-b\aEC@l  KiA&q(cgWXq.4uM(}'r/ d iY5Me};Z-L +s[z7Xm!x 9RTnT~O *7I5Te"N!>lIf4HP0[X8CWYa|U?Z5a,EsLH+]H0tZb{$pEM - 5 : ? \ .63y!oDMN7KA/<q="39>13y+::2Wpb %  ^*7CQPs0E1Kpqal_\P:> XcoPWz]*jF)~n8OD4s% 4 6 .3ZqVA27 s< HN@} ZaA\!0%j*2dg <*- F )bebS(K;K$gq 9=6mr\R2 t- {I},Nl1c`!5@N_aRYu3W9MWt$79@hX?D@-> 9X<5NDv   *Y&ofqO:0yKl^`OtB9X(bRjaL,(&=r|M4*HvAtxK Z l N )ir4MM!44or!Hs^kbTxxa 9FoWie%!E>|RO}, U}q3agX-Ld*RI@le zq!RL+E)a$oQP0CaSXt|c57[9CDn>u?8~=agK]Y-8Z O!@ L.SbeKD6U,1gbZD _d<w^)E<-?Ea!{_.owm+1kBQubw=P=TXH#D E,TgcGu6z C2 _j~-HSSu^,R 6_6ims$$(NIvU)3@y A9yjhW'//O"0K$ziHfEI/>XDV0J~ k8wX/ jn ]Xm1^~hUH;0Y2zR?T  J{T:?;\ a8|8~s'KP5YfL tIMP b[=W$V(@#B?c 2 JQhGw5B|MHNv7 X d P/K\ormZ!(m6kXm2ed$:D :3 Z 1 bfn f1 a3IwCK{NLIKT' Cf$:^]7 cw@y+ (t(K?] , ( T=~;})E]h`lTj l"8   s KKs Yg p4u7 ` f i. :?1 J&,M9!\U3Lqg  :L+ grC\igwvf)e ?L>JbPF3 |QJR @9|pJJ.V"q;lM:JeX> \- [ h^JW;#$;# LW.w|FnCo{J}\4W4QS d^ 4X JG  78K.6E("c&pFY?^ 6bZ=_S_8YZ"GP+_Q1e7|VK W 5 I uvMM ?oS>&j/r4VTxRX_lt'c7>+F95=z]GnfAO3}SED2Zq!pwV2>^84oH@] !<}oDyrP:N6s>oeO<I BdCQU"_oEa /6Svq@<)LTWCkL5,f Rc'U7I+[ PN *Z&\Y'Q0oHv("yw0?P[  {&OC45r ->pOnG}kL#tAka;2[kLK"*7MS^ Rpa*H I+PbBjOy`|zl*a6s.lp Bl\tf+G_(/6,hkR1?,>hBoMl?({KZVdIH[7dO~]s@$)"j~T|  /$OB uUepO)C|-YcaP=u3M&-2B]n%ZExgyH$!NQ; t |V^Q%fuq4jsRY~"kWX8!GkmQm~ j~=@,H, <Au/;B`5UNfz7Fpi BP8`%S^0R5e,x*kt`0O(v (b92~^tdx|K.B1-Ja7c7QK>vDqKZQg~I s:kh5%!TBdf=`gIEho"Jsmq/-np"1/_1Hfpok'TF>Cc-+  ?hw~gz<W ]Kp|}tS P:h<^Wj ]^T=.|soNfbKo=9?DCPd AKZPJNFJ  u@vt7 iPw~jaAP/TDv:(|A#[ ;*`u 2j0IA?\sJDs{*?5Jwp16br !y d{y4ctZEPLCElf67[f :7<6IhELJ3OGbLy D s)|Hp%-|0y)ex,:q05$LXN ;e|6J7 7j N<%e_O:dR1-"Z1l!]FxG"bLr.{e 0YyY%e[TfIrT9w[b{PeFB;rXxj@Zl rL_f?#h{$K;:W)Cc`O]su5iE/rZ,g`X] n9ZA9coY/{^) Pj XgqwrE_#YdpBX^'[OGc$og#[^b#4dJDl[-L8Z`9`?;4RjneA~W6"@Cly"EwV:3,UJmB5= ~T0.@B\%;}Y/txN{ - Ef-gg:WTZfrWFI^Dr-dX+*6,D}pK5!MzkEk8_amO3=AJHV#DccQMS}H``Zix/J,Bnb2uV3rSLe0={@Jt}hqAd]n>6 R58KDyKlkuevMTf`G{Qe%KE=htm>r>?&ESR-JY=R~wjzj3 `?b C c a Uis";Z En 6#&c3P?w6@x[ ^}~ <[3a~R m  ?f!{8q?  & , B0n|;( )O90oiACf|PBh49gL9}T[$gp6s w10%;fR~ELe{ 6fgR )8WL_i[jY z<T"=th={*R>^ ^SA0eWvrKC|0}+aOdkb_N%]tWe2fbgmDTJCPwwCp_=_(*sv'H(~Tab "Y% oh7=}"y<D K$5g`9 lN0](&Qcb3lJ@3z gz{-Ye!+ |]LplQv4KtEwZ(uL}I)L[He0Ne'>I&k*qW<g{Nr!<\Je8VG _o;Wg23%Kf@CSubfX;/v2$4vXM|SI7o(lm{[A04IF}h,sOi)6qThanE Tcy$dfZ9i>5CtZ),c4KV/&q(] 6Ppq rKKXmw:U %9Q&QcfV~`b*Ii0gC6wkx*; v%\IOs dl`s-CQ/8#X|I\\I/nuh*6Ks9cL=\^ Pd+<FuD*~)6b?7BW4PSjbBQIK; JGPblCT/ +lHz_ev80W'u&J );?vgv=XiXKs1=9V`^g|BBSGabTh.4)`3ElC "M7%13)E,(6"oj_.UL 5BB/wUo2h_$IzZ>"0t$5}uAP %a dbaSjWE]'ay6o2G4[ i5 6z0F ~wJ&)D#_*![Zc}ICk+`[q% *k3}D_N[lMH0Ds[20(T5nzYuXh*:Wh9mjt<Tyaxe8s`>jhT  MJzZ,3t jiy]wsP}q)R <bu#%YN%A~ AC8 6{$F)9]E 3=qCOntW<=njZDXkVlZ^1>%jM5J0-BBEOuJN"N~_*-l6f t*D<=V"6jBd[A'c|}5o$gxO e6|5[J R)T<D)cmX|xlh(3;:##i u/ 9R/S"}S -9:r8_fAQJ}xtAf5|P6,>pttJ2J[}9xIX"NnS~G+_QWTPM(#y2  @)%>%I-5`rMY! YuuRiuNC=a^Q5p9Hnkvny \(KZqlT<Zuyb~?I uvMR745ZSPL-6GP&N|_ o WW ({r"%y~!6f?Y,SEiR6^ =o5Ev7`!Z c].vu\5:d'7R:y?$B! "wi`~/F'8z)aFP-ou@^E@P(nSTo-H *q cpaR9rN|Ke~n)C')tdczAl(xi|Ao{y a[[ |K'&>wP`7VF `$UJ(gC'b * 8cL"|40 QwfK252x1I,HS[U_":k ;\=II#$A49#Q,v,VuYIop\~Lq@,xaL}Z Kn4Y;+;baNPBhv;BP"DM(tBbh553ho(QHcH~M0twC{/ ('sV/tlye\Y0L`faMT|fDkW-L||dzZn$u+\{,poAR&N7 @EAfO@!es+-%J\47I5*HU\ U!/DDzs; ;Y= 1Q" d9-c,jl]A{e:3CiI(|1;DX[?vcUNy0IZ^&$+We,X_w, po*{mV*4ucm\E#KlnIf*y~BW elO[R c7g)6ZGec7zx[ ,ybfO2(5@ZN`J<-`l3r9/ida,jkK7^_cZz^Ur%z@Bf9yf}(O4'1%H>c|TL]Z_ m]6e'J9z#@%vH*NOq7}nNm<dDKWO=\Tg6J8St JKWfs7 5#`ZU{J%d2yc] 6Q;| xpAn+,RxeMJ}URj:'%jB )zR H<%) 8#kC?|x=b2-+T%1tN?3{Ua&[4!N~ b}JC~xL>2D J J4x6-b;)uh Rw52q@S> `"v+Vbn>L<5UjR a5sI6haa}1giFbMeb$ '_ZX NQVU5W`3L\('J#av L>S\e+; 7L0^K M /i hl3]u.2BMg P B&Uu+^&\C+"n9^]R{|/&.`A|-z nKq*IkJb vB{.$04-ES'iFgw#mNSpa%(j~B6+]V?'>,Sv]~1}p;8*joywx+831gy3Hx'Uvb @]5Ba,l[FzdOP23kc!\m~FVDC__?5 <\e:Bj-~p1kGx_(f.B"GW`#dCyVH{_skc. zvT1@m}3|E|oZ8DbnvDH Xm}nt5[QcF>wujvtrF:m_sW'$@$as}g?58K5h_tv~[4=UXN^AJs:f}M|w=l<xt1?{iKK3<E 9 ^yG)HMPgY8*oG/`^'3_b~tx]W\h{5-7 |f(FxVj 'v_qvfb|e^Jfm''~wqbdhd\vaN`nP.rraz~?xrR|F!b%rQyc6~{Hb~1ECft8]b#&tQnmxjHPPBy8< Ce^)w+%;GM*TuVxaZ~*B+W9:U"9w@1fr+ewvU]M`aga]j}kszf2+M8 >HK.7fo.{2Yz5S>^i\-GL C8Ze@B"r,^r]rZm2Aj7c[?l &RdXA_2JGz:!tl2:(1C|KufW/9 A1M5Cn^\'w3D 18iO4qU]7z*/ ay!a"Q_uT 'x).wwgE:+%9 v<)DI-=qfu@{:\&WY{rWp=7O :yp &1?|)q|}iJ=Hmd4d]$r3j#.2^QX@bzjCImNaH  SZ] <;8,h # Q6rh/199M79\$s=/FDm |!gJt.E(u2rIN  T6c! 7 ]gw^)$n0*v 9aq$!n.f b * 6:(z 8|N#Hhlmv {v[eeJ[Yj?Xp,g I Ea,%w bA)67J>  ot x-\ynR _l Ygp-#OQION]-_ t Z' QnzsNK_~v89HRaB,!&vCk40HHXSS]me!g&:? }&`.HO UinD< * :(9.$Yh_EUucU~sDP e L~CgeLy)1nF"!d&  Kx)sGtx" *a )n )[Y SNC;ikOtB'<\, jyV#Z@EL{m+3,poPdMx}AS ~VM  w"]}W|rO 5}"!dvlz_=7m5;Gp >{raLKIT/*Mf>4eHpTt}]xbJml yT k1 H&Vp)ksGMelN4(a"eV]IxBqa$^rX&D+ 0+O )/  DLS_VJfr%&o0JubO>jwKIb&:0m^R9}cMo1cZZ#m?`l"#xnWhL*UG% 2VNG`$MLz ;1k }FD2 Y7bvF 8|=  u*t1`==EvOt] @ r Dih%CZU W][D|?F91 .C&( e@ q; [&|r"h%`>p8 h .G4mPa g-2b) Z*8 B Dk Wu+ ?h'  T4 yMj| 0H}eB$ p5b<l4 pKs] E[tt{PNu<0OIp*KED%s$B J }W#_ VE@ K VbD)2p'M<EuRIY1$+@g!#q7tLI  ^e.Caow C\gG<=MByb{ 1|-WIO:wY%w7Ep]*e eCF[M dNr1MAUk @/ FdP 8T{@J]h2E eH6rk   6,;w,gSfO9a dtB 9*K*0:ynZr BgCo_uj b 5a}NG TN65MA &tEL{G=s8:~YVP'\$$yo/ T/@`?\, \-N"ImpRe,,[Wd]\pK+ 4W5<#CywYkg@ :For`_Tlyb0 w +M Hqroi`2AG (&y,mxtR/ghJ^ "8:Tf+-aTR _a k D;3<90  "bS@7Y ofgUN$<nBjS9NU%$c}'  ]{,?(]  4!S^e-]-h'|tF"::u# 4R?o<>b [?P14    8Zj&qM({cF)HU  GB b T2jAvw h.PAk%}]rA6wGYQIF:~\5xZ ^e46 #P hJ 9nd3i_}xK>B8f~aP p90 ?&by~%%G@rYp[f  I 7 O U L j8+n&mErs9Su?$}G* Cw];0H]"X_V < U8~dN6p[o,^70F@{@M)}v!*~ah !, |x*3v  j + f Q]^taSBHy1 t`@I^\B|\6 eYnlk{*Vs@m4 RLQn" K z ,$Ma|)>ZM=5 )`BqJjM?7r(S7 ] b} Q H"P5}XW p?#,_`e<`;0RUDx& ;]& c=R%fU0U/VoFKkvczn*P6U4yo}X~{!',>sa5TN"{?1YT7PQ{x8/.FXQgK?Ngk6NSe,b8ui} y4@cL|4=9BYlRt 56/9&(.JU3Vc ?d:#'j=R}OXnuFaeC+7&Yh(i~}{Yjjx2"G]k| 3Jy@Q)_od4\Q?x3K9O2d Uvhd: < \(ODwOXi~E$i$ 8C]3`(&q-,n `kG*]P-"O ,.qORSc8Ksb&Kmh.o;&nq{L.g [J3_WB{dA?XsfRc\} %j p)S;?K6Rr;# <Rejdm)W sb}P8#3_ihqe/-:)NhRVnb?!Zm@LanLt*d36an8#iM]Jjx}V_8 p!.)w123B"qJ4H8Sq 4]XU@rM/]N!N[7F:xvMlo ofneBK-L`53G{& pB^7p5jPA}_WG~^ >S Bp%ga9&=#)5x.qiYGf-g)opoC <+=5g i`:A=C<CO>V3e+B_ }75Q^2YpE qV &UyFd:a:18<L)cCmU16}bIA:#OT/Ia9bb&Q:HH:\{ jJ'Vwz}C{VT_nU+$M+LG.n/./%f*[p`:yC[  z?bLyI n|4Kj^\}rr.:c Zu{F0Scn"`sZY|$_|gs _>xF0|^-f2 g > U r Fh o{ {HN0Ntq !*&( P}scn/m n\=ixU3\lS)kc JwU3&( k kg _-gq.7F!j1)`AW 0 I-Zga-, F  O F   GgU"6vO7'+_G`+ Ud!f1.P^N(7} bR S=HQ=k^=$#; >5w1s @O?{d9 8yS4NY?0xw8w& ET   e ]h *&v#r69oH YeaQ/h@RCs=u=] z*gF(y>5;d q I| AZM^>0bLiwLu(VW)_]W@e p>c:b}^wJh%`Uw/.FQ\!7|% [BX(O bU;^}94O/x \ny\ES/[.!@x5*Cg *Nz&FW #{^^ } Z 2#*5S#,mp|Jtb]BbB  Q0|h1ZwJ"[2m+w N#ms<+B Ak<YL(T<6MKR$mK,|% FfO5sJfUJ.I&*XU=hlf  h=o^6@vD Fa>ck}_ }e3#SPKQ|9: 2e*b[t NL/,@W`-..gmiZ3dVI  RfcZvz-.\&/(ce *#&M /J6pMvO_T_(q bwz 7bkVD}f#M&"^rj+"  r* ; IZ%da e>mVu!G xl`7pX  !h\a0s\E6r2cXK !J  P;MT]hYU~f-|B9Cap6,I3r{ < Y4n:[Z @/bk5E+-k m #E}X]7gZ,~r6z7y`q &vRq )\.z;6U&VG q 7zi}aFyi:O_j +zO~X$M1W+ C _wtZk?4}5v_xh5j0 l8 `h~ z" o?ZSOF "3<& Ja\Squ$9*6 Y:|5 s$3Ra?<DflUhh0. ox !1 |"@F A `.}Jv%q I# HC8jg~*SPU crH$C O1Q Qhh:Fd.GUn"xXR1-HB8D ^qX.m R)*t\ CrI X @l L ]?#' GetB}w` U9ohF `8aJQA#I;$f9b/~DiW& TdAeGK}C5P!3kAL;]}`k5av&A10 3J'`AuyfPd#cl! G%:"zC1 c(H,x~^(aNl/F37fdCYt#PXz;'-xj zZ?~ I,b/d/ H\lX,3(j`/,F >"nKET[ pN >dXs^;spMc6M^sF(78 0,lsO\)W8iG7 E _A tn`C]GqzGd:Ur%bt<n7G*Gzn<~LVg5F5^$pKXdY?w Y'b @N /}E01YQ"pE|-3U( m+E&)}Wk,ZRg<Ez:p-/WCM?QFyUryK  ?7]Mk^{hn.w 5U_ ^9}KMwb X1F2BQCfz#UkBkg K fwbMVvaI  SO2 | 9IxQP)E(s}a6A0@-!9Rsk?9Q8(N)XX $ Eb79!R  E}K0v }x,(KyY`tY0tE. ZR^rqM<=cR*]}3l1#wB59X|xvxuF AcglWoFw*'Lfj D^)#<4<j)FBX]:[ly  {wZ5=Fm)7eFXGA >"IcL0 >#=X<5R$'lzm;H^S.5IRSnC , `-Wi n "'`:2u \JO>W8Z3>7#S5f}s8k? J8T Lo]Z\t`H %l%9y&A;9'!l*i.ik:$tcN<r8) A%E(2 s `y6WphA["bV[`F 2b (a3P8* ?5R'&p[ XS 8OJ_\Ah&U9JITRoaDwP)o (`qwTiz[8xr8(` r0\(A9672=%36ZcJ-Zer%F<% >bmOCE <[`D `7sV9M"hn=9Kv$z+}nOPh[',s6u|%400T_b3w !" 4%iU6 34 ?7jw+:EQ 8])i/se}?gT\~X# JNX~)G\#+nM>|W Ut4B/AHe?eKh$k{r/* NA['=t"}L%96@Z yHRz b ,.fn]F.jKx W\Wn|5/ JU+bY 9 .  g]~BFv vkx6LN <sB :|".Y71-_ t-"+ Nl't74O  b*WnrCj)Pz KMf\_.t|a}mvnCgg}nLfT>p[85pju|C!8/`NZB>=oD h} KL?  iin,"8x%3/z `m  6SV%)b#{] )zhxLCBd#W mdpKSZS/dY,9M"'^o6X5.Mmv^qO2 m%>(i"sSPM 5d  !mV|;7N3'Tz 1%@7tt fdI1R_ia!_[-SA9lCm}?mY(553 BF1HQ5u:!o2s[1CTN-BFd rc]f;2T_i> B ;w>D=`&iOIwnOU#G zp5N#KWXWc Uo*z7vDKR |#Fu53Se"M#W' n 0L) pc8ycf/6} mAqq<\pf&L"F}y-F>&^ 9^x|  k)u:hSv3I0V^:ipe#;<@h H.{ MV PPuCZy+@~^A-9+aNFEaoW^L#9p  .j4D$ K}vWb6BN80 HbalnyP A~:7e%.12`*1U#3)i iOA wBQfe`>!7.vQ%)YF+Z S2]B[p"+k%]sMrTC}J[(* X"^JP,Ej9[KUP0N4cvva#;uM 7AsLGpJ. XtTc 3 V;q[q^'km@M^B0 u)~G|7_#@!>pO hm)UOloXI9I)OMF1|HJ "cezg4vq9 $C7EdNbeu\Y4xtf5\h`dXic-0!SL57,IRkRnzK,,R oLk OX/OWRIxxX_,3m&Ou2u8S$_wyih}adt.?"/ "_\1uajOY n>?Ry}W!8xkPb9d~?OQg*S':D$Rj4_] X %pfsKG0$GmV L'ZoLc8mBa:$!:H%*e " l qi+]P u | M   `~a (vqx ^2ei}+|2X:dgI)ET[1&Qt5L7 r@|N)oJa QBShO K 7,0E=)L\l45m#s YQBO1r@ XQ" a 37 Y  )( H!zx/{/UH. 3f H&=[Rln;iBz#  %v?D%wY?Z 6m4GR/|BB  jU o `{.Pi/EjvhGTRIA7]^7zGi@r=K a]| $6MSX!LbF, }5E>1; (|V_8q/ O O,|J*`YA2; 'q<%]# us { 8"T~Z'?, GLGWMJ|!t b&Qe~X#]8^q^.@] !Mt #9k  _vii|`C[Fh3F "cLi$},=cTX%2|^Ina-^1{g&MN jZ~yvM  h[Pn|aV 5! )kI11#4'e<IPY>OfY3^(0b^#a(xUqi j3 >d8Yi)KC X,Ywx_7)1#A M;0F&:5_!F TA t#aG tH^k`e8m 90<e3<#.El P1 ?0$Et)$}2ito_zq1 9A" EgcU 2"ej-(s(-j>~AmdO}-1!oN3!; N M0IG] pd bA16 2: ( e)G2z:U8G1{2{O/zm* ]X;#r W0ron2alYnJg  BW @ 3x|.v[' DCm2QJ Z)9'7 dS+ oL !&  i|`  rZO; *# Q$ +P '] a qܙW 'b w &"%lyf" = "4RKu(#a=:8Nf&#%N~ӃdX , 2j > P0 f &.x>fNO[o:J!GCM6]u 3qJYhsPrU @DzTo2 [_@} eea.kA )+$P[ uKdW7dVEEGQIySa .|! H!Y$aClO i nHIhj-Ub6f>] Z`^j0n 5"16@LO` < a6O'o["3GWbmx,bjY " (7 10K !aRrd NE O(ZKF;bF 5#}iGZxT' N b  U x'%X\SCo-U qnz V}dV6RPh,q'iH42P  / c, 2 v2u \056-ruHReZ5Lv>OYKJnq  } )V= [czm0@7fTP.Q\/qo"su%:Q"#(.Ka4  l8$ ~."I-Zt0^^l6vj-xM}1q\k8';0I57( ?G_  -5`aK/@0'&b0!mX$*xd3;*pjX:F;OZ+u6 -vt D2is6 K[Lqd[Wu,\p*!teH!Sp6m[6=J4~3f.eGe} E ee3M- D4DJ r'jue+Z!| N hty EWN-z>ve*:iJ){ b3~BGP d . )5: .z?#[pW- r ,|7fFnt  u NzZHnB =UBQB/14%MnQ$VlQUu_Li(g4 Y   8Y3F(YEbJy)|F?D{8\V!m1lwI\ z:P"P XX (pZ"h2CS&#cHay!c{9(m'Z_R,QXFtX1<HH.E&2J#!n~wD* dZ5^`A)F/+]* {0`xLk -NO6mt R*5'oJ%hJrM*W1@C85HMn7"j l C D_WiCLWxkOsb6~/ CGHWi# AP *a 6cQsBF[*VYW8G+R c&y - NhL1L i 'o 5  SjA 4h gd-qHo{JWr)dzImnH O& %$ww.= d 7S'Bf  R=2"@7<'{VYmywF,bBNXN c  ]WQQw4[gz8+xq39\_6P}+5q53 ~s0 )I g_|ktd `ME~<c}q;DI&S 45RADVa%/`Kn ~j=s-4pA i$ysz.D6Vgz6=fa ^O.0^uCp+ To`QRI=4%4z:tA9 h}mc 2,'||ls}i{?\WdYf8TDZpxpoq)!b&F8YO+2E1;+7?2h#/~$ <.*& n.|r=29/0`s{CGB% B4Y|MR&} /</8?`b9], l@72zk88)U CrMO.18:Cw [8 6M%" )E:6 jU9C k :-r+BHY]$PiA;O_n>.[)! .V?%GJ _  |+;VbB|,vB !#_J,G4BCE -hu .! '"rxW]l}, 4bXl=g'CqITQo"N`T ] G@>=0[?!-SeI-3rm"z oVthE ,]&TPA6!zb+ 2*I/g t:&p#S h  ?3 Ukn43nO9Nt.Q O&S <)O.rܽnZ,% {l!s-E;6  VjG}k ]&-k:4#z-_iaHvF!2.Eՠ?**[b)0 n JCLx3V~= p~{xPdNKR/+xI,1BqҀq=aY(Zh p) OJbd q 1^w 1OE@  #.xP??Z_ia1r'&Rd\!A*n xLM h[7F>n^MR r]VN81/#d^GJ93ViXk!b h?Ootk(U}w~M|Eco(9'py<1VD9`NVD'_1 {k! uP KSAR $6Ar]6Ry!4ki{== )QtoeOnjx}CV\xfDxjp [O?ycT$GE{U},Ce+u9rH(m<\j e-W`|8'CXgg {l88BQ~K(m?/|A BXeE_8L<?oh ZeK4TOy%|q})vvZU12!cl(!MuDhA>C *3?n .#dQ ^OP$_E m? C[.\LS* chApY UkV9TJ* .G2 s^{E|rs]:|F%zp+ VIF|;/:a *S&T3/>sAAGI; -V3_AHuGsvQV2$$8k<*iL]N;/V$x i3P 35ks[n,b\PZ7_6E0<</ s&jnp>**p@FO:i %)I -:\S*a\hmjV =l-)  -H,}k)nB;WAi3wlr4o@[!/e'L |\Gxp}>{@&Ba[^ 7vd 8Z^^3(|OO?t^<UMm PmR q Q  ~`U|tk! 44M5X%4 K{*@:% !< _ mNg.rs!FN nMX\ <<#D1@W2N! Kw }e / ~ 5+T79( j  J{2[5'hgQ`KwpBP]+b   qRsI 6 y #g% )SS hxt<~JO-8]K@}'^ST">w(nJEX  e  {K@&=#4HHbnG `;xw_3t (v~_"e=Dl5DZHmzfsN;_<DiRL-eN!5Z= 'ZV  q);$ n'HxVJ~~Fee\/bz&] W{om^q0tVvNj<{Qz%DKp0PQSQoD<_|6a f6 a  %*i;J;aWvq+qIID~xT ouZ#cvel ;=  z n v)eNZ!^S%[UCH>,y#8*q;) g*<-kDdv2 N.{lu ] 2\6gzdG:U?P?H=1E]@SPdB\/FV$b`ooN S;k;I<8:[^x(\>JP>:Sf->O J<  JD$ R nJ= u  s ~ 6  _(7"O :Z$@ 5he0 ggP}r.Im=QFx& >L!Z$z_  (x4k '(6~]{U d.u }   yx zI#c&A-AEL1X&ZL (!x+0J M[gh"8 5}w .5o + Gyd%(m~;K IO*.#W#i(@O  k e DNn) &i m r2V5"X{)vWOE/j@ ]$GM / Zj U@ 6C%ft%5z;EL!l/AcU?15_7"u `\C &/%;Zj> YB k 7dY8c5~'~YAc w7{X,]M[3+z d T MpD mi3=[f7_<Ks)h|zR"%CvGZ]q VpX*~[#3ey?]#v9F+ ^ 3 >)M8NC x5|UJ^\@>4Y9dmG0G|<OiQrnp0eh%Fck.s f BKz]&;w'[; KH63elIWTx}[&:u*q' NDK ~i} 1a [  :glX?n <X8,ho!6Q?y NVF[Q_k^Z.''c\<.2w{9BG+ z&0=6aX(3yh# >t0gi\$ 6`_YG'SV(T >Q mh:xux4XG ! (4`s Mbw:D@}ZB~Z!XpVSa^|Bfn J=t1GYiH r0P;Rhu(*dB3&=bw&#|4lt^2[!1'\# '4gwVpmqV7;|F]@ V 42>/ 4V*!f#wj\Bg1Fp-9B\{U$Uz\IG bcw7VsVfv,AJ7RFVk>9n|sY; >\\B, Ek#uN,&FY)\}Qps:Mh8]-mi#M\w%cih xh,Br/a NmgL|QmVWb{.``q9uZ#4\5v=^Dt&GQ;cS([GYi<oo3%XK$=' ,8|fP0y?p]APr5?kT7Aj`3rVQP aau.Rsh,oY g t <#dVxk^ `y~ V<RaoG"MW{N2`p~,s\m6$?+8OYPBRY76A' dBkwc,HSsdH6wd(,;H NuYBqYP rco3l lMJCN YH */_G'WDmi kK=e(;cs$4 &S?mU(l5msC p{Q#L l&i&P?\<a/oNs0C ]EA:%N5S}~1G\op+B8p\J-`GS2~#AL&{sU1a]({*GUj_fjX zhK6p|@$xG2G}O\Duj  L%:ZX. 'dS76$ xlVy-uPO4]{5r@]L L7|MdFy a%y'tiwQJp ?KzSg}`8d-3>XGB|PP0 F2(a@pG+i\" 4A+PHPM669d0"DO^68lu)*Smu1NClD2}`0mV@$ ova7*~  hW"$${&![-q( CLM g  U M0p: ,y/AUW}|18[OVp",5QHqEcYMX9  ) zeu#v ! n t H6oKY h:`Jn4i_iZV,}i"2T, )H8"  ;b$\ yRoc`cIu,e%g .3O g"g*9p 6WmU p  )vzD[) ATN0v q rr?00%+'(]+uN&!o (S98B;9.q p/ [jg6meMkl2-L}+K@DuRp%`+KV4U*o&b$;t_c$g};?DrDZY!;q.ZI.7)f)=hCCKP(ze]mn`xdX@*JcX:&&}s5T &zSt5{FU"u$K_l=X<PbN:}N.1o_hMH, %$V=-W`WZFn]/@'11I:K^.h5fP<NP 5&RUtSB>}oG5@}YI_[HG|[3^ZJ1i0fL+/o('j7zW eZBd{MNLa^X=s+]D>E -zjU"|-<2@Mg+,=m:vjQ_|&(}|B`hsWKIUbK>(%n=,,Nd&U]" J}|VhN5`] \Z. Za7liN$*SSQC& 9KoCeau5O<*0S<oBrBBO#}Na/ts>DhT41vB"c*T zE.p f]`ki.3h3NHf-G/tZEn]17`*up+y|qr&P,R$ o{%i R h$+n 0dI*QGR)@.{# 63n+q8 Q,G`u .+;8D  t7- ~*fdd!.)c}LP.m9Sg<->Yssgat05g[+ys [+(a?WzW!$\nruUetm mJ,dE}mcV]O ?+9*8spS C "!A H  KB {k# , {SkZ {~MSy >Z\2y|0v\hI1I2GY6; J&>ރdߴrזQ_+dQs:);xcS&/y e 9,Q  l%5W^VD6~;z(˝F9<E&YF `gC?m| 8 tPu\!/W@ 8 V^" ~`~u@ 8`dB8 Z 5Q+)4NH! `Y78 9 FsrxGf*3X/A; @jTq`hc) *oO' xE U}'.N V "jD `\/(Y,{  VOd bU|`&Olu}xbzWUl6z-ں s+ oovi D u > :'o*  Mm~tf+`< >W[[8N %&>4w'*Lhݳ d+HmI~ 1mr zR I ^Qoyl*: qa?/x;_Ab(:V;21d5 4"! ~v Z:V wXI5 I ?_iC @} G&7&IQ du3C} jl^-.o;3nN, p  ^b2  YTZ,R C 8'17 klidk0JYyz27 *r)a<9&nN 8 dpmp62bhH[~p~Y'o"G @ sB? 8w+J1Vz5 p T0k`Gz?_Tw3~?6K$ qM/j~$@H&%7p  44"RE{{+e1jHcT"Vb*Gmu7'{~N6;znG?p&C!$&bT)X2 uVN S,Vy2jl  BLy|&_*I,"z1 GFmp+l("mZnw /u}< OE%IF.)OY- BEn)EXo Br ]$q(/ e&| 3W`j``+ @Wh|"%:^*yu3oX3? yP&(1y<*YOqd DEJ*GV[2B%%Bj^'<u }-{lq.kZW =0Lf%)!8`@. s? U;_lv< j +Nb&  1e4G!' H+F'Bd# }D / }P3 Ak6syv= X !At2l)c.H > C~,?\  d]V yKYu* ~$3 Kk*5J1][m\FJ*WyU 7V1Y[,#1T `V=S4M !zT8KDNV%F\=DNx?*AnLD4RL;AN` ]6 > *hGm`i8Y-5=GgN!HE2jQmT 1d ^ ZfoSr7%`_u32 0DW S1n9A2$3F: BaKKQ  7!2ToUfnel?_^8_L61.L2"uv<,kGg,7! PkIQ   Y> , Z>.|BkP) :* v]cP[,8rA]KT%21A| h`"6/U2'^|(ij~ gQ E2q eb0N3WOd/mJ`U?+_T XZ}~vE H   /E!(tR 6ej _# 4{ .e`WCCw2BKf Y0 o q <u!RO"gz1PYI#h#T8gqA;eO`/Cgo<_9{# ] iOFvP]d ?uj*y]#*p{Ob(<|G<}([7`<=![1j7iB 6 H\ [V ;Q|4wS!|QP@1RC: | 5>wvFZA%#K.Ets]f  C5  ~ S2iM)6B/' I-/n-Vj5 4&OvpE~=l~  cJ l\onL[kqzt|NVy<hK.Jp`fXDQ.2s4$(2* t x C 1I0~ tc5a%nga3/$B0a+oJYZL'NKZ0;me E  C T0 "}f:v.gc390p|I0A}V/`vT-#=nq&{Z+ q1V! 04mNMxz/3iEnh Q 7 \  .0Q:?1Qc7D|`?vsriWN HTlr[ ZWZH3Tcn n }yYG;h ZcYL=j@Q4[vkCN); V`"%{N>~g C| p >:;fFp(~eKR 2U|~J7t7;"7I =e<-"@^&  cM 5L *L>3~'WC>z68"akyk/OsX(SEXts!*z}y<5^.Eo oa=5J<P32KSre1i%7:D3FJ{W`'!r~MX fA"4b 1 Y*s<]'F2}gb5Br<`.v+"6U&%m[P?pvr@[:Q5,t5_e71sCIH6Ww+Jo[ ]Wb-.a[:O>}uh ) ?}xgIu5yzHAq.$xWxCj%]: qv?% cHj0Zt,[)](^Ft.AYOl.a9`}dI;` J% q$#>d^z?Fy j=?}1NuZJZ<wQO[.A=kLD7=QXM~iK^ [!}~|*%^v$>,NB x,t  o5nQ[0jY+|X?_y)[kg U\Mo}QVPdpOnI~ +U@ +_G,S(@^;s^s]M6XoS}?;45pwgqFVC8Ra |L uf8=%B+E2avn_>SxVqChs>bUC zQW: gSM d%`s$%y}QK]>"YhoW~".^j[Dk Y.$o(' k71F gYche2|iNI7g%5B39;,i||tbkH\ &#R -xS 3@d Q3.; 7a:E5os,T):%eGrSM_d#K;~-m:X8{9%N]'#_Y'RlJ0X hO-V8}3-7> Qg].(G^a#FUSsUF/R{ P+<> 5,X6a%T 1j640aLcn`!]DrWYB|~$)1HAFK2c $0@Y ?J7]'r&WG2f&Jm:~z@vb}xsCr3O'~8tZ]9fIAZ:;uG064%Vm2M`!|Q\7N"l+!98m>eq9(YHWFh(I$Yw`Tf1ul'vY\Z;J{R.~4=-vQP T&}8~*5"`LXt 0b(3o>W{|+gN[f~QqM(~0 [ZoO s-~hnrWvdAat|$ xG7j?A3lhXq7H]9J,F4M-15"H] ^~c"*lTi /[Z6{t M u\ Gh4r}X6[YC]a}gL !KNBm{VjOp4anF  ` U\ytMtD^6G@ esgM#^W9f}Wka\.zD_h { K \  s'{I^W)>RF/]L1=?3g9y LUpV,']XMi\Y1x E#@;k KZ ]J'W;5mO Sf#GJQq6jGL eiL<x}+S F%Z(4 D; )bQ{ 6 F\JDCMA(<  s 5f:m\Bw\l % l;!OG9.b 6+GWj@t66F q B4+I MrV5'o E=  !   YIDD _ WSBN%$biSwVILc|r"$Se)BvxCx:|EB~{' B!~i#| " 3) ^_]8Z69~`>`%!5"s@VM2NugTJ~A1bBw B^vy H\8.T`4|] A{Bc=7nw-c^p&F"|(~b}Yu*w:xAJK q{=gwpD3/{Zv~J4{_nfNb`u]x0@Wg;S{_l_miX8l63,)$" I<,/ #0VtpnxXYACQZn72",CG49*zOB$v>&<K4UsV]x'Y<)H`\5}_`Hh T ' u; a.!w.rV6:O&qPYhY B tH\Ss 1`Qc@>QKS+chC`hp@YmUO P%LP\_qc+%, ['u}yckT1   6Pq,Bf_6R551T 2*H pq_i2hQpxnr Gk Mga)'mt/@7&KX\75V,X8Y3c}cZN$Zz%gAg < k Sbp`tj$8o2kgi{O#ss"LkH*B^$u<nDtC;0aC-sWl c '3#}Vn6'I,^)$nKDfe:<iiUaI|;*m0qC \vk "1Sr1 hk9qd,} U87R^|U fZ\\^ :,]x@'<c<3ZKgm!rM *@C, @=v:/?ae n|* .RF|<%4 3=  `N< -VnxANF71t28I~Z_*  `$ N=oq!l8?> Zn;+~}"5 7Eb2g|U \ b"+E  0 o&%q,xNDMVD ,?3A>Yv]q u  36yDi Zl 2VG k-i  GqZd|iR] +e|  @]UHZ-Pt=Z);Zv}}JK@nez5'<`)oP\gPtD l`^PH ,CZ|U<7D-2v*3ZKK<=<n!N1UEHH;mG@!y'Znc0%2OUuBV^8)mMS|P }8yHatEy^|0QTS|,DenTQ}2zku;o63' rgd>mMQ;?'}M}A,+kSzG(L\9&it1TrcOk/HA)T]HjH4[3 IN\lZ)% % fwL  g!c#OY bo}MP= kyY5t}r^rs2hh]Z=!w)X{{ K!}&fSW0Q"i/%-Z!hw,s#\NsPL7{^I!^ w@jYLr(`g(qr.K.$i{}kV:SR ]`w`\& D5 / = f _._ x Q f )=M Y" * R(j>o:!o*WG.X!%*Gl(B,]2Q~ O y-2v43 ; cUeKPo3=fPZ(W[!^& zfCHc{!4 ?7LJH W6>~! fwu B "l&aKTqAws x%} Gs <n.=#Ub 3 y}1_lhE{$hk`$3 h& FdZe-K?;! . -:4]y@'&sTa8sG8;>E8.7 Zn@T3IJ[ ! 95H2]\m k%  (-9}F.y*MB4`Ooqq~UUTIXNBg\{Yn`m)z UCbzH{e_BI+V [5E9NUxlj  +koW|n  ~4X)EJ`u:(F3|9I9hAXOCO e]Dx) P%m2A2I6 I` !:1 caUR$p|mtZv %GM+ [a I15 `L )>-;< SdoG) Af$ v %[V_gZdoFo TH JDs J)P ]  w$(7:N 6.  p * c+2= "`f7 K8:CVRoZ@5 (F.zt 5>{6@fU8Bcz P?* +v &9xYXI O>LON;^:H E>Hd ? Q+q 1~E,NJN&rS j ! f.*-I j s*YcUf $ 8YJvF 5O* C-^` V5OBxY  [ F7Dtzv_-hlQiC! %I~4)*7j Eۆ&|2"_] P,,gd 7.*Q)))/ DZZ Ue B g)5 2 |w -) BZ UtXcP 1A)&l ; L 1 $ GZt] {,%V zX- lm_q H w{adth ) w |:  X %"y t^G 0& n~{<n rZk ,7 [~DnF$j `hw-ax0Q e r * $Y<9~=%C 7ufM &mq l:t7Uc8  z $o q2ApM D4P+ay|tt"iIiktR? ,j ]73'#.%1 ;g{ MZ$j${?@TtS&8^Zur_MQG|e@=F g} s { b>~UPMj}h{u`ETImpAaJ:0x2"yd({o(*%4 $ O%<k!}EV+ls@99$v GX-7qU7VK@ j,!)3   & zUh A1 m'@N>r*mdP6XMUaLeKU ?U3$7a"BO"3^9 ( v I $fe:|~04)(w)OGQj/e^-\.,&V =5Qj>~>\12(F&8q, c \.  H [Lg R2S8 4f\!Y'J'e}Hu`fM[g;D  \ Wrll v@Qy U6< (HU1N41 ar2')G_1 @= $T$*p^jG>sy tߛ 0p|^f% d"#pB=$$ cvbv!6t$|GC&:]DE+)vՐui  gr)Z FhHpvj,j$+ Uww+WvU8eI+QriU%eP98k<0u Z1 } mq|$K w v@9aZ@ J 'R~2?+7|\*jDCn[8zm2 65f5+,H; ! 'HXa+\N 4xk. s aos.BiDm:oXQuId2:2kj1fJgDO,Ps$dA?*ܑ_ m[&" O hR,%T U N^&8:e6>01$z<\0U KARNNxFO:x#,t-24D  $ tT7;0gx z&92 <~&P/L^c7wG@#{.}(rt0 ?_++' oW/JU|B+2PFeSfO:g4n|^n8aC1`f*K%aZ 5?rNSvCa7(D}G23DYFH= 6?OKpVOZequ<qI^|}nu;C {pa|klYuk^,@!MMD(%C2k*!Sg)Wg(epY:S; I:zjo\ -}ux=OwI3'>4GA L6mQ}N ^&8(8L-S?vODq`nxb~J-Mbg2n|_\,}T#]Ly%-^/]B&Gn]Tk&;3.c#Rv_,CoA>(,<kyY5d G hjue&i7t(0>Mu<I0:mNk T\LFc NC/sU>"J:~AtX#xx I)g(YAGU+`s-DR93RX6N]o_k=h}q3#m5pmHEAY1b=1"[c!nfDOF ~,j>&lQ|piS"Oyye@qJ4h8gk4%i1On-$<bO){*M!TZIcI,o\u1?+ }iG|eh]=fsKM Yf<b#TS[*ZN?pOV-thPD ;(7R=#H2wau<g'<n5Y#B1Rw<k<c{`'t(3;3A8PzAC}5G6:!@S53 _2(-`nza7jB_rR{O5WVH(&)qS2PBLhz%"&%c=%VoeJ^34EpN!PK 7}L>'S>.pV5<GeM |sBp*i(rSy6NFI.0S6;lr5IdSY}ZR{P.E"6L7UXB>mMh"==3|RHdsD"S`DGIr ,CSicx0 ,'cbmL./TTf%]6tBc3_bi3%Bh,oI=XRm a,h`XEUKC&V$;8#SZs>3bLT'4]0{8xh9Jc cX\OuArfi{]"S-GM ;xlh5Ca<H5$/l8F,c6:0~7$"g5 zZ"s5 )CM#nh/VB n;4;Dw9>min4efa?>[ $ NL !XOiCc6P_;&#od*tZ7CE qQE &u|K7 YC[,BTn4g a|fB&~sDo#`,Ypv^QYRG5ew+m_YrxZQ{(oi-;rK,%!ito bxWyI~w1~Di!x0LK 6(Y@yvLefj0]@dw:.>N$i,gA(Kr{&-a3yG.>w4)^ 4IC:2nK&WqdDXjq05[$!U\fQ T6%"&uo y`Ex;(w]Wt6YPjB7yu_,^6U56W%({(E6ua aZx*7Q;Xcqp"CCE./*A|ra=\mwbr"K=)CUt>yiA#-`[)%6 ,u'*U LCmD7Le6oB}8<{Xrfz{PCY+>!Nwu3 `@T Y` DAjNS}w9#D$@?#P%hIvpt<tf^n%AH.13N);o_ 9 ewmgQb#eC.sKOVCq]zfa6~.lt#*%>K^]W:*B@|i!NX\li`{YpnS(DCO=;! f .6hiKcrLp->Yna=(&@(N0@;tylmR."XwB$q78Sq%{jF_^OSv|S@k|j{>RzvHNf-=? Aw.a^$ZV!UUypkP%TWj_><T/is iaj 7N/Fmru$%#\m2`XFyY Y8?pDc1."Wr6Ls|CDg Ka?[dEyHBJC9ln;#^*93NyA| X@c5 xn:[6N >@/ie,5 M  ij]=p3a%}80,=]q1&~&@r$\z@n:)XM j Tjbfix <^qn'-e +, f l" Il W76febD>=6M &` dI_"|s'}W m)u   aY( j c-V zM0E*xO<5VMbKd|@-i8TB|a5,jEuG+8u ' %n^La> O CvOPJ(WP_g8Bs:S Tf(uXnzI=Ve !!^ As0 k>e}S#6YZ]^q+0Up3Z . ]/0RixvKeH 7SKNe n ; = yoEE=2GH  Q#4?~uKsiPw.3% j8ZCoV MA7x`/Q7t|FVd 7a S{806;Hv1L  :7NC@-}S x e;E#<.!2/eE t^ FiZ =+)[   cY+p ($z _ }6Uk8(}`b<<O N onE=TaJ\_=pc7M)' 5^ 9K;6E j3tT)z[g7b S|_@ e ='E4v b/0E/svE5MZ)JW 0!#0 R X '-J2l&H0 B;PcrRzU Z7 9==eaK#&h45|vD' rv /ND(@ !q4~)ne`{gSwQtb y g1jp/&huCa]=3m?07 7 U("~ JJeJNm`%9gU7 (F?n.+]@ ~]4Eb_\)  ^le 6R  %W]}6V)U3DnI dIFq 7 -g#+a;Vf /{M&>)=u n 1 Y71pN+QL N9"9=< 1 aN NlH:<-6(1m xvl~ f K2 tUTJ [m &p#K~_iOR}.D 9yg   s V pyp[ -y4 >{q vlqVo=-}3\N\M\o1K0'R: l p    H{~OjTW#M Ksvv`dWp5Kr .Ebmc6?z) X/N4E"7YuVP8 sU _8|WzfvQL=E Ey%X;;W=J)0i%n K5& QaTG"_ QXS",k|d={ T@ g.T [ eJn2LwnD{|Ft}tZL[qymrHa+L'u}Tkf u+C!%@>dN\0CN _/_QRY P!1e8 JSoX;Pt%]$Mr+ q!}zDizNhHHD!ZL[= "rbC`pl2}V@goE(*7agvO*!$-'$ :.g_ yEXCyA;5 A>xM}b+^S]:ac 7 'Kje==&Z~O?K+ta$TF:8:Lz} CN D ZB1QMCnAP kwh9QLWm-@<[[OX5IeX  XZKWcKNtJNCmM_ ~ 4Ei p{P,k QWY5R"MbK:  I:/  j sQh5D@nG+4xr!wi7)2H<*fnCjHQ0?3z[<03 / " [GL"=ac0TMW=c$uqUxFDH|~*,7 ~!TO_Eq&LLNim [Up5Wj;R$87 k:\vId"vxa-<^|Hd^e'spS8?=P5\S-Y )f_Z\ @ ~ V;)&Esv#gTi ,%#Q[Y[$)' hx-<{2B{tb q RP-_[<iN :bD>?kz)3BQ>Fm2^:!{R7n$^^Exqy."D78} SQz(hu=t =2o[-:"RSUE=X=#I8aGo  6ye: xHQr}w> <i1Ro +/a'}}*A[g0c-Mqtzo}:? 2ajfZA%>@)  |K""D] N Vfz$o^M@4[;iIY0 te"6(|#!Ea%e?DO v }4$-f_K_a )[YbtoYt%kC#~~ @3Trw/kTWQ?'b1ZOe$ll*k T bOt"0(D79Cr6n/9cqfFW=%@Sdu Tx[Fh3MxhVGu{-52 p Eb-yKnr"d2?YK7|^C2/=} |wKF {kZi=LoGQ25I01y8Igk$\kw71g9Z%4joj+O $qjA*x44g?mNDGI+2n[ $+Q=8!e.(0(\s5}R Y/g'CW\_: F=Ya4-&nueG<9FLs;&ePF.Zh&B0}So a0^IzuC5eT&38}&i"&bl+Jb/~).Eu['8Uxa^g\Io)xlp`B9,d# Rv8jy )D| 3)XX_Adw9C9d6X o 1 ro$QqEK`V1 @(3lIl;Q(Ng;V}wC|?j3yFbO"7#X?F_RJe"rGt3h&YuH ;s_mua3a&j\/\!QoSg@)I# r }-6MY4w=]5$t$"iVf m]HYgio}Q.7JA7? 1 ExXB4ba.B7o|>R;ah|)^r94e{q3L5#)93x =/&{{[taC|'l / 8R)kdaJ oj4 MQnu *bVZ O95UA/D KH~|}  ^Ij ^Ycz=|-LerB6 >T_B9sEja4>[4#A\>(>7Z5fjiQ_ 4  4 >C*e.4_[,BH_d5\U^t{T_i!O7Hf<1rUJyei{n`gP/.(H1XR T38 ]Z2u^:1rsfJ>d:a}k]G5[VRp7VQ`[e"| Xlrv"["4Vzs)[m37n*[)UJ*{c9S]{L-+J:P#9!%'Iy&q Bzx hUdqZU}w}Q "&;`y1 E5zD Vq^vcJ~[=*G*"R>jMLK1ThQ+#cD#dyJMlk;Y 7:04bYBmZs1B(/L]6bsWTel9~m^ko6h)fdk-o;D?$f$Et5$H- ov9}R>gd[|4%Tdf9Y6YqTk<Z kK&tmD{edT|vXi,0%C ' . "Y)kaj^Gbext#Ft  x _uI/i]/B2 ` KRpOe[ lWQN!r7# ; $"xP  l'{[ (j0*^n"XP{MOq?W|%y/S>%-F 9֪]2vW HoEzr&[ =}YX@SRF W _bd,P(!K B7%tO_uN>Iq+H!#rNb ^ W `Om vn 9 +hn*;'pDxU\x@&9efkUc*A6%V7l%r*7%^F)SU+r&L!N ECfY& z~P tp$ Vtf] cJV+&.H"' lq  fjCF;I*mx&`D -Cv2 S0'zZ=*2B-vtp"O @ `L~0c (9k._ .:FuW4d, aAZd>s-Et[ fCoxU 6 vxM?!i-@5yPP.v  [)YN7k,q "&QdI=ea'CD[R  hM) )8K A @j=onA K>9vO% 1;Hw}qu12N_muD-#Ezl^{\-qffaFW1q H 9v  b q/8 TtU)/?nNwFX585ut3 LByFCO | a Y  %HiJBusRuZ,oc_4>AUSHCQ[OFivt , h  5 /\ Ye3h8q4r^:@i[6V.CRh-)y q>SoY6z; ]kV#0 :r03.uS,xk}]mQ5!I|iZ>\sL) %,57K7aI1(2)A4Hr^] ab**zl d"ydzt=D H:O)`Vl!<^M_$nWJ}|t`$6W(!Y}10H" 3Z OQ& Hco[}aZiZ{ Rkk$h.}KeR\#7h R mp C&m} Dpmq*h69)*.fTV,2$W|M/8wz@q'(`f]+=n|4Nt |LY`@+uretE?x_&aTa[c~JfTj^ lQV{R&_G@ S b  Skv~7@^ xdlCp^v_tx!= Y |M%WLio Vq  l&cPI|?L('AV aI 2c JH) $O`WW?C!? S%0YA  /`V(TCuQD4lNW RUgh7g""k*m&h[ c^$<1=I9FO |$^K! xdvW!1f]63-[վ}dc(ceT.&D"FFs߫ ;{2b5'%E,4?D@*kP!H [JRf>UAx Y;)̬C~Q>K b 9j: F +v?i5;a0DG E:V hHp}s?`B~ 99'(Qga/ (%"[,M^P] oz|E7m) A+ LXz < 9W c=Ep+ l- X=HuemRa;uNz.]4B|d%KUz^|*<Zhx/3q4|O\q2WB-\E:PV|~`ecB7LJ@(G\t[]&~ }cmH//|t)O9^a#0;Dl "R-d6# 8o'g BM.w}_?4_u.;#u; kgG}o|qYix.MPsH](4qyg1:-v(2hr8y.^&` >,) x f;66kB].Kwvb8lmnzM-7)j,S,=ECg!Kx l. " R 8&/f/xr|j* "c5Ji_Dv<q*</sh?-2k X p B V j af'r+VH5O7ippnH)93O#&ct1Xv<2X Yk 0$;  ~ sILA}Oq=f=ua:h%MKjkK(B41|x ? d& g2Z3P:.Vu` /Y]yC:!4+BXQd!S0vL1Kn3(Ld1+Z m C D@1 -J)zMfbYy883[@(zPDoJgA\eN=z+Cz];q  ofykbib%$[AN&AygI )ywg)Ex.:X 6&n3m)Q%3"S X6E4gv$fn  $XsCdK Gt'2|n#o > x THU Un=:1K=l"Ym:& _++ R*EjM :7o1 /x^Prc&M=xGX^d]yt0 3 2TDJW&&]-t{ O v ]]tT$:9bW5 yC_GUdp|->ViwJ;rvt0 2bI SI I|ol|!Z,u#f'rY6dl|Gz;ncabb b}<vv 2()v(\QBI~zLZ7xr^BO`t7fiD#U@A[o7 F&@R:< At & {4 {vUk7UvG Jn+e1 P$tP>D Nat Nx :qwl?pAmw aHhl6XaR<('-d_u  iK \  L^\-;B-dDSM6<z(VY] y*+(3c),/d ;Q>z,=0rqSywefm`zGrh(&T '_P\ ]'WRz{ /nK6 } >fk-i18 )G UwI, lL GGd[\ A }  ?]X%$') c CUMa;b5_!R q?QNI=<0m ##vN<'" KZ !~8H^\dp_ u9H++I0OEYv=GK1f*|c5A7y0?KGcJBuQl!'@+/c >Ua&e >E(8^@Gsen9JhF2ffO^K(8"K;LW!(/{Iz!F].v;^r XH8z[%'hU`W$2`4 "|p+ n8 v0I.JWW7^ U_K % ` 0^ m n5[aPy>byc8[ m-}HfLhWN/S]8$9:K$sVv,1dm]R~Lu0}o&,jsIt"1Bqh8t"kgB\n?_h<Hr.MWv-hms'gv=<*kH18aJuM7E8%io KeT+ *`" +nN UkThT>%VAf9H(tro'%|q- K  j8" @ # xxh(Jm +-*+>IzZ E$>t74Ob -/*L cl  &/&){,E xvsl9 &jI  H/' F&nf6 ^ jDh  ^[jZW.*fu|:n %F^Ipgeo_zV`3  } \K6 <]MP R0s z 3R&7T|9 h|!- o [ C'22 h .t %FbkVK $ ;S:@Vou` W'qQ<R E@qmC'*N[\ ,Hw`WEW 7 Z:LF<V l-NQYr[nqJ{ f* = IZ3gFsr@U/ % 42  lQ|&fXPg~`umD ).jup?f Gq /G +LS4>Rrx8PU ew?#_dp0% yR7^XCfY9T vr9]_Mn kSS7U0INKi Q~n5& ZA[ ` A7>7D)co^M^jfT)rrvC pk,x d. ]dYIubUa S s ZB \WbFhd>otqb 8v.8 / p a ]MJ;1 `` 3.h 7zDl!<Y A]{  ~1ExY! m; FRR&dV20 c}$0T&YGPm0Bl2=PhmG}Fb6LT pjtG  HM0#o.6zr<j3M_6sT1s9E_**g3 r UBH"o!m+:E)7o0B>"0p]Z2CWZS7[2\  @IaFt k &\N +R)^RfI{ JcK WbrTue( tQ1^D?.CklR +h-94Xv,{@dIZ_#'0@l7E^(k#6 aic Ue]Eo2 = &e|WPwQv_Yv*MPdqISC!P-LzNc >/ g R/lo+H3~pJ5~&>2YF:Or4] ZqvWUzS\;OY8v*  7:%*gw[q .g@]?: r*8zi0"d jHp Y  O}lg6;kICK8 Jq[%d4LIrGx??|0AA`SF&}z~hLoPBT!7scHrQ(hpJFE2ewl *i.IX_?iaX)hCNc~`P8p{{ 47v[9.lEHfL_`{U_th$1W3WUR0ngtPxNX!ag\- $4s[ =/+@MfE"|QFp5kdh#KSV> _D-lv$9{1FJ-? *) vB.#rmiKVBX% |%d wE~VwpWQy1_J$7!E_4 m]zheZB9N"c . TL=.czkmW]c)3ih:yq\[9"0(uR+[oGRD#h Fo~"0-IUrK0Um&8A|6F6l)vF'_!42WX!Riq[0zqWoL'SrYnOoGNh9#)I1NIZu[ s21 qe XeTn p> Y8a9Q.+ En_O 3 }nR9 bV 1l/,w)od)~f *Td;&6zO aa 0K|B\9B)za33<=;AV qX  t :%$~Or_L{JUH#(`ehWk[!Z3 EL5o(' ayQbzN.y-kW|E*_v]C7FNw, z@JY1-28:;A%)_=qSR/{9`|KC_E$^Z9'B2#' T  q))YWy9\SNi\W?ZlF:XE2lKRP 1 .:9B U ;.d+ e!l4abz:MW.{*[ZB{M-W;=2%n U. :$) _=D/ Mr n&1<jaNOC^ir??O`w!$%bL 5/\EW%x+& 8r$SxdSd[ JXQY|#`F#p78 i<QTM=!eZ/2_(%H[ Pk BE O9 T5M740*>6qJPk8 P(#%ICo4 &28uZ$R1~`|"| 6 o41pBf% } %Q}`7k)g~B' S u5Wp7'(|q 7"tHg |PH )2k/s =iGMr.ALR5h;D]Rjc:X1,{w<^-|9XO [t@ X )`v% }SDuTTz2"<6G /0>e6 tR8mKgAG3E_P L0 -)Y ^ "v %1o\kfL^#as3Wk?o(wo 2,%7) \P n2-& "Y/<li<z{=G.73|UjWaYnPbc0~!`~Cg$<cb*h4[zJ  \:zx- w%}byXm"yx;g"e oSf* A  =b?Gw D=  BWmoAFV t6/1)C:@RHZ\y0.1`.[mNa2x <z f;*P**1&e>K]~{&JXTm\zGnl@N [ e";YV,}}B~GMF?=qYe3|ft.dDe!f+hNz{&KSD"q? 80{*SBN$["hXZH8~ HIyWYFwMe\0PXd `7/bNeEQP7+[e .pG<Q)Y&nj &!#2|-7MB+Vj4 KQMCUjj_9 PN0lJ PR4+B^Qa 0GLgw&EmU .4%{(xu yi>@eu\ ]`;"N ?W -8 g 5 XRD =CiHs : $H]vrLfp}k&#jH[ qaO |0% @^ gwg< 1 /NYym AlnJ(^rdm YyR=16'.՚ ] =/N4_d6 m \k w*ij,!R$rjcwNR0HA[~ k wxI  <jf"%s5@ =vvyb ~"y|,1SqEu[z@TW;N{lBE2 o]!kW{k14xo 1cl+5[c= s)S=|&$[lDg=&~IA|zss57*d i؝3  Kz1* ] +6}P !L}C}JVjtVPq^lVP oxE' k?U Tc - 2g84pW\N<1_MxGf!Y3h! ' L[!}1/m$k@ h EfՁ H,+ l= +dq%hj y/z4QB7F &"jB\d@#ؘ0/{J Jl7[ J V:1wwDmfGP,o+dEF_X/ n2HM\"@iPW3SU {=aMU  U&w_v*%z%S  Ni!iq9 T%0F  1`A2)| x V\wg;UV )S4QX{GD}[Is-3k;!,V}[e9}n[ &T6 R Z{T6[x  <4: /3O~c :.uI>eYUa(kG3M2 XHJnO=U $n_,@"0R7h\ :sD>J)#qq  Oy5 $"{e75V6te @<l3 2uwrP|R@b-!)S`oW\%_%bI,  lB[/_~?RV(KVplxJRCt]&|S}A/__Q[AKE-hKvUHh$; dZ1)_IZ?D`KDO`p uZWA$zS/|u|C]Qg Fqh=.k"[{)s7v8& &]!N WW < xF* \1 l c_Da^u5%F[@/V5L&'m*/Q^:4 nk"x.ji n.yXK?"},<s-}z,ON_sTy,-4K~waU Vn'fcbsU(o']I7gjM &5| u5y6/.6}9 ).>>*{S=; Z*[h'&lI cv(cP ? e*vXGV7~ C i kN>PiK] ?(Kj}^8/0oq{]buMkE3d{Z"_@=Tp*"1 !qktBCB\{_$kl%   /!EP>}[0gZB)}'  kFf@5xoW r*/Z3 okF4r{v3M()L4%1,-0;v ,/ H\'T3|ooX+k7'Cklv {-  N@h$P\^CkS,5*Zk5?2 E{s_c[AQ\tI_`Q85oDKQk  y %qw8 N/yMCT V)pYB ebH -dcF+T!*ny%&`>Y8<:^MleK D BTY >l@i$wy Y(N5b[gm y(Z5pgibPY:QpB_= Q ' zg[ }5hoxDT =s:l~9r ?,$V6V /QWT(N:l2XfT n  [uh0#wC5Zi|zOjUQgyNHv[W@\H &  Z Z Y !#|:jt 9 EOh_Ohx~EE4q|lVME,p b   #(WT5_YLeNG{f#GkO'@TXDjNCj2a|{u]MQbTCIu   c - @16rcv.@c0ACEESTgV`~s;]*,T2P Z D $ 6=<{w!<]8[8Kw-]lF&Na]ic\3&oxkD=%OEI ~b{(Se[w`6S6 D7  ']_tjDI o\~oOMU9N[uMY4O@&qlEmi!>4] r]1Cq{',zd:I/Vl&81m:N#"84enKGCG+^0iAhUOgCHF@ toT 4,J8!2'SMY u|29S>bG ByR9n1N,ZV/9.6,l!x$I~c5H9 'NHh9 pd/8FL7_j ks^QMS+_.aOIV7^UEq:nv>C0X&nQ1>7] d,o? P3}fd_GNhQ|,=J+ 8>ZQbC;KzNO :X !BI-K a +ggoE!TqI p4BPv*je 0 Z4*66bB Tn:<K\Ub+8i dpr:z\ahC6$l6V~,  Q 2S<eGO> 8Rhh U } =@g$p}wxe/L'  stl Fe lQy:Cx cPjmv 6  ". h7H]+B 8_k0@V|2 -!  - ,zH`Nj]_! 61@QH }-^rG leaA|+:p}"* _PA|"aa Bl,R*dI Gs&!7&>! fo~'=O|ek $&c ! !3C< Cm8}$H.=,w?qAcv 7 :[>k|Al57#.=#{ & m?=y RRj6= .xYbq ~O+|#d52'Vr/(Kz $mgTvg TX)\ ;2a}P,dgJ|H*`YD*zgcjk6+   ]TzO, zo.3 k*G$<* "P;OjK-Y!.  <_2>0} &1,(X#.XA~dARaB"*3  y|yl\[ :a[\~T$C' { =#A>anq?+|#wg )  '-727J4MMl X KG(AW,8 T k=O=G)z|/~k` ^>0mvL:>K% X[[7h x^0_:%~417W@>:I] f9h")A!x>_Vq9+Dq) O H=d Oi)gc>U %:YN%q% t6^wQ!dw@2U\|HLR '~\ s Y@ D3d%wY!Cg3G5GWf>ax )q'K3C}c_1T`+ O2 #1 c_/,oF z|!p.}".MH cY :oA  )r]$ Y. !wK)\:. #qb0*Fo=gV, d/H||\r3jaqx .  $|{bM\ MSD-2]PM[zN/ |Ye'] 6we'NzKo4a bK\K@ox{HF8BEgcX)`?"A`wg)h] Q"3mOtInFpD D9,R jX5,5V@! `a&eB5AqN 8mFZSf$Ka ZJvxC@M ;Cdk{E,"82_+f}=ZQhx2+|^7\qcmPTkDaG5!)e{o \GBAO(ZQ,hEiq#HzThlttP Y   M `p5j=F(lw/ixZ;n[ R"BwtvN@3kx*Z#  dV[iGL: Me n#IV  F-OO `voVX$,)7 $vUftS*si5o=8* % (  .*=w:Z_XM./nx! t4Ok6lQI Yc{DTkPy Ja RV Ll ] <8 M~>1DxWS e6f0"i} Y 2X'4JlMm% ):^ ) H3II ^+p/vna0(I)B<4  f8 =\ k>ekgbg>i F !Sut }y@/Cq?l=g c =a- ) <xP<8e?h(LxJ{Cv( Jy>t"qq2 f`o z $&1J i"P Rn!,g l**O~L | E 34+=d}awS$/&go-fz@M HP n 9 Y:$O@K{9g s/ ZA(6u TU~v>M4R`21Bo1N,R{|J.1 51'CD%/r; kJ{O : .Iic&o{cF,.,=. ia|#q2T v\W3U`Ba T's*ydN,~5$\{ J q}%^3 qvwaI\36/ "GDSk&%sxZ 4]|. %q! ?t"b&2=ZC # v>6Pk2d,7;+5<l `L0k8|MAcl<b ,L|3Ugl[%k6PS,\&%?m;FNnGHd90tX N[Ewk;YUml@rv&o4} Am9*H I.T?NNvYDSiPYi0!kaF`vGsGp~EIi\R&2,_ZTs`B_S[dp8hiP3NEh S w\r=}A+;t"DYHJ(<#UZM,lS=mE}O[u# cWrJ*>^,=`g -e KN`-GR// B`q[ pK?IK=r UK #FF}H Y `)S}Mcow*gZ Rqn"}p/3  !r,`C>@V1A}E;4oDa8Y(e.dX0B4 5vo|5{j\VlZ3|Pu#.@c.]Ze%Q5{0kK5i= uj37b4I0,ShrB6?Pr|_69H@LY5ub]<.MDunEoUA^HbwJu&%Te MWpj3N~{` 6e zIT;HUR~c& {v*GFo p8U}eU6Jtw2l;(p I E +'rfSn 2` F(xs&\!?\^QwS+E&.)&hv5 PQ9MdmKa1?05._sDc M<+ >#=F O1O@ K\R dudi ^q;fBNTa$)}BJyZH92= 4vn|>-n]o)/B^\_|[ /lNj# D42]6j=G^]xP:d'N$H'c6H%( 'L}u`GwELd1k1gnV}+8lJWD8*&I;^Ev,TC o3=/1g1RgL@P%hrx@N#[]cmIZj&Yhod]2:W{ Eo\y.oj;49M{B' UX' 84=NdC7kCw4x c?4VNf`UThUuLQJ ..XU`4Kb5^[c[-{T!DE`#V<+[aMF7(ykb% GVO/QU9[(IgE_%S;*#; FDOzcj;Z f3 T+mN(|s zN:Ja|E:W Hc1!l^a=P8<73xO`-8@,}?w+q4u!lT~9\ AA0iJ[j{M&zOIt_^2q2 XWge0|o54lx q." @Y:0T`1RO!rQ4M\{%|@U^,oQpTRZB!?ZP|hr hD}0 M?p6r77#&H*IB=}A,~:ja^ P@An'"(m+:Nn^j2T!tL9%Ipc? EpH-45\1W6mcyS )'h6tfD1k &}[/pe~( mwpy; +\bRduE15B/H Nh [ V=YgG>&E|;X6{(P!>EI*w޷˿  # Wb0y bPy~~H l@u6<f @ rN=b=R=Gmy`+ c!A3K] Ox/0-J $1+^$vOY;(` g3U;~̍uj R - )v'3$Cr=e 2x 5*y8O  aC&PJ1dHaZm_3AY<T t#@O.A<Ҩ Q[b &`h 0o]}j#I B!=86.?`*;!Ba6EH(ے9N {*/sإs(3(X2vFYf6Gv YBmw-Ef~tQZH?aDd!ZTf&GѺG p ' "DgD G[l 9:v nyJEzNi!5%wY!S㼋(>4 7*P,$[xh:`oS{  E0En%DP 3cI3 SŦw X "k zh/ *'wx_ >#xe:IbK$F. 6% dŀt{ 'g1Ib )z t4(^iaR7gњʮfaV] ܫ܊ݰ  e] v F 0;=#-nHnH"qAcL {Zs f**6 u0!>; } 2{yI?t zIUV8TYClqϡ V a x 9 ]:Zw - S  f L<_#i aoMHE ;M9p2!zR@1xt T, u*Pw;@|vbcyX>Y U[, Y;HX>E?M>qx%Ng<NB!\JbB/XcB?_c9hW!@N7mcOJaL{,O.K(s]%iWA?AB63$vC|>j8Wg '1e#-f/K\*'pL]3 S'd<kM"tMr W`C5<?^*Y#D_ZZID%tdD-^!.U<A; }20gEseTTQfV1 lc)ytG=}KU@QJ  '1:.`7sogGF  uxE _6<pBR\6|x%dPC|s a Y8k2U B3e8 1Ag@ ^ !p0BZomx;O/C['y7Y B MAuX`-T t5Y49a4 WQ/w  U  pc}|,'_iD+Gj<&   7;;+>He8=pSi$ZQr3{]/+ cM0.&}tdHz ,kU XY13V>y<aqROtrWI0jz|y N7QG 8OF{*lg'&x7@0w`0{vAr1Q#X W1AcL q-$,*qVL` J|A j7%bn@g~9 iwD h *x<8s>Ryq<Z&0oLivyv+|*FuaxL A^rdgKa0G%#K ,n?o(2bn:b$?bh g: F&+dV4)"vH`{ISV5ov0} 9:/llM ?p &|Db%gjI D)ci-,W h>(g6Bed]9/G^e:|I }dLR*#(Q 4.O!/iEW12y/U#+L)HsY:RmXe!4S6Tk[0.PH b:o9C3Pqtf`(]zTEnb'uUxA 4*@*m.b pI8{6b!T[M}X ""F]`/_SSUw0NG~tJ<2=|"5U03.zukH2G+*4p,o )$<~3l$-=DJH'K "haqvh@6to y"= wgNr[-1`Vl>{5nq~Re/H>1 +L(4WRR{`x9  KUm4.(*edg1MKD(0b( QYe5. %  r OnV } }zl[2gWp2^i>aY(F``ecL]o)}HH&v9OK6 bwLsI1Pro- pM.MQ*]KO|yxG|$Q,a3;=C & E#e/6 Dc`%Bv):pkYIK 1\/-M{*YJU fFf5}&,kxplj%CZ$r1w#v> K-lelRU3gX2FWw.HTwS(ZK>PJ0aU0hq{Jps0scM>[D 1+US;*%1#<?i&,}e_ ,-!z'yV#t21k%qxP ID L<& n Y^2k) Jz{\on$[i\" Y3.huEd *:{y"= 1Fs1!|Ia\>5&& JU Lu`B\-s8+Ch%z NW(_Wxb)1X IX e;{EO[k4g;m<&]B4acihIG$ em+8n?# I-+#h&D.*,/$":4L{DXcuygo4|l|O.&{ $o*gEH.P!3jzB?a9AAdJIs:^#|  e-eg*B"#dBB ]+QI&sfanc ][B\NG9?r49h @3 E]W> @B(G r"=kz0 lf]DTtCuQiF8+)-  SG+^T-Ha0Tmw&_zb8xQ$l(AH/YY1[\Kw,:x8`lVV=I rnwu?lF 1um,Yd[tMCE$CAo>;^=Xq= veq tV\yr J hk"R" l--t1X*@+ :q U*&p}p)iee3j 4_ B(?|&N"~`\AU9uOgq@p3Cwiv$Q0K3 ^wN!Oo qck[bF#Y:R$lH5Ow!/PF+RLEBNmZ@KG,-X< qQ$VF.(je{ VDey"tLobIbgLLOe;Vj~f<wp[3W*(ixN4%AVgukjnT6+_[bwM+fMZ UPH{U)M+SW6)W-Tu +G*U[3^*HW |=}o&e>VWZt3X}tZJ.7sfpZyl1QA{0d$vvX:*cF}^rg)}99+xE? =La[{-(I^XCtX2_LU,~4nR~4EYf?-ejR?42( b=%eGNvsLcFostNVZbb<\?Yng%:-Uw7H[+kh_! lM}XGiGn#jq{RqZurd=#.6!:Z}MiS#zUgL3`EJ:OpnsL-" ^ IQiTbk2rg4hs2|G?bGXTv'=| $%z@fu{PxvLIps@fK U>|F'g4a8`oM*^{i.ZCiq{mhug>xoimswJ~Fl%FSb!U  uzcMiN;WPUd!NsvCKJ8YW[xBYja)A3Vs-H58xf 8 ;Yjnn[[!k1jF%xhW F2-"5 ,r]SynnZ[?OcK7&Si{`Phg|pFnh5PJ(RftnZt~R~3pk:F>96*71!eit)rOZ=RlT Z3tRfMG#6LDVFyL?~SRhj6'+:. UsiMNqc7` n )9<a)!{G-r(sUonaCEUvAVDSTwnubs8x,j6[/sDyQPs>d^aNKx.|Pn_{s-#.eoMoX2]LgyaU/#f'"X}aMsiL n+E2d y{bcw: EEIqn4aDfNjm@X,YxgksAC^YBk52pRFSgi4X^Ix\pyx&X.VQ^D'&V9D`$IP_30:>t,l!Q #@g,_ D4h%v#JD:<;@zL8?Qt'sVr7c(}WT.fTe.e("M~y\K{s^&,&+gt\# fa-Go e"V5l7/\_yihir=fgV "OI1ye6}EBb3Syn{?Ux6;J&3Sub&' ^?$T\z6Blk/3: |\jsl4@ -8+2A8)'/|/uztDLjqJ pCmw[SfaV@`tv:-sZrFxT =}-g4t?a.e~`7v"H ep(Je/'5D]|'>::^LA vJo2 h[0@~D1'Y_wEPvi"K]gIH:|20fP\WGA~Rmnk[&AxB,LN]?]&R|am(xh# 7 V 161 j|3p*T(": z][<]mI6s6Aq~910039$Um;zTi "8cb\LQd?Q]DQ* kCm /$m`}Fn$5<E4@`z )1Y( qMl\ [ xQw7 [;y[[m8 3XmoX20)QkP/+BfN-1 yM5r y9%+5! U4xpL`*4C|`{>d\ 5qN^C  B(eQm9UYy>E-z1lb?1YzyziIsv'l+ 7^/9iP)}&8j`7/yGeBF`W?9yz)iy!#WJ-A#W+lO (L3ub88t{HR]Pp,@Lk%Q<& Y@0?Doh:5,2tvYzHzv\6-mI`\uVb53|&Mj*l"A?.#9$ VD`$,m .~f# KBYJ3&.,Pd;vpXoJ6RlOENiJm0\>.Bdr`B| :_a97=%8l!+39?FF EB5~GoHKx4Ji!(4@sH??Rp769<^Pnk =`)?F0f1G-<q}%BWLFCpfH\NfCnLO9]/^uHLeq[\%[)8q]{SP+Cb|}f[W_lPz 7>PVCXH7Q#XAKg;TPC#}y!Lna~`yLV/ja}2G]5`I #c!}f#n/ mfve^wVcol'g'jXqYor}cP>;|z7JIv0::Ge33.gvTdLa^n&{=:xC5;j!h%oVS$?( UxLSWWC[Xt%7NY S apEm0~w<}Dz)EJ@2ir)+W36rZD e K\OF>%Zq}7, z:0)G- $fh:*e.p&^1It' mj?4;0W\1(ffO"IFLUcQa. $~H%1f[mD nqpZGgdqYRZBUkx&!uSbvB**u P N?651nLidnPh$>:S;z_{3,,r wt#ocZh\.Ud QTD:-niQ}DQJZ*r>F{psmJupj8LuK@&8 KvH8u'pn* .H!6+eCh0fbI*H!P:l(G,&qS7%_uqeb 1NnEeGs& !oW3ScO HhKuYkk+nSGYr?3hX]{c%h@iM5K6=;P<@Nxy?9iQo_.Lf/P }"$N EbK6)~J{:v\h}iMz%jkwnZZj5JI:@{Q.?fY'(k'4mASQC;dk^Ihzq#2=KAh\U Xx\N62umheY]Zg:(8[\(Tc)g33F\R;4v.BU.xO2's7m6^Ze_H2S6 ll|b%v^ l$`cZr 7fhZ ~Ub;b =rjkD<, C nL` 6L4+;s$u37a)uXZU Z=*&Eu*O(8I $ Ewv['KtC XQg34O  be<Drjq8<2K+(!_pC .tChS7E@ 0 pSc(2 m 6hF *2mtY*T:-4Hl>.)HK^-F2"t 2 |JFC9 Z  ePx[l |*XEGLQWz#M R"K|+_ ;^  A. :xX7g~an\\ .O[ VBD)A5Pqv\K&jaFd>% ;om?:  Y h#JS0[9|.7 I|?0LU{B]Rdl`psv /F /42j 3D^4=ppNNj P} 5kS:~Jn`J?Cl*cc^P|!m*6xAx :8W \`MAX Xg> OBY* nq_iSEq XoL/}OR5PQ:<i SM )Q c Al~mh o,"X u [x: e D"|#=7(U>nH48V{W 6=FY K !W |:k 9D |+% )` K sfq /64BwfzlLhG*AO< HM& K T oO]  b[enA K7fE 4 \oGgIYK`Np>  4ZWf$: il \v Y|s+Pp,+4]^ 1opu O (lvm KQOED`I@L8*j1I*[k  Wzch+'C k]!9%-N {Zf,f   >c Y&.Meb/K =zUNq c Ybn6MreR> M "a  ua(/Yy7m mVY[y`,:*?;c^  o6 ?M1]E #l?Zm {;_o u#.'.y0)$l5N>6\f@gcQX4)u@l'I"u0(E&L2 :X ,K CAO0n'cx:bbtD :U5d0 /  3 : sc,y(0@s ;Q~ g6 U_!N?mcO"&H=i:o6 . s tlM  <p;El0xy[ Jva3o7:w1?|Y?r+nlScg4O|! [f A *S<8V>ZM:cO#YL$cAt[1o&UFLB8?$g0:]z;?sjA  , & >8 ik" X*7[PV^D.|{3Q{]ZP*N 6 <@-[nkvml\*uyE_bCDj;]EQl`28dKyOqb]H.<@0 __~J!o(W%QS< X ory*JRKl;1O9IzQ\[TY821Ix m/W`o d |m}L wdW8} To" UF'N4=QfzOxZq. -Xs}`Yh{j9S55/bm??< R\ $ g5 4+a(9U)* {) (r+qyajOEO:|2Lyw-& 82 3wIaW $gf1>0  r< &l ^@$$E2FQ:|w,L} mueIy(w ZFMݝ8: }Qx Ob40 7 W $Z (%  C }DMh.Bj070zMV6HN8.PϪ  "%8;4$z d ZwF| l2iz * zj`  4aZIPH99g3B#K9G 2 9,Q }d? 3! |,R<K 6. "D*Qr* (Gq 7Q ; Q*% ;lk|kP= 85hnBl Q- + dypmt '?xBk u{F f^ v] ZHK.S #c1}Ll-k+\{ c  S vb4jVR8=EhagP97}/-&C/1F sY lW:ZjC  r 5w[17u I% 1 S]&j\  h " Z3AC*n+8A?7\-E ]!z e  +b!^ uKR.{oq v  NW)KzlMsc^v*oK!cg1 ,w  N6CH`, ~v)-cR?D S qkdZ$r`U7m)oufX WL4  Q 3DW ~54s J Cgx"(v4Du> JF-R/Z!C+\>@5Z1n1xۄ hYzxm q!_r YqYG9J %[G.d]HN{ "i < cp_LmkicW'l*G6P0v/i-0]^#9T+@Z/@*"* &$@(nPy )}daHN mEzQ7}&c] J|YX*SL{YyZYEwaux>A<  8]<fTm0y6a*Ra=lJl2#VWTUQRV 0)p1X~%ra0vvC!4N_B<Wysg B=$`4~ O!\nYQDQ^[hH5e,.D.fsO@;oCj>A,b3u#"daSu_"H,!;ll& 3.%* Ut|hUXfsx8{in(H_^ ^KPKjO~_nG{\XK58?#R`e"*gE>n+_ D H"<)3T "_<s T zM+"UYcU:dB\ROm_[8/Oaj"^_kx3\Lz@rei R6]V8&JE|70yr%Ohm{ W,,g"Da6YI  he=|(EWi^66OK{ELO!`|[:ZuK$W2A427m* (7V1)>5FI?tY8!@Ix2"s_E&f $ H. m(cg 6Bg5T 5`vYBU"# <>u'ne98 vڷ)* j ;Ov M  B[~Rv  :A4^Y_`&hy YJٿknqV_{b&Y /&0D [x[7-hH~K {bBN/%71 GD(6@2 <Hr!WJZii1 $ Lj]x < e`%T7qQ50R~;5 JB2`hu# )`FZ6|O 7Z,8Qdo nk"U8+= qk[R :P7K# pk,((Dm/|ntq9Ljb 2Ts*k4 m ?.S3 @gi`%E"2NaXo\]fKKFy\xz~T #m[  1 R: 'c(Q m'?_TO1V#*%3MLIA a o Qsq p FL )\u,#4G.1 + t.0+Ev  E W%  Sa _ep G0  >Hr3I@ Q w u @ :2.{<@=1!DBn7k?UwDr-*<c]{&]g98. sB;~M[rZb@m? W,9R$S5+>-ZC= ~?tb"mt/MseiXx.{NarH[z6zXo,HlPT#PB_dtot9GU]}sC_4 6(a4}sze0;7sM %!J4 )i!%jl+*-qOjPBFyz7?.sOp _iFv6n*3V*h0\)lWxYv/39q%"~[830TpN}(X[lR{y c !H(Yk#Sfq3 Ot( 9[q(IUk +8e]wow|!$R dj=-f 05 VMuB$.-& ]6H."|Es<0|J:P :FWV(HZ S+($BxFW0RQ_V>9mDWVhZD"r# >4ao;7165t94xUhNu v;~Od}F*HyQqD D/F<y4>;g Sxc/v;#RdjID9V42`z ]!}As!Lj_`CiYJe{=SQ#$mZLt2[6_ QwWi2;LV1Y){PdKk4BMry"/jx zf_.Uy6av0 VURgmTKgJ_ca1)c-Gj;S-Z. 0>l>p!I!Ns QMAS v Sz H r\w77 ">n+Y'%A}e0W?:m 2 i ;|'  L p{q2B\t^RF;a2,'Bb ;*i  `: |~zz:i2dy R iGkh-,5I^D*1 - &5?uQ8 q  4 r ^].`@c Bq %"H3 ~_?9? w+('LX.Vp  r tF' J ;tr5lNl;Wyb#C~&# & q tc=  " `Fi T25#m>'S`p\_/?G"!5(R tL. B ~,nrd1 k V X%>,3[8 0o`"x;**9i7 %31 O&0X?1 7  zY%FbLo>1u n !/'(ZlK knAVTsr4^Ua({R{jx,SE+\wqp"L\qK`" X9$Y.f +9DfrQ Y^ -uU44Fi% "nsyj\J `$)GsDgb`-is%vyG'>Eq 3,HP2"4  kIU-|  &s/SF(k_Fp^ "/MwV(jit=@v3*DlM"^! ?M.^W % 9 F^y2 I: Q\GL:}L #qdC0AAeL%B; FZZ  c _=ocaBz ul(9n:Eu3hE<1|!i%% Z j]cy` O2&/x!HK*}Uh  4e{K}C0 .zAjV  -`a>L v 3suxZLt@H tg~1MFq2 3$\ #!"'FJ   4K\6" ?Y#^~yq#   BZjx?YPzf.;~|K~g6   s[cl G n F;)Kia8 I{1S,ji W\ EE f- nM7zJ  5aQ[`A<'\t< nYD-WL{,[<##d7 dJ qE[Y~jToAsbp-L{G>fKbuW(i,yg JG"r'@ s{p<]r X ] p 6k0e^  ;Qm?yO;M} Y V 7l(/ Pna#8KY" O % 4 A 1{  +ca1-{y&9 ,6<ezq4"RR +Jy + b >hxmO71 {I*7u"!q"Irq:LG!=xsEpq~r=hk/%c3Yu  ]Na ur?BOB2n tb*TH&  r Tb  pptL RQ,3v8/'M,ZbXuskoe|=R( /$z:vfyw>- 1|\cY^3ji% qUFi C2=6> &8(rskqkdh7z##G>9Fynt\h/ithxI\]PSbaOp,>[cexL4EMoB?XZb?0xnto|: R=Cf/WW2IP x;qwc=Q\tr!yjWkW.C=]UB{KKc[$`HJ#|25ZWVVd'D=1H+5k+^svY`cHax(UPqrC[Unj ?w oi*2Qy"X.f"H7!V[E4&gMA}_@Ge^bzU   C Y 8m ~.!-lPoPb?0BZ)dyp# (]+HUsK\Dfv   F_-_4K v 3/UE _3] 9s A ?p{Hk!{UF&J)WA. 2+   &5iqZ? &p S%& !g0vb *U C Voi m= M& ' H="^wk $od G:?Qm5 wrB0,BPp|;"&TesI{  -  * Tr$Rn7zT ? IcU  z: 26rT>LJ^MV}[a @  l2LC6:?  h9 W*oqMAF [ !Z 3l%<0UP*=;h #T  r*byJ ~ ; G*c"X"ML u >DL_y[VzN j =.lGWei6 s0{%)K  Z+9K#]z __ PHL _   <rH K \/B*/jq0"j$H!o5ocK/hT]W+ { b wUt{<6i8y   J8E<< ({iiw1r(MyMd7pQ-  ;F [m)o) xzf >i-J wu4R]GaL#bH0eNpJJv(?eDPcUR 7@2 c -x svL{2D m#E[Ti*69>thu37) e2z Rx 4 V }:+u>(Vn]+tD cxbK]'sj>Cp   Y]\M=c- h <bc#rn#x6`.F( Zf>=b .$#:AL1?'|*i- m  +S|;rZ99R t 8!C$MFlf_0)-w(v ,g(b(f3#`%1 ; ( \Ugv ?T#  6duG@s8N1]C7HyUwB-D\> Q 4v .!Dvjc J F2F#45VvoEr9u%N~k4yc4I =R=25U c [4 5l>9> ;3RxY=pJs'Uym<1!* =6#052$  F"Vil{O "K/+FM~SyuGsi|kk/"65Y0 2  (  VH?| @ [Y  j?[:XAx q mX] "z2KQ ; hUg Aq?K,[C DPyn\bJT sL0.$78`sH"#{?}(Y ;  q2 h /dWegI ["%+ Yx}VQ<# G] K N1I| "7 5%i@P> =1EzpWQO!,TgDH.nNB n'\4NTfsTxu<  Y8  cw] Bu8u=)PO@!^/1*V\`n9MwK#dEDuD2ao^[q6c 1) ) *tWL',0.y+OuK(CFejFQWPAN:&{lL_<Q|"<l9v2YJ!jfy1_| l['.WCI}l9\zUFSL 0_IJW^CQq]nNw'I{0c, 7/:$;mat [6"yL`#Z cyBzUHpUl9a@0!=e=]F$J>{nWJzBi;#b_FeQ`(l1v,6Gvm&rJm!-L@Q?KWU"R]D&O@/L04qAa<>VM2"~_aeQ+tN&EZzhJ}>c"g^O) p4EMS4Ak 7Fs?`d:&S7F(H6]S!uG#MA,;qs, Iyu(WJ lW=8z=#i& i|r}_F5+}h3c 4,Oh}?re>M 8v;z)]\M0mLl)WC;tb"}0xX8[LFE5 8yq:FSPY*[ 6BkM'\TU*avn" .PWT)"%Zj1$0I-*_om %:Wa8s%X#/]}=Xy5}zdI:XPM -E}pJRMS*-PSv".jO7SU%)%ysqdVTM EF[=q"{Pu|Ka{J(Tz ^Ju{8s^wVk:J>TajT(P C=gK{*\4"`'J9I^L^3(|684Gg L v,_>TV0w^3e~!yB.yWa8hLXE}XPlxOkh&ELny[t.mhZ{] &*4{z5s,`JavE$ >aa+y#u-F~C/t]LOwHV r)rK_l ^2A,@\JA CZ/5 1$oTH+J8(SlaFG0;@g{WDh#,2h&']=bt%RC^=:G\hHm S,t&P}w_pam>!>pP4F0}-3e+M)/cRj^*475'Z @+9 ]W FK[}&T nj_Mgdti^\yBWwzg'#UhP _h$vd^mA]q/]v4-OTMs{b()D BA!V {p Bxfh~K}_Tzj^=_jl#I%W9`/ylx q:x!!uz\6FNUgt4}o%U J}DDp$OL3G *) r71%VfVeEv-=G|7iw2/vyjcrCB3Mz9(=K ^`]@)$   g_ g_6mLUcI| FL p'PPk42 t 0/%sy* * }=gy0HgtL&pFe%VeMe*.Z\^tl:yC&eD^b[3QPTp[U6sj6ggS i3ggGg9Ih}uN "s-]iao^)*qjMGh3#9qZ+0] P` z{J*}NR<B_m*,MO2aUi 4F> #RyQ.*)#lpD'z o,^ []}ZvJ>MS1T oo*2;_wT S 0 gfWv'::?"Fauh +UtF KSC  7!vNCy*aC.V ) _K2 00(yx%a 0c01$3&,XT?Xk}uD5(x a1c^[#TU_[  Ug,l~\~}'&wtw+`b\- ppXuu1Z:p7 5v4E mSu YEqukh Ou}^S-b\Q&{BA9}VC5D}<|7 f%!cXQ B K:T on:X W6a^`BhQ;f,Gl>, oQ:uhft#c {Z2O,zN gS7G }9R  /SB ErL734uMHGnSt$c"IbL* : " y$ykWUmKv261 )v'w~GGrqm=&Sl GTaZ N Cc != LP+WUex5^ x=AD|)0<~'MM1@! U : GZT?c4<[ UQ!Z 3jr (V??   Dg =   +KEC(k S\2'\*Cr1? 8c% b  pGKk=NC!2 Y ! 0H+> liSk [sL3w!/k{a1Y .  D2)I t a6X 3Oyp~_uE VxXTkV (|h}}  ^  4tE 2 ^B8-7eCwbTI@3|]i{yo9/mN(l ss P 29B=mxmZ ` !wwbH; 3qtq6w[*Y@zCcwt"U (  w uRo2Ky4AC @c9jl/ = nc-SC"#<[Rj[9c&p  et s]y{g5r25!l atCm_>{qBvmy9p#8.ukwfo<   0 B ,;lJ>/LZ-HxDNz$W Q2 v[o9A *Vgh 3p =eFK=`v|aUeN 71KzeUOK^;qzB 01=XZr_W+*{km  _ }Un|:,(8sthY7"fnfh9F}.eT?xpY%iI 7ZZ/ y g 2?i#Tm ^-;ZVXV w{v"jP4OH2u"2N8y1 j  M\@@[,LyX4w-rT=SO29z#1X<3 OB | Ftge,ofENLc`PFSO^3DhDV qUNa,V?[/;N \ h Z;5)\~p=Ow"PD&r#rUwx`BKkD4%aM   Q - ?~) 6eFgD?v7iY&HD-` 9Qg:Nu*| mIp }d   ziP|Qu4 VsK5yznYaaY|U9kw2XyMurlCG9~llY   I g>wo\ekn- ~~z[LO/T+6ul]Mg|Ydp9k9c "Q"1 R  m 0@f(qz|]8l;EF!Fv`k*^-KA0A3,5SGPy O- 5 1; 77> &+ 3j7h;NT@o1M.; 2,S%=d1c"[aC . Ty5 ]B7P}  bjr'_ (Vnj+z(Z yd(}f:S9M`ed .UH* _hU"K]O_SVZ>h^uOG6CZf%nVK)|H; A.d?f 5bGBs?\v|/G0l#HmwP<Z =k .j+"{R J-OBxK>`q]G""^s!kY W~p<r$Z2bda\  D~%=C>?FLQT*ep 7V2X|N61^a|v|)% .Nhg8Owxv4J 3w/3p{VyW1x|>DLjCXf731 ]%D"eIcbLO&F{6@Py\71EF#8=%I^BZw @mNF4gG33 #)C lZot$l 8Sv7UYA{wAAx0C= /80OZC>xl RV/yt3Yq-E5)3XZ[k@)YO Z[bEqW\SX1(akg~#D$!y`Z]BZdsHu ed=2-vxp 0gefZm.X:: `?'Lp_Nt|D u&w<-L;J_bW4InwTCy ptMIz)?H+ H;u`2ZYg:<1DB&4P+}Fvw}:qS>\~d7z)3}-G^A? '8 ^oK{#:<_H<PyXW?"JM9G;$Tr4FJ<y-4E]}}q+ybD 2M%Xi>%Z:n7BAI{nN&oj uB bl6DDl`=paTO Tf aA WZpAUJO>[FzeYJMal xRn.*h+(-5s|-w(G 0Pm;gI/Ne2Y^oeNp?`$IMJm ?Ju=w _Nl }7p(X`y<)H2-Jb&.a _- @G`wxr9JGWy*ff(,rQJ/Rpi]0lt}xt,|"M #wRRg<WkZ].a$ ^ bp`.$@;rCvl&>Q 0U1%d vcS3!#7G5&&|tq ^Z> 4d 0 l:2/T`8|[i6W4^>tGo|Jw~ -2]P{- Q# m  <jq~T3R wi Oo/PGgoa"rpVi j@ { 2 T}O{!FL }4 AzkrDkEv0G)HGr  Zv ] }PL2I?jIzpdy W(k0et)2 \3 ' D[P uRZ<jE-Xy,  =tNi>5G * a BN/&7%{J&%=.d uK j;n$^} Yg DP:[*8([w_cA.=+eq%,5D!DC-Kx= "F  x-Qg+I`[`3I5b8_sYQ"Q6TLI Wp= wKm% tH6e/J}gtQx,~G>3m&&h5 H[Jd kk`A!2P_PW|&1draI!yM;[j_kqQfZs?Eo`lsmHF6z,0f&a D(V#K.?^">M/l77U Xp$E^JM0LML{H 2&*)v*0z_QYaWpgq0&^" UFETBwh!lXI:*YIR/MTX0L$e 5*jk k~  g $X n"Tr.c>=b|.zjkh'(4 1% `?uigR^L\3<E jD 4<i 1*0J)-# H *d[xSz Nbwd="6f1(M|rjLf(GnTW?v #2$8ON 6tPzWT!btm1BST *>b(-q6lI;z.E-J:YV N# B >{j3$;_%G77@vi:="gc%SFGTV0 zVe}rT]WH_JZN} 9`^XD/u#+gRq7<ag &}7E|E< !F@kzeY1lbf\o:`YS~TE{P\N a_ V. +[\0  %ZyZ{"l aZ5r" (+w+Jxu"Zk %|}Nq o\vt h@hl]2- ""UAUF*M3+4(0GDu5s gG& eD L jn, l0R;Kt~t:lou^?Z:,y>.fB6h4+ 2'GfsJ[P <*+D`QW8u B=CHxUK9k$^6toX]I]KvBV?v K\:=v{i'PBI)&P~(mOf9vMdZEHt9pu. N,=o%% 0[X0IO8 pt]P9gI$wm _ 9f$x5nrKIV8u1tO WkP;`p)=a431DwO9OG\  Oh w2X|MMx;:dnT;b1gUcO@]-4/] <fO/ @ t sWj/~K:g61*$_wzluO%}qQx\#7=gNK8y # [ 1 T Z:$c1-0y]Ln3R7Y7,AQ.fE&1wd \ $ ( \*"%+blqwGh!.^Lf_vtyNAd 5d=A f\QvaAms $ # 41e =MC{^d|HFX&-oU@ 8R n n^Bo5L,>9s"c$ /k&@M~?= uq ~0\w  ,O N1tEU4D@rj:jH3U"|0 F8V|~RZrk / `cWzmx3HHyaGp+F+UC_ *(V%M;r!n #\Hm$T I2W29 @xsvgJ 4(sX=Y1k5@PJdR3 AZ!8$qUQS yHLPR~ 9BV4Vg >?u[>-?3/@I?x/fif g< CqqF$(uhC|`q\j~ Pypor^j =s76M76 g=tI03|}QY686[S:jDa>rD z TVBCTc&/kAN W ] 9#neS!!cw_4< b;Htz]ucsC  Lav[g ]Nl-CHe/]{?(>P)`2a<ja49`hOc=k/'o6L"{;a SJTl U | + = &Q?QR=1( K~ $A8Jh8S_4 "M u O, s 1 Wtf]&`: D L } SpKFK;!GZpapEp]#"Z '=>pa /^^)&^ x\ }   @()I`v`#r U>f)n3Gql'V FM-k1E U (}H4B%:8 ;2  5SQfQtTd"45EWH7P~[#~tfg#~U5:2 ~ V ;8 wL#3X(0 sDqo"!i;oJ:x {67~& 0`l[Y=IBY 2{:# O ! G$2_S H Mw ]/76  N. uv&:lH_o +A%  } a}WX3v w Q} `, u[|A _p R|\ ?#4 zX ..mfE U[FPo|B#&4dr ~wjm5z, 4 1) jMhfY03300 g % zLvn| b89|3}: T XfTn an~IR-|;Yy{ & F I/. ;oO3wKSCvlu2Ui$ vN } N2K g 6q8 =  &eh F ^ ;?/[NK_ ~J = ? mR 7 6$\.1yv} Z |5  }tQQ, A <x'![@NT I v %cJ =j e6 d 1I 'n|.Fj |XB"" v0BL`KRXa^*tA) z -kR H!B -:Z+ rop{ ;Fkcy ypqxVICy=QxHe^s+lx3m k<AJ.U!M N$=1F)PxT)eDoxcK:AE0p~VRt& X)6J[| `$ [(h.wnzwV0d   9/>Rhx%Na.ht4xM*W&;}8 qR{X[+O:?~'1,ztZ6"mRb%AR@?`'u<CqCjx?q0VOkUc$}  2*k6x/vZ;)dv4m8Cqqx_0BU3O5f=") ;4 g5V'|I2}T[0d'( "(m^XkLZX++[ZPA [ ^ t\_ X5\5 *Mt=G2b U WXxYvvc! 3R? e p$)U$ap` X~x-gaFFyc#LLVN';dn% iE NN<) `,Sl y_2=v>SjiL {S\UMh Lb2Y.@B_u a  [Oi&VCICL#E<v/|R7 |>]=Z x im  _" FXLDSn{OtTN;+ FF!p\sh!?Yt,C{ wf,Ifm7YJ~2e/t{Gk2D1} '.7X9=ZdB>ZXATD#u/S%8l69yKtT/+YT_g)"n=OV6ZX&D L<B }pX@'H{$6!x-(}C :{%UwYm'O6#-c+&Eef:QjFCN:=SA|r  Z" jj? yq-b 8 (A0 44-[Af\T9g,uV7'U'D4R0"LIvZu@h1` j!.H&<!}T*(Tw 6|Yfb6 |@!"! 81n]S^*+p0:7~o9)}FANqG[h0Y~r{KQ$uEnw!V6 G]NT&;ff 5.Cjm;ADsiAO>W  E[:5lpq (xd47A( a7/ddorJ6o4j[gwmsg x.$(Vx uCxyUi297vdRb<KI=> }RS(-Q. m XdcVBT +h}+*7\8v9"sv Y)oE3rXjr@3 X;:>v%.UyKKh7nV6aR9 4 " O+ <[GpV 8N<WEtGA?9jTkqU;/jv:4?P# -)xL 1 -qa; e*!1 yEevF(~4H"ytpq->GM*P 'o G7XA k\Pfp 2=1'jHPL ioxUA;lL887fe% A E&?3 @{F\ U=bP:$!Gjp,qWsIXa,jL"D3-pA$^ac  8C135W64Yd%G=Ioz9nZ:|m~cz7v< | K!Uh N w%d1$TrB)<-" {0NPY(|)QzbuLGRkTMTq+ . \Rzw8p 5KZ DKIFx7 Q;"`U (e?xS@%?UP9#QARe.BoMSvalU #j*6m P {  . >6~ ;m b>m?yHNP1^_%io0F |2 tG|kL a2(%"~bbpL-czj>>~Z[VpmZ A?OJQez"i~x ~uCh Es! D SgE;a3 ^,d&fQW7] #d! ^827 <*E$2t& %U{o=Z[1_h=*|}Zy &GUj2?"SOFX:1z"g!Lx"] 6gbT78+GD 9`Z)ef#rm] ?"bFHl&? bFFgl# X gDf7Xdiy8~gc "6UshQ|n"g>Fv.ew fu} 4SGlQ8/eN% sH0j=9M soc%S:p c|  } :97 j+4 jPqA76j]5  M xLVT&w?#%a9"SnLYXp^$ H & ++ k _qB38#f~LSd&Kp WE ? 9 y4$ s:~:1r/q4CB3F 7| .-e U T@ S]K@v) O,Dh~t^USBR # N* `} eiH-!xdNc.PK\7O:SVLzj&;cC4'~fKOn" h}#Oh|VUA?;n W$wC**y&\#qK(IXcC&|c 2wDt0d,h,G=vxVA*29J~eBa&il2D<7+!' =4jCR+ ~[rUN<' ZW$g]Z%v[ V=?Cht) ~Yd?Lr2csv/ O L. 9R =#6W2S[ HMqm]^=o 5zlgg9d+9jxtd,iY6  m t$ qnM6/q>3Y[,|| K;Vkl`0`)_{g0<+FK#Y~7 2p? $Q"+I?S OgRK@,Ja5a0&`_ZVM86\R!x`VK*aR@JQ G>&vQv#XAkH0T`zo|&;@b0yahTy^2ug0H|YZIgO6BC "5ETrO*Cm[glrQMZWolAW5Cf 2T4/x0c"*OiWvLIhF#5e}s6nne^eA)6j?0hWws%DK{=,_5% uXEUX]]FDoP2fJTVssBWIdP5Y!VqSt_aSFbKOe!\fSzP%A_8^.RZmqE=?<M05EE\Y$31/AfB\SY4S`v6OKzTJ]Zoz741c [)&LBl;[v1G4[WzYP:e*Dv9 C twv0z>`8Pmrt_xTjMRs&saD xze-FGav1}^niZXKZRnC[/1A+Z^A . 5+Tz;J0 _.mY7 5E~qp*fj9}+? |z[uZ*Alf& ]-FgeW%9YB&g#hxqtEj(kyGX 5%fZ=p@mT\r/i9u#b=1q3:+So++d?cII:kiI  c?%Zb[{9QsTm1Q!*Q+mU]zR~0K!6f)CsyrT0 iAHTy4i9l'M\ai5'CnRN|C]o5VU/-izOF=!s1yU2BJ:tr?=5!x%hGlN}i,`>qV$"{6 G\!t(Y2~eGDFyS($)cjMEi:o8]c . [Y;Lh9-fwx6+IFUCoThNJ|aVyxO Q =vt+-RMW4$^v=yyO}P#{Lw jZ; 9< RY&awu^M4O"8Li;p$bSRSSa_VtJy":]x eX.!TmgIz4 JA<X) k,TGBf{B|g#S$ N;a`%JR:QD9dJu|(F4;7%h&l^iD V${F+P f# {WA 0 b&RuH;>^I#Y  ` g fw-zD0g@Lhm-cmS4jAZMXviO'+{/3d@mM@cGu s c (]v= 1. m<Qu^xz;-A|>L -K *fP_Dm}:s-=< PEr i~As jU ezi `#uYI+r{TOE417U*Lp=v 0Io  p:+>"~HC]804-I@^6M)DMZ 3xT D jI\L!T0iVs42C/ JRYsa >.I'B_yG,p tn  48 Ij[4!hFf(WEWm\)=sC)}.Zy !a*w 3If=!1L{J~ \{T g|^, j O Iz]kbf\K X*.)jL~PrH_g3J [a-etMG7a=OpEgys> P]NB,p,]wQ]8$gYiYv eZ05|^u68}a[dy1pU+:lI]#,O?[(_XNf" |<A*Hs @}Y+4_:M\K1aJW4}V}A4 rUGr6X"5^Bu iZan=B"_p1;3t ^1lSOokfHQ32 *G@.(h`G{_*6 _L`ORX$NFJ /Fe%e@ qm* wx'D!|<2'tal7Z z~IjA;S4g@Mj|^NzSt]$.A82yaYzlis4;Z .{] l  b} $El4< I ZsGw= s {d[a i[vIo=8#VlM!zv.#3Fk:vm,?Sd3nGt'4x:%|=&1[G[^PEf8N!;JC+Oz]}~VZW`A P!/<_d7-p?#[KlN~G\e+OG.lpO@fhN[qZ/^Q>BJNhxT*)[5aZqj056J<r4VH~xkbuPBqml%q>Z`buab? >x'  n6U%  JauQn,o;b1AvAy4t~JS<H>+.x ? a< +R!DGQjb@DBL+ OaTSUyS{/! . OLiEG { G ,8.9}pnGnRidC=N;<BJ/T$-!O!&;k } { F 9#D1 O77>!2QL,V\VS/!U#$V `؀nd  "2c-O95yE.j0+&\E[*)ngݝ- s 3nFRs t K28'N&e5! 4zoeBF h} VV c'= !~_6k252 Vy^bw}cR9/V $`O^ N7 x h 4Y\St-o=&O<R'gud"]4S,U o=f80GP} _* RnhDwrKE|nE-'gVY`ym M/N+xgN9Z3(&EE#np AqUa7PD}?sR0 OkxfW'7p+/HJS<d$Oh&MQ@nzimg&k = mv_KRa^Z :Lb]; 0^^yWj A 7L  E]_"FbBPRO{Y tVe0\Q#Q 5nMf+$ueK5` 0`3lqp: 5mX8!3)6n?m $kG5Ua5pMT:[\j ivs[t _/yJ/:a) _,7cOpKl_0YW!uND 6&h ~9 e4Fw \#peB6})c|+)mJ @|Z?~0#u3F} ('1ak+*,b5Z)f-hDv8f1NFM<V):C LnjiZm EM22e\bLW#&>S _  6 U_  "fh@wu S W4- $+ c.+& k-P _^ | M  f^Z vt_flD 6u;w Q6SV M>eBwf-*:t3r\8 f) N VwA%  }.vxF !m F7zoh]`B14/8K#r \ Q > 8;"^{K! i:'P8 lI_B%+)`MDmP%5G3$+  w  ` Zm59 )r }H^:SLl0eU/O\qo#I5FW1<5IXT"L nTfEnPGTJ"  #XUj";.R _Hbx4kB]2/$#TDz_B'SO#X}QY-k$`G=3H39#9 YB ^> 8P A ht % ra$S EaN "="YO%m.,rwYF he  G%* u/a[e) kk|3}Lu3s \ 7czJ4E$ m *_ 5^hT[>2 L C(x i wz2nSp' 4vStHD o ]&zk ]n {)D d=<IK$jLxp/5P`J1Ez;jKOfP gY`NgUw(w3`AyY1 s{S%4zNxtWE%ZlxsXd h [w 6  [%?\DY E cBA3B)Fu;X^MY tjfD a /a HwU_% _b1r)G.&`D </ /| B/ b #x5nU J= __M5dp$fA:[M VhJ OHklYt  E>.u w0 H?=+ROm5p7{!nnEMs4c BX 2IG=WYV22dMBn\|MU O_ AD vUCELN2v%<K[:)=ZbSP tS W~ hIz#zdmMmI6sm"vE]I?e d 8a,{26_G [jOY+ `$l>Dha 7 [nk2=*B0k`&[M<2i{iS_RPVUV"hV}rgsdf D uwFUo*)kD*_,={eNu[7|=T}t7nO^?yuC "gDxz'k3y_5Xd(`%5Y0%5;^*8\yc%/_],% |=l~&_\2C/ T:d@ .jgn$ '-4}c)uOMh;H_+[%iQ~Him-PCipc;x6P:yn0aTm2h Q3.3]Cu S+xU Mq+ ;%z' ; % C_6#d7 x)m @r S X~E7$VGQ?s ?XVNGaN1r zZWJwD bM " #, |H ,p!ML NJ Z  C}J5P t|~Waf :c'qb*|F+`cP:T:4gK 8N4wY>9Ri=]qT' 6< !f9<oH/r2F$[#fJ5>t%A+#R[V>CnJGFA!1&C n6/$t/AP[&)c+fE0thk1j*qlWc-&n90&ZM GZ\px?=iKYlFZ >DI[8j,p(*=y !<qe`Xw?cZf%{tjJ O 8;]$m465YP?NCLFB7m~.HDM>rsngDpWF$N<, fh b7g6vT3Uy%Uq4-/>X\^Mq 2 &oZS$?|}Az qfZ<^3^"/ RVC/SY64]-h`tQ;f-Xw(H h^y4ozDt6"`p#ONq"Bg x.n<Wafd)UL7h{ +v JHjHz~ LLf*5s0:mV7Q(O g{7 $9xy$HKxN&Cx80 oCy^_5]k)2F~q)?\c#e@/dsv]Rr0vUvWnIxi? B _}Ksk `{Pqw)O'IC kjY?U(wT|&&)_)X ciJQ0 oo%A0&oS}(3#XXD20A=Z'PKf)\soUJI#%"hy&C3>?-E<KR/]pX3ixntvu^A!piN\eJJ=n`G/8k4B>vu>_by+Xx{w0Op8[U#-d!3#'4CUH$ek4g)&V!8eZ/KHX-AF7i%TI<HP fZpnEpE-l(k^wxkz*Q?!Z\ )'<[&dql5:7o>h^_41@AnCk#2AgMYm*a /'N/T4gV{Pho)#n,}3<e8ooMgOKmqXL%eZXk4 )w<$"h[o=(ea/Y+ Oa}N:V; fO 1-CO+_eWU5Ke`HUW2<f%GS[BO"9%]({r4r:QdZz`oTJ_eSNyGj</CJ$,,3<]?<a pfw8fQ{T"TFG b#6B5D5bUG2"uT,CW^~[U~l*zZY?g#7P#f6.,l:iN:*]43Nrnp5OSHo.+!b bW!%.M9,AsOBNm=|^6m|>1:$f"t}M=;Zr@r)An?[UW8XNWgvj`!+|{%$0>gY<6/mk$E }2y=bH8FePaF.+Y O*-5OFf'V|eJAT#VEc ~1:/S{;MJJjeKEgc_CH9syPHcq%ei* \-3%9_sq= ' Ih|]3bpw %,eZ S wYoi 6@^n3 h 9USUiLG< ^; >x=<ZWx_h& . V h -7!cy*!5 D"Ey )=>kN]+,$?*n&4Yky0L45  (u* SyS$\^}Jy(+L  R\.gX+.me _`( h )u SA2CG=Sf,Kb)m\ =  'mgk2j *TFT6"iZ #3 u@ { *B@YA w +_Cx9FGz3M #&f @Nl#Y VZZ  ? X'~(n ~C aO#H") Kf4'5*#In u>܏^A "" ID)XerRDiL;C1 k6%:=_ n=mX;$j/k s:'}L=KrsJrf\>  r%Rރ  - aW ' _/  LU f)kD|xed} !v+cUh"!D܍Q)/R߁3jQsb % )a +/6 Fi' e"l&&޷W E =(/*~ (8p' :v'S/ T~9& TaSK !hݱ7͙."36 : n HKl F ^ u,C  VKOw! Yz=( # .cok Dui S ;R / bz-{70=Z#[b)ah)9bP3ug M xW 8!y <dW6O `nu8 Q:?UP2v!8X3$TD7lfuS  po7|FG)I=>$HO38 l! [PJfads6VicM4Gb3(/0K2H]+)m~S6 QR'oih^ _h, |E k%onp8 m||) BM* {z)',D(B"pI )g YesE3e0 iQ*y-:;#LR+ 1 O<:@  MAiT, !1`pRaT{ y4i6[W)C*В [^]S/!v8Efi? 6 WYQeCHgS%16v\+/.Ԫ N ؈\#c $T|UJ vb w(6-@SWjZ/4!j5ۛOg6S `}j9%'I S D!] #{KR& (,7!y EыhJSdH yNWa|V-6$(;[2|-!  !nY (0  Ja55 ; *$vm u~/0o   XA< f4Y Y$J5i 0H8%bn  4(]&6<}%.yCoE#t#V+xNQq%G  q &N,|}KU&(FzRcU|YFZL  a5< 7elz{(>R/ * V]1j^/h[JJG'x@MJG  JI K  Y w:}c"8- y;pNmbO{+TZ>-4 \ -  9 Y+PkP  Wq 9{j/" o_@  7RS;  Kk oz ey  H$ Nw pX.SrNqJ [ _! \VDPJX K lF EHUDo{ N { b.:i G! ^9$ }d L>j! b\]q ,D[e  `V"  w6 f7 )]A >9y %V9?fL =4S-A.  k,f-N =){XEa!8 f p 96D&mb! z"> - *qLc/CJe"O x~ 1q|~ A  (5 Iii L]z}bl<'NdGU.BC vN6z \R|P D 4RY4Q68s**ye:x8h%)eDmxqCPd01`+:$?8 2"[5sp|/6 DnMg\EmRr@8.#HDKia\!0]7{^;g=RNK+6/1_BO. >G /9h ![!kG 0H*M#_n-\:Ow5P],.+J%E)`_YM.E%%0Jo2nK&flhI:ddtSGR$( ^b 9 g!1R `Ye 02bw c(%( G$k6Pn(EAX*aD5C Cg0_E f"":%c"03@TtQ<EJ;"O$Rj/uhIA6+:p~/r''}`8^,Cc<&C(M? dav`W!hMVokjuj-0hl;!"aM>Fx|tiS3gufTW+pQ=$!vIp rB&HqE~])[awt } UW{p9B)Qd- 9sN_o[b0BO/i{3Er ,oQ *A{FYyNK ?]O-lhj^?][x>HzZ\nY_V F  _f)r=r :LHMH Z']whq:3& el,^L0$$2c/ ;G N OrT , R<k 5y &Lt= MXK}E 4 7 !O D    7@F{^:A g1 2 @#6&czF3S Z7][AZ'C:!GHLC 0:$i ukB d 9t]J;2 !}V q./ P/tS[zzW?Y V%hKa7- ^f>G /k3tQVQy5|#`W F Rc}$jo&]''2+8M*_KCIz,W  PI&,hC6MEB)R^wK gysE1#gElFL 90LY.--Q o &rAzx0*fmwi5 U2I;..$p"R;k_NZ;Hz `45 $P/s5Z$.* p Z  s W%XI k9V;l%w'$&&@Y ;Y= l3G!rXBWQZ~OZ#fM9r|~h/# !XUw'; +Ht~EQz8 +ldR!2Dz?6:XXX / :'xwjcE j.:#@ TSZ FW3 >f A5=m(g/5*,ASWy. @a/#zR`EF} 2dUm4`; " @S&UTZGOyXn.<Ic6;kowv#"G"=LO&):L5D6 oKp wcb^0`$T388[NO|=.N O e _0X dI|$xN;juIGV81%=4bMwC5PjH)nIuV6 BJyY% :AAtOsRi>HV~8r)YtO{v S1vL P[R` 19$pBJc$RAb W 'z*?`@Vq( l>c{C^F2G%XFa*RK?( ,Rl g# Z1R>2R>([~W ~g^@X>L}1;F'JUC/5>a`rS^oT&% b' Hk#SIh7T}M1,GWO\oZq2#g>wz@E!`|xlQ|9F E `]<E72uPRgk|V YVVJSMl18%zlNY ]\bLux{A 1zGQoa&+%g Bk6~crp0, .7kG![uf~t 9OT M rJUSJV@Ks<1=_ydRphXh ~YH} )dx9nz2?9D"ZDOqT ZUzil{8$" EgU \}dOU!-7ey;r R1)[ %\VVUY4f _BPK]?w(BCeU<YysH^!({X:-{ M.+TAH{geY`zc&FY; {y $p+Wg} Go^z ron+;&~w?0.2 il2 ?r]g1 CF {ijB?k'O#F/XWb'e2;B<0W</kF 4c\4T']H  A\ m!3ub}K \(R8?  $qh[; Dlck%9ElZ[HNk@i 3S  ] ,=u08M*U=#"tNkCO:j <1l>}\[ 2a 7 Z ; )Qv:84ux BvP4y]:oh!UI7iqw:jBO:~W^ !E-YB" c4%[vEH P/51C$SsA>:d$l_XNh5d6SCpvo\T%K"Hs< OD9=|Q?G3c+0{5FO4~/_}OJ6X7PIOA+tX,LBfDIK[_d 2>)#GNz(4 ID:I7GVU)Oju+ |Iv+`W Dg? b{9E /h906m}O/yD/#:}o?i [}fCIm }f<D&vr1X7ZuGzaYI+Ny4`O?wiYFE-3, id_Em7Ew.U{v5c+{d EWb8Tj<)K.{'>l*sTxinXDVk(TR8nVm_9qLESs( c$vz #7LerN4 `FHJh+/Fe-*v+:#:_}RnUm^h|9$^{$G+>N4pVlS;cfuxoTPLA{,'X] vxb1m6^tM%Y5fn<*/Xj4+aCW?q8"-pbs!DNbo|caB$wyI@"nA<AmvIQz65X3SItKqG-x`d8 lRNw9W3U(Nb\Q{ ~mwv, q{\h_B=vFEMj8?7NZ |jRD2sT4;d>`80yN`:3yu B{)eLH*DXU\1ECqO2~s*&Q+,=M?N;9)G; pnN+ ?$(Qo&VM0q2:s>5 bAc9Oa:4t[8UN8t|!5fs}ytew}'359 }JFaJe@GyxT P]jrusA^$8PZ::S.K@;"vGI;m|A L-$ " W='x}Dj[1zJ1"fAk D$xP=&;.39)M@[wj,G-~Nv),|-Pk^jerH}V|g}nF2JS%1MtgU/jmV&$K?~Fbo";*`+qYGPBGbAZ wqY=h"8?[Y*Y&nHygim]X*m=JaBn!i4u'y6cDsQ1F1YA~\~Ujma 'oG1]{!fltAC'z 9eU f;AHDFl/8w FzQ7?>Tx*5Ct3D%]U!AY3" aG 8   e|,# ),bRZr*eAQurGqa]n,ydJ64c OmD@KMZja [5 d  K!  NnzpFa6|+osL" O@W" w8\yUQz"r"f v j #  N ^i247H0Rh K.Jk&;m05 - 8.Pm'F^xSI :    BS.^Z4N0/B/%x Q*/;EWM/hfA>h>GP @Q  Ou5Xl$+@"*0:wjtK:l ! 4fEGJ]`"T5$J=`\ 2  & 7Y Uh A5?3% | 0  fx s Lh-eaP.KNY h g , ?\3z~D| $0)lSc0L TBCRg,>)q_T#,IO+.Rc*m u Ilyj. >dPQ@kOtcZp[} j5;; #sY;w!Vo4;}K;9cn_b+1n(H>H%Q^pdAe9vxU=xe]54g =|nrN;XC1"U XdgvZ: 6L+NuO0oO_~ fOV+0hixj0G|@1FRiX 6+/T'jm0!#Nuwz ?@ZfavVs; ze eDa^m!<g=Kq88OD.*:=!?2N^02.%>(3&-1s:!<~yxqpm-# o!$BTvPnb.N#.ri;%#]dKkmHf{M7*JVUR/gHetdeh  DLUh  !R kLe Q n:k 1 ;'eA1P6;B]/U J:v6VP:% ,U '}q]S1zx?en@'NR aG J, &6x-f>Q<s[Z Yd{T|Qaz>^)xw 0_q;xwtq{Mg_pp)3|uzd25opZWidM'WjmgMa9wvi+w^<NjEJ(RJCDo8dBgk"#.#*m< iq _dgS  ^3 wl K)6IA < 6&oa_GMgD.LA/ B%p[jXS(cPPWxw w>~y Y. zf^(Pi2UThG]w/fffNVQ9sunDCE<m{MX o<  ?  4.t1ua|y~'SmI--DC* u`8||$q)4,!&UV{_ i  zA2(Aja/ h"^| Ks@^o#Dx Zz0`{GcbRG Ql7@m4x0ZDP`  huI )5V^7BhV%UBLY+l03Te,(I2#t_K\lX48n!cm\ 1c K18 AO]7~)Bs9,VMVQ9_*Km8cs '=W]yfQ"s%M+bQT m)j 7@h`d28Vi~1I{0i}a-:5@s 2s?U+Bx |C:5-i5$nu2_& Aa /# M 6EoGRuHPG ,"|\oQ>Z;s.o[vk&h\'rDJ=y)VX> n \ wU-;2oJ}fQ BB:S9*,.C$&]Ko09`S Fg[8BBYO.-d[ #X `FUQ~z!E/g "X;=fBM/p!}CR86hs TsoJG6E-j+]+MuzD680~2+tT+ t=DJd VYOr.CRVq;"q7-FHM:iv>tvwr ;1 unWt`~|Px`" M%e`D1S/eP]Zwyo? GbLJS6+nSzD3:qm &VN^UNNH^ $~8uc)b[V IAP R0`xlMSoo*k[jo?FhnIgKq**5s;/kG mPr3BjpbCVZLvkqokJ_# WcyqYXX9-}+O(&si=^N2Co`/y_7CEYHV}U]e_\wTOVg8&gh}QJut  Bcc6N*.8A FdSvd[[0 "3 3i|kn6JZ!k"~#!WN':SW((R\ 0 OfN@/|TSMd#k@RF_nAlBtDpM4:~6ju!y>SPIIr1,/%OXK$*XyV%~F^(B"!<'i^Z u` qv2yZ8 _\"g EhQ7} G}toyzG;s>^O,>fSDbz-n^3\tx)=m1R?{^"hRTQUP=+VyDH pXl0"Uwc98~R>AM% i!M~isvW=?2w}1 LOX*!Q !`u(1p 0v"}vp TI*k(]aG(#%!XwN ^K62Mgi]Iww# u?Zo82G(.#_]BK*QUnm'Z[VQ+Jo0vSm0l Wn ^W M7 ^ I`9 x&mjw-l;PW gOsk3P S5Sw3N~VtJC]w#6uV2<5):"5mL!Q07 NVq9n&h'&E/'NnxC8'oevydaMUHO#'Vn!~rjLNBsdVI]]feyo]>J\mrjfWOR|# <I20C0|rTMnXdvg_T~*GL@wU}\== >dBG&3"69U! b|Ujh~MiXm{w %.%X_I*<@j-R(D|p^;U\bO1yn}=,C^J*#eSd4sljdWikUhP|w6psv@87OK*7V`wq2d9.^I[T=r3H 4,,kE;z>wzL6wZmc[]efXDUh_Cwsvp~|6 9(%RDb`[7! .' ^SdV6_]su]>$P%@X3`MZ|p[=K/"#)+Xl5h?].F}$#Aau} 3!8 BnZWQ_d$Bh~IE%eF)dm^;{*TDIg^XH00] :h:xjq  zp&  ]?(brZSJHfN{lNWqRL1GKNC :c'tW J 6& pFm \S #SejR1VA,Oa<cFi9QKV|y{vm ->l/JVN)Z] +9 !bX*P"5tQXZg=? AF%^> <GKqEb`n] V ';%,Xe6cN$ndV2x9" %Q$?9`vE]RMI"@ PvVZ89"{`^TM2T P?gh_Z8} 9nY zeZD={tYG_W8R>;~J=-+ry8K6^^dPxQR[v:Q X/0b@wA=JJpAXBJJ8p'O<mB/*C`_Ici}3kNI R 1]}>r,\#s1[ds(A$: t*zj10F asb[[bug Gb:'@7 ;wWg[C(-x:&Dk]! %>Z v]F@$K  @~ >|  J <g<*e}pCUdSd 1 C}@;8Q;zqi icDUk,Q |z4Xd[?TTF)h,6|{0F#gYgx[U$  !#o+2rEg<5R*>! xx W^ PhNFqgFgb"6{ Pa|mu|,#Ne)BlDK9=@KM o*[7uUsxh EVF8I.+Ww& C>j2 7 oN^s X;s+@:" TOK* B Z7_hGqN Q~+TG E=~|d&D0W,y5P\7>:#> "@&* G 9bF BFs@v  (D B! 92ua>? hetB+9Z j<7 h 5+h7$/': AVTmQF$00Z-5D@mSQKbSy X ty-; l}Q"5`q(:\ T%fFe(2M:ZAm Gju6(Q5/P8+nv% 8vgc.*$WCasjQ gTB?(RxTM{\(kB,Y>o@&]7LQaOi;fRQ6Uaiy;>/+*Dp='uA8mk|| C^ddI9Q= AMpl(uWYx>&N(`J=(m4z'7 Kc nCdF}O-i+tF.SjW1c".: W6pn2PQ Ty6\cL*:w h }}mmr(fqT|> zG uQFax3g^j4nwMA mK<:b*`*I%O}/DAy-8X=OJC:zy7l (Y>n$R.ke_zpi Yd@2Wkb&niRa `AJ w7N%+bnYdiC.JfGCv| &'cDU1O=(me<` )5 /9q%@Iwj{6n Id0~<cnMwv7R.Y)*>kHBl  9 6 *'y",657@iiA}s0XCkD(!0'&dGk*_dFw> U$U#I{MX M!U >Z  &y;bW Hbp$:N*{0O=|ea8g<@U:=h~]D D]bn}y3@\ ] :&mz `~UpR6E0&Fa !SIXt_hhE i2_2&F*$w1{rdyh `C5U{xK}dhx `evVRad|${Bd}7pe6&>DvnC{}!KFnFj3a[a9_#w2TnbsYKn@jvK9L x ^ 4u>4U)sZZ4{iQyS~5 3[ /+|1E VZ1eG GvE 2GCQH < j I EX: k zU9_4tCqU.raN2oO6YSR @Mg*_  `'7/ XbFD!M!]5O{i%*@ d.jHB q.FU9.o2)JHC '~F6w>6hkSn{^CzES;i5d!,p`hrM$ XW@ {vP @ b T9FJ)Z Rb@Ig24[R?{eP5x{o#% K Z]k[5<} /K0-RBR(#f 4}SAIO$R sF X 7C=_z|Z,}Y;>d[tGRDq,rL!C]p5(BBlx?)shZNBirV3,_w]'Z8W9EX3Lg`b GXWe=>,h< :]CC`E%){Y)M~\v ?%=EG$<]," 9B~^`XMDNBy">4 U^k nor}qRDC .??NM| 0^[f/M/{rRodRd[nN7b} "Dgrh@T3qqs5'  6x_&mviSHQFUw}->a2RA5_|FSYl)jpBkrlWP{o^[O\?Qw0\qV2k6_, (aHm/|qq_F22)hcHus^tvWT1La>s@U]?,1bzbuizb@r-T'HAhTy6>3~<@l-FY_D[OD$]wOF yUUXO]<_dy +eO1-MW*Mq09DA]X9fLQt(7EK{kGcuG~sgH b( J+Lp:p2HY_LUUZDBf_lm5;qMJ%[V{@ a| = H=_`P~ 21 {c$n rU27Cd{w<cEmO  O%M 8g %dq#x< ,Ug gKPcvxt)Sx7'b.nwei)3GNeWF^|)iO:G@7AyYQqsQ10!qW ;w@DeXo; )6<\,(1A]Gs.EVE,uN#|5o.?dAF~Nsb "t9~}e]ms*w&/8bi2Z**!x?^,{nu''mlD>b NyR5gYFQzaW*"Z-w D^,8X?u=pc1?aN`4|8M,wb.|pIX${TJ'B|<Ia`Rad(ihSYBg'7aN9 CU#{d+tJRINOFq_QSC7 |G.[qQ%t ?HwH.wLHPn! .">|f2Br*b!O^B(.=1sxV][:82<ai t\y`q~~pS.Ho,?3*x.W}`HQh!1*i*Op9T8xTx6[Cj|\&u7<h+_VZUvRTgKmjgqMyaj9VKnqWgF2;)E%j1M!eCqaIy8T$lSOo1Id6;6{OMely Z]yv ?hf}nyl!ep5vT7AdMf4@*4ZmlQ./vai5x@[ H4XcQ[IMy@\<&YLLv)R2*[F Q~39!,^k9Z"2)r _3 9s*6 t_dE1`5Pc|5+;FkSL#wz %"#@2]9 >qymk+L w^`~,/Q_IyiWS1'GT7%) MO8N vcDL8M\<I @BZuE|$W3f(i0 Kl*K:;<8`gJ)L`3!mc1Jg&Ow^ R&hYQV#~ Q _#<{J0c JVL D[9<!\!@ #iXi })g/jl)[ =e tEf$^fBL$ 4Ge'*QR38.|f o$_(qF\2/X-s R @7fXA,3j)MqhUlBz Z TGDK|bn z'sRZhX%L2P(? bQ! v</~.],D^}h[jn;b S9:L%<!Fhfyn II1b4B-s^zKK5ZA+h6l=:=zr5z  .%YStD_+v'x:rOj{qle p.>V.- ~AuF#u:~ac>uMG8., T;)ZSSW"JabJa 5$i 3yME`vNjDP 4 W.0CMP%]W@<5n- %f!9.p z+^}| >~]p!=(X8AP gS -FyhsP])]V+Ak\9t}vV$r&%:C^(^6]eoq#B(MAUmi'iL"  #OhN g(*Ura 7a|1F Bm0 p+p7:tMol> Tsf$HCwze4amX$5S) Rn5BX$ LZ lI ]vM'~|{' APj1=hhBW2[[ktAE`< }Uu {sP.<Fl',xPM5.Vl cO  &914b |WP)Ow+ fC`Y$MQ{5[~% *CvI5LKz`CL]pXq]#^Da?QWOV>sp(]A\0{jew0FZ+oROh=ZQm!*d9| hG;&YE@k.K<D\CGd#zJ3 ?giRY.fbh? 6^ 2@KAJWrgM #T*pA7 ,qKA6*?c\`_dd8Y{kqV9"84wa8Fz\-3.W340! 3h `:0g =pr{R}"Ld(OYUXj  p+~g  ;Yc? bBSmB,L~wxl'C5#;goKa)IZ^Qca4&"{<~':3 +8`Q6M(C CM`&G#Or[2/ HR*Zs0YhH[A+$Z6z=a 1`nh]2ykc9he,5-QSX5pz/k(_!S2{(~@%, }JIx~BGuNa$f&LLE Rf,{RKbxeURC( q*.SJxXx{uu.I;a6M`;]/@+VKl * L1|{q/ ^0dT~je(>o)0F&OG[n7d>GWKM&(o{o^  j3 ju.=<*XxtWrEVeV-eS<o:>>L>=i (h)le-jK:H\j1'}x\B) 5tx48Ul<k 3]JmY3+^^GWP2]:0`/"+#sER`~%u[u_{ 1;F2Nz?mO~1xJyH Kz dz}wb/Cw3t!sY~B_Y7Wx:<Zz2w ul"s]}1\ZtQo$Zb%qMJ+ 4=.."=d |^i`[Pc=_ ?nK1Ml!53`CY0o/._hy.S[]N(' Wva YH5]`g7dVj#/{ Ec(BqsLpe"cmJ"=bw3YKYfzt U(!,IDS/xWymau&JXupIvt EWr8YG B>T1ep >W>=?Zk2r3\ uwB4z0Dc^5[bZ#EW ?dD5K<_:3 nAJO"t_1U5VQkXIi9 J>-y.DfpUF3r592jSYClS>:2WHyq4s=G )k-PNtx~e Uqjo29`e!NSw/SR0exV ]W?@1k`L*_@VH{iX~;``)XvVGs5o<w*CNt}dr^v1XHRrX2u~8Pk~Ay>z\w[Ek'98 # s#tJ2s^zuj}Kv<B&'ZMsHI rLp:<VBL T9\vk X3}MeFL3N&O!hL/0`0EnA %{* "cgd&s`EdRi$6G|ESTVz@*eFWefr;#E9z7Kg?{ovcw\uZqn arAzP :s[ W|#x _Rbq-,1#{o(_{ [C4UH>In\ *)K#! c6#3xXs~%m]=Q0yxe=%Yv.NOO7Zh"T^N nBTr`6VS`!*4q--Bncd% QIJp8 )vlZaY3nunCvegf~7*2!46\*9/BWjW.9 =+wEfP:/5 q-|/*;)mD9m[ pV>(]b}NBY6E&WD+-6dcb]d~ @IKaFw'97_L{\ Z eq yOF#:+G4<k_.2:(D6|[)Vf$;xZe {[r2/k Q3 v2 fi viY @:KQAHPf;)z B %w"w 5D2kBBb= pH=/7J6lG  [ pGEdo`SAvD)4W>yo\  $qFK)]5C2Ugw =  q'q\d@=bk~XK3~'K  ?|:?0[:wT*dz3!:i'' [f2b ^ cfh6Z@xCff_o3xNw%o?fxo][:04+ 2.Ec|=G}O"w<77E5m *v]Ci.}}<EW,YZ8A'\e"vOut]Z-1@}P7}@2mys^c?M*'4dMvg25it$C!w]e67-Rmc\vi^M(q!)hl A[sVxwPUX[$L Y!A_0|~\H+S5^j iP5pI-BKSW`KNfxC ^(&E!-W!oJx*1v5{W!s)L_PNG O5I+/41/5_^ (v'ql=[%20{(9;:EiLK A5))W .!&Gd {#@:aN"}r  OZ5S;AjX8 TACIN> C 't^ Q|rur3m z^T px*v2,   = ) V9y& o  a%(Hu?zcmR3ZiDj37FV&S ,h\U/7 j D j G+xUN  T &j2i!4:LFXC(yms"0m"I lOcX ,  ? vm3ba"1x'=f&~[T1 Gn fX,/q. D_9 ,*V Q^ 1.n_o j h8r H|  Wa_cyC frvMVF^ y$&%*(2?  &(=CtLa 8 9{ _1 4Pf"+mtNzs;. v'{_NE!}ZA* V `aUj)w;I]jto RC Fln"g-[xgU P c  b"e^1= ? k \,`@G2  M*/H !-d.,*BR3eM7|a*'h%/M ZJ\ !PU'DWM m2kz8/+T6M)R 0bld#"#aQZ {h&@  v g .0[x} Ta6PT+H%4j"5vuB^PG#s k:Q7p/ n H #.S [}&Gp$rP W~/0J }s1= !r^S-$LIMX^  cD^oo-h O\V?K2jY}L vVfpQ4ct5.Gv SJj &!9ZI ?&VkbDO' x0dRxmntzPb G| ny~ C+ttF? w85.OICXyzX>$tAdFg+(,J@R _ > M{@0aY7{3>n2@:nE_@CDIMK hwNDJcc6tSi2'GBJ4)L *_aT}-j_QeDs{fz&.Ln(v$;\G-*S`;EGin?0c{JMdEu/8&,cD[K`pll,\::  i RygHGQjLH9GL# @8T v>6~?C&gfEL`\R s9jx#3/AWT uC~ B23E"J,4n]b:*gj" W\Fybvum3.kVn J<(T, ( 2%cWY&x*}.3XZ",wS\Ea;vwfX/y]F2@J !  W(f&Vq7VlJ 3*g 6Y:W4X W7|DMYu &Y ! 6. F00v\G?_9eA B vZ$^IN pI(Yk9af  &RVN{FDA ~SG(5icS ` XW 53V- B% # 5]"4D; u[}i12yzr?{M2_]Kw4}HQ?8WcK }%D>Vmxe) c0ef'pFM6 `+q]]q{X4 |coe6 w'5 JOk^@T2aI0&p I-J=]CCT>9@q uMR#3 z7iYj  XT@T`y0E 0 S*+#kEz 15z5VvIgXiD 0# U/% FFG%58 _TW=BZ8\Q h2e.W+j h'3&%E225i6tAXT3S Aa 3,{Mm^7AZp PlI.Jh;A01L e@Y_Cqa{bX$tmoH&;Zx<73*X5S!Jc)ZG[l4.Umg& 67&v3UI! ;Z16;x>'d_n!yQ7StCrtCs__wCka]f iv; u 3 q*=E}:a)si2H%%,|1o5YViQWU3_r ylfw,HxֈEB ":R Ay |K L'm _U o | 6Vqj` k4#A?I#e `s u ;{hq38MN  "}nY.G(2SKE/  .Ei\y;llPkpzwTZ:A_%?bOVW3("Y8$GKOU4V yHWMgp55i0"#7rn+C&(8mn&;q?HN J f Ym$D{zY,&);ShCt(E! 7/<6'ye&fPtQl^  t%Y >%eFO&fgpqYr1'JK)H xNrCYGj@? y  LcEllqZfZH!\"BEA"g;m}RrEC=}FXHg{.71*< ; \uNhpl;h3rri93[B&xn `TBpv@3-a}p V @ * v `gP&tM`C'~R~{~k-V"eS:~Nu_fT!M2'a My k wNr.j&?. Ss/>@p}h"wL6;]+]]_{4p<dv ou> M FM,S~`kjunKIi{|rrVc H'kFqfs9Yw 1^<52RX;>.)+D!.  wg8|E Bmpj  ,4-)ocRRpgNZ BC+wr<[*% ^ =&v*8!OPBYr5H*OO ] V=9M'j4fA> eM){RnU ; p.q* Jr~/TxV.WzE,b bXE du Wr]8K# q M9OTZ |6bImx[T:A)^o4q i  o o* Lae~I%{Z-^R}-? x EoToX Uc-Ntvw821cL'+z{#m" b $C2D5_Qa*0>=HgU ,p8bM =M~i6=_TMMyH@p #8h:"t n& %D(mu4ryp>uZ( HH/N-u2UprV;F\z834)=Hu , pw2^@nY5P\ !9#qvja3,^"|?Tzl8G~q(\  !,x* $Zmu>6pyR\6#GS7M:*;Q+IKEmw}N\\T -zhj?}zGd_T(nY&3hR\939jrjP0'N\+ @[lvt7hMfe09Q\5Y_L[Etl>G. r/.@ 2]<,.c Uj\4 |O. Qh?H<tf S 1j ^NJ S  c_ hA 1| rT` v +e34B <,Pib  !{1 G m)CyL] (Z o<89 @vJc \/ 2p ^2pm9]"%@  9bQu}aX f J q >O a W qW $P%% )P} +6sZ b "Y "K 9Yoz$w m i j@ } hQUw % ') NZ Ux2) &f _T6t8s2TUi >\c3t \Y _v 1* .|l5?K379 #B Zs]R @%)%lBMW6 imH|- A^k ' ?C]  atL5 l/j ]@m[-  dB3 |f[2  ~!`Le\ L/>Io `D ,< 5f dQq ,VecpOS f z u; lH _3p\{  {C>f G x( WKx&. ^ ^& I [ia x {bzO:E.g#x]BDs,IA*;u*Ic7MDFqbnu~!o0Yfz!F  W< W{]:iM]:5"$Px~p9Kf)-l# k6A#/yM<#sp*i<y"{I^\4ANGg6g?\8p4-9L=Q `A{kb:Us 4d1S!~TDG7|B%#Mrg~_OR0RddPt; {Pvt5@*eD'-jTxZpAC"7 ]uOK {E#&Y,/WE=vaPeCh}\cSQ$l*ap)H]u/>E=kZP>6A\[ : !NTO{Vy(p?y'sFgeI$(FM]a/897m[&cxi7xve qx}xSx?B~;H_xDL0f$@dr@g8A.P#a?!Pq \ N()[J JNN`l`@>9/1 x5,UF.:!29KP:XJ^?rO$>-En%J Gp% r3Sl^16u9m-,GPUr?C;<j{ vZW.c4)_-u.(s hxm&o@iq]]aG8;"fJ'S0;^N'~V ~DhM-K%x+%. @XA,`cc=rcQjwk=\CUujgOx#WDmq`"&sSp/giZqIIj&ep na) H im0` Cu1Yi.yq3f Z&6@f>zV!Rr4U9n#} 5; A~}5Q.@[ugKh}L"<+Z}Q V<(kr:l@ ;gLP3vdD%i ; +Ps Z & 14"?%'9AwM X\'W .e?etKW!RNhb*5m2$Nf # U P - )%)4kI%wn E^+ne9+ 39(5,"->J!|1 7 o8kq {`j0r79,hk}YNvz Lbblt!YE/kBl_CXc Rc7KJ1W\y|:1b6\lg;m ?%5NnJ-g [_5D aJMz~,3C&A#sF% j L;S1HL_KIvr51j3mkdF]K1.K@Nb%2y93U("Z;dHo ,qO_""}p #r!  \eJr |SRk 9 yc)cC;d6CMe.,.Gk2TVEzCEG(d}Sbf+}gf=~i8 \7m= e,)qx9tVt9_xK;/dI9(&1[tZxG*t`x\"L=yq]MIAF^wn -#|kVl%GsKnhtP=v>4~|[yD|Ykd>BFf)SY_Z;H0.F`L! gnzP|Vc}AN6dBmrrUwnjc$3z8RwxT0qzxlMC7Q"jdM{Avp\XLHF &b#~k#+dLl} %9bd+Il,)]R;>)B1S}QjxF=x4 am1-A Li=eu2`'C' !4DF2Je>nc jfkH{%EGKX._dN'|0L. bD]hmXAg9 6" o-z\1 s24]1=)J?/S$f=Fbw29fk}}U%,qEJ\W_j]g!X1}]k ^%Hsk[Qq 7H  ;v[*6Cl68:s$acTXF k ]@GqrP{iU 2R77e/|N(-_#UC.>=Wn5O\NG{n(J|];e3]YOp;gwc BwCAZ_YK}] ' 1^MwW>US^Q _.yQAo\/VLwo%syG_- *s4<VsGY wM$2()9V&,MS("~5=[+6K_tf`>-g@fTy%~R[~8a :MUVe`Cx-1Ft=S0c _(X(mu8#h38NkN4(r -(g8\rI{093$7Ya"JsV,h@,v8{q!wUcqwxoA+RYSQF{ CO `@$kqd8ADAEQ~iz^iptQ=l l_St#_ ;aKyw uH.nN@Y?lh3Q\J0$;5DJKV%-$1A^EGJ&g, p, Sm^GQ A@{MN?j;FId8~Ak!Vd!x{R>{?3. WH e B | {+8SF7Qr2|6*/9I!I-{NVN%'//8]fH >E"At#: asP$.>;J$jv; A->}B`eNC0 o/C5,]d-~RyXt*CCn#^f2|LkDdpt|5Kyc m3 IGaJK?el Dg0H?KRn!k'$^( ;2$^yHw(4ty,h4$&hV2?C#O7J+z,J5 '-6.R@U>12 _N*&8+M7}{A"GGg^!,f~&+xB#J BQv#P=${ @-V8}2xv4:d [e_}cw wi{ *Y K|z*C mFnk1`4hJ{m0X2hl<(hM0@Qc{-N* O]IoUei;%plEG(HZ&y"gA_D!m av0SLcA$iZjR]-a  w)m04ki\A 8J(OD \T{O0* LmTH`U'&/8&rV .M|_\}j:(."GQKb]5rA 6o*W3eioFt,N$ fO:)j-m w_N_w>jTraJ [w kVEwuP!$=.:YbWtgptVPslMC {:]]ZG=1EIX#.jH-HksN\"{u%[jSBp%oF \VYpSF_FK_ yi0 Nlj'-49x(s}n.KHc|kuFKrl&6!9|qAwu=F#fr$_\V}6}fIH8X,d;hg$3T t9*w#fO~DE\34ZbcFg-eNmx/F@ H&,1edE.|YC7>U?n,bnlzj1f aXhlwAhF8U7suEzN3G*U/D &wO YCEbJ_t<BY]l|pm~6sYM9vHHj;A eR~]>IXuv{Zeuv\t[`px 3*.C(RbY.-bVM>1j]f{{\ekNp0Q}^sC'@ffaj!|szy{^xG;h[G%/9DLv 7X/mT3}N?wSoj}qy~{`R gD@0++pO,nK$~k@uM]cmensP`XHkw`]  M-XT#*6,hkWjdhsVqcw(bKsFw<b3;m$hAB Uo}y|Iw]iIGzo2f`FRK]mM|} }3U"m{KI{YkG#|BkT-h_8C >\4 / FT}\uIP} p|Y]p1_D];:\9s[N X' ]%PWc@^ _'`cSnl$' ?Lo~$\ mdd_zP2+ 6n  }mMcw8sf/kgR:&NJ7k!Z2TsɊ1"(!ޝ)z" ޿ -T;&h I TspXy Q RdP]x1 z uYYyGsFx vtjXY$(] 9';>G!f x6~0كg+ 3;`%{i0z#     E}[7o^{Xp4I*T:7Y}:2b83&a"WI NvZL<X!U|Ln'Gf3`X>A6C 7Om!m1` SB&[ r&1k4{,| D?|JH;TJXv jAxNf(+Ch>88w[D5Kyo &O~Ω?GK0 {J F'KC M x.w;%Tr-@\;YU=GH@A t (7sш[ + " WaHMj< 6Vd{B eoQrj!}'SJ-fIGE qn:FW'xGVns( C M jR*J> ISojbH wl9wXLGz K5Fo#]GRh!   j9s 8(  Y$] n~Z[wFGUVZ,{{>  GB^V6+$F0 1>Outi^2pi?9[Glv~"t{Z%D+K;x #KC:  qS)Ed)5Gx6o #T g { %W=HUjMK*f5 G$@6Ce:A]ml's/@{(h_g 1OyKHan63B-BTO ;ARG  'gX\ M\Q1G:`| lk64qI3|@PL#!R;Z tO'r ( lfZ*6^$>)C{p0QXLf[~=K.k- Z.G1^"hr Ml]%2ptuFi? ^pZJqRNf+ 2en*L%z^c7-$[`X<Ii96S&^6UCUa;@,<r4B* vSQ*-zqo/;&)+*>^ _B!xZjWKm8>.$Q'!*Y-D" (u)LawzTK@0V;LN@ Q@0@vHX ?)a4vl&kywk w>;Q)NX L- wt <Q_*3p6X &cd')WF2-sJ=`y{@4>FUF&Q +IBO CFv~C?*h7kfwF bLX>~kh hnT!1 K!mEwjmfuw_A-fHq|>Y%)&hM_y1[^yeb]=c0#`e7 Ynb@Ks&C2EnYt2S&Gc`nE6Y-u6g J 0E(M5{l@!al1qNNbj,a,@%wo$a>^ *ul>ZoZPuDehPx[RK1Ja :o$J=;9Y|cE}#.eC78CRP~!Twcq/i-v>w~(>Y]\tWRDx\rh`svuT+oct>Fu"nfdTyyUvTh(C~++3'a mUmQA"2QO5.(8O0>x[$M50H]f1.f{$ 8|2!l)={E-g"**JVa%@d,h%]- " VW;kHxDGH4Y${z3Xq;&UuOF4W%T IgIcVT4  ' N6vsh&c bvGDvie pzt6:ov`6*f_-a./!:"nm)!,?*U p &kvW" iUlOH.Zj1\^a. W;IB{8E!h]~E/~lS^}ae B +!18?s\:[b=&Y6" Uc.k=~>YO :6b9, 5}]DU-c&&qw-e*0w{}sXmCg( 0&m!O Zj\V!B{(|I"FSg-M ! ` u}98yb9LkZxuNR?;h6,u q^rK?]OePrw ==C6  )KkNsgOk1f8eC8[j^l-i9e#6 uk! R   t 8/ o+WO]\'bgVom]4dpz>/Zh&MT93g%AX  2gzR%qj?Y%d3Zj+'&`?d a]=fXWH 0n;J}qc}3=~Nouk/N!zxU-7u @lP]XyjA';5DT;I=Dn*JWUn :dljGb768"Wcv7/HO`msKh <%q[Q blL rqv=({y/T]6XXu;Jr@g>^'|i-GwU3I#_HAYl4%N2^$h.2!{2$;/BH[0ydS2b7*StM~HKA.Jg fU  ~]-{hi25D{/ee/+p< ;s q>gH[s 5Oz}^tJZ!_-b[]B'<yY8ex+e!3nL#^g=m;. >"?%Q`a-^ r\@ U:fg>|-/ 5<0 ,#"L@:PSN066Gw=Gb`C8K#Sc *?[\f# |  G H+3 uvf(OD.LGW0<H\LT2_c9'""<W&<f!d150-R=DS`<M Si@F0Wi1h4,Y^pR8r:M r r Y\sA ;@fAlws /{sE )&B_.M*eZyg Vk,sNAnLz,w)f r K T=0)m[.Z\d~?E;M'~n|dt=5 Y.'E{D}s2` ?V\4e@E9_0- ;_!Qz]a~w>0L} zFO,WkDw"bqdx<esEk@Zm[;?&Bz [EM7[JrE0Mrlbd-]N^S(:c\N;V/ 73w.4 Qs}`Zd!#VoYQvLnq%Py{?HXy<)OW2.7kgg/b;_ ^mf)G[mO,j7LdBs:*2&88lI?VVMSzMO "+bYQ+ HsS88?!;'VS)22>zv9CY7s[+ 1eIZ}T j)a'Iq7>Bg&~yIUh./w/X<$R(kBk[&]`PkkJR'Q _=`:>6~m#gC8;3c!|2 qX3$F!c,% u$?P 3 sZWt7EY1&7z-'^|SEH_=!l4lY&:Zr$"8N:XD8- 9? ~>2&Gm89s>YTY-M^4Su)}0iOp9^]~r2a\| "vRI+g$=},4A63*`#MDY8$'&el5qxJkPK|i;5D J?^ed{_r5YU[9HQc0VZHa_r BiXr  k1B@ L wkZ4SC97ZEfYT8"%Fw"AuyGWB~_ pIIY'W"*zw:.rC'Sq_}6C:;Wuuc[=6#2PJz95#?n+ufJ NYlvn+zZ?z TQx 49/)ViT#Wrr6M c+;2n$vk(AR=51^{*oUv;21Y/DY  HFa9/w[Fnyb }L}Rid#fN=~bw>L/ u(].M%^ zBTG2{p^W4{i$TgCRB*5|F={6T 9!H`y{nqmg|os%)g5&U SpJHREe1{_c-r66% pe>-I&/ 8*wbFcw Si}N> TD9 =C28UIEa|6x0Orz|_ prpuEhsiFW<5[B#p<nkycpvU'A6BnBj$?:o`qUQ|}Px]ku6]8o0n+}QTDwd !unR|3P_H?$" +$8M {f?Ow_qgxZDric;keSb4u{m3)7 ).sg0_jr.Az$IXyRpzOZjKpTTw.4E8)9h:?bS%)D"`pN`Y=CuA5["QX9QA`4dG~ AF%iM0z[\ 6{eM?^Lzoayr^^z&e}q@^e_s]b LPE3nlht@$y;t7o|BnM{]8lT}ZRQg oY,Ig5^NV EgZRehf 'vz"?Rxea_5HRxQUBrcmu|rVdfedBWfBACbjXg_lc~\k+q ]L(R<6u[d0}8NwaXQTHl(wrDLvz{e:((O~U9NArDk?a:q;\lN1^DwaDO%= Phce>+mRAi`qm2^zaY]=2-ctswM$$0A.HlO>lFqOhuDv~yl|hljD4}dyHgxfsQ6=OW5#|fAdhx{79?C3m:CzgY|Fzkwcl^~,0H-0B*H7 B)]&v\xwU-LHx}uzD%w J .7~fm'(l.'Q_ uQFz`wkH*TjJNn(90.d?6 bDa=:M5pf;Jb"=dsrV6\6s::UH`I^8m5x|G+M9r||ZoJ8 )[6QymNay?@<41c6o.h=;gX7'4\E,b-'rZ>E*Byneqt|w  Q_i]&z5\o? ]cpnT3L @L$4U\4G8.Kws[_Y]u-$e0>YZZT3aaa}lcyu{.h:HD/^P nGdZQ(,FKV \P2c&Fm{~#?[N{iP&>&0\hgd{skOehwnnZy)5x"#[_C@;WkSzfd4[UEI=b|=hn Fbpbwa3{an%(MSP?6szvtmw_jZ^rma$UJ/JS3X@FMRA}[\M?oUciGPvXRH{Ss)ow-1bv^V$eoAlwq Kx?:-Q\pLWGuoqRMnYu$V#h>D8ILoO65[kzAbwv ^E)"mnPRZ@nrVzssrx[fN|ryQI(B)Q-Y%0NLog/3 P keXVRd$KG 5^eY0"GLU_^^mi_/$Q;U+@Tq:3qa_cjk&PtSTiSac^HnFMTSSQC9X[E)0#xErMtugllafbVY`~?>=AUa`0xzRKaF6^tlruxlWw215FvU ;atw@85,R.'HmMHG"BN:~)D$)AW-f|_re_s]QP2M4N:kyrktZuwg\s]m/N14[ob`Kgyd )-<':DY%-3QksO ]: A%R7!LA@o+qwu}`qxy/WOuiX;VOC bfb89Ru4"WeJDwxtBNUw-5omk3'B XO6&:uFberIx^]a}stjihhrK6HfeQT<dYjTZ&?jp52( 5>=kxfLL6~lydTe/ &>(;_,kBn?nmnLrpbc}wz}n~a{x[/<&)%[3^&{{;:k,b'7 / d_10L% 'BgxBSMgK|%Mlx`AVPZJ~dzlZtodX8Lmjvq{Mei$^AVu,$&gTty]=m7uPprKKztwC !)'Nd?$uif_{Gu|jy_Jc~jUv8Q>H-KM5!= ]RlQM nl>cys|0oJpa<)"RB&`*`=Mdk(ikwn[ilsYg}s?ccj!j$msol7_mvYwp>q1 6E =EgI)(CHhbsu|VOgqwdloO'S[UmVb=p}lT %QJ z{mB*]sb^PZqYdnK]@h~'87='2U7T+E+=?c$4|ieL`vzS1i8'c3 04$ iozBx_PNSGNe On%$~Y9Me*k]O8iVqn}|.*qg*5{y4l `j&VI)_sOC$)YX 'Kr^<cS9k\~{I-*}8519S"[8BwW|{sC6p\^>c^5,82BJly=NsW[{ DhD'+ e`kOumK}z~vqzrme}ZTIvLSsRHp\:79;.sy}K]dsq}I^tEhpzYFvelaA$BTJ4 Oh2iT:KrhdyvJc]k^|qz,&IS=s&u' K%rztcZdoK[]Bkyf;{psen3{$Y&63' #U85|KW{gm}{eZ$E'`1+@ "S/# GaIuuGzoUg!:~6jjmN?k`IS <Im~BE#/w:/8syaVq{aygZREXYYqT 1n.}zLT{\p[HroCfmrIk3DVosg?x!@&C"fg]WNf`i=d7[V5F_;g3&. hbxhRCs\#tc5d@gDL;|=IF`;2'B>X:"v&i!8`(,bm{Q{iza^c`^E>H&?.Ueyl4zA@+oC>Y8:2*{C:11Mg[kHw}Sz^DB"]iJPQHxk{O~q] j}t?Rypt|k?s;Ua^VeYr}i5dx12}ajbTXoh[r#%2+;AmNtl\7lxb]UTjv~[dclq}pt}9,]!(~`]EawmeoHH{SS]M7]wnBcjOd'Fmqne,=&[]fF(:IUwBR]6taDyhxbi}^HWLYZPM8:s3aJ# 8N qMnkUj|X_Ipgry}u =/+ yiC%qCor^O|tqsn8e]pqt{|un^uaLI2lC$= MV^c_d{y?>h3d -ty^"_xB,:k=TlE5 M1etu{{vvy[!p5r4Vq@?:rC,/&,{Sznlfb2>r)[tdS}O+Aa 4pa`{% V:2j4 }UlCikyb`'|u0/m,[D\oj(0=/iyf_sRV`;Ml^Pko=j5{>W=wmo$& A /8&05Ch\3aXyvii$o mNKTfX9f[~%621!T3/qFWBnMHh?EwY}KSwdX. % `nS";EesdmND`{lNx_qKkP E_F15!|7roqlQ\/FWgcprk2xh~Cs{6 z'Id(fajgZni}lvVNQ5iGQX$F~8-5 %cHTpsJcQDg([OdF@fj>ysV1=TSqe%acnwwtKsUfl{wn78F6lmBbz:`A4Io+N|Q8[37z:i9,LMi+'d{D|{ku{W|y;-MP/,O?GikU+}EhlK]}at-SGPuaKXylotO2wj}Cdbd>dPcjpviaY]n`v,OTG=IS)@"a}xzw`aVjOo4*F ;^QJX^yo% 6 M\2[WSMurs^]rV6sc4/q@/3Zb RRfzl^oxYb6YfEf8?C2RpuZKjqVmw 3!-JF*ON-pywLbwVo^0)_Hn;1] &eND(  yyh[`ZY0'CF[<&@QPXN\OR).dvsl)Q5?W=W\evU{ZH{k]C{H\a4&{t]rnj[X;}`%R6tS;,NELZn5>]xvvU#(&;iMh!=^@=Gx6RztiV^ihOkJjs;5n|wcm5ITUD uYgDD'D?hs@X2LHy]OxXn D= ]H(pNisp}y_y\zfxB`z0Uc_:N!61wC@|F`@vwaEZY]zZ]oCDNSk{",1r;e1aUEzvUNmi%L|}qzphpYjG(x JJaHH0+%iXjuj#06m}T5M$Vb6nNSw<xbhK(}FNWF;Ev2,\!kf[LE*~d&vE=1 [Sh1S yMeb wlxKY$Wvj}|PdT zn?gi]7Q21ZT1N^k>dy"uoi{6gVZ:2v @YpEYX`lR,#OkP}eu 6!6:4IG2SsiWd](m}<dU+~lh[ .:eHW, >O' JrqW]zmy\r^dU^[VcXXuxAs|70(9N[R*%Q]V<vn;KR=v av0 }^5*4!5xx[moxI?roLB[YfbOZ`^ZTjR>*K;MCafY7Hx|MyBPp{ym]h~rh\F/fXPb/ !I${fu[CevBEQaIN=Ib9gfZh QI*I'0hBsy&cqvdH^kAHujW5mghmIb}?y[z\>9tID)r!W!aj~bLo4:*]wIhwes(ECJ'DvaRMnhyhaAz 5@h,dII"]9TRpK2pQBjV`q%4=0$[zthq[YrN?Mo0,_dl\; !5 r;C^\H,1' W 4hDl;9!#]34:.e;XWc8eYiwb$ >HN:{.eSEGm\b.61b  @n)GpCILEaGk/m5 g9o3GLB_dB0kP''l./o maxu&jF-%|_XWt@bYD6g6T~d=iw67\wSB cb.^n7_g<6ahpRaAp `< Y@[g=@'D"ERqa2hxH~P[7.$S  c;Ae:YyH`h.&KuR?]uml z[nVP-5 x)g! W1I[3. }GqVkB(!!=Jq(PA 7[|{'l9tRkkBeB^Z[s`!  2<,&F0I?LL (`'pkBGHEr t "7f,?/nEt\tRBfTRn " XasDR@x1(Q5%c'12=i +m{P0:iKJl[[z7n#=krPG?Jr 1xDAystOX|-nI#\;.XvP!lGK%_ 1"/j7OH g; Wk Y9 #ڙot+8@-zMz 1$]Sp;|Wy6$3C_#z`ئMH? RӪ^]3l>\.- P[ߙe M\ z Qg1( (IVUec/(GoKIڂk&i!I$P6 W_OS7'Q=JcWo3E^8\cIz!D>0 ) > 4$TlZ#N#g>& Y*Pm  "EJ;- ?99'`%qe"Ŵ a 1C>/Bfc&#O ^$jsGF`<Vybu0Wj0I<|K |ÿv T65Kޜkڴ 9cQ"*$'zF TWX2 (1`tYItF %X(qRO9۴x8&a-=P%= 8>1oN5e/[G d,^~:2|FyEprX4lPIeM֌ t'"U'mn By W!a| z : `B|jEk!d0YP$8r ?Gjev9c{dM u$" {dd  f p$ c9 ;5]G6 k0r q5}mB=HzpMU4NNF .l*00 7.7QO L4 3_<:x {x30-$}&jZ c  M4 %D"S> \ hytyCrqwB =u,A 6Պ *['#+%H LmzP^4;; { "w!<NA1x'P3$.v g-Q]ijwU7  V1 ) AϴA \7 | r~ Hq 1  /!+Thp SYWBQb g s)jOi. ~{h(~"m Zߧ LQ 1 ]"~&hj%^2:iw#G+QHs % cz: P "*% ~XB mq3E' F {2${P &y:]K({W ` CUK|H8UDslo Y-;'}-(O١nW W)D(Sv  !qG  9~(a;rT_'p[4l]+9\#񴒻}0f ?s%I."C`_m#? #sV0o S -> I?V=7&}D8A(E!Pq6_sf,Q% JiK%bQf]Y -#)\ B B G pe  `X|K)xK }^k v\Dǣ 2"0"'M<3fRPfݗf  + DNy 8BST~'WxS L 5 uq,*"r #,9&g ["t<  jn13 R  <UBal+#).|VZn #ķg '&<tךВz7wGddT Azy'Gx%\\_W)Wnd]t1zea}2 m"Jo>͟ zRZ H" a B!V<2LujO}DR5f>R0|^"865i V#({ @ Z*Bt _% ]c2>2,N$L6p3G >JYf gC W:!' t~ԞZX#9 E_7/@ "Qp ~ pl~'Ǹն 8'8! :Ζ_G[h Gx0 2v Y ]_eF " 2$O0l6778[Q{X%*M%>Ы6=mO$sB.  t= ^&s hJPo r,E0y9XiiX"o  9!z* E-ѐ%\C<xV7t O g U >6* W$Zwe*lk 5q}#a4?zGoai &(!IAս* ihd *."7  ?JM'=tv ,xLU0sl -{~wd"ʵn UM$&-W{'G  ` .A \MvL6 m'{I!U|>: }͜\ ++%Wۜ׾2 E s TO p  y@f H  1NP:#Q| 0 &JyC%%ȧiu db#,&+ۅ(f !hst -[%SZ._ 'R`(tKnS@EoL`+7U +޸0[3 "*5[rvQ?NI ", oj6",)&'X:'2:Q L33)4p- ^&foz;dԓ|Y u3( J.=/p? |N.UA 6fD_:JXd3t\v%W;xwc0T];] D^%&r(#73R 5Itx lJUI1 Udr0#&}dXN}3&>[ +T+O%R * u1g`Q % VME1u}gDk8^e_<\rlXRVY8=N~:&O"rTcl& b  T#FQ3(KV~_L/uA_]V57 Oy<x+{& g6=H  % _@d$Jwd RqdX1hN2 ~ޡ8. x+pR`v*D2$a`rH Tw"/\=TW-h&fTU@<]A@Nz+$ jYG~ )JK)OGa{,atjZmf fSN u%x$OU 3m)g$]a   G+fr?6 ZuC nN$PFV,SO(`J}?5Hx r9 | vOXfhg +, c+OK+ ;}= RG|-n+,VC"8Fضb@8 7 0h^^F LcVC[%@ HhR`Z.4=TGG D6@X M\YN&gVZFj(p Hr>" C( Z `lM=^u?t|cCHW^g3Q*isc {   I[1    q::*me=Blg[-(*iM7kA2 pj@mINM#  } ?]OClZ5|1z76UB *}R=)DJHE-3fu!+NO. n wu Z@U Z"=Ph I$|^@KksT*]MfgE&;mUxf j]ot |{ @W x we&u=/^Zq|*f- C y^VXKlhn c03|y O Y0h!"ik_2 r [ k  ( sB~(MpfF8o*?mX++cYx_;D'8Z~5X|z l4u[ZI [FIugrFZQ2"w@F0}t}uP2OY@|XwT0u isDxE]xo  #U,!h d4gkY#d0y."[4W@rB<NH|h@XR9^SKRb4dTRr$>WKOOTg nH4  %S5=pO5+cR?,Gf fU Q,^(ym`MK=${K|>~6l)xyTT;=HM%S`.r>Xi#X|N3Zid)^FGE{Fr&z2ISV;n|72_N{!(E>tzbXA{dG x:Z)fEj_*JEy1?u}8PZCA( hhps;eft!0),RUGq*V'4u-wwYF(u5:Ps_i}%8'2=8 V~YOc(NpyF.=JM.QzfvRlq J,hGN$\tY_0d b{*T/ /jX8!<#{VCpbj :plHK!SIt /3&iY0\Qv9\n^/C$( CtRj}i >gy))@MJet9]BC hd#vsH7|6v0_\~M /Gb_>{kO\@dnA3 x#BTj#DA ]uMu>lm)mu0 iX7pBiMdiv%<\O-pj:SRP cRWj1k2]5ZN qU8i!wdhRJ%U}UOO=[:D|Bqz_2o+.UUfx~~F(^ekrb *56RBl t *._g'K+Y\&!Re,Fk wW).}7(nDskSQ'FYxnPP$_RPx%1klYqKm>,B{*jJDs7k5D@xSf_e\*#+Z^7+[h}g;9@*DiqH?F*8p=dc=?XEx ; > / S 0o$TzCHY]v1tHgc,V [?x]+D$HQ%j#)Ye}TM7 T)${/ +| Ibj \g'@ Ru# MoN]B5M |,<#R(J% } So%ty, l MDq,<4] !"05H'"kG3/-DBMhoE`/ I \\"1b?L<ybp=&)Zn )]"nkDFZ7u2V 7 ? 3{cv3XaE[T HtNgx:gR+ 6%y O{D#zRc8 | q< h n<HN;]6ic* re N. $ G:} i0yUm, m a!R`J}qVPAxx!U6( k \ kuzK` $     4dlC0-reV_ Wj8 $ L I K f xVv~,9fm2Q: wr#EJL_mW$QL%l1P h O ~3]XP9] Z15=dP $7G)a !5~HT24 &J 7 !H `/T tS%p|R3`T)\  f wxl;Avk!I R]l .@`\ 8 #< _P r V 3 vy6Rt+qhX~w S4"b2R&$Jd56YL{?UN"W;*2yl~ YU=c@K='IY=g=1E: l ,! Pd (_ { g] H3! w;.93\pO)AP!,@" e3" D  V "e 7`OuHKh>F1[$=7"W^QC~ 5_X   TT=;ugziqHJSPF!b>o+(d3]HKzVfx#$  * k$xt:kGi>Ny 3 r>=F )`k *L,$6/_N>zN ]> +t +i 6 '>6WO a(Of7-R*b"9 N @Cnq5 ^80k"xrNMcm a s  4x>] $=aXtci{cC58qR%!.,  r]|+Ts58 / . vzE;oN | % }12D]~aEQBi 7Qa u y91,& yuw M8  e I3H  Q$kt; #p.f<;{igHN99)#'(AkX M  '~o<   f .M%lg=M`$28X67%m;?2Gv   %a }q FYSM `=%zjO8AG~p3%VR "c)ۢ: >Bl21 ZjM{ *  87IX=4 T2$6Q;sR9c([J jfU8ޞP jgyXh C "^nr$Y3Er47`![gCeN_Lw9 ky {ab@X(o [|1 N  '~fF\.*e'1v,U+ NSDfwR V}Ι[ &* aKS9 W9  K J= + WC ;%9,"?+GYln nR /7 3Y ?ݷ* {e~f/ n b 2 ,m++$~[8S#Kon3v0Xݟθ0/|  *ٲs0 &_:d  ov&"U&a"$-Ts.8,^Oo : 9,9 -. K c  VuYhd F Tkl%qd<V}aA!.,[(?C|) *'9;w+mc۹$ WYR>{ z  RJ[3Li?U9&tqO= V8n9ͱ(S6=k =h$I#3}Dj~W\8 f] Y0J pd/GL<=V =s )_L04%n9115 U"׬M  6CisMe\g/l"+>b^={\?\W1O[?6݊ /'k01 P*2ߕ! V xp'_0 $f l(&i >V{n>.Z% hOLdXkσ31+Y ^[f2 X F5[,A+A=g@D! >  zE  hs+Sp._f 81D=veSV| *8(@HVT;W߻LFMG$3hg Tl{BxXxl  'l# cG3 >pD[VTcb('x  rq W;Gu7O p:  {h._R 80< 5Z&Չl%;$ y*U]vj ^  UM {  !_=d D n$DM{OY ('! [fjUX 5)6by S  RJgIs wQ bn| OxJ3[" mk t  X0"][  w'-\ {Px^1YTLY=9S m?iF}BwO w  N &O x(xv2Ks 8Y h'!) : G<k kUd]GLvm0'Le& gvhO I}x8 _ n/$dwhL dA =-< Er%7H~71u"!X $Q%fx_!732C{) MNk B Xt  xkz_ hj;kLet%WOC0F kq5Գ _!q Mh 4tgu `~zB  ,L$ 7cr#Rjc J9XN8P{5X /UE &Nq/G b$E|I y\DZ3g'3q@ls(1SkSb@uKi(x2<4(WY|[ F 25*axwpl#$   =_!R g iX EmRBgds hz.} P@7J2#ڱQ < | b}.s _RmM   n#na<  1[DZ6`9C*36N6 CU   bF \ N|fbYF{"  $[:1!fpWHST7Jz:jDY 1>%S UP\H ? m=#87KmRZl54x M k'/&H uOI2CMyR5v3H4>5  :zc#a{P <m w, 3au` }@Tc%M A Nn'?MT7sD` +f*IP< rOkm x  8 a N(btYY)vcPn^NoT:'d!"3e   A $X^ 1[V{T X qgX Via%*,Q+\(mYF w 6 ' +S~ 2gdc$Qv_%oD'N7O2**Tzhy^eG#!p1r A/ #^"^ PJ ~]5#d`0Db v<d RuQB-[_Y9CTDKfi hS!_/$"U";7 n g]U5@f&k42PxF?0V"43> ugg#|oyGdU*+QV_{hX.Ue\'n+${" nxYQ7Jsnya8=A9:aO-XX  3rJ=bd{aON#wy6x *9"5AH2E;OEb@-8y!&D)H nh r~px#gB]?=Zz#'rAR`"Y+M"qAHK0 5x[y\8 59TVFv|P7l.C*D;n7\BcH0/DsN="]sf{^:r}>0dds 7}W /#H9BkOYU-|/@_j_a?'sW'5j' =Dc[@>cy4y!tlSfy1ARB _UU2&:uZ P[Wyg("Y9]c>}`ntO"q/b0^oyh~JA6- zn)Z==#b+p`5*M?a30q@-q]n3B:Ei=M%f,ERLVz:SQFw";yBOAYWSw3drk9;(vV8{nJLpWno)iMlfa>.t_N [Jo_Shhghn P<W;DC :`fH[A$@oI8k~/wjAX$  *"0wfkd`7Hwk=(9Jc{4.KAkQ'w`? ] )l d}SAr8KK; > y3t8t aL6y4UJ*wwL "t5<> Dzx~dXTnFD 55[&5' 508"p9\O}A\ Y*$#8n'_*nH.uHnw z !IBEk>].S`EJ6uMG/.vnzG pE@L[! fuJ}Z~e+Rz6 4[_KpO-wCXG!<E)V5F+EWc?G\M+U|42-rT'Mf Ac )@uu7g^MP=bJBh"Ap^SwhF.+D>H@c=o.fu<Ty`1nGh*1K&Fs^_Rw k'LMWnj77w tt3 #94o__J? ~# ^xkxcWwVJ D.S%7u%!A}%#x-?`+!wHTmNAStg PVzK;=F5! 7'0Y[`VE,m 1LUQOL [O4V.;Cz.Mx0A]. Y+p\q\UEwPC3 e v~FSdxy ht(=%_wmovkZs-VS.,+Es}-#'!4 _H7%i<s<>X4;O]U?~yIT*D3X)IS'"r[cFpygEZEw5oWErZbGBI/H=|&T"keA( V:^C&zf1 2K-)"KWHMS"Lt[&IruS :6h6\L]AppO~3 ne&w;0$\' )2a5l ` hR.Bt]23}!~rVS\"yw,s][=Qnot!B!|XjlbW{T guV7jBIfmV(}K7 /_SWIn,IJ19k8P^2}dfO=SJ@9Nv_NJA-37s-CH_?fvlYQwTlL\Z*c)L`U)(AB aeG{T$SLvZo%<cz^=e{` 0!)S=@$dxS<9NTkQut?u/AhSbA#?u]~kD*dNxd\kW}sDnSpe}`grphhU,ocfSG&u_t1P{jaG~n4!zqWb^XYbkn5TU:kKncX/aa)  ~#V~/Th}}ayn}}%q2px~7A1JAYZA#TFRomjhU?aeVnTiqn+'%`.D&fwU=>LiF,oUa;l~lMtrj_UN@[#zaVRciv"PGVb]\OfmYpm0!ALcPo{` /!"" SH O>WNb]u48,5! jS<?bYEz|PJd::I}3sy9` 'PYGK2ltQA)?6$Yf@B16p9xgyp )x%i5#C W_sq%vSCx) =WJXh;   z+ QO}5 e2.Y*)eL+)`4NX>0^X Ki4]Ll z#z@ f u TwC:y09/S#?n.jǤUAO  u8!"h) 7O {S-##P;;/%. YXj Y!rœ o"cPJ 8 d> 4Yh^C;+EL^CYH|EZ(DG~'gC `  x  1N> ?mtxGd5Z9,E$qGJޢFY&Z pq$Pc#usI/Qwr 6O`'-dy E]\(-&+{!}wX9S| S0d 68=t):t+?-hf(Bwv}bHQYHv_q[ 'VZ $ 9". JL<D:Y>2c` 4p1+a?@%JB ( n8^ XRe41L|0.61&4<A zp~P*  Mfrp`u"e|/v<kz( :(M d"M %G%[DSJq#C&dsg;rws\:'Ae k{[6][~8a;Gi%i0W %!o * N34ApF hR2I;C!+W2%PQ<EmcLh(=*#/@;/FuX@#v/2  $$,^߱^>bab& _ *v+kH(3Br9'@ -/7Jk fk4tU22b8p{i~8=%6"Q[ -432]Jw& 6fsW ZsN :.0I2N#W$g& e |i}` 4)Cxhw[.C4s@ b 6wX' I g_ Y'2DIAXkyrI K.m{ e k X &   3e  ZU '~h=:&G}%uDTSec=a I]A FC:=#g 1 s+ sM< +x;5i.(8a)B;UT|oHv&A d s dO55<1+9>[|!r?fA/ieL(`B7/ %f D  v-C9Q}sFEP'Tc'7j :o (wOR'T+QG,\ y  I'D=Ga70 Hxg|3a*v \\QB xh mKw X g 4<hM5"XBr"z(W1y^1e#Bc 7o nXQqa%j1w0(kj[fc((X q-4K ' JDJ:k.<'#:fO x`lP&x()q' 'J]!-0 b+%'Rpi[TL%l8O8 !hM 3.b) a< Z^ujr,1R ^ y m\S}\wC ke ?)Y4y//1z<|! &? xvz - N *jC#vIj / ?l>x_pGk,3^ U3^I Fr/fߓ:h۪% b   |]r x@ IEG 5zL@{,g8:Pm"u/-)?  7!m,42 / k r` 23 X1N@7!DC`DY) Q ֐ \TQD0uJ)TN 2 2 2bFl{LEVi, "> [?V'vh'5O Y4 Ngya}Q78 * Zk;8\l(n(v2) @-| 6 5LWُo#9B=! EM=0hve~ e ~neAgH]5F:#&B- -F I0 o \ k$wKVe]# %" (U>wk ]s{Q)7@D/k' #UB lCbfUk g o 5&[q}6$S- V3""C1V8\M7 +'+nrC $_ztd-r35p  |<r5K#3`GGrOy7 42X4sUP $  ?&. -x > Z^ OthosfV7B#:\&PS5,d80< D4^N] 5 p M v\ ] i. T14od'mbWc4==nk+e' ]GrH y_8^r   $a~/ /doqaRi,Hh 41(!,u+} D+QPN1oK]%j&\@E /T{&%H C_  E )b.co(2%77sT>x  BeJ 5v gq~9D' WBVt="  rt7/M Ix.@(Ln+MN,~24  e r|Yb$ G g7cl'  RDgX;x UNCe:\ (%E] s |^-} N|L?HHRX  } G 3x., ~$ "rKh2z|Fi S M 4OQ& 2 l   u /)Fqw9Z FWR,AV_( (tm* `0 XzpL ~  1og _OSB7/m mwL'N wU R5C =2:'C 50 ?Dwj/XAk8T4 Xr T \ jPJ Z~-  U   r lXG'hi!:RU *m8;w.xJ!D?=>  %5 Sw v thAE22@/u _% 98  o0.$ ab#a  PSWpu>s Mpb C# au {27\Gg' 1< Y iaFMf .=h5B Z2e b7W 9m85J :9K#] !7tbx =_/jm/0 COd 1_ E!  L& Q  ;> yL V"p- t53#tW>k DP|G2+/Ru> 4j;gyYNeqycf].a\I+ [}D4Q@\X~0=aH}vaq=uX#]g*s_#$tG^7atNy@ }} br8Y" $)`U kKEmN (z B 0m%E?X Kh= #r =q|@x>q~rp.K#8FvkkPVejD2 OxCF 3 ?{;&=m l~Q ' + J.l` 5Ete# kva1*.WTAgT,Zc 7  -/{@#.Ro2g( A ,$ 2  jd8 bHNxl>'$ G ` ]lI5~:NC[nf+W_{e]}.^'3sXtCeq'm  \ -yas l^:c~FN '+ V + !$%o @o[I!@Ps d N$EIbIsJM/<Ir>K2 >zyKo%3kw`|  JQ3NKmP{+uT`_= &[ SAKZT^"C zpvRY$YVN%GT*s_Ci$;Lvdc_ZE!vO  u  =a xk/)deynUE=&] k l  Z.0}p*rhCIS/I@@ :o;^i LDv zr6HWHt<Xv0tpNi-,_M, a M | ` g@q-_D7FQR8+aF ~p$]dt!Ly P.n(5Bq+}oa ]   I3e-Cs6~{<iuLB_4. &NgXw. qidVoCW <#L  > *h0b] l0~=jcd$&- CF.]yu GuZ@ RA  $k - gJ#'( &q~!Aus69ytu!|;iVr Rs=whxlM e*tjnq^ wZBTirDW{W~@LbZU]rJm!G8)q$`m$[QK@\u=5H?Iu;|l(D$`QPpe+rK-|04@0 u fnz_1&]:63H(g:oJBVOjTtCHptb51^ N:)Cq:F^Yr+{JOo3Qpr_N`&z8VprAMp. 2S2UOi(\%21Mm$J7o]0vm!hph0$6 }NZsnwuD60 <"3B)n,k]T!s Dl$(QP0?H\ JI }{}HP jBC:*elHs}QZB62iFl9Z!m wXcim//~HFv4> t;r G? x#<,V$>, p,Z Wki6^5@D_-)aet4R%v#iDaXM)`.;x4b@!]/ "d$/ y(A |T]',G _i 'g'[Y5r6e%5>`+zZFW|U``BW|7?~& LaYK +>F$ #g LjZ=^`S@JVuEbB>H5>Je,P;%]RK*E-$FZ{<$9xPa &.s GP2#8P u+};9X,Q3- 7>#Z >V tH T ff * xWA(aGi*H, IB{ p >hf  epAEC(W<qfdsk *k6"/=~h-q=WBbP S y{ :tTMG 2 u= SDwJ!C m>G_8?a .tW=YQ Xp4N@W: ~-hBH}gCoVP[<w tp]"H)w|^HptC51G\AhTQfT ( YwFU:uf3~P `" z!U1w 0e4P o{ %K7>oUsQa- H,6y5El^p }z PNE ,ng>-,w) ' ^ md W fX` 1 r[6~#BWS C @  my? *u'ggiY3F?{kI9)fM1+ e:?Ef|[$`G0cYz6PjXom+yXf&DG/EApF K702/~},hqg%!/ ,-u_8z8=?~>9iM9Jfm){H&F'^/ rB+ nXd!xt!s2lFV-x I7e0X#3j=Dn$iW-$"=i *%IGYCkDdK6[K'zt79~[b[+<2k..)PaRMC0:p%Gwd=fbtqP2DW'|H&0~.,AF*UB_ey7>JqB`d]:V pK|ow4w&`~` nhn8L  6=XF~J^7 1`SF?cUP g{3YS]h1 ;"O&l"3.i 7Q4OkR,|;@RIg% h"DIr;~F_ i,`  V$ v@fBKnt'jk\s1k-v]>j)tzN.@WqrH0Dv TFvkg$mP(T-|Qo% ('4u]iI@@g3@YjnE8&\md{<\|(9N[XEN^*W 8B)$%&wAeX)/| \Y* ttG6pTX~"$ C&Ce-11"(r*/!mTae)CY BawEd1P2Dm `#O5$ yL# .EC<^$sy7(0N@sYo& 0o:8]BBO?X{!'!~WK*zp,?\?+"q8"}gv<(Q@vvy(Zr8{:!$- WHJqQp?@sp<< g{Dx36`wd~s!'aZx / a^M$z)Sov oby1DkMCqF=/X/B]Gz }u( q'fQVsxdjG!5[GW 3~ >h]f< Q/m[#1'd|(upiI_9<!&u[,o  6] h S/\  ;iz>Ka|,p4x3On7ln&.-)ՏpS% 7$dhc 5 #Q K8_ 9yIzGg.jG,u$ Nc FD *5hCW|re pPM^ KQ3Q–G )X.`K]3}I[ N q9, TQHWYtdVCetFK tP7_o)1IF&T{ (7hP` -H5*^wFf^91z%Y'%N^r ( ?\ f Km wS!xC\7?Q4{oN2@)L lE" OM ii9@xY(x.vyk4 V < T,r[mGx> v5*fH:#>2ެ IK. g|J46)azjU&3&Jf2z9eZV , n2Vd8.gJGIE%tJ/+"b6< ]  2:Yi/))3*D"ub"+# +|,D r< ,g{4C@_K81  +-[34(?tvl98  t q2ha~Et IOx /A `BrQ7 hTH5d>H ~=!a7-ZJ=V VlCM(2 cnR`x %Sz'x2*m7ah7e0JYJ.}|N}y*bY{X"hPn{ AaKk&[..;4$yZ[VE;J]0JMlkn=Y|Sn!~I\TA|*GDEjRQF5_w*u<t"]%TZ {=l9PxulNgDzB@ot,~e"CV'4C[[Ksmpi'+ ]C3d$x@~a@}L:4pDN/9)ciWIdE cP2IA{ w`:@DT`4 ax &>lMh)u& R@?Q0LM|%'+6KAS 2( 6odj]S@N :8?W cgFjM Ecr[U@(rR]h\x1h9A4#Qwo +-W)d`OBhqW\Bxq1   iL d s1aU\/ Al!#/ n{fO8{Ul j A {  =y(c4$LAN>Kmt^R o 51;+ m]ol E MXe4]> hv;~ PS]T*AA :[H99 !wLBzHaE /!Fm)$'  [1]|s a  4@aC oEM]#n(?>Qp)&p^'^ 6q.4R0L12)2H ~    &:|G t K'$ [ 'EY_ b&1nP:(G:/~ucM".Y %icM FHrzmH ('wi\ P ( ' L fKL}6aovDVpd>[F'P!"vp tO/ Z^j^po5- FX*W(UN GzREMv {?^KQ{;5EIXD׽ s Fepo U#jt0mA 7 H NrU&@/gsr{;5^T(yjqW ?X#M ~\ y, x- $wyJ  I:^2)J!XS8jaE@nri85 t/ ("25,cd:n &O (c h%b ` +fbu r* XI arڿ}H-;Մ SxC "/  fx 8 ^E= 2 1B.vj`G JObW Y6gCηh J4#=a_2uvYycU zif;  s*eGL107h< t<:  *cB oYhOV@<&/sr >& a `|qzw W;m =2?uM & +,_zU-  HjiZp {EW6f@{rz ""b(1 _SK,@( WF +SBh4DGC F {1!kt 'Db  Z r<1^Y:&TH3d'R!  zJ!E& Q<ff7L2nhasA|F  d,;>QA XA"l1w7i1=RsPwmWePKq}bHJk(Ym@67c86.G b(kjzNk =l!0I|I]DNP?j[$q Qw%9 HX8JaB0&K&DrB"Fy_e LQ Q0aLr.nIB 8I!q8mq TPkUs p+,b}c9<llH0x@{%usi.`F0|t<G*dR;1!OKT76, >mi sR^+g9]7~>`p"~@Wt7bac;okUF ]% O>^8*LZaqhFy7} /wkMy>~_8)r^.II%E-#nd ov,,Yvb-(5u,:e /zkfM-cK?5pH@] "\U9L34XrOQ|[QXm1>!UJ TPXhJ; WT-gv77E '~abLtVd.|ZN4Ctk[!i h>fwntgpL%yZH5kwE'5>iY1T`kb)X^aw B}mxYR^@p~D@uU5G%-"Bl(J  Uu)DV@ReGTT:.B4+k)V#a9fPVblB+6 )W" b8@ l{TA|j>X@|@5: @ 6\Y)5U6>C& ;H  R; ]ddR;wznm(fn'$mc V}=^RUN J| &+-D+i1]d6QN/].Ws/j0@Gy7+ #U-') -&5(zkr(xy[ahh_Mu#  s ||T/|yaDnR^9&_<S7^;YM;h{:zZ0bpZK \3 N>g yIqr)g,1 6~yW AQ " OEGA^`>4 *g)gC-en7^, .3N1zET7T op/;Qe>mWC 'pG ~cXJQqt,*#EkR0df*-d[NXD/Wj{o+#3U,1n}Gun SQt~t6wYTb95b\/z R*[ }r*em`F<o-k-hF*CV\\3p<&`^"Gw4G9I=7>zOc \xlw|ZJ @Vj.oX3Fh:8BCezK-ASVO/by0ui@7!kT Yt}'@V-wo`16vhu"mt=4Yg^*S#GJOi337se ry[)bMd/FJ=Hs5Dnu_)u] X?GXK*ez1,.A}~'wMgc\t{39d|jywj5lVu] 7q$*3vLWpg,~#Ga=lXGCHZL[JVC~Z -aq`A}uCT{8&PY\>D4 CwBm%P ){C}U@@]p8Vv-z:I zpaxzD>g~!0sY5s*24 (uiU:w%9;^G?V!/'^3EnAV+iPy~JfR4>;CU nJ4'+X "}[42'n*@2@p${QCV'M{Lq2gBKL8Ep`q:F$L!: *7xo2<.+P\ A?#%S.6W0@#f/^':yh BKfWt WI*+.w/)W+ l,uW"nm1 L$/0"-*4)+cd9 i P{G1&|N4 I K1#? $ r)~ zAi4 M"+}* v("w&2 z& Xtan|)*w1w9QgA&e~& *W +ګ >(#U \L~z1 H}$PCv'Y^oL1VVAu,HY((%1z9{ j" h !&j P 8hIB7NVlc|Ytj h0k%1J6BM1.#;z'!+  b R M / Z_  0mTS@0}ZXg)X$gYQ' .Bp,@%A h Z/\`vF8:xh,"WU)&d~ec* h#qvp . &O#Da1_y#>3(q &qYہj0 / !2 ;LS-?2]}azMt&T\&&- #9+ e C X=A(6&>vM?75Q/tcRWtPok)'E x^R.]DPwO L('&c$ @|~Fj1C')y(JXI\dj c 1-8I Q&]JaLy4(,VMP>mM # 1%9<sa'bQJA^YtrD tTpw~M:}eD*6mPGd( f(|/%\g@KrR ,|b0 4 B 5%2J28b a ^"UtqV& 4e K+.s$B3G,q .N+0yF[g<[. A z(M k!T0 )  ^(~"uRKrY.]-%.Dr?alzX7X)U-,:}/{d *`%4J|xKr: eo F"< R /lFO/9%O %, Gys /' $]"J&Mv  G )fBMx&zr E[yVoG[3@D/kFMvi 0Wj# j$V|[ t1)L1oo0? F8c5st'bzA9"u J3 i,m\y6y!{U51W9Uoxd~m=v.d" p0-hve3&SQb4V?4~ }7j\}kXE2=  x%b>$62S=b|KM,qgC"nPAJx%lWi?8*Jl$r*O33pQ*hzW=&C$Z)eXP}2\c z-l55xVt2u Z4G.mMmRbEoR>M,]{;$.hw 6` jhe@.Krue@h8Ay/,MUvq+Nfn2D>1YX[zC %XDY=Ur<[pTMy=x{fF}U@f0dq z!JoN 0b<)dgH .aa~EqjQ{+_S!0HP736 ?e1nk*z&x"_ *\ 7 f xE|`b "r  w k3QQ<Fczh'H5*) STݓc(- /k Wj,b5?X VY#%Ysh$Dd2#Q oB2q.1\W!; IMy  t gtVzV k4 /7( iakle7?P$2f/R VMZq&3 ? )^rz[@GI z P`RTzN2 : m Y&a cX[ NBQH ] S Fh3L~t T 3d m;c*fmj v ?]Pa_<DpX@Fe M3L& _!$6$8 b&;iKw8/[7 Da YrWe +-O).Bn@> KC%WC#+>p>Wߙ T fkDE([[Z%@O y RALt]=(T-Q7Fe:g6FN #PM |!R i1  tP BR$ D7U VKe  a LFv7LO:1UcJ30? ))7۬XOd 1 @ :Jq% } tsB\ hYL6~HT<.E[8(] RY   O x ;<'1I%PF2uA?qQ nSSoI\$B?YK ho[`a6Xw~ ߼d Fg} !@o . A[P+8O=E&EGu W| L@]#c'DkXBR - nf $lL Zp D{k7 sb K-+,d5lm>F-$=CHBh6 0A1&'Df \"m ;? 6C B WCPZ* &oL1.accvfJ`IV(2oXy9B܊t>*VFtj  m1BzN`~7#H Wr$gUCxF'@No @ZTWc )8@kOR/ 1 7*9  EK ^ 7sB$$;gzt-+:=-&NRxB  ~- HcO T k 0h~ ,8'zQ 0)(tiCM t7}:`*y4G s!_=t f vpfz4Fj)44;a2 3S^ s$I>n/|vV!1?/u< Oee Im+IIdo0>A=i!"u4h J #q x  e` +!FJq9?4N j H (rXW1SxlQlY:[IsQ6"##+OR # @C * 2 1v ?^u0q Nto6vNrh>*,N2/n2 ( ~ A #(zR jtwZs 1n"*)CXIx-ABo gABI1S !z' + @ X `r~SD- $!WE|jfiDJY h Ln9x/S34E R1ff6-"&fl >] 4 0 ty6rL/2PXZ>foOTqjzDhB r}fk.xZ? k`MOyA9`Ma3n~"bhZ)6'N> )yh~V* o E1#}q[d) DLfRL$Fea v?fo)pC`^V>ob[T/I \L [lQb=U% -Ks +2df/[rb+quX|2  y@\{M*%@X>m=jd<R} 8ZO$m; C9-`U5  u. Le5flr+;i;AiM9h"'@W4rQna\7>X,/T = N<>!bPIO45IUo"P7+z]b 6 8]&uFDliux<m _FWG(/WE{Muk}c0NymQjkX,RQ{H71N\;dGd>a?nmE)Vt^;<]KCP&VL(d.j0Eg7cT,SPci/}xWa[AOT1jiTXGYL JD*fR9Lca,taN]^.gp4dt;0" ,%V "B7?ojf7O=EEM*=_RQ' #W9k`Gho_VnvySFeDu/?>,k-$^2%d, C49 `lbw5^vBNHHu+dx_Um1Zx/z )WH?L eN~6=M,5pW_X+ 9! 'gQz*2|N{{wlIAuzWz15< A8AKNBf|Q -YT:'0b0E5PUUK%ID66 ZvO +N;>H~R]<{Dx04D1Gs+$dwjlsWn =5?an/*m4c]-iO3n~e>-$ mH9s9];B74 -% \ wtt?|Yod`ieI)o mKxkZ=I`Y=^pX+MsiP|r~}Fe9-1G Na2hQ &=Ux.tI\pb% wrb"+HH9' uzAHF6o !o(uVJBX_>+u@-?2( ^cpZ B{p[B0 5t^JcsW/Ik4[C6rA /!*0@4HI`6eH`5OawZor16p6V/ ^1uBjUHHK_r:,hn%yQ~34]@$0r9Y8`ci`3xw(.c{[kLg!!2ZjvNE 7f/9Q2{s (t\ G(<=! -"sT^; 7b&qgCA= %fA9 a~t {X:p)Cn+b)5FYaOXP]R-/H%NIhLHqO>xt]V n }( !,*]lk wU% foY`Ei&a7*IAfEMg66KTyK[G?*oa8nK2fLCavKf#*k #.?wB YV%gznY>"NwtUM:&|~f;7H*W*Z';ElsA<S24e{Ul[&x3'b ei _P?rRq3p r"TjL[=wP.^z)mw+!@~~I0 S3pWRkk7 eG!}(i: Zdv5Q %Mc 9)bn#_)=IfgJ[*LS_ 0?YmpZ3 SovlAL(!4_JLH~QG -u!"ut i=koW{--L={k=d@RJR5k$"wSYIO}7|`W(eRl# !xBP=ou2((: &A@ "{~"2S$.,Q44uV?('mo}}JLBa?qZzuyQm0""tS+$t3_#$ wd =sx(pXV_-l1RO27=C6m_VL&f:_Jkz+]s~l'-I>AF]4~^U"$44d U_Puj@q W7U7p,sU4)WDU @X. !2n@F]a[svwK9L l,c=Z:I nRv[XRl&w+HBI A89i6 p|eLJ^Mz tt:1S)"ugTMD j_eVe#P 6r3FjsZ}s/cDU0+Qw/ z3BunNkz1&o[iyzDP|*({I,)0$0GYS}V8hPr[gJn13z\6_*}2Jc *hF+ =Tk3&('k T~}'lKS:&[k' [5gbSnV~IPayO=9eR"q_dpf~o \: Fdabr@mg_[=cD19B-@vX!d[,:t\ X XN  )XzKJh~nKbcx\L{Q_h" .mO{I -Y35{UsooG[PWNUPw_cq.<_Qd -> BOMIel^ONt[FCJu/1 W8C/#4JmBKAkPHmc|RglV{gjs}y~>D 95E5!;r`bpxMynV{V$^a\uWlcoVEuF;9LXG=H^B0P1yN/zMyWq`= 6M}?:'ML Zcg0#,O}TkRm" d4/hE. m@}a$AF>7|hh`m 4%4Cx/6lL6 :E`ec.)~R=~Dyu4mka SAf>%jbXB?[mPxDejxjco/:Jsk L )-caN6Jys5#vNI[c `cLeo#Z  1P sH=.>cFS#GZC@\g<B fqiiO@v"d1>5Eb?n>G7q(,gnNXf we&7K5q-z5_^y DN!" }4L/||<>4] ~ ,p AZXS^c*e^Q0=^(wg^?y t *O?M_/{u_ g^ Tw\$$w 9'1$AR(ng>;*1X `"waK l NT_bA 4H~DNZriLGTi bQ<%W1#"W= x %s , -15d=;<wYouX2w`;N7:K^ T @ZyShcjQ el  +KC+$sH/ Hh @W   ] ZW1X~w w#{e <  xdf.6qJ!<*"I$h e4Q1B2$(/B=0U?t/ h8h)y ;7 o5F  D{yI b`623V$ ? r5~' " Z1~<* % lo[[ aI*; = @5j~yng/q(=xdrd?m B94z+)aY ScZ Q 9#  " ~LLz ~4: !t(gaM)NRZ#2}]E](/>& S% 5dV [ W_  V2f_Ju5 ; IXgkK T+'L3 @&uXyQoq"UcM*m%Wgoxh~&d mu' X sD\@Lz |w"v7/{ (M9&#[s0iQ;SJs}$&euMMvl J&/&/ Iv[ctB7"J#23+B p+14$Rxn .{L]#uYUdU<Y I2: p U  A0$F|Inqz+v"K( Xt b$;:j-3Osq! s%P(v}U<~1<K 9l o ];5>?lYqQn3RdBY ZEQ5ucq }xR'&b.38lB!<v0P;XD h=phl7~I (q7rh}T| E8"dߙE;+*.wr;z~2 / Aipgz& a>X.  q9T x)BY1FK1$Ek.k` Z ^ cYpN# ,w <,_=&?i ZH4W;6 iu7-YY'*-#&d4Wc 83<#^$c  $ $KlTbA2O% M;B={TLe|e=L:qTn MQ_oHv5 + x%tL)&-Y"Ed2rt.$x&Wzp%,,#X[8m#f?L6].]AYMDKk)X. t2{]u|kWPw^8~OL:8 bFV4uPcr ^ 6<"2B|ctPI>bMU"uH #e+4@`_r-  ~~[%+|#/e1"j27ft+U5 @Mt}f&$(a= JK3[]- k  & IZ/2z 7`8.6NlLT[_Wp^2fF )Llj  .j{=$,"+g! `{'< pdG_=@`:X~Gr {>PwGB@we|YQW1CEQF<AtHAa89:  #Jh4_y k2*'G\<(<BJ@ 0|_j?x-rtchq|_f^n5b,(q%?CTkT$BEp.bAu^H+9?TXbr!6*~-H3 GY;(Q!rPY }%&jsmmEt;dVx .5 s !U0,$F>+*O uXx (U4[[ Q2 Z`jI$R~o V1 &+.3l!q vUoI 5d!wu t# r.nxlOt!2p;"#:10V4[a q i&|pK tx {,x\0u1(xq~pYn+!%.9A P ap@|x &k\ 4~NE% #u]@%[6R,el5z#uIGBKZ`=U<n h \AMz`M`=f0 anK:Z+x2JLt Xpu!~r?7 D& #HKgE4/< jLtb1S)~w  Q[ rX(d>,q7j%  { 4S~\p 3xx~(2m']VkTfJ0\+zg i T   5 tHECip/ Z_*0eTDN&ZyzB-}l.=BeYo>Ov C Y { Cy;y^Cpqlqe5w%?1&&:Tzhx Rx;.Rzc Vux`Ek_S##SX^[)o{EMA0XQi,s A < P< 6WED3= %`5O;gC {|3'}H(qA0poCd'*7 , Cek l t ?2[cn?&  g5Kfs sQk2z>3EUu -+ jA`(EV` ~!Lri 0 O';x< xU"&rR[?\$6~k 6 5 ?]  F8  O*7>x 456 O)2YT6 ue K/ nrytL1 ;_AAC*n~@ 0"V>( e2  ! 6p K}_U[wsUr pm7bTxz?lf  b !yu9S83.eBGiC7X =;oGT5gS4Ug &  "Z;Jo=4ya'VpEs%"J4D4(wmu{E-'W"DZ# ZF (_q X3\ya1Q.WM;;T#z`Z~AK zo)4E8:i@  hlK\"'{"0+LB`u C@->3:(Bg!R\Z$J&f % + I i&KEC L,TB @8Ay<@m{^bv-dvI':B duo.+ \V%aCXim(\FWEVp`K Fn 8G{d5 Z8/"50?M,ifU'qs g{yz\>tvcBIh d/]]qdO;*Pq+I1.{w?Yq$T0P^t*`_mz3Uf=/N!6S(x57EP.+OB3A*Le0^V[nu$!AjNwgJTtl|URZ"AG.5 %0q GZFgBW=eh-rEW"d@mVur6G,\a3i]J&W(>,%-]7(,(+t=&c)A"/3DvxC@e1XR0)sGi;R7#f-j+rYE{}<|` 3 Fg 'x  6asqP";4?-Qs I W')Yv6+}0D C^W)t.Zdi khx #(/ bh5 6hv0 i@R"wGU V$E 8 Y,3 :2o) is-1p) 0y "* -5 E@ + y$iAir B i0"\ziY2CSWkm0(dGJ++(f4gb6~GY' d-kA>H o!l r?f'wzRKtin2kM=e{M :f8\c'R*F%],l#Q>b[n;)XT3\(KXLi7.}po. M  0YW*mUq _<-6c_o_ge^zTr+;YohA <| Y my`;~ iX} +o<}_Jz>"LD! d W t6 0 6H 2Y7^Ptp{AGG|m&vK,aD PhwOM]I-BM>-n +X\kbI +}0K^Zp dK>`WC(3u+9pu xn,`"?hmp<xXs0/" #lGC J YwF^=tHBEj)L`_&b^HYt&Cl9i*KFn>,A,cZ- &Mzb\;D  nX#L10q( Rm536rg&hjS TD67Y#?GiO&5Lo(2xS!{&I]XX ?mk _*l?jZFLe0  3 @~?/C Hht!ya*xMl691&B)~p s"lez,hRzN\ ZaFr)^Y6!&d3x8Wv" TsK'Emmw4\ \l ImaQ/ HIMWoW iIj<bAtw}\1)/s2qm0uGJ&  ghfP MbU5wFM bly",&1BLsQIy*y\ L,l*> JG VE?,SuYZ yRe6;64.<YDfYL|:WHOPF%v6O5'%2<K"[q'k`z}kKS3&p78?sXQe |)T=4Q$Pvyw R &Q%0}}z 67JgC/6" (S?[$fvXpAT18/`*z h2L(8Qwt"g+7qpiGpb'KBrmJ(<+(4 JSkl.J6}Mc3OE PT55#~# [P xONFi&~/LHn$wbB8B@&?Kk,S4@~Y17gWa{ota4Qd9MyG.G zTA)d\GJt)Shs.ZyYopemd_AmXqJr2i##nO3B  zFCM  j^98f$+hs<%T'JB(l#J{B""#* AbD2xt#mF.1.^_  1Xf[ j-9dsLF EhK#+ ''&#(S;Gl, zqZ8A'&j :(%H>O2x0^gx[yX.4?K(V% -(P0IsNP < p (Q{\6&b  k O'u]-qAiS*  9TSx0f& ?]ms;+#Zn |2&rcRM.W?4H% 7kN$ > Drw[ u-op< g$ J7t/Lu3EqkiK_w@aY.`g("#\ rU cl {>s ZOv\J9 _ 'j]1 s%*kSv! `R4X!H!j" AQ?xAN UCk 4bi4Xsd,8L IP-c]b&sy)]F j " Z;oUP?= . #G]' R-7:zSP\kT563yVb8 vgU7  2 S7Csc^U 9euyK xXucy),N>zm_>z%\ f _ 3y*"WdD:03X(kh]1c1GPEO4e'Ey . 5!pNE#$Ho>]@#K`'T2rHTl2jr_Y  cs+[I-2HQ nbu.XM#"T,2{E~_5{&pADlr;^N~g, Y N  *8Alu/?FfUwi4p.8 ntd8)^?}R&=X #1n|_S J/C >o&f/Z0sBAdL!-$R-EFpUTE}*x6vVMPb,` W=@y Ou}L;vE;x LmX8?b Gb q\t,MPW> t^ If%\q[{  vL+CR Td ~klx Z %Z%ti K rJ)Lr9 G\*/M,*!;_v ~Fg!. kc :E8l`r   ]11`w: ! Ia\8)G+e(4< gc"]) LUz QkT  .?s(o^u/EAA d b"r|4r;^N*(xm(Ls8\ -3bSBh[9 [ &4l7i%IB xRq"(xpCa*1jPW{6 y$ v* [Uj&~a  8eEh:t >  ..IQ 6eH 4(Yfs8 &* vr 3t4ti " _w>tD Z]awu^Tb:5%tg=PlmPz- P{Iqy s`3bteNp Q 8M' yS~,,<F2+"nvE{Eg g #Vx[D [ bl *%cp8:. EE7t; /  8NDN a8F:k}QWg ] Xoiv-IWw8( jse%+@ m8$-x,fdc0=t !u_Sz; 9A U VV`q*\%!o#u2<ojDL?*cz@W8PuCeH2S?6we&#5 fiL>1%YRk0#b0$>?vXrvmt/2|\  pc lNd0 ;o%^U|-,?B!j+ Of{. ??ympCK\mz QV|+K\ %YDM/g) .K-w 5&+' B DK:RR1Ml@4A #tK[+Yj~(a> 8-uW5C2e 5`E^ V&@ `b C X.0!]# 4S?dbOx[A=(K"7)#iY=U &k]`']~VT  Fs[.:.+vjc2>$-\X2upiv.Z|0XJ!o2}87Pc~ 7W H Npl9 ImUs;NDdmBFz;Q /\Ks61e}_0Q O W Dy x| 4>J s{H(3p9 {Hv;OKq]TbmW=[CXARbEn49o[Rrn ] 1 9nP&,uDHqu]a-Vped'5MAsau"~:>:Okjl#/f=Jrh . eD~ O^0PG6-a#XgEk#77&W7,qCu{Pg &jM&2< Jwk4/QPc|"H(U Gv#4=()w/_p4_OZ.#O#2r%?9,%JUj NQq*W, i+OqRq@Id I) j l])+rg6*e. :[@rFO8fMEZ_15<k $(#|xS# 7NP*6yzbl}Mk_l L{ p5Z/wj{ahMfd!d"&wA^}\DkG'YRp`#hW"b4pqrE/|* ZRVv#C\sduS$dSD' UjrMXP< 42)s8,Y_+Y[Z5~4T(%6fXKz:=:n]F*5<5<\1MnSqVGMmO#*1XDT/1{&E0'e,/L:.A>` /; "aj~pM* 6!2TOZk2 VQhh/^\vO$4"CVh;ID.'w)()) dfNv.7V{^!T-6x#F'<k\+*wuLl rSL_Gj# >MvGt)-{*\7sk7:R:sWOj7mr1g@~S;l2">Xk11NV?$%GyhbDDe|7GIk]LCI6 U]?nB HX HHWj^NWfg GCcq5v_gNAkCf-/YRRBl*4+JQvGb ]V'=NG>ee/X>;o1`b%2#.'.yZyN0]7xv0&No8%`:k^ a)eP.Pm$ >Fsg]c0Q~}Of|{W0E!hrq VqBMg_&br|vQDE=t',L PxK'II~{}2C {SQ_ d!U Xl/#1 [TP:}K&#(#]N'(h0C)<=*Ux0K3R.2,\e f@D*oA7`A>>y0I2R8vJ8s70v/L=Iz$/v88$X|rAu e u 118PO; ZPIG(QD:}.FVWKK<#)) v[u<t!NsT]S''Db:ju Y48    \IY{wxAVLi"RI|* m+H, 5v hEWT4NY~eJ"w`22l^iz0 8y_%;5,[ ]b2Tz 4r*S:r|J  pf*U RN ^iV[nlLevffn=Xj oi#]ie !H ' r7f(Zs&r9cnA! +=;fMlHev%M  v4^b.8~%@^7h#Ji*y#3JG|~j qT@+b ( bA&s C7|82U I67@"`R]LM%g]XVtA12w2%v\zfG.XxztXbum@wy-|2 Af3c 8D\$8lyS)[8>|` cL,a6n62= f"'F+W zh4NFrX?a7pB^o2J,J? J'y)Dm:S*tR 1  PN=@O?o+?(v^315~c0-Bq*[E]M5xC  (r K   d /+e)y .XWG6M ,;pQl27%-Ba3Lst\/C^HXW  zV8AdOmfH %<NW|_wME.H]Nu).Uv fay-&GN%@w[Ly>:l@ Gwuy[al/EG!JT3O,V !%j Ch }uZc ~V9dAn|M^'rPJ'RCg (e^ oRZ1K K3}e?dX413zs!D=xY4)*WC t ;umdq2&,,z {X 8sYBf2M. 6<$Q%o$xi96 pCxH mTiDni/{0):+.qp8i)eXfOc^%ls<  g]nfEaq?  %#S1<j!-r*)z+DY`GY-5yMqL@ "QgJ cr9 /#N;XTo*SZ]' |,(KGN>0>P&me\j5/ *5EF|}&c=p.FE]1>~ ~?* >Dl_w c:-s v V\u|Hkl5cW{B`i1PZOQ|b17w6fg9 W1fc V-}uaX<1yK+]* B9pS|D X}/0ZB _:bq!,*6xb]GUXN{;e WcaL?Z'&qV&c!_G52WR5h}]$Rpv =pxVkG 18 c$_$ S66ZM5f?{GyiYC6w{eGZS{(=2!nW18c`-&t?.I, 7-I[ZFK?fU#F_6}"=Y6/7}Y0)t5-> e #SZ 2 ?v'S(GL ]o0_0@w1.e2:Qp(-'j\/=[!N a\.'S+qq!L+ t<6eUO.$6t9k\f=(2aLmp3WvM (wUm0. yQkU%y-O3=qz7.FCe*Z_@RZIi7,~9t$8xTH3{[ ~ "b%]n'9RXh|km>!@7cuK< WW>ZvEqkU.P(XOvYnky9 &C`S3895W@|~PJ7w|| qiR&l})C+:XioGBZy-7 sgT0e&'u_A}pW]rT u&1>~C2TPpbbhOiyuA]uks:@^8f>AGQ83( A4\[ki/jRUxUg%Xb~]Eh"{WB**z~,$Na:_i#T|TwPs={["PQb{2]|*3;Y9+ 'mu`7 .j8E3 h}{H2 OD u_LvmFK0knq- R*"QHW!K' \\yu56H -F 5 I&wu SmI#;|5:<`O NsqB7c^jt({8  3 l^-r2y {7yAU)k< w.SES=;v+Aleu9|Of'Nu3KERkL-|  {!:hY!*(M<]&!S NNQ(t:\27Q7x2]Bw ` L;,[E;5,4b^\d7b5lSm[Do_=h|Ti^R >[2@C ?^#[ve:x3{`L|fVPy}8OWB/CX`Oy*mSM}(GN-A@9@ c rB.mG F*X; t QYby1"8W &1)Kz62BC] ~0 ;/xN U 1N &\>^ ^^ `9RsI J,z` 0pz;1uJ*dNpT B%cV 1>B8f[u`" ) 2,iQzW#2zZ")-}C!LqrC A ^ 0 _@o9s_. (Dl?SoJ#j:W7Wv n(pN {^H PXCM=/d 2 /'P2 V "9}g : ]- J<NyuG]R + X4e+"CrN&!%Fq5 JxI W --rcOuAX;97 HnjCh}O't+ (qJ).)R HmUx %> QQe,# ;z.<_"Z&")2\.U9 r*q$(L3J]:\HO'8_o[xB"^& <cZZo X5JePOe\nHx^3FG!2"&%q9H"?^# o_f) \ Pf(emF?!8EdB~u#R;c{&?NAJ6f -xE i[{e:S0%_t5=a_ i taGM$Qw9d : ] X  h QyCgh TjYB2{,!z Br}nUquriK-`   w _ ?^@V\)M2Q(O*yIC;^(RrMY{ Rb* y L a im{t ~OlQyJ2OI4PAWZ@U!Z$f_c58n  ^AMo &]o}uZ1ysN!1mtJ2 SdtcfC[4.`?.\n05Ez_ZvoNg7sGJ:FUSwQP>;GxRqpQSd!{880cG"iv>*#Myzbsr\oi=-j#NXS**l,Hls cfG,C@ _DQ$)Mgt{[)Pm#JAD XS|o9%a%pbRK@s:]DxXz2r<DAC7EQ<!sg ,%'yz%ob*:<1;Vs!!v='@& B K3?wqdK3uEv"FbOt jy][Gc- Ix1@LD_'}T-wG3xsxXUweM(Q " ^|Q. ]{\ X><(SW^@$W*XfK0@r 3uX[+4d]'`mt8I9G]D .CNt^BP S*.v}-e->K[N'e2n825~b K'P>z@GRDX>,Qzmu,@5EOzx:D+EErj$q8osfuM+TWbV5t3[vu,'5: Q ulH =Nk!n  u~=odTF?\%W]xKK]BpEB ,,j jI %3"#]k! 0HC5h _2Ft,   M&X,0#<@; |n[ 1v0! D V %^I8:b9e:uSmgvmn=; #a8 Q ' O0 @,.  3{T. (Up=|c7 |~~$$g)cgU*?*d#@B QT:[vNqFm8w+ 6a6m[|| cY ~I7kw.HuCy%zVJH6:ESI _ 5#;9cub}y=VIOe}o2 R )m6JSuy9RFJ5?n@ -'0| #REk%9iO*Kw@CB/ C3tu)3ZqN=\t ;H qT|X BL3/o]9!:s,V>q| NAt'os~wo`(fjSQ| }! +t.&^ `Rj=~VP&vULIS0t  `>2 h'I1tR yxt ;x 3T I!C,Xp%.Y2 R| /$RwECuoKk- j ? @P GFDQ#NT&F_QE4B/ :M:k=M;rLG?`9q%O <j/?iY]aM Cb5LiD[Wt93E.MmND*~2"7 Q b [-eq:Ph FoD  $X0&>e~Ru(} q_ `xnUREX42*x2){q"wjGloM9Q/O o N*|Ev-Ef6E X1oI>.G)kU :\@;('/%u)Y&_f$!Gshe9Xg05O~> W r" Fk#FH"Dfa,Q*#5yONl|4'* ;Hr{Fj @EQ_sG%+e5}ig^(+,mNc@ =#&2T < l~@ ^sr#7|B,#O %,g6%!R Y"~.)0#5H Cgv%FQF4kD p)s   WZ>0 0'ky {^2 |$4g/M ]  Czcs%5 :p8~  :tCN9:wf~S^i Hw|:U[: DB^&bqguf_$Fh-O :M 9vOjm_X=Qvn9)?GX%4*nN,mtOes .65Z.!\VI/G&}+31PU|9>V>yA~E4B<-enBR9\VQ v+R]\5Y|AAVAagjl0SSf5}\/.3o17M|8$e~LkDK_'10xsvE'J; Ukl@AVjsgA,"|pE R`ZP hX> u5:GLpEJ@B&#7C 9"- `Y,M0I) :'+r)HR637ug9(!O4&v5"F_ 8f,.DA ScU" U0I6OAj+vPxiZ5S-+Y.[VVl1?o Xb dA 6B&[1Zls")`B?b BIy2}.nh1t= y?0 M4ff4K]aWD5zJE4AG,E{|w~Q]vt ,GA /` (/Z g a @S 1}mcE . ;  &M1E Cz $X + w;u _ Hy@/Y.e2k7P+Ea #bE6kBe8  xEgLPP F O DJkW^? riG^_Fl{:aF?w ooC(DHQt_fMUcb`,d=fj_k*RyN5kaMQcubD'ATJbX x,V`~ "eiy?)lnF,N6\50f6n"6TM>AebA {~ {o]P+L%d?:'=v hRc=M9upE1o_w al&^u3LfOLmzUO+>*)M 6"{dPk29U1y_M,U *p~1yQ{1p  YnRy15 I5 od@D Q@B7G ,v (gFPHrZ guCI)Y.k`iRKn1r%^qPk#f@t||BTD^-0i 1*Om]0zQvRXK4|1 w|e7\xzgah.RftvM&eg?,eYI}UoXbl 8aX 2*<)C xn"f 0R"}kds{:]V~)8q`7(QL fAs!^3U3 X(<lX`-^s ,oK |vd[z3T ` L J6)}>_u k M`%\P, )dKQD}2-H<#VFeSL 4>} a< [foN>8v/  "~ m'HrPx F(Hq?$*{m1ak r3 u)t k v@j R` K ^ I1j\:J @NSx$yH'w`p J%]!&3n`^R  yJs^ Ye)NP/Z.ws>kODVm@e+:ML   b3622w.Al>=R-?z- 9) Sfy6 #&icn^5O=]7zG3Q1pk[T:CH>Z+7 P5?FtBm#E.d62< f?\E0I  CC{h2ci%8V=!c#`[ OSD b0T#S3 K O\ fZNTL8@}-ZA5@2SxcZ nCVGWd/Z?nY!Ecl$vj>BD>;A^tl5NW a*Oa g$y5nP #>+y~M}z:]mSG+#Fz" V ak]uU:s  L,~btp o;j<v:O&-c^L I>%82&7 "  o+\q*  d_zN2h qHKp #Q?( a8}(2)gPfM*a-" /c Wi\b byGs<Yg!QHk UW.XAsGM5I%#[p$ r^Z9KL{ ?z2Pa[yGhiWHk_41qE6?+-_n 7Rg$t2YMhY,{e#/"YYN x@G3pZ^()*gnu5V{ 9NEOTLr%Rf.[3M9Hq"E8" M'rEkMW$vzUndX2G>0@csG>d9?<>Kg=4lc*k_oD#<>|YUMX\`D=smk-+,Uv[ 9B @7[NU:3%}hg#EW8(D6yc\uT^A2:2{0i`f70t#, W7,U+l%4l(Oby>@` \ zDi%8+|L( j]b@ -_O{IRac!B2P=[w L"V{[Rhy8sM8`bd 7y7 _zoz_JtSsY!zpzg*D ` }~Bfh3Xmg-_#gT  2L/*h4zs [M LU1Pa"j.)d1Cam{:Z7XX J3CJY!3Y<p&1@!)&rji\InpFc4~r\\6G[^jPVQ10:ale+%SAWE].Q~xothjq|cU6@ei+xYA.r1- D,k@EE=ZQ:<FcO`oU-z"|\dr<}wU1N[L(Al5!70&IRiNeo t5(\5\82VHCY"hOprML P J,N ud&aLt[pquak~d}rveZr7*8QOI9WJh-.kB' ziD&1 C&egewcXd' N-]7QIncESWwmYl}0a[KBtF/0Kr!':g\F8LyB,)4, ObrIE74Kwwnsm;qb,_JuK]j[MluV4V0Qu*8+l MXhuK[xhvL}s_{VolLuE .1 yz9xzdd#J O81"q^}k*-pEzw K[V G c>YVuVUGB`2cL m "UXs"=_ 8*'{!~gU3qwQ(a^ #hbQ4CLk0xe&rg,jT9"e;f=$ X6%(m\#Sn/G5]) 5_" DgcIw16<V o<  |O|# j R_/<<1=dySW`}V ]-hfN[!{P JEp\ ?^ =_mLD`.[+}wk+"kn;XPK~&N.S4",[mAb#.|  6X @H5_jzaZpx]bLux]*m3rZR<s ejh4 t' 6 'zl.Nv]]i"CmF/laJzcKwMN~n`j2Pou s3f: :  ~gJ YZldp|Op4| JTEPYjT|)l1H P2j!?VY z 0jqmB k%FR{p,E%Pxf59Z;",gga`V>c2>J Tg9#~ `/Q%)O@ `dahkoe @IF_2f!`  RW f $]cj*G+x3*o]D;,M }EJ MGXTq`@q]>:;b f *  ]ALH2w[B DAE9xRM|Bqjc%zx=j!k KT = uKUmW&J}"cQTBNWvEJ M a R+3p#dC6z P 7"<a?~V PqI ^i=*Vx = q@@ptWom-uFGop!* T evop $ [UO_1|txp2Z %_T kr QRbmTax&t_@pkCQz$=y&r  K :ek c_tH>s/#<T|x32UAs1RwG(1? DD"*; C.w |>V jwI]_Gs1gP Z\8~)Zr N7%w ;xkfS^uoVP6 :n. 6 k 3 n Y eQ W U jRl~oq42XIm }t /K--&&.#b /#U }>Fy= .hO% m Fp K&#h[cp fGL' O)YQF6! / * z\!Zf\,eikc>?r Q-N"O7v@ hnt'x ! |XbP.p uscFLp$GI#QX0#1'zf4@| YNO ] m}+e^#lp4-`t qm-wrr+?bD]#Bc{,yt;35N7 E } "~Bd') 9yJWK`<zyc;<\7^hCoDo MA z*tfq6% D38bdfQOnMf& D- )8sAY:o\#vZRV RX+YPHM)h~by|Y[OLw]9}wo4fejj?AU@,RX"Ms{1a4{  5bu4{)QRMlaCJn_oPA]kq^yE4b5zpNPML3LzWU~V|*a; !r@VM&Ym$ C0#[#.#CGcyopjmndW>6nPKh6_!YR]LDlG:zPnj2t? N)+62G<wVOgjgPL2i&CIc6>\oy[V r_F:~~HuzS3quT7?yk\@^@ B#fjn@&"'xsn>`Trn`rJR{L~Nm%) t0fB>H~Unc+wWaxt[|z^?b8` F8-A /|1M#<3EYRel$zY kg, rMn$)t^0j7dKAH: ;Qz]{`l+VyB0d"3E,+[v(if1y A]7G$3v j JLM1uxgRIMr  !"hK0#yq<; q;V9 G|T=0Aod +'x$? Xg/12|kw4gl.= \GsS\w "M5. 3?*rNew;T)" eX<.i,%S1P Fy_j@0 <:iWl U 1IU$%Vt   " 3aqdd&C/jV /#o,`L96a<78G! _.FFk;'DiY%X=B~x=\DMU9i% Wgv"[E^4M-MUg6 )QiDS+[i6Y+(m"5.cUq`WElZus\^R l; 3T5Yhl>D"4odo+QZY=WaMkH!KPFbD#5T2GIgf%^t~mf^#)LK`O,ymK\q^hImnlp{]cJAlPv(:xL2IF?/AWL`jRufeZkUb' 'n_ TYaak7,`ibyJ's{T7Ce.HQI{x>*#, yskLnjjMm\wfu{Iq3[3O9QkcQ|~|E7wxe!/F\(5^2_DKe"T#r:O8R^@45qs_;#_z]6+e" U{cxA /$EUt;^,x2sBMV/=K^k7L!t3hZOg3VQbsV\e#VLFz!6le>..bEQj$! =HC4S"8'%.!CbkmoF Hv*9*O w.~c5lz$V0w979U8MqnU2*if89if;Hp>TO5J)H6xN`idXW#1;M$:R m`#gl2ww CPI~ pPDBN~'LZNcp1n_aTU.CZe\@ !*j'kwIK_ ayW Vt`L'PkT: g>['qV!&(VMs^4:#/4V "vE uPQkkb;xe $!<:!%4ORHQ2z)):m5q j/+F_` nSjvZ1h6 f:uj f>e'+V$$O>i'TgOt@059)V߼y\LO 9p ^ 4]Ml_ $D b a,Wl#A(TH&PFTKw=,Xm<P Pe 2&E(C W#Imx4z>  uW@F %. 5dCE.w _G<'0$5+S 3g ==A7a <mf0Ki n{om"* .._O$?ph%)  S @Jw= 3 1 ^E`%dT/LoCS9 W U\3IM C^) 5 iQ%m>^Rhb$+4/T,k!:*lR&%t9z%^(W>wzK#+_ht 1![gCq>:# n7 fJYz? J/FuQ"d1 ,U50k3)}4!~`gW\!sIiuH%c)Xr p,3pp[2ru/Za Ny99-qDCKQqio1o<fZR bH2o":-BV2)OQz1u"#)Ehk\}zA 6Zo[M>2Wu6u)IcZ}zl^$_,rP`L1|oM)8LC1 R#nY$wns5xGHj*G 6Z{1`qEH2>vM6JIx  &jZ{BYT&.c+P0'~G n  L +V0 h  xB\89wj:w1vJ:7_HQ dp j  hMv&\Q~VIod_G3#`rO?S Q$_:~e3K!)ktikz>OJh*}u`Q})2;}we8 ?hz4(cLD:ROH8Oxn'D' o]d`N2T22@K '<DG,bm}?LKkqS~H`b]GGEbX_+gBA;lcfjJ#WfmL9N\D yBb%U]H-MX/%BW#!]QZq!~ /'2a0Q@LkfcdAOcUk5;#{Z@&WAph@K%%e RPT^}]IAwLyvxNX^WSy 3lR$y^^B"8X6`aXWW}9jO  0f,&#%ETs@%33pw@L8NZgh7-zL2-VP7%LG^]['fi\M_2N$>noOw lWVXps[hdNBjX\Q1l0B|vt=p!`3&dLei(x {d^VSXL]_rgEMu?zkKPJ?Cd]D^yP_KcPrz}Io|?CMo:GJBj/H4/!:%1[Us<}:1O84h;  YT H[o<qgyen51gORhQT?V@f!4+:D1\k9[\G?\-IKC'?5HaNO"S>WaRx}W!X/4l<b2 Q):-I" 2<\6G_rS4Is|v7['raHw {Iu;#x1.C=GDr178J&Mm]*aq}a!g` 0&fe/5908'y?DK "O-)UB4T$m}.Q5i6bky~`|% lwh<  UEJAfu-sOmg[ ?C@EmT~mG]:UxOGsz& $B 8+ mH9 ^_;fN50,Jnc^Xj8szs-V4N9YP= ;!@b }@)  KYz ynL~V5p;41@^C- VVJc uFz+<> /TT+J<"C$$80  =+GEH^I|=P.f." xKJLu&nN+oYK%8j62/w>ME@Z]]u {bR!" 3xOe aCPR? [) ^[+ U/+ M Em}:=A  @H*$ 6q~ <tjhRs|@# $ ao<n* n$u4KR*k /F{vߦBrm cY5<)# m nb:>ng|A* &xEE \i:Da")y l\. G9'f|U _yj { >YDI6b;{ > PNW\E.Ct?@6L! & $VJ3Todv,f$MX+@,{*o,7`#& '16JoUM+@+DWqX}po.#" OA=`wjwU?}2U5OG0yR~/FLGv G '':5 |>m\{0ws  DUf I/l2  gXVY%j=t=@(G /wTwNp=KgAa)hV16$$ azp~_9 h2h`\ZFq8he &6:ceW>=0W9&'hBC|(V00E5}m Sq e V!h={Lb -/x:,0y.I%@t]]N>7EdM#]k>Jg 9<c(Y@J 8Pc\0K1Gl.!9kE AY*tQ.@b463:|GO["xAytQ>7eJ?HN"fqv+w5] iD Gj_~ pn \pb5Lji2Nl^glcpaCY$Ssec(y^@i;Qy_!#urP"9S92DE-p/ae"n,RUco?; Jk/ysa_u|7 bNY, F {1'1Ru`J?qsY@Vy_pV}`n=t}me!7HXSVMk8d`;x1i UAn u{9X p 9 x*SH J9++?r-qdl&/Oq0m%M rTd8,-A;e84 :VBiG17CW3%sri~ bmW% g w8LDBf^o c4QR[-#5+cr6FJ#-ly]e S\%GpF] v3S7{bU2zDK6O:$ ] az%^mq6 P7 D?j?W]]tKP*")cY%W"  1F4 ! )->LX60&bBO8aJZ{ q |GKQ8xQ,_>Y2,B7*  , qiSY.g_4R&zen IIQk,On8W5 8 8k>! Xu?G  ( o\)h Z2q xi!X-dhP  Olez`QFj]O$L! y  *b'p4k5GxzoY*Pn%<QJ08t%wYF|L$0_iiqA!V''["- Nsy# e9%GJg2 vj(V vX 3}r>H&H r`8 s/ * ?X8 A4-:nG=NJ.6%"ZfO;3  J E! Qw:-8achOb[7 oTlAHU/v(5WAb9I*#!Uv2 O "Niq1R4g=t x?MzRW.}?!!, *6Wpc WsH y&wQ7-GU'*W3!Q$QJ_L~(>nC}JeP8s\<o0p(2}&m]J]}blo^ wE<o1*E~0Kb2)4S zaZJ]C{{gp[zi'$QLsA)! *N}3v|!UyAte"K12 B=p xT r(Rk1I% 9FG&jqdr1NYaGO !Ir{Nb^90$78VYwJu\_m,<,Wt)*T Lda Kg'pZ/a^]{F g J*[4tX nNsQ`^d  [K"o2 -ENpq8b bWbg&ty}o.%G4oxbmow_Dx}41 * _<8*t* T tiLOe^RQ{eA`ZtyTXjK~pM|K>EHn"`4%nJ0/XX}9Ruf7@'(/V!YXUzbqc_5z)\ "'2&/6v+#eu~! r+o.:(a9$m?dt)f=}8bR)=V~F'uXFRHR:=]@qaSS%LD>{#*/QA9uRkS`ei_e+$yiaDf$,cz_67<jpL WpyQ$I?MCAWEpDbnO9fm! Y3 |m?"yD<onI~GCR>=TT>sbf. }{EL{vcPv3-QD28) oL;x6{%t0 &vOlYsdngy ?<2 A6Hp8NnF|<BWDxYk}J v$9I:sBLO 8fsZa 4miWqJ7CdY _, !qr&dXws6V !  zoH:jE:9A>,BQ9aJ;R9NUKUDWY)7E^{`7#0 Ah[@ >  ?U i|r]pS_x4W=|U SofQeQH$x  , E@[[ *,Qsg)gKJgos{&[U{.omS{NF5fRd{WhE3L9d m5 wJ{U>d8T>\F#/$Z^V )}eJ=e$SmS0*`5w$0Bx!9mb,qjn>5g)K/hj*Q-G35w%w-X*87*w1Ko3*TMg.ddcx?ggQvA/[W)%W)P.;XF  |LIMKx}H[czjMytb urc^K!0z:@D2tU0VBCV^0OTdsfEmt>Vx_[|NubMGfC/Nj\w.<k tl|'3?_`9uB`erRnrxOi>M7)d2[yYYk_hT~jurdq3-;;S@m'_;l:$yni'{ah*Z7,nKf &f_85C?651P) ) kp5]0,G=H]>Pke//8ig (~&0Y (#wEPCqufvV*P x UoK"r:QA +L\G=P4\%.,A2~zkiqZg *m`f<eo<M8XK/AA2'T{ q`T{z2vd kvC/M".-)~-OJ'Vq{ppZywwO1)i G!)F"&_Ip|eo@JKG*89IUec#KPN$/@!%>I&\}9Z[ZIXw <\ntLdFv{D*[I- E%lRH,mlm?C/k;DAa6c*xraX5\P}J[d/AAen[Bm`UT]hbZU:~AWdru?_:0M:ZrlL #oT 8]]tZz|5upf\_KuhQ/fDokZ#,u, P`g[OI8!+K LM*Xdh!g>?7b9? xub:N)|ED&^l /gaqa3|->ivAfPF P"PE b *&nAYLqrZ,+ 8!Z]bCUedf=td%n~4.* bKm``vs2nhr]f]#S|-" [v #-Gg { ,\ 3r&QA-D d=v|7iap!c::sShLYpZ(X:_<6]m,K@o*P&_nId  - 8$SOF TOk? Q$6#;}66K,I|Q|/)jFfY T; ;  77EMf:75g.X>" LZ=$~fGUhz(|yH_z"'2J, %[?{=g f|G>C%$$ rfTA*HiZ9%j%{xyUw%5pd ?"&t\6!z2,4(E  Ppc e wE+u5Z>Tx> J"v+bSj}t8 ?iB"T P510.j JD Eys| 8 ; zur/H`~[y!A.VQ Y/7d% e (CL[{XkDY}wfbtc7:~99swLurFS};o(0SA 2&,[\JWx6:9;= la|dIM;U#ccnPWZeui9_xWhaVBe9%_q=.s*4fr6(~v}Gzi~[_N2 ;zeb:UaUo'[))Gy#DNgHGG1s]L,Lo% X`4hE1qs#S}y4Z BoPStEejRJGl?c$ucB@ Gjh8 OnQBje}1Vq3M@3" SCV:=( WF`p0Fa_weq:!Eo`-~hgn|6fnjm&Yl_N10J3Ec TWWuC !Ad$$h} J,Q >Sc:t.T[I[8Z06nT;F3aA%]5}m[$x/A=KyH^Uqh2fkJ>N U>1qK V'nqXZw;20^"{J3rt\ 3FDM,]<#_K5xvFs_& +I:JJ9{~s^e>-23: KT4sQ>teIq`91L_od<GW|rOn|)NO%Q:[(l \\Ub S?IJ1_O4p_@1=0BIZ\2xhqP?)s k((IkVqk$9YT9B6,JyNe5+`BNL:0,S1}|%wOd!bTRkAAHvY^-ZEex\t';U#iHYSlS^NWHXJB)LY \%lWrS;TW&"ApV[R+"YwT) 8G;  :*s7-~h.+#3 =m9]wT   7m4E1K*^![{!\t^{HK>95B%x]kHGXaJq2ItV?Yn(LgQ#F)K_}n:Iwk8#1%G&3|G)m!o{L2DU#x` T   z=@VhO$wIlPn{D ["b)BgPJO]nfJ-<03e/$O  V Io)toXau)rKk.:N@\#xS4B3~:9b~ji~Ao  t J Vsq4n#(/P9wni(vC5,_R(9x#4iDW77 > Lt:^9y9 ^vY Mx L:4X9HENGx"uQ.r>.UHtl9^!|$^_2F=Y6m iG&: kd+&BTJE-"k5j,%FzhD$2"*9:+?hd>WEv D \*a":} l*4s Ot$5]L|F|ith$",h( i } mP>Dm"lx?"}BJ_E('ZY`xWzq-Ni%C7gVp1KC5x#=0;_8ztg;J~sE\"%&J>(pu o_YU[YJG # `pF8-Wo5Ymv[yvhjJQS)R\?LT#OE5uu[CE-)E<_=yQk3s8UD'*~#P?(*F@X+xMB|$#*-.F#v_YpZbxFda'*1XcHiF&Y"* Mv{AU*++3'cqK!Z;5M\alir~J ]9% zj9p2 @F< r<;vW0YO\Q&0_JH- 0<@- ]br8rkhxd L>2)joRC\#a%h[p/ #".6 zKJ%4\e;*]%|yWhH_0Ri8' Ao31,/ZS OokKtb,&#~u/^nLIO\lzzH`t6'0@ylH3\AdlBiy)ibW]C'- z*VVr{*MC-V#3! Uhmz$C `"FG"ftX1|, ~qH-~zyyu2=# /9YO>zNM   = K@g<5(&[N)Cf >^Zg2B&~)ebQq9N,23W3>bdz em FRL%ry9_#t.WFOLvcVL{A SA73~qUA{9e!%w wg6}fa >X4xxhsL<]Op/C#gDFTPW#@'RIe &' ,$[  J;S %m 1/ vzIuZ2jS{4=mEqO{(NEy@-UD6AX6 '"*5 a g*ZYdm + q,c} p#9"O-Ba0(l1weT w65qbNQE{((b ( , ]QbJ ]u+ 8_ 8[0X2fAUA|f+?1%w /B#[!,,*0O* y  U @ " @aC%t C[5 96l:8JH;QZAM,Yw}W ?pzO$uSa"1-{Ms4 C#=s= di!cYNVV6Q- A ~  I :v c M@jl}|X%p#5>'{ }Mf K=\# ~ Wl)0k .AHB6t\` +4~xVaOeMRN pt2(w `s #-2IN .9 q:hN2)lL/YrAJqGrTT7GyNpc>5(~ ZFK|.QUPu< 8 | O >o'`7H74]R V{@#Sz. NEm9vn$'K,HFAX@CZnqEuC  *<, UZ C:N<0T- h Pf,f1PpUR vuiPP(! 0/,$CHJl. ,}_x! u.[6.)D*\.W p:]%ya1ZVu%(>72 t I4%iBG[:X\E1&C=C 0>Z&,1A6ynA:5meOI#a { &f9a e  3sT L k[pO$9BqIWbdd@!#-dE  Fl1$0g= X O2jh*mu z^YZQIw6> 56;#xyQ"s lo  yN&|(& d7x_+_Cn0Ealn^0S&9z2DKq\ [] !B#=H  wy8 ?&p |Ts6#9&+H ;c9g Vm|) 1 fK 7?*FB n(/Ev4e+=3G{2x ~KjM|I?^ayoO0lJcW:)!#U4?$;`zhPqY~ncpsd^Esa=E83;kqaiPmx B1#bi|9}Vf> +4( !z5a'Si Tvpd"}eWTtRm 7{ONq&T:),1) uZtobj8Zd ]{l`&zY&M YGcU58C)^3*LPom%0QbTZ% +y4mqB)FdiC3E,PuT.1|/!LO*XZ6E,&<D@jgtphN[?%atcA2|n{L6-,/k%f6!id_'V_T^=k\nz}PXW }bVM*W}GQ69m"L~=8, 3*]NcGAuQW]`7>%whzi]s! _Ir..*k5hu+po?*3[y/N zkmDTwMr5 *gaMVq/aQ @_[=f9 x D*AA4, :. 7oIj a~ _ {(MB-2>F9j!(Zj qng5e&K=nGnAF5m-JJy!& 2*}g.P/&z{R:i>}AM1xgCkB>@Z&G]KP )`VgK;9C.Xryim`4/at_*dV+c IX<Z{P[bVq io9ZE<!7_hMg{.}Ma&%DL#?arKri5' KqW IK)9F[~JstF!@30a.A5vQ$+S\EK+xObVrFhoI]<{I0 l1P"K8Nu!7DL.rV5#=X5JDwQQ1+zs2 *T5v&nBIC._cvBYi,wkHL/hkq%c]gky%6}{QHt>uMn!7[wJyL!VWTunSRwY 'tJu_Vw-|zSE9)u^( ],z}e Z/'xsyiTEuJtr]|Kb MNCJm1^Vb^/^|s%l#C _|a\=B^Nnm"3817>M@5^Wu:D.mwM/h h WAvuj}C K Asfh\  ):Lk)]<RU@BZ$%:x S-~ i%"7Dts;QQ\H6z /[eY<C<s}Xl_QgUlDi IaY#tnyywE& U|UyZ$'#Een@uurt9[HqGp_vkg!1t wa]y/ztR7H#J4^'!dJNP#55kF >pck'0^J [2'-CE ">NG))0CmrRzi I1z(yTg*h`7 dG Gd +F;9Ete 4b%M&t VHyFz D3b[=BCj\Pv6Czf@qkRhE [<B tj>1 eXfYbI'8Nf#T-n/ t=$ ^`* t /)T: O^# s5 P99QxF\~y3o @xWotr9kIqOyc0CKiRT o1`!N8  />9 '| `TP}+~j}'^[_}ctHK\3 v(tQ;BtmaZ!.9NX eP'? 1)sPl~Dqw u7O =hE? uoB4=dQ 4!UDf3 F ~J ,}l$ O)(V- Z|+CFa b{rtaK)`i^Q]9=#x~`@|0e]*L{",~ar +8+/^( "DptwQI o,#_g0c-tr3o|wQC/ -HD kj*!_,Q>1~RZ2jV! 9s>`EBS- 93.s=| JNZ }p 3Gg*!jJ$ nEv)@sJ1`Mr>"xM>ZI>k^x, 1 6Dz l>h'bEi H(CWwf*PE-pw<) :I[ayk7AZ13 [PSgPyb'Te6 xQ!.,. _u *]hB`Y> UxwDJR);.\Y$Y|5GfTd%fFP$}pXm.PVA:P00vV(hYKreTsly>x@O~ix#Io^7fEa+6pN>j#}Hdy1j1'_n|q#Fu)6#ar}d@sP  ?NC 9d/XOPs1.-Vg&*bH2hq 7T{ns3N.1cM(TkY*B/s2 ttE_8j\]L! f?0 6W#J/dd<C}pZ XpstKH/3l,V@;LPpF96+R=eX!M8Ylvk:T vSlu-[)~, l8/{S(y\9y*& '$gX %!/-T xHA?v0@s)8hy6*KQkx4:4-n@s{\pH$iG8""_hR=k ,!KE8;(I.nX"- V m W" >j,\:6kn (Ql$;z g: |w_W!O6e@}a&Dhl*;*if$:dD oF5GXBT&.fop=4.{{0uL8,XY) 2+xK>c?MC (3/~CNk^0 ~iot_f$2l7ucS1e ?~'.^7 TBjY\b5~ xw\,7*[h( `_(IsO#3l(\~VsZ>WEaeSbcB^Wqr_vpPo?<aG_fiKOX fO8-#wzaK$`X}t#N'8  V {n_fDd|"Ra|mcCG|g@40J?ZhJT'=rIi0]L((c{goD .%bqx;$e267 0ex*k&`' M1LZm gnQ;@Z@L,#oF{O'p2{61-+FQEXxj - 0n[R =Q L i m~AT IK~ kK?}(sl0?#'=K o,Wz*A ] 4V'})f?!ly)*n8[ +m}k  ~.T R:Q  h=^l( t\A](dj2  T^ Xr^~{k2p3;u>[RKL03G*[ tqZ  3 u-mIeTOegs$skdNh}@+6)) /6,y8 &T HlnnJX*E@/WI  wr sv@;x ; 'C(} [g^t,' B K`N- 2p-J;9G#5E% A `zc Uc;a{M " B yWxEFy*=&q9 # pU*.PkB5)oMFGtsVv+ a{[oTEY5$@$: $gQ=*) 2 !Gj:mOS.>U ib\]hj$iS2$  DJ i1umb\\ 6p{G qaYEcc <&1 3X Q:zd (ost i 6GUGQlr|ib@ BV  5  O EOX4Jr~X^Ss6  lz$ V:?f  mhKO(rq-Z3' 3YDEP[80JJ '@H 2 fUH {t Tnj1.P \1`~X,l8`SS>%#UR}Q> ?QD ,0t%z`|2.?$ P ;4zxFgf~HFc &f8a% :1d ,Sb@/63 gh 3LfB!(:!h t# ux);Rgg8o.8J[W z=1OCW(Y 2 s bG9T Hs<sEhyF%%k(EkWk"|`Y,zg 2\ z v/ \jMdKuu]MAm9l  +  \ Pe<A/n tG!a*jM%yyrHf H guTFoG#fHhOYe-d4h]Sy jo bu4Ad  rQ>E7'CM?\= ; \ZBLfO]Wq M-  L lgtt]A$Q  o!3Z(|}Y|Z O#J* K`@n^[ {DguG`)$|(,rzO Su+ pb 1$q+!qv`JBYj4T`#,.h)= K|R 9$ x b w4pM`DRq_O U?F;:g ,^KQ +Z (! ylYI]gw}&G;(BWs?mfZ j &Amp~r]8qknV2%DWy44A An |B{G]VYf5nrV}`e!rHBr @ G7 (w q Fga/7XaL6=v)?Iub*qD>_ : H " 2 6q*`Ms1\L*7JK'uVe]Ns >K}i ,v x oHy=>A;wh"!0 +\-GVC+9K8dgw|& M p c`ZRZ";Sz^$KMLHo88&0xK?5ga@Q/sxJRM^]1:V^7I^o;afxw|;tX9LZRSUR3{ cQvCJ\cv/kQM]!9jt!`Y^L_> D!1HLlT^2 A, 8{a$sW6H: VhqFn>M'9LB67- ~(`jzM^U>}v[K}lxw[o[tzMW_=!L9 Y0*19,H! pK^Imf}}gATd3S}ark^~ F1 $V5,I k}ri_bVKs;|A]U83MgR`OGopL& TXpa`iWI21@=wC&QBbE84tg4ad[#zBD~Wc}P>ex]oub{"sS= |TTLc84U"m6:`_Z\_>SkB|?=$U)s.qkst`s~q}uH 8J 2mj| +QZgs%y m D; vl<7([w$>]/toq'iDp2,x]]P+<ww >-pP]]fT+Rn3is1DLb.X ec$4_=/(W5)jmCM 8 2 A,\rrsJL}$ V( fkI2ZG~cDp0"paQ7`  w q X_~D.E b}x2=F^f1y )r 7l)1V^'J?gH5 7c_&c*yK D< y'|DOC;+dGLM{ $ @ $!jI& \mF6U$L/B;M P&%|k G1I.;[JG 7#"o o4G7V  ? c8CY X+w 1es&5FR5!{ R,Z7޽)CZH0S: ZV H P_y9VT` %=MU OJ6n.cM>7yuajrB! vm P -  }4yYc;;?lJM#heXFisO4   ,'8j aq*%ayP$Sg*r h({ CJ'!hA% N=;-M"u 28#`aj ICE 0;90JS #a@X2*V3 V);C>AU.#/B\HN}qZ'v4 OD y@kْ0  /p QR 7 N" V Id$^"dJ|t<M{*heٯ h p"[AV PL]QC /$em`}AF@h~:V% 8 $5g  `Ps2MhSu7-8FCL0b}J9.9FbY X J T9+ Z7L_Dbn Cz~(VGaT2!) F<<_UKm %#h4 d:L /& Rk ,iIbTfXe.h)a.~bGI'9OSl/ E 4F3 : 7+X4lHNZ1/2rB`fg #pT&kQ#O  oz@{i[ u B 3.p%PnU!} myR5 VP  ;3#+=08GB`jn *R?iV,VJ@Bmy- MkX6]rr1 ; As   MQ( h3?hY ``omXI x^|@9SJ4;1A*J #^<h ~MNYRy6 q7-BRm_r`Q,DFW3&I^WGv3f& !gSfG dQ[Of *8t@0X8#N ute IHU5 !==?W k{)D }-j]k GaN1nXY %LIx5/LA<+F\~M`tmp 1. 3_  T [Y4o&p3FMppCQk KEH+q=:$1Q2] "9:- +,FzZ 6k/zsrts\v<,Y8_Ap9y? 87>y[I /,#?A::&^3yNWil/~Uz !H, c|9 \ 4iC Q u Af2h.2'@+ufni+mBC/E Z>D7B  l I8KSMI <|Me[\h>g(\Mc%W(G>}3-PC+)M8c {e Myy_{#_XYB~j&l{Wj@L6P4YKl)_) n4o/=U8|pZ D6 Zj ,7-~B{/^}ln57R< ng; \o7 =/ 2_^N\ epRFm~}'{ .l]Fu0&<m QAL ?Tn,+(F-.9xNL,"3sRy?g5e} [ o2*\=AL|}p)#5"MtlmNs&T$9/l.Uv PpuR0/ }n>S n.BgRb"]] 2 |V  ~ 7 /Qrg]z_\-r >9MI~*%nr $Z#q n-&*f@_x( 1RxjF 2'P|,@(;JR/Uq+Py*T '! khv> }~I Lrh) JZ4tG8*U *N:lnH,9 %r0_ob )Q[OZ|]H`n= Eep6 } /:07q#z?`@S3x9JL}lt8) $F(6 | h (g~s0 Xl L.*I7U#D[{,wxCu6"vq;;1 LrT?B lx4F/US#GTpx qF|F!R} ^B8 +D1@a), u3o4"0/cZagtcS@F(p)(yvxii!  hD9T2B!Wrh)\W:13t U\5qYsW. -nv,hh Y~BZ5kdbso%*qeml _~}@OT[+g5JU[yR'lJ)wD{AZ. xsd~yK]VNQ* ! [Rqjs`8G^M[ |<~ `Zfj<uLfB[o-Jg8QBEJTP(GzEc[{ Ux! }m rn-CC"@w%g&3wR1BY|QF[. [L&q@iWp  $:r ti B9.A @w]0}f+:B3}&ps>59 f l;\\G#$LA:{2R`S'͌$ ;as%BT j  a xc z wrmm#cKSŒ> D%+BSh _k _ Eb --  5< 6xM m&-œؼW.*-'TO3N%""J ,[67,v/Ji"$7ک p3o5/$M>ج>k o] Y6|ra06Q[]EыC (/+K{imqz - N&Mhd<^MXuh.[enF:" 1$R&!(hxM FZB1g^ &fxerQ \*Be2oH%dQ) 6 u E K 0A {f7#Q 4: -"W3 n6( d0sMR a N\ \Id r g6{Sm'C g :>Aj\& DAjS  3 [(( X4mdm:=% 5 x'5  = oL <\ 9|iOk8v~[ >O1x\\ e5Me R[N+OZ[K   : .XSCU>zVhk>|UXk#&|\ 2)9 / BUwW8qCT0x-DRsi;: ht\(Yxq? F   ( UN&MeV*]g0W8.,! _v  9 /qeO|Fe(io6`G"\X,N7X <g 9  W*V3i,FP6HcLdNsXplD? /- Xc Q.>ceTmO-X mb4NxI.. ;X W` x  F_ hg:]A<.Mh2Lf  / @" sZr&izR1_Qj)V[P+  w d 5 S ?4<Z;!8?d\(Q b;:!\]I%)  ' r% te-UjzgF41LR+?, ]L8 } Y a W  FwI}9.Uuks!{Uj  u  ! r U  z79$0{\*Wbugw6!>=<I: - S jGR1f9-MXR,X.h`t}-< Cn x a / \ .#a )}b}=O#.w \QiY  : gD-w w^q&Zo#xHF%;%r~ p ah  OXb^ ~~<O }=ACZ(y==z?J^T\#@;;; } 6 : \  n YGPJO^sHP)ES_&   3 G YHUxxoGKbC/XS7h o  r vo"0\t !cm7_874 C  L # ;LUB Lr%yHGfZjONNdm70+0 '  =p-Z!4i\O~mw<nJ:Sn;d9-u)W"ky J [ ,/5xu5(tzA CulVtj|y%0  B| c ban{z;K ? diy\>jM N kWp Bo  0  (H~J|mZnw &]=/&3\ARB) u l HCu   !ko<23tRsjptNicZ,"jP|o  T8 N  Y#F@:s%rX( <7_  {q+=qa*r>Co6  W7qy?t4GcwW @Y V |wB|? V }  :9Qg.9i-=ra..XZ 0u   P6,{tSTA\MZT_N e$zKW47{vzWS| 1   0 k~V_ pN G</JC59o2G K9n \  _4n\l NEU(WPD5:]C$[M$% Y m ~ f WV")vI;A1]2So'j)iqjvTiQow; bA4 Z E0g\xEc3=IeSuqcf41T] aDMejkh;MU;M8@={'|w `37rLGxZ :m:z!y}d`/.~=bdC$IU5``R4R]VzvO;5Bg^([s1qM}.:43=J9v'"J*0)0Z3^'~ i|SJ&2 Z&ld/bazt0Q-(_SoS: /`KfB#@B);k@VD`ChL-Mn*=d]Y?qF_ 6 ?J5\VYU)R0__=tSZu.!ak xJVvSnnVI/%.Hv6@X?ec.hNB;W C~x!V@p cfsLa2S9O>q/8!J \oFyZc:=hay<lCkT%Cl0G |3'DR!:lA0AH #znkac I [GCB W ; 2l=\ i UwMyXEc&P%I# '  }'pU6i0Aa>6/ Yf+ S #B: U -4oJgm&=Vk&xB|'C'9 H=5`,t2   ;\lpL-4\F >M*jVIg& #-& y vdYZ4n-bLwoi [/ > s!)]:yI!% i| pnt7*S?+"Ns7 yfP:RGKW,w7  Rl B;7"~[4A }I= ku)gY2G)+*>(  \Sys D xumK@1Z(\?AxaE?$ y Lk6zb^o GE g&w K^Q<  sR g {v U7BE6S !9dT\, 59 eNBJ5<[s#WB E4{,+!lm!C>/. zYA{D}f]y0JLsvq%8m*m/)0{f&iI8!I.:*2#=[OSzA.I   ; _Ti^wD2xh>1eIrLf'L} g=H*O m  h + [ ( /\6B0I1MXGcv%;oRR @u[%!yt s u? D  xyrv4OYCe\ivUzg~_B UztRs Mmd . R lig;SL '7t_SE@A(R[~~W'"A E2C <3F:  B;!t[;p49N' */&\UURkDoOW@ V N? f Z ;9r8_T.*oSQ :WB MK bC. S |F&76 257PrC,jD+z|Is 0  o H!@bf]XW*TD7=KWCoE} P  Qvv%Sda4Q9U1Z/~u:9ztIDB7vhm'U kP C  J N}8-\bvGuO; *1O1mC_/[u3j!_?   ]{~fyI[FyD `wL%]*BAx !aqm ~ .z 'bm&A-} $ O KH+`cc'HBIv| /q ] - -$;-HM&:+.j R1wP2m/9EX6~V "    O! Y>{vcDqI3U DNTn22oR a'f 1f  "N4{[a[7~6h/uWJq*uDV#a^1) U82   l(z  xrb=~Li(a!#076+}K`rh Mxff G3 QU0Z(EJ&-/SpFMd|G.Q3T"V  + w: ]s seoopu-I0!pIB{z!`uD[mM^-@50f    +;_q{4 OIosOW zPV+E_.;#9!4#Md-w i  0 -w Bw__(*rN5{ UDAwk~p0PT6asd9S } l2ws?J>Y`S85LB} # r:5/'\)bH0&.??9  R>{ LTVN.t6 y@8Oy%8Q%DH (niHk\uXtZz3 >v >o%NcP@vbMQJnGeQ_]UUb;s!r= h(@ ~r: O$c%MF /3#r[R??We@:#W;Yy2!& q[)f L#3K5 ]Fi$V2 O rXK_, TmOa}"6l$W\XHlA?+zoMu[dB}DV5Lk&EPk U?>81wl=:Nx-."AkvwM%_OdF/B7-cH*{qD<lk:yQv\QuG4.%nW"BD m?^LL@} 8P?gh'&MS%Q{Y$:gz)lKN\9> y@*.+{4!7og? @2\eha#gYhH^_K75]t@1oKct6xp< LNd,O|SmgYMf/Y tMO>$[rz t bffm 0mR?+Vgo }8 3^2^J_aVV*(vY&1x1px4cDFrp% 8k!q)Qv&Ri{))5u`xt,u!|Jg/;3 5 :uL :I+3 **MD{!tD8~k(4~my k 9g F -mj/1Ia:xoOc_dpiJGf*}{{O`u[  8^t3D\ y=?QK~5  W.e,dX)S y"?d  N fs =-Dk7JGK |y6=a2W LLR@4wmp #atW .~ Sn ZdVlx>u C   etgu n%T\0(a^ j/ #gi jUS 8 nsTku i s&"u9X 6q.L1]e>d:$9$R rHP 5"?  A!K.c]+z -z | A{TQyJ]OdEh./.9t-J AE 0n4{?&q x- $'R3Ye.* L ~q s~ni!UG,S"Hr*>R[$\cE w T_ = t5;R _| TF[5]x)zbCXFp !(:S,o2/:~O 9oD IJ98xF >F ) \I 9TsSOo ['w[+a$+%Q#IZzzR|d-C  S%K^I6  ` Xo!V8]AthL=Z50E)c0 W [N z )S^:n9 / % O'~5i PC+!0x0m lks D-yKJ]bDs NH N*VF|&R@jF-#T(W-V"% ep!mvD ^ r("DP ,Le+tM@1bh@#1]NS# )6F"Mk 4Ys LC[sZ 5 mrL@["x AreEVJ~R!PC%(JxNf] `_jvCT 0 IR| *W}%\u#( U$4X)LD2~F8nJG ]}#sRdvpSH. T m r 8]n>d -^y8SW#b^ Pj\G`  )gch`5) c O.3kJ&'2y/3H71CK?!$w2t N]gB|i hXWB6=I. HMm.DZ?IK/+Id h!< fQEN& % > Q# dTK " <x LLhU?L2+xy9CT );$q%,31i= X> -/` C Z !pmy;pI :5qlBdy`S63# d%J }z d) F,~ -e[hv  G:^*a:A;a% l/'##  -h b } BC=Wl cM y+lSl6 F{/5'99A~K\'8 )'l 9`641iB EQ9)~&UnSMCJ< b3*g5F!ub5zsmn,I `/ EX [uh_@"D9fQw p\\w(G_E?TZ19@ 9T m/  },O^EpSj2(Q8V~ -'J03@g[4 te#e27  p5mJ2J 5zH5H'y0"b "|7\(SEJOK`r?Ko;5Use[0i5Gl$h dC]nNh!{"Nzmiyh.si) ?67*>@}u0  $MyM*Yly9Aw'lw-R:4 q_[F 6h ?7=6#&{8DJLh).Lg/ Awpx\5/ a i &d/lwE^}]{m2 O H!B`K>g 92 {# \ -n{b) l6'yPSqIm{.LPa:0Y@30.&02r8I(yyJ1M Qh^RP7kk?~\~= F\ssFuk*4)be%sB% m{g} hUS%;dpKZ,60p;+\zvNU'| Iw W%T  d% g9uULMIMDz/ G5F;.7Y%JM_uaT6  y:]q$S=cg$FOsI Y*4u"6E 9 ^ f#@<ni/E8N +Z3urE _>/W"Yc+<4:iB eg!gw~lCm25H|$BL;xQ,@t="ek// : *ate 7 c@{[OXZ7d\gq ' mPM EQp%0x_cB\Y:Q[*P;| zCdos dI._{pePL9rlx1A Q : n4s(G4B659+HtgKCt2F|&Ri lFU, f{cHGC pX^/c dGK%g~?h%^$ 4  XgG \e 7"Kq>'AhI |^a |LqY ADWXJ}/tL$)Jg5O d R2xy}D? &crQP  R L7sadk_UJ35 y<"s;2E( h ej Q /Ji;rd>T )=Ly 6n@j] d0`5([_{@6a [tk l$$ C 4A Q uA"QbeS#4A!'"%SFY/6G O5 | .:|X*GoqjG)F $] BBkhT0rlcW1} "E#ta1 9 ybZv*D;*  W p^wUB~jT l L4R65xbJp <  o  2 n7b<  {>IY|G <-/3~I&TIf\ 5 o<w*j =A@} rbz@c8O;<d[|/tw4 v5m*eiVvxn{(-R6{3D#$F  a D*sC9n a wo, 7?{vel), + Vc Z u hpQ 6:i tEm G"-lR%B n,$+Gk;@<>%c %r, ucjzEu#Q5H;  v};zhm]I9{;TMm<X/2\' auMH% @ w@:G ;e U//<m 8 s KH&FT/.H?8\2li(C#tvu F  5 "! %K{' P_ 9i$B{`%~/4.tvDQ;.Sb 4. o Pi\*c* 8 s,Tsaa;:D2N;,K V|rC)V5nUVCHN#83 Q Pa z YjTMvi6DA&\'(0GAQ]pgWn0R\fsA+t/G, D'Y N p PjdKwAamP"l~0=8~#e Ehd/s-]> K`3 5z:HC{"0* TON%']C vs|7HjTRer?&}47M3!:ns RrA-,v0- U ;4X=e=W+v @Eg>{OPQAyxu*h;  #D/&nv ?r'T b Rh $  q71| ga niUu`M0 S=bWK[+ * QM 8D 4O*H"=`, $@l20[')RH f"z\Q-4/JbS0Srv ZCVV@ ] o86<Z6Z bHF:%u)n%3,-mTLDH9(;0[ We X  lku)q  58]   c@ ` ]MB& EOK3 qo@J,Q][  \zK$}-zpr xP]kjhH'wg.1f[CC5P32~m ,m04N0R( - [ 4 ) qN`VUC{^'i^'4y+dt*-KCS}L*+); _^6 _ stG "`n&gq.T\6|^(K~82H>RS'   " ]sh \U 6<A-P4"G. '9D.NW&ztJCJ+%/c c+s` 1 J T& R %e RiR{4F,K d7oK +ED_$8 ( 9i-= j= W +?`q d \BQH/Bs>o:8 2h>u/+Km:e]0~'rp AF   Y80Q,gB "b{!.s50s9jm<)K=zWF`1[6$J\bZ6k+% B89`$<)F~(#v8 Z@moR(G3A>Nl/^H[uaL|s\4(d=*aBql_9xgc>dc\ .UkZ86(Y.$ZQ A{\l/U Ck)X5j}zyj;HoB+T gs_t$[,)d%>7 yxbKA2P%4PU)x kdEh(/<**j/Y{UibJ@Y0~P%=pX'P>2xas3% ILlDs<! 8  S'8;2x$46^O ;dU D}&o19d | S4/KDX]OPQwL'Q =[?h\0u?F\ .$@Jv;4m(N$GMi/W+~ |WA+{AC,w A-=#21eh 2_mL#tGi!<:F(]-vr )'iu'Dh:ir& "v2jTB01~,{3Wz|Z2O'B1OJ~t%nG~ $;I_o,k Zqfn: U}D%e'eDgjd1s' %&co,Z:PkRlsO.[&r{B8`,rH,-M`@Gw!92(GX9P)7[  O7yU(E XlKr7v(qoLlB b+kUoasE`WV 3$p{e?u/ l l@k=3)(w~ O=Wv_be.|b}"F7x};s5(6i\~G-dxOEUC= ; #Nt|es| fyXG8e$3m#B+FZ O [ 5 1Gh3^0,iwI,[`HJ< 0BD-eh-\'Qe|St^V |Vv} " )[}Qe P{rbKuf4h&8.+<Dd2GCF ~ QJ,CUH_|,V,!XI>;|0 (;]x XS [lA5=,6Qn] | e}gFhca*,Q denr*j8fg(2p[uSERJ 1w4_D} Elyg7l)S] Zsg>e 1,]  * gt J ?}SrJ D U Qs<' fy0!S#%b ::h /& -f.o Z:#fq[ b Ha{ Y_69 Nm.P8/2Q ~j7 9()WK%f= /]|(nRG g [;Q? e*j#.;oMP>9'pz& ;E yct/mQ6oq  , VDZ+O<Hf"j=,A c\D=)! k,'kc u ~EZ?K5LGiM1?k.Jxzhp./(*Kl$\ojl <,&GV ch[pqH(Aaf[vSf:?$)2,"[O'Hu  g ClZ)42@ $7sl'W&/D!Rw+n/\$0?EDns l aS/R0 lp$<^A CF2q .d4dSzMpaF(G1o 'rY91J> H gjn.e,FzAkY, ^U (lS7]m:r~u6IY!Yoo ,Hv^  ]D  8CV0<W  z>!|6Ye'p-s"s3-;rs!< U),?Rb<Qn?Z1 G bF;],$9V(~5aR[\ :G/S_>_QFjp?cnt.*e=bh AG| h(U3a]|!.wbL8<A01"]k:uq8/Nw\+U%U)X: uL eDe  ,t4MZJl|kjqW5s3v()a[/^\+AFV&)m"0 J35 Ad6)  dU`VsPt$ ~{t"9I'r-Ve|nn@Xr+" Qk" aVyV U8]  EW8 M. wY#<,8aZ~(#CxVe|R a&?0y'EOM|j9V}MFfnR$"4o6(u;5~c]Z){ )jh1,:yJ"vnv{5C B ^p{unP11@kV ~ jU0w B\.H hv4T)L/q$ J,3j-+ #` s 5t!c9 BpC3w*&. [z-mp]\}3x6M+,;F{.o& ShPj$ p!h{3\@u7J_~FvVx}!pk5f\1zjgx}A(sXW$- Mtr &MDgiUs _nuG~45^?p p ix}5C&d/94= 3}YX0N(-tEyl>B'|  {nFa<Z, \yMPX55+z6m'\|F^wnIU (j)5&3w A `n/  *hCqW3^m+30D!p*vqrV3'8* -1ZMJJ@MY&3(1i/x` !o 9(n4h  UYw%UW0Hv|v^7yKi&z,Qsg}Kt6Ww$(u$y_Qg0Be  flkp'< F.c+ brO|=f]1(IJS:j&^ FRz p-w@8_{ =]4h'Jx5uF B5="q,`A]W`R`Zm"DfrQ'(n &X#^*Sr  Kxv " gGl%CVv7uOqsSm >"Ks>*5EK5n y%a %GlERH(9 H?B\KPQF9 ] n3N5 sDN,,Aw[)<+9"K y\< w;/+0 YI wm]_@%KwwDHRL}?1gkml{LmE]) %=1qh- STlPm[QZBF%S~(CoBBAQ pZaIW]~wo u esSQ% (u5 US!< Fy%EX(zK ~Kb*;3-eV;Gv'XM4j;('iS3yb!_L1 "<{9B8Qt* z)KIT 5xc+0Xx<<)V\y ]z}Q;T=4 w6p.cpA/11-}SE<Wk HUD6c V l-si ZDEo).w:W O4{=z  tdk~t(wC"K|Gw5w&y9g|s&[.dk*nt~J#w|Yy6Xa>T`]{K.56:C8Lx2x 0.1e:matG1fHcYIb  ` {no1(w{z FQ2%rK gB| ;ibYS/@<zF;zfcy6~]Z%**L&gs./>)fw 8p<]At0YqE[# XQ fmPeXvx$-G$2L)^@.xAb! bx1~4 ( bae7: y 5Mnl~$x;a&GH*TMf@18Ph#MmO\6}~K%O P3{D 0 wlBKZ$*I&!eY!W"+:HKxT3F4Wq=c|e:QBs~Wgbrc'DBX&t&(iscM<2QO'4^}=45K nFj/gn7J-|(X`  Ml~ agrk!$< ~`c;.1#s\(c[Dor( {[4WW{y*bx=HCUW*_":`I f&DsHpS[1%L=SDYdWZ\2 0 so>~ 3eb6M6UlG*^M:f%*%/F9.]c]8+;8(hG)'->l6=bH#/{,P$SD*Z_a_r}>B,^G_YU5.Q'Q.'=;@Q~%Gi>*3m^\|foLJ IX  %MN3-l=E=z |6S=doiI*r*` m8u{} \E:eB?nTzg, O;"GAFa ~IWE|IYTgdM`{fjn4gI*JlA'k|c31ZDZbL i7dF"} : *lt` zrRkcw\&3B0xoo Xdw.b'R8qtnt{N9)[Z $ @1ir7Ei*@uX+)\ ~3V*o8ALQg2ll^Kb'*&I#TUGp>m-31|Y3@M>{7_RfDd(DIvOdD>cQY(fNs),9S;4/U9rdc[cT= )D,cdT[D^`(+gKz7?EFH.4VK@ kGOj,t{|HK\erkrJ.^~)GdK#rW,f ITBlg[REEDZA%gJ[;|O' VyGd$D)w3a1K c>79,GSaaR.Y2l[0 pBC08d$=rw!"vf}A(2`OfsJ0 !H=64"<g'>P?>ZBE+ks)_#-5460E$Aw!WcUqZQzYTp,+Y1`, CPW&R'<"od9`z+c4H@(?GiGM44Vw2(,vOve ]$Z`b_TX{/37ui] |eikIO\+MhH.PC!EvP15< /3ZCmq{s}):y^P oqKf] '+2&D P\K*xq=@aK+<nVGgvGDG%XSJv[j(I|xfh=Q\"Y8pOAEi Vjj\bKVXpgk)jpn  fEW9p(*Q]LW^=dVds\A/78kg#fMD/[83*4~PTCCKQD^DNk k5 \OfDkN@>_L04G3KY?H0z{c=f{Tqgci#DIAE]bX X{:h,_|K5(@'($8oi.2kSJ&<4)X]mnRp*fL$[4d/UASs]0D-Yy*&GMdhmP>m]qqc$A<l@ %$n7AD&^1"3paX$yN??#SN>2V]2FZc@Lc[zr $2lK_[!xGVh*00q7Azur{gY$LvOQ9 3lWv(* N09\&'U6Y$ktUR~k+"lVwIf Pa3.*,FqQ| tSCt rb/8jOdpZfWNUghGp]y}rf(R?8 .H0])dY3U"Rg}OaWtq}\8EV@jf_{t]xmm0y|Xl,!G^u,@0Nu9;^$pns-V?iD<:" nJ_kO/[dV m}]kvvOXF#%z!}+  d0DEwjlk23.T2c@f ])+02nIH[`, 4 Vtn~OF6MItlt?FiYO2NO 6*.MU/%D$A!1+V=al_CU-8aghD[<RqORXMix:'asD6fd3y}1bK^b^G^5-d3sisN)(1|RI^gt"' 2P?eNLk< lZO1 2Nb|Zw)247JV4kE`eRjcF" ( N]o@Xzp|LpJ3aKQUD7c8Q($94c,ZX<,4~mQSM 'di[qhwreSvoG9A fRYZ1;D|?-6g:|SM ?E % %.kcW]; b;O(bB;d 13#48 N <=u'e7>0Y V&71riy5&"P7 )aDsFFD0+<)/U7+huM{+=[% 55@>'{t+bLIN1clD~aG32|tb?0?%O&FM\'X["%6Iuox":uz*r3Xx: $,BR 1..^5oZ<=# l_'C_Q u,vZl)?Jo|ep'1&Pcl]&I \4 ( wq~[|Ihy(#z+fgy.-Cd\;& Y`:W,CQd:-K7_X;^-NvhHX~vslFI.:14faClhI{tsg| K}H4h`u9"_no_>+vyTGaznW( &K<,~N7?WurI 1L> WJX_JNUkS[H3P 5C`&d1i]6YtNQ"kda11 .%3E1:<4"Z=A`naG^5R>M,9/&1S+B}IujXbZjdI8D,e#@]a)+/m5Bz37@6qXe8^^\Tit}-D)2zus  N]xa)$Q=cS$31KqXc1q%uimqQ_ T^fj}x}";3pRY4~b8WId{=3>V5 ,{O1O6E[So?}xfq^:+Y.V1-$b]E>/Qb!6&wKksVv9Cij7gHjf.v[`g l~SzLub\<_10q(36K_ dLbgndupfn"URfllgHa.8[v|Z<0vYVNqY[dfxUte}Mjg&[BD@8-HP`[G[y~ mAd+N?{b@Cw`;e8*;$zcVnTa1X`fo9%wa=[gs&=,&,;R@@! N7)0+A&J;GYgFIU%n{rYP*1-$7'xuvo[be\JmOp=avXVfP @@K9Q8gvr?G=Ka]wcbM\~qixgKDaU$kYeXyO3MeAX1>lD#f/,{dtnpib`B ]RoX[qtJu[zbsx[YZIefLqr|ufz{x^~TmpQt@uWDzLd^X3=o_XxEB|{cV\NfHdb$3$A 675Z=Dzx',D6$'sm7c9O~~uH~pcQgNzlCX[`[aR9B- jwtrdsQKiwo{w0G6&M.G%QGjT-rfmwS{KZ,ve1M|}Wl`<:Dpn|x3nB Y l|Yn+G~hxpwyzhi`>N9=!J5.%`+ A3'xnHeW[gIRPuX*/n> z>e_tuite}7z7c7oroPUC{OiSz}ivyTrZ~y`haoOE{lJG=mJW /:uX@u4.Nvz~a^j8~x]G{jWCnN=,ZPi$?Rx]}m\|kp-O,-% %%l}Sq[tw Pi3X]<[=\^v1W`gPfWY4 34)A}Dx{~PLKHCxmz~~n:\W||ihd~XW|aNfgQNL3 |x|B^sUbsO-:vj2hKkTGXx[govvav|4OD"UQ=j6Ie}hfZh{l}zeei}[loTjN'=^,)28 }nwJ{yPl   kq&NYXduseRr_zkr^oLQgpl7_/uc`>)6@ !US,M!0&vF Yf#*';Q`Du*a(!y G .B:Tyc $ =DN.*M,dK @UG,$T T&9ABTw t j9#]%59D ,IN0)lb Z}uX]'D DZD iFLaB _>5 U  9 > >'tU e \*| l5p )S!G249Y+we la_Q]%SD +$X 7yg 0X_ =Q /$AQ.o wR *% t S:[$zB3(~> -o28S)59  0qdG!( <dQH U]R^ [axf+ov  48]36/0 ! ;Y{v #  }Yc fu'%PrM*h`5+]@Y=o? > R `F}$f\R_8, 3-1 @iJ `,) g\M{ ?hWSz7 1 "X\ @Tcn -4/?M ;3fK8c{R!n^MQDYopHq,j jwqb$V@KPT ZPv# jO63@ <0wC. C<F i=(4!F[2@yz*{rufgK87zD~ W<m > [LRgJA_7^t:s$L^eT0q:#  =Fnqh (};c~^U`IZMX"^OG ;|  #) ',h9@X< M S@k 9p@`Xe^>'=}NOk/Hf ,w s i*<JSk*!mz i% g~ov: Z>!C- Qk.8 [ u 4OtV;V"5*).U>OO~0i04Q= V1$n}>C ' ] |H'`rRK 4YlzW?B) &$D ,q# Wn}7s rXLS4I e0g[=pB0UtJq4:uuS+r &# )r+),} U 0 FZXC<7R 7?@!K'E!%. Om E;a"R*<2(n@CYdQM,Clvx+!d P-Y.XM9(# 0  '='R=o0P]r   6 PO W%!}2 J{Nq@O<"0tVLFzU&f u. XYg 7  4Z&O+_#)oCSr1[i F^'XM#a%>Zz_{w7%G UUs|lZ:"l=w0`dr}WC2D*'rV)0u0K8}\b0M'y/]h}{LQZC7 R}:UR0 B[XM{0x1B38nV ?/yYcGtn. |P0^Z+SO4 /}Az0Iwm 6Mc?XlY% [`jEl1tf-}85s>TU70@^wU%naPg;Phs3jjpGMiNb? ~^F5% .Iv:ux`1+mxd|`zVg4 i&<LQ.43$2BXE&*9(GOktb=g?Ba InR9S'[-.>.f)=]X129rAN+2aG;E^_#JjPb" -Fp#,.!(1!5+=@ "q"::_@0iL}p~T6lnVwYz 3(E"j^rlMB.DQ kgK:p={ 0GgZVfT2B=A\]8 Q5W~hcpp2/#C/ZmHaNv\[pM{wfEpP_qv={:M ]l_"&D<;y>##c:tW1 58 -\v  T*=\ @&y$]` |m_ CH OE~| 7Elo1Mj! %7W# $hj> PYl)  _!HjhjdEvh /c w^ 0EIb6 S'Zr !l'NZ_83  5 l h E ^ % 1.H]  i QE i voO 9TXOn gX^  <(y 8`yg _Hx $j| W 4qI=7J<F['u7Kz7q0B 4Q|.Zz x<- 3oGa&S0LRkHe6 &"8 )-9!<s]i])8V+%oqr L.Yc9c? @A VtF^^5a' q?SEOkz;Y`"\kO7)Ns<!2@%@&-Fk^2N!G80F\0!+gzZ2iVu-r;X5, ~*IEFI`yuxCgbhrZj _T%n=?j`@`HbHErpQ$jQZr[-5j* `imEA8zW}MwU8zkslFsURm3 Y]] Hi k& s( :RuX%>7?z&>c b G` B(tnYh=FME@1!zvptP 1rMA^86"#y?^@T }u^ 9 1 R0;V};E * G  C ~; %iW $   @{,n%#~VxHxZ7COd[l7I*>gc`Ll/.kOc ?oy7 3k{>)#8HTC:[so>}zq\tl'Bqlw9QqnPa!\y5(1Cul#|0fM(/7SD:R7e'" T]UOwcSnb+em{t^!.m6O0y"s ZCUbQ-`m tW@bCrfW%'\38HSI2:XyUv DQ[ S]xd\  vFf}&8>,soKF Ou``>c|nWkr5&  gd%N0{hj]4&O 4Q[5iCLCKn EKK(,_g>6PDY_`'rm?gG\J^[PU\iIJ C&ewGh+xpFJ&CL(8f]PmjZfn4HH.!YL|vJ$6BMM E&L=,[.O9 _(o3wp9S9}C3d?[!=Y.M03~\S=ZkR@ Ak?}!bw|lrv`Ct&.;E1dAuV>p a@E-Mc#S4VwK"A&7cv9d`Eu4J;fC{oQ?B%uj#TMjljR@'f~m~5 s -(g\<nRcpF sgd3_h?rABYN\s7I%4[O+L2PyQfvzd mx;C:V\oj'N)Nr9Trcd"|MN%w}xrPxC-9 h[`B\*jJ:$d_c_a;i&v` ,L29 Ve{0jTNIS DSAF/FK*@sPPxw HJ#n5XY _<f#[ G1LJ>"5UoRLSQH WZ/J(1b<sDn{B hVsz>h %Yo;~ kh`C^eml( }i eG({G#( xw?"G~$dU: jZ)_jYd>-_)BpQl"# wO fla 5"1bP2QI!\A<"^9=u6%9@X9i#3-`|vuy6]AFh~>S7DKj:UbS[=P=%Y}GL"bv4Fm\5of<`d-@0/=l@%<X+) IM[cz:tID*t<)y6/1S/3uA]l~q@.eh`~jc n jxhgBBt>sQ>>+tT8?~^@w|}UkJRJ @j8:H3CKn1^m` Hs0F8Zb*>5pS`s7rtz t"3AL"c $E*U#B\mH#_y6MP:YMqG)Q=97nI[ ~7zo-'<oB!3zQ|ix><.gIPqhz_z )Y.z>U_$#ir|4A0`$C9- #crrdSl@qV*4qxB~n# s=]+R|Cd%DpD>/ R=U Q?]FX`|v^f./Ep(1yZ&|Xc4Q&C\7Ihc3~- R.U_&MJ"$uPK]I/kf35} D$+ ^qf#:%`EFee)GZ-\\3~]u2z{] &[,M;Q[_^C5HC]bvfK3Z#ADEwT4 0FB< s{N{j:N^@cb7m.$6^=.~u|TNKFE~H0sq#TKy'KNV/E"5CyGd*jh"ECv q@&K^bI?~r6i5DA7Fv_PswHg{@K^74A'( sW`h- 6yr|opy7[OgodT9'*)kXV$UJ`vN+;Y|s1> c&hy Z3WxCoc=Z_Rw0xY"XVcl|6^^ j7s_ P))$qGW8 AIM2Z r6xR`@, a R7, z0U'Zq{nT8XN2BT8 #)S=wesFT 7/ eD ,$ 56e:2_t} R=p/ .2!<.7Le  "#B- vE ,w)P/y#rMrfE/P\^+v'4o:E.`  E{ J8nw .609FrT<-MTNT/-03(_!V=/<Q"Ki /ZSd(-DmS2"H7O) 4JTM  (& 95%O&&h @I rK*8\Y XpA "Z'/",xonuKr;T[ &TsS+*Q;-cQ]9D0,$ M T,/Te$9l\/pq Ez+fq=;^\ )L)#G,"#=WW%TK40vhX[@(L9Lf?.E#A5g5)% !, D^'^w +$ VZ o?1au\#wK43/B7 Fh7 k!%U pP/F OHe"'6] s0_*)rzpW =oK>Bf'~ 0:1J%+vz^>HV E p Fe sk3IF'eT&ia&4^"}qD HB # \:vq>- +YfW+%X*^k pc4,Si [ hG`D^32}9#b"u1#Se^/c}+"4C!x" ^ a[ T#EN/k*V47!$P`R4oF~$4h/I~"o C _ $V~ Gw.o}b#b VO-7( 3H,0nx  % 1TIZo l B4aqmH!CJA/1Kqq U $N P  ]Jxrrp -_T0D '^7"oYsBg @ X[ur-`k i ( =BYPuCyQAU E#O6. ]< ;R  N[T xF K2*pEK4|%27hwfq J 4 HT7i"{4X Y m*"'ANvJcdNk['d -"2@AW k {0F,^ gm[  _sjJJ5EZ'#Bj R  F_e7Ph 2 ;v5us?\8O*~ !! k~iR I c}EW']2 G UpeQ D u7 {s$=LH\  JU5v3;}WV t~OZ>V5:J.t,2Y][!>Rz-oz]?6o }m#-?* VEA : |fe)w.v130NDbXW46T F*73` p )TL1<jc>,.?6<74:}8}m>d5  pdd]:cSSCx,<KzcvJVN,Hl2N8.-0YJ5dBeoS* `eij^Hg%\B}~sfb3zC+JGQP"69lXgPi S_qiVtYGqwUN, c`Q|Iz3!5-]6{`|[cD(*ToFH=/i3f|l3y~1uLJw'p!1{^?\?XU~tU1Ezhh@n Htf:f3O D@9p4A)z6: I(Q y ,(!*'cX"-+sK?B-\@g_ -a ypmm?4HJ|`_>|0d<4t@? k C 4 RmT2&L"x56K_1)'!_]`: 8 O |$Ot5-"GoBW1c}lq:%NwD e4   m\2Zf8;~LE#CfAWf$h* >5 TQ NZ2 SaM.=W@Ge/yJjMmgo  Mr )0K3=H7~[hGNW'[UpF%: .QI J L gR'M`<{C  zZPs#Es7Iy >{h @b / <- :NAA Iuwyea&}&4|k)Td7|  :{KV Q=OCV@~)w;q;7r Y3E3 f e ` / PG]n g1\:8z_aM'i*#!*KD&.k ;N W" k"Q1SCD88I|[aHlU5 @u ] i]'NJB?)g4_~/~~m).L8Z3W? Sj# 3 v1  4:cX?/-[)>-Db`{p%2&/Sl&? 5n N j jcC hBdR<I+D,qp*Uzndp4 KX O3 G V kkj(jr*{Ey&EgZrno)i/*4LYQD5G n - Vmo@3"gShJV e\x|b[  9e h'&S!Y"ev;=3Cl&XjTgcS*6wPy]/9   L T 48`Q,$J.)$fJd"A&/AcU)J 9,]& /9P-Y mB+ - g}C. =I2vXWkW4A!r$H[lNt_ 2Iq2Wmd=Y+3^#[Y +9+v.:,oyWrJ G@]XM<|3M#<FKMlfT 6Yg+:fbGY)]))L':vyC6?] V&VYaKrsG13 o 1RN1y"-x<dtR:ud2#kAuK$ 0n:GQ}p2Ci[ p 2 Yl RIg#Rqz -n 4YAEqyQg]]pg  tS=/0tJ q Z"Dj0UQ7W+6cR1e0O A9I^9mVB+n a_ "f V  ?agga@aXjH]]B/r F B#!WC5#xH4z e]~8W8H `{jXMf1Yybu) >$" "$UG 9z  4 :k|ru 0* =;D _[>`*e.*v%(K$a 4 ( +#-n3[Z  ]H YN<9?P ).$_3p!{"1< P  #X} c DTu&, X By bzwo,!fkJ!n(}:B 25!hkP;ٍ-uxp JH lU u$l AK%H4z2.~;r/6`'=,~)n>.,U]_k7V/ ;2 m-h?& ) { V 8n hHGNFA-:: )2%e -844Z0kaBCS ;YQH  Pm ux,Pd  OclKs R -L .#1} OO  b p? %6kOq!d %U4Oajj +b,g+ 0{PwV+lUZ @`\}Q }iG: vqQ>EQ9sZ6^* :l}O,/V) +]U \7z<j P ]VN_B48@F^,F7#9`xyia{L`F jQ 3 pc]) ?M+W0& J"nt-sh uy5vZQ71 XI^ u *I:IHT n1 S"+=w:e#yw6*W"QP4U]{ Szs*PYSc s'FYlvk]W!woT}.G/?: :~7lC  C]Hp5uVC,$l \pSY9Nwk,R{h= y{'C =. FC9BPI[jB;,~U8:e" ?\0 ws'j@D~3%^^P*64rdW H|_#6yy_G|  +e  A 8w =63 fw>K^BcL5oV.rE~G7#+fY]bKoC+*8in L1&5^| (C&r#$kX>jL?[J ##i0 %`N#$ OI 6hNlY +6\wCw9u-j } X I TqN. L Qt=/AAX=ePjSty1"ex>5w  ~T ; v Aa t}~sA`Q/.V>u\7NmF 4GbQ._>Z h0 3h:?[ |erfU/ B9@vI-Hu*\c.{)&h ^7 5 B 1B"c F(s& "q=>ouR [ b8j>VGJH%'s-s^aIttK6!; `] # t 2  ~Y1zUL+qJXy>jP5Cmi9v߫$ Fe8mf . 0_" :0m'45{X2"(k_i" 3ZE k $x-&- bi -iI_) ' kxU,!XvSd?b- H0  r\`gjnZfnq{ B 6!: &-MqD{RE9=Z4!/]7x-K VN

d{sL #_)? c(O6C[ R OVR1e[iYxM1=O,ML-M2o;_hC#6Z< R$_#5");v^>B 2 #q\hy%q( ?H'P`C@TUO|U*8$[8"}! )  r*Ax3  /  DWog/lw51;##/"yy;{H38sAF_Z ^uf-$% V o;I<m+ T%d  raMxSYgm9y l:a6 =| s:7s>IZ{E9c|+W,/h x a:89u ht6V }}TyTq ]+\D{ L6,xGjiwt[6l({ k\uM w*-Q z6ZCC9VXO.>`< dlUe\dU{ ~bT[u's  '-@%`UbCfcU?ie~;`6K>kb B>` _Ka^W~f$0k<|xW\>V-Poboh; r/ ~p } q^lH>tmYk.tx xs9 *+YSzJItNG9u'kSuh)t m*UxFCg {C g7*Udv#8(Ph*D j%K+ kd qIaKt o N mc=T+ZS*pj~&`*I>E ;m*&PZ7X!E! ?02zKD&(Z7`mFXDP}QasR\jaU#t.CVae\,B#NC.SvmDGLiP@Wtor*/,.`mP $P}6MWb-j0/i?rn6WU}iTI 1Wl"8 u T%GN?e-&p{o`/tKFm1nlZZb RoL^t[7+V. =v(#=lDK$2|Qn6Wfz@|/- fW&gL Vt@jLT{UyZzSF `[ 9n8Nrz0-rr3do'Jg :ICd,f@qU49M%igLIoe9N c>={s0 ggB: "8gNMg \#GSe#!z NT'#&x}'j*z8j R,K;oY8G]fZ1wo"+umGO ^! nY*R+/^u~c K'es*U i'G>"m)-q &(Jx_}HAh(F+HT+N_TdOj;}x+X8 BG'&)@b(jl,|+TTP(p` y4mzA$gcc7z{O M~; i/~v+yalU-<K@sFULXfFSkBwxgse# aT6qgM^F{q-TF9qs=iFkgoH7w:hcV&H[v% Y4lc7<5l r81R :Cc<%lX63amQvG2dUe)+"!aQz{BqRr5lhOp0PBA r^Jur'w^;Y5- y24 z:{4nW(-hV5^,Qt0b~>?urHp@XpchCV >V.d)xIx")F :+'Y6z%OxwtxC;8XQ"8V?9os,A*0=gQ6$= )^h(4pC8 1QH-EN:g!dF9WYe7<(2@#pQ[7uqcK wx9fkE]a-J7&e4*]2_K2%5~ yb2,W9qT#[2syDTY/%vtU&w!D3*=fCd(H$Fx)7.)yJj(Q]<)T{j?\dlVt LHNtUH`K!g)hU;b4E"c/Xk<i]vV)NY,c0>K-a2stYRs@B2=jGXsY) 1H*?o(Jg86/wjYfp]h ?}m"`E@c)"Iqb^ Up$6Hn=ep}>#Ka78{FKB8~Tq/bSoSR\[a+KAX0)k*"P \<D";!Y*0(NuVld[7i1<8 +iAC ,/2FJXf>}ZE:q9c%[q4_Pb A>5~ Qo+PLf<7*fRp)=<e*$Zn4A;(@LO^#$PE(CZ3 V#F36. `jkgjJ/}z4@s MBzaJN}{>d7J?,_+QM~wQQ015m/UtBS1Z? K  {/wpKdu\BE< jcz[f"]e :gE52 H~yHH\vGS =X ,Pk:*DEACWv2?n"@l-\t-w NRU)?>s"u,ez6;+ pSe&)VM"~/R9] ztk-x7;*LZLeJw>k]zfXAXBCU_V? )`Ppp?&w%4xDT+f,*HR?w(M-eU1N%P+qf&'d\p`nJrut!B4'su}P}rmNVIzt/v{gAp .gX:=]]y?mqC{l}oRK{[Z`@PJTp\o4"4Mi%{mdlNQy]*wb\8[zdCV(2gYz0|T4{k / `Kk(vnJKRE7 +Jufh^~eVzIB0"K!`[3 (L6Tz{K> 2ApnG`[G_^PG KNILH+2g ox=iPh6WrIgVH^zs5/8S3Y/8C%|Lm"A?nxTyQ{{}{s0OBzSBB@8JN=YD0lY<UrlVx7kkVOk~@-m@]@!mVG:V 1 Y>V` :JSVe6Ek$ dV6rw)I@t8Hk|2y?3&GhK->PujA#n@`sOyc#qIa?%][txF\ s hrN)cs}FJ^ )_FhI<Xf4L;zBrD}x'L2##{qC{J=D sK1td% LRD^V#h42z0[x?N2:!=A;FM9wcc 6`5N"dd:}dZ-]@~+v,~QOZ_O##YS 6 LKdOhD/?GNg)8Vr7oj 8h, -"^e h |N>|{_%+x#}XeN_.=Z'7}M7h4HF -" -5\ VO S^4b|jV[#T &7G10R!>wD)M|,0O%` (!u#e _W-?!8j=+kE<uRi`*  6,V`X tx}yy4(iR2OD`O:x(-[Q}c? $2 4 Rk~k=S0a|N INu =JA"/ .FaG8~2/M zZ 1:Jw2Fs K _O: L@}:)Md@u ja $.=)&??Z4~ V l:Ud 9Fu,NUxkZ %-  r|E9(dfAK^&&> KL$C)} W2? # f0 dbE*|Y]g\xu t N*_'{X y%P?Y*<{q?K|3>G+,4Fu9Hr2D {] X O sts]Ek!URA cd`$]A-4%[ { = w{ZU]&4vY -3%Y*%SD xEl. t:+9:k4# \ @,o^# 9!( 9 *$ 5 T [Mn#_K]j+O1&]h kw wy @CT@fXcTK  T_JC&ATE&j( ` :@N='C4=Q$N[x(_2qk{S   2;B=?!LKLj9h]iprwhCc%X?-upaquuzo8h(^ KAFuf""9 &t\}R3KKjt "k9F'6N*[y9Ab^Q~vUPk6`sW`(Lm!'3t]^.XSDR 7J$$)|K@C,>3F7e^nIxZ{ed;EE=S) ;?'Zg[~Zgx8K2]q>#Oy7){:@CTf$4t[P<: yNLL 'Objj(aNr{v*"!Dg|!&-*AQr b[XO( 7Iv=M}Ev9wrovOWO5{V~U7[R.<H.p. z1=o2Al X !|v 93D_8z&7SSnVf)&O"r }epNxTuz l,\M7J$d}5\ybH^lN1h+:n3~0NA 9DLx@>QxI/m";D= U 2eMSNWfmL~GI:PDV}Jb/Us0:YzqN=WwU$UGfz=~+9'e &_X HP>hKd3>[XAja[` trvaPT&/q3)6K4]cXy Uq}|yUl  JYM } WOl='G27MNo;9,}kF^v*JVlZu={96 ]w +x,w%zQeKg{/ G?Y2N~n@5Q TFNMp>uw` #gAZ {9}Nf+$0cf%JR1rs_oBa=>?eC1q6 BVzIQ#%1hH@95aj0EJ OgzpV2.[eSvtup=[3%\, I#LC">AB?^Un %l3*YW9AF~dCXzm?POg}Tv&^#/['K) Oc]pds}|rwp\qjIM4T!F74{wY5Ia/[mVL|v02;7`Xjh-U]2P3>tM{8A|WnXIPphUepJqlH/HabH=3EeK ']^_`,^b0-fBG4Q5LA8& ,O%DBSN$_hm"Z_VXa9AN ON6}qmn(O[JN)g`PRQV(T7v2v G[ 9brTt% 6a Q m}֤` - ${+ ?I=9>d1#H 0\F6,4 Y2 r"c 0(o  8Uzxeb@ nk ',fd2LMG*| I 1Y& n|{|N U g 8fU~+tdvx }*g Sbm 4 I s  zV5G3} <^$'/ cXnJey dq R o[Fch Mk$M H1\fJbq}ho V ^v~GjFj1Z3O  Rp~adEw2E@"sKvslV?fapdZb\ ye"!#%m5nQws@u).xVq()pCGI]m\wv mC? 7B wMBb9Uw@D0 P 2(V+^rcObnhrRnS%U` 9- ygz2`XbO?zs?^ &pR=/ڒ0 Kfw , !oYi/ L3`:ۆ y"|o;64~@0K%~ .N"h Rۨ {w#ek\y $AH4 M0(AO? U  4 |/ Ja<-U-rbTzF&4$ v+O^ S2M enV8CpssAy8}/G#0E  ,r 0 9*XTK:_bke;`<"z 0b [P zd  \TOW _\S}$8|:[H'hz:'. 0 iV x O A2M ,dLgRmZ08kE@+oGz R,=%WRCH %VbJhd^NfwO  "WnX ;^ g/]e'KY6n)SmGXA-$R*-G Aa=sAv;!:> F?A`nQE+fP[5;92"?{k`r |~#; u<fS~W?|n-h=rITKRXlUYXx^))LgQ",/+?}_39-3e5kh&|[JbUtx6 XX]g_p%[Lj.eW#)JNz( .kADt[++Jwq !SR-eb!.: .xiXyE  wG` oh~nEt\N=`)&V@Imwt)iUmrKHmc7|/kBi{h~% 5 U;r $F\Vk%=~eAy6a~MY\eZ   j,Dl1xc){0vvk0',@?/z ?N xR Sm #  K Uoc  jm ]k1WTUKq E*aH]@ 6s ?P \7 {}! d JrC' f` -o. ^! Rgc.l w.4Pj+ ] /fw =*3m'*T8v3p!) )~+ YN\ K # N? \ > MGAP{$ TVNx Z .p%7)*Xn9$C G )MxUC;h qKjyvu4/&}Z)Sq$q  |znI)#rkYn;Lg{jy.<lm=Q|3+ F  k 5gb=P V?p)]a_3nd [.  ~ ~Myvigae!N{qU)Ok}Qp xT Z ux% ^,q>[\gaK4m RF;": Tr.i?/RUn>8)X;!="/ NZ>CMG(XzrL + 6 Iw@V=ecIt|  S iR\7eihB9&@~/-uj*"Xd&Nrj 4]6V-h$ iU.#Ie[ F*XIg>b x{pu  SxA]LS.|L?2Y^o~'l#w J#]aB[r$sl nk 2 o PI@1J~:ud8F!! UVu+ct&e!0'4D^]@g<[85A`}E1~iC7- ):(W E#BC(:9k3^,I)l_EE]iiKoY\o^V$#xYC$0pkaN{gz;%i ]'oNV \H] oi'g|Jq+5ue_8ot9|.r q S'~"~`b x^9 ` :+ UIvMx&Gk&NZ'}*$ 1 >`NE(kL + WC^F ? : !r7bd!Nm W'RF:D" MY  AU\b D %R w %YidV q~@)0leFyla ^*@1=9X[^ -+ (B{y"tKbqdSgQ6#}[Bj|f b , Y ~WB4P&A-Mks+K9|0dZRaZ=W( OK>XEA4Eu%r'i!  ?R!RN0Q5I")@P MD2y?61|h: 7qbSokDyKhm}S}k<VYrABe 2GMa_`- iPH*U[Y! e}lLh=K}S~dFb*[&EhJZh+UG59y)'c>DV}UI:v2?$}a3KQ ~Uo5[ aIFC8HxKg~/;N.[b{K'zRJCln6^|%HPB\xnrtFpRjD2{jofi*- B"Y! Z%NhD   "w1r1:m;B=y:T@m\cr@j"m !Hca kD8VC %} n  zCU)+ =..n N  !x%> C}u}%\cY2z؟+ԍ{my"*&)O Z]@`4?VD DADXpJ&<]c5ce -$[dI[*Քȷݺ' @J*%A w\oi3h+j<S@? M 5D^ kqv<Klg ^;CjoH6ۼſ:1.+t jv - uU  NK" I 3gAk A_:G]%n&_'%W_J{xՏko% I>y \E | E0 W?PF km>^Y")PL7`Qܿ2W y!Uq*9_bubfj/ )*5RR  CTt CxVB[DYsb+ @8Mk3P 2޴Հ"Uuj?`^}NI3X": b5@ vCCEF &%s/m)U;Jrl\# FxFB $8,o x= ptE 3>]t\ E2F`RXqRi! -"  ]9qߧ O!NOFfHnTLQ0[Q {aF\^EOAL}UL1s1fE5tW % %)b'svG .1 5YWB(l qM.O 8 ' G_V-W/CA.=! rUq|yc,5,i|s)M  #E$: O g3$)V?u- N6]XWVmH HZ0]M'86rRg7}^;hO[ z;_L {:0 wsF ?:1 LqwAbl ?O,E] =";U"SXrqk- mG:b! Z D7k%HqAaqBELn .E;ROj-1)x%!s 4\1JfmY0s=(6f ;f7`: mz/zq xyRU haI|^>:TYr%)v]Q Hb)>bO'lo2"p2@ tmSi>-:iw[?',<.!cX' ,,C3YJ+N|8Jp\uqdbB~c]^WdaQE\VtNt{xj-9WkL7git}A.<05+!:WfvpU(U[9fI9RjLfZCyw4j = :PvZH ^ M q`Y>A?NT8<,V/<[jJ!3#b+i y^Eb1T xl6T]/5%(_E/TOm~PdO LA]m^ /@rR#t{ALs);DZ@RD: %(H tB{tGBUkd -E-%5G5FQ0#!s/ *Cex B/|G]D.$ ZC@2,pmw9OwbJ?HRlhzS1LuA^7': wT\:q(OE [ 9_'|wtbT}NEAVhA>/A@_OORWR&i-[~XWk*>Y[P  ./SpQh py><(^ tcPj@B VCdcB$/dK}G!~f<9`r.d;USS3M z $}]:W4?O*Rzc\%%oT)L&c%E%;2a1= Z^`;!rybxU( 9 O tW4HSKY1;Wy-.Ar^R woT  Q%.U@U:}%t^'k9) 54  H-a+=Ve-Oj ,@pV:78io6{(x r?Y |e73 0w =i'=m%J& G^)JubS {yr6p2/ ] YP#'? T[ h  oylZagXcx laW 5"!jr a f2G$[^Rebt@0 (/Y}Z3L"B ;kmx#Vo$Z+ p F| v 2^ 1n!&Byx_Ja"(xH= g-V6 =G<7Y9y SOsB1-~iz&=7 *0#jl[m ] Jk U/ u1\s=6|Yrr<wUP3%:}Pbg{1mv 9# 2*.CSi*tdilEiL_WXxGL&R3x ~LT  r6)_W&!Dw3HuS X&&_FyzIa g+ K#}^C! (d)?Y^ (s*P1 XٟpX(, NI#@;ur1qnok*BK8!BSILHU %<$83#Zy. L I.JjGfp /uPTw ]}xS}{|$rs7NG*Hٺ F  N\ @ :HX,$ 6 Q~+Gn  !M g ;Z[PFZuD[ V J*EQ*h;9F@' N N-AhW =;T6S' #A):]HVlho82av>/t\mO P&m ?!( R$q; T  tXs&A:` oga+6SMjeX}@MIq BY>  r-@ s Vm>no/Z?/8:J~&!d 3'&CUB1r  R @ j.540`4Y5N`[t{FGW[$%kv U2!ENEC+dQ LLbd5~32q(8[l=  ;<,t+BT;^A?P!jV+1gQ~^v%6 OYVSa/r`NWK!=^ju-L<.ST%#a~^Cqgi0,^C*.\NXLjatAkcG><HCtKfQfEW|$91R"kp@y} l>; vBU8pr#) e#to] yPwl&\?Y +um:ltR jQW52y2x0hpuzSKMe#r vzKvod]\uhg-<77uFejG`cCg]vdujE:sB86XAN&bi>t Xc|_ '0c|QB'}*%tnEhF3,JWL~ZyNbl}1~MLVo} G^oOzT  iX_kz'Dz2i;^Akp*_q;QXr@pa)?S&r'jjA~LP 7%,!rxcJsFUbd&vUS"56<8$iki{8W)5'?g&IQ&u Vb1?(- ;`{hGk22h=i[O"baxMMjP gfBK3Sg'?77;ZtiC|yot:Z=P^ P8CA p3]ks NZ7N) bX)Mp1\q0J>J)Vb #hov(6=U9>aC;I+[%mv7Q'Kk=A 9?/pxG8p::7Lxxtnscqq/xaQ86-feASGhoKIsHostk Joy-pgaEaQ=,c^ VK,BQ[s<''Sl4x07_~kl`^YTAQ  kzML+EI} LB.%Y+g"N,9gw BX C<u`zb=='O4a\iWa<HM N5sz& *c'6}?Rh3B@em`3xl9ibJ4h!I8^\A}iENK,c = F\,YN"S[oT~Qi&PKG t w'ZPcNQcYxV .n1s\LLj74WQB "@OKQ"zYH<u%P]F;UnSM} n|wh~ |RkQBIhd){!oo F/OWMSUT&I~=`xsR462IXip40m3wSR-SOx<42rw\   \3@RhoN_{=T:k,,J`W.uF8$Z!A-:+9AZ^)cI;4 ;+Q(,/oUCQM:C]Oga}X<*~aZO\k A*`;PZC1#K]5@aePu}]rp$n])ZZ.%"C5bU RMC XRQa`RpMq(nuANKl\-5PWo*K2NUL 1WibV|D7?ZIF\&<`$<_B .^'3\F"oegN2(=A%>]Yco > )S:uqv-e/0;z[AH7e).}P[;`vx1qxx`va4:`Y.=8nERzF5^ dI?(lX|+go '@ D*4K6q6p>a:19C .E8W+7?n\]:fZ!E>?QG*X>p*Z6M&3dh"E/,@N^;[.mU~zt$9?TzE~ vG( $u*HnV:@ !H0r-W5ZRK@i:LSh <Bq'x|imG~GuAPgSx IO9u|GJp5hu-$6%D+-43Vi} |DxJ5y/P_k "A~rclC6!)V]/@j#'nZ"~]<gR >?W_vsY<}- |7  O 'nhCSj{8"McGKSrPb ab_j#/IVju'VT`h$ 7_YI5HVm^=q%fd()$V(UOV^|r^XKT4&))UnI /pPRQTa6Hq J? orB]-Y=#;$vv_ r 8[P&s*"K&7liL -~_L*te|rGSj _7|G%? \_&; #u8V8eQ2lqNIA4SH=x r[w KbR.kogy%| + n;g9A&2 ,bP,V'HC2ErTXE #SU*a.j.-p' lMo.Kl)}G 0'8=0&1|@m^(2U'P+&cSyn1<%1Cd1rz3 4k`~f) 9XKY7^ "Bb"RZ qu<h:RT1\kB}r|+_Z- ?tnny0 8ucvC0 yCTH5P)sIC+8gTRR(g.AI[]n2 9;/*.VLDO 3 " R`@(x_Vc:Dvj<5C)ZQ[K@9Bv:+,GO )]"pr *!fQ=),bW9b  PfBySggdm  IE-F+&}LsRD}%k;&rm4s2N@ rw h!+ e=:zp   JPj td. */@<_ {  $ru!" ^~35 ! ! 4N  !Ha20sB[AXc md-e_{AWw9c, x W3 <HeT 212E8 $hUkk/La=/F ;-Ux LL6.6:~OGv   gbqYo" m d  % & # jrj&g75 n e- - b+xKHi%d9h P s J d 7 7=5OBMt_fz*[D,#waweXtZopKIV;-n0:XX=9#)%CR -  <FK204[Nf$Y T 2 jp)158EKk3tN4D rA%3',cw?gc G S G n!V;O)"d~9EP3y6w7]ql.;a`{_NNx8*v(+" IE*.@ Xy:rW9Z>P9' <^18nXaW?-zUPmCH9&hY\i[ynEM+#{ 6RhSUhfssn[J3FF|gb;x6!((D]YU|9Jq+hstiZtgr9pkq*`r|@uwik5IWkU>/U.!BmbCv9`XC?eF7,N!N h\/ ;4;G_2at P#EPf9F(vOo 3T)M UI/x*Pz!t uZb  V5dN- Ah^C:8ustDl8:3< ;K_,l drhs4L L}eSLMY=(1U @ > s^ *X ; OeZR HL`1fjFr>$ Mw x!Bb>k,Tt u/a n: k{iN4 Ry`TE};  R ~U, , s  Vv-&j[2 xG`n 0=u i4 p9 QN40)C")YPh \ ;T2N:* DY l$q>W u'O%DaCU '  ?  ; : _8?W") DSy =f l/? K wO "-4 / 8 p EA7hj GKN} leN j c>B& oW>O j!% BBe'V l0IwO .~ FU _{J  L(rh?  p=3.!2K> HA$<W/@ ,`9.!  %*q% unKK@v O 1c5 y#>@V"^  ,Q% 3h N ( /ag&'NZ q 0 )!O u n9|~8* 17xB> n0sk$ 4*/DTfz\+ 4JQn]t9AQ' KVPC"{OYTFxY;H}7-fYNms&Elr 5XCh \Uuu%+ >f9b^D%vH% DWfdX 7dF d mYWwq =szFw : M rc#i1=l34 PTt kI/%1>*UIl7,'*"V}  9?)'%V7K&m cD>X.%W g RFV$E I7Ve(9   Sq/yW/' cDe+gM(Q D^G.)P8A}}U{  MAziS9 rc-M d6  !\hI& g 7,]O*d;7@J4H}4G:$-A,} c $ NtWP  9P|Zp 4f)2{jFNAgc#iCF ' m @W}`.hd&$"G@g~cygj&B nXW+7twQF    l72e@gM5OwEQ}`Kh"B(%{ w~ZY l[ ) u |)vd[4ZIM~B{ p4N&[|65w|lvP`n 0 v *p6%}B%7TV-36"0JI}% B@^{~/"Xew Zr5*Q_v p o~ 2[rSJdvW/j]!6$ )Rf :3YB4t}@{} a G2 ^ KG_pl?_lu NdB-Voe#K Y Q>75 G+4F|R  ` P F UJx+do]m/ EVL&4S 7Fn!kz1e'8d}4>^(E}aqi D/A%K=dAYm #?/_Ul!.,/6+^dYf}L.VOTxw@ %SVBe3=WS )0su.$WnyEM;t~XS!G;W<F%L,&](3P a7PmN0,3,gk^i88^PV@H 97q]v [fy:f.u|/r A&>-YJ!N4:j*T^JARfC 2+]v\FYv  KzWI  fUHTZi}X RZ2S$B:<{ w 99l`8#/_k|QZhM>[&eQRnX,n~ 48` &SzkC15Pt=we:%LHd0  j[D]Z &R70fgUFyNZR\A"! N yV'V-xLk-6*{ 1~17{DEHsZ7bfp|S  Y{Gh}R!< N {|p=J Jsf9wKB bK,v+_Tm 1a06HSew/M{iKtT2@ A(`(Tb8->L9 .KBX -d - : *+I)4M6|k9t;{ Q 4V9M_+R?5fkE{W:L"Fz%V$n_-z7R"M*n-,Kkqm* i `K5@Mz*zR| 9   l4H~3! TcW "J~WbY~J zJ|55~0^'4|6u I K C -~,D.SU ,a2)6w8 8:A }rOvs z    &gyQ=Y@f :L}Y N N lJDr0 nA%e  i>zc4@p6LC#hy!X\@ >e# /  tI |mn\\W `' jc]} 4wb;L54B[BhXJY'_IW  :#LMB}$2) <iJf\@%%g (B7*e]; 8 K C# h9##@{H=YYXC69k20?kqmJp/2JXNj   SAu4a|N}A}]Q-c0]Dq}%H*4g^dRYi%1Z 6< F ryp '.hhYc(`_q7yhh+mSn.nNSt% q  [n7VF&+> 6v.`~4 y1j@7P%3 $=f|c2GZ}n +3@<F$j~Ii7F<. G11XQ2c= jd: "H.J8/1 j!F'*a [t%/5 uCFLM[?*_ H cXD\} R# ]e S1B  A}tgr>hf/s7- 2cT`0D$D4a-;< 9o^sKB,I'& 7"6F{ \QAAQ`#0 m{rRvN1zp-w }nqmc,L)6bIa V5 {3  }.TWz2 Bok Y\#`Zq.  S!%p N0J] eS`+Fk|XDh.,$6EkQ Gg ;M Q# :M 279 ' Mg5PTM 8t6"VY?F(Nk)MD* $ h s X(A.t,~6@w{{xMsw[ivh]0c,hz'b E# ,%D3Bd[# k L,#U>ore+H2 YJZrH <z|Yjzi /Baq%"W0_4 4% &DQ]O%]&xL6W@ 2dc>y A3` {W] J@ i*,F^x9.#ejVz ir$M(`R CETY"CD4MgKJR8Iv})uMs[nPL1l'4L.vivgQf$r '[U9SNXO 3 b J@,GF%XgcJ} Y[q r"V `6 9 HTcFuV BVnrZ lXE:}\\4 1@Nfwkk '_ $ L 5F-T~f y( i }{@X$Fg"B  } .@EEr6FR /gk#Es= v ,j  hAzt 3F$^9xm4<`  jSe](4YMtL u8" ? #xtl.Vvt 5 ^F kpui`l=z;f *[\Nu*eF2kw U'PD   c}K5TWWb=qU.u5*\*vc6-Tm^FN7z)[G|N{)a*u1 oK67zdJ5n#VG6q8jd _b=4&<%]W31^^}cow 9R]Bk_{j/A6#BUR}QNQN?b3=SDt?<\IgP?|,&z|mcdQvbSY|L6}#_lGR4TZHwxAR|wnTc8lZPTs`hV'QW0z+WmozeWD<xP_do>_y_1_kE?H9{KVq R 8-3`r!k\Gt_TY{_h)+)@G@'=nK*}]{|dkv\kcy4|\n^qw>"1>7@$uyMY{p|vTR^@|qe_^'[=_+k`j|k>tppljVapoiTreRmqxRy /BJ4+jEbaVpv]hrBw?h@J8F>_! EQ ISRo[)].|WB-IYl.4m]%5@ Q>SZ8K7T;p]I|W<\91fJS O PqGo 84y(WMCgujS`W u[vZ? 0=+[DmNtAz.wl':@U9O("&qBk-jvc-uJ[Tj:vi8 FInn$l(Srb5Y"VY+-AZ$Q7%"e#=2GzFaM&]i1VXkl)w\UUO4p $#zV%L+h ~ xJUku sHBhqV5 b4 i 9 1,}K#+uG{I k 0^kC;q5 P }MN ql:9;]OO2(E[ 5+vt'rIAjtP E"   NR,6!+ X A1{*lx" 8%au^K{4G 32e+f2 `**QBj& { '!v  *t P U XHeuJ^z_i' |/H8 Fr>*ucBVt&E 1 } 4h7-ca~-? {1>s_p3Lm$!Lt& ?EWCOZX):"j vt 73{ RoL,o /k(| +sD.\u.bp*O~9 N!x=*M&<nb, (u cW4 &~k >9`x|squkh2Qm_NV9j  |p mo vIgMeL R,$ Z:,u j/| _+ (^ w% + =pd)&4J"1=s p\26[p +=-yD <9yJHmf I&\r [ <A i >HYyM?x6Tvs ]u aj`vj4x- 9HZqejEMG# 3X ( UA @$W ::a6zPn.+@CQ 1z\]W; nJ2P?o[kpj qYh1n J)%7HAf)N^VJ<x)>dStZ6 q 2L.z}nzHG&r :Zl$x -J5z}w;aS9#|UmZ'{<JfZj2K0FTP|027`O'j*1ix8uc0.u)[Sy` Q~9.+c{{ufMN/sanYktLWG}Z|3,7SC4dIPZ!5Y`qfHFw ]8<ybcRSVNr,.)C!Yt@\m)An/$h#.rB yDA+fc2V4j"MlN+~o[h&VHZR#*CNq9T>@z@m|Jdw/uhYhgUC1p`Tzw7;fY='6[Lq"1HN~Gn:durDZ|t&j#]]k 2('L Ff;4(/ aSF+|zTjz+e$CRjCbuJxV_Zr6[1,j'y_9h0z]Q)|ClR# {L\2L>vPEejlHiEo^:;p>I%c  0DKuL}`:"rCOrE-$KQq>H .Dp|lzF<DvM`4[~E:i&%&D"P`^` DR"bFcj\)>oawk!enlSJwD4Na\16:6YIQlh[o8.HJex"|AT/^#o(+ 8Ft mH:/U $PK6@ $ (tv!L4n`dFf4,ZEi+#8t ^*DUi)MB 9&}9= 2m+Rw&~=0FX" J{g) 5LY]wu.k9n,@=lKBWv+7=Ge6prm+6=yrH02jSkPw%IQ#j3^0%)#L +  < EFeL$& q/tm*^- z9 !F~'27dlC7+HHT $ j  = C (v{0pM/q`t)VG\J"<*k7q\fJ&T6W.eH3G ^iSb)D_ .<ys^d)j$:]J{:qto o zD@0F> .Q":K. n ,{\3*XDLs&9v` 1!#E'q3| R%svp9  QW JKN4P?zjZv=]zQwNmBmiJje&^!3/.Y1 =4Q%G  HgI8_ ` hli $  x)Ld~dw:vpM_F#$*F!N *"  Y :" >= Zc-75 Z  ||r>z,zl.*yDY1 l||#6_d W98 "b] I"7 A1GX 3e~xvx2F @bbH z: vuZ@h`y{(u{O'e8P]+LFhsj1c Lkd k g}P_^H(0 wve~CwA:].jM\O?RDlnN,. d_zB_wIzv Hf [R1E2Ed-q\Q5;JP$:8hv^ P9&O x]W @Edf;S" f 9|R;hfC9K=ji Btm Ki!/|/my#hHS;csw8$|}IB*/&Plh;Ad/2=KX**)m5.pII%lmciGD@FDo@2KN/'TGQpD"MSs&0^s=h=mY,PcMi!@I l"0bblAk,&/E|Q)ZA[[5zUieK[H2Wf#NA< u EA:s6PG D w !D^KXA'|X Go$ ,TbhWAb_=2 <)?= +1w9u8n_k ,EZxg d?OD`gV_D8<Vre|Fk.5I"! KrB w"|T!XhZ2 `H\)dmGBj22X KKPv  S'  X  n4BI3(t/hi6L(CMI]-Td=S.JI4LS+yZ}0CvEn  A [ J<:y'qF D:.42RO w47.sqfqf mZ F ) Z/b;Au^0ovCeL#O0rVi2_q}?r=9NvP6<5V /o\~?4S-0pY/qla1@qu~k& D-o4r7DTi|+bAy%/`N7do_ AK Ud|X_o0F|8!c_-'__A7In I0%]Qr  fp@a R*z5AfFtG"u3xo+kA=\XqS!@AQ\D'3`3oZ 'x$Wm-M `Z _ LpF,x_i{ $Y-b!C&/+`Q[s$%[  l0d]4$Q 6cR%+@~3^S# _?; xp| # ?w .Q{4 7G=+1U]G5yhinj!y? Zn w. .{"Cr{ z  [id+h<35zR1aP1R 7bg # 3u6Iumc*! OTh.mdc#>'>B$2i gE;M h  3 \Qo="SdYKvE=YUap=FS]pS1#Ke0GqlG8,UAUG#aYL M#H 0aOpd DF="e&c9uIL|XYx?:c]Xrx]R@; A$xTQ bDN(?W2>NZu+QQW[vDLQUX]2 U1vX<a+ UDwcN:},LB`8/IuTBSYS8Rc_GX4!CrIi_ #I.(?C:/S6 [8G[T90@OJc@-s7l/ GT7O36kB\t x-^/K9YG|`|dlN('BU{R?=Wk0;g(rr~M$.EN5}3d^Ao~ps9(:6Y> O3h a~?2%G! Jg| ]G5* ).|8n<noz\rD\jEGu bhn NnO'4wQy:   o ?1P%~_iJ*J7/Ydl z`m5-/xgAwLD!~I}laV4e!1`(L]9J;&-NRz qDG$l?dL>H$RHnW5R:XEHnbon`&8E.u(OUEz#6/j;bQ UbsU|f2]HGO?5+zfu^'wXpHf'( J|h*E[j:\[xI'/?)B7P$pn:[  .NEU  d}#YnFPK:zwfnWy ^\s#JjHl8$(5@ {-Px@y1G8%X+pS#8m>u6?Ip2bVX|b6JhlRCv#*N~$N8zP9%lWue%2opTpoxu>S!I;Bi^}]yo96ywSulx|Z= M qM^ T G'tN"dS.}*sq%LyRY 7)6*3p(Hg1\ 1 Pk+W_Z4eLA,>dWLB 3Hf73W'@y1uoEy 9-~sIrG{R ?7.9zh/VGzok*TA I7\;E[* jc_F[B=se%F<5vW(_m_#-Jxhpk$%I!8:Nz\R]Z2xx$+\n-lb 6Q 7v,zwtTO|A1N{}tm9%LnVuhz^}y@[)`OH]$(%7QH&kB$sWE4IGy{$nPQ2<M/*N@} bTXDRm&Ns.tc5fE`j.Nfhtv1 klrklQOtjWhvs~XQqrQViuS1mV_5V\}%}xz{dv7;WQaoNvAi1j]\LHJB6P$73w26 T&'PY%^lIKl>LibHo{qvd~dsiJD85BFa   mcMjcu+DsITY0#H:g;k[{~ WO<=BL 6mc"`NfSmg'SyZNy=YZJg"56#U6]^[li4wtz}(rcH^^wli]Vb A8<>MiCpPu]Syczd~cztpvR&&3QeGBg[5U-'cN}bB|+eBXfWZ D4)Maxm0Zf}'s^Wh5,I,"<0B(1PC]hvuszlUklv{toIlwk+W\zfN,v,>rh3#3-"bjrtUby=VXn{V\orUc?HY9 5fCkudsD{aB`vYW~YH\2S{y]/.%g6':),DQ.9* 3`s\fUnpxwYw#F*H*>31J4X@Yq`ldz~>-hATY/[4Usz2t_tLcOLOXWzwp .[jP\[Pqx9]#h"q?y#DPAhoXt\oalw>X^{F}V:m*e)<o(,IR7p2aRXY{?GSn~"\;< .lxi9b 7>8Lp1l+=4/h"{Bv([t'><":} eM"gg=HAoQ.+p'6Ax+JklkM<oUO 5 ;@ 0 9| $[=dz"V~lH"|KMY1;uvj~;Kf^z*y7Y bliD*Ct=TGJ44vXoK?[5gYS. ;h wu"3! Is0Z lU\9Q^ZIhBTqRA7.Ni_x>&#;TZ6(x4mgK97g[T%X6\K\,&\'k86VW UeeX]zs " %*>qmk~&-a$ EZ/Q:TL uU#)HdoU9!70ZLP4,70-i]oYwQ+;,Q4GRIQ 4S^\]'yBu0Yi^KySkbm+#i>x2AU#A^o zJt}\J#:L7]?kk?#7SG>EYsS( CK: ^eA|ZO(3$Km!h30Yw(?0s_ 2n<+J :F [_Ui]@zMaEF~;jv[|Hl oz+QP 4&g TtSrs Bfs>-G87KNv^}WH#97NTo1rN4rLD&,wk_vm=<ya5_'nE+=@^9rpvM$VYY3#77g I-RE!4] GfO'y'kLJrf%s0t8FdT?1Lc.rbU('7DZR*Oh G"*L&qDTl)B-JqdID" LS,'inMiWLH1$yHud]*K!9Z{cn.bHZ {I_ Vs% U8hgILTo7vFj;A$rV+ ZK0L/jRG*7cflbPudpLQx<n=Z/\nxf54nPPwa`>~Y ~Q( -Ct8TI4+m !: VyNNN\xp;R]7WJ,Yb( Hr=r" b8*v?g J8;>Y,LtEXu}:hta N>Rs=5(uWJ O;o 'DXHaD+dTko$:8IOWb<9UMq8X,.% f!7Tc;o>)f*5?dU^FgP@vtAov}\ 4%r oCdhC}js VJF'TCp>{GgTt8hdpzd], `# a0/I$26#zzB/(<&2,Cn;Z~7:Bx&V-)t1C'@Y-?9s]eNmGg{l7IV X 0lJ)!Loe)lP_EEW'.9 YE~VP>(i$A`3! myWP1W%.A1N'q n`ZG1G F{ 4| *^Zn} ,@Dc'2$-<a4\^j5o\)6BVl^vd$=D7$l|+\[M  6nq6lx>Q`T$5*6#Zyi k"K ffS6U5#U %;,_u o%+D*".S1Hhx9.O{Ti4U[8/F%~3/@Oi;rs7s Tg2K_G> zo^ Q so   boQ+3  fo y~(<% gblKA$wq6UQlpux <kD z?`=.[ ^j9 =q{ &Yryu]> r~>l`}- x!CH!8-yB:T & iL.CAPWn[tMO}>5k%, o<6lht!7'8<\K35*:m)zL9H-b.m9~3#z s$xw~u[B$ 5~^}2a_q=lfX66Uwk.\_knvlh =5aP,rJ& Z$x\2{7hhZF3u\-gEoGo3Ju@9K~VpwKe*u?sHJ j gf6[/-E6we7)\ ~tnuxJ;b}}Hq2 [ S|(8PWX\I(lgGs%)f,^n^_"xpapZG5(Bm&,DWY@WH;5K^W%dHBQ:(f`i|NU<z>]!DHM*CEqW|SI{O-wwJ`c\p&}M+9HOV:V\-Y0-eq.}mF}hEto>|_QXxkm-|KIddC8E+%;-KO$}:{dJs~|'af%~so'_@n:W;Nnn_jgzg{\p9q\Zzr7e #Om n7,)-q{h~ryuX8- ^50\H6?}G^c_uVXtA[*q!w^HNU$T4Lj-&QD i ?Tkw%.YYc4Ru&Vc7A}t ^hp$ Z xM9^(;nORo2j  (ss%1!Y{47CDQ'xoPWQ*iAHH%ob`e,mD"y /``4$M}R9Xab|rK$,/@.eAr lt~V;P S 5S5y'P5HHOr70~<lNOPcN8U>4nDJYax-son^aFbeRwdVRWJX,[G%2q   7}+v./;'" q Y  c#7B=CcS^+ B+Z})j)QyN U SYo~OR_\/ %HMD*wM͂jTXU ͖*%5Wi  n!&5 i|p6J",VAx1 1 m`?_  I[ p{.C4Hj(-K *Nquv C  G!l.vnZ jO/laVMhXVp; M q|fBoC p. v* Ig TuzRh )S m X`[W+  d? w N(.ks0BTA 5M0t!V3ӆ 8  Ո(M3 G ^5#I admp  W z %j=.=ԗB lM b|  F eB_ K`m*U?0 Ct]X"ZQ6 )/TE.^С:Rcb& ~U $2}o IzgDX<?tuX$i65r:m!$K5@ubv&Ucls%O%- n,pV =w&Jc#eNt,;W F=%P/z gM% xU( O,I6` U c &uAE#&V&C /:O}.!]Z7f4 yZ T  > P<mc~ $?ND{Yȯ\ SDicܑYt P\\? 't =#"4.`:9>V/zPo1߄\}y S[f ~5g^/0 /-.[@;@G=I|nRrYPG@T [ AL -~ S RH32 ] nS wPm:Aiz6ze(tO=_ew 8 'q  `[d (D jyYvChtwb$7P8F#ބԃn }g f w C}c@c zM:kR>N85(3jYG7KL7`v( x fQ5Bb k(+gV^  C 9%h:<^Y,V'TItAMrCID.2ߟ I o I&8l S)eAv1 K FF+<#IkkK[Q^ A<`8H;^JL ZCS s P.j}? )Li^`q #grn`sEJ7<@qs=  5|=w * 9 c 3c nDRw&@3{s"Cx>6 E!GJ(D c-D T : Ml BKgt%=~ 72gT7Qx 5ieL%E% nzv'WWph % vhpB \%AV;:J bC4uCG-F j Vb 28 f, OBK0 _n <4"^j#r[?D93P 6 Szb, JJI6 jgI[_Z!P]|2>u[0ys/LR% 1x%ۗ9E8^ (I c lc[~:O c:eR.Vj'C;RS,o XK0($&]n[gx / Z**$xWd Q%YD^.mO'WSE<$g /.1 uH^ b ^M RN7Pdj1XMt'~*Ea"%"apn+Q 8{39dh.G3p7g-u%#S _4 L94:E}|r6+crjl. G Yr:H }Cx/{]W5%rqF6AO >;sm TdD*C> c  %D]  C8~g;n:?0&BF+DUw[ {ko+& U 6{m%u ^$HnNO dmpe%w B7V'w1R Vqn>:G g <j\ 'sb7Z z2l Kn~ K56&W6 3Z?>#'"Z7 =uX}; gz% x (  EuLd~UbQ5TNeB#&:@ ,x ?S4k^  333 B{ 6Qoaf*r!2}Hgrv|I$G7(Gt H52aB<>H ROK<2;mIk!9Q1`(0AT>%e Wr> ~g\]} i7\1&/" Y .d{o:b,@3v>[N Hg!2=q8 L_N\ 5 G"N6J  (*n<8%.Ar{n !4F <3pSh( 7 &D$pj?v*&m6?:y( O' =/^e T:d*  XDY+| p  eR "(AQ!-.HB?%Bo0@c 9eHL}vKE JJa !#cSzM}LX-XaRJW1E% G~1 g`!Zq @kXkM>M[! I >%`sj>>6KV:@5 KH$4 rG\ %@ b} 10 q  LM+bMW-MQ*dxVvUvH,I Cq 3//redb W>{]I T4myL#MD>4A>kED'j -KV( , F )! ]= 1rZ 15E;t]B 8+p/ v.sLR%M` UY31^'S#dBV G & PfB@ Fqn R,\ W3&1 ! ) |0: "cAT)9Xb#V B2c _AGC*u%-8_ .'O&_pW 0vA}8U=TR *fcxo'Fp-a5L6 (Cb 0ONB  h#~1Wr@i?U<&df[yT v`7K 0f$Jg 4~ G 9ng(}iS=5"< ,KILm d4U] JBC%A$X LTHw:s;M.|jZHq76"B {ya0A UNnh  a @ 8 ) n&KJ/\(dlIW*>8  ^eG @#[@ . 1F'pzC'i_ JB \*2 8JWn @^%g \j>L8d88] r5hl>Z;6::GTyUWn)8Q#k 'd 6+&8# #d .L)VBZaIl#Lne*:so|cYr{Ji!j ^`aLBwf ds2; ,c#-I?\&V;3KcwT Lu+^w zLz}_b FzHu?$'}(&4/+38 %APO^lLk*>b;l;1w7GA2hip^BP-ck_u"8%z;P~q-Pz[Ys4gzOCw5 Iqg GxCw#@a;LZMHw3'%nq BU p%T03+jw\fN@C0Vla^*Kfe7+r.fmIgT6,f2X4]!m - `=j,A ;x}>] ~ [<,Lhztz*W3;FJw23RH#L?j;b >mdG}_S =o`EK(I"=p+2MD~ 1{nn``k 6!o *N|n&i<<aX2s Z:;BB&Heyi> fAN!0*cwtf) \ 7I%6 iji V7Q.Xv}}hcx?Us=if}%3}.maD!s1 ; xs`5 *itg*+N Y :35Mj.5*;28 8[0Y_ &N+nO5RFLr*kNzSe%j6FMe@>I X 'H5#yir Wv)5ezo: !lxW*LXP'ONPeq@hE(h6eo2L;Ipj?< Q'?R UGu-b[dW+KN{1\  5,YOUiZc:.>6hRWY-_vB~cJ\zRu[J9u9AZ)Lk Yl{C 1.zy|PuJ ?zD ^{(v{ 8XZkLc[s2cd -m^dq`WBMNW-Q}*jH ^/VyEds@Qgb"Y7tJQ -RH'<IT 3Kno`)d7Ob({)jWF_)N cX/XTbwq1zQZu06h6Y\ TX/D-lOM8^ MX x1s3keY>a7H  e  THpIUaJ}&ct\J4  Elrb F0 ZH:&BL;cS0 yM2v/k5 xz  <0dy3 f BN$ebf*x"A%%C "VTi\ ;E~ )  k` )F(kJ}@UHguP=#$50e_%oalFni  =)X!g;N = 'F7/hkJ] *\BL/a+o,SA<] 2+ `<.S_ ] H%o=%A;Dh'*F!1K*, ^ea{y a#K; 5FRT<4O{ X8p)WBY&Za;/tK!1'F 3]Qh /x[#lFOo R P-0mJ"S3~8 ; 1E lF*7 Gx7%>8# . uz)gE9",T')  V,j  I <Az.i Z heCsuA2[2Qxi#T5`~ z/&M @/ ~$ vAf |iq4> 8^aJO`yu)Fh: Y |'}9>9 y3rF[Qs|),Z7XPFuit( \(>dFa5 g@'&qh0+ H  JUBh1YR$E;W:ey, o$A "2,oK>1vp35/o 9 k V  b+jCr%yPL)ZD9 eLB]1fAX{PM J! Pg 7  6 H { (\)>Z{"y-~> ~"!hofmX(iD \ k 6 FO'@)ctV^#zD)K0/GAC}bMKY  8 i  lYdDCe LCDd{(HK H(]sw08Y7`#&m0  j \|nDpR\>5-`3CwS.iGL(Oz\gC= z  jztLeuW}]/PE'h(s]DEf1@7#3B sWklHmg- b y |TvRXN(Fq7ggD+*L]Df8XB hYl '0/|| 5.l|.7z7n}6&mr82*W6Ji|:SF "[ >  i?@ ?IzR4hsLQ?YDn9#GZf`;;0 LW8{qwB,R xdPPI/3"JX`LKYh%8@H   \ "TO{-.o),J|;^hFS 1/~IA4P:LgXY<q$%wu0 aZ\DSI60^r;af{7<@4MmW1{;&f::zIu; M37(cC}~4  a^0Y aT+3\%.L#] _uc-!#` 0`"#hjvmMN8E]TolG|E2 0Vat_%F4e.IKQF\v1h<0*17SxI%FT)e* x}Gw[HjlXG[kM`d7|}b6\^z_Kg'^o*}  <-B,Exybyyf9\pw6<9SL^Ar3 *7)z1Q-XsWy+>*rkr?WF"aeHXMUcp{B'x '#-1%`$$FX@$8F7,0^/8h.4x}faVWw@zah?Otnu<4:  q;6zeVbo^XZri+ $s2"/00-8?47YpFuvotNKsHSumfr`On-LL1L% e7  fwueM~(QU?NJf_gkdQXRyrP4? @NjL%lx{J~nQGoxn=DXbD<d/bP7 Vz =Y @m!ro9(uML.a shsa)Gk &#c#_b&Y zO7k9F|ao=11 R&U|kW2 / 1 mJ o \-kLn26 k2dUX5:<L'L )P<IJ-x2&i8'.^UG:@4'a$ <%(dHu|Ch}L@VDLU#mBE$& eAQ\V n Y,s?~7;q  7 uJzn{P-6AV? =l+hC) *o o  (| m cu OV?}(oL5),%  ~!h# W7XL1 l,sR'oaE[-{6SJ3rkc_77B%Jr/f .Iks@}p,[N ]TBX# ]1{6eE= > T;+(R p<Z <M)v"vqoMK %_ ^[F5u3[-W6f*fk03 C' SJ PJ cJ55|,hgP/p""T  /x*ZS=DLPVL#w5c]> }X<| {_Z$Kb B)O!Lm# ,a''y_2G}/70?{  'S%M%_5, _/grnKEZ"Vz1 7) NfS  D >.rC((klYB}xuH=nN9%B7,yC & R:4;df"eWk3 Yq)$;L}t@`{&9H!H@Oe9#h VRw O T+z^zvnC4&80 R tzE.Cx=3W(r}X ?Ss7"#Q< ^ f/ 2= BP~p| ~~oQo|qBb g'64V*\j_k = n%gY q{?[%n$$'w 2>n|%U$KSz/N$$ 1RCT_sQoaAaiK )*)~s' &  " z=Hx/#d-d{m/D"M _WJ\ Yh=dpL{) >TzaepN y6  3! 9(q LT%@jt|zaJ3n>?SjGP y f2>B \,r"Qi:}p!'"mXZ}h h'>A|/h)i`8q tYLi\ %(98Ccls6x+pM_'y1 $T F}u2!o l$u /RIxHiqZnr>,:n y5f3)+<,nqCyfQkme03gS  FP+ *O $TfV= MhffZ. DI8r[/4-+Q B*_fn uRw:XnY(b-O4 v&1 v*mY4{:dLmIY#)q:QEF Rc] #r1 I@E`8M#BJ<{n$7&XEEz|P$;(K6| M$ %lQwWY. $K /k/v ?NGXp!75+! ^v kU9 ToCgT'Bw7]  Z u &PUjg_? P=!;~hs 0,p4{N-Mhv& ;>n[5b \8 ?c8Yk2 !4g}\ V.+O] ]TA* R9aHg X .wq$N\cQK+; Q fMh`UVH3u >w 5(Ih !a|  - RKP5: yFlJ}@r/F5Kg9M",%1 $~]V} =tR&S{]2am I v#LX:SyWWL)\-T3t7 E&n isaU_|%+Yvw 0~:Cbr}rM1if+X'd)#G('H@ svo ^dWy%]@8z y ~Xh#[x>\% 7C/P.D4 bZQQ[ 87GVs =NKF\u % }>"~G i]u,HM N`xq n8lL*c\GE*HuL6= u{w5VzJCUGM ( d7(@NQD5&J$'(KI I='|mU(h 'Gzd}Gm ) 5'jpgp84)*V|(q5qq]0n > SL6  $H'"N{1+ R}~x,]iI%g{n$)e H4'I)QE=Gc  w''Yu=R| qk }^ 8 7YW>f`&}=eK_ Yy&]hZRG/ )/G l]Aa H8F=P Xt!+ Y }Fo|o;2_R1+Fn )gamvX*sgP+YuwS 3  *j^b*d_W*dxhW Y"_ Rjm -2F}@ o }a&Q9j5 %s!" ^q5, p*f\@oTPrlMV38iw3 'LH+P/" I#Vrkfl@(8%Oo K]uE% I q6C(3QF].]q !od[ /*|Ji7l %(8;+M O `gEbUk=5Gn B ~w &&*XZEhO#  + ^U ToSV5sw_:L S6[!t'T_i17,,T|wiCvaKw}b%! '7$  {YH~jot Jo:%Aig/[`f~+0_9eN]=' K ;6p~)6`,l#c)k$< 'HKC_t]w86K ^])I \Zr5 8wZ^& {[?a pG>fV?56?q3q-1LBg0H&t vOj.$;h5T0yR @hHKKYN-WU L#Z)9 sF.x P.G/5$<~ N f[q! ,81e>$ EduB|W[ *;GK~9=kx_5N >I\# nI KQE^ ! ?}g1<G%YNVl5"ry= Ys49QZAFmsw(A5tUIZL(C Uy6_pK` )VM Mqq! 8|/ "I/g'e:ciLH#VdC  #F[ x/.m*0gl}  p-[Dp#(9o+FzV+\  x~Yk_ HwUny&&+ 2[8'{<|m/w)seP Dr]w.& m~tx<"h%,e OBDSHTMLAGZ63Fi0 iqgHg2s8y ",O}>E }bgX-i^s)Kni5x*?O~*)"I:0,|, 7>P=Z@IGAt*k|fM%4Uug# s*7.T' l {Qa^`f6pn]5dau$^Wer~Rubgr4qE/z6+9P@ZH2*K=MFfn{{?.B_m@ ?XR,vg6*9w9tLP% -7Ne8Z!)Uv9dd<-c F SzP[gCa8Mkiy5#0e -nD}Js<1 K4veE*zH 37u]k]7=]rA3 :97 h(}.e 9pV+eqL TbGX;DB|iE'UHy_ bbI,} F<O#^`xDe:6]Ml"N+-Qv; ['"C2{j[]>Z Bvyeux./3 4T cQIY+^gy=ya&5sS)u -urYXO?5"I# c~G#iPI]^NrffaGiRXaC=TM-Er8U?k;u8OX 5^tCe`vU`m)B=XO'!3[W;e0u`x>cpwdP&[SbdZoi_|cjXLMDZAQ2+}Zm~lw\b4m'duJjnbaxnrq#%>IQBZRxzvZcyA'IAL@P<2,"! L[^~5rWmre0$UVb1h1nQ-M'j.|K]2N<X9<S"Gq\9+I!W(X3~)>Y8, ^?(`eLc>}p8,,VT5mm[ UU2e\|@Xfd$:L)*m7 /FDVIahA@~s$J}A EiMaN;2z!].z5wM*QH)W.% Q+i[x|}sP>x# g_%|m^NwG(OM.XNq:SCQ/r\9ltJgFh/2^K`wcBn4 bF@CTB]{mobh`M@c" az2 w eoe[+kaSh dN|r|[tN.L?*oD\y@K ^@a1@eQ.yQ;GniL83!e''^Z^:n z^ j4Fp   '<b.D%VgR:P'8XTIh3 8\Cjz'/Yxy>\`G9zKDf^i>a Qv\TP+XN'bI$7,*J/?S$%Ph\P'h-m7{+m5,.%^s>{ptS*RrMl"qR.?x{l7sRa )&^"؂#r .O%CC@; K [%*0m?CF-,;+ kIM-^QtIq8f?qx="er37Nz UK3Q]3\ c *5<[BYb+c @\ ` Q ;J -; U8lL!=% ) di BI\01 GU]>`H:3*M nl&R,"*9a}`-1>e+ |w5MeT8X k" @P#vIOg S,oHL6% <hs25!$  \{b 4P \ ^'dK N$#+n%L!T+ %+x1 @j $&\m"v H#o%&e uC=%M{$go  s@" yj_rn J( A so%\( m s ?e =R  a  cGH (i H' f 9Biu XH5 J R>~<' =,gX} wqK|m  @ sP K 9$& *?x$OP* ,c8PyH-l44b3'T7Q 6G ^G{ZSc9E~g*&r !3 B1\KiSPU'[[I1Gsp?ag"?(hU o8[;Ip3iH $pebk_,= LbJWM}GVZ  r1p@SIt SuQ % &s!yigVe *^S V toC$ vr H;f3$Cz }Tu=T vS$/W  {j~xc. '0  *a:`2Kll-MO  E%0%p0 ?fAu}4H0(^8a K1MKcQCgc vqr3vwV 1p)U b<  , +lwp Z e4 8 WOMCI+kc;Z5!4 %`%) JO !A  * |Xp2KdiAWo@VX EpF h$Is ux9 Bu S ->Iry ^ ohO0_zD  ;>{f#j WK |f\urS6rjg,@&! -E``Iq 3a v4* N aLMU z Nrd67f k _!d qVY # HJ=RZoLt 7kCV ;LnM{?H0wmxg _j\,, :-J X0(8 HY o  0yhX(F]hceMFHe8 Z_  {9VoBcqk]PVYD0^ zO a:X:*5dyxbW~ B 3 PLbd 2Y:uSd J|DxU0 .]I_&x5ekKeoz*h & + N c U ?@R"M, tGHjy1H((u)*HSpZ<SG: [}, } +Vv g `n2J7)`hyu?p$0n3U\{Ym 60+ivVV =n I < zc\G 7aTHAN_dsw X/v74 f[&$   6 OdnO-cc$a\m50hmUS }\_|Kd+;`Gqu`DG 4 j   i RMw ?mLF]AWViCVZ}$v)e@490~9:@dnf a Z u&edT:UslCSc Hh>N;}/ Bd7N6#g.@a",_mO ~J ! . ; K  <C&jI Igq1)[=n8i:^bQKG&}[A%FRswXm5 3   ) 6Sx ;y/2 7  W J]"IiN\qu:4!t 7U PrWLez'zXB!j?T> K  F V2 `< `@Z[Nr; ,F5 N3 YZ /DPqOK^?Vm`Sr@d`mfz_F^'E=xp$ E7   ix/&uA;d=:![q~2oz<@Bq}T/f}dyI ue h GWC-^#8 :w'|+X &`7FdDn||I|Z+# K I  : [ inRWmWr :P#xA$}BK)OLbKkhp$SkZK ,LE  7 ./sQ1$"gb=M ]tS m]Gt{o=KrRFL^' R  e 9pds=41@G i> 5^?~qRl qby7u Lr ;Ri{p\+ %yIOW xRNZ#UB}-)QE`jT0B!5!$ 6dU~ "AuSqgf @ 1P^ Mk qw[- #RHv72!iTr K .p(#f_ {&klg 2 0(oWTfHYI ,(<T}.T4;xM,[U-!O=66 N7!D&:Am~ W O <@OFs+&pdOuidc^\  T7\;y^HqyRD L e~AbYNI " Jr^p"Ml8|g?9]K_(K [ d  ),6} z kj5K~`[VU~  RZJes>L5?J I}Zl4-n bsX )<oD{F~ = 4 `R5]akXP| =L  9 T!::e#M<c/ spsk#z o,D7;xaGz<_1rq; U7nd5O |mkY60Y05Vc ,2)3h`UA"k ' y :6MZ# ' { [ f*Z@ l#NQi4TyoGAe o 7{cvu 1Qx T  }YYakS gu J=}#ac:k% 'FeA[?4rDQ!/ISm$ HjRLW3 \&6FW 1G7 e TIj` 9 //+Ow a JH;,l4S(_f: ~6 tQ Wso zj`H.7X_`u? DR Mv 1 xliR[.);12Z?W _j< 0Wfgi(b 7Ur,ie{~Bx$U7>%E <[=#X;Ei-/8j}=Wg  v HfO [ iu[l 1c  cyFGop{U92xdgg{pIvQ `"!k *B ~ E]qf|X#~ -hOnTf0vf) }zs&Z~C~fWkyZBx_H|r Pf 33:}Ok:1vti  jbGXY{J}Y*{|(=  ]|"nn}J 5 K`Z^o]1J qYkXH%qVw6Iy L W#h#oN' 'cI<3/50@\g <zZ/ L xWOME G1; IzA0.( ! zeE%2|%eN < ]`F&|,FC%W ZM|AUy }KEl+jn9l d]l% 9 |V0' AH~x|N-Br|a sfe8)4Q\:^aQR9^'2(^@ KmXi yt}4E d 7F1"9H=#  d8 W;0E_M:NvT4!rk N 7(  q > m#'w8/ " ^xQd2-:3mM]p>` J])A>j= &'I /?|P D cEy;fir,y Won *b# 1 T(1&<!rT8*&K >^F) / |=RWiV hB@vikG  J vp0+t `\UDed[o6j HVsSr=-n m X6E  ' xw~t  !q#R:B5j5+G )l>Lw Mw d ~K& =oT39Z]H^^[ :V&_* {A[br1 Jv!z  $`*G k MN+\ g#fW80Q2 7C:5)Y2 !|n e &12 q,nY7y JzJq Tgv Qwo Mr:=6o)%<!:` %JPy ,ddZw XLL:BIY> `wc'~h1&@0x8OjC/L4 G42f)bW wb@v jbz jE` -bq;P%Rr0N[RV'z2! LtX  m8XM!h t&GWFi !g2 N 6w ]N|,h?R %r H{RE #*w:m g@jar Ct'@/dg& (Z+>Vg>87(9EWS|)%xV [$\'2  @wIo]osISkB^++cy<$B   .!w2eN] N3&:| R]>a!;9_4T) o{2o: " *mTzBY9)Lb*@jJ \;#$rb:WZC&pR,R:,j.C`SS}<+a~CX=MaPB(HSW1\V /2!}y$@Ghp'Dtbt#^2KwGL'/lV1.{Lj]Zg1~2Kw+U;YC;.M:5GAIdcU:| mSB 3!,s4PO7[[ 0zc]pp(F"CIsF\H1f\Y=TwP?zsl`|(8N2H%(Fq'8b 5HlSO X E +rz[9Uki^K?Y|[cBhQ&ei^W+#zXbrrzZpdZfc0 hPdJ#NP M={E AcQ)~i%%Hk_99EV{GQME&GfDDM^FmsZq A!4qND`da^Xu:Nv`$GM69145<i:K13YV0EDklmB`'4 7=!0= ;P%IW'2km:p1nm=1&[%/ f /h+osi#\*)nyIS_oMXg0ojh`o`6C;A[cNkV4{foL9TjcF78A8iLepx,0)8Q^rtV-~eThnu3J-;,]T ^)D@U_ ;EzOd}/6Ah2QPP>C bMEzhKcgsoM,h /mjI ZHAO_Q[+0rl?- \&Z_+B$3b';uI5yJkV%XV49Ym+93 :T}Hmcksc%:3<=T\ 9WRbpjY{qR=tXGeeUpfuI' <k +jL9wgYXwdBJ9(4\%mm_e[ [0dnj\D@o{|Y8yR&`BM?z   _hmMfDr6<Sk978z:[g -xBWJGm*wl1 u Bph[xs@^ .WtP*9yQi89#,z C   LNY^ yi9Q?V Z?-]jf-Or, aSNWk1  F j U@ R)jZ^l( (% D` >DL>IpzzN au   3 8?=*Uv,>W ^ V(EmX@ ]2 } m _wy[_AQ&V   2(<9QLnO;{|C1 /z *d x? vB8aH!I ` O  |  MVz` WW/K?:&~s) = zbQt*n D  |*M&* d 9Kam1GY%-B!(P 1 g?N_s? K  Kn.x2TkN^A[l +&j*S +v  /4 ]:7";Rmc"*E~^U#1Q",Q!)7  r!/%@d ; `z-\"W#%"~mWA;S:~u+dfK A $  n Q Tk8f D-mz j_ ]O}y.&P ~zi{/yC]jA S. .et-b AY c  _j#(A"W:Is,'vul `_!2 y #   hDJGzT = ]h  4 BnrZN n@6 C\efXT6=c26 Pl6<3 j$}  <>@0p6x  id@ymlH:G4n";r5C(  {lr@-}!Z 5]y4*%xvhdXd|,X5HKdc-0%8weg~p z gS*h+zO1<K@Rp\> <,UjI v#N6 Qdk( JW&nU/pBYDY\K?hoAK6{ =)8/u __ZG +_/X{C,)p?:,w ^ bF =#E@= f#>C3E?wyRmSl_/'  :y2?vLV+_0B  '5_lo>"5_kjHn{ eFXzl h?})H;%8/YwXaLW~7*b 7C 7 >:^d_ ^ +V-j}3XHIcQY  yw"kJb x '4,) t %W'_?bjoW/ S (YXq_YN;v2nwF>OTq )-v`*4e\: T _ _ u ='p,:v\FpEKH  :?}q7/bSPpyu   A   cH"Pi~rXGmmCYR#U5D  VR e F aN1 H{=>Ic1n>@{%t%PGM& U  0f  vU9hFUC0* f/*pj65M/U +y "  * $Ct5[40V]TwnEVEHff1;?qO\ 0TsBH @ '& i'@ {McTEf<= lktav=9nR+  [ )&5wH#hek1j#M,;6'>(*GPS ( &4`I  N@vLn!"?~uyJ6g:,+gpH6+r  #|U7  *'z9Ork"8h52RnSJc26?yu7LJ]$0   Ke u7yXG*e{*Kd t).Xv)O>o(Z#~HY+7 /S h g  lPPOMf8 ,nP6!j\rl7@@?)J}cTv\2 ~  sd@L&I dUtL+r,-^ooNdKw*m bxl>X  {A  & Q NelnzmMG.lf(<#RS  Z \Fdm jWaN/s` G[ f8Ok"H}"f"/i "h :-e`|L9z_F-Q dx.l} f^h#?":H?:]t|m {VoB^q+~jx\\ |,E gi, X*O%(8 S]>/kXPPJmk[.gHp6 1WH(j @ Le[)cSjb@oF4E'+68_X@HCt(y;7BD(*%{hg{^\H $Of6Vz}5(ink80B@){-h =0#{v~v5 C!o0cdZWj%D^ ]IQ@ ~*|kV_{?Ew:v)lq;d8ZnMZlT S]"@"fMWt&{ln*n]k*X$0 "@{JOFI;ii <3D<}J&d+u6QH*XS9H7<[ 7pIuMW ,:W,spm@ycx3,%;chai #@xZ xm6F U'sX}J4_y]|yce  Z]7n/ c?K^u4 _4%qtK`[_3 =B3*Nrp-Y!DuR~?=II1'/6} a4kw5jQg !d}'j KZZH hQPlsqZ4j]Uu* X 4+Y'TUgyT G_s# w/kIkV.UemXoMC/6 l|I, Pb ,l  EZ[z%YgpO.SNu)LiFX=N'Yr{ N % 'c HmjMX(EM? PV!)=`*;'M.]I  ;Taus#@4H; Iv h}$+Qve;8DY E=<!R$k s0"oBf0  ,y tu n [ wI_}]'1Zp^f-0/$  l\d}RTmV.pS*l / ' Jb  mlm7$#~Gu?F0&dIgGk^H9=7)?"GkaY f m  < (i2.MA=c43?<DzWhSmhx?N8'B,5:[~ i8 eC   !twy*9n[`\9ID" .y  >}qVQc7t8  +  e .;yX=.hrkdNh!A;-n'R:q)AL1IzMb .r  S wX;A.K |  mS_<~_Si>+bHrm:@T}} ,]<]w *  ni qT T%6e:C5m z^43EqRy/k^TMT`^s{Ej] $X: y &wJ 5-9 JTn1jG55lrTlr@Z'ox9 I5 m k \3 \@ VV)|m0^nC~F(wU1j/X)SQIb! iqe2*J   _/OR /.<K_[ )Nr kO3_?g`LgD '{`5@'ry-tU)+qHy} . W |we2h~&]bKGna@6{JNa 4"AQ2`Ap o[ Qu_JU,Su_>z<-tRL}]*zt?", yqQJ^R4.]ns~Y Mg _ vb?|g;q hC5*zNP3ZS/yQ$^ 2Wh{ Es%'g8/:}@]\`>^0Ql142_t+P+TvQ74q 'Keg9#:g$ ,5Y*Sm~GWz:qBb^OwQ6}TYjI8 _Do w)W)2.0!IlO][d\Bw: o:L@K<k\G8LUGMkv Laeb/Vi\jc\PQ^l#)&mf|n}qWI_cQgB9wU #KWMkYf?PRijxr~mHw4@6Nm_yGjv5E(.e1$S G#wpscDfN' rrPPD-^=j XH$#IFx`z}Z(tz L97IT^n?Fiv#c-uENy_n3T\wv{I_$f3Z =Y b ( #zcJ e.p3j Gp!@dOzD8?xM]e+Zu!^+7o3%u  \qM9g wk~o\v eqEm#mA oS t16?fZ-36&M'+;x"@95z"2t r{~H2m\LCMOFYx[h/MoC95|y%Q\ Im?F(kh\0EwTxM4?}M-U{ePOukxOGBeR+C~QCo_yWz'nUy!yC = t@^  ()z1p9TTq J. !j 0 /#OrpCr({5vDI*Y!6(W\[ISuDew)."<OsijDpWwKd` 4)'V%q\Q4@q>=6 0l lPTAj&v: $u 1 46{ ;%D ! !3 q"zxQYS69 B%*%R Xri/e =J  (n 6 O4UKn E  T\K#h(:tq=1%y9AH*6 'J +CqGt=Ih!dRw)hM B % Bl(VN=?VWV] GCB_ uo.nneB T$l~KS%@H\` > x?:Y`I3i }=& D; Y[6bSB^o4` NblH_/ax761y{y&K9{7=9!}1lJv" _HU28"WC`i-+Z/ysOc]t+'`$$ J? [lh%\CpW>vI'f F r  }$gk0c),DGiOSXC6;1Q!g "qpxU7  C!|@Z:AV(,">E*,-P CPA% .5V| 9DiXF>(> M)k!b>4 At./c v!i  =R5TlIw@wb2Y$A %< : M#l=X O1:?h9d 1AO59bM@;=?;'LB9!HK&+Hh ` +2q(apt*^| "UE y Lyi!RR v$QM >FjSS&K @/1 CFw:C7?# ޽FO(6r IoV'SQd6 ZUMe  T.:=:9yg|CLT{$G)*wqy:MLj mYu~  3,S CF[>tPW){sKAK& @ vU jl s9 Nt _ tFc=mYaN51R{ ~dadG5 -,I ri h( 7 V6s\.?h7}_;Yu }^ h QdV %:c6Z.z=jzUL> xCp(bqL9D iS%"32>MWBOt^ S'r 1fwzj#jG *j=/m7Yuu-TX#0;B$ M0u!))Qf`HOo|aZ^ESTmMuiYOA}e@M;yLUDFZ,os~M>-x+e@WPVk;abyf.VamHjIn~n/}oPKLRc7sEyl,&EpxvxJt`\#f[Edc~|rEJx(yu@% '?F4-{h0YbAjhmT#$)H@5B\G+Ls"~vSPm|wKtI(JSA@MqZh?Uz<]A{p8"!qv} B?=  yE 'k$x7OEn .]$}:(%n&Ti ?v($ s77wS(_KxIe3 ~rIs g Gd|>zW_fvq.dRN ?za~A4 U{\5 iYTo5:=iEmphIj^qwN<u2*=  ,/<"x9GiU| Y>^]P1].E9Uyp<;CjN?9XlU(cZ;oT Y[@1{nyGeu@-*(ETv}G0#'[Vr5.$y ax%2p,~&tc2':Eq9lK EE,YNf4gipZNa,Vw5T.[`E+ ' 0IbdY"k\G3$czn4^A@(wD+ P'otIx^_LTKt,\L^Tu_uYp%k?]<]i6;tb/uzZa_2giLkP6``2t8f=R~6Kn=yu^]Bb>)&#_OZoLyuQ"pQEooo8_pOc4iu4TUn?D@uDZbCj/bq%.ZRz@YUaK4@HX@KQc(?,G)o@~ Ub  @A/g M 4g m]+T YDN6>A] n_z w <Rtm 2a ymB z89 U^laNUlV  =Q dDK y+k  b;Ag1 (f'V% yC BWdH|FB4;) %?~=PyV!IK^{ :C uH+4{B@_pT ,7&5}uI9'A,gR YR*;WW+^!?ef=P 2 +[JP3M/  $Z V9A4IytFC ]La &| x!M { Xa{ Pipvb,eE @2 zDO 1 &1$ $5)&und|B$b]E8ifb+!CP~LP-gJ>P8y?wM)Ek.zU"f9EwGbRg_mK)O>r^LmI_bC QlArh8 =  {rlp,%"0ez#' Y|%? j ggY)H;W$$]  B  e:]Z9!u8K^yM E&X 00a c S 8w95Df7"v` 8pyUyb L5OY \oe-,"BV <t-{  )E8~#qiO&+TQ # E|Q 7 r>-R K[ p1{={C|,f 1M mf"oL_p:uni&U ygOH P'pWf +/r@bG } 4 i' ipEL M&N\A+ s _,dqmss xK  9" Q[j^_o8  j u 1SP#;{n'_Tx,e#xy_r 8k , Y=6{S#Kc b au's<  h 65~QCj] $EGx _9_ n77 G r7wpXw!?_]pSW{!d KX W #%Ny B i~+k[3 s(%^ o  i t%h^uML)d q$&JQ>UR)dRSaL4  K rq z< +f{4 2 ' Ao@i7; #F =\X ($B7gtVZ/Rndz5UoHk2B'\m~ E*kSe82 yb] 'C{5 qco`J`>OA[dS-3_E@oG+!}gNlGKi=h\u 5L l j`?tG =3%G+/6rXazv3cd  p*\t*otiR>lDAoJ=68]O (uZ6ImqOM)=t@G9,la ( eJ$1^?)bLzJ~I{3#OQ=?@Mkd /'(,} SW#b5^"Xdc9Yq4H""B " J(>4^H@T  FQ:=ydtwElne ?/5 CdlfG]  +5SDY=_L0|  !sl3S!SS% a p6\@'OT r ld.9g>TWh)V , ] xs%}5/!5  - [1rETR=KPoRL E b  RCMG2!?+  pii]sEsT#N-MffH3|   {1 :$Pzqcs  , "+g j;Z&/1hx$q8D%gw6s$P{[iKy JcX^&D|6FP5Fvo0;#HJ|czPwoJ+<8qQnT8tX5^ WuL+vG k"46{KwwM%3y`Z, u}J`&)wF@,p2. ajSy#}S1_&@E( %d|14`~Mv{De-ANElP@eZP#DYVbzV(?71de%pHKDU6: Kkt'7{yA`kb0}1Zh( ~b  f`KGkb%.!` HKU]io P;Y>QTT-ktRd [ [ vZ0f VC?4T" 7U8-3e- Py-EQKHR;2)oc"B50aeX:3DcjE;~|fySie6=Y#FNk+~ pROQ~85:gF0?A yEOE<\<\X6$2G&m+st:   85K 3r#| >6u8W}E }}w[ W4_TZW9drK( `?}6KsNS-A7luQc$;c%c} nSar`qHvsQFv/P.{9$D[;eE@<]:A{@QDd\|('BMBW;F1Io{hj }WL:KK^[<WX"5L}:X nO7]Z8[t`mew]N +Kb1TD|` ^o)AfM8S4lW&_e]Klb%Wpo@cs3.vlsy<#sKKB2t|-*/'<ef uf h>HN ,?bfRmvYRqlyJP`HoJ3gCTG-Ood6jxA!\K ? ]b&<Y9q)S[\P5 <e:u6)^q3V0+0]z)bk= Sq re(PMf^PJ.E ,UC /$^47`[n8ON^o3wik`*h$7uEY8_Eu=#(7+|6 hk}$Z 7:\dr:OO]\-lnGVh,V/EbI9 j/$ PN= z8hyRm Y gx5YlARmyR,bH'6tP jk 5J?8 VLF<E 1!*66L ? F#!A Z&d&a e.Q!V11uU2  %-SfDT Xgqiay _/F66M5+|.Ue}] ~ MK,_BDh'U  !nMb!V "b ^ HMv % :|5O>\F08Dph,F$u%oQ O 5 {dVGBT8*M8S gC"UT'dF2! xQ.QFfOHs(4 zD^d nnbbkyhtl7#gal s0+,+xqPx D0 z ` DZ_20qI^)E9!d} )-?+T\0fLK .BM -_  >Vv6.sQ^W`37'e +>gL1`n$ ??U&CpHSX?K pxWbM{nPbx+4&D(}L 5W Y[l5XRpl*-L T kh<Sp_>P!hYP-)k)H&S( iGa 5MBj$88]}-"Am&kJ[ xWr/;|!Y[ve/`" 8z/Isx9Tl l*m{nt V%9`n1\wSsJPp^}F9~G` P3 R$4fuqdHVjR\svxEZKKETqf_- K)2K Q?p^@AqU<Pg}YekL~nk=CZ3W:8wQ-j.~b oK fW7{ 8mtA3Z8r%^'N@K`|dwAcj8 0kF ) Z{ %#"-Hdyen c'i>J?&@1Tw,M?R[o1>L--8_ Q`1yO]0gGe;`:qz5( PWYUVk}TE>ndxg*uf58Ubxr N ) e -f'y&^:"mZ*f-iLAmCG 'L#b ir) _!2xF=2O{f[ 06 lgq{ g5p(zn\=)|H"# a# g bHK(fJ/E 7 VH+. WTDR-A[:Pu?<g\* !S$i |,*hO E mU- 90R  6glE[(3+Mv,T!YENQ"5|N ^/Vc< m y2 U YCSK8,Z&WRh?^jAJqA 2W p  YPf~_lwtc #+Xm q=?X jFg  5( J)*t =;p. 0.v)gf UjF #F+V))#i^hd*4[Q-~5->Qia`dhw)I} yP4Lbim8l?n|rszS( qIV"cnXg  m ?6o7 P T z\)/a8OA4a z > /yI .mI. .V@l&.u.@%`iq1e6 4  D V iePtAGlHS?,~${q=@ j vZ v q[ 2n_ 70reu-`5; >gX b?56.3#k$ݢJZ ZXqD^uVu%4 ) um  C>n&E'D_.1 !X&?@ :E M ]Q )Sa!%#: ;|4AGkQB|g 4 8- [y c . f27Y)Y|)^: :F/pV[OT&? /m^+Z Km[E21rpQuU:E9HWE~XX -`s7 q74}xr= 4)Ln TT iF~57eoTz$.!y*dZQ/ R$%;qRt#O`-tP,8=c:#=`r9u+ zRu?0H=Bm}t B& gu%o${knf{(I~83v7a/8AKmb0x"._+rS$f\V7[v,h9)5)j1a#s0W?,UVmbOF] \]P^zgw>\1M^8{ ,twAYx3hm~}KK\exl!VW] 9= Y~uYc][@8>LK_|zY)\F c*lbh S#d`v~ nh`"\9nMn^GEwOfX1inT? B: =  j/HLpLx$:a1G lHKxDH5 |#, yWmjS6Gpek)_.pQg);, I4,1x@d,KT-@J+ s2+J&kVf9ox]O 0n|oS7bL1b:oDka`_h0AQ1EhO).'|HJ=M 9>.-3Mk~VWwf?] 8]( |XTv*J4J@`cX J` q\ oD Kmf=Y { Tih-$ # ULSj4  FtTN030E ) ho O|]P f _ [ ArQtU DsB> APF!y7k S |rYum>He< )&kk -/> e 3HQH!< m0x"l  Gh@p 5&c\[ |^BL$,Ae1FL]XefhcePrc_k C**jmy za:{ .5 &; q6& {:N`pzyy&CO5?Ws St>  H 7B| T2C`N dEF3.OAn fVT6!&4-=oLLOpi>2 me<xv%Dr`4KTw(Hf5L eb[VE6CVUe|C0 j'r`w $7 Eb13G@!pM15 A$8*V0V% Nh<74 >~bkzl;,!%"|Xj w!^EZB ~xni r~hl  /2/>b~:P6':D$'SDuuBA+[HrV'RhphJ#_*& g]mY]K!M^A&_;A9Y%_ F " M_0Z.\ ]WQD^"ieXhiruvLub-N!:S^+lg9 ^_~t&GsjA8V%/S_}q+t_RH ya I\!=+A 2K>CKfEa8RHGT\ mwK[/n'H-<6CsJ A^j9Sw#V+ nqzQ}P!^oj0jcRHfrIX;}7RMJQgQ+RHSB ,4jLO1MI~ G]M^ A-' a i@' ) m=!B.%%G D!!|)) 3['  a| #VvPvw 5pRY T I$73 O0n-|@COv; 0 7 ] 70, p qP<1Mg Qd!a? nJf5, Qc4Okryz nri#c c2qTC 'I C*hXO&QUr;25 z : }LYn` q'=J `"jY76 e.+pw?km^K\;{_>" G' %NQ^9A |r[Kv R4UN R, )_Vx9)+m =!.+aQyCGYZ)fg#N#_F k  " v I.0PFq] 2KpF. u/.VS}>H(rH 3p4ٵ }Ml6- 0>+ k2N Zme;n8% 2 "i Udj[.O} g% $". Odu]JB ( iC *F{>Hw+}@Y?}c@]2K$vk2Yjo'cYt>u,{bk*lu9=#^T.y3_/?<<\[FNuUgGk%o ><xgZ#to@%  qhFv 2w2p7" JH\m"AtiFr xJIv$E;b 9$nG8/s~Fy)8;7wNDyFI2oPLj}:D,D[gLPPicQCYnoeK[&/7OG{/+4bbm]4<bx k`^6M}5f 6E.w~9Fi|~2ub_^YN" E8P[[gs0n|aS#@:MmV+ F1K`/ = JtVj7%6?R j.-t]~ [1R sY<8s4L#r%yTo6tbvU('&RpprMR=2fyJV{U 58G1}K*`iwun(?d$<   a?W,G]X _E>T>?h2NIGl$>_P-"RzCuZ 17OkXVl"hdt?af]3P?O,wSULW~+k}3SP+n*=hXL rB>'VGKY*tD=^`?5F96j508;6/yL7: MUhJw0,lt[  >&le*CNTiI4yXC&f O  %JrtQ><O`gjZkt#|41Y d7x2 (x c#w; i *ray)MT K t&QM9S3[ (m5S%EGV( d8D H ? v69~)VJuId!bO="eS7DNp] 2%  }#>]FtA-s~#!fqaA!strYVF3q(Ck+ cdT3 W1,QSJ rk) UN W^ ^2j %# 62UV.=@9F~W~7}vL,C6BSx_b_X%9vSo\g FD  53nlT0rl)' op*/j# (RO\{}_=q ,gecPPQUaucI A4 [w<Ol0rM}cGI-!E&D{R;1aB Xb 4uB ~(4yLyG%b aO+*yDR~-:eL!<1 834" pzFmdMG+qK#|vqE?lxd DkJ-BZA| hyk5ar 98Cc&gl M 6^L;^q +P|[8t-csK|O/kx93 d hP 0 h6 /5gGRpDR : [ dGhd,_E` q ^e y cdmr Znd). fw`fgphX >Dja*#}O. [ % i u= axI.{n} oju#{@]kEKy5|}2N59 MH)S jA 6V yV t Io8 ^]rIsF z-C0C-,Gd"K"  <TO. ) VqCn2u$`AV %?n(q!G SZcS`Y]Qti & & Z _5KY5> b# Z?8QOM8S/3"? 6` \7,9&>8'^^L<>K6 uN77^:SKUOy*qG x3Ma5TR PcXSex^oZ>lWv+E9qN#qY<Zg~M'r%i*uv3^@)CDbLr<H'!Kg4I0Z+\X^5 V= ?;Nl P  ONZn=Y<{[Jj^H Nf)VP @9 [p6~dH-rXXn:?Le~xaY~vZYeg(XW1D~uR>.hR~PdveoKhEj{K$H<SDpt5:[JJ@oYJzl'S~?KauMC8l$nhi[>b!9SRE6:2Xszu?e5xe8 '|o n|g 2[G~nhGUrRL5{}Ryg^uV_ 9aAQ T1*9d>x_gYT.a.0_]#4K* 4"?W _W\:Lf4/*w&YDc_ ->_LqGD: j77EY[qt;{!= l&D'7]5fJspIoe%m<QF~)N~c*s&)NF- ~"D>80Mb$s1jh)2Hc9 =$Pamc&Dx m(w M&?  2 EpFSwjWu#}! N-u \"1{b j>N?h($3"U a6Z  , }- QBJBz < A_$bO -7^o?,%^XZL- .n@d ~xT 3iFX7 nKT{Jc>|Aylf(+Q [};Q*bh>  e@ p0T =Z&/}/`,)M! 7M~:cM'c  g g@*:c[s}C-laA{IG  913{]Lly0wXk1>*5 ~d.`o >~4g </K2*IM  I .wtZEKf(ZTM+te}2:Xzce [{g wa{$rY l  l$e[E[$@@~Ga=kY2qX;-y9F9>J0;s}Q 8 j 7$O#9U^ j?F;;Ugs}|*V ut :W - M eF]TW@QT :" T'4q _YGur s %lt  SfJC _YoQ[1  U o /bZ ~atc|uC}(km   s|%J   f/(>A  `<qTFh&F}x ,CV3_)'z0ok[wF  o }6h/0~+H)*UvjNo l =  &')|bzJ[" Aq :w_$ k;M @ Z \cI "<3*B5,Z  ,ec> 8  Um> H  P `D{x5qHTC # EE} C%n&lv-r`[6D>)q V}!EfV7Yfh=S3$fZC#OV#EETPt yCUzDzp*?EjY5_8(|jfL|m:ma{:wXt$U-d =##V"jYm9@57[<`9)+g!aCGx ]L :>aK<|)#2~jOF6HY2fWRKmF@k.LF^b)Cbamx9;XZ|7w6I6~S;c-7 &otK[,=(ThK$ u(lYe .{VO7Nw`n}H%16(5dmeVQa&o$k>cp`p6BPd1|rf,|wLP]Dt1[HNP2=dgmbtU3FW^th:XFU"3dG\v-OlJCcj1wZeN}}|@kX;Kjlv`;;\zpi$b>e;@%TP\fvAU?p<*Ov=GwpxahAssihWNaeK+BphC]bA*Cv?2_AVTS7*J8*q8'(iJy ?1:<S^bJ00h\a4Xn {yc4K38|iBgDZ/"_ z=ko fndoJzw$pqHnT3OedmD,,xx)i(&i x05 #d9L?&6VD U h KZ xyDbpX XG7#%VKS}C(.m6,e`+>%GKM UY ce!c [8IVt 5 n 5hVmb9   */]<\JM X|M, "y;uUL`&KEexUKl p^ u N:pe5YS 96 ' O }l1jBsO#)^* x>zmXT{=|:F]g_IxT  W / Rkv{dFU%%E1+OiAPzO#b~^?=-#y^*&&wt5t nUr*.dT@-7vIQ=:V0`_H :tl/^VA"d~0]r D?<[;KU/yeE >j;%fT*zS:v%0n>VenR! ;uy>/^@Ip+Bk Dhr6L8 C]?_s-H6knNAQ* ? $%+;&}R4$=/Y=/z{ 5u<lX|ji7onelU$~xRNLOF ./Nk:@_7:u1,G>^%7bBL+|2apNHQ#7p41 "KCn&NdFN,  N{U8>fI&MY!|-TL*2<b9i3KUt //|m;s[%II2lF?u,~ODK;fJA 65h,j,|Q>0T*$f;l /k5F&~Rk jCoN,WRJ8)NNa/E[& -BvkYN*1g >/k<=kg\_fSPz22@>>s3nhYD(c9lFTNyAy2: iq;:Ex#J"v._^T5{a _`$Y*0* #taJv`^N@Q:Qr;$sCz<z&O:2X<NQJWo8 M9=P(){K56sl_~-2j/FSfqC|8w 4w#;T*Y]B2AH1bbdl2tch'-cDtdd0u^ ' 3RfGRQ\XV2\SX.4TTOZk) fK7_`,d}Is )6r=i*R 6/sWapu@EJq "atE3so|f0jk)<`z$Rh4d{ r%T0SDgT]Gy] h du']L3KHJ-r%P#Y~pvOZtX7yzBE@Q(6OfB%ep -%#\Dr*/ZOD9Q)hC1.Uw=I@a]5 #!I*~|(CX1tf'$kV5Fbq"`'p7m]{ao**- e(2;u;FB% > wgN'CH~|N/9?LUsr6aOXj:-$M?csLMSWgaD;$8:cnx~ =N,OpUktHl?KWf8 >}|]Q"-*vfTIRt= MDcu;1m"[L?n>U?p%+pA:X-oV{"8t oyrZt\2.{.Vk-BrE[X2IUo$N^dsjZ"7'FMP&pZ` Fbi|)|J9b]jR+HL: e 24 T p #aWy9T,~1<SdON` ;YsFGuv,{)\T2* R-V-  8M|U) BoAq4pd *" a"3ST`7S*~x?V}f$V(E'*7H#0 rsH"Kjx8N^E'yKW:%d6m  { @G&U<-=yw2sR lOb4dGl] |4\}]Mm/It oe?o\**kgA3R@0< ?AT?ܿa|A* EvQ ~~(aTqD2g {dsk# Mr< J}@uaOBY{}AQ$nA o]?S 4p,. }pX[gEK =1;kekNP>IF@\56 g  rma~i|?# hX6/d)KF+S $AM@LY-3M [!$D14TbpJ!&?6DA9MbO wz'2SAt}=FRf  8$[8kQOO]3u|U44u,,/1 m2~U6$]BjmQ EuEq<^g V`NZ~1v*o7  Vec>LL~}erP #3 T7]d6wq eor0)&AY8H+$ 3N/-zd# |=}q O ,+=* 0e%LK||]RHSM=~\G"]yhjo-be# -5 w%  5 s $7O: x &sd j\Z2ro0,,9 pEgmyW`K?K#0?r 4:\ ? V4Zw"<( 4 Vj^h*_:jpn4>5OP}wW' t1*.i aV # 5 V ,r FuFu6 q2o1@m,n1); p?@b^;^K,'_o1\; K AdJUMVg 9Q+h), O(:9zKa%kt2=JXXUG} >@+E5Y+)U W'k074)5&xq"IRi DF~;m$3D0(wnPQlYv[r_=fYaa4+U_=dhWX<1b$8fj}ObEEJ 2(7O/Dh+zG!zF*'tKC s\m(bU4yqQ,3g<TKXY4m/iM2vf|0OX?#~e&tww D~">( =Ek 1W+13$?y*`I[ 6eF)RB9tjavDj6.ZA;}}zU{K ~%LH/  G^&'/e5xw`lJY"HCo:Ku%8!,=R-a{Ei7(#A>J]xmbt*cpaPX:Ro]"#98GNc|8Llf'T~R!B5|\.7v,2xr^+Em D S, N,cnu2ec] RI9} )gC@  py%s!Z ^ ^  79`{#w1/NRO 4:(0y B {;(V}lAF F  HxW[_7 PMZs6MD w + ='onzr,:2?#+z%#t 5 C@^ )he~`R#Sb)c3 5>rI nO"y#A97cw l6J?#"5]{ s` yY>G! nyd3pqK6Qb,K&iA`B!  X gh Oj#$  D  n |UY;W &*"cf/{+/nS U6 q_k.=M/o 19%. שZ2ZPlj A 6  l$7 6Bzyvn)*w/WY_](X nVc>kGB I M,PJ< GsgOB{qtd:v%K#0zk '39LrO$ Y 7X5QLiLn7;)OM[a3|W'JU9  <e3 q br's q77L/YT\^yqj b   {[9 _C|{J{r|p4P &E@Ps l ]Gv( '&g9@y{dt !Lb)OMI"z&z K3-eIvM7"JS_h!zASj`g#v' S~%L v  .J8)vlhZ%KlL#--<%^NZw$24m]n(@9%v nfP9o;6\FNRLC<Q<hR N^.r |4yTCUn~s;0( >oV]pQ 9<F!NB4oYQkJ'!>|M:>y4Kz9@18=?#OezUJ"=_Qz'|hQ\U> 86E0BN`8>/=~}B4wty a)q/uy]A*L"< 8_O;lP8. 3. 3/n4Xm[K6qV8 Fz` _6X~fk[oewTg>R& g|KgBQJ.'piu+n% CFN4"@;?%v'IA,<F)7(Xw^J]+jEfc~q)Lrop&%IbqEK/7k<qL'+FJ.\c(qa-5o~ub{:*uN 9 77dV+(Lc,Rfw"s>Gv!qRc>gUTu D{ij*FtO ) WHg<+4' . p2,-o J $I{D2h&I,mZ5!k&  cIW(,g4<?g. W f%pKcb4  9^3|?gS! >guq1Lp 3,gdD ' ; VhX*Q h  5 ~ {UnQVW0 |Ab?v82D_WiX t66}*AX@UI%R>F" ?&~t d E R_2a 4 ! 8 cwJqC Rp6yuH9<}%< k )LcE#  % 8{! njC4#} L)(gpJ(xV=1(q vsom HbP6<F1+5*W93"wQ&.B'T$f   y/~iOsJE<bjEl^9R9ZH}KN;Opav ^pmT]6 THOJvy`61@(}jp4W\[Gw#l{]8|r&tQje`garMi`P8o6Z&+|KwKr`3mmES3Nr FX;VVb+bE5t"rX"H"B?QND/epP<@f)%*$q~-:#Ox+"; mX"YUE tqg/B|1A6H@9o}BkWFY)A9udfxccZM)G6=* -x*o,f"h69Cn/]{bfhH4D'cu9ct!)1ZX P^2ZDn={sU 8Ov"*Z2![okYvKV4tPW0uzVj OgMMuHO, D /)*zJ%tVS`{$9AS;,Ywa kqaknOwR<S s/b }s6{B_ x d 5kB- l3t & E _dVe"Q3+imx V *9 0MnRG ` (l ^'HxtXA&#[p/ fU Q6 & emV H<\;,0gdpw_") pM0]%B; 1o  8w?0-r 5  ij /) zuxV  ~[v ]&B-! ?u]+ S ;}Y oWJ!"' NhY ' = ]t LH"N O2Jv\`  kqUPgr' k`.V 98 m2 @ h<zQ3 5 -hF9"UN)!eh A h8A ] b_; a2 o*j} L{ $Qf2eH\HL=uizCt%'>:OilL 0cisS H/3n|V2mVWN {n#k,kku"+5FjMZ$a vnHw8~b_QAb!0KJeyh |YR);k_x*Egb 9v#=88zB9QcEQax?nOD] `9 =XgpATPgjUJ)FCb@ij(FQ_ntQ4zy4k & ls!~d|KN#r:Q->B2iZ/N-'Fkp,4mo;AI'x%  +1:rF%v:Hr w O4*WCtzaoa WS4yCS*{3 OZm-ozh>a37Jf]<1W)yht KtN}c80cU$;QY'u \KF=8.AT,U29EqoW2hGx M[<*9?oQeEZ ,1S>L0` a  l[[Kdev?bZ'i9 NrPa.`9RB{hBtP=m4 0b{{&_R'5, 1XK/cKJ5v~q7kp|lOo""'S:6&Hncv@--D,6RsX21"8/xl 5PO2(Sx;~kRDH!t\B^y\F#g{g`Amh{@}Vt `D{P8{t=Wbgp&`|T4 PKV?`br~sF & .x}a {1c 2=bhN iyr5:P#o7oB3*Tf8pTZT^i`XF,{}dP?^v4>+r*I23JMJ}N1KE&CKA6R}Eb_PR(0N.|`"LDK%;+}kI$ fp6Z;uB"[(Rs' a6x0z rNT8< \a+f|?N!rs]Q>Us. unL:[DXkt$@&rpJ}DYx]lKBAP2;e.Cat~$x Y(Q *RD+PP+^:6OSa -=`Xlk?oP!.i(rP7qiyWe%A\6&]SivDq<@@v@(K.K"et.*(Qu Hd$/1Z"1\*,wr@7|LJO]vPY&rvV}Zj7}uUV3&~_ %s} ^SG%4ajg~ O<WAu< hYl:7-nytz`D|pC-=o =9{k'\RtcjO.gEO0BXS4]=D<}qwdJJtenFT7ER1Za2jQ0<^W Z^w 2)j^&t2D"&Rf0&u[GS'=p* k7u dG]Ys EHNk@!> w+8cOH>mOA`{ Rrd]C RgOHh6} |87?tW.HsS[mi2.B)s%TO!2,si!j/? cQGFRPI\gG(G|0g5"_c@MQ99:V~]}q~1,^1G8]a#P QHhth*K~$GXGXj%g.$Hkd{`}RF  %qvpyXX+aJW5d*%{W `#3Bg^)u}cq>$ (l j$3YF@_DJJV-k)c)K*W"HKG^e-~M5wM}&:wKxpUXhmM<i89 o$$jSHq#UY PIQX2c/=2-HsIOJB>hOs=d^)PLCz^f`(Db:* TKd`qn`t+: +35:bJTk]L'j^qC"!OX-5 q_Jh(ch mEY3Jpi#TO/ Jag`SIGP~=MW]QReJv{cKya//%_+c uD%zE@cg[b" 5cY@O lu]L?|dY\P 905.%_ B<4! vypk n4gcBjMhA S?iq|A-p"b 9c:YNGZVgyamH|s7^8TeqsSN90.YJz{vqFA_ IF+{buSQ~F!l<OyBnx9}o6bk;EtI$]meC ]HmA.eEkt^m AR[n#O9/iy""]8N~T5wKq Jc>&D)>[`&gZ J'j?%o_dM1 AediC AaH18%VX2u~m[^kD.1<(]j] <x4>< yGOF0n!v+%Xh >S<p>r! ~| ]n/|lvyxc* :'LtmQDcr R~MtH j eiZ M-UW *Q'1X.YdG&^P3`fgMs=o=+wl, =W]?vj'$E W:xO9~nQ@v J'1 C`&2MN%*%:Qxfd7%4_r JN6L72qA/y}`.3D_2^> j q^IP"7s%g|RL' l~Q5yE;$f+"RH8Z;_ ZCNsNh>MM\5}XD}R( V#Uw,>L\Iu?J!""T;ioJ&B$QPCR~_ kf`-ygl]'9QR-4]RxJT %M=QQJ{jg"y5hCXqZ!:%A%? ox x_Ea,a$Bw4D|#QDCuu.iykGY<O[_Q\ a44z;`w'DNGq!NF1x32 )6*>~Cur5Vm }~{.= 49swU#'ro8yX[GATxb:NA1K<6EXL`B@?yS5no8e XV[>2FWz#Fv8FqaUVEtcugsuJZTr>&niI!^n4ea6p@KXP$qyQkM->{|Gty*1,H. _PD{6:'chbezTdn{{e9A?Ndq[o # nwqLf4^:*~5SdXO chR=-@a1]-w2~} KWDshC |mkN` 0C.cX_/z0#i`p4(-;6T6lSaA> >/;7`*-%( L `4L'?$7I,G')!C"QrYEZ}kC?6 p[JI$s&[PF0 5A>a"/]@_uhTqeT,C4]bH3)oVHcUU K7e#]wI3,@y#3{S=ej:>}cC+6Q=bBonR& (g8 ]<M5.AMw  IIqQ Mzz'_}(T@6%&3k 7w U>W%x || eui { > sEMSJcgpQMN<qe5[ +Y~C p bn~vMB{n}:\~gc.|1 @7t ) y= .#aSL`54  Oh+0EYtD48?V/ so :0 ";-@ y .TywyBQ% B PdZy.;=/89f:< f q>&" * hz < x$N jBBR`2%i f/Lw*' pqdL dj*.*TShs5T)Wx&Pi.iN2 3F>w6dX[!M` C -GK\(jQ <}'% yk$3! s7o_ M3Asn(: [<,gM|h_ Fff o'[H7^I_mcf =M +}B2  ?6 ~.3T 'n2\3H)J nW ^^PY!e`?(1d) E>7 *\9 : \gl M <X)5|  C8 URa/?W#Yu~~ +F)L `hK"C !c|qve$y$!{  ;-- }MR}"Ty1 >V! DZT `  R\'46 ">^ /  7U M9=%gT N0Fz dvu [D#.t ݹG  B  ) I#) m #*;<<hIoj'+_z:A`EN(a (KS"3f2|U}( kCZH;' dhx1" H$k@|-jH23-D%%D0 sY/ PF u* Ax(  u7N| IYxv1.'C2(nM 84QE h{T JL?N &\C "hIH  Ll]2J2Qu?%uRW&pmEhtzQ0!c Nu waz >S  K;k D   A< YNAyeq`lww0*#@G":S|Y%V 4Q zT Q CNdn`)% m?F7%5 G  f]} cM(T> sa0y `{4QGbhY `9Z ?/k Q) ^-O L M<Gm`)& w6)rM 0hVKJ2wP@ =$8 F# ^]9 "P  h m ! VL/:cBw :"_D h H S5)Eo6< !1 <LhS} $)B_{B>~aB. eR! fZ <C V.qj#,r"Bs KP^x +"1Xw/h_ g( - c*z:vYDY HQ ] V *& %'a"m"ult![aR24p!%08rsIr ^E 7/STi1  3 >f!x~Or9_]F!j9P<>$?)  R f089yGX/& Q9hoQ:9 QuwEnxb "6#6.Y| U*SK8hdL^GJj</P)LaZ)a$i'{aRlV5U| C   4l1<\2Q08cTuZA,noNw rYC5}Z^+ - K g )nbD$W)NbJF(z >Ctc btQ{M{-@< 2 N (Z/ -Bdw$ue4:>&oO>0gr3hv8]UK[& Sn5  (O  z  (*7]\pE>8pVq[8x5~x\2Kf5aZS'9.V &[/ C8Q Z 0r4bLn!&&oM/AHJ*}&S+ds p\S SX, 6 -s 8P7< y{!#]6lYbZ_M8\p5m1u[!8|8,=Y+$d hm>dMH*IK`iTWbX XspU9I$8p*Z!Bw]R+{AyRl `nWB/|$~A# _OLa ._51N|nR6 "v'nM;gF osc5(u$3$!DF]K4EN\;Ze"eR1e!3hp0m;F2.XBhC"brX\,Jj|.Jm?Do*7>Mxa'$^`[c|.0}_OjeUmA- .P*4E-b?dVtmNM\yvAClT4A cxUm[LT r td3'i =X%coh |fMOH9(D=w2YoN[an?y5X{u'W|4JokffTJPdcgE8`cOVg]62 &0m37dWrMv2]u= tE/Em:L* 8]P$2[ v#pn8Lm5syAiYz0;}I}n_irJ,"P A`sh2Mrx$;volp J -hRN. :0oT=38+[F;y7zCev]`e ID*%fXZc(`2EIE_"O8r|Ii H*Ob pOZbb@ RZXS! w>2TS8_Thab= {]~?p_~MO6+ `QZa@ i* >A Thldh!^B^ i R `1s [Sv0 -j` xUQ#%i6_oZ!/Z}e(fQ(?x,F\*zaS|~yo%].6E\ ] x R#A s8hQSz>7xHZ _1nUg+V fs`_X)4O6V/eO wq %sFL-Cx Dq+ Og9ws&NU\`_&F1[{y;.gxTi]w.COx%lw s~OKE}0O1"^GsD!] D68 s|j~x:v~rL3-{|z$<7"+GMQ/wgF008EfxJ uuD1e.NlRz."| e-"^;t(u [$R 7i*qfRXCDKq?6g#KjutROrq 'S@U!8G Dm.^|(::`xZ 9PS1P~yrD=u;t8n<-VCe kUh ad =]!Wx2 ~ DDHp?-(3r-?7"b,I od~] @ _0g }|,1OA;b_TY-`'^A}6bhohmdY7E  @Tu7|0p:!6jlLj6$-@1r!j, * oEgr AhYE>5/ o$\BKE a,(@(X6Yna kgG$e^TTS- CzD`w;`:Qic" x x =io,Y""Lg!^Zu9zkaG>Q )zu([i[SC ,>tZ +e_|+i6khYx|E:@<g ^ i \0dqVlZ:J(pji#GJQWH1 : bb$\] :k:;o+(Ik(_!:MP6|{MR! @g^ >iDQ!]2Vx?[C|qYM$Rc\< 3 0 t1b *-n1 }\Fw2)jjeu cFUfr$UwG| h Z mR1 pJ\YE9@/s;z;`t -5tWk$  u  }Byta tw5RzW!zOan&$r&V$W0 @ h ZPO"wP04> l~!}9#pN M#3$[(- 1  Ta@ +^j DzoBrS 0 \;W]g";~7a'0 $q(Qvmpk g !;vYX|w. ,%_ s ; (0)* Wd~Z%[!R > ; 4_Vk'p +?3?0<=Pq,'-B f* _   u~(P e ?I, ID]I_CKW t$Y -",A pE irRdz N  m?)_!(Go , /traG5 lr& kG-  ?*%2=,H8+OU*V,R`cICAu,qV ,Ew\c ;mA">{?|EFL@%neZ0SCS#!LjZz_\rJ*u9/kA?fNa\n/)*g ]D0]iUygm2xQ W~h\PJYJTm2u-I-de6xvow2%  < ^%m5G6;jR,a%bfD)QEPRgDdbGA@gi e zC_: m5"I#' GH3PB9`A7,}ty: Q?K  n:0Vvej9*zKfrsiq&  GDfdxH3~be $p  -b:-M.DifIX  EZf;+9qVMz'ykG,x  - G Ci}bQMp  J =7'g9 k " ] n ks6X8XrZZhD mv'%Z/3 Ik1   $u:PES 6bB ;#*ml"`s wzZ2.:'W!A3P^k4eK2kmG Z- f~W~gip  18IHj2:BmY" ^(!  K(oKu;(9 6c O@v2 C <q 3 vX, %wfHW&YNMgdy/&z+ zR TtS IUQ +^4 8$|] E TQ6d9.E)i0va(ha%& #S W , tm{ BA'j_9N-#B!tWBA{}ye v)Pr I ({4 .m}^!AO04x3U^-Qg=`4)K_]a^*|JA wo ~rX '4Y y R '3w4xy UF(bix|NeM Mh n B O]v~L G}J2p 5UA@3D/Ek0a_]h'~ :/" UF wI k W 3`"V+g2 mlg xBDKg]{_/*_N[xpL =  qA. 6v%j(([fC*# V;}5ih~$R>;y \ K t\ b87>U_upv,%  (6Q.6ZZ Q1 >%F'g<AEr4NQ*j01-b! O(zg-$`gTq P%X\+ph[ { z;hX;:yv(< ?W)`8 N!#AHEh4A"~\,- Lm  (pt.uc 7 ~ ~7 w {]u\yz1E\D (x_  &Wq5"fZ:g_ V 7 CvkE.,L }  2_pM>I%{;})'9`0'  f)$$R/11qKw OZw ^ y=|!SolY|3 3C#v`u *~C ]Um]|3c:/b 'T W  :q r }5 c.r0 Vg |_!?.:.N/ZY mb)"V'qPPkFyr!    1PJn A  UyA=;l^zwleU ')^e%i U5y @hfG{iw#e^ t tz <{ xp'Pm7g0c1Y#`)T')$ %'n>mx*$hQJ Rri,x<&R Q . }{*.?"sR\,+ C +f'09-4 V ( KB 0lx.Mc 'j?]BTdQlL00EN.a4p!d'*b )Vga' tK*hF K  ^DrYvSsf 3 = O 6ehG'!r4'NEa|" l-y !|^ Q   JMG`whv A  w (-SjH`yyON ># cB}  +t7x0hm .N@ %e$9B()D4BP q 8eV$i` $ShPR<"V yi_/R @J1 "d%!?K/G9M k ~  H EkRf=NS,bU_m:#m[vZ>uKyb5s_:sx< 3$n  _,zZp%dgtS},sUR3K""i1+(:v7ucn{^ w # &TI_5~C;:M R b|*e P171w_k@UF>X&>_%p6+;J_;CD@\~&$ C& {4 k4,YuB`;RM;f RaF6[;+ZQl'pd&p\/X b &XaN1uG.Z70j-Ax6VtuJ o IK"_WN(4 ]U>?GP#Z1XH7mh5#  F)o+0A`L: gF|rlnJIZkcZBB\ iv"=eIq  9r &S nMW"}I@ }lM6 0@bp<:ZNJh" jwcT T 9p rv K_6:?wk w}l '~ dD!) 8y QjCj( K = d 8/)?q%'4y$_i(k -&ao?8O/~oybs!FEJ  Z  | "Co *>XgdSE;W=EY:H)qOT l#t0 C|eIUN  tVn/X:9~^pb>L%X'r0r!yb\'0 0 E~ .iI4R[[HBjK%.@87hL{k/o.` coM?  P]d':t=`9KClXL tD}7j)+]kEl,sf3 C@ww!KP2 EAp+o]x6*. Y(6"b1Yq# S.m+5a3Z v[PA} eZ7 \mDk_OH]kTqFR m~%UiGrMfSg"a@DL'6FC<aI MT\~DB#P p vJUelr;Z&G7o@ Z= .;I15b'VHf0^1?MfJb,dG  [ Tn?p,%u7Zj9Z>=4J6>g8x_gv+k\k41*G s ="PN0@]j5t;"|%& a:@z$$*6RM Jz}|N O Fih_e@v  T?ZsVC'u,a R{CiY-O+g-2cS*~$dg_( =6?_!Qi 6Y`S 5.sq8KlIweW>o)  ~~|>r`U[IV M<z' N >= Q_kJIN 37]"F76` 5} N9"w` 6*!%IB.jA8H)3QGRA uo}(tn l,25'rc$* D`Y6S5 QG.H?Vmn `bYLbc 5 P=d];`f{q;5;GKaD /('0O!#N6]6: { cc! a \]Q/*~]Y&s@ oI P=p~YF8c8tP)OZ fO &a^aKx5vO=$F}vl5+F|etE_|CH  j$mu(9u  . 1 ^EJ/8:dyJ?U  cj:CLZ1n}\|U74)%h~HE"81%@2IMs;i)+>2(tIT?a"{7u[ov_R^,5PC-nu/[kuB~LzZ_Fki~ )Z"D+ZkW # X gP xJa% 3 b\[:lBftQ- PV28 :m#"zRZVgx8O2CJ8:s4cL'J,I_X6f88 s]X= dtmo?~qFm CB;1~U[VU=qSq~l#Hb[hH",@o d+C"6kj$dMrq`e'rE Y a  v0. hStj^bAGN Rp ,`E>'NYcpq>JzNTw3>**/KGCMX hLLp ?|K]15cI6!/"hixZ9q@D"31&EX2w?Q# 3cF(7a] D{$,U0Lv7CdTA`Zq`~RGJxQ-c+  ~ $v% ++*>\3"+EN{ 8L:^pBJR E l 2 /`ungE318s:706a64Xti<6A O|e0X!"uv "g%Qk+CI C xY g+ulomF".66&FQ>(!a\soW~ 6 1q3| 3 *#oruXM+svqL` A Qx3tMcr\ /UU_\ Z&kd7N6R,FIc qn86di>=UoN,Y`b' Xn H [% aNoX:Ap-eL \LA}1QG=1Rz{GJKQNo3sZ -*L} Mr1[ k-+w +!)hq{ no;]kkkh0 fg n# +{0R1G K`: XV'5OZP$Zoy{l 1b xWgQ#|&  z] >jP'L!N4ANK$?h,LuuDg ta7]'V{W\mkFDW;(\ mzQeQt@z\nsA ,M%*-oY~(+R` MrCCtL$#;l;/kUo^n7i`6Zgqo!_7 5r ZOG^:UI|}hH=QnZl.2H8/Fp4."XCCI @* m5va>L`}0eT>bO[D(=f Ju 5B,s@PX lOu:K&EO1 ~>;Q,:Q [dTz E1"M{+iGz+]m"1 X9cy*vvatG5]H&0X 8.9jz I_md uK!RoIDFK5 b^+w6TthH>gZ Ufy"s'f J3=i,?*%<k)xE 6M_B0PICI 7;?i Z (s9@! y'%1e<{uNYO(bgV1az{).mbGh? gOvB-cXo,U t$2=]*b(;d ^r CNWOm8[ Lm=Lq2HtI.?}$PEE?]O 6Ohn)R<X=   v1P%@h Lo CDg9= K^< NPv@)M>;*VwSlb ) 3z-{! 6ict^P!)?X&Ao?0-Gb Wg-t`%7+E[ j   s4gMg&UD[X;_DwPe[F@8V^2_ %e(ngSZoa  2 l|3&9yEene : H:Zs#%7){u:SauI#.|su c o/xv'|{N  Ee#E,YTje,HbIUf.M' Gz_4' ; } T w9HOFp% '*" Q#Cd6 &q'&LF8 m_@>C c q9vL({YPQA 9 9,U\YG_j-VRGGPK3-' ;h $r6x'ngjV_u^9GS;a6[]LjvL%mNH~$?"*od2g&n SP^n<! wp[o.vOs!WyTZ\LuA Un +(Ql )5MEd0| !@f0$5NrSqOh 7m R =c{qDikRl(qK:6Tz Df f(gd1, d $YtXr^ [b(_},g*Q|"*(~JYEWWzqZ^98$E xG}61,w: U  CCBaQJq]']2,0htI{4d_a?A7f}#J  . <  5 tp?;N`z~t.5R^6 =]?a> spw/ 3}o}F I Foqv ME:QP/)g2XnhYbHz]W:\JU3DPNT 8J ?2$) :i$i-{XC:F|}N\w`.q-X`)9.#5`VE&  W~dDj&  6E " _wo8~02O"66<;9J/fF.* oW TZpa)K=~8 ejnleugTW\ox%J!92eF5z@v@'q-|#}E7_ ^ eBEH&~c 7'H)"'&,I'Xh ~ / =;<|7>7yXbZe5@>PCQ!u4f %LwMO-"[vEAng WM"9:E{t=<OGall\esr:5]u%N =W8SSeK cf:AIx\p85o?U >l"kg~FkP6Ag\RN& oqkyMAKf nTVlZwej ,!GU<@# dJW<2_Bf:yi]_gD]S:`!6+4M`i486/uQWuCY-l+x!.?gsv#&=Uirq=B6%kshZ+d ^u&CKVGoO1adni hlTw!xO0)HOsC4JC|glgwK B>VqY "woKe;Q(*kYhFxh8U*qi'y5 \t8 (Xn)It~hv2tx336n7sc(PpZYmbdRHvzdU!al-`jy=.z`Sr7\;7~p2LHA#b>uPRTFm~3aNDHhbwb#^1IXc0 H6Z`nU86hH`cE&y84"n-#+LC|8!WF WkITo3O4m R4Y<6BK4FX"z @bPQt4Zy5 sP' a-+jK?Z,\t7BJk dFqja]U t A i^6|ky=C$& ]m:eU]#8",6/\[p]%Ntg|&gr4E^P]aiAYheH Zr4z3Y04h^Qcoqb@e81(;NpQ OtqwPr#6qmG [u2*eon%-w4WMu~pIOl@?1tKag=-< (=tv}qAo^_^uW`lLA=EFZsmlX 8#ER=8u}sz`f(b\|&CFV,lZ0; = auT]cQhbfSZWsPd&C8@%3?@M/8Zgur`GhniUX5pU{cwbSZ17,!r7 `]obfpe+xYnR3QCb{8muux}u}"+ :*JWolSMU[fJ`xJMdKe:='GZ.$C 4(#i}s]OTEqSRIc\U^f9EEf@s|oL}O6)?]d[Lch[gn{~3C^tt*CpTb{gaNq@K2FYO6L$z~Fkcj]}{nUSUGnce-@+~9tbOM@]DV:eztYhBfbIgrli=`Fw6/T-VJkM,H-l{]CdDA*`_&_XgYv}CO}^OATlSA g' LjD,==:l|jWTmIPW`rbJQr}GQZb!)Q8'$Uk]n|[5_h;K&C_Fkh]{4tFUeQPXXGj\Ue/Gbbl$&ZqPM;>3nvivqlp`=>2RI] .Is!lDR:K@zb}uiv 3J3*LLsk\mSVKlyn}zfmrm}}T#5e>+^SG.6; -btw{)Iw[|7)b{}dOrq&(%?M9%(5MQB%`J^rCfXOcmer{RUTpbb[vJ ;;tadvtcxydzYmCmX{o-$rdzdfW_('nctO{4\*z:-B(Qlv^6i2G8Ra?2 `'&7g"diRiB : HR2RFo0F`7SO/5~rZ^ dO2^f6h<\[(wv # }v"Ci7waV-:JlLuGp0lMs0ue(CZ``zKURG/$wB.|]X ~I 4lQ/6zAj+/s{C'zFCMQmRF}s;Oo^t5 ( 7mpE roR3i5Jw ce; 5N]OVh e%7Hi}\^h pz{ SV. : P WL [o7. @At!$Or3k&$@/AJ <\R$"k  ~x*@| f3~_S%2`x#/)Tu"&d)} 8Ol!\Ab>F bc}"-t<b<::^.i0tM@Keze4^Qb~Xe ' sU DH% V[!eavA*%#*$=W'IL}E  pt0# qU{ 3 J8t5@Tn^K :+H8N!eNwR4_5e8 !+uEQ ;AkB>d@uN$(">F~aWmz$uD%f4^&o]?R;P b?i.& H*xs ,p}d+|~Mag:D+{rpO Fdnss.#/j8um0%('L&%,t JY==x9DU7Kpl{^y0AL G[k8!2sYA `jA ]wXACYA;@Bm!b6mkhUQ\4@YZ-'t kjp LRoi8EslG !I3WeG ,!wZ>;"O/ Z&A-}7:I4'q PcFwkop" jS8%|nUKlW=.&v 2f% O3#tpRrp@ { R<A [} XKRBd6m}-g g!HL(-$+5&{}leP,?3 $h pzjge iru^=H{aGruz;h$Uo  JW[~g@IS4@xBUmpJ>pR#+FIjqW2qZ]_D(1 J|"92 i i*Kw[k< |{%:vK7`E_FiH) NxKG;65V; iX hc]EaJ#Z1TY~*:rr/tGr@>QF}g>2*W6c4X}wHy LN Z ? /lrm r!=h a X}lhj5Q~wDh^mm<}){RAEB#)/ MP l.J o t,?X8>:onRP 0sx`!'0`1J8'#7Xk2'C"Y#L$C,'Zeghj  mEu)F M@2IK4PD(;B1 &,;)\!D&e9sNj;p|TID[z GnZ ]=d[#B*])LcFj:5}dYVp+6uOz;>~% AF ZyuhTXr DE8CJiU_I4cQ"[AXm` l 45^ ;'d>7g%B,kC9N3*PJKM t!">}; <kG 4g$b'*A`a +ZbLG,bna&"g"SrC#DYd(s` @ o,jX . ,wI;fGM,m6t8i s^vdMwM\E$N=<@W!*,3w6x&<fxNJrePt0*ld (Jk,?O;z*)7e@#j|ZC2>uUkq  1k= : O)Z?'eQ9+`UE 5Ugk&[{p3+J7kQ1?WBc{ <"[Gzj Uw[F1bU3&.QUIo((nzLg **|:-MOepN qJ"I rVXJ >`y899R{O4!`q>9[X1s~ xL5?|` JKvYccqP} pV5"^iF%)gcO%3?D>t [g=eewt1D  H ^[S`n UK<p*\!U 6FD!e/} Vn4\ {YW/3z}1eH]iB_8[$8I#?L|>irw.:*~^3TQ@=fRzjMEK9D4H\w.Y=dEvx$]{?GFA JA`(bw$r~5jW 6y;83uKh&4@-M 5!}YD`BR*h .Nlc!uoC1-HtwN]xcjAy]p8 "K t69PM2Ufx 8_*HkRl4F^9vm4h]f4mhcXmKLFK:^$}A@bw:= QgWtLZ`15L5)^wHyC4d.._yt" V|D9i) =|g@ `43Emd0p< +j] ?Vu"k&:4ic_< $oO\<rB?ITteKZ*t+ )yQ+/qFa?LL)/&4 " r[#w? X-& saRrGx9t'PC~a.828K_&J>#HRE|`s1zun8bg(-.GEoC@v>|sf&lJEgMDK+p\+h@wM:;&Ö!(6 [Q)lr>d^uG i 65B K'O"T+,+OgjxEU<è)|.".&)XQR| a d5cBn#/lw _?LpuaHu"<<  B8K5 6a.&"s4[p=6 ?4>F$ o*@f@+*LP6AC/5(?}#r7 "U)"&%"QH  P'{ B]`)?D}K#ZVB*Me/*ZAabB><B + q|0f: )/ zl1OA$H[[  SX 6 <X@4MeQA>Y!eb_MC#2$fe b)VX_v0,Lm6&+z -i|i?oe0-{."!i@r"o}pm~Jx2,zcIRlLXZ~3RB)B`3SSdr]mF"s08Q`Tgq[?08TY"D)h}BUx0+tlY0;9(sL;O?".;)S C&bl>$"/{wnn`[Zt7(K~EO?0v>Qu oC|0((e7a7)^M+f41 <o<jamfWQ>V;BPWqMLh-74p}owXUXhI=xJOg<Ha!EP_*M>D\*Q#eT73/Ikc;Gj:%k* JOBFxh0lTzvm5^3z_/!!e]%.IsQ 9_QWD $cFBM ' !]bY8l* sMIQ 9Mgwi:Wm9+ -Y#{/  -Rxl"  V\cl4[}BE&j|4FWRC,ZVu\@zf{ m@/,-p^f.PG]GPcrJ;>K@AEgx7g6,*w2FBE PpKJ8O\ {,Eb%voip7ZlQz)Vo IUp"HA*aeka/!@p_u]"f|  ~ (P  N-kSpMBy+5Dn E5z3yy\$J"#"8` Ga= HI`{ip#Cc2SJ&]D[e 4425Kn,nh.+u$lxp!\CX'% F>-@ [d x~n~c>YEI'U 9vM7@X}s1^"Gh .E] S@|{~[e5 6]"P h5 Y ],x1!;3zEk؀  H PQuFM|`mJ?d4jG 89!s|V9T-J ;8(v%L܌k}U .p ii    zux`x 5}c^qIGCWiecc9zXJ`,<$\")> {' Nn9>:=/ n~a e hD$N0q  9>Md`u |{6KFQ%d)_`/nUz3iܓ!%r5/B *o=2BRb 2 . n APMcECgrb8*uU% }؄̥HQDAHB AM=Z0 i(>S?w*i{ lml]L*(RrG. WD 5^(L1#:)"%QG ]KR*4g7M [\;+ BCR9a?;"1  !iND P `%6>b~G%2j}Dn!tnx<h`r (mz^D 88P6dFA{ p,;5k}2 EO5z`M4 mo dV0'%-) Є] I P - 5Hg] K"y  pB d eHv{*+{>nCNbq]**'W mQ=!]F~ [O&{cqFS]5 xaG?T-Eb ;g6RqK- Mb]Zs!ag!+U;}Ny0X (^ew|F S^ ~NVI%\j\i+gdmg8/4zL&\IAzlWas  H , '=0/WMiK |$M*%k c=i,fAg 5^5,qU^PwIn]IQyjXF9,IwFmo } YnK=W$k9rs#N FZbrUFhIK]T&}[G{#f^~`*c6[4F=ZirN><&;b|_8d O,*pX {c%/^!=. O*MkX)IILiQg:! ER}2u"Q&X/N,`qT+p<n~w8g)5$l9seYL.Z|*/5l_G pkY=N-*j)lGiqOkx-v"A)g/h7Je}To},c&m[dd`6U/~a*;?4xfhdqJ-T{gdsAc(|hvZ9t. %8+NMLveA%<Hc 6*c.;`9[,fT/$Q7Bk;#wk`pO]rA 9 /:"]|DKNzgt0tq] {: [rV L}e(\>S [Fzby a yALgF h$x= n} f y< = }0k Ir]_ '@_ &G K]u&N%Xb =se ::OqQttk"]Y{UN> "ZB $&W2 6f hU # ,C  ) U? _15 lUn 0 }]/ f uZ _3.el"wF4*n DHmRRIQ-#b R OHC6 X 5vlN te #cV ;6$'Tk } Y  " h9 *7 'm .`4px,ac~!q\Y50uc=9s M{nek} m hvtq-S^/Ot d>F  Yf} YD+w5/nFW o(%ki  I z Ks kl \G` AZ{ihV 9m+4Ar]M t v 7h@ qmDzQ B}@ [Q+?Tv' +T i \D~t z /g2b[,SL]/=z ozdnb-u!|8[u S;R 'd0 [%1[D ">I: 4[s"UUE}&4 qN"i: %&YJgG x17#%,'PE"=|mrE7/z todDpucjr5*p.YjhQW*sUdh{~G; >|f+{=,i;4g^?3FFEOq yZym*Thxo J~VO/w ^(q-# ? : d "t |,SkYp&[=fQyx.*%\*/P=R)j'{urWVX+1d )w"CL:E3!pj u)5gn^fqz:k5 RDxm r t WT^0DWWrIo"D;96k|rhmw0M uV9@ V =`Yz \ !G rBE|hi vzNsz%u8|d"X  g C!v<8!r7Rxn)bx3;-7O~$;%L-f*?;I-a(/7)8 U )@4E,]hjoX&h+o$ 3?]5My/HOae M dH >|S*C:tqFXz ] ]2uYQ_e+j!JGM  Wqu 'P{6+4^$mBZ)>hFpD!lJF{JT{66 V  wD4! Pj[DrC }\(d%t8HaC}P;k\oAEOuvLe," .e= < |s*I6NM MT!E+EufW4&qNY)[LN:TJdY=/d %p N!ZS){@r?~R&R(z%?XLc(-j=H #=Sn7pOvi"wM 5iM, -B ,z;?Hu.TOo HMn+_ ?JPPqzK{ v~JA1Pt}1nD']eC71{] fr[ WYJ F2/;vb;$\u0@w!}2mT)p%gM(I+"k9*  4h e  l'cx3_+VuR?M%g"Hj\Ta}X;8*_)xC [p'Gi3w K8l )  &BH~.,~||:#e`W!V~[^R]gF8{CzDdZ[L q-^vB>)Lz`bM#K@t}rAe|<R})xR*(=kP\_-LMvG0+X|.3 d$1 h-42I<V|Ho-. 'i3CeT?_bf} 3VKjZ B0 U0u|x-p+3%v#]5c{k}C$D>rUA(Q^95Jat6N,+S,< T P3 \XZGik JbZl t~xVQS ?j; HipyD7('7bH.qz0byTP_fxCcat i41}( .)5yQW #5"FJ z[vY,j k5U7v8YgtPi5oAP6^V8!O!.[_7N@ YP3 6hU7$qZ>r>;'[h| E}k??=5qM/"Z+bu'yZ|n*t:m/Z-@k0pX(M9LJ"G {[H^qF$] .mb:|lx,.|u88=Y*8Z#.,LHv4] ~kYCL-V\uZ<DO">4'&sx=sn&:tamb*nq[6}W o0&Vqw8nOp;CQnd@QEhr>xrGA13(ji S$lg Q heWN |RX=$`FzCN=BR$L6;/DD:{2S 8.D{9cugJ |j+.ItoE>St=GR`i_h,2/yAT~|jc%_c-vUki%,tc`|wpv]?ph^"c vb E\a'e=2, jhqCPP]' N)\D)m c'+:V o\,P=AJ!YT l).fl\AD!?(:! ?J}dx]Q9"~- N  ;p `&:^\ 'Rn$EKa{`0]f'HX[iW!-O# LCX{J"_1`&8 UtC H wLwb; F YHzI 2M6-~t"c)R-d,q(hro/( w S gc,C/}#1!'n ,2V0 0|b6xH%( )w<`,P3_8* a$>H .e ~B {):{i7v:{m=G.k ||hA'%#kG=26 BgH6H^1 #o4_  P]uv+ 5 ! fmSg@:4: SE . 8mcDv%G.A7[ =8s)xDo8)SbZZ`r s uQyJwM K_ 06X %4#a\:qx6pBPW_mBASv*T'(}lzpM@HLt=)Zk % \ =l;:j.5Tw$-[3``M?CWmRgE7DY /8#jH(/ 7BA  GgP'1.wiu2PRk$S{$UNXoQn B25& 'X[Wy)Rn(q%v QnmKlK#c_@O*-9uq(]x |h hTIq8M_W+B{"=V]wrjAo/[xP# ^7}}5ebz p%(R  4lr+ _H UmeP?O%~&YU ~v g0bu`e -Kiy7\ 6 F?6zNf\*|:;vIEV"\9R'Ig-Q/sn5W42<# u:  @ )sw1?x PW32DK6] ~ (U41i8T<MzM})OJw-P;S4Ye z20f( ` rus meQ{P@F;H N+>qxh(;LZ)emQ ,Dn?i:hH-LuW|x4]\_C%H,\c5Yb;30/&m4K_,/b $w Q#: i ZDfxF+G4QbR XZ:{ j&qea$}T.C0+t!'DU7)|>o%9*ap":z0c ~^SO J.<0,'Ht&7v$/KL7z(;9;P*kI^)Tez-1#os7W,D{/biITMd>-}vYpcfu% m6MXEtx:56!}Fdv1hg[7/8$3X4lVkFhz^xDsWNU@YfLszUXWdIUD 'E3kVacSi~WnbSglv& .?i_FIjdruRvadasBU*cy\ink[0n[ck!-?Sw5{H%np!mtyr<U"/< TIZQpt{+yo{I7e1-|E8gRbLd6je7GBo\C#c "S2ZZ2 okn\ ;e2QH@:|h w.'{(^ ~<1mc m >3t0[iz8qn>t-)r21 kEO:c<>0Nl};M+YE-8PM }yB '*Y1Q v 4BV2E)wX T@}8%@^~u)fzQ}=8? / : <]"p?v+0Lo-@'!Nj-RjMq0,UM &>H#3()F9',0B61\vFRU3__Xb?)5XfX b+#y\\P0hvf\X{Jhz>h? (>;a|s";SBYg  < wDq =]^Ff@8r W &h!DIRi h V sV2 Qy7Ec#M  B_M}":.g\"z -X}fdBpio ^ fb;DlP-Qw r LFH m  { tV jm2'O^O> z5. S`v*t C  Yz f*!si '8 6O  Ib> 1 =^ % I9v+sc? W E'{]/Y5 b0 v^2$5kz>{ a#:CV@[CS " RdX*zGskcJ5!]a "Kuf:0o;COh^@ M `"'  ^W*Gcv Ud ~ z 8*kBgT'Mu*  C_g%@z;2Ui@oa@j`p N% PS :GY,yad WFY$Y! jj_' MQ#X)zHNRAY%j $ (,# G,C`371EA6IUfxr lX<d Okj=G%Xf Rh#tasV\4 bvcl8If:dMU {L+Eh$}\=Up)p 29;atis:K b8I$P\x^BJTuBiY;k:FM,{a#$5YD(c,-,mo7rrq2G[MU(CB umw_abWVQxMHo`#S*ZwTi.@ G2Xs]MM.-}h'HL1 Y E O$-#k:-u+\Pq4T,;T sQ~QX#8st@5^V@E;*]zS[9sErc+ ]}F)#*d[ eLZa4"B~DE {y;iZ/u{!InU*aq C!b)aXL/koE43cYQ|"0s2q^[qF ~|<i:Gzb5a8>E2~wg #4j*ZR-":qJLly=E#eVI3&9{E: %W6I#k17bK3r)q rf ^4O'{Pn9YpR@Xz(=rD|+7fBrL92#:zrVT6BFCVb}Jl1FN CPI@PZMr@xD DiX? '> xs[hQ }Zhn#lZ\'E@>#(5P g.VH]} [ 2 q M%B!D8V"DkXHV(34 DyP  w;hcX&9M@! tn~4:Tq^NXcG*-`7$HO  6 KRh{$f @t cP6} 7NN{+%B]VREEx"ph - m5Jb'[R";M[e;.#0 paMz\~=J1D%],/$WnX7Vnh L  m?6Uk& DFgjxPZfF>l#E ny,Vlas)YZO&G+RM ,D29c@ 1h>7VZ7~{ 1=VNO<i<IJ$5AtA!dxryGv I(Y{c$?27A g&Hhn"M8:'Q(-36 |SDbo`Z=V9G:(M'Lw) D maQLQK$ 1C\[FV<TP}I'+Hw" J+b"Y QBD n>?.=-u0l qMf}&. g %vb: U8zMyBDlsUBgfLo E $W;WwK0m&D(hu4RrmNa0+j   J@*|r.>|pg  SZJ 9(5\{R2X/6SCOs\(2r|HI eX@vnq'vQ O ,|?dZRlr  ?s]@ uU+Bm"m1n=FUOl C9)oqGF\\Ogn} kvP[{k>o}Q|sfKal:guT9RYS!\oT'\7YP&<}T j!h.O\ Jv e)sN+C}Wb;iW J%leg7i~,2+ ` raQ@8#ss *BD b2m,dzb4.F9E VD7w 2D~E  V r m n2b H !  ;e,/x2>wM6(/LwL#N44 k #A u,hN = ry;&/g-zWUau\!3NGP ,b^Z AcQi k c  f{r6L+qECs#EDg=BL L1 HH \l zf 9 G  `  a\kTl`0@Q3z17wkl8~:sL C +'^=sm L-'="9t~lu &: .[>` { n : 6LpC}yUA'Ae<x.V2)FMk N]])zLll&w2&/-g5m9+ mk,XmK Q 7FhDz!;Gl>}n^qv`q Y\BVl24 2 7-N~e2^lC=pZ8KReccGW,,P?i/1X-mh,=yfR=slBzd0^czi Bqi0|$P-|Yjmu Zjs Ri| zyy[0$01ur7|4/f*kt=OymS{;*k6l4~sf|ai*RJ:)D +Q5v+(JBf#e{\t5!6%3Qk~t1I8sHAyP\} 0 vf _`A O@ sW /*SGg ghS(,T-7~~zrvbDKT]4:^[/*qa^o4&&pz 'L6aH@vJ~67'; TP9 iFFqq5p>u]/Qb^<>F z7"h2y&X1j@n]HElXe~&bMJza-z@h5_oLuOfX;Q5z@j3Y1 oK n^V7><xRPNg{i<|)\%9M-fqft9AgHm~sW,`(P]3MxUg\ZfDK=Fv]euQ6O\3I*e1p_ X|5$NsX^ &Z[HLHP\o6 vNmoEa~YIl+Ebk(J\IX[InP B>*t/5t7KF0*%>os/V_ b". J'MJ+{u+rv"_4MImP(BfYvSl#?`UURY" FD7[.3xB;{wGx\3}NR|)BO:&Ws0cw+D9Vu[g&U^3+M5IK3`p?tGw, KX&@9UiOuk#; sresr aWP^IQ@ 7 &sn6h+ ,UI|`>-iV(^CfR @J\s9FQAe[oG~>)y]N>"1?D5:gRW3[ p9C6Wqkc/hcdjV_'l0wHiRa'EoT9jS^+ol $F J_%t?-KLL V@!t*^H,C ]*Iu;:?oKNCif#D$2HfTt 'jF:c/akp_v "JEEZo  d(_t3k]  Us#)^5TR#/vZ$"_[Ic4%=eI/$/WP #fw @2NcR*ngyHF<Cl OqxO31Z_SW@-^9`qZBSNKb{spZRoi[ttusuauq%rcXv[ z})U4 )Ad28 -O*1&QV)tE > ]G]y!8l,a|*mr(h$K4]F $ 1404. }N|WX^$Xi)?Hw`|&@li5W|p9aoe/;O {T<d>4Fnh4%#?v36/>}0}=bn 1%CC(SZu,kQ;\R _mVbp`'DDv_aM#D=i n%ggW A_a%|-LZ=Fkc s HQLQ|+?;"D%?[nw;pxZfkT!`Go9(18B#0im TAMMF._6f@9 lPXe*>`_]t ;`n9F2r6d`*WeowoGu 5s y"kqms7F8/+J`z{0 !T|/|-"J:)M #3P;&Ajud $g|(H|&P$q:,.o#sjanopUJ7k~TmM4T8Ims$  56,VUr @$JC%A:mzC{PW }Vh,,20-T"NyU=6[U I +W<]a>i3q$m9V%:5h "l9*4he7Mo(BmIpW=h6-aEdlUcNC4U@Dq ;v[^RNkZf&5JO[$`~~b>f0y T+{\]%; v9k\9=P_Do"b=Hg>4Oci ~LuP|ew)6)lVH=%/4z=Ng&&-i^.7]_(<m_N46; %YG]3hD)g]]g{P|^^i\SUp\s0@h,m!_cd>L^:rG;1;^Mx+  DhY32Ip04M]GhPa_DW5Tgm{zd{H@2T{4y4U@<k|wS78Ptp?qsIm+V]Lik>h=$O-d [IOR;!@Xll }:m>gH>Q|O S ?vJ6j+]!894 WIs +1o~[vVH2Yp7l ^~e7b8)i b (.!fJCAQ1 # .9[Ahj1m=rH4Qu)K{<]{-[Y `:Y:_{R`^$\#8Sgj/;kedFqs6O+p.YJ6AZ3"hx,&!\,&qCv:w*)B&W ?-O3)!k )6\qOlIir'>GSP"tbF< !dw/ 7Th=[kInXSC^" w3\0s"HR*<h iOLz2bO[7]eF u>@7 .L0uW2<8tSp=Ws+vrZGL;Zo~HIu7_&'`F6]-c z% Q r#x+fuS}oh(x2fXyjhl 4U&UBIv8z0h,!$u7*!.`%)S|IoU:Jz{ 9[ekg0J70x I ?%2'y~yhFG8`Im]{tK*syv{Yi H@shKJPjYnh,\KxqhRea+cB_<_3-l=]2=  g|Cnd_|jT:VRfycPFW )O(4;721daU-iM[fvL#/ymugz[kp Nj '32'=MHX`u[vm[KV|lci`u(5// Ua2WoHnPbkv{bulBq+diX:8#?`DT -qRyMo|`;[{otKgBtL#oWATK$= CY;aScY5DUVRdhuz&_pK 1R2@86JGetRe]_Sqa^meWfhr2/Znti+yqb.M@:eU":Lw[}re~tce*HZKj~@GlVutMHK4|&w. L1M@;bM6(;k6@{D({1v/L' )D EZE_|Y^v.1_+~u>J4XHpRggv"JfjWUJDd}MNpt,S u457) F5KX('G%x7&DC1,a1/< 1G*pPJ*#)oAzf=M~~q90EKz'\0f4{ 6w9HC ]3 ^C_} Ls$Qy(d7!QS;OZ*X kK>`[DKTMq c{ C#3jkZ@CgS{zU=H}EM\+gm 9ScKoK!)Q =+;[|(+c7Z*&.?@+,_P- 4wvNA}?Dnf*" 6tP8 ^!qIZqwmez  m  qTh-eNlFeZ3eh Bw(:`RMY g:T3+8yL}o-2 ^, kySC XvX hQsX95thiw wi 5(+k;n-}_!Wj1k!H{/z*v<`' O"hIW '9\^$24f@Cl] zG:<-g%lYdxCk!a|Ily0!5.E  S,Plfo `YR/nlMM m 0 4b.4A?%y{(B(J<u!e7 1c7}ZG <% :_/  ,Eb N  PXz]`- R*Q[(Q6 4DHOp.U  -P:'(fK&rRv | ++*qu>7q*|BqGD~ T4/ 9b hw'R6|Gl@:%r.i U%, cZr t a:iO d:}W1:lt'#OU:vc.8+g x N0H%fbwTmNVZr& ;  ? fem >=?4uk%uAgP!< > </ * aG9b(T odM iE|$W+0oS$< @P y4 A,5lQ< QyO gj *] wD<] -  [UAMfxi dPY|Sr ?)[C2V7Z; ar 5>C mx zkce 7 {4 ;D+A2:d(5)G= T;01]aOu >ye'j a'Hwb~ FdYF >p <-cCb  3:XD  ;H}=0O*|  SV pYM q~)TI;MvAe  'r  Cx", q^Ww B '?U D`Z D>b7gAwK}^s K/&1 ^P .$ f% yU+(m;aX >vt> Q %7y)/8^/X%|Q66 z '844 % j'k +  b  d wW!dlhQSXf>U6. =2gZ zp9E)yC[ t}UJ AA>S?14/;s:SG]M"7bSj 5hJ#P\ S8*B qeVQMNxazc^"E^dbxGIj];9+[`/\wGi9&4- m!fk`S.T ,k|o'x 1 Jp,~0P8@j`t:!\2%  C | jTDm j@VR}/ HZ%[_5vsKir] w7L!7n\y)_?\T&&83.s  1 {4Y4x ]ERR- 8V_ 2[Z7"xw8?3E`7bm)+;d ee brC|:s<H.T%;~VQ 2 ^ YCNE foe DHWPvMEBY,1oU ]  Kz:)kZ E^n=D YuC_o Xr%?-33P NMs m -% o?H!b ;3^(&/IV-\=V J!pk]?70,@97h7X7m[ ={# SLh" C^h/ ^'+ }HxxTSeX?Iq">c\3x* /2A= `  YS2#;(#\Gr  H ^\nGJ'ILpa:pUxDi'*2  %E $l\t>)/#M)C/f ; )R N#8l<x`8XUgSA+Q*Z o q7 }oM/ Ba=%4p pF AcQDk G5 ,ru   =:R:23JodU-* 1G gWhQU?U'-Gl)b"W{h"Z$iW |AM:_ #;YbkD2b?@+CxON$ 0K:CQ;HHXnW7~ KlO1Hv\`->_tJ/>N>BT`,m-aO? ;VoABJ u V  |6G*42] 6yy[ |5!O/d^G $Xa;s(J>y8@  G/ | sm4 %,eUD"y9X[Tw%;9fI6E^0A   jD 2 F  57dc[JvVXyV@\0!Y\,CVaLk?bSCU Ree25 ${ $_d 3  } B%@<;%.,V\5~oofxZ6"'6 l^`$&]s"1+-J%r # X ]eMS1lj|_ 'l -Q ~]o7|3 "3 lb  :\90H'VY}MabKc  l+`pst6Rg19{+mtYK  )&ZLHfPL1<Qm0N_T>d&Gr"jO< g88 t $X(3DBk-y{m;&a4J&)Q!vA:6 'n =  94p xx(,i1nYw 5HLm\ovG?,gJ9@ j   0\ R e#H!d|- k`q{wtj>'W-OxW!QrCM<,)N$ C 2\  ?a=0Hv|[xjmG> fd>=dW7tX ny#K zp' h*  / N}L8[7%zlW-Y#Ei>cl0).=H :({vZuA+@ x+ /q+,w-'JSS$YYP';NB2>Nlfj-'g\ y [SWk^=@1WJ/751FEG48ok{:T&O^Up&84eYC#Wg;X/XYOHsbwUX`G"=\)Mt:[# +b~; *]8eS b iws8s8{vc xWrBEA^vVD6 gm"<a*D /y!N/^N9yIsA@bN38_9O^l [-e1,+1T;<5c:rYK27dni{pi]`/xcEWsd0KLyg'Sb2bWE"z{pq{sGjltnLgiA]_xVPlV}0s `=>|LLj ] EJa\@JM*\KFmf{oLO x40a*# [A=f@ojIgE& hzIk0 !4AA1YAr<UYs GG8VU Df6}K^SDW2yhWdK8U S H};sgFwT<%& gP 4 b 1!=y+ ZG][jznr~S %}D1VSVQ~oN#] O: *q  g :z-k.88[WpT1~@i)vmzz";K{b -%) I  kO,t~Y j bHD m6 C  "x#R~cd.sF  Y3aPJ28^'xN#7 5 &nyE2fuPx[] &h\/(SvD+ mE7M+Q4fbkGQ\d#[[)#)M !S( e^-!gYit l, 6O_fmo,{FQSex#[,[    ~ G T yjiV%!r)I; ggi.m YVVv +=* b0U{ v3H i K""Ry\*u"qOIQ5)p^tl8C2%Qt X+r"@DR[43,a2f, >^OnS? <~z1y"`R\Z[-j*:y^DO7 H[ .j]$"1 & 5 !mJ99MGqUmS D ?kVlAuKJ&t {WcnS/7B0& WZ[ *D <% |>O@d h "st45U<1Ln7"Dd_Ip+%l?KI1'l| 7 a.f GK)HOv`=KnsNy f]\(3?=nyY2WKM T#? I 2a0` `b2 t ii. \\)hT7v@Q<HNuDLuh4BTn SJ + /hm O E:*vp`|hkKQbU:\":jM?l==q?Ie9YF.&] q@ ?V42&  vNN O%},?D]^vn^vP UEfj&(KfOt  p+'\Vl$)3 /-X|Jkgf :! "+sjE\&Rt8& Y1XB({rtKaG y 92rD  _Q }6kR`afx"  )a : +} ]p P~]Qy!I r `NK!+\xwIN4P}UJ^!(B=Fy  H9$C5 e/+?w2@XI "q` UFJ"*+#l,K_(;C ++2PPb;2WC R5m'DGkX{ !kaiL6 gS-}LySi- (0sUU':|J1h<qfLm Gfwk~is jz1v#'u2&}D>6*Ko'o   6=[Qhl  ,}B{Wc pC+2={/\|f*M#0h R)( d8j }CB~;;0D)HJ" 5p.cEHXQg> wSTAo "f&  $jQz xf.e}$7C=K *c&[jp JQr~\[BK/.#w*P /1 %tvH7?:)_-g zi3C5G^{Zs_gOiW. fk@ K+&ZR*V,`|C cX ~iV1O/ [y s'. #CJ+ay?G p rQCyZ!l H/'td6 $@ars>F W!y7 >  u'~4GQ_b%55zS=k ' `N8)%nO$jY%s<\xy#y K\,Z)] hd+|8yEO& 7  f \2+Q&iqA&~(y+V1( r(&x/y{c6cn!vaLy/24kPD#z {hr Yz#EwA8/UZ Y#(RR[q N`8(>>fD.V&/tF -ia>7' w L !#E ZisDxMI^KY9\ru 06q/.!] 9 tYtd T Rg;vBl !vW)>+9H7L/f}t-#E Jp_qEM_sD>L] 0s+DTz3vlQ"lKX@7__DO3y6'ji(:Y]"kUC#t$RTU![ U/ ~*a; [?` ;DJp~T gPQ!pV8L!n|\i>^ I- K `CBV.u#*"Jn5z?wKS.O3%sS7KyoZGa" sJw;Lr , Vt0RupA%cX?L$WZ(sp*6>,q {X3x [mY~ $Gl D D9\93k j= 8RUExb&rL#-r1.uThL<vFo g,  "gelOQU<p0U7jKIZ`~IkC ,WKi`)= 0gG'Hn!:]h-[? <%%VeOH[(Jc7XT2sb/;%\.wPDY5z!f-kVJ @X}`H5vK[f^h:QABONk>tyjRJ s_ z@:oO<rBm%2M(M!'$ F`/+p|Z^ZTWLJ4 kyAponmOSbZ84Go{v2MZ^sd~T7UgunsB;/2BRv,<KU-?/R'D B1gOKjq^E' )W FtBPy>x~%fR9y s{>Wa9VZ%0c%<KyvI5~)=qGggW1b%wSOugW);>r^U G5*c VVZc*Ad>`VE 8(}B?0f}*JVb=.F7k4xBDdo5kue}S|-!6U% ](<&%Z/$-B:Q>6?  XW<1Oz?dkgx@Kv@GbCw%S&r]\?E6qBGtQNmfE;hjJ}s[P]j`~/RhrW*J?#'[nA,jY z l+;S,YMez\;2/[2 *(q#Fa/ OC{2$m =pX" \xBdAUnx81u+1b < q   e>{w[-TW .|fCsWm]4)Uy1$. < ppJT{+b0Ic<B~z!8=Q}N$Q5jotK`v&:6D; ,><r  3l2=hLnefY\W.xK~h} >aFX3k2|g|B4tP   M @8us98v+ c'|2x5 UFAaz'q0 }Xm9c q  n hjgy`9A>eURGocxt$}uEo]?3.'.A6%p|[rt!g]15rk82]ZtDWz|@T]H/ubl B &+#5 fz::Z = DHTraEG < "Y +2.*l9ugVHymEc  J ( ]r , u ev!e!gdU#@#aT9O  ] S;Zo. U %$K']"M}+" 7MPHK_e Gpd mA U F *5>P C"{FBgp h -u 3xT . } Z`or1{.fS5OX%2r<;2E  P ~WhaWBLW& >t{dh`w {\}%arCY  {Z$)0JrH0F.$VPrt PNHhbj9+=I Kax :>YEJ<BK)yjRAI\DJ~L~uEL9zrz4OS jOe6{)^KhZ%Ei!PTzY>tui{G&)Zhy} ygDU `hERiv&ZX^ u *@Vx/7=GO-x$>$HIE_Fy,)Our-c4|W>fW%  )=R+AT#uWiIg3msfbwk3yWv(9I2~I14.hR/;YDw_b&}B L3"Z4fvWk%9 b4Q}:BDU C/;pVztvpp`.@!`^UdDAzNvFI8wL/I)dnvlc')*xzc=%X;Y`)`{E ~eE ] 3?'wd`JT >A22iH91 "@6: HDqG>hJ:ia bi1z~Pv:+G ]   DXE@"`)>Dane =kJl@l|.n' B h x e"Dz,uMYDGA6Z;<5`>#YQ0XAr2mo:hs i ^F 4 3~q! 2dqW hN -uIA%.!q   qbUn,akq!OcGcl0=A&J~[`(.J0;R:B-hMPX?*5mVb)ge!WOM+M`D]m[F|:2//u^mH*!-1+Vw~s65aQM!-]Om<|m|Y?3H/Mh`.MQ\apIhut+2XZ`oSCOi?n_N.<4;nkmhhwI<`!tIMh :YTKc1I1w- +Tr|e,s"VE/|n{WmF@[R6 TyR]_N hxl].] 1NHMb&9~ U;$B4nn:ghTEHebtzTd T _(7[=U,MHsI9c|ko59 YoK!^NLu} f Qx\wh+qSN=;c2!R #l-nW%]7 , dj Fg]{DNxix`0okQ^L=p|@M|Sk+3y_*@^ {`g > xj#JN:sW%c1n=[gP_> Xq}|mUQhu ewYA[C6R2J>>vk1 ]1',ggd# . G :g}eY.ZO%Iy@C1QIXQ V&H3Gcb7#seB``.1.cVEUoF{(j{ }$du81BEft [s- O}*   Bk1;PS g/`<@A1*#0}{ >;~v|\ H  u > k Hly~DxpwJp1* V \$AG9 0mxb e${ 8@2A NlDM9Y8^O}#yB %WjJgm GqOf ^) 2:7;BH 1 QAJ1pxXQ ,8{S(' +Lr<s]dj]'omKnHW,,Ft<~NMuKZ]3`FiAN77*Hvv^ZiK T FUu}28A6+Bh%@6 "q wMu 1#m Q RU ~xiB;Hpt R5:`RJvBRa!42L G*h+46 .anfup\ D-R"pYM;SM1O,0N# jiL<bB6V 7,B-] . (OA?5M]fSTgTSZfUg05kgY~bZpLXx9I0pkmOl;FgrV,30h   yTn?`"TLkHO/E^_&4_@T0>Y)K1XI2q9 9a%iq0-Vt[4p&:@kEC~ $Li+J`|V=4q4pd~/.w =lN0lu`";~=I Mi 6 M[rbd|& P4 mWT C ;Yd /xN+s!7/y[)g;9Jzy>P( z NV ~k2? >JkzZ ty !J PM  <8hP/ l '=LSg4 >8  9 sjafBOQ 90 X ;i D(4w-( Xk ,{ J( R Q hWX hVIBrJ |9S <2%p# ' *2.|S AyK#c' s#i H W& j| aZ|Pl 3| 6[ ,xN7grvn = X V# UcP6v e, 9 :Qq OCN Vsn/ I ZROV #QNV]H`t8 # sQ+E\ [29%{Uy[0 ci0; a^ &!T }n95&$) {(KJgJWOk~GO;~$rI\  ] sv  >mdH  I eH ViL 50Jn=f S M w-cZ YgolR5F< w 04) }c\'mcI Z. tDr JHK5r S Loa0kDQt s/ | A?*aXk5qK e 5AREaT. fh"c9 b[%,VBr=va]d eAze[lDn Vjy?DGY`;@K- IO |6XnYvShc(xl=# 9 LpROrE] bMFU4_u4"#-zUn^ <'"# #F W yxJ )lO4C?bPp`dE+*Q-t .t&9Nk 4 n0T )=e* .7y9P*XGQ`9;pC_E(0_ asx3a odcHPoH%J5j)]x}\7Gf+x%hVu0o+f+H3F.s<_Xq?H._   ODOq n"nl1|\]%X(X}# =*Vg`{6Ooz( '1 .cCCs0 (tGl  3b8p37Ri?#{5';d!=% q +RHd6`Xa$g {8 3 9Rorl A8KQ yr7^Q!| 9ea**0hh)N>8_lSI+EVj9 mj JH,W(wuQ.:Wwr6 2 GES.7f]\w/msi`XvIspGhT d*'%*[;#0qdn. / v  ^Ar<78J9/tGW|JU[93G!54{ 3 q& cg~&T<.n")-_/zGm aj<NHda@mJR .3(@)L&=>j93_ Q , E F 9sT.p%eM+<}x9b Qk3P}xITZ NYCW6 - b ) 1+P_"=.~~?\vLR](Giqs2qDJD, D "z mk#&d?Z &NE|$!AbT-~${!stcTGb2}d;>x]X_Z6} b>UT0Bmk^\: 1Mw0!h*]:/q]P\cd42f2OeQ5!^KQAL n .P&$Kw<b c,8 EKDJl~B{ BVU}d{.r f2Q!|.$IKR)unWJ(B")C4c[.y"NR }4e a }5 q-.g~XG f1Tk  QJvw`/,HD  Bk%4^httB4'A+t ^? r4}]K4}A%5k~FOeV$Y)!Wd$)D# a5hj@'[((P5r@^%p 0 /11WJYh  ,(|e@B@` ZOzAR+_ >rCu/A0jdKM*} : dJP+@)r.[-PB |1v \;7N8;-/Zh^5A>pk*.9!>7hmA:z0< 1ddG k[mfiA T/m;Fr$p$pP$Q8&@gqa~ZQ  e3qR5< ,q;Q8TXT-M9$u, IDdMD a5 xAco[Pwjb%^>gtZ,M  C[: `(E+W JN | Yno 2Z5\C4OcLjJG>< O?|rfiC#j%smq<; W 8`a5&L<6qEMwK4A|tf06U2|E:8C*Y 0 D) 4;+m vnI%3j,6aa8TQy:jej) ^_hOCU- ] t V#BBs, {hXMx ouw?gJ=$ 5~Y+2Jh?0 D G V  R7Mllasws*l}yzv8>FRZd u$_3m '/e )  qZk+U%lUv ; &e#V);Z |Hc=p8)L  :"  H ? bX: PAid8V"rT)&+;Q\vM{CX (c2G'\YM>hvzVsak)?R{N_j Uj>$S:M{7f U \ > M4Bi*) F8Srl}u|x0S/VZXr>d 'uteM| O C  T| L$0@t9TUpW-^3n< r $$f<;;@-[/j #Qg(N\w2f ()Eesw.4P`XU 9 2- 3}P{:S#5}FzwwsJ-.qq#? R55Pezf-; Z2 n K ^_n#&z$L&Y!\xSS ^mo*' to$9W6!wB{F$n V:~6yUy i\av jw5.u66omAr 0n)1i}!r[Yp!e5LO5"0943"99f26(6 `f_r#3H=M7i7gu"%Rr mpvNuJ<]/}|x{ v|:w{>"Siu[O`#[OJZ/x}scn(0M-1C/m &~qV( 0AxTt%o[au<-l2;ah2Ga kGy$!ZK~-_T{,t8:ot&y z4"{_V3~l}H/ O5"Iye)pJ"h@+ ]e{# qIX?'-R p RKj ^g + Ik(}!`W|&y0&kEF%7:\x_{9 zx}uz X-R2ZLo[,EuAiT7\>eGN^,W[|E|D5-{bbs &LP@:S&6 G\o''p75 2y7j4_H7ZQ?&Gk]mR;. OtGOjJz/`/:"obkfI HTf_A]^.2:s6MR2qJUy+xGc  b$/#b3GMWH.utO DZLHL\>@W\q8V|qC7#%q)C1nK0t]i{,x@gP( J)evccb68/b .nU[kP(ef_L+ h %3i^_v6UCipz `2K`\$ajD@zhUwu7*&O6\o3P*sB,Gd-"V0cH/HQ `;% \e,f{$9Xo>ZG ?3  Kyk@>B3 /o^P+v#4_W(;L%b${Q4w Fg 8&EJv^{ N   X7[mk Yen_3HV*p2Y,h .4 p}PwF/KZ | j Cv)%_rM8a#$<,KxXp&K%few %xIlY*0Ou1X 0x  epnu<kf:A \ MzhDC w,L-5F2! f%Xbi {dPOC ,AV@ R 5~m5/F \-([$@ UWC.P D$R?F / ^ -2;0;{K_'ke YvKO<^HzVz{DVZrIG%pW@  |>ky{UO%%snX`#=' > 5B/ \W+9?Ar ]W@>z I ]qoF;9H6/tR,+*~~G-Qyw:l6Y  sn"2*r /$ H:aiJTMDlfs J >iy;; jQ!y{:i !+m(]9cq9 $  pCY[sc{>.|; k%M1Y\s) ^ jP!UN<])EIY=cH*|i]j9&Xt'xwW+F42Rg  | @!BIByJhpRCNC_?P}`zgxfo8F}>mzMMN >GQd@}T)af\>M4);of+8MEo0$PWo&b ?Wqq<-Nf#-iD j t im^#mY/" ,Nb~8hZ4Uk,Bi$I8zA E[  %f n 2  # AA3VZ<]-_CWqe8o! l"Q2bIdzM { 1 # U &c *`;,M5!o(Hj#CXyH.efXpF@K{UH?1(O+r].mX> r  h 53MJ.x,+LU.puHZR 5MJ$x)u F]!Zq86tAP>[T i% iqwfzSK9OROT2#}CXn{i/ *2QvHgD6h^L%UnJdz P+8HD@*vTuo]BKxw . kM ;a0m@_0]RtF c L$ iB4XIYTmp`.{ni*/ zF R~ & 0:qtpqJ `xsH%k 4t%h>K:?`g/. TvK\=3A4    !f,UXWErBk+ NgO/hEOc?! T hI|,<5'.L^_[HEk K`tk -&$aOHjf /! l p( m  `\n[lAB~DnKF N 6"_J;  ;!1;**%kHe >wD 'a\eqrLv^/ 4Q$ $ " s ;bwP_s;|wM. R47)4rb C[) ( X n=~(y +|!* QPuT,\&  P2 ADP4kPhA`?6aw%QH@  m@ pq qC!.F"Pw}?*`x f#Eg k% \Fh y+U?6A> 4)?Z % WhudM=NV(Pz89|2 _L 7 t+TR> tsx y*=695i]x  mb g#prjJ@4VPsi:Df3TFs   _  z8Cu{.$<\ E: g3 o^LB  'o$R{KJ8Tx0! ! r\ ~'q1r> @   pEj6L_'/rG~MzdRB rua y `H9t.Y26rivFIu<Rc j&jZm  p~pgNB4!w$4g  @OLeRg)SRXsxrmSK-sY;8j% 4    g:J%l :O-Psm\\!Z=A'"=u,aezfh/U 6 Xne?]K[bM& YJr  ; i[j{'G[KqW!8p+BOQ`zTCRr~`SQYN W  ( )f(Ju'KYTPH9zrv]Wx|S \%875])H(xJS_fD l ]i ]i <  ^>DR))w]"rJgx Z"`6Vf+)g7V*\rl)w   - H D`0:QT0zaT#TyhMY,3(bBWYvWEK>-SG$7TNH4 ]Y %WrAlERoD gpTR)jn2BS: wk4Pv.5sX@^@\/[3f%P6/iI@<pD#XvB2\T[`V=v]6\Sg3 c_W b-qXxQZuk\c?rww !G R?Fr^2 7S:(fKKQRXM=o\_h&}G@m&S*udUgyg3U=Vb~rZuf5(O@ !18B jE; H.fWe)*%grcKpX:h@k_=zE KlO&73vla9\_:~WEle"_RqX&Ypn~6 lW0i!@DF`NNw=l@g PHD ].3<7;0,Ez<3}h?o00 9Q<3< GR'C6uP;pE8?yd/@<c)BGEccTq4B6q u _Q_*Ty0]<-?{0#),07F(-^A6D=h~2vIE slF&?W!S@*=FQhA1=C,/\97;v[z)7iwh3x.xxuU 2Y/2v6H; bbjj@Ij\4WMTF+%D(h/,!;I! =  ()+W 8F@tBp)(mn4AB4MtE*U@OkZ&W\N>Q{.M--uA#nV y ?5fxVEg9feu.ES"jer#(!c* \ MS#| . ukQg}p<Hj ZL2bM0 9IF1Ow_0MsouP 9A0q't%!Z 2# |DIf Q]<}U0  2Z CL U `WJZTb>j$6TH!2 G >` X@vxP Ysu Wa }@&KPPkS"B. wD-<$>q  OG ^{ + E R.cA^6hhB+*.Hl (WFK+S}8]?M' kO, : q mK,KE@! %ap.-xi \V% Y< l< R P QvO8SdL"P/{ox2hU^I?FMdF;KK B#)  [; hF_'a? f b7  zhmWpj}g&EgWTob! zG]Vj. %16/Tk4& U %B\,JR0U#$4 KKQ+i*ޱ%P"hb l0< kJp Ycpr|VpP{zK!.\ Te5# .-!9 5V>ID;JGA B{ 8$ /t>; pbvm"?tDeh 2 )n)xY%M#%/M @6~ V 'n#=FESw3r$B1Cg%/{*(.hWY + 3 }<IL8YFeB#4K|)?0= !fyRxzi  pS q< 'Z]:1T*>9vf 'H;D1K M@:m+I ,9 : af ?%\ "5Cx; y*  T*_:-IT  G6^`  X ^]UI\Wt ~Ic S) q^9P0  _ oK*Im8_K9y w p"~}R( sh 1B?^>w)SK\ r l | ~ LmEb[  ! ; [nJ9 PL 9) +~Oc { * ?'.=Ilk X k [ zjMH( i /9jPVfouLTykGKM[ ; 3CF30h+s  E> (1n(?FZ]#  S e:e! >3 E s iHCh#/UF K  QNZf/P.Ys4 a!"BXxg*<+{sm  F_fn umu== XZZFz&iW$!0]-4x   ,ZdX"NM:6/MLN]slg  C ^ l3\ [lFDEB2 s# ?[s* W(B&WmcTi4 EN =[;r' F  RsCe6OU]`9 ' a >/&T a{ (<^0etZ#dTdOs=`- W +#%jv V c`eo"V\t ) zsDxb\?R t  Q=K!tl1%d}d  CyzzN $2Q ! ^. ALMA*{( 7[o%:Tb RL|>F6729 #qqc^ +} 1==Ju ll-"YqE+ 9%<'1" hK6 e 5` 2f  #"v2 r1j*dd&( 6s,BG  `S Sb 1i48jJK%1wR 7 [I{e Hx;twri ߔs Y, G?"K U>,vTiCLx- (eXAcP;<|[Hqbs 8:>x-HRi!n Xj h D*'^Klj%Yh68(>teh\F( 6/W8g&G@b>^651]  >K < m.ufr;BE]` ?Pslh`drE+0Rv `fO4d5I#V)Dn  hBK '\Rn(uc- jxlLzPU A[=XXShxM .) 1 X^ { :"d~V 6p 4?^=tUS2J+dC,Im C\n. D-[?o{^R  zFr.wKRfm|Y/? *aiTC`++:7Z5^[]^!MZJ?E"({ yr:  @\O!)U/,2sIl qnP F <9 N?}>>m$e+iA _ D{j[&:q\F;J:Pk{ x"x,FYE0U>KVZ(E[v&M9A(s0  aOM-@I>bh~MYRN6s JINX|e?uVhW 4 MUjkB+c)v )]'0Y|C~0`,OZTrXzj ^6KU~B! T%WJUUtTSO0jRHZz<~3TVM"+I&*1Cmq^Y&<uuz}%|NQ8]2R{/Xqg.h= vrzu)/v#D "w|$_{jK/g>Y`Q7L>MVBV:"9?j[!)zeesB|z3X9) J+\W5/:&%KX0Ij0:W=cVStmo(B$(pDSyb;.oL w !'PJ#q0/a I" g(u,Ss@E^_W>s(A  އ JA%_ d (ovd8>RLbsq7zgB* #8Puu>\!?*b*Lz9fC5^`:E0x7^K oC:0ivBcSW^vqd)q;mER'"2=|33MZ<(P$#Vi:Xsq"unl{;?JnaM j2"yzp;7 Wk`b5:$ A#}4hZzB7k\`>T*p){CIU4_pdBcy13$];uR=PL{arYr Z?`/%2hI6.FP0jlZxHX]Z ,sx{ 8&!K E&{bw K|'}q_x(c?xbo1R BF{J}4g+FiC_X:D{ Z L _  z]H3qrG$ } 8h4xULzl<+^< Gly*R 4y+3Q;/q*KU : m/?*xOGMI}]]En lmo =Z=Z~ yF'U&i0da\+7~ .hLk[5Lh"0Iu5J@a.][vLNE.kVgmo6039p M>$<1]x"Ak wcYP$76Qn*C+IH\ y-?jha3T,=1G!-P`|#;ycLk{e!H8oEWJkop-&fX42{t ;FZ%I M.DkB ZaATd>O }P &98!TYAo52IVqRak v4#\$ angf(kZx),!Rv omGq"&]c2t hShg;w/eVk!QGVehfnBeb.h8XAL x zf 8 |m<"  <9e[4[ :wcIHxPwAg68WMQ]J*8mEC"v!J5uqps}G5r).k2 NDn3, ,U;w\S.\q^`8d$ qO(zm+VUx)@`7Ttw$(]|wc!k*$Oxzc "<eR!4Lt!lZ(~=;e 68JJ*.V ,rtD#u={kO(`J2_7f/jIE%W\h&^|~A~'znl}c%K8S4Sr)Fg ~D!MU" c4@$J\:WX!VyE,RLW{o/Kz1o84Z?q& \wzhmq+.eN[i}OKmZSxu?7C#'.t g%1]z<}u^Siy:3~m&}6|HK5>jcf<Z;>j8"U*>I_serg X5[{)4:>jcfN~Bz@6xWvz5*#Xh / ?  ( t@I'UxZhLl\;dX%'Ve5 |VN=W4T'CgiD5QXO < W N 0 X |t3~/ c#P DvEgzvZMO!'93UV R7C %  m s f.EiFd\9 bd)rS`Iz,T~ Sx m  / > yZ5=YYOa}=g`m&lBX"#l+Y->GZc{  d P2Z  ?jG)$ F\Ji}2"k ?  Hs NpbhM}w"O -E &  V *A5}80JZ5qx\E o *^Uy  O(  " IMTe H3r3,-z6 < +q<\zzPeD}J5 b'P2q : |  OkPf#&1~e:G68*e $ _ I wO\ZTKFvNr O<  sUO<0Bb {Y.=T`4   lDP Pf -`Hz@=i#Hs >2 *S <N+b'E&c1x`6:Ln6_ 0  %[3}C3SdnJp`Q em#F*h]9(l 5xM e>5%x=}Eg &2J:" Rr ay mp (ve8% Q+ O u['o(y[[x^a[%TdDTVy%S1N (B 38hD{U1] ;sYb{Jg](4I P_fwJ7\J%A zW nx'Zi;'vgy % -I }KgO,S+ V)s3Rv"u H. w H(/Z` VN-PV6y  [o s  _YGHI4~# ,!XdD  #Jlb u;~_f0*8u!ef   x m;){p ;vnHZI %W &  - l,cBxav.g$;zkiO x 4*6 ozqc\// ' zd[-;!xQL ` 3Ax5,-B `9j$t4SJY#WjZL q Z I b <?JC1dpa2H\H  )Wb lwIk+3m z) j,3|w4 AU4>Qts1  G/1l6+16& h( \,B%JuV &~ Q gN   fqDG!gY.G/d p"B, H (lf m| f N_ . BSgl)l0a 7< (O6YYbZ97Lnlsc[j)x*aF}&R%N0f J }$  R 57S|SMF* 2\ {Gv#fa tM<,)bte-hlC "S% [ Xc @!gi!  fR"5]2 w E X s<At&u`+v # :{^l*o FJ J>+Ef8 6 RJ\EviH,27j+19^_HC {%kf/G t=9<h+7? : ;S r/[0z= uB&9{lUY@4Io_?1B  B,f ,('hx (  v!>,P"O$lOD}ZbQQl4e[6t6Eqv c]&   tQ9w6ORF%jfH?On)DeM x EgeV'N]#]7|&U*,-nT08=,8>?\ .p#@ #= JT&U^C0*XA]n" T& jXX K,mFI @7PMNK|v~R>74\$L@M?Hd Wrx5?4nEp<tbN^/YcT6 :F |u83CPq:_mlB2 ~&6Ac"n @#U\,VX%]SU r%lv!d%R f W=Ahdx8 ,uM:qO 4 a^3@QX\_qE X=;z<`UAC GX-R7-O,+"W,ekdb;r1S Ibh~cq3Y>Qy{n^.Ea! NQws+,">akV* I~qE+7R\R(i i{adQ54+='#| } y+7(L ?/ 0*d<u6*?HZZi`/}NfV: 83 ka}YnvlN{8c -e0iOF3:%i0e Y\hWzho]lm m0'cfI_E"U7P% TN N[OkSc{w cbgpY-oyd'WH|y.zwz '"*g=~V[c[X6rgH 76q._af pZ`t\`=<T:rY/5mREhh{+9UaW9 ;3LpN$]QC8' g{$>o_geE:@TQ  C!%N]vXMM_gp[i_}PLjp MpE)au3-Xrs,mL3&HKYJ{{Qz p ^cBY$BQ6/$Lq6H%_=/8=Kab=^v ]KyyuJl kU: &G|Z_h0|2q1R"=QVk D Hi}w ] s|BmivXl2"zwlAEDAek/#QHJv.;,kdi,<~  J}R-/N-J_ s c3ILRtH|3etg+D9)5 H&-ocRxiu AzgC)yUjQg1N42*n Q{D_YSD 2l . -1Pl.g2a\MNB$;QnB}29%+Ds7Y](>X \ P  " 4 TllbY+(-b6vM[R AM  mIU~6k~?&,U n4F)?wH-v67i-2W;+>mU3 c':Fka,r) <cMZuR<~[0\+f&*;aluj&anA))N&g;=#rS U XUV=4pGAuIWRDXU\!*-8QYr_d994-w(c ~v|| _ i/R/||p~|eZ)  QU'moP`%j"?^-I1.#-- |[\CB  *yb 8P*@ lf[74 e<>uvTg;yR 31W ]4GQ~J3}*Rv / \}#9$Ld!H AK KoB4)!_i~[o'.31W=-3:#V;S6;,; V>f'%U * `uky_  ()-?I_bn C$z98Kp\HkI0N2!<$b)q/8i3C_P TL 9iR0q4 a72pWKsBw"C)$9?iYje#8po'L"^G. &d'l3.4-T4A|Y~70C{V(<@MXF@;7.u )[*~swQ*'FPfR+F$.G$uyBRz~owq6I R%?/{ !t SjUPKY+,Y7TdE| JJf7t^GM%sG({EY;hb 4) %:$ !An3 i s1h  e~nw?_reY Y",`"d3#>%# WPv@ RDI;yi]8:iOPu@j;kZm` Ml lm4iE)Qn X O)Z ARz>`S!e,8^\C6wH3 x_gib/A}uq/A-1?j(V% Xt#HUxe2Mt4RHJ2bQ|G:/cg`*4S)zXf>/ADo%I[aA>m>,] fB&Ps`0OVuq^ccvRiXNn<(a$`A6+HH0]A0uUA/`!`[k^KPVO 6E^j/ {/u-O?<x"#H%!3 Dkp^t?:j*|)b{$S.p"l 0^tvX6ZM}e  9I%^B=JGFZk+L(P] xd&U>]S Z 7< CzH[v< T x<},qBajK) EbQ1ui gs&37v~#I-Q d2M* N$ct{6 D  V6&c 7;nw .JSE*}+ w][({u< pUJ -: cLfQD ) kMrq$pzVCWe ^THy=  +t|\s}NTU7Q07 'jx  .N=8QY2z?T }uX i5>  lGi) YNHqgcqjl'G"aJ8To/tp(Kkk?.cMRaxaP)h1vQUNmx\f I(KRaM5qiF]$2Z9 Y* U*.L21jnj+vME#cY-(a3/A n(+c H'ly ?&sjRwJrurA:,aa+;(dm#lS* ~gFNuI&u%e$U N2:PD1>O:-z`XLMtq{7 0{YtFbO~w/ UEx5x,,'o > ^;:y# %% P)={XZ  RG? ( ,8@L-Ij"Ic# Q^r'(-L.W;Op ~Hh.KDa$  os~=7B.*A= ;=f8tЬ3E{ug %l.UXvK SOzH0W h& o|:B(oB#mDXh܏\>U+'3[_ [rHY -vXB7=,VaF2\`gׅ2,O6- mUlJ:t4Rm] ; -uzJbb6Z*Iw-DAd 20  3Xs L#F7 r .s/|$~]wlye%np;&R/`D}a zuexJ.^A3c0TgE) L @\ H \ uK!Ca \P1GM %kjp Kg}y @ >Q~^ Y3AD.r!:8EM&U3f#i)7teo? 7Q n'ZyE2p!xZW [/h i0 1j ( Y/,pe,PQwEfM$w *%2@T] ~+"=*j - LaGakzgo;a` * O+ޘX>2z IP@AzM&:_3A\Xxr%hC .   75Ai% 6 'Dm%].FQ75g1=/b eQ c  #fK$6:3 GMOD/"uLd!+HRI (.S /JUc,@z rOE P cz9,dbg#i {/@T2Ul]p0yzF[$ ` Qqb;i{3[p%.W~t]m,i#a3`vW,il[FXjWdv"DMV,)cJcCTX`4%bL ?LNy8-yD;I\G0^mlYUmjTwe#* {>FEzdeI-~VK`@RuskK|lO'&n|H+\`j yvx\Bh BL?~S e6O "*h>Ml\0z?a{Q1uV 7OH~h d >`gN7IV e ,yT#vJXZ[3}qj;;d"u$_he 6)=CZ[5]SeFiq-PyNV@_:;o 5WR/}pW6n[&}(vOYs IA?$:n]* ^Sr9)+#(bS.M I={.d:2QguhU~jf.R  qut*1qib8WowbdaUNXDL+10"ZwI 7R"v$f>arVuW5Tw g}eg$mR(cAE$}AzR&p.l~-d5DY:1.$?LJ1} ^xGZ _T !2R54hGe"` t F`By[FcF.7a#gq+B>e 2R&N;6%v=\$be NP{J1!r8 ^=gm55 )!qNrNj ar|12;:;Tj^i-0# >fc:?}]CmWU"I"7Aj85U{w  jUDtuv2jo  u-H?*V\\dXnoR!!,;U<x5> um f2 0 !7&L a,~SGzK/)34Yc+ |  AWyl}P#fQ9)G< A+mzl]UB#QArkFR *# jvNU^ vNYa f|j'b 2@3 !5I%S! y ~|P^qz=@qV500%G07a[C 0`ol/nzs(N@vSC)O,kB PE4D "WSr/Q]( 8359OtnYc!_|7S PbpzKW "A ,^I<{v$8"g@57fz Z S|`<_[ +@U\Z5 `cGX:DLH-!WeeQ'|&w rH (8$hBg=e\2F#>VsU`L:L+, '76YhJd {EBzNgqC?O<Z:kMvD"[X g~xY^Ee{yb#C&qVmwN2Y?!=Q^QK|xSynvA &K:Zz(?2-eslDw@+^UPfb\X'D "D#W H"ghDbw3#;6;jHM$0Y3Daa'TW0K7n$6p\,(obz"&_ED!07T!#jO3}{ /WmY9[WXtjQ!wk$U~Og#\lHS"X0DZLi,7t9t+Ab1R>UGp}!ULy#}, W ORU?H>vqSlb'Ooo%.LM4Je ehaE:Gt4Bqk 7"6d4kR \gm`,a$QU47>]W1&Z1V0{R+'lI8%\:45\HNUF>j<q-h"@'p0(-]J,RAjbSwc7aT:=#)i-j(7  YV8s,b|sVU;D=(_6@p ?D v;:~.0f?IRPHCZZ[ )ASkBEg_n:ljA1^6C R>?82 :[Gx[xyD%ZgJ5G.uDqZZ2O(IGA~cvwSC*rk1U2P~AR,xTy)pFV =zl"-XZ F\SA k~cV*X-2T_,X'Vw=!BSrB8zHM),0)tq1 Cyv GMH8#n GSW,aq{3!Pw"!QmjY  3$=d`,},E W2ZR,\P~~Yjs#)P"&1g)X%:kV7q^1i#N6yF}TBRZfH]uS%`%aj~`hB804^SOU|!fHZn_^5PCk@(sW#iU6};/qUkJH;u!.b8M'xxRfSyMYt@QJe^oqOQ|'ix+8wX8{B.UdRbU"& i%&@gh^E<_>M/`5{sE59/hG.;a~<,"7xV/)He#/K&mX~@T6t!!dyo[U]u<6ZxgJf\+AYVi\;^0 -q0Gi\{yzGXFse(4c*th}!6[v6m\G1llsa~{6{  ({\cN a:X >E_W9]}} o3bt(X(;al9ec64ceLb9;6lv4 /m Fht J{]@q}a>/_8tW|Y(-aG ?XSg"`sq,hL+>[)KB.Mtc)s:/S:4:5<EHTiv*cGLZ4ARyi:XzF-ffL =\LYCa<rI<0F4m61-DT XliCSr`4L3n *;u]B;tri$8Pf{V>lk:}t'Su6bc^H#[m'V3p?7'\&r}2^g>dpiPyU+{H$QEj_Rl #0}iYYMYpP|d0 lm lhiF'JX{b#sTTd#o@DJYU?C)<.7.FwZGvJ1@*~* {{xwVu!/ 9ajVk 6gS m@; b;sg7R[.'N1JUxJ%w(wR]eD:(,p<<PBa@ &nl_6#-@nV4=M890U$)FXdi<,V@6[]+NOZp]-1W8S;|r>yn;C2 'jwz'74tX"q?"/a <Z1DBW`9=ON2Fb"NpSlFN B QbRc=U/.J .HPH.*!Qk=}>$c P_v:%p E8 LTO +`9fk $A  /lCy*xsx,Z!%s 0b}cVQ?r7r.cb ( .Cb8YZiP kALKkh+9 n=RL5+fMP&L(F&?CI2sj,ajWJE`W"J5"Y =+]=|V=s|qD^h V7!y%pG4pMU8>"Puh Y^,B .eW]sP{9, -/6=4cc~|\jo+[FEf6k`Pd wbm0{Fqk&@<bpOFKutQ$A3//q%4apL|#J1$V gaj]Kg.~.=JxK"v}>0 @Y k"wo8_j WVug,~Bn.:~ccGCk/>\Uz9@&56jsu}:ssu{!vV9vTHZHIY k se_h^vgRM%kwZ} @S\$67|Twa`q)T~OYbfzEj`Pa\OZ5K`t]H8l)T,'-*Ul2@xk~PHOeuwn@q$FWX9dDNLN ` |5#|XO>z?rKsVLfR^NS:4@T#xXhuMxQ.&d$,6*+qae`rw~of h`0>/gv7AR!kh6/5 rto<4`N$[NC: N88;]ank=7t^ 2Q *nwx,nT Ck|p,0LkD>kZ?9"rcaS:&$p]FAC"Up%FwOF0}wb+f}ni"#<2&SWgnR=ke"(F7oD`N.*&WedGwso2oE}m} |*=I_r}.jo4p$ si^U.1jlW (iu{8=p.\"INY(yUu _K, 2&mpVR1O;9V-`KMji! 4}/D5sB gpB9I:,.,.?,6 418[b`)Ug;V9g 0!~8%  =OxPf30OC[t_e W%[dzh1.D(k %+n2 [ )nP,]`6\ V5 )0 p uyT e+lK 3M4t.9(2!~2{lgO/49\?aB N   s ;fJzkf' ;iZ k=J qNS'\J5>{u1E\!%l  XaKz%# Q C K6%4B4(Qc"e(l.b; V%x i yc>KWV) >< {ZgGdYd: a Ex)%trCSO6$WME, & ds85h c!lTF@.## O[Q;w: ABVP;p`Bdiqz !1> ser}gxaqZX#e "$R)$ 7f  y`)\C9 @4VHY i?~DA ~9vtD %4_J D)  V$l/B ~os@;>r nPz:f]l o g0>0h":zq?#Yp)&QS .Jr t?  s%MULYsp} W}y~&P+4 ep(i&(5PSK-3hnO&"5-A1RFdLl": *kB6 WV'Vqk }1wa= j"p?-`O"b(?j^ J5/~ dsx~zU;h 5g^- l < & F f}Kfa yr/( FZ K &)G Ice,0%E >WS% N{SEfj=|q?RHMaBQRh/ U(*p/UC# \[*pmD% [/X\wp}  L 24x?e``]eW?*E~PE: KTS7 vH#|dm)3T d ,7F >dqW.0NPy%0 ! *B 8 7HQ62G9wX +c5)o: xR57yr,~?:;R!!W;H 9t {_'$w W6I  PH+zsXFG 8KQ]%-H*+@%1d K:yf z~C [  .U==Al=_+ H@zo$|+yt3j2:4 NH&^ n lIni f 28)?tw P8^$uU/bT;G2P$,0kt O\jpO'+e,AbkE ]9 @ {^y  _Oj)$0n^5ow` az/*SF:MYt9p,Vvnjle,TtjzsVL  "h$;|GIF'W c h=Hj9B=~\"foId6Y[_z e @n Ns7NW=8%qM-l} }M# k@F.v[Vq3e8"DXn"F ' @ v} Q,@^hJ} 8^{>\HvQEXqcJ'L Rw*Sx^keS9}@ cC  h[ uTD7wlp4I3N*%TAfPqcmwTD 1| OY _  qA!O*-?gt'6W'rM?QY| VLn4iqbVE3To9R^pOjB>iu]&tZ> -  *ib_Bghm7lI_})C-Lz'J,[}R 1 ~^1::>^{j{Z#'dA;Se?2&QEZ(?)[essUxy~b~z0e-w`L`b7?N<^HJ[<B *rto[armizptuoHCsr-*bul9^f_sI|k|dvpvg@/grG%A%A {onjVWU|n\*Z5iC?Ho O"cjQpsDf|bWrnejwuqZ{Wdar_DI:](upOO9LpG~<9Tr%k?V"fU3_IUfBJ-d85(?tfghzcpZ~u i -~@k_bh Q&*[nUM~9+N1&lS:5#FXY,/XzDU`+ 8 s < /G $}C^ c&? B z, D F"`q~'vHUa;i- [W7Y. | ?XId <{]W5b T}+Y2sy-Y;Ov0_`)iIYdp=S? 1 =+x1+ dB u9>Yfe hZ30'02gbt&5sYv#slLuYxTB0C{p(Q R!wfBs-X m KkfG[.1u,m[u. t &-vr3k_c7]!vGCXP*anf" n} "*iC\'Z Wu~B32!<o3xrvG .|WN=IJ)GnhU? (I-gfh -9DVp:1[x: M\M}8uCv:5$bl!+aZaG uW2a{?+ Xc$[RpxvLd9 )%X }bDSA vB<-]k:a(@5BN9,: v?or`C,FJLZ99sjsmY&4A6H/0J(  X"fh11+hohp]%'6N`)|Daf^jFaHpjd!E9z~,& u~W)yP^D"!D]aaYk/;b IOcN# s;'KNle&ZQb>]:-I dd'CB!'~oc/W g\3;X  VkPydn[UG^k`q#"syR 5Pe(he W@f@( ^5P?y6zL%"sP #'?~;uH:Fzp @`~mF?N?hn4*'<Gt,#;+k6=PMvG4'fT=$O? A O{H7|zb 7 ;:p,~+ds(`SIxn<xPn:&*pP:Exf)m@/6Cp=)[ r?PsYO tH!2D'KC_]2"D>a;N'fBT+y?cdgVn):.QiB 4?ye y1(&IXTc/V) t xKaOR;~_ {k,( 7%xpY5 ,yj&]Nezl|ej]"l> -,& 9~x$4(-4 >i%&1ud",)P(yp!8".v. b.{F" 10/CUCJ"v l. pg h  !42RphAKDP ( !.qV=Z= FB(= WZ@' Kw\$q0 V < =g[Q[uKa` E>$Ja(s s;~? i(]G DF]hsh|kdm7 0   J1=;+O+5f!*$:J?#c cR8 pS(aC W uY[s  <Ip){opr\ 5g^}#&+N[*a ?B 6O2fe' M(?L \;i cv5Id@mud^tXWwxn `04 `*M i_:EodQxf2aaI asdQ.H!~;mQpxqS)C]U' pkb Q{$(=+ :mBcC ~rUIl 0ifg X/DJ RyNX_YVK`bBy,|VBl2;*2WF+&*  g07vA E\ghJMNC^qF\TR~H0zu" (D*%AN^Nkr`]D|lDFbWF\N'b3 (d$ok[qukm9tsy}(K:\H:B?ZE@xC'}Ge^cw^scyqev50n BqyosRMbMqIMAMqC~<5=qDjUjYO}nB (=9&\o~Dt]xq4|zzz``EV]zqIVE# ugiwxd`[VC["H E 7{1W: W"+p.Avt?u] AS)]'dNff}(&}  ?2 wI BN_P kI@3Sf!`E;l#@gex8S4BZ 3/T.\Cqh T + ^G68VZ=7e"1\FLYvRQ?b~Pf=M=^EX}>>  [# 3 Aq"*_(v?}C 6k36X}  E '`$>U5[OybO< ero&qjlq'@y P$4''Z6 &T= J  q=OxdN+\GNkOx~G+7h*[u2i V_O=l/Lnz G 7 U^M ^ q7)uDh%w3XNC3@b"?V*b*h`G98cZ.BX%T Z HUyvK tDF6$jw[ez22a>=X1HpN\  u *)8Q''x ^R^,M9-k7]_b2@0VDw Sqcuz [aF 1H  EK Z-T15 omS;DM{\Fy_F3Z| !Y507Vh XwV&a\ /m }CEj ebL`Z \'?nSx>q$"(` 7o N#x?BM " 8 g _KSSx5 (+y|jZ<vL yBFx!U}`_ u_WE[.H1z1 2s  C4 m Vg{T (WStWKb%b! Ho t=:>+m%@ +Q[xAuJ?] ! c  bp7ZP?NRIob\f*1oPK3qWbgi?I|~Y|(4"([6mY 0 WN|(Q&E9eMgdQ2K/h`T:;k`BG/=$6Vs23vHU&{Kh{ N &6 >'FMDH!~^Qh/|FxG(8e*hygt> n  -+|^;m(E^aGk$>rSw+/^S_M" .4'^)Lh, L7WGN ]@Qv-o*O- CC:#nZ_ K21-!?&}c@ev.:,yr?sfx P:rd9f (5,<-Ng#HT pi 0oq51?"Bnj4ro@_cu+j^16_-  ~N {LsB;} {do*/QCu:<2rW5vC~/WDx #&LWHW3lB}rie5Yy = }vu. bivINBS0=<#tdIIq Om3I;DEWs`7PpTQ$I#y=kC|{9#!z=|f#C>E$>g+BKA%R|(KlU\l!oMcGQ_jrI5p41r wr@""(u{SWR:z]@H`5+9X5eC q vz]# O q]C\jnZl ~g,+'&yWzg|c,(zv3@;P-=xYMnMzg';EN\aSyXlK!cc'%bLC~cZF &fM?0G U0Y (gOl}"kCHGfMS]r99 G}I/w@nRgByT.P=?){;l''ujcB^j |)v91qz&3@,YXA^  bjXE9z[(-d`3uas(3d)Nz4~AEhMGb@*XVK-[Mgm^X981kv5o}GhTD0,Q 9SK'RiwSVBts<WKMQ#} ~0 x1`]p:TP+~#L9&53g5 BmsV#>0'hLh^V?l5O6, W A9jW:@J3V )<}o>E$Fe3TI'%~zdr^,M.\F<y4UIK"P=E-c$H&V Ls+yMP\ ,u} m@57 r`aG h~ UoErU^lt ^wWjza;UnU"I82%:hcZCGfj*N DGRBaizeM4 h '"AQq  H_xU9V] vUA7J GjYy}-;$P5`,F%<m?}j>x RElz{ .e x"76H m C)0t%./8 u^*@eheQ %] L<8l:D= " 2ci.mV(M<L -Z$ t|S? .,-SQ U ]:gVs; ?3lrt Z8M|hZxWjW< '( 4`LPMD]jx \j' _TRQS!dl9I1(D{mjhI" ~ B!T}j z=; 5, h<. 4DJtepItj LqEl~ZPV/_6e^tpFd A&Aq0J{ 6l2  "QpUqfe4+|<_ 56\Sqnq2)Dy{Cc5BsY 7/>X9^vbIJWg[9Zz wRG*yF Y^  T  `@8k!FaEf B+ OK_=(sn}tBC i~f{sc1;IrO{RiCPo76Bq:D ]Q Ta dP5YY E-J RKQk3ok\vj p=^s3#" Mz ZOq+<Fd]QyM+M? 'rmw)0/UM .$1$+ >j cEt5b$~l_!.OJ] 240Rj[u9f".`rD u-' h-3| h)!}P$Z+HV :cjw/*YL 0V>EC3 ;XC%;5byK{6Ym `jx@]Vk? goz@V( @&&'HxQG4e 6W )Z3`t q uBk`L k~Sq Hke :G Y^ aQy-mS vd2,o[Vh od6gZ\ZZ 94R:M  /n.  [Te %p'zut" 6Q1`@{ZjB46 "  \ ;+x#Y: >EZDR1p B3Nc1z(&C g #e7:Jf." Tq5(3Dw' Ok O=5Pj' 0r Vdka+x|{s5 'Y |T HkZ@ ?"t ';-Fa5| <z :15&FTUK9;DbGI(Q\-WN'^w^Y-// ]T)UJ\?*) /~QS* z(m1ZMcb.i( cG67>yz1g; @ ]68V! _JMI5lo55 \S2HTS&zm}0vt W ! \% n$g8q   ?'s*dW,1Lw9D!(!0-r!&3'"185!M m r3q #c"P1x/KIO [*#Z4a !>_(\dz M( +  t9i?If=TlV/ $ac33(%7 .:l7JUE } > TTTqHS) uqtyi:Zw]Q [~% $ WOrlvBsd _ { = i:|?"dguc7/!Z-`'<_'s wVx WAg 1) b ~J9 @+!aCb^o*BxfIM  P Fwu p8}c%#%~q>VI.2Sa.,cx , Xb I`q@*:yP { FKB\xK).+'(3Z/X65 t{xFeiW94JeJ#H]tVIgls)(=3 f ! UJ9OTQQyl'M)( Aej5jH3cY& [$%o! If) *GH&nbocjpfJk[#;:ls14?N? # p`CNZ}5{TB&>8A`s-p3t8+_g?jR&  &QJ J^ 3P4eZfCTs(=i$/67 cI it%&?C{flB'rz*aNn03{FuPM&z|- `D !4myU9eFwWw*;*=Y VT {J+/D I MF  .VXbh_xLRq8 H TG@ W#Fe%pH h }ijM3f/Xze^5 IWT&-*K@2)(!h&-rli}-?}  CPX!WYL J6 1 Jsd"}>H j0 qjEboi7GD*s![&Cd  _   ^9oQBH]k An,sblgUH=2BpR?(s93 f:l  =P , -   XMuoo0e3B}+V.\I" M&5VH, $_H L}g Zi  {  2 Ux 2.g;goy<:,4qC2sgVW'aEq(q3FHF+3?x7_#  b H }Pfd0}|k>MEz[Zsn0'{l ;8wag{+S /  D R5oq}pv^nRk foXrt|V2E@f7.1UXdy}0U_o b EXL /}0kuqS[tT5{H[3v}J[?,]  }i> z4*~#k\a2h_LS9;]VnU[F;wd*} 2J'|E{O3o >7aZPA6L87y+DjwW~YhFCPs1zf6P?3 ZM<0y C ~0j+/PTNpO`d`o>B4e<s&J.M'/A]bjBz` xOu[k{O YUxZQ|%:apC[l* ?2w {${ ev;q(MK ;7u,K%L<vP Yqy5 2D\}XKs,_ cTP1yNpXMq6 d5%K}fV6/}%7dah_"hT@V|GRoI_n /a>]=G3Skmk /9y|Gd@Yv@>)mB]Y u C R`c1!WNRm;Fy8\m0K9kV:p=<;m~2!X%t:O@ O )/65~piDhNks8=]a[|ocZAP8.m(v j2^  SfX/@:eNa]tv6(1sSX'dI+xeLiU$ZW(GvU E+ 5#2 (s#U7QSl0ZSog;`OM:H:a#Mh7Ff/w77vbWX /!%\0BXfz3HQY( {[$ -m]2msfT=A@LU}V ~p.IRIW]!f`x'q+Q=K9W<0{ws,bgN,}dtwV9a-PdB2B('g1coX@/ER*;<CvMK8r3N7&6nb&[5Jkgx'U+L5+L$;coJPHiRx.%2jx SXhh1[*:9LUQrB`r3!1D>Tyu,<~2M$@^DhN 1=QF|!=!_oe1?[uOXs^$QIJ*p/~F5IV[s1(:?L!W7Z7ZP1ub6RF1M)~";LPM;_ DF:^C<|@?=44*'jgj>b3*~>!2s{^sa3FkfZ4/jy/-F*`euw|L~|sn39h4,m?{L@9gy>6O`>Fxl _G v-Ar,l6>n}e98@( *3`G(0V m{ uG Ix7)? :-^aBGRm-Oa"9P:`n.xB(A]8z@"6 E-N6,-GP3 ]aR nrH%fD,a~m?/x7Q6)4[`9e%eJPP "|_~t7elRF 2)g"Ss _u|)!RH7^!1\a@t.Anp56"%zUI v"-D> U[ya /)# )fdFFM$zk Z( 1D/8 Ix +y SU"d& S0 XY[sE>~9K.+$ ;F N] dT7n0}D [ % G0jd|e:K4T t5w4 L!UZ|H Gt'=yAg*> %k 8vv'?R&l {VR>&XD9T'FW5yW -"'O>b|f[<omol`6  w=f x1=/yM9-Ma#'IxBv&114ad(?p?(  L/ %}G49kG/xXJQ%CvFn|@GCt,A_5 d T~]4.Z>Dr27XGN[dC"f>Z]AmLOaHhP G. )t,-UnFwpp*LyD{Uyl/U5 RGJyr< Z DrH ,3 } Vx5#C|;3KlwWX-\=J*)QDzt7Un)pAZ=~ZNA3kM!`;cCjk!*ZjmR ;f s'g6p*+_0}} <bBPFIq~XT4 tVMv)_E+91 >=.sQ1 .)iCCgRfD O!9sg Y$S?z./cPbN 5j$Qb "h~ %  :c-zrmSQ:n5~2DEA 5@~( RSt|BGg}%|\IL3e-\hYH[yES{0Ld a&+Y`K<kMN' - )p!x@  7#Pw{~/a/"4\9@;v/]<NgeO uhwu5? 7UWZxD *9nf;i`jd!ht@7]@y  eM # !}Vn+oat*,Z s0+ 4t'Xna Z ZcW k"V?N)9Ay$j^+47dF]cq.+~e3/p A >U m3+ U`>ytLmh!1T@"=ksu 8x$1UfJW2"&? eqOyFx6_]H0du,Q+h2 EF <8-h[K+#4= d  ,*NgqPdPsiGN#rZ]5I#]64Z2 3#| RTU#Lj h]rMG sh*YgUU BOh~mU-l="\/-+V){&] .{/qmcsQqxs y 58*}b_ =v^5j,y Y,~(8g 4j6*il  .H8nrE: =-4VVsVi!dEu~W|%U_o%S|e7>L4s)7 2  -'Qz0Q( >z k-6|<"*?EEdDm,$bw B ~E^?I$hHC?)dq !o ?,S # xgmVA FQ .FL^&-"^!)VL3A ~q\h?:aB bJGP;Zj&V x 08#@ } _,l]@OAB(\$[ 4t}ek\b8&dC$iL sor(m6Sc6A2je;d1_ME-QOf,PD%@j. dc*W8YAK1k7AwMOB>l$[ nK;Pw/3<zK}." 294N/z%ovOjlDT?)Ie9=Yx(b+7G.]yV}uVz6le:8 ]xTsx[iPHz'"( 2?lIikdwffs1sxHEes_}8'yVyI\{#:*)> %2]ys^(VCy/T) {:!T,WY cCP*JIf_z#s2a\u|A13{xt;Q('DV"[n _S&"mmR%t? 8UGc WPRxc23ggWkj81 tX^kq+A j)(gK55Xea$_+82>NM!I4ogyC:.kjtEg!H8je/0Q/r|O:0GQ5=^Ay AGndX>O%w-E/ !O?sEH7*_/bt)krXCN8 @4 -XhgsK x mk0h8&\hN@8%GOsW<`v8(m+yB-{`HdH7  [2 - Pn hh_ZB i1L0d7R Ch5Scx\^<ol UP& !tnX 7 WqHw}p7*| ;7&W.bZit1H'_CI -xa G<sza [WR3OuXnwWdfP S 6C+VP odVrL |1L>  % >{y0ug6'&9o:nK5~{-6| URKyZ7 b!fvFo f1 2:P u,#B<E+,H={F;R_^R 6t"f2 9#"Gp.  mH> o-UN3""e0X`wNk$#p*xJz0"<~+V<s&;c?Fjo I<gF M TA4+JD8LK*!y0o8,\5K"Xl>8"jcPpRn_ER!Lm92o;zD=ie:DeBJHa/3zS3$* Mr ]}o<W 0?clOnDL$#g^K/GS `;JZ/tDV,F."ro `; riQkFT @W2GJ%Lxr|F|OS*A[]&^mSg^3TPAB '; qOTLphrvJyk2#qrLCY0CYVgaCBOTDI4qei^e^F:JOSr}u5GPtAgP=5 ]Y-*DN!R^/oIh#9bO^`\VC ,`  ?J|a$G 'Y.*"23 ]N6TB_VM:5h(~Ufz1zUSn^E(:TB'9e`b. xMyhC9{&6EQ^)? 5$$FEqA'| nO e&c4K*t*dAO{TnC4M3#,*`<f S/ r+ )8 BOVW#o /yx< M]j1kD%|-O:@g hB |z M7F[ zNK&Vq Nu :4 fGL5QN)y[T?e =@L `lDm )u<$.A/EPbTlA'^x w>An= &9rNPTfm0:#.ap. ! 7p 7">#Jm]'Xa91gLM `Ef KC }%EtZ-sg]^AsP;Z+Q%9}@9_  C,%|Jv1%? N''M1lIEzwKmb6}sS, F0,E}:GZ=H%Y`W"eQ =keASR')~>a^z#-()<GP(F\a#Y ' 4O0A+ Mp s)4 qD n>ZI7e_U K 4g)0F"/ 5T%M) Fyt< Bvc6TdV`mrU&!!pb J*dq(owd;% )4& $N>#]Z E E ] ,Pb=eG7AY4EG -  s׮ |JzFA% cry582ljK /V* _E *"X! `&]i qXTTR(e({XhnU, `3pP*s R":.JV y 8MN|mqZ.&6 EvEP N `kw8  e /]4^ V 6GGPA)CV : ]#5 T - p D #vv7x#1He  A'WK6 zc99u}  Q IO&=1{&I{^kfr+lTnN`-.(s6>o) ` JM9H\O^O}sPEx^)((oqaZ ?]B{3(Adh~ &M"bVr<bhw3k!1/_k qK |My0 HKmJ LFZ5-DICEPS^/2iwV@t8Ht1 v4 MT%!s $tO@! 0H!zG_k NTs%4sV1@thslS _b82ps[=I]9|{G'b? zv >VYvrG aqb.n.l2?^9|Q;~RxsEx K=nQ'gQPMz@UAeB;  R!js$be'5Z=aYw#gS y@ U b 1K{ lW  pLX$rR!!]`cv]4=G)*.rl=C*r6@%| Q g3 O[ gHY52fj8RF '8ErL8XiN &1ls/'^?(GYx9 )#l 0 ] GO %#<( IrZQjSQaZYm|#A Kq@h<=G#}9f !,!s2fTDu-?w# Bu?Bf#y.Wk5l>3cc?T5wv=P'$[=C(eff ' E ln}*/6!+ GO 'Ccv E|YRA:,lR>|C~|c   6Y F`A0{I@G$  [SdJ~GS l/tNm $1 mU&;Kl |/;yE9HX \ p }}h@!9  A{y;@b0<29BCiJ_8h{i Hl/^|,t/ :<f L8_?oPCOJ7I"RiqW;+ ]0BuOl)x~G&Jqne_ cz lx,Ku65( GK&}o ph fR]:+j;(5nQhHI}_#-F(5@]w wTpr6 i, 2CH:.j:q!_h|/"zUT^cN-G.'L{yK+]WVKFjiSx.Yd4mev $-^ i\.Rl6GISUjcHA5N{F,'*c->07,?VRNPQD`[x8q@Ac2IA)M~y6XO Pbf65 F#=J3D)?~K 5m!DWBs\JafzguQ1]zv7C6!e6\{UwO,LF^Z%!ROXC^_"'h#@H%ZQm:t*BT_omXaz\ghc~[Py^bJBvrR8+/DTNz5h[2QFAz'y8LREiv I~1.rlX,qzyZqrt=Lu[Y@E[(\.Ke 1cyn6H#a*ML*Og>-RjD+8 +ww1S{ ,[eOfvP\TTq(U{&;<>H[al&<ggd*6/Fv{i]%Lb\t) G(ARuL^Kg6Sc" \l`r4}uX4 X=Y}1N:u!d&{@v%^ w'+Sdo!6M-^Yk71mf|H)zVz;y!oS iR`@6 j)q R8w .p~ ~#bbp g=dU_!.%x'+oL5"n5&Utm$np)rxqw]Sf{ZC1/{3Sw\wANA`)$<NG'S4 =!\rhj!\  R0fvM xjC6y%~;9 ^439N52\%_o(yg[FF7cVUAunL&1V7^.f*t?g9]=k$dkN6&ZA'o||A> J`<_0Oh"  (i C4f7[ t?(s(cc3Rqt =^HaA \ustt /8W,P&Gj;Lzf:b Y<"Hp;Bhz.g]H.8 D*Ffo'QO ,=BX5}:f>ok7vRhE*MtTJLVrS4!W@[y;CT9(3"D'6fo!Z=j_&]?6**lLT9MH#Oo[Y(S'aI_ugfEa*rED0)(EF|S]pP:k9lpCj x/V^:v1xN^wk=QA \ $F 1u-]2p ' ' yYU + n75 =,{ 5ܱK!3 *6 ey2)P g< 063"f0~?C  ;/#9"|6٠tD#xjs=^ Z':P=o%k(dH/*eg[8/Hvp4p}xNնPM   ftz nH8mMsF7yP8 #Vxcu%$xVI.*]A_74,%ajyxzj  K;FR o b@oN'vS P2Ckk7m A}1)h$S5 0e$l} qr q & ~.& 9 _DUr!,-SD:+xYux.UxGfB\k0w+8-8 *0xoo 6 ] qK(M  Z )9=5B*W5sU!+Y <26~PSvm 3d%c)^= ! H lZ K2v 8 }) b;9 ([eng/c V~m)1lyI>]RcEI6WI"=fF'C3,8>Cc 8K ?7 \)`&a4 j$VE%' 4V!=0[Q8C 52yH^X h 6F j ~ ]'f- ZR; \ cQxA(#r&4 5.`GW%>t1~ z,  OY9M UIk0>WU O{dLDen ID 1LP޼2wX | ulHx r2 "GP?L _ }X|.I7on 4Eh.i}/@JuFHi!G< O$=mcs'`x( R@5~Lsu'f3S#%{*#5!(Y W] Zܹ " r FViZ` [BD;!cLQJH "V=:(&.|? y 5:6"wFIak~(52 (K FB.*,+{FXJ^ ]zQ5b# GC.= nG|ygAz,&0y~^9S ?4ZF7O(lI B^ |s!b@rY  l6r7zFiN$d/V=o_; uld RM3OSP-='Kc$O M,= c u|( GiGO9=\Q%AH&`=XV^f~f!_aC\%l~7]kQ3$3&3?98dub?(,z0V;x;B)L]k].$Z,)1S[rK_` I|@J;RC0Rj$"FXl&Aqz6`E9?O_zkP]-KJK|+L(JHkgyZHS$wLmeLU%#TW)7JGad,\B Ta_o~ u|gCKLvEo M`tuqryAsXx[8SDORAfcYw e\ [ujN)GogsN+#W6T-'c>ZEF+YH0&E :||GlA v(ugTS&.XiEt6.0YpSvOUgi(d!qH* Hn}BdGz4yWw &ZZhN =OHfs )nd^SN{t1sVP pMTiby C~ | Z|#_wsuoWdnNt!,4!am(A >v3E BS4Uri- 6K+F}wi j5mK WqW,i&FQ5+.=m_Vt%c!re]oGl $)//[#C) H:HW:)S*:VIS0LmGOs r#~B(^MQ$2(- #GXp DSq3 .s']  S-\ef z,9e0Lx Om $P)P7`$jpA\|vn5RIbI^. "I@C%h|kM!9 sa;~{A@}zFc? /F0pJ}Rf ?j4;5?*T(-jG1X&T  b*IYk6I9-Lx$ #O=%8B] em =9@"v 5 SL0Jra} vs5a(*Mqg6!#gcDgq+=Y6r"|>0jSdxu@#Fuc{\nxtq, 'B?o6"D^Xg[#=9dyPYMl+'r[k4UgC}o9Jq E2SJ6C_i 0)U|^QZN!CzE K5PF(6G 2S.; ou/Wothr9 KC! / 7SY0ta`VJrst<&gF*iW.+:9|wkV&,kk;jf7N2Sk@> !{rxmRJ5x9),5z[/K!Y^ALT^$I#Rz5Ok~j*>av=iU lr,e%.#j  NSc1qRDZ SP5Y=HK('GkH jdf'1X!'.0ky( }v8 #*QLk/J9q T4aBye`E.unylClv &:}g @"X(: .%-5a BIm]< ! MY+ul hW\BZ*73Bdt.P(A$a5XPL1b! -K;"bx/0]YQ H5O@H# MX[}`>I';ID D[)6`Pb~`I}'ch<^K"00;lZ2;KR4Ju\#$}JVHF{s9|aW13  G!:_<.}GXD#O"o d.WCj6f) E,~E1GG !iyWh?T Cfd-_3$=0g )WG+appJ~gu E0WG',<KIG ($k.Z&*&VRy2&_c0|O"62: !+y.P]|A-i^@:9=k8U y jg4odefVV`&+|=m%y8A*X'6 D40_o M@NV99AO-[L:38jR]"g>F^ pR0*EJSlU{HF|1ZBult%:4\U $Y2N(W `R5**bOYir>ux" xa)X(?3J (^ 4o8{tnn D)QP:~lK57'`kOUGN!]\/Djl%+3^{J9 pUh n;&,-O%m:2&J76~K 2-El-}9$rK$h.`a<'oJ^9?J(.Dv8Fa=VuKo^?mh~l6j  IncGsn-x:(YnKr6<lCz%4NWaD+>o\iu/ ;2+OQ VvlmQ UB. wfcH $Qg:w]kx9|B ,.]'czd0_];N}>%+<@!E(r-4W 3KdSj1!C6^ Q *0oJ$yyEp+u,8DOdJ|J^m[zzP3xXW`-W+RRM: snbB) LmqDOC\<9Nb<OJZlI+qqb>\kBSJQNyh*GN[q2!!8fDBdF ^)y'15H!opOt]l*1YJf4$BV ]~!yk}nKajBqqPxC  n_d-TSbk:Z'(s(f^p!87Bj1eGBTS82R6u2+PICihM`Q+ (6!bm O.!gy&Qkl)\EU LkB5 9A& ?hRjFSj5hnUcgLb<3 7[XA=!F <<=b} TRA]"2=U6kNFtP:\* QDITEfrK~l>is%H l1szI$ORJ+['TGGf`uRsYgOzv*zw]|[n{j:Pxt]t~:GkoeIb^fQhTn=`gDc)P!:%we$hb !Viu]jU_r6wkiD]?I;A]Nh`b@fPNf!E1,7?IrleUx8.$ 5{8YxM5S&$3ec]ldaVvqp _uMmnd4-8~e,bhqj}jz]XsxjM2 84&0: +! %%! =@L'bVA~wgTt#& (Z.+jyk_{60hd3iZ<LfkuRm _n`o()sl],cvk}=B;I}DA&`XKr[S||Y:z1xdUrHlI} W1gD_S4~@J|t/7 g$A{2 R!: )j8gy|n[RQA~AHgt,.^>ZZlstIZNm} # 10=0NC}OT?ei0?)|Uz!e0S:,NRaTI16amAJs 13Q=UDJ|xs/%Z a*#S%tn"R>wf{^o8 h DOJR;vP~^ JN4"(se9`"U$Y(XP!NaA\@lFzy# nUcv|Xe,6MW5utq*BQj0a>s6-!b{=*`?#_pJMluI,0_VuQr j?u1, qJhn=zo,Z!S%OgnI, 4op "|$8V61@>GVY iR`djH~0nq$Pvp{.CdU0 ri@~Vxu2Y*,l}7,0+1'O6;~Tj! l)$`SFAn~o*4Z=o>drvu 2|0tRyr.p|L68s#% 9h^1=&hqXrp`boyx+ess *6L>]O Q yE`%Hg,s4%T!.R~}:AJH>W@49z\j.IgA*#-X_JwwKR _ ld^ d^9YhI^<}y-\'csVpb.j emQP%741^TvrLi?s5 $}Uc !1z~hle+t.WOA$mfjI3Wlc d^"[ i $2q ^]< 'AdW {F_b `EG- E$ LY#@%-D;M\}$ d G u;[ 8QZ(  ;H6k } 7& P O o   `J$\  89&oQyoRS >K^HR Y_,- }4VF}yIxt# d m'r Y88 X{w>",(n c@cJR% ׅ C V  0]҉6j\[d2%#uc KC7ƶF1D E Mh!)?21-Y*+A eێ& Env ]&!l . ( # 3wmn4 \%4!g׆ Ҍ$r$!16D93Gj `ُ @"|'6. P#~$ݞ 0#)753  x7#irrw .<aV!..Mw%bwz5 }  (_H'S+P vJ!XyX *sw  C.b|MX `~g[ ׹ 6 [%AYW'mv u rR1Lqc H=U RUhhl,#]`{ Mc.  t* |E cQ 7jG8FxVEX  'ed W TT fNuiDT4X J=`5\{M? S Ukj0  p ]S V"Iq2!G#-& 0 zw<   x,1diM?OD6y<)VI9~# ^KTB ] c% "# 7> r^GdOLք5/N9G -8A ]&7# tDe$eU=7OK+o c<#}5 %; >W"-iR i  -lyYv4.Zv zN m/ T+L$t+ ])hB%]I<);)  gzpW=m60$ $g  1`p\DWN _37//*<#"O }f/jT[9* #Xl b[vLK,c 4"9o aLZ>W_# z Md h[kS%$P(%T8RHXq = uuTN -$#"U*W<v,*.W_5y{C6(.Z_ YI[5B[d  $ (j"G]Qaq+v| ]s xk _?iq ޸4?%T7 "qG{ Ry &w [=|4sT%6,7 'B ` }icJ!c= @ /R jU2/gv jف4^$#Jg np[`v9 gk$p54- Y E n!uF1?x!?.W! /}{)~  `f`c FdU x^?#@zww!2Z& 1 4,z#eebT7%2 J+ Jvg(s$[KCQ=os/>6*R"d v0K%EO7 f%7r|'0H).v)/8fU_5 EL)9,^i@ +k @ G ([ BY j  !&(+JW'gwmCfbA8#5yqOZ!L6XFsyJ T+_^.)5- nu:" \'i)3BL_8|i , _ evQg lU69+kuKsHxjS ?+f"4- k(I{hx\N;p!T h: xe)3#D8=W9FX!QMy< ?   YM.-p;_H.I:C1j/[g  8\g@|.FlGxqmj s A  :Q 3PbO6@JS SAju%9sC  oS>6YiKk1<p5ANb/2X dY s^  1 H8E>Lu?l&nQ/\ !1(F6`AH fLbpdF50W +   C   u0V\u~*8#/N{_D|Z^y7L ;'0x/v >K( #  i wuv|j.> A/9QF3 jq{{BG0!Epe89lP f 2Hze.GXP 09Tu<_6I##gi<~Cf9FLFUL 2j]#6?EP* b5 U<' )q_50$ d*hONs.?R*Kq1V|eqlDC UJcq:448OkaEa a4pVf%EZf"v\O![MJ@a1Q3B0k* | >n wsLR|1%7?( ]4H v lGQ@/U  u{jn4POl? RKlAK)t8;W94Z.v9IGx>o B8N]M-f%e5riBNzRgDas/.Eu0i3+H{~P;oo2w:E\w2gPf *@3~>+\\ n3(j_eD$ %]x1+ .y]B +)`P EK/ 7  -8ob,tH }PBgE8J ^%+- `L1j/rS fa  ,aDFM ns )~iN2s]##)^0 RO^qSg v iV lMW"5LX  + y?.Y.Pf+X#Px"R \ LtrA@ @ k+wZ<:"2W !hr@y`#*N<"B = R6: .[ 3 TW r{ *}x|"20ob^ (mOfl"&rr6FVO.7/:,jf8* [0X:uMwX7Z C!YiV_6x/\~{dvzp{|CS vj78NH3-o#Iu@1qa] 2Qv j tO eoP O/ y!B)\YG= N  K}d|9 A`G`Fq TK hl)q+0D.]9r ]!A6 {" 9GmUBi , L^Do qs&?u2)>E19_ ,Z>y؀߃EV 3 H # k3$ @|xPOOv6L.m5cv[_)MVD5qc2]O j(9sx Cc7 *,A39M!Qsw^ ?x|Z!&0.pm;q(*&e}!7O sU V*DeAh b  `=:G ` j 14o"4Au-o }~f`mT.nmDk p N /% Sxg ?1?([5 J8'S. |LR^Es |h5%  t ab(# U+; 7iVp]Wk8:|kL fKu=37 < jY#d &%zl V7fJm((wRUwnZdufpAJ'/Y_.4tfL 8i? 9>Ta|l` w IyLhy{C\qb>&6|"{n4ou'\k%m}4} D-lYC[UeY2*?vxLc b<vp}0 6@$2qX&](d<+OJf`w N Z  SS.0Bu JX7 I _55.CYN$d g-3  t3u C 3 o^(6]  @u9*a^Krx%b <wg D7%|7v sE @ W $vHA,n% v g 73e645{C267*D,=a ܝtH _bQ}# Z abO2K%o8 F oK.IfMf(nY' 6E# (DB < f|]~ ;%N4  l",5iL @wo_i&W2  , hTYHdi~@j y2< !Ii| YkcjiFAv||M| c Y_ J j'U s s:]yN#]4bk =:4,z=/|7I ( +ftwCcL lZPaAh8o \px>285tx-~K %14A<\  4qw  _ | 3 q|(JB 1eNnbr1q<{|JryLs!o0Z . 9 F ߇!#R,[@ vpbg3j&FJ*  C@[A3i J42qJ sw ,ou)}2 :p&%&}tOh  G [TXMTe bs A#&;#&s/"2~f@ j&Dz#r8w|[GH(_ Lk_|{-tK.G]C\xbFA`:.`6_&TW#HT(u/CCj+@B=@W| b{p.X 0IhxFS?*;J>(9j).Tm '/j+G@@%).I " D a]9Yd\r5$W r$WBD\:ud;5-#L?|'Qw)Lkq6|)gqul<}oIJOy 2By.A IC  yC W8rJ k  wO=..3LAj! 2  eh\8< > } + <V m N9KO`\\G[kΛK$= !q"(Z2"G  > ?/\0|%%T|X,e.,i%;̞$| Z{ ij C56vh *a&p)8~> 03)- %K7:~b%Z 9 }schK~z ' 3wb\j ~C )V?r@W_ > J \K+mPDPkjcPG9Y BJ  ۞B  Z$"c JM  2yaF7 g Y w/ S1 9 t#o%;Xo i qm lj0!al@Y Iw2c%,e%WwDY)!$7 C S1{~(7 s W[EKf&a 7el"_,lC~j 1_S|bk\ a x F[,riPCF9 3\(Mg E?-b =0 N.PN1h_A g   (/PsOZxM~V q `SGIo uRwl0E x k L  !/ R@ [2aZ]OJB~m}H+^o!+)S 8ng RkL7 x |cU |,_~^Np|CntFo6C8wu$zp l[ S,g-'hk($P[+~)z2?{_PR3s "N;,%0ks4-X{y3xW4/&$3-RA{Z"si0?BzF&f`m IL.uG~X1BTmNvlMx9D91-N[t)}"x3KPgjr|P.4)KKWHurdrPYqavl4KN+)@%m!A%}[xk]AY}P7JG*)f?5ds5G+4 2R(uh ?]vaLt75i-_hp?6UH0  K~y{UaUKF>gP(rX5k8B.MUhC^^b`3tbi>T)%$.,T5,b|t@~e4 `@qbQd=pEaK-3;,~ny|`[DNB ,s5/'!$Q) Te`d `=1'1GJbWufrYDWguvlrN@{%KejprV,/}TE'8 ^FG2`xiB?kacn2P-_-fhxxxp) B% #nJWhlzYt\_f[zkcr;g~*OQL)zn_Xp}R6WS'M.V?ArO4K0Hw]H3KbJyZ:m`DJK%hGTGc$T5B2 ` 2oL QuKv7Q ^-}tj+s0_{,B{M./#k+"Yc:xWdcdS ^UgVy /5Py'(D1N2>p_/6Bx^k)~De8! `d$ (,sdGqp = %=V$>M<h Ap,^cmK k}{ege`n -#m5{? d _?~ra`:y i 8hx WxC=9~G0  (3B\IR^F6`4`u 6wo9`u7  ^6D b  A4e!EQ)hHXe%owNHyQDW9-dz0 oN YC - `]U8@La6gC!?F~|7v%3]j@8g' - C  YU  ;87 2 e^[L^(uS \'5qF@ UfS>h`f  O#z  L e q/HD K}$rej]!C_hG| 0W;Gr ) K.X+yP3I+: f&5<0/e A% GMt `:,wtJ@vaD Z;Txwt^Yl;]]| }X:fGKV^m>R!)""m~n~_ r9%${- ~Flr?" C R$qD =!_ V _ n@ze?Br 3,yXpI:6$ u}Vi'%r&" ~0fC:)7YfPd.k +fV_J|wyr`;I3 _`:!ss`3z@AZ"{0ZQ/=A7m/0>;Ty%RDAI:'WQc8#=}\6|Zv,L-tdj) 2Hg<{_;*Y;.8^`6W '@W>d@DhN:@q8>/%ZLb-x s_'!=gNNR@*EguZ7XKZAM"fi0[6=w:hW"X1MWoR~9`:%n=*<=F;,%%\8HYGE|m0}}WC(..v62`XVJ Z? w+tD*j?bRET3<6?%R0:^I i.-V|t=u9BzpA8Ag 9 {b|h]2AU$3 [#$B D)'*=hAyMz!y'RLCc68gK)jDPJjdi y+,+Q'] JNz3P=,'(B&XJ[_G11T@~"rgMYPm~ /s4tOxM;s C& $aFQ mVBhLmH}E vVa*Rl%b]RXW) U::L?i[z,YyV.'gJwkv_Atg\FnK$a}#"?|(h*p<%/TO{|(1h7c)&?7c5;Dmo&0T^QNdC?\Csl&l 0(~ 4VNN/$;9WY{EK8er.l+D;zp)K @. XYos3lo1Fw;,Oqv0W7Am6]xHX| E7O\de >D{F<.n"&Et;|([Zej\}2~u47Lri(x>xj*I|= tXc6&dggIRB]Q8D 9oc/1=8 N8Ma`mc/vS[aO{UO\':o5P?^K}eGxKKf_J5VBEs/}9EA9vD>SWx7>w,8hGovLyir-a9OX*%_xH4,Mq?)@^gu+u} !SM0eAE=gTwaNn*"@ }V ?lkv]]NkXt`f[, T14A rB$"~8J\kQ+MZk"} t`8,N*B}BpO ">>9tB _QOg(l%O3sJ9Fbu<\kF1cL0!P5D9bF$Bv~\&.rf#`_6^EH<KdLgmPbxhb4!3d<+ C:=FE-d?!w'gSpPSWP/&~ /_X 9lHA\x'DS@*#6w*n7Zrgv) CNBSvoA$Nxn Nu+X=oKXO<6(UG\*4 eeWC]GpfwR#U[ R5,(;?C:723 JLA+P7n*DG.t|D |\1qUac mC:H2P'h9%;/ed<0 u&>qv-oQ8z+axu)lC&fm|np~qs_#r6pO,(bN=tZzIyc{``0ccM!EV9B@H<CB>G5M7H`1Q8* s%\ApS(Z0y~)J|C-Lm+PkqzGu0Ir'r%bse}cQoBAkZ;$^EZqOhc$cKli)ID}u{Lr%dWgLom<OSe xNhTTG9sl&UT `=9R}r|Womp.{({|se@VR SzcWc&&#<*9I&9;AYeaQMEZE ~Y0mVX@kuGS/"D/wS<Qv*Y,NH>/8 8!eJ:$HngRs]' O`.aEpr!Jp 3 MTwe_=X}3ATOGeH^d=)!'z931WGA7afpv<K*U+ wKn7yO{#XI)#g (e)7oe&{m /F*jr.gxm!Y_s%= zS6ax1O"HH' (?[wX^(D%F1g5^1}=!*q)$L= UQX2|r S|Jok:5Pd)L)<9{|hRtbn?]` fTMnLRNS ^'}@:0n4b:G:rM$/ivZ&US6u,|{4 gx-Zyv4A`?\$>5~x3C('?U'uC>m-Kowp58(@VAYsF1hy$ M#:iF^9B'{}'z1235Koj' [BLE+}-6#'FX;e'%  ~}[aFviy@506*pOWq/U)t~lyKC#xMYQ\mUnFDUSzMzyLXrpI 5TC0U7wnS\>IY/0tN L^7Yt^31 < jkwn[NoL!mcVzHP Ij-xiHmPy%`$$xXyTplcM`uePixEjwfR1]N[C592 cF b?JZu]LP?*=.KP/CDhMX4qUGZkCl'$9ezZqJmQx:[j;#dqN%9@X}YTnpTPgYrc anACOA A?O#-|~bF}o -"$;9L,rs$7^?f~[rz~zVqwVo>rNX0mW,)hT:5.(`WVy}YGJk\}Kau{]gtt;s[ii|c*&B.?9<9&\^`c|gzZMVsVdtWG*1A*C* 1dP[czHUzrqk@G}XQ|~_S_O[Osw]eunrKrKCKzykiF5XuT  &I 7D&$ r|E+6,,JxaAya;| *~y Nd2[-bce\"4!4'2F%=C>%0w) k|Qt|B^>G^YBaI[3CE@62e&7^tZ0|s6vo 246 X\ITXcftlopkynkgw|}|okt^qN^Lcy MY1CAC#'7#pylw{ms|s]Zite\pho82-PT?hdi}ZFrvntbUz}6A_vY(99&?9J{xFfOkgN~^(Fd]7=Gt52]}fnn!E/<D2UuDlkuIIS~^ ]Kb O f1 3 J uDKeedyBX6!7`|V4 z w2hIf6 |y GP7W"ylW BLy/^ j;^$8rj4<W.6P"9;/ bW6kZ c"vO}P7.r 8JST 5C>a^P6N4OBP\CA!Sv64*G?ZQ{6^`]w]AQ=z)mAEGd)(.HK]|bX&UX#~4QWD0Ast+a'< Xg;Ii6;{WqojVz:KVrny^^ P gT  j += kJem\U*jWDA]j#F`gH./{4uWW=JF{" "y$ { >zp^e 4$>TZYj` KC7C2<c.  b  F=$ )V L>% @Tp59"eDoz<-gvѺSm4 i4)3"V FlA G+]^w i|qY7_AL:f,gKMw9 s{6/l$,XZ zg WVU9kH e \ . wb$p$&QKA<dl 1|* S% 4C&(Jsx hB Q, txh!P1Q@\DAx&' d & &iu`( C t 'Kje?1', 1 JO3, 2dZDH;56s-ZiS H: %2 i u ~`4*ujjN_+1Bz-_$% \ mJ 4G{ N.ShTh,(A"d324 r {W1^K+2 +B  (1Y?zl g]-+kC/]<1c xbl78 ?j=>Db 9 Q:)Th3,/rm*V71 wO@ .,e H ws ]   b ,|!(+$S=Fc ,Rp f v ]vU<Uw?8,%< V Q @k7&;Uq RU "`2 i W~u#+I \rq  H;AT/;vegWq NJ  1 )Q1[h|/$mjaF,%Jo`u\n$DfoV+P C(6D>wb mc{{;9UZ-jW'A@=1^()#9vBA!DZ+{l{9F{:\X^#KYPU[ Z_{TJB MQ8-lPlTL)viHrPl)+TV$AR2LRSpP"P%JU?R(REDfuYzYqvg<~31sUq|Wpm K%!QR4<]+oq<Z>fhJmGf56VKJ?D|?*l!9^~~j~qz8?OWQMm+KLjOLln|M >.]IEB'Pk85\6[o(P(Ac.X2 F) K Ouw9 Bw CiYP> ln) J* gx*1!: !+ 3-]pRQtac;hg~0#tbz"dq FE: RG3,W*nj GptVh2oQ(<(x~7AsOX^o5:ceE OKxsjH3A'` >C} :)$v1Y /GYCWZ6`g!X]BALf%# T@8>98>"k,P f% s& ERxkh: ? N[T  v*;"Fr: q)b+RY v =_sPkP j,RGe81>/D]SHGT\>c[ ibY$,'^|+=4 D 3RGfq7&E ;9NE)jJ l]{!+KSm$*H1};/>  1PP%$,Ek0]ZP/e$b )u]5 lH D-x@\o~X 7 !u BkfF EcA0t5+3Ooi- & 9hn qgH)~l< }Ce&=FlN/to]HR#9abJ  FL  ,kB6-3((1 ? $ d+K+uBrgN q>oNxD 5 a7K S BlwU _?Q< l zMu\ v l d K_*savv{&Hsd?))H.  kCl\Y 0YP9` /8n q %( F$ .9T? Ci!M;H1o 1ts9> K2f 8`w | =UK~z`9Pf EPJdC%ngK{?K0w=_!60B22 1{Z$ OJ8**'O2Nj q~#RL^{r6 Fh;a-rL " % m@" ? hro }5lu<[~,hXTHRqoO;t>Rq\PoVg6  o[8> /HES 0E`pyq 9SqsF D# aK;[qCb7`ePswWWj>Pxs O.$yp^dg- 23<0gh\u3HZll6DCv0rKy~k76B<J5>  5\w>c &{viahT9EdpSldC,Lf~dX-0&(Hd( AK/,b&92invSrM%s0F#K~3&/JY}~1,MRH!dZ! =71B(i hm*AVt}mjG@CS| W9*^r- pqT5Fsme3(@+;S:'&Nu=Rdm*mZ(fN?vR85$P` )ieb{* Vh1+aOb.T.F~h/<UL&b,G\2\qsdhK"V:E-!*rJ"!9MCP? w5N (q 5 u?m m"&0VMyl?}K rm-&9eUYBXO Pa`u@f7g~$  i=fz5U_F_V70PEm 1W i 6hf I8E #L{</4\[{(MN C]@j^P3k|P `Y#P5] `;<,I OStAqk 4 7D' Zc3d |%1aq ZmO >%'|wWGNcAC A  0Pq?D3a[:|5)D D4_!71gqmYP La  2 5eI;0mX_~h(JP&?5C2` jG z$$ejxkL!#T#wf _ :F e <\M|+Bo~(!WW:*0Kv@ x\f5 L GR @_ kD0Vd66\8v5.sD&sEL Jm $l{X- ^/8{)G1l*r-h\r"PD?2d'm6 ,=<@Q?&V|AJq}uKo7:lkkc>y+ #U_1  TJNb($k sf5Vb% x rf7/& $qzYmBAi2k) #  F  GY5 <W 1m:`{@p p(5^ywNms g Y A 'L@9E)&=:epI*  h@B ^1=A_SGN/v8 =  v ' F l1.KM'uNm7s>~bOG~J&. #  !l ?  ^JpVrPFCLG&pU( [e jk^c["MZ.#q@IIbBs1N7EJQS:A ZEw \"y6$/wldOY WGk3}XgQf{ .;% QJU? N%7a\T(Bcw3=-txQKgg\qM 4-{I9=Fyu0H"D_ O)> $S P4 uD[*} )70!Sr"f@sF#l?19`J0[2HUm;X['i*`^H&p )i% |=j.#0Y 3(G]38 n?3ltL|+CXF{h . X +?O+Q)#L[VZ|}?T,lrdwj$SdYlT$ZP~OK^jYf !7M|;DcO<Btlo-gN K.x^x$U[T9-P-\W1?Y w j`eTz {J  ATL$bqEsRzTLnZs78c'N :?F 8Pd&@ VFil^ )OA;:\S^!1-bRuR|rm#BdmfrCI  9M_ 5<  I^X;$VGRm7?K!M|=r t'9X'Yfm $X/zLjqb,n**TA` @_-ZKC$F'/~ [ m< dgHdTK{ >Y.n q<s@:'*03( U@Ml _ i 1o"e l iGTJ f u)t_(- 3D)N Q]$|P6,*O' #2{i  :cbq_ 1"#7h wq0}7 X#z&hie^#?: 1&!* B6cK"XW  :M W"u&.-uyF  $3#b ts#"nmh#aP*:bguJ^^ d fg ,qK 8 3, d\pU$1KLy} zGX %%  XWN(Ry< P,h!hvv.?7Y!a  HPDVyC  y  338Oc;pr2'rW;- >W%R'u6*_$N.iJ2 L 4=X[&Y =< 'rUm8c}_(d9DL|`Urn+ >KH / "h!>5>*-^Hc~c;M@cHJ]3m lgIB 6  I"~{62nf_f`Df g$8YP~_h  O*f)hUg}9i kV,]  8 ze&)\RdrOx:Wqb}3&$r|>cE,zh5yLKZgT_ %rJ0R{2:?0@=Ci2Pwo)%\l{3$u^HjyX~U9U /;jphuYM _vEpF@oS^7 'Wnb['WH z*I^s1*4qq"aSA. U ?l;zEQVVke5)tT'iAC^whW}r\}.]q0C2!.K,jcYqstsW~Gixza_h7ut?FCG/:7"(! }|YbTL\yuk^"hw? v }?8UMaD^ eMQbi[\i?Q Zl8H bQ;!,%T3LgggQs}Q3dp*M rS.RWpmrEUgqpETgYJra$to/JNocbRF.EQ3'B#ZpUuKX T2v!cbXci@eiO~{v9( C> |Frotr[natr~aYgg{U_O3c6y]e;M>|.I_2$zyGOv9ScN^:KFLs`quq,*/Y+I8X5TBcMl;@{^yr`{n{tIVh6ISb BD6uwXGJo+Pue`sYezwt;xwrdy~{15%JD[(WWJUVjgQBvcMy0LGjsPRRf$Z/$9o|Ykmouf=l%s2Lb]wuhzlwvh &(3IS=@aK`zNkawQ{ly{howr:Qe|"?N^3BcC@+OZ3J:hTij{xin'}]{XJk[Z}|Rd08Gb4bsDB?MQvuKnFFb.N?E7!b&DQ (cW$B>2M ?4lyu_|l5%,B_)SVjliy8m) wXAdAf'f*fLw {sS[`U$Y$A*h Rb 5Vhe^JxQ1iGiJQN9?6C"*R+uH -&CY>/SX NwU'u},[` tjPOycV3Q=j3nM}%T!m5U| Ta '  ~6piA{ / .0D__a='Vqj_U ) FB^AxP=zr*=7Z El[=&3i|\% G\Zw0-\Yjhup<  2=[yH qnoStEf| i "   !Ais? Z PY+nQ$OsU  WQ ODoVUxU,ETF' <!v,H Sw1i isq!p.b 1yR? 7az*P@WEo# ) hc-=T|XC EN5J0HjiHuMx ~[AV(r]8t5G!*fh/ 'D n4rb< e -Q>Ld-%OU1af5:3a$xp^p1LY |)%qMSrnX(RV   y  Aniz_CjC=8m?'bj3>Z3 ^ +3"7A4:@?g@Zq&T6? ;-  +[lhZY|k0cI'n*nNA "vYw~h * $E' U<  L#v+i P tAD>XlKq>tvo5'<F8H"od(=]g2/7.6} [t?b_I_ ^/ }RtQEtR[Q[)Qye?Y+ a0b,`8^}fW3z( bwX ;j`4 mo c~Ok6gyB2S<| *-_,XUnr %5I.EA_ { F;Q EK(u$Q&zA  .0G1u5,1&wU?%rl1ddd(G^hm]Iw'|Zn,$XmcO(FH3eI-.AM? v2q|DNPo(m"{ <s1`eP 62ee6u\&Q_%(^@^lg &~mw)ZIL %h.@JL_ x7A&9-|SCN 9%}R^g5Pt]O ^CZ `.zZN(DR@> rvA3Nn)X# Grb; 4Dd0#v0~--2{EmG r ;*'} 7NXb})K-q`hXxfh\qU eDi~{mhrk8@ze`W ? d o *D('2fz) [?)$A&$H!mX*0[J-H9;TH_ BAUcWvaVSolG.mzw5Kr)#* %yu$#$Tz<yrHv +"zE@Yj>gb5}Y vd.K5uc)i8TjF+hqDo 43lbH8k Srib[||N^1J% 7A\) : iAw#j{=3OkM !fo@*y2S @#"UQ G- >Lt3"C'Z%?/&Z`Uc1BK{;2cC>$&Adl+4.00q|z`O#L5P1VF47n+d,3]:iQ,cGEEiixIl4/1Q% /m(SrEZ*8\8 ?_17G N/}C{jtq]a:g.@Vm6Ix}euf<o\ Z&7I1Kw-JA((.- U5yC,iK,oDU$p% E6_p xe4%ug|WJr/(?`M3?K4W*X> !EX4b%=xPJ!j_IP"2YvJTBh^8TYl)0%Y9-f($,NMo%]VW0C,d3y9tfaN=<PZB| 7_r>TL( <":M7~f,#yjF9c+z"WeSa}Z;%46@8nZ!CpfXNCsvW26kWW6*"A70~U_gEWMi} ;Kejs%D{A`jM  nO |#{wB}qTUa\?d3/h>XN)B\N\+,3rfa7dfN_A %Mnjpv/i3("K/n9=T^c`EYZ$HQh>o Xqzb/#[092[!Rk2'toE/@3}]P@z,y_aEP[coh0NYnT:[1[ ECh_utZdp<Uqx^Pz6W8g KeA?Ks/kd4Yhs%M}T/}V+:he2V1,jGlJ &tQ6EU%vL`<llCgw/p[tqkNIat|446I' [CWdtbddFZ WrG'jYF Z:$($80* pLVUC 7b &Jte38'Cw/TL 0E%j1LZ?(R}8dV 8BsAmoP&kLn{a=L'.`QN.u M&-*1Ka7PdC" cxd23|~Vumev7dhkmZrR|?1&`:k,w|BNwYXH):CX[oM=3b.a0.& V9!)6<!&z(_^TyYeEevG|k+@5nkI;7"f+e5n~Ac\{?49J=Fs ET0 q[UM`t,i* }/2(#~4~_nz P0-G2}Of)oU,fh` !sTju3Fr}ii.}Dj3\]f,g$EhKh=M!9KJ{kFFd,$=Zkyd\# A08 >R|=*|w0_ID_Cp&iL :#)ARv2M+,X<;e}Mr?s?sM<9\y8(Y[WSS t YqfV&+3p&.Um2Ij_o4M|(=$vs"lry7d{>c@ /3wx_jvKg gkL1h"Z!TPrm7 mV&L)/ZVTT%{?@90HeCs W D5t2E2C7ZbAP--&3ofALM%w<bX_Vu[r(rw?6Kf7.^ZM^[oxJ|:-0]_fNfJF1=$Clks P{X%!$P1B]N@vrX8VSGV{y_g>>nrgRz}C-BJG`e\`>P9u:Nv` %jx*/3`@exXXP #c(cU6hAj')Zd^'Ov)/@fh22xUJ%J{6yVK 4 +) !lB2WmuEF{oF PO|"z2dJhIAYQ?`x^c`9gzm`Fnph^ekQnQQxvcvf>("J(jVhen\zf`"j:nItqfuoxX?qxz_fk0V)UF}64zNg?j|nuZUzZ8;SKx |  l $nbOC/n;&TNWcv#9H9Wkfs0;Q-26!$nLv ;MbuZC -V {dd%$R.'ZZ!3n}9z la2c2 # y1 .K;r{~fg c42Q`Y[V * m &pf6"gE ]E L,( +7} QR>$/Cf? Q[ <Xa.}rN  5  #d  uA,7H[j SB""f+Fڣ&!-cU+\yP~3OU/U#]%Z50U0F9 N>/HQ "5q SlN w /M.H o |j! ]W8 so+E[-&%;z 2vSX;UX  P~Te 8f9  = q T_<8 n Fh 4iNh6ujKiSJ:O^ $ T _ H &It0i#K EX7^vR%_ #&6DnN|_>7g{AB$rRTB'Q{U1Ye- T<,tI6]EL:}*&8m$ubo17wg6 _XXtiD?2LJf#4|e7 myAd8>K}Ip@9AY^ySk,@~F%^PRM!Wn?)'1)t~nFg#'OX2Tbu7UDc_iKf;t`/N_[l\ jjyE?ev<<~Z@zYJ>Pv;Ik^D=qg@\! f#6gXz7e .k1y0PHUYI)17RJ)DI/T] 4b'L/Kri}d ;Uy\+0^4khGwhy #PEY-]p6zm0){ =0C/eDpGsav[J"nQFf]e~0{J}+3W}( ,jGfqDQ> q 0,~ FxONbno~s$qJP%>P%^?(HN;P y>h:Q bEVqj}(hzKz!fEHH#b>hQ}+Hj;Iej,fx,MSY8=d0JbwXvMxuR+S}c0R'yt|vfEtVF P!)t}qD4)kjSv.*QFzljt%VRpkmh^kO(Fv|zPSNh"NTfD 'IE 7/+e<k5^JXyoDD6oIhJtWy$HD. -Q/[{mZ2X:N=N -KL4u}t`8?se}L~(jkZ )[W1go|Py\!B naw+}vy|qitL1%0p0TvTDAD!R9_&&$n<A?<Kqaw8TMCEHOa YZ#6'eQ7c% fA 1Of>dK38k{>FWk\O%Wm7H=tR$+X`Y| &5vFJrS;rh,UzZd<=&~4n_g(xY%+EV)&E :f%a,uBj7~>7o4 Ix.!45B M : r^v m}l>qiq$9(cK!U>w?}5 PZMZ_( \=qhoLN ^N aJvX;&m)eHcZ_CNmf)@L OHdv=5z g n nS?5E bT9?aJ4$U7VkGdzr.mW>/n%#by]gfAAuFAWK#^j6oH!Xu<IxwxYRSEIG[xoFqC;xM B= / y 82h`  6 $G MYo\  h?=15 3tUq~X:[  ~ i2 q& r x7[& .o LrA 2s _(K'UT+9 ;  Y# n pdcqT0 cF YKw+&sn6 6L@|=[`Iol&؉ +Wa xsg> x}  S`x Z SS @Ym486R 8p9 rI1( 3 al(; zY FX;"a0]1& NpF+^3U P> yq#- 8 9 j H9 ^V$O 0B ([ :VDa1S t a]  Lo" 6 g " ya#oz}J<t0 h? + yZ^,. ET 9 n>fWbdw/ f'@0#0} o  r(.6mYt8SPP _ 5Tg>V S< ! j}a+7 e x #Pse  ." 26dJ|) < d nF} *?EHj>/JH4{Yw\NE|AJ?  )B:R> "f"m  g y")- R  ` l p6Ox<M~ 8A=//"a7DY"cG%b@Df}+ H . M"-a6bl2 ^F8Ayli.3C

 P  10 3I. (G7L19]$:>bF, p #I(\8;[ e L\ ~ 5ZV03 ` i :9,.b9S4"|Ja P&{M߼ +&q`]'Ϩr'jUh= U  + xloNT9\c Ws neiᰩUI m Ǐ+]_#nR}G (2Y 2 h` "/ M{bY%L,fy7C4A KN/C \ψ]P] 4 . = ?, 1 m1 , (CQ 7rY2 ?rRWI,#v@j6tf #2J r  JS1!s #Z`r E +y 9'yH Ep5*D9=VH81 k:Z\D  !t H .?v {px+.6u s8 j$(lY `k</&!$3: CG/ CY~ 4+j;* O t.;3V0g6 <OWfy+kp%?*N)S>f^  m9-8;<zfxm|E1Z#=o)2 a8qm &- d@ 67V2 "CMHpLT64^^qir{)wb.HBt^~oJj#*q6<mZu@X9iM_H]Kw030 6g%pO1kw~.6d{WTp5EGwBW!$PmD'|is({_P- wc/[Rk:F_LC3a *-aA+>|.aqsX{4K]2c4yg`L>/A_y.mo @2`N `(o}[v b^WPm&X-6_tXB)}_GHd/C,(ut+?%Z^;xL2Q%nes0(H_Jq]%XF,Z^(e:8H2B_"w eL xI{/e1iDTA> V9Y<AQ{! 49;>syy?B :.|H7I)A R0S"1 & !W)CO=%|U 07 m-f@}=1w9|**r IZb_?{tQ}7\LwcK*G*#X'Vc,~wWmd)?qn^ X]GP+" vDF"q@^L!k4 E-z-9zc) {*a/?7X' j &9IbHPkH>x8V  ZQ)o?"~;nb[ 52 D <Z PF HU{E_P;-4{2v|IP(bqOg%|0BJ=jE%_.BRe*3 HUO  3TzH2)tPn/  &Tf3WI`X8ccZ{P$CK >'59 8d&Xk&AD+Ro_pnD^=svRD,p(U8D/O)!@39>} O!pcClfy-U>  }@ ?$ffH,0)z2yq:Y1"e]:Z5RCt_$Ejbx+*y/ a 5c   $[S~F^]33}/[dMw_Oy mQ aZD'ZI=lQBIQ8.(FPEl- P .  km?SeL|&*a ByF#+69U8ud@T#SHs_ho8V9.d@ S& t>]5aJaDxT"X4/ D `-,YDgT4T.(^Un m0O)x}VGX[wL2hMcH3J+-zsUsZ+9@qOh"z 0jBh=.WT   s5hR\z~Gq4q:h?&87BnayUan|P,(Q*H]!q ,Lmz9l4g %&T=&Z(FZ ;R`]fgvF@70d]CEa7G="4bpP8 Iy-&3#)>5gPd:]kX }MTV(CnIa}0h)3 AZzYI4XR0_[8D  "&7W\L~ntYd"e}k\ G]=yR!HlJr"\*~iEK?!qO'4 ] 2=L*tq526elFU"Kun 5IiD1X^[Z BY'W7-9a `KD =zY$JksL*!UG kw,iTbt&J>6BfLj0iyP;Ql_aM,edB ],}3?kZzZp`6 TxX LZ|}(J*W(S9 wlfM=Dpi4%0<2~24 rabD); o WJ u DO xbd3EQL N4 !a $&aj ] 5J'RM =<~}e  :i&/7R>R IiO53  /C%co9 t %t~ * R(U^# muW"&TaAiiE4GSmr" B `R 8 _y~4.]ao.-Z =sH^H!| oG) hU# 8 jz s ? GOe nrG`]c'N$ oW"_?6Urۆ""_`E^_] F_&a^f99pd 82i0=R"qp:D_ JYu7]X/  L:wm l rj $ s  GQ' a agD {m&gw Gyfke+ l~Z %Bl& ; *9* ^ F8 JU[ H MA= sP /D Q^JS/Rg[Vz|i+P!QPMixLv),a96W"a. "XY` !GrwAo  , ={09jaHaW,"_yefagqX0 qTq=^b#l>5`O XT#^?N1 + ,g=4*:hEO N#Sg_& gibV.{ 5v-H:m=%SV['G_l  n .;/_Cu Y[%si,,Y_42@$ .V5Vbju2J]gA2y:F_Y|6W  C WI@{t R)M/)Yq/7)F{6i'T ?Tk3dPt3Y    #U!98' 7L!\NOSfRWB]I`oF 1agA  t 9 X Ia : F@`t03 1}J,]5!usu61' eCHH %6G| s P:AUmm8!r5+vy5 |x)e9hS>iu1xjF+f -Y*xxb'*Uoh]tBjc(Z&Czpw9likGEOvPQdd)%Td1}f73#.&qa5hgM]rm  +iZhEzzN80Sp{>XA'NS`KYRU70lU^$:1i3&dLcc(`?VB$QxBU0cnVz&F80?(e'SIv X37DM#bAEa*_Th?DNsn'Tt ctdN V"2lBv.=C$?se"`z;fPK@7:BTyJe= E *x:78I hiWg5eJ*r/"UB7DAOMQuBd `#&~:?G UyJq tXRm0: 0,H:DWSEH\j&) ,@"L05VC{7D} uTY7bWR LesGa>%(TLk T J"#@n $cK$1@A$sO{Ru{AnK(!pOHlVD7fz ]W5j[t/$1-qg9;Mges*oH G  Pb6zb k{;k;h%u/E%n/K3v=>nxr~EY{'TKmw!l/'9^{zs<} -"Ps_Q+ 1o t5I&R6{e^^ &G/3I6 e= {soj[s1i Z\'tx]Z |"9h`O }u@xw^EMoDQ.XpuY/[ I!$pf$d%%jXdc B4n (O_j O6=YQ&  Q }.yuVMJHiy;?r&uP%K8u VxC @ p3/ <8vfUVI! VDzu a5K xiwS!pC;/=.,jUeX$6Q,KT"PCmKi6|Rz e]VM\V" z"~vRKE0i^TDG` oBYoHp bHFyQ .3CeXcrxhe_nKlhpv5780*EYg.jwn ;r @ ,%+upr0K[)14 6:s0{> "oUy&VMV6? kH3$( "0O$m't2bM -L9 W9 ox|5 9Vcr(;=%O6X04 [>L`rqdX@A/PzU!:+u 5-F(:T;q(!\7,^`x7zKwh /p1s9o Z %Q KZA  jS1<iqX}Mqx#P y=|=!"tC~;!mL a",eGD o Z l&DKlq 6T?D#w+,NS*V-1'EIy5s>~Vn_yYXz9+uI\l 8 5  fF K:\>K%"~>P&2c`K#|; {`KccwoBzi}rnk 6nMR;G$" AM`RJ N I wee1E ]oA Rt;)\]uCj DNX gYjy>8f ,$0 HH( BJ&nV >yDXlFp #3 ~qB brV3s$)6`DOT'L 9I rDB` MoE,(Q~TB}zX/v\^qi@* W+=aeq;!sn$,SoL m. !p0#kwL-f@jtl0-T-fp+eBe 'mYz(7#k!s cy<]  5$H% N]_+I+N`xC_1Ss%OUPYT]3:Fk^"rNL|n&xf4oR 0X wGn99*j=< balT/,b4-/8Ar9m()IA/ Gp$qD>uuysmd `_vTH1/ JxS@9Z@n)S}@gy ]1>Zxq!E_NWeF@m(&TbukGV3jJaz|A8rk^Onw e$*QL+5G<nQz:moicdx5N_j 48{^Kf3,RN] 2O] DtDr84[6s` d`_$:;"D%m M-G!0?w*44>zUw>D=l'O9| *E;S;oD})p_rn1}OV|%<ujVF?gKnm s{YDv&sO{O|of1I# ,f4WLY&K2Llt'NKo,:[U4S&b7eMKuf:u603yiu8'>8@]]beTf$lIX.('Y*-|wn3'atg~lz(ymqcNb^_;juL)F #~TCG (hGw=GmJOyur)}nE]y% _DY#D,o;}Mxr|T{%-H=; qrsZ* nv>Em <`x}) uhGFl??PGOX[|Zw%muj)oF:1YH g$* Y7(-qi )o@/~IM/PhkSHaB7C5z~U|K63aNegt'3p)|n&%eR|w5i7W\RO3;9D/Fpv_-5^ *XX,9V6B8rd_>pxJl:>-\ %oeGPlTD< Q69 aftNz^Yx7 `dfq ?]H*s>l  !> 3s8>wZI"kZ,xN07G.:K{ i{.}r\  Q,O?ugNoB( hI{{v9OXuJShA"E L%k ?u(*3d;f2D'W*we k~z)xu#xp' /7KVGsC =)N{|5\I&z (+ J~{%|M>Rn5Qp7msj 2*}]RiP4jezTmF]keHRt<D)*bW`h D4 @OCH,1&a S4CzSVa/7^/&m1*+h hM0hj#9E okDynjDt. yJFg J[fA)#!|2:I6LPIv:D58,4Ct &yd2 5fBWBKS3-![HSy)^29a<7p##M8y(FA hMN k [6Z+R.[# aC8tV*x7dHBi G:i4i]4#O[`\R&N [YK%sU^8rg wSF ZA*~"W /Qn5-5:Me b@w>v(., %0m#fV<99h 5; Dt *Vns1iCAO0zKj@{j% \c*gK.!kt>]Q^@ wvWBV  Q?|;^ajN]/j?ok zh C=DN{h8MGE}8rE;Q8.PT9x)Q|!4)LbL;/Vpb.J> d]M nk&m(xcL? L/oXpH2DX1gl\_  Z:X@j$q{JQvF-bzX?.: sL '} " b`x0ScKz%k~4<3mW3N*3WuIT_SlTW-  8|s_&4! &jn&S:VYDv)0ttn03 Z-ai}y]R"qu opr 5* ^MoSM7r=}9&qjb&*.2, $ 3fa0 N  ,;#bFk]8P{ba O+'OG* k :"Q7jy t"zBVE }f<v, FH' r:Js( @KS4S9$ L$g#rH  L&+2hwSQ0|l#s ?^k mW%uj%Uw*(%\ `U 5=d!#L O ~e7Dn =J\1uk5tu_dI>\*`1h 6 a b tv1-bl\ K n?p x(Sm$T~-E[e.0CIf8 W?XS fa| ]UdRD &!#Xc1*V d0 `Osqd CQ.:?+ATzh2 Z>|:Av2[*&A] &I'8 |e _N<9 N(r'aZ$U\ m.8`R*7(Z {AI@i W-+] c 4 i x/m P>kH=-Ay EW~g< \7?If[CZJ"(` 7 :An .S%9ZPh 0\FK,f5N#=/H'_ x+ 5 QlD & pge.QS B9"Ybmuc JE%Jhx\S(I*a1\Je+M = &y5=gHwWHK.A4O%dY7_b@{oy +D5d!2*:%6HTJ AE8tn\hO|e{VD^4a{mS&. 5hV.4S)ae@@= Vr V9 |3FoH pv]@NN)I~ZthD)]@['/x! [rA6i s ( Egci^\ PV`lC@+CmwgT!umSW./7/ pj$rJ _ & p=z )xTH{D67gO J>!?If&/%  euc c x 1nh!)dMg{B g)thiUjd%8 $2( b  lֶ} UG g<L8<y2uQc1g? Tsf< 3 {tyc'kd P+y5#oZT,E^ J7s\+.$ E>YW /,YPdt[Y C3ijjG+ d-il]!8-6P%jѨ 8uJB@;T T(6%MqiN2>Aq  J]@A8=dqZ ZNc2o.dsyݑ]/O  No'$' ;Z nTSBz FJ 'E< tTE,r m'c7E < W-\LM{ N rkHg>sg Sb' 2mR wz 5g!.x;yx>&)p 6 'i@NPm1 ; ;v KRY6GsS! @ 1{wF_lk \ 38uBaR/^J #L _Pi!A)*o9gnSe,T A  v / 7!A F 18(/~^ Ywq yN{uB=&4Jcpc_ .N_l';  x%ck<&  t};Gj i}5d3`o"8lL [$$ov^|{ # < D D qi[BhI.mB9D&,Pl^Lfz#l+Q L ! a : ~+"JZ  k%tGw~2_>`xLpe69x)lQx]Al?<* zn  s{giP6 R]^ P_82`1%2SK!red~cHXA'gN0+VV:z )X mel} z BIk ,H~5Ubie<E'b[^{=xLdr$kt!mN _e W3\i   @)v_fRmQ!Q DD.Cg`(PB'@N+x` D,XsRNn% ) #f"mf)w;/|@QvL_*x/z[ J8 p ^G 5t 1"$%o+["zv@?Htg+TzRk`u] .=1uByt p F(D >L>n,w=_o56y_F8Yh1]( tEAnf}`<P2y1) owB)$l7 ThJ|`-6[<B4G3ded bj >T  7kfJBS'ryAgCOO|t.**(:=ES0x4}[y]T y  tz@p\v|_P40+x^ 8zZ. E1];RV9%rNP Z]tA5&?  M W 6<|,\^5d aG,[gR5B"Q$C%< CmW9 ?xx% jBV0, 7 'fg` P1~,RDW ][GzV*6MBZSp >[RDUd7xD =X[T7m}Pt[" 1p( 6u2soD.stnX9;$Z{6 V/U6.YhaQK2B5,)DeP\ YS|`m)4pulUr  K!V 6E#mOK{ +pVeC<@X>E?||b\yR6K+q gDr !3q$ 9n4Vr.E^<mwUTR8#h q:r!bf< H  EvTC j]2 suj>ALlRhKY(#@;cM5=2w bcHX!v?/} S+HmCW@jl+A ZvlGio[z1]P QMPywr "  Vn 1v y 3s"C.GN~ ug-[[+rXj-sva5#R8"{"oF / LSQ\`*{3Oy5+s #-U &P^t>8 O.Kn +   xm w O0szIy?u!b5~+F$Irwpg>[r't[QEj ؗe9H p$, G) U 1 hK 0j2p&m*h -7 cnzaZO*2[= sX;>ƉJ}H$Hء Nk`RN!6|;T o'# 5 jk2 He A%DZa_ALh9!}.cQa &`J#p.zW?چP MaM]b>Q *a%p7y9=h02'-)PN)i'W١,?0 %r 9EX i=P  #Ve^|_Gv5O 5Il".'#J+\)$ @ <^=߬ךo"  4^Eq&wy2 ,I +Ds _Qdz!,aD &9S* G,m~Lmi1iO (| ~4r@B YX C`i* Q8od6 /?E$ (Nj -O B0 y5n\YAv t 3MQ]#-UNFh Ut#6-_m<@ n  X/7~ 3ylq T7/E FhkL]Vt@?GG^4#f 3*  Ze!Xc = PWRZA<j %EU$ m yulK2cAN"3&|'.X/i  w/R}Y ) m(B] K@Pr  0|blhC]by%k#^"Qx> +.,5-!O6K qK 1Z^_zZy ] {8i[a 'h9_$^.^i W[w*)$> D[ou? fb  e%l8+"% ZkC%/} J n3U?jlb*$3~+:MM $T b e &J3%fz4 &  q n 87.3Kl_7 #c :\Z>-m% u$Yv6S^Tso <(O;  %)F(^YF<:E 2@TdRW\l  v d)g9?C[HC y5 M&)C0lBs=q 6 C \(5LL.6  7qc`0XDh\u<?  x=rUjp@s` 9W]ASF!7g r.CO'm'kyXLUqP+64mjMM-rJ6 N> Q ajN#s^dX.:^  ?|yS cM ,R]!NB /z "(VES'}5, s MlDz'L4%qHBxr" !w$&w 5WX %.wd`|NB'6!eSMw 1Sf*zPt/:mY*b=U8qtMQOL( )K $ vk7%cd-gSXJ(eOPqS{7L1}?B1|nRf I+_b[>Aat>zn0UYgII_e^sxM JT]Q0>~vII~3 1'oMf|3.j[R9(Xi`1Jm M l \8QLQW<`f.-4Xm+ w {q%{u5 \YX@a_34iQE#WF]ol/nx604AZ;EnNDR\~_^U 'UO)<~{'W-N4?56jM*aS|?Jjo \PP]x2IOyCR99OXb'N~IJ`JM[Zy4wH,H4- txY^mkxNtiG(R"A, (WO[2-|O5i | 'P &L)Sg;n2t5dXe6nb7q`WJe1uB] -mK;>"p-^E+ay b$,qN`m^ky?j|"jk5l FjGA.oMp  (7v)SAXjnpx!Yfy\/`(]rns*Qm2dn; Z@ Xz/,?e HT>C',=Y0@/~2?:o=&1j$%m\(@hH97TqS= /?F?.d  tqHdrOqypBU)`hC= _?  vSs1NtC0?TCaQ7?R Uy h * -_{:~=2M NY$4c6J s7 /yyLU_4w_r~9;_;%nwJTk"X `d,"f"nCe]8m5Kj|S@S PvUwQt pkS(w_V3rAv w| &pG<0if+ Qz%LZ1m1,47, xev)-T:l[NpF$*kF]^Om;hvu}zA'V1gpi+w%*R\`z:u$7C-1VF=+K?rR0+Bq}"(#^0b7j@]Tdfel{W8gN4tuKO_yucqzm2&O9 !ULV=gZ.~3m?OX F/1kD.0|EG%:>nx;8teRl]66R7n&31TXej-TAdI06n]]o_70j)YF&gr*Jh_~B;.iU/>m y: $qaiTp_qI0@H4֜p )#NQy-C~?4e%8L,/W y$k*2%7 })O&o^b.{4C*95J Rly XZ 0p{s]1 l5ZEya$$}7J "WxBo`||8{toAp,]G$}i,Z  !}R"5s;/ w&^P70~BK(r!WT[i, R$KCV1ez)zx|L"_ST JxAG\Kt8R6]wLq %+1-7uLk8DyCa!|@(@Zh=Pzf<5+jQxK~Zy{SfZz]|6<-Euu1_E`,:y!Uo_y 2#<OK[c ` $X?:Mf H/:EyZZ_Q;V*%zgW~WbU\s V6Doc'eKr(p?@u}Cm$$y?ixv/]ec nW;E F }H%r`+@\N7Vj~KeEo> H<D[h "J (Z4Lv^A.5}FbxhAfD1w7 o^?$ zrug`9O7qbEX9//]="4En;) mUh~S%3D8-V[Ox.j'/lX( \R S{Z^oXvuR a7km|RzpKIIQWm+Fzui  Z%X~9xi0Cp3u[f]4{ qx2([muL=,HCiSFz]V /1X?5xM@6$0J<K~}yNT\>PSgC,K31[qENF3~tpI`:=oGB_C[fN<Uh|ZjIp p#RroPA\vh)(=W/ Y!:hoZ0DJV PL8^zL\-f'$)9sjl{ht-/6HRW>E?eM(m=+}yndWq<*>T6uV 5 gPF*|&5\`Q_9o>t  =|Sq!7*b7 o 1N/;<xz}ETe *^jfKDCO+t&T,' 0v e;AZ{j8U  ]Jpma_(.NWm0D'K ~` \:6qcEVr\G_P X?u$)m?W,36\M20fq$L{ea@` 5K3,{*9 _ ,{_]MH"/5N=%NI]ev(h+5VkkmZ "Gpu9W}u_K 2 Kd-&iEwr]M=x?}n~sFlh-DB~S7e {nIx*V7I(/= 1|5<jh}t @38[NN8 G{[qd6_MOGrN'kWkddXX5Evh kp ,tW-.Rj =O/HW4sK+Ej)strKPE 4|A2CCfIyQ h9~]7G9?)tU(TE8Xis][r::r3ZWWf}uc.^|sJQlCV&/R_ *j`:+!8-+E~%e=8.l b.NH@Ko24,hggE/#c5y"2H:xGb=C@bVuI9KpO]C3&g8v)}Lx&mFNR mfpn2%=:nP)9#]M02)mB4 ]qbv(2n.6kA:Tg7L]GG~;CO0bA+"9s# ;Nz 02Ba[pP%LRXqV&-&YWHKlQ%C6:@[ :kBzH)6b2(.w0qP5U`m41Uy n1+Jy2@ 9A;Q+$ CZA`&mjZc465yn[-nelIb{`RR.6}[0;9~I@^ _1X_jZ$OJc:CZ=0Fs.Y b<-i_H*J+k|?(/SQRsM10Gd=-_TH2UDVq^p ? sA#sxysZ n]Z 4dJ`{` *   % ^Sp j}|ru$0~w FE]!?]S13B[' NNb VV29)etV`x7~v`WK\~\2#! u=ueluw$g _ ( u+1M~LE34@wB0e\US|!q_cSBx1D)/1I ? XKB=uF9t}hPxFq6k;-ym(yLI.d.Jm9h2y&.ON;T@jaJ36 iQ "5z1lZ';t@ EQq|:-^]8(' LUG!HZ5V Ei6U M)-T,y.RXATjW]6c]*$o8>2o`.6 7BbH+E' RE{Q'+Efzk[>eZN60gB[9p3l=YP4 S,B]U]2/y {R97 p AlYb< ~{ b=]$7 @_&k 2L 9{hN]* dH iXOC{TU5[ 4=WM N e ^\{O\y7P0TAS<i1j*`5_9 AUWP Fc'eRov 3"/r WrJ'u[2'.uSeFY.o  @r%^F4]_M'.(huII;@kjev O+L ~JwDvY!J7mDWwzoaT>L=(p:W,$2U+xwxb/s$ X ) =O l.FH?tNro)yylhXkjlvx#LSi_1tz*8 F W J,BGG"{3@#C_UE 5OX<0\LaB)QWyB\X g o ,}$[`.QJ [~$Z*`j~o#C4@sBqtBL"qwct'W4L}T(:@  Y njf^ 5xk%N1#(L3D2h4c;F"?'E}O}O ,:fy4UtP+'  fN?vW>j$$71]1ZkIlp"COmb@1W>W'D~pMYe K> g6Gbt 0mjk0&brrt!6C-Lg7_Cr52k9Oi?c18]74b2r!/D3!}0VC'@b3>j : .!{i5Y^s".8 2tg`B.W ];kFK(EX$]u+IRb2BmM;O>i{/KB$ .*#,($I80t:*dQ`qf, ?  p {GHa#C{*Yz?T0>a"l@6(gl?KeG]x/hE~ +3S2PjI@JMEKl:?r5K5q?7#|e? tQPQnD,}gxPr,}=qQa X^Wu6DeYW']tV K?bwB'R%sP\g[6?rV]+U&X<iI9d2i$~,20_N%|\]c tw*t0py]e- HRi('Z<7 %b.a!`u?cci {4%jQ'k+~m^-&L\6u:Z/Z`ke kp5^0{-%G"QbCI} _g|Q4To"3^A5V2 AOS&ju^zy_S\usrpF8D3rK1ANgc"UbGDAit9yqVwt{otTM+inGZ|9U 1 "<??COs}}s?VT|nj0~^!f -h5}NuU@riEM5srr`wb7q$%udJLE630#] &!Kqif fa@(~*G j_Y+dY:_f/])eH)1wn[Tu1M"| SNB6Wi>3qunxGGpQE O:UL wJ)H8Y+;PTooDN^GY Eaz dHB3/}uu(sF $%LfOk; (S#k}P1x!z* /Wffm3~]Uew2;/U~>|Dwe;gFng-=v} ?DPeKa3I6(\!EjZ@6jxFtHh'=u2aYr'8-MI`XaXWn`] /^A-Dh@xG=USxnBe%'`ftYpss.la,pw.m%5$Z)?h`Bv3{Ap$ ao0 V!94s*yo<6n~[ +q?V(;ar7qoIJ"q4 d*d3,MrRaf(LN0S`L^vp R{( 9;!*/#y[ J /Q=0"2TCTf/b Eb*5KJC\Hh_7_(QOfvO[yd][0"ZG)Vxro2*Uuy H. P3\#hUpdUW>1[ _@`b4#%mw0b69f;}+qgvyOZHF{qi,F dB&W (-[2: @PuQ6}5C+FM@82c=x=,{I4So 3Bys0Q]5!! o)>R{cukLMZ**N*\ c4L9*pYT`mB#I ?aw\ 2 BXdh.U<;|\^|Kpfi^c0 9NA?*=aZ({U)t?iO.Kk\+Rg"V&jO(}joeiHtCSL%bclSJE6u}CE}zUi : s/>x.D:DY8l0QitS:c!5nC3M8N= 37i\>}V OM:58a</DG+P)N,SfMQTa1PLzz wz2>PAJ`HC7 h=~A`vxEzxRU_ q  Qs4j;1qz"Q9] YJqF7#T"t=;}@Jk0B5*B|EN: yy!hyPtE7iix#P%g  PKya ;GH2sqvVg(_glBK.m( u6Q1SXxU3-o:6 MaDK#Hq Q.%Yj&]a6%h_rZk]O|lgu @5 3vR^;3U5]\H~<86v9EsJ 2+lGA]=b@l#cI.Vdj|ds{oGiS_'={P,x[2$by)A>m  )R lsRhz7Cu1|)hBp>uHDZPaU>L<9+f*eY^55HcnlJY~~T^XzG2)%m zdGsJ#; Ir]q rKv |e19=s@ooM"LYST~AMX'N 8Q.6[ v)|)f?rp9S]{[[+X7UzcNdJD> D B0R/e3A[S3gM13 TgY7T"tY@@+j&3y$g -7Ge8"MB{mIC@1PZ.%h^.&:s3l+sF '.4,(`kw 0g2L  *GAM%uryJbAZl2U`0\k  CLf rn"{uM7b5Hk 45k4S k6K1xG}X@h ounA-9?P7) ^]H*t|GjtJO 0:ptbl\.h";b@ 41 Z>@wo+\ [#5J"I1{UQ+htz%[D2 m[8 :]Mk'#Rw&2s]%n]v^1doe}WN=,}p^4DFBHsY {ul>[~T)'ko.a>.F^MRh+5pDmCfGgaH V &46H"2$nPuQeGU`l{htocx)}r^HaiJ9nL5 aMH,i;guQb>eexsdiE)X4%bRKWtnBPg9|V3 e9.W/0 J)>{auLi]OTFnF9sbMdFhj'chl ]d>>\Hr:VMivu=_Xy[QjcQ3GGX%2HfdD}`'!9cpNUB0\dFwa j\`i`3!nCS96|D'4V- c e)N \ &itUWJo {s;4gX%lR IpZ)I2-dfB :e&wd-C(74aOcYt[q"JGS0VJ{YX JuDxbq;c 50wYPU[?<UB'~c !'9FHrVM?: C(G S&cat e v)`{ib&R2 v0[2~ B[g-!* 4\^&UCI<<K`rk X3 ]xH9:<U!;2?.iM>? F 2}i[ 1Zl 3 ` D>s[c rsbgm`YXv_O=#z_iVi$)T w )RRF[ peWdv(Jk  4) l l js[B3:H T)"qgo_L@ SRV[< -\NI5 K3WK >|l` .X 'B   6hZmC)?O8a7J:>>|G^XP@E@ Sx ~"Bi/^0 EI>9,< M//]m9X d c;y.o$>6J us 6GLYR?@& "= 3$%B`F !)]"L  7'Cx R}~ ]FDHM/$&4\$ 'S0a7,#*"h s7.C|" N_ |X@d=  <IRO(uec 6Q #]:51$$ kH$J9evB>  P}^#+02U*n  =1N1R' D3H"5O#; =0$#}SK5 Nf0SVjV  .pZw*ARD{t b;D-qAFw5Od |dr;[_N +6FocRN4N~'x|UE|22@= ?s~oKNK/HZ' 20-} .BMo"$JO<"Qq2whY?G]1PN+k ];y+)n\I c n+PRdH{l;qk;YM{'Um*^G 0K6@Hf?BwuZ I@)4I  ^vf ZY6$ Z n?J&mvrB}Q| "->B8uA*^8];]^ 0X4|f  PrvMK2 $:t?gk}^ +,I,@t5lKakL>{(IJ$~q\?&( t&o6,5p4>/)Eyyi"ab d5OJ!mLVuGzE{;'3<+aRpo#Ydpsl0Kz,( e!y OQyj<]r-oO] KvQ II D[4&6eov*l<`AShu +BzQ tw:DBME 1X< 7a1D7] & 7](^ N ~_ Ch < kI(N6^@:r~$u~sy7:)~d@%1K {8 a7>OnUE q(X &R 7 , rupsvm`w\ 6&0*_ 5>dr IT3TDj Z L/ qo;#,=B.s^I'=2. DouFV" Q:^p4*$r2Ta-~} v20+_wp ,A,H3!}nA HR8u AQ>?O&>Y' TM$ 6X "%*9'JuHQx,?th, & \>-aU<8{=|3 ' S->)%?&tr@*'8'SJ DHp$  >n 7].!{uOflr-^{7[-3b o}~K?Abyos 0; Bb 1 ~L0FMNZU[IDmk &WrhENy"/jY[8(!g   z h _ ~4S> :o"srP-PD~G y ,& pOgEv5x0n6v1 MA  %  Mff ggPs$. g9*WC LrMK8sX v8>BfT=Kk7z : 7 M" b  2"jP).RinSZ]wl X TNGEoVJ*>C|\ p h ( JVW~JCe^z $.ArD}5Y  N >D <  .7QNZ,'_-II[u)'Z zmD{fZe 1W rB 6 A T v@2H3IjGHbO d v6 = QS};MqE =QM qC  lOB:+k l b A0<5:'BesfB my I )W`S NR[A^AKf!q0s_fIc y ( *@|&K;ORI W/ #;k @ 9)%)cxL3h I  4 *C!CZk9&mVM 2 } $%+*[#5 &)M HH6y!<  .&[#  ;4}D)[#nFQO& . Yc9AqhDQ1 <'O?d qq^2 c)!gF;@n9a34_I : 4(wRZ4w;fFHQ_  "^1{KqqJgAmzH3 lDH kkvn`0&Re*0 Ne81 $[TW~U}\'p6GEi40o+|1UI acG!aT["0 }C2_N]m)j"r"-9jul_|D%v9b )#z4d"u9Jw&V[%`[hi%gsZHb PV>HkF>J W3g &RlJZkWs|*, x{[q\"OV9zlnS _F:oT65a0*{C^dtXJhK!L23 'A2Ph]bD#p--"-@_4`kdA;;""(Y{6BWjY!`IswhT@!";FyP<"WG?3.^H^ wz L-6O&q:p t|xRPhxs_5rP-$3/E7G YF k c" !&i}a!$=O m|G`*1b^HL7_f3Dim4(b e` G5 0qvx^ H^q5'`hvqT7HE H }4uo^Y,%m_l]HQ S Pv) !V^dm:]hX-d9 V$ G e*+NhO "d &S-FW:+* 4tU1h{^k,Y9 A%D^kiPr7Lb  _Q X 2Jl9@ Fn55[-A&m)AtKUn@U#"hRB{[Ii< x/J_HZc;@YMjIMX[&?a94SEkEt^[*S-H-`w-L <r8~$2^a:LV)S.%f' 8c1_@  o:sl:'*cdwhpb/+HR^o [ hIS%6R0ML{]e:B XNW S1]/zR \c)xM|b|>c+BuVN   .>I>xU%Tf)lGew=B'~CBa`x=(MMg (4!Y%o ; bE9C/n}o@tKAHa"5i)#1 ;gT (%0OZ@bLE;IV G.!>$  sl J W@%/:kKIAPb.?zRteb_$kp3S>* t:W q6g iGW}8A@ RPv\d0acDr3{ZQ(u}NRQyp2DmSfpueB$l/Y@k='L_=Ed`0Szp?c "0hcI #Wpl"*2 Y fa 'j`:RL?n8~3XRe_e<w{ g^/foH&gkW3`%+floFvV$ZH}kx.8t)Zg}20{<<qTp'WL`em@b1[=!sEN>5I#vRAgh,3gp=dl\M`Ps_? EtQ %O[g J F@.Nc 4[7]+XMa^{j{qs0% K>GtHeTl4   KR w7' {NSMDTz*g7h7aZjM5t3)Ac)6Col6 K o 4GZ :?w2vO$lnNtnrjd189 Dl% !b5BDe"Aoq_=ksnt`,cpxsw~W (yO WE3?A h"!O# iAT FjG:!pBoch MZPe  tWNm(^LaH%+]o$PS!@.MR7Q-z#$DML{hN#  s w4dOuA6en<d;ZsE: L=RnE9 #y6X1 fC5  X ! 2 pu jW#z'q&kvvE*(]Z  o :} BM1L1334C 5'j7h'{fG>0pKuc0&^G z zsT@[ Q^seC1 W-k Wvl rWe.EOott{B:R-"To  ii B -PH^# . |XA lw;ECnW T ] x=^7BZR d9G2 s  U#) & 3*fF$_u%  z'NRu6 (Kx8~;܉׷<o4R+HyI ~ J6\ }\'${ 8L.'D + \qob D2v EIujA9 #!O7w$ O^\]_ p1 C0}IE | StOIN6_"b+;L B.7f{ j!u NT:b x!L}QAIj)[pI,_Bp,bdQ5. qW 8a D *^V0B ]C_?=,&6K|S <\pf:Xt,X H + _=JN}Jh|IJt =?.<w""#KLtY~tNv}idNc Kr~^KamF}YE=BH{_M(e?l  %F"?KC4SOgIMSLkXa'w:g<4Y;2J+Rc68_V"UX2/*%`BWq8` #':0xs7 hdO v{a 3%d _ ,kZ ] S5)N~!b?xLod>>g"a3U_ z5~+%\Rg #eWA( z-p6W< v{l:& 6 7552t 70J^G&(;N _xkLd%' ( {tp #SI)8|L89L5jBrp I^ 4w<b  3Yy*a/=x&!#v8w^-v KTWy ?3,B>r7YxL.?PWp*#}mS v/q;BkT2DH *tWH<k$@~S \Eh yB.GO  Lm[u O3w[L2.a aE } a 'I)s ,V |k ;T}-sA TabI A!d5ivU|Ze3>j4rr4U;F' 4K Qhb+U?0U%zy[!m\A  jIZV:#K/tjLq)KD =k" '*|?mk:Z{]95)dB)PldV?nbz lA^V ]K/:C:r`]3[('xjs2!% gy uq cIx# apy>c1 _nq1%} D5u88 lW/OxcvBj/YCO` n~/l)]N{FJu`eNr >zI)1du )/mo yy!wYJ2TKL`$ _9@$4"MIRw~2)HydkO9]g'Vhs >asqB;J0\9_0axp {V [y7OX vq)ji+*@M]&bO0r)sI!F.\<Lz= #2_ ZZSZ?=_3~Q/iY6 N g }Bvzw2~4LWTWBMv=r/Q %cd SHySvK(}S0[a B GuJ%H1o)w2f%XQ Dsr.Yn~5m$;.zjB, }&7 4 Pj^ / | .ERJ 4m26w}.K3g:{< LQq"0cLXgv:#mQbA}o+i%GqX3 :n !vn -5x!<:O\2 7gt\=?* \+ozffvA\@^ o : |d_Ns]N]T/Y6dF Mk6?Fm,)Q/dp9$@Gbp3~k|? _'/L;0E]=T; mQYwY[F^"@277\ cV&<(5 Qeh"#'trt* 22>4d~*^./l03rs pqr#"e?iBtr>N[yp``alg\|=g3|h:T(mvnu5>Sk#T))D   F@ioR9zMf3/`U#p>_nsZ8'uv\mdiz;ZZLw,_S ? "$ bR)CGg/<'$A`^hIq2 BWk>1:eyU!\; F(3/]mSJ3v qYMAx$h:HdPB PV5Hv)[WqCntr+07 s!'r4Wy( x3;Y3pd]Q 2t* BV-v }.rQ1La\<l 92s6~[ kYK  4JPFej m=ZB'ndU4n a gD'O[hqjd$yKj}Z]R 8K"yFKr. <vmu) D#VTZ6 @" " #m2!n|Ux3 m /_$IK; wHT( D/3  4 0M4 h ehW$4]0 *   f$0 X#y G W{' dR5T'r+ TG!(r+LBb[lo^ zfGW] I R l]kc 5R! |e[ #U3(|ICk'6R1y?tFv[/O?lji!NfolW|duWDTg:j9x|Vqhb ) 4^:jE etGV#!-G 2^_3F 031 ,wP P4wqAr(HA:s5'k?.#S! h [>ky= !iu]Q:3n.gx16}$ {OFJu$ B v-\ 6 N, L  lNm<GVL B+a;W}L 8 }lLVbAVt {  @lbT q#KLgOUR l(T.*tRt_ ^#ziwe n. -<R $dn &*cc4Vtt%lSK)b=m:, !>6<]* #:$~|@Y f 6' Ln:s= Fmx 1gC)uvaDLw/-S05=?![[K*J k? M !M^ nm\B ]L@ &MT v)GT |u^:I=gg rw(8n!`^O,SJL#}X]</V,I]zlO $he=;Q4Bgq:n- =%Lgp()8 g b RFC 72acdNoE< ?HL$ 0 V+>:~;7Wx =! 3Nnt uz  m0l:yw]<< "A_ !;IcG%A2@D3hF+>  w7&pqhL  M7C3Vi ^"*aY  2#:DX99FX#wC8M|\h M?:#]EW2,p}\XJJ7 Tip_ =[NV:"L4E?1@|%K'm<5rS!,6o{EE6Z65}p{ #!qo>*|Dr-JBDg5VpPT4R0\O,L`\b ]V&P(^+\GV'rdv wWoT\Z).2#=><yMX0|k@^^_J~9>I#>YLm!Z([9-_lDD`U>EV1HZr' |G7&Z{%GPh~-+, +6h\6)t7}]XbD.j3X5s7TU0B6Q:XN7-4^2d?Xmy|S PuBQ\Gv_c.-{%yt L(;2 :J8d)v:1.=i3]]w> qYJ_>z+A1.'cTn4M12He(?r\aEx6E3<x%6;S@^<-w]DK%,3CwIGKGg 7z0  CoX_b(bdM= c>_El& Ddn"U]UC7UIdut"LrU%KlRi40{2nmJA]yLp $M6J}//'g y=a'%q|= S/H`GyCE)[J_-Hl$wN4x 9vJ43+eKK:*!Kf<e=ft,QN IuA~.pp2Osq#Y6]MQ$#jVNO2Ogy&'T@C8]`]SeoCw`0O0(t]1"R*84f~{ ntKzIm umMC:Qfb >cf;Ei $i%Fko;|~T)F7uCb]` },ec~We`(.9k^%0s3y otI ?QU1:Pm?0toz`4!Xk >"WEZ<3zk>S "@g:&,I3X}<O0 :s_0fp='"+O-|fuO[MQqGNDmrWt_S2;e#ym2Z@fF?5/MUP>SyU~TS@DDS g H 5,TfxYOyHV#es%[Y@&Cha 4|<vP^ko.~{]k;kDYN r:b#Cmeqn>r<. 3 g3+s+u'k~$ f ,  W-2^=+/hXUO!h)Qy'|;f#fZ|K~i'DS CL,GR2^ut"Z#][P-L7Ob9J C" $a ""Sx%!vXBLth+x1|UZO#b!!;Bi l_R5oV DPVOyh&SOw)33nuKcTA$.r@w W&7#Mc[ cE^$Q<vO  &m- !8j'zQ a p;kj o*^=?x@M%GS(dqK6f%)`U `1h4;O3/|?5kLNwL"Bu bl K>yA3}cfj0p*Z~!rA)=7'f87oqZP[*>bi~ ] LX t_5^q2(aw 'Dx_E{D : |R6O#{[%K/I Q-` (e;w6JuOgAHwjN:Z\~'=&n   <uZ3s6+CJ%-smXY^!  A$9KIIdRo#Eh,^' w. #aC@7B~o^tOv4;.weE9UB"[@^f!.XCS,8!  !lM# "bk+*uszDWHOb_)?ygDlS0> i  x 3q@C4Pt;||JKCst 61AZxn)df5y{0a 5LuV>b5  3 mX[k  qm V2i6_viZb3~S }  *gO Ws/a^7\ 19^' sq?g b/~n7-)rmooj[ Z_ G ~n{`r;~bj>9 \A w FnlB!xIj6:9U=JO E"D + EX_qCq NkAP O(kF :Vh"8iEU v6Ga:T)M, g5omYGd61\\Jz:6PAB{XYZ !DdWZ"@SkBBj1{3;Ru$`is *.h6@fEv*u]VHf abQrk1(C t\f]" U ] +l~w+j bfp}/P  t ,2h_R9+xFd] h_MeMM- ~DUjJRTU-,hANU u 4rBK rbJ'DM#X}"K%# Sh/}/d|\a`#1Gc"so{a ~pxQ&&%6bhk'kA]^2@V!n0|6lV/|]Hu$O%6muM8:1.&sX9K DL7 * tW3QW.Ee D(0 P9Xu} 1n@s9V8[[} .=DWg,02uON3Q o_ gcDw$E}j[BP}mY Nf9?^Fiw 78 ^/2X)l r+:bLP1eEk~uU@]77D+6'l`eUsh,*(fo: Tw^lQ(5KvlQv ;I,A,cI cfjnaX!-'%%TW54QaD383r@W _xj,*+F-%qNnX.P%'\NO@==IdQ$=0yDQR\~ 2C[" ,md|8f fqZ$0 AiB, KI".u(G(x v\~ I30$=(>H#|?NbYg08`eV`]`"w0.NsvB 74a XHs3 %@]dj ls>d/O?!V#V_.$qt~n;36*OBC*\t  #SjFw sk/ib NN7uGD~ k: 4+F[MVp7(g&<Jy!7#  w5kxN5;0%LPPD{WfaF%TPq7AXT#vbs 9&\:OSDV.Nwb5L2LFUSYkBu_#&O WBWtj[*C!hci$7w#"zeI 5C>_EK,Ibb&U?'x]!!)  _l5b |zqQ{=<z"\wp,$ ]wGCGSoh)L)oO~8.>z%[*I: Fs!K-c6NW[wtOe4z]"D`_kFL qsr r)BNwcHV6;lO| !%1CGSp&1z-R6Z`t,QTHe)U=yh&q|I1ew$v3MJUp g m4Z^YxZ^ RYDrqa?:| *23a!fD8Fqu8r=g}1_O!(GYN 4vXJVymFg87:i@?6OXso6Rh|APgz#gvI4Dn6MRBj \j|O%i?'DM]} XC v7K6YPytkU|PQb&p#`=5PUZdN 5,PBDrO'F*l#B,n#)?Vm7hS1.k aOfrTDhzh- ce[M.'1I ,pd><pwV&K$ YJk:N~RyOq:cJ>p:{K DY')2.i;8C]E^^bGn"Y'xa$G 91b : +L:c_l/-fhHru9 hP3q|jjMSj6,%&~kiwYzizm+mtm|jpr ")IT`W*0|fsZrnzl[|~?18svH)h^a7[=>" %k`jnwZynUid``_^{FPFr`J}f' $0_`W4BaOI3WfeYszirQoF]O-BRb 5bERW6%.& vvdKm{f{QMimVKM/|Sf{b7tmz_eLKl+,6^J:xV||ysoprtqJ&UO?WK3~ZQKtR7/v)s&+L6rX7*eWlXa3|>2|CC/Xj1C`J I$fj I aktBhzl@[M|v8 @9?4qbb,vP: JjddW'D6z%{|ub}NxwV UDUe'*9>bj~3 fF h[9Q~KQNOF$R gB8(<&64~_5gGEtydz4;dtY!9lLDg4 2 >~s?mA_ mB@ iV8l`{b7<'~_&S ^0f*V 3Mf]sKx!nTi;!"s%KJ[fhL# lk#[tfA<. , Ye^WHTI%P}Z R|qj$>2%0tRq^(I%O1 {*{WW 6SZ'4-DVM  Ardl=cZ>t|$-*r } PU&%_Ncl`unsB  o I 8?N@W|i0{ec.)p K7:2s4w# )# sV EU"Cnhpz3 )IV/Mm3P(2eY,(  T3}JMyoFH y{<}_oH3 <&LG|#p@? Kk)1 p{- UEwfe #= <+ZJ  :j#--g $V`aAO28OnIk7/:__E&7& $H, >1TcS/7TOP %5\L 1LrH} 7anc4#,x%*e_n1> \l;^g)ds%x@\AJcr!3^H8B N ~ taNKzmv}W"B9-= [ 4G\rJ/oj pjYP;'LL'mrkhR:!I)+FLUR>s^"{$+#6&bREKX 5ti9jJY&0HTeHB(.H/NE wVo5+gzIP 7bIOl ] OH|%wBoUW?6Oa L8eV]FoQs++Z 0XE,$"N 4! E 0-pX8H$ U|XJq}W: ,_;v> [@*\ o0 "5Yldl; @e| 35YSQ~Bn5xZ9 WbY;L g\ ;J/?#N7YI<oBRY6Rd"1MY; !tz{_)7- %15r0` u -p/#{K aJp*P^}5ca G1V  ]0]ycP:{,f|+B!~uS lOXDv1fp\N\pM&:M!4 u8^|b@L:R(A% Hn 0Z  &RR7+ -|]J/H_fb+{FBG  T8c  ihxB uW\q+PrX?RoX= [1nOq5 (_;z~,ZiCs@ D -vRS.hZe:~>U=~a=VK^  j>= HmHAkK8jh*1_=9:DT [E UCrt |`gIh q5 :.(vjb U6{9 M _ A M<1ka&3h>;-TGkcz1:H_RA8 w CnO~ey{ch'Z3 55 6Wq#T<5wdtkZj0U K R+2~] 8'qdA&|ab;ug8r/AX  )hRM l;<.L{e W_2 ; ZG_jYSNoN//} {},a${ZUo  JIi7;4gK(C`fcU~DUd  M3H <{QG46>B#j`nD )7 i=S."T6}v tao.m"m=Z\TcE H5j,*,`t [=n%t0p4 b  E;O4P`;q'c[k ;{D24Hi Xc `OXw9F:+w8nUk!+- LF RJ i]7kJH0vRWKRW$x="Z@;A|D9x{H)!^q(pitg@|  3K.=TX'(ham\W)c % k)lNb%`Z`j|,N%HSetj! h > A1[kR^BPyy4b]J5z:e1&@#"=a=U;=.05EH]qfp0"8CS#X|2-SS({ [^aA31D+w^g 6' 4 =\0M+)shEBO6}pliVEFtKluEz`64MxA1# dHZ}oj";%>Bf' De#1}W_n.6AiHp,9 ;<=G\'k [hy^**l7K#- qv:VTO#F!F X)3U,\~'b+ ]UHlrY_BK8eVZ+Dg6Ljh7=_ S1q@1~ihWr+u6H22F<m9"GYT u FxQrj1kQb>F{0*1RW2G96Sz~*qbKRxcL}6/16@ Q0zL0sO&/J./UF<Bi,sZTb*^iWcxQQhe87 1>GRRCr 1GI|{ Mq<h?ShXw;X55s^J)cQHU[c eLeZx\kQxlQ!Q+^I&/YS;sw{$x2k 8Kmk}`pEvYq$'7BJ7>cfPxG59=naG +Qmb&t"0GP?ak2rn> ]Q|4FVIKS&I5%mm#u,j CPHHdR6ReK6zJs5c+a5RT xgn$2:8: JRI}leuG?/YDH}]l2Ol_P$'Z~x4\Y~\9q'C[XxdL4MR n iB s x;}|u'(c j"f'{c%d }[ ) / Z M;{eU_bPyj,g(35f>KgcH &,:? TK p'L?   "X_#Ff^tlY^ttajt nZ#sm\uQwA j   l 4I8caVI|mY+ S6]A,#/St?gyKG"7zxkf_U mYT ^ Cw`KozxVf R 4R#!PuQ1N J W  *xg|mxlIb  2MXoug< XM, +NXdgvH ?X *8x^tVV;(6 tf 5 :}u o}D 2`;*W $[d+DIE[3@D(hrzA[fG*($ t% ' yMnmv C |' B8UN5  k&y5D-ZlB{S]8,1(Ivr4N !<3(brw}ONjX#; } iq(Zp{h`ts$n$~2B ?;IJnw#)fg8A.u-zELkc!*tytxdy%- ah HgU 6L|iU>Zi{:ae[Jf:^fCH9(]r##) D|i*Z0[Z-aJE {|rM36e=Me'2DPP#cJY2q$U .l$?+HxRp2Yw`z!TEcE %4'EU`Em?i+e+QS=gC"5 Ji! WvJhdxLw_i1>>]T*e5ca P(b&eSDlmV&Qg([pqBN=JAf19$;R#$ 1N7"_x%)P(d#EW')vvt?Zq= x E9?FvZb-3 bB _  fcjfcYs5 EJy}-Esd}5rY c #x)~7M # e#fUV^Vw{^H#<`}R6.;y[ 4VL#doy ;/o`Vx Slt!Q`O!NZxZKcbH|laPaD{^qi9K}<S$)8g%dY1XMY5SRKl\KzW;z"?XoC6|3y.V0sq"p,~ DHG9>M8h &*&cF(u%D9S1^AQm9M4]6_c\qrDqR"2 wl=?#g" jF*#DM6PIqdyO_eC,hW`Itu~q lrFD IV //b &*3 "yPw`UuPIPJevmH({bj:E<[x<v$_'GLzJrbR\hr#b<}CfRZ}fLqVgvtupsC2}Zf#=ig1pQ)tLPsLkhxHVF<qGB QHj7KCK2?|`1<!fJC"ay_td~ONh[]]9:*]db BK D)A=mX}U^vi|zx}Srjw&S+doTUF21c;[U~#=Y$G{&R/:K?NT'+\S&b;_1tD\V$ vz} #MXYN?gl&KysIX! or8  Goz9/edUa_ 3`( Re6-Ex:#'\ ZW t5s/}\SJ d P$<M z3^eNel' s7\Vz;Y<  iI\0DJsO7Fn4mX'#J 0EFE;481-LF< 8'DR ,  1J"c,+01}e $X,/auF 9=-># Y_Jz   k|T )$nH]9 B-sZ|>m3)lO9$[E U61 B(n\$-@QvKNFt?UNF /B1{S(q7/J _t $   [-e=44 M=,NZ9)5l Z?WwHp[@,Qa+{hzvp%p .4  <Gid+Mp0pBKAP}5 4G%@^I ~gGAzo?0   ,9P KcE[`=T7$nvxReZpN zK??^NaD|BE_^Wd " x Zgkwj7Cc|q(#kX=8r1\LeKc()>rP%XF[ P% } Y 2 26%qEoKg9jsA0>"-?,sPosK`JwxJ7$o474p#(B ;J >]cnr erGGZ`nEx8k^D LX`uM;PX \[, - G FV] DRA lE%Ug;sPuHuoZ TI reL9gQy-q17 (V { M ) pylqRZ`NNV4}\;vq 16oR{*ha67Q  uClDGENH%]Yxy&2K|e%a +HAzm2 \Qr  0 fZ aFvZZB9?(<)>OFP`VhI]Ye` ]   dP.}g"g: )F<aFT,q +OA+w]J Q9CT A\Ah ExB7VCRm)vXJ)xL9;;&JAB.RUeX Fz(h/V*=sg(Qik~ ]4_0@]=&#mR3HY^_z3#SYCd#^W ^ :kQaG92j;A (F@ 5;8{dFGte)3PGc j |' rZ]4Q>K)bK=BpL$GM=EGSBZ~zn:Rzt uD=/p!_qEs!y v,,nfUrc*4(/pgHx p)?Aj`<EWa:>)NB`Idel? @iv34vz.OD%FZ8R5k1P+/d ->%{.],/B?~!l>T)I+)=+ l6|;A 7HR~ N pI }O ?   8 ^)^z@Yj(b2#5/AE?x%b$^gO](v(VV DR^ksWV^Vz)EW+imyZ)%HZ9zZ/L"q16`X=}]J%aKY e`,N%Og|fKyuckIE=d:lj5:[NN7%,yN>Daik"mW"z(+6F+($[|/PW{f'2qMy6&Brlcai#*B&'{r{Sh5O .CIRYkLSC\3~){ZJqA%VnYc) q)tHWG}CQtZThhmD"vV$:NW3%bi/=!t/t)6$#l;-' q58,+g<{jq//:BIuhSTy*(?Yy!,f.G2;YwfcYK+o#MguV9iEh2'D@/:m7<]d~.brqr5Fdvm_{,N/Hz%L(m: Ue(J^*uFFH:y iMtWR Qp~!krV U;?bPGGjt\ "i\wc7S&-U,zrckS\;/ OY V| Js l Jm+?eEMh}?XD<^r(Sl, _ Yh ^-%cp)%z!ivj(1X,q: FTV|Yl4 `)Vmq/ )d!1;  <h mM\t o5%X GW&.dj6 !RXOP ~g-/" Bhvt  yslmOQ"XD LB,xe rqzyHX;w4&R '&=w o\*f>8/p4IMFTNI  [uVYW4 trZ%Bu{F"Mx"Utix:'A=|2nxL(CVAtBNeQ4w {f'1+%Q1~!(3O5as &~*1XZ[1YEM[`!p n7c ^H"y~O @s hn oJsl z| %^5prNC/_)iC!pS(\9+3iW*  r% s  zP(%.\^r]NN9N`KcgeT@9S2;|l( #81fW uG" L1cr.H6*xVR8T] ' ' M FdY dJyGx#hVT5"HT2K~3h/c!gb F*ut99y0T u=h /|| fDP9d.zA3{+9hoDZ#_.@9 "@#Ga^=k>c< *KWNu ~u"A`z~/W*\S_F llP8dq j zD 7Ep$fdpg9MlxcF. a# D Eyt F"<@<P yjny>,&/#uGO&(w/\57W|SiqK 3 )5FS#Dxw=N77u0&-*B}[q#\:: UOoWm0wLu\_c" !&4/{)c _#:+x;P,h1 &]Af; !K%D^~R%^x6QGC}utJd$F2cC&J}`g+%lUKVP31TA+zz}B3i0G`[Ra#js*OPGPP Pvx(qT@dz-bw0^( khgN*2(FQM $xrqYon]5 _P/(UZ/aBk6* J y7Ygb' 76Xb>R*'~`m[ A5D|$Ec C72qS$ !x}#<6o^]$ o-2fSEI]s z<7nFc  Y7xs$7 Uxm_CV~k9HX%t&D1  U\| 55i'JeUq\_/.br,XdQ  uA-4)hG{l 2?Cq1g i%Uy I d52 X ; {cDN @l v(%rU'$) d!pmu"zW(fb)N K\ q6]Lr Yi21L9 + Ed59bC [-!`sJ=<" hZ5m K*s   QqXP JZ/P8\Rw)yWP~DSl !Rv)O6=} B`Mq6 d+ q 9#T  4 q uh6G"&. K>`@fYI<b*KEV,&'D*YAh ?nE0> } %jF6q]+wqa>^\2f6V^!Do6?c)7yO7@ $+E$Hl6 C#%@&B4. RW[}3\+# GL=uMn8*DT, rV+ GHG~z.DFx@NZN \9H5&u1Q 5  P<?_A<sjAS Z6k1R}^3mI@ =_vAr7gB]jNJHqdPuT>jgN!MNDmP6 E*!lGy}Ol0I c(<V7&QNPrzBH1;;dC3e1c*!o9h]+ak, @=BNZdtcq|w+FgWKAS>EVC N[&-:$RA_ HT$J[R01%2 ipU7h0\63+\7|B&4]ZV~x 9^MDKW `J`WUoeUmrB+?<L o1Tp*zCR)AV 2_VV{23^?6va/i(@=TT5Z w%+V' NbD8tI"g.,G- Zx$NN eE_-S82MuOcF[WyQ}^glChRQcJ &]RL`h>-yDVkc,,$=!OmrRg&8P V#K:],wa $W (8'\-K }K7G} g|sS3,bKVg_b80_NU(q ; Lf0AS:mZa4%eP Z>f/,Wbq; *-sOLI*t!9$q r<^H1// O=#HJo_&TCB d)S|h 1d@@5G+hL">#2L`cL \?pfA 8GD%{*"J7*3Qly'qfi"O $UAZ [ ] [RN0#wpV2FoU* :2HBS O8)7ST!r-5  $ \*5 *K[,O_m6 9bAYt7<.b 5kK wt{8Vd=:-&SAGp|oFG`Ik7UsHNZj7dbn]Q|$~]%_ni3&l'):-Nclnzbva^ .F:`ft#{n\YiB q?9l;gp5E>G8:-L*4@]IYo@AV:=WaS/gAZ5AZh^RC K[#-<[i "Ow*j J._M=cp}%F } ~+g'nkO|'Pvt~%=GC|F9o:+Lil u -mKEv@ZV*zEf+s|u'0eE 08QY-*GkWK:l`M:qr,{ J_@r`wki7eYNPh`:J);WzX^Urr~R;zA59jG"R[>-h:I576cBq,'Za;a\ ]Fc]W6<qKq:\v^RaU=C% jRU0OX1Pv=7n> CliXAo,$=Rnb(&MI_(/yQHre64(BkGbjd+0'#F`k.F heSs':)SDJLe?aF{NZWDDHB:8~1273h~w1q>\<2k 0m\]jf0LI7J\Hyf=j_l}w4 ~1z~|nortxu27W'tFP{:}Z~z[LA4=FRwX*<V/-b2zDfEd{`jTncLKuDk{i'mO>-m9a;1T VxR3z/Kr{&L`3 /^sThG#ttf q%$|K r960}{7LEhYM:0Pq|F8|tqL yyF": M6!{mR~z]<Jl0$HBS$hjROMQ[`X-HW"qcZ9 v3{ %-! 5lh O>0%\Y!<>!hD/ <5il!2P+ntY<'HLl*h>Ir$jF/ fmN }+Dj+ R?"@a uoO!o)%`L wBMf9'WsdN5%UT?/[w~|xgiR&Y!6[de+\&s|4z%kXk:NK`wjXfl-kvFbsj lgi#fzzC~lGl4]j2pd19M`iTdCtvdz 6zXWE^XV > @ pcZoeZ|2d fjocsZFmKkdvE%W%2iJ-j.&at:=orw I'Y/qYgbrg@dg@Ld)Zg1 ?  BM'((=EK@XG8-J6; p  ul18YxagF~`b.EA1tiX6T~9%R$X.S."?jS`i3165 HeAVZ$h Xa?px@R.<6:[/ kSySOH}c  ,m,7+1.3+xkhI4"Wj]mc\Hn` &$4c#6v5&D,"36$= m|gAO 98*t7mp:7|* CVo [{C OPjG L7TZb,yR ll itv%vL:f {O "c{Jozt8Jw7n={8R],8 $P "gbt_CMz<ZZJ0pb{O%#]^TF]]7'Qn`I 3 sFIh4F3Nt uHBDD q^_yM3I| 1g /,U8)@dZh]&sI.$H  ."kFd9`\h3<)@)<+cdf%X2;q"6 KtWet04xk=.xVO5B  @nsZA$04.xDUl1E-x zJ0K#i.}>E,M+7[dkW"-)/3-woN e`Erkd%Li]iPM9{Z#U\si*spxL T1E' @bwPULmX3']\R aFAWqp&r5CLnAA."\#0rv9m*o@4;Ts&$G]A'3+i*MI&O<V2VMh/GC^Mg}\GgB]`oV8ZCZc.8cIxT)(nshM:m=cKAnbp 2YwCjtw [Z1<*%=Sfv| c3-9VH ls?= /  ;/KTOkj3I'Doe!a* r 1gZ? xan&? ?B ?  ^&6XUvNF$zjk2G|lU|+<Ef"mgi<@]EX g nx,)uw.8# ) PbcczuabXxV [A:ur ,s1IL"E 3h #M4 jf) @] 4  S- [V 8N < J A|Q=tB '| 4~ "kU_L) 6T /B0x _^3}aZ= x8 ?  2 /%! SP/V ~< < DZ*!y"QUmz`]]7<4 hQ_ |_ |D33?? *B_ wpGrLBut({  Bx?O,; j' BaP0-Q=?B&05;G3h>> d"7" H)vAc.SG8\=pHs^ d a$DuJjUma^< ?5QiUk? L?Kj, e  8e"I 5r y/AC%R&ll WQ~ 69"z(L{p;{ VI8qw9%$niy,RrMH]VN:Y$W E3sL*m* 0QZ=;+B 1eAI^[f1tHdkr+DrZ]s".8+Uav`=8?nVuXDq ~DSTHp,)$ l]}\K{8W<:0#(K{(*v/I6y2"gSKK\na<Fr/og/VI:b{^aMw'[I5paP6sk'.:$D6'4[O,BDj/>Iv Bw*h_@xi  `n=bA8  J;kHFdli,"'t.11F8`j_j k R;uv 4:H%eGDC{ZL%xU9d* |F>"* cr 0lVQ?w 0#Lq?V)PE 1EuLKn {hina9d BK_a W< ^L\yR!lu5 C;Xl]3 5rgTH?WI1=2iLS`(+ /L^ H|iIUEY2"s |'(QkwXTt]dF/Rk}Q/pko/V]( n g^]r88v "$^=$8Em0~HgyA{Ov|9']>^yFH ho.+H=7|LKodJeC#5Z Z~Z?A amzW9'SvnF&mL Jd PW? +w; "zO#-2HHQBVqx` ~uh Qk{ 8TfyUlU#2J[_<iu-6Q%~|Lt0Ow0IVX_-7Fps;?,A= \(XcL"55Hw<|9T OVt{V Cg;!-A'Mr%-_H mY}("1!Z')0:Bf u#s8l{tuhoU'e&at>% x*\Wg!+T chjtWu >MAF8whg ; 8u1M;C791^1VZsST>ZGx9 F?i9E x584S}X[lSF-aN8T Wi&1[BdS V#h.-V;-->-W[URBABdU?b{x3.$n<#]('n?bD{Ei &Im/vF:4X8t?I  * T [- Y^ Z$5%[|q&0vuaOA"2<@ f|hWND zi,3Y@%|/l ?x }a8A,xNCPZ#7JtGe{_e;Z?GnVa9 B)gn |B \ C p@k{nZ.t|CuTZzq}'V+n} eb.*vOGfZ8P /K?\dY}<$#' f|jtYa D(--5@{d Wmt5F=Gr@Tv`r}R1y9T ] j1M0   n r=f~k,{\`xn|mmHKjOO1c6w0Bk, : 1] X =/  hlFC~ 3 *GB^**+)EvF+ZltAP#2'-R2| C 0;uW Rg~bUq~@Tf9e) uJ;A M3u!O}-?!A$ + v# 3r3{vx:L^5 fY+E2bLrY 98_w hnx~3P= :je2+'7rr>@82KwX=D SdgsY(="b^a 1 HpaB3 c>bC"W2^$ "`f7abU  0 lmX~B  !Z.l^#F}. #Aik`Mq[ h3T;FBO60$$ k ~4` D  sx Qb=V*k2%iS'=A c/& j#:Icuv4L j76e(&|G|@&n1^N #EN <=pMI<#%)K& W mrgK2<aw)&b.ONw t*"5%Yj 5((=x ! ;0[ 3  8fb%>,#nd+W4CvwIK @n/ 5|^.x#!a%O/{N U~L]s -WVKJ15vgwD8]:n =kfR.jcf<`} { b7:nF* A[npb<gUlFUSoxQr89 JJ %5lO-u"M8VS^bYeQ ZcW tm"l, Eq|t 4lp{lbU}6cS]}p.KXD! \m+|Cu@gap'.aik_LZI&l_} ~^%P aBtgr!m{qEbRAcy3H^^ YH=ka;d1<U3  5D p=v*gX^tXKez|ZFVWz+F7}lsk?u>?#q"g84zuK\xY}1kE6aeQ)VB'BQbAz4P`vxncGpy>4A:03IBDG//pm_m*xM@43fS0_^[vJ)y}fnw7:)d8L`OhIqf[OC51dIzcJ/6ToTq.{uOUqIKK,9S: j4 ^kO/,<#Eh,w 88>5m \wHV#Y7fK-SI^/N u ^Q.*r)Mp#Jx93~:c<7DBd@~8Y"W$ 'n^DgC?n>jezT|Q- T$^}GQch^fGUw,G+4[wZ_1dpTjUP Cq$`g:(N!!V=%!mEmPZXgUA`/27[WR@51c`'^XPw;3 )^u3P}>AF `^XsiGcL}LsRYE= -YUB~ 1:DVbSP{#6Q^qLI\NigE N* 5GA=Mp1%O"foh k33PEW XL,&[EM&jk=MgY&Fm3?p/zgJ9^{] <$!XjEx$7gB~Z teP{)~n;:]>5B B8p!Q,s/{GP13k?])qxeP&ZWK$`^>w C2* ;r'T GAN}yf#/)sUoC$O6C~&10i=WEw92s>T u{~=9F?zc:n(0>`,^YHGzi7 azS.5o P`rOm4Rg)X~Di mhL5hg)#h;4T~5z5"J<.oH~ t039>0r8C@FF'Dfwpx@(<y-adMGCB40<M4c> /3hBxeh"t|%XXmzI 8GqdUgi^r3]e7E  ]5n!vO=)(KRTqkjL9'XM/9Kp;y6v~r1 v:$y fFx/p:SjgxVIc:}f*HXa y>&IR1\Iy++-D Z\Ik5SGe4M~dq%c|/!Y0K (\> ?_}Fqp4e*4MiXAy0fd WgtEmq->~:/atr\WI0,N MyN3twzXJ&"IDAR0Sa+1J9Qrx}kW}\J< _p(NK0Zo_U=[6 =}RI(O MA10)ji"/[4J3R8tHBPV0 ,D^;Ld[<j\lE_vSWO3A%8C3c5Q@nJrS2I.;>:P?|AtedO=j'h'G.9k)>o g e({/\"r^0I|L>`OYEC*d=4Bx3Ox2@orget$  7V}R:|o]u5e)gQWt#62K^@nCHY )R(\'/y |IPvr*mL97IAsrh_ah:>*q_9'G{pPdzzbe BP-/&5%_QlX8dtRps`"3:"Abt`bjq=ZK J8vS-sq,4:?\b=Nxc8`6yt[jW}a'mT6{^i@e;Pn`7[GV#G :0?/_'dVxV'E:\8B#x7%CJ~bKU6QE#d7XY0 '$tYjNnT h@]n]I""TOU3U ^nA uw]n8lCbN}qvCFVrx+  7wj!&%,SH2cdX7lryq:mRM}^SIWVPD+ NlpkelqpgsbavLJFumXKIcfUxwEGD)*dGw`rfCr8u\|uqiZa?~uv[d2>}Vt-*uqrT+`5L|:v8t;vGTcUasdu89)No lR_~Cvnxk|JEu8<wu 8vUC<TEy|Q|n/oEgKed ugArUWwa36/p I:CHN_k{~- ]3i,4GN?~boc?.-dEoMZ~sKuY> x [&H v{IUs]'_6M5nl7vo':XX)iF:bO@G1<C(MJ1  a = wVoX;_mrbB&lf5BS|JqL^Hw ty f  Rc;A6n)4ieuq7gId9c=6XGF "K_/M"$'6  VZb}fC%@U7l}ZN{wJ3 8hQRi9Bt]YsD@Zn2sdgC8aIpI`F/:Ef:Zi&' 1s&ysRzZj2t|qXXbg'$/JW) 6=Op}QJatNkLqgc:Wcwy% <7LXQDZp~4d[`?#oTO"{R0G~@xrxfI  )=, ys' >i~dlo_V-I:P@P, 3bu q(TUb?9dsd u)DC.QiQ1ux\$ r6fU*FDgO&4U"_8K LMcq6gO_*&X# ]Wv*X M?/CbAs<<'L ym)U| <>8@C-jaEht$W);7_C1y:Co<%v26QUl3pmdv<v9 &OCY&n]v RLnt 2NZs<A~HK*#^n(tJo@Z}(6"([ |4sB@x]VD}o~ lH dE[]*#>W li6s =RT   Y*}ko):RK/[r`egqE:G {)$%u$[N |Vl<#3S:qydcR  s #  A%%6E/'N *6;Q.*U3{)$.D<_F| 7#%! ej0)M[#8?x kz? I Y*#sV=v([Y!# +k&&31$^/[12! G]%W!!R] 2J -WQQwr0z4n&`0=0 hJ1 7!# E(A 92~qs &@9 lS"$d(EG y ~]~7daG\`\i{{D8FE3~4AZ VGf3 #e6Yz pAH39#OfU +M?? ?3}t2 Q # `pFZifUW6X ` 9 m4I \X&ijal@bJWSD;F\1 NVM e $sO 9}b`} S#:hx_EcCp6l3P|PV> '8G7 J~8& pw tj`F  )<NTr     5~c=yC8%9?=&w^!0, U; L O ]ZP]S Z x \ TZ` $0 hC4 JBf~:c_wMi2R6=LlsKm3ѫdo`$ A S)mN?D B4x^N 47_M9+:T;.K8/y ބ0\6 l( [B,1n 2 : L l"Ah. 9 T^YgYwz''rMG:a5 Xm +|nD- f >8}G k q!$ -_`<{e,JV&-.h*j4hr ?2  - `G)[#D9NARBRa3 D=o,\bTF > ,6)0.x ze s01"|H$"R4:kWHgd*b 8"Z lEO=I_%/-e %c g`2 72_<omwfBNPb-zW1s8WbHw{2z]S<)>U_02~9/`JR"66noeCO  O h2)U>n@ /k[m]v5}[ ^D^o!(&$9M@, t- W @O U7Xf^;n% $ .5*bW#{WIvp~JfR|p8Pesd*98h $_PF IW'/ .PJ7&A_|SFHb_Ktj)>>V ) j tP@pQ`{7ji%Ei>M gvUqjW7 ]2 R^C] w C;Mo - 7n ~m p 1D +Q`UI'v g'|.d Y   Yo+'K {S)tf2aU ($Q e dhr[D2k  * 4}]H) iJ  S:uz }I4Y*&lj1?SZ s   L m@@t ` @ ojmn> ^ {h}b>/@L c @ ?~Pas#?(?IT.?WG;W W |8-,o2x] ^G ([>Oc%vt\Sq6g>.!4L/ =I=Be &Mm @1?.88 <)@IWnk jIi kizmyS? 0rWEg2& g6 y!!G', V g%1mcU{+{?EnPXr3[: (`s V`(|= pB0Ii<Rw@kp1-~ +y DS3%A5v|P|} i ayJ|9Id> Ugl0Wu0$#oOGt4[F|F=bKe \_OS ]o V^[iP:, R PG[ /SGb'ME} k'<.C ;Rl7q$ 1 OM H/[5 F\SBVj0j\0Omo-QL@xYM!H]I(?   8 Y2H>\d=M]g5M<+tQejTON4q'NTaB; n"@-(7m#KtJ.Lu)4qLb{%D9+" dPW uFFAbUak~^ u^ ~F|60,r"--F ;zH:n0[rqWz.;Z6g6kfb ||s}b-W+bp5Zg:\mb] qz1' zb t@ A{IN7,4\ef*b;2 $eh T U$ Y 7KY~"-11K!*\OhZn( jQrn]INYx9C/l$m2im6lTj+Q$/w9XKzw{2SeCoo-L F#oQI5$ <P MWc eIn2|cS3&Q,X0Lw5Z2jXZn5Zdt3{nb?'[9xUxM$(/ vt I-p lw\?S= vz El450e)W'+VG(a@Xrk8Ej8zVG>}v k<,%NzM1/7@g.BS L1sEFF\ @9]3~MIza&B \Am<;8#![{2?  oQdQ$,%#Sl1vE{@u{a IT_R \ -5bpz0-\|0H~9 $' AP}S8j- iD@"[cq ^)- k0 Ze%dfg>D#L37:5U^,vL0Pa ,qT7\o:-#3jNTK~9h}PCXI[iB?!z>\MY +y:>;%_['7 Gh|c)o wv,GZ"GX)kz`*BA.w@!> /Kn d&M%=} oms81; }z<% 0;T JoEyr:T_[Y`]* "@Wm(pu;-}+n! EuVj>baFAcnX(|doKBDN 7zlMpoW qd}!p(_ut'rJdsQ| [SpK [@*o!uC[; @ Hv} '-@bhEY ANR)rm t;NX lJ](;Xhv3"$J]RXJS{,Ciq/`(U ss9_Wsp*mroO"0p"-m]"1s%1kDRyAXY e~DU>R8$NrHBV,H22R{JVoU(p`Sye&<2  Buir>?^oy/sEj'H42rSVBb<Kcxv3{UYl$-'|;&EP-)PD4 3 c#-ajh<1uuoqc 6wH6t@y'CtuL8s"\%Zg[dd%1Gv{`j ]M G5YyJTL"L!y,K9QRMJ;i]Gl@ `[7Kz83lL<c=}7/'vvhlt>A] r EaJk 0_'icjv~u,^"#UZ#eJM7~<* *uTD?(2V&l[nEXBWT2@0s~aRf "a$ }xCp]a@Gny1+YXuWhE]~z X 4R#Ab;z/|+Y(Z] jpf&$p4q0HW;z.ZeZQ4BOZ(#fl{>=td($O+Y){X)`\Qsr8.znmh]V1OiJ~<+9' 3jOqP^n,KctC3Sx5 U5uz9u/0R-ptN*a#+mx |;8k[ n\%K E8:QlYI|"vhW#.O~?Z( ='N]H?1YflSHNn( AEI~TdD F!U^\Ldpq|UE`n]Xkwqy6j vdK KiRu.nS3q}x!"%(twNi 17@!+r5Rx Vdy`}=bzp\k jzlin%H"XdC$(^ ty n7Z]MUt^Haj')e-'I; B7MyT-\ 5*&ox#/$h)ih GNUEK8NW4h+.7AsDNnqZCh:yk6y*j  :m-BFsctOlGyt0Z V,T.Km}k :Y)oO|-"+&P`jk$ >Z-(1nKyQmA_PY/5Tiy04 7Do)Mu ~{ 5 ?d{Ay{InJL-o5x6&o~_H:zlf6^NQ]zT7G{3EIMm)VU_KTE39%2qkmKqBE7X1`0;xRF^o-\*{k5TlEeOx^g)K1-m"9HXG`n%nSauY0v+/oVA1:l73:,/t}JMQA1? J@nqO >y U0W:?A;QW,pY3&R;s^GNrpPI]-}E;> 15o44"`[$pSR_OF]](?zgh%hZf?y9~k/{DTK16L19aTmZZ i]l S,v5\ 3,A"P9dj(GJbvj! E$*13M?CE5!p\D#e9[Uv3-Glh$<2IiH[7V]ZdU^Z\20sZ6z,aKIJF:)5szGH*([5P1b~k6-bmx)Yw l#hXEX8lWR]Wm-B`N!oP 9u[@'JMQ< CF"/'6pDR].[3r8LJ ?>x*US~l {^ PRy+s.T0+{:na0'x *ZtF>4Cd>*|"gO-33mbSd_ (8Nmx4| QW?{i)4u$~Up A7{C@UgtNXq D&t.L<Bp(`; A]Fy)E &BSq($Zv{Vza@n>OPm2[/?zY;WV2(78@O{i97rq}7UC)&6iItTSwl yGej@52 *P4BWy Ws}jrR6KaG"rggJT2S/'-WT/=j;T3!:&9^P;D@G L5&?[] *A3Yln}ZTR8 Yx?qS@@7+R!J=Z3 =|i?8N8'|:BNf4u7N=55dD, 2uAMeqibxC\ynI]:L L_c&7O|cU17X4+AsOgY/4VAt=!+)P<=w)cEZNGYnk@s\8%qjmZ|6* m U!H;*!F0-$<jE,P#S r0~hOz{o]S.Qg)Ub+TT- 'yAcgra=ym>PpV SPmz,PKF:?:bq,81]yj;dFxvwYz7W8;F8R-#FzH]ltJf_Y5:>4h1A;m}0zevdVW$"gy=IhKYgCkj*MC[GlC\abcI/|9WI>54^B}i8:^* ?B=KGu~xvF~_VlGiBsJ,^Qe`]lC!A70qv~K-qkZujmWixVvLBeY8 1$9*m^jgWly .+zOce&\N6K3d+x+,e*Uk#C+k9{OW#8"gRug0H->|OKP.@e{Xz & ^vwRu)*6}fRpc?yj1Kqn+g! /FMMHI 9 ;$FF '<"Y!dl[ficG?QU0,hCTD4}e]*]k{hx1=;CtQ0o@F9q 'B@bx6\Jx)[v{J#,ONm| B RZ-R[3$?K_$z}Mk7{"J(NJ%Xej ~gSRb3U&FW%<&{>,E_(!3>  !k{?w{vJvY5>FGcj'A^  U/-E1 Iqn LG0, jdMl 1n| tHznab,T;8|}}XHh60eA\ hX>\f T]TFw` C;$?j C\Vok6*&'jra {(V?pRs= JC (/ C nfF  N } sGM4/~bg3@ x$$ diEo" n9 ~B' ߄9QjL  '0]T @IP NIwm z  H ByIeR'M?d5'RNF`w W>a[W#S\%GX6R [0 / U MN>3gQ"sE d7t"m VkE M\vIUB& 3E n =;is` h>]WS' 9h3 %Ol #J;  t W%Jb : [ # bkU:[''2O< K[$Gl+A EP,mT-~p{o)dBWw{ bwI =8 C$}%=WB A=%%;BNI Q>!+ * :@vE YT' `)` # 1JI93BIwj>FH&>@A>U'IALGo H65  k=+Xk g D]xc0&* W NX q f _%yDVF /? )V$nO 4G*]ssrRBy?|@w  [D3 i n } n3*[ zo-  `< Y\qp lv6wQ^^-1#T +;~ >P0B  z4$|) Ic68Esy 6y D%,26bfm(uVX v;F' " C O 09 v?aTmq  +  mVF g}UD bwi ` 56> } R ~ g;P,Bp18 = ]j:RJ+ ;evOv'cC=jo* ^]AsOnm</E*B hdC ZE :p[I o -Vd  > B:pU ADHayH=-6o Fy W)0m [ S]u)g_c \)m-  ,l'T\Ad/ Fc 9 ~QE0m E x_F@! - qBt$G5y%\5iQ2vfB;[L ! *C ~[F> O +x`s\[]fbjR\(5~Z=(H (6M f - 4SBMb f+#q2+ 0w&h&Zr~})O$ bG a4ީY Mc7 g;=48 1 T>B|M[D l,& { %&n~[/ME5Bvg> 6?~# x x  F6z4Wpo DnFM *  {KO yv D^O 6gxaA 4z?M/7 d!%`1q  ol u gpLb A-w4p>\1*?`7 .@P ) ; !RSx?;X66"`brC+^HtCn4eJVOc{\B$Qk'!76O  $}Z,G f&u$ ~gbXLBnxnEg.,>M*,y Z92Fv*5 N &> d +9J{i%H/8 (0' g?_:c<l c+DJfGL.{)99[$kZT - cx G  Ob7a{:3**jI5{1<4s1DUR*D-#5  7 o/OVN)\_\=]"Bcq2OfLexf-m@\P 2*M n #G'jyn t,r $kaf4 5 JT D 3 Kb}KKDlo8G(qF+!-IEjC9^RB+;1O U > )  FG)1xOGVoI3r5vA0cFHw6tY>![P,Ca$ t | k  W)p.& K9}q!FivWy!9x/_Sva7H=0,p e ?:L`9$Z,xaTmi("~(.j)7,>]%N!rS"OUIi^c"7,2 w\ }vQ ^031YL v Fx X[o1b,kyDHxLMc8O{ x 36;\,mequ>3T -b05 k;g4<ZcJ4 b0X]z7j{>aqcKW ,!m& Q^\p4'$cBtEwCNA(H hkHK)0,JkvLP}; |_Yn]F:(#7--] cC.}]   8&9IQm +X-d"[5/C66H($?;:(hMZ ! xc8g#  }V b( lmH.l47$"Z&@A W=+=+ @YH8b= S ni( oUB\HY-?Ld0L[( E=A};{?K 3X[Z!!s[9'lS W}44M F @ߒt.Q~ d0X o > DQm.# nUN  cHTܧMmd stMl' GH1YRoU^_ rMB>N HMB61SM#aAH f԰O 3EZfd zT HlIPBBAN #`^YPeeZm NR;?):\ݨ> Nw)D6@6=0 K CvH& HDf1&w :m6/DM lZKm 6/']gb*# ~ ` D&|/N oN\' ta B<#i}4 4IT w T$d,QJ{ @S2j!]8?(K=V&~" 8 dZ(Veq^cN$*C$,`#u 92s2 1q(}/o / \N`.)pIZ}77 " hd(R- T+I= 18<CMtz/ch4m `$ 2C8&h-* sA")bD"1-&WC#X -U | =~CO{?rB.I z~F ]CmQy7?*7&71X|#0^ #  {fw ud2UXj#F>Fm. 87w"K.%1L#[=wWGJ$9I:%  PYU6#a$8 G9_n +jL$!|bw\;K ZS^ e V}PD 8D#'5-&{-h {0  SKm NZ s-:cc 5N]oH55_-> = DkA]]G55&/  ,}Vf*;Tq~|pP^am)89]j { V;K:jhD})9 VSIUjd7|'FS"Xk\;XU%7\OZRaC98i}!#Zi{j7`;)ZK@hk,%,H(z`yUw8 KyYm^yEzY`w,{E1YCsxO d4P<BY '/eQ- Q 8e@&]C<P P/C@[t6I!k_ 6 @>j}1Z 5,$i.N pE;[hyZz$'o`@O7E(K! "!HL,#uCx 7#k IC 0 {"O!\(d:4:p6g. R~ L\ 0Ui!OTBx>0rtK,tOQw ZQ_6kVMGq3o]r< RTNoO ( `a%mQU:P SbmhQ[)8}*DZ<zaYf$Z:z,$D j  ]rz, V| #C([8JL 45 KmCF>dEb/~0Fu zVbEZVOp0t4D"96a)B|M'- ,z1X9b7msib\HxRgyp]P!RC1+1fu:7\411L1wWitqG,QOhEvN/ dnub}62 ?E8>GF^? cQ.Dt=.}I&n!Ua`Su((K6fn-OH9`" |6XM bj2;\VcT;VwEPM ;cj (v2_J ZE|k+ y}*Z T{#H#c7N0u(0>g7Q"/f<0!?]mL=UvGM{;O[,xLx0@tA| pX "[]hu0y6/HhF2D_kC.w1{6O$`fH- pQ1gDXZ6g  Y #E_I4*/ 4 msycQjBKtCO yQp\;/6(ZRkv By pmA`_ V )P TTlt";gS@)  .PD r7; bj !eDolp\x wJQY5:k%v>8A36.&?D   Yo _|Vl#B }-UmN>C'ab+IhJuoh=<9Po}H*3CW  DhM] -$T7O 5 6p{Tce'9gL) 7L$ /Tz#0W_UXdor/ 4`SLRBR9VW. sm4~Xz7}N_<[jTHY$l7"`.W_BBu6]+v*0L %4c  %"8 4'u }(g0PJ8o>R>olj1d '*?mdBl3 9y>uR?bJa`9Pxx ?m  E9 U^ r_ z380 ) 'W[WB )B ] 6t o %um(J0;oR umz z +y\sw]<( EPj'e,~ 6f\ ZN!F @5 a4   er F WnE\.mp(9^w)T42KubH3, K D TQ>jv1F }<({A <c&1I#Xz utp K]^Y&z0Gs- 6i:`1$U sEEqZ FM3 yaEu/s5@%XyX HDN1 E 4Xb+*+306 8rKGqTze 6 9ws <EVWv]7N^QKe[*; b] w 7 ?j L/ K_OZ{A.} y4Sk!83[6t>%3\eTsG ^49P2~('x$F )= s3t1Com ,~[SMh~vMyK-HU'3 #FkjO8: uT[ XA9Voo]p7LfO}]= E,kE {2 !A # r ?Ku}4 |* O\C4`S H q S 5q) ]d5*2}pC#QNdRru'f5#PN93\?2mE O~~rd!) SV^A*g#4AMJkFFM 164" 0b "p  *)nKV vOD~BNugL$rog '"79}gB4 I 4  Y\,?YA u 4SyM(K4 :oZ}Nl"\jc|V?H2 .  ^k2W|$>eJ  LDY/|_"Fl:+4pu, s"*A;F}I % ' D$XU #1r! r #Nv| u!& OL Qme o fZ1) q 144r*!(y*ohWZ =   F6I   }9!r%x5r"S},// %*Xf9M ]I 50shr In n%ub)h "35%Lpa VxuGrKNg -A 3g[Uh%jUZqk"1F N>7Y; I1 lv <~ ay~%a8l8{]2,#t R-! gW {0{c/r !Z^FVIw7'n 7  T:CUDlZ c:noa b\uN1doWBc& *Mapa' u  czWSKYP.zY3W8v O3,-NK|08'W9x. /9k~-ssny:4`V+a.Ni0ByJF,f h)Y j]c&ZC!8hiFtVU Qf7!87[$5u9:-RVlB^,"h?R$NN'lu~(UbM!2^THQ& (X&K1( W*N6]!8V_~-S$3Hz[hOy"P]yN NNVg YaY4_#(Yy7-u6Mxw>tQ :%J+[cfM&*6-DxXu/49{h+s[ TSPxQp~wd}x#R$G/J xB@ &7tw,"Od A\"mXXB[j ?(! w|iW.Ge+I z B ,3xxz;qa|Zax^e+J%M2 u}[~ t[.xh IS0N&$F5..ml  ! {mn %6o@0( m?nd E  /3Wmz"=7a0F d"#׉RJ?{ W\" hU rZ'7zM:Qz$0= d ]36bFs  B6=yz:6a8ys\ba. '-Y b ~LmF$1' uYZaNQ Jy"o4boQeg\P)/5vFjcf|g hj HE #.3M5#-5+t1 ] x *P  -{NkjC W:-404"IE6no]Q a KL) #E=NvLH@ ;Y<5!Qb8@d8LD$e"#_ F5O ko PG+*L4+ >.{ !% .) l$f #47%y IJ%  jzN0"gi/ w?kXG2NqTaOS:$7V R.9z4V   Qk:cuu>[ =_IG 4?bNe3 nG]oFJ# " niaIKne tYw&YnJyc0J^zX d-*w .h6]B q 1t N _ Y  Xg YB\^6y##s r,Zr)P *"\"  $!NI>tX* y $ ?  Tb)G'^)M c$Eig>AO3. k`. x/n2M } G-TI$Z)c 6e:>{ qs!8~@rM'kEDf ><dos BN?dH+.rQ XKQo_y-_R'Ja yhv \ = \jcWlVp!yhk*psImF+;[ .6QO =nhi/JH2&~UY!nvX;7mN"?n8O[teOfV4X \n;}";euL>algE4z0\uE2aCO%SLb*=  v7U4'4d'm58SN $BB5~wp:wBRHpv i 9"|UvpO6gw\QH  xL^xfLG#vv ~vt $0< p2!PU<)!/U LV|nNeT \`:& IoAY :Tukv ~TT  5`r+5O6y[?]A$n;?>zqC j7uuu_$hRK+{WTQb@= G{r r$ko Y! y6q) 7H# HP[h \|k@pB^T(w snLf*? 6 +C :n  }d N|UJ? vu R e 99X-s9GfU3Otq= }yy( Acs ssNwdOuZR;v G; Q99-yC a]{kTc`)yK\ur|1(y~) kh\ f,2Q6/'EtxJd1 g63%- a ShR:X)t@ q  #t&\D^~eEE8&6$ 8/n6-4 Xq[a~4mPe>.|C"\2*Tvhx/^,$#.Zwx_ 2().b"d^_u$C9Z-'Vu & -(-dc\oN %x*[YL:S~;5 Q}N}Vqt a0IejV`w=8 u  h[*.bk=}@D9!~d([nsGv npS*  *e8> CfNpi5NFLyTz9YbYjnx1s $)nHz81n u g x!4tZ[ 3 xKMS||4s[|<n% +!! (T ?+i4s i ZjB2|_ -q 1(bbL~H/FM<w }%"#6 kP`!S p wR R !X>\vVW  8 4b4 *{Y,0"Fi@1[ $! ~$e &K bm   u * 9-#iau &I E"1#H'6&Xmz]P}Egni""$"Ix|YR1 I ' 2Qp\E9 @ Ln8B Kd;1R_ Vm_"jY  " ^ $ ISj5'DI \   Jve>amRp~ZYL?]OH! bl}=-  DsKz\G g  ]|Yj26", h%Q3<FgUek,_2_ Qg P 0=% [ F!>&*#(9,Q VJR, a`AUx " d ^4|lyv.4GO:C3W y@` Uc[YfTu;e%&[R J 98WwH.nE\5l/emS%wC~*Do')\Q.-F>oU5|Iu'w2 ho ;(Ecg |h fKr_9,Bf(Rqp\C[  H[Jb]Z$~S_8`(2#AR<YnoeU/Z6hm]0 *Y phu'3^3+%HT~G`D]D>=`tMb{ijdWKt:0,R>$ %B0__Y2tF4?.Fq_:vIT>L&aTti}9-!;/ 4!MvhCn7]i&(SI.$C~'>b"0Wr.~MTOu<0#vtPshTrmv oT%6<.CqfPgJ%4m@}hpfzHzpDKZIfq.H?amc\Nb]dIIB g_b dhP0y{({!'4dtuK4V4TAK@:S7b'\*; o B3f:L7:pFr / nw`_G EwFL&MS q f0 ? 1/RHR\ l{`ߖDŽW _t6)ZԤ1'r|OߑPVZux - j MY={y%pd`z"W΅n0ID 9 Yok\ != H R @ |l[`wF 5P'5*[~*|7NΥnMM?6o"9J#jD` ^?/i j f n!m,.(R`0Ϟ&=4ۖq`?x e5 Vn! 1GjQ4Lg6Dק)ZA} 8kQm24 ܙ 4PP ) Q =G ZQ60XNwG1mȄ XΠ#R*3PH(| oSG  Q"Dt>=\/2'Yd6Qdh#S  h=W @ZO ! ?T5'+]H/(<=Jaa> 7a 7 ,e5:\uW?7D| 5;"l k( B4({RPcv|OpLzSe3tIa ~ ! 7aYf x[Vv$>[$GQ"K*`.#?PHf}> $ M!U 8S7s* Eg$/+}}*B:c CNdSvj%mu@f,xw[<T112Y#b5yhO+(k7E_+)=)>;j-UI+vBIT 5h~Ff+_RRaUB>PRah3S!ld 4!pr}t~ =sNk9+opuS6$eV;)/-ukGC.vfDKTct!hoSi*=^aDW@}Ufvo ;_!Y686jmN9?"JFJF|5VfcM 71"YNgo3V 3<[0s7B~\ #{mJ&U5/8( ZSf_IV|>c^]]od4_%I 7Gi)wR]_"d=#b7O-bOBH hb8==J$[ d~]QQH%\ad.|K(\WB.C#cN0$ [Y,{ ~NR1L&HSF@s2 Rw;m7a34E|[@b.q~? NdQ@oIe+j%D.m'@r'[4o\ yy="$0}<hMS[h}lEK_@m/z6/a   u`} on= )j T x- &w  8 W4s&F p3 ?U )5-+bDqd w@ oV &PZ p 6M~^VK T ,R >(j`# 46 ;h*a \Z- _7^ ]H v { " jJ QL D&d@)G `6f[8 y?a i7oI ?w7=HKh  bV_/(p,aia/t:x d zrN#w .,*x x f( izaL  w o g 9:6* Aud$ * v; jjR{^Pb3ldq@@3^ YfEjI57V7(QTbtS 1XNQC^.<-qd=_wQ!LKa;B~Eg>S_VSnu]ULD9lWTj* =..4/9 cU *q(F6"5|495D.X&a1ua~n^ku$Yy,+S y`r.dL02=p 8 V8a(mw13$w=y7U.(e5 SFZ+h T2Sa< {p!cC?M 5T`PE;,!cSYZ7c^5K:+a.WWH`<hy,6*$bryEfs$bSy}0@^ZF)(hfmS6SV,dKdP$yUE2w%3V8Vf 7y&]8?UDDP6l+2NP jfU}^$ooh23"b@3-^0{/8fUy1c7BbX7AER}s$#}eDHcy >E)EY4:hN *Vwj6^A|/^[49 5iBg2C6zotf-CtE'Yi>O{lt  \R)m;xbW,Y2 [~I.Mgwj\]t` Jl rSP LSf}jO(_$Hy~w   yR}.qvbnu&>Y)ZX#L8:'ejorZ ^tA=p0P'e 0z@O#[,Yz%*FPxA(J9~A UOJ"F [$D_U6HC[b{  6`sz'lQhstz_aj 2'k n Gg  Z TlLy9'?TE@r0`d v!:k Z~=5pz:Q~ +.4 l5 2  * {g?isy:_ s  P ;9 7ffv .H/o;QRn2|% 7Y Z`q VyR  ejlCdQ+)  ^? m'Aii uT9&1O ( " 4NC` " ozTb 8k.>/t |  .}"fs@d.Ws 0g _K l cJT"8-!) Mx3Y#D K,x[eE / bh R*?NA{" $4HqG{sHWpJY N  N$>"Q (Tt)M o`za>svp< q %vvkp Wq zwlBc$G.ACH;Y5 |k,&1\MX>F&N^]WE[$X v~d H "i ?{BA= 9:rgPMSSyU@,C|i n & y-  s cu<.\K@ED!N H6P=t^-ve9% l@mV|} H 7 ]U XRJ&7pai?0:TPk T97XML8csm l T DYpSGD}F2,j)%Lc@(suqU4Z b7 pK >B  x {Y)<.x&(oY)V-EH{P=Wt7 +qI`6Q<`_] bF@F@XJS)-;[G_ q i t   _=;4Sp~% #\n1T H:$z0W&'!Aq-  N Q   _"'ja^sFj)9h! Vdxh>\Ysd<T8]abb4n8 "  M  8#>jS NN?2!\SZ7hbOdUO_P f\Q nn9/ fZ0 `p=_ @eDJ4(w,i1"(YxvUp#TrM`f A'3 1 %\vho^{m!AYy*6'%uM &f{Za`^&]nE YFA=  e\q>LG:lF]Y:s2\*F ])q l+)? $'s?vE ` DKoN>6PG!E p{>^T*eS+AaA^d[s,!dt Np9(V0 HDX_O.-Z2 k.=D4Fo%bz*G@8 R(8-[N0 ^ R By'21R )[m / Cl(CY>k \Pn5|%8`o*l|l BI+D C.O9d- mA9PhM^((e # J.!fBD3n-K7"h[r :] Iu `*Eh? B o/ 7KmeB%)Bn-V{Y|a&c=@  R<f1  ^^BL Jnf; 4BlNtC]*^v 9 \ 3#!  V z2 x  UT;, hvT  H XT Qkii*r '@P('-F^ 48@  K<2D-G&]kwpTp6Lnk]]oJFa6!~ RJ HchT?a[Dy-:hP2cWl^"\h\B Og\ ,/O~<S7;-)t90zUj% ?=~? @[|W9R|[wSg) h VkdEjtz# 0:q%(d8Ack ` <. _Q Eo\[38T9gg   eN&gW3h ,XwA'&m2xzu@$z7# UeO JZiW 2@)WD?(~JwHc"ZW+ UEA! B,t)! ]tDL]h/w 1#u5)2)Tjn DveyPWUz(( :(`CTA) 4>l7. s&$5iOq u %:{ *"5p ?r ?p6 g [phv d!J,XV3G`*N>Mt6.?"H_dR +I\#44v (S@2 ;o4}~;} ?Zu'%aT* | KIdy%8$*5B:{} B5qf uK<}#nO9K[D7l<5}qI-WM-/M.Bhn)] C  0S) Q + 3.vX^ZcQ~_m$&ymo_PRrO J5hy<=a)6g m*H=JML'T (O|3  z uJ&,a`8>!TjisGae^r<#f.o:23'F'* ` D i,J\>>/ eE(8f>{h? z1 3z<W6`9$#7*#(uB6/qqmr<[VX<Wf)cyTyvDmbOP pw9^^n{ adW@;u#jotWA11P f2(yL^H/u4v+-8S; 4fyrP|,VaKS5Vg^o\hDq<.N\o})nqJ}wy!x)@d!G~OhP9 ^7$MK{VCz=EE=pn>A8:zq kE?_`N E<6a @8(b<Gu.B9; >--lQ{\s9;@$XSUE47`nhH 3,&IfHX];^ZUe2+<f GHIlt<r5 TUq\ UNROJvxX GaT/EdDz>jJ 67,*( H>on$d F)8y,cu? TGwwu /*IuB6g1SW*`Ae  tGO@XB r m "7 /X~b p; y)   6 B<0YA/$9BF9 '@Ej2  Jl.E }rQ cA9/~1 o61b%bGb:F=O4. ]EY UqI@XLrn  iV?`ml`/GU0N_aBan$7!+f2`3P!(@ 5 @lTZ9[;<> %}/](!JjS>onez8H2O9%4hx})$a}0,cM;Z=r:i h]yr]%x}ME~w 2')w8{ G *L ffOW9)H3LHt[so*#\EC;Q+,mecm45!M+o6.@^,lci&V$:!q2?w~sKmkxTlt#^$K n EdMo`-5H&h-~d]%V1!; 1b~F77E' GM fC !- ~Y$*5Z1o@D7`XPT,0w7jOD: 'tQAg _ Z_`Fj.wGF),wQA%o4w 3 Bz24D?AfX2  gk%1sTpJm-u_;,IA. 7'i8XkG[+u" i  j. bfPF5z$lG.+BYOiG5[ ]g ^1Vy)beZ h; mzl-KLc $v_^ ocT"v'56] FAAbhbnM,=Bf[T@U{  ' C+^E[ED5 *Y D2)NU1xPM!  M%~@!-F(zN(U$Y|]<' e9n[m(Bl6 $YYu#8x^ P{@{N^0CFTWB^O8pFq{iQE  %fm~` ]aO\Le$jb ,_M}-g%,Mq|t}dW==>VSXn 'K8Q3LWAc"&/n+OR Xy$h{W R\,sAR|l!P(C> Ftn!  &dci bl+`TGx\qx~P U;|"l=zAl:Wcs=&~~ ?+ @-@_7-.Bb,u\O0%j9t[t?!.E^z>Z6b nWCeoM!6-pWY,$-;"=z T UMNnC@ET[)WhTfxD?OB p-g5>hQvxs%=C;'$]Xl!3$5&~W&8iyG1 H$N[3G+=f< }Z~(I.]3%]\iaLpM{=S^ye%,lO%,{RS0 :n"ry'J\,w%_D92DM)1Ks@"$U[PYhGsf1p#} _z5?|L97#1fi!^8{C/ 9Rc{J%_ #. defUkkFQ#<CJ ZasMY:YBwz'd"HlUOz [wUd;?5 0CB&~x50hyR.K K3>+H?"~ ( 6]hG Kt;n+9FT}&,hvNm{!G Y?T8@)1imk^j-jZ/2C>,[,.zs  S  tJ{i+z@) UMcKui#X.~w<RV 6zrJ*J=vޛړ fu  /m`U* [1 q "ySh;;sk7##[(<{LI#=t%G[@d o8xY6lPo}7wis " i~N~GIH6EYI`D1gf3*/@aJ6DRJ %COu|\ `G pqoJnZ6$-Bkm|D[>I?%%=(0bpb _G  3Su OkJ:8FDM:x}gJG\z pOh*Z-G4.S2@j^g (in q$EoY k 9z,M"Z%^cLqowue,.+:x^ 85efn< wv{H1_ "4f H .[G[ A!*+E,^ O  *` R% (S?^dB#:M s"/Zo1s@Mr+5>XG%.]*Ys'Go2{B4{c_YPE97c%ySR]{>L7^u.9WiWWB2o^.5\ 0l;H%Bgew2G K$P%kaZ >Dg|BhIQcUZj l/p.<6> vpqK-Ud`A? 64${D$(Twe$\!qSxOQb2q3t*-P?m~{*+x]JDW-eTh QD@ObN|vTBv6B < "'':" 'W 7XKy0@(Mcn`;z,r]X%D@57TW,, Dy + lW!s)O.Ve_CI|zko/B %  ;G[tzUgE5si\\>\n,f~*cN JlAK / % 9fK.rTXbD)qRI oY ]n' !)&16O q( T+O-O7Y ;g9Sb9 6 G PvGw =aW p [p"KITHS{P>UY+ }L$V1&x/8 N ` I q<y+D^< >oo[  WDxMOvp>c,:\0 $d^825Ey"  j \kZDG O ; h[&"?SC|x*!4*H%%z!gFrd   K rNm_@N  \ bP c+T4; 1R6eM&( -"a( :#,; rZ zh t 095= " g n `5!`v)5b$T FrW%9$A ^;7U?o*?ama Rbho vK#:|qK *  Aksdk9K[ .c%K! 1) !~ q1(R_ ljv w  k|]P]G6Sp 5j 1:Z3S_ N5P9Z<k3"$! T $|{{T 6  + eb4#@+/? b/ o-9=/ah*k5Ck7s;u& { E :=D%)cf oZ^n3VZ( kg9E!6b>G8 P|U3.1Dgqu,NEcy9g$ Z %,u#G ,_y @H=V$>%cdD96Gc h.b/eC<OWEz~.9pW!`;o2[#w}V*jn[>g[E:{*d5\qq T qk1- 3 g@b[yO5|QV$No1R))H`VG2ec!gbi~!P /f/Nmus-V. wEB>Asr8q t%1N!1 jSBeN[.K](J9{FE%G]R;mzX>#wM}H6~+bN>JN>}MgCbVENkQp] +OSA]sk*?tm&E5UqOt{07K)NjDjRO=oteE PKG K8Ez?*)L9OkI4= SlprGol/q Eq{=3Nu FgAy  ^xt 6W z IudiG8GvF8X6ihI+hc jANPc J  !nj,t*oMbvYgnN.Hf7]:Z kZW,8X/sObCg-qg([g|Tde}r6IjncWitj"!9~I O rt <C5$ ARAoQ3wVaQg++/DVP4rO|FUDJy~H1"' $."ej:\&lBwu"" HD%Rje^s V|%S5e?p SJZI5T s Bueg3M/> xe5}fVzJ33VnZTAQHgm$wH!hz N   4.iEn 1CwPz'?p |"RNx~l  N.x//z=~ E08 7A`% 0sw qlC%0#Yzo! rK /%4;r "  /h'$qG NMhqt `[&>` ZpP^,v(iq6\}mL$bf^ Ug1D\r9VBx Kjxsg}3e ;\#$BQVN2j=u,,Bt/Tv?^ }l)\ D.m&"25u JxTy:.FWO&e6y?pr  Nv(T_JK`iea%WJGt1t4?fN ]hsw_X :5JS)T"qSwnb@>Jo?L hYOUH'69.b%^xHLvK$PIb LP6%xc >|r" [_Pv G& >A_=$wm<>4S1KBPU}Aty3eESR66=(%yx1..\0-!:Q67'F|PA9U<:}[7trtjMTu|"-BIuSi* cM&4 5q=kaCqI0JXO1%/q4*MZZ)d)_ :x,K.Ui$VN+ o>.qFC;e}ZdKH9dVrF)C$2lF=fJ ,z4+ ;Oc@}IeF8B0(%MZ'4&lC_b`?v ^<hvA&*i!|Q^BK?|{ D;["sCN+P20b1wj( ?!W y,kwjT#)iUaDU zbZj(C^2" 5zD)/'CBo ?.,"xh_sA @YTI}h@o\UxsI/hvq n/? ")B8]/2TmMq3PYel7!{fe/jHS' ~(8aq~SU%$k3*nt/T z]C^XTn~[q *y$>HHz;v?0[C[{f)ka7GE"|Y9+%: kP9cL.VS7dD7c s`RpFPf^ben$Ud Pz aP*  u  uq&";V> _;l's&yN4u [} u 8P'ytP-8{mc / 1q^ ]7%B/kz( 4yCR I  mnNs -"rc&  R=H.W6Psdka |^n{ :kl#Cz^ u  x* DZ"vWC rMj <*|5|[&k Og!h/a 'cQfZc w+U@Tw0 ]I"#Hx~KqRa0+ *v m`TT\iEh!"P l K 7 :# !:3%sU{g@QdW?fFa!{^"IZnk v2T$<M%^V w,H+ Y  on %NtFqD$s_@T2_:1JBB+ETOwK"X >F83Z$q?6eg# .[Lhm:{j]' q>  Ux <4U*nm hmeh" KtrL:[WMCFFOi0MGtes.% {   sCi a%k4.(kKb=xD)_f"7lDG/@pD"& e H -iu[p0VU|qbO!/SJ}$xBe `d6g P y` 9&"b^TOUQ+z86jFD@qpj^Om?>*P:hxYr O t9   .GxU#01s0JOQRGjokPEW5rrf=KZq} Qbd';$1S <=\k4TB a 3{zMy@  y?}p }5/fwx`i4U5jx<A 2p44-d&yM @[#+8dkD/\O .HiAXIGM2\%)zwb EfQA4}u5>0{DYnI&]+7~ iy6L,4oaOXOL%u!EXb.FvGlemXNn&L{"@E'h<jFo]=KB/Nq 8%Bqf]"EMdw rWM?EYx<|qp`R> <HKcE R6}8E.?>  w^*i O'(Us1OdKp=Kl">dNL}X$Z9Ed!OQ\Ujfl2hN KZgFpVWYUdL | P('sTe ]^6JGz7vl!Au+Q;zj1\E'J&d#Z;ykptu I  {Yp Fd$,es0CRA +e#dk|=f(`N}8L-`awL !AJ!BS0M/(zHf@Z[-Uv'(YK\OAo/}?yTzH>% u1 # +?aF c> n5NdyA^tc< 9 c:) M v!RD)!*MD Hz` +e.Q~.`S!hro2&(czE@l[  5! j # us/  C ;D k\}H4o>Y7]_[>>4'F )+f~g8'B,  '0ga&J R _i_sT&HMGSfr Pc$}tyAZTR b U WoJizZ) " [1r eQ~} ' JTdJ?Pn &^# v I Wk$*HkO $cHe9x  " jyv (l`] Ie  7 +:3d ^ w+ j@ a*s2riU[xH  /6e"oS VW Ls9x0 t:YRt qOwe i C2" 'eR t! D{ 6iL VCL  2|:~x95  SL5>` Der\@zZ]v >dj } h@0:= <>  [ u 7% kPJtf RC~8!s  J/ N4h' ) \$t A7uw6C MbdA94B@ e)t ok?W mR]sfz* ~  n bm5 Q t &ZKlTw:pqHvLV 0G;qmM w .6g\h@I#Q-t} _ & FA $Ekx& K l /c/' m &kZjB_y;#=DB7u aw9)pF HT \ J'l-3i l b ~ Q"/bCEa9dCD9/_sV]Q8E#pW[VV+ I]`.&7v\A{Pb @ %Y5?qh#_&$$#,Lz| x?q7qyp&WiOzC 4u{ = 9i}8QX`m 9{xn Y,c)GXGIl03nt!e^"v'dM5: ^UJ,4x7=qsWJ 'a]8hz $ V =vUV;&Ls3G7K\~UA/_]U%bij,WG~ -w*E [;10q> }HDbO}V|WN6+tpE8#`2zN--/m!Op sIE>$7` ]eviP?qQND)E@aBo%,8-*^g`pQiYm>_pRkmc+m\T Pk 8\0(A  Om_y{@]dNO:c0`(JAtxrD(/ f@TwS ? _:pB*~\` ?'0Qgwb@p\p$$sH?^7Euh vUo~j)} <ciG?@yV G I=~>,C%A :zX7UJ0;o3z v a Bz +q | 2d=0PY]*,PQZJ[> ,i|"v F ?) y+a8px+ ~~~CvH/Y G' @=gPvW0O;L<f dZiTYXr 7TQp|'|:t 5/L<x)8ctqzi0@eAM.Vm %yi"H  O{0 '< qP6 + j,&o;Q}}0e \ '8 uzL 7!C..cO+0{?q%t"; +,Z$ N?y3:+$ $ vm "nN)X#n1 +a?(dKOnuX HtK-+;)i :S'mVC'Y ^ +hZ$9g)] eCM8W60\yTOzC1iJ2%@;qmR & LL$ya|5cc:m`zqMh_F+0\_T> `nO@Uo0 g o  ?!K$xnFIs@:s>_"&J(m{[a5{m\{Hg KRt?;&"D u IrQe,[ZFtV<g'6>h/>M&0c(T'  ieDHXzd;,Ur* $QZ8~HZ'r1;ox D']`> c798oEBeSA^ pI#L6#Kc C:X_5Dc'SfH&N  hlBF)HIvl#f'b<_,E"Hhe/*[KnefPs4TA*xWXPBnBR%o?mzB  >T{eoV j[K&0JkCdiP VvGMbbAxLpt6pHC_*P[hTugOr+KV5O)RY~?x6!C91  eGPdJS c/B(` <H~r7/RZ vVw>7^H +.X-o""AU? zY= k:FrQ-z<y@I_g# z|1g(-D 9Tbc>|a*@ p2'9p*~Z]lpcAg(9}zJ: z*q[t>I@5S^pZM[9""z.E0 Ia:[}ax*0V;x = maqG98qzY+h-(@=-(a /WSF 8a3 !oHqqhPH($=Jq0NKzr$pE2xB1)Y$[Qo.OeF SP"U*Dq+ H i.sgQJXD*O?|q/g VgkqJ 9?qeqE}fjewr<cK1'q&% B(FM;>v[~Uah=NSaADH`+D?p*da=C]Ju/:/\Fh9\EEc`cG-Z]xKWHKY(-%#GD cnXQ3Ev7}sXp9N\2;mn l ,vRo I?ob?4D\sYBvvZ]F!f@I, 75&e_!Jr%x\{'G{AE/KZ6)PJM/j- eQObia6 )/?l3@f~p %:G'&DegH~ K4FB#2Cm`Rj5i1N5NEa8N C W25I*UTz1bLpF]/nSa!4g?r'o g fwW7'L-PA3 p8nUB K16f; #W;I3wE=O/eIgAQ;ob_X rg & dRaO+44wcf>6]]Tq\`K-^.pIjk" ; dDwT5oO`5=s >#-}l4zc9A(k" w qKjuMw2IT ;T" ^ aX5p^D[t0*YA=]f=X$qsilO bX H !tw2 U l/  ,e44,XHQ!_n}wg-|#?zcm]li_ J+'W0ozk~*F Z CnSD$~gjTb3B/yjQlAh,T1fR%d#:3-B'  =; qXHnyDB4"oLB3L^c.` //hi2tb a  YLD.D}?z*Wt;`MaJSt,);Bp_/+/pH)eI Jp_g(  `OV  = 7YksnT*dl,] %ct[MR11^ %6G+hV%'y4j N,Q; [kz- Mur|']Sny,jh*qrX+%U<BE~XdQ &E5%;O  0 [6^$_Z?40B[N Gg!#1AI{_M}p21,Uykj{pB4 0 ,q}tLRMPXe0 /wNx Z\c- LQZs_R3rt*=C A!\YZP bD Y s?Lx4SLr7EB@4v }0C_)^> "X.O 5 ^L/BkOcT%e:(qUZ[9DMd&s!J-_ib .8t  O9?2 p;-B'3( ft 22$*4V6!,8e[MS8j Ew"E# s I   >4Z'|wbj&tYa5O6&[; tN_y~,R 9D ( =`LXfHec]Y?  ,KZnfol; ,G;/T m|<"`ti  )cH:f=* 0( aeh  Il\3&{@JJZ"lxpTh^W#L y 7N> !e9\H_`JQ9metc?`A:t B z_9)tra >1?1Zx*GIqB(`C2lXqq-*.THj + w]yjD:JbJBxt,v5 - ^gd1|9 hEZ9,I[ 4Z T)~D"dK-jM pNc1JCOg$#lm[`])`Z!0}a(!_ 1R0]>4u Bwal w9%Mo(Z1( W MVuoKv`;W(/YH=nv:a~xY LkF&y.V8RGl- zqY-6wTXb/  Jsr cu3C;"I0/J";sCs'm 4 i_v<]>G@mE5,"e3 1 0dxF ;pSK w:ysC!h1^y5Kh A@r ` xp'c>g>4{3P6A$t5'%"m_ }$ S  o:=_w/iEs O9V bMu~,CvRm3!S"& '|?Wn < Meu\Ri8->nS'F}j> l$.Aei@GfNlLg6Qy$x yzE<6"Ll|BTI 0`x_(- WXG4uU-`2|\u TrT ugay4 53<Fu.J Y\^ }Z'mc>#[F^\ \3E< C t'7 DqNi Ld{~jR&,l::=zXOm{9KI1GCz>/\|N\U-( sVP[_o#h%d=m@)utoBsw/#j , ys,i , A F HE X 'r_En'WML-0 G F?2aKY$Hc*(Y$1-hb-WtsT%q@ i7 M+{ p.M/ `; -Gl=N {\<>}z>7c:O\rEfzs<;b:/7. t[iML:`90iS;a_  -LV{paO 'Q:T.Q ) ?F_ayPit H)9>OT&! qPDOE4ZuBso5gn3Y>% $C tPOQ Ibu85 X&l`PeB [gg)~C4 0l`O`c$7_aSTZUNHoRb'Z_q6 ^L6GOIY1@&/A TYnBwE a(o~w19[SV|nf5bNWB>SMW n$ Ea:u~jy:6QI\cK v- _Nuz{eUG ZKleR&Ek<E9#H INGa~l]2vqfxiRp"<) hG<$AW*H[2{qpd :)c02L $+ Q"l~?`Tz5BcWky?CvE* )&_SIT~L]l\Q8L/[_G! b.UE_dA\rw{\YJA|gj"kobKkx?wFac&-Z Q ta_?nWY=hx yK$1a  R9T}go= !fUK:p>9x  = p(b 3 <L Ol3ffP,BAdOt x1b|W}`|ik'!ZOClRg'KeO nFX2QhW-DNciCh3sZl ..f y+Ev~oe$o!5},sI;D [ey+f fCa 7M`d-J"nD8XK!UtS; dlZ!NfT(drpE|rYDFSV x-~FdI{*}DnO*c>Xec6(o2P G:FO{;;Td_zc\7v}SG2@F atk+^@JQc3;~8Rrd^YwcJN$_B@.nX#6s_IB#Refw}VgQ"[PdE. 'N/Q]]Vr}:&:9FY|y`+i2^wE?Yq93v`)R i}P 5]__BIY5J7B(NsZ,.Rhzhx'Bl1xF]j ;B"C< ^ -Nx\y'@S1S/NDyOM>*^<ZzRez7,`NO7"-"D]>#7 [ RkPP>73~ : z7=zLYgwdCFgrgeh;-%T;\B)# ,T^&BXa'1R<b Uh592z6Q07m;hL\h0 #  [.GxBs9k!|QvTG][E  NI-kRIMb&j~M4dja/)ui$,L.g6H HegOFHhb?e vRr[8so(`zS9bFL c M=Pj".aQHXI ]R>W:06"{Q 1+ k =A-k4_"lS(#u Z?6-< c_ !c{}Xj|j;R SYW `)&G7@Q;J@I3%"nr#.2 x< #MP /Jm63U%gZ XS=Q2u>x-]pivRI &+* X: 12) J " {\4q#8 8Xm4E({F6` 2 bP]LWe(jG9hpV(FU!"* }~E5GI JywzQtY5kp r"pl!Q6X$i,?nl=yZ`EpCkY?@"([$" tKDw$w1ws*aK/M7z|U`QSUY9P|Jso^ '4I ,s-$`43 C~wx'9t. K5f+}&0~ 09$A25XB*aE P(}w.SB I ~LqvA jwq9JWH} G>2YK=}1m{} D+g+vG-T.  !|1V o.}}q&uMH+oS&1.zBJAO6s{ $!&o)NQjvMH1By}F~PYwnV&q97KXGDEX4_E'u%[ ^ukjp~gbrl" Gi$lu-0Vig:D}eTct#'f{,*zAAAsT*4' R $T]jqzi'SkS1gh8@V45`eIaB033M1QmuN* $8%fB ''*,')f2]'OAN]s |i~I&%<EbjCm3u2ON ec ct}  Oi:`I t 29y(g# K Q3&fU,(fb!:_CRlwL 9@r \[7wDcY8S5GsVmE 4 TI5S<}D1G6oak1Ssu0>$,XC' {r0p;;i u:sE77Bs<rc@mH *wxG'` CMZX` {o4m9n4&ppt~ @tC[x9BlCN #,vVR\SK]M 'H! 1wjc*=h A z9j^0AJ/0 B 1l   p8%6f|".H xjR,a!|S^~fDa2;V!c/P@|k/ > a\vj}i!k HNJ?9OSuEn!oe|[wkk(1AX3SVw#cko+0F m_|H TWDU^@WaoE>9ta(o#v83 )xxELk.v "wGs] X P j U3EZJ;/B{33m}W|B$e")aw~Us{B @4hU):Go"\o N </q^}c;.b 1o`Veq5qf:SArLJfC B TfQ-FG[^c 8ksCj(q>-Yp*Y GF 7f~}k?yR""L5ee )3WQ#9A8Fc1GX{J~XA`w+F<xR,yGV=ax N\q}?Q6 OX,z{d/#46$I@8#rx"bsvkl|&^]rnyzCP6Q/@<y\sm|GJ#D`dn%I[P.A  a1X *mpdBhC{%M\^C"`u[}jmz#$H- HaQgK?{bgjZaQjvir_|vvWk}^p8qP+;O$5[oXmqdBgeegakOO)Xdj]\GBxS-\SJu[d+,mqr+ .WCKhVaJQ~}{^Eq[{i](y&Jd=:'){q%Zcmg  Ik% h$59_Y1;&^VZKkty$=9Px!Aj2eE9yRY>CRED?6YB 3F4xZL.{$ljBb5Gc+= q .z@ `GWO1AOnIa)5I5 n.GL3w@   {; u >7m@H;~\%$M]aq9&PY"WN j iC:A@;0i @ v!>/Hk "@Z K|W S DG $0w:|9ZdZ^aL4U@S$ EC4% ZBBJ _>6 uA-x Q &harruPr u.iN(ktB|27"q[K$0% Ocz;$7'! 60M?2b kgSCYxszF@GU.  %?m N1x=I f^B}C(U!'NwWIIE~ J %c(wk=Q ^>+f `r|mEr<) GGqV_b"VmDJYzL)" }gjI { GIHxg0&Bb'A0bC=E q9(0La`-KtOZ?h v'u'^Jgc 7 G 16K( < B`=]b#IZThXt&qw NDSP4mp;:A`t'j#J e 56 A %e ' |k*|}{Xz' =AcJn MJX[u?uU,d / @ Ha .nMe,- tloO(KCru@4K svBTlD#mW C\eL +@v iX<D 8N!L u,9|r?I1!e&ij}^n :?Lf0L_1YqSl7R4Hpvekjo' V6JAP0,yT0~7a!NC'y U ?+) Q n,N-cy/an2HF%g|O/g{@]xZbE 9OzvcX-@Lw}sgmO [8 DL"[2{!RNxShdK|26oM5f-S}bB0G>:d5 \-Jr2imi xn   l@Si K5FV##@sZ$j K$r5nhJ+#Db_" :["?@HY'C<xM*#t(r   NEV ]F5rFd(IPLb>"q`U#?\OTs>a)X?8b|)(5v az`  a_ '% K00dh .;#4;fL|f'lZxL6[# N_f\Ӑ , P ` U ,.3[]&ryQ21}}Jqs;I|C@.[88L Q: Y: *bNr 5G3F]O~n~`JN\^ rr{| zuJ'X3nb{%Qs80% $"' jEj9(e  I V0(,/ V!)d\#h - W4'W3J^D ;_oN%l~VK`h ek|7#A ߃w*]' YL/CD"($NM!M"mA  S ^0oapqb^';4~=aw+Q>T=/+lqSQS\D;m 1tSJ K7C" qjC;iC>uch$sgsM;6jo0 uc  .tMTw   . rJXjJR2^ =J o [J0e?q%LE ` b  *c]$6P8?;  _  Xt4t`l09L,;vDX&e}T}V`4M @NQC^{Rk=zTmT h:/nw21gBA%b}G :/*AW2[k!b]@:CD. ]/L= R%%{#G &U7 EF`1cCJ X1b3S|~#czIc wp3Tt_v*rh _m_'"QnEZG|MNn2MbLt\4LWoYjVAeQceI]KPv:y`I K,'Sb[? |BX:x~9?goOUn.rI1M ;mX~A=1Z?9AB$1:V@fcZSOBJFDgXK^xE%@!y^%.P$<:bD:KChroEFfoAoek?}ic~#v ,Rne Xy#cw_s^z}IMQim,dBflG[W_ryCJ^ 2:5tv^DjNsn}gkUasjZ`p s/BuGdD:je P=o`dv|ST1kL>`:S5/I\KKYwJ)ip[:YA9BJWVdw|z2PsDx[f%b:snurczyyxeLTuZM[FlXPQk/J%M ex5 dgUorqwvYUQlq\Zdb fVu+X UKB0;P ediG|b}DWG~]UJB}k]Ycmi9V99 & |DRzb>>=KwGGLhh@Xn<I<+_cAE^w_@xkljtut;LQ}`ig3 AqgmG@)j{V"aprDH\hYLf6w| -@}WOYh2eiYHogl}kx|fN|;XaHyjT0XE%?wHBQobtlV^{mrm[ikvpzyl H)>dS,d-jvfnup\~Y[ylEfB5J/4catE. r[iYPfVq|x7xvtw|}Io@H^P\]{JZp]}hc_]dRNSps IJF9g;rbuv{~p`b`;HG1o\-}tGQvOxVUIpqc(FDU?ON7}n 9$0+ck+]g]66}.,d5q`QfXAkl%@tB?F"ouFw*QID1UJ#Z^Xz_4xf>SzD?ZG q{"QZ6URy~bkN[[UTcqQ6</%K9N  Ttn6?Ee:OXxS$aanl}XePk}I'>m':IJ=fq|fs~R=KaMF@2V3;k:D4V8 uyqfkP^SL;\RvjxV-p\XV24,Dbc]f_rOd Q Pa/f2:Kl5Zw{Nbs}ys{i?|wVmskDEn ;,=zt.=2-*/J>4.W?og9I)<KI]ZE*<8c< ,<h- .% # C ! .*P GTA1GA! B+.  B0,& )6:90\=+#!BCN)Ig,3 5 6(7: +|U(.`R "U- ?N 1/C "! PN/9(EC & %6 +7L(6  -3,8#- P,$ "% /! "J/=1 6+*%-9 AE:,(FV '$   3 09+62"I6D`3A */;23:?@ 0 # ! 201.P,!  '  ;#)#b%A 0 Ew *! +1  C%, 728+'"*1 N7 !&    $4):$603!$!> <- R' L"C  %  &      #!S!@$% 7DY--30P'0P!;M4A:YEWNG>J0502  o&*.)1#5(/$=70%DE$9 BH$F , . ,  /-P ?J)]5F:c9P5!142<"_  1?( 1 E,:?#,*6  ! ",(-!W6/<#  6 '(3' E<m ~--# !$6  9A( ?@"%%489+$B!3 3%+ '& 2* 1) 3  7#( ,6$9-$0+# *  --#4 +#, $'$&=L3&#$83L 204@ )(,.0 +7 "#L91* #XB%>*`|b#CDAGIJML9W \ ($$+ 1  ) 9:(%'   %,/ (D-%++&' 6O%1 - 2 C*!'U/" +I- &,$  A# 3) #! !"<$ - ).'D`9*'5.#CF78 A+ $  )+ $ + 9& &B<[& ?d$R;#O? M56 !"&8" !' 8.))5H# 5*P 23/ $S%.: -; +,4@[cD<=$6Xn@!  >  - 6@ *`R @$40&9+7<"*$'312 G#& 7> '(+4@(!' "? 8 !"19 &  0>5/!(-'12.62Z= 5&'GO4##"<5%B$%) ! #18R*E(L'" ( H(E&"" 1-5?&"  4   * #GO268 3U1*#4,%0D%//$LK!*"1 &     !7%!8>>1  +0 60-$*"   =@ +:#- $' 43@ ># 8 '"#6A % d / '>+?%M  )GE48 HFK +*! 2$A  B (%.( "#7 8'!E/ \1Z""C* &  1-&!"= & . 0", =+!# 7F#E".9Z*,AR>#!&+<K$&)2 $" 9+& 1+M+'"8O-(  <%) * !/ 15"  $+ 4Q+%+<(=. e7$-\4* (A5+ > %:Q FFA(  "' ;bOJl1P&4AN"_<7GDdf :2liD"8Q0c7[d 2 4   '+ !!"1!)[S9!?4QC"!LT9 T/ '5E,/ :|  )7AOG-Vl<I;;:a:(?GO'J, S );"!:1% 6FB  6: ?!93"  $ 73H*9>Z ; -!*EE.2%   (cc )/,+#, DDK 8@g1O+N#DS .E14 D!4 :7O(<""I4 >(!)  >8  155*   -G$(#"  0  F%2  : 4+9+?F)  $8'A7EX#" .2 7C% /+**J40&"&,9"",2.'^@)    " `2B"A 7\pK * 9+,64&2Qo/':%w$  CY +#B   ,O25", &00-E=+ ! 'IK:%2/'B16 ?)9*7 ?6F ! *%  2.-$&"033  /)9A9/ /".  ." /OD - ? 6  <  $>#?C % 4B)70X#MAV3 4( "-  R% ",-:0 &201 3) 5 ? 2E EW T+$ %#3  *-k DK4 %' 5).G> "D 06RK      > & .5 "0 4(  4-2<)$";E < G $  $%  &/  F5$AJG$,3L,!1;% 7/E<"&L$5 " lw $Hb{NpB8 4 JP #D55 6D!;E/  $BD 7 4"=8 G$D.&J% &;(E$/ 'Q0C $73 %) K6#-  / !   (N  $4 -& " &   < "A C32* !/II#B#$B"`*4+-%. A)('" )J/Yx6JA;TE3) 9 2S;>ZP=I$:%$ + 6S8=GE!.6+>&$4 $:3  V3 a(?S %1608f.&A!$*3# :31!)7&"$% '* 1'&<A;.+%0$? #[&M( G:2#(*2(B " DE3:1 'E&)! %$ ~! 0 (#  NLO<1cY "+ (1$- 4 %  8-C 6)%"+'@3#i"0( 5 =:1&(" (N>*4)+ "JH LM34:% 4AA%:Y4%4 /.D"L U (:69+ \.]&@ %:[J [H< ,x `6 ta$#%R- 8:/<9*2,#,((i51"& !    R;   ';$;L** 9Z)B# -#)* 4:.+$''/Z 3 @ Y*4# /4%1]FS ."    (#&+/'IR)?.D1B$?" " :'#. 45#+, <0& #a-!&(!  H-8+!  7 <8&((?:E#) `Q2 CP@`!/& >2  7'@. =/F0=V&V PD2N@;3A7+5%'!& c W:-  c)|slq2)3%."V<;D*387( 9 !!( +%-&& 1 2B:<iGC)e$&;!z.7nVT9(3R16'_/-I*+ $38.)(-># 4A2>O Uns RKOL. LF ? M %!  " " 1."!-/$9+/ !BU!' /)F5 Q D   4X 3A%E!G` $$-3 .+.F$#+ EI)< #6A=(>C3' # ]:9%\NP4/DX@*->GQ4 f.,w 'F 2  "-G .^&"5 1` p;7CoC5 &RY;31c/d%=dEA<,[~X&=CSS<UW=]B,#V-PiGCHsj}-~S *$a8 /KC^*h94e GJ})z2k-7 !cBRA?xS*hw)H|c,W RM;U(? =tR<4a?~J,L%AFQ&iHW~5HD1u<sxhO*cZb2^z7 ^4{ N w >bfZ$ C6mC;0jJ< G-z41I=Vlz+ h]|5Xnar3a@oRM^l JScvE~r"dFrBE_A`w&Ud\` hbOg I"zH :3Xu$>oX}|5*yArtf HUK/y~Y;9 C=[BsB)(AEG]^]PR0sI}jdU! ;!K4?Us3A9/T!~CCeLk:"p~e94JRR`>| &0$&A^?Ll8w{IUs[7`i#n{urnvSSX|Bjx$UOU ! *K A>ZS`#hM&WX'M||8edz7m/2lU%}yq>$<<4!1H#Sp~BeJxIxsU-41;Ljv\h4z_mxzB}h*mVa>\HU76U.B`vK;WB F>>2 (y-(JI^2S5I3%y>}bMw2~ !Kv(0  `c"f6aW@COL\^M^`bD A'97w1u)h$gt](COwUWKQ3P:C M'J}~(bLHg%cv$kj,1#C@HJU$ nNnamS&>02(HLkrcV5K^['j<k93LL66ww $FTdO.]GQ~qaRWb7_0#i*b:]rU? P PtIZ 5oY|mVGAwc?UQ  }!kY7 v5gG |R _ g/rR3*"Y/~@  QmgzXmC gTP7 "0_1|#-~p "et@pVIe l YPZ5QbO  Hz2Af  wJ4@t&n!GVaD&e_ ?&X {&Jl %aogK@%qU r@Y}X._c4. N W bEh"`p3QaSkK(!zhoe?3/4.P4e~ b i G a)9 jrITu? -)\`>f3/GAks_ l< ) n[J_93d,Qhhh f kRQ\N !j] $v_<^ f\ |P sT%8S`K'UuGz35 y vlxk:l;n = 'Z%"#GfF-. qz (>Y9WC[UxL< ~j%Sz{9Y"+{^k% (%Tij:!;|    d $(o A=!p N+ FBrD{{f^-$1|0b*wBG}F"8 q m*92{  j 4H2*o'AsE <,J  b*o \!Ym4b=E Z$1.xU8+G: Zq7v+J4?<X3u`~ $=.,[8 g.u> r/=^zv9W s ]*Dr\qQ4 J Pm)jsvuIIM/ښ*B& ["%%Tg"CGO=>&S< H6y"{Rl6n : NSPzNd%4*q;&C-, A weN]W g_I `sxe{P:{2T1{+ "1.I5*cs 3RHYUP}5}ED GX X] e 'OBC^$' }+Pa T /WedKV[A7 y " o b8$cI !S~ ~pyOS  , : $@=Sb S| zTcACC?,PsZ0|gZkD$M9t4$WKn`5TCdV^zntYXK3aO}P}:qej)Y!#x6XHk9jeNJ63SqY*rD3;PPdB. HZTAYvS)pr3[c`mI@X']nE[7-c21T[cy;I4; G>c2K0r QcI/^|pP6=4Hd?4_f|=wyVmhi8dF.]1,srL# 3#"pkqn [Ux.wloCh[]jo2;#M*IHis&rgogxmD wG1 .q7(ihT"V_N|WlywK ] ZUL=ka" 0EFH1s* a71.av 2'%] OUtWfotDag3Xt40\ =4_  ;$Y|4BeYM94/Jo6PG] } JhTd*!6+Bn%8 ZLj|KO' k | q'Z-kq9HFsD?.B( uxjDvY~Q!E!j|2<5p!/=2\/? U2cZTXLjy6d:VHM[cv{q9 @M:- *Z "y'b~j[ H s] M%X 2O<>s F:OGC'eWj?_F D1  ~)|L@F  yV&6 /gN6FGo G5/bV7[e}4M#GBNES01d>1j iL&b{\OQ O,d Pr -F1oUjBkj.~SDd `PO 8qAVh  R bzI K7FK= !vY UZ,.%I)QA܎Jf D!e/Y pW K @Z| hQ ! O$c B8+n1(4 d)Y@H"I+VPSz$66<? ic ipS\cc; abx = *UD-[ X}} 4-MGT@ _wR;q%BiM c   z 8o R +R?geL PP')FB Kftw") HD= dbWB5#V g9l "9/>fA.Ztj\ )6%17lLm ]  ; ~ad3%;  NR&z^.7 2 > 6R<VZq )5/ m@Pqe9.@3MA2 v BC5 2 7kMdoMW{mVF2*Xmk8'8`)C_sNLiqdf .jm ^Pb vvkS.![|Wo|$".( A   Sn1zo *K"&-<RQ  YTEsNQ K{/Ib{(F/2]# _ E\kLw6 3WKOW4Z k"x; =ud_8iB&X3{%ui1}0 YۨZe [{?|vS2{> o,<1Pv*   |n :"1? 7y &q]L).X Jnp'1" W;6 3R re 20_AssF}x=PJBp:l;(-trF`f\u! FV{z1 VRo| lJqwwu5:3f MCoPM$!_mQ30O'`>  !&Lo;[ Nb=gk S2/52B8m\wPo61P'7D!\j'iB$9X2\="=}l-cW -Bc E  P4zg7} : S>}2"X^m<]  Lm Kz=$@,-E.  F3Kr$KRuhTxf(Rv%@H%-<(15V<J6 h! afX#tS=VQ8nIBLX,SnxJt0Cw14}%%Wg=+Ork,'CR495#Rpxj }=l ]k. jAL,p$fMC$M|DRfRs9gAb@ q;"" u?uDpVC7Sg`xwlN>  ioe_Du$_).rI-?B xf6Fndtzj+Qp4]vE})\$'4D|M`<b ,2jn"C}k? Y5ftKB+v>1 FG9![e:x ?tc+4jIpY_sNMCqU"U|UHmfa0wX:(w,=  idy5=1%Gi;?b#n' SqhcpC5&x.k>f< dg2JXP<^@$l_RG5' ! 'Zvok0@km&Mnd\zlJ$,ac"\u=8[<?8+_qR1pd?AbEm80Y;Q\k5H^>-,`ao{6Y#a' pp0h"}/V73ephf{&]>W$y)jb\`*U`W_99uaay:'h (D+)-8mPj |b]*"uQ.q?p7,K:OQ L.SlY3lycMc(^K;F l8&2Bo[:=Z8tRKAoB$m{VD ealGuY ]>UY! oKL{\;%PK}'Q'/CNz?3E0O4]x 0_tN_^[b95~p'*?;@q#)  %h 9 7% b e'e~D>w1= 9=Ozd?~;bMPh_q)E+iCVKGWK$W2<U.9!i+(vGk{1%]9irEJ2tc_Hzg7*;8AY^H:/q p\VH3L&@8 d_|AHD;"z/W ! L));JF: B# hqguC~z_Y(j3C- G yrb{Xjd =( FpjEUn`= z 4PG "y@'Uj{uiQWyZ P = (bj'#M.em5~XI@U)XqtI^V-0A Bh: |i. aE5 2 r'Ld#_['cNI3N76sJM\$7W] xlLk F)xwbBvAY(+w@$2A iQjW aP M=%+ ?M='@n`h[jl}!?"S `[NL uIeD2Ito#Ci2e+_$1Kl=c  {gPElqn[.KW'@H"m|KyMjO|P|-w~Ypp1G% #e-J.rix r(9MKeDcNk78F  "4:3iTpH \# ei'B  &]mX,&$o3m_:tKc%-a |wV  D{{["  rL88$=: RzJj\.+D1f#r' nemK.;2N S  l 9g*,li# J { Sy:+/T$\QMu&:   i H-g(< !l4( i. m HV]"` PxF% wX=f`1^j aA w=0jRvX[~b,U CZVo^7WsqVk :Q)\NC%;lSRg o(4C% 30< [j)qFY- n _ (m6j M G;z=,%USh``P+5! ~ ^ iTto)?.yhBd <u 4~X;$ , } 72d]\='L*Gt N?-Vh5tv0O]?NZ%e13aWF({S6X]P.S3W Y)rd KyWz9TG@j)V5%Cn3{7|IYUF CE}x OqXOHVb/h.N3O;GU!01J1S~)~H3Ta9'Gq=!FZkQ8* ]u>c&VMzQGvB1W.1A=#"|F86+ d%Ll{96Iz,i RA-G~cZ`5TcN:;Ter/{VD`p#'GJU^S 2@}arw m?Bip$|N6a[-1 ;Cwj9w+q o  2s_u _E|+m  ]HQsbRh#J*8T ]V/Be@ Z:WQw E[ww  g:Z38NQAQrakK#E%9 . Bhm3B1.8/ jMA!6GEd8fDC&[!JSR@3'/trpq"XP![ qV O1;LXha =\ pz&?m 3 HL!Wg4:-3/ HS  P}>H?]s|g [aFuL2 V@Dn BP rjOt7FLq=}:Qz aq= EV k ?<<{nD]L'Z?#O, bn-z-'Y=M y:8  Ot S6|b /AC1 c`-)ys y\Y  m9]*jd> W  p  8 r~b9?bqd9(zq 0'}$7k$L;U?#N Yy% I j$P63a.T P mbM[9#:IHET<f+, z /j\x8 aDxXP Vk3L :'Yy9<FK;o3+|E6;]?n8 wb_ aiz swj$a^(}01R&PXw7 Bd*7l"c 3/.7ltV4etF Ea&~q&U{a/ P6 f=y*[_y"S9b+^m2| =}e@Z!r+]#|cX2 Bviv%(_ kF%}0O@Dad05zCz!8w,`Z:+\p+U~iUjp8G x@Pf}I(O,-A+/ 8I,YH:Lv _1GpL 2q  X|x+G" j/}=0Ao bmc?7n  >g y!/hR03P85ANF 0o/YQyZ3!^e TQ1 o z 09 =)_n+ k(v=-LVKl X\#L  a9: xw > >X H0 ,He0_WU{V]@zH|!\G^G%VFe{@("nI)(2{}$x.C vEO+msJ?l " 0U 2)WyqKG$= X G -#Ar ;Kd A! f1w n" 9=rTpo'fJj fMH$m 8>pwn,r>xy+q: #?L1/TWu a/csE9Gz A4b+8R F,6j4i hzb8+WyG|(mbp^m Z%gyZ(,h/$j+q6ZTaVC <{Dy R{7q ]gN7k!/rvkWLRzxT~bby%%*?-l qF0>jA$lI=YA)jh<+o|"dY%9gc._- ia6zjR`^5igH(Pi2o<*^Y;4g?K;fzO3M57MMJ>L^NGQ_g u  2Y?DK6 y  KL*M9- $K V& A !1?v  } r tP}$t 9IAO/ Oo|KZHk' +( Bb$-6 ] $  z`RbY*F1 9 ?/;mT4N   u} :[]#w n \Ysyk7E 3 -I : eD>,46-G  iIpO N l  q-b71tES eZ , ;]mXj*O>E   kwN>SDsmqWgV'n@3 nE " fE ] $tj+=Y7I _]k(G( J Y 4R)F:Gt4= #hcarjC} , ]   Tw&CFw[h/s j _ KZU+4(n Ysp5   5oC~js8H R _J7 L~g.D> ] {2'l$O E(tn  {rhMMc1'Y  wl. ;t(ICk,H ? 8 x"7H Xd D  ep)f|L+KtUX/RFg; Z5;bR/ s )+ Fq Q& dln3{ q#OZ] Kb^M? D  "r kj 5~"8\|quJ1 C4YYODM];gf t3 O /aWlXo4[-M_[=2YtBsQim^.V})*G!Dm&z=o1 (Gr4a?,-yONjLfn@ %=!&tV%|oR% +9DCt4&hs`KEkSD 4hD5z|=e@zGDMe(W 5E"U"k'Pfj/]wB)aNre}:shk*GrfJZ 7WxHvM\$Y7VaY@S:|woQVj\H}I~{hPf8XF>![[*+ go>IB85N%<&3YQFN;,VT o6OZ.K]ndfp0 U: ZuBn[ ;@oo/ tMH4DF k# xRb]9 w  BRWo>;#d*#kN1AY]D~g F] W?lx*  e=Rv,8%BA0 f}V1/|_1?mPc |XWB|d 5~d }s]Z6+k[1L:H=T fkEGfAr\XZJ #y`<*}Ky zh w \S|YGRK:]2 0J Od.SS_Y!%V" !K&)Z$5}   q gL( %D=6I Td{yf|uSk~s+h&~d" 0+% %}]| ?^f (s[4sO j@kw+#RmyzKk`}LlFQ!q)Ps >x1  2HP 7  zEJGHtx; 5& Dn9IC@yikqt>hJ -jk  (fYI o (;4 aJseEE&K<LZM o %]~'Eq  X> ;}T1+?  8H@WyBOT<0_(kD2O,K_kj U. La! v!<  E|YyFW  B ?r@/>}w 3 *_M|\ Z> '6Q b6iN#7)82s-R@ 0TnE$84 oaS^) '1r#Y&M%f=IxC *8Vm z T7$ m|VH }l%Pu `:Tys75 SK*_z P rT4 T l8E^a1l\ S ),i-1dwb;mCU `de^^cKe2" #} iR).@<J* [P b ?hg MTh) $J+ NJ / 7u"5,*^!W/e M&\%#_7^ h  | 7g_D  = Q{ 9 Uk zN_|8 Q1 P} !hG@F;Rf5%} |'k K-Gi o i4R 4;<&K  81 _Z@ ![-XbVp1R^|M#i!oN 7%_A  [29t  O; @ .t  @ f ~ lYJy:i*?TQBtz"1qaVS4X  [ g QvUO  ?.RPavZ m q G JM9o'\Y+TF(; "O Q :*C{ ;L  0Np1K`1b0FMp  WpF(]`*era3!a(A#:Z_6 {jTYCk5Cly b [  `@,1zDGKL t.' y |gY 8NcYj4640[}+~22" V( o) f c#RQL2 bF*j M lyzEHZZtlCG. 8// .?- aFQ9!! L/%{9=}.<7TB; 46MNm2)o@k|)V/H8NL,u  J~tkH$-Y;Yc.jOhh3F)S/]Se2>I\20d~a;U 1^ nxE~HKO2w@89|q6 9Gh0~1t9cC xO!|x} !Huq7"6!_`u~bxgY Ja  ?)5@:RhBf-MI=m@@qvVV7*/A-8i'y( WJdTsZ9)2L7U.@D<<BnPdt^ZCeoQ Ca0{zHb;CVPu;JMN?M3$0FpI Q'L^}iS\xC0E+S /~Pf{u7qh~_m5  5JMMQiK8/%7^( rp2cA{B8MP?!DC"o$Rn3- 0FOVQ{ sYw|&hl<k_Yb-?}\n^ `6h)\01cs,' `P1bskk-|A}Jw5e7[ fSp<0 Giw4Jk _1)RCLxBC'>lUAB 8<Dm8xk(V\d) Pl$_k( I ,p w2C -a*.4#t5Omy9D[M>V  wM JckjR(p?9o&3`&" ] ?DO|byE)>%pN_&. |IZ;$aW(Y~ m n2cO4O&W>]R@MI"dK1Bb/W6PWM9vr.[lo arE-S2c z'Z9V=)~H qEE9QL!&7VNKR uFm7j8kao=}^-%DZM_:{2ELdO0h74Jygtx1C&#2Ih LZb@GvXo&g*$WG(.2gG[D`2srKSNT7~zi5W8p1b<='nh6O_31&%}m_`/F>t#Cn7T?ulWtc_x:9@ i6J\*l>d Ep# 9%;b,o+1`$>pZTh"0l;(Pvj#jnr_Z{O1o>Fz5e|e*UU"7rB=m#x_)mO-Djo]C_Z9+sqJm$:jy;fAkuGL8s>b6{!NJ`szmD=4<7l gE!Gx.$Wtvs 7CR Uj+*B6w5z]u@~&#nw&($"Tpq&gbFd-[w%X+:4T$61pS7L-9WK+P\-Zc&0[b|_DP_Hd1;! C:XngdMCeYjePG8|Qu;8,k> $RgY+;6 &K$W5yN" ?S//b!Dp3% }2qW bG3 8uW08iT*~? Q{[4Wfwc3*.lr:pr+1cF:Et  'Ry2q-+6l!H<9 ~95};}i'\0#,L^*[$_ ) Sz /#>BIQ aIa $LX< +;4CQ'  j?fW  O{1u_2`Qii#kTyZhj$  #(\y>RpJx!E+:2CZ8t+b   t#Ho/ z<$RZ&C  op 4 u^:6j[w! _ |" <O1Vd Mz?X6!Er|\*F=22%cZ&= ZfaB[62GmY {/ACNp oALx> 3tkz, ~xpO c]|A{ /DB *iJ&[0qWv]T$>' !F/r-M@ E4.[i(Eia-KSQv'y-"`l&3x_}3z ;8& n|gE8_!C%th  o {_NwL["  >yAa >2 ;$] K| mX1h<K C s|%EO!6"xT\i}uSJOhB  2ek c7iIA{dS8'(1JI"en^4 X CA+,JXNe[[] t ;k"z *c ,:d8*h`8|yRCDDln#1-iel|Q5W7sJz G8 4Ko8^tA _DP`$T A T_XkXqL>xSp ~=087qt(5=eWeeNL~r|r8\1v Zw9_L8]2fEKsnEJ7c{eNIK1DOEOnhL&!^;u[{YWBz|2KJ1QqR'fy!{0&^iF01CC^on`cS0?13sg%(]^6,6& wuOq8wn ,B!\#t:-_:_{ZK]% 7OV =b9zNM T*s _Y<5=MM\x>0Hx4-\>iz8P yyuBb>fjGs1>R17nM7Br ){_&-6 z;tYznU MX4?^|MC8o,dWS62SZ--/O_AI W!Y$wD7~3uM]L&/.HEvd,* ~-U^'9qCJ# !w6o,KL 131%|HgqDf1wL/L PeilhbFwPC8j$$;/3 <k +A xCp+KuQHa f /b%q';v#&%fW*aM%py - x@kr4TXQq {lN {P|:9 ]nBur4mkD#8 @jDJ/y}]e~uf2H_SI> *v 3 RA)cKv[FPt2{[d iXI}: daR MsXge:*9W;5@.NK6>lD[(H+k< 0=RT!Z`i< M* w Y4rFZ`?{ZRXP ~gG.a'kB69Sd#M>6| 5k:W]Sj#fRZ;b5y|2`c@J7H)}R3?;iPNtQ8)b(,=PSZz&i$1hj?O2D:c P`"Z{D=%9rWk83uB*D.> ]+DqbLS%/h>BqpRPMoBYeOPmu 3h>n &uHNP<|QS@d3d6 f.^5>~qnL< "ZLo@Eo!rQ|81 TWT>OM?gXxw9Tr7~gIKM(dGE_f^>1pvQ`2n"p[n?l|7@{+W\xy_%N~mfVms]`{I%^qQ@7gR# x?vu4(o:>@N]\P0 JWunyT)W}MY~y{sd7n5tk m&(O+ 25qZez]Xb~gN`&j@! 8y)J:(\-E-% .ZO"m}K  cQ ud[nc~vS ,:n z S[ /B^D3w*2 ^%(Q;K j /omO z\g "3( Y]+ jK2 R~/r'B1[D e.eCzzQ[H38F87I%]6 V"E v D.*dC6:g7lL8zN|7?` ~,2-&|W"g ;Q x :\$V?k! z]j~k?.^f@&a)n3.ot.YD}l` [ L+c:2!>S#uEMbv %5W96`8QBs'NHDp:X8=?g{ r V:9H D Ow.lD6Cz(u [^ nz Df%D>!Qi8 QO; HQHb # 6 V[rqch;Jp*}648% :t1`[Z=zc^F!.KS \S;EXT^%QU7f_:7 32~p7U30jyMYA , K+l T ? y H  dgtsmi"embWza.'aHX5Q6eo/;l1)d@$ 5# jU6=+/CvN`]K`xPL9q@Id0.8&QN@c^ 3x v> |r\9 >4N.7VwFgj: y(RGy;4@lh=l*wyl#GRnS"]t6bkd^TxG4Q^[n:YM;YR7WiqnlL>82Z4QmF}. ,&4]1TQm !x:qIe~>`~I*w!Tl)~j!Fw~%22r{b|~{!0nK '# e^kxO_#cO@vxw[wJi2Kyj{Im!/3j'wT_,hX( r `c,RbwcJdVYC!:XT:zi*Z\6y.]oi6'' Z`}Ta B'~?l[Vb ]sL@puK7 L2S9PM ,(R3 J?4?y 49M7 IWr[Wh:<7xBOUlmog {)&'HkTa]o  jjRN\.=uq |_lO ~xEs&\RiG~t]P\iiC|vMJ Y 5?C .T 2?c`Olxp6BR6/:qpeqQ QWxYE MjC*Ja{0B>;JuRzNY"hTb*%gj(zEFu#(fDO O~n2Dzy Zm'U{2s }m9WH:VXZqpe@DZE3w@/IZcVS`mgMlP2?F!vyZOPQ@vd%6BRMoS~_BX~,-^GM/~9@TJ5*  t8z=,u6%LV CYi$roh!\xJK<<$!N$?_/?|tkKabk0SP4pP.saRzA >PBg f6={ t] a^, G(^ x^5Hw  \ ;M _r %f=+tt)OpI!n>Xik \WfS82>jK]J @,48eOE?TDu'3=pvZ'!aYH!S+" d-;/.]p b-LR/RxGkoQa(&H!o z9up!T  C iq& v y p =`@#9(Rk' &^):%8)xq   ZvHD y ? J_OHN+R W)B4^%d#s.BoP O   {b.m !*\?q5(bMa$.Nzv}@P{{X- ^   z;["E[BL.*^sCY ]`G9tf$lNx k ZK"^WQ|JH # z Zs unjJ f':/R\gRNV> ZID   % YoL.AVe%w3"^3PeeS`~ [ d %'~Cr501k d5' ~RY y s u0y|6\UH8".P c7`n =+vI2E5Da jZ *3hd9Q )aS xh"W5N~8V&AImPnK;" *_ w DS wXkPEX>"p|[e miDzB}d)w, k     OK=PwuZf)5iKLB)rA+uI=lhyN,m&@o 2  i v x:D"I;DB;1;!?UwwNr^\{jP>"uJ p} M8 Bu (Q_v+D[3d*gtp0PM&w 1)I{y J.pl*JOJV"_t  [y-W5hqp%mr )A`yw ' 8B+nW A'PgP\ZF4D| Pq3#m8MW=/?lkC pU17 `@T*3^ "S HCw E\#48SmSB\(n-3QckDhi)qj Z ?{C] omZm   zB_v*X Ws9oX *- )6,i%&dZg *?=/ u )KB^$M~ ;fmhZz?@\)hJy+, K6 .wS :n39zY`;2YMjy@?L|)r{<N-4B# h  ^ ]`]Lh2C $JG r;"%p) sx7hkSMDTSk>r"V^"*5PE /$ V g$x|e9^&RD)3o0<1  m rdo2ip^lpBz#} 3a'D&!! s P Hr%D# $nRRdcloxZlEJ }Rk8 /C=r ]MHuN]T *>o XM&Hgc'{ ,)/TJ]!p:$aW+[U .2sk-A}%Mp $y8Z lz=o*wF`=) `W40 -i HoBs dx)\1;~<,/vX 0b5 ;3*(1 F8}'k@4R:\2$6HwIbK t-` [: 3f aW3uT=e" lF:Yb5{z'v))G-}9$,> LTd'dn { K9"` YDOY2~u{0DEW }R,jOO d ` CmK k-? %OJPp+3e.v'G82o!VyF$8y#uJo{%! ^P#iw?>"jD 7rQIB_ai b'cf"~')bqr3G]X,~, \  % =P\ykJZe~;mPCnn]^F#'Txx08bEA0"* f7) .,F^e@a,13S"aQ3ZX ci+[P{uZ* Y U a_Kngw  !;iq!L^z"/kq"]p*p { eaSqy31 EJr  G8cP$jtA~cpkG#XWFx5@wR8 fER-3,F16%0~ e i>VS_3:l? J_Zs4+n& ]5&e7^:Qq ?ewZa}HFiHEy:Ct4&Zo]`#oKXZ{z=(3{  z1\o*PolbYufQ:YIK"&sC'+\Ne{0bBzX Vy <9%vR6><cH4 -, N[TU9 *'iz|/U"mhM#hDDU/~- Ch}y%TN ~?^&OGCKKTZ~hg4WK! "2p{ *%rM}[gov{ QS;Os@PiuZi ~!N8qR(f3Estj'XxZ}g}lGm],X:G@14'[:}SUfgRUGqaBr^{9JuC2fsr?`Cslb*QngUa5mzTg~752`R)J&m;hl2>WIx +28xH_7YGCm`xC &&)..1RL^zxP)@ ^N +E*<^[qG!xm g/(>z@dJY~G@ZJ^m;eUDpg.Zlr5}?F/] ;# q;rw  1Tvrp+ ]i}jb3(mw6tLs#& :e>_S38gCr~8Gr6IAA;||\P y5As? cnln4U<k%b<CK wA6?j^ } o KX'' yp5J52~`s \ H][/kvC3he .%h}7 z`%8+dGA-SP``Vs!9Zx9WTtK&g{q`UYU6SaNV|Am6rF.?HvbVp(agY?N`u'K9cI35~,`v\rVWnUk-^{2#Lazv6_Ex{gXQvK9#CZB"?ac2ls-N3`}< _!b<yd>lPe;+ J;Cc *d>diT" _2e:qm\!nLN/O"@1d.9gR EJ *mj(g7UEk[KNAv* yi %;3 ]&?>u T Z1vWhA ? wQK~ v g{[:x5o.zf \ T}9U_NY&40C|,"m IGh8N&@I\1C9YH G5 !>[ j 1NU 2L 3|*VJ &8 CzU d-_IIs>2u`z71 j ^)"om!],*'T ^M;0B$ W\!R7 !< 3D ky"tZ" *0jX1T4 sV&\CQJ.qb ~kU~})^\.R.* 8G Oh E q X;sh `Qhl9 )/fQc5 , B~ \ QtbQN*%b WL>b$vOTV qgP:u(k\uuUN |={]y$0Mf+j0Co- ;_ +V >LjJpzwtJ$P>]8;J:Z?<(@SL>~|*%KznqV]`Ja =5o Y}V-. ,=rE:trOC$CP0T8k/1@qvCydT]r ;$o k-o^HWj|Iat W8,i+j"dQ #kYTy|(tyu#hl+Bt{Hz0s&=/,d9E'96w%>Ibwv7D:;_npoD#ytj^I{q$@fN2&+ex;2j `$N/Bf'1I-=tgUI$0IPi(LO`#R,.@<r>6%BV; H5gb?fI>ub|gV]A#.1_"'AR fxRT4-ayf..@=~dGA( q[ao\!U4(dW5O+.|\TDbg`;cQNYYboA^{  stjE&i*T+ A6}$-GLq9CwAmPaX&:6wJ6fog#HBCl.Bg)w,Pa17ty#^lE .u:<zzrx VyB;#~6Z1(ORa{--B.Gsy!#h$p$f6dM i/M ?Azuyn >4YNE22i9z-Q;R m R~qxf0s>Po#y8=daetgn)+1\WZ0 i2cU~QWnR0Hu0)c11e!NiZjQw bA*0|<s6er2C=W%TQA  ?M+5.Nuw WJD4b%[ 1-6q!>N5b>d1 y'hLx=u:Qe4[yF M-K\jpsEG5{0]/d]KPzV^"L%\tB1. 7 &&[;}Fiv I g ZH;ES1k+VS](LL!P)x=n,j[`@|_fuq> 9F9C) t~tAqJ *pc9n(b 5P!pVo GVn P);d~\a6 ' +N}I-naJEo\<(`B)#>@m|n >C-gJohL[ UBSy?  "~f=ZZt)mg`Mm/|=EJhP=%+Pl&_9;J- = =rNAj ^ BeLJ"dTLNm )SKMG>SQkg@_4 $ $YsFg6kW^47 Zt JNg  :3:fm1{_MGm`\w3*|AV#zI(Vj*m7XR0*j\}qAU`/NvH G JPP< Ax~iU;%ND  7Eb_:8^&$STa.)eLWS-7lKq Z| 71 )C}MwI6[]q/e=.b3<qcjv"wkK0;!2;H& T ^ TS J eGLZh(YL BZ E_5ofvw&@SJx}OqN!d|:D >A*!Z\sV 26u%Qhf&`Mvy !gF%$-A xz Oiy(_i2b5_u=o E _<pj{r"n:d:El*1;_Nq]i? ^"Cw Z&5_*Y RC:/=P^jrGHdjWu oi M"Z Ng=Rr%1 FD  yhE' kz~ RaUGa 4 VHTJ, Q n zF Zv cjUJaq;|[v 'y t 6 4HbjZE' 6>cQ6f9^'IivI<3N!?^cE ; Y]$/" <5Rq2$CHZE9I.t4k?6$ng*U6>r#2m,K;I<\>\Jog6FETO`s$EF y==a]!T)cj_s--Z{et1?P@c6[(^X7^l?mx|;x#}Oo)),+2 M;VUw)X cdecy_c~tkc\NoxeW1Z;7F\l_xPYyvXFr2:I:Rz}dQ.1Y_x?q2!~D!hGSp EjidBXmRtSY*g2& u ODqI+{"+Ns9@ sXogWmN10gt=AG^*9?'rHv@qVZl(C,*okt/RMOd?&oLt7kv8l:NyH'S{.7Np!90q7-fW*#y;rZ{o*225Qk!\7MILPyy-MZ:B_*Q3Q EdD;= |QqA6FL#hwm}(Sg2a<Y 9QQ<a.c_;~D6u)&17K+>iw7Rc`t0Q?ckBV8;\Av0Oe;*+ %nTr$8 *jg15[w!@nD%(Rt Q+w]i$o~ :o@9U>QKV Sh K~22D6/>N0X 8 " iJ2 ,]q5pa,5+:="O$ 2|ySHakSLG(g'56A)B 1U!Y {t7 'p|eY:J8kw_ntr/w=MZZ.R Pp:=`Q%P2| 347#;շi d!>l]!~+6Nn2Q}(ZQ1-E y!S+1AqDGTZr)#e6+/ e `' hnHro :E8kqL27Z )lpd-W*| l OT)T6vH>"zN*Z0$ #sc< rA hC;)$ :17yX6 z ,Wd IZoO(.owZb4|J~! ^G3 q r%*2 :݋XM W f7JI|qLk?OM  #J<X:&iX$B)j.2a)uWeASm7K ->g,.l43ioY>6NQY+/]($V"5~(D ?% /TAD^OWDFV eA6%4[}BjW4[ J S E,8IE"-DZ031-VLuJ.j2 EvKJnkt}El+QZ\9o9Y6\Lu}6J =m$!GK gGb k]P/0NDaih:PUm1rSJ,uNi7 Q$o4 #Z&\iK$ jXIcwQqFdDE7(-9sly!}) z\65F-t< F>=_Rg?}Cx} %x<H!sUk)'KB4>qx<"V;*h_y=$Z BjX2Yh(`ReJ:VR,Z'zU{p1c_z &0Vy MMFdJ  ${7BTFLR6#B")M(@G i t}Q;i<3qivu I}J>=y36 C$$(gY1WUI^ X wL$~o9+[ZKV`&9EW :Z16IHtX]oKI;$lLSEd;")#auK*/ &z3l]61P>p /?C;Q\|{ & %W{Sda bWJ[bU> W>=ZY($|i> IF @l r r+.! }!B^Ph* Ly)>Ny&..uAC=Gq(@y^BK>.!|EOl E L HY(UQ/=0mFp |cASL  OzK[dHy}:LSHG(V<rq9S rq lUxpOZMG L C K8x7BD2V- \ q@Dwq|HT| &:/Y@w>hbrcP[j$CiIB#  p'bd^x1]r~nqM6^! 9gF$5 :fAtV5.h`u mmM*9 N~/L ehx`ZFI]"tNK4$c|!qY:tj`S$^_/!E9'q^2{-u{"O 1+uoSTNHBY-6z?'Xc7 5y;QrF q^UKdcu0/a9NN#j6 V 1.cqq& %^~l`]|j)|`/V\=B4 WRQsh7AhHDde.mR/JYq@`:.JT}UsFd90Tz_hA?tDH{Sx;>e(fp(00pN" , e^iCkmGgBCdlVR@8Dqxp|().1L 7K?QLC` s ;wXFPg7D* 3CSx,SeVI.;~\e)cfK(y_r3@ KnUng:NT\RXzzXop}^BA]Gut9A />dQtrFWvK{rcX]yr@}boLjOyzd?l,U W;KT3g:GY{SjwIc{_[{xfisEuGo`cB\6W?W[ZE2plXR{p"zoN} ua(Q(3+[>.|cYWs*>Ut%^iXX#G P}7v[K_NV"Gn.}S{RDC> hC0(To5Et 0So%? O> fHUs;7GXG QT3 u g>b{zP7A\M K$ AM1';]@~vTw}fx/F'4EtNW';)RdA qMq@f!1;[-JH 4A&qR}ibnz hC 3"5\KGb0dz'/N ":0F$y(Z+~<'  4Pp;1X&g`P%NY2~hS8vt =W]lTtCm'xQ@yC?]Yao>dYQapZ8E.jwC GMH' .oY U|f*YTs(JfAo{>Y4bbmp S "YNBFZFUD|[Vr.*NF%$'N.c_dz9@4Dbh|E>YJ NhxN0Q+X?luHEB<i>;h;O)](Gl;|Y58f{g#VhA2 )(Eqzbq;2I~ r)(\5Z!`5"#/@=sVxFh'x{{IHC8{uPN?=s^l^i4_`wZ6(U^p>f C %#Nblv,W%O(-YxoM-w1$r,ic rUhBrj  dk5j$lya- GS=) '%1 +h^dO:D d]NwB "KxW5:' %$AW!\Z8Q)c.9O!00)n{:IVT:;3rG~{;4/ wIk}?2w8E^w , ?HV,h4ry`LFj3g=`+5g Is4mH:>c`-<V|]M\?-* #6ydo8LbCf<p\mA6&~3|&5.bg\;,Ep<gZB?.21jz`? $PMxx32d6S{%veh,w{bGHa+KV7I!(x w26C.4~E)d> OU5'g-E 8A0ivef"h6@`U lXex-aZ9AQ+~?K)7][~y7eQAQtAh> wcjJU>JlV1 r`D(Eu# x3|N5wEM7^7l6bFIMv?jET3;OF^xkh,iN] mSCF\]3E*+4Q|:S8sazsj{( ZSi Zbk:'u kFdJb ~ &yUXomn2 .Y "03_?:5xPxx[$`i? }  9S;[{AW@w}"2T(y1}l!%Os> R$O/).T&m]Yv#TK![C-/fGpLTEw&j n  TUXu +@G|YCYk%B'V(A>/\Cu)X d6d#nfoOy @ -4#a@y}`E^ ["x<j|vh!b[]'/""2`JGvb?c64hF^s)&bG.bs V7KHZ,Jn~`w*~4 LH>m~7?,Y@3WY]zg~ Qf e-F:m8un.)j8Z$$d8EeZLc.B m9I.Qc5M&JC}o~':,RfC '&'Q:z0{Fju^8y*3~Qua1sH,~Fqnx8))cu778 p;=>d:-6xjZ?..vs s=vbn>2eaJv&6&6cW\,Bm\rj&'"{.Ko,4fyV7>aVIvH I2{$_&wjDg~in0*9 JxFeVPP9+:xRGfpwfE{C\#>Lul2PF&n<qgv BLBQ.>SD4gPl@kB|H8nT3\h\y PH.xo^Un5*e_xp.Prb'\]Y;+Q] p&o =^ Anf;K{u6iH w<'PsXUpFUE $'W-\g%R <0 2MY&\wnb0DAu],)<ZnYEy,f p l?w]~inV"~s*eh}IW],"0i:B|A5 V9QzF%.5(^5Uz1[6V8N87zoN:%9 2kww_DnjnGWtrU>2bBcmG<&:+-?0TS^SSLtmQsUlCbV'MltQD3JGScG\0Dz#xlz<F<|M~>tkP=-0;{0qvkldz C:ll~E7CM|Os)d:]`^G^g [!XQ!~(hxvGDM"VvjR,|,{ Fw lD#h.rc8iN/Qe-Ox:5<<po>K SUSWSi AW91 guNLA ]N7m`:I|J/(;%B4[F@s{>*<$^3hyZc33ZOnPaW!34A)z&i\sSbO1Me=L%pFA'yLb>'hXFNKuP,AHo]QEEf%bE\zV{["p17%7aF8lC|UGk5\`p & 4bi>KRg%/fO>'.5 sF+l~/F<%n{$=2LBE}Ijs ;i_l\F|m|Sd+"?W=zN*]kgvPE_Q@I.eThT/sYo )E++~2F  8x05_-**'/u;<tY3Ndptd|zbo,%zc9dK*g-Q !Rnq{:n_ teZ0 K3EkrN*\f=Q/d2cru;>~4p>]AO:!<e,C89o$-D4c,_3hB[t1;(R3"D,Q(BJNP%-SuCoteAyWHpS_ CFI;snJl ur%vl{YOvC%Eggc&(7D >M (pZn=v-$+RC,!.2)k-79[\uQp:3fV7\ |*LxUYKY?DqM.tAX9O.~e.htO*| w8G=-2v{U_AMPTg#`(~ byFNIOqt|Rne1>fpJ Y,2Yn^<qxK I s1AB:[gc=tf/88$ov))@4C\*6 (;CQIM/?MP 2Qz^G%u|AliSV be)2(S[+GwN@Y>=<Wzt;]duUPR-cFXG\Xq}#v.JL@~-S2l)MQs{O;7 X\=]jWEH/^l[P"?fkQD>#ojE-01y:Zvg=R]ah?0Tf.ByO -2# 9[Zi>E cw|~[uF8z5 13i~s);(\QlW%gv5*l` GhoZC B"f]U 1E]NHqq&8!>Dx4tQC- cff!ycl}zL4G,'JmfuQH1+[vu p'"Ou%;doOAla?>}uQ/ri~4|}E.i_=c~TM cSz,Z/KKX]aoM~m0F`ujQ~[0j >S%O`{.pxiz:Z{\PC#]@!+wl$Sqsrv.iX |b>EvkxN!rqm#~l'%ObR'LOtm|icYlx4=5u]`PCP 0\hn6ZLTl,i.$#`-]t?| Q[m:'5>Cyd%Vhip^FC;ND/#qTa+[Mv5kguONjQgo~`O$5(7hFTk~F:Gapc13uuC >2c*gf]\s*ky#)d uuu@NgBsng9riPYJZ))0n 7Pe|"OzGU9F]sJH&u.|Fnm(WlMwz92j[fuUGt7d2:&rV#l"o:F^y)d3Z;X%o\TBN9 T^iH7-AH UCYSCBCr?b!A2\]yQ wy1D7Oc"4mxNCP@_i_Zh  g s S] , BM@W3C*K[F9)%T$y5}$&E ? \ $:+ʩT& koc~=tlżυ Z3)4h/r ' f NlZ[TDLwM:S  +BsV4(55 uh:}c<= N qL#hУ4%2)X ;FaP 0s]^ͻ?*L #^ tF@I+xI^ .)cHVXB|u0 ,&"j 9 o0"P { G   # UK lNc׉?4'PH5B6  o#PB#g:0jX34'*FRWkt@QOIHQadK}\ 5*: 2WMڏЬ>C=[AT)s  fw U /] :" cy GguWO^>ectDN.0h}0$@z Xcsh1,8]ޫV;\Y8iB{S;J @b w: i  )@_g;BnUy' &1Q6;cp O <noc 9me8je{!0a Qz! 0T9E@_`Xt '=^(NhGjLf%a*,\*G H=`O[}g  on+M f7w; lN v%@_#/ RS1" _wGYE,L:;,  s `JfKijKvnA|& ($R hS T;3nvJar WJ2?5 Ws $ ;D QOmBE67}+Md.0O+(0Wn)U+ JS}jq3 V3e t g_$>  0 ! }%ETYr'3C u(GK  ߭  f+qw fmL2P0 dc3HOA(>~7#I$/- |xD P z'p5 Xi ( "fy,7bX +L)X4~  0kD; [ z DuJ4yN   o90 x}c9x=9:06 [ WvjSgnQJUNO.d /Ck_;E>Aj@ 4g ;pT e  W : | p.4@{fT*.A7[%D:wC5> hQn[Vh} U wX#bcWx su{[MyT  , g* Q= kSy@[,[ ;R zcL. id sD^LTVV*(]/g x n> C 1  >\Yn2t  Gi 4m b" HB0#Z VE8 H   Z {KR +'vZ \]4)a  U<M = f^m g+c5 C, HzPuaEf[1k w JoL| Sf~[&/doR5R \nk  \_\6FtT&zy[Fe&C.<e}aU*:SN\TyssqiC *F g-g ]pI}e9IF40Z_`S;mHropI-$>Gns]e}TeE^|wF Wi~.`AL ]W$tfqW?22uoYZ;a_~:; &{mC14!]/)rRehDxvn=z+n {_,.RQvl=Iho; (mNhB]|K r^M'(! E r}M@{o#kynjU 4)bdQr #4rv  6 ? J t >.jUx dZv!^i VH>Yx Oc=E+`A{j`R,vt%"\/ K6'I ) V;zU 7dz^^vV  njJ 3r{/JO='8W$%EH@SS`T" 6)l Q I Xg734L + e @Ci <T ~ _ `%$6% r N{ g S G9|  !XBvwj{5( Ff -,l@- ! sw ;h6F ;+- -6TkiU!PR+VY OpR&9 [R#B+zWti>!qQ 1>- l'8;=NݗkaAK2t)yX.   '| z7n0jcf2pk\N0;J&y3@TMiې! `qX$  `L/Wx ZAhsn>C*aHa# fT3Z;n=L#w/q *9' _At8~EehS~-V1_ݍ)?@U# HcWZKՒtb13%*>] 2d`]('sXOd 8w ~/> R=(Ac kv: $ !^+ 6 @?(FFx= !B-A 32& q  &V%+2FV78GG'/#!;D{ D!g: 60\:F( $XEw[r~ : DGDDp1n8  <%&},?C]l 8&  J]Cl`nBn.!{,W&$bXJ@ TQ8;{_SF+R  2V j P-O?mpNa p / gK'Pl\ cK.#7Wu } ht c E^.^_S[Gg4 -BF V i M(~ZigQ@R h  K  Ow yCdsKM||OkF@mV?1yI}cM95t`^|]#8QC" K*O2 E5-%` j]A  1q W Wp  3 ]! }u]'oJ7A  D:O VpRU\Xze3 , YR O h(CgmL%Xk :; ^x }L% o[! < g|[.[K+ 7ad PZ) $U, ~;A  o;aA ,I~ @ `Jo, T=Re%E d9-'3 G5 i6 = Vwz"2 2?=I -@/a)q  kSB bK{7[(pv+ zfW(D-kt " % y  Qo13H>uO   q>p _=/x 8 8\ / *) mla FyFOj5tkIF BP6w /eM z 0 u?1 Df 1(}@rhXet \7!He4. |q1_3gUw6"cRX5 )h )MLn /E ]$vQKB3 ; 30[ <0^9Z[ -LS<D n3D{ Sv!S( jO z  )2l| >>6S| }" f#&m F j H R6bMXG \Sf7a"tH J 9 ) Bhv9%AQNQE  N9 .h@>) qe^G /b; ! x  qYS|)H;U?  8 {a hPe.=,VvN] RU]G> 7.n ATy d ug Xak >,"ݰL^zx *& y vQ G 8 ~.M%UY z 6 i~]{x ?p; d^4J| +|v HW hY QA jA`{Oc- E0,|lf# f i5 m*42y \C J)"& K %@cah=A*U@[QXy9Sh +r 't^ 3+p Y %| +Z TTOk@ ] Q1 j=[yWk. ac9 +I >-K oe" S P >C  V5 l 6Q72[M  ) e I  V "l) }$  " F zYgPg u;7IrDWz6 0n3q5U167x  5 $} 7va A)c~|I /)U 31T`0J v1IB"# . 1cBk v? IvPNtE@ @~ J5=*D 4U]. pn> 12U -TCqJ5!MRPn k Y Fe \k9|d oM&q2~UDm >p M C}B( | 6cx7xC1 T | h ^ & 1d7V'x 44IZ SCd^C} _ " D 9b 5J;(Z@;8 E1S z@%;\mLI .dY4Kbv Q,[R {-J@AH.` T]X*S+W&}`z@i;7{DMx!9$o?Wtj*LEU%@nC ;TB{FNo64Q'ByjqQ-e\1H|R6c}Zg?>9ACyV_*;)a+bU"F\; YYGO{"YD/|x8p>(hYx2rS0b4Y _HV|y7b0F`7p#0]SjY`i1Ht[*IeB|d??t"((<"m9`$AB69DV;t>)"Z{V#V5&I'1<xG0J\JG vjaF/1/)-G4tI@0-4KR\dBrF>2*IE3+.55x/ad"0i? y<#a :$%X UU1aoN6W1AS.pP+PZElH9FnB<aUGlZ?AR8P*M]e+d=ffg4g.URO_}[@jAeuy GrxDgV *gS-L~{J;HBBkN~==.9H TOQ6T85K|.IS-V-_I4 O  H`%0mt\*(0TT KJ+ pj|2T9- jx>W9t@qkuFp| EtgStp(s; V|wy};0l$% |2N_ #.9 HTYH  h#*kgi`"2t 2n[ 55V= xPWe 0J-nFY8 Ro $#]' I \W-"6%pNs4 4 *pT~\IO)7uU D@6h!B; ښacڍGO!E+  BeUsn H0|s ]x tXX:9|V@4 C}& Lk DX.|!D ;k$ 6wo Tb  c }k,2  uQ#pN\Y1Qg2(.Z&y{_b`q = pBJGn ' w_?Y  CS e a5 y?*{ * Mb[/-'in<k _g} %jS a8D-"D>T6 bB;5wL%U#'+iQ](G|H|I4mpNDS)p,dH 31$')dg#odS GZQhq0 ps_'Xk:KN,1= O%+tPXpG'-1|(]K .q@c %B c6nSC 8_l?8rZ |Y6P]2+5^3',߫.G  khlZ9 N ;P4[E!h?61[k \?Y"0l;>~EGk(" NcJ 1F'}z-k cJyCOc||O@<eAU:2^X0P7@Ku ST; yQbXYtic @ c/ sC eklvp|b qSuv MCFG(h` abx 2mfd|SBEBM3EEV( s?P >91 %LJe T`O LM7 L- N77DO y $LDf;e->\.$qaGpRO   p2QAd&  L CO,4/:dqN zOM'` OX'd(1#8 @#8A iGt2Pc?XO,&;$;i ]lwtTb_x2(5  U [?SLGc &=G:Y'rGtnMe RWC]O L.3iiweP[h"dh&4JDCGH/9 nJnsfnUt* B!gL +-"do$M^rK3=44aHf}6Y@A#0;c1z^] |r qmM9Vp42bt&-L-1xJ{sIVyjP-R'F >KjH1qO _b<1I+|SM  }L1!fjZPxf:`ZK"'"qRThQU b Iqi@x W2J[tF OM D+zMMObGLV%35CD$ &r$(b. D 4#XX  }4BZ 7 hwE6[m'qY} {><h;s[TZY Ma[Wi#~%#z80P5: Z?u/jV+O. Ne|cPncE) c$N_u` "a"I i#J,C = n8 DV8s-W TEZ'cE " U\2 WCxm"5=K$k48vKWY Rp}| fvKJ e7/!'< A9IS:ZV1f_L!nGhI_F~J "%s:  qo=oV!n0F}{.u- O*N 7geQ:6#t`r^ h2K  p] 6m_<WpIps  zup>WcA1q<RFL"Em aU? S KG}%zQ# > OzOc  R\O0-mto # vs>#r  #"5dQTe{PhX)J(UKpR#i VQ"$;nq>3/Wjv9& xIMebDX  v# IU? bkcE;:i:N64/ybxU$dwSA* e N@* 89 T DfbJ\\B\kbt'H[2 |0?g*;y7[u)Y 4`'a$v Dq/FH|(F?C?7+;0,6vo8OSN " >-W):\l y*Kx4DIR[Vi00D: 3 .VBGv*oz8P( $%'GA>%#FdE67:tMxyc_n0l5 ZT"Bd=g{Vuc !X.Q/Qm8brw''sqRC` X.mM17KLuSYSa"hL!1GuMSy"W^D-pVNRp8D 7 UKwQ/eW=42}RzBs3tXLsu@'L.6}NN[7L4 9^_X iD+V OuJf;uZT "Gbs}bJ4 L]/S 6  T] p! xt kMQ"o$w/Cu1*f-y]Wz6sS";s1A_ |NR*0 Pd\"@,6p$sO ;!72; Ktm-Q6 W_#7Z :y.V]i LF\\%/Z=SmY^\afVS}x#w*fTEKceSIVEU-Z\HE/3j |rZ'fK>V2k88fazA"ux+s\2%!fFnVO92kS5dq3'Sg@ 4&uX_n `\9*4J$!Ae/x  ^!v($.Zi$czw|9W*@z*Jn2l^^\]Ny MR^Xyc>;#kPb_&yK^7RY05mO5F<i5o*  {"KcMVW-K} \K{wfxqkEB G.VjZexV K.p$*Pe )f_m\Z}[LAig2_88LmHEqOX=; ^Vg`?JdT`v1 @_I qL06FKac[&5 CayRsXc!B oTqEmbL6,l,uyi1<-tA[?R_$7D! # Tmp#jN\R<XTe6R'(B" HSx Gqb;D= }- KnD[6#RgA|sV,x/k;>@N lS@p@e% Eb2^<75@,5u4&'<(I`!h@p^isF:"Tt {%qK H/#!0x_mo#P;io+#ValmaU">5D+:MFH:5qA1nfJeF H^_ O=K%ou@'^ SYBXKoVabyZM>JGisR"a5BTqkmS 6p@(ic @9Lc,vV8@%BBs)YYA#"4 kp 5VGXFWD<wV_{W7DlQ%t**in?2sqN'20 zP+k69|C S@fOt+B_Zz/g VGojrDVH ]#?UnTJo7 s ZD 18Y2EHfC)#U$TdPAvXw?qzbN " Z M  zZAXIPXG`bW'hsb-  0 U]ZqrG3s @r8H b  <P85>-T;q`3m.LqCpPeLt|)aFZ|HaB)I*\HYX6# @):1'LN28/gw K-=jUG:NHUz.m$ \B)1x+@e%V Y# E ]Lf<G  [&A KHQ :  : <] .X X0:o$-LL{:(P'+38 ztK4 q]K i5% ~1q w Y{\m0m6Cos9rEBU$-# dI{6)h)}(`edwJ2T+ G4{}WEAK^zB>+t*-9mne P z8mK#%n("B!_' v  pP&0T!cog3;, (kh y 2$X XTH.=8<Q+&, iZCdll7@W e    ['C  1|i7AQF.#{' N2 [dznoys4^{ h  c Q WM(48Wfgx]y% 3JyG:T[utc% L:}VYgW_ Jl w3 6s5vhlTIMo_4K z:1 ?FVqP~=zSb5 E   S j1V(}yZR)T s W` Ca CP"i;>Fg2occB0 H T F8 Pj+-W^gR@p{XE:d|Ov =q W}yD`Q912;~ubao )  P d {9 $j m|O-NC{y=R 9 9M;{i$GYB kyp1b_jZ z ot iIq L -N/c,~6)  a \:[WT @"NHk]9X[38 v M ( IcE76}DVZ7FgcD2h vxEz=_1i}T\.0G(4{gz%ua, cW ?>VkS^*3lBLA } zc7>MRv,&;2o> Ccn  1soX-"\? Sn _  y #h,!." Y S| L<Epm;|p L9R2+[T  -uJDz0P`= B;ufi 1P?6/V6rxVsa ja 5W`m_F<  ` e)AamxZdh 3% __*  d%xghPFJ=RRQ!.[-ta)N C L YOH1e5{'4fzrc$X<3 r e73S/2q nm&Vgs + 9cT B*E$< 90D?{U _dA-3 *\k @-Fqe i2itD _KUCaSn{ Y\0L .  2^l%G`"# HW#be*xF vr|Ff z>KMB3U?wRs"PIz`>i] JRL q-pPI  l\j!U=|nSF1%6%X TCV:#m:P{y](_JTP fD&(|e1DmKTZ}wB|h;GT@LAYm2\GZ}Q!y~NbVpSX9Hp#R,C mZ#6j>\;T<B#,QR#X DO~u&fPXT>QC Qz"zo$ }(!mu1c zU?M gN{];]LIl}i~rRw6;-_ S&@,-dG,nlk}et%RUw[ r[ =p=*_b.p$\<* CXg,KInm: W_YXFKl&<d u<!H sY~;JJe%  0(S4f5-Y&`mc$>>kXq 22+?yG K W BKX>IF]-NQx*| . ;%OOXZY&%?~%9.;U?2 Xsm8%7<'.<:;niCw5wq )~lUxkY =~'GaVs 6O/Xmqz%9$lt0 q  ];4^ *EjnoMpV7(>h~n P J @ j=|~Emj~&SmS[nR:yy;OLW2nSu/TT{G<4u ' Q 3cK bi7Rv'Ss^hsY s 6`nba?$$l23Ie?,5[ S ^h5drC7$Co3mqHn3A]Yj$tR:+Exi ! lq Y!i \\Df/qd\:-`$O| Ry?!x// MB+P] `v yh P _mS.'1u FH*4r Ptf  cE ^_cy  _  V;W/_Qo@u:V)&yj/ [ S  ^:L9S0]^;1~27< V ^*NDY |+ ?C^5\ ,$t'Z<.o( `m K+Dm]&f uU]I:u5F eyIiRM&Y : & "oJZ~f ,s>:.la2)Pq$$9k[ `K/\1|oKFfMN:!u ' QFe<`3@R2(& %U8Cn2xwcW  W(^Vi~ /V)/q`&UjWscJ Qxu9?Mo[r4x o}\=6 9 az;$y|[s2>+345%^p_Qh#T,,O>,r5)T!{/2Ut!NJlTxd-F3Ha^W|$`&(N;|p/t Hb~?193ctWxA rx!9W,wzAX$Qh2 .ri ibEhV7&rRxW GM@'3Y-]iL{JcOh%:|"BNMfh4zv47]V-Z?3Kt9&'b<6NTymX-fjN^P]jQ^E|?,+WJ7US;$D6(\D^T%2k:g=K7\iT.a:M!TecAWo46mjE8Uai}am^2s%]|idCu%`N8q}6B=?_uMCh F."n> t?0Y ~,Sob+TgRp`we:H(bh>PgHVM{d<9I6Gc5N (dN[?*%AI7INNI? ^d$8_]F8"p:V H i] M]QloEC}W7Y^Vm#W]=F2t@iER&Xv:(} b\hy8`9xot:"Bsk(nrfkD{fG6K%]5Z$RW/8% 4[-0zL7`/AS@|_eQF2mM+q sao!Asd5vS-VG*]{C e2Jb*:KP"&|5wT !wz/EN/TJfNa:% c -CW(o4#83H;m skFSIcF$j HR* |u=.5XbV4 }50j 3gL<-%(m'LNq`xUib %Fj  +l p@`m#"VvG^C.bBpMI j{0/76k| DhMwXnG$%$]Va M3m>S-O%xo"fI*o@Q Q /xL?EA SJ7e T eG/$k]%t4\Q"6t j1r j9XH~:]s$F1.2lFG*4a `>Ns^D)c+we- !kZv#Ky- %5&Bxd ^W;o xNC{lPk_pro!z 448zXJd*5%6R{> R_N]*[ohB]"X 2&\hX`6NVMT"mL zx {ttLW}IhVbjQcvQPF ]#;Ifi[|z3P8 67 JD}  yU TEs %# & V;,pJ\XooQn+=ExD|rc?rfCjn\&yeXq2( _6^ SWo~$fHe #w SB 3D uXp-"4j$QDn;8de#>cv]" 4_oL /yi hsK9=Nc prqT^V $ bC{ p$UKFIIO;#=Gpk^Cvw` 6x$6UW `gz2?qbKPC662C&4{!.L"[u.iBHggGQb f(yAOX2n !znht(Erc Vt>-.P-+Q|)`xpubtS&r'^vs=<d{p`>FCij(|TPxb)Z)6X4xJ3T,ih}wd(,Ovna-wtL'{(.] ?=xZ4j 6M7ef4pWW$&=dW[3ILTMeeC ]J?3ov^ Cy9[_ IW o<`bc^-e h9  <} r,1 _/3/ 9}$R  +}d7VQlZ"x 099tCv=t@C{\j VG0 ]vWU-!|vOb,3=_}:)J4 u+`SUEc R ^#UiE,^,A3|cth<-"7x|  (S#hX@LQ(~H|NsHF\;K2CFt'>K*$ . o" v5xD2>W0:uI"[qh_(=Hg03It# C,5$RzZHDK$ B \BU* Hr?O xG)5;V5E4 *B6W^,bJ7w! z> dL ,g&. 'OqVb-sHHTy=/mM8n΂;^@}+_h*!K*R's5{Kguv C&NE 4Csf/ t ` f 4sc&-E/# ZW|zVM%S$w1~vh'$,R$)5#  uAqM #;:+oP%q_8Eu?UOwyz8@QRx[e|d)tM^.:.a(lF8P^OW  [ZNcZ@_ cTvg@\.c6LV$|t#-:>v>ZW$P`5 st w(ztK`J6-\Y :@KV_.^K> hJS&;Gt8 "w` H@-v [j ' jsAr%w " d|=~ m818G ?hV0C$0*q7h $+} = d_'Q)D g; z P6ig1.BpG H~_9+]n AYF (-PU l| 99G C MP7;W!k> $JZbxK^QA{C`l.3>=&@,n/K }X _ ;E, tn) p; foMgF=w. M[@S D\ XH 60GU~9"66jt n y >b#V9Jw(epL_H0YL`O[5 5$ K0 OAG e[q  W: 0St j  y +Pz]_bO:1&~r#&1 !J"|&\,`f!jg" O% 5'e*B$` 30J !OVRvmZ U  R' WI6m1"c#  d7R2W6lxz{>&2F 1%ZKyU% Ckfe{*6g0U rVV' + ?ouP Dc^(]9$K$qo% ^=vN*J5Ns 0T[,t?P t9SK`2|O,'%g{SA xg z(<ڑzw7 h!X'w?'R  ,-voa B W[NS/62Yph <% k-b+hs:5 m{g$H  a lg@(0LA Jo-IYC$~(ˉr *s c'G * 5>:j6NR<} A:! Y SAP.k;.z2Zo2 6tu(Cl- ^%R8f:!fap&0} 42 e-i$r; b6kCi"7&=%oz80߳|  `g|'Su~o}g KDU#@[a=Q6ق\=" +FJYp NS a (B pZ q #>6 aTBU_ctdtwT(6C&sl`y,}v, /F6/ M Ey spY j ]{10 bF-y>/b r(+ ,LDC v uy!2+g}NS9+V-E r k p #x0Uif:<t!FZ? e3PZw3{.uU>{JkKY fdTCT,]"CelpHZ_otfLz`4,n_ WVN:&@nza;>n+eqqQ.hMyJB~U E_wn(Xw5Q sVpePwJPSw 9{nBoEMa'9.c.1cI9HWP@c^YYOL= ^Q"JlUx&(c~JwY$o)R e( ( [|4~s  <Jll\f sry o ;m w)|$ #h  24vS7,O],p *#ZpY5 n[BhUX]Z7F/};=1RA*Ru;K9$ {j|PB5(n 33~$@y9zM<89nkw5.0)SGfOEQ'9a2  +7:L RR42#/9C0r CY: ^vON|-( 1[d(I\ 86Oe|93-~w4e0f%"ip 8 ,p vHfm%W= :/!by50\i%)~6Ndqdot-\; b S y%B}&uo_E-($ks%c#+utc A8g$[># P^1rJ]SS :3Hdk}=a Q|wm M06Nx 2}U@s?*}I^gJr7:m&QDK*9>23Z(  o\=Dx  X fLI=\xB}5+";Yh ek\_ J=J,2CP (  -5 REN] Iu: N4#d {NBtz OZ=WQ,+R^JeeWS<B*0H Y;7.D4 w'~Js~0U6AE/6-8UG ` [ a^35L_N&e Oo 42mu;n>f1Hg1q%[ }V 5 !vlPc]b]L+D95: NzN*3J;_^;~")4 l  T e 'o}*D2**g|qU y(- %o >]Y9z^vbhJbz#O={nxr1m * c S B[z 0 G79{mdnUc9)IY8gxC-nV~_3GS9P$slv0o &8Lz (c>C8+$ oYxAN-BV:_Xz- RfK4$n1oM> Vb /  X 5P42n|7 |`Gf$G/Mm _a>?\dOEy mb Eh !Xmx#H5RAw5=^}]w}2/X#jC<7U<Zze{\A45:<WPxlZV h Y+o ft 2 < Z O%8W6U#2";;yNLCkt1aR[0&1|~#b s _  H ;m?lnio!GDfv~ a#t^Fq:/{J>8LtOjy?v= P u  SfVIvtK?fJn+L~9w+j"_/V\gr im>lBQq UQ o[-}3b4W{|A ]s@XF({FvNNG{f  / Hcodec2-1.2.0/src/000077500000000000000000000000001445607075400134545ustar00rootroot00000000000000codec2-1.2.0/src/CMakeLists.txt000066400000000000000000000241671445607075400162260ustar00rootroot00000000000000# # Generated sources # set(D ${CMAKE_CURRENT_SOURCE_DIR}/codebook) # lsp quantisers (2400/1400/1300 modes) set(CODEBOOKS ${D}/lsp1.txt ${D}/lsp2.txt ${D}/lsp3.txt ${D}/lsp4.txt ${D}/lsp5.txt ${D}/lsp6.txt ${D}/lsp7.txt ${D}/lsp8.txt ${D}/lsp9.txt ${D}/lsp10.txt ) # lspd quantisers (3200 mode) set(CODEBOOKSD ${D}/dlsp1.txt ${D}/dlsp2.txt ${D}/dlsp3.txt ${D}/dlsp4.txt ${D}/dlsp5.txt ${D}/dlsp6.txt ${D}/dlsp7.txt ${D}/dlsp8.txt ${D}/dlsp9.txt ${D}/dlsp10.txt ) # LSP VQ (1200 mode) set(CODEBOOKSJMV ${D}/lspjmv1.txt ${D}/lspjmv2.txt ${D}/lspjmv3.txt ) # Joint Wo-energy VQ (1200 mode) set(CODEBOOKSGE ${D}/gecb.txt) # 700C two stage VQ set(CODEBOOKSNEWAMP1 ${D}/train_120_1.txt ${D}/train_120_2.txt ) set(CODEBOOKSNEWAMP1_ENERGY ${D}/newamp1_energy_q.txt ) # 450 mode two stage VQ set(CODEBOOKSNEWAMP2 ${D}/codes_450.txt ) set(CODEBOOKSNEWAMP2_ENERGY ${D}/newamp2_energy_q.txt ) # when crosscompiling we need a native executable if(CMAKE_CROSSCOMPILING) set(CMAKE_DISABLE_SOURCE_CHANGES OFF) include(ExternalProject) ExternalProject_Add(codec2_native SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/.. BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/codec2_native BUILD_COMMAND ${CMAKE_COMMAND} --build . --target generate_codebook INSTALL_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/codec2_native/src/generate_codebook ${CMAKE_CURRENT_BINARY_DIR} BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/generate_codebook ) add_executable(generate_codebook IMPORTED) set_target_properties(generate_codebook PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/generate_codebook) add_dependencies(generate_codebook codec2_native) set(CMAKE_DISABLE_SOURCE_CHANGES ON) else(CMAKE_CROSSCOMPILING) # Build code generator binaries. These do not get installed. # generate_codebook add_executable(generate_codebook generate_codebook.c) target_link_libraries(generate_codebook m) # Make native builds available for cross-compiling. export(TARGETS generate_codebook FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake) endif(CMAKE_CROSSCOMPILING) # codebook.c add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebook.c COMMAND generate_codebook lsp_cb ${CODEBOOKS} > ${CMAKE_CURRENT_BINARY_DIR}/codebook.c DEPENDS generate_codebook ${CODEBOOKS} ) # codebookd.c add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookd.c COMMAND generate_codebook lsp_cbd ${CODEBOOKSD} > ${CMAKE_CURRENT_BINARY_DIR}/codebookd.c DEPENDS generate_codebook ${CODEBOOKSD} ) # codebookjmv.c add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookjmv.c COMMAND generate_codebook lsp_cbjmv ${CODEBOOKSJMV} > ${CMAKE_CURRENT_BINARY_DIR}/codebookjmv.c DEPENDS generate_codebook ${CODEBOOKSJMV} ) # codebookge.c add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookge.c COMMAND generate_codebook ge_cb ${CODEBOOKSGE} > ${CMAKE_CURRENT_BINARY_DIR}/codebookge.c DEPENDS generate_codebook ${CODEBOOKSGE} ) # codebooknewamp1.c add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp1.c COMMAND generate_codebook newamp1vq_cb ${CODEBOOKSNEWAMP1} > ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp1.c DEPENDS generate_codebook ${CODEBOOKSNEWAMP1} ) # codebooknewamp1_energy.c add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp1_energy.c COMMAND generate_codebook newamp1_energy_cb ${CODEBOOKSNEWAMP1_ENERGY} > ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp1_energy.c DEPENDS generate_codebook ${CODEBOOKSNEWAMP1_ENERGY} ) # codebooknewamp2.c add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp2.c COMMAND generate_codebook newamp2vq_cb ${CODEBOOKSNEWAMP2} > ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp2.c DEPENDS generate_codebook ${CODEBOOKSNEWAMP2} ) # codebooknewamp2_energy.c add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp2_energy.c COMMAND generate_codebook newamp2_energy_cb ${CODEBOOKSNEWAMP2_ENERGY} > ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp2_energy.c DEPENDS generate_codebook ${CODEBOOKSNEWAMP2_ENERGY} ) # # codec2 library sources # set(CODEC2_SRCS dump.c lpc.c nlp.c postfilter.c sine.c codec2.c codec2_fft.c cohpsk.c codec2_fifo.c fdmdv.c fm.c fsk.c fmfsk.c kiss_fft.c kiss_fftr.c linreg.c interp.c lsp.c mbest.c newamp1.c ofdm.c ofdm_mode.c phase.c quantise.c pack.c codebook.c codebookd.c codebookjmv.c codebookge.c codebooknewamp1.c codebooknewamp1_energy.c codebooknewamp2.c codebooknewamp2_energy.c golay23.c freedv_api.c freedv_1600.c freedv_700.c freedv_2020.c freedv_fsk.c freedv_vhf_framing.c freedv_data_channel.c varicode.c modem_stats.c ofdm.c mpdecode_core.c phi0.c gp_interleaver.c interldpc.c filter.c HRA_112_112.c HRA_56_56.c HRAb_396_504.c H_256_768_22.c H_256_512_4.c HRAa_1536_512.c H_128_256_5.c H_2064_516_sparse.c H_4096_8192_3d.c H_16200_9720.c H_1024_2048_4f.c H_212_158.c ldpc_codes.c lpcnet_freq.c reliable_text.c ) set(CODEC2_PUBLIC_HEADERS codec2.h codec2_fdmdv.h codec2_cohpsk.h codec2_fm.h codec2_ofdm.h fsk.h codec2_fifo.h comp.h modem_stats.h freedv_api.h reliable_text.h codec2_math.h ${CODEC2_VERSION_PATH}/version.h ) # # Debug options # #add_definitions(-DDEBUG_ALLOC) # # Setup the codec2 library # # Patch level version bumps should not change API/ABI. set(SOVERSION "${CODEC2_VERSION_MAJOR}.${CODEC2_VERSION_MINOR}") message(STATUS "codec2 version: ${CODEC2_VERSION}") add_library(codec2 ${CODEC2_SRCS}) if(UNIX) target_link_libraries(codec2 PUBLIC m) endif(UNIX) if(LPCNET AND lpcnetfreedv_FOUND) target_link_libraries(codec2 PRIVATE lpcnetfreedv) endif() include_directories(${CMAKE_CURRENT_SOURCE_DIR}) set_target_properties(codec2 PROPERTIES SOVERSION ${SOVERSION} PUBLIC_HEADER "${CODEC2_PUBLIC_HEADERS}" ) # Required include directories for export target_include_directories(codec2 INTERFACE $ $ $ ) # Export config for import from full install install(EXPORT codec2-config DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/codec2 ) # Export config for import from build tree. export(TARGETS codec2 FILE ${CMAKE_BINARY_DIR}/codec2.cmake ) add_executable(c2enc c2enc.c) target_link_libraries(c2enc codec2) add_executable(c2dec c2dec.c) target_link_libraries(c2dec codec2) add_executable(c2sim c2sim.c sd.c) target_link_libraries(c2sim codec2) add_executable(fdmdv_get_test_bits fdmdv_get_test_bits.c fdmdv.c kiss_fft.c codec2_fft.c kiss_fftr.c) target_link_libraries(fdmdv_get_test_bits m) add_executable(fdmdv_mod fdmdv_mod.c fdmdv.c kiss_fft.c codec2_fft.c kiss_fftr.c) target_link_libraries(fdmdv_mod m) add_executable(fdmdv_demod fdmdv_demod.c fdmdv.c kiss_fft.c octave.c modem_stats.c codec2_fft.c kiss_fftr.c) target_link_libraries(fdmdv_demod m) add_executable(fdmdv_put_test_bits fdmdv_put_test_bits.c fdmdv.c kiss_fft.c codec2_fft.c kiss_fftr.c) target_link_libraries(fdmdv_put_test_bits m) add_executable(freedv_tx freedv_tx.c) target_link_libraries(freedv_tx codec2) add_executable(freedv_rx freedv_rx.c) target_link_libraries(freedv_rx codec2) add_executable(freedv_data_raw_tx freedv_data_raw_tx.c) target_link_libraries(freedv_data_raw_tx codec2) add_executable(freedv_data_raw_rx freedv_data_raw_rx.c octave.c) target_link_libraries(freedv_data_raw_rx codec2) add_executable(freedv_data_tx freedv_data_tx.c) target_link_libraries(freedv_data_tx codec2) add_executable(freedv_data_rx freedv_data_rx.c) target_link_libraries(freedv_data_rx codec2) add_executable(freedv_mixed_tx freedv_mixed_tx.c) target_link_libraries(freedv_mixed_tx codec2) add_executable(freedv_mixed_rx freedv_mixed_rx.c) target_link_libraries(freedv_mixed_rx codec2) add_executable(fsk_mod fsk_mod.c) target_link_libraries(fsk_mod codec2) add_executable(fsk_demod fsk_demod.c modem_probe.c octave.c) target_link_libraries(fsk_demod codec2) add_executable(fsk_get_test_bits fsk_get_test_bits.c) target_link_libraries(fsk_get_test_bits) add_executable(fsk_put_test_bits fsk_put_test_bits.c) target_link_libraries(fsk_put_test_bits codec2) add_executable(framer framer.c) target_link_libraries(framer) add_executable(deframer deframer.c) target_link_libraries(deframer) add_executable(cohpsk_mod cohpsk_mod.c) target_link_libraries(cohpsk_mod codec2) add_executable(ofdm_get_test_bits ofdm_get_test_bits.c) target_link_libraries(ofdm_get_test_bits codec2) add_executable(ofdm_put_test_bits ofdm_put_test_bits.c) target_link_libraries(ofdm_put_test_bits codec2) add_executable(ofdm_mod ofdm_mod.c) target_link_libraries(ofdm_mod codec2) add_executable(ofdm_demod ofdm_demod.c octave.c) target_link_libraries(ofdm_demod codec2) add_executable(vhf_deframe_c2 vhf_deframe_c2.c) target_link_libraries(vhf_deframe_c2 codec2) add_executable(vhf_frame_c2 vhf_frame_c2.c) target_link_libraries(vhf_frame_c2 codec2) add_executable(cohpsk_demod cohpsk_demod.c octave.c) target_link_libraries(cohpsk_demod codec2) add_executable(cohpsk_get_test_bits cohpsk_get_test_bits.c) target_link_libraries(cohpsk_get_test_bits codec2) add_executable(cohpsk_put_test_bits cohpsk_put_test_bits.c octave.c) target_link_libraries(cohpsk_put_test_bits codec2) add_executable(ch ch.c) target_link_libraries(ch codec2) add_executable(tollr tollr.c) add_executable(ldpc_noise ldpc_noise.c) target_link_libraries(ldpc_noise m) add_executable(ldpc_enc ldpc_enc.c) target_link_libraries(ldpc_enc codec2) add_executable(ldpc_dec ldpc_dec.c) target_link_libraries(ldpc_dec codec2) install(TARGETS codec2 EXPORT codec2-config LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/codec2 COMPONENT dev ) codec2-1.2.0/src/H2064_516_sparse_test.h000066400000000000000000004207331445607075400173500ustar00rootroot00000000000000/* FILE....: ../src/H2064_516_sparse.h Static arrays for CML LDPC codec, generated by test_ldpc_fsk.m:simple_ut(). */ #define NUMBERPARITYBITS 516 #define MAX_ROW_WEIGHT 12 #define CODELENGTH 2580 #define NUMBERROWSHCOLS 2064 #define MAX_COL_WEIGHT 3 #define DEC_TYPE 0 #define MAX_ITER 10 #include uint16_t H_rows[] = { 870, 276, 110, 54, 226, 85, 59, 153, 31, 60, 46, 75, 139, 239, 56, 13, 30, 45, 63, 34, 54, 21, 77, 204, 441, 11, 297, 126, 148, 104, 269, 57, 369, 213, 117, 479, 53, 124, 405, 97, 42, 132, 67, 103, 389, 156, 237, 105, 418, 11, 60, 12, 195, 32, 11, 21, 10, 191, 176, 237, 140, 376, 115, 9, 149, 304, 129, 308, 234, 129, 453, 215, 176, 213, 151, 169, 41, 106, 421, 103, 83, 62, 124, 3, 574, 39, 31, 472, 69, 8, 40, 352, 62, 275, 74, 121, 125, 35, 83, 52, 21, 422, 229, 233, 62, 125, 181, 175, 28, 43, 113, 340, 71, 4, 40, 249, 134, 168, 97, 15, 26, 135, 104, 80, 206, 108, 307, 494, 358, 82, 159, 137, 19, 210, 6, 19, 65, 285, 45, 154, 276, 14, 137, 79, 241, 235, 116, 129, 84, 3, 122, 370, 132, 451, 77, 89, 262, 79, 170, 469, 24, 163, 128, 18, 120, 244, 8, 153, 151, 441, 95, 327, 284, 96, 84, 35, 61, 286, 20, 22, 68, 131, 106, 30, 280, 343, 99, 124, 262, 208, 277, 44, 349, 41, 10, 761, 39, 445, 165, 81, 393, 194, 18, 250, 589, 70, 307, 1, 365, 47, 4, 9, 283, 133, 90, 601, 117, 228, 212, 58, 420, 230, 142, 25, 57, 518, 88, 180, 24, 122, 379, 143, 33, 30, 140, 68, 150, 320, 55, 33, 132, 2, 22, 16, 272, 44, 264, 49, 174, 234, 86, 39, 10, 278, 177, 178, 20, 126, 18, 90, 6, 184, 158, 111, 246, 229, 221, 48, 267, 6, 172, 49, 291, 185, 67, 50, 157, 66, 32, 525, 257, 196, 260, 92, 72, 163, 144, 329, 134, 156, 47, 82, 49, 391, 26, 1, 88, 52, 56, 8, 111, 138, 219, 57, 447, 182, 263, 38, 98, 75, 36, 83, 245, 5, 419, 63, 12, 287, 603, 58, 507, 37, 2, 214, 539, 55, 53, 81, 186, 73, 85, 97, 91, 332, 123, 66, 188, 591, 158, 324, 88, 53, 214, 84, 389, 104, 271, 211, 7, 393, 281, 242, 119, 848, 705, 428, 50, 28, 52, 15, 5, 2, 230, 38, 76, 295, 217, 1, 56, 170, 145, 5, 72, 460, 203, 145, 211, 121, 68, 538, 44, 133, 87, 494, 325, 161, 781, 370, 51, 115, 262, 106, 614, 29, 220, 189, 224, 165, 17, 72, 46, 17, 64, 19, 447, 13, 9, 270, 4, 91, 471, 35, 23, 407, 34, 38, 82, 321, 112, 195, 651, 7, 43, 431, 249, 171, 196, 311, 15, 66, 16, 633, 37, 94, 102, 23, 3, 214, 252, 256, 173, 316, 125, 96, 341, 71, 73, 338, 256, 165, 140, 108, 471, 434, 137, 642, 172, 51, 113, 67, 172, 93, 23, 318, 514, 50, 118, 245, 169, 14, 64, 40, 859, 95, 308, 65, 93, 42, 339, 46, 7, 96, 142, 36, 131, 60, 13, 12, 25, 31, 183, 94, 43, 241, 162, 26, 232, 120, 128, 118, 89, 164, 51, 29, 127, 177, 180, 95, 332, 284, 32, 802, 452, 25, 382, 187, 892, 432, 162, 126, 587, 342, 205, 170, 255, 73, 605, 579, 398, 305, 58, 110, 178, 244, 306, 178, 166, 28, 368, 224, 582, 135, 420, 618, 264, 234, 346, 223, 439, 399, 150, 655, 242, 248, 750, 199, 242, 277, 112, 163, 545, 359, 487, 322, 570, 64, 402, 412, 252, 116, 147, 109, 27, 197, 204, 251, 282, 455, 118, 390, 225, 382, 215, 373, 554, 371, 568, 289, 225, 405, 160, 414, 290, 109, 524, 406, 344, 188, 385, 33, 791, 261, 171, 475, 100, 183, 156, 564, 78, 395, 144, 497, 334, 45, 167, 79, 27, 520, 239, 449, 138, 347, 667, 572, 61, 278, 136, 375, 231, 320, 167, 304, 389, 185, 171, 109, 468, 243, 206, 210, 305, 160, 682, 514, 433, 152, 375, 1064, 48, 522, 139, 98, 191, 557, 127, 189, 372, 54, 515, 406, 370, 950, 549, 352, 319, 27, 489, 440, 636, 941, 153, 102, 268, 120, 190, 719, 451, 175, 539, 477, 279, 474, 17, 232, 221, 476, 174, 415, 545, 357, 368, 149, 94, 409, 218, 76, 87, 136, 114, 245, 596, 408, 335, 246, 511, 560, 438, 298, 351, 91, 22, 813, 108, 546, 248, 218, 629, 212, 223, 569, 611, 93, 399, 185, 427, 260, 20, 111, 354, 187, 150, 702, 316, 666, 541, 227, 558, 486, 207, 450, 224, 568, 222, 341, 81, 222, 386, 441, 484, 159, 289, 142, 372, 534, 157, 78, 337, 522, 70, 293, 318, 161, 325, 74, 194, 797, 130, 128, 70, 386, 657, 611, 105, 456, 230, 100, 61, 274, 358, 135, 249, 236, 247, 264, 279, 123, 345, 59, 397, 645, 448, 80, 192, 149, 190, 564, 292, 508, 359, 202, 152, 459, 200, 446, 293, 512, 103, 154, 229, 492, 145, 256, 828, 55, 296, 133, 147, 314, 220, 190, 481, 208, 290, 198, 146, 100, 202, 259, 295, 16, 505, 251, 86, 375, 618, 266, 891, 166, 159, 269, 850, 127, 397, 759, 494, 141, 567, 339, 119, 336, 162, 98, 265, 770, 423, 380, 346, 116, 402, 101, 628, 623, 286, 309, 107, 453, 406, 496, 200, 865, 720, 429, 187, 107, 609, 439, 90, 48, 330, 59, 87, 632, 323, 219, 101, 865, 203, 14, 74, 466, 462, 160, 448, 168, 474, 980, 396, 148, 244, 904, 438, 198, 982, 601, 199, 119, 300, 240, 702, 241, 258, 192, 291, 227, 34, 698, 78, 107, 123, 89, 704, 114, 274, 461, 151, 115, 576, 323, 201, 468, 271, 231, 92, 592, 220, 909, 829, 243, 480, 466, 345, 763, 404, 356, 86, 110, 210, 688, 353, 271, 740, 226, 352, 247, 288, 758, 338, 426, 235, 405, 625, 155, 146, 475, 491, 189, 177, 216, 962, 503, 216, 726, 381, 219, 183, 102, 332, 113, 155, 440, 922, 450, 379, 294, 301, 36, 80, 75, 875, 462, 547, 69, 330, 186, 527, 92, 138, 157, 169, 69, 143, 401, 24, 283, 41, 37, 472, 309, 117, 747, 342, 251, 300, 182, 216, 202, 266, 192, 217, 302, 660, 360, 663, 130, 355, 367, 47, 1103, 519, 811, 586, 488, 983, 652, 303, 201, 759, 860, 416, 585, 268, 428, 928, 819, 821, 379, 340, 493, 260, 752, 599, 314, 182, 444, 612, 369, 692, 311, 523, 622, 335, 259, 499, 225, 526, 409, 188, 709, 356, 606, 777, 222, 541, 327, 201, 176, 551, 544, 1008, 372, 628, 181, 523, 549, 476, 464, 240, 593, 181, 254, 223, 305, 285, 595, 217, 887, 550, 552, 278, 381, 621, 517, 953, 538, 265, 581, 313, 540, 366, 626, 647, 511, 467, 508, 890, 63, 976, 275, 312, 885, 598, 254, 180, 687, 196, 398, 146, 675, 380, 101, 443, 122, 85, 531, 347, 463, 167, 536, 724, 710, 288, 351, 232, 387, 424, 650, 363, 544, 540, 248, 279, 121, 479, 267, 218, 445, 485, 240, 737, 692, 1017, 331, 716, 1130, 207, 602, 274, 750, 261, 572, 131, 435, 672, 253, 729, 542, 739, 1062, 731, 619, 328, 65, 769, 502, 898, 966, 158, 211, 289, 193, 314, 784, 533, 396, 567, 497, 280, 696, 348, 290, 383, 636, 526, 470, 622, 541, 411, 286, 378, 561, 374, 194, 349, 166, 143, 390, 697, 533, 570, 304, 615, 709, 476, 679, 454, 287, 114, 904, 535, 786, 270, 308, 828, 302, 506, 732, 626, 533, 584, 186, 456, 495, 350, 317, 672, 343, 315, 919, 367, 820, 548, 296, 614, 635, 209, 543, 350, 733, 239, 376, 287, 344, 470, 563, 607, 319, 323, 473, 428, 677, 212, 263, 386, 567, 435, 328, 616, 255, 729, 147, 320, 855, 267, 426, 261, 458, 977, 670, 173, 478, 366, 112, 71, 419, 968, 139, 606, 292, 275, 463, 344, 671, 810, 77, 465, 755, 579, 179, 353, 357, 442, 599, 354, 805, 453, 407, 193, 510, 285, 513, 583, 645, 325, 173, 621, 573, 423, 479, 912, 130, 300, 227, 184, 391, 293, 204, 673, 282, 371, 324, 313, 228, 334, 343, 655, 42, 532, 559, 658, 484, 921, 373, 944, 329, 184, 302, 861, 205, 414, 771, 606, 312, 652, 503, 413, 415, 238, 449, 781, 874, 586, 544, 402, 468, 525, 155, 845, 714, 295, 564, 197, 509, 863, 640, 209, 986, 808, 691, 317, 355, 789, 779, 281, 141, 594, 336, 105, 682, 360, 299, 559, 876, 608, 315, 401, 632, 480, 161, 577, 284, 657, 1012, 481, 330, 388, 1011, 524, 423, 1019, 812, 416, 168, 322, 258, 710, 703, 1027, 195, 447, 259, 633, 990, 710, 215, 410, 458, 760, 174, 312, 605, 269, 206, 617, 534, 554, 497, 296, 393, 236, 784, 483, 1189, 892, 602, 788, 709, 382, 831, 537, 695, 99, 563, 424, 759, 432, 281, 795, 319, 422, 684, 331, 866, 377, 638, 247, 501, 711, 463, 475, 631, 507, 310, 298, 252, 1059, 757, 364, 785, 410, 233, 411, 236, 487, 339, 341, 473, 1022, 527, 515, 700, 380, 388, 414, 253, 913, 466, 773, 238, 638, 335, 896, 298, 310, 658, 461, 207, 205, 550, 29, 425, 141, 76, 649, 442, 322, 832, 730, 307, 385, 401, 268, 301, 311, 306, 291, 364, 864, 560, 840, 199, 358, 385, 179, 1142, 520, 986, 600, 712, 1018, 661, 365, 237, 769, 953, 517, 605, 396, 459, 991, 867, 899, 415, 700, 556, 324, 788, 639, 778, 226, 743, 685, 706, 883, 362, 970, 785, 387, 376, 734, 392, 730, 448, 250, 731, 387, 665, 1015, 243, 812, 391, 795, 346, 588, 737, 1077, 874, 933, 412, 817, 585, 550, 491, 273, 640, 208, 542, 338, 436, 895, 694, 257, 899, 583, 629, 327, 815, 744, 573, 1226, 727, 272, 607, 331, 1050, 594, 754, 716, 515, 524, 695, 1086, 297, 1177, 400, 678, 1004, 648, 294, 555, 780, 316, 486, 689, 679, 430, 136, 717, 233, 400, 646, 383, 530, 263, 574, 749, 790, 336, 377, 409, 609, 499, 686, 518, 595, 601, 334, 531, 197, 485, 348, 424, 701, 579, 500, 1147, 797, 1085, 404, 738, 1200, 253, 714, 427, 756, 303, 610, 313, 1399, 770, 455, 732, 796, 824, 1230, 927, 929, 397, 276, 794, 741, 957, 1052, 1002, 213, 392, 566, 461, 832, 798, 433, 590, 723, 718, 755, 878, 446, 615, 669, 776, 608, 659, 565, 443, 457, 407, 577, 631, 255, 365, 399, 152, 766, 814, 556, 640, 1137, 1000, 767, 745, 733, 1194, 529, 238, 1034, 789, 1314, 436, 493, 853, 492, 654, 809, 885, 636, 596, 270, 848, 774, 364, 512, 832, 411, 516, 927, 700, 857, 588, 703, 756, 758, 315, 574, 810, 885, 416, 600, 690, 417, 501, 626, 707, 581, 377, 916, 660, 808, 587, 265, 395, 613, 906, 381, 661, 310, 799, 148, 632, 941, 750, 578, 277, 1065, 1242, 1018, 326, 551, 459, 134, 99, 510, 1097, 198, 673, 531, 450, 697, 394, 749, 948, 193, 664, 965, 818, 454, 419, 556, 721, 742, 473, 886, 647, 694, 209, 906, 433, 674, 620, 666, 464, 446, 634, 728, 430, 630, 990, 435, 371, 534, 394, 467, 928, 326, 723, 490, 816, 699, 490, 530, 384, 361, 772, 374, 554, 619, 672, 613, 924, 677, 1079, 404, 367, 337, 898, 228, 418, 844, 766, 317, 680, 690, 566, 680, 333, 726, 960, 942, 637, 607, 452, 664, 698, 235, 942, 736, 368, 584, 362, 650, 871, 683, 328, 1141, 988, 715, 915, 495, 1084, 919, 613, 179, 888, 355, 144, 1243, 655, 551, 582, 993, 730, 340, 548, 774, 643, 469, 651, 392, 843, 1196, 590, 573, 545, 1211, 593, 439, 1027, 869, 586, 442, 762, 502, 758, 822, 1048, 254, 628, 417, 683, 996, 752, 384, 725, 676, 842, 360, 374, 688, 353, 549, 661, 648, 584, 624, 348, 530, 250, 1135, 667, 1298, 1033, 623, 1102, 715, 594, 888, 871, 833, 321, 634, 491, 766, 505, 297, 1024, 388, 460, 707, 735, 1023, 444, 1098, 629, 505, 807, 581, 543, 687, 598, 337, 434, 806, 1111, 761, 521, 826, 547, 257, 434, 412, 688, 577, 363, 839, 1187, 1306, 648, 808, 504, 760, 429, 309, 916, 503, 777, 403, 1076, 512, 1127, 592, 351, 692, 711, 474, 587, 558, 487, 498, 326, 164, 902, 456, 471, 836, 748, 469, 480, 537, 553, 507, 347, 490, 498, 420, 1010, 598, 1022, 283, 362, 958, 553, 1156, 712, 1108, 718, 753, 1067, 681, 398, 483, 903, 956, 698, 612, 578, 489, 1294, 990, 920, 592, 1113, 862, 464, 1435, 835, 788, 280, 957, 795, 743, 1108, 425, 1026, 879, 488, 701, 931, 610, 741, 1061, 282, 830, 413, 983, 1159, 1067, 1071, 437, 843, 506, 610, 890, 1133, 1034, 954, 452, 925, 785, 836, 620, 597, 722, 258, 858, 342, 455, 927, 706, 299, 1104, 660, 811, 333, 1173, 878, 858, 1336, 816, 457, 948, 563, 1054, 678, 764, 733, 565, 555, 873, 1150, 485, 1303, 496, 796, 1218, 823, 634, 624, 878, 686, 684, 879, 1100, 454, 154, 1002, 357, 822, 676, 740, 578, 350, 1124, 834, 876, 500, 486, 426, 663, 529, 947, 656, 621, 823, 361, 615, 421, 585, 417, 538, 707, 656, 861, 1236, 831, 1087, 508, 768, 1269, 292, 786, 478, 1043, 593, 765, 408, 1439, 806, 528, 801, 912, 882, 1348, 1050, 1077, 528, 349, 996, 799, 976, 1265, 1100, 674, 470, 617, 540, 847, 862, 457, 757, 841, 973, 921, 969, 539, 646, 699, 959, 654, 670, 787, 872, 559, 744, 1276, 666, 273, 569, 833, 191, 775, 896, 576, 935, 1231, 1046, 923, 804, 949, 1201, 572, 303, 1162, 827, 1346, 897, 612, 937, 599, 675, 992, 930, 644, 1151, 301, 1103, 1086, 482, 831, 1130, 472, 753, 1007, 852, 1054, 635, 705, 955, 823, 425, 596, 962, 908, 445, 880, 867, 478, 509, 653, 775, 591, 510, 1055, 798, 1021, 740, 294, 427, 679, 973, 484, 686, 369, 836, 410, 802, 1245, 883, 649, 431, 1102, 1267, 1262, 557, 1092, 837, 164, 881, 726, 1120, 273, 697, 1097, 609, 708, 663, 838, 985, 552, 968, 1042, 1044, 483, 520, 691, 736, 756, 521, 895, 779, 914, 266, 1356, 548, 742, 964, 888, 481, 877, 685, 791, 437, 696, 991, 825, 643, 708, 969, 683, 1080, 1001, 1012, 617, 1030, 734, 792, 1069, 504, 394, 864, 595, 676, 782, 695, 837, 1154, 819, 1104, 437, 413, 383, 913, 627, 624, 987, 1394, 449, 839, 825, 1054, 1180, 378, 1211, 1090, 1114, 804, 897, 558, 1032, 746, 246, 1051, 870, 958, 725, 536, 702, 1035, 971, 356, 1195, 1061, 827, 1090, 526, 1092, 1250, 1025, 231, 947, 659, 272, 1284, 802, 826, 902, 1040, 870, 345, 658, 822, 715, 1012, 872, 575, 945, 1232, 805, 720, 580, 1215, 854, 603, 1074, 1056, 991, 528, 1218, 642, 1060, 1010, 1203, 288, 978, 884, 762, 1118, 763, 430, 786, 922, 928, 886, 529, 706, 403, 1104, 693, 868, 815, 670, 366, 546, 378, 1151, 901, 1522, 1107, 671, 1333, 745, 724, 1230, 1073, 911, 429, 646, 611, 889, 746, 403, 1032, 616, 637, 1382, 767, 1083, 451, 1212, 803, 1318, 849, 662, 955, 712, 971, 571, 496, 977, 1145, 1160, 931, 830, 580, 359, 805, 668, 770, 771, 390, 882, 1329, 1572, 851, 829, 535, 944, 535, 373, 930, 669, 828, 565, 1219, 620, 1308, 793, 361, 938, 859, 482, 946, 1186, 742, 591, 846, 221, 906, 641, 631, 1068, 780, 536, 517, 844, 652, 721, 552, 523, 627, 525, 1186, 944, 1039, 794, 498, 1076, 654, 1167, 856, 1264, 890, 768, 1225, 691, 729, 543, 936, 1016, 1210, 656, 604, 608, 1324, 1035, 1095, 639, 1311, 1281, 877, 1519, 923, 974, 431, 1057, 903, 809, 1137, 569, 1243, 1118, 880, 720, 1102, 1168, 821, 1193, 432, 999, 555, 1013, 1375, 1200, 1080, 495, 982, 519, 630, 1066, 1164, 1091, 1006, 1039, 943, 1195, 1103, 665, 894, 908, 329, 1081, 951, 641, 1060, 793, 719, 1232, 713, 847, 395, 1213, 1038, 1041, 1587, 984, 752, 1125, 929, 1095, 988, 940, 845, 603, 623, 875, 1158, 772, 1503, 506, 816, 1500, 1007, 638, 633, 936, 703, 704, 1173, 1171, 724, 175, 1051, 604, 1174, 682, 819, 854, 384, 1196, 1249, 1029, 509, 504, 537, 722, 571, 1121, 739, 838, 1027, 363, 743, 570, 818, 546, 721, 736, 842, 905, 1372, 932, 1178, 863, 840, 1334, 299, 855, 499, 1293, 1202, 1061, 689, 1516, 866, 614, 862, 955, 981, 1511, 1153, 1256, 768, 501, 1044, 1282, 985, 1455, 1235, 711, 1001, 627, 641, 889, 914, 644, 877, 913, 1149, 1138, 1188, 557, 871, 787, 1015, 727, 731, 868, 892, 560, 778, 1331, 1025, 318, 619, 864, 203, 911, 1052, 705, 1079, 1461, 1090, 994, 1023, 1050, 1535, 625, 999, 1344, 933, 1498, 1045, 939, 1249, 650, 910, 1294, 951, 649, 1163, 418, 1133, 1089, 493, 1116, 1309, 561, 857, 1073, 1112, 1223, 909, 807, 989, 1053, 997, 813, 976, 1074, 527, 1070, 966, 775, 511, 1004, 800, 717, 933, 1120, 900, 1389, 922, 684, 440, 704, 1106, 668, 767, 757, 847, 936, 835, 1293, 893, 895, 647, 1269, 1480, 1304, 782, 1166, 952, 566, 1124, 846, 1203, 354, 893, 1200, 952, 792, 667, 1164, 1003, 718, 1002, 1139, 1163, 1096, 685, 769, 1003, 977, 532, 1128, 905, 926, 443, 1405, 576, 835, 1116, 1145, 562, 1063, 737, 883, 639, 790, 1021, 967, 772, 995, 1165, 754, 1422, 1583, 1075, 997, 1082, 748, 827, 1197, 516, 465, 1451, 645, 879, 809, 739, 855, 1155, 948, 1117, 460, 465, 791, 1098, 693, 673, 1087, 1400, 532, 910, 829, 1171, 1214, 400, 1221, 1603, 1323, 834, 965, 787, 1045, 918, 589, 1074, 1171, 1116, 744, 905, 931, 1176, 1005, 589, 1238, 1107, 972, 1115, 600, 1181, 1609, 1105, 521, 1158, 1049, 306, 1389, 804, 963, 971, 1199, 917, 716, 668, 973, 998, 1174, 903, 590, 1130, 1472, 841, 811, 597, 1399, 956, 719, 1301, 1083, 1044, 622, 1446, 1097, 1206, 1119, 1345, 604, 1324, 920, 1129, 1340, 798, 444, 980, 997, 1232, 1087, 884, 1093, 422, 1135, 909, 1026, 1055, 824, 462, 678, 945, 1234, 1149, 1542, 1177, 675, 1421, 779, 1013, 1486, 1388, 1191, 514, 1219, 760, 974, 773, 477, 1190, 784, 674, 1428, 778, 1257, 477, 1252, 901, 1352, 1037, 1224, 970, 813, 1009, 1162, 519, 1088, 1157, 1409, 1182, 1089, 755, 438, 1076, 725, 869, 900, 436, 1148, 1421, 1588, 956, 978, 749, 950, 932, 516, 1046, 814, 865, 588, 1303, 713, 1614, 1024, 421, 959, 897, 518, 987, 1275, 765, 887, 893, 333, 925, 732, 635, 1169, 910, 1434, 575, 959, 653, 850, 728, 583, 1093, 542, 1316, 1031, 1059, 1122, 642, 1121, 891, 1209, 925, 1299, 896, 932, 1288, 934, 984, 580, 1113, 1413, 1224, 964, 643, 773, 1337, 1663, 1341, 657, 1357, 1473, 1292, 1551, 970, 1209, 792, 1339, 1141, 1140, 1320, 616, 1383, 1126, 980, 1014, 1146, 1245, 859, 1298, 513, 1182, 662, 1014, 1562, 1297, 1151, 502, 1139, 874, 1259, 1645, 1169, 1242, 1072, 1412, 1115, 1275, 1466, 1239, 1038, 1184, 458, 1094, 1440, 810, 1352, 1339, 830, 1354, 801, 848, 671, 1300, 1147, 1047, 1625, 1117, 1046, 1327, 1047, 1237, 1101, 1018, 1016, 745, 1066, 1132, 1221, 841, 1512, 522, 853, 1535, 1248, 975, 694, 1143, 824, 1009, 1185, 1288, 908, 200, 1308, 904, 1665, 687, 843, 943, 1199, 1198, 1379, 1168, 571, 789, 630, 846, 602, 1342, 1350, 995, 1114, 408, 1043, 1304, 945, 751, 793, 741, 1072, 1006, 1401, 1331, 1296, 1152, 856, 1337, 321, 881, 937, 1318, 1535, 1560, 806, 1696, 924, 625, 994, 1058, 996, 1649, 1183, 1442, 1118, 901, 1094, 1408, 1016, 1653, 1259, 800, 1317, 677, 815, 894, 1017, 1278, 957, 1109, 1284, 1321, 1220, 947, 1383, 860, 1220, 783, 873, 979, 1025, 1228, 1007, 1417, 1231, 735, 783, 872, 492, 1028, 1244, 852, 1144, 1645, 1172, 1088, 1110, 1204, 1622, 738, 1146, 1513, 1106, 1564, 1079, 1021, 1436, 776, 917, 1467, 1051, 814, 1217, 812, 1174, 1271, 863, 1187, 1461, 644, 1308, 1154, 1263, 1225, 1121, 867, 1110, 1157, 1139, 989, 1033, 1270, 1163, 1170, 1037, 880, 803, 1098, 807, 968, 1446, 1235, 1064, 1547, 979, 842, 500, 838, 1398, 939, 916, 953, 920, 946, 851, 1428, 1210, 960, 762, 1456, 1519, 1384, 898, 1361, 995, 1100, 1508, 856, 1284, 553, 1330, 1249, 1258, 1020, 764, 1165, 1179, 1047, 1056, 1285, 1266, 1286, 853, 1397, 1515, 987, 547, 1296, 1215, 965, 489, 1444, 800, 849, 1300, 1242, 662, 1085, 818, 918, 748, 954, 1024, 1022, 954, 1109, 1218, 821, 1431, 1587, 1315, 1081, 1140, 754, 943, 1371, 1003, 840, 1475, 722, 1081, 1033, 1216, 1254, 1175, 1122, 1203, 728, 488, 1189, 1377, 1136, 907, 1267, 1416, 751, 1169, 1101, 1289, 1241, 597, 1322, 1625, 1332, 961, 985, 915, 1128, 1069, 764, 1175, 1177, 1156, 889, 1075, 1088, 1251, 1031, 738, 1523, 1229, 994, 1489, 637, 1185, 1651, 1112, 680, 1608, 1197, 513, 1538, 978, 1040, 1000, 1432, 1030, 887, 833, 1057, 1094, 1565, 1190, 696, 1178, 1556, 1045, 1307, 1294, 1436, 1096, 747, 1485, 1128, 1430, 664, 1653, 1180, 1597, 1167, 1452, 776, 1341, 1305, 1142, 1418, 849, 562, 1247, 998, 1391, 1161, 941, 1387, 912, 1149, 1078, 1029, 1141, 1197, 582, 701, 961, 1423, 1195, 1674, 1205, 964, 1633, 929, 1127, 1571, 1581, 1291, 681, 1272, 781, 981, 783, 765, 1295, 974, 1015, 1516, 873, 1324, 482, 1262, 1371, 1648, 1101, 1240, 1115, 837, 1048, 1301, 763, 1260, 1229, 1426, 1316, 1208, 963, 1083, 1125, 992, 882, 1034, 467, 1176, 1429, 1610, 1452, 1376, 753, 1184, 1239, 777, 1291, 1264, 1223, 659, 1378, 797, 1632, 1071, 575, 1099, 926, 801, 1042, 1322, 1111, 1234, 1112, 979, 962, 993, 713, 1271, 1008, 1533, 653, 999, 746, 876, 751, 1123, 1319, 693, 1354, 1209, 1207, 1159, 1250, 1192, 1385, 1350, 952, 1543, 1020, 1067, 1632, 1119, 1635, 1165, 1161, 1483, 1347, 983, 669, 796, 1412, 1684, 1374, 886, 1468, 1479, 1594, 1781, 1113, 1274, 969, 1343, 1403, 1261, 1440, 681, 1424, 1216, 1207, 1210, 1172, 1325, 935, 1414, 1123, 1287, 1158, 1032, 1589, 1554, 1326, 562, 1313, 949, 1296, 1760, 1260, 1552, 1129, 1422, 1258, 1542, 1525, 1253, 1089, 1255, 1131, 1220, 1652, 869, 1410, 1351, 1266, 1518, 868, 884, 1302, 1486, 1362, 1185, 1652, 1172, 1205, 1388, 1479, 1270, 1224, 1297, 1138, 817, 1170, 1214, 1240, 1153, 1551, 817, 915, 1553, 1319, 1496, 717, 1194, 850, 1091, 1256, 1541, 1039, 561, 1358, 938, 1707, 1557, 1368, 1160, 1342, 1404, 1515, 1435, 727, 790, 1396, 854, 891, 1783, 1365, 1271, 1183, 1400, 1205, 1367, 1068, 794, 1006, 803, 1485, 1164, 1422, 1502, 1334, 1359, 1215, 1698, 1042, 1204, 1028, 1458, 1550, 1600, 1111, 1700, 1132, 992, 1134, 1430, 1049, 1731, 1323, 1555, 1228, 1456, 1099, 1545, 1091, 1685, 1445, 857, 1612, 735, 1126, 946, 1168, 1399, 1222, 1192, 1373, 1575, 1317, 1073, 1506, 1143, 1440, 1438, 1263, 1105, 1327, 1256, 1126, 1619, 1265, 924, 961, 1023, 866, 1070, 1437, 1132, 1487, 1675, 1333, 1423, 1182, 1295, 1683, 939, 1154, 1617, 1212, 1665, 1414, 1107, 1534, 1282, 1402, 1485, 1096, 1059, 1495, 981, 1235, 1381, 1017, 1240, 1534, 875, 1561, 1279, 1354, 1353, 1396, 1243, 1547, 1356, 1166, 1181, 1343, 1285, 1247, 1255, 1357, 975, 919, 1318, 988, 1477, 1521, 1358, 1206, 1549, 1146, 1117, 1305, 1019, 1406, 982, 942, 1014, 1075, 1004, 860, 1512, 1241, 1053, 858, 1620, 1527, 1415, 1251, 1497, 1108, 1166, 1667, 967, 1434, 665, 1335, 1313, 1406, 1283, 902, 1362, 1358, 1501, 1222, 1427, 1280, 1309, 984, 1647, 1573, 1449, 618, 1328, 1310, 1120, 844, 1739, 1424, 1246, 1474, 1561, 699, 1277, 826, 1386, 1257, 1227, 1056, 1189, 975, 1125, 1329, 917, 1464, 1784, 1405, 1152, 1153, 935, 1092, 1464, 1040, 907, 1592, 1428, 1136, 1063, 1420, 1390, 1251, 1217, 1268, 1143, 708, 1603, 1407, 1160, 1207, 1340, 1488, 998, 1315, 1344, 1300, 1365, 1134, 1401, 1629, 1366, 1008, 1013, 1211, 1179, 1188, 825, 1262, 1393, 1469, 1173, 1077, 1248, 1417, 1095, 907, 1654, 1320, 1065, 1598, 799, 1601, 1656, 1190, 714, 1754, 1595, 651, 1647, 1063, 1397, 1157, 1481, 1237, 1060, 1482, 1287, 1192, 1618, 1394, 1259, 1558, 1635, 1162, 1377, 1803, 1492, 1476, 774, 1626, 1420, 1504, 689, 1687, 1372, 1616, 1199, 1471, 934, 1342, 1351, 1261, 1442, 923, 723, 1361, 1084, 1450, 1233, 1011, 1389, 1338, 1186, 1340, 1110, 1327, 1225, 690, 1483, 1064, 1443, 1258, 1697, 1213, 966, 1687, 1161, 1314, 1605, 1877, 1477, 747, 1280, 1028, 1138, 820, 782, 1560, 1038, 1592, 1517, 894, 1586, 568, 1276, 1379, 1753, 1230, 1749, 1122, 1458, 1080, 1526, 1411, 1309, 1332, 1430, 1381, 1255, 1648, 1248, 1267, 1459, 914, 1085, 1184, 1180, 1459, 1629, 1463, 1378, 845, 1343, 1415, 1037, 1292, 1336, 1431, 734, 1426, 1193, 1688, 1279, 940, 1313, 1036, 1155, 1099, 1406, 1490, 1326, 1556, 1069, 1005, 1142, 1010, 1273, 1312, 1546, 761, 1624, 1065, 921, 1055, 1134, 1518, 839, 1435, 1234, 1244, 1238, 1297, 1254, 1494, 1484, 1145, 1604, 1404, 1289, 1645, 1131, 1658, 1198, 1392, 1557, 1667, 1082, 972, 918, 1432, 1701, 1637, 1312, 1579, 1680, 1864, 1825, 1194, 1457, 1370, 1411, 1479, 1398, 1510, 1049, 1447, 1576, 1252, 1290, 1360, 1679, 1070, 1506, 1699, 1359, 1204, 1222, 1818, 1596, 1363, 834, 1383, 1513, 1499, 1766, 1646, 1629, 1328, 1423, 1460, 1640, 1923, 1302, 1216, 1364, 1369, 1233, 1739, 1031, 1624, 1505, 1434, 1630, 1451, 1196, 1548, 1527, 1454, 1520, 1707, 1407, 1467, 1561, 1604, 1319, 1543, 1456, 1374, 881, 1453, 1323, 1735, 1246, 1660, 1381, 1188, 1709, 1391, 1532, 771, 1264, 851, 1219, 1322, 1639, 1144, 960, 1615, 1136, 1732, 1690, 1371, 1433, 1377, 1459, 1571, 1447, 1058, 1245, 1451, 1053, 949, 1894, 1531, 1305, 1253, 1493, 1303, 1380, 1581, 1330, 1082, 1036, 1541, 1520, 1437, 1585, 1359, 1425, 1410, 1857, 1465, 1239, 1208, 1585, 1642, 1807, 1743, 1710, 1167, 1135, 1465, 1513, 1175, 1759, 1524, 1655, 1348, 1471, 1150, 1581, 1917, 1694, 1545, 911, 1622, 852, 1348, 1191, 1261, 1410, 1491, 1237, 1401, 1822, 1325, 1457, 1668, 1236, 1449, 1698, 1270, 1392, 1418, 1486, 1133, 1797, 1503, 1041, 1198, 1392, 1041, 1632, 1621, 1311, 1638, 1832, 1364, 1452, 1499, 1472, 1913, 1295, 1208, 1766, 1369, 1780, 1541, 1462, 1545, 1336, 1569, 1693, 1385, 1276, 1547, 1266, 1338, 1505, 1029, 1493, 1670, 958, 1572, 1607, 1446, 1634, 1530, 1414, 1704, 1552, 1441, 1653, 1480, 1310, 1712, 1347, 1403, 1408, 951, 1360, 1213, 1562, 1710, 1419, 1528, 1589, 1443, 1345, 1636, 1071, 1637, 1026, 1644, 1030, 1638, 1221, 1119, 1570, 1712, 1253, 989, 1742, 1790, 1537, 1619, 1508, 1150, 1326, 1926, 1470, 1702, 940, 1733, 1362, 1429, 1299, 938, 1606, 1453, 1568, 1335, 1738, 1564, 1312, 1275, 1718, 1575, 1528, 937, 1491, 1415, 1179, 900, 1843, 1471, 1345, 1536, 1573, 930, 1301, 1020, 1482, 1412, 1274, 1105, 1347, 1344, 1764, 1729, 1062, 1563, 1843, 1532, 1228, 1302, 1273, 1397, 1591, 1391, 1052, 1662, 1470, 1181, 1425, 1427, 1578, 1263, 1395, 1292, 1317, 899, 1808, 1539, 1650, 1231, 1376, 1515, 1001, 1330, 1603, 1331, 1419, 1369, 1444, 1709, 1374, 1068, 1019, 1306, 1298, 1293, 1011, 1831, 1502, 1590, 1238, 1148, 1269, 1555, 1114, 1036, 1740, 1325, 1405, 1670, 1062, 1773, 1688, 1335, 1476, 1827, 1723, 820, 1748, 1072, 1536, 1398, 1732, 1587, 1400, 1529, 1355, 1304, 1651, 1722, 1268, 1673, 1800, 1178, 1503, 1847, 1656, 1497, 1595, 1689, 1576, 1740, 963, 1822, 1393, 1743, 1246, 1499, 1106, 1356, 1387, 1367, 1745, 1009, 780, 1458, 1206, 1673, 1250, 1662, 1611, 1555, 1193, 1353, 1597, 1559, 1445, 1187, 1677, 1155, 1464, 1497, 1713, 1357, 1450, 1696, 1257, 1339, 1685, 1894, 1615, 1733, 1315, 1364, 1363, 1418, 1123, 1738, 1445, 1620, 1660, 1156, 1599, 926, 1507, 1640, 1763, 1289, 1791, 1648, 1601, 1321, 1544, 1577, 1683, 1376, 1543, 1540, 1361, 1666, 1273, 1433, 1504, 993, 1265, 1288, 1454, 1482, 1736, 1481, 1439, 1286, 1467, 1461, 1474, 1510, 1489, 1681, 934, 1643, 1606, 1791, 1491, 1341, 1429, 1127, 1227, 1299, 1600, 1904, 1395, 1588, 1084, 1057, 1183, 1252, 1283, 1478, 1611, 1320, 1851, 1355, 1223, 1147, 1403, 1576, 1035, 1460, 1260, 1641, 1538, 1368, 1475, 1511, 1672, 1329, 1764, 1426, 1353, 1691, 1214, 1915, 1247, 1538, 1658, 1716, 1689, 1000, 986, 1884, 1975, 1730, 1899, 1623, 1834, 1981, 1952, 1473, 1490, 1529, 1557, 1748, 1544, 1617, 1720, 1690, 1667, 1630, 1641, 1678, 1750, 1367, 1525, 1786, 1447, 1395, 1390, 1826, 1598, 1427, 861, 1582, 1658, 1878, 1768, 1651, 1699, 1532, 1498, 1529, 1765, 1939, 1384, 1723, 1872, 1758, 1438, 1742, 1093, 1657, 1759, 1650, 1634, 1519, 1290, 1569, 1573, 1591, 1643, 1928, 1411, 1786, 1582, 1661, 1521, 1657, 1609, 1633, 972, 1468, 1644, 1776, 1388, 1692, 1409, 1278, 1812, 1631, 1873, 1310, 1272, 1109, 1333, 1522, 1722, 1612, 1048, 1741, 1674, 1755, 1711, 1568, 1437, 1484, 1567, 1746, 1583, 1148, 1307, 1570, 1314, 950, 1906, 1654, 1379, 1494, 1518, 1455, 1393, 1703, 1390, 1606, 1226, 1669, 1580, 1692, 1719, 1366, 1438, 1433, 1982, 1514, 1676, 1609, 1742, 1690, 1819, 1763, 1730, 1321, 1566, 2031, 1680, 1741, 1839, 1762, 1925, 1536, 1524, 1283, 1723, 1924, 1706, 1558, 1375, 1758, 1417, 1691, 1350, 1727, 1475, 1537, 1457, 1506, 1917, 1386, 1695, 1753, 1355, 1756, 1775, 1613, 1563, 1425, 1488, 1176, 1827, 1556, 1131, 1349, 1448, 1281, 1749, 1664, 1572, 1744, 1860, 1813, 1762, 1642, 1689, 1928, 1570, 1878, 1890, 1739, 1809, 1799, 1663, 1591, 1495, 1695, 1762, 1580, 1306, 1879, 1462, 1413, 1637, 1078, 1567, 1785, 1078, 1659, 1801, 1530, 1769, 1579, 1549, 1747, 1682, 1796, 1668, 1727, 1822, 1836, 1378, 1551, 1501, 1810, 1478, 1278, 1574, 1764, 1533, 1627, 1714, 1489, 1480, 1726, 1584, 1643, 1387, 1655, 1058, 1720, 1370, 1595, 1795, 1832, 1843, 1212, 1871, 1840, 1886, 1831, 1720, 1272, 1765, 1956, 1496, 1855, 1144, 1830, 1404, 1593, 1507, 967, 1768, 1671, 1842, 1469, 1829, 1593, 1621, 1516, 1763, 1612, 1982, 1124, 1613, 1715, 1375, 1311, 1844, 1509, 1448, 1542, 1660, 1005, 1490, 1408, 1620, 1707, 1277, 1568, 1373, 1887, 1827, 1778, 1510, 1782, 1886, 1537, 1424, 1402, 1282, 1496, 1681, 1649, 1286, 1858, 1566, 1622, 1972, 1562, 1868, 1316, 1754, 1725, 1559, 1086, 1873, 1594, 1792, 1351, 1579, 1889, 1043, 1380, 1789, 1588, 1481, 1487, 1650, 1717, 1602, 1413, 1226, 1370, 1368, 1346, 1493, 1902, 1554, 1713, 1564, 1244, 1432, 1597, 1328, 1285, 1828, 1484, 1466, 1719, 1550, 1909, 1854, 1582, 1596, 1903, 1751, 1530, 1905, 1227, 1771, 1605, 1807, 1777, 1738, 1592, 1460, 1507, 1708, 1745, 1385, 1686, 1869, 1277, 1517, 1867, 1776, 1846, 1809, 1803, 1674, 1748, 1191, 1837, 1420, 1754, 1274, 1644, 1201, 1366, 1450, 1402, 1757, 1140, 1500, 1465, 1509, 1793, 1352, 1804, 1702, 1560, 1431, 1549, 1679, 1769, 1615, 1229, 1740, 1775, 1534, 1498, 1757, 1416, 1567, 1711, 1360, 1472, 1705, 1923, 1782, 1746, 1767, 1575, 1531, 1628, 1772, 1868, 1771, 1628, 1719, 1287, 1623, 1900, 1709, 1703, 1840, 1382, 1841, 1808, 1860, 1788, 1652, 1687, 1810, 1488, 1661, 1867, 1476, 1785, 1646, 1468, 1611, 1159, 1492, 1291, 1463, 1716, 1778, 1669, 1448, 1539, 1633, 1511, 1523, 1672, 1821, 1718, 1349, 1875, 1659, 1835, 1558, 1520, 1670, 1639, 1540, 1885, 1779, 1972, 1531, 1874, 1627, 1202, 1639, 1553, 1540, 1539, 1646, 1439, 1856, 1444, 1279, 1241, 1952, 1701, 1280, 1616, 1332, 1692, 1664, 1373, 1781, 1733, 1995, 1571, 1777, 1593, 1578, 1869, 1233, 1916, 1504, 1849, 1704, 1729, 1896, 1953, 1449, 1899, 2007, 1744, 2003, 1875, 1935, 2016, 1993, 1527, 1788, 1734, 1726, 1823, 1636, 1619, 1734, 1755, 1829, 1773, 1799, 1700, 1947, 1938, 1647, 1789, 1550, 1396, 1590, 1964, 1951, 1634, 1066, 1856, 1717, 1988, 1791, 1664, 1977, 1544, 1715, 1563, 1801, 1988, 1725, 1815, 1921, 1897, 1442, 1831, 1217, 1752, 1866, 1861, 1659, 1706, 1724, 1678, 1714, 1724, 1958, 2036, 1487, 1978, 1657, 1997, 1800, 1895, 1708, 1811, 1678, 1705, 1962, 1927, 1699, 1694, 1625, 1501, 1844, 1686, 1958, 1614, 1307, 1129, 1407, 1683, 1835, 1800, 1152, 1793, 1879, 1820, 1747, 1598, 1922, 1553, 1768, 1811, 1838, 1290, 1953, 1781, 1610, 1626, 1936, 1751, 1665, 1584, 1823, 1816, 1758, 1932, 1454, 1793, 1436, 1817, 1675, 1697, 1927, 1655, 1546, 1677, 2003, 1666, 1735, 1811, 1808, 1813, 1834, 1850, 1821, 1565, 1975, 2045, 1816, 1809, 1951, 1862, 2048, 1911, 1686, 1441, 1878, 1976, 1865, 1906, 1608, 1871, 1469, 1803, 1932, 1798, 1862, 1881, 1577, 1802, 1979, 1455, 1977, 1820, 1495, 1816, 1907, 1784, 1774, 1789, 1743, 1533, 1830, 1684, 1201, 1548, 1566, 1334, 1776, 1724, 1752, 1880, 1908, 1863, 1898, 1925, 1693, 2033, 1799, 1910, 1893, 1928, 1833, 1841, 1706, 1801, 1599, 1737, 1934, 1688, 2035, 1885, 1796, 1807, 1881, 1419, 1901, 1948, 1137, 1685, 1848, 1624, 1829, 1868, 1630, 1819, 1772, 1946, 1787, 1805, 1941, 1854, 1554, 1722, 1729, 1877, 1863, 1736, 1626, 1918, 1631, 1628, 1986, 1616, 1679, 1820, 1869, 1756, 1662, 1876, 1380, 1815, 1914, 1680, 1956, 1870, 1947, 1421, 1886, 1936, 1911, 1918, 1728, 1346, 1769, 2021, 1601, 1912, 1548, 1835, 1502, 1605, 1927, 1372, 1865, 1673, 1891, 1494, 1882, 1779, 1814, 1940, 1806, 1759, 2011, 1441, 1623, 1846, 1514, 1663, 2033, 1552, 1819, 1574, 1850, 1671, 1702, 1757, 1756, 1836, 1384, 1980, 1640, 2038, 2006, 1794, 1805, 1785, 1955, 1580, 1930, 1583, 1526, 1523, 1833, 1725, 1462, 1883, 1682, 1794, 1995, 1892, 1874, 1349, 1818, 1730, 1604, 1170, 1890, 1777, 1806, 1701, 1589, 1911, 1254, 1526, 1942, 1825, 1514, 1966, 1780, 1864, 1671, 1817, 1677, 1443, 1855, 1569, 1922, 1934, 1712, 1931, 1765, 1888, 1463, 1627, 1505, 1492, 1870, 1590, 1565, 1922, 1698, 1956, 1985, 2006, 1635, 1931, 1899, 1600, 1973, 1268, 1823, 1710, 1867, 1916, 1804, 1642, 1466, 1767, 1832, 1996, 1672, 1824, 1921, 1924, 1838, 1904, 1908, 1861, 1960, 1998, 1728, 1760, 1394, 1993, 1546, 1974, 1525, 1847, 1202, 1613, 1453, 1602, 1826, 1875, 1594, 1596, 1753, 1970, 1478, 2055, 1853, 1713, 1474, 1797, 1682, 1943, 1745, 1830, 1814, 1897, 1621, 1817, 1802, 1617, 1649, 1978, 1500, 1483, 1804, 2040, 1983, 1775, 1893, 1636, 1896, 1774, 1784, 1903, 1782, 1783, 1852, 1894, 1770, 1924, 2020, 1926, 1929, 1714, 2009, 1989, 1865, 1898, 1737, 1945, 1847, 1696, 1767, 1907, 1715, 1849, 1967, 1694, 1747, 1337, 1608, 1363, 1676, 1734, 1859, 1755, 1470, 1584, 1957, 1919, 1528, 1788, 1900, 1741, 1508, 1971, 1749, 1937, 1970, 1941, 1794, 1693, 1721, 1991, 1915, 1997, 1824, 1942, 1996, 1236, 1669, 1887, 1654, 1982, 1898, 1761, 1883, 1700, 1521, 1681, 2011, 1751, 1281, 1684, 1607, 1845, 1860, 1524, 1844, 1901, 1999, 1760, 1940, 1705, 1736, 1987, 1721, 2033, 2024, 1990, 2047, 1965, 2018, 2044, 1473, 1920, 2030, 1968, 2045, 2025, 1995, 2054, 2017, 1559, 1876, 1891, 1871, 2013, 1949, 1821, 1892, 1834, 1946, 1778, 1880, 1864, 2042, 2016, 2026, 1945, 2031, 1574, 1853, 1980, 2034, 2056, 2012, 1912, 1812, 2031, 1836, 1992, 2058, 1941, 1814, 2007, 2051, 2048, 2044, 1880, 1926, 2047, 1761, 1839, 1365, 1772, 1986, 1985, 1905, 2060, 1909, 1857, 1944, 1826, 2000, 2050, 2023, 2020, 1931, 2023, 2043, 2005, 1967, 1872, 1907, 1944, 1981, 1965, 1999, 1711, 1916, 1517, 1958, 1954, 2023, 1961, 2064, 1798, 1577, 1930, 1896, 1859, 1382, 1987, 2039, 2037, 1787, 1666, 1984, 1602, 1933, 2008, 2057, 1338, 1976, 2038, 1971, 1950, 1954, 1991, 1828, 1695, 1845, 1873, 1889, 2037, 1641, 1961, 1731, 1884, 1881, 1914, 1978, 1783, 1925, 1882, 2010, 2062, 1846, 1921, 2029, 2046, 1910, 2026, 1953, 1607, 2063, 2059, 2000, 1884, 2008, 2014, 2052, 2015, 1848, 1716, 2003, 2036, 2006, 1932, 1973, 1976, 1522, 2028, 2059, 1917, 1947, 2027, 1954, 1964, 2059, 2035, 1999, 1910, 1893, 1877, 1933, 1934, 2019, 1858, 1990, 2037, 1876, 1903, 1792, 1966, 2025, 1509, 1853, 1908, 1837, 2044, 1914, 1938, 1913, 2004, 1824, 2047, 1856, 1938, 2032, 2022, 1870, 1912, 1779, 2039, 2049, 1761, 1983, 1950, 2054, 2002, 1959, 1848, 1919, 1790, 1993, 1967, 1900, 1718, 1897, 2019, 2051, 2053, 1838, 1930, 1918, 2015, 2036, 1904, 1962, 1890, 1852, 1845, 2009, 2050, 2004, 2032, 1883, 2057, 2028, 2040, 2056, 1851, 1737, 1939, 1872, 1939, 1975, 1988, 1676, 1919, 1994, 2019, 1984, 1885, 2005, 1812, 2008, 2040, 1957, 2028, 1842, 2032, 2039, 2062, 1828, 1992, 1746, 1841, 1980, 1940, 1994, 1416, 1937, 1866, 1996, 1866, 1929, 2013, 1815, 2064, 1959, 2012, 2022, 1735, 1727, 1950, 1981, 1991, 2043, 1929, 1920, 1578, 1859, 1960, 1949, 1852, 1955, 1966, 2018, 2063, 1656, 2055, 2041, 1969, 2046, 1905, 2017, 1726, 1943, 1717, 2009, 1802, 2062, 1750, 1675, 1990, 1963, 1795, 2061, 1998, 2042, 1770, 2049, 1862, 1668, 2056, 2000, 1987, 2002, 1797, 1882, 1963, 1512, 1708, 1949, 1901, 1935, 1997, 1971, 2017, 2054, 1920, 1691, 1585, 2001, 2005, 1963, 2015, 1933, 2026, 1909, 1913, 1704, 1798, 1962, 1610, 2024, 1969, 1810, 1994, 1703, 2055, 2021, 2030, 2024, 1986, 1906, 1825, 2002, 1770, 1855, 1837, 2014, 2010, 1849, 1697, 1661, 1863, 1935, 2052, 1957, 2058, 1937, 2061, 2035, 2045, 1984, 1888, 1965, 2058, 1854, 2007, 1842, 2060, 1888, 1989, 1599, 2014, 1638, 2027, 1731, 2012, 1891, 1936, 1614, 1618, 1806, 2030, 1586, 2057, 1968, 1974, 1477, 1959, 1840, 1973, 1970, 1955, 1951, 1998, 1985, 1892, 1818, 1874, 1961, 2046, 1989, 1960, 2041, 2049, 2001, 1948, 2048, 1983, 1944, 1790, 2042, 2051, 1992, 1923, 2041, 1952, 1972, 1945, 2029, 1948, 1974, 1943, 2038, 2050, 1942, 1968, 1805, 1977, 2004, 1752, 1787, 1915, 1732, 2063, 2021, 1766, 1946, 1618, 1858, 2025, 1857, 1773, 1895, 1833, 1887, 1744, 1979, 2010, 1850, 2061, 2016, 1780, 1586, 2027, 1969, 2034, 1979, 2018, 1813, 1839, 1902, 2013, 2011, 2052, 1851, 2029, 2064, 1386, 1750, 1902, 1771, 2034, 2001, 1795, 2053, 1792, 1631, 1964, 2053, 1796, 1409, 1774, 1721, 1889, 1879, 1728, 2020, 2043, 2060, 1895, 2022, 1861, 1786}; uint16_t H_cols[] = { 208, 242, 84, 114, 314, 135, 349, 90, 64, 57, 26, 52, 16, 142, 120, 244, 167, 164, 133, 179, 22, 180, 413, 161, 224, 121, 57, 22, 394, 17, 9, 54, 84, 20, 98, 311, 322, 308, 86, 91, 77, 41, 110, 192, 18, 11, 210, 133, 248, 276, 389, 100, 37, 4, 239, 15, 32, 15, 7, 10, 109, 82, 19, 50, 137, 278, 43, 181, 89, 206, 113, 285, 10, 95, 12, 180, 23, 93, 100, 124, 200, 130, 81, 149, 6, 251, 181, 227, 156, 215, 194, 284, 206, 177, 171, 174, 40, 136, 187, 89, 98, 156, 44, 30, 48, 78, 349, 126, 56, 3, 212, 43, 111, 183, 63, 54, 35, 63, 333, 158, 96, 100, 270, 38, 97, 4, 139, 163, 67, 251, 139, 42, 214, 117, 26, 98, 132, 105, 13, 61, 330, 223, 183, 95, 295, 95, 55, 29, 65, 35, 75, 130, 8, 98, 344, 46, 239, 155, 131, 75, 246, 3, 44, 260, 199, 21, 99, 118, 76, 8, 87, 271, 257, 171, 98, 44, 255, 17, 276, 91, 50, 21, 90, 262, 118, 208, 214, 35, 140, 159, 58, 277, 158, 180, 53, 93, 58, 264, 40, 98, 4, 284, 183, 24, 7, 123, 133, 57, 223, 124, 156, 202, 34, 324, 67, 452, 63, 123, 303, 303, 169, 40, 32, 24, 32, 5, 220, 218, 103, 222, 113, 111, 100, 30, 146, 266, 4, 195, 14, 55, 145, 37, 40, 18, 184, 188, 267, 38, 116, 35, 60, 53, 133, 58, 9, 296, 63, 57, 30, 17, 86, 157, 105, 29, 73, 285, 122, 9, 31, 199, 347, 73, 55, 135, 86, 2, 42, 67, 119, 21, 351, 35, 213, 173, 61, 176, 194, 109, 72, 77, 273, 133, 244, 90, 313, 220, 27, 192, 63, 299, 208, 202, 3, 66, 14, 19, 127, 68, 348, 246, 26, 87, 75, 20, 215, 93, 212, 180, 149, 114, 133, 48, 235, 17, 247, 257, 42, 149, 57, 363, 75, 334, 67, 97, 29, 109, 241, 59, 332, 15, 228, 6, 186, 81, 271, 31, 103, 122, 150, 105, 110, 92, 277, 213, 358, 37, 100, 129, 46, 367, 118, 26, 115, 211, 3, 77, 217, 23, 24, 145, 70, 48, 68, 179, 112, 30, 110, 177, 14, 97, 68, 66, 103, 105, 83, 231, 29, 383, 45, 64, 42, 32, 201, 269, 67, 9, 149, 3, 34, 86, 373, 51, 409, 130, 39, 80, 177, 118, 34, 248, 175, 50, 37, 76, 14, 7, 122, 49, 262, 27, 79, 102, 295, 113, 26, 111, 135, 10, 356, 97, 21, 2, 129, 451, 140, 60, 42, 191, 33, 152, 25, 279, 99, 22, 124, 168, 305, 34, 104, 224, 154, 50, 71, 97, 60, 209, 73, 57, 10, 322, 159, 375, 104, 17, 273, 374, 81, 121, 160, 157, 411, 88, 236, 166, 88, 53, 164, 135, 36, 375, 291, 211, 4, 233, 84, 94, 47, 29, 10, 306, 54, 183, 16, 128, 42, 86, 96, 488, 31, 109, 150, 42, 332, 110, 315, 44, 321, 82, 109, 235, 80, 212, 35, 128, 80, 215, 7, 115, 44, 102, 281, 86, 27, 79, 280, 33, 227, 142, 113, 104, 102, 281, 161, 238, 197, 106, 111, 72, 163, 76, 41, 58, 4, 46, 45, 122, 281, 219, 52, 53, 45, 66, 264, 69, 37, 16, 138, 221, 176, 176, 98, 42, 75, 92, 80, 158, 163, 71, 26, 49, 109, 108, 70, 85, 378, 186, 178, 9, 12, 4, 74, 25, 65, 207, 8, 339, 5, 45, 205, 163, 234, 14, 56, 77, 62, 185, 55, 89, 19, 228, 117, 113, 80, 9, 8, 38, 74, 10, 112, 32, 205, 8, 242, 142, 119, 26, 158, 28, 148, 54, 69, 28, 81, 91, 142, 78, 158, 49, 66, 45, 179, 249, 91, 90, 219, 153, 339, 90, 14, 56, 60, 392, 9, 162, 274, 102, 79, 89, 206, 114, 365, 2, 232, 172, 36, 8, 14, 317, 173, 65, 2, 37, 112, 273, 38, 179, 107, 244, 9, 173, 67, 141, 265, 156, 96, 102, 158, 77, 96, 331, 2, 102, 302, 94, 23, 93, 92, 408, 95, 229, 2, 25, 326, 62, 82, 166, 185, 7, 170, 15, 30, 216, 93, 94, 186, 24, 124, 268, 36, 108, 156, 448, 65, 134, 356, 79, 91, 165, 63, 30, 123, 56, 164, 97, 348, 262, 72, 294, 3, 33, 36, 143, 79, 31, 158, 124, 46, 131, 115, 103, 33, 280, 22, 69, 80, 343, 386, 295, 107, 39, 122, 18, 215, 78, 166, 136, 163, 222, 5, 405, 196, 253, 401, 78, 138, 184, 190, 131, 5, 141, 91, 84, 10, 210, 184, 171, 39, 20, 283, 92, 337, 257, 172, 160, 28, 134, 170, 18, 110, 108, 85, 21, 62, 122, 23, 10, 128, 161, 152, 156, 65, 249, 124, 191, 282, 139, 220, 238, 24, 60, 66, 41, 196, 185, 68, 72, 51, 121, 12, 218, 13, 101, 89, 93, 298, 293, 197, 201, 332, 36, 128, 160, 182, 42, 19, 53, 259, 116, 331, 131, 84, 125, 43, 285, 79, 112, 66, 66, 288, 93, 93, 158, 87, 104, 134, 131, 156, 58, 33, 6, 42, 16, 130, 182, 354, 141, 12, 65, 60, 1, 169, 175, 82, 44, 82, 108, 17, 69, 28, 29, 80, 145, 25, 66, 88, 14, 64, 290, 160, 46, 113, 1, 251, 55, 61, 185, 199, 153, 13, 237, 150, 269, 5, 100, 126, 243, 312, 56, 219, 203, 156, 144, 164, 161, 87, 236, 203, 10, 216, 13, 166, 239, 19, 141, 51, 284, 61, 11, 75, 205, 31, 128, 49, 2, 33, 5, 135, 100, 194, 78, 154, 245, 51, 321, 121, 160, 114, 74, 44, 113, 59, 259, 6, 49, 144, 6, 22, 214, 171, 98, 181, 225, 368, 8, 274, 154, 262, 234, 21, 19, 352, 9, 165, 20, 90, 85, 255, 367, 174, 29, 145, 43, 1, 3, 153, 10, 280, 77, 221, 12, 11, 142, 370, 143, 116, 145, 223, 330, 36, 9, 157, 99, 271, 88, 291, 49, 89, 47, 94, 394, 344, 305, 38, 30, 39, 6, 129, 1, 242, 268, 200, 298, 182, 297, 175, 27, 117, 135, 108, 246, 60, 38, 225, 48, 12, 124, 229, 55, 50, 311, 70, 133, 119, 151, 199, 73, 70, 98, 26, 76, 99, 154, 112, 76, 236, 273, 22, 109, 206, 61, 34, 146, 292, 132, 254, 42, 1, 121, 310, 33, 41, 49, 168, 226, 247, 459, 47, 211, 187, 41, 58, 8, 388, 359, 129, 83, 129, 190, 55, 189, 48, 258, 60, 58, 13, 205, 263, 232, 151, 96, 77, 31, 53, 64, 174, 197, 200, 25, 93, 191, 139, 217, 5, 117, 51, 212, 72, 28, 2, 236, 114, 320, 35, 106, 74, 28, 425, 282, 49, 132, 2, 82, 47, 143, 142, 100, 25, 79, 43, 24, 23, 399, 92, 97, 290, 31, 69, 109, 165, 83, 41, 98, 84, 195, 319, 347, 222, 37, 39, 104, 5, 196, 207, 47, 4, 223, 141, 32, 47, 81, 96, 31, 68, 101, 145, 177, 85, 129, 271, 334, 224, 36, 117, 56, 70, 410, 212, 87, 298, 361, 160, 164, 34, 19, 52, 66, 310, 4, 105, 40, 180, 137, 263, 37, 73, 237, 29, 135, 20, 7, 336, 197, 68, 2, 131, 28, 60, 88, 94, 58, 83, 38, 218, 7, 1, 71, 296, 149, 355, 146, 179, 64, 2, 418, 155, 127, 76, 348, 54, 83, 251, 48, 27, 185, 32, 84, 4, 89, 107, 360, 257, 29, 54, 318, 56, 95, 295, 51, 45, 47, 24, 256, 173, 92, 154, 63, 255, 321, 132, 76, 116, 92, 308, 20, 52, 178, 292, 87, 216, 275, 16, 152, 151, 165, 226, 276, 36, 1, 333, 30, 428, 17, 136, 11, 192, 45, 40, 34, 268, 68, 292, 54, 85, 120, 116, 206, 92, 99, 213, 91, 15, 14, 43, 112, 305, 319, 157, 136, 76, 25, 141, 95, 82, 11, 32, 41, 74, 49, 301, 122, 128, 338, 94, 129, 265, 71, 11, 109, 22, 328, 13, 105, 22, 196, 240, 198, 7, 146, 181, 115, 62, 61, 218, 64, 170, 222, 15, 99, 36, 31, 258, 69, 41, 56, 60, 129, 33, 103, 57, 21, 103, 127, 165, 13, 39, 328, 105, 228, 107, 120, 86, 98, 27, 54, 205, 167, 244, 74, 238, 38, 89, 5, 120, 329, 37, 37, 278, 24, 140, 118, 127, 203, 23, 106, 286, 243, 72, 152, 86, 61, 22, 11, 6, 34, 256, 269, 158, 175, 211, 317, 253, 50, 50, 27, 130, 454, 41, 250, 267, 144, 303, 11, 104, 63, 18, 124, 104, 58, 140, 25, 151, 58, 239, 286, 155, 217, 27, 182, 10, 398, 65, 190, 81, 69, 119, 78, 20, 136, 106, 51, 188, 200, 350, 303, 133, 53, 73, 15, 158, 262, 150, 192, 10, 289, 162, 362, 234, 232, 16, 225, 334, 294, 6, 105, 125, 68, 72, 176, 239, 20, 163, 353, 118, 117, 170, 90, 258, 50, 45, 88, 87, 128, 85, 4, 62, 34, 268, 258, 183, 25, 146, 85, 44, 133, 107, 140, 87, 64, 18, 70, 76, 95, 309, 147, 34, 308, 19, 237, 21, 217, 115, 49, 177, 201, 88, 149, 163, 5, 325, 455, 96, 52, 77, 24, 152, 130, 207, 67, 220, 36, 18, 48, 88, 40, 148, 179, 6, 155, 19, 138, 74, 39, 51, 198, 141, 142, 106, 103, 67, 111, 107, 186, 68, 37, 166, 28, 94, 289, 15, 126, 121, 43, 108, 117, 128, 406, 71, 333, 39, 38, 69, 313, 267, 17, 249, 40, 351, 40, 202, 138, 262, 105, 324, 75, 267, 123, 141, 156, 78, 112, 408, 97, 173, 91, 99, 239, 25, 376, 25, 254, 185, 157, 15, 61, 71, 113, 237, 237, 48, 29, 89, 1, 79, 41, 3, 24, 13, 187, 96, 52, 30, 137, 70, 82, 1, 47, 34, 444, 146, 63, 47, 59, 154, 115, 129, 298, 61, 3, 64, 85, 75, 244, 12, 47, 101, 103, 7, 169, 125, 213, 271, 378, 271, 100, 126, 134, 131, 31, 32, 16, 310, 222, 95, 12, 154, 89, 391, 205, 8, 27, 1, 85, 192, 85, 117, 140, 127, 132, 35, 31, 12, 263, 121, 6, 81, 65, 71, 78, 88, 140, 85, 227, 347, 68, 50, 7, 44, 215, 128, 26, 2, 96, 55, 66, 54, 22, 161, 258, 7, 13, 124, 101, 265, 21, 83, 233, 203, 274, 59, 354, 99, 59, 139, 13, 377, 107, 102, 23, 184, 32, 115, 61, 169, 320, 27, 171, 293, 57, 62, 46, 58, 147, 139, 235, 52, 46, 375, 46, 218, 319, 368, 61, 29, 174, 172, 83, 325, 29, 200, 198, 18, 303, 114, 173, 213, 35, 102, 20, 35, 211, 46, 180, 99, 301, 250, 208, 178, 93, 30, 76, 52, 165, 159, 372, 225, 278, 138, 136, 145, 231, 79, 44, 137, 50, 55, 119, 125, 39, 138, 101, 25, 166, 23, 192, 18, 39, 178, 116, 28, 178, 59, 188, 198, 16, 96, 46, 186, 108, 59, 255, 199, 258, 252, 88, 118, 134, 383, 150, 5, 139, 239, 228, 38, 227, 263, 43, 67, 175, 97, 188, 63, 147, 189, 17, 154, 62, 370, 219, 1, 198, 22, 56, 90, 318, 15, 20, 171, 45, 100, 30, 126, 131, 234, 11, 207, 254, 299, 349, 120, 196, 21, 26, 170, 114, 77, 8, 57, 190, 11, 214, 212, 345, 179, 225, 64, 114, 80, 185, 66, 138, 149, 43, 190, 127, 3, 3, 153, 222, 210, 11, 56, 104, 53, 153, 130, 56, 83, 71, 274, 95, 74, 121, 106, 173, 16, 114, 270, 33, 53, 267, 49, 332, 306, 68, 35, 28, 32, 213, 24, 113, 40, 18, 9, 89, 294, 250, 256, 70, 208, 291, 91, 82, 314, 39, 7, 181, 78, 13, 301, 405, 112, 316, 156, 393, 12, 110, 48, 73, 166, 39, 17, 132, 204, 104, 63, 62, 1, 45, 393, 5, 115, 47, 18, 248, 16, 272, 75, 317, 84, 70, 342, 207, 14, 191, 77, 154, 12, 107, 230, 132, 280, 42, 23, 147, 149, 17, 18, 8, 174, 73, 261, 197, 72, 4, 15, 34, 163, 159, 136, 12, 36, 196, 3, 40, 167, 71, 101, 111, 100, 237, 300, 32, 76, 9, 14, 137, 6, 53, 202, 71, 52, 148, 219, 17, 299, 41, 108, 48, 143, 65, 316, 133, 142, 92, 296, 323, 150, 211, 361, 261, 422, 167, 212, 195, 50, 317, 406, 372, 360, 314, 399, 203, 136, 211, 56, 195, 436, 229, 489, 295, 101, 109, 487, 184, 87, 279, 233, 399, 176, 470, 433, 364, 197, 115, 194, 314, 423, 246, 98, 401, 291, 268, 272, 357, 458, 298, 327, 21, 298, 299, 225, 220, 272, 51, 177, 93, 84, 403, 150, 336, 275, 236, 476, 243, 261, 373, 330, 248, 310, 365, 155, 240, 144, 276, 229, 292, 99, 175, 101, 317, 365, 297, 404, 260, 333, 417, 462, 434, 474, 444, 119, 309, 261, 260, 344, 435, 80, 123, 257, 183, 358, 197, 78, 16, 264, 260, 459, 195, 390, 147, 217, 467, 353, 165, 120, 151, 335, 83, 106, 28, 326, 252, 70, 298, 182, 153, 300, 260, 122, 111, 143, 302, 135, 235, 362, 236, 232, 287, 371, 309, 248, 248, 176, 215, 169, 183, 155, 140, 446, 91, 277, 263, 234, 126, 376, 335, 162, 490, 398, 182, 105, 378, 469, 159, 119, 457, 292, 249, 108, 59, 451, 20, 362, 228, 57, 306, 459, 301, 208, 329, 357, 82, 396, 279, 137, 396, 272, 202, 396, 282, 120, 308, 389, 287, 43, 311, 371, 59, 326, 125, 223, 190, 285, 134, 348, 219, 74, 343, 72, 455, 367, 179, 368, 395, 267, 227, 59, 225, 65, 21, 300, 310, 266, 259, 362, 168, 104, 69, 344, 417, 47, 335, 103, 126, 394, 41, 122, 166, 313, 265, 438, 118, 265, 204, 316, 439, 142, 90, 180, 440, 281, 392, 312, 210, 137, 189, 240, 247, 240, 320, 251, 157, 324, 208, 415, 245, 180, 262, 94, 141, 191, 110, 165, 165, 361, 61, 488, 378, 138, 178, 229, 396, 157, 168, 397, 266, 289, 240, 347, 299, 84, 451, 133, 391, 469, 324, 137, 116, 60, 365, 207, 200, 472, 450, 428, 330, 139, 159, 223, 217, 330, 245, 234, 238, 418, 391, 367, 308, 291, 304, 67, 244, 288, 382, 130, 461, 335, 118, 187, 334, 324, 441, 462, 112, 445, 59, 214, 230, 372, 44, 106, 167, 181, 211, 193, 148, 409, 264, 364, 353, 174, 263, 283, 406, 312, 349, 118, 455, 181, 259, 323, 175, 33, 152, 299, 141, 320, 314, 131, 62, 235, 335, 231, 340, 244, 425, 169, 311, 497, 241, 37, 436, 117, 184, 294, 157, 350, 301, 94, 162, 273, 13, 182, 101, 486, 341, 434, 322, 74, 144, 284, 139, 111, 403, 214, 52, 323, 327, 172, 227, 230, 208, 277, 221, 120, 409, 339, 123, 223, 252, 209, 237, 429, 295, 253, 35, 162, 454, 243, 199, 295, 385, 360, 241, 170, 390, 175, 402, 198, 288, 397, 275, 330, 267, 161, 341, 283, 193, 62, 258, 162, 254, 259, 374, 408, 415, 268, 54, 312, 424, 302, 342, 376, 172, 453, 214, 281, 379, 447, 170, 434, 230, 121, 423, 305, 441, 276, 244, 121, 110, 461, 323, 151, 309, 431, 202, 200, 329, 210, 352, 164, 503, 113, 126, 231, 152, 454, 311, 433, 86, 449, 130, 231, 262, 189, 290, 288, 429, 143, 311, 70, 226, 451, 277, 362, 134, 51, 81, 343, 171, 466, 149, 194, 310, 119, 315, 186, 300, 469, 349, 427, 123, 168, 117, 174, 144, 224, 116, 173, 198, 457, 287, 147, 65, 258, 272, 499, 315, 81, 186, 168, 341, 316, 190, 178, 291, 232, 280, 174, 260, 242, 226, 181, 120, 113, 138, 294, 106, 481, 287, 377, 104, 125, 383, 234, 369, 289, 348, 52, 389, 239, 219, 344, 378, 338, 418, 137, 363, 116, 207, 335, 449, 202, 358, 216, 134, 319, 100, 11, 265, 233, 172, 267, 45, 256, 23, 318, 221, 169, 245, 306, 281, 181, 289, 116, 173, 346, 327, 194, 205, 326, 345, 201, 111, 448, 366, 399, 293, 222, 170, 358, 442, 19, 187, 159, 456, 299, 206, 290, 169, 253, 412, 252, 202, 377, 331, 497, 203, 313, 115, 255, 373, 364, 237, 245, 291, 269, 342, 54, 218, 269, 373, 170, 256, 270, 213, 305, 288, 203, 315, 238, 87, 192, 334, 26, 127, 352, 240, 277, 114, 102, 432, 139, 332, 278, 128, 411, 91, 317, 296, 265, 343, 291, 217, 124, 350, 220, 242, 220, 62, 233, 300, 190, 393, 445, 513, 478, 346, 375, 131, 99, 272, 160, 355, 279, 112, 305, 107, 403, 336, 109, 322, 143, 371, 147, 204, 192, 308, 180, 279, 127, 194, 145, 239, 124, 288, 24, 177, 191, 433, 429, 308, 270, 136, 330, 73, 469, 302, 274, 221, 246, 393, 328, 431, 454, 391, 426, 269, 434, 329, 245, 149, 151, 338, 328, 299, 433, 374, 230, 202, 472, 177, 360, 402, 387, 316, 181, 418, 52, 198, 174, 20, 197, 110, 294, 268, 123, 151, 43, 87, 250, 237, 247, 233, 143, 367, 231, 339, 381, 141, 233, 355, 204, 225, 382, 208, 224, 206, 159, 87, 80, 275, 103, 365, 33, 374, 117, 145, 332, 368, 309, 297, 421, 63, 212, 213, 373, 107, 249, 247, 318, 242, 464, 312, 164, 240, 103, 328, 345, 262, 160, 209, 401, 325, 249, 186, 201, 112, 250, 262, 215, 70, 473, 170, 126, 143, 211, 313, 370, 183, 220, 174, 388, 346, 351, 182, 173, 48, 214, 370, 163, 92, 95, 228, 134, 461, 251, 398, 205, 282, 372, 363, 348, 83, 321, 175, 265, 160, 252, 479, 340, 257, 64, 285, 419, 369, 23, 196, 283, 286, 327, 97, 411, 331, 184, 297, 325, 284, 341, 245, 302, 294, 231, 247, 319, 404, 190, 180, 491, 441, 147, 303, 148, 291, 350, 471, 197, 396, 187, 92, 201, 269, 200, 264, 250, 338, 104, 470, 379, 248, 168, 271, 113, 146, 205, 267, 71, 296, 221, 385, 153, 347, 482, 252, 339, 453, 390, 289, 284, 229, 269, 263, 167, 27, 369, 80, 243, 432, 230, 153, 280, 397, 239, 380, 208, 244, 8, 72, 271, 354, 328, 233, 224, 297, 297, 204, 461, 190, 259, 151, 306, 375, 195, 189, 304, 155, 279, 232, 352, 123, 177, 339, 401, 493, 384, 376, 340, 38, 171, 79, 161, 78, 340, 293, 238, 465, 191, 435, 179, 244, 387, 184, 211, 307, 352, 342, 316, 196, 351, 353, 445, 69, 97, 368, 180, 274, 136, 275, 342, 189, 75, 395, 145, 147, 205, 185, 222, 218, 413, 297, 374, 144, 453, 372, 138, 302, 316, 237, 356, 46, 40, 339, 343, 184, 242, 125, 216, 345, 305, 477, 148, 214, 199, 303, 306, 123, 440, 404, 292, 210, 328, 350, 210, 337, 94, 309, 408, 151, 76, 276, 266, 325, 482, 155, 332, 254, 209, 321, 297, 243, 355, 259, 164, 221, 453, 361, 15, 338, 357, 289, 240, 149, 249, 263, 219, 447, 434, 261, 300, 159, 479, 342, 93, 213, 57, 141, 177, 335, 410, 315, 188, 166, 223, 307, 354, 492, 170, 187, 453, 195, 127, 349, 410, 151, 207, 130, 147, 216, 417, 439, 369, 83, 461, 326, 406, 381, 227, 126, 270, 258, 394, 108, 331, 228, 333, 72, 95, 209, 319, 351, 346, 379, 284, 392, 315, 191, 147, 463, 95, 486, 415, 167, 324, 377, 390, 375, 410, 92, 354, 106, 364, 106, 370, 132, 193, 396, 321, 134, 119, 393, 327, 195, 506, 30, 341, 253, 233, 82, 283, 55, 207, 301, 430, 167, 248, 163, 475, 77, 218, 124, 367, 176, 415, 426, 188, 380, 58, 488, 209, 170, 164, 354, 134, 212, 334, 255, 220, 349, 110, 288, 227, 350, 201, 406, 319, 442, 117, 330, 228, 148, 424, 267, 155, 452, 161, 345, 217, 474, 179, 208, 328, 367, 254, 173, 210, 259, 458, 296, 277, 206, 296, 162, 480, 430, 183, 202, 268, 263, 274, 312, 374, 96, 445, 66, 463, 321, 250, 204, 194, 129, 78, 342, 485, 289, 387, 67, 119, 256, 241, 341, 110, 215, 276, 226, 186, 276, 266, 198, 331, 455, 167, 232, 89, 355, 166, 336, 147, 397, 167, 260, 175, 282, 465, 265, 178, 453, 189, 132, 273, 202, 132, 209, 62, 400, 397, 114, 225, 299, 288, 259, 228, 149, 319, 160, 327, 406, 411, 217, 374, 286, 229, 236, 129, 232, 403, 266, 432, 189, 115, 338, 120, 342, 197, 248, 310, 269, 298, 79, 156, 453, 325, 468, 116, 246, 210, 438, 43, 256, 378, 294, 398, 84, 366, 122, 311, 174, 346, 377, 320, 111, 309, 243, 162, 329, 165, 307, 229, 266, 305, 267, 94, 230, 454, 131, 72, 50, 209, 199, 283, 329, 178, 400, 236, 388, 423, 127, 190, 287, 175, 477, 274, 314, 465, 389, 410, 350, 131, 263, 108, 201, 127, 130, 468, 59, 223, 148, 341, 336, 414, 235, 36, 288, 171, 405, 111, 395, 271, 122, 154, 150, 164, 403, 460, 374, 213, 208, 464, 310, 143, 356, 204, 81, 273, 314, 287, 380, 16, 410, 313, 385, 410, 406, 23, 240, 370, 373, 416, 355, 204, 176, 187, 329, 357, 292, 282, 384, 212, 273, 202, 262, 385, 198, 191, 402, 230, 266, 179, 389, 210, 165, 375, 261, 287, 302, 471, 250, 144, 284, 279, 277, 382, 118, 65, 126, 235, 158, 354, 150, 53, 331, 68, 280, 51, 219, 432, 90, 236, 213, 137, 289, 256, 366, 469, 484, 125, 289, 454, 49, 155, 392, 221, 181, 238, 137, 85, 222, 105, 228, 351, 380, 22, 379, 322, 409, 215, 234, 174, 275, 356, 182, 212, 272, 203, 194, 426, 215, 279, 234, 279, 388, 164, 318, 219, 205, 152, 74, 304, 242, 136, 440, 304, 466, 238, 347, 201, 373, 275, 325, 364, 362, 393, 103, 394, 365, 359, 338, 332, 322, 369, 270, 216, 363, 135, 353, 460, 157, 282, 402, 414, 393, 196, 403, 178, 294, 276, 193, 282, 217, 86, 234, 351, 433, 337, 64, 236, 184, 423, 64, 362, 241, 210, 247, 483, 298, 122, 191, 243, 245, 46, 458, 278, 447, 311, 326, 360, 71, 224, 354, 148, 360, 74, 6, 215, 290, 374, 313, 200, 185, 116, 133, 28, 224, 467, 357, 291, 473, 379, 388, 188, 246, 340, 67, 240, 144, 475, 314, 193, 179, 215, 150, 423, 360, 192, 102, 159, 127, 204, 154, 168, 423, 373, 172, 48, 140, 327, 292, 358, 221, 426, 154, 101, 331, 337, 235, 102, 251, 409, 238, 283, 151, 307, 278, 357, 247, 484, 229, 152, 69, 311, 241, 225, 388, 230, 140, 146, 370, 429, 26, 134, 466, 240, 372, 197, 389, 145, 136, 176, 187, 400, 264, 221, 366, 446, 311, 364, 186, 404, 363, 101, 243, 400, 120, 146, 389, 203, 190, 278, 300, 260, 196, 430, 106, 260, 367, 436, 222, 359, 433, 417, 184, 371, 301, 275, 336, 111, 428, 129, 304, 303, 73, 224, 449, 175, 255, 446, 326, 123, 315, 315, 223, 327, 161, 194, 97, 201, 309, 383, 407, 302, 326, 209, 324, 198, 356, 107, 88, 189, 276, 247, 144, 339, 320, 221, 169, 140, 226, 118, 379, 333, 69, 300, 262, 218, 265, 257, 251, 310, 27, 265, 227, 369, 220, 146, 412, 265, 272, 286, 286, 229, 283, 395, 209, 372, 290, 488, 293, 184, 360, 342, 194, 132, 313, 290, 448, 385, 162, 232, 31, 270, 271, 383, 318, 242, 251, 157, 79, 119, 421, 401, 178, 231, 152, 207, 55, 163, 274, 313, 125, 251, 256, 468, 385, 329, 227, 272, 317, 196, 427, 466, 96, 216, 449, 14, 441, 333, 484, 363, 383, 303, 155, 172, 188, 348, 169, 256, 199, 193, 188, 455, 86, 161, 235, 247, 288, 135, 344, 427, 381, 148, 261, 128, 193, 287, 221, 347, 155, 172, 204, 334, 255, 380, 189, 241, 277, 226, 448, 413, 81, 441, 223, 162, 429, 292, 205, 146, 439, 110, 114, 304, 261, 378, 88, 278, 386, 123, 226, 329, 165, 83, 295, 213, 408, 355, 414, 336, 440, 366, 409, 142, 153, 168, 128, 470, 266, 82, 280, 428, 250, 360, 238, 99, 53, 424, 176, 285, 263, 212, 268, 316, 377, 335, 387, 168, 144, 428, 326, 132, 232, 252, 300, 51, 146, 308, 371, 486, 279, 275, 370, 223, 33, 304, 296, 217, 442, 360, 280, 75, 354, 182, 139, 397, 236, 442, 361, 45, 233, 193, 479, 206, 153, 121, 299, 201, 255, 426, 318, 286, 54, 143, 302, 57, 148, 320, 231, 218, 377, 498, 206, 359, 238, 235, 379, 160, 391, 381, 261, 297, 277, 368, 362, 437, 409, 372, 270, 481, 300, 407, 253, 55, 488, 487, 470, 429, 431, 402, 259, 404, 257, 101, 243, 463, 487, 514, 496, 150, 358, 504, 234, 490, 511, 240, 415, 412, 484, 490, 416, 252, 472, 489, 478, 493, 381, 139, 480, 511, 362, 293, 466, 503, 359, 342, 142, 326, 369, 304, 320, 364, 486, 261, 105, 316, 471, 476, 430, 460, 379, 484, 253, 446, 400, 447, 373, 472, 490, 272, 401, 158, 471, 328, 417, 312, 344, 331, 429, 383, 341, 501, 361, 410, 480, 477, 492, 508, 482, 332, 336, 429, 310, 369, 460, 291, 346, 365, 392, 402, 452, 120, 430, 301, 419, 462, 406, 410, 342, 493, 500, 390, 498, 378, 230, 403, 188, 443, 258, 505, 499, 148, 508, 485, 241, 382, 289, 264, 182, 455, 481, 264, 451, 489, 483, 485, 365, 376, 447, 301, 382, 278, 237, 409, 285, 168, 292, 463, 290, 482, 339, 323, 376, 386, 495, 286, 502, 450, 322, 115, 390, 483, 370, 426, 461, 441, 406, 162, 73, 506, 256, 511, 507, 107, 498, 491, 323, 274, 478, 516, 337, 450, 304, 183, 502, 285, 249, 420, 427, 349, 386, 508, 353, 413, 500, 375, 304, 485, 410, 484, 306, 353, 431, 377, 239, 156, 438, 402, 499, 503, 200, 458, 419, 490, 230, 203, 397, 73, 436, 398, 326, 293, 363, 416, 497, 458, 250, 443, 460, 60, 476, 227, 392, 494, 352, 422, 383, 468, 344, 443, 199, 425, 417, 496, 452, 472, 396, 246, 449, 458, 395, 398, 283, 253, 391, 307, 268, 337, 501, 269, 499, 409, 408, 434, 365, 264, 407, 267, 150, 253, 254, 269, 185, 434, 306, 508, 510, 287, 347, 318, 439, 235, 307, 503, 281, 303, 468, 366, 415, 434, 480, 368, 497, 500, 504, 195, 188, 125, 502, 496, 475, 492, 481, 501, 407, 309, 302, 372, 442, 357, 464, 436, 249, 429, 493, 412, 340, 385, 489, 172, 353, 322, 477, 439, 509, 490, 311, 478, 364, 450, 448, 479, 372, 463, 495, 312, 269, 425, 341, 501, 415, 193, 225, 481, 437, 433, 281, 509, 428, 278, 509, 458, 506, 481, 509, 463, 504, 209, 415, 510, 347, 246, 388, 307, 237, 472, 407, 318, 228, 441, 417, 467, 469, 457, 515, 324, 402, 510, 254, 112, 470, 345, 463, 302, 378, 416, 312, 241, 381, 327, 94, 207, 335, 498, 343, 476, 427, 444, 351, 414, 186, 178, 457, 459, 460, 333, 471, 334, 389, 398, 327, 315, 504, 481, 437, 386, 431, 488, 442, 241, 356, 471, 402, 424, 433, 287, 459, 298, 463, 322, 458, 386, 464, 232, 492, 285, 441, 227, 292, 405, 377, 336, 466, 441, 513, 350, 276, 142, 492, 176, 404, 286, 437, 483, 474, 446, 291, 323, 474, 463, 414, 496, 231, 493, 491, 464, 484, 448, 191, 441, 258, 296, 497, 381, 484, 419, 318, 125, 222, 487, 516, 285, 502, 449, 294, 211, 384, 358, 451, 414, 509, 135, 241, 444, 392, 474, 469, 444, 203, 500, 282, 350, 286, 231, 478, 365, 465, 467, 472, 497, 484, 513, 513, 455, 242, 502, 385, 504, 358, 479, 390, 407, 416, 266, 330, 206, 412, 471, 496, 498, 380, 325, 159, 219, 504, 447, 340, 383, 416, 475, 373, 410, 486, 368, 501, 511, 413, 91, 278, 257, 486, 369, 506, 214, 402, 430, 348, 476, 333, 331, 441, 204, 187, 450, 194, 382, 224, 497, 411, 462, 252, 275, 457, 446, 415, 502, 413, 121, 515, 485, 476, 353, 381, 488, 480, 385, 425, 314, 224, 383, 506, 280, 515, 388, 422, 386, 396, 408, 329, 340, 371, 359, 138, 431, 200, 361, 393, 189, 436, 411, 319, 316, 478, 293, 390, 422, 414, 445, 232, 503, 397, 443, 296, 493, 374, 432, 430, 493, 206, 437, 477, 295, 352, 492, 509, 375, 214, 314, 430, 283, 467, 491, 350, 421, 499, 499, 511, 367, 125, 379, 482, 476, 505, 411, 446, 507, 390, 264, 290, 419, 460, 474, 414, 422, 317, 327, 437, 422, 404, 320, 416, 242, 362, 429, 366, 399, 438, 293, 245, 448, 461, 390, 415, 356, 482, 504, 284, 428, 378, 268, 400, 308, 468, 416, 393, 394, 405, 355, 408, 438, 323, 424, 401, 483, 516, 493, 362, 424, 372, 234, 515, 386, 382, 500, 314, 402, 425, 460, 456, 172, 501, 247, 495, 173, 492, 226, 476, 439, 346, 293, 353, 317, 435, 152, 487, 119, 348, 424, 499, 494, 495, 469, 251, 501, 401, 516, 308, 457, 280, 454, 440, 432, 470, 497, 399, 451, 344, 487, 432, 439, 516, 278, 461, 462, 313, 475, 386, 233, 396, 475, 439, 424, 495, 431, 434, 433, 436, 456, 403, 341, 423, 359, 296, 324, 309, 480, 508, 435, 144, 478, 401, 358, 287, 484, 512, 443, 367, 459, 452, 445, 468, 316, 271, 514, 388, 448, 474, 413, 307, 86, 293, 320, 433, 302, 394, 222, 414, 344, 456, 356, 475, 468, 456, 426, 494, 428, 339, 288, 494, 448, 270, 504, 507, 381, 405, 379, 498, 469, 489, 247, 354, 445, 500, 467, 217, 277, 385, 318, 513, 218, 253, 483, 249, 325, 161, 351, 505, 475, 440, 229, 412, 461, 371, 427, 377, 439, 338, 473, 500, 292, 167, 315, 230, 261, 464, 294, 407, 226, 406, 488, 426, 432, 515, 511, 421, 489, 439, 282, 515, 483, 325, 323, 462, 443, 491, 377, 384, 349, 491, 353, 226, 420, 495, 428, 409, 473, 461, 357, 473, 371, 343, 360, 398, 500, 465, 401, 319, 513, 483, 216, 405, 424, 473, 455, 516, 235, 476, 308, 248, 281, 482, 244, 481, 407, 345, 309, 506, 417, 485, 363, 320, 192, 470, 231, 513, 246, 299, 447, 467, 163, 510, 498, 337, 417, 491, 457, 422, 340, 422, 298, 273, 301, 447, 449, 356, 374, 436, 299, 225, 452, 468, 490, 403, 432, 387, 38, 277, 340, 514, 485, 355, 253, 400, 389, 460, 492, 356, 300, 400, 404, 404, 498, 369, 330, 273, 311, 248, 491, 126, 216, 495, 449, 505, 407, 380, 425, 246, 437, 153, 211, 256, 387, 515, 297, 507, 440, 480, 361, 412, 395, 431, 412, 371, 506, 435, 421, 462, 504, 483, 472, 436, 507, 370, 183, 485, 330, 389, 381, 473, 272, 449, 364, 192, 345, 312, 252, 333, 501, 388, 491, 246, 507, 393, 355, 358, 367, 417, 499, 81, 516, 494, 490, 228, 480, 367, 427, 387, 349, 510, 349, 411, 321, 449, 315, 307, 458, 490, 462, 323, 406, 452, 456, 357, 153, 359, 503, 375, 352, 385, 392, 442, 485, 260, 445, 423, 512, 410, 361, 396, 421, 514, 300, 412, 487, 489, 19, 352, 447, 347, 321, 400, 394, 284, 510, 508, 502, 281, 459, 177, 483, 388, 399, 379, 180, 186, 209, 502, 418, 326, 214, 432, 274, 401, 413, 512, 322, 264, 513, 239, 501, 464, 419, 259, 418, 306, 307, 319, 484, 512, 453, 363, 508, 454, 424, 450, 275, 270, 301, 260, 512, 161, 494, 323, 346, 189, 348, 376, 345, 464, 421, 381, 342, 464, 359, 455, 492, 470, 359, 505, 465, 343, 420, 435, 428, 510, 478, 193, 419, 380, 414, 181, 394, 266, 396, 491, 395, 192, 421, 404, 507, 456, 512, 251, 384, 442, 421, 334, 384, 317, 320, 391, 477, 171, 336, 273, 500, 446, 414, 340, 484, 306, 453, 445, 327, 405, 406, 506, 236, 491, 371, 508, 471, 446, 501, 290, 366, 507, 250, 394, 403, 458, 266, 509, 351, 493, 252, 510, 456, 176, 440, 419, 378, 506, 399, 442, 319, 514, 462, 275, 459, 378, 350, 226, 494, 430, 494, 394, 486, 442, 381, 233, 500, 504, 504, 308, 494, 366, 353, 469, 439, 463, 516, 109, 473, 473, 343, 383, 435, 282, 509, 420, 514, 333, 450, 307, 477, 375, 398, 466, 382, 479, 452, 283, 285, 495, 482, 425, 430, 505, 322, 444, 503, 497, 449, 486, 338, 440, 355, 488, 413, 352, 513, 331, 333, 506, 423, 183, 361, 474, 461, 409, 425, 411, 481, 397, 470, 332, 395, 343, 298, 159, 476, 512, 398, 444, 516, 505, 499, 397, 421, 271, 130, 424, 456, 270, 463, 431, 334, 397, 399, 509, 335, 341, 443, 392, 509, 338, 284, 468, 382, 477, 443, 331, 455, 445, 169, 296, 511, 491, 408, 427, 408, 318, 405, 182, 392, 390, 488, 219, 368, 369, 384, 372, 336, 399, 502, 515, 356, 486, 325, 293, 504, 162, 451, 295, 339, 220, 471, 421, 351, 433, 334, 392, 465, 303, 418, 306, 316, 515, 317, 438, 482, 454, 475, 370, 459, 496, 505, 384, 185, 172, 497, 171, 281, 400, 418, 499, 436, 391, 108, 468, 280, 422, 313, 467, 398, 464, 167, 254, 168, 448, 465, 505, 471, 312, 467, 418, 403, 374, 470, 459, 347, 468, 395, 425, 19, 472, 510, 456, 428, 495, 75, 255, 467, 465, 425, 512, 387, 426, 335, 453, 474, 487, 480, 462, 344, 511, 207, 309, 419, 419, 395, 424, 272, 346, 382, 460, 352, 169, 442, 476, 404, 473, 511, 330, 196, 334, 329, 438, 438, 503, 255, 481, 500, 420, 472, 509, 394, 450, 255, 472, 373, 365, 488, 305, 496, 418, 193, 368, 305, 508, 495, 494, 199, 420, 514, 450, 201, 496, 238, 264, 411, 358, 229, 287, 493, 346, 409, 489, 102, 480, 413, 435, 290, 317, 303, 348, 376, 314, 422, 297, 343, 250, 513, 466, 290, 289, 431, 503, 451, 516, 328, 305, 427, 361, 307, 469, 341, 476, 371, 489, 328, 355, 310, 437, 515, 402, 386, 403, 412, 357, 440, 486, 448, 399, 337, 514, 426, 478, 506, 462, 360, 466, 496, 279, 397, 479, 428, 505, 421, 461, 257, 437, 418, 315, 440, 498, 337, 387, 490, 437, 466, 220, 500, 479, 470, 218, 380, 431, 243, 396, 492, 443, 507, 373, 477, 395, 188, 496, 366, 457, 422, 336, 376, 450, 391, 494, 245, 384, 77, 44, 478, 438, 454, 407, 285, 508, 198, 457, 261, 322, 492, 482, 338, 512, 405, 420, 312, 464, 416, 80, 412, 249, 501, 412, 452, 505, 426, 379, 451, 479, 387, 137, 340, 507, 483, 459, 203, 453, 420, 358, 84, 499, 503, 408, 443, 350, 515, 200, 295, 376, 442, 369, 423, 346, 420, 445, 456, 465, 337, 475, 438, 258, 506, 377, 364, 185, 321, 305, 282, 509, 301, 321, 398, 456, 511, 465, 281, 516, 450, 435, 286, 416, 475, 254, 393, 469, 414, 429, 460, 389, 478, 492, 503, 453, 444, 393, 467, 294, 420, 157, 279, 513, 497, 204, 444, 514, 348, 459, 454, 270, 413, 440, 494, 434, 465, 505, 429, 384, 514, 466, 486, 475, 510, 436, 437, 434, 457, 516, 454, 473, 332, 433, 479, 499, 405, 482, 497, 503, 411, 351, 199, 380, 216, 420, 387, 426, 450, 404, 370, 447, 386, 452, 135, 253, 482, 416, 276, 171, 419, 420, 288, 241, 474, 391, 368, 488, 365, 400, 363, 354, 274, 415, 345, 376, 467, 138, 479, 295, 391, 382, 483, 444, 446, 390, 304, 510, 507, 385, 452, 216, 457, 472, 498, 438, 408, 388, 368, 498, 464, 462, 466, 508, 515, 321, 375, 337, 448, 273, 455, 435, 380, 354, 254, 242, 324, 489, 477, 245, 427, 195, 508, 187, 210, 328, 498, 145, 485, 304, 493, 392, 507, 324, 400, 419, 430, 439, 513, 432, 417, 496, 364, 474, 511, 493, 435, 487, 366, 364, 455, 384, 359, 195, 329, 263, 349, 248, 486, 371, 166, 257, 471, 339, 380, 357, 437, 441, 191, 443, 268, 197, 444, 306, 363, 160, 346, 345, 376, 401, 479, 195, 243, 514, 481, 489, 445, 432, 451, 460, 252, 443, 332, 283, 416, 502, 140, 164, 415, 359, 470, 90, 411, 425, 422, 352, 344, 501, 386, 335, 458, 449, 478, 480, 477, 487, 413, 444, 244, 157, 451, 423, 480, 297, 284, 495, 431, 384, 418, 363, 325, 245, 447, 313, 485, 436, 391, 357, 512, 490, 487, 417, 512, 324, 496, 366, 152, 452, 343, 361, 389, 254, 446, 471, 502, 399, 485, 395, 345, 474, 337, 481, 249, 510, 458, 514, 90, 362, 463, 347, 477, 257, 489, 405, 143, 259, 286, 495, 382, 224, 177, 446, 260, 427, 438, 434, 511, 187, 383, 423, 193, 430, 427, 447, 435, 487, 502, 338, 407, 323, 407, 387, 166, 512, 473, 310, 457, 490}; float input[] = { -2.8588758611049867, -11.692946618257562, -2.0931111592429659, 11.110696212718175, 6.6118168080332342, 5.5228669775147967, -10.351976177615544, -6.2055936928533972, 15.766842028131405, 10.150684036103069, -8.459063190320423, 3.5621047687812557, -3.4741612771047636, 3.324748317571744, 8.996614205792751, -11.020291727957101, 12.081427681651697, -8.8928631203159583, -3.3519010114052263, 7.7902118547439443, 9.6608001848411806, -7.1066822779231593, -18.837368573809297, 6.7301895647238608, 6.7933629603091008, 5.9697810424393483, 8.344011991064086, 12.19791145343228, 9.4167774696594435, 7.423418316685729, 9.0291842080564226, 12.492983259925982, 7.1203329881309401, 9.8776999539720336, 7.3657220051725565, 5.4066464900536131, -12.553405951140983, -8.4918025628237199, -11.352365915823617, 14.756685666538061, -8.0938336502539876, -2.7071697789206022, -2.4795849849319289, 14.778716053676311, -12.149933491676437, -8.5931326392610909, -5.4147618905983697, 1.7095221079392837, -12.75286957597447, -6.560818125727109, 5.5288804134600262, -16.774264848727494, -10.397477377823613, -14.47470382199227, -12.095199384731899, -0.68504635593676977, 2.6623689185177528, 13.264791388391092, -15.654931986196731, 6.1276196890542334, 4.5068190091793028, -13.394637229913476, -6.9231832293793651, -12.113429033794846, 1.2142140703098925, 8.9363539352870394, -12.687063373304539, -3.3458614784673091, -3.4123481785186587, 17.559631253372945, 13.470764559481434, 5.3912902961422002, 8.0737946505557545, -12.755710856932868, -3.569697890412812, -6.2613535644882905, 0.068556269783912271, 6.2629797657916875, -9.2663011036090968, -4.4829975567184634, -9.6136989537403004, -8.7663852688801143, -13.974856274599134, 11.407302219619563, -10.302223327202944, -8.9771589068473983, -6.1388609170833384, 4.2370800072671333, 1.7760515525196516, -12.120232639630231, -12.958157445638765, 5.2985241644932541, -16.484657731002855, -6.3532421360393387, -9.0395804464700298, -7.2671128749847744, -12.616882711750195, -4.9350723080331012, -6.6905936282318637, 18.568407538602393, 12.530577696234687, -9.7889565176657243, -15.214958325061282, 7.215674131215513, -7.5394667988733808, 9.0137713371297465, 6.2553392643094785, 9.1953246360263154, -11.131787953429392, -5.4020937991353657, -4.0642543197135739, -0.44036236539366824, 8.0650609441874703, 0.85520780385748785, 7.2621337620159085, 0.29865166967486761, -9.2011814546979203, -10.330862011400864, -7.3191138151867943, -9.4852558149271111, 14.762260259194324, -5.0853268103463423, -11.2925794883785, 13.026909781206733, 7.9504343630905412, 10.148928930852414, -8.9032450603232327, 7.0914762951954913, 10.89340681888671, -12.705821222595254, 13.126012326275292, 9.4442919029362749, 5.0277440210736879, 0.21756213342494518, 12.710361373031621, 5.6453651213768019, -13.49634180382726, 6.4754225359227204, 9.6275804629486004, 5.8125840672452975, 9.7028326962213836, 6.1260130958734562, 3.3623596073706641, 10.736024757333299, 4.6569987032041826, -8.5021099021622799, -2.5832378575026125, 17.984880998940056, -13.974611077713172, -7.8550941092339874, -2.6917314432377575, 10.825283872831294, 11.217940706150642, 1.8301222470027103, 6.2062091666111812, -12.440863506480019, -19.955292055354317, -3.6699151522797462, 2.2154324244303956, -3.7363628672311142, -10.271027034445964, -9.2862432349117547, 9.7847963699436011, -5.9471830363214551, 11.139859339322513, -9.2599913694963618, 5.0422863933763367, -7.1141487133220043, 4.2177963601947308, 10.657785123505857, -5.7952000401674324, -6.826355874510365, 8.7268751949597245, -8.5906649209875745, 2.2758857640658201, -6.1665377492933358, -7.3104026599884433, -3.2424605164178031, 16.796591996286164, 15.671215006757382, -7.8445348658392806, 12.2589312976831, -2.5670307012079139, -11.537316744819945, -2.4858301794672331, 5.0542510171190438, -6.6860957990782133, -7.2619018024969462, -6.7329842279273242, -7.3146812058251234, 8.0821157274412183, 2.4005920765968378, 9.3157871935284753, -12.908851857280949, 5.2927115546650425, 9.9926730185778059, 3.9229860372333749, -5.5126846245121035, 12.313688019948762, 7.9681453222519041, 17.181368769149195, -8.962498225939207, -11.548950041024865, 12.014544817430894, 11.485639169870186, 11.939774664713912, -14.36069895314143, -11.812874687185857, 12.249194120883461, 4.8839501930831242, -10.540165871108648, -14.829380396239381, -6.4665012687326051, 4.7430459960995295, -7.1378949876943016, -15.357105375923917, 7.3351294975306445, -9.6095153441695373, 4.381145332149095, -9.2910048695861427, 4.894239034759102, 7.864879034656453, -8.3265429253416077, 10.497214061711553, -0.39338042557070996, -4.4611306847986816, 0.76940119561902198, 2.3535542193708272, 10.459438806533345, 9.4938186880252005, -6.4805717587307994, -13.457392617761585, -10.487085219177404, -9.8506932711478576, 11.274019685851906, -12.3031017274995, 8.3324030035106826, -2.3013116280481358, 8.3664075310158825, -10.402109920341072, -5.2924293563600742, -12.008098192077149, 10.992304106359162, -5.5591947469243506, -12.838234842015352, 8.1682577157065577, -6.4919177172949487, 13.568876091933316, 8.0352162745849594, 8.7834139460450125, -11.335870474093099, -10.790767171281415, -2.8875937626970223, 14.64505222675956, 11.436743007190451, -2.9337339836825955, -12.707240342338084, 16.661129912274529, -19.171798326126961, 12.280144746488103, 6.5975965145696174, -13.019719338217644, -3.4328503704209457, 4.822535491209953, -8.1340577921572415, 11.549182216506546, 9.6431724916100059, 5.5547407614902173, 15.019668995173307, -1.6514898426907461, 16.110709054474917, -10.9397931999944, 12.04576668183285, -8.4818868311872198, -6.103248438757908, 8.2975079067215702, 2.5480181038085412, 18.799878298920927, 16.231939791740228, -18.011602750805633, 3.7139764502467689, 12.751595841360283, -7.8718015936255812, -0.40802815212428428, -15.47812599016518, 3.2584854200798588, 14.976391986507007, 9.1367378814346782, 3.4155780056910059, -13.292285487599507, -12.855991908912157, 14.013291588644732, 9.6911017234399335, -5.8910196575740752, -2.2280612655108047, -11.219438047247786, -2.5955623953948517, -3.4460676112793136, 3.5682986120247073, -11.70300520092221, 11.99455548751415, 7.319096625369828, 8.400961847094683, 12.142806695044221, -3.6775894169196279, 8.3797255658565142, -12.156985373281584, -17.475193610019677, -14.228116929396922, 10.726007504360073, 15.267119384103992, 12.781072511062279, 8.0326533999697229, -17.51207194760946, -7.554034280962183, 10.066411068992132, 14.13799652436988, -6.7247334837075705, -11.112518294834185, -5.7326833292155523, 3.6877552031425131, 8.7105204152043516, 9.3857694378580963, 19.127569440965896, -3.8614826162666089, 7.9404471399280068, 6.3807591097483005, -6.8888859894612535, 10.317928637508684, 2.1736529765433783, 10.953222318849482, -7.6682531128958038, 5.0318286636058982, -6.9463690764775503, -3.0184853792276383, 9.6041512562391542, -0.88225262267439808, 6.4852292067129724, -2.3181001351577644, -13.197351056460056, -6.8047677874499586, 5.3843074707174692, 5.1196343577870644, -17.820822197855577, -12.257015718775355, 5.1913937352654651, -5.0162460867599536, 9.9461758050913041, -9.7414598652248081, 8.1378256819797858, 12.564281794378495, -5.6365288176451322, -9.1029468332924104, -5.6355130288814301, -13.719331548944416, -5.8613058178495017, -9.2573519867695815, 6.0620773131346706, 5.8947778726542905, 11.265652594812099, -11.760986024368906, -7.7447348268870124, 19.076436411627338, 14.505720191829832, -9.0750817120358054, -5.2025480400034789, -3.1960162333402482, -11.659437264119374, -7.9842387274926709, 8.5980388295231229, 14.858752059828165, 6.8639263237417376, 6.0631638589074024, 2.7093921939507379, -4.9581002755473795, 4.4179924464321392, -11.144868427484562, 12.546476704938177, 13.606433000436612, 4.0208619807458295, 6.2408832155761376, 3.0941528835943455, -11.347668662075096, 1.9313877794966201, 11.65105372954261, -14.681336156121709, 7.2969958167198605, 11.59264621157577, -8.831465763669156, -12.759130509205734, -9.0714254556796128, 8.9948895559776467, -8.3736028555285831, -13.115027308542444, -0.21628815052066303, 7.7132708674061705, 14.055053470061472, 13.370601410874029, 3.3283307501026052, -11.9653642849229, -5.6440590777489144, -4.2508984635752549, 13.005398229132568, -11.5296140873405, 11.286858942494266, 9.8110403874583074, -13.263569122014866, -6.4297799553106456, 7.9672918799786396, 2.1515462864377719, -8.490571668881163, 7.5548103934198929, -13.121628447449439, -5.7901204816768361, 7.5171762671769704, -5.4216710822831979, -0.95140907859749113, -5.6992105242986471, -0.91737830538166343, -8.2053563541920571, -4.9100295191078036, -8.650093905400162, 10.400080220873763, 7.2829351923330092, 5.3481291290736603, -9.5017802399357425, -9.8687523002255393, 11.82329840938681, -3.1919281246249707, -10.124868011353035, 6.8360355157042028, -14.032171223888698, 18.148403140529073, -9.5731633683674744, 4.0453611070899935, -4.114147796015585, -8.4912512496909898, -7.9968991599686872, 12.922672789580542, -6.7315939113482681, -16.414580925551139, 10.417406116722118, -9.5795995211441394, -7.974905790034116, -13.727944328842275, -15.024522822723423, 4.9026741637309703, -10.662764572620276, -19.122555879539242, 9.217115643469544, -2.9661166430929642, 13.154514394206242, 9.8788596316167272, 4.2669291411005252, 10.239868792823961, 0.50928446540137651, -6.9544644508051245, 2.9807945285095245, -8.2689690969205181, 3.5499295458600972, 12.732733620631645, 11.61935741986054, 8.4137329217700945, -13.703811206903364, 8.5347899814747166, 13.941804015126218, 11.213731601489895, 11.550008187296406, -10.885532785062049, -6.0320756476152395, -7.945602926688589, 18.178022024827495, 4.2378890109434684, -8.419937978328889, 14.273513193884424, -8.1801725060827586, 13.690183625733544, -17.518387733265431, -8.6392702216784656, -13.927446312699148, -8.651607062718659, -12.712917239643309, 15.009792996204254, 0.15853783962329626, -10.462310302523948, -12.535567399778486, 8.8192610919401329, 13.066656030822525, 18.005415525102343, -16.007576967175243, 11.052574245331391, -1.1810954342450888, -12.762633127175347, -11.427571726679494, -1.8068233566411038, -3.8651597939182674, 6.9028603232990591, -9.9188843352819767, -13.607089316301986, 5.8989769757503172, -10.266998033319117, 12.946619994251195, -7.3433271276853551, 13.594756446262442, -1.4802835189751626, 2.9459432512420887, 9.0127453411993006, 12.34274116102957, -0.99056567004691576, -1.0211228826859517, 10.87969885601588, -15.669877762479704, 16.01192464298973, 10.789218207135569, 6.1523737440350752, 10.844976713696601, -18.796538678004055, -7.3982730413954201, -6.5213519941388851, -18.571369340190397, -9.6913300045155282, 1.0175474995943568, -8.0705533615168754, 14.251221745808563, -14.054781652173469, -10.906074448438877, 9.9932114606110058, 9.2204934537976815, -11.102967677965665, -15.06146952578059, 11.282374133246716, -3.4111780254645643, 7.3857075662336609, 10.330601600777463, 5.6502615537426548, -7.2776853004382911, -12.041052757776699, -11.046289906579057, -2.8519140526114701, -14.358095698121817, 4.6207960341417813, -12.368837238636017, -7.2377430770905917, -7.1306536664479809, -10.374815173234571, 7.5287331560402384, -5.4660620697715716, -13.441122458297521, -6.5962962593129824, -8.4930653390556969, -5.473757203858737, -16.42318744504734, -7.678902139771755, -6.1724752873292612, 17.227224731420481, 2.7992443468423089, -11.010643413583562, -6.0460973993600238, -11.514094016830022, 7.2250024006000091, -7.8426213114387204, 10.647716150585898, 5.7539405508617296, 9.727218535739766, -10.217949794886991, -10.197658817694322, 1.4534950594678713, 12.10682632749001, -0.51088307163622715, 17.710760548825679, -7.7470194812395397, -24.372971692573486, -6.6052580469808717, 8.826482956514015, -6.7872955696686779, 3.6389619856040674, 9.9237321927880782, 12.100520790781362, -6.8842633676573595, 2.8844843405481937, 13.672108533544661, -5.6338295492883859, -7.1944131155704678, 6.9746870716875398, -8.2312590639291852, -10.25205738032861, 3.9564297173352139, -11.16342115946062, -8.4103856915642865, -3.86058459788803, 6.7693385059336668, -5.5093604081945458, 9.9112156966838256, -11.829917793796264, 12.06350448472004, -9.8908904770778552, -17.725516485129567, 5.0710728367340741, 2.3733785626266992, -12.373813495428958, -8.2010211819107539, -12.301300323962623, 10.576063861117305, -2.4429576335852246, -9.8126936984062763, 10.720987427999063, 5.3468144210345949, -7.436093608771988, -12.085562323273949, 9.616133130427178, -7.2337117418265358, 6.590012489497771, -12.933819456719151, 9.0992320680750058, -4.7115096872358144, -12.444448996962361, -9.2431835291508904, 8.9400870181220906, -14.84487535501597, 6.9572855730306786, 8.679259378600257, -11.728117564638417, 11.57774167266283, -11.089244669418909, 4.4545841055164113, -10.471036138424958, -7.9268850048012363, 10.006310688982033, 7.3307629546995496, -0.70086411051328346, 3.4399790497959652, 7.5780305602750353, 15.952535940468001, 1.1236075069228646, -10.56946563987197, -16.455271371728593, 14.943737550316991, 15.270538328279843, 1.8246123975329285, -11.861267836196021, -12.897409417413272, -8.0295182717849976, 2.5085092290718261, -2.997769928368061, 7.7106512520538253, -9.7986312114017196, 3.8597867083890951, 14.715042117673541, 3.6286772784703238, 4.6804229784596041, 10.468442660987332, 6.0309605373905297, -7.2836222700763322, 7.3372979832476464, -9.125874340732242, 12.431154776537063, -12.652059501141041, 8.520614267493885, -14.669291764198016, -5.4369263583494511, -6.9272239504642288, 14.411503339302335, -6.5090359387453871, -3.8249288367587844, 6.226877964919483, 5.4872378813688707, -12.071286274848809, -14.839631376528764, 14.929556186968613, -13.550466083272015, -17.79040452965922, 5.2176515285150078, -8.4073909354978511, 13.152357868676932, 11.880434179671278, -15.154722117187848, 3.3578570344364098, 3.7992951070371852, 12.544849221875657, 4.4664223998223864, -16.02563218730095, -16.858694781271584, 5.8423687431569373, 14.717494305248145, -6.3014233972716296, 7.8246512200173655, 0.2490959399462627, 10.09774947224876, 8.2302536611399972, -2.0230125836350608, -10.877543890130998, -10.315299910440396, -17.814418691884743, -4.7984509876179366, -10.569732541659832, 12.468245506360125, -8.1994351150315588, -8.4938440033843783, -15.646554844352739, 11.104862652426069, 5.4254710709054565, -7.075912451839514, -13.038488980503107, 8.6283602505517099, -0.1897762834069755, -15.926221800862628, -9.4620561439869952, 11.028601034997564, 6.2202218101379954, 13.01838761394424, 3.8814455959068872, -10.571348353520641, 9.3930545668475638, -7.4486485829571807, -15.896920034679038, -7.6634637506716583, -13.744383772875613, -16.289316553121051, 4.2240572521775093, -5.9728476753105495, 1.4435980912356212, -9.482201269588181, -7.1075995048298424, -8.4496788887326719, 5.5233585701859731, 8.8295065675835449, -6.8321409197770491, 14.622652588625614, 8.1030077299922656, -5.0997213512339847, 10.535820013561885, -11.687469584683409, 3.0547169868379771, 8.210959869395893, 10.201179428221021, -11.658463276051274, -13.563724058479169, 11.01039677555352, -7.1382476676607203, 14.955134349802455, -13.750666848543476, 10.162311270235616, 5.7884645703783697, 7.3371242692507819, -9.6841606635170585, 5.466449250298048, 8.4163518309029381, -7.1508542487337046, -6.6797959016182888, -4.7449989886325188, 2.4393509869405792, 8.654752655597532, 10.070879973393719, -13.17581052395726, 8.5470611298539545, 6.660259185215466, -6.0653871786400737, -6.5193717691612134, -12.615899043092323, 6.700881216282939, -4.8478946577189745, 5.1988868211607864, -12.549358461765644, -10.045744010088018, -12.380860324318006, -3.8616068170109248, -14.465705737907983, 0.4164829268257374, -17.143567612135136, 9.487366827722223, 12.652721901108753, 0.7645899772346989, -11.920812995054151, 5.348021509175628, 8.3879926788022008, -4.6246359904401313, 11.089899173175201, -3.8332542947304775, -13.36196018971258, 8.2464982273107097, 14.657515986404208, 10.904966172392774, 11.533578255944192, -13.982006985588614, -11.973821478795168, -16.592644946389242, 9.2836692767439004, -12.678645783087854, 10.730932446196368, 9.5849200107862327, 8.4498461340685918, -8.6907116625889529, 14.156816081594213, -2.5856081507256512, -9.2993749691896994, -3.6239666126178607, -1.8399557052395836, -9.9970546829752251, -11.017332480853435, -11.692178962270885, 6.3025733321249016, -16.175906955071767, -14.423994620868056, -14.689511946206805, -7.2353003125032167, -9.3660212630661839, -13.858073820033896, 4.7709918994882639, -6.7026088232668739, -10.527782639004828, 16.58828557927492, 15.050247187970289, -4.0564185563228934, -10.640020339068798, 5.0431846567205971, 10.934348304548614, 0.75988821460881439, -10.291366703091549, -13.942020188031572, 14.135017480152827, 11.151498767692816, -11.537353350061172, 10.343082453782436, 7.976541387752091, -3.5774431227145778, 6.7912849734238856, 1.8417106851238594, 8.8764923317563689, -14.359256236175909, -5.6171451890921933, 5.9817930874266256, 3.2031461221092781, -3.5231009274983971, -14.863876345356418, 13.612377512426715, -8.9030335281364348, 5.1285813990983709, 4.8771312118802621, -3.1813763041012044, -8.1658030154444532, 9.2635478384894121, -11.938316318486482, -10.581389864174858, -9.041740376889754, -11.289532586451648, 9.8541909326330934, -10.813754378648875, -10.992626098956032, -4.2128060145436059, -13.803513190675977, -3.4047166821717285, -14.699309096179331, -12.322199151029571, 1.9847013546589598, 3.443351936013523, -7.7412573332668169, -9.4014738152531816, -6.0936722951459252, 11.249057062872248, 5.3612317349290048, -6.0934505412619844, -10.329491262921293, -8.3782268065652321, 10.610705115588038, -7.7383153101209938, 8.5683043797354852, 9.5214421313463742, 9.4646448974772674, -15.945188235432587, 13.571842719150663, 9.1766386061343823, 3.9788060864638335, -16.400242920289237, -12.152955170027367, -11.743525499640301, -10.778431692576483, -9.560949750398839, -11.274506489189537, -10.497378072608422, -11.313774108583567, -8.6889440492171826, -16.999837953521492, 2.8463220500405759, -9.3414733746083147, 14.505309388696032, 7.2740770646355823, -15.216612609375215, -7.7754295642857443, -7.9668693810493751, -11.838336074962589, 9.3302243430363134, -6.1546909317578038, -11.643770269023584, -7.3067290482575826, -7.6586644572207598, 4.1554355791738411, 5.5784827988725025, -6.6788226812914591, -10.099712087346221, -6.812608788772855, -8.6942723276748133, -9.1414982497263626, -5.5404435688554674, 13.782301424897506, 6.4913332097552408, -14.843570407301076, 9.1090159582398744, -11.810479272023766, 10.734632284091132, 12.106233609286406, 1.2074129428018001, 9.05135706765188, 7.0513320487712221, 5.7063731455704252, 17.827025603920255, 8.2204534825947988, 6.859838386896449, -17.066087459633668, -10.546186910811119, 12.544407506754297, -10.501953033608231, 11.631217929282226, -7.3247345033456455, -0.30451282566541621, -8.8097804299616289, 12.580754884209387, -2.4535950387210703, 9.2528280654920945, -6.6762373246501507, 8.5487856314147361, -9.8862934311079176, -7.405954429775278, 11.460818356885351, 9.4241123506707218, -6.0650535086957591, 11.749931801221361, 13.45158323366806, 8.509266618399371, 3.0990921451133864, -11.845686618745093, 4.6809017476948664, -9.0788995203187035, -14.154172714949322, 11.436663871420148, -11.686823110591192, -10.466322347645878, -1.8093094588126659, -8.2842513297508678, 6.998530934794041, -2.8130875381789773, -4.7458503858358174, 14.892214325455083, -13.297630549395505, 14.137398522674463, -5.1741407656371132, 10.811880263388231, 7.6909240450423546, 1.2020066622797796, 8.3882554040760446, -13.296889605096078, -14.12122762385526, -0.86913405214011996, -1.7012640446050573, 12.135944269100591, 13.696947616128121, -4.5178290393967648, 11.379039879071998, -17.142332699109016, -6.2502893853176538, 14.551005043468933, -15.922443449630226, 7.9749887358427554, 7.5006183839537428, -10.731307185445075, 11.828405368248815, -11.242740313773945, 8.6857287401789396, -2.3357416563180076, -9.2522949403141723, 10.057172114119057, 4.2142804964077794, -7.25445812349398, -4.7859211707096279, 12.212717205630641, -0.68060465039856421, 8.3585750011161384, 9.4355684709667997, 5.8736217498953929, -10.357680904873, -15.182609723791906, -10.528438249903205, -10.728845332160351, 4.4271186570969041, -9.5459159618972773, 7.698786708464044, -5.7616256574906473, -6.74427916594568, 5.0713712230747952, 4.9757324493057258, -7.5822193975454732, 2.1521506074067127, 11.702619296651129, 2.475868836880037, -8.5152128927626887, -8.8176272081621523, -6.7396490012107382, -7.1103087325178862, -12.249044472908748, 5.7223187192045835, 6.0785970538718885, 13.311388408274434, -5.1967232459428514, 10.616058764924363, 4.1131834199366937, 9.1157637550044708, 5.0981827919094043, 3.9623438215809581, -5.1277684895200872, 10.717366089367347, -9.6119167010571456, -17.671933631733026, -0.93466484572541053, 9.4511618566836688, 0.51145591409598801, -7.4842698912260595, -12.965780155817985, -11.049283246505306, -9.4204398537725336, 14.713331608978752, 6.1294522089617445, 12.762571544243462, 4.2519976479727246, 11.581799865407062, 4.0540310044195316, 6.7583036711124178, -8.4596629969850596, -11.555561625120337, -13.223361797635503, -11.022881346403601, 7.820188150462851, 10.050313550691401, -2.8748772822692796, -3.975284267526737, 10.165011610963463, 8.361153496598952, 10.23454765876409, 6.9861352278001991, -14.063066120834387, 5.5703634980353156, 4.5720288674742182, -10.208336872812145, -3.8841964569917136, 15.871358616035476, -10.375333061106602, -17.028934392886523, 9.6095097993772214, 2.8612197492337277, 7.3984151374847418, 12.882442279479097, -3.8593872267618985, -3.3505651418910092, 9.1400352361857795, 3.4607159608677991, -11.802758101252648, 16.131696084668302, 4.3485520924992915, 4.9299693363247012, 10.20608409504235, 11.350181288635312, 0.71079817132091727, 7.1011529322063716, -9.9921413971440192, -5.8089676277937103, 21.431868331238753, -7.0747060210352215, 12.069527047899687, -9.4828998378865119, 10.122263948520756, -13.538606127789073, 9.6375976702501429, -4.4100604567201094, -11.99790766311845, -5.976372779813337, -8.272146596627568, -8.9450436886845743, 1.9542103075796229, -2.5876227697187235, -14.368094001362385, -2.985471188013614, -2.478307267502168, 2.7456040916726456, 12.581031236480218, -11.4758779722525, -15.599590155208737, -12.992869206559288, 9.953747866291776, -11.025999481843595, 9.7008748889831633, 9.4677048052865693, 6.0665148799454283, -11.021027787278838, 4.1148665510329865, 9.9715457939675805, -4.524015231428284, 18.833454602793879, 7.5018420072802252, 6.536477074456216, 10.39532612887518, -7.7192567198190574, -5.8633746049064728, -9.4739325485451946, -12.966876834521914, -4.8932353347242916, -7.50082678824488, 7.9240662467055403, 15.473285728117284, -7.874821177550495, 3.9913525758800343, -20.203393732375613, 13.177667766939793, -11.905585671112627, 8.76829420558043, -6.6904194950549218, -2.0990812946584643, 16.352167450942488, -8.6839871579774304, 0.65535704062993771, -9.0914298192610481, 6.226432112620512, 14.414606788199343, 5.3327990949329722, -9.2825422873145076, 5.2444348695624967, -13.52476436519694, -10.565017103537128, -7.9458267805510605, 6.2385267794539532, -10.620897086888419, -14.02491825647715, -17.249193736529822, 21.822546537373011, -14.525572761291961, -9.6352912168501117, 7.7923236942745477, -0.43905931375127905, -1.1677511335028592, 7.9195608711842009, -1.7261157613467151, 0.81574419315180335, -6.6258630940789853, 11.446710993602048, 10.423767215464459, 10.131515821910522, -4.0813762630157786, 5.3099875815632895, 15.005238483277349, 3.9458100113193013, 12.997541564501073, -13.401349640520106, 6.0898523220056484, 8.5430795315739463, -6.727566986421512, -6.0976964106078926, -1.5514248251358895, -6.9251342133096534, -5.0010498589221326, 19.36294632958224, -10.995748094036278, 6.8230876895289425, -8.9816761374312737, 19.252689002798032, 15.018231032342973, 0.75032883111291693, -10.512852145797988, 15.952636394768637, -13.876019658000088, 7.4282002133627536, -15.007337649734009, -20.867628639436518, -12.864466413292632, 12.282886216105501, 5.6117260976193588, 7.7243055425354985, 0.74537471606410499, -8.3753274103443793, 8.7297402808334041, -3.8752359373415373, -7.8660891683218042, -8.8027160564205786, 7.7988010166838881, -7.8129632889899385, -5.8353090570942738, 11.438552747844, -9.8854956847581263, 6.193488211617348, 5.7060858140643864, -5.8417400083956581, -7.1659403388854175, 8.8621684734697617, -13.828395956746165, 11.58722476958626, -8.7757625064865632, 9.7638601085689327, -13.63897121774294, 10.692146632523938, 9.1954815513953641, -9.7262358263602646, -3.0742135000084518, -11.831625275045802, 10.346151064081882, 13.860225574621548, 5.3434462647847401, -12.667486708061194, -7.6071393527596891, 10.497824234551809, 9.1398524858692305, -4.8312688599490299, -9.6866353191391568, -14.936854315955886, -4.5645292398393735, 10.306087472805107, 16.435616799434957, 9.7618939189542857, 7.3359442918945499, 5.4777235052650965, 12.827631906540597, -9.3557044067803972, -8.6207571310957753, -6.9067986860795303, 9.4266173165645881, 8.2700014055707438, -14.396299560527304, -9.1945433850102294, -5.0742673058143186, 5.9363570201246212, 9.1825801770474449, -14.26016478123667, -8.9647881473585791, -10.999991358949853, -5.2643587807317358, 17.966460043223208, 4.5038323715849113, -7.3643627119764705, -8.0021495622334466, -5.5012765171131761, -8.6385795076142866, 10.642859565399243, 16.418157809689014, -12.558310319227193, -5.6944436186565675, -16.620579134203229, 5.2993074909249556, -9.5535858720998252, -6.194850562303122, 7.9283758132069577, -4.3938243314441445, -16.08461551423154, -6.1053020627578558, -7.8156662613007883, -4.2010902685294225, -11.260598796472106, -17.361798229363732, 10.523477968271544, -9.2997205134904561, 4.7239785905440819, -16.55663724338849, 7.336212674126954, -6.9284736037251049, -5.9733477242286268, 16.958437027673817, -9.3688626284447736, 12.335069283139083, 4.4003768017589344, -9.6375650205771759, 4.3025216992304607, 8.1709809734149754, 6.0840979096543046, -1.7791701081822009, -9.7212268065403915, -6.3728373407996992, 9.4709301635928664, -9.8099415495718265, 10.216669472304444, -7.9089613940445638, 9.0133309428613888, 15.233159549099527, 14.443197589960937, 12.315849008505751, 15.22683390790605, -12.204208274855294, 8.0545420942912056, 11.261686524342778, -10.088714704911705, -14.758394330397744, -8.3506925495196622, -5.7190575904160488, -10.474095362096637, 6.7558531383042801, 10.839875782803038, 9.6223187492013871, 4.0011315315627671, 5.3452889051100145, 0.29628684358052387, 10.260560792716758, 10.010269925150098, 12.309818259037518, 8.3443036587520112, -5.4014577244395916, -12.309450717768483, 6.227119823086781, -0.90098300040336077, -5.9574142236058796, -6.5290358544134426, -7.443075641870017, 9.5718761708906559, 5.9045525168917088, -14.09287394192167, 8.537557668616758, -14.160598968888243, 5.8051719496039951, -6.239975019204187, 7.4524259174698209, -7.4731349725176219, -8.5239733925114809, 16.110254200184002, -10.257968713373153, 9.5898379203607735, 3.4675905258102322, 8.1300367938993361, 4.7762632339122959, -5.8974433337845085, -9.3140122423426206, 3.5847848816848376, -9.5355250106758724, 8.6839175133173008, -6.6948323819511488, 6.7933016290691377, -6.3800902026507824, 0.76093699061175468, 2.6435457529778015, 7.4138748481937027, 6.0247308500592567, 5.9280863177297123, -3.8920878288506016, -8.4621386416944677, -18.750651564949948, -7.6188990491921116, -2.1334205811758622, 8.7540093304816082, -9.8600851053842149, 16.342033110995256, -10.800872299968921, -13.998298573757474, -3.2934871871896396, 14.06180118603365, -9.271874228911658, -11.048285130582032, 6.1595626190926716, 8.0570216147192557, 0.66340001966893403, 6.5132884000227351, -5.4201122315987309, -9.7412562635013984, -7.0486139617141514, 16.981384687745692, -8.7022380510622721, 14.647877845477861, -8.0820055541788722, 7.2226523022245761, 5.3790569210687584, 13.728807132743302, 8.5317048523035623, -2.7316549253863927, 5.3846139594020226, 5.4103146460176523, -6.694268736004001, 8.7300406717059573, -13.347383859719848, -8.335174873152722, -10.945696086225201, -10.4875598953527, -6.2891459907155456, -9.3671321709341981, -11.585498988590738, 6.512870728010193, 6.33239714027453, 8.7682544573530521, -6.7439993019333704, 9.5026784978124166, -7.0246760343330656, 6.4372813340255446, 8.1945894173399711, 10.262887249545706, -7.5060931723177706, -14.674750300787338, -13.287289997793177, -8.4928309129257595, 7.4563888548291644, -4.5195874938690226, 8.5442291590063935, 9.7115273312730501, 15.092119744113154, -6.4263051953856785, 0.12831365323535676, 8.7640439297438597, -6.1460218943241305, -10.889755958467752, 13.67769695151666, 6.312988951937812, -13.227320725213115, -11.784825668882982, -7.6748667604861192, 7.7787450544407344, -9.3711259762266828, 13.023365017019263, -7.0200584128511876, 13.494925467734497, 4.2227722997626005, -13.760223253172747, 6.1777636365323456, 12.067306433588751, -9.9155428829691132, -6.5766064428842856, -15.151662906193899, 9.6988065214723864, -10.152731302282174, -8.5735676931961322, -9.9418795299730185, -6.2260760507460198, 9.447544122507308, -8.1319644337468215, -4.145324424570318, -3.5485961822808565, -13.467769122062073, -5.7514070303621585, 4.2372927865136871, 10.111694661148967, -7.4186471554037379, 11.430760000153063, 12.312843067890855, -12.810688665750249, -1.4448074235360808, 7.986361807585828, -1.7676683131382003, -14.521209725348982, -4.352705664193615, 18.914853195668275, -1.5113121651615482, -3.6397864185997131, -8.6196558356553385, 4.1199321080626019, -8.4888399293551817, 0.57614759104880209, -3.8170562650576274, 6.5118953364681147, 4.0953213386352472, -5.3421050165325257, -12.272356482934088, -3.0358640779517354, 4.2481637384966975, -2.7752337082527849, -8.0160326885318369, 9.5768553793879043, -1.8524775210440534, -11.009861394679287, 8.9742068648070266, 12.471334080830026, 9.9992644688047552, 8.0039800551702207, -8.7981872925635614, 6.6433407975833738, 6.5480704488332835, 7.2841246634294423, -6.3252439319780178, -6.0513426125451124, -6.3988334931556485, -17.469331458693546, -4.580254889517116, 8.9993454898016569, 3.2238207283793323, -7.7799510625287303, -13.803751678166556, 9.7121916487763045, -8.1746700971358059, -8.8126126733994941, -4.8155492973679186, -10.804453969532291, 7.0086143651800121, 3.1481410707654631, -12.810183673768677, 2.3362046780839187, 5.744619950986845, 3.8643342874084374, -13.249939418679734, 11.415744222471059, 12.554737671029878, 9.8333778447831257, 5.0957400772063437, -3.9991407502674661, 9.8345770583999279, -9.7368996360840274, -19.449417624721992, -7.5133274868764675, 6.0619042605430966, 7.197156700662827, -7.0063836107615485, -19.263860108465263, 13.028208109141358, 7.1331219897936977, 5.4720228485501652, -7.3579311406347925, 7.1801636071660138, 14.640572831964421, -3.8340913302192701, -3.3062445113231744, 17.400159670258972, -7.1681505547822413, -4.3542281808553351, -8.4546164816007607, 13.421193429578857, -14.905121149794782, 8.3143744117862095, 4.9730046756217972, 8.3532232015837344, -7.5969825424753346, 12.3177910080973, 8.7607875220531426, 8.5127047792303561, 3.5774587189097899, -9.6494548210828786, 7.5331539937229897, -7.4747114284701679, -8.6591660587053916, 7.3468316363038637, -3.622337543593344, 0.47384090625185044, -6.0463560480716252, 8.0499483448215017, 9.7022755442800293, -10.776004671468062, 8.3543427603924503, -5.5360568466131905, 6.0186808121336659, -7.3543970398820848, 9.2806086183805689, -12.230546104506987, 7.4673092848302733, 10.975472812952574, 6.7926415721593818, 4.8749321283736755, 9.5323516120815874, -3.0280886662753885, 5.5571898549900514, 10.226559964818154, -5.8034190385368811, 6.5444311969384019, -9.130374827280793, 15.819448485436817, 5.5538576215556326, 2.8637826501217618, 4.0706674231610558, 6.4597011042272623, -8.3735378854139135, -9.5667300995851061, -13.845901714228189, 12.714093428899416, -8.3628461969588557, 7.5987675327409425, 5.9272125723131186, 4.6950385206484189, -4.8195825770873233, -7.908711363482686, -6.0290697566338824, -8.6859336035752293, -4.5193059923378351, -4.5940077637319696, -4.3311584091869832, 5.3536488354562275, 1.9921280360174241, -9.4633153479117045, -6.6570051760469031, 14.208357863252012, 9.4845107231608647, -7.1832992233853066, -8.8475487049318655, -13.630287949249563, -6.0719107719352952, -14.274798405390152, -11.162105305503859, 13.054901490270078, 12.995371746588807, -13.146715820058548, 12.945646134893682, 3.0460739976722446, -12.155229015360904, 2.7412678887489506, 11.780611735174173, -5.3341954653614927, -10.032480770112713, -5.8447538785525053, 0.52725472542845364, 13.379456926012971, 9.6135830134952744, -1.944448284069229, 9.0502993001659355, -11.346127451101133, 4.2434870682337369, -9.5043367843183457, -2.9775157830606012, 5.4193649803215109, 5.9212605221007886, 6.8739591477125153, -9.3618138585411454, -11.34734301929147, -2.8580136600449677, 9.7314938797272301, 10.716957084696832, 2.261487615173849, -11.936472547545375, -11.596497065616539, 8.1683014049841454, -1.9741314291525349, -3.8079032870338203, -18.998387033650793, 14.785213606318443, -2.4675987407306512, -12.092457768834166, 8.3055089082183038, -9.8880041321383381, -12.17693749962149, -5.6119106856770609, 9.3346742365750952, 5.9978824704833622, 0.13754021975113387, -14.894732183908136, 14.747292229007831, -9.7097733323647439, 7.1041665937562009, 8.747982309638612, -1.1124715705618149, -1.3453533016361534, -7.2336827315963976, -3.3065754079116902, 10.610359888132521, 6.439770888743964, 11.42420401634142, 6.5388842458764689, -10.853598132676623, -15.353822721495742, -8.0675862924724751, 14.459019981256141, -12.566396596207603, 3.4205186262164231, 5.630487549883056, -8.073684341188935, 0.82126057392054652, 13.882060246971731, -11.094144048902541, -11.389801550560342, -10.3187260289045, 2.991571648758196, -6.4911734708363165, -11.245496138683489, 10.9851776336762, -13.130504876870628, 3.7733165504957942, 8.4076079303113911, 7.5529546967120051, 9.1048736341912768, 2.7287083950923141, -6.4019633593747214, -6.7703960792021753, -7.6283872602484184, -7.6359394699956251, -11.153289601654617, 4.0727793884727168, 8.3062884746691932, 15.72392064712384, 0.9811577968163786, -11.722310671012934, -11.342923130703641, 4.6538782013854689, -7.3739066993524025, -5.8947067956510093, 11.486762613574625, 12.413880145399126, 10.786268654735865, -14.830950842039924, -12.718664091764236, 11.838893611398694, 16.960744319691706, -0.90885433404131177, 11.805632469674961, 8.787147329142396, 7.4670599584679005, 13.783711428147573, 2.6889832573487715, 9.8277282208337393, -12.621979239155044, 11.900463485129047, 7.3974913674936378, 7.9790082301381764, -18.460977129782226, 9.6868989422260476, -7.4849707679692381, 2.791279213037106, 5.9072811103444005, 10.027746084723706, 5.481378194108391, 0.94657543605496242, 3.1638084348680802, -11.565804912112132, 8.1295825065418228, 6.2454385368905463, -8.7244225637155086, 9.2949740971114814, -15.413745662976126, -9.2767171742637053, 20.883637553321279, 2.1729042705598971, 5.2123425513190229, 11.260222333457566, 5.4759025599371576, 8.1537344500122764, -12.294121929916995, 8.802476739158374, -20.703918322925325, -9.4123075195898913, 14.838015503157582, 8.1809389421993437, -7.6381202529000944, 5.0731354695422288, -9.7523696522120105, -13.519239387616903, 7.7323479369959101, 12.148583040284464, 5.4807070910189717, 4.8696229713233139, 5.0087903276064836, 6.4402113569592467, 13.277426855835845, 9.6524651881369721, 10.826902095836219, 16.183489895274345, -9.6318043844967534, -1.373132442179763, -11.219593888898418, -15.004319828107285, 18.258393722812315, 3.7354456310459385, 8.0651749744359105, -6.5164044554554748, -12.565266643553137, -12.030885912645394, -8.5404810535779507, 12.314165209697041, 7.2947873166397219, -10.819275536058335, -8.0129408622894012, -3.8121662128657552, -7.6091124585846721, -8.4798365873122474, -3.9868453977970675, 11.38629202057937, 3.5714802941824, 2.9518831049273677, 6.3322250488086071, 11.580034774188221, 13.479927163429085, 2.0786137569475098, 7.9330224326080057, -3.6943001859225055, -3.2256160391289095, -12.811450358156192, 13.541505165687818, 2.6411149013180362, -6.3489619114245244, 13.373338952003571, 12.628299743258562, 1.0027687748564038, 9.2077227922659706, -13.768254699816865, 6.8324600540916247, -14.524379303203943, 9.2715316925285709, 8.7678396133255916, -7.7000840765938703, -7.6752994649649313, -6.9178464084480851, -2.824297046557938, -10.067962153214038, 9.8382780470022801, 9.8343360207768367, -10.442346656794413, -11.531825845771756, -5.6955603852302623, 7.9952115376447042, 7.2796481632297372, -3.9815702225402285, -13.888827599999129, -8.7028698626538308, -6.0635186121417952, -1.0917426165389645, -7.5444189349932813, -13.502585170286313, 5.3738984196649149, 5.1002418292985094, -2.2415640749653791, 8.3993581378656117, 17.872303247028064, -5.7930453662663712, -9.5610560588597515, 8.0594903059030294, 5.9955468570765671, -8.4016643820784811, 16.017479926774133, 12.457791465479348, 14.251050296430238, 13.550966058757862, -8.762120073439311, -19.568799520529904, 14.473633275887034, 4.7150108398434316, 17.622896812791758, 8.5532109821391256, -7.8861564007563967, 2.8018084587073706, 11.238281768369326, 19.036214400042667, -12.627994340787289, -3.229926146308185, -6.2106083456766665, -12.029815325633603, -12.732678066605525, 16.114114027765005, -8.8878875737603433, -9.1952288940063198, 2.9514348736209386, -14.875969949421576, 7.426537438524826, 4.0988218779588257, 5.1048469008081083, 8.3561664083509974, -7.1680838371486972, 0.079559302266173665, 7.234447616829998, 9.2153180384359938, 11.380502523658766, 3.7813665464468564, 9.3571471630839476, -5.6198950965916659, -2.6112846832626295, -13.074922193350705, 7.1458325396315745, -6.8553238201936848, 14.037347515845747, 6.1114574644258219, 2.6233447927944442, -6.6962191818230385, -15.054560815064955, -3.8509653059595634, 5.6193134186600444, 8.4632418525580135, 9.06084843255511, 8.7155312766304451, 14.146656363113056, 9.4485647712524159, -11.894790263269002, 6.3630883640874796, 6.0659222594215532, 9.3423771994935656, -11.56898779218068, -12.569317170483185, -3.1542401369229229, -14.317618053977442, -16.07713062656423, -13.866270731830225, 8.9731628045127234, -2.7568654754219311, 10.650056946180007, -0.38554919912492391, -19.636918428478758, -7.261084813408365, 18.261599502237281, 4.365909470450525, 9.4604701736004575, 9.3379768195852684, -5.9721332777841125, 1.8392337494849149, 12.236588220433115, 10.729755869202716, -5.0163355160529157, 7.8745146479874295, -12.210717308250283, 9.9053843786672573, 4.3176048616878999, -7.1321033170654076, 9.8376099896153644, 13.994875675654404, -11.800822210877568, -12.467732532409068, -4.8096053846346782, -15.806886200214143, -16.011053902031289, 3.3108259217896991, 9.3708906824355758, 4.9387906035182194, -7.2811664484622529, -7.2283659694812323, -4.3994107454794076, 13.986557692605393, 16.267589496305209, -12.5211237853249, -8.6162733581098614, 11.875897506788261, -5.7924040049014529, 9.60395357854315, -13.371234187638548, 7.4044876769030976, -9.9169764629346115, -11.960026798255779, -5.6929530819152605, -14.080996179546117, -4.9741440758010285, -7.2894457453898616, 1.7385165163304241, 10.659988023147882, -1.4616437274123262, -10.074637029156758, -17.086127613435742, 12.235716666711239, -7.9575522168496349, 5.807625236075423, -9.2779276010226894, -16.480345338445041, 9.5297786981975108, -12.287759229285887, -5.793455825490601, 11.046928184816098, 12.263531584491689, -15.868613864191206, 6.1089590101381299, 7.7043039642206841, 6.7725058819006509, 0.19765926454723443, -10.92190123421037, -8.6903416862217444, -3.604954070470813, 10.780882529813848, 7.6342821794581255, 1.819027960022801, 8.9622472070627612, -3.7731185676641705, 2.6511830669363676, -5.936256145443763, -3.5065708446633179, -1.6756694810431396, -9.4457045728120921, 5.1176087336867671, 9.0843869892318665, -4.9165468247185249, 9.6190501542416023, 5.7720688303614107, -8.8665231351704143, -16.776765049597191, 5.1935200585542409, -7.0317717992679913, 8.5952975711448651, 15.701379400382201, -5.1747900955843287, 6.644409479106538, -12.294043736596755, -15.483394542555223, -6.9161043885800755, -16.902160692468406, 13.140408586007654, 7.9585367038084494, -0.60142488467217781, -10.583573691246794, 7.6570812407643905, 10.488467203766263, -12.229594163883426, -12.105180821633089, -10.100333917660924, 10.582889173673999, -4.3524138084056574, 4.1598294177868027, -7.7208623056787218, 9.8373959423124191, -9.843437056863948, 9.2758547221503864, 13.917929858415311, 9.6348606573169207, 6.1603576344825903, 7.2761550553448275, -5.6132644264075031, 16.925921888188984, 13.099232943399601, -12.169951256692608, 8.0341465714582103, 9.5080586839310293, -8.9153040306547862, -6.2778930359354987, 0.65702865949253608, 6.1455975831103666, 3.4956736733487177, -13.101966614043903, -8.4917541060921486, -7.7703858331616402, 2.9540207920840338, -2.8250454453694225, 16.471572201031012, -8.3401753077338174, 8.5209392200398799, -8.4562622463700912, 5.3451445327350049, 8.3227551961577149, 9.5505384761710648, -9.6168853444985132, 7.8088619634040271, -10.010194534199005, 10.407541359870157, -12.730901681260953, 10.062237956980878, -8.301093581147164, -11.221782089013969, 5.0699226682185836, 6.8670809315755763, 9.5183305660198574, -12.477293633009369, -3.0829984725185011, 14.251075736126907, -0.50381312202666373, 1.3945668674871461, 4.4380349292124333, -8.4792849992484687, 15.740298722260704, 6.4916661990457039, 9.8781328856963952, 14.524311425947424, 8.623227064986775, 1.82594923740208, 8.1658888991281113, 19.519909829772214, -0.71626812905103776, 1.7182300090879543, -8.0056305624195137, 8.8667806307632393, -6.8903486607996696, 5.3931378831660304, -14.284745953661838, 11.800779205285183, 11.828892295047666, 11.579327959504184, 5.9644626407280574, -10.637566489206868, -6.3308930175168046, 10.362896991246821, -13.136681551103671, -10.69114929291889, -8.2804076555200332, -8.7620956793565572, -8.3349590113674843, 6.0390086996968186, -0.92206940007654714, 16.688147291793179, -7.7396944231238889, -10.556885976235911, -5.5034713893873217, 10.684323799177031, 10.164740010619706, -18.644906837500962, 7.8255279920941758, 7.1184183927575999, -8.5879829996361785, 10.058536284915368, -3.9577147638427337, -9.4390455070755355, -10.813502747434075, 3.1725069430189179, 14.646645070268773, -6.6958720302719321, 7.1891012020482057, 2.776770380964142, -5.3045752723276198, 11.024688310314966, -8.8716706651748609, -6.2182144207648875, 7.2174155723591822, 9.2363647659736916, -0.13811663085025644, -6.5095852199241193, 2.7850661520962201, 5.7288466875807895, 3.8404238060339386, -11.979694823507765, -8.1566218452888641, 8.4872181623141802, 4.0684730663558621, 9.433119896225687, 17.452359798566942, -9.1852211978356539, 3.7813711040017632, 13.687886395835575, 8.3110503099043083, -12.263855365231695, -0.29265821325473718, -5.7786710506977288, 0.32000221107421295, -13.152220176187292, -6.5995903240006717, -13.649334703564579, -7.5516513340805105, -15.16406327996164, -6.7664832291371457, 9.9511431024063146, -11.833825853245724, -11.726480937964023, -4.6960938337568416, 3.6909792826776235, -5.7241654435325771, 0.84009221550172219, 3.981445765587416, 8.3193977689219309, -14.855487044550641, -12.13768399449228, 8.2575189786919658, -12.482209307351347, 12.288265749008579, 12.92588605732125, -0.89651953932604156, -17.178851924529209, 13.465060130471429, -0.66179931634497746, -4.7361380949519907, -8.5915497494217874, 9.8633923545024036, -11.075503948766817, -11.521258634171812, -16.937563321814299, -8.4089961555477153, 10.316744468138424, 11.068755254870558, -12.812559137681774, -11.716000182253042, -10.794814834414403, -14.695829972179469, -5.7734367211811755, 19.281663549262714, -7.7079679114509911, 18.982133221850518, 6.7278265135517552, 9.4200950070653935, -5.0327780626629206, -1.1472749532062567, 8.9655615288611052, -10.289968622568939, -4.5317886320427014, -5.0717832150149214, -12.403158065152988, 16.054879478569319, 11.910769204629043, 8.8721630995550154, 12.946670225247273, -20.040326823281728, 15.061437997065909, 12.371159663686912, -5.2434241432319393, -6.539600733678907, 8.9759004731301122, 10.399696431036546, -9.7820158235043255, -1.8655127741351087, -7.2564512028104291, -9.2402317505484497, -15.743596514833451, 8.0518221334585913, 8.064389141916843, -5.1750464722524647, -1.2577099412771857, 11.088648050953193, 14.734664098438651, -8.7257834129372487, -4.9071340910761805, -7.2288497019818241, 11.368753439780507, 11.259515603467754, -0.9190234527098583, 10.508309728639846, 5.5014236641516137, -1.0062376510942861, 3.9510038373896794, -3.3772476520373296, -12.298064413396816, 1.1518807046710942, 9.8347990668982277, -9.6697877164226895, -5.1708006319540161, 10.90534178699129, 9.0780310964231923, -11.06717326378323, -10.193153698637712, 1.6370922062264599, -1.599701860652494, 7.4493340597532782, 10.079750519485344, 5.9817167134058051, -6.1883642950981734, -8.7859917448021054, 7.6925693496530796, -11.726693947959594, 1.5292664230077266, -3.7640503328337047, -9.2026303785959076, 8.3703384923817321, 9.2968574133785165, -9.0282964165522213, 14.082662142896044, 7.0391904432891064, -8.1892402659133481, -8.494960679412987, -8.3171594195215324, -4.1204583607408765, -12.464929795412097, -8.2800259108270922, 5.0158695467591343, 2.90504266938304, 5.5802620759772603, 9.6053945607379294, 7.4665086294967553, 7.2836197716168538, -6.0797636096551519, 5.9192672325212143, 4.3197502963078556, -2.5794586298505413, -8.3804827856018385, -5.7616389244014083, 7.5165636982133597, -3.7871806468757891, 2.6957388838195038, -3.0339814791522679, 7.7390014359139343, 1.0179611498135317, 0.57428282151728316, 9.2486809887277968, 8.9851820183067517, -12.322228892543235, 2.1846637256927366, -6.9268224211182101, -5.6465263096341207, -9.8609073169739414, -8.0437109222330996, -2.5924823061626299, 10.799267368908426, 9.5532367964485942, 2.1510949897407339, 0.72813586085734983, -7.6316236927774765, -6.6634161974825536, -7.6995131312161114, -2.6469146283491312, -7.8927242011683072, 7.9686594739655217, -8.0858268153723696, -11.113628935027652, -4.2312391545249435, 7.400536752330261, -15.878877108958942, 5.267992480772417, 11.16296673206628, -17.540164979801386, -14.801126830818111, -11.385201143366997, -14.508310090705075, 14.464207778841862, 11.215905228606482, 8.9532196390944634, 3.1058203222772014, 8.0753828772231113, 10.559485384240654, -8.2414912742823354, -11.714805939566189, 4.7281042573450431, 12.657353257890819, -6.3043093049399248, 5.067000914225444, -14.714628033981958, -7.7444814248447615, -2.5025562382741042, 13.564851064978582, -9.4328409951276662, 10.04126088038934, -10.570084081595921, 2.3444801610493466, 7.1831276221853866, 7.404162681313343, 1.1684082688282307, -8.8884680285241533, 1.9400943416397112, -13.196562462363692, -4.5705203572273359, 11.003636571194738, 11.468673888105736, -10.534610194739036, 4.4477979444487845, 7.3667611650061362, -12.044187016767467, -11.396051178941862, 3.9462512050906744, -12.988661501036244, 10.545881026800801, -8.0309289513402735, 9.9370741830104734, 13.654579804016825, 7.0469488853837321, -10.938942295813185, 5.1800344871423132, 10.882232153707738, 1.2710853105543087, -6.5661242949766816, 9.7776412282696459, 13.321850745505881, -8.1153422577009291, -2.2941713421233958, -8.7097542589155221, 2.2618606797252978, 3.1810406025700315, 4.829995467844082, -8.8230523342209999, -7.8350849175265527, -9.1156429568037076, -11.442019665347123, 2.2127249998070249, 18.018245968154236, 6.7919203279388967, 10.818120665998064, 15.957114328595093, 9.436472994391762, -15.0724442489973, 10.177531220212931, 8.7382348206500033, -7.4439716572652967, -10.135340539629416, -1.5478693068716267, -6.2520881203409369, 21.51870984833112, 6.7814496888686202, -5.4629593689724354, -1.0810664038442734, 11.680093350196586, -1.1684404824410481, -8.8192804660387161, 11.947180907432026, -11.865540708697406, -12.073158010228243, -9.3168616660647103, -10.855717378744718, 12.832277402471462, -15.233827235544979, 3.719489187613028, 12.974696537296685, -8.75959465422536, -2.4475947054420195, 11.313184053568827, 6.9182165488811229, 12.123675956468196, 9.6442923820443145, 10.799907622549545, 1.3696427348286129, 12.109212710737127, 2.6404947713803306, 9.5435762973738267, -5.4268755145327745, 10.974370356637689, 11.459181655827159, 10.228613791177938, -2.0376202581586202, 8.5519223504193267, -15.144108617549279, 10.208111627929036, -16.074632706297336, 9.535346082793712, 12.968894012265515, 4.2926497043948793, -7.6447760416419124, 7.3591604897068219, -6.294066487171917, 8.6661482650382133, 4.3524844886549072, -9.6284187314739373, -16.389868048898698, 14.370574991274481, -8.2963813089615268, 16.504114329831857, -8.4564658970066731, -6.3969858495492078, -7.0522130158545027, 16.328014713505098, 4.0676774938327931, -8.8805902890220576, -5.6438005548253818, 10.887856323753418, -13.497382772819085, -17.229682704447541, 10.177341730428909, -10.959196430060141, -15.892999214486872, -0.39312548358593402, 17.548662000796629, 8.138747505659067, -11.081466337015, 9.3549081143588229, -5.2668052531909293, 0.59145215464277101, 13.865804154173629, -6.7446135707105945, 10.591472647241186, -6.8775928522394087, 0.79035105716724385, -0.83434363179526505, 13.426811179256797, 13.480253964577903, 7.9579945693584886, 7.8687287842784803, -1.2711852125721312, -6.5831626138029433, -10.255988526378117, -9.3721646222445631, -4.5483019698635951, 12.654546996958775, -2.2845772848784054, -13.395748226685187, 10.227730333720137, -8.9275038607977386, 9.2096733075692399, -9.1994549499155589, -4.5768838702423018, 7.4336970353205523, 6.1990136188764922, 5.392562974045604, 6.8615159418299543, -9.9148725697134683, 10.272013543022926, -6.541146389868957, 6.1996539988491746, -8.5702789915391175, 6.0710850780527128, 0.41216255793753664, -6.8452494187073416, -7.3698306482120808, -4.3788198137924814, 5.254192997316685, 7.0651978737141468, -8.3496697717376325, -15.541186410630397, -13.361062248182593, 11.869712905857645, 8.8858662456220436, 2.315280646740792, 9.1370562156627635, 10.612212040886574, 15.723923545841364, 9.3000796832012966, -12.203790919241875, 9.5229433645020229, -11.332560886601259, -11.799762316157022, 8.6718707861873146, 3.4390494326490342, 10.948206478975262, 10.351083327208633, -2.3551385999606347, 3.6593868571158006, -10.912461508095474, 6.3601915796808566, 12.644105697007012, 8.0987317607631102, 6.8425116090817673, -7.8614337809266139, -16.777952262404956, -15.092829035089149, -10.867283176676434, 9.7617585972043095, 7.0699740006630494, -0.80345056050581032, 7.2341098943011026, -2.7901743760803868, -14.023920253719963, -8.6493250885626658, 12.119156062865828, -12.565363519164727, -6.6257256922764087, 9.9530063133378111, 6.2285641482405287, 8.5890710113124502, 10.901661163934543, 1.7011000225296526, 9.2328185698429888, -2.5151197107048353, -0.78814118951465995, -6.3782804075339934, 0.77016194990540299, 4.7860592575330942, -18.091131028655795, 6.6618347947308489, -4.5537746303503699, 12.906362988375243, 6.6637236513957019, 5.4194732758517778, -5.626683563346548, 4.8295291548347352, -11.904932030289029, 9.9944164460741938, -11.027348899069844, -0.014743410131345848, -7.3410368137184197, -12.558702052466645, -9.2966083471503538, -2.8582301845790048, 16.122229949617235, 6.0332133243788979, 9.4423884847579131, -6.7953848219405604, -8.640997496023326, 11.564755524473357, 7.7370575077503672, 11.178600690994582, 9.6609341268345741, -5.0924071871300569, 2.9472182219982841, 11.322674214116185, 17.636604816170465, -8.112421382991716, 5.7980976514734257, 10.587871354585735, -10.207529594090163, -13.012906685255201, 1.6439826301840548, 4.7959168408892552, -9.1817793609379343, 15.910744159295755, 11.988413488939839, 10.225499838967904, -2.1100999951643771, 7.7773391391119979, 4.2070274590049737, 3.1789918079199362, 11.389698381773869, -5.6797986359782069, -4.7261529062162424, -6.1926650154600731, 9.5097255166801595, -4.4005426737892748, 4.8284348550831577, -7.4035564503513553, -10.371755556185054, -11.138214834764621, -11.479591917367713, 7.3492465579271542, -8.6401023000535666, 2.4737379805053212, -8.4391176745455763, -3.5699286239866383, -8.1254703716775829, 11.948227614312263, 7.880462510583679, 1.8623842706739999, 7.3888689386136646, -1.2896033177393418, -8.2116493851785464, -9.0121076446113531, 2.6038276518722672, 7.9944375021940459, -4.3649859784435145, 5.1704186172538593, 7.7846827735959723, -0.51775021699396251, -13.814395914977867, 11.155615752700793, -4.0116122940272048}; char detected_data[] = { 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1}; codec2-1.2.0/src/HRA_112_112.c000066400000000000000000000224701445607075400152050ustar00rootroot00000000000000/* FILE....: HRA_112_112.c Static arrays for LDPC codec HRA_112_112, generated by ldpc_gen_c_h_file.m. */ #include "HRA_112_112.h" #include const uint16_t HRA_112_112_H_rows[] = { 22, 18, 15, 63, 16, 13, 1, 2, 29, 25, 28, 4, 36, 10, 38, 7, 60, 23, 11, 38, 28, 1, 12, 31, 57, 45, 57, 30, 23, 59, 67, 14, 16, 4, 14, 62, 15, 50, 7, 70, 64, 6, 42, 48, 9, 31, 19, 40, 49, 2, 25, 3, 41, 49, 36, 9, 29, 39, 31, 5, 17, 1, 29, 25, 11, 21, 18, 2, 8, 22, 39, 15, 8, 22, 13, 3, 19, 4, 21, 62, 34, 43, 6, 24, 17, 60, 8, 74, 6, 44, 60, 10, 33, 12, 26, 24, 45, 81, 69, 80, 41, 28, 23, 5, 10, 20, 52, 18, 13, 86, 3, 7, 59, 21, 65, 72, 34, 37, 26, 55, 47, 48, 34, 5, 44, 47, 68, 96, 82, 111, 61, 74, 30, 17, 55, 98, 81, 66, 89, 35, 74, 82, 91, 51, 55, 51, 30, 89, 61, 75, 40, 71, 73, 11, 56, 54, 19, 47, 94, 69, 64, 20, 64, 12, 54, 77, 42, 88, 36, 52, 90, 63, 70, 27, 32, 73, 91, 32, 56, 46, 9, 78, 51, 68, 88, 67, 20, 43, 40, 14, 66, 86, 39, 97, 38, 27, 50, 84, 54, 92, 61, 46, 67, 24, 58, 35, 58, 37, 98, 85, 73, 84, 48, 35, 57, 16, 26, 37, 65, 32, 72, 95, 107, 33, 77, 33, 85, 105, 106, 75, 56, 71, 79, 59, 52, 105, 79, 90, 93, 100, 88, 112, 86, 80, 65, 42, 106, 100, 93, 94, 99, 97, 93, 101, 111, 99, 83, 53, 85, 95, 108, 107, 41, 109, 84, 78, 104, 101, 69, 110, 98, 103, 80, 83, 77, 71, 76, 78, 87, 102, 104, 95, 96, 83, 87, 50, 110, 103, 112, 45, 58, 70, 94, 91, 89, 81, 101, 82, 63, 72, 100, 97, 76, 112, 53, 105, 49, 75, 109, 102, 66, 111, 68, 87, 92, 79, 96, 43, 90, 44, 110, 99, 102, 92, 103, 106, 62, 53, 27, 46, 108, 104, 107, 108, 109, 76}; const uint16_t HRA_112_112_H_cols[] = { 7, 8, 52, 12, 12, 42, 16, 69, 45, 14, 19, 23, 6, 32, 3, 5, 22, 2, 45, 50, 2, 1, 18, 84, 10, 7, 62, 11, 9, 21, 24, 63, 2, 5, 28, 13, 6, 15, 58, 39, 39, 22, 76, 13, 26, 68, 9, 10, 49, 38, 32, 11, 34, 44, 8, 7, 25, 67, 1, 17, 19, 36, 4, 41, 3, 26, 31, 15, 45, 40, 8, 4, 41, 20, 6, 53, 1, 42, 9, 20, 25, 17, 33, 41, 3, 19, 55, 17, 27, 14, 31, 88, 15, 26, 36, 16, 28, 24, 27, 16, 30, 56, 48, 43, 4, 5, 38, 37, 40, 46, 18, 18, 22, 50, 76, 34, 60, 83, 39, 73, 56, 92, 42, 52, 75, 35, 37, 33, 61, 67, 47, 75, 66, 70, 29, 92, 51, 95, 84, 21, 57, 28, 46, 66, 93, 11, 94, 55, 96, 20, 71, 48, 53, 43, 82, 90, 66, 90, 14, 44, 54, 62, 34, 58, 81, 53, 23, 43, 27, 93, 10, 86, 37, 80, 60, 49, 21, 79, 74, 72, 48, 61, 40, 76, 64, 29, 38, 79, 51, 54, 13, 49, 72, 30, 50, 86, 35, 80, 61, 56, 36, 59, 65, 91, 25, 47, 58, 59, 78, 47, 32, 24, 44, 86, 64, 57, 12, 23, 109, 107, 85, 63, 31, 65, 62, 68, 111, 78, 104, 89, 112, 87, 69, 105, 65, 94, 109, 78, 72, 104, 85, 108, 77, 106, 79, 74, 103, 96, 64, 105, 105, 102, 63, 35, 59, 108, 112, 81, 102, 57, 106, 83, 81, 77, 101, 55, 94, 96, 97, 106, 46, 101, 83, 85, 71, 107, 104, 87, 33, 67, 103, 95, 30, 91, 89, 103, 75, 51, 107, 87, 91, 89, 99, 68, 52, 109, 99, 88, 84, 112, 54, 70, 92, 100, 98, 74, 60, 100, 98, 110, 90, 73, 71, 95, 70, 100, 29, 69, 110, 93, 82, 97, 98, 77, 73, 99, 101, 108, 82, 102, 111, 110, 111, 97, 88, 80}; const float HRA_112_112_input[] = { -3.7496794787890972, 14.372112019392226, -7.5640452729302359, 6.9426063455159657, 5.3103644888713299, -6.9203550501252273, 8.4296575778653775, 13.495087143587781, 18.111520666852243, -9.9125748623510912, 10.601298534930972, -10.468591112149715, -9.0757329437720475, -14.471433733514324, 5.2048820572852641, -11.353785810284556, -9.4511008284496416, -9.5255219979484025, -2.0499245561876696, -9.8739646459388748, 22.03442141444015, -9.9745566449839878, -8.4276711655946226, -4.9811962116476307, -13.018434575859896, -5.3358535334627293, -5.6704294937789648, 14.243964608060018, -11.417925510314507, 9.1332657371467878, -14.380214782394296, 14.090409878618974, 6.5602278279998272, 15.53025696352436, -9.1752771765906616, -11.384503450560766, 12.240329442222599, -12.640059450058276, -11.824715154614376, -13.487656131954735, 15.38073452845444, -13.816294924566529, 6.3461114450644454, -2.5192445130977559, -11.916088712873863, 5.4360722876642518, 0.038031547223147381, -12.367220238860654, -2.747864039796549, -14.920508782249289, 16.487336720060863, -13.290002442259247, 19.142698450560925, -0.39443060583296108, 11.723442316413736, -3.6131702833965047, -4.6196487103817017, -11.794290650694531, -14.342351103186955, 2.8079943208330334, -15.290175151123936, 9.0801740558512414, 10.184385069676226, 8.400722260237572, 9.3504690108712936, -14.223531676384166, 11.752768386971752, 11.36995822251677, -15.285021241405444, -13.070613695054403, -11.869191325617697, 4.3191750845563401, 2.0836933404582791, -16.363829786416495, -5.7778094839806595, 11.06389861779129, 13.285433846434705, 9.2552396418849021, -11.065999403824057, -10.167040394420443, -7.0107225044503565, 2.3886881673282474, 5.0014484787306932, -9.2464083853314278, -12.043309174487364, -11.638411967211738, -16.302815497922911, 13.347129717938067, -4.1390259986125226, 0.7947480277507295, 11.538620744796759, -7.4410706619926028, 14.572449028311253, 12.392747919231169, -3.3027890746379289, -9.8431096813736687, 11.582657487369399, -7.85736442083219, -7.3780721969188443, -7.4006260265172212, -8.3937994980934327, -6.6804071011469555, 19.656301355404196, 1.1084340389939762, 3.6028635453146465, -4.5409495140900562, 7.3831459854578982, -5.5905999874445662, -13.852328482738232, 8.9999210644983041, 8.4742375282492315, 16.989947243749878, 7.5590035165610168, -6.154674423116183, 4.1119120658251855, 12.351217703790844, 11.070972687846792, 11.182587746846833, -4.9345619923565645, 9.0054892370887334, -10.841725474869696, 13.902796293412067, -6.7575171884905396, -5.8196703210757335, 1.9284357540668857, 9.9905382141440455, -13.983067199220674, -4.9130522479706453, -8.2369300184767908, 6.8953565265629644, 2.9285103862640871, -2.6303471135655325, -8.3563361642086047, 9.5712349244763715, 4.9728623009661161, -11.045088919587242, -5.7781337596219604, -17.732999074602972, 8.1353860976076646, -11.066240843831284, -1.7079574457159534, -16.411685365171998, -9.0471090651358299, -10.959376227315447, 8.5840398495674126, 6.6373658260736024, 11.422094029020409, 14.85785089306844, 13.185747281780415, 4.2063935223916191, -6.9166135608899282, 10.843153262137262, 5.3913075109409441, -10.744469667642237, -12.491640291445655, 14.141118162062066, 16.425476099516025, 9.8833761863476042, 2.8719064151687883, 14.982021915112442, 1.3588165304065343, -11.657839635726177, 11.066314862965077, -3.0565490195476204, 1.7820159270701772, -13.535333311782074, 4.4026933190218367, -11.097334550496313, -11.322820869044248, 16.418516996530371, 5.8239202459876136, 15.054905601216154, -9.3058742038490152, 8.48902767802557, -8.3853534273227748, -7.9255089736435176, -9.6156735881618811, 11.502594413898008, -6.0542015398269911, 7.1229229147355149, 0.31483632310264387, -11.482093481730768, -9.3225703551629309, 5.8001228713062831, -9.3515917458791051, 7.9778737065172969, 9.7095180444854847, -14.060064536791135, 4.9797253221020545, -6.9210799657794224, 6.6736460552213845, -7.7636429824024606, 10.233132490278882, 8.401747393605044, -10.861100567451366, 13.631509744686715, -15.723791754613185, -8.7931294115815923, -9.9520037489001609, -10.312792052906007, -8.0681893911111917, -15.411052087079765, 10.938779471602952, -8.751795633239853, -9.1302029882284419, -2.3357314769649777, -7.9130658335895596, 2.7508172894969509, -9.1666780515772324, 12.793063537524359, -13.39091818112591, 7.2827402370664842, -10.400778532411657, -1.90854156128735, -4.1272702472088971, 12.696932922959466, -4.0180403457213805, 10.828999052972396, 14.720617452742685, -8.3763729074389719, 3.955093172344033, 0.90932711822659873, -5.6696817865337819, -5.8822086115513805}; const char HRA_112_112_detected_data[] = { 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1}; codec2-1.2.0/src/HRA_112_112.h000066400000000000000000000010631445607075400152050ustar00rootroot00000000000000/* FILE....: HRA_112_112.h Static arrays for LDPC codec HRA_112_112, generated by ldpc_gen_c_h_file.m. */ #define HRA_112_112_NUMBERPARITYBITS 112 #define HRA_112_112_MAX_ROW_WEIGHT 3 #define HRA_112_112_CODELENGTH 224 #define HRA_112_112_NUMBERROWSHCOLS 112 #define HRA_112_112_MAX_COL_WEIGHT 3 #define HRA_112_112_DEC_TYPE 0 #define HRA_112_112_MAX_ITER 100 #include extern const uint16_t HRA_112_112_H_rows[]; extern const uint16_t HRA_112_112_H_cols[]; extern const float HRA_112_112_input[]; extern const char HRA_112_112_detected_data[]; codec2-1.2.0/src/HRA_112_112_test.h000066400000000000000000000232221445607075400162450ustar00rootroot00000000000000/* FILE....: ../src/HRA_112_112.h Static arrays for CML LDPC, generated by ldpc_gen_h_file.m. */ #define HRA_112_112_NUMBERPARITYBITS 112 #define HRA_112_112_MAX_ROW_WEIGHT 3 #define HRA_112_112_CODELENGTH 224 #define HRA_112_112_NUMBERROWSHCOLS 112 #define HRA_112_112_MAX_COL_WEIGHT 3 #define HRA_112_112_DEC_TYPE 0 #define HRA_112_112_MAX_ITER 100 #include uint16_t HRA_112_112_H_rows[] = { 22, 18, 15, 63, 16, 13, 1, 2, 29, 25, 28, 4, 36, 10, 38, 7, 60, 23, 11, 38, 28, 1, 12, 31, 57, 45, 57, 30, 23, 59, 67, 14, 16, 4, 14, 62, 15, 50, 7, 70, 64, 6, 42, 48, 9, 31, 19, 40, 49, 2, 25, 3, 41, 49, 36, 9, 29, 39, 31, 5, 17, 1, 29, 25, 11, 21, 18, 2, 8, 22, 39, 15, 8, 22, 13, 3, 19, 4, 21, 62, 34, 43, 6, 24, 17, 60, 8, 74, 6, 44, 60, 10, 33, 12, 26, 24, 45, 81, 69, 80, 41, 28, 23, 5, 10, 20, 52, 18, 13, 86, 3, 7, 59, 21, 65, 72, 34, 37, 26, 55, 47, 48, 34, 5, 44, 47, 68, 96, 82, 111, 61, 74, 30, 17, 55, 98, 81, 66, 89, 35, 74, 82, 91, 51, 55, 51, 30, 89, 61, 75, 40, 71, 73, 11, 56, 54, 19, 47, 94, 69, 64, 20, 64, 12, 54, 77, 42, 88, 36, 52, 90, 63, 70, 27, 32, 73, 91, 32, 56, 46, 9, 78, 51, 68, 88, 67, 20, 43, 40, 14, 66, 86, 39, 97, 38, 27, 50, 84, 54, 92, 61, 46, 67, 24, 58, 35, 58, 37, 98, 85, 73, 84, 48, 35, 57, 16, 26, 37, 65, 32, 72, 95, 107, 33, 77, 33, 85, 105, 106, 75, 56, 71, 79, 59, 52, 105, 79, 90, 93, 100, 88, 112, 86, 80, 65, 42, 106, 100, 93, 94, 99, 97, 93, 101, 111, 99, 83, 53, 85, 95, 108, 107, 41, 109, 84, 78, 104, 101, 69, 110, 98, 103, 80, 83, 77, 71, 76, 78, 87, 102, 104, 95, 96, 83, 87, 50, 110, 103, 112, 45, 58, 70, 94, 91, 89, 81, 101, 82, 63, 72, 100, 97, 76, 112, 53, 105, 49, 75, 109, 102, 66, 111, 68, 87, 92, 79, 96, 43, 90, 44, 110, 99, 102, 92, 103, 106, 62, 53, 27, 46, 108, 104, 107, 108, 109, 76}; uint16_t HRA_112_112_H_cols[] = { 7, 8, 52, 12, 12, 42, 16, 69, 45, 14, 19, 23, 6, 32, 3, 5, 22, 2, 45, 50, 2, 1, 18, 84, 10, 7, 62, 11, 9, 21, 24, 63, 2, 5, 28, 13, 6, 15, 58, 39, 39, 22, 76, 13, 26, 68, 9, 10, 49, 38, 32, 11, 34, 44, 8, 7, 25, 67, 1, 17, 19, 36, 4, 41, 3, 26, 31, 15, 45, 40, 8, 4, 41, 20, 6, 53, 1, 42, 9, 20, 25, 17, 33, 41, 3, 19, 55, 17, 27, 14, 31, 88, 15, 26, 36, 16, 28, 24, 27, 16, 30, 56, 48, 43, 4, 5, 38, 37, 40, 46, 18, 18, 22, 50, 76, 34, 60, 83, 39, 73, 56, 92, 42, 52, 75, 35, 37, 33, 61, 67, 47, 75, 66, 70, 29, 92, 51, 95, 84, 21, 57, 28, 46, 66, 93, 11, 94, 55, 96, 20, 71, 48, 53, 43, 82, 90, 66, 90, 14, 44, 54, 62, 34, 58, 81, 53, 23, 43, 27, 93, 10, 86, 37, 80, 60, 49, 21, 79, 74, 72, 48, 61, 40, 76, 64, 29, 38, 79, 51, 54, 13, 49, 72, 30, 50, 86, 35, 80, 61, 56, 36, 59, 65, 91, 25, 47, 58, 59, 78, 47, 32, 24, 44, 86, 64, 57, 12, 23, 109, 107, 85, 63, 31, 65, 62, 68, 111, 78, 104, 89, 112, 87, 69, 105, 65, 94, 109, 78, 72, 104, 85, 108, 77, 106, 79, 74, 103, 96, 64, 105, 105, 102, 63, 35, 59, 108, 112, 81, 102, 57, 106, 83, 81, 77, 101, 55, 94, 96, 97, 106, 46, 101, 83, 85, 71, 107, 104, 87, 33, 67, 103, 95, 30, 91, 89, 103, 75, 51, 107, 87, 91, 89, 99, 68, 52, 109, 99, 88, 84, 112, 54, 70, 92, 100, 98, 74, 60, 100, 98, 110, 90, 73, 71, 95, 70, 100, 29, 69, 110, 93, 82, 97, 98, 77, 73, 99, 101, 108, 82, 102, 111, 110, 111, 97, 88, 80}; float HRA_112_112_input[] = { -5.7868467875518395, -6.340739523388657, 3.6654768375589399, 4.1452438183910827, -4.6746135252043111, -4.8353634065473701, -6.0729133999971285, 4.0335561282226271, -6.1114855315699135, 4.1029513876344916, -4.6481634503883624, 5.7650915278538646, 6.5567610490570312, 5.1810523550761207, 3.4789051916752669, 4.2678848515507122, 4.0314705275547089, 6.0297078342283799, 4.9101169653222163, -6.4577297598332324, -7.4273487270443095, 3.472130985267488, -6.5346233967202254, 7.5312028458762414, -5.2618748211985915, 6.4198074556254969, 3.7500207659511484, 5.4040878141701141, 5.7554260586578803, 3.3973620625026886, 7.1815269888532907, 5.0031747952824963, 5.1377243276145599, 5.385229914081755, -0.61384230253605643, 0.46954911161835722, 3.5182611493679663, 3.393698829567279, 6.147483866535171, 3.8374563885989228, 1.3663773773557015, -4.0917661778352352, -3.2968298202652835, -6.0371912041431148, -8.4279246895331781, -0.98556788606912304, -3.515442879601625, 4.2642476942514875, -5.5905016743156972, 3.6920101668161727, -4.035860013856472, 5.3290190966269995, -2.9729656070594057, -2.5054371041338537, 6.8683150013190115, -7.1109038108500098, 6.7301890172695158, 2.5782062882356374, 4.4161464916633282, 2.2692851122935322, -1.3682527221025034, 3.0794629981237631, -7.8655412763279973, 1.1479897597156494, 0.22370696314520414, 1.1222453403894148, -3.1335220808128219, -3.8352985265277089, -1.2463521619727009, 2.9511814015293218, -8.668811041413111, 3.0185610517830548, -6.9592962351476091, 3.9653416636625414, -3.9384322074229408, 1.6789027505247516, 2.9579632055145502, -2.1212672699995125, -3.8892168640945193, 7.516114544807583, -0.84285604179011253, 4.1295390817792512, 0.26093278495228162, -3.6071666499996047, -0.065323173773821908, -1.9146584862100915, 4.7951161310834367, 5.5440002982088803, 3.5917539980319364, -0.81416023563684481, -2.6588977758747721, -3.0404494660606227, 4.5389936536649662, 2.7870543501114082, 3.5622966707453889, 5.1982116994791161, 2.4775319712999302, 0.70541080068007755, 0.89622787904518464, 4.3789020039207758, -2.4976040580619445, -0.7201255450933205, 4.2071986295109394, -5.2418379271657001, -4.092365654835163, -4.3510198326542557, 3.7404138637596001, 1.2496890930262492, -7.1053909336149728, -4.8888279905256748, -6.3523901926735249, -1.8757980409249277, 3.6256343910366273, -3.6165398844758228, -0.38322352317510561, -0.84747550047769449, -1.2717892264620718, -2.3899810721111154, 4.1368500898628637, 3.0440159002314924, 3.4235543074310728, -2.146097053557551, -1.7537615307751735, -1.0280987119225686, 4.9009275359419204, 5.0046047156368116, -0.47700833783807428, -4.5989492891875567, 1.4154839158712684, 0.33410724822249849, -4.771937854508927, -1.1817007924012972, -2.5960865023249302, 0.30422629502493687, -2.2097849377516763, -4.343244940878872, 1.9464288912612249, -9.0976989032526809, -8.6454142547592685, -1.8164317522989997, 2.2780845702169961, -4.8775405042023356, -0.61834757216625769, -1.985554501661331, -0.87599558657596699, -8.0610201531782124, -5.9847574894882554, -10.365536404711067, 2.9782191161319376, -6.9443820217795169, 0.72935566343949876, -4.5326632961380664, 1.1307250622386897, -4.0853969692041314, 5.4926924507347596, 5.6722555096362042, -2.5069992226180222, 2.0460084066662092, 2.5375899018238197, -3.5264293517823679, 3.2103083878487557, 5.793713046583183, -2.7633653287377995, 6.482851815629938, -1.2471646528152021, 3.0010491047486085, 0.29072399293868856, -4.0686659405747738, -2.6253508133431289, -6.3896590677017171, 5.7054076607727886, 4.3053292399977092, 2.2372599539047151, -4.8975607398431897, 5.8124794005531406, -0.69648233429781359, 5.5509723605410004, 2.0900652762982923, -4.7944253330785118, -2.9224693872108287, 6.0218579796888303, 4.7027436964063387, -4.1564871824868659, -1.324779121305123, 0.38031612697724176, -0.69335927945709175, -0.4028295686263082, 2.0967669774299189, 2.7947186736855909, 2.1473880039026203, 6.368702510367898, -3.0691782325684049, 1.6125827087903837, 3.5925359669662518, 5.178224480471127, -2.5070763799556617, 4.4280512389456632, -6.5385259627250134, 2.8047951999607603, -3.0185715385981151, -0.33348983718789993, -4.3285127692183556, -7.9609407359365134, 7.064973172264966, 0.95714371675898213, -5.5481272272415545, -1.6024149180708045, -4.5740915350065992, -1.5117120929647263, 1.9996824689403947, 5.9527526663437724, 5.0239857792804967, 6.2677418491798784, -1.9758548902654505, 2.1709284879472324, 2.5054563138111572, 4.4483685492445115, 3.2098357106645676, -4.5306213859481099, 1.1291114493451548, 1.5827945023160555, -5.2733490015732292, 5.0664709821503457, 1.9652801880230106}; char HRA_112_112_detected_data[] = { 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0}; codec2-1.2.0/src/HRA_56_56.c000066400000000000000000000107651445607075400150670ustar00rootroot00000000000000/* FILE....: HRA_56_56.c Static arrays for LDPC codec HRA_56_56, generated by ldpc_gen_c_h_file.m. */ #include "HRA_56_56.h" #include const uint16_t HRA_56_56_H_rows[] = { 4, 33, 22, 2, 7, 12, 15, 41, 6, 2, 8, 4, 1, 7, 20, 10, 2, 1, 28, 7, 3, 25, 18, 19, 17, 15, 8, 13, 9, 12, 39, 6, 17, 32, 3, 6, 10, 18, 4, 34, 1, 14, 9, 5, 15, 12, 5, 35, 5, 17, 16, 36, 20, 9, 34, 33, 14, 46, 39, 27, 43, 22, 19, 45, 16, 23, 31, 52, 3, 8, 51, 13, 31, 11, 31, 36, 11, 28, 30, 21, 38, 26, 42, 29, 23, 33, 45, 19, 28, 40, 10, 23, 41, 25, 29, 36, 29, 49, 38, 11, 30, 42, 16, 37, 49, 35, 18, 47, 24, 25, 54, 34, 41, 55, 47, 44, 56, 46, 20, 55, 21, 40, 37, 53, 13, 32, 52, 22, 32, 24, 44, 42, 49, 38, 48, 24, 56, 48, 50, 39, 26, 50, 54, 26, 37, 56, 14, 27, 46, 44, 45, 43, 53, 52, 40, 21, 51, 47, 30, 50, 51, 43, 27, 54, 53, 48, 55, 35}; const uint16_t HRA_56_56_H_cols[] = { 13, 4, 13, 1, 44, 9, 5, 11, 29, 16, 18, 6, 13, 1, 7, 9, 25, 23, 7, 7, 9, 3, 10, 18, 22, 26, 4, 19, 28, 23, 11, 14, 2, 40, 48, 20, 11, 22, 3, 10, 1, 20, 5, 4, 8, 2, 3, 23, 21, 27, 15, 12, 12, 31, 2, 5, 18, 10, 21, 12, 47, 32, 14, 14, 43, 35, 21, 30, 16, 35, 26, 47, 33, 38, 24, 15, 24, 6, 29, 24, 38, 29, 36, 22, 39, 45, 17, 17, 30, 55, 50, 40, 33, 25, 28, 34, 8, 27, 40, 19, 31, 6, 46, 26, 42, 30, 45, 15, 41, 52, 8, 25, 41, 17, 35, 39, 49, 36, 20, 27, 54, 37, 44, 46, 28, 42, 45, 51, 50, 51, 32, 53, 44, 16, 36, 53, 54, 32, 51, 33, 41, 47, 19, 34, 56, 56, 56, 52, 48, 43, 31, 43, 37, 46, 50, 38, 39, 37, 52, 54, 49, 48, 49, 42, 53, 55, 55, 34}; const float HRA_56_56_input[] = { 14.298032547127473, -11.608683311452998, 0.061009204291271366, 8.7391847645722684, -12.795277326577247, 6.7260364215470982, -7.5723272788156795, 3.020497481136375, 8.2196966933834599, 11.034906196221687, 8.9543980103634855, 7.577128824074272, 11.270326150592165, 8.9523294544722756, 13.083603245905977, 10.444986837116906, 14.412579891463047, -0.8166007558942513, 9.668894733671868, 9.8522676575640613, 7.5958239024346623, 3.3746023851032851, 12.95322595905497, -7.1449563352606029, 1.2577795908906082, -9.5332224407426533, -17.239402070035631, -6.3014111920535631, -6.3042395285059891, 10.610150547425137, -3.8501667154717536, 13.993722156033463, -11.103807489470984, -0.23655217621193034, -11.820607488167541, -14.520377014662206, 14.480439663208152, -14.74956701516993, 5.8803502868629876, 16.404549902101486, 1.7430972286160022, 3.5578988903336057, -10.514179494138832, 15.893919839476579, -15.088901968318774, 8.8240079988183187, -11.214227098114568, 15.245351554277944, -8.0630908862483555, -4.2718917016539022, -6.8904115533020676, 7.1059188065004335, -15.465940930478686, 7.1911507113949069, -7.3855595052175262, 8.2801168546061081, 7.7415094545890444, 12.447605971579639, -7.1709811194443134, -16.91513428272188, -7.1177366282735868, -15.474578777159717, -9.5942142791182636, -6.9537488066001139, -7.7476201276622323, 4.1904181285877389, -6.2099572289514366, 10.754678540144104, -3.9339356682709932, 14.679906470086319, -8.142754803364026, -9.9243587954743582, -8.3178402502703221, 12.312937678168655, 8.8921607910136853, 12.075156922922833, 16.513528553689049, -13.145624744678896, 3.5338893311207094, -1.1150068888984415, 17.69091341508814, -7.0011692651766051, 11.611823808269614, -2.2724478894865379, 5.5105851969653212, 10.230592589300167, -10.45300755375545, 2.3936930052496277, -12.582400877459929, -10.207872559757952, 11.527552494414541, -6.8352398173173716, -5.9832808666428097, -10.392213829350812, -19.448491316457705, -3.5592349479718512, -7.2921546103361257, 12.917679155812705, -16.567433882993001, 8.2654374923309515, -12.878121359778884, 6.2541630279508933, -12.780545162108599, -10.751773785029803, 9.429146662721827, 10.341931054806189, 18.701038410743397, 9.823780098709431, 14.192912051007719, -16.603334298788742, 7.2592993795204217, 13.495247736424982}; const char HRA_56_56_detected_data[] = { 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0}; codec2-1.2.0/src/HRA_56_56.h000066400000000000000000000010271445607075400150630ustar00rootroot00000000000000/* FILE....: HRA_56_56.h Static arrays for LDPC codec HRA_56_56, generated by ldpc_gen_c_h_file.m. */ #define HRA_56_56_NUMBERPARITYBITS 56 #define HRA_56_56_MAX_ROW_WEIGHT 3 #define HRA_56_56_CODELENGTH 112 #define HRA_56_56_NUMBERROWSHCOLS 56 #define HRA_56_56_MAX_COL_WEIGHT 3 #define HRA_56_56_DEC_TYPE 0 #define HRA_56_56_MAX_ITER 100 #include extern const uint16_t HRA_56_56_H_rows[]; extern const uint16_t HRA_56_56_H_cols[]; extern const float HRA_56_56_input[]; extern const char HRA_56_56_detected_data[]; codec2-1.2.0/src/HRAa_1536_512.c000066400000000000000000003666231445607075400154600ustar00rootroot00000000000000/* FILE....: HRAa_1536_512.c Static arrays for LDPC codec HRAa_1536_512, generated by ldpc_gen_c_h_file.m. */ #include "HRAa_1536_512.h" #include const uint16_t HRAa_1536_512_H_rows[] = { 122, 98, 31, 39, 21, 33, 91, 90, 118, 111, 126, 34, 5, 120, 54, 2, 95, 67, 15, 68, 114, 10, 100, 53, 104, 29, 44, 76, 59, 112, 73, 77, 71, 61, 69, 128, 106, 50, 32, 6, 85, 102, 37, 99, 57, 75, 80, 88, 41, 27, 127, 16, 40, 119, 46, 110, 97, 79, 13, 45, 55, 62, 103, 92, 116, 7, 66, 83, 89, 96, 82, 58, 105, 78, 4, 47, 107, 52, 28, 20, 24, 51, 108, 36, 63, 30, 48, 26, 109, 60, 87, 49, 86, 25, 42, 123, 93, 18, 101, 43, 14, 72, 124, 35, 115, 81, 70, 22, 125, 64, 1, 113, 3, 17, 84, 74, 23, 94, 38, 12, 8, 65, 19, 56, 121, 9, 11, 117, 45, 115, 46, 23, 41, 17, 61, 112, 36, 99, 31, 107, 19, 37, 7, 11, 6, 47, 89, 4, 57, 20, 95, 55, 87, 82, 106, 88, 90, 85, 125, 42, 120, 18, 21, 34, 100, 103, 113, 5, 53, 108, 83, 67, 92, 109, 28, 76, 14, 43, 58, 30, 73, 33, 16, 35, 101, 22, 110, 94, 2, 91, 65, 98, 66, 51, 121, 84, 64, 118, 126, 27, 26, 111, 68, 69, 15, 124, 75, 123, 52, 10, 79, 40, 119, 9, 81, 102, 104, 13, 80, 127, 59, 72, 50, 48, 128, 56, 105, 117, 49, 54, 63, 60, 32, 71, 1, 114, 74, 70, 44, 86, 12, 8, 78, 29, 24, 96, 3, 93, 116, 62, 77, 38, 25, 39, 122, 97, 76, 37, 24, 104, 4, 46, 86, 44, 68, 47, 62, 49, 8, 79, 14, 119, 101, 63, 12, 53, 112, 78, 39, 103, 64, 100, 34, 108, 116, 23, 81, 121, 35, 124, 9, 127, 88, 125, 74, 94, 21, 10, 83, 2, 109, 80, 115, 122, 65, 1, 69, 71, 92, 89, 117, 75, 60, 59, 110, 43, 27, 118, 82, 38, 16, 26, 42, 55, 48, 70, 97, 90, 105, 33, 123, 120, 29, 126, 30, 73, 114, 57, 15, 72, 54, 96, 99, 107, 11, 45, 98, 22, 95, 41, 18, 13, 52, 87, 25, 17, 7, 58, 67, 32, 51, 50, 128, 61, 66, 113, 31, 106, 5, 36, 20, 19, 28, 6, 85, 91, 84, 56, 40, 111, 93, 77, 3, 102, 67, 63, 11, 23, 75, 55, 24, 38, 90, 17, 34, 5, 121, 103, 79, 40, 14, 76, 15, 88, 82, 100, 57, 102, 50, 84, 56, 114, 9, 119, 39, 86, 41, 89, 52, 13, 120, 25, 72, 33, 80, 3, 60, 109, 65, 28, 111, 16, 37, 69, 12, 94, 42, 105, 44, 106, 70, 68, 19, 74, 78, 124, 46, 43, 26, 32, 117, 128, 126, 93, 91, 116, 4, 10, 18, 64, 104, 81, 35, 115, 98, 48, 22, 125, 95, 123, 127, 96, 27, 107, 110, 58, 53, 62, 51, 97, 92, 54, 20, 21, 101, 30, 77, 2, 83, 87, 71, 108, 36, 61, 73, 8, 29, 113, 112, 59, 118, 45, 7, 6, 66, 85, 122, 47, 99, 49, 31, 1, 223, 249, 170, 159, 214, 134, 239, 206, 146, 132, 133, 207, 250, 208, 144, 213, 156, 198, 192, 211, 143, 174, 199, 254, 184, 131, 230, 161, 237, 158, 173, 204, 187, 171, 155, 164, 137, 183, 178, 151, 166, 180, 135, 200, 172, 176, 189, 169, 162, 136, 228, 252, 150, 212, 210, 231, 195, 154, 129, 147, 227, 148, 205, 255, 216, 233, 248, 246, 219, 236, 157, 197, 225, 240, 139, 256, 241, 238, 188, 152, 209, 167, 163, 145, 218, 168, 242, 165, 235, 153, 201, 160, 182, 138, 191, 245, 179, 140, 203, 185, 229, 181, 220, 175, 202, 190, 253, 234, 215, 149, 193, 251, 224, 221, 196, 177, 243, 232, 247, 217, 141, 186, 142, 244, 222, 194, 226, 130, 232, 185, 178, 129, 139, 244, 132, 164, 230, 191, 209, 242, 168, 228, 249, 158, 248, 235, 206, 238, 218, 159, 253, 196, 135, 147, 177, 225, 160, 137, 161, 212, 192, 175, 207, 222, 138, 134, 234, 136, 156, 152, 213, 226, 229, 151, 141, 201, 256, 181, 241, 243, 224, 180, 236, 194, 240, 182, 211, 255, 189, 208, 131, 176, 202, 155, 231, 146, 190, 237, 203, 183, 216, 133, 148, 144, 245, 174, 210, 252, 145, 142, 198, 187, 221, 153, 163, 223, 130, 162, 247, 140, 154, 184, 193, 215, 143, 199, 166, 220, 167, 219, 246, 204, 250, 173, 205, 254, 186, 149, 188, 172, 169, 150, 227, 233, 195, 251, 214, 217, 165, 170, 179, 157, 171, 197, 239, 200, 230, 130, 218, 131, 154, 223, 142, 155, 252, 174, 182, 156, 196, 229, 239, 192, 147, 198, 235, 209, 162, 199, 163, 227, 237, 148, 228, 160, 238, 240, 190, 241, 250, 211, 242, 184, 181, 251, 245, 187, 170, 194, 246, 212, 217, 138, 201, 193, 256, 224, 244, 243, 165, 144, 175, 180, 176, 185, 216, 141, 197, 231, 220, 204, 207, 221, 189, 150, 214, 134, 195, 234, 149, 186, 249, 140, 255, 168, 178, 133, 202, 145, 222, 236, 164, 188, 166, 208, 232, 132, 219, 159, 177, 139, 205, 226, 248, 254, 136, 161, 233, 135, 153, 171, 169, 146, 129, 167, 206, 215, 183, 225, 143, 137, 191, 200, 179, 213, 157, 152, 173, 151, 247, 253, 210, 158, 203, 172, 201, 162, 239, 190, 256, 229, 213, 135, 253, 178, 174, 193, 161, 238, 186, 141, 143, 205, 181, 129, 132, 180, 247, 255, 199, 241, 177, 251, 234, 212, 169, 200, 210, 133, 249, 163, 148, 153, 221, 164, 195, 152, 146, 232, 156, 243, 252, 142, 237, 219, 134, 197, 139, 137, 198, 218, 240, 155, 159, 160, 209, 228, 154, 168, 176, 225, 184, 194, 149, 188, 196, 157, 246, 208, 151, 236, 140, 130, 231, 226, 254, 217, 235, 165, 203, 182, 215, 189, 175, 136, 147, 185, 216, 242, 245, 172, 158, 173, 192, 211, 144, 171, 170, 214, 223, 207, 191, 222, 220, 179, 150, 244, 224, 230, 145, 183, 206, 202, 250, 204, 167, 227, 187, 166, 248, 138, 131, 233, 332, 283, 261, 276, 293, 336, 357, 369, 281, 317, 278, 356, 352, 367, 294, 350, 384, 327, 376, 290, 346, 361, 292, 351, 354, 363, 326, 291, 340, 273, 345, 306, 271, 341, 270, 307, 328, 360, 304, 362, 382, 322, 257, 297, 320, 337, 266, 259, 377, 368, 298, 310, 325, 371, 272, 324, 343, 374, 353, 370, 364, 316, 309, 269, 286, 277, 314, 358, 268, 313, 315, 311, 295, 267, 381, 344, 289, 260, 366, 258, 305, 342, 301, 308, 284, 331, 338, 380, 318, 329, 339, 264, 312, 303, 348, 335, 359, 330, 285, 263, 279, 274, 373, 265, 347, 333, 287, 323, 375, 355, 288, 365, 262, 379, 334, 378, 349, 383, 282, 296, 300, 321, 299, 275, 302, 280, 319, 372, 317, 372, 279, 308, 343, 334, 288, 341, 349, 318, 331, 329, 323, 371, 296, 298, 365, 327, 310, 344, 283, 321, 291, 325, 324, 360, 282, 294, 352, 377, 374, 342, 364, 263, 275, 267, 326, 335, 328, 289, 305, 280, 269, 314, 367, 300, 260, 333, 322, 271, 357, 306, 290, 358, 366, 303, 272, 302, 362, 353, 338, 383, 266, 264, 373, 359, 348, 312, 299, 286, 380, 268, 315, 285, 258, 363, 320, 287, 281, 311, 370, 313, 339, 273, 284, 292, 355, 345, 346, 384, 257, 295, 336, 277, 361, 261, 270, 369, 368, 337, 351, 378, 301, 316, 259, 262, 297, 276, 356, 293, 304, 347, 381, 330, 340, 379, 350, 332, 375, 382, 278, 307, 274, 309, 319, 265, 376, 354, 346, 320, 258, 341, 362, 360, 273, 342, 348, 324, 302, 340, 349, 292, 343, 370, 378, 295, 271, 327, 286, 371, 304, 306, 299, 345, 344, 326, 315, 357, 328, 262, 266, 329, 284, 309, 365, 332, 333, 338, 274, 303, 280, 380, 358, 363, 323, 322, 259, 294, 379, 285, 316, 278, 359, 310, 374, 334, 356, 261, 377, 347, 330, 355, 290, 331, 353, 314, 257, 267, 373, 291, 313, 375, 366, 382, 350, 260, 272, 335, 301, 275, 270, 300, 321, 311, 383, 317, 305, 384, 319, 337, 279, 297, 287, 277, 325, 367, 376, 308, 364, 264, 339, 312, 265, 351, 283, 268, 298, 288, 318, 368, 361, 307, 372, 296, 293, 289, 369, 269, 276, 263, 336, 381, 281, 352, 282, 354, 362, 360, 308, 384, 283, 296, 379, 280, 293, 294, 376, 358, 285, 319, 348, 302, 315, 304, 276, 338, 353, 290, 367, 346, 364, 306, 295, 260, 322, 378, 366, 363, 288, 361, 371, 281, 334, 356, 350, 347, 375, 365, 314, 351, 340, 257, 266, 345, 333, 373, 268, 277, 344, 359, 341, 343, 337, 352, 263, 349, 271, 381, 297, 377, 325, 339, 328, 267, 279, 372, 354, 287, 313, 316, 321, 258, 305, 300, 374, 330, 331, 259, 307, 261, 289, 335, 317, 324, 278, 368, 292, 299, 327, 320, 286, 291, 332, 272, 262, 275, 355, 265, 270, 383, 318, 309, 269, 274, 357, 298, 342, 282, 264, 329, 310, 284, 301, 336, 369, 303, 311, 323, 370, 326, 273, 380, 382, 312, 426, 449, 487, 455, 404, 413, 459, 469, 493, 508, 485, 442, 468, 439, 483, 443, 480, 418, 507, 423, 407, 474, 409, 425, 475, 444, 388, 496, 390, 490, 503, 416, 417, 509, 448, 479, 415, 501, 451, 471, 432, 427, 395, 410, 400, 408, 476, 441, 424, 391, 466, 482, 478, 454, 481, 394, 411, 446, 484, 431, 402, 491, 460, 494, 433, 440, 500, 450, 405, 430, 412, 387, 414, 492, 488, 436, 467, 461, 399, 472, 506, 396, 486, 505, 429, 495, 386, 438, 464, 456, 445, 462, 447, 428, 512, 385, 406, 463, 465, 422, 502, 437, 434, 435, 389, 489, 421, 497, 457, 499, 401, 393, 510, 392, 403, 453, 398, 397, 511, 477, 420, 452, 419, 504, 473, 498, 458, 470, 508, 439, 475, 499, 440, 394, 420, 469, 452, 416, 391, 405, 404, 498, 431, 510, 435, 434, 479, 459, 424, 472, 461, 429, 386, 489, 415, 512, 456, 406, 422, 411, 500, 455, 410, 401, 430, 392, 449, 468, 445, 443, 426, 490, 486, 389, 454, 464, 505, 473, 425, 442, 402, 436, 511, 488, 480, 466, 393, 481, 407, 397, 502, 446, 496, 504, 506, 438, 396, 492, 478, 433, 387, 501, 421, 418, 453, 470, 414, 450, 432, 428, 485, 491, 409, 447, 507, 385, 395, 465, 474, 403, 493, 457, 477, 460, 400, 444, 509, 463, 441, 467, 388, 427, 423, 398, 417, 412, 483, 399, 448, 503, 437, 471, 413, 487, 476, 419, 484, 495, 497, 408, 451, 390, 462, 482, 458, 494, 424, 429, 421, 467, 425, 480, 435, 436, 498, 417, 437, 419, 469, 477, 465, 428, 484, 493, 504, 452, 387, 458, 395, 418, 489, 390, 389, 474, 426, 444, 445, 466, 439, 388, 483, 416, 391, 461, 407, 491, 448, 431, 473, 385, 400, 411, 457, 394, 397, 470, 492, 406, 455, 434, 433, 475, 427, 505, 449, 420, 403, 478, 393, 443, 500, 446, 415, 414, 472, 454, 510, 511, 438, 408, 468, 487, 399, 506, 460, 495, 459, 450, 423, 386, 485, 481, 410, 453, 430, 412, 496, 502, 490, 501, 447, 432, 402, 462, 497, 404, 494, 503, 508, 440, 398, 512, 479, 441, 401, 392, 471, 456, 509, 405, 488, 409, 486, 422, 451, 507, 499, 413, 476, 442, 396, 482, 464, 463, 434, 487, 456, 385, 388, 477, 469, 427, 401, 439, 454, 464, 391, 390, 471, 399, 473, 400, 506, 436, 478, 437, 497, 465, 481, 490, 418, 404, 425, 463, 509, 393, 416, 467, 501, 409, 410, 498, 402, 394, 412, 438, 496, 480, 443, 450, 466, 476, 448, 460, 420, 397, 479, 511, 395, 502, 396, 387, 433, 457, 485, 419, 510, 474, 411, 426, 421, 435, 442, 449, 445, 415, 494, 499, 470, 512, 429, 392, 398, 488, 504, 451, 508, 417, 483, 406, 458, 405, 461, 453, 389, 440, 441, 423, 428, 492, 403, 459, 495, 452, 489, 414, 455, 407, 493, 507, 408, 500, 413, 444, 472, 430, 503, 386, 462, 447, 468, 432, 491, 482, 486, 446, 484, 424, 431, 505, 422, 475, 586, 617, 576, 608, 627, 589, 634, 597, 531, 534, 513, 620, 575, 605, 593, 539, 550, 639, 544, 567, 637, 628, 595, 592, 612, 551, 583, 541, 598, 527, 599, 545, 594, 610, 591, 633, 547, 516, 553, 522, 568, 558, 570, 619, 638, 523, 517, 537, 601, 542, 616, 622, 632, 629, 621, 609, 546, 564, 532, 636, 618, 588, 533, 582, 585, 623, 561, 578, 518, 525, 613, 529, 615, 614, 603, 577, 540, 528, 611, 559, 565, 556, 596, 574, 571, 581, 587, 519, 625, 552, 563, 635, 520, 580, 640, 602, 521, 538, 604, 631, 548, 624, 514, 515, 543, 607, 526, 557, 626, 600, 536, 566, 590, 572, 535, 562, 524, 630, 579, 584, 530, 555, 554, 606, 560, 549, 569, 573, 523, 515, 619, 608, 610, 594, 617, 618, 532, 542, 527, 626, 625, 584, 550, 541, 629, 521, 632, 622, 640, 599, 580, 579, 601, 627, 582, 556, 525, 581, 551, 536, 560, 630, 631, 614, 577, 559, 572, 592, 566, 524, 555, 598, 561, 595, 638, 602, 612, 546, 597, 513, 569, 540, 570, 571, 588, 604, 637, 548, 609, 534, 591, 518, 537, 564, 565, 528, 615, 606, 583, 621, 605, 624, 517, 543, 529, 519, 636, 530, 589, 639, 573, 620, 578, 545, 535, 634, 607, 567, 538, 586, 520, 635, 576, 552, 554, 558, 628, 544, 623, 568, 533, 563, 585, 611, 516, 562, 613, 557, 633, 531, 522, 590, 603, 574, 575, 553, 600, 587, 526, 616, 514, 547, 549, 539, 596, 593, 572, 609, 514, 594, 576, 626, 536, 598, 617, 564, 568, 558, 547, 606, 517, 624, 578, 582, 513, 571, 634, 585, 623, 605, 557, 539, 588, 545, 638, 534, 530, 524, 533, 552, 570, 573, 520, 595, 566, 559, 537, 567, 639, 562, 636, 635, 619, 597, 600, 621, 630, 616, 560, 632, 565, 584, 528, 640, 593, 561, 523, 629, 633, 518, 591, 551, 542, 583, 555, 599, 611, 548, 589, 602, 531, 612, 574, 522, 586, 538, 569, 546, 587, 613, 540, 608, 543, 553, 519, 627, 563, 592, 527, 628, 618, 601, 525, 521, 614, 544, 541, 580, 596, 603, 604, 607, 622, 579, 549, 620, 615, 575, 625, 637, 610, 526, 577, 554, 581, 550, 535, 529, 532, 515, 516, 556, 631, 590, 588, 589, 555, 638, 592, 518, 559, 625, 568, 546, 516, 610, 624, 590, 549, 601, 632, 514, 554, 561, 537, 569, 551, 521, 542, 541, 623, 640, 627, 564, 533, 530, 591, 611, 597, 579, 598, 600, 594, 528, 540, 581, 604, 633, 536, 527, 558, 593, 574, 534, 544, 616, 612, 607, 517, 620, 532, 618, 615, 608, 637, 622, 529, 621, 573, 602, 543, 578, 563, 595, 553, 523, 525, 582, 539, 560, 613, 552, 575, 639, 606, 635, 577, 548, 522, 605, 571, 520, 535, 580, 513, 629, 562, 570, 545, 617, 519, 566, 557, 556, 572, 587, 584, 547, 524, 576, 538, 603, 550, 599, 619, 628, 515, 630, 614, 567, 583, 626, 636, 585, 526, 565, 596, 531, 631, 586, 609, 634, 654, 647, 718, 697, 752, 672, 705, 651, 683, 675, 742, 670, 717, 658, 650, 695, 701, 665, 656, 723, 730, 702, 731, 726, 750, 711, 667, 645, 653, 691, 743, 733, 720, 714, 684, 722, 690, 678, 754, 721, 708, 710, 659, 749, 751, 724, 758, 748, 716, 646, 729, 664, 644, 728, 693, 759, 753, 746, 686, 719, 762, 700, 676, 756, 734, 765, 689, 715, 661, 643, 660, 680, 642, 740, 648, 732, 709, 663, 668, 685, 727, 662, 737, 747, 725, 703, 736, 713, 641, 764, 688, 666, 706, 745, 739, 712, 681, 682, 679, 655, 694, 767, 760, 704, 673, 674, 757, 669, 696, 657, 652, 692, 698, 699, 763, 677, 735, 741, 707, 649, 738, 768, 766, 671, 687, 755, 744, 761, 706, 645, 725, 682, 649, 704, 739, 715, 713, 690, 727, 670, 714, 765, 652, 751, 721, 666, 717, 676, 677, 658, 738, 726, 646, 663, 756, 669, 710, 695, 752, 657, 680, 691, 654, 712, 764, 741, 705, 685, 724, 720, 709, 692, 642, 750, 767, 686, 759, 716, 674, 694, 653, 718, 729, 683, 737, 673, 647, 671, 643, 697, 747, 761, 748, 675, 746, 708, 760, 687, 744, 711, 648, 664, 659, 722, 732, 758, 696, 679, 656, 733, 641, 762, 743, 650, 735, 730, 742, 753, 731, 701, 740, 745, 684, 728, 702, 763, 757, 768, 689, 700, 766, 660, 707, 662, 672, 661, 754, 667, 693, 681, 678, 665, 723, 736, 734, 651, 688, 698, 719, 703, 668, 644, 699, 749, 755, 655, 692, 708, 659, 697, 701, 647, 683, 762, 652, 722, 725, 760, 642, 764, 698, 690, 729, 682, 734, 695, 737, 691, 751, 641, 673, 672, 680, 686, 704, 714, 767, 745, 723, 743, 718, 665, 746, 657, 731, 720, 660, 712, 709, 765, 756, 687, 693, 671, 656, 730, 670, 742, 663, 732, 694, 702, 664, 650, 678, 668, 752, 763, 676, 726, 648, 662, 679, 689, 655, 738, 744, 715, 733, 681, 759, 685, 753, 707, 688, 713, 736, 755, 696, 711, 719, 684, 741, 658, 675, 728, 757, 740, 749, 727, 724, 766, 706, 758, 677, 674, 705, 717, 703, 646, 651, 644, 768, 748, 710, 643, 735, 747, 754, 761, 661, 654, 750, 739, 666, 699, 700, 716, 667, 721, 653, 669, 649, 645, 703, 723, 739, 737, 646, 667, 728, 704, 687, 710, 699, 676, 735, 656, 671, 755, 696, 750, 700, 758, 705, 678, 658, 726, 665, 721, 684, 744, 766, 643, 644, 745, 652, 754, 713, 720, 712, 768, 762, 661, 675, 692, 660, 748, 716, 679, 734, 642, 691, 651, 685, 763, 695, 689, 752, 722, 730, 756, 759, 736, 655, 707, 715, 709, 702, 673, 743, 663, 682, 727, 659, 731, 708, 657, 732, 714, 751, 725, 674, 648, 719, 680, 698, 757, 760, 717, 666, 669, 733, 647, 686, 765, 641, 694, 662, 753, 697, 738, 741, 649, 688, 749, 746, 767, 645, 664, 668, 654, 690, 761, 677, 729, 724, 653, 764, 706, 711, 672, 742, 718, 670, 740, 650, 701, 693, 683, 747, 681, 819, 870, 769, 827, 887, 805, 856, 785, 885, 823, 852, 841, 799, 831, 845, 822, 801, 866, 864, 844, 789, 860, 877, 783, 850, 818, 811, 884, 812, 833, 774, 851, 890, 808, 792, 781, 869, 807, 773, 836, 772, 815, 798, 786, 859, 868, 840, 832, 802, 865, 770, 896, 891, 803, 777, 892, 771, 797, 886, 895, 888, 778, 847, 796, 809, 780, 872, 858, 855, 826, 873, 791, 878, 834, 779, 862, 793, 814, 880, 824, 825, 853, 835, 861, 788, 876, 828, 842, 820, 875, 810, 787, 863, 800, 854, 839, 838, 837, 871, 881, 849, 894, 893, 806, 867, 848, 776, 784, 821, 874, 830, 804, 883, 795, 817, 846, 794, 775, 829, 889, 790, 879, 816, 813, 882, 782, 857, 843, 810, 820, 814, 859, 829, 880, 890, 861, 864, 784, 792, 834, 831, 823, 798, 801, 817, 827, 782, 843, 816, 892, 841, 894, 806, 879, 832, 802, 849, 825, 877, 783, 884, 826, 786, 795, 787, 794, 815, 821, 785, 813, 777, 819, 893, 863, 840, 809, 781, 775, 887, 848, 875, 803, 857, 805, 812, 873, 773, 835, 842, 790, 780, 789, 807, 886, 862, 868, 808, 796, 870, 855, 866, 793, 845, 799, 833, 850, 811, 854, 891, 836, 865, 838, 771, 778, 770, 839, 881, 856, 828, 852, 791, 822, 867, 874, 774, 847, 885, 869, 818, 846, 788, 888, 876, 853, 882, 895, 844, 776, 797, 858, 872, 804, 800, 824, 883, 769, 837, 871, 772, 830, 889, 860, 878, 779, 851, 896, 810, 884, 895, 789, 844, 821, 791, 859, 894, 854, 831, 876, 877, 816, 853, 835, 857, 856, 858, 805, 829, 782, 849, 893, 889, 795, 872, 823, 871, 802, 786, 846, 878, 815, 804, 869, 824, 813, 887, 851, 822, 783, 801, 800, 806, 776, 778, 811, 774, 817, 883, 777, 880, 790, 836, 860, 797, 873, 779, 865, 847, 891, 785, 888, 780, 868, 837, 838, 842, 793, 892, 845, 826, 792, 773, 885, 784, 787, 796, 814, 850, 875, 874, 775, 769, 799, 861, 840, 848, 772, 809, 770, 808, 866, 864, 834, 833, 879, 807, 832, 886, 827, 794, 870, 863, 841, 818, 896, 881, 862, 828, 839, 798, 820, 788, 852, 812, 830, 781, 771, 882, 890, 803, 843, 867, 855, 819, 825, 884, 815, 775, 823, 781, 861, 894, 779, 891, 836, 870, 789, 807, 862, 854, 893, 808, 805, 824, 770, 841, 826, 834, 786, 838, 796, 822, 869, 792, 839, 820, 825, 878, 791, 819, 799, 852, 896, 890, 882, 887, 840, 809, 790, 788, 858, 871, 804, 844, 876, 848, 886, 865, 795, 864, 776, 889, 818, 821, 784, 777, 875, 872, 855, 842, 794, 883, 782, 873, 814, 895, 892, 811, 778, 845, 812, 827, 846, 817, 856, 800, 785, 793, 787, 837, 773, 780, 879, 881, 772, 857, 831, 783, 847, 859, 867, 851, 769, 801, 833, 806, 853, 830, 816, 829, 828, 810, 797, 849, 832, 798, 863, 885, 860, 771, 803, 850, 813, 888, 843, 802, 866, 880, 874, 868, 774, 835, 877, 949, 911, 950, 932, 956, 978, 968, 947, 944, 984, 980, 941, 927, 1020, 962, 999, 1021, 983, 1024, 902, 937, 921, 993, 965, 933, 1004, 1022, 916, 931, 910, 981, 924, 914, 917, 974, 986, 967, 961, 997, 899, 1002, 966, 934, 998, 1008, 953, 987, 973, 1009, 909, 922, 963, 991, 959, 1011, 912, 940, 943, 979, 1001, 954, 969, 915, 985, 1015, 930, 1012, 1017, 960, 996, 906, 904, 994, 926, 935, 946, 1016, 992, 913, 918, 929, 995, 990, 952, 975, 1013, 958, 907, 972, 897, 957, 908, 1023, 938, 955, 903, 1003, 988, 1000, 942, 1006, 928, 970, 989, 1005, 1007, 898, 920, 1010, 1019, 945, 976, 982, 939, 923, 919, 971, 948, 905, 964, 977, 1018, 901, 1014, 900, 925, 936, 951, 1017, 949, 913, 936, 963, 990, 1015, 969, 966, 940, 957, 919, 927, 999, 908, 1020, 930, 899, 905, 1019, 1021, 948, 911, 989, 1023, 970, 1013, 944, 934, 972, 951, 971, 946, 991, 947, 1024, 914, 916, 931, 983, 1004, 945, 918, 1002, 928, 1006, 968, 939, 938, 941, 961, 937, 995, 1000, 985, 950, 994, 1016, 1003, 1008, 909, 1001, 906, 926, 1011, 953, 915, 910, 975, 907, 976, 993, 904, 903, 982, 956, 959, 980, 986, 917, 962, 942, 912, 977, 979, 921, 965, 997, 998, 922, 923, 988, 1022, 967, 973, 898, 1007, 987, 1009, 924, 974, 996, 1005, 933, 1018, 929, 925, 900, 992, 952, 1014, 960, 1012, 981, 901, 920, 954, 964, 958, 1010, 984, 902, 932, 955, 897, 978, 943, 935, 907, 963, 943, 945, 998, 1024, 958, 1020, 900, 959, 926, 992, 1021, 955, 991, 970, 905, 1003, 911, 934, 940, 913, 924, 939, 972, 975, 985, 956, 922, 938, 951, 941, 1008, 995, 932, 937, 986, 1007, 979, 947, 906, 927, 912, 993, 978, 977, 1010, 990, 901, 1016, 1019, 982, 929, 1011, 960, 1015, 1001, 914, 898, 971, 1009, 948, 931, 964, 903, 902, 923, 928, 1013, 921, 916, 936, 918, 987, 997, 1023, 935, 952, 917, 933, 983, 919, 981, 1018, 969, 957, 910, 1004, 909, 897, 1017, 999, 996, 1022, 930, 988, 915, 904, 994, 973, 1006, 1002, 967, 961, 989, 920, 965, 949, 980, 968, 976, 950, 925, 966, 899, 1000, 1005, 974, 953, 984, 1014, 908, 942, 944, 946, 954, 1012, 962, 927, 930, 905, 959, 951, 966, 910, 917, 1020, 1018, 996, 915, 976, 990, 982, 994, 909, 941, 937, 899, 969, 1023, 1009, 902, 963, 957, 919, 907, 1019, 960, 949, 1016, 916, 955, 900, 943, 1000, 934, 947, 938, 999, 1013, 977, 995, 945, 1001, 986, 913, 954, 906, 1005, 1011, 1024, 975, 921, 1002, 918, 942, 985, 987, 961, 967, 958, 973, 997, 1004, 1015, 908, 925, 897, 978, 953, 974, 924, 992, 972, 984, 1010, 1008, 979, 971, 936, 952, 914, 983, 988, 1017, 965, 926, 1014, 898, 923, 964, 1003, 970, 950, 939, 932, 998, 928, 956, 991, 940, 901, 931, 962, 1022, 946, 948, 903, 1021, 1006, 993, 935, 944, 904, 929, 980, 911, 922, 989, 1007, 968, 912, 981, 1012, 920, 933, 1132, 1107, 1101, 1150, 1145, 1065, 1147, 1059, 1038, 1115, 1083, 1034, 1151, 1079, 1047, 1054, 1116, 1076, 1069, 1120, 1126, 1086, 1064, 1133, 1036, 1057, 1128, 1030, 1099, 1037, 1027, 1084, 1134, 1138, 1125, 1068, 1092, 1137, 1093, 1048, 1102, 1111, 1104, 1029, 1046, 1121, 1041, 1035, 1070, 1123, 1091, 1088, 1045, 1131, 1148, 1139, 1063, 1096, 1106, 1097, 1095, 1050, 1055, 1149, 1078, 1112, 1081, 1062, 1142, 1052, 1049, 1025, 1146, 1060, 1056, 1108, 1136, 1109, 1058, 1105, 1044, 1033, 1143, 1087, 1051, 1077, 1110, 1117, 1085, 1090, 1073, 1031, 1127, 1122, 1113, 1144, 1130, 1043, 1066, 1118, 1089, 1103, 1082, 1040, 1067, 1053, 1071, 1042, 1072, 1061, 1124, 1129, 1135, 1100, 1114, 1080, 1039, 1140, 1094, 1152, 1141, 1075, 1098, 1026, 1074, 1032, 1119, 1028, 1097, 1049, 1055, 1115, 1113, 1110, 1135, 1101, 1081, 1082, 1093, 1066, 1151, 1103, 1121, 1048, 1035, 1029, 1090, 1028, 1050, 1123, 1077, 1083, 1145, 1047, 1111, 1067, 1112, 1059, 1100, 1118, 1042, 1102, 1109, 1079, 1054, 1094, 1120, 1132, 1078, 1031, 1030, 1027, 1026, 1106, 1053, 1069, 1117, 1105, 1108, 1137, 1058, 1034, 1070, 1063, 1143, 1149, 1104, 1033, 1076, 1045, 1136, 1052, 1092, 1133, 1148, 1025, 1051, 1122, 1144, 1080, 1074, 1141, 1116, 1043, 1139, 1129, 1146, 1057, 1098, 1119, 1039, 1125, 1037, 1131, 1114, 1130, 1086, 1044, 1127, 1073, 1032, 1150, 1099, 1060, 1128, 1085, 1056, 1068, 1061, 1096, 1038, 1142, 1065, 1126, 1046, 1062, 1134, 1152, 1124, 1036, 1107, 1095, 1138, 1075, 1084, 1071, 1091, 1147, 1072, 1087, 1064, 1041, 1140, 1040, 1089, 1088, 1025, 1060, 1053, 1051, 1049, 1147, 1082, 1141, 1151, 1081, 1045, 1084, 1105, 1047, 1058, 1035, 1137, 1037, 1050, 1074, 1100, 1040, 1124, 1116, 1088, 1079, 1073, 1057, 1113, 1099, 1104, 1140, 1052, 1046, 1056, 1152, 1150, 1144, 1066, 1077, 1138, 1083, 1097, 1044, 1063, 1126, 1030, 1131, 1076, 1111, 1069, 1096, 1146, 1059, 1108, 1133, 1087, 1042, 1103, 1125, 1092, 1090, 1089, 1142, 1117, 1068, 1029, 1062, 1129, 1148, 1036, 1026, 1067, 1055, 1101, 1120, 1038, 1132, 1078, 1028, 1145, 1075, 1031, 1061, 1107, 1072, 1121, 1118, 1054, 1109, 1135, 1027, 1080, 1122, 1033, 1039, 1112, 1127, 1115, 1091, 1064, 1139, 1041, 1110, 1130, 1149, 1136, 1070, 1065, 1086, 1098, 1128, 1134, 1043, 1085, 1102, 1094, 1032, 1123, 1119, 1106, 1143, 1034, 1048, 1095, 1093, 1114, 1071, 1131, 1056, 1028, 1077, 1151, 1137, 1031, 1144, 1119, 1084, 1066, 1078, 1105, 1047, 1075, 1126, 1138, 1070, 1115, 1042, 1079, 1128, 1123, 1122, 1063, 1050, 1152, 1064, 1146, 1074, 1134, 1118, 1049, 1045, 1149, 1088, 1136, 1068, 1085, 1052, 1026, 1093, 1096, 1098, 1048, 1125, 1067, 1030, 1116, 1103, 1145, 1032, 1127, 1106, 1094, 1041, 1080, 1097, 1104, 1147, 1102, 1117, 1089, 1083, 1054, 1073, 1092, 1040, 1100, 1058, 1091, 1150, 1057, 1142, 1076, 1051, 1086, 1132, 1101, 1043, 1060, 1027, 1025, 1081, 1133, 1099, 1124, 1140, 1033, 1029, 1121, 1109, 1069, 1055, 1111, 1110, 1113, 1108, 1072, 1141, 1087, 1065, 1071, 1095, 1139, 1129, 1039, 1059, 1090, 1143, 1046, 1135, 1112, 1082, 1044, 1038, 1061, 1148, 1037, 1062, 1034, 1130, 1053, 1107, 1120, 1114, 1036, 1035, 1249, 1214, 1233, 1199, 1235, 1157, 1166, 1263, 1231, 1208, 1211, 1178, 1163, 1193, 1270, 1182, 1260, 1175, 1153, 1248, 1271, 1267, 1251, 1252, 1183, 1172, 1241, 1203, 1266, 1227, 1222, 1277, 1161, 1274, 1254, 1195, 1169, 1155, 1186, 1202, 1279, 1162, 1239, 1217, 1258, 1244, 1228, 1190, 1278, 1224, 1198, 1181, 1234, 1165, 1174, 1230, 1184, 1269, 1194, 1159, 1168, 1205, 1237, 1215, 1264, 1185, 1173, 1180, 1229, 1206, 1273, 1246, 1220, 1196, 1176, 1191, 1275, 1245, 1261, 1225, 1221, 1253, 1192, 1218, 1216, 1272, 1156, 1207, 1262, 1276, 1167, 1189, 1158, 1232, 1170, 1219, 1187, 1280, 1204, 1259, 1255, 1154, 1226, 1171, 1268, 1223, 1212, 1209, 1250, 1188, 1256, 1240, 1265, 1247, 1243, 1179, 1242, 1213, 1238, 1201, 1200, 1177, 1210, 1160, 1197, 1257, 1164, 1236, 1265, 1275, 1232, 1212, 1173, 1192, 1231, 1279, 1185, 1203, 1205, 1248, 1270, 1215, 1241, 1167, 1161, 1228, 1175, 1153, 1159, 1230, 1191, 1209, 1259, 1253, 1229, 1171, 1257, 1221, 1264, 1188, 1256, 1278, 1199, 1239, 1251, 1155, 1218, 1261, 1254, 1202, 1237, 1174, 1187, 1245, 1190, 1272, 1274, 1255, 1179, 1172, 1216, 1207, 1176, 1262, 1247, 1213, 1238, 1156, 1277, 1268, 1164, 1269, 1260, 1210, 1180, 1183, 1276, 1222, 1224, 1177, 1246, 1233, 1234, 1273, 1211, 1208, 1217, 1158, 1165, 1267, 1197, 1194, 1250, 1220, 1160, 1258, 1206, 1240, 1236, 1244, 1242, 1168, 1225, 1204, 1170, 1157, 1178, 1186, 1243, 1189, 1169, 1249, 1280, 1227, 1195, 1223, 1200, 1214, 1163, 1226, 1182, 1184, 1154, 1266, 1198, 1235, 1201, 1263, 1181, 1196, 1162, 1219, 1193, 1252, 1166, 1271, 1206, 1208, 1271, 1239, 1153, 1195, 1224, 1188, 1236, 1191, 1264, 1197, 1175, 1232, 1182, 1228, 1209, 1210, 1246, 1227, 1244, 1193, 1167, 1194, 1184, 1279, 1199, 1223, 1259, 1243, 1256, 1212, 1187, 1237, 1248, 1214, 1176, 1263, 1268, 1219, 1278, 1202, 1276, 1265, 1189, 1154, 1274, 1213, 1192, 1211, 1215, 1170, 1171, 1164, 1216, 1240, 1168, 1166, 1177, 1235, 1267, 1261, 1252, 1174, 1201, 1173, 1163, 1241, 1257, 1169, 1262, 1157, 1186, 1229, 1249, 1225, 1198, 1178, 1217, 1207, 1245, 1160, 1200, 1161, 1275, 1165, 1226, 1196, 1179, 1159, 1233, 1238, 1221, 1280, 1260, 1172, 1253, 1269, 1270, 1158, 1155, 1258, 1218, 1273, 1230, 1190, 1231, 1250, 1204, 1222, 1251, 1203, 1220, 1272, 1255, 1234, 1254, 1266, 1277, 1181, 1205, 1162, 1183, 1242, 1185, 1156, 1247, 1180, 1173, 1254, 1271, 1252, 1207, 1269, 1185, 1157, 1162, 1268, 1192, 1263, 1179, 1251, 1188, 1230, 1194, 1255, 1273, 1163, 1181, 1206, 1242, 1247, 1270, 1191, 1161, 1171, 1193, 1235, 1198, 1217, 1246, 1241, 1187, 1262, 1174, 1218, 1238, 1165, 1279, 1156, 1280, 1195, 1177, 1213, 1240, 1208, 1184, 1159, 1170, 1277, 1210, 1204, 1166, 1228, 1248, 1182, 1199, 1229, 1249, 1223, 1153, 1190, 1225, 1221, 1261, 1226, 1257, 1197, 1244, 1258, 1201, 1186, 1232, 1276, 1160, 1176, 1212, 1202, 1253, 1274, 1267, 1175, 1172, 1233, 1167, 1154, 1243, 1200, 1256, 1189, 1220, 1272, 1239, 1180, 1205, 1231, 1169, 1227, 1219, 1250, 1275, 1158, 1260, 1234, 1259, 1209, 1168, 1278, 1164, 1245, 1183, 1216, 1236, 1203, 1264, 1215, 1237, 1214, 1266, 1196, 1155, 1222, 1265, 1211, 1178, 1224, 1298, 1403, 1337, 1329, 1331, 1386, 1349, 1320, 1288, 1287, 1380, 1402, 1342, 1366, 1352, 1353, 1304, 1284, 1334, 1397, 1321, 1286, 1360, 1328, 1381, 1326, 1309, 1333, 1365, 1282, 1362, 1385, 1314, 1387, 1303, 1383, 1351, 1369, 1311, 1310, 1301, 1308, 1400, 1359, 1395, 1332, 1358, 1323, 1367, 1296, 1364, 1372, 1350, 1371, 1361, 1396, 1363, 1294, 1377, 1281, 1368, 1343, 1355, 1393, 1399, 1327, 1378, 1388, 1302, 1392, 1300, 1406, 1319, 1404, 1315, 1382, 1379, 1408, 1345, 1405, 1324, 1335, 1305, 1306, 1370, 1390, 1401, 1391, 1283, 1291, 1338, 1375, 1313, 1398, 1292, 1316, 1330, 1384, 1289, 1325, 1295, 1376, 1307, 1373, 1339, 1354, 1374, 1290, 1344, 1317, 1322, 1394, 1318, 1340, 1407, 1336, 1285, 1312, 1297, 1356, 1347, 1346, 1293, 1348, 1389, 1341, 1299, 1357, 1298, 1313, 1387, 1357, 1296, 1323, 1283, 1333, 1382, 1347, 1332, 1316, 1405, 1366, 1402, 1394, 1388, 1309, 1401, 1338, 1302, 1359, 1400, 1285, 1371, 1365, 1367, 1407, 1294, 1348, 1350, 1305, 1376, 1374, 1386, 1356, 1297, 1343, 1287, 1282, 1286, 1331, 1326, 1351, 1321, 1399, 1354, 1306, 1393, 1362, 1353, 1325, 1346, 1310, 1395, 1324, 1391, 1342, 1311, 1361, 1337, 1335, 1328, 1322, 1355, 1352, 1404, 1380, 1303, 1383, 1370, 1379, 1281, 1339, 1289, 1398, 1288, 1308, 1396, 1304, 1301, 1349, 1312, 1314, 1319, 1384, 1368, 1397, 1334, 1358, 1341, 1299, 1406, 1403, 1372, 1307, 1320, 1284, 1317, 1385, 1363, 1364, 1389, 1292, 1290, 1330, 1360, 1408, 1329, 1327, 1377, 1369, 1344, 1378, 1291, 1375, 1381, 1300, 1336, 1373, 1295, 1315, 1340, 1345, 1293, 1390, 1318, 1392, 1380, 1399, 1376, 1337, 1361, 1342, 1304, 1407, 1338, 1390, 1289, 1325, 1393, 1383, 1345, 1323, 1362, 1364, 1363, 1358, 1339, 1388, 1397, 1340, 1348, 1305, 1372, 1360, 1336, 1283, 1403, 1400, 1346, 1371, 1374, 1401, 1366, 1296, 1347, 1395, 1351, 1294, 1375, 1349, 1319, 1404, 1318, 1382, 1370, 1312, 1391, 1408, 1313, 1406, 1385, 1287, 1389, 1398, 1314, 1300, 1292, 1308, 1324, 1301, 1333, 1316, 1332, 1343, 1402, 1281, 1386, 1285, 1384, 1321, 1373, 1282, 1353, 1354, 1286, 1377, 1290, 1396, 1302, 1295, 1341, 1381, 1368, 1293, 1329, 1326, 1394, 1311, 1344, 1315, 1330, 1327, 1288, 1392, 1355, 1405, 1322, 1356, 1352, 1284, 1359, 1298, 1297, 1350, 1334, 1309, 1335, 1303, 1379, 1331, 1291, 1369, 1387, 1320, 1357, 1328, 1310, 1365, 1367, 1306, 1307, 1317, 1299, 1378, 1313, 1300, 1384, 1286, 1374, 1317, 1382, 1369, 1337, 1363, 1301, 1401, 1408, 1352, 1305, 1308, 1315, 1377, 1358, 1390, 1294, 1381, 1403, 1344, 1332, 1354, 1380, 1290, 1362, 1370, 1291, 1388, 1361, 1287, 1349, 1400, 1385, 1283, 1320, 1348, 1325, 1324, 1314, 1360, 1339, 1357, 1326, 1394, 1399, 1342, 1306, 1368, 1404, 1299, 1296, 1365, 1372, 1375, 1402, 1303, 1398, 1297, 1281, 1319, 1289, 1395, 1367, 1406, 1321, 1345, 1376, 1378, 1371, 1307, 1364, 1285, 1288, 1302, 1351, 1293, 1346, 1353, 1316, 1391, 1312, 1310, 1340, 1338, 1383, 1327, 1318, 1396, 1389, 1397, 1322, 1298, 1347, 1295, 1366, 1329, 1387, 1359, 1343, 1335, 1355, 1292, 1323, 1284, 1282, 1333, 1392, 1379, 1328, 1356, 1331, 1336, 1330, 1341, 1393, 1373, 1309, 1311, 1407, 1350, 1405, 1304, 1334, 1386, 1461, 1428, 1471, 1489, 1427, 1424, 1514, 1463, 1439, 1522, 1487, 1445, 1409, 1459, 1419, 1483, 1486, 1481, 1415, 1451, 1429, 1528, 1527, 1531, 1417, 1484, 1476, 1422, 1478, 1502, 1524, 1473, 1535, 1431, 1505, 1523, 1416, 1462, 1521, 1414, 1474, 1443, 1410, 1536, 1418, 1446, 1456, 1435, 1525, 1517, 1457, 1492, 1500, 1495, 1513, 1440, 1436, 1437, 1508, 1454, 1464, 1413, 1450, 1472, 1509, 1529, 1477, 1433, 1432, 1467, 1491, 1469, 1516, 1479, 1434, 1515, 1499, 1442, 1497, 1412, 1530, 1425, 1520, 1519, 1532, 1485, 1448, 1488, 1507, 1426, 1449, 1496, 1423, 1493, 1506, 1512, 1470, 1498, 1534, 1411, 1465, 1441, 1458, 1503, 1468, 1420, 1455, 1533, 1526, 1501, 1430, 1518, 1453, 1447, 1444, 1466, 1494, 1510, 1452, 1460, 1511, 1482, 1475, 1421, 1438, 1490, 1504, 1480, 1506, 1429, 1497, 1433, 1477, 1528, 1439, 1417, 1427, 1458, 1494, 1489, 1474, 1473, 1520, 1529, 1435, 1532, 1504, 1409, 1426, 1453, 1421, 1483, 1502, 1518, 1418, 1463, 1516, 1530, 1496, 1482, 1533, 1513, 1531, 1459, 1486, 1534, 1412, 1512, 1514, 1455, 1505, 1481, 1445, 1443, 1411, 1468, 1536, 1447, 1452, 1446, 1521, 1415, 1484, 1441, 1480, 1442, 1414, 1423, 1460, 1469, 1465, 1519, 1430, 1410, 1428, 1492, 1478, 1467, 1425, 1517, 1525, 1511, 1424, 1456, 1444, 1500, 1431, 1420, 1461, 1498, 1416, 1436, 1485, 1495, 1437, 1503, 1487, 1448, 1432, 1491, 1476, 1449, 1507, 1527, 1434, 1470, 1419, 1490, 1509, 1510, 1438, 1466, 1522, 1488, 1523, 1526, 1501, 1499, 1422, 1440, 1472, 1475, 1479, 1462, 1524, 1471, 1457, 1454, 1413, 1493, 1451, 1535, 1508, 1515, 1464, 1450, 1437, 1500, 1432, 1527, 1443, 1456, 1521, 1501, 1528, 1418, 1451, 1446, 1421, 1478, 1493, 1530, 1499, 1462, 1414, 1448, 1477, 1472, 1471, 1426, 1523, 1498, 1485, 1509, 1533, 1453, 1447, 1458, 1467, 1484, 1423, 1517, 1519, 1409, 1455, 1411, 1454, 1502, 1531, 1504, 1525, 1416, 1464, 1413, 1417, 1489, 1473, 1410, 1459, 1480, 1495, 1516, 1439, 1420, 1482, 1433, 1481, 1468, 1483, 1536, 1466, 1532, 1457, 1494, 1508, 1450, 1429, 1534, 1431, 1497, 1449, 1445, 1436, 1463, 1513, 1490, 1488, 1524, 1424, 1496, 1415, 1505, 1520, 1518, 1476, 1507, 1514, 1440, 1425, 1428, 1491, 1475, 1526, 1438, 1465, 1470, 1435, 1510, 1441, 1412, 1503, 1444, 1535, 1442, 1434, 1469, 1512, 1474, 1419, 1430, 1479, 1511, 1492, 1486, 1422, 1487, 1515, 1461, 1529, 1460, 1427, 1452, 1506, 1522, 1430, 1438, 1487, 1414, 1420, 1510, 1447, 1509, 1433, 1482, 1424, 1415, 1446, 1493, 1518, 1417, 1485, 1441, 1434, 1490, 1484, 1462, 1520, 1410, 1418, 1423, 1427, 1527, 1524, 1533, 1471, 1483, 1457, 1451, 1502, 1521, 1460, 1498, 1523, 1473, 1412, 1479, 1448, 1536, 1508, 1439, 1416, 1443, 1500, 1519, 1419, 1470, 1522, 1513, 1477, 1480, 1516, 1425, 1512, 1411, 1472, 1454, 1474, 1444, 1459, 1432, 1496, 1426, 1440, 1467, 1491, 1489, 1504, 1463, 1481, 1449, 1514, 1476, 1530, 1450, 1505, 1532, 1442, 1468, 1445, 1456, 1429, 1413, 1492, 1517, 1466, 1437, 1475, 1525, 1422, 1465, 1495, 1421, 1529, 1507, 1526, 1458, 1511, 1499, 1453, 1488, 1534, 1535, 1497, 1436, 1428, 1478, 1486, 1515, 1528, 1431, 1469, 1452, 1409, 1501, 1461, 1503, 1531, 1464, 1494, 1455, 1506, 1435}; const uint16_t HRAa_1536_512_H_cols[] = { 111, 16, 113, 75, 13, 40, 66, 121, 126, 22, 127, 120, 59, 101, 19, 52, 114, 98, 123, 80, 5, 108, 117, 81, 94, 88, 50, 79, 26, 86, 3, 39, 6, 12, 104, 84, 43, 119, 4, 53, 49, 95, 100, 27, 60, 55, 76, 87, 92, 38, 82, 78, 24, 15, 61, 124, 45, 72, 29, 90, 34, 62, 85, 110, 122, 67, 18, 20, 35, 107, 33, 102, 31, 116, 46, 28, 32, 74, 58, 47, 106, 71, 68, 115, 41, 93, 91, 48, 69, 8, 7, 64, 97, 118, 17, 70, 57, 2, 44, 23, 99, 42, 63, 25, 73, 37, 77, 83, 89, 56, 10, 30, 112, 21, 105, 65, 128, 9, 54, 14, 125, 1, 96, 103, 109, 11, 51, 36, 59, 128, 26, 10, 11, 6, 43, 50, 37, 94, 75, 98, 121, 123, 21, 15, 84, 9, 60, 62, 110, 53, 40, 80, 90, 58, 35, 17, 71, 30, 4, 92, 28, 49, 83, 36, 88, 41, 82, 86, 48, 3, 34, 45, 31, 22, 104, 46, 116, 39, 97, 42, 102, 93, 38, 25, 100, 122, 33, 79, 47, 106, 95, 19, 111, 126, 57, 115, 72, 18, 23, 44, 91, 105, 99, 32, 63, 8, 12, 14, 81, 55, 20, 54, 16, 5, 109, 65, 120, 85, 69, 103, 114, 125, 1, 113, 73, 127, 61, 51, 101, 27, 56, 118, 66, 108, 89, 70, 29, 78, 7, 74, 77, 87, 117, 124, 96, 68, 119, 67, 2, 13, 112, 52, 107, 24, 64, 76, 43, 80, 48, 78, 3, 113, 100, 92, 104, 47, 74, 69, 64, 35, 33, 55, 30, 102, 124, 4, 66, 11, 101, 126, 9, 119, 2, 85, 99, 65, 107, 111, 77, 20, 28, 23, 5, 15, 73, 120, 44, 51, 123, 121, 83, 125, 94, 39, 81, 32, 36, 84, 63, 52, 72, 93, 70, 67, 71, 62, 10, 89, 127, 45, 122, 42, 108, 56, 53, 27, 18, 37, 90, 98, 86, 1, 106, 115, 96, 6, 46, 87, 91, 29, 34, 82, 57, 76, 31, 21, 105, 95, 117, 16, 24, 13, 59, 25, 110, 12, 7, 68, 97, 38, 22, 40, 26, 61, 112, 79, 14, 50, 8, 60, 54, 128, 103, 58, 109, 19, 49, 116, 114, 88, 75, 41, 118, 17, 96, 87, 72, 27, 105, 29, 50, 114, 112, 56, 43, 82, 118, 117, 79, 45, 111, 61, 115, 5, 69, 97, 21, 46, 23, 44, 57, 71, 6, 73, 37, 32, 33, 18, 123, 121, 107, 100, 20, 49, 24, 1, 42, 94, 85, 70, 60, 41, 65, 103, 104, 76, 102, 88, 14, 66, 48, 12, 16, 26, 91, 58, 93, 35, 2, 68, 39, 122, 116, 54, 4, 90, 109, 127, 7, 63, 78, 92, 98, 89, 99, 51, 77, 13, 8, 128, 40, 80, 125, 22, 25, 47, 120, 53, 36, 17, 55, 52, 15, 59, 11, 83, 3, 75, 106, 30, 62, 74, 9, 64, 86, 28, 108, 126, 110, 67, 38, 101, 31, 124, 84, 81, 19, 10, 34, 113, 119, 95, 11, 103, 104, 38, 47, 69, 88, 93, 97, 40, 46, 117, 70, 107, 30, 78, 72, 121, 9, 59, 63, 10, 115, 111, 48, 98, 16, 77, 28, 50, 105, 19, 32, 57, 37, 101, 126, 17, 26, 90, 39, 123, 122, 82, 108, 42, 80, 125, 67, 116, 91, 58, 81, 112, 20, 41, 127, 43, 85, 114, 128, 84, 13, 3, 76, 68, 119, 94, 86, 64, 27, 120, 65, 1, 87, 62, 6, 113, 35, 24, 15, 33, 23, 83, 8, 29, 31, 110, 49, 96, 75, 99, 14, 124, 106, 4, 56, 34, 79, 25, 71, 74, 73, 51, 2, 61, 44, 12, 55, 52, 66, 102, 89, 109, 5, 22, 54, 118, 100, 53, 36, 7, 92, 60, 21, 45, 18, 95, 89, 73, 70, 53, 28, 50, 2, 75, 120, 15, 8, 111, 29, 1, 100, 19, 110, 14, 43, 71, 69, 82, 78, 52, 18, 92, 27, 79, 108, 12, 124, 6, 105, 106, 10, 63, 116, 38, 99, 72, 97, 98, 9, 35, 80, 59, 125, 91, 67, 37, 30, 112, 55, 101, 16, 109, 4, 113, 114, 62, 17, 22, 86, 104, 7, 93, 119, 41, 77, 42, 26, 96, 88, 34, 68, 49, 13, 3, 60, 33, 40, 36, 20, 46, 85, 24, 81, 54, 51, 21, 23, 76, 32, 65, 117, 87, 83, 121, 95, 74, 118, 11, 31, 127, 94, 58, 84, 48, 44, 25, 45, 5, 57, 39, 126, 64, 107, 47, 56, 103, 128, 61, 115, 90, 66, 123, 102, 122, 3, 51, 57, 41, 39, 31, 118, 107, 55, 62, 75, 66, 36, 126, 24, 108, 8, 44, 92, 85, 21, 121, 72, 35, 77, 117, 114, 64, 58, 43, 13, 94, 17, 49, 54, 112, 6, 104, 38, 34, 65, 91, 27, 29, 124, 78, 42, 123, 115, 26, 1, 89, 109, 16, 10, 80, 81, 70, 4, 87, 119, 111, 14, 48, 30, 74, 83, 40, 98, 97, 96, 47, 12, 88, 128, 20, 15, 116, 63, 106, 101, 25, 32, 11, 82, 95, 69, 7, 127, 68, 45, 22, 84, 76, 93, 19, 50, 18, 105, 46, 37, 2, 99, 67, 71, 110, 90, 86, 23, 73, 122, 79, 100, 125, 113, 28, 9, 59, 5, 61, 120, 33, 53, 56, 103, 102, 60, 52, 90, 107, 40, 125, 123, 20, 96, 72, 119, 71, 88, 92, 50, 30, 2, 56, 79, 33, 63, 28, 34, 80, 116, 108, 22, 51, 115, 32, 126, 74, 13, 102, 81, 66, 29, 4, 25, 43, 75, 127, 21, 94, 114, 57, 12, 100, 58, 9, 111, 76, 8, 118, 1, 3, 128, 84, 46, 61, 95, 5, 91, 87, 54, 69, 38, 15, 52, 120, 24, 42, 37, 7, 62, 103, 117, 89, 48, 35, 85, 112, 121, 6, 59, 11, 31, 113, 18, 10, 64, 36, 47, 98, 104, 83, 53, 78, 23, 73, 82, 70, 39, 44, 16, 99, 60, 41, 97, 26, 105, 101, 106, 45, 49, 109, 55, 67, 86, 124, 65, 77, 68, 122, 110, 14, 17, 27, 93, 19, 72, 124, 31, 128, 44, 28, 92, 126, 82, 12, 48, 25, 30, 9, 117, 104, 47, 108, 98, 81, 53, 45, 15, 40, 71, 62, 85, 70, 106, 16, 63, 75, 26, 79, 8, 74, 110, 68, 57, 23, 6, 99, 105, 36, 19, 49, 107, 109, 91, 125, 122, 18, 86, 65, 14, 116, 67, 103, 11, 32, 89, 22, 84, 52, 101, 90, 51, 37, 39, 119, 61, 58, 60, 123, 29, 114, 3, 41, 102, 43, 80, 59, 2, 76, 78, 87, 42, 66, 95, 115, 10, 17, 88, 100, 127, 20, 46, 94, 50, 111, 35, 21, 93, 27, 112, 97, 54, 1, 24, 33, 113, 77, 38, 34, 56, 118, 121, 69, 83, 96, 5, 73, 7, 55, 64, 4, 13, 120, 19, 102, 38, 87, 6, 93, 60, 124, 33, 42, 13, 127, 54, 7, 91, 61, 37, 95, 104, 26, 67, 55, 18, 75, 122, 12, 116, 68, 52, 16, 25, 57, 66, 39, 97, 110, 92, 48, 76, 83, 14, 59, 36, 74, 125, 51, 4, 121, 120, 40, 28, 99, 62, 70, 88, 10, 108, 123, 11, 107, 118, 2, 64, 85, 44, 84, 96, 73, 81, 31, 106, 50, 80, 103, 30, 47, 69, 56, 9, 94, 3, 53, 5, 128, 63, 119, 43, 112, 27, 117, 115, 46, 78, 72, 114, 20, 1, 109, 23, 24, 82, 35, 101, 111, 126, 45, 100, 17, 79, 89, 8, 65, 113, 29, 22, 105, 58, 15, 21, 86, 71, 34, 77, 90, 32, 49, 41, 98, 60, 30, 89, 18, 117, 22, 10, 9, 99, 108, 90, 95, 123, 58, 101, 50, 119, 1, 127, 71, 41, 69, 35, 17, 83, 84, 103, 42, 27, 40, 39, 118, 93, 33, 75, 96, 110, 113, 73, 8, 21, 111, 48, 81, 100, 26, 66, 24, 4, 97, 5, 46, 28, 19, 82, 116, 3, 91, 105, 114, 126, 13, 62, 109, 79, 122, 121, 124, 7, 53, 37, 15, 16, 106, 63, 120, 128, 47, 44, 23, 55, 31, 57, 51, 29, 14, 49, 61, 38, 85, 54, 52, 104, 107, 92, 102, 59, 67, 77, 11, 25, 76, 36, 98, 32, 6, 34, 68, 125, 86, 88, 70, 64, 112, 45, 56, 20, 94, 65, 43, 87, 12, 2, 74, 80, 72, 115, 78, 13, 43, 100, 80, 62, 40, 19, 37, 25, 45, 15, 106, 124, 28, 93, 6, 82, 90, 5, 2, 21, 111, 34, 69, 68, 75, 48, 57, 58, 125, 9, 56, 102, 78, 42, 115, 12, 46, 114, 87, 91, 63, 20, 119, 113, 60, 107, 47, 51, 103, 14, 120, 1, 38, 8, 61, 101, 116, 70, 105, 72, 97, 3, 64, 32, 41, 123, 27, 67, 29, 74, 128, 18, 122, 16, 26, 86, 17, 11, 88, 4, 126, 71, 52, 94, 117, 54, 92, 79, 98, 77, 53, 110, 30, 104, 127, 35, 95, 89, 59, 65, 118, 121, 96, 55, 7, 76, 73, 50, 112, 84, 83, 39, 10, 36, 31, 49, 109, 23, 22, 66, 81, 24, 85, 108, 99, 33, 44, 235, 189, 247, 148, 168, 145, 143, 242, 214, 210, 144, 241, 218, 177, 205, 183, 134, 162, 141, 150, 163, 186, 132, 245, 253, 201, 200, 175, 244, 180, 139, 233, 182, 164, 184, 137, 142, 252, 254, 212, 133, 160, 178, 239, 129, 131, 146, 224, 229, 223, 194, 209, 169, 230, 152, 226, 149, 179, 221, 232, 135, 250, 231, 197, 191, 193, 172, 203, 204, 238, 234, 222, 181, 237, 207, 176, 251, 243, 211, 219, 215, 154, 171, 196, 158, 240, 153, 156, 147, 157, 190, 173, 248, 188, 151, 246, 256, 192, 138, 165, 185, 216, 166, 217, 227, 155, 140, 170, 174, 187, 202, 136, 167, 236, 130, 249, 228, 198, 213, 161, 195, 255, 208, 206, 159, 199, 220, 225, 132, 217, 191, 135, 202, 166, 153, 168, 158, 165, 133, 220, 175, 210, 225, 204, 209, 196, 154, 203, 238, 242, 174, 170, 214, 221, 194, 169, 252, 144, 150, 157, 159, 218, 215, 136, 249, 227, 229, 141, 241, 250, 253, 240, 234, 206, 162, 192, 155, 131, 251, 182, 178, 186, 200, 222, 130, 237, 212, 239, 189, 197, 138, 161, 223, 184, 245, 152, 254, 211, 226, 256, 176, 193, 199, 232, 235, 147, 163, 190, 139, 207, 187, 160, 171, 247, 224, 201, 248, 149, 230, 228, 213, 164, 216, 181, 156, 172, 243, 142, 173, 137, 195, 129, 244, 167, 146, 183, 198, 148, 255, 185, 179, 140, 180, 134, 205, 231, 219, 145, 143, 233, 246, 208, 151, 236, 188, 177, 219, 203, 233, 175, 224, 234, 162, 192, 254, 191, 164, 200, 171, 225, 178, 185, 212, 251, 163, 236, 222, 249, 131, 170, 207, 155, 149, 213, 202, 198, 206, 135, 168, 181, 151, 214, 238, 156, 220, 143, 235, 144, 197, 174, 231, 186, 184, 239, 169, 180, 250, 132, 252, 147, 208, 196, 210, 172, 201, 232, 129, 138, 253, 205, 150, 177, 141, 153, 152, 165, 146, 167, 140, 242, 139, 246, 176, 134, 166, 221, 228, 189, 211, 243, 136, 160, 133, 148, 216, 217, 240, 195, 137, 245, 229, 157, 188, 256, 215, 237, 179, 182, 194, 154, 223, 187, 204, 161, 145, 183, 173, 227, 226, 209, 142, 130, 193, 159, 247, 255, 158, 230, 244, 199, 241, 248, 190, 218, 216, 153, 201, 231, 174, 252, 139, 166, 187, 134, 217, 197, 190, 234, 238, 225, 164, 181, 220, 141, 140, 158, 189, 250, 213, 163, 160, 236, 243, 207, 155, 138, 235, 204, 246, 135, 203, 159, 233, 149, 179, 171, 232, 210, 152, 165, 143, 209, 200, 146, 145, 182, 241, 196, 130, 133, 229, 180, 170, 226, 169, 192, 214, 239, 167, 208, 251, 137, 205, 175, 162, 157, 222, 255, 148, 224, 151, 253, 228, 176, 218, 186, 230, 168, 136, 206, 242, 150, 178, 219, 131, 245, 223, 199, 147, 185, 188, 254, 237, 247, 211, 173, 244, 184, 154, 172, 212, 198, 221, 256, 248, 193, 249, 142, 132, 161, 202, 191, 240, 194, 177, 195, 215, 129, 227, 144, 183, 156, 180, 251, 130, 235, 203, 192, 206, 221, 146, 241, 129, 170, 157, 249, 139, 196, 205, 208, 240, 137, 231, 190, 215, 160, 193, 219, 254, 182, 144, 138, 204, 228, 214, 178, 252, 188, 253, 143, 159, 224, 246, 225, 171, 156, 238, 226, 166, 161, 173, 236, 232, 194, 195, 169, 218, 230, 181, 183, 184, 167, 211, 244, 245, 223, 165, 213, 152, 151, 158, 155, 199, 142, 233, 220, 248, 185, 209, 242, 191, 168, 256, 134, 174, 255, 179, 172, 150, 247, 153, 176, 243, 186, 201, 198, 217, 132, 189, 133, 234, 177, 237, 164, 197, 250, 135, 136, 131, 212, 200, 148, 229, 202, 141, 140, 154, 227, 145, 162, 163, 147, 239, 216, 222, 207, 187, 175, 210, 149, 211, 173, 189, 252, 130, 153, 187, 201, 133, 214, 246, 143, 181, 163, 256, 209, 160, 150, 203, 232, 236, 234, 154, 202, 242, 146, 238, 251, 156, 140, 188, 235, 186, 179, 194, 148, 149, 241, 208, 161, 240, 132, 184, 223, 168, 176, 198, 247, 229, 138, 162, 172, 239, 180, 158, 207, 190, 248, 253, 230, 220, 225, 250, 134, 167, 129, 233, 196, 171, 157, 200, 164, 137, 141, 136, 178, 147, 182, 249, 170, 145, 204, 243, 169, 131, 152, 139, 224, 183, 216, 219, 205, 210, 245, 215, 244, 185, 151, 135, 221, 166, 217, 213, 199, 222, 195, 191, 193, 254, 174, 144, 159, 218, 237, 255, 155, 227, 206, 177, 197, 192, 212, 226, 165, 142, 231, 175, 228, 246, 215, 213, 249, 187, 225, 178, 238, 171, 214, 254, 191, 177, 147, 160, 138, 169, 163, 165, 231, 192, 190, 221, 139, 202, 166, 164, 198, 239, 143, 204, 243, 144, 156, 182, 242, 184, 153, 193, 197, 176, 129, 207, 185, 170, 131, 167, 149, 145, 229, 172, 130, 168, 222, 142, 244, 158, 162, 146, 219, 133, 250, 141, 155, 205, 140, 188, 210, 247, 212, 216, 175, 151, 189, 148, 237, 203, 230, 226, 180, 157, 206, 255, 220, 234, 208, 200, 218, 183, 240, 132, 252, 136, 195, 174, 137, 211, 201, 223, 196, 228, 199, 248, 241, 186, 224, 181, 233, 159, 253, 154, 134, 217, 235, 245, 161, 227, 194, 179, 232, 251, 135, 209, 150, 173, 152, 236, 256, 253, 224, 146, 236, 243, 250, 202, 201, 147, 191, 198, 143, 189, 196, 151, 211, 131, 165, 195, 166, 208, 171, 140, 244, 214, 218, 219, 228, 235, 192, 141, 173, 234, 145, 167, 251, 232, 157, 256, 132, 180, 177, 176, 138, 178, 210, 255, 156, 170, 161, 163, 150, 130, 184, 159, 238, 194, 245, 252, 204, 139, 247, 205, 240, 179, 209, 133, 246, 215, 137, 222, 175, 136, 154, 160, 158, 223, 229, 197, 199, 212, 254, 213, 206, 242, 203, 168, 249, 183, 207, 226, 220, 152, 134, 162, 237, 200, 185, 181, 230, 216, 217, 142, 182, 190, 172, 187, 169, 231, 174, 225, 188, 227, 248, 193, 241, 155, 239, 135, 186, 129, 233, 148, 144, 149, 221, 153, 164, 196, 173, 172, 148, 146, 171, 170, 221, 188, 182, 145, 240, 213, 231, 211, 254, 252, 161, 204, 218, 190, 235, 154, 144, 130, 149, 197, 192, 175, 165, 131, 227, 208, 181, 158, 224, 229, 236, 184, 251, 233, 140, 156, 228, 176, 183, 246, 249, 220, 201, 244, 189, 151, 169, 164, 200, 137, 138, 152, 245, 226, 217, 250, 256, 255, 147, 247, 193, 139, 166, 242, 230, 129, 209, 223, 159, 136, 162, 142, 187, 178, 174, 241, 179, 163, 134, 155, 157, 133, 215, 132, 203, 177, 160, 210, 167, 143, 198, 150, 239, 212, 234, 219, 225, 206, 216, 214, 168, 194, 237, 135, 191, 180, 243, 205, 253, 202, 232, 185, 199, 153, 207, 248, 195, 186, 222, 141, 238, 148, 243, 166, 188, 226, 208, 149, 215, 145, 251, 239, 191, 209, 255, 144, 222, 231, 225, 156, 180, 133, 172, 147, 183, 200, 227, 179, 195, 249, 241, 196, 242, 137, 228, 173, 160, 230, 175, 151, 134, 253, 212, 235, 250, 211, 245, 163, 237, 247, 170, 138, 224, 139, 217, 182, 206, 152, 194, 205, 132, 186, 238, 142, 181, 207, 167, 252, 214, 158, 198, 236, 199, 223, 240, 234, 146, 155, 150, 135, 131, 202, 203, 246, 219, 171, 187, 164, 218, 143, 221, 229, 220, 174, 201, 185, 140, 232, 213, 165, 254, 154, 169, 178, 161, 157, 216, 153, 193, 168, 184, 248, 159, 129, 244, 210, 190, 192, 141, 256, 176, 204, 177, 130, 197, 189, 162, 136, 233, 201, 168, 135, 226, 152, 169, 167, 205, 203, 233, 243, 232, 253, 157, 249, 133, 165, 129, 220, 246, 209, 149, 197, 208, 160, 176, 224, 206, 146, 182, 187, 211, 130, 212, 250, 140, 227, 255, 213, 225, 173, 192, 134, 184, 180, 171, 238, 191, 237, 234, 170, 139, 136, 217, 190, 247, 189, 148, 202, 251, 219, 186, 166, 241, 252, 181, 138, 158, 210, 159, 172, 194, 179, 175, 193, 164, 132, 218, 150, 235, 188, 178, 229, 230, 154, 142, 155, 215, 240, 199, 153, 223, 248, 162, 244, 161, 239, 242, 200, 196, 245, 137, 198, 214, 228, 163, 131, 145, 231, 254, 185, 256, 177, 144, 183, 207, 216, 204, 174, 151, 147, 143, 222, 195, 141, 221, 156, 236, 148, 194, 175, 167, 249, 187, 182, 211, 136, 155, 227, 208, 151, 239, 188, 203, 199, 149, 137, 195, 130, 193, 207, 219, 132, 225, 145, 212, 215, 231, 135, 240, 184, 186, 174, 205, 173, 180, 178, 218, 222, 256, 251, 179, 150, 248, 170, 204, 247, 138, 164, 189, 209, 244, 156, 255, 191, 232, 198, 176, 190, 226, 246, 241, 142, 141, 242, 221, 133, 197, 243, 185, 172, 160, 152, 183, 213, 165, 217, 234, 140, 228, 220, 196, 250, 139, 214, 159, 131, 210, 238, 206, 237, 153, 216, 147, 171, 129, 223, 253, 229, 230, 202, 168, 162, 169, 254, 157, 200, 154, 192, 143, 181, 233, 235, 245, 201, 236, 224, 134, 144, 158, 163, 146, 161, 166, 252, 177, 306, 300, 383, 261, 369, 374, 357, 269, 291, 298, 345, 275, 352, 271, 339, 321, 356, 351, 372, 371, 297, 348, 286, 259, 355, 322, 317, 373, 333, 335, 367, 360, 330, 283, 289, 370, 258, 320, 279, 379, 350, 323, 316, 264, 346, 262, 266, 325, 268, 362, 361, 353, 276, 341, 324, 378, 338, 358, 314, 313, 364, 267, 274, 281, 305, 365, 359, 265, 307, 326, 308, 340, 336, 295, 312, 257, 382, 278, 270, 302, 287, 319, 299, 377, 375, 263, 354, 293, 310, 328, 376, 309, 381, 296, 349, 342, 327, 347, 343, 282, 273, 384, 280, 260, 329, 368, 344, 284, 301, 315, 380, 277, 366, 337, 303, 285, 311, 318, 272, 332, 288, 304, 331, 290, 294, 334, 292, 363, 363, 258, 260, 346, 336, 326, 358, 355, 370, 302, 350, 332, 316, 263, 369, 310, 338, 362, 273, 282, 329, 324, 378, 376, 359, 261, 264, 268, 375, 382, 348, 284, 356, 277, 279, 341, 309, 343, 364, 334, 361, 297, 360, 384, 377, 266, 311, 313, 349, 335, 373, 312, 293, 267, 367, 292, 314, 330, 296, 342, 323, 287, 371, 272, 304, 298, 327, 269, 317, 274, 278, 372, 303, 337, 383, 320, 351, 365, 321, 344, 276, 381, 290, 300, 374, 325, 366, 315, 301, 259, 347, 319, 322, 339, 262, 306, 368, 352, 280, 283, 270, 257, 318, 345, 357, 328, 275, 340, 281, 285, 271, 286, 288, 291, 308, 307, 295, 299, 379, 353, 331, 289, 294, 265, 380, 354, 333, 305, 325, 259, 305, 334, 316, 288, 378, 358, 361, 289, 326, 364, 376, 339, 275, 335, 263, 297, 338, 377, 352, 310, 349, 299, 381, 383, 363, 291, 308, 277, 351, 366, 374, 321, 328, 270, 373, 306, 274, 372, 350, 365, 281, 340, 337, 267, 298, 279, 345, 280, 370, 356, 292, 312, 342, 360, 329, 324, 285, 309, 344, 367, 347, 258, 341, 304, 303, 266, 353, 284, 276, 287, 290, 319, 322, 294, 295, 314, 336, 379, 348, 296, 359, 268, 260, 264, 271, 283, 282, 257, 318, 265, 269, 333, 362, 382, 323, 384, 320, 315, 286, 301, 311, 262, 369, 261, 302, 357, 293, 331, 354, 368, 375, 272, 278, 371, 327, 313, 330, 355, 317, 273, 307, 300, 380, 332, 343, 346, 300, 340, 277, 290, 283, 282, 293, 366, 319, 304, 279, 381, 305, 361, 333, 301, 365, 353, 317, 356, 370, 308, 295, 330, 372, 343, 302, 346, 378, 324, 323, 292, 266, 280, 268, 316, 259, 374, 339, 257, 261, 285, 313, 272, 258, 345, 298, 352, 311, 310, 263, 264, 267, 329, 289, 360, 364, 380, 320, 286, 287, 322, 351, 297, 315, 338, 375, 276, 344, 326, 309, 368, 303, 278, 337, 335, 294, 354, 384, 383, 271, 288, 260, 331, 269, 306, 367, 325, 299, 284, 312, 379, 270, 318, 363, 262, 342, 382, 291, 273, 341, 373, 332, 371, 281, 349, 296, 307, 274, 357, 336, 347, 355, 265, 377, 321, 350, 348, 358, 275, 314, 334, 376, 359, 369, 327, 328, 362, 275, 259, 380, 381, 271, 320, 345, 293, 354, 334, 317, 288, 353, 372, 349, 313, 378, 287, 331, 379, 289, 286, 377, 263, 297, 336, 282, 341, 357, 323, 343, 356, 284, 338, 269, 328, 365, 376, 322, 290, 344, 374, 325, 382, 281, 268, 296, 309, 316, 300, 347, 266, 311, 295, 298, 267, 337, 291, 276, 257, 292, 333, 368, 261, 373, 273, 364, 358, 375, 274, 324, 312, 278, 335, 339, 283, 329, 384, 321, 348, 315, 260, 294, 359, 304, 264, 326, 305, 352, 330, 360, 361, 280, 270, 362, 342, 258, 371, 327, 332, 340, 355, 367, 308, 265, 351, 303, 366, 306, 363, 279, 272, 369, 262, 346, 350, 318, 307, 383, 310, 319, 277, 302, 301, 370, 285, 299, 314, 280, 269, 366, 362, 384, 360, 262, 321, 383, 314, 361, 265, 381, 372, 325, 305, 294, 344, 259, 297, 371, 322, 309, 313, 292, 375, 379, 316, 382, 307, 304, 282, 281, 356, 345, 319, 355, 315, 323, 283, 330, 274, 263, 342, 332, 284, 302, 335, 324, 272, 278, 257, 303, 311, 276, 339, 260, 271, 376, 377, 261, 312, 359, 285, 357, 353, 334, 258, 299, 365, 340, 298, 336, 286, 328, 378, 358, 291, 341, 296, 380, 266, 289, 351, 267, 320, 350, 346, 273, 306, 295, 310, 329, 275, 367, 337, 277, 326, 374, 348, 343, 308, 290, 327, 288, 293, 368, 364, 349, 373, 279, 317, 333, 369, 338, 301, 347, 354, 331, 268, 370, 264, 318, 270, 300, 352, 287, 363, 341, 348, 376, 346, 331, 305, 340, 302, 308, 303, 315, 321, 375, 278, 298, 333, 319, 287, 334, 371, 260, 310, 263, 330, 326, 359, 282, 335, 313, 369, 342, 300, 299, 286, 379, 291, 276, 301, 355, 349, 347, 257, 304, 373, 294, 336, 290, 270, 306, 363, 383, 370, 262, 297, 284, 293, 384, 329, 358, 367, 277, 374, 267, 356, 353, 352, 272, 311, 323, 324, 368, 344, 362, 325, 380, 261, 328, 288, 317, 345, 279, 337, 296, 372, 271, 266, 382, 274, 273, 275, 264, 312, 343, 366, 361, 351, 316, 350, 381, 322, 292, 360, 285, 283, 314, 339, 338, 268, 269, 289, 354, 309, 365, 377, 307, 258, 332, 357, 295, 320, 281, 378, 318, 327, 280, 265, 259, 364, 346, 315, 371, 265, 305, 322, 321, 354, 273, 297, 257, 378, 345, 343, 275, 299, 278, 314, 353, 327, 335, 329, 338, 362, 326, 285, 323, 279, 369, 267, 298, 324, 309, 351, 319, 291, 336, 276, 333, 328, 292, 286, 280, 277, 288, 379, 259, 380, 260, 381, 296, 318, 364, 368, 287, 334, 375, 382, 270, 284, 342, 263, 266, 311, 360, 384, 258, 320, 363, 370, 359, 366, 341, 272, 316, 281, 356, 374, 282, 367, 302, 301, 295, 365, 339, 308, 337, 376, 283, 293, 330, 352, 361, 304, 271, 268, 300, 355, 290, 349, 331, 261, 348, 372, 313, 358, 274, 344, 373, 357, 294, 289, 317, 303, 310, 383, 325, 377, 312, 306, 347, 340, 307, 264, 269, 350, 332, 262, 257, 328, 348, 336, 323, 303, 339, 374, 351, 379, 272, 327, 274, 333, 352, 278, 359, 314, 370, 300, 267, 290, 270, 380, 261, 275, 260, 289, 259, 345, 330, 291, 284, 271, 310, 258, 340, 324, 301, 357, 365, 295, 329, 322, 307, 364, 384, 342, 283, 276, 338, 305, 296, 335, 282, 349, 266, 263, 298, 268, 371, 366, 313, 281, 319, 318, 356, 317, 382, 373, 381, 308, 299, 367, 286, 277, 331, 372, 315, 287, 269, 377, 341, 311, 346, 360, 306, 353, 285, 383, 355, 280, 321, 344, 376, 332, 343, 350, 375, 279, 316, 302, 354, 368, 325, 361, 304, 334, 312, 369, 347, 363, 273, 297, 358, 288, 264, 320, 378, 294, 337, 309, 262, 326, 362, 293, 265, 292, 261, 302, 357, 382, 328, 356, 346, 338, 340, 378, 323, 310, 342, 314, 279, 313, 326, 308, 309, 352, 322, 320, 269, 293, 315, 334, 345, 384, 376, 271, 379, 281, 381, 329, 289, 264, 301, 362, 266, 305, 278, 280, 262, 344, 268, 333, 283, 339, 321, 298, 368, 365, 377, 257, 336, 258, 273, 274, 306, 288, 304, 292, 307, 311, 335, 359, 296, 369, 349, 366, 284, 263, 332, 343, 276, 272, 330, 361, 363, 270, 347, 372, 316, 265, 290, 348, 260, 312, 324, 380, 286, 277, 337, 275, 383, 291, 331, 364, 367, 319, 353, 373, 371, 287, 325, 358, 285, 351, 318, 327, 294, 267, 300, 374, 317, 295, 354, 355, 259, 370, 360, 303, 341, 299, 375, 297, 282, 350, 326, 332, 286, 360, 328, 335, 312, 353, 267, 337, 371, 317, 344, 298, 340, 294, 363, 362, 383, 316, 320, 339, 368, 263, 282, 380, 381, 318, 366, 377, 348, 306, 309, 315, 350, 322, 382, 303, 301, 374, 330, 357, 272, 319, 268, 346, 352, 376, 345, 351, 370, 323, 321, 365, 367, 285, 260, 265, 277, 280, 341, 262, 324, 349, 271, 289, 295, 281, 300, 364, 297, 359, 333, 334, 355, 358, 375, 276, 361, 284, 261, 273, 275, 274, 378, 293, 379, 343, 372, 305, 290, 283, 331, 291, 299, 259, 336, 384, 369, 257, 342, 304, 270, 329, 311, 327, 373, 278, 313, 266, 307, 354, 269, 347, 296, 338, 279, 314, 258, 288, 292, 325, 287, 302, 356, 310, 264, 308, 294, 308, 296, 360, 304, 275, 341, 302, 305, 266, 369, 314, 269, 375, 291, 339, 349, 280, 381, 350, 327, 370, 329, 259, 316, 365, 357, 333, 257, 354, 313, 348, 359, 364, 261, 362, 332, 268, 287, 276, 331, 326, 267, 382, 286, 297, 295, 262, 323, 288, 309, 380, 378, 274, 334, 303, 355, 321, 289, 318, 366, 356, 279, 278, 307, 368, 352, 345, 277, 270, 371, 310, 317, 315, 319, 290, 283, 374, 376, 337, 306, 336, 351, 373, 271, 324, 311, 340, 330, 282, 273, 258, 264, 298, 361, 300, 342, 383, 346, 325, 284, 358, 372, 367, 335, 347, 377, 312, 292, 344, 293, 343, 263, 384, 281, 338, 301, 353, 260, 265, 379, 272, 299, 322, 285, 328, 363, 320, 512, 488, 426, 457, 396, 504, 503, 496, 413, 458, 387, 435, 420, 401, 403, 432, 394, 459, 443, 483, 484, 467, 388, 391, 422, 449, 473, 430, 497, 486, 511, 450, 424, 395, 463, 493, 433, 392, 415, 400, 417, 437, 448, 439, 502, 447, 508, 466, 510, 409, 479, 419, 477, 482, 390, 411, 407, 476, 500, 427, 494, 478, 386, 460, 429, 505, 385, 442, 434, 441, 491, 423, 495, 444, 389, 402, 487, 445, 399, 425, 462, 405, 489, 410, 506, 416, 490, 404, 418, 393, 455, 481, 454, 436, 469, 472, 480, 465, 509, 406, 485, 408, 398, 461, 438, 440, 474, 492, 428, 475, 431, 499, 498, 412, 464, 456, 451, 501, 414, 421, 397, 507, 470, 446, 468, 453, 471, 452, 404, 462, 511, 405, 418, 435, 392, 474, 438, 510, 437, 461, 400, 432, 401, 485, 499, 427, 475, 421, 453, 495, 459, 426, 422, 447, 442, 429, 456, 481, 443, 444, 397, 386, 420, 424, 468, 508, 505, 448, 415, 487, 486, 480, 482, 395, 473, 449, 411, 394, 494, 406, 403, 470, 500, 451, 476, 399, 507, 454, 472, 388, 491, 483, 396, 452, 425, 455, 436, 439, 409, 416, 385, 502, 469, 504, 402, 501, 490, 458, 445, 417, 484, 414, 391, 488, 471, 477, 466, 440, 434, 493, 423, 492, 489, 497, 450, 464, 506, 446, 390, 498, 463, 428, 512, 413, 467, 460, 433, 398, 387, 441, 410, 478, 430, 496, 479, 457, 407, 509, 419, 503, 412, 431, 393, 465, 408, 389, 430, 460, 466, 412, 468, 483, 443, 497, 486, 431, 452, 435, 491, 487, 445, 482, 509, 492, 484, 403, 436, 473, 453, 392, 420, 496, 389, 500, 397, 479, 456, 417, 469, 406, 480, 475, 393, 394, 411, 390, 447, 494, 476, 462, 501, 400, 504, 402, 461, 410, 467, 387, 490, 499, 505, 512, 457, 427, 401, 458, 471, 489, 398, 478, 459, 413, 506, 472, 449, 508, 477, 451, 498, 464, 465, 481, 433, 421, 470, 502, 441, 404, 450, 429, 439, 495, 440, 437, 432, 408, 424, 399, 444, 423, 428, 442, 405, 455, 485, 422, 493, 396, 438, 386, 418, 385, 416, 409, 426, 415, 407, 474, 503, 507, 419, 454, 434, 463, 425, 395, 448, 414, 391, 510, 446, 511, 488, 388, 388, 498, 442, 389, 475, 398, 397, 462, 416, 424, 439, 441, 436, 463, 400, 402, 393, 423, 481, 412, 472, 470, 488, 491, 420, 421, 449, 425, 493, 486, 456, 417, 468, 411, 446, 435, 451, 511, 478, 508, 413, 450, 392, 479, 461, 496, 509, 502, 443, 385, 452, 404, 406, 426, 394, 476, 477, 453, 429, 494, 455, 506, 500, 433, 454, 430, 466, 484, 474, 395, 487, 387, 444, 471, 482, 434, 473, 499, 414, 396, 408, 431, 418, 501, 391, 459, 399, 495, 401, 448, 512, 432, 390, 405, 437, 428, 409, 504, 469, 507, 445, 505, 386, 464, 485, 410, 503, 480, 489, 457, 483, 427, 407, 422, 458, 492, 419, 440, 497, 465, 510, 403, 490, 467, 415, 447, 438, 460, 475, 402, 497, 395, 439, 390, 481, 472, 408, 469, 456, 489, 457, 505, 430, 424, 447, 416, 508, 441, 415, 434, 473, 429, 405, 491, 459, 425, 410, 409, 451, 435, 479, 394, 488, 468, 399, 493, 407, 462, 455, 403, 387, 484, 483, 431, 391, 460, 404, 477, 453, 414, 506, 482, 500, 393, 406, 478, 471, 485, 449, 433, 463, 490, 467, 452, 420, 474, 426, 458, 501, 487, 504, 510, 486, 385, 386, 398, 417, 389, 432, 423, 454, 507, 419, 421, 494, 422, 400, 450, 492, 427, 470, 465, 438, 444, 511, 396, 418, 437, 461, 499, 443, 436, 480, 442, 495, 440, 448, 446, 411, 397, 392, 502, 413, 496, 476, 498, 509, 401, 428, 512, 466, 503, 445, 388, 464, 412, 477, 432, 414, 415, 489, 389, 474, 464, 484, 507, 434, 417, 498, 492, 445, 398, 458, 407, 455, 427, 424, 479, 452, 490, 409, 471, 390, 491, 472, 505, 399, 502, 450, 463, 425, 396, 495, 406, 430, 466, 512, 453, 510, 411, 435, 475, 393, 485, 438, 493, 433, 426, 509, 478, 437, 401, 481, 467, 395, 403, 508, 449, 385, 392, 405, 500, 446, 457, 448, 394, 501, 421, 419, 460, 447, 429, 470, 504, 465, 420, 410, 440, 386, 497, 462, 408, 454, 391, 496, 441, 456, 459, 473, 431, 397, 444, 388, 482, 387, 506, 483, 503, 451, 412, 416, 487, 511, 428, 486, 402, 461, 439, 480, 418, 400, 442, 468, 404, 443, 469, 494, 423, 436, 499, 476, 413, 488, 422, 482, 404, 499, 474, 470, 510, 387, 440, 445, 458, 392, 471, 389, 452, 477, 444, 466, 408, 468, 429, 396, 428, 418, 413, 467, 450, 438, 410, 492, 495, 420, 465, 483, 505, 500, 432, 402, 485, 397, 401, 427, 491, 457, 460, 502, 454, 386, 488, 463, 442, 419, 415, 443, 411, 388, 403, 416, 406, 461, 490, 489, 487, 476, 494, 484, 407, 511, 394, 469, 409, 414, 426, 405, 449, 504, 433, 459, 462, 478, 435, 493, 501, 481, 421, 486, 399, 448, 464, 475, 430, 479, 498, 390, 398, 496, 439, 437, 506, 480, 509, 412, 395, 431, 447, 453, 508, 446, 434, 512, 417, 472, 507, 473, 424, 451, 385, 497, 436, 425, 503, 441, 423, 393, 456, 400, 391, 455, 422, 454, 475, 404, 419, 488, 408, 494, 500, 387, 434, 412, 452, 401, 391, 503, 508, 432, 468, 396, 417, 392, 441, 411, 511, 439, 504, 476, 458, 453, 473, 385, 484, 501, 386, 489, 482, 512, 422, 498, 466, 403, 424, 481, 487, 402, 442, 420, 499, 429, 492, 423, 493, 415, 480, 389, 467, 456, 433, 418, 485, 410, 447, 388, 414, 445, 490, 409, 477, 472, 390, 446, 507, 405, 479, 465, 460, 448, 457, 438, 397, 427, 455, 464, 502, 509, 399, 469, 461, 443, 431, 444, 470, 505, 398, 486, 459, 497, 400, 428, 395, 449, 483, 425, 421, 430, 440, 478, 450, 435, 496, 506, 463, 407, 462, 436, 510, 426, 474, 451, 416, 471, 394, 413, 393, 495, 491, 406, 437, 467, 425, 466, 387, 474, 432, 391, 436, 473, 505, 512, 511, 503, 500, 491, 452, 440, 404, 464, 499, 418, 495, 398, 429, 417, 410, 460, 424, 507, 449, 478, 386, 457, 454, 492, 465, 501, 504, 409, 412, 486, 395, 431, 422, 477, 402, 487, 483, 450, 414, 399, 459, 388, 396, 405, 441, 468, 498, 448, 394, 423, 461, 485, 420, 447, 493, 455, 451, 426, 439, 488, 427, 442, 428, 470, 453, 463, 445, 434, 443, 397, 438, 508, 482, 476, 480, 479, 497, 481, 510, 403, 433, 446, 416, 393, 509, 475, 408, 407, 471, 430, 400, 437, 406, 490, 506, 385, 462, 469, 415, 496, 421, 390, 401, 489, 472, 484, 458, 494, 392, 435, 413, 444, 502, 419, 456, 389, 411, 447, 472, 507, 426, 392, 488, 434, 461, 411, 393, 404, 495, 424, 439, 471, 493, 483, 435, 412, 469, 385, 421, 468, 462, 429, 511, 397, 480, 405, 442, 497, 433, 391, 458, 419, 399, 476, 448, 410, 395, 413, 401, 428, 506, 454, 415, 443, 474, 457, 464, 500, 438, 481, 406, 389, 432, 492, 437, 510, 463, 430, 504, 502, 498, 416, 422, 485, 477, 450, 508, 446, 512, 449, 452, 484, 440, 444, 400, 482, 459, 470, 490, 414, 499, 503, 423, 479, 431, 418, 407, 473, 455, 496, 417, 408, 441, 445, 486, 398, 388, 465, 386, 402, 475, 453, 456, 491, 489, 451, 420, 396, 501, 509, 505, 467, 394, 390, 409, 387, 478, 403, 466, 487, 460, 436, 494, 425, 427, 447, 493, 422, 492, 460, 388, 418, 461, 449, 412, 415, 490, 464, 405, 482, 439, 446, 480, 438, 386, 395, 462, 444, 510, 399, 435, 458, 400, 505, 470, 506, 469, 385, 427, 401, 467, 390, 475, 448, 423, 453, 479, 491, 426, 425, 431, 474, 497, 484, 501, 499, 409, 494, 511, 488, 500, 393, 472, 429, 471, 502, 434, 487, 408, 454, 465, 481, 424, 419, 508, 463, 398, 466, 410, 489, 498, 430, 403, 486, 428, 417, 413, 394, 459, 440, 483, 451, 436, 392, 414, 457, 441, 504, 389, 442, 455, 402, 456, 496, 411, 406, 391, 473, 387, 421, 512, 485, 416, 477, 404, 468, 495, 503, 432, 450, 476, 478, 445, 433, 420, 396, 443, 407, 437, 509, 452, 507, 397, 503, 408, 444, 425, 472, 388, 396, 431, 400, 409, 435, 389, 482, 479, 410, 395, 442, 452, 411, 495, 471, 385, 500, 450, 393, 403, 512, 494, 476, 386, 430, 453, 402, 467, 432, 448, 469, 397, 391, 427, 460, 464, 418, 502, 489, 446, 510, 470, 417, 486, 449, 421, 505, 406, 458, 508, 480, 475, 454, 468, 501, 436, 415, 445, 424, 447, 477, 462, 439, 496, 426, 440, 459, 394, 416, 405, 401, 497, 387, 490, 456, 404, 455, 473, 398, 509, 481, 451, 493, 422, 488, 433, 504, 419, 506, 457, 465, 511, 484, 429, 392, 390, 487, 443, 438, 461, 498, 441, 474, 399, 434, 407, 420, 437, 423, 413, 478, 485, 412, 499, 483, 463, 507, 466, 414, 491, 492, 428}; const float HRAa_1536_512_input[] = { 13.386899925109432, -13.874621377458897, -16.780017007177882, -6.290312059289052, -12.12827186210024, -6.7215865007863869, -12.928496427823001, -9.5320512690650236, -7.743243384270599, 13.537963482938862, -2.7747305809320273, -12.582411711157423, -5.3802664401721669, -12.212445933608072, -7.6896834132998464, -13.886251758086326, 10.057357007368099, -0.54545642222569801, 8.205317948012846, 9.9587921963912223, 1.787839710999801, -1.8877909028033726, -5.4872655283312968, -8.062104638589874, 12.160461660371981, -15.667876557032479, 8.8975273390429983, -3.3765083480826616, 9.3816292204533749, -11.374049439344271, -10.36262436541605, 6.7202129273737032, 8.6272248519835983, 6.8202854789610363, -9.9864325836014913, -1.3405851953534818, -11.142776994932193, -1.9184371643698088, 9.7100901224681202, 8.0943424444060117, 10.207687208250547, -12.139932744539616, -8.6843097992891565, 11.103660696595387, 8.3959816215268113, -5.2149232726762502, -10.099642434219659, 8.4287998205932535, -8.1131273436353393, 11.077737095117719, 11.873290693127736, -8.3323685207242288, 8.306765838979139, -7.7344852728193692, -12.595270449431288, -11.151338526616161, 8.8518394477850517, -7.3707217826997509, -15.236586757477074, -16.861400843579382, -5.2451688100646434, -7.9139079697369601, 4.624265800939507, -3.8868901758034666, 5.149322447921163, -4.8408994988342702, -16.025567965427282, 8.9397007078167832, 11.615085927048078, 8.7522408607897013, 8.9362025413954598, -12.419911954640257, 1.3360373310499056, 5.8047604915295699, -11.499552394388353, -9.0848912468207565, -0.33403972984943742, 4.4543924597778224, 7.5516321347188526, -14.133335935201398, 5.0051740595271017, 16.889255448806885, 4.2732555534579513, 10.895662242985567, 12.023371162173557, -16.54177280794126, 16.47187146826094, -8.1320457770163532, 14.492657760424361, 5.1425318773536102, -12.674348565024257, -12.591971003025808, -11.419434896299183, -7.134364911729187, -14.456345736529295, 6.9801481308852464, 3.5178871967459839, -5.4222404575852448, 17.787168094008695, -6.2963736353761854, 6.0773417416842221, 12.129562430166006, -12.394762329795224, 10.349629378600094, 6.4331304797784803, 4.0178325470947502, -1.138956390083639, 8.1137355075137663, 13.895337237225856, 5.2871675790043309, -0.71033385965710749, -8.0604882356929117, 10.198012315557385, 11.576288688276565, 10.989989721011501, -1.8717320818182488, 10.123904063310743, 10.784665440661042, -4.3035609830061903, 9.6837773036405093, -14.835135985873862, -5.1478442440128811, -6.6505387088228947, 7.6760013089942545, 6.4660475793279915, -6.5596877295244536, -9.3116314056097949, 7.6328445056019074, 8.8548767929342613, 7.5197255274599808, -7.9120195042812034, -7.1323001875535148, 10.791556287617038, 10.084448901305496, -10.743240913473755, 12.353642192693162, -4.527053580524516, 7.3242837488860237, 11.840083930085372, -10.619537990011144, -7.6706979631015884, -10.372557115087139, -8.8632681653872467, -4.4224067975512833, 10.305320214477293, -13.718057823394824, 4.1964852185559138, -1.4362461161357318, -9.2144112590704665, 8.3877875072624768, -10.28487762491257, -9.1114457918206746, 5.9370140811870229, 14.470896650278901, 5.1658695784729174, -9.341067315095037, 13.898060872612461, -3.9942168173342556, -8.3744670385083744, 7.3185644061709123, -10.677918127800307, 8.7839855993602747, 5.9967809699512715, 7.3957884730189676, -3.2504312305872545, -9.6416522009408538, 5.8869284856565551, 6.8296803475321157, -8.8993273140276621, 6.4153892959374943, 10.71036283303145, 5.7650612619594863, 10.78849375974715, -1.4177006030538843, 1.5219866880330013, 7.6721747796307929, -5.4730436651294374, -9.5147711755665831, -15.201928353576326, 9.1070883523744062, -1.429613590187548, 10.993649358659018, 3.3503803060819508, -17.486331072327484, -10.477380738424001, -4.7161288387109055, 7.0041944951217889, -8.5563404605446678, -13.558221470146432, 1.9509536932085323, -2.1008828270020299, -6.0209650694579304, 7.2795925605768037, 6.4403696840313165, 9.6872136018234638, -10.083520911839761, 2.2569120937126366, -6.2731874949190027, -16.003233247997624, 2.6470504909477603, 1.9679136003343678, 1.084323481971722, -5.5869253766683347, 10.471030535111106, -10.141071326109691, 3.0103339932739437, -1.7669043857695677, -7.6573452029265354, -4.3258934638902158, -10.968459179578497, 15.741636049842855, -10.9522061668373, -9.4904695438104927, 10.385857264222551, 10.297120789438011, 6.5744952638429925, 5.8740095877629486, 10.799510515320124, -6.3545024936903296, -0.79879489541004711, -7.9890116216388165, -7.0895275092337746, -1.1693711835427318, -11.031571816277879, -2.7661989355564196, -12.648614251118801, 3.6890373669346022, -9.6492587977566604, 16.37751360979837, -11.834071942761344, -8.1856488251627724, -2.6452776364462234, -7.8494578072748498, -4.3583881632417762, 9.0567313787087418, -11.915674625575223, 6.3560722843437931, -12.459623655201984, 10.634887971076129, -16.922079821941349, 2.6306182284481716, -4.8306213551740491, -6.8938315321790871, -11.732112230175732, -14.980055011514212, 14.341141814607978, 9.3877580146603421, 10.212542439703331, 10.226413776118815, 1.4940604264129116, 7.7454328449595184, -17.063990479025335, 19.866966739493524, -10.140740571896508, -12.522044834618598, 7.0883420344447883, 8.639822911246295, 8.696282010555846, -4.6180581749529885, 15.128219796014116, 9.944475468031726, 3.9061050633893308, -0.44811804820690332, -9.8453458886200469, 11.310920421915538, -1.8877371033018449, -13.955810775304432, -9.3663850942658744, -13.7152384276622, 8.1778408387550972, -11.099226967110654, -0.40938224282111474, 7.407933602924528, 9.5946649739529732, 8.9692970855929381, -7.4260161983282993, -6.7127946668575396, -3.32421449686648, 11.949556138901517, 6.0724437348944251, -8.7144215382129016, -6.8610474000112394, 7.2567571883933359, -6.3499249476454329, 9.3590736715335225, -6.5503328955021827, -6.9702845680797187, -10.317890011660792, -3.6167068395322954, -4.8790397611256688, 16.56935536921031, 15.259301626496455, 4.095983810772946, -8.287550939084964, -9.9120810548007725, 9.9159918358704644, 7.7341221557626856, -6.968193796769385, 11.636066712371051, -11.761055820947789, 8.1630237309173719, 6.4488185954770767, 7.3664462176342393, 9.1231645572893783, 1.6141196499486792, -9.6504558418612536, -5.3306358019773254, -6.2121734777196425, 6.0886130638484497, -7.8160047985525329, -2.3620627464284909, -5.7089981216523924, 11.764939486817402, 6.9146263458573811, 5.4499539427791159, 9.0526658073376804, -6.4040202312779462, 1.9520703353601458, 8.8078015730086339, -2.6857890845936474, -7.4845378984175008, -10.998145344747881, 3.9650986691130394, 7.3045582654386916, 7.256277698095202, 8.8550148662006052, 4.4431559525918427, 13.61919949600221, -8.6465615710269912, 5.8013976504697808, 3.5026821856868993, -12.178296532701346, 6.9207418083416181, -4.1355644302631589, 5.5861383859524665, -14.116022346856981, 12.594015809448324, -13.393001860550452, 9.5607723957857971, -13.112365438653656, -1.6596837312771877, 8.7341819566011267, 7.4760433147262795, -8.1942077127202122, 8.3436147974653725, 9.8720061590436838, 8.0887096325543109, -17.197684682990683, -8.0196097887787907, -7.4638388448193353, 14.00243903909713, -6.2485104839226615, 11.356138541390258, 3.7545892163531427, 10.415941927557306, 12.692270186087136, 3.839016769003043, -15.395769427822605, 7.7315150527655616, 4.8016964440291581, 8.0132387260974589, -6.4415560341290687, 10.805285608742018, -5.5301352184454284, -13.224718660056825, 0.35302225692097389, 4.4748784871174934, 6.9443759354462857, 10.685073446441708, 3.1575051344879466, -13.665701610090288, -3.8015869558522541, -2.3038729510788531, -8.4060938979535429, 10.397495774699411, 0.63231003672718755, 16.426675593327936, 4.2757077959938554, -8.2297561064825651, -12.203313074476801, 3.5349123059031688, -4.6316910854005595, 12.149986519547449, 10.142561680716403, -12.910916534376218, -11.816001928564599, 12.752636976550916, 1.347868026050816, 4.4506235037217419, 12.700335499696024, -13.848139080070318, -11.355529001962223, -5.7806475282042058, 0.47750289555723269, 5.6986275269369804, -4.4271319538016316, 10.462558932858533, -5.0368487144176184, 12.348453770774848, -10.530489062751826, 11.889507884552419, 6.7066063456855165, 8.7257914990822734, -11.740906669754361, -13.198118848397669, 11.966809170645028, 7.5576572433307501, -12.95621542476918, 11.112615788951556, 5.4150193506065785, -2.4444668502999507, 0.1275326588141078, -9.3810637216464059, 15.15093868960655, 3.1627056768504778, 7.7005484449478576, -10.234073188504981, 7.1267840100223658, -15.91683465924223, -13.410169751101346, 0.13625266261370772, -7.5750837050990372, 14.960178685292997, -15.435015552646451, -3.7057206375618463, -8.8999095085111666, -2.5149139619650525, -8.3327199889755423, 18.941920607436636, 13.420695019369392, 4.9195046375982541, 11.016163952781909, 8.6733276067619194, 12.478765201964949, 2.3345020319649099, 3.1973706815381244, -10.28793250894482, 3.1017921163255822, 3.5809364261341075, -11.688627720005062, -7.4899768065790839, 6.3649946224780551, 9.1684116530245543, -1.0144208985424472, -1.7386901599600024, 10.812333055795435, 4.961817477568788, 3.1009645563657138, 6.6921808083279686, 7.3774978735208627, 1.7132043124694183, -10.362105107573687, -12.173493799440179, -12.57733865447233, 10.40684423079197, -7.1829220405500269, -5.8532485804854053, -3.3187986578272421, 0.91880136486449959, -13.398651042134368, -6.3155049249186339, -17.255588061305122, 2.9621721519641029, 10.684388373450155, 9.920602983772957, -4.9406423078278641, 7.1264826077512149, 11.66719925284613, 6.721261092111213, -12.730916302360351, 10.795526753678212, -20.573136588685408, -5.6958101011529605, 6.9909504456743186, 4.4715875360382364, 12.499170749494757, -7.20935215447878, 9.3520391463706591, -11.260904720544124, 3.9094591998581429, 10.542421309584265, 7.1626495100659087, -6.2979737327672325, -7.4797184772604108, -10.033365613109066, 13.639664860076691, 14.61768258823167, -9.349535102620095, -12.423145667667011, 4.9898271501817089, 3.0038807688543274, -12.714132646116139, -11.715303881774823, 4.1065631173690322, 5.8299911288456308, 16.075633106498326, -5.7905188465892081, -10.727791126474877, -6.8206190409645826, -8.9175871578683328, -4.6200146277545517, 11.079880503025457, 2.510233715234405, -10.392607673591197, 5.8668194165681014, -7.0114162376738856, -10.279106538719603, -15.528793255069509, -4.6085364768240247, 6.8605550379128051, -2.5800329268976743, -7.3532639311399244, 20.672825917556292, -10.439895472960126, -14.128598455261217, 11.328263527383783, -7.463336179396399, 16.130593577787007, 7.8647052993942861, -7.7266572437869527, -7.6739353389438616, -7.8625194662984832, -5.5481184597671502, 16.352149156645865, 1.5600738712852105, 7.0446715470996484, 3.4977667900587481, 9.1242274771866878, -14.864890247335271, 2.228477042485411, -11.636329210405362, -4.6796208227724287, -2.2933856931597671, -9.3965545946571059, 5.2166591092510801, -0.0061470351703269257, 11.008731035650001, -4.0684606352010775, 7.3388311965238815, 9.6110268205483553, -14.385784807623017, -12.022179732503762, 2.2591715836384325, -12.450692202777248, -6.4694864795479514, 2.4970669565811572, -14.438327468512828, -7.1490383062998024, 3.1980227285689566, -4.3545915469413083, 11.850371754353054, -9.6358004132594868, -5.5732823609496984, -11.570303232115274, -7.8799771256040403, 11.364050055127539, 2.8166429122264298, -7.7893594643305502, -2.3842480986276682, -7.3290075822986527, -5.5039959632731286, -2.9510245234322539, -6.0257131849615027, -6.3046667299320047, 9.6500486152400153, -13.674873390020878, 10.734758291088976, -12.103386933808761, 12.184692560628328, 10.655296522071822, 11.91880094629235, -7.4922050113367078, -5.1457408035516625, 9.4250278995611794, -8.1618059524881748, 9.3940146817732177, -11.555304660224397, -9.043867998939163, -8.451710191375323, -0.697115284938572, 2.3373700418213623, 13.692672613492128, -15.665014564786702, -3.2403867344672141, -8.7601644681864741, 13.019487514767658, -12.791506892288574, -13.625856289969327, -6.2209979515728566, 8.6521749698161123, 7.4180160442834548, 1.1105314934818471, 4.4766310382738519, 11.438161271145697, 13.894059012603345, 4.0767572471493434, 3.9865238865858319, 3.7602317997987846, 0.76151966999394338, -5.1810102801857445, 14.799158905790362, 2.4576241055193684, -13.01983807978049, 7.7789583949391536, -7.7989618839443171, 2.5737045662046305, -13.443327011814354, -10.710116060594849, -10.563787698873153, -9.0325237664249336, -8.9417451798718943, -19.333428943078317, 14.683782394656195, -8.0733543435216593, 10.754644346477024, 7.7063042336814984, 7.1186808374245931, -3.9617268249118553, -5.7198371921519167, 5.593318866773699, -7.2969156100159678, -14.048944381672497, -10.062946047657139, -1.0260982646529979, -14.827752195442853, -9.2383256700032188, 15.633286094075363, -16.297177435658352, -0.64090358918251356, 16.682478300485606, -11.380226570148189, -7.5596774165642087, -7.2154274871131481, -7.1481514505268233, 8.5862772252140598, -11.750005376776613, 12.960896281443684, 13.382912666258086, -1.5320372082264357, -11.480485768573448, 4.604919918163711, -10.250884016863665, 16.502161055342512, 10.03826905000834, -4.2314133540673815, 6.914838473777273, 3.033372723351186, 15.789653601786865, 7.7740184970045538, -13.16261088269184, 1.467484633609379, 12.139927777657451, 7.3565534414936771, -16.102142555887689, -6.7186090884258327, -5.0455349707069272, 11.98730746398549, 10.256496746996197, -5.7536379862838647, -5.4682997322585303, -8.6174488346296947, 4.9421612015014782, -3.6472328067701021, -10.170655866613714, -8.731587322200923, -12.200853136951736, -6.4324926421828801, 12.383600590018332, 4.7177953853422574, -5.9611450690323569, -4.8404699641555782, 3.4274708633282907, -15.369056504155758, -13.448819507894497, -6.9107211824606498, 8.0113449069161451, -3.8973949861351929, 13.021049717764123, -6.3796819058710641, 7.5454744658108392, -24.991261131460227, -11.306957669810698, 9.9244994493158156, -15.552007939376315, -11.499894592347063, 6.7321370932847282, -5.7172766786206735, 13.927111999325204, 14.791062203179369, -10.463383452760558, 10.636801153156807, -4.894683643621029, 8.4748218331335483, 6.714189223798841, 9.4375736465144318, 12.487559872903708, -6.0987096595648733, 8.3058734633496965, 4.1758106815531235, -0.92420186594595199, -9.7108492563481441, -11.032513923038188, 6.723487961222486, 6.6405389489355722, 11.70091305718748, 4.2393067109120421, 8.1348475294426805, 13.323378479075469, 8.7202362776180511, 4.4526705951643395, -9.5406850815782391, 10.724131989567914, 3.8203055939862751, 5.655044851128495, -16.307030842468919, -12.651665707248567, 10.335451776575519, -11.543998335115962, -4.5894875308948739, -9.8049275923942005, -3.1277981660548742, 10.521084419510812, 9.1581333155226226, 13.912555752813075, 7.6645359315240986, 7.4281718483850714, -12.884604059581001, -10.227449781754478, 6.6088359371651677, -8.390397410570122, 1.7389657861698138, -9.733674950830439, 5.6026920997089826, 8.6808454450852413, -6.0587915108669694, 10.402906304509559, 3.573187038527244, 10.559282882232578, -10.863413477205437, -4.7386233555213177, 9.4904722391068699, 10.157539704403206, 2.8851592670612307, -8.3696995987232565, 11.297835199084789, -1.8627636495095405, -7.1252169596821719, 5.4278621558211784, -10.438886769424213, 11.047071633619222, -6.5900981825814391, -10.337633941764059, 2.5282376470547079, -9.6591177209883146, 12.449719103332304, 1.55178436617159, 8.8699335446384353, 11.259696425771455, 6.7783986934617984, -3.1793426009237473, -13.884272717050646, 6.6177054099083383, 4.9754611216591851, -8.1416721021369884, 10.636889546477317, 9.381740326488913, -13.207174194145681, 5.641084536081391, 10.931097561358635, 2.6818980710602407, 6.6334459052688892, 9.3510527294752901, -13.223477811560901, -16.02051667550996, -5.7642227501143166, -7.8575844017704233, 8.5138065738662689, 4.7241317174003958, -10.096994042501567, 12.438227764558155, 2.7850508919916313, -7.2072251055036469, -2.6269452276287124, -10.858511776465122, -9.382631273358955, 8.3283966460812575, 9.2585435022023024, -7.4395391778349076, -15.083896521243371, 16.802375383935249, -5.9975534292925188, -9.4765112294400247, 12.157497196108473, 4.5160814688935869, -2.7728770210355993, 2.9059766323671488, -5.4101491583069929, 8.8988634463609699, -6.400827609041122, 5.3560360503868081, -8.7304511666720401, -3.0755739720628865, -13.966358226924728, -6.7649639759434601, -5.5456693899453127, 17.302274909990441, -7.4968096247971072, 8.744509603950064, -10.794741197131442, -11.913516149338431, -7.729522769816862, -7.4691133826775182, -6.5715478061064134, -11.907691856087185, -0.20263423791519211, 8.7885430265334428, -5.9130473048668284, -13.708290803401704, -13.78899848903613, -15.209798120169717, -7.7253595989171355, 10.377128863501158, 9.5577922484441498, -9.1170808303499999, -6.4012157193694925, 6.0123229297351415, -3.8082896556779615, 14.084538271217655, 7.736609816185922, -7.1200940445799343, -6.0420560567461363, 6.7749183889388505, -6.7423962541293223, 11.698461510951111, 12.488447340839436, -12.158335264443023, -11.337129599624449, 4.6676968705568491, -12.701834709382553, -10.475346061527553, 11.810486767960239, -9.6940285745916039, 2.4420600898797606, -7.1590802169457932, 7.4477382756083328, -12.84581185975534, 4.294724353933816, 4.7862471286393875, -5.1283227202624628, -12.462450772792648, 5.8462045895795738, -2.3252078492902015, 10.784106121114156, -8.9091597599913488, 7.8715048196179795, -11.724382426901904, -9.8819847622548878, 5.5179135967036945, 5.8170155199540101, 13.471313785889976, -15.525106358542637, -10.787512021482629, -12.926571949496676, 0.64019471142609763, 11.404282273170695, 9.9588402015625466, 12.047596212569777, -9.4553988787340977, 8.1934695042991272, -9.2978201862150662, -0.16338758265088724, -9.874707008213198, -15.74174394890615, -6.2188307585781839, 6.8874774293005903, 9.063007022226051, 12.224864329254553, 9.6788512147473025, 4.2394307617891345, -10.591549936022522, 6.6238089274322478, 7.5643367406337223, -8.9582742726253759, 12.967837079016467, 11.558303731051819, 0.66328001774643597, 0.061562459877513763, -9.8220366611970817, -8.6914608429229716, 2.0563987156423309, -12.681611400476225, 1.3200230993063025, 14.397044749313597, -11.646369582297655, 11.475601313196282, -9.6685410246039822, 13.178785331570431, 9.3156729399597396, -8.2280610740799105, -5.8512271809845346, -3.3513051394681299, -12.508309397943608, 4.3947576780553819, -4.2609352469664099, -3.9364029654735142, -7.1257677022599761, -4.749374408895342, -7.8617667438721872, -3.1064686101999062, -3.7432869366585888, -4.8561219977586756, -5.4462675545135282, -3.0540684154947613, -15.35711806555511, -11.536068537082535, -4.7779544806256276, 1.5198489129897315, 2.2249257607654318, -4.4269263183089862, 7.4355310535388179, 9.2780119576973981, -10.652417931125679, -4.1778682483229783, -2.1566547856994727, -11.795081921533383, 10.848372600114878, 10.325168705158157, 6.3921784987473096, -3.4419598984874038, -8.0823946821166821, -8.8829402292522772, -2.8818508823421793, 6.3006936576743202, -18.0845485513623, -6.1046031768124465, -8.3535486208206997, 9.9650967368521606, 16.34809005021857, -6.3719619154861631, 6.6492139253615576, -2.2462433383876483, 12.414615001238596, 9.9243080855013854, 6.5816151826391636, -15.916468641697799, 15.719302793672236, 12.597035667242659, 7.9314977205991974, -4.6176638133992505, 9.8340751357654508, -5.6666671493884282, 16.964399126342375, -10.174033224406887, -6.9445510397424979, -7.0003017483847918, -5.7816060099388684, -12.7380229338664, 2.3874629194778292, -4.3315690351541818, 6.402268747442819, -7.1986862442546862, 3.8230018987349692, -16.488657131909211, -9.4628948760922604, -4.4930989787395363, 0.20228101276884691, 7.9230990768569933, 4.0956585057697925, 2.935031122594181, -6.6661480000167179, 2.1833750370684917, -13.862136299430089, 7.2537537887085604, -9.7837110663390341, 8.6426502286738316, 10.933145886680956, -11.848044341163014, 1.9015758573080708, 7.8955654850233579, 14.087625811239143, 15.74368395360325, 14.915952043583991, 2.4289544447309912, 10.938797000780177, -0.48350975665915585, -6.0724283824951737, 12.43180188960436, -17.027449220255846, 10.457087806200649, 11.834161047678036, -11.574528168603067, -5.8443316647878172, -15.909297292636424, 2.8661614976693999, 0.94537037187104889, -6.1321675750261466, 3.5179605788203152, -13.650295745999149, -14.925340774935689, 5.8996315469200731, -4.742895776593735, -12.78647038316033, -8.7668312292356614, 3.2991120560668561, 16.649617394331742, 12.078195842545881, 8.3422604344231779, 6.3829490997837528, -16.259300428897792, -6.7370828126804438, -19.032060980450861, 10.534387246647906, 15.112739135038019, 9.0482362921064681, -10.686676579265459, 7.4266114954786726, 7.6415038124348245, 0.0092345294467927729, 7.3107957428418979, -9.2074521242051137, 13.337719418423028, 11.800206756300712, 6.4124926065359418, -8.6909900143815833, 11.316987754233748, 19.639736933434676, -3.484119576702398, 2.9928203525781334, -13.578916945190016, -8.2764973238514497, 4.471627662727232, 14.082619508506047, 12.174165038542485, -11.000581807612242, -16.079501874825326, 0.70642865016413037, 15.746012766226523, -7.6161295955099675, 8.117804816632642, 9.3568227935114798, -13.012224242904074, 10.980884709953941, -10.668687925966264, 8.3605232827699503, 19.58871502961652, 7.3537694624012788, 12.7200136615813, -2.7781976528461332, -13.043003975732004, 13.14556253978828, 11.936967872899929, 13.171819029461137, -7.9252087243269118, 7.7003280461862138, -6.5060087655108747, -18.442930781768371, 22.885163982319007, 6.583490491290247, -1.1514058151352935, 10.669101185812385, -10.081271922767652, 13.414113164816222, -10.06095242529296, 4.4368474047139586, -9.5133443219646434, 6.2669708529045183, -9.611863292437766, -15.876098782760467, 0.32220461814667717, -4.7036651574655473, 6.5207549195711563, 5.0860839263292528, -12.612352596775924, 9.9738419686921542, 0.9396778045330193, 10.651502808863189, -1.1105748484379481, -9.0667683952063296, -3.7634192509691813, 8.1968711400693568, 7.2005601582338032, 13.38536236818598, -7.2074952622871384, -10.89721410521263, 5.8944483624519881, 4.1900839916018509, 12.886068410456097, -7.6817739511773864, 6.2800076465595316, -8.0059063646010156, 15.344612453245135, -10.986292543222252, -7.7963115789804949, 15.616622818007777, 10.715195479472955, -9.9059332996558478, 14.531108551785385, 8.0871721404149799, 11.28807228436758, 7.2050553662162322, 1.8673686167182675, 5.6379835308774515, 6.0070995688159945, 3.6718419825892781, 10.273782222887936, -11.003276573222182, 10.86280826743919, 4.8625050304430539, -6.8883036392210499, 9.4110700217989329, 8.5907090738786351, -4.1816331667751721, -4.5065585714549732, -11.851914290939416, -0.82661956749219301, -4.2729352395319262, -12.00561858749291, 11.248537736997887, 5.9702468837958875, -2.8246526750650882, 8.7625453187814948, -7.1602571689933585, -12.354031243120836, 7.4186972352690956, -6.987904733680633, -4.7802427263213847, -8.4594669364587052, 9.9074303226742551, 3.806086639453103, 11.279747903383944, 17.081579765803436, -9.3400423712763221, 3.1993990305779496, -11.821616914733911, -13.221112615394405, -10.273658410670993, 11.172005145239616, 9.0661355630755569, 9.2282171885349893, -10.23315808490522, -8.7767507313040536, 11.658399522139373, 8.1253713837323716, -6.0161671309769886, 16.112984014276019, -10.526568304448215, 11.152848111157505, -8.924603008706157, 19.991244818943592, 1.7502482049131347, 10.380462477594111, -12.601277391046924, 2.2056591767324831, -11.208801676783557, -10.115502455925911, 4.637267012273572, -4.3901359184650799, 6.4876168985133287, -4.998151172316156, -10.216089377506956, 10.51595559197369, 9.860423081769472, 2.0714834687695323, -8.4943703055745399, 2.6716218493294384, -4.4936844031461796, 7.0630594165237257, 11.626244158543082, 12.185499704257312, 14.474700254831625, -8.0226618511897883, -7.0870692277314653, -1.1721939107905543, 9.7010116241387543, -3.9275566558414692, -9.75092296492865, -0.95638727648524069, 8.8537127253606389, -14.829180519689713, 9.9027033868976222, 8.2208221244483237, -10.01770451901422, -6.4871122747161722, 1.9748473784403351, -11.360816340237003, -4.1135134538497162, -8.9279661633195779, -14.855403366544149, 10.607559153322043, -11.932153415925857, 18.392309282429526, -7.2895436119104833, 7.3649578192591916, -11.824321717922503, 4.5048430891613203, -16.076657798411361, -10.123099989589955, 4.6541470838769436, 14.693948982580077, 9.4260360038265905, -6.5360788988808212, -12.279752881306212, 0.14329411518298504, 15.277760011935301, 12.94645800633524, 9.0076074533198192, 3.1698412352516221, 7.1781738715915795, 15.252388120172336, -8.6205841782080128, 5.2369980810204497, -9.433249016049194, 11.112523275262491, -5.6094286689251271, -5.0372463006239476, -6.3399450364534582, 8.9510280620290601, 4.9779353674772384, -12.848232188637104, -7.9494772442250223, 0.056481817566435569, -1.0990377463926844, -8.778197904426678, 12.556996955893457, -8.8110005063100054, -5.0471729352089545, -10.673361741004538, -6.938427941848941, 8.599594025334758, -8.1348225722413492, -13.541689542539737, -11.229036341770312, -22.614183167994018, 12.576253012660271, 15.118290082755436, -9.2870046826546524, 12.899455356719221, 13.243961159383248, 4.4575044249539246, -13.064373901252422, -14.393244974865604, -7.5706760405997384, 8.5444523394978518, 12.288833952178848, -2.5897476840629694, -6.9298386101193596, 12.539861043573865, 11.593898741650712, -7.3909737338763124, 4.2946927448293568, 7.508232545403895, 8.5884600404407188, -7.3302711120767166, -11.033859476165276, 7.3743897210913136, 12.286574554025389, -1.700095235673573, -6.9072546333240732, -12.728102558911758, 6.4176904367705383, 5.903830856246814, 9.2556056318797992, 11.125813908063282, -10.011979772526844, 2.9405966507503511, 10.009962336069428, -4.8607974702953536, 1.7471621272732738, 9.7439136565857378, -0.66822435460540275, 18.464597991608112, -10.547977913897311, -6.8357758325587907, 4.9415192092837481, -11.223685529550222, 5.0739368213705465, -8.1592201290566155, 9.4541189767136888, 6.856119326024217, -18.448536650094034, 11.582475715514898, -10.178303201195758, 4.6276063705681079, -11.553748539540541, 2.5523254456603865, 4.2384411617925624, 9.8680333748165499, 8.1917716819138136, -10.850753257867975, 10.241807976913078, 12.017255467195287, 7.7723650228628429, 5.9396282417311674, -15.066965171524886, 9.4060341572848429, -4.4910564383161384, -8.2147205547924216, 4.7023980767577918, 11.671098907901923, 8.4913841414387878, 7.6416710694567156, 11.664303236292549, -8.9493566205550099, -6.6393544707268033, 7.8628598936427894, -8.5326569294992858, -2.0472135566402336, -11.584529863049369, -13.765771105899878, -13.236687110141661, 7.7745678935906666, 4.0644071666046333, -5.1127185876504511, 11.09916237943035, -18.103923278917275, 2.5020372532682957, 8.1940521912528261, 9.2210533248542514, -8.2947343120838326, -10.150302885063565, -7.0933287260530955, 12.386066725557843, 9.4912773578087801, 3.3565256628259474, 9.513448873526654, -9.5772677988882489, -9.7173765268110159, -7.7871728659279844, -6.33770970174879, 8.7446348550882131, -5.3074344597323737, 11.315880628341713, -5.6257158464771564, 5.9792501423848678, -9.9591388238248939, 10.547073748158361, -11.945860349110731, 9.8107678957781204, 5.3625757170649493, -7.3961894867189759, 11.294547725442342, -4.3290304291788617, -4.4072888651694688, -5.9735063255412655, 6.3232368782780126, -10.734895281472282, -8.8246478451021009, 8.3174800733332432, 10.666958445791396, 9.5832549522929806, 9.6003700340562261, 13.330599293965252, -7.7659598115974093, -8.4068157954698712, 6.7155631645630169, 10.951065869771208, -9.843399692801551, 8.6950573645033593, -12.91546689382516, -6.8284290555266072, 6.9679513402290612, 8.7517402592974953, -9.7252558599188106, 4.4957279393577405, -3.0198719775413605, -12.528522673998944, 12.791874350523511, -11.987866488473575, -7.7731187084210358, 15.356748666493452, -7.4363704293344366, 11.554365751821972, -13.691156388740444, -13.639104069640238, 12.899745770415052, -12.477204336163956, -12.161571929011455, -11.273422005627573, 20.710850070106048, 11.743681239843617, 9.6151567581220565, 8.2992099468073608, 8.4619149441334685, 8.8404977904969346, -10.918349909014658, -5.6517458894209422, 8.6526147356508165, -14.290258838779266, 3.0318506448723244, 3.6389793712730598, 13.887411508481932, -8.8335154477770956, 6.1670460127122331, 13.208091864632017, 15.635505869782437, -17.556690461708161, 12.400331386163444, 3.9778500015058431, -8.2047500613887383, -5.2233512983007522, 4.0362277485067475, 8.4751794582169477, -5.5914076527615748, -5.4777738529828426, 11.821238725863337, -8.8900626961710341, -7.29974425683878, -7.4473770624143274, -8.0512707557556205, 1.6226698981742598, -15.433546932692904, -4.1071266269684763, -8.4263162579803996, 9.0736808802899116, 6.0439240655594269, -9.6449191691164273, 9.2360102991487718, 16.958973272151585, -11.584208891462776, -8.5316628771682268, -10.964476795840529, 14.434155388768026, -16.016018668782927, 12.499589449114831, 5.3431907633740403, -13.783231585179763, 16.195154330455487, -6.4307912934527964, 11.080799577011028, 6.5325130508365454, 12.802146321954664, -7.6814813666878257, 6.1271513194854581, -6.9538126536653362, -5.0690242209381475, -11.855544305317043, -5.1941087352434137, 4.8945739632537482, 9.4974588137719405, 8.8718463435014332, -0.47224465841085145, 3.9456702743066483, 12.491257904548593, 3.9592076310204338, -5.0217678779827253, 6.3597443173631385, -10.612846967410137, 14.31614300592712, 7.1411122329367416, -11.762271600506461, 4.331988913082836, -15.437501431534956, -4.6693242794521481, -12.698173054121195, 12.417434316925727, 21.062913663865295, -3.5142449580964197, 1.3700514528580063, 5.6243547407690206, -12.071365752103238, -1.1360048996995593, -11.347850339525309, 10.833731442380101, 0.46134954632024316, 10.720116067259271, 7.3904190673115604, 6.7696592500196058, 10.652736359476924, -7.8165483190849638, 9.3865130951890841, -0.34774522512587569, -4.0566753969719276, -4.3275806653874298, -6.8638440461424404, -4.682521888031431, -8.2920976977163718, -14.311445847621952, 13.976975120531808, -8.6098361017160663, -12.114294053104134, 5.1005213815339383, -11.049107710762476, -7.0863761770199494, -12.463614616712142, -9.7359303784027027, -13.418212569071059, 5.7610447890373235, 15.56161888307617, 7.0574421915141308, 7.1030986195714929, 11.300511268289812, -7.2344128515783446, -11.13562468318859, -1.5760076318579441, 1.2107880314559112, -8.7874657760578643, -8.8001022473565236, 12.247082051858888, -9.8565622276713381, -3.0179931003584515, -4.5978322515637293, -6.571180711121297, 2.500611207880274, 0.84457801315975856, 6.4714616812285382, -18.464904505652935, -4.3990010259668271, 4.1350410389687466, -10.462432926909633, 6.2042736110931846, -3.8394082311505735, 8.5618068576083974, -17.977066011411761, 11.022903239935964, -19.178990090912414, -8.0470231091434652, 10.79648317128396, -13.096061841695322, -5.6164196771432566, 0.78843332401436395, 13.7984392278555, 7.6547594193414454, 7.5442903307994644, 12.66336251543067, -9.9436379532267338, 8.3550537237332758, 10.82799568784589, 12.384885746776661, 5.2191347513552007, 9.9942871944245102, 12.958881973386022, 5.8450353998039759, 5.156985957036718, 13.5582570732471, 10.34554494007787, -6.037237777176359, -8.2731248141970166, -7.9895984943236309, -12.02375110577746, 9.3728051686457299, 9.3911820274244171, 4.9339039982877528, 12.302318980639923, -5.5266659866771741, -4.9613643934779441, -11.294072601106434, 10.376229630289247, -8.2965871864098535, 6.6836050094050048, 6.894916881498717, -15.288396395010784, 9.0886752966827142, 7.439432773214512, -4.0410572378226171, 8.9307473630506085, 9.0038835677978959, -10.459659023792348, 8.8378541314937387, 10.339786491210649, -9.9890662163533968, 7.9788596610503406, -10.765397845560441, 12.052911411023967, 6.1067152607562258, -5.6066198973015737, 10.952942399934605, 7.6432926714438914, 8.3014387807885619, -8.5639306175146341, 5.1234913528982382, -9.7662598194835457, 6.1322495355624156, -8.160368360432031, -15.309087302665159, -8.3419685644228121, -5.2861952387314828, 5.7536255267894676, -12.714725164584957, -16.125699441038968, -12.439064087815231, -9.1320304457996606, 3.8603060490391887, -6.1338073713204455, -1.7222012329044754, 8.5214199468265512, -8.9836162439198581, -11.816294225738464, 4.2214300165680347, 10.919410045065687, -12.940481826969718, 11.334503455702539, 1.0676110391325953, 7.0891161904485651, 6.9961528158293813, 11.113742549839397, -14.034363540155118, -2.534544404400672, 4.8188993072548705, -18.804376110412633, -13.059868091828172, 2.8229971724161289, -9.6989297510369017, 4.7326387912990509, 12.188026385951737, -11.467461248064906, -14.073562498971903, -9.2196347513311832, 10.038208885426119, -4.3813258723769009, -4.1241400929515137, 11.486725329451389, 4.8628878289290549, -8.8001952481419785, -6.5888239970497349, -9.7953285124389389, 4.2522039839409844, -13.459928721286854, 4.8164035354744943, -15.811464084480162, -15.167000919853482, 8.6050948989220277, 5.4097197830658672, -3.201067374137641, 5.7304935157850272, -0.50989151426446222, -10.147545800700401, 14.129098358281857, 6.7974337326702985, -11.157443424806557, 5.4202945677131122, 6.2589729732564718, -8.100004693609538, -8.7681862399603006, -8.6314112980872526, -3.9762886492900669, 6.9078974491617418, -7.3105786438044316, -12.86172440009309, -10.982888171052132, 11.138006586636338, -4.7087869570844818, 6.0689150921803634, 6.1958655520184891, 14.665790446061886, -21.756441569001307, -6.0112922694975106, -8.604883105861056, 15.140407588256764, -7.0631519145705521, -15.024190589242993, -23.18926715039116, 8.2311742508471983, -8.3904317018734034, -9.8859430286919867, 5.9777560262912424, 4.489704569613985, 9.9452514956755529, 9.5807589942228493, 9.5768073329005379, -13.191427051485375, 8.6226588561737731, 2.398176437043392, 8.3478860808676707, 16.691979667886184, 10.245192955959679, -8.5601611176100771, -8.6435755556304308, 11.536812168223609, -3.8011348079490959, -0.4154822840976809, 7.3530196404235948, -6.2070213990800998, -3.3664554862576601, 1.9501048246997952, 11.044948446517594, -9.1773178494438294, -9.8012555654706048, 12.731258282570259, 7.4006494098682252, 8.8054756517321113, -8.4864693790843759, -14.388354721820441, -3.2911084226653116, 7.3278629195734881, -3.3628879633743507, -2.0906070586159164, 8.7678659217554724, 1.2754529803697003, -10.171163782743935, -8.6401640914138174, -15.570426156008278, -4.7735987049156741, 6.2627274839799227, -8.902086558167035, 5.890113367738306, -16.19738850063483, 12.494158748994153, 7.4515972260992802, -11.368802405389724, 0.79949913059431887, 10.464954350908759, 12.045093842059636, -6.2632239899779618, 9.3946694855915709, 4.6796796423594591, 7.4573657480844915, -2.1730144122742283, -10.441568309083868, -3.128467240255199, 2.6674648941331709, -1.7628028131302032, -11.490305842901, -2.6052782471959244, 9.1378585089733217, -8.3182391512182594, -6.0353916735033906, -6.4946073399059889, 8.5262424287807921, 11.041008586867564, 18.792916305706246, -5.4400449872596122, 4.7763430246707763, 7.4793455477938471, -12.701581632451186, 7.3391248408947076, -11.164236112983559, 9.4704084335423353, -10.054506153225052, 14.297500013934522, -1.9132095626133094, 14.164236143735152, -18.514789351038115, -10.538326608827228, 8.5742137931431603, -18.159208758191326, 7.6116880222576011, 7.9413670120767224, 9.047676658736421, 12.221156662181444, 7.0843147886392952, 13.170456072797521, -10.632225390661356, -12.606230762028668, -13.968700939920279, 0.90435763497244315, -4.1863354464526514, -0.57860003934790516, -7.7068236480377168, -7.5458142157151684, -15.760391765099628, 3.148710788422199, -8.571589030098103, -6.1442268269653644, -5.5386008972836374, -13.583703624827324, 12.571370461611423, -5.0037658066132318, 6.6729776513218466, 6.2491302239836344, -13.868418916158106, 13.949814810808402, 4.1350925641742018, 14.220597569700558, 7.8377637620610052, 10.165620408810733, -6.7532907993950042, 4.3042646268926728, 1.4896778697382114, 8.3496556534811361, -8.8688217756106855, -4.1638250519443876, -10.45385832370283, -17.931254325719735, 13.701501053759536, -9.4565546768244069, 1.3427226397103338, -12.271188095378776, 10.368577567683388, 8.025638109861422, -6.2074049810183825, -2.0991088194951866, -7.6695567427956011, 11.150836440150584, -1.496263923503625, -18.494976331519254, -4.2881609912726928, 12.980292811570745, -0.92488991150790378, -4.6658341014288567, -2.8894649330160642, 4.254991528529442, 6.433665878257556, 5.6179185883054492, 3.9771596771133968, 15.121069471781597, 16.580045222011115, -9.566021123652547, 11.967303334090824, 15.8257683504883, -12.810889692425972, -3.458648034714614, 3.990823559676568, 4.9093618306644045, -3.4096503299487577, 2.8468287182096539, 8.9865457241125046, -6.6201701664235877, -14.013179729737548, 11.434571611598438, 5.767464644498955, 9.3360216341670927, -11.330333170538852, 2.9944289963307167, -11.076388371680537, -9.0625652353016406, -12.834505378246872, -5.1884256791028482, 7.8120310086321405, 10.177307965543681, -9.4195921379930319, 5.466041504061816, -8.3541043828300516, 9.9136918737238453, 8.1033458202759867, -6.7036770007249524, -8.1223318972882215, -8.2591262612141172, -9.1232651727813856, -11.669246063763795, -0.030697844939840527, 9.3789394813876008, -11.107031538341255, 7.288702786596331, -4.6967946059755157, -1.5987277913422755, 11.510267151110476, -15.34971763301391, 8.2159765211646274, 6.6883959862268858, 13.179857051577731, 7.6088514551549089, 7.4989231135409131, -1.7239395961308088, 1.4954887205231719, -9.8573207709532547, 4.9542123592468155, -10.367910840496483, 5.7226061395590309, 9.5446949280935716, -8.6942844135306796, 6.2929455305188577, -6.7169960771850326, 19.637781323792851, -12.129044785216932, -2.8881972324088676, 4.5724813224397796, -4.9563780171627787, -8.8290411230288512, 2.163546702306324, -6.7813228130077352, 4.7602245034138555, -8.4569684434378569, -2.6066149728226859, 14.465681780446152, -7.4053864105652734, -9.8766495392168174, -12.069651713077828, -11.042473697693975, 8.1529541863355082, -9.631792308049631, -3.6472475127982888, 12.36876532086672, 13.587811221658276, 6.0796488885118061, 1.1309707002276215, 9.8361035439712978, -12.782363514428749, 14.877109246506274, 8.9863394004114223, 3.7313973097701414, -8.8429365798088835, 10.783409906469574, 5.4309225673390031, -6.2038249324134984, -12.503772776539773, 5.2588713559908609, 8.0377625659349796, -11.433112718999636, -2.3606577081546209, -0.51422838799139303, 11.042048536456281, -8.9107584751200442, -11.636004759251062, 12.663937409329666, -10.014401209989058, -8.0569057100231696, -8.5006754476725348, -8.2061921877402746, 3.6065709585004733, 0.73647938533134194, 1.8183486110849676, 5.4805296348307078, -2.2813810755893615, -3.9153542826111902, 13.587948798210096, 1.8068496248064898, 9.0325044536184134, 10.124444543125891, 13.84809053563459, 15.565497107356785, 8.9751576152107209, 9.3516719607931797, 3.6327626866158558, 11.760943102597267, 5.0870266626202989, 5.674904060336968, 12.357086041091151, 13.951717235903738, -19.310077284104022, 8.0053082251775685, -4.297125648181531, -6.3260546204828696, 10.294877306501972, 13.93365235676599, 13.141707549171858, -1.5568066615629472, 8.2172142670253123, -7.8132836735117186, 8.8354487563578399, 16.707153362143629, 4.5855551987365208, 12.223929231669286, 14.863765072540376, -15.461542707954242, -2.3371697391419985, -10.024175159008536, -11.737459729645774, -3.7329473123372199, -3.0590377398467261, 13.143768419466609, 9.2038314945946311, 3.521511313043765, -2.2535815241524322, 5.4844876358740011, -10.004087991701629, 11.888560517692463, -4.6722624505292263, 3.7082244357698078, 6.3751558628158023, 11.627185499278614, 1.9289094882369002, -12.217802164142721, -7.6763956464968892, 5.6910150189702744, -5.6417449295552817, 4.9980919736488802, -9.0536429095706819, 9.6119351348702313, 2.4973962155691476, -14.910998981505347, 4.1843311003165047, 5.9103254703115775, -10.108868185667163, -10.968757232820812, -6.2351738311660236, -5.4115373442221397, -5.1847401075738944, -17.223563033246595, -13.214097072642032, -11.854105278464028, 12.414721845275727, -6.2778430500337503, -10.885676169950498, 2.4563316506705526, -8.7748279932902093, -5.7945746677684031, -5.8659162690750017, -10.185454736539469, -12.259036348321617, -11.345440149075966, 6.5815217034894982, -6.4191766201668736, -7.3487464338408746, -0.40842055433143365, 10.921577631841934, -21.476071540546794, -10.659396127407732, -9.7319013100865899, -12.054728330205412, -10.865345038797253, 6.0360205068991064, 6.3343994011226927, -7.1354597827181925, 3.1432134836509893, -2.4414855631776251, 8.0775343816376086, 3.972870247588534, 1.9692418169429344, 7.2828780139977134, -15.463562597421859, 10.173242967382789, 15.083747077552808, -9.276641467191272, 7.7773515313362411, 9.0385622964224765, 5.6887720196625535, -10.133807142620341, -1.6437588724330709, -8.158553801413559, 10.446525293735167, -11.433423238083284, 8.6648442034190918, 10.064106964518734, -8.7075993351272132, -6.3080890103035614, 9.3898484683747458, -4.3190925589260534, -19.328147731608361, -7.6126659646899917, -11.705773894239984, 7.4600825708549596, -8.1116458562206901, -16.039122843816592, -2.6608032342278891, -5.3302266349477829, 7.386051049643469, 6.9792999266885793, -4.5182426093483645, 15.20105997302613, 9.5925220650656087, -0.84758073759469377, 4.5185848028718691, 5.6852984237201536, 8.9738282076193592, -12.235502878115856, 6.6410806023610247, -8.5942670023877028, -10.537735925654538, 7.1077614149638526, -6.4914995246164899, 6.2433348879497554, -11.339739148237399, 17.070957256911349, 2.8503359840349143, -0.58556596880585032, -8.6111923383904436, -12.931731217434081, 6.4866696051548578}; const char HRAa_1536_512_detected_data[] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0}; codec2-1.2.0/src/HRAa_1536_512.h000066400000000000000000000011201445607075400154370ustar00rootroot00000000000000/* FILE....: HRAa_1536_512.h Static arrays for LDPC codec HRAa_1536_512, generated by ldpc_gen_c_h_file.m. */ #define HRAa_1536_512_NUMBERPARITYBITS 512 #define HRAa_1536_512_MAX_ROW_WEIGHT 12 #define HRAa_1536_512_CODELENGTH 2048 #define HRAa_1536_512_NUMBERROWSHCOLS 1536 #define HRAa_1536_512_MAX_COL_WEIGHT 4 #define HRAa_1536_512_DEC_TYPE 0 #define HRAa_1536_512_MAX_ITER 100 #include extern const uint16_t HRAa_1536_512_H_rows[]; extern const uint16_t HRAa_1536_512_H_cols[]; extern const float HRAa_1536_512_input[]; extern const char HRAa_1536_512_detected_data[]; codec2-1.2.0/src/HRAb_396_504.c000066400000000000000000001026041445607075400153700ustar00rootroot00000000000000/* FILE....: HRAb_396_504.c Static arrays for LDPC codec HRAb_396_504, generated by ldpc_gen_c_h_file.m. */ #include "HRAb_396_504.h" #include const uint16_t HRAb_396_504_H_rows[] = { 10, 53, 56, 11, 21, 4, 12, 33, 41, 2, 19, 10, 20, 14, 61, 31, 7, 24, 37, 5, 34, 13, 27, 59, 8, 26, 21, 5, 3, 26, 1, 28, 4, 18, 16, 6, 15, 7, 24, 30, 17, 25, 10, 35, 61, 6, 9, 64, 14, 2, 13, 28, 84, 1, 15, 20, 8, 64, 12, 27, 11, 18, 22, 33, 5, 29, 19, 4, 3, 31, 23, 21, 35, 9, 34, 6, 16, 28, 23, 14, 26, 10, 20, 8, 7, 17, 12, 24, 15, 18, 33, 36, 21, 31, 29, 3, 25, 32, 5, 2, 13, 1, 19, 30, 4, 27, 22, 11, 38, 129, 63, 46, 62, 19, 13, 44, 76, 117, 25, 75, 63, 29, 65, 54, 23, 47, 144, 15, 39, 41, 42, 82, 36, 70, 67, 58, 53, 89, 22, 72, 17, 45, 50, 9, 34, 41, 63, 40, 47, 55, 48, 44, 64, 72, 19, 67, 57, 66, 54, 42, 143, 36, 43, 46, 52, 108, 71, 49, 16, 39, 32, 38, 70, 62, 69, 26, 37, 55, 56, 50, 58, 65, 56, 61, 67, 52, 53, 50, 48, 39, 59, 37, 47, 51, 63, 70, 46, 60, 40, 71, 57, 72, 54, 68, 44, 42, 49, 45, 38, 64, 43, 62, 66, 69, 55, 41, 64, 138, 115, 107, 81, 30, 39, 55, 91, 155, 48, 87, 90, 49, 84, 98, 68, 64, 180, 32, 88, 108, 71, 111, 86, 112, 73, 126, 90, 114, 57, 134, 52, 51, 73, 40, 59, 87, 86, 90, 101, 68, 51, 102, 89, 85, 37, 124, 99, 75, 76, 95, 205, 48, 77, 97, 73, 114, 98, 94, 45, 53, 58, 92, 80, 103, 100, 65, 93, 105, 79, 91, 80, 79, 102, 75, 91, 96, 78, 90, 82, 97, 83, 108, 89, 119, 85, 95, 105, 99, 103, 100, 93, 92, 86, 88, 76, 81, 104, 94, 101, 87, 73, 106, 84, 74, 98, 77, 141, 149, 123, 214, 87, 64, 45, 60, 114, 173, 103, 115, 102, 95, 88, 101, 93, 71, 188, 66, 175, 136, 77, 170, 127, 126, 140, 135, 97, 117, 119, 149, 80, 96, 85, 110, 78, 122, 105, 111, 121, 160, 81, 125, 131, 107, 60, 170, 151, 120, 109, 133, 220, 96, 142, 98, 112, 123, 129, 157, 74, 85, 82, 113, 121, 144, 139, 83, 139, 130, 117, 141, 133, 120, 136, 141, 132, 114, 143, 107, 123, 131, 138, 122, 128, 147, 113, 111, 125, 126, 135, 134, 144, 140, 112, 109, 142, 124, 137, 139, 130, 127, 115, 118, 121, 129, 110, 117, 215, 185, 179, 261, 105, 94, 69, 158, 130, 210, 113, 132, 183, 148, 107, 133, 112, 74, 280, 67, 176, 172, 78, 193, 141, 153, 146, 160, 156, 147, 132, 150, 100, 168, 138, 161, 99, 176, 138, 192, 136, 186, 85, 167, 168, 118, 104, 200, 215, 147, 161, 177, 244, 116, 165, 119, 210, 156, 132, 191, 106, 135, 115, 180, 155, 163, 146, 178, 153, 166, 149, 175, 153, 155, 145, 169, 150, 179, 165, 116, 158, 167, 176, 168, 146, 158, 178, 149, 154, 138, 166, 145, 152, 161, 175, 148, 172, 156, 162, 177, 171, 157, 159, 164, 173, 203, 151, 180, 257, 191, 231, 262, 139, 130, 124, 178, 165, 234, 170, 185, 237, 164, 114, 143, 171, 80, 291, 122, 182, 204, 104, 242, 147, 154, 166, 183, 265, 187, 159, 212, 152, 175, 189, 164, 158, 187, 143, 223, 142, 217, 140, 208, 209, 154, 134, 252, 230, 196, 216, 182, 256, 150, 198, 137, 251, 166, 162, 197, 113, 174, 128, 196, 212, 193, 189, 185, 190, 201, 181, 203, 215, 184, 205, 189, 207, 196, 214, 174, 190, 199, 211, 201, 192, 181, 186, 210, 187, 163, 213, 200, 216, 198, 185, 212, 188, 191, 204, 206, 183, 193, 209, 197, 195, 224, 202, 208, 273, 218, 274, 294, 213, 163, 187, 248, 194, 235, 260, 200, 248, 224, 137, 254, 222, 85, 292, 145, 190, 212, 131, 245, 159, 199, 181, 258, 277, 206, 178, 219, 202, 184, 241, 205, 239, 260, 148, 271, 159, 263, 152, 242, 250, 183, 151, 259, 246, 214, 225, 237, 272, 206, 213, 145, 255, 199, 196, 228, 127, 188, 172, 222, 232, 226, 207, 238, 227, 224, 248, 233, 247, 223, 245, 239, 250, 232, 252, 194, 233, 249, 219, 225, 242, 238, 240, 226, 234, 170, 238, 210, 237, 230, 228, 243, 236, 231, 248, 221, 246, 218, 229, 227, 217, 235, 222, 251, 277, 262, 299, 338, 246, 208, 220, 289, 291, 276, 267, 233, 333, 307, 264, 288, 324, 92, 325, 169, 209, 233, 192, 275, 160, 257, 247, 317, 359, 308, 194, 228, 244, 236, 272, 248, 273, 295, 184, 315, 182, 339, 195, 268, 282, 243, 169, 300, 283, 265, 240, 258, 289, 245, 218, 173, 297, 240, 236, 257, 171, 219, 230, 288, 254, 264, 231, 281, 287, 277, 279, 303, 259, 286, 277, 279, 269, 261, 255, 220, 265, 283, 278, 276, 281, 285, 268, 266, 282, 182, 244, 241, 254, 274, 256, 258, 264, 253, 287, 270, 260, 267, 273, 262, 257, 288, 284, 275, 278, 276, 323, 347, 249, 266, 232, 331, 366, 332, 304, 280, 347, 355, 268, 297, 327, 311, 345, 186, 221, 279, 226, 283, 223, 310, 296, 348, 379, 316, 252, 229, 277, 273, 286, 319, 305, 329, 235, 343, 307, 376, 251, 306, 323, 276, 275, 358, 318, 328, 269, 319, 338, 274, 286, 280, 333, 262, 278, 314, 194, 256, 311, 302, 312, 327, 261, 293, 322, 308, 284, 325, 292, 322, 302, 297, 299, 306, 290, 263, 312, 311, 315, 317, 318, 304, 305, 289, 309, 280, 316, 271, 314, 313, 296, 303, 320, 307, 298, 300, 319, 294, 308, 321, 323, 301, 291, 324, 328, 337, 362, 385, 320, 310, 346, 344, 380, 349, 322, 369, 350, 367, 302, 358, 356, 316, 368, 211, 301, 282, 302, 309, 284, 341, 306, 365, 382, 325, 253, 285, 313, 281, 287, 351, 330, 364, 313, 368, 330, 377, 270, 334, 372, 331, 296, 365, 346, 345, 309, 324, 341, 317, 298, 320, 342, 345, 310, 336, 249, 304, 333, 352, 367, 349, 354, 294, 363, 335, 301, 340, 339, 327, 332, 350, 342, 344, 329, 310, 338, 331, 354, 328, 351, 364, 325, 348, 353, 293, 340, 295, 343, 355, 360, 326, 337, 341, 346, 352, 359, 335, 356, 357, 358, 334, 349, 330, 347, 372, 381, 0, 336, 326, 383, 367, 392, 374, 386, 376, 353, 387, 378, 0, 392, 342, 389, 255, 394, 314, 371, 361, 312, 377, 373, 384, 390, 339, 315, 290, 352, 324, 321, 360, 396, 371, 344, 388, 347, 378, 356, 392, 384, 389, 348, 390, 353, 387, 374, 337, 381, 350, 359, 362, 385, 375, 355, 361, 382, 351, 360, 383, 391, 379, 369, 375, 370, 395, 357, 386, 379, 333, 387, 390, 389, 377, 391, 365, 388, 386, 385, 396, 370, 382, 372, 376, 368, 336, 371, 345, 362, 361, 395, 366, 393, 378, 392, 384, 394, 363, 380, 369, 383, 381, 373, 375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 389, 0, 393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 366, 0, 366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; const uint16_t HRAb_396_504_H_cols[] = { 31, 10, 29, 6, 20, 36, 17, 25, 36, 1, 4, 7, 7, 14, 20, 35, 33, 34, 6, 13, 5, 31, 17, 18, 11, 26, 23, 32, 14, 6, 16, 20, 8, 21, 44, 25, 19, 1, 7, 36, 9, 23, 55, 8, 7, 4, 18, 11, 14, 35, 34, 33, 2, 16, 8, 3, 31, 28, 24, 8, 15, 5, 3, 1, 15, 20, 20, 17, 7, 26, 18, 32, 27, 18, 12, 9, 23, 23, 71, 18, 5, 24, 68, 15, 18, 25, 5, 15, 30, 13, 9, 18, 17, 6, 14, 34, 29, 16, 37, 33, 16, 13, 11, 23, 5, 61, 4, 22, 51, 36, 24, 17, 11, 9, 3, 54, 10, 46, 31, 50, 41, 20, 3, 7, 44, 26, 25, 63, 2, 6, 23, 12, 16, 32, 28, 22, 15, 2, 5, 27, 1, 41, 16, 19, 20, 27, 25, 14, 2, 32, 47, 33, 26, 26, 10, 29, 60, 8, 25, 25, 36, 59, 6, 14, 9, 27, 44, 34, 20, 11, 17, 22, 10, 62, 21, 21, 52, 8, 3, 19, 27, 21, 13, 34, 2, 20, 7, 19, 35, 21, 2, 23, 24, 9, 43, 50, 60, 55, 26, 12, 70, 33, 72, 22, 36, 30, 67, 6, 21, 10, 20, 22, 5, 4, 1, 51, 42, 2, 32, 7, 21, 17, 25, 14, 51, 23, 69, 32, 32, 49, 3, 7, 12, 10, 10, 34, 13, 68, 37, 51, 35, 24, 46, 33, 24, 5, 27, 8, 5, 45, 43, 31, 31, 16, 20, 53, 1, 28, 48, 11, 4, 2, 42, 15, 29, 6, 11, 15, 51, 43, 40, 35, 1, 3, 24, 2, 1, 1, 22, 12, 34, 22, 24, 25, 32, 35, 35, 16, 8, 32, 9, 19, 68, 4, 38, 27, 16, 55, 3, 48, 21, 15, 72, 11, 37, 27, 14, 30, 24, 6, 18, 25, 33, 22, 31, 18, 28, 49, 36, 5, 35, 11, 3, 17, 19, 6, 17, 1, 38, 37, 8, 10, 13, 44, 70, 5, 2, 4, 30, 72, 26, 18, 40, 8, 19, 7, 1, 28, 10, 13, 36, 33, 13, 67, 14, 17, 71, 16, 29, 36, 24, 3, 69, 38, 28, 9, 8, 19, 12, 69, 23, 2, 27, 10, 58, 12, 26, 15, 29, 9, 3, 29, 7, 28, 4, 11, 14, 40, 11, 29, 27, 9, 13, 21, 70, 37, 54, 50, 69, 33, 28, 46, 38, 57, 47, 12, 61, 59, 22, 49, 37, 61, 41, 62, 11, 56, 27, 63, 71, 39, 42, 30, 60, 52, 66, 40, 70, 63, 64, 37, 73, 54, 47, 64, 21, 40, 22, 52, 103, 44, 34, 56, 41, 43, 60, 72, 43, 57, 29, 51, 42, 71, 49, 63, 37, 47, 45, 66, 13, 6, 68, 50, 27, 42, 67, 65, 23, 46, 35, 61, 50, 51, 55, 37, 74, 33, 43, 63, 83, 53, 35, 39, 12, 21, 45, 29, 72, 64, 69, 60, 52, 54, 56, 56, 49, 67, 41, 44, 66, 47, 39, 104, 15, 58, 96, 107, 40, 26, 61, 15, 12, 80, 30, 104, 56, 74, 65, 38, 58, 48, 89, 28, 61, 85, 59, 9, 45, 31, 52, 47, 62, 41, 56, 35, 67, 43, 25, 55, 39, 66, 56, 67, 30, 39, 32, 54, 49, 43, 69, 46, 65, 58, 102, 37, 31, 28, 51, 99, 66, 36, 55, 58, 82, 45, 47, 24, 61, 63, 56, 80, 34, 38, 100, 31, 78, 64, 71, 41, 28, 39, 12, 42, 30, 62, 67, 69, 60, 40, 66, 31, 105, 59, 104, 94, 58, 48, 84, 107, 106, 99, 53, 54, 77, 44, 45, 57, 83, 32, 55, 50, 49, 93, 105, 55, 62, 53, 100, 64, 40, 70, 84, 66, 104, 60, 103, 63, 67, 65, 22, 89, 39, 59, 52, 86, 76, 58, 92, 44, 96, 53, 54, 49, 73, 13, 61, 77, 57, 48, 98, 65, 57, 62, 26, 52, 73, 38, 67, 4, 80, 66, 50, 88, 102, 44, 77, 100, 92, 53, 34, 54, 47, 10, 29, 59, 71, 19, 68, 45, 49, 71, 86, 55, 69, 64, 53, 79, 19, 73, 90, 68, 92, 47, 57, 99, 77, 100, 71, 23, 96, 62, 87, 44, 41, 70, 51, 26, 63, 65, 39, 60, 40, 30, 54, 85, 52, 56, 104, 69, 45, 34, 30, 96, 66, 50, 79, 41, 46, 75, 57, 106, 102, 60, 52, 53, 42, 91, 53, 57, 93, 39, 50, 49, 4, 47, 66, 54, 62, 64, 49, 83, 59, 43, 104, 48, 55, 63, 60, 56, 102, 86, 48, 41, 14, 40, 67, 85, 38, 45, 107, 51, 68, 42, 42, 42, 66, 103, 53, 61, 64, 45, 57, 72, 50, 81, 19, 48, 65, 17, 97, 101, 95, 84, 102, 100, 96, 68, 65, 76, 85, 84, 74, 43, 108, 87, 51, 80, 55, 77, 86, 90, 47, 83, 72, 107, 79, 88, 97, 68, 106, 78, 95, 104, 94, 98, 91, 75, 0, 92, 69, 101, 62, 91, 38, 98, 0, 97, 61, 89, 85, 54, 99, 80, 86, 78, 62, 95, 70, 75, 93, 73, 83, 90, 76, 104, 39, 18, 74, 105, 48, 96, 106, 88, 59, 94, 57, 106, 76, 97, 108, 79, 0, 65, 98, 81, 0, 105, 43, 95, 38, 96, 85, 40, 77, 94, 93, 100, 88, 78, 82, 59, 90, 92, 101, 75, 91, 99, 70, 0, 46, 84, 0, 0, 88, 57, 64, 30, 63, 0, 71, 0, 86, 0, 105, 84, 81, 98, 0, 90, 102, 0, 106, 70, 82, 59, 73, 92, 91, 75, 99, 39, 69, 94, 72, 97, 53, 93, 75, 85, 50, 96, 71, 77, 107, 93, 73, 89, 74, 98, 0, 81, 41, 42, 94, 0, 90, 104, 79, 70, 0, 84, 76, 48, 101, 97, 105, 0, 72, 83, 0, 68, 0, 108, 86, 52, 46, 74, 68, 87, 38, 97, 76, 81, 98, 85, 102, 61, 0, 64, 0, 0, 82, 92, 0, 0, 0, 0, 75, 100, 0, 108, 103, 88, 0, 65, 91, 79, 73, 0, 0, 102, 83, 80, 0, 107, 74, 106, 0, 88, 0, 95, 0, 94, 98, 78, 72, 0, 106, 97, 93, 91, 0, 87, 0, 85, 0, 91, 75, 101, 0, 36, 82, 0, 108, 79, 0, 93, 79, 95, 60, 96, 0, 101, 78, 58, 0, 97, 81, 0, 0, 87, 0, 0, 0, 0, 37, 94, 108, 46, 33, 83, 76, 56, 85, 89, 82, 107, 0, 74, 99, 106, 88, 0, 107, 0, 0, 102, 0, 95, 76, 0, 0, 0, 106, 64, 0, 86, 0, 78, 98, 103, 89, 59, 82, 81, 94, 93, 83, 91, 84, 0, 101, 97, 0, 74, 105, 52, 72, 0, 74, 84, 0, 108, 82, 0, 63, 0, 0, 90, 97, 81, 73, 0, 98, 77, 0, 78, 58, 99, 13, 88, 107, 76, 85, 100, 89, 0, 94, 103, 0, 105, 101, 95, 94, 93, 0, 0, 80, 43, 65, 89, 104, 0, 91, 87, 0, 0, 108, 88, 78, 98, 73, 0, 106, 86, 105, 100, 83, 82, 75, 0, 46, 76, 79, 44, 0, 0, 0, 0, 0, 0, 0, 105, 99, 0, 0, 0, 0, 82, 0, 0, 101, 0, 89, 0, 0, 0, 67, 0, 93, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 82, 0, 108, 0, 0, 0, 100, 0, 0, 81, 0, 0, 0, 0, 79, 0, 107, 0, 0, 0, 0, 0, 0, 0, 87, 45, 0, 0, 77, 0, 0, 0, 92, 0, 103, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 46, 0, 102, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 89, 0, 80, 0, 0, 0, 0, 95, 87, 58, 103, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 77, 0, 0, 0, 0, 0, 83, 100, 0, 76, 0, 79, 0, 92, 0, 86, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 86, 103, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 90, 0, 0, 0, 0, 95, 0, 0, 87, 0, 0, 0, 90, 101, 0, 95, 0, 89, 0, 0, 0, 0, 0, 0, 80, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 84, 70, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 87, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; const float HRAb_396_504_input[] = { -12.781911708775533, 7.551155800725204, -11.899607043049681, 17.477156604046595, -13.803361319809902, 6.2002990057867589, -15.169569280110601, -17.341522766496183, 9.7107774319996505, 16.641703452581407, 8.4284168541090221, -11.930717934789106, -4.4208828355542424, -1.139969227664315, 17.673081687318597, 16.121750517979301, 3.6219051813553182, -20.05687038213798, -6.5018436610168866, 10.791743071707945, -8.0445304197245111, -8.3324911789627567, 11.41120852689847, -11.282456703274443, -9.2866085578109647, 9.9469665371993603, 15.140667602380192, 3.4450775767841488, 0.64231692247845451, 8.0801244936842966, 5.4636814535382374, -5.0107553707349375, 7.864699294226007, -10.386130310145816, -12.37983397229897, -14.572379771221275, -16.054735647120321, -11.263149256634462, 14.219711467898444, -9.2719771070008434, 8.3099403015379476, -10.148895658714522, 14.726350071572289, -6.8215748913296936, -7.3601951789355757, -15.40290283113702, -11.244311800452268, -7.9961343172040795, 5.1368563973467962, 9.5164063035654909, 8.4155629108106549, 16.014525967886211, 1.699070391185594, 9.954286029615325, 7.6585573567939873, 7.9223054149290961, 7.9198517179714161, 10.631081381345467, 3.2596035260666651, -4.6015483371596497, -9.3597887942885531, 7.6740974245989673, -16.604278204111164, -9.8303898312522513, 1.1205811253439053, 8.119179250191868, 9.5880695910130243, 8.2874878418366773, 6.0797980497495772, -12.937113562007257, -3.1974528849557156, 13.246273287806673, 11.66494172835136, -12.103215889657571, 16.688894677207085, 2.257955028557403, -8.5424956390175151, 12.497318796297906, -9.0900910972806521, 8.2209514183928061, 5.7402258284777101, -20.747034176270887, 3.5631050854868058, 10.395770683064073, -9.868223944850401, -8.6550086233418142, 3.8407639306907768, 11.327546861735177, 13.015569340310336, 25.712163835177048, 13.268816328384831, 4.6584774592149962, -13.317349857427834, 9.5406654991490569, 17.049953586489877, -4.0111152401055641, -11.693122827989608, 7.5370223906338998, 11.277949854414416, -11.498659185019621, 9.549753443463084, -12.055250773523783, -10.739286977821905, 14.136269830595458, -7.782253905067039, 4.9092522955317381, -10.465638951656203, -8.0435611797655167, -6.8433147729593813, -9.0439724403972992, 4.3359408282633236, 11.715689661715617, 19.611494165878462, 7.9190285414926178, -3.4982694249277611, -12.338256249127136, 9.8421320440049662, 4.1138225682471781, 6.4942182289542236, 5.2066961739124622, -9.7070041876701811, -9.1496153713901478, -11.724529081464583, -9.3603341476943687, -5.2966983729936237, -13.015748591796211, -3.8567718830575424, 10.135559234020649, 8.7124846719285305, 15.56420640265349, 11.252060195029108, -5.0089167203318068, 4.8507161178807445, 18.024720595741002, 17.065315044907795, -7.1935844977610666, 4.4815982827009275, -11.880975891281834, -12.172241984932276, 1.5152035384857121, 17.946629562223141, 5.5052899404780824, -13.120278899383999, 10.648236401527056, -14.506377227430642, -10.143170277861179, 14.044470462529238, -9.2254356225576046, -8.8348967562869412, -4.9590358444858067, 9.0535343466316753, 10.897394405658892, 14.0281876034117, 11.255519350361872, -13.859106646040908, 6.4504642887424621, 11.777861578819222, -11.639709904108361, -14.642162922529135, -14.4258126604062, 13.682206617896547, 11.95057687459364, -8.3091459570180035, 10.93961990916042, -11.907964651381601, 12.516150502079761, -13.04991156095979, 14.145576472835312, 10.632785447350683, 12.081094158208353, -6.8485025555270633, -7.6927274273100101, 9.6552183508541098, -8.5591832251882316, 15.638135027982772, 11.926988474833571, -14.987130306515169, 14.812479105542307, -11.914804743109391, 15.824256001061817, -8.5851098252378435, -13.901610955497368, 14.188963140600226, 6.811888787586982, 1.6003053019945943, 19.325203560888092, -13.704678587213907, 0.31402694199929804, 15.989943699374408, 6.0088299172857802, -16.886144255198669, 10.998325725589428, -8.2882779267894371, 2.6453088627011274, 10.412577554382436, -14.426316461418969, 8.1138928008495217, -1.3343532339748365, -20.340051195431247, -8.147129300539568, -2.9761356060569728, -10.375141176280817, -3.492207168269704, 7.9187407777624479, 13.120922417727103, -13.038589243192815, -5.2220329986414589, -15.490400289338059, 17.189589889777995, -7.0721481714310892, 12.581795403076717, 13.235922100360186, -14.068623066472972, 10.590824537759135, -15.881395141726383, -10.457045553712261, -9.8661324776225801, 4.734922703000958, 15.360039696456523, -3.6427404709897195, 12.283954090395133, -10.580773927999571, 0.82767864919701561, -19.322191171106951, -2.4440165020607636, 7.3561450067817269, 8.734912251555226, -10.1437777971503, 11.586163919375755, -15.408234206400728, -13.870410556862536, -16.459582947709787, -6.3237526923701468, 11.608212905773328, 5.6613158220955073, -11.774245858420727, 3.9445738850991399, 11.580625563882155, 4.8206111058017749, 9.1501633745566071, -7.8619603245069358, -10.01135725687336, 13.093956991526415, -16.457925498763061, 8.7995448079979344, -6.8693123471950814, 2.7230849761708642, 14.798365672787927, 5.3137203364492533, 12.867351465034174, 15.542257577290705, 10.701888362195504, -12.387250136917784, -7.2295230408544304, 9.6964847959436913, -9.0249610457078298, -6.1083927724817624, 10.739040854096423, 10.841475540702188, -11.378611500586242, 15.703248605756047, 3.4356087856986508, 9.107640628528733, -10.389742419200251, -13.652754262528372, -8.7325864940958979, -4.1006685083845982, 12.419068901103934, 18.740969634501024, -7.2686574148980894, 15.57081866775636, 7.8740814697714061, -5.3846084718512941, 10.477115100800031, -18.872361222343329, 6.1039069136118798, 17.308178559392783, -7.4815794858402631, -8.6125141656077062, 8.9583151933398391, 15.414391681552324, 11.050241874455013, -12.807870031579375, 9.0363612736996224, 15.816822937315944, 7.8444181915777751, 9.1766300505397727, 14.827248874904317, 10.059358980544847, 8.1004443450218631, -9.9138353480289823, -12.69584064620971, -1.2480517929964754, 4.9462685565954452, -11.001361577099411, -14.645415102047146, -8.290528664203066, -6.5125802605593295, -9.2390284023464098, -9.6219279810207716, -2.4663308852408137, 7.9284843220778702, -10.739866570047806, 6.0027860732461509, 6.1871445421636109, -7.2396227218981295, -16.909239064069116, 8.0605318273056952, -13.18199180405694, 11.423481528527208, 6.103394660237238, 11.02891865005909, -9.0418767418601025, -12.498971584987439, 20.946414970644234, 24.362523031251186, 4.928071385179801, -9.8370658808205729, 14.539073682029368, 1.2645116781629737, 14.426946417515435, 10.026504861776269, 10.448998607938103, 10.006313240241793, 11.891150094820924, 8.8375576186697344, 8.5771389584190558, -15.536407780091233, 13.349864120336063, -11.927556110752052, 16.068268030243942, 18.193338642202377, -11.869068102320544, 13.808406661021646, 11.216260613445977, -15.515968362285809, -14.909791180531339, -10.071410710917538, -5.5399590746720264, -14.934775635718978, 14.30539374658337, 7.3819695117708113, 7.7868368821638674, 15.432743081832081, -2.5950994414982973, -12.476581448977271, -1.6564415840602271, -10.295779594978484, 4.7085935460142574, 12.24789018308865, 16.925819961116584, -18.384663719107415, -14.057276635303813, -5.8146990314358709, 6.5631719088139118, 12.127149794502795, -15.739169438478982, 7.8271230641312846, -5.9606533200021854, 9.8721062001112347, 10.486834679901543, 6.3494439660436246, 9.9429692254989686, 19.542594690444115, 4.5180797153308676, -19.1566652225201, 15.006372860965323, -15.300035248621157, 9.7589319143789801, -4.7363679865964263, 5.3999824517855961, 8.0578934432355496, -19.385015013376869, -14.161802280526608, -12.881654979775632, -12.049094820078055, -5.3829315859449007, -7.3537414475927241, 6.844714008315254, -10.931623197527411, -10.939763582880817, -13.62500540625687, 20.49307277175809, 10.365734953239752, 4.0663542658207543, 15.929076113588478, -10.288951069929114, 7.8742158721474977, -1.422979120612724, -14.104879669064141, -4.55280623980281, -8.1653075636365458, 14.147963542838651, -13.933332225643916, 14.226165096278136, -13.375191283046002, 9.2088912804672614, 10.933675274282887, -9.9392697991816448, -16.955582876153894, -11.85793097786863, 5.8569767257292948, 6.6660744272807806, -4.6888969930553994, 20.646624453011015, -1.2485466035357267, 6.7572930222337293, -11.830468070632643, 12.387424895419418, -18.508514302306494, -15.324824129201243, 5.0862404533417127, -5.2707864200417625, -14.224777968048254, 7.6291208613793344, 5.0046921384732324, 7.9969106436802599, -14.577995568165489, 8.1080228274897834, 12.603861058845251, 11.220434316666585, -5.7247050938128154, 11.912056122344682, 0.10886944478234604, 9.3619646262630898, -7.7302663627879742, 14.530248266518536, -15.658478259515816, -1.2907403171529221, -6.3207955318188116, 15.484693780278064, 12.036254202990973, 4.6560888684896602, 7.678255286975908, 9.4289524624102352, 11.319695981517606, -5.4092744871032599, 6.6896098743454493, 2.1792109184280051, -11.081376849744698, -10.411817839842012, 11.057139193661996, 10.674844657971892, -7.611917928843007, -7.7114315734656405, -10.25566388330579, -9.5816821583841509, -3.8229805246413409, -9.4360724513005252, 8.5081398584333474, 12.93470424207193, -12.400231194882618, -9.4258414862069788, 21.836201624323113, 9.6722027120607468, -11.684243881860825, 11.18326004371732, 9.8228033099036569, -1.6298761838573241, -14.006557406509664, 3.2619201008452663, 3.9694393534038981, -8.8928237386570181, 6.2844903665726015, -4.7494171442219395, 5.9437023484394249, 13.979025508842865, -14.044878091079713, -4.9661838171055548, 7.6707889728317591, -4.2457033821315688, -1.3421305197348499, 4.9933591178833261, 1.5425117319878872, -17.930315353239411, 12.197719685382262, -5.947358941151732, -12.904626563212007, 6.1763577253014788, 16.076852398625185, 8.2709163525181015, -15.422610935202506, 10.890948687642558, -9.9461592598413802, 6.34551493463914, -15.578427358705113, 15.918090853090177, 9.9516599357932982, -3.9346680898413688, 5.3410774271588748, 11.920077938590593, -2.4538357241090294, -11.163446342656663, -10.488287129167166, -12.749714598521885, 5.4035140611182522, -7.3998902697733975, 8.1911994226222173, -6.178143732667059, 7.1909081188653348, -16.467787621055525, 7.5865191569782464, 15.269036731801625, -8.469922589870114}; const char HRAb_396_504_detected_data[] = { 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1}; codec2-1.2.0/src/HRAb_396_504.h000066400000000000000000000011011445607075400153630ustar00rootroot00000000000000/* FILE....: HRAb_396_504.h Static arrays for LDPC codec HRAb_396_504, generated by ldpc_gen_c_h_file.m. */ #define HRAb_396_504_NUMBERPARITYBITS 108 #define HRAb_396_504_MAX_ROW_WEIGHT 12 #define HRAb_396_504_CODELENGTH 504 #define HRAb_396_504_NUMBERROWSHCOLS 396 #define HRAb_396_504_MAX_COL_WEIGHT 7 #define HRAb_396_504_DEC_TYPE 0 #define HRAb_396_504_MAX_ITER 100 #include extern const uint16_t HRAb_396_504_H_rows[]; extern const uint16_t HRAb_396_504_H_cols[]; extern const float HRAb_396_504_input[]; extern const char HRAb_396_504_detected_data[]; codec2-1.2.0/src/H_1024_2048_4f.c000066400000000000000000014474741445607075400155500ustar00rootroot00000000000000/* FILE....: H_1024_2048_4f.c Static arrays for LDPC codec H_1024_2048_4f, generated by ldpc_gen_c_h_file.m. */ #include "H_1024_2048_4f.h" #include const uint16_t H_1024_2048_4f_H_rows[] = { 16, 7, 138, 40, 212, 23, 7, 53, 14, 43, 2, 74, 7, 107, 74, 14, 38, 190, 13, 114, 157, 38, 223, 64, 43, 26, 64, 52, 15, 71, 26, 20, 15, 213, 114, 154, 2, 55, 39, 165, 14, 133, 96, 5, 9, 13, 54, 105, 30, 8, 17, 100, 25, 20, 95, 18, 46, 6, 36, 95, 563, 32, 80, 141, 89, 58, 24, 7, 143, 83, 140, 12, 94, 52, 202, 9, 22, 30, 52, 61, 11, 32, 34, 153, 13, 120, 36, 204, 72, 332, 42, 59, 91, 4, 74, 28, 12, 145, 24, 60, 26, 13, 116, 48, 42, 34, 29, 14, 6, 2, 226, 72, 124, 23, 76, 177, 132, 12, 177, 13, 126, 68, 388, 35, 1, 5, 40, 14, 45, 17, 10, 76, 34, 186, 44, 97, 6, 119, 59, 9, 39, 125, 59, 79, 102, 42, 5, 58, 66, 1, 35, 165, 154, 71, 218, 91, 11, 13, 8, 141, 126, 63, 58, 11, 8, 201, 96, 17, 40, 81, 35, 78, 94, 107, 143, 201, 40, 4, 217, 1, 110, 124, 49, 222, 121, 41, 52, 85, 157, 5, 93, 83, 84, 81, 34, 33, 63, 193, 43, 27, 70, 12, 97, 149, 12, 79, 17, 27, 57, 34, 18, 130, 25, 26, 91, 3, 59, 60, 74, 6, 14, 70, 67, 204, 10, 51, 31, 56, 104, 50, 72, 196, 18, 83, 69, 11, 15, 12, 92, 103, 215, 108, 84, 39, 67, 55, 16, 36, 158, 90, 100, 127, 206, 31, 77, 122, 183, 26, 36, 22, 114, 81, 46, 12, 118, 22, 61, 160, 129, 53, 191, 2, 21, 56, 130, 2, 12, 16, 74, 56, 36, 169, 41, 61, 16, 73, 2, 56, 31, 25, 169, 8, 159, 62, 82, 217, 9, 29, 61, 27, 39, 43, 135, 24, 18, 221, 5, 83, 112, 184, 19, 16, 9, 7, 66, 32, 1, 28, 95, 84, 14, 86, 71, 132, 3, 35, 58, 26, 45, 131, 10, 27, 21, 16, 68, 41, 3, 48, 20, 28, 68, 87, 22, 39, 20, 123, 46, 33, 15, 165, 205, 55, 34, 139, 114, 79, 75, 90, 129, 10, 12, 38, 20, 158, 4, 71, 20, 32, 46, 121, 4, 12, 33, 41, 6, 135, 25, 27, 45, 95, 141, 29, 6, 80, 116, 5, 138, 47, 110, 90, 44, 4, 19, 10, 55, 32, 45, 111, 60, 121, 32, 164, 66, 23, 4, 25, 167, 217, 119, 141, 49, 40, 124, 52, 27, 54, 15, 39, 48, 5, 107, 69, 10, 65, 32, 59, 33, 13, 26, 225, 11, 13, 23, 211, 24, 18, 81, 108, 81, 179, 100, 1, 135, 12, 32, 90, 64, 12, 35, 80, 48, 17, 46, 67, 66, 20, 8, 237, 63, 75, 102, 50, 83, 230, 45, 142, 75, 20, 59, 7, 10, 89, 106, 207, 69, 41, 197, 122, 1, 26, 109, 2, 145, 153, 166, 39, 71, 17, 144, 13, 9, 147, 20, 99, 12, 4, 43, 57, 157, 1, 88, 150, 91, 3, 11, 70, 123, 176, 3, 6, 39, 21, 30, 43, 10, 19, 68, 1, 70, 45, 167, 83, 116, 57, 34, 7, 51, 71, 70, 66, 49, 10, 117, 66, 38, 7, 9, 19, 39, 44, 58, 369, 21, 135, 7, 13, 123, 7, 60, 104, 65, 8, 101, 142, 105, 35, 48, 28, 22, 139, 151, 27, 436, 37, 89, 230, 92, 36, 72, 37, 45, 50, 22, 16, 69, 55, 35, 97, 28, 46, 15, 16, 25, 42, 156, 10, 42, 57, 221, 15, 99, 64, 31, 143, 138, 29, 99, 8, 81, 94, 76, 96, 107, 20, 6, 23, 58, 33, 6, 216, 33, 121, 64, 36, 18, 2, 148, 35, 72, 2, 169, 102, 15, 233, 57, 229, 53, 23, 68, 73, 26, 144, 9, 75, 18, 53, 23, 727, 30, 18, 14, 111, 5, 26, 53, 23, 30, 135, 2, 60, 51, 62, 85, 202, 2, 48, 18, 21, 103, 67, 82, 57, 86, 27, 19, 107, 42, 37, 66, 19, 61, 56, 76, 8, 10, 43, 19, 4, 29, 79, 36, 19, 70, 63, 25, 19, 7, 21, 5, 37, 39, 47, 92, 28, 24, 188, 30, 60, 11, 146, 49, 17, 62, 3, 28, 4, 146, 14, 47, 59, 30, 80, 46, 49, 67, 249, 98, 86, 174, 20, 8, 6, 139, 127, 51, 62, 17, 85, 68, 60, 44, 113, 118, 171, 80, 44, 15, 38, 70, 51, 11, 99, 5, 6, 85, 35, 230, 113, 4, 152, 107, 31, 28, 41, 184, 10, 27, 69, 58, 68, 100, 24, 148, 78, 4, 62, 38, 140, 112, 16, 130, 17, 21, 40, 35, 40, 111, 230, 31, 14, 109, 4, 69, 61, 85, 17, 117, 125, 90, 65, 37, 7, 46, 29, 41, 87, 11, 53, 80, 209, 75, 55, 8, 38, 86, 19, 190, 52, 28, 38, 169, 72, 81, 32, 65, 149, 5, 46, 101, 124, 60, 181, 33, 56, 32, 44, 9, 46, 9, 70, 96, 8, 1, 3, 130, 21, 22, 115, 43, 9, 44, 49, 63, 94, 152, 15, 162, 87, 196, 28, 34, 230, 44, 31, 86, 183, 67, 5, 102, 120, 89, 26, 53, 34, 62, 54, 30, 17, 58, 50, 65, 110, 21, 3, 77, 22, 11, 6, 1, 11, 7, 472, 66, 6, 1, 5, 26, 82, 50, 73, 17, 35, 47, 65, 137, 66, 3, 91, 29, 64, 1, 155, 27, 89, 31, 49, 176, 21, 43, 41, 82, 147, 13, 54, 25, 33, 45, 390, 54, 93, 26, 2, 70, 38, 18, 170, 11, 30, 44, 70, 3, 77, 73, 14, 32, 2, 46, 25, 178, 38, 75, 81, 2, 212, 9, 24, 36, 175, 71, 49, 3, 1, 65, 84, 40, 29, 162, 67, 116, 172, 119, 71, 208, 9, 72, 23, 29, 49, 103, 75, 4, 76, 132, 13, 180, 53, 44, 7, 98, 88, 169, 27, 3, 22, 64, 120, 84, 200, 52, 116, 13, 22, 76, 1, 27, 290, 185, 159, 8, 36, 62, 8, 3, 177, 88, 98, 41, 58, 25, 15, 145, 118, 36, 80, 105, 3, 4, 168, 88, 47, 23, 61, 6, 37, 184, 47, 167, 104, 248, 210, 33, 215, 158, 128, 24, 89, 37, 194, 115, 50, 128, 199, 30, 219, 187, 55, 255, 166, 103, 112, 83, 55, 101, 93, 84, 87, 29, 285, 132, 230, 92, 197, 233, 200, 23, 147, 170, 87, 59, 22, 62, 136, 48, 233, 42, 136, 220, 63, 153, 23, 112, 39, 421, 111, 589, 69, 100, 161, 145, 132, 43, 104, 180, 95, 208, 29, 167, 90, 223, 30, 168, 94, 230, 149, 131, 125, 57, 218, 88, 149, 84, 216, 78, 544, 63, 77, 142, 153, 205, 117, 40, 194, 32, 75, 131, 46, 154, 207, 47, 38, 230, 57, 24, 71, 393, 106, 143, 40, 77, 266, 147, 42, 316, 182, 396, 123, 533, 53, 111, 42, 171, 43, 164, 76, 15, 462, 49, 206, 129, 354, 163, 138, 96, 142, 101, 161, 68, 142, 103, 180, 130, 85, 178, 129, 47, 167, 171, 159, 283, 95, 88, 24, 186, 205, 199, 233, 140, 14, 199, 261, 176, 88, 41, 89, 101, 121, 347, 119, 197, 204, 179, 15, 344, 78, 227, 188, 82, 522, 139, 45, 108, 230, 184, 86, 104, 107, 117, 401, 87, 91, 192, 199, 48, 51, 168, 76, 136, 164, 21, 83, 28, 79, 131, 184, 64, 175, 30, 106, 129, 51, 224, 152, 78, 48, 118, 73, 105, 487, 18, 118, 60, 134, 220, 209, 134, 374, 33, 228, 164, 18, 68, 18, 109, 174, 218, 352, 482, 73, 76, 171, 35, 234, 180, 115, 126, 213, 233, 73, 216, 166, 193, 92, 75, 214, 175, 87, 102, 51, 198, 33, 150, 231, 213, 150, 215, 13, 143, 234, 168, 123, 86, 76, 146, 180, 79, 192, 159, 144, 21, 123, 20, 98, 228, 71, 191, 22, 186, 114, 134, 346, 16, 112, 79, 37, 86, 166, 198, 39, 35, 774, 215, 150, 126, 212, 45, 39, 62, 79, 217, 74, 16, 51, 99, 104, 106, 96, 85, 134, 18, 55, 67, 156, 200, 205, 210, 78, 93, 217, 69, 87, 16, 174, 72, 138, 74, 206, 235, 207, 118, 180, 126, 36, 61, 204, 208, 129, 85, 189, 142, 213, 144, 134, 200, 113, 201, 107, 220, 175, 11, 120, 56, 80, 110, 220, 110, 195, 74, 94, 86, 212, 63, 57, 56, 216, 169, 54, 137, 97, 137, 15, 144, 65, 193, 187, 73, 71, 23, 20, 95, 56, 115, 149, 207, 204, 61, 219, 127, 54, 24, 184, 232, 358, 348, 216, 233, 42, 157, 110, 145, 82, 214, 113, 233, 71, 188, 77, 52, 142, 137, 64, 44, 54, 31, 228, 162, 37, 70, 346, 55, 116, 92, 127, 150, 195, 127, 57, 231, 133, 63, 103, 108, 183, 144, 147, 119, 53, 51, 104, 119, 233, 23, 443, 90, 88, 209, 147, 98, 306, 111, 225, 601, 195, 108, 92, 27, 113, 175, 218, 187, 58, 213, 289, 110, 43, 458, 80, 160, 158, 193, 157, 114, 62, 363, 62, 161, 207, 177, 125, 158, 99, 79, 229, 219, 5, 99, 169, 234, 105, 12, 92, 147, 198, 173, 109, 93, 165, 63, 82, 16, 327, 72, 107, 114, 146, 177, 88, 175, 71, 161, 61, 116, 78, 183, 69, 125, 43, 360, 93, 62, 10, 91, 149, 188, 53, 119, 383, 169, 178, 96, 35, 134, 113, 209, 114, 229, 97, 115, 146, 139, 100, 54, 79, 110, 244, 160, 74, 461, 93, 123, 297, 104, 202, 73, 65, 54, 96, 32, 42, 646, 91, 52, 207, 128, 55, 19, 40, 115, 87, 163, 40, 166, 191, 429, 16, 159, 274, 68, 189, 153, 37, 216, 226, 138, 158, 92, 155, 135, 153, 31, 289, 99, 134, 41, 218, 139, 127, 184, 78, 30, 48, 226, 50, 226, 87, 390, 124, 225, 264, 139, 292, 142, 59, 110, 98, 52, 212, 111, 147, 25, 98, 230, 804, 221, 220, 80, 118, 31, 28, 81, 45, 34, 202, 157, 74, 177, 190, 100, 204, 57, 51, 107, 44, 117, 212, 129, 207, 98, 29, 51, 113, 60, 216, 223, 115, 70, 203, 185, 209, 158, 84, 79, 8, 214, 121, 85, 103, 95, 66, 55, 44, 164, 26, 10, 142, 50, 102, 346, 83, 25, 205, 96, 151, 19, 198, 148, 56, 78, 177, 208, 37, 235, 97, 132, 102, 168, 466, 47, 53, 79, 367, 164, 131, 229, 139, 81, 141, 204, 167, 150, 87, 49, 142, 101, 84, 233, 212, 124, 206, 84, 60, 17, 53, 109, 514, 69, 211, 193, 67, 120, 41, 275, 115, 76, 173, 146, 200, 55, 158, 189, 124, 234, 132, 178, 219, 103, 165, 162, 116, 142, 100, 54, 153, 144, 145, 194, 233, 47, 57, 162, 178, 215, 281, 77, 124, 186, 19, 75, 78, 140, 86, 208, 230, 155, 110, 118, 171, 109, 157, 221, 125, 31, 85, 86, 301, 106, 164, 14, 50, 178, 40, 223, 62, 85, 91, 217, 100, 82, 33, 81, 253, 24, 69, 176, 133, 137, 209, 34, 154, 64, 54, 82, 68, 38, 87, 129, 140, 17, 24, 133, 109, 58, 231, 61, 141, 121, 50, 117, 129, 155, 78, 168, 128, 232, 108, 131, 235, 149, 184, 207, 208, 147, 52, 168, 199, 205, 173, 76, 64, 188, 207, 59, 160, 103, 93, 166, 134, 96, 136, 121, 159, 155, 68, 238, 109, 112, 542, 75, 33, 52, 28, 54, 136, 108, 89, 66, 90, 64, 130, 223, 122, 19, 133, 81, 77, 138, 234, 34, 235, 103, 230, 181, 232, 65, 69, 119, 181, 134, 283, 101, 205, 79, 411, 94, 105, 80, 146, 72, 46, 24, 173, 21, 108, 128, 89, 48, 149, 191, 30, 73, 82, 63, 104, 224, 58, 222, 117, 31, 213, 22, 141, 459, 467, 84, 83, 36, 106, 89, 116, 49, 57, 192, 101, 186, 200, 217, 90, 759, 69, 228, 31, 122, 88, 118, 122, 133, 155, 148, 100, 203, 91, 63, 29, 158, 179, 194, 44, 14, 203, 205, 704, 220, 202, 149, 127, 206, 48, 78, 37, 90, 490, 227, 230, 42, 98, 138, 9, 21, 224, 220, 133, 105, 179, 29, 92, 579, 207, 40, 228, 132, 61, 55, 172, 93, 129, 159, 189, 20, 87, 398, 111, 219, 120, 588, 226, 90, 221, 199, 193, 261, 215, 181, 206, 165, 53, 355, 211, 47, 222, 215, 60, 524, 295, 106, 162, 196, 77, 195, 125, 135, 110, 36, 400, 509, 251, 174, 214, 336, 203, 92, 208, 292, 99, 370, 147, 272, 154, 83, 388, 51, 162, 235, 64, 636, 124, 173, 65, 586, 227, 654, 161, 112, 223, 190, 201, 156, 121, 223, 172, 223, 172, 217, 91, 455, 37, 233, 106, 256, 211, 163, 127, 65, 247, 154, 213, 132, 231, 175, 585, 74, 84, 235, 437, 228, 212, 67, 208, 58, 199, 197, 79, 412, 229, 337, 136, 459, 175, 212, 127, 440, 113, 209, 52, 109, 490, 170, 94, 431, 201, 425, 181, 794, 157, 150, 141, 185, 117, 441, 80, 45, 722, 67, 218, 178, 509, 174, 150, 98, 151, 102, 188, 71, 143, 137, 329, 309, 116, 544, 223, 119, 175, 317, 445, 352, 207, 142, 604, 351, 206, 452, 282, 219, 25, 234, 474, 178, 747, 165, 207, 200, 378, 885, 128, 233, 603, 203, 173, 354, 172, 302, 261, 171, 657, 613, 47, 131, 770, 194, 146, 123, 189, 157, 907, 104, 152, 617, 202, 235, 67, 184, 105, 140, 170, 25, 111, 201, 92, 152, 224, 161, 208, 109, 141, 156, 128, 325, 165, 113, 112, 178, 116, 222, 540, 78, 120, 234, 168, 358, 503, 139, 811, 51, 383, 232, 98, 76, 41, 122, 194, 282, 398, 623, 77, 108, 368, 89, 236, 215, 218, 309, 719, 252, 176, 333, 224, 215, 99, 136, 230, 182, 118, 170, 96, 466, 104, 182, 239, 230, 205, 226, 235, 161, 286, 198, 136, 283, 88, 297, 403, 215, 218, 170, 164, 34, 168, 49, 211, 229, 187, 306, 72, 208, 201, 493, 611, 136, 192, 99, 175, 161, 178, 260, 150, 151, 935, 225, 180, 243, 222, 50, 72, 77, 84, 347, 102, 49, 60, 149, 229, 160, 135, 136, 235, 221, 234, 137, 171, 227, 233, 223, 137, 159, 353, 138, 101, 208, 181, 93, 143, 75, 220, 352, 393, 119, 196, 224, 38, 163, 212, 211, 142, 196, 197, 148, 393, 209, 199, 284, 126, 203, 121, 355, 212, 38, 311, 124, 109, 124, 233, 150, 473, 202, 152, 90, 472, 176, 117, 90, 710, 319, 63, 199, 122, 216, 22, 168, 100, 204, 205, 96, 117, 34, 61, 98, 108, 145, 152, 327, 205, 151, 226, 230, 112, 442, 210, 330, 708, 781, 569, 608, 446, 206, 163, 229, 139, 224, 138, 714, 77, 228, 81, 112, 145, 230, 210, 120, 163, 37, 240, 219, 185, 182, 475, 310, 159, 102, 139, 237, 199, 132, 230, 356, 167, 126, 138, 154, 211, 145, 230, 203, 111, 181, 278, 201, 353, 100, 715, 142, 94, 242, 213, 763, 392, 221, 302, 958, 198, 159, 95, 47, 192, 176, 264, 356, 230, 238, 482, 125, 111, 550, 83, 204, 163, 231, 224, 204, 117, 428, 66, 162, 231, 194, 129, 988, 175, 171, 299, 231, 46, 156, 188, 319, 108, 115, 129, 153, 252, 339, 110, 146, 197, 69, 94, 28, 632, 192, 117, 203, 159, 222, 115, 408, 209, 212, 160, 123, 97, 217, 126, 176, 73, 652, 427, 409, 11, 127, 202, 227, 87, 210, 682, 210, 179, 154, 63, 170, 143, 223, 174, 232, 99, 230, 181, 214, 111, 155, 144, 213, 540, 176, 194, 684, 98, 131, 384, 112, 374, 74, 211, 156, 122, 97, 153, 648, 165, 121, 214, 234, 209, 27, 95, 229, 170, 234, 59, 229, 213, 523, 365, 280, 711, 166, 205, 181, 72, 232, 434, 187, 328, 141, 231, 161, 230, 45, 438, 117, 160, 56, 220, 200, 221, 190, 173, 97, 224, 483, 77, 360, 140, 535, 227, 477, 426, 147, 511, 231, 115, 211, 143, 178, 218, 137, 169, 106, 137, 591, 830, 232, 696, 156, 143, 32, 227, 204, 48, 531, 597, 234, 106, 188, 258, 188, 232, 206, 103, 200, 453, 131, 387, 228, 224, 103, 163, 432, 176, 73, 504, 231, 159, 74, 210, 208, 238, 171, 152, 96, 64, 235, 170, 99, 162, 130, 226, 58, 116, 476, 83, 140, 153, 413, 123, 833, 86, 42, 213, 112, 166, 127, 211, 153, 174, 127, 192, 229, 162, 571, 186, 151, 130, 229, 515, 113, 59, 80, 453, 277, 190, 385, 206, 232, 227, 211, 233, 202, 91, 179, 193, 223, 222, 712, 456, 158, 651, 233, 124, 74, 230, 207, 644, 101, 233, 230, 98, 133, 184, 750, 170, 116, 203, 182, 220, 161, 505, 231, 419, 340, 214, 217, 250, 155, 213, 209, 226, 215, 152, 148, 520, 182, 147, 296, 241, 212, 154, 249, 230, 538, 399, 131, 225, 201, 268, 180, 106, 187, 109, 221, 710, 183, 157, 174, 191, 217, 185, 229, 179, 41, 97, 234, 563, 207, 321, 59, 56, 202, 73, 365, 133, 166, 105, 679, 118, 113, 235, 109, 636, 67, 130, 212, 217, 160, 273, 47, 158, 168, 154, 90, 197, 73, 102, 162, 344, 226, 110, 225, 194, 68, 371, 76, 204, 135, 91, 204, 133, 219, 100, 208, 230, 291, 174, 217, 407, 224, 193, 215, 219, 177, 171, 780, 208, 214, 230, 83, 113, 688, 226, 212, 183, 136, 114, 185, 203, 105, 181, 209, 177, 179, 194, 269, 114, 118, 590, 151, 93, 85, 180, 118, 164, 215, 120, 67, 269, 155, 164, 302, 334, 77, 214, 95, 114, 372, 331, 173, 417, 128, 336, 218, 268, 320, 146, 126, 228, 191, 633, 551, 222, 209, 670, 188, 625, 94, 203, 125, 263, 62, 179, 92, 134, 136, 144, 95, 181, 209, 39, 130, 112, 128, 172, 372, 102, 404, 178, 33, 235, 113, 198, 831, 556, 217, 140, 170, 359, 118, 155, 66, 107, 203, 126, 209, 234, 227, 141, 804, 149, 235, 691, 227, 92, 170, 148, 203, 197, 166, 120, 204, 109, 89, 148, 306, 196, 202, 91, 45, 208, 221, 709, 362, 219, 157, 202, 564, 75, 177, 50, 119, 723, 231, 778, 120, 130, 172, 85, 50, 289, 520, 326, 131, 186, 60, 128, 664, 628, 54, 346, 155, 201, 101, 310, 162, 163, 175, 219, 114, 155, 738, 141, 353, 128, 595, 246, 182, 227, 230, 195, 417, 267, 241, 232, 179, 234, 808, 244, 165, 224, 377, 72, 645, 446, 163, 262, 234, 205, 197, 685, 221, 174, 42, 611, 667, 287, 186, 225, 573, 879, 94, 227, 523, 106, 786, 279, 320, 156, 187, 734, 89, 177, 467, 65, 835, 180, 400, 143, 630, 370, 706, 210, 149, 253, 490, 222, 220, 166, 345, 224, 234, 174, 324, 132, 706, 56, 326, 137, 321, 215, 226, 165, 921, 258, 195, 287, 140, 492, 214, 627, 187, 89, 293, 497, 275, 216, 140, 233, 70, 213, 377, 122, 545, 307, 358, 172, 827, 181, 627, 172, 592, 161, 230, 123, 136, 575, 233, 134, 667, 217, 576, 198, 975, 395, 159, 270, 222, 139, 510, 139, 107, 999, 114, 219, 185, 536, 273, 152, 125, 227, 201, 207, 169, 208, 212, 583, 735, 125, 951, 248, 183, 537, 421, 513, 404, 454, 164, 842, 485, 225, 748, 486, 310, 65, 362, 870, 309, 932, 231, 624, 478, 448, 956, 171, 328, 654, 666, 221, 581, 232, 650, 454, 270, 724, 819, 99, 177, 817, 216, 218, 126, 210, 205, 920, 364, 177, 930, 205, 610, 133, 195, 129, 192, 225, 82, 120, 301, 202, 166, 321, 228, 326, 123, 543, 193, 151, 342, 226, 136, 148, 647, 465, 245, 928, 82, 230, 318, 342, 392, 932, 157, 859, 68, 742, 296, 146, 112, 127, 223, 203, 437, 557, 805, 137, 416, 374, 105, 332, 773, 222, 790, 916, 419, 192, 443, 311, 337, 498, 218, 519, 189, 135, 216, 113, 512, 119, 193, 831, 233, 633, 395, 266, 416, 497, 209, 322, 363, 101, 515, 863, 584, 468, 203, 204, 106, 189, 86, 230, 389, 318, 313, 88, 222, 232, 594, 677, 146, 211, 234, 336, 206, 218, 330, 399, 231, 947, 511, 207, 380, 308, 134, 133, 86, 88, 362, 214, 108, 94, 549, 652, 459, 167, 165, 572, 908, 571, 164, 203, 361, 284, 390, 200, 190, 672, 231, 156, 544, 278, 94, 217, 150, 380, 391, 578, 163, 219, 277, 43, 411, 219, 287, 379, 503, 232, 244, 488, 278, 214, 414, 566, 271, 122, 470, 357, 154, 642, 164, 232, 156, 421, 229, 712, 206, 468, 168, 640, 196, 120, 131, 807, 371, 70, 232, 194, 233, 50, 203, 146, 478, 307, 194, 160, 101, 209, 182, 187, 191, 158, 678, 230, 648, 576, 456, 174, 524, 254, 584, 725, 935, 594, 665, 798, 507, 275, 519, 255, 479, 238, 760, 144, 230, 97, 299, 179, 497, 452, 144, 744, 61, 471, 220, 616, 220, 566, 990, 225, 752, 152, 458, 209, 153, 403, 439, 220, 143, 210, 379, 436, 237, 333, 216, 161, 201, 325, 202, 903, 201, 904, 468, 130, 497, 373, 898, 422, 246, 385, 1016, 216, 211, 218, 154, 199, 574, 771, 521, 568, 424, 597, 160, 229, 1007, 144, 531, 165, 245, 230, 469, 225, 718, 159, 392, 268, 714, 201, 995, 209, 205, 549, 542, 104, 206, 201, 640, 126, 147, 148, 221, 451, 542, 191, 185, 217, 172, 187, 56, 675, 300, 247, 226, 172, 230, 211, 600, 256, 229, 207, 138, 150, 685, 200, 213, 225, 849, 962, 845, 151, 130, 230, 500, 203, 218, 968, 216, 594, 354, 169, 212, 163, 333, 227, 239, 126, 878, 210, 715, 248, 209, 267, 277, 886, 235, 230, 988, 194, 149, 424, 150, 420, 81, 219, 176, 182, 105, 412, 658, 253, 752, 444, 573, 412, 48, 137, 233, 223, 322, 134, 234, 656, 905, 514, 694, 738, 230, 394, 223, 80, 428, 638, 508, 522, 193, 495, 183, 231, 575, 496, 189, 181, 214, 466, 230, 357, 225, 182, 103, 232, 533, 171, 531, 183, 845, 232, 606, 515, 160, 764, 350, 219, 561, 231, 596, 396, 183, 242, 128, 188, 681, 907, 328, 786, 170, 145, 78, 728, 228, 66, 735, 702, 396, 107, 231, 303, 235, 256, 211, 140, 643, 700, 464, 407, 298, 401, 123, 196, 670, 732, 82, 718, 568, 217, 104, 337, 230, 617, 274, 201, 210, 242, 257, 227, 169, 215, 135, 300, 156, 131, 691, 104, 195, 186, 415, 202, 872, 93, 57, 624, 163, 173, 190, 314, 183, 228, 217, 216, 422, 210, 771, 217, 219, 152, 635, 841, 355, 197, 127, 634, 740, 220, 650, 226, 322, 235, 229, 261, 213, 122, 187, 194, 494, 392, 947, 684, 234, 686, 311, 190, 294, 353, 255, 871, 477, 299, 423, 224, 148, 185, 835, 214, 143, 214, 202, 397, 168, 607, 288, 451, 590, 276, 231, 419, 167, 651, 216, 285, 216, 160, 360, 697, 195, 154, 313, 611, 243, 375, 388, 541, 625, 929, 259, 318, 304, 279, 289, 132, 226, 203, 487, 749, 203, 340, 296, 566, 230, 198, 235, 205, 111, 108, 683, 577, 221, 382, 204, 95, 211, 169, 540, 189, 445, 208, 887, 225, 203, 680, 618, 809, 138, 151, 562, 240, 162, 456, 170, 161, 329, 232, 180, 200, 144, 295, 180, 364, 546, 172, 236, 218, 439, 401, 100, 511, 171, 124, 235, 425, 235, 176, 380, 590, 314, 175, 627, 490, 423, 797, 347, 480, 381, 196, 931, 325, 428, 608, 122, 121, 724, 527, 214, 230, 223, 164, 214, 207, 168, 203, 377, 218, 481, 209, 841, 330, 128, 759, 376, 221, 211, 220, 133, 205, 235, 221, 152, 565, 173, 212, 434, 599, 341, 355, 151, 191, 649, 547, 198, 635, 207, 668, 242, 276, 695, 177, 141, 251, 413, 683, 587, 231, 368, 876, 304, 659, 211, 433, 196, 343, 115, 206, 97, 222, 291, 151, 107, 234, 450, 75, 148, 145, 137, 307, 493, 135, 504, 206, 59, 508, 232, 218, 881, 833, 431, 143, 230, 482, 196, 182, 117, 220, 217, 158, 210, 387, 282, 562, 901, 207, 614, 894, 679, 368, 185, 214, 510, 295, 281, 212, 419, 212, 591, 206, 383, 230, 220, 216, 122, 225, 337, 870, 629, 522, 217, 208, 681, 115, 243, 683, 172, 927, 266, 810, 123, 144, 182, 215, 52, 359, 572, 609, 211, 520, 440, 156, 737, 669, 211, 631, 229, 518, 111, 620, 232, 216, 215, 484, 313, 190, 1013, 179, 604, 225, 749, 760, 339, 262, 473, 210, 620, 812, 858, 563, 245, 241, 854, 266, 192, 304, 564, 103, 0, 505, 192, 349, 443, 223, 204, 807, 223, 234, 205, 896, 808, 469, 309, 567, 698, 972, 183, 246, 909, 226, 832, 543, 535, 173, 208, 777, 219, 196, 523, 97, 997, 211, 556, 183, 839, 560, 0, 224, 198, 506, 514, 632, 226, 852, 625, 746, 235, 343, 474, 495, 1022, 173, 725, 450, 669, 613, 345, 298, 1015, 293, 223, 517, 837, 735, 262, 0, 232, 93, 501, 821, 637, 230, 202, 250, 106, 458, 713, 132, 726, 524, 567, 191, 859, 232, 824, 219, 888, 333, 472, 779, 180, 917, 372, 161, 730, 327, 0, 235, 0, 445, 206, 291, 233, 191, 622, 252, 114, 1015, 119, 389, 207, 692, 363, 190, 126, 413, 541, 219, 221, 228, 271, 836, 752, 145, 1013, 682, 222, 757, 707, 982, 856, 494, 474, 844, 580, 400, 1020, 829, 454, 95, 562, 984, 502, 998, 406, 779, 684, 479, 0, 208, 373, 663, 776, 516, 830, 335, 720, 651, 314, 0, 957, 204, 693, 848, 260, 489, 460, 217, 434, 955, 536, 204, 0, 396, 909, 135, 234, 187, 222, 270, 102, 135, 335, 316, 555, 492, 385, 486, 140, 585, 211, 184, 851, 232, 167, 215, 745, 471, 253, 972, 105, 388, 967, 477, 788, 977, 267, 971, 473, 788, 962, 204, 167, 209, 226, 275, 562, 869, 863, 186, 583, 519, 141, 780, 822, 232, 994, 982, 770, 237, 934, 441, 349, 717, 224, 800, 672, 201, 512, 186, 944, 187, 228, 0, 342, 665, 581, 723, 435, 629, 290, 614, 612, 188, 1020, 874, 0, 571, 232, 210, 209, 660, 214, 347, 449, 443, 953, 219, 343, 463, 643, 699, 190, 232, 328, 559, 231, 223, 553, 902, 541, 995, 561, 232, 802, 736, 201, 581, 157, 314, 403, 218, 199, 189, 550, 883, 945, 226, 417, 703, 950, 617, 254, 905, 526, 407, 432, 222, 294, 818, 378, 225, 780, 511, 101, 348, 172, 664, 718, 671, 186, 828, 641, 145, 463, 361, 366, 418, 621, 235, 428, 550, 370, 216, 968, 770, 608, 225, 899, 409, 224, 748, 235, 549, 329, 447, 492, 774, 254, 616, 228, 766, 197, 231, 195, 820, 510, 84, 386, 893, 236, 85, 288, 213, 600, 360, 235, 226, 105, 217, 210, 189, 408, 178, 755, 433, 825, 775, 558, 208, 614, 576, 811, 742, 0, 964, 683, 0, 583, 666, 551, 307, 574, 426, 857, 179, 371, 133, 673, 221, 569, 580, 229, 858, 82, 574, 272, 751, 539, 0, 0, 234, 903, 231, 929, 233, 290, 453, 707, 221, 234, 483, 593, 478, 615, 440, 426, 664, 211, 610, 385, 1021, 356, 0, 751, 201, 601, 596, 978, 579, 433, 524, 0, 222, 872, 231, 181, 206, 719, 1012, 703, 617, 515, 663, 222, 405, 0, 205, 852, 228, 310, 867, 559, 599, 753, 228, 605, 274, 809, 210, 996, 231, 232, 756, 645, 147, 429, 488, 716, 138, 234, 192, 431, 880, 720, 210, 223, 553, 186, 214, 182, 697, 616, 729, 530, 184, 507, 785, 690, 852, 249, 260, 195, 250, 749, 600, 223, 521, 921, 0, 0, 198, 210, 397, 612, 312, 235, 0, 496, 676, 448, 0, 455, 538, 726, 369, 280, 131, 1017, 487, 726, 257, 501, 519, 425, 910, 350, 466, 0, 331, 167, 565, 189, 1003, 132, 234, 397, 211, 116, 618, 803, 835, 849, 457, 668, 615, 139, 166, 320, 864, 506, 153, 464, 945, 942, 685, 848, 773, 498, 457, 479, 115, 793, 645, 826, 596, 212, 587, 442, 361, 644, 603, 393, 184, 704, 527, 900, 411, 230, 216, 130, 449, 620, 225, 762, 191, 1024, 258, 797, 527, 202, 979, 465, 476, 643, 528, 922, 502, 491, 829, 189, 379, 887, 0, 665, 824, 219, 386, 88, 817, 302, 102, 849, 0, 641, 149, 335, 692, 334, 277, 652, 145, 691, 778, 624, 605, 410, 590, 151, 204, 693, 758, 93, 856, 571, 243, 122, 744, 232, 713, 308, 206, 840, 334, 599, 475, 213, 231, 176, 416, 215, 198, 919, 125, 538, 245, 438, 359, 1010, 171, 208, 837, 225, 180, 236, 499, 190, 232, 383, 235, 788, 230, 981, 239, 489, 185, 772, 1000, 539, 202, 155, 0, 983, 232, 714, 402, 794, 365, 324, 483, 222, 146, 283, 197, 649, 737, 988, 796, 325, 984, 340, 218, 298, 480, 442, 900, 484, 315, 721, 696, 173, 206, 990, 351, 151, 215, 221, 559, 218, 675, 858, 853, 779, 463, 251, 549, 206, 750, 293, 406, 234, 209, 733, 799, 305, 235, 647, 891, 326, 889, 731, 947, 799, 1023, 295, 658, 491, 773, 455, 191, 227, 224, 568, 976, 233, 371, 570, 611, 784, 367, 286, 408, 160, 233, 718, 944, 230, 570, 430, 288, 227, 232, 807, 438, 607, 218, 981, 231, 230, 868, 671, 966, 503, 154, 911, 508, 195, 461, 195, 201, 460, 273, 286, 338, 158, 375, 427, 692, 814, 732, 366, 474, 746, 779, 369, 630, 214, 192, 312, 502, 607, 179, 556, 828, 484, 202, 761, 644, 525, 832, 649, 639, 977, 228, 1001, 370, 504, 747, 175, 150, 823, 654, 258, 368, 570, 230, 588, 223, 205, 496, 384, 583, 674, 495, 1012, 444, 190, 0, 486, 263, 451, 224, 222, 669, 279, 446, 205, 713, 375, 231, 991, 655, 517, 509, 156, 206, 704, 675, 305, 731, 227, 732, 629, 739, 819, 201, 165, 397, 619, 753, 811, 234, 815, 0, 882, 786, 224, 735, 304, 661, 121, 235, 221, 520, 292, 225, 197, 580, 485, 235, 193, 155, 185, 762, 783, 220, 558, 766, 121, 552, 567, 301, 1009, 0, 847, 156, 631, 516, 382, 298, 224, 293, 493, 167, 228, 408, 376, 629, 955, 387, 650, 0, 878, 800, 711, 220, 532, 464, 439, 305, 660, 446, 713, 637, 414, 444, 228, 221, 485, 376, 708, 956, 814, 823, 221, 387, 836, 120, 556, 785, 312, 0, 787, 814, 124, 191, 192, 223, 381, 577, 632, 677, 578, 755, 671, 199, 963, 983, 214, 896, 230, 992, 128, 975, 382, 227, 263, 606, 414, 204, 0, 214, 966, 324, 0, 800, 344, 737, 661, 686, 0, 819, 952, 626, 884, 680, 948, 793, 513, 331, 591, 153, 0, 0, 213, 840, 545, 342, 207, 954, 418, 349, 210, 0, 847, 698, 662, 677, 873, 1012, 205, 641, 0, 235, 0, 738, 0, 418, 292, 0, 418, 202, 631, 182, 0, 423, 631, 244, 0, 689, 0, 444, 554, 842, 954, 0, 230, 921, 697, 942, 616, 687, 649, 553, 0, 294, 802, 989, 740, 639, 491, 498, 0, 470, 377, 908, 940, 743, 708, 0, 259, 231, 602, 964, 758, 548, 259, 399, 169, 545, 867, 198, 0, 938, 737, 865, 1003, 499, 950, 229, 0, 801, 920, 907, 214, 0, 686, 225, 0, 447, 0, 247, 0, 555, 420, 979, 276, 666, 716, 523, 125, 0, 157, 689, 234, 0, 404, 196, 232, 595, 834, 532, 233, 338, 557, 1002, 918, 257, 0, 816, 413, 836, 0, 0, 0, 731, 483, 924, 593, 475, 0, 937, 875, 119, 821, 0, 743, 0, 860, 782, 996, 667, 0, 445, 822, 1022, 835, 577, 0, 367, 938, 980, 705, 0, 0, 220, 736, 0, 457, 825, 507, 222, 734, 0, 830, 259, 0, 815, 942, 403, 240, 672, 287, 410, 219, 623, 359, 378, 0, 999, 809, 0, 213, 1001, 290, 233, 0, 429, 201, 230, 865, 897, 604, 0, 166, 634, 0, 630, 1005, 0, 639, 0, 754, 963, 0, 548, 183, 227, 339, 526, 601, 0, 0, 327, 591, 789, 163, 1014, 998, 410, 0, 0, 0, 375, 0, 939, 898, 894, 354, 946, 714, 215, 577, 193, 989, 433, 498, 0, 449, 711, 804, 846, 757, 0, 407, 638, 0, 373, 0, 0, 0, 0, 764, 213, 311, 694, 271, 821, 610, 458, 963, 435, 781, 637, 0, 0, 233, 568, 435, 582, 391, 233, 992, 925, 544, 0, 919, 233, 958, 876, 224, 847, 318, 561, 778, 455, 220, 294, 803, 0, 0, 336, 454, 755, 974, 1012, 680, 0, 776, 871, 530, 560, 324, 844, 574, 597, 834, 606, 160, 661, 176, 742, 806, 694, 366, 901, 918, 267, 850, 613, 432, 642, 1004, 384, 787, 658, 449, 529, 0, 896, 738, 622, 0, 657, 823, 913, 636, 578, 440, 610, 570, 0, 502, 878, 322, 0, 330, 794, 202, 928, 893, 96, 528, 0, 950, 202, 576, 886, 687, 442, 510, 316, 125, 315, 349, 206, 427, 210, 973, 641, 0, 790, 787, 231, 818, 0, 812, 0, 0, 0, 0, 0, 0, 674, 613, 364, 854, 879, 966, 200, 782, 152, 848, 558, 829, 934, 420, 860, 233, 784, 357, 753, 602, 0, 0, 386, 1019, 271, 0, 272, 588, 767, 755, 463, 315, 810, 0, 949, 902, 460, 841, 708, 225, 630, 818, 0, 973, 0, 886, 234, 874, 998, 0, 0, 857, 638, 0, 225, 880, 673, 185, 384, 897, 0, 902, 679, 0, 0, 228, 505, 0, 220, 999, 276, 506, 967, 895, 682, 0, 687, 865, 736, 844, 599, 0, 308, 639, 853, 766, 148, 792, 671, 943, 213, 239, 480, 555, 896, 991, 288, 312, 741, 216, 222, 265, 0, 0, 754, 698, 436, 518, 822, 745, 0, 709, 795, 453, 550, 820, 0, 334, 618, 0, 0, 0, 205, 306, 895, 947, 391, 329, 0, 706, 979, 899, 0, 702, 659, 904, 958, 394, 212, 0, 879, 934, 976, 669, 811, 743, 0, 528, 532, 0, 653, 193, 0, 716, 0, 174, 365, 432, 212, 184, 902, 0, 0, 883, 489, 912, 715, 213, 204, 402, 920, 777, 206, 529, 1003, 0, 846, 0, 0, 606, 1009, 730, 203, 806, 0, 897, 0, 437, 695, 650, 604, 684, 0, 646, 213, 767, 563, 917, 535, 434, 721, 363, 477, 635, 264, 1015, 255, 0, 448, 959, 0, 321, 0, 761, 696, 705, 598, 1004, 662, 890, 911, 280, 452, 930, 0, 747, 0, 872, 786, 134, 0, 772, 173, 0, 0, 743, 527, 546, 899, 911, 628, 733, 272, 717, 1006, 940, 647, 861, 640, 465, 533, 0, 884, 97, 0, 886, 486, 450, 978, 282, 887, 665, 208, 858, 623, 968, 677, 240, 286, 189, 836, 228, 227, 959, 215, 765, 526, 928, 546, 0, 186, 621, 913, 331, 265, 525, 569, 595, 262, 579, 503, 968, 724, 0, 756, 518, 200, 794, 0, 855, 216, 507, 0, 0, 343, 0, 674, 0, 558, 791, 709, 589, 695, 398, 224, 709, 898, 0, 900, 345, 0, 782, 648, 912, 857, 720, 0, 561, 394, 894, 908, 210, 680, 0, 565, 761, 431, 234, 573, 417, 678, 0, 0, 901, 530, 265, 848, 300, 0, 462, 451, 404, 229, 0, 0, 634, 585, 0, 0, 699, 0, 1018, 969, 0, 0, 889, 1007, 659, 0, 655, 584, 229, 235, 910, 0, 379, 441, 0, 860, 854, 866, 493, 647, 952, 567, 869, 0, 512, 0, 538, 945, 601, 412, 0, 655, 701, 596, 0, 233, 234, 952, 925, 0, 757, 203, 970, 916, 247, 806, 215, 216, 564, 352, 569, 471, 222, 405, 690, 960, 863, 875, 543, 494, 769, 837, 742, 792, 769, 226, 436, 843, 653, 227, 609, 907, 0, 317, 951, 906, 0, 0, 700, 760, 0, 231, 0, 389, 751, 773, 218, 235, 0, 915, 462, 420, 740, 501, 685, 415, 536, 928, 801, 757, 750, 657, 0, 859, 224, 0, 802, 602, 728, 521, 536, 745, 308, 572, 380, 0, 715, 415, 0, 976, 1014, 0, 221, 481, 985, 765, 548, 777, 402, 791, 863, 845, 0, 212, 185, 423, 749, 0, 0, 481, 971, 0, 897, 851, 226, 1019, 350, 0, 187, 559, 228, 547, 467, 338, 394, 867, 642, 369, 227, 213, 470, 960, 861, 249, 806, 991, 148, 882, 609, 626, 0, 0, 941, 162, 768, 0, 690, 643, 234, 303, 676, 681, 382, 644, 911, 829, 0, 745, 844, 0, 930, 994, 785, 231, 939, 798, 521, 716, 728, 615, 1002, 732, 816, 795, 300, 635, 532, 1008, 840, 0, 885, 932, 378, 871, 0, 358, 768, 892, 500, 0, 796, 956, 129, 815, 207, 280, 0, 706, 838, 833, 803, 0, 1007, 201, 0, 0, 692, 0, 452, 0, 140, 0, 722, 320, 427, 705, 605, 534, 0, 232, 0, 372, 0, 903, 554, 978, 781, 791, 0, 0, 0, 0, 0, 840, 0, 0, 701, 430, 0, 201, 0, 0, 357, 843, 0, 476, 589, 0, 464, 983, 662, 0, 0, 0, 0, 725, 0, 0, 315, 752, 0, 264, 0, 0, 0, 798, 429, 0, 889, 323, 880, 319, 0, 832, 699, 846, 0, 0, 0, 827, 581, 0, 0, 0, 319, 0, 765, 961, 633, 754, 0, 0, 0, 686, 0, 1000, 0, 789, 689, 676, 0, 0, 424, 0, 955, 0, 963, 0, 701, 529, 729, 0, 850, 0, 405, 817, 204, 618, 0, 565, 0, 0, 0, 898, 0, 1010, 0, 395, 0, 967, 991, 940, 228, 0, 870, 248, 0, 707, 0, 661, 0, 730, 459, 0, 409, 997, 0, 961, 512, 0, 465, 799, 557, 0, 787, 471, 254, 807, 0, 748, 448, 534, 1013, 0, 0, 284, 0, 0, 540, 0, 0, 0, 0, 975, 700, 0, 0, 833, 0, 0, 884, 299, 874, 0, 0, 0, 0, 0, 0, 0, 0, 529, 1017, 0, 0, 663, 0, 810, 0, 0, 0, 0, 0, 241, 1014, 0, 656, 0, 592, 252, 772, 0, 0, 505, 0, 994, 0, 482, 552, 849, 341, 676, 795, 874, 589, 508, 0, 0, 0, 0, 231, 1013, 595, 553, 0, 467, 281, 332, 0, 0, 776, 0, 235, 866, 0, 919, 0, 0, 946, 0, 784, 0, 0, 734, 622, 284, 364, 997, 0, 0, 0, 345, 0, 0, 210, 0, 0, 821, 0, 0, 0, 545, 0, 0, 1005, 912, 395, 1021, 883, 614, 603, 207, 0, 531, 959, 0, 586, 822, 941, 900, 977, 0, 414, 842, 0, 977, 0, 0, 0, 0, 792, 316, 323, 817, 834, 985, 769, 488, 0, 892, 995, 674, 0, 0, 296, 751, 922, 637, 557, 398, 0, 0, 931, 0, 986, 281, 0, 0, 233, 948, 460, 594, 0, 496, 227, 861, 0, 0, 0, 481, 506, 0, 0, 0, 843, 0, 957, 954, 739, 696, 668, 0, 0, 623, 0, 0, 218, 0, 195, 1008, 0, 0, 517, 941, 0, 587, 0, 1021, 974, 782, 0, 580, 0, 0, 797, 555, 0, 0, 869, 989, 0, 695, 998, 0, 760, 660, 967, 746, 628, 0, 790, 965, 924, 0, 495, 0, 270, 0, 0, 108, 0, 0, 1001, 406, 868, 0, 729, 0, 923, 808, 234, 457, 425, 489, 478, 469, 0, 0, 0, 815, 846, 313, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 916, 981, 0, 381, 939, 305, 0, 0, 1016, 0, 945, 891, 317, 0, 587, 0, 722, 0, 0, 525, 0, 543, 0, 551, 816, 0, 0, 582, 756, 1006, 0, 0, 1023, 488, 0, 0, 426, 0, 842, 0, 1023, 0, 0, 410, 0, 0, 0, 0, 883, 0, 0, 335, 905, 0, 619, 934, 936, 0, 0, 879, 0, 0, 273, 632, 0, 246, 0, 341, 924, 1002, 0, 1011, 0, 996, 0, 0, 0, 914, 0, 522, 800, 0, 864, 178, 839, 904, 0, 456, 406, 789, 727, 0, 0, 775, 935, 812, 796, 339, 691, 0, 0, 949, 0, 0, 648, 0, 0, 0, 767, 827, 516, 694, 0, 0, 702, 929, 0, 0, 0, 285, 0, 0, 0, 461, 537, 0, 915, 986, 948, 0, 976, 993, 0, 1008, 673, 323, 0, 0, 0, 0, 690, 0, 0, 0, 627, 0, 0, 882, 813, 0, 866, 0, 405, 487, 582, 492, 188, 904, 0, 0, 0, 992, 0, 798, 219, 350, 666, 0, 975, 438, 0, 0, 0, 0, 0, 0, 986, 0, 936, 0, 877, 0, 0, 0, 1016, 812, 652, 0, 0, 0, 0, 220, 814, 0, 927, 724, 864, 912, 391, 839, 0, 424, 0, 542, 0, 509, 0, 0, 501, 0, 993, 0, 959, 890, 0, 0, 0, 0, 578, 485, 0, 0, 892, 0, 0, 0, 257, 0, 0, 906, 0, 0, 0, 0, 778, 0, 0, 0, 938, 957, 986, 0, 0, 0, 0, 864, 951, 634, 0, 990, 167, 0, 972, 499, 748, 0, 958, 0, 0, 303, 868, 1011, 0, 860, 338, 704, 230, 0, 421, 332, 0, 374, 882, 990, 0, 805, 0, 439, 688, 0, 607, 469, 974, 937, 723, 763, 1008, 825, 987, 845, 0, 1009, 592, 534, 0, 0, 0, 229, 537, 0, 0, 348, 0, 1024, 0, 793, 875, 731, 663, 741, 711, 476, 980, 953, 0, 0, 447, 0, 0, 888, 926, 1019, 733, 0, 792, 0, 0, 0, 344, 744, 0, 867, 824, 513, 468, 721, 0, 0, 0, 0, 0, 1024, 573, 0, 435, 0, 0, 475, 753, 552, 0, 0, 0, 1014, 0, 0, 1010, 0, 0, 0, 0, 0, 0, 0, 765, 0, 805, 881, 818, 400, 0, 0, 624, 640, 0, 0, 0, 1018, 964, 906, 0, 744, 0, 0, 841, 0, 552, 952, 970, 703, 0, 710, 0, 657, 0, 702, 593, 0, 0, 0, 922, 906, 0, 0, 263, 0, 415, 638, 801, 612, 0, 774, 268, 615, 729, 0, 0, 984, 693, 620, 0, 0, 802, 909, 839, 621, 712, 868, 730, 682, 0, 0, 0, 356, 1001, 0, 0, 0, 767, 0, 0, 992, 0, 625, 910, 785, 291, 256, 0, 0, 539, 662, 763, 600, 723, 603, 727, 0, 0, 0, 0, 688, 0, 881, 301, 0, 0, 687, 0, 925, 554, 0, 608, 678, 699, 0, 0, 619, 0, 0, 0, 0, 504, 873, 0, 0, 0, 0, 535, 0, 0, 0, 0, 226, 188, 974, 0, 0, 0, 651, 0, 0, 993, 0, 231, 0, 890, 0, 197, 668, 260, 678, 768, 598, 656, 0, 939, 1011, 303, 361, 602, 0, 0, 494, 0, 0, 278, 0, 664, 923, 0, 0, 0, 653, 1010, 0, 962, 783, 279, 0, 717, 0, 628, 0, 0, 0, 0, 0, 0, 0, 0, 0, 856, 1015, 989, 0, 0, 0, 0, 703, 0, 750, 0, 825, 681, 734, 1000, 0, 891, 0, 0, 1004, 808, 927, 0, 579, 0, 0, 995, 0, 877, 0, 174, 0, 208, 660, 0, 0, 0, 0, 888, 0, 0, 297, 0, 0, 762, 0, 913, 0, 265, 0, 0, 409, 949, 979, 788, 598, 0, 402, 0, 926, 0, 0, 733, 0, 949, 873, 0, 0, 0, 0, 0, 0, 0, 0, 838, 719, 0, 229, 0, 0, 0, 0, 0, 560, 626, 0, 913, 0, 789, 0, 0, 0, 0, 891, 0, 0, 656, 994, 0, 269, 0, 0, 0, 0, 484, 0, 0, 340, 0, 548, 0, 0, 0, 0, 0, 0, 0, 1009, 759, 0, 0, 0, 323, 0, 0, 0, 892, 0, 0, 0, 0, 783, 0, 0, 0, 0, 851, 705, 0, 0, 887, 0, 0, 0, 1005, 0, 813, 901, 0, 0, 0, 0, 572, 0, 389, 0, 0, 801, 0, 0, 0, 983, 0, 0, 0, 479, 0, 0, 0, 0, 250, 0, 980, 914, 0, 0, 0, 855, 0, 0, 775, 0, 411, 0, 0, 0, 654, 0, 534, 0, 0, 0, 0, 473, 0, 914, 0, 893, 470, 541, 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, 956, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 285, 0, 0, 881, 0, 658, 728, 0, 0, 0, 838, 0, 0, 0, 0, 719, 1019, 530, 964, 859, 970, 0, 936, 0, 0, 0, 0, 430, 0, 954, 621, 0, 872, 317, 517, 0, 0, 0, 0, 376, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 866, 944, 422, 938, 0, 0, 0, 0, 547, 0, 0, 499, 0, 0, 885, 0, 0, 0, 0, 0, 0, 0, 0, 667, 0, 903, 645, 0, 586, 0, 0, 0, 0, 689, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 513, 837, 925, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 953, 0, 932, 0, 0, 612, 0, 0, 0, 0, 0, 0, 0, 0, 386, 0, 0, 764, 0, 619, 274, 870, 0, 0, 0, 758, 0, 0, 0, 0, 978, 0, 0, 0, 0, 851, 984, 0, 0, 655, 0, 0, 416, 0, 461, 0, 0, 0, 585, 0, 0, 0, 0, 0, 0, 0, 0, 1020, 0, 0, 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, 946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 437, 0, 0, 110, 0, 0, 0, 566, 0, 0, 0, 0, 944, 916, 251, 646, 0, 888, 0, 721, 0, 0, 0, 0, 0, 865, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 518, 0, 622, 0, 0, 0, 0, 0, 0, 961, 0, 688, 0, 0, 0, 0, 0, 0, 780, 0, 741, 0, 0, 0, 670, 803, 1018, 0, 0, 0, 0, 0, 0, 771, 0, 966, 0, 0, 0, 0, 926, 0, 0, 0, 0, 0, 0, 0, 1006, 0, 0, 820, 0, 0, 0, 0, 0, 0, 0, 500, 973, 0, 480, 0, 670, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 747, 0, 0, 0, 341, 0, 0, 0, 514, 853, 1021, 0, 0, 0, 831, 0, 0, 917, 759, 862, 0, 0, 0, 0, 0, 0, 0, 0, 0, 810, 0, 0, 0, 0, 0, 805, 0, 0, 0, 0, 0, 0, 0, 0, 0, 592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 441, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 936, 0, 0, 923, 0, 1023, 820, 698, 740, 196, 0, 0, 0, 0, 0, 0, 0, 636, 659, 957, 0, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 982, 0, 0, 0, 0, 0, 0, 0, 672, 0, 0, 0, 0, 775, 0, 0, 0, 0, 943, 0, 500, 0, 0, 981, 0, 554, 0, 855, 0, 0, 722, 0, 0, 0, 0, 0, 0, 0, 0, 0, 756, 0, 0, 0, 0, 0, 0, 0, 422, 0, 0, 917, 0, 0, 0, 0, 0, 0, 0, 0, 960, 0, 0, 0, 0, 0, 0, 0, 969, 1006, 0, 0, 202, 0, 0, 1016, 0, 0, 0, 0, 0, 462, 0, 0, 0, 933, 348, 861, 362, 0, 909, 528, 0, 551, 0, 0, 0, 0, 0, 0, 741, 0, 982, 873, 0, 0, 0, 953, 0, 0, 0, 876, 0, 0, 646, 951, 0, 0, 0, 269, 564, 0, 0, 774, 0, 0, 0, 910, 980, 0, 0, 0, 0, 862, 0, 0, 0, 0, 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 899, 0, 0, 0, 0, 813, 679, 0, 0, 0, 0, 0, 0, 0, 894, 0, 1017, 0, 0, 0, 965, 598, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 971, 857, 609, 0, 0, 889, 0, 0, 0, 0, 0, 985, 962, 0, 933, 0, 0, 0, 0, 890, 0, 1011, 0, 0, 914, 0, 0, 0, 970, 726, 0, 0, 0, 0, 927, 0, 0, 539, 0, 771, 772, 0, 0, 0, 969, 0, 0, 0, 0, 0, 0, 0, 875, 0, 0, 987, 0, 942, 823, 781, 0, 0, 0, 0, 0, 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 937, 918, 0, 0, 0, 790, 0, 0, 871, 0, 828, 0, 0, 0, 0, 1004, 0, 0, 367, 0, 0, 0, 0, 0, 0, 0, 0, 701, 725, 0, 0, 915, 0, 0, 0, 0, 965, 0, 0, 0, 0, 0, 850, 0, 0, 0, 0, 390, 712, 0, 0, 0, 0, 791, 0, 0, 0, 0, 770, 0, 0, 0, 633, 0, 584, 0, 0, 0, 831, 0, 0, 0, 921, 946, 754, 0, 0, 533, 0, 0, 919, 0, 0, 0, 0, 0, 0, 675, 0, 0, 0, 0, 693, 0, 926, 0, 999, 0, 0, 0, 0, 0, 0, 0, 0, 0, 869, 0, 0, 0, 0, 0, 0, 973, 0, 0, 0, 0, 878, 1018, 1020, 0, 0, 0, 0, 0, 855, 0, 0, 987, 0, 0, 0, 0, 0, 0, 222, 0, 430, 853, 0, 0, 0, 0, 1007, 0, 0, 351, 0, 0, 0, 0, 0, 0, 717, 0, 0, 1024, 0, 0, 0, 761, 0, 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 809, 0, 0, 0, 0, 0, 797, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 827, 0, 0, 297, 0, 0, 0, 0, 0, 0, 0, 472, 0, 923, 0, 0, 0, 0, 0, 0, 0, 0, 828, 0, 0, 0, 401, 0, 0, 0, 1017, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 447, 0, 0, 1002, 0, 0, 0, 0, 0, 0, 0, 948, 0, 0, 0, 0, 929, 0, 0, 0, 0, 0, 0, 0, 0, 0, 971, 0, 0, 0, 0, 0, 0, 0, 826, 0, 0, 0, 0, 0, 0, 0, 0, 0, 854, 935, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 941, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 933, 0, 0, 0, 0, 0, 905, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 795, 0, 0, 746, 525, 0, 0, 0, 0, 987, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 943, 0, 605, 0, 0, 0, 0, 0, 0, 0, 0, 764, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 727, 0, 0, 720, 0, 707, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 653, 893, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 834, 0, 0, 0, 0, 0, 0, 0, 0, 560, 0, 0, 0, 0, 710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 930, 0, 575, 0, 0, 0, 950, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 940, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 937, 0, 0, 763, 0, 0, 0, 673, 0, 0, 0, 0, 0, 0, 862, 0, 0, 0, 0, 862, 0, 0, 0, 0, 0, 1005, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 537, 0, 626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 819, 0, 0, 0, 895, 0, 0, 0, 0, 0, 0, 0, 0, 915, 0, 0, 0, 0, 0, 0, 985, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 796, 0, 0, 0, 0, 736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 366, 0, 0, 0, 575, 0, 0, 0, 0, 0, 0, 0, 0, 996, 830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 918, 199, 0, 0, 0, 0, 0, 0, 0, 776, 824, 0, 0, 0, 1022, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 816, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, 762, 0, 0, 0, 0, 826, 885, 546, 0, 961, 931, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 351, 0, 0, 0, 784, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 826, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 933, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 847, 0, 0, 0, 0, 0, 0, 0, 516, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1022, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 582, 969, 0, 0, 0, 0, 884, 0, 0, 0, 0, 0, 0, 0, 0, 856, 0, 1003, 0, 0, 0, 0, 0, 0, 0, 960, 997, 0, 0, 0, 700, 0, 0, 0, 0, 0, 0, 0, 0, 0, 838, 0, 0, 0, 0, 739, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 766, 0, 491, 0, 0, 0, 0, 0, 0, 0, 0, 450, 0, 0, 0, 0, 0, 0, 783, 0, 0, 0, 0, 0, 0, 931, 0, 758, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 697, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 843, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 988, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 739, 0, 0, 0, 793, 0, 0, 0, 0, 0, 0, 0, 0, 0, 920, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 373, 0, 0, 0, 0, 0, 0, 0, 0, 852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 993, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 850, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 965, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 943, 0, 547, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 381, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 799, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 922, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; const uint16_t H_1024_2048_4f_H_cols[] = { 125, 11, 216, 94, 44, 58, 2, 50, 45, 131, 81, 72, 19, 9, 29, 1, 51, 56, 311, 32, 205, 46, 6, 11, 53, 26, 200, 96, 33, 19, 227, 62, 7, 83, 124, 33, 13, 17, 39, 4, 169, 33, 10, 135, 129, 57, 2, 49, 133, 16, 51, 28, 8, 47, 22, 76, 83, 66, 45, 22, 80, 47, 54, 24, 54, 149, 97, 122, 62, 99, 30, 22, 222, 12, 100, 115, 28, 89, 102, 63, 170, 183, 27, 31, 148, 190, 32, 85, 12, 7, 74, 37, 30, 41, 55, 43, 54, 139, 44, 52, 29, 141, 22, 4, 48, 25, 14, 187, 115, 32, 2, 26, 112, 20, 15, 103, 96, 221, 133, 4, 68, 102, 114, 56, 30, 121, 82, 4, 135, 147, 81, 35, 42, 118, 31, 48, 78, 3, 128, 71, 2, 93, 58, 284, 65, 190, 42, 220, 63, 125, 140, 138, 22, 36, 557, 48, 21, 9, 125, 268, 62, 26, 25, 129, 15, 24, 3, 77, 99, 43, 127, 70, 48, 32, 89, 167, 52, 135, 2, 56, 13, 7, 41, 1, 127, 37, 21, 142, 192, 18, 106, 19, 10, 14, 10, 27, 29, 63, 9, 40, 22, 52, 40, 29, 28, 14, 29, 42, 113, 6, 18, 5, 25, 2, 8, 88, 73, 84, 3, 53, 8, 20, 23, 20, 4, 6, 8, 95, 22, 9, 88, 2, 39, 16, 44, 248, 254, 418, 268, 201, 13, 461, 309, 18, 15, 6, 84, 5, 525, 98, 36, 130, 64, 139, 23, 79, 148, 84, 91, 189, 11, 8, 821, 44, 515, 18, 12, 492, 44, 126, 145, 47, 137, 317, 95, 127, 347, 338, 46, 551, 219, 162, 155, 148, 34, 274, 36, 387, 478, 215, 126, 43, 84, 76, 24, 235, 44, 82, 164, 517, 207, 181, 652, 20, 422, 291, 104, 310, 37, 163, 256, 511, 291, 183, 41, 119, 153, 227, 54, 47, 79, 276, 52, 4, 217, 77, 120, 175, 146, 303, 20, 90, 112, 531, 180, 39, 105, 144, 7, 52, 203, 28, 72, 7, 69, 296, 173, 340, 26, 561, 159, 155, 3, 136, 17, 443, 25, 105, 207, 390, 329, 165, 137, 195, 570, 345, 180, 246, 542, 45, 381, 4, 175, 232, 254, 225, 21, 172, 352, 309, 420, 802, 234, 354, 211, 311, 660, 50, 99, 331, 301, 229, 111, 551, 110, 121, 538, 1, 98, 34, 67, 2, 200, 137, 97, 169, 275, 397, 127, 204, 127, 103, 140, 275, 691, 245, 11, 31, 253, 125, 59, 238, 56, 85, 121, 418, 397, 355, 49, 20, 119, 331, 266, 193, 273, 448, 94, 586, 443, 111, 129, 390, 27, 62, 124, 24, 99, 143, 269, 78, 508, 161, 442, 156, 75, 403, 189, 100, 107, 191, 341, 132, 294, 31, 133, 265, 53, 282, 36, 84, 138, 52, 9, 73, 160, 28, 228, 171, 110, 482, 322, 200, 157, 49, 159, 162, 224, 290, 190, 65, 81, 88, 295, 156, 74, 316, 94, 82, 108, 479, 93, 167, 230, 668, 24, 64, 191, 208, 35, 129, 307, 131, 19, 65, 279, 178, 86, 420, 246, 768, 475, 184, 43, 23, 220, 2, 610, 383, 92, 203, 266, 142, 123, 133, 47, 136, 152, 548, 433, 151, 141, 499, 46, 90, 27, 651, 244, 54, 319, 319, 415, 201, 74, 7, 124, 57, 135, 403, 300, 28, 307, 165, 14, 21, 102, 360, 38, 298, 410, 371, 282, 97, 39, 335, 116, 121, 178, 344, 464, 159, 63, 300, 146, 281, 90, 59, 348, 5, 29, 662, 21, 111, 159, 295, 5, 462, 336, 630, 488, 389, 241, 93, 176, 3, 238, 338, 697, 361, 786, 199, 34, 277, 80, 262, 449, 71, 197, 100, 316, 11, 216, 129, 206, 170, 69, 14, 90, 371, 274, 59, 53, 66, 71, 226, 617, 55, 95, 276, 80, 376, 42, 352, 295, 605, 23, 394, 221, 401, 73, 181, 182, 320, 284, 61, 336, 41, 184, 191, 548, 286, 9, 33, 176, 342, 270, 128, 35, 333, 79, 444, 344, 202, 386, 294, 516, 82, 38, 399, 476, 16, 637, 150, 411, 171, 30, 10, 72, 431, 60, 523, 515, 136, 187, 286, 364, 332, 69, 36, 57, 157, 19, 531, 324, 609, 82, 61, 120, 89, 525, 316, 270, 372, 101, 261, 458, 129, 258, 343, 20, 181, 398, 132, 272, 184, 38, 103, 259, 192, 93, 119, 156, 666, 7, 50, 88, 187, 8, 1, 331, 79, 440, 234, 88, 428, 221, 70, 168, 142, 5, 747, 298, 42, 432, 72, 324, 445, 152, 2, 63, 6, 627, 619, 382, 247, 69, 376, 442, 247, 264, 188, 453, 193, 249, 306, 125, 177, 50, 315, 114, 248, 9, 170, 76, 233, 522, 45, 137, 229, 33, 251, 10, 283, 18, 123, 205, 479, 28, 48, 134, 6, 102, 77, 319, 271, 243, 343, 30, 17, 22, 180, 232, 12, 91, 609, 198, 150, 98, 334, 12, 380, 94, 175, 365, 109, 190, 133, 41, 63, 162, 179, 268, 45, 160, 141, 55, 146, 87, 19, 59, 16, 451, 64, 26, 158, 535, 58, 35, 188, 202, 95, 81, 68, 498, 17, 122, 155, 419, 13, 107, 169, 318, 393, 243, 499, 106, 226, 101, 387, 242, 117, 330, 218, 10, 165, 163, 310, 341, 374, 40, 53, 189, 564, 261, 15, 173, 388, 85, 111, 51, 630, 38, 71, 142, 258, 203, 34, 222, 106, 363, 272, 92, 304, 6, 458, 192, 646, 114, 86, 43, 560, 634, 258, 31, 118, 453, 252, 116, 147, 228, 113, 68, 299, 54, 22, 286, 4, 611, 224, 115, 197, 305, 168, 186, 255, 144, 208, 162, 104, 256, 87, 174, 70, 236, 237, 321, 231, 306, 17, 9, 109, 149, 13, 291, 30, 52, 157, 185, 309, 267, 655, 70, 235, 89, 94, 374, 3, 112, 359, 663, 206, 125, 40, 399, 325, 123, 547, 230, 8, 126, 117, 418, 154, 32, 166, 288, 307, 225, 479, 78, 435, 113, 303, 548, 42, 293, 171, 55, 168, 132, 78, 214, 102, 107, 353, 89, 446, 481, 342, 62, 108, 488, 40, 1, 187, 83, 425, 71, 446, 202, 161, 260, 75, 449, 621, 150, 37, 325, 178, 126, 109, 7, 159, 76, 225, 157, 97, 46, 16, 33, 247, 130, 211, 393, 54, 273, 77, 41, 67, 164, 31, 208, 207, 72, 49, 254, 82, 196, 106, 151, 59, 76, 22, 58, 97, 186, 51, 25, 391, 131, 102, 19, 104, 183, 230, 200, 74, 16, 382, 28, 228, 108, 99, 92, 100, 267, 294, 91, 27, 58, 315, 133, 143, 235, 201, 110, 89, 244, 15, 259, 130, 92, 172, 144, 130, 194, 205, 49, 87, 188, 277, 44, 157, 51, 74, 93, 41, 92, 73, 60, 139, 136, 236, 186, 63, 141, 145, 25, 68, 202, 44, 131, 242, 213, 181, 60, 57, 219, 35, 250, 148, 128, 226, 138, 86, 172, 239, 122, 113, 82, 139, 110, 10, 150, 212, 101, 66, 200, 228, 200, 52, 145, 138, 130, 87, 64, 140, 69, 357, 98, 236, 46, 355, 80, 138, 216, 196, 55, 48, 602, 67, 124, 249, 154, 321, 64, 52, 81, 157, 19, 68, 73, 201, 143, 117, 153, 72, 57, 37, 108, 254, 116, 149, 15, 69, 108, 54, 58, 189, 135, 134, 49, 182, 261, 65, 128, 25, 198, 98, 29, 52, 38, 102, 18, 171, 66, 75, 177, 88, 33, 125, 104, 49, 230, 10, 56, 96, 34, 38, 12, 96, 120, 134, 20, 67, 31, 66, 28, 62, 38, 44, 42, 115, 104, 36, 92, 14, 50, 27, 53, 385, 439, 477, 505, 430, 16, 634, 670, 58, 223, 42, 122, 118, 716, 115, 393, 192, 223, 327, 416, 524, 556, 622, 97, 303, 166, 26, 884, 474, 698, 116, 231, 782, 714, 183, 287, 431, 479, 492, 240, 484, 559, 357, 782, 591, 308, 241, 277, 238, 186, 682, 86, 510, 606, 275, 849, 49, 93, 318, 779, 297, 279, 661, 423, 684, 800, 466, 676, 781, 769, 464, 390, 496, 147, 435, 285, 540, 404, 314, 394, 208, 219, 290, 67, 583, 210, 375, 67, 73, 454, 212, 244, 299, 369, 377, 564, 220, 255, 653, 207, 300, 257, 681, 239, 735, 484, 217, 293, 179, 81, 434, 288, 409, 32, 582, 714, 242, 334, 179, 363, 457, 364, 229, 692, 533, 350, 315, 277, 239, 590, 351, 716, 868, 550, 60, 421, 117, 278, 246, 774, 883, 85, 208, 447, 342, 667, 953, 542, 472, 455, 383, 960, 123, 134, 621, 343, 464, 344, 594, 124, 198, 571, 242, 304, 57, 194, 583, 280, 155, 480, 386, 330, 523, 364, 250, 349, 574, 151, 359, 823, 273, 323, 48, 756, 427, 153, 464, 743, 477, 395, 451, 534, 489, 218, 213, 507, 351, 400, 598, 292, 520, 241, 606, 694, 369, 256, 405, 255, 578, 154, 412, 120, 172, 289, 671, 756, 426, 527, 163, 316, 504, 394, 290, 125, 313, 540, 676, 349, 587, 222, 562, 218, 374, 398, 143, 222, 113, 138, 157, 434, 628, 616, 389, 172, 506, 877, 243, 446, 741, 636, 212, 554, 356, 396, 116, 633, 210, 795, 729, 377, 543, 274, 258, 247, 539, 557, 373, 353, 861, 196, 323, 413, 599, 136, 381, 338, 263, 154, 504, 477, 527, 220, 521, 260, 928, 532, 496, 53, 104, 436, 240, 624, 561, 174, 331, 483, 562, 617, 144, 612, 195, 420, 689, 713, 224, 144, 509, 214, 149, 100, 683, 902, 96, 368, 356, 440, 766, 216, 63, 209, 847, 145, 424, 487, 60, 314, 241, 61, 715, 566, 386, 105, 476, 425, 791, 326, 324, 579, 417, 341, 387, 263, 368, 703, 354, 179, 444, 245, 407, 214, 264, 431, 148, 61, 757, 245, 191, 447, 314, 140, 600, 478, 766, 494, 523, 461, 433, 263, 158, 491, 593, 754, 411, 847, 289, 296, 302, 185, 276, 580, 374, 326, 532, 471, 617, 353, 237, 243, 659, 777, 29, 109, 654, 907, 228, 57, 480, 270, 664, 711, 367, 294, 466, 231, 503, 347, 366, 629, 740, 262, 575, 660, 521, 729, 603, 734, 533, 564, 131, 783, 189, 364, 356, 582, 368, 122, 37, 178, 452, 411, 177, 119, 579, 557, 484, 502, 261, 423, 414, 754, 204, 296, 754, 751, 327, 958, 488, 799, 563, 529, 76, 389, 695, 81, 557, 657, 652, 665, 344, 602, 628, 99, 39, 296, 658, 91, 547, 475, 682, 183, 75, 153, 408, 724, 380, 592, 731, 674, 419, 555, 503, 657, 489, 201, 262, 614, 433, 701, 612, 77, 549, 507, 644, 389, 124, 724, 834, 655, 193, 147, 310, 105, 46, 500, 572, 512, 342, 167, 672, 523, 219, 496, 161, 529, 762, 432, 147, 489, 233, 399, 498, 273, 95, 514, 367, 749, 676, 463, 283, 689, 499, 525, 929, 289, 253, 474, 645, 592, 372, 402, 223, 585, 651, 170, 337, 293, 352, 939, 430, 862, 640, 355, 234, 80, 373, 723, 501, 504, 378, 216, 513, 357, 412, 768, 260, 112, 309, 445, 358, 531, 597, 140, 35, 211, 446, 407, 407, 174, 833, 402, 441, 188, 405, 185, 471, 165, 249, 842, 582, 401, 599, 62, 346, 425, 195, 510, 56, 693, 287, 177, 152, 285, 196, 501, 26, 712, 158, 327, 334, 621, 272, 312, 423, 533, 349, 217, 483, 505, 143, 622, 668, 465, 428, 205, 428, 661, 398, 280, 584, 221, 236, 486, 677, 361, 166, 740, 469, 39, 206, 723, 706, 597, 553, 418, 160, 784, 689, 320, 163, 250, 459, 637, 396, 774, 633, 428, 292, 285, 743, 444, 360, 473, 257, 545, 611, 346, 449, 261, 502, 328, 796, 194, 325, 199, 722, 653, 579, 366, 140, 543, 392, 513, 347, 307, 194, 83, 631, 391, 158, 304, 460, 818, 380, 439, 339, 686, 230, 680, 426, 306, 473, 379, 181, 421, 114, 271, 199, 503, 265, 427, 260, 539, 110, 448, 325, 663, 797, 297, 65, 87, 173, 329, 467, 623, 832, 130, 534, 234, 204, 765, 419, 227, 542, 776, 805, 232, 224, 457, 351, 156, 556, 273, 327, 544, 182, 618, 252, 106, 333, 460, 544, 705, 495, 265, 666, 509, 578, 627, 198, 306, 490, 128, 249, 210, 712, 385, 146, 568, 631, 229, 468, 780, 550, 594, 693, 678, 326, 145, 248, 132, 467, 175, 775, 437, 279, 350, 176, 457, 720, 180, 110, 337, 365, 147, 137, 13, 165, 140, 331, 164, 118, 85, 41, 131, 278, 168, 225, 516, 287, 285, 260, 56, 99, 205, 101, 300, 318, 107, 76, 289, 99, 233, 133, 171, 87, 300, 106, 141, 114, 238, 91, 67, 427, 186, 263, 105, 199, 287, 311, 216, 79, 124, 404, 38, 274, 209, 148, 139, 218, 284, 313, 162, 54, 83, 403, 200, 233, 335, 222, 143, 112, 254, 91, 341, 132, 115, 180, 206, 368, 262, 225, 70, 92, 323, 287, 195, 168, 65, 250, 156, 208, 191, 78, 70, 167, 203, 288, 258, 251, 171, 205, 145, 191, 223, 78, 174, 245, 239, 369, 125, 63, 264, 131, 397, 222, 193, 262, 151, 206, 185, 256, 191, 182, 131, 161, 238, 17, 202, 275, 187, 74, 312, 231, 206, 106, 244, 335, 185, 97, 126, 144, 113, 387, 148, 279, 117, 500, 86, 267, 305, 209, 84, 85, 715, 215, 133, 364, 283, 339, 112, 431, 137, 204, 40, 209, 152, 228, 282, 204, 174, 106, 76, 72, 152, 341, 119, 167, 177, 115, 122, 120, 151, 201, 432, 159, 91, 278, 286, 138, 271, 197, 215, 189, 85, 138, 101, 122, 100, 329, 120, 97, 240, 99, 41, 134, 135, 71, 238, 33, 80, 109, 86, 89, 21, 189, 179, 155, 51, 186, 143, 127, 31, 70, 118, 67, 60, 144, 110, 67, 169, 91, 77, 32, 71, 699, 449, 674, 551, 681, 186, 678, 773, 355, 485, 465, 518, 150, 775, 528, 759, 253, 576, 373, 620, 654, 643, 652, 196, 526, 182, 89, 924, 618, 759, 272, 348, 829, 879, 204, 361, 440, 822, 592, 414, 758, 654, 454, 889, 635, 778, 673, 727, 330, 536, 795, 203, 755, 783, 441, 863, 626, 763, 333, 830, 771, 566, 737, 498, 761, 881, 645, 935, 919, 903, 537, 416, 675, 167, 485, 366, 843, 771, 700, 445, 284, 429, 313, 381, 909, 625, 585, 285, 333, 733, 773, 399, 600, 541, 407, 697, 248, 450, 678, 468, 322, 672, 828, 509, 757, 500, 228, 718, 745, 244, 693, 315, 681, 257, 627, 748, 343, 456, 259, 713, 475, 431, 408, 952, 619, 604, 683, 489, 416, 722, 500, 794, 917, 839, 357, 790, 901, 462, 568, 830, 961, 101, 335, 636, 847, 857, 959, 703, 566, 466, 436, 964, 226, 289, 910, 540, 491, 356, 742, 259, 632, 752, 302, 778, 160, 662, 720, 315, 765, 569, 505, 660, 796, 535, 460, 612, 580, 691, 979, 872, 339, 753, 51, 760, 568, 370, 643, 853, 566, 559, 453, 831, 597, 501, 803, 750, 571, 465, 613, 299, 563, 379, 691, 837, 450, 552, 603, 290, 880, 174, 890, 370, 545, 357, 933, 764, 636, 658, 182, 547, 732, 578, 439, 321, 450, 563, 763, 444, 659, 627, 610, 929, 459, 487, 363, 430, 376, 233, 166, 680, 687, 623, 397, 417, 738, 900, 478, 617, 849, 933, 670, 570, 450, 578, 852, 781, 371, 939, 836, 602, 606, 425, 267, 670, 615, 625, 632, 704, 899, 480, 485, 521, 820, 622, 391, 626, 265, 284, 590, 624, 881, 345, 709, 415, 1005, 886, 600, 130, 405, 699, 329, 650, 630, 358, 519, 619, 971, 664, 710, 621, 873, 541, 777, 821, 560, 305, 620, 438, 305, 103, 692, 928, 236, 498, 481, 688, 803, 303, 620, 358, 948, 242, 722, 752, 311, 629, 819, 610, 825, 748, 434, 798, 669, 700, 802, 669, 890, 752, 430, 504, 402, 800, 635, 992, 426, 271, 571, 413, 784, 345, 269, 602, 441, 207, 848, 637, 541, 573, 410, 215, 631, 586, 930, 679, 530, 467, 884, 606, 223, 660, 623, 809, 862, 945, 370, 772, 539, 350, 405, 830, 432, 476, 574, 894, 836, 695, 362, 336, 696, 860, 422, 561, 959, 962, 454, 951, 516, 914, 716, 904, 581, 300, 598, 497, 662, 400, 573, 657, 852, 499, 607, 771, 575, 855, 719, 762, 603, 845, 176, 808, 588, 810, 575, 781, 975, 340, 632, 478, 945, 639, 414, 172, 906, 888, 665, 815, 334, 470, 720, 902, 544, 680, 890, 811, 746, 981, 542, 914, 605, 590, 117, 490, 865, 134, 831, 687, 832, 835, 528, 726, 640, 516, 519, 773, 855, 809, 648, 806, 901, 629, 543, 264, 452, 729, 788, 727, 843, 892, 493, 580, 567, 957, 668, 252, 509, 743, 625, 871, 706, 408, 555, 638, 885, 518, 595, 775, 906, 739, 236, 647, 484, 730, 361, 908, 717, 695, 408, 559, 746, 888, 370, 639, 366, 788, 877, 459, 437, 765, 518, 443, 635, 817, 322, 882, 419, 851, 938, 702, 314, 781, 942, 609, 951, 837, 360, 707, 711, 782, 718, 510, 329, 824, 658, 757, 438, 409, 421, 954, 718, 969, 642, 403, 705, 246, 402, 906, 741, 597, 711, 526, 732, 623, 580, 777, 497, 825, 839, 575, 638, 692, 822, 380, 392, 493, 525, 558, 512, 565, 987, 917, 643, 286, 455, 440, 529, 250, 270, 865, 640, 704, 681, 107, 848, 634, 514, 931, 311, 948, 302, 576, 684, 696, 950, 616, 677, 801, 276, 382, 493, 706, 403, 873, 591, 577, 905, 332, 524, 756, 417, 713, 925, 738, 677, 232, 680, 682, 515, 833, 613, 404, 567, 748, 814, 799, 318, 871, 641, 698, 280, 834, 918, 615, 967, 476, 469, 880, 919, 465, 666, 682, 560, 674, 736, 779, 803, 772, 639, 381, 759, 487, 508, 599, 463, 652, 732, 757, 475, 437, 549, 469, 818, 638, 393, 685, 787, 819, 614, 696, 494, 866, 417, 611, 572, 687, 514, 533, 667, 567, 375, 815, 737, 990, 691, 532, 637, 859, 299, 786, 472, 409, 564, 700, 239, 933, 358, 346, 589, 613, 391, 588, 367, 731, 312, 518, 345, 710, 804, 702, 215, 194, 986, 583, 550, 629, 935, 429, 796, 291, 410, 899, 455, 369, 679, 828, 812, 784, 669, 480, 699, 585, 788, 278, 463, 626, 723, 707, 595, 717, 734, 795, 593, 839, 563, 362, 690, 895, 858, 766, 251, 495, 495, 240, 365, 483, 714, 851, 486, 588, 878, 257, 658, 1007, 703, 708, 773, 805, 474, 149, 770, 619, 601, 553, 794, 738, 354, 456, 586, 569, 758, 317, 272, 504, 371, 190, 220, 68, 292, 297, 360, 236, 202, 102, 108, 178, 285, 207, 233, 538, 339, 333, 266, 114, 109, 213, 214, 332, 340, 298, 78, 429, 316, 266, 195, 247, 248, 429, 348, 244, 127, 283, 105, 128, 540, 311, 347, 151, 220, 317, 386, 226, 114, 270, 416, 246, 280, 378, 163, 143, 227, 299, 488, 197, 211, 164, 455, 223, 237, 422, 382, 154, 231, 286, 95, 357, 202, 244, 219, 208, 384, 422, 295, 192, 193, 353, 301, 262, 278, 92, 358, 196, 239, 333, 118, 156, 264, 384, 395, 299, 388, 278, 263, 240, 195, 225, 99, 192, 317, 368, 371, 206, 220, 360, 133, 505, 385, 378, 265, 164, 226, 362, 362, 213, 367, 139, 191, 252, 174, 215, 460, 209, 87, 422, 295, 262, 115, 327, 340, 231, 163, 160, 157, 144, 420, 348, 297, 450, 506, 204, 270, 401, 218, 94, 103, 761, 328, 189, 398, 293, 392, 118, 491, 247, 235, 82, 225, 219, 275, 291, 263, 183, 110, 178, 137, 212, 377, 187, 221, 420, 146, 338, 261, 237, 210, 471, 244, 202, 421, 318, 297, 291, 203, 257, 240, 201, 232, 175, 265, 161, 332, 141, 198, 283, 176, 95, 160, 142, 98, 275, 62, 215, 145, 100, 115, 80, 255, 192, 190, 110, 229, 178, 151, 64, 210, 160, 81, 140, 211, 289, 79, 213, 108, 98, 71, 93, 835, 458, 879, 708, 820, 772, 907, 993, 560, 690, 482, 821, 556, 940, 760, 912, 508, 816, 406, 739, 864, 679, 867, 779, 927, 724, 702, 1021, 624, 1017, 997, 558, 908, 892, 379, 438, 656, 826, 675, 747, 908, 717, 943, 955, 1002, 973, 961, 914, 359, 764, 827, 351, 804, 1004, 996, 929, 929, 956, 737, 972, 791, 1010, 954, 742, 981, 946, 895, 956, 923, 974, 979, 938, 889, 251, 1018, 735, 995, 1023, 849, 742, 392, 850, 780, 503, 1020, 802, 721, 552, 723, 860, 1006, 516, 639, 825, 880, 902, 686, 549, 896, 651, 906, 985, 930, 514, 790, 897, 269, 924, 832, 733, 1014, 855, 718, 395, 923, 1010, 826, 738, 545, 898, 850, 612, 992, 1004, 767, 936, 987, 615, 832, 807, 835, 881, 968, 934, 860, 838, 939, 667, 688, 893, 984, 875, 989, 789, 891, 1003, 1019, 979, 875, 719, 642, 990, 775, 860, 918, 615, 730, 607, 931, 271, 649, 912, 727, 850, 786, 838, 905, 442, 941, 830, 764, 852, 960, 1020, 661, 918, 806, 913, 1023, 894, 684, 904, 352, 975, 868, 685, 705, 912, 618, 844, 624, 1021, 861, 589, 1001, 949, 665, 922, 895, 761, 843, 601, 808, 973, 1009, 790, 739, 458, 980, 809, 976, 733, 622, 616, 1010, 885, 1015, 716, 323, 783, 822, 594, 481, 947, 825, 822, 867, 758, 972, 663, 712, 948, 751, 698, 937, 828, 882, 372, 836, 764, 728, 741, 448, 595, 856, 916, 952, 724, 1022, 983, 883, 787, 502, 709, 996, 1001, 572, 957, 940, 878, 874, 461, 593, 700, 995, 870, 844, 817, 941, 754, 585, 715, 944, 898, 971, 840, 801, 750, 740, 712, 952, 897, 1016, 558, 1008, 973, 988, 589, 466, 853, 690, 866, 686, 587, 758, 647, 983, 940, 1024, 905, 887, 715, 803, 867, 807, 776, 882, 835, 337, 254, 833, 1001, 903, 760, 528, 915, 944, 512, 887, 507, 993, 301, 941, 926, 332, 741, 962, 800, 991, 892, 792, 945, 787, 827, 869, 707, 1005, 759, 473, 605, 406, 1004, 1007, 1011, 932, 312, 910, 876, 927, 770, 733, 915, 871, 725, 882, 977, 709, 813, 544, 701, 810, 648, 1024, 896, 870, 805, 937, 872, 604, 1023, 1022, 845, 889, 1006, 454, 792, 826, 415, 965, 976, 517, 674, 815, 913, 1018, 842, 422, 678, 789, 920, 946, 851, 1012, 987, 840, 1014, 1005, 925, 769, 982, 816, 978, 824, 856, 790, 649, 933, 954, 960, 598, 709, 796, 736, 901, 965, 916, 655, 950, 866, 896, 931, 878, 780, 920, 1002, 924, 868, 725, 1011, 675, 583, 259, 926, 1012, 918, 1009, 603, 551, 877, 950, 957, 1006, 928, 967, 814, 991, 846, 994, 732, 871, 734, 884, 878, 269, 953, 966, 1013, 955, 591, 909, 744, 768, 571, 891, 940, 890, 812, 976, 986, 1022, 1004, 443, 985, 986, 808, 969, 911, 977, 719, 893, 974, 1017, 799, 473, 739, 752, 1019, 996, 865, 891, 813, 873, 975, 831, 845, 904, 978, 767, 982, 922, 492, 1011, 592, 955, 869, 726, 839, 649, 798, 964, 837, 862, 671, 913, 978, 861, 577, 914, 937, 1008, 708, 876, 666, 963, 856, 1024, 1013, 869, 626, 902, 999, 855, 993, 841, 921, 823, 824, 862, 828, 608, 581, 904, 998, 838, 859, 843, 735, 1017, 793, 994, 920, 997, 1023, 506, 868, 916, 840, 722, 721, 980, 997, 854, 972, 1001, 968, 875, 883, 1007, 963, 783, 941, 807, 989, 816, 998, 915, 602, 750, 998, 1000, 979, 644, 785, 909, 570, 288, 522, 988, 749, 980, 766, 526, 873, 962, 638, 947, 854, 1006, 337, 747, 991, 838, 1005, 841, 985, 879, 455, 844, 965, 908, 590, 949, 760, 647, 910, 920, 676, 1002, 793, 989, 969, 785, 755, 880, 792, 939, 728, 907, 662, 491, 794, 932, 844, 969, 986, 990, 693, 900, 461, 836, 955, 997, 981, 554, 508, 947, 944, 577, 916, 987, 669, 811, 1007, 789, 923, 985, 994, 384, 966, 538, 1014, 919, 730, 745, 740, 963, 574, 456, 574, 589, 852, 848, 744, 840, 861, 961, 737, 1015, 808, 894, 820, 646, 864, 943, 584, 935, 817, 946, 485, 886, 957, 996, 874, 778, 967, 1024, 988, 798, 555, 511, 595, 863, 655, 971, 659, 949, 841, 999, 800, 804, 936, 776, 545, 1021, 385, 851, 814, 730, 330, 963, 998, 656, 673, 687, 938, 685, 953, 1011, 795, 925, 816, 486, 705, 911, 819, 917, 823, 976, 912, 1018, 896, 857, 672, 1022, 729, 811, 697, 1012, 834, 901, 657, 992, 731, 971, 747, 942, 1016, 919, 968, 995, 513, 936, 462, 959, 983, 859, 977, 927, 988, 404, 664, 1009, 984, 947, 951, 934, 879, 214, 897, 970, 670, 761, 982, 922, 983, 506, 894, 778, 1020, 442, 276, 509, 392, 307, 375, 314, 457, 313, 394, 365, 205, 120, 128, 237, 297, 452, 236, 581, 345, 512, 292, 393, 158, 290, 258, 378, 515, 382, 213, 593, 368, 348, 210, 305, 259, 432, 362, 301, 169, 336, 118, 199, 658, 329, 369, 186, 338, 411, 462, 233, 187, 452, 428, 326, 288, 442, 327, 217, 318, 349, 490, 377, 426, 388, 490, 245, 335, 475, 433, 290, 292, 391, 219, 460, 237, 255, 225, 281, 450, 437, 416, 206, 243, 386, 313, 336, 292, 170, 375, 215, 258, 339, 173, 164, 322, 422, 463, 319, 441, 336, 316, 446, 229, 247, 112, 362, 382, 481, 382, 398, 237, 418, 261, 522, 436, 392, 345, 174, 366, 370, 384, 276, 369, 142, 251, 403, 216, 269, 537, 330, 102, 444, 311, 303, 203, 332, 387, 354, 203, 214, 352, 175, 427, 397, 388, 462, 617, 319, 304, 536, 374, 441, 153, 789, 336, 193, 484, 333, 479, 142, 682, 345, 284, 152, 256, 237, 286, 381, 283, 246, 180, 509, 240, 261, 473, 196, 302, 424, 249, 453, 267, 257, 216, 511, 264, 266, 502, 354, 333, 397, 254, 264, 384, 341, 346, 354, 275, 165, 359, 166, 208, 328, 186, 160, 253, 156, 144, 285, 192, 288, 310, 213, 260, 220, 263, 296, 241, 134, 317, 306, 184, 69, 217, 204, 111, 181, 234, 320, 96, 268, 139, 117, 135, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 479, 287, 704, 405, 386, 383, 470, 552, 491, 423, 431, 238, 158, 164, 349, 312, 488, 238, 665, 363, 543, 343, 404, 304, 377, 328, 415, 558, 596, 513, 605, 396, 373, 285, 326, 281, 564, 365, 304, 177, 374, 126, 302, 686, 379, 453, 388, 419, 531, 572, 264, 414, 540, 557, 352, 367, 498, 476, 426, 399, 394, 535, 382, 447, 424, 530, 327, 341, 513, 506, 323, 312, 532, 279, 467, 245, 313, 332, 299, 482, 439, 429, 234, 314, 653, 322, 342, 314, 247, 379, 503, 437, 511, 318, 319, 382, 528, 564, 494, 457, 339, 437, 615, 266, 393, 214, 421, 396, 510, 389, 452, 298, 472, 294, 553, 523, 488, 642, 266, 378, 400, 478, 286, 413, 148, 309, 438, 579, 352, 615, 379, 117, 745, 324, 322, 219, 383, 418, 416, 213, 247, 355, 273, 449, 415, 511, 492, 701, 398, 308, 561, 398, 484, 365, 845, 369, 231, 495, 436, 483, 211, 706, 349, 327, 169, 302, 322, 375, 502, 547, 328, 341, 614, 338, 300, 508, 493, 398, 440, 280, 471, 395, 448, 310, 673, 293, 290, 539, 396, 613, 510, 282, 267, 391, 372, 353, 377, 303, 198, 420, 176, 373, 361, 196, 193, 301, 170, 174, 357, 247, 298, 350, 252, 287, 241, 358, 315, 250, 142, 342, 325, 192, 71, 256, 307, 218, 238, 267, 371, 107, 301, 180, 127, 165, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 500, 482, 834, 496, 420, 510, 526, 598, 537, 471, 505, 264, 272, 221, 386, 317, 702, 305, 670, 367, 658, 386, 433, 405, 406, 429, 471, 579, 664, 615, 643, 401, 427, 353, 449, 348, 570, 535, 312, 412, 476, 146, 348, 731, 397, 500, 471, 451, 701, 618, 318, 423, 627, 571, 395, 379, 524, 541, 469, 549, 401, 652, 445, 592, 551, 534, 454, 517, 530, 519, 366, 339, 569, 316, 634, 278, 420, 528, 314, 596, 569, 514, 308, 320, 681, 375, 540, 460, 472, 390, 537, 470, 534, 339, 380, 391, 552, 630, 496, 556, 393, 461, 656, 320, 504, 285, 518, 438, 739, 414, 465, 309, 548, 355, 583, 527, 518, 733, 345, 427, 577, 572, 346, 622, 393, 347, 441, 635, 359, 683, 552, 324, 808, 358, 376, 259, 385, 446, 438, 620, 381, 424, 340, 482, 424, 520, 500, 745, 538, 341, 663, 422, 507, 447, 877, 501, 313, 600, 469, 526, 273, 763, 414, 367, 218, 485, 407, 387, 543, 584, 497, 513, 646, 404, 364, 531, 521, 500, 544, 308, 554, 433, 529, 406, 710, 345, 390, 573, 567, 652, 588, 298, 389, 493, 379, 377, 477, 468, 317, 530, 207, 379, 387, 224, 198, 342, 264, 212, 394, 284, 351, 364, 269, 316, 249, 380, 334, 259, 163, 363, 424, 203, 75, 259, 336, 239, 317, 289, 415, 113, 305, 218, 143, 201, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 518, 616, 874, 678, 500, 605, 536, 674, 633, 515, 536, 277, 428, 321, 417, 334, 727, 325, 677, 394, 688, 559, 457, 435, 583, 480, 562, 644, 679, 639, 752, 425, 608, 393, 546, 568, 596, 738, 344, 582, 609, 412, 480, 736, 465, 580, 692, 557, 714, 691, 453, 577, 636, 767, 435, 396, 588, 607, 586, 650, 429, 703, 459, 613, 570, 646, 660, 593, 575, 529, 392, 517, 630, 341, 783, 601, 422, 614, 356, 641, 599, 661, 463, 382, 728, 663, 584, 501, 565, 446, 576, 506, 564, 374, 395, 545, 573, 636, 501, 653, 553, 622, 659, 454, 555, 321, 603, 447, 781, 479, 480, 404, 666, 487, 596, 573, 533, 791, 409, 745, 612, 671, 507, 733, 479, 360, 537, 848, 494, 710, 565, 441, 820, 547, 443, 276, 425, 504, 555, 656, 410, 459, 445, 489, 449, 554, 505, 763, 565, 371, 698, 438, 574, 471, 893, 571, 413, 675, 490, 561, 301, 775, 428, 402, 323, 582, 444, 711, 546, 641, 618, 520, 698, 550, 473, 561, 651, 544, 727, 346, 595, 515, 603, 520, 746, 513, 396, 636, 594, 699, 620, 472, 485, 562, 440, 573, 512, 508, 358, 611, 219, 386, 451, 236, 270, 373, 308, 293, 440, 331, 434, 376, 284, 358, 257, 385, 340, 282, 205, 370, 444, 223, 85, 311, 362, 271, 329, 375, 427, 188, 335, 235, 162, 227, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 833, 620, 897, 706, 643, 609, 545, 678, 827, 532, 699, 361, 432, 641, 581, 337, 737, 436, 682, 456, 773, 573, 606, 695, 635, 631, 581, 694, 794, 647, 779, 445, 611, 525, 556, 614, 668, 767, 418, 586, 746, 574, 497, 826, 520, 713, 709, 581, 727, 804, 527, 631, 645, 826, 576, 515, 625, 685, 628, 667, 526, 726, 513, 678, 790, 669, 715, 629, 741, 671, 420, 569, 667, 373, 801, 673, 618, 643, 497, 712, 645, 667, 482, 676, 745, 694, 620, 522, 861, 459, 726, 567, 667, 460, 470, 572, 578, 663, 552, 761, 729, 646, 663, 500, 573, 473, 650, 469, 786, 510, 556, 423, 713, 519, 628, 686, 607, 812, 451, 860, 680, 726, 527, 736, 494, 445, 612, 881, 506, 771, 659, 569, 835, 586, 544, 297, 582, 527, 560, 689, 601, 466, 548, 558, 483, 700, 507, 767, 650, 439, 709, 676, 586, 545, 902, 585, 486, 733, 520, 608, 452, 821, 484, 687, 350, 587, 521, 753, 621, 680, 675, 834, 745, 569, 496, 571, 704, 631, 796, 698, 608, 572, 620, 573, 794, 690, 475, 651, 607, 701, 784, 506, 565, 564, 468, 664, 714, 536, 383, 657, 262, 455, 519, 284, 330, 396, 344, 337, 461, 395, 448, 525, 356, 417, 262, 410, 394, 302, 292, 431, 465, 250, 150, 347, 430, 322, 539, 421, 480, 220, 378, 250, 175, 248, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 879, 649, 931, 749, 689, 722, 548, 721, 829, 536, 741, 372, 490, 708, 590, 515, 772, 615, 686, 468, 836, 837, 628, 762, 685, 644, 664, 705, 899, 697, 797, 573, 814, 647, 577, 681, 690, 804, 486, 774, 754, 584, 514, 841, 571, 793, 713, 616, 842, 842, 651, 808, 714, 866, 580, 609, 655, 759, 710, 698, 671, 766, 546, 825, 815, 684, 744, 729, 758, 683, 487, 596, 806, 562, 883, 749, 779, 703, 558, 715, 721, 813, 522, 730, 785, 718, 726, 643, 890, 789, 810, 601, 694, 514, 582, 602, 615, 717, 591, 766, 741, 692, 682, 550, 810, 635, 657, 504, 793, 559, 633, 567, 732, 550, 670, 749, 659, 881, 455, 890, 841, 863, 547, 756, 531, 504, 699, 905, 661, 818, 686, 709, 844, 608, 603, 323, 633, 595, 581, 768, 722, 554, 594, 632, 642, 707, 625, 935, 816, 502, 749, 710, 595, 770, 936, 641, 499, 754, 591, 625, 491, 831, 548, 717, 484, 593, 565, 825, 634, 748, 694, 938, 750, 702, 523, 666, 857, 759, 846, 783, 822, 614, 633, 608, 871, 694, 514, 653, 635, 718, 792, 517, 601, 728, 527, 849, 728, 686, 440, 710, 294, 538, 540, 350, 351, 413, 399, 351, 496, 398, 453, 547, 388, 514, 271, 451, 408, 316, 346, 433, 507, 293, 239, 365, 436, 392, 550, 430, 498, 226, 404, 283, 216, 274, 343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 885, 655, 951, 765, 743, 744, 687, 803, 840, 586, 797, 444, 546, 780, 623, 574, 786, 635, 699, 493, 873, 876, 637, 817, 695, 688, 757, 753, 956, 711, 854, 643, 823, 823, 618, 947, 706, 810, 511, 776, 795, 587, 532, 853, 605, 818, 773, 646, 906, 870, 656, 858, 738, 887, 685, 672, 662, 837, 714, 730, 784, 808, 684, 864, 871, 883, 817, 760, 783, 739, 524, 619, 829, 569, 934, 839, 875, 764, 677, 735, 813, 827, 688, 735, 798, 786, 796, 968, 904, 827, 842, 693, 870, 600, 683, 677, 667, 744, 597, 812, 819, 710, 761, 567, 873, 650, 666, 798, 815, 629, 642, 697, 748, 870, 748, 764, 787, 887, 541, 974, 864, 896, 565, 780, 688, 530, 703, 929, 831, 835, 718, 758, 887, 643, 648, 869, 636, 599, 611, 785, 840, 627, 630, 769, 656, 726, 634, 943, 853, 528, 818, 750, 604, 774, 954, 685, 649, 824, 670, 766, 525, 847, 585, 802, 512, 698, 667, 847, 681, 823, 734, 960, 862, 719, 850, 683, 876, 776, 877, 827, 874, 751, 701, 613, 911, 708, 599, 696, 683, 736, 900, 704, 728, 771, 689, 858, 828, 700, 472, 752, 311, 568, 596, 389, 390, 472, 474, 404, 524, 406, 469, 552, 462, 555, 281, 468, 512, 339, 350, 444, 589, 310, 302, 417, 453, 402, 622, 479, 525, 260, 438, 294, 253, 299, 354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 901, 922, 983, 782, 817, 878, 792, 832, 945, 675, 877, 448, 913, 803, 737, 582, 833, 640, 782, 604, 908, 945, 646, 834, 915, 862, 903, 809, 967, 867, 905, 814, 884, 851, 746, 951, 791, 829, 539, 806, 797, 667, 676, 929, 646, 828, 823, 656, 950, 889, 665, 885, 798, 914, 753, 702, 695, 869, 803, 736, 839, 865, 843, 893, 894, 891, 857, 828, 818, 830, 528, 812, 890, 650, 941, 863, 897, 784, 680, 799, 815, 888, 694, 949, 809, 799, 830, 980, 930, 892, 898, 927, 884, 844, 804, 697, 708, 979, 607, 839, 915, 830, 869, 671, 920, 784, 751, 850, 836, 790, 777, 769, 813, 880, 838, 954, 843, 953, 911, 986, 875, 967, 663, 820, 788, 552, 715, 937, 844, 894, 779, 784, 898, 872, 683, 874, 821, 817, 625, 832, 911, 690, 642, 829, 770, 751, 770, 970, 932, 567, 883, 766, 690, 818, 972, 899, 790, 829, 876, 797, 603, 950, 664, 870, 576, 809, 724, 859, 806, 926, 792, 995, 893, 791, 863, 819, 910, 805, 926, 831, 907, 769, 789, 746, 937, 781, 727, 865, 755, 807, 913, 842, 743, 836, 769, 923, 925, 794, 573, 828, 361, 625, 672, 400, 400, 501, 492, 673, 549, 426, 522, 572, 477, 578, 307, 513, 529, 470, 402, 482, 612, 332, 331, 486, 466, 519, 644, 484, 551, 269, 443, 298, 269, 326, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 952, 936, 1003, 971, 858, 884, 881, 999, 964, 689, 880, 495, 974, 934, 846, 590, 868, 657, 806, 720, 927, 984, 966, 925, 938, 887, 982, 850, 978, 928, 943, 825, 916, 864, 775, 1000, 994, 924, 691, 955, 910, 695, 839, 977, 917, 924, 893, 931, 955, 994, 725, 989, 863, 919, 802, 804, 774, 940, 867, 821, 1016, 925, 937, 900, 909, 896, 891, 837, 910, 923, 949, 923, 933, 671, 970, 972, 900, 846, 715, 921, 899, 911, 863, 954, 885, 805, 848, 1005, 953, 962, 976, 968, 920, 919, 899, 831, 798, 1000, 681, 846, 958, 859, 905, 688, 1007, 801, 931, 889, 880, 834, 797, 881, 864, 900, 925, 959, 942, 969, 961, 992, 925, 970, 692, 842, 796, 911, 724, 1010, 999, 935, 851, 973, 971, 913, 841, 888, 895, 901, 720, 950, 946, 728, 749, 930, 936, 910, 857, 973, 964, 725, 899, 845, 701, 824, 1015, 950, 794, 958, 998, 821, 753, 957, 697, 888, 762, 871, 761, 873, 811, 951, 841, 1001, 903, 850, 948, 846, 993, 939, 980, 886, 912, 954, 856, 755, 969, 959, 785, 911, 808, 881, 933, 957, 854, 878, 821, 953, 931, 903, 860, 960, 453, 648, 750, 483, 482, 586, 526, 676, 557, 446, 570, 601, 504, 609, 667, 543, 670, 474, 431, 608, 639, 468, 511, 616, 468, 598, 680, 490, 583, 288, 470, 308, 297, 393, 391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 994, 943, 1016, 1017, 886, 1023, 978, 1002, 1002, 756, 927, 505, 991, 983, 1010, 770, 891, 925, 897, 1023, 1003, 992, 1021, 946, 1009, 921, 995, 886, 1009, 934, 966, 935, 943, 903, 892, 1013, 1024, 940, 934, 1013, 1007, 999, 909, 982, 983, 937, 1020, 992, 968, 1003, 740, 1003, 976, 1013, 1017, 824, 956, 1008, 943, 1009, 1022, 1001, 977, 985, 953, 955, 958, 878, 964, 930, 962, 965, 935, 737, 992, 993, 932, 993, 917, 1014, 942, 936, 950, 987, 1002, 855, 1024, 1019, 977, 995, 982, 1010, 1019, 921, 931, 873, 927, 1006, 742, 974, 1017, 940, 969, 938, 1015, 952, 956, 928, 976, 872, 1017, 936, 945, 1023, 992, 990, 955, 1012, 995, 999, 943, 983, 999, 999, 923, 958, 990, 1017, 1020, 1000, 1007, 1015, 1006, 928, 940, 929, 937, 1001, 723, 1017, 962, 765, 950, 1000, 1011, 922, 912, 978, 989, 864, 930, 891, 768, 826, 1024, 1010, 989, 979, 1021, 868, 824, 1019, 1020, 894, 911, 973, 958, 1018, 981, 969, 858, 1018, 926, 999, 1021, 907, 1004, 942, 1008, 975, 932, 1001, 868, 854, 997, 1008, 925, 919, 1022, 1024, 1000, 1001, 935, 981, 823, 980, 972, 946, 1010, 988, 455, 654, 786, 487, 497, 655, 578, 695, 580, 494, 572, 632, 531, 679, 682, 597, 703, 541, 499, 610, 751, 479, 531, 662, 488, 617, 686, 645, 587, 400, 485, 354, 302, 436, 541, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 457, 667, 789, 582, 536, 676, 662, 705, 674, 510, 629, 660, 559, 748, 685, 610, 708, 610, 570, 640, 787, 514, 549, 728, 532, 619, 722, 661, 626, 403, 492, 368, 308, 445, 561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 460, 692, 813, 645, 594, 720, 739, 787, 763, 537, 655, 732, 581, 750, 688, 614, 759, 632, 581, 718, 795, 521, 584, 744, 613, 684, 785, 685, 705, 421, 496, 383, 311, 460, 653, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 494, 714, 818, 654, 696, 734, 801, 810, 766, 541, 700, 773, 588, 758, 750, 668, 793, 736, 628, 752, 801, 725, 595, 786, 618, 720, 805, 702, 711, 425, 499, 407, 330, 503, 679, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 502, 725, 872, 664, 796, 746, 855, 847, 800, 543, 723, 819, 608, 841, 765, 704, 811, 753, 641, 886, 884, 730, 669, 853, 623, 764, 846, 858, 714, 442, 602, 497, 370, 505, 704, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 676, 751, 874, 723, 861, 761, 866, 856, 822, 554, 742, 867, 681, 861, 777, 714, 820, 810, 709, 940, 890, 829, 729, 881, 697, 785, 905, 912, 719, 450, 604, 551, 385, 570, 707, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 781, 805, 922, 803, 873, 900, 872, 860, 875, 672, 805, 894, 696, 867, 823, 763, 851, 836, 760, 956, 899, 887, 807, 886, 780, 833, 935, 927, 723, 464, 627, 597, 411, 579, 722, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 824, 850, 957, 840, 888, 926, 905, 963, 878, 677, 885, 910, 725, 871, 855, 765, 949, 863, 845, 970, 927, 916, 869, 921, 812, 842, 961, 959, 766, 476, 630, 616, 419, 585, 770, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 910, 981, 971, 843, 891, 942, 964, 984, 917, 706, 921, 944, 762, 898, 889, 824, 957, 876, 856, 981, 982, 928, 872, 939, 835, 866, 967, 965, 785, 486, 651, 622, 429, 587, 786, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1010, 988, 975, 975, 916, 978, 1001, 990, 933, 745, 1007, 974, 936, 970, 1002, 982, 961, 907, 988, 987, 985, 941, 895, 955, 930, 910, 997, 981, 795, 521, 669, 639, 440, 649, 795, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1016, 990, 984, 1024, 985, 991, 1012, 1001, 959, 959, 1013, 976, 944, 1013, 1021, 1020, 989, 946, 1022, 1005, 989, 999, 1002, 1004, 984, 921, 1020, 1014, 1015, 538, 682, 654, 456, 733, 814, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 553, 755, 673, 583, 751, 843, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 562, 759, 702, 624, 757, 845, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 566, 812, 718, 724, 765, 852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 593, 838, 721, 731, 799, 864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 604, 858, 806, 735, 813, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 611, 894, 826, 742, 902, 904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 613, 916, 849, 772, 916, 926, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, 921, 908, 789, 932, 934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 673, 970, 945, 798, 955, 944, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 683, 997, 1019, 812, 960, 965, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 706, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 738, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 747, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 778, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 793, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 801, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 848, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 862, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 868, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 906, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 951, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 980, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 998, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1015, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; codec2-1.2.0/src/H_1024_2048_4f.h000066400000000000000000000010021445607075400155210ustar00rootroot00000000000000/* FILE....: H_1024_2048_4f.h Static arrays for LDPC codec H_1024_2048_4f, generated by ldpc_gen_c_h_file.m. */ #define H_1024_2048_4f_NUMBERPARITYBITS 1024 #define H_1024_2048_4f_MAX_ROW_WEIGHT 12 #define H_1024_2048_4f_CODELENGTH 2048 #define H_1024_2048_4f_NUMBERROWSHCOLS 1024 #define H_1024_2048_4f_MAX_COL_WEIGHT 54 #define H_1024_2048_4f_DEC_TYPE 0 #define H_1024_2048_4f_MAX_ITER 100 #include extern const uint16_t H_1024_2048_4f_H_rows[]; extern const uint16_t H_1024_2048_4f_H_cols[]; codec2-1.2.0/src/H_128_256_5.c000066400000000000000000000325201445607075400152230ustar00rootroot00000000000000/* FILE....: H_128_256_5.c Static arrays for LDPC codec H_128_256_5, generated by ldpc_gen_c_h_file.m. */ #include "H_128_256_5.h" #include const uint16_t H_128_256_5_H_rows[] = { 2, 44, 14, 2, 15, 36, 28, 19, 17, 7, 20, 11, 3, 9, 12, 13, 29, 7, 25, 11, 31, 13, 53, 15, 11, 6, 5, 61, 9, 13, 7, 22, 8, 10, 5, 11, 32, 9, 8, 35, 17, 13, 11, 33, 1, 33, 5, 14, 12, 21, 31, 1, 20, 2, 8, 7, 22, 4, 24, 31, 71, 20, 10, 51, 3, 65, 6, 41, 3, 40, 35, 10, 6, 16, 37, 24, 21, 4, 63, 8, 17, 9, 15, 5, 3, 7, 18, 33, 6, 36, 1, 5, 74, 27, 18, 24, 22, 8, 22, 26, 23, 14, 39, 4, 30, 24, 26, 29, 15, 2, 1, 3, 29, 23, 52, 56, 45, 12, 4, 28, 23, 53, 29, 14, 16, 1, 41, 18, 70, 66, 50, 19, 37, 46, 61, 21, 33, 32, 51, 21, 57, 28, 18, 37, 41, 23, 43, 47, 42, 16, 83, 64, 66, 19, 41, 62, 10, 44, 9, 24, 46, 30, 13, 16, 41, 17, 19, 39, 49, 54, 39, 43, 2, 55, 64, 26, 46, 45, 43, 12, 21, 6, 40, 52, 32, 20, 85, 34, 73, 25, 42, 57, 25, 83, 34, 53, 15, 61, 53, 46, 28, 36, 48, 51, 36, 25, 65, 44, 38, 72, 48, 68, 12, 16, 37, 35, 45, 39, 25, 40, 80, 38, 22, 32, 49, 34, 27, 57, 35, 34, 74, 19, 56, 38, 31, 32, 26, 82, 4, 18, 58, 56, 67, 77, 76, 60, 80, 44, 86, 68, 57, 27, 37, 20, 44, 29, 72, 71, 72, 42, 83, 50, 114, 48, 39, 67, 74, 30, 63, 51, 47, 68, 47, 36, 52, 95, 82, 38, 89, 70, 77, 53, 78, 76, 84, 78, 66, 64, 62, 55, 28, 17, 75, 27, 45, 68, 61, 67, 55, 49, 14, 73, 86, 42, 55, 71, 67, 23, 50, 10, 59, 74, 80, 57, 113, 50, 88, 30, 45, 90, 38, 105, 70, 66, 30, 86, 55, 59, 111, 89, 105, 63, 58, 31, 69, 48, 54, 82, 63, 85, 26, 27, 49, 85, 62, 52, 34, 70, 90, 59, 68, 74, 54, 60, 40, 60, 58, 40, 105, 87, 58, 75, 54, 35, 47, 84, 50, 56, 73, 78, 80, 97, 107, 62, 91, 49, 102, 71, 69, 33, 47, 46, 89, 103, 91, 83, 101, 97, 94, 65, 117, 66, 88, 73, 101, 42, 76, 88, 77, 90, 48, 105, 61, 104, 107, 52, 96, 100, 110, 60, 102, 92, 120, 79, 112, 87, 99, 81, 43, 93, 114, 101, 70, 80, 75, 93, 65, 79, 92, 77, 108, 59, 79, 81, 86, 95, 63, 51, 76, 86, 111, 81, 127, 98, 112, 100, 65, 91, 117, 110, 96, 73, 59, 100, 69, 92, 120, 98, 122, 72, 112, 84, 94, 103, 84, 85, 87, 88, 92, 77, 93, 116, 94, 79, 56, 111, 120, 64, 108, 107, 90, 89, 75, 87, 67, 43, 113, 107, 93, 76, 64, 105, 96, 88, 118, 94, 81, 89, 84, 98, 114, 78, 109, 115, 104, 78, 96, 54, 75, 58, 104, 115, 118, 113, 126, 110, 99, 95, 128, 119, 109, 82, 109, 98, 103, 113, 102, 113, 60, 119, 109, 106, 123, 128, 127, 117, 116, 81, 115, 124, 123, 99, 122, 91, 100, 97, 121, 112, 122, 116, 83, 125, 104, 108, 71, 102, 109, 93, 128, 95, 106, 103, 126, 110, 107, 69, 87, 123, 115, 120, 128, 100, 115, 123, 72, 121, 0, 118, 121, 85, 106, 101, 110, 101, 124, 99, 125, 117, 125, 97, 125, 106, 92, 114, 118, 91, 97, 108, 106, 126, 117, 104, 62, 114, 122, 123, 127, 126, 124, 95, 102, 124, 79, 124, 116, 111, 99, 90, 121, 127, 98, 111, 119, 96, 119, 108, 112, 119, 120, 103, 126, 122, 116, 94, 118, 82, 127, 69, 128, 125}; const uint16_t H_128_256_5_H_cols[] = { 45, 1, 13, 58, 27, 26, 10, 33, 14, 29, 12, 15, 16, 3, 5, 22, 9, 15, 4, 11, 8, 32, 18, 32, 19, 48, 38, 7, 17, 12, 21, 10, 9, 60, 40, 6, 5, 22, 9, 55, 17, 4, 19, 2, 39, 6, 15, 8, 41, 3, 11, 19, 23, 42, 34, 91, 13, 77, 48, 17, 7, 28, 13, 24, 6, 2, 10, 16, 54, 1, 2, 1, 10, 11, 37, 13, 15, 27, 30, 40, 26, 10, 2, 29, 59, 47, 32, 9, 23, 16, 1, 28, 36, 5, 6, 23, 4, 12, 5, 24, 3, 15, 13, 20, 18, 20, 21, 42, 9, 4, 57, 31, 2, 7, 27, 25, 7, 1, 8, 29, 35, 31, 21, 28, 40, 3, 23, 7, 52, 4, 65, 78, 35, 54, 18, 39, 29, 34, 20, 49, 22, 45, 24, 36, 36, 87, 8, 53, 12, 57, 52, 59, 62, 85, 86, 14, 108, 34, 51, 37, 44, 67, 71, 18, 16, 65, 40, 70, 27, 12, 35, 30, 50, 33, 17, 17, 44, 6, 14, 22, 26, 81, 43, 105, 58, 101, 55, 26, 19, 33, 53, 32, 43, 8, 42, 40, 71, 24, 43, 3, 46, 56, 41, 28, 25, 30, 44, 57, 34, 21, 5, 78, 68, 51, 55, 14, 74, 64, 32, 45, 42, 79, 20, 67, 34, 60, 30, 33, 11, 27, 50, 41, 66, 49, 53, 47, 11, 25, 73, 36, 14, 37, 57, 38, 24, 66, 18, 58, 64, 37, 29, 73, 75, 51, 59, 22, 91, 45, 69, 104, 47, 67, 31, 55, 31, 54, 25, 52, 30, 48, 69, 74, 38, 95, 26, 58, 50, 95, 101, 76, 65, 100, 94, 35, 113, 62, 60, 57, 46, 91, 88, 74, 75, 81, 43, 92, 37, 21, 44, 80, 63, 49, 20, 75, 87, 53, 54, 56, 68, 97, 46, 112, 64, 105, 69, 98, 28, 89, 76, 47, 63, 25, 51, 84, 79, 39, 50, 63, 61, 93, 99, 55, 46, 114, 49, 93, 50, 82, 23, 81, 82, 56, 83, 61, 98, 93, 64, 72, 46, 89, 48, 109, 78, 74, 33, 60, 38, 44, 80, 90, 75, 69, 96, 86, 19, 52, 92, 61, 16, 82, 61, 88, 65, 83, 111, 73, 67, 75, 56, 97, 77, 88, 95, 47, 111, 54, 85, 111, 84, 73, 56, 80, 38, 63, 36, 85, 35, 102, 83, 86, 41, 112, 39, 62, 53, 97, 114, 96, 78, 107, 99, 73, 123, 69, 78, 96, 88, 98, 101, 77, 87, 94, 90, 99, 68, 48, 51, 120, 89, 72, 109, 80, 97, 60, 64, 90, 71, 107, 49, 114, 100, 113, 72, 100, 41, 91, 79, 94, 66, 31, 101, 95, 123, 67, 61, 76, 68, 96, 106, 106, 86, 118, 90, 115, 58, 110, 39, 110, 84, 70, 100, 84, 114, 97, 84, 81, 87, 112, 52, 112, 85, 109, 74, 62, 70, 99, 118, 121, 103, 80, 104, 95, 45, 66, 104, 77, 59, 92, 120, 103, 76, 111, 113, 93, 107, 93, 62, 100, 79, 96, 108, 59, 126, 110, 112, 119, 92, 89, 86, 98, 82, 72, 43, 118, 42, 124, 109, 125, 81, 128, 104, 126, 77, 99, 121, 106, 91, 109, 124, 120, 128, 105, 107, 108, 124, 102, 108, 90, 125, 106, 103, 102, 127, 63, 102, 127, 117, 126, 125, 83, 120, 111, 76, 115, 122, 124, 71, 116, 123, 126, 94, 118, 70, 118, 83, 107, 79, 68, 115, 122, 126, 92, 122, 82, 113, 103, 125, 117, 116, 122, 101, 119, 113, 124, 66, 115, 88, 121, 104, 110, 127, 106, 119, 85, 105, 122, 98, 123, 116, 116, 105, 70, 72, 121, 128, 127, 108, 87, 117, 114, 119, 71, 110, 115, 103, 117, 128, 121, 89, 123, 116, 117, 0, 120, 94, 102, 128, 119, 125, 127}; const float H_128_256_5_input[] = { -8.8994349771084629, -2.2264881688239941, 15.221530002446757, -0.39525362027279998, 13.442727654278771, -10.000442582434765, 8.5404090461277598, 16.432027973130197, 14.246872691160114, 2.6448289703038665, 11.863343696232654, 4.174651054544948, 10.288062518986955, 12.085683283784871, 3.4121899888598004, 9.1115751924588562, -10.810079499566237, 1.3739160908287105, 10.193128819909694, 3.5997991319409715, 15.252939624442645, 7.8059185917026843, -1.141552617398524, -5.4585533732512204, -7.1985417950651627, -11.078712541348164, -3.7197747259098599, -6.9715544083806256, 4.8350467668286372, -8.4378844630126757, 9.2909631551985523, -13.264491023395877, 13.29420431281155, -16.107993796779667, -6.308916359108748, 11.90542068917763, -17.405334641933944, 6.4284228626032878, 3.0768153742069018, 11.853700717454576, 17.640154289991976, -5.2721404813136417, 20.584732959872778, -6.7125902650906779, 6.5978715835307131, -6.1735464272366514, 6.3164198345461697, -14.401260649632755, -14.487703458954298, -5.8513629748056406, 5.5729511574836881, -9.013132752980674, 8.9988683878222044, -11.263912700584942, 13.485110330806128, -4.8625805463887231, -8.9173751521280824, 10.960944349100908, -14.772741989217471, 1.1368460179590478, 10.533109114159828, -1.731122993192219, 6.0498682584846524, 13.360259295000249, -8.1132970979856438, 9.5693771119534112, -12.578014725946508, 7.0229599627046593, 4.3720950386342494, 14.366897307196593, -0.2595503946882991, -8.822187045424192, -17.794267274108481, -2.7237117577689975, 11.097280635523761, 9.7949231987861634, 15.294276496861425, 6.0841375010899243, 11.169445345055827, 11.904159075277251, 9.1840263923068974, -5.5011617203311012, 16.754980283161505, 7.5513624901915035, -12.170700227106005, -11.483103606370603, -12.025806209056533, 5.1085406001744822, 13.373965752403866, -13.93398032921742, -3.3375271260328137, -5.0546492889404364, 3.4021410284759925, 6.2487730438409157, -12.667072890747553, -10.733091469360994, -12.179180763062972, 11.176700470191063, -11.616901732983612, -10.119483446721208, -8.6850004796910767, -12.677334280090912, -4.3454670403804858, -9.6582743438569203, -9.4373477042683529, -5.0933688337275695, 14.946470562034275, -9.5827796114077728, -12.579787690724327, -5.1317618464667945, 9.7995335974617479, 3.935671855878343, -5.120219966909672, -1.0737815811081737, 12.262597164050909, 12.930462261713524, -10.002664845731484, 8.6911316894060171, 10.515367492600749, 17.842791232413518, 11.503068266000463, 0.7672764564891652, 14.793448459789646, 8.1945046885718504, -8.1324447231556771, 10.265204571293244, 10.433947332186976, -13.070884283907548, -8.3960998416231085, 4.9148913185470375, -10.422874683972211, -11.088739385454351, -5.2623788916708749, -9.4339832891969255, -1.6059826144931535, 11.258751578423034, 12.782380682326652, 10.796361068381742, 13.81940336087583, 6.0191480445312484, 5.0635927171792945, 8.8888332858691825, -5.8812839036685194, 13.782784721594529, 12.501681731989231, 11.315875387889772, -3.773961578229545, 10.665302965437366, 1.2443349889724857, 10.748108985336613, -10.647273973137242, -13.375772243768143, 10.778336161253916, 13.520253518547392, -0.31609537750065214, -2.475823983608934, -8.0419367447924746, -6.4823648863210481, -4.5798319665012235, 12.710284434647598, 11.140388782304239, 8.018507577316937, -12.549284695242829, 14.887316703670896, 15.010107967429951, -15.399171325118063, -8.0816667358175973, -6.6302855944401404, 10.566758114915686, -9.6712985774865867, -10.989892866088582, -2.9502229280575123, -7.8748744688277927, 13.391186021456775, -13.450214789026996, -6.4126752277302099, -11.16710059702414, -7.2444144765480658, -5.5672969972856778, -8.8773312015249726, 13.719522588578332, 11.07457454354517, 8.7479356580553347, 0.58609202162242569, -18.723523952614787, -1.9397327392511032, -8.6455901886153637, 9.2918044013476511, 4.8898010354938704, -6.9894142182003609, -0.1191884647878291, -13.44984965914426, -3.4596444772305261, 5.1319125752378314, -10.427093821749148, -8.5064597147739125, 14.736880938095643, -15.211136760645743, -10.38069323739759, 0.087732074612520833, -4.7977922493487748, 3.1108186580087001, 8.1492732382718991, -2.7096006449185972, 9.4614578695259421, -18.242468149470778, -10.800555835992892, -5.8325818881984466, 16.216906744162525, 16.028982056738251, 13.841633178111548, 3.301741016692473, -13.962273950825141, -12.080675707754205, 7.6736779018117174, 11.959683046750843, -9.8186269532308081, -6.8666083041682322, 10.854650842369852, -17.865310956014465, 13.342746302221908, 10.237148734886931, -9.5317378135033763, -3.3932680342422912, 11.135022697187321, -5.8464827434562983, -10.855498726923935, -10.389826062676315, 17.22405328987611, -8.6670566421031872, -4.4906061687679069, -13.926679140242809, 4.6527756761303296, 11.459319592377085, 16.469693825200174, -3.2267090796784621, -8.508420245307466, -14.014716857177133, 17.46825981866947, 8.7394092695610119, -10.559493481189753, 12.767938048701128, 15.138604949078795, 11.992106918420994, -4.1009466576601428, 10.895797683842719, -11.102485145032849, 9.2740371065936902, 5.0223781181934672, -13.009215931560048, -2.4537770130506042, 9.4538398738987919, -9.4463497897265984, -7.4868090201247508, 4.9784182834226272, 8.3854387393004792}; const char H_128_256_5_detected_data[] = { 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0}; codec2-1.2.0/src/H_128_256_5.h000066400000000000000000000010631445607075400152260ustar00rootroot00000000000000/* FILE....: H_128_256_5.h Static arrays for LDPC codec H_128_256_5, generated by ldpc_gen_c_h_file.m. */ #define H_128_256_5_NUMBERPARITYBITS 128 #define H_128_256_5_MAX_ROW_WEIGHT 5 #define H_128_256_5_CODELENGTH 256 #define H_128_256_5_NUMBERROWSHCOLS 128 #define H_128_256_5_MAX_COL_WEIGHT 5 #define H_128_256_5_DEC_TYPE 0 #define H_128_256_5_MAX_ITER 100 #include extern const uint16_t H_128_256_5_H_rows[]; extern const uint16_t H_128_256_5_H_cols[]; extern const float H_128_256_5_input[]; extern const char H_128_256_5_detected_data[]; codec2-1.2.0/src/H_16200_9720.c000066400000000000000000041246151445607075400152350ustar00rootroot00000000000000/* FILE....: H_16200_9720.c Static arrays for LDPC codec H_16200_9720, generated by ldpc_gen_c_h_file.m. */ #include "H_16200_9720.h" #include const uint16_t H_16200_9720_H_rows[] = { 4, 446, 699, 410, 240, 94, 285, 44, 122, 1210, 173, 208, 559, 707, 162, 319, 844, 389, 5, 447, 700, 411, 241, 95, 286, 45, 123, 1211, 174, 209, 560, 708, 163, 320, 845, 390, 6, 448, 701, 412, 242, 96, 287, 46, 124, 1212, 175, 210, 561, 709, 164, 321, 846, 391, 7, 449, 702, 413, 243, 97, 288, 47, 125, 1213, 176, 211, 562, 710, 165, 322, 847, 392, 8, 450, 703, 414, 244, 98, 289, 48, 126, 1214, 177, 212, 563, 711, 166, 323, 848, 393, 9, 451, 704, 415, 245, 99, 290, 49, 127, 1215, 178, 213, 564, 712, 167, 324, 849, 394, 10, 452, 705, 416, 246, 100, 291, 50, 128, 1216, 179, 214, 565, 713, 168, 325, 850, 395, 11, 453, 706, 417, 247, 101, 292, 51, 129, 1217, 180, 215, 566, 714, 169, 326, 851, 396, 12, 454, 707, 418, 248, 102, 293, 52, 130, 1218, 181, 216, 567, 715, 170, 327, 852, 397, 13, 455, 708, 419, 249, 103, 294, 53, 131, 1219, 182, 217, 568, 716, 171, 328, 853, 398, 14, 456, 709, 420, 250, 104, 295, 54, 132, 1220, 183, 218, 569, 717, 172, 329, 854, 399, 15, 457, 710, 421, 251, 105, 296, 55, 133, 1221, 184, 219, 570, 361, 173, 330, 855, 400, 16, 458, 711, 422, 252, 106, 297, 56, 134, 1222, 185, 220, 571, 362, 174, 331, 856, 401, 17, 459, 712, 423, 253, 107, 298, 57, 135, 1223, 186, 221, 572, 363, 175, 332, 857, 402, 18, 460, 713, 424, 254, 108, 299, 58, 136, 1224, 187, 222, 573, 361, 176, 333, 858, 403, 19, 461, 714, 425, 255, 109, 300, 59, 137, 1225, 188, 223, 574, 362, 177, 334, 859, 404, 20, 462, 715, 426, 256, 110, 301, 60, 138, 1226, 189, 224, 575, 363, 178, 335, 860, 405, 21, 463, 716, 427, 257, 111, 302, 61, 139, 1227, 190, 225, 576, 364, 179, 336, 861, 406, 22, 464, 717, 428, 258, 112, 303, 62, 140, 1228, 191, 226, 577, 365, 180, 337, 862, 407, 23, 465, 718, 429, 259, 113, 304, 63, 141, 1229, 192, 227, 578, 366, 181, 338, 863, 408, 24, 466, 719, 430, 260, 114, 305, 64, 142, 1230, 193, 228, 579, 367, 182, 339, 864, 409, 25, 467, 720, 431, 261, 115, 306, 65, 143, 1231, 194, 229, 580, 368, 183, 340, 865, 410, 26, 468, 361, 432, 262, 116, 307, 66, 144, 1232, 195, 230, 581, 369, 184, 341, 866, 411, 27, 469, 362, 433, 263, 117, 308, 67, 145, 1233, 196, 231, 582, 370, 185, 342, 867, 412, 28, 470, 363, 434, 264, 118, 309, 68, 146, 1234, 197, 232, 583, 371, 186, 343, 868, 413, 29, 471, 364, 435, 265, 119, 310, 69, 147, 1235, 198, 233, 584, 372, 187, 344, 869, 414, 30, 472, 365, 436, 266, 120, 311, 70, 148, 1236, 199, 234, 585, 373, 188, 345, 870, 415, 31, 473, 366, 437, 267, 121, 312, 71, 149, 1237, 200, 235, 586, 374, 189, 346, 871, 416, 32, 474, 367, 438, 268, 122, 313, 72, 150, 1238, 201, 236, 587, 375, 190, 347, 872, 417, 33, 475, 368, 439, 269, 123, 314, 73, 151, 1239, 202, 237, 588, 376, 191, 348, 873, 418, 34, 476, 369, 440, 1, 124, 315, 74, 152, 1240, 203, 238, 589, 377, 192, 349, 874, 419, 35, 477, 370, 441, 2, 125, 316, 75, 153, 1241, 204, 239, 590, 378, 193, 350, 875, 420, 36, 478, 371, 442, 3, 126, 317, 76, 154, 1242, 205, 240, 591, 379, 194, 351, 876, 421, 37, 479, 372, 443, 4, 127, 318, 77, 155, 1243, 206, 241, 592, 380, 195, 352, 877, 422, 38, 480, 373, 444, 5, 128, 319, 78, 156, 1244, 207, 242, 593, 381, 196, 353, 878, 423, 39, 481, 374, 445, 6, 129, 320, 79, 157, 1245, 208, 243, 594, 382, 197, 354, 879, 424, 40, 482, 375, 446, 7, 130, 321, 80, 158, 1246, 209, 244, 595, 383, 198, 355, 880, 425, 41, 483, 376, 447, 8, 131, 322, 81, 159, 1247, 210, 245, 596, 384, 199, 356, 881, 426, 42, 484, 377, 448, 9, 132, 323, 82, 160, 1248, 211, 246, 597, 385, 200, 357, 882, 427, 43, 485, 378, 449, 10, 133, 324, 83, 161, 1249, 212, 247, 598, 386, 201, 358, 883, 428, 44, 486, 379, 361, 11, 134, 325, 84, 162, 1250, 213, 248, 599, 387, 202, 359, 884, 429, 45, 487, 380, 362, 12, 135, 326, 85, 163, 1251, 214, 249, 600, 388, 203, 360, 885, 430, 46, 488, 381, 363, 13, 136, 327, 86, 164, 1252, 215, 250, 601, 389, 204, 1, 886, 431, 47, 489, 382, 364, 14, 137, 328, 87, 165, 1253, 216, 251, 602, 390, 205, 2, 887, 432, 48, 490, 383, 365, 15, 138, 329, 88, 166, 1254, 217, 252, 603, 391, 206, 3, 888, 433, 49, 491, 384, 366, 16, 139, 330, 89, 167, 1255, 218, 253, 604, 392, 207, 4, 889, 434, 50, 492, 385, 367, 17, 140, 331, 90, 168, 1256, 219, 254, 605, 393, 208, 5, 890, 435, 51, 493, 386, 368, 18, 141, 332, 91, 169, 1257, 220, 255, 606, 394, 209, 6, 891, 436, 52, 494, 387, 369, 19, 142, 333, 92, 170, 1258, 221, 256, 607, 395, 210, 7, 892, 437, 53, 495, 388, 370, 20, 143, 334, 93, 171, 1259, 222, 257, 608, 396, 211, 8, 893, 438, 54, 496, 389, 371, 21, 144, 335, 94, 172, 1260, 223, 258, 609, 397, 212, 9, 894, 439, 55, 497, 390, 372, 22, 145, 336, 95, 173, 1261, 224, 259, 610, 398, 213, 10, 895, 440, 56, 498, 391, 373, 23, 146, 337, 96, 174, 1262, 225, 260, 611, 399, 214, 11, 896, 441, 57, 499, 392, 374, 24, 147, 338, 97, 175, 1263, 226, 261, 612, 400, 215, 12, 897, 442, 58, 500, 393, 375, 25, 148, 339, 98, 176, 1264, 227, 262, 613, 401, 216, 13, 898, 443, 59, 501, 394, 376, 26, 149, 340, 99, 177, 1265, 228, 263, 614, 402, 217, 14, 899, 444, 60, 502, 395, 377, 27, 150, 341, 100, 178, 1266, 229, 264, 615, 403, 218, 15, 900, 445, 61, 503, 396, 378, 28, 151, 342, 101, 179, 1267, 230, 265, 616, 404, 219, 16, 901, 446, 62, 504, 397, 379, 29, 152, 343, 102, 180, 1268, 231, 266, 617, 405, 220, 17, 902, 447, 63, 505, 398, 380, 30, 153, 344, 103, 181, 1269, 232, 267, 618, 406, 221, 18, 903, 448, 64, 506, 399, 381, 31, 154, 345, 104, 182, 1270, 233, 268, 619, 407, 222, 19, 904, 449, 65, 507, 400, 382, 32, 155, 346, 105, 183, 1271, 234, 269, 620, 408, 223, 20, 905, 450, 66, 508, 401, 383, 33, 156, 347, 106, 184, 1272, 235, 270, 621, 409, 224, 21, 906, 451, 67, 509, 402, 384, 34, 157, 348, 107, 185, 1273, 236, 271, 622, 410, 225, 22, 907, 452, 68, 510, 403, 385, 35, 158, 349, 108, 186, 1274, 237, 272, 623, 411, 226, 23, 908, 453, 69, 511, 404, 386, 36, 159, 350, 109, 187, 1275, 238, 273, 624, 412, 227, 24, 909, 454, 70, 512, 405, 387, 37, 160, 351, 110, 188, 1276, 239, 274, 625, 413, 228, 25, 910, 455, 71, 513, 406, 388, 38, 161, 352, 111, 189, 1277, 240, 275, 626, 414, 229, 26, 911, 456, 72, 514, 407, 389, 39, 162, 353, 112, 190, 1278, 241, 276, 627, 415, 230, 27, 912, 457, 73, 515, 408, 390, 40, 163, 354, 113, 191, 1279, 242, 277, 628, 416, 231, 28, 913, 458, 74, 516, 409, 391, 41, 164, 355, 114, 192, 1280, 243, 278, 629, 417, 232, 29, 914, 459, 75, 517, 410, 392, 42, 165, 356, 115, 193, 1281, 244, 279, 630, 418, 233, 30, 915, 460, 76, 518, 411, 393, 43, 166, 357, 116, 194, 1282, 245, 280, 631, 419, 234, 31, 916, 461, 77, 519, 412, 394, 44, 167, 358, 117, 195, 1283, 246, 281, 632, 420, 235, 32, 917, 462, 78, 520, 413, 395, 45, 168, 359, 118, 196, 1284, 247, 282, 633, 421, 236, 33, 918, 463, 79, 521, 414, 396, 46, 169, 360, 119, 197, 1285, 248, 283, 634, 422, 237, 34, 919, 464, 80, 522, 415, 397, 47, 170, 1, 120, 198, 1286, 249, 284, 635, 423, 238, 35, 920, 465, 81, 523, 416, 398, 48, 171, 2, 121, 199, 1287, 250, 285, 636, 424, 239, 36, 921, 466, 82, 524, 417, 399, 49, 172, 3, 122, 200, 1288, 251, 286, 637, 425, 240, 37, 922, 467, 83, 525, 418, 400, 50, 173, 4, 123, 201, 1289, 252, 287, 638, 426, 241, 38, 923, 468, 84, 526, 419, 401, 51, 174, 5, 124, 202, 1290, 253, 288, 639, 427, 242, 39, 924, 469, 85, 527, 420, 402, 52, 175, 6, 125, 203, 1291, 254, 289, 640, 428, 243, 40, 925, 470, 86, 528, 421, 403, 53, 176, 7, 126, 204, 1292, 255, 290, 641, 429, 244, 41, 926, 471, 87, 529, 422, 404, 54, 177, 8, 127, 205, 1293, 256, 291, 642, 430, 245, 42, 927, 472, 88, 530, 423, 405, 55, 178, 9, 128, 206, 1294, 257, 292, 643, 431, 246, 43, 928, 473, 89, 531, 424, 406, 56, 179, 10, 129, 207, 1295, 258, 293, 644, 432, 247, 44, 929, 474, 90, 532, 425, 407, 57, 180, 11, 130, 208, 1296, 259, 294, 645, 433, 248, 45, 930, 475, 91, 533, 426, 408, 58, 181, 12, 131, 209, 1297, 260, 295, 646, 434, 249, 46, 931, 476, 92, 534, 427, 409, 59, 182, 13, 132, 210, 1298, 261, 296, 647, 435, 250, 47, 932, 477, 93, 535, 428, 410, 60, 183, 14, 133, 211, 1299, 262, 297, 648, 436, 251, 48, 933, 478, 94, 536, 429, 411, 61, 184, 15, 134, 212, 1300, 263, 298, 649, 437, 252, 49, 934, 479, 95, 537, 430, 412, 62, 185, 16, 135, 213, 1301, 264, 299, 650, 438, 253, 50, 935, 480, 96, 538, 431, 413, 63, 186, 17, 136, 214, 1302, 265, 300, 651, 439, 254, 51, 936, 481, 97, 539, 432, 414, 64, 187, 18, 137, 215, 1303, 266, 301, 652, 440, 255, 52, 937, 482, 98, 540, 433, 415, 65, 188, 19, 138, 216, 1304, 267, 302, 653, 441, 256, 53, 938, 483, 99, 541, 434, 416, 66, 189, 20, 139, 217, 1305, 268, 303, 654, 442, 257, 54, 939, 484, 100, 542, 435, 417, 67, 190, 21, 140, 218, 1306, 269, 304, 655, 443, 258, 55, 940, 485, 101, 543, 436, 418, 68, 191, 22, 141, 219, 1307, 270, 305, 656, 444, 259, 56, 941, 486, 102, 544, 437, 419, 69, 192, 23, 142, 220, 1308, 271, 306, 657, 445, 260, 57, 942, 487, 103, 545, 438, 420, 70, 193, 24, 143, 221, 1309, 272, 307, 658, 446, 261, 58, 943, 488, 104, 546, 439, 421, 71, 194, 25, 144, 222, 1310, 273, 308, 659, 447, 262, 59, 944, 489, 105, 547, 440, 422, 72, 195, 26, 145, 223, 1311, 274, 309, 660, 448, 263, 60, 945, 490, 106, 548, 441, 423, 73, 196, 27, 146, 224, 1312, 275, 310, 661, 449, 264, 61, 946, 491, 107, 549, 442, 424, 74, 197, 28, 147, 225, 1313, 276, 311, 662, 450, 265, 62, 947, 492, 108, 550, 443, 425, 75, 198, 29, 148, 226, 1314, 277, 312, 663, 451, 266, 63, 948, 493, 109, 551, 444, 426, 76, 199, 30, 149, 227, 1315, 278, 313, 664, 452, 267, 64, 949, 494, 110, 552, 445, 427, 77, 200, 31, 150, 228, 1316, 279, 314, 665, 453, 268, 65, 950, 495, 111, 553, 446, 428, 78, 201, 32, 151, 229, 1317, 280, 315, 666, 454, 269, 66, 951, 496, 112, 554, 447, 429, 79, 202, 33, 152, 230, 1318, 281, 316, 667, 455, 270, 67, 952, 497, 113, 555, 448, 430, 80, 203, 34, 153, 231, 1319, 282, 317, 668, 456, 271, 68, 953, 498, 114, 556, 449, 431, 81, 204, 35, 154, 232, 1320, 283, 318, 669, 457, 272, 69, 954, 499, 115, 557, 450, 432, 82, 205, 36, 155, 233, 1321, 284, 319, 670, 458, 273, 70, 955, 500, 116, 558, 451, 433, 83, 206, 37, 156, 234, 1322, 285, 320, 671, 459, 274, 71, 956, 501, 117, 559, 452, 434, 84, 207, 38, 157, 235, 1323, 286, 321, 672, 460, 275, 72, 957, 502, 118, 560, 453, 435, 85, 208, 39, 158, 236, 1324, 287, 322, 673, 461, 276, 73, 958, 503, 119, 561, 454, 436, 86, 209, 40, 159, 237, 1325, 288, 323, 674, 462, 277, 74, 959, 504, 120, 562, 455, 437, 87, 210, 41, 160, 238, 1326, 289, 324, 675, 463, 278, 75, 960, 505, 121, 563, 456, 438, 88, 211, 42, 161, 239, 1327, 290, 325, 676, 464, 279, 76, 961, 506, 122, 564, 457, 439, 89, 212, 43, 162, 240, 1328, 291, 326, 677, 465, 280, 77, 962, 507, 123, 565, 458, 440, 90, 213, 44, 163, 241, 1329, 292, 327, 678, 466, 281, 78, 963, 508, 124, 566, 459, 441, 91, 214, 45, 164, 242, 1330, 293, 328, 679, 467, 282, 79, 964, 509, 125, 567, 460, 442, 1, 215, 46, 165, 243, 1331, 294, 329, 680, 468, 283, 80, 965, 510, 126, 568, 461, 443, 2, 216, 47, 166, 244, 1332, 295, 330, 361, 469, 284, 81, 966, 511, 127, 569, 462, 444, 3, 217, 48, 167, 245, 1333, 296, 331, 362, 470, 285, 82, 967, 512, 128, 570, 463, 445, 4, 218, 49, 168, 246, 1334, 297, 332, 363, 471, 286, 83, 968, 513, 129, 571, 464, 446, 5, 219, 50, 169, 247, 1335, 298, 333, 364, 472, 287, 84, 969, 514, 130, 572, 465, 447, 6, 220, 51, 170, 248, 1336, 299, 334, 365, 473, 288, 85, 970, 515, 131, 573, 466, 448, 7, 221, 52, 171, 249, 1337, 300, 335, 366, 474, 289, 86, 971, 516, 132, 574, 467, 449, 8, 222, 53, 172, 250, 1338, 301, 336, 367, 475, 290, 87, 972, 517, 133, 575, 468, 450, 9, 223, 54, 173, 251, 1339, 302, 337, 368, 476, 291, 88, 973, 518, 134, 576, 469, 451, 10, 224, 55, 174, 252, 1340, 303, 338, 369, 477, 292, 89, 974, 519, 135, 577, 470, 452, 11, 225, 56, 175, 253, 1341, 304, 339, 370, 478, 293, 90, 975, 520, 136, 578, 471, 453, 12, 226, 57, 176, 254, 1342, 305, 340, 371, 479, 294, 91, 976, 521, 137, 579, 472, 454, 13, 227, 58, 177, 255, 1343, 306, 341, 372, 480, 295, 92, 977, 522, 138, 580, 473, 455, 14, 228, 59, 178, 256, 1344, 307, 342, 373, 481, 296, 93, 978, 523, 139, 581, 474, 456, 15, 229, 60, 179, 257, 1345, 308, 343, 374, 482, 297, 94, 979, 524, 140, 582, 475, 457, 16, 230, 61, 180, 258, 1346, 309, 344, 375, 483, 298, 95, 980, 525, 141, 583, 476, 458, 17, 231, 62, 181, 259, 1347, 310, 345, 376, 484, 299, 96, 981, 526, 142, 584, 477, 459, 18, 232, 63, 182, 260, 1348, 311, 346, 377, 485, 300, 97, 982, 527, 143, 585, 478, 460, 19, 233, 64, 183, 261, 1349, 312, 347, 378, 486, 301, 98, 983, 528, 144, 586, 479, 461, 20, 234, 65, 184, 262, 1350, 313, 348, 379, 487, 302, 99, 984, 529, 145, 587, 480, 462, 21, 235, 66, 185, 263, 1351, 314, 349, 380, 488, 303, 100, 985, 530, 146, 588, 481, 463, 22, 236, 67, 186, 264, 1352, 315, 350, 381, 489, 304, 101, 986, 531, 147, 589, 482, 464, 23, 237, 68, 187, 265, 1353, 316, 351, 382, 490, 305, 102, 987, 532, 148, 590, 483, 465, 24, 238, 69, 188, 266, 1354, 317, 352, 383, 491, 306, 103, 988, 533, 149, 591, 484, 466, 25, 239, 70, 189, 267, 1355, 318, 353, 384, 492, 307, 104, 989, 534, 150, 592, 485, 467, 26, 240, 71, 190, 268, 1356, 319, 354, 385, 493, 308, 105, 990, 535, 151, 593, 486, 468, 27, 241, 72, 191, 269, 1357, 320, 355, 386, 494, 309, 106, 991, 536, 152, 594, 487, 469, 28, 242, 73, 192, 270, 1358, 321, 356, 387, 495, 310, 107, 992, 537, 153, 595, 488, 470, 29, 243, 74, 193, 271, 1359, 322, 357, 388, 496, 311, 108, 993, 538, 154, 596, 489, 471, 30, 244, 75, 194, 272, 1360, 323, 358, 389, 497, 312, 109, 994, 539, 155, 597, 490, 472, 31, 245, 76, 195, 273, 1361, 324, 359, 390, 498, 313, 110, 995, 540, 156, 598, 491, 473, 32, 246, 77, 196, 274, 1362, 325, 360, 391, 499, 314, 111, 996, 541, 157, 599, 492, 474, 33, 247, 78, 197, 275, 1363, 326, 1, 392, 500, 315, 112, 997, 542, 158, 600, 493, 475, 34, 248, 79, 198, 276, 1364, 327, 2, 393, 501, 316, 113, 998, 543, 159, 601, 494, 476, 35, 249, 80, 199, 277, 1365, 328, 3, 394, 502, 317, 114, 999, 544, 160, 602, 495, 477, 36, 250, 81, 200, 278, 1366, 329, 4, 395, 503, 318, 115, 1000, 545, 161, 603, 496, 478, 37, 251, 82, 201, 279, 1367, 330, 5, 396, 504, 1, 116, 1001, 546, 162, 604, 497, 479, 38, 252, 83, 202, 280, 1368, 331, 6, 397, 505, 2, 117, 1002, 547, 163, 605, 498, 480, 39, 253, 84, 203, 281, 1369, 332, 7, 398, 506, 3, 118, 1003, 548, 164, 606, 499, 481, 40, 254, 85, 204, 282, 1370, 333, 8, 399, 507, 4, 119, 1004, 549, 165, 607, 500, 482, 41, 255, 86, 205, 283, 1371, 334, 9, 400, 508, 5, 120, 1005, 550, 166, 608, 501, 483, 42, 256, 87, 206, 284, 1372, 335, 10, 361, 509, 6, 121, 1006, 551, 167, 609, 502, 484, 43, 257, 88, 207, 285, 1373, 336, 11, 362, 510, 7, 122, 1007, 552, 168, 610, 503, 485, 44, 258, 89, 208, 286, 1374, 337, 12, 363, 511, 8, 123, 1008, 553, 169, 611, 504, 486, 45, 259, 90, 209, 287, 1375, 338, 13, 364, 512, 9, 124, 1009, 554, 170, 612, 505, 487, 46, 260, 91, 210, 288, 1376, 339, 14, 365, 513, 10, 125, 1010, 555, 171, 613, 506, 488, 47, 261, 92, 211, 289, 1377, 340, 15, 366, 514, 11, 126, 1011, 556, 172, 614, 507, 489, 48, 262, 93, 212, 290, 1378, 341, 16, 367, 515, 12, 127, 1012, 557, 173, 615, 508, 490, 49, 263, 94, 213, 291, 1379, 342, 17, 368, 516, 13, 128, 1013, 558, 174, 616, 509, 491, 50, 264, 95, 214, 292, 1380, 343, 18, 369, 517, 14, 129, 1014, 559, 175, 617, 510, 492, 51, 265, 96, 215, 293, 1381, 344, 19, 370, 518, 15, 130, 1015, 560, 176, 618, 511, 493, 52, 266, 97, 216, 294, 1382, 345, 20, 371, 519, 16, 131, 1016, 561, 177, 619, 512, 494, 53, 267, 98, 217, 295, 1383, 346, 21, 372, 520, 17, 132, 1017, 562, 178, 620, 513, 495, 54, 268, 99, 218, 296, 1384, 347, 22, 373, 521, 18, 133, 1018, 563, 179, 621, 514, 496, 55, 269, 100, 219, 297, 1385, 348, 23, 374, 522, 19, 134, 1019, 564, 180, 622, 515, 497, 56, 270, 101, 220, 298, 1386, 349, 24, 375, 523, 20, 135, 1020, 565, 181, 623, 516, 498, 57, 271, 102, 221, 299, 1387, 350, 25, 376, 524, 21, 136, 1021, 566, 182, 624, 517, 499, 58, 272, 103, 222, 300, 1388, 351, 26, 377, 525, 22, 137, 1022, 567, 183, 625, 518, 500, 59, 273, 104, 223, 301, 1389, 352, 27, 378, 526, 23, 138, 1023, 568, 184, 626, 519, 501, 60, 274, 105, 224, 302, 1390, 353, 28, 379, 527, 24, 139, 1024, 569, 185, 627, 520, 502, 61, 275, 106, 225, 303, 1391, 354, 29, 380, 528, 25, 140, 1025, 570, 186, 628, 521, 503, 62, 276, 107, 226, 304, 1392, 355, 30, 381, 529, 26, 141, 1026, 571, 187, 629, 522, 504, 63, 277, 108, 227, 305, 1393, 356, 31, 382, 530, 27, 142, 1027, 572, 188, 630, 523, 505, 64, 278, 109, 228, 306, 1394, 357, 32, 383, 531, 28, 143, 1028, 573, 189, 631, 524, 506, 65, 279, 110, 229, 307, 1395, 358, 33, 384, 532, 29, 144, 1029, 574, 190, 632, 525, 507, 66, 280, 111, 230, 308, 1396, 359, 34, 385, 533, 30, 145, 1030, 575, 191, 633, 526, 508, 67, 281, 112, 231, 309, 1397, 360, 35, 386, 534, 31, 146, 1031, 576, 192, 634, 527, 509, 68, 282, 113, 232, 310, 1398, 1, 36, 387, 535, 32, 147, 1032, 577, 193, 635, 528, 510, 69, 283, 114, 233, 311, 1399, 2, 37, 388, 536, 33, 148, 1033, 578, 194, 636, 529, 511, 70, 284, 115, 234, 312, 1400, 3, 38, 389, 537, 34, 149, 1034, 579, 195, 637, 530, 512, 71, 285, 116, 235, 313, 1401, 4, 39, 390, 538, 35, 150, 1035, 580, 196, 638, 531, 513, 72, 286, 117, 236, 314, 1402, 5, 40, 391, 539, 36, 151, 1036, 581, 197, 639, 532, 514, 73, 287, 118, 237, 315, 1403, 6, 41, 392, 540, 37, 152, 1037, 582, 198, 640, 533, 515, 74, 288, 119, 238, 316, 1404, 7, 42, 393, 541, 38, 153, 1038, 583, 199, 641, 534, 516, 75, 289, 120, 239, 317, 1405, 8, 43, 394, 542, 39, 154, 1039, 584, 200, 642, 535, 517, 76, 290, 121, 240, 318, 1406, 9, 44, 395, 543, 40, 155, 1040, 585, 201, 643, 536, 518, 77, 291, 122, 241, 319, 1407, 10, 45, 396, 544, 41, 156, 1041, 586, 202, 644, 537, 519, 78, 292, 123, 242, 320, 1408, 11, 46, 397, 545, 42, 157, 1042, 587, 203, 645, 538, 520, 79, 293, 124, 243, 321, 1409, 12, 47, 398, 546, 1, 158, 1043, 588, 204, 646, 539, 521, 80, 294, 125, 244, 322, 1410, 13, 48, 399, 547, 2, 159, 1044, 589, 205, 647, 540, 522, 81, 295, 126, 245, 323, 1411, 14, 49, 400, 548, 3, 160, 1045, 590, 206, 648, 541, 523, 82, 296, 127, 246, 324, 1412, 15, 50, 401, 549, 4, 161, 1046, 591, 207, 649, 542, 524, 83, 297, 128, 247, 325, 1413, 16, 51, 402, 550, 5, 162, 1047, 592, 208, 650, 543, 525, 84, 298, 129, 248, 326, 1414, 17, 52, 403, 551, 6, 163, 1048, 593, 209, 651, 544, 526, 85, 299, 130, 249, 327, 1415, 18, 53, 404, 552, 7, 164, 1049, 594, 210, 652, 545, 527, 86, 300, 131, 250, 328, 1416, 19, 54, 405, 553, 8, 165, 1050, 595, 211, 653, 546, 528, 87, 301, 132, 251, 329, 1417, 20, 55, 406, 554, 9, 166, 1051, 596, 212, 654, 547, 529, 88, 302, 133, 252, 330, 1418, 21, 56, 407, 555, 10, 167, 1052, 597, 213, 655, 548, 530, 89, 303, 134, 253, 331, 1419, 22, 57, 408, 556, 11, 168, 1053, 598, 214, 656, 549, 531, 90, 304, 135, 254, 332, 1420, 23, 58, 409, 557, 12, 169, 1054, 599, 215, 657, 550, 532, 91, 305, 136, 255, 333, 1421, 24, 59, 410, 558, 13, 170, 1055, 600, 216, 658, 551, 533, 92, 306, 137, 256, 334, 1422, 25, 60, 411, 559, 14, 171, 1056, 601, 217, 659, 552, 534, 93, 307, 138, 257, 335, 1423, 26, 61, 412, 560, 15, 172, 1057, 602, 218, 660, 553, 535, 94, 308, 139, 258, 336, 1424, 27, 62, 413, 561, 16, 173, 1058, 603, 219, 661, 554, 536, 95, 309, 140, 259, 337, 1425, 28, 63, 414, 562, 17, 174, 1059, 604, 220, 662, 555, 537, 96, 310, 141, 260, 338, 1426, 29, 64, 415, 563, 18, 175, 1060, 605, 221, 663, 556, 538, 97, 311, 142, 261, 339, 1427, 30, 65, 416, 564, 19, 176, 1061, 606, 222, 664, 557, 539, 98, 312, 143, 262, 340, 1428, 31, 66, 417, 565, 20, 177, 1062, 607, 223, 665, 558, 540, 99, 313, 144, 263, 341, 1429, 32, 67, 418, 566, 21, 178, 1063, 608, 224, 666, 559, 541, 100, 314, 145, 264, 342, 1430, 33, 68, 419, 567, 22, 179, 1064, 609, 225, 667, 560, 542, 101, 315, 146, 265, 343, 1431, 34, 69, 420, 568, 23, 180, 1065, 610, 226, 668, 561, 543, 102, 316, 147, 266, 344, 1432, 35, 70, 421, 569, 24, 181, 1066, 611, 227, 669, 562, 544, 103, 317, 148, 267, 345, 1433, 36, 71, 422, 570, 25, 182, 1067, 612, 228, 670, 563, 545, 104, 318, 149, 268, 346, 1434, 37, 72, 423, 571, 26, 183, 1068, 613, 229, 671, 564, 546, 105, 319, 150, 269, 347, 1435, 38, 73, 424, 572, 27, 184, 1069, 614, 230, 672, 565, 547, 106, 320, 151, 270, 348, 1436, 39, 74, 425, 573, 28, 185, 1070, 615, 231, 673, 566, 548, 107, 321, 152, 271, 349, 1437, 40, 75, 426, 574, 29, 186, 1071, 616, 232, 674, 567, 549, 108, 322, 153, 272, 350, 1438, 41, 76, 427, 575, 30, 187, 1072, 617, 233, 675, 568, 550, 109, 323, 154, 273, 351, 1439, 42, 77, 428, 576, 31, 188, 1073, 618, 234, 676, 569, 551, 110, 324, 155, 274, 352, 1440, 43, 78, 429, 577, 32, 189, 1074, 619, 235, 677, 570, 552, 111, 325, 156, 275, 353, 1081, 44, 79, 430, 578, 33, 190, 1075, 620, 236, 678, 571, 553, 112, 326, 157, 276, 354, 1082, 45, 80, 431, 579, 34, 191, 1076, 621, 237, 679, 572, 554, 113, 327, 158, 277, 355, 1083, 46, 81, 432, 580, 35, 192, 1077, 622, 238, 680, 573, 555, 114, 328, 159, 278, 356, 1084, 47, 82, 433, 581, 36, 193, 1078, 623, 239, 681, 574, 556, 115, 329, 160, 279, 357, 1085, 48, 83, 434, 582, 37, 194, 1079, 624, 240, 682, 575, 557, 116, 330, 161, 280, 358, 1086, 49, 84, 435, 583, 38, 195, 1080, 625, 241, 683, 576, 558, 117, 331, 162, 281, 359, 1087, 50, 85, 436, 584, 39, 196, 721, 626, 242, 684, 577, 559, 118, 332, 163, 282, 360, 1088, 51, 86, 437, 585, 40, 197, 722, 627, 243, 685, 578, 560, 119, 333, 164, 283, 1, 1089, 52, 87, 438, 586, 41, 198, 723, 628, 244, 686, 579, 561, 120, 334, 165, 284, 2, 1090, 53, 88, 439, 587, 42, 199, 724, 629, 245, 687, 580, 562, 121, 335, 166, 285, 3, 1091, 54, 89, 440, 588, 43, 200, 725, 630, 246, 688, 581, 563, 122, 336, 167, 286, 4, 1092, 55, 90, 441, 589, 44, 201, 726, 631, 247, 689, 582, 564, 123, 337, 168, 287, 5, 1093, 56, 91, 442, 590, 45, 202, 727, 632, 248, 690, 583, 565, 124, 338, 169, 288, 6, 1094, 57, 92, 443, 591, 46, 203, 728, 633, 249, 691, 584, 566, 125, 339, 170, 289, 7, 1095, 58, 93, 444, 592, 47, 204, 729, 634, 250, 692, 585, 567, 126, 340, 171, 290, 8, 1096, 59, 94, 445, 593, 48, 205, 730, 635, 251, 693, 586, 568, 127, 341, 172, 291, 9, 1097, 60, 95, 446, 594, 49, 206, 731, 636, 252, 694, 587, 569, 128, 342, 173, 292, 10, 1098, 61, 96, 447, 595, 50, 207, 732, 637, 253, 695, 588, 570, 129, 343, 174, 293, 11, 1099, 62, 97, 448, 596, 51, 208, 733, 638, 254, 696, 589, 571, 130, 344, 175, 294, 12, 1100, 63, 98, 449, 597, 52, 209, 734, 639, 255, 697, 590, 572, 131, 345, 176, 295, 13, 1101, 64, 99, 450, 598, 53, 210, 735, 640, 256, 698, 591, 573, 132, 346, 177, 296, 14, 1102, 65, 100, 451, 599, 54, 211, 736, 641, 257, 699, 592, 574, 133, 347, 178, 297, 15, 1103, 66, 101, 452, 600, 55, 212, 737, 642, 258, 700, 593, 575, 134, 348, 179, 298, 16, 1104, 67, 102, 453, 601, 56, 213, 738, 643, 259, 701, 594, 576, 135, 349, 180, 299, 17, 1105, 68, 103, 454, 602, 57, 214, 739, 644, 260, 702, 595, 577, 136, 350, 181, 300, 18, 1106, 69, 104, 455, 603, 58, 215, 740, 645, 261, 703, 596, 578, 137, 351, 182, 301, 19, 1107, 70, 105, 456, 604, 59, 216, 741, 646, 262, 704, 597, 579, 138, 352, 183, 302, 20, 1108, 71, 106, 457, 605, 60, 217, 742, 647, 263, 705, 598, 580, 139, 353, 184, 303, 21, 1109, 72, 107, 458, 606, 61, 218, 743, 648, 264, 706, 599, 581, 140, 354, 185, 304, 22, 1110, 73, 108, 459, 607, 62, 219, 744, 649, 265, 707, 600, 582, 141, 355, 186, 305, 23, 1111, 74, 109, 460, 608, 63, 220, 745, 650, 266, 708, 601, 583, 142, 356, 187, 306, 24, 1112, 75, 110, 461, 609, 64, 221, 746, 651, 267, 709, 602, 584, 143, 357, 188, 307, 25, 1113, 76, 111, 462, 610, 65, 222, 747, 652, 268, 710, 603, 585, 144, 358, 189, 308, 26, 1114, 77, 112, 463, 611, 66, 223, 748, 653, 269, 711, 604, 586, 145, 359, 190, 309, 27, 1115, 78, 113, 464, 612, 67, 224, 749, 654, 270, 712, 605, 587, 146, 360, 191, 310, 28, 1116, 79, 114, 465, 613, 68, 225, 750, 655, 271, 713, 606, 588, 147, 1, 192, 311, 29, 1117, 80, 115, 466, 614, 69, 226, 751, 656, 272, 714, 607, 589, 148, 2, 193, 312, 30, 1118, 81, 116, 467, 615, 70, 227, 752, 657, 273, 715, 608, 590, 149, 3, 194, 313, 31, 1119, 82, 117, 468, 616, 71, 228, 753, 658, 274, 716, 609, 591, 150, 4, 195, 314, 32, 1120, 83, 118, 469, 617, 72, 229, 754, 659, 275, 717, 610, 592, 151, 5, 196, 315, 33, 1121, 84, 119, 470, 618, 73, 230, 755, 660, 276, 718, 611, 593, 152, 6, 197, 316, 34, 1122, 85, 120, 471, 619, 74, 231, 756, 661, 277, 719, 612, 594, 153, 7, 198, 317, 35, 1123, 86, 121, 472, 620, 75, 232, 757, 662, 278, 720, 613, 595, 154, 8, 199, 318, 36, 1124, 87, 122, 473, 621, 76, 233, 758, 663, 279, 361, 614, 596, 155, 9, 200, 319, 37, 1125, 88, 123, 474, 622, 77, 234, 759, 664, 280, 362, 615, 597, 156, 10, 201, 320, 38, 1126, 89, 124, 475, 623, 78, 235, 760, 665, 281, 363, 616, 598, 157, 11, 202, 321, 39, 1127, 90, 125, 476, 624, 79, 236, 761, 666, 282, 364, 617, 599, 158, 12, 203, 322, 40, 1128, 91, 126, 477, 625, 80, 237, 762, 667, 283, 365, 618, 600, 159, 13, 204, 323, 41, 1129, 92, 127, 478, 626, 81, 238, 763, 668, 284, 366, 619, 601, 160, 14, 205, 324, 42, 1130, 93, 128, 479, 627, 82, 239, 764, 669, 285, 367, 620, 602, 161, 15, 206, 325, 43, 1131, 94, 129, 480, 628, 83, 240, 765, 670, 286, 368, 621, 603, 162, 16, 207, 326, 44, 1132, 95, 130, 481, 629, 84, 241, 766, 671, 287, 369, 622, 604, 163, 17, 208, 327, 45, 1133, 96, 131, 482, 630, 85, 242, 767, 672, 288, 370, 623, 605, 164, 18, 209, 328, 46, 1134, 97, 132, 483, 631, 86, 243, 768, 673, 289, 371, 624, 606, 165, 19, 210, 329, 47, 1135, 98, 133, 484, 632, 87, 244, 769, 674, 290, 372, 625, 607, 166, 20, 211, 330, 48, 1136, 99, 134, 485, 633, 88, 245, 770, 675, 291, 373, 626, 608, 167, 21, 212, 331, 49, 1137, 100, 135, 486, 634, 89, 246, 771, 676, 292, 374, 627, 609, 168, 22, 213, 332, 50, 1138, 101, 136, 487, 635, 90, 247, 772, 677, 293, 375, 628, 610, 169, 23, 214, 333, 51, 1139, 102, 137, 488, 636, 91, 248, 773, 678, 294, 376, 629, 611, 170, 24, 215, 334, 52, 1140, 103, 138, 489, 637, 92, 249, 774, 679, 295, 377, 630, 612, 171, 25, 216, 335, 53, 1141, 104, 139, 490, 638, 93, 250, 775, 680, 296, 378, 631, 613, 172, 26, 217, 336, 54, 1142, 105, 140, 491, 639, 94, 251, 776, 681, 297, 379, 632, 614, 173, 27, 218, 337, 55, 1143, 106, 141, 492, 640, 95, 252, 777, 682, 298, 380, 633, 615, 174, 28, 219, 338, 56, 1144, 107, 142, 493, 641, 96, 253, 778, 683, 299, 381, 634, 616, 175, 29, 220, 339, 57, 1145, 108, 143, 494, 642, 97, 254, 779, 684, 300, 382, 635, 617, 176, 30, 221, 340, 58, 1146, 109, 144, 495, 643, 98, 255, 780, 685, 301, 383, 636, 618, 177, 31, 222, 341, 59, 1147, 110, 145, 496, 644, 99, 256, 781, 686, 302, 384, 637, 619, 178, 32, 223, 342, 60, 1148, 111, 146, 497, 645, 100, 257, 782, 687, 303, 385, 638, 620, 179, 33, 224, 343, 61, 1149, 112, 147, 498, 646, 101, 258, 783, 688, 304, 386, 639, 621, 180, 34, 225, 344, 62, 1150, 113, 148, 499, 647, 102, 259, 784, 689, 305, 387, 640, 622, 181, 35, 226, 345, 63, 1151, 114, 149, 500, 648, 103, 260, 785, 690, 306, 388, 641, 623, 182, 36, 227, 346, 64, 1152, 115, 150, 501, 649, 104, 261, 786, 691, 307, 389, 642, 624, 183, 37, 228, 347, 65, 1153, 116, 151, 502, 650, 105, 262, 787, 692, 308, 390, 643, 625, 184, 38, 229, 348, 66, 1154, 117, 152, 503, 651, 106, 263, 788, 693, 309, 391, 644, 626, 185, 39, 230, 349, 67, 1155, 118, 153, 504, 652, 107, 264, 789, 694, 310, 392, 645, 627, 186, 40, 231, 350, 68, 1156, 119, 154, 505, 653, 108, 265, 790, 695, 311, 393, 646, 628, 187, 41, 232, 351, 69, 1157, 120, 155, 506, 654, 109, 266, 791, 696, 312, 394, 647, 629, 188, 42, 233, 352, 70, 1158, 121, 156, 507, 655, 110, 267, 792, 697, 313, 395, 648, 630, 189, 43, 234, 353, 71, 1159, 122, 157, 508, 656, 111, 268, 793, 698, 314, 396, 649, 631, 190, 44, 235, 354, 72, 1160, 123, 158, 509, 657, 112, 269, 794, 699, 315, 397, 650, 361, 191, 45, 236, 355, 73, 1161, 124, 159, 510, 658, 113, 270, 795, 700, 316, 398, 651, 362, 192, 46, 237, 356, 74, 1162, 125, 160, 511, 659, 114, 271, 796, 701, 317, 399, 652, 363, 193, 47, 238, 357, 75, 1163, 126, 161, 512, 660, 115, 272, 797, 702, 318, 400, 653, 364, 194, 48, 239, 358, 76, 1164, 127, 162, 513, 661, 116, 273, 798, 703, 319, 401, 654, 365, 195, 49, 240, 359, 77, 1165, 128, 163, 514, 662, 117, 274, 799, 704, 320, 402, 655, 366, 196, 50, 241, 360, 78, 1166, 129, 164, 515, 663, 118, 275, 800, 705, 321, 403, 656, 367, 197, 51, 242, 1, 79, 1167, 130, 165, 516, 664, 119, 276, 801, 706, 322, 404, 657, 368, 198, 52, 243, 2, 80, 1168, 131, 166, 517, 665, 120, 277, 802, 707, 323, 405, 658, 369, 199, 53, 244, 3, 81, 1169, 132, 167, 518, 666, 121, 278, 803, 708, 324, 406, 659, 370, 200, 54, 245, 4, 82, 1170, 133, 168, 519, 667, 122, 279, 804, 709, 325, 407, 660, 371, 201, 55, 246, 5, 83, 1171, 134, 169, 520, 668, 123, 280, 805, 710, 326, 408, 661, 372, 202, 56, 247, 6, 84, 1172, 135, 170, 521, 669, 124, 281, 806, 711, 327, 409, 662, 373, 203, 57, 248, 7, 85, 1173, 136, 171, 522, 670, 125, 282, 807, 712, 328, 410, 663, 374, 204, 58, 249, 8, 86, 1174, 137, 172, 523, 671, 126, 283, 808, 713, 329, 411, 664, 375, 205, 59, 250, 9, 87, 1175, 138, 173, 524, 672, 127, 284, 809, 714, 330, 412, 665, 376, 206, 60, 251, 10, 88, 1176, 139, 174, 525, 673, 128, 285, 810, 715, 331, 413, 666, 377, 207, 61, 252, 11, 89, 1177, 140, 175, 526, 674, 129, 286, 811, 716, 332, 414, 667, 378, 208, 62, 253, 12, 90, 1178, 141, 176, 527, 675, 130, 287, 812, 717, 333, 415, 668, 379, 209, 63, 254, 13, 91, 1179, 142, 177, 528, 676, 131, 288, 813, 718, 334, 416, 669, 380, 210, 64, 255, 14, 92, 1180, 143, 178, 529, 677, 132, 289, 814, 719, 335, 417, 670, 381, 211, 65, 256, 15, 93, 1181, 144, 179, 530, 678, 133, 290, 815, 720, 336, 418, 671, 382, 212, 66, 257, 16, 94, 1182, 145, 180, 531, 679, 134, 291, 816, 361, 337, 419, 672, 383, 213, 67, 258, 17, 95, 1183, 146, 181, 532, 680, 135, 292, 817, 362, 338, 420, 673, 384, 214, 68, 259, 18, 96, 1184, 147, 182, 533, 681, 136, 293, 818, 363, 339, 421, 674, 385, 215, 69, 260, 19, 97, 1185, 148, 183, 534, 682, 137, 294, 819, 364, 340, 422, 675, 386, 216, 70, 261, 20, 98, 1186, 149, 184, 535, 683, 138, 295, 820, 365, 341, 423, 676, 387, 217, 71, 262, 21, 99, 1187, 150, 185, 536, 684, 139, 296, 821, 366, 342, 424, 677, 388, 218, 72, 263, 22, 100, 1188, 151, 186, 537, 685, 140, 297, 822, 367, 343, 425, 678, 389, 219, 73, 264, 23, 101, 1189, 152, 187, 538, 686, 141, 298, 823, 368, 344, 426, 679, 390, 220, 74, 265, 24, 102, 1190, 153, 188, 539, 687, 142, 299, 824, 369, 345, 427, 680, 391, 221, 75, 266, 25, 103, 1191, 154, 189, 540, 688, 143, 300, 825, 370, 346, 428, 681, 392, 222, 76, 267, 26, 104, 1192, 155, 190, 541, 689, 144, 301, 826, 371, 347, 429, 682, 393, 223, 77, 268, 27, 105, 1193, 156, 191, 542, 690, 145, 302, 827, 372, 348, 430, 683, 394, 224, 78, 269, 28, 106, 1194, 157, 192, 543, 691, 146, 303, 828, 373, 349, 431, 684, 395, 225, 79, 270, 29, 107, 1195, 158, 193, 544, 692, 147, 304, 829, 374, 350, 432, 685, 396, 226, 80, 271, 30, 108, 1196, 159, 194, 545, 693, 148, 305, 830, 375, 351, 433, 686, 397, 227, 81, 272, 31, 109, 1197, 160, 195, 546, 694, 149, 306, 831, 376, 352, 434, 687, 398, 228, 82, 273, 32, 110, 1198, 161, 196, 547, 695, 150, 307, 832, 377, 353, 435, 688, 399, 229, 83, 274, 33, 111, 1199, 162, 197, 548, 696, 151, 308, 833, 378, 354, 436, 689, 400, 230, 84, 275, 34, 112, 1200, 163, 198, 549, 697, 152, 309, 834, 379, 355, 437, 690, 401, 231, 85, 276, 35, 113, 1201, 164, 199, 550, 698, 153, 310, 835, 380, 356, 438, 691, 402, 232, 86, 277, 36, 114, 1202, 165, 200, 551, 699, 154, 311, 836, 381, 357, 439, 692, 403, 233, 87, 278, 37, 115, 1203, 166, 201, 552, 700, 155, 312, 837, 382, 358, 440, 693, 404, 234, 88, 279, 38, 116, 1204, 167, 202, 553, 701, 156, 313, 838, 383, 359, 441, 694, 405, 235, 89, 280, 39, 117, 1205, 168, 203, 554, 702, 157, 314, 839, 384, 360, 442, 695, 406, 236, 90, 281, 40, 118, 1206, 169, 204, 555, 703, 158, 315, 840, 385, 1, 443, 696, 407, 237, 91, 282, 41, 119, 1207, 170, 205, 556, 704, 159, 316, 841, 386, 2, 444, 697, 408, 238, 92, 283, 42, 120, 1208, 171, 206, 557, 705, 160, 317, 842, 387, 3, 445, 698, 409, 239, 93, 284, 43, 121, 1209, 172, 207, 558, 706, 161, 318, 843, 388, 909, 722, 730, 681, 331, 576, 787, 807, 1950, 1590, 735, 1306, 599, 710, 204, 403, 1090, 761, 910, 723, 731, 682, 332, 577, 788, 808, 1951, 1591, 736, 1307, 600, 711, 205, 404, 1091, 762, 911, 724, 732, 683, 333, 578, 789, 809, 1952, 1592, 737, 1308, 601, 712, 206, 405, 1092, 763, 912, 725, 733, 684, 334, 579, 790, 810, 1953, 1593, 738, 1309, 602, 713, 207, 406, 1093, 764, 913, 726, 734, 685, 335, 580, 791, 811, 1954, 1594, 739, 1310, 603, 714, 208, 407, 1094, 765, 914, 727, 735, 686, 336, 581, 792, 812, 1955, 1595, 740, 1311, 604, 715, 209, 408, 1095, 766, 915, 728, 736, 687, 337, 582, 793, 813, 1956, 1596, 741, 1312, 605, 716, 210, 409, 1096, 767, 916, 729, 737, 688, 338, 583, 794, 814, 1957, 1597, 742, 1313, 606, 717, 211, 410, 1097, 768, 917, 730, 738, 689, 339, 584, 795, 815, 1958, 1598, 743, 1314, 607, 718, 212, 411, 1098, 769, 918, 731, 739, 690, 340, 585, 796, 816, 1959, 1599, 744, 1315, 608, 719, 213, 412, 1099, 770, 919, 732, 740, 691, 341, 586, 797, 817, 1960, 1600, 745, 1316, 609, 720, 214, 413, 1100, 771, 920, 733, 741, 692, 342, 587, 798, 818, 1961, 1601, 746, 1317, 610, 718, 215, 414, 1101, 772, 921, 734, 742, 693, 343, 588, 799, 819, 1962, 1602, 747, 1318, 611, 719, 216, 415, 1102, 773, 922, 735, 743, 694, 344, 589, 800, 820, 1963, 1603, 748, 1319, 612, 720, 217, 416, 1103, 774, 923, 736, 744, 695, 345, 590, 801, 821, 1964, 1604, 749, 1320, 613, 364, 218, 417, 1104, 775, 924, 737, 745, 696, 346, 591, 802, 822, 1965, 1605, 750, 1321, 614, 365, 219, 418, 1105, 776, 925, 738, 746, 697, 347, 592, 803, 823, 1966, 1606, 751, 1322, 615, 366, 220, 419, 1106, 777, 926, 739, 747, 698, 348, 593, 804, 824, 1967, 1607, 752, 1323, 616, 367, 221, 420, 1107, 778, 927, 740, 748, 699, 349, 594, 805, 825, 1968, 1608, 753, 1324, 617, 368, 222, 421, 1108, 779, 928, 741, 749, 700, 350, 595, 806, 826, 1969, 1609, 754, 1325, 618, 369, 223, 422, 1109, 780, 929, 742, 750, 701, 351, 596, 807, 827, 1970, 1610, 755, 1326, 619, 370, 224, 423, 1110, 781, 930, 743, 751, 702, 352, 597, 808, 828, 1971, 1611, 756, 1327, 620, 371, 225, 424, 1111, 782, 931, 744, 752, 703, 353, 598, 809, 829, 1972, 1612, 757, 1328, 621, 372, 226, 425, 1112, 783, 932, 745, 753, 704, 354, 599, 810, 830, 1973, 1613, 758, 1329, 622, 373, 227, 426, 1113, 784, 933, 746, 754, 705, 355, 600, 811, 831, 1974, 1614, 759, 1330, 623, 374, 228, 427, 1114, 785, 934, 747, 755, 706, 356, 601, 812, 832, 1975, 1615, 760, 1331, 624, 375, 229, 428, 1115, 786, 935, 748, 756, 707, 357, 602, 813, 833, 1976, 1616, 761, 1332, 625, 376, 230, 429, 1116, 787, 936, 749, 757, 708, 358, 603, 814, 834, 1977, 1617, 762, 1333, 626, 377, 231, 430, 1117, 788, 937, 750, 758, 709, 359, 604, 815, 835, 1978, 1618, 763, 1334, 627, 378, 232, 431, 1118, 789, 938, 751, 759, 710, 360, 605, 816, 836, 1979, 1619, 764, 1335, 628, 379, 233, 432, 1119, 790, 939, 752, 760, 711, 270, 606, 817, 837, 1980, 1620, 765, 1336, 629, 380, 234, 433, 1120, 791, 940, 753, 761, 712, 271, 607, 818, 838, 1981, 1621, 766, 1337, 630, 381, 235, 434, 1121, 792, 941, 754, 762, 713, 272, 608, 819, 839, 1982, 1622, 767, 1338, 631, 382, 236, 435, 1122, 793, 942, 755, 763, 714, 273, 609, 820, 840, 1983, 1623, 768, 1339, 632, 383, 237, 436, 1123, 794, 943, 756, 764, 715, 274, 610, 821, 841, 1984, 1624, 769, 1340, 633, 384, 238, 437, 1124, 795, 944, 757, 765, 716, 275, 611, 822, 842, 1985, 1625, 770, 1341, 634, 385, 239, 438, 1125, 796, 945, 758, 766, 717, 276, 612, 823, 843, 1986, 1626, 771, 1342, 635, 386, 240, 439, 1126, 797, 946, 759, 767, 718, 277, 613, 824, 844, 1987, 1627, 772, 1343, 636, 387, 241, 440, 1127, 798, 947, 760, 768, 719, 278, 614, 825, 845, 1988, 1628, 773, 1344, 637, 388, 242, 441, 1128, 799, 948, 761, 769, 720, 279, 615, 826, 846, 1989, 1629, 774, 1345, 638, 389, 243, 442, 1129, 800, 949, 762, 770, 450, 280, 616, 827, 847, 1990, 1630, 775, 1346, 639, 390, 244, 443, 1130, 801, 950, 763, 771, 451, 281, 617, 828, 848, 1991, 1631, 776, 1347, 640, 391, 245, 444, 1131, 802, 951, 764, 772, 452, 282, 618, 829, 849, 1992, 1632, 777, 1348, 641, 392, 246, 445, 1132, 803, 952, 765, 773, 453, 283, 619, 830, 850, 1993, 1633, 778, 1349, 642, 393, 247, 446, 1133, 804, 953, 766, 774, 454, 284, 620, 831, 851, 1994, 1634, 779, 1350, 643, 394, 248, 447, 1134, 805, 954, 767, 775, 455, 285, 621, 832, 852, 1995, 1635, 780, 1351, 644, 395, 249, 448, 1135, 806, 955, 768, 776, 456, 286, 622, 833, 853, 1996, 1636, 781, 1352, 645, 396, 250, 449, 1136, 807, 956, 769, 777, 457, 287, 623, 834, 854, 1997, 1637, 782, 1353, 646, 397, 251, 450, 1137, 808, 957, 770, 778, 458, 288, 624, 835, 855, 1998, 1638, 783, 1354, 647, 398, 252, 451, 1138, 809, 958, 771, 779, 459, 289, 625, 836, 856, 1999, 1639, 784, 1355, 648, 399, 253, 452, 1139, 810, 959, 772, 780, 460, 290, 626, 837, 857, 2000, 1640, 785, 1356, 649, 400, 254, 453, 1140, 811, 960, 773, 781, 461, 291, 627, 838, 858, 2001, 1641, 786, 1357, 650, 401, 255, 454, 1141, 812, 961, 774, 782, 462, 292, 628, 839, 859, 2002, 1642, 787, 1358, 651, 402, 256, 455, 1142, 813, 962, 775, 783, 463, 293, 629, 840, 860, 2003, 1643, 788, 1359, 652, 403, 257, 456, 1143, 814, 963, 776, 784, 464, 294, 630, 841, 861, 2004, 1644, 789, 1360, 653, 404, 258, 457, 1144, 815, 964, 777, 785, 465, 295, 631, 842, 862, 2005, 1645, 790, 1361, 654, 405, 259, 458, 1145, 816, 965, 778, 786, 466, 296, 632, 843, 863, 2006, 1646, 791, 1362, 655, 406, 260, 459, 1146, 817, 966, 779, 787, 467, 297, 633, 844, 864, 2007, 1647, 792, 1363, 656, 407, 261, 460, 1147, 818, 967, 780, 788, 468, 298, 634, 845, 865, 2008, 1648, 793, 1364, 657, 408, 262, 461, 1148, 819, 968, 781, 789, 469, 299, 635, 846, 866, 2009, 1649, 794, 1365, 658, 409, 263, 462, 1149, 820, 969, 782, 790, 470, 300, 636, 847, 867, 2010, 1650, 795, 1366, 659, 410, 264, 463, 1150, 821, 970, 783, 791, 471, 301, 637, 848, 868, 2011, 1651, 796, 1367, 660, 411, 265, 464, 1151, 822, 971, 784, 792, 472, 302, 638, 849, 869, 2012, 1652, 797, 1368, 661, 412, 266, 465, 1152, 823, 972, 785, 793, 473, 303, 639, 850, 870, 2013, 1653, 798, 1369, 662, 413, 267, 466, 1153, 824, 973, 786, 794, 474, 304, 640, 851, 871, 2014, 1654, 799, 1370, 663, 414, 268, 467, 1154, 825, 974, 787, 795, 475, 305, 641, 852, 872, 2015, 1655, 800, 1371, 664, 415, 269, 468, 1155, 826, 975, 788, 796, 476, 306, 642, 853, 873, 2016, 1656, 801, 1372, 665, 416, 270, 469, 1156, 827, 976, 789, 797, 477, 307, 643, 854, 874, 2017, 1657, 802, 1373, 666, 417, 271, 470, 1157, 828, 977, 790, 798, 478, 308, 644, 855, 875, 2018, 1658, 803, 1374, 667, 418, 272, 471, 1158, 829, 978, 791, 799, 479, 309, 645, 856, 876, 2019, 1659, 804, 1375, 668, 419, 273, 472, 1159, 830, 979, 792, 800, 480, 310, 646, 857, 877, 2020, 1660, 805, 1376, 669, 420, 274, 473, 1160, 831, 980, 793, 801, 481, 311, 647, 858, 878, 2021, 1661, 806, 1377, 670, 421, 275, 474, 1161, 832, 981, 794, 802, 482, 312, 648, 859, 879, 2022, 1662, 807, 1378, 671, 422, 276, 475, 1162, 833, 982, 795, 803, 483, 313, 649, 860, 880, 2023, 1663, 808, 1379, 672, 423, 277, 476, 1163, 834, 983, 796, 804, 484, 314, 650, 861, 881, 2024, 1664, 809, 1380, 673, 424, 278, 477, 1164, 835, 984, 797, 805, 485, 315, 651, 862, 882, 2025, 1665, 810, 1381, 674, 425, 279, 478, 1165, 836, 985, 798, 806, 486, 316, 652, 863, 883, 2026, 1666, 811, 1382, 675, 426, 280, 479, 1166, 837, 986, 799, 807, 487, 317, 653, 864, 884, 2027, 1667, 812, 1383, 676, 427, 281, 480, 1167, 838, 987, 800, 808, 488, 318, 654, 865, 885, 2028, 1668, 813, 1384, 677, 428, 282, 481, 1168, 839, 988, 801, 809, 489, 319, 655, 866, 886, 2029, 1669, 814, 1385, 678, 429, 283, 482, 1169, 840, 989, 802, 810, 490, 320, 656, 867, 887, 2030, 1670, 815, 1386, 679, 430, 284, 483, 1170, 841, 990, 803, 811, 491, 321, 657, 868, 888, 2031, 1671, 816, 1387, 680, 431, 285, 484, 1171, 842, 991, 804, 812, 492, 322, 658, 869, 889, 2032, 1672, 817, 1388, 681, 432, 286, 485, 1172, 843, 992, 805, 813, 493, 323, 659, 870, 890, 2033, 1673, 818, 1389, 682, 433, 287, 486, 1173, 844, 993, 806, 814, 494, 324, 660, 871, 891, 2034, 1674, 819, 1390, 683, 434, 288, 487, 1174, 845, 994, 807, 815, 495, 325, 661, 872, 892, 2035, 1675, 820, 1391, 684, 435, 289, 488, 1175, 846, 995, 808, 816, 496, 326, 662, 873, 893, 2036, 1676, 821, 1392, 685, 436, 290, 489, 1176, 847, 996, 809, 817, 497, 327, 663, 874, 894, 2037, 1677, 822, 1393, 686, 437, 291, 490, 1177, 848, 997, 810, 818, 498, 328, 664, 875, 895, 2038, 1678, 823, 1394, 687, 438, 292, 491, 1178, 849, 998, 811, 819, 499, 329, 665, 876, 896, 2039, 1679, 824, 1395, 688, 439, 293, 492, 1179, 850, 999, 812, 820, 500, 330, 666, 877, 897, 2040, 1680, 825, 1396, 689, 440, 294, 493, 1180, 851, 1000, 813, 821, 501, 331, 667, 878, 898, 2041, 1681, 826, 1397, 690, 441, 295, 494, 1181, 852, 1001, 814, 822, 502, 332, 668, 879, 899, 2042, 1682, 827, 1398, 691, 442, 296, 495, 1182, 853, 1002, 815, 823, 503, 333, 669, 880, 900, 2043, 1683, 828, 1399, 692, 443, 297, 496, 1183, 854, 1003, 816, 824, 504, 334, 670, 881, 901, 2044, 1684, 829, 1400, 693, 444, 298, 497, 1184, 855, 1004, 817, 825, 505, 335, 671, 882, 902, 2045, 1685, 830, 1401, 694, 445, 299, 498, 1185, 856, 1005, 818, 826, 506, 336, 672, 883, 903, 2046, 1686, 831, 1402, 695, 446, 300, 499, 1186, 857, 1006, 819, 827, 507, 337, 673, 884, 904, 2047, 1687, 832, 1403, 696, 447, 301, 500, 1187, 858, 1007, 820, 828, 508, 338, 674, 885, 905, 2048, 1688, 833, 1404, 697, 448, 302, 501, 1188, 859, 1008, 821, 829, 509, 339, 675, 886, 906, 2049, 1689, 834, 1405, 698, 449, 303, 502, 1189, 860, 1009, 822, 830, 510, 340, 676, 887, 907, 2050, 1690, 835, 1406, 699, 450, 304, 503, 1190, 861, 1010, 823, 831, 511, 341, 677, 888, 908, 2051, 1691, 836, 1407, 700, 451, 305, 504, 1191, 862, 1011, 824, 832, 512, 342, 678, 889, 909, 2052, 1692, 837, 1408, 701, 452, 306, 505, 1192, 863, 1012, 825, 833, 513, 343, 679, 890, 910, 2053, 1693, 838, 1409, 702, 453, 307, 506, 1193, 864, 1013, 826, 834, 514, 344, 680, 891, 911, 2054, 1694, 839, 1410, 703, 454, 308, 507, 1194, 865, 1014, 827, 835, 515, 345, 681, 892, 912, 2055, 1695, 840, 1411, 704, 455, 309, 508, 1195, 866, 1015, 828, 836, 516, 346, 682, 893, 913, 2056, 1696, 841, 1412, 705, 456, 310, 509, 1196, 867, 1016, 829, 837, 517, 347, 683, 894, 914, 2057, 1697, 842, 1413, 706, 457, 311, 510, 1197, 868, 1017, 830, 838, 518, 348, 684, 895, 915, 2058, 1698, 843, 1414, 707, 458, 312, 511, 1198, 869, 1018, 831, 839, 519, 349, 685, 896, 916, 2059, 1699, 844, 1415, 708, 459, 313, 512, 1199, 870, 1019, 832, 840, 520, 350, 686, 897, 917, 2060, 1700, 845, 1416, 709, 460, 314, 513, 1200, 871, 1020, 833, 841, 521, 351, 687, 898, 918, 2061, 1701, 846, 1417, 710, 461, 315, 514, 1201, 872, 1021, 834, 842, 522, 352, 688, 899, 919, 2062, 1702, 847, 1418, 711, 462, 316, 515, 1202, 873, 1022, 835, 843, 523, 353, 689, 900, 920, 2063, 1703, 848, 1419, 712, 463, 317, 516, 1203, 874, 1023, 836, 844, 524, 354, 690, 901, 921, 2064, 1704, 849, 1081, 713, 464, 318, 517, 1204, 875, 1024, 837, 845, 525, 355, 691, 902, 922, 2065, 1705, 850, 1082, 714, 465, 319, 518, 1205, 876, 1025, 838, 846, 526, 356, 692, 903, 923, 2066, 1706, 851, 1083, 715, 466, 320, 519, 1206, 877, 1026, 839, 847, 527, 357, 693, 904, 924, 2067, 1707, 852, 1084, 716, 467, 321, 520, 1207, 878, 1027, 840, 848, 528, 358, 694, 905, 925, 2068, 1708, 853, 1085, 717, 468, 322, 521, 1208, 879, 1028, 841, 849, 529, 359, 695, 906, 926, 2069, 1709, 854, 1086, 718, 469, 323, 522, 1209, 880, 1029, 842, 850, 530, 360, 696, 907, 927, 2070, 1710, 855, 1087, 719, 470, 324, 523, 1210, 881, 1030, 843, 851, 531, 92, 697, 908, 928, 2071, 1711, 856, 1088, 720, 471, 325, 524, 1211, 882, 1031, 844, 852, 532, 93, 698, 909, 929, 2072, 1712, 857, 1089, 681, 472, 326, 525, 1212, 883, 1032, 845, 853, 533, 94, 699, 910, 930, 2073, 1713, 858, 1090, 682, 473, 327, 526, 1213, 884, 1033, 846, 854, 534, 95, 700, 911, 931, 2074, 1714, 859, 1091, 683, 474, 328, 527, 1214, 885, 1034, 847, 855, 535, 96, 701, 912, 932, 2075, 1715, 860, 1092, 684, 475, 329, 528, 1215, 886, 1035, 848, 856, 536, 97, 702, 913, 933, 2076, 1716, 861, 1093, 685, 476, 330, 529, 1216, 887, 1036, 849, 857, 537, 98, 703, 914, 934, 2077, 1717, 862, 1094, 686, 477, 331, 530, 1217, 888, 1037, 850, 858, 538, 99, 704, 915, 935, 2078, 1718, 863, 1095, 687, 478, 332, 531, 1218, 889, 1038, 851, 859, 539, 100, 705, 916, 936, 2079, 1719, 864, 1096, 688, 479, 333, 532, 1219, 890, 1039, 852, 860, 540, 101, 706, 917, 937, 2080, 1720, 865, 1097, 689, 480, 334, 533, 1220, 891, 1040, 853, 861, 541, 102, 707, 918, 938, 2081, 1721, 866, 1098, 690, 481, 335, 534, 1221, 892, 1041, 854, 862, 542, 103, 708, 919, 939, 2082, 1722, 867, 1099, 691, 482, 336, 535, 1222, 893, 1042, 855, 863, 543, 104, 709, 920, 940, 2083, 1723, 868, 1100, 692, 483, 337, 536, 1223, 894, 1043, 856, 864, 544, 105, 710, 921, 941, 2084, 1724, 869, 1101, 693, 484, 338, 537, 1224, 895, 1044, 857, 865, 545, 106, 711, 922, 942, 2085, 1725, 870, 1081, 694, 485, 339, 538, 1225, 896, 1045, 858, 866, 546, 107, 712, 923, 943, 2086, 1726, 871, 1082, 695, 486, 340, 539, 1226, 897, 1046, 859, 867, 547, 108, 713, 924, 944, 2087, 1727, 872, 1083, 696, 487, 341, 540, 1227, 898, 1047, 860, 868, 548, 109, 714, 925, 945, 2088, 1728, 873, 1084, 697, 488, 342, 541, 1228, 899, 1048, 861, 869, 549, 110, 715, 926, 946, 2089, 1729, 874, 1085, 698, 489, 343, 542, 1229, 900, 1049, 862, 870, 550, 111, 716, 927, 947, 2090, 1730, 875, 1086, 699, 490, 344, 543, 1230, 901, 1050, 863, 871, 551, 112, 717, 928, 948, 2091, 1731, 876, 1087, 700, 491, 345, 544, 1231, 902, 1051, 864, 872, 552, 113, 718, 929, 949, 2092, 1732, 877, 1088, 701, 492, 346, 545, 1232, 903, 1052, 865, 873, 553, 114, 719, 930, 950, 2093, 1733, 878, 1089, 702, 493, 347, 546, 1233, 904, 1053, 866, 874, 554, 115, 720, 931, 951, 2094, 1734, 879, 1090, 703, 494, 348, 547, 1234, 905, 1054, 867, 875, 555, 116, 361, 932, 952, 2095, 1735, 880, 1091, 704, 495, 349, 548, 1235, 906, 1055, 868, 876, 556, 117, 362, 933, 953, 2096, 1736, 881, 1092, 705, 496, 350, 549, 1236, 907, 1056, 869, 877, 557, 118, 363, 934, 954, 2097, 1737, 882, 1093, 706, 497, 351, 550, 1237, 908, 1057, 870, 878, 558, 119, 364, 935, 955, 2098, 1738, 883, 1094, 707, 498, 352, 551, 1238, 909, 1058, 871, 879, 559, 120, 365, 936, 956, 2099, 1739, 884, 1095, 708, 499, 353, 552, 1239, 910, 1059, 872, 880, 560, 121, 366, 937, 957, 2100, 1740, 885, 1096, 709, 500, 354, 553, 1240, 911, 1060, 873, 881, 561, 122, 367, 938, 958, 2101, 1741, 886, 1097, 710, 501, 355, 554, 1241, 912, 1061, 874, 882, 562, 123, 368, 939, 959, 2102, 1742, 887, 1098, 711, 502, 356, 555, 1242, 913, 1062, 875, 883, 563, 124, 369, 940, 960, 2103, 1743, 888, 1099, 712, 503, 357, 556, 1243, 914, 1063, 876, 884, 564, 125, 370, 941, 961, 2104, 1744, 889, 1100, 713, 504, 358, 557, 1244, 915, 1064, 877, 885, 565, 126, 371, 942, 962, 2105, 1745, 890, 1101, 714, 505, 359, 558, 1245, 916, 1065, 878, 886, 566, 127, 372, 943, 963, 2106, 1746, 891, 1102, 715, 506, 360, 559, 1246, 917, 1066, 879, 887, 567, 128, 373, 944, 964, 2107, 1747, 892, 1103, 716, 507, 319, 560, 1247, 918, 1067, 880, 888, 568, 129, 374, 945, 965, 2108, 1748, 893, 1104, 717, 508, 320, 561, 1248, 919, 1068, 881, 889, 569, 130, 375, 946, 966, 2109, 1749, 894, 1105, 718, 509, 321, 562, 1249, 920, 1069, 882, 890, 570, 131, 376, 947, 967, 2110, 1750, 895, 1106, 719, 510, 322, 563, 1250, 921, 1070, 883, 891, 571, 132, 377, 948, 968, 2111, 1751, 896, 1107, 720, 511, 323, 564, 1251, 922, 1071, 884, 892, 572, 133, 378, 949, 969, 2112, 1752, 897, 1108, 401, 512, 324, 565, 1252, 923, 1072, 885, 893, 573, 134, 379, 950, 970, 2113, 1753, 898, 1109, 402, 513, 325, 566, 1253, 924, 1073, 886, 894, 574, 135, 380, 951, 971, 2114, 1754, 899, 1110, 403, 514, 326, 567, 1254, 925, 1074, 887, 895, 575, 136, 381, 952, 972, 2115, 1755, 900, 1111, 404, 515, 327, 568, 1255, 926, 1075, 888, 896, 576, 137, 382, 953, 973, 2116, 1441, 901, 1112, 405, 516, 328, 569, 1256, 927, 1076, 889, 897, 577, 138, 383, 954, 974, 2117, 1442, 902, 1113, 406, 517, 329, 570, 1257, 928, 1077, 890, 898, 578, 139, 384, 955, 975, 2118, 1443, 903, 1114, 407, 518, 330, 571, 1258, 929, 1078, 891, 899, 579, 140, 385, 956, 976, 2119, 1444, 904, 1115, 408, 519, 331, 572, 1259, 930, 1079, 892, 900, 580, 141, 386, 957, 977, 2120, 1445, 905, 1116, 409, 520, 332, 573, 1260, 931, 1080, 893, 901, 581, 142, 387, 958, 978, 2121, 1446, 906, 1117, 410, 521, 333, 574, 1261, 932, 721, 894, 902, 582, 143, 388, 959, 979, 2122, 1447, 907, 1118, 411, 522, 334, 575, 1262, 933, 722, 895, 903, 583, 144, 389, 960, 980, 2123, 1448, 908, 1119, 412, 523, 335, 576, 1263, 934, 723, 896, 904, 584, 145, 390, 961, 981, 2124, 1449, 909, 1120, 413, 524, 336, 577, 1264, 935, 724, 897, 905, 585, 146, 391, 962, 982, 2125, 1450, 910, 1121, 414, 525, 337, 578, 1265, 936, 725, 898, 906, 586, 147, 392, 963, 983, 2126, 1451, 911, 1122, 415, 526, 338, 579, 1266, 937, 726, 899, 907, 587, 148, 393, 964, 984, 2127, 1452, 912, 1123, 416, 527, 339, 580, 1267, 938, 727, 900, 908, 588, 149, 394, 965, 985, 2128, 1453, 913, 1124, 417, 528, 340, 581, 1268, 939, 728, 901, 909, 589, 150, 395, 966, 986, 2129, 1454, 914, 1125, 418, 529, 341, 582, 1269, 940, 729, 902, 910, 590, 151, 396, 967, 987, 2130, 1455, 915, 1126, 419, 530, 342, 583, 1270, 941, 730, 903, 911, 591, 152, 397, 968, 988, 2131, 1456, 916, 1127, 420, 531, 343, 584, 1271, 942, 731, 904, 912, 592, 153, 398, 969, 989, 2132, 1457, 917, 1128, 421, 532, 344, 585, 1272, 943, 732, 905, 913, 593, 154, 399, 970, 990, 2133, 1458, 918, 1129, 422, 533, 345, 586, 1273, 944, 733, 906, 914, 594, 155, 400, 971, 991, 2134, 1459, 919, 1130, 423, 534, 346, 587, 1274, 945, 734, 907, 915, 595, 156, 401, 972, 992, 2135, 1460, 920, 1131, 424, 535, 347, 588, 1275, 946, 735, 908, 916, 596, 157, 402, 973, 993, 2136, 1461, 921, 1132, 425, 536, 348, 589, 1276, 947, 736, 909, 917, 597, 158, 403, 974, 994, 2137, 1462, 922, 1133, 426, 537, 349, 590, 1277, 948, 737, 910, 918, 598, 159, 404, 975, 995, 2138, 1463, 923, 1134, 427, 538, 350, 591, 1278, 949, 738, 911, 919, 599, 160, 405, 976, 996, 2139, 1464, 924, 1135, 428, 539, 351, 592, 1279, 950, 739, 912, 920, 600, 161, 406, 977, 997, 2140, 1465, 925, 1136, 429, 540, 352, 593, 1280, 951, 740, 913, 921, 601, 162, 407, 978, 998, 2141, 1466, 926, 1137, 430, 541, 353, 594, 1281, 952, 741, 914, 922, 602, 163, 408, 979, 999, 2142, 1467, 927, 1138, 431, 542, 354, 595, 1282, 953, 742, 915, 923, 603, 164, 409, 980, 1000, 2143, 1468, 928, 1139, 432, 543, 355, 596, 1283, 954, 743, 916, 924, 604, 165, 410, 981, 1001, 2144, 1469, 929, 1140, 433, 544, 356, 597, 1284, 955, 744, 917, 925, 605, 166, 411, 982, 1002, 2145, 1470, 930, 1141, 434, 545, 357, 598, 1285, 956, 745, 918, 926, 606, 167, 412, 983, 1003, 2146, 1471, 931, 1142, 435, 546, 358, 599, 1286, 957, 746, 919, 927, 607, 168, 413, 984, 1004, 2147, 1472, 932, 1143, 436, 547, 359, 600, 1287, 958, 747, 920, 928, 608, 169, 414, 985, 1005, 2148, 1473, 933, 1144, 437, 548, 360, 601, 1288, 959, 748, 921, 929, 609, 170, 415, 986, 1006, 2149, 1474, 934, 1145, 438, 549, 43, 602, 1289, 960, 749, 922, 930, 610, 171, 416, 987, 1007, 2150, 1475, 935, 1146, 439, 550, 44, 603, 1290, 961, 750, 923, 931, 611, 172, 417, 988, 1008, 2151, 1476, 936, 1147, 440, 551, 45, 604, 1291, 962, 751, 924, 932, 612, 173, 418, 989, 1009, 2152, 1477, 937, 1148, 441, 552, 46, 605, 1292, 963, 752, 925, 933, 613, 174, 419, 990, 1010, 2153, 1478, 938, 1149, 442, 553, 47, 606, 1293, 964, 753, 926, 934, 614, 175, 420, 991, 1011, 2154, 1479, 939, 1150, 443, 554, 48, 607, 1294, 965, 754, 927, 935, 615, 176, 421, 992, 1012, 2155, 1480, 940, 1151, 444, 555, 49, 608, 1295, 966, 755, 928, 936, 616, 177, 422, 993, 1013, 2156, 1481, 941, 1152, 445, 556, 50, 609, 1296, 967, 756, 929, 937, 617, 178, 423, 994, 1014, 2157, 1482, 942, 1153, 446, 557, 51, 610, 1297, 968, 757, 930, 938, 618, 179, 424, 995, 1015, 2158, 1483, 943, 1154, 447, 558, 52, 611, 1298, 969, 758, 931, 939, 619, 180, 425, 996, 1016, 2159, 1484, 944, 1155, 448, 559, 53, 612, 1299, 970, 759, 932, 940, 620, 181, 426, 997, 1017, 2160, 1485, 945, 1156, 449, 560, 54, 613, 1300, 971, 760, 933, 941, 621, 182, 427, 998, 1018, 1801, 1441, 946, 1157, 450, 561, 55, 614, 1301, 972, 761, 934, 942, 622, 183, 428, 999, 1019, 1802, 1442, 947, 1158, 451, 562, 56, 615, 1302, 973, 762, 935, 943, 623, 184, 429, 1000, 1020, 1803, 1443, 948, 1159, 452, 563, 57, 616, 1303, 974, 763, 936, 944, 624, 185, 430, 1001, 1021, 1804, 1444, 949, 1160, 453, 564, 58, 617, 1304, 975, 764, 937, 945, 625, 186, 431, 1002, 1022, 1805, 1445, 950, 1161, 454, 565, 59, 618, 1305, 976, 765, 938, 946, 626, 187, 432, 1003, 1023, 1806, 1446, 951, 1162, 455, 566, 60, 619, 1306, 977, 766, 939, 947, 627, 188, 433, 1004, 1024, 1807, 1447, 952, 1163, 456, 567, 61, 620, 1307, 978, 767, 940, 948, 628, 189, 434, 1005, 1025, 1808, 1448, 953, 1164, 457, 568, 62, 621, 1308, 979, 768, 941, 949, 629, 190, 435, 1006, 1026, 1809, 1449, 954, 1165, 458, 569, 63, 622, 1309, 980, 769, 942, 950, 630, 191, 436, 1007, 1027, 1810, 1450, 955, 1166, 459, 570, 64, 623, 1310, 981, 770, 943, 951, 631, 192, 437, 1008, 1028, 1811, 1451, 956, 1167, 460, 571, 65, 624, 1311, 982, 771, 944, 952, 632, 193, 438, 1009, 1029, 1812, 1452, 957, 1168, 461, 572, 66, 625, 1312, 983, 772, 945, 721, 633, 194, 439, 1010, 1030, 1813, 1453, 958, 1169, 462, 573, 67, 626, 1313, 984, 773, 946, 722, 634, 195, 440, 1011, 1031, 1814, 1454, 959, 1170, 463, 574, 68, 627, 1314, 985, 774, 947, 723, 635, 196, 441, 1012, 1032, 1815, 1455, 960, 1171, 464, 575, 69, 628, 1315, 986, 775, 948, 724, 636, 197, 442, 1013, 1033, 1816, 1456, 961, 1172, 465, 576, 70, 629, 1316, 987, 776, 949, 725, 637, 198, 443, 1014, 1034, 1817, 1457, 962, 1173, 466, 577, 71, 630, 1317, 988, 777, 950, 726, 638, 199, 444, 1015, 1035, 1818, 1458, 963, 1174, 467, 578, 72, 631, 1318, 989, 778, 951, 727, 639, 200, 445, 1016, 1036, 1819, 1459, 964, 1175, 468, 579, 73, 632, 1319, 990, 779, 952, 728, 640, 201, 446, 1017, 1037, 1820, 1460, 965, 1176, 469, 580, 74, 633, 1320, 991, 780, 953, 729, 641, 202, 447, 1018, 1038, 1821, 1461, 966, 1177, 470, 581, 75, 634, 1321, 992, 781, 954, 730, 642, 203, 448, 1019, 1039, 1822, 1462, 967, 1178, 471, 582, 76, 635, 1322, 993, 782, 955, 731, 643, 204, 449, 1020, 1040, 1823, 1463, 968, 1179, 472, 583, 77, 636, 1323, 994, 783, 956, 732, 644, 205, 450, 1021, 1041, 1824, 1464, 969, 1180, 473, 584, 78, 637, 1324, 995, 784, 957, 733, 645, 206, 451, 1022, 1042, 1825, 1465, 970, 1181, 474, 585, 79, 638, 1325, 996, 785, 958, 734, 646, 207, 452, 1023, 1043, 1826, 1466, 971, 1182, 475, 586, 80, 639, 1326, 997, 786, 959, 735, 647, 208, 453, 1024, 1044, 1827, 1467, 972, 1183, 476, 587, 81, 640, 1327, 998, 787, 960, 736, 648, 209, 454, 1025, 1045, 1828, 1468, 973, 1184, 477, 588, 82, 641, 1328, 999, 788, 961, 737, 649, 210, 455, 1026, 1046, 1829, 1469, 974, 1185, 478, 589, 83, 642, 1329, 1000, 789, 962, 738, 650, 211, 456, 1027, 1047, 1830, 1470, 975, 1186, 479, 590, 84, 643, 1330, 1001, 790, 963, 739, 651, 212, 457, 1028, 1048, 1831, 1471, 976, 1187, 480, 591, 85, 644, 1331, 1002, 791, 964, 740, 652, 213, 458, 1029, 1049, 1832, 1472, 977, 1188, 481, 592, 86, 645, 1332, 1003, 792, 965, 741, 653, 214, 459, 1030, 1050, 1833, 1473, 978, 1189, 482, 593, 87, 646, 1333, 1004, 793, 966, 742, 654, 215, 460, 1031, 1051, 1834, 1474, 979, 1190, 483, 594, 88, 647, 1334, 1005, 794, 967, 743, 655, 216, 461, 1032, 1052, 1835, 1475, 980, 1191, 484, 595, 89, 648, 1335, 1006, 795, 968, 744, 656, 217, 462, 1033, 1053, 1836, 1476, 981, 1192, 485, 596, 90, 649, 1336, 1007, 796, 969, 745, 657, 218, 463, 1034, 1054, 1837, 1477, 982, 1193, 486, 597, 91, 650, 1337, 1008, 797, 970, 746, 658, 219, 464, 1035, 1055, 1838, 1478, 983, 1194, 487, 598, 92, 651, 1338, 1009, 798, 971, 747, 659, 220, 465, 1036, 1056, 1839, 1479, 984, 1195, 488, 599, 93, 652, 1339, 1010, 799, 972, 748, 660, 221, 466, 1037, 1057, 1840, 1480, 985, 1196, 489, 600, 94, 653, 1340, 1011, 800, 973, 749, 661, 222, 467, 1038, 1058, 1841, 1481, 986, 1197, 490, 601, 95, 654, 1341, 1012, 801, 974, 750, 662, 223, 468, 1039, 1059, 1842, 1482, 987, 1198, 491, 602, 96, 655, 1342, 1013, 802, 975, 751, 663, 224, 469, 1040, 1060, 1843, 1483, 988, 1199, 492, 603, 97, 656, 1343, 1014, 803, 976, 752, 664, 225, 470, 1041, 1061, 1844, 1484, 989, 1200, 493, 604, 98, 657, 1344, 1015, 804, 977, 753, 665, 226, 471, 1042, 1062, 1845, 1485, 990, 1201, 494, 605, 99, 658, 1345, 1016, 805, 978, 754, 666, 227, 472, 1043, 1063, 1846, 1486, 991, 1202, 495, 606, 100, 659, 1346, 1017, 806, 979, 755, 667, 228, 473, 1044, 1064, 1847, 1487, 992, 1203, 496, 607, 101, 660, 1347, 1018, 807, 980, 756, 668, 229, 474, 1045, 1065, 1848, 1488, 993, 1204, 497, 608, 102, 661, 1348, 1019, 808, 981, 757, 669, 230, 475, 1046, 1066, 1849, 1489, 994, 1205, 498, 609, 103, 662, 1349, 1020, 809, 982, 758, 670, 231, 476, 1047, 1067, 1850, 1490, 995, 1206, 499, 610, 104, 663, 1350, 1021, 810, 983, 759, 671, 232, 477, 1048, 1068, 1851, 1491, 996, 1207, 500, 611, 105, 664, 1351, 1022, 811, 984, 760, 672, 233, 478, 1049, 1069, 1852, 1492, 997, 1208, 501, 612, 106, 665, 1352, 1023, 812, 985, 761, 673, 234, 479, 1050, 1070, 1853, 1493, 998, 1209, 502, 613, 107, 666, 1353, 1024, 813, 986, 762, 674, 235, 480, 1051, 1071, 1854, 1494, 999, 1210, 503, 614, 108, 667, 1354, 1025, 814, 987, 763, 675, 236, 481, 1052, 1072, 1855, 1495, 1000, 1211, 504, 615, 109, 668, 1355, 1026, 815, 988, 764, 676, 237, 482, 1053, 1073, 1856, 1496, 1001, 1212, 505, 616, 110, 669, 1356, 1027, 816, 989, 765, 677, 238, 483, 1054, 1074, 1857, 1497, 1002, 1213, 506, 617, 111, 670, 1357, 1028, 817, 990, 766, 678, 239, 484, 1055, 1075, 1858, 1498, 1003, 1214, 507, 618, 112, 671, 1358, 1029, 818, 991, 767, 679, 240, 485, 1056, 1076, 1859, 1499, 1004, 1215, 508, 619, 113, 672, 1359, 1030, 819, 992, 768, 680, 241, 486, 1057, 1077, 1860, 1500, 1005, 1216, 509, 620, 114, 673, 1360, 1031, 820, 993, 769, 681, 242, 487, 1058, 1078, 1861, 1501, 1006, 1217, 510, 621, 115, 674, 1361, 1032, 821, 994, 770, 682, 243, 488, 1059, 1079, 1862, 1502, 1007, 1218, 511, 622, 116, 675, 1362, 1033, 822, 995, 771, 683, 244, 489, 1060, 1080, 1863, 1503, 1008, 1219, 512, 623, 117, 676, 1363, 1034, 823, 996, 772, 684, 245, 490, 1061, 721, 1864, 1504, 1009, 1220, 513, 624, 118, 677, 1364, 1035, 824, 997, 773, 685, 246, 491, 1062, 722, 1865, 1505, 1010, 1221, 514, 625, 119, 678, 1365, 1036, 825, 998, 774, 686, 247, 492, 1063, 723, 1866, 1506, 1011, 1222, 515, 626, 120, 679, 1366, 1037, 826, 999, 775, 687, 248, 493, 1064, 724, 1867, 1507, 1012, 1223, 516, 627, 121, 680, 1367, 1038, 827, 1000, 776, 688, 249, 494, 1065, 725, 1868, 1508, 1013, 1224, 517, 628, 122, 681, 1368, 1039, 828, 1001, 777, 689, 250, 495, 1066, 726, 1869, 1509, 1014, 1225, 518, 629, 123, 682, 1369, 1040, 829, 1002, 778, 690, 251, 496, 1067, 727, 1870, 1510, 1015, 1226, 519, 630, 124, 683, 1370, 1041, 830, 1003, 779, 691, 252, 497, 1068, 728, 1871, 1511, 1016, 1227, 520, 631, 125, 684, 1371, 1042, 831, 1004, 780, 692, 253, 498, 1069, 729, 1872, 1512, 1017, 1228, 521, 632, 126, 685, 1372, 1043, 832, 1005, 781, 693, 254, 499, 1070, 730, 1873, 1513, 1018, 1229, 522, 633, 127, 686, 1373, 1044, 833, 1006, 782, 694, 255, 500, 1071, 731, 1874, 1514, 1019, 1230, 523, 634, 128, 687, 1374, 1045, 834, 1007, 783, 695, 256, 501, 1072, 732, 1875, 1515, 1020, 1231, 524, 635, 129, 688, 1375, 1046, 835, 1008, 784, 696, 257, 502, 1073, 733, 1876, 1516, 1021, 1232, 525, 636, 130, 689, 1376, 1047, 836, 1009, 785, 697, 258, 503, 1074, 734, 1877, 1517, 1022, 1233, 526, 637, 131, 690, 1377, 1048, 837, 1010, 786, 698, 259, 504, 1075, 735, 1878, 1518, 1023, 1234, 527, 638, 132, 691, 1378, 1049, 838, 1011, 787, 699, 260, 505, 1076, 736, 1879, 1519, 1024, 1235, 528, 639, 133, 692, 1379, 1050, 839, 1012, 788, 700, 261, 506, 1077, 737, 1880, 1520, 1025, 1236, 529, 640, 134, 693, 1380, 1051, 840, 1013, 789, 701, 262, 507, 1078, 738, 1881, 1521, 1026, 1237, 530, 641, 135, 694, 1381, 1052, 841, 1014, 790, 702, 263, 508, 1079, 739, 1882, 1522, 1027, 1238, 531, 642, 136, 695, 1382, 1053, 842, 1015, 791, 703, 264, 509, 1080, 740, 1883, 1523, 1028, 1239, 532, 643, 137, 696, 1383, 1054, 843, 1016, 792, 704, 265, 510, 721, 741, 1884, 1524, 1029, 1240, 533, 644, 138, 697, 1384, 1055, 844, 1017, 793, 705, 266, 511, 722, 742, 1885, 1525, 1030, 1241, 534, 645, 139, 698, 1385, 1056, 845, 1018, 794, 706, 267, 512, 723, 743, 1886, 1526, 1031, 1242, 535, 646, 140, 699, 1386, 1057, 846, 1019, 795, 707, 268, 513, 724, 744, 1887, 1527, 1032, 1243, 536, 647, 141, 700, 1387, 1058, 847, 1020, 796, 708, 269, 514, 725, 745, 1888, 1528, 1033, 1244, 537, 648, 142, 701, 1388, 1059, 848, 1021, 797, 709, 270, 515, 726, 746, 1889, 1529, 1034, 1245, 538, 649, 143, 702, 1389, 1060, 849, 1022, 798, 710, 271, 516, 727, 747, 1890, 1530, 1035, 1246, 539, 650, 144, 703, 1390, 1061, 850, 1023, 799, 711, 272, 517, 728, 748, 1891, 1531, 1036, 1247, 540, 651, 145, 704, 1391, 1062, 851, 1024, 800, 712, 273, 518, 729, 749, 1892, 1532, 1037, 1248, 541, 652, 146, 705, 1392, 1063, 852, 1025, 801, 713, 274, 519, 730, 750, 1893, 1533, 1038, 1249, 542, 653, 147, 706, 1393, 1064, 853, 1026, 802, 714, 275, 520, 731, 751, 1894, 1534, 1039, 1250, 543, 654, 148, 707, 1394, 1065, 854, 1027, 803, 715, 276, 521, 732, 752, 1895, 1535, 1040, 1251, 544, 655, 149, 708, 1395, 1066, 855, 1028, 804, 716, 277, 522, 733, 753, 1896, 1536, 1041, 1252, 545, 656, 150, 709, 1396, 1067, 856, 1029, 805, 717, 278, 523, 734, 754, 1897, 1537, 1042, 1253, 546, 657, 151, 710, 1397, 1068, 857, 1030, 806, 718, 279, 524, 735, 755, 1898, 1538, 1043, 1254, 547, 658, 152, 711, 1398, 1069, 858, 1031, 807, 719, 280, 525, 736, 756, 1899, 1539, 1044, 1255, 548, 659, 153, 712, 1399, 1070, 859, 1032, 808, 720, 281, 526, 737, 757, 1900, 1540, 1045, 1256, 549, 660, 154, 713, 1400, 1071, 860, 1033, 809, 632, 282, 527, 738, 758, 1901, 1541, 1046, 1257, 550, 661, 155, 714, 1401, 1072, 861, 1034, 810, 633, 283, 528, 739, 759, 1902, 1542, 1047, 1258, 551, 662, 156, 715, 1402, 1073, 862, 1035, 811, 634, 284, 529, 740, 760, 1903, 1543, 1048, 1259, 552, 663, 157, 716, 1403, 1074, 863, 1036, 812, 635, 285, 530, 741, 761, 1904, 1544, 1049, 1260, 553, 664, 158, 717, 1404, 1075, 864, 1037, 813, 636, 286, 531, 742, 762, 1905, 1545, 1050, 1261, 554, 665, 159, 718, 1405, 1076, 865, 1038, 814, 637, 287, 532, 743, 763, 1906, 1546, 1051, 1262, 555, 666, 160, 719, 1406, 1077, 866, 1039, 815, 638, 288, 533, 744, 764, 1907, 1547, 1052, 1263, 556, 667, 161, 720, 1407, 1078, 867, 1040, 816, 639, 289, 534, 745, 765, 1908, 1548, 1053, 1264, 557, 668, 162, 361, 1408, 1079, 868, 1041, 817, 640, 290, 535, 746, 766, 1909, 1549, 1054, 1265, 558, 669, 163, 362, 1409, 1080, 869, 1042, 818, 641, 291, 536, 747, 767, 1910, 1550, 1055, 1266, 559, 670, 164, 363, 1410, 721, 870, 1043, 819, 642, 292, 537, 748, 768, 1911, 1551, 1056, 1267, 560, 671, 165, 364, 1411, 722, 871, 1044, 820, 643, 293, 538, 749, 769, 1912, 1552, 1057, 1268, 561, 672, 166, 365, 1412, 723, 872, 1045, 821, 644, 294, 539, 750, 770, 1913, 1553, 1058, 1269, 562, 673, 167, 366, 1413, 724, 873, 1046, 822, 645, 295, 540, 751, 771, 1914, 1554, 1059, 1270, 563, 674, 168, 367, 1414, 725, 874, 1047, 823, 646, 296, 541, 752, 772, 1915, 1555, 1060, 1271, 564, 675, 169, 368, 1415, 726, 875, 1048, 824, 647, 297, 542, 753, 773, 1916, 1556, 1061, 1272, 565, 676, 170, 369, 1416, 727, 876, 1049, 825, 648, 298, 543, 754, 774, 1917, 1557, 1062, 1273, 566, 677, 171, 370, 1417, 728, 877, 1050, 826, 649, 299, 544, 755, 775, 1918, 1558, 1063, 1274, 567, 678, 172, 371, 1418, 729, 878, 1051, 827, 650, 300, 545, 756, 776, 1919, 1559, 1064, 1275, 568, 679, 173, 372, 1419, 730, 879, 1052, 828, 651, 301, 546, 757, 777, 1920, 1560, 1065, 1276, 569, 680, 174, 373, 1420, 731, 880, 1053, 829, 652, 302, 547, 758, 778, 1921, 1561, 1066, 1277, 570, 681, 175, 374, 1421, 732, 881, 1054, 830, 653, 303, 548, 759, 779, 1922, 1562, 1067, 1278, 571, 682, 176, 375, 1422, 733, 882, 1055, 831, 654, 304, 549, 760, 780, 1923, 1563, 1068, 1279, 572, 683, 177, 376, 1423, 734, 883, 1056, 832, 655, 305, 550, 761, 781, 1924, 1564, 1069, 1280, 573, 684, 178, 377, 1424, 735, 884, 1057, 833, 656, 306, 551, 762, 782, 1925, 1565, 1070, 1281, 574, 685, 179, 378, 1425, 736, 885, 1058, 834, 657, 307, 552, 763, 783, 1926, 1566, 1071, 1282, 575, 686, 180, 379, 1426, 737, 886, 1059, 835, 658, 308, 553, 764, 784, 1927, 1567, 1072, 1283, 576, 687, 181, 380, 1427, 738, 887, 1060, 836, 659, 309, 554, 765, 785, 1928, 1568, 1073, 1284, 577, 688, 182, 381, 1428, 739, 888, 1061, 837, 660, 310, 555, 766, 786, 1929, 1569, 1074, 1285, 578, 689, 183, 382, 1429, 740, 889, 1062, 838, 661, 311, 556, 767, 787, 1930, 1570, 1075, 1286, 579, 690, 184, 383, 1430, 741, 890, 1063, 839, 662, 312, 557, 768, 788, 1931, 1571, 1076, 1287, 580, 691, 185, 384, 1431, 742, 891, 1064, 840, 663, 313, 558, 769, 789, 1932, 1572, 1077, 1288, 581, 692, 186, 385, 1432, 743, 892, 1065, 841, 664, 314, 559, 770, 790, 1933, 1573, 1078, 1289, 582, 693, 187, 386, 1433, 744, 893, 1066, 842, 665, 315, 560, 771, 791, 1934, 1574, 1079, 1290, 583, 694, 188, 387, 1434, 745, 894, 1067, 843, 666, 316, 561, 772, 792, 1935, 1575, 1080, 1291, 584, 695, 189, 388, 1435, 746, 895, 1068, 844, 667, 317, 562, 773, 793, 1936, 1576, 721, 1292, 585, 696, 190, 389, 1436, 747, 896, 1069, 845, 668, 318, 563, 774, 794, 1937, 1577, 722, 1293, 586, 697, 191, 390, 1437, 748, 897, 1070, 846, 669, 319, 564, 775, 795, 1938, 1578, 723, 1294, 587, 698, 192, 391, 1438, 749, 898, 1071, 847, 670, 320, 565, 776, 796, 1939, 1579, 724, 1295, 588, 699, 193, 392, 1439, 750, 899, 1072, 848, 671, 321, 566, 777, 797, 1940, 1580, 725, 1296, 589, 700, 194, 393, 1440, 751, 900, 1073, 721, 672, 322, 567, 778, 798, 1941, 1581, 726, 1297, 590, 701, 195, 394, 1081, 752, 901, 1074, 722, 673, 323, 568, 779, 799, 1942, 1582, 727, 1298, 591, 702, 196, 395, 1082, 753, 902, 1075, 723, 674, 324, 569, 780, 800, 1943, 1583, 728, 1299, 592, 703, 197, 396, 1083, 754, 903, 1076, 724, 675, 325, 570, 781, 801, 1944, 1584, 729, 1300, 593, 704, 198, 397, 1084, 755, 904, 1077, 725, 676, 326, 571, 782, 802, 1945, 1585, 730, 1301, 594, 705, 199, 398, 1085, 756, 905, 1078, 726, 677, 327, 572, 783, 803, 1946, 1586, 731, 1302, 595, 706, 200, 399, 1086, 757, 906, 1079, 727, 678, 328, 573, 784, 804, 1947, 1587, 732, 1303, 596, 707, 201, 400, 1087, 758, 907, 1080, 728, 679, 329, 574, 785, 805, 1948, 1588, 733, 1304, 597, 708, 202, 401, 1088, 759, 908, 721, 729, 680, 330, 575, 786, 806, 1949, 1589, 734, 1305, 598, 709, 203, 402, 1089, 760, 1203, 1717, 858, 1019, 652, 1177, 1919, 1266, 2215, 1635, 1252, 1327, 1070, 1839, 819, 1106, 1539, 2455, 1204, 1718, 859, 1020, 653, 1178, 1920, 1267, 2216, 1636, 1253, 1328, 1071, 1840, 820, 1107, 1540, 2456, 1205, 1719, 860, 1021, 654, 1179, 1921, 1268, 2217, 1637, 1254, 1329, 1072, 1841, 821, 1108, 1541, 2457, 1206, 1720, 861, 1022, 655, 1180, 1922, 1269, 2218, 1638, 1255, 1330, 1073, 1842, 822, 1109, 1542, 2458, 1207, 1721, 862, 1023, 656, 1181, 1923, 1270, 2219, 1639, 1256, 1331, 1074, 1843, 823, 1110, 1543, 2459, 1208, 1722, 863, 1024, 657, 1182, 1924, 1271, 2220, 1640, 1257, 1332, 1075, 1844, 824, 1111, 1544, 2460, 1209, 1723, 864, 1025, 658, 1183, 1925, 1272, 2221, 1641, 1258, 1333, 1076, 1845, 825, 1112, 1545, 2461, 1210, 1724, 865, 1026, 659, 1184, 1926, 1273, 2222, 1642, 1259, 1334, 1077, 1846, 826, 1113, 1546, 2462, 1211, 1725, 866, 1027, 660, 1185, 1927, 1274, 2223, 1643, 1260, 1335, 1078, 1847, 827, 1114, 1547, 2463, 1212, 1726, 867, 1028, 661, 1186, 1928, 1275, 2224, 1644, 1261, 1336, 1079, 1848, 828, 1115, 1548, 2464, 1213, 1727, 868, 1029, 662, 1187, 1929, 1276, 2225, 1645, 1262, 1337, 1080, 1849, 829, 1116, 1549, 2465, 1214, 1728, 869, 1030, 663, 1188, 1930, 1277, 2226, 1646, 1263, 1338, 721, 1850, 830, 1117, 1550, 2466, 1215, 1729, 870, 1031, 664, 1189, 1931, 1278, 2227, 1647, 1264, 1339, 722, 1851, 831, 1118, 1551, 2467, 1216, 1730, 871, 1032, 665, 1190, 1932, 1279, 2228, 1648, 1265, 1340, 723, 1852, 832, 1119, 1552, 2468, 1217, 1731, 872, 1033, 666, 1191, 1933, 1280, 2229, 1649, 1266, 1341, 724, 1853, 833, 1120, 1553, 2469, 1218, 1732, 873, 1034, 667, 1192, 1934, 1281, 2230, 1650, 1267, 1342, 725, 1854, 834, 1121, 1554, 2470, 1219, 1733, 874, 1035, 668, 1193, 1935, 1282, 2231, 1651, 1268, 1343, 726, 1855, 835, 1122, 1555, 2471, 1220, 1734, 875, 1036, 669, 1194, 1936, 1283, 2232, 1652, 1269, 1344, 727, 1856, 836, 1123, 1556, 2472, 1221, 1735, 876, 1037, 670, 1195, 1937, 1284, 2233, 1653, 1270, 1345, 728, 1857, 837, 1124, 1557, 2473, 1222, 1736, 877, 1038, 671, 1196, 1938, 1285, 2234, 1654, 1271, 1346, 729, 1858, 838, 1125, 1558, 2474, 1223, 1737, 878, 1039, 672, 1197, 1939, 1286, 2235, 1655, 1272, 1347, 730, 1859, 839, 1126, 1559, 2475, 1224, 1738, 879, 1040, 673, 1198, 1940, 1287, 2236, 1656, 1273, 1348, 731, 1860, 840, 1127, 1560, 2476, 1225, 1739, 880, 1041, 674, 1199, 1941, 1288, 2237, 1657, 1274, 1349, 732, 1861, 841, 1128, 1561, 2477, 1226, 1740, 881, 1042, 675, 1200, 1942, 1289, 2238, 1658, 1275, 1350, 733, 1862, 842, 1129, 1562, 2478, 1227, 1741, 882, 1043, 676, 1201, 1943, 1290, 2239, 1659, 1276, 1351, 734, 1863, 843, 1130, 1563, 2479, 1228, 1742, 883, 1044, 677, 1202, 1944, 1291, 2240, 1660, 1277, 1352, 735, 1864, 844, 1131, 1564, 2480, 1229, 1743, 884, 1045, 678, 1203, 1945, 1292, 2241, 1661, 1278, 1353, 736, 1865, 845, 1132, 1565, 2481, 1230, 1744, 885, 1046, 679, 1204, 1946, 1293, 2242, 1662, 1279, 1354, 737, 1866, 846, 1133, 1566, 2482, 1231, 1745, 886, 1047, 680, 1205, 1947, 1294, 2243, 1663, 1280, 1355, 738, 1867, 847, 1134, 1567, 2483, 1232, 1746, 887, 1048, 681, 1206, 1948, 1295, 2244, 1664, 1281, 1356, 739, 1868, 848, 1135, 1568, 2484, 1233, 1747, 888, 1049, 682, 1207, 1949, 1296, 2245, 1665, 1282, 1357, 740, 1869, 849, 1136, 1569, 2485, 1234, 1748, 889, 1050, 683, 1081, 1950, 1297, 2246, 1666, 1283, 1358, 741, 1870, 850, 1137, 1570, 2486, 1235, 1749, 890, 1051, 684, 1082, 1951, 1298, 2247, 1667, 1284, 1359, 742, 1871, 851, 1138, 1571, 2487, 1236, 1750, 891, 1052, 685, 1083, 1952, 1299, 2248, 1668, 1285, 1360, 743, 1872, 852, 1139, 1572, 2488, 1237, 1751, 892, 1053, 686, 1084, 1953, 1300, 2249, 1669, 1286, 1361, 744, 1873, 853, 1140, 1573, 2489, 1238, 1752, 893, 1054, 687, 1085, 1954, 1301, 2250, 1670, 1287, 1362, 745, 1874, 854, 1141, 1574, 2490, 1239, 1753, 894, 1055, 688, 1086, 1955, 1302, 2251, 1671, 1288, 1363, 746, 1875, 855, 1142, 1575, 2491, 1240, 1754, 895, 1056, 689, 1087, 1956, 1303, 2252, 1672, 1289, 1364, 747, 1876, 856, 1143, 1576, 2492, 1241, 1755, 896, 1057, 690, 1088, 1957, 1304, 2253, 1673, 1290, 1365, 748, 1877, 857, 1144, 1577, 2493, 1242, 1756, 897, 1058, 691, 1089, 1958, 1305, 2254, 1674, 1291, 1366, 749, 1878, 858, 1145, 1578, 2494, 1243, 1757, 898, 1059, 692, 1090, 1959, 1306, 2255, 1675, 1292, 1367, 750, 1879, 859, 1146, 1441, 2495, 1244, 1758, 899, 1060, 693, 1091, 1960, 1307, 2256, 1676, 1293, 1368, 751, 1880, 860, 1147, 1442, 2496, 1245, 1759, 900, 1061, 694, 1092, 1961, 1308, 2257, 1677, 1294, 1369, 752, 1881, 861, 1148, 1443, 2497, 1246, 1760, 901, 1062, 695, 1093, 1962, 1309, 2258, 1678, 1295, 1370, 753, 1882, 862, 1149, 1444, 2498, 1247, 1761, 902, 1063, 696, 1094, 1963, 1310, 2259, 1679, 1296, 1371, 754, 1883, 863, 1150, 1445, 2499, 1248, 1762, 903, 1064, 697, 1095, 1964, 1311, 2260, 1680, 1297, 1372, 755, 1884, 864, 1151, 1446, 2500, 1249, 1763, 904, 1065, 698, 1096, 1965, 1312, 2261, 1681, 1298, 1373, 756, 1885, 865, 1152, 1447, 2501, 1250, 1764, 905, 1066, 699, 1097, 1966, 1313, 2262, 1682, 1299, 1374, 757, 1886, 866, 1153, 1448, 2502, 1251, 1765, 906, 1067, 700, 1098, 1967, 1314, 2263, 1683, 1300, 1375, 758, 1887, 867, 1154, 1449, 2503, 1252, 1766, 907, 1068, 701, 1099, 1968, 1315, 2264, 1684, 1301, 1376, 759, 1888, 868, 1155, 1450, 2504, 1253, 1767, 908, 1069, 702, 1100, 1969, 1316, 2265, 1685, 1302, 1377, 760, 1889, 869, 1156, 1451, 2505, 1254, 1768, 909, 1070, 703, 1101, 1970, 1317, 2266, 1686, 1303, 1378, 761, 1890, 870, 1157, 1452, 2506, 1255, 1769, 910, 1071, 704, 1102, 1971, 1318, 2267, 1687, 1304, 1379, 762, 1891, 871, 1158, 1453, 2507, 1256, 1770, 911, 1072, 705, 1103, 1972, 1319, 2268, 1688, 1305, 1380, 763, 1892, 872, 1159, 1454, 2508, 1257, 1771, 912, 1073, 706, 1104, 1973, 1320, 2269, 1689, 1306, 1381, 764, 1893, 873, 1160, 1455, 2509, 1258, 1772, 913, 1074, 707, 1105, 1974, 1321, 2270, 1690, 1307, 1382, 765, 1894, 874, 1161, 1456, 2510, 1259, 1773, 914, 1075, 708, 1106, 1975, 1322, 2271, 1691, 1308, 1383, 766, 1895, 875, 1162, 1457, 2511, 1260, 1774, 915, 1076, 709, 1107, 1976, 1323, 2272, 1692, 1309, 1384, 767, 1896, 876, 1163, 1458, 2512, 1261, 1775, 916, 1077, 710, 1108, 1977, 1324, 2273, 1693, 1310, 1385, 768, 1897, 877, 1164, 1459, 2513, 1262, 1776, 917, 1078, 711, 1109, 1978, 1325, 2274, 1694, 1311, 1386, 769, 1898, 878, 1165, 1460, 2514, 1263, 1777, 918, 1079, 712, 1110, 1979, 1326, 2275, 1695, 1312, 1387, 770, 1899, 879, 1166, 1461, 2515, 1264, 1778, 919, 1080, 713, 1111, 1980, 1327, 2276, 1696, 1313, 1388, 771, 1900, 880, 1167, 1462, 2516, 1265, 1779, 920, 721, 714, 1112, 1981, 1328, 2277, 1697, 1314, 1389, 772, 1901, 881, 1168, 1463, 2517, 1266, 1780, 921, 722, 715, 1113, 1982, 1329, 2278, 1698, 1315, 1390, 773, 1902, 882, 1169, 1464, 2518, 1267, 1781, 922, 723, 716, 1114, 1983, 1330, 2279, 1699, 1316, 1391, 774, 1903, 883, 1170, 1465, 2519, 1268, 1782, 923, 724, 717, 1115, 1984, 1331, 2280, 1700, 1317, 1392, 775, 1904, 884, 1171, 1466, 2520, 1269, 1783, 924, 725, 718, 1116, 1985, 1332, 2281, 1701, 1318, 1393, 776, 1905, 885, 1172, 1467, 2161, 1270, 1784, 925, 726, 719, 1117, 1986, 1333, 2282, 1702, 1319, 1394, 777, 1906, 886, 1173, 1468, 2162, 1271, 1785, 926, 727, 720, 1118, 1987, 1334, 2283, 1703, 1320, 1395, 778, 1907, 887, 1174, 1469, 2163, 1272, 1786, 927, 728, 361, 1119, 1988, 1335, 2284, 1704, 1321, 1396, 779, 1908, 888, 1175, 1470, 2164, 1273, 1787, 928, 729, 362, 1120, 1989, 1336, 2285, 1705, 1322, 1397, 780, 1909, 889, 1176, 1471, 2165, 1274, 1788, 929, 730, 363, 1121, 1990, 1337, 2286, 1706, 1323, 1398, 781, 1910, 890, 1177, 1472, 2166, 1275, 1789, 930, 731, 364, 1122, 1991, 1338, 2287, 1707, 1324, 1399, 782, 1911, 891, 1178, 1473, 2167, 1276, 1790, 931, 732, 365, 1123, 1992, 1339, 2288, 1708, 1325, 1400, 783, 1912, 892, 1179, 1474, 2168, 1277, 1791, 932, 733, 366, 1124, 1993, 1340, 2289, 1709, 1326, 1401, 784, 1913, 893, 1180, 1475, 2169, 1278, 1792, 933, 734, 367, 1125, 1994, 1341, 2290, 1710, 1327, 1402, 785, 1914, 894, 1181, 1476, 2170, 1279, 1793, 934, 735, 368, 1126, 1995, 1342, 2291, 1711, 1328, 1403, 786, 1915, 895, 1182, 1477, 2171, 1280, 1794, 935, 736, 369, 1127, 1996, 1343, 2292, 1712, 1329, 1404, 787, 1916, 896, 1183, 1478, 2172, 1281, 1795, 936, 737, 370, 1128, 1997, 1344, 2293, 1713, 1330, 1405, 788, 1917, 897, 1184, 1479, 2173, 1282, 1796, 937, 738, 371, 1129, 1998, 1345, 2294, 1714, 1331, 1406, 789, 1918, 898, 1185, 1480, 2174, 1283, 1797, 938, 739, 372, 1130, 1999, 1346, 2295, 1715, 1332, 1407, 790, 1919, 899, 1186, 1481, 2175, 1284, 1798, 939, 740, 373, 1131, 2000, 1347, 2296, 1716, 1333, 1408, 791, 1920, 900, 1187, 1482, 2176, 1285, 1799, 940, 741, 374, 1132, 2001, 1348, 2297, 1717, 1334, 1409, 792, 1921, 901, 1188, 1483, 2177, 1286, 1800, 941, 742, 375, 1133, 2002, 1349, 2298, 1718, 1335, 1410, 793, 1922, 902, 1189, 1484, 2178, 1287, 1441, 942, 743, 376, 1134, 2003, 1350, 2299, 1719, 1336, 1411, 794, 1923, 903, 1190, 1485, 2179, 1288, 1442, 943, 744, 377, 1135, 2004, 1351, 2300, 1720, 1337, 1412, 795, 1924, 904, 1191, 1486, 2180, 1289, 1443, 944, 745, 378, 1136, 2005, 1352, 2301, 1721, 1338, 1413, 796, 1925, 905, 1192, 1487, 2181, 1290, 1444, 945, 746, 379, 1137, 2006, 1353, 2302, 1722, 1339, 1414, 797, 1926, 906, 1193, 1488, 2182, 1291, 1445, 946, 747, 380, 1138, 2007, 1354, 2303, 1723, 1340, 1415, 798, 1927, 907, 1194, 1489, 2183, 1292, 1446, 947, 748, 381, 1139, 2008, 1355, 2304, 1724, 1341, 1416, 799, 1928, 908, 1195, 1490, 2184, 1293, 1447, 948, 749, 382, 1140, 2009, 1356, 2305, 1725, 1342, 1417, 800, 1929, 909, 1196, 1491, 2185, 1294, 1448, 949, 750, 383, 1141, 2010, 1357, 2306, 1726, 1343, 1418, 801, 1930, 910, 1197, 1492, 2186, 1295, 1449, 950, 751, 384, 1142, 2011, 1358, 2307, 1727, 1344, 1419, 802, 1931, 911, 1198, 1493, 2187, 1296, 1450, 951, 752, 385, 1143, 2012, 1359, 2308, 1728, 1345, 1420, 803, 1932, 912, 1199, 1494, 2188, 1297, 1451, 952, 753, 386, 1144, 2013, 1360, 2309, 1729, 1346, 1421, 804, 1933, 913, 1200, 1495, 2189, 1298, 1452, 953, 754, 387, 1145, 2014, 1361, 2310, 1730, 1347, 1422, 805, 1934, 914, 1201, 1496, 2190, 1299, 1453, 954, 755, 388, 1146, 2015, 1362, 2311, 1731, 1348, 1423, 806, 1935, 915, 1202, 1497, 2191, 1300, 1454, 955, 756, 389, 1147, 2016, 1363, 2312, 1732, 1349, 1424, 807, 1936, 916, 1203, 1498, 2192, 1301, 1455, 956, 757, 390, 1148, 2017, 1364, 2313, 1733, 1350, 1425, 808, 1937, 917, 1204, 1499, 2193, 1302, 1456, 957, 758, 391, 1149, 2018, 1365, 2314, 1734, 1351, 1426, 809, 1938, 918, 1205, 1500, 2194, 1303, 1457, 958, 759, 392, 1150, 2019, 1366, 2315, 1735, 1352, 1427, 810, 1939, 919, 1206, 1501, 2195, 1304, 1458, 959, 760, 393, 1151, 2020, 1367, 2316, 1736, 1353, 1428, 811, 1940, 920, 1207, 1502, 2196, 1305, 1459, 960, 761, 394, 1152, 2021, 1368, 2317, 1737, 1354, 1429, 812, 1941, 921, 1208, 1503, 2197, 1306, 1460, 961, 762, 395, 1153, 2022, 1369, 2318, 1738, 1355, 1430, 813, 1942, 922, 1209, 1504, 2198, 1307, 1461, 962, 763, 396, 1154, 2023, 1370, 2319, 1739, 1356, 1431, 814, 1943, 923, 1210, 1505, 2199, 1308, 1462, 963, 764, 397, 1155, 2024, 1371, 2320, 1740, 1357, 1432, 815, 1944, 924, 1211, 1506, 2200, 1309, 1463, 964, 765, 398, 1156, 2025, 1372, 2321, 1741, 1358, 1433, 816, 1945, 925, 1212, 1507, 2201, 1310, 1464, 965, 766, 399, 1157, 2026, 1373, 2322, 1742, 1359, 1434, 817, 1946, 926, 1213, 1508, 2202, 1311, 1465, 966, 767, 400, 1158, 2027, 1374, 2323, 1743, 1360, 1435, 818, 1947, 927, 1214, 1509, 2203, 1312, 1466, 967, 768, 401, 1159, 2028, 1375, 2324, 1744, 1361, 1436, 819, 1948, 928, 1215, 1510, 2204, 1313, 1467, 968, 769, 402, 1160, 2029, 1376, 2325, 1745, 1362, 1437, 820, 1949, 929, 1216, 1511, 2205, 1314, 1468, 969, 770, 403, 1161, 2030, 1377, 2326, 1746, 1363, 1438, 821, 1950, 930, 1217, 1512, 2206, 1315, 1469, 970, 771, 404, 1162, 2031, 1378, 2327, 1747, 1364, 1439, 822, 1951, 931, 1218, 1513, 2207, 1316, 1470, 971, 772, 405, 1163, 2032, 1379, 2328, 1748, 1365, 1440, 823, 1952, 932, 1219, 1514, 2208, 1317, 1471, 972, 773, 406, 1164, 2033, 1380, 2329, 1749, 1366, 1420, 824, 1953, 933, 1220, 1515, 2209, 1318, 1472, 973, 774, 407, 1165, 2034, 1381, 2330, 1750, 1367, 1421, 825, 1954, 934, 1221, 1516, 2210, 1319, 1473, 974, 775, 408, 1166, 2035, 1382, 2331, 1751, 1368, 1422, 826, 1955, 935, 1222, 1517, 2211, 1320, 1474, 975, 776, 409, 1167, 2036, 1383, 2332, 1752, 1369, 1423, 827, 1956, 936, 1223, 1518, 2212, 1321, 1475, 976, 777, 410, 1168, 2037, 1384, 2333, 1753, 1370, 1424, 828, 1957, 937, 1224, 1519, 2213, 1322, 1476, 977, 778, 411, 1169, 2038, 1385, 2334, 1754, 1371, 1425, 829, 1958, 938, 1225, 1520, 2214, 1323, 1477, 978, 779, 412, 1170, 2039, 1386, 2335, 1755, 1372, 1426, 830, 1959, 939, 1226, 1521, 2215, 1324, 1478, 979, 780, 413, 1171, 2040, 1387, 2336, 1756, 1373, 1427, 831, 1960, 940, 1227, 1522, 2216, 1325, 1479, 980, 781, 414, 1172, 2041, 1388, 2337, 1757, 1374, 1428, 832, 1961, 941, 1228, 1523, 2217, 1326, 1480, 981, 782, 415, 1173, 2042, 1389, 2338, 1758, 1375, 1429, 833, 1962, 942, 1229, 1524, 2218, 1327, 1481, 982, 783, 416, 1174, 2043, 1390, 2339, 1759, 1376, 1430, 834, 1963, 943, 1230, 1525, 2219, 1328, 1482, 983, 784, 417, 1175, 2044, 1391, 2340, 1760, 1377, 1431, 835, 1964, 944, 1231, 1526, 2220, 1329, 1483, 984, 785, 418, 1176, 2045, 1392, 2341, 1761, 1378, 1432, 836, 1965, 945, 1232, 1527, 2221, 1330, 1484, 985, 786, 419, 1177, 2046, 1393, 2342, 1762, 1379, 1433, 837, 1966, 946, 1233, 1528, 2222, 1331, 1485, 986, 787, 420, 1178, 2047, 1394, 2343, 1763, 1380, 1434, 838, 1967, 947, 1234, 1529, 2223, 1332, 1486, 987, 788, 421, 1179, 2048, 1395, 2344, 1764, 1381, 1435, 839, 1968, 948, 1235, 1530, 2224, 1333, 1487, 988, 789, 422, 1180, 2049, 1396, 2345, 1765, 1382, 1436, 840, 1969, 949, 1236, 1531, 2225, 1334, 1488, 989, 790, 423, 1181, 2050, 1397, 2346, 1766, 1383, 1437, 841, 1970, 950, 1237, 1532, 2226, 1335, 1489, 990, 791, 424, 1182, 2051, 1398, 2347, 1767, 1384, 1438, 842, 1971, 951, 1238, 1533, 2227, 1336, 1490, 991, 792, 425, 1183, 2052, 1399, 2348, 1768, 1385, 1439, 843, 1972, 952, 1239, 1534, 2228, 1337, 1491, 992, 793, 426, 1184, 2053, 1400, 2349, 1769, 1386, 1440, 844, 1973, 953, 1240, 1441, 2229, 1338, 1492, 993, 794, 427, 1185, 2054, 1401, 2350, 1770, 1387, 1102, 845, 1974, 954, 1241, 1442, 2230, 1339, 1493, 994, 795, 428, 1186, 2055, 1402, 2351, 1771, 1388, 1103, 846, 1975, 955, 1242, 1443, 2231, 1340, 1494, 995, 796, 429, 1187, 2056, 1403, 2352, 1772, 1389, 1104, 847, 1976, 956, 1243, 1444, 2232, 1341, 1495, 996, 797, 430, 1188, 2057, 1404, 2353, 1773, 1390, 1105, 848, 1977, 957, 1244, 1445, 2233, 1342, 1496, 997, 798, 431, 1189, 2058, 1405, 2354, 1774, 1391, 1106, 849, 1978, 958, 1245, 1446, 2234, 1343, 1497, 998, 799, 432, 1190, 2059, 1406, 2355, 1775, 1392, 1107, 850, 1979, 959, 1246, 1447, 2235, 1344, 1498, 999, 800, 433, 1191, 2060, 1407, 2356, 1776, 1393, 1108, 851, 1980, 960, 1247, 1448, 2236, 1345, 1499, 1000, 801, 434, 1192, 2061, 1408, 2357, 1777, 1394, 1109, 852, 1981, 961, 1248, 1449, 2237, 1346, 1500, 1001, 802, 435, 1193, 2062, 1409, 2358, 1778, 1395, 1110, 853, 1982, 962, 1249, 1450, 2238, 1347, 1501, 1002, 803, 436, 1194, 2063, 1410, 2359, 1779, 1396, 1111, 854, 1983, 963, 1250, 1451, 2239, 1348, 1502, 1003, 804, 437, 1195, 2064, 1411, 2360, 1780, 1397, 1112, 855, 1984, 964, 1251, 1452, 2240, 1349, 1503, 1004, 805, 438, 1196, 2065, 1412, 2361, 1781, 1398, 1113, 856, 1985, 965, 1252, 1453, 2241, 1350, 1504, 1005, 806, 439, 1197, 2066, 1413, 2362, 1782, 1399, 1114, 857, 1986, 966, 1253, 1454, 2242, 1351, 1505, 1006, 807, 440, 1198, 1801, 1414, 2363, 1783, 1400, 1115, 858, 1987, 967, 1254, 1455, 2243, 1352, 1506, 1007, 808, 441, 1199, 1802, 1415, 2364, 1784, 1401, 1116, 859, 1988, 968, 1255, 1456, 2244, 1353, 1507, 1008, 809, 442, 1200, 1803, 1416, 2365, 1785, 1402, 1117, 860, 1989, 969, 1256, 1457, 2245, 1354, 1508, 1009, 810, 443, 1201, 1804, 1417, 2366, 1786, 1403, 1118, 861, 1990, 970, 1257, 1458, 2246, 1355, 1509, 1010, 811, 444, 1202, 1805, 1418, 2367, 1787, 1404, 1119, 862, 1991, 971, 1258, 1459, 2247, 1356, 1510, 1011, 812, 445, 1203, 1806, 1419, 2368, 1788, 1405, 1120, 863, 1992, 972, 1259, 1460, 2248, 1357, 1511, 1012, 813, 446, 1204, 1807, 1420, 2369, 1789, 1406, 1121, 864, 1993, 973, 1260, 1461, 2249, 1358, 1512, 1013, 814, 447, 1205, 1808, 1421, 2370, 1790, 1407, 1122, 865, 1994, 974, 1261, 1462, 2250, 1359, 1513, 1014, 815, 448, 1206, 1809, 1422, 2371, 1791, 1408, 1123, 866, 1995, 975, 1262, 1463, 2251, 1360, 1514, 1015, 816, 449, 1207, 1810, 1423, 2372, 1792, 1409, 1124, 867, 1996, 976, 1263, 1464, 2252, 1361, 1515, 1016, 817, 450, 1208, 1811, 1424, 2373, 1793, 1410, 1125, 868, 1997, 977, 1264, 1465, 2253, 1362, 1516, 1017, 818, 451, 1209, 1812, 1425, 2374, 1794, 1411, 1126, 869, 1998, 978, 1265, 1466, 2254, 1363, 1517, 1018, 819, 452, 1210, 1813, 1426, 2375, 1795, 1412, 1127, 870, 1999, 979, 1266, 1467, 2255, 1364, 1518, 1019, 820, 453, 1211, 1814, 1427, 2161, 1796, 1413, 1128, 871, 2000, 980, 1267, 1468, 2256, 1365, 1519, 1020, 821, 454, 1212, 1815, 1428, 2162, 1797, 1414, 1129, 872, 2001, 981, 1268, 1469, 2257, 1366, 1520, 1021, 822, 455, 1213, 1816, 1429, 2163, 1798, 1415, 1130, 873, 2002, 982, 1269, 1470, 2258, 1367, 1521, 1022, 823, 456, 1214, 1817, 1430, 2164, 1799, 1416, 1131, 874, 2003, 983, 1270, 1471, 2259, 1368, 1522, 1023, 824, 457, 1215, 1818, 1431, 2165, 1800, 1417, 1132, 875, 2004, 984, 1271, 1472, 2260, 1369, 1523, 1024, 825, 458, 1216, 1819, 1432, 2166, 1756, 1418, 1133, 876, 2005, 985, 1272, 1473, 2261, 1370, 1524, 1025, 826, 459, 1217, 1820, 1433, 2167, 1757, 1419, 1134, 877, 2006, 986, 1273, 1474, 2262, 1371, 1525, 1026, 827, 460, 1218, 1821, 1434, 2168, 1758, 1420, 1135, 878, 2007, 987, 1274, 1475, 2263, 1372, 1526, 1027, 828, 461, 1219, 1822, 1435, 2169, 1759, 1421, 1136, 879, 2008, 988, 1275, 1476, 2264, 1373, 1527, 1028, 829, 462, 1220, 1823, 1436, 2170, 1760, 1422, 1137, 880, 2009, 989, 1276, 1477, 2265, 1374, 1528, 1029, 830, 463, 1221, 1824, 1437, 2171, 1761, 1423, 1138, 881, 2010, 990, 1277, 1478, 2266, 1375, 1529, 1030, 831, 464, 1222, 1825, 1438, 2172, 1762, 1424, 1139, 882, 2011, 991, 1278, 1479, 2267, 1376, 1530, 1031, 832, 465, 1223, 1826, 1439, 2173, 1763, 1425, 1140, 883, 2012, 992, 1279, 1480, 2268, 1377, 1531, 1032, 833, 466, 1224, 1827, 1440, 2174, 1764, 1426, 1141, 884, 2013, 993, 1280, 1481, 2269, 1378, 1532, 1033, 834, 467, 1225, 1828, 1081, 2175, 1765, 1427, 1142, 885, 2014, 994, 1281, 1482, 2270, 1379, 1533, 1034, 835, 468, 1226, 1829, 1082, 2176, 1766, 1428, 1143, 886, 2015, 995, 1282, 1483, 2271, 1380, 1534, 1035, 836, 469, 1227, 1830, 1083, 2177, 1767, 1429, 1144, 887, 2016, 996, 1283, 1484, 2272, 1381, 1535, 1036, 837, 470, 1228, 1831, 1084, 2178, 1768, 1430, 1145, 888, 2017, 997, 1284, 1485, 2273, 1382, 1536, 1037, 838, 471, 1229, 1832, 1085, 2179, 1769, 1431, 1146, 889, 2018, 998, 1285, 1486, 2274, 1383, 1537, 1038, 839, 472, 1230, 1833, 1086, 2180, 1770, 1432, 1147, 890, 2019, 999, 1286, 1487, 2275, 1384, 1538, 1039, 840, 473, 1231, 1834, 1087, 2181, 1771, 1433, 1148, 891, 2020, 1000, 1287, 1488, 2276, 1385, 1539, 1040, 841, 474, 1232, 1835, 1088, 2182, 1772, 1434, 1149, 892, 2021, 1001, 1288, 1489, 2277, 1386, 1540, 1041, 842, 475, 1233, 1836, 1089, 2183, 1773, 1435, 1150, 893, 2022, 1002, 1289, 1490, 2278, 1387, 1541, 1042, 843, 476, 1234, 1837, 1090, 2184, 1774, 1436, 1151, 894, 2023, 1003, 1290, 1491, 2279, 1388, 1542, 1043, 844, 477, 1235, 1838, 1091, 2185, 1775, 1437, 1152, 895, 2024, 1004, 1291, 1492, 2280, 1389, 1543, 1044, 845, 478, 1236, 1839, 1092, 2186, 1776, 1438, 1153, 896, 2025, 1005, 1292, 1493, 2281, 1390, 1544, 1045, 846, 479, 1237, 1840, 1093, 2187, 1777, 1439, 1154, 897, 2026, 1006, 1293, 1494, 2282, 1391, 1545, 1046, 847, 480, 1238, 1841, 1094, 2188, 1778, 1440, 1155, 898, 2027, 1007, 1294, 1495, 2283, 1392, 1546, 1047, 848, 481, 1239, 1842, 1095, 2189, 1779, 1081, 1156, 899, 2028, 1008, 1295, 1496, 2284, 1393, 1547, 1048, 849, 482, 1240, 1843, 1096, 2190, 1780, 1082, 1157, 900, 2029, 1009, 1296, 1497, 2285, 1394, 1548, 1049, 850, 483, 1241, 1844, 1097, 2191, 1781, 1083, 1158, 901, 2030, 1010, 1297, 1498, 2286, 1395, 1549, 1050, 851, 484, 1242, 1845, 1098, 2192, 1782, 1084, 1159, 902, 2031, 1011, 1298, 1499, 2287, 1396, 1550, 1051, 852, 485, 1243, 1846, 1099, 2193, 1783, 1085, 1160, 903, 2032, 1012, 1299, 1500, 2288, 1397, 1551, 1052, 853, 486, 1244, 1847, 1100, 2194, 1784, 1086, 1161, 904, 2033, 1013, 1300, 1501, 2289, 1398, 1552, 1053, 854, 487, 1245, 1848, 1101, 2195, 1785, 1087, 1162, 905, 2034, 1014, 1301, 1502, 2290, 1399, 1553, 1054, 855, 488, 1246, 1849, 1102, 2196, 1786, 1088, 1163, 906, 2035, 1015, 1302, 1503, 2291, 1400, 1554, 1055, 856, 489, 1247, 1850, 1103, 2197, 1787, 1089, 1164, 907, 2036, 1016, 1303, 1504, 2292, 1401, 1555, 1056, 857, 490, 1248, 1851, 1104, 2198, 1788, 1090, 1165, 908, 2037, 1017, 1304, 1505, 2293, 1402, 1556, 1057, 858, 491, 1249, 1852, 1105, 2199, 1789, 1091, 1166, 909, 2038, 1018, 1305, 1506, 2294, 1403, 1557, 1058, 859, 492, 1250, 1853, 1106, 2200, 1790, 1092, 1167, 910, 2039, 1019, 1306, 1507, 2295, 1404, 1558, 1059, 860, 493, 1251, 1854, 1107, 2201, 1791, 1093, 1168, 911, 2040, 1020, 1307, 1508, 2296, 1405, 1559, 1060, 861, 494, 1252, 1855, 1108, 2202, 1792, 1094, 1169, 912, 2041, 1021, 1308, 1509, 2297, 1406, 1560, 1061, 862, 495, 1253, 1856, 1109, 2203, 1793, 1095, 1170, 913, 2042, 1022, 1309, 1510, 2298, 1407, 1561, 1062, 863, 496, 1254, 1857, 1110, 2204, 1794, 1096, 1171, 914, 2043, 1023, 1310, 1511, 2299, 1408, 1562, 1063, 864, 497, 1255, 1858, 1111, 2205, 1795, 1097, 1172, 915, 2044, 1024, 1311, 1512, 2300, 1409, 1563, 1064, 865, 498, 1256, 1859, 1112, 2206, 1796, 1098, 1173, 916, 2045, 1025, 1312, 1513, 2301, 1410, 1564, 1065, 866, 499, 1257, 1860, 1113, 2207, 1797, 1099, 1174, 917, 2046, 1026, 1313, 1514, 2302, 1411, 1565, 1066, 867, 500, 1258, 1861, 1114, 2208, 1798, 1100, 1175, 918, 2047, 1027, 1314, 1515, 2303, 1412, 1566, 1067, 868, 501, 1259, 1862, 1115, 2209, 1799, 1101, 1176, 919, 2048, 1028, 1315, 1516, 2304, 1413, 1567, 1068, 869, 502, 1260, 1863, 1116, 2210, 1800, 1102, 1177, 920, 2049, 1029, 1316, 1517, 2305, 1414, 1568, 1069, 870, 503, 1261, 1864, 1117, 2211, 1486, 1103, 1178, 921, 2050, 1030, 1317, 1518, 2306, 1415, 1569, 1070, 871, 504, 1262, 1865, 1118, 2212, 1487, 1104, 1179, 922, 2051, 1031, 1318, 1519, 2307, 1416, 1570, 1071, 872, 505, 1263, 1866, 1119, 2213, 1488, 1105, 1180, 923, 2052, 1032, 1319, 1520, 2308, 1417, 1571, 1072, 873, 506, 1264, 1867, 1120, 2214, 1489, 1106, 1181, 924, 2053, 1033, 1320, 1521, 2309, 1418, 1572, 1073, 874, 507, 1265, 1868, 1121, 2215, 1490, 1107, 1182, 925, 2054, 1034, 1321, 1522, 2310, 1419, 1573, 1074, 875, 508, 1266, 1869, 1122, 2216, 1491, 1108, 1183, 926, 2055, 1035, 1322, 1523, 2311, 1420, 1574, 1075, 876, 509, 1267, 1870, 1123, 2217, 1492, 1109, 1184, 927, 2056, 1036, 1323, 1524, 2312, 1421, 1575, 1076, 877, 510, 1268, 1871, 1124, 2218, 1493, 1110, 1185, 928, 2057, 1037, 1324, 1525, 2313, 1422, 1576, 1077, 878, 511, 1269, 1872, 1125, 2219, 1494, 1111, 1186, 929, 2058, 1038, 1325, 1526, 2314, 1423, 1577, 1078, 879, 512, 1270, 1873, 1126, 2220, 1495, 1112, 1187, 930, 2059, 1039, 1326, 1527, 2315, 1424, 1578, 1079, 880, 513, 1271, 1874, 1127, 2221, 1496, 1113, 1188, 931, 2060, 1040, 1327, 1528, 2316, 1425, 1579, 1080, 881, 514, 1272, 1875, 1128, 2222, 1497, 1114, 1189, 932, 2061, 1041, 1328, 1529, 2317, 1426, 1580, 953, 882, 515, 1273, 1876, 1129, 2223, 1498, 1115, 1190, 933, 2062, 1042, 1329, 1530, 2318, 1427, 1581, 954, 883, 516, 1274, 1877, 1130, 2224, 1499, 1116, 1191, 934, 2063, 1043, 1330, 1531, 2319, 1428, 1582, 955, 884, 517, 1275, 1878, 1131, 2225, 1500, 1117, 1192, 935, 2064, 1044, 1331, 1532, 2320, 1429, 1583, 956, 885, 518, 1276, 1879, 1132, 2226, 1501, 1118, 1193, 936, 2065, 1045, 1332, 1533, 2321, 1430, 1584, 957, 886, 519, 1277, 1880, 1133, 2227, 1502, 1119, 1194, 937, 2066, 1046, 1333, 1534, 2322, 1431, 1585, 958, 887, 520, 1278, 1881, 1134, 2228, 1503, 1120, 1195, 938, 2067, 1047, 1334, 1535, 2323, 1432, 1586, 959, 888, 521, 1279, 1882, 1135, 2229, 1504, 1121, 1196, 939, 2068, 1048, 1335, 1536, 2324, 1433, 1587, 960, 889, 522, 1280, 1883, 1136, 2230, 1505, 1122, 1197, 940, 2069, 1049, 1336, 1537, 2325, 1434, 1588, 961, 890, 523, 1281, 1884, 1137, 2231, 1506, 1123, 1198, 941, 2070, 1050, 1337, 1538, 2326, 1435, 1589, 962, 891, 524, 1282, 1885, 1138, 2232, 1507, 1124, 1199, 942, 2071, 1051, 1338, 1539, 2327, 1436, 1590, 963, 892, 525, 1283, 1886, 1139, 2233, 1508, 1125, 1200, 943, 2072, 1052, 1339, 1540, 2328, 1437, 1591, 964, 893, 526, 1284, 1887, 1140, 2234, 1509, 1126, 1201, 944, 2073, 1053, 1340, 1541, 2329, 1438, 1592, 965, 894, 527, 1285, 1888, 1141, 2235, 1510, 1127, 1202, 945, 2074, 1054, 1341, 1542, 2330, 1439, 1593, 966, 895, 528, 1286, 1889, 1142, 2236, 1511, 1128, 1203, 946, 2075, 1055, 1342, 1543, 2331, 1440, 1594, 967, 896, 529, 1287, 1890, 1143, 2237, 1512, 1129, 1204, 947, 2076, 1056, 1343, 1544, 2332, 1081, 1595, 968, 897, 530, 1288, 1891, 1144, 2238, 1513, 1130, 1205, 948, 2077, 1057, 1344, 1545, 2333, 1082, 1596, 969, 898, 531, 1289, 1892, 1145, 2239, 1514, 1131, 1206, 949, 2078, 1058, 1345, 1546, 2334, 1083, 1597, 970, 899, 532, 1290, 1893, 1146, 2240, 1515, 1132, 1207, 950, 2079, 1059, 1346, 1547, 2335, 1084, 1598, 971, 900, 533, 1291, 1894, 1147, 2241, 1516, 1133, 1208, 951, 2080, 1060, 1347, 1548, 2336, 1085, 1599, 972, 901, 534, 1292, 1801, 1148, 2242, 1517, 1134, 1209, 952, 2081, 1061, 1348, 1549, 2337, 1086, 1600, 973, 902, 535, 1293, 1802, 1149, 2243, 1518, 1135, 1210, 953, 2082, 1062, 1349, 1550, 2338, 1087, 1601, 974, 903, 536, 1294, 1803, 1150, 2244, 1519, 1136, 1211, 954, 2083, 1063, 1350, 1551, 2339, 1088, 1602, 975, 904, 537, 1295, 1804, 1151, 2245, 1520, 1137, 1212, 955, 2084, 1064, 1351, 1552, 2340, 1089, 1603, 976, 905, 538, 1296, 1805, 1152, 2246, 1521, 1138, 1213, 956, 2085, 1065, 1352, 1553, 2341, 1090, 1604, 977, 906, 539, 1297, 1806, 1153, 2247, 1522, 1139, 1214, 957, 2086, 1066, 1353, 1554, 2342, 1091, 1605, 978, 907, 540, 1298, 1807, 1154, 2248, 1523, 1140, 1215, 958, 2087, 1067, 1354, 1555, 2343, 1092, 1606, 979, 908, 541, 1299, 1808, 1155, 2249, 1524, 1141, 1216, 959, 2088, 1068, 1355, 1556, 2344, 1093, 1607, 980, 909, 542, 1300, 1809, 1156, 2250, 1525, 1142, 1217, 960, 2089, 1069, 1356, 1557, 2345, 1094, 1608, 981, 910, 543, 1301, 1810, 1157, 2251, 1526, 1143, 1218, 961, 2090, 1070, 1357, 1558, 2346, 1095, 1609, 982, 911, 544, 1302, 1811, 1158, 2252, 1527, 1144, 1219, 962, 2091, 1071, 1358, 1559, 2347, 1096, 1610, 983, 912, 545, 1303, 1812, 1159, 2253, 1528, 1145, 1220, 963, 2092, 1072, 1359, 1560, 2348, 1097, 1611, 984, 913, 546, 1304, 1813, 1160, 2254, 1529, 1146, 1221, 964, 2093, 1073, 1360, 1561, 2349, 1098, 1612, 985, 914, 547, 1305, 1814, 1161, 2255, 1530, 1147, 1222, 965, 2094, 1074, 1361, 1562, 2350, 1099, 1613, 986, 915, 548, 1306, 1815, 1162, 2256, 1531, 1148, 1223, 966, 2095, 1075, 1362, 1563, 2351, 1100, 1614, 987, 916, 549, 1307, 1816, 1163, 2257, 1532, 1149, 1224, 967, 2096, 1076, 1363, 1564, 2352, 1101, 1615, 988, 917, 550, 1308, 1817, 1164, 2258, 1533, 1150, 1225, 968, 2097, 1077, 1364, 1565, 2353, 1102, 1616, 989, 918, 551, 1309, 1818, 1165, 2259, 1534, 1151, 1226, 969, 2098, 1078, 1365, 1566, 2354, 1103, 1617, 990, 919, 552, 1310, 1819, 1166, 2260, 1535, 1152, 1227, 970, 2099, 1079, 1366, 1567, 2355, 1104, 1618, 991, 920, 553, 1311, 1820, 1167, 2261, 1536, 1153, 1228, 971, 2100, 1080, 1367, 1568, 2356, 1105, 1619, 992, 921, 554, 1312, 1821, 1168, 2262, 1537, 1154, 1229, 972, 2101, 721, 1368, 1441, 2357, 1106, 1620, 993, 922, 555, 1313, 1822, 1169, 2263, 1538, 1155, 1230, 973, 2102, 722, 1369, 1442, 2358, 1107, 1621, 994, 923, 556, 1081, 1823, 1170, 2264, 1539, 1156, 1231, 974, 2103, 723, 1370, 1443, 2359, 1108, 1622, 995, 924, 557, 1082, 1824, 1171, 2265, 1540, 1157, 1232, 975, 2104, 724, 1371, 1444, 2360, 1109, 1623, 996, 925, 558, 1083, 1825, 1172, 2266, 1541, 1158, 1233, 976, 2105, 725, 1372, 1445, 2361, 1110, 1624, 997, 926, 559, 1084, 1826, 1173, 2267, 1542, 1159, 1234, 977, 2106, 726, 1373, 1446, 2362, 1111, 1625, 998, 927, 560, 1085, 1827, 1174, 2268, 1543, 1160, 1235, 978, 2107, 727, 1374, 1447, 2363, 1112, 1626, 999, 928, 561, 1086, 1828, 1175, 2269, 1544, 1161, 1236, 979, 2108, 728, 1375, 1448, 2364, 1113, 1627, 1000, 929, 562, 1087, 1829, 1176, 2270, 1545, 1162, 1237, 980, 2109, 729, 1376, 1449, 2365, 1114, 1628, 1001, 930, 563, 1088, 1830, 1177, 2271, 1546, 1163, 1238, 981, 2110, 730, 1377, 1450, 2366, 1115, 1629, 1002, 931, 564, 1089, 1831, 1178, 2272, 1547, 1164, 1239, 982, 2111, 731, 1378, 1451, 2367, 1116, 1630, 1003, 932, 565, 1090, 1832, 1179, 2273, 1548, 1165, 1240, 983, 2112, 732, 1379, 1452, 2368, 1117, 1631, 1004, 933, 566, 1091, 1833, 1180, 2274, 1549, 1166, 1241, 984, 2113, 733, 1380, 1453, 2369, 1118, 1632, 1005, 934, 567, 1092, 1834, 1181, 2275, 1550, 1167, 1242, 985, 2114, 734, 1381, 1454, 2370, 1119, 1633, 1006, 935, 568, 1093, 1835, 1182, 2276, 1551, 1168, 1243, 986, 2115, 735, 1382, 1455, 2371, 1120, 1634, 1007, 936, 569, 1094, 1836, 1183, 2277, 1552, 1169, 1244, 987, 2116, 736, 1383, 1456, 2372, 1121, 1635, 1008, 937, 570, 1095, 1837, 1184, 2278, 1553, 1170, 1245, 988, 2117, 737, 1384, 1457, 2373, 1122, 1636, 1009, 938, 571, 1096, 1838, 1185, 2279, 1554, 1171, 1246, 989, 2118, 738, 1385, 1458, 2374, 1123, 1637, 1010, 939, 572, 1097, 1839, 1186, 2280, 1555, 1172, 1247, 990, 2119, 739, 1386, 1459, 2375, 1124, 1638, 1011, 940, 573, 1098, 1840, 1187, 2281, 1556, 1173, 1248, 991, 2120, 740, 1387, 1460, 2376, 1125, 1639, 1012, 941, 574, 1099, 1841, 1188, 2282, 1557, 1174, 1249, 992, 2121, 741, 1388, 1461, 2377, 1126, 1640, 1013, 942, 575, 1100, 1842, 1189, 2283, 1558, 1175, 1250, 993, 2122, 742, 1389, 1462, 2378, 1127, 1641, 1014, 943, 576, 1101, 1843, 1190, 2284, 1559, 1176, 1251, 994, 2123, 743, 1390, 1463, 2379, 1128, 1642, 1015, 944, 577, 1102, 1844, 1191, 2285, 1560, 1177, 1252, 995, 2124, 744, 1391, 1464, 2380, 1129, 1643, 1016, 945, 578, 1103, 1845, 1192, 2286, 1561, 1178, 1253, 996, 2125, 745, 1392, 1465, 2381, 1130, 1644, 1017, 946, 579, 1104, 1846, 1193, 2287, 1562, 1179, 1254, 997, 2126, 746, 1393, 1466, 2382, 1131, 1645, 1018, 947, 580, 1105, 1847, 1194, 2288, 1563, 1180, 1255, 998, 2127, 747, 1394, 1467, 2383, 1132, 1646, 1019, 948, 581, 1106, 1848, 1195, 2289, 1564, 1181, 1256, 999, 2128, 748, 1395, 1468, 2384, 1133, 1647, 1020, 949, 582, 1107, 1849, 1196, 2290, 1565, 1182, 1257, 1000, 2129, 749, 1396, 1469, 2385, 1134, 1648, 1021, 950, 583, 1108, 1850, 1197, 2291, 1566, 1183, 1258, 1001, 2130, 750, 1397, 1470, 2386, 1135, 1649, 1022, 951, 584, 1109, 1851, 1198, 2292, 1567, 1184, 1259, 1002, 2131, 751, 1398, 1471, 2387, 1136, 1650, 1023, 952, 585, 1110, 1852, 1199, 2293, 1568, 1185, 1260, 1003, 2132, 752, 1399, 1472, 2388, 1137, 1651, 1024, 953, 586, 1111, 1853, 1200, 2294, 1569, 1186, 1261, 1004, 2133, 753, 1400, 1473, 2389, 1138, 1652, 1025, 954, 587, 1112, 1854, 1201, 2295, 1570, 1187, 1262, 1005, 2134, 754, 1401, 1474, 2390, 1139, 1653, 1026, 955, 588, 1113, 1855, 1202, 2296, 1571, 1188, 1263, 1006, 2135, 755, 1402, 1475, 2391, 1140, 1654, 1027, 956, 589, 1114, 1856, 1203, 2297, 1572, 1189, 1264, 1007, 2136, 756, 1403, 1476, 2392, 1141, 1655, 1028, 957, 590, 1115, 1857, 1204, 2298, 1573, 1190, 1265, 1008, 2137, 757, 1404, 1477, 2393, 1142, 1656, 1029, 958, 591, 1116, 1858, 1205, 2299, 1574, 1191, 1266, 1009, 2138, 758, 1405, 1478, 2394, 1143, 1657, 1030, 959, 592, 1117, 1859, 1206, 2300, 1575, 1192, 1267, 1010, 2139, 759, 1406, 1479, 2395, 1144, 1658, 1031, 960, 593, 1118, 1860, 1207, 2301, 1576, 1193, 1268, 1011, 2140, 760, 1407, 1480, 2396, 1145, 1659, 1032, 961, 594, 1119, 1861, 1208, 2302, 1577, 1194, 1269, 1012, 2141, 761, 1408, 1481, 2397, 1146, 1660, 1033, 962, 595, 1120, 1862, 1209, 2303, 1578, 1195, 1270, 1013, 2142, 762, 1409, 1482, 2398, 1147, 1661, 1034, 963, 596, 1121, 1863, 1210, 2304, 1579, 1196, 1271, 1014, 2143, 763, 1410, 1483, 2399, 1148, 1662, 1035, 964, 597, 1122, 1864, 1211, 2305, 1580, 1197, 1272, 1015, 2144, 764, 1411, 1484, 2400, 1149, 1663, 1036, 965, 598, 1123, 1865, 1212, 2161, 1581, 1198, 1273, 1016, 2145, 765, 1412, 1485, 2401, 1150, 1664, 1037, 966, 599, 1124, 1866, 1213, 2162, 1582, 1199, 1274, 1017, 2146, 766, 1413, 1486, 2402, 1151, 1665, 1038, 967, 600, 1125, 1867, 1214, 2163, 1583, 1200, 1275, 1018, 2147, 767, 1414, 1487, 2403, 1152, 1666, 1039, 968, 601, 1126, 1868, 1215, 2164, 1584, 1201, 1276, 1019, 2148, 768, 1415, 1488, 2404, 1153, 1667, 1040, 969, 602, 1127, 1869, 1216, 2165, 1585, 1202, 1277, 1020, 2149, 769, 1416, 1489, 2405, 1154, 1668, 1041, 970, 603, 1128, 1870, 1217, 2166, 1586, 1203, 1278, 1021, 2150, 770, 1417, 1490, 2406, 1155, 1669, 1042, 971, 604, 1129, 1871, 1218, 2167, 1587, 1204, 1279, 1022, 2151, 771, 1418, 1491, 2407, 1156, 1670, 1043, 972, 605, 1130, 1872, 1219, 2168, 1588, 1205, 1280, 1023, 2152, 772, 1419, 1492, 2408, 1157, 1671, 1044, 973, 606, 1131, 1873, 1220, 2169, 1589, 1206, 1281, 1024, 2153, 773, 1420, 1493, 2409, 1158, 1672, 1045, 974, 607, 1132, 1874, 1221, 2170, 1590, 1207, 1282, 1025, 2154, 774, 1421, 1494, 2410, 1159, 1673, 1046, 975, 608, 1133, 1875, 1222, 2171, 1591, 1208, 1283, 1026, 2155, 775, 1422, 1495, 2411, 1160, 1674, 1047, 976, 609, 1134, 1876, 1223, 2172, 1592, 1209, 1284, 1027, 2156, 776, 1423, 1496, 2412, 1161, 1675, 1048, 977, 610, 1135, 1877, 1224, 2173, 1593, 1210, 1285, 1028, 2157, 777, 1424, 1497, 2413, 1162, 1676, 1049, 978, 611, 1136, 1878, 1225, 2174, 1594, 1211, 1286, 1029, 2158, 778, 1425, 1498, 2414, 1163, 1677, 1050, 979, 612, 1137, 1879, 1226, 2175, 1595, 1212, 1287, 1030, 2159, 779, 1426, 1499, 2415, 1164, 1678, 1051, 980, 613, 1138, 1880, 1227, 2176, 1596, 1213, 1288, 1031, 2160, 780, 1427, 1500, 2416, 1165, 1679, 1052, 981, 614, 1139, 1881, 1228, 2177, 1597, 1214, 1289, 1032, 1801, 781, 1428, 1501, 2417, 1166, 1680, 1053, 982, 615, 1140, 1882, 1229, 2178, 1598, 1215, 1290, 1033, 1802, 782, 1429, 1502, 2418, 1167, 1681, 1054, 983, 616, 1141, 1883, 1230, 2179, 1599, 1216, 1291, 1034, 1803, 783, 1430, 1503, 2419, 1168, 1682, 1055, 984, 617, 1142, 1884, 1231, 2180, 1600, 1217, 1292, 1035, 1804, 784, 1431, 1504, 2420, 1169, 1683, 1056, 985, 618, 1143, 1885, 1232, 2181, 1601, 1218, 1293, 1036, 1805, 785, 1432, 1505, 2421, 1170, 1684, 1057, 986, 619, 1144, 1886, 1233, 2182, 1602, 1219, 1294, 1037, 1806, 786, 1433, 1506, 2422, 1171, 1685, 1058, 987, 620, 1145, 1887, 1234, 2183, 1603, 1220, 1295, 1038, 1807, 787, 1434, 1507, 2423, 1172, 1686, 1059, 988, 621, 1146, 1888, 1235, 2184, 1604, 1221, 1296, 1039, 1808, 788, 1435, 1508, 2424, 1173, 1687, 1060, 989, 622, 1147, 1889, 1236, 2185, 1605, 1222, 1297, 1040, 1809, 789, 1436, 1509, 2425, 1174, 1688, 1061, 990, 623, 1148, 1890, 1237, 2186, 1606, 1223, 1298, 1041, 1810, 790, 1437, 1510, 2426, 1175, 1689, 1062, 991, 624, 1149, 1891, 1238, 2187, 1607, 1224, 1299, 1042, 1811, 791, 1438, 1511, 2427, 1176, 1690, 1063, 992, 625, 1150, 1892, 1239, 2188, 1608, 1225, 1300, 1043, 1812, 792, 1439, 1512, 2428, 1177, 1691, 1064, 993, 626, 1151, 1893, 1240, 2189, 1609, 1226, 1301, 1044, 1813, 793, 1440, 1513, 2429, 1178, 1692, 1065, 994, 627, 1152, 1894, 1241, 2190, 1610, 1227, 1302, 1045, 1814, 794, 1081, 1514, 2430, 1179, 1693, 1066, 995, 628, 1153, 1895, 1242, 2191, 1611, 1228, 1303, 1046, 1815, 795, 1082, 1515, 2431, 1180, 1694, 1067, 996, 629, 1154, 1896, 1243, 2192, 1612, 1229, 1304, 1047, 1816, 796, 1083, 1516, 2432, 1181, 1695, 1068, 997, 630, 1155, 1897, 1244, 2193, 1613, 1230, 1305, 1048, 1817, 797, 1084, 1517, 2433, 1182, 1696, 1069, 998, 631, 1156, 1898, 1245, 2194, 1614, 1231, 1306, 1049, 1818, 798, 1085, 1518, 2434, 1183, 1697, 1070, 999, 632, 1157, 1899, 1246, 2195, 1615, 1232, 1307, 1050, 1819, 799, 1086, 1519, 2435, 1184, 1698, 1071, 1000, 633, 1158, 1900, 1247, 2196, 1616, 1233, 1308, 1051, 1820, 800, 1087, 1520, 2436, 1185, 1699, 1072, 1001, 634, 1159, 1901, 1248, 2197, 1617, 1234, 1309, 1052, 1821, 801, 1088, 1521, 2437, 1186, 1700, 1073, 1002, 635, 1160, 1902, 1249, 2198, 1618, 1235, 1310, 1053, 1822, 802, 1089, 1522, 2438, 1187, 1701, 1074, 1003, 636, 1161, 1903, 1250, 2199, 1619, 1236, 1311, 1054, 1823, 803, 1090, 1523, 2439, 1188, 1702, 1075, 1004, 637, 1162, 1904, 1251, 2200, 1620, 1237, 1312, 1055, 1824, 804, 1091, 1524, 2440, 1189, 1703, 1076, 1005, 638, 1163, 1905, 1252, 2201, 1621, 1238, 1313, 1056, 1825, 805, 1092, 1525, 2441, 1190, 1704, 1077, 1006, 639, 1164, 1906, 1253, 2202, 1622, 1239, 1314, 1057, 1826, 806, 1093, 1526, 2442, 1191, 1705, 1078, 1007, 640, 1165, 1907, 1254, 2203, 1623, 1240, 1315, 1058, 1827, 807, 1094, 1527, 2443, 1192, 1706, 1079, 1008, 641, 1166, 1908, 1255, 2204, 1624, 1241, 1316, 1059, 1828, 808, 1095, 1528, 2444, 1193, 1707, 1080, 1009, 642, 1167, 1909, 1256, 2205, 1625, 1242, 1317, 1060, 1829, 809, 1096, 1529, 2445, 1194, 1708, 849, 1010, 643, 1168, 1910, 1257, 2206, 1626, 1243, 1318, 1061, 1830, 810, 1097, 1530, 2446, 1195, 1709, 850, 1011, 644, 1169, 1911, 1258, 2207, 1627, 1244, 1319, 1062, 1831, 811, 1098, 1531, 2447, 1196, 1710, 851, 1012, 645, 1170, 1912, 1259, 2208, 1628, 1245, 1320, 1063, 1832, 812, 1099, 1532, 2448, 1197, 1711, 852, 1013, 646, 1171, 1913, 1260, 2209, 1629, 1246, 1321, 1064, 1833, 813, 1100, 1533, 2449, 1198, 1712, 853, 1014, 647, 1172, 1914, 1261, 2210, 1630, 1247, 1322, 1065, 1834, 814, 1101, 1534, 2450, 1199, 1713, 854, 1015, 648, 1173, 1915, 1262, 2211, 1631, 1248, 1323, 1066, 1835, 815, 1102, 1535, 2451, 1200, 1714, 855, 1016, 649, 1174, 1916, 1263, 2212, 1632, 1249, 1324, 1067, 1836, 816, 1103, 1536, 2452, 1201, 1715, 856, 1017, 650, 1175, 1917, 1264, 2213, 1633, 1250, 1325, 1068, 1837, 817, 1104, 1537, 2453, 1202, 1716, 857, 1018, 651, 1176, 1918, 1265, 2214, 1634, 1251, 1326, 1069, 1838, 818, 1105, 1538, 2454, 2309, 2050, 2431, 1457, 2978, 1410, 2013, 1568, 2360, 1861, 1553, 1706, 1127, 2682, 1222, 2325, 1667, 2866, 2310, 2051, 2432, 1458, 2979, 1411, 2014, 1569, 2361, 1862, 1554, 1707, 1128, 2683, 1223, 2326, 1668, 2867, 2311, 2052, 2433, 1459, 2980, 1412, 2015, 1570, 2362, 1863, 1555, 1708, 1129, 2684, 1224, 2327, 1669, 2868, 2312, 2053, 2434, 1460, 2981, 1413, 2016, 1571, 2363, 1864, 1556, 1709, 1130, 2685, 1225, 2328, 1670, 2869, 2313, 2054, 2435, 1461, 2982, 1414, 2017, 1572, 2364, 1865, 1557, 1710, 1131, 2686, 1226, 2329, 1671, 2870, 2314, 2055, 2436, 1462, 2983, 1415, 2018, 1573, 2365, 1866, 1558, 1711, 1132, 2687, 1227, 2330, 1672, 2871, 2315, 2056, 2437, 1463, 2984, 1416, 2019, 1574, 2366, 1867, 1559, 1712, 1133, 2688, 1228, 2331, 1673, 2872, 2316, 2057, 2438, 1464, 2985, 1417, 2020, 1575, 2367, 1868, 1560, 1713, 1134, 2689, 1229, 2332, 1674, 2873, 2317, 2058, 2439, 1465, 2986, 1418, 2021, 1576, 2368, 1869, 1561, 1714, 1135, 2690, 1230, 2333, 1675, 2874, 2318, 2059, 2440, 1466, 2987, 1419, 2022, 1577, 2369, 1870, 1562, 1715, 1136, 2691, 1231, 2334, 1676, 2875, 2319, 2060, 2441, 1467, 2988, 1420, 2023, 1578, 2370, 1871, 1563, 1716, 1137, 2692, 1232, 2335, 1677, 2876, 2320, 2061, 2442, 1468, 2989, 1421, 2024, 1579, 2371, 1872, 1564, 1717, 1138, 2693, 1233, 2336, 1678, 2877, 2321, 2062, 2443, 1469, 2990, 1422, 2025, 1580, 2372, 1873, 1565, 1718, 1139, 2694, 1234, 2337, 1679, 2878, 2322, 2063, 2444, 1470, 2991, 1423, 2026, 1581, 2373, 1874, 1566, 1719, 1140, 2695, 1235, 2338, 1680, 2879, 2323, 2064, 2445, 1471, 2992, 1424, 2027, 1582, 2374, 1875, 1567, 1720, 1141, 2696, 1236, 2339, 1681, 2880, 2324, 2065, 2446, 1472, 2993, 1425, 2028, 1583, 2375, 1876, 1568, 1721, 1142, 2697, 1237, 2340, 1682, 2521, 2325, 2066, 2447, 1473, 2994, 1426, 2029, 1584, 2376, 1877, 1569, 1722, 1143, 2698, 1238, 2341, 1683, 2522, 2326, 2067, 2448, 1474, 2995, 1427, 2030, 1585, 2377, 1878, 1570, 1723, 1144, 2699, 1239, 2342, 1684, 2523, 2327, 2068, 2449, 1475, 2996, 1428, 2031, 1586, 2378, 1879, 1571, 1724, 1145, 2700, 1240, 2343, 1685, 2524, 2328, 2069, 2450, 1476, 2997, 1429, 2032, 1587, 2379, 1880, 1572, 1725, 1146, 2701, 1241, 2344, 1686, 2525, 2329, 2070, 2451, 1477, 2998, 1430, 2033, 1588, 2380, 1881, 1573, 1726, 1147, 2702, 1242, 2345, 1687, 2526, 2330, 2071, 2452, 1478, 2999, 1431, 2034, 1589, 2381, 1882, 1574, 1727, 1148, 2703, 1243, 2346, 1688, 2527, 2331, 2072, 2453, 1479, 3000, 1432, 2035, 1590, 2382, 1883, 1575, 1728, 1149, 2704, 1244, 2347, 1689, 2528, 2332, 2073, 2454, 1480, 3001, 1433, 2036, 1591, 2383, 1884, 1576, 1729, 1150, 2705, 1245, 2348, 1690, 2529, 2333, 2074, 2455, 1481, 3002, 1434, 2037, 1592, 2384, 1885, 1577, 1730, 1151, 2706, 1246, 2349, 1691, 2530, 2334, 2075, 2456, 1482, 3003, 1435, 2038, 1593, 2385, 1886, 1578, 1731, 1152, 2707, 1247, 2350, 1692, 2531, 2335, 2076, 2457, 1483, 3004, 1436, 2039, 1594, 2386, 1887, 1579, 1732, 1153, 2708, 1248, 2351, 1693, 2532, 2336, 2077, 2458, 1484, 3005, 1437, 2040, 1595, 2387, 1888, 1580, 1733, 1154, 2709, 1249, 2352, 1694, 2533, 2337, 2078, 2459, 1485, 3006, 1438, 2041, 1596, 2388, 1889, 1581, 1734, 1155, 2710, 1250, 2353, 1695, 2534, 2338, 2079, 2460, 1486, 3007, 1439, 2042, 1597, 2389, 1890, 1582, 1735, 1156, 2711, 1251, 2354, 1696, 2535, 2339, 2080, 2461, 1487, 3008, 1440, 2043, 1598, 2390, 1891, 1583, 1736, 1157, 2712, 1252, 2355, 1697, 2536, 2340, 2081, 2462, 1488, 3009, 1208, 2044, 1599, 2391, 1892, 1584, 1737, 1158, 2713, 1253, 2356, 1698, 2537, 2341, 2082, 2463, 1489, 3010, 1209, 2045, 1600, 2392, 1893, 1585, 1738, 1159, 2714, 1254, 2357, 1699, 2538, 2342, 2083, 2464, 1490, 3011, 1210, 2046, 1601, 2393, 1894, 1586, 1739, 1160, 2715, 1255, 2358, 1700, 2539, 2343, 2084, 2465, 1491, 3012, 1211, 2047, 1602, 2394, 1895, 1587, 1740, 1161, 2716, 1256, 2359, 1701, 2540, 2344, 2085, 2466, 1492, 3013, 1212, 2048, 1603, 2395, 1896, 1588, 1741, 1162, 2717, 1257, 2360, 1702, 2541, 2345, 2086, 2467, 1493, 3014, 1213, 2049, 1604, 2396, 1897, 1589, 1742, 1163, 2718, 1258, 2361, 1703, 2542, 2346, 2087, 2468, 1494, 3015, 1214, 2050, 1605, 2397, 1898, 1590, 1743, 1164, 2719, 1259, 2362, 1704, 2543, 2347, 2088, 2469, 1495, 3016, 1215, 2051, 1606, 2398, 1899, 1591, 1744, 1165, 2720, 1260, 2363, 1705, 2544, 2348, 2089, 2470, 1496, 3017, 1216, 2052, 1607, 2399, 1900, 1592, 1745, 1166, 2721, 1261, 2364, 1706, 2545, 2349, 2090, 2471, 1497, 3018, 1217, 2053, 1608, 2400, 1901, 1593, 1746, 1167, 2722, 1262, 2365, 1579, 2546, 2350, 2091, 2472, 1498, 3019, 1218, 2054, 1609, 2401, 1902, 1594, 1747, 1168, 2723, 1263, 2366, 1580, 2547, 2351, 2092, 2473, 1499, 3020, 1219, 2055, 1610, 2402, 1903, 1595, 1748, 1169, 2724, 1264, 2367, 1581, 2548, 2352, 2093, 2474, 1500, 3021, 1220, 2056, 1611, 2403, 1904, 1596, 1749, 1170, 2725, 1265, 2368, 1582, 2549, 2353, 2094, 2475, 1501, 3022, 1221, 2057, 1612, 2404, 1905, 1597, 1750, 1171, 2726, 1266, 2369, 1583, 2550, 2354, 2095, 2476, 1502, 3023, 1222, 2058, 1613, 2405, 1906, 1598, 1751, 1172, 2727, 1267, 2370, 1584, 2551, 2355, 2096, 2477, 1503, 3024, 1223, 2059, 1614, 2406, 1907, 1599, 1752, 1173, 2728, 1268, 2371, 1585, 2552, 2356, 2097, 2478, 1504, 3025, 1224, 2060, 1615, 2407, 1908, 1600, 1753, 1174, 2729, 1269, 2372, 1586, 2553, 2357, 2098, 2479, 1505, 3026, 1225, 2061, 1616, 2408, 1909, 1601, 1754, 1175, 2730, 1270, 2373, 1587, 2554, 2358, 2099, 2480, 1506, 3027, 1226, 2062, 1617, 2409, 1910, 1602, 1755, 1176, 2731, 1271, 2374, 1588, 2555, 2359, 2100, 2481, 1507, 3028, 1227, 2063, 1618, 2410, 1911, 1603, 1756, 1177, 2732, 1272, 2375, 1589, 2556, 2360, 2101, 2482, 1508, 3029, 1228, 2064, 1619, 2411, 1912, 1604, 1757, 1178, 2733, 1273, 2376, 1590, 2557, 2361, 2102, 2483, 1509, 3030, 1229, 2065, 1620, 2412, 1913, 1605, 1758, 1179, 2734, 1274, 2377, 1591, 2558, 2362, 2103, 2484, 1510, 3031, 1230, 2066, 1621, 2413, 1914, 1606, 1759, 1180, 2735, 1275, 2378, 1592, 2559, 2363, 2104, 2485, 1511, 3032, 1231, 2067, 1622, 2414, 1915, 1607, 1760, 1181, 2736, 1276, 2379, 1593, 2560, 2364, 2105, 2486, 1512, 3033, 1232, 2068, 1623, 2415, 1916, 1608, 1761, 1182, 2737, 1277, 2380, 1594, 2561, 2365, 2106, 2487, 1513, 3034, 1233, 2069, 1624, 2416, 1917, 1609, 1762, 1183, 2738, 1278, 2381, 1595, 2562, 2366, 2107, 2488, 1514, 3035, 1234, 2070, 1625, 2417, 1918, 1610, 1763, 1184, 2739, 1279, 2382, 1596, 2563, 2367, 2108, 2489, 1515, 3036, 1235, 2071, 1626, 2418, 1919, 1611, 1764, 1185, 2740, 1280, 2383, 1597, 2564, 2368, 2109, 2490, 1516, 3037, 1236, 2072, 1627, 2419, 1920, 1612, 1765, 1186, 2741, 1281, 2384, 1598, 2565, 2369, 2110, 2491, 1517, 3038, 1237, 2073, 1628, 2420, 1921, 1613, 1766, 1187, 2742, 1282, 2385, 1599, 2566, 2370, 2111, 2492, 1518, 3039, 1238, 2074, 1629, 2421, 1922, 1614, 1767, 1188, 2743, 1283, 2386, 1600, 2567, 2371, 2112, 2493, 1519, 3040, 1239, 2075, 1630, 2422, 1923, 1615, 1768, 1189, 2744, 1284, 2387, 1601, 2568, 2372, 2113, 2494, 1520, 3041, 1240, 2076, 1631, 2423, 1924, 1616, 1769, 1190, 2745, 1285, 2388, 1602, 2569, 2373, 2114, 2495, 1521, 3042, 1241, 2077, 1632, 2424, 1925, 1617, 1770, 1191, 2746, 1286, 2389, 1603, 2570, 2374, 2115, 2496, 1522, 3043, 1242, 2078, 1633, 2425, 1926, 1618, 1771, 1192, 2747, 1287, 2390, 1604, 2571, 2375, 2116, 2497, 1523, 3044, 1243, 2079, 1634, 2426, 1927, 1619, 1772, 1193, 2748, 1288, 2391, 1605, 2572, 2376, 2117, 2498, 1524, 3045, 1244, 2080, 1635, 2427, 1928, 1620, 1773, 1194, 2749, 1289, 2392, 1606, 2573, 2377, 2118, 2499, 1525, 3046, 1245, 2081, 1636, 2428, 1929, 1621, 1774, 1195, 2750, 1290, 2393, 1607, 2574, 2378, 2119, 2500, 1526, 3047, 1246, 2082, 1637, 2429, 1930, 1622, 1775, 1196, 2751, 1291, 2161, 1608, 2575, 2379, 2120, 2501, 1527, 3048, 1247, 2083, 1638, 2430, 1931, 1623, 1776, 1197, 2752, 1292, 2162, 1609, 2576, 2380, 2121, 2502, 1528, 3049, 1248, 2084, 1639, 2431, 1932, 1624, 1777, 1198, 2753, 1293, 2163, 1610, 2577, 2381, 2122, 2503, 1529, 3050, 1249, 2085, 1640, 2432, 1933, 1625, 1778, 1199, 2754, 1294, 2164, 1611, 2578, 2382, 2123, 2504, 1530, 3051, 1250, 2086, 1641, 2433, 1934, 1626, 1779, 1200, 2755, 1295, 2165, 1612, 2579, 2383, 2124, 2505, 1531, 3052, 1251, 2087, 1642, 2434, 1935, 1627, 1780, 1201, 2756, 1296, 2166, 1613, 2580, 2384, 2125, 2506, 1532, 3053, 1252, 2088, 1643, 2435, 1936, 1628, 1781, 1202, 2757, 1297, 2167, 1614, 2581, 2385, 2126, 2507, 1533, 3054, 1253, 2089, 1644, 2436, 1937, 1629, 1782, 1203, 2758, 1298, 2168, 1615, 2582, 2386, 2127, 2508, 1534, 3055, 1254, 2090, 1645, 2437, 1938, 1630, 1783, 1204, 2759, 1299, 2169, 1616, 2583, 2387, 2128, 2509, 1535, 3056, 1255, 2091, 1646, 2438, 1939, 1631, 1784, 1205, 2760, 1300, 2170, 1617, 2584, 2388, 2129, 2510, 1536, 3057, 1256, 2092, 1647, 2439, 1940, 1632, 1785, 1206, 2761, 1301, 2171, 1618, 2585, 2389, 2130, 2511, 1537, 3058, 1257, 2093, 1648, 2440, 1941, 1633, 1786, 1207, 2762, 1302, 2172, 1619, 2586, 2390, 2131, 2512, 1538, 3059, 1258, 2094, 1649, 2441, 1942, 1634, 1787, 1208, 2763, 1303, 2173, 1620, 2587, 2391, 2132, 2513, 1539, 3060, 1259, 2095, 1650, 2442, 1943, 1635, 1788, 1209, 2764, 1304, 2174, 1621, 2588, 2392, 2133, 2514, 1540, 3061, 1260, 2096, 1651, 2443, 1944, 1636, 1789, 1210, 2765, 1305, 2175, 1622, 2589, 2393, 2134, 2515, 1541, 3062, 1261, 2097, 1652, 2444, 1945, 1637, 1790, 1211, 2766, 1306, 2176, 1623, 2590, 2394, 2135, 2516, 1542, 3063, 1262, 2098, 1653, 2445, 1946, 1638, 1791, 1212, 2767, 1307, 2177, 1624, 2591, 2395, 2136, 2517, 1543, 3064, 1263, 2099, 1654, 2446, 1947, 1639, 1792, 1213, 2768, 1308, 2178, 1625, 2592, 2396, 2137, 2518, 1544, 3065, 1264, 2100, 1655, 2447, 1948, 1640, 1793, 1214, 2769, 1309, 2179, 1626, 2593, 2397, 2138, 2519, 1545, 3066, 1265, 2101, 1656, 2448, 1949, 1641, 1794, 1215, 2770, 1310, 2180, 1627, 2594, 2398, 2139, 2520, 1546, 3067, 1266, 2102, 1657, 2449, 1950, 1642, 1795, 1216, 2771, 1311, 2181, 1628, 2595, 2399, 2140, 2161, 1547, 3068, 1267, 2103, 1658, 2450, 1951, 1643, 1796, 1217, 2772, 1312, 2182, 1629, 2596, 2400, 2141, 2162, 1548, 3069, 1268, 2104, 1659, 2451, 1952, 1644, 1797, 1218, 2773, 1313, 2183, 1630, 2597, 2401, 2142, 2163, 1549, 3070, 1269, 2105, 1660, 2452, 1953, 1645, 1798, 1219, 2774, 1314, 2184, 1631, 2598, 2402, 2143, 2164, 1550, 3071, 1270, 2106, 1661, 2453, 1954, 1646, 1799, 1220, 2775, 1315, 2185, 1632, 2599, 2403, 2144, 2165, 1551, 3072, 1271, 2107, 1662, 2454, 1955, 1647, 1800, 1221, 2521, 1316, 2186, 1633, 2600, 2404, 2145, 2166, 1552, 3073, 1272, 2108, 1663, 2455, 1956, 1648, 1441, 1222, 2522, 1317, 2187, 1634, 2601, 2405, 2146, 2167, 1553, 3074, 1273, 2109, 1664, 2456, 1957, 1649, 1442, 1223, 2523, 1318, 2188, 1635, 2602, 2406, 2147, 2168, 1554, 3075, 1274, 2110, 1665, 2457, 1958, 1650, 1443, 1224, 2524, 1319, 2189, 1636, 2603, 2407, 2148, 2169, 1555, 3076, 1275, 2111, 1666, 2458, 1959, 1651, 1444, 1225, 2525, 1320, 2190, 1637, 2604, 2408, 2149, 2170, 1556, 2881, 1276, 2112, 1667, 2459, 1960, 1652, 1445, 1226, 2526, 1321, 2191, 1638, 2605, 2409, 2150, 2171, 1557, 2882, 1277, 2113, 1668, 2460, 1961, 1653, 1446, 1227, 2527, 1322, 2192, 1639, 2606, 2410, 2151, 2172, 1558, 2883, 1278, 2114, 1669, 2461, 1962, 1654, 1447, 1228, 2528, 1323, 2193, 1640, 2607, 2411, 2152, 2173, 1559, 2884, 1279, 2115, 1670, 2462, 1963, 1655, 1448, 1229, 2529, 1324, 2194, 1641, 2608, 2412, 2153, 2174, 1560, 2885, 1280, 2116, 1671, 2463, 1964, 1656, 1449, 1230, 2530, 1325, 2195, 1642, 2609, 2413, 2154, 2175, 1561, 2886, 1281, 2117, 1672, 2464, 1965, 1657, 1450, 1231, 2531, 1326, 2196, 1643, 2610, 2414, 2155, 2176, 1562, 2887, 1282, 2118, 1673, 2465, 1966, 1658, 1451, 1232, 2532, 1327, 2197, 1644, 2611, 2415, 2156, 2177, 1563, 2888, 1283, 2119, 1674, 2466, 1967, 1659, 1452, 1233, 2533, 1328, 2198, 1645, 2612, 2416, 2157, 2178, 1564, 2889, 1284, 2120, 1675, 2467, 1968, 1660, 1453, 1234, 2534, 1329, 2199, 1646, 2613, 2417, 2158, 2179, 1565, 2890, 1285, 2121, 1676, 2468, 1969, 1661, 1454, 1235, 2535, 1330, 2200, 1647, 2614, 2418, 2159, 2180, 1566, 2891, 1286, 2122, 1677, 2469, 1970, 1662, 1455, 1236, 2536, 1331, 2201, 1648, 2615, 2419, 2160, 2181, 1567, 2892, 1287, 2123, 1678, 2470, 1971, 1663, 1456, 1237, 2537, 1332, 2202, 1649, 2616, 2420, 1801, 2182, 1568, 2893, 1288, 2124, 1679, 2471, 1972, 1664, 1457, 1238, 2538, 1333, 2203, 1650, 2617, 2421, 1802, 2183, 1569, 2894, 1289, 2125, 1680, 2472, 1973, 1665, 1458, 1239, 2539, 1334, 2204, 1651, 2618, 2422, 1803, 2184, 1570, 2895, 1290, 2126, 1681, 2473, 1974, 1666, 1459, 1240, 2540, 1335, 2205, 1652, 2619, 2423, 1804, 2185, 1571, 2896, 1291, 2127, 1682, 2474, 1975, 1667, 1460, 1241, 2541, 1336, 2206, 1653, 2620, 2424, 1805, 2186, 1572, 2897, 1292, 2128, 1683, 2475, 1976, 1668, 1461, 1242, 2542, 1337, 2207, 1654, 2621, 2425, 1806, 2187, 1573, 2898, 1293, 2129, 1684, 2476, 1977, 1669, 1462, 1243, 2543, 1338, 2208, 1655, 2622, 2426, 1807, 2188, 1574, 2899, 1294, 2130, 1685, 2477, 1978, 1670, 1463, 1244, 2544, 1339, 2209, 1656, 2623, 2427, 1808, 2189, 1575, 2900, 1295, 2131, 1686, 2478, 1979, 1671, 1464, 1245, 2545, 1340, 2210, 1657, 2624, 2428, 1809, 2190, 1576, 2901, 1296, 2132, 1687, 2479, 1980, 1672, 1465, 1246, 2546, 1341, 2211, 1658, 2625, 2429, 1810, 2191, 1577, 2902, 1297, 2133, 1688, 2480, 1981, 1673, 1466, 1247, 2547, 1342, 2212, 1659, 2626, 2430, 1811, 2192, 1578, 2903, 1298, 2134, 1689, 2481, 1982, 1674, 1467, 1248, 2548, 1343, 2213, 1660, 2627, 2431, 1812, 2193, 1579, 2904, 1299, 2135, 1690, 2482, 1983, 1675, 1468, 1249, 2549, 1344, 2214, 1661, 2628, 2432, 1813, 2194, 1580, 2905, 1300, 2136, 1691, 2483, 1984, 1676, 1469, 1250, 2550, 1345, 2215, 1662, 2629, 2433, 1814, 2195, 1581, 2906, 1301, 2137, 1692, 2484, 1985, 1677, 1470, 1251, 2551, 1346, 2216, 1663, 2630, 2434, 1815, 2196, 1582, 2907, 1302, 2138, 1693, 2485, 1986, 1678, 1471, 1252, 2552, 1347, 2217, 1664, 2631, 2435, 1816, 2197, 1583, 2908, 1303, 2139, 1694, 2486, 1987, 1679, 1472, 1253, 2553, 1348, 2218, 1665, 2632, 2436, 1817, 2198, 1584, 2909, 1304, 2140, 1695, 2487, 1988, 1680, 1473, 1254, 2554, 1349, 2219, 1666, 2633, 2437, 1818, 2199, 1585, 2910, 1305, 2141, 1696, 2488, 1989, 1681, 1474, 1255, 2555, 1350, 2220, 1667, 2634, 2438, 1819, 2200, 1586, 2911, 1306, 2142, 1697, 2489, 1990, 1682, 1475, 1256, 2556, 1351, 2221, 1668, 2635, 2439, 1820, 2201, 1587, 2912, 1307, 2143, 1698, 2490, 1991, 1683, 1476, 1257, 2557, 1352, 2222, 1669, 2636, 2440, 1821, 2202, 1588, 2913, 1308, 2144, 1699, 2491, 1992, 1684, 1477, 1258, 2558, 1353, 2223, 1670, 2637, 2441, 1822, 2203, 1589, 2914, 1309, 2145, 1700, 2492, 1993, 1685, 1478, 1259, 2559, 1354, 2224, 1671, 2638, 2442, 1823, 2204, 1590, 2915, 1310, 2146, 1701, 2493, 1994, 1686, 1479, 1260, 2560, 1355, 2225, 1672, 2639, 2443, 1824, 2205, 1591, 2916, 1311, 2147, 1702, 2494, 1995, 1687, 1480, 1261, 2561, 1356, 2226, 1535, 2640, 2444, 1825, 2206, 1592, 2917, 1312, 2148, 1703, 2495, 1996, 1688, 1481, 1262, 2562, 1357, 2227, 1536, 2641, 2445, 1826, 2207, 1593, 2918, 1313, 2149, 1704, 2496, 1997, 1689, 1482, 1263, 2563, 1358, 2228, 1537, 2642, 2446, 1827, 2208, 1594, 2919, 1314, 2150, 1705, 2497, 1998, 1690, 1483, 1264, 2564, 1359, 2229, 1538, 2643, 2447, 1828, 2209, 1595, 2920, 1315, 2151, 1706, 2498, 1999, 1691, 1484, 1265, 2565, 1360, 2230, 1539, 2644, 2448, 1829, 2210, 1596, 2921, 1316, 2152, 1707, 2499, 2000, 1692, 1485, 1266, 2566, 1361, 2231, 1540, 2645, 2449, 1830, 2211, 1597, 2922, 1317, 2153, 1708, 2500, 2001, 1693, 1486, 1267, 2567, 1362, 2232, 1541, 2646, 2450, 1831, 2212, 1598, 2923, 1318, 2154, 1709, 2501, 2002, 1694, 1487, 1268, 2568, 1363, 2233, 1542, 2647, 2451, 1832, 2213, 1599, 2924, 1319, 2155, 1710, 2502, 2003, 1695, 1488, 1269, 2569, 1364, 2234, 1543, 2648, 2452, 1833, 2214, 1600, 2925, 1320, 2156, 1711, 2503, 2004, 1696, 1489, 1270, 2570, 1365, 2235, 1544, 2649, 2453, 1834, 2215, 1601, 2926, 1321, 2157, 1712, 2504, 2005, 1697, 1490, 1271, 2571, 1366, 2236, 1545, 2650, 2454, 1835, 2216, 1602, 2927, 1322, 2158, 1713, 2505, 2006, 1698, 1491, 1272, 2572, 1367, 2237, 1546, 2651, 2455, 1836, 2217, 1603, 2928, 1323, 2159, 1714, 2506, 2007, 1699, 1492, 1273, 2573, 1368, 2238, 1547, 2652, 2456, 1837, 2218, 1604, 2929, 1324, 2160, 1715, 2507, 2008, 1700, 1493, 1274, 2574, 1369, 2239, 1548, 2653, 2457, 1838, 2219, 1605, 2930, 1325, 2067, 1716, 2508, 2009, 1701, 1494, 1275, 2575, 1370, 2240, 1549, 2654, 2458, 1839, 2220, 1606, 2931, 1326, 2068, 1717, 2509, 2010, 1702, 1495, 1276, 2576, 1371, 2241, 1550, 2655, 2459, 1840, 2221, 1607, 2932, 1327, 2069, 1718, 2510, 2011, 1703, 1496, 1277, 2577, 1372, 2242, 1551, 2656, 2460, 1841, 2222, 1608, 2933, 1328, 2070, 1719, 2511, 2012, 1704, 1497, 1278, 2578, 1373, 2243, 1552, 2657, 2461, 1842, 2223, 1609, 2934, 1329, 2071, 1720, 2512, 2013, 1705, 1498, 1279, 2579, 1374, 2244, 1553, 2658, 2462, 1843, 2224, 1610, 2935, 1330, 2072, 1721, 2513, 2014, 1706, 1499, 1280, 2580, 1375, 2245, 1554, 2659, 2463, 1844, 2225, 1611, 2936, 1331, 2073, 1722, 2514, 2015, 1707, 1500, 1281, 2581, 1376, 2246, 1555, 2660, 2464, 1845, 2226, 1612, 2937, 1332, 2074, 1723, 2515, 2016, 1708, 1501, 1282, 2582, 1377, 2247, 1556, 2661, 2465, 1846, 2227, 1613, 2938, 1333, 2075, 1724, 2516, 2017, 1709, 1502, 1283, 2583, 1378, 2248, 1557, 2662, 2466, 1847, 2228, 1614, 2881, 1334, 2076, 1725, 2517, 2018, 1710, 1503, 1284, 2584, 1379, 2249, 1558, 2663, 2467, 1848, 2229, 1615, 2882, 1335, 2077, 1726, 2518, 2019, 1711, 1504, 1285, 2585, 1380, 2250, 1559, 2664, 2468, 1849, 2230, 1616, 2883, 1336, 2078, 1727, 2519, 2020, 1712, 1505, 1286, 2586, 1381, 2251, 1560, 2665, 2469, 1850, 2231, 1617, 2884, 1337, 2079, 1728, 2520, 2021, 1713, 1506, 1287, 2587, 1382, 2252, 1561, 2666, 2470, 1851, 2232, 1618, 2885, 1338, 2080, 1729, 2376, 2022, 1714, 1507, 1288, 2588, 1383, 2253, 1562, 2667, 2471, 1852, 2233, 1619, 2886, 1339, 2081, 1730, 2377, 2023, 1715, 1508, 1289, 2589, 1384, 2254, 1563, 2668, 2472, 1853, 2234, 1620, 2887, 1340, 2082, 1731, 2378, 2024, 1716, 1509, 1290, 2590, 1385, 2255, 1564, 2669, 2473, 1854, 2235, 1621, 2888, 1341, 2083, 1732, 2379, 2025, 1717, 1510, 1291, 2591, 1386, 2256, 1565, 2670, 2474, 1855, 2236, 1622, 2889, 1342, 2084, 1733, 2380, 2026, 1718, 1511, 1292, 2592, 1387, 2257, 1566, 2671, 2475, 1856, 2237, 1623, 2890, 1343, 2085, 1734, 2381, 2027, 1719, 1512, 1293, 2593, 1388, 2258, 1567, 2672, 2476, 1857, 2238, 1624, 2891, 1344, 2086, 1735, 2382, 2028, 1720, 1513, 1294, 2594, 1389, 2259, 1568, 2673, 2477, 1858, 2239, 1625, 2892, 1345, 2087, 1736, 2383, 2029, 1721, 1514, 1295, 2595, 1390, 2260, 1569, 2674, 2478, 1859, 2240, 1626, 2893, 1346, 2088, 1737, 2384, 2030, 1722, 1515, 1296, 2596, 1391, 2261, 1570, 2675, 2479, 1860, 2241, 1627, 2894, 1347, 2089, 1738, 2385, 2031, 1723, 1516, 1297, 2597, 1392, 2262, 1571, 2676, 2480, 1861, 2242, 1628, 2895, 1348, 2090, 1739, 2386, 2032, 1724, 1517, 1298, 2598, 1393, 2263, 1572, 2677, 2481, 1862, 2243, 1629, 2896, 1349, 2091, 1740, 2387, 2033, 1725, 1518, 1299, 2599, 1394, 2264, 1573, 2678, 2482, 1863, 2244, 1630, 2897, 1350, 2092, 1741, 2388, 2034, 1726, 1519, 1300, 2600, 1395, 2265, 1574, 2679, 2483, 1864, 2245, 1631, 2898, 1351, 2093, 1742, 2389, 2035, 1727, 1520, 1301, 2601, 1396, 2266, 1575, 2680, 2484, 1865, 2246, 1632, 2899, 1352, 2094, 1743, 2390, 2036, 1728, 1521, 1302, 2602, 1397, 2267, 1576, 2681, 2485, 1866, 2247, 1633, 2900, 1353, 2095, 1744, 2391, 2037, 1729, 1522, 1303, 2603, 1398, 2268, 1577, 2682, 2486, 1867, 2248, 1634, 2901, 1354, 2096, 1745, 2392, 2038, 1730, 1523, 1304, 2604, 1399, 2269, 1578, 2683, 2487, 1868, 2249, 1635, 2902, 1355, 2097, 1746, 2393, 2039, 1731, 1524, 1305, 2605, 1400, 2270, 1579, 2684, 2488, 1869, 2250, 1636, 2903, 1356, 2098, 1747, 2394, 2040, 1732, 1525, 1306, 2606, 1401, 2271, 1580, 2685, 2489, 1870, 2251, 1637, 2904, 1357, 2099, 1748, 2395, 2041, 1733, 1526, 1307, 2607, 1402, 2272, 1581, 2686, 2490, 1871, 2252, 1638, 2905, 1358, 2100, 1749, 2396, 2042, 1734, 1527, 1308, 2608, 1403, 2273, 1582, 2687, 2491, 1872, 2253, 1639, 2906, 1359, 2101, 1750, 2397, 2043, 1735, 1528, 1309, 2609, 1404, 2274, 1583, 2688, 2492, 1873, 2254, 1640, 2907, 1360, 2102, 1751, 2398, 2044, 1736, 1529, 1310, 2610, 1405, 2275, 1584, 2689, 2493, 1874, 2255, 1641, 2908, 1361, 2103, 1752, 2399, 2045, 1737, 1530, 1311, 2611, 1406, 2276, 1585, 2690, 2494, 1875, 2256, 1642, 2909, 1362, 2104, 1753, 2400, 2046, 1738, 1531, 1312, 2612, 1407, 2277, 1586, 2691, 2495, 1876, 2257, 1643, 2910, 1363, 2105, 1754, 2401, 2047, 1739, 1532, 1313, 2613, 1408, 2278, 1587, 2692, 2496, 1877, 2258, 1644, 2911, 1364, 2106, 1755, 2402, 2048, 1740, 1533, 1314, 2614, 1409, 2279, 1588, 2693, 2497, 1878, 2259, 1645, 2912, 1365, 2107, 1756, 2403, 2049, 1741, 1534, 1315, 2615, 1410, 2280, 1589, 2694, 2498, 1879, 2260, 1646, 2913, 1366, 2108, 1757, 2404, 2050, 1742, 1535, 1316, 2616, 1411, 2281, 1590, 2695, 2499, 1880, 2261, 1647, 2914, 1367, 2109, 1758, 2405, 2051, 1743, 1536, 1317, 2617, 1412, 2282, 1591, 2696, 2500, 1881, 2262, 1648, 2915, 1368, 2110, 1759, 2406, 2052, 1744, 1537, 1318, 2618, 1413, 2283, 1592, 2697, 2501, 1882, 2263, 1649, 2916, 1369, 2111, 1760, 2407, 2053, 1745, 1538, 1319, 2619, 1414, 2284, 1593, 2698, 2502, 1883, 2264, 1650, 2917, 1370, 2112, 1761, 2408, 2054, 1746, 1539, 1320, 2620, 1415, 2285, 1594, 2699, 2503, 1884, 2265, 1651, 2918, 1371, 2113, 1762, 2409, 2055, 1747, 1540, 1321, 2621, 1416, 2286, 1595, 2700, 2504, 1885, 2266, 1652, 2919, 1372, 2114, 1763, 2410, 2056, 1748, 1541, 1322, 2622, 1417, 2287, 1596, 2701, 2505, 1886, 2267, 1653, 2920, 1373, 2115, 1764, 2411, 2057, 1749, 1542, 1323, 2623, 1418, 2161, 1597, 2702, 2506, 1887, 2268, 1654, 2921, 1374, 2116, 1765, 2412, 2058, 1750, 1543, 1324, 2624, 1419, 2162, 1598, 2703, 2507, 1888, 2269, 1655, 2922, 1375, 2117, 1766, 2413, 2059, 1751, 1544, 1325, 2625, 1420, 2163, 1599, 2704, 2508, 1889, 2270, 1656, 2923, 1376, 2118, 1767, 2414, 2060, 1752, 1545, 1326, 2521, 1421, 2164, 1600, 2705, 2509, 1890, 2271, 1657, 2924, 1377, 2119, 1768, 2415, 2061, 1753, 1546, 1327, 2522, 1422, 2165, 1601, 2706, 2510, 1891, 2272, 1658, 2925, 1378, 2120, 1769, 2416, 2062, 1754, 1547, 1328, 2523, 1423, 2166, 1602, 2707, 2511, 1892, 2273, 1659, 2926, 1379, 2121, 1770, 2417, 2063, 1755, 1548, 1329, 2524, 1424, 2167, 1603, 2708, 2512, 1893, 2274, 1660, 2927, 1380, 2122, 1771, 2418, 2064, 1756, 1549, 1330, 2525, 1425, 2168, 1604, 2709, 2513, 1894, 2275, 1661, 2928, 1381, 2123, 1772, 2419, 2065, 1757, 1550, 1331, 2526, 1426, 2169, 1605, 2710, 2514, 1895, 2276, 1662, 2929, 1382, 2124, 1773, 2420, 2066, 1758, 1551, 1332, 2527, 1427, 2170, 1606, 2711, 2515, 1896, 2277, 1663, 2930, 1383, 2125, 1774, 2421, 2067, 1759, 1552, 1333, 2528, 1428, 2171, 1607, 2712, 2516, 1897, 2278, 1664, 2931, 1384, 2126, 1775, 2422, 2068, 1760, 1553, 1334, 2529, 1429, 2172, 1608, 2713, 2517, 1898, 2279, 1665, 2932, 1385, 2127, 1776, 2423, 2069, 1761, 1554, 1335, 2530, 1430, 2173, 1609, 2714, 2518, 1899, 2280, 1666, 2933, 1386, 2128, 1777, 2424, 2070, 1762, 1555, 1336, 2531, 1431, 2174, 1610, 2715, 2519, 1900, 2281, 1667, 2934, 1387, 2129, 1778, 2425, 2071, 1763, 1556, 1337, 2532, 1432, 2175, 1611, 2716, 2520, 1901, 2282, 1668, 2935, 1388, 2130, 1779, 2426, 2072, 1764, 1557, 1338, 2533, 1433, 2176, 1612, 2717, 2161, 1902, 2283, 1669, 2936, 1389, 2131, 1780, 2427, 2073, 1765, 1558, 1339, 2534, 1434, 2177, 1613, 2718, 2162, 1903, 2284, 1670, 2937, 1390, 2132, 1781, 2428, 2074, 1766, 1559, 1340, 2535, 1435, 2178, 1614, 2719, 2163, 1904, 2285, 1671, 2938, 1391, 2133, 1782, 2429, 2075, 1767, 1560, 1341, 2536, 1436, 2179, 1615, 2720, 2164, 1905, 2286, 1672, 2939, 1392, 2134, 1783, 2430, 2076, 1768, 1561, 1342, 2537, 1437, 2180, 1616, 2721, 2165, 1906, 2287, 1673, 2940, 1393, 2135, 1784, 2431, 2077, 1769, 1562, 1343, 2538, 1438, 2181, 1617, 2722, 2166, 1907, 2288, 1674, 2941, 1394, 2136, 1785, 2432, 2078, 1770, 1563, 1344, 2539, 1439, 2182, 1618, 2723, 2167, 1908, 2289, 1675, 2942, 1395, 2137, 1786, 2433, 2079, 1771, 1564, 1345, 2540, 1440, 2183, 1619, 2724, 2168, 1909, 2290, 1676, 2943, 1396, 2138, 1787, 2434, 2080, 1772, 1565, 1346, 2541, 1081, 2184, 1620, 2725, 2169, 1910, 2291, 1677, 2944, 1397, 2139, 1788, 2435, 2081, 1773, 1566, 1347, 2542, 1082, 2185, 1621, 2726, 2170, 1911, 2292, 1678, 2945, 1398, 2140, 1789, 2436, 2082, 1774, 1567, 1348, 2543, 1083, 2186, 1622, 2727, 2171, 1912, 2293, 1679, 2946, 1399, 2141, 1790, 2437, 2083, 1775, 1568, 1349, 2544, 1084, 2187, 1623, 2728, 2172, 1913, 2294, 1680, 2947, 1400, 2142, 1791, 2438, 2084, 1776, 1569, 1350, 2545, 1085, 2188, 1624, 2729, 2173, 1914, 2295, 1681, 2948, 1401, 2143, 1792, 2439, 2085, 1777, 1570, 1351, 2546, 1086, 2189, 1625, 2730, 2174, 1915, 2296, 1682, 2949, 1402, 2144, 1793, 2440, 2086, 1778, 1571, 1352, 2547, 1087, 2190, 1626, 2731, 2175, 1916, 2297, 1683, 2950, 1403, 2145, 1794, 2441, 2087, 1779, 1572, 1353, 2548, 1088, 2191, 1627, 2732, 2176, 1917, 2298, 1684, 2951, 1404, 2146, 1795, 2442, 2088, 1780, 1573, 1354, 2549, 1089, 2192, 1628, 2733, 2177, 1918, 2299, 1685, 2952, 1405, 2147, 1796, 2443, 2089, 1781, 1574, 1355, 2550, 1090, 2193, 1629, 2734, 2178, 1919, 2300, 1686, 2953, 1406, 2148, 1797, 2444, 2090, 1782, 1575, 1356, 2551, 1091, 2194, 1630, 2735, 2179, 1920, 2301, 1687, 2954, 1407, 2149, 1798, 2445, 2091, 1783, 1576, 1357, 2552, 1092, 2195, 1631, 2736, 2180, 1921, 2302, 1688, 2955, 1408, 2150, 1799, 2446, 2092, 1784, 1577, 1358, 2553, 1093, 2196, 1632, 2737, 2181, 1922, 2303, 1689, 2956, 1409, 2151, 1800, 2447, 2093, 1785, 1578, 1359, 2554, 1094, 2197, 1633, 2738, 2182, 1923, 2304, 1690, 2957, 1410, 2152, 1441, 2448, 2094, 1786, 1579, 1360, 2555, 1095, 2198, 1634, 2739, 2183, 1924, 2305, 1691, 2958, 1411, 2153, 1442, 2449, 2095, 1787, 1580, 1361, 2556, 1096, 2199, 1635, 2740, 2184, 1925, 2306, 1692, 2959, 1412, 2154, 1443, 2450, 2096, 1788, 1581, 1362, 2557, 1097, 2200, 1636, 2741, 2185, 1926, 2307, 1693, 2960, 1413, 2155, 1444, 2451, 2097, 1789, 1582, 1363, 2558, 1098, 2201, 1637, 2742, 2186, 1927, 2308, 1694, 2961, 1414, 2156, 1445, 2452, 2098, 1790, 1583, 1364, 2559, 1099, 2202, 1638, 2743, 2187, 1928, 2309, 1695, 2962, 1415, 2157, 1446, 2453, 2099, 1791, 1584, 1365, 2560, 1100, 2203, 1639, 2744, 2188, 1929, 2310, 1696, 2963, 1416, 2158, 1447, 2454, 2100, 1792, 1585, 1366, 2561, 1101, 2204, 1640, 2745, 2189, 1930, 2311, 1697, 2964, 1417, 2159, 1448, 2455, 2101, 1793, 1586, 1367, 2562, 1102, 2205, 1641, 2746, 2190, 1931, 2312, 1698, 2965, 1418, 2160, 1449, 2456, 2102, 1794, 1587, 1368, 2563, 1103, 2206, 1642, 2747, 2191, 1932, 2313, 1699, 2966, 1419, 1895, 1450, 2457, 2103, 1795, 1588, 1369, 2564, 1104, 2207, 1643, 2748, 2192, 1933, 2314, 1700, 2967, 1420, 1896, 1451, 2458, 2104, 1796, 1589, 1370, 2565, 1105, 2208, 1644, 2749, 2193, 1934, 2315, 1701, 2968, 1421, 1897, 1452, 2459, 2105, 1797, 1590, 1371, 2566, 1106, 2209, 1645, 2750, 2194, 1935, 2316, 1702, 2969, 1422, 1898, 1453, 2460, 2106, 1798, 1591, 1372, 2567, 1107, 2210, 1646, 2751, 2195, 1936, 2317, 1703, 2970, 1423, 1899, 1454, 2461, 2107, 1799, 1592, 1373, 2568, 1108, 2211, 1647, 2752, 2196, 1937, 2318, 1704, 2971, 1424, 1900, 1455, 2462, 2108, 1800, 1593, 1374, 2569, 1109, 2212, 1648, 2753, 2197, 1938, 2319, 1705, 2972, 1425, 1901, 1456, 2463, 2109, 1441, 1594, 1375, 2570, 1110, 2213, 1649, 2754, 2198, 1939, 2320, 1706, 2973, 1426, 1902, 1457, 2464, 2110, 1442, 1595, 1376, 2571, 1111, 2214, 1650, 2755, 2199, 1940, 2321, 1707, 2974, 1427, 1903, 1458, 2465, 2111, 1443, 1596, 1377, 2572, 1112, 2215, 1651, 2756, 2200, 1941, 2322, 1708, 2975, 1428, 1904, 1459, 2466, 2112, 1444, 1597, 1378, 2573, 1113, 2216, 1652, 2757, 2201, 1942, 2323, 1709, 2976, 1429, 1905, 1460, 2467, 2113, 1445, 1598, 1379, 2574, 1114, 2217, 1653, 2758, 2202, 1943, 2324, 1710, 2977, 1430, 1906, 1461, 2468, 2114, 1446, 1599, 1380, 2575, 1115, 2218, 1654, 2759, 2203, 1944, 2325, 1711, 2978, 1431, 1907, 1462, 2469, 2115, 1447, 1600, 1381, 2576, 1116, 2219, 1655, 2760, 2204, 1945, 2326, 1712, 2979, 1432, 1908, 1463, 2470, 2116, 1448, 1601, 1382, 2577, 1117, 2220, 1656, 2761, 2205, 1946, 2327, 1713, 2980, 1433, 1909, 1464, 2471, 2117, 1449, 1602, 1383, 2578, 1118, 2221, 1657, 2762, 2206, 1947, 2328, 1714, 2981, 1434, 1910, 1465, 2472, 2118, 1450, 1603, 1384, 2579, 1119, 2222, 1658, 2763, 2207, 1948, 2329, 1715, 2982, 1435, 1911, 1466, 2473, 2119, 1451, 1604, 1385, 2580, 1120, 2223, 1659, 2764, 2208, 1949, 2330, 1716, 2983, 1436, 1912, 1467, 2474, 2120, 1452, 1605, 1386, 2581, 1121, 2224, 1660, 2765, 2209, 1950, 2331, 1717, 2984, 1437, 1913, 1468, 2475, 2121, 1453, 1606, 1387, 2582, 1122, 2225, 1661, 2766, 2210, 1951, 2332, 1718, 2985, 1438, 1914, 1469, 2476, 2122, 1454, 1607, 1388, 2583, 1123, 2226, 1662, 2767, 2211, 1952, 2333, 1719, 2986, 1439, 1915, 1470, 2477, 2123, 1455, 1608, 1389, 2584, 1124, 2227, 1569, 2768, 2212, 1953, 2334, 1720, 2881, 1440, 1916, 1471, 2478, 2124, 1456, 1609, 1390, 2585, 1125, 2228, 1570, 2769, 2213, 1954, 2335, 1721, 2882, 1314, 1917, 1472, 2479, 2125, 1457, 1610, 1391, 2586, 1126, 2229, 1571, 2770, 2214, 1955, 2336, 1722, 2883, 1315, 1918, 1473, 2480, 2126, 1458, 1611, 1392, 2587, 1127, 2230, 1572, 2771, 2215, 1956, 2337, 1723, 2884, 1316, 1919, 1474, 2481, 2127, 1459, 1612, 1393, 2588, 1128, 2231, 1573, 2772, 2216, 1957, 2338, 1724, 2885, 1317, 1920, 1475, 2482, 2128, 1460, 1613, 1394, 2589, 1129, 2232, 1574, 2773, 2217, 1958, 2339, 1725, 2886, 1318, 1921, 1476, 2483, 2129, 1461, 1614, 1395, 2590, 1130, 2233, 1575, 2774, 2218, 1959, 2340, 1726, 2887, 1319, 1922, 1477, 2484, 2130, 1462, 1615, 1396, 2591, 1131, 2234, 1576, 2775, 2219, 1960, 2341, 1727, 2888, 1320, 1923, 1478, 2485, 2131, 1463, 1616, 1397, 2592, 1132, 2235, 1577, 2776, 2220, 1961, 2342, 1728, 2889, 1321, 1924, 1479, 2486, 2132, 1464, 1617, 1398, 2593, 1133, 2236, 1578, 2777, 2221, 1962, 2343, 1729, 2890, 1322, 1925, 1480, 2487, 2133, 1465, 1618, 1399, 2594, 1134, 2237, 1579, 2778, 2222, 1963, 2344, 1730, 2891, 1323, 1926, 1481, 2488, 2134, 1466, 1619, 1400, 2595, 1135, 2238, 1580, 2779, 2223, 1964, 2345, 1731, 2892, 1324, 1927, 1482, 2489, 2135, 1467, 1620, 1401, 2596, 1136, 2239, 1581, 2780, 2224, 1965, 2346, 1732, 2893, 1325, 1928, 1483, 2490, 2136, 1468, 1621, 1402, 2597, 1137, 2240, 1582, 2781, 2225, 1966, 2347, 1733, 2894, 1326, 1929, 1484, 2491, 2137, 1469, 1622, 1403, 2598, 1138, 2241, 1583, 2782, 2226, 1967, 2348, 1734, 2895, 1327, 1930, 1485, 2492, 2138, 1470, 1623, 1404, 2599, 1139, 2242, 1584, 2783, 2227, 1968, 2349, 1735, 2896, 1328, 1931, 1486, 2493, 2139, 1471, 1624, 1405, 2600, 1140, 2243, 1585, 2784, 2228, 1969, 2350, 1736, 2897, 1329, 1932, 1487, 2494, 2140, 1472, 1625, 1406, 2601, 1141, 2244, 1586, 2785, 2229, 1970, 2351, 1737, 2898, 1330, 1933, 1488, 2495, 2141, 1473, 1626, 1407, 2602, 1142, 2245, 1587, 2786, 2230, 1971, 2352, 1738, 2899, 1331, 1934, 1489, 2496, 2142, 1474, 1627, 1408, 2603, 1143, 2246, 1588, 2787, 2231, 1972, 2353, 1739, 2900, 1332, 1935, 1490, 2497, 2143, 1475, 1628, 1409, 2604, 1144, 2247, 1589, 2788, 2232, 1973, 2354, 1740, 2901, 1333, 1936, 1491, 2498, 2144, 1476, 1629, 1410, 2605, 1145, 2248, 1590, 2789, 2233, 1974, 2355, 1741, 2902, 1334, 1937, 1492, 2499, 2145, 1477, 1630, 1411, 2606, 1146, 2249, 1591, 2790, 2234, 1975, 2356, 1742, 2903, 1335, 1938, 1493, 2500, 1801, 1478, 1631, 1412, 2607, 1147, 2250, 1592, 2791, 2235, 1976, 2357, 1743, 2904, 1336, 1939, 1494, 2501, 1802, 1479, 1632, 1413, 2608, 1148, 2251, 1593, 2792, 2236, 1977, 2358, 1744, 2905, 1337, 1940, 1495, 2502, 1803, 1480, 1633, 1414, 2609, 1149, 2252, 1594, 2793, 2237, 1978, 2359, 1745, 2906, 1338, 1941, 1496, 2503, 1804, 1481, 1634, 1415, 2610, 1150, 2253, 1595, 2794, 2238, 1979, 2360, 1746, 2907, 1339, 1942, 1497, 2504, 1805, 1482, 1635, 1416, 2611, 1151, 2254, 1596, 2795, 2239, 1980, 2361, 1747, 2908, 1340, 1943, 1498, 2505, 1806, 1483, 1636, 1417, 2612, 1152, 2255, 1597, 2796, 2240, 1981, 2362, 1748, 2909, 1341, 1944, 1499, 2506, 1807, 1484, 1637, 1418, 2613, 1153, 2256, 1598, 2797, 2241, 1982, 2363, 1749, 2910, 1342, 1945, 1500, 2507, 1808, 1485, 1638, 1419, 2614, 1154, 2257, 1599, 2798, 2242, 1983, 2364, 1750, 2911, 1343, 1946, 1501, 2508, 1809, 1486, 1639, 1420, 2615, 1155, 2258, 1600, 2799, 2243, 1984, 2365, 1751, 2912, 1344, 1947, 1502, 2509, 1810, 1487, 1640, 1421, 2616, 1156, 2259, 1601, 2800, 2244, 1985, 2366, 1752, 2913, 1345, 1948, 1503, 2510, 1811, 1488, 1641, 1422, 2617, 1157, 2260, 1602, 2801, 2245, 1986, 2367, 1753, 2914, 1346, 1949, 1504, 2511, 1812, 1489, 1642, 1423, 2618, 1158, 2261, 1603, 2802, 2246, 1987, 2368, 1754, 2915, 1347, 1950, 1505, 2512, 1813, 1490, 1643, 1424, 2619, 1159, 2262, 1604, 2803, 2247, 1988, 2369, 1755, 2916, 1348, 1951, 1506, 2513, 1814, 1491, 1644, 1425, 2620, 1160, 2263, 1605, 2804, 2248, 1989, 2370, 1756, 2917, 1349, 1952, 1507, 2514, 1815, 1492, 1645, 1426, 2621, 1161, 2264, 1606, 2805, 2249, 1990, 2371, 1757, 2918, 1350, 1953, 1508, 2515, 1801, 1493, 1646, 1427, 2622, 1162, 2265, 1607, 2806, 2250, 1991, 2372, 1758, 2919, 1351, 1954, 1509, 2516, 1802, 1494, 1647, 1428, 2623, 1163, 2266, 1608, 2807, 2251, 1992, 2373, 1759, 2920, 1352, 1955, 1510, 2517, 1803, 1495, 1648, 1429, 2624, 1164, 2267, 1609, 2808, 2252, 1993, 2374, 1760, 2921, 1353, 1956, 1511, 2518, 1804, 1496, 1649, 1430, 2625, 1165, 2268, 1610, 2809, 2253, 1994, 2375, 1761, 2922, 1354, 1957, 1512, 2519, 1805, 1497, 1650, 1431, 2626, 1166, 2269, 1611, 2810, 2254, 1995, 2376, 1762, 2923, 1355, 1958, 1513, 2520, 1806, 1498, 1651, 1432, 2627, 1167, 2270, 1612, 2811, 2255, 1996, 2377, 1763, 2924, 1356, 1959, 1514, 2306, 1807, 1499, 1652, 1433, 2628, 1168, 2271, 1613, 2812, 2256, 1997, 2378, 1764, 2925, 1357, 1960, 1515, 2307, 1808, 1500, 1653, 1434, 2629, 1169, 2272, 1614, 2813, 2257, 1998, 2379, 1765, 2926, 1358, 1961, 1516, 2308, 1809, 1501, 1654, 1435, 2630, 1170, 2273, 1615, 2814, 2258, 1999, 2380, 1766, 2927, 1359, 1962, 1517, 2309, 1810, 1502, 1655, 1436, 2631, 1171, 2274, 1616, 2815, 2259, 2000, 2381, 1767, 2928, 1360, 1963, 1518, 2310, 1811, 1503, 1656, 1437, 2632, 1172, 2275, 1617, 2816, 2260, 2001, 2382, 1768, 2929, 1361, 1964, 1519, 2311, 1812, 1504, 1657, 1438, 2633, 1173, 2276, 1618, 2817, 2261, 2002, 2383, 1769, 2930, 1362, 1965, 1520, 2312, 1813, 1505, 1658, 1439, 2634, 1174, 2277, 1619, 2818, 2262, 2003, 2384, 1770, 2931, 1363, 1966, 1521, 2313, 1814, 1506, 1659, 1440, 2635, 1175, 2278, 1620, 2819, 2263, 2004, 2385, 1771, 2932, 1364, 1967, 1522, 2314, 1815, 1507, 1660, 1081, 2636, 1176, 2279, 1621, 2820, 2264, 2005, 2386, 1772, 2933, 1365, 1968, 1523, 2315, 1816, 1508, 1661, 1082, 2637, 1177, 2280, 1622, 2821, 2265, 2006, 2387, 1773, 2934, 1366, 1969, 1524, 2316, 1817, 1509, 1662, 1083, 2638, 1178, 2281, 1623, 2822, 2266, 2007, 2388, 1774, 2935, 1367, 1970, 1525, 2317, 1818, 1510, 1663, 1084, 2639, 1179, 2282, 1624, 2823, 2267, 2008, 2389, 1775, 2936, 1368, 1971, 1526, 2318, 1819, 1511, 1664, 1085, 2640, 1180, 2283, 1625, 2824, 2268, 2009, 2390, 1776, 2937, 1369, 1972, 1527, 2319, 1820, 1512, 1665, 1086, 2641, 1181, 2284, 1626, 2825, 2269, 2010, 2391, 1777, 2938, 1370, 1973, 1528, 2320, 1821, 1513, 1666, 1087, 2642, 1182, 2285, 1627, 2826, 2270, 2011, 2392, 1778, 2939, 1371, 1974, 1529, 2321, 1822, 1514, 1667, 1088, 2643, 1183, 2286, 1628, 2827, 2271, 2012, 2393, 1779, 2940, 1372, 1975, 1530, 2322, 1823, 1515, 1668, 1089, 2644, 1184, 2287, 1629, 2828, 2272, 2013, 2394, 1780, 2941, 1373, 1976, 1531, 2323, 1824, 1516, 1669, 1090, 2645, 1185, 2288, 1630, 2829, 2273, 2014, 2395, 1781, 2942, 1374, 1977, 1532, 2324, 1825, 1517, 1670, 1091, 2646, 1186, 2289, 1631, 2830, 2274, 2015, 2396, 1782, 2943, 1375, 1978, 1533, 2325, 1826, 1518, 1671, 1092, 2647, 1187, 2290, 1632, 2831, 2275, 2016, 2397, 1783, 2944, 1376, 1979, 1534, 2326, 1827, 1519, 1672, 1093, 2648, 1188, 2291, 1633, 2832, 2276, 2017, 2398, 1784, 2945, 1377, 1980, 1535, 2327, 1828, 1520, 1673, 1094, 2649, 1189, 2292, 1634, 2833, 2277, 2018, 2399, 1785, 2946, 1378, 1981, 1536, 2328, 1829, 1521, 1674, 1095, 2650, 1190, 2293, 1635, 2834, 2278, 2019, 2400, 1786, 2947, 1379, 1982, 1537, 2329, 1830, 1522, 1675, 1096, 2651, 1191, 2294, 1636, 2835, 2279, 2020, 2401, 1787, 2948, 1380, 1983, 1538, 2330, 1831, 1523, 1676, 1097, 2652, 1192, 2295, 1637, 2836, 2280, 2021, 2402, 1788, 2949, 1381, 1984, 1539, 2331, 1832, 1524, 1677, 1098, 2653, 1193, 2296, 1638, 2837, 2281, 2022, 2403, 1789, 2950, 1382, 1985, 1540, 2332, 1833, 1525, 1678, 1099, 2654, 1194, 2297, 1639, 2838, 2282, 2023, 2404, 1790, 2951, 1383, 1986, 1541, 2333, 1834, 1526, 1679, 1100, 2655, 1195, 2298, 1640, 2839, 2283, 2024, 2405, 1791, 2952, 1384, 1987, 1542, 2334, 1835, 1527, 1680, 1101, 2656, 1196, 2299, 1641, 2840, 2284, 2025, 2406, 1792, 2953, 1385, 1988, 1543, 2335, 1836, 1528, 1681, 1102, 2657, 1197, 2300, 1642, 2841, 2285, 2026, 2407, 1793, 2954, 1386, 1989, 1544, 2336, 1837, 1529, 1682, 1103, 2658, 1198, 2301, 1643, 2842, 2286, 2027, 2408, 1794, 2955, 1387, 1990, 1545, 2337, 1838, 1530, 1683, 1104, 2659, 1199, 2302, 1644, 2843, 2287, 2028, 2409, 1795, 2956, 1388, 1991, 1546, 2338, 1839, 1531, 1684, 1105, 2660, 1200, 2303, 1645, 2844, 2288, 2029, 2410, 1796, 2957, 1389, 1992, 1547, 2339, 1840, 1532, 1685, 1106, 2661, 1201, 2304, 1646, 2845, 2289, 2030, 2411, 1797, 2958, 1390, 1993, 1548, 2340, 1841, 1533, 1686, 1107, 2662, 1202, 2305, 1647, 2846, 2290, 2031, 2412, 1798, 2959, 1391, 1994, 1549, 2341, 1842, 1534, 1687, 1108, 2663, 1203, 2306, 1648, 2847, 2291, 2032, 2413, 1799, 2960, 1392, 1995, 1550, 2342, 1843, 1535, 1688, 1109, 2664, 1204, 2307, 1649, 2848, 2292, 2033, 2414, 1800, 2961, 1393, 1996, 1551, 2343, 1844, 1536, 1689, 1110, 2665, 1205, 2308, 1650, 2849, 2293, 2034, 2415, 1441, 2962, 1394, 1997, 1552, 2344, 1845, 1537, 1690, 1111, 2666, 1206, 2309, 1651, 2850, 2294, 2035, 2416, 1442, 2963, 1395, 1998, 1553, 2345, 1846, 1538, 1691, 1112, 2667, 1207, 2310, 1652, 2851, 2295, 2036, 2417, 1443, 2964, 1396, 1999, 1554, 2346, 1847, 1539, 1692, 1113, 2668, 1208, 2311, 1653, 2852, 2296, 2037, 2418, 1444, 2965, 1397, 2000, 1555, 2347, 1848, 1540, 1693, 1114, 2669, 1209, 2312, 1654, 2853, 2297, 2038, 2419, 1445, 2966, 1398, 2001, 1556, 2348, 1849, 1541, 1694, 1115, 2670, 1210, 2313, 1655, 2854, 2298, 2039, 2420, 1446, 2967, 1399, 2002, 1557, 2349, 1850, 1542, 1695, 1116, 2671, 1211, 2314, 1656, 2855, 2299, 2040, 2421, 1447, 2968, 1400, 2003, 1558, 2350, 1851, 1543, 1696, 1117, 2672, 1212, 2315, 1657, 2856, 2300, 2041, 2422, 1448, 2969, 1401, 2004, 1559, 2351, 1852, 1544, 1697, 1118, 2673, 1213, 2316, 1658, 2857, 2301, 2042, 2423, 1449, 2970, 1402, 2005, 1560, 2352, 1853, 1545, 1698, 1119, 2674, 1214, 2317, 1659, 2858, 2302, 2043, 2424, 1450, 2971, 1403, 2006, 1561, 2353, 1854, 1546, 1699, 1120, 2675, 1215, 2318, 1660, 2859, 2303, 2044, 2425, 1451, 2972, 1404, 2007, 1562, 2354, 1855, 1547, 1700, 1121, 2676, 1216, 2319, 1661, 2860, 2304, 2045, 2426, 1452, 2973, 1405, 2008, 1563, 2355, 1856, 1548, 1701, 1122, 2677, 1217, 2320, 1662, 2861, 2305, 2046, 2427, 1453, 2974, 1406, 2009, 1564, 2356, 1857, 1549, 1702, 1123, 2678, 1218, 2321, 1663, 2862, 2306, 2047, 2428, 1454, 2975, 1407, 2010, 1565, 2357, 1858, 1550, 1703, 1124, 2679, 1219, 2322, 1664, 2863, 2307, 2048, 2429, 1455, 2976, 1408, 2011, 1566, 2358, 1859, 1551, 1704, 1125, 2680, 1220, 2323, 1665, 2864, 2308, 2049, 2430, 1456, 2977, 1409, 2012, 1567, 2359, 1860, 1552, 1705, 1126, 2681, 1221, 2324, 1666, 2865, 3122, 2199, 2927, 1834, 3084, 1798, 2760, 2393, 2568, 1876, 1954, 2473, 1807, 2787, 1778, 2452, 1761, 3078, 3123, 2200, 2928, 1835, 3085, 1799, 2761, 2394, 2569, 1877, 1955, 2474, 1808, 2788, 1779, 2453, 1762, 3079, 3124, 2201, 2929, 1836, 3086, 1800, 2762, 2395, 2570, 1878, 1956, 2475, 1809, 2789, 1780, 2454, 1763, 3080, 3125, 2202, 2930, 1837, 3087, 1441, 2763, 2396, 2571, 1879, 1957, 2476, 1810, 2790, 1781, 2455, 1764, 3081, 3126, 2203, 2931, 1838, 3088, 1442, 2764, 2397, 2572, 1880, 1958, 2477, 1811, 2791, 1782, 2456, 1765, 3082, 3127, 2204, 2932, 1839, 3089, 1443, 2765, 2398, 2573, 1881, 1959, 2478, 1812, 2792, 1783, 2457, 1766, 3083, 3128, 2205, 2933, 1840, 3090, 1444, 2766, 2399, 2574, 1882, 1960, 2479, 1813, 2793, 1784, 2458, 1767, 3084, 3129, 2206, 2934, 1841, 3091, 1445, 2767, 2400, 2575, 1883, 1961, 2480, 1814, 2794, 1785, 2459, 1768, 3085, 3130, 2207, 2935, 1842, 3092, 1446, 2768, 2401, 2576, 1884, 1962, 2481, 1815, 2795, 1786, 2460, 1769, 3086, 3131, 2208, 2936, 1843, 3093, 1447, 2769, 2402, 2577, 1885, 1963, 2482, 1816, 2796, 1787, 2461, 1770, 3087, 3132, 2209, 2937, 1844, 3094, 1448, 2770, 2403, 2578, 1886, 1964, 2483, 1817, 2797, 1788, 2462, 1771, 3088, 3133, 2210, 2938, 1845, 3095, 1449, 2771, 2404, 2579, 1887, 1965, 2484, 1818, 2798, 1789, 2463, 1772, 3089, 3134, 2211, 2939, 1846, 3096, 1450, 2772, 2405, 2580, 1888, 1966, 2485, 1819, 2799, 1790, 2464, 1773, 3090, 3135, 2212, 2940, 1847, 3097, 1451, 2773, 2406, 2581, 1889, 1967, 2486, 1820, 2800, 1791, 2465, 1774, 3091, 3136, 2213, 2941, 1848, 3098, 1452, 2774, 2407, 2582, 1890, 1968, 2487, 1821, 2801, 1792, 2466, 1775, 3092, 3137, 2214, 2942, 1849, 3099, 1453, 2775, 2408, 2583, 1891, 1969, 2488, 1822, 2802, 1793, 2467, 1776, 3093, 3138, 2215, 2943, 1850, 3100, 1454, 2776, 2409, 2584, 1892, 1970, 2489, 1823, 2803, 1794, 2468, 1777, 3094, 3139, 2216, 2944, 1851, 3101, 1455, 2777, 2410, 2585, 1893, 1971, 2490, 1824, 2804, 1795, 2469, 1778, 3095, 3140, 2217, 2945, 1852, 3102, 1456, 2778, 2411, 2586, 1894, 1972, 2491, 1825, 2805, 1796, 2470, 1779, 3096, 3141, 2218, 2946, 1853, 3103, 1457, 2779, 2412, 2587, 1895, 1973, 2492, 1826, 2806, 1797, 2471, 1780, 3097, 3142, 2219, 2947, 1854, 3104, 1458, 2780, 2413, 2588, 1896, 1974, 2493, 1827, 2807, 1798, 2472, 1781, 3098, 3143, 2220, 2948, 1855, 3105, 1459, 2781, 2414, 2589, 1897, 1975, 2494, 1828, 2808, 1799, 2473, 1782, 3099, 2881, 2221, 2949, 1856, 3106, 1460, 2782, 2415, 2590, 1898, 1976, 2495, 1829, 2809, 1800, 2474, 1783, 3100, 2882, 2222, 2950, 1857, 3107, 1461, 2783, 2416, 2591, 1899, 1977, 2496, 1830, 2810, 1441, 2475, 1784, 3101, 2883, 2223, 2951, 1858, 3108, 1462, 2784, 2417, 2592, 1900, 1978, 2497, 1831, 2811, 1442, 2476, 1785, 3102, 2884, 2224, 2952, 1859, 3109, 1463, 2785, 2418, 2593, 1901, 1979, 2498, 1832, 2812, 1443, 2477, 1786, 3103, 2885, 2225, 2953, 1860, 3110, 1464, 2786, 2419, 2594, 1902, 1980, 2499, 1833, 2813, 1444, 2478, 1787, 3104, 2886, 2226, 2954, 1861, 3111, 1465, 2787, 2420, 2595, 1903, 1981, 2500, 1834, 2814, 1445, 2479, 1788, 3105, 2887, 2227, 2955, 1862, 3112, 1466, 2788, 2421, 2596, 1904, 1982, 2501, 1835, 2815, 1446, 2480, 1789, 3106, 2888, 2228, 2956, 1863, 3113, 1467, 2789, 2422, 2597, 1905, 1983, 2502, 1836, 2816, 1447, 2481, 1790, 3107, 2889, 2229, 2957, 1864, 3114, 1468, 2790, 2423, 2598, 1906, 1984, 2503, 1837, 2817, 1448, 2482, 1791, 3108, 2890, 2230, 2958, 1865, 3115, 1469, 2791, 2424, 2599, 1907, 1985, 2504, 1838, 2818, 1449, 2483, 1792, 3109, 2891, 2231, 2959, 1866, 3116, 1470, 2792, 2425, 2600, 1908, 1986, 2505, 1839, 2819, 1450, 2484, 1793, 3110, 2892, 2232, 2960, 1867, 3117, 1471, 2793, 2426, 2601, 1909, 1987, 2506, 1840, 2820, 1451, 2485, 1794, 3111, 2893, 2233, 2961, 1868, 3118, 1472, 2794, 2427, 2602, 1910, 1988, 2507, 1841, 2821, 1452, 2486, 1795, 3112, 2894, 2234, 2962, 1869, 3119, 1473, 2795, 2428, 2603, 1911, 1989, 2508, 1842, 2822, 1453, 2487, 1796, 3113, 2895, 2235, 2963, 1870, 3120, 1474, 2796, 2429, 2604, 1912, 1990, 2509, 1843, 2823, 1454, 2488, 1797, 3114, 2896, 2236, 2964, 1871, 3121, 1475, 2797, 2430, 2605, 1913, 1991, 2510, 1844, 2824, 1455, 2489, 1798, 3115, 2897, 2237, 2965, 1872, 3122, 1476, 2798, 2431, 2606, 1914, 1992, 2511, 1845, 2825, 1456, 2490, 1799, 3116, 2898, 2238, 2966, 1873, 3123, 1477, 2799, 2432, 2607, 1915, 1993, 2512, 1846, 2826, 1457, 2491, 1800, 3117, 2899, 2239, 2967, 1874, 3124, 1478, 2800, 2433, 2608, 1916, 1994, 2513, 1847, 2827, 1458, 2492, 1707, 3118, 2900, 2240, 2968, 1875, 3125, 1479, 2801, 2434, 2609, 1917, 1995, 2514, 1848, 2828, 1459, 2493, 1708, 3119, 2901, 2241, 2969, 1876, 3126, 1480, 2802, 2435, 2610, 1918, 1996, 2515, 1849, 2829, 1460, 2494, 1709, 3120, 2902, 2242, 2970, 1877, 3127, 1481, 2803, 2436, 2611, 1919, 1997, 2516, 1850, 2830, 1461, 2495, 1710, 3121, 2903, 2243, 2971, 1878, 3128, 1482, 2804, 2437, 2612, 1920, 1998, 2517, 1851, 2831, 1462, 2496, 1711, 3122, 2904, 2244, 2972, 1879, 3129, 1483, 2805, 2161, 2613, 1921, 1999, 2518, 1852, 2832, 1463, 2497, 1712, 3123, 2905, 2245, 2973, 1880, 3130, 1484, 2806, 2162, 2614, 1922, 2000, 2519, 1853, 2833, 1464, 2498, 1713, 3124, 2906, 2246, 2974, 1881, 3131, 1485, 2807, 2163, 2615, 1923, 2001, 2520, 1854, 2834, 1465, 2499, 1714, 3125, 2907, 2247, 2975, 1882, 3132, 1486, 2808, 2164, 2616, 1924, 2002, 2161, 1855, 2835, 1466, 2500, 1715, 3126, 2908, 2248, 2881, 1883, 3133, 1487, 2809, 2165, 2617, 1925, 2003, 2162, 1856, 2836, 1467, 2501, 1716, 3127, 2909, 2249, 2882, 1884, 3134, 1488, 2810, 2166, 2618, 1926, 2004, 2163, 1857, 2837, 1468, 2502, 1717, 3128, 2910, 2250, 2883, 1885, 3135, 1489, 2811, 2167, 2619, 1927, 2005, 2164, 1858, 2838, 1469, 2503, 1718, 3129, 2911, 2251, 2884, 1886, 3136, 1490, 2812, 2168, 2620, 1928, 2006, 2165, 1859, 2839, 1470, 2504, 1719, 3130, 2912, 2252, 2885, 1887, 3137, 1491, 2813, 2169, 2621, 1929, 2007, 2166, 1860, 2840, 1471, 2505, 1720, 3131, 2913, 2253, 2886, 1888, 3138, 1492, 2814, 2170, 2622, 1930, 2008, 2167, 1861, 2841, 1472, 2506, 1721, 3132, 2914, 2254, 2887, 1889, 3139, 1493, 2815, 2171, 2623, 1931, 2009, 2168, 1862, 2842, 1473, 2507, 1722, 3133, 2915, 2255, 2888, 1890, 3140, 1494, 2816, 2172, 2624, 1932, 2010, 2169, 1863, 2843, 1474, 2508, 1723, 3134, 2916, 2256, 2889, 1891, 3141, 1495, 2817, 2173, 2625, 1933, 2011, 2170, 1864, 2844, 1475, 2509, 1724, 3135, 2917, 2257, 2890, 1892, 3142, 1496, 2818, 2174, 2626, 1934, 2012, 2171, 1865, 2845, 1476, 2510, 1725, 3136, 2918, 2258, 2891, 1893, 3143, 1497, 2819, 2175, 2627, 1935, 2013, 2172, 1866, 2846, 1477, 2511, 1726, 3137, 2919, 2259, 2892, 1894, 3144, 1498, 2820, 2176, 2628, 1936, 2014, 2173, 1867, 2847, 1478, 2512, 1727, 3138, 2920, 2260, 2893, 1895, 3145, 1499, 2821, 2177, 2629, 1937, 2015, 2174, 1868, 2848, 1479, 2513, 1728, 3139, 2921, 2261, 2894, 1896, 3146, 1500, 2822, 2178, 2630, 1938, 2016, 2175, 1869, 2849, 1480, 2514, 1729, 3140, 2922, 2262, 2895, 1897, 3147, 1501, 2823, 2179, 2631, 1939, 2017, 2176, 1870, 2850, 1481, 2515, 1730, 3141, 2923, 2263, 2896, 1898, 3148, 1502, 2824, 2180, 2632, 1940, 2018, 2177, 1871, 2851, 1482, 2516, 1731, 3142, 2924, 2264, 2897, 1899, 3149, 1503, 2825, 2181, 2633, 1941, 2019, 2178, 1872, 2852, 1483, 2517, 1732, 3143, 2925, 2265, 2898, 1900, 3150, 1504, 2826, 2182, 2634, 1942, 2020, 2179, 1873, 2853, 1484, 2518, 1733, 3144, 2926, 2266, 2899, 1901, 3151, 1505, 2827, 2183, 2635, 1943, 2021, 2180, 1874, 2854, 1485, 2519, 1734, 3145, 2927, 2267, 2900, 1902, 3152, 1506, 2828, 2184, 2636, 1944, 2022, 2181, 1875, 2855, 1486, 2520, 1735, 3146, 2928, 2268, 2901, 1903, 3153, 1507, 2829, 2185, 2637, 1945, 2023, 2182, 1876, 2856, 1487, 2394, 1736, 3147, 2929, 2269, 2902, 1904, 3154, 1508, 2830, 2186, 2638, 1946, 2024, 2183, 1877, 2857, 1488, 2395, 1737, 3148, 2930, 2270, 2903, 1905, 3155, 1509, 2831, 2187, 2639, 1947, 2025, 2184, 1878, 2858, 1489, 2396, 1738, 2881, 2931, 2271, 2904, 1906, 3156, 1510, 2832, 2188, 2640, 1948, 2026, 2185, 1879, 2859, 1490, 2397, 1739, 2882, 2932, 2272, 2905, 1907, 3157, 1511, 2833, 2189, 2641, 1949, 2027, 2186, 1880, 2860, 1491, 2398, 1740, 2883, 2933, 2273, 2906, 1908, 3158, 1512, 2834, 2190, 2642, 1950, 2028, 2187, 1881, 2861, 1492, 2399, 1741, 2884, 2934, 2274, 2907, 1909, 3159, 1513, 2835, 2191, 2643, 1951, 2029, 2188, 1882, 2862, 1493, 2400, 1742, 2885, 2935, 2275, 2908, 1910, 3160, 1514, 2836, 2192, 2644, 1952, 2030, 2189, 1883, 2863, 1494, 2401, 1743, 2886, 2936, 2276, 2909, 1911, 3161, 1515, 2837, 2193, 2645, 1953, 2031, 2190, 1884, 2864, 1495, 2402, 1744, 2887, 2937, 2277, 2910, 1912, 3162, 1516, 2838, 2194, 2646, 1954, 2032, 2191, 1885, 2865, 1496, 2403, 1745, 2888, 2938, 2278, 2911, 1913, 3163, 1517, 2839, 2195, 2647, 1955, 2033, 2192, 1886, 2866, 1497, 2404, 1746, 2889, 2939, 2279, 2912, 1914, 3164, 1518, 2840, 2196, 2648, 1956, 2034, 2193, 1887, 2867, 1498, 2405, 1747, 2890, 2940, 2280, 2913, 1915, 3165, 1519, 2841, 2197, 2649, 1957, 2035, 2194, 1888, 2868, 1499, 2406, 1748, 2891, 2941, 2281, 2914, 1916, 3166, 1520, 2842, 2198, 2650, 1958, 2036, 2195, 1889, 2869, 1500, 2407, 1749, 2892, 2942, 2282, 2915, 1917, 3167, 1521, 2843, 2199, 2651, 1959, 2037, 2196, 1890, 2870, 1501, 2408, 1750, 2893, 2943, 2283, 2916, 1918, 3168, 1522, 2844, 2200, 2652, 1960, 2038, 2197, 1891, 2871, 1502, 2409, 1751, 2894, 2944, 2284, 2917, 1919, 3169, 1523, 2845, 2201, 2653, 1961, 2039, 2198, 1892, 2872, 1503, 2410, 1752, 2895, 2945, 2285, 2918, 1920, 3170, 1524, 2846, 2202, 2654, 1962, 2040, 2199, 1893, 2873, 1504, 2411, 1753, 2896, 2946, 2286, 2919, 1921, 3171, 1525, 2847, 2203, 2655, 1963, 2041, 2200, 1894, 2874, 1505, 2412, 1754, 2897, 2947, 2287, 2920, 1922, 3172, 1526, 2848, 2204, 2656, 1964, 2042, 2201, 1895, 2875, 1506, 2413, 1755, 2898, 2948, 2288, 2921, 1923, 3173, 1527, 2849, 2205, 2657, 1965, 2043, 2202, 1896, 2876, 1507, 2414, 1756, 2899, 2949, 2289, 2922, 1924, 3174, 1528, 2850, 2206, 2658, 1966, 2044, 2203, 1897, 2877, 1508, 2415, 1757, 2900, 2950, 2290, 2923, 1925, 3175, 1529, 2851, 2207, 2659, 1967, 2045, 2204, 1898, 2878, 1509, 2416, 1758, 2901, 2951, 2291, 2924, 1926, 3176, 1530, 2852, 2208, 2660, 1968, 2046, 2205, 1899, 2879, 1510, 2417, 1759, 2902, 2952, 2292, 2925, 1927, 3177, 1531, 2853, 2209, 2661, 1969, 2047, 2206, 1900, 2880, 1511, 2418, 1760, 2903, 2953, 2293, 2926, 1928, 3178, 1532, 2854, 2210, 2662, 1970, 2048, 2207, 1901, 2776, 1512, 2419, 1761, 2904, 2954, 2294, 2927, 1929, 3179, 1533, 2855, 2211, 2663, 1971, 2049, 2208, 1902, 2777, 1513, 2420, 1762, 2905, 2955, 2295, 2928, 1930, 3180, 1534, 2856, 2212, 2664, 1972, 2050, 2209, 1903, 2778, 1514, 2421, 1763, 2906, 2956, 2296, 2929, 1931, 3181, 1535, 2857, 2213, 2665, 1973, 2051, 2210, 1904, 2779, 1515, 2422, 1764, 2907, 2957, 2297, 2930, 1932, 3182, 1536, 2858, 2214, 2666, 1974, 2052, 2211, 1905, 2780, 1516, 2423, 1765, 2908, 2958, 2298, 2931, 1933, 3077, 1537, 2859, 2215, 2667, 1975, 2053, 2212, 1906, 2781, 1517, 2424, 1766, 2909, 2959, 2299, 2932, 1934, 3078, 1538, 2860, 2216, 2668, 1976, 2054, 2213, 1907, 2782, 1518, 2425, 1767, 2910, 2960, 2300, 2933, 1935, 3079, 1539, 2861, 2217, 2669, 1977, 2055, 2214, 1908, 2783, 1519, 2426, 1768, 2911, 2961, 2301, 2934, 1936, 3080, 1540, 2862, 2218, 2670, 1978, 2056, 2215, 1909, 2784, 1520, 2427, 1769, 2912, 2962, 2302, 2935, 1937, 3081, 1541, 2863, 2219, 2671, 1979, 2057, 2216, 1910, 2785, 1521, 2428, 1770, 2913, 2963, 2303, 2936, 1938, 3082, 1542, 2864, 2220, 2672, 1980, 2058, 2217, 1911, 2786, 1522, 2429, 1771, 2914, 2964, 2304, 2937, 1939, 3083, 1543, 2865, 2221, 2673, 1981, 2059, 2218, 1912, 2787, 1523, 2430, 1772, 2915, 2965, 2305, 2938, 1940, 3084, 1544, 2866, 2222, 2674, 1982, 2060, 2219, 1913, 2788, 1524, 2431, 1773, 2916, 2966, 2306, 2939, 1941, 3085, 1545, 2867, 2223, 2675, 1983, 2061, 2220, 1914, 2789, 1525, 2432, 1774, 2917, 2967, 2307, 2940, 1942, 3086, 1546, 2868, 2224, 2676, 1984, 2062, 2221, 1915, 2790, 1526, 2433, 1775, 2918, 2968, 2308, 2941, 1943, 3087, 1547, 2869, 2225, 2677, 1985, 2063, 2222, 1916, 2791, 1527, 2434, 1776, 2919, 2969, 2309, 2942, 1944, 3088, 1548, 2870, 2226, 2678, 1986, 2064, 2223, 1917, 2792, 1528, 2435, 1777, 2920, 2970, 2310, 2943, 1945, 3089, 1549, 2871, 2227, 2679, 1987, 2065, 2224, 1918, 2793, 1529, 2436, 1778, 2921, 2971, 2311, 2944, 1946, 3090, 1550, 2872, 2228, 2680, 1988, 2066, 2225, 1919, 2794, 1530, 2437, 1779, 2922, 2972, 2312, 2945, 1947, 3091, 1551, 2873, 2229, 2681, 1989, 2067, 2226, 1920, 2795, 1531, 2438, 1780, 2923, 2973, 2313, 2946, 1948, 3092, 1552, 2874, 2230, 2682, 1990, 2068, 2227, 1921, 2796, 1532, 2439, 1781, 2924, 2974, 2314, 2947, 1949, 3093, 1553, 2875, 2231, 2683, 1991, 2069, 2228, 1922, 2797, 1533, 2440, 1782, 2925, 2975, 2315, 2948, 1950, 3094, 1554, 2876, 2232, 2684, 1992, 2070, 2229, 1923, 2798, 1534, 2441, 1783, 2926, 2976, 2316, 2949, 1951, 3095, 1555, 2877, 2233, 2685, 1993, 2071, 2230, 1924, 2799, 1535, 2442, 1784, 2927, 2977, 2317, 2950, 1952, 3096, 1556, 2878, 2234, 2686, 1994, 2072, 2231, 1925, 2800, 1536, 2443, 1785, 2928, 2881, 2318, 2951, 1953, 3097, 1557, 2879, 2235, 2687, 1995, 2073, 2232, 1926, 2801, 1537, 2444, 1786, 2929, 2882, 2319, 2952, 1954, 3098, 1558, 2880, 2236, 2688, 1996, 2074, 2233, 1927, 2802, 1538, 2445, 1787, 2930, 2883, 2320, 2953, 1955, 3099, 1559, 2521, 2237, 2689, 1997, 2075, 2234, 1928, 2803, 1539, 2446, 1788, 2931, 2884, 2321, 2954, 1956, 3100, 1560, 2522, 2238, 2690, 1998, 2076, 2235, 1929, 2804, 1540, 2447, 1789, 2932, 2885, 2322, 2955, 1957, 3101, 1561, 2523, 2239, 2691, 1999, 2077, 2236, 1930, 2805, 1541, 2448, 1790, 2933, 2886, 2323, 2956, 1958, 3102, 1562, 2524, 2240, 2692, 2000, 2078, 2237, 1931, 2806, 1542, 2449, 1791, 2934, 2887, 2324, 2957, 1959, 3103, 1563, 2525, 2241, 2693, 2001, 2079, 2238, 1932, 2807, 1543, 2450, 1792, 2935, 2888, 2325, 2958, 1960, 3104, 1564, 2526, 2242, 2694, 2002, 2080, 2239, 1933, 2808, 1544, 2451, 1793, 2936, 2889, 2326, 2959, 1961, 3105, 1565, 2527, 2243, 2695, 2003, 2081, 2240, 1934, 2809, 1545, 2452, 1794, 2937, 2890, 2327, 2960, 1962, 3106, 1566, 2528, 2161, 2696, 2004, 2082, 2241, 1935, 2810, 1546, 2453, 1795, 2938, 2891, 2328, 2961, 1963, 3107, 1567, 2529, 2162, 2697, 2005, 2083, 2242, 1936, 2811, 1547, 2454, 1796, 2939, 2892, 2329, 2962, 1964, 3108, 1568, 2530, 2163, 2698, 2006, 2084, 2243, 1937, 2812, 1548, 2455, 1797, 2940, 2893, 2330, 2963, 1965, 3109, 1569, 2531, 2164, 2699, 2007, 2085, 2244, 1938, 2813, 1549, 2456, 1798, 2941, 2894, 2331, 2964, 1966, 3110, 1570, 2532, 2165, 2700, 2008, 2086, 2245, 1939, 2814, 1550, 2457, 1799, 2942, 2895, 2332, 2965, 1967, 3111, 1571, 2533, 2166, 2701, 2009, 2087, 2246, 1940, 2815, 1551, 2458, 1800, 2943, 2896, 2333, 2966, 1968, 3112, 1572, 2534, 2167, 2702, 2010, 2088, 2247, 1941, 2816, 1552, 2459, 1673, 2944, 2897, 2334, 2967, 1969, 3113, 1573, 2535, 2168, 2703, 2011, 2089, 2248, 1942, 2817, 1553, 2460, 1674, 2945, 2898, 2335, 2968, 1970, 3114, 1574, 2536, 2169, 2704, 2012, 2090, 2249, 1943, 2818, 1554, 2461, 1675, 2946, 2899, 2336, 2969, 1971, 3115, 1575, 2537, 2170, 2705, 2013, 2091, 2250, 1944, 2819, 1555, 2462, 1676, 2947, 2900, 2337, 2970, 1972, 3116, 1576, 2538, 2171, 2706, 2014, 2092, 2251, 1945, 2820, 1556, 2463, 1677, 2948, 2901, 2338, 2971, 1973, 3117, 1577, 2539, 2172, 2707, 2015, 2093, 2252, 1946, 2821, 1557, 2464, 1678, 2949, 2902, 2339, 2972, 1974, 3118, 1578, 2540, 2173, 2708, 2016, 2094, 2253, 1947, 2822, 1558, 2465, 1679, 2950, 2903, 2340, 2973, 1975, 3119, 1579, 2541, 2174, 2709, 2017, 2095, 2254, 1948, 2823, 1559, 2466, 1680, 2951, 2904, 2341, 2974, 1976, 3120, 1580, 2542, 2175, 2710, 2018, 2096, 2255, 1949, 2824, 1560, 2467, 1681, 2952, 2905, 2342, 2975, 1977, 3121, 1581, 2543, 2176, 2711, 2019, 2097, 2256, 1950, 2825, 1561, 2468, 1682, 2953, 2906, 2343, 2976, 1978, 3122, 1582, 2544, 2177, 2712, 2020, 2098, 2257, 1951, 2826, 1562, 2469, 1683, 2954, 2907, 2344, 2977, 1979, 3123, 1583, 2545, 2178, 2713, 2021, 2099, 2258, 1952, 2827, 1563, 2470, 1684, 2955, 2908, 2345, 2978, 1980, 3124, 1584, 2546, 2179, 2714, 2022, 2100, 2259, 1953, 2828, 1564, 2471, 1685, 2956, 2909, 2346, 2979, 1981, 3125, 1585, 2547, 2180, 2715, 2023, 2101, 2260, 1954, 2829, 1565, 2472, 1686, 2957, 2910, 2347, 2980, 1982, 3126, 1586, 2548, 2181, 2716, 2024, 2102, 2261, 1955, 2830, 1566, 2473, 1687, 2958, 2911, 2348, 2981, 1983, 3127, 1587, 2549, 2182, 2717, 2025, 2103, 2262, 1956, 2831, 1567, 2474, 1688, 2959, 2912, 2349, 2982, 1984, 3128, 1588, 2550, 2183, 2718, 2026, 2104, 2263, 1957, 2832, 1568, 2475, 1689, 2960, 2913, 2350, 2983, 1985, 3129, 1589, 2551, 2184, 2719, 2027, 2105, 2264, 1958, 2833, 1569, 2476, 1690, 2961, 2914, 2351, 2984, 1986, 3130, 1590, 2552, 2185, 2720, 2028, 2106, 2265, 1959, 2834, 1570, 2477, 1691, 2962, 2915, 2352, 2985, 1987, 3131, 1591, 2553, 2186, 2721, 2029, 2107, 2266, 1960, 2835, 1571, 2478, 1692, 2963, 2916, 2353, 2986, 1988, 3132, 1592, 2554, 2187, 2722, 2030, 2108, 2267, 1961, 2836, 1572, 2479, 1693, 2964, 2917, 2354, 2987, 1989, 3133, 1593, 2555, 2188, 2723, 2031, 2109, 2268, 1962, 2837, 1573, 2480, 1694, 2965, 2918, 2355, 2988, 1990, 3134, 1594, 2556, 2189, 2724, 2032, 2110, 2269, 1963, 2838, 1574, 2481, 1695, 2966, 2919, 2356, 2989, 1991, 2939, 1595, 2557, 2190, 2725, 2033, 2111, 2270, 1964, 2839, 1575, 2482, 1696, 2967, 2920, 2357, 2990, 1992, 2940, 1596, 2558, 2191, 2726, 2034, 2112, 2271, 1965, 2840, 1576, 2483, 1697, 2968, 2921, 2358, 2991, 1993, 2941, 1597, 2559, 2192, 2727, 2035, 2113, 2272, 1966, 2841, 1577, 2484, 1698, 2969, 2922, 2359, 2992, 1994, 2942, 1598, 2560, 2193, 2728, 2036, 2114, 2273, 1967, 2842, 1578, 2485, 1699, 2970, 2923, 2360, 2993, 1995, 2943, 1599, 2561, 2194, 2729, 2037, 2115, 2274, 1968, 2843, 1579, 2486, 1700, 2971, 2924, 2361, 2994, 1996, 2944, 1600, 2562, 2195, 2730, 2038, 2116, 2275, 1969, 2844, 1580, 2487, 1701, 2972, 2925, 2362, 2995, 1997, 2945, 1601, 2563, 2196, 2731, 2039, 2117, 2276, 1970, 2845, 1581, 2488, 1702, 2881, 2926, 2363, 2996, 1998, 2946, 1602, 2564, 2197, 2732, 2040, 2118, 2277, 1971, 2846, 1582, 2489, 1703, 2882, 2927, 2364, 2997, 1999, 2947, 1603, 2565, 2198, 2733, 2041, 2119, 2278, 1972, 2847, 1583, 2490, 1704, 2883, 2928, 2365, 2998, 2000, 2948, 1604, 2566, 2199, 2734, 2042, 2120, 2279, 1973, 2848, 1584, 2491, 1705, 2884, 2929, 2366, 2999, 2001, 2949, 1605, 2567, 2200, 2735, 2043, 2121, 2280, 1974, 2849, 1585, 2492, 1706, 2885, 2930, 2367, 3000, 2002, 2950, 1606, 2568, 2201, 2736, 2044, 2122, 2281, 1975, 2850, 1586, 2493, 1707, 2886, 2931, 2368, 3001, 2003, 2951, 1607, 2569, 2202, 2737, 2045, 2123, 2282, 1976, 2851, 1587, 2494, 1708, 2887, 2932, 2369, 3002, 2004, 2952, 1608, 2570, 2203, 2738, 2046, 2124, 2283, 1977, 2852, 1588, 2495, 1709, 2888, 2933, 2370, 3003, 1801, 2953, 1609, 2571, 2204, 2739, 2047, 2125, 2284, 1978, 2853, 1589, 2496, 1710, 2889, 2934, 2371, 3004, 1802, 2954, 1610, 2572, 2205, 2740, 2048, 2126, 2285, 1979, 2854, 1590, 2497, 1711, 2890, 2935, 2372, 3005, 1803, 2955, 1611, 2573, 2206, 2741, 2049, 2127, 2286, 1980, 2855, 1591, 2498, 1712, 2891, 2936, 2373, 3006, 1804, 2956, 1612, 2574, 2207, 2742, 2050, 2128, 2287, 1981, 2856, 1592, 2499, 1713, 2892, 2937, 2374, 3007, 1805, 2957, 1613, 2575, 2208, 2743, 2051, 2129, 2288, 1982, 2857, 1593, 2500, 1714, 2893, 2938, 2375, 3008, 1806, 2958, 1614, 2576, 2209, 2744, 2052, 2130, 2289, 1983, 2858, 1594, 2501, 1715, 2894, 2939, 2376, 3009, 1807, 2959, 1615, 2577, 2210, 2745, 2053, 2131, 2290, 1984, 2859, 1595, 2502, 1716, 2895, 2940, 2377, 3010, 1808, 2960, 1616, 2578, 2211, 2746, 2054, 2132, 2291, 1985, 2860, 1596, 2503, 1717, 2896, 2941, 2378, 3011, 1809, 2961, 1617, 2579, 2212, 2747, 2055, 2133, 2292, 1986, 2861, 1597, 2504, 1718, 2897, 2942, 2379, 3012, 1810, 2962, 1618, 2580, 2213, 2748, 2056, 2134, 2293, 1987, 2862, 1598, 2505, 1719, 2898, 2943, 2380, 3013, 1811, 2963, 1619, 2581, 2214, 2749, 2057, 2135, 2294, 1988, 2863, 1599, 2506, 1720, 2899, 2944, 2381, 3014, 1812, 2964, 1620, 2582, 2215, 2750, 2058, 2136, 2295, 1989, 2864, 1600, 2507, 1721, 2900, 2945, 2382, 3015, 1813, 2965, 1621, 2583, 2216, 2751, 2059, 2137, 2296, 1990, 2865, 1601, 2508, 1722, 2901, 2946, 2383, 3016, 1814, 2966, 1622, 2584, 2217, 2752, 2060, 2138, 2297, 1991, 2866, 1602, 2509, 1723, 2902, 2947, 2384, 3017, 1815, 2967, 1623, 2585, 2218, 2753, 2061, 2139, 2298, 1992, 2867, 1603, 2510, 1724, 2903, 2948, 2385, 3018, 1816, 2968, 1624, 2586, 2219, 2754, 2062, 2140, 2299, 1993, 2868, 1604, 2511, 1725, 2904, 2949, 2386, 3019, 1817, 2969, 1625, 2587, 2220, 2755, 2063, 2141, 2300, 1994, 2869, 1605, 2512, 1726, 2905, 2950, 2387, 3020, 1818, 2970, 1626, 2588, 2221, 2756, 2064, 2142, 2301, 1995, 2870, 1606, 2513, 1727, 2906, 2951, 2388, 3021, 1819, 2971, 1627, 2589, 2222, 2757, 2065, 2143, 2302, 1996, 2871, 1607, 2514, 1728, 2907, 2952, 2389, 3022, 1820, 2972, 1628, 2590, 2223, 2758, 2066, 2144, 2303, 1997, 2872, 1608, 2515, 1729, 2908, 2953, 2390, 3023, 1821, 2973, 1629, 2591, 2224, 2759, 2067, 2145, 2304, 1998, 2873, 1609, 2516, 1730, 2909, 2954, 2391, 3024, 1822, 2974, 1630, 2592, 2225, 2760, 2068, 2146, 2305, 1999, 2874, 1610, 2517, 1731, 2910, 2955, 2392, 3025, 1823, 2975, 1631, 2593, 2226, 2761, 2069, 2147, 2306, 2000, 2875, 1611, 2518, 1732, 2911, 2956, 2393, 3026, 1824, 2976, 1632, 2594, 2227, 2762, 2070, 2148, 2307, 2001, 2876, 1612, 2519, 1733, 2912, 2957, 2394, 3027, 1825, 2977, 1633, 2595, 2228, 2763, 2071, 2149, 2308, 2002, 2877, 1613, 2520, 1734, 2913, 2958, 2395, 3028, 1826, 2978, 1634, 2596, 2229, 2764, 2072, 2150, 2309, 2003, 2878, 1614, 2288, 1735, 2914, 2959, 2396, 3029, 1827, 2979, 1635, 2597, 2230, 2765, 2073, 2151, 2310, 2004, 2879, 1615, 2289, 1736, 2915, 2960, 2397, 3030, 1828, 2980, 1636, 2598, 2231, 2766, 2074, 2152, 2311, 2005, 2880, 1616, 2290, 1737, 2916, 2961, 2398, 3031, 1829, 2981, 1637, 2599, 2232, 2767, 2075, 2153, 2312, 2006, 2626, 1617, 2291, 1738, 2917, 2962, 2399, 3032, 1830, 2982, 1638, 2600, 2233, 2768, 2076, 2154, 2313, 2007, 2627, 1618, 2292, 1739, 2918, 2963, 2400, 3033, 1831, 2983, 1639, 2601, 2234, 2769, 2077, 2155, 2314, 2008, 2628, 1619, 2293, 1740, 2919, 2964, 2401, 3034, 1832, 2984, 1640, 2602, 2235, 2770, 2078, 2156, 2315, 2009, 2629, 1620, 2294, 1741, 2920, 2965, 2402, 3035, 1833, 2985, 1641, 2603, 2236, 2771, 2079, 2157, 2316, 2010, 2630, 1621, 2295, 1742, 2921, 2966, 2403, 3036, 1834, 2986, 1642, 2604, 2237, 2772, 2080, 2158, 2317, 2011, 2631, 1622, 2296, 1743, 2922, 2967, 2404, 3037, 1835, 2987, 1643, 2605, 2238, 2773, 2081, 2159, 2318, 2012, 2632, 1623, 2297, 1744, 2923, 2968, 2405, 3038, 1836, 2988, 1644, 2606, 2239, 2774, 2082, 2160, 2319, 2013, 2633, 1624, 2298, 1745, 2924, 2969, 2406, 3039, 1837, 2989, 1645, 2607, 2240, 2775, 2083, 1801, 2320, 2014, 2634, 1625, 2299, 1746, 2925, 2970, 2407, 3040, 1838, 2990, 1646, 2608, 2241, 2776, 2084, 1802, 2321, 2015, 2635, 1626, 2300, 1747, 2926, 2971, 2408, 3041, 1839, 2991, 1647, 2609, 2242, 2777, 2085, 1803, 2322, 2016, 2636, 1627, 2301, 1748, 2927, 2972, 2409, 3042, 1840, 2992, 1648, 2610, 2243, 2778, 2086, 1804, 2323, 2017, 2637, 1628, 2302, 1749, 2928, 2973, 2410, 3043, 1841, 2993, 1649, 2611, 2244, 2779, 2087, 1805, 2324, 2018, 2638, 1629, 2303, 1750, 2929, 2974, 2411, 3044, 1842, 2994, 1650, 2612, 2245, 2780, 2088, 1806, 2325, 2019, 2639, 1630, 2304, 1751, 2930, 2975, 2412, 3045, 1843, 2995, 1651, 2613, 2246, 2781, 2089, 1807, 2326, 2020, 2640, 1631, 2305, 1752, 2931, 2976, 2413, 3046, 1844, 2996, 1652, 2614, 2247, 2782, 2090, 1808, 2327, 2021, 2641, 1632, 2306, 1753, 2932, 2977, 2414, 3047, 1845, 2997, 1653, 2615, 2248, 2783, 2091, 1809, 2328, 2022, 2642, 1633, 2307, 1754, 2933, 2978, 2415, 3048, 1846, 2998, 1654, 2616, 2249, 2784, 2092, 1810, 2329, 2023, 2643, 1634, 2308, 1755, 2934, 2979, 2416, 3049, 1847, 2999, 1655, 2617, 2250, 2785, 2093, 1811, 2330, 2024, 2644, 1635, 2309, 1756, 2935, 2980, 2417, 3050, 1848, 3000, 1656, 2618, 2251, 2786, 2094, 1812, 2331, 2025, 2645, 1636, 2310, 1757, 2936, 2981, 2418, 3051, 1849, 3001, 1657, 2619, 2252, 2787, 2095, 1813, 2332, 2026, 2646, 1637, 2311, 1758, 2937, 2982, 2419, 3052, 1850, 3002, 1658, 2620, 2253, 2788, 2096, 1814, 2333, 2027, 2647, 1638, 2312, 1759, 2938, 2983, 2420, 3053, 1851, 3003, 1659, 2621, 2254, 2789, 2097, 1815, 2334, 2028, 2648, 1639, 2313, 1760, 2939, 2984, 2421, 3054, 1852, 3004, 1660, 2622, 2255, 2790, 2098, 1816, 2335, 2029, 2649, 1640, 2314, 1761, 2940, 2985, 2422, 3055, 1853, 3005, 1661, 2623, 2256, 2791, 2099, 1817, 2336, 2030, 2650, 1641, 2315, 1762, 2941, 2986, 2423, 3056, 1854, 3006, 1662, 2624, 2257, 2792, 2100, 1818, 2337, 2031, 2651, 1642, 2316, 1763, 2942, 2987, 2424, 3057, 1855, 3007, 1663, 2625, 2258, 2793, 2101, 1819, 2338, 2032, 2652, 1643, 2317, 1764, 2943, 2988, 2425, 3058, 1856, 3008, 1664, 2626, 2259, 2794, 2102, 1820, 2339, 2033, 2653, 1644, 2318, 1765, 2944, 2989, 2426, 3059, 1857, 3009, 1665, 2627, 2260, 2795, 2103, 1821, 2340, 2034, 2654, 1645, 2319, 1766, 2945, 2990, 2427, 3060, 1858, 3010, 1666, 2628, 2261, 2796, 2104, 1822, 2341, 2035, 2655, 1646, 2320, 1767, 2946, 2991, 2428, 3061, 1859, 3011, 1667, 2629, 2262, 2797, 2105, 1823, 2342, 2036, 2656, 1647, 2321, 1768, 2947, 2992, 2429, 3062, 1860, 3012, 1668, 2630, 2263, 2798, 2106, 1824, 2343, 2037, 2657, 1648, 2322, 1769, 2948, 2993, 2430, 3063, 1861, 3013, 1669, 2631, 2264, 2799, 2107, 1825, 2344, 2038, 2658, 1649, 2323, 1770, 2949, 2994, 2431, 3064, 1862, 3014, 1670, 2632, 2265, 2800, 2108, 1826, 2345, 2039, 2659, 1650, 2324, 1771, 2950, 2995, 2432, 3065, 1863, 3015, 1671, 2633, 2266, 2801, 2109, 1827, 2346, 2040, 2660, 1651, 2325, 1772, 2951, 2996, 2433, 3066, 1864, 3016, 1672, 2634, 2267, 2802, 2110, 1828, 2347, 2041, 2661, 1652, 2326, 1773, 2952, 2997, 2434, 3067, 1865, 3017, 1673, 2635, 2268, 2803, 2111, 1829, 2348, 2042, 2662, 1653, 2327, 1774, 2953, 2998, 2435, 3068, 1866, 3018, 1674, 2636, 2269, 2804, 2112, 1830, 2349, 2043, 2663, 1654, 2328, 1775, 2954, 2999, 2436, 3069, 1867, 3019, 1675, 2637, 2270, 2805, 2113, 1831, 2350, 2044, 2664, 1655, 2329, 1776, 2955, 3000, 2437, 3070, 1868, 3020, 1676, 2638, 2271, 2806, 2114, 1832, 2351, 2045, 2665, 1656, 2330, 1777, 2956, 3001, 2438, 3071, 1869, 3021, 1677, 2639, 2272, 2807, 2115, 1833, 2352, 2046, 2666, 1657, 2331, 1778, 2957, 3002, 2439, 3072, 1870, 3022, 1678, 2640, 2273, 2808, 2116, 1834, 2353, 2047, 2667, 1658, 2332, 1779, 2958, 3003, 2440, 3073, 1871, 3023, 1679, 2641, 2274, 2809, 2117, 1835, 2354, 2048, 2668, 1659, 2333, 1780, 2959, 3004, 2441, 3074, 1872, 3024, 1680, 2642, 2275, 2810, 2118, 1836, 2355, 2049, 2669, 1660, 2334, 1781, 2960, 3005, 2442, 3075, 1873, 3025, 1681, 2643, 2276, 2811, 2119, 1837, 2356, 2050, 2670, 1661, 2335, 1782, 2961, 3006, 2443, 3076, 1874, 3026, 1682, 2644, 2277, 2812, 2120, 1838, 2357, 2051, 2671, 1662, 2336, 1783, 2962, 3007, 2444, 3077, 1875, 3027, 1683, 2645, 2278, 2813, 2121, 1839, 2358, 2052, 2672, 1663, 2337, 1784, 2963, 3008, 2445, 3078, 1876, 3028, 1684, 2646, 2279, 2814, 2122, 1840, 2359, 2053, 2673, 1664, 2338, 1785, 2964, 3009, 2446, 3079, 1877, 3029, 1685, 2647, 2280, 2815, 2123, 1841, 2360, 2054, 2674, 1665, 2339, 1786, 2965, 3010, 2447, 3080, 1878, 3030, 1686, 2648, 2281, 2816, 2124, 1842, 2361, 2055, 2675, 1666, 2340, 1787, 2966, 3011, 2448, 3081, 1879, 3031, 1687, 2649, 2282, 2817, 2125, 1843, 2362, 2056, 2676, 1667, 2341, 1788, 2967, 3012, 2449, 3082, 1880, 3032, 1688, 2650, 2283, 2818, 2126, 1844, 2363, 2057, 2677, 1668, 2342, 1789, 2968, 3013, 2450, 3083, 1881, 3033, 1689, 2651, 2284, 2819, 2127, 1845, 2364, 2058, 2678, 1669, 2343, 1790, 2969, 3014, 2451, 3084, 1882, 3034, 1690, 2652, 2285, 2820, 2128, 1846, 2365, 2059, 2679, 1670, 2344, 1791, 2970, 3015, 2452, 3085, 1883, 3035, 1691, 2653, 2286, 2821, 2129, 1847, 2366, 2060, 2680, 1671, 2345, 1792, 2971, 3016, 2453, 3086, 1884, 3036, 1692, 2654, 2287, 2822, 2130, 1848, 2367, 2061, 2681, 1672, 2346, 1793, 2972, 3017, 2454, 3087, 1885, 3037, 1693, 2655, 2288, 2823, 2131, 1849, 2368, 2062, 2682, 1673, 2347, 1794, 2973, 3018, 2455, 3088, 1886, 3038, 1694, 2656, 2289, 2824, 2132, 1850, 2369, 2063, 2683, 1674, 2348, 1795, 2974, 3019, 2456, 3089, 1887, 3039, 1695, 2657, 2290, 2825, 2133, 1851, 2370, 2064, 2684, 1675, 2349, 1796, 2975, 3020, 2457, 3090, 1888, 3040, 1696, 2658, 2291, 2826, 2134, 1852, 2371, 2065, 2685, 1676, 2350, 1797, 2976, 3021, 2458, 3091, 1889, 3041, 1697, 2659, 2292, 2827, 2135, 1853, 2372, 2066, 2686, 1677, 2351, 1798, 2977, 3022, 2459, 3092, 1890, 3042, 1698, 2660, 2293, 2828, 2136, 1854, 2373, 2067, 2687, 1678, 2352, 1799, 2978, 3023, 2460, 3093, 1891, 3043, 1699, 2661, 2294, 2829, 2137, 1855, 2374, 2068, 2688, 1679, 2353, 1800, 2979, 3024, 2461, 3094, 1892, 3044, 1700, 2662, 2295, 2830, 2138, 1856, 2375, 2069, 2689, 1680, 2354, 1663, 2980, 3025, 2462, 3095, 1893, 2987, 1701, 2663, 2296, 2831, 2139, 1857, 2376, 2070, 2690, 1681, 2355, 1664, 2981, 3026, 2463, 3096, 1894, 2988, 1702, 2664, 2297, 2832, 2140, 1858, 2377, 2071, 2691, 1682, 2356, 1665, 2982, 3027, 2464, 3097, 1895, 2989, 1703, 2665, 2298, 2833, 2141, 1859, 2378, 2072, 2692, 1683, 2357, 1666, 2983, 3028, 2465, 3098, 1896, 2990, 1704, 2666, 2299, 2834, 2142, 1860, 2379, 2073, 2693, 1684, 2358, 1667, 2984, 3029, 2466, 3099, 1897, 2991, 1705, 2667, 2300, 2835, 2143, 1861, 2380, 2074, 2694, 1685, 2359, 1668, 2985, 3030, 2467, 3100, 1898, 2992, 1706, 2668, 2301, 2836, 2144, 1862, 2381, 2075, 2695, 1686, 2360, 1669, 2986, 3031, 2468, 3101, 1899, 2993, 1707, 2669, 2302, 2837, 2145, 1863, 2382, 2076, 2696, 1687, 2361, 1670, 2987, 3032, 2469, 3102, 1900, 2994, 1708, 2670, 2303, 2838, 2146, 1864, 2383, 2077, 2697, 1688, 2362, 1671, 2988, 3033, 2470, 3103, 1901, 2995, 1709, 2671, 2304, 2521, 2147, 1865, 2384, 2078, 2698, 1689, 2363, 1672, 2989, 3034, 2471, 3104, 1902, 2996, 1710, 2672, 2305, 2522, 2148, 1866, 2385, 2079, 2699, 1690, 2364, 1673, 2990, 3035, 2472, 3105, 1903, 2997, 1711, 2673, 2306, 2523, 2149, 1867, 2386, 2080, 2700, 1691, 2365, 1674, 2991, 3036, 2473, 3106, 1904, 2998, 1712, 2674, 2307, 2524, 2150, 1868, 2387, 2081, 2701, 1692, 2366, 1675, 2992, 3037, 2474, 3107, 1905, 2999, 1713, 2675, 2308, 2525, 2151, 1869, 2388, 2082, 2702, 1693, 2367, 1676, 2993, 3038, 2475, 3108, 1906, 3000, 1714, 2676, 2309, 2526, 2152, 1870, 2389, 2083, 2703, 1694, 2368, 1677, 2994, 3039, 2476, 3109, 1907, 3001, 1715, 2677, 2310, 2527, 2153, 1871, 2390, 2084, 2704, 1695, 2369, 1678, 2995, 3040, 2477, 3110, 1908, 3002, 1716, 2678, 2311, 2528, 2154, 1872, 2391, 2085, 2705, 1696, 2370, 1679, 2996, 3041, 2478, 3111, 1909, 3003, 1717, 2679, 2312, 2529, 2155, 1873, 2392, 2086, 2706, 1697, 2371, 1680, 2997, 3042, 2479, 3112, 1910, 3004, 1718, 2680, 2313, 2530, 2156, 1874, 2393, 2087, 2707, 1698, 2372, 1681, 2998, 3043, 2480, 3113, 1911, 3005, 1719, 2681, 2314, 2531, 2157, 1875, 2394, 2088, 2708, 1699, 2373, 1682, 2999, 3044, 2481, 3114, 1912, 3006, 1720, 2682, 2315, 2532, 2158, 1876, 2395, 2089, 2709, 1700, 2374, 1683, 3000, 3045, 2482, 3115, 1913, 3007, 1721, 2683, 2316, 2533, 2159, 1877, 2396, 2090, 2710, 1701, 2375, 1684, 3001, 3046, 2483, 3116, 1914, 3008, 1722, 2684, 2317, 2534, 2160, 1878, 2397, 2091, 2711, 1702, 2376, 1685, 3002, 3047, 2484, 3117, 1915, 3009, 1723, 2685, 2318, 2535, 2146, 1879, 2398, 2092, 2712, 1703, 2377, 1686, 3003, 3048, 2485, 3118, 1916, 3010, 1724, 2686, 2319, 2536, 2147, 1880, 2399, 2093, 2713, 1704, 2378, 1687, 3004, 3049, 2486, 3119, 1917, 3011, 1725, 2687, 2320, 2537, 2148, 1881, 2400, 2094, 2714, 1705, 2379, 1688, 3005, 3050, 2487, 3120, 1918, 3012, 1726, 2688, 2321, 2538, 2149, 1882, 2401, 2095, 2715, 1706, 2380, 1689, 3006, 3051, 2488, 3121, 1919, 3013, 1727, 2689, 2322, 2539, 2150, 1883, 2402, 2096, 2716, 1707, 2381, 1690, 3007, 3052, 2489, 3122, 1920, 3014, 1728, 2690, 2323, 2540, 2151, 1884, 2403, 2097, 2717, 1708, 2382, 1691, 3008, 3053, 2490, 3123, 1921, 3015, 1729, 2691, 2324, 2541, 2152, 1885, 2404, 2098, 2718, 1709, 2383, 1692, 3009, 3054, 2491, 3124, 1922, 3016, 1730, 2692, 2325, 2542, 2153, 1886, 2405, 2099, 2719, 1710, 2384, 1693, 3010, 3055, 2492, 3125, 1923, 3017, 1731, 2693, 2326, 2543, 2154, 1887, 2406, 2100, 2720, 1711, 2385, 1694, 3011, 3056, 2493, 3126, 1924, 3018, 1732, 2694, 2327, 2544, 2155, 1888, 2407, 2101, 2721, 1712, 2386, 1695, 3012, 3057, 2494, 3127, 1925, 3019, 1733, 2695, 2328, 2545, 2156, 1889, 2408, 2102, 2722, 1713, 2387, 1696, 3013, 3058, 2495, 3128, 1926, 3020, 1734, 2696, 2329, 2546, 2157, 1890, 2409, 2103, 2723, 1714, 2388, 1697, 3014, 3059, 2496, 3129, 1927, 3021, 1735, 2697, 2330, 2547, 2158, 1891, 2410, 2104, 2724, 1715, 2389, 1698, 3015, 3060, 2497, 3130, 1928, 3022, 1736, 2698, 2331, 2548, 2159, 1892, 2411, 2105, 2725, 1716, 2390, 1699, 3016, 3061, 2498, 3131, 1929, 3023, 1737, 2699, 2332, 2549, 2160, 1893, 2412, 2106, 2726, 1717, 2391, 1700, 3017, 3062, 2499, 3132, 1930, 3024, 1738, 2700, 2333, 2550, 1816, 1894, 2413, 2107, 2727, 1718, 2392, 1701, 3018, 3063, 2500, 3133, 1931, 3025, 1739, 2701, 2334, 2551, 1817, 1895, 2414, 2108, 2728, 1719, 2393, 1702, 3019, 3064, 2501, 3134, 1932, 3026, 1740, 2702, 2335, 2552, 1818, 1896, 2415, 2109, 2729, 1720, 2394, 1703, 3020, 3065, 2502, 3135, 1933, 3027, 1741, 2703, 2336, 2553, 1819, 1897, 2416, 2110, 2730, 1721, 2395, 1704, 3021, 3066, 2503, 3136, 1934, 3028, 1742, 2704, 2337, 2554, 1820, 1898, 2417, 2111, 2731, 1722, 2396, 1705, 3022, 3067, 2504, 3137, 1935, 3029, 1743, 2705, 2338, 2555, 1821, 1899, 2418, 2112, 2732, 1723, 2397, 1706, 3023, 3068, 2505, 3138, 1936, 3030, 1744, 2706, 2339, 2556, 1822, 1900, 2419, 2113, 2733, 1724, 2398, 1707, 3024, 3069, 2506, 3139, 1937, 3031, 1745, 2707, 2340, 2557, 1823, 1901, 2420, 2114, 2734, 1725, 2399, 1708, 3025, 3070, 2507, 3140, 1938, 3032, 1746, 2708, 2341, 2558, 1824, 1902, 2421, 2115, 2735, 1726, 2400, 1709, 3026, 3071, 2508, 3141, 1939, 3033, 1747, 2709, 2342, 2559, 1825, 1903, 2422, 2116, 2736, 1727, 2401, 1710, 3027, 3072, 2509, 3142, 1940, 3034, 1748, 2710, 2343, 2560, 1826, 1904, 2423, 2117, 2737, 1728, 2402, 1711, 3028, 3073, 2510, 3143, 1941, 3035, 1749, 2711, 2344, 2561, 1827, 1905, 2424, 2118, 2738, 1729, 2403, 1712, 3029, 3074, 2511, 3144, 1942, 3036, 1750, 2712, 2345, 2562, 1828, 1906, 2425, 2119, 2739, 1730, 2404, 1713, 3030, 3075, 2512, 3145, 1943, 3037, 1751, 2713, 2346, 2521, 1829, 1907, 2426, 2120, 2740, 1731, 2405, 1714, 3031, 3076, 2513, 2881, 1944, 3038, 1752, 2714, 2347, 2522, 1830, 1908, 2427, 2121, 2741, 1732, 2406, 1715, 3032, 3077, 2514, 2882, 1945, 3039, 1753, 2715, 2348, 2523, 1831, 1909, 2428, 2122, 2742, 1733, 2407, 1716, 3033, 3078, 2515, 2883, 1946, 3040, 1754, 2716, 2349, 2524, 1832, 1910, 2429, 2123, 2743, 1734, 2408, 1717, 3034, 3079, 2516, 2884, 1947, 3041, 1755, 2717, 2350, 2525, 1833, 1911, 2430, 2124, 2744, 1735, 2409, 1718, 3035, 3080, 2517, 2885, 1948, 3042, 1756, 2718, 2351, 2526, 1834, 1912, 2431, 2125, 2745, 1736, 2410, 1719, 3036, 3081, 2518, 2886, 1949, 3043, 1757, 2719, 2352, 2527, 1835, 1913, 2432, 2126, 2746, 1737, 2411, 1720, 3037, 3082, 2519, 2887, 1950, 3044, 1758, 2720, 2353, 2528, 1836, 1914, 2433, 2127, 2747, 1738, 2412, 1721, 3038, 3083, 2520, 2888, 1951, 3045, 1759, 2721, 2354, 2529, 1837, 1915, 2434, 2128, 2748, 1739, 2413, 1722, 3039, 3084, 2161, 2889, 1952, 3046, 1760, 2722, 2355, 2530, 1838, 1916, 2435, 2129, 2749, 1740, 2414, 1723, 3040, 3085, 2162, 2890, 1953, 3047, 1761, 2723, 2356, 2531, 1839, 1917, 2436, 2130, 2750, 1741, 2415, 1724, 3041, 3086, 2163, 2891, 1954, 3048, 1762, 2724, 2357, 2532, 1840, 1918, 2437, 2131, 2751, 1742, 2416, 1725, 3042, 3087, 2164, 2892, 1955, 3049, 1763, 2725, 2358, 2533, 1841, 1919, 2438, 2132, 2752, 1743, 2417, 1726, 3043, 3088, 2165, 2893, 1956, 3050, 1764, 2726, 2359, 2534, 1842, 1920, 2439, 2133, 2753, 1744, 2418, 1727, 3044, 3089, 2166, 2894, 1801, 3051, 1765, 2727, 2360, 2535, 1843, 1921, 2440, 2134, 2754, 1745, 2419, 1728, 3045, 3090, 2167, 2895, 1802, 3052, 1766, 2728, 2361, 2536, 1844, 1922, 2441, 2135, 2755, 1746, 2420, 1729, 3046, 3091, 2168, 2896, 1803, 3053, 1767, 2729, 2362, 2537, 1845, 1923, 2442, 2136, 2756, 1747, 2421, 1730, 3047, 3092, 2169, 2897, 1804, 3054, 1768, 2730, 2363, 2538, 1846, 1924, 2443, 2137, 2757, 1748, 2422, 1731, 3048, 3093, 2170, 2898, 1805, 3055, 1769, 2731, 2364, 2539, 1847, 1925, 2444, 2138, 2758, 1749, 2423, 1732, 3049, 3094, 2171, 2899, 1806, 3056, 1770, 2732, 2365, 2540, 1848, 1926, 2445, 2139, 2759, 1750, 2424, 1733, 3050, 3095, 2172, 2900, 1807, 3057, 1771, 2733, 2366, 2541, 1849, 1927, 2446, 2140, 2760, 1751, 2425, 1734, 3051, 3096, 2173, 2901, 1808, 3058, 1772, 2734, 2367, 2542, 1850, 1928, 2447, 2141, 2761, 1752, 2426, 1735, 3052, 3097, 2174, 2902, 1809, 3059, 1773, 2735, 2368, 2543, 1851, 1929, 2448, 2142, 2762, 1753, 2427, 1736, 3053, 3098, 2175, 2903, 1810, 3060, 1774, 2736, 2369, 2544, 1852, 1930, 2449, 2143, 2763, 1754, 2428, 1737, 3054, 3099, 2176, 2904, 1811, 3061, 1775, 2737, 2370, 2545, 1853, 1931, 2450, 2144, 2764, 1755, 2429, 1738, 3055, 3100, 2177, 2905, 1812, 3062, 1776, 2738, 2371, 2546, 1854, 1932, 2451, 2145, 2765, 1756, 2430, 1739, 3056, 3101, 2178, 2906, 1813, 3063, 1777, 2739, 2372, 2547, 1855, 1933, 2452, 2146, 2766, 1757, 2431, 1740, 3057, 3102, 2179, 2907, 1814, 3064, 1778, 2740, 2373, 2548, 1856, 1934, 2453, 2147, 2767, 1758, 2432, 1741, 3058, 3103, 2180, 2908, 1815, 3065, 1779, 2741, 2374, 2549, 1857, 1935, 2454, 2148, 2768, 1759, 2433, 1742, 3059, 3104, 2181, 2909, 1816, 3066, 1780, 2742, 2375, 2550, 1858, 1936, 2455, 2149, 2769, 1760, 2434, 1743, 3060, 3105, 2182, 2910, 1817, 3067, 1781, 2743, 2376, 2551, 1859, 1937, 2456, 2150, 2770, 1761, 2435, 1744, 3061, 3106, 2183, 2911, 1818, 3068, 1782, 2744, 2377, 2552, 1860, 1938, 2457, 2151, 2771, 1762, 2436, 1745, 3062, 3107, 2184, 2912, 1819, 3069, 1783, 2745, 2378, 2553, 1861, 1939, 2458, 2152, 2772, 1763, 2437, 1746, 3063, 3108, 2185, 2913, 1820, 3070, 1784, 2746, 2379, 2554, 1862, 1940, 2459, 2153, 2773, 1764, 2438, 1747, 3064, 3109, 2186, 2914, 1821, 3071, 1785, 2747, 2380, 2555, 1863, 1941, 2460, 2154, 2774, 1765, 2439, 1748, 3065, 3110, 2187, 2915, 1822, 3072, 1786, 2748, 2381, 2556, 1864, 1942, 2461, 2155, 2775, 1766, 2440, 1749, 3066, 3111, 2188, 2916, 1823, 3073, 1787, 2749, 2382, 2557, 1865, 1943, 2462, 2156, 2776, 1767, 2441, 1750, 3067, 3112, 2189, 2917, 1824, 3074, 1788, 2750, 2383, 2558, 1866, 1944, 2463, 2157, 2777, 1768, 2442, 1751, 3068, 3113, 2190, 2918, 1825, 3075, 1789, 2751, 2384, 2559, 1867, 1945, 2464, 2158, 2778, 1769, 2443, 1752, 3069, 3114, 2191, 2919, 1826, 3076, 1790, 2752, 2385, 2560, 1868, 1946, 2465, 2159, 2779, 1770, 2444, 1753, 3070, 3115, 2192, 2920, 1827, 3077, 1791, 2753, 2386, 2561, 1869, 1947, 2466, 2160, 2780, 1771, 2445, 1754, 3071, 3116, 2193, 2921, 1828, 3078, 1792, 2754, 2387, 2562, 1870, 1948, 2467, 1801, 2781, 1772, 2446, 1755, 3072, 3117, 2194, 2922, 1829, 3079, 1793, 2755, 2388, 2563, 1871, 1949, 2468, 1802, 2782, 1773, 2447, 1756, 3073, 3118, 2195, 2923, 1830, 3080, 1794, 2756, 2389, 2564, 1872, 1950, 2469, 1803, 2783, 1774, 2448, 1757, 3074, 3119, 2196, 2924, 1831, 3081, 1795, 2757, 2390, 2565, 1873, 1951, 2470, 1804, 2784, 1775, 2449, 1758, 3075, 3120, 2197, 2925, 1832, 3082, 1796, 2758, 2391, 2566, 1874, 1952, 2471, 1805, 2785, 1776, 2450, 1759, 3076, 3121, 2198, 2926, 1833, 3083, 1797, 2759, 2392, 2567, 1875, 1953, 2472, 1806, 2786, 1777, 2451, 1760, 3077, 3219, 3015, 3192, 1990, 3142, 2819, 3166, 2476, 2610, 2339, 2547, 2752, 2779, 3024, 2646, 2581, 1910, 3170, 3220, 3016, 3193, 1991, 3143, 2820, 3167, 2477, 2611, 2340, 2548, 2753, 2780, 3025, 2647, 2582, 1911, 3171, 3221, 3017, 3194, 1992, 3144, 2821, 3168, 2478, 2612, 2341, 2549, 2754, 2781, 3026, 2648, 2583, 1912, 3172, 3222, 3018, 3195, 1993, 3145, 2822, 3169, 2479, 2613, 2342, 2550, 2755, 2782, 3027, 2649, 2584, 1913, 3173, 3223, 3019, 3196, 1994, 3146, 2823, 3170, 2480, 2614, 2343, 2551, 2756, 2783, 3028, 2650, 2585, 1914, 3174, 3224, 3020, 3197, 1995, 3147, 2824, 3171, 2481, 2615, 2344, 2552, 2757, 2784, 3029, 2651, 2586, 1915, 3175, 3225, 3021, 3198, 1996, 3148, 2825, 3172, 2482, 2616, 2345, 2553, 2758, 2785, 3030, 2652, 2587, 1916, 3176, 3226, 3022, 3199, 1997, 3149, 2826, 3173, 2483, 2617, 2346, 2554, 2759, 2786, 3031, 2653, 2588, 1917, 3177, 3227, 3023, 3200, 1998, 3150, 2827, 3174, 2484, 2618, 2347, 2555, 2760, 2787, 3032, 2654, 2589, 1918, 3178, 3228, 3024, 3201, 1999, 3151, 2828, 3175, 2485, 2619, 2348, 2556, 2761, 2788, 3033, 2655, 2590, 1919, 3179, 3229, 3025, 3202, 2000, 3152, 2829, 3176, 2486, 2620, 2349, 2557, 2762, 2789, 3034, 2656, 2591, 1920, 3180, 3230, 3026, 3203, 2001, 3153, 2830, 3177, 2487, 2621, 2350, 2558, 2763, 2790, 3035, 2657, 2592, 1921, 3181, 3231, 3027, 3204, 2002, 3154, 2831, 3178, 2488, 2622, 2351, 2559, 2764, 2791, 3036, 2658, 2593, 1922, 3182, 3232, 3028, 3205, 2003, 3155, 2832, 3179, 2489, 2623, 2352, 2560, 2765, 2792, 3037, 2659, 2594, 1923, 3183, 3233, 3029, 3206, 2004, 3156, 2833, 3180, 2490, 2624, 2353, 2561, 2766, 2793, 3038, 2660, 2595, 1924, 3184, 3234, 3030, 3207, 2005, 3157, 2834, 3181, 2491, 2625, 2354, 2562, 2767, 2794, 3039, 2661, 2596, 1925, 3185, 3235, 3031, 3208, 2006, 3158, 2835, 3182, 2492, 2626, 2355, 2563, 2768, 2795, 3040, 2662, 2597, 1926, 3186, 3236, 3032, 3209, 2007, 3159, 2836, 3183, 2493, 2627, 2356, 2564, 2769, 2796, 3041, 2663, 2598, 1927, 3187, 3237, 3033, 3210, 2008, 3160, 2837, 3184, 2494, 2628, 2357, 2565, 2770, 2797, 3042, 2664, 2599, 1928, 3188, 3238, 3034, 3211, 2009, 3161, 2838, 3185, 2495, 2629, 2358, 2566, 2771, 2798, 3043, 2665, 2600, 1929, 3189, 3239, 3035, 3212, 2010, 3162, 2839, 3186, 2496, 2630, 2359, 2567, 2772, 2799, 3044, 2666, 2601, 1930, 3190, 3240, 3036, 3213, 2011, 3163, 2840, 3187, 2497, 2631, 2360, 2568, 2773, 2800, 3045, 2667, 2602, 1931, 3191, 3144, 3037, 3214, 2012, 3164, 2841, 3188, 2498, 2632, 2361, 2569, 2774, 2801, 3046, 2668, 2603, 1932, 3192, 3145, 3038, 3215, 2013, 3165, 2842, 3189, 2499, 2633, 2362, 2570, 2775, 2802, 3047, 2669, 2604, 1933, 3193, 3146, 3039, 3216, 2014, 3166, 2843, 3190, 2500, 2634, 2363, 2571, 2776, 2803, 3048, 2670, 2605, 1934, 3194, 3147, 3040, 3217, 2015, 3167, 2844, 3191, 2501, 2635, 2364, 2572, 2777, 2804, 3049, 2671, 2606, 1935, 3195, 3148, 3041, 3218, 2016, 3168, 2845, 3192, 2502, 2636, 2365, 2573, 2778, 2805, 3050, 2672, 2607, 1936, 3196, 3149, 3042, 3219, 2017, 3169, 2846, 3193, 2503, 2637, 2366, 2574, 2779, 2806, 3051, 2673, 2608, 1937, 3197, 3150, 3043, 3220, 2018, 3170, 2847, 3194, 2504, 2638, 2367, 2575, 2780, 2807, 3052, 2674, 2609, 1938, 3198, 3151, 3044, 3221, 2019, 3171, 2848, 3195, 2505, 2639, 2368, 2576, 2781, 2808, 3053, 2675, 2610, 1939, 3199, 3152, 3045, 3222, 2020, 3172, 2849, 3196, 2506, 2640, 2369, 2577, 2782, 2809, 3054, 2676, 2611, 1940, 3200, 3153, 3046, 3223, 2021, 3173, 2850, 3197, 2507, 2641, 2370, 2578, 2783, 2810, 3055, 2677, 2612, 1941, 3201, 3154, 3047, 3224, 2022, 3174, 2851, 3198, 2508, 2642, 2371, 2579, 2784, 2811, 3056, 2678, 2613, 1942, 3202, 3155, 3048, 3225, 2023, 3175, 2852, 3199, 2509, 2643, 2372, 2580, 2785, 2812, 3057, 2679, 2614, 1943, 3203, 3156, 3049, 3226, 2024, 3176, 2853, 3200, 2510, 2644, 2373, 2581, 2786, 2813, 3058, 2680, 2615, 1944, 3204, 3157, 3050, 3227, 2025, 3177, 2854, 3201, 2511, 2645, 2374, 2582, 2787, 2814, 3059, 2681, 2616, 1945, 3205, 3158, 3051, 3228, 2026, 3178, 2855, 3202, 2512, 2646, 2375, 2583, 2788, 2815, 3060, 2682, 2617, 1946, 3206, 3159, 3052, 3229, 2027, 3179, 2856, 3203, 2513, 2647, 2376, 2584, 2789, 2816, 3061, 2683, 2618, 1947, 3207, 3160, 3053, 3230, 2028, 3180, 2857, 3204, 2514, 2648, 2377, 2585, 2790, 2817, 3062, 2684, 2619, 1948, 3208, 3161, 3054, 3231, 2029, 3181, 2858, 3205, 2515, 2649, 2378, 2586, 2791, 2818, 3063, 2685, 2620, 1949, 3209, 3162, 3055, 3232, 2030, 3182, 2859, 3206, 2516, 2650, 2379, 2587, 2792, 2819, 3064, 2686, 2621, 1950, 3210, 3163, 3056, 3233, 2031, 3183, 2860, 3207, 2517, 2651, 2380, 2588, 2793, 2820, 3065, 2687, 2622, 1951, 3211, 3164, 3057, 3234, 2032, 3184, 2861, 3208, 2518, 2652, 2381, 2589, 2794, 2821, 3066, 2688, 2623, 1952, 3212, 3165, 3058, 3235, 2033, 3185, 2862, 3209, 2519, 2653, 2382, 2590, 2795, 2822, 3067, 2689, 2624, 1953, 3213, 3166, 3059, 3236, 2034, 3186, 2863, 3210, 2520, 2654, 2383, 2591, 2796, 2823, 3068, 2690, 2625, 1954, 3214, 3167, 3060, 3237, 2035, 3187, 2864, 3211, 2438, 2655, 2384, 2592, 2797, 2824, 3069, 2691, 2626, 1955, 3215, 3168, 3061, 3238, 2036, 3188, 2865, 3212, 2439, 2656, 2385, 2593, 2798, 2825, 3070, 2692, 2627, 1956, 3216, 3169, 3062, 3239, 2037, 3189, 2866, 3213, 2440, 2657, 2386, 2594, 2799, 2826, 3071, 2693, 2628, 1957, 3217, 3170, 3063, 3240, 2038, 3190, 2867, 3214, 2441, 2658, 2387, 2595, 2800, 2827, 3072, 2694, 2629, 1958, 3218, 3171, 3064, 2976, 2039, 3191, 2868, 3215, 2442, 2659, 2388, 2596, 2801, 2828, 3073, 2695, 2630, 1959, 3219, 3172, 3065, 2977, 2040, 3192, 2869, 3216, 2443, 2660, 2389, 2597, 2802, 2829, 3074, 2696, 2631, 1960, 3220, 3173, 3066, 2978, 2041, 3193, 2870, 3217, 2444, 2661, 2390, 2598, 2803, 2830, 3075, 2697, 2632, 1961, 3221, 3174, 3067, 2979, 2042, 3194, 2871, 3218, 2445, 2662, 2391, 2599, 2804, 2831, 3076, 2698, 2633, 1962, 3222, 3175, 3068, 2980, 2043, 3195, 2872, 3219, 2446, 2663, 2392, 2600, 2805, 2832, 3077, 2699, 2634, 1963, 3223, 3176, 3069, 2981, 2044, 3196, 2873, 3220, 2447, 2664, 2393, 2601, 2806, 2833, 3078, 2700, 2635, 1964, 3224, 3177, 3070, 2982, 2045, 3197, 2874, 3221, 2448, 2665, 2394, 2602, 2807, 2834, 3079, 2701, 2636, 1965, 3225, 3178, 3071, 2983, 2046, 3198, 2875, 3222, 2449, 2666, 2395, 2603, 2808, 2835, 3080, 2702, 2637, 1966, 3226, 3179, 3072, 2984, 2047, 3199, 2876, 3223, 2450, 2667, 2396, 2604, 2809, 2836, 3081, 2703, 2638, 1967, 3227, 3180, 3073, 2985, 2048, 3200, 2877, 3224, 2451, 2668, 2397, 2605, 2810, 2837, 3082, 2704, 2639, 1968, 3228, 3181, 3074, 2986, 2049, 3201, 2878, 3225, 2452, 2669, 2398, 2606, 2811, 2838, 3083, 2705, 2640, 1969, 3229, 3182, 3075, 2987, 2050, 3202, 2879, 3226, 2453, 2670, 2399, 2607, 2812, 2839, 3084, 2706, 2641, 1970, 3230, 3183, 3076, 2988, 2051, 3203, 2880, 3227, 2454, 2671, 2400, 2608, 2813, 2840, 3085, 2707, 2642, 1971, 3231, 3184, 3077, 2989, 2052, 3204, 2521, 3228, 2455, 2672, 2401, 2609, 2814, 2841, 3086, 2708, 2643, 1972, 3232, 3185, 3078, 2990, 2053, 3205, 2522, 3229, 2456, 2673, 2402, 2610, 2815, 2842, 3087, 2709, 2644, 1973, 3233, 3186, 3079, 2991, 2054, 3206, 2523, 3230, 2457, 2674, 2403, 2611, 2816, 2843, 3088, 2710, 2645, 1974, 3234, 3187, 3080, 2992, 2055, 3207, 2524, 3231, 2458, 2675, 2404, 2612, 2817, 2844, 3089, 2711, 2646, 1975, 3235, 3188, 3081, 2993, 2056, 3208, 2525, 3232, 2459, 2676, 2405, 2613, 2818, 2845, 3090, 2712, 2647, 1976, 3236, 3189, 3082, 2994, 2057, 3209, 2526, 3233, 2460, 2677, 2406, 2614, 2819, 2846, 3091, 2713, 2648, 1977, 3237, 3190, 3083, 2995, 2058, 3210, 2527, 3234, 2461, 2678, 2407, 2615, 2820, 2847, 3092, 2714, 2649, 1978, 3238, 3191, 3084, 2996, 2059, 3211, 2528, 3235, 2462, 2679, 2408, 2616, 2821, 2848, 3093, 2715, 2650, 1979, 3239, 3192, 3085, 2997, 2060, 3212, 2529, 3236, 2463, 2680, 2409, 2617, 2822, 2849, 3094, 2716, 2651, 1980, 3240, 3193, 3086, 2998, 2061, 3213, 2530, 3237, 2464, 2681, 2410, 2618, 2823, 2850, 3095, 2717, 2652, 1981, 3149, 3194, 3087, 2999, 2062, 3214, 2531, 3238, 2465, 2682, 2411, 2619, 2824, 2851, 3096, 2718, 2653, 1982, 3150, 3195, 3088, 3000, 2063, 3215, 2532, 3239, 2466, 2683, 2412, 2620, 2825, 2852, 3097, 2719, 2654, 1983, 3151, 3196, 3089, 3001, 2064, 3216, 2533, 3240, 2467, 2684, 2413, 2621, 2826, 2853, 3098, 2720, 2655, 1984, 3152, 3197, 3090, 3002, 2065, 3217, 2534, 2881, 2468, 2685, 2414, 2622, 2827, 2854, 3099, 2721, 2656, 1985, 3153, 3198, 3091, 3003, 2066, 3218, 2535, 2882, 2469, 2686, 2415, 2623, 2828, 2855, 3100, 2722, 2657, 1986, 3154, 3199, 3092, 3004, 2067, 3219, 2536, 2883, 2470, 2687, 2416, 2624, 2829, 2856, 3101, 2723, 2658, 1987, 3155, 3200, 3093, 3005, 2068, 3220, 2537, 2884, 2471, 2688, 2417, 2625, 2830, 2857, 3102, 2724, 2659, 1988, 3156, 3201, 3094, 3006, 2069, 3221, 2538, 2885, 2472, 2689, 2418, 2626, 2831, 2858, 3103, 2725, 2660, 1989, 3157, 3202, 3095, 3007, 2070, 3222, 2539, 2886, 2473, 2690, 2419, 2627, 2832, 2859, 3104, 2726, 2661, 1990, 3158, 3203, 3096, 3008, 2071, 3223, 2540, 2887, 2474, 2691, 2420, 2628, 2833, 2860, 3105, 2727, 2662, 1991, 3159, 3204, 3097, 3009, 2072, 3224, 2541, 2888, 2475, 2692, 2421, 2629, 2834, 2861, 3106, 2728, 2663, 1992, 3160, 3205, 3098, 3010, 2073, 3225, 2542, 2889, 2476, 2693, 2422, 2630, 2835, 2862, 3107, 2729, 2664, 1993, 3161, 3206, 3099, 3011, 2074, 3226, 2543, 2890, 2477, 2694, 2423, 2631, 2836, 2863, 3108, 2730, 2665, 1994, 3162, 3207, 3100, 3012, 2075, 3227, 2544, 2891, 2478, 2695, 2424, 2632, 2837, 2864, 3109, 2731, 2666, 1995, 3163, 3208, 3101, 3013, 2076, 3228, 2545, 2892, 2479, 2696, 2425, 2633, 2838, 2865, 3110, 2732, 2667, 1996, 3164, 3209, 3102, 3014, 2077, 3229, 2546, 2893, 2480, 2697, 2426, 2634, 2839, 2866, 3111, 2733, 2668, 1997, 3165, 3210, 3103, 3015, 2078, 3230, 2547, 2894, 2481, 2698, 2427, 2635, 2840, 2867, 3112, 2734, 2669, 1998, 3166, 3211, 3104, 3016, 2079, 3231, 2548, 2895, 2482, 2699, 2428, 2636, 2841, 2868, 3113, 2735, 2670, 1999, 3167, 3212, 3105, 3017, 2080, 3232, 2549, 2896, 2483, 2700, 2429, 2637, 2842, 2869, 3114, 2736, 2671, 2000, 3168, 3213, 3106, 3018, 2081, 3233, 2550, 2897, 2484, 2701, 2430, 2638, 2843, 2870, 3115, 2737, 2672, 2001, 3169, 3214, 3107, 3019, 2082, 3234, 2551, 2898, 2485, 2702, 2431, 2639, 2844, 2871, 3116, 2738, 2673, 2002, 3170, 3215, 3108, 3020, 2083, 3235, 2552, 2899, 2486, 2703, 2432, 2640, 2845, 2872, 3117, 2739, 2674, 2003, 3171, 3216, 3109, 3021, 2084, 3236, 2553, 2900, 2487, 2704, 2433, 2641, 2846, 2873, 3118, 2740, 2675, 2004, 3172, 3217, 3110, 3022, 2085, 3237, 2554, 2901, 2488, 2705, 2434, 2642, 2847, 2874, 3119, 2741, 2676, 2005, 3173, 3218, 3111, 3023, 2086, 3238, 2555, 2902, 2489, 2706, 2435, 2643, 2848, 2875, 3120, 2742, 2677, 2006, 3174, 3219, 3112, 3024, 2087, 3239, 2556, 2903, 2490, 2707, 2436, 2644, 2849, 2876, 3121, 2743, 2678, 2007, 3175, 3220, 3113, 3025, 2088, 3240, 2557, 2904, 2491, 2708, 2437, 2645, 2850, 2877, 3122, 2744, 2679, 2008, 3176, 3221, 3114, 3026, 2089, 3183, 2558, 2905, 2492, 2709, 2438, 2646, 2851, 2878, 3123, 2745, 2680, 2009, 3177, 3222, 3115, 3027, 2090, 3184, 2559, 2906, 2493, 2710, 2439, 2647, 2852, 2879, 3124, 2746, 2681, 2010, 3178, 3223, 3116, 3028, 2091, 3185, 2560, 2907, 2494, 2711, 2440, 2648, 2853, 2880, 3125, 2747, 2682, 2011, 3179, 3224, 3117, 3029, 2092, 3186, 2561, 2908, 2495, 2712, 2441, 2649, 2854, 2521, 3126, 2748, 2683, 2012, 3180, 3225, 3118, 3030, 2093, 3187, 2562, 2909, 2496, 2713, 2442, 2650, 2855, 2522, 3127, 2749, 2684, 2013, 3181, 3226, 3119, 3031, 2094, 3188, 2563, 2910, 2497, 2714, 2443, 2651, 2856, 2523, 3128, 2750, 2685, 2014, 3182, 3227, 3120, 3032, 2095, 3189, 2564, 2911, 2498, 2715, 2444, 2652, 2857, 2524, 3129, 2751, 2686, 2015, 3183, 3228, 3121, 3033, 2096, 3190, 2565, 2912, 2499, 2716, 2445, 2653, 2858, 2525, 3130, 2752, 2687, 2016, 3184, 3229, 3122, 3034, 2097, 3191, 2566, 2913, 2500, 2717, 2446, 2654, 2859, 2526, 3131, 2753, 2688, 2017, 3185, 3230, 3123, 3035, 2098, 3192, 2567, 2914, 2501, 2718, 2447, 2655, 2860, 2527, 3132, 2754, 2689, 2018, 3186, 3231, 3124, 3036, 2099, 3193, 2568, 2915, 2502, 2719, 2448, 2656, 2861, 2528, 3133, 2755, 2690, 2019, 3187, 3232, 3125, 3037, 2100, 3194, 2569, 2916, 2503, 2720, 2449, 2657, 2862, 2529, 3134, 2756, 2691, 2020, 3188, 3233, 3126, 3038, 2101, 3195, 2570, 2917, 2504, 2721, 2450, 2658, 2863, 2530, 3135, 2757, 2692, 2021, 3189, 3234, 3127, 3039, 2102, 3196, 2571, 2918, 2505, 2722, 2451, 2659, 2864, 2531, 3136, 2758, 2693, 2022, 3190, 3235, 3128, 3040, 2103, 3197, 2572, 2919, 2506, 2723, 2452, 2660, 2865, 2532, 3137, 2759, 2694, 2023, 3191, 3236, 3129, 3041, 2104, 3198, 2573, 2920, 2507, 2724, 2453, 2661, 2866, 2533, 3138, 2760, 2695, 2024, 3192, 3237, 3130, 3042, 2105, 3199, 2574, 2921, 2508, 2725, 2454, 2662, 2867, 2534, 3139, 2761, 2696, 2025, 3193, 3238, 3131, 3043, 2106, 3200, 2575, 2922, 2509, 2726, 2455, 2663, 2868, 2535, 3140, 2762, 2697, 2026, 3194, 3239, 3132, 3044, 2107, 3201, 2576, 2923, 2510, 2727, 2456, 2664, 2869, 2536, 3141, 2763, 2698, 2027, 3195, 3240, 3133, 3045, 2108, 3202, 2577, 2924, 2511, 2728, 2457, 2665, 2870, 2537, 3142, 2764, 2699, 2028, 3196, 2978, 3134, 3046, 2109, 3203, 2578, 2925, 2512, 2729, 2458, 2666, 2871, 2538, 3143, 2765, 2700, 2029, 3197, 2979, 3135, 3047, 2110, 3204, 2579, 2926, 2513, 2730, 2459, 2667, 2872, 2539, 3144, 2766, 2701, 2030, 3198, 2980, 3136, 3048, 2111, 3205, 2580, 2927, 2514, 2731, 2460, 2668, 2873, 2540, 3145, 2767, 2702, 2031, 3199, 2981, 3137, 3049, 2112, 3206, 2581, 2928, 2515, 2732, 2461, 2669, 2874, 2541, 3146, 2768, 2703, 2032, 3200, 2982, 3138, 3050, 2113, 3207, 2582, 2929, 2516, 2733, 2462, 2670, 2875, 2542, 3147, 2769, 2704, 2033, 3201, 2983, 3139, 3051, 2114, 3208, 2583, 2930, 2517, 2734, 2463, 2671, 2876, 2543, 3148, 2770, 2705, 2034, 3202, 2984, 3140, 3052, 2115, 3209, 2584, 2931, 2518, 2735, 2464, 2672, 2877, 2544, 3149, 2771, 2706, 2035, 3203, 2985, 3141, 3053, 2116, 3210, 2585, 2932, 2519, 2736, 2465, 2673, 2878, 2545, 3150, 2772, 2707, 2036, 3204, 2986, 3142, 3054, 2117, 3211, 2586, 2933, 2520, 2737, 2466, 2674, 2879, 2546, 3151, 2773, 2708, 2037, 3205, 2987, 3143, 3055, 2118, 3212, 2587, 2934, 2244, 2738, 2467, 2675, 2880, 2547, 3152, 2774, 2709, 2038, 3206, 2988, 3144, 3056, 2119, 3213, 2588, 2935, 2245, 2739, 2468, 2676, 2521, 2548, 3153, 2775, 2710, 2039, 3207, 2989, 3145, 3057, 2120, 3214, 2589, 2936, 2246, 2740, 2469, 2677, 2522, 2549, 3154, 2776, 2711, 2040, 3208, 2990, 3146, 3058, 2121, 3215, 2590, 2937, 2247, 2741, 2470, 2678, 2523, 2550, 3155, 2777, 2712, 2041, 3209, 2991, 3147, 3059, 2122, 3216, 2591, 2938, 2248, 2742, 2471, 2679, 2524, 2551, 3156, 2778, 2713, 2042, 3210, 2992, 3148, 3060, 2123, 3217, 2592, 2939, 2249, 2743, 2472, 2680, 2525, 2552, 3157, 2779, 2714, 2043, 3211, 2993, 3149, 3061, 2124, 3218, 2593, 2940, 2250, 2744, 2473, 2681, 2526, 2553, 3158, 2780, 2715, 2044, 3212, 2994, 3150, 3062, 2125, 3219, 2594, 2941, 2251, 2745, 2474, 2682, 2527, 2554, 3159, 2781, 2716, 2045, 3213, 2995, 3151, 3063, 2126, 3220, 2595, 2942, 2252, 2746, 2475, 2683, 2528, 2555, 3160, 2782, 2717, 2046, 3214, 2996, 3152, 3064, 2127, 3221, 2596, 2943, 2253, 2747, 2476, 2684, 2529, 2556, 3161, 2783, 2718, 2047, 3215, 2997, 3153, 3065, 2128, 3222, 2597, 2944, 2254, 2748, 2477, 2685, 2530, 2557, 3162, 2784, 2719, 2048, 3216, 2998, 3154, 3066, 2129, 3223, 2598, 2945, 2255, 2749, 2478, 2686, 2531, 2558, 3163, 2785, 2720, 2049, 3217, 2999, 3155, 3067, 2130, 3224, 2599, 2946, 2256, 2750, 2479, 2687, 2532, 2559, 3164, 2786, 2721, 2050, 3218, 3000, 3156, 3068, 2131, 3225, 2600, 2947, 2257, 2751, 2480, 2688, 2533, 2560, 3165, 2787, 2722, 2051, 3219, 3001, 3157, 3069, 2132, 3226, 2601, 2948, 2258, 2752, 2481, 2689, 2534, 2561, 3166, 2788, 2723, 2052, 3220, 3002, 3158, 3070, 2133, 3227, 2602, 2949, 2259, 2753, 2482, 2690, 2535, 2562, 3167, 2789, 2724, 2053, 3221, 3003, 3159, 3071, 2134, 3228, 2603, 2950, 2260, 2754, 2483, 2691, 2536, 2563, 3168, 2790, 2725, 2054, 3222, 3004, 3160, 3072, 2135, 3229, 2604, 2951, 2261, 2755, 2484, 2692, 2537, 2564, 3169, 2791, 2726, 2055, 3223, 3005, 3161, 3073, 2136, 3230, 2605, 2952, 2262, 2756, 2485, 2693, 2538, 2565, 3170, 2792, 2727, 2056, 3224, 3006, 3162, 3074, 2137, 3231, 2606, 2953, 2263, 2757, 2486, 2694, 2539, 2566, 3171, 2793, 2728, 2057, 3225, 3007, 3163, 3075, 2138, 3232, 2607, 2954, 2264, 2758, 2487, 2695, 2540, 2567, 3172, 2794, 2729, 2058, 3226, 3008, 3164, 3076, 2139, 3233, 2608, 2955, 2265, 2759, 2488, 2696, 2541, 2568, 3173, 2795, 2730, 2059, 3227, 3009, 3165, 3077, 2140, 3234, 2609, 2956, 2266, 2760, 2489, 2697, 2542, 2569, 3174, 2796, 2731, 2060, 3228, 3010, 3166, 3078, 2141, 3235, 2610, 2957, 2267, 2761, 2490, 2698, 2543, 2570, 3175, 2797, 2732, 2061, 3229, 3011, 3167, 3079, 2142, 3236, 2611, 2958, 2268, 2762, 2491, 2699, 2544, 2571, 3176, 2798, 2733, 2062, 3230, 3012, 3168, 3080, 2143, 3237, 2612, 2959, 2269, 2763, 2492, 2700, 2545, 2572, 3177, 2799, 2734, 2063, 3231, 3013, 3169, 3081, 2144, 3238, 2613, 2960, 2270, 2764, 2493, 2701, 2546, 2573, 3178, 2800, 2735, 2064, 3232, 3014, 3170, 3082, 2145, 3239, 2614, 2961, 2271, 2765, 2494, 2702, 2547, 2574, 3179, 2801, 2736, 2065, 3233, 3015, 3171, 3083, 2146, 3240, 2615, 2962, 2272, 2766, 2495, 2703, 2548, 2575, 3180, 2802, 2737, 2066, 3234, 3016, 3172, 3084, 2147, 3135, 2616, 2963, 2273, 2767, 2496, 2704, 2549, 2576, 3181, 2803, 2738, 2067, 3235, 3017, 3173, 3085, 2148, 3136, 2617, 2964, 2274, 2768, 2497, 2705, 2550, 2577, 3182, 2804, 2739, 2068, 3236, 3018, 3174, 3086, 2149, 3137, 2618, 2965, 2275, 2769, 2498, 2706, 2551, 2578, 3183, 2805, 2740, 2069, 3237, 3019, 3175, 3087, 2150, 3138, 2619, 2966, 2276, 2770, 2499, 2707, 2552, 2579, 3184, 2806, 2741, 2070, 3238, 3020, 3176, 3088, 2151, 3139, 2620, 2967, 2277, 2771, 2500, 2708, 2553, 2580, 3185, 2807, 2742, 2071, 3239, 3021, 3177, 3089, 2152, 3140, 2621, 2968, 2278, 2772, 2501, 2709, 2554, 2581, 3186, 2808, 2743, 2072, 3240, 3022, 3178, 3090, 2153, 3141, 2622, 2969, 2279, 2773, 2502, 2710, 2555, 2582, 3187, 2809, 2744, 2073, 2973, 3023, 3179, 3091, 2154, 3142, 2623, 2970, 2280, 2774, 2503, 2711, 2556, 2583, 3188, 2810, 2745, 2074, 2974, 3024, 3180, 3092, 2155, 3143, 2624, 2971, 2281, 2775, 2504, 2712, 2557, 2584, 3189, 2811, 2746, 2075, 2975, 3025, 3181, 3093, 2156, 3144, 2625, 2972, 2282, 2776, 2505, 2713, 2558, 2585, 3190, 2812, 2747, 2076, 2976, 3026, 3182, 3094, 2157, 3145, 2626, 2973, 2283, 2777, 2506, 2714, 2559, 2586, 3191, 2813, 2748, 2077, 2977, 3027, 3183, 3095, 2158, 3146, 2627, 2974, 2284, 2778, 2507, 2715, 2560, 2587, 3192, 2814, 2749, 2078, 2978, 3028, 3184, 3096, 2159, 3147, 2628, 2975, 2285, 2779, 2508, 2716, 2561, 2588, 3193, 2815, 2750, 2079, 2979, 3029, 3185, 3097, 2160, 3148, 2629, 2976, 2286, 2780, 2509, 2717, 2562, 2589, 3194, 2816, 2751, 2080, 2980, 3030, 3186, 3098, 2005, 3149, 2630, 2977, 2287, 2781, 2510, 2718, 2563, 2590, 3195, 2817, 2752, 2081, 2981, 3031, 3187, 3099, 2006, 3150, 2631, 2978, 2288, 2782, 2511, 2719, 2564, 2591, 3196, 2818, 2753, 2082, 2982, 3032, 3188, 3100, 2007, 3151, 2632, 2979, 2289, 2783, 2512, 2720, 2565, 2592, 3197, 2819, 2754, 2083, 2983, 3033, 3189, 3101, 2008, 3152, 2633, 2980, 2290, 2784, 2513, 2721, 2566, 2593, 3198, 2820, 2755, 2084, 2984, 3034, 3190, 3102, 2009, 3153, 2634, 2981, 2291, 2785, 2514, 2722, 2567, 2594, 3199, 2821, 2756, 2085, 2985, 3035, 3191, 3103, 2010, 3154, 2635, 2982, 2292, 2786, 2515, 2723, 2568, 2595, 3200, 2822, 2757, 2086, 2986, 3036, 3192, 3104, 2011, 3155, 2636, 2983, 2293, 2787, 2516, 2724, 2569, 2596, 3201, 2823, 2758, 2087, 2987, 3037, 3193, 3105, 2012, 3156, 2637, 2984, 2294, 2788, 2517, 2725, 2570, 2597, 3202, 2824, 2759, 2088, 2988, 3038, 3194, 3106, 2013, 3157, 2638, 2985, 2295, 2789, 2518, 2726, 2571, 2598, 3203, 2825, 2760, 2089, 2989, 3039, 3195, 3107, 2014, 3158, 2639, 2986, 2296, 2790, 2519, 2727, 2572, 2599, 3204, 2826, 2761, 2090, 2990, 3040, 3196, 3108, 2015, 3159, 2640, 2987, 2297, 2791, 2520, 2728, 2573, 2600, 3205, 2827, 2762, 2091, 2991, 3041, 3197, 3109, 2016, 3160, 2641, 2988, 2298, 2792, 2161, 2729, 2574, 2601, 3206, 2828, 2763, 2092, 2992, 3042, 3198, 3110, 2017, 3161, 2642, 2989, 2299, 2793, 2162, 2730, 2575, 2602, 3207, 2829, 2764, 2093, 2993, 3043, 3199, 3111, 2018, 3162, 2643, 2990, 2300, 2794, 2163, 2731, 2576, 2603, 3208, 2830, 2765, 2094, 2994, 3044, 3200, 3112, 2019, 3163, 2644, 2991, 2301, 2795, 2164, 2732, 2577, 2604, 3209, 2831, 2766, 2095, 2995, 3045, 3201, 3113, 2020, 3164, 2645, 2992, 2302, 2796, 2165, 2733, 2578, 2605, 3210, 2832, 2767, 2096, 2996, 3046, 3202, 3114, 2021, 3165, 2646, 2993, 2303, 2797, 2166, 2734, 2579, 2606, 3211, 2833, 2768, 2097, 2997, 3047, 3203, 3115, 2022, 3166, 2647, 2994, 2304, 2798, 2167, 2735, 2580, 2607, 3212, 2834, 2769, 2098, 2998, 3048, 3204, 3116, 2023, 3167, 2648, 2995, 2305, 2799, 2168, 2736, 2581, 2608, 3213, 2835, 2770, 2099, 2999, 3049, 3205, 3117, 2024, 3168, 2649, 2996, 2306, 2800, 2169, 2737, 2582, 2609, 3214, 2836, 2771, 2100, 3000, 3050, 3206, 3118, 2025, 3169, 2650, 2997, 2307, 2801, 2170, 2738, 2583, 2610, 3215, 2837, 2772, 2101, 3001, 3051, 3207, 3119, 2026, 3170, 2651, 2998, 2308, 2802, 2171, 2739, 2584, 2611, 3216, 2838, 2773, 2102, 3002, 3052, 3208, 3120, 2027, 3171, 2652, 2999, 2309, 2803, 2172, 2740, 2585, 2612, 3217, 2839, 2774, 2103, 3003, 3053, 3209, 3121, 2028, 3172, 2653, 3000, 2310, 2804, 2173, 2741, 2586, 2613, 3218, 2840, 2775, 2104, 3004, 3054, 3210, 3122, 2029, 3173, 2654, 3001, 2311, 2805, 2174, 2742, 2587, 2614, 3219, 2841, 2776, 2105, 3005, 3055, 3211, 3123, 2030, 3174, 2655, 3002, 2312, 2806, 2175, 2743, 2588, 2615, 3220, 2842, 2777, 2106, 3006, 3056, 3212, 3124, 2031, 3175, 2656, 3003, 2313, 2807, 2176, 2744, 2589, 2616, 3221, 2843, 2778, 2107, 3007, 3057, 3213, 3125, 2032, 3176, 2657, 3004, 2314, 2808, 2177, 2745, 2590, 2617, 3222, 2844, 2779, 2108, 3008, 3058, 3214, 3126, 2033, 3177, 2658, 3005, 2315, 2809, 2178, 2746, 2591, 2618, 3223, 2845, 2780, 2109, 3009, 3059, 3215, 3127, 2034, 3178, 2659, 3006, 2316, 2810, 2179, 2747, 2592, 2619, 3224, 2846, 2781, 2110, 3010, 3060, 3216, 3128, 2035, 3179, 2660, 3007, 2317, 2811, 2180, 2748, 2593, 2620, 3225, 2847, 2782, 2111, 3011, 3061, 3217, 3129, 2036, 3180, 2661, 3008, 2318, 2812, 2181, 2749, 2594, 2621, 3226, 2848, 2783, 2112, 3012, 3062, 3218, 3130, 2037, 3181, 2662, 3009, 2319, 2813, 2182, 2750, 2595, 2622, 3227, 2849, 2784, 2113, 3013, 3063, 3219, 3131, 2038, 3182, 2663, 3010, 2320, 2814, 2183, 2751, 2596, 2623, 3228, 2850, 2785, 2114, 3014, 3064, 3220, 3132, 2039, 3183, 2664, 3011, 2321, 2815, 2184, 2752, 2597, 2624, 3229, 2851, 2786, 2115, 3015, 3065, 3221, 3133, 2040, 3184, 2665, 3012, 2322, 2816, 2185, 2753, 2598, 2625, 3230, 2852, 2787, 2116, 3016, 3066, 3222, 3134, 2041, 3185, 2666, 3013, 2323, 2817, 2186, 2754, 2599, 2626, 3231, 2853, 2788, 2117, 3017, 3067, 3223, 3135, 2042, 3186, 2667, 3014, 2324, 2818, 2187, 2755, 2600, 2627, 3232, 2854, 2789, 2118, 3018, 3068, 3224, 3136, 2043, 3187, 2668, 3015, 2325, 2819, 2188, 2756, 2601, 2628, 3233, 2855, 2790, 2119, 3019, 3069, 3225, 3137, 2044, 3188, 2669, 3016, 2326, 2820, 2189, 2757, 2602, 2629, 3234, 2856, 2791, 2120, 3020, 3070, 3226, 3138, 2045, 3189, 2670, 3017, 2327, 2821, 2190, 2758, 2603, 2630, 3235, 2857, 2792, 2121, 3021, 3071, 3227, 3139, 2046, 3190, 2671, 3018, 2328, 2822, 2191, 2759, 2604, 2631, 3236, 2858, 2793, 2122, 3022, 3072, 3228, 3140, 2047, 3191, 2672, 3019, 2329, 2823, 2192, 2760, 2605, 2632, 3237, 2859, 2794, 2123, 3023, 3073, 3229, 3141, 2048, 3192, 2673, 3020, 2330, 2824, 2193, 2761, 2606, 2633, 3238, 2860, 2795, 2124, 3024, 3074, 3230, 3142, 2049, 3193, 2674, 3021, 2331, 2825, 2194, 2762, 2607, 2634, 3239, 2861, 2796, 2125, 3025, 3075, 3231, 3143, 2050, 3194, 2675, 3022, 2332, 2826, 2195, 2763, 2608, 2635, 3240, 2862, 2797, 2126, 3026, 3076, 3232, 3144, 2051, 3195, 2676, 3023, 2333, 2827, 2196, 2764, 2609, 2636, 2881, 2863, 2798, 2127, 3027, 3077, 3233, 3145, 2052, 3196, 2677, 3024, 2334, 2828, 2197, 2765, 2610, 2637, 2882, 2864, 2799, 2128, 3028, 3078, 3234, 3146, 2053, 3197, 2678, 3025, 2335, 2829, 2198, 2766, 2611, 2638, 2883, 2865, 2800, 2129, 3029, 3079, 3235, 3147, 2054, 3198, 2679, 3026, 2336, 2830, 2199, 2767, 2612, 2639, 2884, 2866, 2801, 2130, 3030, 3080, 3236, 3148, 2055, 3199, 2680, 3027, 2337, 2831, 2200, 2768, 2613, 2640, 2885, 2867, 2802, 2131, 3031, 3081, 3237, 3149, 2056, 3200, 2681, 3028, 2338, 2832, 2201, 2769, 2614, 2641, 2886, 2868, 2803, 2132, 3032, 3082, 3238, 3150, 2057, 3201, 2682, 3029, 2339, 2833, 2202, 2770, 2615, 2642, 2887, 2869, 2804, 2133, 3033, 3083, 3239, 3151, 2058, 3202, 2683, 3030, 2340, 2834, 2203, 2771, 2616, 2643, 2888, 2870, 2805, 2134, 3034, 3084, 3240, 3152, 2059, 3203, 2684, 3031, 2341, 2835, 2204, 2772, 2617, 2644, 2889, 2871, 2806, 2135, 3035, 3085, 2881, 3153, 2060, 3204, 2685, 3032, 2342, 2836, 2205, 2773, 2618, 2645, 2890, 2872, 2807, 2136, 3036, 3086, 2882, 3154, 2061, 3205, 2686, 3033, 2343, 2837, 2206, 2774, 2619, 2646, 2891, 2873, 2808, 2137, 3037, 3087, 2883, 3155, 2062, 3206, 2687, 3034, 2344, 2838, 2207, 2775, 2620, 2647, 2892, 2874, 2809, 2138, 3038, 3088, 2884, 3156, 2063, 3207, 2688, 3035, 2345, 2839, 2208, 2776, 2621, 2648, 2893, 2875, 2810, 2139, 3039, 3089, 2885, 3157, 2064, 3208, 2689, 3036, 2346, 2840, 2209, 2777, 2622, 2649, 2894, 2876, 2811, 2140, 3040, 3090, 2886, 3158, 2065, 3209, 2690, 3037, 2347, 2841, 2210, 2778, 2623, 2650, 2895, 2877, 2812, 2141, 3041, 3091, 2887, 3159, 2066, 3210, 2691, 3038, 2348, 2842, 2211, 2779, 2624, 2651, 2896, 2878, 2813, 2142, 3042, 3092, 2888, 3160, 2067, 3211, 2692, 3039, 2349, 2843, 2212, 2780, 2625, 2652, 2897, 2879, 2814, 2143, 3043, 3093, 2889, 3161, 2068, 3212, 2693, 3040, 2350, 2844, 2213, 2781, 2626, 2653, 2898, 2880, 2815, 2144, 3044, 3094, 2890, 3162, 2069, 3213, 2694, 3041, 2351, 2845, 2214, 2782, 2627, 2654, 2899, 2521, 2816, 2145, 3045, 3095, 2891, 3163, 2070, 3214, 2695, 3042, 2352, 2846, 2215, 2783, 2628, 2655, 2900, 2522, 2817, 2146, 3046, 3096, 2892, 3164, 2071, 3215, 2696, 3043, 2353, 2847, 2216, 2784, 2629, 2656, 2901, 2523, 2818, 2147, 3047, 3097, 2893, 3165, 2072, 3216, 2697, 3044, 2354, 2848, 2217, 2785, 2630, 2657, 2902, 2524, 2819, 2148, 3048, 3098, 2894, 3166, 2073, 3217, 2698, 3045, 2355, 2849, 2218, 2786, 2631, 2658, 2903, 2525, 2820, 2149, 3049, 3099, 2895, 3167, 2074, 3218, 2699, 3046, 2356, 2850, 2219, 2787, 2632, 2659, 2904, 2526, 2821, 2150, 3050, 3100, 2896, 3168, 2075, 3219, 2700, 3047, 2357, 2851, 2220, 2788, 2633, 2660, 2905, 2527, 2822, 2151, 3051, 3101, 2897, 3169, 2076, 3220, 2701, 3048, 2358, 2852, 2221, 2789, 2634, 2661, 2906, 2528, 2823, 2152, 3052, 3102, 2898, 3170, 2077, 3221, 2702, 3049, 2359, 2853, 2222, 2790, 2635, 2662, 2907, 2529, 2824, 2153, 3053, 3103, 2899, 3171, 2078, 3222, 2703, 3050, 2360, 2854, 2223, 2791, 2636, 2663, 2908, 2530, 2825, 2154, 3054, 3104, 2900, 3172, 2079, 3223, 2704, 3051, 2361, 2855, 2224, 2792, 2637, 2664, 2909, 2531, 2826, 2155, 3055, 3105, 2901, 3173, 2080, 3224, 2705, 3052, 2362, 2856, 2225, 2793, 2638, 2665, 2910, 2532, 2827, 2156, 3056, 3106, 2902, 3174, 2081, 3225, 2706, 3053, 2363, 2857, 2226, 2794, 2639, 2666, 2911, 2533, 2828, 2157, 3057, 3107, 2903, 3175, 2082, 3226, 2707, 3054, 2364, 2858, 2227, 2795, 2640, 2667, 2912, 2534, 2829, 2158, 3058, 3108, 2904, 3176, 2083, 3227, 2708, 3055, 2365, 2859, 2228, 2796, 2641, 2668, 2913, 2535, 2830, 2159, 3059, 3109, 2905, 3177, 2084, 3228, 2709, 3056, 2366, 2860, 2229, 2797, 2642, 2669, 2914, 2536, 2831, 2160, 3060, 3110, 2906, 3178, 2085, 3229, 2710, 3057, 2367, 2861, 2230, 2798, 2643, 2670, 2915, 2537, 2832, 1801, 3061, 3111, 2907, 3179, 2086, 3230, 2711, 3058, 2368, 2862, 2231, 2799, 2644, 2671, 2916, 2538, 2833, 1802, 3062, 3112, 2908, 3180, 2087, 3231, 2712, 3059, 2369, 2863, 2232, 2800, 2645, 2672, 2917, 2539, 2834, 1803, 3063, 3113, 2909, 3181, 2088, 3232, 2713, 3060, 2370, 2864, 2233, 2801, 2646, 2673, 2918, 2540, 2835, 1804, 3064, 3114, 2910, 3182, 2089, 3233, 2714, 3061, 2371, 2865, 2234, 2802, 2647, 2674, 2919, 2541, 2836, 1805, 3065, 3115, 2911, 3183, 2090, 3234, 2715, 3062, 2372, 2866, 2235, 2803, 2648, 2675, 2920, 2542, 2837, 1806, 3066, 3116, 2912, 3184, 2091, 3235, 2716, 3063, 2373, 2867, 2236, 2804, 2649, 2676, 2921, 2543, 2838, 1807, 3067, 3117, 2913, 3185, 2092, 3236, 2717, 3064, 2374, 2868, 2237, 2805, 2650, 2677, 2922, 2544, 2839, 1808, 3068, 3118, 2914, 3186, 2093, 3237, 2718, 3065, 2375, 2869, 2238, 2806, 2651, 2678, 2923, 2545, 2840, 1809, 3069, 3119, 2915, 3187, 2094, 3238, 2719, 3066, 2376, 2870, 2239, 2807, 2652, 2679, 2924, 2546, 2841, 1810, 3070, 3120, 2916, 3188, 2095, 3239, 2720, 3067, 2377, 2871, 2240, 2808, 2653, 2680, 2925, 2547, 2842, 1811, 3071, 3121, 2917, 3189, 2096, 3240, 2721, 3068, 2378, 2872, 2241, 2809, 2654, 2681, 2926, 2548, 2843, 1812, 3072, 3122, 2918, 3190, 2097, 3045, 2722, 3069, 2379, 2873, 2242, 2810, 2655, 2682, 2927, 2549, 2844, 1813, 3073, 3123, 2919, 3191, 2098, 3046, 2723, 3070, 2380, 2874, 2243, 2811, 2656, 2683, 2928, 2550, 2845, 1814, 3074, 3124, 2920, 3192, 2099, 3047, 2724, 3071, 2381, 2875, 2244, 2812, 2657, 2684, 2929, 2551, 2846, 1815, 3075, 3125, 2921, 3193, 2100, 3048, 2725, 3072, 2382, 2876, 2245, 2813, 2658, 2685, 2930, 2552, 2847, 1816, 3076, 3126, 2922, 3194, 2101, 3049, 2726, 3073, 2383, 2877, 2246, 2814, 2659, 2686, 2931, 2553, 2848, 1817, 3077, 3127, 2923, 3195, 2102, 3050, 2727, 3074, 2384, 2878, 2247, 2815, 2660, 2687, 2932, 2554, 2849, 1818, 3078, 3128, 2924, 3196, 2103, 3051, 2728, 3075, 2385, 2879, 2248, 2816, 2661, 2688, 2933, 2555, 2850, 1819, 3079, 3129, 2925, 3197, 2104, 3052, 2729, 3076, 2386, 2880, 2249, 2817, 2662, 2689, 2934, 2556, 2851, 1820, 3080, 3130, 2926, 3198, 2105, 3053, 2730, 3077, 2387, 2839, 2250, 2818, 2663, 2690, 2935, 2557, 2852, 1821, 3081, 3131, 2927, 3199, 2106, 3054, 2731, 3078, 2388, 2840, 2251, 2819, 2664, 2691, 2936, 2558, 2853, 1822, 3082, 3132, 2928, 3200, 2107, 3055, 2732, 3079, 2389, 2841, 2252, 2820, 2665, 2692, 2937, 2559, 2854, 1823, 3083, 3133, 2929, 3201, 2108, 3056, 2733, 3080, 2390, 2842, 2253, 2821, 2666, 2693, 2938, 2560, 2855, 1824, 3084, 3134, 2930, 3202, 2109, 3057, 2734, 3081, 2391, 2843, 2254, 2822, 2667, 2694, 2939, 2561, 2856, 1825, 3085, 3135, 2931, 3203, 2110, 3058, 2735, 3082, 2392, 2844, 2255, 2823, 2668, 2695, 2940, 2562, 2857, 1826, 3086, 3136, 2932, 3204, 2111, 3059, 2736, 3083, 2393, 2845, 2256, 2824, 2669, 2696, 2941, 2563, 2858, 1827, 3087, 3137, 2933, 3205, 2112, 3060, 2737, 3084, 2394, 2846, 2257, 2825, 2670, 2697, 2942, 2564, 2859, 1828, 3088, 3138, 2934, 3206, 2113, 3061, 2738, 3085, 2395, 2847, 2258, 2826, 2671, 2698, 2943, 2565, 2860, 1829, 3089, 3139, 2935, 3207, 2114, 3062, 2739, 3086, 2396, 2848, 2259, 2827, 2672, 2699, 2944, 2566, 2861, 1830, 3090, 3140, 2936, 3208, 2115, 3063, 2740, 3087, 2397, 2849, 2260, 2828, 2673, 2700, 2945, 2567, 2862, 1831, 3091, 3141, 2937, 3209, 2116, 3064, 2741, 3088, 2398, 2850, 2261, 2829, 2674, 2701, 2946, 2568, 2863, 1832, 3092, 3142, 2938, 3210, 2117, 3065, 2742, 3089, 2399, 2851, 2262, 2830, 2675, 2702, 2947, 2569, 2864, 1833, 3093, 3143, 2939, 3211, 2118, 3066, 2743, 3090, 2400, 2852, 2263, 2831, 2676, 2703, 2948, 2570, 2865, 1834, 3094, 3144, 2940, 3212, 2119, 3067, 2744, 3091, 2401, 2853, 2264, 2832, 2677, 2704, 2949, 2571, 2866, 1835, 3095, 3145, 2941, 3213, 2120, 3068, 2745, 3092, 2402, 2854, 2265, 2833, 2678, 2705, 2950, 2572, 2867, 1836, 3096, 3146, 2942, 3214, 2121, 3069, 2746, 3093, 2403, 2855, 2266, 2834, 2679, 2706, 2951, 2573, 2868, 1837, 3097, 3147, 2943, 3215, 2122, 3070, 2747, 3094, 2404, 2856, 2267, 2835, 2680, 2707, 2952, 2574, 2869, 1838, 3098, 3148, 2944, 3216, 2123, 3071, 2748, 3095, 2405, 2857, 2268, 2836, 2681, 2708, 2953, 2575, 2870, 1839, 3099, 3149, 2945, 3217, 2124, 3072, 2749, 3096, 2406, 2858, 2269, 2837, 2682, 2709, 2954, 2576, 2871, 1840, 3100, 3150, 2946, 3218, 2125, 3073, 2750, 3097, 2407, 2859, 2270, 2838, 2683, 2710, 2955, 2577, 2872, 1841, 3101, 3151, 2947, 3219, 2126, 3074, 2751, 3098, 2408, 2860, 2271, 2839, 2684, 2711, 2956, 2578, 2873, 1842, 3102, 3152, 2948, 3220, 2127, 3075, 2752, 3099, 2409, 2861, 2272, 2840, 2685, 2712, 2957, 2579, 2874, 1843, 3103, 3153, 2949, 3221, 2128, 3076, 2753, 3100, 2410, 2862, 2273, 2841, 2686, 2713, 2958, 2580, 2875, 1844, 3104, 3154, 2950, 3222, 2129, 3077, 2754, 3101, 2411, 2863, 2274, 2842, 2687, 2714, 2959, 2581, 2876, 1845, 3105, 3155, 2951, 3223, 2130, 3078, 2755, 3102, 2412, 2864, 2275, 2843, 2688, 2715, 2960, 2582, 2877, 1846, 3106, 3156, 2952, 3224, 2131, 3079, 2756, 3103, 2413, 2865, 2276, 2844, 2689, 2716, 2961, 2583, 2878, 1847, 3107, 3157, 2953, 3225, 2132, 3080, 2757, 3104, 2414, 2866, 2277, 2845, 2690, 2717, 2962, 2584, 2879, 1848, 3108, 3158, 2954, 3226, 2133, 3081, 2758, 3105, 2415, 2867, 2278, 2846, 2691, 2718, 2963, 2585, 2880, 1849, 3109, 3159, 2955, 3227, 2134, 3082, 2759, 3106, 2416, 2868, 2279, 2847, 2692, 2719, 2964, 2586, 2521, 1850, 3110, 3160, 2956, 3228, 2135, 3083, 2760, 3107, 2417, 2869, 2280, 2848, 2693, 2720, 2965, 2587, 2522, 1851, 3111, 3161, 2957, 3229, 2136, 3084, 2761, 3108, 2418, 2870, 2281, 2849, 2694, 2721, 2966, 2588, 2523, 1852, 3112, 3162, 2958, 3230, 2137, 3085, 2762, 3109, 2419, 2871, 2282, 2850, 2695, 2722, 2967, 2589, 2524, 1853, 3113, 3163, 2959, 3231, 2138, 3086, 2763, 3110, 2420, 2872, 2283, 2851, 2696, 2723, 2968, 2590, 2525, 1854, 3114, 3164, 2960, 3232, 2139, 3087, 2764, 3111, 2421, 2873, 2284, 2852, 2697, 2724, 2969, 2591, 2526, 1855, 3115, 3165, 2961, 3233, 2140, 3088, 2765, 3112, 2422, 2874, 2285, 2853, 2698, 2725, 2970, 2592, 2527, 1856, 3116, 3166, 2962, 3234, 2141, 3089, 2766, 3113, 2423, 2875, 2286, 2854, 2699, 2726, 2971, 2593, 2528, 1857, 3117, 3167, 2963, 3235, 2142, 3090, 2767, 3114, 2424, 2876, 2287, 2855, 2700, 2727, 2972, 2594, 2529, 1858, 3118, 3168, 2964, 3236, 2143, 3091, 2768, 3115, 2425, 2877, 2288, 2856, 2701, 2728, 2973, 2595, 2530, 1859, 3119, 3169, 2965, 3237, 2144, 3092, 2769, 3116, 2426, 2878, 2289, 2857, 2702, 2729, 2974, 2596, 2531, 1860, 3120, 3170, 2966, 3238, 2145, 3093, 2770, 3117, 2427, 2879, 2290, 2858, 2703, 2730, 2975, 2597, 2532, 1861, 3121, 3171, 2967, 3239, 2146, 3094, 2771, 3118, 2428, 2880, 2291, 2859, 2704, 2731, 2976, 2598, 2533, 1862, 3122, 3172, 2968, 3240, 2147, 3095, 2772, 3119, 2429, 2563, 2292, 2860, 2705, 2732, 2977, 2599, 2534, 1863, 3123, 3173, 2969, 3146, 2148, 3096, 2773, 3120, 2430, 2564, 2293, 2861, 2706, 2733, 2978, 2600, 2535, 1864, 3124, 3174, 2970, 3147, 2149, 3097, 2774, 3121, 2431, 2565, 2294, 2862, 2707, 2734, 2979, 2601, 2536, 1865, 3125, 3175, 2971, 3148, 2150, 3098, 2775, 3122, 2432, 2566, 2295, 2863, 2708, 2735, 2980, 2602, 2537, 1866, 3126, 3176, 2972, 3149, 2151, 3099, 2776, 3123, 2433, 2567, 2296, 2864, 2709, 2736, 2981, 2603, 2538, 1867, 3127, 3177, 2973, 3150, 2152, 3100, 2777, 3124, 2434, 2568, 2297, 2865, 2710, 2737, 2982, 2604, 2539, 1868, 3128, 3178, 2974, 3151, 2153, 3101, 2778, 3125, 2435, 2569, 2298, 2866, 2711, 2738, 2983, 2605, 2540, 1869, 3129, 3179, 2975, 3152, 2154, 3102, 2779, 3126, 2436, 2570, 2299, 2867, 2712, 2739, 2984, 2606, 2541, 1870, 3130, 3180, 2976, 3153, 2155, 3103, 2780, 3127, 2437, 2571, 2300, 2868, 2713, 2740, 2985, 2607, 2542, 1871, 3131, 3181, 2977, 3154, 2156, 3104, 2781, 3128, 2438, 2572, 2301, 2869, 2714, 2741, 2986, 2608, 2543, 1872, 3132, 3182, 2978, 3155, 2157, 3105, 2782, 3129, 2439, 2573, 2302, 2870, 2715, 2742, 2987, 2609, 2544, 1873, 3133, 3183, 2979, 3156, 2158, 3106, 2783, 3130, 2440, 2574, 2303, 2871, 2716, 2743, 2988, 2610, 2545, 1874, 3134, 3184, 2980, 3157, 2159, 3107, 2784, 3131, 2441, 2575, 2304, 2872, 2717, 2744, 2989, 2611, 2546, 1875, 3135, 3185, 2981, 3158, 2160, 3108, 2785, 3132, 2442, 2576, 2305, 2873, 2718, 2745, 2990, 2612, 2547, 1876, 3136, 3186, 2982, 3159, 1957, 3109, 2786, 3133, 2443, 2577, 2306, 2874, 2719, 2746, 2991, 2613, 2548, 1877, 3137, 3187, 2983, 3160, 1958, 3110, 2787, 3134, 2444, 2578, 2307, 2875, 2720, 2747, 2992, 2614, 2549, 1878, 3138, 3188, 2984, 3161, 1959, 3111, 2788, 3135, 2445, 2579, 2308, 2876, 2721, 2748, 2993, 2615, 2550, 1879, 3139, 3189, 2985, 3162, 1960, 3112, 2789, 3136, 2446, 2580, 2309, 2877, 2722, 2749, 2994, 2616, 2551, 1880, 3140, 3190, 2986, 3163, 1961, 3113, 2790, 3137, 2447, 2581, 2310, 2878, 2723, 2750, 2995, 2617, 2552, 1881, 3141, 3191, 2987, 3164, 1962, 3114, 2791, 3138, 2448, 2582, 2311, 2879, 2724, 2751, 2996, 2618, 2553, 1882, 3142, 3192, 2988, 3165, 1963, 3115, 2792, 3139, 2449, 2583, 2312, 2880, 2725, 2752, 2997, 2619, 2554, 1883, 3143, 3193, 2989, 3166, 1964, 3116, 2793, 3140, 2450, 2584, 2313, 2521, 2726, 2753, 2998, 2620, 2555, 1884, 3144, 3194, 2990, 3167, 1965, 3117, 2794, 3141, 2451, 2585, 2314, 2522, 2727, 2754, 2999, 2621, 2556, 1885, 3145, 3195, 2991, 3168, 1966, 3118, 2795, 3142, 2452, 2586, 2315, 2523, 2728, 2755, 3000, 2622, 2557, 1886, 3146, 3196, 2992, 3169, 1967, 3119, 2796, 3143, 2453, 2587, 2316, 2524, 2729, 2756, 3001, 2623, 2558, 1887, 3147, 3197, 2993, 3170, 1968, 3120, 2797, 3144, 2454, 2588, 2317, 2525, 2730, 2757, 3002, 2624, 2559, 1888, 3148, 3198, 2994, 3171, 1969, 3121, 2798, 3145, 2455, 2589, 2318, 2526, 2731, 2758, 3003, 2625, 2560, 1889, 3149, 3199, 2995, 3172, 1970, 3122, 2799, 3146, 2456, 2590, 2319, 2527, 2732, 2759, 3004, 2626, 2561, 1890, 3150, 3200, 2996, 3173, 1971, 3123, 2800, 3147, 2457, 2591, 2320, 2528, 2733, 2760, 3005, 2627, 2562, 1891, 3151, 3201, 2997, 3174, 1972, 3124, 2801, 3148, 2458, 2592, 2321, 2529, 2734, 2761, 3006, 2628, 2563, 1892, 3152, 3202, 2998, 3175, 1973, 3125, 2802, 3149, 2459, 2593, 2322, 2530, 2735, 2762, 3007, 2629, 2564, 1893, 3153, 3203, 2999, 3176, 1974, 3126, 2803, 3150, 2460, 2594, 2323, 2531, 2736, 2763, 3008, 2630, 2565, 1894, 3154, 3204, 3000, 3177, 1975, 3127, 2804, 3151, 2461, 2595, 2324, 2532, 2737, 2764, 3009, 2631, 2566, 1895, 3155, 3205, 3001, 3178, 1976, 3128, 2805, 3152, 2462, 2596, 2325, 2533, 2738, 2765, 3010, 2632, 2567, 1896, 3156, 3206, 3002, 3179, 1977, 3129, 2806, 3153, 2463, 2597, 2326, 2534, 2739, 2766, 3011, 2633, 2568, 1897, 3157, 3207, 3003, 3180, 1978, 3130, 2807, 3154, 2464, 2598, 2327, 2535, 2740, 2767, 3012, 2634, 2569, 1898, 3158, 3208, 3004, 3181, 1979, 3131, 2808, 3155, 2465, 2599, 2328, 2536, 2741, 2768, 3013, 2635, 2570, 1899, 3159, 3209, 3005, 3182, 1980, 3132, 2809, 3156, 2466, 2600, 2329, 2537, 2742, 2769, 3014, 2636, 2571, 1900, 3160, 3210, 3006, 3183, 1981, 3133, 2810, 3157, 2467, 2601, 2330, 2538, 2743, 2770, 3015, 2637, 2572, 1901, 3161, 3211, 3007, 3184, 1982, 3134, 2811, 3158, 2468, 2602, 2331, 2539, 2744, 2771, 3016, 2638, 2573, 1902, 3162, 3212, 3008, 3185, 1983, 3135, 2812, 3159, 2469, 2603, 2332, 2540, 2745, 2772, 3017, 2639, 2574, 1903, 3163, 3213, 3009, 3186, 1984, 3136, 2813, 3160, 2470, 2604, 2333, 2541, 2746, 2773, 3018, 2640, 2575, 1904, 3164, 3214, 3010, 3187, 1985, 3137, 2814, 3161, 2471, 2605, 2334, 2542, 2747, 2774, 3019, 2641, 2576, 1905, 3165, 3215, 3011, 3188, 1986, 3138, 2815, 3162, 2472, 2606, 2335, 2543, 2748, 2775, 3020, 2642, 2577, 1906, 3166, 3216, 3012, 3189, 1987, 3139, 2816, 3163, 2473, 2607, 2336, 2544, 2749, 2776, 3021, 2643, 2578, 1907, 3167, 3217, 3013, 3190, 1988, 3140, 2817, 3164, 2474, 2608, 2337, 2545, 2750, 2777, 3022, 2644, 2579, 1908, 3168, 3218, 3014, 3191, 1989, 3141, 2818, 3165, 2475, 2609, 2338, 2546, 2751, 2778, 3023, 2645, 2580, 1909, 3169, 3241, 3481, 3961, 3880, 4681, 5041, 5401, 3454, 5883, 4709, 5654, 4461, 3885, 4623, 4705, 6292, 5067, 4116, 3242, 3482, 3962, 3881, 4682, 5042, 5402, 3455, 5884, 4710, 5655, 4462, 3886, 4624, 4706, 6293, 5068, 4117, 3243, 3483, 3963, 3882, 4683, 5043, 5403, 3456, 5885, 4711, 5656, 4463, 3887, 4625, 4707, 6294, 5069, 4118, 3244, 3484, 3964, 3883, 4684, 5044, 5404, 3457, 5886, 4712, 5657, 4464, 3888, 4626, 4708, 6295, 5070, 4119, 3245, 3485, 3965, 3884, 4685, 5045, 5405, 3458, 5887, 4713, 5658, 4465, 3889, 4627, 4709, 6296, 5071, 4120, 3246, 3486, 3966, 3885, 4686, 5046, 5406, 3459, 5888, 4714, 5659, 4466, 3890, 4628, 4710, 6297, 5072, 4121, 3247, 3487, 3967, 3886, 4687, 5047, 5407, 3460, 5889, 4715, 5660, 4467, 3891, 4629, 4711, 6298, 5073, 4122, 3248, 3488, 3968, 3887, 4688, 5048, 5408, 3461, 5890, 4716, 5661, 4468, 3892, 4630, 4712, 6299, 5074, 4123, 3249, 3489, 3969, 3888, 4689, 5049, 5409, 3462, 5891, 4717, 5662, 4469, 3893, 4631, 4713, 6300, 5075, 4124, 3250, 3490, 3970, 3889, 4690, 5050, 5410, 3463, 5892, 4718, 5663, 4470, 3894, 4632, 4714, 6301, 5076, 4125, 3251, 3491, 3971, 3890, 4691, 5051, 5411, 3464, 5893, 4719, 5664, 4471, 3895, 4633, 4715, 6302, 5077, 4126, 3252, 3492, 3972, 3891, 4692, 5052, 5412, 3465, 5894, 4720, 5665, 4472, 3896, 4634, 4716, 6303, 5078, 4127, 3253, 3493, 3973, 3892, 4693, 5053, 5413, 3466, 5895, 4721, 5666, 4473, 3897, 4635, 4717, 6304, 5079, 4128, 3254, 3494, 3974, 3893, 4694, 5054, 5414, 3467, 5896, 4722, 5667, 4474, 3898, 4636, 4718, 6305, 5080, 4129, 3255, 3495, 3975, 3894, 4695, 5055, 5415, 3468, 5897, 4723, 5668, 4475, 3899, 4637, 4719, 6306, 5081, 4130, 3256, 3496, 3976, 3895, 4696, 5056, 5416, 3469, 5898, 4724, 5669, 4476, 3900, 4638, 4720, 6307, 5082, 4131, 3257, 3497, 3977, 3896, 4697, 5057, 5417, 3470, 5899, 4725, 5670, 4477, 3901, 4639, 4721, 6308, 5083, 4132, 3258, 3498, 3978, 3897, 4698, 5058, 5418, 3471, 5900, 4726, 5671, 4478, 3902, 4640, 4722, 6309, 5084, 4133, 3259, 3499, 3979, 3898, 4699, 5059, 5419, 3472, 5901, 4727, 5672, 4479, 3903, 4641, 4723, 6310, 5085, 4134, 3260, 3500, 3980, 3899, 4700, 5060, 5420, 3473, 5902, 4728, 5673, 4480, 3904, 4642, 4724, 6311, 5086, 4135, 3261, 3501, 3981, 3900, 4701, 5061, 5421, 3474, 5903, 4729, 5674, 4481, 3905, 4643, 4725, 6312, 5087, 4136, 3262, 3502, 3982, 3901, 4702, 5062, 5422, 3475, 5904, 4730, 5675, 4482, 3906, 4644, 4726, 6313, 5088, 4137, 3263, 3503, 3983, 3902, 4703, 5063, 5423, 3476, 5905, 4731, 5676, 4483, 3907, 4645, 4727, 6314, 5089, 4138, 3264, 3504, 3984, 3903, 4704, 5064, 5424, 3477, 5906, 4732, 5677, 4484, 3908, 4646, 4728, 6315, 5090, 4139, 3265, 3505, 3985, 3904, 4705, 5065, 5425, 3478, 5907, 4733, 5678, 4485, 3909, 4647, 4729, 6316, 5091, 4140, 3266, 3506, 3986, 3905, 4706, 5066, 5426, 3479, 5908, 4734, 5679, 4486, 3910, 4648, 4730, 6317, 5092, 4141, 3267, 3507, 3987, 3906, 4707, 5067, 5427, 3480, 5909, 4735, 5680, 4487, 3911, 4649, 4731, 6318, 5093, 4142, 3268, 3508, 3988, 3907, 4708, 5068, 5428, 3481, 5910, 4736, 5681, 4488, 3912, 4650, 4732, 6319, 5094, 4143, 3269, 3509, 3989, 3908, 4709, 5069, 5429, 3482, 5911, 4737, 5682, 4489, 3913, 4651, 4733, 6320, 5095, 4144, 3270, 3510, 3990, 3909, 4710, 5070, 5430, 3483, 5912, 4738, 5683, 4490, 3914, 4652, 4734, 6321, 5096, 4145, 3271, 3511, 3991, 3910, 4711, 5071, 5431, 3484, 5913, 4739, 5684, 4491, 3915, 4653, 4735, 6322, 5097, 4146, 3272, 3512, 3992, 3911, 4712, 5072, 5432, 3485, 5914, 4740, 5685, 4492, 3916, 4654, 4736, 6323, 5098, 4147, 3273, 3513, 3993, 3912, 4713, 5073, 5433, 3486, 5915, 4741, 5686, 4493, 3917, 4655, 4737, 6324, 5099, 4148, 3274, 3514, 3994, 3913, 4714, 5074, 5434, 3487, 5916, 4742, 5687, 4494, 3918, 4656, 4738, 6325, 5100, 4149, 3275, 3515, 3995, 3914, 4715, 5075, 5435, 3488, 5917, 4743, 5688, 4495, 3919, 4657, 4739, 6326, 5101, 4150, 3276, 3516, 3996, 3915, 4716, 5076, 5436, 3489, 5918, 4744, 5689, 4496, 3920, 4658, 4740, 6327, 5102, 4151, 3277, 3517, 3997, 3916, 4717, 5077, 5437, 3490, 5919, 4745, 5690, 4497, 3921, 4659, 4741, 6328, 5103, 4152, 3278, 3518, 3998, 3917, 4718, 5078, 5438, 3491, 5920, 4746, 5691, 4498, 3922, 4660, 4742, 6329, 5104, 4153, 3279, 3519, 3999, 3918, 4719, 5079, 5439, 3492, 5921, 4747, 5692, 4499, 3923, 4661, 4743, 6330, 5105, 4154, 3280, 3520, 4000, 3919, 4720, 5080, 5440, 3493, 5922, 4748, 5693, 4500, 3924, 4662, 4744, 6331, 5106, 4155, 3281, 3521, 4001, 3920, 4721, 5081, 5441, 3494, 5923, 4749, 5694, 4501, 3925, 4663, 4745, 6332, 5107, 4156, 3282, 3522, 4002, 3921, 4722, 5082, 5442, 3495, 5924, 4750, 5695, 4502, 3926, 4664, 4746, 6333, 5108, 4157, 3283, 3523, 4003, 3922, 4723, 5083, 5443, 3496, 5925, 4751, 5696, 4503, 3927, 4665, 4747, 6334, 5109, 4158, 3284, 3524, 4004, 3923, 4724, 5084, 5444, 3497, 5926, 4752, 5697, 4504, 3928, 4666, 4748, 6335, 5110, 4159, 3285, 3525, 4005, 3924, 4725, 5085, 5445, 3498, 5927, 4753, 5698, 4505, 3929, 4667, 4749, 6336, 5111, 4160, 3286, 3526, 4006, 3925, 4726, 5086, 5446, 3499, 5928, 4754, 5699, 4506, 3930, 4668, 4750, 6337, 5112, 4161, 3287, 3527, 4007, 3926, 4727, 5087, 5447, 3500, 5929, 4755, 5700, 4507, 3931, 4669, 4751, 6338, 5113, 4162, 3288, 3528, 4008, 3927, 4728, 5088, 5448, 3501, 5930, 4756, 5701, 4508, 3932, 4670, 4752, 6339, 5114, 4163, 3289, 3529, 4009, 3928, 4729, 5089, 5449, 3502, 5931, 4757, 5702, 4509, 3933, 4671, 4753, 6340, 5115, 4164, 3290, 3530, 4010, 3929, 4730, 5090, 5450, 3503, 5932, 4758, 5703, 4510, 3934, 4672, 4754, 6341, 5116, 4165, 3291, 3531, 4011, 3930, 4731, 5091, 5451, 3504, 5933, 4759, 5704, 4511, 3935, 4673, 4755, 6342, 5117, 4166, 3292, 3532, 4012, 3931, 4732, 5092, 5452, 3505, 5934, 4760, 5705, 4512, 3936, 4674, 4756, 6343, 5118, 4167, 3293, 3533, 4013, 3932, 4733, 5093, 5453, 3506, 5935, 4761, 5706, 4513, 3937, 4675, 4757, 6344, 5119, 4168, 3294, 3534, 4014, 3933, 4734, 5094, 5454, 3507, 5936, 4762, 5707, 4514, 3938, 4676, 4758, 6345, 5120, 4169, 3295, 3535, 4015, 3934, 4735, 5095, 5455, 3508, 5937, 4763, 5708, 4515, 3939, 4677, 4759, 6346, 5121, 4170, 3296, 3536, 4016, 3935, 4736, 5096, 5456, 3509, 5938, 4764, 5709, 4516, 3940, 4678, 4760, 6347, 5122, 4171, 3297, 3537, 4017, 3936, 4737, 5097, 5457, 3510, 5939, 4765, 5710, 4517, 3941, 4679, 4761, 6348, 5123, 4172, 3298, 3538, 4018, 3937, 4738, 5098, 5458, 3511, 5940, 4766, 5711, 4518, 3942, 4680, 4762, 6349, 5124, 4173, 3299, 3539, 4019, 3938, 4739, 5099, 5459, 3512, 5941, 4767, 5712, 4519, 3943, 4321, 4763, 6350, 5125, 4174, 3300, 3540, 4020, 3939, 4740, 5100, 5460, 3513, 5942, 4768, 5713, 4520, 3944, 4322, 4764, 6351, 5126, 4175, 3301, 3541, 4021, 3940, 4741, 5101, 5461, 3514, 5943, 4769, 5714, 4521, 3945, 4323, 4765, 6352, 5127, 4176, 3302, 3542, 4022, 3941, 4742, 5102, 5462, 3515, 5944, 4770, 5715, 4522, 3946, 4324, 4766, 6353, 5128, 4177, 3303, 3543, 4023, 3942, 4743, 5103, 5463, 3516, 5945, 4771, 5716, 4523, 3947, 4325, 4767, 6354, 5129, 4178, 3304, 3544, 4024, 3943, 4744, 5104, 5464, 3517, 5946, 4772, 5717, 4524, 3948, 4326, 4768, 6355, 5130, 4179, 3305, 3545, 4025, 3944, 4745, 5105, 5465, 3518, 5947, 4773, 5718, 4525, 3949, 4327, 4769, 6356, 5131, 4180, 3306, 3546, 4026, 3945, 4746, 5106, 5466, 3519, 5948, 4774, 5719, 4526, 3950, 4328, 4770, 6357, 5132, 4181, 3307, 3547, 4027, 3946, 4747, 5107, 5467, 3520, 5949, 4775, 5720, 4527, 3951, 4329, 4771, 6358, 5133, 4182, 3308, 3548, 4028, 3947, 4748, 5108, 5468, 3521, 5950, 4776, 5721, 4528, 3952, 4330, 4772, 6359, 5134, 4183, 3309, 3549, 4029, 3948, 4749, 5109, 5469, 3522, 5951, 4777, 5722, 4529, 3953, 4331, 4773, 6360, 5135, 4184, 3310, 3550, 4030, 3949, 4750, 5110, 5470, 3523, 5952, 4778, 5723, 4530, 3954, 4332, 4774, 6361, 5136, 4185, 3311, 3551, 4031, 3950, 4751, 5111, 5471, 3524, 5953, 4779, 5724, 4531, 3955, 4333, 4775, 6362, 5137, 4186, 3312, 3552, 4032, 3951, 4752, 5112, 5472, 3525, 5954, 4780, 5725, 4532, 3956, 4334, 4776, 6363, 5138, 4187, 3313, 3553, 4033, 3952, 4753, 5113, 5473, 3526, 5955, 4781, 5726, 4533, 3957, 4335, 4777, 6364, 5139, 4188, 3314, 3554, 4034, 3953, 4754, 5114, 5474, 3527, 5956, 4782, 5727, 4534, 3958, 4336, 4778, 6365, 5140, 4189, 3315, 3555, 4035, 3954, 4755, 5115, 5475, 3528, 5957, 4783, 5728, 4535, 3959, 4337, 4779, 6366, 5141, 4190, 3316, 3556, 4036, 3955, 4756, 5116, 5476, 3529, 5958, 4784, 5729, 4536, 3960, 4338, 4780, 6367, 5142, 4191, 3317, 3557, 4037, 3956, 4757, 5117, 5477, 3530, 5959, 4785, 5730, 4537, 3601, 4339, 4781, 6368, 5143, 4192, 3318, 3558, 4038, 3957, 4758, 5118, 5478, 3531, 5960, 4786, 5731, 4538, 3602, 4340, 4782, 6369, 5144, 4193, 3319, 3559, 4039, 3958, 4759, 5119, 5479, 3532, 5961, 4787, 5732, 4539, 3603, 4341, 4783, 6370, 5145, 4194, 3320, 3560, 4040, 3959, 4760, 5120, 5480, 3533, 5962, 4788, 5733, 4540, 3604, 4342, 4784, 6371, 5146, 4195, 3321, 3561, 4041, 3960, 4761, 5121, 5481, 3534, 5963, 4789, 5734, 4541, 3605, 4343, 4785, 6372, 5147, 4196, 3322, 3562, 4042, 3601, 4762, 5122, 5482, 3535, 5964, 4790, 5735, 4542, 3606, 4344, 4786, 6373, 5148, 4197, 3323, 3563, 4043, 3602, 4763, 5123, 5483, 3536, 5965, 4791, 5736, 4543, 3607, 4345, 4787, 6374, 5149, 4198, 3324, 3564, 4044, 3603, 4764, 5124, 5484, 3537, 5966, 4792, 5737, 4544, 3608, 4346, 4788, 6375, 5150, 4199, 3325, 3565, 4045, 3604, 4765, 5125, 5485, 3538, 5967, 4793, 5738, 4545, 3609, 4347, 4789, 6376, 5151, 4200, 3326, 3566, 4046, 3605, 4766, 5126, 5486, 3539, 5968, 4794, 5739, 4546, 3610, 4348, 4790, 6377, 5152, 4201, 3327, 3567, 4047, 3606, 4767, 5127, 5487, 3540, 5969, 4795, 5740, 4547, 3611, 4349, 4791, 6378, 5153, 4202, 3328, 3568, 4048, 3607, 4768, 5128, 5488, 3541, 5970, 4796, 5741, 4548, 3612, 4350, 4792, 6379, 5154, 4203, 3329, 3569, 4049, 3608, 4769, 5129, 5489, 3542, 5971, 4797, 5742, 4549, 3613, 4351, 4793, 6380, 5155, 4204, 3330, 3570, 4050, 3609, 4770, 5130, 5490, 3543, 5972, 4798, 5743, 4550, 3614, 4352, 4794, 6381, 5156, 4205, 3331, 3571, 4051, 3610, 4771, 5131, 5491, 3544, 5973, 4799, 5744, 4551, 3615, 4353, 4795, 6382, 5157, 4206, 3332, 3572, 4052, 3611, 4772, 5132, 5492, 3545, 5974, 4800, 5745, 4552, 3616, 4354, 4796, 6383, 5158, 4207, 3333, 3573, 4053, 3612, 4773, 5133, 5493, 3546, 5975, 4801, 5746, 4553, 3617, 4355, 4797, 6384, 5159, 4208, 3334, 3574, 4054, 3613, 4774, 5134, 5494, 3547, 5976, 4802, 5747, 4554, 3618, 4356, 4798, 6385, 5160, 4209, 3335, 3575, 4055, 3614, 4775, 5135, 5495, 3548, 5977, 4803, 5748, 4555, 3619, 4357, 4799, 6386, 5161, 4210, 3336, 3576, 4056, 3615, 4776, 5136, 5496, 3549, 5978, 4804, 5749, 4556, 3620, 4358, 4800, 6387, 5162, 4211, 3337, 3577, 4057, 3616, 4777, 5041, 5497, 3550, 5979, 4805, 5750, 4557, 3621, 4359, 4801, 6388, 5163, 4212, 3338, 3578, 4058, 3617, 4778, 5042, 5498, 3551, 5980, 4806, 5751, 4558, 3622, 4360, 4802, 6389, 5164, 4213, 3339, 3579, 4059, 3618, 4779, 5043, 5499, 3552, 5981, 4807, 5752, 4559, 3623, 4361, 4803, 6390, 5165, 4214, 3340, 3580, 4060, 3619, 4780, 5044, 5500, 3553, 5982, 4808, 5753, 4560, 3624, 4362, 4804, 6391, 5166, 4215, 3341, 3581, 4061, 3620, 4781, 5045, 5501, 3554, 5983, 4809, 5754, 4561, 3625, 4363, 4805, 6392, 5167, 4216, 3342, 3582, 4062, 3621, 4782, 5046, 5502, 3555, 5984, 4810, 5755, 4562, 3626, 4364, 4806, 6393, 5168, 4217, 3343, 3583, 4063, 3622, 4783, 5047, 5503, 3556, 5985, 4811, 5756, 4563, 3627, 4365, 4807, 6394, 5169, 4218, 3344, 3584, 4064, 3623, 4784, 5048, 5504, 3557, 5986, 4812, 5757, 4564, 3628, 4366, 4808, 6395, 5170, 4219, 3345, 3585, 4065, 3624, 4785, 5049, 5505, 3558, 5987, 4813, 5758, 4565, 3629, 4367, 4809, 6396, 5171, 4220, 3346, 3586, 4066, 3625, 4786, 5050, 5506, 3559, 5988, 4814, 5759, 4566, 3630, 4368, 4810, 6397, 5172, 4221, 3347, 3587, 4067, 3626, 4787, 5051, 5507, 3560, 5989, 4815, 5760, 4567, 3631, 4369, 4811, 6398, 5173, 4222, 3348, 3588, 4068, 3627, 4788, 5052, 5508, 3561, 5990, 4816, 5401, 4568, 3632, 4370, 4812, 6399, 5174, 4223, 3349, 3589, 4069, 3628, 4789, 5053, 5509, 3562, 5991, 4817, 5402, 4569, 3633, 4371, 4813, 6400, 5175, 4224, 3350, 3590, 4070, 3629, 4790, 5054, 5510, 3563, 5992, 4818, 5403, 4570, 3634, 4372, 4814, 6401, 5176, 4225, 3351, 3591, 4071, 3630, 4791, 5055, 5511, 3564, 5993, 4819, 5404, 4571, 3635, 4373, 4815, 6402, 5177, 4226, 3352, 3592, 4072, 3631, 4792, 5056, 5512, 3565, 5994, 4820, 5405, 4572, 3636, 4374, 4816, 6403, 5178, 4227, 3353, 3593, 4073, 3632, 4793, 5057, 5513, 3566, 5995, 4821, 5406, 4573, 3637, 4375, 4817, 6404, 5179, 4228, 3354, 3594, 4074, 3633, 4794, 5058, 5514, 3567, 5996, 4822, 5407, 4574, 3638, 4376, 4818, 6405, 5180, 4229, 3355, 3595, 4075, 3634, 4795, 5059, 5515, 3568, 5997, 4823, 5408, 4575, 3639, 4377, 4819, 6406, 5181, 4230, 3356, 3596, 4076, 3635, 4796, 5060, 5516, 3569, 5998, 4824, 5409, 4576, 3640, 4378, 4820, 6407, 5182, 4231, 3357, 3597, 4077, 3636, 4797, 5061, 5517, 3570, 5999, 4825, 5410, 4577, 3641, 4379, 4821, 6408, 5183, 4232, 3358, 3598, 4078, 3637, 4798, 5062, 5518, 3571, 6000, 4826, 5411, 4578, 3642, 4380, 4822, 6409, 5184, 4233, 3359, 3599, 4079, 3638, 4799, 5063, 5519, 3572, 6001, 4827, 5412, 4579, 3643, 4381, 4823, 6410, 5185, 4234, 3360, 3600, 4080, 3639, 4800, 5064, 5520, 3573, 6002, 4828, 5413, 4580, 3644, 4382, 4824, 6411, 5186, 4235, 3361, 3241, 4081, 3640, 4801, 5065, 5521, 3574, 6003, 4829, 5414, 4581, 3645, 4383, 4825, 6412, 5187, 4236, 3362, 3242, 4082, 3641, 4802, 5066, 5522, 3575, 6004, 4830, 5415, 4582, 3646, 4384, 4826, 6413, 5188, 4237, 3363, 3243, 4083, 3642, 4803, 5067, 5523, 3576, 6005, 4831, 5416, 4583, 3647, 4385, 4827, 6414, 5189, 4238, 3364, 3244, 4084, 3643, 4804, 5068, 5524, 3577, 6006, 4832, 5417, 4584, 3648, 4386, 4828, 6415, 5190, 4239, 3365, 3245, 4085, 3644, 4805, 5069, 5525, 3578, 6007, 4833, 5418, 4585, 3649, 4387, 4829, 6416, 5191, 4240, 3366, 3246, 4086, 3645, 4806, 5070, 5526, 3579, 6008, 4834, 5419, 4586, 3650, 4388, 4830, 6417, 5192, 4241, 3367, 3247, 4087, 3646, 4807, 5071, 5527, 3580, 6009, 4835, 5420, 4587, 3651, 4389, 4831, 6418, 5193, 4242, 3368, 3248, 4088, 3647, 4808, 5072, 5528, 3581, 6010, 4836, 5421, 4588, 3652, 4390, 4832, 6419, 5194, 4243, 3369, 3249, 4089, 3648, 4809, 5073, 5529, 3582, 6011, 4837, 5422, 4589, 3653, 4391, 4833, 6420, 5195, 4244, 3370, 3250, 4090, 3649, 4810, 5074, 5530, 3583, 6012, 4838, 5423, 4590, 3654, 4392, 4834, 6421, 5196, 4245, 3371, 3251, 4091, 3650, 4811, 5075, 5531, 3584, 6013, 4839, 5424, 4591, 3655, 4393, 4835, 6422, 5197, 4246, 3372, 3252, 4092, 3651, 4812, 5076, 5532, 3585, 6014, 4840, 5425, 4592, 3656, 4394, 4836, 6423, 5198, 4247, 3373, 3253, 4093, 3652, 4813, 5077, 5533, 3586, 6015, 4841, 5426, 4593, 3657, 4395, 4837, 6424, 5199, 4248, 3374, 3254, 4094, 3653, 4814, 5078, 5534, 3587, 6016, 4842, 5427, 4594, 3658, 4396, 4838, 6425, 5200, 4249, 3375, 3255, 4095, 3654, 4815, 5079, 5535, 3588, 6017, 4843, 5428, 4595, 3659, 4397, 4839, 6426, 5201, 4250, 3376, 3256, 4096, 3655, 4816, 5080, 5536, 3589, 6018, 4844, 5429, 4596, 3660, 4398, 4840, 6427, 5202, 4251, 3377, 3257, 4097, 3656, 4817, 5081, 5537, 3590, 6019, 4845, 5430, 4597, 3661, 4399, 4841, 6428, 5203, 4252, 3378, 3258, 4098, 3657, 4818, 5082, 5538, 3591, 6020, 4846, 5431, 4598, 3662, 4400, 4842, 6429, 5204, 4253, 3379, 3259, 4099, 3658, 4819, 5083, 5539, 3592, 6021, 4847, 5432, 4599, 3663, 4401, 4843, 6430, 5205, 4254, 3380, 3260, 4100, 3659, 4820, 5084, 5540, 3593, 6022, 4848, 5433, 4600, 3664, 4402, 4844, 6431, 5206, 4255, 3381, 3261, 4101, 3660, 4821, 5085, 5541, 3594, 6023, 4849, 5434, 4601, 3665, 4403, 4845, 6432, 5207, 4256, 3382, 3262, 4102, 3661, 4822, 5086, 5542, 3595, 6024, 4850, 5435, 4602, 3666, 4404, 4846, 6433, 5208, 4257, 3383, 3263, 4103, 3662, 4823, 5087, 5543, 3596, 6025, 4851, 5436, 4603, 3667, 4405, 4847, 6434, 5209, 4258, 3384, 3264, 4104, 3663, 4824, 5088, 5544, 3597, 6026, 4852, 5437, 4604, 3668, 4406, 4848, 6435, 5210, 4259, 3385, 3265, 4105, 3664, 4825, 5089, 5545, 3598, 6027, 4853, 5438, 4605, 3669, 4407, 4849, 6436, 5211, 4260, 3386, 3266, 4106, 3665, 4826, 5090, 5546, 3599, 6028, 4854, 5439, 4606, 3670, 4408, 4850, 6437, 5212, 4261, 3387, 3267, 4107, 3666, 4827, 5091, 5547, 3600, 6029, 4855, 5440, 4607, 3671, 4409, 4851, 6438, 5213, 4262, 3388, 3268, 4108, 3667, 4828, 5092, 5548, 3241, 6030, 4856, 5441, 4608, 3672, 4410, 4852, 6439, 5214, 4263, 3389, 3269, 4109, 3668, 4829, 5093, 5549, 3242, 6031, 4857, 5442, 4609, 3673, 4411, 4853, 6440, 5215, 4264, 3390, 3270, 4110, 3669, 4830, 5094, 5550, 3243, 6032, 4858, 5443, 4610, 3674, 4412, 4854, 6441, 5216, 4265, 3391, 3271, 4111, 3670, 4831, 5095, 5551, 3244, 6033, 4859, 5444, 4611, 3675, 4413, 4855, 6442, 5217, 4266, 3392, 3272, 4112, 3671, 4832, 5096, 5552, 3245, 6034, 4860, 5445, 4612, 3676, 4414, 4856, 6443, 5218, 4267, 3393, 3273, 4113, 3672, 4833, 5097, 5553, 3246, 6035, 4861, 5446, 4613, 3677, 4415, 4857, 6444, 5219, 4268, 3394, 3274, 4114, 3673, 4834, 5098, 5554, 3247, 6036, 4862, 5447, 4614, 3678, 4416, 4858, 6445, 5220, 4269, 3395, 3275, 4115, 3674, 4835, 5099, 5555, 3248, 6037, 4863, 5448, 4615, 3679, 4417, 4859, 6446, 5221, 4270, 3396, 3276, 4116, 3675, 4836, 5100, 5556, 3249, 6038, 4864, 5449, 4616, 3680, 4418, 4860, 6447, 5222, 4271, 3397, 3277, 4117, 3676, 4837, 5101, 5557, 3250, 6039, 4865, 5450, 4617, 3681, 4419, 4861, 6448, 5223, 4272, 3398, 3278, 4118, 3677, 4838, 5102, 5558, 3251, 6040, 4866, 5451, 4618, 3682, 4420, 4862, 6449, 5224, 4273, 3399, 3279, 4119, 3678, 4839, 5103, 5559, 3252, 6041, 4867, 5452, 4619, 3683, 4421, 4863, 6450, 5225, 4274, 3400, 3280, 4120, 3679, 4840, 5104, 5560, 3253, 6042, 4868, 5453, 4620, 3684, 4422, 4864, 6451, 5226, 4275, 3401, 3281, 4121, 3680, 4841, 5105, 5561, 3254, 6043, 4869, 5454, 4621, 3685, 4423, 4865, 6452, 5227, 4276, 3402, 3282, 4122, 3681, 4842, 5106, 5562, 3255, 6044, 4870, 5455, 4622, 3686, 4424, 4866, 6453, 5228, 4277, 3403, 3283, 4123, 3682, 4843, 5107, 5563, 3256, 6045, 4871, 5456, 4623, 3687, 4425, 4867, 6454, 5229, 4278, 3404, 3284, 4124, 3683, 4844, 5108, 5564, 3257, 6046, 4872, 5457, 4624, 3688, 4426, 4868, 6455, 5230, 4279, 3405, 3285, 4125, 3684, 4845, 5109, 5565, 3258, 6047, 4873, 5458, 4625, 3689, 4427, 4869, 6456, 5231, 4280, 3406, 3286, 4126, 3685, 4846, 5110, 5566, 3259, 6048, 4874, 5459, 4626, 3690, 4428, 4870, 6457, 5232, 4281, 3407, 3287, 4127, 3686, 4847, 5111, 5567, 3260, 6049, 4875, 5460, 4627, 3691, 4429, 4871, 6458, 5233, 4282, 3408, 3288, 4128, 3687, 4848, 5112, 5568, 3261, 6050, 4876, 5461, 4628, 3692, 4430, 4872, 6459, 5234, 4283, 3409, 3289, 4129, 3688, 4849, 5113, 5569, 3262, 6051, 4877, 5462, 4629, 3693, 4431, 4873, 6460, 5235, 4284, 3410, 3290, 4130, 3689, 4850, 5114, 5570, 3263, 6052, 4878, 5463, 4630, 3694, 4432, 4874, 6461, 5236, 4285, 3411, 3291, 4131, 3690, 4851, 5115, 5571, 3264, 6053, 4879, 5464, 4631, 3695, 4433, 4875, 6462, 5237, 4286, 3412, 3292, 4132, 3691, 4852, 5116, 5572, 3265, 6054, 4880, 5465, 4632, 3696, 4434, 4876, 6463, 5238, 4287, 3413, 3293, 4133, 3692, 4853, 5117, 5573, 3266, 6055, 4881, 5466, 4633, 3697, 4435, 4877, 6464, 5239, 4288, 3414, 3294, 4134, 3693, 4854, 5118, 5574, 3267, 6056, 4882, 5467, 4634, 3698, 4436, 4878, 6465, 5240, 4289, 3415, 3295, 4135, 3694, 4855, 5119, 5575, 3268, 6057, 4883, 5468, 4635, 3699, 4437, 4879, 6466, 5241, 4290, 3416, 3296, 4136, 3695, 4856, 5120, 5576, 3269, 6058, 4884, 5469, 4636, 3700, 4438, 4880, 6467, 5242, 4291, 3417, 3297, 4137, 3696, 4857, 5121, 5577, 3270, 6059, 4885, 5470, 4637, 3701, 4439, 4881, 6468, 5243, 4292, 3418, 3298, 4138, 3697, 4858, 5122, 5578, 3271, 6060, 4886, 5471, 4638, 3702, 4440, 4882, 6469, 5244, 4293, 3419, 3299, 4139, 3698, 4859, 5123, 5579, 3272, 6061, 4887, 5472, 4639, 3703, 4441, 4883, 6470, 5245, 4294, 3420, 3300, 4140, 3699, 4860, 5124, 5580, 3273, 6062, 4888, 5473, 4640, 3704, 4442, 4884, 6471, 5246, 4295, 3421, 3301, 4141, 3700, 4861, 5125, 5581, 3274, 6063, 4889, 5474, 4641, 3705, 4443, 4885, 6472, 5247, 4296, 3422, 3302, 4142, 3701, 4862, 5126, 5582, 3275, 6064, 4890, 5475, 4642, 3706, 4444, 4886, 6473, 5248, 4297, 3423, 3303, 4143, 3702, 4863, 5127, 5583, 3276, 6065, 4891, 5476, 4643, 3707, 4445, 4887, 6474, 5249, 4298, 3424, 3304, 4144, 3703, 4864, 5128, 5584, 3277, 6066, 4892, 5477, 4644, 3708, 4446, 4888, 6475, 5250, 4299, 3425, 3305, 4145, 3704, 4865, 5129, 5585, 3278, 6067, 4893, 5478, 4645, 3709, 4447, 4889, 6476, 5251, 4300, 3426, 3306, 4146, 3705, 4866, 5130, 5586, 3279, 6068, 4894, 5479, 4646, 3710, 4448, 4890, 6477, 5252, 4301, 3427, 3307, 4147, 3706, 4867, 5131, 5587, 3280, 6069, 4895, 5480, 4647, 3711, 4449, 4891, 6478, 5253, 4302, 3428, 3308, 4148, 3707, 4868, 5132, 5588, 3281, 6070, 4896, 5481, 4648, 3712, 4450, 4892, 6479, 5254, 4303, 3429, 3309, 4149, 3708, 4869, 5133, 5589, 3282, 6071, 4897, 5482, 4649, 3713, 4451, 4893, 6480, 5255, 4304, 3430, 3310, 4150, 3709, 4870, 5134, 5590, 3283, 6072, 4898, 5483, 4650, 3714, 4452, 4894, 6121, 5256, 4305, 3431, 3311, 4151, 3710, 4871, 5135, 5591, 3284, 6073, 4899, 5484, 4651, 3715, 4453, 4895, 6122, 5257, 4306, 3432, 3312, 4152, 3711, 4872, 5136, 5592, 3285, 6074, 4900, 5485, 4652, 3716, 4454, 4896, 6123, 5258, 4307, 3433, 3313, 4153, 3712, 4873, 5137, 5593, 3286, 6075, 4901, 5486, 4653, 3717, 4455, 4897, 6124, 5259, 4308, 3434, 3314, 4154, 3713, 4874, 5138, 5594, 3287, 6076, 4902, 5487, 4654, 3718, 4456, 4898, 6125, 5260, 4309, 3435, 3315, 4155, 3714, 4875, 5139, 5595, 3288, 6077, 4903, 5488, 4655, 3719, 4457, 4899, 6126, 5261, 4310, 3436, 3316, 4156, 3715, 4876, 5140, 5596, 3289, 6078, 4904, 5489, 4656, 3720, 4458, 4900, 6127, 5262, 4311, 3437, 3317, 4157, 3716, 4877, 5141, 5597, 3290, 6079, 4905, 5490, 4657, 3721, 4459, 4901, 6128, 5263, 4312, 3438, 3318, 4158, 3717, 4878, 5142, 5598, 3291, 6080, 4906, 5491, 4658, 3722, 4460, 4902, 6129, 5264, 4313, 3439, 3319, 4159, 3718, 4879, 5143, 5599, 3292, 6081, 4907, 5492, 4659, 3723, 4461, 4903, 6130, 5265, 4314, 3440, 3320, 4160, 3719, 4880, 5144, 5600, 3293, 6082, 4908, 5493, 4660, 3724, 4462, 4904, 6131, 5266, 4315, 3441, 3321, 4161, 3720, 4881, 5145, 5601, 3294, 6083, 4909, 5494, 4661, 3725, 4463, 4905, 6132, 5267, 4316, 3442, 3322, 4162, 3721, 4882, 5146, 5602, 3295, 6084, 4910, 5495, 4662, 3726, 4464, 4906, 6133, 5268, 4317, 3443, 3323, 4163, 3722, 4883, 5147, 5603, 3296, 6085, 4911, 5496, 4663, 3727, 4465, 4907, 6134, 5269, 4318, 3444, 3324, 4164, 3723, 4884, 5148, 5604, 3297, 6086, 4912, 5497, 4664, 3728, 4466, 4908, 6135, 5270, 4319, 3445, 3325, 4165, 3724, 4885, 5149, 5605, 3298, 6087, 4913, 5498, 4665, 3729, 4467, 4909, 6136, 5271, 4320, 3446, 3326, 4166, 3725, 4886, 5150, 5606, 3299, 6088, 4914, 5499, 4666, 3730, 4468, 4910, 6137, 5272, 3961, 3447, 3327, 4167, 3726, 4887, 5151, 5607, 3300, 6089, 4915, 5500, 4667, 3731, 4469, 4911, 6138, 5273, 3962, 3448, 3328, 4168, 3727, 4888, 5152, 5608, 3301, 6090, 4916, 5501, 4668, 3732, 4470, 4912, 6139, 5274, 3963, 3449, 3329, 4169, 3728, 4889, 5153, 5609, 3302, 6091, 4917, 5502, 4669, 3733, 4471, 4913, 6140, 5275, 3964, 3450, 3330, 4170, 3729, 4890, 5154, 5610, 3303, 6092, 4918, 5503, 4670, 3734, 4472, 4914, 6141, 5276, 3965, 3451, 3331, 4171, 3730, 4891, 5155, 5401, 3304, 6093, 4919, 5504, 4671, 3735, 4473, 4915, 6142, 5277, 3966, 3452, 3332, 4172, 3731, 4892, 5156, 5402, 3305, 6094, 4920, 5505, 4672, 3736, 4474, 4916, 6143, 5278, 3967, 3453, 3333, 4173, 3732, 4893, 5157, 5403, 3306, 6095, 4921, 5506, 4673, 3737, 4475, 4917, 6144, 5279, 3968, 3454, 3334, 4174, 3733, 4894, 5158, 5404, 3307, 6096, 4922, 5507, 4674, 3738, 4476, 4918, 6145, 5280, 3969, 3455, 3335, 4175, 3734, 4895, 5159, 5405, 3308, 6097, 4923, 5508, 4675, 3739, 4477, 4919, 6146, 5281, 3970, 3456, 3336, 4176, 3735, 4896, 5160, 5406, 3309, 6098, 4924, 5509, 4676, 3740, 4478, 4920, 6147, 5282, 3971, 3457, 3337, 4177, 3736, 4897, 5161, 5407, 3310, 6099, 4925, 5510, 4677, 3741, 4479, 4921, 6148, 5283, 3972, 3458, 3338, 4178, 3737, 4898, 5162, 5408, 3311, 6100, 4926, 5511, 4678, 3742, 4480, 4922, 6149, 5284, 3973, 3459, 3339, 4179, 3738, 4899, 5163, 5409, 3312, 6101, 4927, 5512, 4679, 3743, 4481, 4923, 6150, 5285, 3974, 3460, 3340, 4180, 3739, 4900, 5164, 5410, 3313, 6102, 4928, 5513, 4680, 3744, 4482, 4924, 6151, 5286, 3975, 3461, 3341, 4181, 3740, 4901, 5165, 5411, 3314, 6103, 4929, 5514, 4321, 3745, 4483, 4925, 6152, 5287, 3976, 3462, 3342, 4182, 3741, 4902, 5166, 5412, 3315, 6104, 4930, 5515, 4322, 3746, 4484, 4926, 6153, 5288, 3977, 3463, 3343, 4183, 3742, 4903, 5167, 5413, 3316, 6105, 4931, 5516, 4323, 3747, 4485, 4927, 6154, 5289, 3978, 3464, 3344, 4184, 3743, 4904, 5168, 5414, 3317, 6106, 4932, 5517, 4324, 3748, 4486, 4928, 6155, 5290, 3979, 3465, 3345, 4185, 3744, 4905, 5169, 5415, 3318, 6107, 4933, 5518, 4325, 3749, 4487, 4929, 6156, 5291, 3980, 3466, 3346, 4186, 3745, 4906, 5170, 5416, 3319, 6108, 4934, 5519, 4326, 3750, 4488, 4930, 6157, 5292, 3981, 3467, 3347, 4187, 3746, 4907, 5171, 5417, 3320, 6109, 4935, 5520, 4327, 3751, 4489, 4931, 6158, 5293, 3982, 3468, 3348, 4188, 3747, 4908, 5172, 5418, 3321, 6110, 4936, 5521, 4328, 3752, 4490, 4932, 6159, 5294, 3983, 3469, 3349, 4189, 3748, 4909, 5173, 5419, 3322, 6111, 4937, 5522, 4329, 3753, 4491, 4933, 6160, 5295, 3984, 3470, 3350, 4190, 3749, 4910, 5174, 5420, 3323, 6112, 4938, 5523, 4330, 3754, 4492, 4934, 6161, 5296, 3985, 3471, 3351, 4191, 3750, 4911, 5175, 5421, 3324, 6113, 4939, 5524, 4331, 3755, 4493, 4935, 6162, 5297, 3986, 3472, 3352, 4192, 3751, 4912, 5176, 5422, 3325, 6114, 4940, 5525, 4332, 3756, 4494, 4936, 6163, 5298, 3987, 3473, 3353, 4193, 3752, 4913, 5177, 5423, 3326, 6115, 4941, 5526, 4333, 3757, 4495, 4937, 6164, 5299, 3988, 3474, 3354, 4194, 3753, 4914, 5178, 5424, 3327, 6116, 4942, 5527, 4334, 3758, 4496, 4938, 6165, 5300, 3989, 3475, 3355, 4195, 3754, 4915, 5179, 5425, 3328, 6117, 4943, 5528, 4335, 3759, 4497, 4939, 6166, 5301, 3990, 3476, 3356, 4196, 3755, 4916, 5180, 5426, 3329, 6118, 4944, 5529, 4336, 3760, 4498, 4940, 6167, 5302, 3991, 3477, 3357, 4197, 3756, 4917, 5181, 5427, 3330, 6119, 4945, 5530, 4337, 3761, 4499, 4941, 6168, 5303, 3992, 3478, 3358, 4198, 3757, 4918, 5182, 5428, 3331, 6120, 4946, 5531, 4338, 3762, 4500, 4942, 6169, 5304, 3993, 3479, 3359, 4199, 3758, 4919, 5183, 5429, 3332, 5761, 4947, 5532, 4339, 3763, 4501, 4943, 6170, 5305, 3994, 3480, 3360, 4200, 3759, 4920, 5184, 5430, 3333, 5762, 4948, 5533, 4340, 3764, 4502, 4944, 6171, 5306, 3995, 3481, 3361, 4201, 3760, 4921, 5185, 5431, 3334, 5763, 4949, 5534, 4341, 3765, 4503, 4945, 6172, 5307, 3996, 3482, 3362, 4202, 3761, 4922, 5186, 5432, 3335, 5764, 4950, 5535, 4342, 3766, 4504, 4946, 6173, 5308, 3997, 3483, 3363, 4203, 3762, 4923, 5187, 5433, 3336, 5765, 4951, 5536, 4343, 3767, 4505, 4947, 6174, 5309, 3998, 3484, 3364, 4204, 3763, 4924, 5188, 5434, 3337, 5766, 4952, 5537, 4344, 3768, 4506, 4948, 6175, 5310, 3999, 3485, 3365, 4205, 3764, 4925, 5189, 5435, 3338, 5767, 4953, 5538, 4345, 3769, 4507, 4949, 6176, 5311, 4000, 3486, 3366, 4206, 3765, 4926, 5190, 5436, 3339, 5768, 4954, 5539, 4346, 3770, 4508, 4950, 6177, 5312, 4001, 3487, 3367, 4207, 3766, 4927, 5191, 5437, 3340, 5769, 4955, 5540, 4347, 3771, 4509, 4951, 6178, 5313, 4002, 3488, 3368, 4208, 3767, 4928, 5192, 5438, 3341, 5770, 4956, 5541, 4348, 3772, 4510, 4952, 6179, 5314, 4003, 3489, 3369, 4209, 3768, 4929, 5193, 5439, 3342, 5771, 4957, 5542, 4349, 3773, 4511, 4953, 6180, 5315, 4004, 3490, 3370, 4210, 3769, 4930, 5194, 5440, 3343, 5772, 4958, 5543, 4350, 3774, 4512, 4954, 6181, 5316, 4005, 3491, 3371, 4211, 3770, 4931, 5195, 5441, 3344, 5773, 4959, 5544, 4351, 3775, 4513, 4955, 6182, 5317, 4006, 3492, 3372, 4212, 3771, 4932, 5196, 5442, 3345, 5774, 4960, 5545, 4352, 3776, 4514, 4956, 6183, 5318, 4007, 3493, 3373, 4213, 3772, 4933, 5197, 5443, 3346, 5775, 4961, 5546, 4353, 3777, 4515, 4957, 6184, 5319, 4008, 3494, 3374, 4214, 3773, 4934, 5198, 5444, 3347, 5776, 4962, 5547, 4354, 3778, 4516, 4958, 6185, 5320, 4009, 3495, 3375, 4215, 3774, 4935, 5199, 5445, 3348, 5777, 4963, 5548, 4355, 3779, 4517, 4959, 6186, 5321, 4010, 3496, 3376, 4216, 3775, 4936, 5200, 5446, 3349, 5778, 4964, 5549, 4356, 3780, 4518, 4960, 6187, 5322, 4011, 3497, 3377, 4217, 3776, 4937, 5201, 5447, 3350, 5779, 4965, 5550, 4357, 3781, 4519, 4961, 6188, 5323, 4012, 3498, 3378, 4218, 3777, 4938, 5202, 5448, 3351, 5780, 4966, 5551, 4358, 3782, 4520, 4962, 6189, 5324, 4013, 3499, 3379, 4219, 3778, 4939, 5203, 5449, 3352, 5781, 4967, 5552, 4359, 3783, 4521, 4963, 6190, 5325, 4014, 3500, 3380, 4220, 3779, 4940, 5204, 5450, 3353, 5782, 4968, 5553, 4360, 3784, 4522, 4964, 6191, 5326, 4015, 3501, 3381, 4221, 3780, 4941, 5205, 5451, 3354, 5783, 4969, 5554, 4361, 3785, 4523, 4965, 6192, 5327, 4016, 3502, 3382, 4222, 3781, 4942, 5206, 5452, 3355, 5784, 4970, 5555, 4362, 3786, 4524, 4966, 6193, 5328, 4017, 3503, 3383, 4223, 3782, 4943, 5207, 5453, 3356, 5785, 4971, 5556, 4363, 3787, 4525, 4967, 6194, 5329, 4018, 3504, 3384, 4224, 3783, 4944, 5208, 5454, 3357, 5786, 4972, 5557, 4364, 3788, 4526, 4968, 6195, 5330, 4019, 3505, 3385, 4225, 3784, 4945, 5209, 5455, 3358, 5787, 4973, 5558, 4365, 3789, 4527, 4969, 6196, 5331, 4020, 3506, 3386, 4226, 3785, 4946, 5210, 5456, 3359, 5788, 4974, 5559, 4366, 3790, 4528, 4970, 6197, 5332, 4021, 3507, 3387, 4227, 3786, 4947, 5211, 5457, 3360, 5789, 4975, 5560, 4367, 3791, 4529, 4971, 6198, 5333, 4022, 3508, 3388, 4228, 3787, 4948, 5212, 5458, 3361, 5790, 4976, 5561, 4368, 3792, 4530, 4972, 6199, 5334, 4023, 3509, 3389, 4229, 3788, 4949, 5213, 5459, 3362, 5791, 4977, 5562, 4369, 3793, 4531, 4973, 6200, 5335, 4024, 3510, 3390, 4230, 3789, 4950, 5214, 5460, 3363, 5792, 4978, 5563, 4370, 3794, 4532, 4974, 6201, 5336, 4025, 3511, 3391, 4231, 3790, 4951, 5215, 5461, 3364, 5793, 4979, 5564, 4371, 3795, 4533, 4975, 6202, 5337, 4026, 3512, 3392, 4232, 3791, 4952, 5216, 5462, 3365, 5794, 4980, 5565, 4372, 3796, 4534, 4976, 6203, 5338, 4027, 3513, 3393, 4233, 3792, 4953, 5217, 5463, 3366, 5795, 4981, 5566, 4373, 3797, 4535, 4977, 6204, 5339, 4028, 3514, 3394, 4234, 3793, 4954, 5218, 5464, 3367, 5796, 4982, 5567, 4374, 3798, 4536, 4978, 6205, 5340, 4029, 3515, 3395, 4235, 3794, 4955, 5219, 5465, 3368, 5797, 4983, 5568, 4375, 3799, 4537, 4979, 6206, 5341, 4030, 3516, 3396, 4236, 3795, 4956, 5220, 5466, 3369, 5798, 4984, 5569, 4376, 3800, 4538, 4980, 6207, 5342, 4031, 3517, 3397, 4237, 3796, 4957, 5221, 5467, 3370, 5799, 4985, 5570, 4377, 3801, 4539, 4981, 6208, 5343, 4032, 3518, 3398, 4238, 3797, 4958, 5222, 5468, 3371, 5800, 4986, 5571, 4378, 3802, 4540, 4982, 6209, 5344, 4033, 3519, 3399, 4239, 3798, 4959, 5223, 5469, 3372, 5801, 4987, 5572, 4379, 3803, 4541, 4983, 6210, 5345, 4034, 3520, 3400, 4240, 3799, 4960, 5224, 5470, 3373, 5802, 4988, 5573, 4380, 3804, 4542, 4984, 6211, 5346, 4035, 3521, 3401, 4241, 3800, 4961, 5225, 5471, 3374, 5803, 4989, 5574, 4381, 3805, 4543, 4985, 6212, 5347, 4036, 3522, 3402, 4242, 3801, 4962, 5226, 5472, 3375, 5804, 4990, 5575, 4382, 3806, 4544, 4986, 6213, 5348, 4037, 3523, 3403, 4243, 3802, 4963, 5227, 5473, 3376, 5805, 4991, 5576, 4383, 3807, 4545, 4987, 6214, 5349, 4038, 3524, 3404, 4244, 3803, 4964, 5228, 5474, 3377, 5806, 4992, 5577, 4384, 3808, 4546, 4988, 6215, 5350, 4039, 3525, 3405, 4245, 3804, 4965, 5229, 5475, 3378, 5807, 4993, 5578, 4385, 3809, 4547, 4989, 6216, 5351, 4040, 3526, 3406, 4246, 3805, 4966, 5230, 5476, 3379, 5808, 4994, 5579, 4386, 3810, 4548, 4990, 6217, 5352, 4041, 3527, 3407, 4247, 3806, 4967, 5231, 5477, 3380, 5809, 4995, 5580, 4387, 3811, 4549, 4991, 6218, 5353, 4042, 3528, 3408, 4248, 3807, 4968, 5232, 5478, 3381, 5810, 4996, 5581, 4388, 3812, 4550, 4992, 6219, 5354, 4043, 3529, 3409, 4249, 3808, 4969, 5233, 5479, 3382, 5811, 4997, 5582, 4389, 3813, 4551, 4993, 6220, 5355, 4044, 3530, 3410, 4250, 3809, 4970, 5234, 5480, 3383, 5812, 4998, 5583, 4390, 3814, 4552, 4994, 6221, 5356, 4045, 3531, 3411, 4251, 3810, 4971, 5235, 5481, 3384, 5813, 4999, 5584, 4391, 3815, 4553, 4995, 6222, 5357, 4046, 3532, 3412, 4252, 3811, 4972, 5236, 5482, 3385, 5814, 5000, 5585, 4392, 3816, 4554, 4996, 6223, 5358, 4047, 3533, 3413, 4253, 3812, 4973, 5237, 5483, 3386, 5815, 5001, 5586, 4393, 3817, 4555, 4997, 6224, 5359, 4048, 3534, 3414, 4254, 3813, 4974, 5238, 5484, 3387, 5816, 5002, 5587, 4394, 3818, 4556, 4998, 6225, 5360, 4049, 3535, 3415, 4255, 3814, 4975, 5239, 5485, 3388, 5817, 5003, 5588, 4395, 3819, 4557, 4999, 6226, 5361, 4050, 3536, 3416, 4256, 3815, 4976, 5240, 5486, 3389, 5818, 5004, 5589, 4396, 3820, 4558, 5000, 6227, 5362, 4051, 3537, 3417, 4257, 3816, 4977, 5241, 5487, 3390, 5819, 5005, 5590, 4397, 3821, 4559, 5001, 6228, 5363, 4052, 3538, 3418, 4258, 3817, 4978, 5242, 5488, 3391, 5820, 5006, 5591, 4398, 3822, 4560, 5002, 6229, 5364, 4053, 3539, 3419, 4259, 3818, 4979, 5243, 5489, 3392, 5821, 5007, 5592, 4399, 3823, 4561, 5003, 6230, 5365, 4054, 3540, 3420, 4260, 3819, 4980, 5244, 5490, 3393, 5822, 5008, 5593, 4400, 3824, 4562, 5004, 6231, 5366, 4055, 3541, 3421, 4261, 3820, 4981, 5245, 5491, 3394, 5823, 5009, 5594, 4401, 3825, 4563, 5005, 6232, 5367, 4056, 3542, 3422, 4262, 3821, 4982, 5246, 5492, 3395, 5824, 5010, 5595, 4402, 3826, 4564, 5006, 6233, 5368, 4057, 3543, 3423, 4263, 3822, 4983, 5247, 5493, 3396, 5825, 5011, 5596, 4403, 3827, 4565, 5007, 6234, 5369, 4058, 3544, 3424, 4264, 3823, 4984, 5248, 5494, 3397, 5826, 5012, 5597, 4404, 3828, 4566, 5008, 6235, 5370, 4059, 3545, 3425, 4265, 3824, 4985, 5249, 5495, 3398, 5827, 5013, 5598, 4405, 3829, 4567, 5009, 6236, 5371, 4060, 3546, 3426, 4266, 3825, 4986, 5250, 5496, 3399, 5828, 5014, 5599, 4406, 3830, 4568, 5010, 6237, 5372, 4061, 3547, 3427, 4267, 3826, 4987, 5251, 5497, 3400, 5829, 5015, 5600, 4407, 3831, 4569, 5011, 6238, 5373, 4062, 3548, 3428, 4268, 3827, 4988, 5252, 5498, 3401, 5830, 5016, 5601, 4408, 3832, 4570, 5012, 6239, 5374, 4063, 3549, 3429, 4269, 3828, 4989, 5253, 5499, 3402, 5831, 5017, 5602, 4409, 3833, 4571, 5013, 6240, 5375, 4064, 3550, 3430, 4270, 3829, 4990, 5254, 5500, 3403, 5832, 5018, 5603, 4410, 3834, 4572, 5014, 6241, 5376, 4065, 3551, 3431, 4271, 3830, 4991, 5255, 5501, 3404, 5833, 5019, 5604, 4411, 3835, 4573, 5015, 6242, 5377, 4066, 3552, 3432, 4272, 3831, 4992, 5256, 5502, 3405, 5834, 5020, 5605, 4412, 3836, 4574, 5016, 6243, 5378, 4067, 3553, 3433, 4273, 3832, 4993, 5257, 5503, 3406, 5835, 5021, 5606, 4413, 3837, 4575, 5017, 6244, 5379, 4068, 3554, 3434, 4274, 3833, 4994, 5258, 5504, 3407, 5836, 5022, 5607, 4414, 3838, 4576, 5018, 6245, 5380, 4069, 3555, 3435, 4275, 3834, 4995, 5259, 5505, 3408, 5837, 5023, 5608, 4415, 3839, 4577, 5019, 6246, 5381, 4070, 3556, 3436, 4276, 3835, 4996, 5260, 5506, 3409, 5838, 5024, 5609, 4416, 3840, 4578, 5020, 6247, 5382, 4071, 3557, 3437, 4277, 3836, 4997, 5261, 5507, 3410, 5839, 5025, 5610, 4417, 3841, 4579, 5021, 6248, 5383, 4072, 3558, 3438, 4278, 3837, 4998, 5262, 5508, 3411, 5840, 5026, 5611, 4418, 3842, 4580, 5022, 6249, 5384, 4073, 3559, 3439, 4279, 3838, 4999, 5263, 5509, 3412, 5841, 5027, 5612, 4419, 3843, 4581, 5023, 6250, 5385, 4074, 3560, 3440, 4280, 3839, 5000, 5264, 5510, 3413, 5842, 5028, 5613, 4420, 3844, 4582, 5024, 6251, 5386, 4075, 3561, 3441, 4281, 3840, 5001, 5265, 5511, 3414, 5843, 5029, 5614, 4421, 3845, 4583, 5025, 6252, 5387, 4076, 3562, 3442, 4282, 3841, 5002, 5266, 5512, 3415, 5844, 5030, 5615, 4422, 3846, 4584, 5026, 6253, 5388, 4077, 3563, 3443, 4283, 3842, 5003, 5267, 5513, 3416, 5845, 5031, 5616, 4423, 3847, 4585, 5027, 6254, 5389, 4078, 3564, 3444, 4284, 3843, 5004, 5268, 5514, 3417, 5846, 5032, 5617, 4424, 3848, 4586, 5028, 6255, 5390, 4079, 3565, 3445, 4285, 3844, 5005, 5269, 5515, 3418, 5847, 5033, 5618, 4425, 3849, 4587, 5029, 6256, 5391, 4080, 3566, 3446, 4286, 3845, 5006, 5270, 5516, 3419, 5848, 5034, 5619, 4426, 3850, 4588, 5030, 6257, 5392, 4081, 3567, 3447, 4287, 3846, 5007, 5271, 5517, 3420, 5849, 5035, 5620, 4427, 3851, 4589, 5031, 6258, 5393, 4082, 3568, 3448, 4288, 3847, 5008, 5272, 5518, 3421, 5850, 5036, 5621, 4428, 3852, 4590, 5032, 6259, 5394, 4083, 3569, 3449, 4289, 3848, 5009, 5273, 5519, 3422, 5851, 5037, 5622, 4429, 3853, 4591, 5033, 6260, 5395, 4084, 3570, 3450, 4290, 3849, 5010, 5274, 5520, 3423, 5852, 5038, 5623, 4430, 3854, 4592, 5034, 6261, 5396, 4085, 3571, 3451, 4291, 3850, 5011, 5275, 5521, 3424, 5853, 5039, 5624, 4431, 3855, 4593, 5035, 6262, 5397, 4086, 3572, 3452, 4292, 3851, 5012, 5276, 5522, 3425, 5854, 5040, 5625, 4432, 3856, 4594, 5036, 6263, 5398, 4087, 3573, 3453, 4293, 3852, 5013, 5277, 5523, 3426, 5855, 4681, 5626, 4433, 3857, 4595, 5037, 6264, 5399, 4088, 3574, 3454, 4294, 3853, 5014, 5278, 5524, 3427, 5856, 4682, 5627, 4434, 3858, 4596, 5038, 6265, 5400, 4089, 3575, 3455, 4295, 3854, 5015, 5279, 5525, 3428, 5857, 4683, 5628, 4435, 3859, 4597, 5039, 6266, 5041, 4090, 3576, 3456, 4296, 3855, 5016, 5280, 5526, 3429, 5858, 4684, 5629, 4436, 3860, 4598, 5040, 6267, 5042, 4091, 3577, 3457, 4297, 3856, 5017, 5281, 5527, 3430, 5859, 4685, 5630, 4437, 3861, 4599, 4681, 6268, 5043, 4092, 3578, 3458, 4298, 3857, 5018, 5282, 5528, 3431, 5860, 4686, 5631, 4438, 3862, 4600, 4682, 6269, 5044, 4093, 3579, 3459, 4299, 3858, 5019, 5283, 5529, 3432, 5861, 4687, 5632, 4439, 3863, 4601, 4683, 6270, 5045, 4094, 3580, 3460, 4300, 3859, 5020, 5284, 5530, 3433, 5862, 4688, 5633, 4440, 3864, 4602, 4684, 6271, 5046, 4095, 3581, 3461, 4301, 3860, 5021, 5285, 5531, 3434, 5863, 4689, 5634, 4441, 3865, 4603, 4685, 6272, 5047, 4096, 3582, 3462, 4302, 3861, 5022, 5286, 5532, 3435, 5864, 4690, 5635, 4442, 3866, 4604, 4686, 6273, 5048, 4097, 3583, 3463, 4303, 3862, 5023, 5287, 5533, 3436, 5865, 4691, 5636, 4443, 3867, 4605, 4687, 6274, 5049, 4098, 3584, 3464, 4304, 3863, 5024, 5288, 5534, 3437, 5866, 4692, 5637, 4444, 3868, 4606, 4688, 6275, 5050, 4099, 3585, 3465, 4305, 3864, 5025, 5289, 5535, 3438, 5867, 4693, 5638, 4445, 3869, 4607, 4689, 6276, 5051, 4100, 3586, 3466, 4306, 3865, 5026, 5290, 5536, 3439, 5868, 4694, 5639, 4446, 3870, 4608, 4690, 6277, 5052, 4101, 3587, 3467, 4307, 3866, 5027, 5291, 5537, 3440, 5869, 4695, 5640, 4447, 3871, 4609, 4691, 6278, 5053, 4102, 3588, 3468, 4308, 3867, 5028, 5292, 5538, 3441, 5870, 4696, 5641, 4448, 3872, 4610, 4692, 6279, 5054, 4103, 3589, 3469, 4309, 3868, 5029, 5293, 5539, 3442, 5871, 4697, 5642, 4449, 3873, 4611, 4693, 6280, 5055, 4104, 3590, 3470, 4310, 3869, 5030, 5294, 5540, 3443, 5872, 4698, 5643, 4450, 3874, 4612, 4694, 6281, 5056, 4105, 3591, 3471, 4311, 3870, 5031, 5295, 5541, 3444, 5873, 4699, 5644, 4451, 3875, 4613, 4695, 6282, 5057, 4106, 3592, 3472, 4312, 3871, 5032, 5296, 5542, 3445, 5874, 4700, 5645, 4452, 3876, 4614, 4696, 6283, 5058, 4107, 3593, 3473, 4313, 3872, 5033, 5297, 5543, 3446, 5875, 4701, 5646, 4453, 3877, 4615, 4697, 6284, 5059, 4108, 3594, 3474, 4314, 3873, 5034, 5298, 5544, 3447, 5876, 4702, 5647, 4454, 3878, 4616, 4698, 6285, 5060, 4109, 3595, 3475, 4315, 3874, 5035, 5299, 5545, 3448, 5877, 4703, 5648, 4455, 3879, 4617, 4699, 6286, 5061, 4110, 3596, 3476, 4316, 3875, 5036, 5300, 5546, 3449, 5878, 4704, 5649, 4456, 3880, 4618, 4700, 6287, 5062, 4111, 3597, 3477, 4317, 3876, 5037, 5301, 5547, 3450, 5879, 4705, 5650, 4457, 3881, 4619, 4701, 6288, 5063, 4112, 3598, 3478, 4318, 3877, 5038, 5302, 5548, 3451, 5880, 4706, 5651, 4458, 3882, 4620, 4702, 6289, 5064, 4113, 3599, 3479, 4319, 3878, 5039, 5303, 5549, 3452, 5881, 4707, 5652, 4459, 3883, 4621, 4703, 6290, 5065, 4114, 3600, 3480, 4320, 3879, 5040, 5304, 5550, 3453, 5882, 4708, 5653, 4460, 3884, 4622, 4704, 6291, 5066, 4115, 4182, 3601, 6068, 4321, 6165, 5305, 5551, 5761, 6121, 6481, 6841, 7201, 7561, 7343, 6827, 8641, 8783, 6929, 4183, 3602, 6069, 4322, 6166, 5306, 5552, 5762, 6122, 6482, 6842, 7202, 7562, 7344, 6828, 8642, 8784, 6930, 4184, 3603, 6070, 4323, 6167, 5307, 5553, 5763, 6123, 6483, 6843, 7203, 7563, 7345, 6829, 8643, 8785, 6931, 4185, 3604, 6071, 4324, 6168, 5308, 5554, 5764, 6124, 6484, 6844, 7204, 7564, 7346, 6830, 8644, 8786, 6932, 4186, 3605, 6072, 4325, 6169, 5309, 5555, 5765, 6125, 6485, 6845, 7205, 7565, 7347, 6831, 8645, 8787, 6933, 4187, 3606, 6073, 4326, 6170, 5310, 5556, 5766, 6126, 6486, 6846, 7206, 7566, 7348, 6832, 8646, 8788, 6934, 4188, 3607, 6074, 4327, 6171, 5311, 5557, 5767, 6127, 6487, 6847, 7207, 7567, 7349, 6833, 8647, 8789, 6935, 4189, 3608, 6075, 4328, 6172, 5312, 5558, 5768, 6128, 6488, 6848, 7208, 7568, 7350, 6834, 8648, 8790, 6936, 4190, 3609, 6076, 4329, 6173, 5313, 5559, 5769, 6129, 6489, 6849, 7209, 7569, 7351, 6835, 8649, 8791, 6937, 4191, 3610, 6077, 4330, 6174, 5314, 5560, 5770, 6130, 6490, 6850, 7210, 7570, 7352, 6836, 8650, 8792, 6938, 4192, 3611, 6078, 4331, 6175, 5315, 5561, 5771, 6131, 6491, 6851, 7211, 7571, 7353, 6837, 8651, 8793, 6939, 4193, 3612, 6079, 4332, 6176, 5316, 5562, 5772, 6132, 6492, 6852, 7212, 7572, 7354, 6838, 8652, 8794, 6940, 4194, 3613, 6080, 4333, 6177, 5317, 5563, 5773, 6133, 6493, 6853, 7213, 7573, 7355, 6839, 8653, 8795, 6941, 4195, 3614, 6081, 4334, 6178, 5318, 5564, 5774, 6134, 6494, 6854, 7214, 7574, 7356, 6840, 8654, 8796, 6942, 4196, 3615, 6082, 4335, 6179, 5319, 5565, 5775, 6135, 6495, 6855, 7215, 7575, 7357, 6481, 8655, 8797, 6943, 4197, 3616, 6083, 4336, 6180, 5320, 5566, 5776, 6136, 6496, 6856, 7216, 7576, 7358, 6482, 8656, 8798, 6944, 4198, 3617, 6084, 4337, 6181, 5321, 5567, 5777, 6137, 6497, 6857, 7217, 7577, 7359, 6483, 8657, 8799, 6945, 4199, 3618, 6085, 4338, 6182, 5322, 5568, 5778, 6138, 6498, 6858, 7218, 7578, 7360, 6484, 8658, 8800, 6946, 4200, 3619, 6086, 4339, 6183, 5323, 5569, 5779, 6139, 6499, 6859, 7219, 7579, 7361, 6485, 8659, 8801, 6947, 4201, 3620, 6087, 4340, 6184, 5324, 5570, 5780, 6140, 6500, 6860, 7220, 7580, 7362, 6486, 8660, 8802, 6948, 4202, 3621, 6088, 4341, 6185, 5325, 5571, 5781, 6141, 6501, 6861, 7221, 7581, 7363, 6487, 8661, 8803, 6949, 4203, 3622, 6089, 4342, 6186, 5326, 5572, 5782, 6142, 6502, 6862, 7222, 7582, 7364, 6488, 8662, 8804, 6950, 4204, 3623, 6090, 4343, 6187, 5327, 5573, 5783, 6143, 6503, 6863, 7223, 7583, 7365, 6489, 8663, 8805, 6951, 4205, 3624, 6091, 4344, 6188, 5328, 5574, 5784, 6144, 6504, 6864, 7224, 7584, 7366, 6490, 8664, 8806, 6952, 4206, 3625, 6092, 4345, 6189, 5329, 5575, 5785, 6145, 6505, 6865, 7225, 7585, 7367, 6491, 8665, 8807, 6953, 4207, 3626, 6093, 4346, 6190, 5330, 5576, 5786, 6146, 6506, 6866, 7226, 7586, 7368, 6492, 8666, 8808, 6954, 4208, 3627, 6094, 4347, 6191, 5331, 5577, 5787, 6147, 6507, 6867, 7227, 7587, 7369, 6493, 8667, 8809, 6955, 4209, 3628, 6095, 4348, 6192, 5332, 5578, 5788, 6148, 6508, 6868, 7228, 7588, 7370, 6494, 8668, 8810, 6956, 4210, 3629, 6096, 4349, 6193, 5333, 5579, 5789, 6149, 6509, 6869, 7229, 7589, 7371, 6495, 8669, 8811, 6957, 4211, 3630, 6097, 4350, 6194, 5334, 5580, 5790, 6150, 6510, 6870, 7230, 7590, 7372, 6496, 8670, 8812, 6958, 4212, 3631, 6098, 4351, 6195, 5335, 5581, 5791, 6151, 6511, 6871, 7231, 7591, 7373, 6497, 8671, 8813, 6959, 4213, 3632, 6099, 4352, 6196, 5336, 5582, 5792, 6152, 6512, 6872, 7232, 7592, 7374, 6498, 8672, 8814, 6960, 4214, 3633, 6100, 4353, 6197, 5337, 5583, 5793, 6153, 6513, 6873, 7233, 7593, 7375, 6499, 8673, 8815, 6961, 4215, 3634, 6101, 4354, 6198, 5338, 5584, 5794, 6154, 6514, 6874, 7234, 7594, 7376, 6500, 8674, 8816, 6962, 4216, 3635, 6102, 4355, 6199, 5339, 5585, 5795, 6155, 6515, 6875, 7235, 7595, 7377, 6501, 8675, 8817, 6963, 4217, 3636, 6103, 4356, 6200, 5340, 5586, 5796, 6156, 6516, 6876, 7236, 7596, 7378, 6502, 8676, 8818, 6964, 4218, 3637, 6104, 4357, 6201, 5341, 5587, 5797, 6157, 6517, 6877, 7237, 7597, 7379, 6503, 8677, 8819, 6965, 4219, 3638, 6105, 4358, 6202, 5342, 5588, 5798, 6158, 6518, 6878, 7238, 7598, 7380, 6504, 8678, 8820, 6966, 4220, 3639, 6106, 4359, 6203, 5343, 5589, 5799, 6159, 6519, 6879, 7239, 7599, 7381, 6505, 8679, 8821, 6967, 4221, 3640, 6107, 4360, 6204, 5344, 5590, 5800, 6160, 6520, 6880, 7240, 7600, 7382, 6506, 8680, 8822, 6968, 4222, 3641, 6108, 4361, 6205, 5345, 5591, 5801, 6161, 6521, 6881, 7241, 7601, 7383, 6507, 8681, 8823, 6969, 4223, 3642, 6109, 4362, 6206, 5346, 5592, 5802, 6162, 6522, 6882, 7242, 7602, 7384, 6508, 8682, 8824, 6970, 4224, 3643, 6110, 4363, 6207, 5347, 5593, 5803, 6163, 6523, 6883, 7243, 7603, 7385, 6509, 8683, 8825, 6971, 4225, 3644, 6111, 4364, 6208, 5348, 5594, 5804, 6164, 6524, 6884, 7244, 7604, 7386, 6510, 8684, 8826, 6972, 4226, 3645, 6112, 4365, 6209, 5349, 5595, 5805, 6165, 6525, 6885, 7245, 7605, 7387, 6511, 8685, 8827, 6973, 4227, 3646, 6113, 4366, 6210, 5350, 5596, 5806, 6166, 6526, 6886, 7246, 7606, 7388, 6512, 8686, 8828, 6974, 4228, 3647, 6114, 4367, 6211, 5351, 5597, 5807, 6167, 6527, 6887, 7247, 7607, 7389, 6513, 8687, 8829, 6975, 4229, 3648, 6115, 4368, 6212, 5352, 5598, 5808, 6168, 6528, 6888, 7248, 7608, 7390, 6514, 8688, 8830, 6976, 4230, 3649, 6116, 4369, 6213, 5353, 5599, 5809, 6169, 6529, 6889, 7249, 7609, 7391, 6515, 8689, 8831, 6977, 4231, 3650, 6117, 4370, 6214, 5354, 5600, 5810, 6170, 6530, 6890, 7250, 7610, 7392, 6516, 8690, 8832, 6978, 4232, 3651, 6118, 4371, 6215, 5355, 5601, 5811, 6171, 6531, 6891, 7251, 7611, 7393, 6517, 8691, 8833, 6979, 4233, 3652, 6119, 4372, 6216, 5356, 5602, 5812, 6172, 6532, 6892, 7252, 7612, 7394, 6518, 8692, 8834, 6980, 4234, 3653, 6120, 4373, 6217, 5357, 5603, 5813, 6173, 6533, 6893, 7253, 7613, 7395, 6519, 8693, 8835, 6981, 4235, 3654, 5761, 4374, 6218, 5358, 5604, 5814, 6174, 6534, 6894, 7254, 7614, 7396, 6520, 8694, 8836, 6982, 4236, 3655, 5762, 4375, 6219, 5359, 5605, 5815, 6175, 6535, 6895, 7255, 7615, 7397, 6521, 8695, 8837, 6983, 4237, 3656, 5763, 4376, 6220, 5360, 5606, 5816, 6176, 6536, 6896, 7256, 7616, 7398, 6522, 8696, 8838, 6984, 4238, 3657, 5764, 4377, 6221, 5361, 5607, 5817, 6177, 6537, 6897, 7257, 7617, 7399, 6523, 8697, 8839, 6985, 4239, 3658, 5765, 4378, 6222, 5362, 5608, 5818, 6178, 6538, 6898, 7258, 7618, 7400, 6524, 8698, 8840, 6986, 4240, 3659, 5766, 4379, 6223, 5363, 5609, 5819, 6179, 6539, 6899, 7259, 7619, 7401, 6525, 8699, 8841, 6987, 4241, 3660, 5767, 4380, 6224, 5364, 5610, 5820, 6180, 6540, 6900, 7260, 7620, 7402, 6526, 8700, 8842, 6988, 4242, 3661, 5768, 4381, 6225, 5365, 5611, 5821, 6181, 6541, 6901, 7261, 7621, 7403, 6527, 8701, 8843, 6989, 4243, 3662, 5769, 4382, 6226, 5366, 5612, 5822, 6182, 6542, 6902, 7262, 7622, 7404, 6528, 8702, 8844, 6990, 4244, 3663, 5770, 4383, 6227, 5367, 5613, 5823, 6183, 6543, 6903, 7263, 7623, 7405, 6529, 8703, 8845, 6991, 4245, 3664, 5771, 4384, 6228, 5368, 5614, 5824, 6184, 6544, 6904, 7264, 7624, 7406, 6530, 8704, 8846, 6992, 4246, 3665, 5772, 4385, 6229, 5369, 5615, 5825, 6185, 6545, 6905, 7265, 7625, 7407, 6531, 8705, 8847, 6993, 4247, 3666, 5773, 4386, 6230, 5370, 5616, 5826, 6186, 6546, 6906, 7266, 7626, 7408, 6532, 8706, 8848, 6994, 4248, 3667, 5774, 4387, 6231, 5371, 5617, 5827, 6187, 6547, 6907, 7267, 7627, 7409, 6533, 8707, 8849, 6995, 4249, 3668, 5775, 4388, 6232, 5372, 5618, 5828, 6188, 6548, 6908, 7268, 7628, 7410, 6534, 8708, 8850, 6996, 4250, 3669, 5776, 4389, 6233, 5373, 5619, 5829, 6189, 6549, 6909, 7269, 7629, 7411, 6535, 8709, 8851, 6997, 4251, 3670, 5777, 4390, 6234, 5374, 5620, 5830, 6190, 6550, 6910, 7270, 7630, 7412, 6536, 8710, 8852, 6998, 4252, 3671, 5778, 4391, 6235, 5375, 5621, 5831, 6191, 6551, 6911, 7271, 7631, 7413, 6537, 8711, 8853, 6999, 4253, 3672, 5779, 4392, 6236, 5376, 5622, 5832, 6192, 6552, 6912, 7272, 7632, 7414, 6538, 8712, 8854, 7000, 4254, 3673, 5780, 4393, 6237, 5377, 5623, 5833, 6193, 6553, 6913, 7273, 7633, 7415, 6539, 8713, 8855, 7001, 4255, 3674, 5781, 4394, 6238, 5378, 5624, 5834, 6194, 6554, 6914, 7274, 7634, 7416, 6540, 8714, 8856, 7002, 4256, 3675, 5782, 4395, 6239, 5379, 5625, 5835, 6195, 6555, 6915, 7275, 7635, 7417, 6541, 8715, 8857, 7003, 4257, 3676, 5783, 4396, 6240, 5380, 5626, 5836, 6196, 6556, 6916, 7276, 7636, 7418, 6542, 8716, 8858, 7004, 4258, 3677, 5784, 4397, 6241, 5381, 5627, 5837, 6197, 6557, 6917, 7277, 7637, 7419, 6543, 8717, 8859, 7005, 4259, 3678, 5785, 4398, 6242, 5382, 5628, 5838, 6198, 6558, 6918, 7278, 7638, 7420, 6544, 8718, 8860, 7006, 4260, 3679, 5786, 4399, 6243, 5383, 5629, 5839, 6199, 6559, 6919, 7279, 7639, 7421, 6545, 8719, 8861, 7007, 4261, 3680, 5787, 4400, 6244, 5384, 5630, 5840, 6200, 6560, 6920, 7280, 7640, 7422, 6546, 8720, 8862, 7008, 4262, 3681, 5788, 4401, 6245, 5385, 5631, 5841, 6201, 6561, 6921, 7281, 7641, 7423, 6547, 8721, 8863, 7009, 4263, 3682, 5789, 4402, 6246, 5386, 5632, 5842, 6202, 6562, 6922, 7282, 7642, 7424, 6548, 8722, 8864, 7010, 4264, 3683, 5790, 4403, 6247, 5387, 5633, 5843, 6203, 6563, 6923, 7283, 7643, 7425, 6549, 8723, 8865, 7011, 4265, 3684, 5791, 4404, 6248, 5388, 5634, 5844, 6204, 6564, 6924, 7284, 7644, 7426, 6550, 8724, 8866, 7012, 4266, 3685, 5792, 4405, 6249, 5389, 5635, 5845, 6205, 6565, 6925, 7285, 7645, 7427, 6551, 8725, 8867, 7013, 4267, 3686, 5793, 4406, 6250, 5390, 5636, 5846, 6206, 6566, 6926, 7286, 7646, 7428, 6552, 8726, 8868, 7014, 4268, 3687, 5794, 4407, 6251, 5391, 5637, 5847, 6207, 6567, 6927, 7287, 7647, 7429, 6553, 8727, 8869, 7015, 4269, 3688, 5795, 4408, 6252, 5392, 5638, 5848, 6208, 6568, 6928, 7288, 7648, 7430, 6554, 8728, 8870, 7016, 4270, 3689, 5796, 4409, 6253, 5393, 5639, 5849, 6209, 6569, 6929, 7289, 7649, 7431, 6555, 8729, 8871, 7017, 4271, 3690, 5797, 4410, 6254, 5394, 5640, 5850, 6210, 6570, 6930, 7290, 7650, 7432, 6556, 8730, 8872, 7018, 4272, 3691, 5798, 4411, 6255, 5395, 5641, 5851, 6211, 6571, 6931, 7291, 7651, 7433, 6557, 8731, 8873, 7019, 4273, 3692, 5799, 4412, 6256, 5396, 5642, 5852, 6212, 6572, 6932, 7292, 7652, 7434, 6558, 8732, 8874, 7020, 4274, 3693, 5800, 4413, 6257, 5397, 5643, 5853, 6213, 6573, 6933, 7293, 7653, 7435, 6559, 8733, 8875, 7021, 4275, 3694, 5801, 4414, 6258, 5398, 5644, 5854, 6214, 6574, 6934, 7294, 7654, 7436, 6560, 8734, 8876, 7022, 4276, 3695, 5802, 4415, 6259, 5399, 5645, 5855, 6215, 6575, 6935, 7295, 7655, 7437, 6561, 8735, 8877, 7023, 4277, 3696, 5803, 4416, 6260, 5400, 5646, 5856, 6216, 6576, 6936, 7296, 7656, 7438, 6562, 8736, 8878, 7024, 4278, 3697, 5804, 4417, 6261, 5137, 5647, 5857, 6217, 6577, 6937, 7297, 7657, 7439, 6563, 8737, 8879, 7025, 4279, 3698, 5805, 4418, 6262, 5138, 5648, 5858, 6218, 6578, 6938, 7298, 7658, 7440, 6564, 8738, 8880, 7026, 4280, 3699, 5806, 4419, 6263, 5139, 5649, 5859, 6219, 6579, 6939, 7299, 7659, 7441, 6565, 8739, 8881, 7027, 4281, 3700, 5807, 4420, 6264, 5140, 5650, 5860, 6220, 6580, 6940, 7300, 7660, 7442, 6566, 8740, 8882, 7028, 4282, 3701, 5808, 4421, 6265, 5141, 5651, 5861, 6221, 6581, 6941, 7301, 7661, 7443, 6567, 8741, 8883, 7029, 4283, 3702, 5809, 4422, 6266, 5142, 5652, 5862, 6222, 6582, 6942, 7302, 7662, 7444, 6568, 8742, 8884, 7030, 4284, 3703, 5810, 4423, 6267, 5143, 5653, 5863, 6223, 6583, 6943, 7303, 7663, 7445, 6569, 8743, 8885, 7031, 4285, 3704, 5811, 4424, 6268, 5144, 5654, 5864, 6224, 6584, 6944, 7304, 7664, 7446, 6570, 8744, 8886, 7032, 4286, 3705, 5812, 4425, 6269, 5145, 5655, 5865, 6225, 6585, 6945, 7305, 7665, 7447, 6571, 8745, 8887, 7033, 4287, 3706, 5813, 4426, 6270, 5146, 5656, 5866, 6226, 6586, 6946, 7306, 7666, 7448, 6572, 8746, 8888, 7034, 4288, 3707, 5814, 4427, 6271, 5147, 5657, 5867, 6227, 6587, 6947, 7307, 7667, 7449, 6573, 8747, 8889, 7035, 4289, 3708, 5815, 4428, 6272, 5148, 5658, 5868, 6228, 6588, 6948, 7308, 7668, 7450, 6574, 8748, 8890, 7036, 4290, 3709, 5816, 4429, 6273, 5149, 5659, 5869, 6229, 6589, 6949, 7309, 7669, 7451, 6575, 8749, 8891, 7037, 4291, 3710, 5817, 4430, 6274, 5150, 5660, 5870, 6230, 6590, 6950, 7310, 7670, 7452, 6576, 8750, 8892, 7038, 4292, 3711, 5818, 4431, 6275, 5151, 5661, 5871, 6231, 6591, 6951, 7311, 7671, 7453, 6577, 8751, 8893, 7039, 4293, 3712, 5819, 4432, 6276, 5152, 5662, 5872, 6232, 6592, 6952, 7312, 7672, 7454, 6578, 8752, 8894, 7040, 4294, 3713, 5820, 4433, 6277, 5153, 5663, 5873, 6233, 6593, 6953, 7313, 7673, 7455, 6579, 8753, 8895, 7041, 4295, 3714, 5821, 4434, 6278, 5154, 5664, 5874, 6234, 6594, 6954, 7314, 7674, 7456, 6580, 8754, 8896, 7042, 4296, 3715, 5822, 4435, 6279, 5155, 5665, 5875, 6235, 6595, 6955, 7315, 7675, 7457, 6581, 8755, 8897, 7043, 4297, 3716, 5823, 4436, 6280, 5156, 5666, 5876, 6236, 6596, 6956, 7316, 7676, 7458, 6582, 8756, 8898, 7044, 4298, 3717, 5824, 4437, 6281, 5157, 5667, 5877, 6237, 6597, 6957, 7317, 7677, 7459, 6583, 8757, 8899, 7045, 4299, 3718, 5825, 4438, 6282, 5158, 5668, 5878, 6238, 6598, 6958, 7318, 7678, 7460, 6584, 8758, 8900, 7046, 4300, 3719, 5826, 4439, 6283, 5159, 5669, 5879, 6239, 6599, 6959, 7319, 7679, 7461, 6585, 8759, 8901, 7047, 4301, 3720, 5827, 4440, 6284, 5160, 5670, 5880, 6240, 6600, 6960, 7320, 7680, 7462, 6586, 8760, 8902, 7048, 4302, 3721, 5828, 4441, 6285, 5161, 5671, 5881, 6241, 6601, 6961, 7321, 7681, 7463, 6587, 8761, 8903, 7049, 4303, 3722, 5829, 4442, 6286, 5162, 5672, 5882, 6242, 6602, 6962, 7322, 7682, 7464, 6588, 8762, 8904, 7050, 4304, 3723, 5830, 4443, 6287, 5163, 5673, 5883, 6243, 6603, 6963, 7323, 7683, 7465, 6589, 8763, 8905, 7051, 4305, 3724, 5831, 4444, 6288, 5164, 5674, 5884, 6244, 6604, 6964, 7324, 7684, 7466, 6590, 8764, 8906, 7052, 4306, 3725, 5832, 4445, 6289, 5165, 5675, 5885, 6245, 6605, 6965, 7325, 7685, 7467, 6591, 8765, 8907, 7053, 4307, 3726, 5833, 4446, 6290, 5166, 5676, 5886, 6246, 6606, 6966, 7326, 7686, 7468, 6592, 8766, 8908, 7054, 4308, 3727, 5834, 4447, 6291, 5167, 5677, 5887, 6247, 6607, 6967, 7327, 7687, 7469, 6593, 8767, 8909, 7055, 4309, 3728, 5835, 4448, 6292, 5168, 5678, 5888, 6248, 6608, 6968, 7328, 7688, 7470, 6594, 8768, 8910, 7056, 4310, 3729, 5836, 4449, 6293, 5169, 5679, 5889, 6249, 6609, 6969, 7329, 7689, 7471, 6595, 8769, 8911, 7057, 4311, 3730, 5837, 4450, 6294, 5170, 5680, 5890, 6250, 6610, 6970, 7330, 7690, 7472, 6596, 8770, 8912, 7058, 4312, 3731, 5838, 4451, 6295, 5171, 5681, 5891, 6251, 6611, 6971, 7331, 7691, 7473, 6597, 8771, 8913, 7059, 4313, 3732, 5839, 4452, 6296, 5172, 5682, 5892, 6252, 6612, 6972, 7332, 7692, 7474, 6598, 8772, 8914, 7060, 4314, 3733, 5840, 4453, 6297, 5173, 5683, 5893, 6253, 6613, 6973, 7333, 7693, 7475, 6599, 8773, 8915, 7061, 4315, 3734, 5841, 4454, 6298, 5174, 5684, 5894, 6254, 6614, 6974, 7334, 7694, 7476, 6600, 8774, 8916, 7062, 4316, 3735, 5842, 4455, 6299, 5175, 5685, 5895, 6255, 6615, 6975, 7335, 7695, 7477, 6601, 8775, 8917, 7063, 4317, 3736, 5843, 4456, 6300, 5176, 5686, 5896, 6256, 6616, 6976, 7336, 7696, 7478, 6602, 8776, 8918, 7064, 4318, 3737, 5844, 4457, 6301, 5177, 5687, 5897, 6257, 6617, 6977, 7337, 7697, 7479, 6603, 8777, 8919, 7065, 4319, 3738, 5845, 4458, 6302, 5178, 5688, 5898, 6258, 6618, 6978, 7338, 7698, 7480, 6604, 8778, 8920, 7066, 4320, 3739, 5846, 4459, 6303, 5179, 5689, 5899, 6259, 6619, 6979, 7339, 7699, 7481, 6605, 8779, 8921, 7067, 3961, 3740, 5847, 4460, 6304, 5180, 5690, 5900, 6260, 6620, 6980, 7340, 7700, 7482, 6606, 8780, 8922, 7068, 3962, 3741, 5848, 4461, 6305, 5181, 5691, 5901, 6261, 6621, 6981, 7341, 7701, 7483, 6607, 8781, 8923, 7069, 3963, 3742, 5849, 4462, 6306, 5182, 5692, 5902, 6262, 6622, 6982, 7342, 7702, 7484, 6608, 8782, 8924, 7070, 3964, 3743, 5850, 4463, 6307, 5183, 5693, 5903, 6263, 6623, 6983, 7343, 7703, 7485, 6609, 8783, 8925, 7071, 3965, 3744, 5851, 4464, 6308, 5184, 5694, 5904, 6264, 6624, 6984, 7344, 7704, 7486, 6610, 8784, 8926, 7072, 3966, 3745, 5852, 4465, 6309, 5185, 5695, 5905, 6265, 6625, 6985, 7345, 7705, 7487, 6611, 8785, 8927, 7073, 3967, 3746, 5853, 4466, 6310, 5186, 5696, 5906, 6266, 6626, 6986, 7346, 7706, 7488, 6612, 8786, 8928, 7074, 3968, 3747, 5854, 4467, 6311, 5187, 5697, 5907, 6267, 6627, 6987, 7347, 7707, 7489, 6613, 8787, 8929, 7075, 3969, 3748, 5855, 4468, 6312, 5188, 5698, 5908, 6268, 6628, 6988, 7348, 7708, 7490, 6614, 8788, 8930, 7076, 3970, 3749, 5856, 4469, 6313, 5189, 5699, 5909, 6269, 6629, 6989, 7349, 7709, 7491, 6615, 8789, 8931, 7077, 3971, 3750, 5857, 4470, 6314, 5190, 5700, 5910, 6270, 6630, 6990, 7350, 7710, 7492, 6616, 8790, 8932, 7078, 3972, 3751, 5858, 4471, 6315, 5191, 5701, 5911, 6271, 6631, 6991, 7351, 7711, 7493, 6617, 8791, 8933, 7079, 3973, 3752, 5859, 4472, 6316, 5192, 5702, 5912, 6272, 6632, 6992, 7352, 7712, 7494, 6618, 8792, 8934, 7080, 3974, 3753, 5860, 4473, 6317, 5193, 5703, 5913, 6273, 6633, 6993, 7353, 7713, 7495, 6619, 8793, 8935, 7081, 3975, 3754, 5861, 4474, 6318, 5194, 5704, 5914, 6274, 6634, 6994, 7354, 7714, 7496, 6620, 8794, 8936, 7082, 3976, 3755, 5862, 4475, 6319, 5195, 5705, 5915, 6275, 6635, 6995, 7355, 7715, 7497, 6621, 8795, 8937, 7083, 3977, 3756, 5863, 4476, 6320, 5196, 5706, 5916, 6276, 6636, 6996, 7356, 7716, 7498, 6622, 8796, 8938, 7084, 3978, 3757, 5864, 4477, 6321, 5197, 5707, 5917, 6277, 6637, 6997, 7357, 7717, 7499, 6623, 8797, 8939, 7085, 3979, 3758, 5865, 4478, 6322, 5198, 5708, 5918, 6278, 6638, 6998, 7358, 7718, 7500, 6624, 8798, 8940, 7086, 3980, 3759, 5866, 4479, 6323, 5199, 5709, 5919, 6279, 6639, 6999, 7359, 7719, 7501, 6625, 8799, 8941, 7087, 3981, 3760, 5867, 4480, 6324, 5200, 5710, 5920, 6280, 6640, 7000, 7360, 7720, 7502, 6626, 8800, 8942, 7088, 3982, 3761, 5868, 4481, 6325, 5201, 5711, 5921, 6281, 6641, 7001, 7361, 7721, 7503, 6627, 8801, 8943, 7089, 3983, 3762, 5869, 4482, 6326, 5202, 5712, 5922, 6282, 6642, 7002, 7362, 7722, 7504, 6628, 8802, 8944, 7090, 3984, 3763, 5870, 4483, 6327, 5203, 5713, 5923, 6283, 6643, 7003, 7363, 7723, 7505, 6629, 8803, 8945, 7091, 3985, 3764, 5871, 4484, 6328, 5204, 5714, 5924, 6284, 6644, 7004, 7364, 7724, 7506, 6630, 8804, 8946, 7092, 3986, 3765, 5872, 4485, 6329, 5205, 5715, 5925, 6285, 6645, 7005, 7365, 7725, 7507, 6631, 8805, 8947, 7093, 3987, 3766, 5873, 4486, 6330, 5206, 5716, 5926, 6286, 6646, 7006, 7366, 7726, 7508, 6632, 8806, 8948, 7094, 3988, 3767, 5874, 4487, 6331, 5207, 5717, 5927, 6287, 6647, 7007, 7367, 7727, 7509, 6633, 8807, 8949, 7095, 3989, 3768, 5875, 4488, 6332, 5208, 5718, 5928, 6288, 6648, 7008, 7368, 7728, 7510, 6634, 8808, 8950, 7096, 3990, 3769, 5876, 4489, 6333, 5209, 5719, 5929, 6289, 6649, 7009, 7369, 7729, 7511, 6635, 8809, 8951, 7097, 3991, 3770, 5877, 4490, 6334, 5210, 5720, 5930, 6290, 6650, 7010, 7370, 7730, 7512, 6636, 8810, 8952, 7098, 3992, 3771, 5878, 4491, 6335, 5211, 5721, 5931, 6291, 6651, 7011, 7371, 7731, 7513, 6637, 8811, 8953, 7099, 3993, 3772, 5879, 4492, 6336, 5212, 5722, 5932, 6292, 6652, 7012, 7372, 7732, 7514, 6638, 8812, 8954, 7100, 3994, 3773, 5880, 4493, 6337, 5213, 5723, 5933, 6293, 6653, 7013, 7373, 7733, 7515, 6639, 8813, 8955, 7101, 3995, 3774, 5881, 4494, 6338, 5214, 5724, 5934, 6294, 6654, 7014, 7374, 7734, 7516, 6640, 8814, 8956, 7102, 3996, 3775, 5882, 4495, 6339, 5215, 5725, 5935, 6295, 6655, 7015, 7375, 7735, 7517, 6641, 8815, 8957, 7103, 3997, 3776, 5883, 4496, 6340, 5216, 5726, 5936, 6296, 6656, 7016, 7376, 7736, 7518, 6642, 8816, 8958, 7104, 3998, 3777, 5884, 4497, 6341, 5217, 5727, 5937, 6297, 6657, 7017, 7377, 7737, 7519, 6643, 8817, 8959, 7105, 3999, 3778, 5885, 4498, 6342, 5218, 5728, 5938, 6298, 6658, 7018, 7378, 7738, 7520, 6644, 8818, 8960, 7106, 4000, 3779, 5886, 4499, 6343, 5219, 5729, 5939, 6299, 6659, 7019, 7379, 7739, 7521, 6645, 8819, 8961, 7107, 4001, 3780, 5887, 4500, 6344, 5220, 5730, 5940, 6300, 6660, 7020, 7380, 7740, 7522, 6646, 8820, 8962, 7108, 4002, 3781, 5888, 4501, 6345, 5221, 5731, 5941, 6301, 6661, 7021, 7381, 7741, 7523, 6647, 8821, 8963, 7109, 4003, 3782, 5889, 4502, 6346, 5222, 5732, 5942, 6302, 6662, 7022, 7382, 7742, 7524, 6648, 8822, 8964, 7110, 4004, 3783, 5890, 4503, 6347, 5223, 5733, 5943, 6303, 6663, 7023, 7383, 7743, 7525, 6649, 8823, 8965, 7111, 4005, 3784, 5891, 4504, 6348, 5224, 5734, 5944, 6304, 6664, 7024, 7384, 7744, 7526, 6650, 8824, 8966, 7112, 4006, 3785, 5892, 4505, 6349, 5225, 5735, 5945, 6305, 6665, 7025, 7385, 7745, 7527, 6651, 8825, 8967, 7113, 4007, 3786, 5893, 4506, 6350, 5226, 5736, 5946, 6306, 6666, 7026, 7386, 7746, 7528, 6652, 8826, 8968, 7114, 4008, 3787, 5894, 4507, 6351, 5227, 5737, 5947, 6307, 6667, 7027, 7387, 7747, 7529, 6653, 8827, 8969, 7115, 4009, 3788, 5895, 4508, 6352, 5228, 5738, 5948, 6308, 6668, 7028, 7388, 7748, 7530, 6654, 8828, 8970, 7116, 4010, 3789, 5896, 4509, 6353, 5229, 5739, 5949, 6309, 6669, 7029, 7389, 7749, 7531, 6655, 8829, 8971, 7117, 4011, 3790, 5897, 4510, 6354, 5230, 5740, 5950, 6310, 6670, 7030, 7390, 7750, 7532, 6656, 8830, 8972, 7118, 4012, 3791, 5898, 4511, 6355, 5231, 5741, 5951, 6311, 6671, 7031, 7391, 7751, 7533, 6657, 8831, 8973, 7119, 4013, 3792, 5899, 4512, 6356, 5232, 5742, 5952, 6312, 6672, 7032, 7392, 7752, 7534, 6658, 8832, 8974, 7120, 4014, 3793, 5900, 4513, 6357, 5233, 5743, 5953, 6313, 6673, 7033, 7393, 7753, 7535, 6659, 8833, 8975, 7121, 4015, 3794, 5901, 4514, 6358, 5234, 5744, 5954, 6314, 6674, 7034, 7394, 7754, 7536, 6660, 8834, 8976, 7122, 4016, 3795, 5902, 4515, 6359, 5235, 5745, 5955, 6315, 6675, 7035, 7395, 7755, 7537, 6661, 8835, 8977, 7123, 4017, 3796, 5903, 4516, 6360, 5236, 5746, 5956, 6316, 6676, 7036, 7396, 7756, 7538, 6662, 8836, 8978, 7124, 4018, 3797, 5904, 4517, 6361, 5237, 5747, 5957, 6317, 6677, 7037, 7397, 7757, 7539, 6663, 8837, 8979, 7125, 4019, 3798, 5905, 4518, 6362, 5238, 5748, 5958, 6318, 6678, 7038, 7398, 7758, 7540, 6664, 8838, 8980, 7126, 4020, 3799, 5906, 4519, 6363, 5239, 5749, 5959, 6319, 6679, 7039, 7399, 7759, 7541, 6665, 8839, 8981, 7127, 4021, 3800, 5907, 4520, 6364, 5240, 5750, 5960, 6320, 6680, 7040, 7400, 7760, 7542, 6666, 8840, 8982, 7128, 4022, 3801, 5908, 4521, 6365, 5241, 5751, 5961, 6321, 6681, 7041, 7401, 7761, 7543, 6667, 8841, 8983, 7129, 4023, 3802, 5909, 4522, 6366, 5242, 5752, 5962, 6322, 6682, 7042, 7402, 7762, 7544, 6668, 8842, 8984, 7130, 4024, 3803, 5910, 4523, 6367, 5243, 5753, 5963, 6323, 6683, 7043, 7403, 7763, 7545, 6669, 8843, 8985, 7131, 4025, 3804, 5911, 4524, 6368, 5244, 5754, 5964, 6324, 6684, 7044, 7404, 7764, 7546, 6670, 8844, 8986, 7132, 4026, 3805, 5912, 4525, 6369, 5245, 5755, 5965, 6325, 6685, 7045, 7405, 7765, 7547, 6671, 8845, 8987, 7133, 4027, 3806, 5913, 4526, 6370, 5246, 5756, 5966, 6326, 6686, 7046, 7406, 7766, 7548, 6672, 8846, 8988, 7134, 4028, 3807, 5914, 4527, 6371, 5247, 5757, 5967, 6327, 6687, 7047, 7407, 7767, 7549, 6673, 8847, 8989, 7135, 4029, 3808, 5915, 4528, 6372, 5248, 5758, 5968, 6328, 6688, 7048, 7408, 7768, 7550, 6674, 8848, 8990, 7136, 4030, 3809, 5916, 4529, 6373, 5249, 5759, 5969, 6329, 6689, 7049, 7409, 7769, 7551, 6675, 8849, 8991, 7137, 4031, 3810, 5917, 4530, 6374, 5250, 5760, 5970, 6330, 6690, 7050, 7410, 7770, 7552, 6676, 8850, 8992, 7138, 4032, 3811, 5918, 4531, 6375, 5251, 5611, 5971, 6331, 6691, 7051, 7411, 7771, 7553, 6677, 8851, 8993, 7139, 4033, 3812, 5919, 4532, 6376, 5252, 5612, 5972, 6332, 6692, 7052, 7412, 7772, 7554, 6678, 8852, 8994, 7140, 4034, 3813, 5920, 4533, 6377, 5253, 5613, 5973, 6333, 6693, 7053, 7413, 7773, 7555, 6679, 8853, 8995, 7141, 4035, 3814, 5921, 4534, 6378, 5254, 5614, 5974, 6334, 6694, 7054, 7414, 7774, 7556, 6680, 8854, 8996, 7142, 4036, 3815, 5922, 4535, 6379, 5255, 5615, 5975, 6335, 6695, 7055, 7415, 7775, 7557, 6681, 8855, 8997, 7143, 4037, 3816, 5923, 4536, 6380, 5256, 5616, 5976, 6336, 6696, 7056, 7416, 7776, 7558, 6682, 8856, 8998, 7144, 4038, 3817, 5924, 4537, 6381, 5257, 5617, 5977, 6337, 6697, 7057, 7417, 7777, 7559, 6683, 8857, 8999, 7145, 4039, 3818, 5925, 4538, 6382, 5258, 5618, 5978, 6338, 6698, 7058, 7418, 7778, 7560, 6684, 8858, 9000, 7146, 4040, 3819, 5926, 4539, 6383, 5259, 5619, 5979, 6339, 6699, 7059, 7419, 7779, 7201, 6685, 8859, 8641, 7147, 4041, 3820, 5927, 4540, 6384, 5260, 5620, 5980, 6340, 6700, 7060, 7420, 7780, 7202, 6686, 8860, 8642, 7148, 4042, 3821, 5928, 4541, 6385, 5261, 5621, 5981, 6341, 6701, 7061, 7421, 7781, 7203, 6687, 8861, 8643, 7149, 4043, 3822, 5929, 4542, 6386, 5262, 5622, 5982, 6342, 6702, 7062, 7422, 7782, 7204, 6688, 8862, 8644, 7150, 4044, 3823, 5930, 4543, 6387, 5263, 5623, 5983, 6343, 6703, 7063, 7423, 7783, 7205, 6689, 8863, 8645, 7151, 4045, 3824, 5931, 4544, 6388, 5264, 5624, 5984, 6344, 6704, 7064, 7424, 7784, 7206, 6690, 8864, 8646, 7152, 4046, 3825, 5932, 4545, 6389, 5265, 5625, 5985, 6345, 6705, 7065, 7425, 7785, 7207, 6691, 8865, 8647, 7153, 4047, 3826, 5933, 4546, 6390, 5266, 5626, 5986, 6346, 6706, 7066, 7426, 7786, 7208, 6692, 8866, 8648, 7154, 4048, 3827, 5934, 4547, 6391, 5267, 5627, 5987, 6347, 6707, 7067, 7427, 7787, 7209, 6693, 8867, 8649, 7155, 4049, 3828, 5935, 4548, 6392, 5268, 5628, 5988, 6348, 6708, 7068, 7428, 7788, 7210, 6694, 8868, 8650, 7156, 4050, 3829, 5936, 4549, 6393, 5269, 5629, 5989, 6349, 6709, 7069, 7429, 7789, 7211, 6695, 8869, 8651, 7157, 4051, 3830, 5937, 4550, 6394, 5270, 5630, 5990, 6350, 6710, 7070, 7430, 7790, 7212, 6696, 8870, 8652, 7158, 4052, 3831, 5938, 4551, 6395, 5271, 5631, 5991, 6351, 6711, 7071, 7431, 7791, 7213, 6697, 8871, 8653, 7159, 4053, 3832, 5939, 4552, 6396, 5272, 5632, 5992, 6352, 6712, 7072, 7432, 7792, 7214, 6698, 8872, 8654, 7160, 4054, 3833, 5940, 4553, 6397, 5273, 5633, 5993, 6353, 6713, 7073, 7433, 7793, 7215, 6699, 8873, 8655, 7161, 4055, 3834, 5941, 4554, 6398, 5274, 5634, 5994, 6354, 6714, 7074, 7434, 7794, 7216, 6700, 8874, 8656, 7162, 4056, 3835, 5942, 4555, 6399, 5275, 5635, 5995, 6355, 6715, 7075, 7435, 7795, 7217, 6701, 8875, 8657, 7163, 4057, 3836, 5943, 4556, 6400, 5276, 5636, 5996, 6356, 6716, 7076, 7436, 7796, 7218, 6702, 8876, 8658, 7164, 4058, 3837, 5944, 4557, 6401, 5277, 5637, 5997, 6357, 6717, 7077, 7437, 7797, 7219, 6703, 8877, 8659, 7165, 4059, 3838, 5945, 4558, 6402, 5278, 5638, 5998, 6358, 6718, 7078, 7438, 7798, 7220, 6704, 8878, 8660, 7166, 4060, 3839, 5946, 4559, 6403, 5279, 5639, 5999, 6359, 6719, 7079, 7439, 7799, 7221, 6705, 8879, 8661, 7167, 4061, 3840, 5947, 4560, 6404, 5280, 5640, 6000, 6360, 6720, 7080, 7440, 7800, 7222, 6706, 8880, 8662, 7168, 4062, 3841, 5948, 4561, 6405, 5281, 5641, 6001, 6361, 6721, 7081, 7441, 7801, 7223, 6707, 8881, 8663, 7169, 4063, 3842, 5949, 4562, 6406, 5282, 5642, 6002, 6362, 6722, 7082, 7442, 7802, 7224, 6708, 8882, 8664, 7170, 4064, 3843, 5950, 4563, 6407, 5283, 5643, 6003, 6363, 6723, 7083, 7443, 7803, 7225, 6709, 8883, 8665, 7171, 4065, 3844, 5951, 4564, 6408, 5284, 5644, 6004, 6364, 6724, 7084, 7444, 7804, 7226, 6710, 8884, 8666, 7172, 4066, 3845, 5952, 4565, 6409, 5285, 5645, 6005, 6365, 6725, 7085, 7445, 7805, 7227, 6711, 8885, 8667, 7173, 4067, 3846, 5953, 4566, 6410, 5286, 5646, 6006, 6366, 6726, 7086, 7446, 7806, 7228, 6712, 8886, 8668, 7174, 4068, 3847, 5954, 4567, 6411, 5287, 5647, 6007, 6367, 6727, 7087, 7447, 7807, 7229, 6713, 8887, 8669, 7175, 4069, 3848, 5955, 4568, 6412, 5288, 5648, 6008, 6368, 6728, 7088, 7448, 7808, 7230, 6714, 8888, 8670, 7176, 4070, 3849, 5956, 4569, 6413, 5289, 5649, 6009, 6369, 6729, 7089, 7449, 7809, 7231, 6715, 8889, 8671, 7177, 4071, 3850, 5957, 4570, 6414, 5290, 5650, 6010, 6370, 6730, 7090, 7450, 7810, 7232, 6716, 8890, 8672, 7178, 4072, 3851, 5958, 4571, 6415, 5291, 5651, 6011, 6371, 6731, 7091, 7451, 7811, 7233, 6717, 8891, 8673, 7179, 4073, 3852, 5959, 4572, 6416, 5292, 5652, 6012, 6372, 6732, 7092, 7452, 7812, 7234, 6718, 8892, 8674, 7180, 4074, 3853, 5960, 4573, 6417, 5293, 5653, 6013, 6373, 6733, 7093, 7453, 7813, 7235, 6719, 8893, 8675, 7181, 4075, 3854, 5961, 4574, 6418, 5294, 5654, 6014, 6374, 6734, 7094, 7454, 7814, 7236, 6720, 8894, 8676, 7182, 4076, 3855, 5962, 4575, 6419, 5295, 5655, 6015, 6375, 6735, 7095, 7455, 7815, 7237, 6721, 8895, 8677, 7183, 4077, 3856, 5963, 4576, 6420, 5296, 5656, 6016, 6376, 6736, 7096, 7456, 7816, 7238, 6722, 8896, 8678, 7184, 4078, 3857, 5964, 4577, 6421, 5297, 5657, 6017, 6377, 6737, 7097, 7457, 7817, 7239, 6723, 8897, 8679, 7185, 4079, 3858, 5965, 4578, 6422, 5298, 5658, 6018, 6378, 6738, 7098, 7458, 7818, 7240, 6724, 8898, 8680, 7186, 4080, 3859, 5966, 4579, 6423, 5299, 5659, 6019, 6379, 6739, 7099, 7459, 7819, 7241, 6725, 8899, 8681, 7187, 4081, 3860, 5967, 4580, 6424, 5300, 5660, 6020, 6380, 6740, 7100, 7460, 7820, 7242, 6726, 8900, 8682, 7188, 4082, 3861, 5968, 4581, 6425, 5301, 5661, 6021, 6381, 6741, 7101, 7461, 7821, 7243, 6727, 8901, 8683, 7189, 4083, 3862, 5969, 4582, 6426, 5302, 5662, 6022, 6382, 6742, 7102, 7462, 7822, 7244, 6728, 8902, 8684, 7190, 4084, 3863, 5970, 4583, 6427, 5303, 5663, 6023, 6383, 6743, 7103, 7463, 7823, 7245, 6729, 8903, 8685, 7191, 4085, 3864, 5971, 4584, 6428, 5304, 5664, 6024, 6384, 6744, 7104, 7464, 7824, 7246, 6730, 8904, 8686, 7192, 4086, 3865, 5972, 4585, 6429, 5305, 5665, 6025, 6385, 6745, 7105, 7201, 7825, 7247, 6731, 8905, 8687, 7193, 4087, 3866, 5973, 4586, 6430, 5306, 5666, 6026, 6386, 6746, 7106, 7202, 7826, 7248, 6732, 8906, 8688, 7194, 4088, 3867, 5974, 4587, 6431, 5307, 5667, 6027, 6387, 6747, 7107, 7203, 7827, 7249, 6733, 8907, 8689, 7195, 4089, 3868, 5975, 4588, 6432, 5308, 5668, 6028, 6388, 6748, 7108, 7204, 7828, 7250, 6734, 8908, 8690, 7196, 4090, 3869, 5976, 4589, 6433, 5309, 5669, 6029, 6389, 6749, 7109, 7205, 7829, 7251, 6735, 8909, 8691, 7197, 4091, 3870, 5977, 4590, 6434, 5310, 5670, 6030, 6390, 6750, 7110, 7206, 7830, 7252, 6736, 8910, 8692, 7198, 4092, 3871, 5978, 4591, 6435, 5311, 5671, 6031, 6391, 6751, 7111, 7207, 7831, 7253, 6737, 8911, 8693, 7199, 4093, 3872, 5979, 4592, 6436, 5312, 5672, 6032, 6392, 6752, 7112, 7208, 7832, 7254, 6738, 8912, 8694, 7200, 4094, 3873, 5980, 4593, 6437, 5313, 5673, 6033, 6393, 6753, 7113, 7209, 7833, 7255, 6739, 8913, 8695, 6841, 4095, 3874, 5981, 4594, 6438, 5314, 5674, 6034, 6394, 6754, 7114, 7210, 7834, 7256, 6740, 8914, 8696, 6842, 4096, 3875, 5982, 4595, 6439, 5315, 5675, 6035, 6395, 6755, 7115, 7211, 7835, 7257, 6741, 8915, 8697, 6843, 4097, 3876, 5983, 4596, 6440, 5316, 5676, 6036, 6396, 6756, 7116, 7212, 7836, 7258, 6742, 8916, 8698, 6844, 4098, 3877, 5984, 4597, 6441, 5317, 5677, 6037, 6397, 6757, 7117, 7213, 7837, 7259, 6743, 8917, 8699, 6845, 4099, 3878, 5985, 4598, 6442, 5318, 5678, 6038, 6398, 6758, 7118, 7214, 7838, 7260, 6744, 8918, 8700, 6846, 4100, 3879, 5986, 4599, 6443, 5319, 5679, 6039, 6399, 6759, 7119, 7215, 7839, 7261, 6745, 8919, 8701, 6847, 4101, 3880, 5987, 4600, 6444, 5320, 5680, 6040, 6400, 6760, 7120, 7216, 7840, 7262, 6746, 8920, 8702, 6848, 4102, 3881, 5988, 4601, 6445, 5321, 5681, 6041, 6401, 6761, 7121, 7217, 7841, 7263, 6747, 8921, 8703, 6849, 4103, 3882, 5989, 4602, 6446, 5322, 5682, 6042, 6402, 6762, 7122, 7218, 7842, 7264, 6748, 8922, 8704, 6850, 4104, 3883, 5990, 4603, 6447, 5323, 5683, 6043, 6403, 6763, 7123, 7219, 7843, 7265, 6749, 8923, 8705, 6851, 4105, 3884, 5991, 4604, 6448, 5324, 5684, 6044, 6404, 6764, 7124, 7220, 7844, 7266, 6750, 8924, 8706, 6852, 4106, 3885, 5992, 4605, 6449, 5325, 5685, 6045, 6405, 6765, 7125, 7221, 7845, 7267, 6751, 8925, 8707, 6853, 4107, 3886, 5993, 4606, 6450, 5326, 5686, 6046, 6406, 6766, 7126, 7222, 7846, 7268, 6752, 8926, 8708, 6854, 4108, 3887, 5994, 4607, 6451, 5327, 5687, 6047, 6407, 6767, 7127, 7223, 7847, 7269, 6753, 8927, 8709, 6855, 4109, 3888, 5995, 4608, 6452, 5328, 5688, 6048, 6408, 6768, 7128, 7224, 7848, 7270, 6754, 8928, 8710, 6856, 4110, 3889, 5996, 4609, 6453, 5329, 5689, 6049, 6409, 6769, 7129, 7225, 7849, 7271, 6755, 8929, 8711, 6857, 4111, 3890, 5997, 4610, 6454, 5330, 5690, 6050, 6410, 6770, 7130, 7226, 7850, 7272, 6756, 8930, 8712, 6858, 4112, 3891, 5998, 4611, 6455, 5331, 5691, 6051, 6411, 6771, 7131, 7227, 7851, 7273, 6757, 8931, 8713, 6859, 4113, 3892, 5999, 4612, 6456, 5332, 5692, 6052, 6412, 6772, 7132, 7228, 7852, 7274, 6758, 8932, 8714, 6860, 4114, 3893, 6000, 4613, 6457, 5333, 5693, 6053, 6413, 6773, 7133, 7229, 7853, 7275, 6759, 8933, 8715, 6861, 4115, 3894, 6001, 4614, 6458, 5334, 5694, 6054, 6414, 6774, 7134, 7230, 7854, 7276, 6760, 8934, 8716, 6862, 4116, 3895, 6002, 4615, 6459, 5335, 5695, 6055, 6415, 6775, 7135, 7231, 7855, 7277, 6761, 8935, 8717, 6863, 4117, 3896, 6003, 4616, 6460, 5336, 5696, 6056, 6416, 6776, 7136, 7232, 7856, 7278, 6762, 8936, 8718, 6864, 4118, 3897, 6004, 4617, 6461, 5337, 5697, 6057, 6417, 6777, 7137, 7233, 7857, 7279, 6763, 8937, 8719, 6865, 4119, 3898, 6005, 4618, 6462, 5338, 5698, 6058, 6418, 6778, 7138, 7234, 7858, 7280, 6764, 8938, 8720, 6866, 4120, 3899, 6006, 4619, 6463, 5339, 5699, 6059, 6419, 6779, 7139, 7235, 7859, 7281, 6765, 8939, 8721, 6867, 4121, 3900, 6007, 4620, 6464, 5340, 5700, 6060, 6420, 6780, 7140, 7236, 7860, 7282, 6766, 8940, 8722, 6868, 4122, 3901, 6008, 4621, 6465, 5341, 5701, 6061, 6421, 6781, 7141, 7237, 7861, 7283, 6767, 8941, 8723, 6869, 4123, 3902, 6009, 4622, 6466, 5342, 5702, 6062, 6422, 6782, 7142, 7238, 7862, 7284, 6768, 8942, 8724, 6870, 4124, 3903, 6010, 4623, 6467, 5343, 5703, 6063, 6423, 6783, 7143, 7239, 7863, 7285, 6769, 8943, 8725, 6871, 4125, 3904, 6011, 4624, 6468, 5344, 5704, 6064, 6424, 6784, 7144, 7240, 7864, 7286, 6770, 8944, 8726, 6872, 4126, 3905, 6012, 4625, 6469, 5345, 5705, 6065, 6425, 6785, 7145, 7241, 7865, 7287, 6771, 8945, 8727, 6873, 4127, 3906, 6013, 4626, 6470, 5346, 5706, 6066, 6426, 6786, 7146, 7242, 7866, 7288, 6772, 8946, 8728, 6874, 4128, 3907, 6014, 4627, 6471, 5347, 5707, 6067, 6427, 6787, 7147, 7243, 7867, 7289, 6773, 8947, 8729, 6875, 4129, 3908, 6015, 4628, 6472, 5348, 5708, 6068, 6428, 6788, 7148, 7244, 7868, 7290, 6774, 8948, 8730, 6876, 4130, 3909, 6016, 4629, 6473, 5349, 5709, 6069, 6429, 6789, 7149, 7245, 7869, 7291, 6775, 8949, 8731, 6877, 4131, 3910, 6017, 4630, 6474, 5350, 5710, 6070, 6430, 6790, 7150, 7246, 7870, 7292, 6776, 8950, 8732, 6878, 4132, 3911, 6018, 4631, 6475, 5351, 5711, 6071, 6431, 6791, 7151, 7247, 7871, 7293, 6777, 8951, 8733, 6879, 4133, 3912, 6019, 4632, 6476, 5352, 5712, 6072, 6432, 6792, 7152, 7248, 7872, 7294, 6778, 8952, 8734, 6880, 4134, 3913, 6020, 4633, 6477, 5353, 5713, 6073, 6433, 6793, 7153, 7249, 7873, 7295, 6779, 8953, 8735, 6881, 4135, 3914, 6021, 4634, 6478, 5354, 5714, 6074, 6434, 6794, 7154, 7250, 7874, 7296, 6780, 8954, 8736, 6882, 4136, 3915, 6022, 4635, 6479, 5355, 5715, 6075, 6435, 6795, 7155, 7251, 7875, 7297, 6781, 8955, 8737, 6883, 4137, 3916, 6023, 4636, 6480, 5356, 5716, 6076, 6436, 6796, 7156, 7252, 7876, 7298, 6782, 8956, 8738, 6884, 4138, 3917, 6024, 4637, 6121, 5357, 5717, 6077, 6437, 6797, 7157, 7253, 7877, 7299, 6783, 8957, 8739, 6885, 4139, 3918, 6025, 4638, 6122, 5358, 5718, 6078, 6438, 6798, 7158, 7254, 7878, 7300, 6784, 8958, 8740, 6886, 4140, 3919, 6026, 4639, 6123, 5359, 5719, 6079, 6439, 6799, 7159, 7255, 7879, 7301, 6785, 8959, 8741, 6887, 4141, 3920, 6027, 4640, 6124, 5360, 5720, 6080, 6440, 6800, 7160, 7256, 7880, 7302, 6786, 8960, 8742, 6888, 4142, 3921, 6028, 4641, 6125, 5361, 5721, 6081, 6441, 6801, 7161, 7257, 7881, 7303, 6787, 8961, 8743, 6889, 4143, 3922, 6029, 4642, 6126, 5362, 5722, 6082, 6442, 6802, 7162, 7258, 7882, 7304, 6788, 8962, 8744, 6890, 4144, 3923, 6030, 4643, 6127, 5363, 5723, 6083, 6443, 6803, 7163, 7259, 7883, 7305, 6789, 8963, 8745, 6891, 4145, 3924, 6031, 4644, 6128, 5364, 5724, 6084, 6444, 6804, 7164, 7260, 7884, 7306, 6790, 8964, 8746, 6892, 4146, 3925, 6032, 4645, 6129, 5365, 5725, 6085, 6445, 6805, 7165, 7261, 7885, 7307, 6791, 8965, 8747, 6893, 4147, 3926, 6033, 4646, 6130, 5366, 5726, 6086, 6446, 6806, 7166, 7262, 7886, 7308, 6792, 8966, 8748, 6894, 4148, 3927, 6034, 4647, 6131, 5367, 5727, 6087, 6447, 6807, 7167, 7263, 7887, 7309, 6793, 8967, 8749, 6895, 4149, 3928, 6035, 4648, 6132, 5368, 5728, 6088, 6448, 6808, 7168, 7264, 7888, 7310, 6794, 8968, 8750, 6896, 4150, 3929, 6036, 4649, 6133, 5369, 5729, 6089, 6449, 6809, 7169, 7265, 7889, 7311, 6795, 8969, 8751, 6897, 4151, 3930, 6037, 4650, 6134, 5370, 5730, 6090, 6450, 6810, 7170, 7266, 7890, 7312, 6796, 8970, 8752, 6898, 4152, 3931, 6038, 4651, 6135, 5371, 5731, 6091, 6451, 6811, 7171, 7267, 7891, 7313, 6797, 8971, 8753, 6899, 4153, 3932, 6039, 4652, 6136, 5372, 5732, 6092, 6452, 6812, 7172, 7268, 7892, 7314, 6798, 8972, 8754, 6900, 4154, 3933, 6040, 4653, 6137, 5373, 5733, 6093, 6453, 6813, 7173, 7269, 7893, 7315, 6799, 8973, 8755, 6901, 4155, 3934, 6041, 4654, 6138, 5374, 5734, 6094, 6454, 6814, 7174, 7270, 7894, 7316, 6800, 8974, 8756, 6902, 4156, 3935, 6042, 4655, 6139, 5375, 5735, 6095, 6455, 6815, 7175, 7271, 7895, 7317, 6801, 8975, 8757, 6903, 4157, 3936, 6043, 4656, 6140, 5376, 5736, 6096, 6456, 6816, 7176, 7272, 7896, 7318, 6802, 8976, 8758, 6904, 4158, 3937, 6044, 4657, 6141, 5377, 5737, 6097, 6457, 6817, 7177, 7273, 7897, 7319, 6803, 8977, 8759, 6905, 4159, 3938, 6045, 4658, 6142, 5378, 5738, 6098, 6458, 6818, 7178, 7274, 7898, 7320, 6804, 8978, 8760, 6906, 4160, 3939, 6046, 4659, 6143, 5379, 5739, 6099, 6459, 6819, 7179, 7275, 7899, 7321, 6805, 8979, 8761, 6907, 4161, 3940, 6047, 4660, 6144, 5380, 5740, 6100, 6460, 6820, 7180, 7276, 7900, 7322, 6806, 8980, 8762, 6908, 4162, 3941, 6048, 4661, 6145, 5381, 5741, 6101, 6461, 6821, 7181, 7277, 7901, 7323, 6807, 8981, 8763, 6909, 4163, 3942, 6049, 4662, 6146, 5382, 5742, 6102, 6462, 6822, 7182, 7278, 7902, 7324, 6808, 8982, 8764, 6910, 4164, 3943, 6050, 4663, 6147, 5383, 5743, 6103, 6463, 6823, 7183, 7279, 7903, 7325, 6809, 8983, 8765, 6911, 4165, 3944, 6051, 4664, 6148, 5384, 5744, 6104, 6464, 6824, 7184, 7280, 7904, 7326, 6810, 8984, 8766, 6912, 4166, 3945, 6052, 4665, 6149, 5385, 5745, 6105, 6465, 6825, 7185, 7281, 7905, 7327, 6811, 8985, 8767, 6913, 4167, 3946, 6053, 4666, 6150, 5386, 5746, 6106, 6466, 6826, 7186, 7282, 7906, 7328, 6812, 8986, 8768, 6914, 4168, 3947, 6054, 4667, 6151, 5387, 5747, 6107, 6467, 6827, 7187, 7283, 7907, 7329, 6813, 8987, 8769, 6915, 4169, 3948, 6055, 4668, 6152, 5388, 5748, 6108, 6468, 6828, 7188, 7284, 7908, 7330, 6814, 8988, 8770, 6916, 4170, 3949, 6056, 4669, 6153, 5389, 5749, 6109, 6469, 6829, 7189, 7285, 7909, 7331, 6815, 8989, 8771, 6917, 4171, 3950, 6057, 4670, 6154, 5390, 5750, 6110, 6470, 6830, 7190, 7286, 7910, 7332, 6816, 8990, 8772, 6918, 4172, 3951, 6058, 4671, 6155, 5391, 5751, 6111, 6471, 6831, 7191, 7287, 7911, 7333, 6817, 8991, 8773, 6919, 4173, 3952, 6059, 4672, 6156, 5392, 5752, 6112, 6472, 6832, 7192, 7288, 7912, 7334, 6818, 8992, 8774, 6920, 4174, 3953, 6060, 4673, 6157, 5393, 5753, 6113, 6473, 6833, 7193, 7289, 7913, 7335, 6819, 8993, 8775, 6921, 4175, 3954, 6061, 4674, 6158, 5394, 5754, 6114, 6474, 6834, 7194, 7290, 7914, 7336, 6820, 8994, 8776, 6922, 4176, 3955, 6062, 4675, 6159, 5395, 5755, 6115, 6475, 6835, 7195, 7291, 7915, 7337, 6821, 8995, 8777, 6923, 4177, 3956, 6063, 4676, 6160, 5396, 5756, 6116, 6476, 6836, 7196, 7292, 7916, 7338, 6822, 8996, 8778, 6924, 4178, 3957, 6064, 4677, 6161, 5397, 5757, 6117, 6477, 6837, 7197, 7293, 7917, 7339, 6823, 8997, 8779, 6925, 4179, 3958, 6065, 4678, 6162, 5398, 5758, 6118, 6478, 6838, 7198, 7294, 7918, 7340, 6824, 8998, 8780, 6926, 4180, 3959, 6066, 4679, 6163, 5399, 5759, 6119, 6479, 6839, 7199, 7295, 7919, 7341, 6825, 8999, 8781, 6927, 4181, 3960, 6067, 4680, 6164, 5400, 5760, 6120, 6480, 6840, 7200, 7296, 7920, 7342, 6826, 9000, 8782, 6928, 6570, 9489, 9108, 8047, 8813, 7760, 8352, 7021, 7722, 8380, 8139, 7297, 9449, 7921, 8281, 9078, 9001, 9361, 6571, 9490, 9109, 8048, 8814, 7761, 8353, 7022, 7723, 8381, 8140, 7298, 9450, 7922, 8282, 9079, 9002, 9362, 6572, 9491, 9110, 8049, 8815, 7762, 8354, 7023, 7724, 8382, 8141, 7299, 9451, 7923, 8283, 9080, 9003, 9363, 6573, 9492, 9111, 8050, 8816, 7763, 8355, 7024, 7725, 8383, 8142, 7300, 9452, 7924, 8284, 9081, 9004, 9364, 6574, 9493, 9112, 8051, 8817, 7764, 8356, 7025, 7726, 8384, 8143, 7301, 9453, 7925, 8285, 9082, 9005, 9365, 6575, 9494, 9113, 8052, 8818, 7765, 8357, 7026, 7727, 8385, 8144, 7302, 9454, 7926, 8286, 9083, 9006, 9366, 6576, 9495, 9114, 8053, 8819, 7766, 8358, 7027, 7728, 8386, 8145, 7303, 9455, 7927, 8287, 9084, 9007, 9367, 6577, 9496, 9115, 8054, 8820, 7767, 8359, 7028, 7729, 8387, 8146, 7304, 9456, 7928, 8288, 9085, 9008, 9368, 6578, 9497, 9116, 8055, 8821, 7768, 8360, 7029, 7730, 8388, 8147, 7305, 9457, 7929, 8289, 9086, 9009, 9369, 6579, 9498, 9117, 8056, 8822, 7769, 8361, 7030, 7731, 8389, 8148, 7306, 9458, 7930, 8290, 9087, 9010, 9370, 6580, 9499, 9118, 8057, 8823, 7770, 8362, 7031, 7732, 8390, 8149, 7307, 9459, 7931, 8291, 9088, 9011, 9371, 6581, 9500, 9119, 8058, 8824, 7771, 8363, 7032, 7733, 8391, 8150, 7308, 9460, 7932, 8292, 9089, 9012, 9372, 6582, 9501, 9120, 8059, 8825, 7772, 8364, 7033, 7734, 8392, 8151, 7309, 9461, 7933, 8293, 9090, 9013, 9373, 6583, 9502, 9121, 8060, 8826, 7773, 8365, 7034, 7735, 8393, 8152, 7310, 9462, 7934, 8294, 9091, 9014, 9374, 6584, 9503, 9122, 8061, 8827, 7774, 8366, 7035, 7736, 8394, 8153, 7311, 9463, 7935, 8295, 9092, 9015, 9375, 6585, 9504, 9123, 8062, 8828, 7775, 8367, 7036, 7737, 8395, 8154, 7312, 9464, 7936, 8296, 9093, 9016, 9376, 6586, 9505, 9124, 8063, 8829, 7776, 8368, 7037, 7738, 8396, 8155, 7313, 9465, 7937, 8297, 9094, 9017, 9377, 6587, 9506, 9125, 8064, 8830, 7777, 8369, 7038, 7739, 8397, 8156, 7314, 9466, 7938, 8298, 9095, 9018, 9378, 6588, 9507, 9126, 8065, 8831, 7778, 8370, 7039, 7740, 8398, 8157, 7315, 9467, 7939, 8299, 9096, 9019, 9379, 6589, 9508, 9127, 8066, 8832, 7779, 8371, 7040, 7741, 8399, 8158, 7316, 9468, 7940, 8300, 9097, 9020, 9380, 6590, 9509, 9128, 8067, 8833, 7780, 8372, 7041, 7742, 8400, 8159, 7317, 9469, 7941, 8301, 9098, 9021, 9381, 6591, 9510, 9129, 8068, 8834, 7781, 8373, 7042, 7743, 8401, 8160, 7318, 9470, 7942, 8302, 9099, 9022, 9382, 6592, 9511, 9130, 8069, 8835, 7782, 8374, 7043, 7744, 8402, 8161, 7319, 9471, 7943, 8303, 9100, 9023, 9383, 6593, 9512, 9131, 8070, 8836, 7783, 8375, 7044, 7745, 8403, 8162, 7320, 9472, 7944, 8304, 9101, 9024, 9384, 6594, 9513, 9132, 8071, 8837, 7784, 8376, 7045, 7746, 8404, 8163, 7321, 9473, 7945, 8305, 9102, 9025, 9385, 6595, 9514, 9133, 8072, 8838, 7785, 8377, 7046, 7747, 8405, 8164, 7322, 9474, 7946, 8306, 9103, 9026, 9386, 6596, 9515, 9134, 8073, 8839, 7786, 8378, 7047, 7748, 8406, 8165, 7323, 9475, 7947, 8307, 9104, 9027, 9387, 6597, 9516, 9135, 8074, 8840, 7787, 8379, 7048, 7749, 8407, 8166, 7324, 9476, 7948, 8308, 9105, 9028, 9388, 6598, 9517, 9136, 8075, 8841, 7788, 8380, 7049, 7750, 8408, 8167, 7325, 9477, 7949, 8309, 9106, 9029, 9389, 6599, 9518, 9137, 8076, 8842, 7789, 8381, 7050, 7751, 8409, 8168, 7326, 9478, 7950, 8310, 9107, 9030, 9390, 6600, 9519, 9138, 8077, 8843, 7790, 8382, 7051, 7752, 8410, 8169, 7327, 9479, 7951, 8311, 9108, 9031, 9391, 6601, 9520, 9139, 8078, 8844, 7791, 8383, 7052, 7753, 8411, 8170, 7328, 9480, 7952, 8312, 9109, 9032, 9392, 6602, 9521, 9140, 8079, 8845, 7792, 8384, 7053, 7754, 8412, 8171, 7329, 9481, 7953, 8313, 9110, 9033, 9393, 6603, 9522, 9141, 8080, 8846, 7793, 8385, 7054, 7755, 8413, 8172, 7330, 9482, 7954, 8314, 9111, 9034, 9394, 6604, 9523, 9142, 8081, 8847, 7794, 8386, 7055, 7756, 8414, 8173, 7331, 9483, 7955, 8315, 9112, 9035, 9395, 6605, 9524, 9143, 8082, 8848, 7795, 8387, 7056, 7757, 8415, 8174, 7332, 9484, 7956, 8316, 9113, 9036, 9396, 6606, 9525, 9144, 8083, 8849, 7796, 8388, 7057, 7758, 8416, 8175, 7333, 9485, 7957, 8317, 9114, 9037, 9397, 6607, 9526, 9145, 8084, 8850, 7797, 8389, 7058, 7759, 8417, 8176, 7334, 9486, 7958, 8318, 9115, 9038, 9398, 6608, 9527, 9146, 8085, 8851, 7798, 8390, 7059, 7760, 8418, 8177, 7335, 9487, 7959, 8319, 9116, 9039, 9399, 6609, 9528, 9147, 8086, 8852, 7799, 8391, 7060, 7761, 8419, 8178, 7336, 9488, 7960, 8320, 9117, 9040, 9400, 6610, 9529, 9148, 8087, 8853, 7800, 8392, 7061, 7762, 8420, 8179, 7337, 9489, 7961, 8321, 9118, 9041, 9401, 6611, 9530, 9149, 8088, 8854, 7801, 8393, 7062, 7763, 8421, 8180, 7338, 9490, 7962, 8322, 9119, 9042, 9402, 6612, 9531, 9150, 8089, 8855, 7802, 8394, 7063, 7764, 8422, 8181, 7339, 9491, 7963, 8323, 9120, 9043, 9403, 6613, 9532, 9151, 8090, 8856, 7803, 8395, 7064, 7765, 8423, 8182, 7340, 9492, 7964, 8324, 9121, 9044, 9404, 6614, 9533, 9152, 8091, 8857, 7804, 8396, 7065, 7766, 8424, 8183, 7341, 9493, 7965, 8325, 9122, 9045, 9405, 6615, 9534, 9153, 8092, 8858, 7805, 8397, 7066, 7767, 8425, 8184, 7342, 9494, 7966, 8326, 9123, 9046, 9406, 6616, 9535, 9154, 8093, 8859, 7806, 8398, 7067, 7768, 8426, 8185, 7343, 9495, 7967, 8327, 9124, 9047, 9407, 6617, 9536, 9155, 8094, 8860, 7807, 8399, 7068, 7769, 8427, 8186, 7344, 9496, 7968, 8328, 9125, 9048, 9408, 6618, 9537, 9156, 8095, 8861, 7808, 8400, 7069, 7770, 8428, 8187, 7345, 9497, 7969, 8329, 9126, 9049, 9409, 6619, 9538, 9157, 8096, 8862, 7809, 8401, 7070, 7771, 8429, 8188, 7346, 9498, 7970, 8330, 9127, 9050, 9410, 6620, 9539, 9158, 8097, 8863, 7810, 8402, 7071, 7772, 8430, 8189, 7347, 9499, 7971, 8331, 9128, 9051, 9411, 6621, 9540, 9159, 8098, 8864, 7811, 8403, 7072, 7773, 8431, 8190, 7348, 9500, 7972, 8332, 9129, 9052, 9412, 6622, 9541, 9160, 8099, 8865, 7812, 8404, 7073, 7774, 8432, 8191, 7349, 9501, 7973, 8333, 9130, 9053, 9413, 6623, 9542, 9161, 8100, 8866, 7813, 8405, 7074, 7775, 8433, 8192, 7350, 9502, 7974, 8334, 9131, 9054, 9414, 6624, 9543, 9162, 8101, 8867, 7814, 8406, 7075, 7776, 8434, 8193, 7351, 9503, 7975, 8335, 9132, 9055, 9415, 6625, 9544, 9163, 8102, 8868, 7815, 8407, 7076, 7777, 8435, 8194, 7352, 9504, 7976, 8336, 9133, 9056, 9416, 6626, 9545, 9164, 8103, 8869, 7816, 8408, 7077, 7778, 8436, 8195, 7353, 9505, 7977, 8337, 9134, 9057, 9417, 6627, 9546, 9165, 8104, 8870, 7817, 8409, 7078, 7779, 8437, 8196, 7354, 9506, 7978, 8338, 9135, 9058, 9418, 6628, 9547, 9166, 8105, 8871, 7818, 8410, 7079, 7780, 8438, 8197, 7355, 9507, 7979, 8339, 9136, 9059, 9419, 6629, 9548, 9167, 8106, 8872, 7819, 8411, 7080, 7781, 8439, 8198, 7356, 9508, 7980, 8340, 9137, 9060, 9420, 6630, 9549, 9168, 8107, 8873, 7820, 8412, 7081, 7782, 8440, 8199, 7357, 9509, 7981, 8341, 9138, 9061, 9421, 6631, 9550, 9169, 8108, 8874, 7821, 8413, 7082, 7783, 8441, 8200, 7358, 9510, 7982, 8342, 9139, 9062, 9422, 6632, 9551, 9170, 8109, 8875, 7822, 8414, 7083, 7784, 8442, 8201, 7359, 9511, 7983, 8343, 9140, 9063, 9423, 6633, 9552, 9171, 8110, 8876, 7823, 8415, 7084, 7785, 8443, 8202, 7360, 9512, 7984, 8344, 9141, 9064, 9424, 6634, 9553, 9172, 8111, 8877, 7824, 8416, 7085, 7786, 8444, 8203, 7361, 9513, 7985, 8345, 9142, 9065, 9425, 6635, 9554, 9173, 8112, 8878, 7825, 8417, 7086, 7787, 8445, 8204, 7362, 9514, 7986, 8346, 9143, 9066, 9426, 6636, 9555, 9174, 8113, 8879, 7826, 8418, 7087, 7788, 8446, 8205, 7363, 9515, 7987, 8347, 9144, 9067, 9427, 6637, 9556, 9175, 8114, 8880, 7827, 8419, 7088, 7789, 8447, 8206, 7364, 9516, 7988, 8348, 9145, 9068, 9428, 6638, 9557, 9176, 8115, 8881, 7828, 8420, 7089, 7790, 8448, 8207, 7365, 9517, 7989, 8349, 9146, 9069, 9429, 6639, 9558, 9177, 8116, 8882, 7829, 8421, 7090, 7791, 8449, 8208, 7366, 9518, 7990, 8350, 9147, 9070, 9430, 6640, 9559, 9178, 8117, 8883, 7830, 8422, 7091, 7792, 8450, 8209, 7367, 9519, 7991, 8351, 9148, 9071, 9431, 6641, 9560, 9179, 8118, 8884, 7831, 8423, 7092, 7793, 8451, 8210, 7368, 9520, 7992, 8352, 9149, 9072, 9432, 6642, 9561, 9180, 8119, 8885, 7832, 8424, 7093, 7794, 8452, 8211, 7369, 9521, 7993, 8353, 9150, 9073, 9433, 6643, 9562, 9181, 8120, 8886, 7833, 8425, 7094, 7795, 8453, 8212, 7370, 9522, 7994, 8354, 9151, 9074, 9434, 6644, 9563, 9182, 8121, 8887, 7834, 8426, 7095, 7796, 8454, 8213, 7371, 9523, 7995, 8355, 9152, 9075, 9435, 6645, 9564, 9183, 8122, 8888, 7835, 8427, 7096, 7797, 8455, 8214, 7372, 9524, 7996, 8356, 9153, 9076, 9436, 6646, 9565, 9184, 8123, 8889, 7836, 8428, 7097, 7798, 8456, 8215, 7373, 9525, 7997, 8357, 9154, 9077, 9437, 6647, 9566, 9185, 8124, 8890, 7837, 8429, 7098, 7799, 8457, 8216, 7374, 9526, 7998, 8358, 9155, 9078, 9438, 6648, 9567, 9186, 8125, 8891, 7838, 8430, 7099, 7800, 8458, 8217, 7375, 9527, 7999, 8359, 9156, 9079, 9439, 6649, 9568, 9187, 8126, 8892, 7839, 8431, 7100, 7801, 8459, 8218, 7376, 9528, 8000, 8360, 9157, 9080, 9440, 6650, 9569, 9188, 8127, 8893, 7840, 8432, 7101, 7802, 8460, 8219, 7377, 9529, 8001, 8361, 9158, 9081, 9441, 6651, 9570, 9189, 8128, 8894, 7841, 8433, 7102, 7803, 8461, 8220, 7378, 9530, 8002, 8362, 9159, 9082, 9442, 6652, 9571, 9190, 8129, 8895, 7842, 8434, 7103, 7804, 8462, 8221, 7379, 9531, 8003, 8363, 9160, 9083, 9443, 6653, 9572, 9191, 8130, 8896, 7843, 8435, 7104, 7805, 8463, 8222, 7380, 9532, 8004, 8364, 9161, 9084, 9444, 6654, 9573, 9192, 8131, 8897, 7844, 8436, 7105, 7806, 8464, 8223, 7381, 9533, 8005, 8365, 9162, 9085, 9445, 6655, 9574, 9193, 8132, 8898, 7845, 8437, 7106, 7807, 8465, 8224, 7382, 9534, 8006, 8366, 9163, 9086, 9446, 6656, 9575, 9194, 8133, 8899, 7846, 8438, 7107, 7808, 8466, 8225, 7383, 9535, 8007, 8367, 9164, 9087, 9447, 6657, 9576, 9195, 8134, 8900, 7847, 8439, 7108, 7809, 8467, 8226, 7384, 9536, 8008, 8368, 9165, 9088, 9448, 6658, 9577, 9196, 8135, 8901, 7848, 8440, 7109, 7810, 8468, 8227, 7385, 9537, 8009, 8369, 9166, 9089, 9449, 6659, 9578, 9197, 8136, 8902, 7849, 8441, 7110, 7811, 8469, 8228, 7386, 9538, 8010, 8370, 9167, 9090, 9450, 6660, 9579, 9198, 8137, 8903, 7850, 8442, 7111, 7812, 8470, 8229, 7387, 9539, 8011, 8371, 9168, 9091, 9451, 6661, 9580, 9199, 8138, 8904, 7851, 8443, 7112, 7813, 8471, 8230, 7388, 9540, 8012, 8372, 9169, 9092, 9452, 6662, 9581, 9200, 8139, 8905, 7852, 8444, 7113, 7814, 8472, 8231, 7389, 9541, 8013, 8373, 9170, 9093, 9453, 6663, 9582, 9201, 8140, 8906, 7853, 8445, 7114, 7815, 8473, 8232, 7390, 9542, 8014, 8374, 9171, 9094, 9454, 6664, 9583, 9202, 8141, 8907, 7854, 8446, 7115, 7816, 8474, 8233, 7391, 9543, 8015, 8375, 9172, 9095, 9455, 6665, 9584, 9203, 8142, 8908, 7855, 8447, 7116, 7817, 8475, 8234, 7392, 9544, 8016, 8376, 9173, 9096, 9456, 6666, 9585, 9204, 8143, 8909, 7856, 8448, 7117, 7818, 8476, 8235, 7393, 9545, 8017, 8377, 9174, 9097, 9457, 6667, 9586, 9205, 8144, 8910, 7857, 8449, 7118, 7819, 8477, 8236, 7394, 9546, 8018, 8378, 9175, 9098, 9458, 6668, 9587, 9206, 8145, 8911, 7858, 8450, 7119, 7820, 8478, 8237, 7395, 9547, 8019, 8379, 9176, 9099, 9459, 6669, 9588, 9207, 8146, 8912, 7859, 8451, 7120, 7821, 8479, 8238, 7396, 9548, 8020, 8380, 9177, 9100, 9460, 6670, 9589, 9208, 8147, 8913, 7860, 8452, 7121, 7822, 8480, 8239, 7397, 9549, 8021, 8381, 9178, 9101, 9461, 6671, 9590, 9209, 8148, 8914, 7861, 8453, 7122, 7823, 8481, 8240, 7398, 9550, 8022, 8382, 9179, 9102, 9462, 6672, 9591, 9210, 8149, 8915, 7862, 8454, 7123, 7824, 8482, 8241, 7399, 9551, 8023, 8383, 9180, 9103, 9463, 6673, 9592, 9211, 8150, 8916, 7863, 8455, 7124, 7825, 8483, 8242, 7400, 9552, 8024, 8384, 9181, 9104, 9464, 6674, 9593, 9212, 8151, 8917, 7864, 8456, 7125, 7826, 8484, 8243, 7401, 9553, 8025, 8385, 9182, 9105, 9465, 6675, 9594, 9213, 8152, 8918, 7865, 8457, 7126, 7827, 8485, 8244, 7402, 9554, 8026, 8386, 9183, 9106, 9466, 6676, 9595, 9214, 8153, 8919, 7866, 8458, 7127, 7828, 8486, 8245, 7403, 9555, 8027, 8387, 9184, 9107, 9467, 6677, 9596, 9215, 8154, 8920, 7867, 8459, 7128, 7829, 8487, 8246, 7404, 9556, 8028, 8388, 9185, 9108, 9468, 6678, 9597, 9216, 8155, 8921, 7868, 8460, 7129, 7830, 8488, 8247, 7405, 9557, 8029, 8389, 9186, 9109, 9469, 6679, 9598, 9217, 8156, 8922, 7869, 8461, 7130, 7831, 8489, 8248, 7406, 9558, 8030, 8390, 9187, 9110, 9470, 6680, 9599, 9218, 8157, 8923, 7870, 8462, 7131, 7832, 8490, 8249, 7407, 9559, 8031, 8391, 9188, 9111, 9471, 6681, 9600, 9219, 8158, 8924, 7871, 8463, 7132, 7833, 8491, 8250, 7408, 9560, 8032, 8392, 9189, 9112, 9472, 6682, 9601, 9220, 8159, 8925, 7872, 8464, 7133, 7834, 8492, 8251, 7409, 9561, 8033, 8393, 9190, 9113, 9473, 6683, 9602, 9221, 8160, 8926, 7873, 8465, 7134, 7835, 8493, 8252, 7410, 9562, 8034, 8394, 9191, 9114, 9474, 6684, 9603, 9222, 8161, 8927, 7874, 8466, 7135, 7836, 8494, 8253, 7411, 9563, 8035, 8395, 9192, 9115, 9475, 6685, 9604, 9223, 8162, 8928, 7875, 8467, 7136, 7837, 8495, 8254, 7412, 9564, 8036, 8396, 9193, 9116, 9476, 6686, 9605, 9224, 8163, 8929, 7876, 8468, 7137, 7838, 8496, 8255, 7413, 9565, 8037, 8397, 9194, 9117, 9477, 6687, 9606, 9225, 8164, 8930, 7877, 8469, 7138, 7839, 8497, 8256, 7414, 9566, 8038, 8398, 9195, 9118, 9478, 6688, 9607, 9226, 8165, 8931, 7878, 8470, 7139, 7840, 8498, 8257, 7415, 9567, 8039, 8399, 9196, 9119, 9479, 6689, 9608, 9227, 8166, 8932, 7879, 8471, 7140, 7841, 8499, 8258, 7416, 9568, 8040, 8400, 9197, 9120, 9480, 6690, 9609, 9228, 8167, 8933, 7880, 8472, 7141, 7842, 8500, 8259, 7417, 9569, 8041, 8401, 9198, 9121, 9481, 6691, 9610, 9229, 8168, 8934, 7881, 8473, 7142, 7843, 8501, 8260, 7418, 9570, 8042, 8402, 9199, 9122, 9482, 6692, 9611, 9230, 8169, 8935, 7882, 8474, 7143, 7844, 8502, 8261, 7419, 9571, 8043, 8403, 9200, 9123, 9483, 6693, 9612, 9231, 8170, 8936, 7883, 8475, 7144, 7845, 8503, 8262, 7420, 9572, 8044, 8404, 9201, 9124, 9484, 6694, 9613, 9232, 8171, 8937, 7884, 8476, 7145, 7846, 8504, 8263, 7421, 9573, 8045, 8405, 9202, 9125, 9485, 6695, 9614, 9233, 8172, 8938, 7885, 8477, 7146, 7847, 8505, 8264, 7422, 9574, 8046, 8406, 9203, 9126, 9486, 6696, 9615, 9234, 8173, 8939, 7886, 8478, 7147, 7848, 8506, 8265, 7423, 9575, 8047, 8407, 9204, 9127, 9487, 6697, 9616, 9235, 8174, 8940, 7887, 8479, 7148, 7849, 8507, 8266, 7424, 9576, 8048, 8408, 9205, 9128, 9488, 6698, 9617, 9236, 8175, 8941, 7888, 8480, 7149, 7850, 8508, 8267, 7425, 9577, 8049, 8409, 9206, 9129, 9489, 6699, 9618, 9237, 8176, 8942, 7889, 8481, 7150, 7851, 8509, 8268, 7426, 9578, 8050, 8410, 9207, 9130, 9490, 6700, 9619, 9238, 8177, 8943, 7890, 8482, 7151, 7852, 8510, 8269, 7427, 9579, 8051, 8411, 9208, 9131, 9491, 6701, 9620, 9239, 8178, 8944, 7891, 8483, 7152, 7853, 8511, 8270, 7428, 9580, 8052, 8412, 9209, 9132, 9492, 6702, 9621, 9240, 8179, 8945, 7892, 8484, 7153, 7854, 8512, 8271, 7429, 9581, 8053, 8413, 9210, 9133, 9493, 6703, 9622, 9241, 8180, 8946, 7893, 8485, 7154, 7855, 8513, 8272, 7430, 9582, 8054, 8414, 9211, 9134, 9494, 6704, 9623, 9242, 8181, 8947, 7894, 8486, 7155, 7856, 8514, 8273, 7431, 9583, 8055, 8415, 9212, 9135, 9495, 6705, 9624, 9243, 8182, 8948, 7895, 8487, 7156, 7857, 8515, 8274, 7432, 9584, 8056, 8416, 9213, 9136, 9496, 6706, 9625, 9244, 8183, 8949, 7896, 8488, 7157, 7858, 8516, 8275, 7433, 9585, 8057, 8417, 9214, 9137, 9497, 6707, 9626, 9245, 8184, 8950, 7897, 8489, 7158, 7859, 8517, 8276, 7434, 9586, 8058, 8418, 9215, 9138, 9498, 6708, 9627, 9246, 8185, 8951, 7898, 8490, 7159, 7860, 8518, 8277, 7435, 9587, 8059, 8419, 9216, 9139, 9499, 6709, 9628, 9247, 8186, 8952, 7899, 8491, 7160, 7861, 8519, 8278, 7436, 9588, 8060, 8420, 9217, 9140, 9500, 6710, 9629, 9248, 8187, 8953, 7900, 8492, 7161, 7862, 8520, 8279, 7437, 9589, 8061, 8421, 9218, 9141, 9501, 6711, 9630, 9249, 8188, 8954, 7901, 8493, 7162, 7863, 8521, 8280, 7438, 9590, 8062, 8422, 9219, 9142, 9502, 6712, 9631, 9250, 8189, 8955, 7902, 8494, 7163, 7864, 8522, 7921, 7439, 9591, 8063, 8423, 9220, 9143, 9503, 6713, 9632, 9251, 8190, 8956, 7903, 8495, 7164, 7865, 8523, 7922, 7440, 9592, 8064, 8424, 9221, 9144, 9504, 6714, 9633, 9252, 8191, 8957, 7904, 8496, 7165, 7866, 8524, 7923, 7441, 9593, 8065, 8425, 9222, 9145, 9505, 6715, 9634, 9253, 8192, 8958, 7905, 8497, 7166, 7867, 8525, 7924, 7442, 9594, 8066, 8426, 9223, 9146, 9506, 6716, 9635, 9254, 8193, 8959, 7906, 8498, 7167, 7868, 8526, 7925, 7443, 9595, 8067, 8427, 9224, 9147, 9507, 6717, 9636, 9255, 8194, 8960, 7907, 8499, 7168, 7869, 8527, 7926, 7444, 9596, 8068, 8428, 9225, 9148, 9508, 6718, 9637, 9256, 8195, 8961, 7908, 8500, 7169, 7870, 8528, 7927, 7445, 9597, 8069, 8429, 9226, 9149, 9509, 6719, 9638, 9257, 8196, 8962, 7909, 8501, 7170, 7871, 8529, 7928, 7446, 9598, 8070, 8430, 9227, 9150, 9510, 6720, 9639, 9258, 8197, 8963, 7910, 8502, 7171, 7872, 8530, 7929, 7447, 9599, 8071, 8431, 9228, 9151, 9511, 6721, 9640, 9259, 8198, 8964, 7911, 8503, 7172, 7873, 8531, 7930, 7448, 9600, 8072, 8432, 9229, 9152, 9512, 6722, 9641, 9260, 8199, 8965, 7912, 8504, 7173, 7874, 8532, 7931, 7449, 9601, 8073, 8433, 9230, 9153, 9513, 6723, 9642, 9261, 8200, 8966, 7913, 8505, 7174, 7875, 8533, 7932, 7450, 9602, 8074, 8434, 9231, 9154, 9514, 6724, 9643, 9262, 8201, 8967, 7914, 8506, 7175, 7876, 8534, 7933, 7451, 9603, 8075, 8435, 9232, 9155, 9515, 6725, 9644, 9263, 8202, 8968, 7915, 8507, 7176, 7877, 8535, 7934, 7452, 9604, 8076, 8436, 9233, 9156, 9516, 6726, 9645, 9264, 8203, 8969, 7916, 8508, 7177, 7878, 8536, 7935, 7453, 9605, 8077, 8437, 9234, 9157, 9517, 6727, 9646, 9265, 8204, 8970, 7917, 8509, 7178, 7879, 8537, 7936, 7454, 9606, 8078, 8438, 9235, 9158, 9518, 6728, 9647, 9266, 8205, 8971, 7918, 8510, 7179, 7880, 8538, 7937, 7455, 9607, 8079, 8439, 9236, 9159, 9519, 6729, 9648, 9267, 8206, 8972, 7919, 8511, 7180, 7881, 8539, 7938, 7456, 9608, 8080, 8440, 9237, 9160, 9520, 6730, 9649, 9268, 8207, 8973, 7920, 8512, 7181, 7882, 8540, 7939, 7457, 9609, 8081, 8441, 9238, 9161, 9521, 6731, 9650, 9269, 8208, 8974, 7561, 8513, 7182, 7883, 8541, 7940, 7458, 9610, 8082, 8442, 9239, 9162, 9522, 6732, 9651, 9270, 8209, 8975, 7562, 8514, 7183, 7884, 8542, 7941, 7459, 9611, 8083, 8443, 9240, 9163, 9523, 6733, 9652, 9271, 8210, 8976, 7563, 8515, 7184, 7885, 8543, 7942, 7460, 9612, 8084, 8444, 9241, 9164, 9524, 6734, 9653, 9272, 8211, 8977, 7564, 8516, 7185, 7886, 8544, 7943, 7461, 9613, 8085, 8445, 9242, 9165, 9525, 6735, 9654, 9273, 8212, 8978, 7565, 8517, 7186, 7887, 8545, 7944, 7462, 9614, 8086, 8446, 9243, 9166, 9526, 6736, 9655, 9274, 8213, 8979, 7566, 8518, 7187, 7888, 8546, 7945, 7463, 9615, 8087, 8447, 9244, 9167, 9527, 6737, 9656, 9275, 8214, 8980, 7567, 8519, 7188, 7889, 8547, 7946, 7464, 9616, 8088, 8448, 9245, 9168, 9528, 6738, 9657, 9276, 8215, 8981, 7568, 8520, 7189, 7890, 8548, 7947, 7465, 9617, 8089, 8449, 9246, 9169, 9529, 6739, 9658, 9277, 8216, 8982, 7569, 8521, 7190, 7891, 8549, 7948, 7466, 9618, 8090, 8450, 9247, 9170, 9530, 6740, 9659, 9278, 8217, 8983, 7570, 8522, 7191, 7892, 8550, 7949, 7467, 9619, 8091, 8451, 9248, 9171, 9531, 6741, 9660, 9279, 8218, 8984, 7571, 8523, 7192, 7893, 8551, 7950, 7468, 9620, 8092, 8452, 9249, 9172, 9532, 6742, 9661, 9280, 8219, 8985, 7572, 8524, 7193, 7894, 8552, 7951, 7469, 9621, 8093, 8453, 9250, 9173, 9533, 6743, 9662, 9281, 8220, 8986, 7573, 8525, 7194, 7895, 8553, 7952, 7470, 9622, 8094, 8454, 9251, 9174, 9534, 6744, 9663, 9282, 8221, 8987, 7574, 8526, 7195, 7896, 8554, 7953, 7471, 9623, 8095, 8455, 9252, 9175, 9535, 6745, 9664, 9283, 8222, 8988, 7575, 8527, 7196, 7897, 8555, 7954, 7472, 9624, 8096, 8456, 9253, 9176, 9536, 6746, 9665, 9284, 8223, 8989, 7576, 8528, 7197, 7898, 8556, 7955, 7473, 9625, 8097, 8457, 9254, 9177, 9537, 6747, 9666, 9285, 8224, 8990, 7577, 8529, 7198, 7899, 8557, 7956, 7474, 9626, 8098, 8458, 9255, 9178, 9538, 6748, 9667, 9286, 8225, 8991, 7578, 8530, 7199, 7900, 8558, 7957, 7475, 9627, 8099, 8459, 9256, 9179, 9539, 6749, 9668, 9287, 8226, 8992, 7579, 8531, 7200, 7901, 8559, 7958, 7476, 9628, 8100, 8460, 9257, 9180, 9540, 6750, 9669, 9288, 8227, 8993, 7580, 8532, 6841, 7902, 8560, 7959, 7477, 9629, 8101, 8461, 9258, 9181, 9541, 6751, 9670, 9289, 8228, 8994, 7581, 8533, 6842, 7903, 8561, 7960, 7478, 9630, 8102, 8462, 9259, 9182, 9542, 6752, 9671, 9290, 8229, 8995, 7582, 8534, 6843, 7904, 8562, 7961, 7479, 9631, 8103, 8463, 9260, 9183, 9543, 6753, 9672, 9291, 8230, 8996, 7583, 8535, 6844, 7905, 8563, 7962, 7480, 9632, 8104, 8464, 9261, 9184, 9544, 6754, 9673, 9292, 8231, 8997, 7584, 8536, 6845, 7906, 8564, 7963, 7481, 9633, 8105, 8465, 9262, 9185, 9545, 6755, 9674, 9293, 8232, 8998, 7585, 8537, 6846, 7907, 8565, 7964, 7482, 9634, 8106, 8466, 9263, 9186, 9546, 6756, 9675, 9294, 8233, 8999, 7586, 8538, 6847, 7908, 8566, 7965, 7483, 9635, 8107, 8467, 9264, 9187, 9547, 6757, 9676, 9295, 8234, 9000, 7587, 8539, 6848, 7909, 8567, 7966, 7484, 9636, 8108, 8468, 9265, 9188, 9548, 6758, 9677, 9296, 8235, 8641, 7588, 8540, 6849, 7910, 8568, 7967, 7485, 9637, 8109, 8469, 9266, 9189, 9549, 6759, 9678, 9297, 8236, 8642, 7589, 8541, 6850, 7911, 8569, 7968, 7486, 9638, 8110, 8470, 9267, 9190, 9550, 6760, 9679, 9298, 8237, 8643, 7590, 8542, 6851, 7912, 8570, 7969, 7487, 9639, 8111, 8471, 9268, 9191, 9551, 6761, 9680, 9299, 8238, 8644, 7591, 8543, 6852, 7913, 8571, 7970, 7488, 9640, 8112, 8472, 9269, 9192, 9552, 6762, 9681, 9300, 8239, 8645, 7592, 8544, 6853, 7914, 8572, 7971, 7489, 9641, 8113, 8473, 9270, 9193, 9553, 6763, 9682, 9301, 8240, 8646, 7593, 8545, 6854, 7915, 8573, 7972, 7490, 9642, 8114, 8474, 9271, 9194, 9554, 6764, 9683, 9302, 8241, 8647, 7594, 8546, 6855, 7916, 8574, 7973, 7491, 9643, 8115, 8475, 9272, 9195, 9555, 6765, 9684, 9303, 8242, 8648, 7595, 8547, 6856, 7917, 8575, 7974, 7492, 9644, 8116, 8476, 9273, 9196, 9556, 6766, 9685, 9304, 8243, 8649, 7596, 8548, 6857, 7918, 8576, 7975, 7493, 9645, 8117, 8477, 9274, 9197, 9557, 6767, 9686, 9305, 8244, 8650, 7597, 8549, 6858, 7919, 8577, 7976, 7494, 9646, 8118, 8478, 9275, 9198, 9558, 6768, 9687, 9306, 8245, 8651, 7598, 8550, 6859, 7920, 8578, 7977, 7495, 9647, 8119, 8479, 9276, 9199, 9559, 6769, 9688, 9307, 8246, 8652, 7599, 8551, 6860, 7561, 8579, 7978, 7496, 9648, 8120, 8480, 9277, 9200, 9560, 6770, 9689, 9308, 8247, 8653, 7600, 8552, 6861, 7562, 8580, 7979, 7497, 9649, 8121, 8481, 9278, 9201, 9561, 6771, 9690, 9309, 8248, 8654, 7601, 8553, 6862, 7563, 8581, 7980, 7498, 9650, 8122, 8482, 9279, 9202, 9562, 6772, 9691, 9310, 8249, 8655, 7602, 8554, 6863, 7564, 8582, 7981, 7499, 9651, 8123, 8483, 9280, 9203, 9563, 6773, 9692, 9311, 8250, 8656, 7603, 8555, 6864, 7565, 8583, 7982, 7500, 9652, 8124, 8484, 9281, 9204, 9564, 6774, 9693, 9312, 8251, 8657, 7604, 8556, 6865, 7566, 8584, 7983, 7501, 9653, 8125, 8485, 9282, 9205, 9565, 6775, 9694, 9313, 8252, 8658, 7605, 8557, 6866, 7567, 8585, 7984, 7502, 9654, 8126, 8486, 9283, 9206, 9566, 6776, 9695, 9314, 8253, 8659, 7606, 8558, 6867, 7568, 8586, 7985, 7503, 9655, 8127, 8487, 9284, 9207, 9567, 6777, 9696, 9315, 8254, 8660, 7607, 8559, 6868, 7569, 8587, 7986, 7504, 9656, 8128, 8488, 9285, 9208, 9568, 6778, 9697, 9316, 8255, 8661, 7608, 8560, 6869, 7570, 8588, 7987, 7505, 9657, 8129, 8489, 9286, 9209, 9569, 6779, 9698, 9317, 8256, 8662, 7609, 8561, 6870, 7571, 8589, 7988, 7506, 9658, 8130, 8490, 9287, 9210, 9570, 6780, 9699, 9318, 8257, 8663, 7610, 8562, 6871, 7572, 8590, 7989, 7507, 9659, 8131, 8491, 9288, 9211, 9571, 6781, 9700, 9319, 8258, 8664, 7611, 8563, 6872, 7573, 8591, 7990, 7508, 9660, 8132, 8492, 9289, 9212, 9572, 6782, 9701, 9320, 8259, 8665, 7612, 8564, 6873, 7574, 8592, 7991, 7509, 9661, 8133, 8493, 9290, 9213, 9573, 6783, 9702, 9321, 8260, 8666, 7613, 8565, 6874, 7575, 8593, 7992, 7510, 9662, 8134, 8494, 9291, 9214, 9574, 6784, 9703, 9322, 8261, 8667, 7614, 8566, 6875, 7576, 8594, 7993, 7511, 9663, 8135, 8495, 9292, 9215, 9575, 6785, 9704, 9323, 8262, 8668, 7615, 8567, 6876, 7577, 8595, 7994, 7512, 9664, 8136, 8496, 9293, 9216, 9576, 6786, 9705, 9324, 8263, 8669, 7616, 8568, 6877, 7578, 8596, 7995, 7513, 9665, 8137, 8497, 9294, 9217, 9577, 6787, 9706, 9325, 8264, 8670, 7617, 8569, 6878, 7579, 8597, 7996, 7514, 9666, 8138, 8498, 9295, 9218, 9578, 6788, 9707, 9326, 8265, 8671, 7618, 8570, 6879, 7580, 8598, 7997, 7515, 9667, 8139, 8499, 9296, 9219, 9579, 6789, 9708, 9327, 8266, 8672, 7619, 8571, 6880, 7581, 8599, 7998, 7516, 9668, 8140, 8500, 9297, 9220, 9580, 6790, 9709, 9328, 8267, 8673, 7620, 8572, 6881, 7582, 8600, 7999, 7517, 9669, 8141, 8501, 9298, 9221, 9581, 6791, 9710, 9329, 8268, 8674, 7621, 8573, 6882, 7583, 8601, 8000, 7518, 9670, 8142, 8502, 9299, 9222, 9582, 6792, 9711, 9330, 8269, 8675, 7622, 8574, 6883, 7584, 8602, 8001, 7519, 9671, 8143, 8503, 9300, 9223, 9583, 6793, 9712, 9331, 8270, 8676, 7623, 8575, 6884, 7585, 8603, 8002, 7520, 9672, 8144, 8504, 9301, 9224, 9584, 6794, 9713, 9332, 8271, 8677, 7624, 8576, 6885, 7586, 8604, 8003, 7521, 9673, 8145, 8505, 9302, 9225, 9585, 6795, 9714, 9333, 8272, 8678, 7625, 8577, 6886, 7587, 8605, 8004, 7522, 9674, 8146, 8506, 9303, 9226, 9586, 6796, 9715, 9334, 8273, 8679, 7626, 8578, 6887, 7588, 8606, 8005, 7523, 9675, 8147, 8507, 9304, 9227, 9587, 6797, 9716, 9335, 8274, 8680, 7627, 8579, 6888, 7589, 8607, 8006, 7524, 9676, 8148, 8508, 9305, 9228, 9588, 6798, 9717, 9336, 8275, 8681, 7628, 8580, 6889, 7590, 8608, 8007, 7525, 9677, 8149, 8509, 9306, 9229, 9589, 6799, 9718, 9337, 8276, 8682, 7629, 8581, 6890, 7591, 8609, 8008, 7526, 9678, 8150, 8510, 9307, 9230, 9590, 6800, 9719, 9338, 8277, 8683, 7630, 8582, 6891, 7592, 8610, 8009, 7527, 9679, 8151, 8511, 9308, 9231, 9591, 6801, 9720, 9339, 8278, 8684, 7631, 8583, 6892, 7593, 8611, 8010, 7528, 9680, 8152, 8512, 9309, 9232, 9592, 6802, 9361, 9340, 8279, 8685, 7632, 8584, 6893, 7594, 8612, 8011, 7529, 9681, 8153, 8513, 9310, 9233, 9593, 6803, 9362, 9341, 8280, 8686, 7633, 8585, 6894, 7595, 8613, 8012, 7530, 9682, 8154, 8514, 9311, 9234, 9594, 6804, 9363, 9342, 7921, 8687, 7634, 8586, 6895, 7596, 8614, 8013, 7531, 9683, 8155, 8515, 9312, 9235, 9595, 6805, 9364, 9343, 7922, 8688, 7635, 8587, 6896, 7597, 8615, 8014, 7532, 9684, 8156, 8516, 9313, 9236, 9596, 6806, 9365, 9344, 7923, 8689, 7636, 8588, 6897, 7598, 8616, 8015, 7533, 9685, 8157, 8517, 9314, 9237, 9597, 6807, 9366, 9345, 7924, 8690, 7637, 8589, 6898, 7599, 8617, 8016, 7534, 9686, 8158, 8518, 9315, 9238, 9598, 6808, 9367, 9346, 7925, 8691, 7638, 8590, 6899, 7600, 8618, 8017, 7535, 9687, 8159, 8519, 9316, 9239, 9599, 6809, 9368, 9347, 7926, 8692, 7639, 8591, 6900, 7601, 8619, 8018, 7536, 9688, 8160, 8520, 9317, 9240, 9600, 6810, 9369, 9348, 7927, 8693, 7640, 8592, 6901, 7602, 8620, 8019, 7537, 9689, 8161, 8521, 9318, 9241, 9601, 6811, 9370, 9349, 7928, 8694, 7641, 8593, 6902, 7603, 8621, 8020, 7538, 9690, 8162, 8522, 9319, 9242, 9602, 6812, 9371, 9350, 7929, 8695, 7642, 8594, 6903, 7604, 8622, 8021, 7539, 9691, 8163, 8523, 9320, 9243, 9603, 6813, 9372, 9351, 7930, 8696, 7643, 8595, 6904, 7605, 8623, 8022, 7540, 9692, 8164, 8524, 9321, 9244, 9604, 6814, 9373, 9352, 7931, 8697, 7644, 8596, 6905, 7606, 8624, 8023, 7541, 9693, 8165, 8525, 9322, 9245, 9605, 6815, 9374, 9353, 7932, 8698, 7645, 8597, 6906, 7607, 8625, 8024, 7542, 9694, 8166, 8526, 9323, 9246, 9606, 6816, 9375, 9354, 7933, 8699, 7646, 8598, 6907, 7608, 8626, 8025, 7543, 9695, 8167, 8527, 9324, 9247, 9607, 6817, 9376, 9355, 7934, 8700, 7647, 8599, 6908, 7609, 8627, 8026, 7544, 9696, 8168, 8528, 9325, 9248, 9608, 6818, 9377, 9356, 7935, 8701, 7648, 8600, 6909, 7610, 8628, 8027, 7545, 9697, 8169, 8529, 9326, 9249, 9609, 6819, 9378, 9357, 7936, 8702, 7649, 8601, 6910, 7611, 8629, 8028, 7546, 9698, 8170, 8530, 9327, 9250, 9610, 6820, 9379, 9358, 7937, 8703, 7650, 8602, 6911, 7612, 8630, 8029, 7547, 9699, 8171, 8531, 9328, 9251, 9611, 6821, 9380, 9359, 7938, 8704, 7651, 8603, 6912, 7613, 8631, 8030, 7548, 9700, 8172, 8532, 9329, 9252, 9612, 6822, 9381, 9360, 7939, 8705, 7652, 8604, 6913, 7614, 8632, 8031, 7549, 9701, 8173, 8533, 9330, 9253, 9613, 6823, 9382, 9001, 7940, 8706, 7653, 8605, 6914, 7615, 8633, 8032, 7550, 9702, 8174, 8534, 9331, 9254, 9614, 6824, 9383, 9002, 7941, 8707, 7654, 8606, 6915, 7616, 8634, 8033, 7551, 9703, 8175, 8535, 9332, 9255, 9615, 6825, 9384, 9003, 7942, 8708, 7655, 8607, 6916, 7617, 8635, 8034, 7552, 9704, 8176, 8536, 9333, 9256, 9616, 6826, 9385, 9004, 7943, 8709, 7656, 8608, 6917, 7618, 8636, 8035, 7553, 9705, 8177, 8537, 9334, 9257, 9617, 6827, 9386, 9005, 7944, 8710, 7657, 8609, 6918, 7619, 8637, 8036, 7554, 9706, 8178, 8538, 9335, 9258, 9618, 6828, 9387, 9006, 7945, 8711, 7658, 8610, 6919, 7620, 8638, 8037, 7555, 9707, 8179, 8539, 9336, 9259, 9619, 6829, 9388, 9007, 7946, 8712, 7659, 8611, 6920, 7621, 8639, 8038, 7556, 9708, 8180, 8540, 9337, 9260, 9620, 6830, 9389, 9008, 7947, 8713, 7660, 8612, 6921, 7622, 8640, 8039, 7557, 9709, 8181, 8541, 9338, 9261, 9621, 6831, 9390, 9009, 7948, 8714, 7661, 8613, 6922, 7623, 8281, 8040, 7558, 9710, 8182, 8542, 9339, 9262, 9622, 6832, 9391, 9010, 7949, 8715, 7662, 8614, 6923, 7624, 8282, 8041, 7559, 9711, 8183, 8543, 9340, 9263, 9623, 6833, 9392, 9011, 7950, 8716, 7663, 8615, 6924, 7625, 8283, 8042, 7560, 9712, 8184, 8544, 9341, 9264, 9624, 6834, 9393, 9012, 7951, 8717, 7664, 8616, 6925, 7626, 8284, 8043, 7465, 9713, 8185, 8545, 9342, 9265, 9625, 6835, 9394, 9013, 7952, 8718, 7665, 8617, 6926, 7627, 8285, 8044, 7466, 9714, 8186, 8546, 9343, 9266, 9626, 6836, 9395, 9014, 7953, 8719, 7666, 8618, 6927, 7628, 8286, 8045, 7467, 9715, 8187, 8547, 9344, 9267, 9627, 6837, 9396, 9015, 7954, 8720, 7667, 8619, 6928, 7629, 8287, 8046, 7468, 9716, 8188, 8548, 9345, 9268, 9628, 6838, 9397, 9016, 7955, 8721, 7668, 8620, 6929, 7630, 8288, 8047, 7469, 9717, 8189, 8549, 9346, 9269, 9629, 6839, 9398, 9017, 7956, 8722, 7669, 8621, 6930, 7631, 8289, 8048, 7470, 9718, 8190, 8550, 9347, 9270, 9630, 6840, 9399, 9018, 7957, 8723, 7670, 8622, 6931, 7632, 8290, 8049, 7471, 9719, 8191, 8551, 9348, 9271, 9631, 6481, 9400, 9019, 7958, 8724, 7671, 8623, 6932, 7633, 8291, 8050, 7472, 9720, 8192, 8552, 9349, 9272, 9632, 6482, 9401, 9020, 7959, 8725, 7672, 8624, 6933, 7634, 8292, 8051, 7473, 9361, 8193, 8553, 9350, 9273, 9633, 6483, 9402, 9021, 7960, 8726, 7673, 8625, 6934, 7635, 8293, 8052, 7474, 9362, 8194, 8554, 9351, 9274, 9634, 6484, 9403, 9022, 7961, 8727, 7674, 8626, 6935, 7636, 8294, 8053, 7475, 9363, 8195, 8555, 9352, 9275, 9635, 6485, 9404, 9023, 7962, 8728, 7675, 8627, 6936, 7637, 8295, 8054, 7476, 9364, 8196, 8556, 9353, 9276, 9636, 6486, 9405, 9024, 7963, 8729, 7676, 8628, 6937, 7638, 8296, 8055, 7477, 9365, 8197, 8557, 9354, 9277, 9637, 6487, 9406, 9025, 7964, 8730, 7677, 8629, 6938, 7639, 8297, 8056, 7478, 9366, 8198, 8558, 9355, 9278, 9638, 6488, 9407, 9026, 7965, 8731, 7678, 8630, 6939, 7640, 8298, 8057, 7479, 9367, 8199, 8559, 9356, 9279, 9639, 6489, 9408, 9027, 7966, 8732, 7679, 8631, 6940, 7641, 8299, 8058, 7480, 9368, 8200, 8560, 9357, 9280, 9640, 6490, 9409, 9028, 7967, 8733, 7680, 8632, 6941, 7642, 8300, 8059, 7481, 9369, 8201, 8561, 9358, 9281, 9641, 6491, 9410, 9029, 7968, 8734, 7681, 8633, 6942, 7643, 8301, 8060, 7482, 9370, 8202, 8562, 9359, 9282, 9642, 6492, 9411, 9030, 7969, 8735, 7682, 8634, 6943, 7644, 8302, 8061, 7483, 9371, 8203, 8563, 9360, 9283, 9643, 6493, 9412, 9031, 7970, 8736, 7683, 8635, 6944, 7645, 8303, 8062, 7484, 9372, 8204, 8564, 9001, 9284, 9644, 6494, 9413, 9032, 7971, 8737, 7684, 8636, 6945, 7646, 8304, 8063, 7485, 9373, 8205, 8565, 9002, 9285, 9645, 6495, 9414, 9033, 7972, 8738, 7685, 8637, 6946, 7647, 8305, 8064, 7486, 9374, 8206, 8566, 9003, 9286, 9646, 6496, 9415, 9034, 7973, 8739, 7686, 8638, 6947, 7648, 8306, 8065, 7487, 9375, 8207, 8567, 9004, 9287, 9647, 6497, 9416, 9035, 7974, 8740, 7687, 8639, 6948, 7649, 8307, 8066, 7488, 9376, 8208, 8568, 9005, 9288, 9648, 6498, 9417, 9036, 7975, 8741, 7688, 8640, 6949, 7650, 8308, 8067, 7489, 9377, 8209, 8569, 9006, 9289, 9649, 6499, 9418, 9037, 7976, 8742, 7689, 8281, 6950, 7651, 8309, 8068, 7490, 9378, 8210, 8570, 9007, 9290, 9650, 6500, 9419, 9038, 7977, 8743, 7690, 8282, 6951, 7652, 8310, 8069, 7491, 9379, 8211, 8571, 9008, 9291, 9651, 6501, 9420, 9039, 7978, 8744, 7691, 8283, 6952, 7653, 8311, 8070, 7492, 9380, 8212, 8572, 9009, 9292, 9652, 6502, 9421, 9040, 7979, 8745, 7692, 8284, 6953, 7654, 8312, 8071, 7493, 9381, 8213, 8573, 9010, 9293, 9653, 6503, 9422, 9041, 7980, 8746, 7693, 8285, 6954, 7655, 8313, 8072, 7494, 9382, 8214, 8574, 9011, 9294, 9654, 6504, 9423, 9042, 7981, 8747, 7694, 8286, 6955, 7656, 8314, 8073, 7495, 9383, 8215, 8575, 9012, 9295, 9655, 6505, 9424, 9043, 7982, 8748, 7695, 8287, 6956, 7657, 8315, 8074, 7496, 9384, 8216, 8576, 9013, 9296, 9656, 6506, 9425, 9044, 7983, 8749, 7696, 8288, 6957, 7658, 8316, 8075, 7497, 9385, 8217, 8577, 9014, 9297, 9657, 6507, 9426, 9045, 7984, 8750, 7697, 8289, 6958, 7659, 8317, 8076, 7498, 9386, 8218, 8578, 9015, 9298, 9658, 6508, 9427, 9046, 7985, 8751, 7698, 8290, 6959, 7660, 8318, 8077, 7499, 9387, 8219, 8579, 9016, 9299, 9659, 6509, 9428, 9047, 7986, 8752, 7699, 8291, 6960, 7661, 8319, 8078, 7500, 9388, 8220, 8580, 9017, 9300, 9660, 6510, 9429, 9048, 7987, 8753, 7700, 8292, 6961, 7662, 8320, 8079, 7501, 9389, 8221, 8581, 9018, 9301, 9661, 6511, 9430, 9049, 7988, 8754, 7701, 8293, 6962, 7663, 8321, 8080, 7502, 9390, 8222, 8582, 9019, 9302, 9662, 6512, 9431, 9050, 7989, 8755, 7702, 8294, 6963, 7664, 8322, 8081, 7503, 9391, 8223, 8583, 9020, 9303, 9663, 6513, 9432, 9051, 7990, 8756, 7703, 8295, 6964, 7665, 8323, 8082, 7504, 9392, 8224, 8584, 9021, 9304, 9664, 6514, 9433, 9052, 7991, 8757, 7704, 8296, 6965, 7666, 8324, 8083, 7505, 9393, 8225, 8585, 9022, 9305, 9665, 6515, 9434, 9053, 7992, 8758, 7705, 8297, 6966, 7667, 8325, 8084, 7506, 9394, 8226, 8586, 9023, 9306, 9666, 6516, 9435, 9054, 7993, 8759, 7706, 8298, 6967, 7668, 8326, 8085, 7507, 9395, 8227, 8587, 9024, 9307, 9667, 6517, 9436, 9055, 7994, 8760, 7707, 8299, 6968, 7669, 8327, 8086, 7508, 9396, 8228, 8588, 9025, 9308, 9668, 6518, 9437, 9056, 7995, 8761, 7708, 8300, 6969, 7670, 8328, 8087, 7509, 9397, 8229, 8589, 9026, 9309, 9669, 6519, 9438, 9057, 7996, 8762, 7709, 8301, 6970, 7671, 8329, 8088, 7510, 9398, 8230, 8590, 9027, 9310, 9670, 6520, 9439, 9058, 7997, 8763, 7710, 8302, 6971, 7672, 8330, 8089, 7511, 9399, 8231, 8591, 9028, 9311, 9671, 6521, 9440, 9059, 7998, 8764, 7711, 8303, 6972, 7673, 8331, 8090, 7512, 9400, 8232, 8592, 9029, 9312, 9672, 6522, 9441, 9060, 7999, 8765, 7712, 8304, 6973, 7674, 8332, 8091, 7513, 9401, 8233, 8593, 9030, 9313, 9673, 6523, 9442, 9061, 8000, 8766, 7713, 8305, 6974, 7675, 8333, 8092, 7514, 9402, 8234, 8594, 9031, 9314, 9674, 6524, 9443, 9062, 8001, 8767, 7714, 8306, 6975, 7676, 8334, 8093, 7515, 9403, 8235, 8595, 9032, 9315, 9675, 6525, 9444, 9063, 8002, 8768, 7715, 8307, 6976, 7677, 8335, 8094, 7516, 9404, 8236, 8596, 9033, 9316, 9676, 6526, 9445, 9064, 8003, 8769, 7716, 8308, 6977, 7678, 8336, 8095, 7517, 9405, 8237, 8597, 9034, 9317, 9677, 6527, 9446, 9065, 8004, 8770, 7717, 8309, 6978, 7679, 8337, 8096, 7518, 9406, 8238, 8598, 9035, 9318, 9678, 6528, 9447, 9066, 8005, 8771, 7718, 8310, 6979, 7680, 8338, 8097, 7519, 9407, 8239, 8599, 9036, 9319, 9679, 6529, 9448, 9067, 8006, 8772, 7719, 8311, 6980, 7681, 8339, 8098, 7520, 9408, 8240, 8600, 9037, 9320, 9680, 6530, 9449, 9068, 8007, 8773, 7720, 8312, 6981, 7682, 8340, 8099, 7521, 9409, 8241, 8601, 9038, 9321, 9681, 6531, 9450, 9069, 8008, 8774, 7721, 8313, 6982, 7683, 8341, 8100, 7522, 9410, 8242, 8602, 9039, 9322, 9682, 6532, 9451, 9070, 8009, 8775, 7722, 8314, 6983, 7684, 8342, 8101, 7523, 9411, 8243, 8603, 9040, 9323, 9683, 6533, 9452, 9071, 8010, 8776, 7723, 8315, 6984, 7685, 8343, 8102, 7524, 9412, 8244, 8604, 9041, 9324, 9684, 6534, 9453, 9072, 8011, 8777, 7724, 8316, 6985, 7686, 8344, 8103, 7525, 9413, 8245, 8605, 9042, 9325, 9685, 6535, 9454, 9073, 8012, 8778, 7725, 8317, 6986, 7687, 8345, 8104, 7526, 9414, 8246, 8606, 9043, 9326, 9686, 6536, 9455, 9074, 8013, 8779, 7726, 8318, 6987, 7688, 8346, 8105, 7527, 9415, 8247, 8607, 9044, 9327, 9687, 6537, 9456, 9075, 8014, 8780, 7727, 8319, 6988, 7689, 8347, 8106, 7528, 9416, 8248, 8608, 9045, 9328, 9688, 6538, 9457, 9076, 8015, 8781, 7728, 8320, 6989, 7690, 8348, 8107, 7529, 9417, 8249, 8609, 9046, 9329, 9689, 6539, 9458, 9077, 8016, 8782, 7729, 8321, 6990, 7691, 8349, 8108, 7530, 9418, 8250, 8610, 9047, 9330, 9690, 6540, 9459, 9078, 8017, 8783, 7730, 8322, 6991, 7692, 8350, 8109, 7531, 9419, 8251, 8611, 9048, 9331, 9691, 6541, 9460, 9079, 8018, 8784, 7731, 8323, 6992, 7693, 8351, 8110, 7532, 9420, 8252, 8612, 9049, 9332, 9692, 6542, 9461, 9080, 8019, 8785, 7732, 8324, 6993, 7694, 8352, 8111, 7533, 9421, 8253, 8613, 9050, 9333, 9693, 6543, 9462, 9081, 8020, 8786, 7733, 8325, 6994, 7695, 8353, 8112, 7534, 9422, 8254, 8614, 9051, 9334, 9694, 6544, 9463, 9082, 8021, 8787, 7734, 8326, 6995, 7696, 8354, 8113, 7535, 9423, 8255, 8615, 9052, 9335, 9695, 6545, 9464, 9083, 8022, 8788, 7735, 8327, 6996, 7697, 8355, 8114, 7536, 9424, 8256, 8616, 9053, 9336, 9696, 6546, 9465, 9084, 8023, 8789, 7736, 8328, 6997, 7698, 8356, 8115, 7537, 9425, 8257, 8617, 9054, 9337, 9697, 6547, 9466, 9085, 8024, 8790, 7737, 8329, 6998, 7699, 8357, 8116, 7538, 9426, 8258, 8618, 9055, 9338, 9698, 6548, 9467, 9086, 8025, 8791, 7738, 8330, 6999, 7700, 8358, 8117, 7539, 9427, 8259, 8619, 9056, 9339, 9699, 6549, 9468, 9087, 8026, 8792, 7739, 8331, 7000, 7701, 8359, 8118, 7540, 9428, 8260, 8620, 9057, 9340, 9700, 6550, 9469, 9088, 8027, 8793, 7740, 8332, 7001, 7702, 8360, 8119, 7541, 9429, 8261, 8621, 9058, 9341, 9701, 6551, 9470, 9089, 8028, 8794, 7741, 8333, 7002, 7703, 8361, 8120, 7542, 9430, 8262, 8622, 9059, 9342, 9702, 6552, 9471, 9090, 8029, 8795, 7742, 8334, 7003, 7704, 8362, 8121, 7543, 9431, 8263, 8623, 9060, 9343, 9703, 6553, 9472, 9091, 8030, 8796, 7743, 8335, 7004, 7705, 8363, 8122, 7544, 9432, 8264, 8624, 9061, 9344, 9704, 6554, 9473, 9092, 8031, 8797, 7744, 8336, 7005, 7706, 8364, 8123, 7545, 9433, 8265, 8625, 9062, 9345, 9705, 6555, 9474, 9093, 8032, 8798, 7745, 8337, 7006, 7707, 8365, 8124, 7546, 9434, 8266, 8626, 9063, 9346, 9706, 6556, 9475, 9094, 8033, 8799, 7746, 8338, 7007, 7708, 8366, 8125, 7547, 9435, 8267, 8627, 9064, 9347, 9707, 6557, 9476, 9095, 8034, 8800, 7747, 8339, 7008, 7709, 8367, 8126, 7548, 9436, 8268, 8628, 9065, 9348, 9708, 6558, 9477, 9096, 8035, 8801, 7748, 8340, 7009, 7710, 8368, 8127, 7549, 9437, 8269, 8629, 9066, 9349, 9709, 6559, 9478, 9097, 8036, 8802, 7749, 8341, 7010, 7711, 8369, 8128, 7550, 9438, 8270, 8630, 9067, 9350, 9710, 6560, 9479, 9098, 8037, 8803, 7750, 8342, 7011, 7712, 8370, 8129, 7551, 9439, 8271, 8631, 9068, 9351, 9711, 6561, 9480, 9099, 8038, 8804, 7751, 8343, 7012, 7713, 8371, 8130, 7552, 9440, 8272, 8632, 9069, 9352, 9712, 6562, 9481, 9100, 8039, 8805, 7752, 8344, 7013, 7714, 8372, 8131, 7553, 9441, 8273, 8633, 9070, 9353, 9713, 6563, 9482, 9101, 8040, 8806, 7753, 8345, 7014, 7715, 8373, 8132, 7554, 9442, 8274, 8634, 9071, 9354, 9714, 6564, 9483, 9102, 8041, 8807, 7754, 8346, 7015, 7716, 8374, 8133, 7555, 9443, 8275, 8635, 9072, 9355, 9715, 6565, 9484, 9103, 8042, 8808, 7755, 8347, 7016, 7717, 8375, 8134, 7556, 9444, 8276, 8636, 9073, 9356, 9716, 6566, 9485, 9104, 8043, 8809, 7756, 8348, 7017, 7718, 8376, 8135, 7557, 9445, 8277, 8637, 9074, 9357, 9717, 6567, 9486, 9105, 8044, 8810, 7757, 8349, 7018, 7719, 8377, 8136, 7558, 9446, 8278, 8638, 9075, 9358, 9718, 6568, 9487, 9106, 8045, 8811, 7758, 8350, 7019, 7720, 8378, 8137, 7559, 9447, 8279, 8639, 9076, 9359, 9719, 6569, 9488, 9107, 8046, 8812, 7759, 8351, 7020, 7721, 8379, 8138, 7560, 9448, 8280, 8640, 9077, 9360, 9720}; const uint16_t H_16200_9720_H_cols[] = { 2766, 2784, 2802, 2820, 2838, 2856, 2874, 2892, 2910, 2928, 2946, 2964, 2982, 3000, 3018, 3036, 3054, 3072, 3090, 3108, 3126, 3144, 3162, 3180, 3198, 3216, 3234, 3252, 3270, 3288, 3306, 3324, 3342, 3360, 3378, 3396, 3414, 3432, 3450, 3468, 3486, 3504, 3522, 3540, 3558, 3576, 3594, 3612, 3630, 3648, 3666, 3684, 3702, 3720, 3738, 3756, 3774, 3792, 3810, 3828, 3846, 3864, 3882, 3900, 3918, 3936, 3954, 3972, 3990, 4008, 4026, 4044, 4062, 4080, 4098, 4116, 4134, 4152, 4170, 4188, 4206, 4224, 4242, 4260, 4278, 4296, 4314, 4332, 4350, 4368, 4386, 4404, 4422, 4440, 4458, 4476, 4494, 4512, 4530, 4548, 4566, 4584, 4602, 4620, 4638, 4656, 4674, 4692, 4710, 4728, 4746, 4764, 4782, 4800, 4818, 4836, 4854, 4872, 4890, 4908, 4926, 4944, 4962, 4980, 4998, 5016, 5034, 5052, 5070, 5088, 5106, 5124, 5142, 5160, 5178, 5196, 5214, 5232, 5250, 5268, 5286, 5304, 5322, 5340, 5358, 5376, 5394, 5412, 5430, 5448, 5466, 5484, 5502, 5520, 5538, 5556, 5574, 5592, 5610, 5628, 5646, 5664, 5682, 5700, 5718, 5736, 5754, 5772, 5790, 5808, 5826, 5844, 5862, 5880, 5898, 5916, 5934, 5952, 5970, 5988, 6006, 6024, 6042, 6060, 6078, 6096, 6114, 6132, 6150, 6168, 6186, 6204, 6222, 6240, 6258, 6276, 6294, 6312, 6330, 6348, 6366, 6384, 6402, 6420, 6438, 6456, 6474, 12, 30, 48, 66, 84, 102, 120, 138, 156, 174, 192, 210, 228, 246, 264, 282, 300, 318, 336, 354, 372, 390, 408, 426, 444, 462, 480, 498, 516, 534, 552, 570, 588, 606, 624, 642, 660, 678, 696, 714, 732, 750, 768, 786, 804, 822, 840, 858, 876, 894, 912, 930, 948, 966, 984, 1002, 1020, 1038, 1056, 1074, 1092, 1110, 1128, 1146, 1164, 1182, 1200, 1218, 1236, 1254, 1272, 1290, 1308, 1326, 1344, 1362, 1380, 1398, 1416, 1434, 1452, 1470, 1488, 1506, 1524, 1542, 1560, 1578, 1596, 1614, 1632, 1650, 1668, 1686, 1704, 1722, 1740, 1758, 1776, 1794, 1812, 1830, 1848, 1866, 1884, 1902, 1920, 1938, 1956, 1974, 1992, 2010, 2028, 2046, 2064, 2082, 2100, 2118, 2136, 2154, 2172, 2190, 2208, 2226, 2244, 2262, 2280, 2298, 2316, 2334, 2352, 2370, 2388, 2406, 2424, 2442, 2460, 2478, 2496, 2514, 2532, 2550, 2568, 2586, 2604, 2622, 2640, 2658, 2676, 2694, 2712, 2730, 2748, 4952, 4970, 4988, 5006, 5024, 5042, 5060, 5078, 5096, 5114, 5132, 5150, 5168, 5186, 5204, 5222, 5240, 5258, 5276, 5294, 5312, 5330, 5348, 5366, 5384, 5402, 5420, 5438, 5456, 5474, 5492, 5510, 5528, 5546, 5564, 5582, 5600, 5618, 5636, 5654, 5672, 5690, 5708, 5726, 5744, 5762, 5780, 5798, 5816, 5834, 5852, 5870, 5888, 5906, 5924, 5942, 5960, 5978, 5996, 6014, 6032, 6050, 6068, 6086, 6104, 6122, 6140, 6158, 6176, 6194, 6212, 6230, 6248, 6266, 6284, 6302, 6320, 6338, 6356, 6374, 6392, 6410, 6428, 6446, 6464, 2, 20, 38, 56, 74, 92, 110, 128, 146, 164, 182, 200, 218, 236, 254, 272, 290, 308, 326, 344, 362, 380, 398, 416, 434, 452, 470, 488, 506, 524, 542, 560, 578, 596, 614, 632, 650, 668, 686, 704, 722, 740, 758, 776, 794, 812, 830, 848, 866, 884, 902, 920, 938, 956, 974, 992, 1010, 1028, 1046, 1064, 1082, 1100, 1118, 1136, 1154, 1172, 1190, 1208, 1226, 1244, 1262, 1280, 1298, 1316, 1334, 1352, 1370, 1388, 1406, 1424, 1442, 1460, 1478, 1496, 1514, 1532, 1550, 1568, 1586, 1604, 1622, 1640, 1658, 1676, 1694, 1712, 1730, 1748, 1766, 1784, 1802, 1820, 1838, 1856, 1874, 1892, 1910, 1928, 1946, 1964, 1982, 2000, 2018, 2036, 2054, 2072, 2090, 2108, 2126, 2144, 2162, 2180, 2198, 2216, 2234, 2252, 2270, 2288, 2306, 2324, 2342, 2360, 2378, 2396, 2414, 2432, 2450, 2468, 2486, 2504, 2522, 2540, 2558, 2576, 2594, 2612, 2630, 2648, 2666, 2684, 2702, 2720, 2738, 2756, 2774, 2792, 2810, 2828, 2846, 2864, 2882, 2900, 2918, 2936, 2954, 2972, 2990, 3008, 3026, 3044, 3062, 3080, 3098, 3116, 3134, 3152, 3170, 3188, 3206, 3224, 3242, 3260, 3278, 3296, 3314, 3332, 3350, 3368, 3386, 3404, 3422, 3440, 3458, 3476, 3494, 3512, 3530, 3548, 3566, 3584, 3602, 3620, 3638, 3656, 3674, 3692, 3710, 3728, 3746, 3764, 3782, 3800, 3818, 3836, 3854, 3872, 3890, 3908, 3926, 3944, 3962, 3980, 3998, 4016, 4034, 4052, 4070, 4088, 4106, 4124, 4142, 4160, 4178, 4196, 4214, 4232, 4250, 4268, 4286, 4304, 4322, 4340, 4358, 4376, 4394, 4412, 4430, 4448, 4466, 4484, 4502, 4520, 4538, 4556, 4574, 4592, 4610, 4628, 4646, 4664, 4682, 4700, 4718, 4736, 4754, 4772, 4790, 4808, 4826, 4844, 4862, 4880, 4898, 4916, 4934, 211, 229, 247, 265, 283, 301, 319, 337, 355, 373, 391, 409, 427, 445, 463, 481, 499, 517, 535, 553, 571, 589, 607, 625, 643, 661, 679, 697, 715, 733, 751, 769, 787, 805, 823, 841, 859, 877, 895, 913, 931, 949, 967, 985, 1003, 1021, 1039, 1057, 1075, 1093, 1111, 1129, 1147, 1165, 1183, 1201, 1219, 1237, 1255, 1273, 1291, 1309, 1327, 1345, 1363, 1381, 1399, 1417, 1435, 1453, 1471, 1489, 1507, 1525, 1543, 1561, 1579, 1597, 1615, 1633, 1651, 1669, 1687, 1705, 1723, 1741, 1759, 1777, 1795, 1813, 1831, 1849, 1867, 1885, 1903, 1921, 1939, 1957, 1975, 1993, 2011, 2029, 2047, 2065, 2083, 2101, 2119, 2137, 2155, 2173, 2191, 2209, 2227, 2245, 2263, 2281, 2299, 2317, 2335, 2353, 2371, 2389, 2407, 2425, 2443, 2461, 2479, 2497, 2515, 2533, 2551, 2569, 2587, 2605, 2623, 2641, 2659, 2677, 2695, 2713, 2731, 2749, 2767, 2785, 2803, 2821, 2839, 2857, 2875, 2893, 2911, 2929, 2947, 2965, 2983, 3001, 3019, 3037, 3055, 3073, 3091, 3109, 3127, 3145, 3163, 3181, 3199, 3217, 3235, 3253, 3271, 3289, 3307, 3325, 3343, 3361, 3379, 3397, 3415, 3433, 3451, 3469, 3487, 3505, 3523, 3541, 3559, 3577, 3595, 3613, 3631, 3649, 3667, 3685, 3703, 3721, 3739, 3757, 3775, 3793, 3811, 3829, 3847, 3865, 3883, 3901, 3919, 3937, 3955, 3973, 3991, 4009, 4027, 4045, 4063, 4081, 4099, 4117, 4135, 4153, 4171, 4189, 4207, 4225, 4243, 4261, 4279, 4297, 4315, 4333, 4351, 4369, 4387, 4405, 4423, 4441, 4459, 4477, 4495, 4513, 4531, 4549, 4567, 4585, 4603, 4621, 4639, 4657, 4675, 4693, 4711, 4729, 4747, 4765, 4783, 4801, 4819, 4837, 4855, 4873, 4891, 4909, 4927, 4945, 4963, 4981, 4999, 5017, 5035, 5053, 5071, 5089, 5107, 5125, 5143, 5161, 5179, 5197, 5215, 5233, 5251, 5269, 5287, 5305, 5323, 5341, 5359, 5377, 5395, 5413, 5431, 5449, 5467, 5485, 5503, 5521, 5539, 5557, 5575, 5593, 5611, 5629, 5647, 5665, 5683, 5701, 5719, 5737, 5755, 5773, 5791, 5809, 5827, 5845, 5863, 5881, 5899, 5917, 5935, 5953, 5971, 5989, 6007, 6025, 6043, 6061, 6079, 6097, 6115, 6133, 6151, 6169, 6187, 6205, 6223, 6241, 6259, 6277, 6295, 6313, 6331, 6349, 6367, 6385, 6403, 6421, 6439, 6457, 6475, 13, 31, 49, 67, 85, 103, 121, 139, 157, 175, 193, 4168, 4186, 4204, 4222, 4240, 4258, 4276, 4294, 4312, 4330, 4348, 4366, 4384, 4402, 4420, 4438, 4456, 4474, 4492, 4510, 4528, 4546, 4564, 4582, 4600, 4618, 4636, 4654, 4672, 4690, 4708, 4726, 4744, 4762, 4780, 4798, 4816, 4834, 4852, 4870, 4888, 4906, 4924, 4942, 4960, 4978, 4996, 5014, 5032, 5050, 5068, 5086, 5104, 5122, 5140, 5158, 5176, 5194, 5212, 5230, 5248, 5266, 5284, 5302, 5320, 5338, 5356, 5374, 5392, 5410, 5428, 5446, 5464, 5482, 5500, 5518, 5536, 5554, 5572, 5590, 5608, 5626, 5644, 5662, 5680, 5698, 5716, 5734, 5752, 5770, 5788, 5806, 5824, 5842, 5860, 5878, 5896, 5914, 5932, 5950, 5968, 5986, 6004, 6022, 6040, 6058, 6076, 6094, 6112, 6130, 6148, 6166, 6184, 6202, 6220, 6238, 6256, 6274, 6292, 6310, 6328, 6346, 6364, 6382, 6400, 6418, 6436, 6454, 6472, 10, 28, 46, 64, 82, 100, 118, 136, 154, 172, 190, 208, 226, 244, 262, 280, 298, 316, 334, 352, 370, 388, 406, 424, 442, 460, 478, 496, 514, 532, 550, 568, 586, 604, 622, 640, 658, 676, 694, 712, 730, 748, 766, 784, 802, 820, 838, 856, 874, 892, 910, 928, 946, 964, 982, 1000, 1018, 1036, 1054, 1072, 1090, 1108, 1126, 1144, 1162, 1180, 1198, 1216, 1234, 1252, 1270, 1288, 1306, 1324, 1342, 1360, 1378, 1396, 1414, 1432, 1450, 1468, 1486, 1504, 1522, 1540, 1558, 1576, 1594, 1612, 1630, 1648, 1666, 1684, 1702, 1720, 1738, 1756, 1774, 1792, 1810, 1828, 1846, 1864, 1882, 1900, 1918, 1936, 1954, 1972, 1990, 2008, 2026, 2044, 2062, 2080, 2098, 2116, 2134, 2152, 2170, 2188, 2206, 2224, 2242, 2260, 2278, 2296, 2314, 2332, 2350, 2368, 2386, 2404, 2422, 2440, 2458, 2476, 2494, 2512, 2530, 2548, 2566, 2584, 2602, 2620, 2638, 2656, 2674, 2692, 2710, 2728, 2746, 2764, 2782, 2800, 2818, 2836, 2854, 2872, 2890, 2908, 2926, 2944, 2962, 2980, 2998, 3016, 3034, 3052, 3070, 3088, 3106, 3124, 3142, 3160, 3178, 3196, 3214, 3232, 3250, 3268, 3286, 3304, 3322, 3340, 3358, 3376, 3394, 3412, 3430, 3448, 3466, 3484, 3502, 3520, 3538, 3556, 3574, 3592, 3610, 3628, 3646, 3664, 3682, 3700, 3718, 3736, 3754, 3772, 3790, 3808, 3826, 3844, 3862, 3880, 3898, 3916, 3934, 3952, 3970, 3988, 4006, 4024, 4042, 4060, 4078, 4096, 4114, 4132, 4150, 4202, 4220, 4238, 4256, 4274, 4292, 4310, 4328, 4346, 4364, 4382, 4400, 4418, 4436, 4454, 4472, 4490, 4508, 4526, 4544, 4562, 4580, 4598, 4616, 4634, 4652, 4670, 4688, 4706, 4724, 4742, 4760, 4778, 4796, 4814, 4832, 4850, 4868, 4886, 4904, 4922, 4940, 4958, 4976, 4994, 5012, 5030, 5048, 5066, 5084, 5102, 5120, 5138, 5156, 5174, 5192, 5210, 5228, 5246, 5264, 5282, 5300, 5318, 5336, 5354, 5372, 5390, 5408, 5426, 5444, 5462, 5480, 5498, 5516, 5534, 5552, 5570, 5588, 5606, 5624, 5642, 5660, 5678, 5696, 5714, 5732, 5750, 5768, 5786, 5804, 5822, 5840, 5858, 5876, 5894, 5912, 5930, 5948, 5966, 5984, 6002, 6020, 6038, 6056, 6074, 6092, 6110, 6128, 6146, 6164, 6182, 6200, 6218, 6236, 6254, 6272, 6290, 6308, 6326, 6344, 6362, 6380, 6398, 6416, 6434, 6452, 6470, 8, 26, 44, 62, 80, 98, 116, 134, 152, 170, 188, 206, 224, 242, 260, 278, 296, 314, 332, 350, 368, 386, 404, 422, 440, 458, 476, 494, 512, 530, 548, 566, 584, 602, 620, 638, 656, 674, 692, 710, 728, 746, 764, 782, 800, 818, 836, 854, 872, 890, 908, 926, 944, 962, 980, 998, 1016, 1034, 1052, 1070, 1088, 1106, 1124, 1142, 1160, 1178, 1196, 1214, 1232, 1250, 1268, 1286, 1304, 1322, 1340, 1358, 1376, 1394, 1412, 1430, 1448, 1466, 1484, 1502, 1520, 1538, 1556, 1574, 1592, 1610, 1628, 1646, 1664, 1682, 1700, 1718, 1736, 1754, 1772, 1790, 1808, 1826, 1844, 1862, 1880, 1898, 1916, 1934, 1952, 1970, 1988, 2006, 2024, 2042, 2060, 2078, 2096, 2114, 2132, 2150, 2168, 2186, 2204, 2222, 2240, 2258, 2276, 2294, 2312, 2330, 2348, 2366, 2384, 2402, 2420, 2438, 2456, 2474, 2492, 2510, 2528, 2546, 2564, 2582, 2600, 2618, 2636, 2654, 2672, 2690, 2708, 2726, 2744, 2762, 2780, 2798, 2816, 2834, 2852, 2870, 2888, 2906, 2924, 2942, 2960, 2978, 2996, 3014, 3032, 3050, 3068, 3086, 3104, 3122, 3140, 3158, 3176, 3194, 3212, 3230, 3248, 3266, 3284, 3302, 3320, 3338, 3356, 3374, 3392, 3410, 3428, 3446, 3464, 3482, 3500, 3518, 3536, 3554, 3572, 3590, 3608, 3626, 3644, 3662, 3680, 3698, 3716, 3734, 3752, 3770, 3788, 3806, 3824, 3842, 3860, 3878, 3896, 3914, 3932, 3950, 3968, 3986, 4004, 4022, 4040, 4058, 4076, 4094, 4112, 4130, 4148, 4166, 4184, 2671, 2689, 2707, 2725, 2743, 2761, 2779, 2797, 2815, 2833, 2851, 2869, 2887, 2905, 2923, 2941, 2959, 2977, 2995, 3013, 3031, 3049, 3067, 3085, 3103, 3121, 3139, 3157, 3175, 3193, 3211, 3229, 3247, 3265, 3283, 3301, 3319, 3337, 3355, 3373, 3391, 3409, 3427, 3445, 3463, 3481, 3499, 3517, 3535, 3553, 3571, 3589, 3607, 3625, 3643, 3661, 3679, 3697, 3715, 3733, 3751, 3769, 3787, 3805, 3823, 3841, 3859, 3877, 3895, 3913, 3931, 3949, 3967, 3985, 4003, 4021, 4039, 4057, 4075, 4093, 4111, 4129, 4147, 4165, 4183, 4201, 4219, 4237, 4255, 4273, 4291, 4309, 4327, 4345, 4363, 4381, 4399, 4417, 4435, 4453, 4471, 4489, 4507, 4525, 4543, 4561, 4579, 4597, 4615, 4633, 4651, 4669, 4687, 4705, 4723, 4741, 4759, 4777, 4795, 4813, 4831, 4849, 4867, 4885, 4903, 4921, 4939, 4957, 4975, 4993, 5011, 5029, 5047, 5065, 5083, 5101, 5119, 5137, 5155, 5173, 5191, 5209, 5227, 5245, 5263, 5281, 5299, 5317, 5335, 5353, 5371, 5389, 5407, 5425, 5443, 5461, 5479, 5497, 5515, 5533, 5551, 5569, 5587, 5605, 5623, 5641, 5659, 5677, 5695, 5713, 5731, 5749, 5767, 5785, 5803, 5821, 5839, 5857, 5875, 5893, 5911, 5929, 5947, 5965, 5983, 6001, 6019, 6037, 6055, 6073, 6091, 6109, 6127, 6145, 6163, 6181, 6199, 6217, 6235, 6253, 6271, 6289, 6307, 6325, 6343, 6361, 6379, 6397, 6415, 6433, 6451, 6469, 7, 25, 43, 61, 79, 97, 115, 133, 151, 169, 187, 205, 223, 241, 259, 277, 295, 313, 331, 349, 367, 385, 403, 421, 439, 457, 475, 493, 511, 529, 547, 565, 583, 601, 619, 637, 655, 673, 691, 709, 727, 745, 763, 781, 799, 817, 835, 853, 871, 889, 907, 925, 943, 961, 979, 997, 1015, 1033, 1051, 1069, 1087, 1105, 1123, 1141, 1159, 1177, 1195, 1213, 1231, 1249, 1267, 1285, 1303, 1321, 1339, 1357, 1375, 1393, 1411, 1429, 1447, 1465, 1483, 1501, 1519, 1537, 1555, 1573, 1591, 1609, 1627, 1645, 1663, 1681, 1699, 1717, 1735, 1753, 1771, 1789, 1807, 1825, 1843, 1861, 1879, 1897, 1915, 1933, 1951, 1969, 1987, 2005, 2023, 2041, 2059, 2077, 2095, 2113, 2131, 2149, 2167, 2185, 2203, 2221, 2239, 2257, 2275, 2293, 2311, 2329, 2347, 2365, 2383, 2401, 2419, 2437, 2455, 2473, 2491, 2509, 2527, 2545, 2563, 2581, 2599, 2617, 2635, 2653, 5517, 5535, 5553, 5571, 5589, 5607, 5625, 5643, 5661, 5679, 5697, 5715, 5733, 5751, 5769, 5787, 5805, 5823, 5841, 5859, 5877, 5895, 5913, 5931, 5949, 5967, 5985, 6003, 6021, 6039, 6057, 6075, 6093, 6111, 6129, 6147, 6165, 6183, 6201, 6219, 6237, 6255, 6273, 6291, 6309, 6327, 6345, 6363, 6381, 6399, 6417, 6435, 6453, 6471, 9, 27, 45, 63, 81, 99, 117, 135, 153, 171, 189, 207, 225, 243, 261, 279, 297, 315, 333, 351, 369, 387, 405, 423, 441, 459, 477, 495, 513, 531, 549, 567, 585, 603, 621, 639, 657, 675, 693, 711, 729, 747, 765, 783, 801, 819, 837, 855, 873, 891, 909, 927, 945, 963, 981, 999, 1017, 1035, 1053, 1071, 1089, 1107, 1125, 1143, 1161, 1179, 1197, 1215, 1233, 1251, 1269, 1287, 1305, 1323, 1341, 1359, 1377, 1395, 1413, 1431, 1449, 1467, 1485, 1503, 1521, 1539, 1557, 1575, 1593, 1611, 1629, 1647, 1665, 1683, 1701, 1719, 1737, 1755, 1773, 1791, 1809, 1827, 1845, 1863, 1881, 1899, 1917, 1935, 1953, 1971, 1989, 2007, 2025, 2043, 2061, 2079, 2097, 2115, 2133, 2151, 2169, 2187, 2205, 2223, 2241, 2259, 2277, 2295, 2313, 2331, 2349, 2367, 2385, 2403, 2421, 2439, 2457, 2475, 2493, 2511, 2529, 2547, 2565, 2583, 2601, 2619, 2637, 2655, 2673, 2691, 2709, 2727, 2745, 2763, 2781, 2799, 2817, 2835, 2853, 2871, 2889, 2907, 2925, 2943, 2961, 2979, 2997, 3015, 3033, 3051, 3069, 3087, 3105, 3123, 3141, 3159, 3177, 3195, 3213, 3231, 3249, 3267, 3285, 3303, 3321, 3339, 3357, 3375, 3393, 3411, 3429, 3447, 3465, 3483, 3501, 3519, 3537, 3555, 3573, 3591, 3609, 3627, 3645, 3663, 3681, 3699, 3717, 3735, 3753, 3771, 3789, 3807, 3825, 3843, 3861, 3879, 3897, 3915, 3933, 3951, 3969, 3987, 4005, 4023, 4041, 4059, 4077, 4095, 4113, 4131, 4149, 4167, 4185, 4203, 4221, 4239, 4257, 4275, 4293, 4311, 4329, 4347, 4365, 4383, 4401, 4419, 4437, 4455, 4473, 4491, 4509, 4527, 4545, 4563, 4581, 4599, 4617, 4635, 4653, 4671, 4689, 4707, 4725, 4743, 4761, 4779, 4797, 4815, 4833, 4851, 4869, 4887, 4905, 4923, 4941, 4959, 4977, 4995, 5013, 5031, 5049, 5067, 5085, 5103, 5121, 5139, 5157, 5175, 5193, 5211, 5229, 5247, 5265, 5283, 5301, 5319, 5337, 5355, 5373, 5391, 5409, 5427, 5445, 5463, 5481, 5499, 4245, 4263, 4281, 4299, 4317, 4335, 4353, 4371, 4389, 4407, 4425, 4443, 4461, 4479, 4497, 4515, 4533, 4551, 4569, 4587, 4605, 4623, 4641, 4659, 4677, 4695, 4713, 4731, 4749, 4767, 4785, 4803, 4821, 4839, 4857, 4875, 4893, 4911, 4929, 4947, 4965, 4983, 5001, 5019, 5037, 5055, 5073, 5091, 5109, 5127, 5145, 5163, 5181, 5199, 5217, 5235, 5253, 5271, 5289, 5307, 5325, 5343, 5361, 5379, 5397, 5415, 5433, 5451, 5469, 5487, 5505, 5523, 5541, 5559, 5577, 5595, 5613, 5631, 5649, 5667, 5685, 5703, 5721, 5739, 5757, 5775, 5793, 5811, 5829, 5847, 5865, 5883, 5901, 5919, 5937, 5955, 5973, 5991, 6009, 6027, 6045, 6063, 6081, 6099, 6117, 6135, 6153, 6171, 6189, 6207, 6225, 6243, 6261, 6279, 6297, 6315, 6333, 6351, 6369, 6387, 6405, 6423, 6441, 6459, 6477, 15, 33, 51, 69, 87, 105, 123, 141, 159, 177, 195, 213, 231, 249, 267, 285, 303, 321, 339, 357, 375, 393, 411, 429, 447, 465, 483, 501, 519, 537, 555, 573, 591, 609, 627, 645, 663, 681, 699, 717, 735, 753, 771, 789, 807, 825, 843, 861, 879, 897, 915, 933, 951, 969, 987, 1005, 1023, 1041, 1059, 1077, 1095, 1113, 1131, 1149, 1167, 1185, 1203, 1221, 1239, 1257, 1275, 1293, 1311, 1329, 1347, 1365, 1383, 1401, 1419, 1437, 1455, 1473, 1491, 1509, 1527, 1545, 1563, 1581, 1599, 1617, 1635, 1653, 1671, 1689, 1707, 1725, 1743, 1761, 1779, 1797, 1815, 1833, 1851, 1869, 1887, 1905, 1923, 1941, 1959, 1977, 1995, 2013, 2031, 2049, 2067, 2085, 2103, 2121, 2139, 2157, 2175, 2193, 2211, 2229, 2247, 2265, 2283, 2301, 2319, 2337, 2355, 2373, 2391, 2409, 2427, 2445, 2463, 2481, 2499, 2517, 2535, 2553, 2571, 2589, 2607, 2625, 2643, 2661, 2679, 2697, 2715, 2733, 2751, 2769, 2787, 2805, 2823, 2841, 2859, 2877, 2895, 2913, 2931, 2949, 2967, 2985, 3003, 3021, 3039, 3057, 3075, 3093, 3111, 3129, 3147, 3165, 3183, 3201, 3219, 3237, 3255, 3273, 3291, 3309, 3327, 3345, 3363, 3381, 3399, 3417, 3435, 3453, 3471, 3489, 3507, 3525, 3543, 3561, 3579, 3597, 3615, 3633, 3651, 3669, 3687, 3705, 3723, 3741, 3759, 3777, 3795, 3813, 3831, 3849, 3867, 3885, 3903, 3921, 3939, 3957, 3975, 3993, 4011, 4029, 4047, 4065, 4083, 4101, 4119, 4137, 4155, 4173, 4191, 4209, 4227, 2143, 2161, 2179, 2197, 2215, 2233, 2251, 2269, 2287, 2305, 2323, 2341, 2359, 2377, 2395, 2413, 2431, 2449, 2467, 2485, 2503, 2521, 2539, 2557, 2575, 2593, 2611, 2629, 2647, 2665, 2683, 2701, 2719, 2737, 2755, 2773, 2791, 2809, 2827, 2845, 2863, 2881, 2899, 2917, 2935, 2953, 2971, 2989, 3007, 3025, 3043, 3061, 3079, 3097, 3115, 3133, 3151, 3169, 3187, 3205, 3223, 3241, 3259, 3277, 3295, 3313, 3331, 3349, 3367, 3385, 3403, 3421, 3439, 3457, 3475, 3493, 3511, 3529, 3547, 3565, 3583, 3601, 3619, 3637, 3655, 3673, 3691, 3709, 3727, 3745, 3763, 3781, 3799, 3817, 3835, 3853, 3871, 3889, 3907, 3925, 3943, 3961, 3979, 3997, 4015, 4033, 4051, 4069, 4087, 4105, 4123, 4141, 4159, 4177, 4195, 4213, 4231, 4249, 4267, 4285, 4303, 4321, 4339, 4357, 4375, 4393, 4411, 4429, 4447, 4465, 4483, 4501, 4519, 4537, 4555, 4573, 4591, 4609, 4627, 4645, 4663, 4681, 4699, 4717, 4735, 4753, 4771, 4789, 4807, 4825, 4843, 4861, 4879, 4897, 4915, 4933, 4951, 4969, 4987, 5005, 5023, 5041, 5059, 5077, 5095, 5113, 5131, 5149, 5167, 5185, 5203, 5221, 5239, 5257, 5275, 5293, 5311, 5329, 5347, 5365, 5383, 5401, 5419, 5437, 5455, 5473, 5491, 5509, 5527, 5545, 5563, 5581, 5599, 5617, 5635, 5653, 5671, 5689, 5707, 5725, 5743, 5761, 5779, 5797, 5815, 5833, 5851, 5869, 5887, 5905, 5923, 5941, 5959, 5977, 5995, 6013, 6031, 6049, 6067, 6085, 6103, 6121, 6139, 6157, 6175, 6193, 6211, 6229, 6247, 6265, 6283, 6301, 6319, 6337, 6355, 6373, 6391, 6409, 6427, 6445, 6463, 1, 19, 37, 55, 73, 91, 109, 127, 145, 163, 181, 199, 217, 235, 253, 271, 289, 307, 325, 343, 361, 379, 397, 415, 433, 451, 469, 487, 505, 523, 541, 559, 577, 595, 613, 631, 649, 667, 685, 703, 721, 739, 757, 775, 793, 811, 829, 847, 865, 883, 901, 919, 937, 955, 973, 991, 1009, 1027, 1045, 1063, 1081, 1099, 1117, 1135, 1153, 1171, 1189, 1207, 1225, 1243, 1261, 1279, 1297, 1315, 1333, 1351, 1369, 1387, 1405, 1423, 1441, 1459, 1477, 1495, 1513, 1531, 1549, 1567, 1585, 1603, 1621, 1639, 1657, 1675, 1693, 1711, 1729, 1747, 1765, 1783, 1801, 1819, 1837, 1855, 1873, 1891, 1909, 1927, 1945, 1963, 1981, 1999, 2017, 2035, 2053, 2071, 2089, 2107, 2125, 1, 19, 37, 55, 73, 91, 109, 127, 145, 163, 181, 199, 217, 235, 253, 271, 289, 307, 325, 343, 361, 379, 397, 415, 433, 451, 469, 487, 505, 523, 541, 559, 577, 595, 613, 631, 649, 667, 685, 703, 721, 739, 757, 775, 793, 811, 829, 847, 865, 883, 901, 919, 937, 955, 973, 991, 1009, 1027, 1045, 1063, 1081, 1099, 1117, 1135, 1153, 1171, 1189, 1207, 1225, 1243, 1261, 1279, 1297, 1315, 1333, 1351, 1369, 1387, 1405, 1423, 1441, 1459, 1477, 1495, 1513, 1531, 1549, 1567, 1585, 1603, 1621, 1639, 1657, 1675, 1693, 1711, 1729, 1747, 1765, 1783, 1801, 1819, 1837, 1855, 1873, 1891, 1909, 1927, 1945, 1963, 1981, 1999, 2017, 2035, 2053, 2071, 2089, 2107, 2125, 2143, 2161, 2179, 2197, 2215, 2233, 2251, 2269, 2287, 2305, 2323, 2341, 2359, 2377, 2395, 2413, 2431, 2449, 2467, 2485, 2503, 2521, 2539, 2557, 2575, 2593, 2611, 2629, 2647, 2665, 2683, 2701, 2719, 2737, 2755, 2773, 2791, 2809, 2827, 2845, 2863, 2881, 2899, 2917, 2935, 2953, 2971, 2989, 3007, 3025, 3043, 3061, 3079, 3097, 3115, 3133, 3151, 3169, 3187, 3205, 3223, 3241, 3259, 3277, 3295, 3313, 3331, 3349, 3367, 3385, 3403, 3421, 3439, 3457, 3475, 3493, 3511, 3529, 3547, 3565, 3583, 3601, 3619, 3637, 3655, 3673, 3691, 3709, 3727, 3745, 3763, 3781, 3799, 3817, 3835, 3853, 3871, 3889, 3907, 3925, 3943, 3961, 3979, 3997, 4015, 4033, 4051, 4069, 4087, 4105, 4123, 4141, 4159, 4177, 4195, 4213, 4231, 4249, 4267, 4285, 4303, 4321, 4339, 4357, 4375, 4393, 4411, 4429, 4447, 4465, 4483, 4501, 4519, 4537, 4555, 4573, 4591, 4609, 4627, 4645, 4663, 4681, 4699, 4717, 4735, 4753, 4771, 4789, 4807, 4825, 4843, 4861, 4879, 4897, 4915, 4933, 4951, 4969, 4987, 5005, 5023, 5041, 5059, 5077, 5095, 5113, 5131, 5149, 5167, 5185, 5203, 5221, 5239, 5257, 5275, 5293, 5311, 5329, 5347, 5365, 5383, 5401, 5419, 5437, 5455, 5473, 5491, 5509, 5527, 5545, 5563, 5581, 5599, 5617, 5635, 5653, 5671, 5689, 5707, 5725, 5743, 5761, 5779, 5797, 5815, 5833, 5851, 5869, 5887, 5905, 5923, 5941, 5959, 5977, 5995, 6013, 6031, 6049, 6067, 6085, 6103, 6121, 6139, 6157, 6175, 6193, 6211, 6229, 6247, 6265, 6283, 6301, 6319, 6337, 6355, 6373, 6391, 6409, 6427, 6445, 6463, 2, 20, 38, 56, 74, 92, 110, 128, 146, 164, 182, 200, 218, 236, 254, 272, 290, 308, 326, 344, 362, 380, 398, 416, 434, 452, 470, 488, 506, 524, 542, 560, 578, 596, 614, 632, 650, 668, 686, 704, 722, 740, 758, 776, 794, 812, 830, 848, 866, 884, 902, 920, 938, 956, 974, 992, 1010, 1028, 1046, 1064, 1082, 1100, 1118, 1136, 1154, 1172, 1190, 1208, 1226, 1244, 1262, 1280, 1298, 1316, 1334, 1352, 1370, 1388, 1406, 1424, 1442, 1460, 1478, 1496, 1514, 1532, 1550, 1568, 1586, 1604, 1622, 1640, 1658, 1676, 1694, 1712, 1730, 1748, 1766, 1784, 1802, 1820, 1838, 1856, 1874, 1892, 1910, 1928, 1946, 1964, 1982, 2000, 2018, 2036, 2054, 2072, 2090, 2108, 2126, 2144, 2162, 2180, 2198, 2216, 2234, 2252, 2270, 2288, 2306, 2324, 2342, 2360, 2378, 2396, 2414, 2432, 2450, 2468, 2486, 2504, 2522, 2540, 2558, 2576, 2594, 2612, 2630, 2648, 2666, 2684, 2702, 2720, 2738, 2756, 2774, 2792, 2810, 2828, 2846, 2864, 2882, 2900, 2918, 2936, 2954, 2972, 2990, 3008, 3026, 3044, 3062, 3080, 3098, 3116, 3134, 3152, 3170, 3188, 3206, 3224, 3242, 3260, 3278, 3296, 3314, 3332, 3350, 3368, 3386, 3404, 3422, 3440, 3458, 3476, 3494, 3512, 3530, 3548, 3566, 3584, 3602, 3620, 3638, 3656, 3674, 3692, 3710, 3728, 3746, 3764, 3782, 3800, 3818, 3836, 3854, 3872, 3890, 3908, 3926, 3944, 3962, 3980, 3998, 4016, 4034, 4052, 4070, 4088, 4106, 4124, 4142, 4160, 4178, 4196, 4214, 4232, 4250, 4268, 4286, 4304, 4322, 4340, 4358, 4376, 4394, 4412, 4430, 4448, 4466, 4484, 4502, 4520, 4538, 4556, 4574, 4592, 4610, 4628, 4646, 4664, 4682, 4700, 4718, 4736, 4754, 4772, 4790, 4808, 4826, 4844, 4862, 4880, 4898, 4916, 4934, 4952, 4970, 4988, 5006, 5024, 5042, 5060, 5078, 5096, 5114, 5132, 5150, 5168, 5186, 5204, 5222, 5240, 5258, 5276, 5294, 5312, 5330, 5348, 5366, 5384, 5402, 5420, 5438, 5456, 5474, 5492, 5510, 5528, 5546, 5564, 5582, 5600, 5618, 5636, 5654, 5672, 5690, 5708, 5726, 5744, 5762, 5780, 5798, 5816, 5834, 5852, 5870, 5888, 5906, 5924, 5942, 5960, 5978, 5996, 6014, 6032, 6050, 6068, 6086, 6104, 6122, 6140, 6158, 6176, 6194, 6212, 6230, 6248, 6266, 6284, 6302, 6320, 6338, 6356, 6374, 6392, 6410, 6428, 6446, 6464, 3, 21, 39, 57, 75, 93, 111, 129, 147, 165, 183, 201, 219, 237, 255, 273, 291, 309, 327, 345, 363, 381, 399, 417, 435, 453, 471, 489, 507, 525, 543, 561, 579, 597, 615, 633, 651, 669, 687, 705, 723, 741, 759, 777, 795, 813, 831, 849, 867, 885, 903, 921, 939, 957, 975, 993, 1011, 1029, 1047, 1065, 1083, 1101, 1119, 1137, 1155, 1173, 1191, 1209, 1227, 1245, 1263, 1281, 1299, 1317, 1335, 1353, 1371, 1389, 1407, 1425, 1443, 1461, 1479, 1497, 1515, 1533, 1551, 1569, 1587, 1605, 1623, 1641, 1659, 1677, 1695, 1713, 1731, 1749, 1767, 1785, 1803, 1821, 1839, 1857, 1875, 1893, 1911, 1929, 1947, 1965, 1983, 2001, 2019, 2037, 2055, 2073, 2091, 2109, 2127, 2145, 2163, 2181, 2199, 2217, 2235, 2253, 2271, 2289, 2307, 2325, 2343, 2361, 2379, 2397, 2415, 2433, 2451, 2469, 2487, 2505, 2523, 2541, 2559, 2577, 2595, 2613, 2631, 2649, 2667, 2685, 2703, 2721, 2739, 2757, 2775, 2793, 2811, 2829, 2847, 2865, 2883, 2901, 2919, 2937, 2955, 2973, 2991, 3009, 3027, 3045, 3063, 3081, 3099, 3117, 3135, 3153, 3171, 3189, 3207, 3225, 3243, 3261, 3279, 3297, 3315, 3333, 3351, 3369, 3387, 3405, 3423, 3441, 3459, 3477, 3495, 3513, 3531, 3549, 3567, 3585, 3603, 3621, 3639, 3657, 3675, 3693, 3711, 3729, 3747, 3765, 3783, 3801, 3819, 3837, 3855, 3873, 3891, 3909, 3927, 3945, 3963, 3981, 3999, 4017, 4035, 4053, 4071, 4089, 4107, 4125, 4143, 4161, 4179, 4197, 4215, 4233, 4251, 4269, 4287, 4305, 4323, 4341, 4359, 4377, 4395, 4413, 4431, 4449, 4467, 4485, 4503, 4521, 4539, 4557, 4575, 4593, 4611, 4629, 4647, 4665, 4683, 4701, 4719, 4737, 4755, 4773, 4791, 4809, 4827, 4845, 4863, 4881, 4899, 4917, 4935, 4953, 4971, 4989, 5007, 5025, 5043, 5061, 5079, 5097, 5115, 5133, 5151, 5169, 5187, 5205, 5223, 5241, 5259, 5277, 5295, 5313, 5331, 5349, 5367, 5385, 5403, 5421, 5439, 5457, 5475, 5493, 5511, 5529, 5547, 5565, 5583, 5601, 5619, 5637, 5655, 5673, 5691, 5709, 5727, 5745, 5763, 5781, 5799, 5817, 5835, 5853, 5871, 5889, 5907, 5925, 5943, 5961, 5979, 5997, 6015, 6033, 6051, 6069, 6087, 6105, 6123, 6141, 6159, 6177, 6195, 6213, 6231, 6249, 6267, 6285, 6303, 6321, 6339, 6357, 6375, 6393, 6411, 6429, 6447, 6465, 4, 22, 40, 58, 76, 94, 112, 130, 148, 166, 184, 202, 220, 238, 256, 274, 292, 310, 328, 346, 364, 382, 400, 418, 436, 454, 472, 490, 508, 526, 544, 562, 580, 598, 616, 634, 652, 670, 688, 706, 724, 742, 760, 778, 796, 814, 832, 850, 868, 886, 904, 922, 940, 958, 976, 994, 1012, 1030, 1048, 1066, 1084, 1102, 1120, 1138, 1156, 1174, 1192, 1210, 1228, 1246, 1264, 1282, 1300, 1318, 1336, 1354, 1372, 1390, 1408, 1426, 1444, 1462, 1480, 1498, 1516, 1534, 1552, 1570, 1588, 1606, 1624, 1642, 1660, 1678, 1696, 1714, 1732, 1750, 1768, 1786, 1804, 1822, 1840, 1858, 1876, 1894, 1912, 1930, 1948, 1966, 1984, 2002, 2020, 2038, 2056, 2074, 2092, 2110, 2128, 2146, 2164, 2182, 2200, 2218, 2236, 2254, 2272, 2290, 2308, 2326, 2344, 2362, 2380, 2398, 2416, 2434, 2452, 2470, 2488, 2506, 2524, 2542, 2560, 2578, 2596, 2614, 2632, 2650, 2668, 2686, 2704, 2722, 2740, 2758, 2776, 2794, 2812, 2830, 2848, 2866, 2884, 2902, 2920, 2938, 2956, 2974, 2992, 3010, 3028, 3046, 3064, 3082, 3100, 3118, 3136, 3154, 3172, 3190, 3208, 3226, 3244, 3262, 3280, 3298, 3316, 3334, 3352, 3370, 3388, 3406, 3424, 3442, 3460, 3478, 3496, 3514, 3532, 3550, 3568, 3586, 3604, 3622, 3640, 3658, 3676, 3694, 3712, 3730, 3748, 3766, 3784, 3802, 3820, 3838, 3856, 3874, 3892, 3910, 3928, 3946, 3964, 3982, 4000, 4018, 4036, 4054, 4072, 4090, 4108, 4126, 4144, 4162, 4180, 4198, 4216, 4234, 4252, 4270, 4288, 4306, 4324, 4342, 4360, 4378, 4396, 4414, 4432, 4450, 4468, 4486, 4504, 4522, 4540, 4558, 4576, 4594, 4612, 4630, 4648, 4666, 4684, 4702, 4720, 4738, 4756, 4774, 4792, 4810, 4828, 4846, 4864, 4882, 4900, 4918, 4936, 4954, 4972, 4990, 5008, 5026, 5044, 5062, 5080, 5098, 5116, 5134, 5152, 5170, 5188, 5206, 5224, 5242, 5260, 5278, 5296, 5314, 5332, 5350, 5368, 5386, 5404, 5422, 5440, 5458, 5476, 5494, 5512, 5530, 5548, 5566, 5584, 5602, 5620, 5638, 5656, 5674, 5692, 5710, 5728, 5746, 5764, 5782, 5800, 5818, 5836, 5854, 5872, 5890, 5908, 5926, 5944, 5962, 5980, 5998, 6016, 6034, 6052, 6070, 6088, 6106, 6124, 6142, 6160, 6178, 6196, 6214, 6232, 6250, 6268, 6286, 6304, 6322, 6340, 6358, 6376, 6394, 6412, 6430, 6448, 6466, 5, 23, 41, 59, 77, 95, 113, 131, 149, 167, 185, 203, 221, 239, 257, 275, 293, 311, 329, 347, 365, 383, 401, 419, 437, 455, 473, 491, 509, 527, 545, 563, 581, 599, 617, 635, 653, 671, 689, 707, 725, 743, 761, 779, 797, 815, 833, 851, 869, 887, 905, 923, 941, 959, 977, 995, 1013, 1031, 1049, 1067, 1085, 1103, 1121, 1139, 1157, 1175, 1193, 1211, 1229, 1247, 1265, 1283, 1301, 1319, 1337, 1355, 1373, 1391, 1409, 1427, 1445, 1463, 1481, 1499, 1517, 1535, 1553, 1571, 1589, 1607, 1625, 1643, 1661, 1679, 1697, 1715, 1733, 1751, 1769, 1787, 1805, 1823, 1841, 1859, 1877, 1895, 1913, 1931, 1949, 1967, 1985, 2003, 2021, 2039, 2057, 2075, 2093, 2111, 2129, 2147, 2165, 2183, 2201, 2219, 2237, 2255, 2273, 2291, 2309, 2327, 2345, 2363, 2381, 2399, 2417, 2435, 2453, 2471, 2489, 2507, 2525, 2543, 2561, 2579, 2597, 2615, 2633, 2651, 2669, 2687, 2705, 2723, 2741, 2759, 2777, 2795, 2813, 2831, 2849, 2867, 2885, 2903, 2921, 2939, 2957, 2975, 2993, 3011, 3029, 3047, 3065, 3083, 3101, 3119, 3137, 3155, 3173, 3191, 3209, 3227, 3245, 3263, 3281, 3299, 3317, 3335, 3353, 3371, 3389, 3407, 3425, 3443, 3461, 3479, 3497, 3515, 3533, 3551, 3569, 3587, 3605, 3623, 3641, 3659, 3677, 3695, 3713, 3731, 3749, 3767, 3785, 3803, 3821, 3839, 3857, 3875, 3893, 3911, 3929, 3947, 3965, 3983, 4001, 4019, 4037, 4055, 4073, 4091, 4109, 4127, 4145, 4163, 4181, 4199, 4217, 4235, 4253, 4271, 4289, 4307, 4325, 4343, 4361, 4379, 4397, 4415, 4433, 4451, 4469, 4487, 4505, 4523, 4541, 4559, 4577, 4595, 4613, 4631, 4649, 4667, 4685, 4703, 4721, 4739, 4757, 4775, 4793, 4811, 4829, 4847, 4865, 4883, 4901, 4919, 4937, 4955, 4973, 4991, 5009, 5027, 5045, 5063, 5081, 5099, 5117, 5135, 5153, 5171, 5189, 5207, 5225, 5243, 5261, 5279, 5297, 5315, 5333, 5351, 5369, 5387, 5405, 5423, 5441, 5459, 5477, 5495, 5513, 5531, 5549, 5567, 5585, 5603, 5621, 5639, 5657, 5675, 5693, 5711, 5729, 5747, 5765, 5783, 5801, 5819, 5837, 5855, 5873, 5891, 5909, 5927, 5945, 5963, 5981, 5999, 6017, 6035, 6053, 6071, 6089, 6107, 6125, 6143, 6161, 6179, 6197, 6215, 6233, 6251, 6269, 6287, 6305, 6323, 6341, 6359, 6377, 6395, 6413, 6431, 6449, 6467, 6, 24, 42, 60, 78, 96, 114, 132, 150, 168, 186, 204, 222, 240, 258, 276, 294, 312, 330, 348, 366, 384, 402, 420, 438, 456, 474, 492, 510, 528, 546, 564, 582, 600, 618, 636, 654, 672, 690, 708, 726, 744, 762, 780, 798, 816, 834, 852, 870, 888, 906, 924, 942, 960, 978, 996, 1014, 1032, 1050, 1068, 1086, 1104, 1122, 1140, 1158, 1176, 1194, 1212, 1230, 1248, 1266, 1284, 1302, 1320, 1338, 1356, 1374, 1392, 1410, 1428, 1446, 1464, 1482, 1500, 1518, 1536, 1554, 1572, 1590, 1608, 1626, 1644, 1662, 1680, 1698, 1716, 1734, 1752, 1770, 1788, 1806, 1824, 1842, 1860, 1878, 1896, 1914, 1932, 1950, 1968, 1986, 2004, 2022, 2040, 2058, 2076, 2094, 2112, 2130, 2148, 2166, 2184, 2202, 2220, 2238, 2256, 2274, 2292, 2310, 2328, 2346, 2364, 2382, 2400, 2418, 2436, 2454, 2472, 2490, 2508, 2526, 2544, 2562, 2580, 2598, 2616, 2634, 2652, 2670, 2688, 2706, 2724, 2742, 2760, 2778, 2796, 2814, 2832, 2850, 2868, 2886, 2904, 2922, 2940, 2958, 2976, 2994, 3012, 3030, 3048, 3066, 3084, 3102, 3120, 3138, 3156, 3174, 3192, 3210, 3228, 3246, 3264, 3282, 3300, 3318, 3336, 3354, 3372, 3390, 3408, 3426, 3444, 3462, 3480, 3498, 3516, 3534, 3552, 3570, 3588, 3606, 3624, 3642, 3660, 3678, 3696, 3714, 3732, 3750, 3768, 3786, 3804, 3822, 3840, 3858, 3876, 3894, 3912, 3930, 3948, 3966, 3984, 4002, 4020, 4038, 4056, 4074, 4092, 4110, 4128, 4146, 4164, 4182, 4200, 4218, 4236, 4254, 4272, 4290, 4308, 4326, 4344, 4362, 4380, 4398, 4416, 4434, 4452, 4470, 4488, 4506, 4524, 4542, 4560, 4578, 4596, 4614, 4632, 4650, 4668, 4686, 4704, 4722, 4740, 4758, 4776, 4794, 4812, 4830, 4848, 4866, 4884, 4902, 4920, 4938, 4956, 4974, 4992, 5010, 5028, 5046, 5064, 5082, 5100, 5118, 5136, 5154, 5172, 5190, 5208, 5226, 5244, 5262, 5280, 5298, 5316, 5334, 5352, 5370, 5388, 5406, 5424, 5442, 5460, 5478, 5496, 5514, 5532, 5550, 5568, 5586, 5604, 5622, 5640, 5658, 5676, 5694, 5712, 5730, 5748, 5766, 5784, 5802, 5820, 5838, 5856, 5874, 5892, 5910, 5928, 5946, 5964, 5982, 6000, 6018, 6036, 6054, 6072, 6090, 6108, 6126, 6144, 6162, 6180, 6198, 6216, 6234, 6252, 6270, 6288, 6306, 6324, 6342, 6360, 6378, 6396, 6414, 6432, 6450, 6468, 7, 25, 43, 61, 79, 97, 115, 133, 151, 169, 187, 205, 223, 241, 259, 277, 295, 313, 331, 349, 367, 385, 403, 421, 439, 457, 475, 493, 511, 529, 547, 565, 583, 601, 619, 637, 655, 673, 691, 709, 727, 745, 763, 781, 799, 817, 835, 853, 871, 889, 907, 925, 943, 961, 979, 997, 1015, 1033, 1051, 1069, 1087, 1105, 1123, 1141, 1159, 1177, 1195, 1213, 1231, 1249, 1267, 1285, 1303, 1321, 1339, 1357, 1375, 1393, 1411, 1429, 1447, 1465, 1483, 1501, 1519, 1537, 1555, 1573, 1591, 1609, 1627, 1645, 1663, 1681, 1699, 1717, 1735, 1753, 1771, 1789, 1807, 1825, 1843, 1861, 1879, 1897, 1915, 1933, 1951, 1969, 1987, 2005, 2023, 2041, 2059, 2077, 2095, 2113, 2131, 2149, 2167, 2185, 2203, 2221, 2239, 2257, 2275, 2293, 2311, 2329, 2347, 2365, 2383, 2401, 2419, 2437, 2455, 2473, 2491, 2509, 2527, 2545, 2563, 2581, 2599, 2617, 2635, 2653, 2671, 2689, 2707, 2725, 2743, 2761, 2779, 2797, 2815, 2833, 2851, 2869, 2887, 2905, 2923, 2941, 2959, 2977, 2995, 3013, 3031, 3049, 3067, 3085, 3103, 3121, 3139, 3157, 3175, 3193, 3211, 3229, 3247, 3265, 3283, 3301, 3319, 3337, 3355, 3373, 3391, 3409, 3427, 3445, 3463, 3481, 3499, 3517, 3535, 3553, 3571, 3589, 3607, 3625, 3643, 3661, 3679, 3697, 3715, 3733, 3751, 3769, 3787, 3805, 3823, 3841, 3859, 3877, 3895, 3913, 3931, 3949, 3967, 3985, 4003, 4021, 4039, 4057, 4075, 4093, 4111, 4129, 4147, 4165, 4183, 4201, 4219, 4237, 4255, 4273, 4291, 4309, 4327, 4345, 4363, 4381, 4399, 4417, 4435, 4453, 4471, 4489, 4507, 4525, 4543, 4561, 4579, 4597, 4615, 4633, 4651, 4669, 4687, 4705, 4723, 4741, 4759, 4777, 4795, 4813, 4831, 4849, 4867, 4885, 4903, 4921, 4939, 4957, 4975, 4993, 5011, 5029, 5047, 5065, 5083, 5101, 5119, 5137, 5155, 5173, 5191, 5209, 5227, 5245, 5263, 5281, 5299, 5317, 5335, 5353, 5371, 5389, 5407, 5425, 5443, 5461, 5479, 5497, 5515, 5533, 5551, 5569, 5587, 5605, 5623, 5641, 5659, 5677, 5695, 5713, 5731, 5749, 5767, 5785, 5803, 5821, 5839, 5857, 5875, 5893, 5911, 5929, 5947, 5965, 5983, 6001, 6019, 6037, 6055, 6073, 6091, 6109, 6127, 6145, 6163, 6181, 6199, 6217, 6235, 6253, 6271, 6289, 6307, 6325, 6343, 6361, 6379, 6397, 6415, 6433, 6451, 6469, 8, 26, 44, 62, 80, 98, 116, 134, 152, 170, 188, 206, 224, 242, 260, 278, 296, 314, 332, 350, 368, 386, 404, 422, 440, 458, 476, 494, 512, 530, 548, 566, 584, 602, 620, 638, 656, 674, 692, 710, 728, 746, 764, 782, 800, 818, 836, 854, 872, 890, 908, 926, 944, 962, 980, 998, 1016, 1034, 1052, 1070, 1088, 1106, 1124, 1142, 1160, 1178, 1196, 1214, 1232, 1250, 1268, 1286, 1304, 1322, 1340, 1358, 1376, 1394, 1412, 1430, 1448, 1466, 1484, 1502, 1520, 1538, 1556, 1574, 1592, 1610, 1628, 1646, 1664, 1682, 1700, 1718, 1736, 1754, 1772, 1790, 1808, 1826, 1844, 1862, 1880, 1898, 1916, 1934, 1952, 1970, 1988, 2006, 2024, 2042, 2060, 2078, 2096, 2114, 2132, 2150, 2168, 2186, 2204, 2222, 2240, 2258, 2276, 2294, 2312, 2330, 2348, 2366, 2384, 2402, 2420, 2438, 2456, 2474, 2492, 2510, 2528, 2546, 2564, 2582, 2600, 2618, 2636, 2654, 2672, 2690, 2708, 2726, 2744, 2762, 2780, 2798, 2816, 2834, 2852, 2870, 2888, 2906, 2924, 2942, 2960, 2978, 2996, 3014, 3032, 3050, 3068, 3086, 3104, 3122, 3140, 3158, 3176, 3194, 3212, 3230, 3248, 3266, 3284, 3302, 3320, 3338, 3356, 3374, 3392, 3410, 3428, 3446, 3464, 3482, 3500, 3518, 3536, 3554, 3572, 3590, 3608, 3626, 3644, 3662, 3680, 3698, 3716, 3734, 3752, 3770, 3788, 3806, 3824, 3842, 3860, 3878, 3896, 3914, 3932, 3950, 3968, 3986, 4004, 4022, 4040, 4058, 4076, 4094, 4112, 4130, 4148, 4166, 4184, 4202, 4220, 4238, 4256, 4274, 4292, 4310, 4328, 4346, 4364, 4382, 4400, 4418, 4436, 4454, 4472, 4490, 4508, 4526, 4544, 4562, 4580, 4598, 4616, 4634, 4652, 4670, 4688, 4706, 4724, 4742, 4760, 4778, 4796, 4814, 4832, 4850, 4868, 4886, 4904, 4922, 4940, 4958, 4976, 4994, 5012, 5030, 5048, 5066, 5084, 5102, 5120, 5138, 5156, 5174, 5192, 5210, 5228, 5246, 5264, 5282, 5300, 5318, 5336, 5354, 5372, 5390, 5408, 5426, 5444, 5462, 5480, 5498, 5516, 5534, 5552, 5570, 5588, 5606, 5624, 5642, 5660, 5678, 5696, 5714, 5732, 5750, 5768, 5786, 5804, 5822, 5840, 5858, 5876, 5894, 5912, 5930, 5948, 5966, 5984, 6002, 6020, 6038, 6056, 6074, 6092, 6110, 6128, 6146, 6164, 6182, 6200, 6218, 6236, 6254, 6272, 6290, 6308, 6326, 6344, 6362, 6380, 6398, 6416, 6434, 6452, 6470, 9, 27, 45, 63, 81, 99, 117, 135, 153, 171, 189, 207, 225, 243, 261, 279, 297, 315, 333, 351, 369, 387, 405, 423, 441, 459, 477, 495, 513, 531, 549, 567, 585, 603, 621, 639, 657, 675, 693, 711, 729, 747, 765, 783, 801, 819, 837, 855, 873, 891, 909, 927, 945, 963, 981, 999, 1017, 1035, 1053, 1071, 1089, 1107, 1125, 1143, 1161, 1179, 1197, 1215, 1233, 1251, 1269, 1287, 1305, 1323, 1341, 1359, 1377, 1395, 1413, 1431, 1449, 1467, 1485, 1503, 1521, 1539, 1557, 1575, 1593, 1611, 1629, 1647, 1665, 1683, 1701, 1719, 1737, 1755, 1773, 1791, 1809, 1827, 1845, 1863, 1881, 1899, 1917, 1935, 1953, 1971, 1989, 2007, 2025, 2043, 2061, 2079, 2097, 2115, 2133, 2151, 2169, 2187, 2205, 2223, 2241, 2259, 2277, 2295, 2313, 2331, 2349, 2367, 2385, 2403, 2421, 2439, 2457, 2475, 2493, 2511, 2529, 2547, 2565, 2583, 2601, 2619, 2637, 2655, 2673, 2691, 2709, 2727, 2745, 2763, 2781, 2799, 2817, 2835, 2853, 2871, 2889, 2907, 2925, 2943, 2961, 2979, 2997, 3015, 3033, 3051, 3069, 3087, 3105, 3123, 3141, 3159, 3177, 3195, 3213, 3231, 3249, 3267, 3285, 3303, 3321, 3339, 3357, 3375, 3393, 3411, 3429, 3447, 3465, 3483, 3501, 3519, 3537, 3555, 3573, 3591, 3609, 3627, 3645, 3663, 3681, 3699, 3717, 3735, 3753, 3771, 3789, 3807, 3825, 3843, 3861, 3879, 3897, 3915, 3933, 3951, 3969, 3987, 4005, 4023, 4041, 4059, 4077, 4095, 4113, 4131, 4149, 4167, 4185, 4203, 4221, 4239, 4257, 4275, 4293, 4311, 4329, 4347, 4365, 4383, 4401, 4419, 4437, 4455, 4473, 4491, 4509, 4527, 4545, 4563, 4581, 4599, 4617, 4635, 4653, 4671, 4689, 4707, 4725, 4743, 4761, 4779, 4797, 4815, 4833, 4851, 4869, 4887, 4905, 4923, 4941, 4959, 4977, 4995, 5013, 5031, 5049, 5067, 5085, 5103, 5121, 5139, 5157, 5175, 5193, 5211, 5229, 5247, 5265, 5283, 5301, 5319, 5337, 5355, 5373, 5391, 5409, 5427, 5445, 5463, 5481, 5499, 5517, 5535, 5553, 5571, 5589, 5607, 5625, 5643, 5661, 5679, 5697, 5715, 5733, 5751, 5769, 5787, 5805, 5823, 5841, 5859, 5877, 5895, 5913, 5931, 5949, 5967, 5985, 6003, 6021, 6039, 6057, 6075, 6093, 6111, 6129, 6147, 6165, 6183, 6201, 6219, 6237, 6255, 6273, 6291, 6309, 6327, 6345, 6363, 6381, 6399, 6417, 6435, 6453, 6471, 10, 28, 46, 64, 82, 100, 118, 136, 154, 172, 190, 208, 226, 244, 262, 280, 298, 316, 334, 352, 370, 388, 406, 424, 442, 460, 478, 496, 514, 532, 550, 568, 586, 604, 622, 640, 658, 676, 694, 712, 730, 748, 766, 784, 802, 820, 838, 856, 874, 892, 910, 928, 946, 964, 982, 1000, 1018, 1036, 1054, 1072, 1090, 1108, 1126, 1144, 1162, 1180, 1198, 1216, 1234, 1252, 1270, 1288, 1306, 1324, 1342, 1360, 1378, 1396, 1414, 1432, 1450, 1468, 1486, 1504, 1522, 1540, 1558, 1576, 1594, 1612, 1630, 1648, 1666, 1684, 1702, 1720, 1738, 1756, 1774, 1792, 1810, 1828, 1846, 1864, 1882, 1900, 1918, 1936, 1954, 1972, 1990, 2008, 2026, 2044, 2062, 2080, 2098, 2116, 2134, 2152, 2170, 2188, 2206, 2224, 2242, 2260, 2278, 2296, 2314, 2332, 2350, 2368, 2386, 2404, 2422, 2440, 2458, 2476, 2494, 2512, 2530, 2548, 2566, 2584, 2602, 2620, 2638, 2656, 2674, 2692, 2710, 2728, 2746, 2764, 2782, 2800, 2818, 2836, 2854, 2872, 2890, 2908, 2926, 2944, 2962, 2980, 2998, 3016, 3034, 3052, 3070, 3088, 3106, 3124, 3142, 3160, 3178, 3196, 3214, 3232, 3250, 3268, 3286, 3304, 3322, 3340, 3358, 3376, 3394, 3412, 3430, 3448, 3466, 3484, 3502, 3520, 3538, 3556, 3574, 3592, 3610, 3628, 3646, 3664, 3682, 3700, 3718, 3736, 3754, 3772, 3790, 3808, 3826, 3844, 3862, 3880, 3898, 3916, 3934, 3952, 3970, 3988, 4006, 4024, 4042, 4060, 4078, 4096, 4114, 4132, 4150, 4168, 4186, 4204, 4222, 4240, 4258, 4276, 4294, 4312, 4330, 4348, 4366, 4384, 4402, 4420, 4438, 4456, 4474, 4492, 4510, 4528, 4546, 4564, 4582, 4600, 4618, 4636, 4654, 4672, 4690, 4708, 4726, 4744, 4762, 4780, 4798, 4816, 4834, 4852, 4870, 4888, 4906, 4924, 4942, 4960, 4978, 4996, 5014, 5032, 5050, 5068, 5086, 5104, 5122, 5140, 5158, 5176, 5194, 5212, 5230, 5248, 5266, 5284, 5302, 5320, 5338, 5356, 5374, 5392, 5410, 5428, 5446, 5464, 5482, 5500, 5518, 5536, 5554, 5572, 5590, 5608, 5626, 5644, 5662, 5680, 5698, 5716, 5734, 5752, 5770, 5788, 5806, 5824, 5842, 5860, 5878, 5896, 5914, 5932, 5950, 5968, 5986, 6004, 6022, 6040, 6058, 6076, 6094, 6112, 6130, 6148, 6166, 6184, 6202, 6220, 6238, 6256, 6274, 6292, 6310, 6328, 6346, 6364, 6382, 6400, 6418, 6436, 6454, 6472, 11, 29, 47, 65, 83, 101, 119, 137, 155, 173, 191, 209, 227, 245, 263, 281, 299, 317, 335, 353, 371, 389, 407, 425, 443, 461, 479, 497, 515, 533, 551, 569, 587, 605, 623, 641, 659, 677, 695, 713, 731, 749, 767, 785, 803, 821, 839, 857, 875, 893, 911, 929, 947, 965, 983, 1001, 1019, 1037, 1055, 1073, 1091, 1109, 1127, 1145, 1163, 1181, 1199, 1217, 1235, 1253, 1271, 1289, 1307, 1325, 1343, 1361, 1379, 1397, 1415, 1433, 1451, 1469, 1487, 1505, 1523, 1541, 1559, 1577, 1595, 1613, 1631, 1649, 1667, 1685, 1703, 1721, 1739, 1757, 1775, 1793, 1811, 1829, 1847, 1865, 1883, 1901, 1919, 1937, 1955, 1973, 1991, 2009, 2027, 2045, 2063, 2081, 2099, 2117, 2135, 2153, 2171, 2189, 2207, 2225, 2243, 2261, 2279, 2297, 2315, 2333, 2351, 2369, 2387, 2405, 2423, 2441, 2459, 2477, 2495, 2513, 2531, 2549, 2567, 2585, 2603, 2621, 2639, 2657, 2675, 2693, 2711, 2729, 2747, 2765, 2783, 2801, 2819, 2837, 2855, 2873, 2891, 2909, 2927, 2945, 2963, 2981, 2999, 3017, 3035, 3053, 3071, 3089, 3107, 3125, 3143, 3161, 3179, 3197, 3215, 3233, 3251, 3269, 3287, 3305, 3323, 3341, 3359, 3377, 3395, 3413, 3431, 3449, 3467, 3485, 3503, 3521, 3539, 3557, 3575, 3593, 3611, 3629, 3647, 3665, 3683, 3701, 3719, 3737, 3755, 3773, 3791, 3809, 3827, 3845, 3863, 3881, 3899, 3917, 3935, 3953, 3971, 3989, 4007, 4025, 4043, 4061, 4079, 4097, 4115, 4133, 4151, 4169, 4187, 4205, 4223, 4241, 4259, 4277, 4295, 4313, 4331, 4349, 4367, 4385, 4403, 4421, 4439, 4457, 4475, 4493, 4511, 4529, 4547, 4565, 4583, 4601, 4619, 4637, 4655, 4673, 4691, 4709, 4727, 4745, 4763, 4781, 4799, 4817, 4835, 4853, 4871, 4889, 4907, 4925, 4943, 4961, 4979, 4997, 5015, 5033, 5051, 5069, 5087, 5105, 5123, 5141, 5159, 5177, 5195, 5213, 5231, 5249, 5267, 5285, 5303, 5321, 5339, 5357, 5375, 5393, 5411, 5429, 5447, 5465, 5483, 5501, 5519, 5537, 5555, 5573, 5591, 5609, 5627, 5645, 5663, 5681, 5699, 5717, 5735, 5753, 5771, 5789, 5807, 5825, 5843, 5861, 5879, 5897, 5915, 5933, 5951, 5969, 5987, 6005, 6023, 6041, 6059, 6077, 6095, 6113, 6131, 6149, 6167, 6185, 6203, 6221, 6239, 6257, 6275, 6293, 6311, 6329, 6347, 6365, 6383, 6401, 6419, 6437, 6455, 6473, 12, 30, 48, 66, 84, 102, 120, 138, 156, 174, 192, 210, 228, 246, 264, 282, 300, 318, 336, 354, 372, 390, 408, 426, 444, 462, 480, 498, 516, 534, 552, 570, 588, 606, 624, 642, 660, 678, 696, 714, 732, 750, 768, 786, 804, 822, 840, 858, 876, 894, 912, 930, 948, 966, 984, 1002, 1020, 1038, 1056, 1074, 1092, 1110, 1128, 1146, 1164, 1182, 1200, 1218, 1236, 1254, 1272, 1290, 1308, 1326, 1344, 1362, 1380, 1398, 1416, 1434, 1452, 1470, 1488, 1506, 1524, 1542, 1560, 1578, 1596, 1614, 1632, 1650, 1668, 1686, 1704, 1722, 1740, 1758, 1776, 1794, 1812, 1830, 1848, 1866, 1884, 1902, 1920, 1938, 1956, 1974, 1992, 2010, 2028, 2046, 2064, 2082, 2100, 2118, 2136, 2154, 2172, 2190, 2208, 2226, 2244, 2262, 2280, 2298, 2316, 2334, 2352, 2370, 2388, 2406, 2424, 2442, 2460, 2478, 2496, 2514, 2532, 2550, 2568, 2586, 2604, 2622, 2640, 2658, 2676, 2694, 2712, 2730, 2748, 2766, 2784, 2802, 2820, 2838, 2856, 2874, 2892, 2910, 2928, 2946, 2964, 2982, 3000, 3018, 3036, 3054, 3072, 3090, 3108, 3126, 3144, 3162, 3180, 3198, 3216, 3234, 3252, 3270, 3288, 3306, 3324, 3342, 3360, 3378, 3396, 3414, 3432, 3450, 3468, 3486, 3504, 3522, 3540, 3558, 3576, 3594, 3612, 3630, 3648, 3666, 3684, 3702, 3720, 3738, 3756, 3774, 3792, 3810, 3828, 3846, 3864, 3882, 3900, 3918, 3936, 3954, 3972, 3990, 4008, 4026, 4044, 4062, 4080, 4098, 4116, 4134, 4152, 4170, 4188, 4206, 4224, 4242, 4260, 4278, 4296, 4314, 4332, 4350, 4368, 4386, 4404, 4422, 4440, 4458, 4476, 4494, 4512, 4530, 4548, 4566, 4584, 4602, 4620, 4638, 4656, 4674, 4692, 4710, 4728, 4746, 4764, 4782, 4800, 4818, 4836, 4854, 4872, 4890, 4908, 4926, 4944, 4962, 4980, 4998, 5016, 5034, 5052, 5070, 5088, 5106, 5124, 5142, 5160, 5178, 5196, 5214, 5232, 5250, 5268, 5286, 5304, 5322, 5340, 5358, 5376, 5394, 5412, 5430, 5448, 5466, 5484, 5502, 5520, 5538, 5556, 5574, 5592, 5610, 5628, 5646, 5664, 5682, 5700, 5718, 5736, 5754, 5772, 5790, 5808, 5826, 5844, 5862, 5880, 5898, 5916, 5934, 5952, 5970, 5988, 6006, 6024, 6042, 6060, 6078, 6096, 6114, 6132, 6150, 6168, 6186, 6204, 6222, 6240, 6258, 6276, 6294, 6312, 6330, 6348, 6366, 6384, 6402, 6420, 6438, 6456, 6474, 13, 31, 49, 67, 85, 103, 121, 139, 157, 175, 193, 211, 229, 247, 265, 283, 301, 319, 337, 355, 373, 391, 409, 427, 445, 463, 481, 499, 517, 535, 553, 571, 589, 607, 625, 643, 661, 679, 697, 715, 733, 751, 769, 787, 805, 823, 841, 859, 877, 895, 913, 931, 949, 967, 985, 1003, 1021, 1039, 1057, 1075, 1093, 1111, 1129, 1147, 1165, 1183, 1201, 1219, 1237, 1255, 1273, 1291, 1309, 1327, 1345, 1363, 1381, 1399, 1417, 1435, 1453, 1471, 1489, 1507, 1525, 1543, 1561, 1579, 1597, 1615, 1633, 1651, 1669, 1687, 1705, 1723, 1741, 1759, 1777, 1795, 1813, 1831, 1849, 1867, 1885, 1903, 1921, 1939, 1957, 1975, 1993, 2011, 2029, 2047, 2065, 2083, 2101, 2119, 2137, 2155, 2173, 2191, 2209, 2227, 2245, 2263, 2281, 2299, 2317, 2335, 2353, 2371, 2389, 2407, 2425, 2443, 2461, 2479, 2497, 2515, 2533, 2551, 2569, 2587, 2605, 2623, 2641, 2659, 2677, 2695, 2713, 2731, 2749, 2767, 2785, 2803, 2821, 2839, 2857, 2875, 2893, 2911, 2929, 2947, 2965, 2983, 3001, 3019, 3037, 3055, 3073, 3091, 3109, 3127, 3145, 3163, 3181, 3199, 3217, 3235, 3253, 3271, 3289, 3307, 3325, 3343, 3361, 3379, 3397, 3415, 3433, 3451, 3469, 3487, 3505, 3523, 3541, 3559, 3577, 3595, 3613, 3631, 3649, 3667, 3685, 3703, 3721, 3739, 3757, 3775, 3793, 3811, 3829, 3847, 3865, 3883, 3901, 3919, 3937, 3955, 3973, 3991, 4009, 4027, 4045, 4063, 4081, 4099, 4117, 4135, 4153, 4171, 4189, 4207, 4225, 4243, 4261, 4279, 4297, 4315, 4333, 4351, 4369, 4387, 4405, 4423, 4441, 4459, 4477, 4495, 4513, 4531, 4549, 4567, 4585, 4603, 4621, 4639, 4657, 4675, 4693, 4711, 4729, 4747, 4765, 4783, 4801, 4819, 4837, 4855, 4873, 4891, 4909, 4927, 4945, 4963, 4981, 4999, 5017, 5035, 5053, 5071, 5089, 5107, 5125, 5143, 5161, 5179, 5197, 5215, 5233, 5251, 5269, 5287, 5305, 5323, 5341, 5359, 5377, 5395, 5413, 5431, 5449, 5467, 5485, 5503, 5521, 5539, 5557, 5575, 5593, 5611, 5629, 5647, 5665, 5683, 5701, 5719, 5737, 5755, 5773, 5791, 5809, 5827, 5845, 5863, 5881, 5899, 5917, 5935, 5953, 5971, 5989, 6007, 6025, 6043, 6061, 6079, 6097, 6115, 6133, 6151, 6169, 6187, 6205, 6223, 6241, 6259, 6277, 6295, 6313, 6331, 6349, 6367, 6385, 6403, 6421, 6439, 6457, 6475, 14, 32, 50, 68, 86, 104, 122, 140, 158, 176, 194, 212, 230, 248, 266, 284, 302, 320, 338, 356, 374, 392, 410, 428, 446, 464, 482, 500, 518, 536, 554, 572, 590, 608, 626, 644, 662, 680, 698, 716, 734, 752, 770, 788, 806, 824, 842, 860, 878, 896, 914, 932, 950, 968, 986, 1004, 1022, 1040, 1058, 1076, 1094, 1112, 1130, 1148, 1166, 1184, 1202, 1220, 1238, 1256, 1274, 1292, 1310, 1328, 1346, 1364, 1382, 1400, 1418, 1436, 1454, 1472, 1490, 1508, 1526, 1544, 1562, 1580, 1598, 1616, 1634, 1652, 1670, 1688, 1706, 1724, 1742, 1760, 1778, 1796, 1814, 1832, 1850, 1868, 1886, 1904, 1922, 1940, 1958, 1976, 1994, 2012, 2030, 2048, 2066, 2084, 2102, 2120, 2138, 2156, 2174, 2192, 2210, 2228, 2246, 2264, 2282, 2300, 2318, 2336, 2354, 2372, 2390, 2408, 2426, 2444, 2462, 2480, 2498, 2516, 2534, 2552, 2570, 2588, 2606, 2624, 2642, 2660, 2678, 2696, 2714, 2732, 2750, 2768, 2786, 2804, 2822, 2840, 2858, 2876, 2894, 2912, 2930, 2948, 2966, 2984, 3002, 3020, 3038, 3056, 3074, 3092, 3110, 3128, 3146, 3164, 3182, 3200, 3218, 3236, 3254, 3272, 3290, 3308, 3326, 3344, 3362, 3380, 3398, 3416, 3434, 3452, 3470, 3488, 3506, 3524, 3542, 3560, 3578, 3596, 3614, 3632, 3650, 3668, 3686, 3704, 3722, 3740, 3758, 3776, 3794, 3812, 3830, 3848, 3866, 3884, 3902, 3920, 3938, 3956, 3974, 3992, 4010, 4028, 4046, 4064, 4082, 4100, 4118, 4136, 4154, 4172, 4190, 4208, 4226, 4244, 4262, 4280, 4298, 4316, 4334, 4352, 4370, 4388, 4406, 4424, 4442, 4460, 4478, 4496, 4514, 4532, 4550, 4568, 4586, 4604, 4622, 4640, 4658, 4676, 4694, 4712, 4730, 4748, 4766, 4784, 4802, 4820, 4838, 4856, 4874, 4892, 4910, 4928, 4946, 4964, 4982, 5000, 5018, 5036, 5054, 5072, 5090, 5108, 5126, 5144, 5162, 5180, 5198, 5216, 5234, 5252, 5270, 5288, 5306, 5324, 5342, 5360, 5378, 5396, 5414, 5432, 5450, 5468, 5486, 5504, 5522, 5540, 5558, 5576, 5594, 5612, 5630, 5648, 5666, 5684, 5702, 5720, 5738, 5756, 5774, 5792, 5810, 5828, 5846, 5864, 5882, 5900, 5918, 5936, 5954, 5972, 5990, 6008, 6026, 6044, 6062, 6080, 6098, 6116, 6134, 6152, 6170, 6188, 6206, 6224, 6242, 6260, 6278, 6296, 6314, 6332, 6350, 6368, 6386, 6404, 6422, 6440, 6458, 6476, 15, 33, 51, 69, 87, 105, 123, 141, 159, 177, 195, 213, 231, 249, 267, 285, 303, 321, 339, 357, 375, 393, 411, 429, 447, 465, 483, 501, 519, 537, 555, 573, 591, 609, 627, 645, 663, 681, 699, 717, 735, 753, 771, 789, 807, 825, 843, 861, 879, 897, 915, 933, 951, 969, 987, 1005, 1023, 1041, 1059, 1077, 1095, 1113, 1131, 1149, 1167, 1185, 1203, 1221, 1239, 1257, 1275, 1293, 1311, 1329, 1347, 1365, 1383, 1401, 1419, 1437, 1455, 1473, 1491, 1509, 1527, 1545, 1563, 1581, 1599, 1617, 1635, 1653, 1671, 1689, 1707, 1725, 1743, 1761, 1779, 1797, 1815, 1833, 1851, 1869, 1887, 1905, 1923, 1941, 1959, 1977, 1995, 2013, 2031, 2049, 2067, 2085, 2103, 2121, 2139, 2157, 2175, 2193, 2211, 2229, 2247, 2265, 2283, 2301, 2319, 2337, 2355, 2373, 2391, 2409, 2427, 2445, 2463, 2481, 2499, 2517, 2535, 2553, 2571, 2589, 2607, 2625, 2643, 2661, 2679, 2697, 2715, 2733, 2751, 2769, 2787, 2805, 2823, 2841, 2859, 2877, 2895, 2913, 2931, 2949, 2967, 2985, 3003, 3021, 3039, 3057, 3075, 3093, 3111, 3129, 3147, 3165, 3183, 3201, 3219, 3237, 3255, 3273, 3291, 3309, 3327, 3345, 3363, 3381, 3399, 3417, 3435, 3453, 3471, 3489, 3507, 3525, 3543, 3561, 3579, 3597, 3615, 3633, 3651, 3669, 3687, 3705, 3723, 3741, 3759, 3777, 3795, 3813, 3831, 3849, 3867, 3885, 3903, 3921, 3939, 3957, 3975, 3993, 4011, 4029, 4047, 4065, 4083, 4101, 4119, 4137, 4155, 4173, 4191, 4209, 4227, 4245, 4263, 4281, 4299, 4317, 4335, 4353, 4371, 4389, 4407, 4425, 4443, 4461, 4479, 4497, 4515, 4533, 4551, 4569, 4587, 4605, 4623, 4641, 4659, 4677, 4695, 4713, 4731, 4749, 4767, 4785, 4803, 4821, 4839, 4857, 4875, 4893, 4911, 4929, 4947, 4965, 4983, 5001, 5019, 5037, 5055, 5073, 5091, 5109, 5127, 5145, 5163, 5181, 5199, 5217, 5235, 5253, 5271, 5289, 5307, 5325, 5343, 5361, 5379, 5397, 5415, 5433, 5451, 5469, 5487, 5505, 5523, 5541, 5559, 5577, 5595, 5613, 5631, 5649, 5667, 5685, 5703, 5721, 5739, 5757, 5775, 5793, 5811, 5829, 5847, 5865, 5883, 5901, 5919, 5937, 5955, 5973, 5991, 6009, 6027, 6045, 6063, 6081, 6099, 6117, 6135, 6153, 6171, 6189, 6207, 6225, 6243, 6261, 6279, 6297, 6315, 6333, 6351, 6369, 6387, 6405, 6423, 6441, 6459, 6477, 16, 34, 52, 70, 88, 106, 124, 142, 160, 178, 196, 214, 232, 250, 268, 286, 304, 322, 340, 358, 376, 394, 412, 430, 448, 466, 484, 502, 520, 538, 556, 574, 592, 610, 628, 646, 664, 682, 700, 718, 736, 754, 772, 790, 808, 826, 844, 862, 880, 898, 916, 934, 952, 970, 988, 1006, 1024, 1042, 1060, 1078, 1096, 1114, 1132, 1150, 1168, 1186, 1204, 1222, 1240, 1258, 1276, 1294, 1312, 1330, 1348, 1366, 1384, 1402, 1420, 1438, 1456, 1474, 1492, 1510, 1528, 1546, 1564, 1582, 1600, 1618, 1636, 1654, 1672, 1690, 1708, 1726, 1744, 1762, 1780, 1798, 1816, 1834, 1852, 1870, 1888, 1906, 1924, 1942, 1960, 1978, 1996, 2014, 2032, 2050, 2068, 2086, 2104, 2122, 2140, 2158, 2176, 2194, 2212, 2230, 2248, 2266, 2284, 2302, 2320, 2338, 2356, 2374, 2392, 2410, 2428, 2446, 2464, 2482, 2500, 2518, 2536, 2554, 2572, 2590, 2608, 2626, 2644, 2662, 2680, 2698, 2716, 2734, 2752, 2770, 2788, 2806, 2824, 2842, 2860, 2878, 2896, 2914, 2932, 2950, 2968, 2986, 3004, 3022, 3040, 3058, 3076, 3094, 3112, 3130, 3148, 3166, 3184, 3202, 3220, 3238, 3256, 3274, 3292, 3310, 3328, 3346, 3364, 3382, 3400, 3418, 3436, 3454, 3472, 3490, 3508, 3526, 3544, 3562, 3580, 3598, 3616, 3634, 3652, 3670, 3688, 3706, 3724, 3742, 3760, 3778, 3796, 3814, 3832, 3850, 3868, 3886, 3904, 3922, 3940, 3958, 3976, 3994, 4012, 4030, 4048, 4066, 4084, 4102, 4120, 4138, 4156, 4174, 4192, 4210, 4228, 4246, 4264, 4282, 4300, 4318, 4336, 4354, 4372, 4390, 4408, 4426, 4444, 4462, 4480, 4498, 4516, 4534, 4552, 4570, 4588, 4606, 4624, 4642, 4660, 4678, 4696, 4714, 4732, 4750, 4768, 4786, 4804, 4822, 4840, 4858, 4876, 4894, 4912, 4930, 4948, 4966, 4984, 5002, 5020, 5038, 5056, 5074, 5092, 5110, 5128, 5146, 5164, 5182, 5200, 5218, 5236, 5254, 5272, 5290, 5308, 5326, 5344, 5362, 5380, 5398, 5416, 5434, 5452, 5470, 5488, 5506, 5524, 5542, 5560, 5578, 5596, 5614, 5632, 5650, 5668, 5686, 5704, 5722, 5740, 5758, 5776, 5794, 5812, 5830, 5848, 5866, 5884, 5902, 5920, 5938, 5956, 5974, 5992, 6010, 6028, 6046, 6064, 6082, 6100, 6118, 6136, 6154, 6172, 6190, 6208, 6226, 6244, 6262, 6280, 6298, 6316, 6334, 6352, 6370, 6388, 6406, 6424, 6442, 6460, 6478, 17, 35, 53, 71, 89, 107, 125, 143, 161, 179, 197, 215, 233, 251, 269, 287, 305, 323, 341, 359, 377, 395, 413, 431, 449, 467, 485, 503, 521, 539, 557, 575, 593, 611, 629, 647, 665, 683, 701, 719, 737, 755, 773, 791, 809, 827, 845, 863, 881, 899, 917, 935, 953, 971, 989, 1007, 1025, 1043, 1061, 1079, 1097, 1115, 1133, 1151, 1169, 1187, 1205, 1223, 1241, 1259, 1277, 1295, 1313, 1331, 1349, 1367, 1385, 1403, 1421, 1439, 1457, 1475, 1493, 1511, 1529, 1547, 1565, 1583, 1601, 1619, 1637, 1655, 1673, 1691, 1709, 1727, 1745, 1763, 1781, 1799, 1817, 1835, 1853, 1871, 1889, 1907, 1925, 1943, 1961, 1979, 1997, 2015, 2033, 2051, 2069, 2087, 2105, 2123, 2141, 2159, 2177, 2195, 2213, 2231, 2249, 2267, 2285, 2303, 2321, 2339, 2357, 2375, 2393, 2411, 2429, 2447, 2465, 2483, 2501, 2519, 2537, 2555, 2573, 2591, 2609, 2627, 2645, 2663, 2681, 2699, 2717, 2735, 2753, 2771, 2789, 2807, 2825, 2843, 2861, 2879, 2897, 2915, 2933, 2951, 2969, 2987, 3005, 3023, 3041, 3059, 3077, 3095, 3113, 3131, 3149, 3167, 3185, 3203, 3221, 3239, 3257, 3275, 3293, 3311, 3329, 3347, 3365, 3383, 3401, 3419, 3437, 3455, 3473, 3491, 3509, 3527, 3545, 3563, 3581, 3599, 3617, 3635, 3653, 3671, 3689, 3707, 3725, 3743, 3761, 3779, 3797, 3815, 3833, 3851, 3869, 3887, 3905, 3923, 3941, 3959, 3977, 3995, 4013, 4031, 4049, 4067, 4085, 4103, 4121, 4139, 4157, 4175, 4193, 4211, 4229, 4247, 4265, 4283, 4301, 4319, 4337, 4355, 4373, 4391, 4409, 4427, 4445, 4463, 4481, 4499, 4517, 4535, 4553, 4571, 4589, 4607, 4625, 4643, 4661, 4679, 4697, 4715, 4733, 4751, 4769, 4787, 4805, 4823, 4841, 4859, 4877, 4895, 4913, 4931, 4949, 4967, 4985, 5003, 5021, 5039, 5057, 5075, 5093, 5111, 5129, 5147, 5165, 5183, 5201, 5219, 5237, 5255, 5273, 5291, 5309, 5327, 5345, 5363, 5381, 5399, 5417, 5435, 5453, 5471, 5489, 5507, 5525, 5543, 5561, 5579, 5597, 5615, 5633, 5651, 5669, 5687, 5705, 5723, 5741, 5759, 5777, 5795, 5813, 5831, 5849, 5867, 5885, 5903, 5921, 5939, 5957, 5975, 5993, 6011, 6029, 6047, 6065, 6083, 6101, 6119, 6137, 6155, 6173, 6191, 6209, 6227, 6245, 6263, 6281, 6299, 6317, 6335, 6353, 6371, 6389, 6407, 6425, 6443, 6461, 6479, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198, 216, 234, 252, 270, 288, 306, 324, 342, 360, 378, 396, 414, 432, 450, 468, 486, 504, 522, 540, 558, 576, 594, 612, 630, 648, 666, 684, 702, 720, 738, 756, 774, 792, 810, 828, 846, 864, 882, 900, 918, 936, 954, 972, 990, 1008, 1026, 1044, 1062, 1080, 1098, 1116, 1134, 1152, 1170, 1188, 1206, 1224, 1242, 1260, 1278, 1296, 1314, 1332, 1350, 1368, 1386, 1404, 1422, 1440, 1458, 1476, 1494, 1512, 1530, 1548, 1566, 1584, 1602, 1620, 1638, 1656, 1674, 1692, 1710, 1728, 1746, 1764, 1782, 1800, 1818, 1836, 1854, 1872, 1890, 1908, 1926, 1944, 1962, 1980, 1998, 2016, 2034, 2052, 2070, 2088, 2106, 2124, 2142, 2160, 2178, 2196, 2214, 2232, 2250, 2268, 2286, 2304, 2322, 2340, 2358, 2376, 2394, 2412, 2430, 2448, 2466, 2484, 2502, 2520, 2538, 2556, 2574, 2592, 2610, 2628, 2646, 2664, 2682, 2700, 2718, 2736, 2754, 2772, 2790, 2808, 2826, 2844, 2862, 2880, 2898, 2916, 2934, 2952, 2970, 2988, 3006, 3024, 3042, 3060, 3078, 3096, 3114, 3132, 3150, 3168, 3186, 3204, 3222, 3240, 3258, 3276, 3294, 3312, 3330, 3348, 3366, 3384, 3402, 3420, 3438, 3456, 3474, 3492, 3510, 3528, 3546, 3564, 3582, 3600, 3618, 3636, 3654, 3672, 3690, 3708, 3726, 3744, 3762, 3780, 3798, 3816, 3834, 3852, 3870, 3888, 3906, 3924, 3942, 3960, 3978, 3996, 4014, 4032, 4050, 4068, 4086, 4104, 4122, 4140, 4158, 4176, 4194, 4212, 4230, 4248, 4266, 4284, 4302, 4320, 4338, 4356, 4374, 4392, 4410, 4428, 4446, 4464, 4482, 4500, 4518, 4536, 4554, 4572, 4590, 4608, 4626, 4644, 4662, 4680, 4698, 4716, 4734, 4752, 4770, 4788, 4806, 4824, 4842, 4860, 4878, 4896, 4914, 4932, 4950, 4968, 4986, 5004, 5022, 5040, 5058, 5076, 5094, 5112, 5130, 5148, 5166, 5184, 5202, 5220, 5238, 5256, 5274, 5292, 5310, 5328, 5346, 5364, 5382, 5400, 5418, 5436, 5454, 5472, 5490, 5508, 5526, 5544, 5562, 5580, 5598, 5616, 5634, 5652, 5670, 5688, 5706, 5724, 5742, 5760, 5778, 5796, 5814, 5832, 5850, 5868, 5886, 5904, 5922, 5940, 5958, 5976, 5994, 6012, 6030, 6048, 6066, 6084, 6102, 6120, 6138, 6156, 6174, 6192, 6210, 6228, 6246, 6264, 6282, 6300, 6318, 6336, 6354, 6372, 6390, 6408, 6426, 6444, 6462, 6480, 5714, 5732, 5750, 5768, 5786, 5804, 5822, 5840, 5858, 5876, 5894, 5912, 5930, 5948, 5966, 5984, 6002, 6020, 6038, 6056, 6074, 6092, 6110, 6128, 6146, 6164, 6182, 6200, 6218, 6236, 6254, 6272, 6290, 6308, 6326, 6344, 6362, 6380, 6398, 6416, 6434, 6452, 6470, 8, 26, 44, 62, 80, 98, 116, 134, 152, 170, 188, 206, 224, 242, 260, 278, 296, 314, 332, 350, 368, 386, 404, 422, 440, 458, 476, 494, 512, 530, 548, 566, 584, 602, 620, 638, 656, 674, 692, 710, 728, 746, 764, 782, 800, 818, 836, 854, 872, 890, 908, 926, 944, 962, 980, 998, 1016, 1034, 1052, 1070, 1088, 1106, 1124, 1142, 1160, 1178, 1196, 1214, 1232, 1250, 1268, 1286, 1304, 1322, 1340, 1358, 1376, 1394, 1412, 1430, 1448, 1466, 1484, 1502, 1520, 1538, 1556, 1574, 1592, 1610, 1628, 1646, 1664, 1682, 1700, 1718, 1736, 1754, 1772, 1790, 1808, 1826, 1844, 1862, 1880, 1898, 1916, 1934, 1952, 1970, 1988, 2006, 2024, 2042, 2060, 2078, 2096, 2114, 2132, 2150, 2168, 2186, 2204, 2222, 2240, 2258, 2276, 2294, 2312, 2330, 2348, 2366, 2384, 2402, 2420, 2438, 2456, 2474, 2492, 2510, 2528, 2546, 2564, 2582, 2600, 2618, 2636, 2654, 2672, 2690, 2708, 2726, 2744, 2762, 2780, 2798, 2816, 2834, 2852, 2870, 2888, 2906, 2924, 2942, 2960, 2978, 2996, 3014, 3032, 3050, 3068, 3086, 3104, 3122, 3140, 3158, 3176, 3194, 3212, 3230, 3248, 3266, 3284, 3302, 3320, 3338, 3356, 3374, 3392, 3410, 3428, 3446, 3464, 3482, 3500, 3518, 3536, 3554, 3572, 3590, 3608, 3626, 3644, 3662, 3680, 3698, 3716, 3734, 3752, 3770, 3788, 3806, 3824, 3842, 3860, 3878, 3896, 3914, 3932, 3950, 3968, 3986, 4004, 4022, 4040, 4058, 4076, 4094, 4112, 4130, 4148, 4166, 4184, 4202, 4220, 4238, 4256, 4274, 4292, 4310, 4328, 4346, 4364, 4382, 4400, 4418, 4436, 4454, 4472, 4490, 4508, 4526, 4544, 4562, 4580, 4598, 4616, 4634, 4652, 4670, 4688, 4706, 4724, 4742, 4760, 4778, 4796, 4814, 4832, 4850, 4868, 4886, 4904, 4922, 4940, 4958, 4976, 4994, 5012, 5030, 5048, 5066, 5084, 5102, 5120, 5138, 5156, 5174, 5192, 5210, 5228, 5246, 5264, 5282, 5300, 5318, 5336, 5354, 5372, 5390, 5408, 5426, 5444, 5462, 5480, 5498, 5516, 5534, 5552, 5570, 5588, 5606, 5624, 5642, 5660, 5678, 5696, 212, 230, 248, 266, 284, 302, 320, 338, 356, 374, 392, 410, 428, 446, 464, 482, 500, 518, 536, 554, 572, 590, 608, 626, 644, 662, 680, 698, 716, 734, 752, 770, 788, 806, 824, 842, 860, 878, 896, 914, 932, 950, 968, 986, 1004, 1022, 1040, 1058, 1076, 1094, 1112, 1130, 1148, 1166, 1184, 1202, 1220, 1238, 1256, 1274, 1292, 1310, 1328, 1346, 1364, 1382, 1400, 1418, 1436, 1454, 1472, 1490, 1508, 1526, 1544, 1562, 1580, 1598, 1616, 1634, 1652, 1670, 1688, 1706, 1724, 1742, 1760, 1778, 1796, 1814, 1832, 1850, 1868, 1886, 1904, 1922, 1940, 1958, 1976, 1994, 2012, 2030, 2048, 2066, 2084, 2102, 2120, 2138, 2156, 2174, 2192, 2210, 2228, 2246, 2264, 2282, 2300, 2318, 2336, 2354, 2372, 2390, 2408, 2426, 2444, 2462, 2480, 2498, 2516, 2534, 2552, 2570, 2588, 2606, 2624, 2642, 2660, 2678, 2696, 2714, 2732, 2750, 2768, 2786, 2804, 2822, 2840, 2858, 2876, 2894, 2912, 2930, 2948, 2966, 2984, 3002, 3020, 3038, 3056, 3074, 3092, 3110, 3128, 3146, 3164, 3182, 3200, 3218, 3236, 3254, 3272, 3290, 3308, 3326, 3344, 3362, 3380, 3398, 3416, 3434, 3452, 3470, 3488, 3506, 3524, 3542, 3560, 3578, 3596, 3614, 3632, 3650, 3668, 3686, 3704, 3722, 3740, 3758, 3776, 3794, 3812, 3830, 3848, 3866, 3884, 3902, 3920, 3938, 3956, 3974, 3992, 4010, 4028, 4046, 4064, 4082, 4100, 4118, 4136, 4154, 4172, 4190, 4208, 4226, 4244, 4262, 4280, 4298, 4316, 4334, 4352, 4370, 4388, 4406, 4424, 4442, 4460, 4478, 4496, 4514, 4532, 4550, 4568, 4586, 4604, 4622, 4640, 4658, 4676, 4694, 4712, 4730, 4748, 4766, 4784, 4802, 4820, 4838, 4856, 4874, 4892, 4910, 4928, 4946, 4964, 4982, 5000, 5018, 5036, 5054, 5072, 5090, 5108, 5126, 5144, 5162, 5180, 5198, 5216, 5234, 5252, 5270, 5288, 5306, 5324, 5342, 5360, 5378, 5396, 5414, 5432, 5450, 5468, 5486, 5504, 5522, 5540, 5558, 5576, 5594, 5612, 5630, 5648, 5666, 5684, 5702, 5720, 5738, 5756, 5774, 5792, 5810, 5828, 5846, 5864, 5882, 5900, 5918, 5936, 5954, 5972, 5990, 6008, 6026, 6044, 6062, 6080, 6098, 6116, 6134, 6152, 6170, 6188, 6206, 6224, 6242, 6260, 6278, 6296, 6314, 6332, 6350, 6368, 6386, 6404, 6422, 6440, 6458, 6476, 14, 32, 50, 68, 86, 104, 122, 140, 158, 176, 194, 4731, 4749, 4767, 4785, 4803, 4821, 4839, 4857, 4875, 4893, 4911, 4929, 4947, 4965, 4983, 5001, 5019, 5037, 5055, 5073, 5091, 5109, 5127, 5145, 5163, 5181, 5199, 5217, 5235, 5253, 5271, 5289, 5307, 5325, 5343, 5361, 5379, 5397, 5415, 5433, 5451, 5469, 5487, 5505, 5523, 5541, 5559, 5577, 5595, 5613, 5631, 5649, 5667, 5685, 5703, 5721, 5739, 5757, 5775, 5793, 5811, 5829, 5847, 5865, 5883, 5901, 5919, 5937, 5955, 5973, 5991, 6009, 6027, 6045, 6063, 6081, 6099, 6117, 6135, 6153, 6171, 6189, 6207, 6225, 6243, 6261, 6279, 6297, 6315, 6333, 6351, 6369, 6387, 6405, 6423, 6441, 6459, 6477, 15, 33, 51, 69, 87, 105, 123, 141, 159, 177, 195, 213, 231, 249, 267, 285, 303, 321, 339, 357, 375, 393, 411, 429, 447, 465, 483, 501, 519, 537, 555, 573, 591, 609, 627, 645, 663, 681, 699, 717, 735, 753, 771, 789, 807, 825, 843, 861, 879, 897, 915, 933, 951, 969, 987, 1005, 1023, 1041, 1059, 1077, 1095, 1113, 1131, 1149, 1167, 1185, 1203, 1221, 1239, 1257, 1275, 1293, 1311, 1329, 1347, 1365, 1383, 1401, 1419, 1437, 1455, 1473, 1491, 1509, 1527, 1545, 1563, 1581, 1599, 1617, 1635, 1653, 1671, 1689, 1707, 1725, 1743, 1761, 1779, 1797, 1815, 1833, 1851, 1869, 1887, 1905, 1923, 1941, 1959, 1977, 1995, 2013, 2031, 2049, 2067, 2085, 2103, 2121, 2139, 2157, 2175, 2193, 2211, 2229, 2247, 2265, 2283, 2301, 2319, 2337, 2355, 2373, 2391, 2409, 2427, 2445, 2463, 2481, 2499, 2517, 2535, 2553, 2571, 2589, 2607, 2625, 2643, 2661, 2679, 2697, 2715, 2733, 2751, 2769, 2787, 2805, 2823, 2841, 2859, 2877, 2895, 2913, 2931, 2949, 2967, 2985, 3003, 3021, 3039, 3057, 3075, 3093, 3111, 3129, 3147, 3165, 3183, 3201, 3219, 3237, 3255, 3273, 3291, 3309, 3327, 3345, 3363, 3381, 3399, 3417, 3435, 3453, 3471, 3489, 3507, 3525, 3543, 3561, 3579, 3597, 3615, 3633, 3651, 3669, 3687, 3705, 3723, 3741, 3759, 3777, 3795, 3813, 3831, 3849, 3867, 3885, 3903, 3921, 3939, 3957, 3975, 3993, 4011, 4029, 4047, 4065, 4083, 4101, 4119, 4137, 4155, 4173, 4191, 4209, 4227, 4245, 4263, 4281, 4299, 4317, 4335, 4353, 4371, 4389, 4407, 4425, 4443, 4461, 4479, 4497, 4515, 4533, 4551, 4569, 4587, 4605, 4623, 4641, 4659, 4677, 4695, 4713, 2064, 2082, 2100, 2118, 2136, 2154, 2172, 2190, 2208, 2226, 2244, 2262, 2280, 2298, 2316, 2334, 2352, 2370, 2388, 2406, 2424, 2442, 2460, 2478, 2496, 2514, 2532, 2550, 2568, 2586, 2604, 2622, 2640, 2658, 2676, 2694, 2712, 2730, 2748, 2766, 2784, 2802, 2820, 2838, 2856, 2874, 2892, 2910, 2928, 2946, 2964, 2982, 3000, 3018, 3036, 3054, 3072, 3090, 3108, 3126, 3144, 3162, 3180, 3198, 3216, 3234, 3252, 3270, 3288, 3306, 3324, 3342, 3360, 3378, 3396, 3414, 3432, 3450, 3468, 3486, 3504, 3522, 3540, 3558, 3576, 3594, 3612, 3630, 3648, 3666, 3684, 3702, 3720, 3738, 3756, 3774, 3792, 3810, 3828, 3846, 3864, 3882, 3900, 3918, 3936, 3954, 3972, 3990, 4008, 4026, 4044, 4062, 4080, 4098, 4116, 4134, 4152, 4170, 4188, 4206, 4224, 4242, 4260, 4278, 4296, 4314, 4332, 4350, 4368, 4386, 4404, 4422, 4440, 4458, 4476, 4494, 4512, 4530, 4548, 4566, 4584, 4602, 4620, 4638, 4656, 4674, 4692, 4710, 4728, 4746, 4764, 4782, 4800, 4818, 4836, 4854, 4872, 4890, 4908, 4926, 4944, 4962, 4980, 4998, 5016, 5034, 5052, 5070, 5088, 5106, 5124, 5142, 5160, 5178, 5196, 5214, 5232, 5250, 5268, 5286, 5304, 5322, 5340, 5358, 5376, 5394, 5412, 5430, 5448, 5466, 5484, 5502, 5520, 5538, 5556, 5574, 5592, 5610, 5628, 5646, 5664, 5682, 5700, 5718, 5736, 5754, 5772, 5790, 5808, 5826, 5844, 5862, 5880, 5898, 5916, 5934, 5952, 5970, 5988, 6006, 6024, 6042, 6060, 6078, 6096, 6114, 6132, 6150, 6168, 6186, 6204, 6222, 6240, 6258, 6276, 6294, 6312, 6330, 6348, 6366, 6384, 6402, 6420, 6438, 6456, 6474, 12, 30, 48, 66, 84, 102, 120, 138, 156, 174, 192, 210, 228, 246, 264, 282, 300, 318, 336, 354, 372, 390, 408, 426, 444, 462, 480, 498, 516, 534, 552, 570, 588, 606, 624, 642, 660, 678, 696, 714, 732, 750, 768, 786, 804, 822, 840, 858, 876, 894, 912, 930, 948, 966, 984, 1002, 1020, 1038, 1056, 1074, 1092, 1110, 1128, 1146, 1164, 1182, 1200, 1218, 1236, 1254, 1272, 1290, 1308, 1326, 1344, 1362, 1380, 1398, 1416, 1434, 1452, 1470, 1488, 1506, 1524, 1542, 1560, 1578, 1596, 1614, 1632, 1650, 1668, 1686, 1704, 1722, 1740, 1758, 1776, 1794, 1812, 1830, 1848, 1866, 1884, 1902, 1920, 1938, 1956, 1974, 1992, 2010, 2028, 2046, 2429, 2447, 2465, 2483, 2501, 2519, 2537, 2555, 2573, 2591, 2609, 2627, 2645, 2663, 2681, 2699, 2717, 2735, 2753, 2771, 2789, 2807, 2825, 2843, 2861, 2879, 2897, 2915, 2933, 2951, 2969, 2987, 3005, 3023, 3041, 3059, 3077, 3095, 3113, 3131, 3149, 3167, 3185, 3203, 3221, 3239, 3257, 3275, 3293, 3311, 3329, 3347, 3365, 3383, 3401, 3419, 3437, 3455, 3473, 3491, 3509, 3527, 3545, 3563, 3581, 3599, 3617, 3635, 3653, 3671, 3689, 3707, 3725, 3743, 3761, 3779, 3797, 3815, 3833, 3851, 3869, 3887, 3905, 3923, 3941, 3959, 3977, 3995, 4013, 4031, 4049, 4067, 4085, 4103, 4121, 4139, 4157, 4175, 4193, 4211, 4229, 4247, 4265, 4283, 4301, 4319, 4337, 4355, 4373, 4391, 4409, 4427, 4445, 4463, 4481, 4499, 4517, 4535, 4553, 4571, 4589, 4607, 4625, 4643, 4661, 4679, 4697, 4715, 4733, 4751, 4769, 4787, 4805, 4823, 4841, 4859, 4877, 4895, 4913, 4931, 4949, 4967, 4985, 5003, 5021, 5039, 5057, 5075, 5093, 5111, 5129, 5147, 5165, 5183, 5201, 5219, 5237, 5255, 5273, 5291, 5309, 5327, 5345, 5363, 5381, 5399, 5417, 5435, 5453, 5471, 5489, 5507, 5525, 5543, 5561, 5579, 5597, 5615, 5633, 5651, 5669, 5687, 5705, 5723, 5741, 5759, 5777, 5795, 5813, 5831, 5849, 5867, 5885, 5903, 5921, 5939, 5957, 5975, 5993, 6011, 6029, 6047, 6065, 6083, 6101, 6119, 6137, 6155, 6173, 6191, 6209, 6227, 6245, 6263, 6281, 6299, 6317, 6335, 6353, 6371, 6389, 6407, 6425, 6443, 6461, 6479, 17, 35, 53, 71, 89, 107, 125, 143, 161, 179, 197, 215, 233, 251, 269, 287, 305, 323, 341, 359, 377, 395, 413, 431, 449, 467, 485, 503, 521, 539, 557, 575, 593, 611, 629, 647, 665, 683, 701, 719, 737, 755, 773, 791, 809, 827, 845, 863, 881, 899, 917, 935, 953, 971, 989, 1007, 1025, 1043, 1061, 1079, 1097, 1115, 1133, 1151, 1169, 1187, 1205, 1223, 1241, 1259, 1277, 1295, 1313, 1331, 1349, 1367, 1385, 1403, 1421, 1439, 1457, 1475, 1493, 1511, 1529, 1547, 1565, 1583, 1601, 1619, 1637, 1655, 1673, 1691, 1709, 1727, 1745, 1763, 1781, 1799, 1817, 1835, 1853, 1871, 1889, 1907, 1925, 1943, 1961, 1979, 1997, 2015, 2033, 2051, 2069, 2087, 2105, 2123, 2141, 2159, 2177, 2195, 2213, 2231, 2249, 2267, 2285, 2303, 2321, 2339, 2357, 2375, 2393, 2411, 3082, 3100, 3118, 3136, 3154, 3172, 3190, 3208, 3226, 3244, 3262, 3280, 3298, 3316, 3334, 3352, 3370, 3388, 3406, 3424, 3442, 3460, 3478, 3496, 3514, 3532, 3550, 3568, 3586, 3604, 3622, 3640, 3658, 3676, 3694, 3712, 3730, 3748, 3766, 3784, 3802, 3820, 3838, 3856, 3874, 3892, 3910, 3928, 3946, 3964, 3982, 4000, 4018, 4036, 4054, 4072, 4090, 4108, 4126, 4144, 4162, 4180, 4198, 4216, 4234, 4252, 4270, 4288, 4306, 4324, 4342, 4360, 4378, 4396, 4414, 4432, 4450, 4468, 4486, 4504, 4522, 4540, 4558, 4576, 4594, 4612, 4630, 4648, 4666, 4684, 4702, 4720, 4738, 4756, 4774, 4792, 4810, 4828, 4846, 4864, 4882, 4900, 4918, 4936, 4954, 4972, 4990, 5008, 5026, 5044, 5062, 5080, 5098, 5116, 5134, 5152, 5170, 5188, 5206, 5224, 5242, 5260, 5278, 5296, 5314, 5332, 5350, 5368, 5386, 5404, 5422, 5440, 5458, 5476, 5494, 5512, 5530, 5548, 5566, 5584, 5602, 5620, 5638, 5656, 5674, 5692, 5710, 5728, 5746, 5764, 5782, 5800, 5818, 5836, 5854, 5872, 5890, 5908, 5926, 5944, 5962, 5980, 5998, 6016, 6034, 6052, 6070, 6088, 6106, 6124, 6142, 6160, 6178, 6196, 6214, 6232, 6250, 6268, 6286, 6304, 6322, 6340, 6358, 6376, 6394, 6412, 6430, 6448, 6466, 4, 22, 40, 58, 76, 94, 112, 130, 148, 166, 184, 202, 220, 238, 256, 274, 292, 310, 328, 346, 364, 382, 400, 418, 436, 454, 472, 490, 508, 526, 544, 562, 580, 598, 616, 634, 652, 670, 688, 706, 724, 742, 760, 778, 796, 814, 832, 850, 868, 886, 904, 922, 940, 958, 976, 994, 1012, 1030, 1048, 1066, 1084, 1102, 1120, 1138, 1156, 1174, 1192, 1210, 1228, 1246, 1264, 1282, 1300, 1318, 1336, 1354, 1372, 1390, 1408, 1426, 1444, 1462, 1480, 1498, 1516, 1534, 1552, 1570, 1588, 1606, 1624, 1642, 1660, 1678, 1696, 1714, 1732, 1750, 1768, 1786, 1804, 1822, 1840, 1858, 1876, 1894, 1912, 1930, 1948, 1966, 1984, 2002, 2020, 2038, 2056, 2074, 2092, 2110, 2128, 2146, 2164, 2182, 2200, 2218, 2236, 2254, 2272, 2290, 2308, 2326, 2344, 2362, 2380, 2398, 2416, 2434, 2452, 2470, 2488, 2506, 2524, 2542, 2560, 2578, 2596, 2614, 2632, 2650, 2668, 2686, 2704, 2722, 2740, 2758, 2776, 2794, 2812, 2830, 2848, 2866, 2884, 2902, 2920, 2938, 2956, 2974, 2992, 3010, 3028, 3046, 3064, 1623, 1641, 1659, 1677, 1695, 1713, 1731, 1749, 1767, 1785, 1803, 1821, 1839, 1857, 1875, 1893, 1911, 1929, 1947, 1965, 1983, 2001, 2019, 2037, 2055, 2073, 2091, 2109, 2127, 2145, 2163, 2181, 2199, 2217, 2235, 2253, 2271, 2289, 2307, 2325, 2343, 2361, 2379, 2397, 2415, 2433, 2451, 2469, 2487, 2505, 2523, 2541, 2559, 2577, 2595, 2613, 2631, 2649, 2667, 2685, 2703, 2721, 2739, 2757, 2775, 2793, 2811, 2829, 2847, 2865, 2883, 2901, 2919, 2937, 2955, 2973, 2991, 3009, 3027, 3045, 3063, 3081, 3099, 3117, 3135, 3153, 3171, 3189, 3207, 3225, 3243, 3261, 3279, 3297, 3315, 3333, 3351, 3369, 3387, 3405, 3423, 3441, 3459, 3477, 3495, 3513, 3531, 3549, 3567, 3585, 3603, 3621, 3639, 3657, 3675, 3693, 3711, 3729, 3747, 3765, 3783, 3801, 3819, 3837, 3855, 3873, 3891, 3909, 3927, 3945, 3963, 3981, 3999, 4017, 4035, 4053, 4071, 4089, 4107, 4125, 4143, 4161, 4179, 4197, 4215, 4233, 4251, 4269, 4287, 4305, 4323, 4341, 4359, 4377, 4395, 4413, 4431, 4449, 4467, 4485, 4503, 4521, 4539, 4557, 4575, 4593, 4611, 4629, 4647, 4665, 4683, 4701, 4719, 4737, 4755, 4773, 4791, 4809, 4827, 4845, 4863, 4881, 4899, 4917, 4935, 4953, 4971, 4989, 5007, 5025, 5043, 5061, 5079, 5097, 5115, 5133, 5151, 5169, 5187, 5205, 5223, 5241, 5259, 5277, 5295, 5313, 5331, 5349, 5367, 5385, 5403, 5421, 5439, 5457, 5475, 5493, 5511, 5529, 5547, 5565, 5583, 5601, 5619, 5637, 5655, 5673, 5691, 5709, 5727, 5745, 5763, 5781, 5799, 5817, 5835, 5853, 5871, 5889, 5907, 5925, 5943, 5961, 5979, 5997, 6015, 6033, 6051, 6069, 6087, 6105, 6123, 6141, 6159, 6177, 6195, 6213, 6231, 6249, 6267, 6285, 6303, 6321, 6339, 6357, 6375, 6393, 6411, 6429, 6447, 6465, 3, 21, 39, 57, 75, 93, 111, 129, 147, 165, 183, 201, 219, 237, 255, 273, 291, 309, 327, 345, 363, 381, 399, 417, 435, 453, 471, 489, 507, 525, 543, 561, 579, 597, 615, 633, 651, 669, 687, 705, 723, 741, 759, 777, 795, 813, 831, 849, 867, 885, 903, 921, 939, 957, 975, 993, 1011, 1029, 1047, 1065, 1083, 1101, 1119, 1137, 1155, 1173, 1191, 1209, 1227, 1245, 1263, 1281, 1299, 1317, 1335, 1353, 1371, 1389, 1407, 1425, 1443, 1461, 1479, 1497, 1515, 1533, 1551, 1569, 1587, 1605, 2185, 2203, 2221, 2239, 2257, 2275, 2293, 2311, 2329, 2347, 2365, 2383, 2401, 2419, 2437, 2455, 2473, 2491, 2509, 2527, 2545, 2563, 2581, 2599, 2617, 2635, 2653, 2671, 2689, 2707, 2725, 2743, 2761, 2779, 2797, 2815, 2833, 2851, 2869, 2887, 2905, 2923, 2941, 2959, 2977, 2995, 3013, 3031, 3049, 3067, 3085, 3103, 3121, 3139, 3157, 3175, 3193, 3211, 3229, 3247, 3265, 3283, 3301, 3319, 3337, 3355, 3373, 3391, 3409, 3427, 3445, 3463, 3481, 3499, 3517, 3535, 3553, 3571, 3589, 3607, 3625, 3643, 3661, 3679, 3697, 3715, 3733, 3751, 3769, 3787, 3805, 3823, 3841, 3859, 3877, 3895, 3913, 3931, 3949, 3967, 3985, 4003, 4021, 4039, 4057, 4075, 4093, 4111, 4129, 4147, 4165, 4183, 4201, 4219, 4237, 4255, 4273, 4291, 4309, 4327, 4345, 4363, 4381, 4399, 4417, 4435, 4453, 4471, 4489, 4507, 4525, 4543, 4561, 4579, 4597, 4615, 4633, 4651, 4669, 4687, 4705, 4723, 4741, 4759, 4777, 4795, 4813, 4831, 4849, 4867, 4885, 4903, 4921, 4939, 4957, 4975, 4993, 5011, 5029, 5047, 5065, 5083, 5101, 5119, 5137, 5155, 5173, 5191, 5209, 5227, 5245, 5263, 5281, 5299, 5317, 5335, 5353, 5371, 5389, 5407, 5425, 5443, 5461, 5479, 5497, 5515, 5533, 5551, 5569, 5587, 5605, 5623, 5641, 5659, 5677, 5695, 5713, 5731, 5749, 5767, 5785, 5803, 5821, 5839, 5857, 5875, 5893, 5911, 5929, 5947, 5965, 5983, 6001, 6019, 6037, 6055, 6073, 6091, 6109, 6127, 6145, 6163, 6181, 6199, 6217, 6235, 6253, 6271, 6289, 6307, 6325, 6343, 6361, 6379, 6397, 6415, 6433, 6451, 6469, 7, 25, 43, 61, 79, 97, 115, 133, 151, 169, 187, 205, 223, 241, 259, 277, 295, 313, 331, 349, 367, 385, 403, 421, 439, 457, 475, 493, 511, 529, 547, 565, 583, 601, 619, 637, 655, 673, 691, 709, 727, 745, 763, 781, 799, 817, 835, 853, 871, 889, 907, 925, 943, 961, 979, 997, 1015, 1033, 1051, 1069, 1087, 1105, 1123, 1141, 1159, 1177, 1195, 1213, 1231, 1249, 1267, 1285, 1303, 1321, 1339, 1357, 1375, 1393, 1411, 1429, 1447, 1465, 1483, 1501, 1519, 1537, 1555, 1573, 1591, 1609, 1627, 1645, 1663, 1681, 1699, 1717, 1735, 1753, 1771, 1789, 1807, 1825, 1843, 1861, 1879, 1897, 1915, 1933, 1951, 1969, 1987, 2005, 2023, 2041, 2059, 2077, 2095, 2113, 2131, 2149, 2167, 2831, 2849, 2867, 2885, 2903, 2921, 2939, 2957, 2975, 2993, 3011, 3029, 3047, 3065, 3083, 3101, 3119, 3137, 3155, 3173, 3191, 3209, 3227, 3245, 3263, 3281, 3299, 3317, 3335, 3353, 3371, 3389, 3407, 3425, 3443, 3461, 3479, 3497, 3515, 3533, 3551, 3569, 3587, 3605, 3623, 3641, 3659, 3677, 3695, 3713, 3731, 3749, 3767, 3785, 3803, 3821, 3839, 3857, 3875, 3893, 3911, 3929, 3947, 3965, 3983, 4001, 4019, 4037, 4055, 4073, 4091, 4109, 4127, 4145, 4163, 4181, 4199, 4217, 4235, 4253, 4271, 4289, 4307, 4325, 4343, 4361, 4379, 4397, 4415, 4433, 4451, 4469, 4487, 4505, 4523, 4541, 4559, 4577, 4595, 4613, 4631, 4649, 4667, 4685, 4703, 4721, 4739, 4757, 4775, 4793, 4811, 4829, 4847, 4865, 4883, 4901, 4919, 4937, 4955, 4973, 4991, 5009, 5027, 5045, 5063, 5081, 5099, 5117, 5135, 5153, 5171, 5189, 5207, 5225, 5243, 5261, 5279, 5297, 5315, 5333, 5351, 5369, 5387, 5405, 5423, 5441, 5459, 5477, 5495, 5513, 5531, 5549, 5567, 5585, 5603, 5621, 5639, 5657, 5675, 5693, 5711, 5729, 5747, 5765, 5783, 5801, 5819, 5837, 5855, 5873, 5891, 5909, 5927, 5945, 5963, 5981, 5999, 6017, 6035, 6053, 6071, 6089, 6107, 6125, 6143, 6161, 6179, 6197, 6215, 6233, 6251, 6269, 6287, 6305, 6323, 6341, 6359, 6377, 6395, 6413, 6431, 6449, 6467, 5, 23, 41, 59, 77, 95, 113, 131, 149, 167, 185, 203, 221, 239, 257, 275, 293, 311, 329, 347, 365, 383, 401, 419, 437, 455, 473, 491, 509, 527, 545, 563, 581, 599, 617, 635, 653, 671, 689, 707, 725, 743, 761, 779, 797, 815, 833, 851, 869, 887, 905, 923, 941, 959, 977, 995, 1013, 1031, 1049, 1067, 1085, 1103, 1121, 1139, 1157, 1175, 1193, 1211, 1229, 1247, 1265, 1283, 1301, 1319, 1337, 1355, 1373, 1391, 1409, 1427, 1445, 1463, 1481, 1499, 1517, 1535, 1553, 1571, 1589, 1607, 1625, 1643, 1661, 1679, 1697, 1715, 1733, 1751, 1769, 1787, 1805, 1823, 1841, 1859, 1877, 1895, 1913, 1931, 1949, 1967, 1985, 2003, 2021, 2039, 2057, 2075, 2093, 2111, 2129, 2147, 2165, 2183, 2201, 2219, 2237, 2255, 2273, 2291, 2309, 2327, 2345, 2363, 2381, 2399, 2417, 2435, 2453, 2471, 2489, 2507, 2525, 2543, 2561, 2579, 2597, 2615, 2633, 2651, 2669, 2687, 2705, 2723, 2741, 2759, 2777, 2795, 2813, 2162, 2180, 2198, 2216, 2234, 2252, 2270, 2288, 2306, 2324, 2342, 2360, 2378, 2396, 2414, 2432, 2450, 2468, 2486, 2504, 2522, 2540, 2558, 2576, 2594, 2612, 2630, 2648, 2666, 2684, 2702, 2720, 2738, 2756, 2774, 2792, 2810, 2828, 2846, 2864, 2882, 2900, 2918, 2936, 2954, 2972, 2990, 3008, 3026, 3044, 3062, 3080, 3098, 3116, 3134, 3152, 3170, 3188, 3206, 3224, 3242, 3260, 3278, 3296, 3314, 3332, 3350, 3368, 3386, 3404, 3422, 3440, 3458, 3476, 3494, 3512, 3530, 3548, 3566, 3584, 3602, 3620, 3638, 3656, 3674, 3692, 3710, 3728, 3746, 3764, 3782, 3800, 3818, 3836, 3854, 3872, 3890, 3908, 3926, 3944, 3962, 3980, 3998, 4016, 4034, 4052, 4070, 4088, 4106, 4124, 4142, 4160, 4178, 4196, 4214, 4232, 4250, 4268, 4286, 4304, 4322, 4340, 4358, 4376, 4394, 4412, 4430, 4448, 4466, 4484, 4502, 4520, 4538, 4556, 4574, 4592, 4610, 4628, 4646, 4664, 4682, 4700, 4718, 4736, 4754, 4772, 4790, 4808, 4826, 4844, 4862, 4880, 4898, 4916, 4934, 4952, 4970, 4988, 5006, 5024, 5042, 5060, 5078, 5096, 5114, 5132, 5150, 5168, 5186, 5204, 5222, 5240, 5258, 5276, 5294, 5312, 5330, 5348, 5366, 5384, 5402, 5420, 5438, 5456, 5474, 5492, 5510, 5528, 5546, 5564, 5582, 5600, 5618, 5636, 5654, 5672, 5690, 5708, 5726, 5744, 5762, 5780, 5798, 5816, 5834, 5852, 5870, 5888, 5906, 5924, 5942, 5960, 5978, 5996, 6014, 6032, 6050, 6068, 6086, 6104, 6122, 6140, 6158, 6176, 6194, 6212, 6230, 6248, 6266, 6284, 6302, 6320, 6338, 6356, 6374, 6392, 6410, 6428, 6446, 6464, 2, 20, 38, 56, 74, 92, 110, 128, 146, 164, 182, 200, 218, 236, 254, 272, 290, 308, 326, 344, 362, 380, 398, 416, 434, 452, 470, 488, 506, 524, 542, 560, 578, 596, 614, 632, 650, 668, 686, 704, 722, 740, 758, 776, 794, 812, 830, 848, 866, 884, 902, 920, 938, 956, 974, 992, 1010, 1028, 1046, 1064, 1082, 1100, 1118, 1136, 1154, 1172, 1190, 1208, 1226, 1244, 1262, 1280, 1298, 1316, 1334, 1352, 1370, 1388, 1406, 1424, 1442, 1460, 1478, 1496, 1514, 1532, 1550, 1568, 1586, 1604, 1622, 1640, 1658, 1676, 1694, 1712, 1730, 1748, 1766, 1784, 1802, 1820, 1838, 1856, 1874, 1892, 1910, 1928, 1946, 1964, 1982, 2000, 2018, 2036, 2054, 2072, 2090, 2108, 2126, 2144, 1381, 1399, 1417, 1435, 1453, 1471, 1489, 1507, 1525, 1543, 1561, 1579, 1597, 1615, 1633, 1651, 1669, 1687, 1705, 1723, 1741, 1759, 1777, 1795, 1813, 1831, 1849, 1867, 1885, 1903, 1921, 1939, 1957, 1975, 1993, 2011, 2029, 2047, 2065, 2083, 2101, 2119, 2137, 2155, 2173, 2191, 2209, 2227, 2245, 2263, 2281, 2299, 2317, 2335, 2353, 2371, 2389, 2407, 2425, 2443, 2461, 2479, 2497, 2515, 2533, 2551, 2569, 2587, 2605, 2623, 2641, 2659, 2677, 2695, 2713, 2731, 2749, 2767, 2785, 2803, 2821, 2839, 2857, 2875, 2893, 2911, 2929, 2947, 2965, 2983, 3001, 3019, 3037, 3055, 3073, 3091, 3109, 3127, 3145, 3163, 3181, 3199, 3217, 3235, 3253, 3271, 3289, 3307, 3325, 3343, 3361, 3379, 3397, 3415, 3433, 3451, 3469, 3487, 3505, 3523, 3541, 3559, 3577, 3595, 3613, 3631, 3649, 3667, 3685, 3703, 3721, 3739, 3757, 3775, 3793, 3811, 3829, 3847, 3865, 3883, 3901, 3919, 3937, 3955, 3973, 3991, 4009, 4027, 4045, 4063, 4081, 4099, 4117, 4135, 4153, 4171, 4189, 4207, 4225, 4243, 4261, 4279, 4297, 4315, 4333, 4351, 4369, 4387, 4405, 4423, 4441, 4459, 4477, 4495, 4513, 4531, 4549, 4567, 4585, 4603, 4621, 4639, 4657, 4675, 4693, 4711, 4729, 4747, 4765, 4783, 4801, 4819, 4837, 4855, 4873, 4891, 4909, 4927, 4945, 4963, 4981, 4999, 5017, 5035, 5053, 5071, 5089, 5107, 5125, 5143, 5161, 5179, 5197, 5215, 5233, 5251, 5269, 5287, 5305, 5323, 5341, 5359, 5377, 5395, 5413, 5431, 5449, 5467, 5485, 5503, 5521, 5539, 5557, 5575, 5593, 5611, 5629, 5647, 5665, 5683, 5701, 5719, 5737, 5755, 5773, 5791, 5809, 5827, 5845, 5863, 5881, 5899, 5917, 5935, 5953, 5971, 5989, 6007, 6025, 6043, 6061, 6079, 6097, 6115, 6133, 6151, 6169, 6187, 6205, 6223, 6241, 6259, 6277, 6295, 6313, 6331, 6349, 6367, 6385, 6403, 6421, 6439, 6457, 6475, 13, 31, 49, 67, 85, 103, 121, 139, 157, 175, 193, 211, 229, 247, 265, 283, 301, 319, 337, 355, 373, 391, 409, 427, 445, 463, 481, 499, 517, 535, 553, 571, 589, 607, 625, 643, 661, 679, 697, 715, 733, 751, 769, 787, 805, 823, 841, 859, 877, 895, 913, 931, 949, 967, 985, 1003, 1021, 1039, 1057, 1075, 1093, 1111, 1129, 1147, 1165, 1183, 1201, 1219, 1237, 1255, 1273, 1291, 1309, 1327, 1345, 1363, 2503, 2521, 2539, 2557, 2575, 2593, 2611, 2629, 2647, 2665, 2683, 2701, 2719, 2737, 2755, 2773, 2791, 2809, 2827, 2845, 2863, 2881, 2899, 2917, 2935, 2953, 2971, 2989, 3007, 3025, 3043, 3061, 3079, 3097, 3115, 3133, 3151, 3169, 3187, 3205, 3223, 3241, 3259, 3277, 3295, 3313, 3331, 3349, 3367, 3385, 3403, 3421, 3439, 3457, 3475, 3493, 3511, 3529, 3547, 3565, 3583, 3601, 3619, 3637, 3655, 3673, 3691, 3709, 3727, 3745, 3763, 3781, 3799, 3817, 3835, 3853, 3871, 3889, 3907, 3925, 3943, 3961, 3979, 3997, 4015, 4033, 4051, 4069, 4087, 4105, 4123, 4141, 4159, 4177, 4195, 4213, 4231, 4249, 4267, 4285, 4303, 4321, 4339, 4357, 4375, 4393, 4411, 4429, 4447, 4465, 4483, 4501, 4519, 4537, 4555, 4573, 4591, 4609, 4627, 4645, 4663, 4681, 4699, 4717, 4735, 4753, 4771, 4789, 4807, 4825, 4843, 4861, 4879, 4897, 4915, 4933, 4951, 4969, 4987, 5005, 5023, 5041, 5059, 5077, 5095, 5113, 5131, 5149, 5167, 5185, 5203, 5221, 5239, 5257, 5275, 5293, 5311, 5329, 5347, 5365, 5383, 5401, 5419, 5437, 5455, 5473, 5491, 5509, 5527, 5545, 5563, 5581, 5599, 5617, 5635, 5653, 5671, 5689, 5707, 5725, 5743, 5761, 5779, 5797, 5815, 5833, 5851, 5869, 5887, 5905, 5923, 5941, 5959, 5977, 5995, 6013, 6031, 6049, 6067, 6085, 6103, 6121, 6139, 6157, 6175, 6193, 6211, 6229, 6247, 6265, 6283, 6301, 6319, 6337, 6355, 6373, 6391, 6409, 6427, 6445, 6463, 1, 19, 37, 55, 73, 91, 109, 127, 145, 163, 181, 199, 217, 235, 253, 271, 289, 307, 325, 343, 361, 379, 397, 415, 433, 451, 469, 487, 505, 523, 541, 559, 577, 595, 613, 631, 649, 667, 685, 703, 721, 739, 757, 775, 793, 811, 829, 847, 865, 883, 901, 919, 937, 955, 973, 991, 1009, 1027, 1045, 1063, 1081, 1099, 1117, 1135, 1153, 1171, 1189, 1207, 1225, 1243, 1261, 1279, 1297, 1315, 1333, 1351, 1369, 1387, 1405, 1423, 1441, 1459, 1477, 1495, 1513, 1531, 1549, 1567, 1585, 1603, 1621, 1639, 1657, 1675, 1693, 1711, 1729, 1747, 1765, 1783, 1801, 1819, 1837, 1855, 1873, 1891, 1909, 1927, 1945, 1963, 1981, 1999, 2017, 2035, 2053, 2071, 2089, 2107, 2125, 2143, 2161, 2179, 2197, 2215, 2233, 2251, 2269, 2287, 2305, 2323, 2341, 2359, 2377, 2395, 2413, 2431, 2449, 2467, 2485, 3972, 3990, 4008, 4026, 4044, 4062, 4080, 4098, 4116, 4134, 4152, 4170, 4188, 4206, 4224, 4242, 4260, 4278, 4296, 4314, 4332, 4350, 4368, 4386, 4404, 4422, 4440, 4458, 4476, 4494, 4512, 4530, 4548, 4566, 4584, 4602, 4620, 4638, 4656, 4674, 4692, 4710, 4728, 4746, 4764, 4782, 4800, 4818, 4836, 4854, 4872, 4890, 4908, 4926, 4944, 4962, 4980, 4998, 5016, 5034, 5052, 5070, 5088, 5106, 5124, 5142, 5160, 5178, 5196, 5214, 5232, 5250, 5268, 5286, 5304, 5322, 5340, 5358, 5376, 5394, 5412, 5430, 5448, 5466, 5484, 5502, 5520, 5538, 5556, 5574, 5592, 5610, 5628, 5646, 5664, 5682, 5700, 5718, 5736, 5754, 5772, 5790, 5808, 5826, 5844, 5862, 5880, 5898, 5916, 5934, 5952, 5970, 5988, 6006, 6024, 6042, 6060, 6078, 6096, 6114, 6132, 6150, 6168, 6186, 6204, 6222, 6240, 6258, 6276, 6294, 6312, 6330, 6348, 6366, 6384, 6402, 6420, 6438, 6456, 6474, 12, 30, 48, 66, 84, 102, 120, 138, 156, 174, 192, 210, 228, 246, 264, 282, 300, 318, 336, 354, 372, 390, 408, 426, 444, 462, 480, 498, 516, 534, 552, 570, 588, 606, 624, 642, 660, 678, 696, 714, 732, 750, 768, 786, 804, 822, 840, 858, 876, 894, 912, 930, 948, 966, 984, 1002, 1020, 1038, 1056, 1074, 1092, 1110, 1128, 1146, 1164, 1182, 1200, 1218, 1236, 1254, 1272, 1290, 1308, 1326, 1344, 1362, 1380, 1398, 1416, 1434, 1452, 1470, 1488, 1506, 1524, 1542, 1560, 1578, 1596, 1614, 1632, 1650, 1668, 1686, 1704, 1722, 1740, 1758, 1776, 1794, 1812, 1830, 1848, 1866, 1884, 1902, 1920, 1938, 1956, 1974, 1992, 2010, 2028, 2046, 2064, 2082, 2100, 2118, 2136, 2154, 2172, 2190, 2208, 2226, 2244, 2262, 2280, 2298, 2316, 2334, 2352, 2370, 2388, 2406, 2424, 2442, 2460, 2478, 2496, 2514, 2532, 2550, 2568, 2586, 2604, 2622, 2640, 2658, 2676, 2694, 2712, 2730, 2748, 2766, 2784, 2802, 2820, 2838, 2856, 2874, 2892, 2910, 2928, 2946, 2964, 2982, 3000, 3018, 3036, 3054, 3072, 3090, 3108, 3126, 3144, 3162, 3180, 3198, 3216, 3234, 3252, 3270, 3288, 3306, 3324, 3342, 3360, 3378, 3396, 3414, 3432, 3450, 3468, 3486, 3504, 3522, 3540, 3558, 3576, 3594, 3612, 3630, 3648, 3666, 3684, 3702, 3720, 3738, 3756, 3774, 3792, 3810, 3828, 3846, 3864, 3882, 3900, 3918, 3936, 3954, 5986, 6004, 6022, 6040, 6058, 6076, 6094, 6112, 6130, 6148, 6166, 6184, 6202, 6220, 6238, 6256, 6274, 6292, 6310, 6328, 6346, 6364, 6382, 6400, 6418, 6436, 6454, 6472, 10, 28, 46, 64, 82, 100, 118, 136, 154, 172, 190, 208, 226, 244, 262, 280, 298, 316, 334, 352, 370, 388, 406, 424, 442, 460, 478, 496, 514, 532, 550, 568, 586, 604, 622, 640, 658, 676, 694, 712, 730, 748, 766, 784, 802, 820, 838, 856, 874, 892, 910, 928, 946, 964, 982, 1000, 1018, 1036, 1054, 1072, 1090, 1108, 1126, 1144, 1162, 1180, 1198, 1216, 1234, 1252, 1270, 1288, 1306, 1324, 1342, 1360, 1378, 1396, 1414, 1432, 1450, 1468, 1486, 1504, 1522, 1540, 1558, 1576, 1594, 1612, 1630, 1648, 1666, 1684, 1702, 1720, 1738, 1756, 1774, 1792, 1810, 1828, 1846, 1864, 1882, 1900, 1918, 1936, 1954, 1972, 1990, 2008, 2026, 2044, 2062, 2080, 2098, 2116, 2134, 2152, 2170, 2188, 2206, 2224, 2242, 2260, 2278, 2296, 2314, 2332, 2350, 2368, 2386, 2404, 2422, 2440, 2458, 2476, 2494, 2512, 2530, 2548, 2566, 2584, 2602, 2620, 2638, 2656, 2674, 2692, 2710, 2728, 2746, 2764, 2782, 2800, 2818, 2836, 2854, 2872, 2890, 2908, 2926, 2944, 2962, 2980, 2998, 3016, 3034, 3052, 3070, 3088, 3106, 3124, 3142, 3160, 3178, 3196, 3214, 3232, 3250, 3268, 3286, 3304, 3322, 3340, 3358, 3376, 3394, 3412, 3430, 3448, 3466, 3484, 3502, 3520, 3538, 3556, 3574, 3592, 3610, 3628, 3646, 3664, 3682, 3700, 3718, 3736, 3754, 3772, 3790, 3808, 3826, 3844, 3862, 3880, 3898, 3916, 3934, 3952, 3970, 3988, 4006, 4024, 4042, 4060, 4078, 4096, 4114, 4132, 4150, 4168, 4186, 4204, 4222, 4240, 4258, 4276, 4294, 4312, 4330, 4348, 4366, 4384, 4402, 4420, 4438, 4456, 4474, 4492, 4510, 4528, 4546, 4564, 4582, 4600, 4618, 4636, 4654, 4672, 4690, 4708, 4726, 4744, 4762, 4780, 4798, 4816, 4834, 4852, 4870, 4888, 4906, 4924, 4942, 4960, 4978, 4996, 5014, 5032, 5050, 5068, 5086, 5104, 5122, 5140, 5158, 5176, 5194, 5212, 5230, 5248, 5266, 5284, 5302, 5320, 5338, 5356, 5374, 5392, 5410, 5428, 5446, 5464, 5482, 5500, 5518, 5536, 5554, 5572, 5590, 5608, 5626, 5644, 5662, 5680, 5698, 5716, 5734, 5752, 5770, 5788, 5806, 5824, 5842, 5860, 5878, 5896, 5914, 5932, 5950, 5968, 1734, 1752, 1770, 1788, 1806, 1824, 1842, 1860, 1878, 1896, 1914, 1932, 1950, 1968, 1986, 2004, 2022, 2040, 2058, 2076, 2094, 2112, 2130, 2148, 2166, 2184, 2202, 2220, 2238, 2256, 2274, 2292, 2310, 2328, 2346, 2364, 2382, 2400, 2418, 2436, 2454, 2472, 2490, 2508, 2526, 2544, 2562, 2580, 2598, 2616, 2634, 2652, 2670, 2688, 2706, 2724, 2742, 2760, 2778, 2796, 2814, 2832, 2850, 2868, 2886, 2904, 2922, 2940, 2958, 2976, 2994, 3012, 3030, 3048, 3066, 3084, 3102, 3120, 3138, 3156, 3174, 3192, 3210, 3228, 3246, 3264, 3282, 3300, 3318, 3336, 3354, 3372, 3390, 3408, 3426, 3444, 3462, 3480, 3498, 3516, 3534, 3552, 3570, 3588, 3606, 3624, 3642, 3660, 3678, 3696, 3714, 3732, 3750, 3768, 3786, 3804, 3822, 3840, 3858, 3876, 3894, 3912, 3930, 3948, 3966, 3984, 4002, 4020, 4038, 4056, 4074, 4092, 4110, 4128, 4146, 4164, 4182, 4200, 4218, 4236, 4254, 4272, 4290, 4308, 4326, 4344, 4362, 4380, 4398, 4416, 4434, 4452, 4470, 4488, 4506, 4524, 4542, 4560, 4578, 4596, 4614, 4632, 4650, 4668, 4686, 4704, 4722, 4740, 4758, 4776, 4794, 4812, 4830, 4848, 4866, 4884, 4902, 4920, 4938, 4956, 4974, 4992, 5010, 5028, 5046, 5064, 5082, 5100, 5118, 5136, 5154, 5172, 5190, 5208, 5226, 5244, 5262, 5280, 5298, 5316, 5334, 5352, 5370, 5388, 5406, 5424, 5442, 5460, 5478, 5496, 5514, 5532, 5550, 5568, 5586, 5604, 5622, 5640, 5658, 5676, 5694, 5712, 5730, 5748, 5766, 5784, 5802, 5820, 5838, 5856, 5874, 5892, 5910, 5928, 5946, 5964, 5982, 6000, 6018, 6036, 6054, 6072, 6090, 6108, 6126, 6144, 6162, 6180, 6198, 6216, 6234, 6252, 6270, 6288, 6306, 6324, 6342, 6360, 6378, 6396, 6414, 6432, 6450, 6468, 6, 24, 42, 60, 78, 96, 114, 132, 150, 168, 186, 204, 222, 240, 258, 276, 294, 312, 330, 348, 366, 384, 402, 420, 438, 456, 474, 492, 510, 528, 546, 564, 582, 600, 618, 636, 654, 672, 690, 708, 726, 744, 762, 780, 798, 816, 834, 852, 870, 888, 906, 924, 942, 960, 978, 996, 1014, 1032, 1050, 1068, 1086, 1104, 1122, 1140, 1158, 1176, 1194, 1212, 1230, 1248, 1266, 1284, 1302, 1320, 1338, 1356, 1374, 1392, 1410, 1428, 1446, 1464, 1482, 1500, 1518, 1536, 1554, 1572, 1590, 1608, 1626, 1644, 1662, 1680, 1698, 1716, 3787, 3805, 3823, 3841, 3859, 3877, 3895, 3913, 3931, 3949, 3967, 3985, 4003, 4021, 4039, 4057, 4075, 4093, 4111, 4129, 4147, 4165, 4183, 4201, 4219, 4237, 4255, 4273, 4291, 4309, 4327, 4345, 4363, 4381, 4399, 4417, 4435, 4453, 4471, 4489, 4507, 4525, 4543, 4561, 4579, 4597, 4615, 4633, 4651, 4669, 4687, 4705, 4723, 4741, 4759, 4777, 4795, 4813, 4831, 4849, 4867, 4885, 4903, 4921, 4939, 4957, 4975, 4993, 5011, 5029, 5047, 5065, 5083, 5101, 5119, 5137, 5155, 5173, 5191, 5209, 5227, 5245, 5263, 5281, 5299, 5317, 5335, 5353, 5371, 5389, 5407, 5425, 5443, 5461, 5479, 5497, 5515, 5533, 5551, 5569, 5587, 5605, 5623, 5641, 5659, 5677, 5695, 5713, 5731, 5749, 5767, 5785, 5803, 5821, 5839, 5857, 5875, 5893, 5911, 5929, 5947, 5965, 5983, 6001, 6019, 6037, 6055, 6073, 6091, 6109, 6127, 6145, 6163, 6181, 6199, 6217, 6235, 6253, 6271, 6289, 6307, 6325, 6343, 6361, 6379, 6397, 6415, 6433, 6451, 6469, 7, 25, 43, 61, 79, 97, 115, 133, 151, 169, 187, 205, 223, 241, 259, 277, 295, 313, 331, 349, 367, 385, 403, 421, 439, 457, 475, 493, 511, 529, 547, 565, 583, 601, 619, 637, 655, 673, 691, 709, 727, 745, 763, 781, 799, 817, 835, 853, 871, 889, 907, 925, 943, 961, 979, 997, 1015, 1033, 1051, 1069, 1087, 1105, 1123, 1141, 1159, 1177, 1195, 1213, 1231, 1249, 1267, 1285, 1303, 1321, 1339, 1357, 1375, 1393, 1411, 1429, 1447, 1465, 1483, 1501, 1519, 1537, 1555, 1573, 1591, 1609, 1627, 1645, 1663, 1681, 1699, 1717, 1735, 1753, 1771, 1789, 1807, 1825, 1843, 1861, 1879, 1897, 1915, 1933, 1951, 1969, 1987, 2005, 2023, 2041, 2059, 2077, 2095, 2113, 2131, 2149, 2167, 2185, 2203, 2221, 2239, 2257, 2275, 2293, 2311, 2329, 2347, 2365, 2383, 2401, 2419, 2437, 2455, 2473, 2491, 2509, 2527, 2545, 2563, 2581, 2599, 2617, 2635, 2653, 2671, 2689, 2707, 2725, 2743, 2761, 2779, 2797, 2815, 2833, 2851, 2869, 2887, 2905, 2923, 2941, 2959, 2977, 2995, 3013, 3031, 3049, 3067, 3085, 3103, 3121, 3139, 3157, 3175, 3193, 3211, 3229, 3247, 3265, 3283, 3301, 3319, 3337, 3355, 3373, 3391, 3409, 3427, 3445, 3463, 3481, 3499, 3517, 3535, 3553, 3571, 3589, 3607, 3625, 3643, 3661, 3679, 3697, 3715, 3733, 3751, 3769, 4293, 4311, 4329, 4347, 4365, 4383, 4401, 4419, 4437, 4455, 4473, 4491, 4509, 4527, 4545, 4563, 4581, 4599, 4617, 4635, 4653, 4671, 4689, 4707, 4725, 4743, 4761, 4779, 4797, 4815, 4833, 4851, 4869, 4887, 4905, 4923, 4941, 4959, 4977, 4995, 5013, 5031, 5049, 5067, 5085, 5103, 5121, 5139, 5157, 5175, 5193, 5211, 5229, 5247, 5265, 5283, 5301, 5319, 5337, 5355, 5373, 5391, 5409, 5427, 5445, 5463, 5481, 5499, 5517, 5535, 5553, 5571, 5589, 5607, 5625, 5643, 5661, 5679, 5697, 5715, 5733, 5751, 5769, 5787, 5805, 5823, 5841, 5859, 5877, 5895, 5913, 5931, 5949, 5967, 5985, 6003, 6021, 6039, 6057, 6075, 6093, 6111, 6129, 6147, 6165, 6183, 6201, 6219, 6237, 6255, 6273, 6291, 6309, 6327, 6345, 6363, 6381, 6399, 6417, 6435, 6453, 6471, 9, 27, 45, 63, 81, 99, 117, 135, 153, 171, 189, 207, 225, 243, 261, 279, 297, 315, 333, 351, 369, 387, 405, 423, 441, 459, 477, 495, 513, 531, 549, 567, 585, 603, 621, 639, 657, 675, 693, 711, 729, 747, 765, 783, 801, 819, 837, 855, 873, 891, 909, 927, 945, 963, 981, 999, 1017, 1035, 1053, 1071, 1089, 1107, 1125, 1143, 1161, 1179, 1197, 1215, 1233, 1251, 1269, 1287, 1305, 1323, 1341, 1359, 1377, 1395, 1413, 1431, 1449, 1467, 1485, 1503, 1521, 1539, 1557, 1575, 1593, 1611, 1629, 1647, 1665, 1683, 1701, 1719, 1737, 1755, 1773, 1791, 1809, 1827, 1845, 1863, 1881, 1899, 1917, 1935, 1953, 1971, 1989, 2007, 2025, 2043, 2061, 2079, 2097, 2115, 2133, 2151, 2169, 2187, 2205, 2223, 2241, 2259, 2277, 2295, 2313, 2331, 2349, 2367, 2385, 2403, 2421, 2439, 2457, 2475, 2493, 2511, 2529, 2547, 2565, 2583, 2601, 2619, 2637, 2655, 2673, 2691, 2709, 2727, 2745, 2763, 2781, 2799, 2817, 2835, 2853, 2871, 2889, 2907, 2925, 2943, 2961, 2979, 2997, 3015, 3033, 3051, 3069, 3087, 3105, 3123, 3141, 3159, 3177, 3195, 3213, 3231, 3249, 3267, 3285, 3303, 3321, 3339, 3357, 3375, 3393, 3411, 3429, 3447, 3465, 3483, 3501, 3519, 3537, 3555, 3573, 3591, 3609, 3627, 3645, 3663, 3681, 3699, 3717, 3735, 3753, 3771, 3789, 3807, 3825, 3843, 3861, 3879, 3897, 3915, 3933, 3951, 3969, 3987, 4005, 4023, 4041, 4059, 4077, 4095, 4113, 4131, 4149, 4167, 4185, 4203, 4221, 4239, 4257, 4275, 5693, 5711, 5729, 5747, 5765, 5783, 5801, 5819, 5837, 5855, 5873, 5891, 5909, 5927, 5945, 5963, 5981, 5999, 6017, 6035, 6053, 6071, 6089, 6107, 6125, 6143, 6161, 6179, 6197, 6215, 6233, 6251, 6269, 6287, 6305, 6323, 6341, 6359, 6377, 6395, 6413, 6431, 6449, 6467, 5, 23, 41, 59, 77, 95, 113, 131, 149, 167, 185, 203, 221, 239, 257, 275, 293, 311, 329, 347, 365, 383, 401, 419, 437, 455, 473, 491, 509, 527, 545, 563, 581, 599, 617, 635, 653, 671, 689, 707, 725, 743, 761, 779, 797, 815, 833, 851, 869, 887, 905, 923, 941, 959, 977, 995, 1013, 1031, 1049, 1067, 1085, 1103, 1121, 1139, 1157, 1175, 1193, 1211, 1229, 1247, 1265, 1283, 1301, 1319, 1337, 1355, 1373, 1391, 1409, 1427, 1445, 1463, 1481, 1499, 1517, 1535, 1553, 1571, 1589, 1607, 1625, 1643, 1661, 1679, 1697, 1715, 1733, 1751, 1769, 1787, 1805, 1823, 1841, 1859, 1877, 1895, 1913, 1931, 1949, 1967, 1985, 2003, 2021, 2039, 2057, 2075, 2093, 2111, 2129, 2147, 2165, 2183, 2201, 2219, 2237, 2255, 2273, 2291, 2309, 2327, 2345, 2363, 2381, 2399, 2417, 2435, 2453, 2471, 2489, 2507, 2525, 2543, 2561, 2579, 2597, 2615, 2633, 2651, 2669, 2687, 2705, 2723, 2741, 2759, 2777, 2795, 2813, 2831, 2849, 2867, 2885, 2903, 2921, 2939, 2957, 2975, 2993, 3011, 3029, 3047, 3065, 3083, 3101, 3119, 3137, 3155, 3173, 3191, 3209, 3227, 3245, 3263, 3281, 3299, 3317, 3335, 3353, 3371, 3389, 3407, 3425, 3443, 3461, 3479, 3497, 3515, 3533, 3551, 3569, 3587, 3605, 3623, 3641, 3659, 3677, 3695, 3713, 3731, 3749, 3767, 3785, 3803, 3821, 3839, 3857, 3875, 3893, 3911, 3929, 3947, 3965, 3983, 4001, 4019, 4037, 4055, 4073, 4091, 4109, 4127, 4145, 4163, 4181, 4199, 4217, 4235, 4253, 4271, 4289, 4307, 4325, 4343, 4361, 4379, 4397, 4415, 4433, 4451, 4469, 4487, 4505, 4523, 4541, 4559, 4577, 4595, 4613, 4631, 4649, 4667, 4685, 4703, 4721, 4739, 4757, 4775, 4793, 4811, 4829, 4847, 4865, 4883, 4901, 4919, 4937, 4955, 4973, 4991, 5009, 5027, 5045, 5063, 5081, 5099, 5117, 5135, 5153, 5171, 5189, 5207, 5225, 5243, 5261, 5279, 5297, 5315, 5333, 5351, 5369, 5387, 5405, 5423, 5441, 5459, 5477, 5495, 5513, 5531, 5549, 5567, 5585, 5603, 5621, 5639, 5657, 5675, 267, 285, 303, 321, 339, 357, 375, 393, 411, 429, 447, 465, 483, 501, 519, 537, 555, 573, 591, 609, 627, 645, 663, 681, 699, 717, 735, 753, 771, 789, 807, 825, 843, 861, 879, 897, 915, 933, 951, 969, 987, 1005, 1023, 1041, 1059, 1077, 1095, 1113, 1131, 1149, 1167, 1185, 1203, 1221, 1239, 1257, 1275, 1293, 1311, 1329, 1347, 1365, 1383, 1401, 1419, 1437, 1455, 1473, 1491, 1509, 1527, 1545, 1563, 1581, 1599, 1617, 1635, 1653, 1671, 1689, 1707, 1725, 1743, 1761, 1779, 1797, 1815, 1833, 1851, 1869, 1887, 1905, 1923, 1941, 1959, 1977, 1995, 2013, 2031, 2049, 2067, 2085, 2103, 2121, 2139, 2157, 2175, 2193, 2211, 2229, 2247, 2265, 2283, 2301, 2319, 2337, 2355, 2373, 2391, 2409, 2427, 2445, 2463, 2481, 2499, 2517, 2535, 2553, 2571, 2589, 2607, 2625, 2643, 2661, 2679, 2697, 2715, 2733, 2751, 2769, 2787, 2805, 2823, 2841, 2859, 2877, 2895, 2913, 2931, 2949, 2967, 2985, 3003, 3021, 3039, 3057, 3075, 3093, 3111, 3129, 3147, 3165, 3183, 3201, 3219, 3237, 3255, 3273, 3291, 3309, 3327, 3345, 3363, 3381, 3399, 3417, 3435, 3453, 3471, 3489, 3507, 3525, 3543, 3561, 3579, 3597, 3615, 3633, 3651, 3669, 3687, 3705, 3723, 3741, 3759, 3777, 3795, 3813, 3831, 3849, 3867, 3885, 3903, 3921, 3939, 3957, 3975, 3993, 4011, 4029, 4047, 4065, 4083, 4101, 4119, 4137, 4155, 4173, 4191, 4209, 4227, 4245, 4263, 4281, 4299, 4317, 4335, 4353, 4371, 4389, 4407, 4425, 4443, 4461, 4479, 4497, 4515, 4533, 4551, 4569, 4587, 4605, 4623, 4641, 4659, 4677, 4695, 4713, 4731, 4749, 4767, 4785, 4803, 4821, 4839, 4857, 4875, 4893, 4911, 4929, 4947, 4965, 4983, 5001, 5019, 5037, 5055, 5073, 5091, 5109, 5127, 5145, 5163, 5181, 5199, 5217, 5235, 5253, 5271, 5289, 5307, 5325, 5343, 5361, 5379, 5397, 5415, 5433, 5451, 5469, 5487, 5505, 5523, 5541, 5559, 5577, 5595, 5613, 5631, 5649, 5667, 5685, 5703, 5721, 5739, 5757, 5775, 5793, 5811, 5829, 5847, 5865, 5883, 5901, 5919, 5937, 5955, 5973, 5991, 6009, 6027, 6045, 6063, 6081, 6099, 6117, 6135, 6153, 6171, 6189, 6207, 6225, 6243, 6261, 6279, 6297, 6315, 6333, 6351, 6369, 6387, 6405, 6423, 6441, 6459, 6477, 15, 33, 51, 69, 87, 105, 123, 141, 159, 177, 195, 213, 231, 249, 4914, 4932, 4950, 4968, 4986, 5004, 5022, 5040, 5058, 5076, 5094, 5112, 5130, 5148, 5166, 5184, 5202, 5220, 5238, 5256, 5274, 5292, 5310, 5328, 5346, 5364, 5382, 5400, 5418, 5436, 5454, 5472, 5490, 5508, 5526, 5544, 5562, 5580, 5598, 5616, 5634, 5652, 5670, 5688, 5706, 5724, 5742, 5760, 5778, 5796, 5814, 5832, 5850, 5868, 5886, 5904, 5922, 5940, 5958, 5976, 5994, 6012, 6030, 6048, 6066, 6084, 6102, 6120, 6138, 6156, 6174, 6192, 6210, 6228, 6246, 6264, 6282, 6300, 6318, 6336, 6354, 6372, 6390, 6408, 6426, 6444, 6462, 6480, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198, 216, 234, 252, 270, 288, 306, 324, 342, 360, 378, 396, 414, 432, 450, 468, 486, 504, 522, 540, 558, 576, 594, 612, 630, 648, 666, 684, 702, 720, 738, 756, 774, 792, 810, 828, 846, 864, 882, 900, 918, 936, 954, 972, 990, 1008, 1026, 1044, 1062, 1080, 1098, 1116, 1134, 1152, 1170, 1188, 1206, 1224, 1242, 1260, 1278, 1296, 1314, 1332, 1350, 1368, 1386, 1404, 1422, 1440, 1458, 1476, 1494, 1512, 1530, 1548, 1566, 1584, 1602, 1620, 1638, 1656, 1674, 1692, 1710, 1728, 1746, 1764, 1782, 1800, 1818, 1836, 1854, 1872, 1890, 1908, 1926, 1944, 1962, 1980, 1998, 2016, 2034, 2052, 2070, 2088, 2106, 2124, 2142, 2160, 2178, 2196, 2214, 2232, 2250, 2268, 2286, 2304, 2322, 2340, 2358, 2376, 2394, 2412, 2430, 2448, 2466, 2484, 2502, 2520, 2538, 2556, 2574, 2592, 2610, 2628, 2646, 2664, 2682, 2700, 2718, 2736, 2754, 2772, 2790, 2808, 2826, 2844, 2862, 2880, 2898, 2916, 2934, 2952, 2970, 2988, 3006, 3024, 3042, 3060, 3078, 3096, 3114, 3132, 3150, 3168, 3186, 3204, 3222, 3240, 3258, 3276, 3294, 3312, 3330, 3348, 3366, 3384, 3402, 3420, 3438, 3456, 3474, 3492, 3510, 3528, 3546, 3564, 3582, 3600, 3618, 3636, 3654, 3672, 3690, 3708, 3726, 3744, 3762, 3780, 3798, 3816, 3834, 3852, 3870, 3888, 3906, 3924, 3942, 3960, 3978, 3996, 4014, 4032, 4050, 4068, 4086, 4104, 4122, 4140, 4158, 4176, 4194, 4212, 4230, 4248, 4266, 4284, 4302, 4320, 4338, 4356, 4374, 4392, 4410, 4428, 4446, 4464, 4482, 4500, 4518, 4536, 4554, 4572, 4590, 4608, 4626, 4644, 4662, 4680, 4698, 4716, 4734, 4752, 4770, 4788, 4806, 4824, 4842, 4860, 4878, 4896, 4764, 4782, 4800, 4818, 4836, 4854, 4872, 4890, 4908, 4926, 4944, 4962, 4980, 4998, 5016, 5034, 5052, 5070, 5088, 5106, 5124, 5142, 5160, 5178, 5196, 5214, 5232, 5250, 5268, 5286, 5304, 5322, 5340, 5358, 5376, 5394, 5412, 5430, 5448, 5466, 5484, 5502, 5520, 5538, 5556, 5574, 5592, 5610, 5628, 5646, 5664, 5682, 5700, 5718, 5736, 5754, 5772, 5790, 5808, 5826, 5844, 5862, 5880, 5898, 5916, 5934, 5952, 5970, 5988, 6006, 6024, 6042, 6060, 6078, 6096, 6114, 6132, 6150, 6168, 6186, 6204, 6222, 6240, 6258, 6276, 6294, 6312, 6330, 6348, 6366, 6384, 6402, 6420, 6438, 6456, 6474, 12, 30, 48, 66, 84, 102, 120, 138, 156, 174, 192, 210, 228, 246, 264, 282, 300, 318, 336, 354, 372, 390, 408, 426, 444, 462, 480, 498, 516, 534, 552, 570, 588, 606, 624, 642, 660, 678, 696, 714, 732, 750, 768, 786, 804, 822, 840, 858, 876, 894, 912, 930, 948, 966, 984, 1002, 1020, 1038, 1056, 1074, 1092, 1110, 1128, 1146, 1164, 1182, 1200, 1218, 1236, 1254, 1272, 1290, 1308, 1326, 1344, 1362, 1380, 1398, 1416, 1434, 1452, 1470, 1488, 1506, 1524, 1542, 1560, 1578, 1596, 1614, 1632, 1650, 1668, 1686, 1704, 1722, 1740, 1758, 1776, 1794, 1812, 1830, 1848, 1866, 1884, 1902, 1920, 1938, 1956, 1974, 1992, 2010, 2028, 2046, 2064, 2082, 2100, 2118, 2136, 2154, 2172, 2190, 2208, 2226, 2244, 2262, 2280, 2298, 2316, 2334, 2352, 2370, 2388, 2406, 2424, 2442, 2460, 2478, 2496, 2514, 2532, 2550, 2568, 2586, 2604, 2622, 2640, 2658, 2676, 2694, 2712, 2730, 2748, 2766, 2784, 2802, 2820, 2838, 2856, 2874, 2892, 2910, 2928, 2946, 2964, 2982, 3000, 3018, 3036, 3054, 3072, 3090, 3108, 3126, 3144, 3162, 3180, 3198, 3216, 3234, 3252, 3270, 3288, 3306, 3324, 3342, 3360, 3378, 3396, 3414, 3432, 3450, 3468, 3486, 3504, 3522, 3540, 3558, 3576, 3594, 3612, 3630, 3648, 3666, 3684, 3702, 3720, 3738, 3756, 3774, 3792, 3810, 3828, 3846, 3864, 3882, 3900, 3918, 3936, 3954, 3972, 3990, 4008, 4026, 4044, 4062, 4080, 4098, 4116, 4134, 4152, 4170, 4188, 4206, 4224, 4242, 4260, 4278, 4296, 4314, 4332, 4350, 4368, 4386, 4404, 4422, 4440, 4458, 4476, 4494, 4512, 4530, 4548, 4566, 4584, 4602, 4620, 4638, 4656, 4674, 4692, 4710, 4728, 4746, 3591, 3609, 3627, 3645, 3663, 3681, 3699, 3717, 3735, 3753, 3771, 3789, 3807, 3825, 3843, 3861, 3879, 3897, 3915, 3933, 3951, 3969, 3987, 4005, 4023, 4041, 4059, 4077, 4095, 4113, 4131, 4149, 4167, 4185, 4203, 4221, 4239, 4257, 4275, 4293, 4311, 4329, 4347, 4365, 4383, 4401, 4419, 4437, 4455, 4473, 4491, 4509, 4527, 4545, 4563, 4581, 4599, 4617, 4635, 4653, 4671, 4689, 4707, 4725, 4743, 4761, 4779, 4797, 4815, 4833, 4851, 4869, 4887, 4905, 4923, 4941, 4959, 4977, 4995, 5013, 5031, 5049, 5067, 5085, 5103, 5121, 5139, 5157, 5175, 5193, 5211, 5229, 5247, 5265, 5283, 5301, 5319, 5337, 5355, 5373, 5391, 5409, 5427, 5445, 5463, 5481, 5499, 5517, 5535, 5553, 5571, 5589, 5607, 5625, 5643, 5661, 5679, 5697, 5715, 5733, 5751, 5769, 5787, 5805, 5823, 5841, 5859, 5877, 5895, 5913, 5931, 5949, 5967, 5985, 6003, 6021, 6039, 6057, 6075, 6093, 6111, 6129, 6147, 6165, 6183, 6201, 6219, 6237, 6255, 6273, 6291, 6309, 6327, 6345, 6363, 6381, 6399, 6417, 6435, 6453, 6471, 9, 27, 45, 63, 81, 99, 117, 135, 153, 171, 189, 207, 225, 243, 261, 279, 297, 315, 333, 351, 369, 387, 405, 423, 441, 459, 477, 495, 513, 531, 549, 567, 585, 603, 621, 639, 657, 675, 693, 711, 729, 747, 765, 783, 801, 819, 837, 855, 873, 891, 909, 927, 945, 963, 981, 999, 1017, 1035, 1053, 1071, 1089, 1107, 1125, 1143, 1161, 1179, 1197, 1215, 1233, 1251, 1269, 1287, 1305, 1323, 1341, 1359, 1377, 1395, 1413, 1431, 1449, 1467, 1485, 1503, 1521, 1539, 1557, 1575, 1593, 1611, 1629, 1647, 1665, 1683, 1701, 1719, 1737, 1755, 1773, 1791, 1809, 1827, 1845, 1863, 1881, 1899, 1917, 1935, 1953, 1971, 1989, 2007, 2025, 2043, 2061, 2079, 2097, 2115, 2133, 2151, 2169, 2187, 2205, 2223, 2241, 2259, 2277, 2295, 2313, 2331, 2349, 2367, 2385, 2403, 2421, 2439, 2457, 2475, 2493, 2511, 2529, 2547, 2565, 2583, 2601, 2619, 2637, 2655, 2673, 2691, 2709, 2727, 2745, 2763, 2781, 2799, 2817, 2835, 2853, 2871, 2889, 2907, 2925, 2943, 2961, 2979, 2997, 3015, 3033, 3051, 3069, 3087, 3105, 3123, 3141, 3159, 3177, 3195, 3213, 3231, 3249, 3267, 3285, 3303, 3321, 3339, 3357, 3375, 3393, 3411, 3429, 3447, 3465, 3483, 3501, 3519, 3537, 3555, 3573, 2567, 2585, 2603, 2621, 2639, 2657, 2675, 2693, 2711, 2729, 2747, 2765, 2783, 2801, 2819, 2837, 2855, 2873, 2891, 2909, 2927, 2945, 2963, 2981, 2999, 3017, 3035, 3053, 3071, 3089, 3107, 3125, 3143, 3161, 3179, 3197, 3215, 3233, 3251, 3269, 3287, 3305, 3323, 3341, 3359, 3377, 3395, 3413, 3431, 3449, 3467, 3485, 3503, 3521, 3539, 3557, 3575, 3593, 3611, 3629, 3647, 3665, 3683, 3701, 3719, 3737, 3755, 3773, 3791, 3809, 3827, 3845, 3863, 3881, 3899, 3917, 3935, 3953, 3971, 3989, 4007, 4025, 4043, 4061, 4079, 4097, 4115, 4133, 4151, 4169, 4187, 4205, 4223, 4241, 4259, 4277, 4295, 4313, 4331, 4349, 4367, 4385, 4403, 4421, 4439, 4457, 4475, 4493, 4511, 4529, 4547, 4565, 4583, 4601, 4619, 4637, 4655, 4673, 4691, 4709, 4727, 4745, 4763, 4781, 4799, 4817, 4835, 4853, 4871, 4889, 4907, 4925, 4943, 4961, 4979, 4997, 5015, 5033, 5051, 5069, 5087, 5105, 5123, 5141, 5159, 5177, 5195, 5213, 5231, 5249, 5267, 5285, 5303, 5321, 5339, 5357, 5375, 5393, 5411, 5429, 5447, 5465, 5483, 5501, 5519, 5537, 5555, 5573, 5591, 5609, 5627, 5645, 5663, 5681, 5699, 5717, 5735, 5753, 5771, 5789, 5807, 5825, 5843, 5861, 5879, 5897, 5915, 5933, 5951, 5969, 5987, 6005, 6023, 6041, 6059, 6077, 6095, 6113, 6131, 6149, 6167, 6185, 6203, 6221, 6239, 6257, 6275, 6293, 6311, 6329, 6347, 6365, 6383, 6401, 6419, 6437, 6455, 6473, 11, 29, 47, 65, 83, 101, 119, 137, 155, 173, 191, 209, 227, 245, 263, 281, 299, 317, 335, 353, 371, 389, 407, 425, 443, 461, 479, 497, 515, 533, 551, 569, 587, 605, 623, 641, 659, 677, 695, 713, 731, 749, 767, 785, 803, 821, 839, 857, 875, 893, 911, 929, 947, 965, 983, 1001, 1019, 1037, 1055, 1073, 1091, 1109, 1127, 1145, 1163, 1181, 1199, 1217, 1235, 1253, 1271, 1289, 1307, 1325, 1343, 1361, 1379, 1397, 1415, 1433, 1451, 1469, 1487, 1505, 1523, 1541, 1559, 1577, 1595, 1613, 1631, 1649, 1667, 1685, 1703, 1721, 1739, 1757, 1775, 1793, 1811, 1829, 1847, 1865, 1883, 1901, 1919, 1937, 1955, 1973, 1991, 2009, 2027, 2045, 2063, 2081, 2099, 2117, 2135, 2153, 2171, 2189, 2207, 2225, 2243, 2261, 2279, 2297, 2315, 2333, 2351, 2369, 2387, 2405, 2423, 2441, 2459, 2477, 2495, 2513, 2531, 2549, 5209, 5227, 5245, 5263, 5281, 5299, 5317, 5335, 5353, 5371, 5389, 5407, 5425, 5443, 5461, 5479, 5497, 5515, 5533, 5551, 5569, 5587, 5605, 5623, 5641, 5659, 5677, 5695, 5713, 5731, 5749, 5767, 5785, 5803, 5821, 5839, 5857, 5875, 5893, 5911, 5929, 5947, 5965, 5983, 6001, 6019, 6037, 6055, 6073, 6091, 6109, 6127, 6145, 6163, 6181, 6199, 6217, 6235, 6253, 6271, 6289, 6307, 6325, 6343, 6361, 6379, 6397, 6415, 6433, 6451, 6469, 7, 25, 43, 61, 79, 97, 115, 133, 151, 169, 187, 205, 223, 241, 259, 277, 295, 313, 331, 349, 367, 385, 403, 421, 439, 457, 475, 493, 511, 529, 547, 565, 583, 601, 619, 637, 655, 673, 691, 709, 727, 745, 763, 781, 799, 817, 835, 853, 871, 889, 907, 925, 943, 961, 979, 997, 1015, 1033, 1051, 1069, 1087, 1105, 1123, 1141, 1159, 1177, 1195, 1213, 1231, 1249, 1267, 1285, 1303, 1321, 1339, 1357, 1375, 1393, 1411, 1429, 1447, 1465, 1483, 1501, 1519, 1537, 1555, 1573, 1591, 1609, 1627, 1645, 1663, 1681, 1699, 1717, 1735, 1753, 1771, 1789, 1807, 1825, 1843, 1861, 1879, 1897, 1915, 1933, 1951, 1969, 1987, 2005, 2023, 2041, 2059, 2077, 2095, 2113, 2131, 2149, 2167, 2185, 2203, 2221, 2239, 2257, 2275, 2293, 2311, 2329, 2347, 2365, 2383, 2401, 2419, 2437, 2455, 2473, 2491, 2509, 2527, 2545, 2563, 2581, 2599, 2617, 2635, 2653, 2671, 2689, 2707, 2725, 2743, 2761, 2779, 2797, 2815, 2833, 2851, 2869, 2887, 2905, 2923, 2941, 2959, 2977, 2995, 3013, 3031, 3049, 3067, 3085, 3103, 3121, 3139, 3157, 3175, 3193, 3211, 3229, 3247, 3265, 3283, 3301, 3319, 3337, 3355, 3373, 3391, 3409, 3427, 3445, 3463, 3481, 3499, 3517, 3535, 3553, 3571, 3589, 3607, 3625, 3643, 3661, 3679, 3697, 3715, 3733, 3751, 3769, 3787, 3805, 3823, 3841, 3859, 3877, 3895, 3913, 3931, 3949, 3967, 3985, 4003, 4021, 4039, 4057, 4075, 4093, 4111, 4129, 4147, 4165, 4183, 4201, 4219, 4237, 4255, 4273, 4291, 4309, 4327, 4345, 4363, 4381, 4399, 4417, 4435, 4453, 4471, 4489, 4507, 4525, 4543, 4561, 4579, 4597, 4615, 4633, 4651, 4669, 4687, 4705, 4723, 4741, 4759, 4777, 4795, 4813, 4831, 4849, 4867, 4885, 4903, 4921, 4939, 4957, 4975, 4993, 5011, 5029, 5047, 5065, 5083, 5101, 5119, 5137, 5155, 5173, 5191, 3941, 3959, 3977, 3995, 4013, 4031, 4049, 4067, 4085, 4103, 4121, 4139, 4157, 4175, 4193, 4211, 4229, 4247, 4265, 4283, 4301, 4319, 4337, 4355, 4373, 4391, 4409, 4427, 4445, 4463, 4481, 4499, 4517, 4535, 4553, 4571, 4589, 4607, 4625, 4643, 4661, 4679, 4697, 4715, 4733, 4751, 4769, 4787, 4805, 4823, 4841, 4859, 4877, 4895, 4913, 4931, 4949, 4967, 4985, 5003, 5021, 5039, 5057, 5075, 5093, 5111, 5129, 5147, 5165, 5183, 5201, 5219, 5237, 5255, 5273, 5291, 5309, 5327, 5345, 5363, 5381, 5399, 5417, 5435, 5453, 5471, 5489, 5507, 5525, 5543, 5561, 5579, 5597, 5615, 5633, 5651, 5669, 5687, 5705, 5723, 5741, 5759, 5777, 5795, 5813, 5831, 5849, 5867, 5885, 5903, 5921, 5939, 5957, 5975, 5993, 6011, 6029, 6047, 6065, 6083, 6101, 6119, 6137, 6155, 6173, 6191, 6209, 6227, 6245, 6263, 6281, 6299, 6317, 6335, 6353, 6371, 6389, 6407, 6425, 6443, 6461, 6479, 17, 35, 53, 71, 89, 107, 125, 143, 161, 179, 197, 215, 233, 251, 269, 287, 305, 323, 341, 359, 377, 395, 413, 431, 449, 467, 485, 503, 521, 539, 557, 575, 593, 611, 629, 647, 665, 683, 701, 719, 737, 755, 773, 791, 809, 827, 845, 863, 881, 899, 917, 935, 953, 971, 989, 1007, 1025, 1043, 1061, 1079, 1097, 1115, 1133, 1151, 1169, 1187, 1205, 1223, 1241, 1259, 1277, 1295, 1313, 1331, 1349, 1367, 1385, 1403, 1421, 1439, 1457, 1475, 1493, 1511, 1529, 1547, 1565, 1583, 1601, 1619, 1637, 1655, 1673, 1691, 1709, 1727, 1745, 1763, 1781, 1799, 1817, 1835, 1853, 1871, 1889, 1907, 1925, 1943, 1961, 1979, 1997, 2015, 2033, 2051, 2069, 2087, 2105, 2123, 2141, 2159, 2177, 2195, 2213, 2231, 2249, 2267, 2285, 2303, 2321, 2339, 2357, 2375, 2393, 2411, 2429, 2447, 2465, 2483, 2501, 2519, 2537, 2555, 2573, 2591, 2609, 2627, 2645, 2663, 2681, 2699, 2717, 2735, 2753, 2771, 2789, 2807, 2825, 2843, 2861, 2879, 2897, 2915, 2933, 2951, 2969, 2987, 3005, 3023, 3041, 3059, 3077, 3095, 3113, 3131, 3149, 3167, 3185, 3203, 3221, 3239, 3257, 3275, 3293, 3311, 3329, 3347, 3365, 3383, 3401, 3419, 3437, 3455, 3473, 3491, 3509, 3527, 3545, 3563, 3581, 3599, 3617, 3635, 3653, 3671, 3689, 3707, 3725, 3743, 3761, 3779, 3797, 3815, 3833, 3851, 3869, 3887, 3905, 3923, 5110, 5128, 5146, 5164, 5182, 5200, 5218, 5236, 5254, 5272, 5290, 5308, 5326, 5344, 5362, 5380, 5398, 5416, 5434, 5452, 5470, 5488, 5506, 5524, 5542, 5560, 5578, 5596, 5614, 5632, 5650, 5668, 5686, 5704, 5722, 5740, 5758, 5776, 5794, 5812, 5830, 5848, 5866, 5884, 5902, 5920, 5938, 5956, 5974, 5992, 6010, 6028, 6046, 6064, 6082, 6100, 6118, 6136, 6154, 6172, 6190, 6208, 6226, 6244, 6262, 6280, 6298, 6316, 6334, 6352, 6370, 6388, 6406, 6424, 6442, 6460, 6478, 16, 34, 52, 70, 88, 106, 124, 142, 160, 178, 196, 214, 232, 250, 268, 286, 304, 322, 340, 358, 376, 394, 412, 430, 448, 466, 484, 502, 520, 538, 556, 574, 592, 610, 628, 646, 664, 682, 700, 718, 736, 754, 772, 790, 808, 826, 844, 862, 880, 898, 916, 934, 952, 970, 988, 1006, 1024, 1042, 1060, 1078, 1096, 1114, 1132, 1150, 1168, 1186, 1204, 1222, 1240, 1258, 1276, 1294, 1312, 1330, 1348, 1366, 1384, 1402, 1420, 1438, 1456, 1474, 1492, 1510, 1528, 1546, 1564, 1582, 1600, 1618, 1636, 1654, 1672, 1690, 1708, 1726, 1744, 1762, 1780, 1798, 1816, 1834, 1852, 1870, 1888, 1906, 1924, 1942, 1960, 1978, 1996, 2014, 2032, 2050, 2068, 2086, 2104, 2122, 2140, 2158, 2176, 2194, 2212, 2230, 2248, 2266, 2284, 2302, 2320, 2338, 2356, 2374, 2392, 2410, 2428, 2446, 2464, 2482, 2500, 2518, 2536, 2554, 2572, 2590, 2608, 2626, 2644, 2662, 2680, 2698, 2716, 2734, 2752, 2770, 2788, 2806, 2824, 2842, 2860, 2878, 2896, 2914, 2932, 2950, 2968, 2986, 3004, 3022, 3040, 3058, 3076, 3094, 3112, 3130, 3148, 3166, 3184, 3202, 3220, 3238, 3256, 3274, 3292, 3310, 3328, 3346, 3364, 3382, 3400, 3418, 3436, 3454, 3472, 3490, 3508, 3526, 3544, 3562, 3580, 3598, 3616, 3634, 3652, 3670, 3688, 3706, 3724, 3742, 3760, 3778, 3796, 3814, 3832, 3850, 3868, 3886, 3904, 3922, 3940, 3958, 3976, 3994, 4012, 4030, 4048, 4066, 4084, 4102, 4120, 4138, 4156, 4174, 4192, 4210, 4228, 4246, 4264, 4282, 4300, 4318, 4336, 4354, 4372, 4390, 4408, 4426, 4444, 4462, 4480, 4498, 4516, 4534, 4552, 4570, 4588, 4606, 4624, 4642, 4660, 4678, 4696, 4714, 4732, 4750, 4768, 4786, 4804, 4822, 4840, 4858, 4876, 4894, 4912, 4930, 4948, 4966, 4984, 5002, 5020, 5038, 5056, 5074, 5092, 4909, 4927, 4945, 4963, 4981, 4999, 5017, 5035, 5053, 5071, 5089, 5107, 5125, 5143, 5161, 5179, 5197, 5215, 5233, 5251, 5269, 5287, 5305, 5323, 5341, 5359, 5377, 5395, 5413, 5431, 5449, 5467, 5485, 5503, 5521, 5539, 5557, 5575, 5593, 5611, 5629, 5647, 5665, 5683, 5701, 5719, 5737, 5755, 5773, 5791, 5809, 5827, 5845, 5863, 5881, 5899, 5917, 5935, 5953, 5971, 5989, 6007, 6025, 6043, 6061, 6079, 6097, 6115, 6133, 6151, 6169, 6187, 6205, 6223, 6241, 6259, 6277, 6295, 6313, 6331, 6349, 6367, 6385, 6403, 6421, 6439, 6457, 6475, 13, 31, 49, 67, 85, 103, 121, 139, 157, 175, 193, 211, 229, 247, 265, 283, 301, 319, 337, 355, 373, 391, 409, 427, 445, 463, 481, 499, 517, 535, 553, 571, 589, 607, 625, 643, 661, 679, 697, 715, 733, 751, 769, 787, 805, 823, 841, 859, 877, 895, 913, 931, 949, 967, 985, 1003, 1021, 1039, 1057, 1075, 1093, 1111, 1129, 1147, 1165, 1183, 1201, 1219, 1237, 1255, 1273, 1291, 1309, 1327, 1345, 1363, 1381, 1399, 1417, 1435, 1453, 1471, 1489, 1507, 1525, 1543, 1561, 1579, 1597, 1615, 1633, 1651, 1669, 1687, 1705, 1723, 1741, 1759, 1777, 1795, 1813, 1831, 1849, 1867, 1885, 1903, 1921, 1939, 1957, 1975, 1993, 2011, 2029, 2047, 2065, 2083, 2101, 2119, 2137, 2155, 2173, 2191, 2209, 2227, 2245, 2263, 2281, 2299, 2317, 2335, 2353, 2371, 2389, 2407, 2425, 2443, 2461, 2479, 2497, 2515, 2533, 2551, 2569, 2587, 2605, 2623, 2641, 2659, 2677, 2695, 2713, 2731, 2749, 2767, 2785, 2803, 2821, 2839, 2857, 2875, 2893, 2911, 2929, 2947, 2965, 2983, 3001, 3019, 3037, 3055, 3073, 3091, 3109, 3127, 3145, 3163, 3181, 3199, 3217, 3235, 3253, 3271, 3289, 3307, 3325, 3343, 3361, 3379, 3397, 3415, 3433, 3451, 3469, 3487, 3505, 3523, 3541, 3559, 3577, 3595, 3613, 3631, 3649, 3667, 3685, 3703, 3721, 3739, 3757, 3775, 3793, 3811, 3829, 3847, 3865, 3883, 3901, 3919, 3937, 3955, 3973, 3991, 4009, 4027, 4045, 4063, 4081, 4099, 4117, 4135, 4153, 4171, 4189, 4207, 4225, 4243, 4261, 4279, 4297, 4315, 4333, 4351, 4369, 4387, 4405, 4423, 4441, 4459, 4477, 4495, 4513, 4531, 4549, 4567, 4585, 4603, 4621, 4639, 4657, 4675, 4693, 4711, 4729, 4747, 4765, 4783, 4801, 4819, 4837, 4855, 4873, 4891, 6427, 6445, 6463, 1, 19, 37, 55, 73, 91, 109, 127, 145, 163, 181, 199, 217, 235, 253, 271, 289, 307, 325, 343, 361, 379, 397, 415, 433, 451, 469, 487, 505, 523, 541, 559, 577, 595, 613, 631, 649, 667, 685, 703, 721, 739, 757, 775, 793, 811, 829, 847, 865, 883, 901, 919, 937, 955, 973, 991, 1009, 1027, 1045, 1063, 1081, 1099, 1117, 1135, 1153, 1171, 1189, 1207, 1225, 1243, 1261, 1279, 1297, 1315, 1333, 1351, 1369, 1387, 1405, 1423, 1441, 1459, 1477, 1495, 1513, 1531, 1549, 1567, 1585, 1603, 1621, 1639, 1657, 1675, 1693, 1711, 1729, 1747, 1765, 1783, 1801, 1819, 1837, 1855, 1873, 1891, 1909, 1927, 1945, 1963, 1981, 1999, 2017, 2035, 2053, 2071, 2089, 2107, 2125, 2143, 2161, 2179, 2197, 2215, 2233, 2251, 2269, 2287, 2305, 2323, 2341, 2359, 2377, 2395, 2413, 2431, 2449, 2467, 2485, 2503, 2521, 2539, 2557, 2575, 2593, 2611, 2629, 2647, 2665, 2683, 2701, 2719, 2737, 2755, 2773, 2791, 2809, 2827, 2845, 2863, 2881, 2899, 2917, 2935, 2953, 2971, 2989, 3007, 3025, 3043, 3061, 3079, 3097, 3115, 3133, 3151, 3169, 3187, 3205, 3223, 3241, 3259, 3277, 3295, 3313, 3331, 3349, 3367, 3385, 3403, 3421, 3439, 3457, 3475, 3493, 3511, 3529, 3547, 3565, 3583, 3601, 3619, 3637, 3655, 3673, 3691, 3709, 3727, 3745, 3763, 3781, 3799, 3817, 3835, 3853, 3871, 3889, 3907, 3925, 3943, 3961, 3979, 3997, 4015, 4033, 4051, 4069, 4087, 4105, 4123, 4141, 4159, 4177, 4195, 4213, 4231, 4249, 4267, 4285, 4303, 4321, 4339, 4357, 4375, 4393, 4411, 4429, 4447, 4465, 4483, 4501, 4519, 4537, 4555, 4573, 4591, 4609, 4627, 4645, 4663, 4681, 4699, 4717, 4735, 4753, 4771, 4789, 4807, 4825, 4843, 4861, 4879, 4897, 4915, 4933, 4951, 4969, 4987, 5005, 5023, 5041, 5059, 5077, 5095, 5113, 5131, 5149, 5167, 5185, 5203, 5221, 5239, 5257, 5275, 5293, 5311, 5329, 5347, 5365, 5383, 5401, 5419, 5437, 5455, 5473, 5491, 5509, 5527, 5545, 5563, 5581, 5599, 5617, 5635, 5653, 5671, 5689, 5707, 5725, 5743, 5761, 5779, 5797, 5815, 5833, 5851, 5869, 5887, 5905, 5923, 5941, 5959, 5977, 5995, 6013, 6031, 6049, 6067, 6085, 6103, 6121, 6139, 6157, 6175, 6193, 6211, 6229, 6247, 6265, 6283, 6301, 6319, 6337, 6355, 6373, 6391, 6409, 2209, 2227, 2245, 2263, 2281, 2299, 2317, 2335, 2353, 2371, 2389, 2407, 2425, 2443, 2461, 2479, 2497, 2515, 2533, 2551, 2569, 2587, 2605, 2623, 2641, 2659, 2677, 2695, 2713, 2731, 2749, 2767, 2785, 2803, 2821, 2839, 2857, 2875, 2893, 2911, 2929, 2947, 2965, 2983, 3001, 3019, 3037, 3055, 3073, 3091, 3109, 3127, 3145, 3163, 3181, 3199, 3217, 3235, 3253, 3271, 3289, 3307, 3325, 3343, 3361, 3379, 3397, 3415, 3433, 3451, 3469, 3487, 3505, 3523, 3541, 3559, 3577, 3595, 3613, 3631, 3649, 3667, 3685, 3703, 3721, 3739, 3757, 3775, 3793, 3811, 3829, 3847, 3865, 3883, 3901, 3919, 3937, 3955, 3973, 3991, 4009, 4027, 4045, 4063, 4081, 4099, 4117, 4135, 4153, 4171, 4189, 4207, 4225, 4243, 4261, 4279, 4297, 4315, 4333, 4351, 4369, 4387, 4405, 4423, 4441, 4459, 4477, 4495, 4513, 4531, 4549, 4567, 4585, 4603, 4621, 4639, 4657, 4675, 4693, 4711, 4729, 4747, 4765, 4783, 4801, 4819, 4837, 4855, 4873, 4891, 4909, 4927, 4945, 4963, 4981, 4999, 5017, 5035, 5053, 5071, 5089, 5107, 5125, 5143, 5161, 5179, 5197, 5215, 5233, 5251, 5269, 5287, 5305, 5323, 5341, 5359, 5377, 5395, 5413, 5431, 5449, 5467, 5485, 5503, 5521, 5539, 5557, 5575, 5593, 5611, 5629, 5647, 5665, 5683, 5701, 5719, 5737, 5755, 5773, 5791, 5809, 5827, 5845, 5863, 5881, 5899, 5917, 5935, 5953, 5971, 5989, 6007, 6025, 6043, 6061, 6079, 6097, 6115, 6133, 6151, 6169, 6187, 6205, 6223, 6241, 6259, 6277, 6295, 6313, 6331, 6349, 6367, 6385, 6403, 6421, 6439, 6457, 6475, 13, 31, 49, 67, 85, 103, 121, 139, 157, 175, 193, 211, 229, 247, 265, 283, 301, 319, 337, 355, 373, 391, 409, 427, 445, 463, 481, 499, 517, 535, 553, 571, 589, 607, 625, 643, 661, 679, 697, 715, 733, 751, 769, 787, 805, 823, 841, 859, 877, 895, 913, 931, 949, 967, 985, 1003, 1021, 1039, 1057, 1075, 1093, 1111, 1129, 1147, 1165, 1183, 1201, 1219, 1237, 1255, 1273, 1291, 1309, 1327, 1345, 1363, 1381, 1399, 1417, 1435, 1453, 1471, 1489, 1507, 1525, 1543, 1561, 1579, 1597, 1615, 1633, 1651, 1669, 1687, 1705, 1723, 1741, 1759, 1777, 1795, 1813, 1831, 1849, 1867, 1885, 1903, 1921, 1939, 1957, 1975, 1993, 2011, 2029, 2047, 2065, 2083, 2101, 2119, 2137, 2155, 2173, 2191, 5778, 5796, 5814, 5832, 5850, 5868, 5886, 5904, 5922, 5940, 5958, 5976, 5994, 6012, 6030, 6048, 6066, 6084, 6102, 6120, 6138, 6156, 6174, 6192, 6210, 6228, 6246, 6264, 6282, 6300, 6318, 6336, 6354, 6372, 6390, 6408, 6426, 6444, 6462, 6480, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198, 216, 234, 252, 270, 288, 306, 324, 342, 360, 378, 396, 414, 432, 450, 468, 486, 504, 522, 540, 558, 576, 594, 612, 630, 648, 666, 684, 702, 720, 738, 756, 774, 792, 810, 828, 846, 864, 882, 900, 918, 936, 954, 972, 990, 1008, 1026, 1044, 1062, 1080, 1098, 1116, 1134, 1152, 1170, 1188, 1206, 1224, 1242, 1260, 1278, 1296, 1314, 1332, 1350, 1368, 1386, 1404, 1422, 1440, 1458, 1476, 1494, 1512, 1530, 1548, 1566, 1584, 1602, 1620, 1638, 1656, 1674, 1692, 1710, 1728, 1746, 1764, 1782, 1800, 1818, 1836, 1854, 1872, 1890, 1908, 1926, 1944, 1962, 1980, 1998, 2016, 2034, 2052, 2070, 2088, 2106, 2124, 2142, 2160, 2178, 2196, 2214, 2232, 2250, 2268, 2286, 2304, 2322, 2340, 2358, 2376, 2394, 2412, 2430, 2448, 2466, 2484, 2502, 2520, 2538, 2556, 2574, 2592, 2610, 2628, 2646, 2664, 2682, 2700, 2718, 2736, 2754, 2772, 2790, 2808, 2826, 2844, 2862, 2880, 2898, 2916, 2934, 2952, 2970, 2988, 3006, 3024, 3042, 3060, 3078, 3096, 3114, 3132, 3150, 3168, 3186, 3204, 3222, 3240, 3258, 3276, 3294, 3312, 3330, 3348, 3366, 3384, 3402, 3420, 3438, 3456, 3474, 3492, 3510, 3528, 3546, 3564, 3582, 3600, 3618, 3636, 3654, 3672, 3690, 3708, 3726, 3744, 3762, 3780, 3798, 3816, 3834, 3852, 3870, 3888, 3906, 3924, 3942, 3960, 3978, 3996, 4014, 4032, 4050, 4068, 4086, 4104, 4122, 4140, 4158, 4176, 4194, 4212, 4230, 4248, 4266, 4284, 4302, 4320, 4338, 4356, 4374, 4392, 4410, 4428, 4446, 4464, 4482, 4500, 4518, 4536, 4554, 4572, 4590, 4608, 4626, 4644, 4662, 4680, 4698, 4716, 4734, 4752, 4770, 4788, 4806, 4824, 4842, 4860, 4878, 4896, 4914, 4932, 4950, 4968, 4986, 5004, 5022, 5040, 5058, 5076, 5094, 5112, 5130, 5148, 5166, 5184, 5202, 5220, 5238, 5256, 5274, 5292, 5310, 5328, 5346, 5364, 5382, 5400, 5418, 5436, 5454, 5472, 5490, 5508, 5526, 5544, 5562, 5580, 5598, 5616, 5634, 5652, 5670, 5688, 5706, 5724, 5742, 5760, 4758, 4776, 4794, 4812, 4830, 4848, 4866, 4884, 4902, 4920, 4938, 4956, 4974, 4992, 5010, 5028, 5046, 5064, 5082, 5100, 5118, 5136, 5154, 5172, 5190, 5208, 5226, 5244, 5262, 5280, 5298, 5316, 5334, 5352, 5370, 5388, 5406, 5424, 5442, 5460, 5478, 5496, 5514, 5532, 5550, 5568, 5586, 5604, 5622, 5640, 5658, 5676, 5694, 5712, 5730, 5748, 5766, 5784, 5802, 5820, 5838, 5856, 5874, 5892, 5910, 5928, 5946, 5964, 5982, 6000, 6018, 6036, 6054, 6072, 6090, 6108, 6126, 6144, 6162, 6180, 6198, 6216, 6234, 6252, 6270, 6288, 6306, 6324, 6342, 6360, 6378, 6396, 6414, 6432, 6450, 6468, 6, 24, 42, 60, 78, 96, 114, 132, 150, 168, 186, 204, 222, 240, 258, 276, 294, 312, 330, 348, 366, 384, 402, 420, 438, 456, 474, 492, 510, 528, 546, 564, 582, 600, 618, 636, 654, 672, 690, 708, 726, 744, 762, 780, 798, 816, 834, 852, 870, 888, 906, 924, 942, 960, 978, 996, 1014, 1032, 1050, 1068, 1086, 1104, 1122, 1140, 1158, 1176, 1194, 1212, 1230, 1248, 1266, 1284, 1302, 1320, 1338, 1356, 1374, 1392, 1410, 1428, 1446, 1464, 1482, 1500, 1518, 1536, 1554, 1572, 1590, 1608, 1626, 1644, 1662, 1680, 1698, 1716, 1734, 1752, 1770, 1788, 1806, 1824, 1842, 1860, 1878, 1896, 1914, 1932, 1950, 1968, 1986, 2004, 2022, 2040, 2058, 2076, 2094, 2112, 2130, 2148, 2166, 2184, 2202, 2220, 2238, 2256, 2274, 2292, 2310, 2328, 2346, 2364, 2382, 2400, 2418, 2436, 2454, 2472, 2490, 2508, 2526, 2544, 2562, 2580, 2598, 2616, 2634, 2652, 2670, 2688, 2706, 2724, 2742, 2760, 2778, 2796, 2814, 2832, 2850, 2868, 2886, 2904, 2922, 2940, 2958, 2976, 2994, 3012, 3030, 3048, 3066, 3084, 3102, 3120, 3138, 3156, 3174, 3192, 3210, 3228, 3246, 3264, 3282, 3300, 3318, 3336, 3354, 3372, 3390, 3408, 3426, 3444, 3462, 3480, 3498, 3516, 3534, 3552, 3570, 3588, 3606, 3624, 3642, 3660, 3678, 3696, 3714, 3732, 3750, 3768, 3786, 3804, 3822, 3840, 3858, 3876, 3894, 3912, 3930, 3948, 3966, 3984, 4002, 4020, 4038, 4056, 4074, 4092, 4110, 4128, 4146, 4164, 4182, 4200, 4218, 4236, 4254, 4272, 4290, 4308, 4326, 4344, 4362, 4380, 4398, 4416, 4434, 4452, 4470, 4488, 4506, 4524, 4542, 4560, 4578, 4596, 4614, 4632, 4650, 4668, 4686, 4704, 4722, 4740, 4475, 4493, 4511, 4529, 4547, 4565, 4583, 4601, 4619, 4637, 4655, 4673, 4691, 4709, 4727, 4745, 4763, 4781, 4799, 4817, 4835, 4853, 4871, 4889, 4907, 4925, 4943, 4961, 4979, 4997, 5015, 5033, 5051, 5069, 5087, 5105, 5123, 5141, 5159, 5177, 5195, 5213, 5231, 5249, 5267, 5285, 5303, 5321, 5339, 5357, 5375, 5393, 5411, 5429, 5447, 5465, 5483, 5501, 5519, 5537, 5555, 5573, 5591, 5609, 5627, 5645, 5663, 5681, 5699, 5717, 5735, 5753, 5771, 5789, 5807, 5825, 5843, 5861, 5879, 5897, 5915, 5933, 5951, 5969, 5987, 6005, 6023, 6041, 6059, 6077, 6095, 6113, 6131, 6149, 6167, 6185, 6203, 6221, 6239, 6257, 6275, 6293, 6311, 6329, 6347, 6365, 6383, 6401, 6419, 6437, 6455, 6473, 11, 29, 47, 65, 83, 101, 119, 137, 155, 173, 191, 209, 227, 245, 263, 281, 299, 317, 335, 353, 371, 389, 407, 425, 443, 461, 479, 497, 515, 533, 551, 569, 587, 605, 623, 641, 659, 677, 695, 713, 731, 749, 767, 785, 803, 821, 839, 857, 875, 893, 911, 929, 947, 965, 983, 1001, 1019, 1037, 1055, 1073, 1091, 1109, 1127, 1145, 1163, 1181, 1199, 1217, 1235, 1253, 1271, 1289, 1307, 1325, 1343, 1361, 1379, 1397, 1415, 1433, 1451, 1469, 1487, 1505, 1523, 1541, 1559, 1577, 1595, 1613, 1631, 1649, 1667, 1685, 1703, 1721, 1739, 1757, 1775, 1793, 1811, 1829, 1847, 1865, 1883, 1901, 1919, 1937, 1955, 1973, 1991, 2009, 2027, 2045, 2063, 2081, 2099, 2117, 2135, 2153, 2171, 2189, 2207, 2225, 2243, 2261, 2279, 2297, 2315, 2333, 2351, 2369, 2387, 2405, 2423, 2441, 2459, 2477, 2495, 2513, 2531, 2549, 2567, 2585, 2603, 2621, 2639, 2657, 2675, 2693, 2711, 2729, 2747, 2765, 2783, 2801, 2819, 2837, 2855, 2873, 2891, 2909, 2927, 2945, 2963, 2981, 2999, 3017, 3035, 3053, 3071, 3089, 3107, 3125, 3143, 3161, 3179, 3197, 3215, 3233, 3251, 3269, 3287, 3305, 3323, 3341, 3359, 3377, 3395, 3413, 3431, 3449, 3467, 3485, 3503, 3521, 3539, 3557, 3575, 3593, 3611, 3629, 3647, 3665, 3683, 3701, 3719, 3737, 3755, 3773, 3791, 3809, 3827, 3845, 3863, 3881, 3899, 3917, 3935, 3953, 3971, 3989, 4007, 4025, 4043, 4061, 4079, 4097, 4115, 4133, 4151, 4169, 4187, 4205, 4223, 4241, 4259, 4277, 4295, 4313, 4331, 4349, 4367, 4385, 4403, 4421, 4439, 4457, 5140, 5158, 5176, 5194, 5212, 5230, 5248, 5266, 5284, 5302, 5320, 5338, 5356, 5374, 5392, 5410, 5428, 5446, 5464, 5482, 5500, 5518, 5536, 5554, 5572, 5590, 5608, 5626, 5644, 5662, 5680, 5698, 5716, 5734, 5752, 5770, 5788, 5806, 5824, 5842, 5860, 5878, 5896, 5914, 5932, 5950, 5968, 5986, 6004, 6022, 6040, 6058, 6076, 6094, 6112, 6130, 6148, 6166, 6184, 6202, 6220, 6238, 6256, 6274, 6292, 6310, 6328, 6346, 6364, 6382, 6400, 6418, 6436, 6454, 6472, 10, 28, 46, 64, 82, 100, 118, 136, 154, 172, 190, 208, 226, 244, 262, 280, 298, 316, 334, 352, 370, 388, 406, 424, 442, 460, 478, 496, 514, 532, 550, 568, 586, 604, 622, 640, 658, 676, 694, 712, 730, 748, 766, 784, 802, 820, 838, 856, 874, 892, 910, 928, 946, 964, 982, 1000, 1018, 1036, 1054, 1072, 1090, 1108, 1126, 1144, 1162, 1180, 1198, 1216, 1234, 1252, 1270, 1288, 1306, 1324, 1342, 1360, 1378, 1396, 1414, 1432, 1450, 1468, 1486, 1504, 1522, 1540, 1558, 1576, 1594, 1612, 1630, 1648, 1666, 1684, 1702, 1720, 1738, 1756, 1774, 1792, 1810, 1828, 1846, 1864, 1882, 1900, 1918, 1936, 1954, 1972, 1990, 2008, 2026, 2044, 2062, 2080, 2098, 2116, 2134, 2152, 2170, 2188, 2206, 2224, 2242, 2260, 2278, 2296, 2314, 2332, 2350, 2368, 2386, 2404, 2422, 2440, 2458, 2476, 2494, 2512, 2530, 2548, 2566, 2584, 2602, 2620, 2638, 2656, 2674, 2692, 2710, 2728, 2746, 2764, 2782, 2800, 2818, 2836, 2854, 2872, 2890, 2908, 2926, 2944, 2962, 2980, 2998, 3016, 3034, 3052, 3070, 3088, 3106, 3124, 3142, 3160, 3178, 3196, 3214, 3232, 3250, 3268, 3286, 3304, 3322, 3340, 3358, 3376, 3394, 3412, 3430, 3448, 3466, 3484, 3502, 3520, 3538, 3556, 3574, 3592, 3610, 3628, 3646, 3664, 3682, 3700, 3718, 3736, 3754, 3772, 3790, 3808, 3826, 3844, 3862, 3880, 3898, 3916, 3934, 3952, 3970, 3988, 4006, 4024, 4042, 4060, 4078, 4096, 4114, 4132, 4150, 4168, 4186, 4204, 4222, 4240, 4258, 4276, 4294, 4312, 4330, 4348, 4366, 4384, 4402, 4420, 4438, 4456, 4474, 4492, 4510, 4528, 4546, 4564, 4582, 4600, 4618, 4636, 4654, 4672, 4690, 4708, 4726, 4744, 4762, 4780, 4798, 4816, 4834, 4852, 4870, 4888, 4906, 4924, 4942, 4960, 4978, 4996, 5014, 5032, 5050, 5068, 5086, 5104, 5122, 2907, 2925, 2943, 2961, 2979, 2997, 3015, 3033, 3051, 3069, 3087, 3105, 3123, 3141, 3159, 3177, 3195, 3213, 3231, 3249, 3267, 3285, 3303, 3321, 3339, 3357, 3375, 3393, 3411, 3429, 3447, 3465, 3483, 3501, 3519, 3537, 3555, 3573, 3591, 3609, 3627, 3645, 3663, 3681, 3699, 3717, 3735, 3753, 3771, 3789, 3807, 3825, 3843, 3861, 3879, 3897, 3915, 3933, 3951, 3969, 3987, 4005, 4023, 4041, 4059, 4077, 4095, 4113, 4131, 4149, 4167, 4185, 4203, 4221, 4239, 4257, 4275, 4293, 4311, 4329, 4347, 4365, 4383, 4401, 4419, 4437, 4455, 4473, 4491, 4509, 4527, 4545, 4563, 4581, 4599, 4617, 4635, 4653, 4671, 4689, 4707, 4725, 4743, 4761, 4779, 4797, 4815, 4833, 4851, 4869, 4887, 4905, 4923, 4941, 4959, 4977, 4995, 5013, 5031, 5049, 5067, 5085, 5103, 5121, 5139, 5157, 5175, 5193, 5211, 5229, 5247, 5265, 5283, 5301, 5319, 5337, 5355, 5373, 5391, 5409, 5427, 5445, 5463, 5481, 5499, 5517, 5535, 5553, 5571, 5589, 5607, 5625, 5643, 5661, 5679, 5697, 5715, 5733, 5751, 5769, 5787, 5805, 5823, 5841, 5859, 5877, 5895, 5913, 5931, 5949, 5967, 5985, 6003, 6021, 6039, 6057, 6075, 6093, 6111, 6129, 6147, 6165, 6183, 6201, 6219, 6237, 6255, 6273, 6291, 6309, 6327, 6345, 6363, 6381, 6399, 6417, 6435, 6453, 6471, 9, 27, 45, 63, 81, 99, 117, 135, 153, 171, 189, 207, 225, 243, 261, 279, 297, 315, 333, 351, 369, 387, 405, 423, 441, 459, 477, 495, 513, 531, 549, 567, 585, 603, 621, 639, 657, 675, 693, 711, 729, 747, 765, 783, 801, 819, 837, 855, 873, 891, 909, 927, 945, 963, 981, 999, 1017, 1035, 1053, 1071, 1089, 1107, 1125, 1143, 1161, 1179, 1197, 1215, 1233, 1251, 1269, 1287, 1305, 1323, 1341, 1359, 1377, 1395, 1413, 1431, 1449, 1467, 1485, 1503, 1521, 1539, 1557, 1575, 1593, 1611, 1629, 1647, 1665, 1683, 1701, 1719, 1737, 1755, 1773, 1791, 1809, 1827, 1845, 1863, 1881, 1899, 1917, 1935, 1953, 1971, 1989, 2007, 2025, 2043, 2061, 2079, 2097, 2115, 2133, 2151, 2169, 2187, 2205, 2223, 2241, 2259, 2277, 2295, 2313, 2331, 2349, 2367, 2385, 2403, 2421, 2439, 2457, 2475, 2493, 2511, 2529, 2547, 2565, 2583, 2601, 2619, 2637, 2655, 2673, 2691, 2709, 2727, 2745, 2763, 2781, 2799, 2817, 2835, 2853, 2871, 2889, 5416, 5434, 5452, 5470, 5488, 5506, 5524, 5542, 5560, 5578, 5596, 5614, 5632, 5650, 5668, 5686, 5704, 5722, 5740, 5758, 5776, 5794, 5812, 5830, 5848, 5866, 5884, 5902, 5920, 5938, 5956, 5974, 5992, 6010, 6028, 6046, 6064, 6082, 6100, 6118, 6136, 6154, 6172, 6190, 6208, 6226, 6244, 6262, 6280, 6298, 6316, 6334, 6352, 6370, 6388, 6406, 6424, 6442, 6460, 6478, 16, 34, 52, 70, 88, 106, 124, 142, 160, 178, 196, 214, 232, 250, 268, 286, 304, 322, 340, 358, 376, 394, 412, 430, 448, 466, 484, 502, 520, 538, 556, 574, 592, 610, 628, 646, 664, 682, 700, 718, 736, 754, 772, 790, 808, 826, 844, 862, 880, 898, 916, 934, 952, 970, 988, 1006, 1024, 1042, 1060, 1078, 1096, 1114, 1132, 1150, 1168, 1186, 1204, 1222, 1240, 1258, 1276, 1294, 1312, 1330, 1348, 1366, 1384, 1402, 1420, 1438, 1456, 1474, 1492, 1510, 1528, 1546, 1564, 1582, 1600, 1618, 1636, 1654, 1672, 1690, 1708, 1726, 1744, 1762, 1780, 1798, 1816, 1834, 1852, 1870, 1888, 1906, 1924, 1942, 1960, 1978, 1996, 2014, 2032, 2050, 2068, 2086, 2104, 2122, 2140, 2158, 2176, 2194, 2212, 2230, 2248, 2266, 2284, 2302, 2320, 2338, 2356, 2374, 2392, 2410, 2428, 2446, 2464, 2482, 2500, 2518, 2536, 2554, 2572, 2590, 2608, 2626, 2644, 2662, 2680, 2698, 2716, 2734, 2752, 2770, 2788, 2806, 2824, 2842, 2860, 2878, 2896, 2914, 2932, 2950, 2968, 2986, 3004, 3022, 3040, 3058, 3076, 3094, 3112, 3130, 3148, 3166, 3184, 3202, 3220, 3238, 3256, 3274, 3292, 3310, 3328, 3346, 3364, 3382, 3400, 3418, 3436, 3454, 3472, 3490, 3508, 3526, 3544, 3562, 3580, 3598, 3616, 3634, 3652, 3670, 3688, 3706, 3724, 3742, 3760, 3778, 3796, 3814, 3832, 3850, 3868, 3886, 3904, 3922, 3940, 3958, 3976, 3994, 4012, 4030, 4048, 4066, 4084, 4102, 4120, 4138, 4156, 4174, 4192, 4210, 4228, 4246, 4264, 4282, 4300, 4318, 4336, 4354, 4372, 4390, 4408, 4426, 4444, 4462, 4480, 4498, 4516, 4534, 4552, 4570, 4588, 4606, 4624, 4642, 4660, 4678, 4696, 4714, 4732, 4750, 4768, 4786, 4804, 4822, 4840, 4858, 4876, 4894, 4912, 4930, 4948, 4966, 4984, 5002, 5020, 5038, 5056, 5074, 5092, 5110, 5128, 5146, 5164, 5182, 5200, 5218, 5236, 5254, 5272, 5290, 5308, 5326, 5344, 5362, 5380, 5398, 4070, 4088, 4106, 4124, 4142, 4160, 4178, 4196, 4214, 4232, 4250, 4268, 4286, 4304, 4322, 4340, 4358, 4376, 4394, 4412, 4430, 4448, 4466, 4484, 4502, 4520, 4538, 4556, 4574, 4592, 4610, 4628, 4646, 4664, 4682, 4700, 4718, 4736, 4754, 4772, 4790, 4808, 4826, 4844, 4862, 4880, 4898, 4916, 4934, 4952, 4970, 4988, 5006, 5024, 5042, 5060, 5078, 5096, 5114, 5132, 5150, 5168, 5186, 5204, 5222, 5240, 5258, 5276, 5294, 5312, 5330, 5348, 5366, 5384, 5402, 5420, 5438, 5456, 5474, 5492, 5510, 5528, 5546, 5564, 5582, 5600, 5618, 5636, 5654, 5672, 5690, 5708, 5726, 5744, 5762, 5780, 5798, 5816, 5834, 5852, 5870, 5888, 5906, 5924, 5942, 5960, 5978, 5996, 6014, 6032, 6050, 6068, 6086, 6104, 6122, 6140, 6158, 6176, 6194, 6212, 6230, 6248, 6266, 6284, 6302, 6320, 6338, 6356, 6374, 6392, 6410, 6428, 6446, 6464, 2, 20, 38, 56, 74, 92, 110, 128, 146, 164, 182, 200, 218, 236, 254, 272, 290, 308, 326, 344, 362, 380, 398, 416, 434, 452, 470, 488, 506, 524, 542, 560, 578, 596, 614, 632, 650, 668, 686, 704, 722, 740, 758, 776, 794, 812, 830, 848, 866, 884, 902, 920, 938, 956, 974, 992, 1010, 1028, 1046, 1064, 1082, 1100, 1118, 1136, 1154, 1172, 1190, 1208, 1226, 1244, 1262, 1280, 1298, 1316, 1334, 1352, 1370, 1388, 1406, 1424, 1442, 1460, 1478, 1496, 1514, 1532, 1550, 1568, 1586, 1604, 1622, 1640, 1658, 1676, 1694, 1712, 1730, 1748, 1766, 1784, 1802, 1820, 1838, 1856, 1874, 1892, 1910, 1928, 1946, 1964, 1982, 2000, 2018, 2036, 2054, 2072, 2090, 2108, 2126, 2144, 2162, 2180, 2198, 2216, 2234, 2252, 2270, 2288, 2306, 2324, 2342, 2360, 2378, 2396, 2414, 2432, 2450, 2468, 2486, 2504, 2522, 2540, 2558, 2576, 2594, 2612, 2630, 2648, 2666, 2684, 2702, 2720, 2738, 2756, 2774, 2792, 2810, 2828, 2846, 2864, 2882, 2900, 2918, 2936, 2954, 2972, 2990, 3008, 3026, 3044, 3062, 3080, 3098, 3116, 3134, 3152, 3170, 3188, 3206, 3224, 3242, 3260, 3278, 3296, 3314, 3332, 3350, 3368, 3386, 3404, 3422, 3440, 3458, 3476, 3494, 3512, 3530, 3548, 3566, 3584, 3602, 3620, 3638, 3656, 3674, 3692, 3710, 3728, 3746, 3764, 3782, 3800, 3818, 3836, 3854, 3872, 3890, 3908, 3926, 3944, 3962, 3980, 3998, 4016, 4034, 4052, 2654, 2672, 2690, 2708, 2726, 2744, 2762, 2780, 2798, 2816, 2834, 2852, 2870, 2888, 2906, 2924, 2942, 2960, 2978, 2996, 3014, 3032, 3050, 3068, 3086, 3104, 3122, 3140, 3158, 3176, 3194, 3212, 3230, 3248, 3266, 3284, 3302, 3320, 3338, 3356, 3374, 3392, 3410, 3428, 3446, 3464, 3482, 3500, 3518, 3536, 3554, 3572, 3590, 3608, 3626, 3644, 3662, 3680, 3698, 3716, 3734, 3752, 3770, 3788, 3806, 3824, 3842, 3860, 3878, 3896, 3914, 3932, 3950, 3968, 3986, 4004, 4022, 4040, 4058, 4076, 4094, 4112, 4130, 4148, 4166, 4184, 4202, 4220, 4238, 4256, 4274, 4292, 4310, 4328, 4346, 4364, 4382, 4400, 4418, 4436, 4454, 4472, 4490, 4508, 4526, 4544, 4562, 4580, 4598, 4616, 4634, 4652, 4670, 4688, 4706, 4724, 4742, 4760, 4778, 4796, 4814, 4832, 4850, 4868, 4886, 4904, 4922, 4940, 4958, 4976, 4994, 5012, 5030, 5048, 5066, 5084, 5102, 5120, 5138, 5156, 5174, 5192, 5210, 5228, 5246, 5264, 5282, 5300, 5318, 5336, 5354, 5372, 5390, 5408, 5426, 5444, 5462, 5480, 5498, 5516, 5534, 5552, 5570, 5588, 5606, 5624, 5642, 5660, 5678, 5696, 5714, 5732, 5750, 5768, 5786, 5804, 5822, 5840, 5858, 5876, 5894, 5912, 5930, 5948, 5966, 5984, 6002, 6020, 6038, 6056, 6074, 6092, 6110, 6128, 6146, 6164, 6182, 6200, 6218, 6236, 6254, 6272, 6290, 6308, 6326, 6344, 6362, 6380, 6398, 6416, 6434, 6452, 6470, 8, 26, 44, 62, 80, 98, 116, 134, 152, 170, 188, 206, 224, 242, 260, 278, 296, 314, 332, 350, 368, 386, 404, 422, 440, 458, 476, 494, 512, 530, 548, 566, 584, 602, 620, 638, 656, 674, 692, 710, 728, 746, 764, 782, 800, 818, 836, 854, 872, 890, 908, 926, 944, 962, 980, 998, 1016, 1034, 1052, 1070, 1088, 1106, 1124, 1142, 1160, 1178, 1196, 1214, 1232, 1250, 1268, 1286, 1304, 1322, 1340, 1358, 1376, 1394, 1412, 1430, 1448, 1466, 1484, 1502, 1520, 1538, 1556, 1574, 1592, 1610, 1628, 1646, 1664, 1682, 1700, 1718, 1736, 1754, 1772, 1790, 1808, 1826, 1844, 1862, 1880, 1898, 1916, 1934, 1952, 1970, 1988, 2006, 2024, 2042, 2060, 2078, 2096, 2114, 2132, 2150, 2168, 2186, 2204, 2222, 2240, 2258, 2276, 2294, 2312, 2330, 2348, 2366, 2384, 2402, 2420, 2438, 2456, 2474, 2492, 2510, 2528, 2546, 2564, 2582, 2600, 2618, 2636, 1462, 1480, 1498, 1516, 1534, 1552, 1570, 1588, 1606, 1624, 1642, 1660, 1678, 1696, 1714, 1732, 1750, 1768, 1786, 1804, 1822, 1840, 1858, 1876, 1894, 1912, 1930, 1948, 1966, 1984, 2002, 2020, 2038, 2056, 2074, 2092, 2110, 2128, 2146, 2164, 2182, 2200, 2218, 2236, 2254, 2272, 2290, 2308, 2326, 2344, 2362, 2380, 2398, 2416, 2434, 2452, 2470, 2488, 2506, 2524, 2542, 2560, 2578, 2596, 2614, 2632, 2650, 2668, 2686, 2704, 2722, 2740, 2758, 2776, 2794, 2812, 2830, 2848, 2866, 2884, 2902, 2920, 2938, 2956, 2974, 2992, 3010, 3028, 3046, 3064, 3082, 3100, 3118, 3136, 3154, 3172, 3190, 3208, 3226, 3244, 3262, 3280, 3298, 3316, 3334, 3352, 3370, 3388, 3406, 3424, 3442, 3460, 3478, 3496, 3514, 3532, 3550, 3568, 3586, 3604, 3622, 3640, 3658, 3676, 3694, 3712, 3730, 3748, 3766, 3784, 3802, 3820, 3838, 3856, 3874, 3892, 3910, 3928, 3946, 3964, 3982, 4000, 4018, 4036, 4054, 4072, 4090, 4108, 4126, 4144, 4162, 4180, 4198, 4216, 4234, 4252, 4270, 4288, 4306, 4324, 4342, 4360, 4378, 4396, 4414, 4432, 4450, 4468, 4486, 4504, 4522, 4540, 4558, 4576, 4594, 4612, 4630, 4648, 4666, 4684, 4702, 4720, 4738, 4756, 4774, 4792, 4810, 4828, 4846, 4864, 4882, 4900, 4918, 4936, 4954, 4972, 4990, 5008, 5026, 5044, 5062, 5080, 5098, 5116, 5134, 5152, 5170, 5188, 5206, 5224, 5242, 5260, 5278, 5296, 5314, 5332, 5350, 5368, 5386, 5404, 5422, 5440, 5458, 5476, 5494, 5512, 5530, 5548, 5566, 5584, 5602, 5620, 5638, 5656, 5674, 5692, 5710, 5728, 5746, 5764, 5782, 5800, 5818, 5836, 5854, 5872, 5890, 5908, 5926, 5944, 5962, 5980, 5998, 6016, 6034, 6052, 6070, 6088, 6106, 6124, 6142, 6160, 6178, 6196, 6214, 6232, 6250, 6268, 6286, 6304, 6322, 6340, 6358, 6376, 6394, 6412, 6430, 6448, 6466, 4, 22, 40, 58, 76, 94, 112, 130, 148, 166, 184, 202, 220, 238, 256, 274, 292, 310, 328, 346, 364, 382, 400, 418, 436, 454, 472, 490, 508, 526, 544, 562, 580, 598, 616, 634, 652, 670, 688, 706, 724, 742, 760, 778, 796, 814, 832, 850, 868, 886, 904, 922, 940, 958, 976, 994, 1012, 1030, 1048, 1066, 1084, 1102, 1120, 1138, 1156, 1174, 1192, 1210, 1228, 1246, 1264, 1282, 1300, 1318, 1336, 1354, 1372, 1390, 1408, 1426, 1444, 3708, 3726, 3744, 3762, 3780, 3798, 3816, 3834, 3852, 3870, 3888, 3906, 3924, 3942, 3960, 3978, 3996, 4014, 4032, 4050, 4068, 4086, 4104, 4122, 4140, 4158, 4176, 4194, 4212, 4230, 4248, 4266, 4284, 4302, 4320, 4338, 4356, 4374, 4392, 4410, 4428, 4446, 4464, 4482, 4500, 4518, 4536, 4554, 4572, 4590, 4608, 4626, 4644, 4662, 4680, 4698, 4716, 4734, 4752, 4770, 4788, 4806, 4824, 4842, 4860, 4878, 4896, 4914, 4932, 4950, 4968, 4986, 5004, 5022, 5040, 5058, 5076, 5094, 5112, 5130, 5148, 5166, 5184, 5202, 5220, 5238, 5256, 5274, 5292, 5310, 5328, 5346, 5364, 5382, 5400, 5418, 5436, 5454, 5472, 5490, 5508, 5526, 5544, 5562, 5580, 5598, 5616, 5634, 5652, 5670, 5688, 5706, 5724, 5742, 5760, 5778, 5796, 5814, 5832, 5850, 5868, 5886, 5904, 5922, 5940, 5958, 5976, 5994, 6012, 6030, 6048, 6066, 6084, 6102, 6120, 6138, 6156, 6174, 6192, 6210, 6228, 6246, 6264, 6282, 6300, 6318, 6336, 6354, 6372, 6390, 6408, 6426, 6444, 6462, 6480, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198, 216, 234, 252, 270, 288, 306, 324, 342, 360, 378, 396, 414, 432, 450, 468, 486, 504, 522, 540, 558, 576, 594, 612, 630, 648, 666, 684, 702, 720, 738, 756, 774, 792, 810, 828, 846, 864, 882, 900, 918, 936, 954, 972, 990, 1008, 1026, 1044, 1062, 1080, 1098, 1116, 1134, 1152, 1170, 1188, 1206, 1224, 1242, 1260, 1278, 1296, 1314, 1332, 1350, 1368, 1386, 1404, 1422, 1440, 1458, 1476, 1494, 1512, 1530, 1548, 1566, 1584, 1602, 1620, 1638, 1656, 1674, 1692, 1710, 1728, 1746, 1764, 1782, 1800, 1818, 1836, 1854, 1872, 1890, 1908, 1926, 1944, 1962, 1980, 1998, 2016, 2034, 2052, 2070, 2088, 2106, 2124, 2142, 2160, 2178, 2196, 2214, 2232, 2250, 2268, 2286, 2304, 2322, 2340, 2358, 2376, 2394, 2412, 2430, 2448, 2466, 2484, 2502, 2520, 2538, 2556, 2574, 2592, 2610, 2628, 2646, 2664, 2682, 2700, 2718, 2736, 2754, 2772, 2790, 2808, 2826, 2844, 2862, 2880, 2898, 2916, 2934, 2952, 2970, 2988, 3006, 3024, 3042, 3060, 3078, 3096, 3114, 3132, 3150, 3168, 3186, 3204, 3222, 3240, 3258, 3276, 3294, 3312, 3330, 3348, 3366, 3384, 3402, 3420, 3438, 3456, 3474, 3492, 3510, 3528, 3546, 3564, 3582, 3600, 3618, 3636, 3654, 3672, 3690, 1058, 1076, 1094, 1112, 1130, 1148, 1166, 1184, 1202, 1220, 1238, 1256, 1274, 1292, 1310, 1328, 1346, 1364, 1382, 1400, 1418, 1436, 1454, 1472, 1490, 1508, 1526, 1544, 1562, 1580, 1598, 1616, 1634, 1652, 1670, 1688, 1706, 1724, 1742, 1760, 1778, 1796, 1814, 1832, 1850, 1868, 1886, 1904, 1922, 1940, 1958, 1976, 1994, 2012, 2030, 2048, 2066, 2084, 2102, 2120, 2138, 2156, 2174, 2192, 2210, 2228, 2246, 2264, 2282, 2300, 2318, 2336, 2354, 2372, 2390, 2408, 2426, 2444, 2462, 2480, 2498, 2516, 2534, 2552, 2570, 2588, 2606, 2624, 2642, 2660, 2678, 2696, 2714, 2732, 2750, 2768, 2786, 2804, 2822, 2840, 2858, 2876, 2894, 2912, 2930, 2948, 2966, 2984, 3002, 3020, 3038, 3056, 3074, 3092, 3110, 3128, 3146, 3164, 3182, 3200, 3218, 3236, 3254, 3272, 3290, 3308, 3326, 3344, 3362, 3380, 3398, 3416, 3434, 3452, 3470, 3488, 3506, 3524, 3542, 3560, 3578, 3596, 3614, 3632, 3650, 3668, 3686, 3704, 3722, 3740, 3758, 3776, 3794, 3812, 3830, 3848, 3866, 3884, 3902, 3920, 3938, 3956, 3974, 3992, 4010, 4028, 4046, 4064, 4082, 4100, 4118, 4136, 4154, 4172, 4190, 4208, 4226, 4244, 4262, 4280, 4298, 4316, 4334, 4352, 4370, 4388, 4406, 4424, 4442, 4460, 4478, 4496, 4514, 4532, 4550, 4568, 4586, 4604, 4622, 4640, 4658, 4676, 4694, 4712, 4730, 4748, 4766, 4784, 4802, 4820, 4838, 4856, 4874, 4892, 4910, 4928, 4946, 4964, 4982, 5000, 5018, 5036, 5054, 5072, 5090, 5108, 5126, 5144, 5162, 5180, 5198, 5216, 5234, 5252, 5270, 5288, 5306, 5324, 5342, 5360, 5378, 5396, 5414, 5432, 5450, 5468, 5486, 5504, 5522, 5540, 5558, 5576, 5594, 5612, 5630, 5648, 5666, 5684, 5702, 5720, 5738, 5756, 5774, 5792, 5810, 5828, 5846, 5864, 5882, 5900, 5918, 5936, 5954, 5972, 5990, 6008, 6026, 6044, 6062, 6080, 6098, 6116, 6134, 6152, 6170, 6188, 6206, 6224, 6242, 6260, 6278, 6296, 6314, 6332, 6350, 6368, 6386, 6404, 6422, 6440, 6458, 6476, 14, 32, 50, 68, 86, 104, 122, 140, 158, 176, 194, 212, 230, 248, 266, 284, 302, 320, 338, 356, 374, 392, 410, 428, 446, 464, 482, 500, 518, 536, 554, 572, 590, 608, 626, 644, 662, 680, 698, 716, 734, 752, 770, 788, 806, 824, 842, 860, 878, 896, 914, 932, 950, 968, 986, 1004, 1022, 1040, 6063, 6081, 6099, 6117, 6135, 6153, 6171, 6189, 6207, 6225, 6243, 6261, 6279, 6297, 6315, 6333, 6351, 6369, 6387, 6405, 6423, 6441, 6459, 6477, 15, 33, 51, 69, 87, 105, 123, 141, 159, 177, 195, 213, 231, 249, 267, 285, 303, 321, 339, 357, 375, 393, 411, 429, 447, 465, 483, 501, 519, 537, 555, 573, 591, 609, 627, 645, 663, 681, 699, 717, 735, 753, 771, 789, 807, 825, 843, 861, 879, 897, 915, 933, 951, 969, 987, 1005, 1023, 1041, 1059, 1077, 1095, 1113, 1131, 1149, 1167, 1185, 1203, 1221, 1239, 1257, 1275, 1293, 1311, 1329, 1347, 1365, 1383, 1401, 1419, 1437, 1455, 1473, 1491, 1509, 1527, 1545, 1563, 1581, 1599, 1617, 1635, 1653, 1671, 1689, 1707, 1725, 1743, 1761, 1779, 1797, 1815, 1833, 1851, 1869, 1887, 1905, 1923, 1941, 1959, 1977, 1995, 2013, 2031, 2049, 2067, 2085, 2103, 2121, 2139, 2157, 2175, 2193, 2211, 2229, 2247, 2265, 2283, 2301, 2319, 2337, 2355, 2373, 2391, 2409, 2427, 2445, 2463, 2481, 2499, 2517, 2535, 2553, 2571, 2589, 2607, 2625, 2643, 2661, 2679, 2697, 2715, 2733, 2751, 2769, 2787, 2805, 2823, 2841, 2859, 2877, 2895, 2913, 2931, 2949, 2967, 2985, 3003, 3021, 3039, 3057, 3075, 3093, 3111, 3129, 3147, 3165, 3183, 3201, 3219, 3237, 3255, 3273, 3291, 3309, 3327, 3345, 3363, 3381, 3399, 3417, 3435, 3453, 3471, 3489, 3507, 3525, 3543, 3561, 3579, 3597, 3615, 3633, 3651, 3669, 3687, 3705, 3723, 3741, 3759, 3777, 3795, 3813, 3831, 3849, 3867, 3885, 3903, 3921, 3939, 3957, 3975, 3993, 4011, 4029, 4047, 4065, 4083, 4101, 4119, 4137, 4155, 4173, 4191, 4209, 4227, 4245, 4263, 4281, 4299, 4317, 4335, 4353, 4371, 4389, 4407, 4425, 4443, 4461, 4479, 4497, 4515, 4533, 4551, 4569, 4587, 4605, 4623, 4641, 4659, 4677, 4695, 4713, 4731, 4749, 4767, 4785, 4803, 4821, 4839, 4857, 4875, 4893, 4911, 4929, 4947, 4965, 4983, 5001, 5019, 5037, 5055, 5073, 5091, 5109, 5127, 5145, 5163, 5181, 5199, 5217, 5235, 5253, 5271, 5289, 5307, 5325, 5343, 5361, 5379, 5397, 5415, 5433, 5451, 5469, 5487, 5505, 5523, 5541, 5559, 5577, 5595, 5613, 5631, 5649, 5667, 5685, 5703, 5721, 5739, 5757, 5775, 5793, 5811, 5829, 5847, 5865, 5883, 5901, 5919, 5937, 5955, 5973, 5991, 6009, 6027, 6045, 6029, 6047, 6065, 6083, 6101, 6119, 6137, 6155, 6173, 6191, 6209, 6227, 6245, 6263, 6281, 6299, 6317, 6335, 6353, 6371, 6389, 6407, 6425, 6443, 6461, 6479, 17, 35, 53, 71, 89, 107, 125, 143, 161, 179, 197, 215, 233, 251, 269, 287, 305, 323, 341, 359, 377, 395, 413, 431, 449, 467, 485, 503, 521, 539, 557, 575, 593, 611, 629, 647, 665, 683, 701, 719, 737, 755, 773, 791, 809, 827, 845, 863, 881, 899, 917, 935, 953, 971, 989, 1007, 1025, 1043, 1061, 1079, 1097, 1115, 1133, 1151, 1169, 1187, 1205, 1223, 1241, 1259, 1277, 1295, 1313, 1331, 1349, 1367, 1385, 1403, 1421, 1439, 1457, 1475, 1493, 1511, 1529, 1547, 1565, 1583, 1601, 1619, 1637, 1655, 1673, 1691, 1709, 1727, 1745, 1763, 1781, 1799, 1817, 1835, 1853, 1871, 1889, 1907, 1925, 1943, 1961, 1979, 1997, 2015, 2033, 2051, 2069, 2087, 2105, 2123, 2141, 2159, 2177, 2195, 2213, 2231, 2249, 2267, 2285, 2303, 2321, 2339, 2357, 2375, 2393, 2411, 2429, 2447, 2465, 2483, 2501, 2519, 2537, 2555, 2573, 2591, 2609, 2627, 2645, 2663, 2681, 2699, 2717, 2735, 2753, 2771, 2789, 2807, 2825, 2843, 2861, 2879, 2897, 2915, 2933, 2951, 2969, 2987, 3005, 3023, 3041, 3059, 3077, 3095, 3113, 3131, 3149, 3167, 3185, 3203, 3221, 3239, 3257, 3275, 3293, 3311, 3329, 3347, 3365, 3383, 3401, 3419, 3437, 3455, 3473, 3491, 3509, 3527, 3545, 3563, 3581, 3599, 3617, 3635, 3653, 3671, 3689, 3707, 3725, 3743, 3761, 3779, 3797, 3815, 3833, 3851, 3869, 3887, 3905, 3923, 3941, 3959, 3977, 3995, 4013, 4031, 4049, 4067, 4085, 4103, 4121, 4139, 4157, 4175, 4193, 4211, 4229, 4247, 4265, 4283, 4301, 4319, 4337, 4355, 4373, 4391, 4409, 4427, 4445, 4463, 4481, 4499, 4517, 4535, 4553, 4571, 4589, 4607, 4625, 4643, 4661, 4679, 4697, 4715, 4733, 4751, 4769, 4787, 4805, 4823, 4841, 4859, 4877, 4895, 4913, 4931, 4949, 4967, 4985, 5003, 5021, 5039, 5057, 5075, 5093, 5111, 5129, 5147, 5165, 5183, 5201, 5219, 5237, 5255, 5273, 5291, 5309, 5327, 5345, 5363, 5381, 5399, 5417, 5435, 5453, 5471, 5489, 5507, 5525, 5543, 5561, 5579, 5597, 5615, 5633, 5651, 5669, 5687, 5705, 5723, 5741, 5759, 5777, 5795, 5813, 5831, 5849, 5867, 5885, 5903, 5921, 5939, 5957, 5975, 5993, 6011, 1937, 1955, 1973, 1991, 2009, 2027, 2045, 2063, 2081, 2099, 2117, 2135, 2153, 2171, 2189, 2207, 2225, 2243, 2261, 2279, 2297, 2315, 2333, 2351, 2369, 2387, 2405, 2423, 2441, 2459, 2477, 2495, 2513, 2531, 2549, 2567, 2585, 2603, 2621, 2639, 2657, 2675, 2693, 2711, 2729, 2747, 2765, 2783, 2801, 2819, 2837, 2855, 2873, 2891, 2909, 2927, 2945, 2963, 2981, 2999, 3017, 3035, 3053, 3071, 3089, 3107, 3125, 3143, 3161, 3179, 3197, 3215, 3233, 3251, 3269, 3287, 3305, 3323, 3341, 3359, 3377, 3395, 3413, 3431, 3449, 3467, 3485, 3503, 3521, 3539, 3557, 3575, 3593, 3611, 3629, 3647, 3665, 3683, 3701, 3719, 3737, 3755, 3773, 3791, 3809, 3827, 3845, 3863, 3881, 3899, 3917, 3935, 3953, 3971, 3989, 4007, 4025, 4043, 4061, 4079, 4097, 4115, 4133, 4151, 4169, 4187, 4205, 4223, 4241, 4259, 4277, 4295, 4313, 4331, 4349, 4367, 4385, 4403, 4421, 4439, 4457, 4475, 4493, 4511, 4529, 4547, 4565, 4583, 4601, 4619, 4637, 4655, 4673, 4691, 4709, 4727, 4745, 4763, 4781, 4799, 4817, 4835, 4853, 4871, 4889, 4907, 4925, 4943, 4961, 4979, 4997, 5015, 5033, 5051, 5069, 5087, 5105, 5123, 5141, 5159, 5177, 5195, 5213, 5231, 5249, 5267, 5285, 5303, 5321, 5339, 5357, 5375, 5393, 5411, 5429, 5447, 5465, 5483, 5501, 5519, 5537, 5555, 5573, 5591, 5609, 5627, 5645, 5663, 5681, 5699, 5717, 5735, 5753, 5771, 5789, 5807, 5825, 5843, 5861, 5879, 5897, 5915, 5933, 5951, 5969, 5987, 6005, 6023, 6041, 6059, 6077, 6095, 6113, 6131, 6149, 6167, 6185, 6203, 6221, 6239, 6257, 6275, 6293, 6311, 6329, 6347, 6365, 6383, 6401, 6419, 6437, 6455, 6473, 11, 29, 47, 65, 83, 101, 119, 137, 155, 173, 191, 209, 227, 245, 263, 281, 299, 317, 335, 353, 371, 389, 407, 425, 443, 461, 479, 497, 515, 533, 551, 569, 587, 605, 623, 641, 659, 677, 695, 713, 731, 749, 767, 785, 803, 821, 839, 857, 875, 893, 911, 929, 947, 965, 983, 1001, 1019, 1037, 1055, 1073, 1091, 1109, 1127, 1145, 1163, 1181, 1199, 1217, 1235, 1253, 1271, 1289, 1307, 1325, 1343, 1361, 1379, 1397, 1415, 1433, 1451, 1469, 1487, 1505, 1523, 1541, 1559, 1577, 1595, 1613, 1631, 1649, 1667, 1685, 1703, 1721, 1739, 1757, 1775, 1793, 1811, 1829, 1847, 1865, 1883, 1901, 1919, 957, 975, 993, 1011, 1029, 1047, 1065, 1083, 1101, 1119, 1137, 1155, 1173, 1191, 1209, 1227, 1245, 1263, 1281, 1299, 1317, 1335, 1353, 1371, 1389, 1407, 1425, 1443, 1461, 1479, 1497, 1515, 1533, 1551, 1569, 1587, 1605, 1623, 1641, 1659, 1677, 1695, 1713, 1731, 1749, 1767, 1785, 1803, 1821, 1839, 1857, 1875, 1893, 1911, 1929, 1947, 1965, 1983, 2001, 2019, 2037, 2055, 2073, 2091, 2109, 2127, 2145, 2163, 2181, 2199, 2217, 2235, 2253, 2271, 2289, 2307, 2325, 2343, 2361, 2379, 2397, 2415, 2433, 2451, 2469, 2487, 2505, 2523, 2541, 2559, 2577, 2595, 2613, 2631, 2649, 2667, 2685, 2703, 2721, 2739, 2757, 2775, 2793, 2811, 2829, 2847, 2865, 2883, 2901, 2919, 2937, 2955, 2973, 2991, 3009, 3027, 3045, 3063, 3081, 3099, 3117, 3135, 3153, 3171, 3189, 3207, 3225, 3243, 3261, 3279, 3297, 3315, 3333, 3351, 3369, 3387, 3405, 3423, 3441, 3459, 3477, 3495, 3513, 3531, 3549, 3567, 3585, 3603, 3621, 3639, 3657, 3675, 3693, 3711, 3729, 3747, 3765, 3783, 3801, 3819, 3837, 3855, 3873, 3891, 3909, 3927, 3945, 3963, 3981, 3999, 4017, 4035, 4053, 4071, 4089, 4107, 4125, 4143, 4161, 4179, 4197, 4215, 4233, 4251, 4269, 4287, 4305, 4323, 4341, 4359, 4377, 4395, 4413, 4431, 4449, 4467, 4485, 4503, 4521, 4539, 4557, 4575, 4593, 4611, 4629, 4647, 4665, 4683, 4701, 4719, 4737, 4755, 4773, 4791, 4809, 4827, 4845, 4863, 4881, 4899, 4917, 4935, 4953, 4971, 4989, 5007, 5025, 5043, 5061, 5079, 5097, 5115, 5133, 5151, 5169, 5187, 5205, 5223, 5241, 5259, 5277, 5295, 5313, 5331, 5349, 5367, 5385, 5403, 5421, 5439, 5457, 5475, 5493, 5511, 5529, 5547, 5565, 5583, 5601, 5619, 5637, 5655, 5673, 5691, 5709, 5727, 5745, 5763, 5781, 5799, 5817, 5835, 5853, 5871, 5889, 5907, 5925, 5943, 5961, 5979, 5997, 6015, 6033, 6051, 6069, 6087, 6105, 6123, 6141, 6159, 6177, 6195, 6213, 6231, 6249, 6267, 6285, 6303, 6321, 6339, 6357, 6375, 6393, 6411, 6429, 6447, 6465, 3, 21, 39, 57, 75, 93, 111, 129, 147, 165, 183, 201, 219, 237, 255, 273, 291, 309, 327, 345, 363, 381, 399, 417, 435, 453, 471, 489, 507, 525, 543, 561, 579, 597, 615, 633, 651, 669, 687, 705, 723, 741, 759, 777, 795, 813, 831, 849, 867, 885, 903, 921, 939, 3418, 3436, 3454, 3472, 3490, 3508, 3526, 3544, 3562, 3580, 3598, 3616, 3634, 3652, 3670, 3688, 3706, 3724, 3742, 3760, 3778, 3796, 3814, 3832, 3850, 3868, 3886, 3904, 3922, 3940, 3958, 3976, 3994, 4012, 4030, 4048, 4066, 4084, 4102, 4120, 4138, 4156, 4174, 4192, 4210, 4228, 4246, 4264, 4282, 4300, 4318, 4336, 4354, 4372, 4390, 4408, 4426, 4444, 4462, 4480, 4498, 4516, 4534, 4552, 4570, 4588, 4606, 4624, 4642, 4660, 4678, 4696, 4714, 4732, 4750, 4768, 4786, 4804, 4822, 4840, 4858, 4876, 4894, 4912, 4930, 4948, 4966, 4984, 5002, 5020, 5038, 5056, 5074, 5092, 5110, 5128, 5146, 5164, 5182, 5200, 5218, 5236, 5254, 5272, 5290, 5308, 5326, 5344, 5362, 5380, 5398, 5416, 5434, 5452, 5470, 5488, 5506, 5524, 5542, 5560, 5578, 5596, 5614, 5632, 5650, 5668, 5686, 5704, 5722, 5740, 5758, 5776, 5794, 5812, 5830, 5848, 5866, 5884, 5902, 5920, 5938, 5956, 5974, 5992, 6010, 6028, 6046, 6064, 6082, 6100, 6118, 6136, 6154, 6172, 6190, 6208, 6226, 6244, 6262, 6280, 6298, 6316, 6334, 6352, 6370, 6388, 6406, 6424, 6442, 6460, 6478, 16, 34, 52, 70, 88, 106, 124, 142, 160, 178, 196, 214, 232, 250, 268, 286, 304, 322, 340, 358, 376, 394, 412, 430, 448, 466, 484, 502, 520, 538, 556, 574, 592, 610, 628, 646, 664, 682, 700, 718, 736, 754, 772, 790, 808, 826, 844, 862, 880, 898, 916, 934, 952, 970, 988, 1006, 1024, 1042, 1060, 1078, 1096, 1114, 1132, 1150, 1168, 1186, 1204, 1222, 1240, 1258, 1276, 1294, 1312, 1330, 1348, 1366, 1384, 1402, 1420, 1438, 1456, 1474, 1492, 1510, 1528, 1546, 1564, 1582, 1600, 1618, 1636, 1654, 1672, 1690, 1708, 1726, 1744, 1762, 1780, 1798, 1816, 1834, 1852, 1870, 1888, 1906, 1924, 1942, 1960, 1978, 1996, 2014, 2032, 2050, 2068, 2086, 2104, 2122, 2140, 2158, 2176, 2194, 2212, 2230, 2248, 2266, 2284, 2302, 2320, 2338, 2356, 2374, 2392, 2410, 2428, 2446, 2464, 2482, 2500, 2518, 2536, 2554, 2572, 2590, 2608, 2626, 2644, 2662, 2680, 2698, 2716, 2734, 2752, 2770, 2788, 2806, 2824, 2842, 2860, 2878, 2896, 2914, 2932, 2950, 2968, 2986, 3004, 3022, 3040, 3058, 3076, 3094, 3112, 3130, 3148, 3166, 3184, 3202, 3220, 3238, 3256, 3274, 3292, 3310, 3328, 3346, 3364, 3382, 3400, 4879, 4897, 4915, 4933, 4951, 4969, 4987, 5005, 5023, 5041, 5059, 5077, 5095, 5113, 5131, 5149, 5167, 5185, 5203, 5221, 5239, 5257, 5275, 5293, 5311, 5329, 5347, 5365, 5383, 5401, 5419, 5437, 5455, 5473, 5491, 5509, 5527, 5545, 5563, 5581, 5599, 5617, 5635, 5653, 5671, 5689, 5707, 5725, 5743, 5761, 5779, 5797, 5815, 5833, 5851, 5869, 5887, 5905, 5923, 5941, 5959, 5977, 5995, 6013, 6031, 6049, 6067, 6085, 6103, 6121, 6139, 6157, 6175, 6193, 6211, 6229, 6247, 6265, 6283, 6301, 6319, 6337, 6355, 6373, 6391, 6409, 6427, 6445, 6463, 1, 19, 37, 55, 73, 91, 109, 127, 145, 163, 181, 199, 217, 235, 253, 271, 289, 307, 325, 343, 361, 379, 397, 415, 433, 451, 469, 487, 505, 523, 541, 559, 577, 595, 613, 631, 649, 667, 685, 703, 721, 739, 757, 775, 793, 811, 829, 847, 865, 883, 901, 919, 937, 955, 973, 991, 1009, 1027, 1045, 1063, 1081, 1099, 1117, 1135, 1153, 1171, 1189, 1207, 1225, 1243, 1261, 1279, 1297, 1315, 1333, 1351, 1369, 1387, 1405, 1423, 1441, 1459, 1477, 1495, 1513, 1531, 1549, 1567, 1585, 1603, 1621, 1639, 1657, 1675, 1693, 1711, 1729, 1747, 1765, 1783, 1801, 1819, 1837, 1855, 1873, 1891, 1909, 1927, 1945, 1963, 1981, 1999, 2017, 2035, 2053, 2071, 2089, 2107, 2125, 2143, 2161, 2179, 2197, 2215, 2233, 2251, 2269, 2287, 2305, 2323, 2341, 2359, 2377, 2395, 2413, 2431, 2449, 2467, 2485, 2503, 2521, 2539, 2557, 2575, 2593, 2611, 2629, 2647, 2665, 2683, 2701, 2719, 2737, 2755, 2773, 2791, 2809, 2827, 2845, 2863, 2881, 2899, 2917, 2935, 2953, 2971, 2989, 3007, 3025, 3043, 3061, 3079, 3097, 3115, 3133, 3151, 3169, 3187, 3205, 3223, 3241, 3259, 3277, 3295, 3313, 3331, 3349, 3367, 3385, 3403, 3421, 3439, 3457, 3475, 3493, 3511, 3529, 3547, 3565, 3583, 3601, 3619, 3637, 3655, 3673, 3691, 3709, 3727, 3745, 3763, 3781, 3799, 3817, 3835, 3853, 3871, 3889, 3907, 3925, 3943, 3961, 3979, 3997, 4015, 4033, 4051, 4069, 4087, 4105, 4123, 4141, 4159, 4177, 4195, 4213, 4231, 4249, 4267, 4285, 4303, 4321, 4339, 4357, 4375, 4393, 4411, 4429, 4447, 4465, 4483, 4501, 4519, 4537, 4555, 4573, 4591, 4609, 4627, 4645, 4663, 4681, 4699, 4717, 4735, 4753, 4771, 4789, 4807, 4825, 4843, 4861, 3248, 3266, 3284, 3302, 3320, 3338, 3356, 3374, 3392, 3410, 3428, 3446, 3464, 3482, 3500, 3518, 3536, 3554, 3572, 3590, 3608, 3626, 3644, 3662, 3680, 3698, 3716, 3734, 3752, 3770, 3788, 3806, 3824, 3842, 3860, 3878, 3896, 3914, 3932, 3950, 3968, 3986, 4004, 4022, 4040, 4058, 4076, 4094, 4112, 4130, 4148, 4166, 4184, 4202, 4220, 4238, 4256, 4274, 4292, 4310, 4328, 4346, 4364, 4382, 4400, 4418, 4436, 4454, 4472, 4490, 4508, 4526, 4544, 4562, 4580, 4598, 4616, 4634, 4652, 4670, 4688, 4706, 4724, 4742, 4760, 4778, 4796, 4814, 4832, 4850, 4868, 4886, 4904, 4922, 4940, 4958, 4976, 4994, 5012, 5030, 5048, 5066, 5084, 5102, 5120, 5138, 5156, 5174, 5192, 5210, 5228, 5246, 5264, 5282, 5300, 5318, 5336, 5354, 5372, 5390, 5408, 5426, 5444, 5462, 5480, 5498, 5516, 5534, 5552, 5570, 5588, 5606, 5624, 5642, 5660, 5678, 5696, 5714, 5732, 5750, 5768, 5786, 5804, 5822, 5840, 5858, 5876, 5894, 5912, 5930, 5948, 5966, 5984, 6002, 6020, 6038, 6056, 6074, 6092, 6110, 6128, 6146, 6164, 6182, 6200, 6218, 6236, 6254, 6272, 6290, 6308, 6326, 6344, 6362, 6380, 6398, 6416, 6434, 6452, 6470, 8, 26, 44, 62, 80, 98, 116, 134, 152, 170, 188, 206, 224, 242, 260, 278, 296, 314, 332, 350, 368, 386, 404, 422, 440, 458, 476, 494, 512, 530, 548, 566, 584, 602, 620, 638, 656, 674, 692, 710, 728, 746, 764, 782, 800, 818, 836, 854, 872, 890, 908, 926, 944, 962, 980, 998, 1016, 1034, 1052, 1070, 1088, 1106, 1124, 1142, 1160, 1178, 1196, 1214, 1232, 1250, 1268, 1286, 1304, 1322, 1340, 1358, 1376, 1394, 1412, 1430, 1448, 1466, 1484, 1502, 1520, 1538, 1556, 1574, 1592, 1610, 1628, 1646, 1664, 1682, 1700, 1718, 1736, 1754, 1772, 1790, 1808, 1826, 1844, 1862, 1880, 1898, 1916, 1934, 1952, 1970, 1988, 2006, 2024, 2042, 2060, 2078, 2096, 2114, 2132, 2150, 2168, 2186, 2204, 2222, 2240, 2258, 2276, 2294, 2312, 2330, 2348, 2366, 2384, 2402, 2420, 2438, 2456, 2474, 2492, 2510, 2528, 2546, 2564, 2582, 2600, 2618, 2636, 2654, 2672, 2690, 2708, 2726, 2744, 2762, 2780, 2798, 2816, 2834, 2852, 2870, 2888, 2906, 2924, 2942, 2960, 2978, 2996, 3014, 3032, 3050, 3068, 3086, 3104, 3122, 3140, 3158, 3176, 3194, 3212, 3230, 3938, 3956, 3974, 3992, 4010, 4028, 4046, 4064, 4082, 4100, 4118, 4136, 4154, 4172, 4190, 4208, 4226, 4244, 4262, 4280, 4298, 4316, 4334, 4352, 4370, 4388, 4406, 4424, 4442, 4460, 4478, 4496, 4514, 4532, 4550, 4568, 4586, 4604, 4622, 4640, 4658, 4676, 4694, 4712, 4730, 4748, 4766, 4784, 4802, 4820, 4838, 4856, 4874, 4892, 4910, 4928, 4946, 4964, 4982, 5000, 5018, 5036, 5054, 5072, 5090, 5108, 5126, 5144, 5162, 5180, 5198, 5216, 5234, 5252, 5270, 5288, 5306, 5324, 5342, 5360, 5378, 5396, 5414, 5432, 5450, 5468, 5486, 5504, 5522, 5540, 5558, 5576, 5594, 5612, 5630, 5648, 5666, 5684, 5702, 5720, 5738, 5756, 5774, 5792, 5810, 5828, 5846, 5864, 5882, 5900, 5918, 5936, 5954, 5972, 5990, 6008, 6026, 6044, 6062, 6080, 6098, 6116, 6134, 6152, 6170, 6188, 6206, 6224, 6242, 6260, 6278, 6296, 6314, 6332, 6350, 6368, 6386, 6404, 6422, 6440, 6458, 6476, 14, 32, 50, 68, 86, 104, 122, 140, 158, 176, 194, 212, 230, 248, 266, 284, 302, 320, 338, 356, 374, 392, 410, 428, 446, 464, 482, 500, 518, 536, 554, 572, 590, 608, 626, 644, 662, 680, 698, 716, 734, 752, 770, 788, 806, 824, 842, 860, 878, 896, 914, 932, 950, 968, 986, 1004, 1022, 1040, 1058, 1076, 1094, 1112, 1130, 1148, 1166, 1184, 1202, 1220, 1238, 1256, 1274, 1292, 1310, 1328, 1346, 1364, 1382, 1400, 1418, 1436, 1454, 1472, 1490, 1508, 1526, 1544, 1562, 1580, 1598, 1616, 1634, 1652, 1670, 1688, 1706, 1724, 1742, 1760, 1778, 1796, 1814, 1832, 1850, 1868, 1886, 1904, 1922, 1940, 1958, 1976, 1994, 2012, 2030, 2048, 2066, 2084, 2102, 2120, 2138, 2156, 2174, 2192, 2210, 2228, 2246, 2264, 2282, 2300, 2318, 2336, 2354, 2372, 2390, 2408, 2426, 2444, 2462, 2480, 2498, 2516, 2534, 2552, 2570, 2588, 2606, 2624, 2642, 2660, 2678, 2696, 2714, 2732, 2750, 2768, 2786, 2804, 2822, 2840, 2858, 2876, 2894, 2912, 2930, 2948, 2966, 2984, 3002, 3020, 3038, 3056, 3074, 3092, 3110, 3128, 3146, 3164, 3182, 3200, 3218, 3236, 3254, 3272, 3290, 3308, 3326, 3344, 3362, 3380, 3398, 3416, 3434, 3452, 3470, 3488, 3506, 3524, 3542, 3560, 3578, 3596, 3614, 3632, 3650, 3668, 3686, 3704, 3722, 3740, 3758, 3776, 3794, 3812, 3830, 3848, 3866, 3884, 3902, 3920, 2904, 2922, 2940, 2958, 2976, 2994, 3012, 3030, 3048, 3066, 3084, 3102, 3120, 3138, 3156, 3174, 3192, 3210, 3228, 3246, 3264, 3282, 3300, 3318, 3336, 3354, 3372, 3390, 3408, 3426, 3444, 3462, 3480, 3498, 3516, 3534, 3552, 3570, 3588, 3606, 3624, 3642, 3660, 3678, 3696, 3714, 3732, 3750, 3768, 3786, 3804, 3822, 3840, 3858, 3876, 3894, 3912, 3930, 3948, 3966, 3984, 4002, 4020, 4038, 4056, 4074, 4092, 4110, 4128, 4146, 4164, 4182, 4200, 4218, 4236, 4254, 4272, 4290, 4308, 4326, 4344, 4362, 4380, 4398, 4416, 4434, 4452, 4470, 4488, 4506, 4524, 4542, 4560, 4578, 4596, 4614, 4632, 4650, 4668, 4686, 4704, 4722, 4740, 4758, 4776, 4794, 4812, 4830, 4848, 4866, 4884, 4902, 4920, 4938, 4956, 4974, 4992, 5010, 5028, 5046, 5064, 5082, 5100, 5118, 5136, 5154, 5172, 5190, 5208, 5226, 5244, 5262, 5280, 5298, 5316, 5334, 5352, 5370, 5388, 5406, 5424, 5442, 5460, 5478, 5496, 5514, 5532, 5550, 5568, 5586, 5604, 5622, 5640, 5658, 5676, 5694, 5712, 5730, 5748, 5766, 5784, 5802, 5820, 5838, 5856, 5874, 5892, 5910, 5928, 5946, 5964, 5982, 6000, 6018, 6036, 6054, 6072, 6090, 6108, 6126, 6144, 6162, 6180, 6198, 6216, 6234, 6252, 6270, 6288, 6306, 6324, 6342, 6360, 6378, 6396, 6414, 6432, 6450, 6468, 6, 24, 42, 60, 78, 96, 114, 132, 150, 168, 186, 204, 222, 240, 258, 276, 294, 312, 330, 348, 366, 384, 402, 420, 438, 456, 474, 492, 510, 528, 546, 564, 582, 600, 618, 636, 654, 672, 690, 708, 726, 744, 762, 780, 798, 816, 834, 852, 870, 888, 906, 924, 942, 960, 978, 996, 1014, 1032, 1050, 1068, 1086, 1104, 1122, 1140, 1158, 1176, 1194, 1212, 1230, 1248, 1266, 1284, 1302, 1320, 1338, 1356, 1374, 1392, 1410, 1428, 1446, 1464, 1482, 1500, 1518, 1536, 1554, 1572, 1590, 1608, 1626, 1644, 1662, 1680, 1698, 1716, 1734, 1752, 1770, 1788, 1806, 1824, 1842, 1860, 1878, 1896, 1914, 1932, 1950, 1968, 1986, 2004, 2022, 2040, 2058, 2076, 2094, 2112, 2130, 2148, 2166, 2184, 2202, 2220, 2238, 2256, 2274, 2292, 2310, 2328, 2346, 2364, 2382, 2400, 2418, 2436, 2454, 2472, 2490, 2508, 2526, 2544, 2562, 2580, 2598, 2616, 2634, 2652, 2670, 2688, 2706, 2724, 2742, 2760, 2778, 2796, 2814, 2832, 2850, 2868, 2886, 4216, 4234, 4252, 4270, 4288, 4306, 4324, 4342, 4360, 4378, 4396, 4414, 4432, 4450, 4468, 4486, 4504, 4522, 4540, 4558, 4576, 4594, 4612, 4630, 4648, 4666, 4684, 4702, 4720, 4738, 4756, 4774, 4792, 4810, 4828, 4846, 4864, 4882, 4900, 4918, 4936, 4954, 4972, 4990, 5008, 5026, 5044, 5062, 5080, 5098, 5116, 5134, 5152, 5170, 5188, 5206, 5224, 5242, 5260, 5278, 5296, 5314, 5332, 5350, 5368, 5386, 5404, 5422, 5440, 5458, 5476, 5494, 5512, 5530, 5548, 5566, 5584, 5602, 5620, 5638, 5656, 5674, 5692, 5710, 5728, 5746, 5764, 5782, 5800, 5818, 5836, 5854, 5872, 5890, 5908, 5926, 5944, 5962, 5980, 5998, 6016, 6034, 6052, 6070, 6088, 6106, 6124, 6142, 6160, 6178, 6196, 6214, 6232, 6250, 6268, 6286, 6304, 6322, 6340, 6358, 6376, 6394, 6412, 6430, 6448, 6466, 4, 22, 40, 58, 76, 94, 112, 130, 148, 166, 184, 202, 220, 238, 256, 274, 292, 310, 328, 346, 364, 382, 400, 418, 436, 454, 472, 490, 508, 526, 544, 562, 580, 598, 616, 634, 652, 670, 688, 706, 724, 742, 760, 778, 796, 814, 832, 850, 868, 886, 904, 922, 940, 958, 976, 994, 1012, 1030, 1048, 1066, 1084, 1102, 1120, 1138, 1156, 1174, 1192, 1210, 1228, 1246, 1264, 1282, 1300, 1318, 1336, 1354, 1372, 1390, 1408, 1426, 1444, 1462, 1480, 1498, 1516, 1534, 1552, 1570, 1588, 1606, 1624, 1642, 1660, 1678, 1696, 1714, 1732, 1750, 1768, 1786, 1804, 1822, 1840, 1858, 1876, 1894, 1912, 1930, 1948, 1966, 1984, 2002, 2020, 2038, 2056, 2074, 2092, 2110, 2128, 2146, 2164, 2182, 2200, 2218, 2236, 2254, 2272, 2290, 2308, 2326, 2344, 2362, 2380, 2398, 2416, 2434, 2452, 2470, 2488, 2506, 2524, 2542, 2560, 2578, 2596, 2614, 2632, 2650, 2668, 2686, 2704, 2722, 2740, 2758, 2776, 2794, 2812, 2830, 2848, 2866, 2884, 2902, 2920, 2938, 2956, 2974, 2992, 3010, 3028, 3046, 3064, 3082, 3100, 3118, 3136, 3154, 3172, 3190, 3208, 3226, 3244, 3262, 3280, 3298, 3316, 3334, 3352, 3370, 3388, 3406, 3424, 3442, 3460, 3478, 3496, 3514, 3532, 3550, 3568, 3586, 3604, 3622, 3640, 3658, 3676, 3694, 3712, 3730, 3748, 3766, 3784, 3802, 3820, 3838, 3856, 3874, 3892, 3910, 3928, 3946, 3964, 3982, 4000, 4018, 4036, 4054, 4072, 4090, 4108, 4126, 4144, 4162, 4180, 4198, 4708, 4726, 4744, 4762, 4780, 4798, 4816, 4834, 4852, 4870, 4888, 4906, 4924, 4942, 4960, 4978, 4996, 5014, 5032, 5050, 5068, 5086, 5104, 5122, 5140, 5158, 5176, 5194, 5212, 5230, 5248, 5266, 5284, 5302, 5320, 5338, 5356, 5374, 5392, 5410, 5428, 5446, 5464, 5482, 5500, 5518, 5536, 5554, 5572, 5590, 5608, 5626, 5644, 5662, 5680, 5698, 5716, 5734, 5752, 5770, 5788, 5806, 5824, 5842, 5860, 5878, 5896, 5914, 5932, 5950, 5968, 5986, 6004, 6022, 6040, 6058, 6076, 6094, 6112, 6130, 6148, 6166, 6184, 6202, 6220, 6238, 6256, 6274, 6292, 6310, 6328, 6346, 6364, 6382, 6400, 6418, 6436, 6454, 6472, 10, 28, 46, 64, 82, 100, 118, 136, 154, 172, 190, 208, 226, 244, 262, 280, 298, 316, 334, 352, 370, 388, 406, 424, 442, 460, 478, 496, 514, 532, 550, 568, 586, 604, 622, 640, 658, 676, 694, 712, 730, 748, 766, 784, 802, 820, 838, 856, 874, 892, 910, 928, 946, 964, 982, 1000, 1018, 1036, 1054, 1072, 1090, 1108, 1126, 1144, 1162, 1180, 1198, 1216, 1234, 1252, 1270, 1288, 1306, 1324, 1342, 1360, 1378, 1396, 1414, 1432, 1450, 1468, 1486, 1504, 1522, 1540, 1558, 1576, 1594, 1612, 1630, 1648, 1666, 1684, 1702, 1720, 1738, 1756, 1774, 1792, 1810, 1828, 1846, 1864, 1882, 1900, 1918, 1936, 1954, 1972, 1990, 2008, 2026, 2044, 2062, 2080, 2098, 2116, 2134, 2152, 2170, 2188, 2206, 2224, 2242, 2260, 2278, 2296, 2314, 2332, 2350, 2368, 2386, 2404, 2422, 2440, 2458, 2476, 2494, 2512, 2530, 2548, 2566, 2584, 2602, 2620, 2638, 2656, 2674, 2692, 2710, 2728, 2746, 2764, 2782, 2800, 2818, 2836, 2854, 2872, 2890, 2908, 2926, 2944, 2962, 2980, 2998, 3016, 3034, 3052, 3070, 3088, 3106, 3124, 3142, 3160, 3178, 3196, 3214, 3232, 3250, 3268, 3286, 3304, 3322, 3340, 3358, 3376, 3394, 3412, 3430, 3448, 3466, 3484, 3502, 3520, 3538, 3556, 3574, 3592, 3610, 3628, 3646, 3664, 3682, 3700, 3718, 3736, 3754, 3772, 3790, 3808, 3826, 3844, 3862, 3880, 3898, 3916, 3934, 3952, 3970, 3988, 4006, 4024, 4042, 4060, 4078, 4096, 4114, 4132, 4150, 4168, 4186, 4204, 4222, 4240, 4258, 4276, 4294, 4312, 4330, 4348, 4366, 4384, 4402, 4420, 4438, 4456, 4474, 4492, 4510, 4528, 4546, 4564, 4582, 4600, 4618, 4636, 4654, 4672, 4690, 3389, 3407, 3425, 3443, 3461, 3479, 3497, 3515, 3533, 3551, 3569, 3587, 3605, 3623, 3641, 3659, 3677, 3695, 3713, 3731, 3749, 3767, 3785, 3803, 3821, 3839, 3857, 3875, 3893, 3911, 3929, 3947, 3965, 3983, 4001, 4019, 4037, 4055, 4073, 4091, 4109, 4127, 4145, 4163, 4181, 4199, 4217, 4235, 4253, 4271, 4289, 4307, 4325, 4343, 4361, 4379, 4397, 4415, 4433, 4451, 4469, 4487, 4505, 4523, 4541, 4559, 4577, 4595, 4613, 4631, 4649, 4667, 4685, 4703, 4721, 4739, 4757, 4775, 4793, 4811, 4829, 4847, 4865, 4883, 4901, 4919, 4937, 4955, 4973, 4991, 5009, 5027, 5045, 5063, 5081, 5099, 5117, 5135, 5153, 5171, 5189, 5207, 5225, 5243, 5261, 5279, 5297, 5315, 5333, 5351, 5369, 5387, 5405, 5423, 5441, 5459, 5477, 5495, 5513, 5531, 5549, 5567, 5585, 5603, 5621, 5639, 5657, 5675, 5693, 5711, 5729, 5747, 5765, 5783, 5801, 5819, 5837, 5855, 5873, 5891, 5909, 5927, 5945, 5963, 5981, 5999, 6017, 6035, 6053, 6071, 6089, 6107, 6125, 6143, 6161, 6179, 6197, 6215, 6233, 6251, 6269, 6287, 6305, 6323, 6341, 6359, 6377, 6395, 6413, 6431, 6449, 6467, 5, 23, 41, 59, 77, 95, 113, 131, 149, 167, 185, 203, 221, 239, 257, 275, 293, 311, 329, 347, 365, 383, 401, 419, 437, 455, 473, 491, 509, 527, 545, 563, 581, 599, 617, 635, 653, 671, 689, 707, 725, 743, 761, 779, 797, 815, 833, 851, 869, 887, 905, 923, 941, 959, 977, 995, 1013, 1031, 1049, 1067, 1085, 1103, 1121, 1139, 1157, 1175, 1193, 1211, 1229, 1247, 1265, 1283, 1301, 1319, 1337, 1355, 1373, 1391, 1409, 1427, 1445, 1463, 1481, 1499, 1517, 1535, 1553, 1571, 1589, 1607, 1625, 1643, 1661, 1679, 1697, 1715, 1733, 1751, 1769, 1787, 1805, 1823, 1841, 1859, 1877, 1895, 1913, 1931, 1949, 1967, 1985, 2003, 2021, 2039, 2057, 2075, 2093, 2111, 2129, 2147, 2165, 2183, 2201, 2219, 2237, 2255, 2273, 2291, 2309, 2327, 2345, 2363, 2381, 2399, 2417, 2435, 2453, 2471, 2489, 2507, 2525, 2543, 2561, 2579, 2597, 2615, 2633, 2651, 2669, 2687, 2705, 2723, 2741, 2759, 2777, 2795, 2813, 2831, 2849, 2867, 2885, 2903, 2921, 2939, 2957, 2975, 2993, 3011, 3029, 3047, 3065, 3083, 3101, 3119, 3137, 3155, 3173, 3191, 3209, 3227, 3245, 3263, 3281, 3299, 3317, 3335, 3353, 3371, 4557, 4575, 4593, 4611, 4629, 4647, 4665, 4683, 4701, 4719, 4737, 4755, 4773, 4791, 4809, 4827, 4845, 4863, 4881, 4899, 4917, 4935, 4953, 4971, 4989, 5007, 5025, 5043, 5061, 5079, 5097, 5115, 5133, 5151, 5169, 5187, 5205, 5223, 5241, 5259, 5277, 5295, 5313, 5331, 5349, 5367, 5385, 5403, 5421, 5439, 5457, 5475, 5493, 5511, 5529, 5547, 5565, 5583, 5601, 5619, 5637, 5655, 5673, 5691, 5709, 5727, 5745, 5763, 5781, 5799, 5817, 5835, 5853, 5871, 5889, 5907, 5925, 5943, 5961, 5979, 5997, 6015, 6033, 6051, 6069, 6087, 6105, 6123, 6141, 6159, 6177, 6195, 6213, 6231, 6249, 6267, 6285, 6303, 6321, 6339, 6357, 6375, 6393, 6411, 6429, 6447, 6465, 3, 21, 39, 57, 75, 93, 111, 129, 147, 165, 183, 201, 219, 237, 255, 273, 291, 309, 327, 345, 363, 381, 399, 417, 435, 453, 471, 489, 507, 525, 543, 561, 579, 597, 615, 633, 651, 669, 687, 705, 723, 741, 759, 777, 795, 813, 831, 849, 867, 885, 903, 921, 939, 957, 975, 993, 1011, 1029, 1047, 1065, 1083, 1101, 1119, 1137, 1155, 1173, 1191, 1209, 1227, 1245, 1263, 1281, 1299, 1317, 1335, 1353, 1371, 1389, 1407, 1425, 1443, 1461, 1479, 1497, 1515, 1533, 1551, 1569, 1587, 1605, 1623, 1641, 1659, 1677, 1695, 1713, 1731, 1749, 1767, 1785, 1803, 1821, 1839, 1857, 1875, 1893, 1911, 1929, 1947, 1965, 1983, 2001, 2019, 2037, 2055, 2073, 2091, 2109, 2127, 2145, 2163, 2181, 2199, 2217, 2235, 2253, 2271, 2289, 2307, 2325, 2343, 2361, 2379, 2397, 2415, 2433, 2451, 2469, 2487, 2505, 2523, 2541, 2559, 2577, 2595, 2613, 2631, 2649, 2667, 2685, 2703, 2721, 2739, 2757, 2775, 2793, 2811, 2829, 2847, 2865, 2883, 2901, 2919, 2937, 2955, 2973, 2991, 3009, 3027, 3045, 3063, 3081, 3099, 3117, 3135, 3153, 3171, 3189, 3207, 3225, 3243, 3261, 3279, 3297, 3315, 3333, 3351, 3369, 3387, 3405, 3423, 3441, 3459, 3477, 3495, 3513, 3531, 3549, 3567, 3585, 3603, 3621, 3639, 3657, 3675, 3693, 3711, 3729, 3747, 3765, 3783, 3801, 3819, 3837, 3855, 3873, 3891, 3909, 3927, 3945, 3963, 3981, 3999, 4017, 4035, 4053, 4071, 4089, 4107, 4125, 4143, 4161, 4179, 4197, 4215, 4233, 4251, 4269, 4287, 4305, 4323, 4341, 4359, 4377, 4395, 4413, 4431, 4449, 4467, 4485, 4503, 4521, 4539, 4178, 4196, 4214, 4232, 4250, 4268, 4286, 4304, 4322, 4340, 4358, 4376, 4394, 4412, 4430, 4448, 4466, 4484, 4502, 4520, 4538, 4556, 4574, 4592, 4610, 4628, 4646, 4664, 4682, 4700, 4718, 4736, 4754, 4772, 4790, 4808, 4826, 4844, 4862, 4880, 4898, 4916, 4934, 4952, 4970, 4988, 5006, 5024, 5042, 5060, 5078, 5096, 5114, 5132, 5150, 5168, 5186, 5204, 5222, 5240, 5258, 5276, 5294, 5312, 5330, 5348, 5366, 5384, 5402, 5420, 5438, 5456, 5474, 5492, 5510, 5528, 5546, 5564, 5582, 5600, 5618, 5636, 5654, 5672, 5690, 5708, 5726, 5744, 5762, 5780, 5798, 5816, 5834, 5852, 5870, 5888, 5906, 5924, 5942, 5960, 5978, 5996, 6014, 6032, 6050, 6068, 6086, 6104, 6122, 6140, 6158, 6176, 6194, 6212, 6230, 6248, 6266, 6284, 6302, 6320, 6338, 6356, 6374, 6392, 6410, 6428, 6446, 6464, 2, 20, 38, 56, 74, 92, 110, 128, 146, 164, 182, 200, 218, 236, 254, 272, 290, 308, 326, 344, 362, 380, 398, 416, 434, 452, 470, 488, 506, 524, 542, 560, 578, 596, 614, 632, 650, 668, 686, 704, 722, 740, 758, 776, 794, 812, 830, 848, 866, 884, 902, 920, 938, 956, 974, 992, 1010, 1028, 1046, 1064, 1082, 1100, 1118, 1136, 1154, 1172, 1190, 1208, 1226, 1244, 1262, 1280, 1298, 1316, 1334, 1352, 1370, 1388, 1406, 1424, 1442, 1460, 1478, 1496, 1514, 1532, 1550, 1568, 1586, 1604, 1622, 1640, 1658, 1676, 1694, 1712, 1730, 1748, 1766, 1784, 1802, 1820, 1838, 1856, 1874, 1892, 1910, 1928, 1946, 1964, 1982, 2000, 2018, 2036, 2054, 2072, 2090, 2108, 2126, 2144, 2162, 2180, 2198, 2216, 2234, 2252, 2270, 2288, 2306, 2324, 2342, 2360, 2378, 2396, 2414, 2432, 2450, 2468, 2486, 2504, 2522, 2540, 2558, 2576, 2594, 2612, 2630, 2648, 2666, 2684, 2702, 2720, 2738, 2756, 2774, 2792, 2810, 2828, 2846, 2864, 2882, 2900, 2918, 2936, 2954, 2972, 2990, 3008, 3026, 3044, 3062, 3080, 3098, 3116, 3134, 3152, 3170, 3188, 3206, 3224, 3242, 3260, 3278, 3296, 3314, 3332, 3350, 3368, 3386, 3404, 3422, 3440, 3458, 3476, 3494, 3512, 3530, 3548, 3566, 3584, 3602, 3620, 3638, 3656, 3674, 3692, 3710, 3728, 3746, 3764, 3782, 3800, 3818, 3836, 3854, 3872, 3890, 3908, 3926, 3944, 3962, 3980, 3998, 4016, 4034, 4052, 4070, 4088, 4106, 4124, 4142, 4160, 3597, 3615, 3633, 3651, 3669, 3687, 3705, 3723, 3741, 3759, 3777, 3795, 3813, 3831, 3849, 3867, 3885, 3903, 3921, 3939, 3957, 3975, 3993, 4011, 4029, 4047, 4065, 4083, 4101, 4119, 4137, 4155, 4173, 4191, 4209, 4227, 4245, 4263, 4281, 4299, 4317, 4335, 4353, 4371, 4389, 4407, 4425, 4443, 4461, 4479, 4497, 4515, 4533, 4551, 4569, 4587, 4605, 4623, 4641, 4659, 4677, 4695, 4713, 4731, 4749, 4767, 4785, 4803, 4821, 4839, 4857, 4875, 4893, 4911, 4929, 4947, 4965, 4983, 5001, 5019, 5037, 5055, 5073, 5091, 5109, 5127, 5145, 5163, 5181, 5199, 5217, 5235, 5253, 5271, 5289, 5307, 5325, 5343, 5361, 5379, 5397, 5415, 5433, 5451, 5469, 5487, 5505, 5523, 5541, 5559, 5577, 5595, 5613, 5631, 5649, 5667, 5685, 5703, 5721, 5739, 5757, 5775, 5793, 5811, 5829, 5847, 5865, 5883, 5901, 5919, 5937, 5955, 5973, 5991, 6009, 6027, 6045, 6063, 6081, 6099, 6117, 6135, 6153, 6171, 6189, 6207, 6225, 6243, 6261, 6279, 6297, 6315, 6333, 6351, 6369, 6387, 6405, 6423, 6441, 6459, 6477, 15, 33, 51, 69, 87, 105, 123, 141, 159, 177, 195, 213, 231, 249, 267, 285, 303, 321, 339, 357, 375, 393, 411, 429, 447, 465, 483, 501, 519, 537, 555, 573, 591, 609, 627, 645, 663, 681, 699, 717, 735, 753, 771, 789, 807, 825, 843, 861, 879, 897, 915, 933, 951, 969, 987, 1005, 1023, 1041, 1059, 1077, 1095, 1113, 1131, 1149, 1167, 1185, 1203, 1221, 1239, 1257, 1275, 1293, 1311, 1329, 1347, 1365, 1383, 1401, 1419, 1437, 1455, 1473, 1491, 1509, 1527, 1545, 1563, 1581, 1599, 1617, 1635, 1653, 1671, 1689, 1707, 1725, 1743, 1761, 1779, 1797, 1815, 1833, 1851, 1869, 1887, 1905, 1923, 1941, 1959, 1977, 1995, 2013, 2031, 2049, 2067, 2085, 2103, 2121, 2139, 2157, 2175, 2193, 2211, 2229, 2247, 2265, 2283, 2301, 2319, 2337, 2355, 2373, 2391, 2409, 2427, 2445, 2463, 2481, 2499, 2517, 2535, 2553, 2571, 2589, 2607, 2625, 2643, 2661, 2679, 2697, 2715, 2733, 2751, 2769, 2787, 2805, 2823, 2841, 2859, 2877, 2895, 2913, 2931, 2949, 2967, 2985, 3003, 3021, 3039, 3057, 3075, 3093, 3111, 3129, 3147, 3165, 3183, 3201, 3219, 3237, 3255, 3273, 3291, 3309, 3327, 3345, 3363, 3381, 3399, 3417, 3435, 3453, 3471, 3489, 3507, 3525, 3543, 3561, 3579, 724, 742, 760, 778, 796, 814, 832, 850, 868, 886, 904, 922, 940, 958, 976, 994, 1012, 1030, 1048, 1066, 1084, 1102, 1120, 1138, 1156, 1174, 1192, 1210, 1228, 1246, 1264, 1282, 1300, 1318, 1336, 1354, 1372, 1390, 1408, 1426, 1444, 1462, 1480, 1498, 1516, 1534, 1552, 1570, 1588, 1606, 1624, 1642, 1660, 1678, 1696, 1714, 1732, 1750, 1768, 1786, 1804, 1822, 1840, 1858, 1876, 1894, 1912, 1930, 1948, 1966, 1984, 2002, 2020, 2038, 2056, 2074, 2092, 2110, 2128, 2146, 2164, 2182, 2200, 2218, 2236, 2254, 2272, 2290, 2308, 2326, 2344, 2362, 2380, 2398, 2416, 2434, 2452, 2470, 2488, 2506, 2524, 2542, 2560, 2578, 2596, 2614, 2632, 2650, 2668, 2686, 2704, 2722, 2740, 2758, 2776, 2794, 2812, 2830, 2848, 2866, 2884, 2902, 2920, 2938, 2956, 2974, 2992, 3010, 3028, 3046, 3064, 3082, 3100, 3118, 3136, 3154, 3172, 3190, 3208, 3226, 3244, 3262, 3280, 3298, 3316, 3334, 3352, 3370, 3388, 3406, 3424, 3442, 3460, 3478, 3496, 3514, 3532, 3550, 3568, 3586, 3604, 3622, 3640, 3658, 3676, 3694, 3712, 3730, 3748, 3766, 3784, 3802, 3820, 3838, 3856, 3874, 3892, 3910, 3928, 3946, 3964, 3982, 4000, 4018, 4036, 4054, 4072, 4090, 4108, 4126, 4144, 4162, 4180, 4198, 4216, 4234, 4252, 4270, 4288, 4306, 4324, 4342, 4360, 4378, 4396, 4414, 4432, 4450, 4468, 4486, 4504, 4522, 4540, 4558, 4576, 4594, 4612, 4630, 4648, 4666, 4684, 4702, 4720, 4738, 4756, 4774, 4792, 4810, 4828, 4846, 4864, 4882, 4900, 4918, 4936, 4954, 4972, 4990, 5008, 5026, 5044, 5062, 5080, 5098, 5116, 5134, 5152, 5170, 5188, 5206, 5224, 5242, 5260, 5278, 5296, 5314, 5332, 5350, 5368, 5386, 5404, 5422, 5440, 5458, 5476, 5494, 5512, 5530, 5548, 5566, 5584, 5602, 5620, 5638, 5656, 5674, 5692, 5710, 5728, 5746, 5764, 5782, 5800, 5818, 5836, 5854, 5872, 5890, 5908, 5926, 5944, 5962, 5980, 5998, 6016, 6034, 6052, 6070, 6088, 6106, 6124, 6142, 6160, 6178, 6196, 6214, 6232, 6250, 6268, 6286, 6304, 6322, 6340, 6358, 6376, 6394, 6412, 6430, 6448, 6466, 4, 22, 40, 58, 76, 94, 112, 130, 148, 166, 184, 202, 220, 238, 256, 274, 292, 310, 328, 346, 364, 382, 400, 418, 436, 454, 472, 490, 508, 526, 544, 562, 580, 598, 616, 634, 652, 670, 688, 706, 3097, 3115, 3133, 3151, 3169, 3187, 3205, 3223, 3241, 3259, 3277, 3295, 3313, 3331, 3349, 3367, 3385, 3403, 3421, 3439, 3457, 3475, 3493, 3511, 3529, 3547, 3565, 3583, 3601, 3619, 3637, 3655, 3673, 3691, 3709, 3727, 3745, 3763, 3781, 3799, 3817, 3835, 3853, 3871, 3889, 3907, 3925, 3943, 3961, 3979, 3997, 4015, 4033, 4051, 4069, 4087, 4105, 4123, 4141, 4159, 4177, 4195, 4213, 4231, 4249, 4267, 4285, 4303, 4321, 4339, 4357, 4375, 4393, 4411, 4429, 4447, 4465, 4483, 4501, 4519, 4537, 4555, 4573, 4591, 4609, 4627, 4645, 4663, 4681, 4699, 4717, 4735, 4753, 4771, 4789, 4807, 4825, 4843, 4861, 4879, 4897, 4915, 4933, 4951, 4969, 4987, 5005, 5023, 5041, 5059, 5077, 5095, 5113, 5131, 5149, 5167, 5185, 5203, 5221, 5239, 5257, 5275, 5293, 5311, 5329, 5347, 5365, 5383, 5401, 5419, 5437, 5455, 5473, 5491, 5509, 5527, 5545, 5563, 5581, 5599, 5617, 5635, 5653, 5671, 5689, 5707, 5725, 5743, 5761, 5779, 5797, 5815, 5833, 5851, 5869, 5887, 5905, 5923, 5941, 5959, 5977, 5995, 6013, 6031, 6049, 6067, 6085, 6103, 6121, 6139, 6157, 6175, 6193, 6211, 6229, 6247, 6265, 6283, 6301, 6319, 6337, 6355, 6373, 6391, 6409, 6427, 6445, 6463, 1, 19, 37, 55, 73, 91, 109, 127, 145, 163, 181, 199, 217, 235, 253, 271, 289, 307, 325, 343, 361, 379, 397, 415, 433, 451, 469, 487, 505, 523, 541, 559, 577, 595, 613, 631, 649, 667, 685, 703, 721, 739, 757, 775, 793, 811, 829, 847, 865, 883, 901, 919, 937, 955, 973, 991, 1009, 1027, 1045, 1063, 1081, 1099, 1117, 1135, 1153, 1171, 1189, 1207, 1225, 1243, 1261, 1279, 1297, 1315, 1333, 1351, 1369, 1387, 1405, 1423, 1441, 1459, 1477, 1495, 1513, 1531, 1549, 1567, 1585, 1603, 1621, 1639, 1657, 1675, 1693, 1711, 1729, 1747, 1765, 1783, 1801, 1819, 1837, 1855, 1873, 1891, 1909, 1927, 1945, 1963, 1981, 1999, 2017, 2035, 2053, 2071, 2089, 2107, 2125, 2143, 2161, 2179, 2197, 2215, 2233, 2251, 2269, 2287, 2305, 2323, 2341, 2359, 2377, 2395, 2413, 2431, 2449, 2467, 2485, 2503, 2521, 2539, 2557, 2575, 2593, 2611, 2629, 2647, 2665, 2683, 2701, 2719, 2737, 2755, 2773, 2791, 2809, 2827, 2845, 2863, 2881, 2899, 2917, 2935, 2953, 2971, 2989, 3007, 3025, 3043, 3061, 3079, 3158, 3176, 3194, 3212, 3230, 3248, 3266, 3284, 3302, 3320, 3338, 3356, 3374, 3392, 3410, 3428, 3446, 3464, 3482, 3500, 3518, 3536, 3554, 3572, 3590, 3608, 3626, 3644, 3662, 3680, 3698, 3716, 3734, 3752, 3770, 3788, 3806, 3824, 3842, 3860, 3878, 3896, 3914, 3932, 3950, 3968, 3986, 4004, 4022, 4040, 4058, 4076, 4094, 4112, 4130, 4148, 4166, 4184, 4202, 4220, 4238, 4256, 4274, 4292, 4310, 4328, 4346, 4364, 4382, 4400, 4418, 4436, 4454, 4472, 4490, 4508, 4526, 4544, 4562, 4580, 4598, 4616, 4634, 4652, 4670, 4688, 4706, 4724, 4742, 4760, 4778, 4796, 4814, 4832, 4850, 4868, 4886, 4904, 4922, 4940, 4958, 4976, 4994, 5012, 5030, 5048, 5066, 5084, 5102, 5120, 5138, 5156, 5174, 5192, 5210, 5228, 5246, 5264, 5282, 5300, 5318, 5336, 5354, 5372, 5390, 5408, 5426, 5444, 5462, 5480, 5498, 5516, 5534, 5552, 5570, 5588, 5606, 5624, 5642, 5660, 5678, 5696, 5714, 5732, 5750, 5768, 5786, 5804, 5822, 5840, 5858, 5876, 5894, 5912, 5930, 5948, 5966, 5984, 6002, 6020, 6038, 6056, 6074, 6092, 6110, 6128, 6146, 6164, 6182, 6200, 6218, 6236, 6254, 6272, 6290, 6308, 6326, 6344, 6362, 6380, 6398, 6416, 6434, 6452, 6470, 8, 26, 44, 62, 80, 98, 116, 134, 152, 170, 188, 206, 224, 242, 260, 278, 296, 314, 332, 350, 368, 386, 404, 422, 440, 458, 476, 494, 512, 530, 548, 566, 584, 602, 620, 638, 656, 674, 692, 710, 728, 746, 764, 782, 800, 818, 836, 854, 872, 890, 908, 926, 944, 962, 980, 998, 1016, 1034, 1052, 1070, 1088, 1106, 1124, 1142, 1160, 1178, 1196, 1214, 1232, 1250, 1268, 1286, 1304, 1322, 1340, 1358, 1376, 1394, 1412, 1430, 1448, 1466, 1484, 1502, 1520, 1538, 1556, 1574, 1592, 1610, 1628, 1646, 1664, 1682, 1700, 1718, 1736, 1754, 1772, 1790, 1808, 1826, 1844, 1862, 1880, 1898, 1916, 1934, 1952, 1970, 1988, 2006, 2024, 2042, 2060, 2078, 2096, 2114, 2132, 2150, 2168, 2186, 2204, 2222, 2240, 2258, 2276, 2294, 2312, 2330, 2348, 2366, 2384, 2402, 2420, 2438, 2456, 2474, 2492, 2510, 2528, 2546, 2564, 2582, 2600, 2618, 2636, 2654, 2672, 2690, 2708, 2726, 2744, 2762, 2780, 2798, 2816, 2834, 2852, 2870, 2888, 2906, 2924, 2942, 2960, 2978, 2996, 3014, 3032, 3050, 3068, 3086, 3104, 3122, 3140, 60, 78, 96, 114, 132, 150, 168, 186, 204, 222, 240, 258, 276, 294, 312, 330, 348, 366, 384, 402, 420, 438, 456, 474, 492, 510, 528, 546, 564, 582, 600, 618, 636, 654, 672, 690, 708, 726, 744, 762, 780, 798, 816, 834, 852, 870, 888, 906, 924, 942, 960, 978, 996, 1014, 1032, 1050, 1068, 1086, 1104, 1122, 1140, 1158, 1176, 1194, 1212, 1230, 1248, 1266, 1284, 1302, 1320, 1338, 1356, 1374, 1392, 1410, 1428, 1446, 1464, 1482, 1500, 1518, 1536, 1554, 1572, 1590, 1608, 1626, 1644, 1662, 1680, 1698, 1716, 1734, 1752, 1770, 1788, 1806, 1824, 1842, 1860, 1878, 1896, 1914, 1932, 1950, 1968, 1986, 2004, 2022, 2040, 2058, 2076, 2094, 2112, 2130, 2148, 2166, 2184, 2202, 2220, 2238, 2256, 2274, 2292, 2310, 2328, 2346, 2364, 2382, 2400, 2418, 2436, 2454, 2472, 2490, 2508, 2526, 2544, 2562, 2580, 2598, 2616, 2634, 2652, 2670, 2688, 2706, 2724, 2742, 2760, 2778, 2796, 2814, 2832, 2850, 2868, 2886, 2904, 2922, 2940, 2958, 2976, 2994, 3012, 3030, 3048, 3066, 3084, 3102, 3120, 3138, 3156, 3174, 3192, 3210, 3228, 3246, 3264, 3282, 3300, 3318, 3336, 3354, 3372, 3390, 3408, 3426, 3444, 3462, 3480, 3498, 3516, 3534, 3552, 3570, 3588, 3606, 3624, 3642, 3660, 3678, 3696, 3714, 3732, 3750, 3768, 3786, 3804, 3822, 3840, 3858, 3876, 3894, 3912, 3930, 3948, 3966, 3984, 4002, 4020, 4038, 4056, 4074, 4092, 4110, 4128, 4146, 4164, 4182, 4200, 4218, 4236, 4254, 4272, 4290, 4308, 4326, 4344, 4362, 4380, 4398, 4416, 4434, 4452, 4470, 4488, 4506, 4524, 4542, 4560, 4578, 4596, 4614, 4632, 4650, 4668, 4686, 4704, 4722, 4740, 4758, 4776, 4794, 4812, 4830, 4848, 4866, 4884, 4902, 4920, 4938, 4956, 4974, 4992, 5010, 5028, 5046, 5064, 5082, 5100, 5118, 5136, 5154, 5172, 5190, 5208, 5226, 5244, 5262, 5280, 5298, 5316, 5334, 5352, 5370, 5388, 5406, 5424, 5442, 5460, 5478, 5496, 5514, 5532, 5550, 5568, 5586, 5604, 5622, 5640, 5658, 5676, 5694, 5712, 5730, 5748, 5766, 5784, 5802, 5820, 5838, 5856, 5874, 5892, 5910, 5928, 5946, 5964, 5982, 6000, 6018, 6036, 6054, 6072, 6090, 6108, 6126, 6144, 6162, 6180, 6198, 6216, 6234, 6252, 6270, 6288, 6306, 6324, 6342, 6360, 6378, 6396, 6414, 6432, 6450, 6468, 6, 24, 42, 3737, 3755, 3773, 3791, 3809, 3827, 3845, 3863, 3881, 3899, 3917, 3935, 3953, 3971, 3989, 4007, 4025, 4043, 4061, 4079, 4097, 4115, 4133, 4151, 4169, 4187, 4205, 4223, 4241, 4259, 4277, 4295, 4313, 4331, 4349, 4367, 4385, 4403, 4421, 4439, 4457, 4475, 4493, 4511, 4529, 4547, 4565, 4583, 4601, 4619, 4637, 4655, 4673, 4691, 4709, 4727, 4745, 4763, 4781, 4799, 4817, 4835, 4853, 4871, 4889, 4907, 4925, 4943, 4961, 4979, 4997, 5015, 5033, 5051, 5069, 5087, 5105, 5123, 5141, 5159, 5177, 5195, 5213, 5231, 5249, 5267, 5285, 5303, 5321, 5339, 5357, 5375, 5393, 5411, 5429, 5447, 5465, 5483, 5501, 5519, 5537, 5555, 5573, 5591, 5609, 5627, 5645, 5663, 5681, 5699, 5717, 5735, 5753, 5771, 5789, 5807, 5825, 5843, 5861, 5879, 5897, 5915, 5933, 5951, 5969, 5987, 6005, 6023, 6041, 6059, 6077, 6095, 6113, 6131, 6149, 6167, 6185, 6203, 6221, 6239, 6257, 6275, 6293, 6311, 6329, 6347, 6365, 6383, 6401, 6419, 6437, 6455, 6473, 11, 29, 47, 65, 83, 101, 119, 137, 155, 173, 191, 209, 227, 245, 263, 281, 299, 317, 335, 353, 371, 389, 407, 425, 443, 461, 479, 497, 515, 533, 551, 569, 587, 605, 623, 641, 659, 677, 695, 713, 731, 749, 767, 785, 803, 821, 839, 857, 875, 893, 911, 929, 947, 965, 983, 1001, 1019, 1037, 1055, 1073, 1091, 1109, 1127, 1145, 1163, 1181, 1199, 1217, 1235, 1253, 1271, 1289, 1307, 1325, 1343, 1361, 1379, 1397, 1415, 1433, 1451, 1469, 1487, 1505, 1523, 1541, 1559, 1577, 1595, 1613, 1631, 1649, 1667, 1685, 1703, 1721, 1739, 1757, 1775, 1793, 1811, 1829, 1847, 1865, 1883, 1901, 1919, 1937, 1955, 1973, 1991, 2009, 2027, 2045, 2063, 2081, 2099, 2117, 2135, 2153, 2171, 2189, 2207, 2225, 2243, 2261, 2279, 2297, 2315, 2333, 2351, 2369, 2387, 2405, 2423, 2441, 2459, 2477, 2495, 2513, 2531, 2549, 2567, 2585, 2603, 2621, 2639, 2657, 2675, 2693, 2711, 2729, 2747, 2765, 2783, 2801, 2819, 2837, 2855, 2873, 2891, 2909, 2927, 2945, 2963, 2981, 2999, 3017, 3035, 3053, 3071, 3089, 3107, 3125, 3143, 3161, 3179, 3197, 3215, 3233, 3251, 3269, 3287, 3305, 3323, 3341, 3359, 3377, 3395, 3413, 3431, 3449, 3467, 3485, 3503, 3521, 3539, 3557, 3575, 3593, 3611, 3629, 3647, 3665, 3683, 3701, 3719, 3286, 3304, 3322, 3340, 3358, 3376, 3394, 3412, 3430, 3448, 3466, 3484, 3502, 3520, 3538, 3556, 3574, 3592, 3610, 3628, 3646, 3664, 3682, 3700, 3718, 3736, 3754, 3772, 3790, 3808, 3826, 3844, 3862, 3880, 3898, 3916, 3934, 3952, 3970, 3988, 4006, 4024, 4042, 4060, 4078, 4096, 4114, 4132, 4150, 4168, 4186, 4204, 4222, 4240, 4258, 4276, 4294, 4312, 4330, 4348, 4366, 4384, 4402, 4420, 4438, 4456, 4474, 4492, 4510, 4528, 4546, 4564, 4582, 4600, 4618, 4636, 4654, 4672, 4690, 4708, 4726, 4744, 4762, 4780, 4798, 4816, 4834, 4852, 4870, 4888, 4906, 4924, 4942, 4960, 4978, 4996, 5014, 5032, 5050, 5068, 5086, 5104, 5122, 5140, 5158, 5176, 5194, 5212, 5230, 5248, 5266, 5284, 5302, 5320, 5338, 5356, 5374, 5392, 5410, 5428, 5446, 5464, 5482, 5500, 5518, 5536, 5554, 5572, 5590, 5608, 5626, 5644, 5662, 5680, 5698, 5716, 5734, 5752, 5770, 5788, 5806, 5824, 5842, 5860, 5878, 5896, 5914, 5932, 5950, 5968, 5986, 6004, 6022, 6040, 6058, 6076, 6094, 6112, 6130, 6148, 6166, 6184, 6202, 6220, 6238, 6256, 6274, 6292, 6310, 6328, 6346, 6364, 6382, 6400, 6418, 6436, 6454, 6472, 10, 28, 46, 64, 82, 100, 118, 136, 154, 172, 190, 208, 226, 244, 262, 280, 298, 316, 334, 352, 370, 388, 406, 424, 442, 460, 478, 496, 514, 532, 550, 568, 586, 604, 622, 640, 658, 676, 694, 712, 730, 748, 766, 784, 802, 820, 838, 856, 874, 892, 910, 928, 946, 964, 982, 1000, 1018, 1036, 1054, 1072, 1090, 1108, 1126, 1144, 1162, 1180, 1198, 1216, 1234, 1252, 1270, 1288, 1306, 1324, 1342, 1360, 1378, 1396, 1414, 1432, 1450, 1468, 1486, 1504, 1522, 1540, 1558, 1576, 1594, 1612, 1630, 1648, 1666, 1684, 1702, 1720, 1738, 1756, 1774, 1792, 1810, 1828, 1846, 1864, 1882, 1900, 1918, 1936, 1954, 1972, 1990, 2008, 2026, 2044, 2062, 2080, 2098, 2116, 2134, 2152, 2170, 2188, 2206, 2224, 2242, 2260, 2278, 2296, 2314, 2332, 2350, 2368, 2386, 2404, 2422, 2440, 2458, 2476, 2494, 2512, 2530, 2548, 2566, 2584, 2602, 2620, 2638, 2656, 2674, 2692, 2710, 2728, 2746, 2764, 2782, 2800, 2818, 2836, 2854, 2872, 2890, 2908, 2926, 2944, 2962, 2980, 2998, 3016, 3034, 3052, 3070, 3088, 3106, 3124, 3142, 3160, 3178, 3196, 3214, 3232, 3250, 3268, 1706, 1724, 1742, 1760, 1778, 1796, 1814, 1832, 1850, 1868, 1886, 1904, 1922, 1940, 1958, 1976, 1994, 2012, 2030, 2048, 2066, 2084, 2102, 2120, 2138, 2156, 2174, 2192, 2210, 2228, 2246, 2264, 2282, 2300, 2318, 2336, 2354, 2372, 2390, 2408, 2426, 2444, 2462, 2480, 2498, 2516, 2534, 2552, 2570, 2588, 2606, 2624, 2642, 2660, 2678, 2696, 2714, 2732, 2750, 2768, 2786, 2804, 2822, 2840, 2858, 2876, 2894, 2912, 2930, 2948, 2966, 2984, 3002, 3020, 3038, 3056, 3074, 3092, 3110, 3128, 3146, 3164, 3182, 3200, 3218, 3236, 3254, 3272, 3290, 3308, 3326, 3344, 3362, 3380, 3398, 3416, 3434, 3452, 3470, 3488, 3506, 3524, 3542, 3560, 3578, 3596, 3614, 3632, 3650, 3668, 3686, 3704, 3722, 3740, 3758, 3776, 3794, 3812, 3830, 3848, 3866, 3884, 3902, 3920, 3938, 3956, 3974, 3992, 4010, 4028, 4046, 4064, 4082, 4100, 4118, 4136, 4154, 4172, 4190, 4208, 4226, 4244, 4262, 4280, 4298, 4316, 4334, 4352, 4370, 4388, 4406, 4424, 4442, 4460, 4478, 4496, 4514, 4532, 4550, 4568, 4586, 4604, 4622, 4640, 4658, 4676, 4694, 4712, 4730, 4748, 4766, 4784, 4802, 4820, 4838, 4856, 4874, 4892, 4910, 4928, 4946, 4964, 4982, 5000, 5018, 5036, 5054, 5072, 5090, 5108, 5126, 5144, 5162, 5180, 5198, 5216, 5234, 5252, 5270, 5288, 5306, 5324, 5342, 5360, 5378, 5396, 5414, 5432, 5450, 5468, 5486, 5504, 5522, 5540, 5558, 5576, 5594, 5612, 5630, 5648, 5666, 5684, 5702, 5720, 5738, 5756, 5774, 5792, 5810, 5828, 5846, 5864, 5882, 5900, 5918, 5936, 5954, 5972, 5990, 6008, 6026, 6044, 6062, 6080, 6098, 6116, 6134, 6152, 6170, 6188, 6206, 6224, 6242, 6260, 6278, 6296, 6314, 6332, 6350, 6368, 6386, 6404, 6422, 6440, 6458, 6476, 14, 32, 50, 68, 86, 104, 122, 140, 158, 176, 194, 212, 230, 248, 266, 284, 302, 320, 338, 356, 374, 392, 410, 428, 446, 464, 482, 500, 518, 536, 554, 572, 590, 608, 626, 644, 662, 680, 698, 716, 734, 752, 770, 788, 806, 824, 842, 860, 878, 896, 914, 932, 950, 968, 986, 1004, 1022, 1040, 1058, 1076, 1094, 1112, 1130, 1148, 1166, 1184, 1202, 1220, 1238, 1256, 1274, 1292, 1310, 1328, 1346, 1364, 1382, 1400, 1418, 1436, 1454, 1472, 1490, 1508, 1526, 1544, 1562, 1580, 1598, 1616, 1634, 1652, 1670, 1688, 5655, 5673, 5691, 5709, 5727, 5745, 5763, 5781, 5799, 5817, 5835, 5853, 5871, 5889, 5907, 5925, 5943, 5961, 5979, 5997, 6015, 6033, 6051, 6069, 6087, 6105, 6123, 6141, 6159, 6177, 6195, 6213, 6231, 6249, 6267, 6285, 6303, 6321, 6339, 6357, 6375, 6393, 6411, 6429, 6447, 6465, 3, 21, 39, 57, 75, 93, 111, 129, 147, 165, 183, 201, 219, 237, 255, 273, 291, 309, 327, 345, 363, 381, 399, 417, 435, 453, 471, 489, 507, 525, 543, 561, 579, 597, 615, 633, 651, 669, 687, 705, 723, 741, 759, 777, 795, 813, 831, 849, 867, 885, 903, 921, 939, 957, 975, 993, 1011, 1029, 1047, 1065, 1083, 1101, 1119, 1137, 1155, 1173, 1191, 1209, 1227, 1245, 1263, 1281, 1299, 1317, 1335, 1353, 1371, 1389, 1407, 1425, 1443, 1461, 1479, 1497, 1515, 1533, 1551, 1569, 1587, 1605, 1623, 1641, 1659, 1677, 1695, 1713, 1731, 1749, 1767, 1785, 1803, 1821, 1839, 1857, 1875, 1893, 1911, 1929, 1947, 1965, 1983, 2001, 2019, 2037, 2055, 2073, 2091, 2109, 2127, 2145, 2163, 2181, 2199, 2217, 2235, 2253, 2271, 2289, 2307, 2325, 2343, 2361, 2379, 2397, 2415, 2433, 2451, 2469, 2487, 2505, 2523, 2541, 2559, 2577, 2595, 2613, 2631, 2649, 2667, 2685, 2703, 2721, 2739, 2757, 2775, 2793, 2811, 2829, 2847, 2865, 2883, 2901, 2919, 2937, 2955, 2973, 2991, 3009, 3027, 3045, 3063, 3081, 3099, 3117, 3135, 3153, 3171, 3189, 3207, 3225, 3243, 3261, 3279, 3297, 3315, 3333, 3351, 3369, 3387, 3405, 3423, 3441, 3459, 3477, 3495, 3513, 3531, 3549, 3567, 3585, 3603, 3621, 3639, 3657, 3675, 3693, 3711, 3729, 3747, 3765, 3783, 3801, 3819, 3837, 3855, 3873, 3891, 3909, 3927, 3945, 3963, 3981, 3999, 4017, 4035, 4053, 4071, 4089, 4107, 4125, 4143, 4161, 4179, 4197, 4215, 4233, 4251, 4269, 4287, 4305, 4323, 4341, 4359, 4377, 4395, 4413, 4431, 4449, 4467, 4485, 4503, 4521, 4539, 4557, 4575, 4593, 4611, 4629, 4647, 4665, 4683, 4701, 4719, 4737, 4755, 4773, 4791, 4809, 4827, 4845, 4863, 4881, 4899, 4917, 4935, 4953, 4971, 4989, 5007, 5025, 5043, 5061, 5079, 5097, 5115, 5133, 5151, 5169, 5187, 5205, 5223, 5241, 5259, 5277, 5295, 5313, 5331, 5349, 5367, 5385, 5403, 5421, 5439, 5457, 5475, 5493, 5511, 5529, 5547, 5565, 5583, 5601, 5619, 5637, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1375, 1393, 1411, 1429, 1447, 1465, 1483, 1501, 1519, 1537, 1555, 1573, 1591, 1609, 1627, 1645, 1663, 1681, 1699, 1717, 1735, 1753, 1771, 1789, 1807, 1825, 1843, 1861, 1879, 1897, 1915, 1933, 1951, 1969, 1987, 2005, 2023, 2041, 2059, 2077, 2095, 2113, 2131, 2149, 2167, 2185, 2203, 2221, 2239, 2257, 2275, 2293, 2311, 2329, 2347, 2365, 2383, 2401, 2419, 2437, 2455, 2473, 2491, 2509, 2527, 2545, 2563, 2581, 2599, 2617, 2635, 2653, 2671, 2689, 2707, 2725, 2743, 2761, 2779, 2797, 2815, 2833, 2851, 2869, 2887, 2905, 2923, 2941, 2959, 2977, 2995, 3013, 3031, 3049, 3067, 3085, 3103, 3121, 3139, 3157, 3175, 3193, 3211, 3229, 3247, 3265, 3283, 3301, 3319, 3337, 3355, 3373, 3391, 3409, 3427, 3445, 3463, 3481, 3499, 3517, 3535, 3553, 3571, 3589, 3607, 3625, 3643, 3661, 3679, 3697, 3715, 3733, 3751, 3769, 3787, 3805, 3823, 3841, 3859, 3877, 3895, 3913, 3931, 3949, 3967, 3985, 4003, 4021, 4039, 4057, 4075, 4093, 4111, 4129, 4147, 4165, 4183, 4201, 4219, 4237, 4255, 4273, 4291, 4309, 4327, 4345, 4363, 4381, 4399, 4417, 4435, 4453, 4471, 4489, 4507, 4525, 4543, 4561, 4579, 4597, 4615, 4633, 4651, 4669, 4687, 4705, 4723, 4741, 4759, 4777, 4795, 4813, 4831, 4849, 4867, 4885, 4903, 4921, 4939, 4957, 4975, 4993, 5011, 5029, 5047, 5065, 5083, 5101, 5119, 5137, 5155, 5173, 5191, 5209, 5227, 5245, 5263, 5281, 5299, 5317, 5335, 5353, 5371, 5389, 5407, 5425, 5443, 5461, 5479, 5497, 5515, 5533, 5551, 5569, 5587, 5605, 5623, 5641, 5659, 5677, 5695, 5713, 5731, 5749, 5767, 5785, 5803, 5821, 5839, 5857, 5875, 5893, 5911, 5929, 5947, 5965, 5983, 6001, 6019, 6037, 6055, 6073, 6091, 6109, 6127, 6145, 6163, 6181, 6199, 6217, 6235, 6253, 6271, 6289, 6307, 6325, 6343, 6361, 6379, 6397, 6415, 6433, 6451, 6469, 7, 25, 43, 61, 79, 97, 115, 133, 151, 169, 187, 205, 223, 241, 259, 277, 295, 313, 331, 349, 367, 385, 403, 421, 439, 457, 475, 493, 511, 529, 547, 565, 583, 601, 619, 637, 655, 673, 691, 709, 727, 745, 763, 781, 799, 817, 835, 853, 871, 889, 907, 925, 943, 961, 979, 997, 1015, 1033, 1051, 1069, 1087, 1105, 1123, 1141, 1159, 1177, 1195, 1213, 1231, 1249, 1267, 1285, 1303, 1321, 1339, 1357, 1247, 1265, 1283, 1301, 1319, 1337, 1355, 1373, 1391, 1409, 1427, 1445, 1463, 1481, 1499, 1517, 1535, 1553, 1571, 1589, 1607, 1625, 1643, 1661, 1679, 1697, 1715, 1733, 1751, 1769, 1787, 1805, 1823, 1841, 1859, 1877, 1895, 1913, 1931, 1949, 1967, 1985, 2003, 2021, 2039, 2057, 2075, 2093, 2111, 2129, 2147, 2165, 2183, 2201, 2219, 2237, 2255, 2273, 2291, 2309, 2327, 2345, 2363, 2381, 2399, 2417, 2435, 2453, 2471, 2489, 2507, 2525, 2543, 2561, 2579, 2597, 2615, 2633, 2651, 2669, 2687, 2705, 2723, 2741, 2759, 2777, 2795, 2813, 2831, 2849, 2867, 2885, 2903, 2921, 2939, 2957, 2975, 2993, 3011, 3029, 3047, 3065, 3083, 3101, 3119, 3137, 3155, 3173, 3191, 3209, 3227, 3245, 3263, 3281, 3299, 3317, 3335, 3353, 3371, 3389, 3407, 3425, 3443, 3461, 3479, 3497, 3515, 3533, 3551, 3569, 3587, 3605, 3623, 3641, 3659, 3677, 3695, 3713, 3731, 3749, 3767, 3785, 3803, 3821, 3839, 3857, 3875, 3893, 3911, 3929, 3947, 3965, 3983, 4001, 4019, 4037, 4055, 4073, 4091, 4109, 4127, 4145, 4163, 4181, 4199, 4217, 4235, 4253, 4271, 4289, 4307, 4325, 4343, 4361, 4379, 4397, 4415, 4433, 4451, 4469, 4487, 4505, 4523, 4541, 4559, 4577, 4595, 4613, 4631, 4649, 4667, 4685, 4703, 4721, 4739, 4757, 4775, 4793, 4811, 4829, 4847, 4865, 4883, 4901, 4919, 4937, 4955, 4973, 4991, 5009, 5027, 5045, 5063, 5081, 5099, 5117, 5135, 5153, 5171, 5189, 5207, 5225, 5243, 5261, 5279, 5297, 5315, 5333, 5351, 5369, 5387, 5405, 5423, 5441, 5459, 5477, 5495, 5513, 5531, 5549, 5567, 5585, 5603, 5621, 5639, 5657, 5675, 5693, 5711, 5729, 5747, 5765, 5783, 5801, 5819, 5837, 5855, 5873, 5891, 5909, 5927, 5945, 5963, 5981, 5999, 6017, 6035, 6053, 6071, 6089, 6107, 6125, 6143, 6161, 6179, 6197, 6215, 6233, 6251, 6269, 6287, 6305, 6323, 6341, 6359, 6377, 6395, 6413, 6431, 6449, 6467, 5, 23, 41, 59, 77, 95, 113, 131, 149, 167, 185, 203, 221, 239, 257, 275, 293, 311, 329, 347, 365, 383, 401, 419, 437, 455, 473, 491, 509, 527, 545, 563, 581, 599, 617, 635, 653, 671, 689, 707, 725, 743, 761, 779, 797, 815, 833, 851, 869, 887, 905, 923, 941, 959, 977, 995, 1013, 1031, 1049, 1067, 1085, 1103, 1121, 1139, 1157, 1175, 1193, 1211, 1229, 4283, 4301, 4319, 4337, 4355, 4373, 4391, 4409, 4427, 4445, 4463, 4481, 4499, 4517, 4535, 4553, 4571, 4589, 4607, 4625, 4643, 4661, 4679, 4697, 4715, 4733, 4751, 4769, 4787, 4805, 4823, 4841, 4859, 4877, 4895, 4913, 4931, 4949, 4967, 4985, 5003, 5021, 5039, 5057, 5075, 5093, 5111, 5129, 5147, 5165, 5183, 5201, 5219, 5237, 5255, 5273, 5291, 5309, 5327, 5345, 5363, 5381, 5399, 5417, 5435, 5453, 5471, 5489, 5507, 5525, 5543, 5561, 5579, 5597, 5615, 5633, 5651, 5669, 5687, 5705, 5723, 5741, 5759, 5777, 5795, 5813, 5831, 5849, 5867, 5885, 5903, 5921, 5939, 5957, 5975, 5993, 6011, 6029, 6047, 6065, 6083, 6101, 6119, 6137, 6155, 6173, 6191, 6209, 6227, 6245, 6263, 6281, 6299, 6317, 6335, 6353, 6371, 6389, 6407, 6425, 6443, 6461, 6479, 17, 35, 53, 71, 89, 107, 125, 143, 161, 179, 197, 215, 233, 251, 269, 287, 305, 323, 341, 359, 377, 395, 413, 431, 449, 467, 485, 503, 521, 539, 557, 575, 593, 611, 629, 647, 665, 683, 701, 719, 737, 755, 773, 791, 809, 827, 845, 863, 881, 899, 917, 935, 953, 971, 989, 1007, 1025, 1043, 1061, 1079, 1097, 1115, 1133, 1151, 1169, 1187, 1205, 1223, 1241, 1259, 1277, 1295, 1313, 1331, 1349, 1367, 1385, 1403, 1421, 1439, 1457, 1475, 1493, 1511, 1529, 1547, 1565, 1583, 1601, 1619, 1637, 1655, 1673, 1691, 1709, 1727, 1745, 1763, 1781, 1799, 1817, 1835, 1853, 1871, 1889, 1907, 1925, 1943, 1961, 1979, 1997, 2015, 2033, 2051, 2069, 2087, 2105, 2123, 2141, 2159, 2177, 2195, 2213, 2231, 2249, 2267, 2285, 2303, 2321, 2339, 2357, 2375, 2393, 2411, 2429, 2447, 2465, 2483, 2501, 2519, 2537, 2555, 2573, 2591, 2609, 2627, 2645, 2663, 2681, 2699, 2717, 2735, 2753, 2771, 2789, 2807, 2825, 2843, 2861, 2879, 2897, 2915, 2933, 2951, 2969, 2987, 3005, 3023, 3041, 3059, 3077, 3095, 3113, 3131, 3149, 3167, 3185, 3203, 3221, 3239, 3257, 3275, 3293, 3311, 3329, 3347, 3365, 3383, 3401, 3419, 3437, 3455, 3473, 3491, 3509, 3527, 3545, 3563, 3581, 3599, 3617, 3635, 3653, 3671, 3689, 3707, 3725, 3743, 3761, 3779, 3797, 3815, 3833, 3851, 3869, 3887, 3905, 3923, 3941, 3959, 3977, 3995, 4013, 4031, 4049, 4067, 4085, 4103, 4121, 4139, 4157, 4175, 4193, 4211, 4229, 4247, 4265, 5665, 5683, 5701, 5719, 5737, 5755, 5773, 5791, 5809, 5827, 5845, 5863, 5881, 5899, 5917, 5935, 5953, 5971, 5989, 6007, 6025, 6043, 6061, 6079, 6097, 6115, 6133, 6151, 6169, 6187, 6205, 6223, 6241, 6259, 6277, 6295, 6313, 6331, 6349, 6367, 6385, 6403, 6421, 6439, 6457, 6475, 13, 31, 49, 67, 85, 103, 121, 139, 157, 175, 193, 211, 229, 247, 265, 283, 301, 319, 337, 355, 373, 391, 409, 427, 445, 463, 481, 499, 517, 535, 553, 571, 589, 607, 625, 643, 661, 679, 697, 715, 733, 751, 769, 787, 805, 823, 841, 859, 877, 895, 913, 931, 949, 967, 985, 1003, 1021, 1039, 1057, 1075, 1093, 1111, 1129, 1147, 1165, 1183, 1201, 1219, 1237, 1255, 1273, 1291, 1309, 1327, 1345, 1363, 1381, 1399, 1417, 1435, 1453, 1471, 1489, 1507, 1525, 1543, 1561, 1579, 1597, 1615, 1633, 1651, 1669, 1687, 1705, 1723, 1741, 1759, 1777, 1795, 1813, 1831, 1849, 1867, 1885, 1903, 1921, 1939, 1957, 1975, 1993, 2011, 2029, 2047, 2065, 2083, 2101, 2119, 2137, 2155, 2173, 2191, 2209, 2227, 2245, 2263, 2281, 2299, 2317, 2335, 2353, 2371, 2389, 2407, 2425, 2443, 2461, 2479, 2497, 2515, 2533, 2551, 2569, 2587, 2605, 2623, 2641, 2659, 2677, 2695, 2713, 2731, 2749, 2767, 2785, 2803, 2821, 2839, 2857, 2875, 2893, 2911, 2929, 2947, 2965, 2983, 3001, 3019, 3037, 3055, 3073, 3091, 3109, 3127, 3145, 3163, 3181, 3199, 3217, 3235, 3253, 3271, 3289, 3307, 3325, 3343, 3361, 3379, 3397, 3415, 3433, 3451, 3469, 3487, 3505, 3523, 3541, 3559, 3577, 3595, 3613, 3631, 3649, 3667, 3685, 3703, 3721, 3739, 3757, 3775, 3793, 3811, 3829, 3847, 3865, 3883, 3901, 3919, 3937, 3955, 3973, 3991, 4009, 4027, 4045, 4063, 4081, 4099, 4117, 4135, 4153, 4171, 4189, 4207, 4225, 4243, 4261, 4279, 4297, 4315, 4333, 4351, 4369, 4387, 4405, 4423, 4441, 4459, 4477, 4495, 4513, 4531, 4549, 4567, 4585, 4603, 4621, 4639, 4657, 4675, 4693, 4711, 4729, 4747, 4765, 4783, 4801, 4819, 4837, 4855, 4873, 4891, 4909, 4927, 4945, 4963, 4981, 4999, 5017, 5035, 5053, 5071, 5089, 5107, 5125, 5143, 5161, 5179, 5197, 5215, 5233, 5251, 5269, 5287, 5305, 5323, 5341, 5359, 5377, 5395, 5413, 5431, 5449, 5467, 5485, 5503, 5521, 5539, 5557, 5575, 5593, 5611, 5629, 5647, 1722, 1740, 1758, 1776, 1794, 1812, 1830, 1848, 1866, 1884, 1902, 1920, 1938, 1956, 1974, 1992, 2010, 2028, 2046, 2064, 2082, 2100, 2118, 2136, 2154, 2172, 2190, 2208, 2226, 2244, 2262, 2280, 2298, 2316, 2334, 2352, 2370, 2388, 2406, 2424, 2442, 2460, 2478, 2496, 2514, 2532, 2550, 2568, 2586, 2604, 2622, 2640, 2658, 2676, 2694, 2712, 2730, 2748, 2766, 2784, 2802, 2820, 2838, 2856, 2874, 2892, 2910, 2928, 2946, 2964, 2982, 3000, 3018, 3036, 3054, 3072, 3090, 3108, 3126, 3144, 3162, 3180, 3198, 3216, 3234, 3252, 3270, 3288, 3306, 3324, 3342, 3360, 3378, 3396, 3414, 3432, 3450, 3468, 3486, 3504, 3522, 3540, 3558, 3576, 3594, 3612, 3630, 3648, 3666, 3684, 3702, 3720, 3738, 3756, 3774, 3792, 3810, 3828, 3846, 3864, 3882, 3900, 3918, 3936, 3954, 3972, 3990, 4008, 4026, 4044, 4062, 4080, 4098, 4116, 4134, 4152, 4170, 4188, 4206, 4224, 4242, 4260, 4278, 4296, 4314, 4332, 4350, 4368, 4386, 4404, 4422, 4440, 4458, 4476, 4494, 4512, 4530, 4548, 4566, 4584, 4602, 4620, 4638, 4656, 4674, 4692, 4710, 4728, 4746, 4764, 4782, 4800, 4818, 4836, 4854, 4872, 4890, 4908, 4926, 4944, 4962, 4980, 4998, 5016, 5034, 5052, 5070, 5088, 5106, 5124, 5142, 5160, 5178, 5196, 5214, 5232, 5250, 5268, 5286, 5304, 5322, 5340, 5358, 5376, 5394, 5412, 5430, 5448, 5466, 5484, 5502, 5520, 5538, 5556, 5574, 5592, 5610, 5628, 5646, 5664, 5682, 5700, 5718, 5736, 5754, 5772, 5790, 5808, 5826, 5844, 5862, 5880, 5898, 5916, 5934, 5952, 5970, 5988, 6006, 6024, 6042, 6060, 6078, 6096, 6114, 6132, 6150, 6168, 6186, 6204, 6222, 6240, 6258, 6276, 6294, 6312, 6330, 6348, 6366, 6384, 6402, 6420, 6438, 6456, 6474, 12, 30, 48, 66, 84, 102, 120, 138, 156, 174, 192, 210, 228, 246, 264, 282, 300, 318, 336, 354, 372, 390, 408, 426, 444, 462, 480, 498, 516, 534, 552, 570, 588, 606, 624, 642, 660, 678, 696, 714, 732, 750, 768, 786, 804, 822, 840, 858, 876, 894, 912, 930, 948, 966, 984, 1002, 1020, 1038, 1056, 1074, 1092, 1110, 1128, 1146, 1164, 1182, 1200, 1218, 1236, 1254, 1272, 1290, 1308, 1326, 1344, 1362, 1380, 1398, 1416, 1434, 1452, 1470, 1488, 1506, 1524, 1542, 1560, 1578, 1596, 1614, 1632, 1650, 1668, 1686, 1704, 2000, 2018, 2036, 2054, 2072, 2090, 2108, 2126, 2144, 2162, 2180, 2198, 2216, 2234, 2252, 2270, 2288, 2306, 2324, 2342, 2360, 2378, 2396, 2414, 2432, 2450, 2468, 2486, 2504, 2522, 2540, 2558, 2576, 2594, 2612, 2630, 2648, 2666, 2684, 2702, 2720, 2738, 2756, 2774, 2792, 2810, 2828, 2846, 2864, 2882, 2900, 2918, 2936, 2954, 2972, 2990, 3008, 3026, 3044, 3062, 3080, 3098, 3116, 3134, 3152, 3170, 3188, 3206, 3224, 3242, 3260, 3278, 3296, 3314, 3332, 3350, 3368, 3386, 3404, 3422, 3440, 3458, 3476, 3494, 3512, 3530, 3548, 3566, 3584, 3602, 3620, 3638, 3656, 3674, 3692, 3710, 3728, 3746, 3764, 3782, 3800, 3818, 3836, 3854, 3872, 3890, 3908, 3926, 3944, 3962, 3980, 3998, 4016, 4034, 4052, 4070, 4088, 4106, 4124, 4142, 4160, 4178, 4196, 4214, 4232, 4250, 4268, 4286, 4304, 4322, 4340, 4358, 4376, 4394, 4412, 4430, 4448, 4466, 4484, 4502, 4520, 4538, 4556, 4574, 4592, 4610, 4628, 4646, 4664, 4682, 4700, 4718, 4736, 4754, 4772, 4790, 4808, 4826, 4844, 4862, 4880, 4898, 4916, 4934, 4952, 4970, 4988, 5006, 5024, 5042, 5060, 5078, 5096, 5114, 5132, 5150, 5168, 5186, 5204, 5222, 5240, 5258, 5276, 5294, 5312, 5330, 5348, 5366, 5384, 5402, 5420, 5438, 5456, 5474, 5492, 5510, 5528, 5546, 5564, 5582, 5600, 5618, 5636, 5654, 5672, 5690, 5708, 5726, 5744, 5762, 5780, 5798, 5816, 5834, 5852, 5870, 5888, 5906, 5924, 5942, 5960, 5978, 5996, 6014, 6032, 6050, 6068, 6086, 6104, 6122, 6140, 6158, 6176, 6194, 6212, 6230, 6248, 6266, 6284, 6302, 6320, 6338, 6356, 6374, 6392, 6410, 6428, 6446, 6464, 2, 20, 38, 56, 74, 92, 110, 128, 146, 164, 182, 200, 218, 236, 254, 272, 290, 308, 326, 344, 362, 380, 398, 416, 434, 452, 470, 488, 506, 524, 542, 560, 578, 596, 614, 632, 650, 668, 686, 704, 722, 740, 758, 776, 794, 812, 830, 848, 866, 884, 902, 920, 938, 956, 974, 992, 1010, 1028, 1046, 1064, 1082, 1100, 1118, 1136, 1154, 1172, 1190, 1208, 1226, 1244, 1262, 1280, 1298, 1316, 1334, 1352, 1370, 1388, 1406, 1424, 1442, 1460, 1478, 1496, 1514, 1532, 1550, 1568, 1586, 1604, 1622, 1640, 1658, 1676, 1694, 1712, 1730, 1748, 1766, 1784, 1802, 1820, 1838, 1856, 1874, 1892, 1910, 1928, 1946, 1964, 1982, 1258, 1276, 1294, 1312, 1330, 1348, 1366, 1384, 1402, 1420, 1438, 1456, 1474, 1492, 1510, 1528, 1546, 1564, 1582, 1600, 1618, 1636, 1654, 1672, 1690, 1708, 1726, 1744, 1762, 1780, 1798, 1816, 1834, 1852, 1870, 1888, 1906, 1924, 1942, 1960, 1978, 1996, 2014, 2032, 2050, 2068, 2086, 2104, 2122, 2140, 2158, 2176, 2194, 2212, 2230, 2248, 2266, 2284, 2302, 2320, 2338, 2356, 2374, 2392, 2410, 2428, 2446, 2464, 2482, 2500, 2518, 2536, 2554, 2572, 2590, 2608, 2626, 2644, 2662, 2680, 2698, 2716, 2734, 2752, 2770, 2788, 2806, 2824, 2842, 2860, 2878, 2896, 2914, 2932, 2950, 2968, 2986, 3004, 3022, 3040, 3058, 3076, 3094, 3112, 3130, 3148, 3166, 3184, 3202, 3220, 3238, 3256, 3274, 3292, 3310, 3328, 3346, 3364, 3382, 3400, 3418, 3436, 3454, 3472, 3490, 3508, 3526, 3544, 3562, 3580, 3598, 3616, 3634, 3652, 3670, 3688, 3706, 3724, 3742, 3760, 3778, 3796, 3814, 3832, 3850, 3868, 3886, 3904, 3922, 3940, 3958, 3976, 3994, 4012, 4030, 4048, 4066, 4084, 4102, 4120, 4138, 4156, 4174, 4192, 4210, 4228, 4246, 4264, 4282, 4300, 4318, 4336, 4354, 4372, 4390, 4408, 4426, 4444, 4462, 4480, 4498, 4516, 4534, 4552, 4570, 4588, 4606, 4624, 4642, 4660, 4678, 4696, 4714, 4732, 4750, 4768, 4786, 4804, 4822, 4840, 4858, 4876, 4894, 4912, 4930, 4948, 4966, 4984, 5002, 5020, 5038, 5056, 5074, 5092, 5110, 5128, 5146, 5164, 5182, 5200, 5218, 5236, 5254, 5272, 5290, 5308, 5326, 5344, 5362, 5380, 5398, 5416, 5434, 5452, 5470, 5488, 5506, 5524, 5542, 5560, 5578, 5596, 5614, 5632, 5650, 5668, 5686, 5704, 5722, 5740, 5758, 5776, 5794, 5812, 5830, 5848, 5866, 5884, 5902, 5920, 5938, 5956, 5974, 5992, 6010, 6028, 6046, 6064, 6082, 6100, 6118, 6136, 6154, 6172, 6190, 6208, 6226, 6244, 6262, 6280, 6298, 6316, 6334, 6352, 6370, 6388, 6406, 6424, 6442, 6460, 6478, 16, 34, 52, 70, 88, 106, 124, 142, 160, 178, 196, 214, 232, 250, 268, 286, 304, 322, 340, 358, 376, 394, 412, 430, 448, 466, 484, 502, 520, 538, 556, 574, 592, 610, 628, 646, 664, 682, 700, 718, 736, 754, 772, 790, 808, 826, 844, 862, 880, 898, 916, 934, 952, 970, 988, 1006, 1024, 1042, 1060, 1078, 1096, 1114, 1132, 1150, 1168, 1186, 1204, 1222, 1240, 5643, 5661, 5679, 5697, 5715, 5733, 5751, 5769, 5787, 5805, 5823, 5841, 5859, 5877, 5895, 5913, 5931, 5949, 5967, 5985, 6003, 6021, 6039, 6057, 6075, 6093, 6111, 6129, 6147, 6165, 6183, 6201, 6219, 6237, 6255, 6273, 6291, 6309, 6327, 6345, 6363, 6381, 6399, 6417, 6435, 6453, 6471, 9, 27, 45, 63, 81, 99, 117, 135, 153, 171, 189, 207, 225, 243, 261, 279, 297, 315, 333, 351, 369, 387, 405, 423, 441, 459, 477, 495, 513, 531, 549, 567, 585, 603, 621, 639, 657, 675, 693, 711, 729, 747, 765, 783, 801, 819, 837, 855, 873, 891, 909, 927, 945, 963, 981, 999, 1017, 1035, 1053, 1071, 1089, 1107, 1125, 1143, 1161, 1179, 1197, 1215, 1233, 1251, 1269, 1287, 1305, 1323, 1341, 1359, 1377, 1395, 1413, 1431, 1449, 1467, 1485, 1503, 1521, 1539, 1557, 1575, 1593, 1611, 1629, 1647, 1665, 1683, 1701, 1719, 1737, 1755, 1773, 1791, 1809, 1827, 1845, 1863, 1881, 1899, 1917, 1935, 1953, 1971, 1989, 2007, 2025, 2043, 2061, 2079, 2097, 2115, 2133, 2151, 2169, 2187, 2205, 2223, 2241, 2259, 2277, 2295, 2313, 2331, 2349, 2367, 2385, 2403, 2421, 2439, 2457, 2475, 2493, 2511, 2529, 2547, 2565, 2583, 2601, 2619, 2637, 2655, 2673, 2691, 2709, 2727, 2745, 2763, 2781, 2799, 2817, 2835, 2853, 2871, 2889, 2907, 2925, 2943, 2961, 2979, 2997, 3015, 3033, 3051, 3069, 3087, 3105, 3123, 3141, 3159, 3177, 3195, 3213, 3231, 3249, 3267, 3285, 3303, 3321, 3339, 3357, 3375, 3393, 3411, 3429, 3447, 3465, 3483, 3501, 3519, 3537, 3555, 3573, 3591, 3609, 3627, 3645, 3663, 3681, 3699, 3717, 3735, 3753, 3771, 3789, 3807, 3825, 3843, 3861, 3879, 3897, 3915, 3933, 3951, 3969, 3987, 4005, 4023, 4041, 4059, 4077, 4095, 4113, 4131, 4149, 4167, 4185, 4203, 4221, 4239, 4257, 4275, 4293, 4311, 4329, 4347, 4365, 4383, 4401, 4419, 4437, 4455, 4473, 4491, 4509, 4527, 4545, 4563, 4581, 4599, 4617, 4635, 4653, 4671, 4689, 4707, 4725, 4743, 4761, 4779, 4797, 4815, 4833, 4851, 4869, 4887, 4905, 4923, 4941, 4959, 4977, 4995, 5013, 5031, 5049, 5067, 5085, 5103, 5121, 5139, 5157, 5175, 5193, 5211, 5229, 5247, 5265, 5283, 5301, 5319, 5337, 5355, 5373, 5391, 5409, 5427, 5445, 5463, 5481, 5499, 5517, 5535, 5553, 5571, 5589, 5607, 5625, 1296, 1314, 1332, 1350, 1368, 1386, 1404, 1422, 1440, 1458, 1476, 1494, 1512, 1530, 1548, 1566, 1584, 1602, 1620, 1638, 1656, 1674, 1692, 1710, 1728, 1746, 1764, 1782, 1800, 1818, 1836, 1854, 1872, 1890, 1908, 1926, 1944, 1962, 1980, 1998, 2016, 2034, 2052, 2070, 2088, 2106, 2124, 2142, 2160, 2178, 2196, 2214, 2232, 2250, 2268, 2286, 2304, 2322, 2340, 2358, 2376, 2394, 2412, 2430, 2448, 2466, 2484, 2502, 2520, 2538, 2556, 2574, 2592, 2610, 2628, 2646, 2664, 2682, 2700, 2718, 2736, 2754, 2772, 2790, 2808, 2826, 2844, 2862, 2880, 2898, 2916, 2934, 2952, 2970, 2988, 3006, 3024, 3042, 3060, 3078, 3096, 3114, 3132, 3150, 3168, 3186, 3204, 3222, 3240, 3258, 3276, 3294, 3312, 3330, 3348, 3366, 3384, 3402, 3420, 3438, 3456, 3474, 3492, 3510, 3528, 3546, 3564, 3582, 3600, 3618, 3636, 3654, 3672, 3690, 3708, 3726, 3744, 3762, 3780, 3798, 3816, 3834, 3852, 3870, 3888, 3906, 3924, 3942, 3960, 3978, 3996, 4014, 4032, 4050, 4068, 4086, 4104, 4122, 4140, 4158, 4176, 4194, 4212, 4230, 4248, 4266, 4284, 4302, 4320, 4338, 4356, 4374, 4392, 4410, 4428, 4446, 4464, 4482, 4500, 4518, 4536, 4554, 4572, 4590, 4608, 4626, 4644, 4662, 4680, 4698, 4716, 4734, 4752, 4770, 4788, 4806, 4824, 4842, 4860, 4878, 4896, 4914, 4932, 4950, 4968, 4986, 5004, 5022, 5040, 5058, 5076, 5094, 5112, 5130, 5148, 5166, 5184, 5202, 5220, 5238, 5256, 5274, 5292, 5310, 5328, 5346, 5364, 5382, 5400, 5418, 5436, 5454, 5472, 5490, 5508, 5526, 5544, 5562, 5580, 5598, 5616, 5634, 5652, 5670, 5688, 5706, 5724, 5742, 5760, 5778, 5796, 5814, 5832, 5850, 5868, 5886, 5904, 5922, 5940, 5958, 5976, 5994, 6012, 6030, 6048, 6066, 6084, 6102, 6120, 6138, 6156, 6174, 6192, 6210, 6228, 6246, 6264, 6282, 6300, 6318, 6336, 6354, 6372, 6390, 6408, 6426, 6444, 6462, 6480, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198, 216, 234, 252, 270, 288, 306, 324, 342, 360, 378, 396, 414, 432, 450, 468, 486, 504, 522, 540, 558, 576, 594, 612, 630, 648, 666, 684, 702, 720, 738, 756, 774, 792, 810, 828, 846, 864, 882, 900, 918, 936, 954, 972, 990, 1008, 1026, 1044, 1062, 1080, 1098, 1116, 1134, 1152, 1170, 1188, 1206, 1224, 1242, 1260, 1278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4812, 4830, 4848, 4866, 4884, 4902, 4920, 4938, 4956, 4974, 4992, 5010, 5028, 5046, 5064, 5082, 5100, 5118, 5136, 5154, 5172, 5190, 5208, 5226, 5244, 5262, 5280, 5298, 5316, 5334, 5352, 5370, 5388, 5406, 5424, 5442, 5460, 5478, 5496, 5514, 5532, 5550, 5568, 5586, 5604, 5622, 5640, 5658, 5676, 5694, 5712, 5730, 5748, 5766, 5784, 5802, 5820, 5838, 5856, 5874, 5892, 5910, 5928, 5946, 5964, 5982, 6000, 6018, 6036, 6054, 6072, 6090, 6108, 6126, 6144, 6162, 6180, 6198, 6216, 6234, 6252, 6270, 6288, 6306, 6324, 6342, 6360, 6378, 6396, 6414, 6432, 6450, 6468, 6, 24, 42, 60, 78, 96, 114, 132, 150, 168, 186, 204, 222, 240, 258, 276, 294, 312, 330, 348, 366, 384, 402, 420, 438, 456, 474, 492, 510, 528, 546, 564, 582, 600, 618, 636, 654, 672, 690, 708, 726, 744, 762, 780, 798, 816, 834, 852, 870, 888, 906, 924, 942, 960, 978, 996, 1014, 1032, 1050, 1068, 1086, 1104, 1122, 1140, 1158, 1176, 1194, 1212, 1230, 1248, 1266, 1284, 1302, 1320, 1338, 1356, 1374, 1392, 1410, 1428, 1446, 1464, 1482, 1500, 1518, 1536, 1554, 1572, 1590, 1608, 1626, 1644, 1662, 1680, 1698, 1716, 1734, 1752, 1770, 1788, 1806, 1824, 1842, 1860, 1878, 1896, 1914, 1932, 1950, 1968, 1986, 2004, 2022, 2040, 2058, 2076, 2094, 2112, 2130, 2148, 2166, 2184, 2202, 2220, 2238, 2256, 2274, 2292, 2310, 2328, 2346, 2364, 2382, 2400, 2418, 2436, 2454, 2472, 2490, 2508, 2526, 2544, 2562, 2580, 2598, 2616, 2634, 2652, 2670, 2688, 2706, 2724, 2742, 2760, 2778, 2796, 2814, 2832, 2850, 2868, 2886, 2904, 2922, 2940, 2958, 2976, 2994, 3012, 3030, 3048, 3066, 3084, 3102, 3120, 3138, 3156, 3174, 3192, 3210, 3228, 3246, 3264, 3282, 3300, 3318, 3336, 3354, 3372, 3390, 3408, 3426, 3444, 3462, 3480, 3498, 3516, 3534, 3552, 3570, 3588, 3606, 3624, 3642, 3660, 3678, 3696, 3714, 3732, 3750, 3768, 3786, 3804, 3822, 3840, 3858, 3876, 3894, 3912, 3930, 3948, 3966, 3984, 4002, 4020, 4038, 4056, 4074, 4092, 4110, 4128, 4146, 4164, 4182, 4200, 4218, 4236, 4254, 4272, 4290, 4308, 4326, 4344, 4362, 4380, 4398, 4416, 4434, 4452, 4470, 4488, 4506, 4524, 4542, 4560, 4578, 4596, 4614, 4632, 4650, 4668, 4686, 4704, 4722, 4740, 4758, 4776, 4794, 2929, 2947, 2965, 2983, 3001, 3019, 3037, 3055, 3073, 3091, 3109, 3127, 3145, 3163, 3181, 3199, 3217, 3235, 3253, 3271, 3289, 3307, 3325, 3343, 3361, 3379, 3397, 3415, 3433, 3451, 3469, 3487, 3505, 3523, 3541, 3559, 3577, 3595, 3613, 3631, 3649, 3667, 3685, 3703, 3721, 3739, 3757, 3775, 3793, 3811, 3829, 3847, 3865, 3883, 3901, 3919, 3937, 3955, 3973, 3991, 4009, 4027, 4045, 4063, 4081, 4099, 4117, 4135, 4153, 4171, 4189, 4207, 4225, 4243, 4261, 4279, 4297, 4315, 4333, 4351, 4369, 4387, 4405, 4423, 4441, 4459, 4477, 4495, 4513, 4531, 4549, 4567, 4585, 4603, 4621, 4639, 4657, 4675, 4693, 4711, 4729, 4747, 4765, 4783, 4801, 4819, 4837, 4855, 4873, 4891, 4909, 4927, 4945, 4963, 4981, 4999, 5017, 5035, 5053, 5071, 5089, 5107, 5125, 5143, 5161, 5179, 5197, 5215, 5233, 5251, 5269, 5287, 5305, 5323, 5341, 5359, 5377, 5395, 5413, 5431, 5449, 5467, 5485, 5503, 5521, 5539, 5557, 5575, 5593, 5611, 5629, 5647, 5665, 5683, 5701, 5719, 5737, 5755, 5773, 5791, 5809, 5827, 5845, 5863, 5881, 5899, 5917, 5935, 5953, 5971, 5989, 6007, 6025, 6043, 6061, 6079, 6097, 6115, 6133, 6151, 6169, 6187, 6205, 6223, 6241, 6259, 6277, 6295, 6313, 6331, 6349, 6367, 6385, 6403, 6421, 6439, 6457, 6475, 13, 31, 49, 67, 85, 103, 121, 139, 157, 175, 193, 211, 229, 247, 265, 283, 301, 319, 337, 355, 373, 391, 409, 427, 445, 463, 481, 499, 517, 535, 553, 571, 589, 607, 625, 643, 661, 679, 697, 715, 733, 751, 769, 787, 805, 823, 841, 859, 877, 895, 913, 931, 949, 967, 985, 1003, 1021, 1039, 1057, 1075, 1093, 1111, 1129, 1147, 1165, 1183, 1201, 1219, 1237, 1255, 1273, 1291, 1309, 1327, 1345, 1363, 1381, 1399, 1417, 1435, 1453, 1471, 1489, 1507, 1525, 1543, 1561, 1579, 1597, 1615, 1633, 1651, 1669, 1687, 1705, 1723, 1741, 1759, 1777, 1795, 1813, 1831, 1849, 1867, 1885, 1903, 1921, 1939, 1957, 1975, 1993, 2011, 2029, 2047, 2065, 2083, 2101, 2119, 2137, 2155, 2173, 2191, 2209, 2227, 2245, 2263, 2281, 2299, 2317, 2335, 2353, 2371, 2389, 2407, 2425, 2443, 2461, 2479, 2497, 2515, 2533, 2551, 2569, 2587, 2605, 2623, 2641, 2659, 2677, 2695, 2713, 2731, 2749, 2767, 2785, 2803, 2821, 2839, 2857, 2875, 2893, 2911, 6239, 6257, 6275, 6293, 6311, 6329, 6347, 6365, 6383, 6401, 6419, 6437, 6455, 6473, 11, 29, 47, 65, 83, 101, 119, 137, 155, 173, 191, 209, 227, 245, 263, 281, 299, 317, 335, 353, 371, 389, 407, 425, 443, 461, 479, 497, 515, 533, 551, 569, 587, 605, 623, 641, 659, 677, 695, 713, 731, 749, 767, 785, 803, 821, 839, 857, 875, 893, 911, 929, 947, 965, 983, 1001, 1019, 1037, 1055, 1073, 1091, 1109, 1127, 1145, 1163, 1181, 1199, 1217, 1235, 1253, 1271, 1289, 1307, 1325, 1343, 1361, 1379, 1397, 1415, 1433, 1451, 1469, 1487, 1505, 1523, 1541, 1559, 1577, 1595, 1613, 1631, 1649, 1667, 1685, 1703, 1721, 1739, 1757, 1775, 1793, 1811, 1829, 1847, 1865, 1883, 1901, 1919, 1937, 1955, 1973, 1991, 2009, 2027, 2045, 2063, 2081, 2099, 2117, 2135, 2153, 2171, 2189, 2207, 2225, 2243, 2261, 2279, 2297, 2315, 2333, 2351, 2369, 2387, 2405, 2423, 2441, 2459, 2477, 2495, 2513, 2531, 2549, 2567, 2585, 2603, 2621, 2639, 2657, 2675, 2693, 2711, 2729, 2747, 2765, 2783, 2801, 2819, 2837, 2855, 2873, 2891, 2909, 2927, 2945, 2963, 2981, 2999, 3017, 3035, 3053, 3071, 3089, 3107, 3125, 3143, 3161, 3179, 3197, 3215, 3233, 3251, 3269, 3287, 3305, 3323, 3341, 3359, 3377, 3395, 3413, 3431, 3449, 3467, 3485, 3503, 3521, 3539, 3557, 3575, 3593, 3611, 3629, 3647, 3665, 3683, 3701, 3719, 3737, 3755, 3773, 3791, 3809, 3827, 3845, 3863, 3881, 3899, 3917, 3935, 3953, 3971, 3989, 4007, 4025, 4043, 4061, 4079, 4097, 4115, 4133, 4151, 4169, 4187, 4205, 4223, 4241, 4259, 4277, 4295, 4313, 4331, 4349, 4367, 4385, 4403, 4421, 4439, 4457, 4475, 4493, 4511, 4529, 4547, 4565, 4583, 4601, 4619, 4637, 4655, 4673, 4691, 4709, 4727, 4745, 4763, 4781, 4799, 4817, 4835, 4853, 4871, 4889, 4907, 4925, 4943, 4961, 4979, 4997, 5015, 5033, 5051, 5069, 5087, 5105, 5123, 5141, 5159, 5177, 5195, 5213, 5231, 5249, 5267, 5285, 5303, 5321, 5339, 5357, 5375, 5393, 5411, 5429, 5447, 5465, 5483, 5501, 5519, 5537, 5555, 5573, 5591, 5609, 5627, 5645, 5663, 5681, 5699, 5717, 5735, 5753, 5771, 5789, 5807, 5825, 5843, 5861, 5879, 5897, 5915, 5933, 5951, 5969, 5987, 6005, 6023, 6041, 6059, 6077, 6095, 6113, 6131, 6149, 6167, 6185, 6203, 6221, 3957, 3975, 3993, 4011, 4029, 4047, 4065, 4083, 4101, 4119, 4137, 4155, 4173, 4191, 4209, 4227, 4245, 4263, 4281, 4299, 4317, 4335, 4353, 4371, 4389, 4407, 4425, 4443, 4461, 4479, 4497, 4515, 4533, 4551, 4569, 4587, 4605, 4623, 4641, 4659, 4677, 4695, 4713, 4731, 4749, 4767, 4785, 4803, 4821, 4839, 4857, 4875, 4893, 4911, 4929, 4947, 4965, 4983, 5001, 5019, 5037, 5055, 5073, 5091, 5109, 5127, 5145, 5163, 5181, 5199, 5217, 5235, 5253, 5271, 5289, 5307, 5325, 5343, 5361, 5379, 5397, 5415, 5433, 5451, 5469, 5487, 5505, 5523, 5541, 5559, 5577, 5595, 5613, 5631, 5649, 5667, 5685, 5703, 5721, 5739, 5757, 5775, 5793, 5811, 5829, 5847, 5865, 5883, 5901, 5919, 5937, 5955, 5973, 5991, 6009, 6027, 6045, 6063, 6081, 6099, 6117, 6135, 6153, 6171, 6189, 6207, 6225, 6243, 6261, 6279, 6297, 6315, 6333, 6351, 6369, 6387, 6405, 6423, 6441, 6459, 6477, 15, 33, 51, 69, 87, 105, 123, 141, 159, 177, 195, 213, 231, 249, 267, 285, 303, 321, 339, 357, 375, 393, 411, 429, 447, 465, 483, 501, 519, 537, 555, 573, 591, 609, 627, 645, 663, 681, 699, 717, 735, 753, 771, 789, 807, 825, 843, 861, 879, 897, 915, 933, 951, 969, 987, 1005, 1023, 1041, 1059, 1077, 1095, 1113, 1131, 1149, 1167, 1185, 1203, 1221, 1239, 1257, 1275, 1293, 1311, 1329, 1347, 1365, 1383, 1401, 1419, 1437, 1455, 1473, 1491, 1509, 1527, 1545, 1563, 1581, 1599, 1617, 1635, 1653, 1671, 1689, 1707, 1725, 1743, 1761, 1779, 1797, 1815, 1833, 1851, 1869, 1887, 1905, 1923, 1941, 1959, 1977, 1995, 2013, 2031, 2049, 2067, 2085, 2103, 2121, 2139, 2157, 2175, 2193, 2211, 2229, 2247, 2265, 2283, 2301, 2319, 2337, 2355, 2373, 2391, 2409, 2427, 2445, 2463, 2481, 2499, 2517, 2535, 2553, 2571, 2589, 2607, 2625, 2643, 2661, 2679, 2697, 2715, 2733, 2751, 2769, 2787, 2805, 2823, 2841, 2859, 2877, 2895, 2913, 2931, 2949, 2967, 2985, 3003, 3021, 3039, 3057, 3075, 3093, 3111, 3129, 3147, 3165, 3183, 3201, 3219, 3237, 3255, 3273, 3291, 3309, 3327, 3345, 3363, 3381, 3399, 3417, 3435, 3453, 3471, 3489, 3507, 3525, 3543, 3561, 3579, 3597, 3615, 3633, 3651, 3669, 3687, 3705, 3723, 3741, 3759, 3777, 3795, 3813, 3831, 3849, 3867, 3885, 3903, 3921, 3939, 737, 755, 773, 791, 809, 827, 845, 863, 881, 899, 917, 935, 953, 971, 989, 1007, 1025, 1043, 1061, 1079, 1097, 1115, 1133, 1151, 1169, 1187, 1205, 1223, 1241, 1259, 1277, 1295, 1313, 1331, 1349, 1367, 1385, 1403, 1421, 1439, 1457, 1475, 1493, 1511, 1529, 1547, 1565, 1583, 1601, 1619, 1637, 1655, 1673, 1691, 1709, 1727, 1745, 1763, 1781, 1799, 1817, 1835, 1853, 1871, 1889, 1907, 1925, 1943, 1961, 1979, 1997, 2015, 2033, 2051, 2069, 2087, 2105, 2123, 2141, 2159, 2177, 2195, 2213, 2231, 2249, 2267, 2285, 2303, 2321, 2339, 2357, 2375, 2393, 2411, 2429, 2447, 2465, 2483, 2501, 2519, 2537, 2555, 2573, 2591, 2609, 2627, 2645, 2663, 2681, 2699, 2717, 2735, 2753, 2771, 2789, 2807, 2825, 2843, 2861, 2879, 2897, 2915, 2933, 2951, 2969, 2987, 3005, 3023, 3041, 3059, 3077, 3095, 3113, 3131, 3149, 3167, 3185, 3203, 3221, 3239, 3257, 3275, 3293, 3311, 3329, 3347, 3365, 3383, 3401, 3419, 3437, 3455, 3473, 3491, 3509, 3527, 3545, 3563, 3581, 3599, 3617, 3635, 3653, 3671, 3689, 3707, 3725, 3743, 3761, 3779, 3797, 3815, 3833, 3851, 3869, 3887, 3905, 3923, 3941, 3959, 3977, 3995, 4013, 4031, 4049, 4067, 4085, 4103, 4121, 4139, 4157, 4175, 4193, 4211, 4229, 4247, 4265, 4283, 4301, 4319, 4337, 4355, 4373, 4391, 4409, 4427, 4445, 4463, 4481, 4499, 4517, 4535, 4553, 4571, 4589, 4607, 4625, 4643, 4661, 4679, 4697, 4715, 4733, 4751, 4769, 4787, 4805, 4823, 4841, 4859, 4877, 4895, 4913, 4931, 4949, 4967, 4985, 5003, 5021, 5039, 5057, 5075, 5093, 5111, 5129, 5147, 5165, 5183, 5201, 5219, 5237, 5255, 5273, 5291, 5309, 5327, 5345, 5363, 5381, 5399, 5417, 5435, 5453, 5471, 5489, 5507, 5525, 5543, 5561, 5579, 5597, 5615, 5633, 5651, 5669, 5687, 5705, 5723, 5741, 5759, 5777, 5795, 5813, 5831, 5849, 5867, 5885, 5903, 5921, 5939, 5957, 5975, 5993, 6011, 6029, 6047, 6065, 6083, 6101, 6119, 6137, 6155, 6173, 6191, 6209, 6227, 6245, 6263, 6281, 6299, 6317, 6335, 6353, 6371, 6389, 6407, 6425, 6443, 6461, 6479, 17, 35, 53, 71, 89, 107, 125, 143, 161, 179, 197, 215, 233, 251, 269, 287, 305, 323, 341, 359, 377, 395, 413, 431, 449, 467, 485, 503, 521, 539, 557, 575, 593, 611, 629, 647, 665, 683, 701, 719, 5890, 5908, 5926, 5944, 5962, 5980, 5998, 6016, 6034, 6052, 6070, 6088, 6106, 6124, 6142, 6160, 6178, 6196, 6214, 6232, 6250, 6268, 6286, 6304, 6322, 6340, 6358, 6376, 6394, 6412, 6430, 6448, 6466, 4, 22, 40, 58, 76, 94, 112, 130, 148, 166, 184, 202, 220, 238, 256, 274, 292, 310, 328, 346, 364, 382, 400, 418, 436, 454, 472, 490, 508, 526, 544, 562, 580, 598, 616, 634, 652, 670, 688, 706, 724, 742, 760, 778, 796, 814, 832, 850, 868, 886, 904, 922, 940, 958, 976, 994, 1012, 1030, 1048, 1066, 1084, 1102, 1120, 1138, 1156, 1174, 1192, 1210, 1228, 1246, 1264, 1282, 1300, 1318, 1336, 1354, 1372, 1390, 1408, 1426, 1444, 1462, 1480, 1498, 1516, 1534, 1552, 1570, 1588, 1606, 1624, 1642, 1660, 1678, 1696, 1714, 1732, 1750, 1768, 1786, 1804, 1822, 1840, 1858, 1876, 1894, 1912, 1930, 1948, 1966, 1984, 2002, 2020, 2038, 2056, 2074, 2092, 2110, 2128, 2146, 2164, 2182, 2200, 2218, 2236, 2254, 2272, 2290, 2308, 2326, 2344, 2362, 2380, 2398, 2416, 2434, 2452, 2470, 2488, 2506, 2524, 2542, 2560, 2578, 2596, 2614, 2632, 2650, 2668, 2686, 2704, 2722, 2740, 2758, 2776, 2794, 2812, 2830, 2848, 2866, 2884, 2902, 2920, 2938, 2956, 2974, 2992, 3010, 3028, 3046, 3064, 3082, 3100, 3118, 3136, 3154, 3172, 3190, 3208, 3226, 3244, 3262, 3280, 3298, 3316, 3334, 3352, 3370, 3388, 3406, 3424, 3442, 3460, 3478, 3496, 3514, 3532, 3550, 3568, 3586, 3604, 3622, 3640, 3658, 3676, 3694, 3712, 3730, 3748, 3766, 3784, 3802, 3820, 3838, 3856, 3874, 3892, 3910, 3928, 3946, 3964, 3982, 4000, 4018, 4036, 4054, 4072, 4090, 4108, 4126, 4144, 4162, 4180, 4198, 4216, 4234, 4252, 4270, 4288, 4306, 4324, 4342, 4360, 4378, 4396, 4414, 4432, 4450, 4468, 4486, 4504, 4522, 4540, 4558, 4576, 4594, 4612, 4630, 4648, 4666, 4684, 4702, 4720, 4738, 4756, 4774, 4792, 4810, 4828, 4846, 4864, 4882, 4900, 4918, 4936, 4954, 4972, 4990, 5008, 5026, 5044, 5062, 5080, 5098, 5116, 5134, 5152, 5170, 5188, 5206, 5224, 5242, 5260, 5278, 5296, 5314, 5332, 5350, 5368, 5386, 5404, 5422, 5440, 5458, 5476, 5494, 5512, 5530, 5548, 5566, 5584, 5602, 5620, 5638, 5656, 5674, 5692, 5710, 5728, 5746, 5764, 5782, 5800, 5818, 5836, 5854, 5872, 5798, 5816, 5834, 5852, 5870, 5888, 5906, 5924, 5942, 5960, 5978, 5996, 6014, 6032, 6050, 6068, 6086, 6104, 6122, 6140, 6158, 6176, 6194, 6212, 6230, 6248, 6266, 6284, 6302, 6320, 6338, 6356, 6374, 6392, 6410, 6428, 6446, 6464, 2, 20, 38, 56, 74, 92, 110, 128, 146, 164, 182, 200, 218, 236, 254, 272, 290, 308, 326, 344, 362, 380, 398, 416, 434, 452, 470, 488, 506, 524, 542, 560, 578, 596, 614, 632, 650, 668, 686, 704, 722, 740, 758, 776, 794, 812, 830, 848, 866, 884, 902, 920, 938, 956, 974, 992, 1010, 1028, 1046, 1064, 1082, 1100, 1118, 1136, 1154, 1172, 1190, 1208, 1226, 1244, 1262, 1280, 1298, 1316, 1334, 1352, 1370, 1388, 1406, 1424, 1442, 1460, 1478, 1496, 1514, 1532, 1550, 1568, 1586, 1604, 1622, 1640, 1658, 1676, 1694, 1712, 1730, 1748, 1766, 1784, 1802, 1820, 1838, 1856, 1874, 1892, 1910, 1928, 1946, 1964, 1982, 2000, 2018, 2036, 2054, 2072, 2090, 2108, 2126, 2144, 2162, 2180, 2198, 2216, 2234, 2252, 2270, 2288, 2306, 2324, 2342, 2360, 2378, 2396, 2414, 2432, 2450, 2468, 2486, 2504, 2522, 2540, 2558, 2576, 2594, 2612, 2630, 2648, 2666, 2684, 2702, 2720, 2738, 2756, 2774, 2792, 2810, 2828, 2846, 2864, 2882, 2900, 2918, 2936, 2954, 2972, 2990, 3008, 3026, 3044, 3062, 3080, 3098, 3116, 3134, 3152, 3170, 3188, 3206, 3224, 3242, 3260, 3278, 3296, 3314, 3332, 3350, 3368, 3386, 3404, 3422, 3440, 3458, 3476, 3494, 3512, 3530, 3548, 3566, 3584, 3602, 3620, 3638, 3656, 3674, 3692, 3710, 3728, 3746, 3764, 3782, 3800, 3818, 3836, 3854, 3872, 3890, 3908, 3926, 3944, 3962, 3980, 3998, 4016, 4034, 4052, 4070, 4088, 4106, 4124, 4142, 4160, 4178, 4196, 4214, 4232, 4250, 4268, 4286, 4304, 4322, 4340, 4358, 4376, 4394, 4412, 4430, 4448, 4466, 4484, 4502, 4520, 4538, 4556, 4574, 4592, 4610, 4628, 4646, 4664, 4682, 4700, 4718, 4736, 4754, 4772, 4790, 4808, 4826, 4844, 4862, 4880, 4898, 4916, 4934, 4952, 4970, 4988, 5006, 5024, 5042, 5060, 5078, 5096, 5114, 5132, 5150, 5168, 5186, 5204, 5222, 5240, 5258, 5276, 5294, 5312, 5330, 5348, 5366, 5384, 5402, 5420, 5438, 5456, 5474, 5492, 5510, 5528, 5546, 5564, 5582, 5600, 5618, 5636, 5654, 5672, 5690, 5708, 5726, 5744, 5762, 5780, 4887, 4905, 4923, 4941, 4959, 4977, 4995, 5013, 5031, 5049, 5067, 5085, 5103, 5121, 5139, 5157, 5175, 5193, 5211, 5229, 5247, 5265, 5283, 5301, 5319, 5337, 5355, 5373, 5391, 5409, 5427, 5445, 5463, 5481, 5499, 5517, 5535, 5553, 5571, 5589, 5607, 5625, 5643, 5661, 5679, 5697, 5715, 5733, 5751, 5769, 5787, 5805, 5823, 5841, 5859, 5877, 5895, 5913, 5931, 5949, 5967, 5985, 6003, 6021, 6039, 6057, 6075, 6093, 6111, 6129, 6147, 6165, 6183, 6201, 6219, 6237, 6255, 6273, 6291, 6309, 6327, 6345, 6363, 6381, 6399, 6417, 6435, 6453, 6471, 9, 27, 45, 63, 81, 99, 117, 135, 153, 171, 189, 207, 225, 243, 261, 279, 297, 315, 333, 351, 369, 387, 405, 423, 441, 459, 477, 495, 513, 531, 549, 567, 585, 603, 621, 639, 657, 675, 693, 711, 729, 747, 765, 783, 801, 819, 837, 855, 873, 891, 909, 927, 945, 963, 981, 999, 1017, 1035, 1053, 1071, 1089, 1107, 1125, 1143, 1161, 1179, 1197, 1215, 1233, 1251, 1269, 1287, 1305, 1323, 1341, 1359, 1377, 1395, 1413, 1431, 1449, 1467, 1485, 1503, 1521, 1539, 1557, 1575, 1593, 1611, 1629, 1647, 1665, 1683, 1701, 1719, 1737, 1755, 1773, 1791, 1809, 1827, 1845, 1863, 1881, 1899, 1917, 1935, 1953, 1971, 1989, 2007, 2025, 2043, 2061, 2079, 2097, 2115, 2133, 2151, 2169, 2187, 2205, 2223, 2241, 2259, 2277, 2295, 2313, 2331, 2349, 2367, 2385, 2403, 2421, 2439, 2457, 2475, 2493, 2511, 2529, 2547, 2565, 2583, 2601, 2619, 2637, 2655, 2673, 2691, 2709, 2727, 2745, 2763, 2781, 2799, 2817, 2835, 2853, 2871, 2889, 2907, 2925, 2943, 2961, 2979, 2997, 3015, 3033, 3051, 3069, 3087, 3105, 3123, 3141, 3159, 3177, 3195, 3213, 3231, 3249, 3267, 3285, 3303, 3321, 3339, 3357, 3375, 3393, 3411, 3429, 3447, 3465, 3483, 3501, 3519, 3537, 3555, 3573, 3591, 3609, 3627, 3645, 3663, 3681, 3699, 3717, 3735, 3753, 3771, 3789, 3807, 3825, 3843, 3861, 3879, 3897, 3915, 3933, 3951, 3969, 3987, 4005, 4023, 4041, 4059, 4077, 4095, 4113, 4131, 4149, 4167, 4185, 4203, 4221, 4239, 4257, 4275, 4293, 4311, 4329, 4347, 4365, 4383, 4401, 4419, 4437, 4455, 4473, 4491, 4509, 4527, 4545, 4563, 4581, 4599, 4617, 4635, 4653, 4671, 4689, 4707, 4725, 4743, 4761, 4779, 4797, 4815, 4833, 4851, 4869, 2952, 2970, 2988, 3006, 3024, 3042, 3060, 3078, 3096, 3114, 3132, 3150, 3168, 3186, 3204, 3222, 3240, 3258, 3276, 3294, 3312, 3330, 3348, 3366, 3384, 3402, 3420, 3438, 3456, 3474, 3492, 3510, 3528, 3546, 3564, 3582, 3600, 3618, 3636, 3654, 3672, 3690, 3708, 3726, 3744, 3762, 3780, 3798, 3816, 3834, 3852, 3870, 3888, 3906, 3924, 3942, 3960, 3978, 3996, 4014, 4032, 4050, 4068, 4086, 4104, 4122, 4140, 4158, 4176, 4194, 4212, 4230, 4248, 4266, 4284, 4302, 4320, 4338, 4356, 4374, 4392, 4410, 4428, 4446, 4464, 4482, 4500, 4518, 4536, 4554, 4572, 4590, 4608, 4626, 4644, 4662, 4680, 4698, 4716, 4734, 4752, 4770, 4788, 4806, 4824, 4842, 4860, 4878, 4896, 4914, 4932, 4950, 4968, 4986, 5004, 5022, 5040, 5058, 5076, 5094, 5112, 5130, 5148, 5166, 5184, 5202, 5220, 5238, 5256, 5274, 5292, 5310, 5328, 5346, 5364, 5382, 5400, 5418, 5436, 5454, 5472, 5490, 5508, 5526, 5544, 5562, 5580, 5598, 5616, 5634, 5652, 5670, 5688, 5706, 5724, 5742, 5760, 5778, 5796, 5814, 5832, 5850, 5868, 5886, 5904, 5922, 5940, 5958, 5976, 5994, 6012, 6030, 6048, 6066, 6084, 6102, 6120, 6138, 6156, 6174, 6192, 6210, 6228, 6246, 6264, 6282, 6300, 6318, 6336, 6354, 6372, 6390, 6408, 6426, 6444, 6462, 6480, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198, 216, 234, 252, 270, 288, 306, 324, 342, 360, 378, 396, 414, 432, 450, 468, 486, 504, 522, 540, 558, 576, 594, 612, 630, 648, 666, 684, 702, 720, 738, 756, 774, 792, 810, 828, 846, 864, 882, 900, 918, 936, 954, 972, 990, 1008, 1026, 1044, 1062, 1080, 1098, 1116, 1134, 1152, 1170, 1188, 1206, 1224, 1242, 1260, 1278, 1296, 1314, 1332, 1350, 1368, 1386, 1404, 1422, 1440, 1458, 1476, 1494, 1512, 1530, 1548, 1566, 1584, 1602, 1620, 1638, 1656, 1674, 1692, 1710, 1728, 1746, 1764, 1782, 1800, 1818, 1836, 1854, 1872, 1890, 1908, 1926, 1944, 1962, 1980, 1998, 2016, 2034, 2052, 2070, 2088, 2106, 2124, 2142, 2160, 2178, 2196, 2214, 2232, 2250, 2268, 2286, 2304, 2322, 2340, 2358, 2376, 2394, 2412, 2430, 2448, 2466, 2484, 2502, 2520, 2538, 2556, 2574, 2592, 2610, 2628, 2646, 2664, 2682, 2700, 2718, 2736, 2754, 2772, 2790, 2808, 2826, 2844, 2862, 2880, 2898, 2916, 2934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2183, 2201, 2219, 2237, 2255, 2273, 2291, 2309, 2327, 2345, 2363, 2381, 2399, 2417, 2435, 2453, 2471, 2489, 2507, 2525, 2543, 2561, 2579, 2597, 2615, 2633, 2651, 2669, 2687, 2705, 2723, 2741, 2759, 2777, 2795, 2813, 2831, 2849, 2867, 2885, 2903, 2921, 2939, 2957, 2975, 2993, 3011, 3029, 3047, 3065, 3083, 3101, 3119, 3137, 3155, 3173, 3191, 3209, 3227, 3245, 3263, 3281, 3299, 3317, 3335, 3353, 3371, 3389, 3407, 3425, 3443, 3461, 3479, 3497, 3515, 3533, 3551, 3569, 3587, 3605, 3623, 3641, 3659, 3677, 3695, 3713, 3731, 3749, 3767, 3785, 3803, 3821, 3839, 3857, 3875, 3893, 3911, 3929, 3947, 3965, 3983, 4001, 4019, 4037, 4055, 4073, 4091, 4109, 4127, 4145, 4163, 4181, 4199, 4217, 4235, 4253, 4271, 4289, 4307, 4325, 4343, 4361, 4379, 4397, 4415, 4433, 4451, 4469, 4487, 4505, 4523, 4541, 4559, 4577, 4595, 4613, 4631, 4649, 4667, 4685, 4703, 4721, 4739, 4757, 4775, 4793, 4811, 4829, 4847, 4865, 4883, 4901, 4919, 4937, 4955, 4973, 4991, 5009, 5027, 5045, 5063, 5081, 5099, 5117, 5135, 5153, 5171, 5189, 5207, 5225, 5243, 5261, 5279, 5297, 5315, 5333, 5351, 5369, 5387, 5405, 5423, 5441, 5459, 5477, 5495, 5513, 5531, 5549, 5567, 5585, 5603, 5621, 5639, 5657, 5675, 5693, 5711, 5729, 5747, 5765, 5783, 5801, 5819, 5837, 5855, 5873, 5891, 5909, 5927, 5945, 5963, 5981, 5999, 6017, 6035, 6053, 6071, 6089, 6107, 6125, 6143, 6161, 6179, 6197, 6215, 6233, 6251, 6269, 6287, 6305, 6323, 6341, 6359, 6377, 6395, 6413, 6431, 6449, 6467, 5, 23, 41, 59, 77, 95, 113, 131, 149, 167, 185, 203, 221, 239, 257, 275, 293, 311, 329, 347, 365, 383, 401, 419, 437, 455, 473, 491, 509, 527, 545, 563, 581, 599, 617, 635, 653, 671, 689, 707, 725, 743, 761, 779, 797, 815, 833, 851, 869, 887, 905, 923, 941, 959, 977, 995, 1013, 1031, 1049, 1067, 1085, 1103, 1121, 1139, 1157, 1175, 1193, 1211, 1229, 1247, 1265, 1283, 1301, 1319, 1337, 1355, 1373, 1391, 1409, 1427, 1445, 1463, 1481, 1499, 1517, 1535, 1553, 1571, 1589, 1607, 1625, 1643, 1661, 1679, 1697, 1715, 1733, 1751, 1769, 1787, 1805, 1823, 1841, 1859, 1877, 1895, 1913, 1931, 1949, 1967, 1985, 2003, 2021, 2039, 2057, 2075, 2093, 2111, 2129, 2147, 2165, 399, 417, 435, 453, 471, 489, 507, 525, 543, 561, 579, 597, 615, 633, 651, 669, 687, 705, 723, 741, 759, 777, 795, 813, 831, 849, 867, 885, 903, 921, 939, 957, 975, 993, 1011, 1029, 1047, 1065, 1083, 1101, 1119, 1137, 1155, 1173, 1191, 1209, 1227, 1245, 1263, 1281, 1299, 1317, 1335, 1353, 1371, 1389, 1407, 1425, 1443, 1461, 1479, 1497, 1515, 1533, 1551, 1569, 1587, 1605, 1623, 1641, 1659, 1677, 1695, 1713, 1731, 1749, 1767, 1785, 1803, 1821, 1839, 1857, 1875, 1893, 1911, 1929, 1947, 1965, 1983, 2001, 2019, 2037, 2055, 2073, 2091, 2109, 2127, 2145, 2163, 2181, 2199, 2217, 2235, 2253, 2271, 2289, 2307, 2325, 2343, 2361, 2379, 2397, 2415, 2433, 2451, 2469, 2487, 2505, 2523, 2541, 2559, 2577, 2595, 2613, 2631, 2649, 2667, 2685, 2703, 2721, 2739, 2757, 2775, 2793, 2811, 2829, 2847, 2865, 2883, 2901, 2919, 2937, 2955, 2973, 2991, 3009, 3027, 3045, 3063, 3081, 3099, 3117, 3135, 3153, 3171, 3189, 3207, 3225, 3243, 3261, 3279, 3297, 3315, 3333, 3351, 3369, 3387, 3405, 3423, 3441, 3459, 3477, 3495, 3513, 3531, 3549, 3567, 3585, 3603, 3621, 3639, 3657, 3675, 3693, 3711, 3729, 3747, 3765, 3783, 3801, 3819, 3837, 3855, 3873, 3891, 3909, 3927, 3945, 3963, 3981, 3999, 4017, 4035, 4053, 4071, 4089, 4107, 4125, 4143, 4161, 4179, 4197, 4215, 4233, 4251, 4269, 4287, 4305, 4323, 4341, 4359, 4377, 4395, 4413, 4431, 4449, 4467, 4485, 4503, 4521, 4539, 4557, 4575, 4593, 4611, 4629, 4647, 4665, 4683, 4701, 4719, 4737, 4755, 4773, 4791, 4809, 4827, 4845, 4863, 4881, 4899, 4917, 4935, 4953, 4971, 4989, 5007, 5025, 5043, 5061, 5079, 5097, 5115, 5133, 5151, 5169, 5187, 5205, 5223, 5241, 5259, 5277, 5295, 5313, 5331, 5349, 5367, 5385, 5403, 5421, 5439, 5457, 5475, 5493, 5511, 5529, 5547, 5565, 5583, 5601, 5619, 5637, 5655, 5673, 5691, 5709, 5727, 5745, 5763, 5781, 5799, 5817, 5835, 5853, 5871, 5889, 5907, 5925, 5943, 5961, 5979, 5997, 6015, 6033, 6051, 6069, 6087, 6105, 6123, 6141, 6159, 6177, 6195, 6213, 6231, 6249, 6267, 6285, 6303, 6321, 6339, 6357, 6375, 6393, 6411, 6429, 6447, 6465, 3, 21, 39, 57, 75, 93, 111, 129, 147, 165, 183, 201, 219, 237, 255, 273, 291, 309, 327, 345, 363, 381, 4940, 4958, 4976, 4994, 5012, 5030, 5048, 5066, 5084, 5102, 5120, 5138, 5156, 5174, 5192, 5210, 5228, 5246, 5264, 5282, 5300, 5318, 5336, 5354, 5372, 5390, 5408, 5426, 5444, 5462, 5480, 5498, 5516, 5534, 5552, 5570, 5588, 5606, 5624, 5642, 5660, 5678, 5696, 5714, 5732, 5750, 5768, 5786, 5804, 5822, 5840, 5858, 5876, 5894, 5912, 5930, 5948, 5966, 5984, 6002, 6020, 6038, 6056, 6074, 6092, 6110, 6128, 6146, 6164, 6182, 6200, 6218, 6236, 6254, 6272, 6290, 6308, 6326, 6344, 6362, 6380, 6398, 6416, 6434, 6452, 6470, 8, 26, 44, 62, 80, 98, 116, 134, 152, 170, 188, 206, 224, 242, 260, 278, 296, 314, 332, 350, 368, 386, 404, 422, 440, 458, 476, 494, 512, 530, 548, 566, 584, 602, 620, 638, 656, 674, 692, 710, 728, 746, 764, 782, 800, 818, 836, 854, 872, 890, 908, 926, 944, 962, 980, 998, 1016, 1034, 1052, 1070, 1088, 1106, 1124, 1142, 1160, 1178, 1196, 1214, 1232, 1250, 1268, 1286, 1304, 1322, 1340, 1358, 1376, 1394, 1412, 1430, 1448, 1466, 1484, 1502, 1520, 1538, 1556, 1574, 1592, 1610, 1628, 1646, 1664, 1682, 1700, 1718, 1736, 1754, 1772, 1790, 1808, 1826, 1844, 1862, 1880, 1898, 1916, 1934, 1952, 1970, 1988, 2006, 2024, 2042, 2060, 2078, 2096, 2114, 2132, 2150, 2168, 2186, 2204, 2222, 2240, 2258, 2276, 2294, 2312, 2330, 2348, 2366, 2384, 2402, 2420, 2438, 2456, 2474, 2492, 2510, 2528, 2546, 2564, 2582, 2600, 2618, 2636, 2654, 2672, 2690, 2708, 2726, 2744, 2762, 2780, 2798, 2816, 2834, 2852, 2870, 2888, 2906, 2924, 2942, 2960, 2978, 2996, 3014, 3032, 3050, 3068, 3086, 3104, 3122, 3140, 3158, 3176, 3194, 3212, 3230, 3248, 3266, 3284, 3302, 3320, 3338, 3356, 3374, 3392, 3410, 3428, 3446, 3464, 3482, 3500, 3518, 3536, 3554, 3572, 3590, 3608, 3626, 3644, 3662, 3680, 3698, 3716, 3734, 3752, 3770, 3788, 3806, 3824, 3842, 3860, 3878, 3896, 3914, 3932, 3950, 3968, 3986, 4004, 4022, 4040, 4058, 4076, 4094, 4112, 4130, 4148, 4166, 4184, 4202, 4220, 4238, 4256, 4274, 4292, 4310, 4328, 4346, 4364, 4382, 4400, 4418, 4436, 4454, 4472, 4490, 4508, 4526, 4544, 4562, 4580, 4598, 4616, 4634, 4652, 4670, 4688, 4706, 4724, 4742, 4760, 4778, 4796, 4814, 4832, 4850, 4868, 4886, 4904, 4922, 6046, 6064, 6082, 6100, 6118, 6136, 6154, 6172, 6190, 6208, 6226, 6244, 6262, 6280, 6298, 6316, 6334, 6352, 6370, 6388, 6406, 6424, 6442, 6460, 6478, 16, 34, 52, 70, 88, 106, 124, 142, 160, 178, 196, 214, 232, 250, 268, 286, 304, 322, 340, 358, 376, 394, 412, 430, 448, 466, 484, 502, 520, 538, 556, 574, 592, 610, 628, 646, 664, 682, 700, 718, 736, 754, 772, 790, 808, 826, 844, 862, 880, 898, 916, 934, 952, 970, 988, 1006, 1024, 1042, 1060, 1078, 1096, 1114, 1132, 1150, 1168, 1186, 1204, 1222, 1240, 1258, 1276, 1294, 1312, 1330, 1348, 1366, 1384, 1402, 1420, 1438, 1456, 1474, 1492, 1510, 1528, 1546, 1564, 1582, 1600, 1618, 1636, 1654, 1672, 1690, 1708, 1726, 1744, 1762, 1780, 1798, 1816, 1834, 1852, 1870, 1888, 1906, 1924, 1942, 1960, 1978, 1996, 2014, 2032, 2050, 2068, 2086, 2104, 2122, 2140, 2158, 2176, 2194, 2212, 2230, 2248, 2266, 2284, 2302, 2320, 2338, 2356, 2374, 2392, 2410, 2428, 2446, 2464, 2482, 2500, 2518, 2536, 2554, 2572, 2590, 2608, 2626, 2644, 2662, 2680, 2698, 2716, 2734, 2752, 2770, 2788, 2806, 2824, 2842, 2860, 2878, 2896, 2914, 2932, 2950, 2968, 2986, 3004, 3022, 3040, 3058, 3076, 3094, 3112, 3130, 3148, 3166, 3184, 3202, 3220, 3238, 3256, 3274, 3292, 3310, 3328, 3346, 3364, 3382, 3400, 3418, 3436, 3454, 3472, 3490, 3508, 3526, 3544, 3562, 3580, 3598, 3616, 3634, 3652, 3670, 3688, 3706, 3724, 3742, 3760, 3778, 3796, 3814, 3832, 3850, 3868, 3886, 3904, 3922, 3940, 3958, 3976, 3994, 4012, 4030, 4048, 4066, 4084, 4102, 4120, 4138, 4156, 4174, 4192, 4210, 4228, 4246, 4264, 4282, 4300, 4318, 4336, 4354, 4372, 4390, 4408, 4426, 4444, 4462, 4480, 4498, 4516, 4534, 4552, 4570, 4588, 4606, 4624, 4642, 4660, 4678, 4696, 4714, 4732, 4750, 4768, 4786, 4804, 4822, 4840, 4858, 4876, 4894, 4912, 4930, 4948, 4966, 4984, 5002, 5020, 5038, 5056, 5074, 5092, 5110, 5128, 5146, 5164, 5182, 5200, 5218, 5236, 5254, 5272, 5290, 5308, 5326, 5344, 5362, 5380, 5398, 5416, 5434, 5452, 5470, 5488, 5506, 5524, 5542, 5560, 5578, 5596, 5614, 5632, 5650, 5668, 5686, 5704, 5722, 5740, 5758, 5776, 5794, 5812, 5830, 5848, 5866, 5884, 5902, 5920, 5938, 5956, 5974, 5992, 6010, 6028, 2998, 3016, 3034, 3052, 3070, 3088, 3106, 3124, 3142, 3160, 3178, 3196, 3214, 3232, 3250, 3268, 3286, 3304, 3322, 3340, 3358, 3376, 3394, 3412, 3430, 3448, 3466, 3484, 3502, 3520, 3538, 3556, 3574, 3592, 3610, 3628, 3646, 3664, 3682, 3700, 3718, 3736, 3754, 3772, 3790, 3808, 3826, 3844, 3862, 3880, 3898, 3916, 3934, 3952, 3970, 3988, 4006, 4024, 4042, 4060, 4078, 4096, 4114, 4132, 4150, 4168, 4186, 4204, 4222, 4240, 4258, 4276, 4294, 4312, 4330, 4348, 4366, 4384, 4402, 4420, 4438, 4456, 4474, 4492, 4510, 4528, 4546, 4564, 4582, 4600, 4618, 4636, 4654, 4672, 4690, 4708, 4726, 4744, 4762, 4780, 4798, 4816, 4834, 4852, 4870, 4888, 4906, 4924, 4942, 4960, 4978, 4996, 5014, 5032, 5050, 5068, 5086, 5104, 5122, 5140, 5158, 5176, 5194, 5212, 5230, 5248, 5266, 5284, 5302, 5320, 5338, 5356, 5374, 5392, 5410, 5428, 5446, 5464, 5482, 5500, 5518, 5536, 5554, 5572, 5590, 5608, 5626, 5644, 5662, 5680, 5698, 5716, 5734, 5752, 5770, 5788, 5806, 5824, 5842, 5860, 5878, 5896, 5914, 5932, 5950, 5968, 5986, 6004, 6022, 6040, 6058, 6076, 6094, 6112, 6130, 6148, 6166, 6184, 6202, 6220, 6238, 6256, 6274, 6292, 6310, 6328, 6346, 6364, 6382, 6400, 6418, 6436, 6454, 6472, 10, 28, 46, 64, 82, 100, 118, 136, 154, 172, 190, 208, 226, 244, 262, 280, 298, 316, 334, 352, 370, 388, 406, 424, 442, 460, 478, 496, 514, 532, 550, 568, 586, 604, 622, 640, 658, 676, 694, 712, 730, 748, 766, 784, 802, 820, 838, 856, 874, 892, 910, 928, 946, 964, 982, 1000, 1018, 1036, 1054, 1072, 1090, 1108, 1126, 1144, 1162, 1180, 1198, 1216, 1234, 1252, 1270, 1288, 1306, 1324, 1342, 1360, 1378, 1396, 1414, 1432, 1450, 1468, 1486, 1504, 1522, 1540, 1558, 1576, 1594, 1612, 1630, 1648, 1666, 1684, 1702, 1720, 1738, 1756, 1774, 1792, 1810, 1828, 1846, 1864, 1882, 1900, 1918, 1936, 1954, 1972, 1990, 2008, 2026, 2044, 2062, 2080, 2098, 2116, 2134, 2152, 2170, 2188, 2206, 2224, 2242, 2260, 2278, 2296, 2314, 2332, 2350, 2368, 2386, 2404, 2422, 2440, 2458, 2476, 2494, 2512, 2530, 2548, 2566, 2584, 2602, 2620, 2638, 2656, 2674, 2692, 2710, 2728, 2746, 2764, 2782, 2800, 2818, 2836, 2854, 2872, 2890, 2908, 2926, 2944, 2962, 2980, 4363, 4381, 4399, 4417, 4435, 4453, 4471, 4489, 4507, 4525, 4543, 4561, 4579, 4597, 4615, 4633, 4651, 4669, 4687, 4705, 4723, 4741, 4759, 4777, 4795, 4813, 4831, 4849, 4867, 4885, 4903, 4921, 4939, 4957, 4975, 4993, 5011, 5029, 5047, 5065, 5083, 5101, 5119, 5137, 5155, 5173, 5191, 5209, 5227, 5245, 5263, 5281, 5299, 5317, 5335, 5353, 5371, 5389, 5407, 5425, 5443, 5461, 5479, 5497, 5515, 5533, 5551, 5569, 5587, 5605, 5623, 5641, 5659, 5677, 5695, 5713, 5731, 5749, 5767, 5785, 5803, 5821, 5839, 5857, 5875, 5893, 5911, 5929, 5947, 5965, 5983, 6001, 6019, 6037, 6055, 6073, 6091, 6109, 6127, 6145, 6163, 6181, 6199, 6217, 6235, 6253, 6271, 6289, 6307, 6325, 6343, 6361, 6379, 6397, 6415, 6433, 6451, 6469, 7, 25, 43, 61, 79, 97, 115, 133, 151, 169, 187, 205, 223, 241, 259, 277, 295, 313, 331, 349, 367, 385, 403, 421, 439, 457, 475, 493, 511, 529, 547, 565, 583, 601, 619, 637, 655, 673, 691, 709, 727, 745, 763, 781, 799, 817, 835, 853, 871, 889, 907, 925, 943, 961, 979, 997, 1015, 1033, 1051, 1069, 1087, 1105, 1123, 1141, 1159, 1177, 1195, 1213, 1231, 1249, 1267, 1285, 1303, 1321, 1339, 1357, 1375, 1393, 1411, 1429, 1447, 1465, 1483, 1501, 1519, 1537, 1555, 1573, 1591, 1609, 1627, 1645, 1663, 1681, 1699, 1717, 1735, 1753, 1771, 1789, 1807, 1825, 1843, 1861, 1879, 1897, 1915, 1933, 1951, 1969, 1987, 2005, 2023, 2041, 2059, 2077, 2095, 2113, 2131, 2149, 2167, 2185, 2203, 2221, 2239, 2257, 2275, 2293, 2311, 2329, 2347, 2365, 2383, 2401, 2419, 2437, 2455, 2473, 2491, 2509, 2527, 2545, 2563, 2581, 2599, 2617, 2635, 2653, 2671, 2689, 2707, 2725, 2743, 2761, 2779, 2797, 2815, 2833, 2851, 2869, 2887, 2905, 2923, 2941, 2959, 2977, 2995, 3013, 3031, 3049, 3067, 3085, 3103, 3121, 3139, 3157, 3175, 3193, 3211, 3229, 3247, 3265, 3283, 3301, 3319, 3337, 3355, 3373, 3391, 3409, 3427, 3445, 3463, 3481, 3499, 3517, 3535, 3553, 3571, 3589, 3607, 3625, 3643, 3661, 3679, 3697, 3715, 3733, 3751, 3769, 3787, 3805, 3823, 3841, 3859, 3877, 3895, 3913, 3931, 3949, 3967, 3985, 4003, 4021, 4039, 4057, 4075, 4093, 4111, 4129, 4147, 4165, 4183, 4201, 4219, 4237, 4255, 4273, 4291, 4309, 4327, 4345, 3817, 3835, 3853, 3871, 3889, 3907, 3925, 3943, 3961, 3979, 3997, 4015, 4033, 4051, 4069, 4087, 4105, 4123, 4141, 4159, 4177, 4195, 4213, 4231, 4249, 4267, 4285, 4303, 4321, 4339, 4357, 4375, 4393, 4411, 4429, 4447, 4465, 4483, 4501, 4519, 4537, 4555, 4573, 4591, 4609, 4627, 4645, 4663, 4681, 4699, 4717, 4735, 4753, 4771, 4789, 4807, 4825, 4843, 4861, 4879, 4897, 4915, 4933, 4951, 4969, 4987, 5005, 5023, 5041, 5059, 5077, 5095, 5113, 5131, 5149, 5167, 5185, 5203, 5221, 5239, 5257, 5275, 5293, 5311, 5329, 5347, 5365, 5383, 5401, 5419, 5437, 5455, 5473, 5491, 5509, 5527, 5545, 5563, 5581, 5599, 5617, 5635, 5653, 5671, 5689, 5707, 5725, 5743, 5761, 5779, 5797, 5815, 5833, 5851, 5869, 5887, 5905, 5923, 5941, 5959, 5977, 5995, 6013, 6031, 6049, 6067, 6085, 6103, 6121, 6139, 6157, 6175, 6193, 6211, 6229, 6247, 6265, 6283, 6301, 6319, 6337, 6355, 6373, 6391, 6409, 6427, 6445, 6463, 1, 19, 37, 55, 73, 91, 109, 127, 145, 163, 181, 199, 217, 235, 253, 271, 289, 307, 325, 343, 361, 379, 397, 415, 433, 451, 469, 487, 505, 523, 541, 559, 577, 595, 613, 631, 649, 667, 685, 703, 721, 739, 757, 775, 793, 811, 829, 847, 865, 883, 901, 919, 937, 955, 973, 991, 1009, 1027, 1045, 1063, 1081, 1099, 1117, 1135, 1153, 1171, 1189, 1207, 1225, 1243, 1261, 1279, 1297, 1315, 1333, 1351, 1369, 1387, 1405, 1423, 1441, 1459, 1477, 1495, 1513, 1531, 1549, 1567, 1585, 1603, 1621, 1639, 1657, 1675, 1693, 1711, 1729, 1747, 1765, 1783, 1801, 1819, 1837, 1855, 1873, 1891, 1909, 1927, 1945, 1963, 1981, 1999, 2017, 2035, 2053, 2071, 2089, 2107, 2125, 2143, 2161, 2179, 2197, 2215, 2233, 2251, 2269, 2287, 2305, 2323, 2341, 2359, 2377, 2395, 2413, 2431, 2449, 2467, 2485, 2503, 2521, 2539, 2557, 2575, 2593, 2611, 2629, 2647, 2665, 2683, 2701, 2719, 2737, 2755, 2773, 2791, 2809, 2827, 2845, 2863, 2881, 2899, 2917, 2935, 2953, 2971, 2989, 3007, 3025, 3043, 3061, 3079, 3097, 3115, 3133, 3151, 3169, 3187, 3205, 3223, 3241, 3259, 3277, 3295, 3313, 3331, 3349, 3367, 3385, 3403, 3421, 3439, 3457, 3475, 3493, 3511, 3529, 3547, 3565, 3583, 3601, 3619, 3637, 3655, 3673, 3691, 3709, 3727, 3745, 3763, 3781, 3799, 2334, 2352, 2370, 2388, 2406, 2424, 2442, 2460, 2478, 2496, 2514, 2532, 2550, 2568, 2586, 2604, 2622, 2640, 2658, 2676, 2694, 2712, 2730, 2748, 2766, 2784, 2802, 2820, 2838, 2856, 2874, 2892, 2910, 2928, 2946, 2964, 2982, 3000, 3018, 3036, 3054, 3072, 3090, 3108, 3126, 3144, 3162, 3180, 3198, 3216, 3234, 3252, 3270, 3288, 3306, 3324, 3342, 3360, 3378, 3396, 3414, 3432, 3450, 3468, 3486, 3504, 3522, 3540, 3558, 3576, 3594, 3612, 3630, 3648, 3666, 3684, 3702, 3720, 3738, 3756, 3774, 3792, 3810, 3828, 3846, 3864, 3882, 3900, 3918, 3936, 3954, 3972, 3990, 4008, 4026, 4044, 4062, 4080, 4098, 4116, 4134, 4152, 4170, 4188, 4206, 4224, 4242, 4260, 4278, 4296, 4314, 4332, 4350, 4368, 4386, 4404, 4422, 4440, 4458, 4476, 4494, 4512, 4530, 4548, 4566, 4584, 4602, 4620, 4638, 4656, 4674, 4692, 4710, 4728, 4746, 4764, 4782, 4800, 4818, 4836, 4854, 4872, 4890, 4908, 4926, 4944, 4962, 4980, 4998, 5016, 5034, 5052, 5070, 5088, 5106, 5124, 5142, 5160, 5178, 5196, 5214, 5232, 5250, 5268, 5286, 5304, 5322, 5340, 5358, 5376, 5394, 5412, 5430, 5448, 5466, 5484, 5502, 5520, 5538, 5556, 5574, 5592, 5610, 5628, 5646, 5664, 5682, 5700, 5718, 5736, 5754, 5772, 5790, 5808, 5826, 5844, 5862, 5880, 5898, 5916, 5934, 5952, 5970, 5988, 6006, 6024, 6042, 6060, 6078, 6096, 6114, 6132, 6150, 6168, 6186, 6204, 6222, 6240, 6258, 6276, 6294, 6312, 6330, 6348, 6366, 6384, 6402, 6420, 6438, 6456, 6474, 12, 30, 48, 66, 84, 102, 120, 138, 156, 174, 192, 210, 228, 246, 264, 282, 300, 318, 336, 354, 372, 390, 408, 426, 444, 462, 480, 498, 516, 534, 552, 570, 588, 606, 624, 642, 660, 678, 696, 714, 732, 750, 768, 786, 804, 822, 840, 858, 876, 894, 912, 930, 948, 966, 984, 1002, 1020, 1038, 1056, 1074, 1092, 1110, 1128, 1146, 1164, 1182, 1200, 1218, 1236, 1254, 1272, 1290, 1308, 1326, 1344, 1362, 1380, 1398, 1416, 1434, 1452, 1470, 1488, 1506, 1524, 1542, 1560, 1578, 1596, 1614, 1632, 1650, 1668, 1686, 1704, 1722, 1740, 1758, 1776, 1794, 1812, 1830, 1848, 1866, 1884, 1902, 1920, 1938, 1956, 1974, 1992, 2010, 2028, 2046, 2064, 2082, 2100, 2118, 2136, 2154, 2172, 2190, 2208, 2226, 2244, 2262, 2280, 2298, 2316, 3920, 3938, 3956, 3974, 3992, 4010, 4028, 4046, 4064, 4082, 4100, 4118, 4136, 4154, 4172, 4190, 4208, 4226, 4244, 4262, 4280, 4298, 4316, 4334, 4352, 4370, 4388, 4406, 4424, 4442, 4460, 4478, 4496, 4514, 4532, 4550, 4568, 4586, 4604, 4622, 4640, 4658, 4676, 4694, 4712, 4730, 4748, 4766, 4784, 4802, 4820, 4838, 4856, 4874, 4892, 4910, 4928, 4946, 4964, 4982, 5000, 5018, 5036, 5054, 5072, 5090, 5108, 5126, 5144, 5162, 5180, 5198, 5216, 5234, 5252, 5270, 5288, 5306, 5324, 5342, 5360, 5378, 5396, 5414, 5432, 5450, 5468, 5486, 5504, 5522, 5540, 5558, 5576, 5594, 5612, 5630, 5648, 5666, 5684, 5702, 5720, 5738, 5756, 5774, 5792, 5810, 5828, 5846, 5864, 5882, 5900, 5918, 5936, 5954, 5972, 5990, 6008, 6026, 6044, 6062, 6080, 6098, 6116, 6134, 6152, 6170, 6188, 6206, 6224, 6242, 6260, 6278, 6296, 6314, 6332, 6350, 6368, 6386, 6404, 6422, 6440, 6458, 6476, 14, 32, 50, 68, 86, 104, 122, 140, 158, 176, 194, 212, 230, 248, 266, 284, 302, 320, 338, 356, 374, 392, 410, 428, 446, 464, 482, 500, 518, 536, 554, 572, 590, 608, 626, 644, 662, 680, 698, 716, 734, 752, 770, 788, 806, 824, 842, 860, 878, 896, 914, 932, 950, 968, 986, 1004, 1022, 1040, 1058, 1076, 1094, 1112, 1130, 1148, 1166, 1184, 1202, 1220, 1238, 1256, 1274, 1292, 1310, 1328, 1346, 1364, 1382, 1400, 1418, 1436, 1454, 1472, 1490, 1508, 1526, 1544, 1562, 1580, 1598, 1616, 1634, 1652, 1670, 1688, 1706, 1724, 1742, 1760, 1778, 1796, 1814, 1832, 1850, 1868, 1886, 1904, 1922, 1940, 1958, 1976, 1994, 2012, 2030, 2048, 2066, 2084, 2102, 2120, 2138, 2156, 2174, 2192, 2210, 2228, 2246, 2264, 2282, 2300, 2318, 2336, 2354, 2372, 2390, 2408, 2426, 2444, 2462, 2480, 2498, 2516, 2534, 2552, 2570, 2588, 2606, 2624, 2642, 2660, 2678, 2696, 2714, 2732, 2750, 2768, 2786, 2804, 2822, 2840, 2858, 2876, 2894, 2912, 2930, 2948, 2966, 2984, 3002, 3020, 3038, 3056, 3074, 3092, 3110, 3128, 3146, 3164, 3182, 3200, 3218, 3236, 3254, 3272, 3290, 3308, 3326, 3344, 3362, 3380, 3398, 3416, 3434, 3452, 3470, 3488, 3506, 3524, 3542, 3560, 3578, 3596, 3614, 3632, 3650, 3668, 3686, 3704, 3722, 3740, 3758, 3776, 3794, 3812, 3830, 3848, 3866, 3884, 3902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 545, 563, 581, 599, 617, 635, 653, 671, 689, 707, 725, 743, 761, 779, 797, 815, 833, 851, 869, 887, 905, 923, 941, 959, 977, 995, 1013, 1031, 1049, 1067, 1085, 1103, 1121, 1139, 1157, 1175, 1193, 1211, 1229, 1247, 1265, 1283, 1301, 1319, 1337, 1355, 1373, 1391, 1409, 1427, 1445, 1463, 1481, 1499, 1517, 1535, 1553, 1571, 1589, 1607, 1625, 1643, 1661, 1679, 1697, 1715, 1733, 1751, 1769, 1787, 1805, 1823, 1841, 1859, 1877, 1895, 1913, 1931, 1949, 1967, 1985, 2003, 2021, 2039, 2057, 2075, 2093, 2111, 2129, 2147, 2165, 2183, 2201, 2219, 2237, 2255, 2273, 2291, 2309, 2327, 2345, 2363, 2381, 2399, 2417, 2435, 2453, 2471, 2489, 2507, 2525, 2543, 2561, 2579, 2597, 2615, 2633, 2651, 2669, 2687, 2705, 2723, 2741, 2759, 2777, 2795, 2813, 2831, 2849, 2867, 2885, 2903, 2921, 2939, 2957, 2975, 2993, 3011, 3029, 3047, 3065, 3083, 3101, 3119, 3137, 3155, 3173, 3191, 3209, 3227, 3245, 3263, 3281, 3299, 3317, 3335, 3353, 3371, 3389, 3407, 3425, 3443, 3461, 3479, 3497, 3515, 3533, 3551, 3569, 3587, 3605, 3623, 3641, 3659, 3677, 3695, 3713, 3731, 3749, 3767, 3785, 3803, 3821, 3839, 3857, 3875, 3893, 3911, 3929, 3947, 3965, 3983, 4001, 4019, 4037, 4055, 4073, 4091, 4109, 4127, 4145, 4163, 4181, 4199, 4217, 4235, 4253, 4271, 4289, 4307, 4325, 4343, 4361, 4379, 4397, 4415, 4433, 4451, 4469, 4487, 4505, 4523, 4541, 4559, 4577, 4595, 4613, 4631, 4649, 4667, 4685, 4703, 4721, 4739, 4757, 4775, 4793, 4811, 4829, 4847, 4865, 4883, 4901, 4919, 4937, 4955, 4973, 4991, 5009, 5027, 5045, 5063, 5081, 5099, 5117, 5135, 5153, 5171, 5189, 5207, 5225, 5243, 5261, 5279, 5297, 5315, 5333, 5351, 5369, 5387, 5405, 5423, 5441, 5459, 5477, 5495, 5513, 5531, 5549, 5567, 5585, 5603, 5621, 5639, 5657, 5675, 5693, 5711, 5729, 5747, 5765, 5783, 5801, 5819, 5837, 5855, 5873, 5891, 5909, 5927, 5945, 5963, 5981, 5999, 6017, 6035, 6053, 6071, 6089, 6107, 6125, 6143, 6161, 6179, 6197, 6215, 6233, 6251, 6269, 6287, 6305, 6323, 6341, 6359, 6377, 6395, 6413, 6431, 6449, 6467, 5, 23, 41, 59, 77, 95, 113, 131, 149, 167, 185, 203, 221, 239, 257, 275, 293, 311, 329, 347, 365, 383, 401, 419, 437, 455, 473, 491, 509, 527, 5740, 5758, 5776, 5794, 5812, 5830, 5848, 5866, 5884, 5902, 5920, 5938, 5956, 5974, 5992, 6010, 6028, 6046, 6064, 6082, 6100, 6118, 6136, 6154, 6172, 6190, 6208, 6226, 6244, 6262, 6280, 6298, 6316, 6334, 6352, 6370, 6388, 6406, 6424, 6442, 6460, 6478, 16, 34, 52, 70, 88, 106, 124, 142, 160, 178, 196, 214, 232, 250, 268, 286, 304, 322, 340, 358, 376, 394, 412, 430, 448, 466, 484, 502, 520, 538, 556, 574, 592, 610, 628, 646, 664, 682, 700, 718, 736, 754, 772, 790, 808, 826, 844, 862, 880, 898, 916, 934, 952, 970, 988, 1006, 1024, 1042, 1060, 1078, 1096, 1114, 1132, 1150, 1168, 1186, 1204, 1222, 1240, 1258, 1276, 1294, 1312, 1330, 1348, 1366, 1384, 1402, 1420, 1438, 1456, 1474, 1492, 1510, 1528, 1546, 1564, 1582, 1600, 1618, 1636, 1654, 1672, 1690, 1708, 1726, 1744, 1762, 1780, 1798, 1816, 1834, 1852, 1870, 1888, 1906, 1924, 1942, 1960, 1978, 1996, 2014, 2032, 2050, 2068, 2086, 2104, 2122, 2140, 2158, 2176, 2194, 2212, 2230, 2248, 2266, 2284, 2302, 2320, 2338, 2356, 2374, 2392, 2410, 2428, 2446, 2464, 2482, 2500, 2518, 2536, 2554, 2572, 2590, 2608, 2626, 2644, 2662, 2680, 2698, 2716, 2734, 2752, 2770, 2788, 2806, 2824, 2842, 2860, 2878, 2896, 2914, 2932, 2950, 2968, 2986, 3004, 3022, 3040, 3058, 3076, 3094, 3112, 3130, 3148, 3166, 3184, 3202, 3220, 3238, 3256, 3274, 3292, 3310, 3328, 3346, 3364, 3382, 3400, 3418, 3436, 3454, 3472, 3490, 3508, 3526, 3544, 3562, 3580, 3598, 3616, 3634, 3652, 3670, 3688, 3706, 3724, 3742, 3760, 3778, 3796, 3814, 3832, 3850, 3868, 3886, 3904, 3922, 3940, 3958, 3976, 3994, 4012, 4030, 4048, 4066, 4084, 4102, 4120, 4138, 4156, 4174, 4192, 4210, 4228, 4246, 4264, 4282, 4300, 4318, 4336, 4354, 4372, 4390, 4408, 4426, 4444, 4462, 4480, 4498, 4516, 4534, 4552, 4570, 4588, 4606, 4624, 4642, 4660, 4678, 4696, 4714, 4732, 4750, 4768, 4786, 4804, 4822, 4840, 4858, 4876, 4894, 4912, 4930, 4948, 4966, 4984, 5002, 5020, 5038, 5056, 5074, 5092, 5110, 5128, 5146, 5164, 5182, 5200, 5218, 5236, 5254, 5272, 5290, 5308, 5326, 5344, 5362, 5380, 5398, 5416, 5434, 5452, 5470, 5488, 5506, 5524, 5542, 5560, 5578, 5596, 5614, 5632, 5650, 5668, 5686, 5704, 5722, 1120, 1138, 1156, 1174, 1192, 1210, 1228, 1246, 1264, 1282, 1300, 1318, 1336, 1354, 1372, 1390, 1408, 1426, 1444, 1462, 1480, 1498, 1516, 1534, 1552, 1570, 1588, 1606, 1624, 1642, 1660, 1678, 1696, 1714, 1732, 1750, 1768, 1786, 1804, 1822, 1840, 1858, 1876, 1894, 1912, 1930, 1948, 1966, 1984, 2002, 2020, 2038, 2056, 2074, 2092, 2110, 2128, 2146, 2164, 2182, 2200, 2218, 2236, 2254, 2272, 2290, 2308, 2326, 2344, 2362, 2380, 2398, 2416, 2434, 2452, 2470, 2488, 2506, 2524, 2542, 2560, 2578, 2596, 2614, 2632, 2650, 2668, 2686, 2704, 2722, 2740, 2758, 2776, 2794, 2812, 2830, 2848, 2866, 2884, 2902, 2920, 2938, 2956, 2974, 2992, 3010, 3028, 3046, 3064, 3082, 3100, 3118, 3136, 3154, 3172, 3190, 3208, 3226, 3244, 3262, 3280, 3298, 3316, 3334, 3352, 3370, 3388, 3406, 3424, 3442, 3460, 3478, 3496, 3514, 3532, 3550, 3568, 3586, 3604, 3622, 3640, 3658, 3676, 3694, 3712, 3730, 3748, 3766, 3784, 3802, 3820, 3838, 3856, 3874, 3892, 3910, 3928, 3946, 3964, 3982, 4000, 4018, 4036, 4054, 4072, 4090, 4108, 4126, 4144, 4162, 4180, 4198, 4216, 4234, 4252, 4270, 4288, 4306, 4324, 4342, 4360, 4378, 4396, 4414, 4432, 4450, 4468, 4486, 4504, 4522, 4540, 4558, 4576, 4594, 4612, 4630, 4648, 4666, 4684, 4702, 4720, 4738, 4756, 4774, 4792, 4810, 4828, 4846, 4864, 4882, 4900, 4918, 4936, 4954, 4972, 4990, 5008, 5026, 5044, 5062, 5080, 5098, 5116, 5134, 5152, 5170, 5188, 5206, 5224, 5242, 5260, 5278, 5296, 5314, 5332, 5350, 5368, 5386, 5404, 5422, 5440, 5458, 5476, 5494, 5512, 5530, 5548, 5566, 5584, 5602, 5620, 5638, 5656, 5674, 5692, 5710, 5728, 5746, 5764, 5782, 5800, 5818, 5836, 5854, 5872, 5890, 5908, 5926, 5944, 5962, 5980, 5998, 6016, 6034, 6052, 6070, 6088, 6106, 6124, 6142, 6160, 6178, 6196, 6214, 6232, 6250, 6268, 6286, 6304, 6322, 6340, 6358, 6376, 6394, 6412, 6430, 6448, 6466, 4, 22, 40, 58, 76, 94, 112, 130, 148, 166, 184, 202, 220, 238, 256, 274, 292, 310, 328, 346, 364, 382, 400, 418, 436, 454, 472, 490, 508, 526, 544, 562, 580, 598, 616, 634, 652, 670, 688, 706, 724, 742, 760, 778, 796, 814, 832, 850, 868, 886, 904, 922, 940, 958, 976, 994, 1012, 1030, 1048, 1066, 1084, 1102, 564, 582, 600, 618, 636, 654, 672, 690, 708, 726, 744, 762, 780, 798, 816, 834, 852, 870, 888, 906, 924, 942, 960, 978, 996, 1014, 1032, 1050, 1068, 1086, 1104, 1122, 1140, 1158, 1176, 1194, 1212, 1230, 1248, 1266, 1284, 1302, 1320, 1338, 1356, 1374, 1392, 1410, 1428, 1446, 1464, 1482, 1500, 1518, 1536, 1554, 1572, 1590, 1608, 1626, 1644, 1662, 1680, 1698, 1716, 1734, 1752, 1770, 1788, 1806, 1824, 1842, 1860, 1878, 1896, 1914, 1932, 1950, 1968, 1986, 2004, 2022, 2040, 2058, 2076, 2094, 2112, 2130, 2148, 2166, 2184, 2202, 2220, 2238, 2256, 2274, 2292, 2310, 2328, 2346, 2364, 2382, 2400, 2418, 2436, 2454, 2472, 2490, 2508, 2526, 2544, 2562, 2580, 2598, 2616, 2634, 2652, 2670, 2688, 2706, 2724, 2742, 2760, 2778, 2796, 2814, 2832, 2850, 2868, 2886, 2904, 2922, 2940, 2958, 2976, 2994, 3012, 3030, 3048, 3066, 3084, 3102, 3120, 3138, 3156, 3174, 3192, 3210, 3228, 3246, 3264, 3282, 3300, 3318, 3336, 3354, 3372, 3390, 3408, 3426, 3444, 3462, 3480, 3498, 3516, 3534, 3552, 3570, 3588, 3606, 3624, 3642, 3660, 3678, 3696, 3714, 3732, 3750, 3768, 3786, 3804, 3822, 3840, 3858, 3876, 3894, 3912, 3930, 3948, 3966, 3984, 4002, 4020, 4038, 4056, 4074, 4092, 4110, 4128, 4146, 4164, 4182, 4200, 4218, 4236, 4254, 4272, 4290, 4308, 4326, 4344, 4362, 4380, 4398, 4416, 4434, 4452, 4470, 4488, 4506, 4524, 4542, 4560, 4578, 4596, 4614, 4632, 4650, 4668, 4686, 4704, 4722, 4740, 4758, 4776, 4794, 4812, 4830, 4848, 4866, 4884, 4902, 4920, 4938, 4956, 4974, 4992, 5010, 5028, 5046, 5064, 5082, 5100, 5118, 5136, 5154, 5172, 5190, 5208, 5226, 5244, 5262, 5280, 5298, 5316, 5334, 5352, 5370, 5388, 5406, 5424, 5442, 5460, 5478, 5496, 5514, 5532, 5550, 5568, 5586, 5604, 5622, 5640, 5658, 5676, 5694, 5712, 5730, 5748, 5766, 5784, 5802, 5820, 5838, 5856, 5874, 5892, 5910, 5928, 5946, 5964, 5982, 6000, 6018, 6036, 6054, 6072, 6090, 6108, 6126, 6144, 6162, 6180, 6198, 6216, 6234, 6252, 6270, 6288, 6306, 6324, 6342, 6360, 6378, 6396, 6414, 6432, 6450, 6468, 6, 24, 42, 60, 78, 96, 114, 132, 150, 168, 186, 204, 222, 240, 258, 276, 294, 312, 330, 348, 366, 384, 402, 420, 438, 456, 474, 492, 510, 528, 546, 429, 447, 465, 483, 501, 519, 537, 555, 573, 591, 609, 627, 645, 663, 681, 699, 717, 735, 753, 771, 789, 807, 825, 843, 861, 879, 897, 915, 933, 951, 969, 987, 1005, 1023, 1041, 1059, 1077, 1095, 1113, 1131, 1149, 1167, 1185, 1203, 1221, 1239, 1257, 1275, 1293, 1311, 1329, 1347, 1365, 1383, 1401, 1419, 1437, 1455, 1473, 1491, 1509, 1527, 1545, 1563, 1581, 1599, 1617, 1635, 1653, 1671, 1689, 1707, 1725, 1743, 1761, 1779, 1797, 1815, 1833, 1851, 1869, 1887, 1905, 1923, 1941, 1959, 1977, 1995, 2013, 2031, 2049, 2067, 2085, 2103, 2121, 2139, 2157, 2175, 2193, 2211, 2229, 2247, 2265, 2283, 2301, 2319, 2337, 2355, 2373, 2391, 2409, 2427, 2445, 2463, 2481, 2499, 2517, 2535, 2553, 2571, 2589, 2607, 2625, 2643, 2661, 2679, 2697, 2715, 2733, 2751, 2769, 2787, 2805, 2823, 2841, 2859, 2877, 2895, 2913, 2931, 2949, 2967, 2985, 3003, 3021, 3039, 3057, 3075, 3093, 3111, 3129, 3147, 3165, 3183, 3201, 3219, 3237, 3255, 3273, 3291, 3309, 3327, 3345, 3363, 3381, 3399, 3417, 3435, 3453, 3471, 3489, 3507, 3525, 3543, 3561, 3579, 3597, 3615, 3633, 3651, 3669, 3687, 3705, 3723, 3741, 3759, 3777, 3795, 3813, 3831, 3849, 3867, 3885, 3903, 3921, 3939, 3957, 3975, 3993, 4011, 4029, 4047, 4065, 4083, 4101, 4119, 4137, 4155, 4173, 4191, 4209, 4227, 4245, 4263, 4281, 4299, 4317, 4335, 4353, 4371, 4389, 4407, 4425, 4443, 4461, 4479, 4497, 4515, 4533, 4551, 4569, 4587, 4605, 4623, 4641, 4659, 4677, 4695, 4713, 4731, 4749, 4767, 4785, 4803, 4821, 4839, 4857, 4875, 4893, 4911, 4929, 4947, 4965, 4983, 5001, 5019, 5037, 5055, 5073, 5091, 5109, 5127, 5145, 5163, 5181, 5199, 5217, 5235, 5253, 5271, 5289, 5307, 5325, 5343, 5361, 5379, 5397, 5415, 5433, 5451, 5469, 5487, 5505, 5523, 5541, 5559, 5577, 5595, 5613, 5631, 5649, 5667, 5685, 5703, 5721, 5739, 5757, 5775, 5793, 5811, 5829, 5847, 5865, 5883, 5901, 5919, 5937, 5955, 5973, 5991, 6009, 6027, 6045, 6063, 6081, 6099, 6117, 6135, 6153, 6171, 6189, 6207, 6225, 6243, 6261, 6279, 6297, 6315, 6333, 6351, 6369, 6387, 6405, 6423, 6441, 6459, 6477, 15, 33, 51, 69, 87, 105, 123, 141, 159, 177, 195, 213, 231, 249, 267, 285, 303, 321, 339, 357, 375, 393, 411, 3807, 3825, 3843, 3861, 3879, 3897, 3915, 3933, 3951, 3969, 3987, 4005, 4023, 4041, 4059, 4077, 4095, 4113, 4131, 4149, 4167, 4185, 4203, 4221, 4239, 4257, 4275, 4293, 4311, 4329, 4347, 4365, 4383, 4401, 4419, 4437, 4455, 4473, 4491, 4509, 4527, 4545, 4563, 4581, 4599, 4617, 4635, 4653, 4671, 4689, 4707, 4725, 4743, 4761, 4779, 4797, 4815, 4833, 4851, 4869, 4887, 4905, 4923, 4941, 4959, 4977, 4995, 5013, 5031, 5049, 5067, 5085, 5103, 5121, 5139, 5157, 5175, 5193, 5211, 5229, 5247, 5265, 5283, 5301, 5319, 5337, 5355, 5373, 5391, 5409, 5427, 5445, 5463, 5481, 5499, 5517, 5535, 5553, 5571, 5589, 5607, 5625, 5643, 5661, 5679, 5697, 5715, 5733, 5751, 5769, 5787, 5805, 5823, 5841, 5859, 5877, 5895, 5913, 5931, 5949, 5967, 5985, 6003, 6021, 6039, 6057, 6075, 6093, 6111, 6129, 6147, 6165, 6183, 6201, 6219, 6237, 6255, 6273, 6291, 6309, 6327, 6345, 6363, 6381, 6399, 6417, 6435, 6453, 6471, 9, 27, 45, 63, 81, 99, 117, 135, 153, 171, 189, 207, 225, 243, 261, 279, 297, 315, 333, 351, 369, 387, 405, 423, 441, 459, 477, 495, 513, 531, 549, 567, 585, 603, 621, 639, 657, 675, 693, 711, 729, 747, 765, 783, 801, 819, 837, 855, 873, 891, 909, 927, 945, 963, 981, 999, 1017, 1035, 1053, 1071, 1089, 1107, 1125, 1143, 1161, 1179, 1197, 1215, 1233, 1251, 1269, 1287, 1305, 1323, 1341, 1359, 1377, 1395, 1413, 1431, 1449, 1467, 1485, 1503, 1521, 1539, 1557, 1575, 1593, 1611, 1629, 1647, 1665, 1683, 1701, 1719, 1737, 1755, 1773, 1791, 1809, 1827, 1845, 1863, 1881, 1899, 1917, 1935, 1953, 1971, 1989, 2007, 2025, 2043, 2061, 2079, 2097, 2115, 2133, 2151, 2169, 2187, 2205, 2223, 2241, 2259, 2277, 2295, 2313, 2331, 2349, 2367, 2385, 2403, 2421, 2439, 2457, 2475, 2493, 2511, 2529, 2547, 2565, 2583, 2601, 2619, 2637, 2655, 2673, 2691, 2709, 2727, 2745, 2763, 2781, 2799, 2817, 2835, 2853, 2871, 2889, 2907, 2925, 2943, 2961, 2979, 2997, 3015, 3033, 3051, 3069, 3087, 3105, 3123, 3141, 3159, 3177, 3195, 3213, 3231, 3249, 3267, 3285, 3303, 3321, 3339, 3357, 3375, 3393, 3411, 3429, 3447, 3465, 3483, 3501, 3519, 3537, 3555, 3573, 3591, 3609, 3627, 3645, 3663, 3681, 3699, 3717, 3735, 3753, 3771, 3789, 818, 836, 854, 872, 890, 908, 926, 944, 962, 980, 998, 1016, 1034, 1052, 1070, 1088, 1106, 1124, 1142, 1160, 1178, 1196, 1214, 1232, 1250, 1268, 1286, 1304, 1322, 1340, 1358, 1376, 1394, 1412, 1430, 1448, 1466, 1484, 1502, 1520, 1538, 1556, 1574, 1592, 1610, 1628, 1646, 1664, 1682, 1700, 1718, 1736, 1754, 1772, 1790, 1808, 1826, 1844, 1862, 1880, 1898, 1916, 1934, 1952, 1970, 1988, 2006, 2024, 2042, 2060, 2078, 2096, 2114, 2132, 2150, 2168, 2186, 2204, 2222, 2240, 2258, 2276, 2294, 2312, 2330, 2348, 2366, 2384, 2402, 2420, 2438, 2456, 2474, 2492, 2510, 2528, 2546, 2564, 2582, 2600, 2618, 2636, 2654, 2672, 2690, 2708, 2726, 2744, 2762, 2780, 2798, 2816, 2834, 2852, 2870, 2888, 2906, 2924, 2942, 2960, 2978, 2996, 3014, 3032, 3050, 3068, 3086, 3104, 3122, 3140, 3158, 3176, 3194, 3212, 3230, 3248, 3266, 3284, 3302, 3320, 3338, 3356, 3374, 3392, 3410, 3428, 3446, 3464, 3482, 3500, 3518, 3536, 3554, 3572, 3590, 3608, 3626, 3644, 3662, 3680, 3698, 3716, 3734, 3752, 3770, 3788, 3806, 3824, 3842, 3860, 3878, 3896, 3914, 3932, 3950, 3968, 3986, 4004, 4022, 4040, 4058, 4076, 4094, 4112, 4130, 4148, 4166, 4184, 4202, 4220, 4238, 4256, 4274, 4292, 4310, 4328, 4346, 4364, 4382, 4400, 4418, 4436, 4454, 4472, 4490, 4508, 4526, 4544, 4562, 4580, 4598, 4616, 4634, 4652, 4670, 4688, 4706, 4724, 4742, 4760, 4778, 4796, 4814, 4832, 4850, 4868, 4886, 4904, 4922, 4940, 4958, 4976, 4994, 5012, 5030, 5048, 5066, 5084, 5102, 5120, 5138, 5156, 5174, 5192, 5210, 5228, 5246, 5264, 5282, 5300, 5318, 5336, 5354, 5372, 5390, 5408, 5426, 5444, 5462, 5480, 5498, 5516, 5534, 5552, 5570, 5588, 5606, 5624, 5642, 5660, 5678, 5696, 5714, 5732, 5750, 5768, 5786, 5804, 5822, 5840, 5858, 5876, 5894, 5912, 5930, 5948, 5966, 5984, 6002, 6020, 6038, 6056, 6074, 6092, 6110, 6128, 6146, 6164, 6182, 6200, 6218, 6236, 6254, 6272, 6290, 6308, 6326, 6344, 6362, 6380, 6398, 6416, 6434, 6452, 6470, 8, 26, 44, 62, 80, 98, 116, 134, 152, 170, 188, 206, 224, 242, 260, 278, 296, 314, 332, 350, 368, 386, 404, 422, 440, 458, 476, 494, 512, 530, 548, 566, 584, 602, 620, 638, 656, 674, 692, 710, 728, 746, 764, 782, 800, 288, 306, 324, 342, 360, 378, 396, 414, 432, 450, 468, 486, 504, 522, 540, 558, 576, 594, 612, 630, 648, 666, 684, 702, 720, 738, 756, 774, 792, 810, 828, 846, 864, 882, 900, 918, 936, 954, 972, 990, 1008, 1026, 1044, 1062, 1080, 1098, 1116, 1134, 1152, 1170, 1188, 1206, 1224, 1242, 1260, 1278, 1296, 1314, 1332, 1350, 1368, 1386, 1404, 1422, 1440, 1458, 1476, 1494, 1512, 1530, 1548, 1566, 1584, 1602, 1620, 1638, 1656, 1674, 1692, 1710, 1728, 1746, 1764, 1782, 1800, 1818, 1836, 1854, 1872, 1890, 1908, 1926, 1944, 1962, 1980, 1998, 2016, 2034, 2052, 2070, 2088, 2106, 2124, 2142, 2160, 2178, 2196, 2214, 2232, 2250, 2268, 2286, 2304, 2322, 2340, 2358, 2376, 2394, 2412, 2430, 2448, 2466, 2484, 2502, 2520, 2538, 2556, 2574, 2592, 2610, 2628, 2646, 2664, 2682, 2700, 2718, 2736, 2754, 2772, 2790, 2808, 2826, 2844, 2862, 2880, 2898, 2916, 2934, 2952, 2970, 2988, 3006, 3024, 3042, 3060, 3078, 3096, 3114, 3132, 3150, 3168, 3186, 3204, 3222, 3240, 3258, 3276, 3294, 3312, 3330, 3348, 3366, 3384, 3402, 3420, 3438, 3456, 3474, 3492, 3510, 3528, 3546, 3564, 3582, 3600, 3618, 3636, 3654, 3672, 3690, 3708, 3726, 3744, 3762, 3780, 3798, 3816, 3834, 3852, 3870, 3888, 3906, 3924, 3942, 3960, 3978, 3996, 4014, 4032, 4050, 4068, 4086, 4104, 4122, 4140, 4158, 4176, 4194, 4212, 4230, 4248, 4266, 4284, 4302, 4320, 4338, 4356, 4374, 4392, 4410, 4428, 4446, 4464, 4482, 4500, 4518, 4536, 4554, 4572, 4590, 4608, 4626, 4644, 4662, 4680, 4698, 4716, 4734, 4752, 4770, 4788, 4806, 4824, 4842, 4860, 4878, 4896, 4914, 4932, 4950, 4968, 4986, 5004, 5022, 5040, 5058, 5076, 5094, 5112, 5130, 5148, 5166, 5184, 5202, 5220, 5238, 5256, 5274, 5292, 5310, 5328, 5346, 5364, 5382, 5400, 5418, 5436, 5454, 5472, 5490, 5508, 5526, 5544, 5562, 5580, 5598, 5616, 5634, 5652, 5670, 5688, 5706, 5724, 5742, 5760, 5778, 5796, 5814, 5832, 5850, 5868, 5886, 5904, 5922, 5940, 5958, 5976, 5994, 6012, 6030, 6048, 6066, 6084, 6102, 6120, 6138, 6156, 6174, 6192, 6210, 6228, 6246, 6264, 6282, 6300, 6318, 6336, 6354, 6372, 6390, 6408, 6426, 6444, 6462, 6480, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198, 216, 234, 252, 270, 1357, 1375, 1393, 1411, 1429, 1447, 1465, 1483, 1501, 1519, 1537, 1555, 1573, 1591, 1609, 1627, 1645, 1663, 1681, 1699, 1717, 1735, 1753, 1771, 1789, 1807, 1825, 1843, 1861, 1879, 1897, 1915, 1933, 1951, 1969, 1987, 2005, 2023, 2041, 2059, 2077, 2095, 2113, 2131, 2149, 2167, 2185, 2203, 2221, 2239, 2257, 2275, 2293, 2311, 2329, 2347, 2365, 2383, 2401, 2419, 2437, 2455, 2473, 2491, 2509, 2527, 2545, 2563, 2581, 2599, 2617, 2635, 2653, 2671, 2689, 2707, 2725, 2743, 2761, 2779, 2797, 2815, 2833, 2851, 2869, 2887, 2905, 2923, 2941, 2959, 2977, 2995, 3013, 3031, 3049, 3067, 3085, 3103, 3121, 3139, 3157, 3175, 3193, 3211, 3229, 3247, 3265, 3283, 3301, 3319, 3337, 3355, 3373, 3391, 3409, 3427, 3445, 3463, 3481, 3499, 3517, 3535, 3553, 3571, 3589, 3607, 3625, 3643, 3661, 3679, 3697, 3715, 3733, 3751, 3769, 3787, 3805, 3823, 3841, 3859, 3877, 3895, 3913, 3931, 3949, 3967, 3985, 4003, 4021, 4039, 4057, 4075, 4093, 4111, 4129, 4147, 4165, 4183, 4201, 4219, 4237, 4255, 4273, 4291, 4309, 4327, 4345, 4363, 4381, 4399, 4417, 4435, 4453, 4471, 4489, 4507, 4525, 4543, 4561, 4579, 4597, 4615, 4633, 4651, 4669, 4687, 4705, 4723, 4741, 4759, 4777, 4795, 4813, 4831, 4849, 4867, 4885, 4903, 4921, 4939, 4957, 4975, 4993, 5011, 5029, 5047, 5065, 5083, 5101, 5119, 5137, 5155, 5173, 5191, 5209, 5227, 5245, 5263, 5281, 5299, 5317, 5335, 5353, 5371, 5389, 5407, 5425, 5443, 5461, 5479, 5497, 5515, 5533, 5551, 5569, 5587, 5605, 5623, 5641, 5659, 5677, 5695, 5713, 5731, 5749, 5767, 5785, 5803, 5821, 5839, 5857, 5875, 5893, 5911, 5929, 5947, 5965, 5983, 6001, 6019, 6037, 6055, 6073, 6091, 6109, 6127, 6145, 6163, 6181, 6199, 6217, 6235, 6253, 6271, 6289, 6307, 6325, 6343, 6361, 6379, 6397, 6415, 6433, 6451, 6469, 7, 25, 43, 61, 79, 97, 115, 133, 151, 169, 187, 205, 223, 241, 259, 277, 295, 313, 331, 349, 367, 385, 403, 421, 439, 457, 475, 493, 511, 529, 547, 565, 583, 601, 619, 637, 655, 673, 691, 709, 727, 745, 763, 781, 799, 817, 835, 853, 871, 889, 907, 925, 943, 961, 979, 997, 1015, 1033, 1051, 1069, 1087, 1105, 1123, 1141, 1159, 1177, 1195, 1213, 1231, 1249, 1267, 1285, 1303, 1321, 1339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3395, 3413, 3431, 3449, 3467, 3485, 3503, 3521, 3539, 3557, 3575, 3593, 3611, 3629, 3647, 3665, 3683, 3701, 3719, 3737, 3755, 3773, 3791, 3809, 3827, 3845, 3863, 3881, 3899, 3917, 3935, 3953, 3971, 3989, 4007, 4025, 4043, 4061, 4079, 4097, 4115, 4133, 4151, 4169, 4187, 4205, 4223, 4241, 4259, 4277, 4295, 4313, 4331, 4349, 4367, 4385, 4403, 4421, 4439, 4457, 4475, 4493, 4511, 4529, 4547, 4565, 4583, 4601, 4619, 4637, 4655, 4673, 4691, 4709, 4727, 4745, 4763, 4781, 4799, 4817, 4835, 4853, 4871, 4889, 4907, 4925, 4943, 4961, 4979, 4997, 5015, 5033, 5051, 5069, 5087, 5105, 5123, 5141, 5159, 5177, 5195, 5213, 5231, 5249, 5267, 5285, 5303, 5321, 5339, 5357, 5375, 5393, 5411, 5429, 5447, 5465, 5483, 5501, 5519, 5537, 5555, 5573, 5591, 5609, 5627, 5645, 5663, 5681, 5699, 5717, 5735, 5753, 5771, 5789, 5807, 5825, 5843, 5861, 5879, 5897, 5915, 5933, 5951, 5969, 5987, 6005, 6023, 6041, 6059, 6077, 6095, 6113, 6131, 6149, 6167, 6185, 6203, 6221, 6239, 6257, 6275, 6293, 6311, 6329, 6347, 6365, 6383, 6401, 6419, 6437, 6455, 6473, 11, 29, 47, 65, 83, 101, 119, 137, 155, 173, 191, 209, 227, 245, 263, 281, 299, 317, 335, 353, 371, 389, 407, 425, 443, 461, 479, 497, 515, 533, 551, 569, 587, 605, 623, 641, 659, 677, 695, 713, 731, 749, 767, 785, 803, 821, 839, 857, 875, 893, 911, 929, 947, 965, 983, 1001, 1019, 1037, 1055, 1073, 1091, 1109, 1127, 1145, 1163, 1181, 1199, 1217, 1235, 1253, 1271, 1289, 1307, 1325, 1343, 1361, 1379, 1397, 1415, 1433, 1451, 1469, 1487, 1505, 1523, 1541, 1559, 1577, 1595, 1613, 1631, 1649, 1667, 1685, 1703, 1721, 1739, 1757, 1775, 1793, 1811, 1829, 1847, 1865, 1883, 1901, 1919, 1937, 1955, 1973, 1991, 2009, 2027, 2045, 2063, 2081, 2099, 2117, 2135, 2153, 2171, 2189, 2207, 2225, 2243, 2261, 2279, 2297, 2315, 2333, 2351, 2369, 2387, 2405, 2423, 2441, 2459, 2477, 2495, 2513, 2531, 2549, 2567, 2585, 2603, 2621, 2639, 2657, 2675, 2693, 2711, 2729, 2747, 2765, 2783, 2801, 2819, 2837, 2855, 2873, 2891, 2909, 2927, 2945, 2963, 2981, 2999, 3017, 3035, 3053, 3071, 3089, 3107, 3125, 3143, 3161, 3179, 3197, 3215, 3233, 3251, 3269, 3287, 3305, 3323, 3341, 3359, 3377, 266, 284, 302, 320, 338, 356, 374, 392, 410, 428, 446, 464, 482, 500, 518, 536, 554, 572, 590, 608, 626, 644, 662, 680, 698, 716, 734, 752, 770, 788, 806, 824, 842, 860, 878, 896, 914, 932, 950, 968, 986, 1004, 1022, 1040, 1058, 1076, 1094, 1112, 1130, 1148, 1166, 1184, 1202, 1220, 1238, 1256, 1274, 1292, 1310, 1328, 1346, 1364, 1382, 1400, 1418, 1436, 1454, 1472, 1490, 1508, 1526, 1544, 1562, 1580, 1598, 1616, 1634, 1652, 1670, 1688, 1706, 1724, 1742, 1760, 1778, 1796, 1814, 1832, 1850, 1868, 1886, 1904, 1922, 1940, 1958, 1976, 1994, 2012, 2030, 2048, 2066, 2084, 2102, 2120, 2138, 2156, 2174, 2192, 2210, 2228, 2246, 2264, 2282, 2300, 2318, 2336, 2354, 2372, 2390, 2408, 2426, 2444, 2462, 2480, 2498, 2516, 2534, 2552, 2570, 2588, 2606, 2624, 2642, 2660, 2678, 2696, 2714, 2732, 2750, 2768, 2786, 2804, 2822, 2840, 2858, 2876, 2894, 2912, 2930, 2948, 2966, 2984, 3002, 3020, 3038, 3056, 3074, 3092, 3110, 3128, 3146, 3164, 3182, 3200, 3218, 3236, 3254, 3272, 3290, 3308, 3326, 3344, 3362, 3380, 3398, 3416, 3434, 3452, 3470, 3488, 3506, 3524, 3542, 3560, 3578, 3596, 3614, 3632, 3650, 3668, 3686, 3704, 3722, 3740, 3758, 3776, 3794, 3812, 3830, 3848, 3866, 3884, 3902, 3920, 3938, 3956, 3974, 3992, 4010, 4028, 4046, 4064, 4082, 4100, 4118, 4136, 4154, 4172, 4190, 4208, 4226, 4244, 4262, 4280, 4298, 4316, 4334, 4352, 4370, 4388, 4406, 4424, 4442, 4460, 4478, 4496, 4514, 4532, 4550, 4568, 4586, 4604, 4622, 4640, 4658, 4676, 4694, 4712, 4730, 4748, 4766, 4784, 4802, 4820, 4838, 4856, 4874, 4892, 4910, 4928, 4946, 4964, 4982, 5000, 5018, 5036, 5054, 5072, 5090, 5108, 5126, 5144, 5162, 5180, 5198, 5216, 5234, 5252, 5270, 5288, 5306, 5324, 5342, 5360, 5378, 5396, 5414, 5432, 5450, 5468, 5486, 5504, 5522, 5540, 5558, 5576, 5594, 5612, 5630, 5648, 5666, 5684, 5702, 5720, 5738, 5756, 5774, 5792, 5810, 5828, 5846, 5864, 5882, 5900, 5918, 5936, 5954, 5972, 5990, 6008, 6026, 6044, 6062, 6080, 6098, 6116, 6134, 6152, 6170, 6188, 6206, 6224, 6242, 6260, 6278, 6296, 6314, 6332, 6350, 6368, 6386, 6404, 6422, 6440, 6458, 6476, 14, 32, 50, 68, 86, 104, 122, 140, 158, 176, 194, 212, 230, 248, 6464, 2, 20, 38, 56, 74, 92, 110, 128, 146, 164, 182, 200, 218, 236, 254, 272, 290, 308, 326, 344, 362, 380, 398, 416, 434, 452, 470, 488, 506, 524, 542, 560, 578, 596, 614, 632, 650, 668, 686, 704, 722, 740, 758, 776, 794, 812, 830, 848, 866, 884, 902, 920, 938, 956, 974, 992, 1010, 1028, 1046, 1064, 1082, 1100, 1118, 1136, 1154, 1172, 1190, 1208, 1226, 1244, 1262, 1280, 1298, 1316, 1334, 1352, 1370, 1388, 1406, 1424, 1442, 1460, 1478, 1496, 1514, 1532, 1550, 1568, 1586, 1604, 1622, 1640, 1658, 1676, 1694, 1712, 1730, 1748, 1766, 1784, 1802, 1820, 1838, 1856, 1874, 1892, 1910, 1928, 1946, 1964, 1982, 2000, 2018, 2036, 2054, 2072, 2090, 2108, 2126, 2144, 2162, 2180, 2198, 2216, 2234, 2252, 2270, 2288, 2306, 2324, 2342, 2360, 2378, 2396, 2414, 2432, 2450, 2468, 2486, 2504, 2522, 2540, 2558, 2576, 2594, 2612, 2630, 2648, 2666, 2684, 2702, 2720, 2738, 2756, 2774, 2792, 2810, 2828, 2846, 2864, 2882, 2900, 2918, 2936, 2954, 2972, 2990, 3008, 3026, 3044, 3062, 3080, 3098, 3116, 3134, 3152, 3170, 3188, 3206, 3224, 3242, 3260, 3278, 3296, 3314, 3332, 3350, 3368, 3386, 3404, 3422, 3440, 3458, 3476, 3494, 3512, 3530, 3548, 3566, 3584, 3602, 3620, 3638, 3656, 3674, 3692, 3710, 3728, 3746, 3764, 3782, 3800, 3818, 3836, 3854, 3872, 3890, 3908, 3926, 3944, 3962, 3980, 3998, 4016, 4034, 4052, 4070, 4088, 4106, 4124, 4142, 4160, 4178, 4196, 4214, 4232, 4250, 4268, 4286, 4304, 4322, 4340, 4358, 4376, 4394, 4412, 4430, 4448, 4466, 4484, 4502, 4520, 4538, 4556, 4574, 4592, 4610, 4628, 4646, 4664, 4682, 4700, 4718, 4736, 4754, 4772, 4790, 4808, 4826, 4844, 4862, 4880, 4898, 4916, 4934, 4952, 4970, 4988, 5006, 5024, 5042, 5060, 5078, 5096, 5114, 5132, 5150, 5168, 5186, 5204, 5222, 5240, 5258, 5276, 5294, 5312, 5330, 5348, 5366, 5384, 5402, 5420, 5438, 5456, 5474, 5492, 5510, 5528, 5546, 5564, 5582, 5600, 5618, 5636, 5654, 5672, 5690, 5708, 5726, 5744, 5762, 5780, 5798, 5816, 5834, 5852, 5870, 5888, 5906, 5924, 5942, 5960, 5978, 5996, 6014, 6032, 6050, 6068, 6086, 6104, 6122, 6140, 6158, 6176, 6194, 6212, 6230, 6248, 6266, 6284, 6302, 6320, 6338, 6356, 6374, 6392, 6410, 6428, 6446, 4285, 4303, 4321, 4339, 4357, 4375, 4393, 4411, 4429, 4447, 4465, 4483, 4501, 4519, 4537, 4555, 4573, 4591, 4609, 4627, 4645, 4663, 4681, 4699, 4717, 4735, 4753, 4771, 4789, 4807, 4825, 4843, 4861, 4879, 4897, 4915, 4933, 4951, 4969, 4987, 5005, 5023, 5041, 5059, 5077, 5095, 5113, 5131, 5149, 5167, 5185, 5203, 5221, 5239, 5257, 5275, 5293, 5311, 5329, 5347, 5365, 5383, 5401, 5419, 5437, 5455, 5473, 5491, 5509, 5527, 5545, 5563, 5581, 5599, 5617, 5635, 5653, 5671, 5689, 5707, 5725, 5743, 5761, 5779, 5797, 5815, 5833, 5851, 5869, 5887, 5905, 5923, 5941, 5959, 5977, 5995, 6013, 6031, 6049, 6067, 6085, 6103, 6121, 6139, 6157, 6175, 6193, 6211, 6229, 6247, 6265, 6283, 6301, 6319, 6337, 6355, 6373, 6391, 6409, 6427, 6445, 6463, 1, 19, 37, 55, 73, 91, 109, 127, 145, 163, 181, 199, 217, 235, 253, 271, 289, 307, 325, 343, 361, 379, 397, 415, 433, 451, 469, 487, 505, 523, 541, 559, 577, 595, 613, 631, 649, 667, 685, 703, 721, 739, 757, 775, 793, 811, 829, 847, 865, 883, 901, 919, 937, 955, 973, 991, 1009, 1027, 1045, 1063, 1081, 1099, 1117, 1135, 1153, 1171, 1189, 1207, 1225, 1243, 1261, 1279, 1297, 1315, 1333, 1351, 1369, 1387, 1405, 1423, 1441, 1459, 1477, 1495, 1513, 1531, 1549, 1567, 1585, 1603, 1621, 1639, 1657, 1675, 1693, 1711, 1729, 1747, 1765, 1783, 1801, 1819, 1837, 1855, 1873, 1891, 1909, 1927, 1945, 1963, 1981, 1999, 2017, 2035, 2053, 2071, 2089, 2107, 2125, 2143, 2161, 2179, 2197, 2215, 2233, 2251, 2269, 2287, 2305, 2323, 2341, 2359, 2377, 2395, 2413, 2431, 2449, 2467, 2485, 2503, 2521, 2539, 2557, 2575, 2593, 2611, 2629, 2647, 2665, 2683, 2701, 2719, 2737, 2755, 2773, 2791, 2809, 2827, 2845, 2863, 2881, 2899, 2917, 2935, 2953, 2971, 2989, 3007, 3025, 3043, 3061, 3079, 3097, 3115, 3133, 3151, 3169, 3187, 3205, 3223, 3241, 3259, 3277, 3295, 3313, 3331, 3349, 3367, 3385, 3403, 3421, 3439, 3457, 3475, 3493, 3511, 3529, 3547, 3565, 3583, 3601, 3619, 3637, 3655, 3673, 3691, 3709, 3727, 3745, 3763, 3781, 3799, 3817, 3835, 3853, 3871, 3889, 3907, 3925, 3943, 3961, 3979, 3997, 4015, 4033, 4051, 4069, 4087, 4105, 4123, 4141, 4159, 4177, 4195, 4213, 4231, 4249, 4267, 3808, 3826, 3844, 3862, 3880, 3898, 3916, 3934, 3952, 3970, 3988, 4006, 4024, 4042, 4060, 4078, 4096, 4114, 4132, 4150, 4168, 4186, 4204, 4222, 4240, 4258, 4276, 4294, 4312, 4330, 4348, 4366, 4384, 4402, 4420, 4438, 4456, 4474, 4492, 4510, 4528, 4546, 4564, 4582, 4600, 4618, 4636, 4654, 4672, 4690, 4708, 4726, 4744, 4762, 4780, 4798, 4816, 4834, 4852, 4870, 4888, 4906, 4924, 4942, 4960, 4978, 4996, 5014, 5032, 5050, 5068, 5086, 5104, 5122, 5140, 5158, 5176, 5194, 5212, 5230, 5248, 5266, 5284, 5302, 5320, 5338, 5356, 5374, 5392, 5410, 5428, 5446, 5464, 5482, 5500, 5518, 5536, 5554, 5572, 5590, 5608, 5626, 5644, 5662, 5680, 5698, 5716, 5734, 5752, 5770, 5788, 5806, 5824, 5842, 5860, 5878, 5896, 5914, 5932, 5950, 5968, 5986, 6004, 6022, 6040, 6058, 6076, 6094, 6112, 6130, 6148, 6166, 6184, 6202, 6220, 6238, 6256, 6274, 6292, 6310, 6328, 6346, 6364, 6382, 6400, 6418, 6436, 6454, 6472, 10, 28, 46, 64, 82, 100, 118, 136, 154, 172, 190, 208, 226, 244, 262, 280, 298, 316, 334, 352, 370, 388, 406, 424, 442, 460, 478, 496, 514, 532, 550, 568, 586, 604, 622, 640, 658, 676, 694, 712, 730, 748, 766, 784, 802, 820, 838, 856, 874, 892, 910, 928, 946, 964, 982, 1000, 1018, 1036, 1054, 1072, 1090, 1108, 1126, 1144, 1162, 1180, 1198, 1216, 1234, 1252, 1270, 1288, 1306, 1324, 1342, 1360, 1378, 1396, 1414, 1432, 1450, 1468, 1486, 1504, 1522, 1540, 1558, 1576, 1594, 1612, 1630, 1648, 1666, 1684, 1702, 1720, 1738, 1756, 1774, 1792, 1810, 1828, 1846, 1864, 1882, 1900, 1918, 1936, 1954, 1972, 1990, 2008, 2026, 2044, 2062, 2080, 2098, 2116, 2134, 2152, 2170, 2188, 2206, 2224, 2242, 2260, 2278, 2296, 2314, 2332, 2350, 2368, 2386, 2404, 2422, 2440, 2458, 2476, 2494, 2512, 2530, 2548, 2566, 2584, 2602, 2620, 2638, 2656, 2674, 2692, 2710, 2728, 2746, 2764, 2782, 2800, 2818, 2836, 2854, 2872, 2890, 2908, 2926, 2944, 2962, 2980, 2998, 3016, 3034, 3052, 3070, 3088, 3106, 3124, 3142, 3160, 3178, 3196, 3214, 3232, 3250, 3268, 3286, 3304, 3322, 3340, 3358, 3376, 3394, 3412, 3430, 3448, 3466, 3484, 3502, 3520, 3538, 3556, 3574, 3592, 3610, 3628, 3646, 3664, 3682, 3700, 3718, 3736, 3754, 3772, 3790, 4535, 4553, 4571, 4589, 4607, 4625, 4643, 4661, 4679, 4697, 4715, 4733, 4751, 4769, 4787, 4805, 4823, 4841, 4859, 4877, 4895, 4913, 4931, 4949, 4967, 4985, 5003, 5021, 5039, 5057, 5075, 5093, 5111, 5129, 5147, 5165, 5183, 5201, 5219, 5237, 5255, 5273, 5291, 5309, 5327, 5345, 5363, 5381, 5399, 5417, 5435, 5453, 5471, 5489, 5507, 5525, 5543, 5561, 5579, 5597, 5615, 5633, 5651, 5669, 5687, 5705, 5723, 5741, 5759, 5777, 5795, 5813, 5831, 5849, 5867, 5885, 5903, 5921, 5939, 5957, 5975, 5993, 6011, 6029, 6047, 6065, 6083, 6101, 6119, 6137, 6155, 6173, 6191, 6209, 6227, 6245, 6263, 6281, 6299, 6317, 6335, 6353, 6371, 6389, 6407, 6425, 6443, 6461, 6479, 17, 35, 53, 71, 89, 107, 125, 143, 161, 179, 197, 215, 233, 251, 269, 287, 305, 323, 341, 359, 377, 395, 413, 431, 449, 467, 485, 503, 521, 539, 557, 575, 593, 611, 629, 647, 665, 683, 701, 719, 737, 755, 773, 791, 809, 827, 845, 863, 881, 899, 917, 935, 953, 971, 989, 1007, 1025, 1043, 1061, 1079, 1097, 1115, 1133, 1151, 1169, 1187, 1205, 1223, 1241, 1259, 1277, 1295, 1313, 1331, 1349, 1367, 1385, 1403, 1421, 1439, 1457, 1475, 1493, 1511, 1529, 1547, 1565, 1583, 1601, 1619, 1637, 1655, 1673, 1691, 1709, 1727, 1745, 1763, 1781, 1799, 1817, 1835, 1853, 1871, 1889, 1907, 1925, 1943, 1961, 1979, 1997, 2015, 2033, 2051, 2069, 2087, 2105, 2123, 2141, 2159, 2177, 2195, 2213, 2231, 2249, 2267, 2285, 2303, 2321, 2339, 2357, 2375, 2393, 2411, 2429, 2447, 2465, 2483, 2501, 2519, 2537, 2555, 2573, 2591, 2609, 2627, 2645, 2663, 2681, 2699, 2717, 2735, 2753, 2771, 2789, 2807, 2825, 2843, 2861, 2879, 2897, 2915, 2933, 2951, 2969, 2987, 3005, 3023, 3041, 3059, 3077, 3095, 3113, 3131, 3149, 3167, 3185, 3203, 3221, 3239, 3257, 3275, 3293, 3311, 3329, 3347, 3365, 3383, 3401, 3419, 3437, 3455, 3473, 3491, 3509, 3527, 3545, 3563, 3581, 3599, 3617, 3635, 3653, 3671, 3689, 3707, 3725, 3743, 3761, 3779, 3797, 3815, 3833, 3851, 3869, 3887, 3905, 3923, 3941, 3959, 3977, 3995, 4013, 4031, 4049, 4067, 4085, 4103, 4121, 4139, 4157, 4175, 4193, 4211, 4229, 4247, 4265, 4283, 4301, 4319, 4337, 4355, 4373, 4391, 4409, 4427, 4445, 4463, 4481, 4499, 4517, 876, 894, 912, 930, 948, 966, 984, 1002, 1020, 1038, 1056, 1074, 1092, 1110, 1128, 1146, 1164, 1182, 1200, 1218, 1236, 1254, 1272, 1290, 1308, 1326, 1344, 1362, 1380, 1398, 1416, 1434, 1452, 1470, 1488, 1506, 1524, 1542, 1560, 1578, 1596, 1614, 1632, 1650, 1668, 1686, 1704, 1722, 1740, 1758, 1776, 1794, 1812, 1830, 1848, 1866, 1884, 1902, 1920, 1938, 1956, 1974, 1992, 2010, 2028, 2046, 2064, 2082, 2100, 2118, 2136, 2154, 2172, 2190, 2208, 2226, 2244, 2262, 2280, 2298, 2316, 2334, 2352, 2370, 2388, 2406, 2424, 2442, 2460, 2478, 2496, 2514, 2532, 2550, 2568, 2586, 2604, 2622, 2640, 2658, 2676, 2694, 2712, 2730, 2748, 2766, 2784, 2802, 2820, 2838, 2856, 2874, 2892, 2910, 2928, 2946, 2964, 2982, 3000, 3018, 3036, 3054, 3072, 3090, 3108, 3126, 3144, 3162, 3180, 3198, 3216, 3234, 3252, 3270, 3288, 3306, 3324, 3342, 3360, 3378, 3396, 3414, 3432, 3450, 3468, 3486, 3504, 3522, 3540, 3558, 3576, 3594, 3612, 3630, 3648, 3666, 3684, 3702, 3720, 3738, 3756, 3774, 3792, 3810, 3828, 3846, 3864, 3882, 3900, 3918, 3936, 3954, 3972, 3990, 4008, 4026, 4044, 4062, 4080, 4098, 4116, 4134, 4152, 4170, 4188, 4206, 4224, 4242, 4260, 4278, 4296, 4314, 4332, 4350, 4368, 4386, 4404, 4422, 4440, 4458, 4476, 4494, 4512, 4530, 4548, 4566, 4584, 4602, 4620, 4638, 4656, 4674, 4692, 4710, 4728, 4746, 4764, 4782, 4800, 4818, 4836, 4854, 4872, 4890, 4908, 4926, 4944, 4962, 4980, 4998, 5016, 5034, 5052, 5070, 5088, 5106, 5124, 5142, 5160, 5178, 5196, 5214, 5232, 5250, 5268, 5286, 5304, 5322, 5340, 5358, 5376, 5394, 5412, 5430, 5448, 5466, 5484, 5502, 5520, 5538, 5556, 5574, 5592, 5610, 5628, 5646, 5664, 5682, 5700, 5718, 5736, 5754, 5772, 5790, 5808, 5826, 5844, 5862, 5880, 5898, 5916, 5934, 5952, 5970, 5988, 6006, 6024, 6042, 6060, 6078, 6096, 6114, 6132, 6150, 6168, 6186, 6204, 6222, 6240, 6258, 6276, 6294, 6312, 6330, 6348, 6366, 6384, 6402, 6420, 6438, 6456, 6474, 12, 30, 48, 66, 84, 102, 120, 138, 156, 174, 192, 210, 228, 246, 264, 282, 300, 318, 336, 354, 372, 390, 408, 426, 444, 462, 480, 498, 516, 534, 552, 570, 588, 606, 624, 642, 660, 678, 696, 714, 732, 750, 768, 786, 804, 822, 840, 858, 1849, 1867, 1885, 1903, 1921, 1939, 1957, 1975, 1993, 2011, 2029, 2047, 2065, 2083, 2101, 2119, 2137, 2155, 2173, 2191, 2209, 2227, 2245, 2263, 2281, 2299, 2317, 2335, 2353, 2371, 2389, 2407, 2425, 2443, 2461, 2479, 2497, 2515, 2533, 2551, 2569, 2587, 2605, 2623, 2641, 2659, 2677, 2695, 2713, 2731, 2749, 2767, 2785, 2803, 2821, 2839, 2857, 2875, 2893, 2911, 2929, 2947, 2965, 2983, 3001, 3019, 3037, 3055, 3073, 3091, 3109, 3127, 3145, 3163, 3181, 3199, 3217, 3235, 3253, 3271, 3289, 3307, 3325, 3343, 3361, 3379, 3397, 3415, 3433, 3451, 3469, 3487, 3505, 3523, 3541, 3559, 3577, 3595, 3613, 3631, 3649, 3667, 3685, 3703, 3721, 3739, 3757, 3775, 3793, 3811, 3829, 3847, 3865, 3883, 3901, 3919, 3937, 3955, 3973, 3991, 4009, 4027, 4045, 4063, 4081, 4099, 4117, 4135, 4153, 4171, 4189, 4207, 4225, 4243, 4261, 4279, 4297, 4315, 4333, 4351, 4369, 4387, 4405, 4423, 4441, 4459, 4477, 4495, 4513, 4531, 4549, 4567, 4585, 4603, 4621, 4639, 4657, 4675, 4693, 4711, 4729, 4747, 4765, 4783, 4801, 4819, 4837, 4855, 4873, 4891, 4909, 4927, 4945, 4963, 4981, 4999, 5017, 5035, 5053, 5071, 5089, 5107, 5125, 5143, 5161, 5179, 5197, 5215, 5233, 5251, 5269, 5287, 5305, 5323, 5341, 5359, 5377, 5395, 5413, 5431, 5449, 5467, 5485, 5503, 5521, 5539, 5557, 5575, 5593, 5611, 5629, 5647, 5665, 5683, 5701, 5719, 5737, 5755, 5773, 5791, 5809, 5827, 5845, 5863, 5881, 5899, 5917, 5935, 5953, 5971, 5989, 6007, 6025, 6043, 6061, 6079, 6097, 6115, 6133, 6151, 6169, 6187, 6205, 6223, 6241, 6259, 6277, 6295, 6313, 6331, 6349, 6367, 6385, 6403, 6421, 6439, 6457, 6475, 13, 31, 49, 67, 85, 103, 121, 139, 157, 175, 193, 211, 229, 247, 265, 283, 301, 319, 337, 355, 373, 391, 409, 427, 445, 463, 481, 499, 517, 535, 553, 571, 589, 607, 625, 643, 661, 679, 697, 715, 733, 751, 769, 787, 805, 823, 841, 859, 877, 895, 913, 931, 949, 967, 985, 1003, 1021, 1039, 1057, 1075, 1093, 1111, 1129, 1147, 1165, 1183, 1201, 1219, 1237, 1255, 1273, 1291, 1309, 1327, 1345, 1363, 1381, 1399, 1417, 1435, 1453, 1471, 1489, 1507, 1525, 1543, 1561, 1579, 1597, 1615, 1633, 1651, 1669, 1687, 1705, 1723, 1741, 1759, 1777, 1795, 1813, 1831, 885, 903, 921, 939, 957, 975, 993, 1011, 1029, 1047, 1065, 1083, 1101, 1119, 1137, 1155, 1173, 1191, 1209, 1227, 1245, 1263, 1281, 1299, 1317, 1335, 1353, 1371, 1389, 1407, 1425, 1443, 1461, 1479, 1497, 1515, 1533, 1551, 1569, 1587, 1605, 1623, 1641, 1659, 1677, 1695, 1713, 1731, 1749, 1767, 1785, 1803, 1821, 1839, 1857, 1875, 1893, 1911, 1929, 1947, 1965, 1983, 2001, 2019, 2037, 2055, 2073, 2091, 2109, 2127, 2145, 2163, 2181, 2199, 2217, 2235, 2253, 2271, 2289, 2307, 2325, 2343, 2361, 2379, 2397, 2415, 2433, 2451, 2469, 2487, 2505, 2523, 2541, 2559, 2577, 2595, 2613, 2631, 2649, 2667, 2685, 2703, 2721, 2739, 2757, 2775, 2793, 2811, 2829, 2847, 2865, 2883, 2901, 2919, 2937, 2955, 2973, 2991, 3009, 3027, 3045, 3063, 3081, 3099, 3117, 3135, 3153, 3171, 3189, 3207, 3225, 3243, 3261, 3279, 3297, 3315, 3333, 3351, 3369, 3387, 3405, 3423, 3441, 3459, 3477, 3495, 3513, 3531, 3549, 3567, 3585, 3603, 3621, 3639, 3657, 3675, 3693, 3711, 3729, 3747, 3765, 3783, 3801, 3819, 3837, 3855, 3873, 3891, 3909, 3927, 3945, 3963, 3981, 3999, 4017, 4035, 4053, 4071, 4089, 4107, 4125, 4143, 4161, 4179, 4197, 4215, 4233, 4251, 4269, 4287, 4305, 4323, 4341, 4359, 4377, 4395, 4413, 4431, 4449, 4467, 4485, 4503, 4521, 4539, 4557, 4575, 4593, 4611, 4629, 4647, 4665, 4683, 4701, 4719, 4737, 4755, 4773, 4791, 4809, 4827, 4845, 4863, 4881, 4899, 4917, 4935, 4953, 4971, 4989, 5007, 5025, 5043, 5061, 5079, 5097, 5115, 5133, 5151, 5169, 5187, 5205, 5223, 5241, 5259, 5277, 5295, 5313, 5331, 5349, 5367, 5385, 5403, 5421, 5439, 5457, 5475, 5493, 5511, 5529, 5547, 5565, 5583, 5601, 5619, 5637, 5655, 5673, 5691, 5709, 5727, 5745, 5763, 5781, 5799, 5817, 5835, 5853, 5871, 5889, 5907, 5925, 5943, 5961, 5979, 5997, 6015, 6033, 6051, 6069, 6087, 6105, 6123, 6141, 6159, 6177, 6195, 6213, 6231, 6249, 6267, 6285, 6303, 6321, 6339, 6357, 6375, 6393, 6411, 6429, 6447, 6465, 3, 21, 39, 57, 75, 93, 111, 129, 147, 165, 183, 201, 219, 237, 255, 273, 291, 309, 327, 345, 363, 381, 399, 417, 435, 453, 471, 489, 507, 525, 543, 561, 579, 597, 615, 633, 651, 669, 687, 705, 723, 741, 759, 777, 795, 813, 831, 849, 867, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2841, 2859, 2877, 2895, 2913, 2931, 2949, 2967, 2985, 3003, 3021, 3039, 3057, 3075, 3093, 3111, 3129, 3147, 3165, 3183, 3201, 3219, 3237, 3255, 3273, 3291, 3309, 3327, 3345, 3363, 3381, 3399, 3417, 3435, 3453, 3471, 3489, 3507, 3525, 3543, 3561, 3579, 3597, 3615, 3633, 3651, 3669, 3687, 3705, 3723, 3741, 3759, 3777, 3795, 3813, 3831, 3849, 3867, 3885, 3903, 3921, 3939, 3957, 3975, 3993, 4011, 4029, 4047, 4065, 4083, 4101, 4119, 4137, 4155, 4173, 4191, 4209, 4227, 4245, 4263, 4281, 4299, 4317, 4335, 4353, 4371, 4389, 4407, 4425, 4443, 4461, 4479, 4497, 4515, 4533, 4551, 4569, 4587, 4605, 4623, 4641, 4659, 4677, 4695, 4713, 4731, 4749, 4767, 4785, 4803, 4821, 4839, 4857, 4875, 4893, 4911, 4929, 4947, 4965, 4983, 5001, 5019, 5037, 5055, 5073, 5091, 5109, 5127, 5145, 5163, 5181, 5199, 5217, 5235, 5253, 5271, 5289, 5307, 5325, 5343, 5361, 5379, 5397, 5415, 5433, 5451, 5469, 5487, 5505, 5523, 5541, 5559, 5577, 5595, 5613, 5631, 5649, 5667, 5685, 5703, 5721, 5739, 5757, 5775, 5793, 5811, 5829, 5847, 5865, 5883, 5901, 5919, 5937, 5955, 5973, 5991, 6009, 6027, 6045, 6063, 6081, 6099, 6117, 6135, 6153, 6171, 6189, 6207, 6225, 6243, 6261, 6279, 6297, 6315, 6333, 6351, 6369, 6387, 6405, 6423, 6441, 6459, 6477, 15, 33, 51, 69, 87, 105, 123, 141, 159, 177, 195, 213, 231, 249, 267, 285, 303, 321, 339, 357, 375, 393, 411, 429, 447, 465, 483, 501, 519, 537, 555, 573, 591, 609, 627, 645, 663, 681, 699, 717, 735, 753, 771, 789, 807, 825, 843, 861, 879, 897, 915, 933, 951, 969, 987, 1005, 1023, 1041, 1059, 1077, 1095, 1113, 1131, 1149, 1167, 1185, 1203, 1221, 1239, 1257, 1275, 1293, 1311, 1329, 1347, 1365, 1383, 1401, 1419, 1437, 1455, 1473, 1491, 1509, 1527, 1545, 1563, 1581, 1599, 1617, 1635, 1653, 1671, 1689, 1707, 1725, 1743, 1761, 1779, 1797, 1815, 1833, 1851, 1869, 1887, 1905, 1923, 1941, 1959, 1977, 1995, 2013, 2031, 2049, 2067, 2085, 2103, 2121, 2139, 2157, 2175, 2193, 2211, 2229, 2247, 2265, 2283, 2301, 2319, 2337, 2355, 2373, 2391, 2409, 2427, 2445, 2463, 2481, 2499, 2517, 2535, 2553, 2571, 2589, 2607, 2625, 2643, 2661, 2679, 2697, 2715, 2733, 2751, 2769, 2787, 2805, 2823, 5602, 5620, 5638, 5656, 5674, 5692, 5710, 5728, 5746, 5764, 5782, 5800, 5818, 5836, 5854, 5872, 5890, 5908, 5926, 5944, 5962, 5980, 5998, 6016, 6034, 6052, 6070, 6088, 6106, 6124, 6142, 6160, 6178, 6196, 6214, 6232, 6250, 6268, 6286, 6304, 6322, 6340, 6358, 6376, 6394, 6412, 6430, 6448, 6466, 4, 22, 40, 58, 76, 94, 112, 130, 148, 166, 184, 202, 220, 238, 256, 274, 292, 310, 328, 346, 364, 382, 400, 418, 436, 454, 472, 490, 508, 526, 544, 562, 580, 598, 616, 634, 652, 670, 688, 706, 724, 742, 760, 778, 796, 814, 832, 850, 868, 886, 904, 922, 940, 958, 976, 994, 1012, 1030, 1048, 1066, 1084, 1102, 1120, 1138, 1156, 1174, 1192, 1210, 1228, 1246, 1264, 1282, 1300, 1318, 1336, 1354, 1372, 1390, 1408, 1426, 1444, 1462, 1480, 1498, 1516, 1534, 1552, 1570, 1588, 1606, 1624, 1642, 1660, 1678, 1696, 1714, 1732, 1750, 1768, 1786, 1804, 1822, 1840, 1858, 1876, 1894, 1912, 1930, 1948, 1966, 1984, 2002, 2020, 2038, 2056, 2074, 2092, 2110, 2128, 2146, 2164, 2182, 2200, 2218, 2236, 2254, 2272, 2290, 2308, 2326, 2344, 2362, 2380, 2398, 2416, 2434, 2452, 2470, 2488, 2506, 2524, 2542, 2560, 2578, 2596, 2614, 2632, 2650, 2668, 2686, 2704, 2722, 2740, 2758, 2776, 2794, 2812, 2830, 2848, 2866, 2884, 2902, 2920, 2938, 2956, 2974, 2992, 3010, 3028, 3046, 3064, 3082, 3100, 3118, 3136, 3154, 3172, 3190, 3208, 3226, 3244, 3262, 3280, 3298, 3316, 3334, 3352, 3370, 3388, 3406, 3424, 3442, 3460, 3478, 3496, 3514, 3532, 3550, 3568, 3586, 3604, 3622, 3640, 3658, 3676, 3694, 3712, 3730, 3748, 3766, 3784, 3802, 3820, 3838, 3856, 3874, 3892, 3910, 3928, 3946, 3964, 3982, 4000, 4018, 4036, 4054, 4072, 4090, 4108, 4126, 4144, 4162, 4180, 4198, 4216, 4234, 4252, 4270, 4288, 4306, 4324, 4342, 4360, 4378, 4396, 4414, 4432, 4450, 4468, 4486, 4504, 4522, 4540, 4558, 4576, 4594, 4612, 4630, 4648, 4666, 4684, 4702, 4720, 4738, 4756, 4774, 4792, 4810, 4828, 4846, 4864, 4882, 4900, 4918, 4936, 4954, 4972, 4990, 5008, 5026, 5044, 5062, 5080, 5098, 5116, 5134, 5152, 5170, 5188, 5206, 5224, 5242, 5260, 5278, 5296, 5314, 5332, 5350, 5368, 5386, 5404, 5422, 5440, 5458, 5476, 5494, 5512, 5530, 5548, 5566, 5584, 5299, 5317, 5335, 5353, 5371, 5389, 5407, 5425, 5443, 5461, 5479, 5497, 5515, 5533, 5551, 5569, 5587, 5605, 5623, 5641, 5659, 5677, 5695, 5713, 5731, 5749, 5767, 5785, 5803, 5821, 5839, 5857, 5875, 5893, 5911, 5929, 5947, 5965, 5983, 6001, 6019, 6037, 6055, 6073, 6091, 6109, 6127, 6145, 6163, 6181, 6199, 6217, 6235, 6253, 6271, 6289, 6307, 6325, 6343, 6361, 6379, 6397, 6415, 6433, 6451, 6469, 7, 25, 43, 61, 79, 97, 115, 133, 151, 169, 187, 205, 223, 241, 259, 277, 295, 313, 331, 349, 367, 385, 403, 421, 439, 457, 475, 493, 511, 529, 547, 565, 583, 601, 619, 637, 655, 673, 691, 709, 727, 745, 763, 781, 799, 817, 835, 853, 871, 889, 907, 925, 943, 961, 979, 997, 1015, 1033, 1051, 1069, 1087, 1105, 1123, 1141, 1159, 1177, 1195, 1213, 1231, 1249, 1267, 1285, 1303, 1321, 1339, 1357, 1375, 1393, 1411, 1429, 1447, 1465, 1483, 1501, 1519, 1537, 1555, 1573, 1591, 1609, 1627, 1645, 1663, 1681, 1699, 1717, 1735, 1753, 1771, 1789, 1807, 1825, 1843, 1861, 1879, 1897, 1915, 1933, 1951, 1969, 1987, 2005, 2023, 2041, 2059, 2077, 2095, 2113, 2131, 2149, 2167, 2185, 2203, 2221, 2239, 2257, 2275, 2293, 2311, 2329, 2347, 2365, 2383, 2401, 2419, 2437, 2455, 2473, 2491, 2509, 2527, 2545, 2563, 2581, 2599, 2617, 2635, 2653, 2671, 2689, 2707, 2725, 2743, 2761, 2779, 2797, 2815, 2833, 2851, 2869, 2887, 2905, 2923, 2941, 2959, 2977, 2995, 3013, 3031, 3049, 3067, 3085, 3103, 3121, 3139, 3157, 3175, 3193, 3211, 3229, 3247, 3265, 3283, 3301, 3319, 3337, 3355, 3373, 3391, 3409, 3427, 3445, 3463, 3481, 3499, 3517, 3535, 3553, 3571, 3589, 3607, 3625, 3643, 3661, 3679, 3697, 3715, 3733, 3751, 3769, 3787, 3805, 3823, 3841, 3859, 3877, 3895, 3913, 3931, 3949, 3967, 3985, 4003, 4021, 4039, 4057, 4075, 4093, 4111, 4129, 4147, 4165, 4183, 4201, 4219, 4237, 4255, 4273, 4291, 4309, 4327, 4345, 4363, 4381, 4399, 4417, 4435, 4453, 4471, 4489, 4507, 4525, 4543, 4561, 4579, 4597, 4615, 4633, 4651, 4669, 4687, 4705, 4723, 4741, 4759, 4777, 4795, 4813, 4831, 4849, 4867, 4885, 4903, 4921, 4939, 4957, 4975, 4993, 5011, 5029, 5047, 5065, 5083, 5101, 5119, 5137, 5155, 5173, 5191, 5209, 5227, 5245, 5263, 5281, 2442, 2460, 2478, 2496, 2514, 2532, 2550, 2568, 2586, 2604, 2622, 2640, 2658, 2676, 2694, 2712, 2730, 2748, 2766, 2784, 2802, 2820, 2838, 2856, 2874, 2892, 2910, 2928, 2946, 2964, 2982, 3000, 3018, 3036, 3054, 3072, 3090, 3108, 3126, 3144, 3162, 3180, 3198, 3216, 3234, 3252, 3270, 3288, 3306, 3324, 3342, 3360, 3378, 3396, 3414, 3432, 3450, 3468, 3486, 3504, 3522, 3540, 3558, 3576, 3594, 3612, 3630, 3648, 3666, 3684, 3702, 3720, 3738, 3756, 3774, 3792, 3810, 3828, 3846, 3864, 3882, 3900, 3918, 3936, 3954, 3972, 3990, 4008, 4026, 4044, 4062, 4080, 4098, 4116, 4134, 4152, 4170, 4188, 4206, 4224, 4242, 4260, 4278, 4296, 4314, 4332, 4350, 4368, 4386, 4404, 4422, 4440, 4458, 4476, 4494, 4512, 4530, 4548, 4566, 4584, 4602, 4620, 4638, 4656, 4674, 4692, 4710, 4728, 4746, 4764, 4782, 4800, 4818, 4836, 4854, 4872, 4890, 4908, 4926, 4944, 4962, 4980, 4998, 5016, 5034, 5052, 5070, 5088, 5106, 5124, 5142, 5160, 5178, 5196, 5214, 5232, 5250, 5268, 5286, 5304, 5322, 5340, 5358, 5376, 5394, 5412, 5430, 5448, 5466, 5484, 5502, 5520, 5538, 5556, 5574, 5592, 5610, 5628, 5646, 5664, 5682, 5700, 5718, 5736, 5754, 5772, 5790, 5808, 5826, 5844, 5862, 5880, 5898, 5916, 5934, 5952, 5970, 5988, 6006, 6024, 6042, 6060, 6078, 6096, 6114, 6132, 6150, 6168, 6186, 6204, 6222, 6240, 6258, 6276, 6294, 6312, 6330, 6348, 6366, 6384, 6402, 6420, 6438, 6456, 6474, 12, 30, 48, 66, 84, 102, 120, 138, 156, 174, 192, 210, 228, 246, 264, 282, 300, 318, 336, 354, 372, 390, 408, 426, 444, 462, 480, 498, 516, 534, 552, 570, 588, 606, 624, 642, 660, 678, 696, 714, 732, 750, 768, 786, 804, 822, 840, 858, 876, 894, 912, 930, 948, 966, 984, 1002, 1020, 1038, 1056, 1074, 1092, 1110, 1128, 1146, 1164, 1182, 1200, 1218, 1236, 1254, 1272, 1290, 1308, 1326, 1344, 1362, 1380, 1398, 1416, 1434, 1452, 1470, 1488, 1506, 1524, 1542, 1560, 1578, 1596, 1614, 1632, 1650, 1668, 1686, 1704, 1722, 1740, 1758, 1776, 1794, 1812, 1830, 1848, 1866, 1884, 1902, 1920, 1938, 1956, 1974, 1992, 2010, 2028, 2046, 2064, 2082, 2100, 2118, 2136, 2154, 2172, 2190, 2208, 2226, 2244, 2262, 2280, 2298, 2316, 2334, 2352, 2370, 2388, 2406, 2424, 1514, 1532, 1550, 1568, 1586, 1604, 1622, 1640, 1658, 1676, 1694, 1712, 1730, 1748, 1766, 1784, 1802, 1820, 1838, 1856, 1874, 1892, 1910, 1928, 1946, 1964, 1982, 2000, 2018, 2036, 2054, 2072, 2090, 2108, 2126, 2144, 2162, 2180, 2198, 2216, 2234, 2252, 2270, 2288, 2306, 2324, 2342, 2360, 2378, 2396, 2414, 2432, 2450, 2468, 2486, 2504, 2522, 2540, 2558, 2576, 2594, 2612, 2630, 2648, 2666, 2684, 2702, 2720, 2738, 2756, 2774, 2792, 2810, 2828, 2846, 2864, 2882, 2900, 2918, 2936, 2954, 2972, 2990, 3008, 3026, 3044, 3062, 3080, 3098, 3116, 3134, 3152, 3170, 3188, 3206, 3224, 3242, 3260, 3278, 3296, 3314, 3332, 3350, 3368, 3386, 3404, 3422, 3440, 3458, 3476, 3494, 3512, 3530, 3548, 3566, 3584, 3602, 3620, 3638, 3656, 3674, 3692, 3710, 3728, 3746, 3764, 3782, 3800, 3818, 3836, 3854, 3872, 3890, 3908, 3926, 3944, 3962, 3980, 3998, 4016, 4034, 4052, 4070, 4088, 4106, 4124, 4142, 4160, 4178, 4196, 4214, 4232, 4250, 4268, 4286, 4304, 4322, 4340, 4358, 4376, 4394, 4412, 4430, 4448, 4466, 4484, 4502, 4520, 4538, 4556, 4574, 4592, 4610, 4628, 4646, 4664, 4682, 4700, 4718, 4736, 4754, 4772, 4790, 4808, 4826, 4844, 4862, 4880, 4898, 4916, 4934, 4952, 4970, 4988, 5006, 5024, 5042, 5060, 5078, 5096, 5114, 5132, 5150, 5168, 5186, 5204, 5222, 5240, 5258, 5276, 5294, 5312, 5330, 5348, 5366, 5384, 5402, 5420, 5438, 5456, 5474, 5492, 5510, 5528, 5546, 5564, 5582, 5600, 5618, 5636, 5654, 5672, 5690, 5708, 5726, 5744, 5762, 5780, 5798, 5816, 5834, 5852, 5870, 5888, 5906, 5924, 5942, 5960, 5978, 5996, 6014, 6032, 6050, 6068, 6086, 6104, 6122, 6140, 6158, 6176, 6194, 6212, 6230, 6248, 6266, 6284, 6302, 6320, 6338, 6356, 6374, 6392, 6410, 6428, 6446, 6464, 2, 20, 38, 56, 74, 92, 110, 128, 146, 164, 182, 200, 218, 236, 254, 272, 290, 308, 326, 344, 362, 380, 398, 416, 434, 452, 470, 488, 506, 524, 542, 560, 578, 596, 614, 632, 650, 668, 686, 704, 722, 740, 758, 776, 794, 812, 830, 848, 866, 884, 902, 920, 938, 956, 974, 992, 1010, 1028, 1046, 1064, 1082, 1100, 1118, 1136, 1154, 1172, 1190, 1208, 1226, 1244, 1262, 1280, 1298, 1316, 1334, 1352, 1370, 1388, 1406, 1424, 1442, 1460, 1478, 1496, 5410, 5428, 5446, 5464, 5482, 5500, 5518, 5536, 5554, 5572, 5590, 5608, 5626, 5644, 5662, 5680, 5698, 5716, 5734, 5752, 5770, 5788, 5806, 5824, 5842, 5860, 5878, 5896, 5914, 5932, 5950, 5968, 5986, 6004, 6022, 6040, 6058, 6076, 6094, 6112, 6130, 6148, 6166, 6184, 6202, 6220, 6238, 6256, 6274, 6292, 6310, 6328, 6346, 6364, 6382, 6400, 6418, 6436, 6454, 6472, 10, 28, 46, 64, 82, 100, 118, 136, 154, 172, 190, 208, 226, 244, 262, 280, 298, 316, 334, 352, 370, 388, 406, 424, 442, 460, 478, 496, 514, 532, 550, 568, 586, 604, 622, 640, 658, 676, 694, 712, 730, 748, 766, 784, 802, 820, 838, 856, 874, 892, 910, 928, 946, 964, 982, 1000, 1018, 1036, 1054, 1072, 1090, 1108, 1126, 1144, 1162, 1180, 1198, 1216, 1234, 1252, 1270, 1288, 1306, 1324, 1342, 1360, 1378, 1396, 1414, 1432, 1450, 1468, 1486, 1504, 1522, 1540, 1558, 1576, 1594, 1612, 1630, 1648, 1666, 1684, 1702, 1720, 1738, 1756, 1774, 1792, 1810, 1828, 1846, 1864, 1882, 1900, 1918, 1936, 1954, 1972, 1990, 2008, 2026, 2044, 2062, 2080, 2098, 2116, 2134, 2152, 2170, 2188, 2206, 2224, 2242, 2260, 2278, 2296, 2314, 2332, 2350, 2368, 2386, 2404, 2422, 2440, 2458, 2476, 2494, 2512, 2530, 2548, 2566, 2584, 2602, 2620, 2638, 2656, 2674, 2692, 2710, 2728, 2746, 2764, 2782, 2800, 2818, 2836, 2854, 2872, 2890, 2908, 2926, 2944, 2962, 2980, 2998, 3016, 3034, 3052, 3070, 3088, 3106, 3124, 3142, 3160, 3178, 3196, 3214, 3232, 3250, 3268, 3286, 3304, 3322, 3340, 3358, 3376, 3394, 3412, 3430, 3448, 3466, 3484, 3502, 3520, 3538, 3556, 3574, 3592, 3610, 3628, 3646, 3664, 3682, 3700, 3718, 3736, 3754, 3772, 3790, 3808, 3826, 3844, 3862, 3880, 3898, 3916, 3934, 3952, 3970, 3988, 4006, 4024, 4042, 4060, 4078, 4096, 4114, 4132, 4150, 4168, 4186, 4204, 4222, 4240, 4258, 4276, 4294, 4312, 4330, 4348, 4366, 4384, 4402, 4420, 4438, 4456, 4474, 4492, 4510, 4528, 4546, 4564, 4582, 4600, 4618, 4636, 4654, 4672, 4690, 4708, 4726, 4744, 4762, 4780, 4798, 4816, 4834, 4852, 4870, 4888, 4906, 4924, 4942, 4960, 4978, 4996, 5014, 5032, 5050, 5068, 5086, 5104, 5122, 5140, 5158, 5176, 5194, 5212, 5230, 5248, 5266, 5284, 5302, 5320, 5338, 5356, 5374, 5392, 2312, 2330, 2348, 2366, 2384, 2402, 2420, 2438, 2456, 2474, 2492, 2510, 2528, 2546, 2564, 2582, 2600, 2618, 2636, 2654, 2672, 2690, 2708, 2726, 2744, 2762, 2780, 2798, 2816, 2834, 2852, 2870, 2888, 2906, 2924, 2942, 2960, 2978, 2996, 3014, 3032, 3050, 3068, 3086, 3104, 3122, 3140, 3158, 3176, 3194, 3212, 3230, 3248, 3266, 3284, 3302, 3320, 3338, 3356, 3374, 3392, 3410, 3428, 3446, 3464, 3482, 3500, 3518, 3536, 3554, 3572, 3590, 3608, 3626, 3644, 3662, 3680, 3698, 3716, 3734, 3752, 3770, 3788, 3806, 3824, 3842, 3860, 3878, 3896, 3914, 3932, 3950, 3968, 3986, 4004, 4022, 4040, 4058, 4076, 4094, 4112, 4130, 4148, 4166, 4184, 4202, 4220, 4238, 4256, 4274, 4292, 4310, 4328, 4346, 4364, 4382, 4400, 4418, 4436, 4454, 4472, 4490, 4508, 4526, 4544, 4562, 4580, 4598, 4616, 4634, 4652, 4670, 4688, 4706, 4724, 4742, 4760, 4778, 4796, 4814, 4832, 4850, 4868, 4886, 4904, 4922, 4940, 4958, 4976, 4994, 5012, 5030, 5048, 5066, 5084, 5102, 5120, 5138, 5156, 5174, 5192, 5210, 5228, 5246, 5264, 5282, 5300, 5318, 5336, 5354, 5372, 5390, 5408, 5426, 5444, 5462, 5480, 5498, 5516, 5534, 5552, 5570, 5588, 5606, 5624, 5642, 5660, 5678, 5696, 5714, 5732, 5750, 5768, 5786, 5804, 5822, 5840, 5858, 5876, 5894, 5912, 5930, 5948, 5966, 5984, 6002, 6020, 6038, 6056, 6074, 6092, 6110, 6128, 6146, 6164, 6182, 6200, 6218, 6236, 6254, 6272, 6290, 6308, 6326, 6344, 6362, 6380, 6398, 6416, 6434, 6452, 6470, 8, 26, 44, 62, 80, 98, 116, 134, 152, 170, 188, 206, 224, 242, 260, 278, 296, 314, 332, 350, 368, 386, 404, 422, 440, 458, 476, 494, 512, 530, 548, 566, 584, 602, 620, 638, 656, 674, 692, 710, 728, 746, 764, 782, 800, 818, 836, 854, 872, 890, 908, 926, 944, 962, 980, 998, 1016, 1034, 1052, 1070, 1088, 1106, 1124, 1142, 1160, 1178, 1196, 1214, 1232, 1250, 1268, 1286, 1304, 1322, 1340, 1358, 1376, 1394, 1412, 1430, 1448, 1466, 1484, 1502, 1520, 1538, 1556, 1574, 1592, 1610, 1628, 1646, 1664, 1682, 1700, 1718, 1736, 1754, 1772, 1790, 1808, 1826, 1844, 1862, 1880, 1898, 1916, 1934, 1952, 1970, 1988, 2006, 2024, 2042, 2060, 2078, 2096, 2114, 2132, 2150, 2168, 2186, 2204, 2222, 2240, 2258, 2276, 2294, 1122, 1140, 1158, 1176, 1194, 1212, 1230, 1248, 1266, 1284, 1302, 1320, 1338, 1356, 1374, 1392, 1410, 1428, 1446, 1464, 1482, 1500, 1518, 1536, 1554, 1572, 1590, 1608, 1626, 1644, 1662, 1680, 1698, 1716, 1734, 1752, 1770, 1788, 1806, 1824, 1842, 1860, 1878, 1896, 1914, 1932, 1950, 1968, 1986, 2004, 2022, 2040, 2058, 2076, 2094, 2112, 2130, 2148, 2166, 2184, 2202, 2220, 2238, 2256, 2274, 2292, 2310, 2328, 2346, 2364, 2382, 2400, 2418, 2436, 2454, 2472, 2490, 2508, 2526, 2544, 2562, 2580, 2598, 2616, 2634, 2652, 2670, 2688, 2706, 2724, 2742, 2760, 2778, 2796, 2814, 2832, 2850, 2868, 2886, 2904, 2922, 2940, 2958, 2976, 2994, 3012, 3030, 3048, 3066, 3084, 3102, 3120, 3138, 3156, 3174, 3192, 3210, 3228, 3246, 3264, 3282, 3300, 3318, 3336, 3354, 3372, 3390, 3408, 3426, 3444, 3462, 3480, 3498, 3516, 3534, 3552, 3570, 3588, 3606, 3624, 3642, 3660, 3678, 3696, 3714, 3732, 3750, 3768, 3786, 3804, 3822, 3840, 3858, 3876, 3894, 3912, 3930, 3948, 3966, 3984, 4002, 4020, 4038, 4056, 4074, 4092, 4110, 4128, 4146, 4164, 4182, 4200, 4218, 4236, 4254, 4272, 4290, 4308, 4326, 4344, 4362, 4380, 4398, 4416, 4434, 4452, 4470, 4488, 4506, 4524, 4542, 4560, 4578, 4596, 4614, 4632, 4650, 4668, 4686, 4704, 4722, 4740, 4758, 4776, 4794, 4812, 4830, 4848, 4866, 4884, 4902, 4920, 4938, 4956, 4974, 4992, 5010, 5028, 5046, 5064, 5082, 5100, 5118, 5136, 5154, 5172, 5190, 5208, 5226, 5244, 5262, 5280, 5298, 5316, 5334, 5352, 5370, 5388, 5406, 5424, 5442, 5460, 5478, 5496, 5514, 5532, 5550, 5568, 5586, 5604, 5622, 5640, 5658, 5676, 5694, 5712, 5730, 5748, 5766, 5784, 5802, 5820, 5838, 5856, 5874, 5892, 5910, 5928, 5946, 5964, 5982, 6000, 6018, 6036, 6054, 6072, 6090, 6108, 6126, 6144, 6162, 6180, 6198, 6216, 6234, 6252, 6270, 6288, 6306, 6324, 6342, 6360, 6378, 6396, 6414, 6432, 6450, 6468, 6, 24, 42, 60, 78, 96, 114, 132, 150, 168, 186, 204, 222, 240, 258, 276, 294, 312, 330, 348, 366, 384, 402, 420, 438, 456, 474, 492, 510, 528, 546, 564, 582, 600, 618, 636, 654, 672, 690, 708, 726, 744, 762, 780, 798, 816, 834, 852, 870, 888, 906, 924, 942, 960, 978, 996, 1014, 1032, 1050, 1068, 1086, 1104, 1787, 1805, 1823, 1841, 1859, 1877, 1895, 1913, 1931, 1949, 1967, 1985, 2003, 2021, 2039, 2057, 2075, 2093, 2111, 2129, 2147, 2165, 2183, 2201, 2219, 2237, 2255, 2273, 2291, 2309, 2327, 2345, 2363, 2381, 2399, 2417, 2435, 2453, 2471, 2489, 2507, 2525, 2543, 2561, 2579, 2597, 2615, 2633, 2651, 2669, 2687, 2705, 2723, 2741, 2759, 2777, 2795, 2813, 2831, 2849, 2867, 2885, 2903, 2921, 2939, 2957, 2975, 2993, 3011, 3029, 3047, 3065, 3083, 3101, 3119, 3137, 3155, 3173, 3191, 3209, 3227, 3245, 3263, 3281, 3299, 3317, 3335, 3353, 3371, 3389, 3407, 3425, 3443, 3461, 3479, 3497, 3515, 3533, 3551, 3569, 3587, 3605, 3623, 3641, 3659, 3677, 3695, 3713, 3731, 3749, 3767, 3785, 3803, 3821, 3839, 3857, 3875, 3893, 3911, 3929, 3947, 3965, 3983, 4001, 4019, 4037, 4055, 4073, 4091, 4109, 4127, 4145, 4163, 4181, 4199, 4217, 4235, 4253, 4271, 4289, 4307, 4325, 4343, 4361, 4379, 4397, 4415, 4433, 4451, 4469, 4487, 4505, 4523, 4541, 4559, 4577, 4595, 4613, 4631, 4649, 4667, 4685, 4703, 4721, 4739, 4757, 4775, 4793, 4811, 4829, 4847, 4865, 4883, 4901, 4919, 4937, 4955, 4973, 4991, 5009, 5027, 5045, 5063, 5081, 5099, 5117, 5135, 5153, 5171, 5189, 5207, 5225, 5243, 5261, 5279, 5297, 5315, 5333, 5351, 5369, 5387, 5405, 5423, 5441, 5459, 5477, 5495, 5513, 5531, 5549, 5567, 5585, 5603, 5621, 5639, 5657, 5675, 5693, 5711, 5729, 5747, 5765, 5783, 5801, 5819, 5837, 5855, 5873, 5891, 5909, 5927, 5945, 5963, 5981, 5999, 6017, 6035, 6053, 6071, 6089, 6107, 6125, 6143, 6161, 6179, 6197, 6215, 6233, 6251, 6269, 6287, 6305, 6323, 6341, 6359, 6377, 6395, 6413, 6431, 6449, 6467, 5, 23, 41, 59, 77, 95, 113, 131, 149, 167, 185, 203, 221, 239, 257, 275, 293, 311, 329, 347, 365, 383, 401, 419, 437, 455, 473, 491, 509, 527, 545, 563, 581, 599, 617, 635, 653, 671, 689, 707, 725, 743, 761, 779, 797, 815, 833, 851, 869, 887, 905, 923, 941, 959, 977, 995, 1013, 1031, 1049, 1067, 1085, 1103, 1121, 1139, 1157, 1175, 1193, 1211, 1229, 1247, 1265, 1283, 1301, 1319, 1337, 1355, 1373, 1391, 1409, 1427, 1445, 1463, 1481, 1499, 1517, 1535, 1553, 1571, 1589, 1607, 1625, 1643, 1661, 1679, 1697, 1715, 1733, 1751, 1769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4311, 4329, 4347, 4365, 4383, 4401, 4419, 4437, 4455, 4473, 4491, 4509, 4527, 4545, 4563, 4581, 4599, 4617, 4635, 4653, 4671, 4689, 4707, 4725, 4743, 4761, 4779, 4797, 4815, 4833, 4851, 4869, 4887, 4905, 4923, 4941, 4959, 4977, 4995, 5013, 5031, 5049, 5067, 5085, 5103, 5121, 5139, 5157, 5175, 5193, 5211, 5229, 5247, 5265, 5283, 5301, 5319, 5337, 5355, 5373, 5391, 5409, 5427, 5445, 5463, 5481, 5499, 5517, 5535, 5553, 5571, 5589, 5607, 5625, 5643, 5661, 5679, 5697, 5715, 5733, 5751, 5769, 5787, 5805, 5823, 5841, 5859, 5877, 5895, 5913, 5931, 5949, 5967, 5985, 6003, 6021, 6039, 6057, 6075, 6093, 6111, 6129, 6147, 6165, 6183, 6201, 6219, 6237, 6255, 6273, 6291, 6309, 6327, 6345, 6363, 6381, 6399, 6417, 6435, 6453, 6471, 9, 27, 45, 63, 81, 99, 117, 135, 153, 171, 189, 207, 225, 243, 261, 279, 297, 315, 333, 351, 369, 387, 405, 423, 441, 459, 477, 495, 513, 531, 549, 567, 585, 603, 621, 639, 657, 675, 693, 711, 729, 747, 765, 783, 801, 819, 837, 855, 873, 891, 909, 927, 945, 963, 981, 999, 1017, 1035, 1053, 1071, 1089, 1107, 1125, 1143, 1161, 1179, 1197, 1215, 1233, 1251, 1269, 1287, 1305, 1323, 1341, 1359, 1377, 1395, 1413, 1431, 1449, 1467, 1485, 1503, 1521, 1539, 1557, 1575, 1593, 1611, 1629, 1647, 1665, 1683, 1701, 1719, 1737, 1755, 1773, 1791, 1809, 1827, 1845, 1863, 1881, 1899, 1917, 1935, 1953, 1971, 1989, 2007, 2025, 2043, 2061, 2079, 2097, 2115, 2133, 2151, 2169, 2187, 2205, 2223, 2241, 2259, 2277, 2295, 2313, 2331, 2349, 2367, 2385, 2403, 2421, 2439, 2457, 2475, 2493, 2511, 2529, 2547, 2565, 2583, 2601, 2619, 2637, 2655, 2673, 2691, 2709, 2727, 2745, 2763, 2781, 2799, 2817, 2835, 2853, 2871, 2889, 2907, 2925, 2943, 2961, 2979, 2997, 3015, 3033, 3051, 3069, 3087, 3105, 3123, 3141, 3159, 3177, 3195, 3213, 3231, 3249, 3267, 3285, 3303, 3321, 3339, 3357, 3375, 3393, 3411, 3429, 3447, 3465, 3483, 3501, 3519, 3537, 3555, 3573, 3591, 3609, 3627, 3645, 3663, 3681, 3699, 3717, 3735, 3753, 3771, 3789, 3807, 3825, 3843, 3861, 3879, 3897, 3915, 3933, 3951, 3969, 3987, 4005, 4023, 4041, 4059, 4077, 4095, 4113, 4131, 4149, 4167, 4185, 4203, 4221, 4239, 4257, 4275, 4293, 5994, 6012, 6030, 6048, 6066, 6084, 6102, 6120, 6138, 6156, 6174, 6192, 6210, 6228, 6246, 6264, 6282, 6300, 6318, 6336, 6354, 6372, 6390, 6408, 6426, 6444, 6462, 6480, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198, 216, 234, 252, 270, 288, 306, 324, 342, 360, 378, 396, 414, 432, 450, 468, 486, 504, 522, 540, 558, 576, 594, 612, 630, 648, 666, 684, 702, 720, 738, 756, 774, 792, 810, 828, 846, 864, 882, 900, 918, 936, 954, 972, 990, 1008, 1026, 1044, 1062, 1080, 1098, 1116, 1134, 1152, 1170, 1188, 1206, 1224, 1242, 1260, 1278, 1296, 1314, 1332, 1350, 1368, 1386, 1404, 1422, 1440, 1458, 1476, 1494, 1512, 1530, 1548, 1566, 1584, 1602, 1620, 1638, 1656, 1674, 1692, 1710, 1728, 1746, 1764, 1782, 1800, 1818, 1836, 1854, 1872, 1890, 1908, 1926, 1944, 1962, 1980, 1998, 2016, 2034, 2052, 2070, 2088, 2106, 2124, 2142, 2160, 2178, 2196, 2214, 2232, 2250, 2268, 2286, 2304, 2322, 2340, 2358, 2376, 2394, 2412, 2430, 2448, 2466, 2484, 2502, 2520, 2538, 2556, 2574, 2592, 2610, 2628, 2646, 2664, 2682, 2700, 2718, 2736, 2754, 2772, 2790, 2808, 2826, 2844, 2862, 2880, 2898, 2916, 2934, 2952, 2970, 2988, 3006, 3024, 3042, 3060, 3078, 3096, 3114, 3132, 3150, 3168, 3186, 3204, 3222, 3240, 3258, 3276, 3294, 3312, 3330, 3348, 3366, 3384, 3402, 3420, 3438, 3456, 3474, 3492, 3510, 3528, 3546, 3564, 3582, 3600, 3618, 3636, 3654, 3672, 3690, 3708, 3726, 3744, 3762, 3780, 3798, 3816, 3834, 3852, 3870, 3888, 3906, 3924, 3942, 3960, 3978, 3996, 4014, 4032, 4050, 4068, 4086, 4104, 4122, 4140, 4158, 4176, 4194, 4212, 4230, 4248, 4266, 4284, 4302, 4320, 4338, 4356, 4374, 4392, 4410, 4428, 4446, 4464, 4482, 4500, 4518, 4536, 4554, 4572, 4590, 4608, 4626, 4644, 4662, 4680, 4698, 4716, 4734, 4752, 4770, 4788, 4806, 4824, 4842, 4860, 4878, 4896, 4914, 4932, 4950, 4968, 4986, 5004, 5022, 5040, 5058, 5076, 5094, 5112, 5130, 5148, 5166, 5184, 5202, 5220, 5238, 5256, 5274, 5292, 5310, 5328, 5346, 5364, 5382, 5400, 5418, 5436, 5454, 5472, 5490, 5508, 5526, 5544, 5562, 5580, 5598, 5616, 5634, 5652, 5670, 5688, 5706, 5724, 5742, 5760, 5778, 5796, 5814, 5832, 5850, 5868, 5886, 5904, 5922, 5940, 5958, 5976, 6321, 6339, 6357, 6375, 6393, 6411, 6429, 6447, 6465, 3, 21, 39, 57, 75, 93, 111, 129, 147, 165, 183, 201, 219, 237, 255, 273, 291, 309, 327, 345, 363, 381, 399, 417, 435, 453, 471, 489, 507, 525, 543, 561, 579, 597, 615, 633, 651, 669, 687, 705, 723, 741, 759, 777, 795, 813, 831, 849, 867, 885, 903, 921, 939, 957, 975, 993, 1011, 1029, 1047, 1065, 1083, 1101, 1119, 1137, 1155, 1173, 1191, 1209, 1227, 1245, 1263, 1281, 1299, 1317, 1335, 1353, 1371, 1389, 1407, 1425, 1443, 1461, 1479, 1497, 1515, 1533, 1551, 1569, 1587, 1605, 1623, 1641, 1659, 1677, 1695, 1713, 1731, 1749, 1767, 1785, 1803, 1821, 1839, 1857, 1875, 1893, 1911, 1929, 1947, 1965, 1983, 2001, 2019, 2037, 2055, 2073, 2091, 2109, 2127, 2145, 2163, 2181, 2199, 2217, 2235, 2253, 2271, 2289, 2307, 2325, 2343, 2361, 2379, 2397, 2415, 2433, 2451, 2469, 2487, 2505, 2523, 2541, 2559, 2577, 2595, 2613, 2631, 2649, 2667, 2685, 2703, 2721, 2739, 2757, 2775, 2793, 2811, 2829, 2847, 2865, 2883, 2901, 2919, 2937, 2955, 2973, 2991, 3009, 3027, 3045, 3063, 3081, 3099, 3117, 3135, 3153, 3171, 3189, 3207, 3225, 3243, 3261, 3279, 3297, 3315, 3333, 3351, 3369, 3387, 3405, 3423, 3441, 3459, 3477, 3495, 3513, 3531, 3549, 3567, 3585, 3603, 3621, 3639, 3657, 3675, 3693, 3711, 3729, 3747, 3765, 3783, 3801, 3819, 3837, 3855, 3873, 3891, 3909, 3927, 3945, 3963, 3981, 3999, 4017, 4035, 4053, 4071, 4089, 4107, 4125, 4143, 4161, 4179, 4197, 4215, 4233, 4251, 4269, 4287, 4305, 4323, 4341, 4359, 4377, 4395, 4413, 4431, 4449, 4467, 4485, 4503, 4521, 4539, 4557, 4575, 4593, 4611, 4629, 4647, 4665, 4683, 4701, 4719, 4737, 4755, 4773, 4791, 4809, 4827, 4845, 4863, 4881, 4899, 4917, 4935, 4953, 4971, 4989, 5007, 5025, 5043, 5061, 5079, 5097, 5115, 5133, 5151, 5169, 5187, 5205, 5223, 5241, 5259, 5277, 5295, 5313, 5331, 5349, 5367, 5385, 5403, 5421, 5439, 5457, 5475, 5493, 5511, 5529, 5547, 5565, 5583, 5601, 5619, 5637, 5655, 5673, 5691, 5709, 5727, 5745, 5763, 5781, 5799, 5817, 5835, 5853, 5871, 5889, 5907, 5925, 5943, 5961, 5979, 5997, 6015, 6033, 6051, 6069, 6087, 6105, 6123, 6141, 6159, 6177, 6195, 6213, 6231, 6249, 6267, 6285, 6303, 3413, 3431, 3449, 3467, 3485, 3503, 3521, 3539, 3557, 3575, 3593, 3611, 3629, 3647, 3665, 3683, 3701, 3719, 3737, 3755, 3773, 3791, 3809, 3827, 3845, 3863, 3881, 3899, 3917, 3935, 3953, 3971, 3989, 4007, 4025, 4043, 4061, 4079, 4097, 4115, 4133, 4151, 4169, 4187, 4205, 4223, 4241, 4259, 4277, 4295, 4313, 4331, 4349, 4367, 4385, 4403, 4421, 4439, 4457, 4475, 4493, 4511, 4529, 4547, 4565, 4583, 4601, 4619, 4637, 4655, 4673, 4691, 4709, 4727, 4745, 4763, 4781, 4799, 4817, 4835, 4853, 4871, 4889, 4907, 4925, 4943, 4961, 4979, 4997, 5015, 5033, 5051, 5069, 5087, 5105, 5123, 5141, 5159, 5177, 5195, 5213, 5231, 5249, 5267, 5285, 5303, 5321, 5339, 5357, 5375, 5393, 5411, 5429, 5447, 5465, 5483, 5501, 5519, 5537, 5555, 5573, 5591, 5609, 5627, 5645, 5663, 5681, 5699, 5717, 5735, 5753, 5771, 5789, 5807, 5825, 5843, 5861, 5879, 5897, 5915, 5933, 5951, 5969, 5987, 6005, 6023, 6041, 6059, 6077, 6095, 6113, 6131, 6149, 6167, 6185, 6203, 6221, 6239, 6257, 6275, 6293, 6311, 6329, 6347, 6365, 6383, 6401, 6419, 6437, 6455, 6473, 11, 29, 47, 65, 83, 101, 119, 137, 155, 173, 191, 209, 227, 245, 263, 281, 299, 317, 335, 353, 371, 389, 407, 425, 443, 461, 479, 497, 515, 533, 551, 569, 587, 605, 623, 641, 659, 677, 695, 713, 731, 749, 767, 785, 803, 821, 839, 857, 875, 893, 911, 929, 947, 965, 983, 1001, 1019, 1037, 1055, 1073, 1091, 1109, 1127, 1145, 1163, 1181, 1199, 1217, 1235, 1253, 1271, 1289, 1307, 1325, 1343, 1361, 1379, 1397, 1415, 1433, 1451, 1469, 1487, 1505, 1523, 1541, 1559, 1577, 1595, 1613, 1631, 1649, 1667, 1685, 1703, 1721, 1739, 1757, 1775, 1793, 1811, 1829, 1847, 1865, 1883, 1901, 1919, 1937, 1955, 1973, 1991, 2009, 2027, 2045, 2063, 2081, 2099, 2117, 2135, 2153, 2171, 2189, 2207, 2225, 2243, 2261, 2279, 2297, 2315, 2333, 2351, 2369, 2387, 2405, 2423, 2441, 2459, 2477, 2495, 2513, 2531, 2549, 2567, 2585, 2603, 2621, 2639, 2657, 2675, 2693, 2711, 2729, 2747, 2765, 2783, 2801, 2819, 2837, 2855, 2873, 2891, 2909, 2927, 2945, 2963, 2981, 2999, 3017, 3035, 3053, 3071, 3089, 3107, 3125, 3143, 3161, 3179, 3197, 3215, 3233, 3251, 3269, 3287, 3305, 3323, 3341, 3359, 3377, 3395, 4733, 4751, 4769, 4787, 4805, 4823, 4841, 4859, 4877, 4895, 4913, 4931, 4949, 4967, 4985, 5003, 5021, 5039, 5057, 5075, 5093, 5111, 5129, 5147, 5165, 5183, 5201, 5219, 5237, 5255, 5273, 5291, 5309, 5327, 5345, 5363, 5381, 5399, 5417, 5435, 5453, 5471, 5489, 5507, 5525, 5543, 5561, 5579, 5597, 5615, 5633, 5651, 5669, 5687, 5705, 5723, 5741, 5759, 5777, 5795, 5813, 5831, 5849, 5867, 5885, 5903, 5921, 5939, 5957, 5975, 5993, 6011, 6029, 6047, 6065, 6083, 6101, 6119, 6137, 6155, 6173, 6191, 6209, 6227, 6245, 6263, 6281, 6299, 6317, 6335, 6353, 6371, 6389, 6407, 6425, 6443, 6461, 6479, 17, 35, 53, 71, 89, 107, 125, 143, 161, 179, 197, 215, 233, 251, 269, 287, 305, 323, 341, 359, 377, 395, 413, 431, 449, 467, 485, 503, 521, 539, 557, 575, 593, 611, 629, 647, 665, 683, 701, 719, 737, 755, 773, 791, 809, 827, 845, 863, 881, 899, 917, 935, 953, 971, 989, 1007, 1025, 1043, 1061, 1079, 1097, 1115, 1133, 1151, 1169, 1187, 1205, 1223, 1241, 1259, 1277, 1295, 1313, 1331, 1349, 1367, 1385, 1403, 1421, 1439, 1457, 1475, 1493, 1511, 1529, 1547, 1565, 1583, 1601, 1619, 1637, 1655, 1673, 1691, 1709, 1727, 1745, 1763, 1781, 1799, 1817, 1835, 1853, 1871, 1889, 1907, 1925, 1943, 1961, 1979, 1997, 2015, 2033, 2051, 2069, 2087, 2105, 2123, 2141, 2159, 2177, 2195, 2213, 2231, 2249, 2267, 2285, 2303, 2321, 2339, 2357, 2375, 2393, 2411, 2429, 2447, 2465, 2483, 2501, 2519, 2537, 2555, 2573, 2591, 2609, 2627, 2645, 2663, 2681, 2699, 2717, 2735, 2753, 2771, 2789, 2807, 2825, 2843, 2861, 2879, 2897, 2915, 2933, 2951, 2969, 2987, 3005, 3023, 3041, 3059, 3077, 3095, 3113, 3131, 3149, 3167, 3185, 3203, 3221, 3239, 3257, 3275, 3293, 3311, 3329, 3347, 3365, 3383, 3401, 3419, 3437, 3455, 3473, 3491, 3509, 3527, 3545, 3563, 3581, 3599, 3617, 3635, 3653, 3671, 3689, 3707, 3725, 3743, 3761, 3779, 3797, 3815, 3833, 3851, 3869, 3887, 3905, 3923, 3941, 3959, 3977, 3995, 4013, 4031, 4049, 4067, 4085, 4103, 4121, 4139, 4157, 4175, 4193, 4211, 4229, 4247, 4265, 4283, 4301, 4319, 4337, 4355, 4373, 4391, 4409, 4427, 4445, 4463, 4481, 4499, 4517, 4535, 4553, 4571, 4589, 4607, 4625, 4643, 4661, 4679, 4697, 4715, 6385, 6403, 6421, 6439, 6457, 6475, 13, 31, 49, 67, 85, 103, 121, 139, 157, 175, 193, 211, 229, 247, 265, 283, 301, 319, 337, 355, 373, 391, 409, 427, 445, 463, 481, 499, 517, 535, 553, 571, 589, 607, 625, 643, 661, 679, 697, 715, 733, 751, 769, 787, 805, 823, 841, 859, 877, 895, 913, 931, 949, 967, 985, 1003, 1021, 1039, 1057, 1075, 1093, 1111, 1129, 1147, 1165, 1183, 1201, 1219, 1237, 1255, 1273, 1291, 1309, 1327, 1345, 1363, 1381, 1399, 1417, 1435, 1453, 1471, 1489, 1507, 1525, 1543, 1561, 1579, 1597, 1615, 1633, 1651, 1669, 1687, 1705, 1723, 1741, 1759, 1777, 1795, 1813, 1831, 1849, 1867, 1885, 1903, 1921, 1939, 1957, 1975, 1993, 2011, 2029, 2047, 2065, 2083, 2101, 2119, 2137, 2155, 2173, 2191, 2209, 2227, 2245, 2263, 2281, 2299, 2317, 2335, 2353, 2371, 2389, 2407, 2425, 2443, 2461, 2479, 2497, 2515, 2533, 2551, 2569, 2587, 2605, 2623, 2641, 2659, 2677, 2695, 2713, 2731, 2749, 2767, 2785, 2803, 2821, 2839, 2857, 2875, 2893, 2911, 2929, 2947, 2965, 2983, 3001, 3019, 3037, 3055, 3073, 3091, 3109, 3127, 3145, 3163, 3181, 3199, 3217, 3235, 3253, 3271, 3289, 3307, 3325, 3343, 3361, 3379, 3397, 3415, 3433, 3451, 3469, 3487, 3505, 3523, 3541, 3559, 3577, 3595, 3613, 3631, 3649, 3667, 3685, 3703, 3721, 3739, 3757, 3775, 3793, 3811, 3829, 3847, 3865, 3883, 3901, 3919, 3937, 3955, 3973, 3991, 4009, 4027, 4045, 4063, 4081, 4099, 4117, 4135, 4153, 4171, 4189, 4207, 4225, 4243, 4261, 4279, 4297, 4315, 4333, 4351, 4369, 4387, 4405, 4423, 4441, 4459, 4477, 4495, 4513, 4531, 4549, 4567, 4585, 4603, 4621, 4639, 4657, 4675, 4693, 4711, 4729, 4747, 4765, 4783, 4801, 4819, 4837, 4855, 4873, 4891, 4909, 4927, 4945, 4963, 4981, 4999, 5017, 5035, 5053, 5071, 5089, 5107, 5125, 5143, 5161, 5179, 5197, 5215, 5233, 5251, 5269, 5287, 5305, 5323, 5341, 5359, 5377, 5395, 5413, 5431, 5449, 5467, 5485, 5503, 5521, 5539, 5557, 5575, 5593, 5611, 5629, 5647, 5665, 5683, 5701, 5719, 5737, 5755, 5773, 5791, 5809, 5827, 5845, 5863, 5881, 5899, 5917, 5935, 5953, 5971, 5989, 6007, 6025, 6043, 6061, 6079, 6097, 6115, 6133, 6151, 6169, 6187, 6205, 6223, 6241, 6259, 6277, 6295, 6313, 6331, 6349, 6367, 3544, 3562, 3580, 3598, 3616, 3634, 3652, 3670, 3688, 3706, 3724, 3742, 3760, 3778, 3796, 3814, 3832, 3850, 3868, 3886, 3904, 3922, 3940, 3958, 3976, 3994, 4012, 4030, 4048, 4066, 4084, 4102, 4120, 4138, 4156, 4174, 4192, 4210, 4228, 4246, 4264, 4282, 4300, 4318, 4336, 4354, 4372, 4390, 4408, 4426, 4444, 4462, 4480, 4498, 4516, 4534, 4552, 4570, 4588, 4606, 4624, 4642, 4660, 4678, 4696, 4714, 4732, 4750, 4768, 4786, 4804, 4822, 4840, 4858, 4876, 4894, 4912, 4930, 4948, 4966, 4984, 5002, 5020, 5038, 5056, 5074, 5092, 5110, 5128, 5146, 5164, 5182, 5200, 5218, 5236, 5254, 5272, 5290, 5308, 5326, 5344, 5362, 5380, 5398, 5416, 5434, 5452, 5470, 5488, 5506, 5524, 5542, 5560, 5578, 5596, 5614, 5632, 5650, 5668, 5686, 5704, 5722, 5740, 5758, 5776, 5794, 5812, 5830, 5848, 5866, 5884, 5902, 5920, 5938, 5956, 5974, 5992, 6010, 6028, 6046, 6064, 6082, 6100, 6118, 6136, 6154, 6172, 6190, 6208, 6226, 6244, 6262, 6280, 6298, 6316, 6334, 6352, 6370, 6388, 6406, 6424, 6442, 6460, 6478, 16, 34, 52, 70, 88, 106, 124, 142, 160, 178, 196, 214, 232, 250, 268, 286, 304, 322, 340, 358, 376, 394, 412, 430, 448, 466, 484, 502, 520, 538, 556, 574, 592, 610, 628, 646, 664, 682, 700, 718, 736, 754, 772, 790, 808, 826, 844, 862, 880, 898, 916, 934, 952, 970, 988, 1006, 1024, 1042, 1060, 1078, 1096, 1114, 1132, 1150, 1168, 1186, 1204, 1222, 1240, 1258, 1276, 1294, 1312, 1330, 1348, 1366, 1384, 1402, 1420, 1438, 1456, 1474, 1492, 1510, 1528, 1546, 1564, 1582, 1600, 1618, 1636, 1654, 1672, 1690, 1708, 1726, 1744, 1762, 1780, 1798, 1816, 1834, 1852, 1870, 1888, 1906, 1924, 1942, 1960, 1978, 1996, 2014, 2032, 2050, 2068, 2086, 2104, 2122, 2140, 2158, 2176, 2194, 2212, 2230, 2248, 2266, 2284, 2302, 2320, 2338, 2356, 2374, 2392, 2410, 2428, 2446, 2464, 2482, 2500, 2518, 2536, 2554, 2572, 2590, 2608, 2626, 2644, 2662, 2680, 2698, 2716, 2734, 2752, 2770, 2788, 2806, 2824, 2842, 2860, 2878, 2896, 2914, 2932, 2950, 2968, 2986, 3004, 3022, 3040, 3058, 3076, 3094, 3112, 3130, 3148, 3166, 3184, 3202, 3220, 3238, 3256, 3274, 3292, 3310, 3328, 3346, 3364, 3382, 3400, 3418, 3436, 3454, 3472, 3490, 3508, 3526, 3596, 3614, 3632, 3650, 3668, 3686, 3704, 3722, 3740, 3758, 3776, 3794, 3812, 3830, 3848, 3866, 3884, 3902, 3920, 3938, 3956, 3974, 3992, 4010, 4028, 4046, 4064, 4082, 4100, 4118, 4136, 4154, 4172, 4190, 4208, 4226, 4244, 4262, 4280, 4298, 4316, 4334, 4352, 4370, 4388, 4406, 4424, 4442, 4460, 4478, 4496, 4514, 4532, 4550, 4568, 4586, 4604, 4622, 4640, 4658, 4676, 4694, 4712, 4730, 4748, 4766, 4784, 4802, 4820, 4838, 4856, 4874, 4892, 4910, 4928, 4946, 4964, 4982, 5000, 5018, 5036, 5054, 5072, 5090, 5108, 5126, 5144, 5162, 5180, 5198, 5216, 5234, 5252, 5270, 5288, 5306, 5324, 5342, 5360, 5378, 5396, 5414, 5432, 5450, 5468, 5486, 5504, 5522, 5540, 5558, 5576, 5594, 5612, 5630, 5648, 5666, 5684, 5702, 5720, 5738, 5756, 5774, 5792, 5810, 5828, 5846, 5864, 5882, 5900, 5918, 5936, 5954, 5972, 5990, 6008, 6026, 6044, 6062, 6080, 6098, 6116, 6134, 6152, 6170, 6188, 6206, 6224, 6242, 6260, 6278, 6296, 6314, 6332, 6350, 6368, 6386, 6404, 6422, 6440, 6458, 6476, 14, 32, 50, 68, 86, 104, 122, 140, 158, 176, 194, 212, 230, 248, 266, 284, 302, 320, 338, 356, 374, 392, 410, 428, 446, 464, 482, 500, 518, 536, 554, 572, 590, 608, 626, 644, 662, 680, 698, 716, 734, 752, 770, 788, 806, 824, 842, 860, 878, 896, 914, 932, 950, 968, 986, 1004, 1022, 1040, 1058, 1076, 1094, 1112, 1130, 1148, 1166, 1184, 1202, 1220, 1238, 1256, 1274, 1292, 1310, 1328, 1346, 1364, 1382, 1400, 1418, 1436, 1454, 1472, 1490, 1508, 1526, 1544, 1562, 1580, 1598, 1616, 1634, 1652, 1670, 1688, 1706, 1724, 1742, 1760, 1778, 1796, 1814, 1832, 1850, 1868, 1886, 1904, 1922, 1940, 1958, 1976, 1994, 2012, 2030, 2048, 2066, 2084, 2102, 2120, 2138, 2156, 2174, 2192, 2210, 2228, 2246, 2264, 2282, 2300, 2318, 2336, 2354, 2372, 2390, 2408, 2426, 2444, 2462, 2480, 2498, 2516, 2534, 2552, 2570, 2588, 2606, 2624, 2642, 2660, 2678, 2696, 2714, 2732, 2750, 2768, 2786, 2804, 2822, 2840, 2858, 2876, 2894, 2912, 2930, 2948, 2966, 2984, 3002, 3020, 3038, 3056, 3074, 3092, 3110, 3128, 3146, 3164, 3182, 3200, 3218, 3236, 3254, 3272, 3290, 3308, 3326, 3344, 3362, 3380, 3398, 3416, 3434, 3452, 3470, 3488, 3506, 3524, 3542, 3560, 3578, 397, 415, 433, 451, 469, 487, 505, 523, 541, 559, 577, 595, 613, 631, 649, 667, 685, 703, 721, 739, 757, 775, 793, 811, 829, 847, 865, 883, 901, 919, 937, 955, 973, 991, 1009, 1027, 1045, 1063, 1081, 1099, 1117, 1135, 1153, 1171, 1189, 1207, 1225, 1243, 1261, 1279, 1297, 1315, 1333, 1351, 1369, 1387, 1405, 1423, 1441, 1459, 1477, 1495, 1513, 1531, 1549, 1567, 1585, 1603, 1621, 1639, 1657, 1675, 1693, 1711, 1729, 1747, 1765, 1783, 1801, 1819, 1837, 1855, 1873, 1891, 1909, 1927, 1945, 1963, 1981, 1999, 2017, 2035, 2053, 2071, 2089, 2107, 2125, 2143, 2161, 2179, 2197, 2215, 2233, 2251, 2269, 2287, 2305, 2323, 2341, 2359, 2377, 2395, 2413, 2431, 2449, 2467, 2485, 2503, 2521, 2539, 2557, 2575, 2593, 2611, 2629, 2647, 2665, 2683, 2701, 2719, 2737, 2755, 2773, 2791, 2809, 2827, 2845, 2863, 2881, 2899, 2917, 2935, 2953, 2971, 2989, 3007, 3025, 3043, 3061, 3079, 3097, 3115, 3133, 3151, 3169, 3187, 3205, 3223, 3241, 3259, 3277, 3295, 3313, 3331, 3349, 3367, 3385, 3403, 3421, 3439, 3457, 3475, 3493, 3511, 3529, 3547, 3565, 3583, 3601, 3619, 3637, 3655, 3673, 3691, 3709, 3727, 3745, 3763, 3781, 3799, 3817, 3835, 3853, 3871, 3889, 3907, 3925, 3943, 3961, 3979, 3997, 4015, 4033, 4051, 4069, 4087, 4105, 4123, 4141, 4159, 4177, 4195, 4213, 4231, 4249, 4267, 4285, 4303, 4321, 4339, 4357, 4375, 4393, 4411, 4429, 4447, 4465, 4483, 4501, 4519, 4537, 4555, 4573, 4591, 4609, 4627, 4645, 4663, 4681, 4699, 4717, 4735, 4753, 4771, 4789, 4807, 4825, 4843, 4861, 4879, 4897, 4915, 4933, 4951, 4969, 4987, 5005, 5023, 5041, 5059, 5077, 5095, 5113, 5131, 5149, 5167, 5185, 5203, 5221, 5239, 5257, 5275, 5293, 5311, 5329, 5347, 5365, 5383, 5401, 5419, 5437, 5455, 5473, 5491, 5509, 5527, 5545, 5563, 5581, 5599, 5617, 5635, 5653, 5671, 5689, 5707, 5725, 5743, 5761, 5779, 5797, 5815, 5833, 5851, 5869, 5887, 5905, 5923, 5941, 5959, 5977, 5995, 6013, 6031, 6049, 6067, 6085, 6103, 6121, 6139, 6157, 6175, 6193, 6211, 6229, 6247, 6265, 6283, 6301, 6319, 6337, 6355, 6373, 6391, 6409, 6427, 6445, 6463, 1, 19, 37, 55, 73, 91, 109, 127, 145, 163, 181, 199, 217, 235, 253, 271, 289, 307, 325, 343, 361, 379, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 772, 790, 808, 826, 844, 862, 880, 898, 916, 934, 952, 970, 988, 1006, 1024, 1042, 1060, 1078, 1096, 1114, 1132, 1150, 1168, 1186, 1204, 1222, 1240, 1258, 1276, 1294, 1312, 1330, 1348, 1366, 1384, 1402, 1420, 1438, 1456, 1474, 1492, 1510, 1528, 1546, 1564, 1582, 1600, 1618, 1636, 1654, 1672, 1690, 1708, 1726, 1744, 1762, 1780, 1798, 1816, 1834, 1852, 1870, 1888, 1906, 1924, 1942, 1960, 1978, 1996, 2014, 2032, 2050, 2068, 2086, 2104, 2122, 2140, 2158, 2176, 2194, 2212, 2230, 2248, 2266, 2284, 2302, 2320, 2338, 2356, 2374, 2392, 2410, 2428, 2446, 2464, 2482, 2500, 2518, 2536, 2554, 2572, 2590, 2608, 2626, 2644, 2662, 2680, 2698, 2716, 2734, 2752, 2770, 2788, 2806, 2824, 2842, 2860, 2878, 2896, 2914, 2932, 2950, 2968, 2986, 3004, 3022, 3040, 3058, 3076, 3094, 3112, 3130, 3148, 3166, 3184, 3202, 3220, 3238, 3256, 3274, 3292, 3310, 3328, 3346, 3364, 3382, 3400, 3418, 3436, 3454, 3472, 3490, 3508, 3526, 3544, 3562, 3580, 3598, 3616, 3634, 3652, 3670, 3688, 3706, 3724, 3742, 3760, 3778, 3796, 3814, 3832, 3850, 3868, 3886, 3904, 3922, 3940, 3958, 3976, 3994, 4012, 4030, 4048, 4066, 4084, 4102, 4120, 4138, 4156, 4174, 4192, 4210, 4228, 4246, 4264, 4282, 4300, 4318, 4336, 4354, 4372, 4390, 4408, 4426, 4444, 4462, 4480, 4498, 4516, 4534, 4552, 4570, 4588, 4606, 4624, 4642, 4660, 4678, 4696, 4714, 4732, 4750, 4768, 4786, 4804, 4822, 4840, 4858, 4876, 4894, 4912, 4930, 4948, 4966, 4984, 5002, 5020, 5038, 5056, 5074, 5092, 5110, 5128, 5146, 5164, 5182, 5200, 5218, 5236, 5254, 5272, 5290, 5308, 5326, 5344, 5362, 5380, 5398, 5416, 5434, 5452, 5470, 5488, 5506, 5524, 5542, 5560, 5578, 5596, 5614, 5632, 5650, 5668, 5686, 5704, 5722, 5740, 5758, 5776, 5794, 5812, 5830, 5848, 5866, 5884, 5902, 5920, 5938, 5956, 5974, 5992, 6010, 6028, 6046, 6064, 6082, 6100, 6118, 6136, 6154, 6172, 6190, 6208, 6226, 6244, 6262, 6280, 6298, 6316, 6334, 6352, 6370, 6388, 6406, 6424, 6442, 6460, 6478, 16, 34, 52, 70, 88, 106, 124, 142, 160, 178, 196, 214, 232, 250, 268, 286, 304, 322, 340, 358, 376, 394, 412, 430, 448, 466, 484, 502, 520, 538, 556, 574, 592, 610, 628, 646, 664, 682, 700, 718, 736, 754, 2616, 2634, 2652, 2670, 2688, 2706, 2724, 2742, 2760, 2778, 2796, 2814, 2832, 2850, 2868, 2886, 2904, 2922, 2940, 2958, 2976, 2994, 3012, 3030, 3048, 3066, 3084, 3102, 3120, 3138, 3156, 3174, 3192, 3210, 3228, 3246, 3264, 3282, 3300, 3318, 3336, 3354, 3372, 3390, 3408, 3426, 3444, 3462, 3480, 3498, 3516, 3534, 3552, 3570, 3588, 3606, 3624, 3642, 3660, 3678, 3696, 3714, 3732, 3750, 3768, 3786, 3804, 3822, 3840, 3858, 3876, 3894, 3912, 3930, 3948, 3966, 3984, 4002, 4020, 4038, 4056, 4074, 4092, 4110, 4128, 4146, 4164, 4182, 4200, 4218, 4236, 4254, 4272, 4290, 4308, 4326, 4344, 4362, 4380, 4398, 4416, 4434, 4452, 4470, 4488, 4506, 4524, 4542, 4560, 4578, 4596, 4614, 4632, 4650, 4668, 4686, 4704, 4722, 4740, 4758, 4776, 4794, 4812, 4830, 4848, 4866, 4884, 4902, 4920, 4938, 4956, 4974, 4992, 5010, 5028, 5046, 5064, 5082, 5100, 5118, 5136, 5154, 5172, 5190, 5208, 5226, 5244, 5262, 5280, 5298, 5316, 5334, 5352, 5370, 5388, 5406, 5424, 5442, 5460, 5478, 5496, 5514, 5532, 5550, 5568, 5586, 5604, 5622, 5640, 5658, 5676, 5694, 5712, 5730, 5748, 5766, 5784, 5802, 5820, 5838, 5856, 5874, 5892, 5910, 5928, 5946, 5964, 5982, 6000, 6018, 6036, 6054, 6072, 6090, 6108, 6126, 6144, 6162, 6180, 6198, 6216, 6234, 6252, 6270, 6288, 6306, 6324, 6342, 6360, 6378, 6396, 6414, 6432, 6450, 6468, 6, 24, 42, 60, 78, 96, 114, 132, 150, 168, 186, 204, 222, 240, 258, 276, 294, 312, 330, 348, 366, 384, 402, 420, 438, 456, 474, 492, 510, 528, 546, 564, 582, 600, 618, 636, 654, 672, 690, 708, 726, 744, 762, 780, 798, 816, 834, 852, 870, 888, 906, 924, 942, 960, 978, 996, 1014, 1032, 1050, 1068, 1086, 1104, 1122, 1140, 1158, 1176, 1194, 1212, 1230, 1248, 1266, 1284, 1302, 1320, 1338, 1356, 1374, 1392, 1410, 1428, 1446, 1464, 1482, 1500, 1518, 1536, 1554, 1572, 1590, 1608, 1626, 1644, 1662, 1680, 1698, 1716, 1734, 1752, 1770, 1788, 1806, 1824, 1842, 1860, 1878, 1896, 1914, 1932, 1950, 1968, 1986, 2004, 2022, 2040, 2058, 2076, 2094, 2112, 2130, 2148, 2166, 2184, 2202, 2220, 2238, 2256, 2274, 2292, 2310, 2328, 2346, 2364, 2382, 2400, 2418, 2436, 2454, 2472, 2490, 2508, 2526, 2544, 2562, 2580, 2598, 4017, 4035, 4053, 4071, 4089, 4107, 4125, 4143, 4161, 4179, 4197, 4215, 4233, 4251, 4269, 4287, 4305, 4323, 4341, 4359, 4377, 4395, 4413, 4431, 4449, 4467, 4485, 4503, 4521, 4539, 4557, 4575, 4593, 4611, 4629, 4647, 4665, 4683, 4701, 4719, 4737, 4755, 4773, 4791, 4809, 4827, 4845, 4863, 4881, 4899, 4917, 4935, 4953, 4971, 4989, 5007, 5025, 5043, 5061, 5079, 5097, 5115, 5133, 5151, 5169, 5187, 5205, 5223, 5241, 5259, 5277, 5295, 5313, 5331, 5349, 5367, 5385, 5403, 5421, 5439, 5457, 5475, 5493, 5511, 5529, 5547, 5565, 5583, 5601, 5619, 5637, 5655, 5673, 5691, 5709, 5727, 5745, 5763, 5781, 5799, 5817, 5835, 5853, 5871, 5889, 5907, 5925, 5943, 5961, 5979, 5997, 6015, 6033, 6051, 6069, 6087, 6105, 6123, 6141, 6159, 6177, 6195, 6213, 6231, 6249, 6267, 6285, 6303, 6321, 6339, 6357, 6375, 6393, 6411, 6429, 6447, 6465, 3, 21, 39, 57, 75, 93, 111, 129, 147, 165, 183, 201, 219, 237, 255, 273, 291, 309, 327, 345, 363, 381, 399, 417, 435, 453, 471, 489, 507, 525, 543, 561, 579, 597, 615, 633, 651, 669, 687, 705, 723, 741, 759, 777, 795, 813, 831, 849, 867, 885, 903, 921, 939, 957, 975, 993, 1011, 1029, 1047, 1065, 1083, 1101, 1119, 1137, 1155, 1173, 1191, 1209, 1227, 1245, 1263, 1281, 1299, 1317, 1335, 1353, 1371, 1389, 1407, 1425, 1443, 1461, 1479, 1497, 1515, 1533, 1551, 1569, 1587, 1605, 1623, 1641, 1659, 1677, 1695, 1713, 1731, 1749, 1767, 1785, 1803, 1821, 1839, 1857, 1875, 1893, 1911, 1929, 1947, 1965, 1983, 2001, 2019, 2037, 2055, 2073, 2091, 2109, 2127, 2145, 2163, 2181, 2199, 2217, 2235, 2253, 2271, 2289, 2307, 2325, 2343, 2361, 2379, 2397, 2415, 2433, 2451, 2469, 2487, 2505, 2523, 2541, 2559, 2577, 2595, 2613, 2631, 2649, 2667, 2685, 2703, 2721, 2739, 2757, 2775, 2793, 2811, 2829, 2847, 2865, 2883, 2901, 2919, 2937, 2955, 2973, 2991, 3009, 3027, 3045, 3063, 3081, 3099, 3117, 3135, 3153, 3171, 3189, 3207, 3225, 3243, 3261, 3279, 3297, 3315, 3333, 3351, 3369, 3387, 3405, 3423, 3441, 3459, 3477, 3495, 3513, 3531, 3549, 3567, 3585, 3603, 3621, 3639, 3657, 3675, 3693, 3711, 3729, 3747, 3765, 3783, 3801, 3819, 3837, 3855, 3873, 3891, 3909, 3927, 3945, 3963, 3981, 3999, 6335, 6353, 6371, 6389, 6407, 6425, 6443, 6461, 6479, 17, 35, 53, 71, 89, 107, 125, 143, 161, 179, 197, 215, 233, 251, 269, 287, 305, 323, 341, 359, 377, 395, 413, 431, 449, 467, 485, 503, 521, 539, 557, 575, 593, 611, 629, 647, 665, 683, 701, 719, 737, 755, 773, 791, 809, 827, 845, 863, 881, 899, 917, 935, 953, 971, 989, 1007, 1025, 1043, 1061, 1079, 1097, 1115, 1133, 1151, 1169, 1187, 1205, 1223, 1241, 1259, 1277, 1295, 1313, 1331, 1349, 1367, 1385, 1403, 1421, 1439, 1457, 1475, 1493, 1511, 1529, 1547, 1565, 1583, 1601, 1619, 1637, 1655, 1673, 1691, 1709, 1727, 1745, 1763, 1781, 1799, 1817, 1835, 1853, 1871, 1889, 1907, 1925, 1943, 1961, 1979, 1997, 2015, 2033, 2051, 2069, 2087, 2105, 2123, 2141, 2159, 2177, 2195, 2213, 2231, 2249, 2267, 2285, 2303, 2321, 2339, 2357, 2375, 2393, 2411, 2429, 2447, 2465, 2483, 2501, 2519, 2537, 2555, 2573, 2591, 2609, 2627, 2645, 2663, 2681, 2699, 2717, 2735, 2753, 2771, 2789, 2807, 2825, 2843, 2861, 2879, 2897, 2915, 2933, 2951, 2969, 2987, 3005, 3023, 3041, 3059, 3077, 3095, 3113, 3131, 3149, 3167, 3185, 3203, 3221, 3239, 3257, 3275, 3293, 3311, 3329, 3347, 3365, 3383, 3401, 3419, 3437, 3455, 3473, 3491, 3509, 3527, 3545, 3563, 3581, 3599, 3617, 3635, 3653, 3671, 3689, 3707, 3725, 3743, 3761, 3779, 3797, 3815, 3833, 3851, 3869, 3887, 3905, 3923, 3941, 3959, 3977, 3995, 4013, 4031, 4049, 4067, 4085, 4103, 4121, 4139, 4157, 4175, 4193, 4211, 4229, 4247, 4265, 4283, 4301, 4319, 4337, 4355, 4373, 4391, 4409, 4427, 4445, 4463, 4481, 4499, 4517, 4535, 4553, 4571, 4589, 4607, 4625, 4643, 4661, 4679, 4697, 4715, 4733, 4751, 4769, 4787, 4805, 4823, 4841, 4859, 4877, 4895, 4913, 4931, 4949, 4967, 4985, 5003, 5021, 5039, 5057, 5075, 5093, 5111, 5129, 5147, 5165, 5183, 5201, 5219, 5237, 5255, 5273, 5291, 5309, 5327, 5345, 5363, 5381, 5399, 5417, 5435, 5453, 5471, 5489, 5507, 5525, 5543, 5561, 5579, 5597, 5615, 5633, 5651, 5669, 5687, 5705, 5723, 5741, 5759, 5777, 5795, 5813, 5831, 5849, 5867, 5885, 5903, 5921, 5939, 5957, 5975, 5993, 6011, 6029, 6047, 6065, 6083, 6101, 6119, 6137, 6155, 6173, 6191, 6209, 6227, 6245, 6263, 6281, 6299, 6317, 6196, 6214, 6232, 6250, 6268, 6286, 6304, 6322, 6340, 6358, 6376, 6394, 6412, 6430, 6448, 6466, 4, 22, 40, 58, 76, 94, 112, 130, 148, 166, 184, 202, 220, 238, 256, 274, 292, 310, 328, 346, 364, 382, 400, 418, 436, 454, 472, 490, 508, 526, 544, 562, 580, 598, 616, 634, 652, 670, 688, 706, 724, 742, 760, 778, 796, 814, 832, 850, 868, 886, 904, 922, 940, 958, 976, 994, 1012, 1030, 1048, 1066, 1084, 1102, 1120, 1138, 1156, 1174, 1192, 1210, 1228, 1246, 1264, 1282, 1300, 1318, 1336, 1354, 1372, 1390, 1408, 1426, 1444, 1462, 1480, 1498, 1516, 1534, 1552, 1570, 1588, 1606, 1624, 1642, 1660, 1678, 1696, 1714, 1732, 1750, 1768, 1786, 1804, 1822, 1840, 1858, 1876, 1894, 1912, 1930, 1948, 1966, 1984, 2002, 2020, 2038, 2056, 2074, 2092, 2110, 2128, 2146, 2164, 2182, 2200, 2218, 2236, 2254, 2272, 2290, 2308, 2326, 2344, 2362, 2380, 2398, 2416, 2434, 2452, 2470, 2488, 2506, 2524, 2542, 2560, 2578, 2596, 2614, 2632, 2650, 2668, 2686, 2704, 2722, 2740, 2758, 2776, 2794, 2812, 2830, 2848, 2866, 2884, 2902, 2920, 2938, 2956, 2974, 2992, 3010, 3028, 3046, 3064, 3082, 3100, 3118, 3136, 3154, 3172, 3190, 3208, 3226, 3244, 3262, 3280, 3298, 3316, 3334, 3352, 3370, 3388, 3406, 3424, 3442, 3460, 3478, 3496, 3514, 3532, 3550, 3568, 3586, 3604, 3622, 3640, 3658, 3676, 3694, 3712, 3730, 3748, 3766, 3784, 3802, 3820, 3838, 3856, 3874, 3892, 3910, 3928, 3946, 3964, 3982, 4000, 4018, 4036, 4054, 4072, 4090, 4108, 4126, 4144, 4162, 4180, 4198, 4216, 4234, 4252, 4270, 4288, 4306, 4324, 4342, 4360, 4378, 4396, 4414, 4432, 4450, 4468, 4486, 4504, 4522, 4540, 4558, 4576, 4594, 4612, 4630, 4648, 4666, 4684, 4702, 4720, 4738, 4756, 4774, 4792, 4810, 4828, 4846, 4864, 4882, 4900, 4918, 4936, 4954, 4972, 4990, 5008, 5026, 5044, 5062, 5080, 5098, 5116, 5134, 5152, 5170, 5188, 5206, 5224, 5242, 5260, 5278, 5296, 5314, 5332, 5350, 5368, 5386, 5404, 5422, 5440, 5458, 5476, 5494, 5512, 5530, 5548, 5566, 5584, 5602, 5620, 5638, 5656, 5674, 5692, 5710, 5728, 5746, 5764, 5782, 5800, 5818, 5836, 5854, 5872, 5890, 5908, 5926, 5944, 5962, 5980, 5998, 6016, 6034, 6052, 6070, 6088, 6106, 6124, 6142, 6160, 6178, 5810, 5828, 5846, 5864, 5882, 5900, 5918, 5936, 5954, 5972, 5990, 6008, 6026, 6044, 6062, 6080, 6098, 6116, 6134, 6152, 6170, 6188, 6206, 6224, 6242, 6260, 6278, 6296, 6314, 6332, 6350, 6368, 6386, 6404, 6422, 6440, 6458, 6476, 14, 32, 50, 68, 86, 104, 122, 140, 158, 176, 194, 212, 230, 248, 266, 284, 302, 320, 338, 356, 374, 392, 410, 428, 446, 464, 482, 500, 518, 536, 554, 572, 590, 608, 626, 644, 662, 680, 698, 716, 734, 752, 770, 788, 806, 824, 842, 860, 878, 896, 914, 932, 950, 968, 986, 1004, 1022, 1040, 1058, 1076, 1094, 1112, 1130, 1148, 1166, 1184, 1202, 1220, 1238, 1256, 1274, 1292, 1310, 1328, 1346, 1364, 1382, 1400, 1418, 1436, 1454, 1472, 1490, 1508, 1526, 1544, 1562, 1580, 1598, 1616, 1634, 1652, 1670, 1688, 1706, 1724, 1742, 1760, 1778, 1796, 1814, 1832, 1850, 1868, 1886, 1904, 1922, 1940, 1958, 1976, 1994, 2012, 2030, 2048, 2066, 2084, 2102, 2120, 2138, 2156, 2174, 2192, 2210, 2228, 2246, 2264, 2282, 2300, 2318, 2336, 2354, 2372, 2390, 2408, 2426, 2444, 2462, 2480, 2498, 2516, 2534, 2552, 2570, 2588, 2606, 2624, 2642, 2660, 2678, 2696, 2714, 2732, 2750, 2768, 2786, 2804, 2822, 2840, 2858, 2876, 2894, 2912, 2930, 2948, 2966, 2984, 3002, 3020, 3038, 3056, 3074, 3092, 3110, 3128, 3146, 3164, 3182, 3200, 3218, 3236, 3254, 3272, 3290, 3308, 3326, 3344, 3362, 3380, 3398, 3416, 3434, 3452, 3470, 3488, 3506, 3524, 3542, 3560, 3578, 3596, 3614, 3632, 3650, 3668, 3686, 3704, 3722, 3740, 3758, 3776, 3794, 3812, 3830, 3848, 3866, 3884, 3902, 3920, 3938, 3956, 3974, 3992, 4010, 4028, 4046, 4064, 4082, 4100, 4118, 4136, 4154, 4172, 4190, 4208, 4226, 4244, 4262, 4280, 4298, 4316, 4334, 4352, 4370, 4388, 4406, 4424, 4442, 4460, 4478, 4496, 4514, 4532, 4550, 4568, 4586, 4604, 4622, 4640, 4658, 4676, 4694, 4712, 4730, 4748, 4766, 4784, 4802, 4820, 4838, 4856, 4874, 4892, 4910, 4928, 4946, 4964, 4982, 5000, 5018, 5036, 5054, 5072, 5090, 5108, 5126, 5144, 5162, 5180, 5198, 5216, 5234, 5252, 5270, 5288, 5306, 5324, 5342, 5360, 5378, 5396, 5414, 5432, 5450, 5468, 5486, 5504, 5522, 5540, 5558, 5576, 5594, 5612, 5630, 5648, 5666, 5684, 5702, 5720, 5738, 5756, 5774, 5792, 1206, 1224, 1242, 1260, 1278, 1296, 1314, 1332, 1350, 1368, 1386, 1404, 1422, 1440, 1458, 1476, 1494, 1512, 1530, 1548, 1566, 1584, 1602, 1620, 1638, 1656, 1674, 1692, 1710, 1728, 1746, 1764, 1782, 1800, 1818, 1836, 1854, 1872, 1890, 1908, 1926, 1944, 1962, 1980, 1998, 2016, 2034, 2052, 2070, 2088, 2106, 2124, 2142, 2160, 2178, 2196, 2214, 2232, 2250, 2268, 2286, 2304, 2322, 2340, 2358, 2376, 2394, 2412, 2430, 2448, 2466, 2484, 2502, 2520, 2538, 2556, 2574, 2592, 2610, 2628, 2646, 2664, 2682, 2700, 2718, 2736, 2754, 2772, 2790, 2808, 2826, 2844, 2862, 2880, 2898, 2916, 2934, 2952, 2970, 2988, 3006, 3024, 3042, 3060, 3078, 3096, 3114, 3132, 3150, 3168, 3186, 3204, 3222, 3240, 3258, 3276, 3294, 3312, 3330, 3348, 3366, 3384, 3402, 3420, 3438, 3456, 3474, 3492, 3510, 3528, 3546, 3564, 3582, 3600, 3618, 3636, 3654, 3672, 3690, 3708, 3726, 3744, 3762, 3780, 3798, 3816, 3834, 3852, 3870, 3888, 3906, 3924, 3942, 3960, 3978, 3996, 4014, 4032, 4050, 4068, 4086, 4104, 4122, 4140, 4158, 4176, 4194, 4212, 4230, 4248, 4266, 4284, 4302, 4320, 4338, 4356, 4374, 4392, 4410, 4428, 4446, 4464, 4482, 4500, 4518, 4536, 4554, 4572, 4590, 4608, 4626, 4644, 4662, 4680, 4698, 4716, 4734, 4752, 4770, 4788, 4806, 4824, 4842, 4860, 4878, 4896, 4914, 4932, 4950, 4968, 4986, 5004, 5022, 5040, 5058, 5076, 5094, 5112, 5130, 5148, 5166, 5184, 5202, 5220, 5238, 5256, 5274, 5292, 5310, 5328, 5346, 5364, 5382, 5400, 5418, 5436, 5454, 5472, 5490, 5508, 5526, 5544, 5562, 5580, 5598, 5616, 5634, 5652, 5670, 5688, 5706, 5724, 5742, 5760, 5778, 5796, 5814, 5832, 5850, 5868, 5886, 5904, 5922, 5940, 5958, 5976, 5994, 6012, 6030, 6048, 6066, 6084, 6102, 6120, 6138, 6156, 6174, 6192, 6210, 6228, 6246, 6264, 6282, 6300, 6318, 6336, 6354, 6372, 6390, 6408, 6426, 6444, 6462, 6480, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198, 216, 234, 252, 270, 288, 306, 324, 342, 360, 378, 396, 414, 432, 450, 468, 486, 504, 522, 540, 558, 576, 594, 612, 630, 648, 666, 684, 702, 720, 738, 756, 774, 792, 810, 828, 846, 864, 882, 900, 918, 936, 954, 972, 990, 1008, 1026, 1044, 1062, 1080, 1098, 1116, 1134, 1152, 1170, 1188, 6023, 6041, 6059, 6077, 6095, 6113, 6131, 6149, 6167, 6185, 6203, 6221, 6239, 6257, 6275, 6293, 6311, 6329, 6347, 6365, 6383, 6401, 6419, 6437, 6455, 6473, 11, 29, 47, 65, 83, 101, 119, 137, 155, 173, 191, 209, 227, 245, 263, 281, 299, 317, 335, 353, 371, 389, 407, 425, 443, 461, 479, 497, 515, 533, 551, 569, 587, 605, 623, 641, 659, 677, 695, 713, 731, 749, 767, 785, 803, 821, 839, 857, 875, 893, 911, 929, 947, 965, 983, 1001, 1019, 1037, 1055, 1073, 1091, 1109, 1127, 1145, 1163, 1181, 1199, 1217, 1235, 1253, 1271, 1289, 1307, 1325, 1343, 1361, 1379, 1397, 1415, 1433, 1451, 1469, 1487, 1505, 1523, 1541, 1559, 1577, 1595, 1613, 1631, 1649, 1667, 1685, 1703, 1721, 1739, 1757, 1775, 1793, 1811, 1829, 1847, 1865, 1883, 1901, 1919, 1937, 1955, 1973, 1991, 2009, 2027, 2045, 2063, 2081, 2099, 2117, 2135, 2153, 2171, 2189, 2207, 2225, 2243, 2261, 2279, 2297, 2315, 2333, 2351, 2369, 2387, 2405, 2423, 2441, 2459, 2477, 2495, 2513, 2531, 2549, 2567, 2585, 2603, 2621, 2639, 2657, 2675, 2693, 2711, 2729, 2747, 2765, 2783, 2801, 2819, 2837, 2855, 2873, 2891, 2909, 2927, 2945, 2963, 2981, 2999, 3017, 3035, 3053, 3071, 3089, 3107, 3125, 3143, 3161, 3179, 3197, 3215, 3233, 3251, 3269, 3287, 3305, 3323, 3341, 3359, 3377, 3395, 3413, 3431, 3449, 3467, 3485, 3503, 3521, 3539, 3557, 3575, 3593, 3611, 3629, 3647, 3665, 3683, 3701, 3719, 3737, 3755, 3773, 3791, 3809, 3827, 3845, 3863, 3881, 3899, 3917, 3935, 3953, 3971, 3989, 4007, 4025, 4043, 4061, 4079, 4097, 4115, 4133, 4151, 4169, 4187, 4205, 4223, 4241, 4259, 4277, 4295, 4313, 4331, 4349, 4367, 4385, 4403, 4421, 4439, 4457, 4475, 4493, 4511, 4529, 4547, 4565, 4583, 4601, 4619, 4637, 4655, 4673, 4691, 4709, 4727, 4745, 4763, 4781, 4799, 4817, 4835, 4853, 4871, 4889, 4907, 4925, 4943, 4961, 4979, 4997, 5015, 5033, 5051, 5069, 5087, 5105, 5123, 5141, 5159, 5177, 5195, 5213, 5231, 5249, 5267, 5285, 5303, 5321, 5339, 5357, 5375, 5393, 5411, 5429, 5447, 5465, 5483, 5501, 5519, 5537, 5555, 5573, 5591, 5609, 5627, 5645, 5663, 5681, 5699, 5717, 5735, 5753, 5771, 5789, 5807, 5825, 5843, 5861, 5879, 5897, 5915, 5933, 5951, 5969, 5987, 6005, 4739, 4757, 4775, 4793, 4811, 4829, 4847, 4865, 4883, 4901, 4919, 4937, 4955, 4973, 4991, 5009, 5027, 5045, 5063, 5081, 5099, 5117, 5135, 5153, 5171, 5189, 5207, 5225, 5243, 5261, 5279, 5297, 5315, 5333, 5351, 5369, 5387, 5405, 5423, 5441, 5459, 5477, 5495, 5513, 5531, 5549, 5567, 5585, 5603, 5621, 5639, 5657, 5675, 5693, 5711, 5729, 5747, 5765, 5783, 5801, 5819, 5837, 5855, 5873, 5891, 5909, 5927, 5945, 5963, 5981, 5999, 6017, 6035, 6053, 6071, 6089, 6107, 6125, 6143, 6161, 6179, 6197, 6215, 6233, 6251, 6269, 6287, 6305, 6323, 6341, 6359, 6377, 6395, 6413, 6431, 6449, 6467, 5, 23, 41, 59, 77, 95, 113, 131, 149, 167, 185, 203, 221, 239, 257, 275, 293, 311, 329, 347, 365, 383, 401, 419, 437, 455, 473, 491, 509, 527, 545, 563, 581, 599, 617, 635, 653, 671, 689, 707, 725, 743, 761, 779, 797, 815, 833, 851, 869, 887, 905, 923, 941, 959, 977, 995, 1013, 1031, 1049, 1067, 1085, 1103, 1121, 1139, 1157, 1175, 1193, 1211, 1229, 1247, 1265, 1283, 1301, 1319, 1337, 1355, 1373, 1391, 1409, 1427, 1445, 1463, 1481, 1499, 1517, 1535, 1553, 1571, 1589, 1607, 1625, 1643, 1661, 1679, 1697, 1715, 1733, 1751, 1769, 1787, 1805, 1823, 1841, 1859, 1877, 1895, 1913, 1931, 1949, 1967, 1985, 2003, 2021, 2039, 2057, 2075, 2093, 2111, 2129, 2147, 2165, 2183, 2201, 2219, 2237, 2255, 2273, 2291, 2309, 2327, 2345, 2363, 2381, 2399, 2417, 2435, 2453, 2471, 2489, 2507, 2525, 2543, 2561, 2579, 2597, 2615, 2633, 2651, 2669, 2687, 2705, 2723, 2741, 2759, 2777, 2795, 2813, 2831, 2849, 2867, 2885, 2903, 2921, 2939, 2957, 2975, 2993, 3011, 3029, 3047, 3065, 3083, 3101, 3119, 3137, 3155, 3173, 3191, 3209, 3227, 3245, 3263, 3281, 3299, 3317, 3335, 3353, 3371, 3389, 3407, 3425, 3443, 3461, 3479, 3497, 3515, 3533, 3551, 3569, 3587, 3605, 3623, 3641, 3659, 3677, 3695, 3713, 3731, 3749, 3767, 3785, 3803, 3821, 3839, 3857, 3875, 3893, 3911, 3929, 3947, 3965, 3983, 4001, 4019, 4037, 4055, 4073, 4091, 4109, 4127, 4145, 4163, 4181, 4199, 4217, 4235, 4253, 4271, 4289, 4307, 4325, 4343, 4361, 4379, 4397, 4415, 4433, 4451, 4469, 4487, 4505, 4523, 4541, 4559, 4577, 4595, 4613, 4631, 4649, 4667, 4685, 4703, 4721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; codec2-1.2.0/src/H_16200_9720.h000066400000000000000000000007541445607075400152330ustar00rootroot00000000000000/* FILE....: H_16200_9720.h Static arrays for LDPC codec H_16200_9720, generated by ldpc_gen_c_h_file.m. */ #define H_16200_9720_NUMBERPARITYBITS 6480 #define H_16200_9720_MAX_ROW_WEIGHT 9 #define H_16200_9720_CODELENGTH 16200 #define H_16200_9720_NUMBERROWSHCOLS 9720 #define H_16200_9720_MAX_COL_WEIGHT 12 #define H_16200_9720_DEC_TYPE 0 #define H_16200_9720_MAX_ITER 100 #include extern const uint16_t H_16200_9720_H_rows[]; extern const uint16_t H_16200_9720_H_cols[]; codec2-1.2.0/src/H_2064_516_sparse.c000066400000000000000000004211341445607075400164370ustar00rootroot00000000000000/* FILE....: ../src/H_2064_516_sparse.c Static arrays for CML LDPC codec, generated by test_ldpc_fsk.m:simple_ut(). */ #define NUMBERPARITYBITS 516 #define MAX_ROW_WEIGHT 12 #define CODELENGTH 2580 #define NUMBERROWSHCOLS 2064 #define MAX_COL_WEIGHT 3 #define DEC_TYPE 0 #define MAX_ITER 10 #include "H_2064_516_sparse.h" #include const uint16_t H_2064_516_sparse_H_rows[] = { 870, 276, 110, 54, 226, 85, 59, 153, 31, 60, 46, 75, 139, 239, 56, 13, 30, 45, 63, 34, 54, 21, 77, 204, 441, 11, 297, 126, 148, 104, 269, 57, 369, 213, 117, 479, 53, 124, 405, 97, 42, 132, 67, 103, 389, 156, 237, 105, 418, 11, 60, 12, 195, 32, 11, 21, 10, 191, 176, 237, 140, 376, 115, 9, 149, 304, 129, 308, 234, 129, 453, 215, 176, 213, 151, 169, 41, 106, 421, 103, 83, 62, 124, 3, 574, 39, 31, 472, 69, 8, 40, 352, 62, 275, 74, 121, 125, 35, 83, 52, 21, 422, 229, 233, 62, 125, 181, 175, 28, 43, 113, 340, 71, 4, 40, 249, 134, 168, 97, 15, 26, 135, 104, 80, 206, 108, 307, 494, 358, 82, 159, 137, 19, 210, 6, 19, 65, 285, 45, 154, 276, 14, 137, 79, 241, 235, 116, 129, 84, 3, 122, 370, 132, 451, 77, 89, 262, 79, 170, 469, 24, 163, 128, 18, 120, 244, 8, 153, 151, 441, 95, 327, 284, 96, 84, 35, 61, 286, 20, 22, 68, 131, 106, 30, 280, 343, 99, 124, 262, 208, 277, 44, 349, 41, 10, 761, 39, 445, 165, 81, 393, 194, 18, 250, 589, 70, 307, 1, 365, 47, 4, 9, 283, 133, 90, 601, 117, 228, 212, 58, 420, 230, 142, 25, 57, 518, 88, 180, 24, 122, 379, 143, 33, 30, 140, 68, 150, 320, 55, 33, 132, 2, 22, 16, 272, 44, 264, 49, 174, 234, 86, 39, 10, 278, 177, 178, 20, 126, 18, 90, 6, 184, 158, 111, 246, 229, 221, 48, 267, 6, 172, 49, 291, 185, 67, 50, 157, 66, 32, 525, 257, 196, 260, 92, 72, 163, 144, 329, 134, 156, 47, 82, 49, 391, 26, 1, 88, 52, 56, 8, 111, 138, 219, 57, 447, 182, 263, 38, 98, 75, 36, 83, 245, 5, 419, 63, 12, 287, 603, 58, 507, 37, 2, 214, 539, 55, 53, 81, 186, 73, 85, 97, 91, 332, 123, 66, 188, 591, 158, 324, 88, 53, 214, 84, 389, 104, 271, 211, 7, 393, 281, 242, 119, 848, 705, 428, 50, 28, 52, 15, 5, 2, 230, 38, 76, 295, 217, 1, 56, 170, 145, 5, 72, 460, 203, 145, 211, 121, 68, 538, 44, 133, 87, 494, 325, 161, 781, 370, 51, 115, 262, 106, 614, 29, 220, 189, 224, 165, 17, 72, 46, 17, 64, 19, 447, 13, 9, 270, 4, 91, 471, 35, 23, 407, 34, 38, 82, 321, 112, 195, 651, 7, 43, 431, 249, 171, 196, 311, 15, 66, 16, 633, 37, 94, 102, 23, 3, 214, 252, 256, 173, 316, 125, 96, 341, 71, 73, 338, 256, 165, 140, 108, 471, 434, 137, 642, 172, 51, 113, 67, 172, 93, 23, 318, 514, 50, 118, 245, 169, 14, 64, 40, 859, 95, 308, 65, 93, 42, 339, 46, 7, 96, 142, 36, 131, 60, 13, 12, 25, 31, 183, 94, 43, 241, 162, 26, 232, 120, 128, 118, 89, 164, 51, 29, 127, 177, 180, 95, 332, 284, 32, 802, 452, 25, 382, 187, 892, 432, 162, 126, 587, 342, 205, 170, 255, 73, 605, 579, 398, 305, 58, 110, 178, 244, 306, 178, 166, 28, 368, 224, 582, 135, 420, 618, 264, 234, 346, 223, 439, 399, 150, 655, 242, 248, 750, 199, 242, 277, 112, 163, 545, 359, 487, 322, 570, 64, 402, 412, 252, 116, 147, 109, 27, 197, 204, 251, 282, 455, 118, 390, 225, 382, 215, 373, 554, 371, 568, 289, 225, 405, 160, 414, 290, 109, 524, 406, 344, 188, 385, 33, 791, 261, 171, 475, 100, 183, 156, 564, 78, 395, 144, 497, 334, 45, 167, 79, 27, 520, 239, 449, 138, 347, 667, 572, 61, 278, 136, 375, 231, 320, 167, 304, 389, 185, 171, 109, 468, 243, 206, 210, 305, 160, 682, 514, 433, 152, 375, 1064, 48, 522, 139, 98, 191, 557, 127, 189, 372, 54, 515, 406, 370, 950, 549, 352, 319, 27, 489, 440, 636, 941, 153, 102, 268, 120, 190, 719, 451, 175, 539, 477, 279, 474, 17, 232, 221, 476, 174, 415, 545, 357, 368, 149, 94, 409, 218, 76, 87, 136, 114, 245, 596, 408, 335, 246, 511, 560, 438, 298, 351, 91, 22, 813, 108, 546, 248, 218, 629, 212, 223, 569, 611, 93, 399, 185, 427, 260, 20, 111, 354, 187, 150, 702, 316, 666, 541, 227, 558, 486, 207, 450, 224, 568, 222, 341, 81, 222, 386, 441, 484, 159, 289, 142, 372, 534, 157, 78, 337, 522, 70, 293, 318, 161, 325, 74, 194, 797, 130, 128, 70, 386, 657, 611, 105, 456, 230, 100, 61, 274, 358, 135, 249, 236, 247, 264, 279, 123, 345, 59, 397, 645, 448, 80, 192, 149, 190, 564, 292, 508, 359, 202, 152, 459, 200, 446, 293, 512, 103, 154, 229, 492, 145, 256, 828, 55, 296, 133, 147, 314, 220, 190, 481, 208, 290, 198, 146, 100, 202, 259, 295, 16, 505, 251, 86, 375, 618, 266, 891, 166, 159, 269, 850, 127, 397, 759, 494, 141, 567, 339, 119, 336, 162, 98, 265, 770, 423, 380, 346, 116, 402, 101, 628, 623, 286, 309, 107, 453, 406, 496, 200, 865, 720, 429, 187, 107, 609, 439, 90, 48, 330, 59, 87, 632, 323, 219, 101, 865, 203, 14, 74, 466, 462, 160, 448, 168, 474, 980, 396, 148, 244, 904, 438, 198, 982, 601, 199, 119, 300, 240, 702, 241, 258, 192, 291, 227, 34, 698, 78, 107, 123, 89, 704, 114, 274, 461, 151, 115, 576, 323, 201, 468, 271, 231, 92, 592, 220, 909, 829, 243, 480, 466, 345, 763, 404, 356, 86, 110, 210, 688, 353, 271, 740, 226, 352, 247, 288, 758, 338, 426, 235, 405, 625, 155, 146, 475, 491, 189, 177, 216, 962, 503, 216, 726, 381, 219, 183, 102, 332, 113, 155, 440, 922, 450, 379, 294, 301, 36, 80, 75, 875, 462, 547, 69, 330, 186, 527, 92, 138, 157, 169, 69, 143, 401, 24, 283, 41, 37, 472, 309, 117, 747, 342, 251, 300, 182, 216, 202, 266, 192, 217, 302, 660, 360, 663, 130, 355, 367, 47, 1103, 519, 811, 586, 488, 983, 652, 303, 201, 759, 860, 416, 585, 268, 428, 928, 819, 821, 379, 340, 493, 260, 752, 599, 314, 182, 444, 612, 369, 692, 311, 523, 622, 335, 259, 499, 225, 526, 409, 188, 709, 356, 606, 777, 222, 541, 327, 201, 176, 551, 544, 1008, 372, 628, 181, 523, 549, 476, 464, 240, 593, 181, 254, 223, 305, 285, 595, 217, 887, 550, 552, 278, 381, 621, 517, 953, 538, 265, 581, 313, 540, 366, 626, 647, 511, 467, 508, 890, 63, 976, 275, 312, 885, 598, 254, 180, 687, 196, 398, 146, 675, 380, 101, 443, 122, 85, 531, 347, 463, 167, 536, 724, 710, 288, 351, 232, 387, 424, 650, 363, 544, 540, 248, 279, 121, 479, 267, 218, 445, 485, 240, 737, 692, 1017, 331, 716, 1130, 207, 602, 274, 750, 261, 572, 131, 435, 672, 253, 729, 542, 739, 1062, 731, 619, 328, 65, 769, 502, 898, 966, 158, 211, 289, 193, 314, 784, 533, 396, 567, 497, 280, 696, 348, 290, 383, 636, 526, 470, 622, 541, 411, 286, 378, 561, 374, 194, 349, 166, 143, 390, 697, 533, 570, 304, 615, 709, 476, 679, 454, 287, 114, 904, 535, 786, 270, 308, 828, 302, 506, 732, 626, 533, 584, 186, 456, 495, 350, 317, 672, 343, 315, 919, 367, 820, 548, 296, 614, 635, 209, 543, 350, 733, 239, 376, 287, 344, 470, 563, 607, 319, 323, 473, 428, 677, 212, 263, 386, 567, 435, 328, 616, 255, 729, 147, 320, 855, 267, 426, 261, 458, 977, 670, 173, 478, 366, 112, 71, 419, 968, 139, 606, 292, 275, 463, 344, 671, 810, 77, 465, 755, 579, 179, 353, 357, 442, 599, 354, 805, 453, 407, 193, 510, 285, 513, 583, 645, 325, 173, 621, 573, 423, 479, 912, 130, 300, 227, 184, 391, 293, 204, 673, 282, 371, 324, 313, 228, 334, 343, 655, 42, 532, 559, 658, 484, 921, 373, 944, 329, 184, 302, 861, 205, 414, 771, 606, 312, 652, 503, 413, 415, 238, 449, 781, 874, 586, 544, 402, 468, 525, 155, 845, 714, 295, 564, 197, 509, 863, 640, 209, 986, 808, 691, 317, 355, 789, 779, 281, 141, 594, 336, 105, 682, 360, 299, 559, 876, 608, 315, 401, 632, 480, 161, 577, 284, 657, 1012, 481, 330, 388, 1011, 524, 423, 1019, 812, 416, 168, 322, 258, 710, 703, 1027, 195, 447, 259, 633, 990, 710, 215, 410, 458, 760, 174, 312, 605, 269, 206, 617, 534, 554, 497, 296, 393, 236, 784, 483, 1189, 892, 602, 788, 709, 382, 831, 537, 695, 99, 563, 424, 759, 432, 281, 795, 319, 422, 684, 331, 866, 377, 638, 247, 501, 711, 463, 475, 631, 507, 310, 298, 252, 1059, 757, 364, 785, 410, 233, 411, 236, 487, 339, 341, 473, 1022, 527, 515, 700, 380, 388, 414, 253, 913, 466, 773, 238, 638, 335, 896, 298, 310, 658, 461, 207, 205, 550, 29, 425, 141, 76, 649, 442, 322, 832, 730, 307, 385, 401, 268, 301, 311, 306, 291, 364, 864, 560, 840, 199, 358, 385, 179, 1142, 520, 986, 600, 712, 1018, 661, 365, 237, 769, 953, 517, 605, 396, 459, 991, 867, 899, 415, 700, 556, 324, 788, 639, 778, 226, 743, 685, 706, 883, 362, 970, 785, 387, 376, 734, 392, 730, 448, 250, 731, 387, 665, 1015, 243, 812, 391, 795, 346, 588, 737, 1077, 874, 933, 412, 817, 585, 550, 491, 273, 640, 208, 542, 338, 436, 895, 694, 257, 899, 583, 629, 327, 815, 744, 573, 1226, 727, 272, 607, 331, 1050, 594, 754, 716, 515, 524, 695, 1086, 297, 1177, 400, 678, 1004, 648, 294, 555, 780, 316, 486, 689, 679, 430, 136, 717, 233, 400, 646, 383, 530, 263, 574, 749, 790, 336, 377, 409, 609, 499, 686, 518, 595, 601, 334, 531, 197, 485, 348, 424, 701, 579, 500, 1147, 797, 1085, 404, 738, 1200, 253, 714, 427, 756, 303, 610, 313, 1399, 770, 455, 732, 796, 824, 1230, 927, 929, 397, 276, 794, 741, 957, 1052, 1002, 213, 392, 566, 461, 832, 798, 433, 590, 723, 718, 755, 878, 446, 615, 669, 776, 608, 659, 565, 443, 457, 407, 577, 631, 255, 365, 399, 152, 766, 814, 556, 640, 1137, 1000, 767, 745, 733, 1194, 529, 238, 1034, 789, 1314, 436, 493, 853, 492, 654, 809, 885, 636, 596, 270, 848, 774, 364, 512, 832, 411, 516, 927, 700, 857, 588, 703, 756, 758, 315, 574, 810, 885, 416, 600, 690, 417, 501, 626, 707, 581, 377, 916, 660, 808, 587, 265, 395, 613, 906, 381, 661, 310, 799, 148, 632, 941, 750, 578, 277, 1065, 1242, 1018, 326, 551, 459, 134, 99, 510, 1097, 198, 673, 531, 450, 697, 394, 749, 948, 193, 664, 965, 818, 454, 419, 556, 721, 742, 473, 886, 647, 694, 209, 906, 433, 674, 620, 666, 464, 446, 634, 728, 430, 630, 990, 435, 371, 534, 394, 467, 928, 326, 723, 490, 816, 699, 490, 530, 384, 361, 772, 374, 554, 619, 672, 613, 924, 677, 1079, 404, 367, 337, 898, 228, 418, 844, 766, 317, 680, 690, 566, 680, 333, 726, 960, 942, 637, 607, 452, 664, 698, 235, 942, 736, 368, 584, 362, 650, 871, 683, 328, 1141, 988, 715, 915, 495, 1084, 919, 613, 179, 888, 355, 144, 1243, 655, 551, 582, 993, 730, 340, 548, 774, 643, 469, 651, 392, 843, 1196, 590, 573, 545, 1211, 593, 439, 1027, 869, 586, 442, 762, 502, 758, 822, 1048, 254, 628, 417, 683, 996, 752, 384, 725, 676, 842, 360, 374, 688, 353, 549, 661, 648, 584, 624, 348, 530, 250, 1135, 667, 1298, 1033, 623, 1102, 715, 594, 888, 871, 833, 321, 634, 491, 766, 505, 297, 1024, 388, 460, 707, 735, 1023, 444, 1098, 629, 505, 807, 581, 543, 687, 598, 337, 434, 806, 1111, 761, 521, 826, 547, 257, 434, 412, 688, 577, 363, 839, 1187, 1306, 648, 808, 504, 760, 429, 309, 916, 503, 777, 403, 1076, 512, 1127, 592, 351, 692, 711, 474, 587, 558, 487, 498, 326, 164, 902, 456, 471, 836, 748, 469, 480, 537, 553, 507, 347, 490, 498, 420, 1010, 598, 1022, 283, 362, 958, 553, 1156, 712, 1108, 718, 753, 1067, 681, 398, 483, 903, 956, 698, 612, 578, 489, 1294, 990, 920, 592, 1113, 862, 464, 1435, 835, 788, 280, 957, 795, 743, 1108, 425, 1026, 879, 488, 701, 931, 610, 741, 1061, 282, 830, 413, 983, 1159, 1067, 1071, 437, 843, 506, 610, 890, 1133, 1034, 954, 452, 925, 785, 836, 620, 597, 722, 258, 858, 342, 455, 927, 706, 299, 1104, 660, 811, 333, 1173, 878, 858, 1336, 816, 457, 948, 563, 1054, 678, 764, 733, 565, 555, 873, 1150, 485, 1303, 496, 796, 1218, 823, 634, 624, 878, 686, 684, 879, 1100, 454, 154, 1002, 357, 822, 676, 740, 578, 350, 1124, 834, 876, 500, 486, 426, 663, 529, 947, 656, 621, 823, 361, 615, 421, 585, 417, 538, 707, 656, 861, 1236, 831, 1087, 508, 768, 1269, 292, 786, 478, 1043, 593, 765, 408, 1439, 806, 528, 801, 912, 882, 1348, 1050, 1077, 528, 349, 996, 799, 976, 1265, 1100, 674, 470, 617, 540, 847, 862, 457, 757, 841, 973, 921, 969, 539, 646, 699, 959, 654, 670, 787, 872, 559, 744, 1276, 666, 273, 569, 833, 191, 775, 896, 576, 935, 1231, 1046, 923, 804, 949, 1201, 572, 303, 1162, 827, 1346, 897, 612, 937, 599, 675, 992, 930, 644, 1151, 301, 1103, 1086, 482, 831, 1130, 472, 753, 1007, 852, 1054, 635, 705, 955, 823, 425, 596, 962, 908, 445, 880, 867, 478, 509, 653, 775, 591, 510, 1055, 798, 1021, 740, 294, 427, 679, 973, 484, 686, 369, 836, 410, 802, 1245, 883, 649, 431, 1102, 1267, 1262, 557, 1092, 837, 164, 881, 726, 1120, 273, 697, 1097, 609, 708, 663, 838, 985, 552, 968, 1042, 1044, 483, 520, 691, 736, 756, 521, 895, 779, 914, 266, 1356, 548, 742, 964, 888, 481, 877, 685, 791, 437, 696, 991, 825, 643, 708, 969, 683, 1080, 1001, 1012, 617, 1030, 734, 792, 1069, 504, 394, 864, 595, 676, 782, 695, 837, 1154, 819, 1104, 437, 413, 383, 913, 627, 624, 987, 1394, 449, 839, 825, 1054, 1180, 378, 1211, 1090, 1114, 804, 897, 558, 1032, 746, 246, 1051, 870, 958, 725, 536, 702, 1035, 971, 356, 1195, 1061, 827, 1090, 526, 1092, 1250, 1025, 231, 947, 659, 272, 1284, 802, 826, 902, 1040, 870, 345, 658, 822, 715, 1012, 872, 575, 945, 1232, 805, 720, 580, 1215, 854, 603, 1074, 1056, 991, 528, 1218, 642, 1060, 1010, 1203, 288, 978, 884, 762, 1118, 763, 430, 786, 922, 928, 886, 529, 706, 403, 1104, 693, 868, 815, 670, 366, 546, 378, 1151, 901, 1522, 1107, 671, 1333, 745, 724, 1230, 1073, 911, 429, 646, 611, 889, 746, 403, 1032, 616, 637, 1382, 767, 1083, 451, 1212, 803, 1318, 849, 662, 955, 712, 971, 571, 496, 977, 1145, 1160, 931, 830, 580, 359, 805, 668, 770, 771, 390, 882, 1329, 1572, 851, 829, 535, 944, 535, 373, 930, 669, 828, 565, 1219, 620, 1308, 793, 361, 938, 859, 482, 946, 1186, 742, 591, 846, 221, 906, 641, 631, 1068, 780, 536, 517, 844, 652, 721, 552, 523, 627, 525, 1186, 944, 1039, 794, 498, 1076, 654, 1167, 856, 1264, 890, 768, 1225, 691, 729, 543, 936, 1016, 1210, 656, 604, 608, 1324, 1035, 1095, 639, 1311, 1281, 877, 1519, 923, 974, 431, 1057, 903, 809, 1137, 569, 1243, 1118, 880, 720, 1102, 1168, 821, 1193, 432, 999, 555, 1013, 1375, 1200, 1080, 495, 982, 519, 630, 1066, 1164, 1091, 1006, 1039, 943, 1195, 1103, 665, 894, 908, 329, 1081, 951, 641, 1060, 793, 719, 1232, 713, 847, 395, 1213, 1038, 1041, 1587, 984, 752, 1125, 929, 1095, 988, 940, 845, 603, 623, 875, 1158, 772, 1503, 506, 816, 1500, 1007, 638, 633, 936, 703, 704, 1173, 1171, 724, 175, 1051, 604, 1174, 682, 819, 854, 384, 1196, 1249, 1029, 509, 504, 537, 722, 571, 1121, 739, 838, 1027, 363, 743, 570, 818, 546, 721, 736, 842, 905, 1372, 932, 1178, 863, 840, 1334, 299, 855, 499, 1293, 1202, 1061, 689, 1516, 866, 614, 862, 955, 981, 1511, 1153, 1256, 768, 501, 1044, 1282, 985, 1455, 1235, 711, 1001, 627, 641, 889, 914, 644, 877, 913, 1149, 1138, 1188, 557, 871, 787, 1015, 727, 731, 868, 892, 560, 778, 1331, 1025, 318, 619, 864, 203, 911, 1052, 705, 1079, 1461, 1090, 994, 1023, 1050, 1535, 625, 999, 1344, 933, 1498, 1045, 939, 1249, 650, 910, 1294, 951, 649, 1163, 418, 1133, 1089, 493, 1116, 1309, 561, 857, 1073, 1112, 1223, 909, 807, 989, 1053, 997, 813, 976, 1074, 527, 1070, 966, 775, 511, 1004, 800, 717, 933, 1120, 900, 1389, 922, 684, 440, 704, 1106, 668, 767, 757, 847, 936, 835, 1293, 893, 895, 647, 1269, 1480, 1304, 782, 1166, 952, 566, 1124, 846, 1203, 354, 893, 1200, 952, 792, 667, 1164, 1003, 718, 1002, 1139, 1163, 1096, 685, 769, 1003, 977, 532, 1128, 905, 926, 443, 1405, 576, 835, 1116, 1145, 562, 1063, 737, 883, 639, 790, 1021, 967, 772, 995, 1165, 754, 1422, 1583, 1075, 997, 1082, 748, 827, 1197, 516, 465, 1451, 645, 879, 809, 739, 855, 1155, 948, 1117, 460, 465, 791, 1098, 693, 673, 1087, 1400, 532, 910, 829, 1171, 1214, 400, 1221, 1603, 1323, 834, 965, 787, 1045, 918, 589, 1074, 1171, 1116, 744, 905, 931, 1176, 1005, 589, 1238, 1107, 972, 1115, 600, 1181, 1609, 1105, 521, 1158, 1049, 306, 1389, 804, 963, 971, 1199, 917, 716, 668, 973, 998, 1174, 903, 590, 1130, 1472, 841, 811, 597, 1399, 956, 719, 1301, 1083, 1044, 622, 1446, 1097, 1206, 1119, 1345, 604, 1324, 920, 1129, 1340, 798, 444, 980, 997, 1232, 1087, 884, 1093, 422, 1135, 909, 1026, 1055, 824, 462, 678, 945, 1234, 1149, 1542, 1177, 675, 1421, 779, 1013, 1486, 1388, 1191, 514, 1219, 760, 974, 773, 477, 1190, 784, 674, 1428, 778, 1257, 477, 1252, 901, 1352, 1037, 1224, 970, 813, 1009, 1162, 519, 1088, 1157, 1409, 1182, 1089, 755, 438, 1076, 725, 869, 900, 436, 1148, 1421, 1588, 956, 978, 749, 950, 932, 516, 1046, 814, 865, 588, 1303, 713, 1614, 1024, 421, 959, 897, 518, 987, 1275, 765, 887, 893, 333, 925, 732, 635, 1169, 910, 1434, 575, 959, 653, 850, 728, 583, 1093, 542, 1316, 1031, 1059, 1122, 642, 1121, 891, 1209, 925, 1299, 896, 932, 1288, 934, 984, 580, 1113, 1413, 1224, 964, 643, 773, 1337, 1663, 1341, 657, 1357, 1473, 1292, 1551, 970, 1209, 792, 1339, 1141, 1140, 1320, 616, 1383, 1126, 980, 1014, 1146, 1245, 859, 1298, 513, 1182, 662, 1014, 1562, 1297, 1151, 502, 1139, 874, 1259, 1645, 1169, 1242, 1072, 1412, 1115, 1275, 1466, 1239, 1038, 1184, 458, 1094, 1440, 810, 1352, 1339, 830, 1354, 801, 848, 671, 1300, 1147, 1047, 1625, 1117, 1046, 1327, 1047, 1237, 1101, 1018, 1016, 745, 1066, 1132, 1221, 841, 1512, 522, 853, 1535, 1248, 975, 694, 1143, 824, 1009, 1185, 1288, 908, 200, 1308, 904, 1665, 687, 843, 943, 1199, 1198, 1379, 1168, 571, 789, 630, 846, 602, 1342, 1350, 995, 1114, 408, 1043, 1304, 945, 751, 793, 741, 1072, 1006, 1401, 1331, 1296, 1152, 856, 1337, 321, 881, 937, 1318, 1535, 1560, 806, 1696, 924, 625, 994, 1058, 996, 1649, 1183, 1442, 1118, 901, 1094, 1408, 1016, 1653, 1259, 800, 1317, 677, 815, 894, 1017, 1278, 957, 1109, 1284, 1321, 1220, 947, 1383, 860, 1220, 783, 873, 979, 1025, 1228, 1007, 1417, 1231, 735, 783, 872, 492, 1028, 1244, 852, 1144, 1645, 1172, 1088, 1110, 1204, 1622, 738, 1146, 1513, 1106, 1564, 1079, 1021, 1436, 776, 917, 1467, 1051, 814, 1217, 812, 1174, 1271, 863, 1187, 1461, 644, 1308, 1154, 1263, 1225, 1121, 867, 1110, 1157, 1139, 989, 1033, 1270, 1163, 1170, 1037, 880, 803, 1098, 807, 968, 1446, 1235, 1064, 1547, 979, 842, 500, 838, 1398, 939, 916, 953, 920, 946, 851, 1428, 1210, 960, 762, 1456, 1519, 1384, 898, 1361, 995, 1100, 1508, 856, 1284, 553, 1330, 1249, 1258, 1020, 764, 1165, 1179, 1047, 1056, 1285, 1266, 1286, 853, 1397, 1515, 987, 547, 1296, 1215, 965, 489, 1444, 800, 849, 1300, 1242, 662, 1085, 818, 918, 748, 954, 1024, 1022, 954, 1109, 1218, 821, 1431, 1587, 1315, 1081, 1140, 754, 943, 1371, 1003, 840, 1475, 722, 1081, 1033, 1216, 1254, 1175, 1122, 1203, 728, 488, 1189, 1377, 1136, 907, 1267, 1416, 751, 1169, 1101, 1289, 1241, 597, 1322, 1625, 1332, 961, 985, 915, 1128, 1069, 764, 1175, 1177, 1156, 889, 1075, 1088, 1251, 1031, 738, 1523, 1229, 994, 1489, 637, 1185, 1651, 1112, 680, 1608, 1197, 513, 1538, 978, 1040, 1000, 1432, 1030, 887, 833, 1057, 1094, 1565, 1190, 696, 1178, 1556, 1045, 1307, 1294, 1436, 1096, 747, 1485, 1128, 1430, 664, 1653, 1180, 1597, 1167, 1452, 776, 1341, 1305, 1142, 1418, 849, 562, 1247, 998, 1391, 1161, 941, 1387, 912, 1149, 1078, 1029, 1141, 1197, 582, 701, 961, 1423, 1195, 1674, 1205, 964, 1633, 929, 1127, 1571, 1581, 1291, 681, 1272, 781, 981, 783, 765, 1295, 974, 1015, 1516, 873, 1324, 482, 1262, 1371, 1648, 1101, 1240, 1115, 837, 1048, 1301, 763, 1260, 1229, 1426, 1316, 1208, 963, 1083, 1125, 992, 882, 1034, 467, 1176, 1429, 1610, 1452, 1376, 753, 1184, 1239, 777, 1291, 1264, 1223, 659, 1378, 797, 1632, 1071, 575, 1099, 926, 801, 1042, 1322, 1111, 1234, 1112, 979, 962, 993, 713, 1271, 1008, 1533, 653, 999, 746, 876, 751, 1123, 1319, 693, 1354, 1209, 1207, 1159, 1250, 1192, 1385, 1350, 952, 1543, 1020, 1067, 1632, 1119, 1635, 1165, 1161, 1483, 1347, 983, 669, 796, 1412, 1684, 1374, 886, 1468, 1479, 1594, 1781, 1113, 1274, 969, 1343, 1403, 1261, 1440, 681, 1424, 1216, 1207, 1210, 1172, 1325, 935, 1414, 1123, 1287, 1158, 1032, 1589, 1554, 1326, 562, 1313, 949, 1296, 1760, 1260, 1552, 1129, 1422, 1258, 1542, 1525, 1253, 1089, 1255, 1131, 1220, 1652, 869, 1410, 1351, 1266, 1518, 868, 884, 1302, 1486, 1362, 1185, 1652, 1172, 1205, 1388, 1479, 1270, 1224, 1297, 1138, 817, 1170, 1214, 1240, 1153, 1551, 817, 915, 1553, 1319, 1496, 717, 1194, 850, 1091, 1256, 1541, 1039, 561, 1358, 938, 1707, 1557, 1368, 1160, 1342, 1404, 1515, 1435, 727, 790, 1396, 854, 891, 1783, 1365, 1271, 1183, 1400, 1205, 1367, 1068, 794, 1006, 803, 1485, 1164, 1422, 1502, 1334, 1359, 1215, 1698, 1042, 1204, 1028, 1458, 1550, 1600, 1111, 1700, 1132, 992, 1134, 1430, 1049, 1731, 1323, 1555, 1228, 1456, 1099, 1545, 1091, 1685, 1445, 857, 1612, 735, 1126, 946, 1168, 1399, 1222, 1192, 1373, 1575, 1317, 1073, 1506, 1143, 1440, 1438, 1263, 1105, 1327, 1256, 1126, 1619, 1265, 924, 961, 1023, 866, 1070, 1437, 1132, 1487, 1675, 1333, 1423, 1182, 1295, 1683, 939, 1154, 1617, 1212, 1665, 1414, 1107, 1534, 1282, 1402, 1485, 1096, 1059, 1495, 981, 1235, 1381, 1017, 1240, 1534, 875, 1561, 1279, 1354, 1353, 1396, 1243, 1547, 1356, 1166, 1181, 1343, 1285, 1247, 1255, 1357, 975, 919, 1318, 988, 1477, 1521, 1358, 1206, 1549, 1146, 1117, 1305, 1019, 1406, 982, 942, 1014, 1075, 1004, 860, 1512, 1241, 1053, 858, 1620, 1527, 1415, 1251, 1497, 1108, 1166, 1667, 967, 1434, 665, 1335, 1313, 1406, 1283, 902, 1362, 1358, 1501, 1222, 1427, 1280, 1309, 984, 1647, 1573, 1449, 618, 1328, 1310, 1120, 844, 1739, 1424, 1246, 1474, 1561, 699, 1277, 826, 1386, 1257, 1227, 1056, 1189, 975, 1125, 1329, 917, 1464, 1784, 1405, 1152, 1153, 935, 1092, 1464, 1040, 907, 1592, 1428, 1136, 1063, 1420, 1390, 1251, 1217, 1268, 1143, 708, 1603, 1407, 1160, 1207, 1340, 1488, 998, 1315, 1344, 1300, 1365, 1134, 1401, 1629, 1366, 1008, 1013, 1211, 1179, 1188, 825, 1262, 1393, 1469, 1173, 1077, 1248, 1417, 1095, 907, 1654, 1320, 1065, 1598, 799, 1601, 1656, 1190, 714, 1754, 1595, 651, 1647, 1063, 1397, 1157, 1481, 1237, 1060, 1482, 1287, 1192, 1618, 1394, 1259, 1558, 1635, 1162, 1377, 1803, 1492, 1476, 774, 1626, 1420, 1504, 689, 1687, 1372, 1616, 1199, 1471, 934, 1342, 1351, 1261, 1442, 923, 723, 1361, 1084, 1450, 1233, 1011, 1389, 1338, 1186, 1340, 1110, 1327, 1225, 690, 1483, 1064, 1443, 1258, 1697, 1213, 966, 1687, 1161, 1314, 1605, 1877, 1477, 747, 1280, 1028, 1138, 820, 782, 1560, 1038, 1592, 1517, 894, 1586, 568, 1276, 1379, 1753, 1230, 1749, 1122, 1458, 1080, 1526, 1411, 1309, 1332, 1430, 1381, 1255, 1648, 1248, 1267, 1459, 914, 1085, 1184, 1180, 1459, 1629, 1463, 1378, 845, 1343, 1415, 1037, 1292, 1336, 1431, 734, 1426, 1193, 1688, 1279, 940, 1313, 1036, 1155, 1099, 1406, 1490, 1326, 1556, 1069, 1005, 1142, 1010, 1273, 1312, 1546, 761, 1624, 1065, 921, 1055, 1134, 1518, 839, 1435, 1234, 1244, 1238, 1297, 1254, 1494, 1484, 1145, 1604, 1404, 1289, 1645, 1131, 1658, 1198, 1392, 1557, 1667, 1082, 972, 918, 1432, 1701, 1637, 1312, 1579, 1680, 1864, 1825, 1194, 1457, 1370, 1411, 1479, 1398, 1510, 1049, 1447, 1576, 1252, 1290, 1360, 1679, 1070, 1506, 1699, 1359, 1204, 1222, 1818, 1596, 1363, 834, 1383, 1513, 1499, 1766, 1646, 1629, 1328, 1423, 1460, 1640, 1923, 1302, 1216, 1364, 1369, 1233, 1739, 1031, 1624, 1505, 1434, 1630, 1451, 1196, 1548, 1527, 1454, 1520, 1707, 1407, 1467, 1561, 1604, 1319, 1543, 1456, 1374, 881, 1453, 1323, 1735, 1246, 1660, 1381, 1188, 1709, 1391, 1532, 771, 1264, 851, 1219, 1322, 1639, 1144, 960, 1615, 1136, 1732, 1690, 1371, 1433, 1377, 1459, 1571, 1447, 1058, 1245, 1451, 1053, 949, 1894, 1531, 1305, 1253, 1493, 1303, 1380, 1581, 1330, 1082, 1036, 1541, 1520, 1437, 1585, 1359, 1425, 1410, 1857, 1465, 1239, 1208, 1585, 1642, 1807, 1743, 1710, 1167, 1135, 1465, 1513, 1175, 1759, 1524, 1655, 1348, 1471, 1150, 1581, 1917, 1694, 1545, 911, 1622, 852, 1348, 1191, 1261, 1410, 1491, 1237, 1401, 1822, 1325, 1457, 1668, 1236, 1449, 1698, 1270, 1392, 1418, 1486, 1133, 1797, 1503, 1041, 1198, 1392, 1041, 1632, 1621, 1311, 1638, 1832, 1364, 1452, 1499, 1472, 1913, 1295, 1208, 1766, 1369, 1780, 1541, 1462, 1545, 1336, 1569, 1693, 1385, 1276, 1547, 1266, 1338, 1505, 1029, 1493, 1670, 958, 1572, 1607, 1446, 1634, 1530, 1414, 1704, 1552, 1441, 1653, 1480, 1310, 1712, 1347, 1403, 1408, 951, 1360, 1213, 1562, 1710, 1419, 1528, 1589, 1443, 1345, 1636, 1071, 1637, 1026, 1644, 1030, 1638, 1221, 1119, 1570, 1712, 1253, 989, 1742, 1790, 1537, 1619, 1508, 1150, 1326, 1926, 1470, 1702, 940, 1733, 1362, 1429, 1299, 938, 1606, 1453, 1568, 1335, 1738, 1564, 1312, 1275, 1718, 1575, 1528, 937, 1491, 1415, 1179, 900, 1843, 1471, 1345, 1536, 1573, 930, 1301, 1020, 1482, 1412, 1274, 1105, 1347, 1344, 1764, 1729, 1062, 1563, 1843, 1532, 1228, 1302, 1273, 1397, 1591, 1391, 1052, 1662, 1470, 1181, 1425, 1427, 1578, 1263, 1395, 1292, 1317, 899, 1808, 1539, 1650, 1231, 1376, 1515, 1001, 1330, 1603, 1331, 1419, 1369, 1444, 1709, 1374, 1068, 1019, 1306, 1298, 1293, 1011, 1831, 1502, 1590, 1238, 1148, 1269, 1555, 1114, 1036, 1740, 1325, 1405, 1670, 1062, 1773, 1688, 1335, 1476, 1827, 1723, 820, 1748, 1072, 1536, 1398, 1732, 1587, 1400, 1529, 1355, 1304, 1651, 1722, 1268, 1673, 1800, 1178, 1503, 1847, 1656, 1497, 1595, 1689, 1576, 1740, 963, 1822, 1393, 1743, 1246, 1499, 1106, 1356, 1387, 1367, 1745, 1009, 780, 1458, 1206, 1673, 1250, 1662, 1611, 1555, 1193, 1353, 1597, 1559, 1445, 1187, 1677, 1155, 1464, 1497, 1713, 1357, 1450, 1696, 1257, 1339, 1685, 1894, 1615, 1733, 1315, 1364, 1363, 1418, 1123, 1738, 1445, 1620, 1660, 1156, 1599, 926, 1507, 1640, 1763, 1289, 1791, 1648, 1601, 1321, 1544, 1577, 1683, 1376, 1543, 1540, 1361, 1666, 1273, 1433, 1504, 993, 1265, 1288, 1454, 1482, 1736, 1481, 1439, 1286, 1467, 1461, 1474, 1510, 1489, 1681, 934, 1643, 1606, 1791, 1491, 1341, 1429, 1127, 1227, 1299, 1600, 1904, 1395, 1588, 1084, 1057, 1183, 1252, 1283, 1478, 1611, 1320, 1851, 1355, 1223, 1147, 1403, 1576, 1035, 1460, 1260, 1641, 1538, 1368, 1475, 1511, 1672, 1329, 1764, 1426, 1353, 1691, 1214, 1915, 1247, 1538, 1658, 1716, 1689, 1000, 986, 1884, 1975, 1730, 1899, 1623, 1834, 1981, 1952, 1473, 1490, 1529, 1557, 1748, 1544, 1617, 1720, 1690, 1667, 1630, 1641, 1678, 1750, 1367, 1525, 1786, 1447, 1395, 1390, 1826, 1598, 1427, 861, 1582, 1658, 1878, 1768, 1651, 1699, 1532, 1498, 1529, 1765, 1939, 1384, 1723, 1872, 1758, 1438, 1742, 1093, 1657, 1759, 1650, 1634, 1519, 1290, 1569, 1573, 1591, 1643, 1928, 1411, 1786, 1582, 1661, 1521, 1657, 1609, 1633, 972, 1468, 1644, 1776, 1388, 1692, 1409, 1278, 1812, 1631, 1873, 1310, 1272, 1109, 1333, 1522, 1722, 1612, 1048, 1741, 1674, 1755, 1711, 1568, 1437, 1484, 1567, 1746, 1583, 1148, 1307, 1570, 1314, 950, 1906, 1654, 1379, 1494, 1518, 1455, 1393, 1703, 1390, 1606, 1226, 1669, 1580, 1692, 1719, 1366, 1438, 1433, 1982, 1514, 1676, 1609, 1742, 1690, 1819, 1763, 1730, 1321, 1566, 2031, 1680, 1741, 1839, 1762, 1925, 1536, 1524, 1283, 1723, 1924, 1706, 1558, 1375, 1758, 1417, 1691, 1350, 1727, 1475, 1537, 1457, 1506, 1917, 1386, 1695, 1753, 1355, 1756, 1775, 1613, 1563, 1425, 1488, 1176, 1827, 1556, 1131, 1349, 1448, 1281, 1749, 1664, 1572, 1744, 1860, 1813, 1762, 1642, 1689, 1928, 1570, 1878, 1890, 1739, 1809, 1799, 1663, 1591, 1495, 1695, 1762, 1580, 1306, 1879, 1462, 1413, 1637, 1078, 1567, 1785, 1078, 1659, 1801, 1530, 1769, 1579, 1549, 1747, 1682, 1796, 1668, 1727, 1822, 1836, 1378, 1551, 1501, 1810, 1478, 1278, 1574, 1764, 1533, 1627, 1714, 1489, 1480, 1726, 1584, 1643, 1387, 1655, 1058, 1720, 1370, 1595, 1795, 1832, 1843, 1212, 1871, 1840, 1886, 1831, 1720, 1272, 1765, 1956, 1496, 1855, 1144, 1830, 1404, 1593, 1507, 967, 1768, 1671, 1842, 1469, 1829, 1593, 1621, 1516, 1763, 1612, 1982, 1124, 1613, 1715, 1375, 1311, 1844, 1509, 1448, 1542, 1660, 1005, 1490, 1408, 1620, 1707, 1277, 1568, 1373, 1887, 1827, 1778, 1510, 1782, 1886, 1537, 1424, 1402, 1282, 1496, 1681, 1649, 1286, 1858, 1566, 1622, 1972, 1562, 1868, 1316, 1754, 1725, 1559, 1086, 1873, 1594, 1792, 1351, 1579, 1889, 1043, 1380, 1789, 1588, 1481, 1487, 1650, 1717, 1602, 1413, 1226, 1370, 1368, 1346, 1493, 1902, 1554, 1713, 1564, 1244, 1432, 1597, 1328, 1285, 1828, 1484, 1466, 1719, 1550, 1909, 1854, 1582, 1596, 1903, 1751, 1530, 1905, 1227, 1771, 1605, 1807, 1777, 1738, 1592, 1460, 1507, 1708, 1745, 1385, 1686, 1869, 1277, 1517, 1867, 1776, 1846, 1809, 1803, 1674, 1748, 1191, 1837, 1420, 1754, 1274, 1644, 1201, 1366, 1450, 1402, 1757, 1140, 1500, 1465, 1509, 1793, 1352, 1804, 1702, 1560, 1431, 1549, 1679, 1769, 1615, 1229, 1740, 1775, 1534, 1498, 1757, 1416, 1567, 1711, 1360, 1472, 1705, 1923, 1782, 1746, 1767, 1575, 1531, 1628, 1772, 1868, 1771, 1628, 1719, 1287, 1623, 1900, 1709, 1703, 1840, 1382, 1841, 1808, 1860, 1788, 1652, 1687, 1810, 1488, 1661, 1867, 1476, 1785, 1646, 1468, 1611, 1159, 1492, 1291, 1463, 1716, 1778, 1669, 1448, 1539, 1633, 1511, 1523, 1672, 1821, 1718, 1349, 1875, 1659, 1835, 1558, 1520, 1670, 1639, 1540, 1885, 1779, 1972, 1531, 1874, 1627, 1202, 1639, 1553, 1540, 1539, 1646, 1439, 1856, 1444, 1279, 1241, 1952, 1701, 1280, 1616, 1332, 1692, 1664, 1373, 1781, 1733, 1995, 1571, 1777, 1593, 1578, 1869, 1233, 1916, 1504, 1849, 1704, 1729, 1896, 1953, 1449, 1899, 2007, 1744, 2003, 1875, 1935, 2016, 1993, 1527, 1788, 1734, 1726, 1823, 1636, 1619, 1734, 1755, 1829, 1773, 1799, 1700, 1947, 1938, 1647, 1789, 1550, 1396, 1590, 1964, 1951, 1634, 1066, 1856, 1717, 1988, 1791, 1664, 1977, 1544, 1715, 1563, 1801, 1988, 1725, 1815, 1921, 1897, 1442, 1831, 1217, 1752, 1866, 1861, 1659, 1706, 1724, 1678, 1714, 1724, 1958, 2036, 1487, 1978, 1657, 1997, 1800, 1895, 1708, 1811, 1678, 1705, 1962, 1927, 1699, 1694, 1625, 1501, 1844, 1686, 1958, 1614, 1307, 1129, 1407, 1683, 1835, 1800, 1152, 1793, 1879, 1820, 1747, 1598, 1922, 1553, 1768, 1811, 1838, 1290, 1953, 1781, 1610, 1626, 1936, 1751, 1665, 1584, 1823, 1816, 1758, 1932, 1454, 1793, 1436, 1817, 1675, 1697, 1927, 1655, 1546, 1677, 2003, 1666, 1735, 1811, 1808, 1813, 1834, 1850, 1821, 1565, 1975, 2045, 1816, 1809, 1951, 1862, 2048, 1911, 1686, 1441, 1878, 1976, 1865, 1906, 1608, 1871, 1469, 1803, 1932, 1798, 1862, 1881, 1577, 1802, 1979, 1455, 1977, 1820, 1495, 1816, 1907, 1784, 1774, 1789, 1743, 1533, 1830, 1684, 1201, 1548, 1566, 1334, 1776, 1724, 1752, 1880, 1908, 1863, 1898, 1925, 1693, 2033, 1799, 1910, 1893, 1928, 1833, 1841, 1706, 1801, 1599, 1737, 1934, 1688, 2035, 1885, 1796, 1807, 1881, 1419, 1901, 1948, 1137, 1685, 1848, 1624, 1829, 1868, 1630, 1819, 1772, 1946, 1787, 1805, 1941, 1854, 1554, 1722, 1729, 1877, 1863, 1736, 1626, 1918, 1631, 1628, 1986, 1616, 1679, 1820, 1869, 1756, 1662, 1876, 1380, 1815, 1914, 1680, 1956, 1870, 1947, 1421, 1886, 1936, 1911, 1918, 1728, 1346, 1769, 2021, 1601, 1912, 1548, 1835, 1502, 1605, 1927, 1372, 1865, 1673, 1891, 1494, 1882, 1779, 1814, 1940, 1806, 1759, 2011, 1441, 1623, 1846, 1514, 1663, 2033, 1552, 1819, 1574, 1850, 1671, 1702, 1757, 1756, 1836, 1384, 1980, 1640, 2038, 2006, 1794, 1805, 1785, 1955, 1580, 1930, 1583, 1526, 1523, 1833, 1725, 1462, 1883, 1682, 1794, 1995, 1892, 1874, 1349, 1818, 1730, 1604, 1170, 1890, 1777, 1806, 1701, 1589, 1911, 1254, 1526, 1942, 1825, 1514, 1966, 1780, 1864, 1671, 1817, 1677, 1443, 1855, 1569, 1922, 1934, 1712, 1931, 1765, 1888, 1463, 1627, 1505, 1492, 1870, 1590, 1565, 1922, 1698, 1956, 1985, 2006, 1635, 1931, 1899, 1600, 1973, 1268, 1823, 1710, 1867, 1916, 1804, 1642, 1466, 1767, 1832, 1996, 1672, 1824, 1921, 1924, 1838, 1904, 1908, 1861, 1960, 1998, 1728, 1760, 1394, 1993, 1546, 1974, 1525, 1847, 1202, 1613, 1453, 1602, 1826, 1875, 1594, 1596, 1753, 1970, 1478, 2055, 1853, 1713, 1474, 1797, 1682, 1943, 1745, 1830, 1814, 1897, 1621, 1817, 1802, 1617, 1649, 1978, 1500, 1483, 1804, 2040, 1983, 1775, 1893, 1636, 1896, 1774, 1784, 1903, 1782, 1783, 1852, 1894, 1770, 1924, 2020, 1926, 1929, 1714, 2009, 1989, 1865, 1898, 1737, 1945, 1847, 1696, 1767, 1907, 1715, 1849, 1967, 1694, 1747, 1337, 1608, 1363, 1676, 1734, 1859, 1755, 1470, 1584, 1957, 1919, 1528, 1788, 1900, 1741, 1508, 1971, 1749, 1937, 1970, 1941, 1794, 1693, 1721, 1991, 1915, 1997, 1824, 1942, 1996, 1236, 1669, 1887, 1654, 1982, 1898, 1761, 1883, 1700, 1521, 1681, 2011, 1751, 1281, 1684, 1607, 1845, 1860, 1524, 1844, 1901, 1999, 1760, 1940, 1705, 1736, 1987, 1721, 2033, 2024, 1990, 2047, 1965, 2018, 2044, 1473, 1920, 2030, 1968, 2045, 2025, 1995, 2054, 2017, 1559, 1876, 1891, 1871, 2013, 1949, 1821, 1892, 1834, 1946, 1778, 1880, 1864, 2042, 2016, 2026, 1945, 2031, 1574, 1853, 1980, 2034, 2056, 2012, 1912, 1812, 2031, 1836, 1992, 2058, 1941, 1814, 2007, 2051, 2048, 2044, 1880, 1926, 2047, 1761, 1839, 1365, 1772, 1986, 1985, 1905, 2060, 1909, 1857, 1944, 1826, 2000, 2050, 2023, 2020, 1931, 2023, 2043, 2005, 1967, 1872, 1907, 1944, 1981, 1965, 1999, 1711, 1916, 1517, 1958, 1954, 2023, 1961, 2064, 1798, 1577, 1930, 1896, 1859, 1382, 1987, 2039, 2037, 1787, 1666, 1984, 1602, 1933, 2008, 2057, 1338, 1976, 2038, 1971, 1950, 1954, 1991, 1828, 1695, 1845, 1873, 1889, 2037, 1641, 1961, 1731, 1884, 1881, 1914, 1978, 1783, 1925, 1882, 2010, 2062, 1846, 1921, 2029, 2046, 1910, 2026, 1953, 1607, 2063, 2059, 2000, 1884, 2008, 2014, 2052, 2015, 1848, 1716, 2003, 2036, 2006, 1932, 1973, 1976, 1522, 2028, 2059, 1917, 1947, 2027, 1954, 1964, 2059, 2035, 1999, 1910, 1893, 1877, 1933, 1934, 2019, 1858, 1990, 2037, 1876, 1903, 1792, 1966, 2025, 1509, 1853, 1908, 1837, 2044, 1914, 1938, 1913, 2004, 1824, 2047, 1856, 1938, 2032, 2022, 1870, 1912, 1779, 2039, 2049, 1761, 1983, 1950, 2054, 2002, 1959, 1848, 1919, 1790, 1993, 1967, 1900, 1718, 1897, 2019, 2051, 2053, 1838, 1930, 1918, 2015, 2036, 1904, 1962, 1890, 1852, 1845, 2009, 2050, 2004, 2032, 1883, 2057, 2028, 2040, 2056, 1851, 1737, 1939, 1872, 1939, 1975, 1988, 1676, 1919, 1994, 2019, 1984, 1885, 2005, 1812, 2008, 2040, 1957, 2028, 1842, 2032, 2039, 2062, 1828, 1992, 1746, 1841, 1980, 1940, 1994, 1416, 1937, 1866, 1996, 1866, 1929, 2013, 1815, 2064, 1959, 2012, 2022, 1735, 1727, 1950, 1981, 1991, 2043, 1929, 1920, 1578, 1859, 1960, 1949, 1852, 1955, 1966, 2018, 2063, 1656, 2055, 2041, 1969, 2046, 1905, 2017, 1726, 1943, 1717, 2009, 1802, 2062, 1750, 1675, 1990, 1963, 1795, 2061, 1998, 2042, 1770, 2049, 1862, 1668, 2056, 2000, 1987, 2002, 1797, 1882, 1963, 1512, 1708, 1949, 1901, 1935, 1997, 1971, 2017, 2054, 1920, 1691, 1585, 2001, 2005, 1963, 2015, 1933, 2026, 1909, 1913, 1704, 1798, 1962, 1610, 2024, 1969, 1810, 1994, 1703, 2055, 2021, 2030, 2024, 1986, 1906, 1825, 2002, 1770, 1855, 1837, 2014, 2010, 1849, 1697, 1661, 1863, 1935, 2052, 1957, 2058, 1937, 2061, 2035, 2045, 1984, 1888, 1965, 2058, 1854, 2007, 1842, 2060, 1888, 1989, 1599, 2014, 1638, 2027, 1731, 2012, 1891, 1936, 1614, 1618, 1806, 2030, 1586, 2057, 1968, 1974, 1477, 1959, 1840, 1973, 1970, 1955, 1951, 1998, 1985, 1892, 1818, 1874, 1961, 2046, 1989, 1960, 2041, 2049, 2001, 1948, 2048, 1983, 1944, 1790, 2042, 2051, 1992, 1923, 2041, 1952, 1972, 1945, 2029, 1948, 1974, 1943, 2038, 2050, 1942, 1968, 1805, 1977, 2004, 1752, 1787, 1915, 1732, 2063, 2021, 1766, 1946, 1618, 1858, 2025, 1857, 1773, 1895, 1833, 1887, 1744, 1979, 2010, 1850, 2061, 2016, 1780, 1586, 2027, 1969, 2034, 1979, 2018, 1813, 1839, 1902, 2013, 2011, 2052, 1851, 2029, 2064, 1386, 1750, 1902, 1771, 2034, 2001, 1795, 2053, 1792, 1631, 1964, 2053, 1796, 1409, 1774, 1721, 1889, 1879, 1728, 2020, 2043, 2060, 1895, 2022, 1861, 1786}; const uint16_t H_2064_516_sparse_H_cols[] = { 208, 242, 84, 114, 314, 135, 349, 90, 64, 57, 26, 52, 16, 142, 120, 244, 167, 164, 133, 179, 22, 180, 413, 161, 224, 121, 57, 22, 394, 17, 9, 54, 84, 20, 98, 311, 322, 308, 86, 91, 77, 41, 110, 192, 18, 11, 210, 133, 248, 276, 389, 100, 37, 4, 239, 15, 32, 15, 7, 10, 109, 82, 19, 50, 137, 278, 43, 181, 89, 206, 113, 285, 10, 95, 12, 180, 23, 93, 100, 124, 200, 130, 81, 149, 6, 251, 181, 227, 156, 215, 194, 284, 206, 177, 171, 174, 40, 136, 187, 89, 98, 156, 44, 30, 48, 78, 349, 126, 56, 3, 212, 43, 111, 183, 63, 54, 35, 63, 333, 158, 96, 100, 270, 38, 97, 4, 139, 163, 67, 251, 139, 42, 214, 117, 26, 98, 132, 105, 13, 61, 330, 223, 183, 95, 295, 95, 55, 29, 65, 35, 75, 130, 8, 98, 344, 46, 239, 155, 131, 75, 246, 3, 44, 260, 199, 21, 99, 118, 76, 8, 87, 271, 257, 171, 98, 44, 255, 17, 276, 91, 50, 21, 90, 262, 118, 208, 214, 35, 140, 159, 58, 277, 158, 180, 53, 93, 58, 264, 40, 98, 4, 284, 183, 24, 7, 123, 133, 57, 223, 124, 156, 202, 34, 324, 67, 452, 63, 123, 303, 303, 169, 40, 32, 24, 32, 5, 220, 218, 103, 222, 113, 111, 100, 30, 146, 266, 4, 195, 14, 55, 145, 37, 40, 18, 184, 188, 267, 38, 116, 35, 60, 53, 133, 58, 9, 296, 63, 57, 30, 17, 86, 157, 105, 29, 73, 285, 122, 9, 31, 199, 347, 73, 55, 135, 86, 2, 42, 67, 119, 21, 351, 35, 213, 173, 61, 176, 194, 109, 72, 77, 273, 133, 244, 90, 313, 220, 27, 192, 63, 299, 208, 202, 3, 66, 14, 19, 127, 68, 348, 246, 26, 87, 75, 20, 215, 93, 212, 180, 149, 114, 133, 48, 235, 17, 247, 257, 42, 149, 57, 363, 75, 334, 67, 97, 29, 109, 241, 59, 332, 15, 228, 6, 186, 81, 271, 31, 103, 122, 150, 105, 110, 92, 277, 213, 358, 37, 100, 129, 46, 367, 118, 26, 115, 211, 3, 77, 217, 23, 24, 145, 70, 48, 68, 179, 112, 30, 110, 177, 14, 97, 68, 66, 103, 105, 83, 231, 29, 383, 45, 64, 42, 32, 201, 269, 67, 9, 149, 3, 34, 86, 373, 51, 409, 130, 39, 80, 177, 118, 34, 248, 175, 50, 37, 76, 14, 7, 122, 49, 262, 27, 79, 102, 295, 113, 26, 111, 135, 10, 356, 97, 21, 2, 129, 451, 140, 60, 42, 191, 33, 152, 25, 279, 99, 22, 124, 168, 305, 34, 104, 224, 154, 50, 71, 97, 60, 209, 73, 57, 10, 322, 159, 375, 104, 17, 273, 374, 81, 121, 160, 157, 411, 88, 236, 166, 88, 53, 164, 135, 36, 375, 291, 211, 4, 233, 84, 94, 47, 29, 10, 306, 54, 183, 16, 128, 42, 86, 96, 488, 31, 109, 150, 42, 332, 110, 315, 44, 321, 82, 109, 235, 80, 212, 35, 128, 80, 215, 7, 115, 44, 102, 281, 86, 27, 79, 280, 33, 227, 142, 113, 104, 102, 281, 161, 238, 197, 106, 111, 72, 163, 76, 41, 58, 4, 46, 45, 122, 281, 219, 52, 53, 45, 66, 264, 69, 37, 16, 138, 221, 176, 176, 98, 42, 75, 92, 80, 158, 163, 71, 26, 49, 109, 108, 70, 85, 378, 186, 178, 9, 12, 4, 74, 25, 65, 207, 8, 339, 5, 45, 205, 163, 234, 14, 56, 77, 62, 185, 55, 89, 19, 228, 117, 113, 80, 9, 8, 38, 74, 10, 112, 32, 205, 8, 242, 142, 119, 26, 158, 28, 148, 54, 69, 28, 81, 91, 142, 78, 158, 49, 66, 45, 179, 249, 91, 90, 219, 153, 339, 90, 14, 56, 60, 392, 9, 162, 274, 102, 79, 89, 206, 114, 365, 2, 232, 172, 36, 8, 14, 317, 173, 65, 2, 37, 112, 273, 38, 179, 107, 244, 9, 173, 67, 141, 265, 156, 96, 102, 158, 77, 96, 331, 2, 102, 302, 94, 23, 93, 92, 408, 95, 229, 2, 25, 326, 62, 82, 166, 185, 7, 170, 15, 30, 216, 93, 94, 186, 24, 124, 268, 36, 108, 156, 448, 65, 134, 356, 79, 91, 165, 63, 30, 123, 56, 164, 97, 348, 262, 72, 294, 3, 33, 36, 143, 79, 31, 158, 124, 46, 131, 115, 103, 33, 280, 22, 69, 80, 343, 386, 295, 107, 39, 122, 18, 215, 78, 166, 136, 163, 222, 5, 405, 196, 253, 401, 78, 138, 184, 190, 131, 5, 141, 91, 84, 10, 210, 184, 171, 39, 20, 283, 92, 337, 257, 172, 160, 28, 134, 170, 18, 110, 108, 85, 21, 62, 122, 23, 10, 128, 161, 152, 156, 65, 249, 124, 191, 282, 139, 220, 238, 24, 60, 66, 41, 196, 185, 68, 72, 51, 121, 12, 218, 13, 101, 89, 93, 298, 293, 197, 201, 332, 36, 128, 160, 182, 42, 19, 53, 259, 116, 331, 131, 84, 125, 43, 285, 79, 112, 66, 66, 288, 93, 93, 158, 87, 104, 134, 131, 156, 58, 33, 6, 42, 16, 130, 182, 354, 141, 12, 65, 60, 1, 169, 175, 82, 44, 82, 108, 17, 69, 28, 29, 80, 145, 25, 66, 88, 14, 64, 290, 160, 46, 113, 1, 251, 55, 61, 185, 199, 153, 13, 237, 150, 269, 5, 100, 126, 243, 312, 56, 219, 203, 156, 144, 164, 161, 87, 236, 203, 10, 216, 13, 166, 239, 19, 141, 51, 284, 61, 11, 75, 205, 31, 128, 49, 2, 33, 5, 135, 100, 194, 78, 154, 245, 51, 321, 121, 160, 114, 74, 44, 113, 59, 259, 6, 49, 144, 6, 22, 214, 171, 98, 181, 225, 368, 8, 274, 154, 262, 234, 21, 19, 352, 9, 165, 20, 90, 85, 255, 367, 174, 29, 145, 43, 1, 3, 153, 10, 280, 77, 221, 12, 11, 142, 370, 143, 116, 145, 223, 330, 36, 9, 157, 99, 271, 88, 291, 49, 89, 47, 94, 394, 344, 305, 38, 30, 39, 6, 129, 1, 242, 268, 200, 298, 182, 297, 175, 27, 117, 135, 108, 246, 60, 38, 225, 48, 12, 124, 229, 55, 50, 311, 70, 133, 119, 151, 199, 73, 70, 98, 26, 76, 99, 154, 112, 76, 236, 273, 22, 109, 206, 61, 34, 146, 292, 132, 254, 42, 1, 121, 310, 33, 41, 49, 168, 226, 247, 459, 47, 211, 187, 41, 58, 8, 388, 359, 129, 83, 129, 190, 55, 189, 48, 258, 60, 58, 13, 205, 263, 232, 151, 96, 77, 31, 53, 64, 174, 197, 200, 25, 93, 191, 139, 217, 5, 117, 51, 212, 72, 28, 2, 236, 114, 320, 35, 106, 74, 28, 425, 282, 49, 132, 2, 82, 47, 143, 142, 100, 25, 79, 43, 24, 23, 399, 92, 97, 290, 31, 69, 109, 165, 83, 41, 98, 84, 195, 319, 347, 222, 37, 39, 104, 5, 196, 207, 47, 4, 223, 141, 32, 47, 81, 96, 31, 68, 101, 145, 177, 85, 129, 271, 334, 224, 36, 117, 56, 70, 410, 212, 87, 298, 361, 160, 164, 34, 19, 52, 66, 310, 4, 105, 40, 180, 137, 263, 37, 73, 237, 29, 135, 20, 7, 336, 197, 68, 2, 131, 28, 60, 88, 94, 58, 83, 38, 218, 7, 1, 71, 296, 149, 355, 146, 179, 64, 2, 418, 155, 127, 76, 348, 54, 83, 251, 48, 27, 185, 32, 84, 4, 89, 107, 360, 257, 29, 54, 318, 56, 95, 295, 51, 45, 47, 24, 256, 173, 92, 154, 63, 255, 321, 132, 76, 116, 92, 308, 20, 52, 178, 292, 87, 216, 275, 16, 152, 151, 165, 226, 276, 36, 1, 333, 30, 428, 17, 136, 11, 192, 45, 40, 34, 268, 68, 292, 54, 85, 120, 116, 206, 92, 99, 213, 91, 15, 14, 43, 112, 305, 319, 157, 136, 76, 25, 141, 95, 82, 11, 32, 41, 74, 49, 301, 122, 128, 338, 94, 129, 265, 71, 11, 109, 22, 328, 13, 105, 22, 196, 240, 198, 7, 146, 181, 115, 62, 61, 218, 64, 170, 222, 15, 99, 36, 31, 258, 69, 41, 56, 60, 129, 33, 103, 57, 21, 103, 127, 165, 13, 39, 328, 105, 228, 107, 120, 86, 98, 27, 54, 205, 167, 244, 74, 238, 38, 89, 5, 120, 329, 37, 37, 278, 24, 140, 118, 127, 203, 23, 106, 286, 243, 72, 152, 86, 61, 22, 11, 6, 34, 256, 269, 158, 175, 211, 317, 253, 50, 50, 27, 130, 454, 41, 250, 267, 144, 303, 11, 104, 63, 18, 124, 104, 58, 140, 25, 151, 58, 239, 286, 155, 217, 27, 182, 10, 398, 65, 190, 81, 69, 119, 78, 20, 136, 106, 51, 188, 200, 350, 303, 133, 53, 73, 15, 158, 262, 150, 192, 10, 289, 162, 362, 234, 232, 16, 225, 334, 294, 6, 105, 125, 68, 72, 176, 239, 20, 163, 353, 118, 117, 170, 90, 258, 50, 45, 88, 87, 128, 85, 4, 62, 34, 268, 258, 183, 25, 146, 85, 44, 133, 107, 140, 87, 64, 18, 70, 76, 95, 309, 147, 34, 308, 19, 237, 21, 217, 115, 49, 177, 201, 88, 149, 163, 5, 325, 455, 96, 52, 77, 24, 152, 130, 207, 67, 220, 36, 18, 48, 88, 40, 148, 179, 6, 155, 19, 138, 74, 39, 51, 198, 141, 142, 106, 103, 67, 111, 107, 186, 68, 37, 166, 28, 94, 289, 15, 126, 121, 43, 108, 117, 128, 406, 71, 333, 39, 38, 69, 313, 267, 17, 249, 40, 351, 40, 202, 138, 262, 105, 324, 75, 267, 123, 141, 156, 78, 112, 408, 97, 173, 91, 99, 239, 25, 376, 25, 254, 185, 157, 15, 61, 71, 113, 237, 237, 48, 29, 89, 1, 79, 41, 3, 24, 13, 187, 96, 52, 30, 137, 70, 82, 1, 47, 34, 444, 146, 63, 47, 59, 154, 115, 129, 298, 61, 3, 64, 85, 75, 244, 12, 47, 101, 103, 7, 169, 125, 213, 271, 378, 271, 100, 126, 134, 131, 31, 32, 16, 310, 222, 95, 12, 154, 89, 391, 205, 8, 27, 1, 85, 192, 85, 117, 140, 127, 132, 35, 31, 12, 263, 121, 6, 81, 65, 71, 78, 88, 140, 85, 227, 347, 68, 50, 7, 44, 215, 128, 26, 2, 96, 55, 66, 54, 22, 161, 258, 7, 13, 124, 101, 265, 21, 83, 233, 203, 274, 59, 354, 99, 59, 139, 13, 377, 107, 102, 23, 184, 32, 115, 61, 169, 320, 27, 171, 293, 57, 62, 46, 58, 147, 139, 235, 52, 46, 375, 46, 218, 319, 368, 61, 29, 174, 172, 83, 325, 29, 200, 198, 18, 303, 114, 173, 213, 35, 102, 20, 35, 211, 46, 180, 99, 301, 250, 208, 178, 93, 30, 76, 52, 165, 159, 372, 225, 278, 138, 136, 145, 231, 79, 44, 137, 50, 55, 119, 125, 39, 138, 101, 25, 166, 23, 192, 18, 39, 178, 116, 28, 178, 59, 188, 198, 16, 96, 46, 186, 108, 59, 255, 199, 258, 252, 88, 118, 134, 383, 150, 5, 139, 239, 228, 38, 227, 263, 43, 67, 175, 97, 188, 63, 147, 189, 17, 154, 62, 370, 219, 1, 198, 22, 56, 90, 318, 15, 20, 171, 45, 100, 30, 126, 131, 234, 11, 207, 254, 299, 349, 120, 196, 21, 26, 170, 114, 77, 8, 57, 190, 11, 214, 212, 345, 179, 225, 64, 114, 80, 185, 66, 138, 149, 43, 190, 127, 3, 3, 153, 222, 210, 11, 56, 104, 53, 153, 130, 56, 83, 71, 274, 95, 74, 121, 106, 173, 16, 114, 270, 33, 53, 267, 49, 332, 306, 68, 35, 28, 32, 213, 24, 113, 40, 18, 9, 89, 294, 250, 256, 70, 208, 291, 91, 82, 314, 39, 7, 181, 78, 13, 301, 405, 112, 316, 156, 393, 12, 110, 48, 73, 166, 39, 17, 132, 204, 104, 63, 62, 1, 45, 393, 5, 115, 47, 18, 248, 16, 272, 75, 317, 84, 70, 342, 207, 14, 191, 77, 154, 12, 107, 230, 132, 280, 42, 23, 147, 149, 17, 18, 8, 174, 73, 261, 197, 72, 4, 15, 34, 163, 159, 136, 12, 36, 196, 3, 40, 167, 71, 101, 111, 100, 237, 300, 32, 76, 9, 14, 137, 6, 53, 202, 71, 52, 148, 219, 17, 299, 41, 108, 48, 143, 65, 316, 133, 142, 92, 296, 323, 150, 211, 361, 261, 422, 167, 212, 195, 50, 317, 406, 372, 360, 314, 399, 203, 136, 211, 56, 195, 436, 229, 489, 295, 101, 109, 487, 184, 87, 279, 233, 399, 176, 470, 433, 364, 197, 115, 194, 314, 423, 246, 98, 401, 291, 268, 272, 357, 458, 298, 327, 21, 298, 299, 225, 220, 272, 51, 177, 93, 84, 403, 150, 336, 275, 236, 476, 243, 261, 373, 330, 248, 310, 365, 155, 240, 144, 276, 229, 292, 99, 175, 101, 317, 365, 297, 404, 260, 333, 417, 462, 434, 474, 444, 119, 309, 261, 260, 344, 435, 80, 123, 257, 183, 358, 197, 78, 16, 264, 260, 459, 195, 390, 147, 217, 467, 353, 165, 120, 151, 335, 83, 106, 28, 326, 252, 70, 298, 182, 153, 300, 260, 122, 111, 143, 302, 135, 235, 362, 236, 232, 287, 371, 309, 248, 248, 176, 215, 169, 183, 155, 140, 446, 91, 277, 263, 234, 126, 376, 335, 162, 490, 398, 182, 105, 378, 469, 159, 119, 457, 292, 249, 108, 59, 451, 20, 362, 228, 57, 306, 459, 301, 208, 329, 357, 82, 396, 279, 137, 396, 272, 202, 396, 282, 120, 308, 389, 287, 43, 311, 371, 59, 326, 125, 223, 190, 285, 134, 348, 219, 74, 343, 72, 455, 367, 179, 368, 395, 267, 227, 59, 225, 65, 21, 300, 310, 266, 259, 362, 168, 104, 69, 344, 417, 47, 335, 103, 126, 394, 41, 122, 166, 313, 265, 438, 118, 265, 204, 316, 439, 142, 90, 180, 440, 281, 392, 312, 210, 137, 189, 240, 247, 240, 320, 251, 157, 324, 208, 415, 245, 180, 262, 94, 141, 191, 110, 165, 165, 361, 61, 488, 378, 138, 178, 229, 396, 157, 168, 397, 266, 289, 240, 347, 299, 84, 451, 133, 391, 469, 324, 137, 116, 60, 365, 207, 200, 472, 450, 428, 330, 139, 159, 223, 217, 330, 245, 234, 238, 418, 391, 367, 308, 291, 304, 67, 244, 288, 382, 130, 461, 335, 118, 187, 334, 324, 441, 462, 112, 445, 59, 214, 230, 372, 44, 106, 167, 181, 211, 193, 148, 409, 264, 364, 353, 174, 263, 283, 406, 312, 349, 118, 455, 181, 259, 323, 175, 33, 152, 299, 141, 320, 314, 131, 62, 235, 335, 231, 340, 244, 425, 169, 311, 497, 241, 37, 436, 117, 184, 294, 157, 350, 301, 94, 162, 273, 13, 182, 101, 486, 341, 434, 322, 74, 144, 284, 139, 111, 403, 214, 52, 323, 327, 172, 227, 230, 208, 277, 221, 120, 409, 339, 123, 223, 252, 209, 237, 429, 295, 253, 35, 162, 454, 243, 199, 295, 385, 360, 241, 170, 390, 175, 402, 198, 288, 397, 275, 330, 267, 161, 341, 283, 193, 62, 258, 162, 254, 259, 374, 408, 415, 268, 54, 312, 424, 302, 342, 376, 172, 453, 214, 281, 379, 447, 170, 434, 230, 121, 423, 305, 441, 276, 244, 121, 110, 461, 323, 151, 309, 431, 202, 200, 329, 210, 352, 164, 503, 113, 126, 231, 152, 454, 311, 433, 86, 449, 130, 231, 262, 189, 290, 288, 429, 143, 311, 70, 226, 451, 277, 362, 134, 51, 81, 343, 171, 466, 149, 194, 310, 119, 315, 186, 300, 469, 349, 427, 123, 168, 117, 174, 144, 224, 116, 173, 198, 457, 287, 147, 65, 258, 272, 499, 315, 81, 186, 168, 341, 316, 190, 178, 291, 232, 280, 174, 260, 242, 226, 181, 120, 113, 138, 294, 106, 481, 287, 377, 104, 125, 383, 234, 369, 289, 348, 52, 389, 239, 219, 344, 378, 338, 418, 137, 363, 116, 207, 335, 449, 202, 358, 216, 134, 319, 100, 11, 265, 233, 172, 267, 45, 256, 23, 318, 221, 169, 245, 306, 281, 181, 289, 116, 173, 346, 327, 194, 205, 326, 345, 201, 111, 448, 366, 399, 293, 222, 170, 358, 442, 19, 187, 159, 456, 299, 206, 290, 169, 253, 412, 252, 202, 377, 331, 497, 203, 313, 115, 255, 373, 364, 237, 245, 291, 269, 342, 54, 218, 269, 373, 170, 256, 270, 213, 305, 288, 203, 315, 238, 87, 192, 334, 26, 127, 352, 240, 277, 114, 102, 432, 139, 332, 278, 128, 411, 91, 317, 296, 265, 343, 291, 217, 124, 350, 220, 242, 220, 62, 233, 300, 190, 393, 445, 513, 478, 346, 375, 131, 99, 272, 160, 355, 279, 112, 305, 107, 403, 336, 109, 322, 143, 371, 147, 204, 192, 308, 180, 279, 127, 194, 145, 239, 124, 288, 24, 177, 191, 433, 429, 308, 270, 136, 330, 73, 469, 302, 274, 221, 246, 393, 328, 431, 454, 391, 426, 269, 434, 329, 245, 149, 151, 338, 328, 299, 433, 374, 230, 202, 472, 177, 360, 402, 387, 316, 181, 418, 52, 198, 174, 20, 197, 110, 294, 268, 123, 151, 43, 87, 250, 237, 247, 233, 143, 367, 231, 339, 381, 141, 233, 355, 204, 225, 382, 208, 224, 206, 159, 87, 80, 275, 103, 365, 33, 374, 117, 145, 332, 368, 309, 297, 421, 63, 212, 213, 373, 107, 249, 247, 318, 242, 464, 312, 164, 240, 103, 328, 345, 262, 160, 209, 401, 325, 249, 186, 201, 112, 250, 262, 215, 70, 473, 170, 126, 143, 211, 313, 370, 183, 220, 174, 388, 346, 351, 182, 173, 48, 214, 370, 163, 92, 95, 228, 134, 461, 251, 398, 205, 282, 372, 363, 348, 83, 321, 175, 265, 160, 252, 479, 340, 257, 64, 285, 419, 369, 23, 196, 283, 286, 327, 97, 411, 331, 184, 297, 325, 284, 341, 245, 302, 294, 231, 247, 319, 404, 190, 180, 491, 441, 147, 303, 148, 291, 350, 471, 197, 396, 187, 92, 201, 269, 200, 264, 250, 338, 104, 470, 379, 248, 168, 271, 113, 146, 205, 267, 71, 296, 221, 385, 153, 347, 482, 252, 339, 453, 390, 289, 284, 229, 269, 263, 167, 27, 369, 80, 243, 432, 230, 153, 280, 397, 239, 380, 208, 244, 8, 72, 271, 354, 328, 233, 224, 297, 297, 204, 461, 190, 259, 151, 306, 375, 195, 189, 304, 155, 279, 232, 352, 123, 177, 339, 401, 493, 384, 376, 340, 38, 171, 79, 161, 78, 340, 293, 238, 465, 191, 435, 179, 244, 387, 184, 211, 307, 352, 342, 316, 196, 351, 353, 445, 69, 97, 368, 180, 274, 136, 275, 342, 189, 75, 395, 145, 147, 205, 185, 222, 218, 413, 297, 374, 144, 453, 372, 138, 302, 316, 237, 356, 46, 40, 339, 343, 184, 242, 125, 216, 345, 305, 477, 148, 214, 199, 303, 306, 123, 440, 404, 292, 210, 328, 350, 210, 337, 94, 309, 408, 151, 76, 276, 266, 325, 482, 155, 332, 254, 209, 321, 297, 243, 355, 259, 164, 221, 453, 361, 15, 338, 357, 289, 240, 149, 249, 263, 219, 447, 434, 261, 300, 159, 479, 342, 93, 213, 57, 141, 177, 335, 410, 315, 188, 166, 223, 307, 354, 492, 170, 187, 453, 195, 127, 349, 410, 151, 207, 130, 147, 216, 417, 439, 369, 83, 461, 326, 406, 381, 227, 126, 270, 258, 394, 108, 331, 228, 333, 72, 95, 209, 319, 351, 346, 379, 284, 392, 315, 191, 147, 463, 95, 486, 415, 167, 324, 377, 390, 375, 410, 92, 354, 106, 364, 106, 370, 132, 193, 396, 321, 134, 119, 393, 327, 195, 506, 30, 341, 253, 233, 82, 283, 55, 207, 301, 430, 167, 248, 163, 475, 77, 218, 124, 367, 176, 415, 426, 188, 380, 58, 488, 209, 170, 164, 354, 134, 212, 334, 255, 220, 349, 110, 288, 227, 350, 201, 406, 319, 442, 117, 330, 228, 148, 424, 267, 155, 452, 161, 345, 217, 474, 179, 208, 328, 367, 254, 173, 210, 259, 458, 296, 277, 206, 296, 162, 480, 430, 183, 202, 268, 263, 274, 312, 374, 96, 445, 66, 463, 321, 250, 204, 194, 129, 78, 342, 485, 289, 387, 67, 119, 256, 241, 341, 110, 215, 276, 226, 186, 276, 266, 198, 331, 455, 167, 232, 89, 355, 166, 336, 147, 397, 167, 260, 175, 282, 465, 265, 178, 453, 189, 132, 273, 202, 132, 209, 62, 400, 397, 114, 225, 299, 288, 259, 228, 149, 319, 160, 327, 406, 411, 217, 374, 286, 229, 236, 129, 232, 403, 266, 432, 189, 115, 338, 120, 342, 197, 248, 310, 269, 298, 79, 156, 453, 325, 468, 116, 246, 210, 438, 43, 256, 378, 294, 398, 84, 366, 122, 311, 174, 346, 377, 320, 111, 309, 243, 162, 329, 165, 307, 229, 266, 305, 267, 94, 230, 454, 131, 72, 50, 209, 199, 283, 329, 178, 400, 236, 388, 423, 127, 190, 287, 175, 477, 274, 314, 465, 389, 410, 350, 131, 263, 108, 201, 127, 130, 468, 59, 223, 148, 341, 336, 414, 235, 36, 288, 171, 405, 111, 395, 271, 122, 154, 150, 164, 403, 460, 374, 213, 208, 464, 310, 143, 356, 204, 81, 273, 314, 287, 380, 16, 410, 313, 385, 410, 406, 23, 240, 370, 373, 416, 355, 204, 176, 187, 329, 357, 292, 282, 384, 212, 273, 202, 262, 385, 198, 191, 402, 230, 266, 179, 389, 210, 165, 375, 261, 287, 302, 471, 250, 144, 284, 279, 277, 382, 118, 65, 126, 235, 158, 354, 150, 53, 331, 68, 280, 51, 219, 432, 90, 236, 213, 137, 289, 256, 366, 469, 484, 125, 289, 454, 49, 155, 392, 221, 181, 238, 137, 85, 222, 105, 228, 351, 380, 22, 379, 322, 409, 215, 234, 174, 275, 356, 182, 212, 272, 203, 194, 426, 215, 279, 234, 279, 388, 164, 318, 219, 205, 152, 74, 304, 242, 136, 440, 304, 466, 238, 347, 201, 373, 275, 325, 364, 362, 393, 103, 394, 365, 359, 338, 332, 322, 369, 270, 216, 363, 135, 353, 460, 157, 282, 402, 414, 393, 196, 403, 178, 294, 276, 193, 282, 217, 86, 234, 351, 433, 337, 64, 236, 184, 423, 64, 362, 241, 210, 247, 483, 298, 122, 191, 243, 245, 46, 458, 278, 447, 311, 326, 360, 71, 224, 354, 148, 360, 74, 6, 215, 290, 374, 313, 200, 185, 116, 133, 28, 224, 467, 357, 291, 473, 379, 388, 188, 246, 340, 67, 240, 144, 475, 314, 193, 179, 215, 150, 423, 360, 192, 102, 159, 127, 204, 154, 168, 423, 373, 172, 48, 140, 327, 292, 358, 221, 426, 154, 101, 331, 337, 235, 102, 251, 409, 238, 283, 151, 307, 278, 357, 247, 484, 229, 152, 69, 311, 241, 225, 388, 230, 140, 146, 370, 429, 26, 134, 466, 240, 372, 197, 389, 145, 136, 176, 187, 400, 264, 221, 366, 446, 311, 364, 186, 404, 363, 101, 243, 400, 120, 146, 389, 203, 190, 278, 300, 260, 196, 430, 106, 260, 367, 436, 222, 359, 433, 417, 184, 371, 301, 275, 336, 111, 428, 129, 304, 303, 73, 224, 449, 175, 255, 446, 326, 123, 315, 315, 223, 327, 161, 194, 97, 201, 309, 383, 407, 302, 326, 209, 324, 198, 356, 107, 88, 189, 276, 247, 144, 339, 320, 221, 169, 140, 226, 118, 379, 333, 69, 300, 262, 218, 265, 257, 251, 310, 27, 265, 227, 369, 220, 146, 412, 265, 272, 286, 286, 229, 283, 395, 209, 372, 290, 488, 293, 184, 360, 342, 194, 132, 313, 290, 448, 385, 162, 232, 31, 270, 271, 383, 318, 242, 251, 157, 79, 119, 421, 401, 178, 231, 152, 207, 55, 163, 274, 313, 125, 251, 256, 468, 385, 329, 227, 272, 317, 196, 427, 466, 96, 216, 449, 14, 441, 333, 484, 363, 383, 303, 155, 172, 188, 348, 169, 256, 199, 193, 188, 455, 86, 161, 235, 247, 288, 135, 344, 427, 381, 148, 261, 128, 193, 287, 221, 347, 155, 172, 204, 334, 255, 380, 189, 241, 277, 226, 448, 413, 81, 441, 223, 162, 429, 292, 205, 146, 439, 110, 114, 304, 261, 378, 88, 278, 386, 123, 226, 329, 165, 83, 295, 213, 408, 355, 414, 336, 440, 366, 409, 142, 153, 168, 128, 470, 266, 82, 280, 428, 250, 360, 238, 99, 53, 424, 176, 285, 263, 212, 268, 316, 377, 335, 387, 168, 144, 428, 326, 132, 232, 252, 300, 51, 146, 308, 371, 486, 279, 275, 370, 223, 33, 304, 296, 217, 442, 360, 280, 75, 354, 182, 139, 397, 236, 442, 361, 45, 233, 193, 479, 206, 153, 121, 299, 201, 255, 426, 318, 286, 54, 143, 302, 57, 148, 320, 231, 218, 377, 498, 206, 359, 238, 235, 379, 160, 391, 381, 261, 297, 277, 368, 362, 437, 409, 372, 270, 481, 300, 407, 253, 55, 488, 487, 470, 429, 431, 402, 259, 404, 257, 101, 243, 463, 487, 514, 496, 150, 358, 504, 234, 490, 511, 240, 415, 412, 484, 490, 416, 252, 472, 489, 478, 493, 381, 139, 480, 511, 362, 293, 466, 503, 359, 342, 142, 326, 369, 304, 320, 364, 486, 261, 105, 316, 471, 476, 430, 460, 379, 484, 253, 446, 400, 447, 373, 472, 490, 272, 401, 158, 471, 328, 417, 312, 344, 331, 429, 383, 341, 501, 361, 410, 480, 477, 492, 508, 482, 332, 336, 429, 310, 369, 460, 291, 346, 365, 392, 402, 452, 120, 430, 301, 419, 462, 406, 410, 342, 493, 500, 390, 498, 378, 230, 403, 188, 443, 258, 505, 499, 148, 508, 485, 241, 382, 289, 264, 182, 455, 481, 264, 451, 489, 483, 485, 365, 376, 447, 301, 382, 278, 237, 409, 285, 168, 292, 463, 290, 482, 339, 323, 376, 386, 495, 286, 502, 450, 322, 115, 390, 483, 370, 426, 461, 441, 406, 162, 73, 506, 256, 511, 507, 107, 498, 491, 323, 274, 478, 516, 337, 450, 304, 183, 502, 285, 249, 420, 427, 349, 386, 508, 353, 413, 500, 375, 304, 485, 410, 484, 306, 353, 431, 377, 239, 156, 438, 402, 499, 503, 200, 458, 419, 490, 230, 203, 397, 73, 436, 398, 326, 293, 363, 416, 497, 458, 250, 443, 460, 60, 476, 227, 392, 494, 352, 422, 383, 468, 344, 443, 199, 425, 417, 496, 452, 472, 396, 246, 449, 458, 395, 398, 283, 253, 391, 307, 268, 337, 501, 269, 499, 409, 408, 434, 365, 264, 407, 267, 150, 253, 254, 269, 185, 434, 306, 508, 510, 287, 347, 318, 439, 235, 307, 503, 281, 303, 468, 366, 415, 434, 480, 368, 497, 500, 504, 195, 188, 125, 502, 496, 475, 492, 481, 501, 407, 309, 302, 372, 442, 357, 464, 436, 249, 429, 493, 412, 340, 385, 489, 172, 353, 322, 477, 439, 509, 490, 311, 478, 364, 450, 448, 479, 372, 463, 495, 312, 269, 425, 341, 501, 415, 193, 225, 481, 437, 433, 281, 509, 428, 278, 509, 458, 506, 481, 509, 463, 504, 209, 415, 510, 347, 246, 388, 307, 237, 472, 407, 318, 228, 441, 417, 467, 469, 457, 515, 324, 402, 510, 254, 112, 470, 345, 463, 302, 378, 416, 312, 241, 381, 327, 94, 207, 335, 498, 343, 476, 427, 444, 351, 414, 186, 178, 457, 459, 460, 333, 471, 334, 389, 398, 327, 315, 504, 481, 437, 386, 431, 488, 442, 241, 356, 471, 402, 424, 433, 287, 459, 298, 463, 322, 458, 386, 464, 232, 492, 285, 441, 227, 292, 405, 377, 336, 466, 441, 513, 350, 276, 142, 492, 176, 404, 286, 437, 483, 474, 446, 291, 323, 474, 463, 414, 496, 231, 493, 491, 464, 484, 448, 191, 441, 258, 296, 497, 381, 484, 419, 318, 125, 222, 487, 516, 285, 502, 449, 294, 211, 384, 358, 451, 414, 509, 135, 241, 444, 392, 474, 469, 444, 203, 500, 282, 350, 286, 231, 478, 365, 465, 467, 472, 497, 484, 513, 513, 455, 242, 502, 385, 504, 358, 479, 390, 407, 416, 266, 330, 206, 412, 471, 496, 498, 380, 325, 159, 219, 504, 447, 340, 383, 416, 475, 373, 410, 486, 368, 501, 511, 413, 91, 278, 257, 486, 369, 506, 214, 402, 430, 348, 476, 333, 331, 441, 204, 187, 450, 194, 382, 224, 497, 411, 462, 252, 275, 457, 446, 415, 502, 413, 121, 515, 485, 476, 353, 381, 488, 480, 385, 425, 314, 224, 383, 506, 280, 515, 388, 422, 386, 396, 408, 329, 340, 371, 359, 138, 431, 200, 361, 393, 189, 436, 411, 319, 316, 478, 293, 390, 422, 414, 445, 232, 503, 397, 443, 296, 493, 374, 432, 430, 493, 206, 437, 477, 295, 352, 492, 509, 375, 214, 314, 430, 283, 467, 491, 350, 421, 499, 499, 511, 367, 125, 379, 482, 476, 505, 411, 446, 507, 390, 264, 290, 419, 460, 474, 414, 422, 317, 327, 437, 422, 404, 320, 416, 242, 362, 429, 366, 399, 438, 293, 245, 448, 461, 390, 415, 356, 482, 504, 284, 428, 378, 268, 400, 308, 468, 416, 393, 394, 405, 355, 408, 438, 323, 424, 401, 483, 516, 493, 362, 424, 372, 234, 515, 386, 382, 500, 314, 402, 425, 460, 456, 172, 501, 247, 495, 173, 492, 226, 476, 439, 346, 293, 353, 317, 435, 152, 487, 119, 348, 424, 499, 494, 495, 469, 251, 501, 401, 516, 308, 457, 280, 454, 440, 432, 470, 497, 399, 451, 344, 487, 432, 439, 516, 278, 461, 462, 313, 475, 386, 233, 396, 475, 439, 424, 495, 431, 434, 433, 436, 456, 403, 341, 423, 359, 296, 324, 309, 480, 508, 435, 144, 478, 401, 358, 287, 484, 512, 443, 367, 459, 452, 445, 468, 316, 271, 514, 388, 448, 474, 413, 307, 86, 293, 320, 433, 302, 394, 222, 414, 344, 456, 356, 475, 468, 456, 426, 494, 428, 339, 288, 494, 448, 270, 504, 507, 381, 405, 379, 498, 469, 489, 247, 354, 445, 500, 467, 217, 277, 385, 318, 513, 218, 253, 483, 249, 325, 161, 351, 505, 475, 440, 229, 412, 461, 371, 427, 377, 439, 338, 473, 500, 292, 167, 315, 230, 261, 464, 294, 407, 226, 406, 488, 426, 432, 515, 511, 421, 489, 439, 282, 515, 483, 325, 323, 462, 443, 491, 377, 384, 349, 491, 353, 226, 420, 495, 428, 409, 473, 461, 357, 473, 371, 343, 360, 398, 500, 465, 401, 319, 513, 483, 216, 405, 424, 473, 455, 516, 235, 476, 308, 248, 281, 482, 244, 481, 407, 345, 309, 506, 417, 485, 363, 320, 192, 470, 231, 513, 246, 299, 447, 467, 163, 510, 498, 337, 417, 491, 457, 422, 340, 422, 298, 273, 301, 447, 449, 356, 374, 436, 299, 225, 452, 468, 490, 403, 432, 387, 38, 277, 340, 514, 485, 355, 253, 400, 389, 460, 492, 356, 300, 400, 404, 404, 498, 369, 330, 273, 311, 248, 491, 126, 216, 495, 449, 505, 407, 380, 425, 246, 437, 153, 211, 256, 387, 515, 297, 507, 440, 480, 361, 412, 395, 431, 412, 371, 506, 435, 421, 462, 504, 483, 472, 436, 507, 370, 183, 485, 330, 389, 381, 473, 272, 449, 364, 192, 345, 312, 252, 333, 501, 388, 491, 246, 507, 393, 355, 358, 367, 417, 499, 81, 516, 494, 490, 228, 480, 367, 427, 387, 349, 510, 349, 411, 321, 449, 315, 307, 458, 490, 462, 323, 406, 452, 456, 357, 153, 359, 503, 375, 352, 385, 392, 442, 485, 260, 445, 423, 512, 410, 361, 396, 421, 514, 300, 412, 487, 489, 19, 352, 447, 347, 321, 400, 394, 284, 510, 508, 502, 281, 459, 177, 483, 388, 399, 379, 180, 186, 209, 502, 418, 326, 214, 432, 274, 401, 413, 512, 322, 264, 513, 239, 501, 464, 419, 259, 418, 306, 307, 319, 484, 512, 453, 363, 508, 454, 424, 450, 275, 270, 301, 260, 512, 161, 494, 323, 346, 189, 348, 376, 345, 464, 421, 381, 342, 464, 359, 455, 492, 470, 359, 505, 465, 343, 420, 435, 428, 510, 478, 193, 419, 380, 414, 181, 394, 266, 396, 491, 395, 192, 421, 404, 507, 456, 512, 251, 384, 442, 421, 334, 384, 317, 320, 391, 477, 171, 336, 273, 500, 446, 414, 340, 484, 306, 453, 445, 327, 405, 406, 506, 236, 491, 371, 508, 471, 446, 501, 290, 366, 507, 250, 394, 403, 458, 266, 509, 351, 493, 252, 510, 456, 176, 440, 419, 378, 506, 399, 442, 319, 514, 462, 275, 459, 378, 350, 226, 494, 430, 494, 394, 486, 442, 381, 233, 500, 504, 504, 308, 494, 366, 353, 469, 439, 463, 516, 109, 473, 473, 343, 383, 435, 282, 509, 420, 514, 333, 450, 307, 477, 375, 398, 466, 382, 479, 452, 283, 285, 495, 482, 425, 430, 505, 322, 444, 503, 497, 449, 486, 338, 440, 355, 488, 413, 352, 513, 331, 333, 506, 423, 183, 361, 474, 461, 409, 425, 411, 481, 397, 470, 332, 395, 343, 298, 159, 476, 512, 398, 444, 516, 505, 499, 397, 421, 271, 130, 424, 456, 270, 463, 431, 334, 397, 399, 509, 335, 341, 443, 392, 509, 338, 284, 468, 382, 477, 443, 331, 455, 445, 169, 296, 511, 491, 408, 427, 408, 318, 405, 182, 392, 390, 488, 219, 368, 369, 384, 372, 336, 399, 502, 515, 356, 486, 325, 293, 504, 162, 451, 295, 339, 220, 471, 421, 351, 433, 334, 392, 465, 303, 418, 306, 316, 515, 317, 438, 482, 454, 475, 370, 459, 496, 505, 384, 185, 172, 497, 171, 281, 400, 418, 499, 436, 391, 108, 468, 280, 422, 313, 467, 398, 464, 167, 254, 168, 448, 465, 505, 471, 312, 467, 418, 403, 374, 470, 459, 347, 468, 395, 425, 19, 472, 510, 456, 428, 495, 75, 255, 467, 465, 425, 512, 387, 426, 335, 453, 474, 487, 480, 462, 344, 511, 207, 309, 419, 419, 395, 424, 272, 346, 382, 460, 352, 169, 442, 476, 404, 473, 511, 330, 196, 334, 329, 438, 438, 503, 255, 481, 500, 420, 472, 509, 394, 450, 255, 472, 373, 365, 488, 305, 496, 418, 193, 368, 305, 508, 495, 494, 199, 420, 514, 450, 201, 496, 238, 264, 411, 358, 229, 287, 493, 346, 409, 489, 102, 480, 413, 435, 290, 317, 303, 348, 376, 314, 422, 297, 343, 250, 513, 466, 290, 289, 431, 503, 451, 516, 328, 305, 427, 361, 307, 469, 341, 476, 371, 489, 328, 355, 310, 437, 515, 402, 386, 403, 412, 357, 440, 486, 448, 399, 337, 514, 426, 478, 506, 462, 360, 466, 496, 279, 397, 479, 428, 505, 421, 461, 257, 437, 418, 315, 440, 498, 337, 387, 490, 437, 466, 220, 500, 479, 470, 218, 380, 431, 243, 396, 492, 443, 507, 373, 477, 395, 188, 496, 366, 457, 422, 336, 376, 450, 391, 494, 245, 384, 77, 44, 478, 438, 454, 407, 285, 508, 198, 457, 261, 322, 492, 482, 338, 512, 405, 420, 312, 464, 416, 80, 412, 249, 501, 412, 452, 505, 426, 379, 451, 479, 387, 137, 340, 507, 483, 459, 203, 453, 420, 358, 84, 499, 503, 408, 443, 350, 515, 200, 295, 376, 442, 369, 423, 346, 420, 445, 456, 465, 337, 475, 438, 258, 506, 377, 364, 185, 321, 305, 282, 509, 301, 321, 398, 456, 511, 465, 281, 516, 450, 435, 286, 416, 475, 254, 393, 469, 414, 429, 460, 389, 478, 492, 503, 453, 444, 393, 467, 294, 420, 157, 279, 513, 497, 204, 444, 514, 348, 459, 454, 270, 413, 440, 494, 434, 465, 505, 429, 384, 514, 466, 486, 475, 510, 436, 437, 434, 457, 516, 454, 473, 332, 433, 479, 499, 405, 482, 497, 503, 411, 351, 199, 380, 216, 420, 387, 426, 450, 404, 370, 447, 386, 452, 135, 253, 482, 416, 276, 171, 419, 420, 288, 241, 474, 391, 368, 488, 365, 400, 363, 354, 274, 415, 345, 376, 467, 138, 479, 295, 391, 382, 483, 444, 446, 390, 304, 510, 507, 385, 452, 216, 457, 472, 498, 438, 408, 388, 368, 498, 464, 462, 466, 508, 515, 321, 375, 337, 448, 273, 455, 435, 380, 354, 254, 242, 324, 489, 477, 245, 427, 195, 508, 187, 210, 328, 498, 145, 485, 304, 493, 392, 507, 324, 400, 419, 430, 439, 513, 432, 417, 496, 364, 474, 511, 493, 435, 487, 366, 364, 455, 384, 359, 195, 329, 263, 349, 248, 486, 371, 166, 257, 471, 339, 380, 357, 437, 441, 191, 443, 268, 197, 444, 306, 363, 160, 346, 345, 376, 401, 479, 195, 243, 514, 481, 489, 445, 432, 451, 460, 252, 443, 332, 283, 416, 502, 140, 164, 415, 359, 470, 90, 411, 425, 422, 352, 344, 501, 386, 335, 458, 449, 478, 480, 477, 487, 413, 444, 244, 157, 451, 423, 480, 297, 284, 495, 431, 384, 418, 363, 325, 245, 447, 313, 485, 436, 391, 357, 512, 490, 487, 417, 512, 324, 496, 366, 152, 452, 343, 361, 389, 254, 446, 471, 502, 399, 485, 395, 345, 474, 337, 481, 249, 510, 458, 514, 90, 362, 463, 347, 477, 257, 489, 405, 143, 259, 286, 495, 382, 224, 177, 446, 260, 427, 438, 434, 511, 187, 383, 423, 193, 430, 427, 447, 435, 487, 502, 338, 407, 323, 407, 387, 166, 512, 473, 310, 457, 490}; const float H_2064_516_sparse_input[] = { -2.8588758611049867, -11.692946618257562, -2.0931111592429659, 11.110696212718175, 6.6118168080332342, 5.5228669775147967, -10.351976177615544, -6.2055936928533972, 15.766842028131405, 10.150684036103069, -8.459063190320423, 3.5621047687812557, -3.4741612771047636, 3.324748317571744, 8.996614205792751, -11.020291727957101, 12.081427681651697, -8.8928631203159583, -3.3519010114052263, 7.7902118547439443, 9.6608001848411806, -7.1066822779231593, -18.837368573809297, 6.7301895647238608, 6.7933629603091008, 5.9697810424393483, 8.344011991064086, 12.19791145343228, 9.4167774696594435, 7.423418316685729, 9.0291842080564226, 12.492983259925982, 7.1203329881309401, 9.8776999539720336, 7.3657220051725565, 5.4066464900536131, -12.553405951140983, -8.4918025628237199, -11.352365915823617, 14.756685666538061, -8.0938336502539876, -2.7071697789206022, -2.4795849849319289, 14.778716053676311, -12.149933491676437, -8.5931326392610909, -5.4147618905983697, 1.7095221079392837, -12.75286957597447, -6.560818125727109, 5.5288804134600262, -16.774264848727494, -10.397477377823613, -14.47470382199227, -12.095199384731899, -0.68504635593676977, 2.6623689185177528, 13.264791388391092, -15.654931986196731, 6.1276196890542334, 4.5068190091793028, -13.394637229913476, -6.9231832293793651, -12.113429033794846, 1.2142140703098925, 8.9363539352870394, -12.687063373304539, -3.3458614784673091, -3.4123481785186587, 17.559631253372945, 13.470764559481434, 5.3912902961422002, 8.0737946505557545, -12.755710856932868, -3.569697890412812, -6.2613535644882905, 0.068556269783912271, 6.2629797657916875, -9.2663011036090968, -4.4829975567184634, -9.6136989537403004, -8.7663852688801143, -13.974856274599134, 11.407302219619563, -10.302223327202944, -8.9771589068473983, -6.1388609170833384, 4.2370800072671333, 1.7760515525196516, -12.120232639630231, -12.958157445638765, 5.2985241644932541, -16.484657731002855, -6.3532421360393387, -9.0395804464700298, -7.2671128749847744, -12.616882711750195, -4.9350723080331012, -6.6905936282318637, 18.568407538602393, 12.530577696234687, -9.7889565176657243, -15.214958325061282, 7.215674131215513, -7.5394667988733808, 9.0137713371297465, 6.2553392643094785, 9.1953246360263154, -11.131787953429392, -5.4020937991353657, -4.0642543197135739, -0.44036236539366824, 8.0650609441874703, 0.85520780385748785, 7.2621337620159085, 0.29865166967486761, -9.2011814546979203, -10.330862011400864, -7.3191138151867943, -9.4852558149271111, 14.762260259194324, -5.0853268103463423, -11.2925794883785, 13.026909781206733, 7.9504343630905412, 10.148928930852414, -8.9032450603232327, 7.0914762951954913, 10.89340681888671, -12.705821222595254, 13.126012326275292, 9.4442919029362749, 5.0277440210736879, 0.21756213342494518, 12.710361373031621, 5.6453651213768019, -13.49634180382726, 6.4754225359227204, 9.6275804629486004, 5.8125840672452975, 9.7028326962213836, 6.1260130958734562, 3.3623596073706641, 10.736024757333299, 4.6569987032041826, -8.5021099021622799, -2.5832378575026125, 17.984880998940056, -13.974611077713172, -7.8550941092339874, -2.6917314432377575, 10.825283872831294, 11.217940706150642, 1.8301222470027103, 6.2062091666111812, -12.440863506480019, -19.955292055354317, -3.6699151522797462, 2.2154324244303956, -3.7363628672311142, -10.271027034445964, -9.2862432349117547, 9.7847963699436011, -5.9471830363214551, 11.139859339322513, -9.2599913694963618, 5.0422863933763367, -7.1141487133220043, 4.2177963601947308, 10.657785123505857, -5.7952000401674324, -6.826355874510365, 8.7268751949597245, -8.5906649209875745, 2.2758857640658201, -6.1665377492933358, -7.3104026599884433, -3.2424605164178031, 16.796591996286164, 15.671215006757382, -7.8445348658392806, 12.2589312976831, -2.5670307012079139, -11.537316744819945, -2.4858301794672331, 5.0542510171190438, -6.6860957990782133, -7.2619018024969462, -6.7329842279273242, -7.3146812058251234, 8.0821157274412183, 2.4005920765968378, 9.3157871935284753, -12.908851857280949, 5.2927115546650425, 9.9926730185778059, 3.9229860372333749, -5.5126846245121035, 12.313688019948762, 7.9681453222519041, 17.181368769149195, -8.962498225939207, -11.548950041024865, 12.014544817430894, 11.485639169870186, 11.939774664713912, -14.36069895314143, -11.812874687185857, 12.249194120883461, 4.8839501930831242, -10.540165871108648, -14.829380396239381, -6.4665012687326051, 4.7430459960995295, -7.1378949876943016, -15.357105375923917, 7.3351294975306445, -9.6095153441695373, 4.381145332149095, -9.2910048695861427, 4.894239034759102, 7.864879034656453, -8.3265429253416077, 10.497214061711553, -0.39338042557070996, -4.4611306847986816, 0.76940119561902198, 2.3535542193708272, 10.459438806533345, 9.4938186880252005, -6.4805717587307994, -13.457392617761585, -10.487085219177404, -9.8506932711478576, 11.274019685851906, -12.3031017274995, 8.3324030035106826, -2.3013116280481358, 8.3664075310158825, -10.402109920341072, -5.2924293563600742, -12.008098192077149, 10.992304106359162, -5.5591947469243506, -12.838234842015352, 8.1682577157065577, -6.4919177172949487, 13.568876091933316, 8.0352162745849594, 8.7834139460450125, -11.335870474093099, -10.790767171281415, -2.8875937626970223, 14.64505222675956, 11.436743007190451, -2.9337339836825955, -12.707240342338084, 16.661129912274529, -19.171798326126961, 12.280144746488103, 6.5975965145696174, -13.019719338217644, -3.4328503704209457, 4.822535491209953, -8.1340577921572415, 11.549182216506546, 9.6431724916100059, 5.5547407614902173, 15.019668995173307, -1.6514898426907461, 16.110709054474917, -10.9397931999944, 12.04576668183285, -8.4818868311872198, -6.103248438757908, 8.2975079067215702, 2.5480181038085412, 18.799878298920927, 16.231939791740228, -18.011602750805633, 3.7139764502467689, 12.751595841360283, -7.8718015936255812, -0.40802815212428428, -15.47812599016518, 3.2584854200798588, 14.976391986507007, 9.1367378814346782, 3.4155780056910059, -13.292285487599507, -12.855991908912157, 14.013291588644732, 9.6911017234399335, -5.8910196575740752, -2.2280612655108047, -11.219438047247786, -2.5955623953948517, -3.4460676112793136, 3.5682986120247073, -11.70300520092221, 11.99455548751415, 7.319096625369828, 8.400961847094683, 12.142806695044221, -3.6775894169196279, 8.3797255658565142, -12.156985373281584, -17.475193610019677, -14.228116929396922, 10.726007504360073, 15.267119384103992, 12.781072511062279, 8.0326533999697229, -17.51207194760946, -7.554034280962183, 10.066411068992132, 14.13799652436988, -6.7247334837075705, -11.112518294834185, -5.7326833292155523, 3.6877552031425131, 8.7105204152043516, 9.3857694378580963, 19.127569440965896, -3.8614826162666089, 7.9404471399280068, 6.3807591097483005, -6.8888859894612535, 10.317928637508684, 2.1736529765433783, 10.953222318849482, -7.6682531128958038, 5.0318286636058982, -6.9463690764775503, -3.0184853792276383, 9.6041512562391542, -0.88225262267439808, 6.4852292067129724, -2.3181001351577644, -13.197351056460056, -6.8047677874499586, 5.3843074707174692, 5.1196343577870644, -17.820822197855577, -12.257015718775355, 5.1913937352654651, -5.0162460867599536, 9.9461758050913041, -9.7414598652248081, 8.1378256819797858, 12.564281794378495, -5.6365288176451322, -9.1029468332924104, -5.6355130288814301, -13.719331548944416, -5.8613058178495017, -9.2573519867695815, 6.0620773131346706, 5.8947778726542905, 11.265652594812099, -11.760986024368906, -7.7447348268870124, 19.076436411627338, 14.505720191829832, -9.0750817120358054, -5.2025480400034789, -3.1960162333402482, -11.659437264119374, -7.9842387274926709, 8.5980388295231229, 14.858752059828165, 6.8639263237417376, 6.0631638589074024, 2.7093921939507379, -4.9581002755473795, 4.4179924464321392, -11.144868427484562, 12.546476704938177, 13.606433000436612, 4.0208619807458295, 6.2408832155761376, 3.0941528835943455, -11.347668662075096, 1.9313877794966201, 11.65105372954261, -14.681336156121709, 7.2969958167198605, 11.59264621157577, -8.831465763669156, -12.759130509205734, -9.0714254556796128, 8.9948895559776467, -8.3736028555285831, -13.115027308542444, -0.21628815052066303, 7.7132708674061705, 14.055053470061472, 13.370601410874029, 3.3283307501026052, -11.9653642849229, -5.6440590777489144, -4.2508984635752549, 13.005398229132568, -11.5296140873405, 11.286858942494266, 9.8110403874583074, -13.263569122014866, -6.4297799553106456, 7.9672918799786396, 2.1515462864377719, -8.490571668881163, 7.5548103934198929, -13.121628447449439, -5.7901204816768361, 7.5171762671769704, -5.4216710822831979, -0.95140907859749113, -5.6992105242986471, -0.91737830538166343, -8.2053563541920571, -4.9100295191078036, -8.650093905400162, 10.400080220873763, 7.2829351923330092, 5.3481291290736603, -9.5017802399357425, -9.8687523002255393, 11.82329840938681, -3.1919281246249707, -10.124868011353035, 6.8360355157042028, -14.032171223888698, 18.148403140529073, -9.5731633683674744, 4.0453611070899935, -4.114147796015585, -8.4912512496909898, -7.9968991599686872, 12.922672789580542, -6.7315939113482681, -16.414580925551139, 10.417406116722118, -9.5795995211441394, -7.974905790034116, -13.727944328842275, -15.024522822723423, 4.9026741637309703, -10.662764572620276, -19.122555879539242, 9.217115643469544, -2.9661166430929642, 13.154514394206242, 9.8788596316167272, 4.2669291411005252, 10.239868792823961, 0.50928446540137651, -6.9544644508051245, 2.9807945285095245, -8.2689690969205181, 3.5499295458600972, 12.732733620631645, 11.61935741986054, 8.4137329217700945, -13.703811206903364, 8.5347899814747166, 13.941804015126218, 11.213731601489895, 11.550008187296406, -10.885532785062049, -6.0320756476152395, -7.945602926688589, 18.178022024827495, 4.2378890109434684, -8.419937978328889, 14.273513193884424, -8.1801725060827586, 13.690183625733544, -17.518387733265431, -8.6392702216784656, -13.927446312699148, -8.651607062718659, -12.712917239643309, 15.009792996204254, 0.15853783962329626, -10.462310302523948, -12.535567399778486, 8.8192610919401329, 13.066656030822525, 18.005415525102343, -16.007576967175243, 11.052574245331391, -1.1810954342450888, -12.762633127175347, -11.427571726679494, -1.8068233566411038, -3.8651597939182674, 6.9028603232990591, -9.9188843352819767, -13.607089316301986, 5.8989769757503172, -10.266998033319117, 12.946619994251195, -7.3433271276853551, 13.594756446262442, -1.4802835189751626, 2.9459432512420887, 9.0127453411993006, 12.34274116102957, -0.99056567004691576, -1.0211228826859517, 10.87969885601588, -15.669877762479704, 16.01192464298973, 10.789218207135569, 6.1523737440350752, 10.844976713696601, -18.796538678004055, -7.3982730413954201, -6.5213519941388851, -18.571369340190397, -9.6913300045155282, 1.0175474995943568, -8.0705533615168754, 14.251221745808563, -14.054781652173469, -10.906074448438877, 9.9932114606110058, 9.2204934537976815, -11.102967677965665, -15.06146952578059, 11.282374133246716, -3.4111780254645643, 7.3857075662336609, 10.330601600777463, 5.6502615537426548, -7.2776853004382911, -12.041052757776699, -11.046289906579057, -2.8519140526114701, -14.358095698121817, 4.6207960341417813, -12.368837238636017, -7.2377430770905917, -7.1306536664479809, -10.374815173234571, 7.5287331560402384, -5.4660620697715716, -13.441122458297521, -6.5962962593129824, -8.4930653390556969, -5.473757203858737, -16.42318744504734, -7.678902139771755, -6.1724752873292612, 17.227224731420481, 2.7992443468423089, -11.010643413583562, -6.0460973993600238, -11.514094016830022, 7.2250024006000091, -7.8426213114387204, 10.647716150585898, 5.7539405508617296, 9.727218535739766, -10.217949794886991, -10.197658817694322, 1.4534950594678713, 12.10682632749001, -0.51088307163622715, 17.710760548825679, -7.7470194812395397, -24.372971692573486, -6.6052580469808717, 8.826482956514015, -6.7872955696686779, 3.6389619856040674, 9.9237321927880782, 12.100520790781362, -6.8842633676573595, 2.8844843405481937, 13.672108533544661, -5.6338295492883859, -7.1944131155704678, 6.9746870716875398, -8.2312590639291852, -10.25205738032861, 3.9564297173352139, -11.16342115946062, -8.4103856915642865, -3.86058459788803, 6.7693385059336668, -5.5093604081945458, 9.9112156966838256, -11.829917793796264, 12.06350448472004, -9.8908904770778552, -17.725516485129567, 5.0710728367340741, 2.3733785626266992, -12.373813495428958, -8.2010211819107539, -12.301300323962623, 10.576063861117305, -2.4429576335852246, -9.8126936984062763, 10.720987427999063, 5.3468144210345949, -7.436093608771988, -12.085562323273949, 9.616133130427178, -7.2337117418265358, 6.590012489497771, -12.933819456719151, 9.0992320680750058, -4.7115096872358144, -12.444448996962361, -9.2431835291508904, 8.9400870181220906, -14.84487535501597, 6.9572855730306786, 8.679259378600257, -11.728117564638417, 11.57774167266283, -11.089244669418909, 4.4545841055164113, -10.471036138424958, -7.9268850048012363, 10.006310688982033, 7.3307629546995496, -0.70086411051328346, 3.4399790497959652, 7.5780305602750353, 15.952535940468001, 1.1236075069228646, -10.56946563987197, -16.455271371728593, 14.943737550316991, 15.270538328279843, 1.8246123975329285, -11.861267836196021, -12.897409417413272, -8.0295182717849976, 2.5085092290718261, -2.997769928368061, 7.7106512520538253, -9.7986312114017196, 3.8597867083890951, 14.715042117673541, 3.6286772784703238, 4.6804229784596041, 10.468442660987332, 6.0309605373905297, -7.2836222700763322, 7.3372979832476464, -9.125874340732242, 12.431154776537063, -12.652059501141041, 8.520614267493885, -14.669291764198016, -5.4369263583494511, -6.9272239504642288, 14.411503339302335, -6.5090359387453871, -3.8249288367587844, 6.226877964919483, 5.4872378813688707, -12.071286274848809, -14.839631376528764, 14.929556186968613, -13.550466083272015, -17.79040452965922, 5.2176515285150078, -8.4073909354978511, 13.152357868676932, 11.880434179671278, -15.154722117187848, 3.3578570344364098, 3.7992951070371852, 12.544849221875657, 4.4664223998223864, -16.02563218730095, -16.858694781271584, 5.8423687431569373, 14.717494305248145, -6.3014233972716296, 7.8246512200173655, 0.2490959399462627, 10.09774947224876, 8.2302536611399972, -2.0230125836350608, -10.877543890130998, -10.315299910440396, -17.814418691884743, -4.7984509876179366, -10.569732541659832, 12.468245506360125, -8.1994351150315588, -8.4938440033843783, -15.646554844352739, 11.104862652426069, 5.4254710709054565, -7.075912451839514, -13.038488980503107, 8.6283602505517099, -0.1897762834069755, -15.926221800862628, -9.4620561439869952, 11.028601034997564, 6.2202218101379954, 13.01838761394424, 3.8814455959068872, -10.571348353520641, 9.3930545668475638, -7.4486485829571807, -15.896920034679038, -7.6634637506716583, -13.744383772875613, -16.289316553121051, 4.2240572521775093, -5.9728476753105495, 1.4435980912356212, -9.482201269588181, -7.1075995048298424, -8.4496788887326719, 5.5233585701859731, 8.8295065675835449, -6.8321409197770491, 14.622652588625614, 8.1030077299922656, -5.0997213512339847, 10.535820013561885, -11.687469584683409, 3.0547169868379771, 8.210959869395893, 10.201179428221021, -11.658463276051274, -13.563724058479169, 11.01039677555352, -7.1382476676607203, 14.955134349802455, -13.750666848543476, 10.162311270235616, 5.7884645703783697, 7.3371242692507819, -9.6841606635170585, 5.466449250298048, 8.4163518309029381, -7.1508542487337046, -6.6797959016182888, -4.7449989886325188, 2.4393509869405792, 8.654752655597532, 10.070879973393719, -13.17581052395726, 8.5470611298539545, 6.660259185215466, -6.0653871786400737, -6.5193717691612134, -12.615899043092323, 6.700881216282939, -4.8478946577189745, 5.1988868211607864, -12.549358461765644, -10.045744010088018, -12.380860324318006, -3.8616068170109248, -14.465705737907983, 0.4164829268257374, -17.143567612135136, 9.487366827722223, 12.652721901108753, 0.7645899772346989, -11.920812995054151, 5.348021509175628, 8.3879926788022008, -4.6246359904401313, 11.089899173175201, -3.8332542947304775, -13.36196018971258, 8.2464982273107097, 14.657515986404208, 10.904966172392774, 11.533578255944192, -13.982006985588614, -11.973821478795168, -16.592644946389242, 9.2836692767439004, -12.678645783087854, 10.730932446196368, 9.5849200107862327, 8.4498461340685918, -8.6907116625889529, 14.156816081594213, -2.5856081507256512, -9.2993749691896994, -3.6239666126178607, -1.8399557052395836, -9.9970546829752251, -11.017332480853435, -11.692178962270885, 6.3025733321249016, -16.175906955071767, -14.423994620868056, -14.689511946206805, -7.2353003125032167, -9.3660212630661839, -13.858073820033896, 4.7709918994882639, -6.7026088232668739, -10.527782639004828, 16.58828557927492, 15.050247187970289, -4.0564185563228934, -10.640020339068798, 5.0431846567205971, 10.934348304548614, 0.75988821460881439, -10.291366703091549, -13.942020188031572, 14.135017480152827, 11.151498767692816, -11.537353350061172, 10.343082453782436, 7.976541387752091, -3.5774431227145778, 6.7912849734238856, 1.8417106851238594, 8.8764923317563689, -14.359256236175909, -5.6171451890921933, 5.9817930874266256, 3.2031461221092781, -3.5231009274983971, -14.863876345356418, 13.612377512426715, -8.9030335281364348, 5.1285813990983709, 4.8771312118802621, -3.1813763041012044, -8.1658030154444532, 9.2635478384894121, -11.938316318486482, -10.581389864174858, -9.041740376889754, -11.289532586451648, 9.8541909326330934, -10.813754378648875, -10.992626098956032, -4.2128060145436059, -13.803513190675977, -3.4047166821717285, -14.699309096179331, -12.322199151029571, 1.9847013546589598, 3.443351936013523, -7.7412573332668169, -9.4014738152531816, -6.0936722951459252, 11.249057062872248, 5.3612317349290048, -6.0934505412619844, -10.329491262921293, -8.3782268065652321, 10.610705115588038, -7.7383153101209938, 8.5683043797354852, 9.5214421313463742, 9.4646448974772674, -15.945188235432587, 13.571842719150663, 9.1766386061343823, 3.9788060864638335, -16.400242920289237, -12.152955170027367, -11.743525499640301, -10.778431692576483, -9.560949750398839, -11.274506489189537, -10.497378072608422, -11.313774108583567, -8.6889440492171826, -16.999837953521492, 2.8463220500405759, -9.3414733746083147, 14.505309388696032, 7.2740770646355823, -15.216612609375215, -7.7754295642857443, -7.9668693810493751, -11.838336074962589, 9.3302243430363134, -6.1546909317578038, -11.643770269023584, -7.3067290482575826, -7.6586644572207598, 4.1554355791738411, 5.5784827988725025, -6.6788226812914591, -10.099712087346221, -6.812608788772855, -8.6942723276748133, -9.1414982497263626, -5.5404435688554674, 13.782301424897506, 6.4913332097552408, -14.843570407301076, 9.1090159582398744, -11.810479272023766, 10.734632284091132, 12.106233609286406, 1.2074129428018001, 9.05135706765188, 7.0513320487712221, 5.7063731455704252, 17.827025603920255, 8.2204534825947988, 6.859838386896449, -17.066087459633668, -10.546186910811119, 12.544407506754297, -10.501953033608231, 11.631217929282226, -7.3247345033456455, -0.30451282566541621, -8.8097804299616289, 12.580754884209387, -2.4535950387210703, 9.2528280654920945, -6.6762373246501507, 8.5487856314147361, -9.8862934311079176, -7.405954429775278, 11.460818356885351, 9.4241123506707218, -6.0650535086957591, 11.749931801221361, 13.45158323366806, 8.509266618399371, 3.0990921451133864, -11.845686618745093, 4.6809017476948664, -9.0788995203187035, -14.154172714949322, 11.436663871420148, -11.686823110591192, -10.466322347645878, -1.8093094588126659, -8.2842513297508678, 6.998530934794041, -2.8130875381789773, -4.7458503858358174, 14.892214325455083, -13.297630549395505, 14.137398522674463, -5.1741407656371132, 10.811880263388231, 7.6909240450423546, 1.2020066622797796, 8.3882554040760446, -13.296889605096078, -14.12122762385526, -0.86913405214011996, -1.7012640446050573, 12.135944269100591, 13.696947616128121, -4.5178290393967648, 11.379039879071998, -17.142332699109016, -6.2502893853176538, 14.551005043468933, -15.922443449630226, 7.9749887358427554, 7.5006183839537428, -10.731307185445075, 11.828405368248815, -11.242740313773945, 8.6857287401789396, -2.3357416563180076, -9.2522949403141723, 10.057172114119057, 4.2142804964077794, -7.25445812349398, -4.7859211707096279, 12.212717205630641, -0.68060465039856421, 8.3585750011161384, 9.4355684709667997, 5.8736217498953929, -10.357680904873, -15.182609723791906, -10.528438249903205, -10.728845332160351, 4.4271186570969041, -9.5459159618972773, 7.698786708464044, -5.7616256574906473, -6.74427916594568, 5.0713712230747952, 4.9757324493057258, -7.5822193975454732, 2.1521506074067127, 11.702619296651129, 2.475868836880037, -8.5152128927626887, -8.8176272081621523, -6.7396490012107382, -7.1103087325178862, -12.249044472908748, 5.7223187192045835, 6.0785970538718885, 13.311388408274434, -5.1967232459428514, 10.616058764924363, 4.1131834199366937, 9.1157637550044708, 5.0981827919094043, 3.9623438215809581, -5.1277684895200872, 10.717366089367347, -9.6119167010571456, -17.671933631733026, -0.93466484572541053, 9.4511618566836688, 0.51145591409598801, -7.4842698912260595, -12.965780155817985, -11.049283246505306, -9.4204398537725336, 14.713331608978752, 6.1294522089617445, 12.762571544243462, 4.2519976479727246, 11.581799865407062, 4.0540310044195316, 6.7583036711124178, -8.4596629969850596, -11.555561625120337, -13.223361797635503, -11.022881346403601, 7.820188150462851, 10.050313550691401, -2.8748772822692796, -3.975284267526737, 10.165011610963463, 8.361153496598952, 10.23454765876409, 6.9861352278001991, -14.063066120834387, 5.5703634980353156, 4.5720288674742182, -10.208336872812145, -3.8841964569917136, 15.871358616035476, -10.375333061106602, -17.028934392886523, 9.6095097993772214, 2.8612197492337277, 7.3984151374847418, 12.882442279479097, -3.8593872267618985, -3.3505651418910092, 9.1400352361857795, 3.4607159608677991, -11.802758101252648, 16.131696084668302, 4.3485520924992915, 4.9299693363247012, 10.20608409504235, 11.350181288635312, 0.71079817132091727, 7.1011529322063716, -9.9921413971440192, -5.8089676277937103, 21.431868331238753, -7.0747060210352215, 12.069527047899687, -9.4828998378865119, 10.122263948520756, -13.538606127789073, 9.6375976702501429, -4.4100604567201094, -11.99790766311845, -5.976372779813337, -8.272146596627568, -8.9450436886845743, 1.9542103075796229, -2.5876227697187235, -14.368094001362385, -2.985471188013614, -2.478307267502168, 2.7456040916726456, 12.581031236480218, -11.4758779722525, -15.599590155208737, -12.992869206559288, 9.953747866291776, -11.025999481843595, 9.7008748889831633, 9.4677048052865693, 6.0665148799454283, -11.021027787278838, 4.1148665510329865, 9.9715457939675805, -4.524015231428284, 18.833454602793879, 7.5018420072802252, 6.536477074456216, 10.39532612887518, -7.7192567198190574, -5.8633746049064728, -9.4739325485451946, -12.966876834521914, -4.8932353347242916, -7.50082678824488, 7.9240662467055403, 15.473285728117284, -7.874821177550495, 3.9913525758800343, -20.203393732375613, 13.177667766939793, -11.905585671112627, 8.76829420558043, -6.6904194950549218, -2.0990812946584643, 16.352167450942488, -8.6839871579774304, 0.65535704062993771, -9.0914298192610481, 6.226432112620512, 14.414606788199343, 5.3327990949329722, -9.2825422873145076, 5.2444348695624967, -13.52476436519694, -10.565017103537128, -7.9458267805510605, 6.2385267794539532, -10.620897086888419, -14.02491825647715, -17.249193736529822, 21.822546537373011, -14.525572761291961, -9.6352912168501117, 7.7923236942745477, -0.43905931375127905, -1.1677511335028592, 7.9195608711842009, -1.7261157613467151, 0.81574419315180335, -6.6258630940789853, 11.446710993602048, 10.423767215464459, 10.131515821910522, -4.0813762630157786, 5.3099875815632895, 15.005238483277349, 3.9458100113193013, 12.997541564501073, -13.401349640520106, 6.0898523220056484, 8.5430795315739463, -6.727566986421512, -6.0976964106078926, -1.5514248251358895, -6.9251342133096534, -5.0010498589221326, 19.36294632958224, -10.995748094036278, 6.8230876895289425, -8.9816761374312737, 19.252689002798032, 15.018231032342973, 0.75032883111291693, -10.512852145797988, 15.952636394768637, -13.876019658000088, 7.4282002133627536, -15.007337649734009, -20.867628639436518, -12.864466413292632, 12.282886216105501, 5.6117260976193588, 7.7243055425354985, 0.74537471606410499, -8.3753274103443793, 8.7297402808334041, -3.8752359373415373, -7.8660891683218042, -8.8027160564205786, 7.7988010166838881, -7.8129632889899385, -5.8353090570942738, 11.438552747844, -9.8854956847581263, 6.193488211617348, 5.7060858140643864, -5.8417400083956581, -7.1659403388854175, 8.8621684734697617, -13.828395956746165, 11.58722476958626, -8.7757625064865632, 9.7638601085689327, -13.63897121774294, 10.692146632523938, 9.1954815513953641, -9.7262358263602646, -3.0742135000084518, -11.831625275045802, 10.346151064081882, 13.860225574621548, 5.3434462647847401, -12.667486708061194, -7.6071393527596891, 10.497824234551809, 9.1398524858692305, -4.8312688599490299, -9.6866353191391568, -14.936854315955886, -4.5645292398393735, 10.306087472805107, 16.435616799434957, 9.7618939189542857, 7.3359442918945499, 5.4777235052650965, 12.827631906540597, -9.3557044067803972, -8.6207571310957753, -6.9067986860795303, 9.4266173165645881, 8.2700014055707438, -14.396299560527304, -9.1945433850102294, -5.0742673058143186, 5.9363570201246212, 9.1825801770474449, -14.26016478123667, -8.9647881473585791, -10.999991358949853, -5.2643587807317358, 17.966460043223208, 4.5038323715849113, -7.3643627119764705, -8.0021495622334466, -5.5012765171131761, -8.6385795076142866, 10.642859565399243, 16.418157809689014, -12.558310319227193, -5.6944436186565675, -16.620579134203229, 5.2993074909249556, -9.5535858720998252, -6.194850562303122, 7.9283758132069577, -4.3938243314441445, -16.08461551423154, -6.1053020627578558, -7.8156662613007883, -4.2010902685294225, -11.260598796472106, -17.361798229363732, 10.523477968271544, -9.2997205134904561, 4.7239785905440819, -16.55663724338849, 7.336212674126954, -6.9284736037251049, -5.9733477242286268, 16.958437027673817, -9.3688626284447736, 12.335069283139083, 4.4003768017589344, -9.6375650205771759, 4.3025216992304607, 8.1709809734149754, 6.0840979096543046, -1.7791701081822009, -9.7212268065403915, -6.3728373407996992, 9.4709301635928664, -9.8099415495718265, 10.216669472304444, -7.9089613940445638, 9.0133309428613888, 15.233159549099527, 14.443197589960937, 12.315849008505751, 15.22683390790605, -12.204208274855294, 8.0545420942912056, 11.261686524342778, -10.088714704911705, -14.758394330397744, -8.3506925495196622, -5.7190575904160488, -10.474095362096637, 6.7558531383042801, 10.839875782803038, 9.6223187492013871, 4.0011315315627671, 5.3452889051100145, 0.29628684358052387, 10.260560792716758, 10.010269925150098, 12.309818259037518, 8.3443036587520112, -5.4014577244395916, -12.309450717768483, 6.227119823086781, -0.90098300040336077, -5.9574142236058796, -6.5290358544134426, -7.443075641870017, 9.5718761708906559, 5.9045525168917088, -14.09287394192167, 8.537557668616758, -14.160598968888243, 5.8051719496039951, -6.239975019204187, 7.4524259174698209, -7.4731349725176219, -8.5239733925114809, 16.110254200184002, -10.257968713373153, 9.5898379203607735, 3.4675905258102322, 8.1300367938993361, 4.7762632339122959, -5.8974433337845085, -9.3140122423426206, 3.5847848816848376, -9.5355250106758724, 8.6839175133173008, -6.6948323819511488, 6.7933016290691377, -6.3800902026507824, 0.76093699061175468, 2.6435457529778015, 7.4138748481937027, 6.0247308500592567, 5.9280863177297123, -3.8920878288506016, -8.4621386416944677, -18.750651564949948, -7.6188990491921116, -2.1334205811758622, 8.7540093304816082, -9.8600851053842149, 16.342033110995256, -10.800872299968921, -13.998298573757474, -3.2934871871896396, 14.06180118603365, -9.271874228911658, -11.048285130582032, 6.1595626190926716, 8.0570216147192557, 0.66340001966893403, 6.5132884000227351, -5.4201122315987309, -9.7412562635013984, -7.0486139617141514, 16.981384687745692, -8.7022380510622721, 14.647877845477861, -8.0820055541788722, 7.2226523022245761, 5.3790569210687584, 13.728807132743302, 8.5317048523035623, -2.7316549253863927, 5.3846139594020226, 5.4103146460176523, -6.694268736004001, 8.7300406717059573, -13.347383859719848, -8.335174873152722, -10.945696086225201, -10.4875598953527, -6.2891459907155456, -9.3671321709341981, -11.585498988590738, 6.512870728010193, 6.33239714027453, 8.7682544573530521, -6.7439993019333704, 9.5026784978124166, -7.0246760343330656, 6.4372813340255446, 8.1945894173399711, 10.262887249545706, -7.5060931723177706, -14.674750300787338, -13.287289997793177, -8.4928309129257595, 7.4563888548291644, -4.5195874938690226, 8.5442291590063935, 9.7115273312730501, 15.092119744113154, -6.4263051953856785, 0.12831365323535676, 8.7640439297438597, -6.1460218943241305, -10.889755958467752, 13.67769695151666, 6.312988951937812, -13.227320725213115, -11.784825668882982, -7.6748667604861192, 7.7787450544407344, -9.3711259762266828, 13.023365017019263, -7.0200584128511876, 13.494925467734497, 4.2227722997626005, -13.760223253172747, 6.1777636365323456, 12.067306433588751, -9.9155428829691132, -6.5766064428842856, -15.151662906193899, 9.6988065214723864, -10.152731302282174, -8.5735676931961322, -9.9418795299730185, -6.2260760507460198, 9.447544122507308, -8.1319644337468215, -4.145324424570318, -3.5485961822808565, -13.467769122062073, -5.7514070303621585, 4.2372927865136871, 10.111694661148967, -7.4186471554037379, 11.430760000153063, 12.312843067890855, -12.810688665750249, -1.4448074235360808, 7.986361807585828, -1.7676683131382003, -14.521209725348982, -4.352705664193615, 18.914853195668275, -1.5113121651615482, -3.6397864185997131, -8.6196558356553385, 4.1199321080626019, -8.4888399293551817, 0.57614759104880209, -3.8170562650576274, 6.5118953364681147, 4.0953213386352472, -5.3421050165325257, -12.272356482934088, -3.0358640779517354, 4.2481637384966975, -2.7752337082527849, -8.0160326885318369, 9.5768553793879043, -1.8524775210440534, -11.009861394679287, 8.9742068648070266, 12.471334080830026, 9.9992644688047552, 8.0039800551702207, -8.7981872925635614, 6.6433407975833738, 6.5480704488332835, 7.2841246634294423, -6.3252439319780178, -6.0513426125451124, -6.3988334931556485, -17.469331458693546, -4.580254889517116, 8.9993454898016569, 3.2238207283793323, -7.7799510625287303, -13.803751678166556, 9.7121916487763045, -8.1746700971358059, -8.8126126733994941, -4.8155492973679186, -10.804453969532291, 7.0086143651800121, 3.1481410707654631, -12.810183673768677, 2.3362046780839187, 5.744619950986845, 3.8643342874084374, -13.249939418679734, 11.415744222471059, 12.554737671029878, 9.8333778447831257, 5.0957400772063437, -3.9991407502674661, 9.8345770583999279, -9.7368996360840274, -19.449417624721992, -7.5133274868764675, 6.0619042605430966, 7.197156700662827, -7.0063836107615485, -19.263860108465263, 13.028208109141358, 7.1331219897936977, 5.4720228485501652, -7.3579311406347925, 7.1801636071660138, 14.640572831964421, -3.8340913302192701, -3.3062445113231744, 17.400159670258972, -7.1681505547822413, -4.3542281808553351, -8.4546164816007607, 13.421193429578857, -14.905121149794782, 8.3143744117862095, 4.9730046756217972, 8.3532232015837344, -7.5969825424753346, 12.3177910080973, 8.7607875220531426, 8.5127047792303561, 3.5774587189097899, -9.6494548210828786, 7.5331539937229897, -7.4747114284701679, -8.6591660587053916, 7.3468316363038637, -3.622337543593344, 0.47384090625185044, -6.0463560480716252, 8.0499483448215017, 9.7022755442800293, -10.776004671468062, 8.3543427603924503, -5.5360568466131905, 6.0186808121336659, -7.3543970398820848, 9.2806086183805689, -12.230546104506987, 7.4673092848302733, 10.975472812952574, 6.7926415721593818, 4.8749321283736755, 9.5323516120815874, -3.0280886662753885, 5.5571898549900514, 10.226559964818154, -5.8034190385368811, 6.5444311969384019, -9.130374827280793, 15.819448485436817, 5.5538576215556326, 2.8637826501217618, 4.0706674231610558, 6.4597011042272623, -8.3735378854139135, -9.5667300995851061, -13.845901714228189, 12.714093428899416, -8.3628461969588557, 7.5987675327409425, 5.9272125723131186, 4.6950385206484189, -4.8195825770873233, -7.908711363482686, -6.0290697566338824, -8.6859336035752293, -4.5193059923378351, -4.5940077637319696, -4.3311584091869832, 5.3536488354562275, 1.9921280360174241, -9.4633153479117045, -6.6570051760469031, 14.208357863252012, 9.4845107231608647, -7.1832992233853066, -8.8475487049318655, -13.630287949249563, -6.0719107719352952, -14.274798405390152, -11.162105305503859, 13.054901490270078, 12.995371746588807, -13.146715820058548, 12.945646134893682, 3.0460739976722446, -12.155229015360904, 2.7412678887489506, 11.780611735174173, -5.3341954653614927, -10.032480770112713, -5.8447538785525053, 0.52725472542845364, 13.379456926012971, 9.6135830134952744, -1.944448284069229, 9.0502993001659355, -11.346127451101133, 4.2434870682337369, -9.5043367843183457, -2.9775157830606012, 5.4193649803215109, 5.9212605221007886, 6.8739591477125153, -9.3618138585411454, -11.34734301929147, -2.8580136600449677, 9.7314938797272301, 10.716957084696832, 2.261487615173849, -11.936472547545375, -11.596497065616539, 8.1683014049841454, -1.9741314291525349, -3.8079032870338203, -18.998387033650793, 14.785213606318443, -2.4675987407306512, -12.092457768834166, 8.3055089082183038, -9.8880041321383381, -12.17693749962149, -5.6119106856770609, 9.3346742365750952, 5.9978824704833622, 0.13754021975113387, -14.894732183908136, 14.747292229007831, -9.7097733323647439, 7.1041665937562009, 8.747982309638612, -1.1124715705618149, -1.3453533016361534, -7.2336827315963976, -3.3065754079116902, 10.610359888132521, 6.439770888743964, 11.42420401634142, 6.5388842458764689, -10.853598132676623, -15.353822721495742, -8.0675862924724751, 14.459019981256141, -12.566396596207603, 3.4205186262164231, 5.630487549883056, -8.073684341188935, 0.82126057392054652, 13.882060246971731, -11.094144048902541, -11.389801550560342, -10.3187260289045, 2.991571648758196, -6.4911734708363165, -11.245496138683489, 10.9851776336762, -13.130504876870628, 3.7733165504957942, 8.4076079303113911, 7.5529546967120051, 9.1048736341912768, 2.7287083950923141, -6.4019633593747214, -6.7703960792021753, -7.6283872602484184, -7.6359394699956251, -11.153289601654617, 4.0727793884727168, 8.3062884746691932, 15.72392064712384, 0.9811577968163786, -11.722310671012934, -11.342923130703641, 4.6538782013854689, -7.3739066993524025, -5.8947067956510093, 11.486762613574625, 12.413880145399126, 10.786268654735865, -14.830950842039924, -12.718664091764236, 11.838893611398694, 16.960744319691706, -0.90885433404131177, 11.805632469674961, 8.787147329142396, 7.4670599584679005, 13.783711428147573, 2.6889832573487715, 9.8277282208337393, -12.621979239155044, 11.900463485129047, 7.3974913674936378, 7.9790082301381764, -18.460977129782226, 9.6868989422260476, -7.4849707679692381, 2.791279213037106, 5.9072811103444005, 10.027746084723706, 5.481378194108391, 0.94657543605496242, 3.1638084348680802, -11.565804912112132, 8.1295825065418228, 6.2454385368905463, -8.7244225637155086, 9.2949740971114814, -15.413745662976126, -9.2767171742637053, 20.883637553321279, 2.1729042705598971, 5.2123425513190229, 11.260222333457566, 5.4759025599371576, 8.1537344500122764, -12.294121929916995, 8.802476739158374, -20.703918322925325, -9.4123075195898913, 14.838015503157582, 8.1809389421993437, -7.6381202529000944, 5.0731354695422288, -9.7523696522120105, -13.519239387616903, 7.7323479369959101, 12.148583040284464, 5.4807070910189717, 4.8696229713233139, 5.0087903276064836, 6.4402113569592467, 13.277426855835845, 9.6524651881369721, 10.826902095836219, 16.183489895274345, -9.6318043844967534, -1.373132442179763, -11.219593888898418, -15.004319828107285, 18.258393722812315, 3.7354456310459385, 8.0651749744359105, -6.5164044554554748, -12.565266643553137, -12.030885912645394, -8.5404810535779507, 12.314165209697041, 7.2947873166397219, -10.819275536058335, -8.0129408622894012, -3.8121662128657552, -7.6091124585846721, -8.4798365873122474, -3.9868453977970675, 11.38629202057937, 3.5714802941824, 2.9518831049273677, 6.3322250488086071, 11.580034774188221, 13.479927163429085, 2.0786137569475098, 7.9330224326080057, -3.6943001859225055, -3.2256160391289095, -12.811450358156192, 13.541505165687818, 2.6411149013180362, -6.3489619114245244, 13.373338952003571, 12.628299743258562, 1.0027687748564038, 9.2077227922659706, -13.768254699816865, 6.8324600540916247, -14.524379303203943, 9.2715316925285709, 8.7678396133255916, -7.7000840765938703, -7.6752994649649313, -6.9178464084480851, -2.824297046557938, -10.067962153214038, 9.8382780470022801, 9.8343360207768367, -10.442346656794413, -11.531825845771756, -5.6955603852302623, 7.9952115376447042, 7.2796481632297372, -3.9815702225402285, -13.888827599999129, -8.7028698626538308, -6.0635186121417952, -1.0917426165389645, -7.5444189349932813, -13.502585170286313, 5.3738984196649149, 5.1002418292985094, -2.2415640749653791, 8.3993581378656117, 17.872303247028064, -5.7930453662663712, -9.5610560588597515, 8.0594903059030294, 5.9955468570765671, -8.4016643820784811, 16.017479926774133, 12.457791465479348, 14.251050296430238, 13.550966058757862, -8.762120073439311, -19.568799520529904, 14.473633275887034, 4.7150108398434316, 17.622896812791758, 8.5532109821391256, -7.8861564007563967, 2.8018084587073706, 11.238281768369326, 19.036214400042667, -12.627994340787289, -3.229926146308185, -6.2106083456766665, -12.029815325633603, -12.732678066605525, 16.114114027765005, -8.8878875737603433, -9.1952288940063198, 2.9514348736209386, -14.875969949421576, 7.426537438524826, 4.0988218779588257, 5.1048469008081083, 8.3561664083509974, -7.1680838371486972, 0.079559302266173665, 7.234447616829998, 9.2153180384359938, 11.380502523658766, 3.7813665464468564, 9.3571471630839476, -5.6198950965916659, -2.6112846832626295, -13.074922193350705, 7.1458325396315745, -6.8553238201936848, 14.037347515845747, 6.1114574644258219, 2.6233447927944442, -6.6962191818230385, -15.054560815064955, -3.8509653059595634, 5.6193134186600444, 8.4632418525580135, 9.06084843255511, 8.7155312766304451, 14.146656363113056, 9.4485647712524159, -11.894790263269002, 6.3630883640874796, 6.0659222594215532, 9.3423771994935656, -11.56898779218068, -12.569317170483185, -3.1542401369229229, -14.317618053977442, -16.07713062656423, -13.866270731830225, 8.9731628045127234, -2.7568654754219311, 10.650056946180007, -0.38554919912492391, -19.636918428478758, -7.261084813408365, 18.261599502237281, 4.365909470450525, 9.4604701736004575, 9.3379768195852684, -5.9721332777841125, 1.8392337494849149, 12.236588220433115, 10.729755869202716, -5.0163355160529157, 7.8745146479874295, -12.210717308250283, 9.9053843786672573, 4.3176048616878999, -7.1321033170654076, 9.8376099896153644, 13.994875675654404, -11.800822210877568, -12.467732532409068, -4.8096053846346782, -15.806886200214143, -16.011053902031289, 3.3108259217896991, 9.3708906824355758, 4.9387906035182194, -7.2811664484622529, -7.2283659694812323, -4.3994107454794076, 13.986557692605393, 16.267589496305209, -12.5211237853249, -8.6162733581098614, 11.875897506788261, -5.7924040049014529, 9.60395357854315, -13.371234187638548, 7.4044876769030976, -9.9169764629346115, -11.960026798255779, -5.6929530819152605, -14.080996179546117, -4.9741440758010285, -7.2894457453898616, 1.7385165163304241, 10.659988023147882, -1.4616437274123262, -10.074637029156758, -17.086127613435742, 12.235716666711239, -7.9575522168496349, 5.807625236075423, -9.2779276010226894, -16.480345338445041, 9.5297786981975108, -12.287759229285887, -5.793455825490601, 11.046928184816098, 12.263531584491689, -15.868613864191206, 6.1089590101381299, 7.7043039642206841, 6.7725058819006509, 0.19765926454723443, -10.92190123421037, -8.6903416862217444, -3.604954070470813, 10.780882529813848, 7.6342821794581255, 1.819027960022801, 8.9622472070627612, -3.7731185676641705, 2.6511830669363676, -5.936256145443763, -3.5065708446633179, -1.6756694810431396, -9.4457045728120921, 5.1176087336867671, 9.0843869892318665, -4.9165468247185249, 9.6190501542416023, 5.7720688303614107, -8.8665231351704143, -16.776765049597191, 5.1935200585542409, -7.0317717992679913, 8.5952975711448651, 15.701379400382201, -5.1747900955843287, 6.644409479106538, -12.294043736596755, -15.483394542555223, -6.9161043885800755, -16.902160692468406, 13.140408586007654, 7.9585367038084494, -0.60142488467217781, -10.583573691246794, 7.6570812407643905, 10.488467203766263, -12.229594163883426, -12.105180821633089, -10.100333917660924, 10.582889173673999, -4.3524138084056574, 4.1598294177868027, -7.7208623056787218, 9.8373959423124191, -9.843437056863948, 9.2758547221503864, 13.917929858415311, 9.6348606573169207, 6.1603576344825903, 7.2761550553448275, -5.6132644264075031, 16.925921888188984, 13.099232943399601, -12.169951256692608, 8.0341465714582103, 9.5080586839310293, -8.9153040306547862, -6.2778930359354987, 0.65702865949253608, 6.1455975831103666, 3.4956736733487177, -13.101966614043903, -8.4917541060921486, -7.7703858331616402, 2.9540207920840338, -2.8250454453694225, 16.471572201031012, -8.3401753077338174, 8.5209392200398799, -8.4562622463700912, 5.3451445327350049, 8.3227551961577149, 9.5505384761710648, -9.6168853444985132, 7.8088619634040271, -10.010194534199005, 10.407541359870157, -12.730901681260953, 10.062237956980878, -8.301093581147164, -11.221782089013969, 5.0699226682185836, 6.8670809315755763, 9.5183305660198574, -12.477293633009369, -3.0829984725185011, 14.251075736126907, -0.50381312202666373, 1.3945668674871461, 4.4380349292124333, -8.4792849992484687, 15.740298722260704, 6.4916661990457039, 9.8781328856963952, 14.524311425947424, 8.623227064986775, 1.82594923740208, 8.1658888991281113, 19.519909829772214, -0.71626812905103776, 1.7182300090879543, -8.0056305624195137, 8.8667806307632393, -6.8903486607996696, 5.3931378831660304, -14.284745953661838, 11.800779205285183, 11.828892295047666, 11.579327959504184, 5.9644626407280574, -10.637566489206868, -6.3308930175168046, 10.362896991246821, -13.136681551103671, -10.69114929291889, -8.2804076555200332, -8.7620956793565572, -8.3349590113674843, 6.0390086996968186, -0.92206940007654714, 16.688147291793179, -7.7396944231238889, -10.556885976235911, -5.5034713893873217, 10.684323799177031, 10.164740010619706, -18.644906837500962, 7.8255279920941758, 7.1184183927575999, -8.5879829996361785, 10.058536284915368, -3.9577147638427337, -9.4390455070755355, -10.813502747434075, 3.1725069430189179, 14.646645070268773, -6.6958720302719321, 7.1891012020482057, 2.776770380964142, -5.3045752723276198, 11.024688310314966, -8.8716706651748609, -6.2182144207648875, 7.2174155723591822, 9.2363647659736916, -0.13811663085025644, -6.5095852199241193, 2.7850661520962201, 5.7288466875807895, 3.8404238060339386, -11.979694823507765, -8.1566218452888641, 8.4872181623141802, 4.0684730663558621, 9.433119896225687, 17.452359798566942, -9.1852211978356539, 3.7813711040017632, 13.687886395835575, 8.3110503099043083, -12.263855365231695, -0.29265821325473718, -5.7786710506977288, 0.32000221107421295, -13.152220176187292, -6.5995903240006717, -13.649334703564579, -7.5516513340805105, -15.16406327996164, -6.7664832291371457, 9.9511431024063146, -11.833825853245724, -11.726480937964023, -4.6960938337568416, 3.6909792826776235, -5.7241654435325771, 0.84009221550172219, 3.981445765587416, 8.3193977689219309, -14.855487044550641, -12.13768399449228, 8.2575189786919658, -12.482209307351347, 12.288265749008579, 12.92588605732125, -0.89651953932604156, -17.178851924529209, 13.465060130471429, -0.66179931634497746, -4.7361380949519907, -8.5915497494217874, 9.8633923545024036, -11.075503948766817, -11.521258634171812, -16.937563321814299, -8.4089961555477153, 10.316744468138424, 11.068755254870558, -12.812559137681774, -11.716000182253042, -10.794814834414403, -14.695829972179469, -5.7734367211811755, 19.281663549262714, -7.7079679114509911, 18.982133221850518, 6.7278265135517552, 9.4200950070653935, -5.0327780626629206, -1.1472749532062567, 8.9655615288611052, -10.289968622568939, -4.5317886320427014, -5.0717832150149214, -12.403158065152988, 16.054879478569319, 11.910769204629043, 8.8721630995550154, 12.946670225247273, -20.040326823281728, 15.061437997065909, 12.371159663686912, -5.2434241432319393, -6.539600733678907, 8.9759004731301122, 10.399696431036546, -9.7820158235043255, -1.8655127741351087, -7.2564512028104291, -9.2402317505484497, -15.743596514833451, 8.0518221334585913, 8.064389141916843, -5.1750464722524647, -1.2577099412771857, 11.088648050953193, 14.734664098438651, -8.7257834129372487, -4.9071340910761805, -7.2288497019818241, 11.368753439780507, 11.259515603467754, -0.9190234527098583, 10.508309728639846, 5.5014236641516137, -1.0062376510942861, 3.9510038373896794, -3.3772476520373296, -12.298064413396816, 1.1518807046710942, 9.8347990668982277, -9.6697877164226895, -5.1708006319540161, 10.90534178699129, 9.0780310964231923, -11.06717326378323, -10.193153698637712, 1.6370922062264599, -1.599701860652494, 7.4493340597532782, 10.079750519485344, 5.9817167134058051, -6.1883642950981734, -8.7859917448021054, 7.6925693496530796, -11.726693947959594, 1.5292664230077266, -3.7640503328337047, -9.2026303785959076, 8.3703384923817321, 9.2968574133785165, -9.0282964165522213, 14.082662142896044, 7.0391904432891064, -8.1892402659133481, -8.494960679412987, -8.3171594195215324, -4.1204583607408765, -12.464929795412097, -8.2800259108270922, 5.0158695467591343, 2.90504266938304, 5.5802620759772603, 9.6053945607379294, 7.4665086294967553, 7.2836197716168538, -6.0797636096551519, 5.9192672325212143, 4.3197502963078556, -2.5794586298505413, -8.3804827856018385, -5.7616389244014083, 7.5165636982133597, -3.7871806468757891, 2.6957388838195038, -3.0339814791522679, 7.7390014359139343, 1.0179611498135317, 0.57428282151728316, 9.2486809887277968, 8.9851820183067517, -12.322228892543235, 2.1846637256927366, -6.9268224211182101, -5.6465263096341207, -9.8609073169739414, -8.0437109222330996, -2.5924823061626299, 10.799267368908426, 9.5532367964485942, 2.1510949897407339, 0.72813586085734983, -7.6316236927774765, -6.6634161974825536, -7.6995131312161114, -2.6469146283491312, -7.8927242011683072, 7.9686594739655217, -8.0858268153723696, -11.113628935027652, -4.2312391545249435, 7.400536752330261, -15.878877108958942, 5.267992480772417, 11.16296673206628, -17.540164979801386, -14.801126830818111, -11.385201143366997, -14.508310090705075, 14.464207778841862, 11.215905228606482, 8.9532196390944634, 3.1058203222772014, 8.0753828772231113, 10.559485384240654, -8.2414912742823354, -11.714805939566189, 4.7281042573450431, 12.657353257890819, -6.3043093049399248, 5.067000914225444, -14.714628033981958, -7.7444814248447615, -2.5025562382741042, 13.564851064978582, -9.4328409951276662, 10.04126088038934, -10.570084081595921, 2.3444801610493466, 7.1831276221853866, 7.404162681313343, 1.1684082688282307, -8.8884680285241533, 1.9400943416397112, -13.196562462363692, -4.5705203572273359, 11.003636571194738, 11.468673888105736, -10.534610194739036, 4.4477979444487845, 7.3667611650061362, -12.044187016767467, -11.396051178941862, 3.9462512050906744, -12.988661501036244, 10.545881026800801, -8.0309289513402735, 9.9370741830104734, 13.654579804016825, 7.0469488853837321, -10.938942295813185, 5.1800344871423132, 10.882232153707738, 1.2710853105543087, -6.5661242949766816, 9.7776412282696459, 13.321850745505881, -8.1153422577009291, -2.2941713421233958, -8.7097542589155221, 2.2618606797252978, 3.1810406025700315, 4.829995467844082, -8.8230523342209999, -7.8350849175265527, -9.1156429568037076, -11.442019665347123, 2.2127249998070249, 18.018245968154236, 6.7919203279388967, 10.818120665998064, 15.957114328595093, 9.436472994391762, -15.0724442489973, 10.177531220212931, 8.7382348206500033, -7.4439716572652967, -10.135340539629416, -1.5478693068716267, -6.2520881203409369, 21.51870984833112, 6.7814496888686202, -5.4629593689724354, -1.0810664038442734, 11.680093350196586, -1.1684404824410481, -8.8192804660387161, 11.947180907432026, -11.865540708697406, -12.073158010228243, -9.3168616660647103, -10.855717378744718, 12.832277402471462, -15.233827235544979, 3.719489187613028, 12.974696537296685, -8.75959465422536, -2.4475947054420195, 11.313184053568827, 6.9182165488811229, 12.123675956468196, 9.6442923820443145, 10.799907622549545, 1.3696427348286129, 12.109212710737127, 2.6404947713803306, 9.5435762973738267, -5.4268755145327745, 10.974370356637689, 11.459181655827159, 10.228613791177938, -2.0376202581586202, 8.5519223504193267, -15.144108617549279, 10.208111627929036, -16.074632706297336, 9.535346082793712, 12.968894012265515, 4.2926497043948793, -7.6447760416419124, 7.3591604897068219, -6.294066487171917, 8.6661482650382133, 4.3524844886549072, -9.6284187314739373, -16.389868048898698, 14.370574991274481, -8.2963813089615268, 16.504114329831857, -8.4564658970066731, -6.3969858495492078, -7.0522130158545027, 16.328014713505098, 4.0676774938327931, -8.8805902890220576, -5.6438005548253818, 10.887856323753418, -13.497382772819085, -17.229682704447541, 10.177341730428909, -10.959196430060141, -15.892999214486872, -0.39312548358593402, 17.548662000796629, 8.138747505659067, -11.081466337015, 9.3549081143588229, -5.2668052531909293, 0.59145215464277101, 13.865804154173629, -6.7446135707105945, 10.591472647241186, -6.8775928522394087, 0.79035105716724385, -0.83434363179526505, 13.426811179256797, 13.480253964577903, 7.9579945693584886, 7.8687287842784803, -1.2711852125721312, -6.5831626138029433, -10.255988526378117, -9.3721646222445631, -4.5483019698635951, 12.654546996958775, -2.2845772848784054, -13.395748226685187, 10.227730333720137, -8.9275038607977386, 9.2096733075692399, -9.1994549499155589, -4.5768838702423018, 7.4336970353205523, 6.1990136188764922, 5.392562974045604, 6.8615159418299543, -9.9148725697134683, 10.272013543022926, -6.541146389868957, 6.1996539988491746, -8.5702789915391175, 6.0710850780527128, 0.41216255793753664, -6.8452494187073416, -7.3698306482120808, -4.3788198137924814, 5.254192997316685, 7.0651978737141468, -8.3496697717376325, -15.541186410630397, -13.361062248182593, 11.869712905857645, 8.8858662456220436, 2.315280646740792, 9.1370562156627635, 10.612212040886574, 15.723923545841364, 9.3000796832012966, -12.203790919241875, 9.5229433645020229, -11.332560886601259, -11.799762316157022, 8.6718707861873146, 3.4390494326490342, 10.948206478975262, 10.351083327208633, -2.3551385999606347, 3.6593868571158006, -10.912461508095474, 6.3601915796808566, 12.644105697007012, 8.0987317607631102, 6.8425116090817673, -7.8614337809266139, -16.777952262404956, -15.092829035089149, -10.867283176676434, 9.7617585972043095, 7.0699740006630494, -0.80345056050581032, 7.2341098943011026, -2.7901743760803868, -14.023920253719963, -8.6493250885626658, 12.119156062865828, -12.565363519164727, -6.6257256922764087, 9.9530063133378111, 6.2285641482405287, 8.5890710113124502, 10.901661163934543, 1.7011000225296526, 9.2328185698429888, -2.5151197107048353, -0.78814118951465995, -6.3782804075339934, 0.77016194990540299, 4.7860592575330942, -18.091131028655795, 6.6618347947308489, -4.5537746303503699, 12.906362988375243, 6.6637236513957019, 5.4194732758517778, -5.626683563346548, 4.8295291548347352, -11.904932030289029, 9.9944164460741938, -11.027348899069844, -0.014743410131345848, -7.3410368137184197, -12.558702052466645, -9.2966083471503538, -2.8582301845790048, 16.122229949617235, 6.0332133243788979, 9.4423884847579131, -6.7953848219405604, -8.640997496023326, 11.564755524473357, 7.7370575077503672, 11.178600690994582, 9.6609341268345741, -5.0924071871300569, 2.9472182219982841, 11.322674214116185, 17.636604816170465, -8.112421382991716, 5.7980976514734257, 10.587871354585735, -10.207529594090163, -13.012906685255201, 1.6439826301840548, 4.7959168408892552, -9.1817793609379343, 15.910744159295755, 11.988413488939839, 10.225499838967904, -2.1100999951643771, 7.7773391391119979, 4.2070274590049737, 3.1789918079199362, 11.389698381773869, -5.6797986359782069, -4.7261529062162424, -6.1926650154600731, 9.5097255166801595, -4.4005426737892748, 4.8284348550831577, -7.4035564503513553, -10.371755556185054, -11.138214834764621, -11.479591917367713, 7.3492465579271542, -8.6401023000535666, 2.4737379805053212, -8.4391176745455763, -3.5699286239866383, -8.1254703716775829, 11.948227614312263, 7.880462510583679, 1.8623842706739999, 7.3888689386136646, -1.2896033177393418, -8.2116493851785464, -9.0121076446113531, 2.6038276518722672, 7.9944375021940459, -4.3649859784435145, 5.1704186172538593, 7.7846827735959723, -0.51775021699396251, -13.814395914977867, 11.155615752700793, -4.0116122940272048}; const char H_2064_516_sparse_detected_data[] = { 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1}; codec2-1.2.0/src/H_2064_516_sparse.h000066400000000000000000000010111445607075400164300ustar00rootroot00000000000000/* FILE....: ../src/H_2064_516_sparse.h Static arrays for CML LDPC codec, generated by test_ldpc_fsk.m:simple_ut(). */ #include #define NUMBERPARITYBITS 516 #define MAX_ROW_WEIGHT 12 #define CODELENGTH 2580 #define NUMBERROWSHCOLS 2064 #define MAX_COL_WEIGHT 3 #define DEC_TYPE 0 #define MAX_ITER 10 extern const uint16_t H_2064_516_sparse_H_rows[]; extern const uint16_t H_2064_516_sparse_H_cols[]; extern const float H_2064_516_sparse_input[]; extern const char H_2064_516_sparse_detected_data[]; codec2-1.2.0/src/H_212_158.c000066400000000000000000000224561445607075400150010ustar00rootroot00000000000000/* FILE....: H_212_158.c Static arrays for LDPC codec H_212_158, generated by ldpc_gen_c_h_file.m. */ #include "H_212_158.h" #include const uint16_t H_212_158_H_rows[] = { 26, 3, 35, 2, 7, 22, 4, 1, 14, 11, 12, 13, 16, 6, 19, 22, 3, 6, 3, 19, 7, 4, 25, 27, 12, 3, 24, 11, 7, 2, 7, 16, 3, 40, 3, 28, 1, 22, 1, 19, 13, 44, 6, 5, 14, 25, 24, 39, 18, 8, 46, 12, 31, 22, 9, 2, 27, 23, 71, 5, 11, 56, 7, 8, 17, 34, 47, 55, 56, 61, 32, 25, 42, 36, 7, 21, 10, 23, 51, 77, 23, 5, 27, 15, 13, 22, 43, 21, 17, 61, 4, 30, 45, 33, 37, 22, 30, 54, 8, 9, 72, 53, 35, 46, 29, 27, 48, 66, 55, 27, 15, 10, 38, 32, 80, 13, 16, 66, 14, 31, 20, 49, 60, 57, 59, 73, 46, 31, 43, 62, 9, 26, 15, 27, 55, 86, 28, 11, 49, 33, 34, 44, 48, 27, 18, 67, 13, 38, 61, 35, 52, 63, 61, 84, 20, 10, 75, 112, 58, 60, 35, 50, 57, 67, 70, 29, 20, 17, 41, 65, 111, 53, 18, 118, 21, 33, 53, 61, 63, 74, 71, 78, 47, 39, 45, 67, 87, 36, 24, 58, 60, 88, 37, 25, 51, 38, 45, 60, 52, 32, 50, 69, 22, 65, 71, 41, 62, 76, 82, 89, 26, 22, 80, 118, 83, 93, 37, 54, 62, 71, 87, 34, 47, 29, 52, 92, 117, 75, 41, 121, 59, 34, 54, 80, 75, 100, 75, 104, 69, 50, 75, 74, 89, 40, 25, 69, 64, 105, 53, 44, 104, 39, 66, 68, 55, 70, 58, 91, 71, 75, 124, 55, 103, 83, 85, 109, 49, 28, 84, 125, 84, 95, 42, 55, 92, 73, 104, 78, 55, 115, 64, 99, 126, 92, 68, 130, 94, 40, 68, 89, 87, 103, 77, 107, 82, 57, 78, 82, 91, 55, 30, 81, 67, 114, 61, 70, 125, 71, 95, 73, 61, 83, 64, 98, 108, 91, 129, 59, 104, 123, 90, 120, 77, 36, 103, 133, 107, 103, 48, 56, 106, 101, 105, 98, 85, 126, 110, 102, 133, 104, 84, 131, 125, 43, 88, 94, 108, 110, 81, 110, 96, 99, 88, 86, 97, 73, 42, 100, 97, 117, 76, 81, 126, 72, 123, 79, 63, 108, 79, 106, 119, 93, 132, 96, 134, 152, 137, 124, 90, 94, 123, 146, 115, 119, 74, 65, 112, 103, 119, 133, 93, 127, 119, 109, 150, 114, 113, 132, 128, 44, 97, 96, 113, 131, 98, 111, 105, 124, 137, 109, 129, 113, 77, 135, 102, 136, 79, 86, 152, 105, 0, 85, 72, 131, 90, 114, 147, 130, 151, 109, 139, 0, 0, 136, 99, 100, 0, 155, 132, 120, 105, 107, 127, 136, 151, 134, 106, 139, 124, 123, 0, 120, 117, 153, 139, 51, 111, 102, 116, 0, 0, 122, 144, 140, 138, 128, 141, 148, 101, 137, 122, 156, 119, 103, 0, 138, 0, 105, 154, 138, 95, 118, 0, 0, 0, 116, 147, 0, 0, 143, 103, 122, 0, 156, 0, 141, 121, 139, 130, 142, 0, 149, 123, 155, 153, 0, 0, 121, 127, 0, 149, 76, 134, 131, 124, 0, 0, 123, 149, 142, 0, 140, 153, 0, 109, 141, 130, 0, 0, 132, 0, 0, 0, 129, 0, 143, 101, 139, 0, 0, 0, 135, 0, 0, 0, 147, 115, 144, 0, 0, 0, 0, 122, 146, 152, 144, 0, 154, 125, 0, 0, 0, 0, 128, 140, 0, 150, 101, 0, 0, 133, 0, 0, 141, 0, 0, 0, 151, 155, 0, 119, 142, 150, 0, 0, 0, 0, 0, 0, 146, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 148, 130, 0, 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, 132, 0, 0, 0, 0, 135, 145, 0, 0, 112, 0, 0, 139, 0, 0, 143, 0, 0, 0, 0, 0, 0, 131, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 154, 133, 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; const uint16_t H_212_158_H_cols[] = { 8, 4, 2, 7, 4, 14, 5, 8, 19, 21, 5, 11, 4, 7, 21, 5, 9, 5, 15, 9, 7, 6, 2, 21, 16, 1, 1, 25, 49, 21, 8, 2, 8, 8, 3, 18, 25, 1, 16, 8, 1, 17, 8, 8, 17, 15, 11, 31, 10, 16, 8, 1, 4, 9, 12, 6, 12, 22, 7, 11, 10, 18, 11, 1, 2, 6, 18, 5, 15, 26, 3, 28, 14, 12, 4, 8, 13, 14, 25, 3, 13, 15, 32, 5, 30, 18, 11, 9, 10, 33, 19, 2, 36, 7, 29, 10, 9, 13, 2, 12, 8, 2, 12, 4, 15, 34, 14, 11, 2, 1, 3, 8, 5, 4, 43, 11, 3, 6, 1, 4, 4, 14, 2, 1, 7, 3, 5, 4, 19, 6, 6, 6, 3, 9, 4, 24, 17, 17, 7, 5, 8, 16, 14, 15, 5, 30, 35, 20, 7, 3, 18, 27, 1, 31, 19, 14, 37, 30, 17, 22, 26, 18, 7, 43, 44, 44, 10, 25, 12, 9, 28, 13, 33, 33, 20, 43, 20, 16, 22, 27, 21, 20, 22, 36, 54, 36, 16, 15, 28, 10, 38, 20, 39, 28, 28, 20, 5, 21, 17, 26, 29, 48, 15, 49, 27, 33, 23, 31, 9, 42, 20, 13, 16, 33, 13, 23, 14, 39, 31, 23, 36, 29, 23, 9, 22, 32, 13, 31, 20, 18, 11, 25, 21, 17, 30, 10, 22, 18, 40, 42, 41, 24, 19, 17, 19, 41, 34, 4, 48, 10, 33, 15, 19, 34, 16, 22, 21, 10, 26, 14, 24, 51, 47, 32, 18, 12, 9, 46, 11, 24, 47, 33, 5, 34, 21, 42, 6, 23, 14, 11, 27, 27, 51, 7, 30, 23, 10, 26, 11, 39, 22, 42, 22, 28, 11, 16, 14, 22, 32, 44, 22, 46, 39, 42, 15, 7, 37, 40, 6, 42, 46, 24, 39, 56, 19, 35, 44, 43, 19, 50, 55, 56, 26, 52, 29, 45, 55, 32, 56, 49, 40, 55, 32, 30, 25, 47, 23, 43, 24, 44, 56, 41, 53, 32, 38, 29, 47, 44, 49, 36, 48, 34, 38, 49, 31, 30, 37, 51, 55, 51, 43, 50, 27, 39, 25, 50, 23, 50, 51, 47, 38, 30, 25, 51, 40, 33, 50, 52, 34, 30, 34, 53, 28, 45, 30, 49, 13, 40, 24, 54, 33, 45, 26, 41, 47, 45, 55, 26, 53, 24, 42, 43, 36, 51, 55, 44, 48, 38, 23, 54, 43, 44, 33, 23, 39, 27, 28, 55, 50, 35, 21, 14, 14, 51, 20, 34, 56, 38, 24, 46, 25, 48, 8, 44, 29, 16, 46, 56, 56, 18, 37, 36, 12, 37, 43, 54, 38, 52, 41, 32, 34, 18, 19, 52, 42, 52, 43, 50, 42, 49, 54, 23, 53, 51, 19, 54, 56, 46, 0, 0, 26, 0, 0, 0, 21, 0, 0, 0, 28, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 26, 0, 27, 0, 0, 0, 0, 0, 0, 54, 49, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 31, 0, 0, 0, 0, 48, 31, 0, 0, 0, 0, 0, 52, 0, 0, 0, 35, 0, 52, 0, 17, 0, 43, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 43, 33, 30, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 49, 49, 40, 37, 49, 0, 0, 0, 0, 43, 21, 47, 46, 0, 0, 0, 0, 0, 39, 0, 22, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 29, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 46, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 39, 49, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 45, 42, 55, 0, 0, 0, 0, 51, 32, 55, 54, 0, 0, 0, 0, 0, 50, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 53, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; codec2-1.2.0/src/H_212_158.h000066400000000000000000000007061445607075400150000ustar00rootroot00000000000000/* FILE....: H_212_158.h Static arrays for LDPC codec H_212_158, generated by ldpc_gen_c_h_file.m. */ #define H_212_158_NUMBERPARITYBITS 56 #define H_212_158_MAX_ROW_WEIGHT 14 #define H_212_158_CODELENGTH 212 #define H_212_158_NUMBERROWSHCOLS 156 #define H_212_158_MAX_COL_WEIGHT 8 #define H_212_158_DEC_TYPE 0 #define H_212_158_MAX_ITER 100 #include extern const uint16_t H_212_158_H_rows[]; extern const uint16_t H_212_158_H_cols[]; codec2-1.2.0/src/H_256_512_4.c000066400000000000000000000577301445607075400152310ustar00rootroot00000000000000/* FILE....: H_256_512_4.c Static arrays for LDPC codec H_256_512_4, generated by ldpc_gen_c_h_file.m. */ #include "H_256_512_4.h" #include const uint16_t H_256_512_4_H_rows[] = { 31, 4, 119, 30, 148, 50, 53, 47, 6, 1, 91, 82, 20, 91, 180, 41, 42, 48, 97, 129, 5, 8, 162, 5, 55, 10, 100, 18, 111, 9, 71, 130, 26, 77, 29, 14, 9, 3, 170, 176, 18, 35, 21, 73, 80, 41, 62, 34, 72, 45, 141, 39, 121, 12, 46, 16, 91, 24, 84, 57, 16, 21, 2, 65, 44, 14, 32, 39, 143, 106, 53, 23, 31, 100, 24, 75, 27, 25, 13, 67, 23, 81, 99, 101, 28, 7, 153, 13, 43, 38, 64, 97, 7, 76, 22, 34, 35, 8, 19, 31, 40, 54, 43, 11, 52, 40, 7, 123, 21, 46, 10, 18, 98, 63, 48, 37, 25, 58, 33, 58, 84, 41, 16, 47, 185, 65, 58, 41, 8, 12, 63, 93, 60, 47, 23, 92, 4, 28, 52, 6, 74, 57, 43, 17, 148, 1, 11, 52, 12, 10, 109, 19, 74, 40, 3, 49, 69, 30, 20, 64, 31, 6, 82, 71, 89, 36, 17, 68, 67, 56, 110, 20, 172, 54, 36, 15, 56, 4, 26, 24, 14, 45, 158, 69, 5, 6, 2, 19, 16, 8, 72, 58, 108, 57, 125, 38, 24, 105, 56, 27, 73, 82, 63, 25, 22, 112, 44, 19, 14, 133, 50, 55, 3, 18, 34, 17, 42, 21, 1, 7, 26, 128, 75, 95, 111, 51, 15, 5, 3, 78, 79, 32, 1, 48, 108, 11, 32, 29, 72, 66, 15, 2, 66, 4, 2, 87, 113, 80, 84, 13, 9, 104, 23, 69, 29, 101, 54, 20, 136, 61, 203, 52, 93, 75, 9, 168, 142, 102, 140, 110, 194, 139, 160, 83, 145, 132, 62, 50, 198, 46, 94, 60, 130, 72, 192, 60, 76, 131, 50, 155, 179, 163, 12, 113, 197, 183, 120, 118, 70, 103, 120, 83, 208, 96, 172, 56, 174, 124, 161, 68, 140, 51, 139, 186, 143, 95, 93, 92, 98, 85, 107, 25, 123, 44, 155, 121, 96, 106, 133, 103, 125, 78, 59, 83, 66, 159, 112, 90, 133, 224, 131, 51, 157, 32, 49, 134, 79, 216, 11, 81, 33, 53, 128, 26, 28, 68, 85, 162, 67, 87, 68, 92, 87, 133, 40, 144, 45, 80, 187, 118, 131, 114, 35, 91, 135, 172, 98, 195, 17, 76, 213, 70, 141, 48, 70, 105, 79, 96, 149, 88, 99, 111, 38, 147, 86, 45, 77, 118, 61, 42, 161, 61, 73, 71, 44, 63, 216, 53, 117, 71, 60, 55, 81, 49, 33, 139, 134, 28, 188, 171, 176, 121, 119, 89, 70, 164, 151, 29, 195, 157, 135, 43, 59, 47, 36, 78, 35, 59, 179, 88, 13, 69, 22, 101, 119, 150, 80, 116, 171, 159, 172, 86, 122, 107, 66, 46, 100, 169, 159, 163, 101, 149, 105, 27, 54, 154, 86, 165, 170, 132, 93, 115, 142, 65, 106, 39, 150, 136, 90, 198, 124, 132, 82, 22, 183, 103, 118, 37, 30, 112, 190, 83, 98, 30, 120, 97, 39, 36, 109, 88, 33, 111, 156, 97, 94, 62, 74, 130, 34, 77, 51, 109, 175, 94, 208, 115, 217, 107, 164, 180, 10, 229, 184, 155, 158, 152, 204, 142, 187, 130, 209, 185, 110, 75, 219, 151, 95, 116, 200, 226, 194, 89, 162, 157, 78, 181, 240, 178, 77, 150, 217, 202, 179, 136, 163, 126, 204, 100, 236, 99, 183, 137, 236, 188, 217, 107, 204, 115, 218, 204, 145, 162, 241, 183, 121, 117, 160, 148, 143, 152, 169, 221, 166, 149, 153, 223, 127, 122, 144, 125, 138, 191, 146, 177, 146, 245, 153, 129, 231, 169, 73, 165, 112, 240, 15, 88, 158, 64, 163, 126, 59, 114, 137, 171, 126, 125, 176, 108, 124, 221, 202, 184, 65, 108, 230, 174, 146, 134, 87, 144, 189, 186, 106, 199, 109, 86, 219, 191, 205, 64, 173, 234, 141, 239, 168, 90, 123, 137, 76, 182, 114, 85, 102, 219, 74, 242, 215, 156, 122, 177, 156, 168, 228, 131, 173, 81, 205, 67, 85, 94, 38, 196, 161, 89, 201, 226, 206, 170, 139, 153, 178, 166, 184, 49, 203, 215, 233, 102, 62, 140, 42, 184, 57, 116, 189, 99, 37, 154, 37, 138, 196, 197, 92, 147, 243, 178, 210, 140, 180, 114, 190, 120, 104, 194, 220, 203, 200, 205, 110, 182, 161, 181, 151, 178, 225, 157, 196, 230, 152, 128, 187, 115, 160, 174, 102, 220, 207, 240, 124, 27, 197, 127, 196, 222, 84, 148, 239, 104, 228, 145, 147, 169, 61, 223, 164, 143, 134, 128, 160, 190, 229, 188, 156, 132, 79, 90, 104, 242, 252, 145, 253, 193, 238, 150, 224, 211, 117, 251, 199, 180, 254, 208, 209, 250, 248, 232, 254, 232, 144, 177, 246, 167, 159, 141, 245, 231, 210, 113, 175, 182, 227, 234, 254, 217, 154, 176, 233, 226, 182, 213, 197, 135, 254, 127, 255, 198, 206, 255, 253, 208, 247, 113, 211, 216, 253, 210, 228, 165, 243, 212, 222, 256, 227, 232, 181, 248, 209, 238, 214, 229, 215, 250, 199, 126, 147, 195, 244, 251, 221, 256, 214, 250, 214, 213, 252, 234, 193, 175, 218, 241, 193, 198, 167, 146, 235, 233, 166, 249, 239, 185, 173, 192, 252, 226, 136, 222, 256, 186, 174, 240, 242, 235, 215, 167, 129, 236, 223, 199, 123, 218, 224, 177, 243, 235, 218, 245, 256, 249, 149, 246, 225, 155, 237, 190, 95, 231, 175, 166, 201, 220, 251, 250, 221, 248, 127, 202, 201, 191, 230, 245, 191, 246, 206, 135, 96, 251, 55, 224, 222, 116, 234, 252, 231, 187, 152, 154, 233, 239, 227, 189, 205, 232, 247, 122, 138, 209, 103, 211, 185, 236, 200, 181, 105, 214, 244, 164, 213, 202, 210, 206, 246, 235, 212, 167, 192, 151, 207, 158, 189, 207, 229, 212, 223, 238, 188, 200, 165, 249, 211, 247, 238, 171, 219, 248, 227, 137, 225, 119, 170, 255, 173, 237, 255, 243, 192, 138, 203, 142, 253, 249, 230, 195, 241, 129, 244, 216, 186, 228, 201, 242, 241, 237, 247, 212, 225, 194, 237, 207, 168, 179, 220, 117, 193, 244}; const uint16_t H_256_512_4_H_cols[] = { 10, 63, 38, 2, 21, 9, 86, 22, 9, 9, 93, 37, 79, 36, 93, 56, 123, 28, 99, 2, 43, 95, 72, 58, 66, 33, 77, 85, 35, 4, 1, 67, 95, 48, 42, 166, 116, 90, 52, 101, 16, 17, 89, 65, 50, 24, 8, 18, 89, 6, 56, 6, 7, 1, 25, 50, 60, 118, 77, 26, 4, 21, 114, 91, 64, 79, 80, 54, 157, 43, 31, 28, 44, 141, 8, 31, 34, 33, 91, 45, 82, 12, 18, 59, 64, 124, 104, 94, 30, 82, 11, 62, 7, 2, 25, 48, 19, 63, 48, 27, 84, 12, 44, 201, 130, 70, 6, 106, 123, 14, 29, 81, 30, 100, 4, 26, 9, 42, 3, 41, 53, 76, 67, 52, 75, 44, 46, 97, 20, 18, 32, 20, 73, 90, 44, 3, 50, 79, 16, 13, 26, 11, 59, 21, 2, 81, 77, 5, 72, 6, 24, 14, 73, 37, 12, 146, 32, 13, 25, 17, 53, 23, 36, 7, 60, 71, 24, 10, 69, 39, 102, 49, 103, 51, 1, 38, 22, 36, 35, 8, 34, 32, 40, 11, 20, 58, 17, 52, 119, 136, 80, 29, 4, 15, 78, 160, 39, 23, 11, 27, 141, 40, 5, 15, 127, 49, 199, 3, 15, 29, 8, 62, 42, 71, 73, 56, 5, 57, 23, 142, 70, 63, 74, 7, 133, 28, 33, 59, 10, 113, 28, 18, 39, 34, 97, 47, 135, 5, 101, 35, 61, 113, 61, 79, 27, 23, 53, 17, 100, 16, 10, 1, 3, 13, 47, 64, 146, 187, 155, 137, 24, 140, 93, 98, 30, 26, 104, 54, 88, 66, 176, 61, 144, 41, 152, 13, 62, 187, 81, 75, 78, 98, 200, 99, 172, 158, 73, 88, 119, 96, 97, 175, 185, 137, 68, 106, 46, 144, 103, 68, 111, 55, 124, 115, 156, 22, 86, 105, 71, 102, 156, 170, 142, 120, 99, 30, 143, 47, 131, 96, 111, 199, 103, 100, 184, 126, 148, 49, 89, 143, 22, 94, 37, 76, 131, 112, 94, 163, 46, 121, 101, 139, 107, 134, 162, 134, 14, 106, 61, 25, 60, 71, 92, 113, 83, 46, 188, 141, 74, 236, 185, 72, 54, 112, 151, 21, 136, 91, 38, 116, 56, 162, 64, 114, 167, 45, 63, 147, 108, 107, 78, 76, 75, 218, 86, 27, 85, 214, 83, 116, 119, 42, 101, 177, 57, 55, 51, 16, 67, 77, 19, 83, 138, 66, 131, 38, 171, 68, 85, 168, 34, 149, 87, 95, 80, 65, 145, 31, 43, 170, 90, 99, 95, 133, 88, 166, 164, 120, 129, 111, 31, 40, 82, 169, 41, 12, 67, 41, 49, 110, 102, 110, 113, 163, 172, 199, 126, 104, 89, 29, 122, 189, 43, 48, 75, 183, 149, 109, 173, 45, 155, 155, 202, 14, 19, 58, 55, 195, 86, 83, 115, 92, 36, 91, 125, 203, 81, 108, 119, 84, 213, 40, 65, 151, 72, 151, 87, 20, 98, 88, 114, 51, 224, 70, 132, 92, 92, 144, 125, 187, 84, 132, 175, 68, 130, 74, 80, 87, 51, 19, 50, 82, 219, 242, 213, 178, 185, 162, 107, 129, 37, 111, 147, 130, 185, 181, 227, 123, 167, 112, 188, 159, 109, 205, 135, 180, 117, 179, 208, 138, 238, 233, 100, 232, 159, 215, 117, 179, 187, 159, 220, 109, 122, 179, 143, 149, 140, 110, 134, 128, 158, 33, 226, 139, 96, 174, 159, 177, 181, 127, 177, 133, 146, 177, 150, 128, 126, 240, 156, 105, 186, 129, 154, 191, 147, 153, 76, 124, 141, 180, 231, 191, 154, 202, 78, 233, 140, 196, 117, 184, 165, 223, 57, 136, 132, 158, 137, 132, 240, 121, 135, 74, 205, 176, 179, 252, 198, 121, 65, 193, 243, 171, 225, 206, 54, 139, 216, 182, 153, 142, 189, 200, 70, 176, 121, 225, 104, 98, 147, 222, 117, 32, 115, 226, 108, 161, 156, 107, 136, 188, 160, 178, 127, 217, 69, 110, 59, 96, 192, 145, 133, 190, 198, 167, 87, 186, 69, 247, 174, 183, 194, 221, 161, 60, 97, 188, 209, 140, 116, 150, 202, 213, 193, 173, 153, 114, 90, 105, 124, 194, 183, 15, 184, 138, 62, 171, 125, 120, 166, 207, 183, 235, 150, 197, 93, 202, 173, 215, 190, 94, 120, 205, 163, 148, 204, 55, 173, 165, 225, 47, 69, 191, 180, 204, 125, 85, 145, 151, 39, 122, 142, 224, 108, 161, 205, 123, 219, 106, 171, 237, 203, 216, 138, 66, 169, 130, 126, 118, 244, 206, 170, 112, 235, 242, 193, 237, 128, 154, 212, 146, 210, 84, 143, 105, 57, 35, 222, 109, 233, 245, 229, 244, 228, 186, 220, 190, 251, 150, 236, 149, 250, 209, 241, 189, 216, 214, 208, 172, 218, 228, 253, 197, 204, 221, 228, 162, 255, 238, 161, 237, 245, 253, 181, 242, 232, 196, 241, 154, 128, 217, 176, 207, 182, 200, 178, 234, 172, 211, 255, 148, 152, 209, 212, 199, 194, 192, 182, 155, 241, 250, 203, 160, 218, 243, 169, 168, 254, 169, 164, 239, 201, 251, 223, 137, 254, 230, 253, 248, 157, 227, 236, 249, 157, 211, 246, 244, 168, 254, 118, 191, 215, 249, 224, 157, 248, 237, 184, 201, 256, 223, 230, 255, 207, 219, 198, 235, 256, 207, 246, 234, 247, 198, 220, 192, 254, 231, 220, 239, 166, 197, 135, 227, 195, 103, 230, 246, 236, 252, 152, 252, 210, 245, 175, 222, 218, 228, 167, 196, 131, 230, 244, 118, 238, 115, 239, 234, 206, 221, 211, 217, 168, 210, 134, 251, 214, 200, 203, 247, 209, 102, 204, 243, 212, 170, 196, 251, 240, 221, 214, 195, 223, 222, 139, 165, 148, 212, 252, 197, 210, 208, 229, 180, 181, 239, 219, 250, 201, 248, 153, 227, 255, 248, 234, 231, 229, 224, 122, 208, 241, 190, 229, 58, 206, 192, 250, 52, 178, 195, 211, 246, 189, 186, 174, 238, 53, 127, 215, 253, 145, 232, 242, 160, 247, 164, 217, 240, 249, 233, 165, 174, 175, 163, 194, 182, 249, 213, 235, 226, 243, 256, 226, 256, 152, 193, 245, 216, 232, 144, 158, 164, 231, 45, 225, 129}; const float H_256_512_4_input[] = { 0.51757034789149192, 3.6747768327751107, 7.7236521981742676, -4.7107278911943427, 7.7122230429603542, -14.946266731679888, -9.5567730710166714, -7.5877780009775071, -8.3629835471455127, 8.4844922006171419, 9.4734932311757394, -6.8841383473145763, -4.6284234216637214, -7.8669368046418358, 12.226645532420404, -7.3774603770015981, 7.7649435759022252, -12.127076055381709, 7.4012504229333951, 6.5535650029238361, -12.318540215486564, -15.835684442673877, 10.779009024429017, 11.841953278425423, 7.1804756215244456, 2.8408801132499808, -11.09563707808943, 7.1789245659484093, 10.24316438845271, 6.4838781564425041, 15.604657058526026, 17.695904359387381, 6.4313440196217382, 4.9488783865887793, 9.9527088015343548, -2.7205772402494488, 12.156344173793103, -11.205004871994769, -12.211802140176635, -5.4465825069640195, -10.152012956739171, -1.1179875067929763, -10.479027227263707, -8.5090340518598531, -7.5030586007744553, -4.9370617561264698, -0.78486455084153151, -9.9902064527523908, -7.1974696423785023, 15.904653930974046, -3.2958890233801612, 6.9052860853356819, -15.446573781345712, 8.2911853913447402, 0.40395028984397091, -1.5672283593714793, 11.262818645299314, 7.1710703603039994, 4.1597725238676002, -11.382339164684311, 14.132112287584638, 3.2925942129085506, -6.1011528087958027, 7.8516182070629279, 5.9768136552516342, 2.699484726705069, 5.2066829520768056, -0.7207484827070334, -8.2386610240355651, 6.0717182827619967, -8.5076501195080585, -13.703946410299512, 9.2623574093742604, -6.9682747118380446, -4.9023588860381846, 9.3084136203033694, 11.148851565040838, 9.1302433636417319, -6.9420186741739887, 7.9337725600954645, 15.582342768204805, 10.766162729242598, -4.9576813210420525, 6.6727325567460882, -12.196894026695226, 11.022208518924467, 1.6977876257198246, -8.9073010297491386, -3.4873714683714097, 10.267082736130799, -6.2704199741458089, -6.7409188535835654, 7.0799113259507331, 4.2517449421654421, 10.988809910933929, 8.3098010378717788, 0.65053609686067293, -9.8680908214463745, -0.13210703660490827, 10.569960823465198, 5.631834756326584, -17.599792146333385, -7.4505114988199814, 2.0876055933892643, -11.848744235597531, -6.370769553578242, 10.349368965148454, -11.054250547489133, 4.9685950633439182, 16.26542564640426, 8.9946743875150297, -6.9695225550874884, -12.491901775385568, 5.221170286398829, -14.57146740285134, -11.185574766943571, -1.4528792719442074, 16.807973653612009, -2.14773040667668, -6.5893455221648924, -10.366321204598048, 11.545810725289135, 11.526831005704754, 3.8156547809267578, -14.793195556950453, 10.727608736368884, 4.245416988419259, -14.823682249573251, -0.055849778718978338, 0.12268898147135411, -5.3423951302536539, 8.9810197259759086, 13.968989424307708, 10.292317467705674, 10.814835776145282, 7.8639985326787416, -15.489411581463163, -5.3160377506090404, 9.6739321724911669, 7.3738788431938094, -7.2089426352102386, 3.2896767517308105, 11.134312631894316, 6.8196648270250888, 11.696870111795384, 11.33636158982544, 7.6883282280715841, -8.5354168089995976, 5.5939282378823458, -9.6804348667718987, 10.27449691588806, -4.601540486911178, 11.476772689524227, 13.587705068864731, -5.4206086888829965, -8.2565155897262077, 11.240961601590284, 13.474564188433188, 2.9546569324344847, 6.7205439189069738, -13.857561305882877, -16.669935196013508, 7.7992349867934445, -9.1054167276310629, 13.234970834427072, 3.8904964584199755, -0.007103062296974271, -7.5226178742319778, 11.799567862083773, 10.306340656379247, -9.6031596648762214, 4.7873593091676456, -8.7508487803331807, -11.418105573040524, -8.9917029259865018, -4.8764541287524565, -13.141445425385772, 10.478907923003296, -15.62610293315559, 12.174935599981024, 14.110425042238267, -5.3351060433143189, -10.448529758835216, 7.1555832021079713, -3.7581044977756339, 4.9877839461702953, 6.4352605191478229, 6.2681705969506636, 1.0591230129022271, 4.6014572060908856, 3.630881166938468, 5.2610118858162744, -4.0406336475456959, 6.7089084012087339, -12.399263098594448, -8.6885785210631923, 10.200283753268543, -9.6711128555761476, 7.9523636179902066, -1.6194893091097409, 7.8100926558018475, 4.7308921409583666, 4.2870845092503842, -5.5113211353649589, 4.6632369877554547, 13.580052366571808, -13.989676528031513, 7.4788332322884292, -7.9055834172669863, -5.4521774799559077, -2.3832875853818489, 12.500172468473709, 4.4257047233124993, 8.6185463356078564, 1.6503341929121846, 9.3817571992318136, 14.707911493485314, -8.8168554234237906, 16.686275657629849, 8.0726217002484866, -5.7336803150162323, 11.199173436763308, 2.9624772806565214, 6.084008649398772, 13.651210034355321, -5.3568028597546125, -8.1131526120118433, 20.586630811135656, 3.2537667200472802, 2.4661860405319476, -12.302300974267494, 10.14496212813636, 12.013406576337029, 12.48076525937795, -7.7705021913306842, 4.4923244656818495, 3.9070226775151733, 5.2441749708856884, 5.3679526862494482, 13.94196173641695, 4.5296297811057684, -7.1127741954540973, -14.014901825754492, -5.4003616016916451, 11.30329597194279, 13.212639183152664, -6.7394206827710148, -9.3081209755867338, -2.8134083772289786, 12.362737057742141, -7.5816771419304487, -6.4823236067192118, 6.4368678007326325, 4.2139501741847152, -1.3015955505891499, -7.0693979078400888, 5.1567879937036976, -14.29429720815733, 7.0965274119499995, 14.335090253318402, -1.1060086481123688, 12.280127372295182, 15.355627698217484, 7.1118230503395736, 0.080951481678914361, 4.5275811277845772, -12.807880002244142, -7.9315604470260013, -10.460706930669154, -8.6438350740702976, -5.0714513528336349, 4.1875900660492, 8.7133453013769007, -9.8239011192052565, 6.2390365458120005, -8.4029965191052352, 4.984656567448889, -11.441087746951402, -2.8554666393879051, 8.7117720128765459, -10.315850818433494, 8.7178427912116181, 4.5674735423087416, 5.059245742630825, -6.9741413761506754, 6.8923077141725289, -7.3195029505868936, 7.0150611857028995, -13.57329609597363, 2.4003974632430873, -12.79534048621632, 14.073423100856756, 13.050627886243262, -9.9719834315477431, -8.9255382467931454, 6.4498466627026518, 7.9947952448158626, 7.2030719578630773, -13.912680862467084, 8.6608429906142881, 8.3632503895529862, 5.9305710042005879, -2.9130898919754795, -11.254118896275536, -13.798108618024084, 13.07950958186338, 14.355477267752258, 3.222947027333253, 5.9042659378475841, -8.1324540511219237, 7.1175191808602341, -6.585103539549686, -9.2836832446594695, -15.365446897780474, -10.994019011437626, 4.0590717801675913, 9.5109814268426955, -4.3279461184809049, -15.720038357484848, 11.951856945935143, 12.682014968828179, 16.336475563256471, 7.6649931256123782, 5.3001533728428951, 14.811865942579626, -7.1591674243249166, 6.9641361242422413, 2.2887071087144921, -7.4283680060564725, 9.8045942879168955, -6.4177702207017902, 10.47585866871807, -7.6078593665950418, 8.6728241961706676, -2.3844019549449365, -12.333348889567585, -8.0410508790992044, -15.319448351686553, 4.1439520121183158, 10.124921135545005, -2.719059876565721, -7.15172555283569, -13.928003800487966, 5.0190908596544332, -10.550763525222086, -9.6902455518808601, 3.4656033167131572, 5.7434253113056117, 2.2353462963087205, 8.2800699204033581, -9.5917816492257746, 6.604246872114893, 5.7926392372814988, -13.95249621884361, -6.3255003024458976, -9.0958782067905091, 6.6894074274331334, -16.305393183977255, -14.754831506925347, 9.9598275167453405, -2.2953313029712268, -9.9770589384486907, -1.2849873707603492, -11.674107434694577, 4.2308935045924834, -15.986216502652635, -12.496143349107586, -6.961301171448163, 7.173141034418097, -16.747323708994283, -6.1459334756956441, -7.6817564340549813, -2.9759502920998209, 4.4290936044370053, 15.85792699420073, 3.8733475037532075, 13.282888674545026, -8.8075790389214674, 15.756528771444074, -0.9172738378747668, -5.8878468427817152, 5.3239983067421415, 7.0650495320494038, 10.266937497463937, -6.4024274906880185, 5.7532733339731017, -16.811716029564213, -8.4435829388264345, -14.547150170272406, -8.5663296440687802, 7.9505572216380145, 6.6923964384181422, 5.1145018718318767, 6.7546204865730397, -5.7136099383940193, 6.5164149727652187, 8.5399580765014118, 11.118659305825421, -5.11256462073184, -7.4204131176081027, 2.4372467698010158, -11.332205684329931, -2.300944450055125, -7.5761485315412722, 7.9239226824179134, 15.148232300109672, -8.2866195088681511, -12.500886819111757, 5.8898233180615511, 6.0191326161618939, -9.571768060299096, 8.2993401574423782, 13.192810814495525, 9.2287810197171662, -6.3446655091317981, 4.6194007533037533, -12.299288931968976, -11.301088930234318, -12.748142414710747, -11.089177834341021, -11.952684158007653, -12.201173925517882, -7.8885413991638051, 6.162990209842949, 10.074139560291529, 0.33052151002636837, -13.233240567315669, 8.5041479968410876, -3.877731464378761, -8.4152150964636405, -4.416934778774996, -2.7605197724504817, 8.4248907474003509, 9.6866360704229582, -6.7860748062114764, 5.350251139963115, 8.0461693937601364, 5.4866837755943072, 8.2170770706027305, -4.9303099776579087, 0.19594956934783084, -3.0366818211786448, -0.89771548197359008, -9.2559494368024176, 13.057529669212126, 1.3182610405525714, -5.379813192370591, 7.0595292864637926, -8.0652416728279732, -10.017709623333209, -19.043167085088943, 4.2036836072934642, 7.2607959496260142, -20.579086044233659, -10.955745136261804, 2.8075247300020623, 6.158819317084113, -4.1432994280765003, -8.4759687111809825, -7.4063800738713441, -11.809011583528154, 3.7455788861378996, 11.055125561517878, -11.050002999845985, -12.641967828832232, 9.7182304238773387, -9.6040255370844871, 8.5406323003146039, 5.5370300264242678, 9.6390471518242808, -4.5175089872689815, 11.211130149275418, -7.0619345213828808, 9.0284753188655795, 6.5193504139524956, 5.9080653530360792, -6.9270802426346494, -7.5939041868540862, 11.483724465414687, -6.4198704940922147, 11.594197774773704, 9.8177782003472842, 7.8573132285189722, -14.764671284444628, 10.836352484846104, -5.1661833245215307, -2.2845730141844491, 1.4521554038891078, 14.07531661629624, 14.874495505085839, -10.926627051439677, 1.0207490010126001, -1.9216020879305911, 14.405401350119591, 11.010298478850032, 3.7506698273138919, -11.982303137905003, -6.2083663060173526, 6.2522765425768316, 7.7069832341275522, -18.065137191023226, 6.792106322469885, -0.93798035245625377, 7.8641939572750079, 10.30225964497456, -7.0018228039310735, -7.0742108654561564, 4.1031586655458723, 2.3748564555251002, -4.3322313906258154, 9.6230244300270638, 19.666940225626419}; const char H_256_512_4_detected_data[] = { 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}; codec2-1.2.0/src/H_256_512_4.h000066400000000000000000000010631445607075400152220ustar00rootroot00000000000000/* FILE....: H_256_512_4.h Static arrays for LDPC codec H_256_512_4, generated by ldpc_gen_c_h_file.m. */ #define H_256_512_4_NUMBERPARITYBITS 256 #define H_256_512_4_MAX_ROW_WEIGHT 4 #define H_256_512_4_CODELENGTH 512 #define H_256_512_4_NUMBERROWSHCOLS 256 #define H_256_512_4_MAX_COL_WEIGHT 4 #define H_256_512_4_DEC_TYPE 0 #define H_256_512_4_MAX_ITER 100 #include extern const uint16_t H_256_512_4_H_rows[]; extern const uint16_t H_256_512_4_H_cols[]; extern const float H_256_512_4_input[]; extern const char H_256_512_4_detected_data[]; codec2-1.2.0/src/H_256_768_22.c000066400000000000000000000750531445607075400153240ustar00rootroot00000000000000/* FILE....: H_256_768_22.c Static arrays for LDPC codec H_256_768_22, generated by ldpc_gen_c_h_file.m. */ #include "H_256_768_22.h" #include const uint16_t H_256_768_22_H_rows[] = { 35, 7, 24, 203, 138, 29, 39, 28, 114, 79, 49, 43, 218, 92, 70, 192, 59, 1, 194, 129, 15, 5, 25, 62, 50, 28, 23, 119, 191, 112, 195, 18, 164, 117, 148, 82, 25, 120, 41, 100, 61, 4, 31, 7, 13, 135, 108, 128, 48, 45, 96, 201, 67, 17, 143, 42, 91, 44, 168, 49, 26, 38, 83, 169, 16, 86, 22, 25, 69, 42, 122, 94, 226, 145, 121, 242, 131, 165, 55, 81, 74, 5, 58, 46, 59, 32, 115, 139, 180, 6, 78, 20, 7, 135, 78, 88, 49, 28, 77, 158, 94, 125, 21, 152, 23, 7, 123, 160, 53, 11, 85, 82, 32, 60, 74, 65, 3, 13, 111, 143, 121, 46, 68, 121, 72, 177, 54, 166, 20, 130, 30, 139, 34, 151, 97, 47, 126, 1, 76, 72, 64, 32, 9, 125, 54, 114, 17, 82, 2, 30, 102, 29, 137, 2, 16, 206, 2, 27, 3, 13, 199, 123, 226, 20, 60, 221, 15, 53, 35, 93, 9, 124, 1, 109, 103, 73, 190, 51, 140, 90, 130, 57, 52, 225, 8, 47, 177, 66, 8, 112, 110, 62, 64, 104, 156, 33, 101, 26, 107, 60, 26, 196, 39, 34, 14, 54, 68, 17, 66, 5, 33, 104, 3, 214, 200, 35, 170, 51, 90, 113, 122, 8, 70, 65, 42, 80, 134, 157, 88, 19, 3, 98, 112, 19, 60, 119, 76, 18, 43, 232, 141, 175, 154, 118, 187, 182, 113, 37, 95, 169, 36, 17, 36, 64, 191, 51, 63, 24, 36, 21, 223, 27, 94, 142, 18, 22, 53, 45, 161, 81, 80, 68, 22, 169, 52, 109, 180, 61, 33, 121, 98, 118, 26, 96, 156, 101, 100, 73, 31, 87, 71, 20, 93, 132, 173, 1, 39, 151, 166, 106, 67, 87, 116, 196, 173, 56, 102, 120, 147, 30, 69, 137, 108, 21, 88, 84, 81, 48, 37, 102, 10, 86, 158, 78, 162, 39, 14, 144, 9, 91, 106, 96, 55, 6, 127, 135, 87, 163, 5, 25, 42, 56, 171, 225, 213, 99, 46, 133, 12, 194, 234, 159, 59, 55, 84, 10, 24, 40, 130, 228, 181, 186, 163, 72, 35, 115, 4, 149, 106, 19, 16, 67, 11, 8, 100, 144, 154, 27, 62, 37, 164, 2, 226, 11, 183, 48, 10, 176, 171, 197, 216, 155, 198, 44, 52, 75, 70, 74, 138, 184, 10, 96, 4, 99, 79, 208, 18, 62, 113, 167, 41, 38, 48, 40, 144, 97, 57, 134, 159, 211, 21, 146, 9, 83, 58, 51, 116, 32, 15, 50, 100, 6, 74, 31, 12, 19, 58, 78, 197, 162, 50, 11, 43, 89, 188, 132, 85, 94, 50, 65, 99, 66, 105, 69, 40, 157, 16, 97, 22, 63, 207, 72, 59, 142, 29, 76, 55, 206, 54, 136, 45, 40, 46, 41, 185, 6, 231, 13, 107, 208, 23, 173, 92, 145, 88, 144, 111, 119, 151, 68, 14, 129, 108, 89, 23, 36, 44, 47, 210, 4, 146, 89, 132, 111, 69, 57, 90, 117, 31, 14, 234, 183, 116, 214, 84, 249, 179, 209, 238, 47, 248, 227, 161, 125, 237, 220, 223, 237, 63, 200, 213, 240, 161, 212, 252, 250, 81, 214, 34, 159, 217, 184, 222, 240, 204, 147, 210, 211, 229, 133, 162, 185, 153, 249, 65, 15, 119, 204, 122, 161, 133, 138, 103, 204, 248, 38, 201, 173, 98, 181, 255, 73, 186, 73, 150, 189, 176, 128, 184, 101, 230, 56, 186, 160, 234, 205, 168, 243, 212, 205, 80, 147, 82, 93, 120, 214, 189, 195, 205, 141, 183, 152, 133, 255, 128, 174, 215, 229, 86, 160, 122, 206, 188, 165, 83, 246, 170, 85, 182, 219, 158, 118, 253, 104, 231, 220, 136, 191, 179, 79, 178, 166, 239, 116, 108, 167, 207, 221, 210, 207, 30, 158, 239, 209, 224, 199, 203, 142, 172, 67, 227, 75, 231, 34, 254, 145, 222, 240, 207, 107, 98, 168, 154, 233, 238, 33, 227, 236, 208, 241, 103, 141, 245, 190, 242, 128, 103, 232, 28, 159, 70, 197, 29, 155, 185, 218, 111, 188, 224, 252, 219, 164, 236, 163, 149, 241, 172, 219, 238, 216, 12, 156, 232, 217, 118, 136, 157, 247, 123, 230, 245, 202, 235, 217, 235, 64, 77, 95, 110, 140, 211, 254, 251, 235, 149, 253, 248, 226, 222, 256, 196, 170, 235, 152, 124, 168, 157, 127, 169, 184, 170, 71, 45, 247, 146, 120, 179, 176, 129, 249, 106, 251, 165, 199, 251, 220, 201, 224, 229, 194, 148, 220, 164, 193, 57, 183, 250, 52, 172, 180, 242, 175, 250, 91, 155, 187, 131, 61, 139, 252, 174, 107, 99, 77, 176, 179, 126, 192, 182, 125, 71, 124, 175, 202, 66, 178, 233, 105, 145, 140, 243, 135, 232, 85, 248, 153, 244, 115, 77, 216, 187, 139, 79, 171, 253, 204, 212, 156, 150, 218, 186, 86, 83, 198, 192, 151, 101, 127, 192, 58, 97, 208, 87, 188, 209, 137, 247, 136, 221, 154, 37, 199, 165, 126, 105, 12, 246, 187, 196, 242, 236, 256, 131, 213, 217, 230, 233, 105, 155, 198, 178, 203, 243, 228, 134, 123, 182, 49, 178, 222, 254, 244, 195, 225, 223, 193, 163, 141, 194, 252, 146, 237, 129, 76, 231, 92, 203, 177, 221, 117, 75, 197, 243, 27, 253, 92, 202, 215, 174, 228, 193, 254, 230, 239, 218, 80, 63, 223, 167, 109, 189, 228, 38, 149, 131, 210, 115, 241, 89, 193, 138, 250, 150, 171, 162, 113, 215, 185, 143, 172, 206, 245, 41, 209, 213, 216, 247, 148, 124, 44, 142, 117, 132, 127, 198, 255, 126, 110, 71, 177, 200, 175, 91, 152, 112, 212, 239, 249, 234, 140, 245, 167, 181, 104, 256, 241, 189, 244, 61, 200, 43, 148, 219, 143, 95, 174, 130, 114, 84, 244, 181, 137, 229, 95, 160, 215, 205, 24, 246, 53, 109, 251, 190, 236, 134, 153, 190, 150, 180, 227, 211, 237, 238, 153, 147, 93, 195, 201, 246, 166, 256, 56, 233, 114, 240, 202, 102, 75, 191, 225, 90, 110, 255, 224}; const uint16_t H_256_768_22_H_cols[] = { 18, 149, 117, 42, 22, 90, 2, 185, 143, 321, 110, 189, 45, 205, 21, 65, 54, 32, 230, 92, 103, 67, 27, 3, 23, 61, 158, 8, 6, 129, 43, 86, 154, 27, 1, 251, 248, 54, 7, 358, 39, 56, 12, 58, 50, 84, 8, 49, 11, 25, 178, 183, 109, 127, 79, 70, 182, 83, 17, 114, 41, 24, 17, 141, 43, 188, 53, 123, 69, 15, 230, 125, 60, 81, 140, 139, 99, 91, 10, 79, 25, 36, 63, 3, 106, 66, 290, 96, 407, 180, 57, 14, 82, 72, 206, 51, 135, 57, 271, 40, 68, 151, 51, 112, 286, 239, 148, 47, 174, 191, 119, 30, 220, 9, 87, 1, 34, 110, 28, 38, 75, 47, 107, 172, 12, 137, 226, 48, 20, 130, 77, 294, 38, 227, 46, 115, 153, 5, 88, 179, 88, 136, 55, 328, 74, 233, 34, 35, 183, 63, 134, 90, 41, 151, 172, 190, 195, 100, 28, 72, 11, 39, 182, 33, 78, 120, 124, 59, 64, 105, 302, 137, 56, 94, 242, 65, 126, 119, 5, 89, 58, 107, 89, 30, 40, 61, 245, 101, 64, 162, 29, 16, 252, 19, 31, 202, 170, 312, 134, 18, 52, 200, 4, 33, 74, 100, 125, 157, 6, 35, 36, 22, 19, 2, 95, 188, 29, 13, 108, 14, 126, 31, 15, 133, 184, 73, 10, 352, 37, 69, 113, 166, 152, 73, 201, 156, 13, 7, 121, 20, 158, 76, 76, 295, 161, 104, 196, 9, 4, 24, 211, 23, 111, 143, 59, 218, 138, 154, 159, 367, 82, 334, 44, 189, 171, 356, 373, 334, 118, 327, 44, 155, 147, 238, 234, 129, 260, 266, 105, 258, 37, 198, 262, 26, 152, 131, 289, 113, 196, 133, 169, 253, 319, 62, 203, 414, 411, 70, 239, 394, 231, 122, 136, 318, 60, 430, 218, 256, 168, 145, 333, 306, 253, 318, 85, 165, 266, 192, 257, 193, 116, 209, 138, 207, 311, 169, 279, 140, 62, 115, 379, 237, 205, 95, 118, 226, 80, 81, 103, 316, 111, 97, 302, 229, 444, 219, 262, 374, 170, 101, 249, 284, 319, 149, 346, 287, 197, 307, 159, 194, 333, 300, 199, 123, 276, 207, 175, 190, 247, 146, 296, 122, 378, 193, 45, 83, 121, 71, 162, 223, 102, 275, 316, 66, 237, 181, 265, 431, 49, 353, 94, 194, 312, 50, 132, 208, 160, 264, 120, 376, 144, 369, 80, 249, 213, 307, 298, 104, 294, 243, 263, 195, 225, 109, 168, 98, 21, 325, 338, 180, 102, 128, 397, 75, 227, 217, 343, 185, 295, 269, 260, 236, 187, 284, 117, 258, 361, 246, 254, 67, 173, 71, 264, 176, 85, 177, 116, 276, 364, 248, 86, 219, 380, 348, 161, 215, 55, 282, 135, 46, 78, 156, 128, 320, 132, 127, 209, 77, 342, 26, 386, 298, 192, 174, 179, 114, 166, 145, 261, 177, 344, 163, 139, 360, 96, 198, 141, 191, 285, 351, 203, 181, 16, 153, 131, 32, 184, 163, 289, 360, 199, 335, 232, 53, 42, 255, 240, 178, 214, 210, 92, 340, 173, 157, 213, 403, 210, 432, 93, 222, 329, 387, 384, 349, 160, 491, 167, 371, 208, 265, 370, 164, 314, 273, 481, 357, 68, 201, 378, 98, 171, 150, 434, 142, 211, 142, 216, 259, 329, 401, 297, 455, 421, 225, 443, 428, 268, 347, 186, 386, 97, 441, 256, 275, 267, 206, 354, 342, 417, 425, 353, 200, 278, 379, 395, 204, 224, 283, 301, 272, 454, 223, 291, 364, 176, 398, 396, 372, 272, 324, 301, 271, 270, 112, 311, 355, 292, 310, 321, 315, 494, 507, 330, 384, 293, 263, 463, 332, 416, 232, 404, 375, 286, 320, 165, 212, 346, 331, 270, 313, 398, 436, 487, 233, 409, 466, 366, 303, 430, 244, 236, 234, 124, 99, 197, 280, 144, 332, 335, 93, 371, 359, 341, 446, 91, 418, 290, 326, 324, 399, 267, 288, 241, 429, 417, 415, 287, 422, 309, 426, 368, 411, 314, 222, 484, 328, 347, 285, 228, 130, 352, 108, 48, 413, 363, 251, 241, 299, 410, 150, 250, 220, 389, 257, 305, 387, 281, 273, 376, 349, 235, 277, 451, 277, 385, 228, 416, 309, 299, 322, 399, 481, 255, 313, 389, 350, 361, 304, 390, 393, 242, 439, 245, 385, 350, 52, 87, 419, 147, 406, 323, 404, 420, 305, 345, 84, 415, 391, 202, 308, 186, 244, 327, 217, 363, 246, 362, 216, 155, 388, 247, 344, 373, 240, 345, 447, 212, 339, 370, 187, 392, 146, 406, 259, 351, 456, 420, 477, 325, 215, 238, 261, 243, 268, 303, 359, 434, 453, 296, 382, 231, 500, 339, 476, 106, 374, 423, 401, 442, 435, 478, 510, 429, 457, 252, 407, 436, 292, 421, 459, 495, 476, 340, 283, 382, 167, 465, 310, 509, 428, 279, 204, 365, 496, 380, 412, 326, 472, 474, 341, 459, 497, 471, 473, 498, 413, 356, 449, 426, 395, 478, 469, 467, 500, 506, 437, 463, 235, 457, 408, 460, 254, 450, 452, 372, 490, 505, 397, 437, 462, 288, 433, 506, 466, 297, 438, 405, 394, 317, 148, 424, 467, 447, 322, 337, 485, 502, 509, 441, 483, 494, 448, 472, 402, 458, 281, 451, 431, 315, 505, 175, 452, 453, 369, 479, 493, 479, 510, 504, 443, 414, 502, 405, 427, 508, 282, 488, 308, 280, 221, 354, 427, 278, 435, 432, 164, 492, 465, 403, 503, 348, 483, 336, 470, 470, 409, 300, 448, 366, 464, 462, 486, 484, 501, 493, 460, 402, 486, 489, 442, 492, 377, 392, 306, 456, 323, 419, 473, 269, 440, 365, 381, 331, 498, 450, 224, 274, 229, 412, 418, 482, 464, 440, 388, 438, 357, 274, 487, 469, 355, 512, 400, 475, 362, 336, 445, 455, 485, 507, 317, 408, 367, 495, 337, 439, 433, 330, 458, 496, 504, 375, 304, 475, 468, 461, 480, 422, 499, 489, 444, 423, 214, 474, 424, 343, 393, 461, 250, 377, 358, 396, 512, 508, 383, 488, 400, 471, 391, 477, 291, 501, 511, 221, 482, 490, 491, 445, 503, 454, 338, 381, 468, 449, 497, 425, 293, 446, 410, 480, 368, 383, 390, 511, 499}; const float H_256_768_22_input[] = { 8.9323881489912722, -14.346922710565353, 7.9693390759559781, -5.575983146144643, -11.430007344507024, -11.797433382704103, -7.6498596597609545, -7.881023325143766, 4.7029642025464975, 5.490489593506263, 1.4577054829853482, 7.2204914066015347, -6.4495501165249394, 11.025143103007442, -9.6136273661905971, -1.6292633004367878, 20.082835454091001, -15.940623976141929, -2.9320120314706735, -4.3372895006030534, 5.8549869318024657, -7.8135927951559925, 4.4717025005955255, -7.1804626225242245, 8.8281745058367793, 3.457866082712139, -11.660964767047432, 15.344085170249253, -14.466810773633428, -10.293997562512834, -6.5294617860841004, 2.6337196833307024, -11.070543876657444, 5.7359108096272164, 9.0013294714941843, -9.1923366442599423, 8.3397116927192272, -7.3466443766727068, -7.0208885950279667, -9.8833064990274835, -11.070411858783441, 16.189201249627562, -6.6872549284064142, -11.752890503765991, 8.888774213749782, 6.0968391171951497, 4.6589995649358533, -13.575988817182116, 11.224485296177397, -10.220694397171258, -5.4572791361037458, 3.0379566142247696, -10.350052412180393, 10.682941155969285, -4.9736564167026174, 11.948298747287996, -9.0750233401887872, 8.9486285395989267, -8.0970017828965126, -6.5844009128903371, 8.5356201812866281, 6.8576026698255736, 3.5824292008949179, 6.386672876216724, -15.44333294899913, -14.723335707927411, -7.1535041654585925, 10.057507199075706, -6.9304518083413749, -13.454196499566493, -4.138927837975757, -9.8229530349333984, -4.7378733928678765, 9.7370721449903357, -11.850883212615898, 5.8425014756304456, -6.9027200123108363, 8.7507430345166597, -2.8432533600339798, 7.1365746925349614, -6.098608401582597, 10.486813349939659, -8.8989094853818393, 7.6668852841834365, 6.3748984557020911, -5.4320648642184377, 12.959555816131948, 6.6472990487222825, -4.5586715631096242, -10.121473995028611, 13.889214737960058, 7.8618812777297702, 0.65114006436468486, 5.6488480073158049, 5.572561535915213, 2.4203295039424271, 5.3724413783839795, 10.445189341740317, -15.231581540217265, 11.189031424930562, 13.490253048718506, -7.5847033262880901, 8.1341785315194368, 4.667483152501207, 10.057012188688605, -12.532915718955612, 17.831016306467532, -7.0233337748720057, -8.1477498232874108, 6.5993887776727203, -6.605350841986966, -7.0309413757967123, -0.87776810176011932, -7.9287494770117224, 5.1536577951126938, 0.56224938859050333, 7.7410604756629082, -10.567376193912894, -2.4437814999269047, -1.2455732716974919, -8.9878404597781163, -10.226284826932922, 4.5715929705982656, -1.3060897521729748, 9.6931031456180285, 6.3549868823010955, -7.6817147139176463, 8.4268904957327955, 0.72594931178019784, -4.9826196594501706, 8.5326984912532176, 2.0637319625971493, -4.2933223803232075, 8.0239298244286879, 1.7951957372413565, 0.084600427180267501, 9.4399601205840362, 10.396717221311645, 12.856923054222854, 3.3295462715836468, -7.6253580712992282, 4.4434471213207374, 6.3733997531278987, 5.4209913860102539, -5.9866755286453737, -7.0287078896424156, -9.2179437166191374, -11.790731307180192, 8.455859639343128, -8.3117274581248051, 13.838681948013669, 7.5475760198641648, -10.086023553300919, -11.224918245135393, -3.3058930832202531, -6.8195757099451129, 11.709166727746231, 11.710100491323546, -11.077873187765078, -10.227016885555694, -4.2941243793572408, 8.1424248467837987, 9.7722584940844754, 7.1104245309154912, 9.3804477382031415, -7.106685163129332, -7.2437598314289575, 11.947702093459393, -1.057260209023416, -6.765299028699161, 3.3425539547981304, 13.328906459054352, 4.4101064786390305, 1.8051901230395977, 11.535802590105595, 0.81386101415425482, -8.165348209826135, -8.5774987728328416, -6.0775939508580219, 2.5963421619843943, 6.3292406903055642, -8.4458269581431491, 8.7662642361276717, -5.819334215801403, -13.610981269704446, 5.0765800356900179, 8.6249353046138477, -4.9634433316247675, -3.9950013700332065, -7.6929117100191453, -6.3633253856519749, 0.83722518023775461, 10.425061034991041, 10.934194165601433, 10.580235622153944, -17.515337920449952, -1.537113005053216, 10.026745250979713, 18.991835102357538, -9.10384082546339, -13.768910919694958, 5.4796127108483343, -8.9244398152912101, -11.548649423930978, 15.611931291120561, -8.908049321272264, -11.715023369923955, -8.5067714993118528, 8.669606218924919, 8.6186685199527773, -0.30417248355831389, -14.992242521244618, -11.237143275747075, 15.47971006097473, 7.0259516978639338, 10.065037137491313, 7.8868287877920169, -12.78707872542274, 7.4550220422461217, -16.404346129675449, 13.30456637678888, 9.9512518647161254, 7.5942461140693247, 3.7624642178418926, 9.8925251212558027, 14.146774666880505, -6.8718384088583475, -3.9981741290451276, 9.4511470096099846, 11.953465594032014, -11.215529849347973, 15.45129835369298, -7.3274909872161418, -4.9654010419320853, 7.7259448497328904, 9.8641694370073871, 1.1150439872404596, -10.084099868296887, 12.049728969177872, 13.071957031320016, 6.9097309932538309, -0.39659296549442785, -2.9217410655323537, -9.5561149122145306, 4.3607269616443673, -7.3795521023764916, -11.702904880630188, -1.5433424172046679, 15.057989444533467, -1.2565455630730749, 8.9880357276703204, 6.1129770246307693, 11.328910534091127, -2.9309511311565144, 11.207912500256919, -5.7404867114420988, 5.9950024570017471, -5.7910643096127341, 5.4208744627397838, -4.5716714958282108, 8.1298949011896831, -11.711123662713085, -12.017719365072217, -9.7122748441533471, -6.6047630492267668, -14.567681472229127, 7.7859507737798745, -13.177213209080305, 1.409111307587259, -1.5011399595588764, 12.057098493693852, 6.4171185080762427, -11.634125892968456, 11.044794834453159, -14.65558507132892, 13.72196292983746, 11.040226522930523, 6.2584434572994629, 10.730689310638432, -4.618515034465152, -1.2143032307321182, -7.4189186448958875, -7.669206125358758, -9.1157167366336314, 4.9339345930796563, 8.3824960985509129, 9.5126664524245168, -4.4260649375190164, 3.6144449441325635, -10.893425304008998, 8.3182825177379076, 13.628768431834336, 7.1730917891722781, 10.087828497729179, -10.489116618742848, 3.8856613599836791, -15.602509765497121, 7.2487646720202497, 12.218582462579505, 0.49211467796430364, -0.066484718374747426, -8.4329617736870581, -3.0127430939186324, 5.8144883342823128, 8.6729115102941527, 6.121491141792947, 12.360054236262307, 13.543171514998027, 12.1058948920289, -12.808248849582228, 7.3365859144200227, 2.0678328559134647, -1.7234260199225477, -13.299836520520724, -14.789707963127125, 6.6006452928112296, -11.956138068501044, -8.8455623029732315, -2.9088913906661178, -9.2132364101435229, -5.8435384831621802, 5.8547803901805464, 8.8126231169253515, 5.5222906262970843, -10.39753464755324, -12.211638565038697, 17.292580458421533, -8.5876470036423616, 4.7678649428994673, -8.4226853315054129, 8.700249181036531, 12.952510035514349, -7.6833594373108234, -3.0202355585479235, 8.7526883579126586, 11.663176352140155, 11.981232949878732, 11.031377901823634, -9.9501241218952927, -15.089187715856323, -10.601089041749843, -6.388179627159027, -4.6793834219078603, 3.9045854726147744, 9.8861746042718845, 0.042855319175376341, 14.3414643477855, -10.407450105082846, 3.0336086321363265, 13.793872516546351, 8.0501940947932038, 4.5991785638040428, -7.9303874601996593, 14.049591025574657, 17.380262133125449, -7.8459793004203222, 8.705024309261562, 6.6262770303011473, -10.086319438204431, 11.047015628809582, -7.3582609209654937, 8.2545626149113698, -11.989564968227834, 2.5193529800955838, -13.244337020280915, 4.8502499826361731, 14.474602979942233, 6.9452935547158612, -7.0450024656821544, -10.212713949627561, 13.849620674538945, 9.6833988531870752, -5.9081325241866898, -10.018382284344064, -6.6229672412657683, 13.879028902842597, -14.33382686638503, 1.9643288191802857, 0.16885137143821174, 4.2277292060928415, 10.805548194765471, -2.4964830143581742, -13.101405042095365, -13.302619999785827, -5.9241726080344108, 14.467933324092012, -8.4591055199339298, -10.184465268318146, -19.503434376811896, -15.229997219469618, 4.8345001979789908, 8.0104662922364813, 4.4017092080658031, -10.231395640484859, 3.9727378370282236, 14.2026231360392, -8.4599285310056196, -12.215460236402727, 5.394330835754074, -7.3356861012337502, -3.6795675270857404, 8.0787223556775896, -9.3271996634056915, -7.4552893328088974, 6.4828043001554736, -5.9782833623900453, -1.9874116057406432, -7.5397619196439196, 6.0283880381663453, 7.1105241207440057, 10.966410901409223, -12.375355422502105, -13.997023100211885, 7.7681673568373251, 6.0215105845435861, -0.44409932549081066, 5.2745451861685329, -7.2390124351491778, 9.8045113653170404, -3.5483006663908347, 8.4455042050030151, 6.750717907091107, -9.4719350776568856, -10.118021370720959, 2.7210293880017544, 8.2387439951112835, -8.6980762983904132, -11.317194860133458, 14.906902369795306, 8.5196626788523204, -5.7269320734414473, -6.4873691363023527, 11.118139263369434, -5.131366585591298, -5.1884527453006095, 2.1617883533714988, -3.2189908119713868, 9.1103687701917888, 6.1325191653578388, 2.411217194453199, -3.9050656149976706, -7.7536941054127926, -11.37779012533324, 2.2663187424687767, -14.954242385161651, -11.78196073144464, -5.9162280171814157, -14.78759715146799, 4.6557410991557671, -5.9735521657583144, 6.6275285823558434, 3.1024480512797177, 10.06871404793227, -10.543486892529438, -4.7522704594310561, -0.61601641164246079, -7.6838548304456449, 15.87411724597454, -11.665450977940896, -4.4365872375343205, 3.8247335268174831, 6.5326004536991329, 12.435275476860919, 8.2570494940406931, -3.3808435906687064, -4.7552502897093776, 4.5050634114776189, 10.672688962977514, 12.075918776794476, 1.7986308060137437, 4.1923629883751303, 11.752733569678064, -10.339474897439999, -16.186126637379726, -10.796197122972746, -9.214305404692233, 13.497270712719919, -9.4453197440185637, -15.69391834232802, 12.700707467329744, 4.7024717561391816, -10.327031105585643, 3.8477541445369963, -5.4896217736139521, 8.0519776507030638, 5.0341370218785944, 6.0456145072449026, -10.710449576292405, -8.6533964520637863, -12.257979327405108, -12.078971121036197, -10.881473761466781, 14.147239535310518, -2.6328735032346162, -15.716779182806999, -9.4242407781207191, 8.1426142269915331, 8.1611227842517025, -3.6252335542783207, -9.8025397455364676, 12.763568770750853, -9.5331346940178729, 4.9974585644427902, 5.9879812547323237, -6.2951737225996656, -3.9498007698755808, 10.122100576790197, 6.6618355586974447, 4.6997313218613739, 8.1707413233409465, 12.216703169693357, -12.426888921432578, -11.146002828849364, 6.3741370321379085, 7.6566213756894941, 2.2128160251661328, -5.4585144064775051, 11.139007406371906, -0.057747253315553991, -5.7619887506088023, 11.559333388163129, -7.7967134901859065, 1.5414474492709742, 10.25242202166922, -2.4376317695445988, 2.4485328874029482, -5.2527291639016829, 6.6966144242231938, 10.1056403723797, 9.6715660466767641, 12.199837902638398, -9.9779918730035462, 7.0398600566727509, 13.235714186918685, 6.2264247221125624, 0.49429650260801106, 11.011555724458017, -10.232864614422217, 1.0779763774514628, 2.3155686395401807, 13.340589994791694, -1.4927270737348184, -6.3253956772331872, 11.17892183418669, 4.6804642104000935, 9.9681133942788716, -15.354347685766472, 12.132973558045073, 16.863099386593074, -16.254027114251262, 8.9259599464113109, 4.4137266569998239, 13.238368561676072, 7.7024856954025447, -14.55028063381018, 2.9997759568600673, 5.9324435315675945, 8.9709392409618971, 9.9626050864742304, 6.0433161763769014, -11.094500816935717, 5.0773121433888173, 8.8653918721034444, 13.358789208346618, -3.3614825528284049, -13.508375784100188, -9.738962524121586, -6.8429863842661831, 9.3377608423949319, 9.1681044258536648, 2.6799203842673007, -8.1054023029408491, 3.7516032358089029, -8.7628704110935036, -11.00085544248971, -5.7755226059613731, -0.22395652308977335, -6.5936781093194714, -10.208015637116542, -13.848721312194234, 9.876782398829647, 9.437177021184711, 13.967144290195598, -1.5603470410313784, -12.959548633651529, -13.772706675904137, 9.4983989705496406, 4.8575506841930132, -13.426339798518415, -6.8882549582242767, 10.020963852018646, 10.738289970141997, -3.5322181002015958, 8.9790411088584392, -4.3462795772567171, 18.871182150839772, 6.1273012327332719, -6.5695645965276261, -8.2641966395439947, 0.85103670621664851, -16.902729440065183, 8.2697379486332849, -13.872113727992556, 13.619190901125434, -12.016737280921415, 1.639362596352592, 7.9267314843757219, 9.5913300412571747, -7.091648374422606, 5.8969231337131776, -6.4726579518981842, -4.3486881710817249, -9.3821085024104374, 10.917473221565318, 2.0279974118340656, 11.063658410060127, 6.9102623370057179, 6.2072533209374354, 11.520596314303049, -1.5151713191609242, -6.5680763433887153, 16.444160798635387, -5.3791474454897958, -2.2789027240044306, -11.56354929134242, 12.427791285408714, 8.610090315178283, -4.0511067764443416, 7.8692225359304206, -6.7079554414922891, 5.3999766490636549, -8.3179099730168247, 3.6976737002905016, -17.552301172297032, 6.1364424779438496, -9.7751306565781455, 6.1931141049267051, 16.865997593208082, 3.7361395596034965, 3.8267814056050402, 10.269712544637359, -12.797853578296257, -11.480255281563355, -10.876303582685193, -5.4324292010775084, -6.498689183845423, -3.8053637987749771, 13.525521072484571, -9.0129342094166027, 12.475202758118572, 0.35156955969912357, -13.374269540997016, -10.783210983288953, 10.807251662994091, -12.38126506382245, -5.8440304046740765, 6.1261248782561006, 10.426389918103478, -10.251207974472264, 5.7090742604182871, -7.3918232768010466, 14.40018609866692, 10.516336495878081, 5.0907717527746268, -10.790845519857502, -10.344691466108914, -0.81606960094075376, 5.8009330688061373, -6.4523871686156467, -13.804096639962156, -3.8036780326942807, 4.4403995451427036, -6.0454707691007998, -4.457208611267375, -9.3857200039694799, -4.2448642066932596, 11.390356801037848, -11.880538676942361, 16.20974462472968, -8.1065692722381755, 0.10605368805162664, -4.0113679201569177, -3.6764938206674111, 7.1589548870717845, -14.894945704589089, 19.416913935254374, 10.455230095243721, 19.094980784068856, 12.749384013660427, -10.507945794429656, -8.6068528180875727, 6.4779699897920597, -7.4688822584989687, 11.422119526982375, 12.683635758259111, 6.9141103733570297, -3.4807019716082186, -1.0659446865294615, -5.5303642351312705, -8.4756723068747828, 6.5495058918879581, 17.01132173619504, -8.6901951713633352, 0.73205096704640338, 12.18517096248061, 9.6207253649723565, -0.11293013857241167, 14.416380598864535, -3.4842485223978721, 8.538043021108594, 7.9853181927735468, -0.17854963422944989, 15.297082129948347, -8.6558345268403372, -8.8359118745350518, 6.8797931777949346, -13.579058234606006, 5.6056971276091021, -4.7325737401807606, -10.043277228766703, -8.496193000774646, 13.208604057890039, -2.6125003977921626, -9.0028742948434246, -8.3466406676435714, 4.0100931584168364, 8.607156558507457, -9.0376712732526396, 11.431914424287775, -0.65772909230851129, 9.5881935247089132, 14.183768387632979, 1.0198498160186804, 12.12574599778624, -8.8946934403733184, 17.588496278735882, -1.8672309187831959, -10.261023592868218, -10.98895162511046, -2.7839860694432046, 8.6202133936627021, -2.9996428552260639, 12.935041261170362, 10.751931118319499, 9.6367189688985686, 10.40091951562113, -9.8677128130479659, -0.85076949696133808, -8.7094472775564959, -2.7363773372569646, -10.036127502962517, -3.494015934190208, -4.2404950010667983, 4.590562970442905, -11.458041901958747, 9.3378179645353931, 12.328201773184455, 4.9840870074452948, 12.800873263637309, -12.800832354798168, -8.3806105857214561, -7.1573424713736697, -3.454056906476644, -10.568266292992009, -3.1957929098569293, -12.197503600264985, 14.897621213566064, 4.3558337641415363}; const char H_256_768_22_detected_data[] = { 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}; codec2-1.2.0/src/H_256_768_22.h000066400000000000000000000011001445607075400153070ustar00rootroot00000000000000/* FILE....: H_256_768_22.h Static arrays for LDPC codec H_256_768_22, generated by ldpc_gen_c_h_file.m. */ #define H_256_768_22_NUMBERPARITYBITS 512 #define H_256_768_22_MAX_ROW_WEIGHT 2 #define H_256_768_22_CODELENGTH 768 #define H_256_768_22_NUMBERROWSHCOLS 256 #define H_256_768_22_MAX_COL_WEIGHT 4 #define H_256_768_22_DEC_TYPE 0 #define H_256_768_22_MAX_ITER 100 #include extern const uint16_t H_256_768_22_H_rows[]; extern const uint16_t H_256_768_22_H_cols[]; extern const float H_256_768_22_input[]; extern const char H_256_768_22_detected_data[]; codec2-1.2.0/src/H_4096_8192_3d.c000066400000000000000000027552261445607075400155650ustar00rootroot00000000000000/* FILE....: H_4096_8192_3d.c Static arrays for LDPC codec H_4096_8192_3d, generated by ldpc_gen_c_h_file.m. */ #include "H_4096_8192_3d.h" #include const uint16_t H_4096_8192_3d_H_rows[] = { 68, 31, 76, 127, 68, 376, 36, 1118, 15, 68, 436, 58, 375, 32, 320, 150, 266, 2, 436, 191, 79, 52, 2109, 249, 340, 288, 258, 462, 2891, 21, 255, 24, 79, 167, 96, 86, 94, 16, 377, 163, 101, 477, 246, 60, 337, 217, 474, 53, 54, 16, 5, 1591, 124, 1740, 214, 1309, 427, 171, 23, 477, 202, 484, 185, 57, 33, 109, 1326, 392, 1507, 81, 415, 93, 810, 317, 52, 162, 425, 416, 146, 319, 110, 273, 170, 254, 119, 242, 147, 126, 413, 154, 287, 499, 91, 72, 1502, 104, 189, 235, 263, 312, 124, 71, 141, 769, 887, 132, 101, 390, 466, 641, 382, 393, 515, 139, 281, 157, 229, 266, 64, 112, 60, 280, 966, 1296, 248, 331, 56, 267, 50, 155, 982, 492, 906, 326, 78, 227, 374, 21, 429, 113, 491, 237, 252, 451, 101, 440, 7, 147, 373, 96, 678, 186, 311, 29, 448, 2335, 114, 212, 352, 367, 147, 82, 320, 300, 370, 132, 235, 255, 487, 101, 533, 379, 29, 352, 82, 41, 78, 181, 174, 1629, 104, 319, 23, 86, 187, 440, 571, 999, 114, 596, 587, 838, 333, 389, 139, 1006, 454, 699, 65, 309, 1187, 377, 31, 173, 189, 310, 536, 250, 4, 1516, 6, 41, 14, 49, 319, 378, 118, 3108, 175, 150, 107, 286, 167, 61, 594, 294, 13, 477, 2038, 124, 204, 1027, 245, 819, 159, 84, 153, 71, 38, 419, 574, 211, 290, 6, 886, 1, 1248, 183, 272, 470, 312, 115, 6, 264, 242, 2054, 7, 609, 74, 690, 2641, 434, 137, 265, 996, 9, 417, 192, 102, 22, 20, 1021, 299, 246, 207, 1678, 827, 357, 9, 169, 37, 153, 433, 51, 5, 44, 416, 406, 117, 165, 36, 178, 2887, 238, 2369, 98, 311, 1348, 855, 215, 1469, 605, 135, 987, 88, 244, 580, 2043, 164, 415, 372, 126, 237, 116, 236, 181, 99, 224, 154, 1191, 317, 2031, 835, 306, 200, 8, 15, 195, 176, 1658, 1072, 161, 341, 412, 291, 104, 2812, 180, 1587, 161, 147, 368, 411, 21, 1246, 457, 335, 24, 1258, 342, 1453, 136, 84, 104, 191, 152, 144, 333, 165, 6, 130, 370, 57, 54, 1302, 277, 53, 80, 18, 230, 122, 217, 21, 424, 184, 296, 1880, 827, 859, 2275, 42, 313, 1443, 354, 170, 110, 724, 264, 206, 17, 57, 354, 97, 43, 354, 321, 70, 471, 74, 1124, 425, 21, 35, 56, 382, 126, 168, 382, 132, 16, 152, 218, 483, 20, 3, 45, 503, 283, 357, 68, 495, 41, 124, 13, 14, 18, 285, 364, 291, 20, 92, 141, 349, 35, 354, 5, 222, 1080, 390, 113, 136, 181, 77, 235, 61, 2, 209, 73, 17, 10, 75, 10, 95, 99, 131, 468, 369, 94, 11, 278, 381, 228, 62, 106, 62, 79, 171, 35, 369, 3, 131, 222, 315, 336, 92, 49, 390, 2159, 1724, 80, 110, 27, 132, 3428, 328, 199, 112, 1267, 2731, 478, 776, 275, 60, 147, 1193, 388, 49, 25, 208, 1583, 364, 41, 192, 202, 100, 631, 210, 946, 35, 226, 159, 120, 866, 28, 149, 143, 2881, 171, 369, 66, 88, 1476, 290, 425, 950, 1200, 2139, 229, 272, 112, 324, 108, 892, 122, 105, 190, 52, 7, 239, 84, 179, 2273, 99, 20, 352, 322, 264, 288, 4, 232, 127, 231, 361, 446, 230, 247, 243, 17, 146, 1115, 31, 410, 111, 55, 380, 157, 355, 90, 358, 343, 1062, 251, 145, 219, 497, 263, 400, 1533, 72, 763, 1297, 2, 461, 163, 301, 276, 352, 434, 251, 205, 44, 39, 336, 610, 65, 165, 401, 444, 73, 373, 224, 109, 254, 452, 184, 177, 40, 221, 2, 92, 333, 1285, 76, 210, 59, 250, 3155, 291, 185, 271, 1009, 265, 216, 19, 34, 135, 216, 2352, 10, 1498, 228, 418, 2332, 11, 1639, 623, 20, 691, 1838, 140, 159, 280, 149, 36, 326, 1983, 32, 453, 261, 287, 202, 486, 57, 873, 182, 821, 17, 181, 385, 99, 3134, 47, 86, 282, 106, 63, 548, 226, 98, 283, 169, 306, 95, 87, 305, 367, 324, 2118, 75, 179, 164, 410, 81, 313, 37, 263, 337, 3044, 3043, 486, 206, 743, 348, 2588, 2127, 1666, 90, 183, 52, 302, 193, 52, 315, 191, 123, 14, 20, 479, 197, 2, 98, 2074, 144, 140, 129, 1064, 348, 203, 379, 293, 56, 317, 468, 413, 458, 305, 19, 85, 427, 272, 181, 324, 1120, 179, 137, 11, 54, 1473, 246, 566, 457, 46, 126, 38, 3204, 805, 80, 1693, 8, 2971, 1140, 69, 680, 254, 15, 163, 234, 28, 212, 349, 65, 133, 1199, 276, 2756, 64, 157, 21, 145, 125, 100, 792, 2192, 95, 611, 262, 32, 64, 76, 314, 58, 106, 127, 45, 1214, 603, 14, 546, 265, 414, 79, 2488, 2165, 16, 179, 47, 302, 45, 261, 153, 106, 460, 204, 174, 100, 260, 2071, 391, 338, 94, 654, 415, 692, 216, 161, 42, 369, 334, 91, 48, 43, 142, 441, 356, 22, 464, 208, 18, 205, 430, 124, 56, 731, 254, 459, 346, 1900, 160, 96, 73, 41, 360, 138, 314, 523, 9, 129, 466, 434, 184, 143, 100, 935, 86, 2755, 37, 2737, 165, 2371, 242, 202, 780, 288, 2690, 37, 28, 568, 275, 278, 89, 146, 449, 113, 721, 464, 300, 19, 541, 84, 291, 157, 145, 141, 494, 661, 2455, 66, 42, 370, 2187, 119, 248, 443, 81, 88, 175, 436, 320, 410, 234, 14, 106, 277, 170, 99, 379, 281, 8, 141, 51, 174, 367, 72, 251, 102, 1008, 335, 49, 407, 299, 307, 290, 614, 108, 406, 186, 978, 1511, 169, 64, 423, 1737, 384, 200, 42, 89, 301, 386, 34, 2076, 266, 4, 426, 630, 371, 277, 59, 5, 28, 190, 1999, 542, 316, 5, 141, 399, 178, 87, 214, 402, 2179, 58, 1961, 37, 322, 1681, 11, 223, 52, 131, 414, 129, 252, 37, 365, 76, 450, 651, 76, 363, 169, 43, 351, 307, 214, 42, 291, 149, 1970, 77, 48, 209, 286, 1664, 749, 1750, 55, 339, 2340, 231, 8, 1674, 356, 54, 115, 328, 124, 162, 66, 154, 123, 41, 143, 8, 179, 261, 293, 125, 422, 401, 10, 98, 193, 143, 125, 16, 30, 1399, 174, 276, 213, 2314, 147, 308, 198, 90, 71, 567, 185, 128, 487, 300, 548, 256, 163, 2087, 565, 111, 529, 393, 270, 172, 136, 292, 2158, 206, 83, 456, 121, 57, 4, 106, 50, 203, 996, 219, 77, 99, 69, 2711, 197, 43, 2206, 60, 33, 3799, 224, 96, 517, 307, 394, 1547, 229, 8, 1549, 492, 107, 809, 193, 225, 483, 1487, 1523, 2095, 18, 119, 76, 31, 1716, 88, 77, 301, 479, 187, 1289, 97, 19, 51, 366, 523, 99, 234, 355, 252, 176, 38, 403, 105, 12, 456, 1651, 3161, 374, 383, 225, 13, 394, 492, 82, 781, 1, 224, 98, 40, 58, 147, 9, 432, 75, 425, 100, 74, 8, 69, 88, 1251, 1606, 282, 289, 193, 338, 131, 211, 51, 7, 373, 2615, 938, 2, 38, 195, 13, 14, 341, 168, 85, 213, 432, 33, 153, 147, 2876, 13, 1016, 38, 213, 52, 194, 281, 2275, 279, 107, 117, 637, 312, 436, 1051, 16, 4, 181, 239, 266, 1874, 1568, 300, 1116, 27, 65, 8, 143, 197, 92, 223, 112, 121, 19, 70, 103, 366, 136, 1162, 683, 19, 1396, 24, 598, 206, 59, 343, 381, 96, 217, 381, 1049, 134, 372, 407, 21, 145, 58, 70, 92, 155, 776, 18, 323, 66, 752, 103, 202, 473, 612, 6, 455, 52, 648, 70, 123, 10, 9, 48, 25, 265, 306, 258, 229, 3, 1798, 308, 165, 1, 207, 945, 213, 12, 112, 491, 845, 117, 147, 645, 1359, 191, 97, 14, 1043, 7, 21, 141, 70, 340, 204, 406, 314, 2625, 26, 420, 90, 244, 262, 85, 3219, 38, 279, 222, 4, 115, 484, 71, 285, 228, 35, 734, 1307, 109, 178, 252, 120, 135, 499, 131, 51, 128, 380, 256, 784, 270, 306, 251, 397, 812, 22, 43, 40, 1351, 286, 79, 215, 57, 34, 1110, 951, 129, 150, 286, 243, 138, 63, 2306, 426, 285, 2206, 207, 1313, 2023, 197, 230, 1564, 128, 182, 350, 19, 66, 201, 17, 493, 94, 67, 64, 176, 435, 1861, 206, 701, 748, 77, 386, 96, 83, 476, 134, 1204, 365, 1010, 1972, 514, 2015, 210, 266, 167, 166, 117, 9, 176, 26, 1887, 59, 469, 71, 432, 194, 455, 243, 1498, 41, 1551, 156, 2340, 128, 1395, 201, 114, 99, 384, 31, 144, 168, 33, 75, 365, 302, 420, 168, 317, 61, 107, 211, 1282, 101, 376, 1281, 405, 179, 2145, 175, 142, 718, 12, 1091, 50, 170, 116, 160, 1669, 48, 178, 371, 464, 376, 1244, 2357, 295, 103, 15, 2401, 47, 408, 246, 2583, 292, 444, 1117, 1057, 399, 424, 280, 95, 869, 30, 350, 316, 186, 63, 323, 143, 432, 221, 48, 346, 107, 76, 106, 311, 64, 404, 2101, 1063, 88, 232, 427, 42, 49, 145, 109, 163, 78, 1974, 82, 45, 434, 18, 13, 404, 774, 857, 126, 297, 809, 187, 109, 1315, 277, 280, 245, 115, 205, 171, 1012, 24, 83, 446, 52, 1575, 144, 67, 72, 832, 144, 1086, 4, 432, 50, 860, 2999, 56, 140, 201, 17, 55, 112, 77, 275, 55, 460, 498, 371, 138, 494, 20, 390, 357, 2000, 353, 262, 115, 118, 164, 61, 461, 564, 187, 84, 472, 627, 461, 215, 1058, 342, 208, 1170, 131, 173, 20, 12, 150, 337, 118, 46, 407, 207, 306, 33, 138, 482, 188, 153, 53, 172, 72, 10, 369, 87, 818, 111, 2183, 175, 482, 123, 15, 19, 177, 50, 383, 362, 2492, 23, 967, 311, 254, 146, 25, 268, 22, 120, 7, 202, 54, 33, 257, 499, 3615, 379, 78, 430, 1811, 1206, 198, 80, 34, 55, 2265, 396, 144, 613, 92, 421, 267, 2173, 936, 166, 60, 2396, 9, 117, 83, 134, 906, 37, 142, 2164, 441, 149, 727, 1733, 133, 1727, 135, 237, 61, 12, 208, 45, 154, 287, 238, 259, 221, 102, 1837, 273, 456, 488, 674, 93, 2572, 182, 153, 22, 510, 158, 420, 12, 896, 698, 2057, 1698, 298, 152, 907, 149, 480, 115, 496, 766, 660, 160, 146, 359, 159, 211, 178, 197, 16, 182, 226, 260, 1227, 266, 1377, 113, 138, 35, 157, 3023, 1145, 389, 248, 353, 3411, 249, 70, 255, 2302, 1083, 229, 23, 1207, 41, 316, 765, 126, 2232, 1769, 315, 2182, 478, 433, 380, 58, 1119, 71, 100, 16, 175, 43, 3467, 146, 439, 79, 90, 2310, 377, 184, 353, 963, 1435, 18, 21, 51, 1466, 105, 71, 68, 27, 115, 334, 497, 166, 83, 278, 175, 139, 93, 77, 93, 59, 213, 100, 1038, 411, 495, 290, 279, 201, 182, 46, 257, 476, 33, 212, 263, 1473, 90, 33, 202, 772, 68, 490, 103, 152, 534, 136, 26, 101, 1129, 704, 1733, 104, 279, 482, 316, 82, 232, 361, 330, 162, 16, 336, 171, 2490, 14, 449, 24, 41, 2507, 196, 4, 771, 357, 111, 10, 370, 3087, 238, 140, 1906, 1379, 146, 1255, 116, 25, 331, 20, 130, 57, 308, 161, 64, 259, 475, 82, 51, 363, 221, 123, 424, 161, 191, 243, 82, 818, 306, 274, 1273, 2366, 340, 77, 544, 2445, 545, 337, 405, 32, 302, 114, 13, 134, 81, 59, 423, 392, 78, 118, 209, 398, 282, 163, 56, 156, 82, 465, 1318, 470, 795, 168, 271, 247, 730, 336, 401, 251, 267, 1259, 132, 2256, 84, 253, 160, 115, 384, 49, 72, 434, 17, 134, 133, 128, 209, 19, 262, 220, 259, 712, 155, 99, 31, 720, 3, 237, 62, 42, 1345, 453, 186, 195, 751, 202, 177, 49, 1591, 2409, 298, 4, 50, 346, 311, 13, 21, 39, 903, 146, 262, 147, 138, 30, 312, 45, 1199, 244, 1055, 2862, 1228, 440, 9, 236, 39, 18, 216, 396, 98, 1654, 32, 172, 1, 3126, 88, 495, 81, 1745, 284, 349, 70, 3072, 214, 131, 495, 1718, 558, 74, 35, 126, 125, 240, 59, 333, 826, 107, 241, 267, 431, 118, 26, 520, 388, 642, 118, 27, 119, 121, 32, 54, 224, 807, 360, 389, 1440, 233, 80, 171, 236, 43, 3133, 69, 1500, 137, 206, 149, 91, 236, 222, 1926, 1738, 447, 34, 276, 387, 457, 2558, 135, 410, 97, 331, 1815, 13, 302, 228, 15, 176, 54, 773, 2167, 158, 166, 167, 438, 78, 63, 2345, 24, 74, 364, 1047, 426, 178, 6, 216, 85, 507, 1594, 189, 179, 439, 47, 65, 371, 44, 130, 1062, 12, 795, 527, 745, 15, 17, 158, 208, 1001, 223, 922, 250, 23, 1477, 366, 347, 258, 819, 307, 169, 418, 312, 119, 22, 24, 42, 55, 803, 127, 190, 208, 7, 488, 427, 1173, 212, 32, 63, 255, 120, 71, 93, 130, 720, 143, 72, 2043, 204, 51, 1202, 1436, 40, 797, 699, 2823, 181, 357, 478, 407, 83, 186, 322, 122, 111, 5, 661, 27, 2500, 108, 35, 492, 201, 139, 508, 1141, 2216, 37, 321, 54, 1807, 467, 246, 1195, 57, 133, 1696, 125, 104, 220, 279, 1363, 564, 86, 171, 30, 166, 1521, 842, 1390, 420, 439, 197, 148, 322, 27, 1085, 1708, 294, 353, 194, 225, 812, 220, 95, 10, 408, 61, 25, 205, 2584, 248, 71, 6, 53, 429, 5, 214, 267, 67, 63, 90, 379, 184, 163, 28, 1357, 337, 339, 306, 360, 2898, 1620, 26, 180, 67, 193, 238, 152, 366, 190, 208, 169, 211, 200, 191, 960, 236, 204, 479, 174, 595, 86, 256, 15, 69, 441, 274, 489, 3194, 22, 1070, 11, 87, 811, 647, 213, 2751, 310, 854, 2167, 438, 1327, 59, 130, 173, 138, 140, 243, 7, 301, 205, 103, 293, 283, 89, 325, 339, 447, 268, 154, 485, 6, 281, 1009, 80, 1139, 118, 873, 47, 59, 339, 76, 132, 315, 25, 57, 1153, 284, 49, 29, 274, 2, 133, 381, 316, 22, 1175, 1189, 74, 23, 126, 42, 1, 24, 365, 1260, 137, 464, 638, 336, 449, 452, 231, 121, 259, 1421, 72, 191, 133, 34, 15, 49, 1176, 447, 24, 50, 333, 1046, 175, 2344, 193, 225, 102, 85, 395, 299, 533, 124, 62, 169, 450, 899, 11, 138, 200, 251, 42, 229, 61, 194, 2177, 16, 344, 226, 114, 465, 2723, 65, 16, 20, 350, 93, 196, 197, 1639, 241, 23, 57, 1700, 2291, 65, 279, 234, 307, 95, 75, 10, 106, 302, 443, 108, 105, 1337, 800, 18, 220, 288, 150, 76, 40, 151, 78, 475, 74, 113, 196, 150, 73, 117, 1039, 325, 2, 707, 176, 69, 20, 306, 175, 48, 249, 377, 44, 227, 597, 32, 150, 3, 247, 413, 1488, 192, 271, 335, 1004, 258, 66, 32, 24, 302, 11, 30, 321, 252, 84, 329, 171, 418, 384, 171, 297, 2787, 2109, 853, 84, 11, 417, 429, 86, 40, 2484, 36, 103, 40, 2833, 259, 38, 110, 680, 417, 191, 329, 137, 193, 2, 2942, 289, 145, 444, 460, 196, 1015, 95, 327, 445, 259, 440, 236, 79, 125, 28, 37, 141, 37, 9, 200, 40, 7, 12, 95, 142, 319, 321, 193, 303, 331, 198, 220, 97, 321, 364, 468, 18, 241, 1286, 59, 2066, 226, 391, 2581, 580, 334, 267, 68, 1032, 73, 70, 257, 151, 81, 170, 261, 391, 48, 82, 514, 15, 46, 305, 965, 213, 75, 403, 233, 373, 1352, 220, 262, 386, 399, 341, 82, 276, 112, 245, 116, 168, 246, 1612, 160, 88, 157, 199, 73, 79, 3, 18, 246, 39, 1034, 104, 1664, 114, 336, 316, 139, 93, 50, 145, 55, 30, 180, 139, 201, 71, 263, 1378, 176, 269, 39, 145, 272, 111, 499, 49, 196, 530, 743, 308, 42, 1157, 349, 121, 258, 64, 46, 433, 31, 573, 28, 300, 82, 1881, 2689, 160, 53, 109, 325, 50, 286, 123, 142, 36, 15, 28, 2022, 35, 912, 112, 368, 393, 441, 12, 130, 19, 108, 69, 1311, 74, 921, 408, 68, 860, 249, 120, 50, 180, 190, 252, 733, 315, 127, 7, 297, 116, 157, 179, 41, 148, 110, 329, 400, 86, 63, 192, 301, 175, 31, 242, 30, 3, 123, 189, 44, 115, 174, 39, 488, 155, 494, 769, 307, 101, 3, 3129, 26, 403, 66, 1212, 35, 1711, 444, 1824, 231, 20, 188, 215, 84, 2247, 95, 1347, 43, 2646, 79, 2255, 2533, 864, 787, 85, 290, 39, 183, 149, 1997, 187, 484, 419, 986, 3577, 421, 437, 175, 117, 96, 41, 234, 241, 485, 646, 447, 5, 174, 167, 129, 250, 355, 102, 8, 75, 29, 2246, 1574, 2318, 53, 23, 19, 173, 67, 58, 342, 297, 389, 44, 195, 335, 381, 163, 412, 348, 235, 877, 231, 929, 406, 6, 371, 282, 121, 39, 1208, 86, 105, 336, 46, 186, 1827, 390, 181, 145, 22, 240, 419, 89, 178, 327, 136, 2943, 26, 184, 189, 48, 792, 93, 207, 119, 392, 1605, 96, 62, 45, 367, 589, 274, 45, 1344, 36, 762, 214, 252, 198, 261, 67, 198, 1942, 50, 1403, 105, 138, 2309, 933, 320, 295, 101, 1147, 74, 361, 325, 301, 161, 491, 470, 447, 1767, 144, 305, 1350, 128, 430, 164, 243, 465, 451, 221, 128, 233, 144, 294, 11, 19, 111, 253, 77, 198, 196, 248, 395, 257, 58, 332, 166, 129, 256, 53, 93, 185, 261, 319, 1780, 97, 130, 13, 1430, 131, 133, 139, 282, 502, 302, 947, 256, 143, 55, 56, 3, 1457, 133, 162, 512, 170, 29, 6, 118, 556, 151, 426, 4, 76, 83, 116, 58, 55, 724, 64, 186, 323, 1656, 619, 68, 195, 3178, 80, 36, 420, 31, 227, 173, 368, 122, 174, 168, 49, 108, 60, 239, 258, 280, 8, 1688, 177, 208, 308, 143, 1126, 494, 412, 232, 739, 46, 155, 129, 57, 198, 254, 223, 1442, 111, 258, 230, 228, 255, 269, 404, 236, 1227, 1, 35, 1372, 207, 271, 257, 362, 1697, 16, 311, 384, 26, 245, 340, 611, 81, 659, 210, 67, 398, 107, 825, 178, 116, 346, 65, 151, 463, 485, 214, 90, 51, 47, 233, 48, 30, 33, 485, 451, 396, 244, 423, 351, 85, 226, 56, 231, 75, 47, 1959, 291, 3, 363, 103, 155, 87, 424, 1414, 400, 336, 345, 493, 203, 109, 444, 1456, 5, 2138, 1737, 252, 189, 278, 348, 64, 2736, 823, 171, 409, 204, 1371, 579, 1707, 214, 154, 38, 150, 124, 113, 132, 239, 86, 242, 61, 254, 516, 1464, 393, 242, 167, 18, 177, 221, 62, 302, 1175, 347, 1953, 94, 351, 312, 648, 815, 118, 170, 50, 61, 295, 1386, 210, 313, 149, 71, 238, 95, 1210, 531, 65, 34, 111, 1076, 94, 217, 49, 66, 44, 25, 150, 11, 2487, 26, 43, 283, 177, 155, 83, 1022, 149, 266, 158, 134, 898, 94, 205, 700, 172, 1897, 247, 168, 480, 338, 425, 260, 55, 235, 29, 33, 28, 95, 1260, 360, 529, 98, 2793, 326, 176, 290, 478, 387, 93, 435, 296, 474, 481, 38, 1018, 116, 794, 1538, 281, 1078, 274, 357, 205, 180, 383, 27, 266, 264, 67, 8, 62, 30, 58, 109, 297, 263, 1013, 16, 198, 33, 343, 674, 212, 60, 500, 2263, 129, 284, 480, 172, 52, 88, 148, 442, 31, 1561, 682, 210, 320, 210, 1042, 398, 189, 138, 375, 76, 183, 165, 239, 74, 407, 237, 484, 473, 468, 38, 294, 1412, 325, 6, 191, 238, 133, 1218, 25, 643, 328, 182, 451, 854, 169, 209, 217, 337, 2360, 1527, 197, 298, 490, 187, 27, 80, 528, 410, 49, 126, 144, 496, 129, 1341, 482, 2042, 210, 187, 788, 174, 192, 380, 472, 462, 1414, 162, 127, 237, 140, 146, 153, 551, 235, 574, 142, 2004, 1579, 147, 1891, 1034, 372, 102, 15, 58, 341, 228, 108, 91, 10, 1814, 400, 81, 124, 72, 125, 442, 391, 261, 1193, 50, 79, 48, 28, 171, 103, 828, 161, 164, 513, 147, 154, 196, 888, 17, 54, 441, 369, 3, 1424, 102, 1683, 468, 1221, 185, 14, 55, 159, 90, 122, 323, 286, 263, 15, 253, 110, 123, 2489, 109, 346, 363, 89, 6, 126, 75, 21, 28, 443, 172, 293, 294, 299, 1787, 94, 177, 94, 377, 161, 64, 104, 1631, 225, 12, 1205, 1454, 997, 229, 1972, 35, 258, 339, 178, 81, 334, 46, 345, 283, 165, 39, 339, 90, 61, 958, 44, 97, 232, 149, 349, 360, 598, 193, 53, 313, 5, 51, 201, 277, 55, 250, 268, 399, 264, 1305, 116, 497, 67, 374, 56, 464, 502, 25, 325, 745, 445, 11, 298, 1089, 1126, 2482, 3187, 448, 253, 344, 470, 51, 104, 439, 89, 38, 32, 2004, 271, 183, 29, 846, 64, 120, 316, 124, 45, 378, 119, 51, 121, 120, 791, 12, 1165, 376, 214, 1105, 77, 310, 34, 63, 207, 54, 2, 481, 247, 94, 1841, 2890, 349, 24, 2398, 2665, 56, 8, 825, 303, 403, 234, 261, 1735, 152, 463, 87, 32, 870, 115, 347, 44, 4, 258, 134, 110, 118, 483, 135, 48, 227, 105, 289, 171, 69, 93, 115, 2837, 618, 402, 230, 186, 27, 395, 45, 287, 120, 474, 326, 198, 420, 185, 136, 1402, 194, 1048, 245, 269, 127, 169, 156, 657, 44, 393, 799, 84, 1081, 9, 898, 327, 317, 1089, 340, 362, 214, 153, 246, 2124, 437, 69, 822, 59, 200, 323, 189, 122, 215, 419, 44, 114, 77, 361, 44, 101, 798, 36, 222, 259, 2254, 25, 380, 2687, 899, 5, 31, 175, 259, 60, 344, 148, 140, 190, 45, 2476, 375, 188, 526, 68, 96, 151, 143, 22, 63, 112, 96, 273, 9, 107, 160, 2366, 301, 220, 423, 1803, 3, 352, 1418, 1703, 31, 230, 6, 348, 246, 9, 72, 105, 46, 67, 68, 152, 300, 362, 1502, 253, 753, 39, 379, 223, 2454, 264, 1999, 350, 145, 324, 195, 92, 439, 337, 53, 121, 187, 117, 1006, 54, 280, 276, 454, 26, 416, 1634, 32, 1288, 20, 149, 377, 255, 131, 434, 1554, 75, 411, 489, 258, 69, 84, 3596, 211, 231, 91, 200, 238, 62, 266, 919, 413, 154, 97, 453, 27, 1439, 341, 218, 338, 123, 240, 405, 323, 330, 327, 123, 162, 411, 240, 217, 337, 146, 358, 53, 97, 575, 233, 253, 221, 437, 327, 2114, 3, 469, 1395, 3251, 13, 33, 162, 3013, 2132, 1870, 122, 836, 40, 60, 24, 477, 292, 326, 9, 44, 186, 352, 25, 284, 593, 1085, 201, 34, 1050, 297, 460, 288, 453, 179, 900, 128, 221, 117, 139, 204, 249, 413, 1640, 335, 421, 76, 122, 1417, 200, 534, 19, 135, 101, 426, 223, 746, 1094, 490, 177, 890, 240, 664, 58, 12, 172, 270, 113, 81, 13, 1044, 2216, 78, 294, 155, 17, 167, 288, 1757, 2, 39, 1238, 498, 208, 1221, 390, 288, 193, 98, 178, 42, 259, 148, 122, 28, 10, 231, 213, 11, 29, 58, 29, 1997, 407, 225, 265, 236, 189, 57, 191, 82, 342, 22, 1390, 143, 2321, 47, 60, 7, 14, 30, 102, 215, 5, 204, 85, 265, 31, 223, 2316, 153, 62, 347, 1584, 107, 98, 185, 174, 452, 1784, 181, 1081, 952, 705, 82, 444, 342, 11, 114, 40, 367, 1954, 7, 192, 164, 33, 116, 209, 62, 246, 384, 1621, 500, 303, 170, 156, 863, 26, 1264, 189, 334, 304, 422, 294, 440, 1343, 57, 104, 156, 102, 2620, 106, 323, 377, 1592, 1675, 460, 30, 172, 110, 80, 36, 291, 10, 391, 51, 160, 227, 81, 2244, 271, 778, 41, 757, 29, 118, 91, 140, 21, 46, 442, 355, 27, 35, 1684, 100, 199, 2284, 88, 209, 101, 125, 140, 163, 93, 913, 213, 180, 62, 375, 156, 92, 205, 137, 1335, 376, 125, 32, 103, 310, 230, 29, 194, 4, 299, 256, 147, 36, 431, 371, 283, 22, 7, 385, 18, 90, 207, 112, 71, 599, 24, 1103, 445, 2, 413, 17, 12, 60, 1, 1250, 157, 487, 1714, 713, 148, 187, 148, 196, 432, 979, 332, 108, 295, 108, 104, 93, 1574, 10, 496, 107, 53, 5, 499, 321, 48, 670, 802, 156, 1832, 14, 96, 78, 410, 85, 1417, 2657, 280, 245, 284, 148, 189, 2, 52, 54, 384, 127, 1037, 140, 119, 73, 410, 1690, 322, 148, 396, 1988, 248, 4, 264, 375, 98, 153, 283, 345, 8, 402, 879, 159, 3552, 283, 26, 186, 295, 92, 110, 453, 361, 107, 1937, 202, 1653, 314, 363, 14, 419, 271, 1000, 558, 86, 23, 1, 195, 878, 421, 2020, 46, 73, 228, 400, 68, 389, 34, 442, 273, 337, 1373, 408, 238, 2511, 127, 440, 521, 105, 40, 171, 1125, 257, 244, 410, 37, 160, 52, 359, 1460, 40, 400, 3423, 408, 357, 473, 230, 141, 415, 237, 55, 293, 34, 305, 346, 205, 155, 642, 294, 173, 166, 306, 25, 358, 251, 381, 46, 34, 452, 179, 1302, 118, 247, 2665, 575, 108, 804, 788, 333, 154, 283, 327, 1528, 3318, 87, 431, 173, 3183, 128, 2880, 457, 63, 408, 347, 891, 376, 306, 41, 493, 460, 588, 212, 2597, 2526, 846, 1253, 975, 1391, 2911, 1416, 714, 114, 149, 182, 155, 1248, 330, 343, 952, 3005, 402, 1128, 314, 123, 973, 1968, 2265, 358, 192, 358, 159, 2557, 465, 1863, 427, 3469, 443, 219, 105, 843, 365, 523, 553, 2143, 362, 496, 1334, 412, 2254, 1135, 1523, 448, 1076, 971, 148, 1640, 858, 2303, 318, 475, 192, 310, 1771, 501, 206, 1153, 470, 367, 467, 1621, 337, 874, 200, 125, 2952, 188, 411, 1887, 367, 2146, 256, 548, 245, 2576, 1794, 385, 980, 2757, 1931, 1531, 459, 1108, 1425, 617, 400, 757, 255, 305, 158, 2370, 328, 3181, 1138, 1901, 505, 1267, 281, 386, 1177, 192, 1165, 2945, 1327, 345, 1234, 402, 388, 2009, 2119, 380, 1965, 485, 3092, 1122, 257, 731, 989, 194, 2365, 459, 1265, 324, 1077, 412, 643, 2877, 1834, 307, 397, 372, 2087, 318, 2276, 362, 2710, 304, 436, 308, 1632, 307, 2019, 490, 313, 442, 911, 166, 358, 418, 199, 1819, 105, 1024, 617, 711, 269, 1785, 2107, 1691, 138, 2662, 1212, 2010, 388, 428, 344, 1709, 2451, 1135, 280, 423, 1458, 977, 328, 428, 805, 2078, 2848, 434, 602, 2234, 2798, 389, 496, 353, 413, 468, 240, 3365, 264, 625, 2641, 2643, 257, 248, 1143, 732, 427, 498, 2988, 2462, 215, 1525, 687, 1814, 188, 168, 750, 3797, 81, 2736, 995, 1491, 2140, 2951, 3726, 500, 1379, 315, 459, 1955, 331, 244, 96, 1411, 557, 2204, 151, 1736, 269, 1766, 3451, 1205, 1783, 1897, 1453, 567, 781, 287, 196, 65, 141, 2742, 360, 372, 450, 1978, 1817, 414, 299, 1791, 215, 270, 913, 903, 184, 83, 762, 2185, 120, 1780, 249, 362, 3840, 279, 2897, 240, 2032, 3508, 2181, 454, 2528, 1872, 261, 2271, 161, 262, 1271, 2407, 206, 735, 718, 289, 456, 482, 284, 1087, 148, 227, 1730, 1868, 1982, 3057, 2713, 2632, 2203, 250, 116, 563, 251, 1925, 3121, 1585, 1865, 1873, 431, 199, 3163, 242, 1625, 304, 2137, 922, 1213, 3547, 2251, 2934, 487, 105, 3311, 1567, 1545, 270, 358, 269, 1010, 2878, 378, 487, 2105, 1939, 284, 1790, 89, 212, 1434, 927, 103, 1910, 185, 3422, 1822, 280, 439, 463, 1280, 434, 2316, 3724, 1581, 2947, 1095, 492, 1880, 959, 232, 278, 3335, 1960, 223, 304, 140, 920, 127, 121, 386, 1880, 499, 851, 253, 1945, 629, 981, 372, 292, 591, 127, 924, 619, 2070, 38, 213, 459, 1693, 73, 37, 287, 2374, 359, 1591, 238, 778, 894, 186, 156, 351, 23, 460, 486, 3248, 539, 242, 174, 1235, 91, 483, 38, 432, 2510, 601, 2825, 622, 310, 605, 1975, 344, 17, 272, 162, 774, 153, 224, 385, 176, 511, 751, 1099, 1024, 905, 36, 1062, 1083, 235, 333, 1154, 227, 125, 186, 376, 392, 1616, 233, 573, 3513, 678, 703, 397, 494, 2998, 2252, 1846, 155, 43, 1274, 3925, 430, 256, 474, 1587, 2865, 620, 1459, 396, 281, 298, 2733, 459, 309, 294, 302, 2307, 973, 2012, 1241, 2158, 290, 836, 338, 2082, 223, 1450, 324, 329, 1181, 45, 299, 267, 3075, 1291, 1252, 242, 1143, 1861, 445, 986, 2767, 2555, 3371, 280, 1388, 374, 1830, 458, 932, 693, 158, 438, 178, 487, 247, 173, 486, 3590, 124, 181, 2368, 379, 694, 474, 977, 651, 1082, 466, 366, 815, 465, 702, 359, 403, 170, 2127, 371, 2281, 1230, 1112, 438, 569, 555, 194, 1019, 2190, 2566, 282, 352, 670, 951, 295, 491, 1854, 673, 2132, 2787, 224, 1261, 1427, 3572, 388, 491, 493, 1863, 250, 137, 264, 349, 3137, 417, 496, 434, 2034, 243, 1099, 309, 137, 278, 782, 1659, 1858, 182, 923, 21, 208, 364, 1924, 265, 334, 466, 880, 3439, 315, 290, 2259, 3364, 358, 440, 264, 392, 1588, 730, 3473, 144, 1694, 313, 3738, 3312, 113, 3192, 2694, 395, 2196, 2245, 2222, 329, 2413, 397, 177, 465, 3080, 158, 1570, 334, 688, 216, 1434, 78, 2847, 208, 2021, 384, 450, 709, 262, 3920, 292, 354, 1485, 2334, 373, 2210, 1572, 1282, 592, 2098, 676, 199, 89, 2271, 492, 2085, 2172, 384, 364, 459, 1184, 499, 929, 47, 305, 466, 3165, 3121, 2059, 303, 1147, 979, 3144, 3190, 2067, 169, 310, 401, 916, 354, 1963, 3143, 477, 719, 283, 152, 640, 1760, 422, 296, 3069, 1104, 141, 369, 1795, 1521, 233, 757, 1858, 122, 3882, 476, 1217, 2217, 315, 2564, 126, 510, 448, 954, 570, 1338, 571, 457, 83, 217, 1973, 489, 1829, 2223, 56, 438, 544, 3491, 1080, 1170, 2056, 180, 3206, 1933, 332, 898, 886, 2384, 320, 1608, 334, 232, 543, 566, 261, 2759, 817, 3324, 422, 170, 983, 158, 392, 275, 948, 2686, 1726, 692, 844, 2897, 279, 178, 461, 223, 222, 262, 381, 1529, 928, 1801, 1447, 354, 1041, 86, 2596, 2436, 525, 713, 260, 1404, 219, 1102, 203, 393, 907, 313, 330, 490, 2180, 2828, 1279, 666, 196, 1547, 2442, 3565, 308, 2817, 157, 1156, 2821, 220, 232, 500, 313, 1036, 636, 449, 1201, 469, 389, 2274, 2048, 463, 3091, 3573, 1107, 1618, 993, 3098, 225, 183, 300, 931, 665, 156, 661, 537, 268, 1512, 2705, 463, 312, 239, 240, 992, 1367, 2872, 1984, 4015, 284, 3403, 909, 457, 2342, 1792, 2954, 443, 112, 595, 716, 621, 139, 222, 967, 303, 1297, 969, 766, 127, 1152, 89, 1584, 217, 1545, 374, 572, 2780, 3024, 216, 135, 405, 2404, 2637, 440, 519, 107, 143, 407, 2223, 458, 492, 528, 145, 480, 2834, 206, 368, 635, 1485, 400, 671, 167, 293, 976, 239, 1096, 132, 2675, 462, 213, 883, 2719, 2408, 518, 1650, 203, 1442, 1595, 2290, 2091, 1656, 375, 1449, 2208, 420, 244, 2060, 480, 808, 2707, 103, 2425, 344, 309, 1799, 2296, 375, 1972, 369, 161, 88, 1635, 2008, 1670, 865, 732, 396, 1000, 1269, 185, 1603, 471, 2873, 209, 2593, 473, 325, 2959, 188, 227, 168, 289, 424, 1824, 857, 327, 456, 180, 1304, 1023, 228, 402, 211, 46, 1645, 513, 2025, 149, 314, 445, 3019, 145, 243, 394, 1834, 2150, 1235, 3398, 357, 2364, 3430, 738, 86, 2850, 1721, 266, 1537, 1462, 792, 618, 1776, 260, 637, 188, 144, 87, 2643, 2248, 314, 868, 437, 585, 206, 232, 203, 159, 1602, 339, 89, 2116, 941, 380, 230, 2846, 521, 2336, 363, 492, 2638, 891, 405, 214, 733, 856, 1869, 417, 198, 3132, 1876, 335, 1700, 499, 1220, 439, 160, 841, 3529, 300, 422, 1026, 122, 341, 136, 142, 289, 405, 1460, 434, 446, 493, 1599, 2778, 498, 94, 2765, 164, 54, 4029, 1943, 389, 613, 428, 1348, 2079, 378, 247, 2585, 764, 2644, 2436, 240, 448, 1957, 1948, 2006, 2281, 47, 489, 368, 91, 1752, 160, 174, 1675, 1172, 2322, 2085, 98, 215, 482, 901, 3542, 1765, 373, 1035, 423, 1044, 409, 1345, 353, 193, 2019, 3035, 3463, 394, 2135, 588, 188, 1240, 1983, 210, 803, 3636, 2311, 99, 66, 250, 1093, 1301, 999, 338, 964, 196, 153, 13, 1501, 910, 1523, 2884, 1145, 1672, 420, 498, 1386, 1488, 78, 1555, 1162, 3026, 3085, 368, 142, 229, 17, 816, 1680, 1947, 91, 756, 1768, 1116, 210, 437, 3114, 70, 3659, 602, 2218, 63, 1465, 374, 2324, 468, 151, 249, 2543, 468, 467, 2523, 36, 61, 211, 392, 611, 3077, 2006, 464, 3367, 383, 526, 471, 268, 335, 229, 262, 460, 2702, 937, 237, 1860, 2062, 3231, 2949, 2913, 114, 3156, 332, 1847, 222, 353, 355, 990, 235, 1483, 1792, 1843, 480, 582, 3258, 98, 159, 253, 1410, 761, 370, 852, 62, 995, 128, 1587, 170, 507, 1731, 1173, 2576, 878, 1826, 2385, 1166, 228, 164, 442, 217, 151, 428, 674, 340, 2014, 201, 2006, 472, 222, 162, 477, 3163, 489, 23, 130, 969, 1188, 1832, 338, 1758, 1933, 1207, 932, 113, 1760, 133, 207, 411, 304, 753, 205, 462, 2087, 3483, 87, 1595, 151, 358, 2276, 1431, 3447, 2025, 361, 226, 98, 375, 942, 173, 392, 243, 387, 988, 2574, 790, 1160, 1097, 267, 942, 2351, 177, 204, 272, 460, 1103, 1075, 376, 483, 388, 1365, 1634, 1257, 354, 510, 3017, 2323, 142, 799, 338, 479, 3114, 1547, 204, 219, 387, 392, 371, 416, 3772, 1746, 2150, 2920, 397, 1554, 2064, 2972, 1856, 3120, 190, 281, 444, 493, 167, 321, 263, 1243, 414, 236, 448, 485, 2412, 2591, 342, 780, 793, 437, 1351, 104, 272, 1152, 290, 1952, 570, 1867, 2484, 3285, 2860, 1213, 349, 436, 478, 221, 358, 458, 1606, 3655, 2835, 1657, 158, 638, 242, 2696, 313, 3098, 1581, 3270, 263, 3014, 399, 2708, 285, 2385, 4030, 2487, 1224, 2568, 265, 211, 1254, 465, 1996, 782, 400, 442, 289, 274, 2253, 3381, 709, 1398, 1650, 1016, 556, 2320, 196, 1481, 1440, 561, 1261, 67, 275, 304, 590, 1952, 66, 1362, 2545, 1442, 686, 2531, 2756, 324, 120, 1272, 2461, 2533, 503, 2319, 3249, 398, 1845, 1452, 1666, 1596, 1797, 323, 371, 1629, 77, 432, 461, 453, 331, 334, 164, 473, 3457, 97, 3416, 530, 1890, 241, 2376, 156, 1358, 2701, 2111, 397, 3357, 3569, 445, 278, 322, 450, 201, 459, 2806, 136, 80, 3283, 287, 125, 1036, 2876, 1226, 214, 418, 2128, 847, 122, 2352, 442, 2572, 340, 394, 742, 453, 1737, 264, 216, 1987, 534, 2619, 271, 316, 446, 3242, 1043, 2075, 23, 1210, 111, 933, 3054, 1139, 2613, 2010, 251, 1354, 364, 237, 839, 336, 3130, 990, 388, 178, 1284, 404, 2268, 495, 3545, 402, 1641, 236, 233, 1254, 312, 3086, 2313, 345, 183, 2532, 934, 775, 2811, 1936, 884, 2285, 1197, 1024, 277, 135, 292, 245, 350, 410, 385, 729, 3236, 649, 1084, 155, 925, 667, 201, 84, 1711, 1663, 364, 1539, 209, 3401, 172, 2394, 330, 1056, 673, 30, 126, 259, 129, 504, 1393, 2520, 1349, 3202, 391, 267, 1957, 43, 342, 366, 505, 116, 1035, 2148, 213, 1033, 580, 3711, 2582, 281, 1544, 2663, 3030, 328, 239, 206, 233, 2341, 423, 232, 998, 121, 2337, 417, 2358, 1521, 294, 78, 3158, 27, 152, 2507, 468, 3138, 670, 785, 3337, 560, 2942, 890, 1808, 872, 2273, 356, 1028, 80, 66, 359, 470, 426, 1306, 407, 3472, 409, 1417, 2022, 346, 974, 1151, 1844, 1710, 3194, 954, 176, 152, 1984, 1067, 967, 332, 2462, 3460, 2305, 2308, 561, 2039, 2691, 242, 1908, 243, 993, 3125, 3693, 765, 518, 1802, 395, 1923, 767, 488, 30, 377, 391, 1006, 1853, 1226, 1754, 195, 1060, 203, 864, 3095, 1358, 759, 251, 1005, 3454, 1155, 338, 2315, 2582, 3102, 405, 1804, 1215, 111, 1441, 3296, 273, 3979, 2953, 392, 2554, 1607, 457, 3149, 75, 1907, 3309, 137, 83, 2356, 703, 3618, 239, 1612, 94, 320, 2955, 2126, 639, 761, 1178, 1455, 233, 113, 95, 1786, 425, 817, 151, 1267, 218, 419, 1045, 406, 137, 2357, 1137, 475, 445, 314, 1528, 129, 473, 1054, 1883, 476, 1691, 1556, 408, 1205, 202, 100, 2502, 679, 59, 3766, 307, 1636, 289, 633, 211, 3658, 538, 979, 330, 304, 1074, 195, 356, 1381, 2525, 2225, 1877, 218, 1017, 532, 2721, 135, 694, 1779, 347, 331, 333, 383, 190, 3340, 1245, 1725, 531, 451, 3062, 2862, 2368, 1143, 397, 364, 324, 408, 3358, 1037, 144, 2537, 1513, 438, 1736, 218, 104, 346, 1058, 180, 224, 614, 395, 241, 320, 616, 373, 96, 1719, 297, 303, 2009, 223, 199, 2496, 2306, 2602, 624, 1527, 2974, 2393, 1141, 604, 1177, 2548, 1954, 387, 480, 136, 2138, 984, 366, 194, 944, 853, 1169, 3202, 191, 458, 2520, 404, 1875, 1180, 377, 249, 211, 809, 1706, 2369, 1778, 1711, 345, 1645, 1192, 343, 770, 2098, 1904, 2190, 213, 2746, 307, 291, 444, 199, 474, 187, 247, 2061, 3022, 258, 411, 292, 244, 25, 1541, 273, 1561, 1469, 397, 522, 138, 848, 2232, 254, 385, 1526, 2508, 635, 2102, 337, 1447, 1744, 1400, 421, 1616, 2580, 335, 42, 81, 1292, 356, 2005, 229, 419, 1182, 461, 1810, 362, 247, 1868, 327, 445, 1745, 272, 1149, 2940, 1614, 1954, 234, 415, 160, 454, 606, 2666, 343, 3395, 156, 445, 43, 3361, 322, 1466, 801, 2629, 1629, 716, 146, 3444, 3040, 141, 1741, 1901, 2090, 506, 820, 137, 189, 779, 68, 843, 844, 467, 388, 1128, 1190, 789, 1781, 911, 439, 821, 123, 1554, 247, 454, 233, 340, 405, 3421, 669, 1457, 1876, 249, 244, 389, 1194, 243, 3552, 449, 3222, 185, 2027, 3257, 154, 1003, 1813, 1950, 2249, 1198, 229, 312, 1669, 1926, 2869, 199, 465, 1731, 655, 2684, 228, 420, 385, 26, 2033, 1519, 1063, 2891, 165, 417, 1053, 2754, 406, 246, 3252, 150, 1699, 2038, 2990, 549, 461, 2149, 1517, 158, 644, 1966, 419, 182, 3799, 52, 657, 1582, 430, 490, 1269, 673, 2763, 671, 2597, 355, 500, 172, 461, 1692, 320, 1011, 307, 311, 1717, 520, 370, 1490, 1998, 344, 477, 2930, 400, 226, 1342, 415, 332, 331, 2249, 499, 1354, 313, 1932, 1171, 1446, 2524, 385, 67, 163, 466, 318, 134, 218, 350, 1583, 432, 129, 2752, 388, 889, 1283, 2422, 120, 1077, 3458, 3183, 430, 456, 664, 1589, 295, 487, 804, 162, 569, 313, 904, 156, 3105, 2312, 462, 1159, 1730, 2503, 1470, 1295, 3540, 114, 500, 99, 2029, 1684, 463, 2909, 113, 319, 1993, 310, 370, 466, 296, 3518, 2254, 226, 297, 161, 351, 1549, 1013, 2296, 1311, 460, 485, 265, 327, 28, 1611, 2831, 425, 433, 1374, 322, 1039, 2147, 1565, 326, 851, 276, 309, 473, 2732, 422, 909, 22, 217, 488, 111, 369, 289, 79, 254, 334, 705, 1676, 1019, 47, 2859, 402, 377, 2824, 606, 3935, 2603, 92, 319, 269, 408, 373, 218, 911, 1631, 309, 1287, 421, 1538, 939, 3797, 376, 1158, 733, 840, 1501, 151, 1845, 275, 1941, 1770, 343, 657, 3545, 108, 1379, 398, 281, 1504, 983, 504, 3228, 351, 2151, 3223, 2013, 1914, 553, 411, 215, 323, 454, 831, 36, 422, 1613, 251, 953, 387, 3214, 479, 2034, 476, 2289, 379, 498, 128, 2923, 1654, 315, 1855, 198, 1890, 238, 394, 1974, 209, 418, 1248, 1890, 1423, 3351, 869, 557, 406, 355, 130, 220, 486, 325, 2435, 1291, 1756, 216, 75, 380, 459, 23, 394, 875, 3291, 331, 1517, 3120, 562, 3534, 1212, 994, 369, 293, 3086, 188, 915, 948, 62, 340, 71, 2635, 1543, 177, 1731, 438, 2190, 317, 2864, 885, 390, 367, 212, 446, 478, 3401, 180, 163, 382, 1182, 1790, 114, 401, 915, 2178, 140, 230, 303, 1770, 2432, 259, 866, 277, 1548, 961, 2964, 1510, 72, 467, 925, 962, 297, 366, 2135, 2116, 296, 1148, 2722, 2346, 131, 1539, 457, 1649, 2870, 268, 793, 165, 773, 1203, 188, 320, 1796, 1518, 205, 464, 309, 397, 394, 1515, 692, 497, 1328, 2193, 204, 472, 491, 1182, 1185, 2376, 2214, 491, 2449, 930, 452, 92, 819, 304, 247, 1923, 418, 1857, 1276, 660, 99, 428, 1040, 2592, 431, 2359, 339, 2786, 360, 1247, 1598, 2464, 194, 238, 1960, 195, 39, 1286, 816, 285, 497, 328, 631, 2365, 204, 367, 3280, 3173, 1228, 355, 1550, 2230, 1734, 468, 235, 3793, 80, 371, 234, 2963, 260, 266, 117, 1389, 769, 419, 1586, 195, 1751, 650, 3070, 304, 472, 492, 1609, 252, 2287, 134, 390, 508, 363, 1272, 1722, 278, 917, 167, 2495, 478, 43, 100, 458, 417, 1915, 219, 131, 165, 567, 695, 1303, 535, 547, 517, 710, 814, 1572, 374, 473, 89, 469, 3313, 180, 2562, 240, 1264, 2809, 2746, 1328, 402, 192, 1433, 212, 91, 326, 285, 159, 290, 353, 2569, 168, 365, 3854, 237, 279, 424, 1649, 397, 156, 410, 1741, 636, 1850, 301, 328, 659, 1557, 994, 2901, 577, 206, 267, 144, 239, 327, 1874, 197, 286, 279, 387, 422, 1069, 29, 435, 579, 94, 2384, 203, 2894, 133, 422, 1863, 228, 1117, 74, 359, 455, 130, 682, 155, 1576, 349, 1651, 2213, 2083, 1924, 103, 227, 295, 1215, 3221, 253, 412, 1273, 1382, 1398, 413, 1749, 2790, 199, 2061, 2191, 327, 2648, 150, 1725, 158, 667, 395, 2116, 3432, 177, 298, 173, 759, 1298, 301, 1315, 274, 931, 777, 477, 2803, 292, 1012, 317, 1492, 1499, 2402, 399, 391, 724, 1436, 103, 1683, 328, 1892, 2060, 164, 1220, 299, 893, 353, 289, 838, 566, 1787, 646, 375, 393, 2626, 457, 219, 422, 154, 304, 281, 1678, 1875, 225, 298, 1937, 467, 217, 199, 1370, 447, 287, 314, 298, 114, 481, 455, 1197, 1273, 351, 1324, 2912, 663, 572, 45, 3446, 361, 1717, 91, 3577, 2047, 2835, 1344, 2685, 249, 191, 1167, 736, 585, 3776, 112, 1888, 207, 3050, 164, 3778, 2551, 3749, 1505, 207, 332, 3291, 908, 654, 2651, 301, 1492, 555, 1084, 3959, 441, 3221, 238, 162, 330, 2220, 668, 306, 1590, 2486, 604, 157, 288, 2425, 216, 431, 423, 278, 128, 112, 271, 3112, 2856, 2716, 106, 78, 65, 221, 2729, 2508, 744, 1232, 1950, 95, 421, 368, 389, 1986, 448, 1615, 629, 1893, 1138, 1894, 416, 237, 2264, 351, 134, 414, 3066, 528, 225, 1031, 1749, 214, 3584, 1753, 779, 475, 235, 345, 472, 92, 293, 597, 165, 3288, 277, 786, 433, 704, 3196, 122, 354, 203, 1785, 2430, 314, 108, 74, 433, 2262, 715, 1911, 1408, 2712, 1873, 265, 1444, 462, 1839, 346, 403, 2433, 121, 1646, 141, 1470, 2382, 1490, 409, 361, 359, 1382, 478, 746, 478, 329, 206, 1519, 563, 3402, 3247, 1288, 333, 2408, 677, 456, 467, 498, 796, 1007, 324, 225, 352, 550, 787, 315, 361, 245, 1154, 207, 429, 270, 250, 964, 989, 204, 463, 224, 318, 2420, 1072, 395, 1387, 317, 494, 2265, 1462, 828, 61, 2280, 228, 357, 1741, 385, 1412, 970, 1178, 2886, 1054, 1183, 85, 612, 2600, 185, 260, 1049, 364, 452, 48, 2179, 3127, 275, 1744, 133, 129, 109, 461, 188, 907, 881, 326, 543, 398, 1858, 2004, 1675, 248, 3372, 982, 1190, 948, 2300, 286, 414, 1831, 167, 308, 352, 955, 765, 299, 409, 1627, 1688, 201, 2644, 288, 998, 1320, 427, 2780, 536, 1763, 475, 2460, 386, 2501, 634, 2095, 305, 270, 330, 2783, 568, 330, 428, 400, 425, 2749, 462, 1405, 1551, 379, 472, 1407, 311, 2957, 363, 2878, 3168, 219, 1411, 487, 3590, 260, 1295, 2659, 250, 912, 473, 203, 807, 134, 2306, 194, 230, 1054, 1844, 241, 540, 1743, 296, 941, 272, 132, 313, 304, 117, 40, 960, 452, 718, 461, 452, 440, 113, 386, 91, 492, 632, 209, 3329, 459, 755, 439, 165, 2381, 414, 905, 3756, 622, 1771, 748, 587, 479, 2705, 1125, 3496, 14, 3092, 2157, 1476, 300, 479, 432, 350, 3039, 933, 471, 649, 400, 1893, 3269, 2836, 3634, 1294, 289, 310, 182, 1092, 450, 1913, 110, 398, 1060, 381, 1308, 1534, 2407, 270, 382, 63, 188, 236, 2091, 352, 1333, 415, 2101, 312, 438, 2271, 2717, 2692, 332, 226, 597, 2580, 368, 1720, 256, 405, 1956, 166, 1762, 439, 1272, 1251, 70, 233, 120, 2469, 456, 1109, 125, 341, 1339, 29, 457, 158, 3314, 61, 1866, 3688, 451, 184, 1118, 2117, 282, 2765, 2584, 450, 2370, 102, 481, 3239, 484, 2315, 836, 360, 497, 1917, 1211, 1030, 97, 373, 37, 486, 76, 2924, 3712, 430, 2038, 2383, 3478, 1116, 1828, 1076, 1799, 576, 319, 2294, 1223, 2203, 1152, 228, 1699, 348, 833, 1945, 527, 3297, 1142, 656, 1010, 316, 586, 562, 2118, 477, 185, 74, 293, 344, 362, 127, 382, 469, 2141, 318, 241, 1311, 624, 2982, 2819, 292, 3480, 2710, 161, 475, 940, 350, 231, 3065, 215, 669, 70, 1718, 2334, 484, 378, 1106, 1298, 2166, 202, 245, 647, 166, 461, 363, 621, 140, 785, 966, 2239, 506, 2766, 292, 2373, 1872, 1886, 92, 212, 416, 301, 2298, 356, 3398, 2223, 1639, 1118, 1683, 255, 1705, 2216, 2603, 2706, 2690, 2157, 1095, 635, 1114, 403, 385, 1734, 1130, 273, 402, 166, 2467, 372, 1713, 2419, 3466, 369, 188, 926, 261, 342, 1486, 1271, 783, 1803, 921, 304, 1356, 270, 381, 1979, 591, 1643, 857, 176, 2347, 2444, 1714, 2481, 1254, 1146, 1384, 59, 135, 399, 616, 638, 218, 321, 3153, 650, 218, 248, 80, 212, 1029, 1777, 393, 1303, 1055, 88, 308, 367, 1064, 383, 1320, 3073, 183, 2102, 398, 167, 440, 2928, 368, 431, 2270, 1448, 195, 3146, 312, 2151, 1328, 1775, 425, 225, 1740, 409, 1615, 473, 3262, 1571, 723, 273, 254, 1384, 139, 2558, 286, 1889, 1606, 383, 70, 3212, 87, 174, 1183, 2447, 476, 1018, 1210, 952, 2079, 463, 480, 296, 1126, 272, 109, 2743, 3011, 1140, 349, 2904, 2588, 1467, 250, 2332, 293, 471, 2708, 238, 141, 1382, 1268, 473, 1252, 417, 110, 1192, 1100, 756, 1383, 85, 278, 422, 708, 1697, 1791, 1862, 481, 241, 370, 79, 70, 296, 365, 102, 326, 1739, 695, 500, 3203, 397, 2369, 73, 1238, 90, 1136, 1872, 1866, 1194, 976, 1746, 433, 402, 2001, 1847, 3968, 3243, 1608, 289, 1601, 1484, 190, 483, 1807, 453, 1283, 311, 2227, 1732, 800, 113, 1047, 329, 789, 406, 390, 89, 424, 229, 262, 839, 1146, 820, 295, 1265, 536, 298, 1255, 401, 341, 219, 211, 786, 66, 471, 696, 2126, 199, 1919, 2893, 415, 124, 2701, 3161, 447, 2209, 1083, 1308, 741, 1721, 1903, 3237, 696, 1558, 244, 1975, 1537, 433, 950, 217, 348, 2232, 1306, 164, 139, 1333, 287, 682, 343, 381, 474, 184, 73, 175, 1796, 3039, 1211, 436, 252, 901, 106, 401, 56, 546, 135, 734, 373, 1021, 545, 851, 313, 1940, 310, 1635, 578, 639, 430, 366, 157, 1029, 278, 1375, 2575, 1208, 1484, 339, 2907, 1658, 2049, 2240, 793, 1071, 816, 290, 443, 2525, 476, 339, 908, 1022, 387, 483, 224, 1817, 315, 972, 151, 1172, 232, 1577, 653, 207, 1453, 97, 904, 455, 2386, 139, 1840, 3109, 2948, 134, 2301, 356, 1592, 559, 1461, 539, 152, 469, 632, 3290, 610, 356, 1293, 220, 179, 806, 226, 398, 87, 222, 363, 1188, 64, 401, 2414, 3687, 1661, 1256, 1319, 2742, 326, 1413, 1627, 3199, 330, 297, 121, 365, 823, 437, 858, 374, 332, 469, 190, 276, 372, 1097, 2258, 551, 2046, 130, 2472, 415, 3823, 344, 2851, 1486, 236, 662, 2089, 449, 633, 1340, 132, 2355, 387, 274, 1690, 1623, 758, 2349, 2396, 232, 525, 2667, 65, 1425, 235, 177, 1733, 1541, 300, 3336, 1634, 132, 414, 604, 370, 111, 203, 3705, 242, 251, 1216, 208, 1703, 1655, 666, 3154, 785, 882, 275, 2703, 467, 2296, 461, 470, 2197, 181, 272, 2197, 970, 609, 2996, 210, 2255, 1576, 577, 1070, 1404, 2167, 737, 274, 302, 939, 876, 309, 267, 455, 680, 2932, 119, 1884, 1588, 3776, 239, 56, 322, 3279, 2495, 2103, 239, 2592, 406, 205, 142, 837, 388, 1996, 1204, 1289, 1765, 1393, 396, 493, 817, 1121, 455, 88, 1198, 1825, 2331, 640, 564, 215, 1028, 288, 425, 244, 170, 405, 285, 1148, 2506, 896, 702, 437, 221, 1767, 1470, 3053, 274, 2640, 1290, 1069, 429, 1862, 1161, 735, 380, 1130, 409, 1416, 348, 275, 1793, 1422, 318, 109, 350, 2033, 2471, 89, 340, 1217, 67, 1347, 2652, 1853, 2014, 323, 3003, 1029, 267, 2688, 1869, 322, 1190, 1017, 401, 102, 482, 183, 492, 72, 423, 1244, 405, 426, 312, 116, 159, 3373, 2345, 2581, 450, 355, 917, 1335, 949, 1445, 1653, 91, 1617, 146, 2416, 72, 253, 27, 3231, 47, 351, 268, 39, 229, 1370, 2479, 1429, 275, 3268, 490, 926, 418, 1927, 627, 376, 362, 1779, 1628, 3319, 265, 1270, 3140, 1218, 87, 2074, 1618, 233, 230, 60, 368, 2166, 484, 277, 248, 256, 420, 468, 2871, 1677, 751, 2585, 1556, 361, 428, 503, 1498, 34, 3330, 321, 965, 480, 644, 1200, 1307, 3135, 184, 746, 939, 256, 3486, 465, 1307, 442, 2784, 2562, 470, 142, 833, 237, 176, 136, 1793, 47, 3040, 750, 2396, 963, 1665, 3245, 2159, 908, 308, 3179, 216, 356, 278, 1851, 123, 77, 1339, 383, 218, 1326, 2750, 401, 404, 2857, 173, 417, 132, 170, 336, 386, 162, 1716, 297, 1518, 110, 2867, 1021, 383, 2072, 343, 1528, 887, 900, 73, 332, 962, 439, 295, 450, 169, 474, 262, 205, 894, 520, 2813, 1694, 443, 273, 1028, 2266, 215, 1887, 368, 73, 2504, 69, 1701, 953, 53, 761, 311, 2417, 294, 75, 2025, 399, 1631, 2680, 3327, 748, 495, 219, 1877, 802, 1015, 1477, 829, 316, 231, 304, 309, 3030, 99, 1031, 190, 488, 1258, 1119, 823, 335, 1622, 3113, 285, 2228, 136, 182, 491, 998, 1700, 1579, 3539, 482, 256, 947, 168, 2208, 1706, 1377, 460, 1927, 181, 1175, 267, 333, 1848, 605, 3180, 491, 276, 2054, 2493, 805, 226, 519, 453, 396, 1924, 335, 1981, 85, 708, 1647, 462, 3613, 372, 2156, 309, 438, 466, 130, 493, 762, 697, 1984, 987, 2113, 601, 3210, 180, 479, 1419, 1087, 672, 137, 3237, 83, 1684, 1986, 478, 2111, 153, 1144, 1420, 1337, 314, 2231, 53, 2462, 2202, 371, 3546, 594, 426, 2996, 729, 1529, 1257, 191, 546, 337, 3743, 416, 316, 499, 428, 1285, 192, 2655, 1763, 498, 1538, 3516, 1652, 375, 1759, 302, 222, 2813, 852, 512, 517, 272, 388, 485, 685, 2420, 2021, 1582, 218, 1949, 347, 128, 513, 310, 653, 486, 297, 1269, 344, 2802, 197, 330, 3412, 3035, 2177, 810, 1892, 464, 476, 371, 3678, 3995, 3752, 318, 620, 723, 3699, 241, 2994, 1983, 255, 1357, 446, 1513, 1899, 1324, 429, 1985, 1119, 2185, 690, 3992, 3759, 2409, 1539, 1001, 1980, 3223, 2776, 2465, 1871, 224, 1612, 446, 4093, 466, 349, 970, 3834, 978, 1708, 953, 2438, 2375, 2514, 2918, 1569, 2003, 922, 455, 3703, 614, 3695, 709, 3872, 490, 719, 212, 3416, 487, 2110, 628, 2450, 1508, 861, 3597, 467, 3329, 1155, 1836, 474, 1859, 2174, 1090, 1701, 2581, 3606, 2535, 1660, 469, 374, 2447, 744, 329, 1854, 2309, 401, 1319, 3144, 1808, 1432, 2723, 440, 3668, 223, 431, 3042, 390, 2539, 427, 2403, 283, 3137, 1943, 492, 1237, 3778, 3184, 2480, 1804, 1493, 3472, 2906, 2794, 2675, 578, 2378, 467, 2907, 477, 3355, 1228, 2184, 1468, 1625, 522, 399, 2236, 341, 3911, 3852, 2490, 1986, 2852, 419, 892, 3756, 2212, 909, 2483, 741, 3592, 1330, 1561, 4078, 2529, 441, 3139, 2613, 3310, 591, 1728, 443, 2255, 3454, 3015, 499, 794, 2022, 2436, 2550, 2947, 374, 3464, 463, 1262, 2964, 3149, 1718, 2284, 2656, 385, 1762, 3193, 305, 486, 745, 301, 3014, 1057, 2316, 1125, 1691, 2189, 2950, 3761, 3459, 249, 3052, 3201, 2518, 419, 1186, 2305, 3394, 3138, 2596, 2522, 3314, 2093, 3200, 2385, 1431, 1268, 2469, 3024, 835, 1358, 2465, 2849, 393, 927, 858, 2262, 1253, 273, 3512, 2515, 1816, 2784, 3561, 586, 437, 3961, 1406, 1191, 2211, 3936, 2813, 255, 2299, 3877, 2570, 1961, 245, 2312, 4053, 259, 3640, 1310, 2294, 3670, 3205, 3736, 1381, 3037, 2406, 871, 3261, 396, 269, 134, 2233, 711, 3760, 1506, 2405, 394, 3685, 3860, 3095, 3757, 1915, 1664, 2374, 2412, 1355, 1058, 311, 786, 3829, 758, 403, 500, 2360, 3876, 788, 3068, 3763, 583, 540, 2624, 1795, 210, 254, 1295, 3243, 783, 2341, 322, 378, 3889, 1072, 3109, 365, 2313, 4048, 3330, 628, 3663, 3529, 863, 2397, 471, 376, 3777, 2623, 2351, 1931, 2060, 352, 889, 957, 300, 1428, 387, 359, 2269, 2516, 3216, 3612, 3246, 3349, 2736, 2634, 458, 2309, 467, 3254, 3792, 1705, 2435, 3356, 2199, 293, 3229, 295, 2050, 364, 2505, 1898, 1557, 3747, 3868, 3021, 2230, 428, 3784, 2439, 1971, 1420, 3171, 290, 1455, 3064, 442, 1131, 2208, 3566, 896, 2948, 367, 274, 2449, 1179, 1225, 2677, 2205, 3783, 3589, 1104, 2261, 2137, 1848, 1440, 2380, 4041, 3489, 3986, 3088, 2090, 3557, 2973, 526, 1023, 3524, 3675, 355, 2337, 3118, 2308, 2017, 282, 871, 2654, 594, 1686, 345, 2622, 1057, 2075, 453, 1132, 4054, 1468, 2033, 860, 3078, 1287, 260, 887, 3621, 105, 115, 841, 3420, 656, 2280, 1451, 1001, 1525, 389, 616, 3585, 365, 480, 2121, 3391, 1113, 2530, 257, 1962, 431, 849, 69, 2330, 3346, 2731, 3774, 1091, 429, 3711, 2881, 1884, 345, 1157, 268, 3558, 2250, 1026, 2239, 319, 1977, 2494, 3383, 1736, 1543, 364, 1739, 3806, 499, 1671, 3849, 524, 502, 232, 2179, 475, 3665, 1449, 3721, 3680, 2643, 2051, 1225, 2053, 3872, 2854, 2136, 516, 130, 1573, 4084, 1463, 1316, 834, 2061, 3771, 1426, 2764, 659, 329, 2015, 3512, 1366, 435, 361, 2578, 3365, 1368, 3763, 3739, 3185, 331, 1155, 449, 4004, 641, 2429, 360, 2863, 1955, 84, 1159, 285, 3253, 2077, 3579, 346, 2421, 3101, 446, 2325, 3090, 3665, 3706, 760, 3734, 2272, 3139, 651, 2546, 2251, 343, 1852, 643, 1765, 456, 699, 2073, 4043, 486, 456, 3587, 395, 2851, 1142, 2272, 1286, 2172, 1396, 837, 2036, 1146, 1120, 1446, 1271, 576, 2954, 424, 2586, 2790, 2550, 554, 3005, 2181, 2678, 3692, 2212, 3627, 1168, 370, 3960, 2235, 382, 2156, 3255, 1688, 3931, 3379, 2509, 1560, 2649, 3927, 391, 584, 1317, 4028, 299, 157, 327, 717, 3471, 474, 1727, 771, 2703, 2561, 2529, 2547, 198, 1974, 1529, 3786, 3461, 199, 1745, 198, 294, 2175, 2861, 325, 684, 1482, 1136, 3965, 1847, 752, 2486, 4061, 1158, 2674, 382, 2750, 2708, 1667, 3932, 2403, 3853, 431, 3835, 3684, 117, 3489, 3174, 1195, 3544, 2744, 2460, 2056, 3476, 2697, 408, 3156, 3131, 3070, 2633, 1263, 2586, 273, 3689, 173, 3971, 1207, 3871, 412, 872, 3056, 303, 4095, 1484, 714, 1522, 2451, 916, 4053, 2443, 3053, 910, 2213, 3197, 292, 195, 4029, 915, 3018, 2753, 577, 2952, 652, 1229, 1938, 1349, 186, 2448, 2515, 3259, 3893, 2211, 2860, 3894, 1389, 4077, 3241, 2445, 316, 345, 3335, 996, 2161, 3798, 3598, 721, 1032, 1068, 401, 707, 3094, 1318, 1185, 4094, 1474, 685, 609, 4036, 3263, 303, 3209, 2857, 246, 4075, 1593, 1673, 3024, 740, 3175, 1902, 529, 2300, 1352, 1636, 3929, 3480, 652, 287, 461, 3212, 708, 3122, 2377, 319, 1563, 1059, 3918, 2952, 2222, 3355, 197, 3802, 3333, 711, 3882, 1595, 2676, 1940, 2791, 1320, 350, 3408, 1792, 600, 3471, 1042, 3938, 772, 3465, 1553, 284, 1176, 1441, 2129, 3265, 1859, 2543, 1451, 3293, 1511, 622, 589, 448, 314, 269, 2332, 1586, 1276, 2858, 3514, 2718, 3879, 404, 2661, 3884, 2834, 1309, 317, 3477, 296, 2324, 469, 2782, 2577, 451, 2036, 625, 2573, 3690, 2124, 2329, 489, 3555, 3344, 3595, 784, 2986, 359, 1181, 3273, 444, 367, 2124, 2455, 2401, 2714, 886, 1979, 648, 451, 3000, 2783, 633, 3341, 3778, 2692, 2524, 1661, 3201, 1229, 272, 1810, 1149, 1133, 406, 1409, 1671, 552, 1654, 3186, 2122, 2845, 869, 435, 3432, 2083, 3623, 2599, 4021, 296, 3639, 2879, 1579, 3645, 3044, 3190, 1215, 3570, 2608, 721, 2170, 161, 356, 1999, 354, 4027, 1391, 1827, 211, 2186, 298, 2622, 482, 2935, 1123, 862, 2943, 3198, 241, 279, 1107, 2559, 3157, 463, 2320, 1888, 1461, 3537, 2545, 1402, 889, 3151, 2204, 1454, 2917, 407, 1340, 770, 1570, 505, 1061, 280, 2189, 2695, 1219, 1543, 3452, 3179, 1323, 396, 1474, 3244, 2497, 890, 2264, 3671, 3317, 2134, 3040, 3428, 2705, 2077, 1544, 3033, 1662, 407, 2706, 2820, 2444, 3167, 985, 3673, 571, 1195, 2505, 2494, 535, 3772, 391, 167, 202, 3650, 3256, 2201, 1256, 2256, 430, 1428, 3336, 1762, 1859, 631, 3095, 297, 2984, 1243, 2735, 3347, 336, 363, 1065, 350, 2304, 2800, 3946, 550, 2509, 258, 1343, 3313, 474, 582, 329, 286, 1689, 972, 2841, 320, 408, 2161, 3184, 165, 1002, 429, 2146, 3091, 1486, 3836, 538, 3237, 3453, 1044, 317, 3333, 1896, 286, 2883, 1747, 3077, 1000, 2774, 319, 2718, 244, 346, 1369, 2699, 2620, 321, 2118, 470, 681, 477, 565, 320, 558, 2214, 589, 219, 3866, 2777, 2654, 2526, 3775, 1805, 2923, 986, 961, 3527, 2668, 3363, 393, 1025, 1730, 2773, 1823, 1321, 3699, 2970, 3153, 2288, 2989, 2227, 1808, 263, 1918, 3753, 437, 448, 2637, 334, 2619, 189, 223, 324, 650, 2150, 488, 3185, 3003, 1687, 3021, 501, 341, 4064, 494, 101, 4093, 2045, 675, 767, 447, 2732, 3556, 1452, 1233, 3366, 1917, 2755, 4058, 2278, 1129, 1976, 2704, 2344, 2840, 293, 495, 701, 1016, 2242, 279, 342, 2066, 1342, 2477, 2447, 2248, 378, 701, 1192, 3811, 2196, 376, 3162, 1825, 3677, 2472, 2600, 368, 355, 2832, 3978, 3668, 1871, 2466, 1491, 491, 1245, 2377, 309, 3941, 3851, 3511, 131, 119, 364, 1389, 2055, 1997, 1931, 2081, 260, 305, 324, 1852, 1200, 3487, 3893, 1944, 2237, 2322, 675, 1800, 2683, 85, 2730, 1695, 3808, 3563, 655, 299, 454, 137, 2618, 3820, 3083, 202, 961, 2656, 3901, 552, 2716, 3659, 397, 4014, 1882, 2649, 278, 3585, 1005, 3648, 1427, 1712, 3561, 3424, 671, 914, 2972, 65, 119, 306, 1722, 883, 3478, 2864, 2415, 3418, 438, 1325, 2339, 437, 390, 336, 1067, 584, 3412, 1383, 366, 3007, 2685, 3656, 3177, 3803, 903, 3535, 1780, 3922, 1318, 3259, 1603, 2148, 245, 1630, 3259, 2367, 1810, 2088, 3424, 241, 339, 483, 1478, 2766, 2162, 4042, 162, 1172, 343, 4034, 755, 2805, 1963, 1589, 2912, 3054, 3053, 3303, 2949, 446, 418, 905, 992, 227, 1052, 685, 557, 2297, 253, 3487, 1432, 484, 169, 2195, 4022, 932, 152, 370, 1433, 3983, 3369, 361, 2069, 1941, 1682, 2082, 403, 1873, 512, 776, 930, 2065, 1312, 231, 1051, 2507, 3567, 2273, 2413, 173, 1909, 3019, 2841, 3794, 3189, 1626, 975, 774, 1087, 2220, 610, 452, 262, 853, 4076, 2674, 2040, 1478, 1302, 321, 1848, 2981, 845, 353, 308, 1235, 3069, 3370, 1222, 2056, 3441, 3360, 3742, 3045, 358, 2599, 3943, 2786, 902, 3641, 971, 859, 4014, 1787, 479, 443, 2279, 1408, 3263, 1929, 3944, 2146, 2601, 3200, 463, 3781, 3155, 3523, 2193, 3256, 274, 2083, 3304, 2260, 1782, 698, 1495, 2610, 2420, 309, 3282, 1337, 2435, 2768, 493, 842, 2575, 3361, 1712, 371, 294, 1353, 1867, 2599, 603, 3582, 3312, 3320, 3171, 1841, 1329, 2325, 2997, 3352, 1282, 599, 1719, 3953, 2958, 2467, 216, 1564, 1259, 3765, 471, 3115, 3482, 3360, 3978, 3575, 1851, 3204, 1322, 2717, 4050, 3018, 1685, 2594, 1465, 1007, 2601, 1517, 2627, 3140, 2398, 664, 488, 416, 2653, 4012, 1620, 2703, 3218, 1388, 1835, 3157, 456, 1748, 2706, 1713, 2225, 200, 1114, 1922, 3435, 3105, 602, 2367, 3886, 1704, 3898, 3962, 2931, 2417, 957, 1964, 3642, 3714, 1794, 2931, 3621, 420, 2488, 3810, 2328, 2626, 3348, 3266, 1916, 3575, 166, 632, 2105, 950, 997, 563, 1252, 1522, 4065, 288, 3425, 3230, 2847, 312, 3654, 179, 2698, 2909, 2554, 623, 3810, 3883, 2615, 341, 810, 1805, 373, 2244, 4084, 200, 184, 3627, 459, 296, 3172, 3869, 3717, 239, 1750, 2257, 1943, 1332, 4057, 1450, 3545, 365, 756, 1287, 1142, 3749, 337, 382, 2391, 2992, 3619, 2113, 470, 1822, 3469, 2879, 3241, 115, 1964, 118, 3530, 3885, 1412, 3443, 3700, 3695, 1681, 2094, 1031, 1530, 356, 3383, 2634, 1387, 2355, 2921, 791, 2750, 676, 3641, 991, 2541, 447, 3434, 1763, 418, 3474, 2948, 532, 415, 3649, 2544, 1764, 3434, 3676, 1361, 2775, 1797, 1314, 2625, 286, 487, 372, 2522, 2840, 429, 1392, 3418, 3536, 1911, 1662, 2045, 845, 1059, 139, 3953, 3647, 877, 1624, 398, 3566, 433, 2715, 1321, 2362, 3555, 180, 218, 2399, 131, 1163, 2868, 3142, 2235, 3256, 875, 1163, 3299, 433, 885, 381, 2853, 1134, 3669, 2671, 2100, 2442, 1284, 3806, 3103, 485, 3717, 3035, 4040, 608, 354, 462, 1151, 3619, 623, 463, 3713, 196, 3359, 462, 3182, 2454, 488, 357, 3217, 172, 271, 3699, 1759, 3788, 768, 3441, 3494, 1263, 3332, 2168, 3841, 1644, 2901, 484, 1368, 246, 117, 2233, 850, 440, 3475, 487, 3844, 717, 3247, 3870, 702, 1238, 1643, 1951, 1830, 3758, 1088, 221, 362, 3840, 1298, 2681, 1431, 2917, 3741, 3165, 2983, 2625, 2140, 2929, 413, 3298, 2403, 2378, 3584, 3837, 1753, 1534, 2713, 897, 2305, 1134, 883, 258, 393, 2903, 3272, 3255, 1544, 4020, 307, 2231, 2114, 1012, 3666, 3172, 1255, 1325, 2789, 3744, 3973, 348, 3152, 2656, 3615, 754, 3072, 2761, 248, 2317, 3934, 287, 4091, 3773, 695, 4036, 3878, 771, 3704, 181, 2331, 3963, 295, 102, 3406, 2590, 4054, 323, 2535, 176, 946, 3235, 2768, 811, 1346, 2868, 3682, 763, 143, 429, 2112, 469, 2026, 1322, 2888, 541, 422, 2143, 452, 227, 2492, 2789, 2491, 479, 2097, 1633, 1281, 1604, 1232, 3856, 2525, 2266, 1715, 1866, 3666, 416, 268, 2699, 893, 69, 4005, 728, 2635, 686, 1424, 253, 3951, 1112, 3538, 530, 1956, 2120, 452, 2875, 3029, 4096, 3723, 2048, 1243, 1185, 2099, 3999, 282, 2673, 2481, 833, 1037, 418, 1830, 394, 3788, 1820, 1913, 3160, 1682, 3116, 3417, 3236, 2310, 1213, 378, 416, 1647, 3414, 1333, 291, 3453, 3719, 475, 3301, 256, 681, 2013, 2612, 348, 2884, 1443, 3132, 282, 1436, 2054, 2114, 409, 2492, 321, 454, 2846, 257, 716, 3322, 2414, 3849, 1930, 3117, 3038, 2858, 2734, 2481, 3886, 3386, 2730, 1174, 3816, 1181, 2908, 1173, 587, 427, 1738, 1138, 1303, 3448, 653, 2288, 3251, 1081, 2519, 2468, 481, 1471, 359, 2165, 2489, 2687, 3493, 2680, 354, 3163, 1438, 411, 3103, 2133, 3913, 2350, 254, 3777, 314, 320, 645, 254, 981, 382, 413, 2888, 3100, 485, 1812, 1509, 1239, 231, 1838, 395, 1798, 1618, 441, 665, 1323, 2307, 2349, 669, 402, 2648, 3806, 2030, 2277, 588, 3974, 2454, 1766, 737, 2555, 2798, 755, 1562, 303, 2411, 383, 3205, 2542, 3058, 4092, 770, 2175, 3023, 263, 3449, 1889, 1278, 3880, 411, 1367, 2993, 3935, 2363, 277, 440, 260, 640, 2640, 3350, 379, 3604, 1052, 521, 300, 3407, 344, 1649, 1356, 2759, 3006, 2537, 1953, 3863, 3644, 172, 3143, 3319, 3815, 1911, 3220, 1108, 885, 2439, 100, 1300, 3833, 2833, 457, 2831, 1755, 1920, 2318, 3123, 1580, 3275, 3991, 2453, 703, 693, 481, 694, 415, 3915, 1174, 1930, 2360, 1893, 1124, 1224, 2526, 2973, 3761, 592, 3921, 310, 4008, 3951, 434, 2092, 2073, 2872, 3941, 2277, 424, 455, 2243, 2192, 2956, 1231, 3437, 2238, 3099, 3597, 482, 1438, 1014, 1041, 2563, 3467, 2018, 3816, 197, 993, 1262, 2842, 1857, 277, 3519, 1572, 2727, 2288, 3511, 2676, 2724, 2375, 2592, 1082, 2476, 4072, 1380, 3906, 3819, 109, 3475, 1988, 1662, 1939, 2485, 929, 3683, 1496, 2695, 483, 1761, 234, 621, 2024, 2761, 3964, 1829, 2546, 3283, 550, 380, 1913, 2725, 454, 794, 3673, 2410, 276, 2614, 1294, 2841, 426, 2553, 813, 2959, 2106, 2050, 1535, 2553, 2896, 1316, 2902, 187, 1462, 822, 2531, 408, 414, 2257, 962, 481, 3230, 749, 3311, 3276, 3812, 142, 3967, 3737, 3436, 1395, 1616, 3146, 1806, 357, 1312, 3262, 760, 3514, 1611, 2573, 1906, 4071, 3782, 4040, 3485, 2513, 2875, 1723, 3564, 3752, 160, 584, 931, 2327, 2082, 590, 4090, 158, 489, 3804, 2545, 1078, 923, 1410, 3980, 3754, 234, 1557, 190, 768, 1621, 4053, 3119, 1508, 498, 2522, 478, 1685, 2120, 4017, 3052, 2848, 469, 1491, 439, 1069, 2639, 1633, 338, 1515, 715, 453, 666, 4049, 3796, 1092, 472, 3438, 1354, 807, 1394, 737, 168, 1174, 1063, 2229, 2960, 2981, 380, 3698, 1735, 412, 3033, 728, 4056, 3979, 398, 325, 552, 419, 1902, 726, 3548, 2002, 400, 3464, 3574, 3331, 1559, 3963, 412, 1274, 951, 988, 2071, 683, 2074, 287, 4048, 3146, 374, 1306, 3792, 3067, 1508, 410, 476, 2368, 3739, 549, 3696, 2240, 3267, 3488, 2191, 3914, 859, 655, 332, 482, 1340, 2745, 276, 1581, 2104, 386, 2626, 1171, 3773, 710, 3786, 1244, 3396, 1975, 1648, 2192, 3548, 2709, 1275, 2796, 276, 4010, 305, 3333, 2459, 842, 1742, 3719, 2531, 1800, 3694, 3171, 2453, 1633, 1478, 227, 423, 2001, 403, 3496, 1531, 2499, 1769, 209, 449, 2473, 87, 4048, 3233, 3379, 449, 3923, 3658, 815, 3547, 1900, 1177, 1754, 626, 3212, 318, 1088, 1403, 2122, 1011, 164, 2738, 2877, 920, 2130, 2169, 3470, 448, 3821, 2985, 935, 2281, 242, 3049, 707, 3873, 2399, 1301, 451, 3206, 3820, 484, 1256, 3039, 3477, 855, 955, 2133, 2249, 2502, 347, 1098, 2758, 4037, 1378, 4092, 2631, 150, 2428, 1216, 2844, 438, 947, 2611, 3672, 574, 2799, 2914, 2663, 2536, 3094, 539, 3667, 2913, 281, 2886, 194, 1677, 2086, 974, 1073, 2386, 1980, 1716, 480, 414, 803, 782, 3008, 741, 1362, 2682, 3071, 270, 495, 1326, 2971, 2647, 3282, 3252, 732, 3308, 1251, 910, 260, 1764, 434, 935, 2057, 1592, 3862, 1362, 2584, 210, 1905, 1991, 3229, 1624, 2715, 983, 2889, 411, 1687, 2125, 2471, 248, 284, 2515, 224, 97, 2722, 1020, 484, 2120, 1206, 1135, 3396, 247, 1209, 3291, 3419, 1457, 2690, 3456, 2810, 3762, 2080, 324, 3870, 83, 691, 327, 3038, 282, 1115, 183, 2693, 827, 1784, 1666, 3129, 3399, 1369, 3375, 2544, 554, 808, 2185, 2217, 2370, 2310, 1709, 806, 1495, 2641, 2051, 1826, 3112, 308, 2916, 1180, 340, 981, 2393, 467, 3376, 333, 179, 240, 3420, 2638, 2733, 2867, 1085, 760, 1245, 1090, 1617, 3003, 1969, 146, 498, 3501, 1124, 3701, 372, 3919, 3387, 2778, 1454, 1261, 2660, 3780, 1003, 107, 1111, 417, 375, 596, 509, 3076, 1802, 420, 4033, 489, 387, 987, 3693, 442, 303, 3225, 3110, 1994, 2093, 325, 383, 2218, 2077, 2236, 4043, 779, 273, 1909, 543, 318, 2364, 3393, 368, 391, 479, 1535, 3581, 1277, 270, 1002, 835, 133, 3591, 406, 3380, 2057, 1506, 2751, 231, 3216, 1445, 1434, 2796, 1020, 3788, 481, 2480, 388, 3620, 3148, 3193, 2541, 672, 418, 777, 3910, 3451, 1921, 2779, 2323, 3433, 3468, 493, 3819, 3090, 2323, 3341, 2981, 453, 3292, 347, 2097, 280, 3427, 2400, 3482, 3539, 185, 876, 288, 1105, 2011, 1114, 2433, 2924, 1050, 2441, 480, 3793, 348, 2788, 1638, 2556, 2623, 3861, 1710, 3566, 2919, 2390, 2501, 2589, 2103, 3662, 2552, 172, 3750, 2709, 1003, 1050, 798, 2429, 3494, 2983, 1202, 2712, 1137, 3380, 752, 340, 991, 169, 863, 726, 2160, 2408, 345, 457, 2085, 2482, 252, 334, 3622, 1334, 802, 1490, 959, 203, 2815, 880, 3348, 2608, 380, 1558, 3876, 1642, 1692, 235, 3517, 386, 2267, 291, 3828, 2873, 3655, 2392, 2843, 447, 662, 2445, 1642, 1007, 3942, 216, 3396, 1270, 3546, 423, 4078, 3605, 4055, 2743, 1229, 353, 3890, 2319, 1926, 2858, 2047, 2229, 855, 4068, 3989, 1088, 3406, 476, 277, 457, 2348, 1161, 2996, 1726, 3547, 1694, 636, 497, 2930, 3034, 1040, 1249, 318, 325, 865, 1369, 3637, 3348, 3437, 798, 397, 1402, 426, 2764, 3684, 2609, 2574, 3515, 1459, 1432, 1445, 464, 2191, 2946, 2456, 2496, 3116, 2938, 2889, 2139, 839, 3902, 424, 183, 451, 3087, 2343, 436, 1065, 2279, 2020, 3629, 3720, 1355, 504, 284, 360, 1150, 271, 705, 2112, 318, 3626, 305, 2434, 1524, 1098, 3322, 1903, 2532, 322, 2538, 4007, 348, 200, 221, 1577, 4024, 1131, 2354, 3061, 3001, 4011, 1194, 1729, 949, 1938, 1102, 1351, 3650, 220, 3639, 255, 1715, 3505, 3191, 416, 401, 710, 2821, 1070, 3580, 2387, 389, 241, 1976, 1995, 3445, 3415, 2939, 814, 4080, 722, 3388, 1221, 1341, 994, 3702, 474, 263, 1845, 749, 1156, 378, 1106, 451, 2602, 2183, 2381, 2698, 445, 3440, 3130, 338, 832, 284, 360, 2898, 2326, 407, 1803, 412, 1566, 3463, 2058, 1739, 1433, 2557, 426, 465, 3363, 2194, 2796, 2602, 3588, 3858, 1219, 2099, 458, 984, 3935, 224, 840, 2818, 868, 1184, 442, 3390, 3456, 486, 2670, 924, 428, 2168, 1236, 1695, 3028, 1151, 824, 612, 1981, 3442, 3881, 1676, 275, 3991, 3041, 1223, 2604, 2726, 722, 438, 2511, 396, 452, 2292, 3630, 1463, 1427, 471, 3068, 2755, 1053, 2786, 305, 1904, 2566, 2922, 3288, 870, 3898, 2542, 2552, 1004, 2519, 1239, 2856, 1541, 1507, 1448, 3297, 844, 409, 463, 2196, 1752, 3295, 2401, 1489, 1757, 381, 1285, 2399, 1197, 3394, 3722, 4086, 3514, 2773, 2252, 489, 3949, 645, 4011, 3565, 277, 1394, 2485, 329, 2677, 1336, 3584, 934, 1041, 2574, 2338, 425, 840, 2993, 985, 1196, 1123, 852, 344, 376, 342, 63, 1008, 928, 2804, 1094, 1977, 2000, 193, 409, 151, 1413, 1708, 435, 3373, 925, 1184, 813, 391, 2382, 734, 1096, 3969, 934, 1942, 2373, 864, 1973, 3012, 1222, 3613, 226, 3494, 2788, 2236, 352, 1447, 2961, 3681, 4009, 3750, 2873, 1603, 2037, 2658, 3378, 3208, 3988, 1479, 966, 1059, 2397, 3922, 464, 2285, 1101, 2205, 3272, 1319, 2704, 2286, 3833, 1148, 2944, 270, 404, 1438, 2976, 818, 2480, 2361, 3703, 1331, 1107, 3799, 3577, 2900, 347, 1849, 2423, 3347, 429, 3428, 607, 494, 2103, 378, 1904, 1749, 4013, 1481, 292, 1799, 444, 3536, 1451, 2036, 374, 357, 2019, 101, 1928, 1466, 3610, 90, 2072, 3728, 717, 245, 1361, 3276, 3982, 2920, 4077, 519, 2693, 106, 750, 3706, 489, 3949, 1689, 383, 2662, 3550, 2754, 2379, 108, 630, 142, 1685, 2295, 3441, 3890, 1590, 2895, 2766, 3839, 1821, 3162, 2088, 2334, 1854, 341, 2301, 1755, 2864, 1774, 3618, 3210, 2012, 1413, 2571, 1159, 3317, 2770, 1920, 1209, 2915, 1623, 2016, 2446, 1300, 323, 106, 849, 491, 1625, 390, 462, 2978, 3797, 399, 373, 3362, 1345, 3294, 2824, 406, 3661, 3777, 467, 1846, 2136, 2590, 243, 3174, 393, 2499, 192, 3405, 3138, 944, 744, 2115, 3404, 2363, 372, 2497, 1585, 306, 1885, 575, 791, 1015, 1610, 1614, 2448, 1991, 2995, 615, 2575, 4062, 1932, 315, 355, 1870, 396, 4085, 606, 4078, 3340, 3687, 1536, 3362, 945, 1743, 2464, 3079, 3225, 3338, 2819, 1673, 2520, 1690, 697, 1419, 2166, 2941, 3657, 829, 2389, 3034, 378, 3838, 3205, 3858, 2180, 1162, 1220, 465, 2143, 3363, 2263, 1925, 3775, 2474, 2250, 2918, 361, 629, 3933, 1233, 1967, 2614, 900, 3509, 3845, 2958, 2781, 2312, 1902, 2333, 328, 183, 1127, 3760, 868, 293, 407, 4059, 3316, 219, 2578, 311, 2570, 1925, 3266, 547, 3707, 4032, 2513, 434, 1834, 2182, 872, 1672, 3722, 432, 2141, 2975, 359, 630, 3896, 824, 3050, 3240, 2663, 2042, 3240, 847, 2374, 2078, 1965, 1144, 2506, 3045, 421, 2091, 3326, 3466, 1950, 1196, 547, 377, 2928, 236, 2655, 365, 2283, 3055, 396, 79, 3720, 2459, 646, 2867, 3178, 497, 2969, 2564, 1217, 2188, 1614, 515, 497, 2620, 455, 182, 2853, 3845, 3813, 2132, 2916, 2782, 1929, 1316, 3944, 1313, 1583, 3491, 494, 234, 2018, 1535, 1375, 2745, 450, 1775, 1292, 3947, 2617, 1530, 2639, 2326, 2125, 1401, 2774, 2017, 2395, 1079, 797, 1578, 403, 318, 773, 483, 1895, 1193, 3047, 3513, 1665, 3647, 446, 3233, 222, 2337, 834, 3268, 3753, 2304, 2596, 2450, 2816, 1499, 446, 3453, 2248, 3972, 3317, 2165, 600, 3232, 1742, 700, 675, 1811, 1137, 1907, 2686, 2719, 2134, 829, 495, 3865, 2129, 2126, 432, 4070, 119, 2609, 768, 333, 958, 1768, 2801, 422, 3027, 2217, 2228, 2080, 1068, 481, 291, 225, 1386, 121, 1150, 2159, 2631, 237, 2291, 3770, 2505, 444, 3715, 3875, 778, 3060, 3125, 2362, 2154, 2726, 2275, 3957, 740, 2760, 1404, 2893, 1622, 1280, 2633, 338, 693, 2627, 3007, 2389, 249, 3022, 292, 1540, 1833, 426, 1134, 362, 187, 424, 2032, 3209, 1400, 485, 416, 2933, 132, 482, 318, 569, 1363, 1630, 1020, 1236, 3544, 1357, 706, 3743, 1100, 2433, 1355, 2819, 1392, 374, 897, 1935, 1278, 2607, 3081, 2253, 1918, 1113, 4075, 2569, 2437, 2340, 3081, 1359, 1795, 723, 507, 3583, 3409, 1674, 3758, 2259, 1332, 3032, 1230, 3724, 3080, 2476, 553, 1398, 255, 2226, 2695, 436, 2894, 924, 1232, 1758, 3010, 1849, 2758, 3148, 3222, 154, 2362, 435, 1964, 1497, 2197, 3058, 478, 3690, 3052, 3868, 1503, 460, 3779, 1970, 663, 2770, 298, 2053, 1045, 407, 2449, 1657, 135, 484, 2803, 4069, 2378, 1373, 2163, 3417, 339, 1820, 3950, 3838, 446, 372, 882, 1071, 2775, 1322, 1909, 433, 936, 1122, 212, 454, 1837, 2026, 3412, 1406, 2730, 382, 3843, 1033, 3891, 475, 3174, 2039, 344, 2478, 2152, 1515, 895, 3226, 481, 3387, 940, 373, 3537, 2771, 1128, 3407, 3560, 2063, 2763, 3602, 1165, 2758, 414, 1464, 1928, 3705, 980, 3846, 3632, 1353, 697, 831, 1127, 409, 250, 3791, 1428, 369, 3378, 488, 3525, 1822, 1751, 4002, 2163, 2741, 370, 3368, 497, 3574, 1383, 1180, 2911, 1942, 384, 2891, 1167, 1310, 3219, 331, 2679, 3232, 2283, 3385, 2156, 3051, 3362, 1264, 498, 3978, 1782, 366, 914, 1396, 2616, 3671, 1368, 2968, 1958, 3938, 317, 120, 392, 3385, 2632, 2303, 1818, 3973, 1380, 261, 148, 2219, 656, 2404, 3105, 1771, 3544, 2180, 2936, 1476, 1376, 3465, 677, 255, 2342, 1977, 2776, 2642, 2032, 326, 2149, 1562, 1226, 1218, 490, 462, 542, 1520, 3612, 1668, 2532, 1179, 291, 1828, 1646, 4012, 392, 3585, 1729, 2106, 831, 2653, 3099, 1102, 388, 2427, 1976, 1446, 1093, 1869, 2113, 2681, 1133, 2406, 1263, 2095, 2982, 1099, 437, 2729, 406, 4083, 2738, 3817, 2470, 1511, 4050, 1571, 332, 3248, 2210, 329, 1249, 2579, 704, 2002, 1605, 328, 1360, 200, 3250, 2011, 471, 1376, 476, 175, 533, 3985, 3624, 2772, 542, 1299, 1169, 1575, 1349, 2598, 3086, 316, 2358, 286, 2696, 100, 489, 183, 3953, 230, 668, 2538, 60, 2335, 2147, 3021, 2198, 1661, 3731, 1274, 2144, 1257, 2885, 1353, 945, 1782, 2781, 2647, 3405, 581, 1781, 3386, 2049, 436, 2567, 1990, 330, 266, 148, 2258, 3762, 1951, 300, 471, 335, 476, 1367, 3451, 2018, 1761, 2588, 2892, 1071, 578, 1823, 1947, 283, 3408, 3501, 2894, 654, 2041, 1437, 1494, 4041, 275, 1219, 2209, 261, 3686, 1553, 2411, 572, 3351, 2960, 968, 1270, 3097, 259, 268, 2059, 3177, 163, 3634, 1679, 2410, 1706, 1721, 3419, 2852, 2024, 2621, 3614, 2967, 727, 1360, 2001, 250, 269, 2697, 1390, 1814, 1364, 3423, 976, 485, 3461, 1750, 1426, 556, 1121, 500, 1066, 435, 3300, 639, 2270, 266, 3733, 2659, 1169, 2866, 618, 1565, 3275, 3928, 1774, 747, 1839, 2870, 340, 454, 225, 968, 419, 353, 2012, 764, 3220, 3115, 775, 997, 2145, 2463, 958, 3231, 1552, 321, 2825, 309, 2506, 1596, 201, 3150, 464, 2509, 799, 119, 3516, 433, 2444, 2835, 3546, 3422, 1709, 743, 2783, 913, 2693, 3046, 1201, 2551, 3905, 427, 375, 3390, 404, 1036, 448, 938, 2938, 2865, 1570, 1604, 1864, 3300, 450, 2242, 2640, 1857, 586, 1277, 3622, 3669, 3850, 2105, 264, 1672, 739, 2815, 2237, 2226, 1109, 2234, 351, 4071, 1160, 1208, 2220, 3615, 4086, 1503, 477, 2890, 3783, 3520, 496, 2885, 2171, 412, 3809, 470, 3059, 430, 3509, 1686, 496, 3661, 393, 2410, 495, 3897, 561, 1104, 689, 1760, 1260, 2887, 2645, 3286, 2169, 3734, 856, 2665, 3216, 1189, 1048, 369, 3257, 302, 2882, 3005, 828, 2926, 1844, 2135, 2892, 2463, 1644, 2878, 240, 2834, 3102, 1650, 3824, 1066, 1804, 3678, 3240, 2548, 2849, 474, 3692, 358, 3765, 2073, 1772, 2871, 902, 2021, 249, 2869, 2601, 2527, 2203, 3968, 2468, 381, 2371, 1158, 398, 3903, 943, 1558, 3554, 1816, 2760, 1241, 1500, 3312, 3605, 1916, 322, 2437, 1504, 138, 1008, 1914, 1643, 873, 468, 1325, 359, 3696, 244, 2313, 3668, 3981, 3106, 2088, 3244, 607, 490, 1626, 0, 0, 3835, 334, 736, 2684, 0, 3779, 3425, 3389, 349, 3384, 2052, 2589, 4007, 2760, 559, 3175, 3028, 0, 1046, 0, 0, 2990, 0, 3278, 3211, 0, 0, 0, 3063, 3243, 2427, 2194, 0, 848, 642, 3832, 0, 3011, 2670, 2826, 2649, 3378, 3278, 3161, 2921, 3822, 3903, 877, 0, 1281, 0, 2934, 0, 1860, 1091, 459, 0, 1495, 3293, 4033, 2740, 3757, 1164, 0, 570, 0, 3759, 2475, 767, 0, 2400, 1843, 2777, 0, 0, 2793, 2975, 1305, 1231, 3372, 2451, 615, 2871, 3874, 1899, 1435, 3263, 1877, 3228, 3273, 3525, 0, 471, 458, 0, 1080, 2816, 2741, 0, 938, 0, 0, 496, 3208, 4072, 0, 0, 3632, 2014, 0, 3765, 3186, 2930, 1789, 3455, 1597, 0, 1608, 0, 0, 0, 2392, 3940, 2514, 1111, 4044, 1338, 0, 0, 0, 2807, 0, 1372, 2068, 3775, 2563, 2253, 0, 1552, 0, 3690, 2685, 0, 3383, 1660, 3906, 3275, 0, 2838, 2483, 1103, 2538, 0, 3611, 3559, 811, 2027, 0, 3338, 3648, 435, 0, 627, 1746, 3250, 0, 2184, 0, 0, 1617, 3554, 0, 490, 1559, 2740, 415, 0, 1586, 3301, 1594, 3895, 3436, 3588, 0, 0, 1638, 0, 0, 0, 2979, 2523, 2461, 0, 0, 0, 2877, 3748, 0, 3533, 2791, 2354, 2510, 2682, 0, 1896, 1944, 0, 2968, 1948, 2108, 2785, 3353, 1624, 508, 0, 2767, 1946, 3694, 0, 1463, 551, 0, 2339, 2058, 2424, 0, 3345, 456, 0, 0, 0, 1995, 248, 3958, 0, 276, 0, 0, 3501, 4019, 0, 0, 3814, 0, 3234, 1004, 3807, 1090, 2937, 384, 0, 3972, 0, 3540, 0, 920, 0, 0, 3625, 0, 3402, 0, 2589, 3496, 2241, 1674, 379, 1905, 0, 2497, 1969, 2394, 0, 0, 1203, 3950, 0, 2457, 988, 3867, 3988, 343, 884, 1839, 0, 2833, 3402, 500, 1971, 0, 3055, 0, 1597, 0, 0, 0, 888, 0, 0, 3098, 0, 472, 490, 0, 0, 0, 2324, 3904, 649, 3784, 1053, 3025, 2205, 1777, 2084, 2287, 0, 0, 0, 0, 0, 0, 3344, 549, 2976, 1038, 0, 0, 3739, 3480, 3358, 3371, 1048, 0, 345, 0, 458, 2609, 3691, 2825, 0, 0, 3569, 3466, 441, 0, 3506, 0, 3224, 3458, 298, 2311, 0, 714, 1492, 3409, 3849, 3218, 3754, 894, 394, 0, 1299, 2218, 3295, 3937, 0, 4018, 3397, 2294, 3481, 2381, 2804, 0, 0, 0, 0, 0, 2712, 0, 0, 1509, 1308, 0, 3744, 2954, 2945, 3330, 0, 2744, 525, 1009, 3268, 706, 0, 464, 0, 2348, 2499, 1046, 1136, 0, 2188, 3004, 2227, 3897, 4025, 379, 2045, 0, 390, 871, 3076, 0, 789, 0, 3421, 2514, 0, 1548, 956, 4000, 445, 1921, 2272, 4019, 3476, 2892, 1501, 3616, 495, 2241, 3073, 0, 0, 2910, 3936, 3909, 466, 0, 3770, 2798, 830, 1577, 917, 3659, 3017, 3769, 3571, 641, 2792, 2830, 3892, 0, 2583, 3328, 3502, 0, 956, 3413, 3996, 603, 1527, 1105, 3030, 2937, 0, 1793, 3967, 0, 3027, 2066, 3104, 2827, 0, 0, 3957, 1429, 1421, 1979, 0, 2628, 3878, 2115, 0, 0, 3663, 0, 2788, 2153, 2567, 0, 1738, 599, 1788, 3984, 0, 3426, 0, 0, 0, 2519, 0, 879, 0, 1919, 0, 412, 3789, 0, 234, 1546, 3425, 0, 0, 3728, 441, 4046, 0, 1140, 4083, 0, 0, 0, 1108, 0, 3533, 4069, 3578, 0, 3924, 1393, 2071, 1785, 2204, 2372, 2488, 2134, 0, 1883, 3042, 0, 1802, 3065, 2994, 3399, 2914, 2652, 2349, 1209, 3397, 1719, 3059, 2577, 1284, 2387, 0, 444, 0, 0, 0, 2587, 3486, 2594, 0, 3834, 3599, 0, 1416, 466, 0, 3555, 1678, 0, 0, 2889, 0, 0, 3078, 3780, 3151, 3960, 596, 2941, 2037, 0, 416, 257, 466, 2634, 0, 3654, 2503, 3589, 3491, 4035, 2925, 3426, 742, 2953, 2593, 0, 0, 243, 3299, 280, 2855, 2556, 0, 600, 3843, 1994, 3731, 0, 2395, 2050, 3534, 0, 2317, 3398, 689, 2882, 3601, 0, 0, 2773, 0, 442, 3892, 0, 184, 0, 0, 1430, 0, 0, 3500, 4021, 3798, 3270, 496, 0, 0, 4049, 0, 1480, 3732, 435, 3962, 1336, 0, 3029, 0, 1497, 2899, 0, 423, 0, 1922, 1516, 4027, 2987, 1460, 0, 3617, 3959, 1953, 3109, 0, 895, 1525, 0, 954, 3610, 0, 1889, 3463, 2491, 2176, 2162, 0, 347, 3528, 3675, 0, 0, 2298, 3449, 0, 0, 0, 0, 0, 581, 486, 4052, 1545, 3332, 3977, 3704, 1522, 2595, 2800, 435, 1610, 0, 2330, 3842, 0, 3438, 3294, 3551, 0, 3907, 1831, 4009, 4089, 493, 0, 3593, 2764, 3586, 2887, 0, 3790, 3622, 3229, 0, 1973, 0, 0, 1767, 1945, 1421, 0, 2262, 0, 0, 3527, 2070, 3519, 0, 0, 3197, 0, 354, 0, 0, 3459, 0, 2846, 2946, 3374, 3462, 1717, 537, 3987, 2164, 2543, 0, 2107, 0, 2008, 3647, 1611, 353, 1636, 1505, 0, 0, 3043, 0, 3527, 3542, 1720, 2225, 3353, 613, 2443, 347, 2508, 0, 0, 3373, 0, 2778, 0, 509, 0, 0, 0, 1373, 901, 3859, 424, 0, 787, 3693, 0, 1458, 2692, 985, 2943, 0, 4096, 3276, 1092, 0, 0, 0, 2215, 3483, 3181, 2686, 0, 579, 2055, 2304, 2623, 2683, 3653, 1885, 3681, 1826, 978, 3124, 4061, 1168, 3380, 0, 2859, 2528, 4057, 0, 2540, 355, 2421, 1821, 0, 758, 2395, 0, 937, 3364, 3851, 3650, 3819, 3458, 2517, 0, 4032, 0, 0, 0, 1936, 0, 3414, 2997, 0, 3122, 0, 1682, 3609, 0, 2787, 2671, 163, 1480, 2694, 383, 0, 3342, 4070, 319, 0, 303, 3382, 496, 0, 1439, 3354, 0, 0, 1385, 691, 1455, 0, 0, 895, 2475, 2094, 2839, 3592, 3643, 2390, 1123, 3660, 3149, 3074, 3316, 1233, 3490, 0, 2775, 2188, 1910, 1693, 2823, 3335, 1778, 2335, 3673, 0, 2769, 410, 0, 3662, 3332, 2286, 0, 0, 0, 3726, 0, 0, 4089, 2988, 3177, 0, 3930, 626, 3970, 3032, 2997, 3351, 1117, 0, 1042, 2101, 2987, 0, 3006, 3793, 438, 1546, 220, 3745, 0, 0, 2147, 3377, 1879, 0, 3627, 3913, 3536, 1689, 0, 325, 0, 1806, 3439, 0, 447, 478, 1145, 363, 3583, 3160, 4073, 764, 2903, 494, 3137, 0, 1074, 804, 1164, 608, 0, 2277, 3968, 524, 3115, 2379, 0, 289, 2089, 1555, 3531, 0, 0, 0, 1855, 3260, 0, 2840, 3264, 0, 2713, 404, 0, 2031, 3839, 0, 3288, 497, 3258, 362, 531, 1668, 3025, 3885, 399, 3718, 2044, 3318, 1562, 2616, 433, 583, 3519, 797, 1023, 0, 0, 3557, 3025, 0, 3795, 3616, 1052, 2540, 3831, 0, 3391, 957, 1698, 1871, 0, 2561, 2456, 0, 0, 3525, 0, 3421, 3244, 1831, 287, 0, 0, 483, 2059, 0, 560, 2875, 2219, 881, 1720, 1668, 0, 1474, 3529, 3328, 3961, 0, 3210, 1637, 0, 832, 358, 0, 0, 1399, 0, 532, 0, 0, 1816, 1406, 0, 3000, 0, 0, 2598, 1623, 2517, 0, 0, 0, 403, 1401, 3543, 1018, 0, 2970, 1878, 2431, 3918, 0, 0, 2999, 2377, 2278, 2995, 0, 3760, 1648, 0, 2452, 0, 0, 4056, 2461, 949, 3873, 0, 0, 2423, 3976, 2261, 696, 1296, 2564, 2769, 0, 0, 3682, 150, 1026, 725, 3188, 0, 2669, 3019, 3801, 1540, 1956, 2765, 2963, 3541, 0, 0, 2680, 2636, 3966, 918, 3128, 0, 537, 3762, 3286, 0, 0, 1458, 413, 501, 265, 3644, 3919, 3853, 336, 3347, 3227, 3924, 2688, 3535, 0, 443, 0, 2698, 3660, 848, 0, 2081, 0, 2363, 2096, 3923, 0, 2200, 964, 0, 100, 1732, 3651, 1824, 3424, 0, 0, 2797, 0, 2040, 2485, 3883, 2512, 398, 712, 2011, 3393, 0, 3124, 2240, 3261, 3160, 0, 0, 0, 1064, 0, 1915, 0, 2558, 3917, 2884, 2170, 688, 2908, 3905, 0, 2556, 3366, 0, 436, 1075, 484, 3072, 0, 2844, 0, 846, 2614, 608, 0, 2176, 3179, 2009, 0, 0, 3136, 0, 0, 2980, 453, 2478, 1669, 2322, 1939, 4068, 3921, 2428, 3292, 2256, 0, 1740, 999, 342, 3899, 0, 946, 194, 1414, 3176, 0, 0, 944, 0, 0, 3455, 3334, 540, 0, 2367, 943, 1481, 3715, 2336, 1927, 2534, 3884, 0, 2503, 3977, 264, 2043, 3246, 3631, 0, 3631, 1998, 1692, 2939, 1756, 3322, 2576, 3608, 363, 2795, 0, 0, 2946, 3863, 3689, 350, 3825, 4008, 2422, 2637, 341, 1632, 0, 0, 1594, 3100, 4067, 0, 0, 3446, 830, 2895, 0, 3576, 3822, 3789, 1356, 3672, 0, 0, 1514, 455, 3346, 3267, 3375, 3992, 0, 3141, 2888, 0, 626, 0, 0, 0, 2321, 0, 1160, 2720, 4037, 0, 1882, 2639, 2326, 3562, 3948, 1912, 3654, 3602, 2929, 0, 2985, 0, 0, 3841, 2037, 3562, 2463, 1992, 2814, 0, 2991, 0, 0, 0, 0, 2346, 2257, 0, 3185, 3733, 1600, 3774, 3306, 0, 3879, 3374, 3144, 2738, 2748, 0, 1894, 0, 3672, 0, 0, 0, 2224, 0, 1888, 3325, 0, 3646, 0, 0, 4000, 1628, 3782, 2960, 3156, 3159, 2424, 1168, 1464, 677, 3580, 0, 1921, 3918, 0, 3558, 0, 0, 1637, 3679, 0, 3199, 0, 271, 3180, 3716, 0, 0, 1038, 3746, 4044, 3857, 0, 0, 0, 3894, 2518, 2784, 0, 0, 3498, 0, 0, 2195, 0, 0, 0, 3341, 3732, 3339, 2863, 0, 182, 3484, 2815, 2252, 0, 1777, 2432, 2035, 0, 350, 0, 3628, 4030, 443, 0, 1865, 0, 0, 0, 2804, 0, 0, 2984, 720, 1726, 2924, 2926, 2985, 0, 2170, 360, 0, 2089, 1061, 0, 0, 0, 307, 2674, 0, 3769, 2065, 0, 3568, 3789, 470, 2176, 3618, 1253, 0, 359, 516, 2573, 0, 0, 3934, 527, 3504, 0, 3358, 0, 184, 3175, 492, 0, 0, 2202, 3714, 0, 3795, 2123, 2466, 2359, 3506, 1437, 3738, 2739, 1885, 2809, 3258, 1990, 3516, 1170, 0, 1560, 3999, 972, 3740, 3591, 3452, 0, 0, 2737, 2341, 3867, 0, 2570, 0, 0, 3245, 4027, 0, 2380, 3199, 429, 1204, 1423, 3181, 0, 1330, 2270, 3901, 3916, 3813, 2484, 2547, 0, 1914, 347, 4000, 0, 1371, 2162, 1186, 0, 1101, 0, 1615, 3671, 3805, 1293, 298, 2899, 145, 3371, 3207, 0, 3697, 0, 3242, 3706, 3880, 689, 1467, 499, 3431, 3764, 0, 2896, 2739, 3791, 2718, 0, 0, 2046, 0, 0, 0, 1833, 2963, 2209, 2658, 0, 1422, 2181, 0, 303, 3533, 470, 0, 0, 1022, 2646, 0, 681, 2086, 0, 3955, 0, 1727, 0, 0, 1903, 0, 0, 0, 3817, 0, 850, 2375, 1227, 283, 2605, 1407, 1242, 0, 2921, 0, 2568, 3845, 0, 3617, 2945, 3524, 0, 3818, 0, 2093, 405, 428, 0, 1835, 3448, 0, 0, 0, 0, 0, 2986, 3124, 0, 1030, 3468, 3309, 3814, 0, 0, 3652, 0, 2726, 4015, 0, 3020, 2659, 1552, 1494, 3433, 4086, 0, 2949, 0, 338, 3080, 2511, 3215, 0, 0, 2405, 2402, 3801, 0, 0, 1324, 3590, 0, 0, 1461, 0, 0, 421, 3431, 0, 955, 0, 0, 3831, 0, 0, 3235, 0, 263, 0, 0, 2450, 319, 0, 3701, 0, 3097, 3478, 351, 1735, 0, 0, 2966, 1818, 0, 0, 2811, 1250, 436, 0, 2347, 3404, 2094, 3782, 719, 3614, 3843, 1487, 1960, 3324, 3429, 2836, 2260, 3721, 3543, 0, 3104, 4074, 0, 3134, 2669, 2530, 2866, 3727, 2289, 311, 3027, 3497, 197, 0, 1100, 0, 1899, 3803, 1687, 0, 3937, 3768, 2752, 3260, 0, 820, 3445, 3411, 0, 0, 0, 3919, 1832, 0, 0, 1900, 0, 3083, 3041, 2500, 960, 2366, 1531, 0, 3587, 3635, 3679, 2086, 0, 3829, 0, 0, 1807, 2339, 3067, 2263, 0, 3621, 1361, 0, 0, 491, 0, 1329, 1301, 3939, 2850, 2899, 3306, 2380, 3183, 2351, 1657, 3770, 2198, 747, 0, 342, 1183, 3977, 426, 1906, 3839, 3629, 0, 2600, 3753, 0, 0, 0, 3853, 0, 0, 0, 1994, 0, 3807, 3337, 2148, 3688, 1840, 4045, 2971, 2829, 0, 2597, 2914, 3324, 1512, 3015, 3168, 3063, 3432, 2586, 3462, 0, 3284, 0, 0, 2977, 0, 0, 524, 3415, 2897, 0, 0, 269, 0, 679, 486, 2247, 2994, 1112, 1111, 1056, 3091, 3271, 1996, 2371, 3861, 1537, 282, 2017, 2139, 2062, 0, 1499, 3435, 2388, 0, 3447, 700, 1299, 3046, 0, 3251, 2342, 1374, 0, 3907, 2754, 854, 0, 0, 1437, 2414, 431, 2512, 790, 0, 3810, 3900, 0, 1479, 3830, 3180, 2117, 0, 2397, 1289, 0, 483, 0, 0, 0, 3553, 725, 1025, 447, 1702, 3224, 3558, 386, 0, 3139, 3045, 475, 0, 590, 3837, 2174, 0, 0, 3280, 2701, 0, 0, 219, 0, 0, 0, 3664, 3964, 2297, 1471, 0, 458, 3136, 0, 2974, 1540, 4080, 2587, 1988, 2536, 0, 2466, 0, 4057, 2667, 1722, 1240, 790, 1982, 1459, 0, 2075, 2795, 0, 1967, 1993, 1429, 0, 3061, 0, 1415, 0, 445, 0, 3957, 1477, 3497, 3485, 0, 0, 0, 940, 2154, 3646, 3002, 0, 1773, 3535, 3756, 3387, 0, 2516, 3983, 1620, 3082, 0, 4031, 0, 0, 260, 2044, 0, 3685, 2440, 834, 0, 2358, 2969, 3774, 0, 2714, 3812, 3269, 3751, 1989, 0, 0, 1467, 4069, 0, 560, 3847, 2373, 1761, 3278, 0, 2235, 0, 0, 0, 617, 1837, 2801, 1141, 0, 3029, 0, 3406, 3781, 0, 0, 684, 2097, 0, 923, 2966, 0, 3877, 282, 3717, 3011, 3972, 1568, 0, 1032, 3865, 3444, 3234, 4066, 3709, 0, 1607, 3274, 235, 3287, 2572, 2700, 1179, 593, 0, 2100, 740, 0, 2039, 0, 0, 0, 203, 0, 0, 0, 1449, 2664, 3709, 2610, 2587, 0, 0, 1493, 3686, 3203, 0, 2142, 0, 3940, 0, 0, 3063, 3572, 0, 0, 0, 1937, 1420, 1198, 0, 0, 2756, 0, 345, 2458, 0, 3340, 1247, 2031, 2068, 0, 0, 308, 1841, 296, 2007, 0, 0, 0, 1513, 725, 3454, 2552, 3571, 4059, 0, 0, 3198, 2426, 3741, 1030, 0, 0, 2174, 1014, 0, 3941, 1381, 1283, 0, 0, 2534, 2419, 0, 2689, 2200, 2153, 1344, 234, 1482, 2182, 3302, 3751, 0, 465, 0, 2136, 1985, 3409, 3730, 0, 0, 427, 384, 849, 2824, 2430, 3727, 0, 4087, 687, 3710, 3638, 0, 3060, 0, 435, 1441, 3697, 3170, 0, 2870, 0, 430, 0, 0, 882, 1860, 0, 3629, 0, 487, 506, 0, 0, 2384, 0, 2967, 0, 0, 2807, 0, 3192, 1094, 2829, 1039, 3107, 3106, 356, 1801, 2415, 3141, 3667, 3089, 0, 1820, 0, 3522, 3906, 2347, 1713, 3145, 0, 0, 1578, 0, 326, 0, 1079, 3664, 3925, 2210, 1922, 4029, 3058, 2070, 0, 0, 3895, 2400, 3606, 386, 429, 2224, 469, 3661, 0, 0, 2055, 299, 2207, 3808, 157, 0, 3284, 0, 3008, 3973, 0, 2452, 4066, 2717, 0, 2258, 2133, 0, 377, 2837, 1878, 3745, 1898, 1065, 0, 3249, 1696, 3864, 3127, 0, 489, 0, 0, 2123, 2856, 497, 3184, 4028, 0, 2606, 2221, 1304, 3988, 0, 2797, 1309, 0, 3518, 1418, 1411, 2155, 3709, 0, 356, 1156, 0, 0, 1681, 0, 3167, 190, 3334, 1360, 3791, 2293, 963, 0, 3854, 1670, 3642, 0, 0, 3437, 3523, 1702, 4016, 0, 405, 3993, 824, 3808, 0, 2847, 1607, 0, 0, 2728, 3195, 573, 2412, 1095, 0, 2962, 1833, 3366, 0, 367, 1331, 1371, 3507, 0, 0, 3490, 2711, 0, 2475, 2555, 2383, 3164, 1819, 1231, 3878, 2707, 0, 0, 0, 365, 3827, 2612, 0, 3596, 0, 3203, 0, 518, 0, 4085, 3950, 343, 335, 3090, 601, 218, 0, 4036, 1131, 4012, 1574, 3737, 4083, 285, 2657, 0, 0, 0, 3117, 0, 3262, 0, 3301, 402, 0, 110, 1998, 408, 0, 421, 2836, 352, 0, 1343, 2041, 2548, 3796, 3771, 1566, 0, 3007, 1563, 2795, 2261, 2749, 0, 2421, 2957, 3326, 2357, 2957, 2800, 3303, 3483, 1313, 3727, 1652, 1952, 1086, 3489, 620, 3520, 2128, 472, 285, 3871, 3073, 3036, 0, 2536, 3020, 2184, 1422, 2956, 0, 0, 346, 1966, 0, 2571, 0, 1377, 3987, 0, 0, 2585, 3723, 2827, 0, 1196, 265, 3014, 2880, 414, 3226, 2647, 3475, 2812, 730, 0, 593, 497, 2668, 0, 862, 2448, 3970, 3391, 2127, 0, 576, 421, 2438, 3936, 3101, 4064, 2541, 468, 2752, 1397, 366, 2446, 0, 382, 465, 1176, 2510, 4046, 3282, 2664, 1479, 2276, 449, 0, 801, 0, 3044, 3752, 2802, 270, 3357, 2278, 3308, 3532, 2554, 3848, 1388, 3022, 2137, 0, 0, 3548, 3767, 3036, 686, 1659, 0, 0, 2603, 2859, 0, 0, 4051, 784, 0, 3910, 2644, 4034, 0, 1865, 3846, 509, 0, 1556, 3983, 3123, 0, 0, 273, 1855, 370, 3223, 3522, 3092, 0, 3511, 1055, 3786, 754, 0, 391, 0, 2230, 3302, 0, 3913, 3459, 3873, 4052, 2724, 4038, 0, 2446, 0, 2747, 290, 0, 3604, 4052, 3645, 1971, 3700, 0, 0, 1907, 3815, 3457, 4016, 3093, 1127, 1980, 2299, 1334, 2811, 3188, 3611, 897, 989, 3855, 3423, 269, 477, 3840, 1947, 2267, 3530, 2392, 227, 3728, 1132, 3390, 3628, 411, 2818, 0, 3562, 3343, 310, 0, 1598, 3113, 328, 0, 0, 0, 3431, 0, 1385, 1849, 3636, 2610, 3835, 0, 731, 0, 1512, 0, 460, 0, 0, 0, 0, 3284, 1350, 0, 2560, 3556, 0, 3281, 0, 1627, 0, 0, 1187, 3559, 838, 404, 1908, 2496, 2772, 3126, 3121, 0, 2745, 1115, 2153, 3209, 3573, 1532, 2978, 1161, 2243, 1370, 2933, 0, 0, 0, 965, 583, 1856, 1079, 4042, 4056, 2987, 0, 3623, 1673, 3517, 3193, 1426, 0, 3591, 3505, 2793, 0, 3507, 0, 2199, 1567, 0, 971, 411, 495, 0, 3104, 445, 3172, 3089, 2473, 0, 3934, 1641, 1034, 1827, 672, 1569, 2100, 2955, 3837, 330, 0, 1747, 2806, 2425, 3933, 0, 3986, 2624, 476, 3047, 0, 902, 1056, 1602, 3346, 0, 1266, 4068, 0, 3108, 0, 1489, 1934, 1352, 2844, 1480, 2096, 0, 800, 0, 421, 3787, 0, 0, 500, 1266, 2843, 0, 3037, 3683, 2606, 412, 268, 3880, 0, 3949, 0, 3869, 2681, 0, 0, 3769, 1912, 3075, 2104, 3738, 1769, 977, 2661, 1962, 3265, 3134, 3264, 2817, 3832, 3947, 3825, 2799, 3122, 3997, 3369, 366, 875, 333, 3996, 3684, 3194, 1660, 2314, 1958, 3493, 0, 0, 2566, 1560, 0, 475, 488, 3704, 3472, 0, 0, 0, 4026, 0, 2516, 1017, 1397, 0, 279, 1400, 0, 3257, 3607, 754, 3625, 0, 1532, 3823, 1206, 919, 3965, 3085, 2944, 3499, 0, 2084, 1806, 2215, 0, 0, 2131, 874, 0, 4079, 0, 3077, 2812, 1293, 559, 3126, 619, 1949, 2618, 0, 3410, 1626, 1280, 3997, 3805, 1347, 0, 891, 0, 3283, 3056, 0, 1239, 0, 0, 0, 1599, 3264, 2848, 3004, 1759, 1881, 2291, 0, 3785, 1856, 3747, 3164, 3046, 3586, 2799, 0, 0, 2295, 3605, 0, 2904, 4013, 3736, 0, 0, 3927, 2767, 1002, 0, 2152, 0, 0, 3990, 0, 3502, 581, 2989, 2007, 0, 2186, 2578, 3729, 0, 634, 1766, 0, 3570, 2092, 3182, 1133, 472, 1773, 480, 2645, 2141, 3448, 0, 1524, 2642, 2042, 209, 658, 257, 2372, 3304, 1149, 0, 3443, 0, 2595, 1110, 2456, 2164, 2243, 0, 3277, 3862, 3783, 3828, 2991, 0, 1940, 0, 430, 0, 0, 2260, 2177, 2830, 3538, 3723, 0, 0, 3023, 3790, 3017, 0, 0, 0, 0, 3415, 2938, 3886, 2861, 0, 688, 3191, 3037, 2549, 3394, 2452, 0, 0, 0, 0, 3474, 1526, 1157, 2995, 3505, 2295, 0, 3912, 0, 1728, 1435, 0, 0, 0, 1978, 2389, 2732, 0, 493, 0, 813, 3187, 2364, 1060, 3713, 0, 0, 0, 414, 3931, 973, 0, 2638, 0, 775, 428, 4039, 1905, 2048, 2826, 0, 660, 0, 0, 3912, 3930, 0, 0, 4006, 0, 0, 1584, 0, 136, 2199, 0, 1949, 0, 0, 522, 3226, 0, 3239, 3508, 3111, 2874, 281, 2239, 2794, 3795, 0, 2000, 0, 3427, 0, 2282, 3669, 2682, 3740, 4005, 927, 3313, 2579, 3640, 3581, 4031, 0, 2744, 0, 0, 3852, 0, 2880, 3360, 2779, 3217, 4096, 3397, 3071, 2523, 538, 159, 937, 2567, 1679, 403, 3215, 3894, 0, 1290, 943, 0, 3711, 0, 2966, 1609, 3761, 0, 1568, 3951, 2882, 3725, 399, 0, 2231, 3755, 335, 0, 0, 1366, 3920, 3307, 0, 3151, 1019, 2942, 2404, 1910, 3513, 1559, 2734, 2269, 4067, 0, 3056, 3189, 3150, 942, 0, 0, 2119, 491, 425, 2416, 3470, 0, 2941, 0, 3848, 0, 3436, 0, 1645, 3563, 3318, 4091, 0, 0, 3033, 3159, 0, 3592, 1725, 2907, 0, 3826, 0, 3681, 2630, 0, 3218, 0, 0, 0, 2391, 1166, 0, 1472, 2472, 0, 0, 3515, 0, 2986, 3042, 3875, 607, 2328, 0, 0, 2658, 0, 1665, 0, 0, 3856, 0, 0, 3306, 3896, 2201, 1364, 1520, 0, 2753, 2155, 1297, 0, 3493, 2221, 3856, 1852, 3153, 3847, 0, 1781, 0, 0, 3609, 822, 2161, 3273, 2284, 0, 0, 2443, 0, 4058, 1365, 2468, 0, 3107, 0, 0, 3981, 3081, 0, 1794, 0, 3074, 0, 2928, 3069, 3517, 2517, 3925, 3403, 3549, 3002, 1815, 841, 392, 0, 652, 0, 3923, 2845, 0, 451, 124, 4060, 3214, 2331, 3352, 3610, 515, 4014, 3131, 3159, 0, 2898, 1288, 1291, 2774, 722, 801, 3323, 0, 0, 3349, 0, 0, 0, 3559, 0, 2428, 2128, 0, 1955, 2131, 0, 3534, 3271, 0, 663, 1789, 1667, 0, 0, 0, 2722, 2560, 2298, 2893, 3686, 3096, 0, 2829, 1728, 2940, 1715, 379, 2111, 667, 3173, 1290, 0, 3722, 1896, 0, 1596, 3542, 431, 0, 2084, 0, 0, 3481, 3759, 0, 0, 2455, 1526, 0, 0, 0, 0, 3048, 2479, 0, 3395, 1211, 3820, 2346, 2361, 2865, 3002, 0, 2413, 991, 511, 0, 3196, 2493, 726, 0, 269, 0, 1864, 1338, 0, 3305, 0, 428, 0, 2293, 3369, 0, 1748, 2215, 1443, 1084, 4084, 152, 1842, 0, 2707, 251, 0, 0, 3931, 1748, 0, 0, 2319, 0, 0, 2932, 3595, 0, 0, 0, 1278, 2979, 1593, 3509, 0, 3800, 2790, 479, 3901, 0, 3716, 2418, 738, 0, 3716, 3740, 0, 568, 2338, 427, 1536, 514, 2376, 0, 0, 830, 2493, 3150, 268, 1640, 884, 3834, 2178, 3337, 2618, 3565, 3553, 1842, 1992, 0, 3730, 0, 0, 0, 1518, 427, 2605, 0, 2440, 3232, 0, 3414, 0, 1702, 0, 3847, 4085, 0, 3858, 2816, 0, 941, 2041, 0, 3911, 1933, 0, 3376, 1415, 3235, 2144, 3981, 3389, 2805, 888, 3298, 3388, 4020, 3524, 713, 0, 2563, 1409, 2152, 0, 3321, 3869, 0, 0, 2955, 2521, 595, 1985, 1542, 4051, 4010, 488, 0, 0, 0, 2759, 487, 0, 3049, 3866, 0, 301, 2202, 2740, 2287, 2802, 2422, 154, 878, 3772, 0, 3637, 0, 0, 0, 647, 0, 0, 0, 995, 452, 1242, 1941, 3191, 3700, 2809, 1214, 2810, 1241, 2814, 469, 3692, 3696, 0, 3377, 0, 2224, 4025, 2245, 0, 772, 0, 3670, 2607, 0, 2292, 1686, 2913, 3708, 1805, 3633, 1846, 2064, 0, 3601, 1744, 3794, 3859, 2489, 3066, 0, 2502, 0, 0, 2067, 2621, 3955, 1707, 0, 0, 0, 3379, 1891, 3170, 443, 444, 0, 1520, 3285, 0, 1276, 0, 2820, 0, 0, 0, 0, 3287, 4051, 3315, 0, 1514, 1697, 3468, 3372, 431, 0, 3386, 0, 0, 1045, 4072, 3271, 0, 3757, 3593, 3844, 0, 1680, 930, 0, 2660, 2962, 2594, 3407, 3188, 0, 2145, 3169, 0, 0, 1886, 441, 1655, 0, 0, 0, 3154, 0, 2219, 2245, 295, 2657, 1510, 0, 3503, 0, 0, 3626, 3310, 2591, 0, 0, 2416, 644, 0, 3864, 0, 2792, 2386, 351, 0, 2027, 2980, 2211, 1663, 2047, 919, 2426, 0, 4002, 0, 2110, 418, 0, 1878, 0, 3016, 3730, 3707, 0, 1242, 0, 0, 3712, 1372, 0, 4031, 0, 0, 3927, 3296, 2694, 4042, 2762, 3158, 0, 0, 1506, 1246, 3832, 1075, 0, 2753, 0, 3846, 2976, 0, 3515, 3863, 0, 3995, 676, 3994, 0, 866, 3206, 3227, 348, 3443, 222, 3507, 2700, 1653, 1598, 2121, 455, 2794, 0, 3914, 3099, 1346, 1671, 3567, 0, 1850, 0, 4060, 324, 0, 2544, 0, 252, 1331, 2028, 0, 912, 2937, 2679, 66, 2353, 0, 0, 0, 2246, 0, 1505, 3750, 2968, 0, 2186, 1851, 2549, 0, 3702, 0, 1791, 0, 0, 0, 1027, 0, 2896, 1247, 385, 285, 4020, 0, 2338, 481, 1588, 439, 2518, 2720, 3694, 3433, 0, 0, 0, 2379, 687, 2151, 0, 409, 0, 3741, 4016, 2872, 3319, 3169, 0, 0, 3572, 4074, 0, 441, 0, 4017, 3729, 3084, 0, 0, 1961, 2318, 0, 395, 1658, 2424, 3286, 2551, 4087, 3940, 2915, 3207, 0, 0, 3009, 0, 2716, 0, 3603, 1130, 3986, 2565, 317, 420, 0, 1439, 2725, 3954, 0, 0, 1061, 0, 1987, 3320, 1067, 3076, 2302, 2709, 679, 0, 1504, 3211, 317, 0, 3031, 3036, 3238, 1189, 0, 3498, 3975, 3830, 2415, 3564, 4093, 658, 1339, 483, 1214, 2290, 2350, 2789, 3550, 0, 0, 956, 1380, 3928, 3602, 1514, 3274, 2154, 351, 0, 331, 0, 2961, 1035, 3952, 1496, 3897, 2863, 432, 0, 968, 3998, 0, 0, 3993, 2356, 2417, 3857, 0, 0, 3113, 1475, 3809, 3917, 449, 2044, 0, 880, 1488, 783, 1236, 3250, 2910, 2144, 2343, 0, 0, 850, 0, 0, 2122, 1279, 2106, 0, 0, 0, 2965, 1641, 2950, 1049, 3749, 0, 2283, 1842, 2622, 496, 0, 3861, 2763, 3800, 4062, 0, 1747, 1139, 3598, 0, 3735, 2757, 3157, 3657, 780, 3999, 582, 3929, 1991, 3881, 0, 1222, 0, 2168, 3859, 545, 0, 921, 2016, 1199, 1938, 1363, 0, 2861, 0, 3456, 4095, 2112, 2702, 4075, 0, 0, 2002, 3718, 346, 4004, 0, 2950, 0, 2650, 3192, 3656, 3010, 2697, 3272, 385, 3903, 4062, 3345, 0, 1599, 3444, 0, 3803, 3140, 0, 1610, 3974, 3050, 0, 3726, 2052, 4005, 2052, 2645, 253, 2874, 0, 3253, 3821, 0, 2874, 466, 0, 1573, 2172, 3964, 1758, 2866, 3713, 2268, 3349, 1705, 3118, 0, 0, 0, 2579, 3552, 1604, 252, 2805, 2490, 1895, 1732, 498, 0, 489, 0, 1043, 2650, 0, 0, 3521, 0, 0, 1266, 1106, 2725, 0, 0, 0, 454, 2528, 3083, 0, 0, 0, 0, 446, 0, 3594, 0, 0, 0, 1336, 0, 0, 0, 3166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3450, 3826, 2429, 0, 1934, 2533, 0, 0, 4087, 0, 3538, 0, 0, 0, 0, 0, 0, 0, 2028, 0, 1314, 0, 0, 0, 1935, 3780, 485, 0, 2560, 0, 0, 0, 0, 2394, 0, 928, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1378, 0, 0, 3600, 0, 0, 2430, 0, 0, 3111, 0, 3479, 3838, 0, 867, 2131, 0, 1502, 0, 3392, 0, 1743, 0, 0, 974, 0, 0, 0, 0, 3781, 0, 0, 0, 4089, 0, 2241, 3945, 2013, 0, 2028, 0, 0, 0, 0, 0, 0, 2142, 0, 3311, 0, 0, 0, 3136, 0, 2735, 3526, 0, 0, 0, 0, 3079, 0, 0, 0, 0, 0, 3132, 0, 0, 0, 3135, 0, 1472, 0, 0, 0, 0, 0, 0, 0, 3532, 0, 1493, 0, 0, 0, 0, 0, 0, 0, 0, 2869, 3608, 0, 808, 2838, 3992, 2138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4026, 0, 0, 0, 3481, 2534, 2683, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3269, 0, 0, 0, 2029, 2457, 3198, 3881, 0, 1646, 0, 0, 0, 0, 0, 2771, 742, 0, 0, 0, 3032, 0, 0, 0, 0, 0, 0, 2615, 395, 0, 0, 2299, 0, 0, 0, 0, 0, 0, 3945, 0, 3677, 1078, 0, 3904, 0, 1014, 0, 0, 0, 0, 0, 1516, 0, 0, 0, 0, 0, 0, 0, 0, 2439, 3213, 2650, 3128, 0, 4080, 2770, 0, 0, 0, 4003, 0, 0, 3745, 1630, 0, 0, 2099, 3062, 0, 0, 3254, 0, 1590, 2078, 0, 3893, 0, 2418, 0, 0, 0, 1132, 0, 0, 0, 0, 1647, 1550, 0, 0, 0, 0, 0, 0, 0, 2010, 0, 0, 1995, 2115, 0, 0, 0, 0, 0, 0, 0, 3912, 1163, 0, 1714, 0, 0, 0, 0, 0, 3958, 1315, 0, 511, 0, 1268, 0, 0, 0, 0, 0, 0, 4026, 1366, 0, 0, 0, 0, 0, 2157, 0, 0, 2973, 0, 0, 0, 3345, 0, 1005, 1120, 0, 0, 3926, 0, 0, 0, 0, 0, 2521, 0, 0, 2970, 0, 0, 0, 0, 0, 3512, 0, 0, 2402, 2301, 0, 0, 4063, 0, 0, 0, 3763, 795, 0, 0, 4046, 0, 1394, 0, 0, 0, 1259, 3195, 0, 2983, 0, 0, 0, 0, 494, 0, 0, 2266, 3297, 0, 0, 2631, 0, 3833, 0, 0, 2670, 2881, 0, 447, 2479, 0, 0, 0, 2902, 2608, 0, 2280, 3506, 3915, 0, 0, 0, 0, 0, 2571, 0, 0, 0, 1275, 2279, 2246, 0, 3321, 0, 0, 1576, 0, 0, 0, 0, 0, 0, 0, 0, 1764, 0, 0, 0, 3532, 2333, 0, 3309, 0, 1958, 0, 0, 0, 0, 3660, 0, 0, 0, 0, 1948, 1473, 0, 0, 3652, 4047, 3568, 0, 0, 0, 0, 3926, 3315, 3449, 0, 1770, 1487, 1978, 4070, 0, 0, 0, 0, 0, 3708, 0, 0, 0, 0, 0, 899, 0, 0, 500, 1813, 3939, 0, 0, 0, 482, 0, 0, 1359, 0, 0, 0, 0, 2925, 0, 0, 0, 0, 0, 0, 1809, 0, 3836, 0, 2843, 0, 0, 0, 2827, 3321, 0, 1970, 0, 0, 0, 0, 0, 2627, 3384, 0, 3142, 0, 2776, 1569, 3766, 0, 1534, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3747, 735, 0, 0, 1876, 0, 0, 0, 0, 0, 3339, 0, 0, 0, 1350, 3224, 2630, 0, 459, 455, 3510, 0, 0, 0, 3960, 3961, 0, 0, 0, 0, 3377, 3214, 0, 0, 0, 288, 0, 2267, 3233, 0, 0, 637, 0, 2714, 0, 0, 2780, 2406, 0, 0, 0, 0, 3467, 0, 0, 0, 0, 2883, 0, 3010, 0, 0, 3130, 0, 0, 1772, 0, 0, 0, 0, 0, 0, 2469, 0, 0, 0, 0, 0, 0, 456, 0, 1542, 0, 3945, 0, 3359, 3461, 0, 2700, 0, 0, 0, 0, 0, 3898, 0, 0, 0, 0, 0, 0, 3089, 0, 0, 3331, 0, 0, 3767, 3735, 2582, 0, 3094, 0, 410, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3600, 3100, 0, 0, 3611, 0, 0, 0, 0, 3679, 893, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3111, 0, 0, 3435, 0, 3967, 0, 0, 3855, 0, 0, 0, 3751, 0, 0, 0, 0, 3103, 3382, 2498, 0, 0, 0, 0, 3785, 0, 0, 0, 0, 0, 0, 1644, 0, 0, 0, 0, 0, 0, 0, 0, 2636, 1234, 0, 0, 2962, 0, 0, 0, 3120, 0, 0, 458, 0, 2853, 0, 0, 0, 0, 0, 0, 3339, 0, 0, 1277, 2956, 1415, 0, 0, 0, 0, 0, 0, 0, 1423, 0, 0, 0, 0, 1292, 0, 625, 0, 1098, 0, 0, 1850, 3698, 1452, 0, 0, 0, 0, 1186, 0, 0, 0, 0, 0, 0, 0, 0, 2947, 3068, 0, 2785, 0, 0, 2314, 0, 3959, 1294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2687, 417, 0, 0, 0, 3907, 0, 0, 2140, 0, 0, 3862, 0, 3603, 0, 0, 0, 0, 0, 0, 3609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 3477, 0, 598, 0, 0, 0, 2108, 0, 1323, 0, 867, 0, 3638, 0, 0, 0, 1821, 3553, 2779, 0, 0, 1171, 0, 2289, 3368, 0, 0, 0, 3016, 0, 3598, 0, 0, 2838, 0, 0, 0, 3323, 0, 3249, 0, 0, 3683, 0, 0, 0, 0, 1734, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3503, 0, 0, 0, 2189, 0, 4018, 0, 0, 1419, 0, 1835, 2557, 0, 0, 0, 0, 1314, 0, 698, 0, 0, 0, 0, 0, 2193, 0, 0, 4088, 0, 2967, 0, 449, 0, 3987, 3442, 0, 984, 479, 0, 2925, 0, 0, 0, 2274, 3266, 759, 0, 0, 1444, 2810, 2715, 1279, 0, 0, 0, 1753, 3201, 0, 0, 3916, 3942, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3307, 0, 0, 2329, 0, 0, 0, 0, 0, 1472, 0, 413, 2062, 3154, 0, 0, 847, 0, 3178, 0, 0, 3882, 449, 1635, 0, 3721, 2704, 0, 0, 3663, 3561, 0, 0, 0, 2365, 3148, 0, 0, 3670, 1262, 0, 0, 0, 3267, 0, 0, 0, 0, 0, 0, 0, 3361, 378, 0, 0, 1836, 2065, 0, 3714, 0, 3850, 3597, 1800, 2917, 0, 4082, 0, 0, 0, 0, 3920, 2007, 0, 3009, 1783, 0, 0, 0, 0, 1375, 0, 0, 0, 0, 0, 0, 0, 0, 3543, 2441, 0, 0, 0, 0, 473, 0, 0, 3734, 0, 3887, 2604, 0, 0, 0, 0, 3922, 3643, 3645, 0, 0, 0, 2527, 0, 0, 0, 0, 0, 3165, 1025, 0, 0, 0, 0, 0, 0, 2440, 0, 0, 3166, 0, 0, 0, 274, 3426, 3093, 0, 0, 0, 3648, 0, 3389, 2068, 3152, 0, 0, 0, 0, 0, 0, 0, 1790, 0, 0, 3413, 0, 0, 0, 0, 3633, 3682, 1699, 423, 0, 0, 0, 380, 0, 0, 0, 4019, 0, 0, 592, 0, 0, 0, 0, 0, 3773, 0, 0, 0, 0, 0, 2677, 3457, 0, 421, 3476, 3804, 0, 0, 0, 0, 3993, 0, 4007, 0, 0, 3729, 409, 1990, 0, 3826, 0, 0, 3575, 0, 0, 0, 0, 0, 2723, 0, 3735, 0, 0, 0, 3043, 0, 1797, 0, 0, 0, 0, 0, 0, 554, 1147, 1652, 0, 0, 3596, 0, 2580, 0, 2628, 0, 2617, 0, 0, 0, 0, 0, 0, 0, 0, 1485, 0, 2500, 0, 1968, 0, 0, 2482, 0, 2710, 0, 2751, 1710, 399, 0, 0, 3526, 378, 2742, 0, 0, 0, 969, 0, 0, 0, 0, 690, 0, 3238, 3400, 3975, 0, 0, 2465, 2879, 0, 0, 0, 0, 2183, 2785, 0, 0, 0, 0, 0, 3084, 3350, 3937, 0, 2951, 4088, 1097, 3802, 0, 0, 0, 0, 0, 1096, 0, 0, 2944, 2885, 394, 0, 0, 0, 2757, 0, 0, 0, 0, 0, 1578, 0, 0, 0, 0, 0, 0, 4033, 0, 0, 1917, 1622, 0, 0, 0, 0, 0, 0, 0, 0, 1773, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3055, 0, 0, 3110, 0, 3742, 0, 0, 3419, 0, 0, 0, 0, 0, 2669, 0, 3865, 0, 0, 0, 0, 0, 0, 0, 3462, 0, 0, 4015, 3989, 0, 0, 0, 0, 0, 3375, 0, 2842, 0, 3633, 0, 0, 0, 0, 0, 3510, 0, 0, 0, 0, 0, 0, 0, 0, 3827, 0, 0, 0, 0, 2820, 1424, 3012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3495, 0, 0, 0, 0, 1403, 3281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2735, 0, 0, 0, 0, 0, 0, 3354, 0, 192, 0, 3579, 0, 0, 0, 3106, 2854, 0, 796, 0, 0, 0, 1401, 0, 3127, 0, 0, 0, 0, 0, 0, 0, 1329, 0, 2990, 3400, 3966, 0, 2739, 2214, 0, 2290, 1542, 0, 0, 0, 1801, 0, 0, 0, 3796, 0, 0, 0, 2562, 2540, 0, 1969, 0, 0, 2198, 0, 0, 0, 4060, 1546, 0, 0, 0, 0, 2034, 0, 1384, 0, 0, 0, 0, 0, 0, 0, 2611, 2678, 0, 1884, 0, 0, 3680, 2977, 0, 2671, 0, 2904, 0, 0, 0, 3868, 0, 0, 3963, 0, 0, 0, 2619, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 684, 2895, 3128, 0, 0, 2828, 0, 0, 0, 0, 0, 0, 0, 2345, 3169, 0, 0, 3954, 0, 1300, 0, 1392, 0, 2459, 0, 0, 2906, 395, 0, 323, 0, 0, 0, 0, 0, 3607, 0, 0, 1304, 0, 500, 0, 0, 0, 0, 3344, 0, 0, 0, 0, 2336, 0, 0, 0, 2072, 3254, 2922, 4023, 0, 0, 3408, 0, 415, 0, 490, 0, 0, 1202, 3327, 0, 2464, 2474, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1073, 0, 1510, 1883, 0, 2606, 1891, 0, 3438, 0, 0, 0, 0, 3674, 0, 0, 0, 0, 0, 0, 2119, 3666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4091, 1667, 0, 0, 0, 0, 0, 3497, 0, 0, 0, 0, 0, 0, 4088, 0, 0, 0, 3197, 0, 0, 0, 0, 0, 0, 856, 0, 0, 2233, 0, 0, 0, 0, 0, 4018, 0, 1234, 0, 0, 2822, 3066, 0, 0, 0, 3725, 0, 1178, 3260, 0, 0, 0, 0, 0, 0, 0, 1946, 2282, 0, 2527, 0, 3982, 0, 3909, 4009, 0, 2029, 2761, 0, 0, 0, 3643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2979, 0, 2611, 683, 0, 0, 1619, 0, 2064, 0, 0, 0, 3504, 0, 0, 0, 3576, 3526, 0, 1011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3325, 0, 0, 3492, 2583, 2675, 2651, 1919, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2504, 2711, 0, 0, 0, 0, 1536, 0, 0, 1077, 0, 2791, 0, 0, 0, 3817, 3790, 0, 0, 2418, 0, 0, 3678, 2104, 0, 1929, 1868, 0, 1813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3241, 0, 0, 0, 0, 4055, 2876, 0, 0, 0, 0, 3173, 0, 0, 3395, 0, 0, 3213, 3850, 2747, 0, 0, 0, 0, 0, 3576, 0, 0, 3652, 0, 0, 0, 0, 387, 0, 3299, 3485, 0, 3416, 1756, 1819, 1609, 0, 0, 2187, 3096, 0, 0, 796, 0, 2842, 0, 0, 2989, 0, 2908, 0, 0, 0, 2457, 0, 0, 0, 0, 3822, 0, 0, 0, 1408, 0, 0, 3665, 3067, 3087, 0, 980, 0, 0, 3962, 0, 2030, 0, 0, 2315, 0, 0, 3855, 0, 4095, 0, 0, 0, 0, 1093, 1696, 1566, 3308, 0, 0, 2238, 0, 3818, 3695, 1405, 0, 2247, 0, 0, 0, 0, 0, 0, 0, 0, 448, 0, 0, 0, 0, 0, 2529, 0, 0, 982, 0, 0, 0, 3848, 0, 0, 0, 0, 0, 3982, 0, 0, 0, 3725, 1246, 2676, 3357, 2020, 0, 0, 0, 0, 3062, 2234, 0, 0, 0, 0, 3541, 0, 488, 0, 0, 2648, 0, 0, 0, 0, 0, 0, 2559, 0, 0, 0, 2213, 0, 0, 0, 0, 0, 0, 0, 3984, 0, 0, 0, 0, 727, 3991, 0, 0, 0, 1840, 0, 3674, 0, 0, 0, 0, 0, 0, 0, 2498, 0, 0, 0, 0, 0, 3158, 0, 0, 3870, 0, 0, 0, 0, 0, 0, 1966, 3974, 3220, 2808, 0, 3744, 0, 0, 0, 0, 0, 879, 0, 0, 3057, 3492, 0, 0, 332, 0, 3247, 0, 1784, 0, 3176, 0, 0, 0, 0, 0, 0, 0, 3656, 268, 3612, 0, 4030, 0, 874, 0, 2442, 3889, 0, 2274, 0, 0, 0, 1310, 0, 0, 0, 0, 0, 0, 0, 3994, 0, 0, 3554, 0, 3465, 0, 3430, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3018, 0, 1385, 0, 0, 0, 0, 349, 3114, 0, 0, 3187, 2629, 3606, 0, 0, 387, 0, 1040, 2901, 0, 0, 0, 0, 1788, 3675, 3904, 0, 0, 0, 0, 0, 3642, 0, 1348, 0, 0, 0, 3447, 0, 4045, 2353, 3771, 0, 0, 0, 2607, 0, 2814, 0, 2438, 2317, 299, 0, 0, 0, 0, 0, 541, 0, 4004, 2591, 0, 0, 0, 0, 3102, 1853, 1789, 3492, 3305, 0, 0, 0, 1965, 0, 3930, 0, 0, 0, 2040, 0, 0, 0, 0, 0, 0, 1335, 0, 0, 1489, 0, 0, 0, 0, 881, 2354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1187, 3567, 1796, 3307, 0, 615, 2393, 0, 3531, 0, 0, 0, 2372, 0, 3689, 0, 3253, 0, 3556, 0, 0, 0, 0, 1027, 0, 1729, 3813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2598, 0, 975, 1503, 2537, 2530, 0, 0, 0, 2221, 1992, 3588, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1154, 0, 0, 0, 0, 1465, 0, 0, 1698, 0, 3499, 0, 565, 0, 0, 2689, 3732, 2169, 3510, 4067, 0, 0, 2434, 3135, 0, 0, 2886, 2998, 0, 0, 0, 1724, 3293, 0, 0, 436, 0, 0, 0, 0, 0, 0, 1305, 0, 0, 0, 2927, 2237, 0, 0, 4073, 0, 0, 0, 4017, 0, 3900, 0, 0, 430, 0, 3624, 0, 0, 4050, 3766, 0, 0, 3867, 3320, 1593, 2691, 2984, 0, 0, 3238, 0, 0, 493, 3110, 4023, 0, 0, 0, 0, 2746, 0, 0, 3703, 2980, 0, 3006, 0, 0, 0, 0, 0, 0, 377, 0, 0, 0, 3955, 0, 0, 0, 2427, 0, 0, 0, 2125, 386, 0, 2121, 240, 0, 0, 1456, 0, 3004, 0, 0, 339, 3582, 0, 0, 0, 0, 0, 0, 0, 3731, 441, 0, 126, 3164, 837, 0, 1580, 4063, 1418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3842, 3998, 0, 0, 0, 0, 3860, 0, 0, 0, 0, 0, 0, 2546, 0, 1809, 3646, 2550, 3687, 1642, 0, 3001, 1879, 1317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 360, 2679, 0, 3804, 0, 1567, 0, 0, 0, 0, 0, 2905, 0, 2919, 870, 3430, 0, 1237, 0, 3842, 0, 4022, 3034, 0, 2026, 1275, 0, 0, 0, 2922, 0, 0, 0, 0, 3255, 1223, 0, 0, 0, 0, 0, 2250, 2977, 0, 1962, 3718, 0, 384, 678, 1564, 0, 0, 0, 0, 0, 0, 1047, 0, 2918, 0, 4047, 3892, 0, 1882, 0, 0, 3900, 0, 2926, 0, 1659, 0, 0, 0, 0, 0, 0, 3473, 916, 0, 0, 0, 0, 3384, 0, 0, 0, 2964, 0, 0, 2974, 0, 0, 2929, 0, 1628, 0, 3787, 0, 0, 0, 0, 665, 2905, 1656, 0, 0, 0, 0, 0, 0, 0, 2939, 0, 1677, 0, 3891, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3041, 0, 0, 0, 0, 3074, 0, 0, 0, 0, 0, 3801, 0, 0, 2426, 3342, 0, 1364, 3064, 0, 0, 2171, 2297, 0, 0, 284, 2972, 0, 2684, 2330, 0, 3061, 1203, 4055, 3896, 0, 0, 777, 0, 0, 0, 0, 375, 0, 2437, 0, 1469, 0, 0, 0, 0, 0, 2251, 0, 0, 0, 0, 0, 1494, 0, 1928, 0, 1409, 0, 0, 0, 0, 3607, 1875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1524, 0, 1450, 1613, 2405, 0, 0, 3794, 0, 0, 0, 1707, 3381, 0, 0, 1946, 3370, 2076, 2487, 3889, 3952, 0, 0, 0, 0, 2108, 1879, 1703, 0, 0, 0, 0, 0, 3088, 0, 4032, 2654, 0, 0, 0, 0, 0, 0, 0, 2748, 1754, 0, 3123, 494, 3455, 0, 0, 0, 0, 0, 3088, 0, 0, 0, 3958, 3984, 2090, 0, 2808, 3289, 0, 658, 0, 2005, 0, 2837, 0, 0, 0, 3617, 1376, 0, 0, 1772, 1704, 3484, 0, 0, 0, 0, 0, 0, 0, 2661, 0, 3651, 0, 2178, 0, 0, 1475, 0, 555, 0, 0, 0, 1153, 4045, 0, 0, 3279, 0, 0, 2327, 285, 0, 0, 0, 0, 0, 3888, 0, 0, 0, 2483, 0, 0, 0, 2081, 1751, 3392, 0, 0, 3583, 4038, 3112, 0, 0, 0, 0, 4047, 0, 0, 2501, 2855, 357, 0, 0, 0, 0, 0, 3296, 0, 0, 0, 0, 3342, 0, 812, 826, 0, 0, 0, 0, 0, 0, 0, 0, 2242, 0, 0, 2769, 0, 0, 3658, 0, 2839, 0, 0, 1936, 0, 0, 2201, 0, 3595, 0, 0, 0, 2458, 0, 3370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1509, 3200, 0, 3353, 2049, 2672, 0, 0, 0, 2382, 0, 0, 0, 0, 3719, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3096, 1959, 0, 0, 0, 2696, 4066, 0, 3300, 0, 0, 0, 0, 3186, 3809, 0, 3625, 0, 0, 0, 0, 0, 0, 2030, 0, 3942, 0, 0, 4001, 0, 3779, 0, 0, 4064, 0, 3909, 2958, 0, 0, 2772, 0, 0, 0, 0, 0, 2069, 867, 2477, 862, 2668, 0, 3888, 0, 2076, 0, 3549, 257, 1110, 271, 3097, 0, 2282, 0, 0, 0, 3830, 2458, 0, 3905, 0, 0, 0, 0, 0, 0, 3720, 0, 0, 0, 1425, 0, 0, 0, 2699, 3168, 0, 3933, 0, 0, 3281, 0, 3908, 0, 0, 0, 0, 0, 3784, 0, 3767, 0, 2460, 0, 0, 0, 0, 2900, 0, 0, 0, 0, 3812, 1752, 2226, 3427, 0, 0, 0, 0, 0, 1912, 2900, 0, 0, 0, 3225, 2478, 0, 0, 3252, 0, 2175, 3450, 0, 3131, 0, 0, 0, 0, 473, 0, 1216, 0, 3915, 0, 1341, 443, 0, 2434, 3364, 3667, 0, 2782, 0, 0, 4065, 3948, 0, 0, 0, 0, 0, 1836, 0, 382, 0, 0, 3613, 0, 0, 1968, 3490, 0, 0, 0, 3857, 3119, 1619, 3528, 3401, 0, 0, 3792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3429, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 876, 1870, 1530, 4094, 1932, 2975, 3828, 3994, 0, 1934, 2672, 0, 0, 0, 0, 1704, 0, 0, 1798, 0, 0, 0, 544, 0, 3064, 0, 404, 0, 0, 1391, 0, 0, 0, 0, 4008, 0, 0, 2749, 3736, 3724, 0, 3768, 0, 0, 0, 0, 0, 3196, 0, 0, 0, 496, 2035, 0, 3599, 0, 0, 0, 0, 0, 0, 0, 2565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3980, 3570, 0, 0, 0, 0, 3908, 0, 4002, 0, 0, 0, 2868, 0, 0, 1701, 2822, 0, 0, 0, 0, 0, 3274, 0, 3176, 0, 0, 0, 0, 0, 3990, 0, 0, 0, 0, 0, 0, 0, 3551, 0, 0, 0, 0, 0, 2285, 0, 0, 2806, 0, 0, 0, 0, 0, 1918, 0, 0, 3676, 2024, 2539, 0, 4039, 0, 0, 2624, 0, 0, 1582, 2830, 0, 0, 0, 0, 0, 3641, 0, 1823, 0, 0, 0, 3976, 3287, 0, 2822, 0, 0, 0, 0, 0, 1121, 417, 0, 1828, 0, 0, 0, 0, 1237, 217, 0, 0, 0, 0, 0, 3816, 0, 0, 0, 0, 0, 0, 3503, 0, 2906, 1565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2453, 3108, 0, 3277, 0, 0, 0, 0, 0, 3285, 2688, 0, 0, 0, 0, 0, 3758, 0, 0, 0, 0, 0, 3707, 4024, 3680, 1723, 481, 2473, 1166, 3245, 3365, 0, 0, 2149, 0, 4034, 0, 1812, 0, 4081, 0, 0, 0, 0, 0, 0, 3586, 3292, 0, 0, 0, 0, 0, 0, 0, 0, 3755, 0, 0, 4065, 0, 0, 0, 0, 0, 1963, 0, 0, 0, 763, 0, 458, 0, 2927, 2173, 0, 0, 0, 3818, 0, 0, 0, 0, 4001, 3929, 2264, 2325, 0, 1374, 0, 0, 0, 3016, 0, 0, 0, 3975, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3518, 0, 0, 0, 0, 3875, 0, 0, 0, 0, 1788, 0, 0, 0, 0, 826, 0, 2666, 3966, 628, 0, 0, 0, 1122, 2768, 0, 1224, 3057, 1895, 0, 3712, 0, 0, 0, 0, 0, 3581, 0, 0, 0, 0, 0, 3013, 437, 0, 0, 0, 0, 0, 0, 0, 2792, 0, 0, 0, 0, 0, 0, 0, 1779, 3614, 0, 4079, 0, 0, 0, 3129, 3289, 2633, 0, 0, 0, 1144, 0, 4035, 0, 0, 1619, 0, 3599, 0, 2672, 0, 3908, 0, 0, 0, 3302, 0, 2828, 0, 0, 0, 0, 1164, 0, 0, 0, 0, 728, 0, 4022, 0, 0, 494, 0, 0, 2513, 4028, 0, 166, 3486, 0, 0, 0, 0, 0, 0, 1553, 0, 0, 0, 3298, 2470, 1405, 3508, 0, 4006, 0, 0, 3891, 0, 3539, 739, 0, 0, 0, 0, 0, 3280, 0, 0, 0, 2673, 0, 0, 2912, 0, 0, 0, 0, 0, 2409, 0, 2542, 2195, 0, 0, 0, 0, 0, 3207, 0, 0, 2965, 0, 0, 3636, 0, 0, 3653, 0, 0, 0, 3635, 0, 4076, 495, 2015, 0, 0, 3854, 0, 3746, 0, 0, 0, 0, 0, 0, 4094, 0, 0, 0, 3000, 1776, 0, 0, 498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3118, 2320, 0, 0, 3079, 0, 0, 0, 0, 0, 0, 0, 0, 2212, 3343, 2398, 0, 0, 0, 3952, 0, 0, 2361, 450, 0, 1551, 0, 0, 0, 0, 0, 3701, 0, 0, 0, 0, 1901, 0, 0, 0, 0, 0, 715, 0, 2803, 3946, 3289, 2569, 2388, 1818, 0, 0, 0, 0, 2155, 712, 0, 0, 0, 3638, 0, 0, 0, 3521, 0, 0, 0, 3442, 0, 0, 0, 0, 0, 0, 0, 0, 3093, 3560, 0, 0, 3764, 1296, 0, 2821, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2632, 0, 0, 0, 3634, 3305, 451, 0, 1874, 4092, 0, 1695, 3147, 2731, 2961, 2857, 0, 0, 0, 4073, 2110, 0, 0, 0, 0, 0, 3082, 0, 3261, 0, 1068, 4024, 3954, 0, 1600, 0, 0, 187, 3411, 0, 0, 0, 2352, 0, 0, 0, 0, 0, 0, 3049, 0, 0, 0, 0, 1812, 0, 0, 0, 1321, 0, 0, 3504, 747, 448, 0, 0, 0, 1317, 2771, 1074, 4038, 0, 0, 0, 0, 0, 0, 2539, 1775, 0, 0, 454, 0, 0, 0, 3805, 0, 0, 0, 0, 0, 0, 0, 562, 0, 0, 0, 0, 0, 0, 0, 2621, 0, 3051, 1663, 3715, 0, 3217, 0, 0, 0, 0, 0, 0, 0, 0, 3841, 0, 3737, 0, 0, 0, 328, 1188, 0, 3182, 0, 0, 0, 0, 1496, 0, 2207, 0, 1550, 0, 2491, 0, 1957, 0, 0, 0, 1580, 0, 0, 3932, 0, 3755, 0, 0, 0, 0, 3422, 0, 0, 1327, 2832, 1240, 2593, 2292, 2748, 0, 0, 0, 0, 3075, 3008, 0, 0, 2702, 0, 2187, 1089, 0, 3213, 0, 0, 2158, 0, 3852, 0, 0, 1742, 0, 3874, 0, 0, 0, 0, 3537, 2903, 0, 0, 0, 0, 0, 0, 4076, 2016, 3814, 0, 2080, 0, 3623, 3829, 0, 0, 0, 3418, 0, 0, 861, 0, 0, 3413, 2628, 0, 0, 0, 0, 3911, 2721, 0, 0, 0, 0, 0, 3698, 0, 2721, 0, 0, 3580, 0, 0, 0, 2629, 2053, 0, 0, 0, 3573, 0, 0, 1013, 0, 936, 0, 2850, 0, 0, 3374, 0, 2286, 0, 753, 0, 1648, 4082, 1519, 0, 0, 0, 0, 0, 0, 0, 2423, 0, 0, 0, 0, 3802, 0, 1167, 0, 0, 3047, 0, 3921, 0, 0, 0, 4039, 0, 1109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2163, 0, 3460, 0, 0, 4090, 0, 3450, 0, 2008, 0, 0, 0, 0, 0, 0, 2432, 0, 1783, 3071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2728, 0, 3236, 275, 0, 0, 0, 0, 1548, 0, 1086, 0, 1051, 3222, 0, 0, 0, 0, 0, 0, 3568, 3315, 0, 0, 0, 471, 0, 0, 0, 0, 0, 0, 1655, 0, 0, 0, 0, 0, 2206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4006, 0, 2992, 2613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3048, 0, 0, 0, 0, 0, 3807, 0, 2348, 0, 2931, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1601, 2431, 0, 0, 0, 0, 0, 2862, 0, 0, 3971, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3630, 0, 0, 0, 0, 0, 0, 0, 3899, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2470, 0, 0, 0, 0, 0, 0, 0, 0, 3119, 0, 0, 1930, 4041, 0, 2388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3403, 0, 0, 0, 0, 0, 0, 4054, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 450, 0, 0, 3600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3219, 0, 0, 0, 0, 0, 1993, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2737, 0, 0, 0, 0, 0, 3549, 2935, 0, 0, 0, 2630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3026, 3107, 0, 0, 0, 0, 0, 0, 0, 0, 1482, 0, 1944, 0, 0, 0, 0, 0, 0, 3473, 0, 1113, 0, 2259, 0, 0, 0, 0, 0, 0, 0, 3211, 0, 0, 0, 0, 0, 3926, 0, 0, 4035, 0, 0, 0, 0, 0, 0, 2173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3316, 0, 0, 0, 0, 1600, 0, 0, 0, 3685, 0, 0, 0, 0, 0, 0, 0, 2512, 0, 0, 2667, 4061, 0, 0, 0, 0, 0, 0, 0, 3304, 0, 0, 918, 2934, 0, 0, 0, 0, 3038, 0, 2646, 0, 0, 0, 0, 0, 0, 0, 3331, 0, 0, 0, 1330, 0, 3932, 0, 0, 0, 0, 1601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3488, 0, 3452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3578, 2160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1500, 0, 0, 3393, 0, 0, 0, 0, 0, 843, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3890, 0, 0, 2616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2831, 0, 0, 0, 475, 1201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3710, 0, 0, 0, 0, 315, 0, 2636, 3811, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3329, 0, 0, 3702, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2935, 0, 0, 0, 0, 0, 0, 464, 0, 1637, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 806, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4021, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3821, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3811, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3446, 0, 0, 0, 0, 0, 0, 0, 1563, 0, 0, 0, 0, 0, 0, 1532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2999, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3162, 3560, 0, 2653, 0, 0, 0, 0, 0, 1483, 0, 1448, 0, 0, 0, 0, 0, 3924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3060, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2477, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 904, 0, 0, 0, 0, 990, 861, 0, 3020, 0, 0, 0, 0, 0, 1908, 0, 0, 2992, 0, 0, 0, 0, 0, 0, 2991, 3688, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3708, 0, 0, 3152, 0, 0, 0, 0, 0, 2781, 0, 634, 3487, 0, 0, 0, 2561, 0, 3314, 0, 0, 0, 1724, 0, 0, 0, 3578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2553, 0, 0, 2344, 0, 0, 0, 0, 0, 4023, 3078, 0, 0, 0, 0, 0, 0, 0, 0, 2927, 0, 3872, 0, 0, 0, 0, 0, 2419, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2092, 0, 0, 0, 0, 0, 3787, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3662, 0, 0, 0, 0, 0, 0, 3697, 0, 0, 0, 0, 0, 0, 2852, 0, 0, 3470, 0, 0, 0, 329, 0, 0, 0, 0, 0, 0, 0, 3434, 2303, 4043, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1475, 0, 0, 0, 1397, 0, 0, 0, 0, 0, 0, 1332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3059, 4010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 766, 2801, 0, 0, 0, 0, 3603, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2222, 0, 0, 0, 0, 0, 0, 1755, 2978, 2063, 0, 0, 0, 0, 2959, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2854, 0, 0, 0, 3996, 0, 0, 0, 0, 3710, 0, 0, 2651, 3170, 0, 0, 0, 892, 3031, 0, 0, 0, 0, 0, 0, 0, 0, 1483, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3404, 0, 0, 0, 0, 0, 0, 2353, 0, 0, 0, 0, 1258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2993, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2883, 0, 0, 0, 0, 0, 0, 0, 0, 2098, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3985, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3851, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3155, 0, 0, 0, 0, 0, 0, 0, 0, 624, 0, 0, 0, 0, 0, 0, 0, 0, 1613, 0, 0, 0, 2890, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2808, 2662, 0, 0, 3495, 0, 0, 0, 1959, 0, 0, 0, 0, 0, 0, 0, 2936, 0, 0, 0, 0, 0, 2932, 0, 0, 0, 0, 2200, 0, 0, 0, 0, 3368, 0, 3051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2617, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3464, 2988, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3541, 0, 0, 0, 0, 3054, 0, 3279, 0, 0, 0, 0, 0, 435, 0, 389, 0, 0, 0, 0, 0, 0, 0, 0, 3471, 0, 825, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3883, 0, 0, 0, 0, 0, 424, 0, 1768, 0, 0, 2486, 0, 0, 0, 2817, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2387, 0, 1533, 2660, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2411, 0, 0, 0, 0, 0, 3956, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3500, 0, 0, 0, 0, 0, 0, 1786, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2855, 0, 0, 0, 3691, 0, 0, 0, 0, 0, 2207, 0, 0, 0, 0, 0, 0, 0, 0, 2268, 3367, 0, 2719, 0, 0, 0, 0, 0, 0, 2504, 3910, 0, 0, 0, 4044, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 729, 0, 0, 2664, 0, 0, 0, 0, 0, 3589, 0, 0, 0, 0, 0, 0, 2734, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3569, 0, 0, 0, 0, 2244, 0, 0, 3593, 0, 3303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3101, 0, 2109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4081, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3676, 0, 3970, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 413, 0, 0, 3971, 0, 0, 0, 0, 2521, 0, 0, 0, 0, 0, 0, 3484, 0, 3239, 0, 0, 3295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2160, 3651, 2933, 0, 0, 0, 3969, 0, 0, 0, 3521, 0, 3938, 0, 0, 0, 0, 0, 0, 0, 0, 1082, 0, 0, 0, 0, 0, 0, 0, 0, 1265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3653, 0, 3400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3031, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3085, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2023, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 918, 0, 0, 0, 3640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 472, 0, 0, 0, 0, 3147, 0, 0, 0, 0, 0, 0, 0, 0, 1670, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1982, 4081, 0, 0, 0, 0, 0, 0, 0, 1676, 0, 1250, 0, 0, 0, 0, 0, 2762, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4049, 0, 0, 0, 3979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 706, 0, 0, 0, 0, 0, 1774, 0, 0, 0, 0, 0, 0, 0, 3125, 0, 0, 4079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3995, 0, 0, 3392, 0, 0, 0, 0, 1815, 3631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3742, 0, 0, 3825, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2832, 2005, 0, 3943, 0, 0, 0, 0, 0, 3836, 0, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2729, 0, 0, 0, 0, 2678, 0, 0, 0, 0, 0, 0, 3887, 0, 0, 0, 0, 2910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3980, 0, 0, 0, 0, 0, 0, 0, 1555, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3657, 0, 0, 0, 0, 0, 0, 1571, 0, 0, 0, 0, 0, 0, 0, 2535, 0, 0, 0, 3147, 1444, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 2441, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1897, 0, 331, 0, 0, 0, 0, 0, 2471, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3334, 0, 0, 0, 0, 0, 0, 0, 4058, 2390, 1712, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1951, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1864, 0, 0, 2302, 0, 0, 0, 0, 0, 0, 3228, 3831, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3649, 0, 0, 0, 0, 0, 2902, 0, 0, 2923, 0, 0, 404, 2936, 3202, 0, 0, 0, 0, 0, 0, 1867, 0, 3619, 0, 0, 0, 0, 2549, 0, 0, 0, 0, 0, 0, 2666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3479, 0, 0, 0, 0, 0, 3499, 0, 0, 0, 0, 0, 0, 0, 0, 2069, 0, 3439, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3026, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3917, 0, 0, 0, 0, 0, 0, 3733, 0, 0, 0, 1829, 0, 0, 0, 0, 0, 0, 1892, 0, 0, 0, 0, 1129, 0, 0, 0, 0, 2079, 0, 3133, 0, 3557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1862, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2797, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3748, 0, 0, 0, 0, 0, 0, 3815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3550, 926, 3637, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2733, 0, 3564, 0, 0, 3914, 0, 2058, 0, 0, 0, 0, 0, 0, 2107, 0, 0, 2003, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3013, 0, 914, 0, 0, 0, 1533, 0, 0, 0, 0, 0, 0, 3620, 291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3440, 2920, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3015, 0, 535, 0, 0, 0, 0, 0, 3410, 0, 0, 0, 0, 0, 0, 3632, 2407, 0, 0, 0, 0, 0, 0, 0, 0, 2728, 0, 0, 4040, 0, 0, 0, 0, 3350, 0, 0, 2612, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3359, 0, 3530, 2229, 0, 0, 0, 0, 3874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3876, 0, 1365, 3871, 0, 0, 0, 0, 0, 0, 462, 2969, 1894, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2747, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2228, 2845, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3624, 0, 0, 3594, 0, 4013, 0, 0, 0, 0, 662, 0, 2547, 0, 0, 0, 0, 1898, 0, 0, 0, 0, 0, 4077, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2321, 0, 0, 0, 3001, 3989, 0, 0, 2307, 0, 0, 0, 0, 0, 0, 0, 0, 3405, 0, 0, 0, 1602, 0, 0, 0, 821, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3495, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1346, 2142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3635, 0, 0, 2953, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3343, 0, 0, 0, 0, 0, 0, 0, 0, 1920, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 738, 0, 0, 0, 0, 0, 0, 1605, 814, 0, 0, 0, 0, 0, 3844, 0, 0, 0, 0, 0, 0, 4071, 0, 0, 1575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 865, 0, 2383, 0, 0, 0, 0, 0, 0, 0, 0, 3639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3864, 0, 0, 0, 2495, 0, 1387, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3460, 0, 0, 0, 0, 0, 0, 0, 3990, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3628, 0, 2839, 0, 3195, 0, 0, 0, 0, 0, 0, 3528, 3956, 1967, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1033, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3785, 0, 0, 0, 0, 1923, 0, 0, 0, 0, 2023, 0, 0, 0, 0, 1778, 0, 0, 0, 0, 0, 1776, 3885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3336, 0, 0, 0, 0, 0, 0, 0, 0, 3582, 2818, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2849, 0, 0, 3947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4003, 0, 0, 0, 3866, 0, 3888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1430, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3928, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2350, 3354, 2909, 0, 0, 0, 0, 0, 0, 3429, 2356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3290, 0, 0, 0, 0, 0, 781, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3902, 0, 0, 0, 3948, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3290, 0, 3479, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2916, 0, 0, 0, 0, 0, 3325, 0, 2604, 0, 0, 3474, 0, 3399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3277, 0, 2051, 0, 0, 0, 3215, 0, 0, 296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3594, 1861, 1786, 0, 0, 0, 1597, 3410, 4059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 906, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1825, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 342, 2467, 0, 0, 0, 0, 0, 0, 1497, 0, 0, 0, 0, 0, 3208, 0, 0, 0, 0, 0, 3976, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2727, 3084, 3587, 0, 3644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2565, 0, 0, 0, 0, 3117, 0, 0, 0, 0, 3604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2130, 0, 0, 2333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2915, 0, 0, 0, 0, 0, 0, 0, 2905, 0, 0, 0, 0, 0, 0, 2102, 0, 1549, 0, 3664, 0, 0, 0, 0, 3012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3998, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2642, 0, 3824, 0, 0, 0, 0, 0, 0, 2673, 0, 0, 0, 0, 0, 0, 2965, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3649, 0, 0, 472, 0, 0, 0, 0, 1638, 0, 3190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2590, 0, 0, 0, 0, 0, 0, 4090, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3571, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3798, 0, 3520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3674, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3381, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1680, 0, 0, 0, 0, 0, 0, 0, 0, 2807, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1679, 1573, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3985, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3916, 0, 0, 0, 0, 0, 0, 2171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1723, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2635, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4063, 0, 0, 0, 0, 0, 0, 0, 0, 3166, 0, 1817, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1987, 0, 0, 0, 0, 0, 1073, 0, 3764, 0, 0, 0, 0, 0, 2911, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 668, 0, 0, 0, 0, 3388, 0, 0, 0, 0, 0, 2035, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2577, 0, 0, 3382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3385, 0, 0, 0, 2568, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1410, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3522, 0, 0, 0, 0, 0, 0, 3748, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3482, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4025, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 486, 0, 736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3944, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1651, 0, 3142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3009, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1101, 0, 0, 3327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3691, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4082, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3969, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3965, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3551, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3065, 0, 0, 0, 0, 0, 0, 0, 0, 2300, 0, 3189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, 0, 2595, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2919, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2951, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3028, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1632, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2046, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1935, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1191, 0, 0, 0, 0, 0, 0, 0, 3601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2117, 0, 394, 0, 0, 0, 0, 0, 3294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2982, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2293, 0, 0, 3227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3943, 0, 0, 0, 0, 0, 2494, 0, 0, 0, 0, 0, 0, 0, 0, 2311, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2474, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4037, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3997, 0, 0, 0, 3167, 0, 0, 0, 0, 0, 0, 0, 3502, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3531, 0, 2860, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1916, 0, 0, 0, 0, 0, 0, 0, 992, 0, 2355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3082, 0, 0, 0, 0, 0, 0, 3356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 959, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2762, 0, 0, 0, 0, 0, 0, 0, 1843, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2998, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2940, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1838, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1809, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2003, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2431, 0, 0, 0, 0, 0, 0, 1585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2826, 0, 0, 0, 3939, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2727, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2851, 0, 0, 0, 0, 0, 0, 3579, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 585, 0, 0, 0, 0, 3823, 0, 3338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3899, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2096, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3884, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2691, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3956, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2724, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2823, 0, 1589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1811, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3754, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3887, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3376, 0, 1249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3323, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4003, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1471, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1468, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3677, 0, 0, 0, 0, 0, 0, 0, 3746, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3705, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3860, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2559, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3827, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1981, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3563, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; const uint16_t H_4096_8192_3d_H_cols[] = { 246, 18, 415, 209, 51, 211, 147, 326, 266, 450, 459, 1119, 227, 213, 9, 38, 390, 369, 624, 271, 30, 270, 59, 32, 498, 1286, 482, 514, 154, 1027, 2, 14, 65, 625, 403, 7, 281, 239, 592, 607, 18, 381, 394, 286, 416, 742, 662, 820, 214, 129, 284, 22, 48, 49, 564, 127, 64, 12, 615, 44, 224, 463, 12, 119, 199, 520, 1358, 1, 436, 397, 102, 94, 414, 259, 451, 3, 443, 135, 21, 368, 70, 162, 286, 236, 728, 36, 5, 305, 363, 568, 93, 431, 72, 37, 453, 35, 393, 296, 317, 505, 41, 269, 367, 96, 59, 464, 221, 532, 66, 81, 563, 120, 140, 32, 252, 314, 289, 217, 85, 289, 394, 371, 44, 53, 94, 88, 4, 9, 715, 361, 455, 106, 762, 253, 303, 352, 263, 189, 114, 391, 103, 822, 516, 357, 573, 79, 87, 75, 33, 16, 257, 356, 237, 90, 35, 424, 116, 119, 51, 838, 305, 76, 40, 309, 290, 176, 34, 236, 280, 83, 58, 1052, 7, 179, 219, 329, 606, 292, 541, 338, 178, 34, 248, 285, 63, 152, 185, 96, 97, 536, 20, 49, 701, 148, 328, 269, 709, 602, 179, 93, 1257, 61, 718, 231, 590, 85, 275, 499, 447, 285, 242, 22, 411, 55, 231, 623, 46, 412, 58, 819, 608, 437, 96, 33, 838, 510, 136, 462, 117, 370, 552, 385, 471, 514, 98, 315, 142, 294, 539, 217, 9, 86, 557, 252, 103, 43, 539, 125, 24, 208, 329, 143, 399, 84, 12, 101, 145, 27, 239, 411, 303, 306, 99, 219, 264, 17, 128, 448, 185, 282, 620, 249, 82, 364, 492, 239, 366, 386, 294, 122, 115, 394, 1, 315, 427, 222, 91, 26, 312, 243, 335, 404, 336, 226, 338, 376, 962, 354, 273, 164, 179, 499, 660, 166, 118, 17, 158, 168, 200, 82, 153, 100, 173, 43, 248, 697, 74, 5, 80, 15, 396, 291, 1236, 152, 613, 134, 2, 121, 85, 37, 126, 752, 193, 5, 347, 474, 45, 507, 998, 25, 130, 350, 38, 195, 134, 520, 14, 693, 12, 759, 425, 159, 214, 384, 389, 824, 278, 48, 318, 273, 498, 65, 968, 340, 61, 553, 88, 342, 457, 165, 1, 160, 149, 82, 13, 6, 39, 216, 172, 140, 461, 111, 873, 253, 106, 128, 317, 137, 194, 99, 586, 68, 112, 259, 236, 251, 159, 1201, 128, 115, 88, 41, 274, 791, 889, 288, 896, 13, 1116, 562, 97, 68, 89, 278, 71, 78, 267, 178, 136, 933, 1188, 710, 200, 374, 77, 943, 55, 194, 18, 485, 6, 437, 283, 208, 164, 11, 224, 536, 373, 94, 148, 174, 57, 561, 426, 12, 426, 72, 507, 236, 144, 604, 403, 5, 51, 231, 11, 97, 59, 20, 583, 28, 166, 399, 53, 37, 68, 216, 81, 87, 5, 305, 964, 47, 80, 723, 42, 490, 708, 427, 1878, 314, 413, 62, 59, 177, 61, 1066, 739, 57, 141, 106, 19, 411, 421, 66, 575, 228, 92, 246, 84, 466, 417, 1593, 125, 1979, 1240, 217, 791, 729, 338, 1277, 984, 1376, 113, 481, 1079, 922, 893, 1993, 1033, 127, 62, 465, 394, 385, 1515, 900, 729, 1470, 1013, 1080, 171, 1512, 945, 207, 759, 997, 430, 282, 878, 952, 760, 744, 1860, 788, 2493, 102, 327, 974, 224, 846, 63, 565, 567, 1423, 255, 1024, 18, 1059, 1428, 2308, 328, 1550, 1022, 740, 266, 867, 566, 68, 187, 884, 472, 241, 3179, 559, 679, 117, 819, 307, 697, 980, 281, 587, 1020, 223, 191, 21, 780, 1433, 152, 670, 2111, 225, 867, 190, 2412, 873, 497, 613, 439, 209, 465, 1857, 302, 1958, 3060, 982, 258, 594, 775, 1242, 781, 53, 85, 424, 114, 1008, 408, 6, 869, 441, 636, 1459, 220, 934, 166, 63, 401, 944, 506, 1460, 831, 1012, 906, 824, 613, 1390, 1743, 708, 110, 38, 155, 2058, 1271, 2638, 2243, 827, 312, 1064, 532, 681, 1872, 811, 1159, 418, 2064, 2773, 492, 1685, 844, 2682, 2669, 1414, 842, 809, 1575, 1012, 1919, 574, 909, 2577, 579, 1254, 1078, 672, 1416, 151, 1778, 753, 1020, 2569, 1212, 614, 714, 1439, 233, 650, 624, 22, 638, 775, 534, 547, 1724, 1126, 3212, 949, 198, 1919, 1097, 556, 475, 1796, 2200, 397, 708, 739, 55, 2264, 184, 1202, 795, 31, 2185, 868, 593, 311, 58, 1482, 704, 2824, 7, 387, 1135, 2216, 1643, 1781, 1569, 627, 146, 226, 1041, 1303, 310, 6, 1929, 1000, 2924, 726, 142, 224, 692, 84, 178, 2813, 1842, 1365, 995, 237, 455, 619, 1281, 1715, 1239, 1167, 116, 273, 976, 528, 1232, 287, 580, 974, 1686, 876, 72, 1638, 104, 906, 597, 766, 2040, 449, 1555, 491, 2579, 421, 1983, 862, 267, 604, 289, 814, 1639, 271, 800, 278, 418, 1305, 1539, 772, 1365, 159, 394, 1468, 1026, 2634, 1328, 2382, 1968, 2658, 1130, 980, 205, 685, 2003, 176, 1088, 73, 159, 1321, 2097, 2496, 554, 1163, 764, 1583, 234, 1792, 656, 2108, 3017, 2376, 1603, 1986, 277, 2857, 3217, 446, 2256, 1074, 1805, 487, 208, 506, 553, 192, 1532, 2228, 416, 1364, 60, 776, 1268, 25, 1017, 37, 435, 1647, 398, 1234, 1302, 1929, 299, 1042, 973, 77, 379, 408, 66, 884, 303, 1703, 953, 513, 96, 1018, 851, 2514, 249, 658, 654, 92, 1598, 2603, 51, 1244, 507, 616, 1062, 2235, 919, 286, 1602, 245, 105, 300, 313, 922, 15, 137, 707, 363, 673, 361, 1689, 753, 511, 3242, 796, 1327, 284, 962, 458, 133, 802, 2699, 140, 670, 175, 2615, 283, 1186, 676, 666, 448, 426, 2884, 259, 2627, 50, 608, 407, 1574, 2755, 213, 68, 684, 1279, 841, 533, 1523, 1554, 853, 1629, 846, 103, 2223, 2024, 1029, 1298, 1278, 1270, 1263, 508, 2362, 772, 1119, 525, 575, 39, 43, 676, 1721, 424, 314, 3349, 384, 1807, 1036, 2113, 1745, 1140, 2527, 123, 872, 3849, 875, 39, 74, 984, 45, 106, 27, 912, 202, 41, 693, 107, 402, 131, 768, 967, 805, 524, 304, 282, 147, 967, 1543, 853, 836, 2311, 241, 265, 1463, 1624, 188, 956, 27, 991, 2019, 249, 363, 196, 1408, 916, 395, 355, 1792, 1508, 2166, 253, 2469, 1098, 1799, 1098, 569, 2431, 272, 1630, 386, 182, 1041, 451, 232, 1648, 3263, 1680, 1531, 705, 1609, 2557, 1113, 823, 1806, 329, 2180, 2163, 790, 764, 1276, 1000, 1757, 22, 2052, 336, 1224, 2610, 1187, 1035, 314, 1768, 1950, 1587, 181, 269, 744, 1701, 909, 460, 1477, 716, 969, 2197, 1203, 706, 2180, 2239, 3501, 294, 968, 979, 1229, 73, 153, 249, 2277, 99, 1875, 551, 461, 1572, 2174, 1519, 316, 1666, 3383, 75, 58, 810, 1136, 2252, 381, 914, 1301, 800, 456, 1781, 1584, 799, 154, 372, 467, 2836, 834, 112, 3073, 1331, 128, 564, 338, 1431, 560, 1169, 939, 8, 20, 364, 3300, 144, 883, 400, 183, 2920, 2643, 42, 1090, 3215, 358, 300, 842, 1605, 70, 404, 1761, 123, 1525, 523, 1856, 548, 225, 3291, 969, 555, 692, 2366, 841, 2769, 1620, 878, 86, 464, 70, 817, 447, 622, 515, 1306, 2713, 1156, 327, 66, 131, 1247, 2683, 572, 1870, 747, 892, 1103, 1242, 1861, 2295, 770, 129, 1739, 366, 1877, 513, 1940, 1845, 682, 711, 194, 201, 1268, 2296, 1990, 227, 1109, 495, 2010, 637, 2513, 1560, 2023, 763, 526, 591, 1630, 278, 1372, 262, 1616, 655, 2757, 553, 1521, 3102, 191, 343, 785, 865, 2359, 724, 3195, 913, 1051, 2826, 1317, 2535, 1405, 367, 1495, 1649, 123, 682, 563, 82, 1768, 904, 135, 433, 2886, 107, 1661, 1908, 1127, 503, 1653, 964, 1440, 1127, 345, 2156, 36, 2449, 1748, 1146, 519, 26, 1409, 1706, 953, 1322, 349, 403, 2304, 583, 167, 649, 2506, 151, 2790, 126, 205, 957, 2689, 307, 1444, 1854, 483, 446, 786, 781, 1947, 808, 375, 53, 669, 2118, 558, 612, 550, 410, 2821, 1105, 3149, 518, 796, 1589, 828, 287, 124, 581, 1670, 366, 1582, 1137, 365, 1870, 977, 81, 1654, 1304, 386, 56, 241, 2168, 1281, 1344, 53, 336, 486, 588, 710, 89, 758, 1045, 1401, 879, 17, 1198, 67, 133, 2391, 1379, 144, 2394, 1173, 1824, 67, 2232, 18, 1360, 130, 3076, 905, 2827, 1103, 977, 2196, 1117, 1744, 2688, 298, 684, 586, 1325, 731, 1370, 1529, 268, 1329, 13, 209, 523, 2359, 1558, 1436, 2159, 2646, 1320, 348, 854, 501, 1014, 2656, 1580, 136, 795, 1925, 1080, 2782, 1699, 82, 247, 2060, 246, 2585, 1206, 1522, 887, 1152, 1536, 529, 693, 2167, 28, 1569, 535, 399, 1400, 552, 1166, 1420, 426, 1928, 1096, 898, 1430, 797, 1964, 226, 236, 1336, 844, 1231, 254, 1525, 2988, 1266, 783, 30, 1658, 2345, 939, 352, 482, 1622, 791, 1414, 113, 490, 584, 316, 481, 637, 204, 92, 1267, 365, 89, 1839, 1533, 1888, 883, 376, 771, 925, 383, 979, 2565, 557, 788, 881, 471, 510, 420, 805, 265, 902, 355, 2432, 2005, 201, 491, 666, 895, 1006, 223, 1415, 1178, 1750, 1602, 125, 301, 2142, 1879, 154, 482, 713, 1162, 522, 2018, 1231, 1941, 649, 1279, 327, 879, 662, 664, 995, 497, 1153, 2235, 2085, 242, 358, 112, 1694, 61, 2071, 657, 630, 1914, 511, 432, 95, 2291, 2242, 771, 257, 69, 65, 385, 1649, 778, 847, 15, 1333, 2184, 210, 1410, 2382, 2039, 3252, 717, 664, 71, 2707, 232, 1921, 466, 3, 604, 1532, 110, 798, 578, 561, 2101, 1825, 1005, 2222, 26, 1141, 1910, 653, 458, 931, 351, 515, 811, 423, 1085, 306, 1396, 142, 768, 1344, 992, 1772, 343, 2667, 177, 583, 145, 1021, 743, 1348, 2182, 1956, 350, 1194, 48, 648, 2413, 668, 483, 2434, 1513, 453, 447, 1323, 861, 1994, 379, 2065, 500, 880, 332, 181, 339, 626, 1242, 291, 52, 2409, 723, 183, 754, 1454, 119, 2423, 1069, 399, 96, 1025, 959, 1767, 2784, 1147, 1726, 121, 1902, 708, 768, 34, 1468, 1952, 1586, 470, 173, 835, 1779, 1419, 90, 1334, 1090, 216, 126, 1, 2704, 1408, 180, 282, 2218, 169, 1765, 1321, 950, 732, 653, 189, 635, 76, 1544, 2484, 1662, 749, 983, 217, 305, 1112, 1967, 923, 1121, 1230, 3760, 847, 12, 929, 1388, 330, 605, 80, 836, 933, 1579, 265, 3242, 696, 627, 1014, 1250, 952, 463, 1149, 724, 269, 1102, 2161, 2377, 276, 590, 511, 966, 865, 2625, 2149, 1405, 398, 1069, 579, 960, 3211, 184, 1295, 413, 630, 1156, 1955, 2949, 1041, 1161, 1049, 76, 1957, 2734, 1438, 332, 1882, 2718, 42, 196, 1260, 1578, 1182, 1428, 329, 1772, 1099, 758, 170, 555, 778, 1003, 1191, 685, 479, 1812, 774, 596, 153, 2277, 319, 1241, 1189, 1644, 918, 1740, 258, 932, 496, 460, 54, 1976, 2281, 103, 1927, 608, 167, 1006, 1426, 2588, 996, 2461, 1099, 986, 1699, 1228, 1297, 749, 1271, 1636, 709, 2066, 174, 1547, 462, 538, 260, 735, 1168, 1723, 496, 83, 637, 1343, 2203, 3290, 1009, 317, 913, 1804, 290, 1992, 1353, 263, 2095, 186, 1718, 1332, 498, 117, 362, 280, 761, 471, 105, 284, 2254, 1221, 1258, 943, 1063, 787, 546, 2852, 111, 1033, 964, 1819, 91, 535, 840, 1615, 1906, 515, 234, 2033, 220, 277, 1744, 180, 1811, 841, 371, 1044, 972, 1114, 827, 876, 3116, 740, 531, 718, 1269, 1617, 157, 941, 71, 1659, 639, 287, 1867, 1378, 3424, 75, 1663, 1451, 480, 618, 375, 2682, 803, 1399, 536, 1697, 86, 997, 1347, 2046, 606, 73, 57, 522, 2691, 54, 2514, 333, 1773, 1371, 320, 1043, 3141, 32, 302, 334, 1193, 1876, 576, 91, 1101, 955, 377, 426, 1175, 543, 445, 825, 590, 98, 894, 679, 1471, 1653, 2627, 2007, 1393, 3364, 208, 264, 342, 16, 837, 124, 728, 1641, 1892, 271, 1826, 1730, 976, 1289, 368, 1572, 1358, 1812, 1576, 264, 1457, 1086, 1054, 509, 1991, 427, 662, 1690, 612, 330, 2021, 1282, 2689, 1338, 176, 109, 2100, 751, 37, 57, 858, 2145, 683, 360, 756, 1272, 2801, 105, 209, 400, 220, 1165, 212, 2906, 2021, 1663, 1372, 670, 1860, 250, 1142, 1091, 471, 1496, 388, 235, 433, 702, 1444, 141, 2059, 2007, 46, 274, 546, 292, 946, 732, 603, 444, 1091, 454, 276, 483, 28, 2449, 321, 11, 856, 19, 134, 962, 1991, 482, 1202, 2415, 1370, 259, 615, 235, 1411, 1138, 1294, 872, 1542, 2292, 2218, 49, 2894, 1937, 1093, 1072, 766, 138, 192, 1203, 502, 119, 112, 494, 3137, 393, 2040, 171, 2002, 656, 160, 1345, 2077, 985, 1752, 160, 51, 212, 1923, 322, 297, 407, 598, 1023, 554, 588, 229, 1678, 1197, 2458, 2984, 308, 1019, 412, 1613, 2677, 830, 2906, 339, 475, 14, 477, 256, 820, 641, 1675, 227, 690, 311, 488, 1013, 535, 1345, 1057, 475, 561, 137, 1271, 409, 536, 1617, 541, 712, 402, 940, 518, 206, 1082, 2446, 1140, 508, 854, 318, 677, 1634, 161, 1226, 991, 382, 928, 1095, 201, 894, 1094, 685, 1764, 671, 285, 1608, 942, 1924, 2626, 1842, 359, 2099, 187, 213, 23, 62, 1477, 1750, 1514, 1702, 318, 1028, 1944, 678, 139, 1791, 428, 849, 82, 808, 2423, 1742, 560, 1498, 772, 2324, 97, 580, 1891, 541, 1124, 480, 341, 179, 527, 243, 2979, 128, 64, 3512, 1424, 100, 953, 1220, 2055, 994, 2247, 2954, 493, 2025, 2347, 577, 354, 504, 478, 498, 701, 683, 3560, 761, 793, 3173, 2041, 1643, 2325, 869, 651, 551, 364, 74, 611, 682, 2349, 2344, 468, 806, 299, 1725, 1288, 124, 21, 878, 890, 406, 185, 570, 2249, 773, 955, 35, 1262, 638, 3536, 1510, 335, 1185, 952, 1525, 325, 256, 316, 18, 1739, 359, 1619, 667, 228, 139, 671, 1025, 814, 2144, 725, 367, 1061, 1298, 2297, 640, 741, 1399, 779, 3042, 408, 3041, 2200, 347, 1701, 1722, 254, 210, 575, 129, 1149, 1960, 452, 1207, 117, 1099, 2026, 1486, 639, 448, 1898, 1016, 2022, 450, 345, 479, 140, 69, 155, 954, 1379, 2312, 340, 1352, 373, 215, 1822, 923, 47, 414, 609, 1540, 319, 1569, 304, 428, 542, 829, 380, 163, 984, 1089, 447, 419, 562, 1749, 3306, 171, 1559, 922, 319, 1049, 894, 927, 2368, 2907, 2361, 242, 2942, 944, 1256, 690, 232, 730, 386, 1713, 78, 821, 195, 1339, 500, 392, 87, 1741, 355, 237, 297, 825, 1712, 182, 622, 1992, 1448, 893, 1347, 1104, 1326, 310, 524, 1355, 1625, 561, 809, 437, 1730, 633, 467, 665, 156, 1034, 390, 2967, 226, 999, 290, 862, 918, 1056, 1576, 1378, 1751, 59, 552, 1893, 309, 628, 1308, 204, 1537, 1734, 1441, 1628, 1288, 276, 3047, 1587, 1181, 998, 149, 1808, 1224, 545, 295, 120, 859, 539, 2065, 266, 45, 1473, 741, 118, 988, 377, 375, 2806, 2404, 755, 203, 2381, 559, 179, 3055, 898, 1511, 125, 1855, 66, 618, 1632, 304, 1413, 1591, 74, 823, 385, 102, 890, 258, 248, 308, 921, 25, 2090, 1694, 267, 642, 1850, 1195, 3193, 1442, 296, 1080, 1357, 521, 1311, 1123, 228, 940, 2177, 34, 1255, 35, 88, 97, 1465, 2608, 2337, 333, 161, 2673, 44, 268, 1126, 1090, 812, 668, 937, 696, 2545, 83, 686, 365, 64, 84, 1114, 1997, 1629, 822, 1045, 213, 2153, 1586, 640, 195, 230, 1369, 1633, 31, 1124, 1388, 1877, 206, 164, 2424, 1116, 2300, 1634, 71, 2058, 934, 1249, 427, 110, 1804, 1255, 141, 1375, 1198, 620, 1404, 540, 1882, 133, 681, 1595, 3403, 455, 2479, 1849, 273, 737, 402, 1250, 2624, 1777, 596, 1758, 341, 3292, 1284, 784, 582, 205, 1702, 411, 2140, 46, 219, 320, 852, 192, 505, 1595, 373, 199, 194, 835, 1770, 24, 1112, 6, 147, 431, 1440, 1553, 38, 194, 79, 1992, 1826, 155, 100, 838, 1544, 1938, 762, 1554, 897, 533, 601, 1859, 2563, 162, 2693, 2171, 1053, 1477, 526, 611, 52, 1217, 890, 61, 599, 1504, 139, 727, 3202, 571, 494, 1166, 2520, 234, 442, 1503, 806, 1304, 1365, 104, 557, 499, 3122, 1235, 77, 681, 458, 2188, 1085, 562, 565, 694, 15, 5, 1362, 2056, 604, 567, 705, 198, 23, 1089, 856, 1117, 1341, 1851, 2210, 1101, 651, 1652, 2191, 432, 341, 1356, 1530, 1833, 38, 1236, 235, 576, 1239, 1163, 1060, 1016, 3612, 400, 308, 283, 1285, 1454, 552, 485, 1969, 296, 418, 324, 648, 326, 839, 609, 891, 1037, 1354, 1958, 221, 2983, 222, 1087, 2978, 434, 2397, 1921, 44, 270, 1260, 551, 873, 396, 1230, 172, 2438, 1620, 1692, 1650, 792, 190, 1615, 1779, 3433, 1959, 414, 1038, 1138, 42, 869, 2907, 1803, 623, 116, 755, 368, 568, 2501, 1148, 1671, 206, 195, 7, 145, 773, 838, 1170, 2193, 864, 1053, 804, 2456, 636, 912, 1392, 643, 1175, 1015, 660, 1476, 1205, 598, 1027, 848, 935, 938, 626, 2272, 165, 1070, 382, 323, 615, 981, 1171, 1402, 789, 920, 1350, 1801, 2367, 93, 1133, 1, 1688, 2050, 2383, 2315, 1155, 439, 1081, 495, 1792, 136, 240, 285, 1390, 1488, 64, 101, 272, 2695, 393, 2256, 1895, 1880, 1391, 2468, 625, 1259, 1789, 678, 1928, 855, 765, 108, 2352, 763, 17, 1717, 2169, 2070, 491, 1073, 1232, 219, 1362, 917, 274, 223, 2713, 629, 1009, 907, 30, 76, 789, 889, 618, 1010, 801, 830, 221, 214, 1326, 581, 492, 1708, 563, 203, 454, 79, 115, 1302, 2274, 1195, 211, 2366, 706, 1202, 2562, 2613, 376, 1240, 1487, 134, 1488, 1537, 980, 1556, 337, 230, 1371, 1461, 100, 815, 2667, 3154, 936, 818, 1732, 911, 2207, 343, 43, 477, 807, 1870, 455, 586, 1120, 289, 794, 1387, 1762, 2316, 152, 895, 1000, 985, 1391, 539, 1233, 850, 754, 654, 207, 211, 1002, 547, 135, 771, 479, 610, 2331, 720, 787, 834, 691, 612, 103, 512, 1194, 489, 1773, 2492, 1594, 173, 2230, 86, 855, 961, 3105, 1060, 1172, 156, 356, 860, 10, 424, 625, 629, 1147, 1312, 2341, 293, 1341, 579, 1472, 29, 431, 3353, 2559, 1324, 1607, 295, 2209, 658, 3035, 1646, 431, 975, 1541, 2511, 114, 120, 1222, 1476, 439, 29, 1243, 1212, 550, 3135, 2479, 903, 47, 2240, 1342, 48, 1619, 1034, 1484, 528, 1485, 1072, 3280, 1361, 116, 61, 1510, 1956, 55, 292, 1504, 252, 2749, 1296, 1951, 587, 1642, 806, 1311, 132, 755, 163, 362, 1211, 186, 244, 95, 603, 389, 1741, 782, 2471, 1387, 966, 1410, 3014, 762, 1144, 168, 3608, 1743, 960, 211, 2050, 376, 750, 1187, 357, 1854, 80, 328, 1537, 1229, 193, 1247, 1310, 2500, 406, 963, 1363, 815, 665, 229, 1050, 25, 986, 37, 1323, 10, 1109, 2714, 861, 478, 810, 829, 2486, 2027, 1068, 407, 40, 945, 1208, 2305, 1074, 631, 41, 1415, 2802, 180, 157, 899, 450, 677, 989, 970, 346, 1904, 1704, 207, 315, 317, 474, 20, 655, 468, 1266, 228, 932, 2522, 1121, 2491, 247, 432, 2343, 927, 1805, 98, 689, 688, 1322, 1921, 2783, 51, 2333, 2690, 1522, 190, 669, 1244, 294, 659, 322, 1939, 556, 904, 2011, 286, 32, 356, 547, 1733, 1821, 279, 712, 647, 2392, 1231, 436, 902, 517, 416, 1007, 409, 142, 646, 3285, 2037, 7, 1295, 1158, 1549, 1823, 381, 673, 525, 832, 143, 1135, 683, 262, 1906, 1737, 303, 2032, 698, 522, 1714, 735, 476, 1434, 1465, 318, 218, 295, 1358, 91, 2477, 2674, 1172, 987, 769, 1853, 391, 173, 766, 331, 740, 1993, 829, 1684, 1965, 1474, 271, 2460, 634, 646, 148, 2012, 661, 152, 134, 104, 197, 149, 1412, 1040, 555, 703, 90, 2270, 2126, 2111, 1036, 169, 3186, 584, 1004, 1048, 1014, 617, 645, 891, 1632, 1412, 972, 47, 870, 337, 2405, 688, 22, 938, 1877, 1577, 1261, 353, 1493, 1872, 636, 19, 1267, 931, 1019, 916, 1431, 122, 1628, 8, 109, 504, 115, 2156, 1136, 1293, 695, 2807, 635, 175, 1665, 404, 2779, 672, 214, 1428, 202, 191, 1597, 2133, 745, 244, 750, 1594, 107, 719, 1071, 28, 738, 269, 603, 1703, 321, 1632, 361, 253, 1980, 2581, 2014, 29, 352, 2530, 2518, 1168, 92, 337, 1470, 1210, 3389, 610, 248, 1727, 1570, 998, 1277, 1911, 3283, 695, 1517, 33, 920, 1558, 323, 1658, 429, 910, 168, 1874, 2048, 517, 289, 578, 951, 2017, 1011, 688, 998, 250, 2130, 90, 1001, 773, 975, 1044, 396, 208, 643, 1904, 1696, 93, 2105, 150, 809, 3000, 27, 1584, 1971, 1431, 1359, 1490, 1883, 1376, 1156, 2107, 1009, 2771, 3541, 2304, 1256, 62, 714, 368, 1720, 415, 1681, 608, 2937, 182, 2200, 1246, 423, 2215, 1385, 1001, 1957, 469, 5, 130, 633, 978, 200, 1, 394, 925, 4, 1977, 1376, 450, 1298, 908, 765, 1402, 274, 1631, 306, 69, 299, 442, 701, 751, 1274, 387, 957, 1640, 162, 582, 1810, 832, 875, 2670, 326, 230, 438, 966, 1455, 324, 1296, 938, 285, 215, 884, 122, 334, 1479, 334, 657, 1320, 1052, 3151, 1039, 621, 218, 1085, 918, 895, 1269, 1316, 335, 83, 787, 756, 1337, 2447, 602, 45, 581, 832, 399, 736, 147, 13, 1162, 1859, 2032, 1017, 11, 2664, 429, 101, 514, 196, 1875, 2267, 372, 623, 549, 1278, 1583, 264, 217, 1301, 3158, 1734, 1965, 760, 359, 2853, 1709, 1205, 463, 860, 1890, 60, 1816, 1196, 1363, 417, 420, 370, 2653, 1184, 10, 501, 2598, 484, 1761, 999, 1604, 853, 1695, 1141, 721, 185, 2030, 713, 617, 820, 1319, 965, 1526, 1973, 1552, 783, 1292, 1671, 494, 33, 261, 469, 999, 156, 118, 2443, 1186, 353, 188, 1674, 606, 757, 680, 165, 767, 347, 624, 1681, 56, 1129, 594, 113, 336, 1549, 1654, 430, 797, 1193, 93, 333, 193, 1395, 815, 1460, 1897, 566, 1013, 467, 379, 905, 598, 1805, 1884, 1640, 1425, 267, 1700, 1447, 2325, 640, 242, 460, 930, 1516, 2746, 350, 2396, 298, 3243, 592, 1132, 218, 473, 788, 2739, 1540, 2672, 2159, 744, 340, 1964, 1301, 607, 387, 94, 137, 742, 686, 302, 1523, 993, 162, 202, 620, 1171, 959, 896, 43, 2601, 257, 1145, 777, 1089, 638, 1503, 2690, 344, 2217, 291, 2754, 715, 2012, 888, 174, 575, 1082, 383, 449, 158, 871, 222, 1356, 1158, 2143, 813, 360, 1285, 487, 346, 866, 253, 585, 833, 2221, 1207, 1326, 2676, 497, 519, 1417, 2551, 1374, 971, 1684, 425, 725, 545, 186, 371, 542, 1547, 143, 723, 14, 813, 1233, 67, 703, 570, 85, 626, 1360, 851, 1961, 2693, 78, 1598, 164, 858, 677, 157, 322, 3007, 1756, 1611, 433, 668, 1506, 1513, 2573, 413, 729, 855, 2376, 262, 2774, 571, 1470, 1850, 128, 1291, 111, 1159, 3024, 1812, 1131, 2728, 883, 859, 240, 1328, 1445, 897, 1163, 862, 1404, 767, 163, 1553, 849, 1190, 485, 824, 595, 1386, 1210, 2406, 1786, 449, 476, 2294, 920, 301, 1979, 470, 1668, 2261, 95, 1606, 243, 924, 1330, 915, 364, 388, 1557, 248, 2, 706, 473, 826, 1132, 913, 633, 260, 2132, 2483, 987, 652, 144, 342, 569, 801, 221, 54, 2245, 1119, 804, 8, 1527, 1735, 634, 52, 703, 3487, 527, 3266, 505, 2102, 602, 443, 3110, 1624, 1059, 1280, 1432, 1495, 1018, 1827, 2764, 472, 2947, 1796, 378, 1737, 245, 1774, 519, 1200, 2208, 616, 650, 1382, 529, 680, 245, 2122, 632, 332, 1546, 1674, 1321, 2934, 388, 281, 1436, 344, 200, 1508, 2630, 730, 4, 1055, 362, 3165, 138, 65, 1665, 24, 256, 187, 1155, 280, 970, 114, 559, 679, 1788, 451, 444, 489, 946, 1179, 440, 138, 2686, 307, 108, 9, 58, 111, 1409, 370, 313, 742, 605, 1101, 1637, 512, 728, 1609, 331, 946, 1292, 1033, 1500, 238, 338, 1076, 59, 1140, 750, 1212, 1190, 1588, 461, 57, 1157, 2943, 1452, 610, 2054, 1572, 246, 1978, 1862, 1645, 1664, 850, 1164, 736, 49, 2882, 949, 1309, 34, 1408, 2676, 272, 1942, 1037, 39, 420, 40, 4, 537, 1685, 94, 1007, 293, 1366, 711, 614, 1656, 1658, 2594, 2064, 1988, 360, 1061, 848, 132, 630, 2364, 726, 1769, 1438, 2867, 797, 261, 1907, 849, 1306, 2324, 1371, 1028, 283, 345, 1494, 1659, 656, 56, 1120, 87, 3235, 277, 233, 486, 790, 1600, 215, 722, 1199, 769, 1016, 1437, 1100, 2822, 293, 573, 2616, 456, 294, 692, 184, 2663, 409, 666, 136, 1939, 1169, 2075, 50, 251, 1223, 149, 717, 3020, 441, 1759, 131, 326, 958, 2250, 436, 644, 1218, 745, 1164, 661, 1254, 1106, 1183, 534, 484, 354, 585, 3656, 733, 933, 580, 448, 2778, 1514, 1952, 229, 369, 765, 516, 126, 1130, 991, 1325, 1339, 118, 973, 2839, 1357, 2819, 279, 1786, 2727, 1386, 1580, 1636, 1095, 480, 237, 669, 574, 225, 652, 1548, 1980, 617, 1150, 472, 985, 1960, 935, 106, 255, 1710, 1926, 1279, 1124, 702, 1121, 1722, 2159, 3284, 1753, 1268, 499, 631, 380, 760, 284, 1383, 2957, 1996, 23, 1195, 2128, 3, 464, 2804, 2466, 1544, 425, 97, 3220, 278, 508, 1780, 35, 16, 1310, 719, 1189, 2794, 1418, 2946, 1174, 857, 2372, 2174, 371, 243, 1699, 641, 1263, 1062, 2789, 410, 189, 664, 589, 675, 1403, 2039, 854, 63, 1238, 357, 716, 1351, 2624, 3076, 1616, 177, 1234, 542, 129, 1868, 397, 486, 298, 647, 1403, 2586, 699, 238, 224, 1866, 1117, 836, 1088, 2173, 1514, 415, 3189, 389, 1073, 1467, 2101, 1319, 1253, 531, 499, 2136, 108, 973, 1768, 722, 1303, 694, 146, 2214, 273, 1867, 1066, 524, 484, 2423, 1696, 41, 958, 115, 12, 1693, 1940, 36, 712, 661, 808, 1131, 446, 470, 549, 285, 244, 257, 749, 279, 452, 634, 1265, 424, 425, 327, 50, 446, 426, 727, 414, 138, 825, 183, 348, 1252, 1385, 1197, 758, 173, 1459, 203, 647, 1075, 939, 434, 291, 415, 410, 1939, 1134, 176, 816, 482, 591, 514, 982, 685, 991, 476, 1063, 910, 75, 367, 364, 997, 404, 363, 781, 947, 121, 445, 465, 666, 766, 270, 887, 1430, 5, 752, 1173, 238, 579, 448, 399, 679, 613, 990, 177, 33, 480, 239, 175, 736, 353, 1154, 184, 674, 521, 674, 697, 434, 475, 1664, 458, 673, 150, 1106, 669, 454, 771, 107, 915, 939, 181, 181, 665, 894, 924, 602, 386, 1048, 487, 440, 157, 415, 327, 634, 1522, 891, 512, 1059, 534, 705, 101, 466, 312, 393, 1040, 847, 482, 471, 166, 1277, 1225, 626, 441, 591, 843, 195, 640, 271, 1062, 851, 629, 769, 559, 148, 317, 515, 220, 1182, 411, 282, 319, 130, 843, 566, 535, 235, 1053, 332, 448, 584, 681, 359, 1381, 223, 407, 671, 385, 467, 1578, 204, 432, 896, 453, 644, 537, 680, 749, 316, 607, 698, 375, 369, 423, 1104, 235, 205, 950, 355, 81, 1023, 568, 674, 810, 749, 609, 336, 325, 1354, 504, 800, 803, 829, 309, 1262, 610, 962, 507, 877, 59, 918, 959, 281, 627, 372, 1590, 574, 949, 1382, 472, 389, 318, 1090, 668, 318, 631, 528, 555, 1000, 467, 718, 757, 167, 1358, 313, 420, 851, 296, 887, 255, 599, 306, 233, 274, 556, 224, 189, 326, 572, 973, 1230, 286, 31, 486, 223, 976, 1591, 796, 649, 660, 576, 254, 613, 118, 516, 846, 252, 352, 1430, 447, 217, 1133, 771, 586, 903, 460, 778, 199, 127, 572, 103, 361, 516, 982, 268, 548, 970, 354, 429, 662, 720, 498, 576, 711, 1497, 494, 279, 315, 585, 700, 691, 340, 176, 324, 170, 814, 497, 206, 270, 251, 382, 780, 473, 953, 321, 79, 182, 163, 1017, 546, 1456, 511, 962, 645, 592, 203, 493, 804, 251, 1215, 358, 614, 917, 593, 91, 809, 1026, 1255, 333, 1101, 285, 445, 338, 836, 685, 717, 38, 970, 983, 174, 769, 392, 567, 871, 419, 50, 418, 511, 553, 164, 970, 428, 296, 1109, 99, 905, 469, 362, 561, 274, 600, 137, 930, 16, 202, 292, 270, 565, 784, 405, 1124, 657, 173, 395, 1302, 193, 212, 108, 808, 469, 212, 364, 546, 492, 476, 1450, 956, 577, 597, 136, 558, 1004, 1039, 843, 904, 644, 1201, 682, 343, 154, 215, 790, 179, 287, 595, 632, 193, 1150, 1626, 766, 660, 561, 401, 1340, 57, 204, 139, 830, 97, 1138, 1023, 262, 497, 19, 1019, 565, 1052, 146, 348, 357, 154, 598, 523, 14, 967, 155, 825, 275, 803, 1300, 648, 197, 591, 313, 346, 327, 111, 427, 737, 917, 374, 651, 555, 109, 89, 456, 800, 250, 96, 1259, 1095, 72, 469, 1370, 60, 968, 968, 902, 2000, 520, 435, 1230, 142, 428, 169, 1415, 810, 172, 577, 132, 588, 477, 434, 106, 1010, 1071, 158, 275, 1071, 2864, 1447, 2244, 908, 2241, 2058, 2142, 2519, 1324, 454, 2875, 3276, 2523, 3315, 1510, 2494, 1687, 3091, 2083, 1963, 1915, 845, 986, 794, 1198, 2071, 2758, 1049, 1789, 1813, 1551, 2335, 1791, 2492, 2921, 845, 1787, 2371, 1275, 1755, 3704, 2543, 1858, 3478, 3473, 3265, 667, 2053, 2083, 3239, 1170, 2251, 1228, 2704, 2880, 1255, 1978, 2903, 1641, 1677, 3137, 1464, 2160, 1047, 761, 1038, 2933, 2132, 732, 734, 2670, 2385, 2365, 3657, 2534, 2540, 3484, 2555, 1610, 2960, 1226, 1024, 1204, 2685, 3136, 1866, 1125, 1026, 1966, 405, 1173, 2524, 397, 2229, 586, 2772, 1216, 1384, 762, 2428, 1175, 786, 2717, 443, 2208, 3236, 1237, 715, 1299, 1192, 2871, 1079, 923, 2257, 1840, 183, 3466, 2894, 490, 2076, 779, 1478, 1852, 798, 1343, 1554, 300, 2747, 3105, 960, 2989, 1784, 2927, 1923, 2532, 1011, 2307, 3485, 1957, 453, 1995, 537, 3691, 1898, 2716, 3176, 1246, 1571, 2462, 550, 735, 3520, 2700, 2032, 3133, 2236, 2986, 2536, 2412, 885, 3068, 3344, 2126, 1915, 2187, 2598, 2713, 2004, 1638, 1185, 2768, 1588, 1663, 1151, 1541, 2824, 474, 1896, 2456, 1633, 3168, 1776, 1563, 1254, 1783, 2219, 1221, 1601, 260, 888, 813, 1999, 1803, 2490, 3425, 3618, 1354, 540, 3095, 1108, 1660, 1735, 2778, 2771, 2197, 2334, 3353, 659, 2495, 255, 1913, 3521, 357, 2790, 1848, 1657, 1427, 705, 1917, 868, 2902, 3299, 2622, 1954, 2647, 2042, 2208, 1776, 1888, 833, 954, 2227, 2997, 573, 1592, 2196, 3301, 3577, 2114, 2389, 602, 2585, 2737, 2072, 3719, 3811, 3002, 2116, 3094, 1926, 1238, 3582, 2612, 1932, 1505, 719, 843, 1706, 2131, 1744, 2794, 1747, 1086, 1720, 1201, 1079, 2164, 2457, 1890, 1727, 1786, 2377, 1296, 3074, 1234, 2611, 3434, 2540, 1364, 1130, 1412, 3231, 1316, 3182, 2776, 2695, 3226, 1991, 1936, 3180, 1007, 2375, 2088, 1884, 1909, 2121, 2731, 3492, 2802, 2558, 3941, 2096, 2130, 746, 2472, 2194, 937, 1498, 1483, 1743, 2180, 2994, 2822, 2308, 2431, 1752, 1851, 2086, 1980, 1995, 3269, 3570, 2890, 2963, 2861, 378, 3273, 3399, 1323, 3619, 1517, 3128, 2047, 323, 3098, 2451, 2635, 2752, 2874, 1054, 2166, 520, 1986, 1311, 1235, 1499, 1177, 2213, 1652, 2184, 2974, 1869, 2247, 2345, 1718, 1495, 214, 1330, 1523, 968, 2528, 2646, 2694, 2726, 2351, 881, 2876, 1458, 2921, 395, 1645, 2276, 2111, 2303, 3140, 1580, 3555, 2084, 2663, 2240, 3568, 1192, 1558, 1982, 754, 412, 3280, 899, 1643, 1038, 533, 1778, 422, 892, 1673, 2650, 3092, 2340, 3698, 1109, 2785, 1213, 2134, 1250, 1637, 1679, 3508, 860, 1145, 1993, 2958, 3888, 2804, 2316, 700, 2477, 1151, 3631, 392, 3233, 342, 2087, 2883, 2359, 3226, 366, 786, 2069, 2402, 2147, 1264, 2807, 2964, 2330, 3574, 1206, 1158, 3657, 3160, 2972, 1309, 3150, 1868, 3202, 1264, 2866, 2317, 2797, 1462, 1332, 3318, 2261, 731, 2346, 462, 1040, 3410, 2660, 2224, 1167, 2360, 2362, 1186, 2731, 3026, 1597, 3907, 1267, 2865, 1329, 1545, 501, 1661, 1295, 3379, 549, 828, 1788, 1936, 1900, 1984, 2243, 1865, 939, 1035, 2526, 1303, 2651, 1220, 2644, 1251, 1683, 2538, 1236, 700, 3332, 2917, 1138, 1008, 421, 2554, 2513, 2422, 1179, 1696, 2685, 2979, 621, 1374, 2079, 1703, 3148, 2036, 3181, 1174, 2870, 3126, 2202, 2568, 3477, 3087, 978, 457, 1119, 1058, 2275, 3698, 3489, 2179, 2760, 2097, 3487, 2766, 1606, 1493, 1824, 1435, 2254, 2415, 2037, 941, 1518, 1115, 3550, 403, 2556, 3483, 2875, 2633, 1283, 1253, 2044, 2868, 2610, 1902, 401, 1557, 1576, 3034, 1492, 571, 2040, 1213, 2320, 3886, 1670, 3418, 2552, 2812, 3569, 331, 1647, 1791, 1316, 3071, 1828, 2156, 2734, 438, 3494, 1975, 1714, 2705, 2493, 2482, 1297, 2316, 3499, 251, 441, 2190, 1954, 2982, 2387, 1308, 1307, 2351, 600, 3347, 1776, 2799, 1315, 713, 2605, 3171, 889, 528, 3976, 2986, 1901, 1787, 430, 2607, 2454, 1196, 1452, 3086, 1730, 556, 3689, 3467, 899, 2008, 3006, 3323, 3252, 1989, 1795, 3723, 2432, 404, 2974, 1691, 198, 616, 2640, 1869, 2274, 751, 2076, 1507, 521, 3516, 1148, 3248, 1229, 3039, 1950, 3424, 1662, 1370, 2285, 2315, 506, 2351, 2588, 2226, 2139, 1349, 2724, 1211, 1593, 981, 3414, 3225, 3644, 831, 3770, 1541, 2101, 1236, 1865, 2004, 3046, 2321, 1858, 1745, 2110, 2480, 817, 2339, 2869, 2877, 1799, 810, 2252, 3553, 3896, 2899, 320, 1888, 3266, 2795, 942, 2972, 2664, 2147, 1948, 1145, 826, 2118, 2378, 1564, 1774, 2434, 1273, 3493, 2438, 3066, 3391, 2310, 1378, 3573, 1717, 3070, 3318, 3701, 2868, 2630, 3290, 3006, 2899, 2009, 476, 1698, 1697, 1952, 838, 2755, 2029, 2738, 1084, 759, 995, 3477, 2517, 3373, 2921, 1999, 3575, 3568, 1356, 2266, 1811, 1999, 2422, 247, 2723, 2163, 2402, 1465, 216, 1547, 1829, 2342, 3795, 1313, 1391, 3110, 1429, 1040, 1641, 3655, 1984, 2809, 488, 340, 2068, 3804, 558, 2474, 2584, 2226, 2273, 2411, 2552, 3442, 982, 2911, 1421, 1383, 2187, 1538, 2943, 2430, 1506, 3321, 1947, 3365, 2295, 1935, 2902, 2093, 2143, 1127, 874, 2606, 1920, 1985, 1831, 1307, 2491, 1601, 2357, 2236, 3837, 3036, 795, 2120, 2625, 2129, 2478, 947, 1501, 2104, 2488, 1217, 3035, 2918, 1586, 1753, 917, 1711, 1707, 2395, 2250, 2509, 1482, 446, 3049, 1500, 3046, 2646, 3771, 653, 2381, 733, 3873, 2255, 3074, 2092, 2457, 2679, 1922, 3191, 2914, 1081, 1596, 2697, 1367, 2533, 3617, 2098, 2765, 1968, 2204, 1475, 1272, 3756, 1825, 2390, 3474, 3251, 2977, 496, 1950, 1648, 2462, 2726, 2395, 2944, 3559, 2178, 3342, 3688, 2505, 2354, 1827, 3676, 1794, 2811, 3349, 3249, 2147, 3059, 2852, 1422, 1136, 3776, 875, 1584, 1594, 2195, 2124, 1214, 2543, 2586, 1028, 2874, 1472, 2733, 2317, 3444, 2940, 1084, 1652, 1929, 2691, 1265, 2346, 2864, 3128, 2999, 2013, 572, 3711, 2455, 3213, 2146, 737, 2496, 1565, 1784, 3008, 2743, 1181, 956, 2009, 2859, 1291, 1259, 2512, 652, 1746, 2119, 1932, 2035, 3637, 1427, 1719, 1438, 1836, 2426, 2742, 2102, 1926, 2931, 931, 1502, 776, 1083, 351, 2509, 889, 3007, 2441, 803, 2002, 1065, 1715, 2107, 485, 3037, 1407, 1967, 2060, 406, 1913, 2805, 1982, 1010, 738, 919, 2802, 3011, 2082, 1306, 2554, 871, 1426, 615, 1222, 3390, 907, 3229, 1092, 2418, 2795, 2659, 1125, 2617, 164, 2687, 1355, 3879, 3535, 1394, 2618, 2014, 1144, 99, 3542, 3889, 2695, 2561, 2091, 2168, 1907, 2356, 928, 1875, 1827, 3638, 2388, 259, 2056, 3486, 2817, 3624, 1629, 704, 1093, 2777, 422, 3041, 1853, 1765, 785, 3142, 1809, 2722, 1649, 1687, 2550, 3200, 1908, 3129, 1581, 1988, 2929, 1492, 914, 1614, 700, 948, 1082, 2353, 2165, 2443, 2941, 1693, 3562, 1997, 1155, 2597, 2162, 3443, 2223, 1543, 1912, 1933, 791, 1390, 3325, 2462, 2505, 2095, 558, 907, 3298, 2049, 591, 2729, 3325, 2571, 2788, 2273, 3244, 2453, 1395, 3278, 2112, 3091, 3176, 785, 488, 3666, 1592, 2715, 419, 3534, 2385, 1317, 926, 3370, 296, 2673, 2925, 1383, 453, 2787, 1219, 3957, 3308, 1385, 2104, 757, 2467, 3182, 2133, 1738, 2259, 3183, 2746, 1930, 2497, 1913, 3106, 2036, 2165, 3446, 3136, 1581, 339, 1294, 2912, 2595, 1458, 1222, 3327, 1314, 2182, 3607, 1024, 770, 1072, 2616, 2363, 3471, 2765, 2669, 3240, 1645, 1887, 2803, 1822, 2269, 2372, 1421, 1625, 2480, 3774, 1961, 3629, 2604, 1839, 3497, 2570, 148, 3558, 1573, 3702, 994, 3368, 1453, 1694, 1064, 1434, 2120, 845, 3273, 2740, 1002, 2895, 2201, 2614, 576, 3144, 1164, 1529, 1273, 3201, 3877, 2172, 3593, 1785, 2913, 983, 3600, 188, 2077, 748, 2717, 2887, 2154, 3354, 1676, 2050, 2367, 3227, 2371, 3565, 2786, 3203, 3860, 3023, 2175, 2471, 1664, 1885, 1367, 2269, 3245, 2805, 2383, 2082, 1977, 1385, 1063, 3439, 1998, 2142, 1023, 2596, 1483, 1638, 3049, 2796, 1042, 2031, 3398, 1797, 2445, 2205, 457, 1508, 1868, 2857, 1259, 2531, 3390, 2970, 2882, 1948, 1340, 2775, 3418, 2761, 1497, 2831, 2937, 1686, 2312, 1990, 1900, 2941, 3525, 2929, 1276, 2074, 958, 2922, 1555, 1111, 1928, 2820, 1627, 2297, 2234, 3001, 2785, 2029, 3124, 3345, 3554, 1464, 1884, 3503, 1215, 3265, 3658, 1075, 2458, 537, 1750, 2637, 2169, 2213, 1151, 3355, 863, 3728, 1447, 716, 2381, 1455, 1912, 3069, 1152, 1496, 1688, 3232, 1716, 1484, 2127, 2148, 1052, 2480, 1225, 1625, 3372, 1847, 3257, 2240, 1083, 881, 3674, 1901, 2264, 887, 1516, 3287, 1191, 3693, 1245, 2763, 3303, 2080, 1664, 1052, 1799, 2390, 993, 1423, 1056, 2074, 1910, 2798, 2047, 2162, 3479, 1224, 2967, 2231, 3159, 1216, 1309, 3055, 2533, 3798, 1144, 2212, 578, 2274, 2733, 2410, 720, 774, 1208, 1362, 3356, 589, 3408, 1474, 3082, 1374, 1845, 3727, 3193, 1042, 3189, 1276, 2546, 2649, 1047, 1797, 2317, 2487, 383, 2600, 1353, 1650, 1533, 1536, 3190, 1386, 1401, 1946, 2276, 3246, 2661, 2748, 2750, 3472, 1003, 2447, 2319, 88, 1802, 1977, 2215, 2780, 2917, 2414, 1848, 2638, 1681, 2542, 909, 1979, 2826, 2085, 2250, 1215, 2977, 1333, 3265, 1809, 3133, 1419, 1432, 2408, 2576, 3231, 2027, 3796, 3078, 1844, 1852, 310, 3144, 1272, 2796, 2413, 1557, 2652, 2798, 1252, 3006, 2233, 3001, 1077, 329, 736, 1748, 2657, 481, 3096, 2739, 2500, 1434, 1972, 1953, 513, 1790, 1600, 2853, 2930, 1759, 963, 2544, 1241, 1521, 2219, 2073, 3240, 1252, 1507, 989, 351, 1375, 738, 1487, 2268, 2817, 2983, 498, 826, 2382, 2892, 2001, 646, 1669, 2206, 2744, 1511, 2065, 839, 1539, 3185, 2298, 2008, 1861, 317, 1905, 2701, 2086, 951, 2984, 3383, 3753, 2785, 3243, 2291, 1194, 2164, 951, 1241, 314, 2606, 3127, 1832, 1256, 1377, 3947, 1910, 3340, 1120, 2762, 4053, 1659, 2042, 3269, 1293, 2524, 2016, 121, 1758, 1941, 1006, 3464, 2038, 1520, 1466, 804, 1367, 2051, 2116, 1305, 3504, 3223, 1289, 2043, 1077, 2393, 2702, 1797, 3498, 619, 2475, 4050, 3549, 1840, 1137, 748, 2408, 2775, 1057, 935, 1903, 1209, 1230, 1781, 1280, 1102, 696, 1142, 2602, 743, 807, 3082, 2020, 2231, 1519, 2724, 930, 292, 2671, 3417, 1179, 1274, 1350, 2890, 1105, 1814, 1046, 3117, 1491, 1978, 3044, 2019, 1666, 1530, 2928, 1182, 2085, 1343, 1800, 2113, 1476, 3276, 3062, 2259, 1461, 3717, 764, 877, 1844, 3709, 3362, 2772, 3728, 1841, 487, 2364, 2447, 1018, 1667, 2173, 2428, 2318, 1529, 821, 2425, 3403, 695, 2486, 1430, 3842, 2895, 3329, 2313, 926, 2363, 2205, 374, 1864, 1911, 846, 3148, 2135, 1757, 3794, 3664, 993, 2181, 1607, 3368, 1065, 3288, 3525, 2195, 3438, 3255, 3652, 3010, 1055, 3425, 1954, 988, 1233, 3632, 1640, 1881, 3214, 2248, 2885, 2332, 1220, 2650, 678, 1628, 1968, 1942, 1239, 3012, 2799, 961, 3224, 567, 2199, 1585, 170, 288, 2964, 1905, 908, 911, 1893, 2592, 2027, 1347, 2863, 1450, 1111, 3640, 1841, 2751, 1515, 2884, 3549, 3123, 538, 369, 1073, 2299, 932, 3435, 2280, 690, 570, 2029, 1489, 2892, 3204, 2468, 1176, 3676, 2712, 2337, 747, 897, 2292, 1429, 3519, 1051, 3416, 2703, 2444, 3164, 1918, 1651, 2008, 1596, 2538, 2362, 2031, 3107, 2246, 268, 2870, 2725, 1825, 3585, 2728, 1966, 1106, 2096, 2541, 534, 1462, 1417, 2160, 2692, 1257, 1498, 3580, 620, 1763, 1125, 739, 3157, 2753, 1621, 1771, 2658, 1748, 1718, 3283, 675, 530, 1286, 974, 1180, 1290, 1924, 1108, 1335, 434, 1094, 2990, 3650, 3272, 3031, 3037, 2469, 1873, 1775, 1491, 2931, 3592, 2514, 373, 3045, 2167, 1981, 3195, 239, 2161, 3121, 2517, 1142, 971, 1675, 1850, 1917, 1676, 328, 1818, 1132, 2137, 1550, 1032, 1944, 377, 1719, 2730, 2699, 1424, 3141, 1150, 2584, 799, 1380, 2850, 2148, 1453, 1004, 710, 3312, 784, 3249, 3118, 914, 1281, 1626, 3460, 1199, 1398, 1552, 1924, 2758, 1093, 2048, 2368, 2268, 401, 1918, 3668, 1310, 1501, 2186, 2241, 2987, 3678, 1760, 2049, 1531, 2006, 3394, 3437, 1953, 2545, 1035, 1855, 1277, 1817, 1883, 2469, 1906, 2264, 3002, 417, 1648, 2398, 1107, 1683, 3103, 1561, 2840, 2911, 3113, 2244, 1246, 3526, 1647, 1916, 3218, 2487, 1739, 2660, 2258, 275, 844, 3604, 1946, 3432, 2336, 2288, 1445, 1707, 629, 3176, 1706, 619, 2861, 2649, 1931, 3859, 1935, 1361, 1287, 1933, 2259, 3690, 3929, 1838, 2191, 2849, 840, 2119, 3056, 1413, 2720, 2643, 2421, 2358, 510, 2215, 1102, 2349, 2801, 2776, 1361, 793, 3498, 2195, 350, 2046, 2437, 1609, 782, 3244, 1859, 2626, 1105, 2529, 2401, 1732, 197, 2308, 2287, 1927, 886, 2746, 281, 2890, 2279, 2924, 1118, 1673, 3917, 2424, 210, 1530, 3219, 3279, 644, 3567, 2455, 3228, 2762, 2661, 893, 3515, 1104, 3055, 3388, 2571, 1857, 2653, 153, 1573, 2068, 1630, 2725, 792, 3304, 1810, 1762, 1760, 3468, 944, 3404, 2712, 921, 1133, 2296, 1806, 2845, 2349, 1286, 1819, 943, 3706, 1635, 1922, 975, 438, 2904, 1200, 3268, 127, 687, 2034, 1091, 1443, 1876, 1874, 1902, 1566, 1187, 1592, 1795, 1031, 1751, 301, 600, 1772, 2109, 2781, 1446, 1283, 1738, 2369, 1971, 2783, 3270, 1036, 2540, 2923, 775, 2464, 1437, 2081, 1574, 2459, 3033, 564, 3856, 2628, 2096, 1725, 1930, 1225, 942, 2028, 2025, 2699, 1017, 2504, 2038, 1128, 3870, 2857, 3143, 1406, 3497, 1555, 2503, 1665, 1511, 2738, 3188, 1243, 802, 2965, 3751, 1931, 2507, 1612, 1449, 2412, 2509, 650, 1990, 3331, 266, 1735, 2206, 2416, 963, 1406, 2203, 792, 1872, 2288, 1324, 1852, 1409, 2838, 2582, 2900, 1651, 2336, 3491, 867, 2737, 2127, 1775, 2415, 150, 2092, 1157, 1022, 1533, 2907, 1513, 3323, 3850, 880, 822, 2781, 1562, 2261, 1411, 1237, 2157, 588, 2356, 3672, 3448, 593, 1782, 758, 1058, 2490, 2181, 3715, 261, 3695, 474, 2590, 4012, 1631, 2519, 2018, 584, 4028, 1808, 839, 1417, 1030, 3304, 1168, 3679, 3021, 2956, 2511, 2795, 1489, 2368, 2125, 4017, 2570, 1997, 2526, 1369, 423, 1539, 3150, 3587, 1304, 916, 2000, 1185, 1531, 3648, 1885, 2822, 2391, 823, 2033, 1209, 817, 1883, 3345, 2330, 2442, 1679, 834, 3092, 872, 2072, 2934, 3873, 1475, 1777, 2109, 1972, 3918, 1420, 1092, 929, 1427, 2409, 1400, 2631, 1257, 1820, 2639, 1003, 824, 1585, 2730, 2310, 1011, 1751, 2393, 3970, 2430, 1213, 2054, 2086, 2901, 3830, 2870, 2735, 1860, 489, 2188, 2491, 1856, 965, 325, 857, 2321, 1535, 178, 154, 1266, 3326, 639, 2717, 2400, 2628, 2751, 2938, 1540, 2245, 2115, 3254, 2045, 1087, 1441, 1317, 3528, 1969, 3443, 1759, 3301, 3606, 724, 1143, 3113, 525, 1742, 1129, 3132, 3601, 2968, 1043, 3323, 1559, 557, 1029, 1070, 2583, 885, 3246, 3081, 2932, 1444, 822, 2420, 868, 2615, 1761, 2589, 757, 3495, 2747, 3108, 2005, 2567, 2341, 445, 2841, 972, 2075, 3552, 3556, 1478, 3515, 2776, 520, 2076, 2507, 2444, 1747, 2521, 3912, 2193, 2662, 3380, 1634, 2875, 3208, 1413, 2811, 3228, 1590, 2214, 440, 3079, 543, 1568, 2253, 3013, 1989, 2290, 1987, 903, 2678, 2454, 2777, 177, 2878, 1094, 1291, 1911, 2680, 2360, 3042, 1032, 1471, 2176, 3596, 1833, 3588, 1126, 1604, 1248, 1729, 2729, 3764, 1855, 2204, 1377, 3028, 1816, 1457, 2328, 3395, 3895, 3313, 1745, 2028, 2373, 3821, 2021, 2677, 4055, 1793, 1494, 199, 2948, 1283, 2516, 444, 3160, 1005, 1219, 3796, 2375, 726, 1754, 2420, 3429, 2041, 3825, 3429, 3522, 1564, 2103, 777, 2849, 1591, 3050, 2164, 2105, 1695, 2945, 2603, 1589, 3213, 1864, 2151, 2332, 976, 2668, 2373, 1873, 3859, 3330, 1064, 2558, 2513, 2831, 1538, 2529, 2271, 2609, 600, 2568, 2361, 3291, 1679, 2089, 1441, 3437, 2727, 346, 644, 2548, 469, 3026, 2612, 3359, 3196, 2463, 885, 2887, 390, 1305, 380, 1550, 1247, 3971, 1299, 680, 1723, 560, 2771, 2028, 2474, 2965, 1235, 2201, 3763, 2389, 1618, 2355, 3969, 2088, 2246, 3665, 2986, 1047, 1869, 1346, 384, 1987, 3145, 3044, 1886, 2723, 1773, 2404, 2202, 3153, 1676, 1481, 1486, 1677, 943, 930, 1914, 1484, 1373, 979, 1951, 548, 3043, 3646, 937, 2342, 1106, 1086, 2793, 3298, 2498, 2434, 566, 1970, 2464, 2388, 1729, 3526, 2093, 3005, 3486, 1398, 1876, 3427, 1325, 1404, 1139, 1691, 1070, 2571, 1943, 725, 1015, 1157, 1777, 2332, 1794, 1616, 2015, 936, 2207, 2721, 1615, 2577, 2812, 1854, 3016, 1974, 2629, 544, 774, 863, 1963, 2937, 3366, 769, 3545, 3282, 3653, 2175, 1245, 1524, 1355, 2919, 2087, 2283, 1188, 2223, 2660, 1815, 1878, 2647, 2152, 2757, 1933, 820, 1315, 1680, 3138, 1716, 2490, 2634, 2827, 2520, 1193, 582, 3205, 1701, 3492, 3068, 1165, 3846, 2025, 2314, 1934, 2740, 2262, 2427, 994, 2607, 2642, 709, 961, 2929, 2988, 837, 3720, 1318, 1842, 2211, 1612, 1767, 2136, 2256, 2255, 2793, 671, 2394, 718, 2728, 3943, 1331, 1394, 1815, 2442, 3655, 2167, 1348, 689, 863, 2599, 1206, 2211, 2714, 2325, 1152, 2672, 1534, 3063, 1046, 2673, 1770, 2338, 1244, 594, 1637, 531, 3805, 1340, 1595, 1472, 694, 2671, 2234, 2425, 2574, 901, 3469, 900, 1143, 3257, 3631, 1345, 1214, 1424, 2063, 3209, 1209, 1122, 1113, 1263, 2450, 1118, 879, 2356, 2949, 3665, 2228, 1377, 1705, 2440, 3163, 727, 2097, 1211, 2897, 1240, 1943, 816, 2973, 1837, 989, 1067, 848, 3061, 2648, 2163, 864, 3031, 2251, 2575, 2237, 2384, 3187, 747, 886, 1562, 1342, 837, 1871, 2419, 1400, 1937, 2339, 3605, 3023, 2720, 3126, 348, 2314, 1878, 2263, 3146, 2564, 3135, 1421, 1292, 2075, 2708, 3530, 2248, 587, 3054, 3100, 2517, 2245, 730, 2115, 3782, 3491, 2303, 1667, 1741, 1817, 3441, 2390, 3095, 3286, 1519, 1598, 288, 1051, 3364, 546, 2093, 1358, 1449, 3758, 1923, 2399, 2268, 330, 1697, 1348, 2876, 1227, 1218, 1740, 1208, 2444, 717, 2836, 2834, 1456, 1336, 3375, 2055, 749, 3342, 3034, 818, 3234, 1995, 2118, 3338, 46, 2812, 2439, 2702, 2398, 2082, 2303, 3344, 3855, 3292, 2774, 3511, 3691, 2439, 2594, 777, 2455, 1914, 2853, 2932, 3517, 1600, 3888, 1829, 2617, 1830, 1351, 3411, 1835, 2255, 2401, 1682, 151, 349, 1375, 2502, 1019, 493, 903, 3131, 1020, 3802, 2384, 544, 1849, 2671, 1760, 1802, 2472, 1779, 459, 631, 391, 676, 921, 1002, 2358, 699, 3567, 1864, 3207, 778, 2155, 1454, 2644, 3269, 812, 361, 1335, 1167, 2664, 3329, 1959, 2285, 1382, 780, 1457, 748, 1934, 2001, 1518, 1626, 1396, 1366, 3201, 2862, 847, 500, 1226, 1196, 1520, 2844, 2723, 527, 2897, 2991, 1388, 1389, 2485, 954, 3022, 2304, 2559, 1418, 880, 456, 553, 3651, 3644, 2507, 2825, 1141, 2879, 1039, 2235, 1204, 2946, 1961, 2436, 554, 996, 2461, 1485, 2335, 290, 859, 1752, 3167, 2080, 3603, 1623, 2207, 2909, 1794, 3580, 1154, 1823, 2820, 1469, 3406, 1570, 2440, 2489, 1050, 3901, 3877, 1192, 516, 601, 3043, 928, 3127, 2135, 1719, 1879, 2585, 1546, 1433, 2123, 2369, 1655, 965, 2830, 1639, 2893, 2992, 2099, 1793, 1322, 1918, 1871, 691, 3061, 2581, 915, 1826, 1709, 1273, 2880, 1467, 851, 752, 3423, 658, 1379, 1122, 1563, 2133, 3223, 1736, 2586, 1517, 2326, 763, 1656, 628, 3040, 2064, 642, 871, 1738, 2587, 734, 374, 1496, 1285, 1909, 2020, 3555, 1146, 1522, 635, 2399, 745, 2088, 2854, 2636, 1492, 2294, 1778, 3166, 2593, 1711, 2502, 2816, 3322, 1785, 2806, 435, 2749, 3103, 3445, 1399, 2052, 382, 3178, 2132, 3231, 3932, 2741, 2344, 1025, 2485, 3718, 2266, 1346, 1662, 1048, 1264, 776, 3107, 1055, 2659, 2260, 466, 530, 2309, 1214, 1571, 3600, 1788, 3576, 2144, 1577, 1110, 1097, 3478, 1542, 3936, 2309, 2271, 2984, 3101, 2120, 4001, 1953, 2131, 811, 2270, 1030, 1422, 2708, 3604, 1031, 1368, 3203, 2770, 2956, 1583, 2253, 1502, 1480, 2971, 452, 2141, 2721, 2547, 1398, 1789, 2706, 532, 1461, 2813, 3124, 2438, 2835, 2763, 1178, 2938, 1811, 2299, 597, 1712, 2557, 896, 1828, 3061, 2886, 2417, 1062, 901, 3194, 239, 2437, 3607, 1207, 2631, 2943, 2158, 2696, 174, 866, 3080, 701, 2107, 3096, 3504, 1714, 1034, 1660, 1736, 1621, 2815, 1449, 2656, 2739, 3058, 2879, 3554, 957, 2665, 2238, 1023, 1293, 2860, 1393, 3753, 3256, 2683, 2756, 2221, 2803, 2095, 1542, 2177, 1107, 1974, 1108, 2026, 1579, 1139, 2535, 950, 1955, 1686, 2000, 1359, 2106, 2105, 3216, 2307, 1172, 900, 3156, 1112, 490, 2278, 526, 1704, 2372, 1122, 3116, 1039, 1587, 1395, 940, 1660, 687, 1878, 1115, 1841, 1426, 1536, 3015, 1160, 2070, 2736, 403, 3354, 3199, 1866, 1307, 807, 1733, 3578, 1685, 2285, 1528, 3579, 1596, 2204, 1046, 2635, 2504, 2829, 2403, 1728, 3613, 1599, 3357, 1001, 2126, 1257, 1611, 3474, 3064, 1446, 3432, 3452, 1614, 2545, 2282, 3004, 1026, 3274, 2510, 3179, 1998, 926, 2216, 2662, 2966, 3482, 2446, 1455, 2650, 1098, 1215, 2947, 2435, 1534, 503, 3118, 2178, 1360, 3481, 1709, 950, 3309, 572, 1308, 2694, 3017, 2056, 2144, 1853, 2091, 3391, 2031, 263, 3351, 70, 1111, 2012, 2445, 393, 1605, 1392, 1780, 2576, 3181, 1499, 1840, 2187, 1339, 1723, 1384, 1032, 2952, 1895, 833, 2959, 583, 1344, 1754, 3002, 349, 2933, 2265, 2597, 1810, 1328, 1835, 2360, 2237, 2448, 2714, 1528, 2189, 2224, 642, 2062, 3447, 1708, 1302, 1784, 2154, 2913, 1611, 250, 2300, 3945, 1479, 759, 2119, 2278, 1683, 2639, 2041, 1834, 1962, 2062, 2340, 2328, 1327, 3586, 4038, 2257, 1204, 2414, 3003, 1816, 2994, 1724, 2838, 1986, 569, 632, 996, 1967, 3221, 1849, 1669, 1644, 2465, 1757, 3315, 3244, 3615, 3263, 2569, 464, 1879, 1131, 3130, 1165, 2523, 1947, 3245, 3104, 3223, 3604, 2471, 2619, 2410, 1973, 3400, 2098, 3546, 1553, 1545, 2821, 2066, 2489, 478, 2335, 2911, 3433, 2668, 2090, 1726, 1387, 1948, 2894, 753, 1480, 793, 1524, 1858, 2152, 2980, 2114, 2698, 3574, 632, 689, 1442, 414, 3249, 3929, 1439, 236, 2371, 1570, 2753, 4035, 311, 2997, 2061, 843, 3218, 1755, 2580, 3506, 3047, 1892, 2773, 2003, 990, 2643, 1103, 1798, 1071, 2014, 1216, 2306, 887, 2279, 367, 2950, 3899, 3419, 2221, 3069, 628, 3015, 1720, 2209, 440, 1297, 1966, 1832, 2137, 2022, 2686, 2293, 1603, 246, 3191, 3347, 3085, 2953, 2424, 2017, 3674, 1578, 3781, 2417, 1700, 2017, 335, 827, 585, 597, 1440, 1731, 2079, 2042, 1486, 723, 3385, 2015, 1880, 654, 2094, 2306, 2074, 3431, 3291, 1287, 1397, 2183, 2385, 3513, 1994, 2035, 2037, 1369, 2780, 964, 2339, 2706, 3242, 2043, 178, 2375, 3147, 2232, 1252, 2843, 3934, 1801, 1407, 2957, 3631, 2755, 2205, 3119, 3088, 1197, 2016, 1756, 2276, 2955, 2433, 3063, 1331, 1382, 2641, 2369, 936, 429, 3519, 698, 2521, 1620, 3358, 1563, 347, 874, 2334, 1076, 1471, 3125, 2742, 1330, 2591, 599, 1725, 2353, 2836, 3272, 2138, 378, 2735, 1143, 1437, 2185, 521, 2560, 2233, 2179, 2379, 3536, 2622, 667, 405, 2662, 2209, 1501, 2486, 3257, 3310, 621, 3983, 870, 2539, 3084, 2309, 2334, 2705, 2061, 876, 3322, 2059, 2365, 2691, 3496, 3620, 3081, 2692, 2898, 1989, 2153, 1960, 2436, 1487, 3195, 2948, 2218, 1300, 720, 2151, 1722, 2355, 1076, 3143, 1949, 1795, 1261, 582, 1257, 942, 436, 253, 538, 908, 846, 629, 736, 1428, 1126, 706, 755, 410, 449, 828, 877, 430, 344, 1322, 426, 1215, 1601, 1793, 1633, 866, 2288, 1589, 561, 777, 1169, 1330, 468, 459, 685, 436, 1956, 1324, 212, 888, 821, 2066, 784, 1568, 796, 1251, 497, 1430, 1108, 537, 1577, 737, 1529, 721, 391, 962, 1218, 493, 1189, 1235, 1177, 778, 595, 1009, 1515, 10, 1069, 1207, 1037, 913, 599, 1142, 1139, 779, 1067, 653, 466, 747, 683, 1129, 1057, 514, 1166, 663, 958, 895, 870, 1036, 819, 610, 1763, 810, 774, 253, 1274, 711, 543, 805, 145, 1658, 1208, 336, 348, 782, 1087, 2137, 1305, 481, 1522, 530, 634, 189, 1005, 1432, 1183, 1546, 1096, 1308, 1205, 721, 1011, 230, 770, 406, 406, 1237, 972, 1266, 970, 409, 1645, 1371, 888, 1053, 602, 1337, 870, 714, 432, 1160, 895, 713, 882, 871, 161, 2171, 643, 1133, 1252, 707, 450, 1010, 481, 1397, 591, 647, 511, 1100, 340, 1008, 756, 1074, 596, 1459, 910, 969, 697, 559, 518, 1584, 540, 804, 1425, 1115, 1311, 779, 734, 976, 442, 655, 839, 605, 619, 467, 1499, 967, 1061, 1349, 704, 130, 1089, 1178, 1161, 1141, 1071, 1035, 486, 934, 1401, 651, 924, 1282, 1282, 389, 1278, 655, 992, 614, 981, 158, 1031, 985, 300, 651, 737, 1755, 798, 1911, 1467, 782, 509, 451, 1125, 1295, 465, 979, 1083, 1031, 1282, 550, 1546, 900, 444, 1545, 1207, 1655, 913, 852, 1228, 338, 607, 934, 236, 721, 1084, 236, 291, 590, 589, 1114, 1257, 603, 117, 1044, 432, 1255, 1656, 806, 762, 776, 686, 388, 622, 941, 1308, 1200, 259, 1051, 1514, 529, 651, 1349, 868, 764, 946, 603, 888, 372, 493, 664, 418, 769, 1300, 993, 416, 607, 990, 505, 618, 673, 911, 610, 1442, 798, 1844, 879, 515, 840, 937, 797, 718, 390, 675, 672, 921, 1034, 601, 442, 297, 850, 631, 782, 607, 1461, 722, 162, 215, 756, 1308, 965, 1464, 531, 965, 2183, 974, 485, 512, 1586, 505, 1672, 463, 649, 1048, 967, 687, 1139, 1229, 1281, 1060, 1261, 535, 941, 399, 1013, 783, 1711, 433, 1308, 1739, 312, 1118, 395, 839, 1003, 997, 177, 557, 842, 1270, 292, 980, 459, 426, 1207, 160, 1097, 519, 573, 945, 311, 666, 164, 945, 306, 1694, 357, 411, 1030, 1220, 408, 1197, 679, 452, 938, 1335, 496, 423, 414, 947, 625, 801, 992, 637, 918, 643, 1582, 1017, 908, 699, 960, 1095, 1475, 1064, 925, 919, 987, 1657, 685, 1279, 334, 724, 971, 310, 590, 839, 1249, 240, 1287, 1718, 1019, 931, 798, 524, 1653, 101, 348, 442, 955, 335, 1168, 1584, 376, 651, 167, 1056, 743, 1738, 186, 520, 631, 865, 819, 988, 35, 1080, 730, 872, 658, 828, 1758, 1248, 300, 1244, 539, 735, 340, 150, 802, 780, 1283, 831, 826, 645, 442, 119, 723, 827, 1019, 305, 1553, 1241, 487, 590, 1770, 121, 1381, 1103, 936, 2114, 881, 1056, 1260, 1360, 541, 347, 1630, 1096, 176, 587, 382, 721, 884, 1096, 213, 1757, 1151, 397, 291, 1161, 3376, 3828, 2766, 1604, 3185, 3504, 2472, 2595, 1669, 3400, 4067, 4080, 3463, 3321, 3036, 4068, 2421, 3991, 3911, 4044, 3099, 1110, 1889, 3606, 3544, 3130, 3214, 3112, 2584, 3067, 1800, 3764, 3713, 2847, 3415, 1154, 3140, 3537, 2969, 2203, 3768, 2891, 3162, 4004, 4046, 3300, 1043, 2244, 2833, 3581, 2213, 3516, 2465, 2804, 3883, 2287, 4020, 3535, 2063, 4006, 3842, 2818, 3696, 2327, 2636, 2489, 3459, 3473, 1373, 941, 3846, 2596, 3241, 4091, 3119, 3650, 3827, 3022, 2508, 3803, 3995, 2732, 2146, 4079, 3964, 3003, 1925, 2789, 2150, 3239, 2013, 3688, 4039, 3533, 2518, 3056, 3356, 3922, 3388, 4014, 1435, 1373, 3619, 3983, 3196, 4095, 1617, 3645, 3542, 2956, 2891, 1624, 1836, 3187, 3253, 2073, 3896, 2905, 2484, 3180, 3000, 1622, 3152, 805, 2313, 3797, 3463, 3237, 3279, 2435, 3540, 3594, 2968, 3210, 2718, 1184, 3254, 3889, 3695, 509, 4074, 3197, 3835, 2954, 3312, 3562, 3052, 3019, 3258, 978, 3303, 4082, 3834, 2252, 3680, 3489, 3904, 2958, 3081, 2134, 3591, 3546, 3725, 2602, 3630, 3363, 3784, 3165, 3958, 2071, 4020, 2069, 3153, 3392, 3749, 3690, 2548, 3887, 3662, 1831, 3457, 2230, 2084, 4072, 2578, 3827, 3030, 4008, 1275, 2450, 2389, 3450, 2001, 3367, 3442, 4010, 1674, 2122, 3391, 1364, 3708, 1998, 3752, 3806, 3480, 2401, 3998, 1419, 2810, 752, 3710, 3936, 663, 3697, 1971, 3084, 2981, 1755, 2112, 874, 3324, 3503, 2889, 2169, 3404, 3868, 3543, 4042, 2522, 2687, 2400, 2637, 3475, 3721, 2684, 3654, 3454, 3972, 3442, 3438, 1506, 3939, 3170, 3379, 3840, 3901, 3937, 2833, 3858, 3823, 2642, 4004, 2878, 2993, 3348, 3866, 3602, 2605, 2494, 3927, 4009, 3404, 3911, 2909, 1684, 1691, 3408, 2668, 1941, 1818, 3587, 3362, 1494, 3914, 1278, 2666, 3864, 2765, 3993, 3697, 2387, 3952, 2587, 3632, 3422, 2834, 4094, 3403, 2000, 3412, 2779, 3500, 3128, 2070, 2828, 3358, 3522, 3930, 3399, 3325, 3959, 2386, 4093, 3989, 3547, 2961, 2466, 1881, 4093, 2242, 2860, 3060, 3309, 3053, 3502, 3688, 3045, 2405, 3412, 3166, 3508, 3956, 3281, 3436, 3459, 2457, 4026, 3944, 3467, 3718, 2846, 3851, 3374, 2555, 3675, 3679, 2709, 3410, 2969, 3300, 2280, 1985, 2933, 1575, 3401, 3287, 1917, 3142, 3960, 3479, 4066, 2441, 3201, 2704, 4016, 3241, 3572, 2251, 2630, 3960, 2977, 3829, 3003, 3361, 3752, 2975, 3254, 2286, 3446, 415, 3272, 4083, 2896, 2846, 3658, 2748, 4025, 3999, 3950, 2889, 3633, 1692, 3472, 2329, 825, 3898, 3516, 2117, 3723, 2916, 1265, 2632, 3910, 3594, 3707, 3488, 3496, 3530, 3899, 3469, 4052, 1940, 3524, 2998, 3830, 2888, 3864, 2190, 2403, 2217, 3783, 3941, 3660, 2343, 2578, 3770, 2091, 3704, 2323, 4006, 2079, 2157, 3523, 2992, 3794, 3120, 2980, 2750, 3656, 2610, 1274, 3017, 3000, 2407, 3995, 3142, 3953, 3841, 3598, 3503, 3187, 4066, 3169, 3798, 1740, 3971, 2900, 3772, 3448, 2227, 3805, 3925, 1666, 2908, 3914, 1443, 3918, 3093, 2979, 2354, 3902, 3860, 2843, 3833, 3183, 1671, 3933, 1270, 3644, 2754, 3515, 3070, 2379, 2290, 3878, 2831, 927, 3942, 3614, 2482, 2898, 2419, 2871, 2971, 2705, 4012, 2228, 2844, 1535, 3399, 2985, 2043, 2828, 3566, 1065, 3915, 3965, 1260, 4019, 2077, 2952, 2632, 2925, 1708, 3600, 2829, 4080, 2272, 3134, 2319, 2615, 3993, 2183, 3942, 1422, 3751, 3316, 3174, 3476, 3893, 3509, 1027, 1561, 1955, 1134, 3807, 3916, 3745, 3103, 3951, 2512, 3585, 3247, 3926, 3951, 3979, 1769, 2398, 2722, 2965, 3172, 4088, 3733, 3647, 2326, 3401, 4020, 3972, 3692, 4088, 1962, 2914, 2966, 3267, 2786, 1453, 1833, 3027, 3063, 3879, 2068, 2199, 3271, 2760, 4039, 3883, 3779, 3717, 3651, 3826, 2850, 2380, 3818, 3738, 3117, 2121, 3131, 3357, 746, 3804, 2057, 3436, 3421, 3689, 4086, 4019, 2707, 3921, 2496, 1429, 3029, 3726, 3720, 3209, 2998, 3579, 2778, 3735, 3482, 3032, 3721, 3924, 4007, 3417, 4096, 3050, 1981, 4034, 2995, 2515, 1900, 3495, 3211, 2718, 3115, 2564, 3200, 3955, 733, 3884, 3575, 2973, 2503, 4048, 3384, 3620, 3602, 2666, 3868, 2790, 2663, 3730, 3460, 2435, 3375, 3394, 2749, 3986, 3328, 2143, 3132, 1818, 4029, 1705, 3411, 2811, 3705, 2990, 4034, 2889, 3124, 2808, 2838, 1710, 2834, 3042, 4063, 3130, 3980, 3720, 3225, 1599, 3538, 3608, 3363, 4023, 1414, 3894, 1560, 2262, 3517, 2103, 2198, 3979, 2549, 2311, 2866, 3709, 3639, 1863, 2396, 3313, 2993, 2397, 1582, 2707, 3872, 4019, 3750, 2429, 3346, 3365, 3378, 2151, 3299, 2945, 3692, 4008, 3836, 3944, 2638, 2661, 3682, 3330, 2883, 1717, 3981, 3134, 3317, 3466, 2676, 1819, 3907, 2580, 3626, 3737, 3806, 3840, 3226, 3747, 4000, 3122, 3470, 1894, 3700, 2941, 2441, 2696, 3512, 2407, 3524, 3239, 1729, 1314, 3953, 3308, 3744, 2927, 3906, 4071, 3718, 1798, 3759, 2495, 3736, 3810, 2282, 3750, 3932, 3067, 3343, 1507, 3247, 3417, 3559, 4044, 3954, 1893, 4010, 2510, 2044, 3732, 3831, 3414, 4095, 1754, 3341, 4085, 3850, 3230, 3066, 2665, 3793, 2525, 3627, 3965, 3490, 3964, 3447, 1766, 1418, 3395, 1610, 4053, 2502, 2220, 3609, 3683, 3716, 3322, 3346, 3544, 3025, 2955, 3736, 3256, 3172, 3769, 3139, 2337, 4087, 3266, 2338, 3369, 3452, 3845, 3437, 2342, 3645, 3151, 2350, 3335, 1561, 2608, 3333, 3816, 1882, 3560, 3273, 3807, 3571, 1916, 2667, 4085, 3876, 3904, 3289, 1830, 1568, 3780, 3510, 3455, 2657, 3897, 2962, 4031, 3409, 3905, 3595, 3221, 2374, 3838, 2792, 3152, 3768, 3739, 2179, 3772, 2823, 2800, 2797, 3797, 2193, 3484, 3235, 3479, 1705, 3501, 3869, 3086, 2411, 4010, 3876, 3278, 3169, 3820, 3664, 2727, 3788, 3021, 3722, 4038, 3423, 3491, 3761, 3975, 2574, 2239, 3915, 2186, 3340, 3638, 3302, 2681, 3422, 3406, 2570, 2456, 3874, 3169, 3486, 3685, 2958, 3666, 3661, 2871, 3517, 1078, 3466, 3353, 3481, 2803, 3652, 3568, 3581, 2944, 2792, 3524, 2158, 2951, 3189, 3563, 3232, 3510, 3725, 3967, 3564, 4018, 4030, 2314, 3729, 2284, 3286, 3609, 3882, 2910, 3624, 3790, 3642, 1672, 2741, 2858, 2566, 3050, 2623, 3836, 3043, 3874, 2006, 2226, 2932, 3420, 2796, 3773, 3725, 3013, 3284, 2124, 2709, 3072, 1452, 3522, 3331, 1746, 3697, 2872, 1159, 2740, 4056, 3536, 2856, 2909, 3611, 2320, 3079, 3332, 3093, 2675, 3712, 2985, 3227, 1782, 1066, 3944, 3687, 3943, 2289, 3025, 2799, 3067, 2198, 1275, 3494, 1248, 3589, 1758, 3951, 2940, 2807, 2178, 2703, 2131, 3837, 2473, 3928, 3879, 3829, 3381, 4072, 2229, 3580, 3985, 4078, 3793, 3735, 2930, 2239, 2902, 3680, 3743, 2689, 2168, 3918, 3593, 663, 2306, 3890, 4008, 3705, 2165, 1466, 1146, 2982, 674, 3382, 3207, 3897, 4043, 3349, 2295, 2881, 2808, 3037, 3341, 3462, 3446, 4058, 2370, 3457, 3613, 3535, 2322, 1698, 882, 1515, 1332, 4084, 3995, 3883, 3680, 3920, 3844, 3616, 2393, 3825, 2537, 4067, 3179, 2858, 3167, 3699, 2465, 2549, 3897, 2854, 2752, 3158, 2769, 3956, 3745, 2497, 4063, 3949, 3771, 3649, 3519, 3359, 3967, 3891, 2258, 4075, 3336, 3796, 3786, 2459, 1238, 3817, 2127, 3111, 1930, 3847, 3444, 2059, 1287, 3925, 3816, 3761, 4039, 3783, 3389, 3162, 3019, 4078, 3754, 3307, 2380, 3387, 3155, 4045, 2174, 2546, 2710, 3320, 3295, 2125, 3776, 3809, 3521, 2210, 3824, 3958, 3601, 2417, 3144, 2910, 3564, 3801, 1970, 3475, 3934, 2350, 2288, 3616, 3483, 1782, 1425, 4084, 3199, 3706, 3970, 2684, 4082, 4032, 3202, 3712, 3999, 4006, 2527, 4037, 2573, 4060, 4013, 2272, 3670, 2893, 3553, 3853, 2579, 2851, 3791, 2066, 3853, 2559, 3861, 2459, 3346, 3707, 2026, 2365, 3769, 3971, 3209, 3507, 3848, 2895, 3822, 2648, 3858, 3655, 2354, 1814, 3288, 4024, 3107, 3999, 2422, 2915, 3098, 3984, 1771, 2670, 910, 3913, 3760, 2323, 3639, 2323, 3126, 3966, 3924, 3495, 3628, 3155, 4071, 3974, 3614, 2989, 3938, 2620, 2678, 2488, 3221, 3935, 3360, 3888, 2674, 3167, 1843, 3059, 3861, 2475, 3360, 2346, 3212, 2715, 1646, 3358, 3716, 2140, 2324, 4083, 3612, 3214, 3441, 1829, 3010, 2022, 3366, 3293, 2862, 3931, 3203, 3602, 1969, 3380, 3985, 3431, 3065, 3881, 3630, 3041, 2764, 2752, 3122, 2296, 3741, 4066, 4062, 4009, 3823, 3064, 4056, 2405, 3684, 2969, 3711, 3411, 2830, 2348, 3683, 4050, 2976, 3900, 3827, 3639, 3264, 3548, 3800, 2855, 3804, 3799, 4063, 3802, 2783, 3812, 3319, 3454, 3345, 2340, 3803, 1223, 3855, 3287, 3502, 3464, 1560, 3158, 3118, 2284, 2258, 2521, 3561, 4040, 3596, 2891, 3393, 1644, 3554, 1942, 3393, 3803, 2020, 3875, 3299, 4069, 3513, 3704, 2406, 3563, 3115, 3629, 3828, 2680, 3842, 2476, 2767, 3711, 2654, 1808, 2904, 3961, 3458, 3270, 1670, 3091, 3578, 3487, 3902, 3528, 3428, 3976, 3309, 4028, 2832, 3598, 3384, 3982, 3527, 3772, 3870, 3261, 3741, 3119, 2603, 2934, 3963, 2893, 959, 2236, 3811, 3719, 2562, 3958, 2593, 3377, 2556, 1945, 3748, 3673, 1123, 3376, 2794, 3757, 2697, 2006, 3940, 3712, 2733, 396, 2930, 2563, 1769, 3665, 3178, 3668, 3919, 2688, 3306, 2283, 3619, 4094, 3021, 2987, 4082, 3368, 3097, 3075, 1783, 2310, 3691, 3248, 3440, 3064, 3077, 2135, 3395, 2711, 3572, 3177, 2791, 3049, 3031, 4081, 2485, 4075, 3101, 3494, 3428, 3278, 2582, 2281, 3538, 3994, 3263, 2700, 3977, 3612, 3332, 2005, 1139, 3190, 3507, 3149, 3489, 2881, 4011, 4009, 2067, 3481, 3569, 3641, 1499, 1148, 3129, 2722, 3829, 1092, 4077, 3298, 3815, 2481, 3048, 3814, 3338, 3062, 3887, 3666, 2991, 2427, 3849, 2833, 3400, 3534, 3290, 2501, 3472, 3099, 2499, 3545, 2634, 3334, 3004, 2279, 3445, 3724, 3693, 3054, 3238, 2644, 3996, 2152, 1128, 4011, 3534, 4025, 3881, 3988, 2057, 3809, 3997, 3480, 2154, 2532, 2818, 3681, 3765, 2450, 3588, 3111, 3870, 4021, 3642, 3397, 2775, 1258, 2962, 4054, 1846, 1527, 3759, 3910, 2249, 3742, 3622, 4007, 3355, 3822, 3076, 4027, 4074, 2613, 3543, 3864, 3932, 3579, 3699, 3781, 2148, 2952, 2157, 3696, 3733, 2265, 3192, 3073, 3020, 3112, 3589, 2225, 3835, 3285, 2115, 3948, 1574, 3582, 3703, 3078, 3806, 2100, 3779, 4052, 3986, 3987, 2297, 1318, 2560, 2856, 3854, 2628, 2591, 1912, 3605, 3599, 1500, 2504, 3611, 2158, 2974, 2284, 2229, 3895, 4049, 3808, 2004, 2982, 2537, 3289, 3319, 3950, 2830, 2149, 2575, 3374, 2652, 2378, 1284, 4093, 3592, 2768, 3295, 2972, 2533, 1753, 3733, 2800, 2596, 1891, 2869, 2770, 3048, 3993, 3673, 2828, 3969, 3965, 2782, 2732, 2440, 3769, 4027, 4016, 4013, 3663, 3171, 2600, 3087, 3138, 3190, 2433, 3762, 3963, 2330, 3505, 3352, 3426, 2532, 3336, 3402, 3947, 3339, 3672, 2347, 3398, 4029, 3160, 2572, 3009, 2751, 1678, 3276, 3192, 3228, 3956, 3916, 1340, 3788, 1865, 3698, 1341, 3828, 3592, 2719, 3920, 3709, 4003, 3208, 3926, 3863, 2648, 3270, 1581, 4045, 2997, 3387, 3814, 3653, 4002, 4014, 1488, 3992, 4064, 3409, 2182, 3060, 1505, 4092, 3474, 2879, 3685, 1623, 3271, 2839, 2495, 2467, 3797, 3920, 3319, 934, 2326, 2744, 2270, 2392, 3008, 3599, 2936, 3643, 3790, 3094, 2194, 3250, 4036, 4058, 901, 3033, 1342, 3881, 3973, 3841, 3748, 3701, 3668, 2574, 2399, 3419, 3734, 3415, 2536, 3679, 3982, 3259, 1221, 3198, 3583, 1796, 3975, 3397, 3961, 2906, 2616, 4033, 3451, 1721, 3977, 2069, 3011, 3974, 3947, 3184, 3499, 435, 3961, 2998, 3862, 3677, 3791, 2686, 3384, 2348, 3234, 2681, 2951, 3493, 3526, 3648, 1895, 2112, 3813, 3509, 3011, 2467, 2789, 3230, 3420, 2855, 3917, 2674, 4069, 3181, 3890, 3051, 549, 1646, 2116, 3440, 2555, 2023, 2565, 2761, 2859, 2331, 3115, 3975, 3880, 3256, 4002, 3551, 2051, 2267, 3908, 3428, 3908, 3415, 3121, 3108, 3637, 2651, 3352, 2645, 2901, 3532, 3885, 3673, 3377, 1690, 2963, 3149, 3093, 2806, 2470, 2556, 3247, 4089, 2852, 3097, 3792, 2196, 3850, 3434, 3656, 3778, 1251, 2590, 1180, 3421, 3351, 2815, 3237, 1944, 2658, 3694, 3334, 3950, 3168, 3787, 1613, 3373, 3815, 1820, 3499, 1621, 3692, 3957, 2328, 3766, 3393, 3243, 2712, 3603, 3909, 1838, 3791, 3787, 2791, 3597, 3938, 2473, 3776, 2418, 3206, 3677, 3532, 3173, 3062, 2436, 3557, 1436, 2242, 3371, 3092, 4062, 2988, 3188, 3288, 2055, 3464, 1128, 3558, 3826, 1836, 2996, 2996, 3363, 2557, 1402, 3696, 2814, 3703, 3453, 2623, 3224, 2679, 2483, 1585, 3356, 3859, 3028, 3670, 2944, 2599, 2939, 2619, 1682, 3681, 2711, 3731, 3038, 2823, 3596, 4003, 3845, 2386, 3398, 3556, 3901, 3778, 3939, 3453, 3222, 4073, 2470, 3553, 4016, 3854, 2777, 3705, 3723, 3335, 2635, 2784, 3779, 4061, 3483, 3077, 2294, 1088, 4077, 2536, 1983, 3490, 2611, 2113, 3275, 3934, 2683, 3138, 3314, 3184, 3552, 3379, 665, 3035, 3335, 3586, 3381, 2996, 1920, 2995, 3311, 3030, 1445, 4035, 4031, 3204, 1282, 1994, 3872, 4060, 3071, 3742, 3734, 3584, 3362, 3233, 2402, 3541, 2976, 3591, 3789, 3046, 3246, 3385, 2826, 2448, 2959, 2716, 3080, 1451, 3605, 4081, 3885, 1843, 3988, 2547, 3672, 2747, 3175, 2057, 3165, 2136, 2926, 3608, 2141, 3922, 3430, 3924, 1815, 2736, 3929, 2550, 4041, 1935, 3551, 421, 2427, 2869, 3294, 3819, 2926, 3210, 3532, 2170, 3139, 2103, 3505, 2010, 4057, 835, 1981, 2293, 2283, 3708, 2693, 2190, 2421, 2493, 2292, 3785, 3826, 1505, 2576, 3598, 1184, 3777, 2155, 2478, 3070, 4043, 3799, 2482, 3945, 2924, 2102, 2568, 2403, 2617, 2859, 3304, 3786, 3351, 1044, 3848, 3523, 3317, 3921, 2918, 3808, 1657, 3702, 3262, 3129, 2108, 2134, 2966, 3492, 1299, 1053, 3260, 4076, 3057, 3767, 1713, 1806, 3090, 3824, 1880, 2128, 3824, 2625, 3161, 3687, 3675, 3907, 3660, 2994, 3378, 2072, 3773, 1372, 2872, 4056, 2865, 3205, 3757, 3488, 2814, 3590, 2665, 3407, 2684, 2363, 2881, 1526, 3241, 1481, 3662, 3348, 3476, 1552, 3843, 3865, 3977, 2618, 3275, 1677, 2641, 3451, 3964, 3985, 3218, 3426, 3749, 3512, 1535, 2321, 1149, 1312, 3072, 3350, 3962, 2474, 4045, 1015, 2915, 4053, 2690, 3801, 2594, 1176, 4089, 2701, 3740, 3719, 2743, 4055, 1713, 3968, 3240, 3893, 3658, 2832, 3100, 3284, 2553, 4090, 3461, 3607, 2978, 1771, 2882, 1607, 3525, 4054, 1497, 1807, 2053, 2961, 2320, 3785, 3935, 3729, 3117, 1153, 2657, 2680, 3396, 3529, 3747, 2601, 3207, 2386, 3053, 3942, 3729, 3520, 3778, 4032, 2841, 3012, 3759, 3432, 4017, 3635, 3036, 3005, 3206, 3426, 3337, 3886, 3157, 2400, 2793, 1688, 2053, 2418, 3865, 3052, 1610, 3397, 3820, 3978, 3350, 2355, 2623, 3875, 3439, 3904, 4076, 3737, 3582, 3762, 3056, 2768, 3180, 1450, 3016, 1551, 3740, 1608, 3550, 3633, 3561, 3871, 3127, 3343, 2508, 3030, 3909, 3177, 3877, 2562, 2542, 3740, 3102, 2913, 2150, 3990, 3609, 3542, 4070, 2078, 3731, 3981, 2735, 3089, 3186, 2951, 3468, 2873, 3547, 3817, 3767, 2950, 3354, 3570, 3694, 1095, 2508, 3134, 2920, 3800, 3331, 3940, 3847, 1289, 2915, 2439, 3010, 3910, 3448, 1830, 3695, 3114, 3764, 2466, 2864, 2710, 1931, 2939, 2475, 3412, 4087, 3699, 2981, 4080, 3259, 2249, 2770, 3572, 3574, 2647, 2901, 4065, 3576, 3973, 3501, 2837, 3577, 3485, 3629, 3738, 3294, 2123, 3154, 3922, 3812, 2511, 3533, 3357, 3279, 2175, 3905, 2452, 4035, 3935, 3023, 3465, 904, 3461, 1567, 2094, 2045, 2810, 2798, 3306, 1846, 2379, 2927, 4044, 3997, 4054, 3863, 3326, 1466, 2846, 2928, 3880, 2701, 2583, 2847, 4012, 1951, 3930, 3123, 3955, 4067, 3892, 3224, 4055, 3903, 4051, 3834, 3018, 4060, 2141, 1867, 2322, 4033, 1518, 3132, 517, 4024, 1334, 1835, 3991, 2867, 4011, 1903, 2750, 3987, 3643, 4030, 3445, 3833, 3112, 3809, 1891, 3320, 1834, 3053, 2539, 2541, 3939, 3330, 3986, 3324, 3496, 1916, 3670, 3955, 3640, 3590, 3594, 2367, 3978, 3749, 1673, 3235, 2622, 3089, 1655, 2919, 2544, 3109, 970, 4027, 3408, 3302, 2593, 2720, 1448, 3663, 3469, 427, 882, 3686, 3784, 3954, 2821, 3406, 3215, 3175, 2774, 3040, 1661, 2745, 819, 3530, 1698, 4026, 2291, 746, 3259, 864, 3531, 2497, 2946, 3245, 2098, 3848, 3925, 3659, 2452, 2587, 4061, 3154, 3867, 3795, 3316, 1100, 2396, 2655, 2011, 2590, 3277, 3743, 2542, 3147, 3443, 3700, 2592, 3734, 2637, 2387, 2329, 3233, 2737, 1564, 2961, 2052, 3004, 1512, 2970, 1899, 3186, 4041, 1381, 3361, 1524, 3638, 3145, 3396, 3744, 2928, 4025, 2406, 3452, 3915, 3863, 4031, 3327, 4002, 3671, 2515, 2845, 3714, 3020, 2145, 1290, 2494, 3789, 3455, 3018, 886, 1031, 2614, 3414, 2888, 2078, 3949, 3893, 3511, 3208, 3219, 4091, 3894, 3032, 2452, 3465, 3857, 2898, 3234, 1219, 2560, 3293, 3943, 4026, 3387, 3798, 4047, 3852, 3540, 3713, 1582, 3307, 3184, 3471, 3537, 3996, 3435, 2792, 2007, 2140, 3164, 3163, 3606, 2238, 2912, 3292, 2463, 4064, 1973, 3274, 3289, 3914, 3884, 2900, 1063, 3659, 3514, 3500, 3775, 1804, 3905, 2886, 3774, 2757, 2762, 2761, 2589, 1903, 3009, 3731, 2370, 1704, 3355, 3851, 1394, 3767, 1904, 2538, 4036, 1890, 2758, 3682, 4092, 3281, 3336, 3529, 2531, 3104, 2837, 3959, 2153, 3913, 2748, 3926, 4072, 3105, 2307, 2715, 2842, 2754, 1678, 3436, 2904, 2880, 1565, 3510, 2844, 3317, 1837, 2782, 2835, 3838, 1985, 977, 3168, 1962, 4043, 2260, 1627, 1976, 1389, 3871, 3286, 3761, 3529, 1728, 3927, 3173, 1712, 3262, 3674, 1450, 1411, 3991, 3732, 3318, 1813, 3433, 3116, 1887, 2936, 1675, 1129, 2808, 3013, 3836, 3620, 2286, 2760, 3364, 3588, 1521, 3236, 3855, 3314, 3866, 3984, 1566, 3874, 2123, 2333, 1381, 2942, 3386, 3662, 3185, 4086, 3570, 4029, 2742, 2850, 3463, 3402, 1711, 2176, 3565, 2903, 987, 2549, 3369, 2374, 3222, 3753, 3860, 3885, 3465, 4015, 3890, 3310, 3923, 3311, 3783, 4018, 3856, 3220, 3646, 3912, 3678, 4089, 2605, 1958, 3206, 3595, 3754, 2524, 2416, 2861, 3919, 3649, 3371, 2100, 3511, 4078, 4022, 3895, 3102, 4042, 1861, 3106, 3386, 4094, 3862, 1290, 2820, 3747, 2322, 3954, 3667, 3058, 4057, 1618, 2534, 1597, 4022, 1538, 1223, 1790, 3777, 3297, 1337, 2926, 3871, 3264, 2247, 3792, 3022, 1396, 3649, 4033, 3271, 3919, 3898, 3087, 3777, 2067, 3671, 3583, 3018, 2552, 2918, 2696, 3625, 4013, 3634, 2920, 3701, 3736, 2698, 3382, 2347, 3153, 2938, 3728, 3131, 3566, 1896, 3959, 2446, 3531, 2476, 2989, 3754, 3248, 3171, 2566, 1731, 3686, 2117, 4073, 3121, 3080, 3636, 3258, 3386, 3204, 3835, 3882, 3527, 2779, 3326, 1874, 3755, 3296, 3936, 1068, 2991, 3831, 2222, 1642, 2278, 2478, 912, 3615, 3475, 4086, 1456, 3198, 2591, 2858, 3669, 1608, 4037, 2788, 3057, 2729, 4070, 2878, 3847, 3313, 2905, 3669, 2301, 3075, 2564, 1823, 2903, 3133, 1965, 3654, 3229, 3078, 3365, 2391, 1749, 3635, 3416, 2892, 1593, 3641, 3765, 4000, 2463, 3509, 3581, 3626, 3618, 2641, 2719, 1056, 1534, 2583, 3671, 3805, 3597, 3518, 3514, 3949, 2531, 2832, 2546, 3034, 3390, 2688, 3137, 3197, 3762, 2002, 3108, 2819, 3296, 3172, 3802, 2708, 3661, 3831, 3506, 3817, 3787, 4090, 3963, 3493, 3025, 1899, 3561, 3957, 3862, 3166, 2003, 3937, 4059, 1227, 1469, 1134, 3113, 3059, 3677, 2515, 2679, 2601, 3822, 1556, 1915, 3200, 2730, 2192, 2604, 2843, 3109, 3722, 3756, 4040, 2819, 2672, 2183, 2980, 1945, 4052, 3821, 1548, 3383, 2170, 2756, 4014, 2640, 2122, 2620, 4047, 3880, 1881, 2855, 2220, 3689, 3297, 2039, 3640, 3521, 3194, 1601, 2863, 2577, 3760, 2520, 1189, 2344, 3114, 3738, 3156, 3377, 2600, 2477, 2787, 2139, 3843, 1258, 2248, 2483, 3100, 3337, 2214, 3258, 3009, 3177, 3007, 2019, 3898, 2888, 3577, 3832, 2959, 3682, 3810, 3044, 1532, 3758, 3569, 3998, 2333, 2609, 495, 3367, 2949, 3745, 4059, 3293, 3444, 2048, 3989, 4092, 2606, 2370, 3520, 3628, 1790, 1037, 3470, 1067, 2905, 2845, 2567, 1626, 3341, 2030, 3071, 3938, 3014, 3968, 2500, 2013, 3371, 1765, 3684, 2237, 4038, 2716, 2575, 3297, 3911, 3250, 4077, 3478, 4068, 1588, 2700, 2675, 1959, 3333, 3732, 1183, 2669, 3786, 3902, 3477, 2621, 3770, 4096, 1820, 3213, 2172, 3839, 3990, 3637, 1458, 1886, 3052, 1027, 4061, 3981, 3480, 3576, 3505, 2963, 3715, 3381, 3906, 2866, 1785, 2953, 2745, 3211, 3652, 3810, 3438, 3623, 2033, 3987, 3523, 697, 3601, 3917, 3867, 3931, 4074, 2289, 2877, 1300, 3268, 3314, 2649, 3706, 4001, 3866, 3983, 2350, 2781, 3125, 2558, 3470, 1824, 3966, 3952, 3766, 2945, 3685, 1490, 3459, 2763, 2908, 2241, 3616, 3597, 3857, 3618, 3611, 3558, 3714, 3372, 3123, 3285, 2366, 1763, 3908, 2633, 2481, 3369, 1180, 4076, 2801, 2797, 1889, 3614, 1473, 2678, 4030, 3992, 2876, 1174, 1176, 4001, 2627, 1030, 3997, 1932, 1774, 3079, 4090, 3967, 3589, 3663, 2364, 2089, 2049, 2170, 3268, 3301, 4041, 1813, 3359, 3217, 1746, 2813, 2849, 2045, 3843, 3557, 3083, 2266, 3539, 1934, 4046, 2527, 3821, 1963, 4087, 2227, 3976, 1635, 3571, 3686, 3801, 3048, 2862, 3623, 3095, 3716, 3595, 2348, 2220, 3152, 3721, 4068, 1526, 3854, 3456, 2092, 4022, 2916, 3310, 1764, 3367, 3015, 3513, 3161, 4049, 2479, 3083, 3845, 3715, 3792, 2331, 3892, 4015, 3989, 3178, 3867, 2829, 2243, 3457, 3832, 2254, 4048, 2078, 2318, 3627, 2935, 2725, 3973, 3794, 2201, 2561, 3376, 2160, 3896, 2999, 3651, 3508, 3378, 3253, 3156, 3814, 502, 3735, 4048, 2380, 3028, 3812, 2825, 3429, 2461, 3556, 2263, 2051, 3232, 3667, 3157, 2692, 3544, 2512, 2081, 2137, 3988, 3026, 3533, 2611, 2805, 2569, 1503, 3019, 3623, 3111, 2613, 3603, 3109, 2460, 3148, 702, 3051, 3982, 2640, 4021, 4042, 2503, 3834, 1922, 1863, 2377, 3994, 1938, 1110, 3040, 3328, 3948, 2732, 3315, 3741, 3413, 2588, 3392, 4058, 1925, 4084, 4047, 2840, 3215, 4079, 3146, 3953, 3900, 2525, 3737, 3038, 3473, 2685, 2299, 2772, 3565, 3114, 2656, 3865, 2519, 3584, 3653, 3327, 3742, 3497, 3198, 1851, 3968, 1415, 3928, 1857, 3625, 2652, 3260, 3940, 3500, 4003, 3678, 3980, 3001, 3746, 3693, 3401, 3625, 2383, 3541, 3528, 2448, 2978, 1074, 2621, 3933, 3449, 2975, 3978, 2408, 2106, 2817, 3998, 1022, 1619, 1284, 3555, 3027, 2327, 3627, 2726, 3110, 3586, 2561, 1147, 3147, 2287, 3280, 4005, 2922, 1262, 2566, 3450, 3710, 4065, 2171, 3946, 2267, 1927, 3527, 2964, 2589, 3969, 3084, 2619, 3766, 3072, 1571, 3946, 1420, 2506, 3170, 4028, 3029, 3305, 1169, 3295, 492, 3727, 3916, 3996, 3085, 3430, 3894, 3238, 2764, 2872, 2537, 1787, 3667, 3816, 3858, 2185, 2954, 2541, 3334, 655, 3700, 3599, 3714, 3097, 3564, 3159, 3927, 3782, 3876, 3613, 3471, 3441, 2766, 2706, 596, 1069, 1939, 2224, 4065, 2885, 3462, 2121, 4059, 2999, 2530, 1897, 3385, 3675, 4046, 3899, 3891, 1846, 3657, 2210, 3212, 4091, 3088, 2598, 2767, 3765, 3869, 2506, 3024, 3146, 3431, 2897, 1338, 3937, 3750, 3748, 2848, 2912, 4021, 3994, 1578, 3418, 3707, 3621, 4024, 4051, 3571, 2784, 3174, 3016, 3537, 3075, 3713, 3066, 3316, 1689, 3833, 3844, 1727, 1170, 3813, 857, 3545, 2395, 3780, 3584, 2867, 1559, 3552, 2282, 2109, 3724, 3267, 2523, 3370, 3518, 2431, 2710, 3819, 4032, 2873, 3838, 3730, 2539, 1763, 2809, 2551, 2842, 2302, 2188, 3744, 3635, 2632, 2166, 1736, 2694, 2736, 1996, 3277, 3818, 3774, 830, 4036, 2454, 2962, 3394, 2935, 3182, 2791, 3557, 3405, 3979, 3648, 3768, 3840, 4018, 3946, 3090, 3197, 3506, 2823, 3374, 4007, 3739, 3422, 3498, 3984, 3857, 1707, 929, 4050, 3205, 3758, 3903, 3634, 4015, 3136, 1964, 609, 1918, 1061, 948, 360, 1155, 1001, 1137, 1021, 967, 1564, 1143, 787, 1444, 794, 558, 1095, 1107, 544, 373, 1603, 1265, 1509, 1831, 1992, 1754, 949, 2553, 1693, 1098, 1863, 1408, 1619, 509, 644, 856, 744, 2429, 2120, 422, 935, 982, 2410, 798, 1776, 1095, 1435, 918, 1522, 1154, 699, 2192, 1004, 1533, 742, 653, 1135, 1387, 1074, 1415, 1920, 1338, 930, 761, 1134, 2105, 420, 1144, 1231, 1299, 1516, 840, 1979, 1409, 976, 1101, 1154, 791, 1489, 894, 1488, 1369, 540, 1291, 791, 1014, 949, 879, 1288, 1098, 1202, 1765, 1072, 1457, 839, 1468, 1022, 660, 852, 170, 1733, 1239, 354, 414, 801, 1182, 2238, 1484, 2449, 1584, 866, 873, 1213, 1297, 1605, 1269, 1567, 1134, 1443, 1625, 1059, 1248, 423, 1018, 728, 551, 1313, 1333, 1834, 1133, 483, 1906, 1636, 1309, 1061, 735, 1537, 1577, 1526, 714, 1327, 1013, 1013, 901, 1600, 341, 2646, 986, 1334, 1288, 1265, 800, 1653, 1233, 1474, 767, 769, 641, 1433, 815, 1235, 870, 1249, 858, 1630, 948, 1165, 929, 767, 1507, 1633, 653, 911, 1586, 1360, 1591, 957, 795, 1589, 544, 1350, 1552, 634, 958, 685, 1551, 1012, 1982, 1809, 1273, 268, 1119, 1265, 1700, 1425, 1201, 1045, 607, 1430, 1485, 861, 1023, 1312, 1506, 691, 1343, 827, 1582, 1129, 1153, 364, 1167, 1040, 1107, 814, 881, 1798, 1027, 2157, 1657, 871, 781, 582, 2179, 1695, 968, 1248, 1161, 1347, 1909, 759, 1620, 1112, 462, 1955, 1531, 1824, 1191, 1089, 1472, 431, 991, 1012, 1221, 739, 1887, 892, 1183, 616, 914, 1307, 1785, 754, 168, 1315, 591, 1693, 1839, 1010, 799, 783, 1053, 547, 789, 1004, 1599, 1602, 354, 1317, 1634, 730, 1660, 1416, 1431, 1030, 1502, 869, 1100, 528, 907, 1148, 670, 858, 1341, 1004, 650, 863, 1063, 523, 880, 1054, 1017, 1369, 1732, 858, 2162, 1590, 590, 876, 1102, 1411, 873, 1280, 686, 1190, 984, 1259, 942, 698, 1473, 1185, 684, 844, 618, 1515, 796, 2108, 453, 898, 1354, 1483, 1592, 677, 2212, 2275, 1946, 1006, 641, 1789, 1463, 2091, 611, 758, 1201, 1166, 1509, 1151, 2206, 1504, 1072, 1363, 570, 1966, 446, 1469, 1577, 1834, 593, 1351, 2164, 545, 1218, 435, 1113, 1533, 1541, 353, 816, 1489, 1294, 1012, 1035, 501, 975, 1209, 363, 1118, 715, 889, 1337, 403, 1112, 530, 1297, 468, 1742, 1053, 546, 1166, 1223, 576, 1593, 933, 659, 1367, 1861, 586, 828, 439, 1598, 770, 1040, 1081, 1590, 955, 1173, 1875, 1261, 1413, 707, 980, 1117, 1493, 1422, 1283, 934, 1447, 1842, 899, 1770, 511, 1012, 1357, 812, 1338, 1044, 1497, 1756, 1412, 1929, 1057, 1114, 971, 1140, 1847, 227, 1080, 992, 1614, 434, 1390, 1601, 588, 707, 897, 1171, 947, 1994, 623, 823, 1250, 893, 1351, 1481, 523, 1545, 781, 962, 977, 1814, 1792, 1462, 1161, 1334, 544, 741, 532, 249, 1204, 1461, 1619, 849, 875, 1410, 552, 329, 1181, 1388, 1504, 398, 2106, 1466, 548, 1762, 1778, 228, 1726, 1330, 1225, 2570, 1108, 1091, 1298, 1613, 543, 358, 1662, 1264, 306, 1126, 676, 1068, 976, 1541, 596, 2332, 1535, 462, 514, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2301, 710, 2415, 1189, 954, 1243, 1277, 1014, 1250, 1249, 2240, 1650, 1162, 901, 1589, 1026, 657, 1235, 1206, 637, 402, 1668, 1520, 1813, 1909, 2037, 1997, 2173, 2727, 1945, 1405, 1962, 1572, 2024, 1302, 1188, 865, 1116, 2556, 2388, 502, 986, 1072, 2661, 1489, 2525, 1446, 1468, 1482, 1592, 1312, 702, 2603, 1075, 1620, 832, 1060, 1230, 1766, 1631, 1548, 2318, 1463, 1359, 1188, 1237, 2197, 1753, 1779, 1247, 1389, 1579, 2396, 2050, 1729, 979, 1366, 1486, 1327, 1618, 1868, 1802, 1510, 879, 2057, 854, 1286, 1100, 936, 1740, 1166, 1232, 2110, 1357, 1749, 1078, 2031, 1106, 905, 1141, 1075, 2331, 1443, 1368, 535, 902, 1416, 2379, 1500, 2455, 1718, 1204, 1275, 1402, 1505, 1830, 1382, 1873, 1189, 1604, 1999, 1500, 1588, 543, 1025, 743, 783, 1349, 1592, 2067, 1152, 915, 2153, 1867, 1563, 1210, 1162, 1573, 1762, 1825, 883, 1426, 1024, 1406, 990, 1687, 494, 3164, 988, 1565, 1753, 1634, 1142, 2018, 1573, 1879, 816, 1389, 1024, 1686, 870, 1261, 1045, 1465, 990, 1758, 1353, 1407, 981, 904, 1809, 1963, 1288, 1029, 1734, 1384, 1928, 1306, 1015, 1834, 658, 1459, 2455, 850, 1039, 926, 1901, 1126, 2060, 2098, 1848, 503, 1150, 1391, 1792, 1625, 1346, 1617, 673, 1488, 1527, 949, 1064, 1333, 2187, 904, 1570, 870, 1874, 1170, 1190, 759, 1176, 1496, 1328, 887, 1222, 1830, 1066, 2181, 1667, 1217, 968, 601, 2330, 2091, 1252, 1301, 1202, 2346, 2311, 820, 1747, 1954, 1221, 2010, 1648, 2215, 1496, 1983, 1838, 520, 1301, 1289, 1504, 1448, 1902, 1707, 1710, 1135, 1319, 2431, 1897, 834, 231, 1830, 1609, 1905, 1912, 1141, 1016, 1203, 1355, 592, 1162, 1192, 1627, 1776, 783, 2393, 1886, 839, 1721, 1853, 1532, 2025, 1562, 1177, 1181, 609, 1179, 1802, 706, 1970, 1401, 1326, 736, 1468, 1149, 619, 987, 1450, 1095, 1630, 2128, 1492, 2361, 1677, 920, 1042, 2258, 1864, 879, 1432, 726, 1254, 1080, 1313, 1129, 2015, 1598, 1472, 803, 987, 703, 1719, 1001, 2315, 742, 986, 1844, 1966, 1737, 732, 2264, 2429, 2172, 1617, 981, 1805, 1806, 2094, 1807, 818, 1932, 1202, 1566, 1270, 2265, 1856, 1164, 1558, 1219, 2087, 698, 1660, 1805, 2614, 760, 1460, 2246, 573, 1312, 663, 1119, 1647, 1631, 569, 1509, 2004, 1804, 1594, 1301, 611, 1373, 1603, 676, 1159, 817, 1233, 1368, 1226, 1156, 883, 2517, 1112, 1878, 1083, 719, 1314, 1603, 624, 1808, 1404, 1568, 1960, 1894, 1319, 1078, 477, 1695, 1191, 1050, 1123, 1689, 1622, 1320, 2211, 1399, 2090, 1020, 1543, 1275, 1539, 1667, 1758, 1227, 1773, 2808, 918, 1889, 657, 1160, 2111, 1552, 1416, 1627, 1548, 1939, 1450, 2221, 1756, 1162, 1455, 1751, 2053, 729, 1253, 1563, 2066, 631, 1460, 1727, 597, 852, 1186, 1200, 1197, 2062, 892, 1641, 1414, 1173, 1451, 1763, 554, 1956, 1057, 1023, 1484, 2338, 2310, 1507, 1845, 1392, 651, 861, 725, 412, 1314, 1549, 1627, 892, 1195, 1881, 573, 1186, 1185, 1751, 1515, 960, 2191, 1767, 595, 1828, 2241, 704, 2126, 1333, 1681, 2662, 1574, 1230, 1647, 1905, 652, 538, 1692, 2153, 805, 1267, 899, 1352, 1074, 1771, 644, 2390, 2169, 683, 821, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2942, 1159, 2553, 1296, 2133, 2055, 1605, 1084, 1383, 1580, 2341, 1672, 1173, 1163, 2037, 1188, 1162, 1491, 1213, 707, 609, 2092, 1596, 2049, 2186, 2211, 2135, 2203, 2877, 2163, 1916, 2000, 1608, 2318, 1702, 2257, 964, 1160, 2577, 2447, 841, 1481, 1323, 2740, 1652, 2593, 2063, 2407, 1901, 1934, 1749, 969, 2731, 1607, 2095, 1525, 1329, 1729, 1779, 2910, 1649, 2337, 2047, 1474, 1198, 1353, 2213, 1787, 2013, 1280, 1731, 1902, 2513, 2297, 2298, 1097, 1459, 1613, 1739, 1649, 1934, 1841, 1635, 1552, 2332, 1001, 1582, 1145, 1027, 1783, 2018, 1625, 2360, 1739, 2182, 1221, 2429, 1133, 1068, 1188, 1419, 2724, 1789, 1798, 1118, 1062, 1470, 2623, 2063, 2647, 1820, 1266, 1700, 1865, 1520, 2543, 1634, 1991, 1998, 2108, 2312, 2131, 1845, 831, 1492, 1496, 877, 1399, 1766, 2111, 1311, 1894, 2291, 1905, 1647, 1488, 1732, 1701, 2141, 2255, 909, 1639, 1200, 1514, 1229, 1737, 1033, 3537, 1642, 2049, 2230, 1668, 1170, 2268, 1914, 1962, 881, 1670, 1229, 1898, 948, 1806, 1485, 1547, 1260, 2043, 1380, 1413, 1261, 1239, 2009, 1975, 1299, 1101, 1761, 1667, 2323, 1436, 1423, 2212, 731, 1666, 2699, 1489, 2015, 1462, 2106, 1575, 2660, 2163, 1872, 1459, 2214, 1867, 1925, 1816, 1692, 2275, 1848, 2222, 1576, 1166, 1702, 2116, 2259, 1021, 2689, 1559, 1908, 1378, 1408, 1780, 1264, 1974, 1556, 1389, 1251, 2110, 1334, 2291, 1844, 1260, 1062, 1077, 2650, 2161, 1759, 2034, 1256, 2935, 2563, 1022, 2000, 2075, 2106, 2019, 1919, 2277, 1618, 2429, 1988, 860, 1336, 1908, 1565, 1649, 1944, 1718, 1879, 2080, 1528, 2468, 2582, 1599, 1712, 2231, 1777, 2085, 2313, 1696, 2519, 1290, 1397, 624, 1253, 1379, 1892, 2106, 1894, 2553, 2420, 1313, 1911, 2235, 2232, 2091, 1954, 1482, 1294, 642, 1350, 1838, 1650, 2286, 2432, 1335, 1053, 2385, 1415, 922, 1825, 1564, 2261, 2176, 2579, 2158, 2438, 1932, 1160, 1056, 2534, 2035, 1625, 1790, 1142, 1318, 1496, 1836, 1358, 2155, 1776, 1548, 822, 1017, 726, 1801, 1414, 2544, 877, 1023, 2146, 2130, 2254, 1063, 2293, 2515, 2451, 2434, 1133, 2711, 1832, 2253, 1985, 1059, 2421, 1533, 1861, 1329, 2279, 2001, 1313, 1602, 1237, 2351, 1551, 1832, 2084, 2746, 1379, 1468, 2666, 587, 1543, 701, 1219, 1793, 1819, 622, 1651, 2208, 2673, 1668, 1843, 680, 1410, 1866, 820, 2547, 947, 1266, 1437, 1565, 1485, 1123, 2639, 1317, 2206, 1107, 906, 1728, 2292, 1510, 1936, 1900, 1920, 2260, 2026, 1536, 1592, 1201, 2506, 1300, 1694, 1127, 1837, 1959, 1343, 2240, 1454, 2219, 1890, 1920, 2293, 1875, 1715, 2046, 1569, 1822, 2911, 1567, 1906, 2206, 1680, 2385, 1625, 1775, 2043, 1807, 2060, 1671, 2453, 2189, 1622, 1625, 2176, 2095, 1480, 1668, 1568, 2124, 1934, 1466, 2177, 849, 1361, 1228, 1366, 1828, 2169, 1653, 1914, 1502, 1334, 1898, 1947, 1067, 2023, 1090, 1812, 2339, 2756, 2403, 1923, 1957, 2025, 975, 1727, 769, 496, 1534, 1555, 2138, 1343, 1438, 2030, 592, 1987, 1636, 2177, 1627, 1199, 2394, 2187, 979, 1840, 2266, 1021, 2171, 1763, 1862, 3094, 1587, 1318, 2341, 2170, 690, 1041, 2015, 2236, 1627, 1828, 1036, 1356, 1538, 1967, 881, 2433, 2269, 1050, 1603, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3931, 2290, 2658, 1520, 2194, 2191, 2100, 1143, 1633, 1821, 2428, 2069, 1492, 1275, 2073, 1693, 1355, 1747, 1352, 1539, 768, 2191, 1716, 2093, 2283, 2673, 2173, 2478, 3077, 2429, 2595, 2105, 1779, 3069, 1980, 2449, 974, 1175, 2664, 2451, 1012, 1921, 1601, 3076, 1947, 2761, 2203, 2521, 1929, 2324, 1842, 1177, 2850, 2001, 2567, 1878, 1835, 2736, 1869, 3155, 2185, 2786, 2106, 1838, 2064, 1435, 2735, 1984, 2233, 1711, 1752, 2114, 2551, 2392, 2374, 1471, 1531, 1631, 2197, 2008, 1968, 1850, 1733, 1577, 2696, 2161, 2241, 1478, 2263, 2199, 2514, 2211, 2564, 2556, 2373, 1368, 2496, 1228, 1111, 1732, 1794, 3093, 2260, 1831, 1751, 1472, 1987, 2786, 2604, 3032, 2132, 1530, 1748, 2145, 1545, 2642, 1650, 1996, 2091, 2120, 2590, 2780, 1996, 1007, 1982, 1590, 2097, 1907, 2114, 2252, 1561, 2281, 2317, 2109, 1802, 1792, 1759, 1916, 2563, 2345, 955, 2120, 1465, 1518, 1483, 1828, 1136, 3678, 1680, 2357, 2389, 1678, 1576, 2645, 2570, 2135, 1703, 2042, 1689, 1956, 1837, 2131, 1877, 2320, 2042, 2164, 2044, 1885, 2088, 1431, 2162, 2075, 1562, 2228, 2327, 1739, 2602, 1537, 1474, 2336, 1190, 1694, 2755, 1520, 2602, 1924, 2702, 2315, 2777, 2218, 2223, 2419, 2301, 2178, 2428, 2361, 1779, 2494, 1899, 2343, 1774, 1240, 2120, 2226, 2383, 1056, 2696, 1651, 2280, 2413, 1417, 2104, 1608, 2195, 2253, 1510, 2192, 2216, 1975, 2301, 2734, 1295, 1203, 1132, 2759, 2352, 2290, 2036, 1715, 2965, 2681, 1479, 2007, 2161, 2447, 2225, 2524, 2426, 1737, 2488, 2364, 1391, 1393, 1949, 2542, 2047, 1998, 2189, 2007, 2722, 1707, 2636, 2838, 1894, 2107, 2849, 1847, 2423, 2350, 1956, 2798, 1301, 1729, 1288, 1407, 1698, 1989, 2267, 2213, 2563, 2727, 1369, 2541, 2289, 2881, 2185, 2047, 1760, 1773, 910, 1613, 1876, 2262, 2426, 2437, 1563, 1491, 2604, 1783, 1371, 1897, 1907, 2313, 2834, 2809, 2163, 2641, 2603, 2197, 1195, 2607, 2377, 1845, 2406, 2277, 1571, 1700, 2161, 2186, 2246, 1936, 1946, 1393, 1284, 1724, 2293, 2327, 2724, 1010, 1740, 2430, 2172, 2892, 1143, 2399, 2890, 2471, 2535, 2433, 2773, 2032, 2697, 2325, 1464, 2426, 1808, 1925, 1700, 2419, 2319, 1482, 1844, 1889, 2975, 1886, 1935, 2350, 2785, 1971, 1566, 2754, 2455, 1708, 749, 2073, 1936, 2125, 1075, 1688, 2421, 2809, 1943, 2473, 1135, 1504, 2083, 912, 2617, 1581, 1822, 1457, 2505, 1841, 1179, 2671, 1420, 2315, 1265, 1612, 2084, 2743, 1901, 2535, 2212, 2036, 2290, 2161, 1988, 1706, 1540, 2520, 1336, 2618, 1313, 1911, 2905, 1478, 2892, 2537, 2649, 2342, 2205, 2530, 2547, 1862, 2288, 1655, 2110, 2934, 2030, 1949, 2225, 1894, 2517, 1955, 1821, 2444, 2089, 2214, 2035, 2535, 2258, 1870, 1846, 2937, 2734, 1867, 2414, 1749, 2232, 1990, 1521, 2594, 1066, 1590, 1380, 2708, 2045, 2179, 1953, 2234, 2528, 1472, 2466, 1963, 1248, 2266, 1359, 2013, 3030, 2829, 2877, 2186, 1999, 2567, 1058, 1988, 898, 590, 2169, 1941, 2797, 1623, 2306, 2203, 615, 2149, 2446, 2293, 1652, 1393, 2465, 2499, 1900, 1964, 2709, 1262, 2334, 2227, 2384, 3124, 1800, 1949, 2432, 2269, 698, 1564, 2101, 2327, 1788, 2395, 1086, 1363, 2667, 1976, 1683, 2525, 2501, 1310, 2074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4023, 2400, 2671, 1817, 2718, 2270, 2257, 1199, 1954, 2183, 2443, 2486, 1866, 1811, 2232, 1733, 1528, 1957, 1590, 1563, 1228, 2238, 2081, 2302, 3077, 2775, 3137, 2597, 3106, 2568, 2655, 2413, 1784, 3420, 2138, 2610, 1638, 1293, 2698, 2484, 1395, 1933, 1735, 3350, 2671, 2925, 2277, 2778, 2287, 2565, 2117, 1245, 3358, 2039, 2869, 2870, 2152, 2845, 1984, 3535, 2347, 3044, 2198, 2592, 2356, 1650, 2799, 2511, 2403, 1972, 2109, 2315, 3372, 2565, 2529, 2280, 1764, 1872, 2476, 2273, 2517, 1880, 1759, 1896, 2870, 2230, 2301, 1966, 2500, 2972, 2675, 2404, 2780, 3049, 2470, 1842, 2856, 1296, 1133, 1768, 2670, 3249, 2450, 2156, 2380, 2376, 2514, 2909, 2885, 3302, 2194, 2541, 2152, 2341, 1682, 2886, 2397, 2275, 2782, 2632, 2755, 2905, 2608, 2336, 2155, 1721, 2639, 2270, 2721, 2290, 1592, 2974, 2556, 2470, 2029, 1863, 1981, 1944, 2570, 3181, 1279, 2488, 1748, 1623, 1592, 1941, 1171, 3755, 2017, 2386, 2516, 1790, 1667, 3025, 2666, 2529, 2301, 2057, 2301, 2145, 1847, 2710, 2106, 2629, 2376, 2847, 2478, 2197, 2220, 2518, 2434, 2629, 2253, 2663, 2406, 2038, 2916, 1691, 2061, 2503, 1729, 1775, 3178, 1743, 2852, 2129, 3211, 2379, 3012, 2357, 2316, 2511, 2329, 2348, 2460, 2394, 2042, 2797, 2029, 2483, 2140, 1606, 2558, 2393, 3094, 1217, 2781, 2076, 2298, 2959, 1690, 2332, 1767, 2762, 2684, 1958, 2654, 2429, 2486, 2384, 2787, 2020, 1847, 1835, 2831, 2505, 2411, 2563, 1938, 3468, 2749, 1623, 2531, 2197, 2671, 2475, 2752, 2709, 2544, 2505, 2501, 1680, 1682, 2008, 2837, 2150, 2407, 2425, 2408, 2842, 1891, 2654, 3301, 1899, 2804, 2867, 2515, 2591, 2453, 2042, 2853, 1544, 1781, 1509, 2171, 2454, 2196, 2374, 2576, 2841, 2770, 1949, 2602, 2609, 2896, 2257, 2352, 2476, 1799, 1456, 2241, 1909, 3083, 2654, 2488, 2548, 1654, 2719, 2196, 1772, 2675, 2614, 2771, 3188, 3058, 2365, 2738, 2651, 2298, 1964, 2653, 2427, 1934, 2464, 2526, 1852, 1781, 2478, 2219, 2671, 2081, 2025, 2099, 1764, 2273, 2562, 2616, 2773, 1733, 1839, 2490, 2179, 3140, 1442, 2534, 3115, 2545, 2626, 2459, 2931, 2095, 2846, 2486, 1756, 2742, 1889, 2205, 1711, 2437, 2481, 2538, 2737, 1960, 3143, 2152, 2500, 2595, 3014, 2152, 2111, 2984, 2832, 1744, 789, 2289, 2257, 2128, 1289, 1880, 2500, 2813, 2948, 2947, 1530, 2303, 2217, 2331, 2742, 2195, 2084, 1536, 3174, 2215, 2235, 3176, 1439, 2409, 1820, 1960, 2203, 2942, 2338, 3099, 2436, 2104, 2426, 2262, 1994, 2005, 2330, 2548, 1724, 2640, 1505, 2333, 2981, 1819, 2961, 2620, 2936, 2809, 2447, 2674, 2710, 2002, 2558, 2127, 2184, 2986, 2240, 2252, 2583, 1902, 2756, 2002, 2751, 2457, 2281, 2458, 2168, 2707, 2551, 2291, 2024, 2968, 2860, 2102, 2884, 2193, 2374, 2417, 2113, 2777, 1490, 2225, 1749, 3487, 2249, 2994, 1955, 2447, 2878, 2378, 2679, 2015, 1511, 2322, 1975, 2299, 3091, 2837, 2906, 2593, 2087, 2663, 1120, 2027, 1384, 681, 2467, 2054, 2939, 2150, 2384, 2354, 687, 2358, 2499, 2501, 1883, 2911, 2487, 2959, 2830, 2391, 2782, 2088, 2480, 2264, 2612, 3357, 2034, 2073, 2703, 2715, 1590, 1655, 2193, 2524, 2067, 2400, 1128, 2393, 2755, 2394, 3191, 2719, 2827, 1603, 2146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2462, 2871, 1933, 3008, 2752, 2485, 2725, 2482, 2375, 2835, 2620, 1937, 3008, 2319, 1807, 1904, 2383, 1909, 1833, 1278, 2294, 2298, 2323, 3196, 2953, 3212, 2612, 3400, 2657, 2901, 2425, 2978, 3691, 2614, 2793, 2145, 2454, 2756, 2978, 1718, 2094, 1964, 3449, 2787, 3341, 2974, 2878, 2320, 2606, 2973, 1512, 3596, 2147, 2888, 2987, 2284, 2887, 2251, 3677, 2858, 3142, 2651, 2890, 2369, 2424, 2960, 2629, 2624, 2514, 2190, 2357, 3462, 2626, 2726, 2387, 1857, 2046, 2552, 2449, 2957, 2522, 2128, 2432, 2985, 2446, 2997, 2548, 2770, 3081, 2987, 2770, 2851, 3072, 2487, 2711, 3104, 1960, 1403, 1776, 2810, 3287, 2577, 2558, 2759, 2731, 2962, 3104, 3005, 3345, 2580, 2616, 2393, 2353, 1755, 2965, 2455, 2879, 3406, 3070, 2802, 3296, 2659, 3028, 2477, 1981, 3145, 2725, 2848, 2568, 1975, 3030, 2560, 2755, 3251, 2773, 2015, 2254, 2862, 3236, 1975, 2609, 2113, 1825, 2465, 1972, 1270, 3812, 2700, 2395, 2881, 2216, 3238, 3278, 2926, 3488, 2549, 2075, 2517, 2547, 2163, 2874, 2202, 2691, 2488, 3063, 2720, 2521, 2338, 2876, 2437, 3096, 2604, 2719, 2654, 2402, 3042, 2054, 2487, 2569, 2124, 2061, 3251, 2201, 2873, 2762, 3225, 2683, 3174, 2635, 2458, 2652, 2461, 2376, 2741, 2468, 2170, 2800, 2550, 2786, 2571, 1775, 2661, 2437, 3134, 1363, 2839, 2099, 2985, 3060, 1785, 2513, 1894, 2795, 3164, 2056, 3073, 3255, 2643, 2495, 2830, 3372, 2078, 2002, 3292, 2986, 2578, 2860, 2024, 3567, 2988, 1803, 2832, 2371, 2747, 2940, 3183, 3064, 2911, 2768, 2714, 2332, 1849, 2982, 2954, 2545, 2416, 2842, 2631, 2957, 2260, 2796, 3388, 1919, 2937, 3060, 2844, 2912, 2473, 2404, 3227, 1910, 1944, 3139, 2514, 3089, 2510, 2816, 2654, 2930, 2946, 2579, 3216, 2790, 3634, 2275, 2710, 2724, 2158, 1503, 2271, 2091, 3343, 2767, 2516, 2607, 1721, 2916, 2464, 2518, 2816, 3068, 3142, 3317, 3413, 2971, 3146, 2660, 2334, 2598, 2702, 2865, 2347, 2646, 2775, 2207, 1896, 2586, 2385, 3027, 2945, 2090, 2133, 1896, 2282, 3135, 2853, 2848, 2153, 1897, 2497, 2782, 3297, 1821, 2605, 3365, 2593, 2675, 2648, 2934, 2305, 3054, 2822, 2199, 3166, 2308, 3205, 2183, 3337, 2643, 3075, 2977, 2235, 3389, 2650, 2799, 3047, 3127, 2572, 2359, 3050, 2907, 2177, 873, 2442, 2350, 2847, 1323, 2566, 2768, 2836, 3144, 2994, 1580, 2413, 2362, 2393, 2904, 2312, 2156, 2065, 3220, 2532, 2498, 3542, 2225, 2413, 2835, 2200, 2299, 3035, 2547, 3136, 2547, 2863, 2536, 2525, 2116, 2009, 2471, 2614, 1871, 3038, 1809, 2599, 3194, 1914, 3033, 3149, 3000, 3418, 2510, 2800, 2939, 2374, 2751, 2851, 2214, 3019, 2530, 2421, 2745, 2417, 2903, 2093, 2808, 2484, 2409, 2704, 2522, 2741, 2561, 2691, 2526, 3093, 2882, 2211, 2935, 2291, 2825, 2722, 3014, 2788, 1903, 2554, 2350, 3506, 2325, 3065, 2474, 2619, 3165, 3075, 3006, 2472, 1516, 2657, 2327, 2305, 3344, 2980, 2980, 3394, 2255, 3324, 1425, 2371, 1873, 835, 2691, 2076, 2985, 2846, 2743, 2548, 848, 2484, 2541, 3147, 2818, 3018, 2769, 3068, 3123, 2766, 3315, 2612, 2812, 2549, 2977, 3361, 2254, 3363, 3096, 2970, 1897, 2129, 2665, 2952, 3210, 2817, 1522, 2587, 2854, 2756, 3219, 3100, 3642, 1610, 2808, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3424, 2993, 2883, 3360, 2878, 2640, 2914, 3495, 3256, 3079, 3329, 2034, 3292, 2524, 2350, 2074, 2500, 2622, 2358, 1748, 2767, 2301, 2426, 3377, 3081, 3470, 3108, 3762, 2977, 3166, 3396, 3107, 3830, 2677, 2899, 2479, 3026, 3345, 3676, 1814, 2300, 2011, 3490, 2791, 3574, 2990, 2976, 2582, 2633, 3361, 2063, 3655, 3282, 3104, 3374, 2366, 3144, 2278, 3780, 3034, 3629, 2978, 3015, 2733, 2675, 3140, 2895, 3462, 3068, 2320, 3261, 3900, 2787, 2989, 2884, 2839, 2390, 2691, 2898, 3259, 2539, 2449, 2442, 3350, 2650, 3311, 3163, 3308, 3295, 3255, 3191, 3120, 3093, 2687, 2785, 3351, 3113, 1915, 1984, 3077, 3364, 2624, 3326, 2804, 3093, 3555, 3254, 3145, 3453, 2837, 2687, 2985, 2560, 1899, 3127, 2710, 3054, 3408, 3403, 3410, 3513, 3303, 3260, 3074, 2299, 3234, 2824, 2884, 2621, 2369, 3470, 2861, 2962, 3456, 3093, 2305, 2342, 3303, 3538, 2480, 3106, 2868, 2543, 2566, 2500, 1943, 3937, 3062, 2414, 2968, 3423, 3503, 3531, 2996, 3828, 2643, 2152, 3141, 2602, 2816, 3233, 2337, 2826, 2773, 3177, 2905, 2544, 2645, 3055, 3018, 3161, 2734, 2906, 2709, 2575, 3084, 2771, 2644, 2634, 2765, 3028, 3275, 2776, 3140, 2891, 3462, 2887, 3512, 3391, 2682, 3166, 2491, 2425, 2896, 2583, 2362, 2840, 2590, 3510, 2914, 1785, 2782, 2845, 3677, 1619, 2945, 2219, 2990, 3169, 1880, 3154, 2244, 2971, 3514, 2297, 3204, 3259, 2950, 2534, 3043, 3524, 2931, 2428, 3328, 3008, 2661, 2936, 2346, 3783, 3162, 2923, 2975, 2451, 2767, 3043, 3235, 3193, 3031, 3642, 2816, 2656, 2011, 3444, 3085, 2555, 2437, 2896, 2681, 3333, 2344, 3011, 3581, 2198, 3202, 3818, 2947, 2934, 3525, 2453, 3265, 1942, 2573, 3368, 2795, 3138, 2542, 3366, 2938, 3039, 2987, 2973, 3300, 3132, 3727, 2540, 2775, 3013, 2370, 2597, 2374, 2453, 3830, 2847, 2816, 2902, 2232, 3695, 2634, 2629, 2992, 3155, 3255, 3736, 3678, 3122, 3567, 3209, 2631, 3012, 2815, 3045, 2492, 2976, 2822, 2405, 2080, 2906, 3659, 3419, 2951, 3049, 2975, 2659, 2638, 3404, 3498, 3149, 2212, 2078, 3256, 3670, 3511, 2447, 2725, 3476, 2772, 3198, 2815, 3566, 2449, 3574, 2847, 2509, 3707, 2561, 3595, 2845, 3346, 2955, 3120, 3228, 2425, 3536, 2768, 2966, 3054, 3450, 2589, 3015, 3697, 3012, 2519, 1323, 2723, 3196, 2861, 1383, 2810, 2848, 3236, 3461, 3179, 1820, 2522, 2544, 2438, 3058, 3224, 2604, 2450, 3248, 3105, 3074, 3892, 2976, 3301, 3063, 2268, 2666, 3237, 3040, 3272, 2952, 3213, 2673, 2550, 2572, 2739, 2764, 2621, 2783, 3164, 2278, 2843, 3308, 2386, 3173, 3162, 3020, 3471, 3217, 3145, 3042, 3061, 3155, 3182, 2451, 3294, 3215, 2666, 2815, 2587, 2997, 3047, 3193, 2516, 2435, 2769, 2900, 2804, 2644, 2723, 2754, 3102, 3459, 2919, 3075, 2445, 3008, 3282, 3275, 3381, 2018, 2990, 2759, 3571, 2361, 3393, 2984, 2707, 3263, 3314, 3070, 2759, 2333, 2681, 2745, 2309, 3678, 3084, 2983, 3635, 3577, 3525, 1661, 2642, 1984, 1486, 3543, 2886, 3146, 2935, 3030, 2828, 2107, 2653, 3186, 3539, 3390, 3336, 2943, 3185, 3460, 2860, 3506, 2655, 2814, 3004, 3100, 3419, 3222, 3392, 3169, 2979, 2292, 2240, 2861, 3096, 3702, 3143, 2139, 3003, 2921, 3400, 3951, 3315, 3656, 2097, 3156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3742, 3285, 3450, 3531, 3191, 3781, 3141, 3554, 3758, 3381, 3413, 2858, 3782, 2611, 2357, 3281, 2554, 2733, 2404, 1938, 3549, 2365, 3431, 3527, 3605, 3636, 3270, 3764, 3143, 3532, 3445, 3151, 4034, 2943, 3523, 2481, 3125, 3583, 3812, 2645, 2345, 2481, 3516, 3406, 3872, 3779, 3269, 2908, 2802, 3391, 3162, 3926, 3423, 3293, 3434, 2928, 3251, 2503, 3786, 3057, 3794, 3041, 3325, 2967, 3075, 3372, 3545, 3507, 3166, 2572, 3572, 3921, 2812, 3311, 3108, 3418, 2732, 3268, 3213, 3339, 2599, 2885, 2685, 3788, 2758, 3444, 3268, 3394, 3347, 3626, 3593, 3463, 3320, 2740, 3546, 3523, 3751, 2147, 2482, 3521, 3753, 2995, 3392, 3459, 3141, 3797, 3944, 3305, 3852, 2933, 2726, 3029, 2661, 2662, 3370, 2977, 3454, 3664, 3411, 3423, 3674, 3641, 3309, 3262, 2449, 3486, 2831, 2927, 2857, 2487, 3596, 2873, 3091, 3474, 3480, 2460, 2805, 3454, 3870, 2804, 3242, 2919, 2821, 2578, 3237, 3245, 3939, 3088, 2595, 2987, 3442, 3793, 3554, 3085, 3841, 2718, 2597, 3294, 3556, 3158, 3648, 2744, 3275, 2995, 3218, 3040, 2907, 3202, 3702, 3271, 3315, 2903, 3227, 3463, 3116, 3321, 2964, 3546, 3135, 3641, 3199, 3399, 3085, 3291, 3469, 3598, 3042, 3770, 3539, 3192, 3228, 2985, 2964, 3285, 2841, 2547, 2929, 2655, 3627, 3362, 1927, 2960, 3020, 3895, 2016, 3422, 2917, 3203, 3171, 2221, 3192, 2528, 3024, 3697, 2687, 3309, 3639, 3259, 2802, 3660, 3551, 3585, 2847, 3421, 3055, 2902, 3125, 3333, 3811, 3625, 3352, 3069, 2713, 3105, 3303, 3427, 3338, 3180, 3650, 2968, 3033, 2256, 3701, 3175, 3504, 3098, 3260, 3454, 3365, 3427, 3468, 3659, 2930, 3518, 3842, 2985, 3336, 3534, 2874, 3440, 2535, 2831, 3587, 3768, 3630, 3660, 3470, 3406, 3041, 3398, 3324, 3553, 3599, 3791, 3577, 2957, 3351, 2525, 2913, 2647, 2754, 3913, 3159, 3704, 3298, 2658, 3699, 3026, 2697, 3420, 3187, 3316, 3836, 3904, 3322, 3693, 3382, 2910, 3578, 3194, 3656, 2529, 3234, 2916, 2714, 2087, 2918, 3923, 3482, 3261, 3051, 3061, 2785, 2835, 3775, 3668, 3361, 2489, 2380, 3832, 3749, 3644, 2830, 2814, 3562, 3497, 3250, 2960, 3645, 2493, 3746, 3409, 2655, 3818, 2760, 3652, 3101, 3495, 3500, 3252, 3774, 3152, 3587, 3002, 3306, 3448, 3569, 3329, 3161, 3784, 3045, 2633, 1618, 3192, 3533, 3075, 3654, 3278, 3099, 3519, 3501, 3307, 2051, 3305, 2845, 2788, 3281, 3284, 3359, 2753, 3567, 3150, 3373, 3948, 3415, 3323, 3170, 2942, 3229, 3459, 3093, 3308, 3642, 3811, 2925, 3119, 3680, 2743, 3145, 2995, 3301, 3265, 2302, 2851, 3686, 2528, 3277, 3252, 3258, 3555, 3382, 3212, 3166, 3643, 3404, 3256, 2628, 3621, 3965, 2755, 2853, 3632, 3068, 3430, 3468, 3301, 2578, 3515, 3478, 3294, 3352, 2983, 2998, 3192, 3717, 3461, 3413, 2840, 3111, 3372, 3404, 3447, 2406, 3121, 3467, 3661, 2903, 3594, 3279, 3283, 3846, 3504, 3431, 2842, 3370, 2717, 3387, 2556, 3768, 3200, 3567, 3696, 3604, 3661, 2125, 2651, 2483, 1491, 3694, 2982, 3231, 2969, 3375, 2861, 2157, 2826, 3289, 3575, 3639, 3424, 2975, 3296, 3475, 2923, 3762, 3139, 3118, 3013, 3160, 3425, 3471, 3455, 3184, 3467, 2881, 2952, 3538, 3619, 3721, 3191, 2466, 3058, 3061, 3621, 3978, 3322, 3745, 2581, 3368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3926, 3562, 3906, 3786, 3309, 3815, 3435, 3571, 3856, 3761, 3727, 3668, 3962, 3250, 2950, 3738, 3041, 2836, 2682, 3312, 3775, 2732, 3678, 3686, 3830, 3781, 3313, 3867, 3783, 3566, 3608, 3669, 4069, 3335, 3854, 3106, 3187, 3743, 4046, 2712, 2587, 2689, 3520, 3472, 4028, 3783, 3457, 3074, 3056, 3409, 3975, 3953, 3601, 3364, 3472, 3771, 3726, 3250, 3812, 3081, 3821, 3421, 3402, 3068, 3423, 3575, 3576, 3621, 3309, 3063, 3757, 3982, 3141, 3617, 3177, 3518, 3735, 3309, 3261, 3731, 3773, 3086, 3493, 3966, 3032, 3550, 3691, 3406, 3374, 3775, 3894, 3887, 3322, 3065, 3552, 3634, 3798, 2413, 3779, 3716, 3784, 3272, 3840, 3573, 3470, 3952, 3946, 3325, 3891, 3070, 3551, 3400, 3517, 3447, 3763, 3599, 3868, 3931, 3474, 3568, 3710, 3647, 3405, 3884, 3217, 3978, 3699, 3158, 3583, 2860, 3617, 2883, 3452, 3554, 3854, 3896, 3175, 3527, 3885, 3339, 3678, 3548, 2833, 2766, 3653, 3277, 3972, 3353, 3027, 3516, 3538, 3994, 3633, 3737, 3893, 3488, 3079, 3764, 3859, 3274, 3670, 3856, 3453, 3179, 3554, 3278, 3099, 3487, 3827, 3461, 3728, 3881, 3312, 3533, 3242, 3611, 3338, 3697, 3890, 3803, 3325, 3755, 3461, 3479, 3684, 3786, 3225, 3832, 3576, 3772, 3816, 3357, 3482, 3592, 3279, 3208, 3150, 3427, 3712, 3690, 3174, 3004, 3703, 3909, 2541, 3521, 3627, 3820, 3224, 3421, 3262, 3760, 3416, 3785, 2721, 3449, 3875, 3420, 3545, 3700, 3757, 3718, 2873, 3767, 3548, 3458, 3253, 3408, 3903, 3759, 3518, 3658, 3339, 3240, 3590, 3852, 3628, 3668, 3724, 3150, 3039, 2827, 4050, 3484, 3570, 3426, 3817, 3704, 3622, 3625, 3779, 3780, 3035, 3613, 3908, 2987, 3451, 3754, 2954, 3677, 3409, 3147, 3970, 3789, 3811, 3746, 3785, 3485, 3236, 3863, 3642, 3915, 3655, 3839, 3603, 3363, 3490, 2549, 3602, 3106, 2863, 3995, 3687, 3812, 3305, 3456, 3740, 3388, 3117, 3710, 3456, 3335, 3930, 3945, 3362, 3889, 3416, 3318, 3614, 3548, 4023, 3437, 3834, 2929, 3177, 2372, 3269, 3948, 3902, 3396, 3287, 3359, 4014, 3191, 3945, 3871, 3472, 2854, 2808, 3921, 3985, 3743, 3591, 3190, 3681, 3646, 3755, 3402, 3810, 3647, 3901, 3981, 3340, 3957, 3001, 4037, 3449, 3507, 3736, 3419, 3809, 3458, 3590, 3342, 4023, 3795, 3726, 3354, 3589, 3921, 3563, 2697, 1886, 3769, 3543, 3133, 4047, 4055, 3111, 3826, 3579, 3552, 2498, 3363, 3487, 3270, 3813, 3625, 3620, 3912, 3578, 3476, 3487, 3992, 3798, 3612, 3220, 3361, 3528, 4061, 3146, 3874, 3823, 3916, 2986, 3510, 3722, 2815, 3405, 3264, 3670, 3491, 2387, 3471, 3987, 2732, 3549, 3367, 4031, 3752, 3467, 3360, 3879, 3703, 3676, 3551, 4039, 3724, 3983, 3618, 2922, 3705, 3610, 3585, 3606, 3344, 3710, 3908, 3819, 3708, 3413, 3560, 3407, 3291, 3761, 3487, 3827, 3058, 3486, 3642, 3931, 3573, 3269, 3533, 3521, 3709, 3050, 3818, 3837, 3669, 3873, 3621, 3622, 3380, 3382, 2819, 3812, 3593, 3905, 3308, 3801, 3992, 3830, 3690, 2825, 2711, 2870, 2300, 3849, 3178, 3703, 3320, 3928, 3227, 4006, 3158, 3820, 3577, 3849, 3760, 3230, 3342, 3907, 3159, 3819, 3679, 3538, 3449, 3321, 3596, 3754, 3511, 3555, 3879, 3107, 3543, 3627, 3780, 3793, 3964, 2988, 3687, 3338, 3938, 3990, 3371, 4057, 3955, 3825, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3974, 3664, 3990, 3954, 3568, 3915, 3997, 3682, 3950, 3810, 3929, 3732, 4016, 3300, 3149, 3928, 3917, 3714, 3610, 3871, 3914, 4022, 3923, 4079, 4003, 3875, 3757, 3904, 3850, 3790, 3900, 3818, 4084, 3876, 3910, 4052, 3395, 3786, 4057, 3865, 3753, 3082, 3683, 3540, 4083, 3856, 3957, 3216, 3267, 3858, 4054, 4034, 3976, 4067, 3669, 3839, 3763, 3509, 3930, 3348, 3891, 3550, 3554, 3608, 3786, 3738, 4032, 3923, 3361, 3921, 3779, 4029, 3181, 3931, 3709, 3872, 3964, 3360, 3853, 3861, 3807, 4023, 3622, 3997, 4021, 3807, 3881, 3735, 3918, 3869, 4006, 3948, 3427, 3109, 3963, 3656, 3993, 3950, 3878, 3883, 3842, 3901, 3947, 4045, 3844, 4010, 4092, 3731, 4007, 3621, 3920, 3730, 3811, 3464, 3819, 3701, 4088, 3981, 3669, 3597, 3756, 3871, 3431, 3899, 3310, 4042, 4079, 3220, 4007, 3614, 3883, 3194, 3531, 3715, 3962, 4021, 4079, 3702, 3980, 4064, 3850, 3777, 3218, 3590, 3777, 3909, 3986, 3611, 3078, 3547, 3577, 4028, 4096, 4073, 3960, 3933, 3090, 4000, 4053, 3324, 3887, 3886, 3817, 3344, 4077, 3739, 3972, 3906, 3884, 4047, 3851, 4076, 3800, 3763, 3853, 3722, 3752, 4086, 4016, 3978, 3963, 3781, 3839, 3799, 4004, 3938, 3543, 3973, 3952, 4045, 4054, 3750, 3905, 4024, 3940, 4088, 3477, 3879, 3757, 3926, 4012, 3622, 3787, 4072, 2816, 3919, 3746, 3882, 3647, 3624, 3576, 3889, 3502, 3918, 3867, 3651, 4076, 3939, 3559, 3710, 4064, 3791, 3512, 3906, 3990, 3860, 4030, 3787, 4063, 3946, 3605, 3810, 3439, 3610, 3769, 4066, 4040, 3674, 4034, 3358, 3624, 3162, 4088, 3970, 3822, 4089, 3989, 4054, 3871, 4081, 4079, 4054, 3301, 3691, 3970, 4049, 3620, 3852, 3103, 3842, 3908, 3299, 3991, 3803, 3891, 3980, 3853, 3872, 3729, 4018, 4069, 4036, 3714, 4079, 3986, 3816, 3869, 2873, 3969, 3130, 3088, 4002, 3971, 3960, 3777, 3473, 3749, 3460, 3503, 3855, 3680, 4068, 4075, 4005, 3786, 4084, 3548, 3907, 3816, 3558, 4063, 3826, 3947, 4070, 4078, 2669, 3865, 4004, 4081, 3928, 3762, 3480, 4032, 3514, 4050, 3891, 3730, 3120, 3170, 3956, 4076, 3845, 3775, 3378, 3697, 3662, 3871, 3749, 4089, 3923, 3943, 4095, 3833, 3995, 3885, 4047, 3640, 3562, 3904, 3638, 3871, 3896, 4086, 3996, 4071, 4078, 3755, 3430, 3732, 3978, 3685, 3909, 2781, 3874, 3868, 4061, 4080, 4086, 3355, 4009, 3799, 4015, 2876, 3569, 3659, 3813, 3920, 4021, 3634, 4037, 4002, 3599, 3573, 4061, 3898, 3846, 3407, 3584, 3722, 4082, 3583, 3894, 3977, 4034, 3886, 3598, 4070, 4033, 3748, 3857, 3714, 4002, 2449, 3852, 3993, 3370, 4064, 3933, 4058, 3878, 3998, 3438, 3950, 3760, 3738, 3766, 4060, 3830, 4051, 3649, 3993, 3927, 3618, 4065, 4049, 3882, 3795, 4017, 3872, 4026, 3835, 3758, 3463, 3700, 4040, 3947, 4052, 3718, 3997, 3911, 3941, 3933, 3615, 3887, 3807, 3736, 4005, 3903, 4043, 3842, 4035, 3914, 3808, 3925, 3566, 3434, 3952, 3947, 3960, 3755, 4085, 4008, 3905, 3763, 3072, 3078, 3406, 2992, 3976, 3638, 4000, 3443, 4095, 3844, 4061, 3636, 4084, 3665, 3995, 3817, 4079, 4062, 4045, 3587, 4096, 3986, 4026, 4017, 3834, 3816, 3969, 3906, 3815, 4071, 4083, 3934, 3953, 4086, 4096, 3985, 3756, 4008, 3548, 4004, 4000, 3636, 4084, 4051, 3885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; const float H_4096_8192_3d_input[] = { 11.852162234851706, 7.0103776711404908, 3.6619359861492673, 9.1155659337359651, 6.795951531382654, 8.6693010702449591, -8.23827897319795, 0.53165879290715867, 12.37912440997912, 6.8418050353375426, 10.802319289914337, 11.0638091710385, -7.7866481722334679, -4.8420100015139598, -6.8818670299223434, -8.2450578579286891, -7.2246894597896008, -13.815987133628951, 12.234902365241059, -6.9198331467931302, 15.160223910436569, -4.5765959155807234, 2.1484900276377519, -4.9196084573928518, -16.426663730230732, 5.8977022766980651, -16.030910288790917, -0.24586731175381885, 1.4726914953126813, 3.5871240318927358, 15.458510455388435, -10.98031892270658, 6.9279611100247118, -7.933561985282596, 4.3891940661748912, -13.812675339667404, 6.7914919672067642, -12.203132891070263, -12.317652041719844, -8.3021764626005385, -0.77739811052311958, -12.432640728863277, 14.289974286204039, -5.5150189346697038, 11.547145236606516, -5.1736147941182464, -13.447736295418046, 10.413127356393893, -2.6729465454008059, -10.729411552653465, 6.5555201942237238, -11.14433713195789, 13.458451742879602, 9.6447015865820465, -12.302090740163194, 9.8687463840475296, -10.637342777071272, 7.1778509359003975, 6.8268531761459119, 8.7068281158836012, -15.40339167220862, -9.8296506950508089, -15.280917762828489, 10.102496828664545, 10.037807270690561, 2.4867958468392133, 1.5319150444766332, 2.7112921117745921, 7.9889723896025524, 12.905833618771201, 11.00245683272405, -8.3107418252762226, 10.705033599923738, 11.912486445703268, -8.4081265077051892, -8.3025042540547016, -5.9142638277949331, 6.867038040093588, 3.1567085236762717, -14.534241677148046, -12.01689262177565, -3.8412916991891328, 6.3786080585444953, 9.4837369133142211, -11.075276289896468, -11.925721231361601, -5.4124139821564548, 8.2303728395014968, -13.750199366192035, -4.3314232665367056, -3.732456805346037, -17.295039854808323, -15.232902687351071, -7.5988314451312435, -9.5932544936015738, -7.3591078974534163, 8.6527118214619172, -10.608033142382668, -4.2032772324090244, -6.5085189200544926, 14.134044288331616, 4.4085632854650365, -4.5210532847247746, -8.4975231327737504, 12.277990534144504, 15.150130037398975, -10.227258018348129, 17.948861291429097, 7.4173114502152595, 12.362776847751627, 4.8547293037318235, 6.3837603116600432, 14.087489189989547, -1.9380985184061332, -7.9696678961374925, 4.6059836342656899, 6.8183217574223667, -6.8901903967415219, -14.325821680951959, -1.3621121662714455, -11.149847668005521, 5.6833891974043862, -17.398485016935354, 6.3370092934725513, -9.6926235420538767, -17.960802334972445, 13.547835590566937, -16.451894282762098, -7.5577889478681159, -1.0982925426375461, -5.7669050004987508, 11.375367155954425, -6.4107510452532788, -8.7207638586733562, -9.1539348930425479, -13.633137903872361, -7.0081337564945265, 5.4180605521415544, 2.9680844338645205, -6.5310659644000255, -8.2872761646593993, -11.760139277151676, 13.382166905042041, -6.0047682130962281, 3.2451347130941364, -2.0983582950687798, 8.0680309516812514, -12.377986061470123, -12.358162277163119, -5.2920128479525648, -9.202112202542164, -5.6654376221077563, -5.8110927985741485, -4.984676819547551, 6.3016022666512397, 10.38212336351639, 1.6487659492093847, -11.063498383826518, -9.3364733355871579, -13.426754544804615, 7.9359711669654969, 7.0591108612555526, 11.63486957350829, -9.0269661526237055, -8.6632957575356464, -7.0684291859722208, -6.9541491917610934, -8.5499008046873524, -11.95275094242079, -14.577751370567405, 7.92565420601432, 13.265770899061641, 6.5227249157502625, 12.649384608136366, -8.3035216691676741, -8.4837140909479327, -1.7621082901418452, 11.064948293934235, 9.8955732057806269, -5.2006112065475802, -16.609541870425645, -4.1563385545013416, 0.91112171860938895, -12.709318786199471, 6.9261739544913699, 15.622947349737608, -5.9748260335048391, -6.2084520599854978, 4.5326675370634977, -10.190200128059862, -9.0182739518530965, 7.7990243565929234, 11.016287638043895, 7.1274548793238948, -8.5088898394843291, -6.3753383395958672, 8.4458247674289417, 7.0899296466375441, 11.984742407457288, -8.6997143935860084, 6.617717259407943, -8.6211765783576588, 8.0571281026284201, 8.2215638031313709, -11.853165323809973, -11.220981285243187, -4.3770395500199921, 9.957777885767797, -1.5614058322047073, -9.56164241353585, 7.3792373063941277, 6.9920671675894948, 5.9799488599242361, 1.461883121442231, 11.700348102506707, -5.2194626192370359, -6.0603567908988003, -8.1431285255806856, 10.93990987379744, 9.5381901110903051, -11.466961877786789, -10.507751479156317, 14.428027308035865, -5.4370273484553913, -5.6747013525591967, -9.9762942471273934, 1.9692091719828315, -8.4206281749827721, 6.8899330422146594, -9.8324002842385241, 0.66168400552588214, 8.6516044033634287, 10.65559107155409, 9.7754600143798633, -8.8306105049263834, 6.1770006762428427, 14.456377606617053, 2.4403104433038201, -12.633954694196738, -12.024403140645889, -5.0527916191406135, -6.9352208566553832, 9.4384867856948844, -13.373923816314992, 8.7356124420999599, -9.5270461696321664, 10.480812629474718, -3.4687409495354067, -7.6636427108879923, -10.896129661276621, -16.064091728119134, 22.476534329946553, 12.460754581359602, 12.087618911587649, 0.51377717054611638, 5.5500395425073492, 4.9591318659994164, 5.5053463280191135, 9.0332303928329463, 7.937396425761964, 6.6491955641641933, 14.874164932122154, -11.391128249290208, 3.169135882092851, -1.8400528212873013, -4.0964252848802376, 9.4117328208476536, -12.593571458178959, -5.1728063343608373, -2.0242804594425396, -7.1426529934991043, 6.622101708069974, -16.392117821465206, 9.1077195568830138, -11.835790666635249, -15.065298034974141, -8.7710386430596365, -0.30877893122877215, -5.2306016562458142, -1.1863392825524115, -17.232954172250324, 4.4787746080943949, -4.081066098262939, -14.903892606586338, -0.51135806197439337, -9.974082856724543, 10.97578876027282, 15.2893043712315, -11.13092785115396, -1.9074874511930142, 3.2050565854522359, 13.289562124770748, -9.2824501805811419, -0.86689339429455436, -9.4077211103368672, -1.0128498072031238, -11.424484441892933, 13.505559237096781, -14.111275253120381, -10.426533281521948, 0.36688942851726047, -8.5830248103322884, 3.8345302704261743, 4.9414391940031317, 8.9432236478109655, 0.055208574238455675, -12.115262711332303, -4.068136420980486, -11.843343002389492, 10.583962363060127, 11.130757227942066, -7.3409476249301377, -13.416870788702695, 7.6236503465776373, 10.072515155349375, -6.2216809086788194, 9.8166429337719912, -5.3031299440036861, -6.6235012830395386, -13.764819271600768, 3.8557639548592864, -3.3181185983845203, -11.243059309352699, -12.611089376900733, -15.897667241135203, 8.8329589779154141, -9.135706506752193, -11.422564479033543, -11.642579626028745, 3.1132478747504968, -2.1434978144486383, -15.934518757357043, -10.557115149142858, 6.2308860438668718, -13.739105501743138, -4.3915587851524212, -10.419872652099752, 8.1112198553932267, -8.0273906192655193, 5.2239517391735335, 8.0434155203510045, 7.5842021180171599, 12.631932512287561, 2.4859951309492123, -5.4847073726029469, 2.908656446600995, -16.092641302221626, -4.1982700477429225, -6.178163729520965, -10.732042015347554, 8.2982728113062105, -6.8665949618133846, 13.57740270884686, -1.2643195110945262, 9.8022838676304502, -6.4233691609370105, 3.8242562234068851, -5.182967579044881, 7.0944436760142038, -12.324612229746279, 12.794879744676324, -4.0155602075996786, 12.511504532676657, -9.1320095199193183, 9.2556023858738161, 11.631662838014581, 17.216281625720601, 7.1659577752705221, 16.051548211691429, -8.7388242030409558, -3.4004503641521802, -1.9946663617003413, 12.023458388822098, 1.4700405113699626, -6.9181864133887903, 16.791392657544414, -8.6631176405187311, 4.5674127213503288, 10.664528010800908, 8.2944988052587405, 8.5825626385790077, -5.6427914562593999, 4.2779399881534923, -10.175893849281154, -7.2192065435357264, 3.140283780903613, 10.837060473203007, 6.4038543569395916, -15.819883190567426, 4.3940223675038643, -18.036559041052769, -7.8147548616524434, -2.6076616130875916, -6.4742631481878554, -3.7958217747998599, -7.2948016609161348, 6.6323878871482016, -2.255281573000754, 2.8842198986078764, 10.659970486702305, -15.569498144370991, 11.390070437002256, -2.9482405155022557, -13.376525755764128, 8.682108767499308, -4.9454187674641732, -9.6031277309502645, -10.196124831949369, -9.0217868605044558, -2.5107837667804862, -14.858770639972604, -8.141178103509489, -8.5471398578274389, -3.1869173504354151, 8.8957282181027519, 13.358898132254073, -4.9187666990055874, -10.228703540264316, -12.346941929546555, 11.554539081207805, 11.957225349009214, -11.472723315138442, -11.539223260247994, -9.694197741233495, -10.814894685262868, -13.686233988885167, 5.7377733456960787, -3.3230070437503634, 2.2490730563707366, 6.12847572055448, 2.3536601808115556, -9.6767432576922392, -10.954820690491808, 11.86814480279536, -9.3155290781984252, 14.141162451253175, -1.4111009040109763, 3.3702115944390596, -0.98701110295130623, -10.652104782446946, -5.6828295739196912, -4.0663135145926104, -10.095528767706245, -6.3121380563889229, 1.9120925466183012, 11.360542554317204, 21.042270964456723, -16.659873911031575, 11.603621003485147, -9.6777504121808953, 1.7207302252910317, -11.29409320247472, -11.180036360709401, -1.1247306222267544, 6.1904287248508867, 10.210101738234316, 7.0486975536873739, 16.031938158124891, -8.9308814719358764, -12.431649255706118, 16.692435840967139, 5.2357717202564009, 12.423164816444851, -11.250581960281878, 13.430914550376267, 15.343462914852701, 7.8079002483516744, -3.6709333275618681, -8.8629125797112316, -14.31120951941063, 4.3406926758242452, 10.463301680233609, 8.6489346124984543, 11.191263935935545, -5.0521803698731969, -10.333058606811804, -8.5400809112919642, -7.1779877442246081, -7.6103785194202018, -5.3417155702671248, -10.451403615154376, -12.172717561180237, -4.0679164951460942, 6.1506735164799053, -3.6440853392578565, 1.9433343296831092, -5.4755600582915411, -16.357475888743817, -16.517778074154876, -1.2039643247733316, 4.5018459122634571, -7.0744532694934668, 5.3770800058176924, 6.282466912156818, 8.3610249181869101, 4.8986050239506751, 5.3280071180523274, 6.1464146475343426, -6.0108406957887768, 12.755972489786537, -8.4578495576716968, 9.2571030183130549, -0.90434384520253952, -12.986580731138242, 9.9535150158240739, 10.827528804939245, 11.747515740760758, -15.16087284652537, -13.087386783252583, 10.629311095924464, -5.2148823797940365, -2.6329597953943216, -5.5467525289215098, -8.8404156607741093, -5.7853062363628798, -9.6115554463827682, -18.889969367477391, -4.2325934493849227, -10.285889677913188, 4.5969906810446215, 0.45378395656837561, -5.2343788566385898, 6.4724226890338548, 6.7928342375575088, 7.8077790568267371, -2.6568661465988948, 9.4096509466272025, 11.669118375894259, -9.9553406325655409, -6.3303387260871826, -0.34466246402459871, -13.691429091400373, -13.156577206028633, -6.1513694320309815, -7.901802513607203, 12.221162679427714, 6.649236864790371, 13.317311499241065, -5.7970159963996366, -17.357823517948706, 8.270939734241308, -6.195066527041619, -12.849459296555617, 11.652018884141436, -8.0449214444329744, -4.6951452329584145, 1.7769542408723182, -5.1632932513788541, 8.212354634679043, -14.191579158142765, 6.4303208307092943, -0.90871698965024839, 10.606516635015241, -8.1011311449339072, -10.243987353238843, 7.4591880910627006, -6.5152549231194605, 7.7121540392018115, -4.3569532486078533, 12.00591388282222, 2.4746766943454785, -20.087190886572834, -9.1172366408631582, -6.6238587915848806, 17.914330870398388, -1.6868311119764172, 8.0132561252788168, -4.0467870947940794, 2.3260501959545832, 8.1309552950795503, -2.8213887397473871, -8.8621258027825629, 6.8177161869910501, 7.8641580898949943, -9.1469397285483218, 9.0967720192620156, -9.3166140585545332, 9.4569551350765515, 7.1007118204232631, 8.3756462433046686, 4.6694993510050598, 7.1515263039687182, 2.8523595630594913, -3.4741239698997162, -0.10995521113142948, 3.9540238233698299, -9.1534225071490436, -17.923208439995076, -8.8636707688627148, 14.965752168216021, -10.23555118408442, 2.1282088388958402, 6.7125800223509948, -9.8693908028803428, -12.187767767487951, -5.8471084933737414, 9.6931543841647052, -13.672759143337181, 12.706659800260432, 1.4726006339350921, -7.3467125470221255, 0.60736645449389881, -1.9027817610980031, -8.6768604500952566, 5.1654956072697278, -7.8451284391906944, -4.957748036893582, -13.397215304447361, 7.0040349274753995, 4.641473004210444, 5.487007301223163, -9.6273581630058676, 16.374185605837095, -9.7342921955291786, -11.365160222452676, -14.203028207976782, -10.151383734547659, 13.628501908584022, 12.709075886891771, -6.6936152910684665, -6.2279802866864244, -5.3628359361071647, -2.6913495881673302, 7.1138952384277898, 4.5472848611830976, 10.538614146453622, 3.0027041674993393, -4.5129950162998655, 13.929432209869022, -14.334414792485857, -7.6430080791311292, 7.2113454856008135, -2.5473048779929162, -9.7982912586592725, 14.20003752638376, -11.43779305242056, -11.788928136757081, -9.2702732072107601, -7.4402405253529276, 2.2577745820483472, -4.0065489272257437, 17.327253826968342, 10.564656643482731, 4.9362649999299286, -9.6827658569722317, 8.5740726414795692, 13.972819550183335, 10.142649942755849, -7.5505089381177264, 6.696698382812559, 6.1350463920502829, 7.0980567064179256, -7.1739648051060803, -4.8241454156612136, 11.523185452716827, 5.15143919727939, 8.2887451440406092, 9.3194658667920365, 5.0752787775781885, -3.6974163215820433, 10.009475686455609, -5.0500616477503311, 8.0495440815500334, 6.9634210532733123, 0.74952844797906104, 9.2888896580566058, -8.9836598970543786, -11.976984601087814, 14.180425924043737, 9.5949237487536259, -6.9806176014976495, 15.203989667738226, 5.493621596505367, -7.6955098868525882, 9.5564647992545364, 10.079356604075551, -10.960076969559537, 7.2042424232206992, -14.531624249964095, 6.5286867902033308, -11.463904598934056, 6.3615813591453119, 11.416387712259898, 7.0427168358236125, 13.822852330215177, 7.2746500528888527, -8.3450266043795249, 12.806608348123776, -8.2535126123648936, 5.8510702559397432, -11.72864058021125, -13.525703617514484, -3.4673986791846629, 8.8257475497907567, 8.1617848896097982, -10.511226281526806, -6.5898403692543042, -3.2708944298983913, -8.2863826836910714, 4.3118003065244856, -8.739126028339717, -7.266249505524506, -12.722343971179958, 11.857858107459306, 12.911981733235436, -10.65461960338774, -8.4472396688027516, 6.6651405743509189, 11.580579384141151, -7.476951619445769, 9.2634695098381989, -9.1478306927597437, -7.8825061512029215, 12.660129998551898, 9.4635781422095882, 17.727946307041069, -10.471079620658342, 13.465213687900388, 7.3119927884332858, 11.463991072120113, 6.9772621837497031, 4.4282053470168625, -4.8042111521791862, -13.26622055962914, 13.184702932454989, 5.8920985561126233, 4.9607673707960149, -6.2145046667516981, 4.9892348599039815, 13.386955196389408, 11.050110269593503, -12.670345450307799, 6.8919385748089095, -6.995509703845781, -2.1490703014355343, 4.3577224727703934, -2.687681135653762, 9.6117562706775512, 11.440484820731625, 8.8717842123429058, 10.901792493383279, 9.9966531326723, -2.166562149137035, 10.759372446591094, -11.145782653874074, -13.643983964564196, -7.4947536090369651, 6.8729516444398113, 6.1255906136871214, 10.286427618569139, -3.8954533403572982, -15.009404348795689, 10.416272528141709, 10.773417627973688, 13.473131534196293, -12.269492414050813, -3.5818855637200442, -2.9078381779448681, -9.3090084191796318, -10.106912381860665, 9.8707437855810021, -13.277992270605163, 8.2476749947176113, -8.8274321958792843, -12.638876954450266, -11.37387078264226, 6.310839667953493, 12.505381714845957, 5.9770606555099137, 12.571542220434118, 9.9007684373602896, 10.053443429632159, 1.5818774444782795, -11.202245256178113, -6.3338053973968904, 10.273087000056226, 6.3747900737833705, 7.5548325974206021, -7.5617215418668815, -14.246992208284086, 3.6218243017485983, -8.5325540980340548, -2.3238622952828707, 14.565041102861516, 6.4324516848911006, -11.086714498316114, -7.5045302416397384, 5.2026398416795994, -6.853203104711123, 2.1843689141131324, 4.5710236867227421, -8.1096546261933575, 6.8516131596677754, 15.749131604121894, 4.8170171857120234, 12.738222513171431, 10.237566783706301, 8.4519598141169237, -12.480409549357107, 8.8391211926715538, 8.2890453802332456, -2.4407905630831244, 3.5387036940209624, -3.6252104368372637, -10.758160531341717, 15.757385534263314, 15.300017753661741, -6.4977207422761278, 14.316071119369459, -7.6509169554472871, -14.240089324876473, 17.946531936112731, 0.21891599627778507, -14.327642522308526, -10.198438570466465, -6.5254022288421698, -8.9170677031243279, -19.733600738139021, 9.8575790819227116, -13.439453971096134, -8.08549743821699, -7.0580010359915093, 8.309267780115082, 11.234207036389543, 6.0726783164608014, 15.587458237921769, -7.0535490866185722, -4.5092092976529417, -6.3389155754995201, 8.8389289188970324, -13.748748681697574, -10.541386063792364, 3.1701281296367463, -14.503520722624311, 11.450835790167169, -4.1646167487606398, -8.4877909951424595, 13.349350976255494, 6.805877878755318, -6.0136669492638335, -9.3639356707055494, 7.7593202577468361, 0.50113711390472682, -11.966738431991194, 12.724874408920027, 3.5582910322431047, 2.6950418641475302, 13.624278919557449, -14.882267598720199, -10.522071180638532, 10.177398998976383, -14.988145883986871, 12.749221128051207, 16.9417703024852, 10.798411089097906, -7.5603646872325196, -13.887620488443355, 6.795459150479954, 8.9187603996083489, -2.0975322825452452, -1.9757625488414245, 7.3999518935819824, 0.55507580729811956, -12.499441910415001, -17.623680811226599, 4.6027405025951635, -12.851870220608683, -7.3653468732952403, 11.972212571862007, 5.0650581632440161, 10.184194371691481, -7.4685323577351861, -13.91941422673203, -3.023728251254604, -7.5331742909246113, 6.884248527279258, 0.45905900344021811, 7.9221026748242638, -13.738522130398389, -7.192484909334925, -8.6492261161697765, 13.362572855468146, 11.756208490055306, -5.1379560916061688, 0.79142269505050344, -0.76803621547792877, 7.7549707855525991, -8.580692212271444, 12.55718276709921, 13.824515712934444, 4.6771582940006207, 7.5690824104994574, 8.9468688797966607, 15.149701027144566, -7.5543759673724367, -15.762504230620095, 6.0226666138366562, -14.441395804471442, 10.042802710491094, -10.413666974887784, 9.9977859314096555, 6.661089886374179, -15.232744712455945, -0.29385443370198283, -7.6550938684627798, 10.155100661839109, 12.382405486599948, -4.0908481515728976, 8.2741386936014951, -13.144677979369291, 14.828710495467698, 11.928398028195682, 8.6295134545955268, 8.27163552072793, -6.1797837465827472, -6.8523963227916527, 10.235531050029158, 6.3420892704922895, -18.986839986174921, -10.031153094491204, 9.8664552318103755, 9.0490519851328521, 5.8122608319082092, -9.9313476791104556, 8.9233711466623227, -11.063483670478442, -10.506601643910665, -7.8199885544402337, 10.624711496812944, 11.535453029335885, -11.086350278419017, 10.274989797342863, 14.174471922522534, 14.369396939115374, -8.8582757132378074, -7.8522922263977346, 9.1770638890238008, 4.404279119885941, -13.44742860575303, 7.1166789006321016, -5.4330041512079497, -15.427562347420725, -3.6868407799916638, 5.1866180381410762, 7.6709901568170613, 18.345854267912042, -4.9003530729536049, 10.468660952737869, 4.776982165598695, -5.6287843488915614, -9.3412091622328344, -13.912648151648625, -9.5237512831144624, 13.450520990138015, 13.396914326134098, -3.1904784969275046, 15.798741916285385, -10.810269144195532, 1.509656071998684, -13.878323717490971, -0.20820114068063908, -11.747048527427133, 7.3833991188681747, -0.87088303478322637, 7.9643245630936503, -4.4926178036020943, -1.254207052775153, 11.483542272294349, -13.148499319806293, -6.136615041458259, -13.927479206508691, 5.0953914081395162, 3.6709312625305595, 7.957426713199852, -3.3451767036242064, -10.759041525323852, -11.394330854721302, 10.015078374525395, 3.3832848670040567, -9.5028638140867212, -10.033492516835205, 7.3632139540821244, 12.599386844473557, 9.5584005725098873, 2.798264002893208, 16.990209741896582, 18.391755783844861, 1.4510639061574093, 9.2270278377989303, -5.0621183330469739, 10.261183127076439, 5.2327787155031551, 3.9453000986056503, -15.583642576320866, 8.6770041976506533, -17.128999463647837, -11.871728406502932, -10.394587892496528, 8.6180369341985319, 6.516417535746335, 5.2913995336538404, 4.8920041513719799, 3.8949061070604571, 13.054505805979804, -5.8996637983125462, 8.4678526015978157, 10.839440938044268, -6.5759334159049434, 11.749783919524603, -8.3008136710011637, -7.5878550938702638, 11.049012705452856, 4.3126061849927586, 5.3560587614804769, 10.023853466943383, 11.37326701911334, 8.8843983915607065, 1.540899479443554, -7.5465559519347849, 18.054805657697649, -2.0115237285322016, -12.814863310780851, 10.300533589310888, -6.3500042773701466, 14.22332127064872, 13.779487188987437, -3.7179509929171135, -5.520450741398685, 0.51276478894695843, 8.6235352232391911, -7.7774452311411801, 6.2272696577872706, -12.717758311029774, 6.713094215146894, -13.891940533941439, -8.4385045057010863, 3.6768186667920526, -4.942185960950189, 8.5164419735753558, 6.7067488901926673, 5.8779092097317802, 9.9041099161469006, 8.0396297371718521, -12.470612524570162, 4.2414224907458538, 14.417893166887747, -10.589000910389235, 2.3567319148834502, -4.6520348649684005, -6.8229956976610051, 4.7579072132700571, 6.6876842630205742, -9.5112615220330188, 9.3965638107074518, -12.652626449162325, -3.6137257652131685, 15.100829996189638, 8.0278764178809237, 12.47343748740065, 4.6779711419495627, 17.406972295614676, -12.638777832947442, -10.07196559889231, -16.201071966186017, 15.766943531676265, -2.5337629189273931, 11.037478731206264, 8.3935660687449261, -3.4843112856040341, 5.7667317959977229, -5.3151466193187202, 11.549579134132895, 9.5716752390853728, -12.665556642702606, -1.7511867802006553, 10.985055588271223, -10.741148932483979, 1.4019719168524369, -5.2045187620417268, 11.520370040656143, 3.4924841632665826, 8.6752981268622982, 11.018478120004746, 8.1489597222712415, 11.29111284603824, -9.6803162781143506, -0.69125945953762036, 4.8185876420223934, -5.1333637201042297, 6.5442549321761927, 3.2039724440150965, -6.2844002977197171, -13.943989648080665, -3.6481612704102528, 5.0868961274638762, 7.3942765422230146, 7.3315403748027332, -9.4483165283216302, -7.3124139257558314, -8.6128026626373195, 10.91457529531389, 1.733227719165531, 7.0515524594718402, 13.652369540451556, 10.898954365978197, 9.2234193891834249, -9.2875331260833853, -10.685830486589493, -9.0127297945144704, 11.035103945201103, -7.8322667143447484, 7.4267534186815451, -14.484459451128094, -12.892365226446056, 12.400895260681445, -1.3610327467613308, 9.3710008526675921, -7.9889220544643997, -14.066078429121703, -11.572131599185612, 9.4125317298352584, 3.9802853427821323, 13.552578451225509, 11.769160366424329, 3.7460148440107841, -8.3276216170574511, 10.275676549317508, -3.4534581690765345, -8.8116083610844402, 9.6112860243291927, 12.035762619746887, -10.750923241926531, -11.412270039830078, 12.675791970384855, 2.7681940494895843, -6.0352888595830061, 14.728012341239245, 11.069071903329069, -2.0294905334347346, 1.7881059261978625, -13.11079855945869, 2.0016203546328484, -11.03896297245949, 9.6728784225332927, -5.356139039572609, 14.758199485169646, -19.306747408930303, -9.747547631500602, -2.9278803393127815, 10.631512677428598, -11.505058349758947, 5.6196809164954686, -13.515125494634967, 6.3402475206937208, 8.7001279685380375, 6.7967971617036218, -0.61466117759236438, -9.6918272788876365, -5.7814172661505134, 9.7193625354241195, -16.906686969321548, -7.5235604086018659, -10.199947204902026, -9.7936604259492075, 10.01674666169402, -13.651634389305608, 11.544416297731889, -7.802468828816064, -0.47286071579940786, -10.284350842394733, 1.6609289836184331, -17.147457229744042, 13.226952440518131, -4.6840531754119121, 15.962355895657987, 15.585997744528594, 5.6171915212526669, 8.1922569110624757, -8.3396720427279387, 4.3655115127384114, 19.088815362267884, 11.244495022370169, 5.4582347037393157, -5.2064921575862328, 5.4611195524777605, 13.265834398774388, -6.6027106768866277, -8.3567593701557072, -5.2100995091538564, -8.872279835990085, 8.8511624708986645, -2.8415032528176893, -8.90721966561083, 8.6092509418838414, -12.794506748396167, 4.9154587769777436, -4.8718835188143297, 15.736412560032944, -8.1284028841157152, -9.0115555660864839, -11.572722456268854, -11.54267186253375, 6.3231823600864097, 13.698252471102595, 7.4397798943065991, -7.3874140559903809, 11.957330149348136, 16.578828659769322, -13.447758494504617, -8.3867453187310108, 12.858858544686701, -13.679184488254624, -17.989097393966127, 6.9729467845720619, 7.1557629738277102, -3.0150050427482507, -3.4241894478207389, 8.9891730143911452, 5.58684640242714, -2.4252419098432401, -2.3220109947144993, -10.153271947550676, -6.4440956220548893, 6.4637660777872128, -11.98185730058993, 4.679160341854538, 11.939393545528494, 5.673039776742324, -9.2794663394043297, 14.620894004671618, -15.198717126548939, -4.0577596386535824, 11.246729386246329, 9.248388521657537, -18.067138024674023, 12.088146785215971, 8.2659830137778165, -7.5472358634932197, -15.294952231861169, 5.6915318739840428, 7.7225018465581643, -13.5239318206515, -7.189678144592845, -7.1572966467678922, -5.1603147018447704, 4.5948288513931832, -6.6943032046232229, -3.4953462966606299, -12.323004086614523, 4.079938074910487, 9.0295814179780045, -17.116687230726722, 9.2253574210667679, 3.3356620718687418, -3.4843562000350015, 7.0034196772098234, 9.1169590232165749, -7.6022819833838513, -8.634002290186892, 15.757020023721649, 14.56916548664309, 9.8166793299488067, -14.012585858097601, -16.303460348540753, 6.328706318837547, 10.356673659537377, 12.957932809919667, -4.453315353345574, 13.89076036854844, 3.3562344300251992, 10.837065377652365, 11.946045527632085, -1.9666919744239404, 14.882311996893341, 0.87293515964638224, -7.3995595376333032, 12.740578972023727, -12.286008018201061, 1.4725257765501467, 11.51005572552633, 2.9456158607087239, 3.1894702453909649, 5.6935460538968989, -5.1304463471226711, -4.3501309014212834, -1.3570596265231303, 12.169493014791488, -4.8125938886484949, -11.812988590923077, 8.5953572216745684, 11.547929174117135, -3.8475647480475508, -6.0916817670803702, 4.3949441458543461, 10.708986715171134, -4.9176921083382519, 6.9845454201115134, 13.211641265878763, -8.0470742395724351, -3.0286311518396092, -8.1094174702539839, 6.0130079461473995, 15.048154145048182, -6.1061849982201561, -1.3184724514862096, 13.374931551593706, 8.2757038905352509, -11.896200834415041, 0.54178209264090349, -12.548924448766257, -8.9496731923140622, -0.18895807082266591, 15.161251263512716, -1.2114640022291989, -5.9797180926754736, -7.4864095919046978, -10.395424746434434, -6.2601439237082941, -0.78388481451542258, -8.3179201645007659, 6.6459706305820747, -12.923380447931299, 3.615294672750057, 11.552240701361072, -6.8065229429104148, 11.514049754206534, -6.951551124245662, 7.3756260828927998, -13.184709643806741, 10.708471747988494, -9.1265574178045057, 12.95334276157795, -5.9328741480790832, 8.5189835350582932, -9.6064834713593523, 14.569174263026152, 3.6101279644153479, -14.407362539728334, -9.6916542679832922, 9.1021824980895101, -7.7838634129812734, 4.6265281144994796, -12.811796997416144, 2.4737443327095394, -15.765944056522786, 13.810646962664299, -6.6826075126122557, -15.214618900142634, 12.384568606895954, -5.113057234728787, 5.4752854091274656, -6.4734766293881032, 5.3882128477325431, -6.2935902033018669, 15.281124782217196, 10.227168963872938, 2.4002256043101666, -15.970147775044056, 3.1440767271601184, 6.7732778748049984, -18.043555367127105, 6.2587742916927098, 5.073341261952673, 6.8434249233348678, -10.146405202190969, -7.761279649797781, 17.122835345190957, -16.71550688700729, -6.6392405644821197, -8.2855465718737928, -6.1015327408102618, 10.509447644247613, -6.196253145657459, 6.5915995178005184, 6.6493068177259573, -13.418767003702035, -11.838590849090032, -8.8536466551640238, 6.7441440259065617, -11.233560165332051, 6.2511143161814928, -12.561411951219709, 5.6917742570339165, 6.0195651949396973, 3.1302245727470228, 12.399852677999395, -6.1013696033368623, -4.560197760086167, -7.2970469952711241, 6.9434258713676744, 14.905481648178487, -7.803760764028655, -8.4000082243078698, 11.207158223790749, -14.044730651708779, -7.8313315132907579, -12.235152234029428, 11.136317582870022, 8.5021201344630768, 8.8357802624088837, 2.6404269486070744, -9.5531813349412591, 4.1309417669496149, 5.3565672754402778, -6.4993313376325643, 7.8618252498382928, 3.4036857519553001, 21.117270836562358, -1.0777031479727912, 13.213765666837727, 11.226925735994588, -7.434238253724879, -12.379361114192896, 8.1857356067213995, -17.721328914211902, 2.5994412397049405, 4.580182358706347, -6.1851110111017178, 9.5483993032200498, -3.388048302369135, -1.2434012601938385, -11.388179126452277, -5.2704296569704319, 13.836266257339551, 12.426177180866615, -3.712653671352121, -15.37192782267153, 11.115913266636323, -0.53084052425103223, -8.5531836317448757, -2.3960965742081477, -16.824415089461844, 8.528633555428943, 7.4291777654381193, 10.845205472942885, 4.7533091629320188, 8.706535518693503, 3.6415567084201865, -7.5311585622382724, 8.1385104057196145, -5.1846823294179556, -9.0411000335542351, -1.049797347380828, -2.8991299409155036, 7.6642968095550668, -7.8754005720659004, 11.234209101420854, -16.535698415852959, -7.0761628572882707, 9.5129669797652046, -9.0915131266390379, -11.338577074414022, 8.6917393354363597, -10.441358915674826, -16.799225321298831, 11.462376475765517, -11.381858065615928, -6.006466185089919, 1.4218953389200917, -6.3336533594667781, 8.4319232831859381, -9.717098034997294, 8.0892362419338664, -4.4241276845686519, 10.777993092031785, -7.9653063564165452, 7.0811172545915397, -19.055379407830856, 0.82018651615128857, 15.902418361919008, -6.6523234412747971, -3.5190833152978787, -5.5983997363422535, 5.961651908141202, -5.283895209877528, -9.485610542033621, 7.1197178523319673, -5.1431746838525134, 15.731219522549045, 12.204109650879342, 10.045284749059858, -12.453771419859859, 6.7070119235556298, -3.2495420061650209, -9.933597401656975, 12.613995392210095, 3.8923057163848043, -6.7265810636893635, 10.202198476222028, 14.937110700220286, 9.9291200265860464, 1.2182368642709354, -13.482511938916684, 9.7397502023428917, 12.060260344292528, -7.7164747300221821, 11.088723515650697, 13.59882585990256, 8.5875615550533464, -2.6728882082663308, 6.9742749868970142, 16.050061905406896, -17.287365682206858, 11.610268597397205, -0.478999021364924, -13.448866900059636, 10.268606140244966, 6.8488744118944309, -10.805803643054629, 13.09149051672107, 10.457994420705443, 11.115406559578915, 15.265860587040104, 10.387581370330105, 10.68015423177933, -6.9281895541132519, 12.382285456655122, -6.9998267808613601, 4.8278805410410719, 7.6728193873633206, 5.1894373221354657, 0.6047929092252613, 0.026281099406445813, -8.9353793037232094, 1.8370791762025767, 5.6045212635283859, -13.530818183808643, -5.2241143603891045, 5.6467000442691999, -8.3601900324819685, 15.580110340267103, 12.448550246324379, 9.244179471592302, -10.692642766748435, 11.265438569904388, 14.640272258473741, 12.278384955124491, 7.2107914118877598, -8.0054847671413807, -11.462142352840875, -6.0742575491542334, 17.641209829491661, 5.9871163254682926, 5.7469080116907181, -8.9032409472018124, 4.2429733292587901, -2.7389315233277163, -9.6446438947698532, 2.7967348472090148, -3.4148591201095875, 18.664051844743707, 3.4074255236556037, -12.249090420977334, -0.25565600080895073, 7.7782868604639885, 10.759195499220814, -13.06615516385078, -7.9312405028980937, -7.6092160358577825, 13.381488025999262, 9.2184027828119763, -13.065067924866678, -13.99595254716275, -10.354516863399754, 2.1159358415695975, 11.204524792614153, -0.17369963008825268, -6.9519798763711611, -12.165651540299224, -9.5886410200609475, 5.7958048555370052, -10.156424734101444, -8.2040790862411086, -0.77913730753640742, 9.4152589263397193, 13.79774413078886, 12.626464051252848, 9.7362475220497338, -0.31859196000836415, 12.303528001954142, 15.416856708857889, -11.722490916973536, 7.731294427210047, 3.5445750942898115, -8.79441010275605, -12.935601819474821, 8.6274816331847308, 11.670238397250388, 9.1781032773605471, -6.4700073767892583, -10.292119361114118, -10.587037840001271, -4.0477617895718492, -12.416666162915941, 6.0095694108892737, 7.872931310878359, 4.6504742175567486, 1.1795014476310262, 6.3971417145413039, -12.975806430284388, 17.687825846257336, 5.9023746681632208, -5.7648647495656196, 8.6501535760031896, -15.441651023525264, -12.967673304474536, 5.8390491924331789, -7.6707823630416101, 10.715516344169677, -1.3799039597705547, -16.268084813446897, -4.9478113643643731, -19.232343298357264, -7.0326206396257973, 6.4588825368707283, -4.3623514985780654, -7.2557172005271546, 3.1729293446071836, -9.2872454414091745, -6.7520172159004144, 9.360773462449437, 15.075065116807112, -5.8199102241339684, 12.16458546788604, 12.616259699040233, -2.359417488100592, 13.342880200649253, -17.433480070010553, -7.8139368511252307, -7.8860820755753132, 1.6757646091923626, -7.6150460064359988, -8.9520426221442673, 5.9388268589557187, 17.918089227380467, -8.385877295726786, -5.4547881664848665, -4.1678660755250947, -9.5640330099369688, 17.718522536663194, -11.00107119671582, 8.8235092010494931, -4.1431750124231623, 4.4570344747327901, 4.3192488744554591, -4.323283429375099, 6.6443095710230304, 4.2436320742463085, -10.123373133616772, -13.497355900222427, 11.635677517007872, -13.708283876943096, -11.789269125051952, -8.6790457755277313, -14.923708130768105, -10.779508566883559, 3.0111052311215132, 4.3318021997818779, 3.3921649422833013, -9.9200023970997044, -9.2241497004122408, 13.076316150405908, 12.198883314765592, -2.8893535664416445, -10.835252022034291, -4.1756971905060292, 9.3241907874911121, 11.74591818091446, -0.41468148061332066, 11.005099298412622, 12.90285739239734, -11.513483161241171, 5.8023997911506875, -19.842759325639776, -11.14220163145564, 2.6147400997630355, -8.1755408052785867, 5.8028711345469306, 11.338635411548497, 10.155470431507846, 5.866099295676543, -8.7506491853715254, -2.3529860236958013, 8.7192808354659412, 8.7800330321227875, 15.901590800621991, 9.8420059064360341, 6.2859911462142612, -15.94382946727076, 12.224223055827411, -11.151539703034198, 19.102240130806635, -13.231970466598606, -8.3674455522516791, -11.23620392166519, -3.8671242083470245, 9.4115981420869783, 8.9023690199977725, 11.763159643569763, -1.2487125207201661, 4.5613554682636828, 2.1083148435243353, 13.379705903979737, 4.6079544485210615, -10.991203960864372, 2.6393443559434173, 2.1598167243667206, -1.4650142251642544, 12.16038132227016, -10.087904284920654, -8.4087615854979418, -3.6752931249126499, -15.188245869039655, 1.3386374066104185, -9.4320191721678377, -0.9244876337558332, -8.9145540437636477, -15.598791129744665, 11.102711779607843, 6.0092996661745568, -4.1172604182707451, -17.822854113479544, -10.394956887778527, -0.24904841687850143, 3.5795278142231797, -13.409786698797731, 2.0004975694652498, -11.751978789676981, -10.796422076754126, -10.315435500557737, 3.8025558418979766, 5.6839981235115795, -8.9060443724010732, -4.5042034036314087, 7.3611600223165743, -9.775589724158948, 13.094252496096637, -1.2946847639753136, 10.124910678490659, 0.47009194946550542, 6.5102851671458319, 5.1911915662323223, -5.5275500609095527, -9.9009560970804795, 7.9394075081278572, -4.9412639244707943, 0.33209829728380935, -13.572261813403511, 1.278524345210186, -10.939477249738239, 10.343649119879172, -9.9166521419300313, 8.5963073901722815, -7.9136794766477481, -13.537752042685888, 5.7141114425726887, 2.7462370878405524, 9.6308203815918159, -10.242490205539937, -8.8448491700627834, -8.908163675313995, -3.1540167553652028, -8.3650677009656675, -7.8645559956153166, -3.3956135445690578, -15.092273022703647, 8.7386594845279628, -7.64168736254467, 8.3282894933552889, 7.1206055576658542, -11.636985714342019, 5.7482913245387248, 0.38557744560440499, -15.520924994182364, -3.4663093751692506, -10.220555313913019, -7.8767472306081743, 9.8049255589322808, -11.743691560905706, 10.90060458412287, 5.7027256343225048, 3.5634763258595932, -9.4332617402256993, -12.907158852613646, 7.3437710389871445, 6.4224264741445269, -11.780029658718391, -10.255599411481802, 9.824815940498997, 13.471325664316714, -7.897911026637928, 4.5225408816538781, -1.3648220792130474, -12.468016263957127, 2.7253296783542367, -14.144697784853903, -7.3029368517572957, -12.793492818023527, 3.8381063883952522, 15.317961843219877, -6.0052031603156522, -12.514763926468744, 15.877540929741453, 0.61088113778153852, -6.1592064839769307, 15.436051691131352, 15.196421844249166, -7.9524221743551156, 4.6960112554635582, 9.6643095751172776, -8.8061133127716236, -4.1569116006895435, -12.043869416407549, -9.8489712570407413, -4.416164149455037, -2.3751241162356029, -7.1076676202581659, 14.549835244818897, -7.0364463682543299, -9.57459467709824, -15.916210706030727, -10.343033482420225, 0.17583841065979969, 11.309889143213837, -9.1767631688394538, 5.4457002218235919, 7.6520636286137469, 17.875717882470106, 5.4607018998955494, 9.9730091695084049, -9.4063865838535321, 16.414865690105522, -5.4655831176518106, 3.4481799490511476, -13.857108102081813, 12.278404314793011, -10.997015991483092, -13.665206291325111, -3.8917982349406577, -12.944258946979291, 6.934355479472524, 3.5520742554878519, 5.8448212130702899, -7.9846728653530983, -10.442030179914655, 1.8116267084120916, 10.533180661886703, 5.9912045712019637, 10.181989692640384, 2.5294371945932075, 7.1601923369207086, 5.2245056838221275, -7.2085049059710506, 11.650748889886504, 2.2403555267004824, 4.1713007388495162, -9.810284186114254, -7.7862447167415034, 7.803360341551425, 10.681846395872466, -0.73514697807991591, -7.0616978292276977, -11.541252153508923, -12.651346646008676, -8.7083287483228418, 9.9926465847397861, 8.5725129943174547, 2.4734681347719825, -8.2705868397502957, 6.3175344994567419, -11.238482167456663, -12.423679267369664, 15.458102611704938, -4.2203576982288187, -4.8349099076163515, -15.253882372933196, 12.620734621886482, 5.554707029523148, 10.681606852240641, 12.740994817703543, -16.701739323271273, -10.357840015033499, -9.6347705928889376, -1.0197036461171523, -10.361500412092868, 14.588820454640596, -12.273911322922809, -7.1534525909864923, 2.4887106471203326, -6.9783794947522413, -16.914643018696669, -3.308021111542137, -9.7928817800813182, -2.7773545283755832, 10.664048278214972, 16.124421617806792, 13.332949981342887, -6.1883417525843925, -9.5671220386460742, -6.4034398019043417, 17.507113923905393, -15.799219971033381, -5.1244376222717847, 6.5499056322239113, -6.9274593074166644, -10.02522942311735, -6.4648383452943259, -8.0559734919978663, 5.8508591064884161, -13.663385449968544, -10.741130476266658, -15.586002390849039, 5.3228122736660346, -13.900742729895358, -8.1443955190869985, 6.0778168887439277, 8.4487327832373822, 16.179411336529803, -8.5478447352917346, -8.6117715505588688, 7.5233629399829578, 10.47395956494743, 4.1637262040087037, -12.577349862861306, 8.6631908916561802, -10.009156639118391, -7.790039469900405, -10.273618616553795, -11.626063505620669, 9.8843563429043968, -2.1648389561163901, 12.627488564910944, -11.92641792129942, 12.875207397558762, -5.689943606778634, -0.42627508263895625, -14.125378900701909, -11.787997582023536, -17.510830980261296, 11.900212157732458, 7.6031367772812537, 4.712889272608507, 2.8558923153710833, 8.3365282584230354, -3.6907189087896586, -7.9408079865486192, 9.4773464158001151, -6.669274508902296, 11.235370423403161, 5.7727456834268809, 8.0009050439562088, -8.8319573086661727, -5.5861440336532215, -2.2551132729490839, -14.882826705947069, -11.151230464595699, -10.507341312312601, 12.005985900789115, 6.5277714650756886, -8.7310816504769733, 3.349640268798256, 8.3943736573172512, 9.936895256657186, 6.4818064494301222, -16.067249160990343, 10.531768825793742, 3.9041863577623683, 9.9541300079607389, 11.579961939779807, -10.041774066770378, 8.9147724692237276, 8.0612344173860428, -2.5401314754838444, 6.3324737103316053, 9.4628096279015566, 7.3928636736144, -9.0404812662822138, 11.702316851730769, 3.0707190712028352, -15.634797015645539, 10.26301390639618, 6.0417147207582786, -5.3375369794136942, -10.042082014564309, -6.1393506916846396, 7.7589640398460613, -6.2464269532393484, 11.710227470417095, 4.0029908782806185, 14.536059420957649, -4.8965149541372188, -13.224962782852066, -2.5274991627098635, 13.874630408995118, 9.9091180042641973, -8.9402253514149912, -10.875826531577054, -2.6027034729150746, -4.4684662299295956, 12.129794078523673, 6.795964566892791, 7.8728803304179218, 7.7045296854806731, -5.9256395690174877, 17.418777047091638, 9.1174986094443522, 1.3699530901510981, -12.220020717113929, -11.712679953225253, 8.4029580408672562, -7.4075634699218975, 7.8720925855058281, -8.5979155978362662, -1.1945499226429255, -7.5751933544001329, -11.567418165223193, -8.4383645030315702, -5.5893567061119453, -3.8870110517155276, 7.3717991926841568, 9.867976643627161, 8.6802691916301828, 13.728961551696305, 11.192620661505453, 4.9023016881224066, 8.1579717447658044, -13.242924941434154, 9.5936591106736486, -3.8117214833622475, -6.3035862454812035, -7.7160226172300028, 9.9959514092206661, 11.756493464375927, 14.37762402384978, -4.115115883256518, -9.1792609532719478, -7.3145744647627016, -9.4766698599175569, 9.7751794282507731, 9.0272691314360465, -7.543155490691416, 0.27054546841006966, 13.742714660213156, -9.2554118867355744, 6.3732407840439169, 13.866382673947626, 8.8549907485502199, -4.0914428805898435, -5.4393097243094823, -5.1615932143538545, -13.820538462633627, -5.7587228301953131, -8.409032023934115, -7.866125354877803, -6.0574316740498331, 14.616371069847439, 4.4305070825394761, -12.655433084839949, 9.7152429270274467, 13.678358991988919, -16.681205684451857, -13.135523695577218, -0.43019347954747339, -7.213408710007255, 8.9722417258916511, -2.7579680144482261, 3.1605789086068588, -8.5917577712716593, 7.6483022386169299, 7.3620421778788163, -2.5144078967274948, -14.80097919002133, -10.378958057713316, -12.423609314434076, 6.3492577685520022, -13.755207583373789, -7.4628641049213433, -10.946311470854832, 8.3964857971528222, -14.353265947046399, -5.2195947812408026, -11.689219390654475, 5.1108881774677668, 11.122793692828452, -14.275545912449198, 12.238691955821688, -12.945127292644656, -7.7272732949939158, 11.776891843644615, -11.829453859935171, 18.818781543167866, -2.9742346133600628, -5.5609940173429013, -10.938020112020942, -6.4631228205345099, -5.5059276343325507, 5.9646255532259262, -1.0779705695272852, 3.8778210705267977, 4.5845326052873236, 11.5691050376736, 12.097228792912233, 5.9105157959693946, -11.166774213386226, -16.587325747347354, 12.440943703498279, -13.357466549299222, 15.891950718214515, 9.1781340592334928, -10.64096690701828, -5.2674529143387439, -5.2809357618830521, 7.3520830481341255, 13.586304026303599, -8.4832759332501464, 6.3739261163095362, 12.266590270675158, 3.828722886127899, 4.908685474284761, 3.6917937575859083, 15.641599228776847, 11.042885241301711, -4.1222572777803022, 10.108222902355037, -14.555747429456098, -7.5753220961957926, -10.506770331155707, -5.6575466212188648, -15.537936205846732, 5.0638903880388684, -13.193604766169555, 9.8591912260526282, 12.19045308257618, -10.27937514945609, -8.6859184760021417, 10.999805848781332, -12.503268671559189, -7.7523916905123187, 2.7511802565360792, 2.91428262440192, 4.9538110547032836, -6.0509214047198121, -5.8277258513800874, 10.806625396451087, 9.0978591937138908, -5.9198559325792637, 7.6981625486332463, -13.011979583721279, 8.5757048389994619, -9.7029712203457716, -7.9451177714223888, 6.7854513634350466, -8.807201439073868, -4.3828802329481231, 10.410648673501008, -8.1902920660382321, 11.842120761983574, -4.1527980583223405, -9.7988786310021805, -11.285180269216866, -13.018148864756428, 4.1186403754428751, 10.43001479524419, -7.0461109729085987, 8.5786032717719856, 15.504024777950846, 11.250457025887693, 6.4135256729456147, -5.7082075180607248, -9.5999004096756941, 9.6691960845162672, 9.8918269808574824, 8.9989618758512009, 4.9721805407110411, -15.483517468280615, 4.5089607195091403, 14.971146029994701, 7.4151288411862772, 10.333025179117493, 6.1087557040707443, 11.939158390088201, 9.4227302096150911, 3.0989377240380871, 14.393938803705243, 8.5357504357724636, 15.79171513099924, 6.1553084792525885, -2.0683513251200756, -2.0367062690856366, -1.8370657534990695, -5.6341637554510804, -10.718165392145542, -1.9577132182931185, 14.110414135064598, -10.923438151562504, 13.350105745198872, 4.7383841491474028, 2.6284704173289102, 8.3545884091939513, -17.705997089259448, -6.6618052906582346, -3.7094389338620899, 13.043407295210464, -12.090881144797782, -0.87424284072270309, -11.677251243575197, -9.4751367032352025, 7.979339147611288, 12.192501593634544, 2.4193720583478719, 11.727349419385401, -13.753140487033642, -9.8845978225030731, -14.58469090828075, 0.67132150664422219, 5.1992795194822943, 11.98911382060918, 5.197917631334116, -3.3682229692886492, -9.5973226052799809, -7.4042120531721123, 11.711164736502393, 15.329921988302832, 10.544637842781498, 12.707232330190807, -12.260791662759944, -6.002085995554963, -3.3564688110787517, -12.48230008552035, 12.742419947435556, 16.280707317322165, 1.797760980082328, 6.451075169749843, 9.2789684087299875, 7.8328635729252296, 11.319166296368785, 6.6366058426609582, -5.6821956093078789, 9.7505100479775848, 13.643278756372229, -5.8821087090272135, -10.840590644225463, -3.2877032684944933, -9.7530049929920288, -3.9588761306877696, -0.046283068270417858, 6.4114242454599584, -6.273247838007431, -7.0068926726779148, 4.5642607847928813, 5.5679681443306697, 11.011803422556758, -16.417859985503334, 7.3707964909192585, 3.4603305932723418, 7.3165044946497222, -9.7386092725447586, -11.054841772579875, -14.157989358873229, 3.3531121026862376, -9.0818111900906366, 7.9496874275799314, -9.7922025138451669, 10.892570063558015, 3.1925967027925428, 9.9288316965895511, -10.295865327908349, -10.749616464301408, 6.6541457023403892, 8.8843698521826973, -4.8260039438391669, 7.0098869680757296, -16.186198061926294, -6.3409635703000591, -11.862142531167313, 9.6735958918486578, -2.4892150310175158, -10.169290524477779, 6.6322096491333591, -2.305470093930718, -0.92641224293566915, -1.3010295726717143, -0.11437024806972292, -13.427505183685376, -11.30462950847023, 16.047768688138433, -14.215325469420904, 9.3351350662345745, -6.62593414805026, 1.8173348956009636, 9.6688678736026201, 15.434722843484117, 4.7741734648897634, 7.3832922534979426, -4.0637141564326127, -16.632389376826612, 10.935696435540672, -7.081299751733459, 0.22763411781244652, -10.55933337996192, -6.9479455795804341, 9.9512334143567251, -5.4446202104490693, -10.105751963329556, 9.1634336498698268, -4.2792605756754938, -9.2549481581422839, -5.2489925669533992, 19.990654802947347, 10.890656037663639, 12.487357089066776, 19.360197646812569, -7.3783790277563934, 9.5046824613475227, -13.591058244634368, 3.11317714742817, -10.723902307250402, -6.7339814905779498, 14.077111891404819, 16.803064214501958, -6.6876176657608646, -7.9006602931645018, -5.0764202236341491, 4.9841071290352268, 9.7814723530355394, 8.3971640792724891, 8.2735062132309363, -7.343717477237572, 10.704175450350458, 3.3376016525255663, 8.5376145056555295, 5.1183016398664902, 12.788877989306105, 4.823044753973603, 12.09038966734628, -4.8326440520127303, 10.836783759007622, 9.7445450759775536, -5.0643687009157787, 8.0020380362902461, -4.3544777923263842, -5.1443620768550948, -4.3841879140244435, -12.342919506685856, 4.6585657846115112, -8.9955353113214418, -3.9378324291350699, 18.76831940558948, 10.593515326959263, 13.755226684913398, 17.32223373585656, 7.5677818925004896, 9.9959949039426075, -13.467166175002891, -3.3233741030655093, 5.8397368478590215, 5.6554446774753817, 12.481137989151302, -3.4605381289188801, -12.936456484307767, 8.9588216682055783, -11.358027862440869, -14.535078014828125, 8.4036740098083111, 15.318980936170789, 10.181738404142989, -8.2458670275406121, 6.5273443907881292, 7.5693966824517709, -11.487789267309887, 4.6197821734713367, -8.5101700136982927, 10.347196972732212, 16.93143430452665, -13.651395878189438, -13.007370433839954, -7.4011539999326379, -12.282594263318641, 3.3436733608313731, -2.9447552589107668, -14.307488849249935, -2.7255444416103551, -8.7895841084542443, -12.266575557327084, -7.4131469273876203, 8.1019294731314577, -1.6653052256131047, -12.591122331046678, 11.735557144451287, -13.013584629306072, -7.6922705625835368, -13.284713947515424, -5.8184980008476366, -11.849770154209333, 16.688688325399426, 17.471854546822666, -11.645255906604998, -9.0885843959852775, -12.647963608466975, -3.8099543328197099, -10.880874758740418, -4.1473670259801008, -14.639569631570911, 8.7138093857824011, -13.822796058112012, -13.738345053963657, -11.393551563531128, -5.2322322565930559, -7.5536960558140018, -11.275837809446775, 7.0493120295662086, -11.495883157524871, -5.3506068206962345, 6.0863457261783367, 2.6024562610224224, -4.3910043242459986, 13.266082202531447, -10.633085069705819, 17.389083961901875, -7.2756101633830044, -13.763828056572528, 8.9856589118935606, -13.480273961235731, -3.4553497377554279, 9.7381726474873975, -6.369724810111709, -10.086391133229103, 6.4293949222961952, 5.9683952678802079, -4.0990824639168837, 1.7437098180891848, -7.7016012774880576, -8.4844600189760193, 9.1893202047690039, 8.6651007642966693, -11.829582408134147, 8.7826963578541868, -5.6119822216472128, -4.8323497850512211, 4.1293398189117854, -6.8453470802900247, -13.137052335003585, 14.1466368492529, -7.9020692253071836, -2.3198030355941053, -12.533244924167176, 12.687624857913404, 10.604333767857344, 13.081925807956365, -6.601747726974426, -7.7407580139728465, 7.7496708826984708, -8.0739640447604515, -3.3367864814164028, 3.0374065023865104, 8.0080286921171826, 10.711993271692345, 8.6119291624602106, 10.926957223041676, 0.29045126210502026, -8.1587846895130873, 8.0274389539045909, -2.9453365652242041, -6.5448805075983145, 6.0833041931893339, 9.0075953200278462, 3.1312146796530302, -6.8006849703358769, -17.775984097862878, -3.5369907505502827, -17.576852096236113, 10.520521116512336, 5.6330901972994001, -11.836467222517808, 6.512983517744197, 11.099469938581883, 4.8689021298621959, -2.4840163146975192, 8.0459475068645521, -12.445118938675833, 14.454596000855354, 18.749585441555716, -4.3142804847329792, -6.8140088104694048, 4.1938343604915413, -4.7390036585400539, -17.047960923737332, 10.043538248830409, 9.7312884784260216, -9.0825885775800721, -13.400536391049796, -14.633811808024046, -6.789844072222313, 16.459902474177767, -10.704285929525481, -4.143102220069526, -9.9729425722486944, -9.0733585329518576, -9.8252388847239356, -5.782652929259938, 3.2702429125204531, -8.96578492151286, 2.5738390571445646, -7.3003453665291635, -8.0675295362665729, -6.6523497704239851, -4.7114734355173855, 10.817370657802163, 13.229340132968971, 13.936824505696832, -5.1449108589254182, 5.094805455505635, 9.0851667046369275, 8.6935818878545188, -24.541887783667313, 10.200171777056864, 12.926037368839031, -8.3872175171792787, 8.1448038467622084, -7.8438775464753672, 4.6813748298043523, 10.472220550456475, 11.662260406917614, -3.6150086659137828, -11.822927586612508, -0.27115354452394252, 13.465234854471303, -3.7022629500638824, -17.032244486703604, -1.1420650868975353, 12.524864252729175, -8.5199248989400953, -11.953891355961096, -4.9768544809496795, -10.750856257473449, -10.338547847224065, -14.03803375517422, -9.7465993949364762, -8.333170323918182, 13.500209257233413, 14.975504278572, -5.26565375581092, -10.378505557727769, -3.378579617560292, -7.917681184663131, -12.088911879315894, 11.471471648036372, -10.467886695061511, -9.1538487102515216, -5.8725628436732009, -0.72700618400923545, -9.343116993033286, 14.132267328890361, -9.7492192743451049, 5.8447783636706321, -10.314022502884665, -5.0427078887372296, 3.1249540209824644, 6.665534608137536, 11.00125240321317, -7.645872535685398, 3.2994904672053322, 6.1087469276876813, -16.636017120578416, -6.7142903845325383, -3.0637836635521074, -5.987429177711582, 4.5867414144010388, 11.903338873262948, 5.546621915691226, 8.877828171790501, -9.5325826476356177, -17.925038057734707, -17.95754681311406, 8.7021632908222255, 2.3500014615901241, 3.9781454540883514, -8.2968266440677425, -11.584776302147445, -13.871114693191826, -13.808169957609348, -15.365811199934758, -11.722093398446583, 7.9065699610447933, -3.7867986204958983, -5.193748074992663, -7.0063567970532725, 16.155003698975008, 5.6285796526630731, 1.1008459538509225, -8.9404468905550942, -15.492315017914086, -1.2254804022379275, -17.53578378608163, 7.7334490937841336, -12.575066454491562, 6.3539397107869613, -5.1940384700204669, 15.478815908248222, 4.8153649025360403, 10.549527191598537, 5.7586154485672525, -9.1523285568131882, 8.2301933431081995, 11.076049644121628, 1.4048748346148339, 17.680992657656397, -17.156282141042357, 3.9405618842675247, -11.022968272456895, 4.7039306505329463, -8.1033152382041447, 9.9320461759506689, -8.6859035771239075, -10.416803628381452, -3.832332560855745, -5.499421495065147, 12.037089144233898, 9.0578434364707388, -3.7499073524213604, 12.145318983903506, 3.2868973900262204, 6.5146639369717629, -0.11912077698912106, 7.7687677759847649, -2.49234974854433, 3.2195262598332541, 13.864824607825108, 9.7585587656326886, 7.4620959132744549, 14.530253585432856, 4.1460655399977071, 17.133860547348835, -0.21658147838314543, -3.7441443662962248, -7.1864742485171842, 8.4883177394567841, 15.567779522064212, -9.3135632329246416, 11.773164978389989, 13.375249050157439, -15.096103139523713, 10.872541583022523, -8.728983764197352, -1.117019795319558, -7.1802026193677921, -8.0663754418938485, 12.138614601630454, -11.500707586920139, -10.339554937180493, -10.49665361370926, -6.6853747836305537, -1.9202095928289293, 6.8414250695767178, -15.668081706539194, 10.026696627862279, -13.046912685857212, 0.96073616083549684, -6.4951989518546682, 7.2727331875764252, 0.12275884589746414, 8.1031294499185762, 11.748755017674974, -15.961396688615034, -6.51983232314441, 8.3790045327367793, 19.882188000935049, -9.8802908125151241, -13.782260526035202, -11.711868137791965, 7.4910613330567655, 11.316626049730003, -9.1713170036896514, -1.3558918513179827, 6.7925213853142195, 6.6380651744740211, -6.8829192924386522, 0.87177461205081652, -8.0191184910356892, 6.3367390325000068, 8.8409368391837333, -2.9806062674634788, -3.5263764896228627, -10.133785537733756, -9.4693079587693259, -9.7921417244860152, 0.51861812019185616, 10.09230254347956, -12.971764905884083, -12.052273835705604, 18.583085064671192, -0.86204580890364102, -7.5798316728486936, -6.3042697708444289, -5.7839575127892955, -0.78031489164027179, -6.0756300205878695, 5.920047464233158, 15.90125420051865, -8.2561890220056036, -6.316730427890862, -17.112560781913842, -15.618378467966808, -15.605165881395044, 5.7827066200739683, -5.814448216322095, -5.6579673713480405, 7.858747062543558, -8.6800762584169533, -8.853084676252994, 6.5398358942397392, -4.0769566859583541, -10.070967930641229, -7.0444315327388098, 10.713537398853527, -8.1858054951247574, 9.8392166944600792, -13.273657253630088, -14.782824983527521, 9.9738045937556752, 8.0727677463103511, 14.051009379403297, 5.4554221310966806, -15.51431224767364, -18.95094561196472, 10.452335718661404, -14.373041203117644, 9.5424493026970065, 12.041271865149948, 17.745166603125458, -13.655476896313528, -9.5246702220468933, 8.7645428450818343, 11.009556926621658, 4.4129976820718504, -12.601276089992229, -9.5125587488883401, 10.369218466609645, 13.637847207772163, 9.7106767556102369, -9.5153697082252648, 10.617905798941301, -10.171392984479089, 4.9033786019499654, 10.785571756935216, 11.517977185627027, 11.995050011235344, -10.765606388919098, 9.7124115109741194, -9.4336423513088103, -7.0799866499499524, 9.5573396626749716, -3.7400406328277387, 3.9540016242832605, 7.994573528898858, -7.0926119932432652, 1.7747890555450034, 7.1277441127715875, 10.31968262463773, -9.7427242346209866, -4.9706229908463513, -4.054729205207865, 16.644700577232069, 12.446337049019133, -8.8266798630275254, 9.9533330349399822, 5.8985788824886667, 6.4254992407320772, -11.330274874165758, -13.621173112468961, 8.6583130537753785, -9.7467426564835247, 14.019625549829424, 4.1025672798571255, -6.5243455781343291, 8.1179973526810585, 5.2868657574152893, -11.404734998713046, 9.4001119862216314, -8.8837391303153623, 7.7029578094612781, 14.205110275793917, -14.157972838622758, -12.835297828097444, -11.381216873394536, 11.348319892129114, 11.774800999444416, 13.115060784080129, -14.714424435227102, 11.107448445172487, -10.261586453503945, 19.217080651953655, -14.700221149884923, 9.3055840164795267, -7.0684493200274821, -8.5129268466286465, 12.827336358015138, -13.690486404607888, -12.079784957188663, -8.4049758507179604, 10.196261124015754, 7.4495433623347793, 7.5202963684893351, 9.2973011113675526, -10.041509871827305, -6.9513248742528893, 6.7356155756655234, 13.909493816324378, -5.3404146005425579, 8.2096549934361089, -10.182158508949881, 7.6093153509572931, 7.5296889052686655, -12.394287160493166, -10.829602612631144, -7.3124772964041211, 5.1296451149748439, 5.7371649358467129, 14.147479898284733, 17.780386744613317, 14.149104045409134, 5.4181418627493398, 2.1898190479949791, -2.1708656743846504, 11.700068807022188, 8.0902996039934596, 11.56005684486502, 13.903452567230378, -5.2245020700173379, 6.7443105190558361, 6.1193142091528268, 8.8016313720455379, 8.0768030756167306, -12.839067800880638, -1.2830901294340233, -9.7878975688885284, 1.8645477064148943, -13.974692533580448, -14.857731412966432, 7.2303550022498513, 9.8062609888668142, 3.3278991029209983, 15.032376273333014, -0.49801478656576625, 10.077175027562221, -8.9735194962801099, -10.235221682526202, 4.5570596868834752, 15.726532933993642, 6.8757914496828327, -14.729377843192212, 12.167391329176921, 5.7539347969768624, 0.48952544285513888, 2.4543908592831225, 11.257709673973242, -8.9874216419784538, -12.852189526074815, -2.9421713884855847, -4.7431055851061448, 9.0271745594553234, 0.94219527722910723, 6.7616955013871047, -3.8898503941585982, 6.8294182031604, 10.167070228627409, 5.7844531203034171, 14.427801187107544, -4.4339900159707417, -6.3113030093534128, -5.2080910080771003, -8.2150554052359741, -3.4738142152033902, 19.811997586747694, -9.792139014132422, 4.2054775232685886, 1.1862726852927021, -8.9696414965465703, 17.03843493430967, 11.619001614802277, 11.495144908831962, -4.4987478490423758, 9.4848886845267248, -11.077080611002563, 4.2507486883943866, 3.9408293058220196, 4.8149498312429637, 12.808930733959476, 4.3710690282483187, -3.0499835755729792, 8.3933523380044619, -8.7347974807205393, -11.329742354216993, -7.3448458877833938, -9.3568981730694905, -13.564284597457476, 17.95771511316574, -13.828593117253744, 9.4721834503346507, 8.9318657174834524, 10.55666510138199, 7.8641845481086392, 8.7199534064833948, -12.387154026094619, -12.267566772355323, 11.495709953023843, -6.0056535952698926, 3.6624945771183075, 4.0383886124610404, -8.7930635410121187, 2.3941772032131632, -6.173478947867955, -1.8157670205797287, -10.032402438433051, 9.6184182552765449, -12.109808963645667, 7.486517747919498, -13.476166097704631, -5.0446331966972275, 10.776335775341987, -5.6846966203517937, 6.7152716615976056, 9.8681202923675819, -11.598779795710493, 13.508729060155845, -1.2440233508756258, -12.813026981689468, -2.0889856342157977, 2.9985539708264048, 4.5334945821026871, -6.4388481193702214, 8.5100323825881699, -11.680469594870019, -7.5127903668750857, -8.6224230687650287, 5.5911326330375433, -3.5923542399401915, -7.7762287341035901, 3.168850391514404, 12.408893643198397, -14.794116574724242, -7.0600184425157861, 6.6862419677158096, -4.6942430724053663, 5.8848234508115915, -9.3764550520798284, 8.6974679621831363, 11.149167498318171, 9.6316081265039113, 12.861435187502302, 8.2813864372376838, -6.5239712912096026, 8.0017129229235628, -8.3170860531825674, 9.8084833497484922, 9.4805867080525932, 17.910827544782947, -10.757043091274724, -17.314809948301299, -9.649280148187108, 13.759896753218332, -10.998439056183795, -11.186617615490665, 6.9991497087209762, -8.4727056349033241, 13.896627638754673, -13.329481761259695, -7.4445754132635464, 8.9771081657676088, 12.794499520786585, 18.176470074804723, 9.4507759160782268, 11.029010554066552, -14.710045020078885, -6.8851568829262328, 8.4640336972524359, 8.1748496328462945, 12.053805056421105, -7.4527756525909359, -11.579587394726165, 9.279460015245947, 9.4393155085720117, 7.7509113211927971, 14.315942571170485, 7.9883391993774806, -9.7307158194311896, 9.7270282543036615, -6.4400171852199373, -8.320396491967319, 17.027720003105944, 7.9088061318233498, -6.9662181381811319, 7.7440903291830248, 8.6835410865248903, -14.725951439993025, -13.65323995114823, 5.1915728226377169, 6.9332430729193453, 13.509622186196918, 0.58467227666761168, 1.3594487921408738, -9.5031391731053088, -10.293746605785483, 1.4609130729849051, -9.5213145461700357, 7.3522665777916991, 5.0984133233310844, -12.085784131269749, -13.047710820458079, -12.236720883437403, -7.2607844001656696, -6.7156109720545389, 12.974343871859906, 10.331032165775552, -14.595868922755482, -16.515482275597275, 5.1852148493667212, -2.2584173230432225, 2.7573407611881664, -5.7248712882073818, -8.4038204979667803, 5.2602206584373707, -16.786220270373605, -8.505222795605432, 8.0393368253871387, -3.0364416165074561, -8.0253326219695786, -10.244487348944496, 8.7677985282707862, -16.64905159819979, -6.9414375043461796, -13.792120018019242, -11.520571639337666, 15.997074750795631, 5.1571515901374614, 12.011480432844102, -0.66154822971732552, 0.6809223534568305, -11.149936722480716, 18.565726411489109, -13.687163769231971, -3.6279553797045336, 7.5040200498419987, 8.0177420186038937, -11.92371969976551, -10.494591034625103, 11.978188256211952, 4.8139792665278112, 2.0276526555698693, 3.4530936910505243, -2.5078901416589794, 4.2361215553760694, 8.8980252911718622, -6.1080037745454145, -5.8943982266039257, -5.8465806197454198, 5.2882382288489254, -9.9868601088835121, 3.3115848393233618, -6.1518947243701678, -8.5727172146207593, 0.86317951109219171, 8.4192432326959992, 8.4194420403586445, 16.523520926224748, 4.9460289842159337, 14.61523168882279, -6.2384946517242801, -4.4620883807322542, 7.7250368015542179, 14.500054051314601, 14.151224316305482, -6.1879519779248495, -2.7212295586905411, 6.5629586951270671, -10.482198394547403, -5.1702702177846724, -6.6638561248768227, -10.225374064472188, -3.5846676771508745, 2.5527508818121447, 3.6391349429527482, -8.9953388429520746, -9.2417485425484287, -9.12945807693891, 1.2090788910674934, -9.630853551157216, 5.1515793612794791, -10.011254323734802, -12.61349255708639, -13.927778119790645, 3.4056253326121246, 12.068250724813156, 9.1910784498640208, -12.709192819289633, -7.6486128967644529, 11.067689364867803, 8.9893153079547705, -1.6385475824288549, 8.9123970217632245, -12.883575420679991, -9.0371785390987576, -1.7686534068752013, -10.406335210290218, -9.2527616771795973, -4.0434190287293665, 10.983497522148708, 15.093053604538387, -1.5142378602151647, -3.2411399100271918, 10.944473334861055, -8.9394866509964857, 9.8641405898420818, 10.202973250156212, -2.4112327374440925, 15.169414332276546, -9.2420519730863706, -11.729059265309118, -7.0691394276780031, 17.896668657613908, -12.212623000578935, 9.7541379207938412, -10.261520630630978, -7.2137735752266341, -0.50093887089907907, 11.217935364062654, 11.758529327117524, -10.306983843668496, 7.6875480941091405, -7.2653149497928009, 14.26959242718582, 5.2602691866731286, 12.115786454898007, -7.7760266191642371, 8.6845952325756155, 14.451174760234439, -8.0271429445729154, -12.200958154973145, 9.6301740267921527, 6.4792620727287229, -1.2107082007701655, 7.1453868368230911, 10.372100346865585, -3.7046356710377353, 13.618489604283125, 14.774146173194307, -8.1296078621505359, -10.042457463069148, 8.9277404625167947, 13.941142486163608, -11.923804624178089, -12.287479094879695, -9.5607214095721051, 3.5134354546682105, -3.2118861602483855, 3.2586988712462297, 5.4377916681685745, 5.465685336701597, 7.3269299342768415, -6.8187112739529958, -15.457066482245729, -15.863114104760093, -11.392836030182616, -6.2231646336742177, -5.6946580732567078, -0.12054977865483564, 16.180926553252661, 11.378965473010075, 1.0172865269701592, -11.428245638293065, 5.8537661543134307, 7.4606083163453523, 15.806102204127907, 17.663486354735731, 13.393445073535254, -12.592653293633267, -7.8594023873229713, 8.2731824550410469, -7.7096227625427769, -3.797994187736756, 10.57439107200813, -6.1890944564964636, 13.848252215313867, 5.5608104876853286, 7.715450280896313, 12.485414668991902, -12.914020693523998, 1.7226826367869563, 8.1714019985439652, 10.986144634157721, -12.026111695925035, -5.8276979734574184, -4.1594376502380772, -5.9915197466054728, -20.790381542951796, 8.5473752794631732, -11.821961410088885, -6.2633191674745454, -13.324424499584351, 4.4359567001634943, 5.5901099262818423, -16.026794681392406, 11.146610731428918, -5.5799373239256003, 9.3586712605770401, -12.901383218171745, 16.924692493561125, 12.342403248858647, -9.7927013479707092, 9.3995592031531459, 20.564352508527435, 6.4084980960953377, -1.914969575882757, -13.062687976283243, -5.9672724071060284, 8.3619988063118242, -7.0327318931875604, 3.8820053402163275, -13.929507583511796, -12.070173527090596, -4.5562181866251237, 2.1500258946736981, 4.3411268486569279, -5.5508998861763938, 4.0867857187305887, -12.048371959047554, 7.7208884763159062, -0.28618439116313671, 4.7103454121649335, -7.2593849542605628, 5.9722728804203769, -9.7793294958592529, 15.055495847608924, -9.2621092349957301, 10.708264470470867, -19.295178071022541, -1.5429531530801917, -9.2957096175507239, 8.4504278351477389, -5.4815184480042749, 13.222096003137574, -16.61024243229717, 11.263931613306763, -11.480221960078653, 10.905274136169979, -15.048986352665642, 7.9101002611317055, 4.2031424891161224, 0.56894559008391909, 1.7204890572791447, -5.8203449132244787, 8.0918850963130478, 9.2487791997682773, 7.5605820317777743, 9.4865148321502062, 5.3245192801717023, -6.4731250578077741, -14.860399433417449, -6.9953105573889358, -6.8322984055784008, 15.860067151063904, -11.254002684644968, -10.564877989026145, 7.1711824335463366, 10.802265599100307, -6.485430837506045, 13.127502081458044, -9.0765346156370761, 6.4716596599652405, 10.786797223952554, -7.1498649862807593, -6.3155763335181359, -4.5977036331039978, 8.4663199773063447, 9.2713482496036939, -12.945417687672462, 13.368304866123649, 10.471163770684178, 9.1602792500133514, 3.2745118484936455, 13.67592225504449, -6.0110505545955375, 11.64645052721716, -9.0613792217970666, -6.0805752543147067, 17.424722272229776, -7.9367116097541714, -8.4155350011223256, -7.4653100054422028, 12.349168033297483, -6.8305278993599865, 11.598406799430336, 9.8206521920580947, 1.6301930576177086, -8.4162124281899668, 4.8582834807432453, -3.8450454854573501, 11.801494110400265, -9.2627975357438572, 3.5562729803965443, -3.8874539253246931, -6.1729954724127722, 9.5829128813391478, -12.291755258462466, 10.552669523928301, 9.923212359204836, 11.206000773742145, -4.0020915571456204, 5.6859671308645545, 13.363069495497923, -11.467056869226994, -5.9936294342163636, 1.9690754612055845, -15.62010741543013, 12.803917096070535, 14.389056553433326, -9.7502242992702239, 2.7524440556970875, -12.990040174838372, 2.1198661124081397, 12.255847203419847, 20.256703111621302, 14.985208893207879, 9.2135163379452116, 20.45261985950021, 10.557627664100822, 12.264203352611055, 9.7773986915854909, 2.8954438600292312, -8.2179048257810265, 8.1597406054123933, 13.047920937393751, 5.4709800769774564, 7.9398715593822899, -8.691252895531937, 16.14635896165839, -10.141845225867687, -9.1097800064036356, -16.007845954102521, 0.48695293010215607, 14.742398381852254, -13.906870710304331, 5.5651950654118147, 6.7979564186546204, -13.835394297869396, -7.4739339633812749, -22.175297887770014, -9.5064261221589206, 12.802550303472998, -11.0504308657042, -11.700140824989083, 16.737304324987711, -12.808634660095572, 1.1953293963554319, -15.273191964444301, -13.965760240654076, -8.3346572109927717, 9.0099924341840349, -8.9783896144930857, -11.606954480275437, 7.2533828116969712, 10.911607070936354, -11.991126193619641, 11.25900728802193, 12.966329743479223, 16.157352155830981, 11.148162086199683, -6.3267940998455634, -5.6484589346865013, 10.642656618886736, 9.3573367986259317, -10.901355997390375, -13.680427637102545, 10.565345460488684, 3.0228764258397089, 10.951589690880219, -9.0433075197572688, -12.406176320124878, -0.066524505159634262, 7.5260652915794841, -5.9032373349924878, -17.023974036311714, -7.1371762723391567, -5.4883456996402025, 3.8829428644305395, -10.012306328122195, 0.18605677744032958, 5.7586435846188353, 10.620093957741931, -7.1087775745866653, -12.560913762416449, -16.477297265407753, -8.9040127849196065, -14.589971709595272, -10.658294584730728, -8.8075097417950552, -7.1214824215853678, -12.539396910565111, 9.565864047385622, 12.844310399115948, -14.349669695022058, 10.27170291282148, -18.602342514141743, 8.5583634320554225, -4.9370326753189877, -2.1382722527216274, 8.2073659384963786, -7.3732813689060732, 2.403264814138947, -2.8005536063568806, -7.5845935705146426, -13.779475315057411, 10.981204046751332, -4.1731763035357679, 15.871386103925467, 10.917116574468329, 0.80707983804068206, 12.790445864327342, -3.116302572314094, 4.4957628462854533, 14.079577538787566, 7.1226099286799922, -7.8502869519323975, 13.933901453879173, -19.700422912615601, -14.243844584311592, 7.0725920309619212, 10.332585843706537, -10.845203407911576, 0.24231486603821201, -4.010036765106368, -12.998698334858497, 7.1339997379283391, -16.057450071172088, -5.1660849155794875, 15.518273493981818, 13.181443280533991, -14.320590440388848, 15.137001600853049, -13.187637858202674, 12.240158386179877, -11.210103216566063, -13.194037906486583, -8.0391954352747117, 15.317310842099767, -15.108473709579298, -14.253152712936174, -6.691756891954971, 13.66845665060522, -0.31309130846603073, 2.9234363919361646, -8.5151074390254919, -7.41413904586706, 11.28088164841861, 8.4122869650024406, 3.5256072654603212, -7.2527553003079994, -10.408109330313421, 9.9160539281727544, 13.090530793420285, 13.252806116246937, 8.809461873970303, 10.15538641054647, 6.3403228943364933, 9.959071627882782, 6.6996006552526728, 11.443622119547575, -13.950181644460212, -4.6587315033740442, 13.272647969577896, -0.52216790901174581, 6.0998404476526691, -9.6031992971915585, -13.780500603102247, 4.7874134131263686, -8.8596952931981772, 10.85639587760547, -12.534681927829213, -12.092645714051185, -8.6391701943844605, -4.8885656161138522, 9.660913373000982, -1.0379079296202014, -9.3565089146677742, 5.9411223993844029, 5.1576887564066709, 8.6467421625567198, 6.1854396092087365, -2.4087898054057382, 11.758245385312559, -5.8302756487886729, -16.761840510741479, 6.1253859174586323, -13.103426397686144, 11.514572465256583, -14.597527659154306, 9.4987085193677441, -2.2754109819414654, -10.39419192274306, -17.821637810038638, 9.5875357765851206, -10.355595326000792, 6.2790668381068189, 7.8149827894831558, -11.861156478717344, 9.5488287652000583, -10.552949593799564, -16.98950918002506, -10.835301066527878, -4.9896672258342694, -6.2191845439553486, -11.694221412742303, 8.1128454544927671, -7.1327951793530033, -12.389634386825444, -4.0686237683693713, 8.5194595893072087, 2.7623505271434041, 10.105013714636646, 11.118801729179557, -8.5972251554248107, 12.260440091179616, -14.295932934045686, 15.656949639011085, 8.3668325283479845, -10.909619736430511, -5.7058231812857594, -8.8792231004396225, -12.772901358327463, -10.173872828952089, 15.625530187647135, 9.8172850294445819, -14.666220409384927, -6.9229469558779426, 13.2357386324794, 16.416641100773294, -7.7106007484641959, 4.5769714931500189, 14.014974583064099, -9.3194159833794838, -13.619447262552601, -5.7549461460603641, 11.353782674327727, 5.3123797354937929, -6.2780291598741282, 10.283760630633777, 2.8416570220436186, -8.7924968028492412, -6.2145129268769326, -8.4587877594743066, 13.21973825364071, -8.3756195269621116, -14.249415522525007, -9.2323116721281888, 12.911316018767248, -9.277212873988562, 6.716305209767679, -4.9026416439016236, 8.5848515967203962, 6.3894308876341093, 4.3142065842571071, -12.53857451184637, -6.7276552671633283, -4.4357762680528854, -11.146937264504627, 5.2427117742275726, -5.4735275512258177, -3.5731654527606547, -1.7709635850453831, -10.860422946786615, 2.6061236810203359, -9.081063810087409, 17.410378564758602, -11.562271849072657, -15.109645098589235, -11.611926301280375, -1.2930095073260202, -13.062975531892999, -14.147243968457699, -17.161087985155845, 9.2826154476180776, -13.266400217353009, 8.653694537898172, 7.1765864914171047, -1.1801952981507955, -14.913000943431788, -8.360713646983216, -9.7487048234202938, 5.5607906117589812, -6.8847495555005649, 12.135286029289524, -6.5726420141275721, -6.2708900885105674, -3.9871226614456905, -1.7065449333662257, 9.2413980680159806, 5.6109535779264972, 10.777876030569464, 13.517695426098815, -1.4097374670893166, 6.8559516613831848, 15.778819010475557, 7.915591437510817, 5.2510986407594995, 17.28606471248229, 9.7631667539339002, -6.7645527303317934, -14.786188403271789, 10.613014385092955, -5.4286283498645256, 4.832380760520854, -9.7056418220859229, 2.5674523559575797, 5.6570084224339992, 7.7122248955885961, -7.6527439273655515, -12.134048817406615, -11.941614228572236, 6.2729422133737236, -14.442283251676416, 9.0248009672963878, -9.6470625626903299, 4.8059610080845125, -6.0434803225273335, 9.5585090511858297, -11.233511637096294, -4.7272838314756651, -7.7200282617113185, -7.9060890668787476, 6.1284868200977645, -13.169729390434615, 11.508050321996537, -6.7743354289640365, -7.139861200234014, 11.666341425041699, -11.740039036778199, -3.4764739755291716, 12.373141498019594, 4.5345952437902968, 11.31832376359478, -14.579887645456397, 3.1465160453936818, 8.4251430916775725, -4.752562912242789, 6.9415998674328367, -5.6167379887514626, 6.3561211582358341, 0.47321530932012074, 11.649692884500945, 13.388781200324246, 10.33961869502215, -7.5458338362989776, 13.615088497717474, 14.816185564321776, -0.54012490501556154, -4.4154331283717081, -5.7552713884915052, 9.9330120943453792, -0.83508107072409921, 5.5921318500621071, -7.766548964375648, 7.542532883751802, 6.4600363731145398, -7.4284231255591973, -10.057876793723317, 10.313265410781062, -10.16191281293359, -13.823600904064632, -8.0242560308031621, 9.5162645766365035, -6.4523072190544797, -6.5950575417916228, 8.1548439321874291, 4.7423131293413787, 17.951658376336923, -13.632282980910503, 14.90377954612218, 6.9734171710592294, -6.8104705083861701, 0.42653321155256052, -15.582049920923927, 10.065678352943644, -10.837777555324999, -1.6032427746573299, 11.353931098453048, 8.3048835250497373, 9.7678727021578275, 13.302700370215392, 6.6502142699217339, 7.3539178284520261, 3.7650419668838242, 16.069166542560598, -3.9062359013363892, 15.49968253336619, -11.93181100869136, 4.8725969871315318, -16.361950811590066, 8.8590621997714489, -11.618381589151797, -5.4456400777867211, 4.5022421401458406, 3.9805429554379104, 2.7721016049837304, 3.1025288134841538, 11.319142806637647, -3.7358641070056167, -12.649035101587346, -8.5398583799688517, -1.4954904734778918, 2.8243851001765097, 7.8276107140656057, -10.753812220727593, 10.018148172630438, 6.7707798322435906, 7.4561472033959815, 6.7346819233850157, 2.5155524403304175, 4.7270961717554743, -6.9262359054306355, 16.758386229619624, -12.476237927984346, 8.2481971895098347, -10.635029683876461, 5.2645197954934559, -3.6192776018869761, 11.498933466896935, 4.8409026284745957, -12.927282840847173, 12.37329456846536, -10.743604900032471, -8.23442355974435, -17.477812162148659, -8.8538798907705232, 14.867540311683406, 11.384561707857021, 13.580476507950065, 8.7732454274746843, -5.9443472039020646, -6.3416623252691879, -12.490426499978449, -3.5834570525460694, 13.605738035951063, 1.3320840297518255, -0.28501971350495253, -8.5250847103928926, -4.1564691677316246, -11.748106081586172, -7.2665790070827212, -14.034318247591797, 8.5019355400237355, -9.7290313992054624, 5.8293474172153505, -11.67832196230883, -3.6743845111367621, 2.9538037098482617, 4.5686747136089405, 11.580097199330536, 0.6609922956440013, 4.4079244164038656, -0.739867123394089, 10.072401965820758, 3.9113086507465464, -2.4793539902599937, -8.8591449946204861, 12.365719775495634, 5.0961647623646762, -10.374552313415913, -10.169113964300875, 7.7445033354447919, -0.17125566553424465, 14.777534889572108, -6.7190002046901665, 4.584757693699987, 9.7576507971790853, 4.9707592829127343, 4.7058369325599161, 9.8474915330435024, 13.454689772092728, 20.70986390718895, 12.37090558536995, 4.816207693438959, -5.4305901296079204, -10.807830342219793, 7.1507761813457842, 7.2910315590684833, 2.702844584947969, -8.0842533213856438, 10.806318481172813, -9.0612454464875931, 5.2022614246922556, -4.3721387144662955, 12.006216151780054, 0.91626416282621881, -6.281416327478448, -21.015726019497283, -12.441362130467233, 14.823681627972853, -5.9737733837951597, 5.2890983143890562, 12.453299560205791, 11.44357307505399, 12.792338207392973, -11.842251891471685, 12.628993456477263, 4.426428903833437, -10.357513998215616, 10.687506904818898, -7.3359369555237022, -12.130893191437801, -12.119373930539281, -8.8904465456031474, -3.9592431900029155, 3.4912699248569865, 10.021655886437408, 11.389852318070259, -8.2140054336137727, 12.916396512044814, 8.8707694269182404, -3.0146219794404625, 10.908940857387732, 7.2183407791594956, -11.273285688877968, 18.925065607086726, 9.4419637821611371, 5.1526960269597319, 10.278568754729992, 6.0868565632983582, 14.595941198851291, 2.9627540717985865, -11.664151201209767, -9.8451428180586156, -8.3297186886176906, -4.0965466054696327, 4.371301602399476, -6.6873268835396882, 7.6497678945883765, 10.142948210715518, 8.5549105706425888, 5.7372054620861492, 9.2261204501353831, -9.0052392161028063, -8.3173183046725825, 8.9418770860670342, -12.710146347496487, 15.504315947365392, 14.002910153900046, -8.6895015271525082, -2.365346192988262, -8.3209697962844338, 9.9739282375052944, 7.6450334231194983, 10.805316553794658, -8.0294321608432178, -5.2786779082757533, -10.907931831464452, 10.434947251589801, -10.178756757061942, -8.588918296756308, -16.008003412739821, -14.711476603033734, -11.131297491758239, 10.779696355668207, -14.218903652421291, -13.07747618174365, 3.0513738579016545, 9.0528751647383654, -9.988237355702049, 4.0855436023983245, -1.7271018037878672, 12.576648010345217, -8.2484699027070576, -9.8949664737691982, -2.9333072415924035, 7.6216888249631571, 11.416747027707636, -8.3411207267233163, 8.3472897818956664, 5.1773212671886935, -12.135391087757361, -7.9667189023640175, -11.399331069906735, 7.3378951214623065, 9.110413809684875, 9.5271199299692295, 9.0916501285599338, -13.651140846822798, -10.657679592594063, -14.760042009354954, 12.365971193057486, -8.5456941261815089, -17.385132524492416, 9.0477237505417865, 2.3980862318742111, -11.35168124684207, -8.3915288830926436, -5.6142527235712789, 2.9764984039323759, 7.5089204982023245, -6.1829145921758553, 6.9826006768764168, -6.5157940253555227, -8.1210656665448475, -7.668687646907709, 13.557807110499484, -0.47689062439860214, -5.8959077644906852, 8.2112998554058265, -7.6926854402799272, 7.8143300459928779, 7.6696047144055166, 17.390971400518151, -8.8551571933003235, 10.808600986091362, -9.3160059068340821, 14.597810052185789, -6.2784256458854255, 9.0317914209379424, -4.4387863093144295, -12.230661823448365, 6.4478010626096838, 11.637680855506359, -5.925634664568129, 15.567647360060445, -8.9655126923073496, 1.6378635408078031, -6.5571492457974827, 2.2459347250391324, -8.7278852724059224, 1.9522263544989593, -4.1269423175622251, -6.0511449443589953, -6.396706251064054, -4.524236272358432, 15.333972030957289, -11.138156751379457, 9.3483166773367063, 1.3650811650357257, 13.060319385372006, -15.9940004354346, -15.80828958854179, 3.675830033052947, -2.6024401814231979, 11.185151959519217, 11.640923470919059, -17.358112622331948, -7.8324230114019358, 12.230512366807387, -5.5457409217090934, -5.5418787969037417, 7.1279784938251423, 10.73660818676476, -9.0782728234751744, 4.281979189393577, 9.9192786036259584, 10.586491510155625, -6.3141222933478023, -2.1996754424320568, 7.5548136249454529, 4.4022445477889107, -9.4143548298198194, -10.201893755039519, 13.931201425442868, -2.2698384949545698, -10.579983047728001, 13.51127730879095, 10.565554932102074, 8.1647534689145935, 16.644366558417868, -13.119843912849221, 8.4055282143269601, 6.7340741588579336, 7.6330963805743126, -10.41437347372432, 9.476716000460863, -8.223064919562324, -5.6563409010634178, -9.6918549632136202, -15.210174436508188, 13.403836827339145, -15.061817940960925, -12.723458055571076, -7.9070917686436459, -6.5985018849503057, 10.69420199445106, -9.5230835036149664, -3.030178376547755, 10.314795728045368, -10.371212254338326, -15.298880437668403, 13.103627221980929, 1.7446184318650735, 12.837596466073093, -4.3212811233922679, 2.469475396736347, -2.4731315346686418, 10.375460669062887, -6.1731601586596536, -12.197629840761127, -12.546212804528841, -7.9114559541859588, -7.6376040212603602, -7.1813303845913303, 6.077508682821084, -10.602106244397396, 4.6913620956006259, 11.722654312575846, 7.8103118177270252, -7.8330447148903524, 2.4140293060940845, 7.8286851111362559, -14.292408958117155, -9.9668515042743682, 10.837884678824144, 13.551763280116345, -7.5792922479514875, 10.217841217450923, -10.506554793512848, 1.2173477926859024, -13.359553263436801, 2.2819782977613929, 0.36179344750487991, 13.324677982177514, -12.791944560799728, -15.326887424794496, -12.172088759146694, -11.712837669991464, 10.876790384940454, -14.6840911903316, -11.194104386500852, -17.06577027000257, 4.5212765662350414, 11.154517994439368, -10.635351699696184, 8.3363268533381945, 19.457634084088721, 7.1884872668499309, 8.2101471484760111, -5.8467729257860555, -8.2507979673788565, 5.6590233767335958, 5.9419912613075967, -10.350515607109967, -10.464713258197657, 14.243379436009276, -8.327667628536302, -7.418154499247092, 0.96836438649033885, 8.3303756589689275, 9.5641643330217647, -3.1940953992649317, -4.057742602145284, 10.340391662053941, -6.879331816797376, -12.852288647577636, 1.3115463364763715, -12.543598991149683, 17.395441160786131, 8.3269518047927615, 6.1059895946325566, -8.4277131199397619, -12.314302302807999, -7.1979553063364889, 14.211351316667047, 13.409938994856759, -15.105726701680716, 7.9394923034759763, -6.9818677198262353, -10.800652938712561, -3.7670249131981333, 4.9346480804151085, 3.5138980216813902, -4.4641141764462224, -21.055732903559026, 1.8466918969452111, 10.123309892032941, 5.0371299054365695, 8.5373871586148731, -7.8443868348219077, -10.905249355794272, 7.4929241203617929, -8.220133898014458, 8.976541798665048, 2.8178642475610309, 8.7977119103552521, -14.65607904062723, 6.2887216338623713, 6.3883586201269953, -3.4738839100100636, -7.4159592419013425, 3.2968043777303637, -17.320091265873646, -3.9006949060769531, -15.446480099240977, 9.3353819020082103, 11.096981317725822, -9.1428237016903271, 4.8194916094778364, 3.807216101304193, -15.900482395066971, 10.451055528314384, -4.2223942597505788, -9.024778897274274, -16.880767212590861, -11.025501807743925, 8.7326617059563176, -6.183936008286989, 5.9011640435584152, -5.9177854805632411, 14.878288799645901, 8.8183674666871745, -6.7508840299696908, -17.047751323059487, -16.149463219973399, -2.8735302640376843, 12.4186576274844, 6.6026407239510414, -8.5611102544238449, -9.6908404520509244, -6.8329976768053546, -10.339501891688746, 9.741806457268666, -5.7590976333778663, 12.722244333419306, -4.4465611521921984, 7.7012615798377535, 4.6680058171109424, 3.5846521894160586, 15.030602927696552, 8.8293573213169463, 9.7054397716787992, -4.0701668630148999, 1.9184729014981985, 14.651761060160453, -12.805800920882021, -7.2647057655566929, 4.1276583671685643, -1.631528541010119, -8.5633241535170743, -0.29247809033464373, 7.0984870073169049, -7.0386385280531174, 3.9525715901018907, 8.1913920501374431, -8.5074544652610591, 5.495575890510267, -12.430708117687118, 5.97276797167667, -5.0804661362259873, -6.4231252291136549, -5.0729442596835499, 12.124041417555082, 8.8499895815144178, -2.4437358139873533, -15.496150297312425, -12.655276658718305, 10.519788030397699, -9.2115779188684996, 3.3950389496073741, 0.32905702242372031, -14.410878771789454, 12.212348093285945, -8.7199237942570882, -8.6760456480297741, 5.2247403230045961, -5.0291643808982256, -10.761369331866735, -19.203770492652545, -13.263125077697193, 7.6266463198133891, 14.153458163923816, 7.1617913164760321, 7.1144889349290796, 1.345813906666453, -6.1874295250037141, -12.498973922694637, -10.82326193399736, 2.5660414233158177, 0.62968686165328625, -5.1908619356096493, -12.587621586720372, 5.3651510943332852, -11.242800406052355, 15.095985948996933, 9.928326280176714, 9.5883246830773263, -7.9859566049726824, -5.9976892857695372, -2.2959998603483931, -14.141721558480041, 3.6056535578269266, 12.926302725362218, -13.639902946440108, 14.875234618340132, -8.6448925055435382, 7.9831722329138577, 11.549891211989442, 11.461459085606565, 7.2857575981701714, -9.2270540378836614, 5.3067440069230649, -5.4862032296572849, -13.6655077858962, 15.174251668117495, -9.3087009876435296, -12.726065673856308, -6.1785093641362812, -12.890235921037734, 8.1087260074266663, -13.889065494101713, 9.0717802682418505, 7.6691475680995245, 12.445719346528879, -9.1119235411683217, 10.402303365724171, 8.3513068163152955, 9.651077177151393, -5.9853047767526171, -15.766675077606115, 14.392598082127982, -16.542441775591964, 6.6176414985718006, 1.1763718926824847, 12.953480602417816, 10.796382841159257, -4.093780496031445, -10.152825642659057, -8.9005024898234968, 0.30327613904854955, 11.390251643499608, -11.75711968512033, -9.5833217575382985, -6.4576917881922702, -15.414144806491558, 7.2439542659341942, -6.8998677787770157, 6.4607186078331971, -5.02639535643541, -16.089115261261789, 16.348400076141484, -13.83645520770431, 3.7481494945197129, 4.0497679674883855, -13.403170854742045, -3.2658758875600911, 15.628774351833318, 12.740734881887544, 10.303588286874485, -8.3367865164010961, -7.954139312420641, -15.819370546545009, -14.742738079502558, -14.079886777226065, 7.2254994683204918, 9.7125046955119299, 5.4490460888017331, 6.061905822509341, 12.617370169626561, 4.0431541884640083, -13.631515821779267, -7.1471186237044639, -4.5176441761627988, -10.94925956117711, -12.565959924548505, 3.3677480120876169, 6.1653584703748683, 11.489096690257293, 10.40210318675167, -15.14537117274776, 2.9537722181208022, -6.6027173882383812, -11.0054480305749, 7.3554833803130384, -0.8174751300427856, 5.6522100640590036, 3.8167044039104701, 6.7172289240850134, 7.028558852105772, -9.8320049598073389, 8.1835307340736172, -10.600978479173857, 7.5248398245621475, 8.1028253740583498, 9.1869660690769308, -8.6633294373089775, 4.862627532230297, -16.393472998261629, -6.5438161130230643, 5.0556454924094245, 3.8703781814319234, -3.6308128667781365, -11.46889345644729, 6.6372018623224704, -9.5794040059520658, -13.805097707279627, 10.114212654730773, 10.067130457147128, -11.901791906683718, 11.19726801446599, -3.8149351883366243, 13.081583529016925, 1.4480272776177645, -6.8162158126807242, 11.181577132194709, -12.714480848213737, 5.3658328127941148, -8.3699479507385064, -10.928108994254181, -6.8580906466257687, -6.9376987651615307, 16.605363795830041, 13.342459450520076, -19.246573429106455, -7.1589316353066641, 13.511443027553485, 7.588546943890953, -9.1724085985991746, -7.1723433683352731, 8.0051341635444775, -12.497826539673664, -8.8986924414821313, 12.1430742948708, -13.488942962670228, -6.7874643817677924, 7.5405544546934795, 7.0330509405247756, -7.3978694385714769, -2.5049913539592001, -16.113762442448408, 8.3461248783746829, -14.140230605875061, 19.817797227178563, -11.727868000372833, 10.536455543413602, -4.1646797322155589, 8.9643278483277911, 5.6997086235802952, -8.194167968474348, -9.4900557800548064, -10.203232798778842, -7.377645683512843, 11.114323708786344, -11.129413925075667, -13.662721026144926, -1.9593914968827952, 3.7651555436058097, 7.8968315315212338, -15.65802913412778, -12.555906061492522, -9.07183312013691, -11.817875487515439, -7.7841327705026186, 13.993369709253221, 12.841312748042256, 17.156455087414471, -16.051522915057898, 3.9786049235545669, -21.015196338966561, 8.7133705303298949, 9.5303853252585586, 10.367939566907191, 7.5160927391312846, 4.9709335199294173, -10.980707406721557, -10.35515831375006, 8.0001897687366093, 4.6646563363280098, -9.4126442740415897, 9.3084575075457714, 10.907637564502942, 14.357584443771001, -12.030960905696011, 6.7442831573909938, -5.6743335188573099, 9.3070095334049068, 20.090631228733358, -9.9182746112164928, 14.211919200276979, 15.008410036220484, -14.859390149365256, -9.8921367355538088, 8.0766461332372597, -7.7625926870490591, -0.75633574808206139, 6.9272468673207683, 12.032245097041196, 14.288418285112828, -7.7456922126886267, 4.8331804438952002, 3.0734583352340064, 3.5864699332256613, -10.370026281044771, 7.0203122786383902, -5.8886780898784483, -14.591739376395635, 19.866814875356418, 7.6929267908141474, -9.2738362896696991, -3.1835699346837907, -5.5513820709870076, -2.5503234375086077, -9.8248725997955297, 10.866645918635795, 13.82246152303998, -14.007190447545439, -2.5586305422062301, 4.026636003024624, -6.5981537981103093, -3.4628917483531261, -12.103573601608634, -7.8855749813245373, 10.963183034776939, -4.4175857409888364, 15.141910696531978, 7.8484691435905649, -10.8830582712206, -9.6305574772933102, -9.0060955910398057, -7.9385853675380273, -6.0883950116234429, -8.1690846784881934, -2.4101816365078941, 7.8648643951348447, 3.6970209436929808, -11.228409719118897, 16.916110739699427, 11.502363483900913, -7.0676447322037763, 15.378261789953561, 9.0105139836539738, 6.0752376646391912, 7.7089815057891542, 12.080838381285085, -10.439009426303196, 15.806810509866835, -8.7437797215916948, 4.2304953775751448, 12.996512499218092, -6.0201583751831595, 6.9365682895843994, -10.548128778209085, -15.742829644825152, 3.6998158879629113, -4.5074702831619868, -9.2552154506323223, -14.754719391156428, 13.758849266086925, -10.863216934147474, -9.9127382622775038, -5.0213654564249106, -15.188096154269765, 8.7245007344899115, 1.2389232398006267, 10.934230779569225, -6.4393708304202715, -6.9707954091416253, -7.3301631279841954, -10.66748552282853, -13.453090921601861, 5.0747818794194997, 8.8974423876857713, 8.8792692732490401, 4.7491945880491624, -11.095540184001166, -4.875603930846113, -8.3300531591574938, -3.0638156715373941, 10.88627584812868, -13.376680633112292, -1.8485091244969876, 14.744568729757839, 6.9066756707444226, -12.320675247555984, 9.3604823575671183, -15.029370620263002, 9.7099911652157047, 7.1718198828984816, -8.4994865580889698, 9.2278770819246905, -10.733545487204845, 10.08197932290223, 1.0713815708786152, -21.494987778292966, -6.7323064920575693, -13.414349901732432, -5.7897001067302565, 12.428527186496074, 1.5509990313172464, -5.7670067032907104, -7.7983603199626765, 5.3335463064093673, -12.190738573154626, 6.3390376704756557, 4.7693671045184454, 16.847048348864522, 4.4191695443961354, -9.3640799647682531, 9.258647726264293, 8.3288417601659468, -0.78367727886888505, 10.131531426995702, -10.412902009852315, 5.8228523774912331, 10.316964914370844, -9.9599099015297128, 4.8739975946167506, -13.714574994825467, 7.2201177386007513, 13.857521108343581, 5.5298435363069292, 9.4128292879404167, 17.050340872320767, 7.5013637742565509, 7.1817720431625078, 20.305121900719595, 8.7898782463512948, 9.4056715022306179, -4.2657243710526496, 9.3214320347269641, 4.4286015748992469, -9.1022450943510602, 7.1954776559592553, -13.253737961625049, 16.717357671317831, -9.884934809799784, -3.1110873357436266, -12.18631321105979, 17.551656649236996, 11.08724495323357, -11.967295990444581, 2.0905271800878444, 4.5701202355251258, 11.23060742868933, 7.9432986724359891, -7.1122776735906861, 15.284491815766254, 3.7490756610617257, 8.0892231418915017, -9.8352473170911257, 5.494233878288437, -23.088232741671852, 11.171550630803566, 12.747326461825349, -10.397856449865049, -14.291332560547424, -4.1653988793688619, -8.0842307351057023, 0.36519824348190477, 14.490243603824146, 11.648414371991864, -16.393779139153164, -6.0342527301237965, 7.775004041472994, 6.5293576672497888, -9.2826990813860846, -4.1652321280906737, 10.997044901921416, -9.7742304172999059, 7.8323286652840141, 10.47877960615117, -10.966088791957388, -8.5206814263866981, -11.353422842622162, 1.1067499539694665, 10.076021320382866, 3.3487383663741221, 15.906508156426158, 12.762425196368822, 9.6389629936392449, 4.105595056407128, 11.174561704580764, 10.339475433475101, -6.5396278423353751, 13.517179684529431, 11.619444305889109, -13.842774719767178, 7.9412677141437484, -8.7824419718098312, -2.718371555359111, 3.3908195743855933, 7.7751463350366183, 6.7011166463622729, -5.11658508259102, 7.992655050280721, 4.6572233317384342, -1.5522752962726871, -0.75028314131586116, -5.193423090690434, 2.0480871728864622, -9.9229041532819906, -10.660156855777927, -6.1084296872528618, 6.5939919856362623, 9.3421604318116955, 10.759874765456967, 9.4603190710786453, -9.2651685788797717, 9.6291171179553974, -9.0687653547970619, 9.5659495525882523, 8.867450098819031, 20.580956392766133, 11.16246991375187, 7.6676711997781632, 12.303655259508551, 11.61514542696194, -16.384840134875038, 7.5507331230791914, -8.9913207437506788, 6.6004868962959247, -8.6285623342474427, -6.0665322670278767, -5.7221075019294174, -7.0650923535060546, 6.410945674454136, -2.1916491819924357, 6.4980816064973483, -9.2978461505686312, 17.085450018375781, 10.43835468231384, -4.9520108636598064, -8.0268242198968434, -14.543949389330887, 13.188409663654349, -5.2283081808484377, 14.609411914336661, -14.753182491604827, -7.6893144702649368, 9.5004286904480058, -10.985432198356174, -8.8642905686503948, 5.6718211501411959, 16.342048556093328, -7.6289272114262268, -12.030225238292241, -9.6381102647731538, 15.77823202532602, 7.4703787538541997, -8.0450075949578892, -14.687546503969109, 7.1364573833147675, 14.846139359714277, -8.1887395819534721, 5.9210675896997236, 13.941404745139831, -6.887849167495129, 7.536343339596935, -2.3430546962671985, 7.7110292424607794, -14.99102970020966, 13.568855544259584, -12.024147334892504, -6.9930701274833043, 8.8530963243202194, 4.1819686905909661, -10.785809880858015, -12.423091249704473, 13.78453464176406, -5.0198517884755329, -2.4966269446427578, -10.814669080592378, -2.4006520332754411, -11.401718246099751, -12.100885963360183, 14.121484767911273, 12.709171910847632, 11.31480469211561, -2.4579101888912076, 7.2201392923650358, 11.820890175097428, -3.0619504320076878, 1.8521915915784701, -17.781126025821884, 15.760743275171484, 5.9369063798384998, -9.0648510234189352, 6.6033877490270125, 5.6320917546615767, -8.1425241167294811, -10.996675777574961, 9.8703862770356583, 7.2788707187552006, 12.741994809114846, 6.7154912002386258, -2.5406684592307225, -6.0010888435617087, 8.728474717846666, -0.21166257380549669, 10.893597158505248, 12.862430790722074, 5.1667782498414292, -11.819488793225467, -2.3712031380379504, -13.222711382467608, 6.5242831109372377, -3.263261041665277, -15.000938752945114, -1.6724084926642551, 9.7172423290600012, 1.1733058374466891, -5.8116717817273651, 18.816725804499924, -11.779150987896481, 13.857695603489177, 8.1557642585627725, 1.4888685099348598, 10.84477620455956, 16.221556560511846, 0.74647986990281157, 4.1512993618499525, -9.2987597333261061, 6.5049670662032923, 15.077486366016723, -12.769578981080461, 10.513358297288722, 7.7114523157501775, 4.3479698461565857, -10.429138576646958, -12.290795535161685, 8.747108697259053, 13.792878917025243, 1.8826218929454861, -6.4623107469723102, 10.502086711082809, 6.9357465361879393, 8.7750688501203857, 12.446665388997239, -2.8267588536660169, 3.2223279910615181, 9.5630128844704032, 3.9597052407582671, -3.8197131545274448, -13.444658882510057, -9.9182787412791136, 7.513070049552975, 10.340486266300775, 11.600431046370822, 5.0451845600566863, 12.74863336851493, 10.364662362220068, -2.4384235209453706, -2.6086234014196816, -10.185100016984862, -5.7981832553469568, -0.38450569435511861, 11.834031259960121, 8.9430905500898881, -6.4549491684852223, -10.505141795839775, -7.3615588314880913, 1.3372828216784016, -9.9318831675417272, -11.049103308701532, -5.626091031807011, 2.7803777342117204, 0.52503417246841178, -1.6806886763482836, 8.3170446234919329, 11.788315338716185, -7.0158325804072392, 11.857702971982228, -4.8488008569730674, 13.253773067157299, 8.20568258305242, -9.0389030015722049, 14.887610867231814, -1.0154383239487503, -6.8086594759283212, 14.887441534664491, -9.8622532802902629, -1.9687249977474892, 3.4266024369051147, 9.2675140027210112, 3.6181986230281087, -4.1340511878428954, -6.5843884284700609, -8.1765271158574695, -6.6959753637255535, 9.1330058007274904, -11.580628686763648, 10.412036890798372, -7.9852535908764803, -2.066028681155462, -10.756565036526728, -9.8133785064660888, 4.8114898712850085, -1.4958379149956031, -6.4667598569271991, 7.7184116648576424, -14.143983800278873, 12.36732920927196, -4.5964111816335791, 11.671988769413542, 7.01089754277249, -9.7847464601757004, 4.4476625882665486, 11.241171870736423, 6.9121362588472701, -18.546226320839764, -12.540231699471711, -8.6150767219004756, -0.092545964682283821, 10.8998139352605, 8.2795712101849883, -14.573994046100974, 3.3125027457401388, 9.0904337928529149, -10.902036425206635, -15.148823388838307, -8.7347152263289125, 7.7391065697158332, -7.919315463347389, 7.9592504585066974, 5.9648188917822162, -3.0106034285134666, -9.0938472573403057, -8.3364039693511334, -8.8986027900838245, -9.5851209160661206, -15.335543519783313, -9.1773884216004316, -10.011785811167911, 10.122745364098886, -8.633738252541125, 5.6251697697143577, 8.1908926997540767, -8.8131518267902802, -9.8786020040978677, 16.379951689509195, 15.466103575511026, 8.5125959576275196, -1.7023983504980822, -5.0160270923626538, 8.5542466792098555, 11.273426369135882, 13.829410869652042, -12.954649410138616, 7.0799135994674023, -14.959793004116543, -9.5643525089997823, 12.72453316249624, -10.77781601559705, -9.0053926092097178, 10.913493735165888, 13.257764256419453, 10.93721165226353, -9.7368734846652263, 12.99363281305792, -6.6567821019994895, 4.6536726929252223, 9.6439124219609287, -10.142082317274832, 5.8908605698429755, 8.9011495383446171, -15.881017409949878, -0.84678824947172149, 11.030375023503865, 12.699876172410905, -14.501436073518041, -6.3718745077042076, 8.7154172506189216, -8.5919297375605552, -6.5064908011803002, -9.8958136528636498, -9.5838858337467521, -4.8928250013172407, 2.7409361524707689, -7.6894330159685103, -11.363952695394833, -13.70607067963785, -5.3469266767749737, -23.3789788247995, 10.326347771315914, 12.689154787984338, 11.671864351277186, 4.8725115464611291, 16.376577944608385, -12.081594440873031, 15.659365725642424, 14.061507482319595, 2.8370432258418505, -8.4830856115755342, 10.144570163744154, 11.353444525450906, 14.458537113108267, 4.791206875640702, 8.8352129273228961, -11.664461988421746, 9.9940575173815489, -8.6630839607454035, -9.5673509344602135, -9.246591750822164, -7.3345027912797152, -12.095298763025212, -4.0184114995793552, -3.0210628120927234, -12.848224924090761, -6.6001975337837733, 19.33902694583438, -0.68210716517027581, 13.194243893359641, -4.0082360578050631, 5.1404823992836182, -10.003310793611988, -6.3394610018939677, 6.6723255926611023, 5.8759314259957414, 11.926921272680948, -8.580642143328733, 12.379442682929596, 9.9509920638225022, 8.0740136700440921, 7.2490974845377654, -6.3898648023378781, 9.2529383018887312, 3.6436181259242328, -4.8882896763052095, 10.23797565990545, -5.460880266974848, -10.639651353010095, -10.554526245203862, 6.4030951998046799, -11.755977980935455, 2.8411247602237655, -12.259188165948634, 9.0075707977810566, -4.7318328373201188, -7.2765223909636836, 6.3179397618510995, 2.6306066922179019, 9.630759721297121, -16.198841216114644, 5.165511353133458, -4.5830181629512055, 3.3750964260001117, 11.548015647303192, -0.50783202101455527, -3.3430631440796121, 10.676416137916966, 11.032319766738961, -13.211604095315202, -5.5770664141484891, -2.9653936980691067, -10.63874093233181, -9.7276984860278368, -5.8417169547552827, 0.94317100452253233, 13.400988632906433, -7.9624495791974548, -13.709842459323442, 12.553687701609002, -10.937940350186638, 15.755977699168517, 10.284565347521939, 9.7272205603442981, -6.6301607508816218, -10.068513769995134, 1.2408468920713884, -2.2009681520313884, -9.56401565076753, -2.5175193826520843, -10.398935686852829, 15.621955102193711, -12.569234547946492, 6.8291257431012857, -11.798025890317072, -12.476239993015655, 10.053724402954618, -12.445250842550683, 8.2396779351113434, 13.824134714657966, -5.2017126426219322, -9.102672620364217, 14.973696859918942, 3.2725609101646218, 13.568564891102868, -9.2433182890042875, -8.2713103750951298, -5.0147865248038705, -11.309600038830599, 9.2590048476162643, -4.0690646525538074, -5.1568273802219728, 6.660030654377203, -7.927437683210643, 11.189284087168199, 9.2168274865844761, -8.6499471634947103, -5.516662441462624, -8.1376904914916643, 8.892945556147982, 5.6785627029778087, 0.66768034018891653, -9.3798027259603636, 12.887278538074565, -9.2998086401665354, 7.3834409357521791, 10.380456754185703, -10.487869873972667, -12.906812701740503, 12.28572872271654, -13.1763395556542, -15.888870724017384, -2.469340653443445, 11.081100710703042, -10.467715813720705, -9.7389749121508782, -8.2681125773150548, 15.184079152116249, -6.9214487756633822, 7.0721797990868955, -12.64070192586945, -4.7062672334588953, -12.847633808878607, 8.5381112828162919, -5.3039544077537384, 10.020211784230248, -14.910200760977006, -10.053541389554871, -14.941875759965423, 8.6870838393152514, -8.6373342393783386, 10.730268540646634, 9.8601210063994316, 4.8780620924903682, -2.7115610821025689, 3.367923539748868, -11.312679258640989, 11.821375457455002, 10.410174103493345, 11.399906697384074, 6.926324572712458, -8.1371207041809956, -1.6110491092625596, -4.5910601692545576, -9.5153951339232528, 2.3329308802756268, -8.0750195984204094, -5.3886599270109077, -15.657204154119897, -9.1468718406440424, 11.231457963459656, 7.143788502590052, -1.0446379422622789, -13.751959805382818, -0.91849801044455281, -2.8453007697880612, -11.848232738399904, -5.9527103225739406, -11.76390486174334, -3.704608825630721, -15.558574645005072, -4.4980354132408271, 13.394440934883939, -7.1888152196346651, 3.1256174122904281, -11.421511054937122, -13.123551160306411, 0.28473636356439541, 9.5446270072766328, -4.7794426504031735, 9.6113726265797066, 6.3511751501222573, -9.9505275608424739, 12.18016045027511, -13.670434950599086, 13.537936862988031, -12.61835131762717, 10.271770155403473, -3.2553354515019612, -7.3509435380450183, 10.833255136758646, -7.7197971718014138, -0.72306396363408609, -11.465237834772823, 10.581790724509975, -6.0259420116213835, 11.591447385790643, -3.9265857523693195, 2.4198387554236693, -6.7703518545048338, -20.893767335428699, 19.580597405889041, 10.89114390131035, -7.9837304366895285, 6.9808666958992776, 14.080621928372013, -11.955871462857358, 7.1494059040079136, 15.008216955793108, -9.2423061655340426, 16.328585068217539, 7.3562653818568036, 2.7533625539782731, 11.89584977909254, -8.7835126179447069, 13.029987689249989, 10.129515440180452, -4.7509372163449077, 7.5564892687881171, 3.4689526152445627, -5.6741492148129966, 14.184505909652174, 9.7666178084443356, 5.250664467926816, -16.052283362837375, 9.8589958224650296, 2.0076120429754387, 5.7779072291833184, -10.862664796401271, -4.905494742783695, -8.77258404473233, -12.472655098663514, -10.107007631429786, -5.5274628133367534, 6.2207490633007057, 9.5720057731592423, -6.5249739929745001, -15.577672570807019, -16.194582605297995, 13.089243246399228, 1.3304335534782381, 0.056644287255924283, 1.5296115776582058, -7.489938472282585, 9.4643405904881472, -10.41195983931766, -3.2720761440648727, 17.091876912066706, -7.8753750173034529, 2.9084690450097175, 9.5977127026006652, -13.073081278860617, -9.3912861069398925, 2.8902317210057271, 12.169354141435969, -8.1160141482378343, 16.646694364960751, 9.3282856800443081, 11.069548409303584, 5.798461002057997, 10.259563884401397, 9.0788175722812241, -19.796494364196604, -7.3887430327020729, -5.8709278551344291, 5.5872333376686329, 10.821854873289302, -9.2117848091927552, 11.763462170656508, -2.6369334318903506, 10.141891947201049, 8.6191276538897057, 0.060308685313455589, 9.6030055714419014, -5.6959577523367066, -18.343108808786941, -7.6303400155026138, 9.3559490975863948, 12.357508694753873, 9.0088405984393027, -6.594815545935119, 12.373204997732341, 4.3032531419372111, 7.9583601073514458, -10.104429052647333, -8.5431279295203808, 6.0048846292362645, -13.118172786262546, -5.9034495169594692, -14.91821876129139, -5.6892017442809335, -5.0459958592321454, 3.1067745178551216, 9.1009009525656914, -9.2588666195830296, 11.310864612378349, -3.5769656266267416, -3.9410358089529032, -7.5267568189390301, -14.212705460947818, -0.95934492159774754, 4.1995059689812608, 8.1327371589701638, -1.2405721673007322, 9.9454506813696959, -10.795907496764855, -14.371296251661679, -6.145642067695924, 3.3537388396884693, 11.460026212007147, 10.060874444797005, 12.445997093239916, 13.563765242083305, -5.5683739229828557, 11.724930235207101, -24.92486229511022, -5.7363446021592779, -7.643311057943472, 1.9495072245230483, 12.444028344015855, 2.1982035913666835, -12.71186290477196, 5.9208843181710638, -6.2008222855571731, 12.997935822047708, 11.273961986631612, -12.977223299891167, -7.4067328110779176, -7.6433062825585703, -11.759754665070405, -4.5023084792766364, -3.1263587585303005, 11.967640076286415, 3.9394188894380844, -0.024459741792052098, 7.6821639766969483, -11.444676059901822, -2.5340473769901855, 14.596454875389364, 11.25633255621916, -13.268516358186741, 10.227635531884278, -10.329097618632543, -10.628285162557344, 10.458055468193511, 3.9399692202818888, -10.807338477574921, -6.5158216451492788, 11.233457946282265, -12.55364665911174, -4.3622614115872169, -6.4784001802861972, -7.1819953246727763, 11.216936663295916, -13.109092327339763, 3.6490816825095873, 7.4334190816175552, 10.989086529386073, -6.2835154318038802, 11.827149801252338, -8.7113852245559826, -12.17845318564053, -12.196351844509872, 5.029455990964018, -2.0032032011310723, 5.4992707477796037, 16.750637715891042, 7.5779066119432583, 6.5917946632592042, -16.483457770059836, -1.3750677320518387, 7.3653910133394671, -17.547851829050469, -0.91317384347254482, -14.449860367806366, -13.129943980980743, 7.0343812078810375, 12.93199550042285, -6.2658341174797947, 5.056809395680868, -8.4984099185233823, 13.527235870745638, 9.1700988933463528, 8.9518037238347272, 15.38239443386037, 9.2796059226143601, 9.8950393951872915, -8.2871941119309884, -5.8724797261630206, 10.312578271613047, 9.3850597794148367, -6.1283458817109357, 5.981963556094918, 0.19289616113519786, 11.070131006261589, 1.7848040167416142, -11.914566190360178, -6.5962433860207232, 4.3661436704478289, 11.668463502840444, -10.483625202117352, -12.57990946916861, -2.3351420125495639, 3.7379368821818617, -2.1708563817437607, 7.1479883890788543, -11.572903146508375, 12.466634758011518, 15.993442360723387, 15.551745070208922, 12.547618574592333, 5.9812704799618901, -9.5012134668775907, -8.7128302302143421, 11.068467107284492, 11.390106316921248, 1.8556097346524216, -19.027875255828462, 6.4920835939963748, -14.407744570520471, 5.2743591534222345, -7.8345818080386396, 10.251983670724487, -3.3770829861192131, 4.8495060651650359, 8.1134818713292596, 8.6673409612812904, 13.759404759509, 6.5608895337556126, -8.4504140736500304, 10.867734190135552, 4.5805961393548547, -8.4994872034112543, 8.0493700381300357, 10.379487480115118, -4.2681052765451586, 4.4230987827190242, 8.6680104760927392, -9.123851904128788, -6.2192996694508169, 9.7821588468812717, 5.9746876764071475, 7.150112919102277, 11.388505143270159, 6.8970384277549943, 12.899063155496266, -12.216129939999169, 1.3345357381732421, 15.843004829874642, 11.476757870058082, 0.84648778741628539, -11.010491353288907, -6.4243126221162346, 3.5243026819309637, -10.893862256899521, 10.545102216697073, -6.9407728223936473, 11.847353035062339, -12.518514281454504, 9.1491637350018262, -9.220178709737576, 12.420700201577754, 10.840693895790904, 15.889604842647676, -14.706291825675073, -5.2468963020460162, -9.8980538246403675, 9.4281290403753584, -7.8234571617167941, 14.490934356796954, -9.9565171841537516, -21.196395608707391, 10.777615449431181, -2.5274093338479298, 7.5639129272789285, 2.1634842199712145, 5.2538355816304483, 13.621706406804465, -10.199311691516732, -9.975495080010873, 4.0461123458139161, -8.7266540055545558, -7.5918775812631933, -13.093941708884659, 7.9860050041439834, -8.2647658391518277, 7.7693559227144124, 0.30326175943596811, -8.3718403260702559, 2.6965787636991316, -2.8285941502417455, 5.6932393967475372, -12.802637551045798, -15.921585982527628, 6.7598636895517092, 9.5739640036300777, 2.1437203215721659, 19.274557700888156, 14.186451685402922, 4.8156152875822373, 6.5941783547118851, -12.476683458489228, -4.0595815125258028, 13.289269406582722, -15.359341456844174, 9.1452295599634628, -0.36956416032003164, 10.164498232132253, 13.497907263581888, -12.574073174432012, -14.369910615653447, 14.595566395668738, 4.262123397101286, 9.2403420626304253, 13.020035787114878, 11.184821812638717, -12.689353805376726, 8.9898204662386938, -9.9395089409718906, 3.7477974066815571, -7.5478986094789002, 0.30827049287555108, -10.632731433094182, 8.6509936373629994, 14.203293048242141, 5.3123260446797627, 12.218946384575505, -3.4989049374701628, 13.154370720075143, -6.8453303019106402, 10.234110695682048, -12.498002583592742, 1.9328362267668107, -15.865771283796738, -8.500290210195363, -7.6416963325244183, -5.2090897088438375, 9.0278625698084234, 5.0077359916576762, 13.81591279250183, 6.8533945073005613, -5.2796443429282869, -4.2188625399546407, 4.9833358398413763, 6.5035974341877072, 15.401815020804325, 3.6498581342817098, -3.7092995442487431, -14.772103340972043, -3.8499989037028421, -11.899075874254772, 11.637001202076837, 9.1311542742963177, 6.8696967679037142, -1.4412808959383745, 13.260317151375006, -2.2477787979979231, 5.6509777566254549, 12.814344729793421, -7.6538958921747415, -7.7373815587184414, 5.7307723733012956, 13.865039371081226, -5.0976735258646944, -16.139774609330164, -6.3744397928476086, 8.2994000602719211, 5.7107072384600714, 9.3915892793489206, 5.9788732367412445, -10.165257260202708, 8.4706781129522462, 9.9680351544077013, 4.5752415131710409, 8.8460954809898915, 1.4084876068896433, 12.079715004253076, 8.167098634626921, 10.257528021659796, 12.7838726115424, 10.087718561167314, -4.9265588365205684, -5.71336958007499, -6.6200053140981341, -2.8632680909484205, -8.2056430247964105, 6.0795192489291496, -8.3739876682364169, 8.3506902431390362, 8.5827329794624028, 3.8229036278995974, 5.5306279900753728, 14.286490578386031, -5.242961643015942, -3.9320348537355119, 8.8537796722198152, 2.9578439436040003, -11.977220014657023, 8.0565192410534561, -14.586550468974357, 7.947736618315365, 8.4997819543644759, -9.9581751461658357, 4.8344561169862352, -7.9991693206089023, 8.0663494999380312, -9.1855747219664874, 8.4547398463833883, -12.555601727503381, 5.193398052185815, -11.534267701364611, -0.24826068304076013, -2.2659583767318465, -3.5297925676655053, -13.792757080178019, 0.020651899665136787, -10.82691497438269, 11.125750043275966, -11.202184595883416, -14.332514963681728, -13.007037963799233, -9.3663022611177045, 2.6454382633357936, -4.3767974250990314, -7.032067469363942, 3.9429717758049376, 9.1000417704767607, -2.5975223093612043, 3.3597553084067648, 11.728530617294055, -16.282013965882829, -13.735547969055839, 1.2223751114072647, 11.410173258664868, -6.2817759010550995, -15.456469171939647, 2.3309520640239345, 3.8234601538373285, -9.2207454962996245, -10.757324451790554, 12.658809152900984, -8.0010308818015901, 12.416923259313892, 8.8533496294497525, 17.644337319408891, 5.5377420229343146, 0.39968367447506781, 12.255322685467403, -0.82056449248738628, -0.89478577218300959, 15.766508326327928, 1.8656530144229491, -5.5734270545955784, 6.5783431783778994, 1.4574613731521846, -11.875855113444731, -14.74954132514952, 1.614691824491348, -2.2672179702236566, -12.350748814764398, -1.659191184165467, -11.97642497760312, 10.306954804165716, 10.288692183528191, -1.5666334589630291, -6.4276042820225223, -2.7235893732187142, -6.2890378417815374, -4.0396276312463426, 12.012542891452499, 11.305634920588719, 8.9046443134397961, 1.303553040931112, 0.25402772362193354, -4.9609521910981558, 13.642465650294374, 5.7586071884420171, 10.604057182726418, -12.796857528412364, 3.209714263569317, 8.0981529180609648, 11.786463780018897, -18.167094832662602, -10.173111477721411, 10.569677508981252, 15.737505994110974, 4.2408210503771544, 3.4415615237063268, -9.802723203041408, 7.9636830482111147, 8.53521478601062, -9.5789715754895486, 6.8653669135069118, -8.4288256716904559, -5.7725809971800013, 17.663452281719142, -16.145351742637505, 9.4012301361431376, -3.1946286936004382, 10.809895115399719, -6.6784478942339742, -14.434374181763573, 4.3120574029224361, 1.9879581074935853, 8.0812516047815635, -5.8884153146443996, -13.250854145402261, 3.5828297992860096, 10.730443164856686, 7.9954989855863587, -13.936790432680235, -14.084719983004398, 3.0969867857090643, 0.8468894360058542, -6.5190851690039811, 10.150950465166176, -3.7956467633964359, 19.77148993259355, 8.5716923621684646, -11.282284837192964, 3.2731205336493163, 8.5821306275759781, -8.1557789719108467, 9.4744702143802737, 7.7587621830356239, -10.699156778947703, 14.492273529600732, -10.683443826654308, -16.422731910618708, 3.015006591521733, -7.7243819285004029, -18.752567346765677, 12.760859128249985, -12.880073901966947, 1.3443214052879913, -12.669427285762106, -17.335979616763833, -8.4100051376722895, -4.8411803751856333, 12.767500785197029, -7.6321049719493841, -16.958146517022104, 11.267199267224086, 8.8615676635391214, -9.5094315816322492, -16.145023918917229, 12.676527895917543, 10.232042566826248, -10.648819446699044, -6.3564933801292511, -6.1186828258301489, 9.4800739994979448, 11.92813731799294, -8.9972565149173569, -12.041397573930874, 14.687724096661672, 7.1074061356686844, 4.6606803766717588, 12.305481779701218, 8.5996540355704294, -0.067960734434929809, -9.191807083254897, -9.052712478990566, 11.104517133229594, -8.8996676363846721, -9.2384645619773238, -9.4567395329014623, 7.1009655611453368, 2.8792183927778749, -9.2805448020053696, -7.372209230463417, -10.862605168622229, -12.593946519490427, -10.90304003042273, -17.590922187058876, 11.858016598612258, 5.0275254448191706, 1.2935087286449309, 7.1363510342023622, -15.164316286232856, -7.0872657562491437, -5.2098981686012449, -2.9494279085048367, -10.868858857812127, -7.8106126024436024, 13.143994970263892, 7.2701377013501309, -11.995400292171105, 10.913483151880431, -14.888482826701974, -9.6569452217443672, -10.779897050898533, -3.1580538915739793, -2.2169060636729889, 15.106021484900053, 9.0514038299308179, 0.2135309864887463, -0.65532990418859183, -6.0205440197800861, -9.2923645249593232, 7.9732684072889057, 0.5626864801868362, -9.2245916816445579, 7.239928874590988, -11.488509188849928, -6.2795614131052861, 3.4491690990480808, 10.850511312762027, 6.0765734817670944, 17.477582943673379, 1.7976153953750558, -12.365951575260052, -10.491771492501799, -9.3035812587710947, -7.7036052613088257, -14.677134616109955, 2.2225730258422631, -8.3078811115911986, -14.283066240218153, -8.2067309736350254, -12.484186491620973, 7.892512776667715, 8.2370605401935073, -1.0832695154723395, -3.807396275285889, 1.4020328352760474, -8.6452441436727288, 12.878158843556914, -1.3842967976222773, -9.5074499904947345, 14.858822782013151, 10.926383660595645, 14.768008383886619, 13.231038621220492, 10.366374144110637, -2.9888302546509204, -0.93227958874848049, 17.031411762828316, 5.7555798525432627, -8.0536924067883433, 13.061357063604698, 11.377969353532476, 10.894654970793198, -2.9767074883523952, -8.8377973946711919, -10.778944038949504, 10.647067525762411, -6.188764309615963, 13.347300400165818, -4.7270721657665087, -4.585380300639601, 5.3355943012099063, -17.15778496757736, 8.2106960918769047, -7.6659395419612464, 5.1702505999872379, -9.9416320512862875, -10.567100608036739, -6.6621754475203439, 10.737490600455919, 7.0642401408977893, 14.17535007708662, 11.921006764883527, -9.7296722042334842, 2.2774455540384966, 11.100299306781297, 13.379169512097267, 5.5438403185182228, -1.7038402586094779, -4.4438959711592307, -11.015732144621818, 6.353422936701925, -12.49811409528342, -8.7892635123435436, 7.4431993280251199, -11.851997290475913, 11.180195368120183, -9.4564999247374093, -8.0571277799672796, -10.168682889015153, 7.6865489416168051, 6.9537720654183168, 5.7547238970657499, 7.8132907544544787, -7.6758670509140217, -13.461429518026945, -10.21288294821395, -8.9098639059356817, 11.07076135706861, 11.62484900908216, -12.80595192629648, 8.1187644795461757, -11.015077271568005, -8.4774451076199036, -3.7096485345399364, 6.9589204466001604, -11.504810029744057, -10.826137748223829, 7.1007040765558553, 0.4600037552640116, 7.4392930631755414, -7.8921933421371309, 4.1688449003654826, 2.6934001642570053, -11.552349631762612, -9.1209688622927398, 7.7694234234253194, 9.8541491939831918, 4.7846984132130768, -12.01616573075494, -10.384957877116683, 2.1213555162396389, -1.2631465733111062, 7.2765963448974311, 11.702037814375164, -4.6419600934704146, 3.035465372956204, -12.665485915380279, 14.87611948425597, 6.3759617209222226, 15.416368328953348, 11.102568001802966, -2.2016521936524409, -5.7507417423155722, -9.7315904892549394, -8.4533661972365834, 6.6915869140653612, 1.2563325618563539, 3.6818170750750916, -10.259664812806617, -17.42001606587694, -9.8723329562376083, 16.722298258724223, 5.8040784034758586, 5.043607134265649, -6.0884200501280628, -12.46479120131055, 11.417428746168465, 8.6016774355254189, 6.3327612659413601, -4.9756593440796895, 11.629008498395986, -6.582432456627223, -10.213175795466436, -10.537627190552456, -9.7385382870935207, 4.3497930106733751, 11.46262376326475, 6.5885174585720812, 0.80127702445627158, -5.9415294686811571, -8.6848050853324796, -7.3296356415492445, -3.2092966109871042, -9.0362020696847036, 10.187380715001016, 3.7228244668059678, 14.264384934482761, -11.939066238066045, -6.6539140316404284, -3.423568905912433, 15.172211417184364, 5.8169136055759321, 12.933803177204824, 4.8346094455609157, 4.6986051929163697, 12.4369083741919, -6.6598620961966191, -7.7823160592086698, -9.3322714485992755, -10.024348687264132, -6.3620854849135808, 10.787347554796357, -10.33142787740011, 9.4500345698383548, 13.338004661729089, -4.5117170200486107, 5.2748841876325061, 0.65397841680353774, -5.8761113418485245, 13.212466762144471, -10.594227246502985, 12.112481630417129, 10.462985730443359, 7.9597277388679517, 11.168354220466401, 13.529660217502212, 6.5173434441594349, -4.5222832689981001, -9.3978450335701282, 7.1889266022608851, -14.447029209881949, -6.5235646091062192, -14.132016943844164, -8.0244107145546391, -11.606452161409562, 13.815542635639725, -3.8276831428638993, 4.2130923262199236, 13.828479540531756, -9.7289631886400425, -12.759138440911896, -8.7186212797923037, 5.2230635175818199, -11.345353990911796, -10.299784628268064, -10.79288996976482, 6.9682631644991639, 12.038605651601326, -6.4692420245604199, 11.717537423121463, -6.7001782186968626, -14.575297080856853, -1.5602359163616726, 5.9362855798012815, 0.053309261692154032, 13.727680199769171, -19.21601303076698, 9.9590436208956561, 8.4333811952899769, -12.018634733813567, 8.5363560304033648, 15.137481720632351, 6.062257135960758, -3.2889128605836442, 10.260771927717066, 2.4632555224341304, 8.4086305044090022, 11.711569740767839, 7.7204012579914778, 9.8119902891687243, 13.324844217197874, -4.2495385800474086, 14.368646300234614, 5.1645642781494425, -9.2471861571779659, 8.6630893038122512, -7.1887250035793606, -6.8602782891685674, 13.419107217610165, 3.4043006150275064, -6.7408661758971542, 16.4728982324621, 5.3908439557489158, -11.850071648780423, 6.6294164361592429, 3.5102842168909265, -7.7004658329293392, -9.0380414317908215, 7.2683287339235907, -10.90875887650364, -9.4671319965598677, 7.290246718106669, 10.194252235745626, -8.2970544751001114, 11.98884743157034, 9.2368156990094477, -6.4873227933783086, 5.5050009515327103, -11.673571357782851, -11.234442449958753, -14.282675949300783, -13.973379689925856, -9.8025955582936284, 10.068919032389493, -5.5194546219210849, -8.4363464834511248, -16.467089815648173, 8.2091648066291736, -5.2783999034357993, -6.8017497521044961, 12.303739925792215, -8.0359828918804457, 10.305533030109581, 11.59795817137849, 9.6806921783447883, 12.902365914945838, 12.670600223545529, 3.3950854128118233, -1.8139059111126397, 13.03804337638576, -7.5951176153867577, 5.9670540300451185, -7.8696197105134971, -9.7280763222251245, -9.8409744232972702, 15.044642043049675, 4.5460409379484377, 10.314735842137413, 13.503698127629693, -11.956176571233238, -8.7865839890228159, 1.5241949249285471, 11.55185376611958, -8.7901715775954923, -13.669017306605566, -8.5137964990716366, 10.098894897804108, 9.1581783387855236, 10.553747212142603, 4.9012418108031452, 10.804820430022708, 1.3546435398917904, -15.841568600599345, 9.3125819558595744, -7.7527041555622382, -9.6665818839437367, -13.059319393960703, -9.4240125295256476, 6.0729155369324035, 5.4145709073585344, -14.60360711132752, 15.682389792220297, -10.238640987180267, 5.0128647550420862, 10.231961772476289, -1.4687385091297409, 6.7096888494541664, 12.964085312575433, 3.1670249038373921, -12.969620112740943, -10.372929327871624, 5.3157927159894731, -1.2875702904651249, 4.8921463804033758, -10.625794605734429, -11.159438189661586, -13.733381751212868, 11.443685619260323, -8.8915178935260073, -20.346988345474948, 4.0335471465574733, -12.824806178403986, 3.6873678792332445, 10.546015218664492, -2.6370258420414205, -5.4554007063968504, -11.935828785231617, 7.993131878916377, 7.7987390596111625, 8.1278841095315979, -10.447696625826101, 10.09752487859515, -12.487899934172088, 9.052363585497714, 10.65488392739527, -13.01574361953946, -8.1912611142460179, -4.4315824475935521, -13.533957031398074, 10.001291063927491, 4.4956219078986237, -12.774086686298736, -3.033753462001179, 5.7830251511533559, 10.481630510937473, 12.104585725078877, 8.1274499689650295, -4.1862773784168548, -4.2128636240024706, -7.4142799842538878, 10.309963038524865, 9.310196199375584, 2.2194734138476999, -7.2146745741995719, -6.161847400892019, -9.4496219507699557, -9.5126556117631687, -15.483814832789088, 10.449722034346701, -8.2919390053547524, 6.3187706788239923, -8.8567684339790453, 8.7692762195028298, -10.065092529374217, 10.93620056130894, 2.2197263801830327, -10.352888199019365, -6.7050985429835368, -16.404539501045683, -0.86181186850133484, 9.759706664911489, 6.6007660627159872, -7.8968015885672562, 0.59988079160594709, -13.68647043497003, -11.672130998444938, 12.782322289287292, 10.209900139552792, -14.897584452195668, 6.3987648291500507, 8.3069552354442138, 9.1258435300278169, -5.9677138075482921, -9.769943670431676, 5.1300235319621867, 7.5748074516742934, 2.6157064588089916, -10.958766965322992, 8.7363901361174801, 9.4469516716909467, 9.4208641956986412, 8.862200224574968, -10.003433404845952, 8.6723469208433688, -5.0596204195500221, 9.7054781038224682, 3.225647012632646, -7.8283918766904019, -16.486460325582886, 4.0046986591730258, 10.973336019335751, -10.083763509953066, -6.8134244066090037, 13.663269808215247, 8.2967402354139121, -12.795459502216282, 7.942979947759917, 12.783610094437263, 7.6498621116418422, -11.61105873000175, -9.6482154954829458, 7.8615631199265277, -6.7110396380590602, -8.4485479306691271, -8.4591279895154941, 8.4458195564514984, -14.179773890407974, -9.374594265273883, 9.4877789539723558, -9.4281379458228773, 18.178525813472664, -8.0356775899078805, -9.9171761436246495, -1.3315078860166603, 2.9417408294576926, 4.896165963846026, 13.000697285165449, -4.2586076812979918, -7.0003945354068335, -14.301761484914877, 16.445959899038328, -7.6848364498717245, 14.181040270858116, -16.814223643694909, 15.774494834914851, -15.982703165401782, 9.776880368726971, 10.696066459594027, -13.754385184655046, -6.3340609450213599, 12.943079814101948, -7.7915856620928965, 9.0289706849684137, 2.4194211028414569, 14.937517511388124, -7.5685051051841805, -8.483112376317262, 13.660431422681251, 7.8254420439979571, 9.2327187414249412, 7.5356688487456855, -14.875031729014038, -5.5568642128541414, 9.5281074666604528, -13.155238033224853, -1.2964596583852588, -4.1700436510402623, 9.234118380926736, 14.833083715521987, -11.356381258100983, 6.8889669947554939, -10.432582532612269, -8.0747593399432667, -4.4510112946627407, -12.162236236643324, -2.1349362702487831, 12.849327908938594, 6.2443293976873981, 2.0614851716247737, -5.294782571195543, -3.0189962320104047, 5.6258016692948596, -10.119023790486994, -14.227025420558943, -0.64016438986307633, 10.830131260646207, 11.966006378392212, -13.106840410697478, 15.748441367406915, -12.718522372614043, -10.050278769151365, -5.6224258593627399, 12.178718542163715, 2.1101196808882583, -5.3037651992600665, 12.172135996737884, -13.373151494605489, 13.781174835824583, -15.005831328373574, -20.310893663227798, -4.2773819134422801, -12.562284168818776, 7.1701937998072314, -11.952948152910784, -4.1809790243362066, 13.035229254969643, 6.5740979902647592, 9.0476524101632894, 8.5414171236797678, -11.900086707080444, 5.8681875585876044, 10.08813208368691, -10.896117012959856, -9.2268609574562834, 0.00012179904393089082, 6.3011528642126535, 11.082558880935993, 7.7501126703341052, 7.7717625876404037, 4.5877674768326164, 10.108008655356745, -6.5583606447890279, -7.8084294771567917, 10.007255777798608, 11.010943853274455, -10.389889817204471, 12.93207784354629, -10.702367773568486, 1.5785104109292216, -8.0183281003022344, 4.8067645633925631, -6.4240232596040849, -14.847116119523358, 9.0931620218730274, 5.1193674541507637, -8.4657528358170424, -6.9354105814068827, -6.1975838002070907, 3.5661593177875992, 7.371377280974869, 4.6060546197169323, 13.542364806372001, 6.4566339759043192, 11.30736567495444, -7.3708290151623732, 13.404241573475678, 0.45340399080754967, -4.0282544713129242, -4.3552403051371726, 9.8939152437685429, 14.424260690928543, 13.305889294814065, -5.9338071015794291, 12.632273758711346, -5.3483639385659245, 6.9202470565060965, 0.35521477401275342, 9.5585192472779177, -8.3588001373466643, 6.4432925830046663, 12.692899206005086, -9.3260450565419912, 17.970512112186597, -11.642094085542254, 1.066350713959042, 9.8708030261666746, -6.1490457555507145, -9.010451161529625, -12.584372001827008, -5.6935370193849231, -12.153009418626528, 4.2440182351010609, -5.1992962978616797, 7.4133632394172206, 2.9416912687062799, -13.051931744453341, -4.622910695904225, -13.923817389740298, 7.0992949508164882, 6.5745333246775521, -12.661795446302476, -17.6337292535754, 11.455118665101697, 7.239558330535508, -5.8790741455188771, -2.7376088707744057, -10.660221646135241, 9.6276183569507801, 10.373026255278685, -3.0053375986759332, 9.0528373488525204, -5.9442824135447507, 13.642738234427142, 12.194322434991111, -11.149932076160269, 1.7037571410992967, 14.880097250814613, -7.8008430683859533, 4.3243063942597137, -10.223795606165496, 12.915193889436331, -12.152048146552264, 10.659226946366665, -7.9356265648658342, -8.3307716932546256, 16.673768474193082, 1.5653365436944993, 4.8455603065916764, -3.0899243786328423, -6.1051754560390492, -5.7705513295323296, -6.8852769128710598, 7.623164999687833, 7.8939155137164718, 10.765459642631717, 9.0210677456172679, -12.224995119408002, -14.150465933557312, 5.345651519941768, 13.841522794536196, -2.3000948174338163, -4.7845597979864705, -5.4351375866788922, 3.5245019574522667, 2.8386771818649672, 15.268104243557156, -9.7430277942233872, 15.811612740175535, -5.4515623294515514, -8.6572002917907867, -6.219673181988802, -0.89082305270793227, -8.2417318668768953, 6.9975040078322897, -6.7323255935971762, -7.3304533939475434, 4.7401807263860904, 5.5832271769294897, 6.6058089982366228, -3.1503394508619929, -21.460472844997067, 7.8852878774403807, 6.8939788257420389, 10.957685147046078, -15.625074848243537, -11.723592094918972, -15.798764631629782, -8.2060371876474854, 15.124469958355371, -7.3702221540864885, 14.838537979466452, 8.3093859386252849, 1.5784525900525741, 4.3747052902542656, 16.030788451943696, -8.9631984697985452, 7.3190431925150241, -9.756945072729291, -14.440714344139529, -6.9739174783516722, 6.8071561331354875, -2.2355445200087205, -6.2250786595685961, -5.8997288467987739, 5.5047242373373253, -10.356173792896181, 5.1435334830424244, -9.3653788049292839, 12.462285027688363, 12.377914817889968, 9.4213853579752094, -9.3455590861526687, 17.26727241131405, 7.3245528251114562, -6.2155462169180931, -12.137609705769792, 13.060557896488179, 19.238310206324147, -8.5685627346211657, 8.3551763945930269, 9.8196973732066706, 8.4823602209291344, 2.8049898098660888, 13.666768487510247, -9.7851073243969182, -8.9455268353087174, -2.8029418150655503, 14.782189986400054, 8.4667377266868993, -13.755929311816228, -8.0729370143454471, 10.805604109404412, 12.599814047825573, -17.135366471430803, 11.992116376132229, -13.042876582164091, 7.8861617083451607, -6.5794687495056721, -5.3930873541370534, -15.622499754201419, 5.9419050462504526, 13.804813765474663, 5.6395158003457579, -9.0897997637088714, -3.5776553470838923, 7.7610284903648434, -11.016645146589239, -10.874331190780543, 0.72147388952628144, 13.843587309587207, 9.9280047806148186, -16.170066037341662, 9.7022254213821402, -5.3933217351906055, 2.3517092424825323, 6.9870679849197135, 11.851520784501398, 10.510028176174309, -14.311343746445708, 3.3026680341318051, 4.4390021050862023, -7.7588835681572457, 3.6223844414911199, -11.392883009644892, 4.8263325419461847, -7.0772231218009019, 22.934531428839488, -9.0971943504307866, 16.694009911082297, 6.8967067321010127, 7.2611735295029289, -6.1876050526649653, 7.6539276420311149, -15.629995301594667, -22.73669213681206, 12.806472572315222, -13.602880032619632, 4.8079421474964272, 0.70951529321680884, -11.56763783292867, 13.896373123645859, 11.011258512420138, 3.4407824906450677, 11.879887345204146, 7.7757338364439814, 15.738146153816711, -0.41419103567747156, -2.4147541320834862, 14.987369948472574, -8.4743572404909084, -12.672499794220743, 12.497184056807704, -0.28001570199239545, -12.94992332785943, -7.6301713282575729, -2.2337484590278605, 11.415679406520967, -9.859159218067342, 9.1936659018278792, -8.9943101669652474, -8.5499699832361991, 6.7410389932048123, 9.2520173624572184, 10.227159413103134, 7.1425592927034662, -18.745554500440871, -17.775969642643719, 11.801682544507194, -7.7273473779921202, 7.1236464453325734, 9.7057719190583818, 13.727508285912711, -12.362641071943072, -5.1402983533682178, -14.170537521621373, 5.6895432488336324, -3.5191979245355194, -6.1045249711767653, 14.290504482992581, 12.308816547136075, -5.6938214774477149, -5.6008341501264587, 0.52212712464339661, -5.5362642349039284, 7.6660157545229879, -7.905382180848842, 9.810612009834534, -17.70809516106922, -1.2403496601772057, -0.15782160435460715, 4.2133602640322456, -10.476969606208971, 10.295486523727636, -7.0575322738844042, 7.7362494053033721, -6.0086321448039755, -1.4831550089545567, -8.6265711358744266, 11.360761705764855, 4.2063453526761281, 12.519646951127399, -13.336133743363282, -8.5272902525625458, 3.0551420237824538, 4.9850797587816889, 4.2373879358262148, 5.3635610202254798, -7.7527269354388633, 14.985488704950225, -4.1003720759692515, 12.065115491028516, -17.998495351452643, -16.357350954349631, -8.9589079155288349, 13.936041342572953, 7.8027559972324481, -12.282070003495111, -16.144531408950069, -9.4866664183547194, -11.727943374015606, 9.6630970145456185, 6.9048921290158711, -19.934166904009778, -11.734783532097213, -7.3573804987635745, 10.787048512449948, 1.8203855387085228, 6.9468911229683599, -6.8060936745270908, -4.0675525333779117, 12.619597822150968, -21.186471068237122, -12.083502013544569, 4.4663418289706298, -5.3789656375315742, -14.890316058246391, -1.316216404781305, 9.5406000026277162, 12.532017263054071, 9.4332244405976855, 6.7225013362098425, 11.834640960454053, -8.593891646368407, 10.556917035201668, 14.71791330562338, -13.276952011083337, -5.2089121161512768, -3.5936619210165119, 8.9003033594997092, 11.937206935501351, 11.056226117943536, 8.4803819209352689, 4.9292204037487464, -15.4894843762475, 7.8410390318769148, -6.502762516216654, -5.628969685451529, 5.5683372686771238, 8.5956169477608242, 4.472466013052478, 18.757542007188665, 7.9719147147337361, -5.5287206755327487, -9.3320448759453605, 15.34734052739287, 7.6828857696716151, -16.459798706354498, -16.841613702717492, 5.3562657808691876, 8.6483141202497151, 6.5470262041926519, -11.758310175669873, -13.71448361719005, -11.967662791630813, 14.019415949151576, 0.99768989610712699, -4.7405294585483704, 8.2686539059129966, 5.9924670797184021, -9.7057188735666351, 10.897854736806242, 8.6225617364240712, -4.6254881131065666, -19.799763308758489, 10.677967750816642, 14.67689507247813, 8.2131587707771487, 6.7567017394245097, -17.811631700831676, 1.3610916001536324, 7.2814560088894069, -9.1537527830940011, 2.5743196175751164, 8.1949937228689684, -15.847454456087357, -8.2348678641368931, -4.6092561926323699, 15.95837864535717, -16.246026149005907, -11.322113612304321, -10.247729706228281, 9.7881733796327133, -9.5255805136607208, -17.160321858540268, 12.806643453656026, 2.2906395553284815, -5.8389294206172666, -11.351664468462687, 15.745887439935712, 5.1275152933086918, 5.9522255564741897, 7.7738811806988144, 8.61082160389069, -9.3855791347890083, 2.5014849307967948, -4.2172595594011568, -3.0110339875413583, 14.204561493723595, -3.1852038907069082, -6.59988003522004, -0.17505945320512115, -11.433156799003305, 3.7025055912426708, 18.034317449567027, -2.7251025249102638, 9.4671609715304186, 7.1769944641650572, -11.396310961617562, -12.592840695224545, 12.026224240131368, 5.6957143367711769, 7.807121731548242, 3.270443736815237, -16.679716796878186, -4.6589191630942342, -11.148250366288135, 6.5055253990434201, -13.847068952373904, 7.9248346467136264, -13.586383530008991, -8.5101262931135508, -11.077321445278956, 7.6332915260329965, -8.579089530179516, -3.6424426068516773, -8.0663491127446605, -8.8174376218081427, -14.791858979245854, 10.034150100242613, 4.1684695809251009, -19.201350275958589, -4.6234537991384483, -7.7633367436425234, -5.4425737644220131, 17.084060252304933, 11.759495245512234, 4.6241551353967125, -0.80287380991582924, 1.9852059370167341, -8.8577936413585974, -10.668578698777646, 13.770343230351907, 7.8544289530123237, -5.906146447848811, -7.1070820548176536, -7.2021040833003989, -6.6751055119961658, -1.4835767915993865, -8.5188957712276672, 6.644056862816611, -0.23652820765960442, 4.845459195664124, 8.3584436935830908, 6.9840270972529952, -8.4756792799880483, 4.6255673586830426, -7.6496994258940427, -6.900506260644816, -4.5762513134810616, -6.4107151653342864, 8.7568199990470994, 10.688380154933624, -9.3272647156587709, -10.849469504466718, 2.8600596241588958, 13.419158843392887, 6.9116547193589399, 0.54100615712660804, -6.3079948291966561, 13.979407000058522, -9.9592168253966857, 9.1210143897798748, 13.76739384938506, -11.698421170166652, -11.210325207431763, -0.43878865611267875, -9.5267307360997435, -13.91603273796381, -7.6019597739674456, -14.787299906373772, 8.515353855339642, -7.9993484620749449, -6.5031571953255547, -10.564438266421821, -10.531656539716323, 8.3907769535673147, -10.200579878869272, 8.4067262551472268, -13.120429865483102, -9.9585614360850432, -4.8885839432667177, 12.236140609639621, 1.4006400472648162, -4.7117532472597325, 11.808206752798553, 9.4586915682783683, -11.821793626295042, 16.643803837386208, 5.6220113043274909, 8.792079118000915, 8.4798465777015082, 12.61789365506335, -8.438754197025828, 8.7752428370746856, 15.288077226376224, 4.2876022696475387, 10.147670162932087, 8.1398121820970371, 8.9633754494349347, 6.9072249690725727, 10.562749070811192, -10.272627788718927, 8.2592313293813469, -7.9850097881175808, -0.77775536093954867, -14.654038273436273, -3.090713736850645, -11.007111929551995, -12.143908051261743, 13.145067754028833, 17.014195080548721, -13.59295962221198, -6.0558196589843734, 10.690919110927839, 9.5939627348082759, -13.626523608590157, 2.7382196037839943, 6.2789031843755936, -11.950324014375081, 1.2890044547091108, -9.203655039058777, 9.7296284513826272, 12.616615916941006, 5.3147485845339419, -12.656051045459119, -5.5986635440919565, 9.3002076429347422, 3.3292279505682338, -4.9103514382931657, 13.222584899299941, 9.5144587067569262, 8.440118521265628, 9.4441265152637737, 18.529033902678044, 14.862696264490703, -5.8665961938352309, 13.872033632124255, -14.906419172392699, -11.551436113537365, 13.108661252054045, -8.2712840782120569, 7.7956086657436519, 9.6836685337831092, 9.1880246557516205, -0.35720244225408904, -8.5753236713258811, 9.6884666985614167, -14.078139760738791, -8.0567269702966779, 14.239050097870303, 11.180573010720785, -8.3438476973649784, -14.588404350831867, -10.806339389614816, 15.148980847475608, 10.836208389659197, -14.522225776219754, -7.7397343392337188, 11.832691570898515, 4.4086234295019064, 9.3809378478579415, -12.776911649129225, 12.752335969651673, -2.4193756721526625, 9.08709683132229, 3.717276243936952, -0.28602641626801117, -8.4165416877523285, 8.2724324937486831, -5.7101228345996704, 8.0194030781629397, 3.7247779864241277, -15.996389160401096, -6.6467534065125804, 7.8864006711869301, -10.643940035845176, 11.665222436201226, -6.6019801720611273, 12.318091635259712, 9.505211432023728, -6.3740213658786562, -12.643872523315254, 10.933363724548427, -4.6402401805190676, -7.9548575561227448, 18.615251024853279, -9.1327510274897623, -12.386332918020443, -9.6970271567877422, 10.360767067849318, 10.017239558854548, -5.7946809622471713, 10.24748680692058, 3.4663078263957696, -5.7127129001187793, 7.2854274512896708, 3.2942963972057817, -15.447448082666996, 9.4240943563912616, 4.2740494691676441, -2.8083506483212206, -11.306321543498909, -7.8598045521703677, -10.085092744793673, -9.3809770834528106, -8.1125987155174748, -7.0607164230981736, -17.84689520797702, 0.26017075111447463, 10.097398266363028, -7.6969520530928976, -11.846175967216304, -8.8291032095345621, -12.207788762284949, -0.85154969541207071, -9.4826356063043278, -10.806758203777139, 11.945254878769713, -15.802038222512115, 4.5363494878871542, 22.477445008753747, 7.7153212809717395, -8.7016885715837855, -10.007145298623586, -8.795354435120359, -5.2764732292246563, -18.514008734874949, 9.9312388777733691, -8.6578667710667112, 6.46688169377442, 6.9298690698896204, -4.2756570960415736, 8.4808841268697428, 7.7873527996353795, -8.2073426100958109, -8.4872576201416674, 8.2937560393098444, 7.5054131715887227, 8.2394651400881891, 7.8481348021152186, 11.479257590457429, -3.1673599551672513, 12.182950823831176, 11.788485703799161, 10.613525222212976, 3.8898478128694616, -2.1666985168099973, -18.063401350520685, -12.751117343050547, 14.550046910528055, 2.8273257047602933, -12.559761991203947, -5.1410541548272528, -12.454640798040879, -13.078940288941613, -12.828468511430206, -4.4879330219490843, -9.3996787168401461, -9.8258621369858332, -1.3135111381601494, 0.38819487278835541, 9.1421981585343204, 2.7612354102366319, -10.436298814581436, 7.8534234118293771, -9.8445919709569818, 5.97193447341464, -1.122699223283266, -0.35565779883507898, 8.6272393953323707, -2.6785629143030141, -4.2415840794457695, -3.6974364556373041, -11.162890147623219, -1.0549609581685737, 5.0308101352447876, 2.2952270979876421, -12.315318298211947, -10.695852212595735, 9.4196311784105813, 5.4565356992299696, -2.8633610173573181, 6.1651586785957386, 8.3636672225449065, 5.4793808824707169, -12.90333209146946, -2.917909411244644, -18.171572853055814, 5.5692562076095564, 9.4272302354981878, 22.37397145244622, -9.6263355853146226, 12.56665274255262, -8.4230789476868768, 14.292402246765404, 9.6755109502586905, 10.650146100250515, -14.501997245776215, 5.8382255030698671, 7.4369544152182838, 11.674980225393304, -11.786725006479465, -16.772831123624936, 3.8216491213794792, 15.77259758739986, -9.3479878856330032, 5.9950230722209144, 5.958729372581371, 7.2462686497735733, 10.332660701091482, -10.204140767232445, 7.9808905023820502, 8.2782586246593102, 6.8390222765844291, 7.0654728355247078, 7.6480295899519355, -3.9185027035687048, -0.4255074072498965, -3.6431994408263657, 11.140066389082302, -9.8098156821360636, -13.896130482467072, 5.7907261691618359, 17.222088493761053, -16.920381740703927, 7.9242825734996547, -2.688244813594495, -15.985663904040829, -12.754606213446827, 13.950582776791954, -5.353910870790374, 1.5595648567928815, 4.9908161576287231, -9.9205742817077969, 8.7860382238341703, 5.5146521334834713, -11.443914321477775, -12.875588137706325, 11.928543354774042, 9.7949495217437477, 3.0596159141130483, -17.110449287400556, 14.904415575765301, 6.3932641020011367, 11.703663252144132, 8.8510994551776303, -4.9488441381477051, 6.0141351951131101, -1.616597923995984, 10.958784259960206, 9.1227822179108102, 12.152585312821476, 10.379738123290229, -14.813934163937317, -8.0486858029122974, -10.468696961721317, -10.799428246081964, -18.131714651248306, 10.923313475297233, 8.9703208918471784, 15.96222270113857, -8.7661420666330141, 7.6020823206691786, 5.3308713164776842, 2.4841448628964948, 8.8418522933758332, -3.2565822141546716, 13.967329148190965, -13.883497137177436, -6.3211637919820207, -8.7551098627283537, 0.24851512254299432, -10.440516253836366, 11.747040525430812, 4.1482957738112507, 3.4063067929440405, 8.9044096742573302, -4.533883066117661, -10.060016037094814, 8.2165816247037746, 1.8593226609457101, -8.5265761308565295, 16.14419842265152, -4.003167438457524, 16.533944688013928, -21.327055302195756, 9.7008097133554756, -3.9906435398272566, -11.21150304966454, -2.7948474085927382, -9.364844542610351, -4.2756978804099237, 5.8141271039535711, -0.76694285700648002, -16.378244424874616, 10.914821034039642, 16.369755081163987, -7.7447057730452871, -8.1738488670482514, 5.0835789127951436, -11.318782974932084, 12.128049901454446, -9.9118013833855763, 5.8035693732582301, -16.725072628287645, 5.8582619856016809, 11.841875797644564, 18.792232468145812, -6.2998330510773926, 4.3652040812023083, 11.060526545644189, -13.359396837315156, -2.2695101549764649, 4.2878526546937348, 8.7944164914466629, -3.9990440871916042, -14.629067914849822, -15.681880762002669, -3.8670963304243546, 3.480137857328875, 5.5874406151862583, -3.1797062611049576, 7.3180755962823776, -10.128595726861276, -9.1174957700263022, -14.980244041683607, 16.109280291992576, 11.480512096977547, -10.311691598794816, 1.0011865103708153, 8.6924180410487768, 6.3189823445331479, 12.194923875359811, -5.2471028051769002, 4.4810642115580661, 3.5767787412932912, 8.1371206073826539, 11.009844998489241, 2.352372633790496, -11.785028325130343, -5.7430223971542294, -4.0330159172532749, -17.56714335153762, -0.69837806311042638, 10.071956177186964, -9.2379726328002221, -5.6954164560048781, 3.2282866389031661, 14.19966736952165, -11.173139672395717, 10.918018476892463, -16.209246908879869, 10.006757459930895, -10.685128505008947, -0.80813344465943648, -7.7725116132154568, 5.4694480818752123, -11.723461223559775, 4.3972758243309356, -2.746658870485382, -10.571105349066855, -8.4602973618932946, 11.668195823157037, -5.5560296820764581, 4.2868444031571951, -12.586104046837292, 11.116589306261053, 16.708751653338254, -4.1380749013481637, -5.304918777374966, -3.6321959214972299, 6.4836505223889134, -6.4898794312031054, 4.7755273510416201, 4.7059724502395577, -11.348341058700028, -2.3894998316920693, 7.7024164485972211, 7.474516689403738, -3.754442161175565, -9.2452925879999928, -12.22839364468452, 13.946576099794985, -16.64398659265704, 6.7770641097097508, 6.8518280519883517, 11.40188370673337, 4.9537315509978948, 7.1111193200908858, -6.7191754742225047, 4.5635294299740607, -10.262970411674237, -3.9845888680297481, -0.2324331749676018, -0.40356490082002627, 15.985289100858274, 9.3965056026374327, 3.4160795536131108, 13.621857670347838, 14.878550026106467, 2.4671248748490635, 1.2677903124668533, 10.971312030524174, -11.207046712100073, -11.640311189135987, -6.2777844536640313, 12.129463415385345, -3.2735634828650624, -16.99880285343048, 17.207987943726486, 13.880418691753789, 7.1345976935567039, -6.0921309113900426, -12.916783447286308, -0.37175928860132518, 5.3795595921617778, 11.474666767728971, 7.0272923425911724, -7.7992948111621532, 13.053545050163368, -11.125579161935159, -4.9734162038204666, 11.929760432601684, -16.353627702899804, 12.828965151459983, -6.7007792718721912, -13.362734444168062, 9.4783264667528435, 9.7261137035627598, 9.2099175046317381, -0.2719331694496081, 12.895782337004352, -5.1315028687660558, 9.241451823362242, -2.1662823373946867, -5.4023510845884939, 8.0145086312998544, -14.636845339016727, 4.6576194840142362, -4.0006553278703239, 8.3384948780835586, -6.3109591816404915, -14.523997573082733, -7.9786516212499015, 5.5706537175478106, -0.18481561801713964, -8.1249338573796681, 4.8293312255355296, -6.4878466660084699, -8.0428722880523242, 9.7154788568544816, -3.7634095596341886, -5.0816731470260024, -7.7916227681242267, 3.4940339692638638, -10.289437014508398, -15.219845494385298, 12.995575491261707, 4.9137445428624966, -7.9629573187705143, 11.219541958420926, 12.579169413573306, -5.5632263161877527, 4.3244956027533856, -5.4018763855163758, 9.3532602977578332, -15.574718543519731, -7.5391648176870891, -8.3898770516422605, 5.4643582959567576, 19.452032686663497, 6.1134164797347879, 12.523157246223509, 6.5452318210497289, -15.527032324278245, 9.8889627824321256, -9.8221837999669699, -9.5911766203792848, -9.7470711255260891, 1.1168169059934649, -8.2960509989484734, -13.169177510817329, -13.637864244280458, 12.833989630763297, 5.8431250479789956, -14.41459427937188, 11.436201429539272, -11.440704230308189, -4.6605177554561878, 6.0103734824551509, 8.8048544503260899, -14.722303045928138, 11.823402801942454, -7.8164585124822334, -8.232953902774744, -13.886365465665408, 8.840783671939624, 15.917335631836213, 11.733379827065031, 8.5863892262928321, -6.3502014878601392, 4.2519211099199783, 8.9575070499147049, 10.95856743167278, -9.332360115881098, -8.4440260122275443, -4.0611922369466953, 14.699231999887989, 11.501755848438288, -0.52251793181859396, -8.3240561791721746, -13.017699204188929, 13.862085343793936, 3.5246269674530311, -12.575260309305678, 8.8505292322744236, -16.160514751280466, -11.987606347753729, 7.7594652616640536, -5.6910847947056791, -11.982557604332538, -7.9943803194070249, -11.87513054558424, -5.9220296361607261, 5.3857386820956448, 1.3684074142164342, 7.8855235491385018, -7.2936109122376758, 12.973360400699073, 8.9378164601271202, 8.2183380628963967, -8.1258310489511292, -8.3418561682642896, 9.3140758124148313, 8.9364762225415717, -7.7593878229899724, 6.5113635006824149, 6.3101163907375719, -14.918246639214061, 13.656191397146385, 5.8145605023995133, 5.790589877095452, 11.042264699393407, -14.460089500394686, -8.5558978411383713, -11.890624991752267, 9.1525039554099816, 5.3913413701654322, 13.54219340877337, 7.1378985170394227, 13.827006140692903, 17.07127099715148, -5.416714667986021, -10.094832206832885, 6.8118702124201906, 9.6895115398714591, 8.7508693370687158, -8.9726099467869087, -6.3825788556224756, -1.2811892681142396, -7.9006554532473725, 11.991550041295781, -15.41868271279273, 10.399633667435214, 10.25224425186277, 2.0476462887020261, -6.2087210303134732, -13.850177857009358, 5.9216685138105953, -11.725632862109929, -5.6223675222282647, 2.5395243562790468, -5.006470643723187, 8.384941400951341, -13.676198969239875, -14.674173361213084, -3.6794433215855835, 14.47578115705271, 14.106661973176443, 6.3803571400630812, 6.3022752087290064, 9.6858881197789639, 8.46745889047234, 4.8235109347915737, 6.2970736529909601, 6.8398844271558676, 5.4355289101119171, -12.595917333745797, -16.10769796175218, -11.030056234295563, -19.383981644912097, 6.6153991326993182, -8.2620846218601045, -9.7372222168275044, -5.9754966524223843, 5.099067163869246, 10.579232537911697, 10.305783673284692, -5.9402938055717325, -3.5627778290193794, 3.7215761553797764, -10.814343838161236, 7.2071720573256535, 10.230481403156768, -6.0457170095637167, -4.0775725815462147, 7.9957387228148695, 16.218084726623868, 11.154854336413793, 3.6660505610321241, 4.5629032092296571, -3.7613295568483625, 15.715664674215235, -7.1900277802063224, 9.0957779002834975, 7.9878026138983254, 6.306124168959764, 8.8828525381624139, 8.721765253660628, -8.4786042032403302, -9.3481374713384362, -15.968539115654474, -12.371027164088257, 7.6395778685304663, 4.4001441528189096, 10.920171272031924, 6.6419684708410927, -12.778931766007094, -11.762446433381475, 7.6029684772295836, -5.7530563842838651, -9.278300564698263, -8.6364290246359179, 8.5380212522911432, -6.5156528288397819, 11.12605540978076, 5.5317523996230342, -6.371230734193678, 8.6110210931749993, -14.136763934565353, -3.325398350005996, -8.350684983762422, -10.304377774156745, -8.3940251671508275, -8.0763593520142454, -15.711255832370867, -1.3901134745614421, -9.9201181679174564, 3.6762776285891374, -3.027745253408118, 3.5951178436958218, -10.971642177404679, 8.2562901762736214, 8.3702239228132633, 8.0927467951588898, 9.1407003009808996, 10.141245463336926, -5.2674684020735612, 0.0038156237976130062, -3.7799349726831526, 7.4968099930271954, 14.604208551696219, -8.8259931271859369, -6.3243333569121711, 5.1119354064702609, -12.608102567241415, -0.15550817742430292, -7.9404349902684608, -6.9086361598432484, 5.7169315009538186, -5.7678559474164688, -9.9620966406213132, 11.827724138085108, -9.5612259870659759, 7.2643256707314112, -8.1336844275508628, 8.067406989564839, 3.1687667577463965, 8.3775004800894344, -5.277606415155379, 15.336501694310613, -4.7070349088479553, -7.2391458405315685, 5.2891447775935045, -14.240394433252353, -7.4683465049173909, 9.5098429100560775, 7.0524937265552987, -4.699596407944612, 7.1548196417129413, 3.7757352152588068, 13.613370907926351, 9.3633279061784691, -11.557527439640607, -14.012943624771856, 7.3474746726395423, 5.2883987850331868, 13.132951699082062, 8.9466349827348211, 13.267381623482532, -15.779073009326543, 8.032743244950252, -6.1729291332819773, -16.086736861451836, 9.8901824415489088, -11.522547874300223, -11.039678505808, -8.9536772557557835, -0.79142011376136789, 4.3166975282733917, 5.1393017176327902, -6.3197807372629278, 7.1773149312112974, -3.3356114786016748, -7.4632594293525276, 12.15740148209151, 17.021497031256764, 16.542438678045002, 4.7378203956000897, 14.845217323234882, -7.2756424294972062, -7.9547005492110463, 9.193618599704461, -7.5604327042012542, -8.1467060632587884, 6.3174795179981418, 0.7536321058409664, 7.6986470566040817, -3.3754253578426234, 2.6279128588755247, 10.051578061037993, 10.925533383954232, -8.9061476723656874, -20.506099007820808, 14.128311245160457, 9.7959616452139926, -12.43896437098876, -6.2641844155929478, -7.5029331980512666, -12.192807734526079, -7.5158451935031385, -11.210721435314145, 10.80351997655597, 3.2237621553055051, -11.493430158458887, 7.4759875079534561, 8.7887085190462386, -11.237257345761609, 4.9929877961788778, 6.6053051305972668, -11.960492486668706, -11.986237490124884, 5.1070170181504384, 4.5800543267651985, 5.4569228926003772, -12.014404000919589, -12.327689384525359, 2.3450763619185495, -9.1846545569217142, 4.8727425718388053, 7.2559899137243784, -10.074516945074379, -9.8222229064973803, 2.2863391276278286, -8.7400761928041675, -11.837723535940322, -4.4389959099922747, -3.5522064174916173, -3.9825563609640251, -8.3095611758915098, -5.4952116706131706, -6.7650687300300891, 11.535631654544098, -7.1952205595613057, 13.192400852916503, -5.228605287227996, -3.4756815197644064, 4.5448576750084744, -11.096523655162001, -8.0759285993896679, 6.8294188484826837, -8.1148457922426314, 2.8919333068042086, -1.8055807373910648, -9.1618657103163628, 18.95516137338171, 14.701615562276213, 10.576040902959432, 6.9472405004529243, 10.8509054756131, -4.2393321628034837, 7.3628769667854135, -15.942801597936789, -13.09791276409155, -8.1192986128006535, -2.4956021728557478, 4.4062225724764703, -12.705159555014562, 14.611257019811106, 5.4487889924037836, 4.6811247028870682, 7.8660698571613787, 4.6606439804949416, -13.056105688986326, -10.877807412860054, -9.5630044307484816, -8.336671584502314, -7.212332183373066, -6.0724287058013449, 5.6058632757502158, 9.3822916694775689, 2.42285945557725, 9.641242013817461, 10.674625497643289, -20.504761900048337, -7.3203307395360833, -17.782026379472534, -9.735986037460254, -5.2634387516032799, 6.799610895926369, -10.482358434473838, -9.9267338829086853, 1.8815547880166452, -5.7225605181727941, -10.32085956341931, -14.680546047832154, 1.3745157768279728, -9.0962042001843155, 17.819003862604216, -5.4500305924782211, -7.116020542837953, -4.277099520410796, -7.8010119492276786, 4.171818029192381, -1.3712297957577866, -6.6583249385161043, 14.600889530125094, 11.302441607798515, -3.9244391523237829, -11.875059302004088, 13.955038081840771, 7.9089371967792328, -7.0382148094414347, 10.339905992502993, -5.2543438374613363, 11.658450166023897, -12.260784693279277, -10.567202181764241, 7.7818871780187164, 11.469695204852945, 11.633486260660284, -7.9554988128763675, -11.353654384257666, 5.8142491989297058, 9.253802323894794, 12.252383629657103, 13.743458587742163, -4.5990699094437071, 8.1674889900765191, -10.405234290473693, -4.3503211424306096, -2.5352832982285238, -8.0329959531566715, -11.096227581298097, -11.635882729494188, 13.841735492761007, 7.9211223012103931, -7.8204116277296309, -11.400201996861236, -5.1390918588260295, -10.152632304102763, -9.2722777072893567, 12.630289521752468, -6.3311089827653779, 22.041405387767668, 10.030760738542526, -11.015029259590074, -10.750221260345983, 9.8774814664839088, 10.243600159868437, 10.47497065590202, 8.1475889932077727, 10.019493153334773, -7.8612573662283625, 9.3356880428997453, -6.5500876131080021, 9.6522744435849201, -8.9747623869991138, 17.924301874073105, -8.2996248260234431, 11.278399997043214, -6.4926958757794448, 3.7847950238685, 15.344497495538429, 4.9354655746844953, 12.198358538684232, -12.353439550559809, -4.290111282687775, 1.8013128339335276, 11.579132571580397, -14.978620927074862, 9.1640921689945465, -5.301934549004784, 5.3570590110206942, -12.575832581107141, -2.6075057032237736, 6.2802480360154735, 1.2819497158937185, 4.0370287893441716, 5.689180319581105, -11.659257077007823, -13.709675708045252, -7.2955461047029706, -7.9351310864161704, -1.9719236556382971, 11.636620978187096, 8.0623417904254051, 11.044122711313531, 9.0069951057714874, -5.9396329955529055, 6.5144624673546936, -6.6237325665461277, 5.7505943507059047, 6.4480568683630661, 16.1112369091577, 8.6016424590576257, 7.4714033965767532, -13.528592080057718, -8.4982760948147362, 9.7204545497931232, -6.4562558170458875, -14.150178377947556, 11.751616118553367, 6.0070165159337243, 6.9449626418548203, -15.126256210437514, -9.7431764764776236, -8.876463218361474, 9.0284399719220438, 15.073453876128392, 13.206659377846192, -3.4523853853115929, 9.7558870023124271, -12.058967118435369, -7.513853728934679, 14.964746497968617, 7.3467639146759316, -16.267222146617634, 10.457316186984949, -1.3736876992731295, -19.028624862193571, 6.2689422477285071, -7.2052733901016355, 19.395946436315498, -3.132819208979996, 11.798928050870122, 9.2702304868755583, -7.7224549316281159, -6.9578013286952274, 3.0911876615360234, -11.041946426442932, 14.013325139306163, -8.7052677346673892, 12.75898769362635, 16.761060445164567, -9.7151229616148491, -4.0703315492617795, 5.6473020008957269, -10.612999413615965, -9.4254350779685243, -3.9276038128045752, -17.026729820593356, -8.424154215942611, 1.2187489164289478, 5.8313796661521602, -6.2180611669233414, 12.998036492324015, -1.9067037718113109, -8.0612877855389282, 4.2253038888647296, -10.732641648813859, -7.3045004676514553, 7.7590428982291675, 5.1995141586647611, -9.9275214342240954, 9.2358499096791942, 16.320055456396389, 6.4700313827782239, 7.4560079428470925, -11.188331333348085, -5.8742724314680048, -6.9160594311406891, 16.994775009862593, -12.580529494819087, 12.251765927166845, -6.0397211911585096, 18.500338227610456, -9.3415798998849979, 4.2166328223989247, 15.992495543868285, -8.8374303192229871, 7.794601511254994, -9.2446173872942285, -4.2241407599800276, -3.6317947891654878, -11.503645352085876, 2.2293891779349062, -7.0972594752682587, 7.4553347426404102, -5.4871239754921124, 11.941843447047516, -6.5685789359629787, -5.7519598526588727, 11.132163514263386, -8.7158284177121814, -15.465587317683815, 9.2269600789591095, 10.514920493473857, -7.9515038807449656, -1.7659455589649102, 11.517020043615382, -2.842147983237294, -17.07404226916794, 7.6546092959597152, 6.0366140934254533, -4.9119038255795822, 3.0017790334729799, 7.364629533044333, -0.30876757355657375, 4.6704944379670055, -3.7846453090986092, 8.1168663608460996, 12.569433049081056, -6.5680452544341019, -11.687875571530249, 5.3455252949030152, -5.8739384126537999, 12.336912846866278, -12.187352179937047, -10.762736511657643, -13.728362176358916, 13.481091197376205, 20.215728760391368, -4.6330724568460946, -11.010865640213632, -15.546423484526052, -9.180879292495792, 5.60969984579312, 7.0458207069452508, -9.0859663557451587, 3.1218915795514603, -3.5746161372551124, 6.3046716775629115, 4.7049417414875361, 12.658169509453071, 7.6896814005156253, -10.100222971064603, 8.1975588789479144, 10.664698634012799, -7.684453515628392, -9.0663855675442004, 2.0159640621040276, -2.6901451586564513, -6.5423957586759558, -12.548026160146915, 8.5246035903640482, -0.20760014096318802, 2.513881830001568, -10.022801591620444, 7.4682387360959597, 5.8601101886230893, -12.699060743172828, -12.594971033148521, -7.2651889828829619, -7.7181201727819539, 5.7325939890446032, 1.9037734923840721, 6.4679849367511659, -4.5854626437630408, 9.7791348666583922, 6.9463515044744693, 5.7589530811862488, 7.4387964231457664, -10.548676785892669, -8.0141310532314787, -13.733069931485234, -5.9563447776774918, 2.3094845147950966, -15.548183407459007, 3.6403641528393331, 7.0657980779558498, -12.060589974915199, -7.5435216465553632, -7.9451035097999121, -11.355855965761799, -13.604227465548648, -5.2858045894514616, -15.074237039252267, 5.0342256970296031, -10.047891334829437, -7.5476650028120877, -13.135553638531196, 13.335291210589279, -8.3015934461830483, -7.1242078757196632, 7.4165964331245746, -11.978530018893565, 9.2825552390489801, 10.297494895739936, -5.6352022080705124, -10.775907668538773, -12.425421895665409, -11.578418328876452, 11.726677767952202, -5.6800250032733786, 7.5055956687306411, -5.0822668435272913, -6.1806882302960169, 2.7619111917324486, 1.3880530895730505, -3.267061215531363, -7.9062358776983608, -9.8822254887225895, 0.042596987384144601, -18.721186098480946, 6.2809470491135153, -8.5919361907833967, -9.4528212650574002, -0.42946614787551551, -9.7471847022480738, -2.5180103438457606, 7.1026257172531837, 15.054405511077857, -8.3632931292168653, -10.62711764548111, -12.729565385666962, 13.352497567712332, -4.13019164432668, -7.8355600520889723, -3.4095215304340725, -2.7246229213887867, 13.561843730450432, -14.379007078568874, 11.826952848891258, -11.400536273804352, 8.3810471390962462, -14.184050570248575, 7.5105880109842111, -2.2878414379050076, 15.169788102943443, -12.423854278773089, -16.853481953907202, -3.0539856062495048, 9.5258258006608738, -13.294954954033772, -7.1935249107278372, 12.621221969275366, 7.8989220530602893, 3.8377543005570955, 4.7690377320246871, -7.384166148934951, 10.334861379144421, -10.274185725776984, -7.660512381552711, 7.3680216050980096, 17.2154865886667, -11.555638968508676, -5.2123312917408828, -8.6742651332660614, 5.0064889708760525, -5.5487370240093012, 7.1983809609150224, 9.9944498733302272, 15.041759259342541, -7.0968495665534554, -5.3048916738390384, -4.4004665558320015, 0.61130867486904827, -9.5652360197388209, 2.3804090476127437, -13.00880511434177, 3.1004911438401592, -7.9257672664784797, -1.8498710126451656, 9.4089658079582676, -9.3980833510896122, 3.2850011750268808, 11.14162677836504, 9.0463525052204901, 17.759167515399369, -8.8862696648537689, 5.1450915491649409, -15.615150307773268, 8.2649197485165651, 3.3389335977197661, -14.403893803387318, -5.6464545636723633, 9.3258220331606356, -16.489910476642127, 0.94272857156461431, -7.117796211634638, 8.6340635171552211, -1.2102285972486879, 6.2782088175979966, -11.716934692108198, -13.052164576733411, 18.843873738601541, -8.4224555986266356, -1.1432524799001162, -3.8398585674607997, -8.4714833622312913, 2.0076683906851831, 9.2963876576745346, -8.0839565376672269, 12.295453213278766, 1.5119421372641451, 9.8998470462031776, -5.4780824940352852, 1.1647911971025293, -12.103113874013506, -3.7658943085565455, 9.0166245080951626, -8.6305499914144281, -7.8916091318734143, -13.664449973608248, 5.0933679355857704, -11.878457052893864, 16.283617978951966, 6.481687968258778, -7.6764315788480753, -10.637829608202328, 6.7202557437259403, 13.070109182549373, 11.32861639589585, 1.6023878516954715, 10.81099319579819, 11.064755987893601, -8.8993382477578553, 1.1065340825911127, -4.0072350338781044, -13.247125215116327, -12.902201228698958, 15.169451502840104, -3.8842697226530465, 7.225301354379301, -11.797852685816045, -8.4876550257372188, 15.014740389697723, -7.1777134822539024, 4.1563808876431727, 6.7961656493164897, 9.7772439433017837, 2.6003534672856192, -9.7640847894151364, -4.2051688010879182, -15.33565658024747, -12.504579708311388, 17.697085446646163, 5.6312969757365874, 10.240899486109848, 9.1619551197188134, 4.7029812523887085, -2.2046888221920842, 14.66532470205472, 9.4017352298948325, -6.117210458506948, -6.2527105853832241, 7.3418788249859661, -3.6555906611950397, 7.4710208495267914, 5.5773908821928915, 5.6464739233408832, -11.615308048177509, -10.69821757689555, -13.369385393755998, 6.0300942733256271, 15.607387338825525, -8.3086246196607227, -7.139670830160231, 8.8784588291256075, 4.1708577896337715, 2.6199826223917646, -13.065911490156337, -12.032534201424433, 9.6843978770284949, 7.1524531158330165, -13.135769434302969, 1.2427684037042608, 6.2493750435616269, 0.73878143318346856, 8.7227099006195505, 7.9663740421354419, 7.4937386461486719, 5.774464047604746, 4.2168093825758302, 4.7039817600578395, 13.415247674093951, -7.3174039448491781, -5.3909250082277875, 18.695142956129555, -12.304572907796414, -6.5398571898751117, 18.631807413371877, 9.4536969028645768, -13.511273178728333, -10.098213695601105, 16.086137486114445, 18.171369447471893, -2.1734552236459308, -11.782729170896866, 5.849586272815432, 2.8432532912453499, -8.6659364132968726, -9.397193645256646, -6.3510378255402182, 10.834119352361396, -12.567501212291639, -14.398105520628647, 0.5239804902430778, -11.960984222249122, 6.8701999902207866, 8.0199245631006484, 14.269997689580181, 15.2180752462958, -5.4141452527800009, -8.4604656780780214, -10.694272205515562, -12.821403781193764, 8.6812253918746212, 0.4525232549543311, -10.871924654919006, 2.4785398516664845, 12.674109486125982, -4.7531674501584495, -8.0661831358532119, 3.4451825561063716, 8.755949031759954, -9.4833485583637032, -2.0114798466168886, 6.0122157485115482, -10.758596640141253, -13.761354665322369, 8.5905176393054177, -18.228562554601435, 9.080612052222488, 8.0100529390576689, 3.070646795107026, -7.9897143166324804, -5.9493600674042657, -11.682410982429239, 9.9461080066481919, 13.875657245813436, -11.973248443192302, -10.046380635362567, 11.90216103103017, -9.8334952670900346, 9.5612352151746371, 13.116744300854657, 14.890206611587024, -5.1652284438441471, -9.1408609862296188, 0.68131117120729867, 10.105102898176298, 3.0892960928571287, 8.7208655049996171, -8.7314249296659536, 6.2622037924388589, 11.764851162340614, -10.158475697384489, -8.241762229290357, -4.392241536128906, 2.1365025208899553, 12.213135386472439, 10.674973455418831, -5.6136099825764028, 9.2271565795945918, -7.8507177690892025, -10.08053767291975, -6.422447124457614, -2.6002837724789458, 13.401297355087104, -6.8962451976034886, -7.5969203877193712, 15.930628754629025, 14.097561380198398, 6.6046768448215545, 10.60230900465903, -11.02144608625337, -16.832723742932952, 8.4030535324322333, -12.145417589148504, -14.454852580995478, 1.9572939413308439, -9.3989472440312198, -2.5327484722969262, -3.1432884014579705, -13.818082107891763, 7.5956036075988456, 10.968509524909171, 11.885444086327313, -2.3464206973006023, -12.277090696751678, 9.8489528008234171, 0.67512123985906181, -13.143678504215814, 14.094369358052766, 7.4943084657254548, -14.048054835858178, 9.6379845559922277, -3.7260180377250842, -17.784311336615762, -9.9122096142624407, -6.9409869403274822, -4.4694695770167767, -5.582926198616228, -3.1915641871381251, -8.5710422806326072, 12.761174819911322, 1.9876912021969184, -4.3233301507084612, -6.8999907772043469, -15.301865440425326, 10.916938981775766, -12.350602455670384, -10.542931739727027, 8.1739508602352391, 4.3903649389270001, 8.6785615014862216, -1.0832203953721748, 6.8106936608319817, 10.280910758363124, 7.9331359435106927, -6.2680382802730632, 9.3832393897838688, -11.100371066619278, 14.991146890736436, 9.4952786314282243, -12.3279500947281, 4.0471278249600369, 7.6407267357926916, 5.9145188591615749, -1.2642658202804962, 0.99680562205569856, -4.4005432201193422, 4.2794794689942304, 10.246091749207004, -14.172753816473582, 6.284155849638533, -7.4755210690065725, -11.133460612054247, -3.114492056114071, 11.612187785869857, -6.0797169756769698, 10.483978967793448, -7.4498355642649798, -9.6201040952112962, 4.1172134388084691, -1.0727347582503111, 7.5416007802447753, 8.485412175873023, -5.0536124690858752, -4.3415708303883287, -9.8603165390514871, 4.9595291263974532, 11.78565325523018, -8.8417637712915234, -3.3465091650762329, -12.955124625468562, 12.481083523950533, 8.0649722531194925, -7.4942449660127082, -6.930756000836765, -20.146436634823356, -8.2923264891201871, 10.119682922667883, 15.081958191316007, 10.959298710885019, -7.702423224481203, -8.5494236533905532, 11.214983659935584, -0.44116248520876644}; const char H_4096_8192_3d_detected_data[] = { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0}; codec2-1.2.0/src/H_4096_8192_3d.h000066400000000000000000000011361445607075400155500ustar00rootroot00000000000000/* FILE....: H_4096_8192_3d.h Static arrays for LDPC codec H_4096_8192_3d, generated by ldpc_gen_c_h_file.m. */ #define H_4096_8192_3d_NUMBERPARITYBITS 4096 #define H_4096_8192_3d_MAX_ROW_WEIGHT 9 #define H_4096_8192_3d_CODELENGTH 8192 #define H_4096_8192_3d_NUMBERROWSHCOLS 4096 #define H_4096_8192_3d_MAX_COL_WEIGHT 13 #define H_4096_8192_3d_DEC_TYPE 0 #define H_4096_8192_3d_MAX_ITER 100 #include extern const uint16_t H_4096_8192_3d_H_rows[]; extern const uint16_t H_4096_8192_3d_H_cols[]; extern const float H_4096_8192_3d_input[]; extern const char H_4096_8192_3d_detected_data[]; codec2-1.2.0/src/_kiss_fft_guts.h000066400000000000000000000147161445607075400166470ustar00rootroot00000000000000/* Copyright (c) 2003-2010, Mark Borgerding All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * 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. * Neither the author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission. 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 OWNER 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. */ /* kiss_fft.h defines kiss_fft_scalar as either short or a float type and defines typedef struct { kiss_fft_scalar r; kiss_fft_scalar i; }kiss_fft_cpx; */ #include #include "kiss_fft.h" #define MAXFACTORS 32 /* e.g. an fft of length 128 has 4 factors as far as kissfft is concerned 4*4*4*2 */ struct kiss_fft_state { int nfft; int inverse; int factors[2 * MAXFACTORS]; kiss_fft_cpx twiddles[1]; }; /* Explanation of macros dealing with complex math: C_MUL(m,a,b) : m = a*b C_FIXDIV( c , div ) : if a fixed point impl., c /= div. noop otherwise C_SUB( res, a,b) : res = a - b C_SUBFROM( res , a) : res -= a C_ADDTO( res , a) : res += a * */ #ifdef FIXED_POINT #if (FIXED_POINT == 32) #define FRACBITS 31 #define SAMPPROD int64_t #define SAMP_MAX 2147483647 #else #define FRACBITS 15 #define SAMPPROD int32_t #define SAMP_MAX 32767 #endif #define SAMP_MIN -SAMP_MAX #if defined(CHECK_OVERFLOW) #define CHECK_OVERFLOW_OP(a, op, b) \ if ((SAMPPROD)(a)op(SAMPPROD)(b) > SAMP_MAX || \ (SAMPPROD)(a)op(SAMPPROD)(b) < SAMP_MIN) { \ fprintf(stderr, \ "WARNING:overflow @ " __FILE__ "(%d): (%d " #op " %d) = %ld\n", \ __LINE__, (a), (b), (SAMPPROD)(a)op(SAMPPROD)(b)); \ } #endif #define smul(a, b) ((SAMPPROD)(a) * (b)) #define sround(x) (kiss_fft_scalar)(((x) + (1 << (FRACBITS - 1))) >> FRACBITS) #define S_MUL(a, b) sround(smul(a, b)) #define C_MUL(m, a, b) \ do { \ (m).r = sround(smul((a).r, (b).r) - smul((a).i, (b).i)); \ (m).i = sround(smul((a).r, (b).i) + smul((a).i, (b).r)); \ } while (0) #define DIVSCALAR(x, k) (x) = sround(smul(x, SAMP_MAX / k)) #define C_FIXDIV(c, div) \ do { \ DIVSCALAR((c).r, div); \ DIVSCALAR((c).i, div); \ } while (0) #define C_MULBYSCALAR(c, s) \ do { \ (c).r = sround(smul((c).r, s)); \ (c).i = sround(smul((c).i, s)); \ } while (0) #else /* not FIXED_POINT*/ #define S_MUL(a, b) ((a) * (b)) #define C_MUL(m, a, b) \ do { \ (m).r = (a).r * (b).r - (a).i * (b).i; \ (m).i = (a).r * (b).i + (a).i * (b).r; \ } while (0) #define C_FIXDIV(c, div) /* NOOP */ #define C_MULBYSCALAR(c, s) \ do { \ (c).r *= (s); \ (c).i *= (s); \ } while (0) #endif #ifndef CHECK_OVERFLOW_OP #define CHECK_OVERFLOW_OP(a, op, b) /* noop */ #endif #define C_ADD(res, a, b) \ do { \ CHECK_OVERFLOW_OP((a).r, +, (b).r) \ CHECK_OVERFLOW_OP((a).i, +, (b).i) \ (res).r = (a).r + (b).r; \ (res).i = (a).i + (b).i; \ } while (0) #define C_SUB(res, a, b) \ do { \ CHECK_OVERFLOW_OP((a).r, -, (b).r) \ CHECK_OVERFLOW_OP((a).i, -, (b).i) \ (res).r = (a).r - (b).r; \ (res).i = (a).i - (b).i; \ } while (0) #define C_ADDTO(res, a) \ do { \ CHECK_OVERFLOW_OP((res).r, +, (a).r) \ CHECK_OVERFLOW_OP((res).i, +, (a).i) \ (res).r += (a).r; \ (res).i += (a).i; \ } while (0) #define C_SUBFROM(res, a) \ do { \ CHECK_OVERFLOW_OP((res).r, -, (a).r) \ CHECK_OVERFLOW_OP((res).i, -, (a).i) \ (res).r -= (a).r; \ (res).i -= (a).i; \ } while (0) #ifdef FIXED_POINT #define KISS_FFT_COS(phase) floorf(.5 + SAMP_MAX * cosf(phase)) #define KISS_FFT_SIN(phase) floorf(.5 + SAMP_MAX * sinf(phase)) #define HALF_OF(x) ((x) >> 1) #elif defined(USE_SIMD) #define KISS_FFT_COS(phase) _mm_set1_ps(cosf(phase)) #define KISS_FFT_SIN(phase) _mm_set1_ps(sinf(phase)) #define HALF_OF(x) ((x)*_mm_set1_ps(.5)) #else #define KISS_FFT_COS(phase) (kiss_fft_scalar) cosf(phase) #define KISS_FFT_SIN(phase) (kiss_fft_scalar) sinf(phase) #define HALF_OF(x) ((x)*.5) #endif #define kf_cexp(x, phase) \ do { \ (x)->r = KISS_FFT_COS(phase); \ (x)->i = KISS_FFT_SIN(phase); \ } while (0) /* a debugging function */ #define pcpx(c) \ fprintf(stderr, "%g + %gi\n", (double)((c)->r), (double)((c)->i)) #ifdef KISS_FFT_USE_ALLOCA // define this to allow use of alloca instead of malloc for temporary buffers // Temporary buffers are used in two case: // 1. FFT sizes that have "bad" factors. i.e. not 2,3 and 5 // 2. "in-place" FFTs. Notice the quotes, since kissfft does not really do an // in-place transform. #include #define KISS_FFT_TMP_ALLOC(nbytes) alloca(nbytes) #define KISS_FFT_TMP_FREE(ptr) #else #define KISS_FFT_TMP_ALLOC(nbytes) KISS_FFT_MALLOC(nbytes) #define KISS_FFT_TMP_FREE(ptr) KISS_FFT_FREE(ptr) #endif codec2-1.2.0/src/bpf.h000066400000000000000000000022611445607075400143750ustar00rootroot00000000000000#define BPF_N 101 float bpf[] = { 0.002174, 0.003245, 0.002147, 0.001866, 0.002764, 0.000567, -0.001641, -0.000565, -0.002415, -0.005837, -0.003620, -0.002828, -0.006268, -0.002787, 0.001963, -0.001234, 0.001446, 0.009200, 0.005331, 0.003521, 0.011821, 0.006951, -0.002015, 0.005137, 0.001828, -0.013390, -0.007058, -0.003273, -0.020458, -0.014321, 0.001751, -0.012891, -0.009730, 0.018993, 0.008544, 0.000534, 0.035755, 0.029074, -0.001192, 0.030852, 0.030983, -0.029834, -0.009550, 0.011945, -0.081971, -0.082875, 0.000423, -0.133526, -0.211778, 0.182628, 0.514906, 0.182628, -0.211778, -0.133526, 0.000423, -0.082875, -0.081971, 0.011945, -0.009550, -0.029834, 0.030983, 0.030852, -0.001192, 0.029074, 0.035755, 0.000534, 0.008544, 0.018993, -0.009730, -0.012891, 0.001751, -0.014321, -0.020458, -0.003273, -0.007058, -0.013390, 0.001828, 0.005137, -0.002015, 0.006951, 0.011821, 0.003521, 0.005331, 0.009200, 0.001446, -0.001234, 0.001963, -0.002787, -0.006268, -0.002828, -0.003620, -0.005837, -0.002415, -0.000565, -0.001641, 0.000567, 0.002764, 0.001866, 0.002147, 0.003245, 0.002174}; codec2-1.2.0/src/bpfb.h000066400000000000000000000022611445607075400145370ustar00rootroot00000000000000#define BPFB_N 101 float bpfb[] = { 0.003795, 0.006827, 0.002261, 0.002523, 0.005758, -0.000264, -0.000674, 0.003113, -0.004144, -0.004923, 0.000043, -0.008017, -0.008711, -0.001802, -0.010210, -0.010428, -0.000899, -0.009413, -0.009072, 0.003469, -0.005335, -0.004828, 0.010724, 0.000941, 0.000708, 0.018957, 0.007084, 0.004825, 0.025418, 0.010147, 0.004452, 0.027434, 0.007550, -0.002861, 0.023483, -0.001944, -0.018138, 0.014122, -0.017583, -0.040768, 0.002598, -0.036604, -0.069541, -0.004273, -0.054876, -0.107289, 0.010068, -0.068052, -0.200119, 0.207287, 0.597150, 0.207287, -0.200119, -0.068052, 0.010068, -0.107289, -0.054876, -0.004273, -0.069541, -0.036604, 0.002598, -0.040768, -0.017583, 0.014122, -0.018138, -0.001944, 0.023483, -0.002861, 0.007550, 0.027434, 0.004452, 0.010147, 0.025418, 0.004825, 0.007084, 0.018957, 0.000708, 0.000941, 0.010724, -0.004828, -0.005335, 0.003469, -0.009072, -0.009413, -0.000899, -0.010428, -0.010210, -0.001802, -0.008711, -0.008017, 0.000043, -0.004923, -0.004144, 0.003113, -0.000674, -0.000264, 0.005758, 0.002523, 0.002261, 0.006827, 0.003795};codec2-1.2.0/src/c2dec.c000066400000000000000000000322711445607075400146050ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: c2dec.c AUTHOR......: David Rowe DATE CREATED: 23/8/2010 Decodes a file of bits to a file of raw speech samples using codec2. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2010 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include "c2file.h" #include "codec2.h" #include "dump.h" #define NONE 0 /* no bit errors */ #define UNIFORM 1 /* random bit errors */ #define TWO_STATE 2 /* Two state error model */ #define UNIFORM_RANGE 3 /* random bit errors over a certain range */ void print_help(const struct option *long_options, int num_opts, char *argv[]); int main(int argc, char *argv[]) { int mode = 0; void *codec2; FILE *fin; FILE *fout; FILE *fber = NULL; short *buf; unsigned char *bits; float *softdec_bits; char *bitperchar_bits; int nsam, nbit, nbyte, i, byte, bits_proc, bit_errors, error_mode; int nstart_bit, nend_bit, bit_rate; int state, next_state; float ber, r, burst_length, burst_period, burst_timer, ber_est; unsigned char mask; int natural, softdec, bit, ret, bitperchar; #ifdef DUMP int dump; #endif int report_energy; FILE *f_ratek = NULL; float *user_ratek; int K; char *opt_string = "h:"; struct option long_options[] = {{"ber", required_argument, NULL, 0}, {"startbit", required_argument, NULL, 0}, {"endbit", required_argument, NULL, 0}, {"berfile", required_argument, NULL, 0}, {"natural", no_argument, &natural, 1}, {"softdec", no_argument, &softdec, 1}, {"bitperchar", no_argument, &bitperchar, 1}, #ifdef DUMP {"dump", required_argument, &dump, 1}, #endif {"energy", no_argument, NULL, 0}, {"mlfeat", required_argument, NULL, 0}, {"loadcb", required_argument, NULL, 0}, {"loadratek", required_argument, NULL, 0}, {"nopf", no_argument, NULL, 0}, {"help", no_argument, NULL, 'h'}, {NULL, no_argument, NULL, 0}}; int num_opts = sizeof(long_options) / sizeof(struct option); if (argc < 4) print_help(long_options, num_opts, argv); if (strcmp(argv[2], "-") == 0) fin = stdin; else if ((fin = fopen(argv[2], "rb")) == NULL) { fprintf(stderr, "Error opening input bit file: %s: %s.\n", argv[2], strerror(errno)); exit(1); } if (strcmp(argv[3], "-") == 0) fout = stdout; else if ((fout = fopen(argv[3], "wb")) == NULL) { fprintf(stderr, "Error opening output speech file: %s: %s.\n", argv[3], strerror(errno)); exit(1); } // Attempt to detect a .c2 file with a header struct c2_header in_hdr; char *ext = strrchr(argv[2], '.'); if ((ext != NULL) && (strcmp(ext, ".c2") == 0)) { int nread = fread(&in_hdr, sizeof(in_hdr), 1, fin); assert(nread == 1); if (memcmp(in_hdr.magic, c2_file_magic, sizeof(c2_file_magic)) == 0) { fprintf(stderr, "Detected Codec2 file version %d.%d in mode %d\n", in_hdr.version_major, in_hdr.version_minor, in_hdr.mode); mode = in_hdr.mode; } else { fprintf(stderr, "Codec2 file specified but no header detected\n"); // Rewind the input file so we can try to decode // based on command line mode selection fseek(fin, 0, SEEK_SET); } /* end if - magic detection */ } else { // If we got here, we need to honor the command line mode if (strcmp(argv[1], "3200") == 0) mode = CODEC2_MODE_3200; else if (strcmp(argv[1], "2400") == 0) mode = CODEC2_MODE_2400; else if (strcmp(argv[1], "1600") == 0) mode = CODEC2_MODE_1600; else if (strcmp(argv[1], "1400") == 0) mode = CODEC2_MODE_1400; else if (strcmp(argv[1], "1300") == 0) mode = CODEC2_MODE_1300; else if (strcmp(argv[1], "1200") == 0) mode = CODEC2_MODE_1200; else if (strcmp(argv[1], "700C") == 0) mode = CODEC2_MODE_700C; else { fprintf(stderr, "Error in mode: %s. Must be 3200, 2400, 1600, 1400, 1300, 1200, " "700C\n", argv[1]); exit(1); } bit_rate = atoi(argv[1]); }; /* end if - extension / header detection */ error_mode = NONE; ber = 0.0; burst_length = burst_period = 0.0; burst_timer = 0.0; natural = softdec = bitperchar = 0; report_energy = 0; #ifdef DUMP dump = 0; #endif codec2 = codec2_create(mode); assert(codec2 != NULL); nsam = codec2_samples_per_frame(codec2); nbit = codec2_bits_per_frame(codec2); buf = (short *)malloc(nsam * sizeof(short)); nbyte = (nbit + 7) / 8; bits = (unsigned char *)malloc(nbyte * sizeof(char)); softdec_bits = (float *)malloc(nbit * sizeof(float)); bitperchar_bits = (char *)malloc(nbit * sizeof(char)); bit_errors = bits_proc = 0; nstart_bit = 0; nend_bit = nbit - 1; while (1) { int option_index = 0; int opt = getopt_long(argc, argv, opt_string, long_options, &option_index); if (opt == -1) break; switch (opt) { case 0: if (strcmp(long_options[option_index].name, "ber") == 0) { ber = atof(optarg); error_mode = UNIFORM; } else if (strcmp(long_options[option_index].name, "startbit") == 0) { nstart_bit = atoi(optarg); } else if (strcmp(long_options[option_index].name, "endbit") == 0) { nend_bit = atoi(optarg); } else if (strcmp(long_options[option_index].name, "berfile") == 0) { if ((fber = fopen(optarg, "wt")) == NULL) { fprintf(stderr, "Error opening BER file: %s %s.\n", optarg, strerror(errno)); exit(1); } } #ifdef DUMP else if (strcmp(long_options[option_index].name, "dump") == 0) { if (dump) dump_on(optarg); } #endif else if (strcmp(long_options[option_index].name, "energy") == 0) { report_energy = 1; } else if (strcmp(long_options[option_index].name, "loadcb") == 0) { /* load VQ stage (700C only) */ // fprintf(stderr, "%s\n", optarg+1); codec2_load_codebook(codec2, atoi(optarg) - 1, argv[optind]); } else if (strcmp(long_options[option_index].name, "loadratek") == 0) { /* load rate K vectors (by passing quantisation) for 700C VQ tests */ fprintf(stderr, "%s\n", optarg); f_ratek = fopen(optarg, "rb"); assert(f_ratek != NULL); user_ratek = codec2_enable_user_ratek(codec2, &K); } else if (strcmp(long_options[option_index].name, "nopf") == 0) { codec2_700c_post_filter(codec2, 0); } else if (strcmp(long_options[option_index].name, "mlfeat") == 0) { /* dump machine learning features (700C only) */ codec2_open_mlfeat(codec2, optarg, NULL); } break; case 'h': print_help(long_options, num_opts, argv); break; default: /* This will never be reached */ break; } } assert(nend_bit <= nbit); codec2_set_natural_or_gray(codec2, !natural); // printf("%d %d\n", nstart_bit, nend_bit); // fprintf(stderr, "softdec: %d natural: %d\n", softdec, natural); if (softdec) { ret = (fread(softdec_bits, sizeof(float), nbit, fin) == (size_t)nbit); } if (bitperchar) { ret = (fread(bitperchar_bits, sizeof(char), nbit, fin) == (size_t)nbit); } if (!softdec && !bitperchar) { ret = (fread(bits, sizeof(char), nbyte, fin) == (size_t)nbyte); } while (ret) { // apply bit errors, MSB of byte 0 is bit 0 in frame, only works in packed // mode if ((error_mode == UNIFORM) || (error_mode == UNIFORM_RANGE)) { assert(softdec == 0); for (i = nstart_bit; i < nend_bit + 1; i++) { r = (float)rand() / RAND_MAX; if (r < ber) { byte = i / 8; // printf("nbyte %d nbit %d i %d byte %d bits[%d] 0x%0x ", nbyte, // nbit, i, byte, byte, bits[byte]); mask = 1 << (7 - i + byte * 8); bits[byte] ^= mask; // printf("shift: %d mask: 0x%0x bits[%d] 0x%0x\n", 7 - i + byte*8, // mask, byte, bits[byte] ); bit_errors++; } bits_proc++; } } if (error_mode == TWO_STATE) { assert(softdec == 0); burst_timer += (float)nbit / bit_rate; fprintf(stderr, "burst_timer: %f state: %d\n", burst_timer, state); next_state = state; switch (state) { case 0: /* clear channel state - no bit errors */ if (burst_timer > (burst_period - burst_length)) next_state = 1; break; case 1: /* burst error state - 50% bit error rate */ for (i = nstart_bit; i < nend_bit + 1; i++) { r = (float)rand() / RAND_MAX; if (r < 0.5) { byte = i / 8; bits[byte] ^= 1 << (7 - i + byte * 8); bit_errors++; } bits_proc++; } if (burst_timer > burst_period) { burst_timer = 0.0; next_state = 0; } break; } state = next_state; } if (fber != NULL) { if (fread(&ber_est, sizeof(float), 1, fber) != 1) { fprintf(stderr, "ran out of BER estimates!\n"); exit(1); } // fprintf(stderr, "ber_est: %f\n", ber_est); } else ber_est = 0.0; if (softdec) { /* pack bits, MSB received first */ bit = 7; byte = 0; memset(bits, 0, nbyte); for (i = 0; i < nbit; i++) { bits[byte] |= ((softdec_bits[i] < 0.0) << bit); bit--; if (bit < 0) { bit = 7; byte++; } } codec2_set_softdec(codec2, softdec_bits); } if (bitperchar) { /* pack bits, MSB received first */ bit = 7; byte = 0; memset(bits, 0, nbyte); for (i = 0; i < nbit; i++) { bits[byte] |= bitperchar_bits[i] << bit; bit--; if (bit < 0) { bit = 7; byte++; } } } if (report_energy) fprintf(stderr, "Energy: %1.3f\n", codec2_get_energy(codec2, bits)); if (f_ratek != NULL) ret = fread(user_ratek, sizeof(float), K, f_ratek); codec2_decode_ber(codec2, buf, bits, ber_est); fwrite(buf, sizeof(short), nsam, fout); // if this is in a pipeline, we probably don't want the usual // buffering to occur if (fout == stdout) fflush(stdout); if (softdec) { ret = (fread(softdec_bits, sizeof(float), nbit, fin) == (size_t)nbit); } if (bitperchar) { ret = (fread(bitperchar_bits, sizeof(char), nbit, fin) == (size_t)nbit); } if (!softdec && !bitperchar) { ret = (fread(bits, sizeof(char), nbyte, fin) == (size_t)nbyte); } } if (error_mode) fprintf(stderr, "actual BER: %1.3f\n", (float)bit_errors / bits_proc); codec2_destroy(codec2); free(buf); free(bits); free(softdec_bits); free(bitperchar_bits); fclose(fin); fclose(fout); if (fber != NULL) { fclose(fber); } return 0; } void print_help(const struct option *long_options, int num_opts, char *argv[]) { int i; char *option_parameters; fprintf(stderr, "\nc2dec - Codec 2 decoder and bit error simulation program\n" "usage: %s 3200|2400|1600|1400|1300|1200|700C InputFile " "OutputRawFile [OPTIONS]\n\n" "Options:\n", argv[0]); for (i = 0; i < num_opts - 1; i++) { if (long_options[i].has_arg == no_argument) { option_parameters = ""; } else if (strcmp("ber", long_options[i].name) == 0) { option_parameters = " BER"; } else if (strcmp("startbit", long_options[i].name) == 0) { option_parameters = " startBit"; } else if (strcmp("endbit", long_options[i].name) == 0) { option_parameters = " endBit"; } else if (strcmp("berfile", long_options[i].name) == 0) { option_parameters = " berFileName"; } else if (strcmp("dump", long_options[i].name) == 0) { option_parameters = " dumpFilePrefix"; } else if (strcmp("lspEWov", long_options[i].name) == 0) { option_parameters = " featureFileName"; } else { option_parameters = " "; } fprintf(stderr, "\t--%s%s\n", long_options[i].name, option_parameters); } exit(1); } codec2-1.2.0/src/c2enc.c000066400000000000000000000134731445607075400146220ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: c2enc.c AUTHOR......: David Rowe DATE CREATED: 23/8/2010 Encodes a file of raw speech samples using codec2 and outputs a file of bits. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2010 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include "c2file.h" #include "codec2.h" int main(int argc, char *argv[]) { int mode; void *codec2; FILE *fin; FILE *fout; short *buf; unsigned char *bits; int nsam, nbit, nbyte, gray, softdec, bitperchar; float *unpacked_bits_float; char *unpacked_bits_char; int bit, byte, i; int report_var = 0; int eq = 0; if (argc < 4) { printf( "usage: c2enc 3200|2400|1600|1400|1300|1200|700C " "InputRawspeechFile OutputBitFile [--natural] [--softdec] " "[--bitperchar] [--mlfeat f32File modelFile] [--loadcb stageNum " "Filename] [--var] [--eq]\n"); printf("e.g. (headerless) c2enc 1300 ../raw/hts1a.raw hts1a.bin\n"); printf( "e.g. (with header to detect mode) c2enc 1300 ../raw/hts1a.raw " "hts1a.c2\n"); exit(1); } if (strcmp(argv[1], "3200") == 0) mode = CODEC2_MODE_3200; else if (strcmp(argv[1], "2400") == 0) mode = CODEC2_MODE_2400; else if (strcmp(argv[1], "1600") == 0) mode = CODEC2_MODE_1600; else if (strcmp(argv[1], "1400") == 0) mode = CODEC2_MODE_1400; else if (strcmp(argv[1], "1300") == 0) mode = CODEC2_MODE_1300; else if (strcmp(argv[1], "1200") == 0) mode = CODEC2_MODE_1200; else if (strcmp(argv[1], "700C") == 0) mode = CODEC2_MODE_700C; else { fprintf(stderr, "Error in mode: %s. Must be 3200, 2400, 1600, 1400, 1300, 1200, " "700C\n", argv[1]); exit(1); } if (strcmp(argv[2], "-") == 0) fin = stdin; else if ((fin = fopen(argv[2], "rb")) == NULL) { fprintf(stderr, "Error opening input speech file: %s: %s.\n", argv[2], strerror(errno)); exit(1); } if (strcmp(argv[3], "-") == 0) fout = stdout; else if ((fout = fopen(argv[3], "wb")) == NULL) { fprintf(stderr, "Error opening output compressed bit file: %s: %s.\n", argv[3], strerror(errno)); exit(1); } // Write a header if we're writing to a .c2 file char *ext = strrchr(argv[3], '.'); if (ext != NULL) { if (strcmp(ext, ".c2") == 0) { struct c2_header out_hdr; memcpy(out_hdr.magic, c2_file_magic, sizeof(c2_file_magic)); out_hdr.mode = mode; out_hdr.version_major = CODEC2_VERSION_MAJOR; out_hdr.version_minor = CODEC2_VERSION_MINOR; // TODO: Handle flags (this block needs to be moved down) out_hdr.flags = 0; fwrite(&out_hdr, sizeof(out_hdr), 1, fout); }; }; codec2 = codec2_create(mode); nsam = codec2_samples_per_frame(codec2); nbit = codec2_bits_per_frame(codec2); buf = (short *)malloc(nsam * sizeof(short)); nbyte = (nbit + 7) / 8; bits = (unsigned char *)malloc(nbyte * sizeof(char)); unpacked_bits_float = (float *)malloc(nbit * sizeof(float)); unpacked_bits_char = (char *)malloc(nbit * sizeof(char)); gray = 1; softdec = 0; bitperchar = 0; for (i = 4; i < argc; i++) { if (strcmp(argv[i], "--natural") == 0) { gray = 0; } if (strcmp(argv[i], "--softdec") == 0) { softdec = 1; } if (strcmp(argv[i], "--bitperchar") == 0) { bitperchar = 1; } if (strcmp(argv[i], "--mlfeat") == 0) { /* dump machine learning features (700C only) */ codec2_open_mlfeat(codec2, argv[i + 1], argv[i + 2]); } if (strcmp(argv[i], "--loadcb") == 0) { /* load VQ stage (700C only) */ codec2_load_codebook(codec2, atoi(argv[i + 1]) - 1, argv[i + 2]); } if (strcmp(argv[i], "--var") == 0) { report_var = 1; } if (strcmp(argv[i], "--eq") == 0) { eq = 1; } } codec2_set_natural_or_gray(codec2, gray); codec2_700c_eq(codec2, eq); // fprintf(stderr,"gray: %d softdec: %d\n", gray, softdec); while (fread(buf, sizeof(short), nsam, fin) == (size_t)nsam) { codec2_encode(codec2, bits, buf); if (softdec || bitperchar) { /* unpack bits, MSB first, send as soft decision float */ bit = 7; byte = 0; for (i = 0; i < nbit; i++) { unpacked_bits_float[i] = 1.0 - 2.0 * ((bits[byte] >> bit) & 0x1); unpacked_bits_char[i] = (bits[byte] >> bit) & 0x1; bit--; if (bit < 0) { bit = 7; byte++; } } if (softdec) { fwrite(unpacked_bits_float, sizeof(float), nbit, fout); } if (bitperchar) { fwrite(unpacked_bits_char, sizeof(char), nbit, fout); } } else fwrite(bits, sizeof(char), nbyte, fout); // if this is in a pipeline, we probably don't want the usual // buffering to occur if (fout == stdout) fflush(stdout); } if (report_var) { float var = codec2_get_var(codec2); fprintf(stderr, "%s var: %5.2f std: %5.2f\n", argv[2], var, sqrt(var)); } codec2_destroy(codec2); free(buf); free(bits); free(unpacked_bits_float); free(unpacked_bits_char); fclose(fin); fclose(fout); return 0; } codec2-1.2.0/src/c2file.h000066400000000000000000000007001445607075400147660ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: c2file.h AUTHOR......: Kevin Otte DATE CREATED: 2017-08-01 Header structures for Codec2 file storage \*---------------------------------------------------------------------------*/ const char c2_file_magic[3] = {0xc0, 0xde, 0xc2}; struct c2_header { char magic[3]; char version_major; char version_minor; char mode; char flags; }; codec2-1.2.0/src/c2sim.c000066400000000000000000001175771445607075400146570ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: c2sim.c AUTHOR......: David Rowe DATE CREATED: 20/8/2010 Codec2 simulation. Combines encoder and decoder and allows switching in and out various algorithms and quantisation steps. Used for algorithm development. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2009 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include #include #include "bpf.h" #include "bpfb.h" #include "defines.h" #include "dump.h" #include "interp.h" #include "lpc.h" #include "lpcnet_freq.h" #include "lsp.h" #include "newamp1.h" #include "nlp.h" #include "phase.h" #include "postfilter.h" #include "quantise.h" #include "sd.h" #include "sine.h" void synth_one_frame(int n_samp, codec2_fftr_cfg fftr_inv_cfg, short buf[], MODEL *model, float Sn_[], float Pn[], int prede, float *de_mem, float gain); void print_help(const struct option *long_options, int num_opts, char *argv[]); #define N_SAMP n_samp /* quick fix for run time sample rate selection */ /*---------------------------------------------------------------------------*\ MAIN \*---------------------------------------------------------------------------*/ int main(int argc, char *argv[]) { int Fs = 8000; int set_fs; int lpc_model = 0, order = LPC_ORD; int lsp = 0, lspd = 0, lspvq = 0; int lspjmv = 0; int prede = 0; int postfilt; int hand_voicing = 0, hi = 0, simlpcpf = 0, modelin = 0, modelout = 0; int lpcpf = 0; FILE *fvoicing = 0; int dec; int decimate = 1; int amread, Woread, pahw; int awread; int hmread; int phase0 = 0; int scalar_quant_Wo_e = 0; int scalar_quant_Wo_e_low = 0; int vector_quant_Wo_e = 0; int dump_pitch_e = 0; float gain = 1.0; int bpf_en = 0; int bpfb_en = 0; FILE *fam = NULL, *fWo = NULL; FILE *faw = NULL; FILE *fhm = NULL; FILE *fjmv = NULL; FILE *flspEWov = NULL; FILE *ften_ms_centre = NULL; FILE *fmodelout = NULL; FILE *fmodelin = NULL; #ifdef DUMP int dump; #endif char out_file[MAX_STR]; FILE *fout = NULL; /* output speech file */ int rateK = 0, newamp1vq = 0, rate_K_dec = 0, perframe = 0; int bands = 0, bands_lower_en; float bands_lower = -1E32; int K = 20; float framelength_s = N_S; int lspEWov = 0, rateKWov = 0, first = 0; FILE *frateKWov = NULL; int ten_ms_centre = 0; FILE *fphasenn = NULL; FILE *frateK = NULL; FILE *frateKin = NULL; int rateKout, rateKin; FILE *fbands = NULL; int bands_resample = 0; char *opt_string = "ho:"; struct option long_options[] = { {"Fs", required_argument, &set_fs, 1}, {"rateK", no_argument, &rateK, 1}, {"perframe", no_argument, &perframe, 1}, {"newamp1vq", no_argument, &newamp1vq, 1}, {"rateKdec", required_argument, &rate_K_dec, 1}, {"rateKout", required_argument, &rateKout, 1}, {"rateKin", required_argument, &rateKin, 1}, {"bands", required_argument, &bands, 1}, {"bands_lower", required_argument, &bands_lower_en, 1}, {"bands_resample", no_argument, &bands_resample, 1}, {"lpc", required_argument, &lpc_model, 1}, {"lsp", no_argument, &lsp, 1}, {"lspd", no_argument, &lspd, 1}, {"lspvq", no_argument, &lspvq, 1}, {"lspjmv", no_argument, &lspjmv, 1}, {"phase0", no_argument, &phase0, 1}, {"postfilter", no_argument, &postfilt, 1}, {"hand_voicing", required_argument, &hand_voicing, 1}, {"dec", required_argument, &dec, 1}, {"hi", no_argument, &hi, 1}, {"simlpcpf", no_argument, &simlpcpf, 1}, {"lpcpf", no_argument, &lpcpf, 1}, {"prede", no_argument, &prede, 1}, {"dump_pitch_e", required_argument, &dump_pitch_e, 1}, {"sq_pitch_e", no_argument, &scalar_quant_Wo_e, 1}, {"sq_pitch_e_low", no_argument, &scalar_quant_Wo_e_low, 1}, {"vq_pitch_e", no_argument, &vector_quant_Wo_e, 1}, {"rate", required_argument, NULL, 0}, {"gain", required_argument, NULL, 0}, {"bpf", no_argument, &bpf_en, 1}, {"bpfb", no_argument, &bpfb_en, 1}, {"amread", required_argument, &amread, 1}, {"hmread", required_argument, &hmread, 1}, {"awread", required_argument, &awread, 1}, {"Woread", required_argument, &Woread, 1}, {"pahw", required_argument, &pahw, 1}, {"lspEWov", required_argument, &lspEWov, 1}, {"rateKWov", required_argument, &rateKWov, 1}, {"first", no_argument, &first, 1}, {"ten_ms_centre", required_argument, &ten_ms_centre, 1}, {"framelength_s", required_argument, NULL, 0}, {"modelout", required_argument, &modelout, 1}, {"modelin", required_argument, &modelin, 1}, #ifdef DUMP {"dump", required_argument, &dump, 1}, #endif {"help", no_argument, NULL, 'h'}, {NULL, no_argument, NULL, 0}}; int num_opts = sizeof(long_options) / sizeof(struct option); /*----------------------------------------------------------------*\ Interpret Command Line Arguments \*----------------------------------------------------------------*/ if (argc < 2) { print_help(long_options, num_opts, argv); } while (1) { int option_index = 0; int opt = getopt_long(argc, argv, opt_string, long_options, &option_index); if (opt == -1) break; switch (opt) { case 0: if (strcmp(long_options[option_index].name, "Fs") == 0) { Fs = atoi(optarg); if ((Fs != 8000) && (Fs != 16000)) { fprintf(stderr, "Error Fs must be 8000 or 16000\n"); exit(1); } } else if (strcmp(long_options[option_index].name, "lpc") == 0) { order = atoi(optarg); #ifdef DUMP } else if (strcmp(long_options[option_index].name, "dump") == 0) { if (dump) dump_on(optarg); #endif } else if (strcmp(long_options[option_index].name, "lsp") == 0 || strcmp(long_options[option_index].name, "lspd") == 0 || strcmp(long_options[option_index].name, "lspvq") == 0) { assert(order == LPC_ORD); } else if (strcmp(long_options[option_index].name, "rateKdec") == 0) { rate_K_dec = atoi(optarg); fprintf(stderr, "rate_K_dec: %d\n", rate_K_dec); } else if (strcmp(long_options[option_index].name, "rateKout") == 0) { /* read model records from file or stdin */ if ((frateK = fopen(optarg, "wb")) == NULL) { fprintf(stderr, "Error opening output rateK file: %s: %s\n", optarg, strerror(errno)); exit(1); } fprintf(stderr, "each record is %d bytes\n", (int)(K * sizeof(float))); } else if (strcmp(long_options[option_index].name, "rateKin") == 0) { /* read model records from file or stdin */ if ((frateKin = fopen(optarg, "rb")) == NULL) { fprintf(stderr, "Error opening input rateK file: %s: %s\n", optarg, strerror(errno)); exit(1); } fprintf(stderr, "each record is %d bytes\n", (int)(K * sizeof(float))); } else if (strcmp(long_options[option_index].name, "bands") == 0) { /* write mel spaced band energies to file or stdout */ if ((fbands = fopen(optarg, "wb")) == NULL) { fprintf(stderr, "Error opening bands file: %s: %s\n", optarg, strerror(errno)); exit(1); } } else if (strcmp(long_options[option_index].name, "bands_lower") == 0) { bands_lower = atof(optarg); fprintf(stderr, "bands_lower: %f\n", bands_lower); } else if (strcmp(long_options[option_index].name, "dec") == 0) { decimate = atoi(optarg); if ((decimate != 2) && (decimate != 3) && (decimate != 4)) { fprintf(stderr, "Error in --dec, must be 2, 3, or 4\n"); exit(1); } if (!phase0) { fprintf(stderr, "needs --phase0 to resample phase when using --dec\n"); exit(1); } if (!lpc_model) { fprintf(stderr, "needs --lpc [order] to resample amplitudes when using " "--dec\n"); exit(1); } } else if (strcmp(long_options[option_index].name, "hand_voicing") == 0) { if ((fvoicing = fopen(optarg, "rt")) == NULL) { fprintf(stderr, "Error opening voicing file: %s: %s.\n", optarg, strerror(errno)); exit(1); } } else if (strcmp(long_options[option_index].name, "Woread") == 0) { if ((fWo = fopen(optarg, "rb")) == NULL) { fprintf(stderr, "Error opening float Wo file: %s: %s.\n", optarg, strerror(errno)); exit(1); } } else if (strcmp(long_options[option_index].name, "amread") == 0) { if ((fam = fopen(optarg, "rb")) == NULL) { fprintf(stderr, "Error opening float Am file: %s: %s.\n", optarg, strerror(errno)); exit(1); } } else if (strcmp(long_options[option_index].name, "hmread") == 0) { if ((fhm = fopen(optarg, "rb")) == NULL) { fprintf(stderr, "Error opening float Hm file: %s: %s.\n", optarg, strerror(errno)); exit(1); } } else if (strcmp(long_options[option_index].name, "awread") == 0) { if ((faw = fopen(optarg, "rb")) == NULL) { fprintf(stderr, "Error opening float Aw file: %s: %s.\n", optarg, strerror(errno)); exit(1); } } else if (strcmp(long_options[option_index].name, "dump_pitch_e") == 0) { if ((fjmv = fopen(optarg, "wt")) == NULL) { fprintf(stderr, "Error opening pitch & energy dump file: %s: %s.\n", optarg, strerror(errno)); exit(1); } } else if (strcmp(long_options[option_index].name, "gain") == 0) { gain = atof(optarg); } else if (strcmp(long_options[option_index].name, "framelength_s") == 0) { framelength_s = atof(optarg); } else if (strcmp(long_options[option_index].name, "pahw") == 0) { /* set up a bunch of arguments instead of having to enter them on cmd * line every time */ phase0 = postfilt = amread = hmread = Woread = 1; char file_name[MAX_STR]; sprintf(file_name, "%s_am.out", optarg); fprintf(stderr, "reading %s", file_name); if ((fam = fopen(file_name, "rb")) == NULL) { fprintf(stderr, "Error opening float Am file: %s: %s.\n", file_name, strerror(errno)); exit(1); } sprintf(file_name, "%s_hm.out", optarg); fprintf(stderr, " %s", file_name); if ((fhm = fopen(file_name, "rb")) == NULL) { fprintf(stderr, "Error opening float Hm file: %s: %s.\n", file_name, strerror(errno)); exit(1); } sprintf(file_name, "%s_Wo.out", optarg); fprintf(stderr, " %s\n", file_name); if ((fWo = fopen(file_name, "rb")) == NULL) { fprintf(stderr, "Error opening float Wo file: %s: %s.\n", file_name, strerror(errno)); exit(1); } } else if (strcmp(long_options[option_index].name, "lspEWov") == 0) { /* feature file for deep learning experiments */ lpc_model = 1; phase0 = 1; if ((flspEWov = fopen(optarg, "wb")) == NULL) { fprintf(stderr, "Error opening lspEWov float file: %s: %s\n", optarg, strerror(errno)); exit(1); } } else if (strcmp(long_options[option_index].name, "rateKWov") == 0) { /* feature file for deep learning experiments */ rateK = 1; newamp1vq = 1; if ((frateKWov = fopen(optarg, "wb")) == NULL) { fprintf(stderr, "Error opening rateKWov float file: %s: %s\n", optarg, strerror(errno)); exit(1); } } else if (strcmp(long_options[option_index].name, "ten_ms_centre") == 0) { /* dump 10ms of audio centred on analysis frame to check time alignment with 16 kHz source audio */ ten_ms_centre = 1; if ((ften_ms_centre = fopen(optarg, "wb")) == NULL) { fprintf(stderr, "Error opening ten_ms_centre short file: %s: %s\n", optarg, strerror(errno)); exit(1); } } else if (strcmp(long_options[option_index].name, "modelout") == 0) { /* write model records to file or stdout */ modelout = 1; if (strcmp(optarg, "-") == 0) fmodelout = stdout; else if ((fmodelout = fopen(optarg, "wb")) == NULL) { fprintf(stderr, "Error opening modelout file: %s: %s\n", optarg, strerror(errno)); exit(1); } fprintf(stderr, "each model record is %d bytes\n", (int)sizeof(MODEL)); } else if (strcmp(long_options[option_index].name, "modelin") == 0) { /* read model records from file or stdin */ modelin = 1; if (strcmp(optarg, "-") == 0) fmodelin = stdin; else if ((fmodelin = fopen(optarg, "rb")) == NULL) { fprintf(stderr, "Error opening modelin file: %s: %s\n", optarg, strerror(errno)); exit(1); } fprintf(stderr, "each model record is %d bytes\n", (int)sizeof(MODEL)); } else if (strcmp(long_options[option_index].name, "rate") == 0) { if (strcmp(optarg, "3200") == 0) { lpc_model = 1; scalar_quant_Wo_e = 1; lspd = 1; phase0 = 1; postfilt = 1; decimate = 1; lpcpf = 1; } else if (strcmp(optarg, "2400") == 0) { lpc_model = 1; vector_quant_Wo_e = 1; lsp = 1; phase0 = 1; postfilt = 1; decimate = 2; lpcpf = 1; } else if (strcmp(optarg, "1400") == 0) { lpc_model = 1; vector_quant_Wo_e = 1; lsp = 1; phase0 = 1; postfilt = 1; decimate = 4; lpcpf = 1; } else if (strcmp(optarg, "1300") == 0) { lpc_model = 1; scalar_quant_Wo_e = 1; lsp = 1; phase0 = 1; postfilt = 1; decimate = 4; lpcpf = 1; } else if (strcmp(optarg, "1200") == 0) { lpc_model = 1; scalar_quant_Wo_e = 1; lspjmv = 1; phase0 = 1; postfilt = 1; decimate = 4; lpcpf = 1; } else { fprintf(stderr, "Error: invalid output rate (3200|2400|1400|1200) %s\n", optarg); exit(1); } } break; case 'h': print_help(long_options, num_opts, argv); break; case 'o': if (strcmp(optarg, "-") == 0) fout = stdout; else if ((fout = fopen(optarg, "wb")) == NULL) { fprintf(stderr, "Error opening output speech file: %s: %s.\n", optarg, strerror(errno)); exit(1); } strcpy(out_file, optarg); break; default: /* This will never be reached */ break; } } /* Input file */ FILE *fin; /* input speech file */ if (strcmp(argv[optind], "-") == 0) fin = stdin; else if ((fin = fopen(argv[optind], "rb")) == NULL) { fprintf(stderr, "Error opening input speech file: %s: %s.\n", argv[optind], strerror(errno)); exit(1); } C2CONST c2const = c2const_create(Fs, framelength_s); int n_samp = c2const.n_samp; int m_pitch = c2const.m_pitch; short buf[N_SAMP]; /* input/output buffer */ float buf_float[N_SAMP]; float Sn[m_pitch]; /* float input speech samples */ float Sn_pre[m_pitch]; /* pre-emphasised input speech samples */ COMP Sw[FFT_ENC]; /* DFT of Sn[] */ codec2_fft_cfg fft_fwd_cfg; codec2_fftr_cfg fftr_fwd_cfg; codec2_fftr_cfg fftr_inv_cfg; float w[m_pitch]; /* time domain hamming window */ float W[FFT_ENC]; /* DFT of w[] */ MODEL model; float Pn[2 * N_SAMP]; /* trapezoidal synthesis window */ float Sn_[2 * N_SAMP]; /* synthesised speech */ int i, m; /* loop variable */ int frames; float prev_f0; float pitch; float snr; float sum_snr; float pre_mem = 0.0, de_mem = 0.0; float ak[1 + order]; // COMP Sw_[FFT_ENC]; // COMP Ew[FFT_ENC]; float ex_phase[MAX_AMP + 1]; float bg_est = 0.0; MODEL prev_model; float lsps[order]; float e, prev_e; int lsp_indexes[order]; float lsps_[order]; float Woe_[2]; float lsps_dec[4][order], e_dec[4], weight, weight_inc, ak_dec[4][order]; MODEL model_dec[4], prev_model_dec; float prev_lsps_dec[order], prev_e_dec; void *nlp_states; float hpf_states[2]; #if 0 struct PEXP *pexp = NULL; struct AEXP *aexp = NULL; #endif float bpf_buf[BPF_N + N_SAMP]; COMP Aw[FFT_ENC]; COMP H[MAX_AMP]; float sd_sum = 0.0; int sd_frames = 0; for (i = 0; i < m_pitch; i++) { Sn[i] = 1.0; Sn_pre[i] = 1.0; } for (i = 0; i < 2 * N_SAMP; i++) Sn_[i] = 0; prev_f0 = 1 / P_MAX_S; prev_model.Wo = c2const.Wo_max; prev_model.L = floor(PI / prev_model.Wo); for (i = 1; i <= prev_model.L; i++) { prev_model.A[i] = 0.0; prev_model.phi[i] = 0.0; } for (i = 1; i <= MAX_AMP; i++) { // ex_phase[i] = (PI/3)*(float)rand()/RAND_MAX; ex_phase[i] = 0.0; } e = prev_e = 1; hpf_states[0] = hpf_states[1] = 0.0; nlp_states = nlp_create(&c2const); ex_phase[0] = 0; Woe_[0] = Woe_[1] = 1.0; /* Initialise ------------------------------------------------------------*/ fft_fwd_cfg = codec2_fft_alloc(FFT_ENC, 0, NULL, NULL); /* fwd FFT,used in several places */ fftr_fwd_cfg = codec2_fftr_alloc(FFT_ENC, 0, NULL, NULL); /* fwd FFT,used in several places */ fftr_inv_cfg = codec2_fftr_alloc(FFT_DEC, 1, NULL, NULL); /* inverse FFT, used just for synth */ codec2_fft_cfg phase_fft_fwd_cfg = codec2_fft_alloc(NEWAMP1_PHASE_NFFT, 0, NULL, NULL); codec2_fft_cfg phase_fft_inv_cfg = codec2_fft_alloc(NEWAMP1_PHASE_NFFT, 1, NULL, NULL); make_analysis_window(&c2const, fft_fwd_cfg, w, W); make_synthesis_window(&c2const, Pn); if (bpfb_en) bpf_en = 1; if (bpf_en) { for (i = 0; i < BPF_N; i++) bpf_buf[i] = 0.0; } for (i = 0; i < LPC_ORD; i++) { prev_lsps_dec[i] = i * PI / (LPC_ORD + 1); } prev_e_dec = 1; for (m = 1; m <= MAX_AMP; m++) prev_model_dec.A[m] = 0.0; prev_model_dec.Wo = c2const.Wo_min; prev_model_dec.L = PI / prev_model_dec.Wo; prev_model_dec.voiced = 0; /* mel resampling experiments */ float rate_K_sample_freqs_kHz[K]; float se = 0.0; int nse = 0; if (rateK) { mel_sample_freqs_kHz(rate_K_sample_freqs_kHz, NEWAMP1_K, ftomel(200.0), ftomel(3700.0)); } float rate_K_vec_delay[rate_K_dec + 1][K]; float rate_K_vec_delay_[rate_K_dec + 1][K]; MODEL rate_K_model_delay[rate_K_dec + 1]; for (int d = 0; d <= rate_K_dec; d++) { for (int k = 0; k < K; k++) { rate_K_vec_delay[d][k] = 0; rate_K_vec_delay_[d][k] = 0; } for (m = 1; m <= MAX_AMP; m++) rate_K_model_delay[d].A[m] = 0.0; rate_K_model_delay[d].Wo = c2const.Wo_min; rate_K_model_delay[d].L = M_PI / prev_model_dec.Wo; rate_K_model_delay[d].voiced = 0; } float eq[K]; for (int k = 0; k < K; k++) eq[k] = 0; /*----------------------------------------------------------------* \ Main Loop \*----------------------------------------------------------------*/ frames = 0; sum_snr = 0; while (fread(buf, sizeof(short), N_SAMP, fin)) { frames++; for (i = 0; i < N_SAMP; i++) buf_float[i] = buf[i]; /* optionally filter input speech */ if (prede) { pre_emp(Sn_pre, buf_float, &pre_mem, N_SAMP); for (i = 0; i < N_SAMP; i++) buf_float[i] = Sn_pre[i]; } if (bpf_en) { /* filter input speech to create buf_float_bpf[], this is fed to the LPC modelling. Unfiltered speech in in buf_float[], which is delayed to match that of the BPF */ /* BPF speech */ for (i = 0; i < BPF_N; i++) bpf_buf[i] = bpf_buf[N_SAMP + i]; for (i = 0; i < N_SAMP; i++) bpf_buf[BPF_N + i] = buf_float[i]; if (bpfb_en) inverse_filter(&bpf_buf[BPF_N], bpfb, N_SAMP, buf_float, BPF_N); else inverse_filter(&bpf_buf[BPF_N], bpf, N_SAMP, buf_float, BPF_N); } /* shift buffer of input samples, and insert new samples */ for (i = 0; i < m_pitch - N_SAMP; i++) { Sn[i] = Sn[i + N_SAMP]; } for (i = 0; i < N_SAMP; i++) { Sn[i + m_pitch - N_SAMP] = buf_float[i]; } /*------------------------------------------------------------*\ Estimate Sinusoidal Model Parameters \*------------------------------------------------------------*/ nlp(nlp_states, Sn, N_SAMP, &pitch, Sw, W, &prev_f0); model.Wo = TWO_PI / pitch; dft_speech(&c2const, fft_fwd_cfg, Sw, Sn, w); two_stage_pitch_refinement(&c2const, &model, Sw); estimate_amplitudes(&model, Sw, W, 1); #ifdef DUMP dump_Sn(m_pitch, Sn); dump_Sw(Sw); dump_model(&model); #endif /* speech centred on analysis frame for Deep Learning work */ if (ten_ms_centre) { int n_10_ms = Fs * 0.01; int n_5_ms = Fs * 0.005; short buf[n_10_ms]; for (i = 0; i < n_10_ms; i++) { buf[i] = Sn[m_pitch / 2 - n_5_ms + i]; } fwrite(buf, n_10_ms, sizeof(short), ften_ms_centre); } if (hi) { int m; for (m = 1; m < model.L / 2; m++) model.A[m] = 0.0; for (m = 3 * model.L / 4; m <= model.L; m++) model.A[m] = 0.0; } /*------------------------------------------------------------*\ Zero-phase modelling \*------------------------------------------------------------*/ /* estimate voicing - do this all the time so model.voicing * is set, useful for machine learning work */ snr = est_voicing_mbe(&c2const, &model, Sw, W); if (phase0) { #ifdef DUMP dump_phase(&model.phi[0], model.L); #endif if (dump_pitch_e) fprintf(fjmv, "%f %f %d ", model.Wo, snr, model.voiced); #ifdef DUMP dump_snr(snr); #endif /* just to make sure we are not cheating - kill all phases */ for (i = 0; i <= MAX_AMP; i++) model.phi[i] = 0; if (hand_voicing) { int ret = fscanf(fvoicing, "%d\n", &model.voiced); assert(ret == 1); } } /*------------------------------------------------------------*\ LPC model amplitudes and LSP quantisation \*------------------------------------------------------------*/ if (lpc_model) { float ak_[LPC_ORD + 1]; e = speech_to_uq_lsps(lsps, ak, Sn, w, m_pitch, order); for (i = 0; i < order; i++) lsps_[i] = lsps[i]; #ifdef DUMP dump_ak(ak, order); dump_E(e); #endif if (dump_pitch_e) fprintf(fjmv, "%f\n", e); #ifdef DUMP dump_lsp(lsps); #endif /* various LSP quantisation schemes */ if (lsp) { encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD); decode_lsps_scalar(lsps_, lsp_indexes, LPC_ORD); bw_expand_lsps(lsps_, LPC_ORD, 50.0, 100.0); lsp_to_lpc(lsps_, ak_, LPC_ORD); } if (lspd) { encode_lspds_scalar(lsp_indexes, lsps, LPC_ORD); decode_lspds_scalar(lsps_, lsp_indexes, LPC_ORD); lsp_to_lpc(lsps_, ak_, LPC_ORD); } if (lspjmv) { /* Jean-Marc's multi-stage, split VQ */ lspjmv_quantise(lsps, lsps_, LPC_ORD); { float lsps_bw[LPC_ORD]; memcpy(lsps_bw, lsps_, sizeof(float) * order); bw_expand_lsps(lsps_bw, LPC_ORD, 50.0, 100.0); lsp_to_lpc(lsps_bw, ak_, LPC_ORD); } } if (lsp || lspd || lspjmv) { sd_sum += spectral_dist(ak, ak_, LPC_ORD, fft_fwd_cfg, FFT_ENC); sd_frames++; } memcpy(ak, ak_, (LPC_ORD + 1) * sizeof(float)); if (scalar_quant_Wo_e) { e = decode_energy(encode_energy(e, E_BITS), E_BITS); model.Wo = decode_Wo(&c2const, encode_Wo(&c2const, model.Wo, WO_BITS), WO_BITS); model.L = PI / model.Wo; /* if we quantise Wo re-compute L */ } if (scalar_quant_Wo_e_low) { int ind; e = decode_energy(ind = encode_energy(e, 3), 3); model.Wo = decode_log_Wo(&c2const, encode_log_Wo(&c2const, model.Wo, 5), 5); model.L = PI / model.Wo; /* if we quantise Wo re-compute L */ } if (vector_quant_Wo_e) { /* JVM's experimental joint Wo & LPC energy quantiser */ quantise_WoE(&c2const, &model, &e, Woe_); } } if (amread) { int ret = fread(model.A, sizeof(float), MAX_AMP, fam); assert(ret == MAX_AMP); } if (Woread) { int ret = fread(&model.Wo, sizeof(float), 1, fWo); model.L = floor(PI / model.Wo); assert(ret == 1); } /* dump features for Deep learning, placed here so we can get quantised * features */ if (lspEWov) { /* order LSPs - energy - Wo - voicing flag - order LPCs */ if (lsp) fwrite(lsps_, order, sizeof(float), flspEWov); else fwrite(lsps, order, sizeof(float), flspEWov); fwrite(&e, 1, sizeof(float), flspEWov); fwrite(&model.Wo, 1, sizeof(float), flspEWov); float voiced_float = model.voiced; fwrite(&voiced_float, 1, sizeof(float), flspEWov); fwrite(&ak[1], order, sizeof(float), flspEWov); } /* LPCNet type mel spaced band ML data */ float bands_mean = 0.0; if (fbands) { float bandE[LPCNET_FREQ_MAX_BANDS]; float freqkHz[LPCNET_FREQ_MAX_BANDS]; int nbands = lpcnet_compute_band_energy(bandE, freqkHz, Sw, Fs, FFT_ENC); for (int i = 0; i < nbands; i++) bands_mean += bandE[i]; bands_mean /= nbands; // fprintf(stderr, "bands_mean: %f bands_lower %f\n", bands_mean, // bands_lower); if (bands_mean > bands_lower) assert(fwrite(bandE, sizeof(float), nbands, fbands) == nbands); // optionally reconstruct [Am} by linear interpolation of band energies, // this doesn't sound very Good if (bands_resample) resample_rate_L(&c2const, &model, &bandE[1], &freqkHz[1], nbands - 2); } /*------------------------------------------------------------*\ Optional newamp1 simulation, as used in 700C \*------------------------------------------------------------*/ if (rateK) { float rate_K_vec[K]; resample_const_rate_f(&c2const, &model, rate_K_vec, rate_K_sample_freqs_kHz, K); if (frateK != NULL) assert(fwrite(rate_K_vec, sizeof(float), K, frateK) == K); if (frateKin != NULL) { assert(fread(rate_K_vec, sizeof(float), K, frateKin) == K); /* apply newamp1 postfilter - this helped male samples with VQVAE work */ float sum = 0.0; for (int k = 0; k < K; k++) sum += rate_K_vec[k]; float mean = sum / K; float rate_K_vec_no_mean[K]; for (int k = 0; k < K; k++) rate_K_vec_no_mean[k] = rate_K_vec[k] - mean; post_filter_newamp1(rate_K_vec_no_mean, rate_K_sample_freqs_kHz, K, 1.5); for (int k = 0; k < K; k++) rate_K_vec[k] = rate_K_vec_no_mean[k] + mean; } float rate_K_vec_[K]; if (newamp1vq) { /* remove mean */ float sum = 0.0; for (int k = 0; k < K; k++) sum += rate_K_vec[k]; float mean = sum / K; float rate_K_vec_no_mean[K]; for (int k = 0; k < K; k++) rate_K_vec_no_mean[k] = rate_K_vec[k] - mean; newamp1_eq(rate_K_vec_no_mean, eq, K, 1); /* two stage VQ */ float rate_K_vec_no_mean_[K]; int indexes[2]; rate_K_mbest_encode(indexes, rate_K_vec_no_mean, rate_K_vec_no_mean_, K, NEWAMP1_VQ_MBEST_DEPTH); for (int k = 0; k < K; k++) rate_K_vec_[k] = rate_K_vec_no_mean_[k] + mean; /* running sum of squared error for variance calculation */ for (int k = 0; k < K; k++) se += pow(rate_K_vec_no_mean[k] - rate_K_vec_no_mean_[k], 2.0); nse += K; } else { for (int k = 0; k < K; k++) rate_K_vec_[k] = rate_K_vec[k]; } if (frateKWov != NULL) { /* We use standard nb_features=55 feature records for compatibility with * train_lpcnet.py */ float features[55] = {0}; /* just using 18/20 for compatibility with LPCNet, coarse scaling for NN * input */ for (int i = 0; i < 18; i++) features[i] = (rate_K_vec_[i] - 30) / 40; // keep in range of 40 ... 255 for pitch embedding int pitch_index = 21 + 2.0 * M_PI / model.Wo; features[36] = 0.02 * (pitch_index - 100); // features[36] = (model.Wo - c2const.Wo_min)/(c2const.Wo_max - // c2const.Wo_min) - 0.5; features[37] = model.voiced; if (first) features[18] = -0.9; if (lpc_model) { MODEL model_; model_.Wo = model.Wo; model_.L = model.L; model_.voiced = model.voiced; float Rk[order + 1], ak[order + 1]; resample_rate_L(&c2const, &model_, rate_K_vec_, rate_K_sample_freqs_kHz, K); determine_autoc(&c2const, Rk, order, &model_, NEWAMP1_PHASE_NFFT, phase_fft_fwd_cfg, phase_fft_inv_cfg); /* -40 dB noise floor and Lag windowing from LPCNet/freq.c - helps reduce large spikes in spectrum when LPC analysis loses it. */ Rk[0] += Rk[0] * 1e-4 + 320 / 12 / 38.; for (i = 1; i < order + 1; i++) Rk[i] *= (1 - 6e-5 * i * i); levinson_durbin(Rk, ak, order); for (int i = 0; i < order; i++) features[18 + i] = ak[i + 1]; } fwrite(features, 55, sizeof(float), frateKWov); } if (rate_K_dec) { // update delay lines for (int d = 0; d < rate_K_dec; d++) { rate_K_model_delay[d] = rate_K_model_delay[d + 1]; memcpy(&rate_K_vec_delay[d][0], &rate_K_vec_delay[d + 1][0], sizeof(float) * K); } rate_K_model_delay[rate_K_dec] = model; memcpy(&rate_K_vec_delay[rate_K_dec][0], rate_K_vec_, sizeof(float) * K); if ((frames % rate_K_dec) == 0) { // every rate_K_dec frames, calculate interpolated output values if (perframe) { // calculate interpolation coeff c for each frame float *A = &rate_K_vec_delay[0][0]; float *B = &rate_K_vec_delay[rate_K_dec][0]; for (int d = 0; d <= rate_K_dec; d++) { float *T = &rate_K_vec_delay[d][0]; float num = 0.0, den = 0.0; for (int k = 0; k < K; k++) { num += (B[k] - T[k]) * (A[k] - B[k]); den += (A[k] - B[k]) * (A[k] - B[k]); } float c = -num / den; for (int k = 0; k < K; k++) rate_K_vec_delay_[d][k] = c * A[k] + (1.0 - c) * B[k]; } } else { // use linear interpolation float c = 0.0, inc = 1.0 / rate_K_dec; for (int d = 0; d <= rate_K_dec; d++) { for (int k = 0; k < K; k++) rate_K_vec_delay_[d][k] = (1.0 - c) * rate_K_vec_delay[0][k] + c * rate_K_vec_delay[rate_K_dec][k]; c += inc; } } } else { // otherwise just shift out frames we have already interpolated for (int d = 0; d < rate_K_dec; d++) { memcpy(&rate_K_vec_delay_[d][0], &rate_K_vec_delay_[d + 1][0], sizeof(float) * K); } } // output from delay line model = rate_K_model_delay[0]; for (int k = 0; k < K; k++) rate_K_vec_[k] = rate_K_vec_delay_[0][k]; } resample_rate_L(&c2const, &model, rate_K_vec_, rate_K_sample_freqs_kHz, K); } /*------------------------------------------------------------*\ Synthesise and optional decimation to 20 or 40ms frame rate \*------------------------------------------------------------*/ /* if decimate == 2, we interpolate frame n from frame n-1 and n+1 if decimate == 4, we interpolate frames n, n+1, n+2, from frames n-1 and n+3 This is meant to give identical results to the implementations of various modes in codec2.c */ /* delay line to keep frame by frame voicing decisions */ for (i = 0; i < decimate - 1; i++) model_dec[i] = model_dec[i + 1]; model_dec[decimate - 1] = model; if ((frames % decimate) == 0) { for (i = 0; i < order; i++) lsps_dec[decimate - 1][i] = lsps_[i]; e_dec[decimate - 1] = e; model_dec[decimate - 1] = model; /* interpolate the model parameters */ weight_inc = 1.0 / decimate; for (i = 0, weight = weight_inc; i < decimate - 1; i++, weight += weight_inc) { // model_dec[i].voiced = model_dec[decimate-1].voiced; interpolate_lsp_ver2(&lsps_dec[i][0], prev_lsps_dec, &lsps_dec[decimate - 1][0], weight, order); interp_Wo2(&model_dec[i], &prev_model_dec, &model_dec[decimate - 1], weight, c2const.Wo_min); e_dec[i] = interp_energy2(prev_e_dec, e_dec[decimate - 1], weight); } /* then recover spectral amplitudes and synthesise */ for (i = 0; i < decimate; i++) { if (lpc_model) { lsp_to_lpc(&lsps_dec[i][0], &ak_dec[i][0], order); aks_to_M2(fftr_fwd_cfg, &ak_dec[i][0], order, &model_dec[i], e_dec[i], &snr, 0, simlpcpf, lpcpf, 1, LPCPF_BETA, LPCPF_GAMMA, Aw); apply_lpc_correction(&model_dec[i]); sum_snr += snr; #ifdef DUMP dump_lsp_(&lsps_dec[i][0]); dump_ak_(&ak_dec[i][0], order); dump_quantised_model(&model_dec[i]); #endif } if (modelin) { int nrec; nrec = fread(&model_dec[i], sizeof(MODEL), 1, fmodelin); if (nrec != 1) { fprintf(stderr, "Warning - error reading model in record in frame %d - do " "you have enough records in file?\n", frames); } } if (phase0) { /* optionally read in Aw, replacing values generated using LPC */ if (awread) { int ret = fread(Aw, sizeof(COMP), FFT_ENC, faw); assert(ret == FFT_ENC); } /* optionally read in Hm directly, bypassing sampling of Aw[] */ if (hmread) { int ret = fread(H, sizeof(COMP), MAX_AMP, fhm); assert(ret == MAX_AMP); } else { determine_phase(&c2const, H, &model_dec[i], NEWAMP1_PHASE_NFFT, phase_fft_fwd_cfg, phase_fft_inv_cfg); } phase_synth_zero_order(n_samp, &model_dec[i], ex_phase, H); } if (postfilt) postfilter(&model_dec[i], &bg_est); synth_one_frame(n_samp, fftr_inv_cfg, buf, &model_dec[i], Sn_, Pn, prede, &de_mem, gain); if (fout != NULL) fwrite(buf, sizeof(short), N_SAMP, fout); if (modelout) { /* optionally don't write to filter out low energy frames */ if (bands) { if (bands_mean > bands_lower) fwrite(&model_dec[i], sizeof(MODEL), 1, fmodelout); } else fwrite(&model_dec[i], sizeof(MODEL), 1, fmodelout); } } /* update memories for next frame ----------------------------*/ prev_model_dec = model_dec[decimate - 1]; prev_e_dec = e_dec[decimate - 1]; for (i = 0; i < LPC_ORD; i++) prev_lsps_dec[i] = lsps_dec[decimate - 1][i]; } } /*----------------------------------------------------------------*\ End Main Loop \*----------------------------------------------------------------*/ fclose(fin); if (fout != NULL) fclose(fout); if (lpc_model) { fprintf(stderr, "LPC->{Am} SNR av: %5.2f dB over %d frames\n", sum_snr / frames, frames); if (lsp || lspd || lspjmv) fprintf(stderr, "LSP quantiser SD: %5.2f dB*dB over %d frames\n", sd_sum / sd_frames, sd_frames); } if (newamp1vq) { fprintf(stderr, "var: %3.2f dB*dB\n", se / nse); } #ifdef DUMP if (dump) dump_off(); #endif if (hand_voicing) fclose(fvoicing); nlp_destroy(nlp_states); if (fam != NULL) fclose(fam); if (fWo != NULL) fclose(fWo); if (faw != NULL) fclose(faw); if (fhm != NULL) fclose(fhm); if (fjmv != NULL) fclose(fjmv); if (flspEWov != NULL) fclose(flspEWov); if (fphasenn != NULL) fclose(fphasenn); if (frateK != NULL) fclose(frateK); if (frateKin != NULL) fclose(frateKin); if (ften_ms_centre != NULL) fclose(ften_ms_centre); if (fmodelout != NULL) fclose(fmodelout); if (fbands != NULL) fclose(fbands); if (frateKWov != NULL) fclose(frateKWov); return 0; } void synth_one_frame(int n_samp, codec2_fftr_cfg fftr_inv_cfg, short buf[], MODEL *model, float Sn_[], float Pn[], int prede, float *de_mem, float gain) { int i; synthesise(n_samp, fftr_inv_cfg, Sn_, model, Pn, 1); if (prede) de_emp(Sn_, Sn_, de_mem, n_samp); for (i = 0; i < n_samp; i++) { Sn_[i] *= gain; if (Sn_[i] > 32767.0) buf[i] = 32767; else if (Sn_[i] < -32767.0) buf[i] = -32767; else buf[i] = Sn_[i]; } } void print_help(const struct option *long_options, int num_opts, char *argv[]) { int i; char *option_parameters; fprintf(stderr, "\nCodec2 - low bit rate speech codec - Simulation Program\n" "\thttp://rowetel.com/codec2.html\n\n" "usage: %s [OPTIONS] \n\n" "Options:\n" "\t-o \n", argv[0]); for (i = 0; i < num_opts - 1; i++) { if (long_options[i].has_arg == no_argument) { option_parameters = ""; } else if (strcmp("lpc", long_options[i].name) == 0) { option_parameters = " "; } else if (strcmp("dec", long_options[i].name) == 0) { option_parameters = " <2|4>"; } else if (strcmp("hand_voicing", long_options[i].name) == 0) { option_parameters = " "; } else if (strcmp("dump_pitch_e", long_options[i].name) == 0) { option_parameters = " "; } else if (strcmp("rate", long_options[i].name) == 0) { option_parameters = " <3200|2400|1400|1300|1200>"; } else if (strcmp("dump", long_options[i].name) == 0) { option_parameters = " "; } else { option_parameters = " "; } fprintf(stderr, "\t--%s%s\n", long_options[i].name, option_parameters); } exit(1); } codec2-1.2.0/src/ch.c000066400000000000000000000403061445607075400142150ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: ch.c AUTHOR......: David Rowe DATE CREATED: May 2015 Channel simulation program for testing command line versions of modems. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2015-2022 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include #include "codec2_cohpsk.h" #include "comp_prim.h" #include "debug_alloc.h" #include "freedv_api.h" #include "ht_coeff.h" #include "ssbfilt_coeff.h" #define BUF_N 160 #define MPG_DELAY_MS 0.5 #define MPP_DELAY_MS 2.0 #define MPD_DELAY_MS 4.0 /* see instructions below for how to generate these files */ #define DEFAULT_FADING_DIR "unittest" #define MPG_FADING_FILE_NAME "slow_fading_samples.float" #define MPP_FADING_FILE_NAME "fast_fading_samples.float" #define MPD_FADING_FILE_NAME "faster_fading_samples.float" // Gaussian from uniform: float gaussian(void) { double x = (double)rand() / RAND_MAX; double y = (double)rand() / RAND_MAX; double z = sqrt(-2 * log(x)) * cos(2 * M_PI * y); return sqrt(1. / 2.) * z; } // complex noise sample COMP noise(void) { COMP n = {gaussian(), gaussian()}; return n; } int main(int argc, char *argv[]) { FILE *fin, *ffading, *fout; char *fading_dir; float NodB, foff_hz; int fading_en, nhfdelay; short buf[BUF_N]; float htbuf[HT_N + BUF_N]; COMP ch_in[BUF_N]; COMP ch_fdm[BUF_N]; COMP ssbfiltbuf[SSBFILT_N + BUF_N]; COMP ssbfiltout[BUF_N]; COMP phase_ch; float No, variance; COMP scaled_noise; float hf_gain; COMP *ch_fdm_delay = NULL, aspread, aspread_2ms, delayed, direct; float tx_pwr, tx_pwr_fade, noise_pwr, user_multipath_delay; int frames, i, j, k, Fs, ret, nclipped, noutclipped, ssbfilt_en, complex_out, ctest; float sam, peak, clip, papr, CNo, snr3k, gain; if (argc < 3) { helpmsg: fprintf( stderr, "Command line channel simulation tool.\n" "\n" "usage: %s InputRealModemRawFile OutputRealModemRawFile [Options]\n" "\n" " real int16 input -> Gain -> Hilbert Transform -> clipper -> freq " "shift ->\n" " Multipath -> AWGN noise -> SSB filter -> real int16 output\n" "\n" "[--clip int16] Hilbert clipper (clip complex signal " "magnitude, default 32767)\n" "[--complexout] Optional int16 IQ complex output (default real " "int16)\n" "[--ctest] Check PAPR is around 0dB, used to support " "ctests\n" "[--freq FoffHz] Frequency offset (default 0Hz)\n" "[--fading_dir Path] path to multipath fading files (default " "'unittest')\n" "[--Fs SampleRateHz] Sample rate of simulation (default 8000 Hz)\n" "[--gain G] Linear gain (default 1.0)\n" "[--mpg] Multipath good 0.1Hz Doppler, 0.5ms delay\n" "[--mpp] Multipath poor 1.0Hz Doppler, 2.0ms delay\n" "[--mpd] Multipath disturbed 2.0Hz Doppler, 4.0ms " "delay\n" "[--ssbfilt 0|1] SSB bandwidth filter (default 1 on)\n" "[--mulipath_delay ms] Optionally adjust multipath delay\n" "[--No dBHz] AWGN Noise density dB/Hz (default -100)" "\n", argv[0]); exit(1); } if (strcmp(argv[1], "-") == 0) fin = stdin; else if ((fin = fopen(argv[1], "rb")) == NULL) { fprintf(stderr, "ch: Error opening input modem raw file: %s: %s.\n", argv[1], strerror(errno)); exit(1); } if (strcmp(argv[2], "-") == 0) fout = stdout; else if ((fout = fopen(argv[2], "wb")) == NULL) { fprintf(stderr, "ch: Error opening output modem raw file: %s: %s.\n", argv[2], strerror(errno)); exit(1); } NodB = -100; Fs = 8000; foff_hz = 0.0; fading_en = 0; ctest = 0; clip = 32767; gain = 1.0; ssbfilt_en = 1; complex_out = 0; fading_dir = strdup(DEFAULT_FADING_DIR); user_multipath_delay = -1.0; int o = 0; int opt_idx = 0; while (o != -1) { static struct option long_opts[] = { {"complexout", no_argument, 0, 'o'}, {"ctest", no_argument, 0, 't'}, {"clip", required_argument, 0, 'c'}, {"fading_dir", required_argument, 0, 'u'}, {"freq", required_argument, 0, 'f'}, {"Fs", required_argument, 0, 'r'}, {"gain", required_argument, 0, 'g'}, {"ssbfilt", required_argument, 0, 's'}, {"help", no_argument, 0, 'h'}, {"mpg", no_argument, 0, 'i'}, {"mpp", no_argument, 0, 'p'}, {"mpd", no_argument, 0, 'd'}, {"multipath_delay", required_argument, 0, 'm'}, {"No", required_argument, 0, 'n'}, {0, 0, 0, 0}}; o = getopt_long(argc, argv, "c:df:g:im:n:opr:s:tu:h", long_opts, &opt_idx); switch (o) { case 'c': clip = atof(optarg); break; case 'd': fading_en = 3; break; case 'f': foff_hz = atof(optarg); break; case 'g': gain = atof(optarg); break; case 'i': fading_en = 1; break; case 'm': user_multipath_delay = atof(optarg); break; case 'n': NodB = atof(optarg); break; case 'o': complex_out = 1; break; case 'p': fading_en = 2; break; case 'r': Fs = atoi(optarg); break; case 's': ssbfilt_en = atoi(optarg); break; case 't': ctest = 1; break; case 'u': fading_dir = strdup(optarg); break; case 'h': case '?': goto helpmsg; break; } } phase_ch.real = 1.0; phase_ch.imag = 0.0; /* N = var = NoFs */ // arbitrary noise scaling, to maintain backwards compatibility with many // tests. TODO make the No units more sensible, and fix all the tests that // depend on this scaling No = pow(10.0, NodB / 10.0) * 1000 * 1000; variance = Fs * No; tx_pwr = tx_pwr_fade = noise_pwr = 0.0; noutclipped = 0; nclipped = 0; peak = 0.0; /* init HF fading model */ ffading = NULL; nhfdelay = 0; if (fading_en) { char fname[256]; if (fading_en == 1) { sprintf(fname, "%s/%s", fading_dir, MPG_FADING_FILE_NAME); ffading = fopen(fname, "rb"); if (ffading == NULL) { cant_load_fading_file: fprintf(stderr, "-----------------------------------------------------\n"); fprintf(stderr, "ch ERROR: Can't find fading file: %s\n", fname); fprintf( stderr, "\nAdjust path --fading_dir or use GNU Octave to generate:\n\n"); gen_fading_file: fprintf(stderr, "$ octave --no-gui\n"); fprintf(stderr, "octave:24> pkg load signal\n"); fprintf(stderr, "octave:24> time_secs=60\n"); fprintf(stderr, "octave:25> ch_fading(\"faster_fading_samples.float\", 8000, " "2.0, 8000*time_secs)\n"); fprintf(stderr, "octave:26> ch_fading(\"fast_fading_samples.float\", 8000, " "1.0, 8000*time_secs)\n"); fprintf(stderr, "octave:27> ch_fading(\"slow_fading_samples.float\", 8000, " "0.1, 8000*time_secs)\n"); fprintf(stderr, "-----------------------------------------------------\n"); exit(1); } nhfdelay = floor(MPG_DELAY_MS * Fs / 1000); } if (fading_en == 2) { sprintf(fname, "%s/%s", fading_dir, MPP_FADING_FILE_NAME); ffading = fopen(fname, "rb"); if (ffading == NULL) goto cant_load_fading_file; nhfdelay = floor(MPP_DELAY_MS * Fs / 1000); } if (fading_en == 3) { sprintf(fname, "%s/%s", fading_dir, MPD_FADING_FILE_NAME); ffading = fopen(fname, "rb"); if (ffading == NULL) goto cant_load_fading_file; nhfdelay = floor(MPD_DELAY_MS * Fs / 1000); } ch_fdm_delay = (COMP *)MALLOC((nhfdelay + COHPSK_NOM_SAMPLES_PER_FRAME) * sizeof(COMP)); assert(ch_fdm_delay != NULL); for (i = 0; i < nhfdelay + COHPSK_NOM_SAMPLES_PER_FRAME; i++) { ch_fdm_delay[i].real = 0.0; ch_fdm_delay[i].imag = 0.0; } /* optionally override delay from command line */ if (user_multipath_delay >= 0.0) nhfdelay = floor(user_multipath_delay * Fs / 1000); /* first values in file are HF gains */ for (i = 0; i < 4; i++) ret = fread(&hf_gain, sizeof(float), 1, ffading); // fprintf(stderr, "hf_gain: %f\n", hf_gain); } assert(HT_N == sizeof(ht_coeff) / sizeof(COMP)); for (i = 0; i < HT_N; i++) { htbuf[i] = 0.0; } for (i = 0; i < SSBFILT_N; i++) { ssbfiltbuf[i].real = 0.0; ssbfiltbuf[i].imag = 0.0; } COMP lo_phase = {1.0, 0.0}; COMP lo_freq; lo_freq.real = cos(2.0 * M_PI * SSBFILT_CENTRE / Fs); lo_freq.imag = sin(2.0 * M_PI * SSBFILT_CENTRE / Fs); fprintf(stderr, "ch: Fs: %d NodB: %4.2f foff: %4.2f Hz fading: %d nhfdelay: %d clip: " "%4.2f ssbfilt: %d complexout: %d\n", Fs, NodB, foff_hz, fading_en, nhfdelay, clip, ssbfilt_en, complex_out); /* --------------------------------------------------------*\ Main Loop \*---------------------------------------------------------*/ frames = 0; while (fread(buf, sizeof(short), BUF_N, fin) == BUF_N) { frames++; /* Hilbert Transform to produce complex signal so we can do single sided freq shifts, HF channel models, and analog compression. Allows us to use real signal I/O. As the real and imag filters both have unity gain, ch_in[] has twice the power of the real input signal buf[]. */ for (i = 0, j = HT_N; i < BUF_N; i++, j++) { htbuf[j] = (float)buf[i] * gain; /* FIR filter with HT to get imag, just delay to get real */ ch_in[i].real = 0.0; ch_in[i].imag = 0.0; for (k = 0; k < HT_N; k++) { ch_in[i].real += htbuf[j - k] * ht_coeff[k].real; ch_in[i].imag += htbuf[j - k] * ht_coeff[k].imag; } // printf("%d %f %f\n", i, ch_in[i].real, ch_in[i].imag); } assert(j <= (BUF_N + HT_N)); /* update HT memory */ for (i = 0; i < HT_N; i++) htbuf[i] = htbuf[i + BUF_N]; /* --------------------------------------------------------*\ Clipping mag of complex signal \*---------------------------------------------------------*/ for (i = 0; i < BUF_N; i++) { float mag = sqrt(ch_in[i].real * ch_in[i].real + ch_in[i].imag * ch_in[i].imag); float angle = atan2(ch_in[i].imag, ch_in[i].real); if (mag > clip) { mag = clip; nclipped++; } tx_pwr += mag * mag; /* we get a bit of overshoot in peak measurements if HT filter hasn't been * primed */ if (frames * BUF_N > HT_N) if (mag > peak) { peak = mag; // fprintf(stderr, "%d %f\n",frames, mag); } ch_in[i].real = mag * cos(angle); ch_in[i].imag = mag * sin(angle); } /* --------------------------------------------------------*\ Channel \*---------------------------------------------------------*/ fdmdv_freq_shift_coh(ch_fdm, ch_in, foff_hz, Fs, &phase_ch, BUF_N); /* optional HF fading -------------------------------------*/ if (fading_en) { /* update delayed signal buffer */ for (i = 0; i < nhfdelay; i++) ch_fdm_delay[i] = ch_fdm_delay[i + BUF_N]; for (j = 0; j < BUF_N; i++, j++) ch_fdm_delay[i] = ch_fdm[j]; /* combine direct and delayed paths, both multiplied by "spreading" (Doppler) functions */ for (i = 0; i < BUF_N; i++) { ret = fread(&aspread, sizeof(COMP), 1, ffading); if (ret == 0) { fprintf(stderr, "ch: Fading file finished - simulation stopping. You may " "need more samples:\n"); goto gen_fading_file; } ret = fread(&aspread_2ms, sizeof(COMP), 1, ffading); if (ret == 0) { fprintf(stderr, "ch: Fading file finished - simulation stopping. You may " "need more samples:\n"); goto gen_fading_file; } // printf("%f %f %f %f\n", aspread.real, aspread.imag, aspread_2ms.real, // aspread_2ms.imag); direct = cmult(aspread, ch_fdm[i]); delayed = cmult(aspread_2ms, ch_fdm_delay[i]); ch_fdm[i] = fcmult(hf_gain, cadd(direct, delayed)); } } /* Measure power after fading model to make sure average pwr is the same as AWGN channels. We only output the real signal, which is half the power. */ for (i = 0; i < BUF_N; i++) { tx_pwr_fade += pow(ch_fdm[i].real, 2.0); } /* AWGN noise ------------------------------------------*/ for (i = 0; i < BUF_N; i++) { COMP n = noise(); scaled_noise = fcmult(sqrt(variance), n); ch_fdm[i] = cadd(ch_fdm[i], scaled_noise); noise_pwr += pow(scaled_noise.real, 2.0) + pow(scaled_noise.imag, 2.0); } /* FIR filter to simulate (a rather flat) SSB filter. We filter the complex signal by shifting it down to DC and using real coefficients. */ for (i = 0, j = SSBFILT_N; i < BUF_N; i++, j++) { if (ssbfilt_en) { ssbfiltbuf[j] = cmult(ch_fdm[i], cconj(lo_phase)); ssbfiltout[i].real = 0.0; ssbfiltout[i].imag = 0.0; for (k = 0; k < SSBFILT_N; k++) { ssbfiltout[i].real += ssbfiltbuf[j - k].real * ssbfilt_coeff[k]; ssbfiltout[i].imag += ssbfiltbuf[j - k].imag * ssbfilt_coeff[k]; } ssbfiltout[i] = cmult(ssbfiltout[i], lo_phase); lo_phase = cmult(lo_phase, lo_freq); } else { ssbfiltout[i] = ch_fdm[i]; } } /* update SSB filter memory */ for (i = 0; i < SSBFILT_N; i++) ssbfiltbuf[i] = ssbfiltbuf[i + BUF_N]; int nout = (complex_out + 1) * BUF_N; short bufout[nout], *pout = bufout; for (i = 0; i < BUF_N; i++) { sam = ssbfiltout[i].real; if (sam > 32767.0) { noutclipped++; sam = 32767.0; } if (sam < -32767.0) { noutclipped++; sam = -32767.0; } *pout++ = sam; if (complex_out) { sam = ssbfiltout[i].imag; if (sam > 32767.0) { noutclipped++; sam = 32767.0; } if (sam < -32767.0) { noutclipped++; sam = -32767.0; } *pout++ = sam; } } fwrite(bufout, sizeof(short), nout, fout); /* if this is in a pipeline, we probably don't want the usual buffering to occur */ if (fout == stdout) fflush(stdout); } fclose(fin); fclose(fout); int nsamples = frames * BUF_N; papr = 10 * log10(peak * peak / (tx_pwr / nsamples)); CNo = 10 * log10(tx_pwr / (noise_pwr / (Fs))); snr3k = CNo - 10 * log10(3000); float outclipped_percent = noutclipped * 100.0 / nsamples; fprintf(stderr, "ch: SNR3k(dB): %8.2f C/No....: %8.2f\n", snr3k, CNo); fprintf(stderr, "ch: peak.....: %8.2f RMS.....: %8.2f CPAPR.....: %5.2f \n", peak, sqrt(tx_pwr / nsamples), papr); fprintf(stderr, "ch: Nsamples.: %8d clipped.: %8.2f%% OutClipped: %5.2f%%\n", nsamples, nclipped * 100.0 / nsamples, outclipped_percent); if (outclipped_percent > 0.1) fprintf(stderr, "ch: WARNING output clipping\n"); if (ffading != NULL) fclose(ffading); if (ch_fdm_delay != NULL) FREE(ch_fdm_delay); if (ctest) { /* special ctest mode: check CPAPR is around 0dB */ if (fabs(papr) < 0.7) return 0; else return 1; } else return 0; } codec2-1.2.0/src/codebook/000077500000000000000000000000001445607075400152415ustar00rootroot00000000000000codec2-1.2.0/src/codebook/codes_450.txt000066400000000000000000005512561445607075400175050ustar00rootroot0000000000000041 500 11.9178 14.1558 15.0079 16.3077 17.3822 18.2611 17.4655 14.7258 9.9322 5.5523 2.3108 -0.5449 -3.1948 -5.2578 -6.6720 -7.0718 -6.2242 -3.5271 -0.4724 -0.6426 -5.5883 -11.0690 -13.9474 -14.1999 -11.6213 -9.2487 -10.7685 -15.1688 -17.7995 4.7470 5.3362 4.5288 2.0410 -0.2507 -1.4078 -1.9789 -2.0773 -2.8836 -2.6876 -5.3670 -21.5899 20.9429 19.2708 15.6619 12.7137 9.1871 6.4196 3.1467 1.6784 0.8989 1.2827 1.4966 0.1254 -2.5426 -4.5150 -6.1876 -6.3874 -6.0478 -5.9793 -6.4367 -5.2532 -2.2523 -0.5109 1.6273 0.3551 -4.4390 -9.5465 -11.7875 -11.3329 -11.5883 4.4211 3.0334 0.1707 -1.8877 -1.6176 -0.7003 0.0063 0.8933 -0.3305 -0.5297 -3.4590 -17.2335 10.3698 10.9179 12.2827 14.2252 13.1924 8.1149 3.4397 0.4163 -0.6468 -1.2093 -1.7787 -2.1501 -2.3738 -2.1698 -1.6602 -2.0012 -2.2206 -2.6679 -2.9048 -4.0924 -3.9533 -4.6653 -3.4648 -4.1545 -4.7802 -5.9292 -6.6217 -6.2599 -7.2545 -1.4487 -2.0915 -2.0764 -2.5240 -2.8369 -1.7282 0.3818 1.6462 2.6312 4.3951 3.6513 -6.6040 10.7001 9.9813 8.3287 7.1242 6.5070 6.5092 5.9516 5.2985 4.9376 4.9107 3.3698 2.1480 1.7415 1.8271 2.9065 1.7503 1.1809 -0.5973 -2.5964 -4.1194 -4.3826 -4.2663 -6.1171 -8.2455 -10.0389 -10.0722 -11.1753 -11.2765 -12.2855 0.8221 0.8933 0.0873 0.1278 -0.2444 -0.1326 0.4115 -0.0880 0.3496 0.6766 -2.9033 -13.4861 14.8732 12.7779 9.6261 7.1258 5.1364 5.1173 4.4647 4.3160 3.7550 3.9126 3.6316 2.8536 1.9930 -1.1494 -2.4465 -3.4951 -3.8807 -4.2782 -4.5140 -4.6567 -4.7573 -4.9527 -5.3524 -6.1002 -6.5648 -6.2400 -6.7782 -6.9091 -7.5078 -0.7325 -1.0470 -1.1322 -1.2300 -1.1725 -0.7847 -0.0740 0.3234 1.3703 2.8077 1.6715 -7.7106 13.0634 13.0580 11.8762 10.3012 8.7287 8.2751 6.9140 5.6997 4.4786 3.7849 4.1201 2.8106 0.7120 -1.4190 -2.0942 -2.3582 -0.5397 1.5160 0.4684 -2.9378 -7.1601 -10.1338 -10.8807 -10.0235 -7.7214 -7.4752 -9.9005 -11.5702 -11.5927 4.2630 3.6157 2.2639 2.6715 3.2976 2.2826 0.9481 -1.7723 -4.4187 -3.5441 -9.6074 -17.0075 17.4365 16.7500 15.4119 14.0262 11.9105 8.7640 5.0192 1.9276 0.0772 -0.8006 -1.8916 -2.6101 -3.2178 -2.5671 -1.7974 -0.9511 -1.6296 -2.8438 -5.2983 -6.9390 -8.1364 -7.5562 -6.4223 -7.1565 -8.5620 -8.8653 -6.3020 -4.6173 -3.1589 0.3453 2.4060 5.1191 5.4688 4.3371 3.0997 0.6091 -2.3128 -3.0561 -3.3297 -12.6865 -6.0911 13.0911 12.7368 12.4903 13.0944 13.0545 12.0753 8.9618 6.1436 4.1205 3.0040 2.5067 2.1012 1.7892 1.0194 -0.5009 -2.7054 -4.3792 -5.7855 -7.3332 -7.6356 -6.8161 -6.3032 -6.7524 -8.6805 -9.1565 -8.9761 -9.6991 -10.2280 -11.2374 -0.8915 -1.3351 -1.3279 -0.8507 -1.1734 -0.5889 -0.2953 0.9333 1.7331 2.7464 1.0499 -11.7092 20.5201 20.0295 17.9227 15.1345 11.8697 8.3087 5.1766 3.0060 1.2540 0.4174 -0.1720 -0.8532 -1.8929 -2.4981 -2.7278 -3.1121 -3.4982 -3.7976 -4.7868 -5.4073 -5.4391 -5.9033 -7.2898 -8.3095 -8.7395 -9.6577 -9.6812 -9.1534 -10.7197 -2.0265 -2.4422 -3.2898 -3.0803 -2.9851 -1.2856 0.1567 1.8910 3.3083 5.0377 4.7157 -9.9218 8.7254 11.0045 12.0666 13.2121 13.3296 12.8324 10.8510 7.8774 5.4319 2.5287 -0.0029 -1.8774 -3.6195 -5.0420 -5.6921 -5.2354 -4.4870 -3.3016 -2.0527 -2.1409 -3.9671 -5.5705 -6.5599 -6.6471 -6.1324 -6.7689 -8.5096 -9.9894 -10.2634 3.4359 2.7738 2.8295 2.9482 1.6625 0.8956 -0.0514 -1.5848 -1.4749 -2.2921 -9.1424 -14.2391 23.9657 22.7269 19.7344 15.7159 12.2183 10.6582 8.5153 6.8034 5.1757 2.7658 0.5046 -1.3116 -2.0410 -1.6635 0.4261 3.7125 3.3282 0.1068 -4.3151 -7.4691 -8.1547 -7.8283 -7.2057 -10.8214 -15.3903 -17.5933 -17.6434 -16.8095 -18.1107 1.5132 0.3244 0.0189 -0.7294 -1.1966 -0.6245 -0.5177 0.2092 1.0300 0.8494 -0.8770 -19.8535 16.6280 15.7442 12.7310 10.1009 8.2897 8.5577 8.8444 10.0560 10.3050 9.1696 6.7854 3.8917 0.3608 -3.0307 -5.8666 -7.1637 -6.5677 -5.6155 -5.1575 -4.9714 -6.5135 -7.7608 -7.9326 -8.4341 -8.5905 -8.7170 -10.2926 -12.2908 -12.5593 4.2267 2.1595 0.5102 -1.3820 -1.1131 -0.0305 -0.5306 -0.0216 -0.2857 -0.0746 -3.4583 -17.0769 13.6209 12.7507 12.8553 14.2468 15.9471 14.0699 8.8461 3.2261 -1.1845 -3.9187 -5.7488 -7.4173 -8.8555 -9.2473 -8.9917 -6.5605 -1.7283 2.9838 3.3778 -0.7316 -2.7883 -0.8816 0.0532 -4.9902 -8.7894 -10.3247 -7.5806 -5.9415 -6.2971 14.6560 9.5930 3.1821 -1.9796 -0.7713 -2.0700 -4.1354 -3.8071 -3.6360 -4.5115 -6.5203 -23.1275 23.4988 25.5182 26.1443 25.6216 23.4290 19.3707 13.9050 7.5166 1.8256 -2.4154 -5.4517 -7.7013 -9.8647 -11.2215 -12.6184 -14.4069 -15.4023 -15.6232 -14.8399 -14.5670 -14.5190 -13.7907 -10.6309 -3.4890 1.4794 1.6350 -2.2134 -1.6600 0.4710 10.9708 10.5205 11.2036 9.2796 5.4146 -1.1911 -4.4466 -8.0856 -10.7515 -10.9044 -12.0101 -11.4961 -0.5898 -1.0967 -1.1205 -1.0443 -1.2431 -3.0645 -6.3248 -9.1338 -11.1628 -12.4243 -13.5982 -14.0819 -13.6551 -13.9519 -12.0462 -9.7393 -6.5133 -1.4737 1.3159 2.7420 3.1032 9.2423 13.5689 17.8419 17.0272 18.0312 18.1676 16.3400 14.8841 4.5894 3.4070 3.1758 1.7888 1.6163 0.3158 0.2364 -0.4657 -1.0093 -2.6399 -11.0146 8.1604 13.0299 12.0907 11.0575 11.8980 14.1078 15.4469 13.8192 9.6452 5.0678 1.5872 -1.0858 -3.3552 -4.4488 -5.1355 -3.8141 0.5493 5.0898 4.4313 -0.4140 -3.7603 -4.7684 -3.6690 -4.3620 -10.8698 -15.5016 -18.4680 -18.1605 -12.2966 -7.7111 13.7174 7.2067 0.5178 -3.0887 -2.4521 -1.3997 -1.4244 -0.6539 -2.0510 -3.7269 -6.6452 -24.0840 20.2958 22.7253 24.1108 25.8434 27.1854 26.7629 24.3010 22.1308 21.1525 19.6181 13.7675 5.3826 -2.8225 -8.7282 -12.7146 -14.6989 -16.2675 -17.4195 -18.1391 -18.1287 -17.6301 -15.6767 -15.3188 -16.1464 -16.5053 -15.5852 -16.0162 -15.5577 -15.9205 1.1396 0.2956 0.2622 -0.1460 -0.2889 0.0275 0.0598 -0.0862 -0.0115 -0.3351 -0.9169 -18.8932 21.5882 22.6633 22.5911 21.7567 19.8871 16.4681 11.6127 6.5703 2.5780 -0.4539 -2.9597 -5.4269 -8.0935 -10.3291 -11.8474 -12.0219 -10.4753 -7.1877 -2.9765 -0.5555 -2.4316 -6.5984 -7.4329 -5.2211 -3.7364 -8.4581 -13.1170 -14.2101 -12.1825 9.2042 6.8442 4.1847 1.6315 -1.3411 -3.2760 -3.4037 -3.4563 -3.6074 -2.1629 -4.6172 -19.8953 10.6094 9.9560 8.4942 8.0886 9.3761 11.3323 13.7662 16.0947 16.8139 12.1179 6.8094 2.7670 1.8054 3.1768 7.3289 5.1766 -2.2376 -6.9741 -8.5553 -10.5642 -11.2643 -7.7672 -9.8975 -14.2107 -19.6460 -19.4783 -14.0319 -7.9045 -11.1818 -5.2324 -8.4640 2.9045 12.8860 11.9777 10.5541 7.9613 -4.2589 -8.3955 -8.1996 -11.7332 -19.6994 5.5041 5.3222 5.1942 5.5460 6.9576 8.9054 10.4828 11.0340 9.8032 6.8135 3.3656 -0.1277 -3.5960 -5.7793 -6.2939 -4.2863 -0.0268 4.5720 4.4361 0.4802 -3.4351 -5.2809 -4.4513 -2.2637 -4.7650 -9.6486 -13.3377 -14.7275 -10.3971 17.8073 13.8296 10.4356 9.0219 2.4512 -5.9813 -10.1712 -10.7160 -9.7016 -7.6983 -9.2773 -25.0775 16.3656 18.4878 18.9993 18.9918 18.4816 16.9653 13.5777 9.3381 5.1691 1.7384 -1.9039 -5.4804 -8.8300 -11.9448 -15.0434 -16.8969 -17.1670 -15.0995 -10.9516 -5.3056 1.0232 3.6264 1.1957 1.1028 1.6644 -3.8335 -10.3741 -12.2780 -11.6184 10.0963 5.3648 2.5424 2.4710 -0.7901 -3.2113 -3.7043 -3.1000 -2.4933 -1.9709 -5.2046 -20.9631 17.8837 18.4715 18.4874 18.4556 18.3711 17.4990 15.0865 11.4049 7.8551 5.6550 5.2257 5.9267 6.7868 6.4202 3.6161 -0.8300 -5.6377 -9.6817 -12.6005 -14.4203 -15.5246 -15.5077 -13.4622 -11.2201 -12.0997 -15.7120 -18.3392 -17.8512 -14.2586 8.3898 6.8733 5.8658 4.5307 0.2802 -3.1226 -4.8018 -4.8634 -4.4593 -3.4916 -5.2013 -22.2100 -3.1319 -2.9567 -3.5158 -3.6542 -3.9792 -4.5690 -4.2861 -2.5541 -2.2464 -1.9153 -2.4682 -3.1479 -3.0568 -4.8839 -4.5795 -5.3900 -5.0456 -3.5545 -1.3265 0.8505 3.0174 4.7498 6.6168 8.1567 6.6236 7.6792 9.3003 9.8713 9.3959 -10.5735 -12.5116 -14.0639 -7.5471 -1.3040 2.4789 5.3713 7.7962 9.4623 10.2101 10.6812 18.1437 21.9881 22.0268 21.4180 21.0501 19.7092 16.8902 12.8939 9.2408 6.1523 3.8245 2.5628 1.6418 0.8280 0.3977 0.2944 0.9841 0.5033 -2.6922 -7.8516 -11.9595 -14.1961 -14.2907 -11.4202 -8.4658 -10.2796 -16.2385 -20.8415 -22.5979 -21.5723 2.4756 1.9590 0.8663 0.5639 -0.3186 -0.6196 -0.7514 -0.8893 -0.9260 -0.4110 -1.9489 -22.2015 13.6868 14.9404 15.1000 15.5585 16.0353 14.4054 10.2425 6.2160 2.6004 0.0140 -1.0930 -1.9058 -2.2147 -3.1008 -3.0478 -1.9164 -0.2033 1.1951 -1.7083 -5.1393 -7.0402 -8.4745 -8.2053 -8.7459 -9.3367 -10.3650 -11.2280 -12.6090 -13.6605 -1.5164 -1.7406 -1.1213 -1.2392 -0.3054 0.1166 1.2891 0.8060 2.8591 2.2703 -1.4183 -13.8822 24.2507 21.6076 17.0141 11.8925 7.3451 3.9013 1.1114 -0.6837 -1.7199 -1.9483 -2.6719 -3.0002 -3.6624 -4.0397 -4.0608 -4.1225 -3.9810 -4.1129 -4.5653 -4.8917 -4.8071 -4.8794 -4.6353 -4.2726 -4.7350 -4.9508 -5.2264 -5.1675 -4.9885 -5.7398 -5.9757 -5.9417 -4.9603 -3.1354 -0.5548 2.3754 4.4296 5.8362 7.1375 6.5291 -0.9148 17.2631 17.8371 17.1292 16.2736 14.9354 14.1976 13.0153 12.0657 10.4316 7.4938 4.2444 1.4828 -0.6872 -3.7746 -5.5994 -5.3343 -3.0025 -0.6389 -0.0550 -2.7128 -6.5932 -9.9814 -10.8426 -10.0857 -9.6056 -13.2586 -18.8699 -22.5792 -22.7486 -0.7483 -1.0121 -2.2299 -2.0299 -0.7415 -0.0212 1.8597 2.9030 2.7112 2.3661 -3.0572 -22.3309 -11.1995 -10.6930 -9.1942 -8.1742 -7.6079 -6.5119 -6.9193 -7.1422 -7.9717 -7.7574 -7.1013 -6.4983 -6.0445 -5.1389 -3.0175 -0.5052 2.9571 5.6253 7.3169 6.5738 7.6017 10.0073 10.6429 11.4760 11.4863 10.6648 9.4863 8.0975 9.5413 3.3127 3.2227 3.8144 3.7156 4.3089 2.3578 0.7872 -1.2526 -2.7715 -4.3321 -13.1631 5.2507 17.1783 16.8887 14.7421 11.8348 8.0205 3.2499 -1.9129 -6.6225 -10.9397 -13.6517 -14.7230 -16.1104 -18.1604 -17.7193 -17.2055 -15.5458 -13.1652 -9.9983 -5.1836 -1.0331 1.9889 4.4501 8.5649 11.1613 14.3782 14.8611 11.2164 10.3416 13.0949 7.1449 3.2853 6.0619 4.3926 2.9056 -0.2214 -2.0011 -1.6095 -2.2370 -3.8553 -13.8661 1.4609 10.6486 10.4669 9.1585 9.0007 10.2209 13.1112 15.2667 14.3795 11.1262 6.6047 3.1822 -0.1678 -2.0727 -1.3024 2.4200 5.9038 2.7803 -3.1820 -6.2303 -8.6850 -9.4777 -6.1465 -4.6662 -9.5877 -14.2877 -18.3825 -17.6042 -13.8240 -8.6536 4.3381 -2.0474 -4.0413 0.7437 4.3435 8.0270 4.8604 0.4728 -3.1556 -4.1581 -9.3831 -21.0994 4.5339 3.0180 1.1590 -1.8077 -3.7376 -3.2592 -4.8664 -9.0451 -10.5616 -11.0424 -11.0656 -11.1375 -9.1571 -8.9187 -5.4870 -3.7659 -1.1875 -3.3535 6.8620 12.8048 15.2130 16.4198 9.1571 6.4605 6.3040 10.6463 -0.7014 -3.2795 9.7951 11.6354 5.7420 6.8106 9.3406 9.2914 6.7851 13.3750 12.3210 -24.4316 -25.4838 -25.3856 -1.3255 6.4369 5.6614 4.5505 3.2770 2.0132 1.6324 -0.2278 -1.7054 -2.5408 -2.9440 -2.5595 -3.6388 -4.3998 -3.8497 -2.4600 -0.6672 0.4797 -0.4954 -0.1361 -0.3178 -0.0794 0.9249 1.3910 0.5690 0.3416 1.0916 0.5145 1.1248 -3.9866 15.2047 12.4340 6.7379 -7.0628 -9.2462 -7.3526 -5.2530 -3.4204 -1.8366 -0.0754 -0.1298 -20.8819 13.5404 15.5222 16.2893 16.8870 17.0524 17.1327 14.7572 10.8720 6.7840 2.5400 -0.5888 -3.3697 -5.4657 -6.7879 -7.7962 -7.6553 -7.4342 -6.9197 -6.9455 -6.3541 -6.7461 -7.4159 -7.7579 -8.3178 -7.4289 -7.3424 -8.2132 -8.9949 -9.8430 0.3453 -0.2701 -0.5525 0.0397 0.0597 0.2448 0.8902 1.5587 1.2101 0.8399 -4.3658 -12.2454 24.5559 23.4130 20.6408 17.3808 14.4160 11.8493 9.6532 8.6801 7.2117 5.4621 3.0668 0.2230 -2.1120 -4.3454 -5.0915 -4.2332 -0.9253 -0.0786 -2.2834 -6.2673 -9.6185 -12.2260 -14.2603 -13.3716 -11.5386 -12.2997 -15.1963 -16.5699 -16.1351 4.5303 3.2491 1.5538 0.2521 -0.8115 -1.5855 -1.5263 -1.3266 -0.9651 -0.7138 -2.6565 -20.2257 8.1022 9.7899 9.7931 9.7477 9.2987 8.7666 6.9904 5.3290 3.0336 1.6204 0.3860 -1.2415 -2.4680 -4.1707 -5.1485 -6.7003 -7.6570 -8.3503 -8.5552 -8.8991 -9.0059 -8.7857 -7.0780 -4.5450 -2.6069 0.6288 2.8467 3.7676 5.1114 3.4695 4.5378 3.2083 2.5145 1.3409 -1.3752 -0.8674 -0.4720 -1.0186 -1.5059 -9.8318 0.0727 14.4586 14.2733 13.1879 11.9606 10.2045 9.3636 9.6651 11.0114 12.1122 12.3036 11.0280 8.7772 5.9733 2.4672 0.3102 0.0747 1.2366 0.9815 -2.8016 -7.9803 -12.3829 -14.7650 -15.7924 -13.6058 -11.0614 -13.0621 -17.8806 -20.1354 -19.9220 5.0740 2.9263 -0.3365 -1.5294 -1.0384 -0.4370 -0.2758 -0.3204 -0.0653 -0.0869 -3.9105 -24.5880 16.8931 17.8847 18.3283 18.5232 18.1990 16.7506 13.5330 8.8264 3.6715 -0.1991 -2.2432 -3.3290 -3.3054 -2.6748 -0.6690 2.7103 4.8565 3.5571 -0.4645 -5.0037 -8.7773 -10.0343 -10.0215 -10.2618 -11.9582 -16.0391 -19.8259 -20.4865 -18.4405 4.2237 7.7521 9.4271 7.7776 3.2089 -1.3047 -4.3710 -6.1258 -6.6240 -6.4665 -7.4973 -21.6119 26.2407 26.8595 25.5084 23.5987 20.6139 16.2421 10.9416 5.9994 2.3434 -0.3767 -2.7912 -5.3898 -7.9202 -9.5689 -11.3407 -12.1566 -12.5654 -12.0723 -10.0537 -6.9972 -3.0971 -1.8157 -4.5501 -5.7844 -5.5235 -7.2936 -10.9909 -13.4932 -14.5663 2.1561 1.5321 0.2818 -0.1633 -0.3426 -0.3136 0.0161 -0.3898 0.0287 -0.0952 -2.7103 -16.2994 18.3705 19.3592 20.1123 19.1051 15.6286 9.5321 3.0603 -1.6458 -4.5598 -6.3273 -7.5713 -8.4739 -9.3282 -10.3168 -10.7509 -9.1030 -6.7703 -2.5740 3.3208 6.7538 4.2453 2.9740 1.1080 -3.3077 -7.0808 -9.7837 -9.6571 -8.2866 -8.0329 10.1201 5.6162 1.7587 -0.9681 -1.7807 -2.3958 -2.4286 -1.6485 -1.8262 -1.9033 -4.5440 -20.3964 13.2741 15.4244 17.0234 18.2818 19.5432 18.9691 14.9962 9.1156 3.6419 -0.2906 -3.1570 -6.1768 -7.9818 -9.3506 -9.4656 -9.2507 -8.4602 -6.2085 -1.8201 1.5162 1.2490 -0.0059 -1.8007 -4.5282 -8.6837 -12.6709 -15.3611 -15.4209 -12.4015 7.8150 3.1728 1.5432 0.7950 -0.5318 -1.2456 -1.5988 -1.7996 -2.1907 -2.0052 -3.9542 -22.2556 15.9184 17.3622 17.4678 16.8842 14.6841 11.8317 7.6477 2.3173 -1.3712 -4.0441 -5.5323 -6.8296 -7.7101 -8.4121 -8.4766 -8.2702 -8.0827 -7.3742 -7.9359 -7.9155 -8.0671 -7.6939 -7.0166 -5.7862 -3.8811 -1.0122 2.4703 3.9838 4.8441 2.9188 2.7328 3.6011 4.0330 4.2894 1.6661 -1.5176 -1.7944 -2.1907 -2.2625 -11.4761 -0.6248 27.6543 28.3344 28.0974 27.8652 25.8810 21.2395 14.9679 8.7442 3.5965 -1.0986 -5.8391 -9.7803 -12.4065 -13.0919 -11.4339 -7.2826 -2.4552 -0.6713 -3.1822 -8.1469 -9.6767 -9.4577 -8.9612 -11.2661 -13.6229 -15.3616 -15.2642 -14.0444 -13.3373 2.3229 0.9500 0.5581 0.0389 -0.1161 0.3407 -0.3396 -0.7413 -0.8075 -0.6566 -1.5496 -16.0531 14.7743 15.8710 16.5584 17.4275 18.6438 19.6359 19.7934 19.0788 17.9177 16.9057 15.9073 14.4531 10.2026 3.0567 -4.1665 -9.7579 -13.4361 -15.9678 -18.1928 -19.8105 -20.3101 -20.0861 -19.2226 -16.1803 -12.5817 -12.1735 -14.1311 -13.5138 -10.6954 7.7639 2.5429 2.6941 2.9367 0.5893 -1.9290 -2.8709 -3.1704 -3.0337 -2.2216 -3.3012 -22.8190 12.7199 12.8622 12.1185 10.3818 7.6754 5.4729 4.0902 2.5106 1.3459 -0.1508 -1.0590 -0.9743 -1.2979 -1.7207 -2.0981 -3.4023 -3.6088 -3.7334 -2.9611 -2.7071 -3.2507 -3.7314 -4.9032 -4.9793 -5.4541 -5.3634 -5.5199 -5.9327 -6.3294 0.5719 0.7629 0.4111 0.3851 0.5406 0.3610 -0.6901 -0.4405 0.2987 0.0781 -2.2788 -7.7046 17.0925 17.2680 16.3588 15.6578 15.5233 15.8680 16.0037 14.7721 12.2920 8.7258 4.3618 0.2688 -3.5171 -6.9208 -9.2849 -8.9305 -6.2881 -2.6008 0.0832 -0.7819 -3.3713 -5.1713 -4.9040 -6.2218 -11.3970 -17.6896 -21.9017 -23.4215 -21.8734 3.1762 2.3323 1.1259 -0.1136 -0.6656 -1.1934 -1.1198 -0.3320 -0.0039 -0.1887 -3.0174 -24.2388 17.2297 15.6739 13.0707 10.1587 7.8155 7.3743 6.0217 4.4665 3.0535 2.6239 2.2641 1.9670 1.5434 0.6206 -1.2673 -3.0579 -4.7912 -5.9248 -5.9180 -6.1220 -5.8687 -6.3517 -6.5968 -7.5677 -7.4916 -7.9499 -8.0977 -8.4791 -8.3990 1.8899 2.2808 2.6284 2.1186 1.2552 0.2046 -0.3591 -0.6669 -1.5091 -1.4378 -6.4047 -11.8263 4.5933 4.7596 4.4438 5.2453 6.6446 8.2821 6.9832 4.3810 1.1278 -1.5253 -1.8904 -2.1516 -3.4268 -5.4133 -6.8772 -7.1547 -5.3998 -2.6582 1.2751 2.0882 -0.7302 -4.1881 -5.1819 -2.1264 0.8208 0.5532 -1.8235 -1.5249 0.8743 5.3771 4.5451 4.0828 5.1397 3.7744 0.3580 -1.2512 -0.7183 -2.7542 -4.1142 -14.4391 -6.0204 -2.2799 -1.7680 -3.2413 -3.9270 -2.7062 -1.0703 -1.3350 -1.9824 -2.4957 -1.3919 -2.1103 -4.0545 -4.3911 -5.7784 -7.9812 -7.7496 -7.5943 -5.8788 -3.7846 -2.6760 2.8977 4.8420 8.2162 4.4328 10.2839 10.4092 11.3489 11.1069 10.6590 -9.8885 -12.0674 -13.7764 -6.7026 -2.8416 2.6527 5.3400 7.6116 8.5217 10.1675 10.9830 18.5816 8.6790 8.1241 7.9956 9.0010 10.6051 11.9336 12.0700 10.4828 7.6040 4.4092 1.4213 -0.5435 -1.8070 -2.2849 -1.1776 2.4297 6.7853 8.4364 6.3991 4.5951 1.7264 -5.9987 -12.0781 -16.5380 -18.7068 -19.2937 -18.0295 -14.9180 -11.3219 9.6625 7.9093 9.1967 5.7578 -1.0641 -5.1134 -6.0886 -5.4946 -5.3822 -2.7102 -6.6734 -25.9833 10.3657 10.3631 9.7058 9.4298 9.0617 7.9822 5.9655 2.6688 -0.5238 -2.6855 -3.0614 -3.3624 -4.7739 -5.3797 -4.5954 -3.2382 -1.5077 -1.7236 -2.7671 -2.9653 -4.5764 -6.3959 -5.0542 -3.3922 -3.4383 -5.4556 -2.3727 -2.0655 3.7923 -5.2260 -22.0236 -1.5093 6.4261 7.5104 7.6639 4.2871 1.2994 0.5479 5.7985 -4.7744 7.7899 10.4446 10.4588 9.0587 7.0901 3.1501 -0.3318 -2.7060 -4.6185 -5.7165 -6.2274 -5.5457 -6.1342 -6.9016 -7.4068 -6.2107 -3.8982 -1.1383 -1.7125 -3.1209 -2.5081 -2.3909 0.2919 4.6445 2.6432 2.6694 4.3011 3.5911 6.8931 1.3315 21.7970 18.1696 11.3834 -3.1623 -8.4098 -8.5693 -7.6899 -7.0385 -5.9998 -5.4794 -5.0009 -22.6316 17.2287 17.7616 17.8929 19.2677 20.8170 21.4764 18.7667 14.2036 10.5122 8.1941 7.8420 9.4381 10.7037 7.2143 -0.2794 -6.1524 -10.8365 -13.8587 -16.1691 -17.3352 -17.2280 -14.8106 -11.1914 -12.3040 -16.0739 -18.1082 -16.4868 -14.5719 -15.9127 2.3379 0.5208 0.3528 -0.1779 -0.6500 -0.5172 -0.1244 -0.1086 0.2128 -0.1577 -1.6885 -22.6503 18.5355 20.4972 20.1850 18.5749 15.6167 12.2745 7.9486 3.0171 -0.8357 -2.7695 -4.9000 -6.7903 -8.0533 -9.4775 -9.7203 -10.0951 -9.4960 -9.2581 -9.1995 -6.3741 -2.3905 0.4560 1.0899 -0.4465 -1.4521 -2.6965 -6.3247 -8.5287 -9.3872 0.7079 0.5683 -0.4043 -0.7092 -0.1113 1.5441 2.4584 1.8607 0.7709 -0.1603 -6.5252 -13.3875 15.7485 14.5502 12.3547 10.1884 8.6909 8.0435 6.3074 4.6065 2.2122 -0.1930 -1.2413 -2.4859 -3.7253 -4.0244 -2.8733 -1.9500 -1.0559 -2.6557 -3.6275 -3.0937 -3.1904 -3.2420 -3.8325 -6.0485 -6.6724 -6.1617 -7.5456 -8.3219 -10.7613 9.0819 5.6131 0.9836 -3.3767 -5.1130 -4.5161 -2.5844 -1.0875 -0.3335 0.8807 0.4519 -18.4860 13.0658 12.0977 9.3051 6.8101 5.9796 6.1211 5.3037 4.3634 4.1469 2.3546 0.6265 -1.0456 -1.8168 -2.1623 -1.4037 -2.0812 -2.8168 -3.4540 -4.9104 -5.6641 -6.1702 -5.2274 -3.5942 -3.4678 -3.4265 -4.9099 -5.1651 -6.2588 -6.5997 3.1896 2.3931 3.5929 2.5385 1.8123 0.7336 -0.3261 -0.9462 -1.5350 -2.5520 -8.9007 -9.6432 6.9128 6.7304 6.9243 6.4631 5.6472 3.9796 1.7898 -0.2489 -2.4436 -2.6508 -2.5470 -2.8932 -3.7418 -4.0472 -3.7409 -4.1721 -4.5045 -2.5398 -1.2681 -2.2512 -4.0819 -2.5504 -0.5617 -0.8125 -6.3247 -16.4522 5.3598 10.4107 13.6148 2.9041 3.9937 4.1878 3.1505 2.3718 2.0861 -0.7564 -2.8980 -3.0100 -1.1906 -10.8392 7.8990 15.3717 14.4646 14.0665 15.2685 17.8890 16.6173 10.8299 5.4591 1.3248 -1.5112 -3.5105 -5.0396 -4.7139 -3.2327 0.4893 6.6080 9.2663 7.1616 4.6529 0.9359 -6.9866 -12.7386 -15.0655 -16.3268 -15.5303 -12.5805 -11.4429 -13.9588 -17.7676 4.4548 2.5041 -0.5574 -1.9092 -1.6954 -0.7980 -0.8178 0.6929 0.2455 0.1742 -2.2936 -23.5972 15.1415 17.2129 18.5276 20.2576 22.0435 22.9410 21.3301 18.4906 16.7921 16.6351 16.5489 13.5214 7.0026 -0.4264 -6.3907 -10.2154 -12.0432 -13.8717 -14.8140 -14.5501 -12.6863 -11.2906 -14.4502 -19.3250 -21.0242 -20.2029 -17.6079 -17.4052 -20.1409 -0.1152 0.2933 0.6422 0.8539 0.5304 -0.1244 -0.6918 -0.3401 -0.1677 0.0292 -0.9099 -22.1229 16.3527 16.4358 14.5529 11.7515 8.0259 5.7593 4.7947 5.2455 6.9418 9.3793 10.6924 9.9655 9.0457 8.3252 8.4762 6.3689 3.4623 -0.5745 -4.6846 -8.5680 -10.9887 -12.4636 -14.7640 -14.5242 -15.3129 -17.5422 -18.4522 -18.6412 -19.0596 4.6132 1.4513 -0.0514 -0.1917 -0.3334 -0.1370 -0.0439 -0.2954 -0.2393 -0.9118 -3.8606 -24.6234 3.0149 3.3679 2.0858 1.6705 1.6501 2.5867 1.6237 0.5766 -1.3320 -2.3047 -2.9270 -3.0607 -3.6274 -5.2376 -5.7845 -5.3526 -3.5342 -1.1532 1.8140 2.9895 2.7465 1.9285 1.7068 1.7703 2.2200 1.9728 0.2297 -1.0946 1.4544 -2.0981 -1.6916 0.2350 2.2065 3.1538 2.2516 2.8930 1.2452 0.2641 0.7151 -9.1746 0.1743 33.1383 31.0792 25.7434 19.1612 13.8370 10.1403 5.0657 -0.9848 -4.0125 -3.8049 -1.4317 2.9301 4.0459 0.1222 -5.3168 -8.1684 -10.0826 -10.8448 -10.2597 -10.3317 -9.4719 -5.7311 -3.3677 -4.7251 -6.3960 -9.1268 -12.2844 -14.4200 -14.5022 2.6060 2.2289 1.6967 0.1399 -0.9831 -0.9608 -0.8510 -1.0292 -0.7889 -0.5855 -1.4730 -15.7149 27.2923 26.1076 23.8786 21.3130 19.0418 17.1720 15.5267 14.4631 14.0462 13.5070 12.4676 9.9142 5.6853 0.5980 -4.4056 -8.3465 -10.4675 -12.5667 -14.3166 -15.5842 -15.4689 -15.0589 -15.5652 -16.4950 -16.8464 -17.9497 -19.4354 -19.6539 -18.8530 1.2956 0.1647 -0.0666 -0.5622 -1.0818 -1.0177 -0.6516 0.0389 0.9296 1.4023 -0.4513 -20.2788 26.6766 26.7374 25.7566 24.0280 20.4779 14.6637 7.8330 1.9621 -2.0700 -4.7989 -7.3077 -9.0786 -9.6220 -7.7331 -4.7410 0.1848 4.4070 2.7266 -2.1973 -5.5028 -7.5677 -8.3692 -9.3827 -11.2185 -12.6814 -12.9582 -12.5667 -13.3838 -14.2742 2.1312 0.7483 0.4117 -0.1309 -0.2886 -0.2604 -0.4816 0.0583 -0.0383 -0.2744 -1.8754 -17.9569 3.3978 4.4684 4.2593 3.9748 2.4838 0.6609 -2.0182 -4.4753 -6.9532 -7.4489 -7.9821 -8.8126 -7.7701 -6.4035 -3.2114 -0.1726 4.0273 6.9857 8.4846 6.3510 4.9727 4.6470 4.6414 3.6916 1.9176 0.3255 -2.6101 -3.4750 -3.9565 1.7533 1.1049 0.6470 -0.2625 -0.1699 -0.7934 -1.0459 -1.6085 0.7985 2.6353 -3.0588 -6.3429 10.0599 9.5448 6.9010 4.3178 2.5886 1.5303 0.1509 -1.0275 -2.6254 -2.8291 -3.0667 -3.4775 -4.4368 -5.1122 -6.2497 -6.7213 -5.2797 -3.8800 -2.4109 -1.6128 -3.0693 -4.8056 -5.1575 -1.7918 2.5625 3.7623 3.5521 7.7141 10.8696 8.0651 6.4772 6.6051 3.5600 1.8517 -0.5246 -1.7934 -2.7395 -3.6923 -4.3495 -13.4599 0.6565 25.7569 24.1232 20.4182 16.1881 12.4409 10.9425 10.5212 10.6127 10.0690 8.9583 6.8593 5.3047 4.2774 2.9654 1.7215 -0.5266 -3.2445 -6.9442 -10.3293 -12.7061 -14.0210 -14.2363 -13.7968 -14.0351 -15.0354 -15.6847 -16.5621 -16.6992 -17.3378 1.2536 0.3575 0.1415 -0.1561 -0.1699 -0.6288 -0.4370 0.0255 0.2138 0.5498 -1.1499 -20.2166 0.0231 -0.9014 -1.8167 -1.2335 -0.9356 0.1659 0.0099 -0.3194 -1.2785 -1.6159 -0.9934 -0.9581 -1.8280 -2.2803 -1.6717 -0.1281 -0.6227 0.0211 -0.2651 -0.5372 -0.9352 -1.0325 0.2653 -0.4461 0.6598 1.5850 4.5525 6.2731 6.2437 6.2289 7.1906 6.8806 4.1911 2.5668 0.0429 -1.5955 -2.8462 -4.6688 -4.0492 -13.9413 -0.0713 7.9284 9.1572 9.8203 10.6262 11.7687 13.2204 14.0222 13.2111 10.5107 6.8116 3.6111 0.4955 -2.3899 -5.1121 -6.5572 -6.6556 -5.2199 -2.9231 -0.5211 -0.8570 -4.7480 -9.1464 -11.8191 -10.7137 -6.0224 -4.8220 -8.0630 -12.3598 -13.2532 13.1773 12.7484 9.6243 5.0688 -0.9409 -6.7845 -7.3453 -6.4726 -6.1985 -4.8683 -8.0086 -24.4428 20.6590 19.3955 16.2834 13.6379 12.4445 12.1295 10.9807 10.1646 10.4918 11.3802 11.3612 11.2354 10.6339 6.7227 1.1138 -3.7021 -6.4288 -7.9590 -9.9760 -11.0475 -13.1574 -15.9863 -18.1733 -17.6149 -16.1809 -16.3342 -15.4709 -13.2473 -13.3553 6.4606 2.2334 0.0904 -1.0983 -1.1535 -1.8710 -1.3953 -0.4539 -0.1442 0.1951 -2.8632 -21.9027 11.5076 12.0660 12.7170 14.7721 15.3221 13.0928 8.0689 3.5812 1.5428 1.2390 0.9197 -0.0146 -2.1654 -5.8495 -7.9985 -6.4957 -1.4612 4.6035 5.2013 1.9497 -2.2153 -5.5580 -2.2714 -3.5929 -8.3748 -16.9482 -17.6920 -14.1565 -11.7896 -0.1089 2.8427 6.3890 4.6360 3.9712 2.8762 -3.4553 0.8911 -3.1126 -3.8817 -11.0478 -18.2605 9.1012 8.2983 7.7090 8.2796 9.7170 11.3893 12.9622 12.4812 9.4717 5.4783 2.6937 2.0314 2.3476 3.7201 7.2459 7.9823 4.2063 -1.0767 -4.4784 -6.7559 -4.5456 -4.6976 -8.2963 -18.7549 -25.0006 -24.3482 -13.5441 -8.7468 -4.8700 9.4162 -0.0518 -5.6394 -1.8175 2.8460 5.7461 4.9827 2.5039 -4.5892 -5.3372 -8.0598 -24.0108 25.3914 22.4719 18.4847 14.1484 9.8827 6.3827 3.7424 2.3869 2.0026 2.1806 2.2067 2.4594 2.5334 2.7925 2.7285 2.5917 0.9336 -1.3314 -3.7507 -6.3146 -9.9633 -12.2523 -11.7329 -10.5539 -10.5613 -12.8970 -14.8061 -16.0931 -13.0635 9.4907 8.6133 6.9669 5.2967 0.8483 -2.8965 -3.7224 -5.4526 -6.1034 -5.5404 -7.5006 -19.2567 14.7633 21.0347 26.5178 28.8557 23.3660 14.8939 7.8472 4.1479 1.6451 0.1940 -1.0241 -1.7100 -2.7839 -5.4888 -5.8766 -6.7065 -6.5101 -6.3172 -7.4748 -8.1349 -8.6673 -9.2054 -8.7696 -9.2949 -9.5243 -9.8586 -10.6206 -12.3755 -12.9225 0.5464 0.3011 -0.4717 -0.8221 -0.5981 -0.7596 -0.1787 0.0888 0.2680 1.7014 -0.0756 -13.4143 14.5722 15.9781 17.0264 17.6175 17.4232 16.5459 14.6151 11.6122 8.3872 5.7241 3.1297 0.7916 -1.8948 -4.6319 -7.4829 -9.0432 -9.8372 -10.2623 -9.8461 -8.3463 -7.1311 -7.5141 -8.8925 -9.9645 -10.0906 -8.0182 -7.1753 -10.4665 -12.8258 7.5756 9.5196 10.3723 8.1609 3.4930 -3.1717 -6.1605 -6.9929 -7.1805 -6.8863 -8.7297 -20.7652 37.2037 35.8111 32.3205 28.0474 23.2802 17.7045 11.6084 5.8427 0.2670 -3.7432 -6.2669 -8.1167 -9.3928 -10.1312 -10.3467 -10.0877 -9.5979 -9.7744 -10.3207 -10.6331 -9.9469 -8.6203 -8.3585 -9.6074 -10.8446 -11.5167 -11.7789 -11.6363 -11.3647 0.3839 0.1181 -0.0142 -0.2099 -0.2835 0.1550 -0.0340 0.1033 0.0295 0.1568 -0.4049 -11.8075 25.2715 25.9731 25.5019 24.4387 22.0168 17.9875 12.8839 8.1186 4.0883 0.9493 -1.8320 -4.9719 -7.8984 -10.8034 -12.5203 -12.4959 -10.7116 -8.3345 -4.1201 -0.1578 0.1929 0.1873 -2.8273 -8.7555 -14.7009 -17.5950 -18.3997 -17.0685 -14.4171 1.9066 0.3797 0.2936 0.7746 -0.4377 -0.0940 0.1464 -0.0351 0.2602 -0.8075 -2.3869 -18.3683 -1.7829 -2.9115 -3.3197 -3.0219 -3.0103 -2.1963 -1.8274 -1.5453 -1.3834 -0.5971 -0.1822 -0.0707 -0.4004 -0.4751 0.5738 0.6319 1.4145 1.0927 1.3496 1.6238 1.3746 1.5109 1.6452 1.4227 2.6607 1.9921 2.0933 1.3984 1.9401 -5.1733 -5.1451 -4.0887 -4.3334 -2.3485 -1.2750 1.8849 3.8802 5.4984 6.3884 4.7120 5.8699 3.0884 3.6195 4.4987 5.4241 5.9234 4.3151 1.2318 -2.0672 -4.8560 -6.7176 -7.7263 -9.2051 -9.8093 -9.8027 -9.8649 -7.5800 -3.5471 1.2395 3.8333 2.4520 -0.1380 -0.1169 2.7696 4.2835 3.0029 2.8349 6.1975 8.5550 8.1619 3.4262 3.7255 2.9723 1.5679 0.6856 0.7789 0.0324 -0.0400 -1.0930 -1.5814 -10.4745 2.5083 7.7805 8.5455 8.0969 7.4180 6.0322 4.2643 0.7072 -3.9008 -6.6106 -8.5279 -9.9913 -12.2197 -13.9875 -14.6194 -13.4585 -8.5866 -0.1410 5.8556 2.7328 -4.3868 -7.6497 1.0307 6.7604 2.0849 -2.0565 4.3945 7.6154 14.5442 18.2732 15.9793 12.4675 8.6361 9.3177 7.1620 -0.4370 -7.8068 -13.5960 -11.2218 -10.5975 -9.9034 -5.2521 15.1743 16.3078 16.6845 19.2037 24.9642 26.0482 22.2299 20.1754 18.1609 11.9813 3.3906 -4.1269 -9.8102 -12.4054 -13.1972 -14.9771 -15.2101 -17.0350 -17.5402 -17.2730 -16.8388 -14.0848 -9.7661 -6.4551 -6.0572 -3.5105 -0.1292 -3.2831 -12.6212 2.6750 0.5089 0.3940 -0.3851 -0.0012 -0.1207 -0.3792 0.6121 -0.3176 -1.0554 -1.9307 -19.7041 31.5560 30.0892 27.2291 23.5683 19.0546 13.2491 7.4257 2.9756 1.0209 1.0243 1.3700 0.6757 -1.0362 -3.4535 -5.1118 -5.5508 -4.6428 -3.9233 -3.2906 -5.2994 -8.4124 -11.6578 -14.3387 -15.5177 -14.9184 -14.0360 -14.9127 -16.4768 -16.6595 1.6433 1.3970 1.0165 0.6310 -0.0752 -0.3736 -0.5030 -0.7080 -0.7791 -0.4687 -1.7802 -17.0148 10.1749 8.8485 5.1795 4.5617 6.0171 6.4829 4.3672 1.6019 -1.6450 -2.9876 -3.6524 -3.2008 -2.3296 -2.1644 -0.9768 0.4251 1.9391 3.4981 4.6467 4.5048 2.1218 -0.3094 -2.3029 -5.7620 -6.5009 -7.7314 -8.7890 -8.6982 -7.3190 -8.3023 -3.9045 0.7597 3.5083 5.6470 8.4380 8.9270 8.1570 4.5045 0.2453 -27.9802 0.6878 -2.6861 19.2221 33.9780 25.1761 5.3276 0.9553 6.0941 10.8857 -5.1659 -6.6908 10.2870 5.5719 -7.7825 0.7662 -3.2785 -9.7089 2.1449 -8.4950 -0.8482 -8.2638 -3.5649 -9.0557 -5.1930 -8.2034 -6.3047 -4.3602 -8.0851 -11.0228 -11.6996 3.2339 2.5869 1.5692 0.5614 -0.4616 -0.6459 -1.3729 -1.3736 -1.2425 -0.6779 -2.1770 -11.9897 7.7287 10.4343 12.3692 13.9892 14.6808 14.5459 13.0629 9.8660 5.8851 1.8545 -0.9409 -3.2758 -5.5305 -7.8527 -9.4747 -10.4586 -10.7336 -9.8759 -8.2611 -5.1685 -1.7008 0.1176 -2.2902 -4.5858 -4.0962 -2.2000 -2.3668 -6.9728 -8.7495 13.3085 14.0301 12.5973 11.0446 6.5436 -2.6637 -9.4551 -11.0645 -11.2845 -10.7446 -12.3117 -20.4326 10.7360 10.3386 8.2768 6.4632 4.7302 3.0267 0.5796 0.1120 1.9363 5.0018 8.3004 9.8879 8.2713 4.5555 2.8097 1.8606 2.8946 3.7421 5.2970 1.2683 -4.7378 -8.7201 -12.8564 -12.4960 -9.6753 -7.5251 -10.0781 -16.3686 -17.6314 11.3379 8.1471 4.3411 2.5211 1.4007 -1.3607 -3.3014 -4.3151 -5.9538 -5.2614 -7.5554 -24.6877 15.8329 15.5150 15.4055 16.5837 18.1854 17.6604 13.6126 8.4914 4.4891 2.4328 0.8814 0.7780 2.6950 5.3091 6.6587 3.8545 -1.3529 -6.1324 -10.5147 -12.4571 -13.5735 -11.0746 -7.2535 -11.2844 -17.2383 -20.4683 -17.4107 -10.9397 -8.6853 6.2333 2.1814 0.2320 -2.1897 -2.6025 -1.7475 0.3359 2.9117 0.0927 -0.1075 -5.3398 -21.1984 7.6562 6.5870 4.6968 5.1260 9.8218 14.9709 16.0850 11.5684 4.7265 -0.2176 -2.9979 -6.0694 -8.2544 -9.4950 -8.0755 -5.7955 -0.4807 4.7296 3.3026 -0.0914 -2.8102 -1.2809 -0.3393 -3.3149 -5.6215 -8.5469 -6.6780 -7.8970 -11.3047 12.3298 6.3356 1.6165 -2.5162 -1.6392 -1.6454 -1.7173 -2.3908 -2.4175 -3.1101 -4.8454 -23.7397 4.9452 5.0593 3.8655 4.3020 7.6977 11.2424 13.0502 11.2196 6.9219 2.6857 0.2056 -1.5076 -2.7845 -3.1104 -0.8091 1.9648 6.1634 5.4049 1.2240 0.3494 -1.5074 -1.8246 -3.5432 -4.5137 -4.3268 -8.6129 -12.2904 -18.8599 -22.6111 7.0748 5.7565 2.9123 -0.3591 -1.5206 -1.7280 -1.8572 -1.6318 -2.3011 -2.3197 -4.0261 -26.4685 6.0640 7.2189 7.3048 8.3637 9.3160 10.4746 10.1941 8.3124 5.0444 1.9281 -0.2645 -1.4345 -2.1250 -2.6210 -3.0015 -2.7992 -2.6148 -2.9666 -3.0696 -3.8743 -4.5941 -4.8980 -5.6820 -5.7978 -5.5722 -5.1973 -5.4147 -6.4176 -5.8765 -6.4521 -7.2215 -4.2413 -2.7669 -0.8266 1.9295 3.3149 5.2440 5.9014 6.7572 -1.6387 -0.2567 5.2371 4.8863 3.3100 2.1337 3.1492 5.6939 8.7998 11.5679 12.8023 11.4528 9.0298 8.9298 10.6661 11.0071 6.4326 0.2441 -4.1637 -7.7062 -9.8518 -10.2264 -9.5820 -9.1951 -8.6992 -10.3299 -13.3858 -12.1048 -8.3569 -6.0495 -5.6913 14.1502 9.0286 4.5400 -1.0010 -2.1523 -1.3098 -3.6803 -4.2446 -3.9915 -4.5409 -6.7984 -22.3276 1.1749 2.9147 3.8400 5.6634 7.4575 9.0125 7.3532 4.8392 2.7190 0.8710 -1.4481 -2.7601 -4.4452 -5.2662 -3.9827 -3.4617 -3.6219 -3.1639 0.2716 3.4947 2.5863 2.0483 0.3695 -1.8223 -3.0550 -5.5600 -5.1761 -5.3683 -5.4841 2.7668 2.1577 3.0912 2.4351 2.4455 2.9457 1.4490 -1.5314 -2.8660 -2.9647 -9.9290 -9.9768 25.7146 25.3619 23.9564 22.3568 19.1718 13.1052 5.5763 -0.1008 -2.7575 -4.2993 -6.3232 -7.4184 -9.0999 -12.1658 -14.7424 -14.2269 -13.0082 -10.2417 -6.6055 -0.9140 1.6308 -1.8199 -3.8874 -1.8765 -3.1164 -7.7016 -9.3481 -4.2820 -2.9383 8.4368 1.7117 -0.7722 -1.4926 -2.2285 -1.9674 -1.0460 -0.6567 0.1437 0.9502 -3.0790 -15.7527 10.7572 9.4885 7.7426 6.5423 6.0951 6.6895 8.5238 11.1515 12.9326 13.0679 11.3687 8.6878 5.8071 4.2486 4.2979 5.1375 3.6691 -0.4487 -5.7940 -9.6188 -11.6687 -12.0791 -10.1837 -7.1986 -9.3267 -15.4942 -18.3956 -19.0668 -16.9329 10.8057 6.4011 3.3690 1.5029 -0.9587 -2.8947 -3.7517 -3.2931 -2.8022 -2.8052 -5.5731 -27.3774 30.7504 28.4951 25.5185 22.1742 18.1099 13.0360 7.7976 3.5112 0.1176 -2.6569 -5.1898 -7.4966 -10.1459 -13.1401 -15.8245 -17.0970 -17.1868 -16.6198 -16.0292 -14.4009 -11.3257 -6.9370 0.0110 2.6766 1.9106 1.9904 0.8448 -1.2215 -1.6723 13.9837 12.0732 6.7883 4.2122 -0.6419 -6.1564 -6.8790 -7.3232 -5.7545 -3.2248 -7.0778 -13.8733 5.5235 4.9142 3.2141 2.6590 2.9961 4.2989 2.3547 0.5028 -0.8260 -1.5841 -2.8526 -2.4476 -1.1830 1.5505 2.5932 1.4615 -0.9550 -2.6992 -1.4620 0.7531 3.9055 4.2326 1.8576 -1.8966 -2.2755 -5.1995 -7.0773 -7.5304 -4.8283 8.7008 8.7053 7.0759 3.5239 0.2213 -0.4716 -2.9649 -4.4365 -3.8970 -5.6460 -10.8111 -11.0662 10.0683 11.2576 9.1250 5.5609 2.1927 2.3916 0.5672 -0.6821 -1.7701 -2.4144 -2.1229 -2.5051 -3.0931 -3.4474 -3.5498 -4.6568 -4.0419 -2.9786 -1.6058 0.2043 0.2119 -0.9338 -2.1449 -1.5900 -1.2476 -0.0367 -0.7467 -1.0002 -1.0118 -12.1871 -7.6015 -6.0260 -2.6153 1.8019 5.1419 7.0075 7.4839 6.3084 5.7281 -5.0417 11.1839 19.0914 19.5418 18.5550 17.3149 15.8219 14.6893 12.7457 11.1878 8.8607 6.1729 3.1425 -0.6029 -5.0284 -9.2811 -12.4294 -13.9531 -12.8183 -10.2445 -6.0419 -0.7352 0.9087 -2.2874 -5.6745 -5.3857 -4.8993 -8.6787 -14.4653 -17.3889 -18.1181 2.0079 2.3051 0.1550 -1.9709 -2.1518 -1.0518 -0.2981 0.9220 1.4828 1.7198 -3.1202 -19.8209 7.5768 6.6930 5.4155 4.9157 5.4796 5.7470 5.5734 5.4561 5.0927 4.7098 4.4827 3.6618 2.9817 3.2600 4.2867 6.6922 8.7811 7.7587 3.8523 -0.1532 -4.4933 -6.9881 -8.1454 -8.9490 -9.5267 -13.8968 -17.7691 -17.7758 -14.7195 9.4196 10.2634 10.4478 8.8124 5.1507 1.4872 -4.9411 -9.3928 -9.8991 -10.0090 -11.3391 -24.4463 6.3112 6.1145 5.3668 4.5313 3.6954 4.7877 6.2658 8.3789 10.2936 11.7688 11.4084 9.5320 6.9810 5.0657 4.7615 5.5904 6.1808 3.6441 -0.8606 -5.0517 -7.7101 -8.0207 -7.3867 -7.9980 -11.4209 -15.6623 -18.3210 -19.2583 -18.9878 1.9218 -1.0898 -2.1315 -2.6064 -0.3290 1.3612 2.7055 3.4481 2.1270 0.3937 -5.8006 -23.8910 4.7133 7.0828 7.4451 6.1536 5.1026 6.1735 5.5620 4.7204 2.3449 0.0662 -0.0552 -1.4746 -1.3028 -2.0833 -2.3742 -3.0032 -1.8959 -3.1532 -2.7407 -2.7522 -3.1457 -4.1303 -3.0723 -3.0359 -3.2114 -2.1394 -2.2842 -3.9496 -3.5601 -9.5458 -8.5225 -2.1447 -3.0135 -13.5275 -8.7010 7.2088 11.6588 11.7890 11.7226 3.0758 6.7721 14.9989 17.5318 17.0021 15.1799 12.5029 9.0797 3.8559 0.1428 -2.0371 -1.8983 1.1780 2.7230 2.0463 1.0309 1.6621 0.5141 -1.5732 -3.0527 -4.0016 -5.2671 -5.7073 -7.6154 -8.5918 -8.8827 -8.7941 -6.7438 -5.5924 -13.4525 -16.2384 -1.0040 -2.5012 -0.5919 1.0505 3.9201 5.2244 4.5335 2.9522 -3.9239 1.3432 -11.0028 -13.7590 23.3831 23.9860 23.9088 23.9899 24.5442 24.7231 23.4676 20.9361 19.0352 18.1315 16.6484 13.2407 6.9323 -0.8530 -7.8736 -12.5420 -15.8304 -18.1801 -19.7679 -20.6937 -20.6499 -19.8660 -18.7929 -17.4798 -16.8484 -17.7541 -18.9554 -19.1779 -17.6622 2.2274 0.2658 0.2329 0.5563 -0.2993 -0.6411 -0.8349 -0.8217 -0.3946 0.3529 -0.6438 -20.4737 27.1582 28.3012 27.2357 25.1547 21.7324 15.2318 7.9956 2.0196 -1.2674 -2.1412 -2.5552 -3.8180 -5.5360 -7.5787 -8.8477 -9.9856 -10.6186 -10.6812 -11.5427 -13.0580 -14.0180 -14.2114 -12.3911 -5.9856 -0.0551 2.4393 -1.0062 -8.7488 -13.2219 8.5421 8.1274 3.1062 1.0714 -1.1957 -2.6079 -3.1237 -3.4444 -3.3713 -3.1296 -3.9745 -17.2997 0.2274 1.5742 0.9030 -0.0755 -0.9929 -0.0010 0.9686 1.1448 0.4783 -0.3525 -0.1336 -0.1913 -1.6241 -4.5094 -5.8249 -5.3840 -4.2690 -0.9607 3.2627 5.8265 5.0034 2.6931 1.4156 0.6324 1.3181 1.5226 -0.7562 -0.2634 -1.6323 10.1447 8.1369 6.9278 1.8273 -2.8348 -3.1502 -3.8258 -3.2103 -3.0403 -2.8386 -8.1368 -10.7452 2.2030 2.3567 2.2770 1.9391 1.4807 2.4535 3.7369 4.5955 4.8497 4.7689 3.9314 2.9060 0.5571 -2.2750 -3.2233 -2.8254 -1.7099 0.7810 3.0014 3.5591 0.5135 -3.7594 -6.0245 -4.9397 -2.1317 -1.1080 -3.4783 -7.2902 -7.1450 17.4214 15.9833 12.5560 11.8901 6.7955 -3.1206 -12.2737 -12.4585 -12.5086 -11.3448 -12.9400 -23.4673 1.7001 2.1276 3.1509 3.8711 3.4450 3.9578 3.9916 2.2726 1.5860 2.9582 1.5039 -0.3172 -1.6934 0.0480 1.7637 5.8108 12.7325 15.4092 10.2323 1.6370 -5.9209 -8.2841 -8.8154 -8.6341 -8.8994 -8.7332 -8.8580 -9.4260 -8.6166 1.0902 -0.3804 -1.8380 -2.1594 -2.0188 -0.5336 -0.2356 0.9072 1.9988 2.4507 0.7188 -11.1533 3.3470 4.2651 3.1581 1.5899 1.3593 5.4416 9.6912 10.3789 8.2781 5.7621 2.3516 -1.6093 -4.6703 -4.3014 -2.0948 1.2895 4.5826 5.8867 2.7580 -0.5921 -1.6254 -0.3408 -0.8297 -4.7115 -8.7548 -10.1950 -9.4023 -10.1017 -10.9107 5.4257 1.3752 -1.6808 -1.6847 0.0776 4.2441 3.7807 1.7086 -1.1629 -3.5093 -8.5743 -19.3479 16.0698 16.0234 16.6242 18.4265 19.5793 17.7359 12.2454 6.7061 2.9279 1.0254 1.3081 3.1537 6.2322 6.7809 1.2833 -4.6315 -8.4988 -10.9702 -12.9812 -12.8617 -10.8763 -6.7933 -7.5585 -12.2110 -13.1807 -11.6979 -8.6529 -10.8315 -14.3767 3.5106 2.2779 0.8347 -0.4316 0.4812 -0.3548 -0.9580 -0.3001 -0.9639 -1.0077 -3.0884 -21.7124 14.8614 14.3243 13.2597 11.9042 11.3617 12.9241 16.0023 18.6135 19.9112 18.7801 18.0215 16.7944 15.0590 9.5509 2.2373 -3.7737 -7.9433 -11.6438 -15.8775 -19.0534 -20.0063 -19.8849 -17.4072 -14.6677 -14.9214 -15.6185 -17.3399 -17.4032 -18.0650 0.4331 -1.3874 -1.3387 -1.2657 0.1397 0.9913 1.3715 1.5636 0.9626 0.3031 -1.7729 -22.4910 24.4358 25.1322 25.6771 26.9458 25.4271 20.1741 13.1848 7.1606 2.9511 -1.5207 -6.2228 -9.1615 -10.2139 -7.9615 -3.5511 0.8947 -0.0640 -5.6909 -11.8880 -15.0418 -13.4238 -8.6724 -10.1392 -15.6141 -16.4146 -15.3775 -9.3359 -5.8457 -5.8440 5.3670 0.7714 -1.2803 -0.3316 0.0917 1.3247 -0.3166 -0.6629 -0.4726 -0.9886 -3.5022 -15.8979 11.2574 14.5322 17.1770 19.4370 21.2176 22.0240 20.3915 16.7178 12.6022 9.4053 7.3741 6.1361 6.4430 7.2023 6.6378 2.8391 -3.5908 -9.0350 -12.7524 -16.0348 -18.3668 -20.0831 -20.1715 -19.0743 -16.0476 -13.9450 -16.7267 -18.3902 -17.1759 6.7669 3.5601 1.4726 1.2131 0.8001 -1.0515 -1.7968 -2.1212 -2.4567 -2.6039 -3.7828 -21.2313 9.8296 10.9668 11.4657 12.4379 13.8874 14.6363 14.3342 12.4038 8.9235 5.0490 2.1177 -0.5223 -2.7832 -4.1482 -4.6107 -3.0828 -0.2052 2.3942 2.4641 -1.9911 -6.8813 -9.3285 -9.5593 -6.0838 -4.8651 -9.6703 -15.7893 -21.0597 -20.3293 7.8335 9.3572 8.2255 6.2992 3.6571 -1.3039 -4.8523 -6.7448 -6.9973 -6.7242 -8.7501 -23.8675 10.0961 10.4449 9.9127 8.5711 6.2180 4.5618 2.4521 1.1110 -0.1627 -0.3653 0.8918 1.6279 1.8907 0.7438 -0.7728 -1.2107 -1.2055 -1.5566 -3.2793 -4.1807 -4.1312 -5.1981 -4.9412 -5.1286 -4.9138 -5.1042 -5.2876 -6.4396 -4.6442 -4.2766 -4.5588 -1.6946 -0.6815 1.6923 2.6384 3.7940 3.9827 3.1253 3.8234 -7.8447 -3.7539 0.0757 -0.0653 -0.5789 0.6712 3.3974 5.2272 3.8057 1.3204 -0.9531 -1.2566 -1.6955 -1.1717 -0.9735 0.2237 1.1803 4.3319 6.8301 9.0463 9.4433 7.5902 3.7433 0.0327 -1.4644 -4.7154 -6.0059 -7.2747 -9.9821 -10.6151 -10.1672 1.8545 3.4334 6.1661 5.8556 3.1158 1.3495 -0.3375 -1.2855 -2.2198 -4.5273 -13.4049 -11.7714 18.8320 19.0344 19.1952 19.5440 18.8449 14.8697 8.6867 2.7879 -1.6869 -4.7635 -7.1363 -8.8780 -9.6594 -9.0777 -6.9523 -1.8282 3.5267 4.4511 -1.5807 -5.6560 -7.8512 -4.0511 0.2367 -5.4146 -11.3280 -13.9141 -12.8660 -9.0793 -8.2860 7.2253 2.3080 0.9914 -1.0476 -1.1123 -1.0979 0.2181 0.5772 -1.1907 -1.8790 -4.9926 -19.5991 6.9436 25.3648 31.2509 23.4659 7.6212 8.5476 13.4044 12.1024 6.3310 6.4395 11.2808 6.4453 3.3798 -0.4108 -2.6193 -4.1535 -5.4353 -7.8115 -9.9117 -10.8599 -12.3626 -13.5397 -13.0447 -13.1340 -12.5666 -12.9922 -14.2050 -14.7731 -14.7573 0.6782 0.2930 1.1419 0.5868 -0.3036 -0.7149 -0.2401 0.2321 -0.6483 0.2892 -1.3142 -13.0829 8.0630 8.5930 8.9037 9.6389 9.9192 8.6430 5.1562 1.1687 -2.6850 -5.3768 -7.2472 -8.6966 -9.7539 -8.2770 -7.3009 -4.7332 -2.5381 -2.7034 -3.2364 -4.1264 -4.6546 -3.9840 -4.4745 -3.1865 -2.7693 0.2429 6.0573 8.4087 10.9490 1.5828 2.2857 2.4626 4.2564 3.1914 1.9048 -0.4814 -1.9794 -1.6878 -0.6562 -10.8788 6.9006 15.3121 14.0216 12.3150 10.8984 9.8481 9.4860 9.9555 11.2336 12.1475 11.5421 9.5080 6.1797 2.1804 -1.5586 -4.1037 -3.8925 -2.2145 -0.5740 -2.0726 -5.8999 -9.5870 -12.3986 -13.2888 -11.0931 -8.6950 -10.6144 -15.3843 -17.4751 -15.7759 11.6735 8.2281 4.7038 3.1666 1.7515 -3.5926 -5.6951 -5.7508 -5.1915 -3.4390 -5.8544 -26.0008 10.5147 10.1953 9.3949 9.1051 8.3007 7.6855 5.3821 2.1136 -0.5365 -2.3955 -3.8024 -5.3725 -5.6568 -4.8775 -2.4291 0.2566 4.4555 7.9385 8.4324 6.4827 2.9059 0.5262 -2.9536 -6.3130 -9.2242 -10.0210 -12.3911 -13.7930 -13.9236 -1.0018 -1.0252 -1.9659 -2.6464 -2.9740 -1.2967 0.3806 1.6370 3.3651 4.3609 1.1664 -14.6511 17.2460 16.9637 17.1204 18.8740 20.7478 19.3865 13.9822 8.1265 3.2880 0.7780 -0.2592 -1.0141 0.0742 3.2639 4.6036 2.5181 -3.1653 -6.8864 -8.0795 -7.3818 -6.3471 -6.8628 -11.5495 -14.8984 -15.4665 -15.7120 -14.8453 -15.6943 -18.8106 1.4980 1.4377 1.0081 0.1939 -0.3867 0.3736 -0.2884 -0.4032 -0.4237 -0.7102 -2.2990 -21.4765 29.1324 27.4472 23.9346 19.8815 15.3348 10.3288 4.4524 -0.1346 -3.0576 -4.7063 -5.5439 -5.9222 -5.9328 -6.6024 -6.7197 -6.0365 -5.2696 -5.1176 -6.4818 -7.5705 -8.4454 -8.5007 -8.4654 -7.9097 -7.0136 -8.1875 -7.3437 -4.3020 -1.2484 4.1307 4.9307 5.3321 3.9185 2.3886 0.5401 -1.5333 -2.6429 -3.4176 -4.0077 -9.6393 -7.8398 26.1063 27.1257 26.4958 24.5623 21.0909 16.0392 10.3606 5.2224 1.2830 -1.7057 -5.2899 -8.7872 -11.5471 -13.8485 -15.6146 -16.5388 -16.6318 -15.7526 -14.3061 -11.8594 -6.9641 0.2736 3.2894 2.3319 2.1876 -0.1464 -6.9487 -10.5477 -9.8802 8.0155 5.1637 1.2918 -0.1585 -1.6768 -2.1876 -2.1575 -2.3734 -1.4901 -0.3422 -4.0850 -16.2781 -2.8938 0.5854 4.9032 19.8896 33.0777 27.8431 5.8284 -0.8777 -0.4212 7.5419 14.4523 0.5889 -7.2843 -5.7721 2.2765 -3.8670 -7.0376 -2.4089 -1.9230 -6.9736 -5.0540 -6.8128 -9.1282 -7.6378 -9.9538 -8.0762 -10.1133 -10.3156 -10.4365 1.7900 1.2930 1.2513 1.1649 -0.0523 -0.1935 -1.3719 -0.6466 -0.7256 -0.6226 -1.8868 -11.7248 5.0511 7.2825 7.4756 7.6284 6.3099 6.5711 6.0062 5.2464 4.1337 3.5789 2.7344 1.9171 -0.0947 -4.7055 -6.3175 -6.7260 -8.3754 -7.5699 -4.4289 -0.5061 0.5491 -0.6121 -1.6630 -2.5886 -1.0683 -1.0286 -4.3484 -7.2928 -7.1586 2.8359 1.6298 0.9777 0.2594 0.2894 -0.2649 -0.2767 0.5984 -0.0902 -0.5417 -5.4171 -8.5849 26.8109 26.2612 24.6562 22.4444 19.7975 16.2207 11.9006 7.5618 4.2432 1.1620 -1.9686 -4.6999 -7.0035 -8.7711 -9.4863 -9.0559 -7.8923 -6.8802 -7.0120 -8.4837 -11.2123 -13.1769 -13.1832 -11.7848 -8.9173 -7.9697 -7.9495 -8.0762 -7.5350 6.9413 5.9114 4.4559 1.9045 -0.2220 -1.5629 -2.1181 -2.9624 -3.1458 -3.1496 -6.0522 -15.8707 15.4221 13.9665 11.5956 9.4217 7.3471 4.9825 2.5822 1.1306 -0.4479 -0.0543 0.4224 2.6264 2.4323 2.9777 3.9679 4.5466 4.0757 2.5862 0.7066 -2.3566 -5.4206 -6.8028 -9.1716 -8.9333 -8.9478 -9.7023 -11.2057 -13.2026 -14.5445 4.5118 3.2465 1.4635 1.0112 0.8257 -0.5633 -0.8311 -1.4185 -1.8127 -1.1914 -5.2417 -16.4127 28.0070 28.9811 29.1691 29.0099 27.2163 23.1256 18.5752 16.0256 16.0772 16.0792 13.4415 7.1002 -1.0509 -7.6202 -12.1978 -14.6100 -16.0350 -16.8734 -17.1512 -17.3461 -17.2821 -16.7355 -16.3289 -16.1605 -16.3294 -16.8373 -17.0316 -17.0117 -16.2062 0.8143 -0.0316 0.0425 -0.0469 -0.5600 -0.2604 -0.2934 -0.0397 0.1815 0.6487 -0.4551 -17.2928 21.3473 20.2800 18.5835 16.4034 13.0771 9.2891 7.0954 6.8063 9.6682 13.1023 14.6281 13.8935 12.0583 11.5472 11.1879 7.7716 2.5072 -3.2634 -8.4595 -14.0714 -18.2085 -21.2308 -24.2103 -24.5753 -21.1428 -16.8159 -16.8684 -20.7499 -19.6500 7.8883 2.8059 -0.2509 0.2746 0.5770 -0.7075 -1.0613 -1.6761 -2.1520 -2.4962 -3.2017 -23.7494 16.7277 16.5100 14.9737 13.3864 11.3764 9.4606 7.4445 4.9221 3.5715 2.4337 1.9778 1.0209 0.1128 -1.6904 -3.3639 -3.2615 -1.5944 -0.2581 -0.9030 -2.3174 -4.1698 -4.9533 -4.5665 -6.1912 -10.0495 -13.2340 -15.5995 -16.5459 -15.2199 5.3973 5.3767 6.3500 5.5996 2.0913 -2.3482 -4.2670 -3.6648 -4.0077 -3.9263 -6.6010 -20.6386 3.6641 3.0720 2.1390 1.3959 0.5821 0.1856 -0.7457 -1.8010 -2.5799 -2.9996 -3.1922 -3.7936 -4.3073 -4.4608 -3.7250 -2.3583 -1.9204 -1.2606 -2.2907 -2.8190 -3.6214 -3.1415 -2.0045 0.0938 2.4493 4.0398 6.5627 10.1038 12.7333 -5.2898 -3.8412 -0.6529 0.7502 1.5439 2.5070 2.6854 3.8159 2.2321 3.0585 -6.8092 14.5213 7.5981 6.7937 5.2222 4.6535 5.7305 7.9847 10.0100 10.9988 9.0694 6.0491 3.4695 2.2020 3.1237 4.5225 7.5338 7.0660 2.8900 -1.4622 -5.4401 -6.1963 -7.3166 -5.9799 -7.7791 -10.5609 -13.5413 -13.8804 -12.9467 -9.4679 -10.3461 11.6866 9.3826 4.4701 -2.9772 -5.4470 -4.9307 -2.7270 -0.1581 -1.4072 -1.6802 -6.2119 -24.8632 5.8372 5.4933 4.4445 3.1566 1.2701 1.1435 -1.1096 -2.4243 -3.5109 -2.2282 0.6573 2.1785 1.1141 0.6038 -0.9270 -0.1010 0.3438 0.9773 1.8036 -0.1658 -2.1507 -2.6201 -1.5194 -0.3072 1.7488 -3.1481 -4.7553 -3.5314 -2.2733 1.5456 3.9136 6.0524 4.7910 5.6839 4.8261 0.4655 -3.9096 -15.7692 1.8630 -9.4624 -9.4890 4.6026 4.2957 4.0221 3.8863 4.8775 7.7799 11.9268 15.6438 16.1838 13.0359 8.2259 3.9397 1.1633 -0.5844 -0.4453 1.6720 3.9861 4.4822 0.7429 -4.6835 -8.2254 -8.6845 -8.8455 -9.2050 -9.3625 -12.1150 -14.9115 -16.6057 -16.7984 9.4268 8.2301 5.4360 2.2444 -2.8020 -3.6865 -3.4374 -3.6210 -3.4624 -3.4351 -4.8928 -25.4465 31.7873 30.4727 26.1023 20.2575 14.3546 8.3050 2.5479 -2.7242 -6.2652 -7.8786 -9.5076 -10.7253 -11.9221 -12.5796 -13.0020 -12.4110 -11.3787 -10.5858 -9.2885 -7.2279 -5.6862 -4.5481 -3.8155 -3.1810 -0.2688 1.7479 2.4086 2.6005 2.4118 6.0159 2.6937 1.8092 1.2143 0.6228 -0.1962 -1.5166 -0.7925 -1.1563 -2.0509 -6.6433 -6.4991 18.8196 18.8060 19.0012 19.7425 18.9386 15.1920 9.3626 3.8042 -0.7101 -2.8913 -4.5793 -4.8562 -4.2855 -1.5235 2.8079 3.9527 -0.6820 -6.1064 -9.0907 -10.7715 -10.2261 -6.8530 -5.4028 -9.0538 -11.2966 -11.9744 -10.3023 -9.0454 -10.7763 4.8079 2.0464 0.5831 -0.5085 -0.7115 -0.6171 -0.2759 -0.3213 -0.2270 -0.8577 -3.9185 -18.4439 29.8848 29.1207 27.5698 25.5473 23.0863 20.0333 16.4515 12.7057 8.6525 4.4123 0.1328 -3.7662 -7.0685 -9.2222 -10.1967 -10.3862 -9.4399 -7.5052 -6.1986 -7.0520 -9.6530 -11.7447 -12.8170 -13.2994 -13.4411 -14.5193 -16.0619 -17.4467 -17.7785 0.6444 0.9150 1.0957 0.6198 -0.2661 -0.3037 -0.4308 -0.4697 -0.3863 -0.3182 -1.1000 -17.5027 18.4803 19.3278 19.3456 18.5446 16.5534 13.5838 10.0057 6.5241 3.2399 0.5440 -2.4922 -5.5969 -8.4750 -10.0774 -10.9952 -10.9028 -10.6525 -9.9639 -8.7708 -5.9295 -0.9987 2.2097 -2.2176 -6.2966 -4.0572 -2.0702 -5.9921 -9.8384 -13.0318 9.7202 8.7919 5.8500 1.2627 -3.1473 -4.0847 -3.9814 -3.8063 -3.2668 -2.9485 -4.3897 -21.4605 10.8936 10.0376 8.9233 8.3835 9.1909 11.1956 12.7625 12.8310 11.2547 8.6892 5.7674 5.0532 5.1919 6.4652 5.5698 1.2762 -3.6991 -7.9057 -10.9535 -12.3006 -13.0325 -12.0668 -10.2756 -8.9081 -9.5586 -12.4845 -12.5292 -10.6874 -9.0841 6.7548 4.3777 7.2866 11.0895 5.9012 -3.2191 -7.2773 -7.4247 -5.9063 -4.6316 -6.9510 -23.6620 14.1801 13.6094 10.2460 6.2621 3.2304 0.4920 -3.3704 -5.1542 -6.4379 -7.1331 -6.8071 -6.7010 -7.0994 -6.7923 -5.4284 -4.1081 -2.2588 -0.3405 0.3901 -0.1306 0.2111 1.2777 2.6120 2.4542 2.4177 2.7283 1.9381 0.6674 -0.9548 1.3373 0.4195 0.2246 -0.2612 -0.5780 -0.3401 0.2289 0.3082 1.5502 2.1823 -5.0717 -1.9154 7.4197 7.6107 5.1248 2.8926 2.5158 5.2747 7.9445 9.5554 9.8134 10.8602 11.2127 10.8181 10.8451 8.6337 3.4818 -1.7126 -6.6143 -9.2501 -11.7550 -13.8987 -14.1553 -13.7199 -12.4906 -7.9780 -7.1759 -5.4179 -4.3134 -2.3617 -3.1596 3.7397 0.2684 -0.7543 2.0473 3.1074 3.1748 0.6925 0.1021 -1.9327 -0.9979 -9.4471 -15.9473 5.0374 7.8743 10.5060 13.2551 15.8405 18.1863 17.6870 15.2297 11.9245 8.8446 6.8821 5.5715 2.9277 -1.1968 -4.6014 -6.2302 -7.5567 -8.8097 -8.9946 -8.6106 -9.0917 -8.5223 -8.8031 -10.3066 -10.5465 -10.5120 -10.3576 -11.9252 -13.7020 3.7640 1.8720 2.0488 1.2415 0.9134 -0.5949 -1.6362 -1.3248 -1.6433 -1.0179 -3.6227 -18.8186 19.2311 20.9055 21.1816 19.8035 16.7640 10.9316 4.3014 -1.2152 -6.3082 -9.8229 -12.4158 -14.6010 -15.1960 -13.5529 -10.4860 -6.0010 -0.0077 5.5394 4.4883 0.8609 -0.7114 -0.5882 -2.0714 -4.1988 -3.5305 -2.7385 -3.9119 -6.6059 -10.0440 6.8589 1.6709 -0.4277 -0.8756 -0.7567 -0.4132 -0.3654 -0.2776 -1.2933 -1.0276 -3.0928 -19.7110 24.3921 23.8657 21.7178 19.5721 17.2483 13.0391 8.2780 4.5096 2.1017 1.4583 0.4028 -1.6986 -2.5413 -2.4202 -3.3681 -6.3081 -8.4179 -8.6508 -8.3994 -5.6233 -2.8768 -2.4582 -4.6987 -11.0260 -15.7297 -17.5495 -16.4980 -11.2445 -7.0765 10.9683 8.5482 1.6240 -0.8116 -2.3291 -2.0794 -2.7065 -3.3384 -2.8326 -2.6102 -4.4326 -18.4205 21.6293 21.2629 20.0435 18.0462 14.0665 8.5047 3.1435 -1.3209 -4.4014 -5.7444 -6.2440 -6.5178 -6.8764 -6.1381 -3.8131 -1.3478 -0.7585 -3.8085 -6.8211 -8.0966 -7.5890 -5.2013 -2.5966 -3.9678 -5.8322 -4.8627 -3.8164 -4.4574 -6.4845 7.4192 3.5944 0.8769 -1.2773 -0.8711 -1.2539 -1.2063 -1.1651 -0.7991 -1.1807 -4.1369 -15.4669 25.3218 25.2194 24.6132 23.8034 22.1467 19.2686 16.0070 12.6244 9.8907 7.3439 4.6106 2.0173 -0.2300 -3.1887 -6.2778 -8.9287 -10.7500 -12.4083 -13.6221 -14.5295 -14.0216 -11.6668 -8.2900 -7.1780 -8.6454 -13.0929 -18.1357 -20.6369 -21.2645 0.6490 1.5279 1.4976 1.2259 -0.2509 -0.5437 -1.0645 -0.9697 -0.4026 0.0229 -1.6919 -19.5268 -1.2546 -1.5446 -0.9486 0.9829 1.7405 1.8511 2.6120 4.5582 4.2836 3.2383 1.9250 1.5674 0.4781 -1.1296 -1.5011 -0.3895 1.2177 2.8828 3.7419 3.9893 0.6886 -1.3040 -2.8370 -5.6790 -3.6007 -1.0630 -1.5598 -5.1076 -7.8381 10.2277 6.2474 2.9832 -0.8736 -8.4082 -6.4397 -4.2854 -1.8654 0.4359 0.9540 1.0241 -18.8314 -3.6520 -0.9802 0.6330 3.0142 3.7152 4.2246 3.0650 2.2808 0.7668 -0.9696 -2.1283 -3.4617 -5.6960 -9.1999 -10.9932 -10.5950 -8.8872 -8.3491 -3.9024 3.8951 4.5732 4.1833 4.4267 5.3015 7.1630 6.8136 3.6000 4.1437 7.0149 8.8113 4.5339 4.3320 3.8462 2.4702 0.0061 -1.7359 -2.2461 -3.3967 -3.6881 -12.9329 -0.9921 24.1276 23.4144 21.9515 19.2491 15.3233 10.6683 5.7075 1.4491 -1.9622 -3.4974 -4.3346 -5.2640 -5.4783 -4.5424 -2.5563 1.0471 2.9749 1.0585 -4.2112 -7.7040 -8.5161 -8.5574 -7.1906 -8.4892 -11.7312 -13.8838 -13.1386 -9.4367 -6.4770 -5.2323 -4.7057 -2.1760 0.8632 2.4803 4.6972 3.2524 3.1237 0.8651 3.0078 -6.1758 -9.0277 9.2070 8.6269 7.9993 9.2567 10.6048 10.9179 8.2726 5.4801 2.9587 1.4349 1.6895 0.8687 -0.1341 -1.4667 -2.2954 -2.9979 -3.1146 -3.5248 -3.6823 -3.9108 -4.7040 -5.0502 -5.2411 -6.0582 -6.2892 -7.1229 -6.8496 -7.8359 -7.0393 1.0164 0.3126 0.2560 0.1094 0.1566 -0.0117 -0.2184 0.2660 0.0029 0.5627 -2.4525 -9.3388 19.0542 19.7864 20.4414 20.8883 19.4828 14.6899 8.0652 2.5866 -1.9610 -4.2899 -5.3264 -5.8141 -5.3969 -2.8814 0.6767 3.6783 2.8172 -1.1754 -3.8287 -4.3496 -4.1271 -2.7566 -3.4552 -6.5139 -9.4384 -14.1688 -17.1871 -19.0448 -20.4515 1.8392 0.8553 0.2154 -0.0271 -0.4104 -0.2449 -0.1708 0.0249 -0.0369 -0.2525 -1.7922 -22.7099 22.2875 23.2966 21.0875 19.4172 19.4631 20.2489 19.0860 14.7884 9.6247 4.7618 -1.1341 -7.8711 -13.4709 -16.4039 -17.9473 -16.0183 -8.7161 -0.3674 4.2198 1.8970 -0.6141 -0.3383 1.4297 -1.9778 -12.2530 -18.9367 -22.1657 -22.0094 -21.3840 0.0857 -0.3388 -0.3844 -0.6424 -0.7435 -0.5609 -0.1067 0.1511 0.7988 1.0267 0.7142 -22.3449 1.5997 0.7952 0.5771 -0.1086 -0.9165 -0.4936 -0.5385 -1.1104 -2.3027 -2.7303 -1.7093 -1.2741 -1.2559 0.1339 2.1512 4.2566 4.4113 3.2940 1.9275 1.1660 0.9857 0.1003 -0.1015 -0.9056 -0.5391 -0.5752 -1.0655 -2.5147 -3.2570 1.4399 1.6942 1.2365 0.6457 -0.0065 0.5875 0.3795 -0.0796 0.4453 1.0116 -7.3540 -5.9661 17.6306 19.8446 20.6406 20.9119 20.8696 19.9715 17.0436 12.6644 7.8356 3.7315 0.0618 -2.5156 -4.0666 -3.6383 -2.3405 -0.6112 -0.7237 -3.4603 -8.5171 -12.2394 -14.9608 -15.8437 -14.9681 -12.6150 -11.0775 -11.0437 -12.1047 -15.2272 -15.2522 3.8383 2.7442 1.4004 0.6138 -0.4141 -0.6861 -1.0225 -0.8449 -0.9118 -0.8189 -3.8984 -19.7618 4.0159 4.7341 5.0428 5.4476 5.5823 5.0017 4.7364 5.0152 5.4244 7.2281 10.0426 12.1892 12.5133 10.8886 9.4587 9.9271 9.6594 6.2877 1.1672 -4.8743 -9.8309 -10.9887 -10.4195 -8.8449 -10.0345 -14.2880 -19.4282 -23.5124 -22.1410 9.6326 8.1547 3.0154 -1.3662 -1.9025 -0.9827 -0.5431 -2.6536 -3.4587 -4.0540 -5.8420 -26.6165 1.3951 2.3341 2.7846 3.6043 3.9813 5.2605 5.5279 4.8460 3.2475 2.3327 1.8366 1.4325 0.6121 -0.4539 -1.6285 -2.8274 -4.2077 -4.6993 -5.0706 -4.2874 -4.4071 -3.4175 -3.0547 -3.3504 -1.7471 -0.7879 -0.0749 -0.1170 0.9361 4.5093 3.2132 3.2053 2.7775 1.5517 -0.0446 -1.3922 -2.0535 -0.9648 -1.7751 -9.0269 -4.5860 28.2916 29.7152 29.0955 27.1159 23.3768 18.1997 11.9697 5.6704 0.9205 -2.5625 -6.9213 -11.4860 -15.0627 -16.3635 -16.7915 -16.8262 -16.2290 -14.5129 -11.0684 -5.6647 2.9493 7.1450 4.8374 2.6581 -2.8551 -9.6290 -15.3060 -15.9776 -14.6886 0.7674 -0.5757 -1.0994 -0.2628 -0.3330 0.2608 0.1505 0.3201 0.6736 0.6525 -0.5539 -15.2205 21.3574 19.0821 16.0689 13.5763 11.7756 9.8197 7.1626 5.6591 4.1988 2.6866 1.2839 0.2970 -0.7392 -2.1025 -2.9588 -3.9692 -4.2266 -4.5449 -5.2046 -5.5074 -6.5396 -7.8927 -8.7128 -9.1400 -9.3002 -10.0030 -10.3190 -10.7968 -11.0108 1.2272 0.8607 0.9681 0.0462 -0.4903 -0.1304 -0.4412 -0.1460 0.3281 0.9330 -3.1554 -13.2931 -11.9427 -9.0347 -8.1854 0.5355 16.2351 30.0772 15.6863 -0.5026 -5.1802 -3.4273 8.1185 14.3030 3.9959 -5.7275 -2.8537 5.8633 2.1444 -4.9037 -1.6011 1.0216 -1.4938 -3.6235 -5.0675 -4.7195 -2.6927 -4.8393 -5.4537 -9.4932 -7.2387 4.1282 1.8786 1.9953 0.5488 -0.3819 -1.3723 -1.0026 0.0804 -1.6472 -0.9937 -3.2335 -11.7554 18.4490 17.8582 16.6014 15.4593 14.0319 12.3568 10.0803 7.8236 5.7070 4.5343 3.6070 3.4959 2.7669 0.5453 -0.9860 -2.0713 -2.6104 -3.5225 -5.5660 -7.1856 -8.5038 -9.9136 -10.8379 -12.1072 -13.2841 -13.7883 -13.6681 -14.0513 -15.2210 1.9454 1.7954 1.7868 0.9124 0.3779 -0.2762 -0.6521 -0.9212 -0.7314 -0.0795 -4.1574 -18.4931 11.8976 17.9510 18.5286 15.1944 9.4977 6.4581 3.3668 -0.2268 -3.9011 -5.4058 -5.9886 -7.2383 -7.8525 -10.3087 -12.8063 -12.1794 -11.0999 -8.8156 -8.1165 -6.1532 -4.2252 -4.0395 -1.3151 0.5738 3.9550 8.7131 6.7113 1.7138 5.1116 0.9965 1.4759 3.0237 2.9344 5.1266 4.6639 2.7831 2.9561 0.3334 -5.8448 -18.4487 1.1692 0.9487 1.4130 0.9479 -0.0826 0.2145 3.2170 4.0687 3.2987 3.5035 4.5743 4.0544 3.4101 4.0914 4.5664 4.8132 6.4401 9.3451 8.9607 6.0790 2.7728 0.8498 -0.8017 -2.4432 -4.7032 -9.3198 -12.6235 -15.1492 -15.7996 -16.6466 -0.8633 -0.9141 -0.0119 -0.3370 -0.1759 0.0244 0.0238 0.6518 1.0910 1.8672 -1.3560 -15.2177 34.1302 32.0599 27.8887 23.7603 19.3256 13.9648 7.8176 2.2845 -0.8316 -2.8468 -4.8687 -6.8758 -8.2507 -10.0280 -11.0038 -9.9438 -7.5333 -4.6451 -2.1804 -2.2669 -3.7303 -5.3382 -6.9605 -9.3264 -11.3621 -13.0806 -13.5868 -13.1789 -13.3930 0.4195 0.2121 0.0329 0.2371 0.0989 0.1780 0.0464 0.0275 0.3526 0.0885 -1.6936 -14.6518 15.6422 15.2859 14.7754 15.3593 17.2032 19.1105 18.2304 15.0687 12.0800 11.4521 13.3209 14.1182 10.1435 2.4651 -4.8883 -9.3800 -12.5864 -13.8568 -15.1276 -15.6378 -14.1885 -9.7248 -6.9518 -9.9796 -12.4385 -13.0782 -14.0208 -19.5089 -22.8872 0.4990 0.8082 1.3862 0.4212 0.1198 -0.3486 -1.0547 -0.4030 0.3854 -0.1208 -1.6927 -24.4489 31.6974 29.4780 26.6290 23.2620 19.3188 14.1307 8.2731 2.8100 -1.0940 -3.2472 -4.2290 -4.8290 -5.3248 -6.1539 -6.7558 -5.9669 -4.6964 -4.4401 -6.1920 -8.0753 -8.1121 -6.2825 -6.0789 -5.7147 -3.3695 -8.9378 -16.7789 -19.5464 -19.7736 3.0519 6.0787 1.0322 -0.6589 -1.6175 -2.1104 -1.9403 -1.7062 -0.9516 0.4810 -1.6590 -17.7143 6.6516 7.1945 6.2582 4.9369 3.5619 3.6748 2.0770 0.4189 -2.1975 -3.8860 -3.9613 -3.8644 -5.3511 -7.2609 -7.6175 -7.1661 -5.7976 -4.5218 -1.9308 1.4480 5.0915 4.7364 4.6719 3.6113 3.3328 2.0626 -1.5330 -2.8815 -1.7589 6.4246 5.9081 6.0283 5.5237 2.9559 -0.7124 -3.2659 -4.6501 -4.6857 -3.8757 -9.6509 -8.7268 12.9326 13.6158 13.6027 13.5734 13.4039 13.8175 13.8659 12.7258 9.7632 6.3103 2.7321 -0.5733 -3.8746 -7.0860 -9.6450 -10.7832 -10.3935 -8.3777 -4.8027 -1.1394 -0.1906 -2.9954 -5.6539 -5.3461 -4.3930 -8.2738 -13.2039 -15.2593 -14.3519 12.0896 7.9934 4.3314 2.9333 -0.2922 -3.9740 -5.2453 -5.1292 -4.2466 -2.5427 -5.9177 -24.1706 3.3111 5.7192 7.6731 8.6538 8.7816 9.2367 10.2956 10.7802 8.7371 5.9609 4.1644 2.5137 0.7897 -0.7157 -1.6711 -1.2978 -0.9879 -0.5737 -1.7029 -3.8746 -6.2120 -6.9054 -7.5755 -8.5853 -8.6630 -8.4875 -9.3126 -9.4585 -10.5934 1.9845 0.8889 0.2842 -0.9179 -1.4593 -0.6826 -0.6777 -0.0392 0.8979 1.4414 -1.7202 -13.5455 14.2205 14.4641 13.7854 13.0598 13.2991 14.8419 16.1502 16.5712 15.2079 11.8669 7.9213 4.5068 2.1444 1.2542 2.5468 4.6558 4.3109 0.6255 -5.1870 -9.7699 -11.4109 -10.1544 -8.4757 -11.5168 -17.9764 -22.4698 -24.8959 -25.1837 -24.3922 1.4299 0.4130 0.0191 -0.2559 0.4822 -0.2917 -0.0644 0.3763 0.0596 -0.3088 -1.8594 -27.0927 -2.8758 15.2556 21.0124 15.2890 2.1565 2.6722 2.9230 4.3949 0.4460 -0.9254 1.7753 1.3640 0.4328 -3.9146 -4.3331 -4.1112 -3.8881 -5.2841 -2.7539 -1.9759 -0.4884 -4.8231 -3.5586 -3.5100 -2.3689 -4.3495 -5.1658 -7.1944 -6.2007 -2.4750 -1.0212 2.7562 1.1019 2.0472 2.2292 2.3273 2.8928 -1.1663 -0.0381 -8.6541 -3.0398 18.8285 20.4979 21.7173 23.1703 24.2063 23.5814 21.0896 17.9453 15.6430 14.4782 13.1430 9.6223 4.1452 -1.1378 -5.0589 -7.8909 -10.5229 -13.0157 -15.3961 -16.7612 -17.5151 -17.5485 -17.4267 -17.8018 -18.7396 -19.9281 -20.0342 -16.8630 -12.4276 8.6336 4.4955 1.3996 -0.2307 -1.5565 -2.0497 -2.3230 -2.1696 -2.1650 -1.6041 -2.4300 -20.8387 16.1197 16.1677 13.0422 10.1574 7.4820 4.6731 0.9828 -1.4519 -2.9998 -3.7625 -4.0148 -4.3809 -5.3027 -6.4756 -7.1149 -7.3309 -7.7257 -6.9484 -6.1237 -4.9958 -3.5063 -1.5803 0.7658 1.7860 3.3939 3.3871 0.1351 -1.5829 -2.7956 3.7721 2.8811 2.6980 2.1046 1.6496 1.6430 0.3146 -1.1205 -1.2974 -2.3187 -10.3263 -6.3444 33.2222 30.5262 25.0634 19.0582 13.7573 9.6221 5.3575 1.7730 -0.2567 -0.9304 -1.7632 -2.8645 -3.7480 -4.1938 -4.1659 -4.0416 -4.7502 -6.0605 -7.9728 -8.5077 -8.1116 -7.8726 -8.1931 -9.0767 -10.5826 -11.3078 -11.2136 -11.3407 -11.4260 0.8122 0.4880 0.3714 -0.1432 -0.1971 -0.2624 -0.2558 -0.0613 0.0880 0.0913 -0.9310 -13.3990 23.3644 24.0993 25.3117 28.0710 27.1967 22.1136 17.5071 15.1758 14.3350 11.1400 4.3238 -3.0833 -8.0197 -10.4359 -12.1778 -13.4366 -14.3352 -15.1818 -14.9458 -14.4610 -13.8720 -11.3742 -10.2486 -10.0143 -11.6705 -10.3545 -10.9010 -13.4149 -14.7113 -0.0476 -0.0526 0.7467 1.6512 0.2779 1.1979 -0.1397 -0.0153 -0.2711 -0.9085 -2.4389 -16.2622 14.4881 12.3355 8.8723 6.0773 3.3394 2.1115 0.8125 0.2147 0.0560 -0.0137 -0.2214 -0.6427 -0.7267 -1.5641 -2.3561 -2.2954 -2.4665 -2.8622 -3.0085 -3.0425 -3.2164 -3.5410 -3.2388 -3.2830 -3.0079 -3.0781 -3.2229 -3.1753 -3.3443 0.6505 0.0498 -0.1331 -1.1260 -0.6639 -0.2628 -0.2090 0.4291 0.7281 1.5146 -0.9773 -5.3512 2.0621 1.4120 0.1443 -0.6564 0.5194 4.1270 7.3667 9.7238 11.5833 11.3655 7.7646 4.2923 2.5041 4.7009 7.5418 8.5568 4.4916 -1.2294 -4.3559 -5.7809 -5.5627 -3.7357 -4.6814 -7.6996 -10.0830 -11.5284 -10.0528 -10.0753 -12.7146 1.7722 -0.0816 -0.3269 0.6524 2.3093 3.6584 1.5222 0.4498 -1.3345 -1.6645 -6.9568 -19.6830 25.4648 24.2073 21.4183 18.0385 14.5373 11.3133 7.9671 5.3323 3.4067 2.4589 2.3509 1.9998 0.7508 -0.6518 -2.8305 -5.4658 -7.9173 -10.2576 -11.4401 -11.9089 -12.2924 -10.4402 -8.9248 -9.3520 -7.9692 -5.3374 -6.5850 -12.1411 -15.7319 4.8043 4.3614 2.1470 0.1372 -1.2225 -1.5199 -1.6170 -1.6460 -1.4994 -1.0956 -2.8494 -19.5630 10.4477 9.9103 9.3167 9.9753 13.0396 16.4188 16.2006 11.2422 5.4920 2.0198 -0.5193 -2.2228 -3.7621 -2.3955 0.6073 4.9323 5.7164 1.9080 -3.8530 -5.3428 -5.1549 -4.4637 -8.4757 -12.2439 -13.8905 -14.2780 -11.6814 -12.1684 -16.7752 0.6951 -0.4140 -0.2150 -0.4177 -0.1652 2.0344 0.4827 0.3849 0.6488 0.2765 -3.3105 -20.9730 11.6894 11.5653 11.7767 13.6634 16.8841 16.8356 11.6070 5.3075 0.2573 -3.0445 -5.5117 -6.5939 -7.5658 -6.4151 -2.9369 2.5810 5.6008 0.1628 -5.9773 -6.9647 -6.5125 -3.3783 -4.0081 -8.2854 -9.9143 -9.2857 -6.2357 -5.9007 -9.4002 10.4552 5.0807 0.6307 -1.3477 -0.5399 -0.5873 -1.8383 -1.7997 -2.0570 -2.8514 -5.1454 -22.0833 21.2161 21.5655 20.7743 20.2657 20.4741 20.8267 19.9547 17.4467 13.8013 9.3303 4.0053 -0.5555 -4.3050 -6.2844 -5.9649 -3.2920 -0.3039 -0.5084 -4.2075 -9.2735 -12.3913 -12.0554 -11.2851 -13.2289 -17.6674 -21.0646 -22.6765 -22.3615 -22.2348 0.6227 0.2943 0.3156 -0.0153 -0.3658 -0.4357 -0.0101 0.1177 0.2549 0.3115 -1.0897 -21.8725 -5.8017 -5.8902 -5.5846 -4.7620 -4.4881 -3.9174 -4.2830 -5.1666 -6.3677 -6.8882 -6.9995 -6.8752 -7.3225 -8.7191 -9.5016 -8.7540 -7.1882 -3.8658 -0.5597 2.3798 1.4716 2.7987 5.8548 11.0383 14.5525 16.8697 19.0261 18.9539 19.9898 7.1234 3.7053 2.7491 2.3946 1.8894 -0.2885 -0.8988 -0.3606 -0.2356 -2.8434 -13.2350 10.7649 29.8544 29.8362 28.5318 26.5320 23.6452 19.3290 14.5539 10.2840 6.4573 3.1100 0.1941 -2.1012 -5.6884 -9.9636 -12.8520 -13.5951 -13.0431 -13.2967 -13.3194 -12.2195 -9.3679 -5.0767 -1.3008 -4.8112 -12.0561 -15.7608 -16.8756 -16.0321 -14.9678 2.1806 0.2835 -0.2562 -0.3860 -0.6570 -0.1415 -0.2170 -0.2013 0.4029 0.2038 -1.2117 -16.0450 8.0644 8.0499 7.1416 6.5893 5.5981 4.3993 3.4826 2.7143 2.8318 2.3580 2.4915 1.9093 -0.3049 -1.4506 -1.2401 -2.3404 -1.2673 -2.2808 -2.4575 -3.4995 -3.9318 -5.0149 -5.3296 -3.8867 -4.4533 -4.5744 -4.0511 -4.8087 -4.7385 -9.0466 -10.6663 -9.9253 -6.6473 -2.6332 0.9689 4.1205 6.3340 8.2517 9.8032 9.4405 1.9804 9.5207 9.0443 7.8069 7.3329 7.3094 8.0083 9.9299 12.4518 13.0618 11.3574 7.8442 3.8017 -0.1018 -3.9012 -6.5018 -7.0985 -5.6241 -2.4385 1.2347 1.1544 -2.3784 -5.3165 -6.5624 -5.5597 -5.2937 -9.9992 -14.6755 -17.3896 -17.0176 9.0473 5.4785 3.0998 0.8918 -1.3974 -3.6623 -3.5233 -2.5034 -1.0502 -1.2373 -5.1436 -25.0416 -5.0642 -5.1796 -4.6005 -5.1034 -4.7822 -2.6885 -1.4531 -1.7854 -2.0629 -2.7192 -4.4520 -3.9290 -3.4335 -4.7675 -6.1288 -7.0944 -6.6330 -5.1475 -3.2790 1.1530 2.3119 6.3456 6.1984 9.1249 10.9774 11.5921 12.7428 11.4754 8.3823 -9.7326 -13.5256 -14.6472 -7.0881 -1.2233 -0.9864 6.1958 7.2048 10.0661 12.3652 11.3714 19.0050 6.7705 6.0726 4.7668 4.7287 5.5025 5.2104 3.6077 1.7454 0.3953 -0.3480 -0.7236 -1.1397 -2.5075 -2.4282 -2.0351 -1.5354 -0.9783 -1.1816 -2.7792 -3.3855 -3.4229 -4.1416 -3.3236 -3.6243 -3.9451 -2.9592 -1.2582 1.2767 1.6406 9.6325 11.3324 9.8681 5.5229 2.3829 -0.2309 -2.8115 -5.0973 -6.3038 -7.6243 -16.6711 -7.8822 18.7275 18.7602 15.1086 10.7098 6.9559 5.0306 2.7456 0.2771 -1.9055 -2.8108 -2.7768 -3.7007 -4.2089 -5.7436 -6.2204 -5.8236 -4.9148 -3.2075 -2.8848 -3.1210 -2.7428 -4.5923 -3.8926 -3.7191 -2.9927 -3.2069 -3.9982 -3.8130 -2.0396 -6.3039 -3.8256 -2.1569 0.2409 3.3218 4.6289 5.0475 3.5987 1.8219 1.8959 -8.2692 2.9296 19.0392 17.4654 14.9352 12.2077 10.4970 11.1852 10.4778 8.4045 4.8902 1.7924 -0.8760 -4.1317 -6.0495 -6.1897 -5.0150 -1.4390 2.3264 1.7138 -1.0924 -3.4019 -4.3020 -3.5935 -2.4494 -6.4110 -11.3840 -13.3423 -14.0158 -14.8337 -16.4080 5.2170 2.0001 0.7957 -0.6171 -0.8902 -1.2003 -1.1541 -0.6336 -0.6395 -0.6616 -2.2164 -21.3670 10.4791 9.9395 9.0805 9.1584 10.6784 12.7374 14.6952 15.0752 12.8090 9.8648 7.8350 7.5607 9.0798 10.1615 7.6961 2.2376 -2.6758 -6.5418 -9.4708 -10.5541 -11.1366 -10.0882 -12.2916 -15.8392 -17.7528 -18.3635 -16.7645 -14.5122 -13.0970 9.0915 6.6105 3.9354 -0.3391 -3.1013 -3.4367 -2.5040 -2.1417 -1.8401 -1.7766 -4.4978 -24.3538 2.0821 3.1287 4.0753 5.4302 5.7802 6.6537 7.2130 6.6951 4.5960 2.8045 2.4487 1.8103 0.4415 -1.7609 -3.0165 -2.8462 0.1898 3.3827 4.3190 1.6896 -2.8185 -5.5524 -7.0484 -7.5484 -6.1090 -5.9753 -4.7225 -7.1165 -8.2257 3.6680 2.9008 1.3962 0.7099 1.6828 1.2318 -0.5067 -1.7458 -1.5988 -1.6313 -6.1069 -11.5601 1.1497 1.3200 1.2707 2.0082 2.0004 1.8044 1.1270 -0.2158 -1.8933 -2.4634 -3.4218 -4.7937 -4.7100 -4.6869 -4.1693 -4.4056 -4.9100 -4.6525 -4.3514 -5.3638 -6.5281 -5.1288 -3.6008 -0.1517 2.6878 7.2240 11.7457 15.7449 17.3640 6.9238 4.8734 3.1279 0.9919 0.1466 -0.3872 -0.1158 -0.4139 -1.8167 -1.7305 -11.5996 8.8903 9.7978 8.0725 4.8934 3.5284 2.7083 3.7014 4.0313 4.6282 3.9292 3.2742 2.0518 0.7154 -1.2921 -1.9667 -1.5639 -1.3033 -0.5627 -0.4778 -0.7607 -2.2442 -3.8987 -4.4781 -4.2520 -4.6421 -4.1577 -4.5224 -4.4218 -5.2138 -5.5740 0.7391 -0.0616 -0.3222 0.1802 -0.1541 -0.5544 -0.0900 0.4549 0.4530 0.6154 -1.2603 -6.8376 11.0218 10.5069 8.2672 5.9543 3.9578 3.9631 2.6698 1.5498 0.3926 0.3180 0.1925 0.7238 -0.6282 -2.8873 -3.5603 -4.0488 -2.8863 0.6168 3.2951 2.8007 -0.0448 -2.6501 -4.7672 -5.2381 -5.1827 -6.3352 -6.8157 -6.0030 -5.1825 5.7059 6.0081 5.5317 5.2309 1.9392 -0.7052 -2.9950 -3.4059 -4.2816 -4.2198 -8.8083 -12.1555 30.7220 30.4352 28.7635 26.8276 23.0072 17.1944 10.8428 5.1151 0.6042 -2.9361 -6.0945 -8.6787 -10.4457 -11.4951 -12.7062 -13.0113 -13.2579 -13.2793 -13.0584 -12.0898 -10.8056 -8.6431 -7.2774 -8.7256 -10.1911 -7.2394 -2.5936 -0.3436 -0.6396 5.5942 2.8807 1.9726 1.6097 0.9653 0.3476 -0.8863 -1.5202 -2.1940 -2.7497 -6.0197 -9.7496 11.0431 11.2874 10.7540 9.9197 8.6647 8.6958 8.6183 9.9875 10.0470 8.3112 7.2898 5.9718 4.5865 2.1034 -0.7735 -2.4122 -3.3246 -3.2844 -4.4966 -6.4114 -8.1119 -10.1936 -10.6919 -10.5371 -10.9794 -10.4475 -10.1218 -12.4300 -13.0643 -8.4396 -8.4986 -5.5124 -3.9624 -1.0920 -0.4675 2.3907 5.5877 7.2456 8.0230 4.7255 -8.4177 12.7397 11.0783 9.2586 6.5612 4.1628 2.3704 1.9316 1.0515 -1.0350 -1.2451 -1.9616 -3.0021 -4.2825 -5.4905 -5.6435 -5.6210 -6.6154 -6.2022 -5.0535 -4.7672 -3.5637 -2.1688 -1.0431 0.1656 0.9547 1.6420 2.0989 1.7796 1.9001 -9.9315 -12.1933 -12.6352 -7.0282 -1.8872 1.8245 4.5894 7.3621 9.3193 10.4805 10.0998 9.3097 15.1389 17.4197 18.3393 18.5836 17.5461 15.0277 11.1098 6.8515 2.5234 -0.3132 -2.9049 -4.0328 -5.4435 -6.6072 -7.1258 -7.1761 -6.4666 -4.5330 -0.7343 1.2614 -1.3012 -6.3734 -11.7238 -12.6667 -10.4556 -6.4641 -7.1625 -10.7517 -11.5648 8.7437 7.8620 8.4762 9.1692 5.7736 -1.6953 -4.9554 -7.2071 -8.1718 -8.3657 -9.6294 -20.1832 18.7350 18.8415 17.7238 16.7790 16.8597 17.9978 19.1477 18.5999 16.1427 12.4936 8.6595 5.9831 4.9948 5.7667 5.5880 1.9462 -3.6217 -9.0782 -13.3577 -15.7337 -14.0069 -9.9754 -8.9549 -15.6483 -21.5520 -23.5522 -23.6830 -23.3131 -23.7818 0.3454 -0.0420 -0.0575 0.3156 0.1128 -0.3066 -0.4222 -0.0008 0.1796 0.4486 -0.5731 -24.7214 16.6836 16.0011 14.2761 12.3355 8.6965 4.5639 -0.4844 -4.1980 -4.7650 -4.1296 -4.0155 -2.9656 -1.7970 0.4680 1.9673 2.9994 4.5000 3.5757 1.1168 -0.5475 -1.7944 -2.5137 -4.8674 -5.5801 -7.1945 -9.0212 -11.1995 -10.8822 -11.2279 0.2823 -1.5628 -3.0013 -1.8679 -2.2856 -1.4908 0.7971 1.9446 3.1469 4.5357 -0.4981 -12.2633 19.0033 19.2025 17.7777 15.3002 12.6650 9.5501 5.6575 1.8616 -1.6276 -3.6035 -5.2976 -7.4545 -9.9218 -11.0550 -12.1614 -12.3330 -11.7581 -10.8363 -9.3486 -5.9142 -0.9878 3.2625 3.7572 3.2186 3.6513 0.3807 -3.4386 -5.0746 -4.4758 13.3555 8.9978 5.4532 3.6182 -1.0628 -3.2096 -4.4349 -5.7492 -5.1348 -3.5353 -8.2981 -16.8230 18.4297 15.9331 11.2397 7.8129 5.5380 4.6599 3.1356 2.3935 1.0751 1.0970 0.6480 -0.2160 -2.0789 -2.6802 -3.0441 -2.3536 -0.3163 1.8936 2.7495 0.5565 -3.1908 -5.3708 -7.0075 -7.5402 -7.2433 -8.2848 -9.2167 -9.4201 -9.1988 2.6256 2.0510 1.3148 0.5355 0.0630 -0.6332 -0.4758 -0.6747 -0.4639 -0.1424 -4.2000 -12.3908 7.3097 7.7813 7.8527 7.8546 8.1128 8.9506 10.6384 12.8363 14.6251 15.4901 15.1366 13.4976 11.9988 11.7295 11.3616 8.4914 2.9159 -3.6536 -9.4800 -13.7350 -17.1927 -18.7882 -17.6248 -13.8464 -10.5674 -13.8181 -18.1434 -20.8743 -18.8591 11.3245 8.7172 3.5788 -0.9416 -1.5672 -2.3545 -2.3414 -3.3449 -3.9610 -3.8438 -5.2662 -25.7869 -1.6196 -1.5619 -1.3693 -0.0041 0.6985 1.0211 -0.2712 -1.1631 -2.5701 -3.8567 -4.4749 -4.1959 -4.6373 -5.4392 -6.6320 -6.8724 -5.3058 -4.2328 -1.9447 -0.2533 0.7399 0.5052 2.5635 6.5244 9.7417 10.9027 8.3775 5.7836 9.5462 -0.9205 1.3066 3.5975 5.1438 4.6369 2.9620 -0.2142 1.2689 -0.0412 -3.1056 -14.6343 6.0567 14.2155 14.8572 14.6396 15.6515 18.4554 21.3207 21.2950 16.5870 10.7997 7.0073 4.3743 2.9850 1.5061 3.2006 -0.1576 -6.6249 -11.7054 -14.9389 -16.7542 -15.9586 -13.4133 -9.9384 -8.4859 -12.4268 -14.9176 -16.0461 -14.1275 -6.4255 -4.9741 5.5063 0.3654 3.5212 7.9053 3.8839 -1.5841 -4.1647 -4.5145 -3.5450 -1.9892 -5.3846 -20.3075 9.1018 8.8735 7.5282 6.8650 7.5449 8.2635 6.4844 3.4564 0.6817 -1.5163 -2.2174 -2.8199 -3.2880 -2.4514 -0.1202 2.7625 4.3459 5.3239 3.3628 -0.1718 -3.0498 -4.4866 -5.5655 -6.7973 -7.4857 -9.1801 -9.3929 -8.4690 -7.5827 4.3844 4.6419 5.2823 3.5134 1.9965 0.2705 -0.4359 -2.5064 -3.1275 -3.8266 -10.1926 -14.0516 22.6352 23.6582 24.5865 26.3890 26.4341 23.2091 17.7722 13.5350 11.1208 9.9800 8.2759 4.0348 -1.7705 -7.8105 -12.5187 -14.9802 -16.3623 -17.3820 -17.7578 -17.6490 -15.5778 -12.8018 -11.4459 -14.3128 -16.3520 -15.2082 -10.9596 -5.2865 -3.4553 7.6752 3.5999 2.0739 1.1336 -0.6895 -1.5345 -2.4580 -2.0781 -1.8815 -2.5118 -3.3292 -17.5176 1.8750 1.8662 1.4311 0.9127 -0.1302 -0.3760 -0.5434 -0.2220 1.2349 3.6442 6.7696 8.9037 8.5438 6.1520 3.7222 3.0903 4.4232 5.4581 6.2833 3.7218 -0.7522 -4.4112 -6.2164 -5.4842 -3.9166 -5.9630 -10.1542 -15.3434 -14.5193 13.3682 11.1151 8.2449 5.7945 3.1501 -1.3709 -6.5216 -8.3030 -8.2964 -7.6878 -9.4930 -25.2906 23.8996 24.1043 23.8658 23.6680 21.5342 15.4333 6.3905 -1.1158 -4.6322 -5.8867 -6.7301 -7.6112 -8.9183 -10.1939 -10.8837 -8.9691 -3.9727 3.1911 5.9335 0.9841 -5.6662 -8.2167 -5.1918 -3.2488 -11.7754 -15.7999 -16.0905 -9.0460 -5.0555 9.1930 1.3362 -0.8279 -1.4971 -1.9949 -1.9954 -1.0397 -0.8391 0.6715 0.8150 -3.8216 -17.2628 2.1343 3.1072 3.1035 2.4651 1.0770 2.5793 2.6348 1.2152 -0.5649 -2.3867 -0.6920 0.8781 1.3547 -0.8951 -2.8053 -3.6858 -2.1707 1.9580 5.8746 8.3664 5.4534 -0.2992 -2.5199 -5.0547 -5.4956 -3.5790 -4.0494 -3.2599 -4.7435 6.3175 4.3640 4.2936 4.0751 4.2436 2.1309 -2.1883 -4.5757 -4.9307 -4.5770 -9.1531 -11.6403 24.1543 25.3380 25.2642 24.2890 21.5268 15.8776 8.7349 1.8963 -3.3513 -6.9022 -9.3648 -10.8355 -12.1831 -12.5211 -12.8565 -12.9812 -11.8854 -11.1641 -9.2860 -5.4976 -0.9263 3.4028 4.7240 3.7754 2.3125 -4.4255 -11.3777 -13.5943 -12.1432 6.6341 8.4368 8.7627 5.8486 0.7153 -3.2965 -5.0124 -5.0678 -5.2114 -4.9009 -6.9086 -15.7320 33.3595 30.8257 27.3940 23.1538 18.5480 12.9357 7.6481 4.1721 3.2632 3.4360 3.9739 4.0188 3.3042 2.7990 2.1257 0.5313 -1.9459 -5.6161 -9.5935 -12.9587 -14.8978 -16.0532 -16.3206 -16.6767 -16.1054 -16.6153 -17.9698 -18.6045 -18.1317 1.5134 0.8260 -0.0981 -0.1095 -0.5148 -0.5502 -0.3922 -0.2658 -0.1093 0.4252 -0.7246 -17.8748 1.6216 0.9985 0.7656 2.7126 3.5846 4.9869 4.3162 4.0409 2.9716 0.7825 0.4168 0.2302 -0.1647 -1.1633 -1.3128 -0.8806 -0.1106 -0.3406 -2.2081 -3.7852 -4.1417 -2.9134 -2.1959 -1.8077 -1.5502 -2.2082 -1.4934 -0.6950 -0.4569 -7.0535 -3.1321 1.0676 0.9741 1.5466 3.3522 3.6041 3.9392 1.3441 1.8148 -7.4571 2.7151 15.5981 19.5861 21.1052 20.7702 17.9972 13.4362 8.4295 3.6958 -0.0748 -3.8419 -6.8494 -8.7952 -9.5977 -10.9677 -13.2231 -11.6825 -9.6560 -6.9659 -3.1059 0.6508 -2.2959 -4.9921 -6.5950 -5.9531 -3.2910 -4.7702 -3.9870 -1.7940 -2.8308 -2.5000 -4.6538 -0.7258 4.7330 8.3235 5.3781 -0.4169 -0.0664 0.8379 -2.0639 -8.8455 -9.7704 23.7863 25.9404 25.3891 21.9998 16.2579 9.6322 3.4737 -1.7621 -6.1163 -9.2774 -11.9071 -13.8355 -14.8079 -15.2219 -15.4960 -14.7850 -13.1085 -11.2726 -7.3218 -0.9826 6.1996 7.8610 5.9579 4.5346 0.9527 -4.2620 -5.8570 -3.1595 -2.8119 8.3142 3.6630 2.1376 0.0170 -1.3069 -1.1574 -2.2597 -2.0274 -1.1056 -1.2385 -5.0363 -15.6945 20.3765 22.4983 23.2522 22.4935 18.6192 11.9388 4.7215 -2.2228 -6.9248 -8.7614 -9.4361 -10.4167 -12.0447 -14.3511 -15.7581 -15.0919 -13.4051 -11.6659 -8.9412 -4.6688 1.6099 5.0989 2.6335 0.0407 0.1956 0.6445 -1.3875 -1.9917 2.9449 22.4551 18.5214 5.2727 6.1503 -0.1446 -8.9143 -8.7222 -9.1792 -9.3487 -7.5459 -8.5445 -16.1222 11.1076 12.0485 11.0550 10.5716 11.0874 11.6622 9.9206 4.9761 0.3715 -2.6436 -4.8249 -9.2210 -10.4786 -11.6233 -11.8990 -10.3869 -9.3054 -5.4126 -0.0922 1.7786 1.9733 2.3237 2.4041 2.1518 -0.8245 -3.1849 -3.9744 -5.1713 -4.3894 1.3910 -2.4885 -4.1076 -3.8565 -1.6768 1.3241 2.8087 3.8092 4.3728 3.2455 -4.8218 -10.0894 -0.2633 -1.4544 -2.4182 -3.0882 -3.5531 -4.3925 -6.6002 -8.5372 -9.6704 -9.8444 -10.3936 -9.9956 -8.9278 -7.5639 -5.9124 -1.9933 2.8919 6.3172 5.9440 4.7295 5.0606 5.2459 8.2338 8.7234 10.0863 10.2509 9.9392 9.0613 8.1243 1.1238 0.9922 1.1101 1.8146 2.6706 2.2247 1.2363 1.1432 -0.1842 -0.9655 -11.1660 5.3441 6.9294 5.0117 2.6132 2.2629 4.5422 9.5764 14.7837 15.8748 11.9468 7.4679 4.5656 4.3597 5.8184 8.6426 5.8541 -0.7924 -5.2311 -8.0360 -9.7347 -8.9000 -8.2834 -6.3029 -5.0720 -7.3093 -8.1284 -8.3417 -7.7152 -10.4763 -15.9260 4.7158 2.3141 1.3121 1.3526 1.5962 -0.3417 -1.3860 -1.6767 -1.7760 -1.6516 -4.4588 -23.6471 20.5611 21.4990 21.6805 21.4105 19.9564 16.4129 11.0090 4.5495 -0.7043 -3.4671 -4.6121 -5.3523 -6.5924 -7.7881 -8.2287 -7.0226 -4.0117 -0.4161 1.7880 1.3595 -1.3403 -3.8721 -3.9650 -4.9622 -8.7031 -14.8711 -18.9891 -20.1269 -15.2011 9.5765 9.6090 6.3797 4.6167 -0.3327 -3.7082 -4.7974 -5.1837 -5.3397 -4.8761 -5.9441 -20.3305 28.9011 29.1365 27.4009 24.4914 20.2583 14.7607 8.7681 4.0956 2.2405 2.3157 3.7552 5.6036 6.0319 3.0401 -2.3373 -6.5825 -9.1181 -11.5190 -13.0607 -13.4398 -13.0287 -11.6613 -11.3947 -12.1649 -13.2592 -14.7276 -15.9052 -16.4327 -16.1678 0.8050 0.5113 0.4244 -0.0076 -0.2346 -0.4785 -0.2332 -0.0629 -0.0095 0.3865 -1.1010 -17.2993 14.0295 13.9502 13.6228 13.9615 14.5159 15.7344 16.5458 16.6583 15.8760 14.9767 14.5095 14.6169 14.1664 10.4532 3.0906 -3.2947 -6.9042 -10.1425 -12.3464 -13.3132 -12.9262 -11.8067 -11.4974 -15.4253 -20.2544 -22.9691 -22.5572 -21.6390 -21.6312 2.0180 1.7654 2.8940 1.2851 1.2694 -0.7044 -1.7554 -1.1719 -1.4637 -0.7534 -3.3831 -24.9877 14.3136 12.8038 10.7600 9.9164 8.0164 4.8641 0.3656 -1.3980 -2.3438 -1.8387 -0.9641 -0.4343 -1.8428 -3.9974 -5.5735 -6.9534 -5.2614 -1.8837 -0.6653 -2.2186 -4.1385 -7.9205 -4.8743 -0.0041 -1.6958 -8.8891 -5.9515 2.5199 5.2890 -0.4214 3.3144 7.7656 5.2578 2.3868 4.6757 -4.9484 1.0462 -11.2993 2.2105 -9.9881 -1.0110 15.2498 16.8589 17.4454 17.3595 15.7318 12.0402 6.8196 1.9584 -1.8950 -4.1206 -5.7554 -6.5663 -7.4096 -8.0543 -8.0905 -5.7704 -1.8905 1.4927 2.8765 0.6930 -2.5985 -3.9517 -2.8026 -3.1264 -6.0718 -8.7896 -10.8740 -11.1991 -9.5592 1.0250 2.5513 3.7885 4.2634 3.9729 3.4142 0.3627 -0.0631 -2.7607 -5.0823 -11.4719 -15.3324 19.7099 20.3722 20.4412 20.5912 20.9609 21.5266 21.3284 19.9806 17.9191 15.7219 13.9555 12.9719 11.7125 7.8879 1.8651 -4.0484 -8.3840 -12.3338 -16.2678 -19.1476 -20.5188 -20.7942 -19.7332 -19.5087 -20.0131 -21.1706 -22.0267 -21.8280 -21.1700 2.6261 1.4238 0.5675 0.1586 -0.3335 -0.7530 -0.6950 -0.8150 -0.6504 -0.3559 -1.1732 -23.1129 1.8825 1.5975 0.7650 0.8382 1.0970 2.3121 1.7334 1.3645 1.6653 2.5832 3.6249 3.8831 3.7892 3.6596 2.8817 2.2713 1.6918 1.3161 0.6652 0.0342 -2.3559 -3.5644 -4.4403 -3.4709 -4.1781 -4.9507 -5.6105 -5.7659 -5.3190 -4.6785 -6.2814 -4.4170 -3.7355 -2.9146 -0.6060 2.7131 5.1159 5.7786 5.8363 3.1891 -2.7682 20.9204 18.3266 13.9646 10.3450 7.1213 4.7949 2.3975 0.3252 -0.8377 -1.2032 -1.3516 -1.2322 -1.3903 -2.0806 -3.2115 -3.8099 -3.7972 -3.8008 -4.4221 -4.5737 -4.8822 -4.8118 -5.0104 -5.0121 -4.8009 -5.1006 -5.4825 -5.7785 -5.6058 0.0304 0.0212 -0.8099 -1.0990 -0.8995 -1.1798 -0.0605 0.4825 1.2857 1.8683 0.3606 -7.2005 5.2951 4.6853 3.2703 1.4395 -0.0679 -1.5464 -4.0205 -5.2710 -6.2684 -7.4709 -7.5305 -6.6769 -5.9752 -5.0052 -2.1987 1.0365 4.3659 5.4876 4.1372 2.9011 2.0765 1.4275 2.2620 2.4970 2.1857 1.8463 1.4213 2.7180 2.9788 2.6542 4.1837 4.7936 4.0109 4.2119 2.0348 0.3166 -0.4254 -3.1810 -4.8204 -13.7789 -1.2474 10.5896 10.0518 9.5208 11.5878 14.9277 14.1122 8.4894 2.1708 -2.5335 -5.3221 -7.6712 -9.9945 -11.5742 -11.8957 -12.0296 -10.9304 -8.1129 -3.4826 2.2855 6.7275 2.7163 2.8417 3.8437 1.4929 -1.9462 -3.7791 -2.6804 -3.2326 -6.1727 14.4024 9.7441 3.2594 -2.4965 -1.6315 -2.6240 -3.3409 -3.9874 -3.0303 -4.0633 -6.2319 -23.1513 12.3877 13.4337 14.0526 15.3719 16.7230 17.0301 15.6932 13.1714 10.9923 10.1200 9.9867 8.1477 4.6596 0.5220 -3.1428 -6.2242 -8.4106 -10.5360 -11.5260 -13.2012 -11.1252 -8.8838 -9.7283 -14.6481 -19.0045 -16.0374 -8.1446 -9.6615 -12.0177 -3.6514 -5.1768 -3.3816 -0.8285 1.8774 4.0666 6.6919 6.7739 0.8553 -0.3990 -6.8277 -19.5820 7.5130 6.3917 4.4090 3.2713 2.4681 1.4505 -0.7914 -2.2729 -2.7937 -1.4184 0.5941 1.7683 1.7245 2.1691 0.8665 0.4093 0.8033 3.3147 3.5683 -0.9897 -3.9384 -5.0587 -4.1462 -2.0529 -1.2512 -5.3164 -7.9226 -1.6494 -1.1198 3.1545 4.1780 6.4164 4.4137 1.4380 1.5613 -8.5713 -1.5266 -2.1776 0.8939 -9.7803 -10.1082 -0.4172 3.9814 -2.5335 4.7982 6.2404 9.5386 1.7280 -2.6347 7.9832 -10.0263 -1.0230 2.1623 7.0028 7.7748 15.0971 5.6506 5.2734 4.3666 -5.3182 -6.5883 -8.8498 1.1908 5.5230 -1.1525 -3.9009 -23.1871 0.2212 -1.9086 -20.9924 7.1776 8.9477 9.4213 0.6845 6.7206 6.8189 0.9603 -10.6166 0.5146 -13.1811 -17.4476 -7.6137 23.3780 25.0892 26.2191 26.9457 24.6201 18.5566 11.6556 4.9788 0.6249 -3.7400 -8.5904 -12.3926 -14.7270 -15.9297 -15.7620 -14.5514 -11.9079 -8.2268 -0.1798 5.9532 4.5772 3.1484 0.2938 -5.5237 -12.1896 -14.8172 -14.8798 -12.4827 -10.1404 3.2764 -1.6281 -2.1589 -1.3730 -0.4182 0.5715 -0.2811 1.7069 1.5263 1.5414 -2.7632 -16.8809 26.2968 26.9773 27.1574 27.9417 26.5696 21.5857 14.8761 8.6361 4.1683 0.7533 -1.9295 -2.5208 -0.0812 2.2250 0.9523 -3.4957 -8.2811 -11.7647 -14.3663 -15.2907 -14.5936 -12.5687 -12.9612 -14.8338 -16.5565 -16.2573 -15.0745 -13.8830 -13.6813 1.4448 -0.0533 -0.0920 -0.0314 -0.2973 0.5069 -0.2172 -0.1011 -0.0306 -0.0946 -1.0343 -16.8789 15.2599 15.8558 16.5112 17.1923 16.9184 12.7155 6.7767 1.6437 -3.4349 -7.8714 -10.5492 -12.4016 -14.2321 -14.9460 -15.0099 -14.2604 -12.3944 -9.9130 -6.0566 3.4214 4.0393 0.9850 0.9812 5.2322 5.1852 2.0753 2.8816 0.5603 -7.1654 13.9261 10.8083 1.8284 -2.6412 -3.5133 -2.9693 -2.9300 -3.3031 -3.3193 -3.2617 -4.6248 -21.7463 17.6998 15.3407 11.6586 7.2522 2.9030 1.1270 0.2870 0.3993 0.1515 0.9131 1.2039 0.8350 0.6170 -0.2241 -0.4502 -0.7194 -0.2872 -1.3096 -2.7798 -3.9323 -4.0148 -5.4557 -5.6772 -5.5259 -5.6333 -6.0967 -5.8797 -6.4353 -5.9666 -4.2226 -4.1479 -4.5146 -4.3292 -2.7654 -0.8517 1.0845 2.9370 4.9613 6.0166 5.8320 -4.0046 6.7958 6.6180 6.8562 7.7048 9.3200 10.2947 9.2183 6.4762 2.7485 -0.8988 -3.4430 -4.6190 -6.3031 -8.1363 -8.6511 -7.2066 -4.4822 -1.4434 2.6598 5.1827 2.6866 -0.9832 -2.3089 -1.3324 -0.7075 -3.4975 -7.3602 -8.3172 -6.8713 15.6013 14.5952 12.4864 10.1694 6.7654 -5.1118 -14.7309 -11.9476 -9.2847 -6.6284 -11.9143 -21.6331 14.4296 12.7223 10.1123 8.5522 7.7405 6.5977 2.6762 -1.5488 -4.1290 -3.7931 -3.0890 -3.1619 -4.0464 -5.1734 -7.7679 -6.3552 -4.2463 2.5055 5.5392 0.2036 -3.7031 -5.8323 -6.0258 -1.1405 -6.8812 -8.2643 -6.4325 2.2624 8.2490 -1.6654 -1.1619 -3.5190 -1.9517 -1.3057 -0.4120 0.2731 3.0941 3.3892 6.7202 -3.4609 4.9976 16.2171 16.8083 17.6167 19.1924 18.7528 14.2594 8.5818 3.6957 -0.9158 -4.4517 -7.0958 -9.3910 -11.6987 -13.3940 -14.5794 -13.1362 -10.8013 -7.4970 -2.2178 3.9550 3.3524 1.1405 1.7320 1.1123 -4.7613 -8.8800 -8.5945 -6.1985 -2.8033 13.6191 7.9112 3.4818 -0.7153 -0.3308 -2.3878 -3.9144 -3.8872 -3.3753 -4.2532 -6.1481 -19.8313 6.8744 6.6595 5.9608 5.6270 4.3932 3.6619 1.6033 0.6207 0.2849 0.0399 0.6193 -0.4371 -1.6617 -0.9777 1.0971 4.1974 5.9086 2.2600 -0.0342 1.3932 -0.7669 -2.8459 -3.3270 -4.4869 -4.5589 -4.9693 -7.5630 -7.8037 -11.7691 6.8143 4.0009 -0.8944 -7.1111 -6.4611 -4.2217 -1.7229 0.4360 2.1972 3.2561 3.7068 -18.5017 18.3619 17.7217 16.1766 13.4866 10.6915 10.2793 11.8384 14.1579 15.8226 15.6994 14.1178 12.1825 10.7237 10.1085 8.7558 5.2488 -0.0978 -5.2425 -10.2876 -14.5133 -15.8759 -16.5173 -16.7647 -16.0517 -18.5506 -21.5370 -23.2401 -23.8593 -22.8353 1.5487 0.0279 -0.5628 -0.2643 0.4887 -0.1023 -0.4874 0.2721 0.8224 -0.1650 -1.5779 -24.7124 31.7198 31.7692 29.2043 25.0452 19.3123 12.8393 5.9234 0.3241 -2.4789 -4.4056 -7.0192 -8.8068 -10.3571 -11.5877 -12.2897 -12.4950 -12.4338 -12.1031 -11.1686 -9.2498 -5.8575 -2.3369 -1.3750 -2.0352 -2.1517 -3.4040 -5.9186 -8.2233 -10.4400 -0.0554 -0.5312 0.1527 0.4184 0.6585 0.9224 0.6649 0.9519 0.5466 -0.5067 -3.2220 -11.4604 20.9886 21.1123 20.4027 20.0167 19.1884 16.5783 12.5867 8.3317 4.5773 1.2778 -1.2341 -2.6474 -2.9142 -1.9783 -0.0434 0.4668 -1.7813 -4.6738 -7.2502 -9.3057 -10.6229 -10.4876 -10.2177 -11.8410 -13.1790 -14.6712 -15.1393 -14.2870 -13.2531 -3.3960 -1.5619 2.3074 5.7136 6.3342 5.5398 2.4437 0.2877 -1.8718 -4.5073 -11.2895 -13.3591 19.3924 20.6124 21.6255 22.8929 23.6118 22.1117 17.5653 12.1779 8.8663 7.6147 7.1982 7.2343 9.0939 9.9573 8.6027 6.9323 4.6278 -0.1742 -9.4767 -17.6803 -21.3590 -22.4801 -22.5914 -22.5224 -22.4181 -22.3005 -22.8483 -23.1612 -23.1052 0.6133 0.2252 -0.4348 -0.4131 -0.5289 -0.3970 -0.2180 0.1438 0.5713 0.4924 -0.0541 -22.3321 -5.4361 -5.8530 -6.3360 -5.5397 -4.6575 -4.7263 -5.3668 -5.7909 -7.2619 -6.2038 -4.8838 -2.3553 -0.0793 2.8083 6.1069 7.9082 8.9577 8.4116 6.9427 5.3831 4.8464 3.2166 2.9690 3.6037 2.4221 1.8058 0.2551 -0.2588 -0.8880 1.1827 1.8083 1.5989 1.9336 1.4331 1.4150 1.0200 0.1423 -1.1623 -0.5400 -8.8315 -3.2727 15.8074 16.7591 16.8279 14.8127 12.3398 10.0795 6.3564 1.5357 -1.2393 -3.3949 -5.2006 -6.9275 -7.1545 -7.4402 -8.2594 -9.4265 -11.1999 -12.9999 -8.0859 -4.8163 -2.9284 1.3560 0.0774 -2.3044 -1.8591 0.1665 -4.2809 -4.0953 5.4946 9.8215 5.0171 7.0888 8.4199 6.4234 3.6409 10.6458 9.4642 -18.5810 -21.0542 -20.8865 -9.8207 16.5885 17.1406 17.0874 16.5509 14.5628 11.8287 11.6860 12.5074 11.7212 10.7081 10.1468 9.1212 8.3750 5.9474 2.4174 0.3172 -1.3076 -2.3870 -7.4556 -13.1264 -14.3324 -15.1303 -14.9156 -14.1134 -15.0136 -16.5819 -19.3100 -21.7927 -21.2401 -7.0652 -6.6847 -6.5388 -5.2451 -2.6953 0.0429 2.8899 5.3552 6.8840 7.0718 5.9852 -18.2709 5.7159 5.5464 5.7456 6.9034 7.0731 7.8586 8.0236 8.6981 9.1036 9.3530 10.1684 9.7683 7.9546 5.4206 1.7391 -0.2107 -1.2165 -2.1493 -3.9988 -5.8835 -7.1432 -9.2187 -9.9765 -11.1680 -10.8259 -10.9835 -11.5153 -12.5521 -12.2304 0.1902 0.2673 0.6601 -0.0091 -0.1874 -0.6461 -0.5035 -1.0433 0.8599 2.7028 -2.2908 -14.5718 17.6557 17.3889 17.6615 17.9794 16.5379 12.1975 5.9007 0.5883 -3.1335 -4.8335 -5.4254 -6.2659 -6.3932 -5.9023 -4.4098 -0.6232 2.7006 4.3695 3.8488 2.2808 0.7423 -2.7461 -8.2729 -11.5807 -12.4732 -11.8352 -10.1651 -11.6722 -14.1196 8.4864 3.3593 0.1360 -1.6129 -1.5632 -1.3569 -1.6250 -0.1613 -1.1646 -1.4389 -3.0589 -22.3338 -10.3940 -11.3059 -10.7072 -9.0929 -7.9625 -7.9528 -9.4227 -10.3318 -10.9410 -11.1389 -11.6416 -11.7743 -11.8888 -11.1901 -10.5924 -9.4860 -5.0151 0.7991 6.1915 8.4506 7.5920 12.1623 17.6583 20.5566 20.2652 20.3690 19.7694 19.3174 17.7068 3.6441 3.3200 3.1784 2.3126 2.6626 2.7456 1.7616 0.1272 -1.6565 -3.6722 -14.4236 11.3192 -5.2800 -6.7018 -5.8538 -2.9829 -0.9541 -0.9051 -2.3575 -3.5615 -3.7286 -3.6750 -3.1606 -4.9611 -3.9368 -5.7580 -6.7510 -8.2890 -7.8523 -5.0164 -1.2817 -1.0886 3.4595 6.5066 6.9768 10.1455 9.1411 11.6105 10.9980 12.7941 12.4636 -8.2776 -14.0532 -15.1503 -7.3901 -2.1067 2.8745 5.7677 7.7844 9.1465 10.3125 11.0923 19.6399 29.3262 30.3667 30.8460 31.0752 29.3541 25.4538 21.7947 19.7689 18.2651 13.3813 5.5283 -2.7838 -9.2904 -12.5752 -14.3270 -15.2147 -15.6347 -15.9580 -16.2781 -16.2588 -15.7969 -15.4712 -15.0026 -15.2417 -15.4496 -14.8024 -15.4856 -15.3255 -14.2641 0.8519 0.0729 -0.0994 -0.0081 -0.3526 -0.2653 0.2798 -0.1248 -0.0021 0.1016 -0.4538 -15.6262 15.4867 33.4494 31.0670 16.7893 6.4957 16.0571 16.9999 3.5875 -1.1144 4.8625 -0.6863 -3.8211 -1.9744 -8.9072 -8.5418 -10.0978 -9.2052 -7.2961 -7.0614 -7.4703 -6.4488 -9.4828 -7.1526 -6.4892 -6.7913 -8.1872 -9.9015 -12.0879 -12.0780 0.2229 0.6948 1.1380 0.0739 -0.1888 -0.1421 0.1878 0.2524 -0.6463 0.3346 -1.9272 -10.9140 5.6609 8.4186 9.2335 8.5627 6.3863 5.2965 4.7202 4.1210 2.2470 0.4513 -1.5117 -3.6436 -5.3381 -8.3221 -7.4711 -7.9576 -7.8478 -7.1587 -4.1684 -2.5146 -2.1257 -2.2843 -1.1957 -1.5497 0.8946 0.9399 1.4159 1.7779 2.9627 -5.4497 -6.1886 -3.2681 -2.1330 -0.0404 3.3281 4.7853 6.2760 5.5714 2.7564 -5.6374 7.7525 8.2746 28.7187 36.6976 28.2924 10.6085 7.9432 11.5220 11.0743 -0.8646 -3.5525 2.5564 -2.1952 -6.5887 -4.6155 -7.3323 -7.9392 -7.8581 -8.4524 -7.5176 -8.1708 -7.7429 -8.5235 -8.2840 -8.3037 -8.0554 -8.4741 -9.7485 -10.9377 -10.5310 0.6140 0.5808 0.5660 -0.0413 0.0489 -0.0922 -0.0506 -0.0413 -0.2020 -0.1189 -1.2632 -9.9199 11.0404 11.4527 12.0166 13.1928 15.2678 14.9233 9.1277 2.3164 -2.7085 -5.3527 -7.7675 -9.0506 -9.7011 -10.3636 -8.8246 -5.5374 -1.0381 4.5069 6.0732 3.0152 -2.7476 -2.7839 0.0922 -1.8194 -6.8672 -9.4573 -9.4575 -5.7898 -3.7583 10.8326 2.8363 2.0266 -5.3026 -6.6996 -2.9341 1.7162 6.9334 1.7529 -2.8185 -8.3432 -20.4214 12.4387 12.5027 11.9274 11.7982 12.5741 13.7391 15.0701 16.2946 15.8718 14.4312 13.1234 12.3489 12.0782 10.4253 5.1065 -2.4414 -7.7163 -11.2866 -14.5564 -17.0603 -18.3751 -18.6502 -16.8442 -12.5688 -10.3598 -13.7062 -17.0023 -16.5492 -12.6137 10.1763 4.1712 1.7946 2.0076 0.9052 -2.1595 -3.3835 -3.6172 -3.1645 -2.4570 -4.2730 -25.1913 23.6574 23.7960 23.2767 22.0580 20.0235 16.6036 11.9504 7.3306 3.6864 1.7264 0.9711 0.7044 1.0710 2.2585 2.9655 1.1649 -2.9500 -7.6177 -11.4979 -13.5632 -15.3135 -16.4809 -16.2070 -14.4023 -12.2974 -13.2762 -14.7359 -14.0530 -10.8494 8.8738 6.6767 4.8152 2.7736 0.0848 -2.4935 -3.4294 -4.0796 -4.0216 -3.7791 -5.4208 -19.2524 24.5799 26.6882 26.1210 23.6936 19.3829 13.8994 6.2899 -0.2105 -4.0678 -6.8423 -8.5308 -9.6576 -10.9976 -12.5439 -13.9320 -14.6340 -14.8621 -14.4895 -13.6415 -12.6341 -10.1213 -4.5540 2.3810 5.5155 4.5043 4.6729 1.5540 -3.0055 -4.5582 9.0263 7.4732 2.8612 0.7241 -2.0536 -2.7733 -3.2059 -2.7189 -1.5532 -1.3601 -6.4198 -12.7575 7.6213 8.4172 8.9876 10.4827 12.2597 15.2393 17.4791 18.0965 15.0336 10.0484 5.7655 2.6712 0.2945 -1.4627 -1.9710 -1.0660 1.1600 3.0980 1.1433 -4.1444 -8.2970 -10.7541 -12.9877 -13.8031 -13.3996 -14.1617 -17.1393 -19.3636 -19.2476 6.5354 4.7648 2.4269 0.5232 -1.4945 -1.8813 -1.9640 -1.7311 -1.6530 -1.7955 -3.7308 -24.6643 13.5087 13.5242 12.7722 11.8179 11.1371 10.7172 10.5263 11.1693 11.9327 11.7410 11.0557 10.1108 9.3715 8.9355 7.6249 5.0772 0.6107 -4.7883 -10.1816 -14.0801 -16.8600 -18.9941 -20.5775 -19.3418 -15.1559 -10.7533 -12.0838 -14.9402 -13.8764 11.0621 7.6386 4.9345 4.3245 3.4049 0.2756 -3.5276 -6.3143 -7.1008 -6.6692 -8.0282 -24.5342 5.8438 4.0764 2.2130 1.0693 0.2917 0.2268 0.3178 0.0571 -0.1220 -0.3299 -0.5484 -0.7221 -0.5026 -0.6535 -0.8270 -0.8342 -1.1830 -1.4780 -1.3638 -1.1982 -1.1886 -1.0489 -0.6640 -0.3974 -0.3609 -0.2538 0.0154 -0.0545 -0.3807 -6.2176 -6.9549 -7.1781 -6.1296 -3.0722 0.1331 2.5736 4.6982 6.3374 7.5607 8.2495 4.9755 0.8084 -0.3755 -1.4286 -0.3083 0.4094 0.3217 -1.3855 -3.3308 -4.9621 -6.0578 -7.2055 -8.3467 -8.9662 -9.8798 -8.8811 -7.5773 -5.2881 -2.3523 -0.7359 -2.0640 -3.5321 3.1588 7.1883 8.4965 6.8253 10.0820 14.4185 16.1906 14.7782 2.7472 3.1780 3.1134 1.3703 0.6380 0.5841 -0.0788 -0.4106 -0.5281 -1.2372 -9.3762 9.7708 6.0347 7.9306 7.3087 7.5860 8.0389 6.2727 1.7726 -1.9510 -5.1723 -6.4728 -8.8919 -11.0154 -12.2556 -12.0671 -11.6595 -10.0395 -9.5655 -7.4114 -6.3370 -7.0881 -7.2175 -0.9489 2.4220 5.6816 9.0238 12.3465 14.6450 14.7417 14.2888 2.3315 1.6729 1.0736 1.3455 0.9342 1.8468 0.4757 0.6854 0.1631 -0.4447 -10.0841 9.3461 46.3168 40.1857 32.9910 25.4126 18.0879 11.1478 4.7370 -0.5137 -4.1524 -5.9367 -6.6956 -7.3488 -7.7462 -7.7468 -7.3670 -6.8462 -6.4988 -7.1096 -8.3038 -9.1796 -8.8798 -8.2279 -8.5672 -9.4950 -9.9228 -10.8964 -12.0330 -12.6718 -12.7395 0.0319 0.3618 0.0496 -0.3085 -0.3788 -0.2193 -0.1354 0.1832 0.4305 0.6666 -0.6818 -13.3710 11.6554 10.6537 9.3283 9.0008 10.6684 13.7237 16.3020 16.4883 14.7382 14.1678 15.6614 15.7353 11.5669 3.2738 -3.5965 -7.5962 -9.3860 -11.3905 -12.5797 -12.1046 -11.4132 -10.6087 -9.1391 -12.6739 -14.9908 -15.8921 -11.8803 -12.2627 -17.4496 3.4680 2.4160 1.3256 -0.8144 0.1187 -0.6282 -0.9031 -0.1242 -0.9050 -0.7535 -3.1999 -23.5324 12.1675 12.7254 13.2135 14.1985 15.5137 16.9806 16.3379 13.0366 8.3660 4.1955 1.8866 0.9609 0.6094 1.9753 4.6385 5.7596 1.8347 -3.2804 -8.2098 -10.9983 -11.7998 -9.9732 -7.5792 -9.7338 -14.2230 -17.7555 -18.8744 -17.4527 -14.5201 8.5409 5.7667 4.9560 3.2564 0.0271 -3.4128 -3.9385 -3.7737 -3.3325 -3.1328 -4.9568 -24.6241 9.1120 9.5643 6.4962 4.5254 2.7757 3.3307 2.9999 2.2174 0.0229 -1.1179 0.0764 1.8616 1.8079 -0.7101 -2.7389 -1.9102 -1.6224 -0.6549 0.4717 -1.0044 -2.5700 -7.5968 -14.5192 -14.0727 -5.9300 1.9148 1.1204 1.1277 5.0226 -1.2631 1.5663 1.1958 1.8714 2.7703 3.0917 1.6973 0.4038 -0.8317 -0.0474 -10.4545 2.3160 17.4130 18.4485 19.8230 21.9391 23.4308 21.8507 17.8532 15.0747 14.5401 16.0453 15.3416 9.4703 1.3616 -5.8986 -10.9098 -13.9034 -16.0964 -17.8246 -18.9143 -19.3551 -18.7588 -15.8862 -10.9884 -9.6544 -11.1991 -11.1716 -7.9982 -9.7072 -14.3257 2.4025 0.4919 0.6628 -0.0126 0.2100 -0.6177 -0.6937 -0.1321 -0.2311 -0.0316 -2.0484 -21.0953 23.3464 23.7587 23.3198 22.6359 21.2675 18.8080 15.3692 11.2959 7.5849 4.5951 2.3321 0.6206 0.1406 1.2537 2.7028 2.3454 -1.0568 -5.4629 -9.1807 -11.1211 -11.6330 -11.0576 -12.1808 -16.0691 -19.9208 -21.7935 -21.7452 -20.5008 -19.6545 1.7728 0.6055 0.3687 0.2898 0.0010 -0.3228 -0.5114 -0.4052 -0.3988 -0.1360 -1.2637 -21.5300 -3.6391 -1.8280 -2.2141 -2.8117 -2.3529 -0.6648 0.7132 2.6314 3.0327 3.8765 4.7159 6.0331 6.9840 8.0909 8.2184 7.4433 5.1418 1.2303 -2.8864 -5.9181 -7.2732 -6.6797 -6.8357 -5.8669 -3.4482 -1.6078 -1.4231 -1.7328 -0.9288 5.0214 2.8439 1.2445 2.6452 1.4416 1.0353 -0.6548 -1.6658 0.1662 -1.8989 -10.1785 -9.4487 28.5900 28.4485 26.4597 24.2982 20.1833 14.5406 9.8101 7.1801 4.6176 2.4138 0.7001 -2.5862 -4.1909 -6.9729 -9.1018 -9.6205 -10.8810 -11.6812 -10.5387 -10.4340 -10.1742 -2.9512 -0.7690 -7.7471 -11.9011 -14.8085 -14.9057 -14.9118 -13.0663 -2.8812 -2.2219 3.1021 7.3299 4.0256 5.0339 1.4276 -2.9978 -1.6788 -3.5104 -7.6288 -12.8330 17.2116 17.2987 16.9789 18.3176 20.7510 21.2753 16.7522 10.5133 5.1142 1.0710 -1.6324 -4.2824 -5.9266 -7.1525 -5.1415 -0.8661 3.3622 1.3492 -3.6601 -7.4519 -9.7242 -8.3497 -5.3860 -9.2331 -14.7369 -17.5440 -17.6867 -15.9040 -15.3169 3.1075 0.5173 0.2992 -0.3406 -0.3000 0.1907 0.1940 0.1470 -0.5000 -0.5615 -2.7535 -21.0709 -3.1988 -4.0916 -5.2881 -5.3666 -5.4604 -5.6690 -4.5675 -2.8244 -2.3646 -2.2769 -2.5378 -3.9469 -5.3482 -6.8601 -7.9884 -9.9236 -10.0360 -5.5943 -1.7619 2.5871 4.2247 6.6177 8.6593 10.3741 10.0072 13.2806 13.3423 12.7747 13.2373 -10.5369 -13.7286 -14.4672 -7.5571 -1.4016 2.5948 5.6055 7.4460 9.7262 10.9589 11.3600 20.0322 6.7783 7.2343 7.5331 7.7761 7.5074 7.6964 8.5725 10.1613 11.2545 11.2432 10.1640 8.2217 5.7244 3.0761 1.5943 2.2900 3.8412 4.4389 2.8003 -1.0955 -5.1726 -8.1891 -9.0934 -10.2132 -12.0854 -15.5298 -19.4471 -23.4981 -23.5838 4.8567 5.6416 5.2432 4.8449 4.3077 1.0329 -3.6054 -4.7530 -5.3304 -4.6545 -7.5837 -26.8960 8.4973 9.5790 10.3958 11.0142 10.3482 7.3892 3.2338 0.0093 -2.2260 -2.9444 -3.5594 -3.3833 -3.1035 -3.2915 -3.1816 -1.7272 -1.5694 -1.3090 -0.9698 -1.6827 -1.8826 -2.4935 -2.7299 -3.3411 -3.5987 -3.5349 -4.0664 -5.5150 -4.3567 3.6788 2.2969 2.2073 2.2050 0.4179 -0.5426 -0.2219 -1.2268 -0.5609 -0.3836 -7.8702 -9.1107 17.6231 17.9262 18.5472 20.0216 20.3023 17.2887 12.1996 7.3566 4.7274 3.6547 4.0756 5.8810 5.5040 1.8555 -4.4820 -8.8437 -12.2983 -14.1074 -15.7010 -15.7749 -15.0957 -12.7982 -7.9092 -8.3535 -11.5389 -11.4704 -7.3965 -5.1788 -6.0150 7.6735 4.3849 2.0779 0.2256 -0.3031 -1.8488 -2.2661 -1.6177 -1.6092 -1.8719 -4.8451 -18.7476 12.8205 14.2684 15.5868 16.7831 17.8071 18.5983 18.8925 18.1800 16.6295 15.0296 14.4114 15.1384 15.0538 11.9286 6.3973 0.5192 -5.4829 -11.2613 -15.9150 -19.5693 -22.3818 -23.8883 -24.2652 -24.1324 -21.6570 -17.7761 -13.9964 -14.5120 -13.2068 12.3627 9.0753 5.2809 2.4178 1.3885 -1.6252 -3.9036 -5.7988 -6.3917 -5.9659 -6.8402 -21.2728 20.5006 19.7859 17.9876 15.5578 13.4254 11.0431 7.8434 4.6796 1.3542 -1.1988 -3.1242 -4.8289 -6.6124 -8.2071 -8.4241 -6.4513 -2.4710 0.8654 0.4899 -3.0973 -6.3396 -7.6626 -7.3643 -5.6214 -3.7466 -5.6286 -8.3519 -11.4399 -12.9632 6.3044 6.3906 3.8753 0.4819 -1.9504 -2.6460 -2.8098 -2.5547 -2.1552 -0.9715 -3.9646 -18.7636 4.9500 4.5607 3.1720 2.1209 0.3490 -1.0626 -3.5132 -4.7851 -6.2971 -7.3286 -6.8625 -6.4027 -6.8983 -8.1437 -7.2159 -6.5081 -6.2430 -5.2328 -3.1319 -1.8582 -0.2079 -0.4158 1.4593 6.3046 10.2618 11.6043 10.4890 12.3236 14.5120 7.5422 7.3893 6.7744 4.7439 3.7082 1.4685 -2.1681 -2.4628 -6.2634 -5.1931 -15.5390 4.5238 -7.1410 -6.5576 -5.8532 -3.8568 -2.3391 -0.1389 -0.2988 -0.6152 -1.3909 -2.2598 -3.3096 -3.1888 -4.0487 -5.2444 -3.1046 -1.2460 -0.3725 1.6801 1.7857 1.4104 0.4592 2.1738 4.1615 5.0013 6.4493 6.5541 6.1320 7.0552 8.1032 1.4568 1.3024 1.2345 0.1461 -0.9716 0.5343 1.2784 1.2357 -0.0481 1.4818 -7.6504 7.6553 2.7066 2.4471 1.1636 -0.0118 -0.1417 -0.8857 -3.1245 -4.8414 -6.9143 -7.7640 -7.8038 -8.1750 -9.1533 -9.9253 -10.0476 -7.9885 -5.4758 -0.6781 2.4938 3.5356 5.3377 10.4949 13.4549 12.5233 9.2737 7.1566 5.3825 4.3104 2.6502 1.7997 1.0976 0.5063 0.9888 -0.0215 0.8543 0.3799 1.5785 0.4497 0.6056 -8.2389 0.7587 15.6038 13.7257 10.7610 8.3191 6.7695 6.1252 5.5801 6.3511 7.5592 7.0879 5.0425 2.3556 -0.6287 -2.0902 -1.8476 1.1771 5.2180 6.2633 2.3465 -3.3395 -7.6295 -9.3311 -8.2251 -8.2814 -12.4973 -15.3911 -16.5987 -12.5111 -11.9141 6.9187 2.6660 -0.5025 -2.5042 -3.4261 -3.1605 -1.1635 1.6816 1.5678 1.5285 -3.6059 -21.5346 17.6619 19.2955 19.3999 18.1758 14.7064 10.3380 5.4051 0.8448 -2.7673 -5.8069 -8.5749 -10.4074 -11.7428 -13.3545 -14.7279 -15.0946 -14.9717 -14.1635 -12.0366 -9.1704 -5.5296 1.7983 8.7621 10.6721 9.0083 6.2520 0.4593 -2.8951 -1.5362 17.6102 14.9660 11.8151 6.0356 -2.6221 -10.0292 -11.4635 -9.0063 -4.3623 -3.1041 -9.8395 -15.6595 15.5037 19.5752 20.4189 20.0547 19.0780 16.8051 14.6828 13.1886 10.1566 3.7762 -1.1340 -2.4739 -2.6979 -3.0349 -2.9212 -1.9641 -2.1390 -4.2528 -5.4908 -5.4648 -2.3822 1.3316 0.1433 -8.8993 -18.5802 -23.4001 -24.1794 -22.3013 -23.3986 -0.5049 2.4704 -2.1518 0.1889 8.8275 7.0883 -1.7491 -2.8957 -3.5389 -3.5800 -4.1549 -22.0424 22.2571 23.2194 23.3933 23.2954 22.5841 20.0392 15.7479 11.5849 8.7700 7.9103 8.1392 8.4163 7.8831 4.6926 -0.6859 -6.5062 -11.4228 -14.8570 -17.9311 -19.2012 -19.8667 -20.3831 -19.2002 -15.1301 -11.0896 -11.7977 -14.4130 -13.8987 -11.5493 6.2481 3.7903 3.5761 3.3013 -0.8054 -2.9745 -3.0920 -3.5267 -2.4910 -0.8625 -3.1636 -20.4183 9.8965 9.6623 8.3290 7.4658 5.9247 5.2895 3.6738 3.1009 1.1973 -0.2394 0.0744 -0.2488 -1.7673 -2.8794 -4.7879 -4.3784 -4.5885 -3.9967 -2.8591 -1.8656 -2.4063 -3.7709 -4.0771 -4.7175 -3.4331 -2.4372 -2.8219 -1.4458 -1.8932 10.2458 7.5639 2.7680 -9.9537 -3.5803 -1.8907 0.2144 0.7131 -0.3057 0.1415 -5.9163 -11.5491 15.2412 13.6648 11.7460 11.4262 12.4640 13.7257 13.2285 9.7944 4.8606 1.4831 -0.3682 -1.5802 -2.2343 -0.4399 3.1592 4.1899 -0.2603 -4.7397 -7.1446 -6.9457 -6.2341 -4.9071 -5.6164 -9.2612 -10.3548 -11.0953 -11.7433 -14.5977 -17.4609 6.0283 4.4046 1.6269 -0.9371 -1.3835 -1.4248 -1.2533 -0.8106 -1.1426 -1.5174 -3.5905 -22.8504 10.9657 10.2369 8.6562 6.5066 5.4153 4.3801 3.7307 2.9701 3.0231 3.9620 5.6227 6.8354 6.8607 7.7333 9.3711 9.9052 7.3966 2.1887 -3.3161 -8.0311 -11.2107 -14.2345 -15.6874 -15.1299 -12.3738 -7.8431 -8.1800 -10.6370 -9.1168 12.4941 8.2803 6.3797 5.8238 4.5394 1.5368 -3.0238 -7.3749 -9.2127 -8.2187 -11.2239 -21.6561 -1.8184 2.4357 5.5586 6.9268 6.9316 6.6729 5.8397 5.6316 4.9978 3.5427 2.8029 2.1519 1.5431 0.6158 0.3469 -0.5160 -0.7873 -1.1647 -1.4196 -2.0573 -2.9471 -3.3866 -4.0651 -4.9043 -5.5018 -6.2789 -6.6909 -6.9740 -7.4862 0.3871 0.0109 -0.4655 -0.7491 -0.9646 -0.7984 -0.5764 -0.2825 0.8617 1.8001 0.7766 -8.6084 26.9824 24.7422 20.3883 16.4687 12.7850 8.7194 4.1423 1.1187 0.4923 1.2950 1.3167 -1.4325 -5.9855 -8.8959 -10.4619 -7.3170 -2.2777 -2.0173 -3.2424 -2.3419 0.2272 1.3235 1.3113 -5.1772 -12.0604 -15.3385 -15.4975 -15.3067 -13.9604 3.9044 0.9553 -0.1050 -0.6867 -0.6467 -0.6666 -0.6241 -0.2928 -0.2046 -0.3915 -1.2419 -18.1483 17.4264 17.8739 18.0003 19.1004 20.7794 20.0129 15.2235 9.3432 5.1301 3.7231 2.3327 1.2995 1.8338 4.1579 7.7891 10.5489 10.0894 9.6396 4.8572 -4.9005 -15.2998 -20.5168 -23.2742 -23.9530 -23.5530 -22.1290 -20.9638 -20.9315 -23.6395 0.5658 0.7030 -0.1044 -0.6743 -0.6856 -0.7350 -0.3973 0.2942 0.8749 0.8195 -0.6608 -23.7592 11.0645 10.9010 10.3455 9.1551 8.2401 8.4773 10.1716 11.9195 13.3973 14.3030 14.0566 13.0477 11.7356 9.5219 7.8300 6.8087 4.1182 -0.0372 -5.3649 -10.0547 -11.7439 -11.6649 -9.2813 -10.9454 -17.6273 -22.3121 -25.1873 -26.7049 -24.1694 1.5313 -0.0939 -0.8118 -1.4436 1.2266 2.0907 1.6972 1.5907 -0.0005 -1.5372 -4.2496 -26.6400 7.2201 8.5015 11.5206 11.9242 7.9280 3.2514 0.5668 0.7646 1.2768 1.9716 3.4275 3.9772 2.0908 -0.4764 -2.4307 -1.9307 -0.2561 1.3364 0.1271 -2.1785 -4.4197 -5.1263 -6.3740 -7.1163 -6.5611 -6.9173 -7.2567 -7.3864 -7.4542 4.2215 2.4770 1.4908 0.9538 0.2780 -2.2207 -1.8537 -1.0888 -0.2235 0.3010 -4.3353 -11.8723 9.0358 8.4259 6.9459 5.2890 4.7496 6.3098 9.2991 13.3013 15.9079 15.5390 12.4964 10.6440 9.7104 9.7273 8.5423 3.6988 -2.7453 -8.0067 -11.5004 -13.3609 -14.6771 -13.2598 -11.3050 -7.8208 -9.6607 -12.4588 -13.3476 -14.2784 -17.2010 1.6164 -1.2748 -1.3834 -0.4721 0.9792 1.3035 2.0628 2.1638 0.6958 -0.7525 -4.9387 -23.7718 9.9565 8.4628 5.9625 4.3300 2.9878 3.3325 3.4110 2.9855 3.4264 4.1032 5.0697 5.2769 4.9009 3.1001 1.4373 -0.2640 -1.8960 -3.0143 -3.5656 -4.3939 -4.4464 -4.6800 -5.3044 -6.0923 -5.6495 -6.5418 -7.2604 -8.5353 -7.0993 1.0313 1.1537 1.5169 0.9291 0.7698 0.3306 -0.6705 -0.6783 -0.1746 -0.1455 -4.0627 -9.9902 8.8206 8.3311 7.6969 7.4773 8.8832 10.4436 11.5039 11.5920 9.4044 5.3729 2.7965 1.9244 0.8440 0.9343 3.0627 6.0994 4.9989 -0.1279 -4.3740 -6.7306 -7.8914 -6.9026 -5.4598 -8.4881 -12.8495 -16.5109 -17.0277 -14.2238 -9.5997 15.6704 10.6049 9.8440 7.9028 1.2354 -5.4491 -8.2374 -7.8730 -7.9121 -7.2858 -8.5000 -25.1681 28.0340 39.0868 27.1887 10.6361 11.9455 17.4394 5.1212 0.4727 0.9604 -3.2583 -4.9003 -4.7245 -5.4538 -5.8998 -6.9947 -8.1227 -7.9559 -7.4467 -7.2961 -8.3144 -8.2615 -7.4930 -6.2339 -6.9302 -6.7710 -7.9933 -8.7878 -9.0802 -8.9666 0.2832 0.1164 0.0146 0.0499 -0.3417 -0.2028 0.0292 -0.0176 0.3328 0.3092 -0.5731 -8.1546 13.2856 13.6736 13.8385 14.2800 16.0154 17.1010 16.3952 13.2274 9.9508 8.9754 9.0915 10.0588 8.7910 4.7013 -0.6836 -5.8039 -9.0189 -11.2256 -12.7340 -12.4440 -11.1395 -8.8600 -7.8172 -12.7618 -18.4517 -20.0185 -18.1437 -12.9371 -7.3458 15.2491 9.0836 7.8889 2.1805 -3.0815 -5.2994 -5.5285 -5.1346 -5.1469 -4.4882 -5.7230 -22.9727 13.2791 36.0460 37.8677 20.5156 1.8115 5.3912 6.3369 -1.8419 -4.5104 -2.1483 -1.6031 -4.4187 -2.3622 -5.5552 -5.8859 -5.4153 -6.3869 -5.0848 -6.7256 -6.3113 -6.6644 -6.7067 -6.3379 -7.1113 -6.5094 -6.6908 -7.2644 -7.5701 -8.1431 0.0788 -0.2498 0.1241 -0.2112 0.0855 -0.0675 0.3132 0.2893 0.0553 0.4068 -0.8245 -8.0347 7.9344 6.5125 3.7957 3.5965 6.7588 12.6940 16.5097 15.1028 8.0593 1.9598 -1.2146 -2.5926 -3.3772 -1.3486 3.1728 5.8914 1.9225 -4.7654 -9.1401 -9.7051 -8.8318 -4.5607 -2.0376 -6.2450 -8.0736 -8.0805 -5.2827 -6.9369 -11.7180 7.2258 3.3652 1.3586 -1.1046 0.1664 -0.3445 -1.1860 -1.2597 -1.3364 -2.1233 -4.7616 -22.1072 21.0378 20.1437 17.5203 14.9435 12.2481 9.7639 5.5990 1.4969 -1.3751 -3.1146 -3.9190 -4.7517 -4.5423 -4.8816 -3.7907 -3.1560 -2.1567 -0.7505 0.1795 -0.4587 -2.1088 -3.6718 -5.6034 -7.3929 -8.2906 -9.5520 -10.5896 -12.2849 -10.5415 -10.7549 -8.4301 -5.8121 -1.4994 2.1408 6.5891 7.6924 9.5764 7.2596 6.0779 -12.8398 -1.9629 10.7156 9.5865 7.6225 6.9649 7.0204 6.9685 5.2279 3.7124 2.4551 1.6576 1.9988 3.6736 4.0688 1.8389 -1.2786 -2.3368 -0.4395 1.0954 3.9267 3.5576 -1.4334 -6.6048 -9.7760 -10.9008 -10.7709 -9.3430 -10.2106 -9.7590 -9.2378 2.5943 0.3766 -1.2329 -1.3523 -0.5254 -0.1927 -0.3463 -0.4383 0.4702 1.6846 -1.0379 -12.5558 24.0580 24.4379 23.9745 23.0444 20.8465 16.8979 11.8130 7.1514 3.3680 0.5959 -1.6053 -3.7180 -5.6992 -7.0693 -6.5902 -3.1806 1.0957 2.1175 -1.3667 -5.8106 -7.7326 -6.3061 -6.7167 -11.4328 -17.2877 -19.9514 -19.4929 -18.2702 -17.1703 1.8172 -0.1844 -0.2118 -0.1481 -0.6409 -0.6132 -0.3659 0.2614 0.3884 0.5934 -0.8960 -20.2332 19.4765 20.1390 19.4603 17.8222 14.3397 10.2003 4.8581 -0.7364 -4.1646 -6.0966 -7.2789 -8.6454 -10.5389 -11.5302 -9.4624 -7.2408 -3.9524 -2.2222 -4.3879 -6.9029 -9.6078 -8.5139 -4.7196 -4.0072 -5.4425 -3.2306 1.5193 5.0300 5.8358 16.6913 13.7800 8.0790 4.9477 0.9965 -4.7924 -7.0379 -7.8346 -6.8472 -7.4504 -10.5321 -11.1317 18.8135 17.0829 14.0965 11.2672 7.9285 3.6326 1.0246 1.6274 5.2441 9.5096 12.7855 11.9891 9.9900 8.1345 7.9624 7.3196 8.1668 7.4695 3.3884 -5.5692 -13.6276 -18.3033 -22.2152 -22.3568 -16.4382 -9.9941 -12.6602 -22.2049 -24.0632 8.0300 3.8659 0.4870 0.5409 0.8745 -0.3373 -1.1358 -2.3213 -3.1408 -3.2458 -3.6172 -26.2789 -3.1846 -2.1461 -1.3884 -2.1168 -3.4536 -2.2068 -1.9328 -3.2837 -4.0724 -3.4451 -3.7064 -3.4490 -5.5867 -7.8526 -8.9224 -10.9618 -10.4140 -7.1444 -2.6930 1.6890 4.0196 6.3300 6.7767 10.2897 10.6153 11.6584 13.3164 12.9788 10.2869 -8.7628 -13.5736 -14.7094 -7.7628 -1.0738 2.3985 3.7455 7.9153 9.1097 10.9709 11.7425 19.7352 7.2036 10.7988 12.0301 12.6700 13.9090 16.0294 17.1742 15.7924 13.0556 11.3737 9.8981 9.7580 10.0550 8.6757 4.3930 0.9731 -2.5467 -5.8685 -7.3935 -7.9704 -6.2553 -7.4006 -13.7008 -21.8328 -25.5284 -24.9555 -17.2740 -13.6475 -19.4157 -0.8046 -1.7221 0.6106 5.7975 8.4089 4.3333 -1.5262 -3.2110 -3.4206 -4.0492 -4.4166 -25.3279 15.5255 15.8281 15.8649 15.5717 15.2512 14.5946 13.3549 11.7660 10.2176 8.4641 7.0906 6.0253 5.1563 4.7439 4.4714 3.6019 0.9681 -2.7655 -6.2281 -9.0931 -11.2485 -13.4855 -15.2719 -16.2999 -17.2510 -18.5206 -20.9106 -20.3915 -17.0300 7.3780 8.0307 7.8850 7.6236 5.1345 1.2557 -3.7418 -6.8045 -8.6459 -8.6051 -9.5101 -22.9827 26.7348 25.8552 24.2536 22.1680 19.2892 15.0670 11.8818 10.3490 10.6841 11.6366 12.5339 12.4939 11.6206 9.1288 4.6195 -0.5596 -5.8142 -10.4221 -14.3446 -17.6431 -19.9802 -21.2101 -22.1807 -21.9000 -20.1487 -18.1387 -18.1454 -19.6347 -18.1941 5.5041 1.7390 -0.1498 0.3482 -0.1172 -0.9670 -1.1456 -1.3452 -1.2394 -1.1363 -1.4910 -21.2326 16.9370 16.4331 14.8117 13.5840 11.6269 10.1575 7.6822 5.8162 3.2955 0.7078 -0.9400 -2.4858 -3.3054 -4.9715 -5.4040 -5.2105 -5.0578 -4.9223 -4.7159 -4.8903 -5.6388 -6.4062 -6.4586 -6.1964 -6.2205 -6.7543 -6.8166 -7.3223 -7.3349 -2.3860 -1.5474 -0.5275 -0.2007 0.8700 2.1354 2.2672 1.9194 1.3885 1.7931 -5.7120 -7.0233 18.1837 17.9105 17.8502 18.6001 17.6649 14.2299 8.9135 3.9793 0.2595 -2.5341 -4.9127 -7.3705 -8.6080 -10.0958 -9.6568 -8.5105 -6.6859 -1.7349 3.3029 3.1008 0.1928 -0.6889 -2.6251 -6.0340 -10.0800 -12.4257 -10.0527 -7.9815 -14.1909 -0.8841 -2.2545 -2.1948 -0.1934 1.8452 1.5870 0.0467 0.8860 1.7017 2.0046 -2.5444 -18.3771 8.7179 7.6147 4.8975 2.3828 0.6009 0.0492 0.7007 3.0024 5.6126 8.3164 9.7108 8.5643 5.5842 2.4437 0.8618 1.4883 2.2665 4.0837 2.0839 -2.0359 -5.2412 -7.0937 -7.9286 -7.0963 -7.3007 -8.8955 -10.5985 -11.5307 -11.2613 4.1091 1.9827 0.6908 -1.0075 -0.1945 -0.4742 -0.4650 0.2047 0.0728 -0.1453 -4.7735 -16.8928 26.5577 26.0733 24.6549 22.5723 19.6449 15.1079 9.6936 5.0965 2.0343 0.4929 -0.5100 -0.7852 -0.6639 -1.6495 -4.5761 -7.3418 -9.5136 -10.9969 -12.3139 -12.6940 -11.8566 -8.9787 -3.5622 1.2887 1.2102 -6.9904 -16.4084 -22.1027 -23.4832 -1.8879 0.4885 2.0094 -0.3326 -2.5347 -2.2882 -2.5729 -1.0909 0.4876 5.9716 1.7500 -19.5897 35.3242 34.3711 32.2680 29.4806 25.8876 21.5217 17.0469 12.7325 8.2745 3.7170 -0.9461 -5.4939 -9.1998 -10.9322 -11.5916 -11.7605 -11.9938 -12.5431 -13.0923 -13.2971 -13.3947 -13.1377 -12.6123 -12.5003 -13.0962 -13.2815 -13.6530 -14.1174 -13.9808 0.5697 0.0342 -0.0298 -0.0559 -0.1023 0.0891 -0.0151 -0.1749 -0.0061 0.0508 -0.3598 -13.8339 10.0703 9.7251 9.1433 8.8944 8.6180 8.9798 8.7995 7.6156 6.5867 6.0265 5.9165 4.8201 3.4139 2.6360 2.7630 3.8113 3.0665 -0.1580 -4.1852 -6.9646 -8.5002 -7.9262 -6.4833 -8.3135 -11.7801 -15.4185 -14.2921 -13.7284 -13.1365 1.2932 3.3955 6.0907 4.2778 4.2667 1.2855 -2.6003 -1.0796 -3.6746 -1.8634 -11.3916 -19.3656 23.3051 24.1993 23.9215 23.6862 23.1858 21.5213 18.1183 13.5369 8.5586 3.3648 -2.7305 -8.4197 -12.7332 -14.9501 -15.7545 -16.1289 -14.8115 -12.7042 -10.1815 -6.8723 -4.1455 -3.1746 -3.2618 -1.9552 -2.0348 -7.0796 -14.1032 -17.0807 -15.2758 6.0612 4.0067 0.6827 -0.7321 -1.3626 -1.3544 -1.3699 -1.2448 -1.0738 -0.8706 -2.7423 -19.3798 15.2674 16.9866 17.1277 16.7099 15.7308 13.2318 9.2970 4.9391 0.8073 -2.3215 -4.1763 -5.4190 -5.9209 -6.5426 -6.5178 -6.1109 -5.5659 -5.2001 -5.0134 -5.0517 -5.0368 -5.4231 -5.5314 -6.1976 -6.3703 -6.2889 -5.3624 -6.1367 -5.9099 -8.0750 -7.3361 -4.4931 -3.1183 -2.2693 -0.4450 2.6648 5.7080 7.3558 8.7204 1.2878 -1.4334 16.2521 17.5727 18.3716 19.7318 20.2218 17.5895 11.4595 3.5824 -4.4163 -9.7646 -11.0944 -11.4598 -11.7153 -11.2087 -10.3436 -9.4990 -7.9409 -5.7447 -1.7839 3.2246 5.5449 5.2691 3.5281 1.4077 -0.7885 -7.8706 -13.4426 -14.7741 -11.9087 8.1501 11.0831 13.4143 10.3995 2.9803 -3.3969 -7.2017 -8.5882 -8.4386 -8.7227 -9.6791 -18.7880 13.3298 15.6004 16.9495 17.9742 18.6413 18.0052 15.3407 10.8188 5.7704 1.6139 -1.5541 -4.5241 -6.8500 -8.6887 -10.0915 -10.3456 -9.1067 -7.2349 -3.6908 -0.4604 -0.7272 -4.5894 -7.5233 -6.1277 -2.5212 -4.8361 -11.8782 -16.9767 -16.3176 9.5140 11.6129 9.6344 6.8283 1.8214 -5.0008 -6.9907 -7.4822 -6.7860 -5.3530 -7.7983 -21.5097 5.8509 5.0121 4.1809 3.1146 2.3783 3.1729 5.0219 8.3707 10.9759 11.2270 8.3063 4.3902 0.4943 -2.3167 -1.6450 1.9935 5.6473 4.3761 -0.8021 -4.8923 -7.3829 -8.9257 -7.0734 -4.5608 -5.6127 -9.9029 -12.5815 -12.1258 -6.6911 19.4769 13.9666 10.8452 9.4207 4.2670 -4.7851 -10.4839 -11.6782 -11.7512 -9.0329 -10.2450 -24.1213 21.8999 23.2973 23.7997 23.4635 22.0363 18.0109 11.7586 5.0662 0.6662 -2.2727 -5.6763 -8.5064 -10.4473 -10.5884 -9.8688 -7.3515 -1.6565 4.9891 8.0386 5.1463 1.6954 -0.6651 -6.4585 -12.0333 -17.0640 -19.1042 -20.0560 -19.6043 -18.5148 1.3036 -0.0062 -0.2979 -0.3133 -0.5330 -0.7489 -0.3368 0.3007 0.2781 0.7521 -0.3986 -20.6963 -10.8987 -3.8431 0.8023 3.7818 5.0658 6.8699 5.8536 5.2186 3.8311 2.2420 1.7635 0.0185 -1.2264 -1.7443 -3.2128 -1.6985 -0.4682 -0.6943 1.3731 2.1612 2.0833 0.9470 -0.8848 -2.3964 -2.7117 -2.4339 -2.8978 -3.2996 -3.6012 2.7097 2.9692 3.1594 3.0175 3.5504 2.5518 -0.2289 -2.0950 -2.3143 -3.3310 -9.9888 -7.1246 24.4808 26.3759 27.5940 28.3806 27.5669 22.5831 15.7417 10.5723 9.0486 9.8475 11.5983 11.3131 7.1102 0.2086 -7.1702 -11.9730 -14.3609 -16.1449 -17.3317 -17.8091 -17.4066 -16.0482 -15.0664 -15.2895 -16.4422 -17.0076 -17.0725 -17.2911 -16.0079 1.3349 -0.0323 -0.0023 -0.0696 -0.4582 -0.2103 -0.2903 -0.1486 -0.0517 0.5839 -0.6555 -18.4443 17.9414 16.0904 14.3699 13.3391 11.1223 8.3964 4.9840 2.4988 0.7921 0.1608 -0.2310 0.1816 -0.4705 -2.1166 -2.9171 -3.7835 -3.0302 -2.2559 -1.9600 -0.9583 -1.2307 -3.4055 -6.3253 -8.4085 -9.7194 -10.3891 -10.6675 -10.8207 -11.1873 1.0986 0.4777 -0.0911 -0.0850 -0.2734 0.0140 -0.2098 0.7129 0.8980 1.8977 -4.4395 -12.1029 12.4723 14.3737 15.7331 17.5345 18.5865 17.4102 13.1675 8.1222 3.7914 0.4168 -2.7856 -5.0694 -6.1658 -6.8186 -6.5122 -3.9192 0.1995 5.0703 4.8669 1.2909 -0.9029 -1.6452 -6.8885 -13.7427 -17.9265 -18.6395 -13.8409 -11.8927 -16.2860 1.0018 -0.4130 0.2921 0.9706 3.0372 2.3311 -1.1419 -1.4680 -0.8370 -1.0945 -2.6785 -23.0503 16.1352 15.6199 13.6322 10.9321 8.0808 7.3912 8.2284 10.3433 11.9724 11.5988 9.3631 5.6849 2.7468 -0.1363 -1.7113 -0.5317 2.3026 3.9081 0.3916 -4.3635 -7.2068 -8.5384 -8.4550 -8.9540 -13.2029 -18.1608 -21.6849 -22.2538 -23.1320 1.1059 0.2225 -0.9789 -1.0458 -0.6792 -0.6786 -0.0893 1.8547 2.2928 0.8548 -2.8591 -24.9911 28.0419 26.8927 23.9676 20.3423 17.0949 14.1432 11.1170 8.5048 5.9497 3.7523 1.8284 -1.1682 -4.2200 -7.3805 -9.6413 -9.8772 -7.8838 -5.3446 -3.5410 -3.9253 -6.0372 -7.8179 -8.6390 -8.2594 -11.0251 -14.9594 -17.1292 -17.6345 -17.1513 2.0146 1.0165 0.2708 -0.3124 -0.5924 -0.7003 -0.5256 -0.1176 0.1111 -0.0740 -1.0907 -18.2597 30.4937 29.9533 27.0130 23.2537 19.3056 15.2225 11.4303 9.6244 9.1658 8.8058 7.5946 3.9214 -0.3706 -4.6724 -8.3883 -10.6272 -11.6333 -12.3129 -12.9451 -13.0994 -12.8851 -12.7290 -13.3639 -13.9071 -13.6304 -13.0095 -13.0398 -14.2416 -14.9284 0.6244 0.4573 0.2518 -0.4563 -0.2954 -0.1108 -0.0098 0.1405 0.0912 0.3156 -1.0087 -16.5521 23.7058 24.6386 24.6540 23.9896 22.7528 20.4522 16.9148 13.0348 9.6982 7.0016 4.5976 2.1220 -0.6149 -3.6746 -5.8863 -5.9902 -4.5281 -3.6266 -4.8920 -9.1128 -13.5269 -16.4106 -17.2411 -16.4096 -15.1425 -15.8149 -18.5726 -21.0323 -21.0860 0.9700 2.5909 2.5737 1.8731 0.5116 -0.3889 -0.5545 -1.3812 -1.8817 -1.7258 -2.5873 -20.1722 22.2050 22.3808 20.3781 16.4796 12.6684 8.8562 3.8726 -0.8910 -3.6288 -4.2849 -3.4387 -1.6917 0.1253 1.9297 2.5614 1.1487 -1.7631 -3.8451 -4.6916 -4.6895 -4.3072 -5.2689 -7.0584 -8.3927 -8.7357 -10.2762 -11.8104 -13.7994 -14.0324 5.7540 5.5094 3.1104 0.8059 0.0318 -1.6334 -2.2746 -2.0707 -2.1335 -1.8766 -5.2228 -18.1315 17.6753 18.8195 20.1357 22.2056 22.9569 20.8704 15.5249 10.2701 6.9749 6.5302 7.5814 7.0271 2.6959 -1.7891 -4.8427 -7.5373 -9.7567 -11.0890 -11.6891 -11.8800 -12.2196 -11.3183 -11.2853 -12.8185 -14.2184 -14.2772 -13.2856 -15.1315 -16.1298 1.6839 0.9589 0.5363 0.3560 0.0003 -0.3851 -0.4445 -0.1741 -0.4978 -0.0434 -1.9906 -19.7528 16.9830 17.0052 16.9926 18.4021 19.9925 19.1283 15.4081 10.3401 5.5724 1.5019 -1.4332 -3.0065 -3.3422 -1.3956 2.0439 4.2794 1.1281 -3.7178 -7.4632 -8.5376 -7.6364 -6.3039 -11.6545 -18.3967 -21.4453 -20.7880 -16.5366 -10.0359 -7.0843 11.0713 4.6537 0.5072 -0.3393 -0.6602 0.5953 -2.0626 -2.4851 -3.0603 -3.5773 -4.6428 -20.8691 17.7707 19.5364 20.6287 20.9849 20.0930 17.6674 14.5484 11.0817 6.9020 2.2545 -2.3356 -5.7371 -8.9898 -12.8304 -15.5822 -17.0433 -18.8124 -19.7104 -19.4116 -18.1842 -15.3531 -8.7155 -0.1993 4.7176 5.4518 4.7364 1.7967 -2.2008 -3.0647 15.0410 12.3154 5.6659 1.3689 -3.8672 -5.9083 -6.0931 -4.9235 -3.3736 -2.9423 -7.2832 -16.8582 9.1549 8.6933 7.8990 7.7096 7.5098 8.0171 9.2410 10.6919 12.1971 13.4831 13.6508 14.1654 13.7371 10.9089 4.6506 -2.3217 -5.6454 -8.0201 -9.9057 -10.0159 -10.6042 -10.3898 -8.1978 -9.7430 -12.7378 -17.4512 -17.2848 -13.5900 -15.8022 0.6882 4.3643 6.0400 2.5052 2.9297 1.4706 -1.9898 -0.8867 -4.2772 -3.0450 -7.7994 -22.2645 -7.8843 -6.8506 -6.0261 -4.4439 -3.8369 -1.9649 0.3352 2.3185 3.0465 3.3257 3.5540 4.6680 3.7349 2.5291 2.4128 3.7790 4.5682 5.6219 5.4149 4.7479 2.2185 -0.8515 -1.7161 -2.4559 -2.0632 -2.2051 -3.7165 -3.1032 -5.1569 8.1350 6.3528 5.3232 1.0605 1.2735 0.2509 -2.2104 -2.9957 -3.4893 -2.5108 -11.1898 -12.1806 19.3396 19.9410 20.3727 21.0809 21.0327 19.1352 15.1028 10.7594 7.8609 7.5499 8.5005 9.7060 9.1824 5.3617 -1.3028 -5.6212 -8.2717 -9.5373 -9.7484 -8.8869 -7.1221 -9.0450 -14.6697 -18.5948 -20.2891 -20.4076 -19.8130 -20.1946 -21.4218 1.2915 0.6782 0.3569 -0.0683 -0.4830 -0.2926 -0.3937 0.2610 0.1608 0.1333 -1.6440 -22.5256 2.7246 2.5148 1.4831 1.8238 1.6121 2.4035 2.7381 2.9387 2.1358 2.0826 2.3275 2.3406 1.9098 0.1135 -0.7424 -0.9928 -0.9805 -0.2098 0.5803 0.3688 0.0187 -1.6561 -1.4168 -1.4577 -1.3632 -2.6140 -4.7663 -7.0691 -6.8479 2.3665 2.3301 1.9626 1.0968 1.9491 1.1267 -0.1355 -0.0256 -1.2772 -1.4379 -7.9556 -8.3907 4.5290 1.5249 0.3659 0.0056 0.8630 3.3152 1.1307 -3.3632 -4.3601 -3.7553 -5.0257 -5.6659 -5.3754 -4.9885 -4.3119 -4.9927 -6.0531 -10.2279 -4.3307 2.1887 3.8591 8.8378 4.5088 3.9006 4.9936 11.1237 3.0140 -1.5171 9.8068 13.2445 7.3306 5.9252 9.0687 7.7216 4.0675 11.9777 11.3110 -23.2633 -23.8643 -23.5193 -4.4759 22.1510 23.1727 23.3097 23.0639 21.6223 18.4164 13.8969 8.9695 4.5053 1.2957 -1.3036 -3.3247 -5.1402 -7.1172 -8.6948 -7.8753 -4.6461 -1.4461 -1.0227 -4.3094 -8.8842 -11.9962 -11.9234 -9.0257 -6.5369 -10.3321 -16.4292 -19.9706 -20.4250 2.3851 5.8201 6.5059 3.9876 0.3330 -2.1429 -2.8980 -3.4857 -3.4682 -2.4183 -4.6186 -20.0780 11.7456 12.7989 13.3162 13.8312 14.7779 15.3799 14.0233 10.9089 7.3194 4.1768 1.7992 0.0512 -0.9458 -0.5202 1.3786 3.4860 2.0668 -2.3920 -7.4022 -10.7590 -12.9261 -14.3064 -12.7761 -8.6791 -8.3015 -10.8632 -13.2729 -14.2798 -9.6355 15.8594 13.6933 9.1741 8.4349 3.8782 -4.9728 -8.7226 -9.3197 -9.3643 -8.7767 -9.8839 -22.4690 22.5139 20.9546 19.1373 16.9050 14.6133 12.3135 10.2395 8.4844 6.9510 5.0069 2.4662 -0.4380 -3.5684 -7.0424 -9.9771 -11.1936 -9.8800 -6.3251 -3.0189 -1.9735 -4.9442 -9.7372 -12.9352 -11.8709 -6.8801 -5.6880 -9.6188 -12.4995 -11.9948 12.0588 11.2938 8.1711 2.3960 -3.1587 -5.3733 -5.8980 -5.6220 -4.8347 -3.2857 -5.7474 -21.5935 26.6734 23.8620 18.3470 12.7193 8.0473 4.8602 2.4155 1.4627 1.0558 0.6193 0.2671 -0.5986 -1.6798 -2.4678 -2.2065 -2.9360 -2.8372 -4.0092 -4.4380 -5.3046 -5.8491 -6.4148 -7.4157 -7.9456 -8.4776 -9.0352 -9.1998 -9.5061 -10.0078 1.6300 1.3410 0.6385 0.2013 -0.3629 -0.2927 -0.3661 -0.3133 -0.0630 0.4392 -2.8520 -12.0787 9.0155 7.9133 6.4106 6.4968 8.6477 11.6576 14.8601 16.0323 14.2529 11.8653 10.9041 9.9373 7.2309 2.3059 -4.1636 -8.0163 -9.7982 -12.7129 -15.1421 -15.4797 -14.8005 -12.8340 -10.4715 -5.8560 -5.3611 -5.0344 -3.5840 -5.3517 -8.9240 11.0430 4.7986 3.1188 -0.3636 -1.4561 -1.9319 -2.5464 -2.3041 -2.3666 -3.0258 -4.9659 -22.6702 9.0489 10.4274 10.5425 10.8125 12.0032 13.7184 13.0711 9.6959 5.4837 1.6077 -1.9964 -4.4495 -7.8808 -10.2103 -11.6407 -11.4255 -9.7241 -7.5467 -3.5478 1.8951 3.5718 1.5955 -0.5403 0.5662 0.2415 -4.3154 -9.5295 -11.0052 -10.4693 11.1024 7.2333 6.1462 4.3929 0.7029 -2.0309 -3.7294 -5.1402 -4.8388 -4.6151 -9.2233 -21.2734 11.5593 10.3420 8.9170 7.7962 6.0867 5.9638 3.8519 0.4188 -0.7715 -1.3184 -1.5894 -1.6173 -0.5956 0.0397 0.9980 0.6720 -0.2103 -4.0838 0.9485 2.7667 1.7723 -0.8231 -4.4419 -7.1686 -8.5571 -4.2281 -12.0695 -12.5608 -2.0974 7.0256 2.5786 2.8194 7.2989 5.3493 3.5256 11.6032 11.1767 -16.6084 -17.8153 -16.9535 -14.6567 24.2288 25.1078 25.3408 25.2954 24.6890 22.7229 18.9908 14.5853 10.6023 7.4918 5.2132 4.6660 5.1836 5.0476 2.8795 -1.3269 -6.1170 -10.7585 -14.7563 -17.5071 -18.3274 -18.4398 -17.9983 -17.5700 -18.5575 -19.7750 -20.4184 -20.5476 -19.9453 1.4677 0.8990 0.5256 0.5195 -0.1930 -0.5086 -0.7678 -0.6113 -0.2499 -0.1187 -0.9625 -20.0880 1.3606 0.3524 -0.4981 -3.0376 -5.4591 -5.1861 -5.3381 -7.9395 -4.6276 -1.6746 -2.1073 -1.7720 2.3082 5.2620 5.3649 4.6501 3.6803 -1.4394 4.4940 9.4882 7.6591 6.7428 -0.6196 -2.1749 -1.2855 2.9511 -4.6673 -9.5251 3.0380 18.0806 14.1151 9.1210 5.7949 2.4151 -7.5054 6.8950 -0.4827 -16.5385 -16.0700 -15.8252 -15.5778 21.5243 22.4067 22.6543 21.9383 19.0581 14.0232 8.4188 2.8494 -1.1924 -2.9917 -3.8222 -4.1823 -4.8633 -4.9565 -2.8338 0.9516 2.0941 -1.6445 -6.8552 -9.9590 -11.1205 -11.0602 -8.6668 -7.9525 -10.6286 -14.0950 -13.9349 -10.3116 -4.8478 13.9994 11.9398 8.0010 4.2542 -0.6981 -4.9047 -6.1557 -6.5212 -6.7797 -5.8456 -7.2894 -17.9998 13.8275 13.6751 13.2793 13.1536 13.5104 14.6497 15.6909 16.1684 15.2109 12.8857 9.6156 6.4230 4.2876 3.2525 3.1015 2.9273 0.8232 -3.7600 -9.4442 -13.3046 -15.6203 -16.1398 -14.4329 -11.4384 -11.9914 -16.0394 -20.1422 -21.4553 -18.7137 9.9896 6.0754 2.5716 1.2147 -0.1252 -2.8394 -3.5768 -3.1998 -3.2277 -2.5626 -4.3197 -26.1243 1.0072 1.0349 0.4547 2.0233 3.1568 3.6248 2.6871 2.1595 0.3986 -1.1817 -0.8372 -0.4964 -1.1310 -1.3530 -1.2089 0.5624 1.6332 2.6953 2.6143 2.1661 1.0687 -0.5002 -1.8630 -2.0422 -1.9290 -2.0051 -4.7328 -5.7009 -2.3057 -9.2017 -9.1260 -10.3545 -1.5749 2.8548 5.5584 7.3199 8.4704 7.1113 6.4743 -7.5320 8.8174 22.3237 20.1229 16.3186 14.9885 15.8060 14.2422 9.0206 4.5767 2.3692 1.2439 -0.3609 -2.4418 -4.3713 -8.0945 -10.8110 -9.9282 -5.6299 1.8658 5.9594 1.6554 -4.8836 -8.0129 -7.8686 -4.1518 -10.8846 -16.3956 -17.6436 -10.8807 -8.1336 8.1699 0.1374 -2.1155 -2.7808 -2.5717 -2.5099 -1.4743 0.4020 2.8792 2.7754 -2.9117 -19.9846 14.9448 13.3235 11.0690 7.7970 3.6467 1.2905 -0.1418 0.0865 0.0848 0.1249 -0.0042 -0.4006 -0.5457 -2.0216 -2.4005 -2.6631 -2.7574 -3.4930 -3.6341 -4.8530 -3.8008 -4.5467 -3.9983 -3.1834 -3.3005 -2.2570 -2.3485 -2.8054 -3.2121 -8.3072 -10.2892 -11.0655 -7.2025 -2.5835 1.3158 3.9103 6.1494 8.7822 9.4411 9.8490 4.1623 17.4109 16.3957 12.7323 9.0568 6.0296 4.0628 1.3809 -1.0636 -2.5917 -3.1282 -2.4806 -2.6332 -2.6331 -3.0197 -3.1246 -3.2078 -3.2369 -3.3087 -3.5259 -3.6952 -3.2777 -3.5126 -3.3483 -4.6082 -4.5229 -3.9702 -2.8815 -2.2298 -1.0686 10.2492 8.7238 6.5287 4.1319 1.3909 -1.3457 -3.1912 -4.0830 -5.8573 -5.7467 -10.8007 -10.7504 3.6810 4.8086 4.9739 5.5677 4.9032 4.1256 1.8122 0.1556 -1.1456 -2.1369 -2.2315 -2.0785 -3.1848 -4.0677 -5.2026 -5.8769 -6.5043 -6.1685 -5.6023 -5.9105 -4.2511 -1.3453 1.8335 3.4033 5.1448 5.5509 4.8678 3.4921 1.3864 4.5899 3.1561 2.1086 1.0104 -0.3847 -0.6586 -0.6429 -0.1120 -0.4119 -0.3363 -8.3185 -3.2346 3.1333 2.2434 0.5660 -0.1689 0.6551 3.1370 6.4778 9.1712 8.4572 6.3300 4.6298 2.8657 0.1787 -1.1319 -0.2827 2.3196 5.5007 6.1676 2.4317 -1.1696 -3.2988 -3.3141 -2.9589 -3.5360 -5.2348 -8.6527 -10.1506 -11.6535 -12.7119 12.8762 10.2239 6.7637 2.0074 -1.9484 -4.8866 -5.3018 -4.5051 -4.3255 -3.6989 -7.2049 -23.9005 8.6220 10.8825 12.2872 13.3601 14.2280 15.3604 14.9416 12.8140 8.4375 3.9118 -0.1235 -3.3572 -6.8491 -10.5514 -12.6045 -13.2373 -13.4285 -13.2888 -12.4858 -9.8652 -5.1267 0.8370 1.7581 3.1241 4.1350 -0.4102 -5.4532 -8.8060 -9.1118 14.9701 12.4418 7.1314 0.5687 -6.4070 -6.8941 -5.5568 -3.3084 -2.3663 -1.6449 -8.9346 -21.6106 19.1182 16.6713 12.8335 8.8739 6.1759 6.2230 7.5297 9.2506 9.4142 7.8053 5.9066 4.3378 3.9155 4.5696 4.9822 3.2409 -0.8415 -5.8082 -9.1525 -11.0999 -12.9425 -14.8404 -14.6104 -11.5397 -8.3035 -9.3615 -9.7422 -9.9642 -12.6415 4.2777 1.5675 1.0684 0.6135 0.0628 -0.5807 -1.1085 -1.0788 -0.8209 -0.6136 -3.3875 -20.5875 0.8644 0.9240 0.5001 1.9751 3.9631 6.3687 6.1077 3.6220 0.7094 -1.0962 -1.8495 -2.7933 -4.0125 -4.8808 -2.1854 1.6422 4.3506 5.1936 3.1952 -0.0683 -2.2673 -2.2756 -2.5661 -3.5305 -3.3037 -2.7368 -2.4517 -1.7145 -1.6839 4.7659 4.9768 3.8161 1.7084 0.2338 0.0457 -0.5947 -0.8458 -1.4961 -2.2835 -10.3266 -8.0604 22.8493 23.0279 22.4564 21.7830 19.7630 14.2941 7.4867 2.4477 1.1542 1.7020 2.1450 2.1381 2.9526 3.5821 3.5140 2.5293 1.8263 1.6906 -0.1177 -4.3580 -9.4178 -13.6122 -17.0109 -18.1586 -18.2289 -17.0887 -18.0638 -20.2393 -21.0462 1.9050 0.4924 0.1429 -0.1603 -0.2972 -0.2106 -0.5323 -0.0051 -0.0488 0.0713 -1.3573 -21.7449 -5.0691 5.7916 20.3977 33.7608 20.5478 6.3862 -0.6167 2.4285 7.7738 0.6480 -5.4985 -5.1477 -2.1058 -9.1202 -9.7561 -5.6897 -8.4994 -6.6489 -4.0490 -6.3900 -1.1222 -4.7105 -1.2435 -3.1404 -0.4670 -1.2691 -3.2353 -6.3597 -7.5957 2.6335 2.9453 2.3526 1.7483 0.5793 -0.6841 -0.6920 -0.5880 -1.6805 -2.0348 -4.5797 -8.0873 27.8982 26.1875 22.3314 17.8436 13.6570 9.3782 4.5001 1.0587 -0.1319 0.5334 2.2176 3.9007 4.3904 2.8784 -0.5056 -2.7187 -4.2442 -4.9618 -6.1501 -6.6560 -6.3475 -6.6372 -7.4694 -9.8220 -14.6530 -16.2989 -16.6133 -16.9745 -16.5912 1.5751 0.2732 0.3920 -0.1605 -0.6644 -0.5397 -0.0300 -0.1057 -0.0387 0.4893 -1.1907 -17.7674 4.0687 5.1941 6.0984 7.7169 8.4142 8.8229 7.3250 5.7734 4.1436 2.4793 2.4633 2.0981 1.0790 0.0726 -0.0934 -1.1969 -2.7251 -3.5007 -3.7768 -4.1983 -4.4360 -4.9365 -5.3239 -6.0842 -6.5913 -6.0399 -5.6196 -5.4516 -5.7753 2.3864 4.1318 4.1698 4.0758 2.9462 1.5278 0.0907 -0.4889 -3.3101 -2.5223 -13.0073 -9.7421 -2.5217 6.6906 18.9380 32.5385 26.0727 10.4378 1.8923 3.8920 11.1274 10.8157 0.2901 -2.1358 1.8304 0.1110 -6.1198 -3.9839 -1.5639 -5.8130 -5.0685 -6.2978 -9.3560 -8.6952 -9.9906 -9.6668 -9.2810 -8.9004 -9.6041 -12.9599 -12.6780 1.0846 1.2730 0.8512 0.3292 0.2685 0.1416 -0.4299 -0.2512 -0.6945 -0.7869 -1.7857 -11.2964 9.0608 8.3549 5.9106 3.0223 1.5989 1.4872 0.5967 -0.7899 -2.0584 -2.6475 -1.9940 -0.9341 -0.2649 0.8782 0.8190 0.7941 0.2218 -0.2750 -0.3771 -0.9402 -2.1665 -2.7001 -2.9780 -2.6056 -1.9810 -2.2466 -2.1946 -2.6591 -2.9316 2.9882 2.9231 2.3934 1.2468 1.7808 1.5958 0.9538 0.0307 -1.6679 -1.9384 -10.3063 -6.9292 25.3209 26.4747 25.0162 21.0118 15.7497 9.7187 3.2049 -2.7534 -7.5484 -11.3498 -13.8939 -15.3292 -16.7275 -17.7766 -18.3047 -18.0188 -16.5419 -14.8140 -11.1748 -6.2506 1.1228 5.4465 3.3274 4.0262 6.8686 6.7842 4.5450 4.7788 7.0872 14.4073 8.6959 4.9137 0.7333 -0.0689 -3.2729 -3.9427 -4.6901 -3.7843 -4.7606 -8.2309 -11.1556 39.3240 35.1580 30.1649 24.8807 19.4559 14.1503 9.3376 5.7395 2.9171 0.8743 -0.1600 -1.5610 -3.3663 -5.4790 -7.0899 -8.1039 -8.6121 -9.3362 -10.6742 -11.7063 -11.8889 -11.6310 -11.7325 -11.7388 -11.4894 -12.8703 -14.4784 -15.0647 -15.0195 0.4215 0.7196 0.4543 0.0332 -0.2347 -0.2869 -0.3136 -0.1185 -0.0711 0.1485 -0.7523 -15.3163 4.1198 2.4046 -0.9207 -3.0537 -4.9411 -4.5132 -4.0855 -3.8951 -3.8661 -1.0021 0.5493 0.6922 -0.1138 -0.3066 0.1108 -0.0251 0.8424 2.6646 9.2170 6.3754 2.4274 3.2110 3.9376 2.5394 1.3314 0.0248 -3.5589 -5.2404 -4.9255 -3.5255 -3.1009 -3.7604 -3.4700 -2.8733 -1.9992 0.5113 3.0512 5.1249 4.8231 5.2190 -1.6532 3.6620 2.9859 3.0040 3.0506 2.2625 2.4007 2.1773 2.2676 1.7231 1.4288 1.2160 0.5069 -0.1552 -0.1104 -0.1481 -0.3494 -0.2743 -0.5949 -0.9982 -1.2915 -1.7757 -1.8432 -2.0500 -2.8592 -2.5411 -2.0302 -1.9641 -2.8754 -4.8244 7.6823 3.2328 -2.8255 -7.4261 -7.6683 -4.0922 -1.2719 1.1834 2.9852 4.1242 4.0762 -14.2392 12.2682 12.4958 10.6370 8.6802 6.1895 3.3521 0.0120 -3.1196 -5.8915 -7.9346 -8.4726 -9.2365 -10.2529 -11.6156 -12.3872 -11.4245 -9.0191 -6.8545 -3.2918 -0.0972 1.4040 0.7813 2.7012 7.4433 10.4513 8.1526 4.8220 3.6293 6.5779 3.5887 2.5442 4.8598 3.9894 2.1825 1.8990 -1.1549 -1.3419 -2.5535 -1.8075 -12.2060 0.8433 15.4243 14.3712 10.5979 6.0053 3.6236 3.1660 2.6457 3.0378 3.3307 2.9774 1.6056 0.6289 -1.2252 -2.5293 -2.5259 -3.3644 -3.2999 -2.9968 -4.1243 -3.1379 -4.5943 -5.1946 -6.5332 -5.4258 -4.3474 -2.4580 -3.2897 -3.9496 -8.4184 12.5953 13.0978 8.0807 2.0800 -3.4741 -5.6039 -6.0827 -5.2556 -5.1645 -4.3359 -5.9370 -19.1939 12.6031 11.5140 9.5918 8.9721 11.2278 16.3861 18.3055 15.2493 9.3533 5.1262 3.4090 2.8449 4.2190 7.3448 7.1824 2.1285 -4.7265 -9.0679 -11.7653 -12.9187 -12.3770 -9.8860 -9.0188 -10.4117 -12.4113 -14.1603 -11.8340 -11.7956 -15.0847 1.6333 -0.1749 -0.1240 -0.2004 0.4426 1.4656 0.2738 0.7777 -0.0047 -0.2122 -3.8769 -21.6008 15.7554 16.8394 17.1615 17.2884 17.4030 17.2657 15.8921 13.5652 10.3715 6.8406 3.5351 0.5517 -2.1632 -4.1460 -4.2553 -2.4789 0.2986 0.9530 -2.3858 -7.5703 -11.2229 -12.1150 -10.5591 -8.6344 -11.4398 -17.0807 -20.6444 -20.9882 -18.0373 8.3336 5.5551 2.4710 1.8701 0.0297 -2.8652 -3.4720 -2.9808 -2.8086 -2.1702 -3.9628 -24.3752 27.9412 27.2421 22.9503 16.5254 9.6885 4.5967 0.6997 -3.4665 -6.6867 -7.8148 -9.1495 -10.0610 -11.4055 -11.7392 -11.8813 -11.3038 -9.8795 -7.5418 -2.5870 4.6153 3.8429 0.5688 -2.8955 -0.2237 1.9886 1.7001 1.8074 -3.1272 -14.4038 -3.8881 -2.8329 -1.6443 1.8671 3.1413 1.8729 0.1398 2.8367 0.3757 1.7313 -3.5996 -13.3850 9.1831 9.4128 8.6344 9.5797 10.1063 10.3011 8.2263 4.5395 1.0974 -1.7556 -3.6105 -4.8265 -5.4684 -5.8802 -4.5931 -3.1888 -0.4075 0.3805 -0.9063 -3.4050 -4.9101 -5.9677 -5.8009 -5.0301 -5.4306 -6.4969 -3.0810 -2.1162 1.4143 -5.1355 -2.3496 -0.0420 3.9648 4.8248 5.4912 2.0450 -0.1732 0.0828 0.7502 -9.4585 1.8224 4.4588 4.2389 3.3197 3.1330 4.0702 5.7759 7.7099 9.0876 11.1245 12.6510 12.5527 11.9764 10.9501 11.0837 11.4805 9.3639 4.7521 -0.5944 -4.4402 -7.1309 -8.3207 -8.3043 -9.4810 -12.7554 -15.5784 -17.8883 -18.8492 -17.9501 -16.4359 5.8124 3.4155 3.3830 3.3147 1.6832 -0.5370 -2.7626 -3.1367 -2.1515 -2.7970 -6.2238 -24.3008 11.3859 11.2940 10.4575 10.5198 11.2222 12.7124 13.5178 13.4129 10.5164 5.9792 2.3897 -0.1138 -1.9321 -3.1972 -3.1420 -0.7773 2.4075 3.1154 -1.3266 -7.1228 -10.5939 -11.1307 -9.8760 -7.3492 -6.6029 -10.8829 -13.8968 -15.3987 -15.5878 8.9895 6.7302 4.3952 0.2012 -4.6771 -5.1924 -3.7684 -1.4949 -0.4984 -0.0670 -4.6178 -24.6307 18.9158 19.7886 19.7526 19.1358 18.1177 16.4664 14.0122 10.8818 7.5481 4.5462 1.5367 -0.9445 -2.7129 -3.9653 -5.5016 -7.5102 -9.0864 -9.0742 -9.0767 -10.2313 -9.4105 -5.3027 -1.9268 -1.3910 -3.5726 -10.4635 -17.0711 -22.1873 -21.2730 5.4315 7.4977 3.9877 0.2418 -1.1556 -2.9339 -2.8218 -3.2557 -2.2125 -0.4250 -4.3542 -22.8328 28.1526 28.1117 24.7174 18.3759 10.6219 2.4804 -4.1378 -7.4788 -9.3437 -10.8490 -12.5556 -14.1384 -15.1322 -15.0182 -14.6140 -14.5304 -14.2862 -13.9234 -11.7259 -8.2717 -1.7653 6.2167 7.1311 7.8239 8.7319 8.2789 7.6074 7.1853 2.3358 3.7971 -0.5557 -1.9296 -2.2395 -1.0081 1.6256 1.1217 0.2632 1.4311 1.1466 -3.6525 -7.2238 -1.9896 -1.5846 -1.1882 -1.5851 -4.5749 -6.7021 -4.6940 -3.5898 -2.8275 -4.0926 -5.1006 -4.1183 -4.9559 -5.2145 -6.9309 -7.9964 -7.8043 -5.1453 -1.8211 -0.6339 3.5622 6.5139 7.8184 9.0948 11.5264 11.4601 10.4022 10.4535 11.7185 -9.6611 -13.7925 -13.7882 -6.6479 -2.4133 2.1029 4.5429 8.2581 9.4338 9.8315 12.1338 18.9608 29.0162 27.1449 23.5731 20.2452 17.5110 14.7918 12.0251 9.1599 6.0664 3.8158 0.8485 -1.4407 -3.2916 -4.0983 -4.3970 -4.3435 -5.2630 -7.1322 -9.5766 -10.6471 -11.1044 -11.3079 -11.3508 -11.6324 -11.9889 -12.9298 -13.9392 -14.6929 -15.0614 0.4975 0.3394 -0.0827 -0.4799 -0.4676 -0.3009 0.0384 0.1607 0.4964 0.5891 -0.7905 -17.1701 8.4713 7.5563 6.3767 6.1947 6.0689 6.3779 4.9213 3.5036 2.5255 3.0901 4.1254 6.3043 8.3238 9.4464 9.3170 6.5660 2.2721 -0.8163 -4.4840 -7.0774 -8.1734 -9.5687 -10.5231 -10.5767 -10.2078 -10.4331 -9.7161 -9.9741 -9.8905 3.2535 1.2694 0.1807 -0.6651 -1.0284 -0.5802 0.6037 0.3968 0.3279 1.2972 -5.0555 -13.8489 8.3726 8.7329 8.5586 8.5134 8.7002 9.8765 11.6676 13.2674 13.5452 12.0942 10.0691 7.6401 4.8660 2.8680 2.7547 3.9563 4.9074 3.0494 -2.0753 -8.4742 -13.3840 -15.8240 -17.8178 -16.4808 -10.6391 -9.9987 -14.2994 -17.0600 -17.3864 10.6631 9.4847 5.5492 1.3050 -3.1070 -4.8971 -4.8382 -4.5691 -2.3532 -2.1714 -5.0660 -26.2617 19.0595 18.3832 15.9029 12.6530 10.0486 8.1560 6.2927 4.3924 2.8935 2.2985 1.7559 0.7258 -0.7293 -3.1142 -3.9530 -4.8127 -4.7935 -5.2925 -6.6673 -7.3117 -8.4213 -8.8278 -9.2400 -8.0623 -7.4252 -7.1006 -5.9527 -5.3881 -5.4699 10.5325 9.0445 4.9973 0.1331 -3.2907 -4.1662 -4.1984 -3.1495 -2.7117 -2.1058 -5.0850 -17.2009 52.2372 44.3578 36.5608 28.9176 21.5115 14.4397 7.8187 1.8482 -3.2520 -7.1355 -9.4888 -11.6207 -13.4063 -14.7098 -15.4667 -15.9341 -16.1369 -16.0366 -15.3538 -13.7588 -10.6277 -7.7814 -6.1144 -5.0819 -4.0409 -3.9360 -4.9781 -5.9562 -6.8747 3.7022 1.4660 0.4111 0.1370 -0.3542 -0.1182 -0.1120 -0.5566 -0.7197 -0.2876 -3.5680 -11.6568 18.5298 18.5912 18.1337 17.4860 16.8943 16.3587 16.0594 15.4122 13.4402 10.4256 7.3367 4.6520 2.5497 1.6836 2.6521 4.2050 4.7439 1.2637 -5.1624 -11.9630 -16.8360 -19.0690 -18.8984 -17.4618 -16.1587 -17.2824 -20.6892 -23.3973 -23.4997 3.2388 3.5069 1.9919 0.0447 -0.5876 -0.7419 -0.9096 -1.1897 -1.2370 -1.2266 -2.8899 -24.3059 14.2216 15.1107 15.4424 14.9543 12.7476 8.8407 3.8349 -1.2250 -5.2339 -7.6335 -9.5259 -10.5663 -11.3480 -10.7110 -9.3182 -6.6849 -3.0625 0.0032 2.0229 0.5151 -0.5651 -0.4048 0.5255 -0.7083 -2.6478 -3.1557 -2.5836 -2.0039 -0.8405 3.7139 1.8811 2.0645 2.2576 1.8972 2.7893 0.9195 -0.0976 -1.1232 -2.5385 -11.7639 -9.8006 27.6767 26.3073 23.1657 18.9402 14.2694 9.6933 4.9155 1.3429 -1.0736 -2.1647 -2.4791 -3.7245 -5.2366 -7.8495 -9.6757 -10.3534 -9.9166 -8.3142 -6.6376 -3.9530 -4.0753 -4.3093 -3.5187 -3.9010 -5.2935 -7.7755 -9.0692 -8.2730 -8.7168 5.8445 3.8687 2.4179 0.0649 -0.8031 -1.3677 -1.4763 -1.6757 -1.5716 -1.5700 -3.7316 -15.5980 7.4225 6.3812 4.2676 2.9128 1.8225 2.6330 3.2026 3.4899 4.3798 5.0782 4.0849 3.8689 3.6113 4.5683 5.8542 4.5947 0.2532 -3.2821 -6.4774 -7.4650 -7.9861 -7.4196 -6.0622 -5.4357 -5.0398 -5.4225 -4.6902 -3.4197 -5.7249 10.3884 8.1074 7.3911 3.6782 0.8704 -2.0339 -3.8319 -4.9728 -4.3725 -5.2689 -9.9555 -15.7366 17.5213 20.4430 21.9190 22.2701 21.3171 18.9687 14.6306 9.0767 3.5198 -0.8778 -4.3458 -6.9865 -9.5480 -11.1420 -12.3506 -13.4175 -13.6194 -14.0717 -13.7947 -12.3999 -9.1656 -3.9176 -0.2193 -1.5457 -4.1719 -2.7467 -2.4932 -5.3995 -7.4528 7.1434 7.0238 7.2627 6.7980 5.2527 1.0139 -3.4114 -6.5230 -7.8521 -6.8412 -9.8668 -15.3691 23.8876 22.5517 20.2028 18.0102 15.3733 12.6542 9.1010 5.3097 1.3988 -1.1554 -2.5833 -3.9593 -5.0937 -4.9268 -4.3385 -4.0356 -4.4731 -5.2411 -5.8573 -6.0798 -6.4837 -6.6593 -7.2930 -7.7787 -8.4220 -9.5983 -10.7066 -11.6689 -12.1349 1.8395 1.5059 0.7809 0.7822 0.3229 0.0573 -0.1778 0.0288 -0.5032 -0.4347 -4.2018 -15.0448 13.9062 13.1904 12.4290 13.6194 15.2333 15.2034 12.0474 7.3708 3.0090 -0.0473 -1.0773 -1.4032 0.0264 2.8347 3.5334 0.2574 -4.8606 -8.4990 -10.3461 -10.2062 -9.1724 -6.5298 -5.6943 -9.5272 -11.1766 -10.7021 -7.7752 -7.2838 -8.3598 9.0389 8.3462 5.7086 0.2994 -0.2224 -1.6621 -3.2697 -3.1981 -3.4783 -4.1342 -7.4282 -20.6505 -0.1956 12.8891 25.9590 29.2372 11.9659 3.6545 1.9759 11.5615 8.2666 -2.4823 2.1238 10.6975 3.0083 -5.1305 2.5407 -3.5456 -5.3431 1.0377 -4.8653 -4.1095 -8.9872 -10.0069 -10.6630 -10.8153 -10.0788 -9.9282 -11.0117 -13.4387 -14.3160 0.9647 0.5126 1.4038 0.7744 0.0988 -0.4577 -0.1039 -0.1823 -0.4661 -0.3208 -2.2235 -13.2318 25.9629 27.1177 27.8480 28.1350 27.2179 24.6308 20.8300 16.5838 12.6784 8.6134 4.1825 0.4406 -2.7846 -5.2345 -6.7282 -7.9739 -9.5601 -11.2902 -13.5857 -15.5917 -16.3027 -16.6819 -16.4912 -15.9456 -15.7750 -16.8350 -17.5886 -18.0613 -17.8109 1.0702 0.8294 0.1689 0.5813 -0.0091 0.1284 -0.3058 -0.7039 -0.5520 -0.2521 -0.9553 -17.8347 28.3817 26.3242 22.4988 18.1016 13.8114 9.4292 5.2503 1.4133 -1.6541 -2.4802 -2.4725 -3.0842 -3.4601 -3.8401 -3.4525 -2.3946 -2.6693 -1.6244 -0.8581 0.9642 0.0547 -3.6789 -8.6927 -12.3146 -14.1720 -14.6132 -14.5422 -14.6064 -15.6195 1.2358 -0.1021 -0.4812 -0.1634 -0.1968 0.6015 -0.1027 -0.0844 -0.0133 0.2510 -0.9445 -16.6483 14.8559 14.2769 13.3144 13.4636 14.5210 15.1971 13.3361 10.1599 6.7908 5.5468 6.0091 7.5005 8.7471 7.3385 1.8761 -2.5391 -5.4603 -7.6289 -8.7381 -8.1046 -7.0789 -6.1772 -7.8795 -11.4586 -14.0732 -15.6269 -16.7078 -19.9955 -21.4649 1.8161 1.8568 0.7960 0.3224 0.4841 -0.7227 -0.9581 0.3734 -0.1277 -0.0325 -3.8078 -24.4035 5.4535 4.2960 0.7585 -1.6071 -2.7931 -2.2472 -2.8178 -3.1626 -2.5628 -1.3912 -0.3660 1.6795 4.2030 6.4164 7.0674 7.5227 7.0796 4.9076 4.3543 2.9287 -0.1541 -2.4266 -4.0876 -4.9944 -4.2282 -4.2178 -6.4840 -7.8159 -5.3111 9.2246 8.2902 7.1840 5.6544 4.3170 2.1934 1.5215 -2.4633 -8.8855 -12.3322 -14.7039 -13.9292 9.0980 9.2332 9.0227 7.8900 7.2001 9.3060 12.7460 15.4304 15.0788 11.5632 8.2993 7.2707 8.2449 10.9986 9.5064 3.6569 -2.3332 -7.1688 -8.9599 -9.8137 -8.1433 -4.6312 -6.5469 -11.9994 -16.1445 -17.5300 -16.1820 -19.8515 -25.2405 0.4708 -0.3092 0.2379 1.4804 -0.1717 -0.9282 -1.5045 0.4378 1.4582 0.6172 -1.7888 -27.1180 30.5921 29.7607 27.5057 24.3076 20.2670 15.1816 9.3486 3.1611 -1.4937 -4.0966 -4.8189 -4.9920 -5.0548 -3.9493 -2.7660 -2.8294 -4.1521 -6.8587 -8.9405 -9.3227 -7.2576 -3.2574 -2.6669 -7.8789 -12.9388 -16.4992 -17.2553 -16.5402 -16.5552 0.5625 0.3502 0.0083 -0.1840 -0.6199 -0.4748 -0.2997 -0.1545 0.4846 0.8919 -0.5646 -16.4454 14.8981 14.8814 13.6043 11.5145 9.5013 6.6072 1.9200 -2.1840 -4.2500 -5.6701 -6.3798 -6.5602 -7.0938 -7.2697 -4.0665 -0.3509 2.6024 2.4125 -0.1554 -3.0971 -4.9214 -6.2652 -5.4681 -4.3507 -3.9793 -4.8021 -2.3819 -1.6978 3.0025 2.8620 3.2617 6.8021 5.2352 3.3376 0.5084 -1.9352 -2.2484 -1.4495 -1.6734 -14.7006 -2.2554 19.3171 19.5822 19.1016 18.4606 17.7886 17.3421 16.7071 15.2413 12.1252 7.5570 2.4543 -2.6968 -6.6532 -9.4513 -11.1611 -10.7979 -8.4551 -5.8510 -3.9750 -5.4484 -8.6775 -10.2725 -9.6723 -8.1110 -6.9238 -9.5412 -14.0157 -16.8585 -17.1147 6.4595 5.2042 2.6176 0.4543 -1.5212 -2.1299 -2.1223 -2.0336 -1.9001 -1.4360 -3.5925 -21.8904 10.0554 11.4918 12.0024 11.9869 11.4982 10.7952 8.7236 5.9738 2.4552 -0.5185 -1.8366 -4.1108 -5.5111 -6.6353 -6.8364 -7.0970 -6.1121 -5.4311 -4.4856 -3.2530 -4.1916 -5.5562 -5.6815 -5.4794 -4.5844 -3.0317 -1.6070 -1.6034 -1.4198 6.0457 6.4584 6.3816 6.2004 3.9293 1.7377 -2.4799 -5.0585 -4.1685 -5.2278 -13.8183 -8.6957 5.1528 4.1179 3.0625 2.9843 1.9679 0.9714 1.4744 4.4833 5.5293 4.7030 3.5767 3.8031 1.7543 -1.0533 -1.2774 0.9570 5.1278 5.5900 4.5922 0.5748 -5.0484 -6.9525 -6.3139 -9.2098 -9.0484 -9.2166 -5.0713 -4.7295 -2.5016 10.5692 7.5278 2.2517 0.6253 2.9159 0.5499 -2.4843 -3.5780 -4.6422 -4.8638 -8.8714 -13.8790 18.7418 15.9185 12.8438 10.2040 7.5183 6.1018 4.7206 3.9908 3.3693 2.4047 1.4410 0.1504 -0.1335 -0.4013 0.1702 -0.4796 -1.4923 -3.1582 -4.6899 -4.8726 -5.5428 -6.5059 -7.1643 -7.5192 -7.9222 -8.7815 -9.4290 -9.6309 -9.8521 -0.4363 -0.6716 -0.6321 -1.0615 -1.3192 -0.9262 0.1030 0.7901 1.5962 2.2939 0.2637 -10.2983 35.3923 32.3026 26.5029 19.6975 12.6365 5.9222 0.1370 -3.8927 -5.9336 -6.6867 -6.9777 -6.7865 -6.2733 -4.3479 -3.5674 -3.6341 -3.7323 -5.0584 -6.3190 -6.1046 -4.6307 -4.8921 -3.7741 -3.8037 -7.6419 -9.4026 -9.7867 -9.3143 -10.0304 -0.3209 -0.8025 -0.7882 -0.9161 -0.6206 -0.3729 0.2723 0.9229 1.0626 1.2478 0.3157 -11.3279 15.1154 17.2376 18.5113 18.6287 17.8606 16.0374 12.3870 7.3049 2.2274 -1.2547 -3.4619 -4.9984 -7.5019 -10.3433 -11.9860 -13.4479 -13.9092 -13.7812 -13.8196 -12.9157 -11.1559 -7.1870 -2.1572 1.9368 1.9384 1.8602 1.8940 -1.4092 -3.6107 13.9690 15.4855 13.9780 10.9462 5.3217 -5.0870 -10.7886 -11.2651 -11.1873 -9.5973 -11.7750 -16.7260 18.2228 18.4615 17.4249 17.1396 16.6125 14.4185 10.8568 8.6164 6.3579 5.2370 3.8560 1.9252 -0.6359 -4.2750 -5.1889 -6.7505 -7.9919 -9.0778 -10.1000 -9.9142 -8.7383 -6.1658 -3.7111 -6.1760 -9.8971 -12.5047 -12.7338 -12.8872 -12.3808 -0.8130 0.6976 0.3804 0.6457 1.5482 2.4749 3.0413 2.8395 -0.4708 -2.7284 -7.6154 -15.6555 6.0325 10.0051 11.3341 12.3589 13.8900 16.1481 16.3116 12.7566 8.9105 7.2557 4.4785 2.2316 0.9797 -0.6614 0.5661 4.8341 6.5458 3.6213 -1.1381 -4.3272 -5.4198 -6.5113 -7.7865 -12.3725 -19.9330 -25.0176 -17.8042 -15.8364 -21.4525 -3.1483 -3.2143 -0.2635 8.5907 13.2637 6.6922 -2.8514 -3.6166 -4.6591 -4.9686 -5.8249 -25.4194 17.3207 17.7695 17.5402 17.0035 16.5266 15.9285 14.7115 13.0615 10.7412 7.7296 4.5970 1.7062 -1.0815 -3.0472 -3.6756 -2.2649 -0.4084 -0.9339 -5.2361 -10.6763 -14.8835 -17.2271 -17.8907 -15.6384 -10.4668 -8.4525 -11.8808 -15.4044 -15.4675 8.8476 9.5703 6.9625 3.1090 -0.1253 -3.6220 -4.8452 -5.4253 -5.0540 -3.4938 -5.9236 -22.7477 18.2320 19.5978 19.7190 18.7548 16.3427 13.6150 10.6951 8.6087 5.9251 3.1428 1.8336 0.1222 -0.3161 -1.8892 -3.4565 -4.4788 -4.1025 -3.7501 -4.9649 -7.4742 -8.6908 -9.9373 -10.8830 -11.3028 -11.4257 -11.5192 -12.7474 -14.6156 -15.0348 -8.1772 -8.1988 -6.2878 -4.9710 -3.0389 -0.0545 3.6911 6.8598 7.3721 8.3424 4.4628 -8.8778 13.8589 12.2371 9.8247 7.6249 6.1891 5.8925 4.1202 1.8072 0.1905 -0.9244 -0.4689 0.1547 0.5703 1.3955 2.0470 2.6142 1.4776 -0.3379 -2.6582 -5.2107 -5.8303 -6.1283 -6.7972 -7.3151 -7.5206 -7.3966 -7.0187 -6.1092 -6.2882 2.8357 1.3808 1.5156 0.8705 -0.2752 -0.1447 -0.1738 -1.0712 -0.4308 -0.5020 -4.0050 -11.0460 25.9341 27.7320 28.2232 27.7876 25.5774 21.4281 15.8329 10.0447 4.4219 -0.7932 -4.9567 -7.9480 -9.7086 -10.7951 -11.8434 -13.0235 -13.3873 -13.9249 -14.4275 -14.4362 -13.1477 -10.3022 -6.8516 -4.3801 -3.0535 -2.9543 -6.5274 -11.6580 -12.8631 5.4748 4.2973 2.0928 0.3859 -0.0500 -1.0781 -1.5335 -2.0293 -2.0870 -2.0482 -3.4246 -15.9155 12.5611 14.6864 16.3579 17.9048 19.1559 20.0003 19.3273 16.6175 11.9366 7.1513 3.6125 1.1772 -0.6760 -2.6536 -3.6769 -3.9465 -1.4534 2.8613 3.1405 -2.9573 -11.3536 -17.9162 -20.1933 -20.5787 -18.1872 -12.9460 -11.7495 -17.2172 -20.9852 3.0886 4.0379 3.6614 1.7858 1.8672 1.0455 -1.0249 -2.3716 -3.3037 -4.0002 -4.7860 -22.6731 6.3873 6.0538 5.2554 4.7605 3.7352 4.0478 3.0878 1.1603 -0.4100 -0.4842 0.3498 0.7144 -0.2324 -1.6604 -3.0147 -3.2036 -2.2852 0.4500 5.1996 6.1851 1.9002 -1.2909 -2.8734 -4.7090 -4.8637 -4.9906 -6.0915 -6.1561 -7.0214 -0.4395 -0.6291 -0.8046 -1.1373 -1.0367 -1.1976 -0.5358 0.8614 1.5251 2.7259 0.6681 -8.1549 6.4678 24.1453 28.3564 16.3768 0.9487 6.1492 9.9337 5.7837 0.7687 2.7379 7.4627 2.6615 2.1447 -1.7243 -4.9079 -3.6716 -5.1260 -1.3976 -1.3562 -1.3187 -5.1578 -9.3517 -9.8801 -10.0344 -8.5754 -9.5176 -12.9621 -14.5277 -14.4277 2.6144 2.0177 2.0939 -0.3296 0.2968 -0.6507 -0.6394 0.0217 -1.9957 -0.1306 -3.2985 -14.8655 12.5510 12.4285 11.8955 12.7578 16.9371 21.2938 20.7903 16.7803 12.6688 11.7788 11.6300 7.3846 0.3301 -5.6353 -9.1568 -12.4924 -14.5919 -16.2950 -17.9481 -16.1853 -15.7323 -12.4489 -10.0349 -7.7045 -8.7699 -6.9254 -3.1598 -3.0985 -9.0472 7.8424 3.8265 0.9376 -0.6967 -1.1188 -1.5694 -1.9503 -0.6167 -1.4541 -2.2369 -2.9635 -21.8681 15.6754 16.7432 16.5153 12.3311 4.2455 0.2050 -0.6894 2.1431 4.3595 7.5720 9.8733 9.2508 5.8913 2.6955 1.6669 2.5024 2.1823 0.5005 -4.3623 -8.7120 -8.4826 -7.8486 -12.0698 -13.3968 -11.9915 -10.9867 -12.2995 -11.0273 -12.4867 -2.7836 -4.4120 -5.1131 -4.1277 -2.4732 -0.9720 1.3438 3.6062 4.7125 5.6821 4.5370 -11.9000 22.3286 23.0046 23.0498 23.5807 23.1994 18.4599 10.9563 4.0795 0.4966 -1.4210 -3.5925 -5.4787 -5.7217 -4.6302 -2.1947 3.6628 9.5300 10.8217 9.1886 2.5031 -8.0477 -14.9331 -18.4387 -19.9305 -20.4501 -20.2597 -19.9758 -19.4479 -20.3392 1.1842 0.4014 0.0219 -0.1675 -0.5484 -0.3769 -0.3371 -0.0928 -0.0308 0.3091 -0.3631 -21.5338 21.9984 23.9238 25.3357 26.4343 26.0313 22.5182 16.6027 9.8676 5.2339 2.4325 -0.1466 -2.8415 -2.8856 -0.9913 3.1553 6.9975 6.7848 4.8021 -2.7887 -13.1318 -18.6046 -20.0234 -20.0047 -19.9587 -19.6763 -19.9132 -20.3439 -20.4619 -20.3457 1.2714 0.3555 0.0928 -0.1438 -0.1909 -0.1061 -0.2499 -0.3508 -0.1985 -0.1750 -0.3048 -19.6659 -0.2567 -0.2113 -0.8684 0.4465 3.3786 5.2759 2.6214 -1.2665 -3.2281 -4.9538 -5.9464 -5.0624 -5.8449 -5.2078 -4.5607 -2.4460 -0.3193 2.4345 5.4910 8.1750 9.7870 9.0613 6.6768 1.8115 -0.9513 -2.1611 -3.7070 -3.7433 -4.4246 0.1631 2.1256 4.6102 5.3221 6.3935 4.7668 3.6937 3.2175 -0.8613 -8.2952 -21.1360 -6.1298 3.8793 4.4914 2.0392 1.3477 -1.0271 -0.6639 0.1117 -1.7816 -3.2330 -2.3240 -1.7798 -3.8111 -6.4867 -7.2086 -6.2062 -8.1286 -2.5000 3.3550 12.4119 16.8546 9.9403 10.7928 11.8490 6.7929 -4.7030 -7.2697 -8.7835 -9.4026 -8.5564 -1.1740 -2.4092 -2.9332 -3.4178 -3.5228 -2.2895 -0.3280 1.5973 4.1640 4.8094 5.5038 -5.9517 55.6246 47.8318 40.1222 32.5666 25.2478 18.2625 11.7233 5.7654 0.6757 -2.9249 -4.9251 -6.7338 -8.2843 -9.4091 -10.0166 -10.5275 -11.0842 -11.8508 -12.6565 -13.2845 -13.4392 -13.4505 -13.5945 -14.1300 -14.9588 -15.8320 -16.5919 -17.0696 -17.0561 -0.1692 -0.1054 -0.1641 -0.3548 -0.4054 -0.2499 -0.1197 0.3574 0.6137 0.7290 -0.1316 -16.1029 28.3480 28.4457 26.9174 24.2222 20.0737 14.3497 7.6659 1.6711 -2.2930 -4.4091 -5.0514 -3.9119 -1.1398 2.5446 4.7855 3.9543 0.0941 -4.3143 -7.5760 -9.0354 -10.4294 -11.2170 -12.2003 -12.8513 -13.7072 -15.1900 -16.7728 -16.6535 -16.3197 1.6890 1.2293 1.4980 1.0200 -0.3583 -0.7205 -0.7464 -0.7978 -0.7991 -0.4289 -1.5854 -17.0352 7.1738 5.8760 3.4170 2.3215 1.3711 0.5440 -1.4461 -3.1488 -4.5999 -4.7859 -4.3101 -4.0022 -3.9658 -3.1268 -2.0884 -1.4297 -0.0002 0.9577 1.5670 1.5085 1.0721 0.3227 0.5110 0.7323 0.8496 1.7441 0.7228 0.7656 1.4470 -8.6193 -7.2247 -5.3667 -3.5827 -1.8357 0.6166 4.1585 4.9638 7.0248 8.8447 1.0209 8.4769 -0.7467 0.3554 1.8709 0.8731 -1.4638 -3.3430 -6.6672 -9.5951 -10.4012 -10.6421 -11.0116 -11.8429 -12.2455 -11.7931 -7.9381 -3.6179 4.3015 10.3005 10.2729 5.6096 4.1790 4.6704 9.5416 5.1426 3.2307 6.6932 7.3970 11.6314 15.2383 14.9214 12.3993 10.3175 9.4781 6.5290 0.7143 -6.7843 -12.1011 -12.5497 -11.0634 -11.8611 -4.9295 8.9473 8.9587 8.3247 7.7486 7.2645 6.8446 6.7225 7.4361 8.0756 8.3721 7.8521 5.8385 3.2013 -0.0003 -2.2581 -3.0372 -2.3326 -0.4339 2.2803 1.7881 -3.0603 -8.5789 -12.0665 -11.7987 -9.2546 -6.5489 -9.3084 -14.6968 -16.2796 11.5926 10.4770 8.8581 8.3385 5.3110 -2.0531 -7.5440 -8.5312 -8.7087 -8.2386 -9.5016 -25.9443 17.7853 20.4425 22.0494 22.6794 21.5241 17.2874 10.6686 4.0415 -0.8452 -3.3573 -4.8317 -6.2098 -8.0414 -10.4109 -12.4433 -13.6668 -13.5852 -12.5998 -10.4309 -6.2165 -0.7444 0.8686 -2.2118 -2.8842 -0.1978 -1.0432 -7.6768 -11.1308 -8.8188 14.1142 12.1567 7.0646 6.3108 1.5813 -5.6339 -6.7414 -7.8081 -7.7366 -5.6857 -7.6219 -18.4403 10.4095 10.1666 9.2271 8.0860 6.4145 4.2188 0.0306 -2.2509 -4.0464 -2.5048 0.7199 3.4238 3.2446 1.8968 2.3554 2.4242 1.5237 2.3494 4.0741 2.8937 -1.4622 -5.2927 -9.7781 -9.2472 -7.3050 -3.6229 -4.1228 -9.1846 -14.6411 8.1502 5.2313 1.0580 1.4879 3.7251 2.9439 -0.5626 -1.1335 -5.4441 -3.6896 -11.7665 -16.0896 16.3683 15.7368 14.0789 11.8221 8.6363 4.8193 0.7944 -2.5033 -4.2969 -5.1383 -5.1385 -5.8567 -6.7831 -7.2715 -6.1940 -4.4484 -2.8402 -2.2612 -2.0718 -1.0756 0.0928 1.1543 1.4991 -0.3000 0.0566 -0.6778 -3.4172 -5.3252 -9.4588 11.6386 8.1885 3.6288 -1.2989 -3.6855 -3.9476 -4.1335 -3.4808 -2.6249 -1.8682 -2.4166 -19.6188 9.9289 9.2679 7.9267 8.7379 10.9513 13.7239 14.8623 12.3233 7.4753 3.3088 0.9949 -1.1257 -2.9647 -3.3198 -1.5514 1.8208 1.1498 -4.6271 -7.9003 -10.0749 -11.1748 -10.0605 -6.3035 -5.8941 -7.6734 -10.1071 -9.5489 -6.0056 -4.1400 9.5365 2.6560 3.6743 6.2251 4.9344 -1.5821 -4.9354 -4.9959 -4.2490 -3.3389 -7.9251 -19.9895 15.7601 15.5371 14.5879 13.6852 13.7329 14.2619 14.5602 14.1050 11.9855 9.0424 5.9338 2.9248 1.1175 -0.2175 -0.4564 -0.8056 -2.8269 -5.9252 -9.3719 -12.1962 -12.8615 -12.5210 -10.3147 -10.3071 -11.7171 -13.5357 -14.5158 -14.3799 -15.2819 0.2685 -1.1025 -1.4893 -1.4317 -1.3748 -0.8857 -0.0388 0.9292 2.3295 3.5114 -0.7158 -18.7537 10.0771 10.8307 10.8465 11.7532 13.7152 14.8042 13.3142 9.3177 4.2443 -0.1370 -2.8245 -4.9084 -6.2428 -7.4346 -7.1199 -4.5048 -0.3499 3.4684 5.2923 2.9229 -0.3932 -2.4266 -2.9696 -4.8989 -8.2386 -13.2276 -16.6579 -16.3335 -11.9188 12.1564 11.5591 10.1368 8.7589 4.6074 -3.2222 -8.3162 -9.1139 -8.8367 -7.9752 -9.7544 -23.1025 11.5053 11.7027 11.7371 13.2093 15.2251 15.5948 12.9282 8.2370 4.0626 1.5654 0.2206 -0.6203 0.1854 2.0975 5.0249 6.2795 5.6030 2.9180 1.3161 -0.0224 -2.9425 -5.8601 -7.8659 -9.4742 -11.9620 -17.3077 -22.0414 -24.8530 -26.4631 0.6245 0.8430 0.7564 -0.0344 0.1860 0.2573 0.0022 0.3483 -0.0033 -0.3539 -2.6260 -27.0235 5.1441 5.4989 4.5886 4.8890 4.4149 4.7882 4.1037 2.1106 -0.5897 -1.6882 -2.0231 -2.3075 -4.0395 -5.9980 -7.0714 -7.2239 -6.8500 -6.2178 -5.8790 -4.2255 -3.0049 -0.9642 0.5881 1.8550 5.0224 5.6412 5.3310 2.5657 1.5411 13.0414 12.1678 10.8758 8.3500 3.9695 -1.2713 -6.6778 -7.5357 -8.1366 -9.8150 -14.9679 -9.0970 5.6158 4.9839 2.6123 0.8571 -0.5963 -0.3233 -0.2214 -0.3194 -0.1370 0.4421 0.3275 0.0835 -0.5170 -0.8713 -0.8569 -0.8339 -0.8554 -0.5354 -0.0395 -0.0558 -0.9263 -0.8835 -0.8978 -0.6944 -0.6268 -0.8091 -1.0483 -1.4194 -1.4539 -1.4149 -1.4513 -1.7313 -2.1794 -1.7446 -0.9286 0.2594 1.3903 2.1796 3.3663 2.2545 -1.2043 10.7080 10.7135 9.5629 8.5444 8.8788 10.1398 10.5302 9.9131 6.6128 3.5565 2.0899 1.1039 0.3794 0.6277 -0.1980 -1.3526 -2.7157 -4.4999 -6.1998 -7.9255 -8.1415 -9.2812 -8.2556 -8.1488 -8.8083 -9.3952 -7.3216 -6.7527 -4.3647 -4.2821 -3.0286 0.3702 1.9504 4.2670 4.9800 3.4858 0.8969 -0.2219 0.7569 -9.1747 -5.7376 15.6199 17.2444 17.3338 14.6899 10.1694 6.6473 3.7155 2.2358 1.5381 1.6499 1.6341 0.4488 0.1506 -1.4323 -2.9510 -3.5813 -3.4819 -3.2311 -4.3442 -6.2089 -6.4666 -6.7538 -7.4724 -7.2719 -7.5336 -7.1999 -7.6644 -8.4572 -9.0267 -8.4693 -10.5727 -9.7580 -6.2924 -2.3994 1.2587 4.0421 6.4837 8.0877 9.5585 8.0612 -1.6481 19.7459 20.2278 18.1630 15.0090 12.1531 9.9790 6.2260 3.3367 0.8576 -0.7079 -0.8905 -2.1529 -4.1404 -5.6658 -7.0620 -8.8380 -8.6505 -8.0785 -6.8102 -4.7097 -3.3992 -4.6255 -5.7732 -5.7892 -3.5462 -3.1831 -5.7363 -8.6675 -7.2716 4.1141 4.3678 4.3289 4.1542 4.0907 1.7285 -0.9643 -1.7912 -4.9181 -4.5913 -10.5192 -12.1315 6.1392 7.2498 8.1626 7.6850 6.4337 6.4811 6.2044 4.4007 3.1418 2.4995 0.9290 0.1185 -0.7668 1.7199 1.8949 2.0578 0.9328 -0.2110 -2.8546 -2.7195 -3.0066 -5.4613 -5.4714 -6.1331 -7.3092 -7.3810 -7.7191 -8.5523 -8.4648 -2.4870 -2.6525 -3.0263 -3.5473 -2.5564 -1.0930 0.1556 2.3664 3.5226 4.7554 4.5624 -7.5910 9.3110 9.9536 9.2138 10.0448 12.2215 15.3929 16.8943 15.4237 10.3171 4.7547 1.0177 -2.1707 -4.9877 -7.5219 -7.9593 -6.9345 -4.8837 -0.9854 3.2044 2.3045 -0.4463 -2.4338 -5.1476 -7.8900 -10.6310 -12.6634 -14.4919 -15.1208 -15.7863 5.6159 2.3509 0.9141 -0.3540 -1.9709 -1.3207 -0.8350 -0.2962 -0.1715 -0.2711 -3.6616 -23.6214 23.3043 22.9242 21.5293 19.5762 16.1241 10.4648 6.0084 4.4333 5.1608 6.7668 7.1607 5.7544 1.6077 -1.1787 -4.1636 -7.1966 -8.5322 -8.3418 -7.6815 -6.4004 -5.6492 -7.9013 -12.6029 -15.0772 -12.4774 -7.5784 -9.0924 -17.5597 -19.3815 3.7144 2.6198 1.4796 0.4420 -0.5744 -0.9102 -0.6355 -1.0076 -1.4038 -1.1279 -2.5963 -20.6144 11.2061 12.3118 12.8295 13.0523 13.1146 12.3645 9.9362 5.7743 1.7043 -1.8769 -4.8871 -7.3022 -10.0064 -12.5843 -14.2598 -13.6895 -11.6784 -9.5138 -6.1691 -0.5296 5.2373 5.2179 3.4380 3.0836 2.2733 -1.6391 -6.1888 -7.6374 -3.5815 20.8484 18.6436 8.9742 10.0179 3.8790 -7.4403 -11.3642 -12.3105 -11.5853 -8.9330 -10.7298 -20.8771 16.8529 17.4255 16.4102 15.5784 15.8674 17.4950 18.1947 15.9349 11.7120 7.2655 2.7249 -1.9527 -5.0648 -6.5508 -5.6015 -1.5230 3.8782 6.4704 3.5684 -1.2082 -2.4831 -2.6718 -6.1617 -14.2995 -21.6998 -24.5766 -25.7294 -25.4801 -24.3755 1.7078 0.3442 -0.1860 -0.3639 -0.6031 -0.7615 -0.5273 -0.1524 0.1610 0.3883 -0.0071 -25.9432 3.6247 4.1362 4.7304 5.4643 6.0686 6.7599 7.3700 7.9086 8.2045 8.2007 8.3050 7.9346 6.5060 5.2072 4.9010 4.7326 5.1044 4.6386 2.5145 -2.6750 -8.8497 -12.8927 -16.3752 -16.1979 -12.4272 -9.0385 -10.4849 -12.3511 -11.0196 16.8771 16.0363 12.4221 5.0921 -2.2734 -6.9441 -6.2634 -7.9111 -8.6040 -8.3171 -10.1145 -25.1507 20.4102 22.2333 21.4536 19.4223 16.2855 13.0015 8.6431 4.0577 0.1512 -3.0550 -6.8588 -9.9672 -11.6652 -13.5703 -15.4009 -14.9881 -14.1899 -13.0588 -12.1440 -10.7868 -7.9129 -2.9873 -1.1110 -1.0826 1.2318 4.7844 4.0367 1.8708 1.1966 1.4837 -0.6523 -2.7877 -2.3545 -1.2604 3.0293 4.4380 2.6853 3.1820 0.1563 -7.9197 -4.8422 24.4801 24.0824 22.4438 19.5938 14.6940 8.6790 3.7523 0.8565 -0.9075 -1.5140 -0.7636 1.4427 4.6338 4.7800 -0.4807 -5.3801 -6.6867 -7.1351 -7.2085 -6.8900 -7.0642 -5.4063 1.9414 1.1193 -8.0610 -17.4390 -17.6573 -19.7125 -20.1924 -1.8469 0.7851 2.9495 5.7461 5.1153 0.0343 1.2368 -1.4044 -2.4151 -4.0039 -6.1967 -17.9837 34.2380 33.5242 31.1201 27.6874 23.0098 16.3994 8.7955 1.8365 -2.8561 -4.7762 -4.6828 -3.5969 -2.7477 -3.7154 -5.8733 -6.7781 -7.1404 -9.1196 -11.1436 -11.7088 -11.2040 -10.1729 -10.8046 -9.7894 -7.4004 -10.6648 -13.8125 -14.2674 -14.3560 0.7706 1.2161 0.2010 -0.2054 -0.4100 -0.3813 -0.4077 -0.2383 -0.1037 0.0286 -0.4699 -14.1437 28.8775 29.5132 28.5106 26.2574 21.3404 14.0753 6.0344 -0.6419 -5.0399 -7.8669 -10.5378 -12.6348 -13.9599 -14.7351 -14.0154 -11.1568 -6.4165 -1.6004 -0.2199 -4.6568 -7.7877 -4.3270 -3.6815 -7.3611 -9.9812 -9.0522 -3.7854 -1.0622 -4.0886 4.5036 0.0436 -1.2620 0.1566 0.7061 0.9930 -0.1034 -0.8841 -0.1473 -0.6208 -3.3851 -11.7638 23.7811 23.4799 22.5985 21.1811 19.2950 16.9827 14.1530 11.0015 7.6758 4.3321 1.3770 -1.2257 -4.1809 -8.0560 -12.0663 -14.7575 -16.2562 -16.8262 -16.6031 -14.6213 -10.8590 -6.2555 -3.6846 -3.6450 -3.7342 -4.0353 -7.6132 -10.8660 -10.5716 9.6447 7.8023 3.9088 0.9709 -1.2963 -2.9548 -3.6717 -3.5325 -2.8548 -2.7867 -5.2300 -17.9213 7.3168 7.9817 8.1669 8.3682 8.5119 8.7999 8.5177 8.2240 7.9760 7.1004 4.9797 2.8440 -0.2787 -2.8393 -5.1812 -6.5010 -7.8099 -7.3824 -4.9246 -1.2066 1.0202 -1.2524 -5.5773 -6.6635 -6.2109 -4.9615 -7.0357 -10.7105 -11.2719 12.8705 11.8805 10.2523 9.3642 5.4904 -1.6627 -6.1562 -9.1055 -10.2004 -10.6557 -12.0775 -23.3035 29.5404 29.4681 28.4882 26.7591 23.9950 19.9029 14.9906 9.9884 4.9431 0.7201 -2.7182 -4.9295 -5.8329 -5.2835 -3.1411 -1.0337 -1.2994 -4.6551 -9.2940 -12.6166 -14.4507 -14.7304 -13.5533 -12.6574 -13.3765 -15.4995 -17.3894 -18.2530 -18.0815 0.4964 0.5507 1.1546 0.7370 -0.0255 -0.3498 -0.5226 -0.4656 -0.4711 -0.2868 -0.8174 -17.8110 -1.0744 14.9003 33.1596 35.0523 13.0736 2.0052 -0.7661 8.7597 2.7166 -6.4950 -4.2610 3.7720 -4.3426 -8.7782 -3.2656 -7.4382 -8.4893 -4.5093 -7.9161 -3.7247 -7.0520 -3.6709 -6.2650 -4.4960 -4.0238 -4.7559 -5.1416 -7.8610 -9.1128 0.6813 1.7272 1.1217 0.4323 -0.0682 -0.2650 -0.1787 -0.4185 -0.8065 -0.2104 -2.0153 -10.3544 17.3596 17.5673 15.0858 11.4644 7.3814 4.0226 -0.1410 -3.3849 -5.6204 -6.9233 -7.1105 -7.9534 -8.3396 -9.0384 -9.3087 -9.0779 -7.7416 -7.4684 -7.3969 -6.6548 -5.2109 -4.5759 -2.5217 -0.3381 2.7650 6.1586 8.7075 9.5670 8.7272 5.4636 3.5914 3.5111 3.4034 3.2185 1.4996 -0.7001 -2.2097 -2.6342 -2.6685 -12.4751 1.7656 9.2805 8.3218 6.4144 5.5901 4.5122 4.1170 2.0243 0.4668 -1.3946 -1.9080 -1.6016 -2.3054 -3.2805 -3.6877 -3.6998 -3.1360 -2.3723 -2.0691 -2.5325 -3.5697 -3.7685 -3.6638 -2.4370 -2.4841 -1.3748 -1.3849 -0.1182 1.3637 4.6978 -2.5191 0.6452 3.8178 5.9716 6.9002 5.0344 1.4694 -0.9067 -2.4853 -4.2997 -13.6280 3.6107 14.3113 15.3825 16.0172 17.0841 17.9406 17.4527 13.8237 9.1622 4.4761 0.4333 -1.8491 -4.1973 -6.2352 -7.3255 -6.6956 -3.8665 0.4871 1.8452 -1.9049 -6.4158 -9.6692 -9.9954 -8.3868 -6.3274 -7.5276 -11.6979 -13.0950 -12.8586 -10.3679 12.6405 9.4300 6.8308 1.9954 -1.8154 -4.0500 -4.6445 -4.9400 -4.6161 -4.1410 -6.6897 -21.7106 15.9574 13.5685 10.9183 9.2647 7.9607 6.5007 4.5878 3.5591 3.2169 1.2933 -0.0510 -0.9224 -2.2752 -2.6282 -3.7623 -4.7934 -4.9449 -4.3779 -4.6931 -3.1458 -4.4724 -5.0318 -4.9908 -4.4859 -5.0580 -5.3554 -5.0038 -5.0901 -5.7451 -5.4116 -5.6692 -5.7576 -5.1885 -3.0995 -0.5277 2.1995 4.1437 5.6134 6.8760 6.8216 -1.5471 19.4303 18.5843 17.0128 17.0462 18.3032 19.0230 17.0309 14.9915 13.9671 13.7472 10.8472 5.3475 -0.7858 -5.0732 -8.3887 -9.9459 -10.5501 -11.5448 -12.0790 -11.0765 -11.3340 -10.8130 -12.3197 -14.8319 -14.5526 -12.6243 -11.2782 -13.0457 -15.0877 2.8732 1.8570 1.3694 -0.0267 -0.8287 -0.4903 -0.4684 -0.4454 -0.2649 -0.5119 -3.0635 -20.4302 12.4117 13.0466 13.2331 13.4850 13.9028 13.3369 10.6679 6.6169 2.3362 -0.7175 -3.1184 -5.0629 -7.1577 -9.3769 -10.5260 -9.6526 -5.9526 -0.9724 3.2956 3.3183 -0.2154 -2.7832 -2.1155 -2.0009 -5.4287 -9.8635 -12.0371 -11.7310 -6.9389 19.8935 17.5132 8.1204 5.9513 -0.9114 -7.8096 -9.0959 -8.7765 -8.7232 -7.8238 -8.3381 -22.9941 5.4465 6.1545 6.5960 7.3692 6.5453 5.6331 3.5394 2.3607 0.8659 0.0509 -0.6899 -0.6602 -0.8114 -0.9871 -2.0620 -2.1051 -2.1293 -2.4346 -2.8842 -2.7862 -2.7031 -2.7005 -2.3058 -2.4182 -2.9614 -3.3012 -3.6250 -3.4399 -3.5562 1.1375 0.9550 0.1967 0.2876 -0.3489 -0.1347 -0.2618 -0.2052 0.1031 0.1921 -1.9213 -5.8132 19.3219 18.6070 17.2268 15.7037 13.2112 9.2621 6.1735 5.2932 6.8689 8.1175 8.5297 6.2006 2.9639 0.2106 -1.5424 -3.0741 -3.6228 -1.7612 1.1881 0.4888 -4.7011 -12.4521 -18.8925 -20.1895 -15.2633 -7.7586 -8.4595 -18.6161 -23.0341 7.2675 6.3572 1.7187 0.3913 0.3928 -0.3109 -1.9821 -2.8777 -3.2372 -3.3101 -4.4095 -25.2010 8.4541 8.1779 7.1194 5.4725 2.9601 1.1998 -0.3538 -1.2461 -1.9054 -1.1532 -0.8697 -0.7216 -1.4868 -2.8361 -3.9114 -3.9948 -3.2868 -2.9321 -1.6346 0.6941 1.5767 0.1133 -0.6901 -1.9526 -1.7040 -0.6393 -1.7853 -2.0227 -0.6415 6.3775 3.5011 1.7742 0.8521 -0.8807 -2.4262 -1.9793 -2.7130 -1.0301 -0.2906 -3.1850 -7.4694 10.0438 9.5730 9.4079 10.5993 13.6404 15.4525 14.4990 10.5598 6.2936 3.7658 1.8182 2.4916 3.9516 5.8549 9.0644 9.6627 6.8173 4.3977 1.3490 -4.2076 -12.0535 -17.0808 -19.6338 -19.7015 -18.7275 -16.8855 -13.8529 -11.6701 -15.4293 6.2710 4.5162 0.1386 -2.0908 -1.7858 -2.0793 -1.8138 0.2844 0.7409 0.2032 -4.3846 -24.8049 25.0551 24.1141 20.9653 16.3108 10.8527 5.3678 0.7364 -2.8219 -5.0859 -5.7650 -6.1499 -6.6367 -7.4276 -7.5696 -8.0119 -6.4695 -2.7893 0.4057 2.0532 0.8610 -1.2343 -2.5971 -2.0921 -3.1259 -5.4032 -7.7358 -7.6535 -8.0640 -10.0890 1.7165 0.5619 0.1133 -0.0994 -0.1364 -0.2660 -0.4353 0.5041 0.4384 0.8615 -3.2587 -14.5713 -0.2824 -1.2002 -1.1857 -0.7688 -0.8143 -0.7172 -1.5304 -2.1288 -3.0516 -3.6018 -4.8378 -6.1535 -7.7320 -6.8121 -6.1824 -3.6103 -1.4311 0.9978 1.1937 0.8415 2.4841 6.3803 8.8835 7.0925 6.7752 9.2623 5.7944 2.8315 -0.4967 18.7297 14.2388 10.8799 4.2826 -6.9342 -8.6376 -8.3976 -6.7575 -6.0459 -5.4581 -5.9001 -18.8293 10.1128 8.8893 7.3473 6.5214 7.2930 10.3397 14.0197 15.8841 13.7146 8.7127 4.4971 1.7567 0.2355 0.5650 2.5360 6.4325 6.1884 1.5759 -3.2537 -5.8565 -5.4444 -3.8630 -6.5876 -12.9364 -16.8492 -18.9964 -18.8056 -16.0076 -18.0217 3.9553 2.3698 1.9291 -0.0877 -0.9652 -0.9019 -0.4445 -0.6487 -0.2555 -1.3366 -3.6140 -25.1871 12.2726 11.2280 9.4632 7.3787 5.2189 3.6600 2.1581 1.8973 1.7208 1.1692 2.6675 2.1480 0.1934 -0.9062 -0.5766 -0.7741 -0.2722 -1.4842 -1.6982 -2.2141 -2.7162 -2.8899 -3.2527 -3.3476 -3.8185 -5.7582 -8.5254 -9.5927 -13.3491 2.9336 -0.0614 -5.1792 -7.8262 -5.8818 -2.4979 0.2810 2.5842 4.2687 5.4567 5.9224 -16.9053 37.2172 34.3913 31.2113 27.7111 23.6697 19.0839 14.6521 10.8663 7.8437 5.4886 3.9602 2.5869 0.5600 -1.9033 -4.6862 -7.3190 -10.0710 -12.7038 -14.7680 -15.8511 -16.1191 -16.1652 -16.2159 -15.9004 -15.8958 -16.8057 -17.9478 -18.4940 -18.3957 0.4419 0.2835 -0.0357 -0.2713 -0.3987 -0.3334 -0.2999 -0.1625 0.2757 0.6740 -0.1736 -16.8775 11.3753 13.7268 15.9469 19.2400 21.6371 21.2732 16.6665 10.0971 4.1118 -0.3896 -3.6531 -5.5614 -8.0681 -10.2817 -11.6723 -11.5104 -10.0734 -10.1816 -8.5685 -7.1045 -6.4138 -4.8696 -3.9548 -5.7824 -5.0034 -4.9254 -6.3935 -5.3682 -4.2986 12.8596 6.0788 2.4099 2.8908 0.0595 -2.3723 -2.9619 -4.0883 -4.5273 -4.0164 -6.3324 -17.4382 26.4179 26.6038 25.6315 22.7118 17.4654 11.2374 4.5630 -0.6721 -3.6490 -5.1965 -6.8885 -8.5149 -9.9685 -10.5303 -10.6988 -9.8426 -8.6196 -5.7793 -0.9658 3.2322 2.5498 0.5196 -0.4196 -3.4101 -7.4205 -10.7757 -11.9107 -12.1132 -13.5565 2.4448 1.0270 0.2616 -0.2763 -0.6725 -0.5323 -0.4687 -0.3345 0.1168 0.1296 -1.6954 -17.0871 18.4471 16.7466 13.9277 10.8916 8.7857 7.1932 5.5568 4.1778 3.8018 3.6509 4.1995 4.5197 3.7143 2.0835 1.0146 0.3919 -0.3931 -1.7518 -3.7102 -5.6106 -7.0424 -8.2355 -8.7436 -9.9803 -10.8971 -12.1221 -12.4526 -14.0451 -14.1182 1.5911 1.3311 0.9816 0.2592 0.5671 -0.1500 -0.6917 -0.0710 -0.0271 0.0589 -3.8492 -16.0146 5.9232 5.3337 3.8014 2.9697 3.4359 4.2543 3.4648 1.7717 0.1194 -0.0269 0.7474 1.7656 2.2681 3.3777 5.5350 7.6925 7.1170 5.0594 1.6134 -2.8840 -4.6636 -5.6498 -6.7260 -7.6581 -7.7482 -7.0077 -8.1003 -8.2149 -7.5709 2.7271 3.2452 3.0964 1.8085 1.2978 0.1047 -1.3807 -1.5844 -0.8243 -0.5104 -7.9799 -12.0827 12.4719 12.1361 10.1546 7.9843 6.3039 5.8891 4.6571 2.6181 -0.1657 -1.9369 -2.8607 -3.3105 -4.8578 -7.0042 -7.1916 -5.9866 -4.1997 -1.7831 1.5238 4.3316 3.2165 1.1019 0.2627 -0.7887 -2.3974 -4.1659 -7.7383 -8.8914 -9.3732 3.3631 2.1730 1.7422 1.8227 1.4558 0.1916 -0.0971 -0.1883 -1.5408 -1.1423 -7.7797 -11.8474 11.3451 10.9000 8.9585 6.1028 3.1858 -1.1621 -5.3836 -9.5575 -11.5639 -12.6129 -13.2817 -13.1921 -12.6233 -11.4537 -9.9063 -7.2485 -2.9323 -0.1679 2.3451 3.4644 4.1413 6.5832 8.0312 9.6000 9.3866 8.3390 7.0332 6.2115 5.4582 2.4819 2.4952 2.5332 1.3146 1.2840 1.1744 1.4075 1.6533 -0.7910 -1.1435 -12.4097 1.0916 23.6029 24.2878 23.1930 21.6752 20.1647 17.8825 13.5147 9.0959 4.9067 0.9398 -2.2819 -4.7976 -6.5405 -7.8935 -8.5957 -8.1319 -5.7029 -2.9010 -1.4003 -3.8107 -7.7146 -10.9603 -11.9185 -11.3097 -10.0262 -10.8911 -13.0763 -15.2199 -16.0905 -4.3614 -2.5556 -2.1777 -1.8997 -0.5988 1.0869 2.5785 3.4868 4.0967 3.3192 -2.9749 -12.6358 4.1481 24.8058 32.0050 24.1070 7.9048 5.1844 9.4865 6.9930 -4.1867 -5.3105 -0.1042 -5.3429 -7.9480 -8.8340 -11.8488 -10.9382 -11.6153 -10.8429 -8.8763 -8.2063 -5.9086 -4.6780 -0.7362 0.9339 1.6189 1.2420 -2.1650 -5.4458 -5.4417 3.8026 4.9367 2.9396 1.2003 0.8096 -0.4055 -1.2653 -1.7631 -2.9130 -1.4945 -5.8474 -8.5756 23.7954 23.1921 21.7016 20.0766 17.1113 13.7019 10.3999 7.0724 4.4505 3.2062 3.6711 5.1040 6.2303 4.8847 -0.1659 -4.8929 -7.3427 -9.3139 -10.9450 -11.4728 -10.0337 -7.5622 -3.5203 -5.8211 -14.2213 -19.1068 -19.3958 -20.2365 -20.5672 -0.5258 0.0632 2.1808 3.9092 2.4964 -0.3407 -0.5190 -0.8656 -0.9771 -1.7973 -3.6241 -20.0182 -3.7360 -3.6185 -3.3879 -2.0035 -2.0453 -3.0452 -2.1024 -2.2759 -2.6516 -4.3569 -3.6456 -2.3824 -3.7115 -5.0829 -6.2136 -7.0765 -6.8802 -6.4042 -2.6943 1.3032 2.8085 -2.4198 6.8476 8.5220 10.8666 10.9764 11.8694 11.6880 10.8525 -10.1854 -14.3979 -14.1885 -6.1104 -2.3069 3.0598 3.2787 7.7402 9.9334 10.5862 12.5907 18.9431 13.3492 12.8348 12.1001 10.6097 8.9141 7.8597 5.9391 3.8673 2.6411 2.3479 2.7602 2.8027 2.2779 0.4287 -1.3226 -2.0315 -2.1676 -1.5551 -1.2222 -2.1197 -4.0818 -6.1594 -8.1874 -9.3177 -9.4499 -9.7874 -10.1789 -10.6801 -10.4712 -3.7681 -4.8313 -5.1537 -4.2661 -3.2035 -1.4351 1.4217 3.2157 5.2602 6.9893 5.7708 -7.9426 23.1558 23.5472 22.1677 18.7915 13.0187 6.0783 -0.4803 -4.5728 -6.1861 -7.0011 -7.3578 -8.0890 -10.0377 -12.2340 -12.8288 -11.4502 -9.5173 -6.4728 -2.1175 2.0048 1.3570 -2.9595 -2.6436 1.5180 3.0406 -2.5769 -4.8065 -2.5134 -0.8343 3.1119 3.3528 5.9276 3.6737 2.5908 1.6925 -3.4674 -1.5813 -3.2207 -2.1812 -9.8987 -8.8538 26.4920 27.5278 23.5895 18.4003 14.4396 11.3628 6.6147 2.4341 -0.2444 -2.4075 -4.2073 -6.4485 -7.8162 -9.2259 -9.5571 -9.3064 -9.0910 -7.0174 -7.1701 -7.0279 -7.6510 -7.5329 -8.2698 -7.2504 -4.4537 -4.4137 -4.3225 -4.9571 -2.4902 -7.3866 -6.0243 -3.8745 0.0041 2.7020 4.9257 5.6046 5.2905 3.4738 1.6970 -6.4124 2.1053 20.0311 32.4089 21.4065 3.8740 5.8630 17.0357 3.7543 2.9904 15.6577 4.2113 -0.9665 3.2682 -4.9242 0.9109 -5.5297 -0.9790 -5.0003 -0.7131 -5.5269 -8.0296 -9.9403 -10.8809 -10.2649 -9.9965 -9.6956 -10.6759 -12.5982 -13.0794 -12.6109 0.8915 0.0604 -0.2305 -0.0021 -0.6053 -0.3414 -0.0731 0.4824 0.7549 -0.1062 -0.8306 -13.4365 16.7766 17.5169 16.4982 14.0891 10.0932 5.3461 0.6341 -3.6859 -5.9242 -6.3128 -5.9350 -5.7548 -6.0307 -6.0498 -6.4996 -6.5626 -4.8816 -3.2502 -3.2922 -4.2819 -4.8479 -5.5791 -4.7813 -3.1384 -3.4900 -2.8954 0.2902 4.4573 7.4915 -5.5534 -4.1269 -1.5355 0.4168 0.9124 3.0599 2.1241 2.4262 2.5000 4.5034 -4.7272 8.0549 14.2987 14.8926 15.4168 16.0974 16.7877 16.0424 12.9710 8.0251 2.9090 -0.5642 -2.9640 -4.5656 -6.3342 -5.7781 -3.4597 0.3272 2.7738 -0.3574 -4.8087 -8.1398 -9.6152 -7.9303 -6.2270 -7.0986 -10.3018 -13.1453 -11.2961 -9.1627 -8.7927 1.0994 1.8123 2.8974 2.9050 4.6509 3.4505 -0.6010 -1.4758 -2.7795 -2.4745 -9.4847 -15.4782 19.5896 21.6796 21.9059 19.1821 14.0268 8.5044 2.2676 -4.7266 -10.6450 -13.0460 -14.0860 -14.5335 -14.9498 -14.7870 -14.0697 -11.4549 -8.2147 -4.0260 0.3628 4.9113 3.4988 0.5780 1.9943 2.9810 0.8573 -1.3207 -0.0740 2.1207 1.4740 10.3387 1.2319 -0.4911 -1.8207 -1.0700 -0.8286 0.3764 0.2040 -0.8290 -1.6698 -5.4418 -14.7994 7.6904 8.5944 9.5072 9.8820 10.2276 10.5222 10.3373 9.3607 7.6459 4.8852 2.1707 -0.1575 -1.8433 -2.7877 -2.2526 -0.5664 2.3824 4.3345 3.5440 -0.6514 -5.2439 -9.2918 -11.7988 -14.1092 -12.7385 -9.1451 -9.6551 -10.7736 -10.0695 11.9243 11.2262 10.3898 9.8282 8.0787 3.3521 -3.2649 -10.5053 -13.2404 -13.3007 -14.4881 -21.2847 30.3070 29.5477 26.4796 21.7752 16.6251 11.7301 7.3299 3.8872 0.7290 -1.2037 -2.4737 -3.5896 -4.8044 -5.4589 -6.3339 -6.5407 -6.0748 -6.4957 -7.6726 -8.7065 -8.7749 -8.8999 -9.3481 -9.1891 -9.9612 -10.0486 -10.5500 -11.2845 -11.0000 -6.1498 -6.3059 -5.5965 -4.5595 -2.8356 0.0899 2.7110 4.5977 5.7639 7.0861 5.1987 -6.4033 12.2542 12.1227 12.1295 13.7252 16.2506 16.1281 10.9394 4.8988 -0.4731 -3.6819 -5.4021 -7.4944 -8.2715 -8.0576 -6.1477 -3.0306 1.9117 4.0560 2.1482 0.8098 0.1207 0.0058 -2.3034 -4.0466 -3.9220 -6.4147 -11.2118 -17.1187 -19.9247 6.0099 3.6952 1.2907 -0.5044 -0.8291 -1.0627 -1.1957 -1.1416 -1.4267 -1.5418 -3.2939 -24.4860 9.7234 8.7897 6.5360 5.5091 6.6941 8.8748 9.0238 7.6482 4.3129 1.4757 -0.7289 -2.4072 -4.4322 -5.3461 -3.7806 -1.1393 2.9797 3.5166 -1.5034 -4.0711 -4.3945 -4.4639 -5.1951 -6.0761 -6.0336 -6.9960 -6.5160 -4.9520 -7.0480 14.6458 13.1436 9.1440 2.7564 -0.8129 -3.8913 -6.6500 -6.1267 -6.0986 -6.7696 -9.3407 -21.2384 8.5519 7.5224 5.9151 4.8177 3.5030 2.2565 1.1622 0.1988 -0.5493 -0.3850 -0.1928 -0.4114 -0.8801 -1.0153 -1.0764 -1.4171 -1.4905 -1.3971 -1.0636 -1.1738 -0.9725 -1.8880 -2.3866 -2.7467 -2.5988 -2.5326 -3.1114 -3.2783 -3.3604 -3.8082 -3.8849 -4.0621 -3.5801 -2.8055 -1.5136 0.9076 2.8350 4.3455 5.8838 5.6825 -0.4474 7.7224 9.4298 7.9025 6.4102 5.0524 7.1733 6.8444 5.1985 1.7514 0.1644 0.4222 1.0885 -0.3101 -2.4745 -2.9872 -2.3617 -3.5889 -3.7306 -1.5428 -0.5556 -0.6425 -2.7366 -1.5405 -2.2119 -3.2504 -3.1003 -4.4891 -10.0519 -13.5853 -15.9446 -3.2508 0.2918 -0.9236 3.5700 5.1357 5.1789 6.0048 3.6122 3.0229 -6.6974 0.4660 12.4572 13.5760 13.8205 13.8979 14.7964 17.0228 18.4159 17.4577 14.0275 10.4467 7.5633 5.8220 5.5014 6.0819 6.4280 5.7453 2.9483 0.4368 -2.0706 -3.5909 -6.3177 -11.4245 -17.9894 -23.7008 -25.5017 -25.0724 -24.5956 -23.3443 -22.8376 1.8005 0.4050 -0.0309 -0.4072 -0.7903 -0.7639 -0.6330 0.2496 0.9862 0.2958 -1.1118 -25.7677 4.7942 4.1637 3.1217 3.4886 5.7426 8.4586 9.4051 8.4408 4.0573 -0.0847 -2.6488 -4.2622 -6.8882 -7.9882 -8.0785 -6.5745 -3.6736 0.0836 3.7506 4.2950 1.4430 1.7647 2.5945 0.5096 -1.4030 -2.4095 -4.2409 -7.3362 -10.5254 14.3716 9.9001 5.5613 -0.4343 -4.0106 -4.4911 -4.7396 -4.3992 -3.5933 -3.3021 -4.8629 -20.9215 21.6217 21.5816 19.9361 17.4078 14.6925 11.4780 7.7360 4.5567 2.3261 1.3757 0.8699 1.0465 1.1010 -0.3579 -2.1883 -4.1422 -5.5220 -7.4591 -9.7124 -11.0673 -12.8828 -14.8063 -14.5786 -12.2038 -9.6561 -7.6717 -6.6862 -4.4940 -2.3008 -2.8294 -2.2589 -0.7299 1.8580 3.4539 3.4053 2.7591 1.9997 0.5308 0.5471 -8.7356 -3.9438 1.0482 0.8820 0.3120 -0.0147 0.1548 1.1642 2.5065 4.2829 6.8793 9.8376 11.4462 10.6004 8.7525 7.4364 7.3679 8.2254 7.9411 4.8316 -0.5361 -4.6026 -6.7708 -7.8326 -7.7624 -5.3939 -6.4851 -9.7433 -13.7435 -16.3579 -14.4263 10.9932 7.6190 5.9532 4.7231 0.1759 -2.5109 -4.5002 -5.8815 -4.2941 -4.7897 -7.4879 -24.0798 8.4638 7.6638 6.7405 6.7849 9.6108 11.6513 11.2989 8.3544 3.0440 -0.8467 -3.9303 -4.9339 -3.7358 -4.1317 -2.0585 2.7514 7.6579 7.9793 2.3491 -1.2307 -6.1104 -5.2397 -3.7933 -5.5972 -9.8841 -12.1146 -11.4629 -8.7974 -10.4828 8.1529 4.6235 5.0235 -3.9150 -7.5503 -5.3361 -1.2531 6.4683 2.2949 -0.0550 -8.4536 -22.5498 9.8543 8.7085 6.2122 3.2566 2.0932 1.8184 0.6210 -1.4796 -2.3312 -2.6373 -4.0537 -4.6289 -4.6135 -3.7432 -2.1216 0.8603 3.6326 5.0735 3.4051 1.8301 1.3556 -1.1657 -2.6873 -3.2580 -2.3407 -3.5712 -3.7082 -3.8659 -2.5155 -3.0106 -3.6582 1.1257 3.5876 5.1138 3.8620 1.9732 0.5329 1.0253 -0.8077 -9.7439 -1.3313 -2.9689 -3.6925 -3.2882 -2.1408 -0.3207 1.4181 2.0372 0.1628 -1.5615 -1.1744 -1.1748 -2.3007 -3.8174 -4.8189 -4.0221 -1.3971 3.2927 7.6888 9.8326 7.1859 3.6459 2.2387 1.1579 1.6876 0.0249 -1.1344 -3.2237 -2.0378 -1.2991 8.2053 7.6257 7.4526 5.2692 0.6619 -2.5875 -5.5343 -3.5316 -3.8077 -4.5073 -9.2463 -10.5134 9.7903 6.5524 4.2187 2.8629 1.5301 2.6090 2.8671 -0.4058 0.1443 2.1025 2.2641 2.2540 2.8227 4.2305 2.6246 0.1011 -0.5037 -2.5281 5.9816 8.8018 3.5902 -2.1055 -8.2336 -7.5542 -8.3988 -6.7700 -12.1221 -12.6274 -4.0986 15.9214 10.1934 4.0555 -0.7395 -4.4850 -5.0408 1.8975 -3.7215 -6.1218 -5.7613 -6.1980 -17.6420 29.2898 29.1270 27.9887 26.0350 22.7880 18.9325 14.8741 10.7353 6.3361 1.5435 -3.4721 -8.0918 -11.5471 -14.2024 -15.5430 -16.5237 -17.5387 -18.0503 -18.3862 -18.0321 -17.2039 -14.4258 -7.6289 -2.1492 -0.8256 -0.4858 0.7007 -0.7217 -3.5225 7.7486 6.5879 3.6481 0.1102 -1.4486 -1.4917 -1.7642 -2.4587 -2.7189 -2.3171 -5.8956 -12.2398 4.4923 5.9961 3.5313 -0.1456 -2.9561 -3.9972 -5.5178 -6.5495 -8.2904 -9.4007 -9.5368 -9.2154 -10.6132 -12.2389 -12.1450 -11.3212 -9.2653 -6.1867 -0.5047 2.8376 -1.5645 1.0645 6.8296 12.9030 17.1169 16.2097 16.8799 17.2979 14.2904 3.6672 1.4385 0.6939 -0.7824 -1.0548 0.7585 1.5905 1.4809 1.2351 0.7042 -9.7316 9.0007 17.1014 20.3617 22.1941 23.6186 23.8203 21.4980 16.0993 10.2193 4.4688 0.3152 -2.6232 -4.4565 -5.7629 -7.4399 -7.9702 -8.7398 -8.6156 -7.5758 -5.6113 -3.8507 -4.7710 -7.9311 -11.5008 -12.9375 -11.7921 -9.1891 -8.8722 -13.4431 -16.6139 2.6455 3.2595 3.6340 3.0753 1.5772 -0.5994 -1.7486 -1.8960 -2.7589 -2.4890 -4.6996 -18.2534 -6.7950 -4.3945 -2.1814 -0.0391 1.0243 2.1577 2.4659 2.7954 2.9978 2.3847 1.7726 1.1096 -0.1514 -3.1834 -4.1688 -4.9229 -4.7410 -4.3919 -0.8572 1.4319 1.2097 1.1996 -0.6138 0.0932 1.9431 3.2864 3.0149 3.0300 4.5238 -4.4471 -6.9731 -3.2184 -0.9733 0.9643 1.9409 2.7291 5.1726 4.8981 5.2725 -5.3657 7.6481 codec2-1.2.0/src/codebook/dlsp1.txt000066400000000000000000000002041445607075400170210ustar00rootroot000000000000001 32 25 50 75 100 125 150 175 200 225 250 275 300 325 350 375 400 425 450 475 500 525 550 575 600 625 650 675 700 725 750 775 800 codec2-1.2.0/src/codebook/dlsp10.txt000066400000000000000000000002041445607075400171010ustar00rootroot000000000000001 32 25 50 75 100 125 150 175 200 225 250 275 300 325 350 375 400 425 450 475 500 525 550 575 600 625 650 675 700 725 750 775 800 codec2-1.2.0/src/codebook/dlsp2.txt000066400000000000000000000002041445607075400170220ustar00rootroot000000000000001 32 25 50 75 100 125 150 175 200 225 250 275 300 325 350 375 400 425 450 475 500 525 550 575 600 625 650 675 700 725 750 775 800 codec2-1.2.0/src/codebook/dlsp3.txt000066400000000000000000000002041445607075400170230ustar00rootroot000000000000001 32 25 50 75 100 125 150 175 200 225 250 275 300 325 350 375 400 425 450 475 500 525 550 575 600 625 650 675 700 725 750 775 800 codec2-1.2.0/src/codebook/dlsp4.txt000066400000000000000000000002151445607075400170260ustar00rootroot000000000000001 32 25 50 75 100 125 150 175 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900 950 1000 1050 1100 1150 1200 1250 1300 1350 1400 codec2-1.2.0/src/codebook/dlsp5.txt000066400000000000000000000002151445607075400170270ustar00rootroot000000000000001 32 25 50 75 100 125 150 175 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900 950 1000 1050 1100 1150 1200 1250 1300 1350 1400 codec2-1.2.0/src/codebook/dlsp6.txt000066400000000000000000000002151445607075400170300ustar00rootroot000000000000001 32 25 50 75 100 125 150 175 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900 950 1000 1050 1100 1150 1200 1250 1300 1350 1400 codec2-1.2.0/src/codebook/dlsp7.txt000066400000000000000000000002041445607075400170270ustar00rootroot000000000000001 32 25 50 75 100 125 150 175 200 225 250 275 300 325 350 375 400 425 450 475 500 525 550 575 600 625 650 675 700 725 750 775 800 codec2-1.2.0/src/codebook/dlsp8.txt000066400000000000000000000002041445607075400170300ustar00rootroot000000000000001 32 25 50 75 100 125 150 175 200 225 250 275 300 325 350 375 400 425 450 475 500 525 550 575 600 625 650 675 700 725 750 775 800 codec2-1.2.0/src/codebook/dlsp9.txt000066400000000000000000000002041445607075400170310ustar00rootroot000000000000001 32 25 50 75 100 125 150 175 200 225 250 275 300 325 350 375 400 425 450 475 500 525 550 575 600 625 650 675 700 725 750 775 800 codec2-1.2.0/src/codebook/gecb.txt000066400000000000000000000114401445607075400167020ustar00rootroot000000000000002 256 2.709998 12.018395 0.046750 -2.738813 0.120993 8.388947 -1.580275 -0.892307 1.193065 -1.915609 0.187101 -3.276788 0.332251 -7.664550 -1.479436 31.246122 1.527612 27.709463 -0.524379 5.250122 0.553330 7.438797 -0.843451 -1.952987 2.263885 8.610286 0.143143 2.365493 0.616506 1.284268 -1.711327 22.096672 1.008128 17.396519 -0.106718 1.418905 -0.136246 14.273605 -1.709087 -20.531881 1.657866 -3.391068 0.138049 -4.957845 0.536729 -1.943748 0.196307 36.851948 1.272479 22.556494 -0.670219 -1.906045 0.382092 6.401132 -0.756911 -4.901017 1.829313 4.613800 0.318794 0.736830 0.612815 -2.075045 -0.410151 24.787077 1.776016 13.190924 0.106457 -0.104492 0.192206 10.183844 -1.824423 -7.715654 0.931346 4.348355 0.308813 -4.086001 0.397143 -11.808859 -0.048715 41.227314 0.877342 35.850311 -0.759794 0.476634 0.978593 7.674673 -1.195056 3.038826 2.639894 -3.411063 0.191127 3.603507 0.402932 1.084298 -2.152022 18.107616 1.546802 8.322713 -0.143089 -4.075922 -0.150142 5.866741 -1.408444 -3.250696 1.566148 -10.413164 0.178171 -10.226697 0.362164 -0.028556 -0.070125 24.390722 0.594752 17.482765 -0.286980 -6.904069 0.464818 10.205451 -1.006841 -14.357209 2.329569 -3.691613 0.335745 2.407139 1.019658 -3.155647 -1.259455 7.991899 2.383695 19.680567 -0.094947 -2.413742 0.209330 6.664768 -2.221034 1.379860 1.292387 2.046333 0.243626 -0.890741 0.428773 -7.193658 -1.113744 41.341354 2.609799 31.140514 -0.446468 2.534188 0.490104 4.627575 -1.117226 -3.241744 1.791562 8.414926 0.156012 0.183336 0.532447 3.154545 -0.764484 18.513958 0.952395 11.771298 -0.332567 0.346987 0.202165 14.716752 -2.129240 -15.558954 1.353583 -1.926790 -0.010963 -16.336386 0.399053 -2.790569 0.750657 31.148336 0.655743 24.481859 -0.453210 -0.735879 0.286900 6.546703 -0.715673 -12.357815 1.548488 3.872171 0.271874 0.802339 0.502073 -4.854850 -0.497037 17.761904 1.191161 13.954446 0.015630 1.331566 0.341867 8.935369 -2.316009 -5.395058 0.758610 1.964505 0.241320 -3.237686 0.267151 -11.234388 -0.273126 32.624771 1.753523 40.431995 -0.784011 3.045757 0.705987 5.661178 -1.386400 1.353557 2.376458 1.674851 0.242973 4.732178 0.491227 0.354061 -1.606762 8.658955 1.167111 5.987103 -0.137601 -12.041750 -0.251375 10.397204 -1.431514 -8.904108 0.988280 -13.208963 0.261484 -6.354970 0.395932 -0.702529 0.283704 26.899563 0.420959 15.441778 -0.355804 -13.727784 0.527372 12.398515 -1.169559 -15.998457 1.906688 -5.816055 0.354492 3.851572 0.825760 -4.162642 -0.490190 13.057229 2.255773 13.526449 -0.004956 -3.237127 0.026709 7.866448 -1.810372 -0.451183 1.083827 -0.183620 0.135836 -2.266582 0.375812 -5.512248 -1.966443 38.682854 1.977988 24.565481 -0.704656 6.358810 0.480786 7.051749 -0.976417 -2.422727 2.502148 6.759346 0.083588 3.258795 0.543629 0.910013 -1.231959 23.091507 0.785492 14.807000 -0.213554 1.688002 0.004748 18.171820 -1.547192 -16.116837 1.501045 -3.281141 0.080133 -4.634724 0.476592 -2.180929 0.442470 40.303989 1.072766 27.592009 -0.594738 -4.166807 0.422480 7.616091 -0.927521 -7.274406 1.991623 1.296359 0.291307 2.398781 0.721081 -1.950625 -0.804256 24.929474 1.648388 19.119692 0.060852 -0.590639 0.266085 9.103249 -1.957399 -2.884607 1.116929 2.672397 0.354580 -2.748541 0.330733 -14.156131 -0.527851 39.575626 0.991152 43.194984 -0.589619 1.269186 0.787401 8.730713 -1.013800 1.025075 2.825403 1.895381 0.240890 2.745566 0.427195 2.544456 -1.953109 12.243958 1.448616 12.060747 -0.210492 -3.379058 -0.056713 10.204020 -1.652370 -5.102737 1.294748 -12.270802 0.111608 -8.675921 0.326634 -1.167627 0.021781 31.125782 0.455335 21.468430 -0.375440 -3.371207 0.393620 11.301987 -0.851456 -19.414892 2.107030 -2.228865 0.373233 1.924056 0.884438 -1.720581 -0.975127 9.840128 2.003303 17.395407 -0.036915 -1.111372 0.148456 5.399970 -1.914412 4.773819 1.447907 0.537122 0.194979 -1.038179 0.495771 -9.955025 -1.058987 32.947052 2.011222 32.454418 -0.309650 4.719106 0.436082 4.635524 -1.237105 -1.254284 2.022740 9.428345 0.190342 1.460767 0.479017 2.484788 -1.078483 16.221748 1.207642 9.654212 -0.258087 -1.672358 0.071852 13.415978 -1.877228 -16.072031 1.289568 -4.871185 0.067713 -13.442700 0.435551 -4.165503 0.466140 30.589535 0.904895 21.597990 -0.518369 -2.532048 0.337363 5.637264 -0.554975 -17.400511 1.691879 1.145742 0.227934 0.889297 0.587303 -5.729732 -0.262133 18.666620 1.395048 17.002878 -0.019090 4.308379 0.304235 12.669943 -2.074059 -6.460845 0.920546 1.212957 0.284927 -1.785466 0.209724 -16.023964 -0.636067 31.576820 1.349887 34.677502 -0.971625 5.300859 0.590249 4.449709 -1.567867 3.602385 2.145497 4.516663 0.296022 4.120170 0.445299 0.868772 -1.441931 14.128431 1.355752 6.007401 -0.012814 -7.496573 -0.430000 8.500124 -1.204693 -7.113256 1.101018 -6.836818 0.196463 -6.234002 0.436747 -1.129788 0.141052 22.854876 0.290821 18.811443 -0.529536 -7.732510 0.634280 10.789847 -1.334721 -20.325773 1.815645 -1.903316 0.394778 3.797577 0.732682 -8.183819 -0.741244 11.768337 codec2-1.2.0/src/codebook/lsp1.txt000066400000000000000000000001051445607075400166550ustar00rootroot000000000000001 16 225 250 275 300 325 350 375 400 425 450 475 500 525 550 575 600 codec2-1.2.0/src/codebook/lsp10.txt000066400000000000000000000000311445607075400167330ustar00rootroot000000000000001 4 2900 3100 3300 3500 codec2-1.2.0/src/codebook/lsp2.txt000066400000000000000000000001051445607075400166560ustar00rootroot000000000000001 16 325 350 375 400 425 450 475 500 525 550 575 600 625 650 675 700 codec2-1.2.0/src/codebook/lsp3.txt000066400000000000000000000001131445607075400166560ustar00rootroot000000000000001 16 500 550 600 650 700 750 800 850 900 950 1000 1050 1100 1150 1200 1250 codec2-1.2.0/src/codebook/lsp4.txt000066400000000000000000000001221445607075400166570ustar00rootroot000000000000001 16 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 2100 2200 codec2-1.2.0/src/codebook/lsp5.txt000066400000000000000000000001271445607075400166650ustar00rootroot000000000000001 16 950 1050 1150 1250 1350 1450 1550 1650 1750 1850 1950 2050 2150 2250 2350 2450 codec2-1.2.0/src/codebook/lsp6.txt000066400000000000000000000001271445607075400166660ustar00rootroot000000000000001 16 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 2600 codec2-1.2.0/src/codebook/lsp7.txt000066400000000000000000000001271445607075400166670ustar00rootroot000000000000001 16 1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000 codec2-1.2.0/src/codebook/lsp8.txt000066400000000000000000000000561445607075400166710ustar00rootroot000000000000001 8 2300 2400 2500 2600 2700 2800 2900 3000 codec2-1.2.0/src/codebook/lsp8910.txt000066400000000000000000000035051445607075400171250ustar00rootroot000000000000003 64 2.048073 2.534502 2.645915 2.019670 2.269744 2.605462 1.961101 2.329646 2.562857 1.968573 2.532712 2.616918 2.183480 2.514381 2.629582 2.259379 2.516615 2.620410 2.172791 2.462460 2.567064 2.097666 2.303933 2.421685 2.052990 2.353242 2.546992 2.043642 2.232362 2.499262 2.106151 2.393131 2.488401 2.099167 2.437862 2.558655 2.013877 2.422875 2.530071 2.033848 2.483776 2.584598 2.114474 2.516856 2.602372 2.229214 2.584056 2.678855 2.131151 2.584299 2.674845 1.472721 2.477091 2.630241 2.010907 2.598415 2.682989 2.353653 2.524066 2.619773 2.419897 2.623938 2.699605 2.319080 2.602148 2.689044 1.860342 2.503881 2.616576 1.910517 2.386693 2.610126 1.748689 2.371809 2.496542 1.618495 2.403425 2.554956 1.844073 2.437026 2.533443 1.924810 2.388543 2.502698 1.937227 2.258363 2.501697 1.687554 2.209123 2.545239 1.851950 2.278628 2.565632 1.868154 2.330150 2.444883 1.874180 2.213118 2.351940 1.757311 2.030626 2.433836 1.650306 2.152371 2.243421 1.612794 1.884686 2.339313 1.745431 2.278895 2.389449 1.590923 2.304155 2.408510 1.475982 2.275548 2.509897 1.508695 2.045463 2.455520 1.872054 2.061777 2.246202 1.983947 2.159155 2.445535 1.745180 2.483765 2.593698 1.900116 2.079600 2.407479 1.841672 2.167042 2.486827 1.932912 2.148464 2.569850 2.134174 2.363673 2.584252 2.106094 2.450645 2.638417 1.954135 2.460313 2.666512 1.907634 2.573801 2.674025 1.625579 2.539569 2.656363 1.785866 2.572616 2.676082 1.798447 2.376454 2.624298 2.020033 2.397244 2.619868 1.946581 2.468791 2.564185 2.008920 2.342400 2.469132 1.983846 2.271044 2.395408 1.988039 2.154150 2.317920 2.077197 2.216622 2.389101 2.117255 2.283907 2.512242 2.177233 2.334622 2.458268 2.214655 2.425510 2.620013 2.199931 2.390272 2.520731 2.271755 2.448682 2.552649 codec2-1.2.0/src/codebook/lsp9.txt000066400000000000000000000000561445607075400166720ustar00rootroot000000000000001 8 2500 2600 2700 2800 2900 3000 3100 3200 codec2-1.2.0/src/codebook/lspjmv1.txt000066400000000000000000001320071445607075400174010ustar00rootroot0000000000000010 512 0.435217 0.668864 1.010296 1.220420 1.503978 1.784675 2.135458 2.357467 2.618905 2.738042 0.179285 0.333160 0.500638 0.796950 1.039987 1.234969 1.652301 1.848233 2.625555 2.804968 0.268785 0.356576 0.595753 1.044339 1.249382 1.428680 1.686986 1.864689 2.339905 2.513801 0.120070 0.165585 0.484694 0.959160 1.237528 1.529146 1.837513 2.107730 2.487495 2.766846 0.150214 0.229487 0.628240 0.961255 1.337065 1.598306 1.919745 2.217861 2.537318 2.759560 0.268624 0.345980 0.569637 0.754737 0.916538 1.508543 1.786354 1.954418 2.369530 2.501822 0.246064 0.468874 0.662711 0.890015 1.147153 1.510431 1.781056 2.095943 2.655391 2.800369 0.191631 0.280628 0.393229 0.611761 1.420170 1.707741 1.873032 2.101553 2.280348 2.499488 0.361668 0.507047 0.789974 1.045992 1.502378 1.677032 1.905337 2.162555 2.432259 2.590873 0.208160 0.294285 0.448634 0.694229 0.872517 1.070315 1.703352 2.168742 2.426189 2.603657 0.316939 0.513618 0.705487 0.917036 1.175989 1.311140 1.618599 2.037840 2.450523 2.579395 0.241068 0.377728 0.521595 0.717203 1.310414 1.539991 1.736431 2.098926 2.297917 2.587348 0.234937 0.281875 0.780422 1.440733 1.609428 1.756430 1.977206 2.148605 2.602032 2.722501 0.178679 0.242672 0.416988 0.708348 0.955620 1.176671 1.781798 2.054488 2.281591 2.448112 0.345036 0.421080 0.740887 1.165442 1.324944 1.488798 1.763463 1.906174 2.395050 2.649158 0.249586 0.357494 0.520747 0.847195 1.428408 1.597779 1.778194 2.178502 2.413437 2.564662 0.295235 0.574231 1.249097 1.464097 1.727559 1.926790 2.095363 2.284830 2.567065 2.722480 0.341930 0.427307 0.634001 0.804212 0.905629 1.333373 1.790329 1.892756 2.445823 2.602828 0.363948 0.508985 0.667357 0.946354 1.437562 1.626545 1.811141 2.039091 2.291882 2.435493 0.163514 0.277407 0.409207 0.902065 1.189070 1.339636 1.802411 1.960770 2.652930 2.818987 0.302643 0.359753 0.651207 1.208021 1.423702 1.548149 1.882130 2.015591 2.260535 2.578896 0.155928 0.216908 0.381812 0.654803 1.112373 1.589935 1.847562 1.976716 2.224078 2.725337 0.274981 0.347675 0.572000 0.736046 0.894248 1.632373 1.891391 2.056890 2.602900 2.721779 0.154496 0.243461 0.348174 0.689505 1.573807 1.700306 1.943182 2.101580 2.564661 2.773169 0.292612 0.466612 0.795936 1.047468 1.413693 1.750848 2.062894 2.340073 2.613612 2.769493 0.242896 0.361500 0.555859 0.793597 0.932291 1.409467 1.863863 2.009534 2.464500 2.677491 0.221646 0.344724 0.554564 0.729403 1.136575 1.301772 1.529181 2.163590 2.395821 2.610805 0.160969 0.224467 0.371545 0.626879 1.160953 1.444229 1.675966 1.879779 2.478590 2.672023 0.214172 0.341585 0.676575 0.977397 1.325429 1.720096 2.072595 2.369539 2.635285 2.778792 0.203311 0.289438 0.458739 0.914153 1.122885 1.302925 1.583844 1.886828 2.187869 2.427039 0.280383 0.371600 0.824827 1.100246 1.236225 1.398923 1.578041 2.016000 2.368973 2.506732 0.170627 0.251778 0.393686 0.608347 1.287599 1.446665 1.793278 2.036554 2.310153 2.752439 0.180580 0.288746 0.987854 1.431706 1.677216 1.915661 2.124939 2.289452 2.589612 2.754264 0.176335 0.266263 0.445421 0.706403 0.875402 1.422918 1.758670 1.960910 2.410676 2.601751 0.216173 0.287404 0.480696 1.009765 1.291304 1.476644 1.895584 2.064286 2.284064 2.483108 0.176523 0.273934 0.403407 0.966139 1.304724 1.436612 1.944728 2.084836 2.544458 2.762416 0.311836 0.550501 0.879591 1.096228 1.276661 1.477859 1.817706 2.154340 2.560467 2.779841 0.179765 0.250560 0.455939 1.023886 1.225132 1.475662 1.734617 1.918713 2.147342 2.438235 0.271033 0.457235 0.599622 0.821049 0.940125 1.200937 1.849716 1.986656 2.548168 2.751578 0.179326 0.248002 0.426405 0.817060 1.285888 1.565019 2.117359 2.298712 2.572404 2.752701 0.374409 0.535936 0.897009 1.185070 1.591569 1.757202 1.967944 2.179985 2.457394 2.622641 0.185472 0.282752 0.409439 0.657499 0.856446 1.029396 1.879933 2.069323 2.344742 2.753103 0.375964 0.578457 0.758945 0.929339 1.127475 1.259437 1.704109 2.122973 2.336031 2.498298 0.225641 0.361030 0.501679 0.783379 1.314851 1.452621 1.714150 1.987157 2.225703 2.724361 0.144996 0.252919 0.632145 1.226038 1.575343 1.901549 2.171481 2.390554 2.682293 2.809834 0.172022 0.263338 0.448634 0.729435 0.984007 1.171597 1.757049 1.990232 2.321305 2.771210 0.235731 0.351117 0.796871 1.055711 1.300224 1.591818 1.895875 2.122918 2.417888 2.599817 0.254053 0.319371 0.455623 1.086141 1.664667 1.915882 2.059084 2.233416 2.452037 2.586788 0.375538 0.742993 1.139911 1.337758 1.735562 2.013906 2.315012 2.483433 2.651575 2.755211 0.247245 0.481131 0.710366 0.897602 1.121094 1.271709 1.787346 2.199502 2.429663 2.740668 0.226103 0.311441 0.501648 0.844424 1.362818 1.531338 1.777474 1.989925 2.187493 2.358501 0.195862 0.296224 0.609554 0.783241 1.243472 1.445477 1.637032 2.022645 2.483557 2.646137 0.233302 0.299441 0.472792 1.249457 1.457875 1.601860 1.831433 1.993719 2.597193 2.755433 0.168096 0.224183 0.382700 0.596214 1.060587 1.294418 1.605760 1.848489 2.357695 2.569186 0.330050 0.445912 0.661713 0.874446 1.000792 1.452973 1.943987 2.076916 2.423883 2.612359 0.226382 0.287303 0.517631 0.806229 1.309009 1.885280 2.160514 2.286410 2.526377 2.660822 0.203170 0.499314 0.887358 1.235074 1.462922 1.698260 1.999316 2.229225 2.571613 2.766691 0.307531 0.378353 0.573606 0.712218 0.850169 1.308996 2.059092 2.263816 2.497943 2.676815 0.276203 0.510250 0.686800 0.902844 1.205197 1.327979 1.718894 2.038947 2.256393 2.697149 0.161948 0.229115 0.393619 0.683613 1.137811 1.322692 1.783723 1.961584 2.389073 2.636082 0.201334 0.276773 0.468994 0.967017 1.475971 1.632424 1.965774 2.197278 2.480593 2.701553 0.214587 0.315421 0.469498 0.733397 1.146003 1.277911 1.727839 2.227135 2.440264 2.681122 0.255602 0.394609 0.743393 0.977796 1.199085 1.405972 1.918336 2.224828 2.479187 2.663394 0.245989 0.352625 0.517055 0.802830 1.558712 1.795653 1.944055 2.133640 2.333267 2.479982 0.337423 0.480433 0.869036 1.139571 1.630764 1.822959 2.074843 2.292613 2.479130 2.625317 0.220974 0.358850 0.571640 0.752791 0.937013 1.151721 1.674398 2.062466 2.558717 2.784838 0.267518 0.331708 0.541111 1.116547 1.411121 1.532868 1.792949 1.933520 2.248940 2.628644 0.084613 0.105083 0.297424 0.916949 1.256301 1.567029 1.885388 2.189875 2.522795 2.792102 0.205328 0.287223 0.724462 1.032395 1.457708 1.642169 1.925628 2.175524 2.429638 2.605488 0.232554 0.338724 0.502115 0.859975 1.044090 1.245652 1.806555 1.999641 2.261164 2.459984 0.291638 0.379172 0.626072 0.792796 0.959124 1.504886 1.734465 1.919612 2.614359 2.722709 0.191554 0.263114 0.426797 0.610628 1.077406 1.829543 2.021948 2.210572 2.427652 2.613828 0.389151 0.679476 0.915414 1.036635 1.250846 1.586610 2.040972 2.281500 2.567941 2.718815 0.203200 0.301280 0.470357 0.668716 0.851737 0.980327 1.570862 2.037617 2.289067 2.693877 0.304064 0.405934 0.710274 0.962705 1.128820 1.341667 1.635050 1.845382 2.079916 2.507510 0.171777 0.240705 0.409371 0.786432 1.223202 1.375689 1.691760 1.866080 2.350406 2.493942 0.231251 0.277994 0.557867 1.325822 1.660352 1.779477 2.007138 2.172322 2.440457 2.652308 0.188101 0.259494 0.412543 0.624843 0.839549 1.033700 1.634128 1.931944 2.246076 2.425773 0.361304 0.419465 0.795676 1.184605 1.296796 1.578447 1.841746 1.997361 2.540538 2.687139 0.274372 0.338938 0.492443 0.963516 1.509514 1.706378 1.869885 2.077166 2.261281 2.444183 0.415990 0.652103 1.031293 1.269551 1.572746 1.772975 2.004659 2.175272 2.430606 2.596553 0.242045 0.370942 0.534392 0.763529 1.001165 1.129764 1.682192 2.144644 2.324478 2.715697 0.377438 0.588168 0.765394 0.976873 1.356652 1.490088 1.737970 2.006774 2.213691 2.389973 0.191625 0.284123 0.405342 1.016777 1.432730 1.547592 1.813930 1.958317 2.470765 2.649257 0.272672 0.349555 0.633911 1.152234 1.303938 1.547640 1.919504 2.047696 2.562779 2.730575 0.168423 0.236330 0.421468 0.831345 1.083543 1.553448 1.880726 2.064701 2.370864 2.632945 0.219318 0.301481 0.513617 0.765086 1.026019 1.514647 2.048203 2.248568 2.499810 2.657069 0.232695 0.347947 0.495203 0.718830 1.423013 1.722493 1.879584 2.165044 2.420251 2.589658 0.270284 0.336865 0.684929 1.155789 1.690421 1.876744 2.027359 2.226178 2.446748 2.582000 0.149701 0.193747 0.352019 0.520123 0.823974 1.434753 1.686592 1.961148 2.370914 2.693067 0.254818 0.412303 0.601514 0.771438 1.175450 1.376569 1.539029 1.937039 2.408576 2.563621 0.233713 0.355886 0.593725 0.762880 1.271479 1.563900 1.797523 2.094688 2.538627 2.711734 0.179028 0.237103 0.396818 1.042021 1.633539 1.762676 2.123935 2.322391 2.588193 2.751345 0.182027 0.251039 0.434581 0.714302 0.950997 1.437895 1.813570 1.969103 2.145882 2.353968 0.501538 0.692148 0.848860 1.071308 1.350543 1.489476 1.841643 2.104284 2.341536 2.515294 0.274530 0.381470 0.526682 0.922143 1.444946 1.573605 1.858767 2.066747 2.284796 2.626819 0.360617 0.583131 0.979491 1.254083 1.488351 1.797557 2.219518 2.482176 2.742366 2.862025 0.140913 0.220301 0.619552 0.818307 1.052429 1.339972 1.830726 2.133953 2.536378 2.751128 0.293514 0.391691 0.790080 0.962740 1.160319 1.526602 1.805491 2.041462 2.361619 2.564962 0.199542 0.290571 0.452891 0.689515 1.258530 1.409879 1.886242 2.228126 2.465677 2.726646 0.296920 0.356356 0.784287 0.996540 1.146175 1.623865 1.815498 2.038297 2.600627 2.705700 0.206451 0.276025 0.537547 0.802572 1.220407 1.642060 1.863625 2.001978 2.215339 2.585384 0.333650 0.464751 0.653772 0.966306 1.103865 1.340203 1.784701 1.914591 2.470171 2.686916 0.181861 0.244870 0.376456 0.554383 1.329897 1.810440 2.047836 2.202318 2.660855 2.817057 0.450565 0.647291 0.951172 1.229431 1.519644 1.686812 2.049107 2.267169 2.501284 2.650596 0.219996 0.320591 0.427747 0.601183 0.753448 0.929578 1.741979 2.285789 2.472633 2.749566 0.333848 0.423373 0.658791 1.031299 1.222625 1.365771 1.901889 2.121101 2.290306 2.531185 0.166064 0.233902 0.383355 0.661806 1.226567 1.399684 1.771269 1.974537 2.173487 2.566344 0.189286 0.243602 0.390584 1.387930 1.588719 1.763237 2.091118 2.316314 2.593526 2.755080 0.158404 0.224878 0.385000 0.668463 0.942954 1.411967 1.700313 1.828069 2.059396 2.692546 0.325989 0.461263 0.851471 1.045709 1.284028 1.516199 1.797341 2.088387 2.437669 2.627215 0.223709 0.289190 0.632812 0.858738 1.541903 1.746766 1.935738 2.184816 2.404330 2.583013 0.545842 0.952420 1.340820 1.516838 1.838879 2.012890 2.244968 2.403170 2.592285 2.691119 0.238526 0.349079 0.494582 0.987665 1.170746 1.348229 1.468645 2.296964 2.644160 2.787381 0.270857 0.442003 0.655998 0.881913 1.259254 1.428358 1.769867 1.998528 2.395589 2.652840 0.154384 0.211806 0.489481 0.997257 1.249817 1.541232 1.778865 1.949397 2.319136 2.623391 0.268258 0.312888 0.589114 1.258625 1.572705 1.675430 1.912780 2.070458 2.279933 2.564230 0.170715 0.224965 0.374011 0.540197 1.161887 1.499072 1.925865 2.082569 2.246619 2.469724 0.324358 0.391989 0.706816 0.833614 1.015725 1.568995 1.735976 2.127068 2.558411 2.653871 0.178059 0.258575 0.374125 0.536831 1.334827 1.798628 1.986978 2.189252 2.432266 2.626696 0.198857 0.420955 0.817664 1.178363 1.466742 1.821295 2.207327 2.474411 2.738275 2.851185 0.188344 0.324302 0.470468 0.790033 0.934101 1.188722 1.887171 2.052833 2.448325 2.630236 0.201295 0.365646 0.526513 0.758388 1.140096 1.267331 1.650173 1.879342 2.102889 2.600286 0.135058 0.169428 0.307348 0.503160 1.018083 1.447946 1.810984 2.134002 2.480277 2.759846 0.178006 0.266610 0.390327 0.928681 1.501613 1.621327 1.871356 2.025864 2.580442 2.770801 0.246182 0.424290 0.644023 0.801168 1.114876 1.277757 1.503317 2.074888 2.295695 2.501380 0.322996 0.430355 0.631600 1.047698 1.221840 1.426726 1.903081 2.032223 2.516726 2.708452 0.292994 0.430599 0.619178 0.794567 1.283029 1.652817 1.840836 2.069946 2.385375 2.528246 0.525494 0.787797 1.121816 1.387482 1.674574 1.936221 2.224042 2.390624 2.634276 2.743234 0.299504 0.409196 0.602235 0.892336 1.056426 1.253766 1.489136 1.639876 2.427480 2.650368 0.423758 0.520480 0.758987 1.041257 1.173655 1.423676 1.818235 1.936407 2.363001 2.626644 0.155042 0.247496 0.641445 0.954509 1.224970 1.465850 1.837841 2.090456 2.451501 2.716155 0.251949 0.421094 0.706797 0.975659 1.259906 1.520067 1.816310 2.122017 2.474913 2.716671 0.215220 0.302248 0.730598 0.896343 1.145567 1.370192 1.700685 2.022563 2.283265 2.489220 0.285230 0.453559 0.663670 0.861526 1.011602 1.247419 1.655985 1.861291 2.578936 2.731333 0.162067 0.219409 0.373433 0.544669 1.103298 1.597178 1.921040 2.143402 2.406499 2.660484 0.342367 0.511499 0.931350 1.163219 1.393645 1.611146 1.972769 2.194416 2.470766 2.649264 0.251010 0.364125 0.560956 0.746545 1.019837 1.170725 1.532945 2.288671 2.577088 2.723074 0.315001 0.489412 0.720682 0.877607 1.090466 1.253848 1.448221 1.922954 2.255887 2.408634 0.174666 0.235793 0.387644 0.554402 1.231089 1.456137 1.688034 2.127450 2.367035 2.597270 0.215113 0.341915 1.043717 1.322751 1.495414 1.741895 1.961164 2.239824 2.544905 2.703945 0.219852 0.301770 0.513912 0.705474 0.877540 1.295896 1.699002 1.987057 2.287968 2.496966 0.290638 0.366442 0.655155 1.044990 1.172154 1.532536 1.800791 1.948931 2.509679 2.660055 0.232252 0.313770 0.658552 0.941977 1.463174 1.665488 1.862461 2.027843 2.534016 2.701236 0.326539 0.552681 1.121731 1.331381 1.520072 1.867084 2.082861 2.332474 2.606039 2.737092 0.190254 0.340428 0.492777 0.739738 0.895461 1.079371 1.643156 1.795290 2.491822 2.729382 0.283586 0.418440 0.587306 0.870866 1.418553 1.577030 1.799498 2.069398 2.274484 2.438103 0.235752 0.357650 0.502891 1.012434 1.258853 1.407789 1.820057 1.955830 2.505903 2.734330 0.278412 0.343137 0.849977 1.232895 1.350504 1.590626 1.787519 2.091578 2.541360 2.663856 0.162966 0.243159 0.439238 0.684821 0.887783 1.462899 1.881739 2.044253 2.289393 2.705002 0.235063 0.371799 0.578210 0.752199 1.008546 1.476284 1.804912 2.271399 2.655042 2.789653 0.154939 0.223696 0.344718 0.667555 1.495659 1.669436 2.069883 2.307215 2.627692 2.811343 0.239702 0.335917 0.716616 1.131805 1.452514 1.639133 2.105515 2.279822 2.502030 2.669220 0.226818 0.331261 0.472705 0.651974 0.781639 1.219798 1.822904 2.082732 2.439327 2.610900 0.223413 0.359594 0.534704 0.741518 1.225894 1.389874 1.618191 2.009911 2.207000 2.459844 0.171308 0.268378 0.383799 0.858926 1.376293 1.519165 1.780601 1.922915 2.623094 2.802402 0.140134 0.212320 0.443224 0.967457 1.264241 1.562153 1.929148 2.217388 2.668341 2.830751 0.221323 0.322124 0.485563 0.818589 1.011837 1.198984 1.423616 1.669403 2.157523 2.363190 0.369687 0.525655 0.719213 0.939654 1.137631 1.312217 1.599935 1.826813 2.355221 2.580680 0.211975 0.314411 0.489148 0.739213 1.377801 1.554504 1.824373 2.158875 2.352992 2.722621 0.170698 0.296368 0.934285 1.243133 1.555900 1.866544 2.159940 2.363436 2.585032 2.738530 0.189263 0.305887 0.439912 0.784610 1.227264 1.342508 1.587650 1.754907 2.439893 2.721315 0.296339 0.385169 0.612012 1.081322 1.276361 1.437178 1.871470 2.001718 2.339094 2.640217 0.229588 0.320544 0.517278 0.969137 1.142560 1.626089 1.877916 2.115461 2.546741 2.708025 0.248869 0.420193 0.732388 1.049015 1.303410 1.601458 1.949210 2.239464 2.648223 2.822614 0.207600 0.292320 0.496539 0.857149 1.182294 1.399849 1.714165 1.868238 2.027936 2.200737 0.225558 0.396897 0.541783 0.873366 1.178972 1.299579 1.677191 1.849602 2.330475 2.752717 0.176821 0.231377 0.372767 0.508565 1.152819 1.808050 2.112679 2.250073 2.571342 2.748550 0.352149 0.515765 1.023238 1.260221 1.443565 1.622067 1.872804 2.100177 2.489280 2.671043 0.166138 0.263444 0.370151 0.590066 0.754819 0.940533 1.761870 1.946611 2.445015 2.758191 0.342082 0.476411 0.656223 0.851774 1.003992 1.153372 1.694401 2.065625 2.255642 2.440148 0.227237 0.376514 0.514329 0.894887 1.141673 1.283052 1.831377 1.985902 2.334470 2.784878 0.215891 0.269548 0.684111 1.405658 1.674813 1.800925 2.172085 2.339395 2.591569 2.730100 0.236240 0.400377 0.533684 0.750343 0.910405 1.089112 1.737729 1.912807 2.192519 2.688733 0.169242 0.284879 0.916252 1.169769 1.433683 1.644376 1.919124 2.161625 2.482664 2.682591 0.270731 0.336506 0.477594 1.042714 1.605840 1.796859 1.945909 2.160039 2.354913 2.520950 0.420586 0.652563 1.117162 1.406006 1.747537 1.947424 2.203094 2.359970 2.547902 2.682168 0.281552 0.395037 0.640181 0.944531 1.193959 1.330492 1.718657 2.188389 2.444591 2.578673 0.311824 0.476892 0.633431 0.845825 1.332518 1.491656 1.693614 2.041082 2.289317 2.439399 0.133945 0.200790 0.647237 0.927687 1.188883 1.369658 1.699557 1.972777 2.295259 2.678185 0.204796 0.278215 0.443465 1.270484 1.405209 1.640920 1.824252 2.327085 2.599637 2.772533 0.183970 0.244116 0.410594 0.639103 1.221589 1.404867 1.628358 1.902439 2.168632 2.306804 0.343622 0.434735 0.666599 0.868069 1.048942 1.532778 1.819835 1.971884 2.288701 2.448745 0.238017 0.320361 0.657255 0.917611 1.303306 1.727361 1.988909 2.181455 2.442965 2.613322 0.323613 0.545056 0.930173 1.226059 1.440181 1.772300 2.056890 2.347811 2.689382 2.820616 0.288930 0.401387 0.617124 0.836453 0.990306 1.261227 1.913283 2.110049 2.324584 2.557162 0.332670 0.480804 0.656147 0.880536 1.029566 1.230493 1.769063 1.932296 2.200370 2.585210 0.185551 0.265352 0.409432 0.608847 1.034698 1.222821 1.876965 2.171647 2.403502 2.666441 0.155026 0.223348 0.401684 1.079141 1.415789 1.620021 2.045515 2.258512 2.631625 2.802291 0.183461 0.263081 0.425694 0.635685 1.188664 1.357556 1.574991 2.085982 2.288725 2.511108 0.314738 0.463011 0.648733 0.877651 1.002890 1.265811 2.005414 2.198095 2.481535 2.714178 0.244411 0.318444 0.546578 0.793615 1.326150 1.735479 1.945598 2.114662 2.315350 2.478535 0.326237 0.543540 0.987361 1.304413 1.684932 1.902147 2.207172 2.374273 2.557527 2.716216 0.157795 0.283302 0.430398 0.660379 0.811060 1.142539 1.479298 1.718714 2.670264 2.847556 0.220856 0.283872 0.779935 1.074940 1.312211 1.626329 1.837609 1.968885 2.155988 2.602381 0.140763 0.205719 0.406561 0.762459 1.041266 1.486993 1.838306 2.114606 2.552810 2.772285 0.140451 0.395920 0.792110 1.108001 1.402642 1.623079 1.943151 2.227952 2.546163 2.773998 0.229862 0.336462 0.546590 0.810150 1.201906 1.346787 1.825323 2.092925 2.285730 2.473359 0.224913 0.328246 0.517269 0.874793 1.012587 1.452178 1.695778 2.014930 2.511447 2.672574 0.247745 0.335741 0.546558 0.710177 1.170556 1.727789 1.970678 2.158532 2.482819 2.628913 0.398252 0.555087 0.890367 1.121205 1.381533 1.601228 1.866647 2.066612 2.405164 2.588016 0.198563 0.288867 0.478054 0.658477 0.851841 1.027105 1.539739 2.021106 2.579462 2.784184 0.304271 0.371642 0.661590 1.068976 1.224249 1.411927 1.680524 1.869770 2.100073 2.308554 0.188223 0.257939 0.432402 0.735050 1.318038 1.485528 1.828110 2.046435 2.307018 2.457237 0.246723 0.297276 0.604475 1.310901 1.570442 1.688851 1.913658 2.051334 2.556011 2.714965 0.158309 0.234509 0.435792 0.667900 0.957567 1.235918 1.592945 1.818158 2.307389 2.768973 0.419843 0.501412 0.766892 1.073173 1.189374 1.480225 1.766597 1.922151 2.537937 2.694771 0.275140 0.335563 0.678421 1.081521 1.592379 1.772635 1.931245 2.140699 2.333804 2.490857 0.372056 0.856814 1.239538 1.409989 1.690297 1.863018 2.072702 2.273547 2.532657 2.690517 0.321254 0.422981 0.604856 0.793437 0.912112 1.128454 1.795979 2.173232 2.360146 2.536137 0.395214 0.598779 0.771997 0.946713 1.213777 1.330433 1.660335 1.977154 2.165056 2.344018 0.225286 0.317828 0.464801 1.112329 1.369512 1.511999 1.921954 2.053407 2.593519 2.777285 0.330612 0.407807 0.730129 1.259731 1.459811 1.605671 1.981307 2.137009 2.465971 2.679722 0.213145 0.305305 0.507016 0.662299 1.056848 1.479862 1.671904 2.102707 2.369871 2.581994 0.219658 0.296096 0.443507 0.610973 0.799691 1.676579 1.965487 2.153235 2.502228 2.692999 0.174947 0.257739 0.373547 0.552567 1.405316 1.614249 1.848917 2.117795 2.317884 2.711904 0.209667 0.297529 0.756195 1.095304 1.564196 1.844775 2.103697 2.292657 2.520051 2.679489 0.170138 0.240310 0.452247 0.684414 0.880102 1.366921 1.741648 2.131295 2.505730 2.732611 0.278164 0.468635 0.707518 0.853693 1.054780 1.210458 1.540941 2.174562 2.410662 2.612138 0.155738 0.238890 0.352836 0.621012 1.441438 1.619698 1.825165 1.975331 2.525373 2.748574 0.223776 0.274424 0.479048 0.797871 1.694190 1.878135 2.135285 2.373726 2.595422 2.729787 0.151088 0.198286 0.326558 0.536276 0.845893 1.141653 1.460565 1.762868 2.025851 2.177303 0.434445 0.614208 0.887657 1.028446 1.191359 1.392204 1.786886 2.062481 2.423405 2.619356 0.180755 0.275311 0.397787 0.859366 1.409762 1.523325 1.908846 2.082319 2.389720 2.743887 0.275975 0.508416 0.889894 1.318925 1.633314 1.904728 2.169012 2.374655 2.726973 2.847666 0.156239 0.262624 0.406657 0.739074 1.044495 1.201234 1.810887 2.005600 2.581700 2.804889 0.195391 0.258771 0.654924 0.824371 1.315259 1.500728 1.765938 2.063992 2.341176 2.513659 0.178034 0.301047 0.463020 0.716172 1.198868 1.340454 1.834558 2.022132 2.400750 2.776294 0.340368 0.404236 0.843747 1.039238 1.202107 1.708051 1.914952 2.169509 2.521521 2.623348 0.218465 0.289694 0.528045 0.817051 1.132337 1.580464 1.838891 1.983392 2.147493 2.348131 0.322509 0.458058 0.654679 0.958976 1.118211 1.321565 1.901390 2.046409 2.360931 2.664215 0.191821 0.252321 0.389176 0.581111 1.529667 1.931689 2.083614 2.270465 2.566855 2.713879 0.493961 0.710827 0.982260 1.196274 1.419327 1.620910 1.928015 2.145652 2.429769 2.601973 0.213148 0.311589 0.424636 0.602664 0.736895 1.022165 1.992278 2.218533 2.611628 2.850324 0.288129 0.434441 0.629313 0.856153 1.289667 1.424520 1.875795 2.150240 2.351814 2.536843 0.160031 0.230716 0.406654 0.870424 1.156517 1.392317 1.804098 1.951437 2.210479 2.735164 0.229340 0.293962 0.503222 1.242097 1.475824 1.624647 1.998680 2.144499 2.578549 2.753270 0.158770 0.220035 0.363386 0.577761 0.963090 1.174939 1.738169 1.979202 2.162436 2.661916 0.346062 0.444816 0.716985 1.180717 1.370580 1.522996 1.892173 2.066682 2.395796 2.627659 0.307495 0.389330 0.612607 0.969283 1.557708 1.839939 1.996737 2.172382 2.420627 2.539195 0.437804 0.726957 1.291168 1.503297 1.765428 1.962121 2.163647 2.336227 2.579616 2.708524 0.232184 0.333678 0.528368 0.706749 1.203280 1.379018 1.611161 2.154678 2.592903 2.750319 0.272652 0.461710 0.625777 0.839609 1.342021 1.496726 1.715376 2.137572 2.370040 2.597390 0.184908 0.302324 0.454883 0.880307 1.104383 1.292526 1.777203 1.943364 2.444174 2.622726 0.265644 0.341261 0.553228 1.139475 1.427148 1.560441 1.933941 2.084129 2.393307 2.654135 0.167920 0.207301 0.370331 0.525538 1.030891 1.368163 1.782474 2.062404 2.332762 2.526299 0.343172 0.433912 0.717501 0.889734 1.052060 1.695278 2.053156 2.208456 2.608869 2.718320 0.216527 0.305247 0.445890 0.729271 1.639736 1.903284 2.053351 2.221254 2.432253 2.568018 0.110545 0.209955 0.844788 1.174205 1.492201 1.810243 2.177274 2.440496 2.697294 2.835232 0.217384 0.337412 0.488999 0.761842 0.879715 1.209528 1.970747 2.120795 2.611654 2.791762 0.190459 0.296484 0.469967 0.800649 1.105561 1.278527 1.516938 1.693066 2.114420 2.716739 0.134814 0.175978 0.300425 0.496817 1.244295 1.485308 1.861721 2.131233 2.485046 2.773884 0.210174 0.278266 0.435508 0.927538 1.606908 1.753898 1.957554 2.166283 2.398518 2.749609 0.213766 0.315300 0.509924 0.709930 0.964724 1.106776 1.382615 2.001070 2.323214 2.565314 0.400615 0.524954 0.798552 1.012852 1.135488 1.474850 1.989029 2.130909 2.507971 2.679460 0.249400 0.377023 0.519635 0.754227 1.459559 1.642762 1.828961 2.077882 2.298228 2.467534 0.473365 0.683973 1.052341 1.375830 1.548106 1.747589 2.139299 2.318768 2.609977 2.739255 0.203877 0.341791 0.485180 0.884069 1.097592 1.269532 1.479924 1.757879 2.648399 2.822387 0.273046 0.404254 0.555403 0.954547 1.291233 1.399022 1.722890 1.903441 2.171984 2.645312 0.040369 0.117266 0.617136 0.892043 1.260331 1.541653 1.859383 2.153096 2.498232 2.761886 0.132414 0.211358 0.742445 1.066857 1.331084 1.570793 1.867458 2.132535 2.479624 2.731076 0.237329 0.326529 0.612538 0.790663 0.990133 1.413736 1.738235 1.936914 2.167728 2.451626 0.273960 0.405794 0.572530 0.933672 1.057816 1.397952 1.856531 1.997548 2.599486 2.760042 0.199334 0.298380 0.442931 0.628638 1.303213 1.640138 1.804023 2.113020 2.375455 2.548946 0.350188 0.502010 0.821298 1.038639 1.369294 1.592404 1.910815 2.156486 2.460508 2.653260 0.281558 0.399892 0.573105 0.753299 0.900613 1.054574 1.581987 2.178437 2.430354 2.616044 0.344653 0.543532 0.703715 0.862285 1.198215 1.338208 1.579080 2.060769 2.306749 2.485749 0.220701 0.326795 0.520618 0.755133 1.295552 1.451886 1.690502 2.200045 2.414271 2.615909 0.279478 0.332193 0.801527 1.345966 1.487477 1.678499 1.922202 2.100025 2.585571 2.713387 0.163502 0.212169 0.365096 0.525464 0.869846 1.208807 1.793988 2.040314 2.297180 2.469797 0.285531 0.341488 0.754059 1.170016 1.300835 1.513696 1.699861 1.889918 2.581459 2.706874 0.249595 0.366997 0.626427 0.945219 1.407043 1.560558 1.831657 2.231149 2.466354 2.654518 0.271671 0.443136 1.156412 1.406456 1.676521 1.856481 2.063218 2.230498 2.475840 2.639575 0.286620 0.427806 0.637320 0.803409 0.996161 1.266383 1.681751 2.003968 2.394651 2.588547 0.314906 0.440519 0.612129 0.896126 1.472415 1.717693 1.881351 2.099437 2.369166 2.495466 0.170277 0.251270 0.405477 0.915641 1.126887 1.436630 1.714771 1.893198 2.552995 2.738519 0.279410 0.337137 0.734563 1.281046 1.480602 1.611880 1.853215 1.994883 2.416054 2.654827 0.165776 0.226083 0.417544 0.744574 1.044468 1.534891 1.808494 1.944946 2.138491 2.601790 0.264579 0.336652 0.542033 0.710190 0.913338 1.655751 1.817762 2.231956 2.524436 2.658519 0.158194 0.235588 0.338347 0.541657 1.583377 1.766293 2.009135 2.243336 2.503941 2.775158 0.332612 0.509620 0.822935 1.075876 1.454286 1.650788 1.974450 2.251279 2.537342 2.745115 0.262817 0.359709 0.520893 0.707667 0.818364 1.438849 1.971249 2.087666 2.497014 2.646442 0.233200 0.399599 0.612456 0.775547 1.199192 1.355765 1.646901 2.136245 2.342490 2.695742 0.149687 0.238538 0.372248 0.634520 1.255813 1.433790 1.770041 1.928752 2.611905 2.824930 0.137016 0.210297 0.591489 1.125451 1.375648 1.685296 2.089612 2.390888 2.704458 2.844434 0.213490 0.341024 0.541716 0.750061 1.088199 1.244576 1.555338 1.965568 2.187900 2.383714 0.300159 0.489291 0.825022 1.037100 1.194088 1.347375 1.684747 2.024936 2.465611 2.740973 0.170029 0.255033 0.392758 0.727117 1.382065 1.579676 1.800912 1.959072 2.282335 2.728796 0.175883 0.365509 1.112175 1.385866 1.720391 1.977810 2.245295 2.421614 2.629567 2.754004 0.162590 0.248164 0.454630 0.763209 0.966031 1.282338 1.730743 1.938052 2.479376 2.667563 0.258043 0.345866 0.556520 0.981312 1.361528 1.482377 1.872244 2.158226 2.362269 2.555030 0.234139 0.348843 0.528234 0.987884 1.195217 1.422145 1.960028 2.127365 2.603321 2.793004 0.179699 0.559209 0.867682 1.088835 1.316888 1.571498 1.922198 2.197391 2.501118 2.728679 0.216784 0.310791 0.487492 0.932903 1.201954 1.366554 1.800398 1.977499 2.174265 2.537065 0.186878 0.400655 0.580952 0.846287 1.103872 1.266778 1.842772 2.019592 2.488005 2.717222 0.164641 0.248712 0.389358 0.772822 1.212561 1.369916 2.025869 2.277615 2.617524 2.809527 0.351899 0.520326 0.926597 1.219651 1.509839 1.676837 1.921744 2.111253 2.356380 2.545934 0.242182 0.365285 0.506156 0.716020 0.865221 1.011688 1.786917 2.122981 2.350877 2.767729 0.413776 0.559566 0.735800 0.928997 1.079117 1.267179 1.880069 2.152492 2.324834 2.539856 0.210597 0.329568 0.469735 0.788590 1.215495 1.319810 1.711456 2.058991 2.245438 2.653727 0.197937 0.254148 0.477985 1.227090 1.629920 1.767432 2.186975 2.385104 2.594869 2.725544 0.205489 0.333855 0.523915 0.706275 1.102152 1.246608 1.648901 2.026835 2.281695 2.759313 0.230328 0.322431 0.861834 1.145614 1.347211 1.576111 1.807275 2.004824 2.354365 2.572251 0.224898 0.282022 0.506636 1.152298 1.626560 1.752095 2.028178 2.218821 2.488955 2.670460 0.313732 0.625469 1.164472 1.499077 1.749612 2.018528 2.262230 2.429601 2.692165 2.822502 0.375623 0.575307 0.791200 0.935770 1.096937 1.343393 1.807992 2.187306 2.519720 2.694803 0.236981 0.332412 0.479270 0.844461 1.347641 1.490733 1.683942 2.039143 2.297619 2.458431 0.129047 0.206250 0.636751 0.865101 1.136893 1.356610 1.704798 1.916685 2.518358 2.756320 0.195171 0.266517 0.414793 1.239561 1.452906 1.608357 1.833045 2.047802 2.473522 2.621994 0.165853 0.212720 0.372757 0.536136 1.013938 1.339627 1.555122 1.945745 2.236281 2.440949 0.256981 0.368868 0.635878 0.802543 1.084757 1.439120 1.814729 2.120519 2.458154 2.621456 0.214382 0.297135 0.445091 0.702050 1.365102 1.851262 2.067026 2.207298 2.470728 2.612432 0.340710 0.532103 0.935278 1.171022 1.377886 1.638598 1.965274 2.246164 2.631266 2.806341 0.310524 0.412051 0.582478 0.768755 0.871594 1.119854 1.926346 2.207508 2.407091 2.636633 0.249349 0.443517 0.631532 0.810096 1.205129 1.357206 1.607396 1.984157 2.208016 2.645111 0.143090 0.185312 0.325214 0.504000 1.134467 1.327913 1.673654 2.006903 2.389284 2.746094 0.226575 0.298946 0.453938 0.998061 1.394600 1.597283 2.064183 2.223246 2.425469 2.569458 0.183924 0.255181 0.415834 0.624247 1.042338 1.203077 1.555240 2.125309 2.400352 2.661916 0.275610 0.365968 0.654909 0.990108 1.170799 1.455333 2.077561 2.252672 2.502315 2.685945 0.204334 0.287844 0.394810 0.761295 1.501200 1.784709 1.935569 2.152830 2.349263 2.545639 0.342976 0.527539 0.917466 1.160585 1.499531 1.761830 2.095272 2.301872 2.540570 2.694692 0.202374 0.333367 0.480179 0.708677 0.819505 1.105285 1.806641 1.953348 2.610844 2.797497 0.307033 0.368471 0.602486 1.108611 1.413347 1.528636 1.798519 1.986138 2.169052 2.437256 0.144073 0.196932 0.386988 0.819061 1.289767 1.625073 1.901924 2.136105 2.483019 2.707970 0.176760 0.268627 0.662082 1.056866 1.547973 1.711386 1.972939 2.249909 2.544471 2.761094 0.191409 0.292985 0.492193 0.800526 1.041836 1.278546 1.836626 2.028677 2.249387 2.627785 0.324102 0.399146 0.687435 0.868704 1.022957 1.582084 1.853847 1.981885 2.554914 2.677057 0.229172 0.302836 0.481418 0.704363 0.967567 1.828269 2.097295 2.258467 2.549112 2.704652 0.467124 0.696788 0.939500 1.094987 1.277543 1.488496 1.896279 2.158470 2.474182 2.659994 0.175418 0.234039 0.367674 0.513586 0.747619 1.008405 1.583161 2.053114 2.363292 2.681153 0.410273 0.561949 0.736215 0.956685 1.135688 1.288424 1.750612 1.937714 2.151318 2.489336 0.204541 0.277613 0.529607 0.722971 1.199975 1.447336 1.715634 1.921054 2.357781 2.507488 0.253116 0.311907 0.696982 1.320082 1.575418 1.705324 2.005068 2.168666 2.461879 2.665053 0.163657 0.237902 0.393374 0.609490 0.854272 1.089980 1.526387 1.842337 2.126252 2.679051 0.448627 0.530664 0.812719 1.095201 1.207641 1.575411 1.884209 2.034297 2.553007 2.688355 0.262717 0.338748 0.512685 1.003543 1.480178 1.622083 1.828518 2.142415 2.356457 2.511530 0.417111 0.636688 1.036571 1.319877 1.679924 1.873389 2.073722 2.249396 2.507732 2.651054 0.263698 0.461151 0.618737 0.830471 1.004041 1.158874 1.801566 2.020222 2.306558 2.743041 0.387779 0.575108 0.729791 0.932981 1.361163 1.505161 1.751183 2.068466 2.338260 2.487637 0.181510 0.265666 0.454631 1.082382 1.287303 1.579202 1.851178 2.096963 2.467237 2.646930 0.277668 0.345119 0.602341 1.179200 1.378990 1.545625 1.813861 1.962590 2.491799 2.664453 0.179320 0.248080 0.456925 0.722589 1.126932 1.579450 1.799397 1.950668 2.484125 2.707238 0.314322 0.381145 0.608651 0.727613 0.890472 1.610280 2.136172 2.258358 2.596376 2.709780 0.189539 0.266068 0.419729 0.651693 1.410161 1.643106 1.854810 2.275582 2.492054 2.722009 0.254466 0.313038 0.594149 1.012536 1.688813 1.935465 2.119184 2.287869 2.535543 2.667926 0.134691 0.171906 0.302740 0.492936 0.899551 1.229188 1.733940 2.012878 2.446339 2.742762 0.231556 0.365068 0.680761 0.889142 1.111338 1.295904 1.542636 1.971784 2.427562 2.631912 0.222525 0.305606 0.527193 0.687519 1.181381 1.671764 1.863683 2.072023 2.634517 2.779272 0.178770 0.237415 0.375160 0.856692 1.673680 1.813743 2.016791 2.272421 2.522601 2.735959 0.193532 0.268731 0.451328 0.753471 0.984854 1.285349 1.685647 1.884123 2.091677 2.243418 0.476037 0.651610 0.801054 1.010162 1.241374 1.355840 1.775976 2.086152 2.272907 2.454351 0.211657 0.308331 0.421366 0.865966 1.418774 1.556743 1.786149 2.020332 2.198585 2.631981 0.203789 0.490794 1.010137 1.275006 1.472213 1.810140 2.170639 2.437660 2.662122 2.788061 0.174355 0.252095 0.674715 0.842194 1.055087 1.278000 1.698680 2.070561 2.399385 2.657430 0.245109 0.324049 0.628822 0.927910 1.123601 1.580066 1.878640 2.054601 2.358721 2.546838 0.182644 0.253804 0.386248 0.614056 1.364821 1.545877 2.040174 2.218827 2.419010 2.624609 0.295605 0.367794 0.690701 1.055162 1.186600 1.644453 1.944154 2.101444 2.562120 2.691268 0.220878 0.289573 0.640307 0.822072 1.144055 1.567797 1.766410 1.908109 2.103459 2.560489 0.403453 0.526298 0.732204 0.901150 1.035869 1.339383 1.783990 1.941961 2.371032 2.626653 0.212825 0.258570 0.471588 0.685549 1.263740 1.821051 2.163822 2.288398 2.628063 2.788155 0.401181 0.642053 1.032473 1.236110 1.444450 1.686678 2.006722 2.228515 2.572112 2.723964 0.239433 0.341091 0.492629 0.707630 0.881426 1.030816 1.719255 2.344056 2.579063 2.756942 0.294093 0.382770 0.577412 1.009281 1.313036 1.419303 1.744673 2.094230 2.289039 2.475843 0.169805 0.236922 0.403314 0.638995 1.176446 1.352145 1.665573 1.909756 2.150120 2.716243 0.210447 0.277913 0.452474 1.402686 1.513430 1.720944 1.903938 2.278499 2.583756 2.743179 0.159574 0.225382 0.374008 0.714137 1.011253 1.371713 1.699162 1.871587 2.027056 2.491194 0.258602 0.557253 0.819720 1.038856 1.301470 1.445358 1.830613 2.098171 2.320809 2.541075 0.232756 0.282242 0.631974 0.898694 1.537444 1.869217 2.063967 2.234463 2.498226 2.633517 0.580133 0.997946 1.320956 1.481874 1.731605 1.898579 2.120712 2.290128 2.530088 2.651657 0.211840 0.307093 0.453360 0.945579 1.250815 1.490290 1.724135 2.281097 2.562699 2.752602 0.314276 0.493555 0.667782 0.896500 1.323006 1.482618 1.667487 1.974415 2.427345 2.555679 0.182455 0.261592 0.418011 1.050927 1.261387 1.443370 1.665467 1.939030 2.444695 2.638451 0.241570 0.306934 0.491293 1.105950 1.554827 1.666520 1.923917 2.087652 2.367600 2.654889 0.190084 0.254850 0.454062 0.724519 1.083362 1.393887 1.892335 2.088856 2.321764 2.484299 0.306497 0.389831 0.721793 0.839714 1.124754 1.652401 1.822919 2.273310 2.569195 2.669599 0.186200 0.273460 0.383201 0.564758 1.511073 1.845018 1.998284 2.194096 2.388693 2.587923 0.300722 0.478218 0.823364 1.127490 1.591141 1.871349 2.174720 2.403181 2.624785 2.782405 0.228884 0.358342 0.504622 0.795874 1.005622 1.152613 1.908053 2.124794 2.372473 2.797584 0.171885 0.248234 0.432842 0.833143 1.040892 1.269289 1.661635 1.918629 2.158962 2.653403 0.140943 0.193684 0.343025 0.562303 1.069552 1.543330 1.824473 1.961637 2.463513 2.770537 0.173053 0.245656 0.360656 0.960618 1.589535 1.689906 1.984141 2.142998 2.588389 2.759403 0.240180 0.429951 0.637440 0.786596 1.069147 1.226573 1.470883 1.952052 2.195064 2.615973 0.367862 0.471897 0.730834 1.082320 1.226293 1.462927 1.928169 2.052466 2.406737 2.662458 0.247175 0.358209 0.535946 0.781876 1.363697 1.635239 1.807233 1.993776 2.452769 2.601039 0.445578 0.687898 1.114108 1.301027 1.577397 1.886042 2.224903 2.436534 2.659695 2.761031 0.214389 0.336025 0.487794 0.759534 0.970518 1.141100 1.457335 1.624644 2.306922 2.715265 0.377300 0.466775 0.716121 1.083781 1.256543 1.411238 1.789433 1.936372 2.205572 2.562355 0.148362 0.214593 0.545023 0.840437 1.193325 1.480659 1.791868 2.083419 2.410537 2.676129 0.150403 0.278398 0.792676 0.976680 1.218845 1.405245 1.775056 2.162458 2.547861 2.746383 0.236301 0.328633 0.630867 0.839915 1.042349 1.298870 1.627752 1.839491 2.298928 2.493962 0.337889 0.497920 0.711277 0.850420 0.992027 1.246884 1.710746 2.086682 2.527158 2.707162 0.172215 0.236540 0.372897 0.525146 1.182577 1.735727 1.927035 2.114619 2.319170 2.542782 0.415304 0.624807 0.906616 1.117841 1.446155 1.669417 1.948413 2.172815 2.504530 2.670754 0.265417 0.407241 0.613894 0.816534 0.980063 1.156061 1.756747 2.274851 2.497193 2.712242 0.276440 0.468209 0.649518 0.816686 1.195171 1.355517 1.549226 1.935272 2.217871 2.426979 0.188925 0.277012 0.412665 0.672627 1.354807 1.514523 1.699988 2.144554 2.382186 2.586077 0.242630 0.352485 0.912974 1.343781 1.604428 1.801867 2.014791 2.193072 2.460809 2.631999 0.190903 0.285841 0.449070 0.760328 0.954285 1.182936 1.692638 1.878163 2.276840 2.465963 0.220659 0.300374 0.721694 0.947306 1.298330 1.562980 1.760618 1.888247 2.506445 2.689675 0.213168 0.290928 0.695227 0.918179 1.378186 1.631987 1.847886 2.003072 2.358358 2.619347 0.328586 0.517244 0.937320 1.376238 1.574840 1.764347 2.058630 2.224334 2.584444 2.756653 0.248486 0.367007 0.562147 0.750632 0.902785 1.147563 1.637415 1.912062 2.413993 2.605696 0.310691 0.477895 0.670796 0.940507 1.418293 1.563497 1.805141 2.114076 2.376358 2.535155 0.256555 0.414210 0.559427 0.981289 1.191646 1.378307 1.678398 1.849306 2.576704 2.756630 0.291424 0.335003 0.750149 1.289655 1.437209 1.599989 1.803177 1.967415 2.601748 2.733761 0.195254 0.279513 0.451755 0.649111 0.828694 1.609509 1.914906 2.091219 2.319589 2.534899 0.222304 0.332624 0.475678 0.685205 1.030332 1.737223 1.920979 2.378290 2.706719 2.817726 0.164833 0.240093 0.359862 0.801929 1.513677 1.641713 2.040524 2.248843 2.488659 2.714025 0.214777 0.287322 0.572644 1.145070 1.367112 1.752687 2.042424 2.222067 2.543047 2.697885 0.226099 0.330382 0.474439 0.687757 0.799187 1.319837 1.944566 2.078099 2.367800 2.508460 0.244540 0.392163 0.553692 0.729765 1.247865 1.448376 1.617590 2.074636 2.340052 2.518064 0.175381 0.314231 0.446023 0.797404 1.328458 1.439727 1.793346 1.939571 2.468800 2.721651 0.205808 0.293670 0.452447 1.074268 1.288235 1.655635 1.857504 2.364687 2.639812 2.798144 0.253926 0.392653 0.587584 0.800134 0.976310 1.185587 1.570687 1.821414 2.090893 2.349021 0.322461 0.410912 0.723569 1.060644 1.201524 1.400360 1.579189 1.788759 2.460242 2.616602 0.211266 0.304981 0.436011 0.771978 1.490623 1.677748 1.886227 2.113497 2.326353 2.727265 0.235012 0.406911 0.864785 1.291485 1.708295 1.938554 2.179896 2.352404 2.563792 2.711446 0.176814 0.268620 0.445837 0.823113 1.029776 1.271571 1.623388 1.811215 2.402140 2.614165 0.241865 0.339268 0.507509 1.003677 1.204347 1.372561 1.940795 2.101371 2.385606 2.669975 0.230878 0.334743 0.500370 0.879929 1.021894 1.533770 1.970789 2.128971 2.567262 2.717288 0.297505 0.451574 0.748848 0.988527 1.366237 1.606668 1.894660 2.174481 2.521427 2.759168 0.199265 0.271145 0.498160 0.854679 1.172103 1.364148 1.762079 1.969095 2.173538 2.311630 0.222173 0.424864 0.564942 0.829809 1.038172 1.194055 1.720601 1.858086 2.431760 2.741461 0.181961 0.226819 0.390513 0.556339 1.056596 1.553065 2.128349 2.258018 2.602497 2.802121 0.357600 0.565047 1.153012 1.350312 1.533576 1.718542 1.957892 2.175347 2.505650 2.678495 0.162257 0.236808 0.374039 0.570569 0.748034 1.172262 1.823392 2.053032 2.513769 2.772072 0.305794 0.465870 0.645121 0.882650 1.141294 1.266856 1.701581 2.002881 2.184124 2.411254 0.231652 0.380738 0.549642 0.837410 1.225266 1.332971 1.851582 2.119371 2.315077 2.732108 0.235449 0.286771 0.684809 1.346663 1.526630 1.703476 2.101486 2.254546 2.577181 2.718994 0.233870 0.446515 0.605080 0.814654 1.054963 1.178801 1.633158 1.849743 2.139379 2.732772 0.271706 0.335152 0.857227 1.253741 1.387189 1.702170 1.896767 2.191114 2.479999 2.601359 0.237386 0.314549 0.438339 0.912164 1.577764 1.877791 2.032790 2.197037 2.412322 2.536484 0.361168 0.574093 1.023843 1.468517 1.690562 1.917374 2.187368 2.334035 2.669095 2.806291 0.278480 0.398742 0.573342 0.839212 1.073888 1.222093 1.691681 2.165258 2.377410 2.536882 0.286018 0.447947 0.615060 0.849446 1.319465 1.463583 1.769948 2.001035 2.189431 2.450384 0.219440 0.301601 0.668534 0.861094 1.210001 1.498673 1.745120 1.877765 2.314377 2.619597 0.223591 0.352153 0.598841 1.217893 1.359082 1.591744 1.771089 2.213856 2.561538 2.735416 0.176857 0.236601 0.395107 0.634632 1.133495 1.335116 1.770374 1.981313 2.206556 2.339716 0.334735 0.402265 0.659168 0.781639 0.975228 1.664999 1.872069 2.047533 2.476961 2.573979 0.215968 0.284755 0.524241 0.781460 1.334811 1.772379 1.953878 2.194209 2.578250 2.741939 0.298193 0.489879 0.812985 1.183691 1.496418 1.679975 2.108792 2.316557 2.673779 2.851610 0.312989 0.415446 0.618011 0.899096 1.083683 1.263384 1.887396 2.243064 2.419448 2.570481 0.244471 0.431115 0.601512 0.813139 1.102163 1.221061 1.692440 2.033163 2.221795 2.619838 0.150949 0.219060 0.349217 0.611327 1.077112 1.250547 1.915518 2.083980 2.449999 2.792543 0.161611 0.218964 0.445377 0.927863 1.451151 1.768464 2.130012 2.366724 2.666003 2.814049 0.196000 0.297256 0.497266 0.691900 1.089877 1.273685 1.513723 2.006472 2.273782 2.572221 0.335268 0.460795 0.685187 0.867664 1.013807 1.479554 2.011994 2.168476 2.572643 2.717564 0.257604 0.340872 0.499757 0.843052 1.396548 1.831688 2.034226 2.170332 2.422618 2.540496 0.417663 0.631718 0.955424 1.197319 1.659797 1.879883 2.168797 2.359053 2.578087 2.698249 0.162052 0.251583 0.439900 0.660911 0.903902 1.320296 1.624758 1.778577 2.530531 2.799705 0.256861 0.322803 0.685370 1.086437 1.263276 1.569879 1.851654 2.014946 2.264711 2.447006 0.125192 0.176171 0.336135 0.781600 1.200220 1.439966 1.805419 2.077525 2.462470 2.738186 0.102286 0.191322 0.774556 1.076151 1.369456 1.627146 1.973015 2.236001 2.609367 2.812985 0.173442 0.232622 0.491622 0.844157 1.095241 1.370797 1.696966 2.051411 2.316061 2.502053 0.257531 0.343598 0.654071 0.838985 1.048102 1.487473 1.725385 1.897417 2.430505 2.585998 0.197900 0.276312 0.440283 0.705103 1.267341 1.740297 1.934483 2.154007 2.400200 2.624136 0.409590 0.596785 0.983751 1.181770 1.371153 1.502380 1.758280 2.018571 2.380053 2.592151 0.231819 0.332890 0.483514 0.644585 0.816808 0.926308 1.403298 2.233007 2.467857 2.678461 0.258610 0.340064 0.670485 0.908467 1.107611 1.456243 1.759580 1.932179 2.113118 2.310135 0.184377 0.249203 0.410806 0.587907 1.302501 1.510319 1.724432 1.981890 2.282904 2.422125 0.254110 0.313328 0.659859 1.265819 1.412949 1.665930 1.927154 2.101984 2.551446 2.673030 0.161592 0.237480 0.376535 0.637094 0.823028 1.137613 1.696425 1.875770 2.403632 2.639617 0.384501 0.466812 0.740791 0.938093 1.062352 1.509284 1.749143 1.917797 2.548157 2.671506 0.333872 0.419367 0.638994 1.092624 1.520550 1.649447 1.866619 2.148941 2.346723 2.506140 0.426216 0.686997 1.235881 1.428854 1.611591 1.792860 2.017593 2.233715 2.547773 2.696609 0.262949 0.367509 0.530429 0.741867 0.872474 1.069602 1.745566 2.061187 2.283843 2.494178 0.335782 0.547236 0.716211 0.919077 1.275686 1.408437 1.685118 1.967394 2.217639 2.446679 0.227629 0.330991 0.486068 1.117571 1.304983 1.510130 1.757258 1.946972 2.625557 2.782597 0.359850 0.436633 0.750634 1.201513 1.337571 1.594835 1.970273 2.113840 2.573808 2.729963 0.211871 0.304028 0.512758 0.663762 1.086354 1.633335 1.818017 2.129577 2.391080 2.600766 0.196092 0.279726 0.434488 0.624802 0.772358 1.404377 1.948777 2.160918 2.629996 2.775175 0.176304 0.262521 0.373719 0.581101 1.520108 1.736172 1.933230 2.140172 2.358130 2.753524 0.254932 0.381411 0.806187 1.102292 1.534523 1.750280 1.970904 2.159871 2.455922 2.658405 0.190385 0.288656 0.449066 0.678174 0.812376 1.449326 1.728657 1.966320 2.638812 2.789546 0.251178 0.386509 0.609363 0.797102 1.024159 1.181726 1.454661 2.012630 2.493092 2.698933 0.166654 0.266226 0.385171 0.711990 1.397897 1.532347 1.915974 2.088003 2.565270 2.789532 0.238453 0.306036 0.449309 0.876277 1.521437 1.933982 2.134420 2.267986 2.537601 2.658253 0.161634 0.219919 0.353206 0.524346 0.961806 1.207713 1.687918 1.916939 2.161870 2.320657 0.413612 0.597095 0.793763 0.986290 1.281786 1.412660 1.652465 2.016091 2.384164 2.528578 0.228655 0.341562 0.480989 0.988605 1.371003 1.477423 1.861026 2.015852 2.339752 2.773153 0.259092 0.597012 0.985224 1.321740 1.643354 1.957367 2.288682 2.497474 2.716492 2.844467 0.185652 0.304664 0.446232 0.864434 1.091795 1.273770 1.942575 2.095543 2.524648 2.768245 0.176687 0.256678 0.745652 0.934909 1.283760 1.440062 1.765242 2.122092 2.388099 2.590551 0.189805 0.275637 0.440995 0.821356 1.256020 1.410985 1.929781 2.120144 2.396030 2.604643 0.266823 0.337688 0.819408 1.134754 1.289204 1.777028 1.982886 2.221748 2.590286 2.698098 0.205348 0.276512 0.527305 0.727412 1.024647 1.653979 1.904178 2.046613 2.217922 2.455661 0.293498 0.424494 0.613795 0.956130 1.133981 1.324804 1.809031 1.953922 2.293854 2.575884 0.183120 0.249650 0.376204 0.543914 1.350827 1.907220 2.092551 2.255705 2.514391 2.687901 0.541205 0.789796 1.058955 1.269415 1.503899 1.702191 1.970176 2.175444 2.496810 2.652238 0.229326 0.339475 0.451881 0.661210 0.795832 1.073796 2.027104 2.206371 2.478903 2.726784 0.330006 0.506868 0.673076 0.887406 1.228765 1.349226 1.781290 2.086583 2.277762 2.480029 0.138389 0.200001 0.396259 0.811975 1.090712 1.460413 1.745493 1.904269 2.348250 2.699886 0.176584 0.242161 0.378270 1.177848 1.564718 1.678166 1.951618 2.121413 2.580109 2.737132 0.145852 0.198423 0.335644 0.550505 1.019727 1.371188 1.797635 1.943825 2.207490 2.746470 0.385078 0.503696 0.703239 1.069987 1.365736 1.472054 1.825827 2.159636 2.371283 2.520972 0.284950 0.388050 0.507352 0.879125 1.523530 1.776238 1.929597 2.157558 2.447986 2.586398 0.491116 0.756155 1.255200 1.522460 1.776579 2.028121 2.286059 2.429774 2.679106 2.776164 0.252477 0.396081 0.713022 0.861502 1.152223 1.370802 1.614010 2.144798 2.574072 2.712530 0.282756 0.438437 0.613566 0.847746 1.260772 1.379059 1.642202 2.137540 2.368369 2.522163 0.203971 0.322195 0.479842 0.953133 1.211278 1.397635 1.800812 1.954516 2.403478 2.573713 0.264533 0.358424 0.628768 1.111242 1.340246 1.506485 1.999590 2.194109 2.461411 2.667361 0.177730 0.223680 0.394553 0.556177 0.947415 1.500640 1.733528 1.926046 2.261466 2.436054 0.314223 0.363636 0.727886 0.851880 1.053844 1.798132 1.974354 2.182595 2.537995 2.629683 0.201778 0.275500 0.404891 0.747466 1.500050 1.841184 1.998843 2.226807 2.481989 2.669506 0.132164 0.314955 0.821473 1.196038 1.426590 1.699934 2.036856 2.323497 2.685471 2.828965 0.223374 0.347335 0.507730 0.773547 0.967916 1.134129 1.991403 2.306567 2.521364 2.788746 0.312742 0.449784 0.583287 0.934234 1.268567 1.365063 1.569295 1.687046 2.077299 2.595022 0.124286 0.162126 0.290730 0.654031 1.231658 1.538458 1.893070 2.184784 2.562637 2.798224 0.177049 0.251654 0.367891 0.912504 1.557576 1.693045 1.898991 2.072136 2.350163 2.646045 0.240517 0.378333 0.547809 0.754272 0.973321 1.103670 1.574418 2.028049 2.211127 2.562709 0.427795 0.519003 0.771284 0.937240 1.086617 1.609879 1.878750 2.052791 2.534118 2.657149 0.224370 0.317969 0.439666 0.812931 1.398497 1.626632 1.794178 2.114000 2.309157 2.496836 codec2-1.2.0/src/codebook/lspjmv2.txt000066400000000000000000000574071445607075400174140ustar00rootroot000000000000005 512 0.005167 -0.037310 -0.002159 0.016849 0.130396 0.039445 0.031680 -0.074412 -0.031499 0.060536 0.019479 -0.030564 -0.048137 -0.056279 -0.027829 0.020585 -0.011270 0.023913 -0.005706 0.011407 -0.023217 0.107455 -0.037777 0.004070 -0.017279 -0.090444 0.007641 0.099001 -0.047913 -0.017199 0.022700 -0.063865 0.047213 0.043843 -0.036225 0.001312 -0.123861 -0.038988 0.058666 0.074541 0.039508 0.110300 0.013954 -0.119228 -0.035807 -0.047392 0.027035 -0.004412 -0.032650 -0.037150 0.002491 -0.045447 0.158260 0.022828 -0.030124 -0.047856 0.088744 -0.009678 0.106688 0.087690 -0.027941 0.044084 -0.028500 0.018736 -0.069969 -0.035358 -0.051568 -0.030459 -0.017899 0.027632 -0.018607 -0.123557 0.019228 0.057485 -0.028907 0.019057 0.038151 -0.080220 0.034222 0.023081 0.021312 0.041905 0.112903 0.024092 0.093974 -0.116679 0.015344 -0.066059 -0.096437 0.004041 -0.022464 -0.116260 0.047819 -0.003921 -0.073504 0.001975 -0.025869 0.028200 0.122690 0.010627 -0.035672 0.078963 -0.009686 0.000743 -0.147582 0.016932 -0.020291 -0.096896 -0.237875 -0.029121 0.017376 -0.040130 -0.053865 0.154060 -0.013215 0.015215 -0.019023 -0.070604 0.032265 0.040340 0.102365 -0.022746 0.019895 0.050570 0.008845 -0.034134 0.044441 -0.049387 -0.140481 0.072570 0.013023 -0.006079 0.037574 0.004937 -0.081501 0.003696 0.049908 0.007355 0.000403 0.026006 -0.008466 0.080680 0.061382 -0.108985 -0.088060 -0.012275 -0.081061 0.020333 -0.079001 0.068724 -0.014081 -0.042609 0.093365 0.044120 0.000303 0.063391 0.096574 -0.105424 0.039041 0.010412 -0.054031 -0.084948 0.080406 -0.035883 0.137428 0.063037 0.050562 0.024690 -0.031394 0.130320 -0.015501 -0.078884 -0.076886 -0.013864 -0.073587 0.048778 0.003814 -0.031125 0.046897 0.028304 0.048692 0.132795 0.065450 0.059487 -0.042396 -0.176999 0.056943 -0.004135 -0.049378 -0.041083 -0.039445 -0.016292 -0.004550 0.062010 -0.079613 -0.054566 -0.008476 -0.016710 0.049202 0.025758 -0.078723 0.092091 0.096536 -0.065079 0.021161 0.076657 0.009203 -0.036866 -0.016559 0.012823 0.008225 -0.003006 0.108033 0.043120 -0.060870 -0.019346 0.022790 -0.001728 0.062304 -0.016965 -0.001302 -0.014490 -0.041803 -0.034058 -0.197066 -0.033655 -0.127217 -0.108681 -0.010571 -0.004705 -0.015553 -0.086069 0.034109 -0.101379 0.002068 -0.004003 -0.044637 -0.068617 0.052228 -0.047812 -0.043307 0.035681 0.042207 -0.055946 0.055944 -0.026792 -0.012601 -0.056710 -0.021094 0.105842 -0.025598 -0.078858 -0.013487 0.030728 -0.031956 0.031444 0.022763 0.025364 0.121366 0.070736 -0.084556 0.098118 -0.024301 -0.058655 -0.043194 -0.011752 -0.043781 0.091051 -0.071201 -0.020980 0.082904 -0.031657 -0.088247 0.066709 -0.079182 -0.012151 0.011796 -0.010589 0.100656 0.094539 0.035967 0.025338 0.071826 0.009741 -0.040209 0.006866 -0.015095 -0.168469 -0.056133 0.060145 0.045830 -0.068969 0.034551 0.015842 -0.092809 0.054699 0.138744 0.001726 0.006927 0.005167 0.016978 0.046384 -0.060183 -0.040742 -0.072692 -0.022489 -0.029728 -0.065018 -0.124741 0.044927 -0.029057 -0.037154 0.031068 0.060086 0.009984 0.009311 -0.006957 -0.105508 0.059637 -0.019564 -0.068154 -0.066443 0.000799 0.028579 0.097063 0.096936 0.030230 -0.034623 -0.088918 0.040334 0.019439 -0.050707 -0.003294 -0.028505 -0.053599 0.062460 -0.070688 -0.016465 -0.035680 0.017378 0.009363 0.048761 0.043374 0.039587 -0.023232 -0.067033 0.042663 0.054070 -0.042797 -0.089391 -0.030497 -0.050249 0.059528 0.089089 -0.029633 0.064125 -0.086614 -0.002005 0.080620 0.000502 -0.003490 0.097336 0.099565 0.015648 0.006691 0.077668 0.016572 0.035404 -0.046026 0.017237 -0.048631 0.009314 0.141479 0.017079 0.043796 -0.106474 0.145951 0.057740 0.011250 -0.059443 0.027572 0.026650 0.008527 0.002949 -0.037680 -0.077991 -0.090617 0.003420 -0.046010 0.007354 0.019056 -0.128651 0.016464 0.004584 -0.030883 -0.092069 0.038976 -0.081840 0.066695 -0.047340 0.003513 0.040613 0.046815 -0.023406 0.062389 0.021759 0.024928 -0.018922 -0.048006 0.063800 -0.014416 -0.050333 0.042628 -0.114934 -0.101450 0.062139 0.029295 -0.065908 0.111463 0.050781 -0.022707 0.135414 0.003548 0.134535 -0.048259 -0.092344 -0.027727 0.016343 -0.060786 -0.081502 -0.005412 -0.026229 -0.143331 0.052404 -0.077298 -0.035919 -0.041968 -0.106108 -0.004369 0.065028 0.096370 -0.053299 0.043317 -0.049735 0.049815 0.032324 0.051309 -0.009607 -0.205917 0.005023 -0.054316 -0.022895 0.099327 -0.006927 -0.076574 -0.111024 0.111026 0.038381 -0.060368 0.064238 -0.034316 0.026846 0.025740 -0.076162 -0.163904 0.055955 -0.056885 0.014831 -0.120715 0.090938 0.035289 -0.036439 0.060012 0.080302 0.036215 0.065250 0.083030 -0.058784 0.104826 -0.051805 -0.011099 -0.006420 0.053042 0.024127 0.092534 0.058569 -0.033442 0.025186 -0.018222 0.117744 0.044345 -0.042456 -0.043767 -0.021378 -0.121965 0.027371 0.052731 -0.020316 0.036912 0.115357 0.031150 0.041547 0.059267 -0.039672 -0.086918 -0.162369 0.024801 0.031725 0.083400 -0.034463 0.000272 -0.008147 -0.002016 0.131953 -0.092911 -0.091944 -0.062864 -0.005221 0.063647 -0.012658 0.042685 0.067952 0.038644 -0.153221 0.096841 0.108299 0.089446 -0.047164 0.004196 -0.043268 -0.035456 0.050838 0.070444 0.084465 -0.079980 -0.048916 0.057726 0.023894 0.027653 0.017775 0.015461 -0.030287 -0.022245 0.052081 -0.150947 -0.002682 -0.056774 -0.123366 -0.091754 0.006536 0.006473 -0.143025 0.054690 -0.043189 0.032970 0.027446 0.033127 -0.132722 -0.010417 -0.080097 -0.018187 0.001858 0.111290 -0.090749 0.059434 -0.068738 0.090679 -0.145070 -0.065277 0.063514 -0.003982 -0.056382 -0.003673 0.015845 -0.073396 0.043688 0.002836 0.069211 0.124852 -0.053313 -0.040946 0.070440 -0.107024 -0.019199 -0.033672 -0.001440 0.021680 0.110595 -0.053452 -0.052426 0.035461 -0.028179 -0.049041 0.022580 -0.010989 -0.002913 -0.051691 -0.075881 0.037241 0.076377 0.034735 -0.031556 0.073516 -0.001427 0.016296 -0.017537 0.003346 -0.099774 -0.067624 -0.044257 -0.018202 0.030622 0.012773 0.046475 -0.121785 -0.057265 0.116179 -0.079916 0.066396 0.050104 -0.013177 0.057766 -0.047879 -0.109526 -0.146491 0.032675 -0.049318 -0.057045 -0.080068 0.089621 -0.046564 -0.029992 0.040828 0.029281 -0.037369 -0.009731 -0.082145 -0.117622 0.117077 0.037369 0.000820 -0.106634 -0.007967 0.000812 0.140637 0.036530 0.062121 -0.065504 -0.094930 0.121336 0.017530 -0.017330 -0.040402 -0.018255 0.010992 0.019746 -0.027564 0.033588 0.042466 -0.003143 0.013767 0.084179 0.033753 -0.017279 -0.009676 -0.006452 0.032645 0.031852 -0.030975 -0.043384 -0.005433 -0.015258 0.053273 0.054748 -0.064736 0.008959 -0.141223 -0.032957 -0.015079 0.018198 -0.001681 0.143079 0.076000 0.001037 -0.048744 0.022062 0.026030 -0.008263 -0.050353 -0.023037 -0.036477 -0.051733 0.137823 -0.034438 -0.007573 -0.004256 0.064218 0.075183 0.095106 0.026497 0.026360 0.009791 -0.058039 0.053315 -0.077817 -0.033283 -0.081151 -0.055220 0.004268 0.017539 -0.007329 -0.117200 0.093220 0.037359 0.002718 0.010749 0.018281 -0.075800 -0.024889 0.005720 0.022129 0.035613 0.036187 0.032246 0.105439 -0.073766 0.016887 -0.059934 -0.049471 0.073520 -0.024041 -0.104642 0.023557 -0.059746 -0.043871 0.022311 -0.000250 -0.074027 0.198593 0.102732 0.024478 0.077658 -0.060042 -0.018229 -0.149648 -0.009871 -0.105822 0.007585 -0.161459 -0.041121 -0.021460 0.009020 -0.065018 0.111801 -0.024953 0.074594 -0.026041 -0.062859 0.009199 0.069609 0.078672 -0.033414 0.054128 0.005408 -0.016273 0.052076 0.107610 -0.067518 -0.096400 0.033703 -0.014350 -0.024676 0.056254 -0.043770 -0.060847 -0.004185 0.073550 -0.057830 -0.016644 0.029096 0.005755 0.026472 0.040449 -0.091950 -0.048538 -0.034439 -0.107938 0.090712 -0.117001 0.043170 -0.006505 -0.035277 0.117316 0.127002 0.047906 -0.001441 0.118379 -0.132165 0.007380 0.023823 -0.020120 -0.083725 0.047284 0.023795 0.074123 -0.013439 0.024994 0.060254 -0.069120 0.166373 -0.024228 -0.063150 -0.046506 -0.077202 -0.054592 -0.006571 0.010335 -0.006568 0.003982 0.075837 0.008643 0.136339 -0.005502 0.033910 -0.066379 -0.127371 -0.006954 0.039770 -0.070123 0.060925 -0.046386 -0.026420 -0.005280 0.103509 -0.022310 -0.003740 -0.014999 -0.037770 0.080005 0.025231 -0.054995 0.071017 0.009442 -0.075737 0.013441 0.051947 0.027097 -0.070351 -0.055705 -0.021115 0.021387 0.029232 0.163331 -0.032380 0.010008 -0.011987 -0.028631 0.002665 0.014770 -0.009558 -0.034325 0.015830 -0.091253 -0.012677 -0.107378 -0.034624 -0.047725 -0.102330 0.042525 -0.006869 0.014048 -0.043127 0.052384 -0.047473 0.055102 0.009744 -0.033646 -0.081755 -0.001464 -0.016223 -0.036697 -0.002279 0.023279 -0.036221 0.101478 -0.058454 0.065074 0.003524 0.005010 0.097182 -0.038171 -0.037943 -0.009994 -0.033355 -0.044552 0.041318 0.065041 0.000092 0.100816 0.029007 -0.031803 0.183537 -0.009617 -0.010544 -0.028465 0.006900 -0.014988 0.090490 -0.174817 0.027464 0.063314 -0.049281 -0.001567 0.091421 -0.078603 -0.004869 -0.063266 -0.001922 0.069338 0.081771 0.058737 0.073195 0.081676 -0.047808 -0.025797 -0.004185 0.033203 -0.125472 -0.108148 0.031258 0.035192 0.029957 0.046675 0.047238 -0.088197 0.033315 0.114919 -0.049180 0.025707 0.053843 0.035182 0.140206 -0.058660 -0.025978 -0.019658 -0.014847 -0.021051 -0.034385 -0.121789 0.173406 -0.112251 -0.022333 0.071206 0.028998 0.046468 0.067704 -0.026159 -0.158316 0.014936 0.040216 -0.010137 -0.053492 0.004935 -0.011277 0.073852 0.091261 0.114794 -0.014060 -0.051545 0.077316 0.101258 -0.046137 0.022994 -0.066767 -0.065537 0.049952 -0.043582 0.012823 0.009313 0.036343 0.054885 0.037796 0.021940 0.013211 0.006019 -0.099578 0.058596 -0.045463 -0.015632 -0.087141 -0.019273 -0.033140 0.043796 0.119057 -0.081813 -0.021538 -0.070453 -0.052551 0.077213 0.000094 0.050268 0.092271 0.051688 -0.025224 0.075437 0.027983 0.069205 0.031787 -0.099975 0.004387 -0.002747 -0.056567 0.161394 0.000164 0.084189 -0.124844 0.050329 0.009844 0.055877 0.055701 0.030479 0.028843 -0.001076 -0.017173 -0.102770 -0.038426 -0.133841 -0.035840 -0.072046 0.020206 0.016438 -0.097885 0.041857 0.034601 0.030422 -0.089192 -0.014112 -0.052276 0.012005 -0.029335 -0.011331 0.101833 0.063827 0.044288 0.101597 -0.034689 -0.027434 -0.017801 -0.079224 0.067103 -0.027456 -0.098034 0.009448 -0.038986 -0.156729 0.085023 0.033136 -0.021343 0.110701 -0.011901 -0.006484 0.082023 -0.027094 0.091208 -0.013163 -0.012223 0.005933 0.010653 -0.098119 -0.005304 -0.021061 -0.058077 -0.073035 0.097856 -0.102847 -0.035329 -0.092754 -0.101463 -0.048671 0.055015 0.102145 0.062017 0.016002 0.036489 0.059000 0.042861 0.025447 -0.019735 -0.107841 -0.033752 -0.043982 -0.067059 0.051092 0.025235 -0.147107 -0.016269 0.123009 0.035894 -0.020453 0.040013 0.015557 0.015825 0.080712 -0.069630 -0.149739 0.022006 -0.008848 0.040169 -0.095688 0.059575 -0.030641 -0.061353 0.046302 0.104489 0.043372 -0.001579 0.059737 -0.104073 0.042342 -0.048611 -0.013811 -0.056255 0.107179 0.057433 0.084815 0.030217 0.022360 -0.040342 -0.028775 0.120588 0.041270 -0.045775 -0.030195 -0.106859 -0.104349 0.072418 -0.003603 -0.013072 0.040728 0.086869 0.091943 0.066517 0.024442 -0.030929 -0.032920 -0.160336 -0.010347 -0.068458 0.017458 0.044823 0.050694 0.067625 0.040303 0.113164 -0.038747 -0.065558 -0.106357 -0.028352 0.121488 0.026548 -0.007820 0.054872 0.094674 -0.099533 0.005231 0.118132 0.042780 -0.065079 0.031440 0.043229 -0.050024 0.015943 0.073917 0.034049 0.010548 -0.024979 0.022639 0.027795 0.049491 0.048762 -0.002738 -0.010783 -0.027637 -0.006986 -0.104141 -0.066719 -0.061742 -0.067028 -0.053057 -0.003478 -0.050948 -0.122196 0.022082 0.002595 0.015094 0.006014 0.005784 -0.184537 -0.034872 -0.036104 0.055412 0.006886 0.103488 -0.063001 0.096665 -0.035533 0.009847 -0.095114 0.008588 0.023736 -0.034278 -0.111970 -0.041172 0.039730 -0.102952 0.063775 0.039273 0.109863 0.091800 0.030306 -0.082206 0.089449 -0.058478 -0.029341 0.038389 0.061057 -0.024711 0.111044 -0.035079 -0.027985 0.014570 0.002046 -0.031545 0.058848 -0.019500 -0.002475 -0.025589 -0.144358 0.063478 0.124927 -0.014094 -0.010970 0.031621 -0.040043 0.004389 0.025003 0.052397 -0.054526 -0.073469 0.026795 -0.024697 0.024739 0.118299 0.014948 -0.132109 0.020192 0.037815 -0.090270 0.049313 0.082764 -0.022642 -0.006053 -0.038073 -0.057363 -0.107347 0.033166 -0.027556 -0.019765 -0.111958 0.027773 -0.063001 -0.052998 0.019353 -0.009646 -0.011270 0.011872 -0.006508 -0.122226 0.059824 0.041779 0.016445 -0.031890 -0.036310 0.013085 0.091631 0.062866 0.054501 -0.117523 -0.010907 0.087026 -0.014974 -0.035920 -0.048565 -0.019246 -0.043405 -0.006959 0.006211 0.042370 0.014603 -0.006435 0.019149 0.078038 -0.020556 0.018114 -0.036521 -0.054036 0.007325 0.056349 -0.033497 -0.025960 0.050184 -0.066536 0.091501 0.071356 -0.049044 -0.032263 -0.095268 -0.008784 0.049033 0.036929 0.020357 0.152151 0.040814 -0.063159 -0.024324 -0.017084 0.011876 -0.015442 -0.019811 -0.000366 -0.002700 -0.072981 0.109288 0.007473 -0.049442 -0.054040 0.051947 0.019359 0.129160 0.021981 0.002248 0.035262 -0.023141 0.064666 -0.078273 -0.031663 -0.031343 -0.006058 -0.045421 0.017466 -0.067122 -0.130784 0.067057 0.052460 -0.041165 -0.004411 0.046453 -0.055461 0.048162 -0.009687 0.021530 0.007211 0.104764 0.079849 0.086248 -0.072791 0.001112 -0.027964 -0.071233 -0.013339 0.007979 -0.118231 0.076826 -0.060762 -0.084358 -0.011447 0.009765 0.014163 0.164784 -0.015892 -0.020756 0.152509 -0.014014 -0.041853 -0.117008 -0.011755 -0.005766 -0.086896 -0.139650 -0.032342 0.025651 -0.007843 -0.039073 0.103397 -0.042591 -0.005971 -0.001324 -0.053945 -0.000716 0.048977 0.130185 0.028226 0.061179 0.024489 -0.021939 -0.007019 0.054336 -0.010040 -0.095411 0.082406 -0.032130 -0.015054 0.033059 0.002802 -0.080159 -0.022452 0.077426 -0.015314 0.033583 0.028479 0.023293 0.035078 0.006442 -0.110541 -0.106244 -0.034737 -0.104140 -0.034570 -0.114316 0.079382 0.006009 0.003901 0.080081 0.055082 0.012896 0.064981 0.057219 -0.112986 0.003906 -0.028414 -0.012383 -0.054541 0.077483 0.004267 0.123567 0.007369 0.099856 0.023273 -0.028194 0.122030 -0.036635 -0.126589 -0.034567 -0.028288 -0.065040 0.014280 0.011435 -0.004867 0.043901 0.035395 0.028599 0.075858 0.118460 0.070581 -0.051903 -0.170905 0.050352 0.053514 -0.017139 0.021748 -0.096610 0.008904 -0.001049 0.078787 -0.101201 -0.026229 -0.019757 -0.035771 0.054142 0.068041 -0.020328 0.099979 0.096623 -0.046957 -0.001733 0.049586 0.052458 -0.031724 -0.028332 -0.005418 0.046710 0.014238 0.133125 -0.005428 -0.080055 -0.033226 0.034007 0.025272 0.033924 -0.044662 -0.034690 -0.079173 -0.160689 -0.153893 -0.228771 -0.002450 -0.083966 -0.168294 0.010694 -0.012167 0.000004 -0.044377 0.023373 -0.077437 0.012178 -0.015899 -0.010828 -0.062847 0.029927 -0.074557 -0.053306 0.049688 0.057017 -0.022571 0.015337 -0.046545 0.018895 -0.024848 -0.004424 0.165442 -0.060201 -0.098629 -0.065190 0.036582 -0.038566 0.051453 0.093478 0.039619 0.117535 0.090386 -0.029366 0.108075 -0.016568 -0.093576 -0.048799 -0.045599 -0.023619 0.070072 -0.109294 0.001548 0.076285 -0.091274 -0.068829 0.000215 -0.046519 -0.022512 -0.027067 0.014905 0.079017 0.140699 0.061141 0.009178 0.097811 0.033468 -0.006666 0.007163 -0.007578 -0.124238 -0.025271 0.017581 0.042405 -0.034252 0.064890 0.002500 -0.139083 0.009733 0.158179 0.014474 0.038913 0.056290 -0.004998 0.075401 -0.030557 -0.038595 -0.049070 -0.014680 -0.076306 -0.132365 -0.177693 0.091760 -0.057238 -0.072379 0.050877 0.051489 0.028125 0.004991 0.032621 -0.167359 0.041002 -0.007072 -0.086405 -0.042263 -0.019757 -0.011524 0.066004 0.085670 0.008071 -0.013614 -0.062142 0.083280 0.000887 -0.075820 0.008295 -0.020136 -0.016886 0.089657 -0.106260 -0.051491 -0.012687 0.054778 0.011535 0.086613 0.053803 0.027164 -0.023825 -0.040009 0.080987 0.026309 -0.000334 -0.085288 -0.024208 -0.085040 0.096077 0.120527 -0.044181 0.003034 -0.091142 0.006471 0.115971 -0.026358 0.003489 0.083633 0.109975 -0.029425 0.061726 0.056115 -0.006711 0.013158 -0.062917 -0.015029 0.003354 0.031574 0.119045 0.022859 0.023777 -0.068292 0.115604 0.031617 0.008953 0.006943 0.014420 0.008569 -0.031547 -0.006857 -0.051690 -0.086683 -0.108339 0.005093 -0.108646 -0.034720 0.054273 -0.096753 0.050806 -0.021115 -0.025278 -0.079997 0.027008 -0.034211 0.090949 0.005678 0.019288 0.042083 0.062119 0.019301 0.040859 -0.009113 0.022427 -0.004019 -0.060890 0.032884 -0.012373 -0.037976 0.017625 -0.079369 -0.050788 0.079720 -0.039347 -0.085324 0.091044 0.026653 -0.063122 0.099371 -0.024736 0.084631 -0.100421 -0.073313 0.014317 0.022555 -0.116051 -0.063966 -0.009688 -0.063666 -0.131709 0.016744 -0.135028 -0.003708 -0.043685 -0.121631 -0.036930 0.125776 0.084333 0.010114 0.071231 -0.010395 0.059391 0.017760 0.033034 -0.018996 -0.130540 0.025758 -0.018261 -0.060044 0.127025 -0.032724 -0.107299 -0.064538 0.090073 -0.010186 -0.066127 0.107025 -0.010940 0.003083 0.019030 -0.023935 -0.140176 0.003549 -0.042402 -0.010695 -0.185915 0.060835 0.005405 -0.013822 0.029205 0.079338 0.068155 0.071485 0.030282 -0.087207 0.073480 -0.027940 0.004896 -0.033246 0.072637 0.018017 0.054712 0.026184 -0.005287 0.034456 -0.036753 0.079232 0.072707 0.004506 -0.039353 -0.015560 -0.071466 0.010257 0.067446 -0.006598 0.047396 0.072218 0.023405 0.082663 0.015319 -0.035436 -0.075461 -0.124036 -0.032046 0.060837 0.010231 -0.053024 0.022800 0.042891 -0.041549 0.132395 -0.095330 -0.077091 -0.058554 -0.070632 0.047570 0.031856 0.000127 0.114996 0.058660 -0.092472 0.064503 0.096450 0.066200 -0.001059 0.039487 -0.032859 -0.065721 0.001601 0.088037 0.059828 -0.047411 -0.077714 0.010275 0.013629 0.003304 0.005407 0.000665 0.012927 -0.077525 0.069202 -0.157417 0.014547 -0.095965 -0.087546 -0.067375 -0.027867 0.005458 -0.095839 0.105294 -0.044892 0.045151 -0.001349 0.038356 -0.127152 -0.080503 -0.105423 -0.018484 0.008439 0.104398 -0.027959 0.082086 -0.020605 0.042785 -0.109139 -0.025958 0.079733 0.036289 -0.083773 -0.033819 0.032566 -0.065556 0.006659 0.002090 0.097027 0.115715 -0.013271 -0.067514 0.128365 -0.089129 0.026160 -0.040584 -0.002443 -0.017254 0.129204 -0.110078 -0.064943 0.089215 -0.022299 -0.034959 0.022446 -0.019254 -0.038900 -0.069862 -0.070540 0.069949 0.111993 -0.006311 -0.009057 0.094278 -0.014932 0.003657 -0.019323 0.026145 -0.062611 -0.073753 -0.007182 0.014101 0.015776 0.052537 0.064728 -0.160187 -0.005122 0.076356 -0.104763 0.091493 0.020225 -0.000433 0.062698 -0.060457 -0.147540 -0.066168 0.007195 -0.061498 -0.037801 -0.039763 0.059551 -0.028410 -0.074510 0.057667 0.020584 -0.042510 -0.025311 -0.037825 -0.188010 0.077423 0.030749 -0.025465 -0.067541 0.003073 -0.049778 0.127789 0.002786 0.120009 -0.067812 -0.026565 0.111272 0.023219 -0.024403 -0.014507 -0.048624 0.022163 0.014596 -0.052136 0.001580 0.064595 0.017963 0.021330 0.098862 -0.009253 -0.041062 0.008903 -0.013829 0.031967 0.076571 -0.005348 -0.044010 0.031252 0.000369 0.036818 0.072854 -0.038569 0.004161 -0.128017 -0.053152 0.050896 -0.015212 -0.036159 0.097995 0.068397 -0.048472 -0.056131 -0.011920 0.059188 0.010215 -0.061152 -0.011717 -0.035949 -0.057039 0.090859 -0.029682 0.041466 -0.025106 0.131191 0.059327 0.085383 0.021699 0.049230 0.036630 -0.077086 0.017806 -0.088790 0.004040 -0.069533 -0.026785 0.009666 0.014017 -0.055897 -0.096299 0.120693 0.029995 0.032602 -0.001365 0.034015 -0.053512 0.001573 -0.019170 0.003956 0.006452 0.067313 0.028301 0.160615 -0.053111 0.013990 -0.027060 -0.013638 0.039376 -0.054462 -0.096553 0.079994 -0.043791 -0.025051 -0.003222 0.019418 -0.049525 0.151136 0.034123 0.055117 0.058918 -0.017393 0.026169 -0.126380 -0.019008 -0.028939 -0.014027 -0.173373 -0.032841 -0.003370 0.039680 -0.118311 0.114094 -0.041869 0.041121 -0.038391 -0.096074 -0.032479 0.060222 0.063968 -0.024528 0.018158 -0.009892 -0.043882 -0.005004 0.129800 -0.025438 -0.121186 0.049860 0.010448 -0.040388 0.061853 -0.017304 -0.035088 -0.008678 0.061476 -0.039493 -0.005055 0.079169 0.046134 0.009770 0.068294 -0.078965 -0.043792 -0.030529 -0.053845 0.053853 -0.140682 0.111461 0.003549 -0.014939 0.148955 0.072861 0.004332 0.015386 0.062006 -0.122325 -0.032529 0.010241 -0.047982 -0.126440 0.055840 0.067128 0.101189 -0.002630 0.031969 0.046076 -0.080194 0.104740 -0.033486 -0.077818 -0.058697 -0.095258 -0.111074 0.037236 0.011711 0.001113 -0.005664 0.048588 0.041131 0.098257 0.033126 0.029317 -0.095311 -0.071555 -0.039999 0.026678 -0.072182 0.035031 -0.007997 -0.048174 -0.006796 0.075959 -0.052060 -0.007645 0.037076 -0.035574 0.085576 0.034126 -0.050676 0.051430 0.031999 -0.134308 -0.001489 0.084564 -0.018394 -0.097410 -0.042931 -0.025608 -0.025489 0.041919 0.142482 0.004617 -0.041085 -0.028816 -0.015527 -0.031005 0.028405 -0.022240 -0.067737 -0.025241 -0.052578 0.012322 -0.120556 0.016278 -0.081744 -0.099160 0.025144 0.025441 0.003176 -0.073871 0.031718 -0.028622 0.029031 0.017910 -0.030693 -0.104215 -0.015422 -0.065738 -0.048346 -0.012847 0.046849 -0.008621 0.058771 -0.054495 0.031597 -0.038844 0.043138 0.092588 -0.071371 -0.059093 -0.001197 0.001766 -0.074762 0.029470 0.089616 0.005009 0.052977 0.015899 -0.045424 0.158466 -0.038717 -0.032506 0.028687 0.011435 -0.006772 0.047605 -0.144659 -0.031229 0.073577 0.011530 -0.008172 0.058883 -0.088412 0.033615 -0.034120 -0.030701 0.101215 0.096645 0.027368 0.041249 0.081502 -0.025440 0.007592 0.059893 0.012106 -0.112009 -0.114692 0.016397 0.087068 0.016199 0.051263 0.011915 -0.085364 0.026046 0.145258 -0.047521 0.077134 -0.000345 0.034532 0.099801 -0.087591 -0.059719 -0.058671 0.022737 -0.001887 -0.107049 -0.116757 0.134115 -0.055403 0.005157 0.067618 0.081074 0.071787 0.063802 -0.003430 -0.106491 0.017543 0.002214 -0.013785 -0.032962 0.010084 0.024325 0.045963 0.059883 0.072282 -0.008608 -0.015127 0.048225 0.041752 -0.068845 0.012227 -0.090748 -0.035309 0.045353 -0.078624 -0.019489 0.035531 0.058571 0.045414 0.039032 -0.011106 0.048787 -0.025336 -0.084893 0.031896 0.010850 0.012526 -0.053205 0.016952 -0.044041 0.068766 0.097328 -0.122229 0.027016 -0.051759 -0.057246 0.074566 0.006201 0.069904 0.100068 0.076124 0.004278 0.029466 0.045229 0.055683 0.018790 -0.067806 0.039373 0.029179 -0.036787 0.129921 -0.028993 0.037711 -0.105011 0.138747 -0.004370 0.052080 0.050835 0.025511 -0.002962 0.007852 -0.055234 -0.075055 0.000460 -0.089231 -0.030467 -0.080347 0.007488 0.067460 -0.076368 0.084991 0.039544 0.033391 -0.044318 0.006390 -0.079387 -0.002909 -0.029708 -0.047882 0.063040 0.065719 0.021811 0.070945 -0.007571 -0.001302 -0.064119 -0.068005 0.051040 -0.017747 -0.063938 0.018673 -0.038391 -0.099966 0.057475 -0.007669 0.009384 0.109283 0.012248 -0.048858 0.092498 0.011967 0.061525 -0.028819 -0.015131 -0.024160 -0.033220 -0.101648 -0.017980 -0.003342 -0.049829 -0.125096 0.128241 -0.047377 -0.028943 -0.109072 -0.066133 -0.015454 0.098334 0.053371 0.011324 0.042781 0.044313 0.062510 0.098408 0.065410 -0.040693 -0.116351 -0.032327 -0.013634 -0.058591 0.081507 0.042019 -0.099770 -0.018275 0.084624 -0.007512 -0.041113 0.054203 0.017879 -0.029747 0.059865 -0.048281 -0.111513 -0.022478 0.002059 0.022383 -0.125360 0.058216 0.002386 -0.081600 0.049288 0.157428 0.057724 0.005046 0.102125 -0.083473 0.044059 -0.094864 0.039120 -0.063306 0.057341 0.060519 0.107383 0.007076 -0.009373 -0.012555 -0.066630 0.117121 0.025254 -0.008796 -0.062102 -0.083164 -0.079007 0.084839 0.042308 -0.055353 0.036386 0.132641 0.084464 0.056288 -0.011636 -0.059554 -0.087748 -0.147377 -0.052414 -0.010203 -0.009159 -0.018829 0.009621 0.061633 0.015716 0.086332 -0.061465 -0.011833 -0.062998 -0.021168 0.125194 0.045025 0.052316 0.025720 0.095155 -0.093252 0.028720 0.056113 0.063321 -0.045315 0.025199 0.023591 -0.070481 0.072350 0.092458 0.047973 -0.025439 -0.001281 0.021028 0.034576 0.084779 0.006867 -0.010323 -0.046330 -0.009172 0.030485 -0.117679 -0.021782 -0.034737 -0.086292 -0.045885 0.009655 -0.037167 -0.123331 0.017291 -0.028319 0.071447 -0.057180 -0.032912 -0.139418 -0.025966 -0.039305 0.009411 -0.054017 0.076307 -0.060252 0.110087 -0.061366 0.038897 -0.098107 0.046119 0.043021 -0.029130 -0.096885 0.007623 0.090513 -0.097416 0.053264 0.058296 0.054372 0.060769 0.015586 -0.067956 0.059996 -0.037850 0.005986 0.000778 0.045873 -0.065546 0.077900 -0.085638 0.000698 0.027694 -0.021241 -0.002777 0.034509 -0.048173 0.009988 0.001008 -0.077434 0.026002 0.139490 0.008910 0.007791 0.059292 -0.057047 0.014127 -0.022959 0.085710 -0.068087 -0.081561 0.005935 0.007577 0.061544 0.076542 0.001660 -0.113279 0.024973 0.086750 -0.061674 0.095059 0.089352 -0.024436 0.024181 -0.016117 -0.073634 -0.067986 0.074701 -0.046868 -0.054634 -0.092485 0.006662 -0.033256 -0.053774 0.049001 -0.002339 0.013545 -0.006432 -0.012089 -0.086842 0.104105 0.061991 codec2-1.2.0/src/codebook/lspjmv3.txt000066400000000000000000000574511445607075400174140ustar00rootroot000000000000005 512 0.007066 0.075781 -0.070082 -0.092014 -0.066477 0.090510 0.106622 0.025911 -0.016760 0.003724 -0.024628 0.058332 0.012876 0.059557 -0.002092 -0.065092 -0.096975 -0.041837 -0.002432 0.058918 0.014358 0.080049 -0.008803 -0.002091 -0.097584 0.085323 -0.026053 -0.086585 -0.009541 0.130555 0.045391 0.037557 0.074726 -0.050453 0.033517 -0.035576 -0.084211 -0.086430 0.008910 -0.072674 -0.098699 -0.024540 -0.048972 -0.066975 -0.048791 0.032184 0.070992 -0.014416 0.141892 -0.044249 -0.108921 -0.020450 0.115988 0.011287 -0.026273 0.024341 0.138519 -0.036467 0.020684 0.074258 -0.053563 0.077463 0.072166 0.032112 -0.079303 -0.025039 0.079675 0.094211 -0.115754 0.038892 0.050897 -0.024639 0.057826 -0.110429 0.071184 0.015309 -0.034027 -0.055726 0.043179 -0.063089 0.043359 -0.011698 0.006637 0.002751 0.030110 -0.001261 0.111470 0.043277 -0.004205 -0.021599 -0.005698 0.058842 0.168422 0.059313 -0.007971 -0.087599 0.073891 -0.083238 0.099279 -0.017364 -0.018429 0.014040 -0.014864 -0.111512 0.089450 -0.028498 -0.087983 -0.077320 -0.062602 0.000328 -0.027152 -0.093796 0.111381 -0.018603 0.092394 -0.007256 0.025391 0.011454 0.012802 -0.041680 0.008078 0.020905 -0.105401 -0.083265 0.027756 -0.049630 -0.044085 -0.051424 0.104125 -0.000779 -0.063079 -0.130699 0.070500 0.033468 -0.019802 -0.061011 0.094839 -0.040122 0.118409 0.056950 0.086391 -0.006615 0.045337 -0.044190 -0.106474 -0.081912 0.067557 -0.031649 -0.014437 0.057585 -0.121755 -0.049113 0.057109 -0.049872 0.044104 0.064705 -0.091589 0.037286 -0.048606 -0.045398 0.003456 0.057230 0.006262 -0.055206 -0.063871 -0.005249 0.081783 0.134969 -0.002331 0.052643 -0.093346 0.072093 0.116025 -0.031453 -0.006012 -0.038574 -0.030841 0.010288 0.024420 0.051657 -0.086584 0.046381 0.005410 0.052622 -0.072741 0.079023 0.078099 -0.093912 0.005477 -0.006721 0.100232 -0.017587 0.044819 0.036655 0.021580 -0.006829 -0.050076 -0.003020 0.088246 0.013560 -0.015690 0.012477 -0.052595 -0.048861 -0.033688 0.055615 0.092298 -0.066194 0.016416 -0.066059 0.046976 0.003023 0.104646 0.109136 0.018293 -0.016507 -0.006859 0.004326 0.070843 0.140750 0.025774 0.034730 -0.079590 0.050054 -0.107950 0.002378 0.097498 0.027111 -0.122953 -0.002423 -0.020539 -0.063263 -0.095493 -0.157361 -0.039183 0.025721 0.026897 -0.001200 0.033997 -0.001749 0.061593 -0.013053 -0.106317 -0.068190 0.046352 -0.056060 0.157084 -0.049365 0.053959 -0.051065 -0.047672 0.081570 0.064342 -0.030705 -0.070806 -0.076503 -0.059471 0.012419 0.073968 -0.026179 -0.038473 0.059013 -0.035783 -0.030057 -0.036346 -0.052692 -0.015346 -0.022687 -0.035279 0.013314 0.068397 -0.046609 -0.009593 -0.040796 0.157438 -0.075360 -0.110464 0.031839 -0.029035 -0.015222 0.041013 -0.099212 -0.108920 -0.008627 0.012095 0.020855 0.009935 -0.086917 0.058827 -0.006536 0.022104 -0.005013 0.003496 0.046663 -0.051061 -0.036803 -0.067317 -0.007075 0.180870 -0.027434 -0.025056 -0.039341 -0.073918 -0.003180 -0.110930 -0.042711 0.005519 -0.035005 -0.088419 0.170942 0.001503 -0.121485 0.066383 -0.067346 0.005643 0.080088 -0.042562 -0.006668 -0.036538 0.020683 0.042848 0.027852 -0.029088 -0.156468 0.006503 0.037716 0.032082 0.038416 0.021835 -0.106963 -0.043017 0.018166 0.070409 -0.005426 -0.035585 -0.111071 -0.039986 0.050430 0.035157 0.066902 -0.040684 0.060527 0.036225 0.002527 -0.015087 0.059243 0.021268 -0.010682 -0.018434 0.059128 0.111314 -0.054070 0.105744 -0.051476 -0.012970 -0.000358 -0.099249 -0.077385 0.069924 -0.039101 -0.072139 -0.049069 -0.088018 0.006144 0.000712 0.081030 0.021987 -0.046031 0.058087 -0.001320 -0.046851 -0.011062 0.108321 -0.001146 -0.071193 0.044973 -0.002915 -0.003323 0.041735 0.094566 0.053530 0.035927 0.100282 0.059082 -0.054059 -0.012158 -0.035417 0.020412 -0.073193 0.059296 -0.040489 -0.095250 -0.003821 -0.084904 0.053925 0.109183 -0.005862 -0.036538 0.080962 -0.040647 0.020070 0.057778 -0.020197 -0.079626 -0.003186 -0.050855 0.128185 0.034731 0.057460 -0.035236 -0.057096 -0.001238 0.122018 -0.071204 -0.047253 -0.051767 0.048301 -0.052678 0.025990 -0.017481 -0.029379 0.030738 0.047207 -0.047864 -0.033561 0.029884 -0.091175 -0.085446 -0.026140 0.092628 0.067706 -0.085617 0.081433 0.047305 0.031945 -0.048728 -0.040387 0.046206 0.010578 -0.037639 0.011328 -0.042458 -0.149597 0.033882 -0.061869 0.008800 0.057754 -0.095876 0.038230 0.096876 -0.033487 -0.141669 -0.014172 0.028439 -0.092764 -0.053714 0.086926 0.034786 0.136053 -0.005569 0.028753 0.009630 0.044114 -0.050365 -0.066224 0.006017 0.014348 0.024471 0.000489 0.067234 -0.021678 -0.118760 0.036349 -0.040295 0.076358 -0.008444 -0.086082 -0.044018 -0.025804 0.028971 -0.009233 0.053026 -0.035341 -0.182193 -0.102515 0.089210 0.066812 0.032417 0.046882 -0.034815 -0.052293 0.022814 0.129622 0.128232 -0.012105 -0.087084 0.004762 0.086538 0.046566 0.098359 -0.018713 0.039204 -0.021707 -0.060110 -0.117527 -0.005459 0.060994 -0.057718 -0.021783 0.035154 0.100557 -0.015470 -0.025818 0.008450 0.051535 -0.001388 -0.114610 -0.057903 0.041862 0.061778 0.045701 -0.078563 -0.070166 -0.048450 -0.088530 0.021375 -0.004598 -0.090710 -0.009399 -0.073952 -0.035575 -0.050280 0.114780 0.137866 0.065234 0.003594 -0.066802 -0.144989 0.166201 0.039564 -0.022457 -0.030090 0.016187 0.115443 -0.097331 -0.019139 0.099440 0.002198 -0.030953 0.021099 -0.045399 -0.046871 0.022533 -0.064657 0.005776 0.049063 -0.028478 0.019268 0.054265 0.028042 0.045559 -0.005541 -0.014410 -0.024165 -0.054976 -0.073258 0.084205 0.036077 -0.068683 0.004708 -0.085228 0.001234 0.046261 -0.050496 -0.028227 -0.086828 -0.001218 0.021865 0.003791 -0.000568 -0.088733 -0.040041 -0.035891 -0.054915 0.073463 -0.132031 -0.012844 -0.068544 0.013052 0.087335 0.038603 -0.115382 -0.010433 -0.007113 0.095126 -0.047378 -0.081353 0.018021 -0.021156 -0.120774 0.040038 0.007633 -0.088728 -0.009928 0.020142 0.052024 -0.021063 -0.118121 0.102739 -0.055837 0.005253 -0.061924 0.063680 -0.014512 -0.020259 0.029493 -0.013435 -0.020638 0.089342 0.001092 -0.046491 -0.145634 -0.083159 -0.158142 -0.279281 0.003611 0.055863 -0.064655 -0.088773 0.089283 -0.029619 -0.089949 0.017197 -0.066633 -0.052347 0.090828 -0.087551 0.000338 0.085238 -0.005313 0.096211 0.071381 -0.076546 -0.077927 -0.040864 0.062936 0.041559 0.016235 -0.017513 0.014773 -0.025734 0.028586 0.070292 0.055794 -0.026131 -0.076954 -0.082228 0.043947 -0.035921 0.152668 -0.049510 0.023159 0.008506 -0.044773 -0.160358 0.024984 -0.025587 -0.071627 -0.038376 0.088478 0.120568 0.046723 0.086731 0.000695 -0.015751 -0.027837 -0.160937 -0.095031 0.036271 -0.009061 -0.015078 -0.036281 -0.103665 -0.058258 -0.049573 0.022021 0.108296 -0.002586 0.065655 -0.018584 -0.046441 -0.031018 0.067350 0.014328 0.008860 -0.000245 0.063400 -0.001810 0.043515 0.090344 -0.063845 0.020485 0.079401 0.070558 -0.116428 0.032628 0.068949 0.052238 -0.044530 0.096813 0.029911 -0.008814 0.044352 -0.168172 0.009604 0.055828 -0.100739 -0.026013 0.021193 -0.051425 0.035891 -0.004085 0.030216 -0.060801 0.037202 0.007262 0.120686 0.026846 0.058464 -0.100792 -0.009176 0.027589 0.123957 -0.011283 -0.025744 -0.105081 0.118244 -0.042122 -0.025404 0.000873 -0.012703 0.084159 -0.067539 -0.140536 0.041637 -0.014485 -0.043382 -0.048004 -0.075416 0.054401 -0.018651 -0.032908 0.164231 -0.053236 0.033946 -0.021681 -0.012655 -0.037049 -0.001613 -0.053393 -0.014635 0.017954 -0.116115 -0.027232 0.034005 -0.035376 0.026492 -0.037250 0.070733 0.074835 -0.021378 -0.142980 0.123195 0.003699 0.025398 0.015629 0.077370 0.032623 0.121580 0.097100 0.000946 -0.056355 0.042065 0.008184 -0.081824 -0.101937 0.065473 0.003360 0.069241 0.073002 -0.053844 -0.044301 0.080351 -0.091833 0.044288 0.007447 -0.120723 -0.013806 -0.023636 -0.064616 0.030556 0.072630 0.074428 -0.087759 -0.026440 0.064840 0.049162 0.091053 0.023891 0.033811 -0.027746 0.116392 0.106126 -0.056644 -0.014781 0.036137 -0.002632 0.055512 0.070077 0.067819 -0.030625 0.053772 -0.078457 -0.021351 -0.113011 0.052797 0.044875 -0.077269 -0.009867 0.101493 0.073477 -0.024103 0.049145 -0.004706 -0.025211 -0.053731 -0.049009 -0.035786 0.054430 0.046515 0.025154 -0.043569 -0.034789 -0.058610 0.006931 0.012049 0.046809 -0.129441 0.025541 -0.030933 0.000297 -0.054058 0.179837 0.081515 0.004932 -0.028445 -0.073753 0.010629 0.080042 0.098710 -0.014017 0.057597 0.001010 0.071658 -0.067570 0.074384 0.110366 -0.018121 -0.108754 0.037793 0.028041 -0.047508 -0.031359 -0.098913 -0.036486 -0.017311 -0.001279 -0.013694 0.051968 0.036512 0.088201 0.031155 -0.043442 -0.065045 0.023486 0.027000 0.104768 -0.015176 -0.038754 -0.004178 0.003732 0.062166 0.085438 -0.077368 -0.101645 -0.118347 0.007589 -0.056489 0.082268 0.020253 -0.035623 0.034235 -0.099354 -0.061237 -0.024285 0.005441 -0.039694 -0.025957 -0.004411 0.049903 0.003040 0.036243 0.023552 -0.007334 0.128963 -0.077727 -0.059175 -0.019437 -0.024872 0.004339 0.084006 -0.076605 -0.102261 0.036714 -0.035205 -0.007642 -0.005125 -0.030525 0.096390 -0.053138 -0.002192 -0.024851 0.050645 0.041490 -0.043183 0.046796 -0.050894 0.055023 0.133834 -0.024013 0.000872 -0.057072 -0.000630 0.042070 -0.129339 -0.064283 0.037836 -0.066393 0.004438 0.125379 -0.062213 -0.067468 0.090177 -0.046094 -0.025725 0.079101 -0.074909 -0.043730 -0.073483 0.069672 -0.020413 -0.000079 -0.049725 -0.120751 -0.046980 0.039894 0.072305 0.009798 0.005613 -0.045217 0.006862 0.036285 0.074819 -0.006747 0.015144 -0.071562 0.012324 -0.001082 0.014835 0.079960 -0.027804 0.103358 -0.017203 0.014914 -0.056687 0.030827 0.028076 0.003395 -0.073255 0.110310 0.056498 -0.044893 0.110122 -0.109058 -0.052302 -0.001604 -0.089977 -0.060548 0.107808 0.025463 -0.070203 -0.000513 -0.123913 0.046247 -0.085392 0.096343 0.095890 -0.064950 0.070363 0.034272 0.037773 -0.076950 0.124858 -0.009008 -0.010115 0.083868 0.051242 0.039149 0.015185 0.083375 0.029773 -0.045961 0.100395 0.003743 -0.138294 -0.041755 0.010806 0.057797 -0.147374 0.095858 -0.009929 -0.103347 -0.032310 -0.110560 0.121377 0.145244 0.017079 -0.080587 0.020516 -0.044939 -0.010477 0.038347 -0.003466 -0.001618 0.019600 -0.021762 0.125482 0.011074 0.065815 0.040298 0.009202 -0.051686 0.129684 -0.131135 0.044536 0.009313 0.102518 -0.075351 0.054338 0.020273 -0.045753 0.031345 0.000407 -0.097294 -0.000416 -0.007466 -0.044972 -0.078744 0.042414 0.066624 0.030318 -0.067852 0.061416 -0.028992 0.056606 0.004038 -0.036253 -0.014279 0.023123 -0.007832 -0.000137 -0.027684 -0.127648 -0.007713 -0.008746 -0.026500 0.049032 -0.183319 0.059107 0.066500 0.016902 -0.093331 0.090129 0.016648 -0.083492 -0.023669 -0.010473 0.027614 0.145068 0.000681 0.044133 -0.035809 0.005668 -0.090461 -0.090732 -0.033927 0.042997 0.021700 -0.046955 0.044487 -0.026444 -0.061011 0.010110 -0.023804 0.030427 -0.015195 -0.155603 -0.016584 0.021461 -0.003528 -0.059784 0.032214 0.000847 -0.098859 -0.078980 0.043188 0.066433 0.062309 0.144507 0.006865 -0.068953 0.046698 0.099369 0.043354 -0.014309 -0.033202 -0.002950 0.040734 0.083454 0.039319 0.051358 0.006074 -0.073465 -0.090554 -0.120787 -0.040676 0.092412 -0.085151 -0.021699 0.005813 0.103135 0.024964 0.025832 -0.075982 0.035699 -0.027310 -0.153007 0.036420 0.057600 0.081630 0.001605 -0.054191 -0.033043 -0.014390 -0.071383 0.036180 0.035860 -0.046980 0.038541 -0.044757 -0.078032 -0.029878 0.078183 0.082251 0.010549 0.053317 -0.038231 -0.065610 0.055798 0.037504 0.076317 -0.027605 0.010349 0.095361 -0.088636 0.049089 0.113316 0.051084 0.038589 0.034330 -0.055948 -0.037217 -0.015418 -0.139976 0.036306 0.039306 -0.009889 -0.044910 0.016559 -0.000050 0.106073 0.015280 -0.002563 -0.109085 -0.048475 -0.035319 0.163860 0.032981 -0.044932 0.003227 -0.123233 -0.010638 0.055479 -0.003666 -0.072249 -0.111158 0.065365 0.010691 0.039119 -0.001837 -0.118729 0.061470 -0.002077 -0.033335 -0.060165 -0.026081 -0.001806 -0.079616 -0.000075 0.080598 0.032908 -0.035140 -0.003136 -0.029024 0.094622 -0.075773 -0.022898 -0.014817 0.058393 -0.111505 0.036794 -0.015760 -0.112602 0.030323 0.085897 -0.020834 0.056079 -0.103762 0.117671 -0.041205 0.041684 -0.084336 0.034186 0.011973 -0.006313 0.040836 -0.035709 0.034170 0.122672 0.090973 -0.053182 -0.059371 0.091017 -0.090998 -0.116986 0.001405 0.138364 0.017107 -0.064076 0.103486 -0.031142 -0.030068 0.046547 -0.133471 -0.042055 0.140418 -0.125084 0.035218 -0.001162 -0.021130 -0.012034 0.097413 -0.079006 -0.039030 -0.054011 0.143887 0.078835 -0.000601 -0.021173 -0.039895 -0.025050 0.075865 0.039221 0.032458 0.038206 -0.038873 -0.085003 -0.032736 -0.026956 0.113525 -0.023933 0.120794 -0.003862 -0.026459 -0.138724 0.089559 0.029002 -0.052098 -0.085692 0.115174 0.083497 0.024179 0.119021 -0.067541 0.019047 -0.027720 -0.086083 -0.055329 0.020087 -0.027086 -0.047858 -0.051975 -0.035205 -0.059342 -0.068582 0.058936 0.044141 -0.080315 0.119744 -0.046518 -0.064588 -0.027212 0.147823 0.032404 0.016690 0.024302 0.085560 -0.001525 0.016469 0.038891 -0.020146 0.019943 0.045067 0.038070 -0.086274 -0.025769 0.044192 0.102141 -0.064765 0.055849 0.048803 -0.030066 -0.009220 -0.116655 0.068295 0.047580 -0.076138 -0.070307 0.047582 -0.111342 0.004656 -0.004452 0.029703 -0.004259 0.011130 0.014446 0.166086 0.059565 0.000985 -0.052607 0.013251 0.094476 0.106216 0.016715 -0.025581 -0.101244 0.072897 -0.114526 0.024681 0.010784 -0.051759 0.032389 -0.050202 -0.083316 0.052334 -0.035100 -0.116721 -0.110336 -0.053391 0.065541 -0.029790 -0.020457 0.135285 -0.004142 0.111508 -0.030936 0.018549 -0.016034 0.018572 -0.084336 -0.048615 -0.018739 -0.096815 -0.090162 0.019410 -0.040821 -0.009925 -0.097427 0.091891 0.031793 -0.024598 -0.132848 0.078353 0.089339 -0.068562 -0.020779 0.040974 -0.055675 0.169131 0.029649 0.078165 -0.050679 -0.005881 -0.004983 -0.104324 -0.069096 0.127960 0.011392 -0.000769 0.062168 -0.079842 0.001606 0.089284 -0.035465 0.031075 0.029519 -0.102956 -0.010902 -0.064030 -0.019669 0.057492 0.075802 -0.008904 -0.060743 -0.053144 0.005126 0.062980 0.085674 0.019895 0.104448 -0.086473 0.056906 0.056795 -0.012940 0.036606 -0.008604 -0.040450 0.042062 0.041810 0.027680 -0.092256 0.091237 -0.039500 0.024761 -0.088978 0.068585 0.088295 -0.048033 -0.017808 0.045370 0.124600 -0.035320 0.056751 0.092751 0.054025 -0.015725 -0.061938 0.036806 0.078768 -0.016065 0.002444 -0.023887 -0.072177 -0.029790 -0.005860 0.015478 0.129142 -0.091024 0.071482 -0.065445 0.005867 -0.006051 0.098646 0.054089 0.018713 0.033837 -0.008355 -0.051959 0.057440 0.160305 -0.001863 0.016738 -0.033705 0.062233 -0.140759 0.027342 0.060074 0.030362 -0.117875 0.061020 -0.028026 -0.088238 -0.003782 -0.146288 -0.080395 0.050048 0.036136 0.019500 0.066902 0.020355 0.024817 -0.056254 -0.140918 -0.085803 0.020540 -0.003730 0.161411 -0.049408 0.000219 -0.002348 -0.055021 0.067820 0.126483 -0.031063 -0.119299 -0.102834 0.001133 0.010172 0.107707 -0.029106 -0.059813 0.036698 -0.021720 -0.043189 -0.002270 -0.031694 0.009605 -0.022459 -0.036417 0.053675 0.061561 -0.012723 0.050040 -0.029450 0.131044 -0.124516 -0.107579 -0.012171 0.011761 0.002599 0.016327 -0.060854 -0.080910 0.030875 -0.002997 -0.020970 -0.011880 -0.086096 0.037912 0.012421 0.055253 -0.007250 0.041740 0.055596 -0.024420 -0.017564 -0.079202 0.008897 0.180091 0.054490 0.001772 -0.022151 -0.082048 -0.010559 -0.163377 -0.020660 -0.017827 -0.030800 -0.045856 0.122405 -0.052946 -0.130490 0.097383 -0.116737 0.039855 0.056504 -0.059549 -0.059931 -0.018658 0.034898 0.054889 0.005373 -0.066796 -0.127360 0.047960 0.071746 0.027410 -0.006212 0.024132 -0.094062 0.005369 -0.008926 0.073085 -0.014265 -0.029204 -0.100025 -0.072076 0.014651 0.069368 0.048275 -0.066823 0.086074 0.014921 -0.015395 -0.045138 0.026224 0.000902 -0.038208 -0.035221 0.057397 0.097606 -0.073195 0.051626 -0.033488 0.027813 0.002070 -0.097510 -0.057877 0.126680 -0.082194 -0.072597 0.006014 -0.093185 -0.016853 -0.022790 0.138461 0.005394 -0.056485 0.102778 0.028918 -0.045604 -0.060041 0.121251 0.029260 -0.101404 0.061194 0.033039 -0.016798 0.064263 0.065144 0.010925 0.023151 0.107623 0.027977 -0.090356 -0.024863 -0.006440 0.047870 -0.047486 0.088211 -0.012139 -0.116121 -0.000525 -0.140961 0.016604 0.063490 -0.022732 -0.046944 0.066970 -0.068838 0.016143 0.026202 -0.043344 -0.064881 0.024877 -0.072845 0.120531 0.077901 0.047272 0.011713 -0.044646 0.040932 0.076164 -0.101233 -0.029615 -0.065118 0.050966 -0.023273 0.053517 0.023710 -0.007489 0.035822 0.023439 -0.055528 -0.004033 -0.007662 -0.096546 -0.081662 0.037141 0.137562 0.075526 -0.097496 0.123990 0.013996 0.087005 -0.019788 -0.082043 0.020524 0.007027 -0.021537 -0.036264 -0.090952 -0.177722 -0.009306 -0.031473 -0.009287 0.047557 -0.090241 0.089347 0.056375 -0.005506 -0.112128 0.004356 0.064421 -0.038478 -0.035674 0.040616 0.007731 0.160236 -0.054199 -0.007537 0.012434 0.022001 -0.021567 -0.075163 -0.026053 0.015909 0.041015 0.021832 0.034152 -0.048539 -0.086655 0.047465 0.000682 0.042640 0.023697 -0.095971 -0.022874 -0.000369 0.003413 0.046005 0.064807 0.010131 -0.129517 -0.092254 0.116469 0.053796 0.038110 0.094470 0.018435 -0.034803 0.073591 0.108348 0.104096 0.049884 -0.021274 0.022097 0.065347 0.065555 0.089319 0.000474 -0.004186 -0.040493 -0.065543 -0.083167 -0.017425 0.049177 -0.044248 0.008399 0.068180 0.154778 0.027549 -0.008012 0.014950 0.043254 0.039599 -0.136415 -0.018716 0.061900 0.031263 0.058118 -0.037200 -0.114692 -0.080876 -0.053238 0.077436 0.015015 -0.092517 0.005804 -0.065541 -0.005653 -0.073184 0.095594 0.082470 0.060989 -0.000262 -0.035766 -0.083441 0.122634 0.088429 -0.014397 -0.055434 -0.005659 0.069697 -0.064892 0.008824 0.082498 0.051866 -0.036070 0.033403 -0.082855 -0.087376 0.002714 -0.097121 -0.019170 0.027179 -0.069870 -0.009316 0.047450 0.040657 0.060527 0.004620 -0.040264 -0.051228 -0.029023 -0.071384 0.101421 0.009538 -0.099185 0.060100 -0.048395 -0.024677 0.025125 -0.056043 -0.058045 -0.054059 0.008107 0.021078 0.045290 -0.018459 -0.113359 0.014009 -0.006826 -0.052747 0.046922 -0.075976 0.008538 -0.084411 -0.004369 0.045801 0.075392 -0.067340 0.014454 0.032407 0.092478 -0.061859 -0.083458 0.051442 0.031695 -0.080233 0.054028 0.027000 -0.073549 0.032300 0.036501 -0.011384 -0.020780 -0.124142 0.093905 -0.028332 0.039139 -0.030944 0.079952 -0.001717 0.013976 0.038005 -0.001751 -0.044097 0.129827 0.014385 -0.001682 -0.063458 -0.002511 -0.078150 -0.141236 0.021955 0.104851 -0.093246 -0.060019 0.069998 0.004399 -0.096408 0.059327 -0.062268 -0.074327 0.108063 -0.090534 -0.045654 0.048119 0.049187 0.042105 0.043964 -0.091516 -0.047999 -0.028881 0.070471 0.055401 -0.025605 0.011176 0.008475 0.022254 0.038266 0.048106 0.047176 -0.017967 -0.010978 -0.088762 0.034806 0.019311 0.126815 -0.010571 0.053073 0.032162 -0.000780 -0.152200 -0.014253 -0.021954 -0.131040 -0.061376 0.113838 0.060725 0.020201 0.102533 -0.011392 -0.052046 -0.069625 -0.091011 -0.097954 0.067847 0.017856 -0.053461 -0.040679 -0.121664 -0.077208 -0.106919 0.057996 0.069756 -0.012433 0.069569 -0.055159 -0.024801 -0.060448 0.101700 0.014619 0.036580 -0.004526 0.093977 -0.028211 0.045261 0.149736 -0.014691 -0.007959 0.097708 0.107128 -0.079723 0.029157 0.020116 0.104828 -0.064208 0.119172 0.039583 -0.029446 0.006628 -0.110398 0.004062 0.048132 -0.060601 0.009448 0.051777 -0.053127 0.050551 -0.001924 0.028079 -0.050618 -0.013698 0.001920 0.088162 0.073078 0.085795 -0.066788 0.014025 0.042699 0.176241 -0.046674 -0.034822 -0.051433 0.121729 -0.057076 0.023901 0.045075 -0.057182 0.054780 -0.017280 -0.146674 0.002090 -0.016223 -0.044841 -0.084524 -0.152479 0.072688 -0.006962 0.008711 0.127455 -0.003876 0.053162 -0.013682 -0.025386 -0.000427 -0.024811 -0.024474 -0.056267 0.062116 -0.121311 -0.053011 0.065651 -0.075385 -0.008680 -0.063033 0.083039 0.110577 -0.000152 -0.127017 0.055904 0.013659 0.005664 -0.002852 0.047248 0.001128 0.100773 0.037274 0.026368 -0.042205 0.021887 -0.020247 -0.056678 -0.077475 0.089799 0.058003 0.039741 0.106663 -0.016853 -0.015972 0.075741 -0.048829 0.015374 -0.032657 -0.125677 -0.062060 -0.057409 -0.061287 0.073151 0.050357 0.053547 -0.059886 -0.051298 0.057954 -0.003817 0.076028 0.006757 0.061109 -0.038030 0.143209 0.092207 -0.018493 0.062291 0.005751 -0.036449 0.067582 0.031449 0.101894 -0.080754 0.011515 -0.049485 -0.016137 -0.087818 0.108851 0.038222 -0.099315 -0.003117 0.052278 0.107517 -0.036233 0.065370 0.040409 -0.057029 -0.033167 -0.081758 -0.019502 0.033438 0.013365 -0.017760 -0.025906 -0.020244 -0.078722 -0.011697 -0.028246 0.068647 -0.106417 0.026956 -0.064914 0.062711 -0.017857 0.151539 0.044613 -0.017820 0.009085 -0.032785 -0.025795 0.075790 0.075667 -0.040398 0.058556 -0.042634 0.093973 -0.099529 0.057103 0.073562 0.012640 -0.066141 0.029558 0.060219 -0.083699 -0.054799 -0.120442 -0.000374 0.006521 0.034512 -0.039558 0.042191 0.033865 0.103992 -0.014977 -0.077384 -0.051340 0.001873 0.047451 0.140612 -0.024885 -0.021420 -0.046604 0.030606 0.100660 0.076356 -0.019288 -0.098570 -0.114463 -0.010855 -0.034657 0.025618 -0.003356 -0.087913 0.064346 -0.075540 -0.091569 -0.024965 -0.021232 -0.017255 -0.056931 -0.003104 0.030219 -0.020112 -0.012334 0.035298 0.001405 0.161753 -0.064618 -0.064401 -0.007218 -0.000120 -0.047208 0.116105 -0.056464 -0.069645 -0.007032 -0.012090 -0.023237 0.016000 -0.039802 0.074319 -0.012604 0.014863 -0.058081 0.093219 0.062253 -0.040302 0.027405 -0.128683 0.039923 0.116808 -0.011706 0.012483 -0.017698 0.003645 -0.007588 -0.120662 -0.032868 0.066217 -0.031343 -0.034166 0.146334 -0.031228 -0.125921 0.117756 -0.042686 -0.062094 0.049375 -0.112262 0.010166 -0.073599 0.048690 0.028292 0.020076 -0.062865 -0.106114 -0.025300 0.066916 0.029279 0.028191 -0.003599 -0.040614 0.020491 0.060238 0.052747 -0.010390 -0.022389 -0.063358 -0.028707 0.035907 -0.011898 0.079703 -0.003758 0.078051 -0.017869 0.009045 -0.018982 0.034974 0.069405 -0.018909 -0.038613 0.083909 0.033935 -0.036607 0.088891 -0.052599 -0.059839 0.052758 -0.068308 -0.063615 0.126093 -0.009460 -0.042175 -0.011113 -0.073071 0.052086 -0.052619 0.049226 0.066898 -0.045666 0.117923 0.053656 -0.010739 -0.043962 0.141903 0.001792 -0.035469 0.090671 0.043993 -0.013655 0.018989 0.127223 0.001030 -0.001154 0.081839 -0.024979 -0.103704 -0.077920 0.036083 0.068220 -0.062210 0.113730 -0.010501 -0.065801 0.050885 -0.104304 0.121937 0.111850 0.009680 -0.011791 0.001677 -0.035029 0.010677 0.024572 -0.012860 -0.030323 -0.010466 0.011279 0.167752 0.003136 0.109709 0.007292 0.000987 0.004572 0.108706 -0.113192 -0.012431 -0.015225 0.073653 -0.051275 0.077928 -0.012752 -0.011708 0.014172 0.025162 -0.095378 0.026382 -0.028889 -0.058569 -0.129329 0.011087 0.061452 0.056893 -0.058004 0.103586 -0.060752 0.081824 -0.042805 -0.015991 -0.024444 0.028952 -0.013528 0.042851 0.019988 -0.165741 -0.031012 -0.014713 -0.026059 0.031698 -0.134343 0.032090 0.020828 0.051674 -0.128006 0.050856 0.022220 -0.073513 -0.009340 0.013756 0.036163 0.098407 -0.023495 0.023858 0.008121 0.022220 -0.103489 -0.046663 -0.033000 0.063565 0.029224 -0.012693 0.084202 0.012187 -0.051000 0.026126 -0.043293 0.008675 -0.019812 -0.165070 -0.014555 -0.047431 0.017990 -0.040073 0.107192 0.022228 -0.089023 -0.066885 0.014630 0.073186 0.069902 0.072634 0.019593 -0.041539 0.031788 0.092310 0.027223 0.034027 -0.051855 0.000391 0.007869 0.131910 0.069384 0.046276 0.040440 -0.037093 -0.031393 -0.112828 0.015709 0.096749 -0.103205 -0.021284 0.011405 0.158287 -0.021028 0.042219 -0.050759 0.069715 -0.042907 -0.116980 0.014224 0.094648 0.028395 0.041535 -0.057033 -0.047607 -0.024419 -0.034905 0.010125 0.036728 -0.052503 -0.001839 -0.033477 -0.053414 -0.070394 0.092895 0.100600 -0.026352 0.080574 -0.028763 -0.059548 0.094571 0.091787 0.041437 0.014312 0.045792 0.108269 -0.081586 0.056288 0.137447 0.054718 -0.032474 0.054502 -0.100144 -0.006460 0.024739 -0.117043 -0.008919 0.070299 -0.036862 -0.014543 0.024500 -0.015222 0.114975 -0.043705 0.000421 -0.061872 -0.035148 -0.022797 0.128575 -0.031798 -0.086718 -0.007172 -0.071706 -0.006833 0.028645 -0.007011 -0.096745 -0.142269 0.027996 0.065210 0.061381 0.000741 -0.140531 0.017480 -0.014986 -0.040893 -0.012718 -0.012494 -0.021869 -0.032923 0.016456 0.104475 0.010792 -0.066178 0.019097 -0.001893 0.067513 -0.092673 -0.059851 -0.045936 0.052642 -0.062500 0.065013 -0.025659 -0.149301 0.051705 0.035692 -0.045790 -0.007482 -0.069141 0.149365 -0.042039 0.018492 -0.081315 0.055880 0.058158 0.019669 0.063836 -0.012391 0.007057 0.155454 0.033854 -0.016532 -0.007661 0.043113 -0.080283 -0.108670 -0.029344 0.093781 -0.015840 -0.068134 0.091804 0.004148 -0.058507 0.059633 -0.095883 -0.004939 0.086151 -0.113571 -0.019466 -0.009167 0.003662 codec2-1.2.0/src/codebook/lspvqexp1.txt000066400000000000000000005500221445607075400177510ustar00rootroot0000000000000010 2048 0.408892 0.649827 0.954657 1.095560 1.374775 1.695544 2.186975 2.404129 2.599671 2.716599 0.206312 0.393044 0.534358 0.831490 0.964061 1.315881 1.711009 1.884982 2.656064 2.789476 0.294007 0.430921 0.584720 0.972610 1.346504 1.446720 1.672880 1.854151 2.292980 2.574467 0.130573 0.192259 0.568997 1.014611 1.204902 1.371336 1.696595 2.109828 2.488139 2.749404 0.119174 0.172048 0.555350 1.041664 1.294588 1.603976 1.924941 2.215881 2.537337 2.763865 0.264060 0.351222 0.551394 0.836209 0.955359 1.467373 1.883071 2.011362 2.370015 2.500936 0.206715 0.433527 0.682328 0.833734 1.164725 1.476463 1.775427 2.152234 2.639949 2.796348 0.211225 0.320307 0.437323 0.659797 1.492016 1.699378 1.859517 2.131810 2.328455 2.499706 0.480644 0.630950 0.822352 1.123960 1.461020 1.594792 1.889414 2.166284 2.404039 2.536132 0.233285 0.324869 0.445867 0.683777 0.826101 0.975483 1.764219 2.154061 2.334729 2.602314 0.315909 0.537121 0.711160 0.941341 1.178015 1.302627 1.643751 2.058463 2.464410 2.591263 0.245173 0.382524 0.532006 0.708503 1.236528 1.448436 1.777993 2.124256 2.306038 2.625603 0.245615 0.291619 0.819764 1.444781 1.578166 1.731349 2.095787 2.242522 2.603987 2.720052 0.173862 0.229815 0.418896 0.695378 0.931595 1.188532 1.820958 2.120767 2.330289 2.464753 0.303527 0.372419 0.740620 1.167964 1.327370 1.494681 1.784226 1.898711 2.311465 2.642713 0.259744 0.401730 0.575188 0.834348 1.431968 1.604358 1.798482 2.185462 2.402074 2.554969 0.337109 0.570466 1.175085 1.451610 1.761333 1.975735 2.126135 2.293190 2.536691 2.706431 0.367145 0.452099 0.647409 0.817255 0.902956 1.238037 1.825344 1.922997 2.436059 2.609846 0.378662 0.531818 0.674407 0.919671 1.409610 1.559852 1.771428 2.027114 2.253246 2.408198 0.163411 0.267202 0.378752 0.982090 1.260325 1.393847 1.801359 1.943528 2.730199 2.854737 0.315416 0.366274 0.657622 1.193970 1.448486 1.554740 1.791291 1.913099 2.285878 2.665674 0.182284 0.250810 0.478825 0.774649 1.250927 1.657871 1.857476 1.999098 2.286088 2.777030 0.280912 0.330939 0.631688 0.754025 0.941971 1.616999 1.814228 2.013341 2.634148 2.720386 0.197110 0.280354 0.442898 0.794104 1.537225 1.674591 1.953914 2.155343 2.626079 2.817453 0.324055 0.494234 0.849184 1.111214 1.388737 1.737885 1.975967 2.381772 2.611796 2.753205 0.249643 0.364552 0.527912 0.900747 1.026842 1.398842 1.869778 2.015830 2.450740 2.598903 0.210241 0.311192 0.495868 0.687507 1.152048 1.296946 1.520174 2.255285 2.440410 2.686456 0.159037 0.244226 0.385934 0.687847 1.072342 1.386804 1.785080 1.924100 2.533529 2.669124 0.234363 0.441050 0.678179 0.862648 1.224287 1.720752 1.949118 2.386935 2.642309 2.768447 0.177323 0.256095 0.417949 0.816232 1.042933 1.254927 1.618581 1.928664 2.118610 2.463463 0.247362 0.335496 0.753623 1.051947 1.239658 1.426773 1.621176 2.053494 2.480950 2.615165 0.156480 0.216035 0.368476 0.588087 1.238670 1.459124 1.827783 1.975080 2.316953 2.770680 0.198050 0.342316 0.883251 1.421788 1.645484 1.905948 2.140263 2.301866 2.620508 2.774812 0.257995 0.358680 0.537441 0.694512 0.824406 1.362975 1.764952 1.925331 2.486171 2.617074 0.252496 0.330798 0.493815 0.973920 1.306189 1.439735 1.920226 2.087274 2.257323 2.398019 0.165073 0.249466 0.371194 1.033936 1.278111 1.449107 2.046790 2.168316 2.497102 2.729474 0.351523 0.566840 0.885298 1.113196 1.285310 1.425799 1.728030 2.101425 2.514797 2.765585 0.247070 0.331460 0.517797 1.035640 1.189321 1.389341 1.740344 1.976250 2.202072 2.430856 0.250272 0.471488 0.632229 0.874364 1.003062 1.214226 1.782201 1.915722 2.618775 2.804373 0.178042 0.247938 0.413307 0.724804 1.348933 1.537515 2.114127 2.301885 2.636884 2.826241 0.321648 0.521672 0.933498 1.194774 1.582506 1.752098 1.962687 2.185410 2.511609 2.710750 0.189405 0.281558 0.405270 0.624133 0.831682 0.979077 1.773124 2.022636 2.231772 2.709233 0.338988 0.556585 0.722942 0.903725 1.137734 1.260460 1.698745 2.141650 2.342421 2.527244 0.283960 0.422437 0.547151 0.805702 1.347223 1.507695 1.702228 2.041553 2.221081 2.575186 0.116988 0.373808 0.677058 1.246354 1.579914 1.860096 2.174202 2.426485 2.666464 2.778514 0.172660 0.279061 0.420803 0.776647 1.027097 1.182553 1.880931 2.023781 2.400028 2.816622 0.244703 0.354981 0.775126 1.007264 1.208883 1.571339 1.920167 2.128560 2.418384 2.673311 0.277862 0.345899 0.491009 1.000182 1.668493 1.893737 2.024216 2.203943 2.418550 2.555188 0.200787 0.681282 1.126094 1.309507 1.738042 2.023257 2.342799 2.463428 2.602179 2.702804 0.223979 0.466963 0.728850 0.888776 1.090618 1.234456 1.705574 2.241550 2.510834 2.751795 0.264860 0.389642 0.536973 0.871669 1.323290 1.441181 1.682582 1.973355 2.163007 2.401176 0.254211 0.390772 0.549594 0.748576 1.280532 1.474290 1.636048 2.013508 2.479875 2.650004 0.191314 0.280703 0.420214 1.117728 1.347340 1.558388 1.722577 2.094362 2.606691 2.753977 0.152313 0.198389 0.337122 0.490241 1.023739 1.222176 1.581978 1.852165 2.361974 2.553970 0.343523 0.473063 0.661058 0.896926 1.009881 1.426789 2.003978 2.115197 2.358072 2.676757 0.225495 0.299263 0.443642 0.793508 1.407173 1.798104 2.159374 2.284811 2.501925 2.644715 0.220837 0.608771 0.967248 1.237940 1.450245 1.693405 2.002186 2.239767 2.534945 2.707207 0.290250 0.359912 0.599268 0.771394 0.922184 1.257421 2.137963 2.330228 2.526054 2.700371 0.269144 0.463439 0.625052 0.842594 1.239627 1.353331 1.687365 2.092062 2.284863 2.634475 0.170231 0.237346 0.408666 0.698347 1.146923 1.313417 1.753705 1.891356 2.401344 2.558038 0.171963 0.247483 0.388808 0.980638 1.502962 1.644121 1.955137 2.148787 2.393447 2.630021 0.209519 0.325681 0.464669 0.682705 1.111676 1.225834 1.824262 2.151181 2.384320 2.739424 0.210672 0.533806 0.825201 0.990473 1.145813 1.393566 1.999486 2.222956 2.524156 2.776040 0.261962 0.340226 0.472952 0.863674 1.443518 1.829669 1.994398 2.132878 2.355090 2.469655 0.340277 0.460050 0.748860 1.054174 1.614903 1.804636 1.993799 2.247318 2.473443 2.602200 0.239159 0.394343 0.578732 0.754990 0.941899 1.128161 1.620559 2.020968 2.585087 2.783718 0.269667 0.342100 0.485464 1.053892 1.413864 1.534461 1.740671 1.909701 2.286779 2.538869 0.076962 0.097269 0.408343 0.942043 1.237899 1.573872 1.883029 2.186618 2.520305 2.790522 0.170175 0.223705 0.651279 1.003661 1.370350 1.628746 1.941629 2.172624 2.450895 2.649955 0.219608 0.300784 0.472750 0.871097 1.064995 1.283347 1.869030 2.047338 2.234764 2.423176 0.283455 0.337982 0.663326 0.792275 0.925513 1.457560 1.740494 1.857127 2.583274 2.700391 0.199190 0.263142 0.443787 0.684379 1.185091 1.879212 2.080132 2.224038 2.427704 2.576557 0.219374 0.680594 0.965335 1.102093 1.296977 1.590756 2.074636 2.334754 2.586458 2.754939 0.198099 0.308630 0.432817 0.619556 0.754862 0.931998 1.549410 1.846704 2.294094 2.636366 0.338876 0.446352 0.640399 0.996449 1.224095 1.344627 1.695974 1.883015 2.104946 2.489100 0.166453 0.240154 0.399798 0.829295 1.305386 1.443374 1.723531 1.880577 2.379309 2.500316 0.244810 0.287547 0.565833 1.376218 1.610718 1.731021 2.128375 2.264382 2.552460 2.697921 0.203376 0.353110 0.454768 0.707277 0.892936 1.038801 1.609843 1.809379 2.065993 2.304645 0.392222 0.453261 0.813874 1.205541 1.320471 1.599816 1.858220 2.029353 2.491522 2.638332 0.269519 0.326891 0.470180 1.053385 1.538230 1.686468 1.865876 2.081763 2.229408 2.441901 0.463250 0.707535 1.093317 1.316217 1.598936 1.783637 1.982618 2.134436 2.396915 2.574501 0.234043 0.348930 0.473804 0.709797 1.030257 1.152835 1.749074 2.178802 2.334442 2.638112 0.356771 0.553522 0.702444 0.911763 1.372687 1.512426 1.716079 1.969296 2.175300 2.356841 0.215283 0.314571 0.448084 0.938241 1.488615 1.610559 1.858891 2.014800 2.487515 2.656114 0.255059 0.324128 0.591637 1.140724 1.280033 1.626440 1.845765 2.008493 2.607807 2.732065 0.190953 0.284283 0.446537 0.903721 1.083755 1.521604 1.865214 2.039362 2.398102 2.603527 0.218632 0.323425 0.485128 0.801138 0.934826 1.550687 1.950327 2.141484 2.437725 2.588421 0.240697 0.351397 0.469534 0.775124 1.406794 1.725183 1.871364 2.156495 2.381976 2.555115 0.355558 0.461716 0.684575 1.091512 1.719266 1.926216 2.051391 2.237427 2.507442 2.610706 0.160350 0.190000 0.366405 0.494497 0.868240 1.345426 1.566707 2.068702 2.335099 2.641913 0.219362 0.326275 0.619951 0.801217 1.176182 1.324616 1.567767 1.852718 2.393752 2.544625 0.242295 0.361032 0.536827 0.699045 1.264826 1.578333 1.777090 2.115510 2.587465 2.731970 0.185629 0.225499 0.394464 1.072663 1.725553 1.814897 2.037215 2.318703 2.570456 2.700776 0.199282 0.271847 0.427336 0.691175 0.936688 1.307560 1.755173 1.941991 2.180527 2.289541 0.440652 0.657600 0.846249 1.115177 1.383954 1.526095 1.839294 2.054337 2.261747 2.486134 0.254743 0.370981 0.519721 0.892661 1.365537 1.512546 1.867709 2.025821 2.338400 2.608154 0.374541 0.564001 1.042547 1.268517 1.427251 1.737400 2.240345 2.527386 2.748712 2.871518 0.163240 0.229374 0.631209 0.821347 1.079198 1.312352 1.847665 2.085082 2.462129 2.646514 0.257702 0.368235 0.785115 0.964453 1.130321 1.417415 1.830826 2.058137 2.393471 2.589613 0.195822 0.280922 0.414972 0.646213 1.237085 1.398279 1.830678 2.337509 2.561924 2.750149 0.302754 0.361163 0.751614 0.974525 1.131739 1.643605 1.825553 2.044086 2.641030 2.739994 0.235437 0.315967 0.652539 0.816752 1.083366 1.622892 1.852217 2.030423 2.192530 2.575813 0.291611 0.410807 0.602501 0.962264 1.083617 1.420033 1.771443 1.907873 2.445734 2.652716 0.189868 0.257547 0.397682 0.669228 1.309264 1.797630 1.994844 2.138696 2.608657 2.757821 0.479797 0.701925 0.989967 1.226383 1.556286 1.735962 2.055139 2.286164 2.529859 2.666528 0.215045 0.313827 0.431033 0.651895 0.829909 1.000831 1.815727 2.226013 2.392474 2.760351 0.306301 0.398661 0.653631 1.025764 1.189362 1.401036 1.898166 2.051914 2.236996 2.422421 0.167970 0.224219 0.368107 0.623431 1.201568 1.381682 1.762247 1.920037 2.113047 2.522470 0.185718 0.243656 0.376917 1.209258 1.581544 1.690223 2.033223 2.376102 2.591085 2.756869 0.147871 0.206576 0.362439 0.637580 0.940549 1.343574 1.621941 1.733152 1.946250 2.723886 0.324080 0.457905 0.793499 1.005600 1.260387 1.583156 1.886643 2.096396 2.372896 2.578810 0.226219 0.308328 0.636626 0.866278 1.534446 1.701010 1.887737 2.161067 2.358914 2.503200 0.606744 0.955507 1.338156 1.567438 1.821726 2.055362 2.279753 2.416922 2.604378 2.699013 0.246984 0.386718 0.502785 0.760434 1.042124 1.263722 1.435097 2.414889 2.724612 2.819326 0.292410 0.502940 0.672216 0.892183 1.209496 1.339252 1.760220 1.968766 2.362511 2.623487 0.143375 0.199091 0.483698 0.992064 1.214869 1.614010 1.832079 1.978488 2.281935 2.713930 0.266561 0.304298 0.533705 1.305138 1.580937 1.665891 1.884884 2.014163 2.228380 2.568778 0.178658 0.231896 0.383912 0.540251 1.225283 1.458102 1.922772 2.083421 2.250593 2.408925 0.289292 0.350422 0.695339 0.839824 1.012699 1.582703 1.751493 2.110402 2.491079 2.602625 0.191978 0.275525 0.396619 0.582467 1.263497 1.658220 1.987982 2.164226 2.491219 2.655634 0.271271 0.427594 0.784469 1.094218 1.535344 1.895921 2.111855 2.328610 2.716413 2.835820 0.197072 0.315577 0.461034 0.771499 0.895098 1.249097 1.937811 2.117715 2.428590 2.608183 0.211338 0.407351 0.538840 0.766827 1.152593 1.246498 1.679320 1.905728 2.120349 2.677619 0.135615 0.163159 0.283783 0.431117 0.953107 1.462377 1.809595 2.130270 2.442565 2.743798 0.166707 0.238759 0.367497 0.902142 1.508106 1.650293 1.825543 1.979014 2.655324 2.825020 0.349277 0.540928 0.693205 0.826151 1.104738 1.259800 1.507300 2.094618 2.320842 2.523635 0.325055 0.432779 0.621749 1.070682 1.304776 1.457668 1.900591 2.027150 2.460400 2.683254 0.232534 0.355259 0.543295 0.744519 1.329342 1.648497 1.789282 2.116619 2.343387 2.501568 0.465485 0.876578 1.205981 1.371947 1.745534 1.938156 2.176847 2.328487 2.521049 2.656868 0.246604 0.364927 0.536848 0.850639 1.033582 1.224962 1.555694 1.725857 2.343766 2.568854 0.345140 0.476535 0.650548 0.994609 1.167264 1.343813 1.779614 1.923453 2.324548 2.609157 0.140607 0.199293 0.674213 0.958553 1.263430 1.520789 1.808626 2.055790 2.415260 2.705252 0.125913 0.381885 0.618365 0.994294 1.317324 1.547930 1.818095 2.158588 2.494214 2.751068 0.214195 0.320569 0.719851 0.846412 1.134388 1.428969 1.611410 2.041914 2.282243 2.508041 0.250098 0.404670 0.540333 0.911835 1.060249 1.279821 1.619963 1.771663 2.496606 2.697909 0.163090 0.213459 0.360500 0.504711 1.040089 1.576896 1.979044 2.125480 2.339164 2.609713 0.356943 0.533785 0.924836 1.108094 1.324907 1.563986 2.016874 2.233505 2.510859 2.677439 0.226046 0.346550 0.669965 0.775492 0.992753 1.149356 1.460794 2.260130 2.505825 2.717261 0.322304 0.403181 0.776459 0.964458 1.099992 1.312705 1.399455 1.890224 2.369477 2.448458 0.181583 0.245567 0.398747 0.597666 1.249798 1.421203 1.606076 2.062186 2.473743 2.644347 0.254588 0.326744 1.005093 1.262125 1.386127 1.779710 1.955644 2.320802 2.571383 2.678189 0.216441 0.331207 0.529500 0.654360 0.976477 1.361296 1.647430 2.064996 2.284304 2.569981 0.327013 0.391820 0.720865 1.097162 1.210384 1.510465 1.765619 1.895802 2.508466 2.678337 0.252152 0.343407 0.663772 1.085064 1.474659 1.659743 1.910625 2.070943 2.565518 2.717751 0.349806 0.488123 1.077976 1.292638 1.515886 1.846355 2.084915 2.406884 2.610810 2.736561 0.182819 0.308233 0.418992 0.708488 0.808059 1.045333 1.698019 1.837574 2.442304 2.609622 0.277323 0.408804 0.571028 0.828924 1.404815 1.598729 1.759862 1.985935 2.333424 2.455915 0.229839 0.342341 0.470342 1.002275 1.285925 1.399377 1.816619 1.930907 2.470705 2.802064 0.244913 0.299585 0.779774 1.322881 1.429162 1.587382 1.738489 2.162786 2.520459 2.623668 0.161891 0.228443 0.419656 0.733282 0.922895 1.405447 1.884393 2.078046 2.269896 2.589494 0.270447 0.452251 0.634105 0.780705 0.965021 1.351395 1.825782 2.214939 2.632158 2.796098 0.171118 0.234980 0.395507 0.838430 1.544455 1.699044 2.124182 2.287668 2.660613 2.849673 0.213781 0.293496 0.663454 0.993393 1.412625 1.646492 2.074110 2.290676 2.508346 2.653511 0.199402 0.316802 0.426338 0.630931 0.735249 1.132121 1.883614 2.046046 2.416976 2.580155 0.210048 0.294088 0.590707 0.762351 1.146848 1.352924 1.637070 2.017207 2.305862 2.432462 0.154676 0.232848 0.373861 0.948260 1.342786 1.514201 1.755766 1.926693 2.555124 2.717005 0.137148 0.221322 0.381753 0.919373 1.152152 1.376375 1.826205 2.189540 2.648671 2.813516 0.245209 0.338241 0.486220 0.814091 0.944966 1.134755 1.358289 1.523556 2.149645 2.315495 0.392124 0.549332 0.727700 0.905451 1.202400 1.375569 1.534258 1.840057 2.422734 2.556400 0.148684 0.204787 0.552934 0.803123 1.372462 1.550381 1.754747 2.118492 2.372977 2.711653 0.267280 0.397322 0.846103 1.172950 1.465464 1.857475 2.153775 2.381172 2.591304 2.723190 0.194992 0.314743 0.526878 0.796319 1.177375 1.299335 1.525584 1.682646 2.452032 2.795741 0.301179 0.371796 0.577128 1.081605 1.303060 1.419674 1.898891 2.054902 2.252552 2.600649 0.252900 0.355818 0.549064 0.965795 1.162628 1.585047 1.928827 2.119789 2.498842 2.665173 0.256762 0.436508 0.715681 1.130116 1.316991 1.587569 1.850331 2.197839 2.605877 2.796521 0.235855 0.314907 0.609574 0.859658 1.266780 1.499482 1.790537 1.910982 2.039772 2.187359 0.200486 0.336241 0.495825 0.891310 1.133452 1.285295 1.612858 1.828238 2.394734 2.809663 0.179969 0.232629 0.363081 0.500578 1.184534 1.700401 2.059216 2.168101 2.610554 2.836451 0.348768 0.492321 1.055246 1.314914 1.471270 1.645210 1.876419 2.100446 2.525029 2.694314 0.171135 0.273412 0.378187 0.581850 0.726115 0.908194 1.708076 1.905747 2.542437 2.797354 0.315194 0.475887 0.658397 0.849734 1.017156 1.173887 1.755577 2.042149 2.216786 2.521016 0.229599 0.378223 0.495710 0.879870 1.173185 1.276381 1.777400 1.935276 2.173970 2.748099 0.197210 0.253422 0.651252 1.311542 1.636493 1.706783 2.105431 2.346619 2.641613 2.771729 0.232136 0.443332 0.579669 0.760076 0.955242 1.094270 1.726616 1.914262 2.122649 2.700118 0.186271 0.267327 0.840223 1.116294 1.440220 1.650886 1.944246 2.192076 2.483403 2.643816 0.268607 0.318357 0.512736 1.129834 1.613930 1.740081 1.917514 2.123735 2.299945 2.557182 0.479249 0.689878 1.088007 1.470716 1.716709 1.922473 2.158730 2.305877 2.511790 2.656073 0.307991 0.431011 0.578118 0.877244 1.205302 1.312688 1.629259 2.238238 2.462001 2.580776 0.293918 0.452236 0.659902 0.921329 1.309254 1.422508 1.668206 2.064588 2.322038 2.461436 0.131440 0.209617 0.702675 1.016897 1.223185 1.385724 1.670724 1.961691 2.376852 2.732092 0.193489 0.279816 0.428516 1.256267 1.395720 1.633455 1.873432 2.214886 2.671449 2.786280 0.182323 0.240522 0.451705 0.799605 1.223096 1.445970 1.647433 1.971485 2.217583 2.336581 0.384106 0.488198 0.644947 0.897630 1.047334 1.468272 1.839224 1.937923 2.262459 2.408476 0.260306 0.326571 0.615384 1.084790 1.376745 1.778446 1.998233 2.171540 2.424597 2.575747 0.340699 0.545965 0.865284 1.131340 1.458730 1.711046 2.089316 2.336073 2.684077 2.841771 0.290674 0.372204 0.609647 0.779269 0.906420 1.332695 1.973245 2.155443 2.354880 2.655993 0.308041 0.460783 0.632808 0.911363 1.081813 1.231896 1.747306 1.927967 2.170864 2.605727 0.180523 0.263276 0.388872 0.565969 0.970599 1.149292 1.871610 2.207290 2.458204 2.667791 0.143978 0.222658 0.400384 1.086970 1.323702 1.528106 1.995792 2.231147 2.688186 2.836361 0.209150 0.326190 0.485707 0.681360 1.195456 1.385054 1.544410 2.045718 2.276514 2.434761 0.297725 0.399777 0.588061 0.894914 1.022395 1.243834 2.009751 2.182970 2.413135 2.638027 0.228593 0.289986 0.631198 0.791618 1.403101 1.777890 1.926222 2.136335 2.313587 2.489963 0.343174 0.500760 1.039265 1.351369 1.721522 1.925940 2.190967 2.354142 2.532626 2.657845 0.149735 0.297295 0.440372 0.642471 0.732234 1.200738 1.414606 1.770276 2.778155 2.883980 0.223698 0.281114 0.635545 1.061406 1.252740 1.613423 1.836402 1.963828 2.140470 2.593562 0.168168 0.232950 0.408892 0.653722 1.031457 1.548556 1.766449 2.230830 2.626126 2.797381 0.222326 0.345655 0.786775 1.107909 1.305189 1.588197 1.993469 2.213238 2.511325 2.685326 0.224020 0.317494 0.598436 0.845315 1.197927 1.319317 1.767399 2.160174 2.338471 2.525570 0.198682 0.295026 0.450891 0.867753 0.988755 1.401296 1.687600 1.894339 2.559558 2.696080 0.206679 0.295846 0.477897 0.699492 1.273871 1.789097 1.959682 2.171515 2.399523 2.555694 0.353705 0.509579 0.861689 1.094569 1.427975 1.625819 1.845189 2.034662 2.339261 2.562173 0.176626 0.248928 0.429179 0.658231 0.856663 1.071207 1.601595 1.968639 2.470776 2.718292 0.314175 0.392578 0.678288 0.944677 1.081793 1.304708 1.492952 1.733627 2.167258 2.307337 0.202661 0.269438 0.509570 0.817339 1.376869 1.513847 1.874609 2.094859 2.323847 2.480180 0.234414 0.278975 0.540035 1.347889 1.582923 1.720967 1.986105 2.114372 2.567473 2.703603 0.146798 0.210418 0.385776 0.649932 0.920041 1.248588 1.573579 1.711404 2.232087 2.791487 0.382058 0.469618 0.713606 1.069660 1.176016 1.497437 1.813598 1.950404 2.598859 2.726089 0.334215 0.396922 0.687976 1.087820 1.575500 1.754574 1.906641 2.123504 2.311875 2.443046 0.264352 0.802524 1.285656 1.486584 1.714037 1.865311 2.035536 2.281585 2.562390 2.750718 0.270580 0.372011 0.562949 0.825388 0.994299 1.169245 1.870741 2.135215 2.301336 2.518290 0.449329 0.649113 0.811339 0.973882 1.234030 1.349977 1.692316 1.971266 2.154687 2.357538 0.180117 0.263580 0.408830 1.127021 1.317638 1.497965 1.895425 2.031294 2.672116 2.818667 0.331179 0.404977 0.766611 1.259419 1.431059 1.581972 1.939935 2.087575 2.416872 2.639616 0.194102 0.279875 0.549239 0.704386 1.177109 1.529852 1.691669 2.044312 2.359273 2.560290 0.217844 0.305871 0.442547 0.616270 0.791798 1.713038 1.956014 2.134547 2.520649 2.795859 0.162088 0.245953 0.365670 0.638902 1.457619 1.641568 1.838031 2.013303 2.320106 2.729780 0.236749 0.306797 0.734177 1.072402 1.551912 1.853315 2.104151 2.256363 2.475312 2.617668 0.176733 0.238829 0.485876 0.687779 0.927283 1.403874 1.830537 2.195431 2.429970 2.626018 0.268020 0.478288 0.731817 0.871173 1.083963 1.253101 1.535103 2.185826 2.455996 2.622463 0.166174 0.232448 0.362076 0.591660 1.356885 1.632572 1.826301 1.987791 2.467764 2.659140 0.236315 0.287802 0.548409 0.987167 1.721933 1.836472 2.152486 2.384523 2.592315 2.741028 0.148319 0.185444 0.292576 0.511994 0.653403 1.371832 1.527681 1.776139 2.182163 2.227991 0.401535 0.564293 0.893142 1.022987 1.156707 1.327441 1.701821 1.993285 2.370534 2.578619 0.165638 0.255975 0.370284 0.802811 1.426084 1.572731 1.787459 1.915582 2.413753 2.802844 0.317083 0.519809 0.936968 1.293236 1.686332 1.984336 2.186929 2.353187 2.746765 2.860986 0.189287 0.380990 0.546039 0.784587 1.003621 1.162395 1.874419 2.057907 2.555748 2.785834 0.200570 0.284860 0.609927 0.826229 1.198949 1.436548 1.809361 2.033038 2.401620 2.587587 0.168913 0.291597 0.445205 0.722025 1.163607 1.283554 1.763882 1.943265 2.445617 2.817539 0.360050 0.443567 0.853632 0.987093 1.191562 1.562912 1.869792 2.232417 2.543480 2.645225 0.231905 0.297890 0.611365 0.830346 1.094545 1.582087 1.848979 2.056068 2.241982 2.394253 0.331013 0.427540 0.641785 0.946294 1.070136 1.373613 1.859665 1.965907 2.332441 2.584977 0.186393 0.242540 0.372099 0.728034 1.467825 1.880137 2.042177 2.272992 2.633925 2.779591 0.446483 0.648214 0.993351 1.205829 1.476224 1.661697 1.899206 2.087562 2.408776 2.592556 0.208614 0.297946 0.427983 0.600065 0.709456 1.284278 2.044367 2.179822 2.682450 2.818833 0.306024 0.468602 0.638450 0.827416 1.302277 1.427429 1.811154 2.176106 2.372543 2.496738 0.152872 0.217872 0.355627 0.713701 1.075149 1.446741 1.848785 1.978762 2.159635 2.712916 0.234973 0.319771 0.478090 1.080036 1.447440 1.571699 1.982304 2.127281 2.559717 2.736762 0.162524 0.250245 0.389070 0.646952 0.872934 1.222022 1.856534 2.002922 2.205745 2.599505 0.323202 0.432855 0.814249 1.180773 1.335093 1.521419 1.901656 2.092343 2.350187 2.560064 0.273240 0.329948 0.562890 1.003483 1.538259 1.875392 2.025443 2.170349 2.380148 2.499017 0.500444 0.796365 1.318632 1.529307 1.785448 1.972761 2.147764 2.310849 2.519566 2.650408 0.263728 0.375983 0.556014 0.707339 1.188811 1.339543 1.652143 2.209513 2.616263 2.738796 0.266858 0.438409 0.640135 0.862517 1.340556 1.500100 1.686339 2.153946 2.448590 2.598137 0.190447 0.295300 0.432651 0.884499 1.072087 1.256294 1.823661 1.957091 2.345386 2.577329 0.243926 0.297921 0.524525 1.251205 1.478145 1.594774 1.967380 2.076378 2.370787 2.732472 0.167306 0.212866 0.358147 0.499128 0.984267 1.284647 1.814420 2.033044 2.314127 2.439818 0.254879 0.320323 0.682137 0.944750 1.083508 1.662985 2.084039 2.246726 2.582054 2.713386 0.212215 0.297268 0.418087 0.743693 1.609250 1.923321 2.079152 2.242169 2.464816 2.591376 0.117901 0.208978 0.750040 1.145517 1.437720 1.744291 2.143051 2.439937 2.749809 2.873675 0.193258 0.299329 0.443516 0.797326 0.939062 1.148247 2.018657 2.143420 2.638335 2.829836 0.213782 0.353502 0.481322 0.711845 1.170764 1.302711 1.535835 1.703291 2.279212 2.748103 0.115171 0.144705 0.242103 0.453456 1.202245 1.525989 1.893854 2.179999 2.517564 2.798073 0.238570 0.307781 0.447781 0.957056 1.599743 1.771585 1.940690 2.245051 2.435372 2.633593 0.194447 0.266589 0.445674 0.635231 0.910266 1.074602 1.340239 1.919744 2.377594 2.630265 0.297496 0.544047 0.851256 1.025765 1.203569 1.446499 1.981579 2.194582 2.414346 2.605178 0.203460 0.275006 0.515591 0.732576 1.407979 1.561138 1.760709 2.030957 2.312387 2.431093 0.498532 0.697751 1.045964 1.328280 1.488249 1.717432 2.051335 2.268465 2.588202 2.722759 0.194097 0.345960 0.482722 0.874859 1.052521 1.250837 1.534492 1.720853 2.636782 2.816708 0.266101 0.394737 0.545547 0.974166 1.278319 1.387120 1.790143 1.967144 2.177889 2.702878 0.102867 0.171081 0.576060 0.818748 1.189242 1.510470 1.778003 2.103994 2.520545 2.748259 0.119052 0.208027 0.744711 1.011939 1.289820 1.547449 1.904002 2.157777 2.533138 2.773751 0.210113 0.291141 0.487281 0.790277 0.954605 1.401661 1.701442 1.897619 2.210404 2.382596 0.266446 0.411500 0.593156 0.920817 1.042570 1.321476 1.890868 2.015685 2.574753 2.734992 0.195053 0.286814 0.458352 0.639707 1.284634 1.645299 1.800882 2.168396 2.390218 2.562172 0.341567 0.526183 0.892818 1.084248 1.334447 1.590215 1.889298 2.135833 2.519801 2.745352 0.323599 0.420247 0.572363 0.757221 0.889572 1.036953 1.623345 2.196313 2.409765 2.540575 0.410364 0.592459 0.763563 0.927955 1.176077 1.308890 1.569276 2.059039 2.380497 2.499273 0.194371 0.276796 0.581419 0.722859 1.264729 1.505348 1.711903 2.189092 2.444234 2.629075 0.252525 0.297192 0.844332 1.381854 1.514803 1.693308 1.854404 2.129548 2.591287 2.684159 0.170004 0.214112 0.394084 0.539179 0.822416 1.250980 1.752323 2.086240 2.289006 2.448613 0.289267 0.343412 0.775795 1.191573 1.303367 1.539691 1.782253 1.905366 2.579603 2.729614 0.234791 0.321602 0.704594 0.949738 1.420244 1.594285 1.774127 2.194285 2.467211 2.589613 0.340968 0.561082 1.199771 1.415378 1.689161 1.838640 2.014730 2.162685 2.430697 2.592350 0.345276 0.499518 0.706277 0.861164 0.999501 1.150174 1.572106 1.964424 2.390120 2.588870 0.357406 0.496053 0.646703 0.939578 1.460352 1.676567 1.834109 2.014842 2.385901 2.507758 0.176473 0.238482 0.404112 0.892358 1.136652 1.536592 1.716827 1.872719 2.552209 2.759174 0.222384 0.324129 0.833161 1.246603 1.460920 1.650632 1.876566 2.087675 2.354362 2.547825 0.167777 0.229073 0.433058 0.810575 1.128669 1.556495 1.799821 1.915429 2.106489 2.677788 0.306967 0.371498 0.623689 0.749815 0.934500 1.649015 1.792619 2.190421 2.536272 2.643777 0.148383 0.236235 0.322878 0.555588 1.594153 1.725789 1.992119 2.178572 2.540447 2.774265 0.377895 0.546230 0.852056 1.067292 1.455797 1.652672 2.018925 2.238220 2.468715 2.644735 0.300062 0.399164 0.567524 0.740898 0.849393 1.425476 1.948578 2.050102 2.416440 2.546289 0.218019 0.356752 0.584786 0.769374 1.165925 1.291779 1.688308 2.175240 2.369045 2.711417 0.143884 0.210234 0.342148 0.566261 1.198668 1.437368 1.683504 1.842729 2.638129 2.833574 0.115081 0.173169 0.584021 1.134381 1.407360 1.689153 2.034286 2.294650 2.638147 2.814312 0.190721 0.252429 0.584147 0.836602 1.015264 1.254879 1.571659 2.007112 2.245095 2.426652 0.309544 0.480824 0.812592 1.075038 1.325338 1.457449 1.679174 1.976619 2.381620 2.705381 0.164599 0.274956 0.399399 0.735839 1.360979 1.482765 1.859273 2.011226 2.288457 2.792980 0.187333 0.353999 1.222795 1.502985 1.770143 1.982262 2.203271 2.378492 2.606563 2.729390 0.158025 0.248611 0.551584 0.735140 0.915073 1.281500 1.744031 1.922872 2.435679 2.716805 0.273434 0.367213 0.642574 1.050887 1.345202 1.494431 1.909997 2.107095 2.336366 2.534901 0.264699 0.416517 0.576907 0.947351 1.178990 1.385352 1.951926 2.132530 2.549979 2.786944 0.142221 0.546287 0.805410 1.079219 1.288179 1.492189 1.774180 2.114597 2.427330 2.681890 0.230540 0.326500 0.461675 0.964559 1.255458 1.369392 1.856593 2.039532 2.207278 2.539486 0.137659 0.377399 0.593860 0.793016 1.115754 1.281644 1.840901 1.971659 2.472814 2.713504 0.144356 0.222505 0.346683 0.782224 1.201084 1.371745 2.123343 2.366887 2.623919 2.803847 0.362575 0.509680 1.001234 1.230119 1.473004 1.608864 1.802561 2.021551 2.326705 2.519219 0.240803 0.361576 0.516660 0.727416 0.914394 1.051113 1.716835 2.160538 2.328331 2.706675 0.351054 0.517992 0.725905 0.915622 1.055525 1.339295 1.898183 2.100270 2.307558 2.559254 0.200168 0.322989 0.505425 0.676330 1.190121 1.354931 1.731948 1.999324 2.249015 2.624332 0.219896 0.269490 0.521875 1.237665 1.710417 1.793651 2.115240 2.279260 2.536737 2.689478 0.215336 0.396644 0.543160 0.728604 1.109190 1.229364 1.727973 1.963312 2.325039 2.797789 0.264892 0.352500 0.883446 1.155268 1.338153 1.628498 1.841805 2.014230 2.264319 2.462976 0.239779 0.301722 0.529044 1.147546 1.636525 1.760760 1.966137 2.262281 2.456574 2.621762 0.320203 0.679639 1.229787 1.529834 1.826892 2.060858 2.286789 2.422168 2.716167 2.843881 0.353658 0.547800 0.796651 0.899078 1.041245 1.321838 1.822982 2.161422 2.619096 2.820678 0.261908 0.345021 0.472318 0.918792 1.423161 1.564348 1.733377 2.067856 2.262877 2.396698 0.124156 0.193894 0.636158 0.840841 1.110258 1.289251 1.683161 1.869014 2.398865 2.731114 0.165710 0.239716 0.465502 1.228637 1.420469 1.692829 1.888377 2.147997 2.486300 2.699831 0.160684 0.209986 0.367031 0.503201 1.015826 1.200739 1.524190 2.011867 2.222744 2.475835 0.277916 0.405640 0.619792 0.770716 1.136524 1.426314 1.822220 2.135166 2.485194 2.647977 0.231394 0.352162 0.469144 0.682116 1.481669 1.842849 2.029794 2.179907 2.469833 2.589806 0.380604 0.561972 0.896403 1.133414 1.391582 1.626403 1.961716 2.211112 2.588392 2.787673 0.322688 0.406580 0.586076 0.731518 0.852667 1.152831 1.995073 2.295481 2.441596 2.617794 0.197630 0.400738 0.603098 0.838719 1.177968 1.302320 1.559507 1.871355 2.200186 2.796317 0.159189 0.198711 0.364347 0.509370 1.127246 1.399692 1.623432 2.046094 2.279806 2.705935 0.233578 0.298035 0.460794 1.139533 1.415576 1.616317 2.117648 2.254774 2.452874 2.595232 0.177717 0.242239 0.394824 0.650020 0.987501 1.104089 1.611392 2.177724 2.393809 2.694514 0.299562 0.409957 0.723642 1.062891 1.216972 1.411830 2.051394 2.240860 2.503777 2.709591 0.201879 0.287289 0.406508 0.659566 1.400321 1.792888 1.936179 2.099785 2.279253 2.454742 0.359188 0.531719 0.904543 1.142371 1.572219 1.782800 2.067174 2.342915 2.583586 2.731217 0.245193 0.363406 0.508075 0.721046 0.817318 1.141324 1.787709 1.937075 2.532146 2.678676 0.280203 0.342294 0.579285 1.021875 1.451807 1.612518 1.803002 2.013050 2.189908 2.367656 0.124640 0.167543 0.484641 0.896195 1.324263 1.701101 1.908392 2.091365 2.427391 2.766624 0.152261 0.248563 0.705878 1.026619 1.492524 1.688058 2.019960 2.241100 2.465374 2.733867 0.169524 0.275607 0.440772 0.719798 1.121602 1.261028 1.809404 2.005583 2.240287 2.716912 0.329978 0.420004 0.718053 0.936318 1.070988 1.489233 1.858025 1.988096 2.520192 2.667419 0.229078 0.298586 0.511977 0.723831 1.144803 1.763599 2.164905 2.282990 2.512775 2.671092 0.456055 0.680179 0.929388 1.076639 1.233955 1.484650 1.903702 2.126601 2.527098 2.727819 0.168979 0.211126 0.352636 0.486868 0.828354 1.056116 1.439894 2.019355 2.482102 2.794744 0.388525 0.560294 0.717429 0.985928 1.184401 1.320169 1.814889 2.045192 2.224054 2.519281 0.207864 0.278390 0.577744 0.755061 1.180647 1.365438 1.765814 1.933058 2.355569 2.495779 0.273703 0.316766 0.687833 1.373372 1.573215 1.679562 2.017370 2.150752 2.443206 2.666143 0.139043 0.179618 0.315633 0.517664 0.768733 1.079636 1.390644 1.825048 2.101118 2.739679 0.443325 0.508374 0.821570 1.141790 1.252203 1.580452 1.827461 1.983767 2.580866 2.715534 0.272418 0.343583 0.526010 1.076654 1.474251 1.582828 1.851400 2.162984 2.327319 2.521128 0.372015 0.542684 0.990447 1.414552 1.716538 1.844518 2.067134 2.276470 2.459989 2.623009 0.296347 0.473546 0.629389 0.879809 1.022187 1.210411 1.881605 2.064735 2.306350 2.615239 0.421613 0.570707 0.726241 1.011174 1.451250 1.595500 1.814127 2.086968 2.350981 2.485098 0.138010 0.208811 0.371352 1.058801 1.360740 1.563789 1.835310 2.106508 2.488086 2.685686 0.304388 0.366691 0.637332 1.163418 1.322554 1.489449 1.820316 1.937237 2.490676 2.695981 0.160998 0.233003 0.393385 0.742550 1.040177 1.581795 1.846434 2.020562 2.454386 2.656034 0.293730 0.353143 0.554522 0.676232 0.826408 1.581608 2.144029 2.268817 2.602846 2.715369 0.174487 0.251975 0.375041 0.584283 1.427390 1.560251 1.883505 2.266902 2.453791 2.739291 0.236065 0.282833 0.692209 1.097292 1.694874 1.966224 2.123394 2.280655 2.544753 2.658369 0.129365 0.165960 0.285820 0.488714 0.981342 1.175696 1.724506 2.087889 2.501287 2.735548 0.226211 0.351015 0.619709 0.857773 1.132574 1.308463 1.487032 1.965719 2.504712 2.670516 0.203957 0.285955 0.462644 0.620843 1.230135 1.668195 1.835692 2.036399 2.639041 2.775792 0.159885 0.225639 0.351326 0.882800 1.592195 1.709989 2.060725 2.305297 2.531165 2.753869 0.182663 0.255048 0.437572 0.758568 0.996367 1.382381 1.651134 1.839516 2.008732 2.215961 0.418150 0.556126 0.728385 1.007878 1.270088 1.366376 1.715316 2.066928 2.257578 2.389769 0.207212 0.291325 0.416536 0.913294 1.492822 1.637098 1.825777 1.978284 2.214137 2.552111 0.241341 0.427255 0.990332 1.209018 1.403013 1.731713 2.115958 2.363302 2.608966 2.742739 0.188611 0.290583 0.686340 0.839849 1.094731 1.279717 1.560751 2.134527 2.353362 2.641874 0.303141 0.383534 0.612718 0.971405 1.141894 1.558084 1.937162 2.069641 2.316813 2.480680 0.179032 0.247590 0.375840 0.575450 1.367486 1.543422 2.101856 2.277817 2.513453 2.724165 0.279200 0.350633 0.674006 1.015821 1.154154 1.656796 1.871235 2.061172 2.539189 2.655336 0.220829 0.293262 0.666921 0.930888 1.307454 1.585242 1.798660 1.919831 2.100904 2.490486 0.407626 0.528205 0.695580 0.942289 1.068323 1.248001 1.834686 1.955840 2.367277 2.684681 0.187917 0.238836 0.392030 0.586354 1.220852 1.713253 2.205448 2.317138 2.607952 2.772751 0.406035 0.678205 1.009915 1.169891 1.361883 1.567949 1.969141 2.218271 2.484866 2.653946 0.263469 0.379446 0.574642 0.739690 0.891674 1.015764 1.634497 2.310050 2.531555 2.722555 0.276896 0.353172 0.495976 0.992936 1.248222 1.349871 1.691833 2.151044 2.363150 2.534333 0.165915 0.220580 0.380706 0.597420 1.137653 1.320387 1.576770 1.939725 2.122544 2.647358 0.215129 0.283229 0.414568 1.356845 1.527108 1.679575 1.891014 2.130176 2.602350 2.741207 0.206573 0.274549 0.539970 0.803271 1.064961 1.486193 1.704709 1.828604 1.978928 2.462439 0.245410 0.534217 0.840240 1.054925 1.298942 1.439072 1.805223 2.039652 2.261595 2.482457 0.236976 0.308980 0.585923 0.783026 1.498617 1.930204 2.097800 2.251258 2.476303 2.596959 0.571463 1.021016 1.359450 1.510990 1.761279 1.913272 2.106845 2.286831 2.543023 2.660054 0.187494 0.265400 0.418588 0.927645 1.377800 1.582098 1.740975 2.237651 2.615481 2.802350 0.308598 0.491606 0.632564 0.923419 1.411973 1.578570 1.730433 1.976996 2.433166 2.558710 0.147715 0.217707 0.377800 0.910933 1.185758 1.366725 1.612211 2.013767 2.403550 2.696412 0.255983 0.321186 0.503024 1.109229 1.544228 1.645679 1.931499 2.060262 2.490962 2.677649 0.175450 0.230655 0.407361 0.720246 1.062295 1.330697 1.797198 2.019193 2.315150 2.443569 0.223790 0.338008 0.719854 0.950722 1.144176 1.597163 1.855352 2.263747 2.561723 2.704014 0.192133 0.289847 0.398779 0.556338 1.501770 1.755759 1.934139 2.206912 2.388353 2.645486 0.297639 0.450015 0.788874 1.101418 1.627516 1.880937 2.155204 2.413078 2.599468 2.743886 0.217417 0.333895 0.462399 0.822556 1.071185 1.203256 1.990668 2.195575 2.436009 2.784665 0.163563 0.239093 0.376533 0.839654 1.058152 1.266142 1.728781 1.907170 2.096879 2.659086 0.137806 0.181530 0.328192 0.516935 1.031832 1.525160 1.768896 1.915914 2.359545 2.727805 0.164104 0.236815 0.332559 0.910079 1.609754 1.696913 2.000392 2.161661 2.560691 2.703739 0.228917 0.407594 0.638844 0.801544 1.054407 1.197528 1.396765 1.854050 2.203784 2.611161 0.391989 0.486610 0.771960 1.116329 1.248980 1.474917 1.949979 2.088145 2.481910 2.691692 0.279187 0.400947 0.576848 0.718895 1.254179 1.650864 1.823958 1.934813 2.498090 2.611019 0.458469 0.714872 1.061410 1.262159 1.583256 1.935302 2.258053 2.430476 2.654284 2.756814 0.222188 0.326247 0.447894 0.840363 1.072654 1.191396 1.417342 1.567507 2.404790 2.696868 0.346704 0.402748 0.714703 1.139511 1.315770 1.444510 1.797498 1.920454 2.155272 2.559128 0.155723 0.214701 0.494437 0.875267 1.172389 1.405229 1.797171 2.092950 2.373162 2.664794 0.143642 0.390291 0.851279 1.039361 1.187534 1.415631 1.895439 2.190895 2.617165 2.792304 0.266078 0.370570 0.662415 0.836415 0.988458 1.316618 1.567592 1.858948 2.257531 2.426635 0.336056 0.469998 0.781562 0.918047 1.031306 1.219377 1.737468 2.050577 2.458442 2.720080 0.165799 0.215460 0.363262 0.498067 1.217803 1.622985 1.903435 2.072821 2.251153 2.522123 0.418176 0.619702 0.947421 1.146388 1.456489 1.664370 1.965827 2.179934 2.466824 2.629682 0.265129 0.360058 0.519333 0.815729 0.992554 1.155878 1.718766 2.222951 2.442701 2.585525 0.308187 0.464955 0.631733 0.775884 1.197138 1.454372 1.618186 2.005378 2.298683 2.443207 0.178219 0.251645 0.407157 0.725307 1.323507 1.464894 1.694747 2.102622 2.283774 2.589151 0.206659 0.311706 0.925646 1.192852 1.568069 1.802078 2.008324 2.197021 2.461939 2.657140 0.174956 0.236808 0.392320 0.654967 0.934857 1.152108 1.595741 1.864532 2.214108 2.354775 0.230434 0.344630 0.704520 0.910666 1.348070 1.567822 1.811907 1.939844 2.509990 2.701550 0.180253 0.232955 0.624261 0.923991 1.421690 1.599589 1.814005 2.073839 2.413260 2.570514 0.398056 0.571576 1.027057 1.401582 1.532635 1.743391 2.038501 2.173100 2.635865 2.756941 0.244124 0.349847 0.599577 0.750991 0.891408 1.153522 1.605551 1.899047 2.317997 2.500479 0.324856 0.539756 0.695489 0.870499 1.378985 1.583978 1.787428 2.079347 2.366844 2.502610 0.250886 0.480663 0.608352 0.931539 1.092319 1.383530 1.692940 1.863607 2.650750 2.806650 0.338327 0.396903 0.699669 1.241511 1.414878 1.559671 1.867401 2.000074 2.583166 2.742075 0.164041 0.233302 0.383240 0.540410 0.806255 1.495618 1.938839 2.063074 2.286859 2.677635 0.218870 0.316692 0.450414 0.721514 1.234846 1.762116 1.921161 2.415204 2.642001 2.782596 0.163667 0.235743 0.354094 0.797110 1.437154 1.554340 2.096932 2.265233 2.481373 2.661373 0.141630 0.198248 0.557013 1.138173 1.485146 1.786655 1.990698 2.185739 2.443261 2.719231 0.217999 0.366741 0.519705 0.781024 0.899903 1.248543 1.852721 1.986039 2.401777 2.555847 0.205878 0.302603 0.472303 0.693773 1.275278 1.505045 1.651223 2.075256 2.330750 2.459809 0.205336 0.309242 0.483400 0.841555 1.362515 1.548353 1.760082 1.993603 2.496424 2.633078 0.173174 0.251866 0.410487 1.098827 1.251313 1.651838 1.903428 2.405674 2.698209 2.817074 0.274582 0.463838 0.620569 0.820587 0.988556 1.155062 1.637870 1.835193 2.071934 2.529835 0.364198 0.472940 0.697706 1.016409 1.151822 1.373913 1.673193 1.811034 2.432956 2.643088 0.210609 0.316509 0.475251 0.668420 1.418526 1.631402 1.796155 2.141848 2.319077 2.697236 0.294479 0.519397 0.846472 1.213453 1.709661 1.916717 2.258070 2.456443 2.600351 2.786559 0.170463 0.255944 0.401983 0.820520 1.094719 1.322743 1.646553 1.784940 2.486157 2.613248 0.237336 0.356516 0.490576 0.924631 1.184187 1.304165 1.910651 2.102207 2.302776 2.641078 0.237089 0.334322 0.503100 0.942044 1.087499 1.511162 1.952715 2.075663 2.564695 2.734500 0.270484 0.426158 0.787084 1.011450 1.420404 1.627576 1.856282 2.112823 2.548329 2.769664 0.212376 0.278943 0.617049 0.887684 1.142337 1.356367 1.727600 1.935068 2.149199 2.293257 0.219581 0.437941 0.549582 0.824175 1.110224 1.217621 1.723719 1.891729 2.537107 2.790704 0.180332 0.207980 0.422463 0.642179 1.028384 1.607980 2.250525 2.381973 2.608993 2.774395 0.363639 0.523626 1.148877 1.352576 1.562465 1.724307 1.921396 2.120662 2.445004 2.610164 0.150266 0.222691 0.365816 0.555803 0.688872 1.162897 1.782593 2.040683 2.522491 2.769536 0.322510 0.444036 0.616943 0.895765 1.056214 1.275784 1.751504 1.895911 2.132909 2.370408 0.228790 0.394631 0.548588 0.772733 1.227890 1.335766 1.788390 2.041514 2.278792 2.744098 0.234366 0.288401 0.669909 1.295698 1.461082 1.731631 2.183204 2.296645 2.539291 2.656637 0.255688 0.474634 0.639397 0.858887 1.097668 1.228104 1.592196 1.812078 2.070709 2.717623 0.214002 0.365378 0.921340 1.120628 1.379265 1.601621 1.931336 2.141337 2.414577 2.593476 0.220925 0.307330 0.407573 0.868421 1.663240 1.844525 1.994660 2.189618 2.371374 2.516151 0.362773 0.569567 1.005505 1.504530 1.678917 1.910360 2.158978 2.297543 2.659978 2.788995 0.296160 0.426108 0.649527 0.859492 1.056490 1.213501 1.697291 2.135737 2.364297 2.514164 0.281900 0.432754 0.589102 0.914308 1.277709 1.401926 1.774347 1.972103 2.235129 2.544435 0.277240 0.357036 0.828830 1.002473 1.178011 1.446057 1.715661 1.918548 2.237210 2.572122 0.235923 0.330705 0.623139 1.275081 1.398365 1.615244 1.800110 2.151779 2.592066 2.735797 0.179223 0.246208 0.400152 0.708696 1.129890 1.318110 1.696185 1.907985 2.203754 2.331059 0.316183 0.382213 0.679593 0.814474 0.986274 1.762901 1.990617 2.149795 2.433563 2.555738 0.218193 0.282095 0.586606 0.865818 1.378763 1.742711 1.918177 2.243443 2.595193 2.752713 0.309792 0.481840 0.827993 1.213125 1.606995 1.730492 2.141679 2.280307 2.608238 2.849348 0.270780 0.352881 0.501183 0.906847 1.086388 1.325169 1.838184 2.204039 2.421528 2.566162 0.226107 0.390361 0.555807 0.749815 1.088830 1.205930 1.680764 2.021480 2.201488 2.659122 0.123441 0.173507 0.307303 0.690407 1.173938 1.333877 1.786765 2.000793 2.425213 2.751118 0.158591 0.214573 0.427561 0.902581 1.277688 1.674870 2.126902 2.421840 2.701440 2.836990 0.189303 0.283266 0.464375 0.672875 1.104817 1.250272 1.526572 2.083813 2.270321 2.510880 0.287382 0.434077 0.583769 0.905506 1.053249 1.483726 1.993792 2.165572 2.575308 2.698217 0.263500 0.370045 0.536776 0.782922 1.324389 1.844905 2.005965 2.156203 2.458755 2.583419 0.384009 0.584098 0.936199 1.287834 1.635325 1.761083 2.169160 2.324023 2.535401 2.749390 0.146402 0.213762 0.398489 0.690149 0.996244 1.435892 1.670170 1.813953 2.445981 2.787485 0.301226 0.367882 0.654854 1.094027 1.229960 1.592088 1.885201 2.005608 2.274408 2.444608 0.149947 0.216185 0.391920 0.830502 1.253633 1.431601 1.785490 2.103484 2.525214 2.755484 0.097894 0.173875 0.729312 1.016482 1.304096 1.606405 1.935582 2.257805 2.640341 2.840475 0.169855 0.242145 0.571777 0.803659 1.022243 1.354604 1.782360 1.980234 2.368909 2.535598 0.254591 0.378801 0.672668 0.807056 1.056720 1.493018 1.655380 1.979812 2.449241 2.599697 0.193304 0.260487 0.459964 0.670291 1.308012 1.768287 1.946244 2.212251 2.405579 2.728625 0.366883 0.536817 0.908218 1.110776 1.354740 1.500190 1.704032 1.943640 2.329476 2.560555 0.211004 0.305715 0.399667 0.516282 0.691520 0.849824 1.396564 2.291427 2.546197 2.699794 0.235007 0.315896 0.593374 0.857317 1.094567 1.500585 1.840100 1.974535 2.128181 2.274238 0.183909 0.226449 0.400954 0.544120 1.348797 1.515812 1.765685 1.973782 2.256647 2.370030 0.237680 0.317979 0.661098 1.253198 1.394092 1.734084 1.949126 2.131970 2.641034 2.757610 0.166212 0.241240 0.371751 0.557281 0.767198 1.134161 1.620608 1.834400 2.454323 2.635245 0.330393 0.391091 0.780047 1.022404 1.134626 1.502694 1.702935 1.890801 2.580707 2.691910 0.408812 0.495670 0.687407 1.108832 1.546181 1.696379 1.885325 2.139028 2.368060 2.517184 0.376422 0.555069 1.161646 1.386418 1.622733 1.845580 2.017094 2.201137 2.552466 2.708053 0.274146 0.380469 0.549878 0.799730 0.939402 1.117940 1.645452 2.052539 2.350689 2.490049 0.329001 0.575380 0.735296 0.911471 1.268064 1.391747 1.781411 2.007253 2.202059 2.466893 0.212169 0.311180 0.439692 1.078259 1.267527 1.468391 1.726469 1.906190 2.628147 2.786434 0.297463 0.361038 0.824509 1.239302 1.339377 1.569785 1.940696 2.077375 2.519418 2.696863 0.207701 0.292358 0.552629 0.711964 1.172305 1.651429 1.844960 2.071458 2.419231 2.553707 0.209832 0.301136 0.449094 0.647610 0.777779 1.480469 1.932068 2.131542 2.710060 2.812704 0.172423 0.255437 0.369220 0.543108 1.401559 1.717608 1.933428 2.154827 2.367862 2.787661 0.255748 0.347504 0.796616 1.027751 1.504250 1.760784 1.937354 2.112544 2.469490 2.637341 0.169424 0.278442 0.444446 0.687556 0.797962 1.369199 1.630793 2.131758 2.696521 2.814286 0.263582 0.429254 0.626198 0.790299 0.996064 1.131137 1.510958 2.083907 2.354499 2.747674 0.160669 0.249969 0.366613 0.619384 1.335750 1.509419 1.938079 2.107770 2.598329 2.796645 0.244289 0.315310 0.439736 0.746805 1.478790 1.975786 2.164362 2.279744 2.549736 2.677409 0.158860 0.216940 0.349617 0.495945 1.053452 1.187951 1.643661 1.872490 2.121853 2.234733 0.364934 0.547895 0.703548 1.046696 1.327165 1.444813 1.638612 1.994689 2.369195 2.515047 0.199825 0.282570 0.423937 1.052805 1.331805 1.455952 1.892213 2.048648 2.272970 2.743986 0.205916 0.528758 1.069123 1.303179 1.547206 1.887462 2.261478 2.525666 2.727548 2.836565 0.211344 0.325615 0.470129 0.876822 1.036692 1.388499 2.004071 2.168361 2.641575 2.788384 0.165214 0.237113 0.652635 0.853498 1.274603 1.418260 1.750475 2.188010 2.392225 2.656697 0.171345 0.265931 0.404296 0.777656 1.251339 1.381106 1.876187 2.028307 2.321131 2.646341 0.243930 0.315918 0.797490 1.189416 1.348551 1.850071 2.061191 2.229853 2.567528 2.706220 0.194777 0.274153 0.522750 0.716292 0.872211 1.616112 1.890034 2.023297 2.194462 2.435800 0.244945 0.443755 0.592420 0.889336 1.105448 1.259185 1.758350 1.914694 2.352504 2.581197 0.179880 0.257145 0.369148 0.581368 1.406373 1.820128 2.061537 2.213705 2.526442 2.674115 0.545317 0.839577 1.093857 1.262533 1.530824 1.739612 2.017505 2.229486 2.511345 2.662061 0.188061 0.301651 0.405278 0.612153 0.779478 1.037845 2.004224 2.211267 2.475847 2.697676 0.314335 0.465910 0.634660 0.880106 1.266325 1.367294 1.763992 2.104409 2.276097 2.443435 0.141443 0.203354 0.372102 0.773557 1.052380 1.521452 1.774251 1.900827 2.384498 2.726988 0.183016 0.267487 0.382582 1.062637 1.528110 1.626188 1.861114 2.019971 2.608976 2.763674 0.143357 0.192604 0.323821 0.497856 0.905440 1.343367 1.820946 2.001139 2.153210 2.609622 0.354165 0.489743 0.667126 1.118630 1.392866 1.492788 1.780757 2.073223 2.328160 2.560997 0.282856 0.383914 0.485830 0.850543 1.506444 1.797613 1.937969 2.146059 2.427443 2.548079 0.487767 0.866830 1.364561 1.521265 1.733207 1.945262 2.238743 2.399018 2.632115 2.744288 0.280530 0.416807 0.597088 0.899084 1.119331 1.255621 1.616253 2.134732 2.562029 2.692235 0.284821 0.494631 0.684501 0.838586 1.258096 1.395495 1.638054 2.162929 2.354037 2.540591 0.205140 0.295529 0.494620 0.956357 1.129557 1.430489 1.736194 1.883778 2.442628 2.597296 0.304833 0.379519 0.691807 1.147815 1.310207 1.513791 2.008217 2.142574 2.387944 2.637546 0.181676 0.219451 0.383940 0.516016 1.044498 1.517177 1.777135 1.964014 2.218885 2.363256 0.294578 0.352761 0.665993 0.810615 0.975505 1.763777 1.954836 2.159643 2.626241 2.718025 0.172769 0.247043 0.367453 0.702216 1.520013 1.752683 1.974569 2.256458 2.462168 2.651882 0.133992 0.301438 0.794542 1.081390 1.502045 1.696404 2.061943 2.278505 2.623520 2.822598 0.250639 0.391712 0.550858 0.794112 0.913038 1.085745 2.034282 2.313366 2.505665 2.787062 0.323242 0.434081 0.555684 0.961893 1.357180 1.456826 1.643504 1.784048 2.015616 2.515904 0.143041 0.186235 0.352826 0.680065 1.264865 1.599306 1.944390 2.254806 2.597410 2.807813 0.203141 0.289063 0.395881 0.800946 1.463891 1.689942 1.835029 2.061175 2.225528 2.642274 0.222797 0.394599 0.573255 0.715466 1.025538 1.188023 1.564145 2.025279 2.191600 2.532423 0.405610 0.492208 0.769597 0.896548 1.095745 1.667540 1.851755 2.090613 2.499090 2.611378 0.238982 0.324219 0.447220 0.884037 1.482394 1.649975 1.799871 2.147158 2.341317 2.496853 0.453661 0.658367 0.977870 1.248116 1.512727 1.831479 2.096748 2.293691 2.622778 2.735454 0.171442 0.338885 0.499399 0.793308 1.060572 1.203862 1.664796 1.804188 2.519133 2.756339 0.278022 0.338379 0.636156 1.044803 1.186358 1.516967 1.701121 1.872073 2.394724 2.502070 0.121438 0.167486 0.411911 0.917381 1.165927 1.533981 1.818319 2.060997 2.450329 2.746320 0.162532 0.224824 0.658346 0.916673 1.391225 1.595859 1.857208 2.217273 2.498430 2.753849 0.275986 0.349156 0.568548 0.683453 1.016150 1.598731 1.764733 1.935888 2.342502 2.451659 0.253773 0.480249 0.604419 0.965946 1.273556 1.519695 1.780207 2.006359 2.680279 2.811275 0.187376 0.271558 0.385829 0.556450 1.380619 1.664090 1.814039 2.064114 2.245361 2.453707 0.294725 0.466563 0.736292 1.055050 1.550984 1.693651 1.897743 2.212842 2.491391 2.698543 0.239923 0.334060 0.461488 0.662636 0.791453 1.005699 1.600227 2.170741 2.458382 2.619019 0.327525 0.492740 0.643437 0.903326 1.245421 1.348861 1.592207 1.937940 2.512050 2.644548 0.221363 0.338816 0.483946 0.687648 1.284665 1.551620 1.720135 2.073904 2.254226 2.544134 0.258618 0.300723 0.704898 1.390679 1.579033 1.718703 1.937423 2.081021 2.591851 2.718075 0.204543 0.311448 0.448600 0.699217 1.072306 1.225857 1.749871 2.025585 2.206864 2.441320 0.407224 0.493488 0.735697 1.167395 1.335468 1.468164 1.704353 1.844157 2.418454 2.658505 0.177985 0.233336 0.506489 0.863799 1.426574 1.604693 1.864455 2.179274 2.402289 2.599311 0.201307 0.580059 1.233073 1.407900 1.670628 1.818287 2.017446 2.256081 2.551962 2.742129 0.322757 0.406373 0.612482 0.787838 0.909320 1.345224 1.671798 1.785817 2.404421 2.543501 0.331870 0.431884 0.597156 0.927729 1.457447 1.672300 1.841455 2.039567 2.250965 2.417211 0.202946 0.328964 0.442956 0.945971 1.181249 1.322011 1.766214 1.899811 2.569787 2.777471 0.274929 0.335270 0.613025 1.214599 1.385772 1.557449 1.956849 2.066650 2.288912 2.459016 0.146768 0.210059 0.360823 0.630784 1.072395 1.512445 1.766060 1.876355 2.226609 2.774121 0.278686 0.371483 0.567509 0.728655 0.855673 1.555589 1.958603 2.076551 2.544275 2.713690 0.143219 0.224816 0.347059 0.649970 1.564613 1.685486 1.917021 2.072654 2.453763 2.655050 0.294541 0.443278 0.726594 0.985933 1.415734 1.765955 2.073442 2.328283 2.592514 2.745548 0.243739 0.365134 0.572466 0.827675 0.939711 1.401796 1.826498 1.947840 2.429538 2.736311 0.213082 0.349340 0.619784 0.765201 1.188628 1.358763 1.534192 2.128318 2.415976 2.591807 0.161799 0.248667 0.354739 0.716246 1.327356 1.505974 1.706364 1.848519 2.455553 2.645897 0.228516 0.375004 0.745896 1.050532 1.367740 1.799352 2.151717 2.418669 2.673185 2.797596 0.234744 0.320318 0.466401 1.013481 1.184613 1.343346 1.535391 1.904405 2.318092 2.457794 0.296936 0.385747 0.828858 1.091916 1.213084 1.370156 1.504418 2.008638 2.299958 2.422080 0.189955 0.288894 0.417900 0.584179 1.286507 1.481483 1.710061 2.088780 2.259900 2.658597 0.170659 0.301463 1.070828 1.400247 1.605036 1.820055 2.012834 2.274844 2.579681 2.738437 0.194796 0.277316 0.434438 0.646763 0.772268 1.506173 1.740645 1.962370 2.464322 2.657388 0.222257 0.294563 0.463770 1.144565 1.329294 1.506915 1.848439 2.035803 2.320447 2.526842 0.188443 0.314239 0.448752 0.852815 1.354102 1.446757 1.902520 2.034088 2.526616 2.815041 0.226181 0.693860 0.965201 1.130620 1.285879 1.475154 1.863626 2.238763 2.603071 2.788862 0.105661 0.160079 0.370939 0.956425 1.151620 1.531460 1.723426 1.913560 2.122164 2.492465 0.298984 0.431063 0.586646 0.778394 0.883075 1.252332 1.854971 2.007147 2.580641 2.710519 0.197240 0.272225 0.520497 0.915877 1.306265 1.547858 2.092985 2.299254 2.524173 2.690593 0.413504 0.577521 0.882547 1.151243 1.588968 1.757858 1.954145 2.157780 2.423490 2.567497 0.182013 0.280163 0.398250 0.608531 0.819691 0.969023 1.853980 2.067111 2.358004 2.831492 0.376103 0.585036 0.744512 0.923312 1.183525 1.290764 1.692231 2.073489 2.270157 2.435995 0.206648 0.328267 0.465432 0.752470 1.311956 1.450538 1.719681 2.019809 2.237402 2.712715 0.146386 0.213798 0.495001 1.215327 1.552462 1.867870 2.131376 2.312738 2.674961 2.807719 0.204301 0.298214 0.439837 0.759917 0.957505 1.118467 1.710802 2.037862 2.222732 2.676717 0.208889 0.314961 0.807094 0.979256 1.326634 1.615428 1.855738 2.074151 2.481053 2.662164 0.252094 0.321219 0.425486 1.124218 1.685315 1.954485 2.094831 2.253423 2.478229 2.605367 0.454303 0.738006 1.152178 1.340103 1.644779 1.957406 2.329060 2.526950 2.700749 2.789332 0.260026 0.460186 0.631124 0.860895 1.160270 1.274078 1.873660 2.167213 2.365849 2.770340 0.188841 0.259372 0.483027 0.884169 1.354974 1.505271 1.787912 1.916914 2.217944 2.371433 0.171267 0.239784 0.594776 0.748624 1.254712 1.402634 1.627575 2.102077 2.361702 2.545685 0.261290 0.332761 0.480740 1.272870 1.411888 1.585755 1.891613 2.059093 2.603683 2.753852 0.174471 0.227361 0.395376 0.589674 1.098988 1.351413 1.527512 1.875704 2.288035 2.491253 0.392523 0.493384 0.723718 0.863221 0.994939 1.404446 1.868453 2.008324 2.440145 2.622287 0.229001 0.293967 0.482060 0.752040 1.321587 1.964756 2.143632 2.272231 2.511299 2.652857 0.129576 0.441380 0.809457 1.253754 1.449504 1.695975 2.014264 2.282645 2.615841 2.803547 0.291794 0.444574 0.567987 0.774856 0.900327 1.365457 2.004858 2.128537 2.620438 2.820651 0.262097 0.516409 0.687606 0.926622 1.163526 1.292705 1.715555 1.937306 2.227923 2.777260 0.148606 0.204513 0.361193 0.693710 1.055532 1.278718 1.693525 1.980097 2.352859 2.672283 0.253802 0.336651 0.526195 0.891801 1.442978 1.584849 1.979819 2.247623 2.476136 2.660081 0.228789 0.338363 0.500714 0.793809 1.196272 1.305413 1.731081 2.259108 2.442615 2.652754 0.378062 0.473823 0.693080 1.009192 1.183244 1.328164 1.919726 2.260450 2.429886 2.572302 0.247090 0.357491 0.583930 0.824533 1.624951 1.779841 1.978982 2.185311 2.378227 2.583823 0.349863 0.525291 0.898639 1.154449 1.653664 1.882655 2.181526 2.353823 2.532309 2.660763 0.190910 0.256714 0.576278 0.756016 0.919967 1.182918 1.663565 2.144466 2.501734 2.728244 0.298865 0.359843 0.568492 1.131552 1.379757 1.490406 1.824274 1.945718 2.238708 2.644005 0.075640 0.092838 0.245669 0.863294 1.223916 1.524202 1.857987 2.167767 2.516095 2.793204 0.232965 0.332699 0.723652 1.036910 1.459468 1.595582 1.952510 2.172737 2.392688 2.562895 0.247766 0.389477 0.616596 0.808130 0.997595 1.253872 1.724465 1.938385 2.286441 2.479069 0.316879 0.442442 0.602552 0.812843 0.919668 1.524096 1.727104 1.959085 2.648008 2.744204 0.180121 0.250848 0.377588 0.514084 1.112861 1.845482 2.013326 2.213933 2.474673 2.663237 0.510891 0.729294 0.918315 1.009382 1.258580 1.685479 2.036454 2.223282 2.546829 2.685952 0.204819 0.306851 0.495622 0.688481 0.939049 1.054525 1.550902 2.063497 2.267332 2.744891 0.327442 0.389656 0.773076 1.023761 1.144959 1.391107 1.629777 1.826936 2.044965 2.488423 0.163318 0.224949 0.377732 0.697324 1.243068 1.379089 1.633682 1.887173 2.332645 2.483657 0.240171 0.293151 0.543472 1.269350 1.631535 1.739995 1.933642 2.084522 2.414170 2.650266 0.179979 0.246939 0.396342 0.589909 0.919210 1.070722 1.642599 2.043006 2.217357 2.503273 0.302811 0.355529 0.811588 1.166553 1.271468 1.626247 1.848829 1.997826 2.540939 2.669384 0.283439 0.349236 0.510446 0.919208 1.451466 1.719296 1.870795 2.075959 2.292387 2.415026 0.351847 0.508411 1.045930 1.254317 1.551190 1.805638 2.048595 2.229665 2.467316 2.616962 0.266736 0.408066 0.559013 0.768550 0.973174 1.096776 1.669225 2.079118 2.239808 2.647906 0.299839 0.538608 0.750887 0.937387 1.361442 1.507727 1.723958 2.019542 2.288365 2.433554 0.184692 0.270218 0.419274 1.047374 1.395536 1.529142 1.783612 1.919322 2.399668 2.739026 0.282417 0.355135 0.625619 1.193013 1.365194 1.548352 1.961542 2.076835 2.555666 2.736510 0.148276 0.201484 0.357526 0.691839 1.109393 1.590808 1.929494 2.052123 2.288831 2.674265 0.239872 0.340799 0.510028 0.754201 1.021805 1.444270 2.086249 2.268881 2.498859 2.644372 0.229200 0.356617 0.469799 0.697079 1.459153 1.736841 1.888964 2.204606 2.435847 2.594633 0.235297 0.299631 0.756788 1.069754 1.591291 1.782731 1.990029 2.186477 2.404269 2.551371 0.153218 0.216649 0.366074 0.591966 0.786672 1.337023 1.751677 1.932515 2.401392 2.607477 0.264340 0.436803 0.595010 0.767010 1.179494 1.352438 1.528478 1.996792 2.441404 2.572631 0.204113 0.325813 0.640860 0.803282 1.276398 1.511437 1.769275 2.073412 2.562526 2.723891 0.183616 0.242809 0.370321 0.932837 1.683840 1.816525 2.211177 2.406486 2.636015 2.765906 0.196637 0.265829 0.439050 0.770452 1.054669 1.487115 1.916956 2.043030 2.176612 2.349845 0.540575 0.704261 0.884898 1.106375 1.273439 1.431611 1.908872 2.163885 2.347449 2.530928 0.258740 0.346556 0.466932 0.905095 1.485463 1.645285 1.873902 2.133924 2.308179 2.675230 0.347296 0.582875 0.945844 1.279162 1.499633 1.852636 2.184304 2.463318 2.760760 2.870853 0.150936 0.266396 0.672274 0.842540 1.058933 1.395955 1.763874 2.053646 2.603603 2.795989 0.248334 0.323639 0.796411 0.974630 1.217472 1.616989 1.786496 1.995745 2.426072 2.572132 0.171528 0.226268 0.387197 0.596052 1.219235 1.373257 1.802693 2.162095 2.401149 2.694122 0.309880 0.375034 0.782497 0.936541 1.130945 1.571152 1.743522 2.158706 2.484175 2.596635 0.211833 0.283751 0.471901 0.833897 1.238193 1.611788 1.813797 2.021568 2.299015 2.453586 0.325164 0.495780 0.668458 0.977772 1.204875 1.377736 1.792224 1.981132 2.470212 2.687064 0.181910 0.238625 0.380080 0.551818 1.284137 1.815502 2.100874 2.224073 2.678894 2.832381 0.432484 0.602036 0.967559 1.355422 1.539906 1.638130 2.062617 2.274317 2.408629 2.586735 0.223933 0.320440 0.455471 0.635789 0.775870 0.919569 1.655549 2.258604 2.454533 2.743063 0.366581 0.460393 0.676450 1.035749 1.222446 1.344767 1.892128 2.136552 2.294736 2.535285 0.163193 0.228589 0.372272 0.655743 1.215923 1.357562 1.812178 2.049878 2.219187 2.622506 0.199107 0.255898 0.383597 1.460200 1.573471 1.769089 1.990458 2.299624 2.582669 2.742646 0.171634 0.266479 0.432062 0.687765 0.835208 1.354791 1.779760 1.939277 2.152823 2.654474 0.322744 0.454468 0.896616 1.075278 1.276965 1.525868 1.809606 2.045119 2.396969 2.600609 0.185456 0.225713 0.593805 0.777028 1.383381 1.756301 1.909552 2.182404 2.428047 2.628560 0.523864 0.996370 1.345344 1.500637 1.856758 1.976312 2.235904 2.414483 2.560231 2.666268 0.224472 0.316210 0.461082 1.069924 1.226634 1.409037 1.539144 2.110751 2.541082 2.731841 0.282572 0.449304 0.655998 0.827960 1.292714 1.495327 1.771585 2.007810 2.430764 2.621645 0.129294 0.178584 0.451465 1.015109 1.245704 1.462743 1.785107 2.042319 2.339740 2.626045 0.266450 0.311925 0.672071 1.272373 1.586471 1.680518 1.967287 2.126302 2.331703 2.606765 0.155912 0.210793 0.359734 0.582139 0.993095 1.506017 1.938903 2.072031 2.211582 2.514161 0.366487 0.454941 0.765153 0.933105 1.077517 1.457225 1.642714 2.050965 2.548495 2.660408 0.183421 0.269815 0.375652 0.582732 1.364229 1.857303 2.030324 2.188264 2.389621 2.554337 0.157986 0.433220 0.872229 1.187796 1.412974 1.724479 2.144349 2.464695 2.761508 2.877055 0.198383 0.350654 0.577264 0.787611 0.933392 1.119024 1.806604 2.076373 2.430526 2.603043 0.184568 0.290732 0.456474 0.730730 1.167452 1.298890 1.669065 1.850198 2.187295 2.556672 0.119787 0.157206 0.296086 0.580699 1.039340 1.448681 1.791765 2.115501 2.493729 2.765061 0.197875 0.296866 0.460866 0.906361 1.504895 1.622424 1.923913 2.064370 2.528505 2.799113 0.215006 0.360632 0.624855 0.788786 1.122529 1.271335 1.469548 2.029397 2.292842 2.469529 0.312967 0.420596 0.594715 1.013895 1.177345 1.350956 1.928177 2.047807 2.512550 2.690404 0.306441 0.447709 0.635622 0.837489 1.339889 1.684905 1.878731 2.050783 2.442345 2.559302 0.512714 0.732554 1.090397 1.458930 1.653272 1.872563 2.243616 2.386971 2.644360 2.753299 0.338380 0.388353 0.687865 0.937576 1.022955 1.198008 1.345071 1.507334 2.539150 2.676481 0.404547 0.489770 0.787746 1.025925 1.160826 1.496135 1.873747 1.995764 2.348409 2.558815 0.185178 0.273616 0.662107 0.944310 1.146715 1.437855 1.860110 2.088161 2.488532 2.701156 0.297691 0.433807 0.689073 0.914516 1.224645 1.524468 1.882477 2.108378 2.460989 2.729694 0.246421 0.329313 0.740815 0.903181 1.072400 1.285931 1.740684 2.032245 2.270116 2.425587 0.349571 0.509003 0.727457 0.878169 1.005363 1.205249 1.651188 1.987842 2.609611 2.723475 0.174962 0.249723 0.401862 0.559808 1.151652 1.704681 1.872495 2.239764 2.430897 2.686106 0.360336 0.530604 0.935905 1.180560 1.399529 1.740890 1.999598 2.182066 2.486093 2.641677 0.220231 0.312545 0.449608 0.705056 1.007679 1.135090 1.633644 2.306528 2.622813 2.773890 0.343635 0.564980 0.719160 0.856829 1.120400 1.237963 1.472239 1.924690 2.221264 2.357713 0.181932 0.261428 0.385382 0.529871 1.326078 1.525795 1.689465 2.161317 2.354960 2.559655 0.190215 0.341309 1.145487 1.357611 1.520525 1.690701 1.910605 2.192963 2.496750 2.684620 0.231256 0.323986 0.509297 0.695026 0.811246 1.205058 1.698676 1.952659 2.225356 2.436417 0.232855 0.310052 0.551612 0.995822 1.160276 1.555029 1.794030 1.930657 2.512921 2.691535 0.224518 0.299721 0.651543 0.885427 1.520642 1.679516 1.886989 2.041276 2.532253 2.699897 0.204419 0.557694 1.100186 1.347777 1.507922 1.794663 2.079200 2.312468 2.590685 2.744668 0.206125 0.397544 0.556512 0.740671 0.860709 1.076989 1.713565 1.825995 2.561599 2.767561 0.271126 0.422296 0.596820 0.801216 1.362100 1.508235 1.854835 2.090662 2.270770 2.457032 0.217883 0.344596 0.493190 0.984719 1.284852 1.446608 1.855635 2.014247 2.506491 2.663445 0.286136 0.348718 0.879652 1.116298 1.280497 1.611569 1.788213 2.223036 2.485667 2.605528 0.206618 0.325875 0.503268 0.690657 0.816866 1.603798 1.931282 2.048093 2.300900 2.746683 0.239837 0.367432 0.586673 0.749249 1.029445 1.541977 1.837717 2.152675 2.628130 2.775655 0.154164 0.222772 0.333818 0.562653 1.465627 1.728492 1.959659 2.326185 2.619462 2.821726 0.231365 0.366985 0.807033 1.157258 1.520494 1.640269 2.028108 2.269663 2.456856 2.630277 0.242567 0.331771 0.487513 0.644276 0.800853 1.242217 1.739018 2.099717 2.426228 2.596782 0.221262 0.374389 0.569573 0.704902 1.187721 1.414042 1.633903 2.049607 2.225608 2.522881 0.182959 0.295198 0.401501 0.779683 1.428548 1.551019 1.766917 1.908320 2.610886 2.770247 0.139632 0.228108 0.540279 0.898292 1.161261 1.527413 1.913196 2.221342 2.669902 2.842594 0.199568 0.297036 0.423971 0.782421 1.094574 1.237964 1.458722 1.683022 2.217064 2.401823 0.345577 0.539506 0.728116 0.928242 1.109271 1.252921 1.616753 1.872570 2.294941 2.593196 0.232502 0.366195 0.532625 0.762469 1.377487 1.543949 1.839468 2.094305 2.306962 2.746485 0.140704 0.240287 0.914003 1.159689 1.490769 1.781986 2.113189 2.322630 2.553898 2.735752 0.182050 0.274243 0.384886 0.753150 1.226502 1.367895 1.578386 1.756614 2.368689 2.613973 0.296233 0.395081 0.622990 1.050299 1.209800 1.377648 1.850837 1.965328 2.357424 2.667891 0.210632 0.289301 0.558974 0.972835 1.230379 1.669485 1.879551 2.047374 2.584468 2.764860 0.238075 0.443727 0.795624 1.008735 1.264607 1.681476 1.949029 2.204123 2.681059 2.831198 0.209107 0.318887 0.502202 0.936331 1.215090 1.364179 1.664829 1.835085 2.029832 2.237236 0.210399 0.360507 0.466140 0.793696 1.167290 1.269402 1.717457 1.883978 2.332357 2.642576 0.182774 0.238064 0.406254 0.553908 1.089357 1.921943 2.114739 2.269998 2.553977 2.719355 0.328207 0.496148 0.997544 1.217533 1.381558 1.589977 1.895773 2.171180 2.563942 2.756785 0.146726 0.209578 0.327902 0.527454 0.750165 0.964221 1.730110 1.909856 2.277000 2.794161 0.355489 0.509819 0.674351 0.852118 1.030963 1.155918 1.581384 2.041691 2.263390 2.416994 0.220775 0.394332 0.538938 0.857502 1.090722 1.239600 1.901251 2.063868 2.417954 2.814398 0.227931 0.269928 0.659119 1.441707 1.726640 1.837599 2.172077 2.323353 2.607646 2.741321 0.204294 0.338820 0.480507 0.748377 0.971841 1.112524 1.682403 1.842741 2.204016 2.598799 0.134004 0.253595 0.893064 1.145993 1.324870 1.551540 1.870979 2.144984 2.515124 2.768074 0.257317 0.324072 0.436271 0.992642 1.573175 1.838976 1.971813 2.132071 2.317177 2.463177 0.440270 0.694478 1.072028 1.389390 1.760193 1.976248 2.246033 2.390948 2.572760 2.701541 0.271868 0.367973 0.618954 0.990978 1.193710 1.400934 1.753507 2.089331 2.441172 2.596397 0.327621 0.496909 0.684291 0.830070 1.230609 1.553632 1.769123 2.021449 2.321602 2.475665 0.150834 0.225465 0.584436 0.830787 1.228446 1.381420 1.677267 1.961417 2.348329 2.682122 0.210368 0.286671 0.430934 1.168493 1.348054 1.560861 1.788186 2.334928 2.567985 2.774704 0.192791 0.272915 0.432199 0.684073 1.250160 1.396822 1.637113 1.872041 2.138995 2.291744 0.317041 0.383173 0.714443 0.880122 1.046184 1.601600 1.793056 1.983005 2.334210 2.481632 0.262491 0.384516 0.723463 0.898594 1.235333 1.679346 2.063633 2.230677 2.438434 2.609821 0.329714 0.503133 0.986474 1.242112 1.421780 1.772248 2.016548 2.418708 2.735517 2.841414 0.234483 0.366854 0.685189 0.837277 1.107168 1.323527 1.924146 2.188176 2.392339 2.576791 0.367554 0.480477 0.685257 0.863574 0.967484 1.324325 1.780913 1.895223 2.217908 2.565386 0.170831 0.247070 0.413674 0.735129 1.097256 1.244501 1.863046 2.116005 2.354145 2.593904 0.191987 0.265143 0.522063 1.001132 1.477027 1.634641 2.128571 2.320908 2.626696 2.814549 0.173820 0.236201 0.389631 0.565594 1.191995 1.339140 1.563074 2.078967 2.273323 2.569148 0.376887 0.472762 0.685713 0.842626 0.950694 1.348880 2.073181 2.248666 2.464908 2.680293 0.200511 0.267485 0.473655 0.709045 1.237600 1.615428 2.015635 2.177003 2.363079 2.525359 0.179632 0.571501 0.993053 1.356696 1.697465 1.978072 2.161225 2.343876 2.605905 2.752543 0.171679 0.323767 0.479066 0.737860 0.967236 1.119767 1.534022 1.686592 2.597041 2.826056 0.230844 0.314638 0.827482 1.044417 1.246762 1.604017 1.888847 2.034619 2.240069 2.646086 0.137641 0.194410 0.446076 0.749008 1.056291 1.455419 1.852539 2.123128 2.508952 2.766009 0.096036 0.420947 0.665747 1.146516 1.463996 1.612743 1.861963 2.227963 2.503650 2.739358 0.245487 0.384590 0.558312 0.811909 1.198414 1.349136 1.841320 2.025572 2.208162 2.405870 0.208252 0.316837 0.487011 0.938933 1.139581 1.396565 1.746724 2.105258 2.522568 2.681942 0.283283 0.395565 0.569206 0.705427 1.140133 1.660691 1.900167 2.146532 2.523653 2.667587 0.399059 0.602519 0.918365 1.124094 1.352400 1.574194 1.915640 2.120676 2.392517 2.583609 0.212592 0.313545 0.489908 0.651935 0.827527 1.014819 1.629779 2.107560 2.651570 2.794154 0.334733 0.413938 0.656403 1.035599 1.230100 1.372371 1.752515 1.932544 2.116066 2.340962 0.195470 0.268391 0.431096 0.744590 1.272458 1.434994 1.887256 2.055124 2.216059 2.355652 0.233843 0.277098 0.577590 1.353544 1.573248 1.679793 1.831093 1.982748 2.575813 2.732432 0.140410 0.214833 0.361115 0.707069 1.082237 1.227591 1.633210 1.818367 2.466253 2.766104 0.433646 0.517163 0.808168 1.061617 1.182393 1.497547 1.723696 1.907866 2.509297 2.679398 0.251461 0.331356 0.713430 0.993326 1.485426 1.665910 1.856843 2.073870 2.333905 2.470116 0.362946 0.782976 1.168741 1.324526 1.627412 1.779530 1.994819 2.203297 2.514465 2.683132 0.283937 0.367927 0.590168 0.763650 0.889158 1.242000 1.768049 2.150831 2.361695 2.526931 0.401929 0.576820 0.737804 0.921682 1.116842 1.229133 1.694656 2.010744 2.155271 2.356219 0.212653 0.310679 0.420635 1.110694 1.371611 1.510937 1.878595 2.017471 2.541126 2.696793 0.319899 0.406846 0.688156 1.227145 1.532072 1.647604 1.959419 2.112752 2.468573 2.688910 0.213311 0.302778 0.513141 0.665182 1.070601 1.519880 1.688862 2.155925 2.405361 2.641935 0.203445 0.273890 0.446788 0.621718 0.821718 1.552774 1.970174 2.157338 2.529885 2.666726 0.179248 0.265048 0.386747 0.570219 1.370731 1.523935 1.867101 2.136819 2.309819 2.738000 0.192568 0.286600 0.737250 1.129156 1.630027 1.793060 2.137459 2.357517 2.543832 2.752975 0.159062 0.222492 0.441749 0.706956 0.873673 1.273730 1.807800 2.085052 2.433983 2.738811 0.267122 0.464503 0.667094 0.815715 1.028866 1.162422 1.617585 2.164095 2.329764 2.612700 0.144708 0.223957 0.317997 0.564825 1.508828 1.655161 1.857741 2.024989 2.639153 2.820953 0.194645 0.249640 0.406742 0.707511 1.660221 1.859905 2.085456 2.405218 2.607363 2.746061 0.429960 0.592124 0.787877 0.890595 1.103239 1.404765 1.789301 2.072362 2.432455 2.617254 0.184536 0.285665 0.429789 0.950068 1.412318 1.523812 1.954708 2.141451 2.414013 2.765321 0.369916 0.560855 0.927769 1.354226 1.560397 1.733808 2.189951 2.345823 2.725694 2.866959 0.142852 0.219159 0.368392 0.659778 0.999846 1.194353 1.856812 2.065831 2.665677 2.850916 0.209110 0.305167 0.683734 0.914276 1.379246 1.526394 1.790110 2.064232 2.299981 2.459264 0.184899 0.316366 0.506466 0.728745 1.218050 1.378981 1.814293 1.999655 2.544039 2.730706 0.286474 0.355126 0.718899 1.089400 1.225976 1.695737 1.936410 2.121418 2.444195 2.568086 0.260728 0.353369 0.604610 0.768238 1.072125 1.608746 1.805375 1.949798 2.105786 2.406476 0.330885 0.561445 0.724292 0.940383 1.093573 1.263066 1.930153 2.163533 2.408371 2.762449 0.190585 0.245026 0.388935 0.531269 1.613901 1.940446 2.068138 2.295339 2.525519 2.695115 0.659517 0.793695 0.983316 1.214573 1.426393 1.621779 1.948650 2.120559 2.402013 2.570449 0.220748 0.332069 0.424610 0.602935 0.734265 0.935558 2.055617 2.265657 2.530681 2.854902 0.290477 0.440845 0.612873 0.839848 1.327423 1.456572 1.939179 2.167778 2.371320 2.570765 0.179431 0.280105 0.432734 0.918191 1.192829 1.320190 1.811052 1.955192 2.340353 2.782529 0.202912 0.265690 0.431272 1.238667 1.481469 1.610194 1.975157 2.101548 2.630962 2.798935 0.162106 0.210383 0.366556 0.543819 1.054714 1.205759 1.641024 2.015868 2.178793 2.627151 0.317316 0.385969 0.673513 1.190904 1.357921 1.500892 1.894288 2.020919 2.379283 2.662802 0.327266 0.429724 0.606313 0.900788 1.464235 1.816681 2.002694 2.138059 2.452853 2.554712 0.416374 0.642735 1.300859 1.518625 1.707945 1.956089 2.222013 2.390921 2.684341 2.784854 0.186066 0.250175 0.562512 0.738528 1.208585 1.362690 1.606043 2.109182 2.501183 2.707198 0.236912 0.461787 0.686242 0.881092 1.300577 1.424620 1.725187 2.169489 2.361758 2.662324 0.208063 0.337571 0.482777 0.926508 1.161683 1.311006 1.776451 1.933103 2.448810 2.646540 0.256479 0.328343 0.499814 1.097457 1.386665 1.496809 1.952745 2.087139 2.342994 2.654825 0.161661 0.224177 0.383379 0.607758 0.991555 1.381589 1.804283 1.998147 2.415608 2.619198 0.386111 0.495518 0.750917 0.937387 1.069306 1.592878 2.091954 2.230429 2.574083 2.695163 0.236835 0.303063 0.548777 0.748487 1.602860 1.790903 1.980987 2.173544 2.482285 2.674930 0.115857 0.253229 0.839446 1.182318 1.604808 1.930292 2.262789 2.477033 2.731091 2.843896 0.213435 0.341074 0.506347 0.714649 0.813915 1.154546 1.865334 2.056297 2.656061 2.833781 0.152341 0.225866 0.394818 0.830840 1.039343 1.299776 1.515314 1.701937 2.172593 2.703933 0.150002 0.193206 0.361814 0.541289 1.168971 1.515576 1.875006 2.181631 2.473830 2.750294 0.175983 0.238402 0.392935 0.834832 1.568038 1.753001 1.950436 2.176878 2.408077 2.761430 0.213829 0.318859 0.535586 0.713597 1.015672 1.174333 1.408597 2.083136 2.354086 2.563569 0.417612 0.500513 0.811466 1.027816 1.139572 1.532510 1.959824 2.084676 2.544668 2.694259 0.279259 0.446390 0.589074 0.796267 1.496946 1.723595 1.869786 2.100336 2.331076 2.456141 0.444430 0.638237 1.041068 1.445315 1.605692 1.733619 2.167615 2.326214 2.602181 2.745455 0.210087 0.362661 0.515500 0.840169 1.033119 1.239618 1.373615 1.803901 2.716235 2.848165 0.225160 0.350738 0.501850 0.896968 1.297884 1.414194 1.669332 1.835349 2.075666 2.672832 0.039211 0.113866 0.622349 0.907025 1.252791 1.535875 1.876167 2.163786 2.540348 2.789312 0.126350 0.194309 0.675134 1.116698 1.365415 1.576318 1.849118 2.102016 2.438531 2.737802 0.251266 0.342779 0.622143 0.793543 1.004128 1.433428 1.828192 2.011292 2.214652 2.441068 0.287491 0.392893 0.575294 0.916666 1.023814 1.482149 1.829139 1.953760 2.589735 2.724978 0.198423 0.295697 0.439598 0.609605 1.262768 1.619956 1.747689 2.005913 2.368608 2.490906 0.358531 0.483574 0.802846 1.004510 1.351513 1.645034 1.955330 2.161545 2.477437 2.639225 0.252099 0.385070 0.557560 0.740943 0.911070 1.013935 1.524718 2.136124 2.396009 2.750794 0.277335 0.507312 0.745418 0.921396 1.189730 1.321635 1.630275 2.000574 2.318359 2.450355 0.251729 0.359609 0.480792 0.813240 1.317908 1.441397 1.655896 2.171984 2.476511 2.611973 0.267463 0.311514 0.756574 1.332619 1.482384 1.635505 1.872999 2.053016 2.640422 2.756993 0.175657 0.240482 0.383528 0.598077 0.916809 1.091066 1.760568 1.946970 2.313700 2.484722 0.308726 0.352539 0.822652 1.208001 1.295254 1.507386 1.644261 1.995003 2.594656 2.684930 0.292332 0.442077 0.718688 0.941531 1.395212 1.630615 1.847265 2.270351 2.514492 2.713146 0.215044 0.379718 1.248947 1.429713 1.705990 1.881505 2.089432 2.306464 2.505316 2.662383 0.243250 0.359897 0.521676 0.699893 1.005116 1.271071 1.694794 2.008687 2.440679 2.593828 0.300924 0.394176 0.559419 0.899409 1.454448 1.708566 1.869825 2.116095 2.376539 2.493592 0.153405 0.251763 0.392574 0.866089 1.104658 1.286553 1.780043 1.916997 2.532174 2.688015 0.279453 0.326159 0.753633 1.333374 1.499514 1.626480 1.898852 2.038525 2.500726 2.702071 0.170059 0.229176 0.395854 0.705543 1.082349 1.588065 1.821443 1.949022 2.120108 2.537716 0.202145 0.274872 0.419107 0.608489 0.758495 1.603432 1.748277 2.189578 2.559336 2.730653 0.177888 0.251468 0.365661 0.658086 1.634785 1.816726 1.997979 2.183875 2.456958 2.811253 0.317970 0.468942 0.803601 1.078125 1.370511 1.630999 1.971111 2.226246 2.543508 2.768268 0.234066 0.324515 0.462757 0.683101 0.779120 1.399880 1.995585 2.098113 2.538242 2.655334 0.226221 0.390737 0.587891 0.741564 1.148309 1.290898 1.572982 2.116901 2.296227 2.676682 0.152380 0.275031 0.397732 0.652751 1.329373 1.439312 1.794813 1.940569 2.520664 2.797824 0.166696 0.251629 0.512274 1.144842 1.315763 1.710247 2.178415 2.460971 2.703738 2.827969 0.216867 0.347530 0.531282 0.706161 1.126385 1.301329 1.475176 1.901629 2.242013 2.431677 0.300362 0.482595 0.791226 1.005231 1.156964 1.313455 1.691239 2.006858 2.373111 2.733635 0.169474 0.255383 0.406046 0.734985 1.442352 1.579575 1.789148 1.957193 2.399133 2.566651 0.130440 0.237458 1.032166 1.386551 1.711848 1.993258 2.268221 2.439261 2.683283 2.812111 0.173867 0.278057 0.388656 0.749215 0.960862 1.146135 1.799140 1.979764 2.471783 2.619305 0.242130 0.340749 0.474654 0.828524 1.328466 1.445245 1.802538 2.204747 2.373101 2.551440 0.232537 0.347402 0.580048 1.030748 1.297867 1.477044 1.985462 2.164878 2.627119 2.813421 0.187113 0.520796 0.877184 1.139100 1.389082 1.622317 1.923715 2.144320 2.454348 2.655504 0.198782 0.276683 0.501229 0.913907 1.081324 1.395372 1.775624 1.940434 2.159949 2.585288 0.219192 0.432472 0.587263 0.912549 1.202466 1.322625 1.811369 1.992180 2.458299 2.760505 0.191165 0.276813 0.416963 0.651161 1.167971 1.294155 2.003249 2.230928 2.506110 2.774812 0.363801 0.518796 0.957361 1.225911 1.566650 1.757756 1.962407 2.115286 2.359997 2.543054 0.227701 0.362569 0.499430 0.731314 0.922719 1.040854 1.838698 2.164784 2.383067 2.810807 0.465091 0.619804 0.778037 0.935635 1.093218 1.259037 1.829035 2.206537 2.404214 2.547685 0.219345 0.331580 0.468701 0.864163 1.221425 1.316478 1.768475 2.078164 2.234895 2.666223 0.202678 0.257891 0.463059 1.225499 1.595549 1.714423 2.230601 2.403829 2.599305 2.731507 0.191295 0.292649 0.453931 0.663743 1.147168 1.275622 1.648493 2.119111 2.300099 2.725340 0.202700 0.296043 0.842652 1.096103 1.432375 1.634580 1.849789 2.019083 2.373823 2.644180 0.223698 0.286308 0.535549 0.951336 1.583619 1.712827 2.069074 2.228672 2.508621 2.712105 0.393154 0.609187 1.147735 1.476125 1.660227 2.028129 2.280391 2.450954 2.687946 2.792306 0.330421 0.541443 0.735477 0.935290 1.088544 1.300043 1.758898 2.291508 2.520235 2.677690 0.228002 0.342730 0.476697 0.849764 1.368387 1.487565 1.712396 1.973744 2.334383 2.559863 0.104462 0.175301 0.563572 0.921064 1.173139 1.367029 1.770789 1.951766 2.518901 2.747920 0.195798 0.262376 0.397584 1.297059 1.483849 1.624630 1.820421 2.042136 2.481635 2.604228 0.173538 0.223847 0.382154 0.562642 0.874661 1.340042 1.617180 1.932579 2.238320 2.383936 0.257237 0.371721 0.696634 0.866614 1.045455 1.380460 1.752496 2.066892 2.504906 2.650308 0.218997 0.321077 0.437617 0.666034 1.306150 1.849231 2.027564 2.199883 2.494261 2.649249 0.320867 0.453548 0.918076 1.266491 1.422317 1.759869 1.998420 2.173922 2.635097 2.760926 0.288066 0.410534 0.547460 0.760858 0.863292 1.068351 1.939410 2.167961 2.348114 2.767507 0.218835 0.407925 0.654818 0.800374 1.153682 1.307829 1.657331 1.988984 2.263141 2.720996 0.153945 0.202790 0.346143 0.519640 1.071723 1.237072 1.712069 1.893855 2.509996 2.744059 0.248060 0.319372 0.459918 0.983442 1.443498 1.755178 2.100888 2.226747 2.447411 2.563325 0.174462 0.227225 0.392742 0.571792 1.079416 1.257366 1.551460 2.042776 2.429302 2.629154 0.274891 0.362315 0.660508 0.970740 1.151818 1.492509 2.072636 2.222125 2.494909 2.686200 0.220299 0.317099 0.435591 0.793260 1.562295 1.723726 1.912306 2.110472 2.315517 2.618587 0.350079 0.511699 0.888658 1.136538 1.502800 1.698163 2.138112 2.327492 2.505197 2.660921 0.173175 0.286482 0.419571 0.629953 0.747452 1.073798 1.745440 1.887288 2.728362 2.862994 0.302893 0.357795 0.579776 1.154149 1.373560 1.502096 1.831774 1.992189 2.178385 2.421943 0.140345 0.186167 0.360424 0.858043 1.324588 1.624322 1.866334 2.036366 2.402471 2.617804 0.207490 0.275386 0.532026 0.903652 1.559244 1.774707 1.962334 2.362983 2.596218 2.738415 0.218842 0.320129 0.541623 0.875722 1.067991 1.362399 1.856837 2.024142 2.291054 2.645666 0.341898 0.421854 0.677264 0.873738 1.018393 1.630494 1.868485 2.019716 2.616580 2.717499 0.211631 0.278329 0.446819 0.679617 0.882530 1.848991 2.102209 2.280260 2.586273 2.750039 0.400922 0.636971 0.853016 1.019114 1.364375 1.550804 1.850055 2.119999 2.453786 2.623222 0.182154 0.242330 0.378923 0.509876 0.716576 1.076135 1.587035 2.069399 2.351207 2.660390 0.400616 0.546715 0.729647 0.920762 1.100075 1.250132 1.664408 1.856723 2.067945 2.443519 0.209711 0.304779 0.494008 0.698197 1.296713 1.461577 1.655811 1.885168 2.324920 2.489386 0.248365 0.299675 0.641181 1.260844 1.683313 1.795634 2.022337 2.219236 2.445410 2.655259 0.167092 0.244845 0.404157 0.672069 1.004556 1.174641 1.578514 1.897154 2.103236 2.709969 0.429420 0.514025 0.817076 1.048094 1.187821 1.561651 1.826573 2.032100 2.492575 2.641130 0.264974 0.350531 0.483895 0.953322 1.415379 1.541498 1.741521 2.171851 2.402443 2.527925 0.416115 0.686348 1.016333 1.284030 1.627945 1.880349 2.143431 2.282669 2.504877 2.648617 0.231020 0.416620 0.567188 0.760726 0.955087 1.089751 1.781039 1.967816 2.404279 2.797135 0.416422 0.567520 0.709693 0.879615 1.302011 1.438085 1.678611 2.054536 2.326361 2.457927 0.247904 0.324051 0.545383 1.111006 1.266454 1.612279 1.870112 2.027173 2.425991 2.655109 0.279983 0.344606 0.621600 1.161229 1.307142 1.554450 1.784019 1.936785 2.444710 2.544691 0.161547 0.223962 0.393255 0.741174 1.202310 1.599192 1.822694 1.937889 2.442478 2.729139 0.340992 0.431955 0.678217 0.820520 0.999612 1.548630 2.164553 2.310748 2.585979 2.711488 0.200183 0.279651 0.467745 0.730753 1.426170 1.607139 1.815853 2.220677 2.506455 2.727126 0.274123 0.333601 0.517799 0.968069 1.665916 2.015026 2.169211 2.290528 2.535899 2.658723 0.128641 0.167761 0.298260 0.447464 0.821352 1.285100 1.591690 1.879933 2.400984 2.764683 0.198225 0.285988 0.697225 0.945530 1.135179 1.304018 1.590254 1.943114 2.370953 2.581323 0.201444 0.271446 0.576127 0.726304 1.159527 1.677334 1.872822 2.127341 2.665189 2.807544 0.198540 0.257454 0.402737 0.846677 1.689490 1.872412 2.034308 2.301368 2.545100 2.729540 0.200348 0.278019 0.471514 0.752728 1.057356 1.291805 1.777614 1.916008 2.050356 2.172844 0.466866 0.645308 0.804067 0.998786 1.191235 1.303931 1.785280 2.063043 2.218678 2.420840 0.217955 0.321210 0.422194 0.865351 1.405153 1.526771 1.791058 2.088900 2.251039 2.667199 0.168989 0.497826 1.018345 1.283132 1.493512 1.888380 2.226737 2.418452 2.616832 2.749197 0.147852 0.218473 0.622343 0.825646 1.034661 1.220457 1.704813 2.051368 2.264302 2.712720 0.202129 0.285808 0.640153 0.871843 1.173967 1.564865 1.834400 2.062497 2.412487 2.645130 0.183772 0.259996 0.404816 0.684417 1.383605 1.536056 1.977056 2.169199 2.372324 2.556503 0.306590 0.365918 0.723737 1.056338 1.191585 1.709401 1.978183 2.126256 2.594741 2.707129 0.219620 0.295360 0.600693 0.751928 1.012492 1.554688 1.777591 1.936858 2.168459 2.637471 0.484146 0.588901 0.779655 0.974444 1.078335 1.362035 1.861448 1.968026 2.308413 2.629418 0.228810 0.270297 0.510434 0.721201 1.241319 1.730974 2.096849 2.211832 2.642499 2.808686 0.400197 0.579628 1.063821 1.257463 1.434952 1.645068 2.017358 2.268483 2.625254 2.773542 0.232047 0.335877 0.450404 0.618767 0.762409 0.943602 1.844169 2.391140 2.569963 2.779299 0.315037 0.423610 0.597448 0.972112 1.370369 1.476900 1.783359 2.042461 2.209021 2.480610 0.194589 0.300944 0.526012 0.730548 1.193408 1.383086 1.609867 1.882051 2.100633 2.703077 0.215641 0.294490 0.558585 1.391554 1.487145 1.740600 1.911148 2.277087 2.578133 2.742082 0.160391 0.226326 0.368755 0.670545 0.912912 1.286570 1.631159 1.807727 1.987079 2.498593 0.313582 0.634117 0.786900 0.944061 1.309221 1.432287 1.720247 2.096637 2.283214 2.589845 0.214437 0.264378 0.625288 0.975877 1.451393 1.848655 2.094494 2.248063 2.542408 2.690286 0.532950 0.968164 1.239348 1.422500 1.673683 1.785201 2.010288 2.200155 2.489732 2.638101 0.190399 0.270657 0.393327 0.864241 1.117361 1.553286 1.679497 2.236221 2.526322 2.700079 0.287724 0.467671 0.675841 0.856838 1.284704 1.460878 1.649715 1.913527 2.422638 2.548168 0.215869 0.300450 0.454163 1.082174 1.280570 1.465769 1.679659 1.869841 2.473902 2.623546 0.274887 0.330100 0.521274 1.123699 1.527645 1.625993 1.931695 2.090005 2.295751 2.645233 0.177139 0.223177 0.433328 0.774459 1.097689 1.467517 1.918942 2.134341 2.337195 2.540463 0.346166 0.429209 0.673089 0.781966 1.198349 1.775370 1.954363 2.186438 2.523312 2.625185 0.197636 0.296745 0.398712 0.631500 1.583954 1.843578 1.994071 2.173016 2.361743 2.519793 0.356767 0.538545 0.898397 1.140796 1.519279 1.870556 2.168497 2.427459 2.643928 2.759816 0.235015 0.349662 0.469548 0.816642 0.998816 1.146467 1.889133 2.097584 2.284986 2.765528 0.167083 0.224131 0.448491 0.771954 0.948871 1.283667 1.621698 1.998899 2.223248 2.603115 0.159315 0.217018 0.374226 0.590601 1.105826 1.536441 1.809766 1.960128 2.582005 2.795394 0.168849 0.234032 0.344667 1.029831 1.622442 1.708285 2.016025 2.179960 2.644139 2.784632 0.251075 0.442282 0.599669 0.763346 1.115735 1.253234 1.496825 1.992708 2.184264 2.666670 0.388258 0.473926 0.719990 1.058667 1.198870 1.374618 1.864229 2.002653 2.271742 2.608038 0.293347 0.422867 0.533090 0.863648 1.464010 1.686465 1.842829 2.008624 2.424518 2.579258 0.422335 0.661725 1.188673 1.343060 1.557186 1.860452 2.239896 2.431450 2.631923 2.747718 0.210220 0.335092 0.511807 0.760320 0.952999 1.125991 1.476685 1.647025 2.137411 2.688168 0.373319 0.450044 0.685548 1.063488 1.214342 1.368881 1.749950 1.871124 2.228036 2.638333 0.175282 0.247596 0.583289 0.800597 1.137160 1.494047 1.790222 1.974957 2.343536 2.783786 0.154093 0.244641 0.765316 0.879236 1.262433 1.388927 1.719208 2.139465 2.523177 2.692366 0.222311 0.296370 0.669831 0.821863 1.017560 1.348925 1.641603 1.852235 2.386204 2.585103 0.372785 0.531082 0.729578 0.873202 1.002102 1.194509 1.654182 2.163378 2.555067 2.658778 0.180452 0.250281 0.391345 0.554433 1.111079 1.737542 1.910605 2.127866 2.347054 2.534033 0.447990 0.697721 0.913809 1.073923 1.398658 1.670558 1.960290 2.195050 2.584428 2.733637 0.253764 0.410608 0.631333 0.803642 0.949880 1.072389 1.769476 2.303179 2.473513 2.749295 0.249292 0.446941 0.652687 0.818128 1.175583 1.321675 1.534828 1.927620 2.151897 2.401118 0.201342 0.301055 0.433733 0.667341 1.394399 1.542142 1.766411 2.222136 2.392138 2.617167 0.263299 0.393237 0.913686 1.357749 1.580030 1.698507 1.930164 2.135083 2.415503 2.650696 0.189848 0.308713 0.459867 0.797899 0.949965 1.168427 1.746219 1.919236 2.340878 2.529939 0.236533 0.300777 0.705293 0.910173 1.158168 1.522892 1.727631 1.847056 2.544899 2.698351 0.219264 0.293220 0.734905 0.969140 1.364696 1.628075 1.824426 1.921247 2.283403 2.660295 0.231171 0.417787 0.828086 1.301747 1.563040 1.823547 2.038748 2.195446 2.600171 2.776056 0.280635 0.391503 0.560168 0.699729 0.849390 1.139817 1.609055 2.003493 2.496847 2.631252 0.329050 0.484505 0.654854 0.957533 1.414924 1.532367 1.798653 2.132845 2.332577 2.503880 0.227219 0.317562 0.601344 0.991967 1.260680 1.430395 1.612725 1.766840 2.496056 2.645255 0.270493 0.315583 0.641937 1.235995 1.409340 1.574822 1.760130 1.902696 2.598899 2.735147 0.235474 0.326468 0.507399 0.696822 0.844939 1.633632 1.871816 2.063592 2.368254 2.525576 0.233853 0.361484 0.482226 0.641979 0.992245 1.767823 1.952577 2.472579 2.742913 2.825489 0.168433 0.243379 0.376538 0.823302 1.489064 1.619584 1.949821 2.203288 2.468309 2.771787 0.206625 0.282620 0.554762 1.077945 1.286219 1.787257 2.045355 2.207994 2.522847 2.710409 0.281540 0.359214 0.508755 0.689167 0.780776 1.277647 1.987095 2.102406 2.452824 2.573050 0.240331 0.408023 0.587761 0.766784 1.268990 1.450068 1.614701 2.027579 2.386559 2.524671 0.213600 0.378897 0.482559 0.820665 1.293224 1.395614 1.715777 1.852078 2.466446 2.706440 0.192448 0.262539 0.378679 1.019763 1.468722 1.663670 1.910800 2.391601 2.621746 2.796560 0.220322 0.364745 0.565226 0.783488 1.013662 1.175116 1.402286 1.885036 2.103704 2.324743 0.322267 0.390833 0.713492 1.031629 1.156838 1.350887 1.515558 1.694139 2.382654 2.516728 0.192624 0.294262 0.426181 0.741678 1.498008 1.633347 1.893062 2.059462 2.393665 2.782635 0.237455 0.354262 0.864239 1.246075 1.666553 1.844678 2.174333 2.351099 2.520290 2.655921 0.185359 0.302261 0.428703 0.781405 0.947101 1.141955 1.617902 1.761286 2.464616 2.634452 0.271859 0.354517 0.569485 1.079860 1.240128 1.441296 1.944968 2.053805 2.406507 2.736827 0.214936 0.298540 0.472345 0.913665 1.080008 1.684282 1.985267 2.173551 2.601519 2.749361 0.318521 0.444000 0.739244 0.971075 1.303751 1.557191 1.918998 2.197692 2.552225 2.778091 0.187184 0.266393 0.414559 0.873123 1.122008 1.345856 1.781616 1.932051 2.123625 2.364411 0.212033 0.437364 0.587744 0.807841 1.008570 1.156068 1.667422 1.813734 2.388649 2.769182 0.177749 0.231877 0.394438 0.587873 1.018115 1.532170 2.031818 2.176571 2.587458 2.778604 0.397403 0.572539 1.117765 1.287841 1.469835 1.676483 1.995880 2.232196 2.496431 2.667425 0.173937 0.259671 0.371889 0.555593 0.908572 1.118222 1.943858 2.087012 2.545553 2.816900 0.296434 0.458071 0.635222 0.864989 1.198523 1.305471 1.672912 2.015023 2.193002 2.377815 0.205052 0.312572 0.468685 0.774972 1.212302 1.316262 1.821237 2.193552 2.380352 2.766685 0.240642 0.281687 0.717545 1.351376 1.501114 1.640455 2.046214 2.216028 2.588688 2.729942 0.230445 0.421175 0.558602 0.846662 1.051701 1.197214 1.704701 1.838398 2.267565 2.697618 0.276287 0.327977 0.824738 1.266737 1.373629 1.712792 1.891497 2.121117 2.537629 2.629970 0.236249 0.310208 0.402132 0.954290 1.542483 1.886318 2.043856 2.203899 2.435931 2.547918 0.323080 0.525410 0.940102 1.419025 1.732419 1.904886 2.278288 2.399903 2.613800 2.842137 0.259462 0.384806 0.559454 0.827377 1.079010 1.194629 1.553023 2.150915 2.369416 2.537197 0.309877 0.458904 0.634515 0.905896 1.340319 1.484136 1.732179 2.044813 2.234578 2.374887 0.200760 0.267223 0.619798 0.880150 1.341984 1.566789 1.724877 1.834378 2.408354 2.666757 0.232160 0.325786 0.611845 1.111911 1.277003 1.508409 1.711967 2.103218 2.470657 2.665982 0.160381 0.206959 0.356984 0.510509 1.122026 1.271899 1.727695 1.943129 2.251421 2.380751 0.339821 0.413428 0.663411 0.796136 0.920303 1.589702 1.879891 1.995622 2.491309 2.584399 0.225236 0.289017 0.531590 0.689709 1.348190 1.761804 1.902696 2.175207 2.654910 2.781414 0.283922 0.449613 0.777624 1.129523 1.487473 1.706799 2.164061 2.402885 2.691872 2.844990 0.328301 0.439249 0.648655 0.897495 1.049452 1.222028 1.849808 2.229574 2.423163 2.565623 0.236478 0.488322 0.656819 0.862950 1.144127 1.252241 1.694351 2.068901 2.226797 2.679600 0.169945 0.258037 0.384767 0.609183 1.121274 1.266086 1.906028 2.054377 2.436068 2.795471 0.177152 0.233124 0.534434 0.970496 1.404070 1.867414 2.171355 2.381133 2.619262 2.753148 0.225245 0.323943 0.535205 0.711545 1.030041 1.268317 1.543910 1.921579 2.352057 2.531897 0.380284 0.516944 0.727113 0.869680 1.061908 1.484627 1.847885 2.176267 2.550710 2.682243 0.227653 0.311146 0.407614 0.830722 1.390383 1.796577 1.984514 2.172202 2.442702 2.597183 0.395180 0.597222 0.988635 1.248608 1.649366 1.943305 2.114992 2.281535 2.610845 2.728627 0.159527 0.253807 0.427177 0.703855 0.920030 1.359209 1.618673 1.774181 2.658938 2.839174 0.232953 0.317175 0.734127 1.080631 1.332652 1.674943 1.899956 2.046773 2.307884 2.543358 0.125436 0.171676 0.329679 0.770190 1.288629 1.482675 1.769818 2.055328 2.430854 2.715479 0.108098 0.175220 0.776302 1.221645 1.460683 1.686249 1.929306 2.193619 2.536986 2.758891 0.152357 0.202480 0.472758 0.861767 1.159578 1.340969 1.681897 2.048109 2.275054 2.477467 0.216694 0.273656 0.664155 0.850536 1.153027 1.561670 1.759318 1.901416 2.353101 2.500133 0.234504 0.329541 0.449717 0.797883 1.290186 1.691782 1.880443 2.100171 2.454967 2.611905 0.423938 0.621841 0.996723 1.214793 1.409002 1.563377 1.783564 2.010297 2.490150 2.698586 0.224661 0.325658 0.459910 0.625802 0.808594 0.895832 1.274078 2.111179 2.326505 2.585806 0.276916 0.361107 0.729423 0.920236 1.053283 1.413110 1.741880 1.962097 2.139800 2.429514 0.174802 0.232198 0.385912 0.540434 1.262000 1.441657 1.595105 1.943274 2.269839 2.417795 0.265949 0.330919 0.614312 1.257075 1.438174 1.628356 1.917882 2.077892 2.425421 2.567960 0.184742 0.272816 0.441616 0.641718 0.815915 1.210558 1.722330 1.942876 2.319698 2.747254 0.390404 0.468994 0.743751 0.956882 1.081791 1.532303 1.750715 1.909157 2.466230 2.592626 0.278150 0.353755 0.588139 1.120329 1.521033 1.629736 1.993707 2.192040 2.399567 2.620496 0.431717 0.694505 1.256024 1.445196 1.671784 1.844456 2.028769 2.200956 2.506360 2.653075 0.208110 0.276044 0.538093 0.719555 0.900539 1.075355 1.745222 2.086474 2.298600 2.556630 0.352056 0.531509 0.676701 0.887365 1.282885 1.426632 1.614434 1.945858 2.270688 2.425511 0.247241 0.356899 0.502519 1.065178 1.284311 1.437490 1.855456 1.992377 2.597541 2.776219 0.396219 0.473793 0.715289 1.202273 1.346298 1.549130 1.940574 2.082739 2.514755 2.713815 0.202378 0.285773 0.510159 0.640990 1.020854 1.686414 1.864702 2.133482 2.472249 2.625491 0.136813 0.196375 0.389204 0.606996 0.826010 1.435725 1.829944 2.110031 2.522891 2.760011 0.178586 0.265329 0.368903 0.594584 1.563859 1.743534 1.910893 2.088980 2.290832 2.753782 0.326016 0.474212 0.821872 1.109710 1.491269 1.780679 1.990347 2.151819 2.439284 2.687522 0.198877 0.303609 0.451495 0.660899 0.772185 1.284705 1.783160 1.923118 2.602735 2.756655 0.279250 0.410975 0.617113 0.801949 0.990885 1.139677 1.438000 1.937681 2.530952 2.667930 0.182348 0.288676 0.418208 0.638943 1.372299 1.531009 1.853629 2.058568 2.425537 2.822046 0.235124 0.297027 0.512992 0.982242 1.579055 1.930478 2.096962 2.225930 2.572915 2.699703 0.162278 0.215431 0.355780 0.485908 0.932607 1.181318 1.754127 1.988386 2.205810 2.337559 0.508788 0.685414 0.844731 0.983038 1.244131 1.360404 1.646047 2.084834 2.375165 2.496801 0.221912 0.310104 0.433571 0.978939 1.478709 1.587503 1.870190 2.010717 2.307807 2.780012 0.359050 0.649694 1.005623 1.392268 1.637149 1.994024 2.239355 2.474016 2.727591 2.831065 0.174907 0.277141 0.433141 0.954995 1.167887 1.336923 1.902421 2.052616 2.483944 2.686652 0.193342 0.297566 0.824802 1.002859 1.285763 1.465909 1.800134 2.073494 2.392133 2.587289 0.209852 0.288483 0.458682 0.843162 1.202473 1.352796 2.014405 2.202275 2.423702 2.568228 0.276031 0.338955 0.858149 1.217747 1.357220 1.691136 1.841368 2.176457 2.647222 2.735745 0.223125 0.303040 0.542560 0.703413 1.109469 1.691790 1.909510 2.043240 2.184955 2.383039 0.338660 0.434962 0.644715 0.989980 1.142041 1.308641 1.862318 1.996732 2.219202 2.585521 0.169788 0.227570 0.355680 0.476462 1.249736 1.884793 2.054427 2.245569 2.516757 2.692583 0.510617 0.730414 1.008300 1.210250 1.460951 1.677387 1.984236 2.201040 2.503259 2.654324 0.224817 0.351828 0.465847 0.709341 0.827775 0.992719 1.978367 2.142995 2.475303 2.800083 0.308599 0.506317 0.673098 0.860582 1.161218 1.306099 1.811163 2.021896 2.233070 2.490125 0.180388 0.242667 0.458646 0.739129 1.098421 1.521511 1.707512 1.853458 2.375659 2.563893 0.191139 0.259717 0.375119 1.195018 1.535308 1.637017 1.945089 2.126276 2.528158 2.662854 0.144026 0.195867 0.353543 0.581701 1.048420 1.377425 1.815657 1.969736 2.339863 2.778177 0.384542 0.545846 0.742643 1.036203 1.274580 1.406237 1.737850 2.169732 2.446560 2.578757 0.313042 0.444130 0.599720 0.924365 1.567785 1.748672 1.900293 2.194593 2.410541 2.573262 0.492225 0.752280 1.124936 1.471295 1.758189 2.030974 2.238788 2.397439 2.680130 2.783434 0.204117 0.347099 0.699998 0.845266 1.234413 1.419863 1.647535 2.080443 2.553390 2.707330 0.257069 0.400082 0.558347 0.805346 1.259790 1.380823 1.608549 2.124230 2.308452 2.486914 0.187028 0.318194 0.445217 0.923741 1.268789 1.390301 1.796420 1.931293 2.418538 2.603222 0.243477 0.326319 0.635481 1.172112 1.360926 1.526662 2.109593 2.260517 2.545032 2.720529 0.166613 0.243290 0.400708 0.657757 0.842275 1.476511 1.791837 1.950760 2.119370 2.472850 0.311146 0.353401 0.824181 1.012251 1.149117 1.842349 2.055130 2.218062 2.570268 2.661992 0.208668 0.283611 0.411201 0.809929 1.517017 1.823008 1.957049 2.229403 2.412596 2.626293 0.154448 0.334483 0.779457 1.197447 1.370217 1.692002 1.980004 2.409686 2.713983 2.827926 0.234171 0.317688 0.451503 0.830950 0.995999 1.149839 1.803812 2.310181 2.531615 2.732000 0.268413 0.427669 0.559871 0.864380 1.275062 1.362920 1.581797 1.689453 2.226263 2.624807 0.107565 0.142648 0.266262 0.674471 1.151548 1.464128 1.861043 2.141020 2.509385 2.783297 0.182059 0.241841 0.379523 1.073956 1.618846 1.718260 1.915296 2.047758 2.360928 2.720733 0.235150 0.374352 0.545815 0.714492 0.870405 1.000816 1.559351 1.984193 2.158182 2.596142 0.434816 0.514709 0.756010 0.899497 1.037358 1.585142 1.834527 2.000422 2.564235 2.674345 0.220087 0.341090 0.451896 0.734427 1.391206 1.582675 1.725710 2.141788 2.371107 2.511862 0.482146 0.706990 1.033285 1.248170 1.467412 1.657558 2.147999 2.343164 2.600856 2.731213 0.213401 0.322062 0.647358 0.791444 0.977300 1.281320 1.599647 1.939047 2.672620 2.797626 0.266041 0.338577 0.634659 1.127429 1.295917 1.449033 1.658080 1.796624 2.285728 2.541842 0.119705 0.174258 0.480098 1.063251 1.273831 1.476888 1.794829 2.119252 2.513047 2.762255 0.132629 0.207248 0.566178 1.085083 1.427584 1.613863 1.889768 2.150853 2.557229 2.784690 0.243227 0.327780 0.614668 0.761155 0.956760 1.516306 1.811880 2.030177 2.440252 2.582195 0.276721 0.454860 0.642970 0.784038 1.148980 1.495704 1.703559 2.045787 2.591550 2.733608 0.189778 0.287373 0.392353 0.645856 1.447021 1.617951 1.816249 2.137973 2.286683 2.572288 0.400084 0.558491 0.869949 1.062095 1.467794 1.653306 1.899420 2.128461 2.442747 2.604032 0.199764 0.300259 0.426072 0.645425 0.897550 1.048949 1.748510 2.273694 2.495239 2.649109 0.296976 0.548524 0.761769 0.955832 1.233251 1.360741 1.693122 2.106225 2.391505 2.525275 0.248971 0.399490 0.565645 0.720524 1.301434 1.542758 1.716234 2.124059 2.351786 2.681231 0.230842 0.287955 0.878785 1.471322 1.627007 1.798878 2.005181 2.197775 2.563907 2.690549 0.176416 0.248403 0.402172 0.733179 0.912580 1.227444 1.694562 2.088653 2.427226 2.563010 0.330895 0.394275 0.774692 1.201779 1.321842 1.534733 1.782019 1.938050 2.422893 2.563017 0.227080 0.299503 0.577295 0.756890 1.417382 1.624050 1.795338 2.177707 2.440812 2.572784 0.411173 0.652311 1.207281 1.442451 1.795401 2.003085 2.140804 2.292980 2.639630 2.785365 0.332277 0.425121 0.639151 0.821829 0.917909 1.367536 1.826675 1.939314 2.535595 2.654182 0.345400 0.534948 0.689404 0.928224 1.433841 1.640941 1.825449 2.051581 2.274575 2.418295 0.141590 0.233113 0.380526 0.868351 1.172524 1.363081 1.874782 2.001448 2.669736 2.855042 0.309644 0.355571 0.694245 1.252006 1.460701 1.577178 1.853145 1.978370 2.227714 2.570337 0.181796 0.242419 0.465928 0.715655 1.132014 1.662718 1.850134 1.972773 2.184021 2.722527 0.270338 0.338307 0.544290 0.711724 0.871287 1.703598 1.918408 2.093313 2.668494 2.765585 0.150135 0.233584 0.336008 0.740881 1.603784 1.723020 1.936836 2.077330 2.611782 2.783379 0.294465 0.456340 0.870538 1.062801 1.291659 1.616175 2.070689 2.369390 2.648605 2.779945 0.220578 0.311705 0.491111 0.847979 1.008368 1.532076 1.849702 2.005101 2.512156 2.669189 0.229638 0.339951 0.513064 0.716308 1.121176 1.256758 1.479075 2.121337 2.503285 2.662824 0.160524 0.210553 0.362234 0.595417 1.110208 1.477620 1.653645 1.883754 2.439740 2.625662 0.236615 0.430340 0.682470 0.856444 1.159709 1.515913 1.944281 2.332831 2.633186 2.783526 0.208672 0.301280 0.471802 0.926610 1.098592 1.288875 1.519452 1.800256 2.105532 2.428804 0.243004 0.379283 0.831427 0.991746 1.231060 1.393310 1.679725 2.091152 2.354981 2.528458 0.149934 0.192836 0.336118 0.489287 1.278027 1.443086 1.737711 1.939793 2.258510 2.725935 0.162158 0.237674 0.813115 1.431297 1.690841 1.974269 2.228385 2.387649 2.645607 2.800036 0.196527 0.310980 0.462098 0.736718 0.837132 1.268534 1.708387 1.848473 2.433059 2.576944 0.217349 0.293339 0.438216 0.968725 1.350504 1.532480 1.911129 2.082089 2.268517 2.522732 0.172105 0.253481 0.450363 0.927945 1.249256 1.437596 1.922782 2.218348 2.523926 2.733317 0.289228 0.446047 0.832892 1.123024 1.277186 1.474382 1.792564 2.096649 2.561362 2.797590 0.214142 0.283470 0.516137 1.061346 1.260972 1.417097 1.665641 1.862087 2.187452 2.353608 0.235527 0.492936 0.614052 0.859127 0.993761 1.190535 1.848411 1.973235 2.500443 2.746547 0.143271 0.207291 0.331889 0.827028 1.406412 1.555136 2.045910 2.231114 2.689514 2.839109 0.343742 0.496860 0.865166 1.285087 1.588995 1.756794 2.022431 2.211289 2.468649 2.662665 0.213309 0.328675 0.455568 0.723514 0.874048 1.082530 1.853818 2.038906 2.260788 2.778839 0.356471 0.536984 0.755721 0.903361 1.038099 1.226007 1.687762 2.156339 2.420844 2.542644 0.281664 0.451610 0.591581 0.828915 1.326665 1.477284 1.708022 2.017509 2.266128 2.700127 0.135742 0.202004 0.583681 1.273102 1.602365 1.942380 2.228707 2.450342 2.728373 2.845988 0.176935 0.288677 0.440469 0.786770 1.012958 1.172754 1.752038 1.913637 2.366577 2.766438 0.207276 0.322804 0.788604 1.062222 1.294802 1.485775 1.944748 2.180022 2.397073 2.598545 0.258418 0.319098 0.442127 1.133408 1.649338 1.854417 1.994251 2.185084 2.363409 2.534653 0.230448 0.768093 1.180265 1.433576 1.687255 1.978844 2.259606 2.452430 2.659127 2.786279 0.211701 0.332064 0.697403 0.880507 1.102252 1.277927 1.808607 2.273983 2.531209 2.736845 0.245378 0.367568 0.512696 0.766674 1.343265 1.519747 1.697079 2.028107 2.215378 2.381457 0.221209 0.324945 0.580820 0.748228 1.178564 1.431153 1.585928 1.927918 2.511054 2.643255 0.201716 0.269175 0.401778 1.244589 1.471872 1.604627 1.805637 1.992744 2.610885 2.752593 0.160780 0.247690 0.362958 0.624009 1.013756 1.182001 1.581983 1.735927 2.415792 2.646241 0.320217 0.438376 0.710346 0.878476 1.032132 1.508649 1.972158 2.150849 2.428882 2.559870 0.229810 0.276051 0.623852 0.830087 1.321297 1.854677 2.155401 2.284792 2.546209 2.690175 0.172343 0.516169 0.866716 1.177175 1.468063 1.699344 1.986666 2.212830 2.511703 2.739129 0.301807 0.360652 0.549602 0.672645 0.818574 1.362279 2.098253 2.278909 2.509794 2.695143 0.294974 0.528192 0.672468 0.856772 1.265640 1.393603 1.638102 2.013275 2.218602 2.565642 0.169196 0.238150 0.410484 0.644996 1.213738 1.372823 1.800122 1.969874 2.449498 2.615088 0.184333 0.260633 0.376102 1.023515 1.545709 1.640728 2.037188 2.208164 2.488002 2.744323 0.205806 0.304865 0.436462 0.616734 1.126032 1.261522 1.725527 2.275740 2.464199 2.702123 0.184070 0.318390 0.717474 0.865476 1.106500 1.361536 2.038210 2.231225 2.554333 2.779851 0.246294 0.360790 0.538254 0.736709 1.529013 1.795377 1.952814 2.142384 2.364128 2.495169 0.353866 0.494646 0.877256 1.112783 1.566844 1.730636 2.025508 2.291163 2.453412 2.592313 0.266813 0.432427 0.627311 0.754824 0.905537 1.197394 1.729117 2.123791 2.612331 2.827337 0.273873 0.325959 0.540600 1.115405 1.498701 1.606801 1.814584 1.961539 2.188053 2.581605 0.080925 0.099600 0.276658 0.947658 1.291923 1.611810 1.910613 2.219380 2.537903 2.797293 0.168058 0.226944 0.705184 1.118312 1.428461 1.627351 1.878361 2.102812 2.397762 2.613552 0.257821 0.370068 0.510355 0.878371 1.064949 1.223791 1.796480 2.039854 2.276323 2.505472 0.243671 0.302629 0.595985 0.730818 1.062394 1.558183 1.727802 1.887397 2.590876 2.710615 0.211122 0.278412 0.520693 0.699430 1.097533 1.812529 1.983523 2.189366 2.429825 2.610746 0.256155 0.564923 0.839859 0.987034 1.191276 1.647157 2.021784 2.266855 2.558850 2.704555 0.202989 0.292278 0.435910 0.640810 0.806537 0.924136 1.535334 2.086372 2.299823 2.572501 0.261418 0.340324 0.627433 1.013276 1.180897 1.361209 1.731180 1.903731 2.106233 2.555098 0.183272 0.269138 0.450407 0.909918 1.188568 1.381279 1.745735 1.872820 2.365239 2.484744 0.230426 0.280037 0.644137 1.434869 1.666206 1.796575 2.015246 2.157224 2.561916 2.707798 0.227013 0.347868 0.525371 0.707399 0.880208 1.091634 1.654713 1.951332 2.177455 2.319267 0.380861 0.446326 0.749128 1.201643 1.336943 1.503446 1.800630 1.947582 2.527910 2.700466 0.315223 0.375610 0.564441 1.017919 1.552234 1.710374 1.873741 2.122288 2.299878 2.473435 0.446116 0.664203 0.984542 1.279400 1.574979 1.727934 1.978897 2.175567 2.469185 2.631008 0.221571 0.330656 0.499929 0.777432 1.028387 1.180617 1.640596 2.168791 2.367015 2.714387 0.421994 0.632233 0.778145 1.001218 1.346201 1.466628 1.720295 1.964067 2.152128 2.372888 0.163687 0.242822 0.347278 0.971370 1.516739 1.620115 1.816941 1.949014 2.443334 2.638176 0.284949 0.352677 0.685252 1.135143 1.255140 1.560889 1.905396 2.035214 2.547256 2.683043 0.177362 0.243130 0.452833 0.824266 1.135565 1.520115 1.813864 1.958746 2.294091 2.563724 0.178458 0.242386 0.592702 0.788280 1.051353 1.502905 1.934975 2.183628 2.477003 2.654310 0.259519 0.407690 0.538212 0.728451 1.390298 1.713874 1.876895 2.109781 2.420753 2.577065 0.255216 0.310327 0.589176 1.157266 1.687747 1.925407 2.045142 2.222504 2.425083 2.548028 0.164446 0.206868 0.378009 0.525559 0.944579 1.419792 1.613300 1.889685 2.292641 2.565572 0.240619 0.406939 0.588886 0.735213 1.146793 1.389773 1.537737 1.878402 2.297976 2.552226 0.289310 0.418786 0.620314 0.764899 1.239942 1.612628 1.827524 2.107944 2.485462 2.639007 0.198771 0.253637 0.405678 1.048168 1.663883 1.766039 2.128211 2.283365 2.560190 2.709800 0.165963 0.230669 0.375008 0.692069 0.959835 1.378579 1.760825 1.948801 2.081418 2.369799 0.523510 0.686129 0.825335 1.033919 1.330937 1.444794 1.739869 2.062844 2.315205 2.450730 0.293681 0.417926 0.595503 0.957896 1.404495 1.522162 1.884014 2.096933 2.301269 2.621891 0.359283 0.604669 1.076288 1.248249 1.451793 1.744413 2.125184 2.431489 2.687730 2.799316 0.156185 0.235581 0.552175 0.813130 1.154557 1.326329 1.861696 2.153380 2.503796 2.787362 0.290411 0.440558 0.736912 0.889007 1.171361 1.470366 1.794734 2.061516 2.373978 2.626041 0.224936 0.320946 0.527542 0.738900 1.255619 1.428610 1.871090 2.256589 2.480524 2.694434 0.288975 0.352962 0.777218 0.955880 1.109873 1.594800 1.813598 1.955710 2.589302 2.714964 0.213548 0.285746 0.635954 0.830113 1.233322 1.591243 1.839168 1.977797 2.191863 2.623667 0.336902 0.465806 0.655656 0.935793 1.068579 1.275847 1.761107 1.886493 2.444770 2.653299 0.178879 0.258874 0.377390 0.527403 1.357599 1.761048 1.949090 2.163795 2.596422 2.759195 0.430143 0.622963 0.955719 1.182584 1.497132 1.720157 2.044968 2.255285 2.544050 2.680998 0.213810 0.308853 0.412187 0.569347 0.698344 0.951238 1.880619 2.207829 2.428571 2.828730 0.230078 0.350112 0.747969 0.974442 1.265182 1.407146 1.813877 2.069124 2.247230 2.451871 0.161458 0.227385 0.387324 0.640232 1.277813 1.478011 1.725217 1.915041 2.125833 2.645182 0.200302 0.251181 0.381966 1.303694 1.547137 1.662388 2.120598 2.270182 2.603139 2.775037 0.143149 0.204983 0.349581 0.667355 1.054734 1.399807 1.727708 1.850109 2.047799 2.715549 0.337070 0.484021 0.803330 0.985730 1.331585 1.542266 1.830512 2.086973 2.445274 2.632911 0.215583 0.269471 0.606879 0.945487 1.515635 1.750218 1.939935 2.174549 2.408151 2.576074 0.534065 0.863487 1.372366 1.575333 1.866659 2.070622 2.218716 2.368585 2.634956 2.716254 0.237658 0.350270 0.489196 0.956466 1.150453 1.341383 1.448597 2.345953 2.655585 2.785735 0.233020 0.367323 0.713299 0.877999 1.226884 1.412189 1.743848 1.959402 2.416964 2.595603 0.134934 0.190506 0.457228 0.942655 1.200550 1.509494 1.748249 1.912543 2.326213 2.742656 0.297757 0.342592 0.625651 1.192568 1.540655 1.652384 1.875775 2.074460 2.224137 2.465967 0.177286 0.234207 0.389716 0.517516 1.264974 1.424653 1.878090 2.150100 2.343577 2.537476 0.281819 0.367413 0.659188 0.765361 1.004368 1.501384 1.726113 2.194951 2.534788 2.645854 0.180979 0.252107 0.389029 0.570917 1.209940 1.699305 2.111361 2.224160 2.447867 2.620250 0.256330 0.426903 0.826318 1.152683 1.487139 1.915114 2.246737 2.487453 2.705023 2.815420 0.195539 0.316745 0.452617 0.833168 0.960504 1.269064 1.879314 2.025539 2.474377 2.680723 0.203505 0.369568 0.536367 0.778820 1.088933 1.243750 1.588708 1.823497 2.020053 2.594631 0.156418 0.198956 0.346275 0.496071 1.022702 1.572819 1.753592 2.143215 2.439211 2.674470 0.160863 0.247666 0.345815 0.841020 1.523112 1.638256 1.887324 2.031339 2.509810 2.718796 0.258214 0.480809 0.650419 0.801775 1.142337 1.283943 1.504959 2.054206 2.225835 2.474616 0.303681 0.412740 0.649849 1.086617 1.266890 1.447470 1.896224 2.075119 2.565787 2.741747 0.271067 0.413984 0.597954 0.768944 1.247881 1.606107 1.786404 2.085376 2.326363 2.529854 0.521626 0.811390 1.129336 1.284608 1.629969 1.909728 2.228029 2.368756 2.570103 2.697107 0.303633 0.421526 0.573677 0.925024 1.125497 1.258550 1.501212 1.610013 2.249352 2.608832 0.411522 0.503523 0.746692 1.046522 1.172005 1.384521 1.797259 1.900603 2.387578 2.660719 0.175711 0.239782 0.620582 0.952051 1.278311 1.501826 1.917072 2.130700 2.368785 2.608122 0.164631 0.422501 0.724319 0.950544 1.214644 1.491261 1.799734 2.067799 2.473726 2.757283 0.193259 0.281162 0.690376 0.855405 1.232753 1.402146 1.689327 1.991274 2.228334 2.435353 0.301425 0.429993 0.650401 0.873662 1.008503 1.369274 1.690750 1.825918 2.520079 2.683664 0.155700 0.201237 0.338696 0.505340 1.147916 1.472901 1.941300 2.074514 2.326431 2.663368 0.350326 0.535475 0.827403 1.201270 1.427031 1.581852 1.963067 2.220906 2.472991 2.668217 0.279035 0.416052 0.604816 0.794888 0.990688 1.105072 1.420018 2.166296 2.539337 2.676318 0.278246 0.394509 0.777126 0.921607 1.080479 1.281224 1.433634 2.046850 2.283781 2.454104 0.158340 0.199119 0.354050 0.555065 1.177314 1.442096 1.685385 2.144139 2.396032 2.716012 0.247102 0.317737 0.855614 1.333153 1.454453 1.787157 1.970697 2.269614 2.586000 2.679846 0.202515 0.257270 0.542126 0.724324 0.933997 1.317188 1.717435 2.091303 2.303481 2.469447 0.295032 0.375581 0.775220 1.057728 1.185439 1.521116 1.807145 1.955630 2.459124 2.631564 0.266524 0.353178 0.553809 1.043318 1.444903 1.560508 1.829729 1.962933 2.504864 2.699633 0.392075 0.574661 1.110281 1.317280 1.473545 1.883432 2.051877 2.263410 2.613387 2.737894 0.168326 0.277952 0.453865 0.702950 0.855434 1.035959 1.678564 1.811649 2.430121 2.811216 0.301453 0.416493 0.552087 0.857890 1.446563 1.610970 1.775934 2.104633 2.298771 2.438580 0.296445 0.422883 0.572322 1.053033 1.294027 1.427183 1.752752 1.892326 2.450076 2.720985 0.291284 0.337800 0.787813 1.245129 1.350343 1.575395 1.771522 2.054749 2.520469 2.632047 0.138710 0.200016 0.384208 0.667517 0.930105 1.493340 1.923603 2.079511 2.389298 2.733779 0.280864 0.419489 0.614429 0.763022 1.011923 1.456038 1.644559 2.246694 2.668232 2.789516 0.145213 0.217524 0.328786 0.706480 1.529301 1.661988 2.106773 2.330515 2.581680 2.792686 0.265809 0.345868 0.597082 1.070990 1.497116 1.633533 2.139627 2.280686 2.512817 2.668144 0.208788 0.353537 0.448428 0.744542 0.832763 1.081624 1.871188 2.032083 2.429608 2.599530 0.238916 0.386378 0.542985 0.766669 1.174876 1.281048 1.635077 2.080947 2.247664 2.488499 0.203556 0.321547 0.427750 0.977606 1.419067 1.509630 1.819297 1.946189 2.580163 2.776386 0.139996 0.214290 0.381653 0.921888 1.276433 1.581217 1.904101 2.138537 2.662439 2.833853 0.212852 0.314107 0.462617 0.919913 1.063259 1.256340 1.466783 1.677489 2.033592 2.181966 0.466600 0.630996 0.782487 0.940455 1.238899 1.391865 1.580807 1.885579 2.314316 2.461513 0.227025 0.350571 0.564570 0.792724 1.354349 1.541346 1.801883 2.207919 2.410212 2.682787 0.249981 0.396397 0.985691 1.264822 1.534123 1.871221 2.123754 2.286134 2.517526 2.674066 0.177530 0.299649 0.406845 0.735920 1.226985 1.334179 1.570608 1.724780 2.559215 2.784411 0.331581 0.410000 0.675272 1.110025 1.255576 1.427242 1.924905 2.045160 2.303923 2.638796 0.210022 0.302618 0.477941 0.890428 1.097541 1.628245 1.909906 2.220072 2.508520 2.652118 0.243446 0.420405 0.781875 1.124911 1.345163 1.548171 1.986124 2.256316 2.655998 2.839208 0.200937 0.269954 0.466285 0.792334 1.180229 1.434359 1.791176 1.944075 2.077160 2.197213 0.251311 0.446771 0.586446 0.941160 1.156270 1.303306 1.672045 1.830703 2.385130 2.761692 0.176967 0.213758 0.376271 0.498915 1.047907 1.738519 2.144585 2.257100 2.630427 2.811560 0.352772 0.503472 0.939563 1.201270 1.506542 1.660120 1.860724 2.068816 2.441126 2.640996 0.178023 0.303052 0.386553 0.624462 0.745438 0.945475 1.851506 1.982051 2.478715 2.678062 0.364266 0.492788 0.670783 0.846141 0.981327 1.137049 1.747901 2.123325 2.278768 2.451425 0.194628 0.412302 0.576670 0.847302 1.093833 1.250221 1.832799 1.978334 2.268735 2.705748 0.210126 0.261821 0.730491 1.414850 1.596688 1.714047 2.240294 2.394580 2.609061 2.726773 0.269651 0.402612 0.565711 0.760525 0.889819 1.107327 1.796638 1.997957 2.232105 2.568438 0.133808 0.231770 0.964886 1.241597 1.484042 1.687250 1.909900 2.150489 2.488549 2.709142 0.306823 0.378775 0.528651 1.056677 1.597646 1.784457 1.922205 2.165550 2.402629 2.533249 0.406081 0.580663 1.171379 1.458297 1.720903 1.880717 2.213995 2.369466 2.530713 2.666970 0.228294 0.391754 0.668996 0.852912 1.156334 1.293279 1.648848 2.231024 2.414612 2.628285 0.302709 0.472535 0.626855 0.843574 1.352641 1.488643 1.688728 2.088022 2.315798 2.484648 0.174773 0.243410 0.746413 0.964816 1.191099 1.363990 1.763375 2.002057 2.265912 2.600431 0.208518 0.277532 0.471186 1.268798 1.353448 1.735767 1.868117 2.374184 2.641977 2.776723 0.181223 0.240142 0.433185 0.698630 1.302639 1.456283 1.718530 1.991528 2.237981 2.340398 0.351292 0.440375 0.723077 0.926148 1.074170 1.439999 1.696850 1.901716 2.300430 2.453901 0.226417 0.295615 0.571000 0.984080 1.315950 1.698856 1.941891 2.121713 2.342505 2.579999 0.380156 0.575056 0.932765 1.215036 1.441177 1.764868 2.084529 2.309314 2.649989 2.795048 0.327618 0.406456 0.591362 0.776642 0.880344 1.202380 1.954155 2.143987 2.351308 2.562503 0.349506 0.502746 0.667403 0.858540 1.006257 1.182652 1.744117 1.942048 2.263027 2.631113 0.177120 0.223929 0.376392 0.517683 0.980327 1.245272 1.809519 2.111620 2.342282 2.674853 0.123205 0.175349 0.396680 1.076230 1.369038 1.673956 1.959621 2.213420 2.585626 2.780840 0.199931 0.299170 0.450172 0.705023 1.188319 1.349840 1.579504 2.154568 2.351041 2.525566 0.302167 0.465527 0.626305 0.861772 0.982600 1.308182 1.952424 2.093800 2.477514 2.675986 0.242409 0.306396 0.609503 0.781681 1.304327 1.721020 1.925053 2.059600 2.219491 2.531271 0.355459 0.562814 1.005674 1.276256 1.699547 1.938826 2.256737 2.427235 2.599155 2.727721 0.151530 0.250374 0.398298 0.598018 0.779517 1.173799 1.570201 1.708674 2.564516 2.838232 0.220397 0.279236 0.757790 1.106570 1.277089 1.577301 1.822237 1.978751 2.121441 2.474720 0.153326 0.218116 0.394366 0.701525 1.051329 1.626441 1.887066 2.073879 2.602080 2.787764 0.234610 0.396895 0.841428 1.067362 1.368124 1.669319 1.979920 2.264168 2.548149 2.700534 0.210859 0.310938 0.499147 0.721086 1.174085 1.319358 1.795112 2.119739 2.328704 2.523434 0.205900 0.309942 0.473488 0.788729 0.910899 1.492677 1.711470 1.896973 2.451938 2.620192 0.228664 0.320277 0.483685 0.662193 1.183931 1.743195 1.934444 2.129302 2.472394 2.610315 0.308768 0.504829 0.834602 1.135142 1.422684 1.603830 1.804246 2.039329 2.434630 2.712164 0.195372 0.307825 0.510685 0.705293 0.862776 0.987472 1.561941 1.940733 2.431850 2.813875 0.306758 0.363734 0.676055 1.018763 1.123399 1.370232 1.612188 1.792290 2.051896 2.212304 0.175686 0.229897 0.430909 0.821342 1.267737 1.439041 1.813710 2.050941 2.367020 2.513483 0.270387 0.314704 0.625717 1.328248 1.485768 1.648429 1.945037 2.074570 2.558789 2.681083 0.150545 0.249063 0.484485 0.650722 0.926307 1.336973 1.578609 1.727988 2.372974 2.800106 0.451543 0.550287 0.774083 1.017766 1.117810 1.452119 1.851289 1.956638 2.541998 2.714928 0.303976 0.365108 0.645290 1.163674 1.649225 1.816629 1.956898 2.167435 2.334752 2.499609 0.258346 0.804804 1.233083 1.450024 1.793938 1.975438 2.178153 2.350853 2.545268 2.695382 0.305873 0.411332 0.559751 0.770260 0.870638 1.070601 1.844362 2.171189 2.331380 2.561172 0.328067 0.572423 0.818346 0.977873 1.251504 1.396022 1.679055 2.003477 2.202890 2.376892 0.233685 0.324374 0.505263 1.162727 1.383328 1.533712 1.921509 2.038933 2.644680 2.830387 0.368811 0.446580 0.830711 1.314440 1.454376 1.633636 1.932315 2.093222 2.523433 2.696884 0.225386 0.331700 0.499419 0.651259 1.081776 1.536183 1.684810 2.115502 2.326023 2.493957 0.223044 0.298517 0.436019 0.582229 0.785616 1.768538 2.059742 2.207026 2.494017 2.696171 0.180285 0.258337 0.369821 0.519766 1.426414 1.652781 1.844922 2.044342 2.221032 2.715648 0.283330 0.386958 0.793201 1.012390 1.401661 1.814923 2.032214 2.252691 2.478442 2.623605 0.192303 0.289501 0.500660 0.766599 0.927796 1.379237 1.761645 2.133602 2.524890 2.706929 0.240366 0.425376 0.713195 0.854560 1.062811 1.239666 1.453114 2.086242 2.409526 2.579680 0.137084 0.190186 0.315294 0.519061 1.348977 1.578096 1.776272 1.932718 2.478330 2.764053 0.256575 0.299517 0.557847 0.772199 1.734591 1.838024 2.175501 2.380904 2.586733 2.722357 0.152502 0.184110 0.342575 0.500794 0.869142 1.091892 1.283627 1.913051 2.078861 2.216081 0.422116 0.624411 0.936013 1.075293 1.214093 1.394857 1.793604 2.068743 2.420462 2.621433 0.172110 0.265160 0.376968 0.872523 1.415505 1.522936 1.876576 2.026326 2.412597 2.784541 0.206316 0.484509 0.867999 1.264771 1.619155 1.941304 2.179857 2.450350 2.746320 2.859252 0.183287 0.327870 0.479087 0.793937 1.054850 1.228053 1.799851 2.057544 2.605366 2.808018 0.199645 0.251567 0.651339 0.845163 1.224263 1.400865 1.849917 2.073362 2.320314 2.465281 0.172950 0.268061 0.408629 0.749321 1.232382 1.363027 1.833510 1.995806 2.311255 2.818028 0.383755 0.436949 0.854750 1.093429 1.211736 1.678565 1.897539 2.135411 2.547959 2.639036 0.206666 0.277792 0.525267 0.971550 1.150633 1.543543 1.818711 1.982032 2.192940 2.418823 0.297704 0.438877 0.602705 0.935349 1.126380 1.302724 1.887231 2.030156 2.370716 2.648705 0.225939 0.261133 0.511885 0.708833 1.424678 1.892147 2.104001 2.250163 2.605088 2.746840 0.452216 0.679332 1.031388 1.239650 1.444390 1.576987 1.800188 2.037662 2.347747 2.559010 0.246537 0.319428 0.434869 0.567303 0.678662 1.145054 2.156111 2.318698 2.695808 2.850677 0.323068 0.487001 0.653349 0.909650 1.315899 1.427550 1.843764 2.091482 2.277958 2.521041 0.151653 0.209991 0.374931 0.854455 1.064290 1.434370 1.854148 1.976154 2.226004 2.750320 0.254129 0.318082 0.553509 1.223731 1.483086 1.618808 1.995613 2.126498 2.542503 2.704703 0.159794 0.237065 0.373617 0.681392 0.916230 1.100174 1.782317 1.960086 2.120694 2.618079 0.395727 0.506034 0.756406 1.188386 1.370570 1.507131 1.860951 2.052892 2.386064 2.617425 0.235512 0.301393 0.657521 0.969184 1.638320 1.830168 1.984994 2.183324 2.395359 2.538524 0.451916 0.818196 1.310860 1.494170 1.734505 1.944228 2.085155 2.271405 2.604215 2.715654 0.229547 0.331804 0.499374 0.698992 1.265974 1.467138 1.658356 2.268601 2.583952 2.762021 0.258732 0.443700 0.582380 0.800795 1.354913 1.537609 1.724000 2.113993 2.369337 2.558869 0.156813 0.299295 0.462045 0.796077 1.096063 1.269277 1.836371 1.991867 2.448318 2.597971 0.246591 0.304473 0.529300 1.215091 1.451169 1.571384 1.868982 1.972518 2.391725 2.695616 0.169559 0.209107 0.367228 0.505130 1.079358 1.293153 1.736205 2.042985 2.323978 2.564293 0.329533 0.392210 0.720874 0.936253 1.067646 1.644185 1.991320 2.118407 2.596262 2.701052 0.201406 0.291786 0.394755 0.617862 1.695417 1.914199 2.049472 2.237494 2.441266 2.568384 0.115269 0.195387 0.738170 1.042436 1.524313 1.807507 2.173634 2.393265 2.651838 2.824917 0.173769 0.282805 0.419446 0.776536 0.928220 1.160391 1.958931 2.101699 2.541381 2.732928 0.209696 0.340593 0.516203 0.794250 1.153989 1.275003 1.570690 1.733317 2.086323 2.795392 0.110476 0.145162 0.248644 0.465410 1.205115 1.426951 1.838992 2.085791 2.488927 2.779657 0.223681 0.283712 0.440694 1.041879 1.657659 1.762280 2.000478 2.153137 2.435135 2.637721 0.178995 0.282691 0.473035 0.740633 0.911089 1.104519 1.288366 1.821180 2.201221 2.508461 0.443099 0.561309 0.804443 1.033650 1.140498 1.408557 1.973383 2.105087 2.432294 2.654409 0.222370 0.320892 0.431815 0.774539 1.450421 1.638383 1.817605 2.055496 2.231523 2.414745 0.488759 0.722119 1.075268 1.294956 1.551912 1.839530 2.130626 2.354921 2.626536 2.737698 0.209201 0.325492 0.450619 1.020698 1.213389 1.358613 1.538589 1.759768 2.620164 2.791411 0.254420 0.409271 0.532950 0.933560 1.248401 1.350851 1.728513 1.887503 2.311205 2.707429 0.039082 0.123291 0.563195 0.857519 1.261207 1.529819 1.850039 2.144420 2.476829 2.755410 0.127556 0.217058 0.807380 1.043662 1.378203 1.631976 1.940815 2.207962 2.528274 2.764303 0.214258 0.299923 0.606169 0.768797 1.015893 1.349821 1.669065 1.924581 2.111348 2.418396 0.364885 0.502482 0.675283 0.930660 1.036461 1.354434 1.834770 1.950661 2.559472 2.726950 0.221471 0.330609 0.456653 0.686616 1.285861 1.685279 1.842952 2.117269 2.300993 2.591367 0.347069 0.500335 0.788322 1.022915 1.371254 1.585460 1.855588 2.176902 2.477587 2.720481 0.281028 0.414603 0.602236 0.792786 0.907330 1.090040 1.687453 2.129718 2.489785 2.634419 0.363245 0.571116 0.705668 0.861203 1.204113 1.333048 1.544624 2.016192 2.258768 2.434454 0.215734 0.321274 0.465393 0.666555 1.274668 1.427396 1.670511 2.228318 2.394993 2.624012 0.270727 0.332361 0.883612 1.283495 1.433436 1.649610 1.838125 2.021889 2.560021 2.698378 0.175763 0.213621 0.391730 0.566755 0.955973 1.388956 1.878982 2.137460 2.349368 2.478188 0.257598 0.316184 0.657817 1.118064 1.272143 1.501175 1.689925 1.857456 2.616979 2.735442 0.227270 0.307771 0.544263 1.030949 1.478367 1.606785 1.851814 2.266798 2.452714 2.629357 0.255179 0.376313 1.164078 1.383762 1.652706 1.817476 2.014659 2.160928 2.460094 2.623430 0.274618 0.450301 0.650957 0.842032 1.042329 1.233369 1.641038 1.987714 2.446952 2.597194 0.337780 0.514835 0.668892 0.911283 1.476046 1.714011 1.887574 2.115985 2.373951 2.499093 0.172594 0.270224 0.434372 0.864398 1.037663 1.485795 1.748590 2.020761 2.643028 2.800341 0.270150 0.317310 0.733644 1.342780 1.517768 1.641210 1.845979 1.981779 2.361540 2.595899 0.160609 0.230103 0.452778 0.853418 1.061340 1.458644 1.711466 1.875295 2.205269 2.709841 0.302065 0.354507 0.587391 0.684546 0.931120 1.757948 1.902878 2.288464 2.550897 2.656497 0.142376 0.211224 0.315730 0.534420 1.587988 1.751880 2.118162 2.354064 2.604623 2.786794 0.386559 0.540492 0.884711 1.083540 1.507785 1.692150 1.931330 2.198611 2.531354 2.678491 0.323902 0.389328 0.540529 0.671309 0.782921 1.525984 2.046871 2.140001 2.472270 2.566702 0.227988 0.399979 0.639588 0.791383 1.185694 1.369429 1.655774 2.094051 2.385252 2.754008 0.140257 0.228630 0.342001 0.596028 1.326401 1.465391 1.823254 1.961877 2.671876 2.831534 0.121381 0.186129 0.623448 1.000592 1.306405 1.641012 2.056458 2.375989 2.709278 2.848728 0.247607 0.350532 0.510244 0.883136 1.094021 1.210853 1.639562 2.030725 2.223639 2.416473 0.357005 0.520431 0.875831 1.062576 1.221746 1.345463 1.623626 2.038524 2.477051 2.698891 0.179634 0.278991 0.394920 0.736511 1.402026 1.576761 1.774624 1.972434 2.183128 2.757177 0.203160 0.430851 1.114653 1.371969 1.757116 1.992375 2.261491 2.431952 2.637357 2.752659 0.138600 0.200975 0.519401 0.724917 1.034246 1.394176 1.722948 1.946633 2.443593 2.716691 0.298095 0.365805 0.582351 1.086692 1.326009 1.425975 1.844288 2.197476 2.361003 2.521646 0.224031 0.332426 0.469990 1.001054 1.197837 1.340048 1.959629 2.074407 2.586538 2.799850 0.217865 0.623928 0.846007 1.056459 1.270022 1.514463 1.916564 2.173644 2.481877 2.731790 0.216744 0.285870 0.554706 0.993990 1.223763 1.481385 1.841075 2.001157 2.202645 2.554494 0.183332 0.408012 0.595713 0.854496 1.037244 1.240493 1.858004 2.051789 2.454286 2.641640 0.185879 0.262800 0.433401 0.963144 1.221951 1.453093 2.083738 2.338219 2.637954 2.802979 0.376619 0.531366 0.924956 1.260648 1.459226 1.589579 1.913753 2.153929 2.384625 2.568935 0.276908 0.401698 0.535406 0.725282 0.853962 0.993671 1.784685 2.264235 2.415421 2.743011 0.392628 0.530015 0.694728 0.898255 1.037465 1.203267 1.847972 2.130377 2.294167 2.519263 0.221585 0.348013 0.498036 0.715769 1.244234 1.381107 1.612806 2.098989 2.271383 2.656074 0.181011 0.243672 0.520565 1.273809 1.635579 1.924649 2.152884 2.325189 2.545337 2.704856 0.212747 0.338170 0.512165 0.698820 1.069232 1.195663 1.594938 1.997384 2.252972 2.771008 0.239602 0.319299 0.856477 1.177220 1.318502 1.493392 1.741957 2.006496 2.283856 2.495161 0.228476 0.280840 0.476230 1.203494 1.625636 1.719185 2.032736 2.169601 2.510422 2.699013 0.286987 0.578563 1.175416 1.489497 1.807057 2.031448 2.224193 2.402210 2.620582 2.786223 0.284803 0.530975 0.821128 0.972435 1.146598 1.402202 1.828804 2.094299 2.506084 2.720046 0.245331 0.345077 0.478580 0.845525 1.322977 1.438811 1.722802 2.097265 2.261936 2.441149 0.170708 0.247004 0.608618 0.775849 1.065513 1.283496 1.723268 1.892396 2.539816 2.717299 0.208332 0.300056 0.505156 1.253926 1.377427 1.594647 1.754029 2.171773 2.487478 2.685632 0.171329 0.225179 0.378514 0.577821 1.098665 1.311943 1.526522 1.967713 2.172531 2.346440 0.239282 0.344225 0.528808 0.666274 1.042444 1.388419 1.857559 2.094835 2.473543 2.649229 0.198580 0.259051 0.438298 0.705347 1.431453 1.897639 2.046829 2.207600 2.449656 2.599716 0.337069 0.528000 0.951780 1.180918 1.376423 1.654985 1.971529 2.266927 2.704743 2.847367 0.284813 0.367338 0.523627 0.691416 0.797885 1.120421 1.819243 2.265148 2.456517 2.588448 0.269159 0.476818 0.659344 0.899456 1.209541 1.335886 1.627523 1.903299 2.132623 2.655472 0.119224 0.156658 0.271903 0.418321 1.065297 1.360087 1.644993 1.982627 2.382784 2.755980 0.282273 0.349303 0.537097 1.066089 1.307982 1.458937 2.037910 2.256912 2.434757 2.578973 0.201474 0.291056 0.422152 0.616067 1.022184 1.152574 1.449965 2.197085 2.439911 2.635280 0.324130 0.396121 0.713192 1.073384 1.173029 1.526515 2.037201 2.137280 2.569318 2.702445 0.199269 0.284170 0.404247 0.697358 1.446027 1.807057 1.954743 2.169169 2.379241 2.545732 0.348456 0.529109 0.879319 1.101024 1.475230 1.807439 2.081272 2.280127 2.549592 2.702863 0.184393 0.309059 0.446883 0.786980 0.939533 1.169098 1.804458 1.930933 2.599357 2.810854 0.372412 0.451942 0.679847 1.075185 1.453546 1.572935 1.797280 2.060904 2.239656 2.413231 0.162340 0.215690 0.397026 0.885715 1.351665 1.692524 1.923001 2.162159 2.529446 2.710698 0.174845 0.244687 0.722017 1.058880 1.584480 1.712948 1.914989 2.272779 2.514853 2.721138 0.180603 0.263970 0.439556 0.797992 1.025300 1.271742 1.843790 2.013992 2.183901 2.609028 0.275445 0.331708 0.686947 0.880832 1.019790 1.601662 1.815444 1.960055 2.524843 2.635159 0.246743 0.338623 0.507004 0.744344 0.978588 1.719875 2.149981 2.270511 2.455050 2.609715 0.511182 0.731278 1.001870 1.154541 1.304543 1.479350 1.855646 2.159073 2.465297 2.619985 0.159919 0.196942 0.359631 0.506645 0.910908 1.079437 1.605706 2.020672 2.336267 2.675469 0.400414 0.532831 0.732331 1.013768 1.194337 1.337622 1.760440 1.913653 2.137670 2.495860 0.198432 0.265271 0.463330 0.715843 1.124005 1.473936 1.785103 1.947760 2.284523 2.402467 0.251071 0.299335 0.761114 1.358836 1.477322 1.755740 1.974355 2.155204 2.509334 2.610900 0.168430 0.240238 0.385248 0.642207 0.818665 1.079971 1.497030 1.739210 2.014670 2.480512 0.403618 0.476427 0.760625 1.119521 1.225260 1.585741 1.910637 2.082695 2.602596 2.728042 0.270110 0.353552 0.507117 0.982357 1.452637 1.561604 1.831119 2.097015 2.260480 2.506040 0.409239 0.594796 0.975401 1.298743 1.696566 1.869597 2.021276 2.210722 2.513551 2.654084 0.264683 0.461411 0.644817 0.860983 1.044619 1.166400 1.802711 2.091425 2.295669 2.754119 0.469686 0.613125 0.780126 0.980941 1.398148 1.536063 1.747415 2.051727 2.394884 2.516178 0.186791 0.269819 0.399921 1.138197 1.381467 1.573894 1.960790 2.110781 2.483798 2.628204 0.258801 0.327749 0.504295 1.197030 1.358461 1.528535 1.792614 1.927747 2.524317 2.681583 0.161459 0.233374 0.511026 0.740697 0.973203 1.529858 1.845698 2.024509 2.388404 2.769333 0.338109 0.399145 0.642671 0.750976 0.940491 1.777467 2.157523 2.269354 2.634732 2.724164 0.180623 0.259965 0.390546 0.612711 1.433871 1.678265 1.843034 2.228297 2.443281 2.647327 0.247299 0.293271 0.692143 0.919932 1.644451 1.918105 2.097755 2.258082 2.510431 2.625830 0.149020 0.205904 0.356032 0.602403 0.987977 1.147484 1.771885 1.955289 2.387841 2.798390 0.232598 0.414291 0.675328 0.818194 1.101627 1.308523 1.519246 1.952980 2.347393 2.695458 0.176302 0.240703 0.418040 0.744771 1.241784 1.631902 1.803676 1.965041 2.614696 2.812026 0.147792 0.225066 0.327162 0.749127 1.639390 1.742663 2.031072 2.226257 2.554880 2.737390 0.153870 0.209078 0.349325 0.617112 0.939783 1.262086 1.603026 1.759135 1.968177 2.111699 0.401254 0.531884 0.716519 1.042091 1.338740 1.442853 1.814274 2.094864 2.275463 2.451094 0.257481 0.354612 0.474799 0.889648 1.418879 1.545760 1.780610 2.002306 2.180143 2.532227 0.145143 0.398917 0.981552 1.314723 1.480195 1.798420 2.069724 2.386944 2.668464 2.802905 0.178493 0.240401 0.691115 0.837764 1.073179 1.297529 1.642950 2.040266 2.463959 2.622440 0.283570 0.372001 0.585235 0.956144 1.106750 1.584081 1.860096 2.009870 2.399586 2.562348 0.173740 0.229082 0.361309 0.554292 1.445623 1.608360 2.083231 2.257294 2.420588 2.616658 0.324415 0.415954 0.746050 1.011384 1.143615 1.556506 1.921430 2.048417 2.544327 2.700584 0.214462 0.286094 0.581008 0.805945 1.275261 1.610434 1.794665 1.905601 2.100985 2.530385 0.406606 0.540199 0.741703 0.841294 1.020646 1.288940 1.697760 1.988139 2.374821 2.589349 0.202273 0.235653 0.484403 0.754406 1.274678 1.821075 2.241890 2.368887 2.620778 2.800892 0.270698 0.780374 1.036092 1.204303 1.426576 1.652095 1.944935 2.222209 2.496745 2.678321 0.229051 0.330732 0.459692 0.687040 0.867860 0.971515 1.553263 2.327103 2.599324 2.733993 0.260962 0.343168 0.545250 1.036179 1.306217 1.422412 1.660351 2.041101 2.335761 2.495897 0.171216 0.239743 0.394965 0.588008 1.144698 1.289132 1.673831 1.940258 2.235772 2.782337 0.195902 0.254449 0.377534 1.406314 1.521423 1.673084 1.866963 2.261663 2.535496 2.688582 0.150694 0.213444 0.372155 0.787173 1.035226 1.454281 1.699328 1.829446 2.003441 2.525940 0.232566 0.460472 0.787265 0.996419 1.396693 1.523961 1.855686 2.119370 2.346354 2.515401 0.233393 0.307066 0.580252 0.812411 1.638408 1.916323 2.050381 2.201478 2.398327 2.532500 0.654665 1.113987 1.347221 1.518794 1.813315 1.953845 2.210362 2.381661 2.551979 2.660202 0.223873 0.325731 0.467395 0.921251 1.270288 1.397723 1.734370 2.414313 2.638346 2.800382 0.310637 0.477608 0.685272 0.996817 1.355825 1.484000 1.704038 2.061930 2.448624 2.565929 0.148930 0.226761 0.370757 1.019241 1.219213 1.396110 1.661688 1.901830 2.408793 2.697915 0.229342 0.295527 0.586649 1.059472 1.597702 1.716890 1.937422 2.109084 2.436811 2.674887 0.192819 0.263035 0.434697 0.673121 1.119753 1.338824 1.909548 2.076183 2.261830 2.387228 0.320147 0.380189 0.741994 0.844995 1.074712 1.639187 1.762953 2.266267 2.646178 2.721096 0.174567 0.253745 0.360203 0.504953 1.488396 1.814662 1.955756 2.149395 2.323488 2.584030 0.263126 0.470251 0.798026 1.161280 1.606556 1.808008 2.130398 2.302959 2.489210 2.752479 0.231279 0.366009 0.530320 0.804291 0.943863 1.141251 1.962507 2.101760 2.449591 2.815548 0.172028 0.250238 0.449914 0.861171 1.080449 1.240891 1.585537 1.918091 2.217571 2.722636 0.131319 0.183681 0.316018 0.523172 0.890644 1.486126 1.758535 1.891187 2.487652 2.765559 0.165174 0.243169 0.350507 1.016712 1.534247 1.638560 1.932592 2.084107 2.538300 2.689502 0.262744 0.474699 0.655053 0.795707 1.068818 1.252172 1.418647 1.961010 2.309455 2.536506 0.359054 0.435831 0.725138 1.118933 1.229842 1.514926 1.879370 2.001037 2.462089 2.652002 0.218540 0.299734 0.601107 0.823625 1.269799 1.620287 1.839893 1.976756 2.375450 2.640668 0.487484 0.730967 1.052266 1.258969 1.526405 1.802696 2.229099 2.451538 2.684818 2.774190 0.235780 0.364477 0.520691 0.749469 0.950595 1.159410 1.423255 1.544612 2.361393 2.766014 0.366160 0.476136 0.652510 1.062481 1.309788 1.418863 1.784871 1.987495 2.189248 2.558080 0.184696 0.253223 0.471758 0.830299 1.272428 1.483910 1.761955 2.136740 2.416390 2.620731 0.128256 0.217552 0.752532 1.013345 1.185988 1.415101 1.811830 2.211505 2.607414 2.789321 0.247330 0.328294 0.701060 0.927525 1.109801 1.291869 1.638584 1.875516 2.227907 2.417348 0.261841 0.503729 0.732366 0.870192 1.033798 1.299712 1.693809 2.023705 2.463903 2.789299 0.165555 0.219912 0.358917 0.505900 1.230885 1.663232 1.852393 2.028502 2.286248 2.725340 0.426544 0.643468 0.917679 1.196829 1.471597 1.648363 1.933059 2.151933 2.533829 2.705743 0.308359 0.416322 0.591830 0.808745 0.946905 1.230266 1.815498 2.281895 2.520403 2.631259 0.269965 0.447323 0.574488 0.763324 1.256417 1.405168 1.571648 1.980676 2.220782 2.442545 0.188326 0.280970 0.408039 0.646742 1.320810 1.446061 1.615924 2.148422 2.351742 2.514250 0.241655 0.365356 0.810170 1.309700 1.669576 1.812447 2.014631 2.236122 2.442170 2.609315 0.191747 0.289189 0.450664 0.748517 0.915409 1.168139 1.584199 1.750548 2.260120 2.447778 0.215480 0.278055 0.768309 1.041609 1.391676 1.605855 1.766698 1.876725 2.528928 2.706006 0.216771 0.298936 0.710997 0.862001 1.342336 1.590245 1.886295 2.097920 2.415093 2.592546 0.359220 0.566823 0.939326 1.372126 1.545352 1.699671 2.041310 2.205011 2.518317 2.710314 0.305907 0.442295 0.613007 0.776603 0.914320 1.099675 1.615712 1.826869 2.359635 2.622631 0.323177 0.497481 0.632094 0.852217 1.431198 1.600546 1.791940 2.143530 2.380021 2.560286 0.276909 0.420019 0.563912 1.000971 1.135252 1.388079 1.711802 1.918572 2.573328 2.752989 0.353490 0.388981 0.807777 1.276863 1.382826 1.606736 1.810843 1.979129 2.631848 2.733152 0.211471 0.306166 0.424434 0.581123 0.710913 1.547934 2.010370 2.138366 2.380508 2.503481 0.225924 0.333197 0.488381 0.801446 1.090937 1.638206 1.799647 2.390310 2.652313 2.790138 0.171504 0.249271 0.358286 0.870885 1.550123 1.667881 2.054589 2.231743 2.439091 2.602023 0.165599 0.227318 0.460922 1.107714 1.477735 1.814994 2.062885 2.255887 2.546566 2.715347 0.204992 0.345256 0.473494 0.712728 0.805809 1.312492 1.893635 2.009686 2.341092 2.479636 0.241898 0.390228 0.537134 0.715035 1.312338 1.499876 1.662491 2.135780 2.352112 2.532228 0.163569 0.301194 0.427433 0.764441 1.375596 1.484079 1.850824 1.989487 2.494381 2.667698 0.185986 0.271128 0.421812 1.063503 1.222027 1.628289 1.811308 2.167184 2.682964 2.795197 0.202601 0.379588 0.533353 0.730653 1.060008 1.189413 1.598490 1.835597 2.061862 2.426341 0.381195 0.485776 0.727063 1.085074 1.215649 1.412868 1.615482 1.828196 2.539184 2.686523 0.196130 0.286997 0.409907 0.696364 1.424577 1.699356 1.891753 2.153448 2.327269 2.685103 0.217874 0.396132 0.938681 1.246697 1.661963 1.931349 2.246916 2.421796 2.619892 2.750931 0.145642 0.216508 0.413198 0.862759 1.057682 1.322682 1.673351 1.828806 2.347789 2.651186 0.252166 0.353210 0.523268 0.998504 1.176163 1.345135 1.984750 2.128958 2.373533 2.721309 0.207926 0.318108 0.470343 0.848345 0.989299 1.405273 1.967910 2.101386 2.512180 2.676499 0.305162 0.559986 0.771585 0.960172 1.334408 1.717417 1.924182 2.084417 2.601968 2.796124 0.215239 0.293295 0.505385 0.962671 1.240775 1.392460 1.797329 1.965379 2.131247 2.276248 0.252164 0.460717 0.585238 0.895100 1.077276 1.245603 1.770113 1.919629 2.388482 2.774345 0.171691 0.214222 0.361048 0.500619 0.905993 1.365660 2.191797 2.291635 2.536887 2.788810 0.210536 0.585917 1.067844 1.305357 1.534407 1.728603 1.950964 2.160461 2.474553 2.655915 0.169262 0.231674 0.372121 0.532093 0.775314 1.210871 1.829565 2.081870 2.370289 2.704223 0.343950 0.448128 0.628833 0.913957 1.088899 1.224316 1.766842 2.099926 2.246679 2.400841 0.241643 0.386851 0.578033 0.893447 1.284732 1.404909 1.839518 2.125416 2.327160 2.739690 0.241059 0.287428 0.601200 1.273580 1.460278 1.653802 2.095665 2.226476 2.507632 2.651598 0.212479 0.430242 0.578263 0.750884 0.984798 1.103297 1.564720 1.845357 2.044045 2.707564 0.267240 0.357278 0.901382 1.173429 1.387845 1.739763 1.960853 2.173315 2.408387 2.570937 0.216978 0.306711 0.423920 0.791397 1.547660 1.881522 2.025421 2.184747 2.389726 2.510855 0.309853 0.505477 1.137673 1.452808 1.660808 1.914525 2.084337 2.308435 2.638463 2.772736 0.301921 0.420539 0.593933 0.887576 1.158301 1.268991 1.788041 2.156468 2.316421 2.507218 0.293230 0.474574 0.623415 0.798513 1.266075 1.425523 1.764734 1.994016 2.181652 2.456787 0.267189 0.365075 0.696711 0.927891 1.096450 1.472164 1.765266 1.937224 2.223753 2.655092 0.238720 0.370663 0.617866 1.246955 1.365777 1.650640 1.856445 2.306366 2.616822 2.765237 0.175180 0.233649 0.388873 0.625509 1.137464 1.364059 1.780788 1.978889 2.142278 2.269743 0.363510 0.421032 0.668364 0.762955 0.998948 1.715897 1.877803 2.064237 2.529901 2.608567 0.207131 0.288224 0.537847 0.889921 1.241448 1.796637 1.982317 2.231362 2.514249 2.666169 0.311071 0.486542 0.911402 1.324355 1.500183 1.670614 2.142536 2.330931 2.596184 2.778564 0.286136 0.386970 0.584375 0.911705 1.134588 1.317656 1.852739 2.283740 2.498365 2.622864 0.253233 0.419082 0.572357 0.778424 1.126703 1.277532 1.807391 2.017696 2.220121 2.576306 0.119841 0.163781 0.296364 0.661342 1.063342 1.241590 1.856804 2.104475 2.497328 2.762449 0.134955 0.201314 0.403983 0.934711 1.360477 1.718449 2.065183 2.278684 2.574632 2.753186 0.187681 0.272074 0.453358 0.682207 1.079560 1.206376 1.499740 2.043148 2.242754 2.665815 0.313258 0.412019 0.658075 0.828689 0.973583 1.514446 1.981071 2.102741 2.535037 2.681357 0.255030 0.322348 0.627488 0.839253 1.410591 1.810002 2.038784 2.181294 2.416832 2.562402 0.419919 0.625767 0.997973 1.218385 1.544616 1.788193 2.193417 2.384323 2.580200 2.698287 0.144698 0.204991 0.382026 0.623303 0.874762 1.289145 1.707320 1.863261 2.458684 2.750055 0.348116 0.419496 0.704420 1.093503 1.227121 1.494841 1.778803 1.913492 2.247296 2.428664 0.150045 0.246799 0.376978 0.783403 1.269598 1.422794 1.903455 2.035588 2.514973 2.759883 0.105122 0.206614 0.753484 1.038977 1.400140 1.658373 2.030750 2.283051 2.654021 2.837336 0.192365 0.288692 0.447554 0.818792 0.961011 1.398186 1.770980 1.943311 2.350650 2.500051 0.262128 0.381361 0.574890 0.709707 1.071672 1.453038 1.732793 1.979241 2.422853 2.645439 0.182137 0.236372 0.375437 0.738739 1.319942 1.813603 1.942481 2.136125 2.304536 2.660541 0.388048 0.531674 0.948328 1.154568 1.307573 1.434685 1.768235 2.048136 2.364776 2.585037 0.213588 0.288434 0.462998 0.598306 0.773371 0.915658 1.452520 2.086025 2.523003 2.722037 0.255467 0.334344 0.621250 0.810402 0.995432 1.466371 1.709488 1.890365 2.052513 2.247982 0.202649 0.282992 0.450372 0.652595 1.271305 1.607863 1.769708 1.985229 2.230577 2.380831 0.255806 0.325628 0.668776 1.230304 1.373533 1.702388 1.962730 2.144556 2.518005 2.640112 0.164126 0.217024 0.367572 0.604779 0.787116 1.194139 1.683264 1.826517 2.301871 2.524861 0.374711 0.458954 0.726536 0.920865 1.045916 1.511231 1.712666 1.895532 2.601724 2.708894 0.321014 0.460345 0.639594 1.017667 1.508099 1.631146 1.864246 2.140150 2.327445 2.508909 0.451810 0.719234 1.150765 1.385625 1.620547 1.892342 2.068707 2.263104 2.625298 2.740266 0.317844 0.411108 0.550802 0.761160 0.870205 1.038480 1.695720 2.112903 2.292249 2.451544 0.321858 0.548379 0.720393 0.955644 1.233322 1.359795 1.685327 1.923628 2.307181 2.544584 0.211797 0.292996 0.437036 1.171159 1.397378 1.525798 1.701395 1.861517 2.572521 2.757919 0.334603 0.405956 0.767677 1.215768 1.335601 1.658739 1.989520 2.108465 2.602700 2.719250 0.236812 0.348424 0.519218 0.665697 1.102403 1.611533 1.819999 2.115185 2.332044 2.604171 0.212181 0.308266 0.480795 0.705382 0.828843 1.420354 1.886330 2.032387 2.621328 2.767098 0.156168 0.242178 0.348609 0.550072 1.486404 1.641030 1.904334 2.091753 2.439156 2.809664 0.232081 0.327237 0.817249 1.194162 1.571594 1.731682 1.910994 2.090434 2.488066 2.694976 0.166025 0.252998 0.441946 0.686509 0.905928 1.524321 1.747034 1.950457 2.619697 2.805258 0.196816 0.324035 0.613887 0.796124 1.033469 1.198765 1.570531 2.015231 2.414398 2.745220 0.152873 0.238362 0.348769 0.790622 1.413327 1.522987 1.899666 2.041945 2.648276 2.825752 0.238929 0.311579 0.412073 0.915401 1.512444 1.940985 2.178055 2.302141 2.517257 2.635463 0.160234 0.194261 0.347515 0.460654 0.859252 1.041440 1.658005 1.765106 2.252543 2.312052 0.391446 0.575762 0.767956 0.913604 1.304424 1.440779 1.667960 1.962669 2.446664 2.573637 0.213295 0.338515 0.465366 0.911020 1.312069 1.413848 1.864947 2.045811 2.354224 2.763667 0.170870 0.556857 1.036355 1.381019 1.682662 1.999979 2.319783 2.526350 2.739001 2.850764 0.208142 0.323528 0.474225 0.911543 1.048694 1.258201 1.966595 2.078676 2.553969 2.814829 0.162972 0.229629 0.731192 0.902973 1.246076 1.372954 1.693139 2.110582 2.362875 2.555643 0.197223 0.291057 0.436718 0.707631 1.251503 1.421382 1.926786 2.108784 2.413585 2.596412 0.188400 0.289822 0.797989 1.142133 1.323120 1.715797 2.074975 2.335066 2.566622 2.712846 0.176052 0.240463 0.486022 0.736587 0.983507 1.654478 1.892603 2.036521 2.205899 2.540522 0.285807 0.420951 0.578219 0.937462 1.172738 1.315248 1.698845 1.846953 2.333613 2.500319 0.191178 0.264476 0.384535 0.632084 1.446016 1.916538 2.114759 2.257365 2.532359 2.669854 0.585958 0.712547 0.995175 1.345358 1.519221 1.715374 1.913837 2.069254 2.514199 2.672046 0.232352 0.335589 0.447674 0.661655 0.840293 1.102372 2.111319 2.297768 2.505132 2.794479 0.293351 0.391184 0.614053 0.997235 1.204180 1.322845 1.746085 2.070938 2.259359 2.492199 0.128784 0.193380 0.374338 0.847941 1.107813 1.396176 1.796836 1.928700 2.389952 2.702928 0.187671 0.251167 0.419138 1.154089 1.596401 1.689187 1.941996 2.092773 2.621931 2.795923 0.148570 0.200662 0.344258 0.538968 0.866249 1.341751 1.759051 1.890255 2.225276 2.769903 0.345597 0.416970 0.657718 1.108569 1.439934 1.549124 1.811931 2.165143 2.359862 2.480281 0.260394 0.347444 0.453068 0.867942 1.515797 1.830215 1.974617 2.135238 2.518564 2.622302 0.467387 0.718460 1.257405 1.516226 1.785886 1.982028 2.277442 2.407989 2.575877 2.697560 0.254025 0.396915 0.711272 0.826708 1.079490 1.303882 1.532614 2.101023 2.580896 2.726410 0.251349 0.458227 0.691728 0.853294 1.181701 1.324576 1.553722 2.121741 2.324860 2.537399 0.193070 0.295330 0.434005 1.028433 1.180760 1.492311 1.774884 1.958905 2.378250 2.514336 0.328295 0.438707 0.672483 1.098796 1.409689 1.525062 1.957988 2.202692 2.417235 2.626557 0.171589 0.215360 0.396416 0.549523 1.010817 1.564392 1.776805 2.010598 2.334140 2.489964 0.318782 0.372964 0.715257 0.808908 1.049817 1.858174 2.008814 2.244447 2.552397 2.638023 0.201432 0.265508 0.443842 0.655062 1.463954 1.780676 1.989105 2.317647 2.504044 2.729015 0.089299 0.221502 0.866390 1.161581 1.386624 1.681219 2.037751 2.306655 2.683398 2.842046 0.212127 0.340083 0.489712 0.702958 0.879220 1.069546 1.931755 2.304789 2.539222 2.833730 0.328502 0.460793 0.574149 0.923510 1.262431 1.349319 1.540115 1.646239 1.968666 2.558808 0.151688 0.205453 0.364147 0.726598 1.290329 1.608244 1.900602 2.132843 2.473238 2.714681 0.185087 0.268618 0.380471 0.858380 1.535920 1.659732 1.871001 2.060741 2.281531 2.743722 0.257576 0.375609 0.522074 0.806014 0.988781 1.118512 1.619900 2.008108 2.189450 2.503981 0.400530 0.492365 0.729967 0.986855 1.095728 1.599909 1.935703 2.057853 2.435587 2.582604 0.223967 0.308358 0.436977 0.810278 1.375371 1.715667 1.876660 2.086799 2.333392 2.482046 0.356889 0.697785 1.003210 1.181500 1.520050 1.769174 2.060990 2.297507 2.609041 2.761196 0.157986 0.286402 0.432170 0.759718 1.081482 1.206946 1.688203 1.857653 2.667619 2.834603 0.196232 0.271155 0.616200 0.987195 1.265761 1.503484 1.745037 1.946600 2.389443 2.562468 0.150612 0.207932 0.531767 0.924718 1.224167 1.532206 1.868861 2.129974 2.479660 2.745102 0.159516 0.244552 0.677711 0.957418 1.266300 1.638493 1.929433 2.212544 2.525881 2.712593 0.311860 0.375573 0.609251 0.741478 0.874235 1.502532 1.759234 1.910133 2.346160 2.464214 0.272687 0.495052 0.602981 0.936595 1.218033 1.659652 1.783798 2.226628 2.673580 2.789721 0.182994 0.269489 0.387738 0.559582 1.343891 1.727891 1.917480 2.131703 2.353147 2.525604 0.308577 0.475904 0.797573 1.025973 1.477364 1.632200 1.868066 2.187647 2.448313 2.609309 0.206491 0.281366 0.496579 0.711998 0.842942 1.042724 1.626715 2.075674 2.411838 2.577868 0.326421 0.517351 0.715080 0.911851 1.128611 1.259596 1.539759 1.960615 2.508231 2.630330 0.225691 0.354477 0.473958 0.715802 1.385094 1.590187 1.774163 2.045280 2.231611 2.620722 0.243650 0.282149 0.801163 1.454069 1.614695 1.739741 1.936677 2.098900 2.621205 2.730598 0.175768 0.236613 0.389409 0.747034 0.946387 1.205905 1.739280 1.989798 2.245012 2.388323 0.387506 0.464495 0.740570 1.128342 1.279681 1.451771 1.809069 1.941649 2.324383 2.652406 0.231774 0.321631 0.420712 0.846725 1.477615 1.662880 1.835880 2.220722 2.418706 2.624548 0.339377 0.589871 1.313110 1.506577 1.748224 1.947324 2.102041 2.254806 2.543830 2.680043 0.341587 0.433858 0.661863 0.821397 0.950863 1.418003 1.784815 1.903400 2.385908 2.575412 0.345179 0.447774 0.612195 0.945135 1.419677 1.592743 1.773414 2.040871 2.324811 2.437686 0.181279 0.307819 0.435997 0.934515 1.100027 1.302288 1.693949 1.895047 2.700574 2.825382 0.310037 0.368350 0.622802 1.178640 1.411438 1.526484 1.919150 2.065079 2.254912 2.589937 0.150978 0.212352 0.348668 0.573651 1.039486 1.590007 1.846476 1.963984 2.148357 2.662487 0.277951 0.349703 0.550843 0.708320 0.838864 1.573740 1.810453 1.992371 2.532412 2.642545 0.153422 0.252689 0.342559 0.686894 1.497196 1.638310 1.961921 2.130271 2.557903 2.742772 0.279249 0.447383 0.763867 1.059905 1.545382 1.724231 2.031986 2.292812 2.552588 2.796233 0.230577 0.389164 0.539408 0.761297 0.908015 1.337558 1.872590 2.004078 2.333966 2.727901 0.232875 0.346443 0.540354 0.678135 1.101040 1.382052 1.587740 2.186049 2.411254 2.607361 0.178843 0.269153 0.416180 0.638286 1.259337 1.389112 1.680672 1.869557 2.418798 2.781921 0.238712 0.372837 0.675624 1.027319 1.339343 1.669807 2.074360 2.351022 2.663150 2.815245 0.215603 0.308405 0.496032 0.940314 1.090508 1.308705 1.583747 1.902325 2.209688 2.576931 0.291384 0.348946 0.780234 1.202297 1.290327 1.444813 1.575215 1.952612 2.399593 2.483613 0.198791 0.307267 0.456507 0.669854 1.275490 1.409566 1.731928 2.093564 2.326604 2.772666 0.166723 0.274518 1.057461 1.415490 1.716962 1.941408 2.139410 2.271877 2.554685 2.755174 0.179844 0.282631 0.449297 0.722971 0.854062 1.439226 1.833271 2.030343 2.411399 2.580818 0.194891 0.247057 0.501829 1.004986 1.304934 1.451918 1.799457 2.025853 2.311832 2.422165 0.192373 0.297404 0.420858 0.940309 1.303418 1.426055 1.949700 2.077238 2.623849 2.795647 0.284285 0.555560 0.869980 1.055893 1.232747 1.442851 1.823935 2.260258 2.608541 2.799256 0.182395 0.248334 0.473858 1.064734 1.236328 1.480815 1.718550 1.883271 2.073356 2.512622 0.293574 0.445666 0.581331 0.774876 0.860972 1.080798 1.894962 2.036530 2.546161 2.753034 0.164780 0.231139 0.397045 0.799136 1.184762 1.560887 2.082481 2.246203 2.538883 2.722312 0.427982 0.603539 0.920429 1.129159 1.650391 1.805433 1.997586 2.263608 2.512703 2.626448 0.168043 0.256064 0.384473 0.655220 0.888834 1.046199 1.879431 2.027056 2.416638 2.713319 0.426266 0.599810 0.770098 0.938960 1.085997 1.239035 1.780899 2.098691 2.240555 2.451170 0.206361 0.331236 0.460417 0.809533 1.319919 1.432077 1.699325 1.907851 2.185584 2.791362 0.172066 0.257009 0.693635 1.290430 1.502260 1.882174 2.058034 2.285835 2.654385 2.780637 0.170469 0.242710 0.420771 0.673196 1.013631 1.168518 1.734302 2.076408 2.284278 2.777254 0.231524 0.384268 0.762288 1.075716 1.340044 1.570221 1.844109 2.087904 2.435480 2.609095 0.234196 0.299491 0.501062 1.074183 1.591896 1.874452 2.075105 2.288231 2.499325 2.625494 0.469375 0.772069 1.143891 1.321644 1.809933 2.060553 2.352686 2.509836 2.660967 2.746296 0.267541 0.509192 0.697162 0.881682 1.154246 1.287919 1.732950 2.170277 2.373112 2.701116 0.225002 0.296925 0.521071 0.868722 1.247262 1.605607 1.862301 1.995077 2.132673 2.303312 0.182154 0.268818 0.650902 0.829595 1.340290 1.518522 1.678145 2.062000 2.476058 2.618836 0.262094 0.315377 0.554545 1.249325 1.471511 1.602479 1.859154 1.986339 2.555494 2.716803 0.159937 0.221544 0.379613 0.703404 1.009260 1.336589 1.634712 1.832112 2.318601 2.492376 0.317307 0.445696 0.644479 0.865391 1.006145 1.475121 1.860039 1.994490 2.375194 2.696675 0.243257 0.313667 0.455515 0.804455 1.138675 1.990813 2.199166 2.317604 2.528196 2.655319 0.149876 0.523035 0.850884 1.130052 1.422386 1.709616 2.052423 2.309997 2.639482 2.816247 0.295517 0.381331 0.579620 0.758901 0.871645 1.328267 1.986843 2.119635 2.549100 2.680632 0.291632 0.485587 0.631619 0.928421 1.214008 1.324041 1.814157 2.030748 2.252379 2.749354 0.139746 0.195222 0.343435 0.703664 1.118059 1.352517 1.752608 1.877596 2.297202 2.717509 0.243712 0.353375 0.585060 0.914994 1.377929 1.519246 1.980348 2.132954 2.489440 2.702636 0.176444 0.255300 0.420605 0.747448 1.153758 1.299601 1.683980 2.102983 2.463231 2.667324 0.252495 0.390591 0.697066 0.966926 1.231424 1.414479 1.867378 2.243706 2.495192 2.656606 0.272420 0.381655 0.551517 0.888825 1.590308 1.808189 1.943240 2.138959 2.358917 2.487502 0.336178 0.471630 0.935669 1.201733 1.678329 1.870851 2.098930 2.268758 2.467556 2.613989 0.201767 0.332879 0.530137 0.745363 1.051345 1.174747 1.706266 2.049544 2.461842 2.799073 0.224306 0.303901 0.510428 1.086097 1.267920 1.446573 1.785392 1.911767 2.289610 2.700286 0.131135 0.171778 0.323877 0.821611 1.226519 1.537322 1.889645 2.169879 2.520932 2.772178 0.212962 0.347455 0.744136 0.964332 1.426998 1.636084 1.937573 2.189447 2.476377 2.657238 0.221564 0.298344 0.590780 0.774362 1.002528 1.237108 1.762739 1.946722 2.225939 2.371709 0.300082 0.409111 0.600009 0.784231 0.905421 1.449797 1.878545 2.002657 2.618940 2.779774 0.177168 0.244397 0.382973 0.547832 0.958732 1.796741 2.037031 2.198241 2.416774 2.606982 0.445089 0.691608 0.911651 1.027834 1.215634 1.498612 2.011028 2.296914 2.571657 2.730890 0.218890 0.332216 0.485543 0.669862 0.827655 0.946060 1.655213 2.081780 2.297490 2.781759 0.264561 0.330768 0.698979 0.882675 1.036048 1.373216 1.608206 1.801189 2.021468 2.470223 0.198417 0.232211 0.502648 0.724700 1.196144 1.304503 1.692944 1.862228 2.327527 2.429571 0.240112 0.278797 0.513980 1.374924 1.647698 1.742378 1.988501 2.137277 2.329969 2.585200 0.216630 0.297516 0.454364 0.700613 0.893785 1.036923 1.565511 2.032201 2.301512 2.463679 0.308267 0.357421 0.811138 1.127420 1.244275 1.651427 1.813657 2.045151 2.637104 2.726842 0.242030 0.328382 0.452907 0.861731 1.555327 1.743950 1.896242 2.084827 2.255121 2.454955 0.405487 0.653274 1.000615 1.215980 1.553100 1.809940 2.090490 2.237915 2.442893 2.589896 0.258975 0.421106 0.596341 0.793521 1.016877 1.148382 1.710733 2.132131 2.329411 2.755008 0.383770 0.618549 0.792683 0.970281 1.353980 1.492209 1.740595 2.034232 2.262266 2.418759 0.182576 0.276855 0.395058 1.006542 1.378696 1.494813 1.790120 1.929259 2.427587 2.564728 0.262944 0.336362 0.560480 1.134456 1.298593 1.499501 1.953395 2.050099 2.524027 2.712280 0.128134 0.176378 0.373760 0.758708 1.132934 1.485273 1.930693 2.068716 2.343529 2.773154 0.209614 0.299558 0.469136 0.796651 0.955701 1.572224 2.012335 2.290736 2.580444 2.723601 0.205230 0.307160 0.423168 0.638468 1.376104 1.735940 1.925713 2.112538 2.470319 2.600522 0.249605 0.312259 0.801138 1.134882 1.687789 1.883222 2.049696 2.223042 2.454133 2.577341 0.150236 0.180308 0.350515 0.500915 0.804675 1.506103 1.712024 2.023875 2.343152 2.636887 0.294328 0.430367 0.587290 0.910719 1.184482 1.304216 1.581107 2.004270 2.395137 2.534772 0.185620 0.281137 0.544021 0.818067 1.320581 1.540046 1.863117 2.127465 2.523995 2.737758 0.154431 0.208321 0.340239 1.022588 1.552229 1.696583 2.198386 2.394862 2.607880 2.801047 0.172397 0.232300 0.478592 0.699642 0.957173 1.484486 1.847798 1.985936 2.145557 2.327115 0.511765 0.721492 0.860517 1.030820 1.340681 1.459390 1.823745 2.108810 2.406735 2.558400 0.281714 0.392430 0.578702 0.891995 1.494831 1.661309 1.877927 2.097376 2.291857 2.619590 0.326495 0.586450 0.954506 1.197200 1.519600 1.893887 2.319365 2.533775 2.736139 2.847582 0.106638 0.178766 0.680283 0.829053 0.990716 1.241479 1.789242 2.154750 2.597141 2.799901 0.294220 0.377984 0.793384 0.971352 1.172200 1.572398 1.804897 2.028760 2.264042 2.492483 0.171726 0.263446 0.395475 0.621988 1.267402 1.408927 1.898373 2.102150 2.426709 2.776510 0.303342 0.364222 0.792880 1.046061 1.184958 1.568551 1.760719 2.139470 2.565548 2.655674 0.192848 0.257653 0.414826 0.791829 1.260674 1.636533 1.874636 2.009896 2.202175 2.572052 0.341824 0.417968 0.655810 1.026514 1.158607 1.346654 1.798696 1.911077 2.526891 2.702043 0.176931 0.234845 0.363167 0.522327 1.394457 1.894472 2.109195 2.282625 2.684080 2.823357 0.433185 0.607432 0.929790 1.250808 1.472755 1.627281 2.014445 2.256366 2.466320 2.630010 0.211267 0.313559 0.402576 0.554601 0.723386 0.871912 1.614736 2.390825 2.565792 2.757341 0.307409 0.394557 0.612848 0.987028 1.191241 1.356915 1.954914 2.160787 2.345073 2.569786 0.184320 0.254786 0.425592 0.782972 1.223405 1.413726 1.796288 1.997325 2.163509 2.505424 0.183175 0.235186 0.358817 1.447766 1.601221 1.798948 2.134861 2.384961 2.598175 2.763819 0.168505 0.236625 0.392319 0.651410 0.887019 1.463266 1.720871 1.858740 2.054516 2.697266 0.250944 0.424982 0.901118 1.085636 1.247720 1.422572 1.835136 2.141276 2.468994 2.643082 0.238593 0.326384 0.595703 0.813678 1.506809 1.745897 1.890343 2.252317 2.461518 2.634033 0.519767 0.866690 1.252206 1.413883 1.854974 2.027801 2.281339 2.431268 2.597701 2.697588 0.246522 0.333214 0.509160 1.154104 1.290713 1.443135 1.588080 2.324589 2.609196 2.797383 0.275391 0.402140 0.584019 0.959905 1.333760 1.460912 1.827046 2.003725 2.436316 2.639286 0.150522 0.212041 0.531410 1.050416 1.371279 1.580851 1.792845 1.995166 2.294940 2.614257 0.278576 0.329548 0.667074 1.214075 1.560713 1.652347 1.873746 2.021113 2.338907 2.664300 0.167863 0.226536 0.396757 0.597846 1.051873 1.627164 1.958256 2.062767 2.191380 2.432992 0.348666 0.407399 0.764654 0.897788 1.054142 1.537316 1.689159 2.089782 2.640438 2.728359 0.171013 0.243044 0.356522 0.490258 1.359997 1.815025 1.981484 2.206887 2.431276 2.636843 0.153522 0.396506 0.847453 1.284564 1.488783 1.804268 2.273812 2.522892 2.761823 2.876763 0.171880 0.287093 0.496257 0.755483 0.937035 1.107577 1.897834 2.108945 2.413154 2.660532 0.227201 0.370270 0.530492 0.844519 1.174595 1.296373 1.718215 1.907170 2.166590 2.484352 0.149331 0.183437 0.326162 0.488638 1.002939 1.377342 1.867235 2.108546 2.503408 2.786207 0.173193 0.266920 0.374287 0.945263 1.452229 1.556781 1.952554 2.099249 2.609846 2.766646 0.239351 0.413047 0.605130 0.721419 1.069987 1.322991 1.500901 2.100747 2.338950 2.541476 0.314543 0.427272 0.646059 0.977969 1.105555 1.443778 1.949196 2.065960 2.472020 2.663676 0.306321 0.430910 0.620780 0.848250 1.324991 1.683308 1.879595 2.069502 2.344394 2.454817 0.575586 0.847570 1.152532 1.423138 1.684099 1.969479 2.240224 2.428206 2.665523 2.760463 0.350078 0.450964 0.688480 0.893082 1.035498 1.299152 1.508386 1.683054 2.499108 2.655705 0.471148 0.571022 0.813000 1.058092 1.196537 1.491163 1.831861 1.956586 2.408824 2.619234 0.171564 0.273430 0.738762 0.920791 1.183470 1.349450 1.890642 2.110332 2.341546 2.722247 0.304218 0.440526 0.720869 0.956392 1.296296 1.536912 1.798491 2.129943 2.470933 2.711029 0.208585 0.283203 0.713164 0.859752 1.075018 1.320232 1.749308 2.009905 2.348887 2.539152 0.264896 0.431760 0.680060 0.840630 1.005182 1.200071 1.639044 1.877513 2.579690 2.697610 0.171107 0.229447 0.393985 0.553918 1.187522 1.583641 1.829031 2.101558 2.437468 2.610652 0.301877 0.445169 0.968634 1.180258 1.415638 1.646629 1.953737 2.185760 2.483000 2.660034 0.267959 0.387016 0.557674 0.755435 1.057021 1.189525 1.629581 2.283668 2.558077 2.683573 0.295624 0.500278 0.696740 0.866240 1.099396 1.243691 1.449224 1.818732 2.156886 2.467455 0.170796 0.218503 0.382819 0.541542 1.174040 1.482773 1.670539 2.124357 2.342810 2.501870 0.218617 0.408868 1.012231 1.352073 1.571864 1.753294 1.946988 2.192205 2.547198 2.762737 0.210391 0.288701 0.475984 0.690054 0.862131 1.282021 1.715676 1.959037 2.326017 2.522621 0.325276 0.411256 0.607216 1.024267 1.146043 1.558528 1.827982 1.956178 2.547484 2.688731 0.238733 0.302603 0.642540 0.860406 1.382580 1.700239 1.853297 2.013606 2.539089 2.671372 0.251458 0.654734 1.143938 1.335095 1.596794 1.905380 2.171292 2.352561 2.549262 2.709208 0.223912 0.427965 0.590260 0.805826 0.965451 1.148957 1.600066 1.767416 2.589376 2.776857 0.231425 0.413483 0.638906 0.882586 1.449203 1.579707 1.859705 2.112105 2.296389 2.474881 0.175747 0.273698 0.397808 1.029989 1.240179 1.441564 1.858169 1.988257 2.524452 2.677832 0.252558 0.363162 0.974161 1.201176 1.356803 1.559352 1.792123 2.089122 2.459025 2.636551 0.173802 0.246852 0.480971 0.700611 0.891748 1.561958 1.823062 1.996221 2.202269 2.680874 0.156459 0.259855 0.526047 0.742605 0.958340 1.426445 1.896392 2.280343 2.683239 2.835947 0.142921 0.202788 0.307634 0.548822 1.431571 1.572303 1.984312 2.212223 2.639484 2.831017 0.229329 0.366711 0.836992 1.135952 1.499118 1.677865 2.047730 2.243207 2.553663 2.706012 0.263443 0.342499 0.477117 0.660406 0.787355 1.288964 1.851275 2.320384 2.518393 2.638003 0.212725 0.343388 0.492706 0.738769 1.226813 1.353718 1.598551 1.965475 2.110981 2.504476 0.160187 0.263690 0.362021 0.839661 1.356922 1.457150 1.769821 1.888317 2.678737 2.835838 0.133248 0.196263 0.549077 0.905288 1.338934 1.580432 1.965798 2.247794 2.613434 2.821093 0.239176 0.349470 0.587777 0.780748 0.980439 1.200381 1.437420 1.725392 2.240059 2.450024 0.360450 0.512584 0.678578 0.889177 1.014277 1.240800 1.650560 1.806004 2.370762 2.627783 0.207946 0.300178 0.419389 0.758257 1.373065 1.509366 1.798146 2.166289 2.334602 2.736094 0.113082 0.204024 0.875013 1.243194 1.622958 1.886831 2.142636 2.338959 2.579123 2.767029 0.204623 0.309091 0.441874 0.966890 1.231677 1.366805 1.580086 1.745147 2.374530 2.638283 0.306051 0.414526 0.628201 1.074722 1.259864 1.439108 1.821360 1.964678 2.394043 2.575006 0.222328 0.323754 0.568002 0.970977 1.120920 1.580969 1.759222 2.139577 2.608362 2.763997 0.183300 0.372397 0.683079 1.022379 1.330137 1.624137 1.951990 2.252475 2.602804 2.814906 0.178777 0.259371 0.411261 0.873219 1.178107 1.319602 1.632433 1.885996 2.112106 2.286708 0.195172 0.346190 0.497154 0.755965 1.230183 1.347062 1.685780 1.867553 2.329508 2.752389 0.195738 0.263473 0.396445 0.598238 1.275429 1.903330 2.156978 2.286654 2.571493 2.728101 0.369955 0.545605 1.042124 1.189996 1.350332 1.546670 1.867983 2.111160 2.467785 2.643118 0.120478 0.160718 0.275169 0.491413 0.821334 1.099250 1.777446 1.936945 2.424408 2.722251 0.312690 0.451099 0.623388 0.828741 0.993468 1.136473 1.649831 1.980283 2.173337 2.352824 0.243020 0.364104 0.491726 0.944543 1.131493 1.302149 1.857127 1.973690 2.400218 2.803623 0.193524 0.259253 0.688441 1.340521 1.671654 1.914554 2.135144 2.313920 2.516303 2.683437 0.232326 0.387947 0.503848 0.715456 0.874078 1.042221 1.733322 1.898809 2.239800 2.752745 0.127511 0.344390 0.935547 1.175974 1.388543 1.630551 1.946941 2.245394 2.574897 2.775392 0.250995 0.323646 0.441648 0.957645 1.547323 1.747938 1.902388 2.157859 2.364221 2.510959 0.452291 0.693622 1.167859 1.318220 1.723133 1.940224 2.173724 2.424464 2.649258 2.755778 0.302326 0.431401 0.690302 0.950763 1.203250 1.329801 1.782387 2.179065 2.423352 2.542775 0.355954 0.504290 0.646021 0.864339 1.352328 1.533661 1.709471 1.960437 2.313335 2.451721 0.104149 0.152699 0.587242 0.903889 1.183253 1.432120 1.706576 1.956497 2.205742 2.655087 0.214047 0.281655 0.457781 1.318444 1.423722 1.610884 1.738687 2.315997 2.544975 2.780560 0.182527 0.232898 0.390991 0.554764 1.219695 1.416974 1.668180 1.883510 2.094564 2.216562 0.338387 0.409542 0.641629 0.767246 1.002251 1.650238 1.882942 2.041315 2.327004 2.467281 0.231453 0.309431 0.647883 0.827408 1.212245 1.724138 1.934800 2.138651 2.400716 2.581201 0.251173 0.509839 0.868347 1.305335 1.478259 1.819818 2.046666 2.383549 2.753204 2.859247 0.285117 0.362320 0.652022 0.913386 1.044703 1.289808 1.899468 2.119379 2.316214 2.520072 0.308945 0.404194 0.607700 0.785461 0.897492 1.263812 1.840947 1.995191 2.217981 2.533953 0.172631 0.233496 0.395828 0.637121 1.094870 1.305225 1.975991 2.149162 2.425342 2.614303 0.156972 0.227094 0.399128 1.055061 1.517113 1.669668 2.078208 2.233434 2.697606 2.846463 0.173100 0.226252 0.408500 0.582801 1.098220 1.450523 1.627000 2.016222 2.249189 2.498326 0.315638 0.497823 0.661879 0.886266 0.997659 1.195049 2.020156 2.258426 2.523904 2.750360 0.271575 0.365793 0.531980 0.808835 1.273952 1.739663 1.983593 2.133546 2.348498 2.473697 0.309045 0.513620 0.898951 1.324674 1.639949 1.904400 2.137826 2.348142 2.582366 2.748999 0.173271 0.315218 0.477788 0.757177 0.875942 1.105511 1.237776 1.628886 2.684859 2.842014 0.214839 0.273034 0.819191 1.102040 1.352164 1.657619 1.843619 1.972455 2.148374 2.639406 0.116215 0.162407 0.342715 0.825790 1.042936 1.381631 1.804365 2.083780 2.487045 2.753736 0.114070 0.425427 0.799793 1.070942 1.370278 1.618583 1.941131 2.202718 2.530097 2.788603 0.243867 0.378883 0.547723 0.808932 1.239737 1.400240 1.860324 2.069002 2.263329 2.534065 0.240195 0.333936 0.487895 0.915142 1.015549 1.511986 1.689823 2.078568 2.520731 2.673842 0.243495 0.327973 0.505429 0.651882 1.068591 1.611267 2.012066 2.161812 2.523348 2.687469 0.450190 0.521168 0.921017 1.146167 1.266402 1.657642 1.864716 2.036294 2.463023 2.557702 0.168729 0.270636 0.453713 0.701140 0.915560 1.098438 1.604334 1.960600 2.637718 2.809070 0.285452 0.345925 0.683009 1.127133 1.267180 1.493486 1.729244 1.897942 2.101957 2.279775 0.197911 0.283257 0.436315 0.680443 1.328944 1.456235 1.789607 2.073798 2.297794 2.442548 0.240843 0.293460 0.653007 1.222875 1.575683 1.682154 1.863647 2.019866 2.562349 2.730154 0.175191 0.254744 0.507483 0.660774 1.010367 1.200881 1.595444 1.912422 2.384227 2.758183 0.433781 0.510463 0.720856 1.101334 1.226464 1.443652 1.812748 1.957333 2.487847 2.673719 0.221585 0.287234 0.682977 1.068491 1.562962 1.716402 1.897843 2.129521 2.335900 2.524987 0.432705 0.840501 1.285672 1.439193 1.607667 1.795398 2.063813 2.311674 2.563015 2.711062 0.354576 0.466602 0.650767 0.813566 0.938340 1.128342 1.805345 2.218869 2.395036 2.543280 0.353822 0.544418 0.717185 0.903075 1.193814 1.302618 1.592775 1.928464 2.123197 2.300791 0.232127 0.335542 0.466150 1.038780 1.385075 1.474844 1.919673 2.031739 2.495480 2.805573 0.324665 0.377060 0.695910 1.283924 1.443588 1.596523 2.037150 2.169899 2.487425 2.691252 0.178303 0.236258 0.409957 0.644793 0.991558 1.439340 1.644055 2.056081 2.477767 2.606365 0.284645 0.347903 0.527540 0.667977 0.816156 1.687403 1.948029 2.113140 2.519425 2.617605 0.169782 0.245851 0.359543 0.504529 1.401427 1.633494 1.805664 2.181529 2.362061 2.647147 0.210292 0.309966 0.666265 1.086214 1.491332 1.862248 2.127350 2.359368 2.574699 2.710415 0.176920 0.247329 0.439418 0.634764 0.868848 1.346770 1.668256 2.024234 2.456935 2.792061 0.291292 0.461927 0.673858 0.827395 1.001436 1.123471 1.600221 2.273412 2.437555 2.642259 0.164460 0.272259 0.374336 0.675110 1.490030 1.612152 1.836475 1.984289 2.535905 2.742055 0.207858 0.272302 0.418159 0.745538 1.629583 1.981417 2.127840 2.293577 2.578197 2.705476 -0.062228 -0.323076 -0.332711 -0.101708 -0.034218 -0.067730 -0.032006 -0.034055 -0.063661 -0.112308 0.471805 0.655978 0.860725 0.972051 1.153458 1.409133 1.784627 2.073639 2.494294 2.661139 0.180954 0.273084 0.389972 0.849113 1.392936 1.510894 1.921378 2.096123 2.378596 2.651504 0.225545 0.488038 0.863470 1.410418 1.596034 1.771648 2.216348 2.386984 2.715102 2.839389 0.144776 0.247942 0.381281 0.699264 1.145490 1.295150 1.800737 2.008105 2.629862 2.826194 0.184806 0.248115 0.690786 0.828582 1.321220 1.503651 1.718611 2.087128 2.314827 2.538325 0.177133 0.339599 0.481545 0.790062 1.227237 1.348197 1.883037 2.021486 2.441350 2.699083 0.311370 0.368740 0.858970 1.014739 1.208416 1.746055 1.924647 2.151463 2.415915 2.560580 0.199710 0.264710 0.470506 0.794534 1.118412 1.570882 1.812521 1.939545 2.110880 2.373289 0.350635 0.482066 0.710421 0.960792 1.103058 1.325978 1.913082 2.069461 2.404068 2.662115 0.186366 0.241536 0.381062 0.517738 1.497745 1.924116 2.070412 2.234108 2.608905 2.750199 0.509032 0.734852 0.927875 1.145398 1.394132 1.611867 1.956418 2.176366 2.420236 2.596717 0.201922 0.299074 0.414361 0.597667 0.721234 0.975702 1.929938 2.144210 2.650822 2.846817 0.249810 0.373368 0.691262 0.918023 1.296625 1.472578 1.881052 2.160262 2.404070 2.576539 0.136751 0.198997 0.351968 0.839701 1.241879 1.397675 1.739341 1.946552 2.247675 2.676990 0.215765 0.277228 0.527200 1.277413 1.507933 1.677635 2.048299 2.207947 2.614490 2.774622 0.146093 0.199242 0.331057 0.518068 0.983944 1.184948 1.769667 1.933330 2.116265 2.713820 0.311505 0.400669 0.630844 1.132601 1.442876 1.558170 1.906709 2.045975 2.419754 2.659979 0.328470 0.401583 0.615037 0.993895 1.574441 1.869936 2.011558 2.184989 2.467408 2.581751 0.463865 0.687911 1.294672 1.536811 1.700885 1.872005 2.174049 2.341841 2.576782 2.729884 0.225601 0.311949 0.558510 0.720660 1.176452 1.364036 1.558010 2.010565 2.645874 2.801078 0.300116 0.554320 0.704246 0.926026 1.318277 1.422364 1.788571 2.123745 2.298732 2.683560 0.217312 0.342834 0.505628 0.885611 1.036468 1.281361 1.711880 1.931222 2.475950 2.632713 0.235789 0.329023 0.515572 1.047927 1.413696 1.546519 1.893021 2.099995 2.430834 2.628838 0.170354 0.225158 0.395611 0.654515 1.106878 1.458362 1.794475 2.012486 2.334320 2.553665 0.420377 0.492906 0.763825 0.888793 1.057272 1.729447 1.982471 2.145245 2.614874 2.700457 0.227828 0.299193 0.480966 0.855216 1.663391 1.817425 2.035090 2.237723 2.436081 2.645378 0.104919 0.220297 0.922747 1.248851 1.468985 1.845122 2.172923 2.471447 2.702677 2.827250 0.245660 0.363951 0.496495 0.718395 0.792531 1.188290 2.028262 2.148021 2.601079 2.767886 0.204949 0.323637 0.501508 0.803477 1.101494 1.228773 1.446609 1.596114 1.975723 2.669065 0.162963 0.221990 0.366143 0.569144 1.300415 1.508941 1.736879 2.176494 2.560640 2.781882 0.226216 0.303208 0.451507 0.942554 1.584997 1.708649 1.937744 2.125981 2.374113 2.806697 0.279313 0.434425 0.600140 0.761924 0.967326 1.085339 1.400649 2.085299 2.311823 2.531842 0.496970 0.611003 0.813504 1.003786 1.112345 1.561294 2.006644 2.127810 2.538433 2.707483 0.263598 0.399612 0.523023 0.751894 1.468733 1.634563 1.854672 2.093993 2.288808 2.486320 0.447064 0.669729 1.231144 1.393911 1.519359 1.740011 2.130839 2.331661 2.622426 2.742410 0.217113 0.344226 0.479443 0.953089 1.113345 1.292028 1.405063 2.035854 2.706084 2.818154 0.215666 0.346628 0.459806 0.841338 1.330315 1.450787 1.693170 1.963290 2.133067 2.598851 0.032462 0.108906 0.641839 0.918247 1.274605 1.548613 1.860118 2.149524 2.473967 2.745703 0.126290 0.220180 0.749275 1.069688 1.256552 1.502364 1.780350 2.049865 2.514790 2.760101 0.201396 0.256212 0.604955 0.839430 1.037016 1.425915 1.784411 2.082149 2.278545 2.520697 0.250554 0.361913 0.538203 1.009347 1.125631 1.467374 1.842276 1.982168 2.659098 2.812528 0.173329 0.232821 0.397105 0.674759 1.272214 1.578849 1.859567 2.046929 2.368178 2.523695 0.361106 0.495511 0.860190 1.082212 1.386309 1.580348 1.935833 2.155852 2.453898 2.622802 0.232936 0.346360 0.515455 0.716889 0.946937 1.062494 1.542360 2.240413 2.402681 2.639495 0.329138 0.483393 0.640612 0.860349 1.191888 1.297933 1.656172 2.079184 2.298135 2.457837 0.238706 0.397136 0.560834 0.799404 1.288560 1.405264 1.678272 2.182520 2.375152 2.668620 0.304175 0.364112 0.779173 1.338909 1.476173 1.664278 1.993154 2.118992 2.593337 2.731349 0.164802 0.217347 0.366682 0.565116 0.753855 1.009701 1.744416 2.023924 2.268955 2.433440 0.296797 0.356308 0.759995 1.197140 1.309824 1.482490 1.667647 1.840314 2.517650 2.648945 0.273443 0.411365 0.594999 0.894650 1.424021 1.586944 1.842399 2.215251 2.447173 2.729450 0.236751 0.360177 1.030195 1.434197 1.683780 1.888286 2.114605 2.264435 2.477029 2.630414 0.273289 0.394610 0.610213 0.759723 0.937713 1.239572 1.713796 1.995028 2.367774 2.635783 0.334115 0.411443 0.610825 0.955868 1.502521 1.785262 1.937709 2.105790 2.350122 2.470200 0.159072 0.242631 0.393231 0.844130 1.217685 1.419823 1.733096 1.891617 2.514256 2.659089 0.309184 0.361119 0.759243 1.263501 1.440575 1.570597 1.821846 1.944982 2.440271 2.684484 0.161993 0.224640 0.401324 0.753906 1.032749 1.440682 1.809558 1.978594 2.149676 2.538575 0.247815 0.331789 0.491727 0.713759 0.865824 1.618286 1.768016 2.244205 2.532077 2.684242 0.170605 0.248525 0.354505 0.495374 1.569514 1.828195 1.990227 2.213056 2.400769 2.760431 0.331931 0.515143 0.809566 1.042681 1.451957 1.638579 1.956390 2.262500 2.598192 2.813680 0.209020 0.349585 0.505601 0.704594 0.814790 1.362447 1.939075 2.048582 2.423957 2.756261 0.281207 0.453713 0.595485 0.765529 1.220000 1.391996 1.561764 2.022289 2.265860 2.679768 0.150346 0.251592 0.409505 0.770775 1.236125 1.384343 1.745495 1.893299 2.588497 2.822991 0.161090 0.246862 0.484826 1.245783 1.397859 1.714145 2.040802 2.468857 2.706233 2.837580 0.213765 0.374235 0.536566 0.733390 1.126324 1.249567 1.538484 1.976391 2.151928 2.359273 0.272518 0.457655 0.808972 1.019104 1.150011 1.326035 1.711513 2.051136 2.549677 2.799790 0.179767 0.262954 0.395346 0.660835 1.345694 1.502264 1.819384 1.963548 2.273263 2.618778 0.175488 0.306329 1.103215 1.306099 1.574389 1.897560 2.214935 2.416432 2.605393 2.738739 0.154666 0.239592 0.415828 0.780679 0.945224 1.233384 1.696039 1.940742 2.514563 2.679770 0.269177 0.354740 0.557021 0.969509 1.345317 1.463570 1.798387 2.241221 2.456339 2.610210 0.239145 0.326264 0.494465 1.071214 1.209459 1.537726 1.952743 2.113220 2.610725 2.747535 0.218208 0.598959 0.871276 1.110151 1.386993 1.648655 1.918609 2.193362 2.546880 2.756671 0.176681 0.262087 0.424568 0.933283 1.208095 1.334188 1.755633 1.926341 2.187131 2.556577 0.213062 0.385248 0.514741 0.876978 1.165897 1.307493 1.825031 2.012224 2.554948 2.737931 0.151222 0.247007 0.382114 0.751657 1.215610 1.342363 1.975904 2.137584 2.617134 2.820105 0.299224 0.473356 0.825171 1.146594 1.528401 1.694234 1.952214 2.144722 2.373789 2.555562 0.207137 0.319897 0.501670 0.711149 0.853927 1.057889 1.770494 2.071726 2.492216 2.811033 0.465560 0.618831 0.782398 1.010037 1.195984 1.322540 1.855998 2.160517 2.324801 2.507033 0.201076 0.301843 0.444311 0.822638 1.176021 1.272371 1.646433 2.064560 2.227727 2.623829 0.210505 0.247037 0.495092 1.302518 1.760886 1.827284 2.217044 2.446377 2.623543 2.741148 0.195999 0.279369 0.481573 0.654787 1.080842 1.412382 1.716490 2.052322 2.290101 2.738165 0.236926 0.310814 0.896361 1.162180 1.328092 1.558913 1.774564 1.905228 2.402246 2.665023 0.244472 0.327963 0.646896 1.095894 1.620412 1.772324 2.045520 2.193957 2.547128 2.722609 0.346731 0.581380 1.070375 1.522205 1.740223 1.980572 2.266647 2.404418 2.746561 2.871000 0.430698 0.619190 0.836877 1.015020 1.167909 1.332640 1.815328 2.234722 2.476070 2.638178 0.221367 0.307079 0.458329 0.850712 1.289560 1.423009 1.621570 1.985342 2.331434 2.467832 0.116322 0.217253 0.728326 0.940859 1.188330 1.378722 1.687841 1.910693 2.604869 2.797202 0.187928 0.267923 0.389066 1.155944 1.483571 1.593699 1.818241 1.963936 2.473096 2.607548 0.168954 0.211406 0.372427 0.529448 0.973588 1.431171 1.621558 1.856431 2.189298 2.343881 0.273371 0.413963 0.664359 0.794553 1.017733 1.399395 1.724746 2.089838 2.367948 2.555808 0.212416 0.270112 0.509967 0.759092 1.293781 1.781086 2.091445 2.219374 2.499069 2.630826 0.300696 0.481937 0.835784 1.276211 1.461493 1.644316 1.971697 2.234847 2.641035 2.829278 0.285091 0.416886 0.605330 0.808172 0.944872 1.129570 1.919248 2.157389 2.400226 2.673656 0.225704 0.384656 0.630586 0.788196 1.224861 1.419420 1.681321 1.970805 2.212616 2.617121 0.132447 0.177755 0.301537 0.471768 1.155148 1.332095 1.708466 2.024543 2.495585 2.788666 0.252038 0.329800 0.481080 0.954609 1.422083 1.620359 2.006123 2.168392 2.355165 2.505083 0.183435 0.241389 0.417674 0.598794 1.014975 1.205139 1.701958 1.977784 2.374336 2.586101 0.302192 0.384974 0.608153 0.938510 1.084287 1.329203 2.069641 2.319152 2.494203 2.675684 0.198808 0.281220 0.391748 0.777377 1.553382 1.790825 1.925301 2.135471 2.304278 2.485154 0.370469 0.548730 0.880131 1.168541 1.456674 1.645880 2.049941 2.288441 2.557653 2.759821 0.156583 0.250724 0.394960 0.691089 0.837322 1.066297 1.836287 1.972838 2.591097 2.786561 0.322824 0.379018 0.593081 1.086011 1.406693 1.490406 1.734998 1.912817 2.081717 2.475586 0.158775 0.218842 0.457222 0.869711 1.219773 1.629722 1.953462 2.134004 2.392326 2.640093 0.217524 0.325911 0.628615 0.997991 1.504329 1.668932 1.958103 2.245372 2.630371 2.808323 0.170343 0.254286 0.510717 0.814297 1.028209 1.355930 1.726583 2.047676 2.381522 2.692279 0.297689 0.343194 0.742306 0.882638 1.038877 1.713935 1.880819 2.088189 2.556386 2.634265 0.215251 0.296748 0.454072 0.676499 1.007705 1.797713 2.004948 2.206914 2.548819 2.725676 0.412021 0.642343 0.828334 0.951784 1.236305 1.495649 1.898175 2.129486 2.438961 2.666301 0.179065 0.252377 0.372814 0.530815 0.713797 0.927597 1.666069 2.104770 2.392383 2.734423 0.433130 0.566964 0.740476 0.961675 1.107074 1.288034 1.772074 1.904854 2.174689 2.570674 0.223409 0.295735 0.606368 0.786946 1.326960 1.538874 1.755901 1.939986 2.371080 2.488210 0.224170 0.294402 0.684662 1.251045 1.593460 1.708681 2.018073 2.187551 2.515208 2.721384 0.166379 0.238226 0.406222 0.623445 0.883761 1.076979 1.603102 1.916054 2.202559 2.699771 0.489484 0.578385 0.832748 1.115430 1.216650 1.575882 1.929300 2.049396 2.522680 2.658393 0.291742 0.359710 0.491711 1.071820 1.458792 1.603219 1.747893 2.124226 2.418190 2.528558 0.438848 0.678792 1.139964 1.311051 1.673038 1.878533 2.126488 2.288717 2.493483 2.631731 0.271300 0.466760 0.592041 0.808897 0.942888 1.124238 1.820005 1.976080 2.249710 2.775433 0.389199 0.559773 0.703683 0.900063 1.345064 1.462662 1.769904 2.128433 2.365683 2.501187 0.190440 0.280423 0.447001 1.039189 1.218375 1.614861 1.844728 2.111340 2.460942 2.613396 0.241700 0.302019 0.613366 1.249946 1.410607 1.580256 1.768325 1.986861 2.430632 2.581026 0.206516 0.286418 0.537788 0.707728 1.197196 1.572380 1.755394 1.933391 2.472918 2.645023 0.318502 0.396523 0.647544 0.775364 0.936563 1.581584 2.058082 2.195477 2.618710 2.743108 0.191584 0.269771 0.414492 0.786131 1.376273 1.613474 1.799398 2.344394 2.536806 2.749566 0.237976 0.316356 0.446480 0.893873 1.679975 1.965388 2.096434 2.252618 2.468845 2.587829 0.123845 0.159072 0.284123 0.467782 0.818151 1.307335 1.754936 2.066298 2.476057 2.758144 0.261052 0.393384 0.760978 0.918516 1.100980 1.327690 1.632686 2.033602 2.384945 2.554088 0.264436 0.350588 0.609731 0.749716 1.157992 1.660102 1.868180 2.004961 2.591971 2.739458 0.164585 0.215089 0.375970 0.959153 1.727354 1.859913 1.991898 2.220550 2.431018 2.769731 0.204030 0.290606 0.483834 0.827022 1.016831 1.223453 1.699260 1.910125 2.140620 2.267503 0.526138 0.709922 0.836725 1.069406 1.269462 1.405044 1.834798 2.034524 2.212188 2.459999 0.225247 0.340174 0.449473 0.914306 1.380619 1.486761 1.795410 1.983939 2.206215 2.713630 0.200753 0.622848 0.941841 1.226624 1.507543 1.821962 2.134104 2.366417 2.634739 2.771988 0.174703 0.282776 0.702258 0.898342 1.084446 1.266724 1.757851 2.083739 2.401420 2.756275 0.249131 0.323445 0.720321 0.878509 1.110362 1.576682 1.865315 2.114744 2.387200 2.528666 0.192991 0.271656 0.400815 0.639719 1.281970 1.423380 2.050229 2.264541 2.462010 2.662504 0.266874 0.325220 0.675228 1.126545 1.267438 1.706113 1.920856 2.125988 2.574605 2.678193 0.223081 0.286041 0.655976 0.816840 1.060069 1.561164 1.748293 1.911129 2.075313 2.503462 0.407716 0.515541 0.739241 0.941291 1.059746 1.404674 1.781339 1.892197 2.404849 2.648290 0.240599 0.312213 0.510661 0.666324 1.224803 1.866233 2.050438 2.204639 2.619539 2.768546 0.384825 0.587577 1.021218 1.214225 1.437340 1.728676 1.998469 2.183120 2.571593 2.747573 0.245764 0.343500 0.509527 0.727872 0.876936 1.024899 1.769731 2.415709 2.632816 2.787619 0.290619 0.390761 0.566531 0.941586 1.353924 1.461037 1.795546 2.132642 2.313283 2.486608 0.172727 0.258217 0.438312 0.716613 1.170907 1.311367 1.733515 1.899224 2.138675 2.739799 0.222657 0.287215 0.449779 1.369666 1.490501 1.701894 1.880425 2.393512 2.600773 2.787142 0.154428 0.222305 0.357310 0.630820 1.037882 1.342771 1.730454 1.920364 2.046990 2.549536 0.299554 0.623129 0.825895 1.063948 1.332600 1.466624 1.854370 2.128982 2.327186 2.521370 0.218073 0.257913 0.681337 0.900215 1.517137 1.843444 2.006541 2.205575 2.505616 2.633109 0.686321 1.027088 1.182402 1.346554 1.590920 1.854772 2.111571 2.250916 2.482490 2.625270 0.220174 0.305579 0.452469 1.009178 1.208905 1.586079 1.726183 2.308495 2.539415 2.745570 0.341504 0.508703 0.663379 0.854389 1.270406 1.419250 1.624925 2.064447 2.426578 2.552193 0.199767 0.277559 0.419200 1.151687 1.302355 1.531961 1.720872 2.013206 2.476765 2.595851 0.243094 0.314600 0.435247 1.051642 1.528616 1.656151 1.884292 2.065968 2.307851 2.563448 0.224054 0.300322 0.546545 0.706978 1.059557 1.412749 1.925773 2.119205 2.355100 2.490204 0.342948 0.395972 0.713508 0.788514 1.092279 1.685316 1.836105 2.270695 2.521777 2.625975 0.183089 0.263605 0.369340 0.558240 1.511750 1.902656 2.045224 2.218195 2.445586 2.611569 0.332871 0.558850 0.877672 1.147342 1.590679 1.823730 2.184823 2.407743 2.721120 2.860996 0.228040 0.355308 0.498081 0.818616 1.098234 1.212951 1.802644 2.085736 2.290465 2.748208 0.189112 0.289591 0.530362 0.768658 0.944224 1.325806 1.678253 1.884531 2.251127 2.682120 0.144799 0.199748 0.350015 0.546248 1.106050 1.629785 1.884696 2.005826 2.432189 2.780747 0.172297 0.243074 0.380863 0.968654 1.645970 1.743664 1.952788 2.092464 2.574491 2.809210 0.220791 0.397930 0.676300 0.814804 1.085618 1.265955 1.557093 1.974461 2.157493 2.568431 0.351036 0.481040 0.684693 1.046142 1.219179 1.404440 1.909685 2.051432 2.405205 2.669908 0.255837 0.394071 0.518620 0.767306 1.393237 1.618907 1.766511 2.022002 2.425935 2.559548 0.418747 0.617245 1.109151 1.299581 1.560582 1.912698 2.151587 2.420609 2.666448 2.766110 0.194318 0.321980 0.488422 0.733153 0.927489 1.091432 1.537804 1.709529 2.300954 2.777973 0.441506 0.552407 0.771304 1.070023 1.253431 1.402955 1.774359 1.917186 2.236828 2.573015 0.096364 0.161493 0.604211 0.841192 1.084960 1.469012 1.765762 2.035652 2.415550 2.679394 0.164758 0.273531 0.786362 0.944165 1.314729 1.443079 1.820614 2.232970 2.474360 2.689648 0.214880 0.277389 0.624783 0.819250 1.049581 1.383136 1.664426 1.809937 2.247050 2.531672 0.339450 0.490710 0.650894 0.802164 0.968459 1.286294 1.736119 2.108232 2.488573 2.676959 0.173316 0.243343 0.367127 0.508577 1.224968 1.826439 1.981666 2.158278 2.351480 2.588130 0.452858 0.676518 0.916839 1.095033 1.353796 1.666215 1.906615 2.097253 2.478402 2.671285 0.255572 0.430173 0.627154 0.845685 1.029142 1.165075 1.851297 2.238290 2.425106 2.786559 0.292973 0.495593 0.670882 0.825200 1.176688 1.345844 1.524943 1.905429 2.293155 2.481585 0.190065 0.270578 0.429350 0.650608 1.338108 1.544596 1.723081 2.100587 2.455792 2.616187 0.270146 0.357004 1.012493 1.334770 1.484494 1.749118 1.948371 2.163260 2.479187 2.615849 0.190746 0.284342 0.459935 0.840326 1.058271 1.247416 1.686518 1.858042 2.349852 2.474999 0.261440 0.355783 0.788131 0.963975 1.170960 1.426067 1.663365 1.845513 2.450110 2.615423 0.223477 0.289406 0.644196 0.841108 1.449672 1.680461 1.864688 1.970082 2.320400 2.678113 0.307863 0.471864 0.951274 1.401941 1.598874 1.839736 2.064310 2.222939 2.646039 2.793416 0.215456 0.324380 0.542457 0.738120 0.904477 1.125488 1.593790 1.942637 2.403731 2.625335 0.327978 0.431326 0.649146 0.980387 1.452639 1.595021 1.827042 2.174676 2.430383 2.562971 0.221416 0.405136 0.534878 0.941825 1.275052 1.387146 1.678769 1.816890 2.607600 2.805074 0.261063 0.296006 0.765065 1.323946 1.455938 1.597320 1.755333 1.939918 2.595321 2.725885 0.196465 0.266597 0.478088 0.673695 0.918173 1.783876 1.968005 2.144556 2.340807 2.571099 0.222072 0.329556 0.457488 0.632821 0.926941 1.737060 1.925589 2.280188 2.742106 2.840767 0.177587 0.262768 0.386637 0.661755 1.507334 1.651771 2.016609 2.209898 2.436253 2.794750 0.237412 0.318760 0.572489 1.126672 1.262629 1.705670 1.962639 2.240223 2.640836 2.760043 0.164018 0.263560 0.389157 0.576607 0.699517 1.304965 1.938275 2.108181 2.361245 2.481099 0.312927 0.453499 0.595937 0.720801 1.155128 1.421222 1.654805 2.125481 2.342733 2.559528 0.187311 0.340553 0.479298 0.800541 1.324137 1.434292 1.773373 1.966276 2.442163 2.794439 0.240145 0.361802 0.529355 1.032511 1.333136 1.613724 1.902121 2.393189 2.610681 2.798432 0.256618 0.369979 0.571037 0.805889 0.931870 1.242267 1.556114 1.777808 2.100100 2.279277 0.315460 0.387429 0.763439 1.135994 1.225008 1.383314 1.479969 1.857272 2.506217 2.572444 0.231972 0.332687 0.498409 0.763292 1.482840 1.675304 1.917342 2.171163 2.373797 2.762604 0.241092 0.374768 0.886119 1.278350 1.760790 1.986414 2.153341 2.321588 2.561671 2.682561 0.181333 0.265570 0.457041 0.832421 0.997777 1.194519 1.519027 1.911348 2.372249 2.624795 0.217281 0.313910 0.490988 1.021293 1.238563 1.420272 1.905572 2.077699 2.389621 2.611841 0.241907 0.344617 0.495322 0.833050 0.943750 1.625368 1.957947 2.118287 2.573169 2.706253 0.260933 0.421768 0.714877 1.045217 1.348286 1.557267 1.920459 2.142565 2.463638 2.761801 0.191170 0.260573 0.482902 0.852619 1.182296 1.355163 1.734327 2.038425 2.220238 2.348315 0.235960 0.420321 0.558300 0.822306 0.959709 1.163020 1.746196 1.872763 2.463190 2.656887 0.182801 0.229509 0.384936 0.525996 1.144440 1.505356 2.087714 2.235691 2.603441 2.821072 0.433326 0.648975 1.152821 1.324354 1.499568 1.680615 1.927155 2.144623 2.501930 2.672369 0.185230 0.282855 0.433567 0.613008 0.800249 1.189297 1.815486 2.216184 2.611609 2.819742 0.305950 0.512379 0.682631 0.866346 1.140903 1.267093 1.689424 1.993235 2.167743 2.491215 0.214384 0.330677 0.465107 0.799324 1.249335 1.354711 1.961836 2.155521 2.365402 2.768664 0.252228 0.294891 0.721925 1.385448 1.627786 1.728361 2.094373 2.246017 2.542430 2.725817 0.247355 0.467492 0.616684 0.821505 1.051679 1.163064 1.676721 1.903589 2.192444 2.770439 0.267056 0.322353 0.878273 1.273551 1.387890 1.656880 1.838486 2.256932 2.489329 2.617788 0.276548 0.347431 0.510036 0.916479 1.503298 1.902076 2.081537 2.205346 2.459159 2.574602 0.420124 0.634373 0.972031 1.349147 1.660814 1.863940 2.209039 2.359323 2.665996 2.774761 0.245603 0.346643 0.484960 0.852273 1.113317 1.246194 1.675673 2.134010 2.397448 2.567438 0.278909 0.453205 0.609401 0.817334 1.386351 1.540485 1.784357 2.027199 2.208866 2.416858 0.216689 0.291968 0.633303 0.821476 1.230792 1.517474 1.740384 1.839894 2.264549 2.645633 0.250583 0.356352 0.706187 1.159764 1.340429 1.531877 1.805133 2.212588 2.494217 2.645859 0.173603 0.221482 0.407668 0.602668 1.173887 1.363948 1.714837 2.069366 2.246713 2.384843 0.351700 0.426939 0.676212 0.785470 1.018054 1.600174 1.760596 1.981016 2.523457 2.622580 0.247404 0.347843 0.537821 0.715383 1.334742 1.730445 1.932738 2.116362 2.550868 2.719251 0.267640 0.435192 0.734410 1.154981 1.439281 1.665625 2.036115 2.238505 2.694509 2.857159 0.377315 0.500802 0.678295 0.852176 0.986722 1.234297 1.946465 2.216296 2.369690 2.568046 0.282474 0.484623 0.647346 0.838126 1.116069 1.236355 1.605158 2.068283 2.241476 2.594701 0.179830 0.276699 0.393477 0.618077 1.005536 1.171683 1.936124 2.147218 2.344016 2.802089 0.150385 0.222615 0.453699 1.059570 1.514904 1.869262 2.170323 2.385821 2.713541 2.834759 0.190104 0.279191 0.487233 0.679289 1.139586 1.367418 1.532297 1.968753 2.379302 2.609276 0.383123 0.512258 0.719040 0.900857 1.026096 1.446135 1.985069 2.104295 2.577580 2.725283 0.233385 0.311008 0.468900 0.822874 1.358548 1.845397 2.088437 2.201482 2.419016 2.524441 0.448047 0.666107 0.986682 1.233646 1.707798 1.882326 2.175233 2.389889 2.561257 2.672922 0.190653 0.315609 0.490994 0.746849 0.882522 1.292447 1.594598 1.771911 2.563910 2.770587 0.215760 0.268515 0.648673 1.130954 1.282429 1.603348 1.802088 2.039412 2.361344 2.489232 0.146123 0.204228 0.382306 0.718573 1.152464 1.523749 1.750535 2.085976 2.456666 2.706774 0.097438 0.189231 0.726839 1.130330 1.394979 1.591658 1.959512 2.188961 2.611863 2.823535 0.153693 0.220100 0.418171 0.907592 1.098588 1.409276 1.661682 2.052898 2.357440 2.534558 0.249007 0.320795 0.581631 0.894597 1.056178 1.470144 1.725025 1.888314 2.380417 2.512561 0.215043 0.307452 0.489967 0.675625 1.212878 1.644852 1.813460 2.219287 2.421185 2.711916 0.454182 0.656019 0.980383 1.162424 1.342999 1.469780 1.737221 2.016043 2.396287 2.589121 0.248859 0.363988 0.568562 0.710472 0.879383 0.969136 1.321791 2.203573 2.459572 2.685742 0.275498 0.346347 0.720990 0.962739 1.142409 1.548421 1.756807 1.939827 2.107470 2.346331 0.168346 0.213677 0.371061 0.533405 1.281879 1.420915 1.743873 1.929374 2.354611 2.516531 0.269357 0.323555 0.660417 1.246119 1.389881 1.620112 1.880792 2.024803 2.535747 2.641379 0.143544 0.211826 0.349106 0.686750 0.852997 1.123379 1.740477 1.910903 2.395457 2.675160 0.391096 0.461323 0.706811 0.863080 0.973392 1.482338 1.771634 1.885759 2.506445 2.623396 0.306784 0.371767 0.612809 1.165417 1.539601 1.649444 1.847967 2.215674 2.421224 2.551842 0.412446 0.658776 1.248823 1.445679 1.591378 1.718751 1.944947 2.241242 2.542474 2.718017 0.219635 0.320449 0.459092 0.733764 0.861516 1.087584 1.877017 2.055926 2.267583 2.421807 0.353269 0.558306 0.705301 0.895998 1.276299 1.401657 1.682423 1.948663 2.130723 2.378531 0.266056 0.406507 0.542960 1.171871 1.333369 1.503282 1.781150 1.967881 2.639831 2.805456 0.366997 0.435212 0.708835 1.184565 1.338341 1.578537 2.031195 2.174915 2.531932 2.718652 0.180016 0.244121 0.466532 0.637822 0.933798 1.613163 1.758726 2.141582 2.383844 2.570767 0.183031 0.268217 0.410149 0.583275 0.768297 1.302461 1.927508 2.184191 2.515648 2.724226 0.198728 0.279758 0.393674 0.687093 1.521403 1.831985 1.964413 2.182576 2.354737 2.718166 0.266621 0.428987 0.748177 1.052044 1.416922 1.709958 1.975394 2.163065 2.390250 2.722350 0.187580 0.301657 0.428103 0.623084 0.722948 1.407722 1.664241 1.898839 2.663491 2.802190 0.207840 0.306975 0.483853 0.724360 1.022497 1.221432 1.415162 1.956839 2.527680 2.734643 0.188611 0.284294 0.408262 0.721431 1.384715 1.505269 1.966087 2.173208 2.428517 2.770771 0.222823 0.272639 0.503764 0.859246 1.498403 1.885767 2.099957 2.235388 2.567829 2.691284 0.152758 0.219680 0.338675 0.597863 0.978697 1.200801 1.746909 1.957261 2.074441 2.404458 0.429246 0.630671 0.792842 0.964490 1.262744 1.388795 1.721613 2.091229 2.345298 2.490896 0.256329 0.380734 0.539915 1.009152 1.400960 1.509524 1.869215 2.029196 2.348803 2.776082 0.272403 0.672458 0.977874 1.334181 1.683066 1.922996 2.291748 2.486116 2.709534 2.862231 0.158762 0.287189 0.410234 0.812307 1.117621 1.262447 1.898049 2.047016 2.529228 2.738030 0.179810 0.233529 0.707400 1.047569 1.289640 1.489108 1.847319 2.074331 2.343157 2.539680 0.215347 0.304896 0.440699 0.897509 1.322585 1.472844 1.996310 2.165007 2.384550 2.574797 0.286874 0.339813 0.883878 1.115931 1.272467 1.744249 1.885743 2.158576 2.589603 2.672644 0.210579 0.284270 0.517041 0.796519 1.129021 1.668905 1.939439 2.065525 2.221131 2.479044 0.261094 0.357573 0.576680 0.963769 1.112459 1.279265 1.822867 1.981048 2.197737 2.571008 0.181278 0.244687 0.379354 0.499565 1.371147 1.939687 2.081545 2.257664 2.473413 2.679019 0.491809 0.793403 1.095573 1.248586 1.433776 1.611914 1.888047 2.132035 2.457073 2.627391 0.251235 0.353668 0.466231 0.673754 0.761327 1.114781 2.007224 2.123861 2.465832 2.639406 0.345158 0.523258 0.679274 0.860119 1.194849 1.326006 1.848632 2.132397 2.326670 2.510966 0.160104 0.220957 0.395991 0.698411 0.969721 1.448772 1.710923 1.833738 2.255148 2.614909 0.154242 0.218964 0.347268 1.230461 1.592574 1.733703 2.002980 2.182922 2.555376 2.704150 0.147752 0.202050 0.328105 0.531857 1.097229 1.287887 1.880144 2.033520 2.241027 2.732837 0.394173 0.497084 0.712849 1.053505 1.351267 1.458228 1.861207 2.181794 2.392320 2.533753 0.302335 0.380917 0.549353 0.985252 1.517171 1.702307 1.859140 2.148560 2.460271 2.579449 0.489225 0.748632 1.289304 1.544824 1.780201 2.071873 2.310551 2.443509 2.704605 2.789720 0.237235 0.383617 0.738218 0.908733 1.218091 1.378373 1.607258 2.196781 2.508687 2.662952 0.287297 0.414596 0.576260 0.837481 1.292636 1.398051 1.699746 2.155291 2.397760 2.512719 0.226644 0.373291 0.522981 0.950126 1.196878 1.352198 1.832943 1.977466 2.370185 2.574990 0.202424 0.294204 0.576457 1.079769 1.296360 1.513369 1.942298 2.239055 2.513119 2.684820 0.205672 0.262350 0.438217 0.606959 0.798794 1.451892 1.730536 1.885799 2.292567 2.433348 0.304096 0.348725 0.817557 0.973213 1.149195 1.769516 1.914392 2.234704 2.592687 2.674729 0.206504 0.281307 0.376040 0.779557 1.499555 1.886752 2.032034 2.220961 2.528659 2.666047 0.130572 0.255765 0.794488 1.301534 1.504711 1.681929 2.069095 2.309137 2.695781 2.848379 0.214845 0.339856 0.490758 0.723584 1.026000 1.188343 1.937657 2.288473 2.513405 2.753320 0.359564 0.482479 0.670546 1.042777 1.240083 1.360140 1.592377 1.718141 2.214001 2.639319 0.106171 0.136363 0.239866 0.666826 1.262252 1.543841 1.886197 2.162484 2.518336 2.782589 0.188744 0.251920 0.360219 0.913075 1.618822 1.785177 1.927723 2.115808 2.320559 2.642776 0.225904 0.378515 0.558007 0.728218 0.996381 1.117859 1.477832 1.960983 2.185323 2.667571 0.436819 0.511780 0.811933 1.004760 1.128440 1.604755 1.813182 1.987683 2.595291 2.709021 0.249083 0.362078 0.480846 0.813722 1.404123 1.566622 1.741757 2.142883 2.302238 2.567856 0.249083 0.362078 0.480846 0.813722 1.404123 1.566622 1.741757 2.142883 2.302238 2.567856 codec2-1.2.0/src/codebook/lspvqexp2.txt000066400000000000000000002760251445607075400177620ustar00rootroot000000000000005 2048 -0.002077 -0.038247 -0.036477 -0.003710 0.058915 -0.035874 -0.128709 0.029183 -0.019849 0.049800 -0.007389 -0.040358 0.044426 0.047695 -0.043474 0.075558 0.066718 -0.000350 -0.002910 0.009981 -0.009790 0.076568 -0.100581 0.021504 -0.026649 -0.026362 -0.100884 -0.003799 0.061469 0.001711 -0.034198 -0.008936 0.039170 -0.055448 -0.078447 0.028441 -0.038152 0.015590 0.036567 -0.041377 0.049588 -0.091695 0.004580 -0.055922 -0.041638 -0.025374 -0.037246 -0.002046 0.002822 -0.108640 -0.050719 0.152889 0.036331 0.025204 -0.017701 0.035302 0.120953 0.037832 -0.092915 0.065586 -0.048191 -0.092276 -0.077588 -0.043380 0.071115 0.011347 -0.004383 0.064201 0.091266 -0.037474 0.019023 0.014911 -0.012935 0.038099 0.015753 0.005340 -0.046005 0.048595 0.061014 0.075044 0.083994 -0.042736 0.000191 -0.120346 0.059455 -0.040009 -0.085618 -0.022013 0.016604 -0.021977 -0.041351 0.055057 0.041498 -0.057724 -0.004755 0.046951 0.098620 0.036630 -0.034510 0.026358 0.034831 -0.018107 -0.038210 -0.024564 -0.076584 -0.038199 -0.082180 -0.087172 0.100873 -0.013934 0.007410 0.052748 -0.012468 -0.086356 -0.004344 -0.008693 0.023248 0.088995 0.063277 -0.010981 -0.014865 -0.008322 -0.026526 0.001412 -0.009086 -0.041663 -0.082625 0.022751 -0.040388 -0.157427 0.000052 0.047105 0.090012 0.049647 -0.052600 0.043776 0.044112 -0.006996 0.035467 0.033674 0.038165 0.009940 -0.005274 -0.025234 0.012284 0.059331 0.033687 -0.030071 0.038173 -0.045016 0.026068 0.158444 0.048818 -0.057637 0.009770 -0.040754 -0.099489 -0.027782 -0.004839 0.170178 0.018211 -0.024125 -0.001981 -0.056519 0.022604 0.043672 -0.084946 0.014191 0.071154 -0.005074 -0.088121 -0.013992 -0.039939 0.008830 -0.019720 -0.014986 0.009192 -0.018737 -0.054735 -0.013960 -0.001601 0.002582 -0.065304 0.007212 -0.013857 -0.007417 -0.077118 -0.033128 0.041117 0.100625 0.000688 -0.014708 -0.011064 -0.123109 -0.008590 0.038570 -0.013241 0.026994 -0.007213 -0.000633 0.001257 -0.072096 0.057499 0.003234 0.041459 -0.084929 -0.010858 0.034929 0.018375 -0.101168 -0.009436 0.035974 -0.047298 0.107772 -0.014572 -0.033241 0.076725 -0.052278 -0.044989 0.064574 -0.034320 -0.080934 -0.062584 -0.052365 -0.007583 0.043332 -0.039973 0.001890 0.081092 0.032425 0.072661 0.019296 -0.009173 -0.013795 -0.048534 0.003494 -0.036829 0.029480 0.062652 0.019438 0.003633 -0.011968 -0.096593 -0.102286 0.064289 -0.051416 -0.052157 -0.106111 0.005858 -0.031779 0.001473 0.071136 -0.017587 0.041119 -0.084642 -0.019285 0.061407 0.024265 -0.082217 0.101714 -0.021349 -0.011424 -0.157899 -0.011584 0.086331 -0.079601 0.013742 -0.095978 0.093032 0.011498 -0.108846 -0.042340 -0.021774 -0.091363 -0.082840 -0.068721 -0.023200 0.069062 0.025331 -0.063542 -0.002176 -0.044709 -0.011586 -0.035579 -0.061392 0.002329 -0.055782 0.087560 -0.009142 -0.031210 0.087176 0.029363 0.048300 0.030101 0.003028 -0.006744 0.110741 0.047285 0.042711 0.114962 -0.014983 0.067022 -0.034867 0.007693 0.108661 0.072716 0.001158 -0.020279 0.097118 -0.049090 0.018332 0.073348 0.048479 0.038012 -0.075550 0.024128 -0.002290 0.027979 -0.007476 0.128642 0.063321 -0.016130 -0.010724 -0.033216 0.012203 0.004603 -0.069020 0.019149 0.023442 -0.041990 0.001559 -0.054141 -0.017873 0.001051 0.009669 0.007371 0.043631 0.032348 -0.066689 -0.007712 0.075542 0.039341 -0.074389 0.089409 -0.067587 0.013297 -0.123535 -0.034031 0.013429 0.024826 0.017265 0.052105 0.067939 -0.101957 -0.053347 0.046413 0.004984 0.062332 0.030324 0.060242 -0.025911 -0.060816 0.054284 -0.056832 0.016850 0.007933 -0.018569 -0.000549 0.026701 -0.090331 -0.006708 0.055666 0.016664 0.060888 -0.010839 -0.037232 0.056511 -0.020495 -0.017025 0.030780 -0.059804 -0.054145 -0.035811 -0.030383 -0.022947 -0.038436 -0.017628 -0.001154 0.071736 0.013679 0.089806 0.109393 0.002158 0.022933 -0.009429 -0.081438 -0.020658 0.036259 0.054585 0.017455 0.037820 0.018769 -0.052528 -0.146355 0.121991 -0.018012 -0.054744 0.003927 0.003980 -0.068627 -0.025582 0.068240 0.012886 -0.118982 -0.025012 -0.060768 0.074453 0.039306 0.043620 -0.021238 0.008481 -0.086583 -0.067953 0.013657 -0.016164 0.052682 0.037754 -0.034526 0.147500 -0.038053 -0.000554 0.038997 -0.033353 -0.103730 -0.024374 0.063047 0.007908 0.052749 -0.060232 0.105523 -0.018157 -0.023187 0.050942 -0.044718 0.023590 -0.031973 -0.076362 0.073925 0.002114 -0.024398 -0.058682 0.080042 0.018073 0.170306 0.034023 0.049977 -0.005101 0.005590 0.044243 0.045804 -0.002783 0.065756 -0.036121 -0.026414 -0.032356 0.022865 0.009608 0.014138 0.076862 -0.045138 0.060759 0.119694 0.029403 -0.106477 -0.030301 0.005873 -0.044463 0.032373 0.018732 0.030235 0.054996 0.014096 -0.056245 -0.108233 0.076912 -0.003553 -0.057174 0.014594 -0.044747 -0.000811 -0.070712 0.032588 0.016264 0.000303 0.049043 0.009463 0.074638 0.018082 0.009662 0.016092 0.002476 0.044398 -0.087719 -0.019282 -0.061589 0.060302 -0.067478 -0.040506 0.023576 0.052937 -0.072603 -0.012619 0.001381 -0.072008 -0.029615 0.037036 -0.024612 0.072062 -0.042065 0.019378 -0.040438 -0.119783 -0.006434 -0.060809 0.085511 -0.008272 0.020380 0.022744 0.066027 -0.063608 0.000489 0.072277 0.001453 0.008278 0.040882 0.032724 0.159938 -0.041156 0.022564 0.038648 0.014324 -0.095703 -0.056763 -0.088713 0.020001 -0.023825 0.027423 -0.018492 0.065606 0.000365 0.039845 0.018820 -0.038350 -0.078718 -0.033629 -0.001663 0.009565 0.108200 0.058847 0.065809 -0.049633 -0.045554 0.020137 -0.086381 0.091892 -0.002517 -0.024076 -0.000222 0.049573 -0.129418 -0.045283 0.051515 -0.006173 0.029917 -0.010061 0.006979 0.078079 0.067161 -0.006824 0.036737 0.001946 0.029299 -0.146673 0.005204 -0.049944 -0.003573 -0.022387 -0.192735 0.086714 0.000681 0.023023 0.025278 0.032334 -0.092047 -0.097106 0.009314 -0.026795 0.048717 -0.014619 0.009445 -0.034367 0.013246 0.033975 0.027681 -0.048279 -0.034841 -0.011498 0.129486 0.012413 -0.099857 -0.009759 0.017468 0.030971 0.054610 0.058014 -0.053387 0.017293 0.044926 0.081337 0.056077 -0.014173 0.033715 -0.080168 -0.039195 0.057433 -0.008063 -0.024017 -0.029873 0.059315 -0.016884 0.037413 0.102710 0.039066 -0.000322 -0.007096 0.001081 0.004899 0.064913 -0.009724 0.052938 0.080878 -0.088833 0.017234 -0.064402 0.068572 -0.037607 -0.071831 0.000857 0.017839 -0.001686 0.014565 0.002904 0.000522 -0.003298 0.002213 0.095679 0.012244 0.036755 -0.099818 0.011289 -0.028433 0.070577 -0.043776 -0.022561 -0.076359 -0.030471 -0.127211 -0.047570 0.077242 -0.002030 0.022748 -0.045608 0.087172 -0.006712 -0.112507 0.048520 -0.049787 0.033883 0.026952 0.022558 0.062996 0.012765 0.026950 -0.066289 -0.068448 0.054918 0.003780 0.040104 -0.005777 -0.085504 0.064809 0.077196 0.014756 0.043405 0.023787 0.031364 0.128719 -0.042317 -0.004864 0.087827 -0.029815 -0.093621 -0.008519 -0.023955 0.051611 -0.014788 -0.068189 0.037225 0.179376 -0.029766 0.060538 0.006306 0.012777 0.019308 0.009494 -0.008692 -0.017852 0.038436 0.046522 0.130088 -0.012523 -0.023608 0.032478 -0.090472 0.044247 -0.044404 -0.030180 -0.040445 0.035083 -0.032830 -0.072877 0.049263 0.081485 -0.069301 0.014635 -0.057655 0.197364 -0.000351 -0.022115 0.039887 0.042215 -0.009109 -0.086347 -0.104682 -0.049640 -0.047970 -0.025332 -0.040848 0.083051 -0.021243 -0.028802 0.015424 0.001733 -0.128243 -0.060411 0.055727 0.057515 0.146167 -0.056022 0.024345 0.002416 -0.015298 0.002236 -0.020925 -0.036973 -0.029182 -0.058852 0.072372 -0.069443 -0.038400 -0.056167 0.006957 0.068247 0.059373 -0.048485 0.034235 0.048623 -0.036035 0.085210 0.110573 -0.015337 0.046972 -0.043542 0.006351 0.031155 0.088626 0.069233 0.008134 0.019241 -0.060153 0.041371 0.089979 -0.041853 0.023626 0.016064 -0.053828 -0.049329 -0.016176 -0.013092 0.057257 0.069686 -0.046114 -0.045261 -0.039290 0.020585 0.061314 -0.027727 -0.001927 0.022808 -0.015832 -0.075912 -0.014836 0.002965 0.081369 -0.022597 0.005534 0.065315 0.044334 -0.043319 -0.041186 -0.013693 0.026330 -0.020694 0.032579 -0.067664 -0.035584 -0.076274 -0.115553 0.029283 0.115779 0.013526 -0.034741 0.010015 -0.130855 -0.047597 0.080984 0.031915 0.048376 -0.028547 -0.023234 -0.052917 -0.103074 0.071678 -0.043019 -0.020299 -0.045608 0.007487 -0.028223 0.036499 -0.089053 -0.034453 0.074651 -0.025209 0.077487 -0.013263 0.004921 0.072189 -0.050852 0.059399 0.035439 0.002935 -0.054894 -0.031357 -0.070326 -0.036947 -0.026730 0.036590 -0.025250 0.113258 0.121094 0.080910 0.042350 -0.092512 -0.043499 -0.025455 0.034745 -0.070282 0.032647 0.111722 -0.019157 0.020761 0.013997 -0.061982 -0.060954 0.055112 0.036288 -0.080176 -0.027267 0.012212 -0.093795 -0.041882 0.097155 0.087384 -0.031435 -0.082801 0.009464 0.032459 0.077828 -0.112376 0.108840 0.019555 0.014775 -0.073011 -0.043973 0.011444 -0.048044 0.056260 -0.038387 0.043656 0.008263 -0.014005 -0.016142 -0.038569 -0.064552 -0.057510 -0.078202 -0.059032 0.084016 -0.010298 0.012574 -0.020059 -0.064059 -0.059392 -0.046799 -0.054238 0.022026 -0.006059 0.084724 0.041685 -0.029012 0.026514 0.032033 0.022922 0.031857 0.030105 -0.035650 0.031377 -0.030435 0.061662 0.079732 -0.025495 0.041751 -0.112711 -0.015737 0.015504 0.121804 -0.030913 -0.016931 0.056284 -0.031211 -0.038259 -0.005525 0.074063 -0.019980 -0.074225 -0.043126 -0.008346 0.052048 -0.010386 0.102477 0.020457 -0.053151 0.037134 -0.048166 0.025535 -0.004324 -0.102005 0.042549 0.062684 -0.011027 -0.041502 -0.022180 -0.001040 0.012690 0.058495 0.039481 0.061425 0.036436 -0.094401 0.024691 -0.002509 -0.024231 -0.105831 0.050352 -0.105564 0.036061 -0.093016 -0.042697 0.049621 -0.014022 0.037095 0.014433 0.054764 -0.096569 -0.011104 0.004844 0.011453 0.022667 -0.022798 0.002655 0.021742 -0.079613 0.045351 -0.079863 0.014770 0.050245 -0.026754 -0.023870 0.015727 -0.098730 0.042398 0.154448 -0.009362 0.081429 -0.020656 -0.072560 0.133852 0.025744 -0.109001 0.075747 -0.059454 -0.002469 -0.103847 -0.008798 0.031741 -0.020032 -0.011426 -0.002985 0.061967 -0.058554 0.096033 0.053995 -0.071745 0.012181 0.016611 -0.051161 -0.042525 0.015651 0.078963 0.054139 -0.007119 0.014112 0.000797 -0.147306 0.012158 -0.048199 -0.042152 -0.060602 0.035608 -0.095526 -0.044437 0.079277 -0.036361 -0.085666 0.005652 -0.035263 0.081781 0.098388 -0.015160 0.032423 0.048597 -0.010937 -0.045141 -0.016016 -0.045851 0.017285 0.029554 -0.068669 0.090490 -0.069378 -0.015215 0.065693 -0.080376 -0.098850 -0.001785 -0.000808 0.001812 0.047789 -0.059522 0.029808 -0.040358 -0.013967 -0.035444 -0.057752 0.011251 0.027783 -0.009928 0.081566 -0.060520 -0.032563 -0.018103 0.008202 0.020263 0.036779 0.028019 0.034566 0.020755 0.010139 0.022813 0.071878 -0.033001 0.012734 -0.101437 -0.069713 0.016386 0.040255 0.034849 0.017738 0.082952 0.030522 0.011027 0.101822 0.000381 -0.044621 -0.048575 -0.018043 -0.104642 0.042318 0.024433 0.071077 0.028556 0.050381 -0.035783 -0.004765 0.019134 0.004109 -0.114088 -0.030007 -0.003475 -0.033302 -0.132027 -0.012463 -0.036186 0.000562 -0.054043 -0.003544 0.052264 0.043304 0.012117 0.016872 -0.034524 0.066372 -0.065579 -0.033370 0.014889 0.004579 -0.049747 -0.050504 0.049331 0.040066 -0.125392 -0.097291 0.050421 -0.071309 -0.051625 0.065285 0.022484 0.062435 0.017569 -0.040502 -0.004470 -0.054208 0.010625 -0.094016 0.022508 0.033725 0.032426 -0.015455 0.036159 -0.115369 -0.103817 0.142767 -0.000238 -0.019162 0.008959 0.030765 0.075502 -0.088049 0.017398 0.024749 -0.021910 -0.075993 -0.149318 -0.174722 0.102620 0.008195 -0.009007 0.007189 0.076657 0.014460 0.034428 0.027255 -0.013869 -0.050491 -0.048691 0.037759 -0.098562 0.085631 0.021691 -0.000794 -0.029941 0.026585 -0.033603 -0.014074 0.066789 0.005141 -0.012246 -0.067551 0.100708 -0.040232 -0.002751 0.049901 0.016959 0.021812 -0.059523 -0.022331 0.030079 0.058567 -0.029002 0.104237 -0.013602 -0.035019 -0.155316 0.016558 -0.013881 0.004136 -0.001657 -0.097220 0.019060 0.052990 0.004200 0.054365 -0.016768 -0.045191 -0.105984 -0.052803 -0.016935 0.092437 -0.013893 -0.033606 -0.023246 -0.039305 0.036068 -0.020164 -0.060244 0.045916 -0.014132 0.044463 0.046890 -0.118975 0.074037 0.010976 0.090692 0.090068 0.023711 -0.044310 0.007556 -0.037900 0.026798 0.084256 0.002559 0.013715 0.004015 0.008334 0.101711 0.022258 0.030790 -0.065656 0.019198 -0.035505 0.026328 0.028683 0.115303 -0.028803 -0.086521 -0.004355 -0.046031 0.011248 -0.040795 0.121216 0.000425 -0.056590 0.011373 -0.070856 0.064965 -0.043302 -0.095015 0.013747 0.048043 0.047157 -0.046839 -0.005878 -0.013815 0.028948 -0.001373 0.115513 0.049750 0.038856 0.002747 0.068706 -0.059471 0.083940 -0.035785 0.026815 -0.027017 0.004618 -0.093707 -0.031970 0.104710 -0.008533 -0.008056 -0.017611 0.038062 -0.073507 -0.036477 0.022407 -0.059049 0.022840 0.012451 -0.010174 0.057217 -0.050858 -0.053612 -0.064090 -0.097360 0.041668 -0.011445 -0.075167 0.006584 -0.122856 -0.011272 0.137465 -0.067901 0.011357 -0.050853 0.020753 0.070596 0.004302 -0.066991 0.055696 -0.043828 -0.042721 -0.096928 -0.047589 0.046254 -0.027538 -0.005234 0.030541 0.077571 -0.039512 0.032372 -0.022397 0.002903 0.014010 0.028365 0.007460 0.011506 0.019889 0.062747 0.095319 0.052300 0.007374 0.036028 -0.116833 0.049517 0.004313 -0.039924 -0.005692 0.035446 -0.006279 -0.092093 0.025645 0.053023 -0.015761 -0.045887 -0.018082 0.081602 0.046870 0.015485 0.067284 0.055890 0.008159 -0.036149 -0.067704 -0.096800 0.015948 -0.036949 -0.083131 0.080618 0.031677 0.025776 0.047673 -0.012634 -0.098220 0.039341 0.018630 0.024685 0.068760 -0.009148 -0.006932 0.000131 -0.009954 -0.075954 -0.020703 0.000996 -0.040731 -0.082876 0.075619 0.017000 -0.130026 0.003839 0.083757 0.085935 0.058477 -0.018794 0.019268 0.053820 -0.025907 -0.016484 0.048963 0.017315 0.011801 -0.016617 -0.016373 0.052079 0.016567 0.064592 -0.011714 0.047244 -0.029583 -0.010269 0.112646 -0.025079 -0.018015 -0.021550 -0.019521 -0.111462 -0.047937 -0.002779 0.083724 0.004416 0.004607 -0.006974 -0.101561 0.027376 0.083440 -0.109869 -0.002361 -0.011364 -0.079707 -0.138325 -0.095825 0.034339 0.024551 -0.012431 -0.000401 0.007608 0.013950 -0.060441 0.010061 0.012546 -0.000065 -0.023529 0.015494 -0.012896 -0.014981 -0.019040 -0.043634 0.076437 0.059672 0.014985 -0.037394 0.020033 -0.082023 -0.016717 0.029711 -0.006237 0.055347 0.024365 0.002094 0.019464 -0.038260 0.127306 -0.051862 0.049168 -0.074259 -0.022269 0.023182 0.071183 -0.065354 -0.055933 0.064170 -0.055712 0.107983 0.054978 0.015294 0.093224 -0.052328 0.000761 -0.020823 0.023903 -0.063241 -0.093322 -0.054658 -0.006845 0.048141 -0.023201 -0.047564 0.106605 0.000059 0.146340 0.030121 -0.040556 -0.020381 -0.050294 0.016659 -0.021563 0.027855 0.069633 -0.009148 0.027112 0.056646 -0.023372 -0.211107 0.014012 -0.019924 -0.122201 -0.040118 0.003571 -0.146470 0.017162 0.075261 0.002383 -0.006374 -0.081174 0.043906 -0.005278 -0.027448 -0.046459 0.140484 0.008671 0.019853 -0.128017 -0.022950 0.048609 -0.019167 -0.010958 -0.061823 0.072910 0.001440 -0.023976 -0.030275 0.027463 -0.138470 -0.139145 -0.028088 -0.013451 0.113264 0.081011 -0.012685 0.006025 -0.055737 0.022779 -0.019951 -0.046793 -0.015091 -0.017958 0.063092 0.032101 -0.004007 0.052309 0.070815 0.012148 0.095984 0.074330 0.006032 0.083156 -0.045278 0.013825 0.066658 -0.000966 0.053253 -0.095660 -0.022943 0.108130 0.092983 -0.012055 0.008111 0.064988 0.010427 0.042345 0.042586 0.077502 0.053009 -0.031546 -0.004484 -0.019859 0.027061 0.016614 0.085821 0.089250 0.014975 -0.022722 -0.045228 0.047095 -0.028190 -0.124509 -0.029014 0.024231 -0.016564 -0.025209 -0.031288 -0.023742 0.040341 0.030385 -0.022564 0.023760 0.018611 -0.077310 0.051696 0.028200 0.005454 -0.045487 0.027221 -0.074627 -0.040934 -0.110565 -0.103536 0.033125 0.041451 -0.017540 0.013737 0.131164 -0.103202 -0.000294 0.030605 -0.030002 0.058861 0.024425 0.055122 0.021447 -0.043394 0.039465 -0.020523 -0.012530 -0.003317 -0.002650 -0.020200 -0.002414 -0.060515 0.003135 0.115504 0.005075 0.072669 0.057819 -0.075310 0.064527 0.025999 -0.067556 0.046351 -0.124098 -0.049305 -0.009230 -0.084801 0.068375 -0.026781 -0.066657 0.010588 0.093986 0.017406 0.047141 0.053480 -0.019255 0.069267 0.010659 -0.068511 0.015815 -0.011687 0.047685 0.033658 0.064260 0.062994 0.018822 -0.143452 0.092703 -0.029884 -0.006035 -0.016152 -0.021618 -0.045339 -0.049252 0.041988 -0.021510 -0.039175 -0.031350 -0.101541 0.005832 0.055761 0.009961 0.086386 0.007597 -0.052775 -0.079976 0.023111 0.004302 -0.020123 0.039264 -0.062497 0.078009 0.004409 -0.063787 0.038329 -0.055050 -0.086972 -0.084417 0.025733 -0.011156 0.104895 0.026765 0.037827 -0.013149 0.009709 0.004095 -0.039085 0.041414 -0.018153 -0.088525 0.078011 -0.022509 -0.080366 -0.047630 0.036346 0.013702 0.071239 0.024081 0.114305 -0.072565 0.004642 0.035947 0.040623 -0.017954 0.045965 -0.007375 -0.030016 -0.004483 0.040170 0.083716 0.012267 0.096863 -0.028263 0.000694 0.069353 0.024960 -0.069792 -0.070096 -0.028321 -0.072324 0.018256 0.000091 0.049255 0.038695 0.041521 -0.035000 -0.034223 0.090426 -0.004319 -0.060041 0.030034 -0.014687 0.016165 -0.139996 0.013811 0.037782 -0.083214 0.054142 0.024863 0.017964 0.045207 0.006294 0.058657 -0.071515 0.093447 -0.050680 -0.014853 -0.071657 0.007823 -0.010828 -0.096918 0.050508 0.136819 -0.042282 -0.060920 -0.006691 -0.054808 -0.055435 0.076309 -0.048186 0.105925 -0.031527 -0.030737 -0.043870 -0.102846 0.054550 -0.095983 0.065369 -0.027944 0.014204 0.008256 0.035180 -0.105002 -0.011778 0.036941 -0.007284 0.034566 0.002672 -0.011867 0.094032 -0.081505 -0.042171 -0.012357 0.025234 -0.142099 -0.011399 -0.092199 0.016061 -0.007420 0.024527 0.010787 0.089568 0.009287 0.040383 0.043550 0.036649 -0.055816 -0.039815 0.029883 -0.031089 0.087022 0.064863 0.035410 -0.010187 0.023054 -0.018519 -0.057105 0.026218 -0.007645 -0.026641 -0.033134 0.044367 -0.059939 -0.047569 0.091489 0.022502 0.013205 -0.056318 0.041414 0.022193 0.081274 -0.006608 0.035220 -0.012493 0.024440 -0.105974 -0.058317 -0.038994 0.042143 0.057826 -0.117349 0.047843 0.089338 0.065029 0.029927 -0.014494 -0.010548 -0.129518 -0.033996 -0.030825 0.032254 -0.021848 -0.021345 -0.065200 0.012770 0.020636 -0.034493 -0.080268 -0.015033 -0.018599 0.076611 0.034283 -0.084435 0.051904 0.063942 0.046362 0.039561 0.096234 -0.030658 0.054240 0.027612 0.022042 0.112035 -0.045512 -0.048431 -0.084263 -0.015994 0.103483 0.045903 -0.004115 -0.021572 0.057589 0.016494 0.013949 0.101635 0.127534 0.014985 -0.006815 -0.053449 -0.000707 0.052773 -0.047290 0.071075 0.041771 -0.079418 -0.026505 -0.082019 0.091756 -0.088458 -0.055800 0.015266 0.048373 -0.028842 0.004456 0.001112 0.005363 0.012172 -0.036807 0.063688 0.114491 -0.034186 -0.082173 0.044547 0.010385 0.061010 -0.075589 0.038888 -0.057732 -0.068354 -0.091781 -0.001533 0.042343 0.007713 -0.003066 -0.016490 0.097581 -0.008705 -0.169889 0.041901 -0.029045 0.088606 0.028236 -0.005092 0.087986 -0.005514 -0.001520 -0.067407 -0.036923 0.018378 -0.001874 0.029761 -0.028224 -0.114769 0.024657 0.082316 0.020235 0.034884 -0.039374 0.106617 0.085265 -0.014306 -0.039880 0.059967 -0.020866 -0.045287 -0.013407 -0.029010 0.025480 0.020099 -0.053760 0.035241 0.067883 -0.069313 0.022318 0.001659 -0.045385 -0.001930 0.007348 0.027072 -0.051692 0.069337 0.012098 0.107819 -0.026942 -0.039741 0.043295 -0.135918 0.031043 -0.040145 -0.021705 -0.052514 0.001132 -0.030098 -0.040748 0.046793 0.149894 -0.021036 -0.023530 -0.040778 0.085491 0.068161 0.033268 0.032992 -0.008355 0.008600 -0.125074 -0.034204 -0.082832 0.030318 0.000442 -0.007943 0.113836 -0.044022 0.015079 0.065357 -0.018956 -0.092656 -0.056274 -0.017481 -0.004857 0.117201 -0.005233 0.069151 0.011030 -0.024316 -0.015695 -0.011308 -0.005062 -0.010876 -0.038919 0.032578 -0.054136 -0.121302 -0.046807 0.041175 0.059588 0.031040 -0.027127 0.021551 0.000830 -0.013766 0.046306 0.081467 0.014301 -0.010731 -0.051227 -0.018797 0.043587 0.050317 0.086115 -0.027629 0.046202 -0.084445 0.021044 0.041527 0.005458 0.006677 0.002404 -0.037453 -0.035957 -0.039078 -0.063247 0.088516 0.079477 0.004030 -0.063421 -0.074051 -0.039753 0.062917 -0.119760 -0.002471 0.000423 0.007336 -0.124273 0.001094 -0.026391 0.070714 -0.035166 0.037072 0.018118 0.017500 -0.050692 -0.015928 -0.003390 -0.002367 -0.040046 0.013349 -0.041478 -0.034407 -0.009890 -0.095593 0.109253 0.041509 -0.062990 -0.041682 0.001528 -0.124601 -0.030128 0.086076 0.003516 0.073015 0.024339 -0.069858 -0.022435 -0.042554 0.107497 -0.132302 0.035124 -0.105430 0.042327 -0.064964 0.057304 -0.092634 -0.058398 0.052083 0.018947 0.087990 -0.026444 0.023373 0.037085 -0.083589 0.015247 0.016566 -0.026782 -0.070361 -0.019757 -0.109826 -0.040199 -0.009688 -0.005408 -0.003769 0.111444 0.029897 0.070686 0.021466 -0.052076 0.015609 -0.023854 0.008088 -0.022084 0.052542 0.122824 -0.018174 -0.009808 0.107602 -0.059166 -0.100824 0.082456 -0.004737 -0.023536 -0.095212 -0.007114 -0.098814 -0.061778 0.049247 0.025130 0.010909 -0.091691 0.034764 -0.014047 0.002819 -0.050330 0.085399 0.057257 -0.052435 -0.067151 -0.012311 0.040602 -0.118166 0.053141 -0.119211 0.024274 0.027075 -0.022345 -0.060443 -0.046916 -0.099227 -0.115958 -0.071020 0.015499 0.055810 -0.012697 0.010803 -0.051685 -0.097540 0.013970 -0.096689 -0.060525 0.010422 0.018434 0.151855 0.015230 -0.080804 0.040130 0.043946 0.022887 0.043819 -0.027371 0.037213 0.059423 -0.040656 0.141843 0.065180 -0.083238 0.057208 -0.113200 -0.056009 0.030056 0.060522 -0.054570 0.006137 0.062833 -0.081547 0.002753 0.037357 0.055441 0.049180 -0.017699 -0.006225 0.029216 0.040657 0.016328 0.041969 0.058998 -0.067000 0.002571 -0.008178 0.027776 -0.026103 -0.049399 0.093279 0.052313 -0.029958 -0.070689 -0.054589 0.027325 -0.010464 -0.000604 0.009479 0.125126 0.086072 -0.052874 0.065774 0.003009 0.013855 -0.088166 0.018907 -0.064212 0.023827 -0.024022 -0.121652 0.032035 0.015278 0.023427 -0.027194 0.066092 -0.100117 -0.048548 0.013755 0.005344 0.038451 -0.000513 0.018468 0.065931 -0.062001 0.035615 -0.067561 -0.013315 0.045441 -0.016064 0.010535 0.035953 -0.068093 0.035872 0.097935 -0.025516 0.061435 0.028137 -0.042656 0.110708 -0.022981 -0.052860 -0.009583 -0.084678 -0.040172 -0.092364 0.061778 0.003794 -0.002964 -0.047375 -0.029968 0.090529 -0.045382 0.103144 0.034998 -0.012760 0.013885 0.048887 -0.049886 -0.034647 0.061193 0.058574 0.084107 -0.022304 -0.008817 0.036857 -0.119972 0.000619 -0.079467 -0.031710 -0.108927 -0.033843 -0.034845 -0.125290 0.079806 -0.011673 -0.070719 -0.063897 -0.051524 0.042071 0.082303 -0.016684 0.053366 0.024657 -0.062913 -0.040533 -0.032117 -0.013188 0.036519 0.055734 -0.134481 0.055949 -0.050480 0.002035 0.010998 -0.064264 -0.078569 -0.026404 -0.017580 0.005453 0.068795 -0.031274 0.024178 -0.038245 -0.037973 -0.013256 -0.072256 0.057358 -0.004941 -0.047850 0.119977 -0.015040 -0.079231 -0.013449 -0.005542 0.028890 0.032536 -0.020619 0.083769 -0.028624 0.049040 0.021538 0.104107 -0.072475 0.019284 -0.044425 -0.058775 0.061172 0.025682 0.004208 0.041846 0.095369 0.007892 0.030701 0.062103 -0.086288 -0.068866 -0.110743 0.052685 -0.069032 0.010339 0.044804 0.106157 0.105575 0.017263 -0.110890 -0.040735 0.061412 0.021037 -0.102095 0.039008 0.010335 0.005686 -0.108307 0.057569 -0.004539 -0.019864 0.033710 -0.031254 0.013482 0.035051 0.014893 -0.001676 -0.053780 0.014329 -0.037130 0.010087 -0.043959 0.031302 -0.006715 -0.065618 0.066261 0.071102 -0.085133 -0.020753 0.050721 -0.042021 0.006613 0.038123 0.041345 0.095993 -0.028353 -0.008509 -0.039544 -0.069281 0.047585 -0.020085 0.000819 0.000478 0.017818 0.008015 0.068812 -0.184380 -0.073606 0.120550 -0.032173 0.058092 0.024132 -0.016705 0.130871 -0.094852 0.044256 0.003919 -0.002119 -0.026963 -0.003553 -0.110166 0.083113 -0.008545 -0.026785 0.025936 0.069075 0.054271 0.029418 0.039817 0.040088 -0.036680 -0.073300 -0.003368 -0.074471 0.111772 0.030913 -0.018960 -0.040689 0.058799 -0.017810 -0.064269 0.071408 -0.022927 -0.077256 -0.075665 0.100717 -0.099471 0.004792 0.063353 -0.017202 -0.012465 -0.052031 0.015659 0.049801 0.020300 0.001231 0.061694 -0.002196 -0.039936 -0.095913 -0.006760 -0.036261 -0.004827 -0.023039 -0.062452 0.023724 0.043337 0.002849 -0.004311 -0.067199 -0.039365 -0.082845 -0.036454 -0.014788 0.059651 -0.039192 -0.021445 -0.003667 -0.011645 0.021036 -0.006220 -0.025338 0.010705 -0.002077 0.043196 0.035112 -0.036895 0.017671 0.003759 0.106991 0.040822 0.011089 -0.048837 0.025240 -0.002343 0.015983 0.080230 -0.005045 -0.000454 -0.055852 -0.004494 0.084580 0.044207 -0.018164 -0.035672 0.024802 -0.028216 0.026617 0.021648 0.082157 0.012675 -0.049856 0.001020 -0.118363 0.069854 -0.038161 0.096174 0.032049 -0.035139 -0.015943 -0.028306 0.055425 -0.092742 -0.074326 0.010130 -0.020646 0.043131 -0.014246 -0.037891 0.006922 0.059464 -0.023168 0.059938 0.021652 -0.004602 -0.005103 0.062343 0.000410 0.032704 -0.087978 0.042098 -0.008283 0.000714 -0.078595 0.004443 0.036763 0.004995 -0.050964 0.045909 0.038942 -0.052841 -0.054318 0.033939 -0.020268 0.019574 0.029805 -0.002001 0.068470 -0.056316 0.007236 -0.031313 -0.066063 -0.003425 0.022247 -0.018479 -0.008040 -0.105011 -0.109717 0.132884 0.056892 0.052155 -0.073444 0.051067 0.107179 0.014594 -0.036657 0.110846 -0.009896 -0.042527 -0.082220 -0.007607 0.057007 -0.034754 0.003213 0.041643 0.142016 -0.007658 0.012781 0.014366 -0.021935 0.010511 0.028021 0.002082 -0.027023 0.055247 0.097082 0.111840 0.040151 -0.019830 -0.007033 -0.097207 0.026595 -0.069875 -0.070451 -0.049743 0.053253 -0.019762 -0.078475 0.043019 0.022103 -0.033625 -0.008627 0.058858 0.080427 0.060029 0.002771 0.041250 0.030257 -0.044059 -0.001226 -0.060544 -0.126844 -0.029407 -0.021079 -0.108126 0.070012 -0.006653 0.013084 0.090992 -0.002726 -0.070041 -0.006757 -0.017571 0.027459 0.103937 0.003012 0.038213 -0.007808 -0.011937 -0.015457 -0.033181 0.012816 0.010199 -0.056227 0.006057 -0.017569 -0.098687 0.006000 0.076819 0.022272 0.082508 -0.058508 0.031808 0.054009 0.007871 0.055301 0.070296 0.023941 0.025656 -0.005875 -0.068203 0.027482 0.036615 0.026218 -0.011406 0.026235 -0.022002 -0.011161 0.120568 0.023165 -0.010473 0.002080 -0.033028 -0.043255 -0.030454 0.009261 0.113350 0.023271 -0.015934 -0.037492 -0.032890 0.016928 0.020967 -0.090717 -0.016510 0.070725 -0.063975 -0.097203 0.017597 0.016946 0.027298 -0.016049 -0.019287 -0.005319 0.019000 -0.037327 -0.040993 -0.003975 0.027897 -0.095076 -0.010053 -0.014610 0.005584 -0.024009 0.000599 0.082121 0.098790 0.005987 -0.036027 -0.067221 -0.128015 -0.052111 0.056606 -0.020029 0.012172 -0.018025 -0.028588 -0.015169 -0.087101 0.044526 -0.022464 0.054835 -0.084369 -0.058286 -0.039363 -0.003339 -0.116729 -0.051506 0.079944 -0.023815 0.113004 -0.052120 -0.012383 0.075636 -0.024387 -0.039200 0.032050 -0.031568 -0.140199 -0.082589 -0.060485 -0.013115 0.092001 -0.002684 -0.027087 0.111635 0.050016 0.077055 -0.010441 -0.006942 -0.026898 -0.083879 -0.008401 -0.026725 0.049993 0.043707 0.027966 -0.019866 -0.057701 -0.086619 -0.114361 -0.008921 -0.039708 -0.122519 -0.074209 0.014381 -0.065102 -0.023419 0.118673 -0.000005 0.071661 -0.127659 -0.009184 0.020308 0.019151 -0.054484 0.096378 0.016102 -0.060605 -0.128655 -0.004225 0.079251 -0.021895 0.024065 -0.097479 0.045279 -0.036151 -0.045806 0.005106 0.000093 -0.074415 -0.071654 -0.067599 -0.017537 0.050178 0.015860 -0.018919 -0.015382 -0.057989 0.032437 -0.039627 -0.030285 0.015438 -0.005533 0.110416 -0.004137 -0.030336 0.085365 0.089779 0.061676 0.017178 -0.016279 0.028526 0.055656 0.008566 0.000706 0.124966 -0.018124 0.040023 -0.067773 0.028532 0.098381 0.062832 -0.038523 0.003865 0.065698 -0.026661 0.076081 0.062167 0.112325 0.052139 -0.040826 0.003747 -0.052113 0.013442 0.002756 0.102858 0.040603 -0.012693 0.031245 -0.046645 -0.003625 -0.024647 -0.062463 0.000476 0.024807 -0.036286 -0.003083 -0.015952 -0.016156 0.002976 0.016598 -0.015092 0.058522 0.011542 -0.046504 0.009174 0.097896 0.056220 -0.055387 0.022356 -0.126788 0.024795 -0.092333 -0.084406 -0.010051 0.060835 0.013338 -0.010735 0.052739 -0.119952 -0.093185 0.010522 -0.001505 0.056134 0.038675 0.016542 0.005217 -0.061424 0.071990 -0.028908 0.011826 -0.009221 -0.010760 0.023849 0.034664 -0.066108 0.018587 0.070818 0.013554 0.106469 0.035530 -0.060716 0.072344 0.010625 -0.017888 0.006548 -0.122347 -0.080419 -0.039979 -0.045658 -0.046576 -0.040526 -0.039641 -0.048709 0.067016 0.023042 0.064800 0.099396 -0.064314 0.005665 -0.025960 -0.094387 -0.056820 0.015466 0.086382 0.024902 -0.019486 0.021888 0.000550 -0.168957 0.071388 -0.019935 -0.042118 -0.040820 -0.012013 -0.072063 -0.004249 0.039160 0.010084 -0.080610 -0.043915 -0.101425 0.074442 0.035350 0.051348 0.051160 -0.031631 -0.053381 -0.062261 -0.020441 -0.031251 0.050923 0.000358 -0.074646 0.076663 -0.042498 -0.033718 0.037025 -0.017087 -0.091951 0.017983 0.015622 0.007807 0.087203 -0.061047 0.077306 -0.049822 0.015499 0.035918 -0.044388 0.034786 -0.003435 -0.072680 0.042506 -0.004200 -0.024834 -0.034415 0.065814 0.079911 0.117115 0.013096 0.065811 0.001560 0.054427 0.085716 0.083343 -0.034994 0.035815 -0.034661 -0.032421 0.000133 0.021908 0.041958 -0.008418 0.091804 -0.023169 0.019306 0.087287 0.064984 -0.052908 -0.010301 -0.022717 -0.062698 0.029605 0.020970 0.011270 0.049229 -0.033794 -0.040198 -0.068419 0.063147 -0.023097 -0.079045 -0.010748 -0.064320 -0.011785 -0.108984 0.015970 -0.038308 0.017991 0.062400 -0.000719 0.044392 0.034008 -0.020969 0.006446 -0.044457 0.044495 -0.084323 -0.014046 -0.057116 0.037862 -0.024751 -0.045926 0.007665 0.082611 -0.081497 -0.013395 -0.026864 -0.040485 -0.031100 0.095144 0.005947 0.063254 0.009423 0.031198 0.008443 -0.078212 -0.002275 -0.025354 0.048808 0.003982 0.011608 -0.005923 0.061556 -0.091653 -0.028425 0.056332 0.005018 0.007136 0.010607 0.039647 0.145962 0.007951 -0.017526 -0.039745 0.023022 -0.066844 -0.047384 -0.044307 0.041848 -0.056589 0.034263 -0.033277 0.073824 -0.030747 0.009451 0.005157 -0.048186 -0.045749 -0.054258 -0.003301 0.004995 0.071505 0.029585 0.050033 -0.064837 0.012928 0.002785 -0.117405 0.045317 -0.026899 -0.051475 -0.054625 0.064955 -0.136139 -0.083576 0.066985 0.000964 0.024630 -0.036989 0.049229 0.047537 0.090953 0.036197 0.054765 0.062892 0.045061 -0.097460 0.009938 -0.027736 -0.008479 0.053538 -0.125219 0.036747 0.027556 -0.017214 0.036754 0.009736 -0.087187 -0.089725 -0.002417 -0.039070 0.076625 0.018126 0.032402 -0.035537 -0.003939 -0.001806 0.018436 -0.060172 -0.024517 0.048085 0.052646 0.044561 -0.126681 -0.005381 0.059991 0.064924 0.047878 0.043526 -0.079817 0.034296 -0.009242 0.037169 0.115281 -0.015147 -0.019430 -0.077776 -0.033431 0.076276 0.023914 0.014924 -0.049231 0.048491 -0.012740 0.023873 0.121027 0.067832 -0.009223 -0.039188 -0.018355 -0.042663 0.070587 -0.003855 0.077791 0.036307 -0.069362 -0.035976 -0.011638 0.103907 -0.055984 -0.110967 -0.002537 -0.016356 -0.022701 -0.018211 0.017831 -0.009534 0.011128 -0.026445 0.071893 0.028948 0.017993 -0.055001 0.032913 0.013143 0.141940 -0.030668 -0.010630 -0.075402 -0.008241 -0.097950 -0.070541 0.086461 0.063873 0.010107 -0.006389 0.086778 -0.017779 -0.056644 0.040699 -0.054122 0.073702 -0.008815 0.011806 0.020978 -0.004901 0.046808 -0.038708 -0.048713 0.065026 -0.042069 0.030306 -0.003984 -0.125105 0.020044 0.154911 0.060110 0.041504 0.013796 0.003360 0.144327 -0.056583 -0.031643 0.021938 -0.082644 -0.117123 -0.032869 -0.004149 0.019806 0.007405 -0.051019 -0.020896 0.133232 -0.028058 0.050897 0.015399 -0.022377 0.012018 0.002474 -0.031801 -0.041942 0.020380 0.018326 0.106183 0.038954 -0.045696 0.017961 -0.080241 0.038198 -0.031449 -0.026191 -0.079952 0.035385 -0.053671 -0.055347 0.103293 0.049459 -0.008219 0.010257 -0.061794 0.124358 0.049411 0.069306 0.034282 -0.013114 -0.040074 -0.071968 -0.195520 -0.088871 -0.030547 -0.024227 -0.047665 0.132613 0.012253 0.036726 0.018979 -0.021295 -0.120084 -0.050532 -0.020265 0.013963 0.136035 -0.067105 0.051832 0.013865 -0.036402 0.005526 -0.042230 -0.022246 -0.030844 -0.014871 0.097708 -0.055950 -0.060091 -0.107193 -0.000749 0.094279 0.066459 0.015231 0.068358 0.042724 -0.020943 0.012438 0.110596 -0.022189 0.026125 -0.011649 0.004604 0.037204 0.039096 0.065797 0.045162 -0.003834 -0.056679 0.017104 0.070007 -0.005419 -0.016435 -0.000214 -0.097253 -0.033412 -0.004272 0.021730 0.092887 0.039513 -0.027819 -0.045420 -0.062670 -0.013033 0.033957 -0.040429 -0.018152 0.020048 0.015966 -0.083740 0.050010 0.032999 0.053057 -0.072973 0.000797 0.028222 0.063769 -0.045254 -0.001401 -0.008530 0.000350 -0.050423 0.016321 -0.077400 -0.017818 -0.062015 -0.039769 0.103694 0.123584 0.004844 -0.068111 -0.008528 -0.128884 -0.003312 0.098749 0.025292 0.013547 0.007157 -0.032589 -0.024049 -0.074941 0.062923 -0.112079 -0.008534 -0.046211 0.028223 -0.041903 -0.001378 -0.077507 -0.015178 0.093495 -0.033668 0.043904 -0.026096 0.008741 0.024695 -0.042365 0.063246 0.013544 -0.021438 -0.018498 -0.060824 -0.093599 -0.003304 0.013206 0.019776 0.011491 0.115257 0.066627 0.042660 0.045968 -0.044189 -0.056683 0.002399 0.025400 -0.031109 0.037612 0.112170 0.041814 0.005019 -0.013887 -0.051704 -0.065646 0.030095 -0.006617 -0.067206 -0.053773 0.020368 -0.060694 -0.042554 0.031959 0.034480 -0.016413 -0.056939 0.026266 0.003617 0.032682 -0.066017 0.064464 0.025224 -0.014523 -0.107735 -0.028243 0.015327 -0.027555 0.013037 -0.049117 0.015929 -0.001301 -0.010874 -0.018588 -0.021124 -0.055630 -0.102228 -0.048525 -0.057257 0.083344 0.005472 0.060981 -0.022083 -0.107351 -0.002309 -0.015487 -0.065168 0.011812 -0.029764 0.117191 0.062742 -0.062476 0.020253 0.014273 0.020564 0.047570 -0.021837 0.006995 0.009213 -0.047359 0.072944 0.095512 0.010178 0.039050 -0.077791 -0.020722 0.021947 0.090992 -0.061050 -0.090772 0.081786 -0.045653 -0.012634 0.036482 0.058533 -0.002696 -0.033458 -0.040412 0.012196 0.010799 -0.011791 0.110559 0.009821 -0.036074 0.066220 -0.015518 0.056690 -0.027127 -0.071116 0.031944 0.079010 -0.022395 -0.039431 -0.000384 -0.014285 0.016850 0.033711 0.008705 0.100114 0.041438 -0.100989 0.011356 -0.046625 -0.040932 -0.139483 0.054309 -0.063813 -0.012343 -0.055168 -0.096047 0.031057 -0.034404 0.061917 0.022545 0.077964 -0.061018 -0.028539 -0.002541 -0.030177 0.006468 -0.005315 0.042803 0.027882 -0.101187 0.073519 -0.048492 -0.034044 0.063858 -0.051841 -0.034119 0.025079 -0.055338 0.022337 0.072417 -0.039178 0.093515 0.010215 -0.063332 0.136724 -0.034306 -0.068709 0.036614 -0.060321 0.003109 -0.064068 -0.001911 0.026497 -0.043444 0.005220 -0.028260 0.089346 -0.073713 0.082013 0.000948 -0.079297 0.077331 0.007199 0.013959 -0.089135 -0.001973 0.083595 0.061678 -0.027937 0.074507 0.052481 -0.156418 -0.008126 -0.077649 -0.025098 -0.028822 0.031584 -0.062854 -0.037974 0.052900 -0.008246 -0.058382 0.007371 -0.059698 0.005125 0.103990 0.035731 0.076498 0.045455 -0.034656 -0.089189 0.010512 -0.022809 0.023399 0.080456 -0.046407 0.119537 -0.046816 0.011054 0.024797 -0.075119 -0.091853 0.017319 0.022797 0.030783 0.051211 -0.054302 0.035466 -0.053426 0.002530 0.020784 -0.089056 0.007237 0.031757 -0.019566 0.082209 -0.018737 -0.006975 -0.032879 0.000924 0.069241 0.009323 0.017753 0.041898 0.020597 0.000749 0.046727 0.117703 -0.020501 0.027483 -0.056525 -0.059522 0.018749 0.025171 0.033068 0.005911 0.134204 0.011451 0.038296 0.086523 -0.027888 -0.033250 -0.035178 0.043617 -0.108778 0.024102 0.016641 0.092810 0.073643 0.030016 -0.066742 -0.010738 0.064668 0.039526 -0.112082 -0.032794 -0.037218 0.027811 -0.128246 0.003025 -0.070009 -0.076832 -0.013242 -0.030105 0.038807 0.066675 0.013770 0.023016 -0.094473 0.028346 -0.050126 -0.043963 -0.011618 0.017048 -0.083869 -0.023363 0.030985 0.027338 -0.080760 -0.055583 0.032162 -0.032668 -0.036833 0.058238 0.020173 0.050309 -0.009187 0.009272 -0.051130 -0.060180 0.014297 -0.085720 0.033908 -0.002635 0.061924 -0.014460 0.025310 -0.143366 -0.086237 0.079075 -0.057641 0.027727 0.053345 0.030701 0.128530 -0.096663 0.028249 -0.038583 -0.041418 -0.078768 -0.009950 -0.139435 0.050946 -0.001476 -0.004529 -0.005454 0.042876 0.012496 0.037365 0.037258 -0.009785 -0.014137 -0.075187 -0.015646 -0.084672 0.066850 0.049159 0.022652 -0.100018 0.030626 -0.031693 -0.026283 0.098183 0.037095 -0.031902 -0.082082 0.064108 -0.081413 -0.016931 0.069276 0.025553 0.019033 -0.009843 0.021095 0.006896 0.091735 -0.006895 0.125729 -0.038132 -0.025017 -0.094419 0.023870 0.012859 -0.032674 0.010226 -0.092226 -0.004873 0.064962 -0.006137 0.026959 -0.019304 -0.064646 -0.056343 -0.049825 -0.021361 0.067875 -0.021989 0.008580 -0.036917 -0.006108 0.023764 -0.015728 -0.098608 0.056344 -0.043710 0.075790 0.016095 -0.079516 0.016637 0.054791 0.091656 0.119050 -0.037915 0.002929 -0.026705 -0.038725 0.031207 0.092135 -0.016211 0.014904 -0.012804 -0.003882 0.145488 0.013740 -0.018092 -0.113500 0.052133 -0.037974 0.032356 0.065081 0.054718 -0.006753 -0.115419 -0.041122 -0.070389 0.024012 -0.033000 0.078595 0.002090 -0.003576 0.025975 -0.029200 0.073729 -0.067545 -0.099515 0.068346 0.036494 -0.010089 -0.040395 -0.024474 0.000906 0.004180 -0.011648 0.077079 0.062025 0.048336 -0.047553 0.020667 -0.034650 0.102764 -0.088833 0.063548 -0.063948 0.004926 -0.075665 -0.010204 0.077117 0.008604 0.016964 -0.006119 0.015651 -0.060279 -0.084239 0.021175 -0.041494 0.062789 0.023042 -0.049413 0.030400 -0.088557 -0.027424 -0.038734 -0.047767 -0.039267 -0.007115 -0.095571 0.040131 -0.172339 -0.015514 0.125809 0.002775 0.011847 -0.039818 0.003508 0.088794 -0.016537 -0.041801 0.077773 -0.025099 -0.015829 -0.087113 -0.031825 0.018394 -0.033412 -0.037361 0.054089 0.082347 -0.078775 0.044163 -0.001941 -0.036779 0.006281 0.033103 -0.019683 0.013567 0.044802 0.035896 0.099997 0.048928 0.024331 0.024339 -0.119730 -0.020516 0.003938 -0.049114 -0.020101 0.025056 -0.039189 -0.111669 0.015432 0.107806 0.009106 -0.041783 0.004427 0.114069 0.035561 0.004165 0.048624 0.065296 -0.020221 -0.112241 -0.024621 -0.104499 0.040792 -0.042481 -0.126163 0.113850 0.052426 0.045897 0.073140 -0.038559 -0.101637 -0.010880 0.014157 0.016488 0.118415 -0.003117 0.015104 0.005410 -0.047124 -0.034323 -0.038341 0.011107 -0.021536 -0.087493 0.030662 0.003416 -0.087892 -0.019840 0.053393 0.053193 0.082340 -0.013319 0.013522 0.032147 -0.036372 0.021664 0.058868 0.001821 0.053133 0.015237 -0.029422 0.049671 0.032518 0.054852 -0.061126 0.052882 0.005097 -0.000200 0.077584 0.023798 -0.015922 -0.043740 -0.019244 -0.065261 -0.001356 0.041977 0.064243 0.006831 0.025573 -0.039113 -0.067333 0.007728 0.061532 -0.086024 0.037808 0.024787 -0.036093 -0.148755 -0.014995 0.025827 -0.017793 -0.025363 0.010676 -0.014283 0.038621 -0.041757 -0.018561 -0.004984 0.048476 -0.027007 0.007045 -0.010409 0.017155 -0.042986 -0.059561 0.084763 0.072516 -0.014595 -0.020495 -0.009080 -0.061622 -0.023300 0.018242 0.008783 0.036423 -0.001710 -0.025459 -0.030263 -0.038355 0.112339 -0.013108 0.030839 -0.050166 -0.045350 -0.006927 0.057254 -0.090539 -0.052734 0.030495 -0.028123 0.095772 0.021287 0.004939 0.065006 -0.066334 0.009532 0.009978 0.000692 -0.079650 -0.130620 -0.025115 -0.037193 0.028545 -0.011885 -0.018329 0.101976 0.056169 0.074905 -0.039652 -0.019531 -0.031025 -0.031945 -0.004999 -0.024155 0.051113 0.063966 -0.016577 -0.028105 0.007520 -0.098547 -0.151585 0.016061 -0.011144 -0.064311 -0.071227 -0.012819 -0.089185 -0.011034 0.126948 0.065626 0.030017 -0.077054 -0.016170 -0.011244 -0.030183 -0.068083 0.115571 0.004514 -0.032999 -0.119452 -0.052594 0.048244 0.006761 0.001824 -0.082055 0.063269 0.016468 -0.015038 0.008738 -0.042234 -0.087201 -0.135683 -0.058265 -0.010563 0.099495 0.035913 0.016120 0.022021 -0.060263 0.058709 -0.025272 -0.069868 -0.012474 -0.023791 0.072270 0.012475 -0.047178 0.065743 0.022110 0.027334 0.039002 0.034057 0.056588 0.090825 -0.083277 0.062553 0.045167 0.016230 0.042246 -0.055865 -0.029814 0.063583 0.101556 -0.041974 0.065108 0.059385 -0.023394 0.067253 0.003519 0.053386 0.071879 -0.052816 -0.014833 -0.034839 0.008862 0.040661 0.076481 0.113195 -0.022318 0.022988 -0.047563 0.021223 -0.031776 -0.097003 0.010273 0.070963 -0.088181 -0.014952 -0.044557 -0.040211 0.027326 0.055263 -0.027993 0.036839 0.059553 -0.085166 0.023284 0.081938 0.013347 -0.056030 0.032386 -0.078191 -0.012334 -0.065844 -0.082412 0.021620 0.049765 0.021974 0.064777 0.116942 -0.066893 -0.029098 0.063773 -0.015678 0.036050 -0.001531 0.050204 -0.007431 -0.053256 0.019949 -0.084515 -0.052331 0.003628 -0.002831 0.028651 -0.022563 -0.068663 -0.046864 0.085680 0.035073 0.090355 0.076019 -0.033539 0.078709 0.049120 -0.058380 0.063174 -0.067044 -0.040988 -0.024670 -0.076422 0.022349 -0.059226 -0.063296 -0.024667 0.109900 -0.039214 0.081493 0.061838 -0.018769 0.054117 0.049416 -0.039105 -0.000888 -0.008740 0.069660 0.056013 -0.013119 0.088704 0.005989 -0.118940 0.055085 -0.021830 -0.027348 -0.037636 -0.044645 -0.013684 -0.033348 0.066928 -0.026840 -0.074085 -0.052255 -0.095346 0.073214 0.052368 0.000793 0.036896 0.029109 -0.040256 -0.063044 -0.008606 -0.000437 0.037406 0.035413 -0.064896 0.100694 -0.002451 -0.062127 -0.005213 -0.045513 -0.099165 -0.029096 0.046180 -0.038707 0.091676 -0.027947 0.081059 -0.051970 0.036875 -0.002862 -0.034628 0.032122 -0.042473 -0.133086 0.097766 0.014513 -0.057376 -0.026905 0.025345 0.058654 0.088520 0.021655 0.068829 -0.068890 0.073760 0.037294 0.067743 0.004270 0.030315 -0.017342 -0.022912 0.021230 0.027415 0.010279 0.033049 0.105463 -0.080985 -0.024846 0.118625 0.017407 -0.060377 -0.071617 -0.034814 -0.031741 0.033114 -0.008946 0.044965 0.026382 0.068195 -0.053337 -0.079506 0.089886 0.019186 -0.075490 -0.002131 -0.014334 0.010145 -0.102313 0.044049 0.024515 -0.079086 0.105318 0.030157 0.019277 0.009149 -0.002192 0.035223 -0.093034 0.037988 -0.056189 0.005485 -0.070967 0.093206 -0.017940 -0.068121 0.025189 0.098473 -0.047072 -0.057202 0.027986 -0.068841 -0.023193 0.059350 -0.020968 0.125734 -0.015897 0.013012 -0.018615 -0.122453 -0.008474 -0.064049 0.013910 0.021902 0.037915 0.039737 0.028260 -0.089535 -0.052408 0.036171 0.024766 0.038944 0.043725 0.068495 0.097351 -0.051536 -0.026994 0.009734 0.022521 -0.085412 -0.004269 -0.068523 0.026057 -0.003617 0.002555 -0.024622 0.075742 0.024453 0.043622 0.048992 -0.003958 -0.051371 -0.010372 -0.009291 -0.026649 0.112796 0.034440 0.000480 0.000993 0.012835 -0.024524 -0.086702 0.076990 -0.012872 -0.012272 -0.049239 0.045637 -0.100430 -0.080402 0.098860 -0.001607 -0.027740 -0.028447 0.010187 0.049316 0.064463 -0.032244 0.096351 0.042173 -0.014830 -0.130350 -0.065157 -0.020131 0.011826 0.043958 -0.096975 0.094420 0.065360 0.008046 0.034625 0.022699 -0.011948 -0.162034 -0.028577 -0.049031 0.062518 0.027121 0.011773 -0.062840 -0.028274 0.019513 0.004294 -0.058221 0.015044 0.032322 0.078632 0.074899 -0.089319 0.012740 0.036679 0.061490 0.073955 0.074210 -0.042945 0.081229 0.003752 -0.027289 0.107675 0.028637 -0.027527 -0.094485 -0.014081 0.106655 0.037034 -0.046495 -0.057983 0.047583 0.007322 -0.000480 0.084590 0.058447 0.010057 -0.044796 -0.035563 -0.017414 0.104652 -0.101773 0.088697 0.008873 -0.059058 -0.074754 -0.068039 0.080127 -0.042104 -0.067599 0.033969 0.019253 -0.038611 0.007952 0.028316 -0.003028 0.025731 -0.031708 0.103465 0.087113 0.002288 -0.034732 0.000345 0.011011 0.084188 -0.047564 0.007324 -0.100708 -0.031667 -0.084195 -0.045309 0.035772 0.029785 -0.003803 0.041355 0.070690 -0.006148 -0.101234 0.036078 -0.057998 0.086587 0.069468 -0.017787 0.043517 -0.032858 -0.018033 -0.080238 -0.054284 0.011916 -0.027168 0.032061 0.004608 -0.164665 0.024300 0.127777 -0.001633 0.037157 -0.077063 0.079112 0.092827 -0.045527 0.012537 0.048156 -0.028838 -0.088344 -0.058200 -0.001037 0.009927 0.005766 -0.051805 0.035975 0.103039 -0.118515 0.040739 0.028846 -0.010371 -0.011677 -0.017552 -0.012737 -0.062534 0.096752 0.040808 0.067058 -0.016128 -0.050826 0.049568 -0.159884 0.104117 -0.060870 -0.026777 -0.040150 0.003038 0.011219 -0.047457 0.044509 0.104699 -0.061694 -0.048700 -0.028345 0.058571 0.115771 0.060865 0.049165 -0.017126 -0.029090 -0.087904 -0.040448 -0.053762 -0.009906 0.012529 -0.107155 0.136828 -0.025232 0.019743 0.120518 -0.033402 -0.147125 -0.096492 -0.011562 -0.010821 0.143581 -0.029410 0.012515 -0.007255 -0.051247 -0.015950 -0.001080 -0.021038 0.033604 -0.082138 0.032578 -0.050610 -0.097139 -0.058199 0.107657 0.105983 0.027511 -0.023155 0.031791 0.024300 -0.017968 0.063148 0.049343 -0.007836 -0.006517 -0.013473 -0.004970 0.056535 0.020974 0.047090 0.009318 0.062741 -0.066064 0.049383 0.062600 -0.007244 0.025406 -0.011447 -0.019044 -0.033373 -0.012008 -0.020777 0.089488 0.069039 -0.039904 -0.061004 -0.104096 0.011128 0.072522 -0.048600 -0.051581 0.021177 0.001740 -0.135630 0.074921 0.010935 0.054793 -0.041526 0.024169 0.044285 0.017189 -0.023435 -0.022755 -0.018169 0.007995 -0.068248 -0.015644 -0.055355 -0.008988 0.013394 -0.130934 0.055860 0.075055 -0.024869 -0.072987 0.105486 -0.141599 -0.052593 0.104369 -0.026032 0.010393 0.003048 -0.077763 0.020642 -0.054726 0.098890 -0.062038 -0.008284 -0.030920 0.041949 -0.052596 0.055867 -0.059301 -0.027785 0.067366 -0.015217 0.061893 -0.058155 0.044323 0.038825 -0.048558 0.026668 0.056475 -0.042396 -0.044360 -0.073532 -0.092982 -0.055163 -0.002151 -0.047433 0.007696 0.110986 0.055177 0.038644 0.059219 -0.050130 -0.016829 -0.018164 -0.003120 -0.055675 0.097769 0.119773 0.017092 -0.022682 0.021229 -0.029792 -0.117466 0.066111 0.065948 -0.074617 -0.074175 0.016698 -0.071365 -0.047641 0.063671 0.005349 -0.039942 -0.093589 0.065751 0.017235 0.035630 -0.031694 0.061852 0.053612 -0.016144 -0.071008 -0.029225 0.066491 -0.040345 0.042471 -0.075360 0.066743 0.050696 -0.014316 -0.034336 0.016703 -0.103271 -0.081002 -0.052827 0.007353 0.046627 0.008461 0.049725 -0.003406 -0.093149 0.006210 -0.055973 -0.057089 -0.020200 0.012346 0.141207 0.045917 -0.012261 0.039647 0.050373 0.056749 0.072718 0.002752 0.004009 0.038716 -0.039473 0.082663 0.054674 -0.004500 0.042366 -0.110686 -0.077697 0.039758 0.051345 0.003071 -0.019544 0.063662 -0.082557 0.025358 0.016659 0.029266 0.011585 -0.055014 -0.026965 0.026974 0.018085 -0.022347 0.075107 0.063294 -0.046595 0.032484 -0.030675 0.062036 -0.033627 -0.064331 0.081940 0.081033 -0.050699 -0.046257 -0.013797 -0.008749 -0.013019 0.018478 -0.008139 0.075257 0.092736 -0.053166 0.014791 -0.013803 0.044603 -0.116267 0.032848 -0.092134 0.020647 -0.052370 -0.128516 0.004475 -0.043562 0.036375 -0.002867 0.103214 -0.109219 0.008372 -0.017374 -0.021978 0.020315 0.012816 0.005703 0.099649 -0.047777 0.054769 -0.025362 -0.003862 0.036146 -0.000369 -0.000853 0.012461 -0.032338 0.013247 0.073478 -0.020868 0.034203 0.002982 -0.016316 0.149713 0.002631 -0.081349 -0.020016 -0.155943 -0.058299 -0.046014 0.027098 0.028942 -0.011857 -0.022016 0.017303 0.105805 -0.012430 0.086002 -0.009549 -0.071369 -0.005224 0.013152 -0.032159 -0.053343 0.027646 0.043468 0.037717 -0.009747 0.013014 0.058424 -0.101661 -0.010004 -0.053787 -0.020784 -0.072472 -0.041184 -0.087878 -0.077459 0.062841 0.011552 -0.085703 -0.035239 -0.018818 0.030430 0.040444 -0.042755 0.041121 0.003887 -0.025745 -0.049363 -0.025894 -0.054378 0.070007 -0.019364 -0.141059 0.039915 -0.045332 0.024336 0.030320 -0.082784 -0.048936 -0.027234 0.020447 0.007182 0.084824 -0.045970 0.027752 -0.009759 -0.023702 -0.008379 -0.071048 0.015064 0.009395 -0.052442 0.130155 -0.011644 -0.014787 -0.021138 0.024468 0.045928 0.043163 -0.030898 0.065143 -0.014501 -0.008479 -0.017099 0.098271 -0.038323 0.004035 -0.061317 -0.041506 0.038436 0.055127 0.060303 0.044674 0.128814 0.038762 0.086495 0.069068 -0.070150 -0.089410 -0.054372 0.033209 -0.096623 0.034209 0.050531 0.038502 0.059019 0.043258 -0.045121 -0.063876 0.049971 0.014954 -0.153720 0.031755 -0.021388 0.014803 -0.125385 0.063700 -0.019166 -0.095829 0.022129 -0.035969 0.041896 0.030461 -0.015321 -0.015067 -0.040013 0.024331 -0.015398 -0.008113 -0.019773 0.027804 -0.039993 -0.074170 0.033667 0.046367 -0.086691 -0.034684 0.054798 -0.087551 -0.014591 0.044687 0.057457 0.118611 0.010895 0.011308 -0.066320 -0.063774 0.057919 -0.051338 0.049145 0.006265 0.048016 -0.010350 0.089136 -0.100672 -0.040908 0.090819 -0.084327 0.065891 0.025763 -0.030480 0.103529 -0.144803 -0.036912 0.017161 -0.020671 -0.059993 -0.030123 -0.104598 0.039178 0.018764 0.001037 0.014109 0.056332 0.050717 -0.004747 0.035822 0.019209 -0.010162 -0.044650 -0.039307 -0.111424 0.122778 0.090067 0.014313 -0.047117 0.042269 -0.052396 -0.023384 0.123438 -0.016756 -0.092801 -0.058478 0.080712 -0.052288 -0.031113 0.064436 -0.005451 -0.018327 -0.053156 -0.022903 0.031275 0.042126 0.009823 0.074549 0.002952 -0.010186 -0.114717 -0.029095 -0.026125 0.003889 -0.003003 -0.060079 0.034566 0.010262 -0.029593 0.012239 -0.052124 -0.028219 -0.110036 -0.015073 0.005623 0.053202 -0.029201 -0.038548 -0.025617 -0.000150 0.022644 0.000550 -0.049223 0.018036 -0.010954 0.045453 0.019204 -0.075695 0.027728 0.012573 0.072358 0.082283 0.037531 -0.003946 0.003139 0.000013 0.021161 0.067238 0.019852 -0.022422 -0.032314 -0.024316 0.106260 -0.001499 -0.028984 -0.045186 0.019666 -0.000966 0.047073 0.075944 0.081739 -0.029633 -0.060673 -0.013207 -0.057523 0.057259 -0.055200 0.078923 0.013582 -0.060645 -0.029418 0.013853 0.056976 -0.061172 -0.146801 0.049472 0.016436 0.045997 -0.031589 -0.031052 0.031418 0.026113 -0.038676 0.064035 0.045482 0.020622 0.005875 0.029585 -0.005284 0.054275 -0.076784 -0.000845 -0.023097 0.009660 -0.128422 0.002992 0.055651 -0.005932 -0.027123 0.022215 0.057779 -0.080469 -0.076867 0.008909 -0.030195 0.004706 0.060938 -0.038886 0.050785 -0.063214 0.004370 -0.033455 -0.013089 -0.009154 -0.030641 -0.030220 0.005174 -0.132262 -0.021476 0.105410 0.027719 0.051123 -0.017271 -0.000185 0.117864 0.035809 -0.071891 0.116329 -0.009954 -0.102737 -0.053397 -0.057653 0.058746 0.009878 0.024776 0.043190 0.082400 -0.020615 0.032439 0.035539 -0.018820 0.017822 0.016504 0.008745 -0.008596 0.054707 0.063681 0.056656 0.032254 -0.023608 -0.002017 -0.146378 0.047072 -0.016978 -0.066403 -0.042616 0.019845 -0.016902 -0.036058 0.030091 0.057405 -0.035798 0.002185 0.033655 0.062726 0.038185 -0.024604 0.038026 0.013655 -0.050063 -0.040289 -0.034587 -0.089238 -0.021893 -0.072730 -0.145619 0.108409 0.003979 0.003043 0.058544 -0.005494 -0.058294 -0.023242 -0.027050 0.048686 0.105867 0.037255 -0.005019 -0.017867 0.007807 -0.016470 -0.017352 -0.004222 -0.051778 -0.082651 0.031128 -0.051302 -0.094105 -0.007583 0.048196 0.056035 0.076579 -0.049990 0.037184 0.064354 -0.004853 0.019012 0.052243 0.041607 0.017800 -0.018867 -0.048040 0.036929 0.071847 0.012078 -0.003492 0.052903 -0.041736 -0.008196 0.113020 0.034731 -0.051940 0.022987 -0.022300 -0.033261 0.020486 -0.029803 0.179316 0.014762 -0.006096 -0.022377 -0.053417 0.045007 0.047412 -0.078434 0.007164 0.048187 -0.032463 -0.106666 -0.022577 -0.007054 0.017166 -0.007364 0.007677 0.013536 0.004985 -0.052519 -0.019141 0.018399 0.004096 -0.066275 -0.014342 -0.023287 0.017068 -0.061082 -0.021342 0.049768 0.072011 0.006385 -0.035801 -0.027304 -0.099812 0.001797 0.065304 -0.033306 0.042256 -0.008741 -0.006929 0.010954 -0.080864 0.095856 -0.012888 0.050346 -0.058343 -0.042527 0.010740 0.027268 -0.131655 -0.022159 0.048331 -0.019242 0.139544 -0.009212 0.008528 0.095408 -0.072588 -0.026269 0.046686 -0.057569 -0.103939 -0.092932 -0.053006 0.017352 0.065774 -0.067465 -0.035608 0.077533 0.035754 0.076737 0.042552 -0.018386 -0.040285 -0.060055 0.002954 -0.063347 0.023485 0.069391 0.030181 0.015083 -0.035587 -0.073150 -0.108303 0.033116 -0.051149 -0.070534 -0.072103 0.010046 -0.008050 -0.038552 0.065148 -0.005398 0.029138 -0.091804 -0.032927 0.026057 0.044995 -0.067493 0.140590 -0.010770 -0.051205 -0.134801 0.039771 0.047000 -0.040774 0.024562 -0.118058 0.061721 0.010046 -0.084855 -0.002180 -0.028081 -0.040929 -0.091046 -0.074457 -0.063377 0.065429 0.036303 -0.058948 -0.009780 -0.035398 0.010274 -0.054774 -0.052228 0.000477 -0.035468 0.059891 -0.011652 -0.043705 0.130993 0.029418 0.024997 0.014118 -0.000473 0.012220 0.094825 0.003360 0.050743 0.112621 -0.036424 0.119286 -0.062500 0.028140 0.113267 0.092232 -0.028352 0.015304 0.118553 -0.037245 0.047917 0.068301 0.034398 0.054323 -0.111406 0.016223 -0.016616 0.048104 -0.012621 0.095559 0.040486 -0.036481 0.006675 -0.029498 0.019722 -0.005174 -0.090840 0.040097 0.031192 -0.056686 -0.015354 -0.037239 -0.040451 0.001148 0.016519 0.027984 0.063613 0.029013 -0.053331 0.009462 0.094796 0.073376 -0.035437 0.079788 -0.072969 0.005683 -0.141562 -0.028240 0.056569 0.053462 0.024141 0.020688 0.105325 -0.088920 -0.074876 0.044548 0.015221 0.063364 0.044219 0.028301 -0.011412 -0.033571 0.034361 -0.067847 0.000284 0.012742 -0.045973 -0.009839 0.044280 -0.077401 0.013255 0.065280 0.018179 0.074351 0.004383 -0.054040 0.072674 -0.012623 -0.023532 0.057154 -0.077067 -0.071007 -0.013831 -0.015362 -0.004755 -0.051874 -0.046591 -0.008108 0.051772 0.006314 0.106169 0.066165 -0.024173 0.034211 -0.015378 -0.085769 -0.015752 -0.008456 0.051049 0.015420 -0.005850 -0.015631 -0.060787 -0.151510 0.080912 -0.029476 -0.034162 -0.023308 0.021727 -0.069572 -0.002926 0.066532 0.034835 -0.091864 -0.014468 -0.077637 0.085530 0.058931 0.087803 -0.024233 0.027189 -0.084814 -0.064844 -0.010260 -0.038228 0.079925 0.040571 -0.027455 0.112376 0.008327 -0.015541 0.020299 -0.039833 -0.122069 -0.008265 0.048969 -0.037595 0.073512 -0.070833 0.106844 -0.031463 -0.019591 0.029763 -0.022865 0.013933 -0.014056 -0.092923 0.075324 0.002550 0.006051 -0.074776 0.035465 0.027474 0.120921 0.027105 0.061516 -0.026568 0.024123 0.047036 0.024385 0.003344 0.059906 -0.051191 -0.053047 -0.027729 -0.001564 0.005823 0.010087 0.083294 -0.024265 0.042741 0.094994 0.021393 -0.083504 -0.083151 0.011291 -0.058920 0.012861 0.030070 0.042736 0.022911 -0.008546 -0.057609 -0.069900 0.088492 -0.002894 -0.066828 -0.009727 -0.047981 0.019844 -0.085641 0.000042 0.003014 -0.007295 0.035791 0.036123 0.067002 0.026630 -0.001636 0.009073 -0.016053 0.084871 -0.100683 -0.050020 -0.071874 0.072365 -0.036757 -0.017701 0.038197 0.053099 -0.056378 -0.028855 0.012463 -0.045723 -0.005667 0.064256 -0.028177 0.057826 -0.055872 0.030883 -0.002914 -0.097445 0.018108 -0.065132 0.064327 -0.036809 0.022530 0.032579 0.083859 -0.088729 -0.009218 0.070687 -0.027232 0.016749 0.037592 0.061102 0.155046 -0.004610 -0.031402 0.008374 -0.011437 -0.059360 -0.064021 -0.069056 0.022916 -0.003860 0.044792 -0.030508 0.057430 -0.013125 0.027304 -0.003144 -0.007603 -0.074523 -0.036823 0.004066 -0.035482 0.142619 0.062765 0.083342 -0.023363 -0.016003 0.016507 -0.060403 0.074455 -0.020249 -0.025938 -0.007470 0.084381 -0.106173 -0.060300 0.087411 0.014814 0.028437 0.010883 0.012873 0.103973 0.089761 0.027096 0.064947 0.033057 0.028486 -0.133571 -0.002210 -0.014149 0.005981 0.010927 -0.143115 0.070712 0.006923 0.044569 0.004846 -0.008362 -0.109156 -0.120284 -0.007157 -0.027002 0.075999 0.001357 -0.006077 -0.035577 0.042029 0.018068 0.017700 -0.038593 -0.058375 0.013590 0.094255 0.021156 -0.080328 -0.006126 0.058842 0.032376 0.051314 0.064136 -0.063765 0.028090 0.032284 0.078521 0.108677 0.012656 0.007400 -0.092093 -0.036734 0.056851 0.000116 -0.002036 -0.026805 0.084821 -0.011989 0.023502 0.064916 0.050640 -0.002411 -0.015045 -0.026830 -0.004301 0.065835 -0.025416 0.056093 0.090627 -0.051534 -0.023105 -0.029171 0.064099 -0.030773 -0.085191 0.015343 -0.005415 0.005626 0.013041 0.010729 0.018058 0.018453 -0.002180 0.089388 0.064815 0.021466 -0.092663 -0.019224 -0.008842 0.103392 -0.036092 -0.034972 -0.070552 -0.077454 -0.124438 -0.056352 0.069482 0.030672 -0.003203 -0.020694 0.070840 -0.004376 -0.102179 0.064995 -0.059481 0.049343 0.024210 -0.003858 0.056350 -0.015583 0.065190 -0.059043 -0.090407 0.042894 0.012225 0.074108 0.009773 -0.093983 0.048272 0.093970 0.039985 0.070722 0.010834 0.011975 0.135085 -0.000165 -0.021759 0.065164 -0.040893 -0.089985 -0.024270 -0.003863 0.030587 0.000069 -0.021155 0.028518 0.153614 -0.071797 0.070676 0.025584 0.005300 0.043065 -0.000089 -0.003734 -0.036750 0.018132 0.036268 0.168510 0.019026 -0.021440 0.042884 -0.095824 0.021242 -0.026137 -0.034052 -0.063076 0.031835 -0.012727 -0.084292 0.114347 0.068154 -0.074997 0.009182 -0.056381 0.161792 0.065873 -0.004008 0.052013 0.005326 0.018022 -0.114663 -0.107213 -0.079062 -0.037042 0.007951 -0.066766 0.089297 -0.035405 0.006611 0.013565 0.029000 -0.122667 -0.037773 0.030080 0.039640 0.112965 -0.038791 0.051681 0.018950 -0.002870 0.004002 -0.035366 -0.046099 -0.006632 -0.046456 0.064561 -0.045986 -0.052509 -0.045507 0.034342 0.094059 0.085895 -0.059965 0.047107 0.045776 -0.051041 0.069720 0.062871 -0.004318 0.016990 -0.053383 -0.000405 0.042032 0.061772 0.087463 0.018593 0.001180 -0.105041 0.036585 0.091364 -0.010729 0.002978 0.015583 -0.077926 -0.029862 -0.037549 -0.014135 0.056743 0.082538 -0.079858 -0.038190 -0.052196 -0.005951 0.095037 -0.039714 0.003105 0.009675 -0.006472 -0.098367 0.004226 0.018157 0.116425 -0.033752 -0.009903 0.043421 0.067382 -0.058642 -0.037966 -0.004321 0.046370 -0.039951 0.033751 -0.045280 -0.005703 -0.055692 -0.075669 0.043537 0.088421 -0.000079 -0.053451 0.015580 -0.177514 -0.037255 0.081872 -0.006931 0.040197 -0.040382 -0.030544 -0.032474 -0.073683 0.111389 -0.043286 -0.012181 -0.070486 0.021008 -0.006453 0.059025 -0.084346 -0.045844 0.134617 -0.026041 0.078112 -0.027141 -0.001031 0.044353 -0.065608 0.036661 0.045948 0.004303 -0.038662 -0.062062 -0.073388 -0.026033 -0.002636 -0.014067 -0.022648 0.128905 0.104651 0.091629 0.045550 -0.039856 -0.036999 -0.014194 0.058828 -0.095390 0.054826 0.108067 0.017921 0.007401 0.037480 -0.051214 -0.080561 0.050245 0.005451 -0.084552 -0.014427 0.003994 -0.067761 -0.042687 0.064428 0.056058 -0.024265 -0.093157 0.011618 0.006660 0.071511 -0.116214 0.061118 0.046247 0.008564 -0.083904 -0.015807 0.002628 -0.075241 0.045928 -0.025621 0.024239 0.024757 -0.010838 -0.006020 -0.007541 -0.087714 -0.046745 -0.086472 -0.058225 0.054459 0.025327 0.052933 -0.014453 -0.076697 -0.033271 -0.024850 -0.042314 0.006569 0.008881 0.074045 0.050097 -0.053039 0.019414 0.021988 0.024896 0.056649 0.014029 -0.029525 0.048784 -0.029431 0.042442 0.049334 -0.026698 0.072277 -0.101799 -0.008341 0.047314 0.082658 -0.016114 -0.042442 0.043527 -0.030064 -0.011416 0.013182 0.060549 0.002644 -0.070164 -0.045732 -0.022494 0.019693 -0.016130 0.079647 0.000137 -0.038661 0.034959 -0.041633 0.047926 0.003937 -0.073487 0.058946 0.065316 -0.021139 -0.029658 -0.005529 0.019340 0.005718 0.041614 0.046584 0.048974 0.064738 -0.076893 0.055570 -0.008793 -0.001555 -0.108121 0.080904 -0.073317 0.004653 -0.088656 -0.069282 0.058314 0.010922 0.012637 0.026970 0.078839 -0.078606 -0.003575 0.010350 0.012762 0.009724 -0.032223 0.025429 0.028469 -0.112814 0.072108 -0.066038 0.028088 0.021121 -0.042380 -0.040489 0.029521 -0.098778 0.078694 0.118164 -0.017958 0.087002 0.013197 -0.023191 0.159205 0.002982 -0.142188 0.019509 -0.062408 -0.050584 -0.091242 0.004705 0.040898 -0.034214 -0.000165 -0.013000 0.062856 -0.025148 0.102892 0.026243 -0.114277 0.061707 0.020581 -0.052551 -0.075429 0.028865 0.098236 0.087934 0.003941 0.037129 0.029683 -0.128548 0.026698 -0.036967 -0.019454 -0.078159 0.008871 -0.086884 -0.058585 0.059095 -0.041884 -0.137966 -0.017325 -0.057685 0.085566 0.119159 -0.011731 0.076164 0.059270 -0.000533 -0.073970 -0.001937 -0.048985 0.021162 0.035663 -0.047899 0.054477 -0.072253 0.030344 0.099352 -0.101163 -0.104366 -0.004390 0.017480 -0.006506 0.031974 -0.043831 0.028735 -0.033380 -0.037286 -0.025470 -0.075025 -0.009320 -0.001852 -0.019244 0.082659 -0.052343 -0.013826 -0.006310 0.016400 0.043020 0.054048 0.019322 0.025350 0.000037 0.019873 -0.001509 0.073472 -0.050388 0.028730 -0.071807 -0.078877 -0.006660 0.042649 0.008729 -0.001538 0.090951 0.006897 0.044002 0.096566 0.016693 -0.023445 -0.061755 0.017879 -0.081886 0.054302 0.025875 0.073506 0.045439 0.035703 -0.050539 -0.024113 0.030719 0.003684 -0.089257 -0.009652 0.004777 -0.019300 -0.184163 0.032927 -0.044636 -0.031259 -0.075344 -0.014780 0.063123 0.067839 0.012301 -0.009528 -0.061510 0.097677 -0.067039 -0.006689 -0.004137 0.016930 -0.038502 -0.023013 0.052181 0.034074 -0.090822 -0.097151 0.030070 -0.043927 0.004506 0.049853 0.013260 0.049217 0.011345 -0.015640 -0.017375 -0.084889 0.027637 -0.083011 0.017271 0.011964 0.013770 -0.041388 0.021785 -0.113317 -0.104729 0.128840 -0.005522 0.005470 0.070867 0.034456 0.113067 -0.120802 0.015723 0.032177 -0.026534 -0.052353 -0.069474 -0.100515 0.121550 0.014104 -0.026758 -0.017051 0.063176 0.010188 0.007059 0.032242 0.002999 -0.038362 -0.058729 0.021051 -0.069408 0.065496 0.036434 0.024457 -0.051978 0.045735 -0.057632 -0.009011 0.056847 0.033616 -0.045577 -0.087817 0.102137 -0.027964 -0.002581 0.069852 0.041033 0.041021 -0.038913 -0.025533 0.043910 0.093674 0.006518 0.140256 -0.022931 0.003222 -0.164511 -0.012575 0.008372 0.023221 -0.013081 -0.086070 0.000152 0.053139 0.005914 0.050660 -0.044071 -0.047270 -0.079699 -0.047341 -0.038511 0.125150 0.012254 -0.032029 -0.013659 -0.058072 0.035218 -0.033783 -0.083119 0.046233 -0.049628 0.079349 0.065395 -0.090450 0.044946 0.046353 0.131024 0.076594 0.042978 -0.047922 0.002985 -0.056522 0.056443 0.112147 0.010900 0.000489 -0.020178 0.036351 0.129699 0.037153 0.027557 -0.079114 0.043216 -0.032491 0.071191 0.026446 0.111274 -0.011111 -0.062724 -0.000122 -0.019280 0.038617 -0.059199 0.111019 0.020501 -0.045138 -0.015061 -0.064807 0.065959 -0.054589 -0.087659 0.038646 0.014381 0.034881 -0.048543 -0.006280 -0.009214 0.027865 -0.032303 0.071681 0.064881 0.009542 -0.005854 0.079711 -0.030565 0.072960 -0.051732 0.009082 -0.047330 0.051060 -0.086171 -0.053292 0.117917 0.007520 0.006614 0.011574 0.052013 -0.067455 -0.037879 0.006855 -0.046269 0.030860 0.034071 -0.002125 0.048522 -0.066340 -0.050068 -0.091857 -0.039875 0.042169 -0.025418 -0.046173 0.047008 -0.159002 -0.047329 0.169123 -0.038203 -0.005754 -0.037022 0.040981 0.059210 -0.002242 -0.042617 0.044265 -0.059317 -0.044882 -0.074775 -0.083442 0.028007 -0.041098 -0.031959 0.043096 0.061795 -0.028197 0.040470 -0.018708 -0.008600 0.002891 0.053975 -0.024208 0.023791 0.009775 0.081813 0.089801 0.033188 0.016547 0.021751 -0.087759 0.023122 -0.022831 -0.039574 -0.020474 0.037836 -0.007783 -0.094861 0.073247 0.069161 -0.023846 -0.041333 -0.025772 0.087748 0.025988 -0.012948 0.064875 0.010587 0.013649 -0.041432 -0.081306 -0.084813 -0.006181 -0.038833 -0.069003 0.107345 0.007611 0.016453 0.041605 -0.043538 -0.126253 0.035968 -0.003914 0.021006 0.086272 -0.015117 0.004273 -0.017316 -0.011375 -0.050330 -0.020760 0.009092 -0.018200 -0.056900 0.062502 0.046639 -0.106123 0.033584 0.108129 0.061245 0.069683 -0.038308 -0.006263 0.062187 -0.026140 -0.006177 0.072540 0.026465 0.025257 0.000306 -0.033152 0.070377 0.032552 0.067946 -0.041184 0.068817 -0.042517 -0.023665 0.089426 -0.009517 -0.031905 -0.028876 -0.047198 -0.101750 -0.021643 0.030076 0.103800 0.003349 0.017493 0.002512 -0.094201 -0.005963 0.089063 -0.095130 0.050351 -0.004288 -0.067613 -0.131572 -0.051380 0.008583 0.005412 0.028560 -0.017345 0.004478 0.031108 -0.057891 -0.007459 -0.009374 0.004726 -0.032662 0.036793 -0.009074 -0.023603 -0.039928 -0.021853 0.074091 0.084789 0.020853 -0.007579 0.017575 -0.082903 -0.016044 0.033216 -0.023150 0.052294 0.018359 -0.025699 -0.035371 -0.079831 0.144398 -0.041178 0.060835 -0.045799 -0.044320 0.000953 0.061485 -0.045374 -0.093964 0.068302 -0.076466 0.119176 -0.014095 -0.009224 0.091475 -0.038545 0.004967 0.001667 0.028758 -0.091372 -0.095792 -0.025909 0.005482 0.031234 -0.025637 -0.021291 0.135677 0.020946 0.107580 0.013372 -0.085671 0.020971 -0.038560 0.038570 -0.017209 0.045906 0.060269 0.001966 0.032650 -0.006186 -0.072219 -0.189856 -0.007205 -0.015639 -0.055057 -0.065552 -0.053151 -0.128235 -0.012954 0.084159 0.026617 0.003305 -0.085995 0.047267 -0.020931 0.007625 -0.078957 0.121974 0.045764 0.005225 -0.141436 0.003027 0.051391 -0.036784 -0.001419 -0.053342 0.051094 0.015725 -0.019096 -0.002840 0.026380 -0.069790 -0.184245 -0.051566 -0.028396 0.071692 0.098005 -0.020301 0.016438 -0.046403 0.001404 -0.000052 -0.054688 -0.022357 0.007259 0.085506 0.017935 -0.014656 0.098405 0.054979 0.035010 0.075368 0.047790 0.037848 0.078374 -0.058610 0.016057 0.084829 0.041381 0.045231 -0.121185 -0.048619 0.095037 0.078616 0.022570 0.039332 0.081333 -0.008814 0.036266 0.020667 0.051651 0.048340 -0.014173 0.001842 -0.015009 0.034124 0.017931 0.056477 0.124333 0.001687 -0.029607 -0.069722 0.024592 -0.008487 -0.136955 -0.020417 0.039039 -0.063902 -0.051767 -0.039427 -0.040545 0.032784 0.056740 -0.001091 0.036666 0.028260 -0.081961 0.033769 0.027067 0.018663 -0.038013 0.000810 -0.051724 -0.017021 -0.083432 -0.113410 0.025947 0.004457 -0.019510 -0.003952 0.096457 -0.087833 -0.033332 0.032633 -0.028593 0.053980 0.004859 0.027062 0.027726 -0.054113 0.046789 -0.047480 -0.022139 0.006309 0.013074 0.001745 0.000719 -0.068648 -0.039339 0.124991 -0.017031 0.104387 0.075424 -0.064776 0.049930 0.021317 -0.031441 0.064129 -0.081324 -0.071417 -0.036637 -0.054516 0.069005 -0.034336 -0.097799 0.042552 0.103137 0.014131 0.086508 0.031131 -0.032366 0.059489 -0.003838 -0.064570 -0.002930 0.012624 0.042919 0.062446 0.044061 0.055589 0.003834 -0.094630 0.085990 -0.053889 -0.024564 -0.026389 -0.016842 -0.060025 -0.074654 0.030141 -0.008240 -0.045068 -0.051917 -0.152218 0.035234 0.028967 0.032527 0.062252 0.000908 -0.036356 -0.081610 -0.001575 0.014623 -0.004478 0.064008 -0.087800 0.081273 -0.017113 -0.018705 0.033443 -0.058350 -0.122667 -0.057365 0.033540 -0.050441 0.124594 0.013386 0.053846 -0.043376 -0.002266 -0.008195 -0.033995 0.053108 -0.040370 -0.064239 0.077268 -0.002621 -0.059563 -0.046177 0.004964 0.033231 0.064375 0.001192 0.114583 -0.058848 0.061280 0.006693 0.036098 0.009875 0.035834 -0.018310 -0.036184 -0.014992 0.069939 0.059780 0.016602 0.073982 -0.035990 -0.015685 0.078068 0.050322 -0.088097 -0.105328 -0.025670 -0.057722 -0.013893 0.006662 0.048590 0.078264 0.016992 -0.038464 -0.047615 0.099275 0.010093 -0.039867 0.011067 -0.011289 0.010908 -0.115702 0.003261 0.019257 -0.044432 0.040269 0.018630 0.024500 0.039527 -0.019008 0.039507 -0.072659 0.078072 -0.050083 -0.037195 -0.134288 0.019462 0.000276 -0.077134 0.027231 0.091209 -0.050042 -0.033161 0.001557 -0.033891 -0.049683 0.056345 -0.048181 0.069910 -0.020048 -0.046249 -0.039646 -0.128983 0.089155 -0.075828 0.037947 0.004400 0.018311 0.016766 0.013464 -0.103994 -0.006838 0.049909 0.006876 0.039950 0.026768 0.027940 0.106751 -0.086738 -0.030655 -0.023916 0.054319 -0.087527 -0.016511 -0.107128 0.027059 -0.002389 0.030765 0.000550 0.071481 0.033998 0.036687 0.048116 0.010056 -0.080424 -0.053276 -0.000327 -0.054330 0.094151 0.063155 0.020931 -0.026860 0.016310 -0.024435 -0.073159 0.050455 0.022409 -0.008454 -0.035545 0.054995 -0.048738 -0.044119 0.073997 0.039168 -0.014561 -0.032013 0.028242 0.039841 0.075847 -0.017028 0.060085 -0.021478 0.038475 -0.145149 -0.060014 -0.014315 0.056108 0.032615 -0.097225 0.033835 0.051055 0.042640 0.045231 0.000360 -0.041305 -0.108117 -0.023348 -0.045772 0.038096 0.000486 -0.013393 -0.093532 0.016559 0.001345 -0.008241 -0.068229 0.010724 0.006837 0.077785 0.024403 -0.089797 0.019810 0.041552 0.064900 0.067216 0.122533 -0.033019 0.073688 0.001023 0.040220 0.079306 -0.033084 -0.028731 -0.066533 0.015167 0.078774 0.036633 -0.011276 -0.029348 0.033478 0.000076 -0.011424 0.089071 0.107503 -0.027201 -0.024133 -0.086237 -0.015807 0.067867 -0.026911 0.055025 0.003279 -0.076609 -0.022878 -0.065051 0.117459 -0.064757 -0.048837 -0.006132 0.015775 -0.025174 -0.012054 -0.017396 -0.008215 0.026521 -0.033990 0.045441 0.100425 0.005545 -0.063862 0.021216 0.038286 0.073333 -0.080698 0.015085 -0.070552 -0.073377 -0.065780 -0.028242 0.031930 0.034800 0.014232 0.011229 0.097374 -0.050100 -0.132752 0.011148 -0.042578 0.076114 0.024497 -0.012283 0.120806 -0.036672 0.010487 -0.089491 -0.070409 -0.010691 -0.003941 0.028773 0.005044 -0.130679 0.045320 0.101038 0.007190 0.023122 -0.032858 0.071021 0.085183 -0.064280 -0.039826 0.069093 -0.045199 -0.056327 -0.038230 -0.030074 0.020018 0.043187 -0.037153 0.053548 0.081616 -0.046930 0.041026 -0.013232 -0.029798 -0.007515 -0.009780 -0.014618 -0.049999 0.086479 -0.000441 0.122169 0.000547 -0.072517 0.024520 -0.173329 0.033337 -0.032822 -0.039451 -0.029459 -0.010553 -0.014511 -0.042816 0.043535 0.098090 -0.011974 -0.009803 -0.011320 0.103835 0.068587 0.016565 0.009926 -0.038017 -0.036161 -0.141386 -0.056138 -0.087531 0.012520 0.001341 -0.028710 0.134825 -0.022612 0.025072 0.059725 -0.059548 -0.077144 -0.055577 0.008583 0.014431 0.160366 -0.000317 0.069355 0.021539 -0.030848 -0.001411 0.003884 -0.021168 -0.002315 -0.031485 0.058421 -0.069080 -0.089460 -0.074381 0.044224 0.078251 0.015334 -0.018453 0.024757 -0.006325 -0.030304 0.041022 0.051034 -0.000912 0.014462 -0.042230 -0.034329 0.049998 0.042384 0.055463 -0.026732 0.016663 -0.070257 0.027628 0.032582 0.025606 0.007339 -0.016995 -0.014641 -0.013348 -0.035777 -0.048054 0.072409 0.073357 0.019992 -0.053669 -0.099428 0.009662 0.053875 -0.084206 -0.028164 0.001825 -0.007384 -0.118351 0.036128 -0.052874 0.044796 -0.008440 0.034462 0.021959 0.038695 -0.029505 -0.010005 0.006580 -0.019193 -0.033304 -0.006948 -0.032920 -0.035370 -0.048525 -0.089756 0.086975 0.071726 -0.061466 -0.022927 0.037104 -0.115937 -0.074302 0.095124 0.034074 0.041596 -0.019002 -0.078886 -0.046289 -0.026431 0.075125 -0.085653 0.030848 -0.087457 -0.013738 -0.079060 0.085171 -0.076996 -0.026743 0.040359 0.001789 0.092574 -0.022293 0.036215 0.020128 -0.057905 0.020242 0.017234 -0.015028 -0.102072 -0.050335 -0.106620 -0.024631 -0.035796 -0.019773 0.029319 0.102570 0.030958 0.052784 0.035726 -0.058017 -0.006419 -0.004020 -0.014277 -0.047373 0.048700 0.111928 0.002486 0.008505 0.051728 -0.097055 -0.122271 0.071235 0.003188 -0.039588 -0.076039 0.021148 -0.078617 -0.065872 0.029089 -0.000290 0.000898 -0.140194 0.058506 -0.007075 0.002829 -0.061576 0.057297 0.022539 -0.043176 -0.078264 -0.026623 0.050164 -0.067814 0.043950 -0.089140 0.025451 0.015987 -0.021710 -0.023764 -0.037703 -0.092210 -0.086925 -0.088289 0.020833 0.085474 0.007660 0.032167 -0.047200 -0.148647 -0.011014 -0.056924 -0.066650 0.000222 0.031116 0.120665 0.017924 -0.052237 0.024475 0.057260 0.023098 0.039613 0.002833 0.015113 0.005702 -0.065102 0.150484 0.040642 -0.062865 0.018220 -0.104305 -0.058038 0.078032 0.062938 -0.043059 -0.041551 0.090274 -0.090255 0.003055 0.024771 0.053662 0.023982 -0.007128 -0.022873 0.016118 0.029948 -0.005441 0.027042 0.035737 -0.062768 0.026554 -0.001648 0.046026 -0.015209 -0.061640 0.080279 0.035525 -0.062174 -0.071438 -0.038252 0.017523 0.005805 0.027560 0.022277 0.116677 0.082862 -0.023075 0.020718 0.028369 -0.000644 -0.106525 -0.000025 -0.058375 0.061774 -0.034461 -0.117604 0.015663 0.025243 0.050739 -0.035373 0.050164 -0.097896 -0.016953 -0.005625 -0.011887 0.038968 0.009589 0.020354 0.073417 -0.037194 0.001085 -0.082529 -0.002741 0.018895 0.000683 -0.005260 0.037680 -0.057914 0.012065 0.095507 -0.006422 0.038327 0.053359 -0.034912 0.104532 -0.034267 -0.091475 -0.037716 -0.084581 -0.011088 -0.054143 0.048128 0.015983 0.020394 -0.028289 -0.010829 0.083357 -0.051892 0.095076 0.000131 -0.014931 0.032836 0.067972 -0.033453 -0.011655 0.043489 0.044985 0.063936 -0.002184 -0.038102 0.055724 -0.108760 -0.005538 -0.065997 0.004333 -0.074726 -0.015630 -0.015614 -0.126012 0.028542 0.044984 -0.082637 -0.073741 -0.053097 0.043995 0.064370 -0.042989 0.078666 0.032226 -0.050840 -0.030220 -0.007436 -0.034516 0.018953 0.031855 -0.118774 0.087949 -0.022126 -0.018807 0.026136 -0.060837 -0.058430 -0.043270 -0.023841 -0.001635 0.100076 -0.051546 0.008906 -0.018942 -0.046607 -0.031680 -0.056224 0.042606 0.027052 -0.054425 0.104195 -0.058465 -0.062190 -0.009973 0.010150 0.018185 0.049565 -0.005886 0.094118 0.002006 0.034862 -0.013054 0.093378 -0.068149 0.010758 -0.011233 -0.061272 0.036668 0.049859 -0.008436 0.036689 0.126919 -0.002194 0.048726 0.081941 -0.048791 -0.035094 -0.075793 0.038586 -0.043391 0.024660 0.042400 0.074817 0.074537 0.022976 -0.091022 -0.044301 0.025592 0.019796 -0.129796 0.029916 0.017043 -0.041798 -0.122413 0.049991 0.006262 -0.014011 -0.015763 -0.024958 0.007419 0.020053 -0.006102 -0.004461 -0.047792 0.040663 -0.058097 0.018616 -0.023217 0.001382 0.001452 -0.062222 0.051898 0.052539 -0.068723 -0.000916 0.071418 -0.060541 -0.020258 0.063725 0.074490 0.080845 -0.023018 -0.006902 -0.045143 -0.078702 0.018868 -0.044159 0.011980 0.025938 0.021655 0.025290 0.063764 -0.132708 -0.035846 0.091140 -0.021667 0.037332 0.035687 -0.056994 0.140855 -0.102945 -0.006009 0.023620 0.000204 -0.022699 -0.019046 -0.095351 0.050022 -0.004054 -0.019058 -0.006429 0.068069 0.054649 0.022500 0.029309 0.030159 -0.011081 -0.085224 -0.029775 -0.097594 0.132106 0.026943 0.016069 -0.012230 0.046209 -0.034177 -0.048993 0.094154 -0.006547 -0.043268 -0.100110 0.130569 -0.083928 0.008317 0.041995 -0.020555 0.004803 -0.056359 0.023566 0.050093 0.044221 0.017323 0.073761 0.000300 -0.034851 -0.062557 0.003592 -0.037316 -0.023709 -0.011929 -0.063727 0.008558 0.029238 0.012654 0.027199 -0.057145 -0.011774 -0.078417 -0.053560 -0.003741 0.037455 -0.039273 -0.042025 -0.002715 -0.030644 0.024806 0.010899 -0.041167 0.026322 -0.013442 0.040313 0.057461 -0.057587 0.046460 0.004776 0.094893 0.063931 -0.013181 -0.024787 0.046427 0.000830 0.004541 0.070036 0.012732 0.022279 -0.046965 -0.012615 0.106753 0.032489 -0.016696 -0.061242 0.021789 -0.044774 0.022712 0.030946 0.067933 -0.021075 -0.043324 -0.010231 -0.077078 0.089327 -0.073913 0.129378 0.001532 -0.043316 -0.016732 -0.026599 0.046714 -0.088765 -0.101898 -0.000950 -0.012357 0.078311 -0.025387 -0.053598 0.022292 0.050494 -0.007031 0.067206 0.032304 -0.012170 -0.015225 0.029593 -0.011657 0.043622 -0.062834 0.042909 0.003119 -0.005148 -0.106709 0.013981 0.016710 0.024731 -0.050424 0.039756 0.053237 -0.088869 -0.030557 0.019223 -0.011248 0.001772 0.041389 -0.019693 0.032684 -0.038816 -0.003782 -0.038112 -0.064818 -0.036779 0.002321 -0.011310 -0.005428 -0.097258 -0.068507 0.117705 0.010296 0.057410 -0.042191 0.060044 0.076100 0.070634 -0.052272 0.109450 -0.024491 -0.060570 -0.062604 -0.023828 0.043683 -0.008675 0.020641 0.026445 0.122122 -0.030590 0.007406 -0.006945 -0.038838 0.022271 0.036487 -0.008083 -0.015591 0.089045 0.103083 0.080265 0.048011 0.008577 -0.024779 -0.098878 0.047757 -0.034944 -0.071262 -0.029632 0.058633 -0.031833 -0.086670 0.020910 0.017850 -0.060040 -0.000118 0.072375 0.123805 0.028335 0.006174 0.050778 0.022055 -0.013090 -0.021358 -0.030207 -0.129857 -0.009686 -0.036702 -0.094352 0.083990 -0.027328 0.022973 0.088840 -0.029830 -0.041108 0.007991 0.010351 0.043580 0.088045 0.019792 0.034260 -0.018485 -0.026954 0.001393 -0.028881 -0.009226 -0.007746 -0.080511 -0.012092 -0.026729 -0.115592 -0.019491 0.098337 0.046778 0.072298 -0.078237 0.005173 0.056223 -0.004141 0.066867 0.056189 0.017966 0.044171 0.000676 -0.045110 0.018200 0.032009 0.030245 -0.024198 0.053369 -0.032949 0.005817 0.101192 0.004770 -0.022792 0.027114 0.010600 -0.037525 -0.040021 0.003401 0.139637 0.013348 -0.003801 -0.031619 -0.055232 -0.000905 0.059632 -0.125609 -0.015414 0.054802 -0.053951 -0.064755 0.024768 0.023636 0.018903 -0.000431 -0.029042 0.021020 0.004843 -0.036543 -0.029041 -0.023141 0.025949 -0.071411 -0.019207 0.007088 0.038696 -0.038765 -0.019290 0.071608 0.100669 0.002161 -0.019148 -0.033723 -0.110313 -0.048374 0.036294 -0.011707 0.027523 -0.005146 -0.049367 -0.011778 -0.100402 0.063310 -0.031106 0.021885 -0.095761 -0.080098 0.004308 0.033965 -0.080439 -0.023927 0.055660 0.007395 0.124410 -0.073291 0.004189 0.060944 -0.045152 -0.060831 0.024748 0.002404 -0.137119 -0.070340 -0.011515 -0.026093 0.074911 -0.008646 -0.046756 0.070610 0.043733 0.056208 -0.004307 -0.017910 -0.044341 -0.049322 -0.031960 -0.031297 0.041787 0.064553 0.010380 -0.009674 -0.056380 -0.131194 -0.102372 0.013069 -0.040055 -0.101666 -0.095641 0.031396 -0.040243 -0.044960 0.107223 -0.038146 0.043004 -0.091273 0.008832 0.035095 0.018303 -0.033024 0.111336 -0.012516 -0.088527 -0.138520 -0.042476 0.043839 -0.066586 0.012378 -0.100214 0.030453 -0.045537 -0.058136 -0.024370 0.006936 -0.057720 -0.111712 -0.062832 -0.049461 0.055617 0.032267 -0.008208 -0.024939 -0.062605 0.007490 -0.019889 -0.032406 -0.002685 -0.018727 0.104523 0.024688 -0.046299 0.058710 0.060194 0.045739 0.021202 -0.014056 0.012044 0.058266 -0.001396 0.021628 0.093785 -0.015184 0.056542 -0.100357 0.020669 0.075524 0.037202 -0.028476 -0.004358 0.088662 -0.013431 0.058653 0.069303 0.068988 0.033660 -0.062939 0.018950 -0.056021 0.021534 -0.016087 0.075798 0.048597 -0.010444 0.007248 -0.063630 0.010521 -0.014106 -0.074996 -0.000773 0.053311 -0.048215 -0.002735 -0.017992 -0.002647 0.020040 0.029636 -0.022757 0.078272 0.023803 -0.057204 0.024134 0.064828 0.052842 -0.109740 -0.016306 -0.097522 0.035253 -0.097609 -0.069816 0.027249 0.039346 -0.007883 0.014192 0.087185 -0.137182 -0.071137 0.013525 0.010840 0.070855 0.012224 0.018564 -0.008135 -0.046474 0.058225 -0.040550 -0.011424 -0.027632 -0.035317 0.023198 0.038554 -0.081506 -0.012968 0.096501 0.027391 0.100326 0.005492 -0.058045 0.112112 0.002180 -0.025343 0.025626 -0.099536 -0.061595 -0.061651 -0.027489 -0.010581 -0.017782 -0.053973 -0.034355 0.078629 0.008211 0.072702 0.071223 -0.044680 0.012444 -0.044745 -0.139050 0.003441 0.000913 0.094752 0.048346 -0.007363 0.025892 0.010184 -0.176655 0.133261 0.001621 -0.024628 -0.030137 -0.007947 -0.085652 -0.029719 0.022053 0.013686 -0.080132 -0.026124 -0.070528 0.051163 0.066954 0.055796 0.025845 -0.010124 -0.065017 -0.069344 -0.022724 -0.000369 0.053467 0.016636 -0.040196 0.075376 -0.016667 -0.029877 0.004811 -0.023632 -0.097696 0.009076 0.002224 -0.010353 0.064867 -0.044772 0.077105 -0.055734 -0.018593 0.032803 -0.059184 0.036008 -0.007975 -0.100334 0.044830 -0.020643 -0.039421 -0.010042 0.007773 0.099620 0.108164 0.029716 0.078106 -0.011285 0.030783 0.081425 0.047785 -0.040324 0.065464 -0.037268 -0.020200 -0.013981 0.005168 0.027259 -0.021859 0.088221 -0.057304 0.044425 0.092606 0.044230 -0.055754 -0.033767 -0.019787 -0.048782 0.003298 0.018153 0.021226 0.068475 -0.047841 -0.084262 -0.076417 0.054885 -0.017738 -0.064677 -0.017373 -0.033227 -0.010808 -0.146013 0.005243 -0.037539 -0.015601 0.022925 -0.011193 0.044758 0.012972 -0.010808 0.024612 -0.056295 0.056909 -0.080235 -0.047137 -0.029242 0.056368 -0.002198 -0.035936 0.027306 0.075325 -0.064563 0.000437 -0.011783 -0.026348 -0.005163 0.082637 0.004076 0.084051 -0.032954 0.031309 -0.006451 -0.094091 0.012843 -0.029321 0.020598 0.015005 -0.014363 0.013016 0.075182 -0.086563 -0.024242 0.085406 -0.009668 0.002995 0.003827 0.027577 0.119405 -0.019147 0.005101 -0.010265 0.032537 -0.051797 -0.040632 -0.068586 0.019971 -0.056266 0.018425 -0.035550 0.044019 -0.018450 0.013988 -0.007499 -0.030389 -0.047227 -0.036402 -0.019853 -0.021715 0.089123 0.033422 0.051031 -0.043643 0.004053 0.039026 -0.092898 0.069717 0.002242 -0.073405 -0.022716 0.065550 -0.109492 -0.065737 0.051307 -0.007900 -0.001899 -0.038721 0.061064 0.068115 0.108020 -0.005186 0.091419 0.038141 0.068502 -0.119719 -0.032776 -0.034200 0.022829 0.022600 -0.114802 0.021444 0.011983 -0.010708 0.025008 0.016734 -0.058795 -0.121062 -0.020649 -0.036630 0.056523 -0.002163 0.027921 -0.063293 0.012239 0.014511 0.034178 -0.056068 -0.063080 0.014943 0.080895 0.063737 -0.133859 0.016385 0.042840 0.046425 0.058005 0.035977 -0.084512 0.057576 -0.010982 0.060681 0.072678 -0.008045 0.001068 -0.085375 -0.058554 0.098160 0.011639 0.009086 -0.053064 0.074379 -0.027243 -0.013015 0.121189 0.047177 -0.009998 -0.034644 -0.007092 -0.012841 0.075861 0.011568 0.086842 0.045432 -0.079240 -0.025773 -0.009674 0.064448 -0.018079 -0.118996 0.009565 -0.016846 -0.011029 -0.006024 0.033095 0.005964 -0.000340 -0.012580 0.081590 0.052148 -0.008312 -0.076947 0.027736 0.018812 0.136957 -0.054412 -0.040884 -0.124297 -0.047994 -0.081925 -0.033440 0.118449 0.044842 0.004569 -0.006306 0.075165 -0.038914 -0.081500 0.038445 -0.078834 0.047793 -0.013885 0.006954 0.039465 -0.031245 0.038253 -0.039471 -0.057441 0.034043 -0.029460 0.017171 0.000194 -0.094801 0.013428 0.116396 0.026097 0.041725 0.007773 -0.017706 0.115162 -0.031613 -0.010630 0.042917 -0.039768 -0.139730 -0.048469 -0.000045 0.028945 -0.004139 -0.081954 0.003386 0.115256 -0.049927 0.077924 0.020540 -0.017751 0.003371 -0.011666 -0.022988 -0.072458 0.027132 0.049961 0.112610 0.047083 -0.041033 0.043690 -0.084367 0.071528 -0.011307 -0.010002 -0.059736 0.049793 -0.043057 -0.038207 0.109289 0.066216 -0.043249 -0.011953 -0.042904 0.111380 0.021751 0.023150 0.051803 -0.041532 -0.082754 -0.165799 -0.145192 -0.159015 -0.036957 -0.008840 -0.028641 0.105964 0.006864 0.029247 0.059193 0.009831 -0.144329 -0.047501 -0.014033 0.041089 0.095670 -0.051674 0.049619 0.031086 -0.026835 -0.015872 -0.041019 -0.016594 -0.047321 -0.050941 0.108942 -0.059399 -0.094262 -0.082008 0.021291 0.061910 0.073377 -0.015244 0.057463 0.023209 -0.065966 0.034032 0.111775 -0.021516 0.014300 -0.031041 -0.012892 0.024486 0.045971 0.041949 0.025017 -0.003197 -0.044689 0.046157 0.053074 -0.010276 -0.022357 0.014208 -0.059017 -0.049325 0.007655 0.034365 0.071554 0.043755 -0.026127 -0.068545 -0.041093 -0.027706 0.042534 -0.059878 -0.006088 0.036135 -0.000512 -0.141426 0.019792 0.031442 0.038225 -0.087692 -0.006095 0.062862 0.064053 -0.026935 -0.004107 -0.015518 0.018237 -0.054342 0.025962 -0.043604 -0.041405 -0.044407 -0.066543 0.052842 0.123468 0.018775 -0.097456 0.021557 -0.111244 -0.022276 0.087995 0.020846 0.009786 -0.024442 -0.000924 -0.021387 -0.115466 0.059505 -0.084840 -0.018622 -0.039091 0.041857 -0.059951 0.027552 -0.106180 -0.013005 0.077819 -0.057001 0.037112 -0.006017 0.017069 0.035373 -0.036667 0.041547 0.030229 -0.017543 -0.020408 -0.084738 -0.062925 -0.014286 -0.003367 -0.001926 0.040560 0.163635 0.057733 0.052600 0.014935 -0.041074 -0.038673 -0.009607 0.035704 -0.049327 0.051517 0.079677 0.024194 -0.021034 -0.014069 -0.062355 -0.078356 0.049042 -0.028768 -0.088463 -0.035194 0.027880 -0.078732 -0.051166 0.029644 0.064622 -0.002258 -0.067584 0.014417 0.014299 0.025278 -0.095873 0.081486 0.018230 -0.014653 -0.093112 -0.067755 0.006200 -0.038621 0.033831 -0.065313 0.022443 0.016583 -0.013554 -0.003383 -0.003813 -0.038565 -0.079906 -0.054026 -0.097241 0.089312 -0.012968 0.081033 -0.047581 -0.080574 -0.024559 -0.018898 -0.082106 0.008601 -0.028523 0.100338 0.112593 -0.048526 0.027421 0.024654 -0.000988 0.060571 -0.007538 0.008276 0.041800 -0.035683 0.044325 0.088914 0.019003 0.052585 -0.106627 -0.043862 0.018154 0.061095 -0.055270 -0.060593 0.071565 -0.023743 -0.010098 0.052293 0.067864 0.013882 -0.062200 -0.017320 0.007520 -0.015594 -0.023894 0.092727 0.029631 -0.013572 0.043058 -0.024937 0.054426 -0.006383 -0.060407 0.031096 0.077251 -0.051193 -0.028054 0.013443 -0.006446 0.025674 0.011140 0.025108 0.078829 0.096347 -0.120869 0.009600 -0.016833 -0.041386 -0.147598 0.012379 -0.080149 -0.001507 -0.061584 -0.069511 0.053464 -0.028698 0.050460 0.034750 0.053162 -0.062058 -0.000099 0.013018 -0.014428 0.008787 -0.021213 0.031728 0.032305 -0.106213 0.027220 -0.042487 -0.013001 0.042839 -0.025383 -0.014866 0.006080 -0.055914 -0.004772 0.111496 -0.048142 0.101228 -0.000113 -0.007065 0.108619 -0.026644 -0.081066 0.026279 -0.049199 0.003818 -0.043697 0.009844 0.051099 -0.021007 -0.012906 -0.013888 0.109787 -0.054136 0.054741 0.002659 -0.080186 0.041342 -0.004960 -0.009585 -0.090940 0.035445 0.084784 0.071802 0.004212 0.000051 0.061246 -0.179092 0.004524 -0.066032 -0.062309 -0.052999 0.003717 -0.054731 -0.063044 0.065802 0.005675 -0.083010 0.009338 -0.050599 0.044865 0.069794 0.035892 0.069365 0.077322 -0.037515 -0.101389 -0.032958 -0.023327 0.004893 0.076975 -0.094625 0.108672 -0.084543 0.029133 0.033581 -0.097391 -0.099645 -0.008470 0.047506 0.014070 0.037599 -0.039370 0.027529 -0.037487 -0.030513 0.001358 -0.109004 0.006393 0.046480 -0.005807 0.072837 -0.015338 -0.034187 -0.036067 0.007979 0.057660 0.043930 0.022410 0.054219 -0.000956 0.022423 0.048054 0.091746 -0.006642 0.030166 -0.048592 -0.040789 -0.005702 0.007988 0.043955 -0.019103 0.106518 0.024012 0.042589 0.059798 -0.006033 -0.026617 -0.048288 0.015792 -0.114984 0.000601 -0.000354 0.067489 0.038969 0.014313 -0.064460 -0.002179 0.051347 -0.002092 -0.105852 -0.031092 -0.032437 -0.000174 -0.128927 -0.008284 -0.009141 -0.076672 -0.015283 -0.049413 0.056280 0.045565 -0.006905 0.022082 -0.085801 0.050952 -0.050910 -0.017483 0.005888 -0.006170 -0.061465 -0.030951 0.035802 0.015739 -0.083792 -0.044795 0.060723 -0.030343 -0.069566 0.030676 0.038387 0.050804 0.004892 0.017579 -0.044803 -0.090476 -0.017970 -0.069598 0.035520 0.006056 0.044354 -0.061744 0.058806 -0.130744 -0.057101 0.099578 -0.045874 -0.002499 0.046826 0.049723 0.098173 -0.082881 0.073610 -0.011594 -0.009669 -0.094859 -0.037445 -0.119323 0.065051 -0.015284 -0.026778 0.005845 0.048246 0.025717 0.028300 0.003404 -0.007273 -0.021871 -0.079752 -0.013062 -0.126858 0.059483 0.049526 0.036093 -0.056998 -0.003159 -0.043116 -0.016197 0.089723 0.016100 -0.051512 -0.060459 0.061427 -0.060520 -0.010836 0.070291 -0.004533 0.015834 -0.031588 0.046681 0.024603 0.057986 -0.000132 0.098934 -0.017240 0.002476 -0.113392 0.016989 0.001335 -0.009243 0.021430 -0.088867 0.016496 0.036539 -0.024722 0.027988 -0.025209 -0.037811 -0.070416 -0.027312 -0.042762 0.085979 -0.017748 0.001795 -0.038652 -0.032652 0.049244 -0.003571 -0.092866 0.021843 -0.080697 0.081009 0.019897 -0.063178 0.025596 0.016382 0.119656 0.092436 -0.016244 -0.023622 -0.006095 -0.013438 0.039393 0.098847 0.026872 0.057469 -0.033557 -0.019961 0.171557 0.009244 -0.003066 -0.087323 0.039711 -0.024124 0.027198 0.088494 0.108382 0.011044 -0.127500 -0.035575 -0.083203 0.035144 -0.032137 0.120334 0.002031 -0.020743 0.003890 -0.046130 0.060318 -0.032118 -0.093914 0.036450 0.036482 -0.003628 -0.045976 -0.020514 0.020744 0.028721 0.002437 0.114939 0.051708 0.055899 -0.024311 0.024351 -0.064421 0.084144 -0.108787 0.030475 -0.042867 0.008077 -0.063222 -0.026071 0.061247 -0.016598 0.011100 0.007787 0.023799 -0.068735 -0.056142 0.025938 -0.060156 0.050084 0.037444 -0.022008 0.010303 -0.098972 -0.052827 -0.061667 -0.068986 -0.011902 -0.042759 -0.084042 -0.002067 -0.151469 -0.017637 0.134014 -0.026226 0.026110 0.007490 0.021463 0.079145 0.014098 -0.019123 0.079837 -0.010640 -0.040407 -0.116967 -0.015889 0.022180 -0.005119 -0.014871 0.057013 0.068658 -0.079078 0.058641 -0.006509 -0.034086 -0.022005 0.041557 0.016029 -0.003335 0.062705 0.037826 0.092035 0.047014 0.007296 -0.014070 -0.130533 -0.001078 0.025557 -0.063677 -0.037435 0.030993 -0.040663 -0.133077 0.001203 0.087675 -0.028956 0.005954 0.030377 0.094103 0.031530 0.029501 0.058250 0.043750 0.005780 -0.081652 -0.046912 -0.071344 0.049909 -0.017203 -0.105850 0.077672 0.063239 0.015203 0.080354 -0.019175 -0.126004 0.012938 0.004638 -0.013389 0.087621 -0.010466 0.023940 -0.002703 -0.035427 -0.059936 -0.035946 0.018749 0.025763 -0.100231 0.035256 0.021093 -0.102097 -0.023912 0.065319 0.051327 0.052308 0.008324 0.018600 0.027370 -0.019629 0.003753 0.074711 -0.009465 0.042899 -0.007945 -0.044091 0.057014 0.043860 0.063015 -0.053778 0.033882 -0.018588 -0.007623 0.070289 0.017506 -0.028443 -0.016436 -0.016131 -0.087520 -0.000211 0.013207 0.081102 0.026870 0.010280 -0.039354 -0.085402 0.005385 0.045387 -0.075274 0.005158 0.013437 -0.061107 -0.123832 -0.006790 0.046660 0.021633 0.005414 -0.004335 -0.011498 0.029755 -0.025547 -0.002465 0.008431 0.032361 -0.039776 0.018846 -0.007647 -0.002531 -0.054317 -0.034538 0.095049 0.040090 -0.016239 -0.046115 0.006000 -0.083863 -0.018887 0.001956 -0.005777 0.053960 0.003049 -0.028290 -0.017755 -0.044904 0.084936 -0.038020 0.048751 -0.036897 -0.069299 0.003508 0.029780 -0.079610 -0.085660 0.060685 -0.006321 0.078501 0.006878 -0.000940 0.062341 -0.042279 -0.015673 0.013762 -0.029805 -0.051092 -0.117256 -0.046978 -0.012383 0.024326 -0.000611 -0.046838 0.087711 0.032932 0.089398 -0.013201 -0.035642 -0.013591 -0.019974 0.002673 -0.016622 0.070976 0.074861 0.005584 0.013705 0.013057 -0.070513 -0.132482 0.011905 -0.021242 -0.092172 -0.098335 -0.045995 -0.077946 -0.013171 0.148310 0.023267 -0.011841 -0.094360 -0.008329 0.001195 -0.000926 -0.099253 0.141073 0.039201 0.001784 -0.135018 -0.082677 0.044641 -0.005949 -0.030037 -0.085312 0.049127 0.014847 -0.013469 -0.002593 -0.056090 -0.045962 -0.191274 -0.041064 -0.030590 0.082413 0.061704 0.022132 0.035533 -0.066234 0.034454 -0.009588 -0.050467 -0.029761 -0.016491 0.067872 0.038969 -0.039014 0.057543 0.047087 0.043850 0.039443 0.054508 0.058856 0.109195 -0.043374 0.070615 0.089501 0.024405 0.045632 -0.080334 -0.004657 0.067992 0.068464 -0.013325 0.052791 0.040606 -0.016031 0.043482 0.025913 0.030708 0.051020 -0.058413 0.012923 -0.031961 -0.001425 0.025659 0.065492 0.081425 -0.018210 0.009682 -0.008238 0.027227 -0.047221 -0.123710 0.027984 0.046569 -0.051906 -0.013099 -0.010653 -0.030766 0.027285 0.060770 -0.039564 0.053122 0.066810 -0.114075 0.054466 0.054259 0.024216 -0.045685 -0.001518 -0.082578 -0.026337 -0.055608 -0.075956 0.054064 0.026871 0.015694 0.016757 0.129806 -0.052800 -0.016678 0.048569 -0.001337 0.027199 0.004454 0.027064 0.019218 -0.065149 0.034752 -0.071056 -0.047284 -0.001601 -0.021741 0.012135 -0.006775 -0.080880 -0.033474 0.068299 0.002424 0.082260 0.038960 -0.030455 0.105682 0.013086 -0.054492 0.067646 -0.084988 -0.031769 -0.005191 -0.045479 0.025036 -0.054564 -0.097375 0.013290 0.107239 -0.037042 0.136211 0.054048 -0.044849 0.071688 0.021370 -0.065162 -0.020715 -0.035790 0.090635 0.057812 -0.008215 0.061018 -0.000019 -0.085259 0.052848 -0.027541 -0.005643 -0.052940 -0.038511 -0.027902 -0.041703 0.075862 0.013165 -0.059187 -0.036318 -0.141024 0.082443 0.069711 -0.013203 0.014406 0.030125 -0.045500 -0.041806 0.002497 0.025155 0.017453 0.003895 -0.083765 0.104400 0.011102 -0.048345 0.018909 -0.030988 -0.072003 -0.023689 0.039778 -0.011208 0.089401 -0.003381 0.064581 -0.037057 0.017900 0.009406 -0.035557 0.007209 -0.003241 -0.108553 0.107998 -0.002787 -0.041577 -0.001725 0.010872 0.036545 0.091885 0.044958 0.069362 -0.032205 0.088568 0.031341 0.039043 0.010331 0.015777 -0.034748 -0.023237 0.005678 0.045804 0.043555 0.039834 0.109120 -0.055790 -0.015894 0.100543 0.050280 -0.072103 -0.045188 -0.011023 -0.045609 0.030003 -0.010336 0.063708 0.019876 0.039063 -0.034557 -0.076987 0.129728 0.030980 -0.069793 0.006613 -0.009915 -0.020373 -0.069965 0.002061 0.000541 -0.052867 0.092944 0.006017 0.032142 0.001437 0.012183 0.032717 -0.116354 0.039141 -0.103482 -0.032555 -0.058604 0.051576 -0.057991 -0.087256 0.032997 0.087854 -0.040337 -0.024261 0.038911 -0.077252 -0.039797 0.081800 0.001805 0.100735 0.013940 0.003214 -0.061214 -0.144295 0.008308 -0.079288 0.011819 -0.009353 0.021735 0.041214 0.036036 -0.075607 -0.035037 0.053300 0.014234 0.024169 0.037498 0.041347 0.073833 -0.068231 -0.042470 0.014760 0.033778 -0.058964 -0.006533 -0.067729 -0.003610 -0.018476 0.009825 -0.029418 0.050496 0.036382 0.060848 0.025206 -0.004172 -0.075537 -0.012303 -0.004545 -0.052962 0.118191 0.014623 0.029139 0.011171 0.016876 -0.013963 -0.059052 0.080971 0.002827 -0.003879 -0.049140 0.078897 -0.085060 -0.088602 0.131228 0.004221 -0.011391 -0.071427 0.017718 0.070627 0.054229 -0.044273 0.070835 0.025214 0.000275 -0.196338 -0.055537 -0.009349 0.028434 0.030911 -0.087382 0.065504 0.032241 0.011778 0.089297 0.008448 -0.051996 -0.159620 -0.008923 -0.062831 0.056001 0.025205 -0.012758 -0.071953 -0.005149 0.018063 -0.014935 -0.030631 0.013403 0.008570 0.080274 0.062037 -0.129636 0.011472 0.077844 0.062828 0.098467 0.066360 -0.086768 0.078864 0.029290 -0.000317 0.128502 0.004070 -0.025683 -0.096323 -0.046173 0.149402 0.030056 -0.030776 -0.044512 0.070740 -0.008688 0.014318 0.073530 0.097921 0.001865 -0.050654 -0.033176 -0.025587 0.089396 -0.054027 0.105766 0.000104 -0.058115 -0.051152 -0.028157 0.079932 -0.060212 -0.086791 0.029739 -0.006208 -0.054993 -0.004691 0.017634 -0.011116 0.051677 -0.039065 0.062654 0.079876 0.012684 -0.029185 -0.019667 0.012281 0.089665 -0.044542 0.013976 -0.055887 -0.029754 -0.078267 -0.023077 0.060156 0.047758 -0.017389 0.027009 0.061441 -0.041074 -0.115783 0.058611 -0.060866 0.113852 0.028394 -0.032204 0.051306 -0.045035 0.012411 -0.104662 -0.067768 0.005348 -0.053385 0.029868 0.023673 -0.127300 0.010816 0.112224 -0.017053 0.061578 -0.040140 0.049130 0.081442 -0.020925 -0.013124 0.049795 0.000088 -0.080273 -0.041920 -0.006154 0.026384 -0.017665 -0.029077 0.028767 0.109973 -0.064974 0.016728 0.012762 -0.017789 -0.018455 -0.027535 -0.026842 -0.082729 0.081654 0.058251 0.101281 0.008607 -0.074243 0.030006 -0.114336 0.077834 -0.042818 -0.047540 -0.040810 0.016980 0.009716 -0.019924 0.025318 0.094241 -0.026210 -0.040988 0.003781 0.101619 0.098932 0.076552 0.025069 0.010124 -0.042034 -0.095420 -0.072274 -0.061223 -0.025071 -0.016132 -0.047999 0.172624 -0.036838 0.011581 0.054710 -0.035830 -0.120277 -0.100100 -0.057028 0.006910 0.118464 -0.022154 0.025012 -0.017797 -0.033263 -0.008283 -0.003727 -0.043563 -0.003699 -0.095741 0.060120 -0.083925 -0.090614 -0.052209 0.069252 0.084102 0.031573 -0.065150 0.048194 0.013857 -0.000901 0.082968 0.075239 -0.023543 -0.017918 -0.034752 -0.020715 0.045946 0.025948 0.035884 -0.001330 0.030377 -0.069708 0.037228 0.064584 -0.011534 0.004775 -0.031321 -0.023894 -0.066680 -0.017407 -0.031766 0.082944 0.029780 -0.020334 -0.059467 -0.105484 -0.011107 0.107375 -0.081264 -0.085535 0.015847 0.011785 -0.147292 0.091983 -0.035194 0.018371 -0.019603 0.000643 0.026524 0.033881 -0.031605 -0.026151 -0.015905 0.025076 -0.040237 -0.015447 -0.036770 -0.023092 -0.008956 -0.094738 0.052213 0.066411 -0.014003 -0.038628 0.067782 -0.113461 -0.048569 0.077947 -0.029368 0.029847 0.032522 -0.053873 -0.009694 -0.066035 0.097838 -0.080553 0.014786 -0.041721 0.042424 -0.067096 0.086017 -0.083068 -0.031687 0.049261 0.011088 0.055956 -0.042553 0.064152 0.032740 -0.042521 0.032623 0.026468 -0.060446 -0.061420 -0.040101 -0.072435 -0.035127 -0.015938 -0.056502 -0.012235 0.159594 0.036828 0.014961 0.039926 -0.052046 -0.008302 -0.025221 -0.019677 -0.050264 0.064556 0.090868 0.045306 -0.056054 0.027715 -0.051663 -0.105423 0.043022 0.028868 -0.059945 -0.078316 -0.022563 -0.067438 -0.015459 0.051782 0.012461 -0.017353 -0.111666 0.047354 0.038969 0.018721 -0.042239 0.086618 0.047663 -0.009423 -0.062622 -0.054796 0.027821 -0.055863 0.015206 -0.063846 0.042120 0.051280 0.000880 -0.064353 -0.006378 -0.079885 -0.085024 -0.060682 -0.023010 0.052677 0.020476 0.036878 -0.022570 -0.097679 0.024609 -0.051637 -0.023871 0.018994 -0.008905 0.163821 0.035607 -0.004083 0.029753 0.070722 0.065015 0.036317 0.015253 -0.018487 0.021981 -0.052297 0.101195 0.046329 -0.018899 0.076923 -0.090549 -0.069408 0.052880 0.072613 0.016603 0.009898 0.038810 -0.097531 0.011528 0.033681 0.044555 0.022445 -0.040337 -0.006570 0.016912 0.017289 -0.010643 0.054567 0.039843 -0.082038 0.051662 -0.036190 0.056489 -0.013943 -0.108354 0.074006 0.095726 -0.069664 -0.034176 -0.043247 0.007026 -0.014616 0.018185 0.005567 0.064569 0.062030 -0.061575 0.033160 0.003638 0.043355 -0.092562 -0.001359 -0.118802 0.034657 -0.080892 -0.115509 0.051575 -0.016477 0.073726 -0.028197 0.101744 -0.091687 -0.002308 0.003490 -0.025382 0.023563 0.013144 -0.007840 0.098021 -0.089215 0.043236 -0.056307 0.013368 0.056472 0.016004 0.007337 0.008555 -0.046066 -0.000940 0.088476 -0.003382 0.056229 0.011333 0.025841 0.126240 -0.050253 -0.071801 -0.036593 -0.113256 -0.027423 -0.077799 -0.003365 0.042368 -0.007708 -0.040673 -0.002409 0.091194 -0.002389 0.089456 -0.007822 -0.034486 0.016810 0.021491 -0.021203 -0.054528 0.050001 0.028679 0.059435 -0.034908 0.003863 0.053342 -0.072845 0.001339 -0.054033 0.012885 -0.065048 -0.045609 -0.058860 -0.076548 0.032086 0.025364 -0.136995 -0.019692 -0.014073 0.049843 0.053275 -0.021054 0.051495 0.005986 -0.032989 -0.055326 -0.031727 -0.023301 0.052516 0.011953 -0.114987 0.050477 -0.086649 0.029069 0.034181 -0.055159 -0.036203 -0.045128 0.001147 -0.008622 0.073690 -0.077472 0.037649 -0.023539 -0.019114 0.007866 -0.053950 0.029809 0.002350 -0.026481 0.147821 -0.047601 -0.036813 -0.037253 0.033533 0.027495 0.047206 -0.008682 0.052569 -0.038196 0.009663 -0.000160 0.096707 -0.058192 0.000390 -0.047017 -0.034486 0.014275 0.016853 0.040124 0.061386 0.115421 0.015532 0.083606 0.081646 -0.014130 -0.065768 -0.049301 0.046979 -0.074307 -0.000569 0.043637 0.041337 0.036121 0.073310 -0.066751 -0.075889 0.042658 -0.033533 -0.145897 0.036198 0.008869 -0.000721 -0.096931 0.083547 -0.053221 -0.059850 0.044181 -0.047437 0.017891 0.054674 -0.007182 -0.021841 -0.057955 0.025656 -0.022698 0.003117 0.006525 0.054665 -0.016601 -0.070885 0.038416 0.036323 -0.106994 -0.070705 0.076054 -0.096182 0.017493 0.019099 0.040334 0.095834 0.024157 -0.012504 -0.036345 -0.054321 0.024473 -0.042893 0.045064 0.020362 0.013309 -0.022876 0.136195 -0.126968 -0.008470 0.104812 -0.060638 0.042024 0.051826 -0.046516 0.068780 -0.166211 0.010537 -0.020067 -0.016696 -0.031551 -0.045680 -0.140254 0.023460 0.019033 -0.007193 0.020098 0.033574 0.032849 -0.009729 0.029711 0.035164 -0.031548 -0.069463 -0.068795 -0.076409 0.084793 0.058786 0.033407 -0.055633 0.057879 -0.064890 -0.085820 0.141134 -0.032456 -0.044056 -0.052030 0.080704 -0.065311 -0.029210 0.031372 -0.005285 0.001060 -0.066081 -0.002741 0.043095 0.081838 0.016630 0.083339 -0.027374 -0.002893 -0.096649 -0.007570 -0.027971 0.023363 -0.012161 -0.079953 0.015753 0.010524 0.011885 0.035772 -0.053325 -0.031173 -0.135173 -0.008628 -0.004336 0.065589 -0.022764 -0.012130 -0.022211 -0.014175 0.049009 -0.008368 -0.051407 0.003391 -0.045775 0.040152 0.019404 -0.076654 -0.003267 0.015085 0.089489 0.060779 0.030779 -0.008577 0.025139 -0.005374 0.038636 0.058301 0.018353 -0.010357 -0.012618 -0.013865 0.082768 0.012199 -0.031424 -0.049425 0.036742 -0.023385 0.016261 0.046336 0.082459 -0.046018 -0.072305 0.007065 -0.052342 0.072695 -0.082325 0.056070 codec2-1.2.0/src/codebook/lspvqexp3.txt000066400000000000000000002760471445607075400177670ustar00rootroot000000000000005 2048 -0.136198 0.024151 -0.063695 0.003294 0.028292 0.058532 0.000407 0.081822 0.109613 0.092702 0.002289 -0.004336 -0.001953 0.032305 -0.008448 -0.035198 -0.023077 -0.052002 -0.025974 -0.085171 0.004385 -0.026216 -0.018253 -0.018256 0.012774 0.006358 0.026024 -0.087778 0.011771 -0.078083 0.007874 0.003175 -0.052089 0.064003 -0.042512 0.014535 0.006232 -0.033255 -0.045854 -0.107260 0.004491 0.019560 0.061050 0.029138 0.036281 -0.078731 -0.044440 -0.048337 -0.025092 0.081402 -0.007244 -0.049045 0.058090 0.066585 0.018635 -0.075770 0.063007 -0.000503 -0.135694 -0.037603 -0.054068 -0.104063 0.005153 0.006977 0.008814 -0.020893 -0.019060 -0.070042 0.004665 0.090232 -0.015010 0.032240 0.000378 -0.002297 0.004771 -0.040127 -0.041383 0.105462 -0.015007 -0.029958 0.009637 0.050721 -0.064000 0.070794 -0.027916 0.001217 -0.095625 0.095422 -0.058274 0.030180 0.047937 -0.040794 -0.018864 0.036107 -0.038520 -0.035711 -0.046199 -0.031081 -0.090591 -0.073785 0.068495 -0.021466 0.055625 0.027533 -0.056869 0.059775 -0.041632 -0.096969 -0.057469 -0.082582 0.076556 -0.075055 0.014253 -0.024721 -0.110025 0.039510 0.002922 0.001583 -0.081297 -0.054432 0.036638 0.106348 -0.029202 0.053259 0.060782 -0.053679 0.039323 0.097200 0.001035 0.086560 -0.023819 -0.121783 -0.029909 0.046493 -0.020142 0.049289 0.084407 0.081999 -0.002632 -0.023474 -0.049136 -0.022296 0.090649 0.036711 -0.056647 0.006248 0.061232 0.007889 -0.075399 0.015312 0.057416 0.103818 -0.016070 0.040505 -0.001189 0.114331 -0.090671 0.090784 0.004698 -0.078036 -0.096890 0.084786 0.041716 0.042491 -0.057462 -0.014909 -0.032684 0.071338 -0.025083 0.051331 0.050537 -0.069533 -0.037126 0.032846 0.025729 -0.047775 0.055988 -0.018972 -0.025690 -0.027975 -0.017970 0.023020 0.098593 0.004612 0.013157 0.044770 0.015091 -0.069310 -0.062427 -0.021413 -0.022487 0.105120 0.052485 0.089068 -0.015127 -0.069327 -0.005520 -0.039356 -0.065169 -0.081883 0.077729 0.024051 0.008893 0.135290 0.036535 -0.016512 -0.061216 -0.051545 0.019876 0.044939 -0.119244 -0.030603 -0.021134 0.038262 0.002980 -0.079101 0.080099 0.036993 -0.067815 -0.008885 -0.054560 -0.014317 0.093316 0.100385 -0.001690 0.052346 -0.004258 -0.013592 -0.042301 0.049842 0.092826 0.061851 0.027621 -0.024069 -0.059213 0.031617 -0.009108 0.022338 -0.063250 -0.097158 -0.008177 -0.030577 -0.107136 0.017774 0.059538 -0.053438 0.008281 -0.008953 -0.207584 0.041500 0.006693 -0.093889 -0.039108 0.040752 0.020200 0.005813 -0.021241 -0.046317 -0.019980 -0.037740 0.134550 0.018885 -0.020492 0.033445 -0.004411 0.000456 -0.030901 -0.058047 -0.081834 -0.007611 0.006314 0.008851 0.070179 0.003036 -0.035749 0.067106 -0.087172 0.047680 -0.058147 -0.011858 -0.043608 -0.020841 0.038136 -0.031081 0.185361 -0.054055 -0.067146 0.097240 -0.082580 0.051439 0.003624 -0.133423 0.011530 0.119056 -0.043475 -0.001737 0.110875 0.038530 -0.027030 0.053434 0.000648 -0.029320 0.121211 0.029589 -0.039707 -0.068850 0.000408 -0.032227 -0.003072 0.052231 0.034923 0.080837 -0.037156 -0.094754 0.014542 -0.005315 -0.054038 0.012812 -0.027090 -0.001601 -0.083437 0.019212 -0.016505 0.046104 0.038554 0.072309 -0.011739 0.059850 -0.056206 0.073386 0.135263 0.000286 -0.060518 0.036391 -0.060506 -0.027527 -0.000692 0.036739 -0.066074 -0.088864 0.005166 -0.054854 -0.003007 -0.010121 0.027824 -0.036967 -0.100932 -0.182594 -0.013910 0.014657 0.023979 0.055629 -0.054566 0.106056 -0.079044 -0.037983 -0.044929 0.043735 -0.085774 -0.009132 -0.024985 -0.071464 0.051902 0.102450 0.054042 -0.016588 -0.074683 -0.064110 0.056690 0.110680 -0.064499 -0.033720 0.024264 0.088022 0.031179 -0.015453 0.035079 0.044771 -0.043409 -0.047855 0.078062 -0.091048 0.052298 0.018898 0.005019 -0.054365 0.080023 -0.065458 -0.065704 0.014520 -0.003386 0.001319 -0.046118 -0.010700 0.008233 -0.030496 -0.072516 0.051522 -0.020414 -0.101831 0.017761 0.038077 -0.114244 0.041726 0.083964 -0.016531 -0.129688 -0.014288 -0.122167 0.063062 0.116380 -0.065367 -0.038604 0.095723 -0.036360 -0.066306 0.014726 -0.011596 -0.005770 -0.048796 0.090592 -0.004417 0.009466 0.098691 -0.066093 0.001754 -0.005848 -0.043066 -0.037892 0.031807 -0.022616 -0.021159 0.045873 0.028421 -0.085595 0.049794 -0.001914 0.008752 -0.077905 0.029994 0.044235 0.064398 0.005282 -0.003674 0.086059 -0.032460 0.015037 -0.007206 -0.036713 0.011909 -0.017113 -0.061523 -0.001698 0.001480 -0.052389 -0.005496 0.081887 0.018394 0.005492 -0.048520 -0.036485 0.006979 0.121328 0.069020 -0.093697 -0.035414 0.025382 0.033335 -0.042742 0.078618 0.022150 0.100313 -0.081797 -0.006077 -0.036600 0.043498 -0.047693 0.080861 -0.041208 -0.074855 -0.034519 0.006730 0.150509 0.059429 -0.003976 -0.059532 -0.022218 0.071419 -0.051453 0.008904 0.063565 -0.107466 -0.026643 -0.009845 0.097906 -0.094940 0.057756 -0.085002 0.019603 -0.098395 0.015610 0.000806 0.058999 -0.025760 0.036316 0.071066 0.030579 -0.066243 -0.023751 -0.060747 0.067731 0.090313 0.041003 0.076536 -0.012685 0.069395 0.035647 -0.112161 -0.075184 0.003099 -0.017065 0.018376 0.017104 0.109557 0.049888 -0.047698 -0.041877 -0.000537 0.051347 -0.003682 -0.016370 -0.001696 -0.010154 0.067477 -0.036583 -0.020092 0.048256 0.084878 -0.100501 -0.035380 0.008671 -0.122585 0.038716 -0.002197 -0.101482 0.037247 -0.032842 -0.068559 -0.021387 0.014449 0.027927 0.060964 -0.048375 0.028367 0.038134 -0.014885 -0.092447 -0.081616 -0.015822 -0.134913 -0.021274 0.013697 -0.035055 0.055911 0.033111 -0.034970 -0.015798 -0.007119 -0.076467 0.028984 -0.014502 -0.124275 0.021441 0.078607 0.002858 -0.042356 -0.003098 0.045995 0.031341 -0.016968 0.041560 0.019148 0.004700 0.005637 0.093016 0.063490 -0.048735 -0.069068 -0.034088 -0.028215 0.045350 0.075594 0.037776 0.024450 -0.071678 0.087072 0.009286 -0.023885 0.019862 -0.012771 -0.029248 -0.016036 -0.089092 0.074240 0.169069 -0.033409 0.026100 -0.024626 -0.043863 0.098736 0.012158 -0.077333 -0.083731 0.013768 -0.080944 -0.060470 0.037407 -0.013690 0.007337 -0.001188 0.005453 0.026261 0.119036 0.043940 0.046011 -0.035860 0.008540 -0.113766 -0.097502 0.024057 0.024457 0.118827 -0.001543 -0.064711 -0.007631 0.049637 -0.101928 -0.002462 0.054230 -0.044736 -0.067470 0.078729 -0.034003 0.014536 -0.022247 0.161762 -0.041209 0.037097 -0.052532 -0.031344 0.061129 0.020176 -0.066030 0.038964 0.022928 -0.014012 -0.030939 -0.092443 0.002874 -0.114395 -0.010621 -0.005537 0.018042 -0.045648 0.044588 0.007453 0.095088 -0.128336 0.107088 -0.032186 -0.047594 0.046694 0.039679 0.083442 -0.088060 0.060757 0.082896 0.037419 -0.092975 -0.054674 0.022723 -0.030652 0.025581 0.033843 0.085935 -0.020876 -0.055952 -0.103915 -0.073020 0.045301 0.020552 0.047020 0.047981 0.150138 -0.041783 -0.081206 0.015811 0.025886 -0.105666 0.097623 -0.026606 -0.109640 0.031300 -0.029835 0.007132 -0.004757 0.036673 -0.113804 -0.044055 0.015492 0.016617 0.050138 -0.020709 0.070749 0.016487 -0.041772 -0.059857 0.040483 0.002005 -0.030924 0.045135 0.114146 -0.077004 0.040268 0.014157 -0.007526 -0.029177 0.064663 -0.093478 0.103127 0.041264 -0.004835 0.013205 0.110399 -0.026498 -0.107188 -0.024533 -0.071115 -0.052007 -0.006395 0.030684 -0.035133 0.019891 0.033587 -0.028437 -0.019472 -0.016122 -0.099020 -0.052317 -0.029623 0.023893 -0.019150 0.042703 -0.007384 -0.135429 -0.008658 0.020311 0.016085 -0.113980 -0.001115 -0.036113 0.054423 0.008653 -0.007789 0.077924 -0.129044 -0.005070 0.011282 0.013904 0.077014 -0.025623 -0.031789 -0.073370 0.010481 -0.041819 0.008182 0.065192 0.027333 -0.034730 -0.026375 -0.073571 -0.019647 0.040694 -0.003020 -0.065061 -0.014276 0.079966 0.003562 -0.144068 0.054787 -0.022846 0.071080 -0.036877 -0.012692 -0.082166 -0.006918 -0.096688 0.095501 0.064056 0.007213 -0.036690 0.026213 0.059957 0.047896 0.003414 0.000914 0.015446 0.098563 -0.056379 0.137143 0.018164 -0.076211 -0.070196 0.001563 0.047637 -0.049087 0.114850 -0.090803 -0.012260 -0.036278 0.029559 0.002293 0.037244 0.047064 0.038113 0.070849 0.065524 -0.021498 0.000989 -0.091111 -0.036143 0.076107 0.016355 0.059505 -0.023400 -0.048163 0.004599 0.025481 -0.093492 -0.022306 0.020409 0.023572 -0.001520 0.059761 0.064734 -0.032331 -0.014971 -0.032497 -0.010585 0.008900 -0.085173 -0.038940 0.017863 0.073312 -0.032050 -0.026419 0.012730 0.067669 -0.005028 -0.054256 -0.019721 -0.049805 0.080959 0.050680 0.057457 -0.006579 -0.003248 -0.080847 -0.103158 0.064238 0.082133 0.070334 -0.026602 -0.064571 0.042901 0.017513 -0.081866 -0.016501 -0.088344 0.022655 0.009335 -0.047461 -0.005181 0.060236 0.032349 -0.056626 -0.022179 -0.044705 -0.131625 -0.028104 -0.026924 -0.045874 0.036424 0.026185 0.023864 -0.028118 -0.018505 0.018550 0.000643 -0.055726 0.101839 -0.037958 0.031116 0.110118 0.009110 0.112021 -0.038578 -0.104082 -0.042272 0.040893 0.028742 -0.028607 0.080643 0.003287 -0.063413 0.099046 -0.029956 0.002892 -0.067344 -0.016823 0.008602 0.017513 -0.014264 -0.041185 0.124856 -0.054844 -0.072185 0.033952 -0.096401 0.046007 -0.020749 -0.046471 0.003558 0.082125 -0.096910 0.025411 0.127329 0.076666 0.068718 0.005743 0.043603 -0.056968 0.086610 0.010153 -0.036367 -0.068722 0.024772 -0.000639 -0.052051 0.074796 0.019967 0.077602 -0.034771 -0.009789 -0.023551 0.047117 -0.066717 -0.066348 -0.063558 0.008220 -0.027567 0.036273 -0.067110 0.028847 0.089473 0.083247 0.004591 0.077405 -0.082932 -0.013968 0.079836 -0.052437 -0.080184 0.015535 0.000867 -0.020465 0.038101 0.029256 0.027121 -0.094745 0.022846 0.000927 0.004314 -0.039488 0.016252 -0.016129 -0.000925 -0.125901 0.037569 -0.012151 0.050660 0.036394 -0.018283 0.058805 -0.009276 0.002687 -0.029775 -0.002892 -0.018790 -0.068265 -0.026723 -0.038695 0.067644 0.027095 0.104267 -0.033127 -0.092325 -0.101391 0.051657 0.047692 -0.039487 0.017442 -0.007204 0.106333 -0.026736 -0.026984 0.048252 0.041384 -0.002131 0.042443 0.019367 -0.077827 0.019452 -0.004992 0.095049 -0.020183 0.054128 -0.089501 -0.106767 0.133742 0.003715 0.065993 -0.010120 0.002578 0.010632 -0.104027 -0.092526 0.051102 -0.064092 0.007341 0.037981 0.005348 -0.098388 0.082010 0.023682 0.101454 -0.074181 0.022470 -0.047488 0.034728 0.054519 -0.059484 -0.055491 0.133582 0.009556 -0.120963 -0.043837 0.028549 0.025534 0.028904 0.108670 -0.032038 0.012596 0.038519 -0.012244 0.003888 0.019393 -0.076558 -0.013031 -0.019858 -0.006786 -0.020230 0.044975 0.034040 -0.032445 0.099970 -0.025120 -0.012044 -0.058520 0.081664 -0.018743 0.028691 0.017459 0.030523 0.121595 -0.045728 -0.044359 0.002157 0.025037 0.043565 -0.027940 -0.112422 0.019525 0.012089 -0.036526 0.012809 0.102396 0.061700 0.009053 -0.006318 -0.073644 0.052544 0.093009 0.002094 -0.048500 -0.067838 0.044219 0.004622 -0.021517 0.144798 0.000396 0.028552 -0.047957 0.022072 -0.044059 0.022301 -0.046990 0.069399 -0.022723 0.001209 -0.061132 0.035083 0.054456 -0.053667 0.023348 -0.021700 0.035612 0.078641 -0.067377 0.046902 0.103671 -0.042167 -0.039490 0.027663 0.018158 -0.034924 0.044647 -0.017309 0.013019 -0.075672 0.016417 0.018863 -0.005962 -0.054108 -0.028444 0.033930 -0.024540 -0.021060 0.018088 -0.079446 0.004808 0.042524 0.042005 0.062594 -0.020936 0.045898 -0.007873 -0.067501 -0.079291 -0.053730 -0.044782 0.007470 -0.003636 0.041779 0.032024 -0.055764 -0.025299 -0.042428 0.043255 0.061536 -0.028270 0.031312 -0.055603 0.078003 -0.007771 -0.035400 0.019441 0.101450 -0.047446 -0.021123 -0.003012 -0.065746 0.021167 0.028415 -0.039012 0.078986 0.041230 -0.109603 -0.053586 0.081713 0.069524 0.086261 0.032415 0.020301 0.008172 -0.050007 -0.043252 0.032538 -0.040149 -0.060186 -0.036647 0.074839 -0.067704 0.105038 0.016407 -0.017166 -0.040157 -0.034379 -0.045783 0.036121 0.006989 -0.053621 -0.014310 0.130029 0.014339 0.010984 -0.049323 0.011801 0.024418 -0.061108 0.048945 0.020936 -0.016709 0.036678 0.056799 -0.032054 -0.081596 -0.020000 -0.014900 -0.016931 0.025720 0.030371 0.054373 0.041972 -0.103673 0.072505 -0.008653 -0.038498 -0.082343 -0.011659 0.008214 -0.051158 -0.011619 0.011396 0.073440 -0.028140 -0.085370 -0.083429 -0.059579 0.093532 0.017281 -0.029324 -0.063027 0.036276 -0.035917 -0.062731 0.083485 0.034826 -0.016723 0.041119 0.006462 0.063240 0.106462 0.005405 0.014198 -0.107371 0.016648 -0.039299 -0.060254 0.066074 0.010798 0.104663 -0.026071 -0.092536 -0.049821 0.052302 -0.111521 -0.028997 -0.044881 -0.058612 -0.066180 0.063782 -0.087613 0.131044 0.079319 0.051549 -0.031150 0.050463 0.014022 0.072812 0.040951 -0.008242 -0.035076 -0.012706 -0.007732 -0.087407 -0.043003 -0.051495 -0.005909 -0.078253 0.024556 -0.000301 -0.002836 0.000471 0.036449 -0.033227 0.013122 -0.041830 0.053473 -0.062823 0.001698 0.056414 -0.009009 0.074868 -0.031437 0.061142 0.034153 0.037913 -0.016467 -0.112529 -0.042555 0.004865 0.068299 0.039970 0.035002 -0.032275 -0.054429 -0.110647 -0.004981 0.106602 -0.009971 -0.070226 0.011717 0.078195 -0.004486 -0.053666 0.032253 0.019880 -0.063381 -0.011499 -0.021161 -0.147358 0.022501 0.026856 0.014878 0.071720 -0.018691 -0.078472 0.006781 0.128504 0.009349 0.032300 0.024117 0.093683 -0.001689 -0.038787 -0.022119 0.025894 -0.051130 -0.029077 -0.003509 0.056923 -0.043564 0.047755 0.029228 0.094577 -0.059873 0.105327 -0.045681 0.020128 0.019571 -0.053714 -0.026005 0.082821 0.010883 -0.090635 -0.046160 0.015147 -0.060630 -0.025114 0.065345 -0.062635 0.033608 -0.000239 -0.055078 0.028179 0.007232 -0.132300 -0.058511 -0.027521 0.009924 -0.057576 0.037098 -0.048222 -0.067691 0.025807 0.005481 0.053364 -0.071026 0.002704 -0.019833 0.056496 -0.012323 0.054975 0.053260 -0.058168 -0.002745 0.051808 0.007857 0.072213 -0.028508 -0.100966 -0.066436 0.094923 -0.032702 0.016386 0.144962 0.060276 -0.060885 0.045013 -0.008694 -0.035070 0.077187 0.011427 -0.039974 0.041845 0.095921 -0.012129 -0.069502 0.058053 0.016498 0.068097 -0.063723 0.058607 -0.084662 0.051080 -0.084087 0.061664 -0.014378 -0.020357 -0.101420 0.018380 0.026201 0.021273 0.001716 0.018280 -0.048955 0.114013 0.007403 0.073650 -0.007198 -0.073071 -0.043345 -0.025399 0.062280 -0.057043 0.007375 -0.057945 0.001682 -0.068288 -0.004458 0.057944 0.019870 0.030319 0.023300 0.023258 0.038816 -0.075939 0.024401 -0.008493 -0.088976 0.084875 -0.004901 0.107413 0.036685 -0.017576 0.049893 -0.017089 -0.076959 -0.047043 0.012304 0.096589 0.020081 0.055371 0.026179 -0.031262 -0.023054 -0.062863 0.022469 0.026254 -0.081002 0.001604 -0.067115 0.089364 -0.044846 -0.104635 0.022051 0.024153 -0.050297 -0.090473 -0.111208 -0.014747 0.065056 0.064524 0.014978 -0.018009 -0.045181 -0.036814 -0.049839 0.101556 0.123355 0.029904 0.046059 0.075873 0.023800 0.018950 -0.069598 -0.023833 -0.044717 -0.059289 0.005309 -0.050755 -0.129767 0.090909 0.049327 0.034593 -0.024217 -0.013090 -0.120429 0.018611 0.035730 -0.069972 -0.020352 0.040567 -0.008846 -0.035745 -0.012086 -0.029290 -0.031875 -0.022851 0.126885 0.093804 -0.041337 0.064417 0.012827 -0.006103 -0.064712 -0.034377 -0.072895 -0.024513 0.024964 0.025126 0.053845 -0.032844 -0.040164 0.057226 -0.047268 0.002180 -0.030810 -0.046649 -0.011612 -0.016914 0.019534 -0.045647 0.103552 -0.019784 -0.059284 0.034278 -0.052666 0.063638 -0.030288 -0.052341 -0.018891 0.060842 -0.038845 0.029390 0.061982 0.049711 -0.034509 0.014359 -0.001671 -0.096474 0.111850 -0.008201 -0.039744 -0.018012 -0.003881 -0.008624 -0.032458 0.060460 0.046820 0.050558 -0.004330 -0.043328 0.024076 0.020855 -0.064731 0.003784 -0.011162 -0.039018 -0.064459 0.004758 -0.065784 0.046246 0.009026 0.061065 0.051008 0.060159 -0.028994 0.058623 0.065914 -0.082042 -0.137623 0.009165 -0.028321 0.013924 0.038290 0.064550 -0.076981 -0.104556 0.057766 -0.047215 -0.025831 -0.014589 0.040468 -0.018660 -0.044675 -0.134278 -0.019992 0.000064 -0.007643 0.019573 -0.005029 0.139097 -0.058444 0.015872 -0.061714 0.054845 -0.093905 -0.023694 -0.069868 -0.051634 0.093449 0.116722 0.041075 -0.031597 -0.064630 -0.001604 -0.011889 0.114102 -0.038392 -0.043996 0.036345 0.159256 0.042733 -0.014768 0.023374 0.091565 -0.062174 0.008748 0.027552 -0.065067 0.043484 0.029833 0.068407 0.062921 0.100413 -0.044081 -0.047093 0.012867 -0.021198 0.053674 -0.074601 0.009988 -0.000368 0.004615 -0.031012 0.126258 -0.044950 -0.053716 0.068829 0.028389 -0.081499 0.096576 0.111555 0.032580 -0.091888 0.004783 -0.058619 0.103336 0.023528 -0.067561 -0.052227 0.060540 -0.008415 -0.134399 -0.003137 -0.005498 0.000696 -0.064610 0.103028 -0.016839 0.054380 0.058673 -0.018968 -0.030411 0.004030 -0.022930 -0.074504 -0.005768 -0.040922 -0.056206 0.026643 0.091472 -0.046289 0.024551 0.006847 -0.043098 -0.076632 0.023143 -0.027690 0.058150 -0.033455 -0.000947 0.108861 -0.053902 -0.004117 -0.000733 -0.004552 0.018160 -0.015632 -0.075342 -0.057899 0.043216 -0.030867 -0.025610 0.087151 0.015012 -0.058812 -0.077554 -0.057877 0.030875 0.088541 0.068489 -0.037517 -0.013136 0.003726 0.026354 -0.076145 0.081871 0.009685 0.049282 -0.053126 -0.041669 -0.055971 0.070689 -0.000302 0.030654 -0.059458 -0.032358 -0.073479 0.014645 0.057040 0.060111 0.026122 -0.021404 -0.035383 0.105578 -0.064143 0.009201 0.067302 -0.018682 -0.018425 0.053502 0.095608 -0.089642 0.061823 -0.049713 0.118868 -0.071061 0.033484 0.020846 0.017472 0.009132 0.017367 0.095422 0.015719 -0.042701 -0.059963 -0.093737 0.065153 0.040501 0.070592 0.084313 0.023778 0.011293 0.022143 -0.078417 -0.072724 0.022472 -0.047887 0.042426 0.002790 0.080670 0.045298 -0.124868 -0.052373 -0.036868 0.080892 0.053132 -0.029773 -0.038766 -0.021131 0.028890 -0.019483 -0.031257 0.013785 0.114016 -0.019299 -0.095540 -0.081494 -0.108033 0.072808 0.034714 -0.046113 0.018918 0.025646 -0.012081 -0.029184 0.035413 0.062215 0.094361 -0.038357 0.004033 0.061858 -0.040066 -0.073778 -0.039352 -0.026946 -0.078584 -0.027017 -0.016385 -0.070475 0.068096 0.031208 0.024912 -0.031301 0.028130 -0.092740 0.010887 0.080067 -0.086228 -0.002645 0.062014 0.039789 -0.000913 -0.002893 0.021215 0.025308 -0.079170 0.021198 0.011411 -0.029445 0.021288 0.028934 -0.012482 -0.093791 -0.086795 -0.065003 -0.091575 0.042822 0.048190 0.027573 0.016672 -0.031582 0.084478 -0.026855 0.002037 -0.003986 -0.032282 -0.037516 0.024939 0.006645 0.069559 0.096001 -0.009324 -0.020647 0.016115 -0.002890 0.099816 0.035798 -0.055626 -0.082205 0.061510 -0.137040 -0.003237 0.086092 -0.015616 0.038825 0.025940 -0.009435 -0.039900 0.130411 0.041684 0.029411 -0.053212 0.035136 -0.038974 -0.068479 -0.014046 -0.052464 0.114330 0.014803 -0.043086 -0.031898 0.114055 -0.094015 0.000194 0.005274 -0.032729 -0.061821 0.146682 -0.033636 0.052702 -0.025910 0.076647 0.000572 0.089946 0.018515 -0.012439 0.057567 -0.023096 -0.066766 0.029717 -0.021521 -0.048165 0.037444 -0.026950 -0.054050 -0.122571 0.003033 -0.021280 0.058783 -0.065330 0.032047 0.016007 0.003629 -0.102811 0.075806 -0.028556 -0.051245 0.032001 0.006924 0.046225 -0.066944 0.026360 0.071868 0.000989 -0.051417 -0.082284 0.007536 -0.005941 0.054340 0.097832 0.059470 0.005201 -0.029254 -0.063891 -0.032060 0.063113 0.005567 -0.038440 0.079032 0.117269 -0.027965 -0.018444 0.021519 0.056596 -0.077845 -0.001929 0.018144 -0.117195 0.021022 -0.078031 0.060201 0.068169 0.033446 -0.116183 0.024450 0.054125 0.043263 0.043637 -0.024388 0.028606 -0.043272 -0.076651 -0.044322 0.043529 -0.032600 -0.022496 -0.028618 0.105767 -0.131078 0.022952 0.032809 0.014704 -0.078921 0.053414 -0.130561 0.025975 -0.006145 -0.020377 0.002576 0.111120 -0.027416 -0.056800 -0.034249 -0.102732 -0.077605 -0.054125 0.013938 -0.018912 0.031272 0.045116 0.009640 -0.000666 -0.010171 -0.101812 -0.086048 -0.079481 0.012556 -0.025093 -0.037932 0.018846 -0.121557 0.019521 0.077648 0.062764 -0.080462 -0.006901 -0.022906 0.106898 -0.001186 -0.033179 0.083120 -0.108465 0.004729 -0.004907 -0.051941 0.019890 -0.052798 -0.048321 -0.039992 0.011392 0.022231 0.052123 0.053230 0.008893 -0.021235 -0.021543 -0.052336 -0.002642 0.014048 0.021729 -0.071873 0.008583 0.063055 -0.005700 -0.130218 -0.004615 0.001933 0.068978 0.002830 0.041471 -0.075840 0.058590 -0.105352 0.109710 -0.008703 0.046126 -0.058564 0.044743 0.028326 -0.017021 -0.043831 -0.006378 0.002489 0.083015 -0.017479 0.032458 0.075359 -0.070133 -0.094634 0.004253 0.050570 -0.084605 0.081302 0.020066 -0.026905 -0.070421 0.027450 0.006091 0.038101 0.058759 -0.022035 0.075718 0.034255 -0.003008 0.013391 -0.039205 -0.027185 0.117021 0.026809 0.017619 -0.048835 0.013076 -0.001288 -0.041201 -0.077396 -0.060871 0.003384 0.082249 0.080509 0.073375 0.032946 -0.020732 -0.036562 -0.005218 0.006654 0.017449 -0.070219 -0.067294 -0.000185 0.046725 -0.032632 -0.114281 0.007061 0.027082 -0.042412 -0.035359 -0.017030 -0.081911 0.091617 -0.001734 0.040171 0.029232 0.022946 -0.023063 -0.099398 0.088196 0.134224 0.037312 -0.010897 0.015441 0.048401 0.036710 -0.079633 0.068283 -0.095899 -0.076950 0.031388 -0.049701 -0.078358 0.071239 0.093230 -0.047640 -0.059715 -0.006775 -0.091115 -0.004787 0.029706 -0.062712 0.001230 0.035511 0.012170 -0.035826 -0.020972 -0.004566 -0.054826 -0.080743 0.043183 -0.019993 -0.009134 0.093461 0.062293 0.055956 -0.052129 -0.076380 -0.112243 0.065413 0.075567 0.019848 0.094121 0.021786 -0.068644 0.060691 -0.037556 0.053416 -0.063583 -0.009116 0.059647 0.033059 0.008383 -0.057678 0.106669 -0.086182 -0.028844 0.069038 -0.050651 0.045613 -0.022872 -0.050951 0.020221 0.009049 -0.129767 -0.034033 0.103312 0.070048 -0.008972 0.021930 -0.019606 -0.031561 0.065822 0.016592 -0.009995 -0.028203 0.056913 -0.043993 -0.020496 0.028610 0.050871 0.070498 -0.045548 -0.038539 -0.050789 0.065005 -0.048246 0.011105 -0.026236 0.004123 -0.069629 0.029918 -0.108123 -0.018902 0.020385 0.012121 0.000873 0.079758 -0.028851 -0.001646 0.048281 -0.044204 -0.025910 -0.031220 0.006049 -0.039981 0.031852 -0.007419 -0.008198 -0.105351 0.021943 -0.009020 0.041415 -0.051481 0.064758 -0.066937 0.070473 -0.128350 0.059786 -0.012980 0.046171 -0.005175 -0.054847 0.066448 -0.057361 0.015253 -0.020476 0.048261 -0.069168 -0.074295 -0.072588 -0.042977 0.018592 0.070496 0.114648 0.010817 -0.128853 -0.097246 0.020464 0.031236 -0.024940 0.041108 0.011415 0.087818 -0.043080 0.025168 0.025134 0.027778 -0.030419 -0.017191 -0.010787 -0.089466 0.006383 0.016841 0.083765 0.008103 0.031762 -0.065297 -0.043194 0.060151 -0.031870 0.035064 -0.027919 0.019804 0.031581 0.015682 -0.090393 0.054461 -0.051669 -0.020003 -0.006273 0.029554 -0.052349 0.122862 0.052590 0.053436 -0.092575 -0.038422 -0.014132 0.025596 -0.007446 -0.068838 -0.100706 0.110571 -0.074217 -0.124216 -0.046391 -0.001952 -0.035192 0.056849 0.049815 -0.000716 0.078561 0.103458 -0.031106 0.004277 0.053141 -0.013453 -0.014118 -0.043585 0.037082 -0.072984 0.085005 0.059632 -0.092468 0.070536 0.024296 0.032733 -0.064865 0.050807 0.048457 0.051588 0.064615 0.014068 0.107732 -0.036905 -0.023656 0.039094 -0.021163 0.016683 -0.033733 -0.099111 -0.053957 0.004493 -0.052760 -0.012367 0.103975 0.055514 -0.018205 -0.077832 -0.018229 0.099840 0.043099 0.026033 -0.127892 0.005209 0.115289 0.030702 -0.090228 0.102291 -0.036231 0.059027 -0.073456 0.025828 -0.058846 0.023155 -0.021831 0.050419 -0.052958 -0.025641 -0.057417 -0.038855 0.069655 0.009463 -0.011469 -0.001709 0.032146 0.133188 -0.084494 0.022112 0.105454 -0.037301 -0.006059 -0.002167 0.033760 -0.067749 0.052323 -0.002914 0.042408 -0.038078 0.080983 0.032390 -0.013515 -0.017162 -0.001944 0.018212 -0.057337 -0.024336 0.003385 -0.053031 0.007656 0.093900 0.019898 0.057621 -0.016597 0.028536 0.010449 -0.048939 -0.132260 -0.015093 -0.032383 0.042496 0.006198 0.022980 0.050028 -0.091286 0.046546 -0.012873 0.053569 0.100661 0.001121 0.033644 -0.044783 0.040892 -0.007458 0.015227 0.057715 0.135154 -0.011532 -0.048523 -0.020718 -0.100767 0.060073 0.082344 -0.067297 0.052855 0.019105 -0.072241 -0.034480 0.046910 0.028509 0.105159 -0.005862 -0.006672 0.031437 -0.044146 -0.049556 0.015169 -0.001790 -0.082293 -0.043861 0.020628 -0.082354 0.150955 -0.022192 -0.053152 -0.023628 -0.040518 -0.032409 0.040596 -0.072007 -0.085815 0.034433 0.062865 0.051963 0.007741 -0.008439 0.034908 -0.009552 -0.032946 0.043386 0.024843 0.020463 0.077839 0.109446 -0.033733 -0.111561 -0.077032 -0.028750 -0.004143 0.027687 -0.006467 0.011063 0.043189 -0.123963 0.091285 0.045529 -0.007055 -0.051180 -0.054342 0.012612 -0.032042 0.014321 0.047055 0.140528 -0.069055 -0.048973 -0.035481 -0.091096 0.061054 -0.017211 -0.042891 -0.047427 0.050343 -0.010907 -0.031955 0.062361 0.017419 -0.036013 -0.002721 0.041131 0.024163 0.089626 0.022372 0.009373 -0.095530 0.047262 -0.031783 -0.036250 -0.009977 -0.021451 0.082581 -0.051394 -0.022879 -0.034885 0.076878 -0.111199 -0.010824 0.015104 0.028609 -0.085213 0.147576 -0.065340 0.019676 0.072754 0.082529 0.036091 0.076516 0.052432 0.071795 0.008287 -0.036426 -0.009891 0.029857 0.002193 -0.003334 -0.028181 -0.037997 -0.010828 -0.075271 -0.009274 -0.000105 0.026357 -0.014523 -0.000196 0.045930 0.012760 -0.088269 0.009968 -0.079905 0.046175 0.009370 -0.000002 0.029935 -0.042887 0.023842 0.018746 -0.006990 0.008271 -0.090227 0.030612 0.016519 0.081049 0.009339 0.055323 -0.044325 0.004172 -0.068893 -0.045980 0.077715 0.001175 -0.046950 0.036603 0.091690 -0.007926 -0.030905 0.059344 0.015477 -0.098726 -0.013555 -0.055799 -0.077539 -0.011439 -0.004065 0.054785 0.034376 0.008123 -0.066323 0.015381 0.051534 -0.029072 0.008390 -0.021483 0.034645 -0.015101 -0.032733 -0.053135 0.072680 -0.018542 0.019239 0.037756 0.062391 -0.075094 0.101033 0.003228 0.041719 -0.083617 0.062272 -0.023256 0.039273 0.009314 -0.036930 -0.022348 0.054612 -0.061547 -0.057502 -0.045821 -0.027136 -0.057127 -0.040360 0.066291 0.009189 0.032460 -0.001094 -0.054085 0.006575 -0.054172 -0.130758 -0.090713 -0.002316 0.034393 -0.052381 0.012536 0.038109 -0.081767 0.085920 0.009447 -0.009120 -0.115802 -0.024373 -0.009739 0.098210 -0.050578 0.009031 0.067793 -0.102503 0.070893 0.048610 0.025783 0.070098 -0.082345 -0.110272 -0.069934 0.039617 -0.015865 0.093134 0.050931 0.078967 0.014464 0.014646 -0.080307 -0.028843 0.108070 -0.021868 -0.059963 -0.033823 0.075594 0.036621 -0.060586 0.034463 0.062713 0.100354 -0.048699 0.006569 -0.054387 0.085716 -0.042197 0.055028 -0.023813 -0.019848 -0.128971 0.064906 -0.014135 0.053208 -0.054020 0.012192 -0.023224 0.086982 0.002569 0.081299 0.043572 -0.052176 -0.053337 0.001834 -0.002848 -0.073999 0.045245 -0.072961 0.011777 -0.001025 -0.038850 0.021979 0.082271 0.023871 -0.014373 0.066920 0.022695 -0.046891 -0.028261 0.005879 -0.066511 0.074096 0.039110 0.046744 -0.001032 -0.028041 0.019515 -0.079802 -0.098550 -0.057732 0.050261 0.061069 -0.014075 0.084526 0.061622 -0.011750 -0.051429 -0.073887 -0.004920 0.014058 -0.107882 -0.029024 -0.096352 0.047279 -0.040754 -0.069567 0.060745 0.075817 -0.045723 -0.101709 -0.047723 -0.030640 0.056081 0.076466 0.002197 -0.010621 0.007690 -0.030150 -0.067986 0.062739 0.117024 0.061613 0.012656 0.043682 -0.031102 0.018671 -0.047947 -0.040784 -0.089523 -0.106392 -0.005815 -0.001616 -0.068421 0.027810 0.057644 -0.008067 -0.006506 0.039180 -0.154508 -0.011541 0.033405 -0.122890 -0.013528 0.038364 -0.001838 -0.004906 -0.046275 -0.038730 -0.031623 -0.003879 0.152370 -0.022857 -0.072307 0.029362 0.058441 0.009357 -0.022712 -0.075829 -0.057416 -0.038179 0.011980 0.029996 0.082156 0.024194 -0.072075 0.072125 -0.051638 0.039224 -0.086809 -0.049036 -0.016999 -0.028023 -0.045506 -0.030265 0.170708 -0.044189 -0.166394 0.095599 -0.078305 0.024710 -0.012502 -0.049717 0.030435 0.149411 -0.047396 -0.004166 0.092334 0.002567 0.003784 0.058999 -0.014837 -0.013693 0.116725 -0.016922 -0.014098 -0.026542 0.025453 -0.072587 -0.010040 0.040512 0.061390 0.063914 -0.059682 -0.091206 -0.018253 -0.019787 -0.066510 0.016750 -0.053649 -0.028817 -0.092221 0.050852 -0.009044 0.047829 -0.002441 0.018727 0.036731 0.089017 -0.091873 0.088367 0.109395 0.014861 -0.097044 -0.015050 0.009286 0.002921 0.027523 0.011728 -0.046926 -0.098498 0.000836 -0.056539 0.023297 0.018001 0.049131 0.004675 0.001073 -0.170749 0.014371 0.034021 0.020092 0.037851 -0.028229 0.102064 -0.048952 -0.025833 -0.026058 0.012805 -0.114410 -0.051993 0.013397 -0.036918 0.089997 0.157135 0.083396 -0.039602 -0.080711 -0.021277 0.053202 0.071289 -0.109812 0.002914 -0.015096 0.091661 0.031649 0.001854 0.034905 0.032772 -0.002794 -0.042979 0.068519 -0.063135 0.013342 -0.006060 0.046252 0.017425 0.141501 -0.060676 -0.083881 0.048423 -0.023162 0.027077 -0.098028 -0.014739 0.010480 -0.022374 -0.086942 0.100437 -0.075083 -0.115201 0.007563 0.033322 -0.103828 0.051361 0.024684 -0.004454 -0.055777 -0.046699 -0.082728 0.073797 0.055443 -0.143092 -0.037825 0.078811 0.036497 -0.077281 -0.008325 0.013544 -0.017594 -0.041641 0.047789 -0.034492 -0.002379 0.073826 -0.075772 -0.009782 0.050561 -0.019115 -0.056305 -0.001601 -0.034683 0.008058 0.060254 0.034221 -0.132588 0.051493 -0.015100 -0.031876 -0.051222 0.000989 0.047049 0.026343 -0.041914 -0.036045 0.095869 -0.062112 -0.018423 0.003773 -0.027867 -0.010398 -0.048280 -0.036537 -0.017897 -0.005851 -0.058694 -0.014345 0.061231 0.015028 -0.034773 -0.062937 -0.000104 0.042883 0.145663 0.087783 -0.037200 0.016255 0.036518 0.046461 -0.034405 0.079881 0.035236 0.059227 -0.075679 -0.016770 -0.068794 0.070744 -0.037727 0.127718 -0.021398 -0.046414 -0.032597 0.063874 0.097691 0.026403 -0.004663 -0.087849 -0.026770 0.144388 -0.048131 0.031670 0.106295 -0.065269 -0.040652 -0.014211 0.056560 -0.043383 0.070554 -0.010791 0.053436 -0.111118 0.031068 0.016914 0.052035 0.004705 -0.005330 0.034760 -0.023902 -0.025479 -0.020657 -0.051098 0.009155 0.063415 0.088456 0.063249 -0.036212 -0.000009 0.037196 -0.081303 -0.097243 -0.019263 0.029158 0.050108 0.039763 0.121192 0.042011 -0.067899 -0.051989 -0.021537 0.068444 0.027782 -0.016312 -0.019484 -0.002050 0.053199 0.005392 -0.008887 0.011627 0.044619 -0.090553 -0.063460 0.004298 -0.096710 0.054118 0.026422 -0.054091 0.011429 0.013193 -0.050806 -0.014131 0.048069 0.073934 0.058524 -0.027092 0.000422 0.030744 -0.027127 -0.040621 -0.081295 -0.132942 -0.174424 -0.009461 0.028177 -0.035784 0.088923 0.029507 -0.031399 0.023611 -0.016887 -0.076838 0.033483 0.030485 -0.089706 0.003531 0.109110 0.014393 -0.057547 -0.003360 0.039022 0.000441 -0.017536 0.010777 0.032913 0.009826 0.011260 0.063002 0.039884 -0.084768 -0.091794 -0.019418 0.001947 0.035580 0.092377 0.044137 -0.039732 -0.073936 0.074461 -0.026009 -0.018411 0.052151 -0.023017 -0.074733 -0.019706 -0.045403 0.041498 0.114826 -0.062412 -0.015496 -0.008802 0.010005 0.134097 -0.006114 -0.127624 -0.111323 0.020666 -0.044975 -0.039706 0.068792 0.011916 0.016754 -0.000454 -0.010497 0.014889 0.070891 0.116098 0.021857 -0.085198 0.023739 -0.088592 -0.046397 -0.013729 -0.021026 0.161165 0.011340 -0.032323 -0.022466 0.071886 -0.105818 0.021622 0.083276 -0.011759 -0.053961 0.111353 -0.063359 0.048522 0.020913 0.155966 -0.097759 0.067338 0.004069 0.048556 0.039733 0.024807 -0.036450 0.026902 -0.001497 0.008231 0.007538 -0.082664 -0.024402 -0.130124 0.001341 0.009836 0.031207 -0.007516 0.063997 0.013111 0.044756 -0.108910 0.036952 -0.038516 0.032064 0.054737 0.021054 0.090083 -0.095331 0.086201 0.072386 0.002048 -0.084090 -0.123429 0.036048 -0.020936 -0.001486 0.048416 0.057746 -0.007902 -0.025902 -0.039170 -0.090144 0.033093 -0.037429 -0.008878 0.031789 0.108803 -0.001264 -0.067338 0.047247 -0.010053 -0.104491 0.019316 -0.038488 -0.110868 -0.017281 -0.069637 0.003541 0.034292 0.055001 -0.090837 -0.028732 0.016192 0.056000 0.072632 -0.022204 0.040858 0.031991 -0.034742 -0.035448 0.019035 -0.013232 -0.014398 -0.006173 0.109096 -0.049988 0.013882 0.005876 -0.010246 -0.017441 0.025300 -0.098996 0.052687 0.025387 0.000912 -0.009639 0.084043 -0.052007 -0.083781 -0.030439 -0.073927 0.007538 0.012090 0.066881 -0.025604 0.016332 0.037268 -0.033802 -0.015458 -0.021930 -0.070557 -0.051580 0.012924 -0.009009 -0.017953 0.042537 -0.020288 -0.091337 -0.024530 0.040526 0.056023 -0.110282 0.026677 -0.038359 0.097050 0.014986 0.037195 0.054785 -0.083630 0.055443 -0.035272 0.003855 0.043706 -0.057062 -0.037280 -0.046268 0.022056 -0.034342 0.003546 0.055713 0.011998 0.006224 -0.025227 -0.088934 -0.028368 0.079334 -0.001505 -0.127990 -0.061598 0.084053 0.025380 -0.096473 0.067390 -0.020260 0.092217 -0.018618 0.027917 -0.048252 0.031415 -0.091387 0.090810 0.045103 -0.026705 -0.064460 0.002074 0.031180 0.067323 -0.016903 -0.005864 -0.003330 0.069051 -0.033416 0.082203 0.044956 -0.053755 -0.137252 -0.046061 0.093635 -0.088599 0.097969 -0.032264 -0.086639 -0.091644 0.033056 0.016076 0.011350 0.037895 0.004198 0.044101 0.049833 -0.032485 0.037383 -0.129242 -0.042353 0.109453 -0.005173 0.074401 -0.070002 -0.005799 0.052127 0.027453 -0.100450 -0.058706 0.015240 0.069141 0.015929 0.041277 0.055504 -0.023227 -0.001112 0.002065 0.012704 0.036834 -0.089424 -0.016815 0.074728 0.052480 -0.044368 -0.072117 0.037136 0.079468 -0.038248 -0.057019 0.003825 -0.069667 0.055439 0.014255 0.032135 -0.036398 0.060844 -0.051464 -0.103545 0.071708 0.063325 0.075800 0.002963 -0.013314 0.045130 0.020282 -0.083516 0.014408 -0.071592 -0.027531 -0.010278 -0.013934 -0.042730 0.072202 0.007273 -0.019582 -0.018122 0.004112 -0.129409 0.026095 -0.031100 -0.041493 0.001026 0.068622 0.045611 -0.016275 0.007467 0.007254 0.005397 -0.030822 0.027449 -0.020425 0.019762 0.122976 0.047420 0.032987 0.001328 -0.098351 -0.053497 0.013908 0.029366 0.013866 0.122783 0.041198 -0.068939 0.102145 -0.006101 0.037359 -0.057573 0.015037 0.049004 -0.008177 -0.020529 -0.022026 0.125989 -0.072538 -0.037701 0.022874 -0.032248 0.015711 -0.012920 -0.043093 -0.039808 0.025999 -0.059643 -0.020747 0.120412 0.058354 0.038064 0.023366 0.022306 -0.008795 0.096772 0.019502 -0.021527 -0.031783 0.042640 -0.012099 -0.056425 0.052337 0.040885 0.076375 -0.024182 -0.007386 0.006375 0.012472 -0.048071 -0.011689 -0.054259 0.004254 -0.041141 0.023551 -0.047763 0.040648 0.055189 0.041209 0.026372 0.083642 -0.041189 0.018401 0.098897 -0.079038 -0.058140 -0.021688 -0.004584 0.008362 0.050981 0.027989 0.004290 -0.077892 0.079784 0.022189 -0.000950 -0.028833 0.038684 -0.020911 0.002112 -0.089285 -0.009057 -0.044291 0.067770 0.023611 -0.010856 0.057004 -0.068496 0.028960 -0.012273 0.005375 -0.038117 -0.075004 0.002103 0.002426 0.056212 0.025731 0.113254 -0.069929 -0.080474 -0.089722 -0.019285 0.039492 -0.047136 -0.038086 -0.013093 0.104245 -0.014991 0.002220 0.028745 -0.014120 -0.003022 0.024545 0.002795 -0.099925 0.077130 -0.017081 0.101062 -0.062377 0.063615 -0.060597 -0.033619 0.126293 -0.014254 0.057849 -0.017270 0.000255 0.046692 -0.054974 -0.092568 0.028597 -0.061007 -0.049412 0.026217 -0.012099 -0.046248 0.055666 0.060678 0.069724 -0.056332 -0.008145 -0.067284 0.012714 0.050454 -0.036820 -0.038474 0.094104 -0.025727 -0.075576 -0.039175 0.010329 0.008010 0.003823 0.101716 -0.042132 0.070715 0.035590 0.040456 0.006306 0.001003 -0.055836 0.007729 -0.026461 -0.015636 -0.027037 0.017196 0.048239 -0.066902 0.090990 0.022012 -0.017646 -0.098129 0.037112 0.005951 0.024530 0.021647 -0.014662 0.107048 -0.087049 -0.037337 0.044913 0.024889 0.092117 0.019813 -0.103273 -0.011622 0.001294 -0.057107 -0.019526 0.055974 0.039931 -0.006568 -0.007790 -0.048103 0.049238 0.061609 0.006077 -0.075369 -0.009412 0.048275 0.009865 -0.081620 0.092182 -0.017333 0.064175 -0.040670 0.004648 -0.022311 0.003981 -0.066772 0.051258 -0.003877 -0.019203 -0.071235 0.039869 0.084219 -0.012268 0.000880 -0.047928 0.058804 0.087149 -0.026185 0.038879 0.064338 -0.035073 -0.023367 0.048265 0.050703 -0.021562 0.045307 -0.009582 -0.003124 -0.020818 0.022634 -0.009844 0.002915 -0.015520 -0.030355 0.083917 -0.031796 -0.047661 0.008159 -0.040844 0.028545 0.035008 0.057934 0.053669 -0.054020 0.035223 0.042440 -0.036255 -0.096245 -0.051155 -0.029984 0.014055 0.019736 0.048158 0.004093 -0.025898 -0.014328 0.002510 0.028365 0.085207 0.006077 0.002203 -0.027505 0.047570 -0.017349 -0.020587 0.067784 0.099796 -0.026735 -0.024473 -0.025703 -0.094091 0.031649 0.029644 0.003411 0.058308 0.049034 -0.068172 -0.115474 0.069425 0.033811 0.118472 0.050946 0.053623 0.078579 -0.019271 -0.065324 0.045402 -0.037870 -0.047215 -0.005675 0.086373 -0.014768 0.145929 0.037386 -0.014700 -0.049202 0.023594 -0.056698 0.023680 -0.033374 -0.061027 -0.059854 0.138963 0.011599 0.001533 -0.035748 -0.008464 0.032284 -0.039337 0.081951 -0.006716 -0.010483 0.112224 0.090494 -0.038372 -0.067773 -0.036190 -0.038843 -0.011294 0.090443 0.048152 0.042218 0.056232 -0.093971 0.122476 -0.005575 -0.036654 -0.029043 -0.034003 0.022275 -0.033887 -0.060285 0.004531 0.075150 -0.065225 -0.097285 -0.022983 -0.069686 0.069205 -0.001642 -0.056254 -0.077585 0.025569 -0.054803 -0.100539 0.093912 0.080158 -0.002782 0.010494 -0.006143 0.026757 0.145882 -0.004906 0.028979 -0.109082 0.071364 -0.005886 -0.068041 0.037065 -0.018060 0.065418 -0.041926 -0.102324 -0.083326 0.011189 -0.087023 -0.052738 -0.029586 -0.017342 -0.039294 0.027361 -0.091183 0.088291 0.045424 0.057392 -0.021108 0.072939 0.049198 0.122993 0.038302 -0.020317 -0.005652 0.011269 -0.001771 -0.047838 -0.064151 -0.069358 0.022155 -0.083435 0.003546 0.019317 0.007896 0.030876 0.029493 -0.015680 0.011502 -0.079687 0.043705 -0.076931 0.007474 0.001457 0.006085 0.047001 -0.040679 0.038183 0.030132 -0.015742 -0.043583 -0.066149 -0.013762 -0.006024 0.029832 0.027818 0.040294 -0.027094 -0.024302 -0.105055 -0.022415 0.045939 0.003325 -0.031412 0.002150 0.091557 0.040350 -0.023031 0.051570 -0.004636 -0.046863 -0.032721 -0.001379 -0.136365 0.030118 -0.015619 0.060966 0.051409 0.002981 -0.085911 0.034787 0.092612 -0.024351 0.032927 -0.011889 0.047216 0.013262 -0.031903 -0.008671 0.062494 -0.057320 -0.025303 -0.026174 0.061109 -0.031321 0.063430 -0.001627 0.033534 -0.042932 0.077354 -0.044685 0.038110 0.029437 -0.011422 -0.026351 0.079037 -0.011110 -0.065906 -0.012694 0.002666 -0.081176 0.007352 0.047210 -0.022385 0.022590 0.004000 -0.056449 0.028936 -0.002388 -0.119043 0.000528 -0.022876 0.000565 -0.041766 0.035570 -0.010223 -0.055419 -0.003717 0.050681 0.042119 -0.073103 -0.034640 -0.019828 0.077821 -0.007847 0.115964 0.095672 -0.057148 -0.022559 0.035308 -0.042327 0.097345 -0.034233 -0.054020 -0.057557 0.089841 0.009229 0.070683 0.108539 0.046246 -0.050120 -0.008497 -0.056988 -0.048306 0.068906 0.015296 -0.073327 0.020887 0.044562 -0.007768 -0.071345 0.057720 0.027704 0.094761 -0.024903 0.058677 -0.054592 0.045246 -0.128952 0.028581 0.009761 -0.036013 -0.137353 0.034736 0.027748 0.045031 0.020522 -0.032682 -0.010848 0.135840 -0.008210 0.064445 0.016483 -0.066692 -0.036966 -0.018892 0.037266 -0.055969 -0.000146 -0.070159 -0.043813 -0.035507 0.007295 0.067471 0.062439 0.031139 0.004051 0.081763 0.058234 -0.080642 0.039998 -0.014646 -0.020107 0.121620 -0.031533 0.049787 0.048427 -0.027995 0.017340 -0.036722 -0.027766 -0.072522 0.016754 0.116377 -0.007417 0.117559 -0.023170 -0.036028 -0.013555 -0.057848 -0.006776 0.057208 -0.080437 -0.067988 -0.044028 0.086414 -0.051744 -0.073007 0.043810 0.014807 -0.049665 -0.049222 -0.085317 -0.073906 0.084214 0.028253 0.022565 0.061129 -0.008498 -0.065248 -0.093368 0.125544 0.101010 0.030100 0.021030 0.003998 -0.000819 0.051523 -0.052633 -0.031029 -0.086071 -0.030398 -0.049646 -0.039065 -0.114362 0.111554 -0.013322 0.060882 -0.037407 -0.007392 -0.128509 0.069699 0.010662 -0.095924 0.004877 0.022956 -0.003608 -0.040638 0.005864 -0.025032 0.003803 -0.033060 0.104406 0.009014 -0.070791 0.101107 -0.010706 0.018493 -0.060775 -0.046556 -0.102536 -0.058762 0.013012 0.047639 0.074284 -0.021771 -0.071480 0.121697 -0.062576 -0.061069 -0.084239 -0.030672 -0.053509 -0.072509 0.029717 -0.075666 0.119601 -0.071159 -0.064371 0.049556 -0.006955 0.050790 -0.014936 -0.030424 -0.029046 0.095626 -0.053380 0.026242 0.084580 0.046043 -0.013774 0.048761 -0.003036 -0.055345 0.130574 0.072416 -0.040259 -0.012252 0.029803 -0.017821 -0.029420 0.057413 0.036485 0.041237 -0.032473 -0.046230 0.000440 -0.003955 -0.066533 0.009267 0.004057 0.002718 -0.054960 0.012076 -0.051431 -0.001750 0.015747 0.067251 0.037864 0.116071 -0.012828 0.063945 0.065686 0.005781 -0.102444 0.050582 -0.006415 -0.022414 0.010021 0.095137 -0.034063 -0.154439 0.018933 -0.026790 -0.009372 -0.025828 0.058756 0.008035 -0.025525 -0.090140 -0.012845 -0.008559 0.017881 -0.039468 -0.051786 0.088240 -0.081061 0.017134 -0.000603 0.072990 -0.106103 -0.045466 -0.026151 -0.003544 0.108411 0.044002 0.070681 -0.065841 -0.096530 -0.055378 0.015170 0.126129 -0.048244 0.006173 0.013564 0.196118 -0.046276 -0.026911 0.046123 0.060438 -0.042470 -0.007582 0.086581 -0.077901 0.057108 -0.013982 0.095961 0.013568 0.081727 -0.063919 -0.008458 0.020099 0.015455 0.049515 -0.048905 -0.006740 0.017709 -0.023263 -0.011752 0.104977 -0.091749 -0.072352 0.041545 0.027311 -0.061505 0.073899 0.057681 0.060911 -0.048034 -0.006742 -0.018161 0.082492 0.044955 -0.030697 -0.042272 0.060646 0.025253 -0.095552 -0.007674 -0.037376 -0.042828 -0.028071 0.078704 0.034767 0.003569 0.103759 -0.017217 -0.006459 -0.003174 -0.006884 -0.052177 0.000067 -0.000080 0.002880 0.067251 0.077245 -0.083559 0.043695 0.037396 0.005392 -0.085654 0.021389 0.037997 0.095932 -0.028364 -0.033582 0.112597 -0.047949 0.014115 0.027626 0.006558 0.055128 -0.035469 -0.081510 -0.015853 0.031846 -0.003825 -0.019678 0.109423 0.054030 -0.050997 -0.017309 -0.027511 -0.012712 0.078270 0.073890 -0.036127 0.007627 0.021692 0.029178 -0.076480 0.035985 -0.013671 0.074729 -0.070079 -0.041782 -0.003345 0.081644 -0.007541 0.018661 -0.069248 -0.082554 -0.066409 0.041793 0.088394 0.023002 0.031839 -0.004239 -0.055445 0.153536 -0.029606 0.011440 0.120925 -0.031292 0.009491 0.023924 0.097333 -0.064946 0.044945 -0.036368 0.075204 -0.043170 0.084879 0.044759 0.026172 0.014565 0.045921 0.045467 -0.017067 -0.028516 -0.030039 -0.097097 0.033711 0.032445 0.072773 0.052865 -0.002100 0.007495 0.042950 -0.042792 -0.074042 -0.011530 -0.056728 0.042999 0.092369 0.099547 0.013443 -0.054306 -0.043025 -0.068623 0.095940 0.074227 -0.079501 -0.007941 0.000413 0.032496 -0.031837 -0.016260 0.033024 0.064746 -0.017847 -0.104087 0.000197 -0.151410 0.074026 -0.001001 -0.031403 0.046221 0.036460 -0.040808 -0.021449 0.032127 0.079554 0.080997 -0.076818 -0.019398 0.037202 -0.001902 -0.080469 -0.020903 -0.017046 -0.093414 -0.063198 0.002218 -0.041482 0.114007 -0.001262 0.004609 -0.045369 -0.012778 -0.106632 -0.009353 0.046742 -0.093363 -0.020190 0.070943 0.104612 -0.026496 0.030245 0.036531 0.049474 -0.034971 0.010070 -0.016557 -0.015930 0.036066 0.046365 -0.059709 -0.083439 -0.099145 -0.024957 -0.044832 0.031623 0.022393 0.012334 -0.009649 -0.050844 0.126142 0.023320 0.052720 0.016504 -0.047781 0.002926 0.004861 -0.060239 0.050008 0.098520 -0.050552 -0.025407 -0.003390 -0.014939 0.068650 0.032517 -0.092568 -0.058102 0.078834 -0.068898 0.001143 0.108254 0.006322 0.014800 -0.012314 0.050222 -0.034504 0.174248 0.025459 -0.002951 -0.040868 0.022522 -0.081662 -0.051546 0.029154 -0.001469 0.154137 0.010623 0.000752 0.036767 0.113304 -0.068389 0.029430 0.054651 -0.072835 -0.063281 0.122269 -0.028825 -0.023612 0.018427 0.073886 -0.005629 0.074243 -0.013698 0.036158 0.027137 -0.008779 -0.051317 0.034729 0.011425 -0.005290 0.084381 -0.046825 -0.054925 -0.134575 -0.007420 -0.034384 0.032822 -0.006816 0.016250 0.013071 0.022288 -0.116225 0.121282 -0.061502 -0.022397 0.009282 0.013596 0.083516 -0.068117 0.018270 0.070016 -0.019013 -0.055558 -0.038255 0.048457 -0.023579 0.050451 0.085665 0.035829 0.005139 -0.053830 -0.068741 -0.045650 0.019271 -0.039606 -0.040208 0.113025 0.137240 -0.039967 -0.050847 0.011254 0.031376 -0.087299 0.036520 0.012497 -0.096540 -0.005847 -0.023409 0.055187 0.047393 -0.016958 -0.127368 0.014126 0.013071 0.042850 0.030065 -0.005283 -0.003391 -0.012498 -0.063424 -0.066634 -0.007857 -0.012463 -0.048025 -0.038726 0.093465 -0.068296 -0.004955 0.020647 0.064345 -0.025818 0.123250 -0.113614 0.042799 0.012083 0.019991 -0.011713 0.093276 -0.018115 -0.069842 -0.040684 -0.062936 -0.036833 -0.057289 0.048571 -0.021162 0.059277 0.027594 0.031567 0.004623 0.013103 -0.070462 -0.031843 -0.062285 0.003964 -0.043003 0.001089 0.007283 -0.094012 0.089866 0.071995 0.101778 -0.112357 0.012040 -0.072256 0.086698 0.032881 -0.033458 0.098016 -0.082535 0.048160 0.026744 -0.027036 0.025903 -0.042452 -0.094755 -0.054770 0.004509 0.015786 0.053114 0.051959 0.021238 -0.079127 -0.025941 -0.061221 -0.032380 0.000678 0.034720 -0.119877 -0.029004 0.038623 -0.037611 -0.139319 -0.005737 0.041081 0.129303 -0.021741 0.027442 -0.123106 0.038200 -0.064672 0.083376 0.032648 0.033742 -0.048851 0.029052 0.025199 0.023531 -0.025856 -0.003336 0.029494 0.075111 -0.010905 0.064079 0.037642 -0.035068 -0.084707 0.026922 0.022164 -0.068680 0.075838 -0.025633 -0.004398 -0.115237 -0.004548 -0.002381 0.026301 0.068400 -0.006462 0.121501 0.071558 -0.029120 0.004560 -0.059715 0.020657 0.160004 -0.003257 0.029479 -0.040264 -0.009405 0.008581 -0.016967 -0.102333 -0.102278 -0.030081 0.075670 0.078504 0.112244 0.066878 -0.024548 -0.067136 -0.004662 -0.026166 0.044337 -0.066652 -0.078118 0.000364 0.038618 -0.076186 -0.089846 -0.017872 0.072022 -0.066259 -0.059455 -0.028736 -0.093805 0.079006 0.023036 -0.015992 -0.045002 -0.004511 -0.021728 -0.091307 0.072076 0.104573 0.051663 0.037822 0.009659 0.091841 -0.000223 -0.070248 0.002859 -0.085403 -0.067834 -0.010392 -0.032752 -0.036464 0.047626 0.061988 -0.020766 -0.098673 0.010533 -0.120437 -0.028288 -0.010613 -0.086247 -0.006349 0.031765 0.038227 -0.042501 0.012368 0.001644 -0.053936 -0.052854 0.040412 0.006924 0.010332 0.084276 0.018472 0.030309 -0.012747 -0.071598 -0.111819 0.023998 0.087829 0.061878 0.094608 -0.037238 -0.050664 0.036768 -0.026142 0.028210 -0.019029 -0.007024 0.056710 -0.012442 0.005440 -0.103556 0.139787 -0.138355 -0.040445 0.025577 -0.107722 0.078150 -0.001450 -0.071658 -0.025306 0.038319 -0.103037 -0.028321 0.098830 0.057603 -0.007905 0.078051 -0.009903 -0.025356 0.086842 0.012796 0.022952 -0.014137 0.064001 -0.027812 -0.039279 0.060983 0.027092 0.074119 -0.010385 -0.012999 -0.057892 0.027647 -0.079000 0.021994 -0.032696 -0.014011 -0.042864 0.021318 -0.117190 0.023970 0.036325 0.057969 0.007604 0.135989 -0.027874 0.036906 0.067047 -0.008885 -0.080445 -0.027705 0.003494 -0.016421 0.020609 -0.029576 0.029755 -0.109042 0.078601 -0.014246 0.028812 -0.022730 0.042634 -0.037523 0.028199 -0.083746 0.036775 -0.009971 0.037147 0.014445 -0.058619 0.061398 -0.011282 -0.015391 0.000460 0.008396 -0.046827 -0.027835 -0.014145 -0.069296 0.027030 0.067044 0.087990 -0.003414 -0.125998 -0.042444 -0.033398 0.047298 -0.084005 0.001739 0.050690 0.114059 -0.044072 0.002756 0.040246 0.024529 -0.045169 0.010004 -0.037919 -0.092984 0.039383 0.031606 0.079460 0.010879 0.059048 -0.072431 -0.003405 0.086399 0.008666 0.031679 -0.042362 0.054428 0.060492 -0.022185 -0.099806 0.129259 -0.080670 -0.043866 0.012856 0.013568 -0.033243 0.095598 0.093044 0.062030 -0.075113 -0.037729 -0.060376 0.060004 0.031119 -0.061372 -0.096201 0.101855 -0.016822 -0.082510 -0.060718 -0.033015 -0.027222 0.007231 0.062973 -0.041640 0.109215 0.081676 -0.013847 -0.013324 0.027366 -0.033590 -0.046803 -0.039116 0.061055 -0.037717 0.065252 0.078148 -0.053763 0.050494 -0.011958 0.033369 -0.107018 0.057087 -0.015111 0.079702 0.078616 0.051406 0.103170 -0.055713 -0.031900 0.039951 0.010658 0.030803 -0.032401 -0.161199 -0.006920 -0.041844 -0.054552 0.068517 0.125210 0.080621 0.013543 -0.033413 -0.044663 0.074392 0.035932 0.023301 -0.045912 -0.009902 0.066933 0.032801 -0.049038 0.095407 -0.039521 0.112499 -0.074490 0.036163 -0.044197 0.018696 -0.011558 0.057933 -0.025639 -0.061431 -0.081026 0.005753 0.057683 -0.011585 0.006821 -0.006872 0.098313 0.119539 -0.081953 0.004434 0.067413 -0.006236 0.002746 0.014715 0.026754 -0.037853 0.034309 -0.028443 0.026642 -0.037707 0.066061 0.019234 0.029629 -0.015190 -0.012766 0.027166 -0.042834 -0.056186 -0.009603 -0.083747 0.050175 0.073412 0.007110 0.043388 -0.043870 0.042677 0.025735 -0.094635 -0.142996 -0.099443 -0.025460 0.022178 0.045321 0.069113 0.054570 -0.064131 0.000827 0.011239 0.039192 0.080176 -0.032389 -0.013939 -0.064993 0.048795 -0.022851 -0.004958 0.060895 0.123682 -0.068608 -0.074900 -0.019889 -0.062160 0.073126 0.058232 -0.032283 0.081527 -0.007318 -0.072361 0.003923 0.047891 0.057147 0.118678 -0.020847 -0.014802 -0.015634 -0.052605 -0.036531 0.034867 -0.078556 -0.111584 -0.003560 0.003142 -0.024669 0.173160 0.032364 -0.053222 -0.023754 -0.040899 -0.047008 -0.003696 -0.033042 -0.093138 -0.004980 0.112166 0.080717 -0.010216 -0.006619 0.021922 0.016601 -0.003126 0.051343 0.053954 -0.046302 0.038985 0.078694 -0.030092 -0.107599 -0.081002 -0.105924 0.002939 0.011743 0.034846 0.003716 0.065184 -0.117462 0.164375 0.073700 -0.033512 -0.050132 0.014156 -0.000174 -0.023948 -0.024012 -0.006934 0.108972 -0.059460 -0.048846 -0.012336 -0.051560 0.072806 -0.018567 -0.058139 -0.097127 0.057960 -0.003780 -0.069194 0.099784 0.014634 0.002396 0.004753 0.054780 0.066215 0.126638 0.054455 0.006893 -0.141807 0.059586 -0.018459 -0.063126 -0.022803 -0.035254 0.069275 -0.013827 -0.071276 -0.003613 0.069290 -0.132719 0.008038 -0.042340 0.029226 -0.111912 0.046898 -0.082164 0.046524 0.042479 0.097773 -0.009098 0.059874 0.073312 0.066974 0.019922 0.006528 -0.012465 0.012819 -0.009649 -0.002277 -0.027303 -0.050759 -0.050323 -0.080025 -0.003253 -0.006990 -0.002405 -0.013040 -0.007020 0.025178 0.055844 -0.116797 0.017350 -0.095996 0.027313 0.001295 -0.036475 0.035209 -0.050719 0.013403 0.027367 -0.033867 -0.020572 -0.083462 0.026022 0.029014 0.068306 0.059719 0.045583 -0.102670 -0.014676 -0.070060 -0.007867 0.061628 0.021102 -0.044131 0.078378 0.066952 0.012162 -0.059452 0.052841 -0.010660 -0.090335 -0.061320 -0.052210 -0.080353 0.003880 -0.025212 0.019020 -0.010473 0.007817 -0.044796 0.000027 0.083904 0.006729 0.028716 -0.007627 0.008946 -0.012966 -0.049870 -0.073154 0.092609 -0.040256 -0.020294 0.003554 0.076666 -0.067856 0.042000 -0.009122 0.044476 -0.118767 0.080698 -0.076039 0.023373 0.024567 -0.033258 -0.036048 0.044153 -0.019221 -0.018260 -0.035700 -0.029634 -0.065584 -0.049991 0.042902 -0.000452 0.031084 0.045586 -0.065013 0.072242 -0.014513 -0.122642 -0.018067 -0.052772 0.066880 -0.103725 0.037586 0.013011 -0.086527 0.032019 0.010695 0.027327 -0.089804 -0.030002 0.010910 0.113012 -0.008852 0.024520 0.099760 -0.077270 0.018171 0.079814 0.035008 0.127627 -0.025609 -0.178637 -0.034357 0.054347 -0.012604 0.043660 0.062421 0.068757 0.002273 0.000552 -0.055697 0.010254 0.102285 0.024048 -0.044425 -0.004860 0.053366 0.013063 -0.098388 0.046218 0.043926 0.077559 -0.036943 0.060936 -0.016764 0.098322 -0.041365 0.092078 0.019431 -0.039793 -0.118098 0.023995 0.053538 0.015639 -0.041697 -0.011851 -0.052177 0.084977 -0.050669 0.070218 0.030401 -0.076060 -0.020483 0.012783 0.033816 -0.050769 0.057281 -0.040092 -0.021298 -0.002690 -0.001729 0.035744 0.065206 -0.002257 0.015864 0.044906 0.045612 -0.081326 -0.040729 -0.018151 -0.048153 0.086870 0.077712 0.059363 -0.027251 -0.089240 0.025410 -0.036539 -0.067019 -0.057377 0.058057 0.070889 -0.015866 0.124536 0.012038 -0.007238 -0.051026 -0.027541 0.019248 0.026927 -0.083553 -0.025718 -0.042635 0.058541 -0.011741 -0.059778 0.065660 0.061292 -0.086725 -0.032482 -0.047209 -0.027933 0.087677 0.047367 0.001582 0.051308 -0.018242 -0.025264 -0.062026 0.074843 0.088969 0.059484 0.048905 -0.025787 -0.015960 0.010270 -0.030210 0.036763 -0.093327 -0.114689 0.013105 -0.035443 -0.085439 0.043021 0.056988 -0.020390 -0.008308 0.009722 -0.148341 0.081086 0.010332 -0.101445 -0.021486 0.078663 0.025110 0.007874 -0.023882 -0.034158 0.002488 -0.015558 0.158690 -0.025837 -0.011736 0.035542 0.005703 0.001555 -0.019753 -0.040038 -0.051161 -0.002844 0.041149 0.021540 0.062971 0.012070 -0.035360 0.091865 -0.090158 0.020460 -0.046615 -0.038100 0.002630 -0.055311 0.026706 -0.008623 0.155705 -0.030212 -0.117746 0.084958 -0.087229 0.092780 -0.011810 -0.084822 -0.029035 0.127892 -0.065824 0.008357 0.089638 0.003467 -0.034364 0.040506 -0.001934 -0.050401 0.105320 0.007386 -0.011020 -0.055669 0.029633 -0.034990 -0.028782 0.050039 0.059295 0.118394 -0.033924 -0.132036 0.012985 0.000793 -0.035658 0.031224 -0.040614 -0.014333 -0.054078 0.015577 -0.031608 0.071981 0.019771 0.079765 -0.007986 0.076487 -0.077172 0.119140 0.102976 -0.039809 -0.092140 0.032478 -0.070501 -0.026617 -0.016197 0.009189 -0.039295 -0.117914 0.014457 -0.061592 0.025979 -0.028542 0.042043 -0.029473 -0.031444 -0.158578 -0.003258 0.058182 0.072344 0.052910 -0.092808 0.085354 -0.079413 -0.044358 -0.041179 0.072986 -0.129686 -0.025728 -0.005197 -0.108115 0.063915 0.073996 0.057224 0.000050 -0.069751 -0.062690 0.026183 0.084719 -0.052197 -0.011673 0.032435 0.084752 0.060158 -0.031241 0.023120 0.048633 -0.025976 -0.032094 0.051737 -0.070951 0.034497 0.003743 0.019843 -0.055829 0.115532 -0.098594 -0.066675 0.048946 0.003976 -0.010224 -0.071617 0.007215 0.017134 -0.023828 -0.066295 0.084251 -0.039425 -0.074279 -0.010390 0.058722 -0.091528 0.073371 0.071531 -0.005671 -0.076154 -0.032125 -0.137305 0.071102 0.068984 -0.088661 -0.037098 0.081501 -0.013426 -0.093305 0.025622 -0.014982 0.007427 -0.068188 0.064271 -0.035807 0.026492 0.107054 -0.095956 -0.008699 0.021743 -0.031579 -0.040618 0.022948 -0.006215 -0.028661 0.082129 0.022510 -0.090809 0.032763 -0.014948 -0.000344 -0.068665 0.009455 0.064722 0.101146 0.018141 -0.019456 0.082955 -0.033054 0.018056 -0.025308 -0.023021 -0.006592 -0.027499 -0.079456 -0.014152 0.030881 -0.059661 -0.023889 0.075852 0.004376 -0.014776 -0.035516 -0.031784 0.056947 0.125839 0.039811 -0.082984 -0.015402 0.040202 0.031099 -0.040303 0.047701 0.050471 0.082637 -0.118070 -0.024705 -0.027053 0.042555 -0.045217 0.043471 -0.044274 -0.055532 -0.050709 0.038372 0.139423 0.034228 0.044240 -0.049598 -0.006876 0.084222 -0.084035 0.029679 0.024672 -0.099431 -0.061796 0.004907 0.127399 -0.065852 0.032572 -0.083461 0.040649 -0.064464 0.021261 0.012978 0.043311 -0.006692 0.029174 0.033834 0.010903 -0.049322 -0.023014 -0.053063 0.050601 0.079776 0.017751 0.090575 -0.044427 0.037446 0.038015 -0.114311 -0.116158 0.028262 -0.049840 -0.001403 0.022194 0.134131 0.092987 -0.066064 -0.014258 -0.007936 0.069423 0.006734 -0.036449 -0.006999 0.014668 0.062054 -0.033927 -0.037695 0.031955 0.072185 -0.067258 -0.065412 -0.030677 -0.153131 0.064817 0.020761 -0.114634 0.046484 -0.012249 -0.045214 -0.032565 0.032724 0.038377 0.052687 -0.074746 0.015211 0.031545 -0.001416 -0.092829 -0.036780 -0.058636 -0.153621 -0.019035 0.008907 -0.020006 0.073795 0.064152 -0.000207 -0.014885 0.001697 -0.075230 0.026080 0.012374 -0.089499 0.037475 0.064069 0.017655 -0.032040 -0.028499 0.036399 0.038500 -0.014121 0.034750 -0.002062 -0.015799 0.000062 0.074059 0.038031 -0.076502 -0.082402 -0.051544 -0.043409 0.052959 0.046017 0.047906 -0.000054 -0.062527 0.077616 -0.011144 -0.036095 0.006758 0.006522 -0.023224 -0.010642 -0.107560 0.051291 0.103622 -0.051956 -0.008535 -0.042995 -0.030987 0.123523 0.039493 -0.107293 -0.068566 0.006004 -0.077249 -0.049696 0.040608 0.002098 -0.005654 0.027282 -0.009389 0.042181 0.088705 0.055663 0.013492 -0.021941 -0.005352 -0.129536 -0.049372 0.006692 0.010255 0.107988 0.009301 -0.029104 -0.027292 0.015083 -0.122624 0.012460 0.056717 -0.065848 -0.097599 0.064951 -0.063651 0.037039 -0.031919 0.160199 -0.025996 -0.003930 -0.047321 0.027398 0.043702 0.013525 -0.061810 0.010431 0.014853 0.001414 -0.021460 -0.143900 -0.026666 -0.116995 -0.024697 -0.005896 0.048756 -0.053298 0.041329 0.012695 0.052326 -0.133818 0.105903 0.031440 -0.035969 0.050106 0.022116 0.126387 -0.109337 0.072036 0.100468 -0.005336 -0.056878 -0.046406 0.015972 -0.014095 -0.004362 0.051363 0.094242 -0.044797 -0.027049 -0.074056 -0.081706 0.012076 -0.021437 0.047597 0.088166 0.121074 -0.053524 -0.101688 0.029406 0.050242 -0.066960 0.062052 -0.035998 -0.084834 0.048189 -0.024642 0.023264 -0.011644 0.041881 -0.143927 -0.036006 0.064384 0.021606 0.052025 -0.023292 0.037743 0.004852 -0.027128 -0.078095 0.017231 -0.009425 -0.026275 0.007197 0.096964 -0.068860 0.060880 0.037649 0.014117 -0.065558 0.047350 -0.098632 0.083283 0.045025 0.025416 0.038291 0.099379 -0.057242 -0.098262 -0.004438 -0.093149 -0.017525 -0.064476 0.025479 -0.016529 0.020430 0.012592 -0.009811 -0.015037 0.005498 -0.076398 -0.034881 -0.007594 0.028415 -0.040315 0.028704 -0.028492 -0.105515 0.018470 0.042456 0.045301 -0.147209 0.007810 -0.047688 0.032497 -0.008208 0.017988 0.084280 -0.102271 0.004685 -0.018636 -0.003214 0.061342 -0.034608 -0.028335 -0.058715 -0.016027 -0.027108 0.008836 0.088808 0.038542 -0.020970 0.000400 -0.050920 -0.007459 0.061998 -0.024563 -0.091152 -0.014850 0.115523 0.022779 -0.107846 0.019813 -0.004600 0.099048 -0.029527 -0.031147 -0.061377 0.023544 -0.134421 0.066807 0.032147 0.021599 -0.043477 0.029615 0.039209 0.024621 0.019526 -0.002071 0.031970 0.101991 -0.003775 0.121976 -0.006993 -0.073412 -0.104010 -0.006442 0.062073 -0.052770 0.070835 -0.091445 -0.041991 -0.068768 0.059883 0.020621 0.042259 0.038888 0.021605 0.042693 0.038667 -0.040035 0.004977 -0.076466 -0.022332 0.056801 -0.000212 0.035708 -0.032640 -0.038064 0.006782 -0.009894 -0.100385 -0.033497 0.025298 0.034269 0.027448 0.077164 0.050701 -0.027548 -0.022455 -0.035381 0.018361 -0.004348 -0.069287 -0.017294 -0.004310 0.071591 -0.054832 -0.053949 -0.001929 0.071395 -0.015681 -0.038443 -0.044016 -0.048662 0.078642 0.014355 0.048150 -0.009957 0.032861 -0.075294 -0.123870 0.026265 0.093728 0.046174 -0.009184 -0.050917 0.079102 0.050699 -0.110383 -0.040917 -0.086311 0.012596 0.001827 -0.059395 -0.048207 0.063786 0.026565 -0.077077 -0.004569 -0.044546 -0.099623 0.006256 -0.016101 -0.027424 0.017338 0.024906 0.015827 -0.027372 -0.017107 0.034566 -0.019851 -0.035154 0.065204 -0.032861 -0.006305 0.115986 0.005671 0.060617 -0.019162 -0.098096 -0.042694 0.047107 0.037104 -0.008058 0.084632 -0.004556 -0.101542 0.075086 -0.009191 0.004624 -0.043225 -0.002498 0.032484 0.053384 0.011807 -0.035382 0.158001 -0.043066 -0.071159 0.039828 -0.062471 0.016281 -0.043445 -0.029971 -0.014564 0.054938 -0.076111 0.022672 0.108672 0.099046 0.018104 0.033550 0.027144 -0.053217 0.067212 0.035840 -0.020805 -0.064595 0.009953 -0.011147 -0.063721 0.036759 0.018701 0.102409 -0.031796 0.011001 -0.023883 0.028968 -0.057157 -0.042508 -0.052145 0.008972 -0.065914 0.070920 -0.087959 0.024752 0.079740 0.056457 0.008541 0.080771 -0.042955 -0.022030 0.077296 -0.087393 -0.065077 0.010062 -0.035395 -0.023652 0.009169 0.016281 0.043270 -0.112518 0.024860 -0.024549 0.016927 -0.028905 0.029316 -0.008912 -0.016575 -0.120884 0.023903 -0.054407 0.044132 0.038152 0.018656 0.065922 -0.016132 -0.006389 -0.043456 -0.005277 -0.038377 -0.043256 -0.028775 -0.034704 0.041058 0.024792 0.075342 -0.087680 -0.084754 -0.123797 0.069380 0.046858 -0.058807 0.032247 -0.003162 0.075858 -0.011643 -0.015012 0.064356 0.018978 -0.013598 0.027903 -0.019744 -0.072473 0.036145 -0.023830 0.091601 0.000445 0.030482 -0.087404 -0.045375 0.130636 0.016918 0.057383 -0.002236 0.019154 0.035447 -0.068637 -0.064903 0.079540 -0.091132 -0.027111 0.020001 -0.002105 -0.063610 0.085303 0.021592 0.135112 -0.114788 0.011338 -0.012485 0.059281 0.089211 -0.036178 -0.066274 0.112956 0.046283 -0.074477 -0.051750 0.031961 0.038617 0.011847 0.114117 -0.067782 0.028677 0.047877 0.009921 0.018292 0.016738 -0.056403 -0.038710 -0.010604 0.020050 -0.022217 0.056833 0.036114 -0.051337 0.155982 0.012794 -0.028857 -0.120583 0.084902 0.013151 0.029339 0.004512 0.029269 0.158467 -0.059083 -0.044942 -0.002369 0.025053 0.077484 -0.006987 -0.128357 0.000998 0.000658 -0.008066 0.002694 0.078402 0.051558 0.026018 -0.035135 -0.051516 0.093206 0.075687 0.007585 -0.030493 -0.042801 0.024643 0.035323 -0.068825 0.138089 -0.012481 0.043826 -0.059032 -0.004079 -0.057181 0.030592 -0.043929 0.081829 -0.034370 -0.027097 -0.043916 0.028082 0.040159 -0.023825 0.016659 -0.040314 0.027255 0.066119 -0.088450 0.079633 0.085602 -0.045368 -0.019169 0.063621 0.015908 -0.012968 0.043077 -0.011652 -0.009363 -0.072419 0.041253 0.015117 -0.000599 -0.038888 -0.015197 0.070823 -0.013167 -0.026186 0.024055 -0.072483 -0.003924 0.013391 0.055366 0.084999 -0.038449 0.043468 0.030321 -0.071656 -0.068751 -0.085100 -0.045854 -0.012937 0.001146 0.029160 0.007917 -0.038722 -0.013069 -0.022602 0.017646 0.050031 -0.034069 0.004746 -0.045839 0.088322 -0.033433 -0.049425 0.044323 0.135449 -0.033950 -0.006189 0.008117 -0.074632 0.033319 0.057707 -0.034315 0.061949 0.058279 -0.069064 -0.024633 0.083634 0.044328 0.065502 0.039147 0.045297 0.010853 -0.035928 -0.034367 0.029180 -0.079893 -0.056124 -0.021337 0.069848 -0.042840 0.100637 -0.021594 -0.017056 -0.026458 -0.005396 -0.038921 0.024334 -0.013119 -0.040654 -0.019092 0.122318 0.060562 0.014946 -0.017839 0.014916 0.007557 -0.055684 0.085343 0.020079 -0.020189 0.024923 0.038626 -0.008572 -0.098936 -0.015287 -0.036331 -0.030196 0.029395 0.068464 0.062459 0.007118 -0.121145 0.090713 0.018611 -0.060202 -0.064626 -0.026447 0.020572 -0.066985 -0.020928 0.046500 0.071362 -0.032780 -0.113550 -0.035570 -0.046101 0.123381 -0.000637 -0.030887 -0.085549 0.058943 -0.047480 -0.069392 0.133001 0.039940 -0.054277 0.026772 0.012818 0.061828 0.101149 -0.034239 0.018944 -0.101441 0.071801 -0.065653 -0.058695 0.062080 0.017518 0.111010 -0.059046 -0.054110 -0.031295 0.055930 -0.143458 -0.044617 -0.023186 -0.013649 -0.111579 0.040441 -0.065712 0.110422 0.014995 0.035371 0.001600 0.051063 -0.002833 0.096648 0.023072 0.007446 -0.027126 -0.021716 0.006914 -0.066680 -0.023776 -0.033004 0.018842 -0.100090 0.006577 -0.009435 0.014480 0.005289 0.027268 -0.023355 -0.000517 -0.035704 0.018493 -0.073805 0.007356 0.036041 -0.026668 0.057975 -0.046666 0.054676 0.021222 0.006590 -0.020075 -0.091969 -0.024459 -0.004411 0.080089 0.014146 0.047996 -0.013099 -0.028560 -0.086210 -0.038070 0.115542 -0.029380 -0.069424 0.000189 0.102273 0.014531 -0.058430 0.045176 -0.004636 -0.048318 0.011492 -0.070572 -0.166966 0.056891 0.042773 0.015200 0.025472 0.000731 -0.061858 -0.008651 0.108291 0.012505 0.032344 0.012567 0.062585 0.015632 -0.026488 -0.012319 0.030187 -0.052121 0.002827 -0.017721 0.065865 -0.047380 0.020409 0.023943 0.079766 -0.046306 0.060273 -0.027458 0.038828 0.032883 -0.043636 0.000901 0.075220 -0.005792 -0.090456 -0.041894 0.002536 -0.104333 -0.034913 0.038532 -0.048225 0.033342 -0.011078 -0.035938 0.000390 0.038012 -0.135572 -0.025786 -0.050179 0.001333 -0.078764 0.020818 -0.022520 -0.065079 0.013806 0.009337 0.024640 -0.064068 -0.007668 -0.005821 0.054794 0.006679 0.052490 0.085097 -0.084449 0.026105 0.043027 -0.006820 0.063480 -0.005166 -0.108834 -0.074395 0.066384 0.003385 0.002689 0.152176 0.074065 -0.025017 0.001996 -0.026355 -0.035760 0.063399 -0.010722 -0.053613 0.040833 0.083154 0.032094 -0.074978 0.040456 0.007659 0.060872 -0.050901 0.029009 -0.066327 0.040735 -0.106153 0.073500 -0.025479 -0.054887 -0.075445 0.009415 0.016203 0.012388 0.014428 0.000457 -0.036095 0.143621 0.046534 0.106183 -0.039550 -0.060834 -0.058729 -0.030704 0.046588 -0.069071 0.044146 -0.047632 -0.019171 -0.064829 0.017817 0.047929 0.039073 0.022116 0.021014 0.033732 0.050846 -0.059942 0.004345 -0.029985 -0.080140 0.129440 0.031031 0.084146 0.016015 -0.036682 0.044772 -0.049258 -0.056682 -0.051988 0.039973 0.080584 0.002750 0.080571 0.017418 -0.049233 -0.050745 -0.078517 0.041796 0.028714 -0.073271 -0.009924 -0.046737 0.077202 -0.089452 -0.100286 0.026524 0.025935 -0.000519 -0.108153 -0.097136 -0.011694 0.088312 0.041746 0.052188 0.026268 -0.054000 -0.039524 -0.030580 0.094436 0.083377 0.058849 0.024027 0.068118 0.022595 0.041719 -0.067897 0.005738 -0.058511 -0.080953 -0.011827 -0.008352 -0.136686 0.077343 0.036266 0.035162 -0.013237 -0.040135 -0.166246 0.029329 0.031590 -0.082787 -0.003165 0.022566 -0.029527 -0.026857 -0.030669 -0.012846 -0.014703 -0.024941 0.097289 0.062474 -0.023270 0.071516 0.026007 0.012490 -0.079323 -0.064277 -0.101304 -0.014965 0.038609 0.050228 0.059018 -0.054583 -0.037042 0.088943 -0.050793 -0.023046 -0.036841 -0.049866 0.006089 -0.012353 0.050822 -0.044544 0.133501 -0.044647 -0.060379 0.051279 -0.028470 0.068335 -0.008481 -0.078112 -0.022666 0.077373 -0.024423 0.000007 0.064437 0.062147 -0.038681 0.032008 -0.017525 -0.067472 0.114370 0.020743 -0.076853 -0.017874 0.001327 -0.014704 -0.014656 0.034577 0.024361 0.056274 0.006448 -0.028830 0.044899 0.016576 -0.044087 -0.010917 -0.013797 -0.018111 -0.065385 -0.007719 -0.037632 0.031813 0.021400 0.049162 0.020931 0.037485 -0.026412 0.056338 0.036907 -0.042904 -0.132436 0.043098 -0.041228 -0.035680 0.034986 0.047873 -0.072791 -0.131274 0.044610 -0.023411 -0.025045 0.005907 0.046734 -0.032724 -0.061008 -0.111818 0.015564 -0.002133 -0.015445 -0.011766 -0.048157 0.139974 -0.079607 0.004936 -0.033105 0.052832 -0.087579 -0.040662 -0.055766 -0.026403 0.102134 0.084616 0.064986 -0.020826 -0.077346 -0.025393 -0.002277 0.084614 -0.053523 -0.091453 0.022927 0.150824 -0.002083 -0.001161 0.030663 0.060472 -0.050918 0.018421 0.027526 -0.091037 0.070144 0.040963 0.090458 0.030099 0.071509 -0.062928 -0.052351 0.030143 -0.026417 0.032481 -0.045066 0.000111 -0.004684 -0.002093 -0.014278 0.173191 -0.019552 -0.072985 0.033124 0.074779 -0.053669 0.106059 0.090086 0.039197 -0.065054 0.025258 -0.050488 0.068107 0.037370 -0.074734 -0.072895 0.041719 -0.026666 -0.116776 -0.050593 -0.022049 0.019100 -0.052687 0.077699 0.002538 0.021642 0.069070 -0.025842 -0.025721 0.004558 -0.051248 -0.059783 -0.021367 -0.043714 -0.040732 0.063823 0.074918 -0.079342 0.050195 0.021249 -0.028816 -0.061727 0.018248 0.005884 0.050434 -0.021363 -0.018341 0.100200 -0.041043 -0.005428 0.011984 -0.030931 0.026453 0.005239 -0.089215 -0.046851 0.018966 -0.029878 -0.019543 0.106899 0.047058 -0.097279 -0.091117 -0.029152 0.017775 0.066229 0.079262 -0.009853 0.015344 0.002972 0.005261 -0.068619 0.065134 0.021325 0.052198 -0.040335 -0.031105 -0.022038 0.046868 -0.008746 0.024060 -0.039353 -0.043527 -0.053729 0.048245 0.078712 0.063353 0.054853 0.000893 -0.011563 0.116159 -0.043972 0.030272 0.054786 -0.024768 -0.040403 0.056841 0.146419 -0.034807 0.057094 -0.054852 0.104343 -0.076770 0.050072 0.052860 0.019579 -0.001424 0.015739 0.065242 -0.006303 -0.020658 -0.036628 -0.138792 0.038907 0.049015 0.064288 0.105084 -0.009955 -0.013576 0.042749 -0.058027 -0.060563 0.018986 -0.042694 0.055557 0.029964 0.088314 0.017075 -0.098025 -0.059071 -0.029354 0.030490 0.045049 -0.039481 -0.016714 -0.028323 0.051148 -0.033224 -0.012870 -0.002631 0.095782 -0.018745 -0.067411 -0.067803 -0.096432 0.048605 0.001590 -0.007541 0.020762 0.011888 -0.020905 -0.048766 0.049192 0.094934 0.090567 -0.064939 0.021130 0.094459 -0.009557 -0.060711 -0.057713 -0.034265 -0.053583 -0.016969 -0.012648 -0.063332 0.105446 0.016028 -0.006489 -0.023448 0.027450 -0.092041 -0.002328 0.038286 -0.093578 0.014068 0.045683 0.038064 -0.013579 0.012105 0.031264 0.028629 -0.053522 0.018638 0.010295 -0.019741 0.051773 0.021102 -0.003833 -0.088492 -0.107650 -0.039638 -0.042960 0.017232 0.033768 0.024773 0.031441 -0.026193 0.102995 -0.003033 0.013478 -0.022850 -0.045542 -0.043058 0.040213 -0.037024 0.062912 0.127046 0.001959 -0.029856 0.021744 -0.024546 0.073822 0.034590 -0.034810 -0.073281 0.037715 -0.086249 -0.031013 0.094574 -0.014633 0.035329 -0.001586 -0.004488 -0.022600 0.105074 0.068271 0.014684 -0.069910 0.035216 -0.046091 -0.056792 0.016636 -0.031304 0.104876 0.015142 -0.014980 -0.018234 0.076863 -0.070661 -0.018752 0.021078 -0.015693 -0.082177 0.139823 -0.020936 0.000788 -0.047650 0.086463 0.003184 0.053978 0.016598 0.005082 0.037579 -0.007222 -0.068342 0.001780 -0.016838 0.000034 0.019368 -0.028889 -0.073195 -0.167931 -0.002740 -0.051503 0.060666 -0.048875 0.013166 -0.002367 0.018484 -0.088268 0.058154 -0.005778 -0.019212 0.030488 -0.007580 0.042345 -0.062956 0.013296 0.040910 0.018849 -0.062445 -0.062359 -0.004222 -0.003121 0.026069 0.075825 0.086917 0.019144 -0.018779 -0.072348 -0.063072 0.046388 0.009524 -0.032045 0.075619 0.076314 -0.042349 -0.026193 -0.003729 0.066560 -0.103338 -0.004071 -0.000469 -0.090470 0.033564 -0.067881 0.027775 0.040936 0.054314 -0.123113 -0.001763 0.032899 0.028282 0.057689 -0.011369 0.021664 -0.023786 -0.104368 -0.070997 0.059588 -0.014596 -0.042435 0.003429 0.090193 -0.113362 -0.007873 0.011799 0.036299 -0.059670 0.054351 -0.084675 0.034819 -0.007507 -0.018723 -0.009649 0.092970 0.008836 -0.028752 -0.044170 -0.070934 -0.103397 -0.030638 0.048533 -0.032645 0.020691 0.053664 0.011144 -0.021593 0.015401 -0.085379 -0.058031 -0.078320 -0.003648 -0.010436 -0.012911 -0.007136 -0.134525 0.030251 0.042795 0.087389 -0.092708 -0.026287 -0.039855 0.155791 -0.013492 -0.036665 0.072298 -0.133309 -0.003156 0.013287 -0.012142 0.018020 -0.071518 -0.038880 -0.026195 0.009773 -0.006971 0.044349 0.079337 0.015294 -0.035758 -0.003607 -0.058092 0.001525 0.042209 0.047862 -0.061178 0.014357 0.093707 0.022406 -0.118850 -0.034213 0.019269 0.070424 -0.016998 0.021550 -0.094794 0.004962 -0.108204 0.128671 0.015466 0.031554 -0.080559 0.041092 0.022039 0.001186 -0.022630 -0.043310 0.005192 0.074769 -0.022963 0.039941 0.055086 -0.081362 -0.064870 0.040274 0.052633 -0.062993 0.085037 -0.010420 -0.016774 -0.052155 0.002576 0.013639 0.061713 0.041734 -0.008138 0.080793 0.024851 -0.042037 0.019932 -0.048494 -0.029059 0.146206 0.042139 0.033378 -0.021081 -0.014080 0.001144 -0.016467 -0.076606 -0.056525 0.005355 0.079452 0.043451 0.085716 0.029884 -0.042582 -0.055446 0.005137 0.000476 0.001691 -0.041210 -0.077759 0.022581 0.046845 -0.028540 -0.120802 -0.013263 0.072039 -0.031588 -0.006830 -0.040167 -0.125914 0.088795 0.022744 0.055951 0.003326 0.027383 -0.028722 -0.123214 0.059791 0.097070 0.030682 -0.019252 0.000330 0.082240 0.006364 -0.113196 0.035671 -0.063923 -0.075420 0.017812 -0.046079 -0.059540 0.093696 0.056472 -0.031904 -0.065015 -0.019089 -0.091007 0.031632 0.018500 -0.054687 0.032704 0.040721 0.012163 -0.041854 -0.010613 -0.017039 -0.028850 -0.061295 0.029279 0.000022 -0.023031 0.084704 0.032995 0.000464 -0.042280 -0.122277 -0.133466 0.058700 0.095073 0.044206 0.068361 0.039925 -0.039455 0.043618 -0.033785 0.035086 -0.056425 0.019711 0.049265 0.053168 0.030600 -0.096642 0.090726 -0.078183 -0.002747 0.032400 -0.043278 0.040809 -0.019946 -0.088229 0.027009 0.056114 -0.113044 -0.020901 0.076359 0.059245 0.016714 0.040966 -0.010584 -0.003554 0.056159 0.010151 0.000010 -0.027039 0.073329 -0.015462 -0.016179 0.013943 0.075066 0.067462 -0.030769 -0.024755 -0.022212 0.040264 -0.071337 0.009512 -0.045952 0.023049 -0.094656 0.057345 -0.124101 -0.007720 0.037588 0.036110 -0.011456 0.089645 -0.007765 0.014716 0.059788 -0.047648 -0.019740 -0.007164 -0.013816 -0.060158 0.013439 0.002759 -0.025340 -0.091571 0.043341 -0.028869 0.026551 -0.031854 0.060505 -0.049549 0.033978 -0.109503 0.068308 -0.028080 0.053928 -0.022460 -0.086171 0.086833 -0.045654 0.000759 -0.010999 0.026013 -0.046809 -0.054160 -0.030739 -0.041475 -0.010348 0.057903 0.106187 -0.031967 -0.136159 -0.056033 0.020976 0.056817 -0.030310 0.060592 0.045537 0.086963 -0.032719 0.018689 0.033949 0.017964 -0.019455 0.008378 0.014325 -0.124934 -0.010142 0.033116 0.066121 -0.008592 0.059328 -0.090438 -0.060148 0.065598 -0.010732 0.014210 -0.046081 0.019411 0.040325 -0.012140 -0.084611 0.064608 -0.023209 -0.018978 0.028244 -0.000390 -0.070852 0.136445 0.055833 0.034530 -0.106636 -0.049748 -0.043837 0.056670 -0.020391 -0.027277 -0.125403 0.082621 -0.064172 -0.085208 -0.034925 0.000691 -0.016798 0.037357 0.058365 -0.014015 0.051315 0.078205 0.001672 0.009538 0.041777 0.001519 -0.031501 -0.027967 0.008286 -0.051667 0.045953 0.057151 -0.083565 0.099401 0.052489 0.027972 -0.093449 0.022696 0.014953 0.056948 0.062741 0.024005 0.076825 -0.029857 -0.002820 0.046866 -0.002247 0.022284 -0.005875 -0.120877 -0.029880 0.030478 -0.074641 0.026517 0.141968 0.041939 -0.017604 -0.063098 -0.042315 0.108332 0.077079 0.042498 -0.093786 -0.000624 0.109876 0.061671 -0.037131 0.145507 -0.015339 0.059306 -0.094584 0.004561 -0.031261 0.003112 -0.004144 0.054816 -0.035342 -0.020048 -0.055998 -0.008131 0.096183 0.002903 0.002243 -0.024465 -0.011484 0.122067 -0.117424 0.061629 0.100785 -0.008995 -0.021311 -0.034915 0.028992 -0.065386 0.062233 0.009424 0.013652 -0.066035 0.068604 0.015424 -0.016048 -0.028882 -0.021780 0.034733 -0.052918 -0.046384 0.003918 -0.037747 0.012883 0.061961 0.011614 0.047979 -0.020950 0.012662 -0.003597 -0.016134 -0.114584 -0.032846 -0.025773 0.029225 0.029423 0.035929 0.050919 -0.093288 0.024548 0.026469 0.086567 0.069788 -0.015915 0.014888 -0.054796 0.032121 0.010392 0.010094 0.027316 0.105326 -0.033913 -0.034646 -0.047655 -0.119467 0.014906 0.070898 -0.051722 0.085920 0.026450 -0.048565 -0.048393 0.040708 0.013886 0.115144 0.000426 0.025815 0.028617 -0.076183 -0.060818 0.007730 -0.030613 -0.106233 0.008414 0.008274 -0.071702 0.123060 -0.014131 -0.075611 -0.006558 -0.031029 -0.038394 0.018650 -0.068219 -0.088628 0.017122 0.073322 0.003094 0.023978 -0.022533 0.052647 0.005485 -0.022853 0.047387 0.058945 -0.012186 0.049493 0.117395 -0.008681 -0.136174 -0.057438 -0.017543 -0.020215 0.064213 -0.018764 0.030830 0.026967 -0.104162 0.097321 0.026515 -0.008192 -0.071056 -0.023457 0.037214 -0.028805 0.019265 0.010163 0.118572 -0.083174 -0.026261 -0.079021 -0.109716 0.081199 -0.001821 -0.039505 -0.064758 0.022196 -0.008395 -0.056773 0.070319 0.039957 -0.024091 -0.012671 0.043873 0.034859 0.113349 0.002335 -0.016767 -0.117575 0.038224 -0.016650 -0.007249 -0.028289 -0.020867 0.099598 -0.027205 -0.047643 -0.022079 0.062869 -0.095742 0.004349 -0.009783 -0.009631 -0.114174 0.101698 -0.020882 0.032183 0.046772 0.066030 0.023138 0.031676 0.048789 0.064708 0.016049 -0.022143 -0.026033 0.014811 0.017879 0.005234 -0.011470 -0.061933 0.012402 -0.073904 -0.008574 0.011810 0.022041 -0.034666 0.015863 0.032824 0.011302 -0.083572 0.034152 -0.049572 0.046696 -0.004826 -0.026282 0.006930 -0.036282 0.018845 0.023008 -0.022702 0.002839 -0.056809 0.046756 -0.012044 0.093032 0.037759 0.053581 -0.068607 -0.014841 -0.102444 -0.056353 0.054083 0.022493 -0.027398 0.044342 0.073545 -0.016381 -0.030891 0.080430 0.020741 -0.064660 -0.030998 -0.064001 -0.094590 -0.012708 0.031636 0.033664 0.017650 -0.020332 -0.049802 0.010802 0.048687 -0.014333 0.032177 -0.003331 0.031214 -0.009314 -0.043033 -0.047137 0.054111 -0.030505 -0.006532 0.021755 0.050908 -0.056081 0.074478 0.019301 0.003105 -0.097554 0.054912 -0.016068 0.031570 0.019298 -0.067236 -0.010230 0.065782 -0.048545 -0.032341 -0.039446 -0.004134 -0.054109 -0.014461 0.064470 -0.004466 0.064183 -0.013807 -0.040371 0.012385 -0.043869 -0.179654 -0.075267 -0.058833 0.027833 -0.078315 0.006233 0.019417 -0.100407 0.057753 0.000717 0.032416 -0.121474 -0.047213 -0.015720 0.092246 -0.059387 0.040603 0.109440 -0.058153 0.071202 0.030939 0.049569 0.087021 -0.076095 -0.131564 -0.027353 -0.000486 -0.015803 0.104552 0.088105 0.072307 -0.020686 0.043142 -0.089957 0.000627 0.140513 0.006435 -0.023427 -0.000585 0.090754 0.029188 -0.057282 0.010274 0.075187 0.111159 -0.057877 0.069809 -0.050756 0.062932 -0.036407 0.050992 0.009269 -0.006383 -0.106503 0.017063 0.008141 0.064195 -0.045832 0.011576 -0.041847 0.061264 -0.005204 0.058984 0.021548 -0.048377 -0.044097 0.010789 0.013451 -0.063551 0.063079 -0.080144 -0.027762 -0.017784 -0.023803 0.027775 0.060824 0.001841 -0.009369 0.061007 0.032254 -0.064190 -0.006988 -0.010230 -0.038793 0.076776 0.045814 0.049754 0.027771 -0.047904 0.017897 -0.052309 -0.106778 -0.037221 0.011510 0.060085 -0.009615 0.096725 0.047490 -0.010900 -0.074275 -0.061489 0.016070 0.006262 -0.121827 0.005654 -0.050379 0.042456 -0.027064 -0.068110 0.106922 0.068599 -0.034845 -0.067145 -0.036874 -0.041315 0.035902 0.059175 0.013939 0.008294 -0.000352 -0.046255 -0.058090 0.089826 0.091060 0.092701 0.009236 0.013325 -0.019194 0.039376 -0.018583 -0.016868 -0.096550 -0.086377 -0.016296 0.002608 -0.083265 0.049964 0.042836 -0.011462 -0.046261 0.084247 -0.180528 0.034023 0.041962 -0.128842 -0.057438 0.031753 -0.013294 -0.008752 -0.054893 -0.036386 -0.004605 -0.020903 0.113550 0.017158 -0.063971 0.047456 0.033803 0.026820 -0.033048 -0.057221 -0.039801 -0.029135 0.004112 0.055166 0.080631 0.011347 -0.039214 0.069633 -0.057947 0.018314 -0.110810 -0.006258 0.011057 -0.058755 -0.016184 -0.078348 0.154720 -0.056156 -0.110551 0.114867 -0.031689 0.014677 0.024109 -0.060048 0.019844 0.109975 -0.045339 0.002565 0.067118 0.019907 0.004995 0.078815 -0.017892 0.015592 0.118138 0.009682 -0.024624 -0.025684 0.027247 -0.044912 -0.011851 0.057506 0.106751 0.066538 -0.073230 -0.069470 -0.044869 -0.007738 -0.078232 0.000098 -0.056553 -0.000261 -0.069574 0.025403 -0.032460 0.042204 -0.009414 0.024336 0.002379 0.084422 -0.062254 0.070007 0.083297 0.011215 -0.087554 0.008854 -0.031248 -0.019485 0.015117 0.019539 -0.018885 -0.091190 0.006668 -0.029364 0.010585 0.004194 0.053285 -0.032862 0.007750 -0.181078 0.014752 -0.032591 0.035286 0.052475 -0.044255 0.152326 -0.034986 0.001871 -0.048154 0.032533 -0.150372 -0.061009 0.025623 -0.057468 0.099245 0.098809 0.047259 -0.017644 -0.089718 -0.052981 0.060000 0.050683 -0.093984 -0.012007 0.021790 0.115572 0.011056 -0.005239 0.022166 0.036556 -0.019139 -0.017723 0.036182 -0.053160 0.008506 0.003654 0.035883 -0.011143 0.126442 -0.042372 -0.049170 0.021566 -0.034390 0.004133 -0.083543 0.003794 0.003199 0.023898 -0.058139 0.097937 -0.021906 -0.118046 -0.009779 0.053140 -0.086424 0.032891 0.040964 0.003078 -0.054441 -0.008601 -0.059920 0.074604 0.120587 -0.102501 -0.066840 0.070391 0.032323 -0.084081 -0.025867 0.003136 -0.037883 -0.064963 0.077565 -0.011987 -0.030929 0.076324 -0.096244 -0.003417 0.038221 -0.027320 -0.034091 0.001490 -0.007638 -0.034015 0.052893 0.055546 -0.147361 0.042258 -0.020035 -0.017400 -0.076711 -0.017528 0.045540 0.051725 -0.024199 -0.035180 0.069090 -0.066211 0.016712 0.012236 -0.023556 -0.008512 -0.043404 -0.040132 0.006223 0.020953 -0.040829 -0.031888 0.063196 0.044618 -0.021241 -0.065557 0.013691 0.016905 0.113755 0.054933 -0.021644 0.016741 0.030625 0.010121 -0.037365 0.072566 0.006060 0.080380 -0.086262 -0.033079 -0.082250 0.087161 -0.049737 0.100611 -0.073241 -0.060578 -0.018873 0.076177 0.146262 0.031684 -0.014816 -0.074152 0.012492 0.111905 -0.037241 0.036831 0.091650 -0.058779 -0.035497 0.009717 0.105238 -0.068452 0.050555 -0.035241 0.038942 -0.086304 0.055772 0.028480 0.055647 -0.013345 0.009719 0.060855 -0.009449 -0.029466 -0.039618 -0.045775 0.012008 0.093753 0.059452 0.084398 -0.063094 0.003659 0.074625 -0.110159 -0.075540 -0.006386 0.010137 0.032774 0.014827 0.166347 0.079179 -0.032299 -0.047524 -0.033098 0.052546 0.023211 -0.005083 -0.040770 0.010451 0.047465 -0.015315 -0.001296 0.006073 0.070897 -0.060137 -0.051576 -0.032384 -0.082914 0.047391 0.018599 -0.072054 0.020109 0.006570 -0.072222 -0.028125 0.023991 0.073458 0.052141 -0.039550 0.020745 -0.004247 -0.027316 -0.026412 -0.050898 -0.048547 -0.135601 -0.022268 0.038434 -0.006989 0.106829 0.013384 0.000746 0.016253 -0.014804 -0.086222 0.017979 0.043413 -0.078404 0.050130 0.105998 0.009523 -0.080688 -0.029072 0.043530 0.018815 -0.027097 0.017270 0.008265 0.029905 0.025756 0.068311 0.010413 -0.062141 -0.092435 -0.009085 -0.011445 0.024539 0.076003 0.038136 -0.010407 -0.045941 0.082228 -0.001579 -0.035917 0.064558 -0.023500 -0.063481 0.003930 -0.067573 0.030233 0.098224 -0.042799 0.003064 0.009816 -0.008225 0.109707 -0.034960 -0.080238 -0.123786 0.048109 -0.059473 -0.055367 0.057060 -0.001238 0.030381 0.025074 0.006831 0.017900 0.111674 0.097968 0.015896 -0.050238 0.041727 -0.107658 -0.072374 -0.018776 0.001860 0.159151 -0.015443 -0.046034 -0.062151 0.065586 -0.066719 0.031320 0.059675 -0.022808 -0.066461 0.086303 -0.026658 0.070774 0.006480 0.159805 -0.035879 0.058009 0.012928 -0.008505 0.051041 -0.000692 -0.022889 0.039547 0.001201 -0.030295 0.029145 -0.073169 -0.019964 -0.102560 -0.021646 -0.009084 0.039313 -0.008758 0.059413 0.019112 0.068432 -0.154269 0.042342 -0.017110 0.003279 0.087898 0.002044 0.110066 -0.076844 0.041884 0.035740 -0.001247 -0.094360 -0.090406 0.040890 -0.028718 0.013704 0.031084 0.040651 -0.028325 -0.027470 -0.060171 -0.069388 0.051373 -0.010018 0.016317 0.030962 0.131065 -0.012443 -0.085994 0.023695 0.036048 -0.123378 0.017394 -0.014188 -0.147008 0.010122 -0.048605 0.011567 0.011549 0.033481 -0.087698 -0.007977 0.012262 0.046426 0.046093 -0.000803 0.034084 0.024231 -0.011190 -0.037156 0.022545 0.009116 -0.021868 0.000176 0.161431 -0.066441 -0.004212 0.008997 -0.027580 -0.039554 0.047688 -0.114080 0.037481 0.021017 -0.015449 0.023651 0.076890 -0.062376 -0.089367 -0.035901 -0.117304 -0.014988 -0.004232 0.065798 -0.038753 0.006615 0.027216 0.000892 -0.043842 -0.027915 -0.077769 -0.025289 0.007296 0.021684 -0.008098 0.034493 0.002195 -0.089680 0.015447 0.014866 0.063536 -0.107947 0.040356 -0.049353 0.085041 -0.019010 0.017126 0.054466 -0.095573 0.040640 0.005208 0.001846 0.046985 -0.060406 -0.059147 -0.078410 0.032047 -0.027762 0.023664 0.067476 0.025927 0.004505 -0.005180 -0.107366 -0.052865 0.059971 0.018624 -0.086019 -0.038792 0.082042 -0.009606 -0.082518 0.048899 -0.032272 0.118434 -0.029891 0.014012 -0.078772 0.071631 -0.124648 0.096824 0.071580 -0.014951 -0.078224 0.028148 0.050459 0.044666 -0.016543 -0.039821 -0.016072 0.087706 -0.056648 0.087416 0.030016 -0.076113 -0.101181 -0.049336 0.048944 -0.063956 0.087916 -0.036885 -0.059650 -0.044808 0.054549 0.006956 0.033701 0.030349 -0.017304 0.057616 0.016137 -0.052723 0.039906 -0.101393 -0.068763 0.099576 0.006264 0.083677 -0.032515 -0.006446 0.031066 0.009386 -0.132131 -0.067080 0.049843 0.065652 0.020336 0.046760 0.071347 -0.013796 -0.001044 -0.022677 0.019523 0.014154 -0.120083 -0.039608 0.050937 0.066017 -0.034193 -0.069836 0.025969 0.058877 -0.033911 -0.021741 0.005164 -0.037563 0.051151 0.030827 0.041654 -0.050675 0.032902 -0.056904 -0.083309 0.051372 0.092971 0.070309 0.017775 -0.033610 0.023024 0.044912 -0.113795 0.009331 -0.100912 -0.024567 0.000589 -0.023568 -0.041534 0.046948 0.019053 -0.031982 -0.010104 -0.033008 -0.120085 0.014601 -0.013314 -0.032777 0.022640 0.053925 0.056793 -0.009301 0.011372 0.004027 -0.017398 -0.055177 0.038121 -0.000187 0.037310 0.135976 0.012337 0.060620 -0.032842 -0.103898 -0.068672 0.001160 0.043004 -0.011293 0.085530 0.053401 -0.086065 0.123377 0.016620 0.045728 -0.034590 -0.014069 0.081166 0.009573 0.008541 0.007549 0.143099 -0.050664 -0.045174 0.012225 -0.052408 0.008760 -0.016453 -0.030851 -0.052611 0.054134 -0.086747 -0.068170 0.152077 0.049576 0.035454 0.051824 0.042151 -0.013574 0.070619 0.043677 -0.011524 -0.051292 0.065538 -0.002312 -0.036357 0.061560 0.011089 0.083280 -0.022801 -0.035830 0.007115 0.022494 -0.033816 -0.026885 -0.055802 0.037931 -0.067432 0.034696 -0.048668 0.025237 0.063419 0.052414 0.002888 0.073912 -0.070773 0.030231 0.098077 -0.052981 -0.038547 -0.044533 0.015899 -0.006684 0.059142 0.015994 -0.010569 -0.114343 0.049113 0.011781 0.007813 -0.023202 0.027226 -0.048228 0.023363 -0.119744 -0.005880 -0.047102 0.056647 0.043309 -0.020351 0.078326 -0.050033 0.004297 -0.004014 -0.008930 -0.041817 -0.061743 -0.031268 0.020567 0.053127 0.035109 0.095886 -0.022695 -0.103689 -0.101536 -0.035350 0.033822 -0.071528 -0.027884 -0.013301 0.135256 -0.057997 -0.006784 0.025162 0.014105 -0.008340 0.036569 -0.047669 -0.071591 0.074153 -0.001441 0.118717 -0.038919 0.054650 -0.101206 -0.019929 0.096971 0.019005 0.066319 -0.033069 -0.010263 0.057814 -0.038319 -0.115955 0.048866 -0.085605 -0.005601 0.066517 -0.010474 -0.068925 0.056969 0.055565 0.068964 -0.047482 -0.006419 -0.087153 0.047383 0.032670 -0.032209 -0.036239 0.140438 -0.038488 -0.103112 -0.063917 0.016553 0.017109 -0.018945 0.071205 -0.057507 0.036017 0.043139 0.045741 0.011471 0.019692 -0.031466 -0.001430 -0.027755 -0.010061 -0.028245 0.031925 0.070075 -0.044640 0.079725 -0.005444 -0.055716 -0.081872 0.035299 -0.020415 0.060898 0.037726 -0.007902 0.118692 -0.091406 -0.074996 0.014883 -0.011479 0.096472 -0.004637 -0.120365 0.011661 -0.019123 -0.055083 -0.021707 0.080305 0.062197 -0.007888 -0.014681 -0.064206 0.034037 0.066576 0.037499 -0.089224 -0.027816 0.038300 -0.009289 -0.093182 0.126160 0.000015 0.066641 -0.028392 0.023167 -0.021511 0.010571 -0.044084 0.057444 0.012462 0.005604 -0.062572 0.054520 0.053554 0.005974 0.010050 -0.037332 0.047516 0.066630 -0.035787 0.074909 0.066925 -0.030867 -0.053629 0.022622 0.033939 -0.033606 0.038370 0.006718 0.000847 -0.048333 0.027340 -0.025685 0.007564 -0.047322 -0.016881 0.054471 -0.017126 -0.063705 0.008150 -0.059374 0.010814 0.037617 0.025879 0.059782 -0.064248 0.042565 0.025815 -0.028591 -0.064574 -0.034454 -0.031756 0.000598 0.011630 0.073568 0.026113 -0.014567 0.003799 -0.014072 0.027953 0.071711 -0.011735 0.014001 -0.022183 0.070160 -0.007010 -0.049052 0.104807 0.111959 -0.037082 -0.007329 -0.011153 -0.073166 0.045311 0.040814 -0.001227 0.040666 0.038813 -0.049173 -0.078035 0.061429 0.063840 0.120475 0.035684 0.029819 0.046868 -0.017290 -0.035945 0.064987 -0.053189 -0.049460 -0.030434 0.069244 -0.015774 0.136658 -0.012690 0.005401 -0.045873 0.006291 -0.075787 0.046146 -0.001969 -0.104323 -0.047978 0.150326 0.032908 -0.004080 -0.012965 -0.015875 0.014424 -0.040690 0.098688 0.025183 -0.017974 0.072128 0.070408 -0.030717 -0.065297 -0.073385 -0.051253 -0.014989 0.058581 0.033837 0.014225 0.031069 -0.081646 0.089555 -0.017678 -0.068486 -0.040654 -0.051917 0.047272 -0.042437 -0.042350 0.019696 0.085122 -0.053413 -0.122905 -0.021426 -0.039696 0.051817 0.020410 -0.050261 -0.093654 -0.001174 -0.043672 -0.102482 0.084668 0.098393 -0.052216 0.050107 -0.005196 0.034413 0.122643 -0.031565 0.066945 -0.079300 0.072369 -0.011993 -0.035713 0.023269 -0.002546 0.076113 -0.067724 -0.084767 -0.053840 0.037939 -0.091041 -0.026871 -0.009130 -0.021081 -0.067836 0.022012 -0.052138 0.083855 0.065835 0.061174 -0.015388 0.100602 -0.009214 0.131331 0.048374 -0.020733 -0.009385 -0.013658 0.012043 -0.057898 -0.017737 -0.088355 0.024991 -0.079612 0.000356 0.019063 0.032476 0.022195 0.010063 -0.017095 0.024040 -0.080464 0.063948 -0.114944 0.012612 0.022171 -0.005737 0.035304 -0.061207 0.055311 0.033024 0.010681 -0.035592 -0.053947 -0.011004 -0.012254 0.055221 0.045545 0.049084 0.005046 -0.005400 -0.115901 -0.044796 0.068701 -0.005781 -0.031080 0.037791 0.097212 0.026378 -0.032777 0.026666 0.006559 -0.032347 -0.025736 -0.039802 -0.165807 0.007831 0.003219 0.090520 0.051658 -0.027677 -0.121531 0.016080 0.074249 -0.017031 0.055987 0.005024 0.056572 0.006367 -0.029525 -0.005725 0.069335 -0.024541 -0.003936 -0.050003 0.053274 -0.052184 0.045028 0.014532 0.039597 -0.056809 0.094737 -0.048726 0.081476 0.030138 -0.008376 0.001189 0.059831 -0.018934 -0.069575 0.002414 -0.006677 -0.061422 -0.024261 0.061177 -0.023449 -0.000323 -0.012054 -0.074484 0.038383 0.021929 -0.101717 -0.022789 -0.036563 0.013636 -0.063362 0.053011 0.004735 -0.077306 0.008396 0.043986 0.028657 -0.067441 -0.008945 -0.037043 0.071514 -0.037839 0.077754 0.066277 -0.065319 -0.001333 0.067596 -0.021862 0.099395 -0.063958 -0.082056 -0.044809 0.063666 0.000060 0.046881 0.121405 0.030877 -0.008566 0.007738 -0.043809 -0.049349 0.046172 0.040387 -0.045205 0.007940 0.060687 -0.036544 -0.076121 0.042696 -0.003337 0.102081 -0.040222 0.067540 -0.025542 0.030041 -0.090029 0.041031 0.020329 -0.012727 -0.089279 0.046642 0.018999 0.055650 0.032822 -0.052350 -0.055869 0.123885 -0.019014 0.088042 0.001830 -0.080700 -0.023798 -0.021378 0.007657 -0.042996 0.023456 -0.055210 -0.018485 -0.033292 -0.016446 0.052880 0.043571 0.032302 -0.006553 0.054726 0.057637 -0.079728 0.030525 -0.045654 -0.016583 0.136252 -0.001399 0.088342 0.059925 -0.018644 0.033899 -0.026838 -0.060676 -0.084264 -0.007612 0.086537 -0.000185 0.091345 0.006932 -0.012308 -0.029627 -0.057073 -0.008780 0.039234 -0.044963 -0.042058 -0.067929 0.074154 -0.051802 -0.061304 0.020025 0.026829 -0.086288 -0.076261 -0.069406 -0.050920 0.124796 0.022026 0.010977 0.038169 -0.027398 -0.073580 -0.056630 0.093880 0.081911 0.024440 0.008606 0.033419 -0.000580 0.033675 -0.032327 -0.007767 -0.065309 -0.050057 -0.050072 -0.014708 -0.100502 0.074529 0.005808 0.016991 -0.022397 -0.012659 -0.102715 0.069860 0.007505 -0.098626 0.017930 0.000660 0.030909 -0.019108 -0.001078 -0.038606 -0.007684 -0.046485 0.070639 0.016330 -0.034902 0.085208 0.016702 0.031560 -0.039036 -0.086796 -0.116810 -0.043757 0.027858 0.024031 0.045674 -0.036231 -0.081680 0.085800 -0.045662 -0.023544 -0.087212 -0.075608 -0.015723 -0.040238 0.013265 -0.085104 0.106223 -0.082075 -0.107869 0.056348 -0.031110 0.053637 0.000135 -0.037700 -0.055809 0.094526 -0.021978 0.034525 0.054227 0.053019 0.003097 0.040872 -0.039125 -0.085945 0.154564 0.038990 -0.027547 0.001012 0.012970 -0.012585 -0.008224 0.076006 0.057344 0.055498 -0.015305 -0.064045 -0.009027 0.028053 -0.055613 0.019793 0.005156 -0.005730 -0.081848 0.009551 -0.035835 -0.005885 -0.006310 0.056241 0.074335 0.101385 -0.045124 0.075779 0.098255 -0.025349 -0.135871 0.068593 0.018442 0.008761 -0.006857 0.032026 -0.041062 -0.176540 -0.003354 -0.030120 -0.024455 -0.009820 0.053273 -0.013461 -0.013288 -0.112246 0.007427 0.011505 0.000211 -0.007304 -0.033855 0.097950 -0.118398 0.030054 0.000253 0.110782 -0.135596 -0.057368 -0.016542 -0.002743 0.078980 0.080403 0.081391 -0.047818 -0.058659 -0.050242 0.012663 0.083037 -0.061626 0.019808 -0.007693 0.160145 0.019543 0.010731 0.046526 0.068954 -0.024462 -0.015987 0.057362 -0.091820 0.016953 0.016968 0.076250 0.018441 0.111365 -0.067091 -0.018485 0.053164 0.005666 0.035169 -0.035022 -0.006122 -0.002602 -0.047379 -0.023841 0.119826 -0.069174 -0.036278 0.066394 0.057299 -0.074109 0.057609 0.038296 0.057444 -0.029816 0.022335 -0.034234 0.104815 0.048829 -0.043111 -0.072490 0.067468 0.004571 -0.110285 -0.021601 -0.020759 -0.012685 -0.017656 0.126982 0.016916 -0.004567 0.107105 -0.027552 0.007144 -0.013052 -0.020950 -0.061707 -0.025117 -0.020557 -0.015960 0.045201 0.121070 -0.089963 0.035852 0.025505 -0.020181 -0.106140 0.001278 -0.003190 0.085573 -0.040587 -0.057134 0.092945 -0.049909 0.014414 0.010498 -0.020042 0.053348 -0.005743 -0.065367 -0.017619 0.024990 -0.016761 -0.001102 0.081298 0.066867 -0.051868 -0.045101 -0.008798 0.003830 0.082195 0.041312 -0.048878 0.029855 0.023388 0.029924 -0.050988 0.039197 -0.009097 0.043885 -0.079323 -0.043981 -0.028178 0.066419 0.012794 0.059244 -0.059898 -0.071819 -0.106012 0.055735 0.110205 0.053225 -0.000572 -0.024268 -0.039276 0.113882 -0.011410 0.026499 0.086180 -0.011966 0.013046 0.031127 0.066167 -0.027553 0.060671 -0.045735 0.060949 -0.051384 0.048136 0.029615 0.023552 0.009801 0.050664 0.065347 -0.026945 -0.067001 -0.022261 -0.108076 0.060158 0.041960 0.067335 0.052471 -0.029246 0.005009 0.007741 -0.052254 -0.083086 -0.017223 -0.052633 0.052579 0.067865 0.153710 0.017808 -0.087647 -0.021298 -0.079632 0.070262 0.044472 -0.050379 -0.010528 -0.002296 0.013103 -0.019826 -0.007796 0.016897 0.056191 0.006326 -0.079428 -0.036621 -0.124708 0.063044 -0.022890 -0.045545 0.041047 0.025474 -0.028608 0.002726 0.048077 0.099637 0.066892 -0.070620 0.001304 0.013309 -0.014646 -0.054310 -0.000625 -0.041803 -0.102217 -0.045571 -0.015019 -0.026224 0.105191 0.032885 -0.000149 -0.033313 0.006390 -0.078169 -0.030753 0.041211 -0.066981 0.004327 0.092330 0.071230 -0.029542 0.036311 0.054269 0.022893 -0.046259 -0.001621 -0.003966 0.005826 0.056342 0.042238 -0.028467 -0.044194 -0.112504 -0.019352 -0.056343 0.025104 0.017498 0.028931 0.016630 -0.061128 0.115505 0.002142 0.019876 0.014986 -0.066700 0.002735 0.027334 -0.033263 0.031449 0.112566 -0.025718 -0.017066 -0.019976 -0.036001 0.083541 0.048068 -0.073969 -0.035121 0.039966 -0.077883 -0.015535 0.089870 0.023998 0.011277 0.010489 0.033555 -0.012483 0.127157 0.027709 0.014969 -0.033730 0.006080 -0.048319 -0.052745 0.027066 -0.021685 0.115020 0.006318 -0.021548 0.021575 0.090884 -0.054542 -0.015574 0.030923 -0.068692 -0.095404 0.092367 -0.049371 -0.007959 0.012304 0.123951 0.014405 0.082998 -0.023011 0.029154 0.017924 -0.006151 -0.084050 0.033509 -0.002582 0.024225 0.045534 -0.034178 -0.026409 -0.121581 0.007469 -0.024266 0.049937 -0.020242 0.021756 -0.020005 0.017806 -0.083185 0.089127 -0.055074 -0.034134 0.018495 -0.014900 0.084470 -0.088049 0.012587 0.053323 -0.003416 -0.081639 -0.022685 0.028673 -0.041773 0.034449 0.070890 0.057659 0.017152 -0.036172 -0.093521 -0.025296 0.035162 0.029819 -0.039228 0.085181 0.163548 -0.001854 -0.029758 0.022943 0.021209 -0.070771 0.014429 -0.013368 -0.088799 -0.009255 -0.052504 0.041099 0.025723 0.001161 -0.107366 -0.001012 0.033565 0.044131 0.035694 -0.021740 0.002649 0.007424 -0.085656 -0.093763 -0.001170 -0.025695 -0.037360 -0.044626 0.064499 -0.071805 -0.003962 0.048891 0.024092 -0.027384 0.095833 -0.090763 0.002000 0.023459 0.019764 -0.029245 0.119488 0.005968 -0.096712 -0.071733 -0.047297 -0.074321 -0.062880 0.035501 -0.027280 0.037144 0.008541 0.020241 0.018467 -0.015675 -0.095340 -0.027954 -0.069184 -0.012559 -0.010226 -0.008974 0.014176 -0.089107 0.055689 0.060512 0.073656 -0.081115 0.028454 -0.087380 0.077056 -0.016938 -0.014435 0.091481 -0.117469 0.042015 0.041204 -0.038524 0.004206 -0.062655 -0.068726 -0.052024 -0.002012 -0.016652 0.058910 0.036081 0.033210 -0.054379 0.003673 -0.091615 -0.001601 0.019547 0.062960 -0.110025 -0.019088 0.071235 -0.039133 -0.103127 0.005287 0.019768 0.106127 -0.017072 -0.008543 -0.093660 0.044248 -0.053844 0.097968 0.000346 0.012930 -0.032294 0.027944 0.021196 0.006513 -0.001250 -0.020211 0.039251 0.067859 0.020349 0.058248 0.024609 -0.074146 -0.100418 0.030150 0.026229 -0.039773 0.099169 0.008735 -0.011164 -0.109708 0.001230 0.003111 0.054746 0.076006 0.018527 0.098756 0.017060 -0.025289 -0.006160 -0.078352 0.002616 0.144579 -0.020766 0.062239 -0.016518 -0.035809 -0.021765 -0.035105 -0.144630 -0.095066 0.010952 0.046460 0.068649 0.085352 0.087482 -0.033104 -0.048980 -0.018280 -0.014775 0.025770 -0.111625 -0.092460 0.005859 0.075107 -0.062936 -0.085897 0.005900 0.055026 -0.087076 -0.027440 -0.033017 -0.063979 0.066972 0.028398 0.010265 -0.030890 -0.001574 -0.045533 -0.106812 0.113658 0.104903 0.004971 0.028534 -0.023905 0.074634 -0.025588 -0.100482 -0.029403 -0.070372 -0.062718 -0.020418 -0.021403 -0.043078 0.080410 0.075037 -0.035154 -0.074551 -0.013207 -0.145218 -0.000997 -0.014570 -0.065138 0.008479 0.044833 0.024817 -0.038683 0.006048 0.032395 -0.031666 -0.059782 0.070540 0.001925 0.005314 0.060966 0.028570 0.041891 -0.035393 -0.044033 -0.087988 0.022861 0.054156 0.027545 0.100860 -0.032365 -0.073861 0.047055 -0.005439 0.042181 -0.028039 0.007216 0.034289 -0.013035 0.012785 -0.068215 0.102120 -0.090059 -0.035706 0.026737 -0.089429 0.038438 -0.040128 -0.077000 -0.054932 0.048963 -0.127689 -0.020587 0.094010 0.104367 -0.014378 0.068899 0.007536 -0.012966 0.078066 0.039371 0.013971 -0.019439 0.083877 -0.042991 -0.046952 0.039415 0.055981 0.076150 -0.000417 -0.001657 -0.048929 0.046983 -0.072438 -0.012301 -0.047275 -0.023350 -0.059164 -0.003587 -0.100107 0.007189 0.060971 0.042822 -0.008493 0.134842 -0.044502 -0.010541 0.089334 -0.016620 -0.048559 -0.027560 -0.005511 -0.032724 0.034262 -0.042951 0.017548 -0.145421 0.056398 -0.006331 0.030847 0.001640 0.057797 -0.063806 -0.000882 -0.091910 0.016087 -0.019546 0.061433 0.036856 -0.056495 0.069485 -0.031554 -0.012055 0.017768 0.015448 -0.074610 -0.037352 -0.004122 -0.064702 0.053976 0.074254 0.134606 -0.001169 -0.110572 -0.031859 0.002913 0.016777 -0.083814 0.052146 0.036174 0.103645 -0.024775 -0.005335 0.048662 0.002436 -0.040366 0.023406 -0.028113 -0.087518 0.030981 0.017198 0.042213 0.009268 0.022638 -0.091913 -0.007325 0.067826 0.007175 0.039739 -0.030746 0.019636 0.060134 0.002597 -0.074017 0.092250 -0.059181 -0.016534 -0.011358 -0.017007 -0.017703 0.102970 0.122663 0.057377 -0.041987 -0.053837 -0.031373 0.063014 0.006671 -0.090650 -0.138471 0.106533 0.010497 -0.102967 -0.075716 -0.038511 -0.071066 0.017321 0.093836 -0.006301 0.118555 0.061346 0.013449 -0.000558 0.009959 -0.026395 -0.028150 -0.032041 0.044864 -0.060691 0.041780 0.046048 -0.051785 0.062238 0.004872 0.030879 -0.128966 0.012667 0.023845 0.078065 0.044196 0.046742 0.148868 -0.030628 -0.042491 0.021535 -0.011918 0.043483 -0.047778 -0.117530 -0.005429 -0.008792 -0.098801 0.020009 0.106857 0.089897 0.024663 -0.061028 -0.015371 0.069471 0.045508 0.046334 -0.069530 0.010731 0.072915 0.065071 -0.058529 0.071085 -0.012683 0.094842 -0.090176 0.065021 -0.044033 0.019140 -0.012000 0.092585 -0.034244 -0.040555 -0.084684 -0.011832 0.061629 0.009146 0.027188 -0.026891 0.080725 0.088536 -0.084517 0.044584 0.093624 -0.016766 0.021101 -0.002887 0.009587 -0.068241 0.007223 -0.040467 0.035718 -0.043998 0.050133 0.003764 0.010389 -0.000348 -0.020485 0.049700 -0.066152 -0.041930 -0.021767 -0.077931 0.035116 0.108204 0.024456 0.032605 -0.043283 0.024511 0.009921 -0.031396 -0.173419 -0.049078 -0.014906 0.036522 0.041073 0.061298 0.024532 -0.074779 -0.013084 0.018258 0.041618 0.044657 -0.018537 0.007319 -0.066448 0.027570 -0.032981 -0.024516 0.092119 0.129643 -0.016032 -0.072728 -0.044848 -0.084876 0.072567 0.089222 -0.006042 0.077927 0.001985 -0.041619 -0.009227 0.069988 0.088912 0.133137 -0.016458 0.008841 0.031287 -0.047102 -0.083683 0.030843 -0.112282 -0.103671 -0.006459 -0.031852 -0.057190 0.207145 -0.002174 -0.047509 -0.051560 -0.034172 -0.058751 0.014904 -0.055125 -0.123573 -0.025949 0.094512 0.035410 0.003286 0.008369 0.029091 0.023530 -0.021963 0.056787 0.037285 -0.041070 0.012945 0.109131 -0.012940 -0.088290 -0.060557 -0.064861 0.027757 0.012384 0.004678 -0.022211 0.059852 -0.089239 0.120404 0.036099 -0.023853 -0.025676 0.001845 0.000298 -0.029950 -0.027028 0.027301 0.128816 -0.046314 -0.030039 0.011273 -0.059749 0.055640 0.001351 -0.032191 -0.091552 0.054641 0.010980 -0.105128 0.083057 0.017517 0.006971 -0.014256 0.046500 0.060555 0.099997 0.034081 0.044797 -0.117689 0.049576 -0.059663 -0.109523 0.015561 -0.039089 0.097102 -0.015266 -0.057401 0.015861 0.029363 -0.123492 0.017355 -0.025359 0.005924 codec2-1.2.0/src/codebook/newamp1_energy_q.txt000066400000000000000000000002451445607075400212440ustar00rootroot000000000000001 16 10.000000 12.500000 15.000000 17.500000 20.000000 22.500000 25.000000 27.500000 30.000000 32.500000 35.000000 37.500000 40.000000 42.500000 45.000000 47.500000 codec2-1.2.0/src/codebook/newamp2_energy_q.txt000066400000000000000000000001221445607075400212370ustar00rootroot000000000000001 8 0.100000 5.000000 10.000000 15.000000 20.000000 30.000000 37.500000 42.500000 codec2-1.2.0/src/codebook/train_120_1.txt000066400000000000000000002650071445607075400177330ustar00rootroot0000000000000020 512 6.7484 7.6125 6.0332 5.2789 1.5239 2.2353 2.0748 0.5289 0.8748 2.5432 -2.2863 -3.1910 -0.0434 -1.9857 -3.3605 0.7069 -5.9493 -0.5672 -0.6798 -18.0977 4.0503 3.9086 2.9225 2.3773 0.6580 -0.4363 -0.0644 2.4063 1.3428 2.4542 0.5275 0.9820 -1.3277 0.6811 0.0273 -0.1838 -0.0222 -0.6478 -2.2405 -17.4152 13.3284 12.1212 10.6531 9.8214 11.0388 15.8120 19.7110 16.5488 16.1068 15.8771 7.2553 4.2486 -6.0036 -12.5476 -20.1299 -28.2803 -25.3971 -21.7907 -11.5143 -26.8590 21.4405 18.4703 17.8693 14.9679 11.2994 6.4906 4.7717 0.1959 -0.8801 1.8991 1.9793 -4.9755 -7.7852 -10.0492 -8.5295 -8.2893 -4.1203 -12.4072 -16.1660 -26.1817 4.0023 3.8279 1.2681 1.0053 0.7002 -0.3886 3.4465 -1.4055 -6.7846 -2.3345 -2.9050 -0.1344 3.4192 2.4319 10.0096 3.9279 0.6807 0.3220 -3.8325 -17.2565 29.8276 21.1543 12.7853 13.0246 5.8164 3.7469 2.4198 0.1510 -4.5449 5.2695 11.7552 -4.8954 -6.0291 -8.9780 4.9650 -10.6540 -12.5363 -21.6056 -18.2985 -23.3739 4.8610 5.1207 6.5382 9.8638 15.4754 18.8192 14.8018 10.7685 12.4401 14.0392 2.9200 -3.7283 -9.7213 -13.5526 -16.0730 -13.7571 -5.4267 -12.2552 -14.5143 -26.6193 3.0429 3.0335 4.4785 5.6483 5.3476 5.7519 3.5651 4.9007 4.9672 -0.7330 -0.6458 6.5888 5.2957 -2.0068 -6.0189 -7.2145 2.5545 -5.8358 -7.4936 -25.2263 5.9384 7.0203 10.7433 15.2477 14.8437 8.0949 3.1384 -0.0014 -0.1756 2.1601 8.1029 0.4123 -6.8062 -9.6038 -6.2302 0.4409 -8.9878 -10.1638 -4.6903 -29.4840 7.1880 6.1134 5.4021 10.5427 17.0718 14.5658 6.8632 2.2257 0.4412 3.8257 9.0388 -1.1212 -6.7639 -9.2412 -8.6575 -2.9951 -8.6659 -9.4220 -6.6046 -29.8068 9.8859 4.3889 3.6253 3.2033 4.6563 4.5967 1.8747 -0.0037 3.2114 3.8854 3.1501 0.8523 -5.2830 -8.4603 -5.1159 -3.9157 6.9800 -1.5270 -6.0421 -19.9624 7.6208 10.1888 12.8648 16.4838 14.9269 7.8064 3.5594 -2.8048 -3.6303 -10.8596 -7.1254 -2.8890 5.4295 -2.5015 -5.5359 -2.9934 -6.5980 -7.1493 -4.9387 -21.8545 12.7227 17.1387 21.7055 19.8068 12.1832 5.8645 -2.4103 -3.8445 -5.5496 -5.5608 -0.2010 5.1772 -1.4666 -6.6602 -1.2573 -3.1593 -10.7925 -14.3751 -12.0047 -27.3167 7.4465 7.8765 9.4912 12.2074 12.1631 11.4780 7.6294 2.6922 0.1566 -2.1903 -1.5699 -1.8031 2.2555 -1.5591 -7.9267 -10.3612 -5.5432 -5.5673 -10.0797 -26.7960 0.3749 1.9725 2.6868 6.3326 8.9635 12.8113 13.6523 14.0916 11.2443 1.2914 -1.9954 -2.9443 -4.6718 -4.3132 -3.4613 -8.1105 -7.9033 -7.0956 -6.5898 -26.3361 10.3072 10.6822 8.8253 4.8992 4.3627 8.8165 9.7824 3.7264 0.4265 0.6068 3.0934 2.9121 -0.6717 -5.8045 -1.7344 -9.1008 -8.8333 -6.0633 -11.2321 -25.0005 10.6992 14.8060 18.9665 22.4210 21.8710 15.6647 10.6160 12.1366 14.0479 7.0707 -3.8212 -12.1770 -16.1111 -19.3389 -18.8315 -17.5346 -7.9646 -9.4592 -17.5614 -25.5000 9.9592 11.7001 14.2704 14.1434 7.3322 4.2766 -0.0567 -2.7113 -5.7358 -6.7390 -5.9067 -0.1939 4.8177 -3.9810 -7.2528 -3.2695 -1.5685 -7.8940 -6.3355 -14.8548 17.6322 19.5153 22.4362 16.2943 10.4698 2.5066 -2.3936 -5.3770 -7.9766 -9.8004 -12.9640 -13.1015 -9.8076 -5.7565 1.8732 0.4843 3.3621 -1.0048 -4.8377 -21.5543 9.9491 17.4987 23.2236 17.3142 6.8072 6.6873 1.9421 1.1415 2.9409 6.8470 2.4633 -7.2869 -8.9792 -3.3155 -0.1918 -11.8037 -18.6298 -12.6475 -9.7620 -24.1984 9.2080 9.9971 12.5064 20.0609 20.9647 10.9574 7.4360 4.4943 4.8454 11.0636 1.8176 -7.3479 -12.5617 -15.3912 -11.5022 -5.0309 -14.7556 -15.4294 -6.4150 -24.9176 7.7917 9.3291 11.8185 15.3501 19.3235 20.6869 19.8160 14.6028 10.2893 9.9407 9.8534 3.6182 2.7695 -5.2735 -19.7962 -24.6834 -27.0316 -25.6805 -24.9149 -27.8096 0.1108 3.1261 6.8163 12.4528 16.9192 10.8153 2.6109 -0.2652 -4.8897 -6.1056 -7.3218 -4.4594 4.3004 3.7728 -2.8276 -0.0458 1.0104 -6.4884 -6.4860 -23.0456 12.9442 10.3059 3.1303 2.1611 1.4795 2.7580 6.9527 8.4487 7.1533 1.4465 -0.9113 -3.9971 -4.9090 -5.3881 -3.1011 -0.4922 -1.1819 -5.3279 -8.2374 -23.2345 25.0945 17.8572 8.9500 2.7040 0.2187 1.4115 0.7421 0.5831 -0.3096 0.9334 -2.9667 -4.0352 -2.8473 -4.8594 -4.5863 -4.4311 -2.8466 -4.4808 -5.1669 -21.9645 14.6124 19.7986 21.2066 15.7620 8.7509 3.7653 -0.5239 -3.8894 -6.8522 -8.4979 -8.1879 -5.8438 0.5485 6.7415 0.4745 2.6750 -10.3676 -15.0245 -12.2357 -22.9125 11.9959 12.9771 17.1177 21.5310 16.8892 10.8731 9.7276 8.5106 12.9569 2.2512 -6.9324 -13.2124 -16.5380 -18.0518 -16.6252 -9.7038 -6.1220 -8.7542 -6.8998 -21.9905 12.8107 14.5670 13.4289 7.1693 3.4265 3.1397 2.5457 -1.2214 -0.3887 2.4506 3.9777 0.9056 -6.9195 -7.3811 -3.2619 -0.3714 2.6266 -6.3479 -12.2319 -28.9244 2.6437 2.2575 3.8643 6.0625 10.9091 16.9554 21.5045 12.7233 9.3579 9.4439 12.8585 4.4528 -2.4283 -4.7330 -2.2502 -11.3098 -18.5273 -22.4570 -23.1304 -28.1976 10.5757 10.9392 14.0126 18.2101 14.3745 8.6896 4.9080 1.0411 2.3482 7.2221 4.5440 -5.0353 -11.2852 -13.0882 -10.9600 -3.0288 -9.5005 -10.2217 -6.6739 -27.0717 14.6172 4.5412 13.3824 9.2916 19.2818 13.6563 14.4089 10.1260 1.6926 3.9361 -0.6461 -5.1244 -9.3641 -13.9807 -11.4128 -11.8597 -0.8237 -20.3149 -12.3561 -19.0515 4.0591 4.6177 7.7662 6.8737 9.4052 10.1099 12.8714 8.1202 6.6015 7.9224 1.7548 -1.6325 -4.8379 -5.0955 -2.1947 -8.4220 -11.8799 -10.7107 -12.0066 -23.3222 -3.3385 -1.1297 3.0554 4.9769 3.8625 8.6998 8.0974 -0.5519 -1.0699 -5.4771 -4.7235 -4.8192 7.1236 -0.4895 -2.0107 0.1838 3.5180 3.2804 3.1904 -22.3779 10.9362 15.2821 18.1297 12.4682 2.6895 -1.2007 -1.7676 -6.1681 -6.0524 -5.8064 -3.1002 4.3237 2.0263 -5.5109 1.0348 -0.4760 -4.6274 1.4107 -7.5329 -26.0586 27.0648 22.2199 14.8908 7.7845 2.8689 -0.0364 0.0683 -0.1186 -1.6323 -2.4217 -4.0112 -2.3476 -5.4442 -5.8509 -6.4386 -6.2558 -6.7739 -5.9348 -7.0916 -20.5398 4.3156 -0.2499 1.1824 2.8225 8.1910 5.2798 2.2597 -3.0043 -5.0382 -5.2727 -4.0013 2.6952 8.1245 -1.1517 -1.8957 2.4603 3.0897 -1.0817 -0.1353 -18.5898 17.5894 22.9315 26.4862 22.1620 13.7474 13.5177 15.2005 16.3224 4.9523 -4.2419 -8.3503 -12.4022 -12.6698 -6.7159 -16.2122 -20.1926 -20.5969 -16.0749 -12.5173 -22.9353 6.5871 8.0443 8.4339 11.3345 17.3665 13.4455 6.9211 2.0512 -0.7348 -1.2898 1.0076 8.4862 -0.3360 -6.4714 -5.9432 -4.1602 -12.1155 -12.4645 -10.9269 -29.2355 19.0066 20.3716 18.0417 9.4806 4.8058 0.3359 -4.1091 -8.1930 -8.9962 -9.7495 -13.2924 -8.6275 -4.9424 6.0502 -6.8142 -7.1166 -3.0922 8.8016 5.6937 -17.6547 4.7309 -6.5949 4.9914 7.3489 9.0188 4.1567 7.1949 0.4917 5.0462 7.5219 1.5314 -15.3803 5.3130 -0.0983 -7.0327 -1.2671 -0.4646 -1.6442 -0.7446 -24.1190 13.7639 5.1424 5.3193 3.8945 3.9574 1.4034 0.1896 -4.0608 -2.5264 -4.9434 2.8459 2.6311 -2.7915 -3.7842 -0.3711 0.5487 5.3766 -4.3496 -3.2801 -18.9656 12.6752 14.7799 16.2157 18.6944 14.1390 7.0937 3.8206 -2.4778 -3.9766 -4.4531 -2.8711 3.2148 0.6800 -9.1748 -10.1600 -6.0557 -0.8581 -9.2828 -14.0109 -27.9924 15.0025 18.2042 22.4086 21.6195 14.2308 10.5772 6.7291 6.0463 11.7877 8.4162 -3.4731 -11.2708 -15.6923 -17.5613 -14.5235 -4.5248 -17.8954 -18.3529 -10.3105 -21.4173 2.5368 2.8687 8.7229 5.2089 8.9671 2.8847 -1.3535 -4.4273 -4.9060 -7.8939 -15.4750 -10.4797 -4.4811 6.5892 9.9939 12.9078 3.2705 1.3246 3.7883 -20.0468 8.5207 11.8364 16.4466 19.9166 16.0662 8.4129 4.3290 -0.8928 -3.7592 -5.4071 -4.2870 0.4615 9.9611 5.8190 1.7969 -7.7765 -17.3073 -19.5235 -17.7924 -26.8211 3.0595 10.0158 11.1623 5.9413 3.1988 -2.1129 0.3528 -3.0158 -2.3599 -1.3347 -1.0479 3.9189 7.8019 3.0538 -1.6139 0.8043 -4.9290 -6.9959 -7.2918 -18.6077 17.8476 19.4332 25.4614 19.1508 12.2748 9.4543 6.1101 3.6929 2.9336 5.5407 -9.2238 -17.0071 -20.8856 -22.9308 -21.1711 -15.0234 4.8627 2.2867 -2.1943 -20.6125 9.6165 8.8018 11.1694 14.6183 18.4154 13.4481 7.1580 4.1650 1.8242 0.9521 5.1356 4.0270 -5.9523 -12.0202 -14.3055 -10.5893 -2.8308 -12.2805 -13.3723 -27.9806 13.4166 16.7617 20.6572 22.0976 15.9129 10.6410 5.4061 3.1570 -0.7256 1.2303 5.9463 5.1273 3.4864 1.6884 -10.9215 -19.5567 -22.8693 -20.4758 -24.0420 -26.9379 8.0404 15.9476 21.0441 15.0820 8.2842 3.1036 -0.2419 -4.2559 -6.0751 -7.4529 -5.5847 1.5520 8.3483 3.3751 -1.0503 -10.4691 -11.9360 -5.5738 -6.8713 -25.2662 19.9950 20.2102 18.7443 12.7220 5.8592 3.8088 0.4504 -1.5876 -0.0425 -3.0873 5.5382 -0.1499 -5.8500 -7.9372 -6.2374 -0.2643 -15.0702 -16.9914 -9.3644 -20.7458 -2.6024 -7.4950 -1.2522 3.5119 3.9726 3.4991 2.4457 3.2158 -0.1830 -1.7087 -7.3996 -6.8962 -5.2421 -7.5762 -9.1433 6.6126 10.5297 10.4556 18.2991 -13.0433 0.8317 2.2343 3.6899 5.6335 5.8479 6.4330 6.0022 5.3630 2.3387 -0.5344 -1.0716 0.6509 -0.7175 -4.0229 -6.0631 -4.7546 -1.9700 -4.6226 0.0933 -15.3616 -9.3660 -6.9175 -4.9307 -3.1828 -1.6587 -1.4971 -0.1586 0.6208 0.5169 2.4709 4.6017 5.3127 4.5449 3.2690 3.7590 3.4511 3.8260 3.9369 4.8805 -13.4790 -1.1830 0.5095 1.1754 2.3109 2.2722 1.3243 1.6529 -0.1799 -0.2874 -1.2863 -2.2761 -1.5668 -1.2037 -2.4367 -3.9243 -2.1186 2.3502 1.4312 9.5827 -6.1467 9.2349 10.7650 18.1608 20.6655 13.5769 5.4902 3.0323 -1.0259 -0.5010 1.7689 10.3810 12.0253 9.1922 -4.9615 -15.0315 -19.9651 -21.4377 -17.6800 -6.4577 -27.2328 10.6391 10.7983 11.4949 16.5329 19.2664 13.6129 6.1846 2.4573 -3.1501 -7.1814 -7.9387 -2.6238 4.6419 -5.9113 -9.3510 -7.0591 -3.2275 -10.2820 -10.5308 -28.3726 18.6364 19.3874 19.5930 14.3075 9.4402 3.6045 -1.9801 -5.5352 -9.0094 -10.9308 -12.7345 -14.0779 -10.9593 -3.8674 6.3753 9.5959 -1.4018 -7.4988 -6.1435 -16.8015 9.4969 11.3591 11.5468 7.8918 4.7217 3.0266 4.2145 2.2878 1.2224 5.6903 10.6919 4.2718 0.7184 -3.7583 -6.7954 -8.0558 -7.9668 -10.2861 -12.5018 -27.7759 1.9805 4.9512 7.0160 7.8284 8.7891 8.0863 7.7994 7.9865 8.6027 13.1944 14.7771 11.0643 2.1716 -5.7171 -10.9834 -8.7615 -16.8907 -14.3039 -17.4732 -30.1175 7.4683 9.4924 11.1231 14.0490 15.3387 7.9538 5.2116 -0.0275 -3.0014 0.1050 0.6547 7.9660 -2.3476 -7.0894 -4.6113 -2.0949 -15.9720 -16.2041 -7.4758 -20.5386 4.8388 4.2032 3.5738 6.4994 10.8701 16.7006 14.8672 6.7149 3.1448 0.6167 2.5321 7.5899 1.6456 -3.0073 -4.4465 -2.3406 -11.2907 -15.6965 -17.0827 -29.9328 9.8208 5.5733 3.2835 2.3197 5.4502 9.1113 10.3794 8.6442 6.0107 6.4897 4.2548 1.1709 -4.1757 -9.6942 -10.5243 -11.8609 -10.0641 -3.4488 -2.2532 -20.4873 5.8783 5.8851 7.6595 5.2009 5.1000 1.9820 2.2615 1.4023 -1.1079 1.1247 3.7199 2.8362 -0.5182 1.4421 1.5607 -8.4521 -3.7106 -1.6008 -5.2750 -25.3888 13.8298 17.3228 17.9494 18.8765 12.6415 7.5326 5.2828 1.0300 -1.0231 -5.4994 -6.6194 -2.5155 4.6895 -3.4515 -7.2113 -4.1051 -13.7542 -14.3604 -11.8611 -28.7541 -8.8559 -3.0649 2.2249 4.9828 6.4170 6.9906 9.9342 12.0149 12.2463 14.3103 18.4345 6.3234 4.2404 -2.7341 -6.9396 -10.7644 -10.1668 -12.3674 -16.3891 -26.8371 10.9983 13.5279 16.2801 19.6892 16.9475 11.0028 3.9633 1.1799 -2.0078 -0.9850 2.7247 -0.1311 -6.6215 -8.5890 -4.3971 -11.9543 -15.4358 -13.3278 -4.8427 -28.0217 7.2013 9.1028 13.1142 19.8377 22.5360 16.6528 11.8330 10.3141 12.9885 15.8372 9.0995 8.4627 1.1838 -14.4656 -21.4397 -23.6775 -22.5547 -24.8595 -24.4974 -26.6692 -8.4073 -6.6779 -3.9580 -1.6241 -2.1470 -2.2867 -2.2534 -3.0205 -4.5931 -2.5545 -2.1350 -1.3098 1.1053 -1.1397 1.2170 6.2234 3.6093 9.8015 23.5766 -3.4260 9.6955 11.4467 15.0851 15.4765 9.8267 3.5490 -0.5777 -2.7726 -5.1878 -5.7225 -4.4558 0.4969 9.2914 5.8917 6.4235 -4.2514 -11.0149 -9.4893 -13.0444 -30.6665 2.9943 1.4307 0.8714 2.2925 2.1145 2.9148 2.4003 1.9382 1.6662 -2.3476 -2.0877 -1.9322 3.3342 1.7171 -0.9114 3.2785 1.7852 1.4651 -1.3549 -21.5695 7.7138 9.3400 11.7519 14.3217 14.9762 11.0903 9.9040 9.3599 10.4611 6.3795 -3.9927 -7.6734 -12.4888 -12.1729 -5.7999 -5.5417 -9.5690 -9.5926 -7.6846 -30.7825 4.4498 9.2290 15.0677 17.9679 11.2745 2.6730 -0.9888 -5.6255 -7.5349 -8.4589 -8.4510 -5.5027 1.7669 4.3143 -4.8629 -2.0721 4.6797 -5.0125 -4.4213 -18.4923 11.1829 12.4396 12.7925 12.6901 8.0150 3.4089 1.7847 -0.2306 -2.0077 -1.0178 2.2167 -0.4542 -8.4111 -8.9029 -8.0861 -3.9439 -6.2512 -2.2635 -2.1307 -20.8306 -0.0237 3.5900 4.5144 3.8794 5.7527 11.0182 8.9091 7.1863 7.0702 7.1782 4.7799 0.6784 -4.3508 -5.3991 -6.5953 -5.6132 -9.5378 -5.6903 -1.3834 -25.9632 -2.7117 -1.4799 1.2116 2.3262 3.7406 3.7668 1.2697 0.2086 0.7399 -1.3479 -2.2145 -3.7982 4.9747 -0.4583 -1.7465 -0.9161 7.2119 0.8965 -0.2723 -11.4012 7.6123 10.5335 16.3125 23.5319 21.6117 16.3290 18.2001 16.9715 0.9425 -7.0707 -12.7338 -16.0871 -18.4761 -17.8994 -14.8763 -4.8440 -8.9433 -6.8294 -0.8772 -23.4080 9.1763 3.0851 4.6724 8.0499 14.6517 16.8559 10.4532 11.9797 13.2732 7.6578 -1.4245 -7.0469 -11.9925 -15.0269 -14.7577 -15.9057 -2.4494 -8.2002 -4.4694 -18.5819 -0.3793 0.7119 0.4558 1.7011 3.1548 7.4097 8.6888 7.5902 9.1020 7.3493 9.7346 15.2626 6.8726 -0.7975 0.8553 -9.6815 -9.3426 -14.3122 -13.9791 -30.3963 5.2988 6.3406 1.2009 3.3308 2.0290 2.8107 1.0030 0.4513 -1.4458 3.0391 1.2595 -9.2407 1.3164 1.9175 0.7738 1.8301 0.5948 -0.9497 -2.7482 -18.8117 23.5623 25.0580 25.0568 22.4174 16.4713 14.4026 11.1159 5.0250 -1.0266 -8.5971 -10.1924 -9.6120 -11.8638 -13.7028 -4.2000 -6.0100 -12.7481 -18.5497 -22.5946 -24.0120 -5.0424 -4.2120 -3.2703 -0.4028 1.8335 3.2012 2.3768 2.0802 0.6396 0.2079 0.1418 -0.1844 2.5056 -0.2078 -1.3169 -0.2911 0.8140 1.7717 5.2809 -5.9255 7.6330 9.9835 15.1303 18.9128 13.0001 5.9224 1.3978 -3.1674 -6.4703 -8.3713 -7.7470 -5.2412 1.6661 5.3754 0.9111 2.2634 -7.6214 -11.2828 -5.6474 -26.6470 15.3965 19.4488 18.3928 11.4564 4.0261 0.4604 -4.6326 -9.8409 -11.0926 -12.7123 -13.1035 -12.3357 -8.4063 1.3638 7.8807 5.5655 3.4210 0.7205 5.4867 -21.4953 4.0267 4.8087 7.0895 9.6094 12.6372 17.6545 19.7244 17.4364 13.7517 13.9367 6.0059 -4.5448 -9.4075 -13.3403 -13.6620 -10.1856 -10.5214 -17.1512 -19.3146 -28.5537 26.5287 22.7007 21.6748 17.6005 11.9372 12.6653 5.4749 -6.1299 -8.9419 -6.9620 -5.7222 -5.6209 -8.6350 -10.0876 -8.1562 -7.7238 -5.4233 -10.0839 -13.1237 -21.9717 3.9740 4.1572 5.7242 12.4480 17.3522 11.6512 5.2405 1.2103 0.5569 2.7329 9.6369 -0.5073 -5.1263 -2.7956 -0.7621 -3.7186 -1.7764 -8.4788 -18.8985 -32.6208 6.8442 11.6517 15.0164 13.0383 3.5465 0.5949 -3.0134 -7.5262 -8.2082 -8.6101 -7.2813 -1.2345 9.2720 5.1011 6.0543 -0.9163 -4.5878 3.4588 -4.8078 -28.3926 7.8637 4.0004 -2.9380 2.0521 2.2442 -0.4633 1.8855 1.9277 -0.6295 1.3834 1.2896 1.0703 -0.4938 1.5669 0.0079 -1.5584 -2.0070 0.9263 -0.4846 -17.6435 5.8623 7.6023 7.9357 8.1933 9.8252 14.3094 18.5980 17.6310 14.1029 11.3791 8.9224 4.7903 -4.5730 -11.3683 -17.8078 -14.2065 -11.2294 -16.2936 -23.1509 -30.5225 -1.7942 -0.0063 1.9950 3.6026 3.2262 0.8396 2.3621 2.3730 0.2704 0.4107 0.3605 1.3362 -2.3048 -2.1177 -2.8566 0.0808 -2.4432 2.0828 10.0173 -17.4341 16.0587 21.3030 20.2092 12.2290 4.0091 1.0523 -3.6402 -8.1002 -8.5006 -10.1681 -9.7303 -7.7995 -1.2107 8.9891 5.5157 1.2399 -8.3907 -7.4334 -1.1958 -24.4366 15.8248 21.2415 22.3705 19.6523 12.6511 4.9800 2.0524 1.2562 -2.0002 -7.0989 -8.4866 -8.1644 -3.6111 2.9801 -6.3159 -7.3905 -2.5939 -11.1587 -18.1433 -28.0453 11.4701 14.8919 19.2495 17.1766 9.1256 4.6224 0.3569 -3.6692 -6.2969 -8.7664 -7.4764 -1.7487 3.4354 -4.0219 -5.5797 1.1971 -7.0079 -5.6899 -4.9140 -26.3546 4.0502 6.3561 7.7528 13.2425 22.1071 16.8285 10.8539 9.9555 11.6373 14.4871 1.0686 -6.0140 -8.7291 -9.9474 -5.2420 -14.0196 -19.6200 -16.4317 -13.2116 -25.1241 14.0747 12.9823 14.7396 18.3580 20.8024 21.6686 20.4893 18.2777 14.8271 4.2101 -4.6228 -5.0852 -8.9555 -9.9704 -14.4886 -22.2364 -24.8924 -24.6202 -19.9776 -25.5806 6.5756 6.5342 9.0959 14.5314 20.6452 22.1123 17.0555 14.5823 18.4626 9.7441 0.1482 -4.4759 -4.9624 -0.2271 -12.9306 -21.6336 -23.8195 -22.7039 -21.8165 -26.9179 -2.4130 -0.2375 2.8918 5.5011 6.7427 5.7418 5.0778 5.1858 4.3188 3.4462 4.3416 1.8899 2.3449 -0.9372 -1.2877 -2.8414 -4.0969 -5.4193 -7.2573 -22.9920 18.6934 11.3904 9.2311 9.3832 5.4199 3.6295 -0.1793 0.6487 -3.5589 -4.0062 -6.2031 0.6797 0.8497 -5.8255 -3.0197 -0.8407 3.4120 -4.6925 -10.2551 -24.7566 -1.1447 1.5640 1.4686 1.7604 1.7234 2.3262 4.7312 2.6246 3.8383 6.5465 3.3830 1.7225 -1.7619 -1.0275 -1.1491 1.9434 -4.9663 -2.3871 -2.8449 -18.3507 14.1023 13.5650 10.1510 8.7911 7.7313 7.6480 9.2651 8.0399 4.9244 6.1141 5.5459 -0.9256 -6.1550 -7.0836 -8.6484 -9.0926 -9.2649 -13.5303 -12.0852 -29.0925 9.8451 13.4743 16.9269 13.4623 5.8133 1.7553 -0.7487 -3.9831 -8.1249 -9.5689 -8.7611 -6.3983 -0.6612 10.9895 12.8583 0.3283 -8.6023 -10.4136 -5.9048 -22.2865 19.2227 18.1307 15.9732 13.2757 8.9377 4.0318 2.7371 2.4204 4.8079 5.9436 -1.6587 -5.6682 -8.2354 -8.6156 -5.7373 -5.9194 -13.5825 -11.1928 -9.7272 -25.1435 9.7172 12.7596 17.7880 19.5982 13.1714 6.9756 4.2961 1.3629 -0.4383 4.9630 8.7840 0.9395 -2.9094 0.8700 -9.7739 -17.6442 -19.7626 -14.0983 -10.0576 -26.5411 19.7847 26.9921 27.0885 20.9467 13.4352 6.9927 3.8926 5.5073 6.3950 3.6410 -3.5260 -9.9366 -12.2833 -15.4366 -15.2739 -13.4030 -13.6697 -14.5223 -14.0162 -22.6082 -4.7450 -2.3439 -1.2527 0.2681 2.5169 3.0271 3.2731 1.1854 -1.4898 -2.2085 0.9214 6.1154 5.0556 7.1405 5.3972 1.8235 -0.1874 -0.9732 -2.7856 -20.7382 2.7354 2.9846 4.5226 11.0075 16.9767 9.7039 5.0497 0.2367 -2.2382 -2.2319 3.3972 5.8953 -3.5572 -7.9222 -5.1006 4.0687 -6.7980 -6.9512 -1.5062 -30.2728 1.8923 1.9933 1.7272 1.4697 2.1029 2.7198 2.2271 0.4083 1.4890 2.3633 0.0136 -3.1335 -1.8351 -3.4645 -2.5082 0.1244 -0.6305 -0.2515 2.6670 -9.3744 7.3147 10.8559 16.3202 21.3322 15.5047 5.7917 2.0324 -0.5787 -3.8385 -3.1611 4.7722 6.9085 -0.8153 0.2585 0.5455 -11.9753 -19.4608 -19.4821 -11.0006 -21.3242 -4.8271 -2.3317 -0.8263 -0.6913 0.0284 2.1785 4.8530 2.4866 0.5257 1.0973 0.9581 2.0508 -0.0850 -0.3240 -2.1544 -3.6769 8.2530 1.6818 2.7619 -11.9586 28.0344 21.3292 26.7011 15.9009 17.4755 11.8357 5.0600 6.5559 -4.3031 -3.5802 -8.7494 -8.4692 -7.5683 -2.5689 -10.7488 -16.5549 -18.6071 -16.7713 -13.4451 -21.5263 11.4465 12.5754 14.6510 12.0835 5.3520 1.6789 2.3021 -2.4719 -2.0905 -0.5169 -2.1754 -2.9241 -2.7917 2.0815 1.0635 -3.6587 -4.7680 -6.8125 -8.2348 -26.7899 11.1007 8.9165 11.8079 11.0313 1.9749 -0.9229 -2.4670 -6.7769 -9.1537 -10.4373 -8.8596 -6.3617 0.2425 8.3330 2.9722 9.5504 -3.2943 -3.1680 4.4488 -18.9367 12.7055 18.2073 17.6143 9.1957 1.5762 -1.0952 -4.9687 -6.1290 -7.3791 -7.2053 -4.3066 3.6014 9.8467 10.7313 -1.8676 -11.4282 -13.9225 -8.1802 2.6837 -19.6797 0.8368 -1.7610 0.4628 2.3612 5.1160 7.7374 9.4921 4.3865 6.1712 5.6238 6.3738 5.3491 2.7348 5.4859 4.6651 -8.4273 -10.9892 -8.6750 -10.7619 -26.1822 12.9582 16.0251 19.0637 18.9347 12.6765 7.8161 3.8112 0.9397 6.1611 7.4639 -2.5194 -7.1391 -10.2242 -10.1934 -4.1747 -5.7525 -14.4868 -8.2946 -13.9643 -29.1013 29.3165 26.9707 19.9517 12.4469 7.3647 2.8794 1.4068 -2.4963 -5.4012 -4.1083 -5.2153 -6.4891 -5.9548 -6.4872 -6.6510 -6.7351 -9.9422 -8.4833 -11.8558 -20.5171 7.6646 7.8496 5.3460 3.4574 6.3183 1.1408 3.1494 5.1045 0.2373 1.0847 -0.4320 -0.3662 -0.3503 -0.5473 -8.1949 -0.9695 -1.7599 -3.3828 -3.0248 -22.3253 7.0587 8.6157 9.7452 14.4294 20.8498 17.0788 7.0614 2.4228 -0.5017 -1.0215 3.1054 5.3564 -3.4904 -7.3987 -7.4398 -7.0656 -8.8032 -12.8630 -18.8666 -28.2731 5.7670 -2.6937 9.6459 -0.7839 10.7523 2.7960 -2.6113 -3.2915 -6.2928 -7.6167 -12.6729 -5.4796 5.0447 13.7582 10.3050 4.5191 -1.3433 5.4917 -1.7375 -23.5567 -11.2311 -7.9712 -5.4028 -3.3542 -3.1975 -4.2245 -3.9952 -5.3576 -5.3493 -4.8108 -5.4962 -2.9288 2.5785 4.7736 13.8058 17.8731 9.8332 14.9500 11.0220 -11.5171 2.8142 1.3603 4.2714 4.8975 4.3374 -3.4231 3.1881 5.0714 3.9705 6.2234 3.7268 5.2790 1.3825 -7.6582 -2.9268 2.0075 -4.0570 -5.6086 1.2855 -26.1418 4.9776 6.4457 7.7463 9.3687 9.5559 9.1954 6.3666 4.9237 2.1719 1.7788 1.4634 -0.3859 -6.1409 -5.3778 -2.6336 -2.5068 -8.3667 -7.0441 -11.2867 -20.2514 10.0472 11.9967 16.4907 19.9334 16.2325 9.2915 4.3130 0.7097 -4.0959 -8.1186 -10.5064 -10.3134 -5.2102 1.0801 -1.5982 -3.8949 1.2501 -7.5248 -12.9333 -27.1495 17.0433 19.1713 22.6813 17.1064 8.7516 4.3917 -0.7236 -5.3026 -7.9288 -8.3773 -7.4784 -3.7859 -2.5186 0.0200 -1.5465 0.1954 -10.7830 -12.0301 -3.0579 -25.8283 18.6591 22.3501 23.5831 19.0252 13.9063 13.3289 9.0463 -3.2346 1.2718 1.4619 -4.3706 -7.4089 -10.7710 -11.8151 -0.8947 -8.7094 -22.3259 -8.0672 -18.5235 -26.5118 3.2886 3.8514 1.5062 4.9096 3.9001 3.8964 -0.6349 -1.5534 -1.3119 -2.3130 -1.8455 -3.5666 -2.6094 3.4411 -1.0089 -3.0556 4.5250 3.3979 1.1349 -15.9520 -5.6652 -3.8931 -1.8885 1.6299 2.3371 2.0746 2.1285 0.4372 0.0031 4.2521 5.2010 3.3227 2.8933 1.9467 2.1449 0.9405 2.1680 2.3807 -1.3113 -21.1022 21.7270 24.2953 23.2112 13.4917 7.3423 1.4843 -3.1924 -4.8355 -10.3896 -11.3960 -12.8133 -11.6304 -9.9774 -2.6034 3.7943 3.5260 -4.2988 -6.0579 0.3494 -22.0269 7.1102 6.3521 11.6650 18.7864 16.7459 8.3216 5.8454 4.3436 9.4868 7.7601 -3.1382 -10.3196 -14.1642 -15.1634 -11.6972 -1.8200 -7.1959 -8.5258 -1.8553 -22.5374 14.2212 17.8028 21.4842 24.9383 24.9854 22.3982 21.3770 20.9687 13.4315 0.0683 -9.1695 -13.1215 -13.8982 -14.9798 -18.1636 -20.5802 -22.0396 -23.0260 -22.3178 -24.3795 8.9039 9.7955 9.3225 11.7206 17.8844 21.1802 19.2262 17.3421 13.9029 7.3860 -2.6995 -8.3297 -10.1319 -8.7756 -6.0590 -8.7597 -15.4747 -24.0243 -25.5723 -26.8375 3.8554 4.2234 6.2441 12.5445 18.1461 14.0699 5.9992 2.7220 1.0526 2.1813 9.5825 3.3502 -4.3618 -5.0291 0.5610 -10.3142 -15.3449 -12.7063 -7.6401 -29.1358 -8.9085 -6.1917 -3.8341 0.0473 -0.3559 -1.0455 0.4343 0.7424 0.1788 -2.4081 -1.5815 0.7755 2.7896 -0.3538 0.5914 4.7530 5.3039 5.5717 8.4610 -4.9697 6.0177 9.1902 12.5400 17.6650 18.0833 11.1113 3.6376 -0.9348 -2.4340 -3.3221 -2.4870 5.4750 6.1443 -3.6923 -2.5169 -0.6902 -11.0083 -16.8129 -17.3554 -28.6106 12.6629 16.5188 17.0120 11.3763 2.7817 -0.7077 -5.5288 -8.1972 -9.1883 -10.5072 -9.3239 -6.2042 2.0877 8.3448 2.7802 8.4635 -5.0126 -9.0230 -5.5900 -12.7449 26.6077 25.1133 19.7421 13.7493 7.5294 4.8418 5.8235 5.9404 3.3399 4.8147 -1.6758 -4.4299 -7.1722 -6.5470 -9.6023 -9.9251 -17.0327 -19.5694 -18.7525 -22.7953 9.3391 15.4719 19.7226 13.6838 5.7655 2.9423 -0.2309 -3.0447 -5.0071 -3.6430 3.6089 8.1171 -1.0555 -2.5360 2.0952 -6.4482 -11.0547 -9.9411 -11.5931 -26.1921 6.7164 12.9088 8.1465 2.9974 -1.5306 3.7966 4.6355 0.1956 -4.4054 2.5643 -3.5126 -0.4027 0.5107 -1.6406 0.9829 -5.6846 -0.0083 -4.8894 -3.3272 -18.0535 1.8584 3.5453 10.7864 10.3313 8.8364 11.3153 12.6550 8.0839 10.2072 14.1247 0.1105 4.9955 5.9811 7.9709 7.5141 -6.0319 -21.0185 -23.4977 -32.6987 -35.0693 13.1044 15.4062 17.5958 18.0756 11.3524 4.3670 2.6428 0.8781 0.0399 6.6751 8.2361 -2.6757 -10.1776 -9.8299 -3.1506 -9.5151 -14.3971 -6.2859 -13.5883 -28.7532 0.0688 2.2921 6.5965 8.3598 8.2327 8.6486 7.1471 7.1631 4.4823 3.4067 11.3001 9.5567 0.6574 -2.5849 -6.7404 -8.6614 -8.6399 -12.0189 -13.1958 -26.0705 9.5134 11.1944 14.6379 21.3303 20.9351 12.8622 5.9234 3.0673 0.5662 2.8569 7.4992 -0.6339 -9.8527 -12.4761 -11.2573 -4.7464 -13.5940 -18.0638 -14.8928 -24.8691 5.5904 5.1588 4.7053 4.3271 5.8271 9.5093 8.4110 1.6453 -2.2667 -2.6767 -1.4248 -1.1260 2.4114 -1.8009 -4.8190 -8.2201 -2.9355 -0.2567 -0.3488 -21.7105 0.4175 1.2148 5.1829 9.3743 9.7458 5.9476 5.0377 2.5369 -2.7391 -8.8960 -11.0818 -7.0650 -7.4393 -1.4335 10.1963 9.6385 5.0133 -4.2894 -3.8725 -17.4890 8.8274 9.1037 13.6965 18.9331 20.4960 15.7102 9.1227 5.5813 1.7546 1.3849 6.9672 6.4807 5.2247 4.2668 -9.8256 -18.2374 -24.2455 -24.1902 -22.7864 -28.2649 -10.4296 -11.2348 -7.6061 -8.6646 -7.9499 -6.1250 -4.3918 -6.8877 -5.4461 -2.2579 -1.3507 2.2980 4.8244 12.7426 12.4434 14.4927 14.8125 12.9871 9.6224 -11.8790 8.8890 12.0408 17.2338 23.3492 22.1801 17.3250 16.4611 18.6109 12.0359 -2.1102 -7.5218 -11.7288 -11.4854 -7.6790 -11.7033 -21.2349 -23.6258 -19.3358 -7.8566 -23.8442 -7.7648 -7.6325 -5.9874 -5.7763 -5.5038 -4.9788 -3.5524 -3.9264 -4.7269 -2.6727 -1.6911 -0.4884 1.8633 1.5449 3.1375 9.0909 11.6855 13.4220 16.9117 -2.9544 17.5979 21.0040 20.3690 15.7264 13.3239 13.0722 13.4678 1.7577 -6.0904 -6.9925 -8.3415 -10.6335 -9.5482 -1.5234 3.9870 -6.9271 -17.4878 -18.4739 -8.9267 -25.3608 6.1805 4.1462 3.5010 2.7230 3.9708 8.1302 9.4910 3.6927 2.9790 2.0598 -0.6100 -1.6298 -2.5238 -2.5441 -3.9959 -2.7189 -3.9403 -3.9477 -4.9568 -20.0067 7.7322 4.4707 5.2320 7.8782 9.1005 5.4418 6.0577 3.7093 0.1939 -0.2785 1.1984 -2.6011 0.6595 2.7395 -0.9452 -4.5096 -8.4529 -6.4501 -6.8768 -24.2995 -6.4169 -3.8203 -3.3676 -1.3384 0.0068 -0.0917 -0.6540 -1.1092 -2.2062 -2.8976 -3.0409 -2.6706 2.9750 6.3064 7.4779 12.0806 5.7715 5.5715 0.9432 -13.5194 7.6067 9.3813 13.4849 19.9139 22.7781 18.4350 15.9140 18.9134 10.1002 -4.3291 -8.2178 -13.6741 -15.7040 -16.5313 -14.1193 -3.7115 -13.7922 -12.8183 -7.7992 -25.8309 4.7167 3.8923 5.7519 8.0369 12.8563 16.7380 15.0698 9.7568 7.4623 7.4165 7.7550 1.1797 -6.3964 -6.5897 -1.5093 -9.7231 -17.0341 -15.7607 -12.6623 -30.9568 9.6098 13.4286 18.7280 18.1791 9.8536 3.5779 1.4841 0.4639 -0.5329 2.6536 9.8742 -3.2808 -8.9269 -11.0817 -6.3122 -2.5681 -15.3236 -12.3977 -1.9946 -25.4341 3.8990 7.6431 13.4623 16.8504 10.0821 3.4259 -0.1709 -4.7791 -8.1809 -9.2214 -8.3021 -5.9798 2.0125 6.9915 1.4712 6.5493 -3.7836 -4.9571 1.3613 -28.3737 13.9079 16.7984 20.6342 24.6533 24.3507 19.3643 17.9172 18.3920 11.7020 0.0010 -10.1043 -14.9084 -18.2285 -20.4094 -21.5267 -19.7383 -13.5385 -9.5045 -16.6159 -23.1465 7.1797 11.3922 15.7490 19.3949 17.3819 10.7478 7.3006 6.1472 9.1598 11.0073 4.7816 -2.4892 -3.7349 -3.7521 -1.7971 -9.8976 -22.2914 -25.7550 -23.0236 -27.5010 5.6600 8.4600 10.4652 12.1954 14.9914 18.5645 17.0459 10.3163 4.8130 2.3220 0.5889 4.1108 1.2082 -9.3950 -13.7061 -13.1090 -10.1060 -11.3113 -21.8744 -31.2396 -1.8886 -0.7563 0.4909 4.9127 6.9239 5.1456 6.2254 6.4299 5.1768 9.1990 13.2223 5.4194 -3.0538 -4.7242 -5.1855 -3.7939 -7.3421 -6.1816 -4.3871 -25.8328 11.3455 9.9507 8.1659 6.0877 1.4526 0.9704 4.7975 4.0208 -0.5941 2.5357 1.5340 -4.3306 -1.6103 -4.4373 -0.0323 -2.6725 -2.0195 -3.5278 -6.3697 -25.2666 -0.8009 5.6194 7.0974 6.1331 7.2063 7.4038 4.5741 8.4379 4.2968 7.9137 13.0725 2.3362 0.6963 -2.4917 -4.9374 -7.2728 -8.2160 -9.6329 -14.4558 -26.9800 9.4449 12.4990 15.8206 17.3018 10.9373 5.5366 0.8716 -1.2105 -2.4770 -3.4484 1.0611 6.1591 -1.7466 -7.5929 -6.9295 -2.1338 -8.9361 -10.3674 -6.3554 -28.4344 11.5326 10.9047 16.3163 21.0845 11.9757 7.0511 0.8356 -4.9870 -6.9450 -9.2309 -9.7748 -8.2038 -2.2957 5.5139 -5.4119 -2.7410 2.4166 -7.4497 -6.0628 -24.5286 9.3064 9.3678 11.2235 13.9991 14.4345 11.1982 6.3282 1.4131 -2.6884 -7.1825 -11.0075 -12.3749 -9.2573 -6.0414 2.3206 4.6097 3.5670 -3.2208 -9.5445 -26.4507 -6.7163 -6.0323 -3.7943 0.8820 3.6629 4.3198 4.7402 4.0799 4.8854 5.8718 8.3927 9.6825 10.5717 3.8917 0.9125 -1.2807 -3.7018 -5.7570 -8.2525 -26.3582 10.2748 11.6455 16.3809 20.1490 18.2488 12.7899 10.3972 8.0106 -0.6794 -6.4024 -9.7054 -13.5667 -14.6497 -16.1902 -6.9531 0.2117 -0.7067 -1.2331 -10.6728 -27.3488 13.3782 16.3500 15.3612 8.9247 3.4890 -0.7729 -2.6106 -7.5432 -8.0129 -7.6140 -7.8535 -2.4356 6.5050 -4.5887 -3.2816 5.8982 -1.3889 0.3111 0.3606 -24.4762 10.0811 14.1057 20.3635 24.0314 20.3690 17.0236 16.4460 19.2548 6.0111 -3.4365 -9.9143 -13.0905 -15.0150 -11.4726 -6.6405 -10.0976 -14.6658 -19.9459 -19.4800 -23.9274 -7.1817 -5.5458 -1.6137 0.8007 1.9284 2.5116 0.3432 3.3359 0.2833 -1.3305 -2.4960 -1.6366 -2.6968 3.6695 6.8225 4.4926 6.1940 6.7541 2.2072 -16.8418 9.6326 11.3478 14.3982 20.7665 19.7772 12.3406 6.1933 1.0438 -1.1521 -1.5860 1.8440 7.8419 -1.5328 -9.8703 -10.1973 -2.2440 -12.0413 -18.5948 -20.6014 -27.3660 1.5056 1.6880 4.2152 9.5291 17.0514 16.2096 8.5432 4.2111 4.4898 11.7231 5.5770 -4.8191 -7.5020 -5.9733 -0.7664 -10.2798 -14.8967 -9.8638 -3.1062 -27.5357 15.2115 17.9992 21.5012 24.9136 19.1760 15.8798 16.4094 17.8040 5.9025 -3.3769 -10.4408 -15.3738 -18.5882 -19.7882 -17.7007 -14.2386 -13.9566 -13.8247 -5.8162 -21.6922 12.1911 17.2966 17.4896 10.6943 3.5061 -0.1018 -2.5405 -6.3143 -7.6095 -8.5828 -7.4501 -2.2275 8.4004 0.0230 -1.6734 2.8727 -8.2243 -7.2548 -0.5950 -19.8998 -0.4264 0.0708 1.9133 6.0904 12.7810 17.8469 12.0313 4.9753 4.2790 6.9401 10.3052 0.2003 -6.7328 -10.0168 -10.0292 -2.7869 -5.6536 -9.3242 -6.0818 -26.3818 7.8387 12.9821 20.1116 21.8527 15.0291 10.4182 9.9996 12.5177 11.6815 -0.1048 -5.5624 -6.4577 -2.0918 -6.3498 -17.7376 -20.9015 -21.1073 -13.6752 -3.7477 -24.6953 18.0184 21.7405 20.2020 16.4376 12.3859 12.2417 12.1975 6.3324 -4.4281 -11.4734 -5.9353 -8.8421 -10.3280 -4.7973 3.4477 1.4017 -15.9637 -17.1346 -16.9459 -28.5571 8.9922 8.4069 10.2569 10.5303 10.1285 4.9362 1.8698 -0.0537 -5.3906 -5.9983 -4.6797 1.6021 -1.9697 -5.3874 -2.3336 -0.9265 -2.7071 -2.3523 -3.3933 -21.5307 0.1643 -2.2100 -0.9888 -3.4801 -0.5275 -1.4680 -0.5683 -1.5514 -0.4216 0.5034 -0.8521 -2.7835 0.5014 -1.2182 -0.7495 5.2974 5.8643 8.2766 6.0259 -9.8143 7.6720 8.0788 9.1059 14.2217 21.6149 24.6272 15.4198 12.7487 14.5686 14.3925 0.6524 -7.7122 -12.3140 -13.4374 -8.0366 -14.9387 -21.7305 -22.0625 -19.3233 -23.5474 2.2815 1.7578 -0.6674 1.7705 0.4755 0.4978 -1.3799 -2.1107 -2.6075 -3.5652 -2.8715 -6.8295 -1.7109 2.8096 -0.7449 2.5543 8.6739 -0.5359 6.8846 -4.6821 18.2027 16.9209 12.1191 7.6862 3.0545 0.5751 -1.6156 -1.2378 -3.1289 -4.2377 -5.6464 -5.0994 -5.0515 -1.2417 1.1802 1.1938 0.3821 -6.3202 -6.4152 -21.3203 3.5023 4.9407 6.5095 8.9494 13.2647 15.1725 11.9431 6.2423 1.1652 -1.6313 -2.9929 -1.9072 3.4422 2.8306 -3.2309 -5.3351 -2.3238 -10.7536 -17.8375 -31.9502 4.7778 10.3180 13.9538 16.0868 9.1380 2.9991 -0.6627 -4.2067 -5.6625 -4.9839 -1.2287 7.7334 9.3244 7.4153 -4.1228 -11.6166 -8.7569 -5.6012 -5.8002 -29.1044 -3.8341 -1.3838 -0.9472 -0.4209 1.7906 4.2155 2.2324 4.3091 1.1357 8.4456 9.7973 6.3722 2.6068 0.3293 0.1016 -0.3203 -4.2313 -3.6986 -3.9405 -22.5593 7.9933 10.9520 14.6109 19.7867 15.1983 6.5296 4.9056 0.7415 -0.5271 -0.1092 6.9036 12.3792 7.7901 2.0866 -9.1117 -12.3605 -5.7793 -23.1437 -29.0076 -29.8384 25.8990 23.1895 19.6721 15.4616 9.3167 5.4831 6.1546 7.4477 4.2279 -1.3757 -8.0309 -11.4646 -10.4795 -7.5543 -4.2227 -6.0439 -16.4547 -16.3865 -13.0397 -21.7998 5.9702 6.6918 8.5551 14.7594 15.5278 10.2403 6.0423 1.7099 -0.1415 0.4245 5.8906 10.2752 2.9571 1.0304 -7.5844 -15.4930 -16.0321 -8.3602 -12.0263 -30.4370 0.2377 1.2490 0.9118 1.8024 3.7548 4.8963 5.1515 4.2684 0.3786 0.5058 0.4839 -0.9914 1.4073 1.1727 -2.9065 -4.4307 -6.9456 -0.2385 0.3969 -11.1044 4.9017 3.2442 -1.2482 -1.2472 -2.0773 -5.4371 0.3708 4.1825 12.1289 1.2950 -2.3136 -3.1723 -0.4429 -1.6571 -9.7455 6.5626 13.4075 7.0987 -2.0865 -23.7642 26.5958 8.4474 11.9082 11.6976 1.4010 -0.2500 3.9848 3.6429 -6.0468 2.5341 -5.2699 -11.5085 3.8103 -6.3108 -2.4679 2.1530 -6.3876 -7.1780 -8.4060 -22.3496 2.2962 0.8041 0.8352 6.6150 14.5461 15.0856 3.2964 0.5549 -1.6557 -2.0236 2.8955 7.5016 -1.2031 -5.6899 -4.7833 1.2942 -7.3403 -8.3771 -4.0417 -20.6100 -3.1520 -0.4969 6.6485 7.8768 5.5605 6.5283 5.6337 4.1543 13.9779 2.7762 6.1398 -3.7070 -1.7982 -2.8944 -6.0041 -6.5265 -11.4873 -1.5122 6.0580 -27.7754 -8.0020 -4.6131 -0.7821 3.3160 4.4465 4.7754 2.8155 1.0612 4.8060 6.0492 5.9390 3.1446 2.8568 -0.6657 -2.6961 -2.1500 -0.9756 -0.2816 -1.9847 -17.0594 12.4378 17.8157 22.2857 21.4926 15.3987 11.6565 8.4610 -5.9608 -14.7466 -15.8101 -21.8850 -17.3295 -13.0545 -3.3503 5.7314 1.5346 1.1396 -7.5940 -1.8366 -16.3862 0.8964 0.1937 0.1104 1.6479 5.6517 12.1890 10.2771 4.4234 1.0502 -0.5311 1.2594 6.8796 5.2931 -3.9156 -6.0500 -0.9098 -4.2858 -6.9837 -7.0958 -20.1002 19.8439 13.4280 9.6622 10.6650 8.0950 5.5066 1.7572 -1.0429 -0.8012 -2.8142 -0.4934 1.3117 0.5243 -6.1730 -8.1290 -6.3324 -1.5063 -10.0417 -9.1390 -24.3207 -2.7279 -1.7097 -1.1534 1.6639 5.7537 6.7942 10.6044 12.5105 10.6069 10.0936 6.6639 5.7680 -0.0784 -3.9348 -2.0808 -2.5423 -7.7730 -12.2311 -11.4054 -24.8224 10.1275 12.1619 16.2723 20.8127 20.9740 14.8019 10.1842 6.5306 4.4543 7.4531 12.2713 6.9620 6.8204 -5.0668 -18.1362 -24.0479 -25.9037 -25.4208 -24.3890 -26.8618 -9.9466 -6.5695 -9.8093 -1.7391 0.0580 3.2073 7.0375 2.3619 -1.1764 -5.8692 0.3050 -4.2033 11.2777 -0.3904 7.8268 9.8649 4.7504 6.9825 7.6743 -21.6424 14.0137 16.9699 19.0697 15.0058 7.0268 5.9083 2.9474 2.1595 3.8159 7.2602 11.3975 7.5965 1.6600 -6.7074 -13.8401 -15.7435 -16.6488 -16.4066 -16.4466 -29.0384 6.2399 3.2858 -0.2213 -1.4923 1.3132 3.9330 3.5221 2.8631 1.3615 -0.0790 -1.0125 -1.0737 -0.3033 -0.8480 -0.4749 -1.1495 0.1031 -0.2090 -1.3002 -14.4580 14.6593 20.5101 23.6344 20.8409 12.5620 6.6891 3.7103 -0.8534 -3.6042 -5.9363 -7.0110 -3.7764 1.6775 -5.6072 -12.2281 -10.8044 -4.3275 -11.1148 -14.7836 -24.2367 17.5445 22.4817 15.1353 12.5880 5.1049 1.9643 5.3928 -3.5987 -0.4750 11.7373 12.9388 -3.8264 -3.5752 -8.3127 9.4226 -10.0441 -20.2747 -19.0638 -21.8010 -23.3385 11.5639 14.1176 19.1780 24.7909 18.2344 11.0457 8.2594 6.6617 7.5852 14.1840 12.1883 7.8148 -0.4947 -16.4472 -21.5615 -22.7378 -21.8493 -21.9703 -24.9810 -25.5820 7.3833 6.5793 5.7205 10.2722 16.6567 15.1599 9.5922 5.5668 5.0234 9.3817 5.3741 -5.1082 -9.8091 -12.3432 -12.5495 -6.2366 -5.9929 -8.3697 -6.8581 -29.4426 0.3726 -5.6285 -3.2253 2.1557 3.8332 12.1538 14.6059 12.3634 15.7294 17.0679 4.8054 -1.6834 -7.5585 -11.9417 -12.8749 -9.7037 -1.2933 -5.8852 -6.0304 -17.2623 12.4589 17.5375 23.1698 18.7129 9.0574 6.8369 3.3366 -0.7668 -3.5028 -5.8079 -2.0422 3.5413 -5.4920 -15.4559 -14.9601 -7.1860 -2.1139 -10.3945 -4.5301 -22.3991 7.7831 5.9803 3.3957 1.1363 0.6624 -0.3876 -1.2270 0.5350 0.3563 5.2276 9.1991 8.9238 2.6320 -1.9335 -4.2120 -2.5342 -1.0999 -4.9168 -4.9485 -24.5720 12.7865 11.7808 12.0132 12.7418 11.7725 11.2618 10.9064 7.0094 3.3808 -2.3233 -4.5714 -6.7413 -8.0255 -8.7048 -10.9950 -7.0616 -9.3710 -7.6597 -4.9100 -23.2897 7.4583 10.3954 16.3813 20.3810 16.5656 9.1371 4.5296 4.0559 6.8658 9.8043 0.1187 -6.6202 -8.4161 -2.4957 -9.4787 -16.3418 -17.6122 -13.1639 -7.5007 -24.0638 10.5778 12.5102 15.4500 16.2510 14.1076 12.4513 11.9259 10.4537 6.3771 1.6824 -3.8825 -5.5239 -8.8633 -8.0708 -4.6460 -3.2386 -13.9943 -17.4761 -15.8823 -30.2093 16.5450 21.4563 20.0130 10.5420 0.7521 -0.1817 -5.7313 -0.2690 -4.1817 -0.5968 6.2079 4.1626 -0.4622 5.1095 -10.2058 -16.0783 -19.9597 -11.6630 4.3789 -19.8380 0.6538 1.9228 2.2930 5.2351 12.5744 11.0394 7.4850 0.8228 -3.4564 -5.0324 -2.9456 4.4755 9.6050 1.6136 0.0025 -0.9954 -6.7769 -7.8860 -2.9330 -27.6973 14.1315 17.7109 22.9482 25.5022 19.8506 12.4355 10.8121 14.0608 12.2635 -2.6541 -11.3457 -15.5204 -18.0730 -18.7390 -15.7720 -7.2576 -9.9721 -9.7355 -17.1060 -23.5400 -5.7314 -4.0590 1.0581 0.9805 1.3616 2.7093 6.3692 11.6381 12.0180 9.1818 6.8001 1.9409 3.0785 -2.5335 -5.7990 -0.6774 0.8325 -4.7436 -7.1073 -27.3175 -1.0640 0.7851 2.7160 6.1021 12.1198 15.4431 10.3026 4.0089 1.9648 -0.0384 2.4993 9.2599 1.9572 -4.2838 -3.1953 -1.1928 -7.8283 -8.5999 -10.0789 -30.8773 -5.6296 -4.3307 -2.3209 -0.8933 0.2894 -1.9304 -2.0575 -2.7780 -6.2185 -5.9192 -6.6197 -5.5076 1.7000 -2.2417 6.7340 9.7221 5.4135 15.4230 16.2356 -9.0706 21.8983 23.2393 21.5176 17.3026 15.6381 10.7095 -4.6739 -9.4131 -7.3736 -9.6360 -10.3893 -7.6173 -3.6940 2.4229 12.3234 -14.8401 -14.2133 -12.8790 -4.4302 -25.8921 11.8056 15.6560 20.2939 16.8416 9.1858 2.5617 2.6711 -1.0207 -1.4500 -0.2437 6.6714 6.5193 -0.4136 -1.1308 -3.7531 -13.8441 -14.3531 -10.4897 -18.0817 -27.4259 55.7273 39.9360 26.2526 15.0127 6.4718 0.7391 -2.3157 -3.1939 -2.9475 -3.3569 -5.3235 -7.9446 -10.6626 -13.1662 -14.2100 -14.4691 -14.4121 -13.8376 -15.6433 -22.6564 3.7665 2.9173 4.2496 1.8470 7.9023 14.8241 11.0448 3.4540 2.7173 -3.8368 2.5626 4.5604 2.9217 -9.5401 -8.3622 -8.8234 -1.4224 -0.0449 -2.7094 -28.0285 -9.3983 -8.0419 -4.4832 1.9754 -0.3749 4.6985 6.4445 3.4462 1.2139 4.1530 -6.0488 0.4383 7.0647 3.8491 2.7818 -2.6890 2.0052 6.3893 4.3086 -17.7324 10.6303 13.7716 17.1718 20.1678 12.2486 3.3600 2.4058 -2.5934 -4.8765 -6.0115 -4.6562 -0.7932 8.0003 -2.2840 -3.8243 0.1863 -9.1648 -14.9839 -14.0940 -24.6607 16.6586 21.6444 20.8223 12.8954 8.1955 4.1214 1.5648 -2.8573 -5.5724 -6.5555 -5.8004 -2.3591 4.8330 -0.2831 0.7092 -9.8961 -15.4807 -12.0228 -6.1807 -24.4365 6.2715 7.1856 9.0377 12.3924 19.0793 22.2584 18.7678 12.6682 9.6569 13.2645 2.9549 -2.9501 -4.4734 -4.2440 -12.7065 -19.5653 -21.3156 -21.7041 -19.8037 -26.7746 6.6118 7.9766 9.5899 16.7112 22.8331 15.9736 8.1328 4.9522 3.0471 7.2666 11.8402 -1.4154 -4.2808 -5.2523 -8.9476 -17.0691 -18.3281 -12.6216 -21.0003 -26.0198 17.3127 17.4868 17.7344 12.4834 5.8856 4.6009 1.0730 -2.7678 -2.0723 -0.4628 -3.7999 -5.8370 -8.6148 -7.6108 -6.5104 -2.5688 -1.6184 -6.1466 -7.5013 -21.0659 3.4054 5.0769 7.0766 9.8006 20.0250 22.5645 11.5478 6.2329 4.4723 6.4844 10.6573 0.2331 -6.2477 -11.0870 -10.3507 -4.2484 -15.1989 -19.0756 -16.4193 -24.9492 4.7627 -2.1833 -2.2828 -3.7716 2.8453 7.5100 11.3439 6.1880 0.3611 -1.2837 -10.2990 -7.9318 -4.0985 1.3582 6.4088 6.3304 9.4372 -0.3781 -7.0962 -17.2205 0.0639 1.7461 3.2578 7.1373 14.2936 21.0383 16.8137 10.1108 14.3040 14.1399 0.3676 -6.3231 -10.5295 -12.7919 -9.1838 -2.4821 -12.1068 -13.6518 -9.1740 -27.0298 6.2012 6.2177 8.6617 15.7008 20.0807 16.3263 9.7644 7.6670 11.6809 8.6315 -2.6559 -7.4948 -10.0457 -10.1131 -6.9875 -12.9972 -15.7760 -10.0148 -6.4425 -28.4048 8.4071 5.8192 3.5662 1.9627 2.4472 1.8597 -0.7370 2.3814 0.1779 1.4958 2.9385 -6.0143 -2.3152 0.3049 -1.7145 0.7158 -1.3399 -5.1439 2.0438 -16.8555 7.4409 3.3788 6.5115 14.5248 13.0646 4.0268 -1.1894 -5.0999 -7.6910 -8.4282 -7.9356 -3.3516 6.9774 0.9806 -1.3988 5.5785 -3.1694 -5.2282 1.6484 -20.6401 11.6728 5.2904 7.2713 8.1521 8.6202 4.8390 1.9077 -2.7604 -4.5028 -8.9428 -12.4662 -11.0383 -4.7642 4.2903 3.3702 1.0547 5.8752 0.7203 -0.1952 -18.3942 1.7662 2.1132 0.6823 0.5069 -0.7694 -0.5730 -0.6749 0.4539 -2.3850 -0.8937 3.2905 1.9366 4.8907 8.8910 3.4773 1.6832 -0.3850 -1.0325 -5.4486 -17.5299 11.1327 8.1369 5.9398 7.2387 9.0755 13.7563 15.6715 10.9671 4.3603 6.5521 8.2784 8.2998 -3.5109 -8.8874 -13.5723 -11.9565 -11.2912 -14.9059 -15.3573 -29.9274 17.2359 18.8517 18.1626 16.5245 13.3466 10.8703 8.4673 4.7337 2.6350 0.0183 1.1954 4.7388 -2.9359 -6.0731 -7.4347 -16.3769 -19.9350 -20.0072 -15.2078 -28.8095 15.9881 16.1253 11.9372 8.7157 5.3883 4.3873 5.5095 5.6589 0.5361 -1.1208 -4.8170 -4.8077 -4.2337 -3.8897 -5.7866 -5.1486 -6.6937 -4.6271 -8.1104 -25.0113 10.5287 10.4645 11.0189 12.4921 10.2092 2.1803 0.6775 -1.9607 -7.8737 -8.5232 -10.8456 -10.0601 -9.5234 -5.7091 4.1283 1.9979 4.9082 2.3842 -1.6831 -14.8109 6.8712 7.1195 7.8478 9.0102 7.5469 4.9121 6.0618 3.0705 0.6628 1.7728 2.7140 6.3541 3.1029 -4.2377 -6.3687 -2.2545 -6.3865 -11.4164 -9.6711 -26.7119 16.6601 22.0460 20.3084 13.4923 8.0021 8.7024 10.1260 10.4026 4.1888 -3.7328 -6.1710 -10.8693 -16.0494 -7.8483 0.2833 3.3381 -13.0116 -16.9474 -14.2501 -28.6704 -1.6472 -1.5329 -0.7265 -0.8590 1.5500 3.3445 6.0600 5.7678 2.9402 4.2316 1.8384 -2.4116 1.7488 -1.1846 0.2843 -0.4495 1.5215 -2.2191 -1.2847 -16.9723 5.4499 9.2168 13.6525 18.6245 21.2266 16.3225 10.2029 13.7648 16.3433 7.8345 -0.8506 -3.0654 0.8282 -4.7895 -14.3191 -13.6263 -16.5382 -25.7242 -26.3799 -28.1733 5.4928 7.2730 11.4735 16.9546 13.9651 4.9178 1.4991 -1.5005 -3.3689 -4.2367 1.4622 8.4912 0.6337 -0.2593 0.3732 -7.8143 -10.1871 -7.5615 -7.0778 -30.5301 6.6781 5.8903 6.7632 9.1810 8.8397 9.7239 8.7155 7.7970 6.3227 3.4228 0.2514 0.1110 -1.6716 -5.4364 -5.9387 -8.2352 -7.5149 -7.0855 -8.8552 -28.9591 11.8209 17.4970 19.5821 14.6674 8.7810 10.5929 17.1599 11.1304 -1.5934 -2.4291 -7.1040 -7.2023 -9.3009 -11.7782 -8.5498 -11.3872 -9.7560 -0.1211 -12.0128 -29.9970 10.1575 12.1948 14.9933 16.4447 14.1842 8.2787 4.1829 1.5996 -0.4007 2.6686 4.5920 3.8070 -0.5362 -2.8498 -6.0317 -8.0974 -11.2561 -15.9690 -16.7096 -31.2528 17.3728 16.5602 12.1580 2.2953 -0.7338 -2.2088 -3.0060 -3.4950 -5.7703 -1.8968 -4.1417 -2.2550 -0.4691 -0.6536 -2.4783 -1.3584 1.1130 -1.5486 -2.1800 -17.3041 10.9509 14.6912 20.9171 20.7445 13.3882 9.0276 8.4810 10.4480 11.1634 -1.3107 -8.8976 -12.4550 -14.1419 -12.2168 -8.1653 -9.1840 -14.6536 -10.7798 -3.3490 -24.6582 -4.2511 -4.3180 -6.4235 -4.0719 -2.3887 -3.1485 -4.2032 -3.5194 -7.5010 -5.4107 -2.3368 0.6165 -2.5480 -6.5746 5.7100 1.8165 14.8553 24.3830 15.8024 -6.4884 6.8815 10.8626 15.3667 14.4704 2.5878 0.6962 -3.7687 -7.2033 -9.3334 -10.5308 -9.6190 -8.2135 -3.3921 8.1225 8.7748 9.4979 -0.1825 -3.9609 2.5378 -23.5939 10.7457 13.4613 16.3838 18.1633 11.9764 6.2322 2.2046 -1.6815 -5.4025 -5.3261 -1.9194 5.7850 7.0183 8.8506 -7.0398 -15.8090 -17.0181 -9.4482 -9.5562 -27.6203 4.4895 6.7459 11.3127 18.7251 18.1351 6.5502 1.1677 -1.0341 -3.9953 -2.3382 3.5745 11.8555 2.9192 6.0596 -4.8984 -13.0118 -16.2470 -15.0252 -10.6982 -24.2871 10.1449 10.3471 14.7490 16.1718 16.9528 11.3815 6.8749 1.4265 -2.7864 -6.1956 -8.0139 -7.8556 -2.8591 4.0596 5.4548 3.3633 -10.2166 -16.2406 -18.8135 -27.9450 9.5266 9.8619 11.6564 16.1435 22.5856 19.0228 9.5649 5.1013 3.9082 6.9523 9.4453 -4.8784 -10.6008 -16.0258 -16.6123 -14.7740 -6.6639 -13.8342 -16.3927 -23.9867 -2.8166 -0.2578 2.8925 4.4555 5.6756 4.6914 3.4417 3.4041 1.8890 1.8575 -0.5242 1.9867 0.9536 -0.9744 -1.4010 -2.1961 -1.2827 -2.3186 -2.1481 -17.3281 6.5757 10.4876 15.8653 20.5177 18.3749 8.4114 4.7411 0.5009 -2.9659 -4.1461 -4.5681 -0.6566 5.8038 -2.3737 -8.5532 -6.5787 -2.8561 -13.7548 -17.8769 -26.9485 7.1295 8.3469 8.9916 14.7649 20.5000 15.5149 7.3359 0.6792 -1.5195 -5.0373 0.9468 7.0372 -4.0339 -9.7787 -8.9444 -0.8558 -12.0386 -13.0157 -7.1764 -28.8465 -6.3643 -3.5600 -0.9853 1.3808 3.5164 4.4752 4.2783 4.1699 0.4058 -0.8097 -0.9913 3.1386 9.3653 -1.1057 -1.2662 0.7587 1.7985 -2.7481 1.1071 -16.5641 10.8441 6.1056 4.5464 11.5523 11.5304 4.8593 1.2036 0.6177 -6.5224 -11.5032 -13.3278 -7.1852 -1.6717 9.2735 6.7578 -0.9050 -7.2789 -6.0827 3.0089 -15.8228 2.4300 2.4475 8.1825 8.1925 2.2974 10.8311 15.5690 1.4027 0.3290 -0.4366 6.3648 1.0487 -0.9166 -8.1367 -8.1915 -9.5690 -3.4184 0.0616 -4.9205 -23.5675 18.5545 22.2390 21.2685 17.0100 9.6982 4.7320 4.3296 7.5541 8.1889 7.8498 0.4258 -3.7349 -6.3446 -8.3581 -11.0931 -16.2715 -16.4055 -15.8123 -17.4410 -26.3892 5.3049 3.9686 5.5462 12.1792 19.9309 17.0320 8.3644 7.8784 10.6383 15.3943 3.6647 -0.1421 3.0499 -3.2605 -15.9284 -20.0685 -19.5084 -15.1548 -11.4151 -27.4740 -4.1173 -2.8993 -1.1226 2.7523 4.1168 4.2377 1.6192 1.4859 2.7141 0.4810 0.9555 -0.9423 1.2205 0.5970 0.3948 0.4670 2.1347 1.5199 1.6806 -17.2954 15.7137 20.9924 24.3419 24.5468 20.7453 18.1011 19.1224 15.9122 12.9399 8.1629 -8.2323 -12.3399 -17.0242 -22.3729 -23.1787 -23.2286 -17.6989 -10.8077 -20.3082 -25.3873 -1.2634 1.8562 5.1481 8.6050 8.7868 9.5351 6.6634 3.8160 -0.1296 -4.6560 -0.5036 -0.2003 1.6621 -1.6607 -2.8913 -4.8208 0.3233 -5.1066 -6.1044 -19.0592 10.6986 11.8307 11.5659 12.4490 11.1880 6.9008 2.6629 3.0301 3.4569 5.3227 2.5092 -1.0853 -3.8118 -7.0840 -4.9747 -7.3629 -11.0099 -5.9887 -11.0008 -29.2965 13.6712 17.1821 19.2431 13.3261 5.9589 0.4984 0.3670 -2.3834 -3.2315 -2.1198 4.8356 0.4745 -8.1763 -11.1278 -9.8688 -0.1733 -8.1227 -9.3563 -5.3546 -15.6426 -5.7735 -2.5076 -1.5044 -1.1663 0.0004 2.3285 2.2748 3.5509 0.5101 -3.3403 0.8431 1.7502 3.2945 -0.4888 1.3903 4.0779 1.6571 2.3564 6.2297 -15.4829 9.1796 11.0931 14.7746 19.7918 17.0503 10.0451 7.8355 5.3063 5.9805 11.7545 10.2992 6.2216 2.6489 -6.8542 -15.2068 -16.6927 -14.0990 -23.4163 -26.3767 -29.3354 4.4691 6.3690 7.7808 12.8470 20.5705 17.7665 9.4381 6.2778 2.4431 5.0549 9.9596 3.2883 -2.2059 2.0400 -4.0438 -15.0151 -19.7303 -18.2469 -20.2388 -28.8235 25.3208 24.3974 22.6154 19.5733 14.8131 10.5701 9.4361 4.3748 -1.5593 -4.3511 -14.7283 -17.6258 -0.9520 -8.5196 -7.3624 -3.2510 -9.9332 -17.3271 -21.4343 -24.0570 22.3042 16.1278 12.0077 14.7975 10.7206 8.3648 8.0610 10.1267 7.5498 1.8723 -3.9201 -8.2481 -10.1623 -11.3760 -12.7367 -5.0050 -3.3744 -11.9178 -17.4700 -27.7220 4.0018 3.5852 3.3315 5.3461 4.3656 2.8461 -0.0206 -2.5696 0.1895 5.1002 3.3534 0.2158 1.3297 -0.9671 -0.5937 -1.9855 -1.7054 -1.7064 -4.2453 -19.8713 -0.1820 0.3377 2.3741 5.1705 4.8793 2.2995 4.3309 2.2662 0.4173 -0.8843 6.0098 9.0178 2.9640 -0.8977 -1.5385 -6.1656 -4.1289 -4.7989 -1.1105 -20.3607 7.6526 7.4466 4.8852 0.6442 1.5298 0.3141 2.6136 0.1768 0.3184 1.5717 0.2364 -0.4716 -4.0283 -1.7854 1.1771 -1.1242 0.5833 -0.2901 -4.6526 -16.7979 19.3739 25.1966 25.2676 19.4367 10.1976 2.4144 -1.1928 -4.0638 -8.7478 -10.5230 -11.0799 -12.5634 -10.0392 -5.3666 3.7592 3.3440 0.1212 -8.8586 -13.7562 -22.9202 9.6043 10.5410 12.3377 19.7574 26.3167 19.8022 16.1636 16.4176 17.5852 2.8061 -5.6826 -11.1198 -15.0897 -15.5002 -11.1047 -14.2676 -20.4525 -20.5783 -15.3843 -22.1521 12.9015 20.6704 27.9257 24.9274 19.2594 24.2150 19.1475 0.5334 -3.3152 -12.4822 -15.0498 -16.9033 -19.2802 -17.1972 -9.8015 -9.8416 -13.7988 -8.2071 -2.2124 -21.4912 14.4389 13.4012 16.1103 14.9288 9.7959 11.0171 12.0893 -1.4171 -9.8704 -8.5713 -15.4225 -18.6377 -16.5003 -13.9403 1.0172 8.7826 2.1557 -0.7217 -0.1613 -18.4945 3.2298 2.2245 4.4788 6.2407 6.6193 4.0854 3.5648 2.2977 2.4361 0.5689 -4.6553 -1.2701 -2.8888 -2.1474 -1.0212 -1.5878 -0.7381 0.5436 -4.6923 -17.2887 12.1886 11.0008 17.9358 24.3010 22.2969 15.0778 12.8771 17.0838 11.2261 -0.0847 -7.9648 -13.0993 -17.1559 -19.7583 -18.6302 -14.9903 -5.4184 -14.9564 -12.1370 -19.7926 18.1628 19.7982 21.7942 23.1496 22.2974 18.3029 13.8973 12.5987 14.0955 8.3018 -1.2018 -2.7097 -5.1243 -15.5625 -20.9814 -25.9011 -25.5502 -25.1062 -24.3739 -25.8874 5.1200 2.6682 2.7787 5.1220 7.7683 7.6609 0.3239 -0.5597 -2.1976 -4.2025 -2.3433 5.4581 3.3195 -4.6819 -7.7339 -5.9433 6.7709 -3.0093 -0.4617 -15.8570 3.1474 3.9068 4.6743 6.1980 3.9172 5.5703 3.7560 5.3815 6.4792 7.4263 4.0188 -0.9053 -2.9276 -4.2640 -3.8751 -2.5664 -3.8921 -5.7279 -7.3914 -22.9261 7.7606 7.9634 9.2590 13.4058 20.9130 19.2571 11.4285 9.1142 10.4227 12.6605 1.3940 -7.8667 -12.9049 -16.1586 -15.3321 -7.7158 -10.1835 -11.8246 -14.2319 -27.3607 9.9378 9.7046 10.1765 13.1670 9.5151 2.2155 -0.0456 0.0357 -0.3521 -1.2640 0.0667 3.9496 -0.7853 0.9935 1.7327 -2.1738 -2.4763 -8.9075 -14.5354 -30.9548 9.4566 14.4761 17.5184 16.5421 10.8319 4.8634 3.7958 1.0301 -0.7413 -4.7772 0.1278 10.6261 1.7256 -4.7562 -1.8151 -1.2979 -10.9708 -19.1139 -21.0656 -26.4558 4.1609 4.3674 5.1630 10.4393 19.9966 22.0365 15.0772 16.7404 13.2009 0.0579 -7.2967 -13.1855 -16.4671 -16.2778 -13.5417 -3.6468 -7.6575 -10.0591 -0.8708 -22.2374 9.2619 9.2850 10.6963 10.0411 5.3819 1.8030 1.0922 -0.3660 -0.8976 -3.1810 -0.6819 -3.8642 -8.4569 -8.9974 -5.5095 -1.9498 -5.7587 -2.8793 9.9987 -15.0177 16.0944 15.0736 17.4290 17.1266 16.3425 13.9152 -0.3124 -3.4633 -3.3349 -5.5676 1.0220 7.3152 5.0978 0.8308 -5.9027 -14.3898 -14.2461 -12.2320 -23.5828 -27.2154 2.0137 5.7764 10.2219 14.9245 16.5703 10.5235 3.0729 -1.4882 -7.2050 -6.2506 -5.1311 1.5065 6.9953 -1.4430 1.8240 -1.5831 -9.7701 -7.7954 -0.2269 -32.5358 0.8118 3.1428 4.1975 8.8492 17.1316 16.9999 8.6244 -0.0326 -4.9530 -5.2292 -0.1353 6.3691 -2.1837 -2.6835 3.8299 -6.3313 -4.7140 -0.2060 -11.6261 -31.8615 16.0656 15.8566 16.2660 14.0919 7.2745 1.1478 0.5592 -3.1884 -2.7528 -3.9872 -1.5200 -5.6031 -7.1936 -11.6082 -9.9024 -5.9648 -1.2652 -4.4434 -0.5317 -13.3008 6.0546 7.8172 12.5175 18.9740 18.6314 12.5099 8.6741 7.3229 9.6232 16.1584 9.3568 6.3688 5.3827 -10.1648 -19.1392 -25.0842 -25.6307 -21.0082 -12.2957 -26.0685 8.7645 5.7385 7.3877 9.4659 8.7034 6.7927 2.2815 1.6420 0.5587 -0.7987 1.2054 8.0228 11.5479 4.5805 -6.4932 -9.4841 -11.6576 -7.6077 -9.5897 -31.0604 13.5337 13.1762 15.6646 19.9549 24.3470 21.3479 19.5471 19.3675 13.3653 -0.5856 -8.6584 -13.2572 -16.9863 -17.9847 -20.7708 -15.4798 -11.0509 -15.4702 -16.1382 -23.9221 9.4656 10.0639 11.4433 14.6680 18.7771 15.2024 9.3195 5.1370 1.9578 0.3561 3.7670 8.6933 1.3200 -4.9956 -10.6736 -14.3320 -17.7829 -18.0592 -14.3140 -30.0137 1.5799 4.3053 2.3818 2.8910 -1.2059 -0.8300 -0.1903 -0.1292 1.0233 3.9206 3.9828 2.2978 3.2320 -2.5703 -2.6923 -1.3776 2.9213 0.1727 -0.5110 -19.2019 6.8519 4.8647 1.9844 2.2401 3.7555 1.5005 -1.3694 0.5704 2.1485 0.7600 0.6917 -1.0898 1.8295 -1.7615 0.1607 -2.4085 0.4928 -1.2003 -0.2145 -19.8066 26.8652 27.9313 22.2964 13.2728 4.9234 4.9750 10.5105 12.7213 4.9587 -6.5278 -2.0124 -3.4059 -5.9594 -7.3378 -10.2568 -18.1183 -18.7465 -15.1523 -18.6899 -22.2476 11.7015 12.5524 16.8036 20.5917 17.3325 11.6535 7.9132 3.4464 6.4909 8.4604 0.1120 -8.6770 -13.3036 -17.0534 -16.5775 -11.3553 -3.4540 -9.9071 -10.9540 -25.7760 20.0026 21.9415 20.1743 15.7692 9.6829 6.6171 12.1877 15.1379 6.9729 -2.6223 -11.9260 -8.0030 -5.4775 -7.9242 -14.3282 -6.4602 -11.9823 -18.5276 -14.5214 -26.7133 8.4727 10.3130 16.1554 22.5237 20.4885 15.1245 10.9192 10.3785 14.0959 8.6752 -2.6735 -8.1503 -8.9174 -2.4684 -9.1899 -21.2524 -22.7439 -18.1241 -17.6618 -25.9650 16.4001 11.0790 6.5408 3.9922 0.9638 0.6155 0.1321 -0.0033 -1.5205 -0.5347 0.0838 -0.8675 -0.2837 -1.6297 -1.6342 -2.7530 -2.7291 -3.0597 -3.9086 -20.8833 12.8347 13.9930 15.6832 15.4917 10.9362 11.4157 15.6476 4.3710 -10.8720 4.3584 -2.6363 -7.3238 -10.3423 -4.3725 0.4684 7.2994 -11.0045 -18.8176 -14.2499 -32.8805 12.3323 15.8058 21.8399 24.3008 14.4087 10.9930 7.8357 8.0265 12.8222 14.2335 5.8155 6.0731 -6.0593 -17.6762 -22.1263 -23.2555 -24.2165 -21.7123 -15.9183 -23.5226 5.7344 5.3389 3.8374 3.4190 2.8812 1.7219 0.1439 1.8580 -0.5349 2.0653 -5.3722 2.7017 1.0724 -0.8636 -1.4371 0.4192 -0.6553 -2.1126 -0.7370 -19.4805 8.7871 8.8914 10.5080 13.7939 18.1053 18.3809 13.6037 9.9123 6.2489 7.8891 6.4768 -2.8713 -8.9109 -11.1699 -11.8847 -5.8137 -11.8112 -19.3777 -21.5409 -29.2171 21.2487 22.5877 21.7624 19.0832 14.4498 8.3623 6.4664 3.1545 -0.2860 -1.9696 -3.9389 -1.8288 -3.7243 -9.6176 -13.7865 -15.0846 -11.3343 -12.9399 -16.9243 -25.6805 15.5067 16.3749 16.3110 12.8646 5.4498 2.4274 -1.0299 -3.2700 -3.2357 -0.0252 7.5399 -0.6948 -6.2588 -9.1664 -6.8883 0.7600 -11.6902 -9.9820 -1.1495 -23.8436 15.5548 17.3265 20.2482 21.9118 17.7825 12.4436 8.5947 8.3626 10.7582 6.8704 -2.6150 -7.1451 -11.7102 -15.2112 -16.7335 -10.8661 -12.1430 -16.7183 -19.7849 -26.9260 9.7348 18.6985 22.2000 9.7733 3.5414 -0.9890 -5.4561 -5.4928 -8.4760 -6.8757 -4.1569 6.8951 2.1633 -1.2892 3.0483 -7.4717 -12.0842 -7.7317 1.0735 -17.1050 6.6628 6.9628 9.2890 7.3292 2.0881 -0.1054 -1.5163 -4.7058 -4.4988 -5.4883 -6.5025 -2.6194 5.9468 -1.1287 -0.4851 5.3144 -1.6440 -1.6601 4.2795 -17.5182 11.7595 13.0074 13.6551 14.3417 13.9024 11.5890 9.9365 4.1950 -1.2916 -2.3847 -1.5414 -3.1381 -5.4213 -4.9864 0.0096 0.2286 -7.5940 -13.3606 -21.1287 -31.7780 16.5560 21.1528 18.2294 14.8217 11.7211 5.8948 0.1128 -5.7142 0.4819 3.4296 -7.6731 -15.2596 -14.0910 -4.3450 4.2359 -1.2610 -8.7829 -14.4366 -8.1323 -16.9402 -9.6162 -5.8920 -0.4336 -0.0688 3.9825 0.7100 -1.9156 -3.0982 -4.8027 -4.2612 -2.6264 1.0431 5.5418 11.1806 9.5552 5.0905 3.5862 4.3463 5.8670 -18.1885 9.2493 12.5210 14.8487 20.3042 16.9267 10.5281 5.4085 -1.4152 -5.3054 -5.3250 -4.1371 2.4443 0.8006 -8.0900 -7.9314 -5.9206 -13.5877 -13.0043 -4.8031 -23.5116 5.9148 6.0122 7.7679 11.9347 14.3202 11.1880 5.7941 0.6362 -0.9006 -3.7616 -1.0465 6.3361 0.5894 -7.7629 -9.2778 -6.0898 -0.4740 -7.4253 -3.1780 -30.5771 9.0470 12.9059 18.1346 24.2631 23.6353 19.2579 20.8877 17.0355 3.1774 -5.2773 -10.0473 -14.9178 -17.5773 -16.4551 -11.9394 -9.6664 -11.9143 -7.0063 -19.2353 -24.3080 11.6229 13.7686 16.3077 18.9730 21.2077 21.1770 18.6717 15.5260 14.4577 10.9286 -2.0523 -9.7658 -14.1470 -18.3895 -20.2191 -19.9491 -14.1791 -17.4745 -18.9708 -27.4939 -1.2854 -2.7859 2.0352 3.8729 2.5634 1.1875 2.9803 3.4105 0.6928 -0.5396 -6.4408 -2.1739 4.1284 -0.7168 -3.4324 -5.3047 2.1060 6.1169 6.1700 -12.5844 3.6719 5.1933 3.4330 2.0915 1.7090 4.9193 7.5225 11.4575 7.7921 1.1072 -1.3846 0.6720 -0.8916 -0.5196 -2.8857 -5.7085 -3.7344 -4.4707 -6.4364 -23.5377 5.0076 6.0603 5.6858 5.8716 4.9796 4.3510 3.2343 -0.0278 -1.6006 -3.6879 -3.6306 -0.3994 -2.7867 -5.8602 -4.3815 -4.1661 1.9375 0.0251 1.7605 -12.3723 1.5611 2.5677 6.9184 12.7642 12.9002 7.6294 1.5737 -0.4407 -4.6258 -3.3019 -0.3274 9.4821 8.3473 7.1185 0.9099 -4.2945 -2.0947 -5.5952 -16.6889 -34.4035 -10.0770 -9.2074 -7.5499 -5.3349 -2.0639 0.7289 3.3239 5.0911 7.8838 10.9963 10.2149 9.1756 7.3923 3.8453 -0.9308 -1.4293 -1.7749 -2.4954 -0.6350 -17.1538 11.6964 15.7897 21.5631 25.0743 21.2867 19.0704 20.7015 14.1826 0.0839 -7.4606 -11.2687 -14.0743 -15.6804 -14.7951 -10.8010 -12.5161 -17.6133 -13.8075 -7.4286 -24.0031 -6.9283 -6.6188 -5.8684 -5.5056 -3.6164 -2.5751 -3.3395 -0.3521 -3.7955 -8.6077 -6.1256 -4.7755 -5.6371 1.9017 5.4236 6.9088 17.0056 9.6477 17.8081 5.0500 1.0400 4.3584 5.7473 5.9965 7.1951 11.1543 16.3999 17.9219 13.7898 8.5105 6.6032 8.3888 3.1208 -8.4853 -12.1692 -10.3091 -9.4060 -16.3383 -22.0676 -31.4510 4.0785 3.7601 3.2477 4.5535 2.8617 2.8959 4.0341 3.3572 -6.7255 5.4042 2.4187 1.2230 0.1581 -3.0654 -1.9472 0.8423 -1.1312 1.2092 -3.2861 -23.8888 7.3239 6.9150 9.3764 18.0744 16.9415 9.6050 5.2932 1.9763 2.0297 6.2840 11.8379 10.9565 8.5711 -5.0433 -15.8094 -21.0356 -22.5868 -18.9436 -8.4281 -23.3379 -1.7885 -4.8321 -3.3241 0.9574 -0.7694 -4.0018 -4.5674 -4.5260 -2.6221 4.0186 7.6808 10.9687 1.1618 6.5552 7.2914 5.9801 0.8194 -0.4241 1.0077 -19.5855 2.5382 2.7665 6.6332 9.6977 12.0223 5.6888 5.2502 -0.0648 0.1790 1.7261 3.6718 4.6019 -4.2546 -5.2838 -8.6175 -3.5030 -2.8900 -5.1451 -3.1562 -21.8607 -1.7959 -1.6410 -1.3048 -1.9856 -1.1093 -0.5878 -1.7759 -0.7425 -2.7139 -3.3222 -3.9402 -1.9787 -4.1788 -1.9573 -0.0518 0.6181 5.7386 8.4544 14.2974 -0.0227 1.9227 3.4879 4.9261 5.1627 4.2257 4.6417 3.0455 -0.4550 -1.9330 -4.6665 -6.5225 -3.7829 -5.2713 -1.4162 3.7054 5.6573 7.0460 2.7847 -1.9201 -20.6381 5.4951 4.1184 5.0794 4.1307 2.3794 0.0327 -0.8237 -1.5895 -3.7505 -6.6385 -6.0766 -2.2466 -0.4080 -4.9327 -5.8400 -1.6035 0.3752 6.5602 12.3259 -6.5875 6.8048 2.6542 8.2117 4.3594 9.5824 4.9978 9.2805 5.4616 0.1801 2.8218 4.8979 8.0336 1.3602 -0.8584 3.0641 -6.3167 -11.4947 -13.9096 -9.3665 -29.7643 20.4394 23.8508 19.9523 13.4804 4.7063 -0.8810 2.3157 4.3508 4.6054 2.6117 -2.8160 -5.7052 -5.0189 -10.4846 -14.5942 -12.8055 -6.1098 -12.0585 -7.7055 -18.1337 9.9351 14.3502 19.5530 16.3727 7.0796 2.9949 -1.1604 -3.2246 -3.9592 -2.8637 3.6007 8.3194 1.5624 4.0080 -6.2282 -13.2960 -15.2078 -10.4525 -5.9946 -25.3891 5.5354 4.2644 3.4234 3.5650 3.9406 1.8276 0.2709 0.3493 -0.0020 -0.7304 1.8692 2.1692 -1.3779 -0.9234 -5.0911 0.1335 -1.1518 -0.8308 -1.2357 -16.0052 14.7180 8.4248 6.7389 6.9731 8.7963 12.7964 14.6589 10.3137 3.2909 -3.7235 -5.8542 -6.9864 -6.8348 -4.2701 -4.4326 -5.4747 0.7281 -9.3904 -11.2298 -29.2424 9.1842 9.7851 10.8472 12.9244 10.6955 6.8423 4.6037 0.7650 -2.0301 -2.7855 1.3686 5.5053 -1.4464 -8.6948 -6.8949 -4.4565 -9.3587 -11.9106 -7.0277 -17.9162 9.5187 11.0469 10.8992 10.5477 12.4336 17.9310 22.0092 22.1029 21.2249 17.7472 4.1368 -3.9142 -11.6583 -18.8125 -22.4708 -24.5855 -14.9292 -12.6855 -22.7109 -27.8313 12.0341 16.6419 15.8489 10.0396 3.3655 -1.8695 -5.2143 -9.4106 -10.9745 -12.0991 -12.0450 -11.1231 -7.2635 0.0306 12.4231 12.6061 4.1888 -1.9085 0.6831 -15.9537 -1.3674 -0.5228 -4.0775 -3.8100 -1.0761 13.7500 19.2044 15.7231 9.5615 7.9996 6.5298 3.6199 0.5658 -1.3324 -7.5527 -6.3571 -7.0946 -6.2162 -8.1181 -29.4293 7.3145 11.1318 15.8219 21.2414 19.7326 13.4391 10.1286 13.1458 13.5220 4.5818 -4.9865 -10.4663 -12.4137 -8.4915 -7.5278 -14.5074 -14.9519 -10.6855 -18.9716 -27.0572 -2.6938 -1.0116 0.5434 -0.5197 1.2510 2.7810 -3.1452 2.3461 1.3093 1.0916 0.2998 1.6109 9.4326 9.1761 -2.9635 -1.3175 -1.3459 -2.3687 -0.4622 -14.0137 -0.6799 -0.1341 0.7366 1.5016 2.3553 1.9877 1.8684 -1.1687 -1.7388 -0.3259 3.2899 3.7096 2.8005 -0.4016 0.0798 0.8146 0.2490 -0.5574 0.0812 -14.4681 -4.5962 -1.7335 2.2323 4.9758 4.1965 6.1120 6.3004 -0.2420 -0.4268 -3.4101 -1.9343 1.8578 -0.3352 -3.5061 -2.9167 0.7871 0.7063 -1.6356 3.3878 -9.8196 13.1227 13.7568 12.0750 11.2378 13.9543 15.7037 14.8582 9.5334 0.1292 -3.0889 -7.7565 -10.9896 -5.4579 -2.1373 0.1387 -11.7169 -13.0933 -7.4977 -12.3640 -30.4077 29.3087 22.8979 20.4744 14.9176 7.8398 2.3822 -3.7671 1.0563 -3.5131 2.1709 4.1060 -2.4865 -7.3802 -9.3667 -9.8213 -8.8247 -9.4073 -14.9259 -16.1530 -19.5079 8.2477 12.7093 19.4580 20.8257 15.6422 8.6762 4.5782 4.1335 5.6439 14.7051 12.4104 11.4909 -6.3291 -17.1032 -20.7835 -24.4558 -22.5241 -14.5649 -5.2278 -27.5328 0.7217 4.0954 5.2473 1.5270 1.7119 3.5822 -1.4614 0.8720 -1.3606 -1.4757 -0.4869 1.0336 -0.7433 2.0743 0.6152 -7.1442 0.5920 6.3583 2.8714 -18.6301 20.3582 21.7378 21.8475 15.5031 8.5323 5.5254 -0.6584 -4.0833 -5.5901 -5.8466 -2.2597 3.0499 -4.1864 -7.3615 -5.3521 -8.6549 -8.7165 -10.8646 -9.6599 -23.3202 7.9037 5.3843 2.5963 1.7924 -4.1648 1.1119 1.0025 0.4959 -1.4533 -3.0047 0.7379 1.8636 2.4329 0.9500 -0.1706 -0.3177 0.7889 1.1735 -0.4730 -18.6499 -1.9942 -2.2404 1.0361 1.1275 2.4246 0.9687 -0.7731 -0.4350 2.7773 4.6081 2.2666 5.9874 1.4863 -4.3135 -1.0943 3.1059 -4.9201 3.6382 1.5522 -15.2082 15.5189 17.8940 20.2047 21.1613 16.5719 9.8830 6.2072 1.5961 -2.8649 -4.2350 -1.2109 1.6294 -0.3114 -6.2890 -6.6470 -6.6461 -16.7097 -18.4834 -19.5782 -27.6908 4.5707 9.9453 16.9194 16.3836 7.5074 1.7185 -1.6704 -4.6470 -7.1710 -7.5216 -6.2372 -1.4728 9.1990 4.5872 4.2446 -3.1203 -10.1462 -8.9093 -2.0237 -22.1562 10.2043 6.2265 8.0480 6.0822 2.9673 -0.2686 -0.4905 -3.3479 -4.2925 -4.0224 -2.6407 -3.8742 0.6899 3.7007 5.8631 8.8480 -1.0855 -6.5692 -4.1304 -21.9079 12.9155 18.0966 19.8262 14.0767 6.9947 1.6106 -0.8791 -6.2102 -7.3162 -10.2835 -10.9883 -8.3441 -1.6557 0.0080 -5.7847 1.4192 -5.5022 -4.2471 3.9784 -17.7147 5.1637 8.0679 12.5738 17.5701 14.9252 4.1592 0.9276 -0.3161 0.0005 3.6819 10.2605 3.1026 -2.7955 -2.8307 -1.1861 -9.2862 -11.7976 -5.3295 -15.7634 -31.1274 6.9673 6.7974 6.1367 10.4782 15.9809 13.2295 4.9742 0.4813 -4.1310 -5.6911 -5.9712 -1.2511 7.3306 2.6442 0.3224 -0.8372 -7.4799 -9.3018 -8.5882 -32.0913 13.1396 12.9563 12.3478 9.0857 2.3849 -0.8490 -1.4825 -4.2362 -7.2804 -7.4639 -6.8853 -6.4479 -4.2443 -8.2231 -3.9022 0.4289 0.1896 3.7001 6.9697 -10.1879 15.3330 18.1603 22.1112 21.6848 13.1886 10.5333 8.8464 9.6626 12.4137 13.9577 10.1420 -0.2864 -11.4409 -16.9791 -19.7494 -15.6645 -19.7643 -22.5000 -23.5283 -26.1208 6.8457 -6.8649 5.4271 5.2712 -1.3685 5.0072 1.5557 0.4655 -8.6121 0.8133 -3.3697 -1.5367 2.2231 2.7614 0.6905 -0.9517 3.9757 2.5271 6.8378 -21.6975 4.0198 5.3861 1.4690 -2.5892 -0.7717 2.5302 1.6444 0.6228 0.0646 3.2916 3.8112 -0.6089 2.1623 0.1459 0.1339 0.1325 -1.6768 -0.5331 -0.5013 -18.7335 -7.1586 -2.6175 0.5796 4.1833 -1.3849 0.3608 -8.9238 -4.4835 -1.6026 -5.1856 -8.3891 -1.4730 9.5706 -8.3291 11.6042 11.1480 -0.2734 4.8182 12.1074 -4.5509 12.6166 14.8923 16.2633 17.1269 18.2744 19.2870 16.5858 10.4162 6.9131 6.3384 2.9142 -1.3754 -10.9051 -16.4865 -19.5016 -17.7616 -6.9047 -16.5161 -23.1066 -29.0706 10.8009 12.8094 14.6516 18.7246 16.6285 12.1161 8.7229 6.4887 7.8806 10.1330 4.1720 -4.3839 -6.8368 -8.8011 -8.4415 -14.6175 -16.9291 -13.3638 -20.2402 -29.5143 6.2190 6.4291 6.1608 8.0273 9.8018 9.8514 6.5431 7.0773 5.8326 5.6116 8.2150 7.4679 -0.2957 -6.5386 -7.9000 -7.1888 -10.2895 -12.2362 -14.0338 -28.7541 8.0266 9.6417 12.2059 15.4655 15.3945 10.4886 6.7757 2.3300 3.3664 6.5551 2.3159 -4.1967 -9.2962 -11.8145 -9.9788 0.0400 -6.7484 -6.4088 -11.3916 -32.7710 -6.0361 -3.7035 -0.2831 1.4674 0.7756 0.3247 -0.7445 -0.5024 -2.1341 2.7813 -0.1459 -3.5635 -3.9893 -4.2930 -0.5948 5.6527 2.1314 14.0267 12.5554 -13.7247 -14.2301 -11.8469 -5.4438 -2.2899 3.4911 0.4713 0.7187 -2.7114 -1.5588 -2.8210 -0.0887 1.5060 2.8286 9.3500 12.2742 8.0817 12.1298 7.7574 3.4239 -21.0423 10.2809 9.4545 10.3039 12.6386 19.4980 22.5798 19.2258 15.3342 18.1620 10.8305 -3.6184 -11.2472 -16.1533 -19.0561 -21.3742 -19.1215 -7.0133 -13.0322 -12.3255 -25.3663 -7.1992 -4.0950 -0.4752 -0.0397 -1.2923 1.2680 2.1020 -2.0159 0.5678 -4.1475 -2.2860 1.2468 2.9160 3.7433 -3.5078 6.2645 5.1466 3.3947 11.0482 -12.6391 -1.4558 2.6350 2.5261 -0.4261 7.9067 7.3761 10.5050 2.1413 -4.1382 -2.8818 6.9021 5.4317 4.9534 4.5363 -2.8372 -3.4508 -1.0165 -1.6706 -9.0235 -28.0132 5.4483 7.0338 8.8713 13.9617 19.3432 16.5740 12.5536 13.7232 15.1487 4.1979 -4.0767 -8.9863 -10.9482 -13.1722 -11.3412 -7.4945 -4.4916 -3.5707 -22.8865 -29.8879 12.0309 14.2862 17.8716 18.2606 13.3426 8.9006 1.3455 -9.4180 -11.1012 -15.4444 -17.4768 -17.9985 -12.4515 -5.2431 8.8612 5.5913 6.3114 -1.1018 0.2013 -16.7679 16.8689 16.8256 18.5632 14.4683 8.2457 2.7262 1.7491 0.4673 -4.4682 -6.2835 -4.3280 2.1966 -4.4856 -9.6447 -7.5807 2.0175 -9.6747 -9.7002 -3.6650 -24.2978 10.3443 9.5624 9.5859 9.3945 7.7097 5.9502 5.4955 7.0578 3.8970 1.8002 2.9026 0.8300 -0.8072 -3.4283 -8.7861 -9.4681 -7.6897 -10.0581 -8.5829 -25.7097 8.4589 13.9060 18.3570 21.8577 20.8363 13.5168 7.0018 3.5585 0.2984 -4.3657 -7.6435 -5.4526 -6.4991 -0.0823 -10.9834 -14.4890 -9.9873 -4.5713 -15.9935 -27.7237 -2.7942 -1.0695 -0.1214 2.5877 1.5098 1.0893 1.5717 3.2131 6.2989 10.9335 9.8682 8.6743 4.8838 1.8707 -1.0579 -3.7852 -5.7917 -7.6708 -7.9578 -22.2525 25.1784 20.8581 17.0052 12.9557 7.7424 3.9815 6.0072 3.4663 -1.9041 -8.1079 -11.4077 -11.8642 -8.7727 4.7601 2.8284 -7.3135 -15.0133 -13.8178 -7.5999 -18.9821 13.6088 10.9215 11.1892 11.7633 13.2294 6.3264 1.9267 -1.7303 -3.3278 -4.4979 -7.2855 -3.9683 5.3311 -1.6679 -8.5378 -6.9275 2.8396 -8.2151 -5.8206 -25.1573 20.0774 19.5893 17.1250 15.9021 10.2327 5.8537 4.1551 8.7468 6.2824 -1.6643 -0.8142 -5.7458 -5.8553 -6.7971 -4.8129 0.1863 -14.4064 -22.1846 -19.7857 -26.0848 1.9579 3.5459 5.6047 9.8227 17.1510 16.9383 8.2371 2.3829 -0.9137 -2.6491 -2.1733 3.0262 6.5399 -2.8952 -2.9389 -0.9532 -9.2242 -11.9604 -12.7131 -28.7857 2.7147 5.0851 5.9010 8.2492 9.0379 12.5344 15.7585 7.9343 2.8699 -7.6515 -7.5935 -7.0792 -7.0329 -0.2973 -4.1153 0.8146 0.8342 -8.0293 -6.0641 -23.8708 -1.8671 0.2021 1.1744 3.3514 3.8114 4.6535 6.4708 5.5903 4.6873 6.1200 7.1503 10.8820 10.1467 5.0564 -4.0471 -7.0223 -5.8028 -7.0328 -13.2761 -30.2485 14.4582 17.2732 16.2772 7.1332 0.6525 -4.4947 -7.7910 -9.8395 -12.5801 -10.7856 -8.8712 -4.2717 7.2719 0.7198 1.5521 3.5804 -2.9845 0.1717 6.3548 -13.8266 28.6852 25.8888 20.5479 11.1546 4.6177 1.8681 3.9247 1.2950 -2.9240 4.3050 4.3461 -5.4196 -7.8904 -10.2821 -8.2802 -13.9910 -11.2895 -12.5380 -13.7725 -20.2458 6.9489 8.2782 12.9177 18.1269 10.1196 2.5932 -1.2838 -5.9588 -9.0612 -10.7381 -10.6395 -8.4104 -4.0818 7.0965 0.3344 2.1418 2.2817 -3.7137 1.6102 -18.5618 6.2919 7.1483 7.7499 10.3266 12.7585 21.8234 21.7899 13.6697 7.2737 9.3185 13.4418 -0.1530 -6.4198 -9.4554 -7.4143 -12.4542 -21.2295 -24.5545 -24.4585 -25.4529 3.2078 1.1604 2.3820 7.1676 15.6309 19.6735 9.8897 7.8474 10.1305 10.4050 -1.8220 -9.0708 -12.7476 -14.2980 -11.7869 -3.2366 -4.1439 -6.6114 -0.0121 -23.7655 4.9484 5.9562 10.0092 16.2669 12.9260 3.9525 0.4920 -2.9838 -4.7825 -5.0706 -3.0972 4.4166 5.1484 -3.0885 -2.2935 1.8467 -6.6209 -8.5405 -3.2672 -26.2180 9.1190 11.7308 15.3181 20.5759 15.7183 7.6900 3.7341 -3.2723 -6.7161 -9.0437 -8.0703 -0.5930 6.4087 3.5269 3.0413 -8.4178 -14.7425 -12.7049 -6.9905 -26.3121 1.4852 -0.6829 -1.5690 -0.2848 5.5052 12.8631 6.4129 0.4626 -3.5500 -5.4162 -3.9006 -1.4888 7.5205 5.6490 1.1393 5.5204 -1.2344 -6.2194 -3.0728 -19.1390 11.9158 15.3244 18.2371 17.8689 12.9861 8.5734 2.6935 -0.4620 -0.3115 4.3187 1.8359 -6.5328 -11.3944 -12.3343 -10.2127 -3.2123 -10.7404 -11.6243 -6.0915 -20.8377 -1.1406 4.4681 1.0243 1.7567 0.8452 1.0568 1.7113 1.4304 8.2151 0.5703 1.2053 -5.7909 -4.3638 0.9165 -4.5872 3.4354 6.9859 3.9875 -3.5121 -18.2142 18.8171 22.5033 16.7157 10.3549 3.9514 1.6962 -0.6346 -5.9992 -6.8816 -7.3001 -7.9076 -4.3326 4.9348 4.6458 0.9437 -3.5521 -9.3640 -2.4386 -11.4118 -24.7409 -0.9409 0.5904 2.2794 4.9547 5.8743 8.7846 11.0088 11.1838 11.6958 14.1355 8.9116 2.5256 -1.8779 -5.6262 -5.5753 -9.1754 -9.0981 -12.4659 -11.4699 -25.7149 0.4141 2.8215 2.0838 3.1886 4.2216 1.7188 4.6179 2.9704 1.6545 -2.8460 -0.9511 2.6537 -1.8008 0.9825 1.2384 1.5282 -0.7271 -3.0940 -0.8090 -19.8659 6.0430 4.6516 4.3017 7.7179 6.7963 6.2910 8.7476 8.7592 7.7014 12.1586 8.0227 -1.3414 -6.0075 -8.1097 -6.8511 -6.6141 -5.8068 -8.7086 -9.3302 -28.4218 7.1395 6.4611 6.4770 6.5752 5.7360 5.6174 3.8338 -0.3402 -1.9803 -2.2319 -4.1316 -3.2411 -2.2252 4.1950 1.9636 -1.7425 0.5431 -3.5115 -6.8529 -22.2844 17.8843 21.4402 20.6904 15.9517 9.7051 2.5656 -1.5516 -7.4554 -8.8729 -10.2263 -8.6781 -5.1896 -0.7045 -6.7680 -8.2898 -6.9326 1.3954 -3.2208 -6.0504 -15.6928 10.6767 10.3544 18.1231 11.2879 6.1413 -0.3610 -2.4504 -5.1076 -4.9943 -4.9704 -2.3126 5.9757 0.9523 -4.2427 -2.5152 4.9197 -8.3019 -9.0057 0.3384 -24.5078 9.9161 11.8977 18.2327 24.4645 22.2618 14.5543 11.0874 11.6473 16.7269 16.7802 10.9221 4.3259 -12.8739 -20.0422 -22.5408 -24.1296 -20.9142 -22.6765 -24.3668 -25.2731 9.4023 7.3715 11.9062 12.5120 7.0268 13.6459 7.2747 2.8388 14.6515 22.1573 24.2647 6.5863 -1.1334 -12.1075 -18.8356 -21.0343 -18.7149 -21.3705 -23.1378 -23.3040 6.1154 6.8878 8.0486 2.0830 11.4555 24.4875 10.2548 8.5452 8.1934 -4.1865 11.8854 1.3485 1.9895 -14.5678 -11.0286 -3.4615 1.3428 -19.7548 -24.2069 -25.4313 10.3570 12.8522 17.3265 22.8368 16.6859 10.9743 8.2198 6.8557 9.3432 12.2609 5.1561 1.5410 1.3448 -11.6896 -19.8579 -22.4891 -19.3409 -16.0157 -19.9891 -26.3720 -2.2958 -3.0198 2.5524 6.5326 5.0549 2.8939 1.6085 1.4431 -0.1701 -2.0055 1.1867 -1.3016 -2.2987 6.1240 3.0188 -0.9646 2.6135 4.0735 0.2584 -25.3041 3.3425 -4.9398 1.7857 0.9810 8.2974 13.8760 7.3422 4.3951 4.0317 8.9378 9.1371 -1.7588 -9.1168 -12.4667 -12.0238 -9.0772 4.3501 -0.6556 4.4305 -20.8684 2.6724 2.4627 -2.5441 -3.3045 -4.2917 -1.4508 1.5865 -1.0572 -2.1109 1.4870 -1.0006 3.5002 3.7107 1.3794 -1.6261 0.0378 2.0162 0.3261 3.2452 -5.0385 3.1268 4.8784 8.6218 13.5865 14.1019 7.2490 1.4764 0.4142 -1.4440 -0.1256 6.7242 13.6333 7.9001 5.1808 -8.7618 -15.9427 -17.5740 -13.2732 -3.9031 -25.8689 8.7515 17.2518 23.5164 15.7690 8.1574 4.9814 0.5026 -0.4621 -1.5217 2.4458 11.1982 12.8925 8.2107 -10.1894 -18.8969 -20.9839 -19.6436 -9.2705 -7.3159 -25.3934 11.7980 12.1448 14.6065 20.2682 20.5368 14.0544 8.9695 7.1447 9.3182 10.2279 -1.3945 -9.8630 -14.2310 -14.2600 -11.2940 -5.3186 -14.6453 -16.0278 -14.7441 -27.2906 8.3692 9.6882 12.8542 17.3005 21.1340 18.5917 11.2777 5.5517 0.5470 -2.3437 -2.3633 -0.2054 0.7833 -4.4844 -5.7547 -6.4185 -15.2118 -20.9890 -20.6002 -27.7265 3.2540 3.5495 5.6572 11.4443 18.6822 14.2818 7.9623 5.8581 7.6636 11.2380 10.4719 -0.3434 -0.9127 0.3323 -9.6682 -12.3368 -7.0303 -17.5040 -22.5944 -30.0053 10.5668 4.7765 4.8789 5.9385 13.1029 20.5979 14.5257 8.6496 2.4271 -1.1640 1.2029 9.4957 -0.0200 -12.5730 -14.8513 -9.4220 -4.4288 -12.9535 -14.3720 -26.3782 3.6092 2.1429 -0.2581 2.1516 6.0252 4.4742 4.3520 2.9527 3.6102 2.6901 -0.0942 2.2564 1.3309 -0.5758 -1.1090 0.1191 -0.1180 -0.1015 -5.5503 -27.9075 8.4206 12.6530 18.9633 23.9855 21.2540 9.7237 1.5121 -0.7361 0.7545 -1.5581 2.4158 9.9186 6.7278 3.6705 -12.4971 -19.8574 -23.2581 -23.7200 -10.9203 -27.4525 22.1951 16.4633 13.2055 7.4970 2.2280 -2.4528 8.7730 10.6870 4.9929 1.1178 -5.3802 -8.2471 -5.7256 -8.8078 -8.3540 1.5835 1.5054 -11.6521 -13.9564 -25.6726 -7.9053 -6.5840 -6.0103 -4.8986 -4.2425 -4.7462 -6.7261 -8.5401 -8.6906 -8.8402 -5.6306 -0.7673 8.6501 5.0800 13.9798 11.4953 10.0314 17.4290 14.9683 -8.0522 11.9359 8.4098 2.8637 0.1621 4.2653 2.6990 1.2433 -1.9101 -2.5608 -4.4372 -0.7370 5.0345 2.4512 -1.2451 -4.6924 -2.0267 0.3932 -0.7445 -1.8229 -19.2813 -1.3202 3.8184 7.4609 11.6391 16.2849 25.4929 15.8707 1.4126 12.3759 21.2527 8.1587 -3.8943 -14.7860 -10.6930 -17.9239 -16.3824 -1.7644 -13.0054 -19.3451 -24.6522 9.8443 9.9627 12.5201 13.7261 10.3992 6.6290 2.9281 -0.7644 -3.9695 -5.3737 -8.3704 -7.5382 -1.7207 5.7599 1.9410 -0.8146 0.5436 -5.6632 -12.2155 -27.8236 6.4290 4.7082 3.9317 3.1702 -1.6353 -3.6078 -6.3150 -9.1986 -10.3233 -9.8065 -5.8063 -1.3404 -0.7673 -2.2448 -1.2797 7.1795 3.2561 15.5273 14.8629 -6.7401 23.9506 22.1558 17.7456 14.4350 8.3329 3.1023 4.3134 8.6024 3.8015 -3.9642 -10.7800 -9.6229 -10.8860 -10.6376 -8.0083 4.7524 -6.4851 -13.7226 -12.4871 -24.5980 9.5760 11.4366 12.9012 14.4846 16.8425 19.5473 19.7042 15.2736 12.0272 11.0446 7.4677 1.1314 -9.0848 -18.3215 -23.8214 -23.1710 -19.9932 -10.2715 -17.3599 -29.4137 -3.4431 -3.1613 -1.9102 -0.6935 1.3870 1.2966 -1.0892 -2.4642 -3.0407 -4.4927 -5.4209 -4.2773 -0.5358 0.4090 1.2794 5.8990 14.3402 3.7638 11.1512 -8.9972 15.2464 18.8014 25.3166 19.5775 11.0313 6.5896 5.6381 2.9552 5.1185 13.2540 13.6736 8.5584 -8.3365 -15.9401 -20.3756 -21.2859 -21.2275 -19.3217 -15.1325 -24.1407 3.1035 6.1792 5.0462 3.5926 7.0741 6.4046 9.9419 7.7684 4.2113 3.6277 6.5092 5.5900 -1.7178 -6.4492 -7.8871 -6.9582 -5.1379 -8.3058 -10.5436 -22.0490 -0.7280 0.5704 3.9717 5.9469 6.0780 4.0770 1.2426 -1.3458 -3.2314 -4.6819 -6.2378 -5.0198 -1.2080 10.5808 2.6382 3.7712 3.8446 -1.7555 -1.1558 -17.3572 5.3326 5.4267 9.8240 16.2001 13.6887 6.9510 1.1917 -1.6723 -2.5788 -2.7648 2.6931 5.4843 -4.2095 -9.6143 -6.2919 3.6211 -3.8754 -6.5263 -5.2823 -27.5977 2.5771 3.4727 5.4467 8.8349 9.8870 12.1341 12.0826 7.7444 4.5255 0.7889 -2.0382 -4.7604 -5.7542 -4.6241 -2.4718 -4.0958 -6.2797 -4.6267 -9.5398 -23.3031 14.7846 16.0256 18.4400 18.7731 12.4129 9.2087 4.9463 5.2837 7.9434 9.1983 5.6775 1.0431 -7.1678 -12.3799 -13.9635 -9.4290 -13.5075 -18.2553 -21.2672 -27.7670 14.0860 12.6160 17.7362 22.8480 13.2766 7.4189 5.7487 1.8704 2.3287 6.7312 16.7040 13.9396 0.1199 -14.2720 -18.2397 -22.3862 -24.8172 -19.6941 -10.4326 -25.5823 1.2702 -1.2740 -3.7100 -0.5628 -4.5219 -4.4580 -7.7100 -8.3547 -7.0524 -3.3805 -3.0927 1.9780 6.7217 16.8392 12.2288 6.1018 4.3647 3.7046 7.0648 -16.1569 -1.5691 -0.6625 0.8145 2.7114 4.5683 6.3808 5.3169 3.3697 3.7409 -1.1329 1.3502 1.4333 7.1092 8.0819 7.4140 -0.3489 -3.5222 -5.2023 -8.9373 -30.9159 8.8791 11.5486 17.4354 21.9590 18.7721 13.0614 12.3597 15.8383 7.9901 -4.7504 -11.1404 -17.0402 -20.1418 -20.5768 -16.8543 -10.2710 3.5082 1.5897 -6.0317 -26.1349 1.4924 2.3041 3.6995 3.9735 2.9478 1.4182 -0.1153 -0.7081 -1.6935 -4.7155 -3.8966 -1.0552 4.3924 3.5582 4.7903 3.4573 4.4498 3.7588 -4.9783 -23.0800 19.7104 23.5312 26.4663 21.1276 13.4352 11.0142 11.5216 12.6431 11.6620 1.8352 -2.6313 -2.1531 -10.9044 -16.4683 -19.1821 -21.4207 -21.6631 -20.6795 -14.5440 -23.3003 -7.3825 -5.1236 -2.0803 -0.3985 -2.1515 -3.3191 -2.5398 -3.6553 -4.6673 0.2450 -1.1380 0.4163 -5.0235 -3.1123 1.6781 0.5456 9.2542 19.9831 16.2303 -7.7611 2.5108 2.1845 2.6268 3.2213 4.7277 4.9151 4.4068 2.5115 -1.2667 -1.0470 -0.5840 3.1980 11.3786 3.1343 -1.5396 -0.7790 -4.2909 -5.9553 -4.0558 -25.2973 1.3099 3.8149 5.9305 6.0290 6.2561 6.5634 6.5483 2.2558 2.8164 5.8479 6.7553 3.8567 2.7371 -0.0626 -3.8527 -5.1436 -5.5124 -7.3236 -9.2045 -29.6219 6.9414 7.8896 11.9174 19.4391 22.8159 17.5130 12.8967 11.7403 13.3801 0.6255 -8.6365 -13.1338 -15.0777 -14.1269 -8.2615 -12.9862 -16.1846 -10.2908 -1.8314 -24.6297 13.6675 18.7539 23.7644 23.5665 14.5584 8.2788 5.9566 3.8037 5.8231 9.3954 3.8096 -3.7071 -3.0809 -2.7965 -15.3910 -22.2338 -22.7083 -19.7578 -17.2327 -24.4698 6.8878 4.6215 4.0830 1.7534 6.3161 9.3030 9.1793 1.8539 -3.8953 -6.2684 -7.2830 -6.1167 0.8013 5.3564 -0.9241 -2.6976 1.7576 -1.1627 -4.9125 -18.6528 11.5366 9.1379 9.1023 13.3107 15.2931 8.4262 2.0019 -1.8545 -5.3470 -10.4980 -13.1650 -8.7617 -2.8037 6.5213 -2.9746 -1.1653 2.8950 -3.9002 -0.4074 -27.3478 8.1149 5.2054 4.7193 10.9119 14.2393 9.7159 2.7743 0.0628 -0.9042 2.5046 6.2675 4.5297 -1.7121 -2.7212 -6.4591 -8.2032 -12.1525 -9.7960 -4.5542 -22.5432 10.4270 10.1489 7.8411 6.9092 5.2675 3.1553 3.1860 0.3063 0.4719 -0.8710 -0.6868 -1.1505 -4.6137 -2.9984 -2.9661 -2.8540 -3.0302 -2.2057 -5.9823 -20.3547 16.5991 18.8180 20.4139 16.0812 15.2582 13.6000 9.7730 4.8200 7.2670 0.5444 -5.1929 -8.9752 -12.2178 -15.2451 -9.0857 -9.6324 -11.9042 -7.0554 -15.8485 -28.0175 6.9984 7.5807 9.7172 14.2935 21.1422 18.8026 13.0729 13.6068 15.6061 5.7873 -4.4176 -10.6630 -14.9625 -15.2760 -12.1485 -4.9859 -13.8661 -15.0801 -8.9505 -26.2577 4.8529 5.9107 5.9519 3.1046 -0.7986 -3.8000 -3.3218 -6.5949 -9.5964 -7.6925 -7.0336 -3.5031 2.4411 -0.1901 9.1699 13.0532 0.4243 10.9470 3.0406 -16.3654 2.3975 0.4924 3.8005 6.1460 0.9043 2.1381 -0.0106 2.9239 -11.7677 -3.8359 -3.4925 0.8716 3.4740 -2.8287 -3.8786 1.2858 6.8931 -2.1701 3.3894 -6.7326 -3.5428 -1.3900 0.9285 2.4806 2.9675 0.7980 0.9612 0.2854 -2.0562 -1.3222 -1.9025 -0.0059 8.6474 4.6327 1.6964 0.3984 0.9512 1.7069 1.4812 -17.7159 17.4798 18.9995 21.9699 20.6967 14.4015 9.2408 9.2963 4.6834 -0.5765 -2.0466 -4.6870 -8.1340 -10.8400 -6.9387 -4.9129 -2.3346 -9.5282 -16.6374 -22.8620 -27.2700 30.2051 29.0816 22.7010 15.9702 13.2347 12.3034 7.9736 1.7110 -2.9050 -5.8220 -9.0457 -11.4933 -10.9824 -10.7128 -9.7198 -11.4470 -12.1083 -14.3720 -14.3489 -20.2236 4.3667 5.6948 7.6382 9.1345 7.9965 5.9946 4.8983 4.5838 1.3099 -1.1182 -2.4032 -2.5986 -0.3123 -3.8248 -3.3874 -4.6492 -2.5381 -4.1010 -4.4278 -22.2567 13.3799 15.9919 18.2801 18.5738 14.5051 15.0610 12.6361 1.8684 -4.4789 -7.5763 -7.3687 -5.7285 -8.7693 -10.0970 -1.0795 0.7696 -6.5956 -14.5402 -16.2583 -28.5735 1.2989 -0.2985 -0.1264 2.2528 6.1919 9.0850 11.5888 9.6084 6.4565 4.6999 3.8291 -3.1433 -2.0178 -5.4377 -3.5892 -2.4088 -3.4525 -6.5279 -6.8848 -21.1245 6.6990 6.9952 6.9900 10.6461 18.1760 23.4925 20.7738 19.3068 14.5258 4.1679 -5.0313 -10.5967 -15.7569 -18.7535 -19.3572 -18.4953 -9.1098 -8.3084 -3.5080 -22.8561 0.3614 -3.0919 -2.2049 0.2924 3.5194 12.3203 10.5339 6.5081 2.9888 3.7587 9.6208 6.5139 -3.3458 -8.5883 -8.7468 -4.7300 1.1707 -5.5824 -3.0982 -18.2001 3.6833 5.1669 7.0034 5.1138 6.2451 5.1324 2.9024 -0.2756 0.6913 0.7688 2.7471 -3.0081 -4.2841 -1.6790 0.6913 -2.2915 -1.1739 -2.5591 -2.7007 -22.1738 11.4726 11.0663 10.8078 10.4446 10.6033 12.3965 13.0646 7.6243 1.8855 -2.1733 -3.8981 -0.7658 2.9887 -2.4982 -10.2150 -14.2533 -12.1696 -5.4330 -8.3400 -32.6080 -6.7179 -4.6131 -3.1636 0.0876 0.6888 1.0614 0.5541 -3.5030 -3.5922 -2.2597 -0.8136 6.0096 11.8925 2.9252 -1.1450 -0.4619 -0.0294 2.9522 6.4894 -6.3616 5.3482 3.7310 5.0957 3.1029 1.6780 3.1184 0.5161 -3.5018 -4.5034 -6.3519 -7.8639 -5.6580 -5.1767 -2.3928 0.1325 3.3098 7.8210 11.9881 4.4190 -14.8118 8.2697 5.8835 6.0215 10.4427 12.0342 7.5709 3.5443 -1.0166 -4.1313 -6.5619 -5.0660 -0.8575 7.1102 -0.6052 -4.0956 0.6756 0.8926 -4.2551 -6.4788 -29.3772 2.0192 3.9566 4.9448 8.0890 14.6263 15.3545 12.2775 10.3302 7.2993 12.5826 7.7803 -2.3944 -7.4949 -10.2984 -9.7837 -7.3581 -7.2692 -6.1954 -16.7366 -31.7295 12.8428 15.9200 16.2497 11.8540 3.8000 -1.0057 -2.5059 -6.5320 -8.3900 -9.9165 -9.6596 -6.0113 1.0447 13.8469 7.3566 -4.1906 -11.0801 -8.0052 3.2361 -18.8537 17.2020 18.6360 23.3502 20.5862 15.5823 12.7495 6.4445 -6.6661 -9.1710 -15.5663 -21.8272 -18.4838 -16.7082 -14.2582 2.8891 3.6115 -0.4823 -0.0577 2.5754 -20.4057 11.2405 16.2045 19.5245 19.0279 10.8160 4.2621 0.0074 -4.8018 -7.7494 -9.5065 -10.8518 -10.4718 -6.2617 1.5892 9.5055 4.0459 -4.2300 -9.8946 -9.4119 -23.0441 21.5981 16.6548 9.2131 4.2901 -2.7752 -6.0814 -5.7172 -6.8518 -5.3057 -3.6255 1.9348 7.8994 -1.3260 -8.0365 -10.6481 -6.5275 -3.0468 3.5257 5.6627 -10.8371 2.3529 1.9098 1.1705 -1.0129 0.2322 -2.1724 -2.7849 -0.3004 1.1108 2.9625 0.3261 -2.0946 1.0272 3.4696 1.9753 1.1513 2.4885 2.1442 0.7739 -14.7298 -1.7003 -2.4848 -2.4346 4.7038 24.9669 27.0962 7.9463 4.7152 0.1920 -0.8991 -0.8489 9.9068 -2.4800 -9.4907 -11.9321 -1.8570 -6.2441 -11.0862 -11.2891 -16.7804 14.9206 17.9220 23.4494 28.4771 23.9338 22.5858 21.7793 9.3991 -3.6346 -10.2702 -14.3748 -16.3264 -19.3026 -18.4585 -17.3134 -12.2710 -10.5930 -10.9994 -7.9141 -21.0092 10.8472 9.9985 8.1012 5.6373 0.7372 0.0745 -0.8638 -1.7933 -2.9142 -3.0150 -2.2427 -0.7782 -2.5201 -6.2197 -5.1933 0.2777 -5.0155 0.2927 4.1108 -9.5213 11.2774 17.5024 20.7927 14.9512 8.8893 5.3831 1.1126 -0.5407 -1.8226 -0.7548 3.8991 14.1917 11.4189 -2.2812 -13.1711 -17.2396 -15.8893 -13.7806 -15.9376 -28.0009 -1.8142 -1.3801 -0.2831 1.3820 1.7722 1.4623 -1.2023 -3.2113 -5.2345 -6.7523 -4.9565 -2.8637 4.0779 -2.6764 0.8821 14.4958 8.5614 4.5439 7.9060 -14.7091 10.5077 13.8832 19.5676 20.8530 17.7078 12.7109 11.5269 8.0218 2.2318 -5.7244 -10.1683 -12.8120 -14.9230 -10.7023 -2.0109 -8.3963 -10.2008 -5.4032 -10.7793 -25.8902 -0.2509 1.3469 0.6421 2.6377 6.0659 4.3721 5.3520 3.9824 -1.7069 -2.0895 -5.2191 -1.5370 -3.3737 1.3384 4.0383 10.2321 1.6548 -3.2413 -5.1470 -19.0973 6.4953 9.3365 14.1057 20.6271 16.1168 7.3580 1.4929 -2.7587 -4.0681 -3.9748 1.3672 8.9105 -0.9200 -5.3133 0.3345 -6.1299 -12.7503 -9.3229 -13.4612 -27.4454 0.6201 2.4328 4.9760 9.2545 15.4025 12.2971 5.7680 5.0077 4.0499 4.2155 9.7060 7.7493 5.8274 0.3852 -5.9984 -11.5236 -7.3050 -10.3504 -20.7971 -31.7176 -3.7294 -1.4413 -3.7524 -4.5904 -3.2743 0.7360 -3.2763 -4.8007 -0.6213 4.9030 10.4614 11.0474 17.3494 -0.7763 5.4732 0.7769 1.2498 -0.7639 -2.1070 -22.8638 6.7163 9.2255 12.3187 17.6924 17.6404 11.8940 7.0991 4.2645 4.3021 9.9874 5.8382 -3.4579 -6.9519 -4.8090 -2.1538 -14.0697 -18.7474 -17.3320 -11.2745 -28.1824 14.7156 19.4663 14.7897 6.5422 1.1728 -2.3524 -4.9286 -7.8168 -8.8525 -9.4747 -10.7274 -8.5129 -4.4565 7.8312 0.0283 4.0451 1.6338 -1.3894 4.4306 -16.1441 19.0680 22.0875 24.6110 22.0341 17.3706 15.8785 14.1658 11.9508 4.4308 -1.1373 -6.4223 -10.3244 -11.8572 -13.5064 -14.4779 -15.1004 -15.5216 -16.8251 -22.0101 -24.4145 9.0336 19.0176 24.4867 24.6758 18.9461 11.7838 7.6427 4.7750 1.2864 0.4513 1.8155 -1.2592 -9.2086 -14.2929 -15.7555 -13.6408 -7.7748 -14.5157 -21.5902 -25.8770 1.4827 0.2805 -0.3810 1.4732 8.2340 8.1707 10.0600 8.3087 4.1212 2.7249 3.5821 7.9718 3.7426 -2.6511 -5.3909 -4.4519 -4.5293 -6.7232 -8.9602 -27.0648 10.5705 10.6700 11.7791 12.1925 10.0236 6.6964 5.1163 2.6148 4.7648 2.5521 -3.9125 -7.4628 -9.6721 -9.3307 -9.9466 -8.0895 1.1968 -3.8200 -3.4846 -22.4580 7.5905 8.3863 11.5587 16.2565 22.0088 23.0422 17.8049 13.1018 17.1694 13.5769 -0.2381 -1.8062 1.5806 -10.3901 -20.8106 -24.7914 -25.0524 -24.3552 -19.3769 -25.2554 7.3275 11.6160 16.6781 15.5131 8.1538 4.8147 -1.7134 -2.9599 -6.5688 -7.0695 -0.9248 5.3367 -4.5080 -7.1758 -3.4270 -3.5021 -8.7907 -5.2842 1.7479 -19.2635 8.6994 13.7488 20.2706 15.6056 8.0300 2.7906 -2.4915 -6.3762 -9.0577 -10.4892 -11.7811 -10.7422 -7.7494 -0.3422 10.0858 3.8928 3.9680 -2.0796 -2.0561 -23.9265 -1.8066 -1.3696 1.0493 1.3711 1.9691 1.1999 -1.8646 -1.9643 -1.7749 -1.3390 -3.3717 3.1526 1.2109 0.7990 0.4966 2.5531 3.3704 2.3429 4.9229 -10.9469 4.0689 7.4175 12.6940 18.0600 16.5869 9.3259 4.5282 2.8636 1.6428 4.7328 12.4121 9.1212 6.2302 0.0152 -12.5596 -17.7355 -18.6999 -12.7970 -17.6503 -30.2571 0.8292 2.6495 1.8804 4.1439 5.6667 5.7021 4.9475 6.8868 6.7950 8.0289 10.5666 8.6874 1.8534 -2.2297 -6.3646 -6.7900 -8.1505 -9.3082 -10.0423 -25.7522 7.1022 3.8236 1.8946 4.4230 4.7840 4.6315 5.8219 2.7914 1.6501 0.4344 2.2205 4.0071 0.0326 -2.6285 -2.5436 -3.5874 -3.6688 -4.2155 -7.0087 -19.9643 0.1242 12.2019 4.3084 4.2478 1.9093 0.6288 1.1102 1.5269 2.2918 5.1362 2.1955 -5.7687 1.1936 -1.4469 0.2971 -4.6605 0.8522 1.2017 -3.9848 -23.3647 -5.1159 -1.2775 2.5260 4.1265 3.4097 -1.7194 -0.8844 -1.4795 -5.4958 -6.8537 -1.5398 0.9661 -2.3240 -4.8943 8.2925 3.4432 -1.7853 6.3100 13.4410 -9.1454 3.9898 4.3777 4.2357 3.0453 3.7447 2.5019 1.1011 -0.4780 -2.4003 -0.6497 0.8291 0.2117 0.0985 -0.2133 0.3830 -1.7850 -1.0322 -2.1328 -1.6069 -14.2203 11.3622 14.7416 16.8859 15.0883 9.9488 8.7692 4.3995 -2.0242 -2.6878 -1.0092 0.7764 -2.2298 -4.0840 -8.1165 -6.2525 -5.2064 -7.0092 -6.7164 -9.2528 -27.3833 3.6579 2.8996 4.0461 8.3701 17.0082 23.3625 16.2578 7.1955 17.3887 6.3999 -4.2883 -9.9015 -12.7556 -12.3388 -5.4680 -10.3674 -10.9476 -10.1432 -6.0175 -24.3585 7.5312 5.8939 4.3265 4.0014 2.9087 1.6542 2.9601 3.9087 1.3700 -2.9778 -0.8059 -0.8752 -0.9920 -0.8125 -0.8336 -0.0306 -2.6451 -2.7999 -4.2986 -17.4834 15.3876 20.0855 22.6771 20.6277 15.1509 8.8202 3.6289 -2.1904 -8.5688 -13.1818 -15.2549 -15.0083 -12.7233 -8.7307 0.5974 4.3829 -2.2770 -0.0304 -7.8902 -25.5026 23.6589 23.2539 20.3520 15.1761 11.4144 5.8059 5.4712 1.3160 0.0827 -2.4308 -7.0613 -6.1765 -1.8534 5.6004 -1.4387 -15.4564 -17.3870 -18.8680 -17.3832 -24.0763 11.6709 14.1123 21.1753 25.8068 20.7082 14.0630 14.1588 17.9220 14.6153 4.8179 3.3194 0.4690 -11.4997 -19.1991 -21.5666 -21.4213 -21.1902 -22.3547 -22.1566 -23.4508 4.6799 3.0606 1.6539 6.2007 -2.0201 3.0954 0.5569 3.2707 1.3312 0.0725 1.8286 -5.9667 2.6570 -0.0978 -1.2174 -2.2597 0.2234 1.4765 -4.2077 -14.3379 9.3104 11.8578 14.9832 13.1906 8.5578 4.2616 -0.4942 -3.0677 -3.2171 -5.1322 -1.7298 6.6384 -0.8475 -8.0712 -9.5863 -5.8386 2.6610 -8.3104 -6.0285 -19.1373 2.2896 3.8587 4.9224 8.6357 13.9236 17.8222 15.7427 11.5211 7.5272 9.1679 9.7247 5.7451 0.5275 0.3504 -6.2281 -12.9212 -14.0843 -20.5964 -26.6432 -31.2855 18.9039 18.0327 13.6297 9.7561 7.4319 5.3744 2.9646 1.7415 0.6716 0.6859 2.7446 0.5342 -4.3187 -6.1877 -6.9311 -9.8734 -11.9041 -9.1281 -8.9591 -25.1690 6.4513 6.7843 9.4438 12.9549 16.4801 14.9093 8.2954 1.6877 -2.5193 -4.4922 -6.7348 -6.9853 -4.6783 0.7181 1.0483 -5.1128 -1.1161 -7.5305 -12.3980 -27.2058 codec2-1.2.0/src/codebook/train_120_2.txt000066400000000000000000002650071445607075400177340ustar00rootroot0000000000000020 512 -1.2668 -1.2477 -0.0681 3.8419 -0.0693 -1.7919 -1.5943 0.8402 0.1550 -3.1526 -3.0204 0.7337 -0.2603 1.6590 0.0230 5.5893 -2.4959 1.9604 -0.6348 0.7999 2.6673 1.4923 1.1408 -0.7478 -1.0755 -1.3421 -0.4884 0.2535 0.2951 1.5088 1.9447 -2.6620 2.3751 1.5298 4.1357 -6.5630 -2.1766 -2.7535 -0.7706 1.2362 -0.6415 -0.4348 -1.2178 -0.9870 -1.1057 -2.1421 -2.3594 -0.4977 -4.1484 -4.7120 5.5425 3.0695 3.6610 2.9729 2.4379 -1.6136 -1.3052 2.1342 1.9164 -0.5692 1.5930 -1.1175 -1.2476 1.6203 2.5315 2.3427 -0.5223 -3.1063 -2.1739 -1.4774 -2.6108 -3.5842 -0.3828 -0.1511 0.8929 2.5717 -1.7657 1.8954 6.0193 -1.3272 -0.2102 -0.3681 -1.2724 -1.1520 -0.3715 -0.5633 -2.5238 -1.7680 4.7356 5.6452 0.8620 0.8750 -0.8932 -1.5918 -1.4047 -0.0720 -0.6080 -0.7876 1.3972 0.0717 5.1178 -1.5391 -4.2881 -1.9745 1.3515 2.4014 0.9329 3.4647 -2.4062 -0.4224 2.8708 -1.6053 -3.1492 -2.6783 -2.6937 -4.4645 1.8599 -0.5456 3.8910 3.8770 -1.7119 -1.0101 -0.5002 -1.7849 -0.4884 0.2279 -0.8335 -1.0083 -1.2819 0.1129 -1.3674 -1.3338 0.9290 3.0765 2.6339 3.5627 -2.2713 0.6565 -1.2099 3.6022 -1.5938 -1.3264 0.9856 2.8765 2.3700 1.2528 1.2586 -1.2453 -1.3974 -1.4988 -1.6309 -1.2183 -0.1625 -0.8690 0.0030 -2.0081 1.3580 2.9585 3.3396 -3.4520 -1.3680 -0.6304 -2.5755 -1.2397 4.9487 2.7251 1.4675 -0.1832 -0.3932 1.4723 1.7410 0.6216 -1.0849 -0.7112 -0.3751 -1.7539 0.1222 1.9858 -0.5248 -4.2444 -1.2786 -0.2384 0.6718 2.9763 -1.6959 6.4607 -3.9459 -2.0560 -2.7306 -0.2583 0.0389 -3.6271 -4.0721 0.8260 0.8112 2.8769 2.2400 0.5444 0.3571 2.0995 2.5196 2.3359 1.6620 0.6250 -1.0528 -0.9133 1.8668 1.2853 1.4368 1.4676 1.1301 1.3664 1.1076 -3.2853 -0.4530 0.4467 -4.7302 -3.8149 -3.9866 0.9865 0.1738 1.2940 1.3514 -0.3684 -0.7078 -0.2329 1.3467 -1.0678 -0.0262 0.2448 -0.8418 -0.3910 2.7415 2.9948 -4.5965 -0.1192 0.2496 0.4684 0.0669 -2.5805 0.2482 -1.3236 -1.4810 0.9433 3.4287 2.2233 8.9344 -1.1138 0.4585 -3.7470 3.0416 -2.7394 2.2880 1.6598 -3.6439 0.0633 -2.7363 -1.2617 -3.1924 -2.0500 1.4672 -1.3248 -0.5511 1.4512 -0.4710 -1.2381 2.9453 -2.3244 2.3249 -2.1969 0.9414 -1.9926 0.5254 0.0792 -3.2076 -2.4140 3.5291 3.5738 -0.0613 -1.0556 1.5560 0.0091 0.0770 2.8542 -1.4594 -2.0102 0.5440 2.8119 -0.2925 -0.7111 0.9589 -1.6923 -1.8606 1.1040 -1.6733 -0.0895 3.6894 2.7628 -6.9922 0.4138 -1.5539 0.6820 1.4458 0.4297 -0.4115 -1.3266 0.5024 -0.6975 -0.3820 1.2840 0.9597 -1.0561 2.2198 0.1292 1.4343 3.0313 -3.9845 0.6776 0.3380 -3.7217 -2.0283 -1.5216 1.0103 4.8788 3.7028 4.4000 -0.3076 2.4853 2.2296 -1.5213 0.4360 -5.9903 -2.6578 -2.3985 -2.0127 1.3737 -3.7950 2.3105 -0.2099 -0.3839 -1.7339 -0.9861 -0.2078 -1.2579 2.5808 -0.9255 3.2388 1.0999 3.6754 4.6424 1.9111 1.4716 2.7531 -0.2725 -0.3573 -0.5392 -4.2109 -6.4662 -2.3713 -2.0442 0.7177 1.4094 0.7205 6.8683 1.7836 7.1562 -2.9368 3.4036 -0.6064 2.3377 2.8714 -7.0408 -9.7129 4.1278 -3.4444 -5.9919 5.5073 -0.8996 -7.5142 1.2434 0.8042 1.5886 0.8754 -0.4378 0.2336 0.0424 -0.1245 0.0847 0.6402 2.6508 1.6375 -3.2393 -2.2823 -2.1435 -1.5628 0.4271 2.2571 2.5048 -1.5933 -2.3629 0.6292 1.1956 0.8357 -0.8634 -0.1796 1.8589 0.6940 2.8309 2.5569 -0.4253 0.2913 0.7772 1.4180 3.4210 -1.9468 4.2236 -7.3361 -3.7802 -3.5980 -2.6029 1.9034 -0.7126 -2.3343 0.2344 3.6545 3.9405 3.0203 0.1937 -1.1906 -1.9012 -0.6667 -1.2590 -1.1021 -2.6650 0.1400 -1.4183 -1.2342 0.0547 0.1519 1.1906 -3.6125 -2.2485 -1.0820 -1.9912 -1.1521 -2.2527 -2.5383 0.9320 1.1572 2.0230 1.6579 1.3763 6.4432 2.1652 -2.0259 1.9724 3.2824 -0.4615 -1.1909 -2.4539 -1.1530 -2.1790 -0.7355 -2.0941 0.6246 1.7502 -3.3266 -3.4374 -2.6486 -2.2938 0.9286 1.3396 -2.1323 0.2739 1.2664 4.4111 1.3864 3.9050 2.8286 1.2861 -1.9752 0.7423 2.4137 1.8854 -1.1393 -2.5802 -2.9355 -3.6740 -1.8244 0.3099 6.1403 4.6215 -2.0636 -3.7172 -0.9400 1.4240 -0.3669 2.0205 0.6217 1.0369 -0.1561 3.9621 -1.3649 0.2912 3.5366 0.8537 -0.9376 -3.7333 -6.5447 -1.2107 3.3183 2.5758 1.9693 -4.8690 0.6212 0.0985 1.5746 0.2433 -2.6173 2.3890 0.6849 -1.1521 -2.0382 -0.8953 0.8771 1.1996 -0.9704 -1.3679 -1.1460 0.0582 0.2636 -1.9785 0.5235 1.6427 0.6362 0.7411 5.6052 -0.3533 0.6579 -2.9883 0.5989 -3.9928 -2.1937 3.8742 2.0056 2.3132 -0.4478 -2.0855 -4.3607 -2.1260 5.3544 1.9827 5.3407 -0.8346 -2.4624 1.1729 -4.3825 0.7623 -1.9429 1.4240 -3.3103 0.0394 2.0113 2.6733 1.2484 -0.2186 0.1156 -0.4856 2.4501 0.8179 -1.1164 -2.1952 -0.9719 2.0728 0.4002 1.1891 1.7518 -1.2571 -3.3136 -1.9012 1.8860 6.9767 2.4311 -2.0414 3.9100 5.5378 -1.7478 -0.8304 2.8523 -1.4075 0.1309 1.8232 -2.8868 -7.5003 -3.4867 -3.2756 -2.8584 6.2611 -7.4682 1.6940 3.5074 1.3392 1.0862 2.9814 0.8158 -2.6160 -2.3837 -0.8255 -0.1595 2.0087 -2.8876 -2.4727 -1.3574 -1.2864 -1.5711 -1.0772 0.4648 2.7262 2.1044 -0.3970 -0.1430 -0.9788 -2.1195 -0.7774 4.0804 3.7123 1.5082 0.2869 -2.5968 -2.0127 1.5147 3.7486 3.2447 0.6959 0.3308 -2.4516 -3.4598 -4.1669 -0.6870 0.2709 0.0724 0.3235 -1.9536 -2.7454 -3.3392 -1.9023 -1.0150 0.7511 -0.0539 -2.8386 5.2737 5.1053 1.4372 1.4046 1.4504 2.4912 -2.6526 -0.6188 -0.6530 -0.5369 -6.9550 1.3233 4.3542 2.9502 0.9929 -0.1186 -0.8657 -2.3452 3.5061 2.8348 -4.1741 -4.1264 4.6970 3.0117 -0.2849 -8.0081 3.4452 0.7819 -2.7443 1.7251 -4.0878 -0.8849 -4.7521 5.0067 -3.3510 -4.8233 -6.6328 4.8752 -0.7474 3.8614 2.6271 0.9119 1.0371 2.2968 4.3160 -3.7042 0.9900 0.4960 4.7952 -2.2300 0.5901 2.0654 1.7824 -0.5570 0.4874 2.7659 0.8232 -0.1306 -0.6795 -1.3143 -1.2480 0.9969 2.0563 0.1625 0.7346 0.0223 -1.6836 -2.9087 -4.1058 0.1406 -0.5074 -0.8373 -0.8579 -0.0460 -0.0854 -1.4221 -0.6935 2.5302 2.2014 2.2225 0.5896 1.2715 -0.7624 -2.7997 -5.3296 4.0372 3.2176 -1.4146 -1.3705 0.0565 -3.8190 -1.1051 1.5169 -0.5542 -1.5591 0.2921 -2.1144 1.6664 2.8275 0.7745 2.6977 4.4021 -0.2010 0.0685 1.3158 -0.8045 -5.9834 1.7874 -2.1592 0.9509 0.6749 -0.0635 0.3751 0.6561 0.4718 -2.3144 -4.9191 -3.0907 0.5499 -0.3498 1.2370 2.6699 1.5353 1.6809 1.2117 -1.3733 0.0977 1.3610 0.0102 -0.4207 0.8139 -2.9454 -1.1694 1.1826 3.5742 4.3331 1.4143 1.7017 -1.2428 4.8459 -4.4642 -0.0684 -1.7273 -0.1932 -2.6041 -1.4272 0.2873 -0.9676 -0.1422 -1.2013 -1.8690 1.2475 -2.8884 -0.3842 -0.3588 2.7759 -2.0060 -2.2023 -2.6599 -2.5791 -3.1221 3.2645 1.8131 2.8630 6.3144 -4.2619 0.7589 -0.7608 4.8657 -0.8104 2.3449 0.3057 -2.2411 -1.3084 0.6572 -0.3790 0.2674 0.5337 0.4996 0.8832 2.3616 3.9339 4.7846 -2.7473 -0.5167 -0.0864 0.9288 -4.3018 -4.0903 -1.8294 2.9658 2.7467 -1.9276 -4.0009 -0.7257 -0.6616 -2.0255 -1.2898 0.3022 1.5810 3.0521 2.5790 -3.2369 -0.4791 0.4455 0.1138 1.1032 0.9003 -1.5708 0.1285 5.2204 -2.8190 0.8203 0.5992 -1.3205 -2.1549 5.0256 -1.6050 0.5506 -2.8092 -0.2831 -1.6376 -1.8233 -0.0177 2.5319 2.0586 0.9166 -1.5417 -0.3071 -1.4039 0.1090 -0.1359 -0.4821 -0.5060 -1.1903 -0.1205 1.3010 0.0989 0.2280 1.3298 1.4648 0.7280 0.0076 -1.4837 -0.1633 1.2525 0.9437 -0.0019 -3.9783 0.5988 -4.0941 -3.4220 0.4966 -5.4678 6.0636 1.1749 -0.1830 3.3518 3.5480 1.4243 2.5791 -5.9065 -1.8723 -1.6703 1.3990 6.8845 1.8643 -1.2344 -3.7475 -1.1880 3.5819 1.2282 -0.2187 -0.8194 -0.0683 0.6784 0.9405 -0.1871 -1.0635 -2.3089 -1.7476 -2.3377 -1.8039 -0.2123 0.7402 0.8810 0.7063 -3.8015 4.2698 1.5426 -0.7508 -2.5319 -1.4606 1.0638 -3.8848 1.2060 2.6878 -1.2315 -0.1629 -2.2730 -3.3361 -1.6208 1.9855 3.4308 -0.2120 -1.4559 -0.3738 2.3568 2.3629 4.2004 1.5564 1.6137 1.4225 1.6668 1.3266 0.0460 0.1831 -0.3664 -1.4348 2.5690 2.2918 1.6955 1.6680 -1.3807 -1.0884 -1.0980 -0.5844 -1.0295 -3.6955 -5.3616 1.7128 -1.8066 -4.0653 -3.8214 -0.9531 3.4797 0.7961 -2.4955 -2.7851 0.0025 0.7872 1.0652 1.5456 -0.4352 1.9173 4.6258 0.3691 -0.1501 -0.2351 0.4458 -1.6777 -3.1299 -1.6947 -1.1535 -2.1999 -3.2226 -0.9846 -2.1533 -0.6467 2.0938 2.1307 2.9065 1.5181 3.0875 0.0486 -0.2157 1.3461 0.7741 2.7320 0.4413 -2.0098 -0.0651 -1.1313 -3.1454 -1.8173 0.4664 2.3278 3.1806 -3.0726 -1.5969 3.6994 0.6478 -0.6833 1.0635 1.1405 6.7102 -4.8934 -4.2029 3.4752 -0.0933 3.0911 3.1320 3.6764 1.2247 2.0977 -0.4399 -3.9470 1.4276 -0.2596 0.5511 -6.4999 -0.9385 3.2215 1.7397 -2.0786 -2.6160 -3.0150 -2.0586 1.9218 -0.2304 0.5955 -0.9572 -3.8115 -1.2133 0.9600 3.0247 8.6360 5.7851 6.1244 0.7094 -2.4410 -1.1712 -1.7901 -3.5399 -2.8318 -2.5468 -4.9596 -0.6022 0.6141 -0.5845 12.5835 1.8094 0.1352 1.7718 0.9427 -1.3690 7.1277 0.0421 -2.3404 -4.6650 1.4653 -2.4880 2.6056 -10.3828 -8.1067 4.1108 -1.2481 -1.8330 -2.7827 2.6214 2.9658 -0.2617 0.2806 -0.2164 2.8550 1.9755 -3.5301 -1.2350 0.9311 0.8713 -2.2265 -0.6005 2.6386 2.7666 -2.3603 -2.5163 1.6854 1.0161 -7.8883 2.8489 -0.9445 0.6006 -1.3214 -5.0651 -2.1702 -0.0289 0.1003 2.2883 0.0424 3.4686 2.0494 1.6327 -1.6152 0.1220 -2.8666 -2.2261 4.9579 -2.2581 -2.7323 5.9663 -1.3666 -0.2364 -0.3999 -0.9988 -2.0227 -0.0610 -0.5411 -2.2113 -0.2283 -1.7150 1.0239 4.2760 1.9603 -3.0526 -2.5894 0.8611 5.2528 3.4951 -2.2336 0.7875 4.7609 3.7023 0.7955 -3.1291 -1.3671 0.8798 -0.9947 0.2668 0.5762 -0.9479 -4.5541 -0.6922 0.0699 -5.8412 4.2302 5.0652 1.3544 -2.4661 -0.6224 -1.0865 -2.6815 -0.9958 1.6109 -1.7618 -2.5561 1.0357 -1.5863 -2.2811 3.4491 1.1806 -0.2855 -0.1380 -0.0202 5.6861 0.8289 -1.0913 0.5986 -1.1493 3.2455 -3.0884 1.7353 3.1908 5.0898 -0.4602 0.0751 -2.1427 -5.0910 -3.1667 -3.3291 1.9531 0.4802 -4.8101 2.2518 2.4380 0.6439 -7.3548 -0.0689 1.8997 5.7170 0.9491 -1.1588 -3.1119 -3.4525 0.2538 1.3345 -1.0500 -0.3870 -0.0472 0.1522 4.0806 2.8886 3.8741 -1.9507 -2.9183 -0.3828 -0.0805 0.4136 1.1466 -3.1863 3.5818 -4.1654 -5.7362 -5.0041 -0.9889 4.1884 4.8135 1.5658 -2.3781 0.8425 7.5151 7.3977 3.9243 0.6283 0.9194 -5.0741 -1.9566 0.2100 -4.9786 0.8760 -2.5989 -5.3114 2.2992 -1.9803 1.2150 9.1545 -2.1960 -2.8749 9.6686 0.5512 -4.1700 -1.1338 -4.1549 1.6645 -3.1643 -1.7800 4.9896 0.3390 -0.0421 -1.0391 -2.0347 1.0740 2.1840 0.9247 2.0617 -2.1994 -4.0653 -1.5118 -0.9397 1.3781 2.9104 -0.8864 8.5382 0.5495 -3.5922 -0.2482 -0.5485 -0.9604 -1.8453 -3.1808 0.3575 3.5141 2.7621 1.2101 -0.3665 -1.1827 -0.5351 0.4822 0.7598 0.8241 1.4976 -0.8943 -2.8067 -2.3512 -2.0448 0.3706 -0.9201 -3.9192 1.1431 0.4761 1.9809 -1.7817 1.1939 -1.2195 1.7524 -4.7374 1.1520 0.0973 1.5475 2.2848 -7.7870 2.0346 0.5213 2.8861 3.1077 1.1974 2.3936 -1.4248 -0.2888 -1.4706 -1.4588 -0.7677 -2.0426 -2.9918 -1.8722 -1.4336 0.4207 1.4107 1.0509 -0.1714 0.2221 1.3054 0.5884 3.1454 1.8747 0.1510 -0.5701 0.5457 2.7058 -0.0854 -3.4859 1.6593 1.0024 0.3202 1.0267 -0.2368 0.1208 -0.7272 -1.0487 0.2686 -1.0197 -1.3131 4.1829 1.0297 1.7779 -3.0898 -0.7777 -4.5532 2.1765 -0.3100 -0.4886 2.9341 -0.2895 -2.4210 0.9438 2.9490 1.2447 -0.4279 -0.4133 -0.2487 0.6464 0.1859 -0.8613 0.0690 -2.0024 -3.5783 -0.9123 -2.3469 0.3089 5.3909 -1.1710 13.8818 0.6217 -0.6459 -3.4218 0.8331 0.8918 2.2009 4.0596 -3.0380 -7.3862 -3.2105 -2.2108 4.7972 -5.3735 3.8870 -1.8190 -0.5123 0.9752 -3.6921 -0.8383 0.2536 -11.0226 4.4625 -7.9396 8.6657 2.6088 -1.0215 0.4492 -5.0641 2.7194 1.1735 2.2070 3.3733 -0.2605 5.5319 3.5989 0.2759 -3.6185 -2.9338 -3.4591 -0.2533 -1.2245 -1.1924 -0.1962 0.6099 -2.1289 -2.0002 -2.0390 -1.5592 0.7879 0.1165 -0.9325 -1.5485 0.4552 0.3883 1.9054 2.3495 3.9138 2.3594 0.1886 0.1750 3.7528 1.6899 -4.3270 -5.0437 -3.1410 -4.7768 -1.9628 -4.5893 5.9435 -9.6773 -0.4601 3.0571 1.2797 0.1161 3.5574 3.7157 -2.0222 5.9308 6.7823 -0.6999 -2.9933 -3.6606 -0.6207 -1.4032 -1.1364 0.2530 -0.9004 -2.7685 -4.3142 -0.7561 0.8142 -0.4715 0.8444 2.0053 0.5983 3.3363 4.4913 6.9146 0.4673 1.0959 -0.0886 0.2379 3.2725 1.2016 -1.1581 -1.3640 -0.6268 -0.3678 0.9051 0.7593 -2.2902 -1.4578 0.6349 0.5115 -4.4984 2.2315 2.2535 -2.7867 1.5345 3.6055 3.8842 2.1794 -0.7568 -1.0500 -2.1686 -0.6731 -2.0718 0.8001 -0.6819 1.1112 0.5707 -2.4862 3.1489 2.6767 2.5134 -1.9147 -4.1519 -2.4548 -2.0802 -1.9388 -0.7447 -0.8349 0.1123 0.1251 -1.3476 -2.6413 -0.4770 5.6864 -1.8563 -3.3514 -0.5309 -1.6295 -1.3453 -0.4664 4.5930 1.1909 2.9264 0.9356 1.5944 0.5951 -0.4177 -0.1304 0.5462 -1.3265 1.4534 1.6425 0.9730 0.8946 2.1586 4.2557 0.8968 -5.0524 -1.9576 2.6089 0.6571 0.7918 -2.2504 -4.5907 -1.7480 -1.6456 -2.0706 -2.4462 -2.5983 -2.5056 2.0863 -0.9159 -0.8806 -0.8052 -0.7776 1.0285 0.4522 1.5131 3.4530 4.9330 -2.7752 1.7750 2.1982 -0.0181 -0.0006 2.2117 0.6658 -0.1647 -0.7769 -0.3291 -0.0686 3.1830 1.8603 1.0488 -0.7866 -1.0352 1.6465 0.2395 0.3989 -1.2496 -1.9498 -2.6996 -7.5216 1.3320 3.9951 1.0405 1.3681 2.7153 3.0279 2.8206 1.9933 -1.5434 -2.0223 -1.0490 -1.2756 -0.1434 0.2554 0.8858 1.3178 0.3714 3.5670 -3.1912 -1.0147 -3.0243 -6.0993 -0.8348 -2.4017 -3.6731 -2.0399 -0.2474 -1.0640 -1.1488 1.3352 2.8367 5.1498 -0.0673 1.7148 2.0672 0.7800 -2.8302 2.8981 -0.7525 1.3119 -2.4119 -0.6222 3.0927 2.0509 2.4548 -1.3001 -3.9942 -0.7486 2.8523 0.1569 -4.3404 -10.5627 4.2087 4.2968 2.7013 -1.1646 0.2008 -2.4272 1.8708 0.5192 -2.3092 2.4416 0.6449 -3.5216 -3.8362 2.1329 -1.2999 0.6434 -2.5079 3.1409 -0.9430 2.1409 -0.9005 2.6639 5.8420 2.2508 -0.1834 -3.5407 -2.0329 -1.9827 -0.2675 1.5565 5.1512 4.1361 0.9497 -3.1897 -6.0608 -4.8346 -0.7128 -2.1849 -2.1809 0.1265 0.3295 0.2665 1.1233 -0.4722 2.7945 1.1909 0.4093 1.9529 0.6380 0.5674 -2.0255 1.8944 3.2610 -0.6543 -0.1603 1.6419 1.8339 -4.1284 -1.6495 -7.4417 2.7611 3.0349 -5.4696 5.3754 0.2729 5.1700 0.7296 -0.1265 -1.6533 -2.6659 -7.1882 -6.8851 -0.9549 2.6573 1.6288 -0.3149 -2.2361 1.6706 4.0565 3.2723 -2.0478 -0.6505 2.7769 4.9536 1.8310 -4.1026 -0.8540 2.2409 0.8671 -0.7209 0.8703 1.1461 2.9551 0.5102 0.4539 9.1307 -3.4339 -1.5513 -2.2902 -4.1038 -6.0580 -0.8757 3.5830 2.5081 -1.9449 0.3605 0.8645 0.6768 -0.2206 -2.5809 -4.5091 -1.0618 1.6342 0.5890 1.0199 0.7070 -0.4636 -0.7393 -2.0902 -4.3948 -1.8491 2.8967 1.9263 0.6394 4.9955 3.9485 -0.2145 -1.3652 -1.4955 -0.1736 -1.2527 -0.6868 0.0359 0.5854 0.7286 -0.5988 -1.0892 -1.2358 -0.5524 -1.8766 -4.8554 1.3154 3.0969 1.2141 0.4785 0.5435 0.9660 0.9526 2.5969 -0.3662 -3.4429 -2.5359 -0.7902 1.6794 1.3950 0.9304 0.5281 2.0451 -0.2820 -0.7620 -2.3113 -2.5279 -1.2407 -4.6199 3.9276 -1.3637 2.0692 2.0266 2.4150 2.8601 -0.0841 -1.4504 -2.5295 -2.1914 0.0160 -1.5806 -3.8581 -1.8751 1.2410 1.4792 -0.0268 -3.0304 1.1672 3.1034 -0.0043 -1.7750 1.0722 5.8103 3.7335 0.7830 -1.2601 -0.9248 -0.9753 -1.1580 -0.4657 0.9286 0.4457 -0.7164 2.9298 6.0232 1.1288 -9.2201 -2.6002 1.0866 3.5907 -0.3994 -0.8783 -0.4493 3.0463 -0.1320 -2.6865 -1.7683 0.5719 4.2697 0.4434 0.9403 -0.1787 -3.9995 -1.4954 -2.9666 0.5871 0.7458 -0.5643 -3.3758 2.4009 1.3630 3.2345 2.9305 0.6423 -1.0943 0.2605 -0.1269 0.1894 0.8801 5.6065 4.4842 -0.3360 1.6337 -1.0080 2.2349 -1.3371 -3.4195 -1.5849 3.4658 -2.7632 -2.8878 0.2535 -1.0857 -3.4858 -0.9736 0.5903 -1.1309 -3.8731 -2.8181 0.6957 -2.1930 -3.7976 -0.1684 0.3131 0.8609 0.0568 -0.1356 5.9915 2.3704 3.9840 0.5840 -1.9366 -2.6479 0.4937 2.7608 -1.4917 0.6707 -1.8279 0.4736 -4.3226 7.6508 -0.6770 -1.0388 1.6577 3.4357 2.1210 -1.6783 -1.9394 -0.4857 0.0446 -2.1769 -1.5641 1.5895 1.4750 -1.9161 -2.4617 -1.4865 0.9268 3.7356 1.9298 -1.0879 -0.9003 -0.6573 -0.4536 1.1463 2.5279 -0.9025 -2.1547 0.5579 -1.4546 -2.5618 -1.1020 1.7633 4.9058 -2.2707 3.2436 2.0698 1.3674 -1.4618 -0.4269 1.2764 0.3160 1.2237 0.7208 1.5117 1.4584 -0.5527 -0.7757 -2.7217 -4.0792 1.8261 2.7197 -3.9546 -1.7508 -2.0101 0.2659 1.9357 0.5705 -1.8509 -5.0017 -3.7512 -2.7574 0.2996 -1.1250 0.6895 2.7521 3.7090 3.4556 6.5334 -3.5389 -3.8970 -2.9436 0.7650 1.5177 2.3717 -1.2532 -0.7651 -0.7634 -1.6900 -2.3167 -1.0574 0.9291 -0.7963 -1.4770 -1.6646 0.5558 0.7009 3.4059 9.2719 1.4172 2.4588 -0.7901 -3.7873 -1.0613 -1.3173 3.2264 0.6063 -2.4159 -3.8529 -1.9936 2.6889 2.5115 0.8341 0.8209 1.2008 0.7255 -2.1489 -1.1543 -0.6443 2.0479 -0.7011 -0.5619 -0.0820 0.5538 -1.6613 0.8900 0.2673 1.2328 -0.1459 2.5186 2.3429 -0.5461 -0.5497 1.9452 5.1637 1.5156 -3.9805 -1.5621 -1.5331 -2.7711 -2.2357 0.7958 -1.6083 -2.3152 0.5758 4.0233 3.7838 3.0862 2.4680 -0.8644 -2.4804 -0.9694 -1.9035 -3.4966 -3.9590 -3.9724 -1.2080 -1.6237 0.7915 0.4354 0.8419 1.1287 1.8538 2.3476 -0.2827 -0.5315 1.6742 2.6296 -0.5391 -1.8812 2.7171 6.8646 3.9934 -2.0577 -0.8537 -4.3316 -2.4473 -2.8864 -0.3456 -1.9169 -1.4494 0.4578 1.9608 -0.1673 -0.8898 -2.1559 -2.4800 -1.5001 1.3457 3.3362 2.6367 1.4331 2.3397 3.7557 3.4063 1.6588 1.2723 -0.3658 0.5614 -2.5827 -5.6096 -3.4952 -4.1966 -1.5564 2.1965 0.1567 -1.6324 -1.8735 -2.1011 0.8687 2.8596 1.0227 5.0782 -3.8186 -0.4012 -1.0627 -1.0858 2.3105 2.5822 -1.0014 -0.6915 1.2628 0.1273 -4.3120 1.7113 0.5493 0.1877 -0.3065 0.0805 0.1700 -0.4682 -0.7192 0.7521 1.1935 -1.2445 0.5061 3.0407 3.3122 2.9044 2.0613 -2.6946 -2.8479 -1.4855 -3.4536 -1.5377 1.2611 1.2112 -0.4954 1.5849 2.8817 0.5597 -3.2189 -1.8993 -2.3996 0.0235 -0.9270 -1.1263 -1.6443 -3.5163 -1.2543 1.8410 4.5628 1.0754 -0.1607 1.6406 -0.8759 -1.6975 0.2532 6.4042 -3.4246 -2.9858 1.9661 -3.2513 -4.0109 -0.5134 2.5545 -3.0437 -2.1093 -3.6915 4.1398 6.0036 -1.3456 1.3628 -1.0285 5.2940 8.8405 -7.2360 2.8239 7.1563 -1.4248 -8.0410 -1.9196 1.8187 -0.9320 -3.1134 1.9133 4.5783 5.5866 -1.7440 -0.1615 -9.2039 4.4457 -2.5424 2.5822 -3.4268 -1.9594 -0.1440 -0.0014 -0.5248 -1.2740 1.9184 0.2637 0.9658 3.9879 -1.7646 0.8739 3.6824 -1.4748 -0.5493 4.1940 -0.5892 0.9704 -2.3393 -5.2036 -1.0319 -1.8153 -0.8777 -1.3975 -2.8688 -1.3150 0.6005 2.0795 2.0158 -0.0187 2.3273 5.2446 3.1910 0.5420 -1.0394 1.3294 -4.6550 -1.5318 -1.6999 0.2573 -0.3684 4.3069 1.2137 -1.8464 -3.0026 -0.9539 3.1554 3.4215 2.0922 0.4828 1.6102 1.1857 1.5577 -1.8593 -2.9907 -3.0640 -4.6355 -1.6614 1.3592 1.5116 -1.8833 0.6407 1.1519 1.5429 -0.7369 -1.7269 -1.6671 -0.1290 -0.7049 0.8116 -1.2198 -4.0157 -5.1437 -3.1965 2.3418 0.7111 2.6992 0.5585 1.9829 4.9644 1.1355 0.6364 2.1072 0.9870 -5.1572 -4.3363 -1.0839 -1.3521 1.8709 0.8132 -0.2938 -0.2079 -2.5242 -0.8999 2.3401 0.7392 3.1549 3.0568 -1.1375 0.0963 1.1908 -0.0136 -2.4241 -0.4209 1.6339 3.4114 3.5889 -1.4100 -3.5651 3.1831 2.0426 0.5548 -2.0177 1.6429 -3.2634 1.5780 -4.1305 -0.9389 0.1651 0.4588 -0.0751 2.0687 0.8544 -0.3821 -0.1978 1.0057 2.3289 3.0174 -0.3330 2.0178 -0.6679 -0.1993 -1.9170 1.6018 -0.3834 0.6526 1.9588 0.3355 -2.0462 -4.1767 -5.5379 2.7809 0.2282 0.4820 1.9051 -1.7350 -3.4716 -3.3685 -1.3005 0.1251 -1.5366 -1.9516 -2.1469 1.2541 3.7123 3.0390 0.8154 2.3154 2.5014 0.0685 -3.7166 -2.7442 -0.5589 1.8753 0.2528 -1.7122 -1.5279 0.3471 1.3429 -0.0809 -1.0979 -0.5556 2.8899 0.2864 2.1800 1.7006 -3.4442 -2.6681 2.9174 1.9107 -1.3132 1.1471 -0.3191 -2.5131 -2.6788 2.7236 4.0318 2.9420 3.1336 1.5351 0.4800 -0.0086 -1.0945 -1.1975 -0.4758 0.1588 -0.4970 -0.2437 -3.5219 -3.3061 -0.2958 -0.6947 -3.5085 -2.7613 0.0475 0.2365 -2.4104 -0.4597 -0.9262 -0.2261 1.8983 0.9162 0.3544 -1.0767 2.3229 2.3748 -1.6417 3.4712 -3.6716 0.1472 5.6077 -1.7531 -0.9915 -0.4352 0.4089 0.1890 -1.7111 -0.6401 -0.9353 -0.5743 0.3365 -0.6869 0.9392 0.8776 -0.2201 0.7815 -1.7487 -0.2509 3.0732 0.2971 3.0442 -6.4696 -1.5332 1.3136 7.9582 4.7035 0.4178 -1.4784 -2.4577 -0.6662 -2.4183 -3.1348 -2.0591 -4.3423 -0.2080 1.5975 -2.6953 0.1211 4.7779 4.5315 2.0419 0.8642 3.0824 1.7461 -0.8529 0.9231 -0.3502 -2.7586 -2.7081 -1.4853 1.1577 2.4953 -2.0279 3.1643 -1.1352 0.2786 -0.1650 2.4230 -0.5282 -0.4006 -3.7227 -3.9091 0.2639 -0.0395 -5.0339 1.4635 7.9381 -1.8279 -7.5321 1.8947 0.9696 -7.1991 7.7502 4.8838 -5.2722 5.2271 6.4012 -8.2785 -5.8271 0.4487 7.6786 -0.4051 0.3015 -0.5211 -1.1563 -1.5548 -0.8506 -1.7742 -0.6679 0.3853 3.9695 3.1450 -3.5632 -0.3392 -3.3757 1.3514 4.4934 -1.2754 -0.4248 1.0022 1.2601 -3.0667 3.2388 3.6288 -0.3263 -3.6989 -4.3941 -3.0073 -2.9882 -2.7834 -3.8873 2.3701 6.1068 1.0432 -2.8444 0.1460 -2.5272 1.8208 2.6818 7.7176 0.7699 -0.8674 0.6588 -0.0766 1.9350 3.3452 2.7012 0.4707 -0.8282 -0.7703 -3.8252 -2.8814 -0.2389 -1.3895 -0.9376 0.2572 -3.4418 -2.3763 -1.8695 7.4789 2.6558 0.8567 1.9741 0.6363 2.1993 1.9072 2.2211 3.7376 -0.0455 1.3289 -1.0736 -4.8817 -4.0284 2.4624 1.0596 -3.8101 -3.8498 0.8895 -0.5176 -2.3743 1.3083 3.7465 3.5865 0.1979 0.4072 -1.1714 -1.4598 -2.1688 -1.4971 -1.1953 -2.8028 -1.8515 1.1483 3.7654 -2.6485 1.2635 -2.4929 -1.4965 0.6356 3.3756 0.6583 -1.7286 -0.6675 0.3769 1.1159 0.0587 1.4828 1.2140 6.0165 1.2212 -3.4526 -2.4321 -0.8616 -2.2663 -0.0017 -0.0046 0.2615 0.0517 -0.8546 0.5801 -0.1095 3.4455 1.4668 -0.0851 -2.9245 0.0932 1.2861 1.1250 -0.6317 -4.0005 -4.4206 -1.5097 1.3643 -0.1238 -0.8046 -2.4500 4.2293 2.9297 3.2594 -3.0122 0.7633 2.2354 -0.6334 -2.7256 -1.7876 -1.8603 0.6549 0.1244 -1.8100 -1.7636 -2.7665 1.0419 3.6034 2.7187 -5.8124 -0.9848 2.8478 -0.3193 3.4835 2.5353 1.2184 3.0602 4.3425 2.4260 -0.5623 -0.8919 -0.2730 1.3901 0.4772 -0.5219 -1.3754 0.4815 2.4087 -5.0472 -5.6009 -2.8901 -2.4607 1.8809 3.5997 3.9232 -4.3669 -0.0346 -0.2122 -0.2290 -0.9365 -0.4221 -1.9300 -2.3572 -2.9919 -2.2394 3.2115 2.4104 2.4249 -0.5682 1.5001 -1.3857 2.6140 -1.8866 -5.6180 7.3368 1.3135 -0.4484 -1.1107 -1.9143 -1.2992 -0.5392 -1.0181 -0.6562 0.5186 -0.7919 -1.4379 -4.0959 2.4107 1.5417 0.0557 3.4844 1.7096 -0.8275 1.7994 2.0983 0.5209 -0.4549 0.1830 0.2262 -2.2572 -1.5931 -0.7026 2.6431 2.6098 4.0381 -0.4805 -2.9134 -3.5443 -0.6536 -2.1551 2.0956 1.2393 0.2979 0.9155 -2.0621 2.5682 -0.1092 -1.2889 -2.5682 -2.3378 -1.7259 -0.5628 -0.6114 -2.8295 -2.5690 -3.3678 -2.2669 0.6023 0.3823 5.9006 5.7607 1.9871 0.6942 1.2471 3.2445 0.4186 0.6515 1.8638 -0.3444 -2.0169 -0.6995 -2.9879 -2.4596 -1.0847 -0.8686 -2.3776 2.0331 4.8909 4.1694 1.2690 1.4079 1.9289 1.8820 -0.9986 -3.0198 -3.2390 1.7936 1.2201 -1.9231 -2.6761 1.6107 7.0585 8.8031 2.9894 -2.3291 -6.5825 -1.5641 3.0126 -4.0096 -4.0332 -0.6223 -0.5985 -0.8359 1.2689 0.3585 -2.9410 -1.2384 -0.3295 2.3565 3.0657 3.2204 1.0890 -0.5456 0.1283 2.9904 -0.0970 -5.2104 -1.5801 -2.5751 -2.3243 -0.3014 2.6881 0.5623 -1.5424 -1.9388 1.5825 -2.6631 -2.8705 -3.6445 -0.1511 1.0369 4.6018 2.7993 -0.5794 -0.1152 0.9196 4.1279 -0.7083 -3.1505 -2.1870 -2.5145 -0.8667 1.9629 3.7810 1.8562 -1.6347 -3.7832 -0.9972 1.0298 0.8253 -2.4369 -3.3827 -2.6892 -0.8231 -1.0820 -0.0375 -0.7937 -1.8433 -0.5302 3.8146 2.3123 1.6122 4.1004 5.6672 -1.0450 0.0824 -0.1000 -2.0200 -0.5383 2.2917 0.8366 -2.2105 -0.8495 2.1052 3.4989 -0.0827 -0.3031 -1.7154 1.3463 5.4572 -3.0939 -0.0935 -1.1704 -5.2410 2.4300 -0.5476 -3.7789 -1.9485 1.8338 2.9833 0.6807 1.8337 5.1432 -0.4532 0.5973 -0.6042 0.8753 -1.5014 0.4292 -2.2709 -1.2993 -0.1667 -1.6955 1.1932 -6.0865 4.2353 -0.4920 0.0568 -2.6837 -3.2294 -0.2920 -0.6790 2.7843 3.0219 1.7934 -2.2037 -3.0967 1.8829 0.5782 -1.6334 1.9235 4.5606 -4.2261 -0.0121 2.2982 -0.3517 -0.6429 2.5139 2.3667 2.2000 -1.8905 -1.3195 -0.0575 -0.6720 2.8832 0.3828 0.9744 2.9334 -0.6053 3.2595 2.5269 0.0016 -5.8119 -0.9627 -4.8744 -3.2058 0.8584 0.9302 0.3630 -0.3058 -0.9190 -1.1142 -3.3748 -2.6210 0.9921 -0.0440 -0.2277 0.8060 1.7478 2.0581 0.3900 4.4187 5.8430 -6.6138 -3.1191 -0.0680 0.3281 -0.0986 -1.1173 -1.9481 -2.4515 -1.0863 -1.3545 1.1448 2.8412 3.7501 2.6741 2.7224 1.8554 1.4018 -3.7195 -2.9142 -1.2068 -4.2062 2.9680 0.4170 0.2181 -1.3017 -1.3715 -0.9326 -1.1639 -0.6082 2.2905 2.1838 3.1530 3.3746 2.0088 -0.8055 -1.0486 0.7007 -1.7960 -0.3898 -2.4327 -2.4057 -2.1793 2.5060 -2.4912 -0.4925 1.9418 -0.6320 -1.0125 1.8048 -1.5360 -1.7457 -0.3001 0.5912 0.4548 -1.4661 -1.5177 -0.5917 5.6377 -3.6558 1.8798 3.7139 3.0715 -3.6543 -1.0770 1.7774 3.6503 0.2492 -2.5625 -1.2989 0.3077 -1.4511 -0.7454 -1.0293 0.9281 -0.0970 -1.4180 0.5544 2.0070 3.1415 2.3666 -0.7117 -2.8143 -1.7770 -1.8815 -2.2795 -1.1580 1.0865 -0.0453 1.6476 0.0859 -1.8231 -0.7599 -1.0013 0.0173 -0.6116 0.0110 0.6057 0.1048 0.3920 2.8241 -0.4223 -0.2920 3.4995 0.0544 2.8654 4.0202 1.6845 -1.8534 -2.9185 -1.4228 -3.6388 -2.0210 -2.4342 -3.4254 -1.7961 2.7218 6.6019 2.2780 -0.0758 -2.1727 1.0645 -0.3083 0.7762 -4.2733 -4.7209 -2.5347 -4.1434 -2.3709 0.1195 0.9517 -1.8672 1.5567 3.4133 0.9511 6.1534 5.0591 3.3617 4.3448 -0.8335 0.0697 -1.2096 -2.2085 -1.8188 0.0539 1.0537 0.6965 0.7551 -2.3328 -4.4085 -1.7944 4.6582 -1.8228 -0.3800 0.4342 0.9079 1.1727 -0.2538 -0.9787 1.6403 0.3758 0.2889 -1.0679 1.0017 0.9075 0.5642 -0.6092 -2.8652 -3.3111 -1.2627 1.6981 0.5866 2.5675 2.8589 1.6024 2.0917 0.4354 1.0342 1.2054 -2.7817 -0.5893 0.0883 -2.8199 -1.4010 0.8980 -0.3869 -0.4833 2.6033 -0.0884 -0.3699 7.2953 1.6809 0.8531 1.6498 -4.4993 0.0072 -1.9421 -1.8001 -2.5825 -3.6475 -2.3221 0.6178 0.3128 2.2040 -6.0307 -1.3653 -0.3786 0.0247 0.6616 0.7676 3.3234 3.0965 0.7765 -0.6097 1.0441 -0.9142 1.6186 -9.2158 -4.2017 2.5866 2.2875 2.0945 2.8697 1.5646 -0.3542 -0.0280 4.1718 2.5282 6.0404 2.9659 -1.0269 -1.4497 -5.6815 -3.9178 -3.9280 -6.4467 -2.5804 -4.6703 -1.3963 3.1437 4.3980 -0.5477 2.7035 6.0758 -1.5432 3.8376 1.4210 -1.1449 0.4892 1.3172 -2.0383 -2.2564 -2.1791 3.0272 -4.0284 -1.3615 -1.9716 -4.9880 3.8800 2.5715 -2.8049 5.2429 -2.0992 4.6290 1.9112 0.2401 1.2090 1.9221 -0.5051 2.0731 -0.8317 -1.4381 1.1319 0.2604 4.8570 -4.2486 -4.2343 -0.1445 2.6106 1.1135 -3.4590 -1.7688 1.2613 -1.9600 -4.6396 -2.9689 0.9238 0.7657 0.5574 -0.3650 -3.7022 -4.0756 -5.0362 0.3243 3.1880 1.7270 -0.7319 2.9308 3.7592 2.6099 -0.3181 4.3233 1.9146 -1.1863 0.1980 -2.2883 0.9330 3.8033 -3.0797 0.0635 -1.8773 -1.7344 -1.0161 0.1560 -0.1661 -3.8927 -0.3658 0.3316 1.1226 1.9542 -1.0490 -2.2906 3.6658 5.5322 -0.8058 -0.9870 1.9765 0.8081 -0.8891 1.6549 -1.7178 -0.2062 -0.6134 3.7968 2.8384 4.3753 1.2045 -6.0029 -1.5145 -3.5656 0.8785 -0.8278 0.9419 -1.3448 -1.9513 2.4604 2.9573 3.3043 2.2986 1.0394 -0.4185 -0.0890 -0.2841 2.2073 1.6514 0.3367 -1.0792 -1.4676 -0.8850 1.7747 0.0695 -7.9932 -5.3486 1.4171 -2.8766 -0.2007 0.3439 0.7801 -0.0362 -1.8832 1.2162 3.7611 1.5511 -0.2914 4.4891 2.4265 0.5170 1.2791 -3.0822 -4.3172 2.1550 -1.7349 -2.5924 -1.5044 -1.3853 -0.5001 0.6365 -1.9167 -1.9693 -1.6932 -2.5123 -3.1209 -1.5363 3.8772 1.7176 4.5613 2.2969 -1.7507 -0.4549 2.7398 -2.2572 -0.1132 1.3625 2.0183 -0.2587 0.7517 0.0083 -1.5665 -2.9108 -3.8211 -5.3272 -2.2879 -3.3006 3.2010 3.9688 4.6713 3.8047 3.4665 0.6502 0.9612 0.0958 -1.5002 1.1994 -1.8059 -0.0767 -2.8888 -3.8572 -1.6523 2.8392 3.7128 0.7093 -0.0657 0.9823 -1.6073 -2.1810 -1.5064 -0.6392 2.2679 1.7322 -1.1001 1.0422 1.4078 2.4192 -1.5382 2.1069 1.6101 -0.6015 -1.1106 -0.0731 0.3657 2.1738 0.6411 -3.2826 -4.2217 0.0005 4.1333 2.9287 4.0221 -1.0117 -7.1186 -0.3700 1.5812 0.1654 -1.9391 -3.3989 -5.4211 -3.3823 0.1417 -0.2090 -2.9282 3.8367 5.4395 2.1603 -1.6658 -0.0286 3.8151 -1.6236 -0.4057 -0.8473 2.3634 0.3434 0.0424 -0.3374 2.1055 3.8095 -5.8994 -4.2159 -2.8701 5.1790 -4.6791 -5.6257 0.4437 3.5907 6.0531 -2.4206 -0.6190 2.0474 3.5867 7.1475 -4.6633 4.1906 1.2868 -11.1492 4.8074 -5.2857 -2.3511 1.8870 -1.8753 -2.8109 0.3363 -1.9008 -0.4090 0.8741 -0.4525 -6.3796 0.4485 2.7092 2.5765 4.4129 4.7975 -0.3228 3.7712 2.7353 -2.7608 -3.9913 -5.9775 -2.6898 8.0565 3.5971 1.2374 3.4590 0.3338 0.6958 -1.1912 -2.2406 -2.0748 0.0857 3.9701 1.1276 1.2332 0.6559 -3.8152 0.9255 -3.3971 -2.4876 -2.5150 -2.0296 -1.0642 1.0080 0.6973 -1.7376 -1.5703 1.5923 -0.7283 -0.1226 -1.7315 2.4167 -0.4425 -1.5075 3.8846 0.5544 0.8966 4.6270 0.2600 2.8767 0.9007 0.0796 -2.1662 -1.5086 1.0148 -1.3370 0.8661 0.0749 1.4614 3.1800 2.1743 -1.6449 -2.7523 -2.7644 2.2901 -1.9100 -4.8716 -2.0883 6.1248 3.6336 2.1044 0.4628 -0.6805 -0.0353 -2.3281 1.0902 3.0334 -1.9070 -2.0882 -2.9673 0.1514 0.3556 -1.0151 -5.4063 2.3884 2.5624 -3.2553 3.9458 -0.0449 -1.3869 -1.5992 1.4579 1.4992 1.7691 0.8878 0.9518 0.7305 -1.5050 -1.6287 -1.6402 -0.3868 2.7983 -2.2046 -0.5051 0.1956 7.1623 2.4667 -5.9139 -3.1488 -3.5734 -7.3577 -7.1566 -1.3669 4.3200 2.1415 0.4237 -0.1707 3.4434 2.6751 2.2337 0.4895 2.5968 1.0123 -0.9145 -1.1189 0.9048 2.1474 0.4312 -1.1607 -5.2465 -1.6283 -2.7428 -3.2948 -2.2122 4.3049 4.7808 4.7619 0.2262 -0.6089 1.1643 3.3590 -2.1676 0.2134 -1.1502 1.4193 1.4168 0.3538 -2.8694 -0.0796 -3.4905 1.2508 2.0451 0.4490 3.1300 4.3899 0.1675 -1.3519 -0.0668 0.4245 -1.7121 0.2301 -2.2070 0.3069 3.1491 -7.5721 2.7986 3.8554 -4.1493 -1.6472 1.5232 1.5300 -1.0621 -1.4488 -0.8044 -0.3900 1.3086 -2.5549 -4.3776 0.5264 2.2421 -0.5299 -2.7363 4.9582 1.0929 1.1601 2.8351 1.9896 -4.9813 -0.2808 6.5366 -2.5283 -5.5972 -3.4516 -0.2385 1.8382 -1.6024 0.2804 8.8284 4.4416 -6.1238 3.7728 3.4763 2.9323 -2.3678 -5.5110 -4.9901 -0.1283 0.0084 0.4242 1.9342 1.5660 2.2346 1.0331 -0.6035 -0.4461 0.0271 0.7571 1.1796 0.2963 -0.9807 -0.5607 -1.4711 -2.5426 -4.1871 2.4178 0.2030 -1.7949 -3.6655 4.6035 2.2188 0.9702 -1.9037 -2.3323 -0.9270 -0.7473 0.4463 4.0069 3.2380 1.6378 1.5850 -1.9473 -1.2130 -2.1935 -1.9102 -3.3249 2.6456 1.0820 -1.3884 0.0570 1.8633 1.2717 1.6148 0.3758 2.9711 -0.8914 -1.2864 1.1672 2.0355 1.2245 -3.7030 3.7200 -3.0675 -1.9250 2.2356 -0.7355 0.5128 -4.4528 -2.9595 0.0288 -2.2984 -0.5209 0.3609 2.6675 -3.6910 -0.3519 6.3822 3.0237 -0.1277 -2.2553 1.0403 0.9970 -1.3107 -1.9745 -0.1646 4.8839 0.1333 -1.3256 -3.4240 -2.0441 -2.3190 2.2812 1.2138 -1.1727 -3.3340 -5.2226 3.6390 2.5124 -1.5642 3.4166 0.5330 1.8016 -0.3986 -2.9233 -3.7394 0.9982 -0.0060 -1.6833 4.3443 1.6231 -2.2576 -2.6516 -1.1317 -1.2013 0.7393 0.1827 -1.2343 -3.2192 2.3728 2.7817 1.6779 0.8901 0.5320 1.4647 3.7014 7.0412 -2.6912 -2.5104 -1.2474 -3.2389 -1.7690 -1.9167 -2.8243 0.8559 1.6454 0.6817 0.5231 -1.2522 -2.6542 -3.2288 -0.2864 0.0091 0.5513 -0.6182 -3.9328 4.4973 6.4951 0.4313 1.6808 1.1116 -0.2744 -1.5780 -1.8323 -1.2019 -0.3620 1.2906 -0.2832 -1.9105 -0.8966 0.8634 -0.4648 -2.3172 -1.9676 -1.7065 0.8232 -2.4736 3.5667 5.3037 4.3018 1.1191 -0.4003 -1.4016 -2.6548 -3.2373 -2.1471 -0.9075 -1.1057 1.1084 0.0584 0.6994 -2.2697 0.1501 -0.0187 -0.2177 -1.1214 2.5501 5.4533 5.8815 -0.4561 0.0366 2.4755 2.6766 3.3810 2.8797 -1.3067 -1.2604 0.4792 -1.5575 -2.0569 -1.1560 -1.3594 -0.7176 0.2831 1.2557 -0.1965 -2.5773 0.8488 0.4905 -3.0053 0.4234 -0.5334 -1.6405 -1.4903 -1.2901 -2.0368 -2.4054 -2.0422 -1.2649 -0.3204 2.3946 2.8987 2.5774 -1.9494 -5.6321 2.8212 3.6550 3.9850 1.2152 1.3991 -0.3406 -1.8395 -0.9841 -0.1468 -2.7046 0.5709 -0.0486 2.3079 -3.1973 5.7249 -2.0537 -0.8947 -0.5513 -1.5588 -0.0660 1.7712 1.4939 0.7539 0.8995 0.7376 -0.2144 -2.1136 -6.4960 4.0091 -2.7287 -2.8520 0.0889 4.2865 1.1559 1.4489 2.3747 -0.2811 -1.6675 -2.1043 2.4825 1.5983 3.0151 1.4924 1.4598 1.4466 -6.6156 0.3044 0.5145 0.8314 -0.5726 -1.4732 0.5522 1.0454 0.7132 -0.3595 0.4703 4.9451 2.9593 3.4319 -1.7835 -2.7963 -3.6604 -2.7125 1.2113 -5.0055 1.3846 2.3458 3.2640 1.8110 0.4827 -1.6195 1.9882 1.8256 3.5857 4.1301 1.6235 -5.1588 -3.8052 -1.7214 -1.0231 1.3522 -0.3858 -5.6155 -1.3895 -1.6421 -0.0480 3.7883 2.2512 0.5915 3.6595 3.6582 1.2917 -2.0747 3.0623 -4.8462 -9.6783 -4.7828 -4.1622 -5.2776 -1.2559 2.3471 0.9386 6.0401 4.8334 -1.7435 1.3593 -0.5609 -1.1658 -2.4817 -6.5550 -4.6100 -0.2509 0.7628 -0.8368 3.8495 3.9220 3.0356 2.0951 1.5781 3.7313 2.8834 -1.2291 -3.4270 1.5639 1.6072 -3.9116 -1.4268 0.2383 2.3216 0.1248 2.0796 1.5987 0.8138 -0.2165 -2.9254 -1.2364 4.4075 -3.3005 -5.5475 2.3771 2.6523 1.5551 2.5380 1.7514 -3.2529 -4.5520 -0.7746 0.9904 0.2665 0.8152 1.7416 -1.7222 -3.8193 0.6115 3.8698 -1.5065 -1.1919 -1.2590 -0.9540 1.8722 -0.1520 -4.1283 -0.5510 0.1951 0.7420 4.9546 -4.9471 -2.6326 -0.7296 -2.9661 3.2611 5.2949 1.3584 -0.3484 0.0238 -0.5367 1.0370 -2.4283 -1.4686 5.4446 2.1704 -0.2969 -1.9436 4.7301 0.0591 -5.0816 0.8281 -1.2416 -3.3762 -3.9320 -1.3993 -3.0591 -0.9292 2.5927 2.1047 2.4478 0.5704 1.2666 0.5289 -0.2372 1.2696 3.8278 3.1348 1.0903 -4.3525 -1.1346 -0.7430 -0.7480 -1.2610 -0.7625 1.0816 1.6556 1.2019 2.2812 3.2082 1.5688 -1.3094 -2.0639 -2.5822 -2.2528 -1.3400 -1.6246 0.6375 2.8900 1.4778 -1.3150 0.8081 -1.3233 1.3342 -0.4629 2.2543 -1.7177 1.7285 2.2425 -4.4738 0.6367 1.5497 -1.2988 0.3335 -1.1590 0.1744 -4.2648 5.1183 0.3072 -2.6556 0.8684 4.0404 1.9094 -0.2474 -1.1600 -0.9167 -2.2516 3.9300 2.7965 0.9719 -0.3105 2.6858 -1.8089 -6.0898 -5.0707 2.0812 -0.0971 -1.5043 0.0458 -1.0273 2.0234 0.1375 0.2390 1.2366 1.5253 1.5536 1.1452 -3.3801 -3.1595 -2.7411 1.0175 6.4814 1.4661 -1.2521 -3.3744 -3.5432 -5.4270 -1.3071 4.3703 3.6696 1.3422 -0.0191 0.4401 -0.0551 1.2610 4.9915 1.8859 4.2946 2.2533 1.2460 -0.3261 -1.8245 0.5397 -0.9620 -2.4208 -1.3984 1.3654 -2.3100 -4.0785 -1.5595 -3.3235 -4.1713 -3.8609 -3.6233 -2.2953 0.4590 -0.2721 -0.1506 -1.7078 0.0356 1.5074 1.0712 0.7854 0.7858 0.0168 -0.8160 0.0810 0.5445 4.5197 7.1653 -0.0742 -2.9674 -1.4650 1.0679 3.2208 3.0814 -0.6959 -0.9252 1.0871 0.1680 -0.9317 -0.6966 -1.1041 2.3656 1.0874 -0.7021 -0.5843 -5.9540 -1.0591 4.3651 0.6421 -2.3881 -1.1722 -0.2878 -1.3100 0.1054 2.7187 3.1286 1.3950 2.5138 0.8551 -1.0485 -2.7991 -1.7081 -1.9009 -0.2092 -1.1297 5.4416 0.9634 -4.8359 1.6679 0.3475 0.6761 -0.9160 -3.3303 -2.5114 -1.3053 -2.4606 -1.5909 -0.1066 1.2867 0.1087 0.6627 -0.9380 -2.1561 -4.1442 0.5530 3.6775 4.3771 4.5604 3.2095 1.8172 1.9142 1.3748 -1.2576 -1.3958 0.4060 -0.4725 -1.2643 0.8079 -0.6725 -3.4257 -3.2969 2.8901 -0.0329 4.2131 0.8390 -2.3538 -2.2196 3.3371 -1.2078 1.9496 3.6573 4.2326 1.1863 1.8389 -0.7982 -0.8176 0.9762 -2.1796 -2.4082 0.4600 -2.1099 -0.1300 5.8933 -3.2271 1.4122 -3.0287 -5.0286 0.1022 -1.9807 0.7977 0.4131 0.7926 0.7439 -2.7150 -3.1860 -1.6061 -0.5456 3.5797 0.0724 -0.4993 0.4656 -0.7994 -0.5991 0.0862 3.6997 -0.5342 -0.3047 0.9064 -0.7678 1.0025 0.1292 1.8299 -0.2181 -0.3367 2.6298 -1.6812 -0.7903 1.0473 -0.5336 -4.1833 2.6382 0.9480 -0.3031 -1.3062 -0.6706 1.4954 1.1070 -3.9483 1.1443 -2.8220 -2.9373 -1.7368 -1.1113 0.7976 1.0210 2.2881 1.7823 -1.6829 -2.1388 -0.0636 0.6047 1.3691 0.5354 -2.8472 1.9900 -0.2414 -1.8409 2.3664 4.6674 0.8100 0.5306 3.2216 2.7904 2.3222 -0.0940 -1.2977 0.6699 -0.3153 -2.0729 -0.4524 0.1611 0.0422 -0.9458 -1.6284 -1.0590 0.4113 -0.2203 -0.7025 -2.1711 0.6469 2.9521 -0.5269 -2.8396 -2.8290 -0.4167 -2.6035 -1.8694 -1.2710 -1.1950 -0.6111 -1.1719 -0.0843 4.1129 3.9912 -0.9572 -5.8704 3.6319 4.0418 2.8690 -1.7675 0.6361 2.5132 2.0830 1.8929 -1.5061 -3.5844 -4.2969 -2.8299 -0.6870 0.8308 1.3968 0.3529 4.0998 -1.6161 1.3306 0.5600 -0.5129 -1.6573 2.7621 -4.0964 -1.5173 1.2551 0.2978 1.5682 0.3497 -1.4315 -2.0554 -0.5756 2.5392 0.7900 3.4286 -2.9558 -1.7034 -0.8459 1.0513 5.1871 -2.5294 1.2695 -0.0257 0.0328 -1.2155 -1.2836 -0.9363 -1.2229 -1.6930 -1.8595 0.3399 -1.5276 -1.0107 6.4040 -1.9072 0.7733 0.6079 2.8719 3.0211 2.3070 -3.5448 0.3434 -0.5002 -6.6638 -3.5679 2.7288 3.1465 -1.8044 -3.2026 0.3954 1.5738 0.6840 -0.5029 1.1915 -2.4277 -2.8920 -0.4612 0.5352 2.0495 4.9107 0.7993 0.1809 3.3270 -7.7693 -2.7271 -0.5302 -1.6862 -2.6750 -4.1941 6.2224 4.1406 1.2187 -0.8566 3.2170 2.7593 3.3324 -2.3093 -1.4924 1.2643 -2.9807 2.3328 4.6730 -1.9398 -0.3214 0.7654 1.4453 1.0347 0.7854 -0.0281 0.6653 2.1756 2.5539 2.4886 2.8291 -2.3264 -5.6113 -4.1472 -2.1955 -0.1794 -0.8897 -2.9162 2.0658 1.8062 0.0689 -0.0814 0.5156 -0.9104 1.9645 1.4890 -0.7622 -1.4287 1.4489 2.2731 1.0561 3.0605 2.5928 -3.3062 -2.8865 -3.6767 -3.9506 -2.1727 -0.4806 5.1867 -2.7262 -0.4080 -7.2353 0.2532 -1.7494 4.8406 2.4161 -8.2402 -0.3311 1.0612 3.3760 -0.5373 3.2052 3.7144 -2.9286 10.7765 4.9188 -8.1638 -0.8809 -1.3612 3.8706 1.5102 0.3780 -7.4590 -0.9006 2.4899 2.4680 -2.4184 -1.4186 0.2908 2.1056 2.4328 4.2260 -3.9887 -6.7913 -1.0651 2.4289 0.5874 4.8024 -3.5488 -1.2691 -4.1749 -2.7407 1.4930 1.4665 -0.9212 -1.4630 -5.1747 -2.2251 0.8474 0.8540 6.6525 0.1651 -0.5706 -0.3287 3.1547 -1.4600 0.8291 2.5923 2.2733 3.8347 2.4921 1.8361 2.4264 0.2839 -2.7167 0.2831 -0.5469 -0.6398 0.3108 1.0194 -2.1389 -0.8456 -4.7666 -2.5049 1.2075 -5.6326 1.3761 3.1197 1.6020 -3.7739 -1.8529 0.6063 -0.8541 -1.6370 3.6233 0.8975 1.9643 3.5106 -0.3623 -2.4744 -0.7625 -0.7853 -1.5705 0.2237 -0.6207 0.0761 -0.4742 1.5632 2.7029 1.1570 0.8704 1.6827 1.2654 -0.5848 -2.6900 -2.6615 -0.9589 -1.6641 -2.7103 -1.4381 -0.4901 1.8045 -1.5216 -1.1394 5.0021 4.1235 1.5550 -3.7877 2.1859 2.5420 1.6423 0.7395 0.8846 0.9016 2.7752 3.3824 2.5574 0.4625 -2.0442 -1.8686 -0.1860 -1.7933 -5.0038 -3.5773 -1.2917 -2.0519 -1.8556 1.0146 2.7701 -4.4081 -3.4569 -0.8021 0.2773 2.5574 2.3862 1.3118 0.1408 0.6688 1.9053 -1.5497 -0.5855 1.2457 -0.5521 0.9630 -2.2470 -2.8924 -3.7430 6.1844 2.5961 0.4138 -4.3685 -4.3743 3.3166 1.9814 -1.9703 -1.1246 -1.8788 1.8555 2.5293 -0.6354 0.3032 3.9855 0.4439 -1.3412 -2.6733 1.5434 2.8406 -1.3900 0.5430 -0.9949 0.7752 0.5153 -0.3382 0.7590 -0.3806 0.6362 -0.0446 0.6992 -2.3407 -2.2180 -0.8794 1.9075 1.9883 2.6403 1.4665 1.1384 1.9497 -0.4373 -6.8420 -0.3690 1.5979 3.6520 2.5947 0.9915 -0.4587 -1.5761 -1.3889 -0.8595 -0.0002 0.3336 2.0392 1.9215 -1.5962 -2.1409 -2.1868 -2.0225 -6.9604 4.1862 2.2427 0.7081 1.2472 1.2274 -0.7827 -1.3963 0.1531 1.0164 1.1220 1.4236 4.7449 4.1970 -1.6566 1.4602 -0.4324 -5.0812 -4.6776 -3.2034 0.2020 -0.8325 0.5609 -0.8996 -1.1981 -0.4982 -3.3678 -3.1656 -0.4840 -1.6889 1.4162 1.8691 1.8944 0.6984 2.1971 0.7659 -0.3399 -1.0540 -1.9648 4.8986 2.2357 -0.4350 -0.8795 -3.0303 -1.1024 -3.6351 1.8563 2.2581 0.9526 -1.3180 1.0520 0.9676 1.4472 -0.2536 1.6459 0.5539 2.7964 -2.3045 3.1405 -0.8848 -0.5008 -4.0553 0.4143 -2.0566 0.3509 1.5804 -0.1468 -1.2009 -5.1236 -1.6316 -0.6083 -0.2262 -3.8727 -1.4106 4.1461 2.8353 5.5841 2.0344 -1.3445 -0.2669 1.6597 0.4425 -0.7448 0.4237 5.5027 3.4466 -0.9733 1.1101 0.3187 0.4016 -0.8934 -4.1773 1.2529 -1.0141 1.7716 -1.4207 2.0071 -6.7629 -1.4260 -0.8769 -1.9766 2.0620 1.2241 0.5250 0.4342 -1.3517 -2.8754 -3.0586 0.6098 2.2679 1.4929 1.4608 3.1011 1.5060 -4.8013 -7.5268 -0.6504 -0.5030 2.7780 2.8557 1.0462 3.4571 -0.7675 3.5730 1.8714 -0.1581 -1.7722 -0.3433 -2.7056 -3.0806 -1.9100 -3.1355 1.0548 -1.9906 0.4699 0.0873 2.5566 -0.1726 -0.8702 2.1464 4.3968 5.0995 -5.1171 -0.6968 -1.4896 -0.0495 0.8149 1.4216 -0.0327 -1.7535 -2.2313 -0.3210 1.9568 4.8784 -1.9324 -1.8058 -2.6431 -3.7316 0.3685 1.1306 4.9893 -0.2577 1.3848 -1.4341 -1.1497 -1.8056 0.1413 2.5710 2.9390 0.7055 -0.4196 -0.2614 0.1608 -0.6195 -0.3637 4.1643 0.3576 0.0984 2.2749 0.4728 -7.3150 -0.1921 -0.3248 -4.2895 -7.0396 -4.8802 -1.5844 1.4442 1.8886 0.5829 0.1608 -2.6352 -1.0632 0.4985 3.2097 6.3270 9.0622 8.0546 -0.4311 2.1200 -2.0642 -2.9293 -6.4319 -2.8918 -0.9105 -1.1049 -1.3358 0.0333 -0.4429 1.1140 3.2177 -0.2479 -0.9423 2.0518 -3.4204 -3.3752 -1.5080 4.5184 3.5104 0.8370 0.3279 4.1906 -3.6215 1.1012 2.8300 4.9338 4.9135 -1.4413 -4.6933 -2.9852 -2.2104 -2.0709 -0.2446 -1.7323 0.4460 -0.3491 0.7293 1.2549 1.5520 -1.6591 -0.0263 -1.3091 0.9607 -3.8105 -2.2705 -0.4801 0.0030 -1.0835 -0.8967 -1.8480 4.3428 2.2775 1.1261 1.5948 4.4091 3.5564 -2.1928 -2.8051 -1.2385 -1.6399 -0.9968 0.5731 1.3796 4.5581 4.2833 0.3675 -0.5438 1.9400 3.0816 0.3261 -0.8096 -2.6679 -2.1086 -0.8131 -4.9186 -3.6340 5.7405 0.0185 0.6308 2.5276 -4.0355 -1.8846 -2.0583 -1.2863 -0.2640 -0.1222 1.8197 -0.8215 -1.4173 6.3047 -1.3136 2.0735 -0.1627 3.0262 1.5599 -2.3044 -2.9292 -2.1284 -0.0060 -0.2974 -0.4468 0.2977 -1.5818 -0.3043 -4.9833 -4.4641 1.6692 5.7638 4.6547 3.7525 -0.9610 -3.9550 -2.2488 0.7885 4.2621 3.6322 2.1375 -6.9698 1.9153 2.5541 -3.4886 -0.8469 -2.9081 1.6869 -2.2603 -5.3537 -1.9240 -2.3796 2.8412 5.8922 -3.3838 0.7866 3.3273 0.7220 4.1493 -2.8075 1.2195 -4.1220 2.7912 5.5751 -0.9361 -3.7960 -2.0281 1.8743 1.5687 0.9347 -0.0119 5.1974 -0.9505 -1.5819 -0.0387 -0.2355 2.4835 -2.7180 -2.1816 -1.0347 -1.5606 -1.4552 0.4355 -1.6713 -3.1551 -0.2146 4.3156 -0.5064 0.6473 1.6157 0.4031 -0.7786 0.4664 2.3609 -0.8533 -2.7426 0.0584 3.6047 -1.3728 0.0256 -2.0089 0.7575 -3.1106 -1.7839 0.9710 1.5709 0.6757 -0.1854 -0.4792 0.2327 0.5721 1.3762 0.9344 1.6367 0.2158 0.6455 0.9744 -3.1471 -5.2734 -4.3577 3.1646 3.1365 2.2803 1.2303 -1.9960 -1.5643 0.6037 1.5540 2.1016 2.3825 0.8004 -2.0847 -2.7548 -1.5073 0.1971 -0.2707 -0.7690 -1.8324 -0.6385 -4.5361 -6.8801 5.4599 2.6660 1.1252 2.2850 1.3862 1.3159 -2.3092 8.5984 0.5061 -0.6741 -2.4670 3.2934 -0.6680 2.0327 0.6889 -1.8602 -0.9325 -1.2001 -4.3458 -2.5628 0.6948 -1.1889 0.4479 2.5950 1.2931 -1.9416 0.8421 1.5717 0.5751 0.5951 0.4783 -2.2142 0.3553 6.0828 3.0287 -2.3343 -3.2264 -0.7759 -2.0090 -0.3873 -2.4778 0.6768 -3.4990 -0.8957 4.2903 -0.6766 -0.6942 8.6603 -5.4134 -0.8727 -0.3504 -3.3092 -0.5586 -0.2913 2.8905 -3.0583 -2.9724 -1.7470 3.3250 -1.1022 -4.4193 7.6704 0.5149 -0.7173 -3.6000 6.0453 0.6802 1.0947 1.2451 3.8611 4.5266 1.8951 0.7625 6.2260 2.5223 4.8966 1.8380 -0.3753 1.3861 -7.5361 -6.8810 -3.7307 -4.9193 -2.5727 -4.5778 -0.3414 -1.4648 -1.9631 -1.4302 3.2813 2.7021 -1.3306 -3.5822 -3.4123 -2.6251 -2.5540 -2.9830 1.7868 1.1612 1.7944 0.6471 3.7619 3.5844 -0.4360 2.9666 0.0957 -2.6065 -0.4815 3.7667 3.2609 1.4317 5.8806 0.0973 -3.3441 -3.2874 -4.9485 -1.6589 0.7537 0.3424 0.9215 3.8135 -4.2041 -1.8751 -0.8917 1.0067 2.0227 4.0705 -1.6316 -3.7042 -1.3612 1.3654 1.6949 -0.0461 -0.4280 2.9316 0.2615 -3.3312 0.4341 1.2323 -0.8543 -0.8620 -4.8579 -6.1758 3.1382 4.9340 3.1899 -4.1097 -4.1313 -2.7947 -1.2657 -0.6757 0.0158 -0.2664 -0.7288 -2.8256 -1.9407 0.4965 2.0938 4.2596 1.7443 2.0920 3.1468 3.6217 1.9383 0.0884 -0.7586 -0.5474 3.7117 4.4423 -1.1991 -3.2034 0.2008 -1.1999 -0.3645 -0.3658 -1.5068 4.3945 -0.5362 -1.4209 -0.9138 -0.0750 -0.9590 3.3133 2.7513 -7.0608 0.5385 -0.2792 1.0180 0.1758 4.6409 0.9990 0.8572 -2.2212 -4.3593 1.0210 5.0992 3.1964 1.4429 -1.7425 -0.9214 -2.3245 -1.3975 -6.8773 2.8027 -1.1862 0.0560 1.7064 0.3215 -0.2518 0.0527 -2.5377 -4.4163 -3.0416 -0.1822 -1.1887 -2.9410 0.6761 3.4948 1.6101 1.2626 0.2612 5.6220 -3.9114 -1.0915 4.1888 0.3661 -1.7866 -1.1389 -0.0309 -0.9349 0.3853 1.9195 0.2339 0.3886 0.9745 1.4208 2.5313 4.3943 -4.6360 -2.5445 -2.1898 -2.5330 -0.3527 4.7621 0.5928 -1.4558 7.8057 -3.8468 0.8827 0.8768 -4.7631 -5.1731 0.0664 5.3199 -1.7890 -4.3428 1.9966 2.9221 -4.5512 5.1760 0.5820 -0.2561 -0.2887 0.6505 -0.8654 -0.4024 -2.5780 -0.0834 0.1440 -1.6096 -4.1370 -4.8240 -1.6968 2.0832 4.4015 2.3414 0.0326 -1.7738 3.0088 2.5338 2.2405 0.7822 -3.4270 2.3235 0.3274 -0.0892 2.1843 2.5930 1.3745 1.7373 2.8715 2.7285 -1.1274 -0.1783 0.9497 1.0004 -0.2974 -0.2919 0.6463 0.2228 -1.5085 -5.8708 -3.6910 -0.8536 -2.5539 0.0647 -1.6643 -0.8616 0.2098 2.2486 4.6647 3.8540 2.3834 1.3656 -0.2611 -0.7523 -0.2703 2.8630 1.1570 -1.6263 -4.3844 -3.5346 -0.0484 -0.8649 -4.9645 0.4867 0.6824 1.0939 0.6691 0.3291 -0.2396 -0.9714 -0.9487 0.4056 -0.8422 -1.0662 -0.8121 -1.8756 1.8363 1.0681 3.7568 2.7493 -2.2790 1.4171 -4.9986 0.0258 -2.0461 -1.9677 -1.8134 -2.6831 -3.0621 -1.6874 2.2873 0.6491 1.7878 1.1808 1.5028 -1.1540 -1.2923 -0.0603 -3.5107 6.4917 4.0814 1.4288 0.0396 -0.1721 1.7926 0.6400 0.0107 -3.4114 12.2384 -4.2391 -4.1672 -5.5139 -1.6966 5.3015 -0.9447 -4.0014 3.1093 5.2076 5.6201 2.3962 -5.3615 -1.8057 -0.2628 -4.9121 1.2301 -0.2653 0.0535 -2.1294 -3.7763 -2.5405 -1.3165 1.3892 1.1754 1.8095 2.3931 -0.5310 -0.8291 0.5926 -0.2725 -7.2218 1.8619 3.8534 3.4226 1.1011 -4.1789 -3.5276 -0.8324 -0.4176 -2.4000 0.0369 0.9853 5.4189 -1.8625 4.5416 -0.0534 -2.2531 -1.8390 3.0263 1.3992 -0.9141 -0.2291 0.6856 2.4454 -0.0313 -6.4975 -4.6128 -3.3675 -4.8986 -0.8354 2.3584 -0.6088 4.1352 0.6068 0.7211 0.2750 -2.0557 0.4476 2.7831 4.6078 -0.4014 5.9849 2.1061 1.2312 -1.9795 1.3230 1.1384 1.2773 1.7150 -0.7509 -3.8269 -1.1290 -0.1851 -3.0673 2.4551 -1.8006 -0.5768 2.5367 -0.4358 1.0236 2.8956 4.5161 -0.4242 -3.2309 -3.4534 -0.3567 2.4123 4.0459 3.3988 2.0862 -2.1774 -5.1260 -1.0930 -2.2588 -0.1938 0.5021 -0.2723 1.0175 -2.6722 0.0196 -1.3546 -1.6702 0.8080 0.6509 2.2336 -3.1316 -2.5501 -0.7668 1.9764 1.8647 -0.0801 0.9053 0.9563 -1.0947 0.3992 -1.9982 2.2428 2.0122 -5.4193 -2.6261 -0.7274 0.7121 1.7109 3.9486 1.6660 -7.9949 4.0953 3.7255 -1.4546 8.0933 1.7853 -4.2627 4.4208 9.6075 -2.0281 -0.5418 -3.5660 -1.9219 -6.8006 -1.4426 -1.8720 6.0536 -6.8174 0.7937 0.1276 -1.9787 -1.0115 0.4548 -0.6009 1.0489 -0.3883 -3.8168 3.5539 1.8044 -0.8020 2.2377 4.0130 2.5264 2.9341 2.9402 3.1940 -12.1756 -4.5827 0.7140 -0.0649 -2.6937 -0.9969 0.6136 -0.2092 0.1112 0.1733 0.0276 0.6804 -4.1810 0.4835 3.1126 -0.8365 -1.6005 3.1133 -1.3297 -0.4657 2.8302 2.7130 -2.7204 1.1750 -4.2305 -1.0868 0.5304 -0.1415 -1.2124 -0.8981 -0.8790 -0.8763 -0.9777 1.0148 4.1145 2.1714 1.2310 -1.6938 -1.4429 1.2355 6.6877 0.2382 -3.2655 -0.5189 -2.1503 -3.4325 -3.4567 -1.0918 0.5993 0.3527 0.3437 0.2288 0.7821 1.0173 2.2607 -0.9887 -0.3595 4.4457 3.7070 1.5475 -3.7173 0.7682 -0.5101 -0.3462 -3.7019 -3.2897 -0.3993 1.1225 4.7873 3.2500 -1.8347 -2.0699 0.0727 1.2966 -0.1512 1.4478 -2.4263 -0.3987 -2.4159 -3.3225 2.8445 0.7735 0.8954 3.5197 0.0807 -1.1966 -2.9464 0.8465 1.6234 1.1215 1.2824 3.7187 2.3234 -3.7329 -7.3924 -3.2192 -4.4371 -4.8564 3.1927 2.3654 4.5154 -1.0330 4.4531 3.2910 0.0329 2.1961 1.8627 0.5090 -2.3566 -3.1635 -1.4865 -3.4766 -3.4834 -4.5095 -2.4040 -5.5450 7.4389 3.1752 2.6905 4.3345 1.8695 -0.0444 -0.0458 2.4056 -4.2525 -4.2615 -2.8448 -1.4174 -1.4188 -1.0941 0.0321 2.7304 1.6246 3.7714 3.6887 2.3979 1.9374 0.7696 -7.0469 0.1811 3.9202 4.8839 -3.2038 -0.3977 -0.4109 -0.9615 -1.1887 -1.3425 -1.0669 -2.7829 -2.9395 1.2890 1.6984 -0.5601 1.6775 -0.5469 -0.8102 -0.2298 -0.7565 0.3451 3.1792 2.2226 4.5535 -1.3689 -5.7264 -3.6531 -1.3521 0.1463 1.7110 3.1890 0.7838 -1.0176 -0.2195 1.4384 0.0207 -0.4968 -1.0491 0.1749 1.0739 2.0378 1.3580 1.2360 0.4429 -0.0980 0.7773 -0.8979 -1.2165 -1.9337 -2.9157 -4.0101 -0.3148 -4.6460 -4.2945 4.1770 5.5969 1.4549 3.5448 1.4079 -0.8343 -3.2017 5.5239 2.2268 -0.3838 -0.0607 -0.6985 -0.6307 2.4635 -0.5381 -0.2883 3.4018 2.1088 2.9180 -0.5123 -0.9613 0.0579 -4.3385 -3.8027 1.0743 5.0578 -1.8280 -2.2439 -4.7171 0.9386 2.5388 -4.5218 0.1558 2.8380 2.3948 -1.9436 0.6339 -0.7954 1.9788 1.5836 1.1696 -4.5526 -0.5640 1.4447 7.0584 -6.8023 -4.5393 -6.0449 -0.5031 6.1354 4.8739 0.3624 -1.2047 -2.0776 -1.5816 -0.7523 -0.4259 1.9866 -0.1702 -0.4710 -1.9514 -1.5113 -0.2099 2.7070 3.8409 4.1635 -1.6517 0.8031 3.1180 -4.9637 -0.0100 3.3248 2.1375 1.3785 0.2103 3.0519 1.4244 0.2968 -0.3016 -1.2728 0.9142 0.2763 0.9396 2.3345 -1.6742 -3.9431 -3.4421 -2.5066 -1.7463 1.1359 -2.5381 7.3832 7.8862 -6.4414 -8.9767 0.1372 -3.3099 3.3247 -2.2516 -2.6663 1.5419 7.2572 -0.6762 -1.4552 3.0048 6.9210 -8.5959 -2.6649 2.5301 -0.7893 -2.1588 1.3303 0.1631 -2.4438 -1.2379 0.9953 2.7203 1.9038 1.2786 0.3887 2.8669 0.3680 -0.1846 5.6338 2.1238 -1.0482 -5.2051 -1.0787 -7.2281 -1.5184 0.1722 0.1645 -0.9895 -2.0311 -3.1149 -3.2980 -2.1249 2.0221 2.1048 -0.3058 -1.0676 -2.5289 -1.4215 -1.7517 2.9140 4.1244 -0.6494 2.6877 3.2611 2.5839 -0.5792 -0.4639 -1.9119 -0.6903 1.0816 1.7980 1.1866 0.4220 1.5316 0.8944 -2.9810 5.6782 3.5367 -0.9955 2.4778 -1.9477 -3.1693 -0.0340 -1.9442 -1.8186 -2.6506 -3.9601 -3.1838 -1.3333 -0.9936 0.4708 1.8640 0.2776 -3.5639 -1.8523 3.8979 6.3274 1.9935 2.4867 -0.2835 -0.1329 -0.9778 1.4936 2.4315 0.5084 -5.4702 -1.9007 -8.9624 0.7258 -2.6244 1.8683 0.7413 8.1690 -2.3570 -4.2143 -5.3821 5.3979 -0.3396 -0.0209 2.4866 -1.7903 8.5769 -2.6396 -4.5135 0.4288 6.3503 2.3682 1.2735 1.0581 0.7198 -1.3884 -1.1783 2.7862 -0.3150 -4.4216 1.0457 0.8020 0.2322 -1.8255 0.9933 1.5522 4.2681 -3.4105 -1.8681 -3.1691 0.4773 0.1022 3.5273 4.7298 1.5753 -3.6041 -2.4060 0.8414 1.2204 1.0785 1.4517 0.9533 1.0682 -0.0095 -1.2482 -3.7150 -1.4924 0.0586 0.2151 -3.5086 -0.8381 2.6097 1.3046 0.1797 -0.8433 -0.8002 -0.6737 -0.7817 -0.0181 -1.8564 -0.0021 1.7429 2.1363 2.4019 0.8520 -1.2013 -2.3776 0.1614 -1.6535 0.2922 -1.4730 -1.1555 -1.9989 -3.7971 -3.5419 -1.7702 5.6208 1.6756 -3.4769 -2.2174 -0.5921 -2.9465 2.4449 3.2181 2.5732 0.5741 1.4008 -1.6104 2.6683 4.0017 -1.0706 2.6808 2.4971 2.2595 2.6039 2.5012 2.7248 0.3061 -0.5761 -0.0415 -2.4607 -1.2162 -0.0800 -2.7145 -3.3777 0.3468 1.3821 -2.9010 -0.5334 -2.3262 -1.0750 -1.4573 -0.7869 0.2356 -0.1795 -1.7997 -2.4756 -0.7083 -1.2917 -0.2409 1.8121 2.3854 -0.0780 -2.6742 0.8926 3.1169 2.4329 -3.2335 1.5184 1.6752 0.8566 1.3578 1.5299 1.0786 -1.5960 -3.3648 -1.6673 1.3592 5.7139 -0.3364 -0.8154 -1.0911 0.3285 1.2167 -6.5169 3.5759 0.3841 -3.4189 2.2520 -0.3564 0.3665 -3.9427 -4.1692 -3.9599 -2.7914 -2.7852 0.8501 2.1268 3.1929 2.9997 0.9798 3.7115 2.7044 0.8023 -1.3597 -0.1213 1.8505 0.8537 2.3570 0.4425 -3.7419 1.1259 1.7278 1.7181 1.0824 0.9378 2.2855 -0.4426 -2.0998 0.2868 -2.3258 -2.4774 -3.5030 -2.1920 -0.0403 0.0689 -2.1823 -1.7516 0.3348 2.6371 4.8097 2.6282 3.1949 1.4763 -1.8168 -2.3026 -0.1157 -0.0177 1.6877 0.8500 0.1002 -0.5211 1.2286 1.5164 -0.6411 -0.9348 -3.1872 0.1863 -3.1762 -3.7899 3.6345 0.6239 1.6179 1.2014 0.2608 -1.9920 4.7736 2.9884 -1.6687 -1.5700 -3.2904 2.3265 0.1217 -0.6529 1.1537 -1.3430 -3.2660 -0.7427 -0.3946 -0.8553 0.7078 -2.5785 3.3274 0.7827 -1.1641 0.3099 2.0930 -3.8923 -2.1233 -0.2174 -1.0352 2.3827 3.2008 -1.3061 -1.3553 2.0138 -4.8137 2.2926 -0.4492 0.2262 2.3061 0.7030 -0.6796 0.6702 1.2330 0.3286 -1.1249 -0.2281 0.9008 -0.4257 1.5252 0.1413 3.8708 -2.7125 -0.1048 -1.3046 -2.6469 -1.7645 -0.4236 2.6448 -0.6022 -2.0396 0.9147 3.7884 2.4844 -0.2561 -2.4529 1.8969 -0.1479 0.6950 -1.2549 -4.9008 -1.2459 0.9313 0.6906 5.2636 -1.1277 -0.2394 -2.2895 -2.5856 1.8753 1.6780 -1.6532 -2.7599 -2.2450 0.5197 -1.6003 4.4426 1.0934 -0.3109 0.9191 -3.4242 1.3304 -1.5208 -0.9853 -0.2434 3.9418 0.4425 -2.2543 4.6335 -2.0037 2.2658 -0.6139 -1.3935 -0.0563 -2.9550 -1.9056 3.4601 -0.3817 -1.6475 -0.2910 -0.5503 1.7727 0.0114 2.6384 2.8574 0.5346 -5.4829 -2.6161 0.9580 3.3952 -2.9553 0.0039 3.9564 2.2087 -0.9348 -1.5953 -1.3780 0.1552 -2.1548 0.7917 1.8242 1.6997 -1.8826 -0.8677 -0.7876 -0.2152 2.3842 2.1467 1.7116 -4.1110 0.7023 1.9303 1.0064 0.0165 5.4286 -1.1464 -1.0459 -2.0088 -1.2634 -2.1806 -0.6159 0.3372 3.4050 -1.1188 -2.8596 -2.3910 -0.5550 5.4226 -1.0697 -1.9937 -0.8683 0.0341 1.1306 -1.3868 -1.9833 2.9612 -0.7025 0.9705 -3.1777 4.1388 0.7353 0.3664 2.0843 0.2998 -0.4050 -1.1895 3.2137 -5.0324 1.1351 -2.3244 -1.0092 0.5101 2.3070 2.1852 1.5304 -1.7001 1.6095 -1.4570 -3.9762 -1.6422 -0.2532 1.3474 0.8974 0.9819 -2.2295 4.7058 -2.0380 3.1038 -2.5420 -2.3311 1.9713 1.0803 -1.0686 -1.2321 0.3041 -0.5899 -1.6032 -0.6543 -2.1903 -2.1676 0.3844 0.2905 -0.5787 -1.1285 -3.3703 -0.5637 0.3705 2.2696 8.3763 0.1004 -2.3313 3.6108 -3.7738 2.3534 -6.3897 3.9802 2.8098 6.2413 2.5170 5.1260 2.4541 -1.7202 -4.9921 -5.7179 -3.3204 5.3271 2.0124 -5.7657 0.7907 -3.2116 0.3230 1.0311 1.3660 0.9706 2.0785 2.0724 -0.0151 -0.8301 -1.1195 -2.8044 -0.9819 0.0417 0.0944 -1.2077 -2.2323 4.1593 1.4207 -2.7654 -0.5102 -1.0909 1.0182 0.5812 0.3232 1.7040 1.6371 0.0882 0.7883 2.0623 -2.4549 -1.7632 -0.0828 0.1245 -1.0882 -0.0487 -2.0254 -0.8118 -5.9132 2.5533 0.4880 2.8199 -2.1755 -1.4110 0.7926 3.1903 3.2045 1.4005 2.2246 0.4995 1.4795 1.0003 1.4155 -1.8108 -1.7649 -2.0289 -4.9177 1.9399 0.4644 -0.6846 -2.6827 -0.1356 -2.3372 -0.8774 1.8295 2.5713 0.4237 -1.6200 0.7250 1.2049 -2.5557 -1.7837 -2.0535 1.8608 2.0142 1.1559 0.4140 -2.2055 2.6316 -1.0207 -0.4407 0.0634 -6.4760 2.3566 6.2881 1.1780 2.2768 0.5492 3.6691 1.5956 1.5393 0.8045 -2.4474 -1.1396 -3.0192 -2.8013 2.1788 0.9584 -4.0593 -1.3318 -0.6033 -1.5164 -0.2224 3.1469 4.1918 -1.5853 -2.9401 2.4424 -2.0556 -1.6902 1.4657 -1.4987 -4.5783 -3.9175 1.8499 2.5001 -2.9926 -3.1367 4.3814 2.8761 -0.3135 2.0766 0.2838 0.7448 1.5373 1.7127 1.9184 1.9954 1.4552 0.6636 -0.0775 -1.4076 -2.7023 -2.4765 -6.0615 -4.2297 -2.8214 4.4402 0.5975 1.2302 2.2798 0.9178 0.1873 0.8058 1.4948 0.4584 -0.6762 -2.1053 -0.4098 -0.9510 -0.4347 -0.3909 -1.0508 -2.5837 -1.0389 -4.2899 -4.0647 3.8453 2.2675 2.8481 4.5950 1.4936 6.4165 4.7690 2.1643 -0.5306 -1.7418 -1.1821 0.4655 2.4797 -1.0005 -2.7835 0.6462 1.0540 0.1648 -0.2195 -1.2133 -1.6876 -0.2896 -1.1843 -4.2375 -2.0895 0.6591 -2.4247 -3.5305 -2.0684 0.7993 0.5286 -1.0223 -0.9537 0.6266 1.4075 1.4620 1.6652 1.3324 -0.3799 1.6047 -0.4030 -1.4183 -0.7574 3.5079 -0.6351 -0.7402 -0.5022 -0.0104 -0.1501 0.0126 -0.8303 -0.6338 0.0643 0.7573 4.3586 2.2234 -0.7379 3.8453 0.8151 2.8221 -1.4249 -1.4011 -3.5524 -6.4818 1.5666 1.2970 2.6835 1.2613 -1.8292 -0.9390 -1.6773 -1.9287 1.2477 1.3854 -1.9138 -1.0744 1.6338 -4.8418 -0.5580 -1.2900 5.2745 -2.7458 2.6939 -0.9625 2.2835 1.8861 3.1363 4.0321 1.7435 0.5233 -0.7855 2.0137 0.8065 1.2174 -4.0074 0.5860 -1.0339 -6.4815 -6.1251 1.1641 -3.9644 -6.3895 7.8222 2.0846 1.7715 3.9399 2.2907 1.6049 0.7588 -0.5727 -0.4203 1.1669 0.6185 -0.3417 1.2484 1.5946 1.7091 -1.8086 -4.7596 -2.8399 -3.9325 -2.0296 -0.6780 -0.7509 3.2019 -0.3222 0.6190 2.2698 6.3269 5.8198 2.6992 0.0601 -0.5335 -1.7361 -3.6667 0.2231 -2.3194 -2.0166 2.4960 0.1420 -3.4765 -2.9842 -0.3195 -1.1974 -2.0840 1.2403 -2.3646 -2.0313 0.7252 3.2474 2.8194 3.1981 0.9009 1.1286 -0.9170 -2.4531 -2.4020 1.6229 2.3317 -1.4971 0.7586 -3.2903 -2.1223 -1.2864 0.3911 2.1547 -0.4814 -1.6208 -0.2568 3.7660 2.5927 -0.5335 0.5221 2.1027 -1.7193 -2.1878 -1.5973 0.4487 -3.0208 -3.0695 -0.2839 1.2100 -4.2182 4.8800 1.3123 -0.8216 0.0172 1.0117 1.8195 2.2767 0.0322 -4.7072 -3.7244 0.2876 1.2946 -1.1268 -2.0514 -0.3229 1.5642 2.8282 1.4525 -0.2405 0.3745 -0.8299 0.8658 -0.5885 -0.7711 -0.1566 0.2456 -1.1305 -2.1400 -1.5832 -2.7023 2.6573 2.8982 -1.9439 -1.4435 3.2616 3.0544 -1.0646 -0.2393 0.2808 -0.6774 -3.3509 5.3938 -2.1609 4.7541 2.6519 2.9104 -0.9771 -3.4464 1.3102 4.9024 3.0997 0.1198 -0.6878 -5.0516 -2.6241 -0.1390 0.3260 -3.7625 -4.6033 5.7644 -2.7192 0.3330 -0.0774 0.0212 1.7356 2.6966 3.8703 -1.2640 -2.2040 -3.8688 -2.8745 -0.3830 -1.2433 2.7247 1.1808 0.5913 3.3839 -2.9426 0.1962 -0.6047 -3.1975 2.2593 -1.7694 -0.8337 -1.4857 1.6357 3.0084 1.4757 0.7496 0.4982 -0.8638 1.0294 3.8151 2.5480 -0.4944 -5.1598 -4.1575 1.6819 -0.9028 -3.0629 2.9081 -0.6201 -4.1737 -1.1372 0.4218 -0.3980 -0.2873 -2.0904 -1.4241 1.1799 4.8192 5.5695 2.1240 -1.9634 -0.1503 -0.2208 -2.6623 -1.2140 1.5287 0.1773 -0.4832 0.3844 1.1759 3.6352 3.0816 -1.1382 -0.8341 -1.2549 1.7627 -0.2610 -1.7582 -4.6767 -1.9887 0.8806 -0.2903 -2.9331 -3.3697 0.3291 -2.5313 6.3991 2.6926 1.0793 3.1054 0.5446 -2.7707 -3.1154 -2.4354 -2.1091 -1.9215 1.5263 -0.5089 -2.1954 -3.0602 -1.7502 2.0283 3.0940 3.1639 6.0315 0.1168 -2.3219 2.2755 0.3024 1.4017 0.2037 -0.1188 0.3630 -1.7809 1.2589 -0.0416 0.1426 -0.2900 -0.0669 -0.9365 -1.7637 -4.6543 4.5857 0.7173 -1.2893 0.7992 1.8632 0.4734 -0.8667 -0.6645 0.3054 -0.1583 0.3900 0.1223 1.1996 4.2148 1.7843 2.7706 0.9297 -1.0663 1.2711 -0.1675 -0.5861 -2.5452 -2.9107 1.2640 0.2394 -4.6672 -1.7254 1.3908 0.5115 -0.8577 0.3878 0.7710 1.2838 -1.2112 -1.2930 -1.9359 -2.3893 -2.5796 1.2692 3.1933 -0.2748 0.2489 3.4206 -5.3967 -3.2312 2.6326 4.0600 -3.1151 -2.4768 -1.4409 0.0820 -0.0650 0.8542 2.7545 0.8481 2.7775 3.2925 -1.1392 -0.5600 5.6459 -1.5505 0.7937 -0.2372 -3.8294 -1.7699 -1.1681 0.3038 -1.4631 -1.5744 -1.0602 1.2727 5.2755 0.7411 2.6424 0.9111 -1.5443 -0.8217 -2.4580 -1.9627 -0.3229 -0.7005 -0.1842 1.4410 1.1190 -0.0388 -1.7254 0.4532 2.6735 -0.1320 -2.0731 -1.2667 -0.0059 0.4063 1.1045 -0.6500 0.2919 -0.2343 -0.1432 0.5161 -1.3203 -1.9223 -1.8439 -0.3541 2.5902 0.7807 0.9691 0.6136 -2.5760 -2.1039 3.3039 7.5737 4.8510 -1.9280 1.3509 -0.0624 1.3149 2.3856 -2.8836 1.6777 1.6919 -0.2315 2.0672 -1.6292 -7.7877 -7.8864 -2.4230 3.2949 0.1825 1.4326 1.8802 -0.7600 -3.5028 -2.0654 -2.5905 -1.9780 -1.3931 -2.0377 2.0912 -0.7666 -1.6801 0.1901 1.3312 -0.8245 -0.8221 9.1933 2.6121 -0.4925 0.6596 0.5183 0.0656 0.6099 0.2170 -0.2483 0.3752 0.0528 -1.3550 -1.9590 -3.0746 -2.7901 1.7480 0.0667 -1.3253 1.8365 1.2016 0.6331 1.5502 1.2179 1.5180 -2.8697 -3.0225 1.1901 1.2949 1.2425 -0.2655 -1.0124 0.1504 0.9476 0.8294 0.4980 -4.6214 -0.4714 2.3140 0.5042 0.0042 0.6173 0.0250 1.1274 5.2946 0.9166 -1.6961 2.6183 3.7503 -0.5464 -0.4536 -2.5804 0.7239 -3.0443 -0.9745 -0.5296 -1.2153 0.2578 -4.9483 0.2574 1.6442 -1.7218 -1.0182 3.2654 -0.3113 0.1627 0.2010 -0.6825 0.4894 0.3705 0.5406 -0.5307 2.3413 3.1334 -0.2531 0.7289 0.0127 0.8411 -0.5394 -1.5751 -4.4648 3.3442 -1.3619 -2.4473 0.7892 1.6007 2.2451 -0.0142 -1.8268 1.0211 1.1632 -0.4310 0.4809 0.7681 -0.3119 -3.1840 1.8621 0.7982 3.9396 5.5125 -9.0182 -7.2338 1.4720 0.3673 4.5691 3.1984 0.4848 -1.6299 -1.5279 -0.4613 -0.3940 -0.7641 -0.7740 -1.4705 -2.0718 -3.7739 -3.8204 -2.0882 0.9538 2.3794 3.3309 2.1292 0.9829 0.7475 -1.7639 -2.1300 1.8133 5.4637 4.9096 0.4400 -0.2077 -3.2872 -2.8010 -3.3973 1.4612 -0.7884 -0.4468 0.3167 3.0330 3.6546 1.5554 -2.1172 -5.0158 -0.6924 -0.9691 2.1549 0.9464 -1.8955 -2.4830 0.5229 1.0573 -0.1544 -2.7731 -1.7762 -1.2133 0.4997 -0.4040 0.0598 2.1564 0.9676 0.1749 -0.3066 1.3334 2.1020 0.1735 -0.6351 -2.2851 0.3979 2.1071 0.8723 -1.4327 2.7248 2.2122 -3.8366 -6.8693 2.9956 2.2340 0.2392 4.5854 0.8064 -0.4877 -1.9451 0.1604 -2.0173 -3.0467 -2.6229 -0.6828 -1.5402 -4.5504 -0.6274 -1.5654 -1.1048 -5.0244 1.2208 4.3959 1.7152 0.8404 2.3104 3.9110 1.3725 3.6004 -1.5868 -0.0242 3.0095 4.6972 -2.0723 3.7478 -0.0539 -1.3604 -1.6975 -5.1051 4.5477 7.4910 0.8111 -1.5236 -2.0035 -2.3201 -1.9156 -1.8399 2.7039 1.1102 2.7618 0.1987 -8.1775 4.2697 2.1482 1.1807 -0.8188 -0.0158 -0.9415 -3.1934 -7.6652 -5.2761 -0.4096 0.8289 -0.6591 -0.1321 -2.2645 2.6890 3.5308 -0.1860 2.2844 2.1691 2.4613 -2.6176 -1.9646 -0.3365 0.4490 1.7890 3.0096 1.2687 0.1913 0.7099 3.1055 2.4376 1.5156 0.2027 -3.2954 -0.8316 0.6250 2.5125 -1.9645 -4.7360 -2.0703 0.9801 -1.1590 -1.1869 -1.8206 -2.6697 -2.2474 -1.9247 1.3390 0.7955 3.2786 2.1796 1.2439 3.8310 0.9791 -3.7027 -2.0691 -3.3297 3.4700 4.0219 -2.0091 -1.9305 1.1296 2.7892 3.5086 -0.4192 1.8621 -2.4767 -4.5620 -1.3151 -0.4855 0.2130 4.0896 -0.2763 2.9118 1.5789 -0.3477 -0.8200 5.6054 -7.8822 -3.1730 3.5183 4.1815 1.9981 -0.8261 -1.4369 -0.3881 1.0213 -3.8793 -3.6636 2.2621 1.1803 1.7727 -0.7985 -1.2902 -5.0777 -1.2307 0.3381 4.4122 -1.4815 -0.6120 4.0477 1.4256 -1.6604 -3.5999 -1.9136 -0.3445 0.3946 1.6694 1.2905 0.9828 0.5724 -0.1289 1.3498 1.3379 0.2067 0.3656 0.2492 -1.2128 -3.2905 -1.7416 -2.0178 -2.6699 -1.3526 0.2496 0.4148 -0.8854 1.0823 -0.6203 1.2579 0.4148 -2.2346 -0.4015 1.4157 4.8809 6.6230 -3.5608 -1.8735 -4.5603 3.5038 0.3340 1.4937 -1.5420 -2.3850 3.1706 1.4707 0.1938 0.5057 3.8806 -0.0936 0.3334 0.4606 1.4472 -0.9030 -1.4318 3.5118 -5.2689 -1.4235 -1.2997 0.0053 -2.1257 -3.6561 0.1855 0.3705 1.1645 0.2341 -0.8092 2.3980 -0.3274 -0.4576 -1.1851 -3.8496 2.0281 -3.3309 0.9466 -0.0780 1.0318 4.0737 2.6190 -0.3495 -1.0083 -0.1238 -0.3756 -0.3626 -1.1974 -3.0280 -3.3983 -3.5184 -2.8303 -0.2464 -1.0525 0.7469 1.1667 1.9967 2.0536 5.8842 4.6720 0.6593 -0.2270 -1.2558 0.4368 1.4898 -0.0036 2.1872 4.7731 5.3388 2.1104 0.8610 -1.9286 -4.4764 -2.9139 -5.8875 0.1502 2.3687 -3.3444 1.8016 2.0118 0.3480 1.5855 -1.0664 -5.4053 -0.2559 -0.0970 0.6606 -3.0637 -4.0503 -2.5522 0.2345 0.1786 -0.3244 -2.5706 1.7286 2.2086 1.6927 2.7400 1.9340 -0.1619 5.4140 3.6846 -5.1534 -2.2469 0.7337 0.6464 -0.7291 -0.8337 -0.3024 0.3377 1.5178 1.0116 2.5850 0.9759 -1.3970 -3.2182 -3.6906 -0.0798 3.4993 -1.9939 -5.3046 1.4115 4.7666 0.0639 -2.9601 -0.9321 -1.3007 -4.5012 -0.6859 1.6271 0.8938 1.8188 2.7147 2.4868 2.4402 0.6577 1.2040 2.0247 0.2523 1.3499 1.0757 -5.3086 -0.2223 -2.6347 1.2887 2.2547 3.3766 1.8575 -1.7910 -1.7548 1.5265 2.7964 1.2240 1.9720 0.2687 1.8100 3.1328 -2.5860 -2.7821 -3.9778 -2.4086 -2.0066 -0.0746 -4.1265 0.8108 -0.0118 0.3510 0.2469 -0.3564 -0.0688 2.2772 2.9983 0.0220 -0.8672 -4.8310 -2.0824 0.0877 2.2501 0.0661 -8.6456 -1.6422 4.8643 2.3157 2.2152 -2.3502 1.9923 1.6641 -2.2786 3.4633 2.6050 -3.0058 1.5172 -5.3190 -0.9994 -2.4221 0.2495 3.8898 -2.0580 1.1705 0.4058 -1.2798 2.5712 -0.5349 0.7192 5.2963 2.7580 0.0542 -1.8363 0.6217 3.1975 0.8761 0.6926 0.1889 -2.2049 -2.6639 -2.3949 -0.4550 0.9028 0.9417 -2.3200 -1.6049 2.2215 -3.0876 -1.1840 0.0332 0.6867 -0.5444 -2.6560 -2.3272 -1.9975 2.7492 3.4613 1.2531 2.2970 0.6826 1.6161 0.8081 -2.8567 -0.2510 3.1363 -4.7699 -0.8591 1.4746 -1.9362 0.1179 0.1304 -0.0905 -0.0885 0.5876 2.0857 -0.3875 -1.3306 -0.8957 -0.1982 0.8458 -0.0513 -2.2349 -5.5634 7.5385 3.9965 -1.0630 -1.5645 -2.1020 0.2680 1.5416 0.4773 -0.0338 0.6704 0.3091 -0.0982 -0.8312 -1.8586 -2.1668 -3.0698 -3.6621 -2.8717 -0.1465 2.9749 3.0473 2.3156 -0.0362 0.7605 1.1471 1.5312 -1.4651 -1.1492 -0.6700 -0.6012 -0.1247 1.1550 -0.2106 -1.2695 -0.4411 1.1446 4.1491 2.6600 1.3124 1.6069 0.6316 -0.4851 -2.5715 -4.3867 -1.0040 1.7189 0.2437 0.6555 0.3411 0.8466 -1.7425 -0.1636 6.1311 0.6211 -2.7030 -1.5009 -0.1744 0.8660 1.3589 1.2490 1.1273 -2.7402 -0.0949 -1.5440 -1.8610 -0.9159 4.3927 3.3672 0.9009 -1.2521 0.6230 -0.5206 0.8245 -0.9087 -1.8374 0.0097 -3.1469 -2.4307 -3.0482 0.2541 1.9480 5.7092 -3.3716 -3.2953 2.6836 -0.9014 2.2171 0.1913 -1.6779 -0.9585 -1.3241 0.2292 1.4881 2.7969 0.2756 -3.8207 -2.4695 -0.3208 2.3024 2.5414 -0.1815 -0.2933 2.0837 0.9892 -1.0861 -2.9823 0.1186 0.1645 -0.3865 -0.8001 -0.3047 -2.3398 -0.6229 -0.0641 0.8491 1.7026 -1.1341 -2.0704 -0.3123 0.1814 3.8820 1.2943 0.4627 -0.5672 0.5181 -0.5712 -0.1015 -2.3234 -2.3520 0.9949 2.2704 0.9946 0.3560 0.9113 0.1017 -0.4530 0.8520 -1.0302 0.8806 0.3674 -2.6615 -4.8900 -2.9475 1.9045 2.6392 4.4864 2.3941 1.7010 1.9067 0.4931 -1.4348 -2.6074 -1.1597 -1.0504 -3.0460 -2.8157 -0.6597 -0.5920 -0.3406 -1.1230 -0.8586 4.9381 2.8734 1.4518 2.5923 -2.6625 -0.8669 1.9301 3.2551 6.1577 2.0399 2.6785 0.7380 -0.3115 4.7391 1.4868 -6.0175 -7.4317 -4.5623 -0.8590 3.8966 -0.1349 -2.5476 -0.0080 -1.4441 -2.7383 -1.8064 0.5147 0.5800 -2.6271 -3.9359 -2.9321 -2.4785 0.6104 -1.7343 -0.3653 -0.3024 0.2350 2.3057 1.9998 2.2392 1.9124 3.0438 -0.2241 5.1672 -2.2020 1.8580 3.3342 3.0400 1.0670 0.2251 0.5480 1.7906 0.7871 1.2850 -0.3795 -2.0150 -2.3713 0.5611 0.5214 -0.8547 0.0171 -1.8463 -2.7006 -1.7828 -3.0844 1.4841 -0.8100 -2.4242 -1.8509 -0.9746 -1.0553 4.8924 1.3818 -1.8605 -4.3708 -2.0142 6.4457 0.9506 -0.5924 0.1104 2.4175 -0.6754 -0.8459 -0.1554 -0.0530 -0.0877 -0.9877 -1.7358 0.3853 1.1022 1.2975 4.3189 -1.9877 -3.1833 1.0392 0.1796 4.1158 1.4650 -1.6177 1.6123 -4.1615 -3.2584 1.2187 -4.3136 4.5989 0.4487 -0.1107 -2.0381 -0.2337 2.5745 2.8339 -0.0417 1.4413 -1.4483 -1.1675 -6.2515 -6.9360 -3.2717 4.8492 0.9246 -0.9750 4.1724 1.7821 1.3820 2.0655 0.1081 -0.6949 0.1665 0.6685 0.8790 0.7273 0.1766 -0.0005 -0.2218 -0.4294 0.4489 -0.4843 0.2008 2.1975 4.5024 -1.0296 -1.2026 -2.5547 -1.0944 -2.3636 2.3396 2.1543 2.2429 4.7578 0.8390 -0.8895 4.6297 0.4985 -2.3653 2.1787 -1.0612 -0.8953 -6.2919 0.5546 -0.4272 -0.9670 -1.9781 -0.4692 -5.5295 0.6795 0.1530 -2.1926 2.1973 4.5005 -1.3453 1.3286 -2.0310 1.0783 -1.3510 -0.7983 0.6783 -3.4857 5.3977 -3.6561 -3.5986 6.0882 0.1428 -0.9697 3.0219 -5.1583 -2.6086 -0.0766 2.7222 2.0552 2.4096 3.0319 1.0596 -0.1283 -0.8104 -0.2732 -1.4259 -4.0229 -1.4469 -1.6716 -1.1861 -0.9216 0.6780 -0.0004 2.0118 0.6041 1.8333 3.1078 -1.8097 1.1817 3.7643 0.5185 1.9828 -0.3454 1.2321 -1.0494 -6.2996 3.9399 -4.6043 2.7296 -2.2906 -1.7821 -0.5503 -0.1687 1.5615 -2.9514 -1.9822 -1.7870 -2.0807 -0.6471 1.7376 -0.7108 -0.9897 0.1273 -1.5435 -3.4080 1.1979 3.2003 1.0189 -0.9731 -1.0790 -1.9655 3.5511 1.2692 3.4593 1.6049 1.8097 0.7952 2.3044 2.0422 0.0385 -1.4890 -2.6817 -2.4115 -2.0814 -4.7349 1.3168 5.2099 2.0691 0.2209 -0.3967 -1.3910 -0.0825 -1.3970 -1.3074 2.1664 -0.6317 -0.6961 -1.7818 1.7212 1.8896 0.7627 6.4133 0.0239 -2.0812 -0.6340 -0.8745 -0.8436 -3.5167 -3.0992 -0.4403 -5.0217 5.7819 4.7221 -2.9383 1.2443 -0.8542 -4.8873 -5.4381 -4.2630 -4.1290 0.7749 4.7768 0.2842 0.3115 -0.2820 0.2149 -0.1804 0.6193 5.7873 5.1866 -1.3257 -3.0389 -1.9693 8.9711 -0.5589 -1.7203 0.3016 0.2697 0.0913 0.2499 2.9554 0.3320 0.0927 -3.0516 1.3578 -0.8456 1.2764 0.1248 3.9102 2.8147 -2.3847 -6.7532 -2.2614 1.9868 1.2535 2.3588 1.8978 1.0798 1.0217 0.8258 -0.3312 0.8967 -0.1754 -0.3981 1.0150 -0.3879 -0.8493 -1.2690 -1.1797 1.5079 -0.1598 -2.3607 1.1269 2.6480 -7.2674 1.1746 4.6165 5.4940 3.4461 -3.9021 -1.6050 -0.1323 -0.9380 -0.4156 -1.9000 -0.2856 -1.2349 -3.6515 -2.9147 0.0530 1.1469 0.2371 -1.3253 3.8834 -1.7466 -2.2758 1.8844 4.6711 2.2076 -1.3597 -0.4741 0.4627 -0.0358 -0.0017 -1.0258 -0.6957 -1.0270 1.1372 -2.6040 -3.0616 -4.3523 1.6973 1.9314 1.1807 1.7410 1.9665 1.3206 -0.1069 0.8467 1.1209 2.6581 1.0313 -0.7646 -0.9327 -0.4666 1.3979 -1.1019 -2.4235 -8.2049 1.1737 4.9310 0.7484 0.2664 -6.0708 2.6104 1.1852 -1.5416 -3.6491 4.4048 -6.7437 4.6469 1.6802 1.2910 2.2789 2.7610 1.3944 -0.7732 -5.8136 4.4421 -2.2039 0.8414 -5.8722 -4.6747 -3.6578 10.0038 -3.9689 -0.5502 1.1683 -2.1974 -1.9082 0.1416 1.6772 0.3260 3.7162 2.4168 2.6207 -1.7735 1.5236 0.3480 -0.3569 4.1471 1.4471 -0.6226 -8.1997 0.0448 0.6532 1.4910 1.2058 1.7096 2.3950 1.7319 -1.5483 -1.8447 -2.2888 0.7634 3.2796 1.6709 -4.9985 -3.0829 -1.1211 1.2229 -0.2209 -1.1940 1.9569 -1.7811 -1.9523 -4.3005 -4.5837 1.0346 1.2567 1.0099 3.2344 2.8332 1.1895 -1.5164 -2.2052 -1.2334 -1.4331 2.1022 2.3179 5.6712 2.1958 -2.0504 -2.5243 -1.0460 -1.1815 -1.5300 -0.6842 -0.5633 -2.6867 -1.4016 0.6359 -2.0170 -1.2970 -1.6432 -1.0489 -1.3764 -1.1731 -0.5962 3.5229 5.3595 3.1187 3.4061 0.3009 0.8550 -3.1382 -0.6280 -0.8774 -0.9941 0.9435 0.9619 0.8520 -3.3796 -3.2423 -1.3758 3.3040 2.2194 1.0056 2.5348 -0.2996 0.9762 -3.7819 -0.3936 5.7234 -0.4105 -3.2428 -5.3967 -1.5226 4.3711 2.0836 2.1112 0.7032 -4.0183 -12.6551 -15.4852 0.9361 9.2253 10.5424 3.4081 3.4337 -0.7556 1.6657 0.8127 4.5992 -0.8160 1.8248 0.0419 0.5248 1.8646 -1.2814 -2.6618 -0.0669 0.1817 2.2151 -0.8152 5.1179 2.3104 3.6555 -8.7128 -2.0790 1.0629 -0.0963 -1.5473 0.4756 -2.0146 -0.1111 0.3482 -0.0235 -0.7175 -0.1449 -0.3857 -0.8724 0.4592 0.4980 0.2237 0.3924 0.2623 -0.5426 0.9370 -0.6701 0.1600 0.1978 1.4707 -0.4540 -1.0274 -0.9442 -0.4989 -0.2375 -0.5991 -1.2414 -0.4327 -0.2055 -0.5191 2.6955 3.9938 -2.7275 1.8004 1.9744 1.7067 -0.5541 -5.7033 0.6046 -1.4009 -1.3782 3.6669 -0.8575 0.6722 1.8197 2.2695 1.4265 -1.5445 -1.7430 -1.5937 2.0470 -0.1126 0.3473 1.4243 0.9317 -1.3895 -1.0640 0.4664 -0.0706 -3.0958 -1.0532 1.1198 0.9735 -3.1553 -4.9524 -1.8534 0.7715 2.4911 5.1271 0.4320 -4.1146 1.1236 2.7184 2.0135 1.9444 1.7813 1.8232 -2.6267 -5.6361 0.3774 1.0979 -0.3363 1.9497 1.0413 -1.2191 -0.8636 0.0511 -0.3375 -0.5315 -1.0284 2.1218 -5.0828 1.0827 -2.2172 -1.3936 0.4537 3.3006 0.9962 -1.2147 0.0930 -2.8723 5.6705 -3.0064 -0.6690 1.9882 3.1451 0.5101 1.4897 6.0735 3.0322 0.7197 2.5823 0.9024 -1.3595 -0.6102 -4.4164 -5.2345 0.5038 -1.7243 -1.0135 0.3868 -3.2999 -1.3127 -0.5603 -0.4395 -0.5779 -1.3273 -0.7737 1.1446 2.1363 0.5709 -0.9646 0.1742 -0.3429 0.7079 -1.3617 -0.1807 0.8278 4.5177 -3.6128 1.9484 -0.5738 4.9592 5.5662 -1.4308 2.4625 -1.3728 0.3179 2.5142 -3.1176 -3.0793 2.5866 -6.0767 -3.0209 -1.0428 3.7946 3.4423 -3.9407 3.8680 -5.8781 -3.2612 2.7097 1.8752 4.6096 2.6992 0.0622 1.9683 -1.5159 -0.2846 2.0429 5.1916 0.0415 0.4228 0.2499 -1.8859 -1.2282 -1.8414 -3.2239 -2.8594 -2.2718 -1.9470 -2.1050 -0.4172 -0.0660 -0.7815 -1.3234 1.6425 1.5960 0.1952 2.8005 1.8348 -0.0556 -1.7528 -0.3330 2.5351 3.2175 -0.0237 -2.6102 -2.3993 -0.4569 0.2104 -3.8124 0.5340 -7.1325 7.3739 -7.1474 5.0035 4.0837 1.7481 0.6285 2.1470 3.3649 3.4871 -4.6213 5.3643 -0.8361 2.3067 -0.6517 -4.1528 -4.1599 -0.0969 -7.2432 6.4977 -1.8922 6.0123 2.6649 3.9019 -2.9401 -5.9544 6.5995 -3.7727 -1.3909 -4.1986 0.3151 1.1248 0.2299 1.4836 -7.4381 0.2549 4.7727 -2.9947 -3.2755 0.0546 0.0075 0.5596 0.2523 -2.3268 -4.5642 -3.6799 -0.8395 2.7336 3.7088 2.7486 2.6118 1.5065 0.0463 0.4170 -0.5592 1.5006 -0.4534 -1.6715 -2.0529 2.9815 2.4495 1.7545 3.2822 2.8844 2.5666 0.0398 1.6192 2.6128 3.3153 -4.7284 -2.6356 -1.7561 -4.3333 -3.6328 -2.9815 -0.9212 -0.8755 -0.3601 -1.2811 -0.8024 1.2002 3.2220 -0.7626 -2.1102 -1.0525 -1.8044 0.6518 -0.3024 1.2038 0.2348 0.2257 -2.8991 -1.6610 1.3306 -0.9177 -2.5629 -0.6077 5.6868 1.7272 -0.1833 -0.3751 0.5635 0.1503 -0.2949 -0.6821 1.4873 -1.2805 -1.3007 -0.6803 0.0098 0.9789 1.7868 3.5914 0.8184 1.0857 6.4677 -3.3457 -6.7060 -2.0913 4.2126 1.0339 -0.8906 0.9053 2.8206 3.1913 0.4808 1.7342 1.1617 0.7387 3.7928 -0.7288 -6.1883 -1.6937 -4.9005 -3.6291 -0.7611 -1.4035 -0.2407 0.3643 -8.3754 -2.2519 1.3080 1.8062 0.8850 1.6497 2.0880 2.7261 0.2633 -0.5998 0.5979 0.7034 0.9960 2.9711 0.1650 0.8745 -0.1614 -0.6875 -1.3556 -3.6024 1.4188 1.0202 1.5256 1.6620 0.7476 -1.4390 -3.4051 -1.8780 0.4521 -3.9741 0.7867 -0.3719 -2.3721 -1.0437 0.6801 -0.2011 -3.0818 2.9062 4.2361 2.3315 0.1054 -2.6122 -4.3807 -5.3145 -0.2846 4.3842 3.0170 3.8061 0.7110 -1.0498 -0.2574 -0.9802 0.3402 1.2503 2.5457 -7.8042 -0.1469 2.8259 3.0062 0.8386 5.2058 7.1080 4.9534 -1.2430 -6.6855 -3.7117 -6.1961 -2.1515 -0.5576 -1.6169 5.7678 7.7780 -3.9195 1.0323 -4.8749 2.1979 -6.6948 5.7018 -1.1809 -0.9126 5.0054 3.2246 2.7220 2.5774 0.3515 -0.4988 -0.6659 -1.1531 -0.3512 -0.2899 -1.1677 0.8076 -0.0710 -1.3279 -1.8820 -2.0262 -1.5275 -2.2770 -2.2582 0.8080 -0.3421 -2.1542 -1.9404 1.9715 2.0717 1.2690 -0.5900 2.8831 2.5295 -0.0718 1.0132 -2.1895 0.9449 0.2787 2.8471 3.2171 -2.0622 -4.9892 -4.8142 0.1278 -3.5648 -4.5220 -3.8219 -0.0484 2.5590 3.3348 4.6892 3.0890 3.1738 2.4402 -0.3648 -2.0478 -1.8476 0.1171 -0.1749 -2.2364 0.1988 -2.2378 0.6726 0.5920 -2.5566 -0.8410 -0.4280 -0.4406 -0.5726 -0.3279 -1.8710 -2.4830 2.8140 4.1548 -1.1877 -1.2228 1.1741 0.7041 -4.1128 0.8974 1.6460 2.7315 1.4956 0.4265 0.6395 0.6244 0.2175 0.2548 -0.6436 -1.4509 -1.2471 -1.8889 -1.6984 0.6300 -0.0902 -1.4274 1.6267 2.2897 -1.4907 -1.0863 -0.5990 -0.3234 4.5402 1.1229 -3.0281 -3.4576 0.2465 1.1848 -0.3128 -1.4112 -1.7883 -2.4368 -3.6604 0.2309 4.1432 0.2306 3.9874 1.3414 -2.9661 0.2318 1.3943 2.8996 1.0512 2.1197 -6.4523 -0.8108 3.0394 2.9265 1.7276 -0.6852 -1.3401 -1.2086 0.2339 0.6323 0.9584 -0.4322 -0.4865 1.1438 3.9792 -0.5978 -3.3409 -0.0134 0.1557 0.5712 0.8836 0.6632 -0.5682 1.0909 1.0200 0.2143 1.7898 0.4314 -1.2105 -1.6888 -2.8939 1.5904 1.4323 5.0287 -2.4090 -2.6282 -1.2927 -1.8499 -3.8726 4.2691 2.7571 0.5054 0.5914 -0.4593 -1.9535 -2.8534 -5.1043 -5.0146 0.3167 1.9210 1.9920 1.2596 1.2329 -1.0134 -2.2148 -0.9619 3.3405 0.4893 1.9185 3.2509 -7.8257 -8.0514 -2.2922 4.6049 1.7841 0.2877 2.4600 0.2299 0.3961 0.7952 4.9841 0.5914 -3.3601 1.4043 5.5671 2.2508 0.0018 1.5100 -2.0511 -3.2867 1.5686 1.2169 -0.6391 -2.6751 -3.0325 -3.9104 -2.5516 -0.9763 6.3909 -1.3255 1.3817 1.7409 2.2064 2.8908 0.3118 0.3554 0.3092 -0.0695 -2.5566 -0.6363 1.1784 0.7886 1.7506 3.8841 0.1097 -3.4846 -1.1668 -0.2517 -0.3004 -0.0493 2.0270 0.2092 1.5440 3.4255 0.2943 -0.8517 -1.6072 -4.0976 -5.8976 2.4958 0.9988 2.8848 3.2891 3.3681 1.4676 3.2906 1.3735 1.1970 0.4611 -0.5875 1.7464 0.9583 0.5681 -1.4825 -4.2976 -3.2226 -2.3712 -7.0782 -2.8558 0.2917 -0.2746 -0.1545 -0.1213 -1.7658 -0.9647 -0.8990 -2.2776 -1.6043 2.1487 5.2377 -7.3002 -1.2976 0.8951 2.6087 1.9104 0.8944 4.2107 2.4289 -0.6124 -3.0624 4.5993 2.8908 2.6348 2.5753 3.5423 -1.3467 -3.6340 -1.3719 -1.5896 -1.7807 0.4182 -0.4869 -0.0081 -1.7322 -5.0302 -4.0281 3.2297 0.1854 0.7317 0.2006 -3.2143 -2.4079 2.3832 -1.4835 -2.9589 -4.3471 -9.4701 -8.6980 2.2131 11.9939 3.4222 5.6731 1.0493 0.9347 3.1770 3.6996 -0.0115 2.2951 -2.8928 -1.3571 2.2986 0.5686 -2.7234 0.0628 3.3595 3.0322 1.2528 0.1697 0.2877 -3.1109 -4.5198 4.2898 4.5477 -0.5365 -2.9437 -1.7760 -3.4896 -0.4971 0.5506 -0.8230 0.0226 -1.9088 -4.1034 -3.5139 1.8311 6.6465 1.9042 -0.2585 0.4811 -1.3603 -0.8669 -2.6469 -2.4021 -2.3699 -1.0708 1.8059 0.3697 0.3642 3.4726 3.6036 1.8666 0.3455 -0.4415 1.4530 2.1752 0.4141 0.9988 0.9339 2.0369 0.0808 -1.3138 -1.2683 0.1032 0.3074 0.3794 -2.2480 -4.4451 -2.7006 1.2456 0.0770 -0.9714 0.8948 -0.5528 -1.5023 -2.1884 -1.6190 -2.6643 0.3765 5.2588 1.9474 4.7336 6.0668 0.9206 -6.1173 0.2687 4.2344 -2.7801 4.7836 -5.9468 -5.1428 -3.5447 -2.6492 -1.1225 1.1104 -0.6763 -0.3734 0.7874 2.9348 3.7914 3.3802 -3.0687 -1.7645 -1.7552 0.4322 1.5566 3.1434 -2.9717 0.2913 0.3294 0.1693 2.3099 -0.6833 -2.4051 -0.8700 -0.1793 -0.7055 -1.1773 0.0766 -2.2742 -3.5734 -2.1986 0.6775 0.1605 0.0083 4.2284 1.3025 3.7892 -0.0746 -0.9582 2.5465 0.9486 0.1048 1.8316 3.4918 2.1758 1.1342 1.0848 2.4632 0.0993 -1.9453 -1.1703 -1.6274 -2.0353 0.8991 0.4736 -4.0911 -2.9565 -2.3552 -2.1133 3.5874 0.6208 3.4997 6.2697 4.2107 1.2652 2.1894 1.1355 -2.5271 -2.9525 0.0535 0.3829 -2.5199 -2.9063 -2.7287 -1.9607 1.4600 1.2748 0.4400 -4.8467 -2.3602 0.5243 2.9289 2.2684 0.4191 -2.1542 -0.2881 -0.2706 0.6758 5.4475 1.1883 -2.5477 -6.5024 -4.1506 0.6656 0.9576 -1.2352 1.0736 -4.8441 2.5699 3.2741 -0.7794 1.1463 3.5016 1.1120 0.8485 -1.0628 -0.8132 3.8405 -0.3344 1.2653 0.4357 0.5494 -2.5741 -2.4964 -3.4166 -4.9706 4.8271 -4.7341 1.1838 2.4711 1.8447 1.0979 -1.7573 0.3863 -0.5133 -3.1578 0.0583 -0.5417 4.1974 -4.6030 0.1241 -3.2329 4.6242 -4.6647 -2.4610 0.5959 3.2183 -1.2626 5.6612 0.3859 -2.3894 -1.0328 1.7896 5.5648 5.2220 1.8869 1.0956 -0.1977 3.2983 0.9466 -2.0813 -0.1679 -0.5816 -0.1714 -2.7510 1.1951 1.5496 1.6400 -5.0073 -9.8080 0.7738 -1.7298 -3.2257 -0.3183 1.9284 1.7227 0.8166 0.9095 0.5332 -0.5016 -1.2660 -1.9608 2.0035 -2.6922 3.7039 0.8905 -0.7247 2.7531 -3.0591 -0.5571 -0.0748 -0.5070 -0.2516 1.7723 1.4041 4.3520 1.7022 1.0990 -1.4641 -2.3620 3.1174 0.5476 1.5192 -1.9294 -4.9678 0.2919 -3.1451 1.3976 -0.5997 -1.9017 -0.3043 -4.5751 -6.4864 -2.8079 2.8553 1.4264 -0.6290 0.8259 1.1617 -0.8255 -1.1913 -0.9336 -0.8179 -0.6841 2.7254 1.9190 4.4832 2.4919 2.0452 -0.6788 2.9368 3.5644 3.7164 3.7726 0.3148 -2.5071 -1.0177 0.4365 0.4818 -2.1099 -3.0728 -1.1823 -1.8323 -2.5460 -3.2217 -2.5081 0.1068 -0.3340 2.0018 3.0001 2.0122 -0.8437 -0.0894 -3.5669 0.2151 1.3672 -1.1852 2.2748 0.2674 2.1266 -4.5961 -3.5181 1.6410 4.2095 -4.0873 0.0362 3.5548 -2.6567 1.8468 0.9915 -2.9528 1.3693 1.3737 3.6447 4.6399 3.0004 -0.4081 -0.5069 -2.0885 -2.1563 0.7639 0.4790 -2.4821 1.6495 0.8280 -0.4457 -4.8607 3.5285 3.1896 -8.5655 -4.4449 -2.6584 -0.3396 2.7055 3.1313 2.6691 -0.1405 -2.6920 1.1380 5.9263 0.1508 -2.5031 -2.5963 -2.2339 -0.4387 2.7348 0.1166 -2.0958 -0.1884 1.7591 -0.4506 -2.2585 -2.0183 -1.2141 2.3804 5.1371 -0.1012 0.7185 -1.9558 -5.5843 1.7274 2.5676 1.3295 -2.3148 3.4722 0.9168 0.3809 -1.2468 -0.6805 -0.8055 -0.5741 -1.3187 -1.6054 -1.8387 -3.0009 -2.2631 1.6411 1.0542 0.8630 1.3059 0.6660 0.5171 -0.9355 -1.8837 0.8703 0.3850 -0.0855 0.2754 4.4605 1.4674 4.0853 2.9178 0.0251 -1.7053 -2.9819 -2.0918 -1.9947 -0.8293 -0.6373 0.5052 2.1796 2.6733 -1.7046 -0.6344 1.3620 -0.4864 -2.0884 -1.6708 1.5012 1.5754 -1.5635 2.8252 -0.9149 -3.0463 -4.7327 2.7084 1.1209 0.7968 0.7865 -1.2527 -0.1248 2.6941 2.7972 2.2336 -0.0652 -0.4532 -2.9265 -0.0560 -0.4324 -0.3945 2.4620 0.7164 -1.5674 -3.1513 -1.6402 2.4149 2.9010 2.5761 3.2262 0.0749 -4.5314 -3.4112 0.2922 1.0743 0.0408 -1.5976 -0.5032 0.6577 0.7598 -0.7940 1.9710 1.1730 -0.6838 -2.2094 -1.9356 1.4952 -2.0825 -0.2927 0.7657 -1.8337 4.4472 -3.8324 0.7557 0.0732 -3.6271 -1.9071 4.3140 2.4552 -0.0317 0.9857 3.7325 2.7934 1.0157 -1.7096 -2.8454 -1.8953 -0.7562 0.3146 -0.3781 -1.0020 -1.6158 -0.3984 -0.0573 0.9972 1.0112 -1.0599 0.0370 3.6124 1.1087 -2.9047 -1.4832 -1.9899 -0.8731 -0.9330 -2.9066 2.3820 -0.1603 -0.7170 -1.1285 -0.9274 2.1578 6.4011 -1.6535 2.3099 -1.6654 3.7268 0.0883 -1.8527 -0.5184 -0.2568 0.6353 1.3687 1.8257 0.3226 -0.8766 1.0000 1.0853 1.2934 0.8779 1.7553 1.1543 -2.0442 -1.6763 -0.4593 0.9294 -1.2072 -2.2593 -0.6144 -2.8074 -0.3032 -1.2070 -1.3475 -1.8312 -1.7806 -2.9611 -3.1818 2.9332 -0.1240 0.1906 2.9202 -1.8371 1.0525 -2.0319 2.7074 -2.1979 -1.3072 -0.5591 3.0013 2.6600 4.9011 -5.1303 3.3870 -3.7967 -1.9466 -5.3864 -1.1368 -0.5684 3.7351 -0.5755 -3.2378 -4.4250 2.0350 3.9372 5.4701 -2.7768 5.9464 6.6849 -3.7875 1.9948 -0.4230 -1.3037 -1.9678 -3.1520 -1.4018 0.2092 2.8010 2.0760 -0.3324 1.0911 0.9050 1.7187 3.4255 1.0022 3.5722 -3.5224 -4.7658 -1.0745 0.2766 1.2898 -0.8471 1.9772 -2.9635 -3.0240 -2.2547 0.1703 1.7771 -1.6073 -3.1859 1.5410 1.4356 0.9203 3.9297 4.2495 5.7007 -4.0193 -0.8612 1.6423 0.8844 -5.1605 -1.1517 2.9132 0.8992 -1.0688 -1.5448 -0.9185 0.4003 -1.7700 -2.7768 -1.4639 0.2261 0.7139 1.7997 3.0514 3.3204 0.6803 0.9792 -0.2717 -2.6450 -0.2252 -2.2988 -2.9741 -2.4804 -3.0116 -3.1521 0.1074 1.3714 0.6662 2.0637 1.7849 -0.4611 -0.7720 -1.6172 0.8203 3.4203 0.8069 2.2581 3.2451 0.5915 -2.2429 -0.4245 -0.8028 -0.2290 0.2137 -0.4319 0.5580 0.2543 0.9172 0.8892 -0.4807 -1.2827 0.9202 1.1454 -1.6931 -3.6479 0.4568 3.9049 1.2435 2.6145 0.7928 -5.3425 2.6190 1.9162 0.9769 -0.1078 -0.4290 -0.3650 -2.8284 -4.4494 -5.9910 -4.8405 0.7110 -0.4595 0.2195 3.3942 0.9527 -1.8867 3.8742 3.7699 1.2150 1.7087 1.8829 0.7201 0.6607 -0.0626 -1.1940 -1.4411 -0.0944 0.1172 -0.7491 -0.3712 -2.5287 -2.1899 -1.2280 -1.4906 -0.5689 -1.4885 2.7842 4.0586 -1.1367 4.3200 4.6710 0.9897 -0.6156 -0.6851 -1.4120 4.1532 4.4321 1.1339 -1.0985 0.5736 1.4085 -4.6356 -3.3117 -1.5968 -3.4345 -0.7293 -0.0528 -0.3096 -3.6684 4.1880 -2.5398 -1.3830 0.0979 1.9654 3.5192 -0.0522 -3.2870 -3.8507 0.6356 -0.9850 -3.0198 -3.7269 -0.8310 1.9829 1.8339 -0.8073 0.2152 2.0459 6.1180 2.0688 0.4962 3.2227 3.5953 1.3395 -3.4218 -4.9933 -1.9981 0.9513 -1.0998 -2.7535 1.3298 -0.6976 0.0716 0.7392 5.8854 -4.3047 2.1890 1.9699 -2.4444 -0.0765 -5.8327 1.1129 0.8081 5.6003 5.5684 4.7020 2.8089 0.4347 1.1649 -4.9188 -11.4465 -1.3196 0.4225 -2.4705 0.3286 -0.0113 8.7340 -2.1220 -2.1264 -1.4373 -1.6231 -1.3969 -2.0111 -1.2620 4.3084 -1.2012 1.2341 0.1866 0.0635 -2.6548 2.3896 1.8088 0.0290 -4.3105 3.9166 -0.0331 -0.3748 -2.4710 1.0435 2.3583 0.6310 1.3989 1.5277 0.7608 1.0894 1.7235 2.0681 2.3537 0.9918 1.2164 -0.3325 -2.2666 0.1756 0.1615 0.5196 -2.6730 -7.1201 -2.9272 -5.4551 6.1563 7.8768 5.4153 -2.5369 0.0405 4.1259 -0.2108 -4.6599 -0.9803 -1.3472 -5.5873 0.0334 -6.0975 -0.7915 0.7551 -0.1575 2.8766 -3.5702 -0.2561 4.0100 1.0615 codec2-1.2.0/src/codec2.c000066400000000000000000001677471445607075400150050ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: codec2.c AUTHOR......: David Rowe DATE CREATED: 21/8/2010 Codec2 fully quantised encoder and decoder functions. If you want use codec2, the codec2_xxx functions are for you. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2010 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "codec2.h" #include #include #include #include #include #include #include "bpf.h" #include "bpfb.h" #include "codec2_fft.h" #include "codec2_internal.h" #include "debug_alloc.h" #include "defines.h" #include "dump.h" #include "interp.h" #include "lpc.h" #include "lsp.h" #include "machdep.h" #include "newamp2.h" #include "nlp.h" #include "phase.h" #include "postfilter.h" #include "quantise.h" #include "sine.h" /*---------------------------------------------------------------------------* \ FUNCTION HEADERS \*---------------------------------------------------------------------------*/ void analyse_one_frame(struct CODEC2 *c2, MODEL *model, short speech[]); void synthesise_one_frame(struct CODEC2 *c2, short speech[], MODEL *model, COMP Aw[], float gain); void codec2_encode_3200(struct CODEC2 *c2, unsigned char *bits, short speech[]); void codec2_decode_3200(struct CODEC2 *c2, short speech[], const unsigned char *bits); void codec2_encode_2400(struct CODEC2 *c2, unsigned char *bits, short speech[]); void codec2_decode_2400(struct CODEC2 *c2, short speech[], const unsigned char *bits); void codec2_encode_1600(struct CODEC2 *c2, unsigned char *bits, short speech[]); void codec2_decode_1600(struct CODEC2 *c2, short speech[], const unsigned char *bits); void codec2_encode_1400(struct CODEC2 *c2, unsigned char *bits, short speech[]); void codec2_decode_1400(struct CODEC2 *c2, short speech[], const unsigned char *bits); void codec2_encode_1300(struct CODEC2 *c2, unsigned char *bits, short speech[]); void codec2_decode_1300(struct CODEC2 *c2, short speech[], const unsigned char *bits, float ber_est); void codec2_encode_1200(struct CODEC2 *c2, unsigned char *bits, short speech[]); void codec2_decode_1200(struct CODEC2 *c2, short speech[], const unsigned char *bits); void codec2_encode_700c(struct CODEC2 *c2, unsigned char *bits, short speech[]); void codec2_decode_700c(struct CODEC2 *c2, short speech[], const unsigned char *bits); static void ear_protection(float in_out[], int n); /*---------------------------------------------------------------------------*\ FUNCTIONS \*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_create AUTHOR......: David Rowe DATE CREATED: 21/8/2010 Create and initialise an instance of the codec. Returns a pointer to the codec states or NULL on failure. One set of states is sufficient for a full duuplex codec (i.e. an encoder and decoder). You don't need separate states for encoders and decoders. See c2enc.c and c2dec.c for examples. \*---------------------------------------------------------------------------*/ struct CODEC2 *codec2_create(int mode) { struct CODEC2 *c2; int i, l; // ALL POSSIBLE MODES MUST BE CHECKED HERE! // we test if the desired mode is enabled at compile time // and return NULL if not if (false == (CODEC2_MODE_ACTIVE(CODEC2_MODE_3200, mode) || CODEC2_MODE_ACTIVE(CODEC2_MODE_2400, mode) || CODEC2_MODE_ACTIVE(CODEC2_MODE_1600, mode) || CODEC2_MODE_ACTIVE(CODEC2_MODE_1400, mode) || CODEC2_MODE_ACTIVE(CODEC2_MODE_1300, mode) || CODEC2_MODE_ACTIVE(CODEC2_MODE_1200, mode) || CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, mode))) { return NULL; } c2 = (struct CODEC2 *)MALLOC(sizeof(struct CODEC2)); if (c2 == NULL) return NULL; c2->mode = mode; /* store constants in a few places for convenience */ c2->c2const = c2const_create(8000, N_S); c2->Fs = c2->c2const.Fs; int n_samp = c2->n_samp = c2->c2const.n_samp; int m_pitch = c2->m_pitch = c2->c2const.m_pitch; c2->Pn = (float *)MALLOC(2 * n_samp * sizeof(float)); if (c2->Pn == NULL) { return NULL; } c2->Sn_ = (float *)MALLOC(2 * n_samp * sizeof(float)); if (c2->Sn_ == NULL) { FREE(c2->Pn); return NULL; } c2->w = (float *)MALLOC(m_pitch * sizeof(float)); if (c2->w == NULL) { FREE(c2->Pn); FREE(c2->Sn_); return NULL; } c2->Sn = (float *)MALLOC(m_pitch * sizeof(float)); if (c2->Sn == NULL) { FREE(c2->Pn); FREE(c2->Sn_); FREE(c2->w); return NULL; } for (i = 0; i < m_pitch; i++) c2->Sn[i] = 1.0; c2->hpf_states[0] = c2->hpf_states[1] = 0.0; for (i = 0; i < 2 * n_samp; i++) c2->Sn_[i] = 0; c2->fft_fwd_cfg = codec2_fft_alloc(FFT_ENC, 0, NULL, NULL); c2->fftr_fwd_cfg = codec2_fftr_alloc(FFT_ENC, 0, NULL, NULL); make_analysis_window(&c2->c2const, c2->fft_fwd_cfg, c2->w, c2->W); make_synthesis_window(&c2->c2const, c2->Pn); c2->fftr_inv_cfg = codec2_fftr_alloc(FFT_DEC, 1, NULL, NULL); c2->prev_f0_enc = 1 / P_MAX_S; c2->bg_est = 0.0; c2->ex_phase = 0.0; for (l = 1; l <= MAX_AMP; l++) c2->prev_model_dec.A[l] = 0.0; c2->prev_model_dec.Wo = TWO_PI / c2->c2const.p_max; c2->prev_model_dec.L = PI / c2->prev_model_dec.Wo; c2->prev_model_dec.voiced = 0; for (i = 0; i < LPC_ORD; i++) { c2->prev_lsps_dec[i] = i * PI / (LPC_ORD + 1); } c2->prev_e_dec = 1; c2->nlp = nlp_create(&c2->c2const); if (c2->nlp == NULL) { return NULL; } c2->lpc_pf = 1; c2->bass_boost = 1; c2->beta = LPCPF_BETA; c2->gamma = LPCPF_GAMMA; c2->xq_enc[0] = c2->xq_enc[1] = 0.0; c2->xq_dec[0] = c2->xq_dec[1] = 0.0; c2->smoothing = 0; c2->se = 0.0; c2->nse = 0; c2->user_rate_K_vec_no_mean_ = NULL; c2->post_filter_en = true; c2->bpf_buf = (float *)MALLOC(sizeof(float) * (BPF_N + 4 * c2->n_samp)); assert(c2->bpf_buf != NULL); for (i = 0; i < BPF_N + 4 * c2->n_samp; i++) c2->bpf_buf[i] = 0.0; c2->softdec = NULL; c2->gray = 1; /* newamp1 initialisation */ if (CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode)) { mel_sample_freqs_kHz(c2->rate_K_sample_freqs_kHz, NEWAMP1_K, ftomel(200.0), ftomel(3700.0)); int k; for (k = 0; k < NEWAMP1_K; k++) { c2->prev_rate_K_vec_[k] = 0.0; c2->eq[k] = 0.0; } c2->eq_en = false; c2->Wo_left = 0.0; c2->voicing_left = 0; c2->phase_fft_fwd_cfg = codec2_fft_alloc(NEWAMP1_PHASE_NFFT, 0, NULL, NULL); c2->phase_fft_inv_cfg = codec2_fft_alloc(NEWAMP1_PHASE_NFFT, 1, NULL, NULL); } c2->fmlfeat = NULL; c2->fmlmodel = NULL; // make sure that one of the two decode function pointers is empty // for the encode function pointer this is not required since we always set it // to a meaningful value c2->decode = NULL; c2->decode_ber = NULL; if (CODEC2_MODE_ACTIVE(CODEC2_MODE_3200, c2->mode)) { c2->encode = codec2_encode_3200; c2->decode = codec2_decode_3200; } if (CODEC2_MODE_ACTIVE(CODEC2_MODE_2400, c2->mode)) { c2->encode = codec2_encode_2400; c2->decode = codec2_decode_2400; } if (CODEC2_MODE_ACTIVE(CODEC2_MODE_1600, c2->mode)) { c2->encode = codec2_encode_1600; c2->decode = codec2_decode_1600; } if (CODEC2_MODE_ACTIVE(CODEC2_MODE_1400, c2->mode)) { c2->encode = codec2_encode_1400; c2->decode = codec2_decode_1400; } if (CODEC2_MODE_ACTIVE(CODEC2_MODE_1300, c2->mode)) { c2->encode = codec2_encode_1300; c2->decode_ber = codec2_decode_1300; } if (CODEC2_MODE_ACTIVE(CODEC2_MODE_1200, c2->mode)) { c2->encode = codec2_encode_1200; c2->decode = codec2_decode_1200; } if (CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode)) { c2->encode = codec2_encode_700c; c2->decode = codec2_decode_700c; } return c2; } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_destroy AUTHOR......: David Rowe DATE CREATED: 21/8/2010 Destroy an instance of the codec. \*---------------------------------------------------------------------------*/ void codec2_destroy(struct CODEC2 *c2) { assert(c2 != NULL); FREE(c2->bpf_buf); nlp_destroy(c2->nlp); codec2_fft_free(c2->fft_fwd_cfg); codec2_fftr_free(c2->fftr_fwd_cfg); codec2_fftr_free(c2->fftr_inv_cfg); if (CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode)) { codec2_fft_free(c2->phase_fft_fwd_cfg); codec2_fft_free(c2->phase_fft_inv_cfg); } FREE(c2->Pn); FREE(c2->Sn); FREE(c2->w); FREE(c2->Sn_); FREE(c2); } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_bits_per_frame AUTHOR......: David Rowe DATE CREATED: Nov 14 2011 Returns the number of bits per frame. \*---------------------------------------------------------------------------*/ int codec2_bits_per_frame(struct CODEC2 *c2) { if (CODEC2_MODE_ACTIVE(CODEC2_MODE_3200, c2->mode)) return 64; if (CODEC2_MODE_ACTIVE(CODEC2_MODE_2400, c2->mode)) return 48; if (CODEC2_MODE_ACTIVE(CODEC2_MODE_1600, c2->mode)) return 64; if (CODEC2_MODE_ACTIVE(CODEC2_MODE_1400, c2->mode)) return 56; if (CODEC2_MODE_ACTIVE(CODEC2_MODE_1300, c2->mode)) return 52; if (CODEC2_MODE_ACTIVE(CODEC2_MODE_1200, c2->mode)) return 48; if (CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode)) return 28; return 0; /* shouldn't get here */ } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_bytes_per_frame DATE CREATED: April 2021 Returns the number of bytes per frame. Useful for allocated storage for codec2_encode()/codec2_decode(). Note the number of bits may not be a multiple of 8, therefore some bits in the last byte may be unused. \*---------------------------------------------------------------------------*/ int codec2_bytes_per_frame(struct CODEC2 *c2) { return (codec2_bits_per_frame(c2) + 7) / 8; } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_samples_per_frame AUTHOR......: David Rowe DATE CREATED: Nov 14 2011 Returns the number of speech samples per frame. \*---------------------------------------------------------------------------*/ int codec2_samples_per_frame(struct CODEC2 *c2) { if (CODEC2_MODE_ACTIVE(CODEC2_MODE_3200, c2->mode)) return 160; if (CODEC2_MODE_ACTIVE(CODEC2_MODE_2400, c2->mode)) return 160; if (CODEC2_MODE_ACTIVE(CODEC2_MODE_1600, c2->mode)) return 320; if (CODEC2_MODE_ACTIVE(CODEC2_MODE_1400, c2->mode)) return 320; if (CODEC2_MODE_ACTIVE(CODEC2_MODE_1300, c2->mode)) return 320; if (CODEC2_MODE_ACTIVE(CODEC2_MODE_1200, c2->mode)) return 320; if (CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode)) return 320; return 0; /* shouldn't get here */ } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_encode AUTHOR......: David Rowe DATE CREATED: Nov 14 2011 Take an input buffer of speech samples, and compress them to a packed buffer of bytes. \*---------------------------------------------------------------------------*/ void codec2_encode(struct CODEC2 *c2, unsigned char *bytes, short speech[]) { assert(c2 != NULL); assert(c2->encode != NULL); c2->encode(c2, bytes, speech); } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_decode AUTHOR......: David Rowe DATE CREATED: Nov 14 2011 Take an input packed buffer of bytes, and decode them to a buffer of speech samples. \*---------------------------------------------------------------------------*/ void codec2_decode(struct CODEC2 *c2, short speech[], const unsigned char *bytes) { codec2_decode_ber(c2, speech, bytes, 0.0); } void codec2_decode_ber(struct CODEC2 *c2, short speech[], const unsigned char *bits, float ber_est) { assert(c2 != NULL); assert(c2->decode != NULL || c2->decode_ber != NULL); if (c2->decode != NULL) { c2->decode(c2, speech, bits); } else { c2->decode_ber(c2, speech, bits, ber_est); } } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_encode_3200 AUTHOR......: David Rowe DATE CREATED: 13 Sep 2012 Encodes 160 speech samples (20ms of speech) into 64 bits. The codec2 algorithm actually operates internally on 10ms (80 sample) frames, so we run the encoding algorithm twice. On the first frame we just send the voicing bits. On the second frame we send all model parameters. Compared to 2400 we encode the LSP differences, a larger number of bits for the LSP(d)s and scalar (non-VQ) quantisation for pitch and energy. The bit allocation is: Parameter bits/frame ------------------------------------------------------ Harmonic magnitudes (LSP differerences) 50 Pitch (Wo) 7 Energy 5 Voicing (10ms update) 2 TOTAL 64 \*---------------------------------------------------------------------------*/ void codec2_encode_3200(struct CODEC2 *c2, unsigned char *bits, short speech[]) { MODEL model; float ak[LPC_ORD + 1]; float lsps[LPC_ORD]; float e; int Wo_index, e_index; int lspd_indexes[LPC_ORD]; int i; unsigned int nbit = 0; assert(c2 != NULL); memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8)); /* first 10ms analysis frame - we just want voicing */ analyse_one_frame(c2, &model, speech); pack(bits, &nbit, model.voiced, 1); /* second 10ms analysis frame */ analyse_one_frame(c2, &model, &speech[c2->n_samp]); pack(bits, &nbit, model.voiced, 1); Wo_index = encode_Wo(&c2->c2const, model.Wo, WO_BITS); pack(bits, &nbit, Wo_index, WO_BITS); e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD); e_index = encode_energy(e, E_BITS); pack(bits, &nbit, e_index, E_BITS); encode_lspds_scalar(lspd_indexes, lsps, LPC_ORD); for (i = 0; i < LSPD_SCALAR_INDEXES; i++) { pack(bits, &nbit, lspd_indexes[i], lspd_bits(i)); } assert(nbit == (unsigned)codec2_bits_per_frame(c2)); } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_decode_3200 AUTHOR......: David Rowe DATE CREATED: 13 Sep 2012 Decodes a frame of 64 bits into 160 samples (20ms) of speech. \*---------------------------------------------------------------------------*/ void codec2_decode_3200(struct CODEC2 *c2, short speech[], const unsigned char *bits) { MODEL model[2]; int lspd_indexes[LPC_ORD]; float lsps[2][LPC_ORD]; int Wo_index, e_index; float e[2]; float snr; float ak[2][LPC_ORD + 1]; int i, j; unsigned int nbit = 0; COMP Aw[FFT_ENC]; assert(c2 != NULL); /* only need to zero these out due to (unused) snr calculation */ for (i = 0; i < 2; i++) for (j = 1; j <= MAX_AMP; j++) model[i].A[j] = 0.0; /* unpack bits from channel ------------------------------------*/ /* this will partially fill the model params for the 2 x 10ms frames */ model[0].voiced = unpack(bits, &nbit, 1); model[1].voiced = unpack(bits, &nbit, 1); Wo_index = unpack(bits, &nbit, WO_BITS); model[1].Wo = decode_Wo(&c2->c2const, Wo_index, WO_BITS); model[1].L = PI / model[1].Wo; e_index = unpack(bits, &nbit, E_BITS); e[1] = decode_energy(e_index, E_BITS); for (i = 0; i < LSPD_SCALAR_INDEXES; i++) { lspd_indexes[i] = unpack(bits, &nbit, lspd_bits(i)); } decode_lspds_scalar(&lsps[1][0], lspd_indexes, LPC_ORD); /* interpolate ------------------------------------------------*/ /* Wo and energy are sampled every 20ms, so we interpolate just 1 10ms frame between 20ms samples */ interp_Wo(&model[0], &c2->prev_model_dec, &model[1], c2->c2const.Wo_min); e[0] = interp_energy(c2->prev_e_dec, e[1]); /* LSPs are sampled every 20ms so we interpolate the frame in between, then recover spectral amplitudes */ interpolate_lsp_ver2(&lsps[0][0], c2->prev_lsps_dec, &lsps[1][0], 0.5, LPC_ORD); for (i = 0; i < 2; i++) { lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD); aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 0, 0, c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw); apply_lpc_correction(&model[i]); synthesise_one_frame(c2, &speech[c2->n_samp * i], &model[i], Aw, 1.0); } /* update memories for next frame ----------------------------*/ c2->prev_model_dec = model[1]; c2->prev_e_dec = e[1]; for (i = 0; i < LPC_ORD; i++) c2->prev_lsps_dec[i] = lsps[1][i]; } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_encode_2400 AUTHOR......: David Rowe DATE CREATED: 21/8/2010 Encodes 160 speech samples (20ms of speech) into 48 bits. The codec2 algorithm actually operates internally on 10ms (80 sample) frames, so we run the encoding algorithm twice. On the first frame we just send the voicing bit. On the second frame we send all model parameters. The bit allocation is: Parameter bits/frame -------------------------------------- Harmonic magnitudes (LSPs) 36 Joint VQ of Energy and Wo 8 Voicing (10ms update) 2 Spare 2 TOTAL 48 \*---------------------------------------------------------------------------*/ void codec2_encode_2400(struct CODEC2 *c2, unsigned char *bits, short speech[]) { MODEL model; float ak[LPC_ORD + 1]; float lsps[LPC_ORD]; float e; int WoE_index; int lsp_indexes[LPC_ORD]; int i; int spare = 0; unsigned int nbit = 0; assert(c2 != NULL); memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8)); /* first 10ms analysis frame - we just want voicing */ analyse_one_frame(c2, &model, speech); pack(bits, &nbit, model.voiced, 1); /* second 10ms analysis frame */ analyse_one_frame(c2, &model, &speech[c2->n_samp]); pack(bits, &nbit, model.voiced, 1); e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD); WoE_index = encode_WoE(&model, e, c2->xq_enc); pack(bits, &nbit, WoE_index, WO_E_BITS); encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD); for (i = 0; i < LSP_SCALAR_INDEXES; i++) { pack(bits, &nbit, lsp_indexes[i], lsp_bits(i)); } pack(bits, &nbit, spare, 2); assert(nbit == (unsigned)codec2_bits_per_frame(c2)); } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_decode_2400 AUTHOR......: David Rowe DATE CREATED: 21/8/2010 Decodes frames of 48 bits into 160 samples (20ms) of speech. \*---------------------------------------------------------------------------*/ void codec2_decode_2400(struct CODEC2 *c2, short speech[], const unsigned char *bits) { MODEL model[2]; int lsp_indexes[LPC_ORD]; float lsps[2][LPC_ORD]; int WoE_index; float e[2]; float snr; float ak[2][LPC_ORD + 1]; int i, j; unsigned int nbit = 0; COMP Aw[FFT_ENC]; assert(c2 != NULL); /* only need to zero these out due to (unused) snr calculation */ for (i = 0; i < 2; i++) for (j = 1; j <= MAX_AMP; j++) model[i].A[j] = 0.0; /* unpack bits from channel ------------------------------------*/ /* this will partially fill the model params for the 2 x 10ms frames */ model[0].voiced = unpack(bits, &nbit, 1); model[1].voiced = unpack(bits, &nbit, 1); WoE_index = unpack(bits, &nbit, WO_E_BITS); decode_WoE(&c2->c2const, &model[1], &e[1], c2->xq_dec, WoE_index); for (i = 0; i < LSP_SCALAR_INDEXES; i++) { lsp_indexes[i] = unpack(bits, &nbit, lsp_bits(i)); } decode_lsps_scalar(&lsps[1][0], lsp_indexes, LPC_ORD); check_lsp_order(&lsps[1][0], LPC_ORD); bw_expand_lsps(&lsps[1][0], LPC_ORD, 50.0, 100.0); /* interpolate ------------------------------------------------*/ /* Wo and energy are sampled every 20ms, so we interpolate just 1 10ms frame between 20ms samples */ interp_Wo(&model[0], &c2->prev_model_dec, &model[1], c2->c2const.Wo_min); e[0] = interp_energy(c2->prev_e_dec, e[1]); /* LSPs are sampled every 20ms so we interpolate the frame in between, then recover spectral amplitudes */ interpolate_lsp_ver2(&lsps[0][0], c2->prev_lsps_dec, &lsps[1][0], 0.5, LPC_ORD); for (i = 0; i < 2; i++) { lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD); aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 0, 0, c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw); apply_lpc_correction(&model[i]); synthesise_one_frame(c2, &speech[c2->n_samp * i], &model[i], Aw, 1.0); /* dump parameters for deep learning experiments */ if (c2->fmlfeat != NULL) { /* 10 LSPs - energy - Wo - voicing flag - 10 LPCs */ fwrite(&lsps[i][0], LPC_ORD, sizeof(float), c2->fmlfeat); fwrite(&e[i], 1, sizeof(float), c2->fmlfeat); fwrite(&model[i].Wo, 1, sizeof(float), c2->fmlfeat); float voiced_float = model[i].voiced; fwrite(&voiced_float, 1, sizeof(float), c2->fmlfeat); fwrite(&ak[i][1], LPC_ORD, sizeof(float), c2->fmlfeat); } } /* update memories for next frame ----------------------------*/ c2->prev_model_dec = model[1]; c2->prev_e_dec = e[1]; for (i = 0; i < LPC_ORD; i++) c2->prev_lsps_dec[i] = lsps[1][i]; } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_encode_1600 AUTHOR......: David Rowe DATE CREATED: Feb 28 2013 Encodes 320 speech samples (40ms of speech) into 64 bits. The codec2 algorithm actually operates internally on 10ms (80 sample) frames, so we run the encoding algorithm 4 times: frame 0: voicing bit frame 1: voicing bit, Wo and E frame 2: voicing bit frame 3: voicing bit, Wo and E, scalar LSPs The bit allocation is: Parameter frame 2 frame 4 Total ------------------------------------------------------- Harmonic magnitudes (LSPs) 0 36 36 Pitch (Wo) 7 7 14 Energy 5 5 10 Voicing (10ms update) 2 2 4 TOTAL 14 50 64 \*---------------------------------------------------------------------------*/ void codec2_encode_1600(struct CODEC2 *c2, unsigned char *bits, short speech[]) { MODEL model; float lsps[LPC_ORD]; float ak[LPC_ORD + 1]; float e; int lsp_indexes[LPC_ORD]; int Wo_index, e_index; int i; unsigned int nbit = 0; assert(c2 != NULL); memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8)); /* frame 1: - voicing ---------------------------------------------*/ analyse_one_frame(c2, &model, speech); pack(bits, &nbit, model.voiced, 1); /* frame 2: - voicing, scalar Wo & E -------------------------------*/ analyse_one_frame(c2, &model, &speech[c2->n_samp]); pack(bits, &nbit, model.voiced, 1); Wo_index = encode_Wo(&c2->c2const, model.Wo, WO_BITS); pack(bits, &nbit, Wo_index, WO_BITS); /* need to run this just to get LPC energy */ e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD); e_index = encode_energy(e, E_BITS); pack(bits, &nbit, e_index, E_BITS); /* frame 3: - voicing ---------------------------------------------*/ analyse_one_frame(c2, &model, &speech[2 * c2->n_samp]); pack(bits, &nbit, model.voiced, 1); /* frame 4: - voicing, scalar Wo & E, scalar LSPs ------------------*/ analyse_one_frame(c2, &model, &speech[3 * c2->n_samp]); pack(bits, &nbit, model.voiced, 1); Wo_index = encode_Wo(&c2->c2const, model.Wo, WO_BITS); pack(bits, &nbit, Wo_index, WO_BITS); e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD); e_index = encode_energy(e, E_BITS); pack(bits, &nbit, e_index, E_BITS); encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD); for (i = 0; i < LSP_SCALAR_INDEXES; i++) { pack(bits, &nbit, lsp_indexes[i], lsp_bits(i)); } assert(nbit == (unsigned)codec2_bits_per_frame(c2)); } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_decode_1600 AUTHOR......: David Rowe DATE CREATED: 11 May 2012 Decodes frames of 64 bits into 320 samples (40ms) of speech. \*---------------------------------------------------------------------------*/ void codec2_decode_1600(struct CODEC2 *c2, short speech[], const unsigned char *bits) { MODEL model[4]; int lsp_indexes[LPC_ORD]; float lsps[4][LPC_ORD]; int Wo_index, e_index; float e[4]; float snr; float ak[4][LPC_ORD + 1]; int i, j; unsigned int nbit = 0; float weight; COMP Aw[FFT_ENC]; assert(c2 != NULL); /* only need to zero these out due to (unused) snr calculation */ for (i = 0; i < 4; i++) for (j = 1; j <= MAX_AMP; j++) model[i].A[j] = 0.0; /* unpack bits from channel ------------------------------------*/ /* this will partially fill the model params for the 4 x 10ms frames */ model[0].voiced = unpack(bits, &nbit, 1); model[1].voiced = unpack(bits, &nbit, 1); Wo_index = unpack(bits, &nbit, WO_BITS); model[1].Wo = decode_Wo(&c2->c2const, Wo_index, WO_BITS); model[1].L = PI / model[1].Wo; e_index = unpack(bits, &nbit, E_BITS); e[1] = decode_energy(e_index, E_BITS); model[2].voiced = unpack(bits, &nbit, 1); model[3].voiced = unpack(bits, &nbit, 1); Wo_index = unpack(bits, &nbit, WO_BITS); model[3].Wo = decode_Wo(&c2->c2const, Wo_index, WO_BITS); model[3].L = PI / model[3].Wo; e_index = unpack(bits, &nbit, E_BITS); e[3] = decode_energy(e_index, E_BITS); for (i = 0; i < LSP_SCALAR_INDEXES; i++) { lsp_indexes[i] = unpack(bits, &nbit, lsp_bits(i)); } decode_lsps_scalar(&lsps[3][0], lsp_indexes, LPC_ORD); check_lsp_order(&lsps[3][0], LPC_ORD); bw_expand_lsps(&lsps[3][0], LPC_ORD, 50.0, 100.0); /* interpolate ------------------------------------------------*/ /* Wo and energy are sampled every 20ms, so we interpolate just 1 10ms frame between 20ms samples */ interp_Wo(&model[0], &c2->prev_model_dec, &model[1], c2->c2const.Wo_min); e[0] = interp_energy(c2->prev_e_dec, e[1]); interp_Wo(&model[2], &model[1], &model[3], c2->c2const.Wo_min); e[2] = interp_energy(e[1], e[3]); /* LSPs are sampled every 40ms so we interpolate the 3 frames in between, then recover spectral amplitudes */ for (i = 0, weight = 0.25; i < 3; i++, weight += 0.25) { interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0], weight, LPC_ORD); } for (i = 0; i < 4; i++) { lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD); aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 0, 0, c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw); apply_lpc_correction(&model[i]); synthesise_one_frame(c2, &speech[c2->n_samp * i], &model[i], Aw, 1.0); } /* update memories for next frame ----------------------------*/ c2->prev_model_dec = model[3]; c2->prev_e_dec = e[3]; for (i = 0; i < LPC_ORD; i++) c2->prev_lsps_dec[i] = lsps[3][i]; } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_encode_1400 AUTHOR......: David Rowe DATE CREATED: May 11 2012 Encodes 320 speech samples (40ms of speech) into 56 bits. The codec2 algorithm actually operates internally on 10ms (80 sample) frames, so we run the encoding algorithm 4 times: frame 0: voicing bit frame 1: voicing bit, joint VQ of Wo and E frame 2: voicing bit frame 3: voicing bit, joint VQ of Wo and E, scalar LSPs The bit allocation is: Parameter frame 2 frame 4 Total ------------------------------------------------------- Harmonic magnitudes (LSPs) 0 36 36 Energy+Wo 8 8 16 Voicing (10ms update) 2 2 4 TOTAL 10 46 56 \*---------------------------------------------------------------------------*/ void codec2_encode_1400(struct CODEC2 *c2, unsigned char *bits, short speech[]) { MODEL model; float lsps[LPC_ORD]; float ak[LPC_ORD + 1]; float e; int lsp_indexes[LPC_ORD]; int WoE_index; int i; unsigned int nbit = 0; assert(c2 != NULL); memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8)); /* frame 1: - voicing ---------------------------------------------*/ analyse_one_frame(c2, &model, speech); pack(bits, &nbit, model.voiced, 1); /* frame 2: - voicing, joint Wo & E -------------------------------*/ analyse_one_frame(c2, &model, &speech[c2->n_samp]); pack(bits, &nbit, model.voiced, 1); /* need to run this just to get LPC energy */ e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD); WoE_index = encode_WoE(&model, e, c2->xq_enc); pack(bits, &nbit, WoE_index, WO_E_BITS); /* frame 3: - voicing ---------------------------------------------*/ analyse_one_frame(c2, &model, &speech[2 * c2->n_samp]); pack(bits, &nbit, model.voiced, 1); /* frame 4: - voicing, joint Wo & E, scalar LSPs ------------------*/ analyse_one_frame(c2, &model, &speech[3 * c2->n_samp]); pack(bits, &nbit, model.voiced, 1); e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD); WoE_index = encode_WoE(&model, e, c2->xq_enc); pack(bits, &nbit, WoE_index, WO_E_BITS); encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD); for (i = 0; i < LSP_SCALAR_INDEXES; i++) { pack(bits, &nbit, lsp_indexes[i], lsp_bits(i)); } assert(nbit == (unsigned)codec2_bits_per_frame(c2)); } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_decode_1400 AUTHOR......: David Rowe DATE CREATED: 11 May 2012 Decodes frames of 56 bits into 320 samples (40ms) of speech. \*---------------------------------------------------------------------------*/ void codec2_decode_1400(struct CODEC2 *c2, short speech[], const unsigned char *bits) { MODEL model[4]; int lsp_indexes[LPC_ORD]; float lsps[4][LPC_ORD]; int WoE_index; float e[4]; float snr; float ak[4][LPC_ORD + 1]; int i, j; unsigned int nbit = 0; float weight; COMP Aw[FFT_ENC]; assert(c2 != NULL); /* only need to zero these out due to (unused) snr calculation */ for (i = 0; i < 4; i++) for (j = 1; j <= MAX_AMP; j++) model[i].A[j] = 0.0; /* unpack bits from channel ------------------------------------*/ /* this will partially fill the model params for the 4 x 10ms frames */ model[0].voiced = unpack(bits, &nbit, 1); model[1].voiced = unpack(bits, &nbit, 1); WoE_index = unpack(bits, &nbit, WO_E_BITS); decode_WoE(&c2->c2const, &model[1], &e[1], c2->xq_dec, WoE_index); model[2].voiced = unpack(bits, &nbit, 1); model[3].voiced = unpack(bits, &nbit, 1); WoE_index = unpack(bits, &nbit, WO_E_BITS); decode_WoE(&c2->c2const, &model[3], &e[3], c2->xq_dec, WoE_index); for (i = 0; i < LSP_SCALAR_INDEXES; i++) { lsp_indexes[i] = unpack(bits, &nbit, lsp_bits(i)); } decode_lsps_scalar(&lsps[3][0], lsp_indexes, LPC_ORD); check_lsp_order(&lsps[3][0], LPC_ORD); bw_expand_lsps(&lsps[3][0], LPC_ORD, 50.0, 100.0); /* interpolate ------------------------------------------------*/ /* Wo and energy are sampled every 20ms, so we interpolate just 1 10ms frame between 20ms samples */ interp_Wo(&model[0], &c2->prev_model_dec, &model[1], c2->c2const.Wo_min); e[0] = interp_energy(c2->prev_e_dec, e[1]); interp_Wo(&model[2], &model[1], &model[3], c2->c2const.Wo_min); e[2] = interp_energy(e[1], e[3]); /* LSPs are sampled every 40ms so we interpolate the 3 frames in between, then recover spectral amplitudes */ for (i = 0, weight = 0.25; i < 3; i++, weight += 0.25) { interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0], weight, LPC_ORD); } for (i = 0; i < 4; i++) { lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD); aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 0, 0, c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw); apply_lpc_correction(&model[i]); synthesise_one_frame(c2, &speech[c2->n_samp * i], &model[i], Aw, 1.0); } /* update memories for next frame ----------------------------*/ c2->prev_model_dec = model[3]; c2->prev_e_dec = e[3]; for (i = 0; i < LPC_ORD; i++) c2->prev_lsps_dec[i] = lsps[3][i]; } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_encode_1300 AUTHOR......: David Rowe DATE CREATED: March 14 2013 Encodes 320 speech samples (40ms of speech) into 52 bits. The codec2 algorithm actually operates internally on 10ms (80 sample) frames, so we run the encoding algorithm 4 times: frame 0: voicing bit frame 1: voicing bit, frame 2: voicing bit frame 3: voicing bit, Wo and E, scalar LSPs The bit allocation is: Parameter frame 2 frame 4 Total ------------------------------------------------------- Harmonic magnitudes (LSPs) 0 36 36 Pitch (Wo) 0 7 7 Energy 0 5 5 Voicing (10ms update) 2 2 4 TOTAL 2 50 52 \*---------------------------------------------------------------------------*/ void codec2_encode_1300(struct CODEC2 *c2, unsigned char *bits, short speech[]) { MODEL model; float lsps[LPC_ORD]; float ak[LPC_ORD + 1]; float e; int lsp_indexes[LPC_ORD]; int Wo_index, e_index; int i; unsigned int nbit = 0; assert(c2 != NULL); memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8)); /* frame 1: - voicing ---------------------------------------------*/ analyse_one_frame(c2, &model, speech); pack_natural_or_gray(bits, &nbit, model.voiced, 1, c2->gray); /* frame 2: - voicing ---------------------------------------------*/ analyse_one_frame(c2, &model, &speech[c2->n_samp]); pack_natural_or_gray(bits, &nbit, model.voiced, 1, c2->gray); /* frame 3: - voicing ---------------------------------------------*/ analyse_one_frame(c2, &model, &speech[2 * c2->n_samp]); pack_natural_or_gray(bits, &nbit, model.voiced, 1, c2->gray); /* frame 4: - voicing, scalar Wo & E, scalar LSPs ------------------*/ analyse_one_frame(c2, &model, &speech[3 * c2->n_samp]); pack_natural_or_gray(bits, &nbit, model.voiced, 1, c2->gray); Wo_index = encode_Wo(&c2->c2const, model.Wo, WO_BITS); pack_natural_or_gray(bits, &nbit, Wo_index, WO_BITS, c2->gray); e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD); e_index = encode_energy(e, E_BITS); pack_natural_or_gray(bits, &nbit, e_index, E_BITS, c2->gray); encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD); for (i = 0; i < LSP_SCALAR_INDEXES; i++) { pack_natural_or_gray(bits, &nbit, lsp_indexes[i], lsp_bits(i), c2->gray); } assert(nbit == (unsigned)codec2_bits_per_frame(c2)); } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_decode_1300 AUTHOR......: David Rowe DATE CREATED: 11 May 2012 Decodes frames of 52 bits into 320 samples (40ms) of speech. \*---------------------------------------------------------------------------*/ void codec2_decode_1300(struct CODEC2 *c2, short speech[], const unsigned char *bits, float ber_est) { MODEL model[4]; int lsp_indexes[LPC_ORD]; float lsps[4][LPC_ORD]; int Wo_index, e_index; float e[4]; float snr; float ak[4][LPC_ORD + 1]; int i, j; unsigned int nbit = 0; float weight; COMP Aw[FFT_ENC]; assert(c2 != NULL); /* only need to zero these out due to (unused) snr calculation */ for (i = 0; i < 4; i++) for (j = 1; j <= MAX_AMP; j++) model[i].A[j] = 0.0; /* unpack bits from channel ------------------------------------*/ /* this will partially fill the model params for the 4 x 10ms frames */ model[0].voiced = unpack_natural_or_gray(bits, &nbit, 1, c2->gray); model[1].voiced = unpack_natural_or_gray(bits, &nbit, 1, c2->gray); model[2].voiced = unpack_natural_or_gray(bits, &nbit, 1, c2->gray); model[3].voiced = unpack_natural_or_gray(bits, &nbit, 1, c2->gray); Wo_index = unpack_natural_or_gray(bits, &nbit, WO_BITS, c2->gray); model[3].Wo = decode_Wo(&c2->c2const, Wo_index, WO_BITS); model[3].L = PI / model[3].Wo; e_index = unpack_natural_or_gray(bits, &nbit, E_BITS, c2->gray); e[3] = decode_energy(e_index, E_BITS); for (i = 0; i < LSP_SCALAR_INDEXES; i++) { lsp_indexes[i] = unpack_natural_or_gray(bits, &nbit, lsp_bits(i), c2->gray); } decode_lsps_scalar(&lsps[3][0], lsp_indexes, LPC_ORD); check_lsp_order(&lsps[3][0], LPC_ORD); bw_expand_lsps(&lsps[3][0], LPC_ORD, 50.0, 100.0); if (ber_est > 0.15) { model[0].voiced = model[1].voiced = model[2].voiced = model[3].voiced = 0; e[3] = decode_energy(10, E_BITS); bw_expand_lsps(&lsps[3][0], LPC_ORD, 200.0, 200.0); // fprintf(stderr, "soft mute\n"); } /* interpolate ------------------------------------------------*/ /* Wo, energy, and LSPs are sampled every 40ms so we interpolate the 3 frames in between */ for (i = 0, weight = 0.25; i < 3; i++, weight += 0.25) { interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0], weight, LPC_ORD); interp_Wo2(&model[i], &c2->prev_model_dec, &model[3], weight, c2->c2const.Wo_min); e[i] = interp_energy2(c2->prev_e_dec, e[3], weight); } /* then recover spectral amplitudes */ for (i = 0; i < 4; i++) { lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD); aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 0, 0, c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw); apply_lpc_correction(&model[i]); synthesise_one_frame(c2, &speech[c2->n_samp * i], &model[i], Aw, 1.0); /* dump parameters for deep learning experiments */ if (c2->fmlfeat != NULL) { /* 10 LSPs - energy - Wo - voicing flag - 10 LPCs */ fwrite(&lsps[i][0], LPC_ORD, sizeof(float), c2->fmlfeat); fwrite(&e[i], 1, sizeof(float), c2->fmlfeat); fwrite(&model[i].Wo, 1, sizeof(float), c2->fmlfeat); float voiced_float = model[i].voiced; fwrite(&voiced_float, 1, sizeof(float), c2->fmlfeat); fwrite(&ak[i][1], LPC_ORD, sizeof(float), c2->fmlfeat); } } #ifdef DUMP dump_lsp_(&lsps[3][0]); dump_ak_(&ak[3][0], LPC_ORD); #endif /* update memories for next frame ----------------------------*/ c2->prev_model_dec = model[3]; c2->prev_e_dec = e[3]; for (i = 0; i < LPC_ORD; i++) c2->prev_lsps_dec[i] = lsps[3][i]; } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_encode_1200 AUTHOR......: David Rowe DATE CREATED: Nov 14 2011 Encodes 320 speech samples (40ms of speech) into 48 bits. The codec2 algorithm actually operates internally on 10ms (80 sample) frames, so we run the encoding algorithm four times: frame 0: voicing bit frame 1: voicing bit, joint VQ of Wo and E frame 2: voicing bit frame 3: voicing bit, joint VQ of Wo and E, VQ LSPs The bit allocation is: Parameter frame 2 frame 4 Total ------------------------------------------------------- Harmonic magnitudes (LSPs) 0 27 27 Energy+Wo 8 8 16 Voicing (10ms update) 2 2 4 Spare 0 1 1 TOTAL 10 38 48 \*---------------------------------------------------------------------------*/ void codec2_encode_1200(struct CODEC2 *c2, unsigned char *bits, short speech[]) { MODEL model; float lsps[LPC_ORD]; float lsps_[LPC_ORD]; float ak[LPC_ORD + 1]; float e; int lsp_indexes[LPC_ORD]; int WoE_index; int i; int spare = 0; unsigned int nbit = 0; assert(c2 != NULL); memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8)); /* frame 1: - voicing ---------------------------------------------*/ analyse_one_frame(c2, &model, speech); pack(bits, &nbit, model.voiced, 1); /* frame 2: - voicing, joint Wo & E -------------------------------*/ analyse_one_frame(c2, &model, &speech[c2->n_samp]); pack(bits, &nbit, model.voiced, 1); /* need to run this just to get LPC energy */ e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD); WoE_index = encode_WoE(&model, e, c2->xq_enc); pack(bits, &nbit, WoE_index, WO_E_BITS); /* frame 3: - voicing ---------------------------------------------*/ analyse_one_frame(c2, &model, &speech[2 * c2->n_samp]); pack(bits, &nbit, model.voiced, 1); /* frame 4: - voicing, joint Wo & E, scalar LSPs ------------------*/ analyse_one_frame(c2, &model, &speech[3 * c2->n_samp]); pack(bits, &nbit, model.voiced, 1); e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD); WoE_index = encode_WoE(&model, e, c2->xq_enc); pack(bits, &nbit, WoE_index, WO_E_BITS); encode_lsps_vq(lsp_indexes, lsps, lsps_, LPC_ORD); for (i = 0; i < LSP_PRED_VQ_INDEXES; i++) { pack(bits, &nbit, lsp_indexes[i], lsp_pred_vq_bits(i)); } pack(bits, &nbit, spare, 1); assert(nbit == (unsigned)codec2_bits_per_frame(c2)); } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_decode_1200 AUTHOR......: David Rowe DATE CREATED: 14 Feb 2012 Decodes frames of 48 bits into 320 samples (40ms) of speech. \*---------------------------------------------------------------------------*/ void codec2_decode_1200(struct CODEC2 *c2, short speech[], const unsigned char *bits) { MODEL model[4]; int lsp_indexes[LPC_ORD]; float lsps[4][LPC_ORD]; int WoE_index; float e[4]; float snr; float ak[4][LPC_ORD + 1]; int i, j; unsigned int nbit = 0; float weight; COMP Aw[FFT_ENC]; assert(c2 != NULL); /* only need to zero these out due to (unused) snr calculation */ for (i = 0; i < 4; i++) for (j = 1; j <= MAX_AMP; j++) model[i].A[j] = 0.0; /* unpack bits from channel ------------------------------------*/ /* this will partially fill the model params for the 4 x 10ms frames */ model[0].voiced = unpack(bits, &nbit, 1); model[1].voiced = unpack(bits, &nbit, 1); WoE_index = unpack(bits, &nbit, WO_E_BITS); decode_WoE(&c2->c2const, &model[1], &e[1], c2->xq_dec, WoE_index); model[2].voiced = unpack(bits, &nbit, 1); model[3].voiced = unpack(bits, &nbit, 1); WoE_index = unpack(bits, &nbit, WO_E_BITS); decode_WoE(&c2->c2const, &model[3], &e[3], c2->xq_dec, WoE_index); for (i = 0; i < LSP_PRED_VQ_INDEXES; i++) { lsp_indexes[i] = unpack(bits, &nbit, lsp_pred_vq_bits(i)); } decode_lsps_vq(lsp_indexes, &lsps[3][0], LPC_ORD, 0); check_lsp_order(&lsps[3][0], LPC_ORD); bw_expand_lsps(&lsps[3][0], LPC_ORD, 50.0, 100.0); /* interpolate ------------------------------------------------*/ /* Wo and energy are sampled every 20ms, so we interpolate just 1 10ms frame between 20ms samples */ interp_Wo(&model[0], &c2->prev_model_dec, &model[1], c2->c2const.Wo_min); e[0] = interp_energy(c2->prev_e_dec, e[1]); interp_Wo(&model[2], &model[1], &model[3], c2->c2const.Wo_min); e[2] = interp_energy(e[1], e[3]); /* LSPs are sampled every 40ms so we interpolate the 3 frames in between, then recover spectral amplitudes */ for (i = 0, weight = 0.25; i < 3; i++, weight += 0.25) { interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0], weight, LPC_ORD); } for (i = 0; i < 4; i++) { lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD); aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 0, 0, c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw); apply_lpc_correction(&model[i]); synthesise_one_frame(c2, &speech[c2->n_samp * i], &model[i], Aw, 1.0); } /* update memories for next frame ----------------------------*/ c2->prev_model_dec = model[3]; c2->prev_e_dec = e[3]; for (i = 0; i < LPC_ORD; i++) c2->prev_lsps_dec[i] = lsps[3][i]; } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_encode_700c AUTHOR......: David Rowe DATE CREATED: Jan 2017 Version c of 700 bit/s codec that uses newamp1 fixed rate VQ of amplitudes. Encodes 320 speech samples (40ms of speech) into 28 bits. The codec2 algorithm actually operates internally on 10ms (80 sample) frames, so we run the encoding algorithm four times: frame 0: nothing frame 1: nothing frame 2: nothing frame 3: 18 bit 2 stage VQ (9 bits/stage), 4 bits energy, 6 bit scalar Wo/voicing. No spare bits. Voicing is encoded using the 0 index of the Wo quantiser. The bit allocation is: Parameter frames 1-3 frame 4 Total ----------------------------------------------------------- Harmonic magnitudes (rate k VQ) 0 18 18 Energy 0 4 4 log Wo/voicing 0 6 6 TOTAL 0 28 28 \*---------------------------------------------------------------------------*/ void codec2_encode_700c(struct CODEC2 *c2, unsigned char *bits, short speech[]) { MODEL model; int indexes[4], i, M = 4; unsigned int nbit = 0; assert(c2 != NULL); memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8)); for (i = 0; i < M; i++) { analyse_one_frame(c2, &model, &speech[i * c2->n_samp]); } int K = 20; float rate_K_vec[K], mean; float rate_K_vec_no_mean[K], rate_K_vec_no_mean_[K]; newamp1_model_to_indexes(&c2->c2const, indexes, &model, rate_K_vec, c2->rate_K_sample_freqs_kHz, K, &mean, rate_K_vec_no_mean, rate_K_vec_no_mean_, &c2->se, c2->eq, c2->eq_en); c2->nse += K; #ifndef CORTEX_M4 /* dump features for deep learning experiments */ if (c2->fmlfeat != NULL) { fwrite(&mean, 1, sizeof(float), c2->fmlfeat); fwrite(rate_K_vec_no_mean, K, sizeof(float), c2->fmlfeat); fwrite(rate_K_vec_no_mean_, K, sizeof(float), c2->fmlfeat); MODEL model_; memcpy(&model_, &model, sizeof(model)); float rate_K_vec_[K]; for (int k = 0; k < K; k++) rate_K_vec_[k] = rate_K_vec_no_mean_[k] + mean; resample_rate_L(&c2->c2const, &model_, rate_K_vec_, c2->rate_K_sample_freqs_kHz, K); fwrite(&model_.A, MAX_AMP, sizeof(float), c2->fmlfeat); } if (c2->fmlmodel != NULL) fwrite(&model, sizeof(MODEL), 1, c2->fmlmodel); #endif pack_natural_or_gray(bits, &nbit, indexes[0], 9, 0); pack_natural_or_gray(bits, &nbit, indexes[1], 9, 0); pack_natural_or_gray(bits, &nbit, indexes[2], 4, 0); pack_natural_or_gray(bits, &nbit, indexes[3], 6, 0); assert(nbit == (unsigned)codec2_bits_per_frame(c2)); } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_decode_700c AUTHOR......: David Rowe DATE CREATED: August 2015 Decodes frames of 28 bits into 320 samples (40ms) of speech. \*---------------------------------------------------------------------------*/ void codec2_decode_700c(struct CODEC2 *c2, short speech[], const unsigned char *bits) { MODEL model[4]; int indexes[4]; int i; unsigned int nbit = 0; assert(c2 != NULL); /* unpack bits from channel ------------------------------------*/ indexes[0] = unpack_natural_or_gray(bits, &nbit, 9, 0); indexes[1] = unpack_natural_or_gray(bits, &nbit, 9, 0); indexes[2] = unpack_natural_or_gray(bits, &nbit, 4, 0); indexes[3] = unpack_natural_or_gray(bits, &nbit, 6, 0); int M = 4; COMP HH[M][MAX_AMP + 1]; float interpolated_surface_[M][NEWAMP1_K]; newamp1_indexes_to_model( &c2->c2const, model, (COMP *)HH, (float *)interpolated_surface_, c2->prev_rate_K_vec_, &c2->Wo_left, &c2->voicing_left, c2->rate_K_sample_freqs_kHz, NEWAMP1_K, c2->phase_fft_fwd_cfg, c2->phase_fft_inv_cfg, indexes, c2->user_rate_K_vec_no_mean_, c2->post_filter_en); for (i = 0; i < M; i++) { if (c2->fmlfeat != NULL) { /* We use standard nb_features=55 feature records for compatibility with * train_lpcnet.py */ float features[55] = {0}; /* just using 18/20 for compatibility with LPCNet, coarse scaling for NN * input */ for (int j = 0; j < 18; j++) features[j] = (interpolated_surface_[i][j] - 30) / 40; int pitch_index = 21 + 2.0 * M_PI / model[i].Wo; features[36] = 0.02 * (pitch_index - 100); features[37] = model[i].voiced; fwrite(features, 55, sizeof(float), c2->fmlfeat); } /* 700C is a little quieter so lets apply some experimentally derived audio * gain */ synthesise_one_frame(c2, &speech[c2->n_samp * i], &model[i], &HH[i][0], 1.5); } } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_energy_700c AUTHOR......: Jeroen Vreeken DATE CREATED: Jan 2017 Decodes energy value from encoded bits. \*---------------------------------------------------------------------------*/ float codec2_energy_700c(struct CODEC2 *c2, const unsigned char *bits) { int indexes[4]; unsigned int nbit = 0; assert(c2 != NULL); /* unpack bits from channel ------------------------------------*/ indexes[0] = unpack_natural_or_gray(bits, &nbit, 9, 0); indexes[1] = unpack_natural_or_gray(bits, &nbit, 9, 0); indexes[2] = unpack_natural_or_gray(bits, &nbit, 4, 0); indexes[3] = unpack_natural_or_gray(bits, &nbit, 6, 0); float mean = newamp1_energy_cb[0].cb[indexes[2]]; mean -= 10; if (indexes[3] == 0) mean -= 10; return POW10F(mean / 10.0); } /*---------------------------------------------------------------------------*\ FUNCTION....: codec2_get_energy() AUTHOR......: Jeroen Vreeken DATE CREATED: 08/03/2016 Extract energy value from an encoded frame. \*---------------------------------------------------------------------------*/ float codec2_get_energy(struct CODEC2 *c2, const unsigned char *bits) { assert(c2 != NULL); assert((CODEC2_MODE_ACTIVE(CODEC2_MODE_3200, c2->mode)) || (CODEC2_MODE_ACTIVE(CODEC2_MODE_2400, c2->mode)) || (CODEC2_MODE_ACTIVE(CODEC2_MODE_1600, c2->mode)) || (CODEC2_MODE_ACTIVE(CODEC2_MODE_1400, c2->mode)) || (CODEC2_MODE_ACTIVE(CODEC2_MODE_1300, c2->mode)) || (CODEC2_MODE_ACTIVE(CODEC2_MODE_1200, c2->mode)) || (CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode))); MODEL model; float xq_dec[2] = {}; int e_index, WoE_index; float e = 0.0f; unsigned int nbit; if (CODEC2_MODE_ACTIVE(CODEC2_MODE_3200, c2->mode)) { nbit = 1 + 1 + WO_BITS; e_index = unpack(bits, &nbit, E_BITS); e = decode_energy(e_index, E_BITS); } if (CODEC2_MODE_ACTIVE(CODEC2_MODE_2400, c2->mode)) { nbit = 1 + 1; WoE_index = unpack(bits, &nbit, WO_E_BITS); decode_WoE(&c2->c2const, &model, &e, xq_dec, WoE_index); } if (CODEC2_MODE_ACTIVE(CODEC2_MODE_1600, c2->mode)) { nbit = 1 + 1 + WO_BITS; e_index = unpack(bits, &nbit, E_BITS); e = decode_energy(e_index, E_BITS); } if (CODEC2_MODE_ACTIVE(CODEC2_MODE_1400, c2->mode)) { nbit = 1 + 1; WoE_index = unpack(bits, &nbit, WO_E_BITS); decode_WoE(&c2->c2const, &model, &e, xq_dec, WoE_index); } if (CODEC2_MODE_ACTIVE(CODEC2_MODE_1300, c2->mode)) { nbit = 1 + 1 + 1 + 1 + WO_BITS; e_index = unpack_natural_or_gray(bits, &nbit, E_BITS, c2->gray); e = decode_energy(e_index, E_BITS); } if (CODEC2_MODE_ACTIVE(CODEC2_MODE_1200, c2->mode)) { nbit = 1 + 1; WoE_index = unpack(bits, &nbit, WO_E_BITS); decode_WoE(&c2->c2const, &model, &e, xq_dec, WoE_index); } if (CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode)) { e = codec2_energy_700c(c2, bits); } return e; } /*---------------------------------------------------------------------------* \ FUNCTION....: synthesise_one_frame() AUTHOR......: David Rowe DATE CREATED: 23/8/2010 Synthesise 80 speech samples (10ms) from model parameters. \*---------------------------------------------------------------------------*/ void synthesise_one_frame(struct CODEC2 *c2, short speech[], MODEL *model, COMP Aw[], float gain) { int i; if (CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode)) { /* newamp1, we've already worked out rate L phase */ COMP *H = Aw; phase_synth_zero_order(c2->n_samp, model, &c2->ex_phase, H); } else { /* LPC based phase synthesis */ COMP H[MAX_AMP + 1]; sample_phase(model, H, Aw); phase_synth_zero_order(c2->n_samp, model, &c2->ex_phase, H); } postfilter(model, &c2->bg_est); synthesise(c2->n_samp, c2->fftr_inv_cfg, c2->Sn_, model, c2->Pn, 1); for (i = 0; i < c2->n_samp; i++) { c2->Sn_[i] *= gain; } ear_protection(c2->Sn_, c2->n_samp); for (i = 0; i < c2->n_samp; i++) { if (c2->Sn_[i] > 32767.0) speech[i] = 32767; else if (c2->Sn_[i] < -32767.0) speech[i] = -32767; else speech[i] = c2->Sn_[i]; } } /*---------------------------------------------------------------------------* \ FUNCTION....: analyse_one_frame() AUTHOR......: David Rowe DATE CREATED: 23/8/2010 Extract sinusoidal model parameters from 80 speech samples (10ms of speech). \*---------------------------------------------------------------------------*/ void analyse_one_frame(struct CODEC2 *c2, MODEL *model, short speech[]) { COMP Sw[FFT_ENC]; float pitch; int i; int n_samp = c2->n_samp; int m_pitch = c2->m_pitch; /* Read input speech */ for (i = 0; i < m_pitch - n_samp; i++) c2->Sn[i] = c2->Sn[i + n_samp]; for (i = 0; i < n_samp; i++) c2->Sn[i + m_pitch - n_samp] = speech[i]; dft_speech(&c2->c2const, c2->fft_fwd_cfg, Sw, c2->Sn, c2->w); /* Estimate pitch */ nlp(c2->nlp, c2->Sn, n_samp, &pitch, Sw, c2->W, &c2->prev_f0_enc); model->Wo = TWO_PI / pitch; model->L = PI / model->Wo; /* estimate model parameters */ two_stage_pitch_refinement(&c2->c2const, model, Sw); /* estimate phases when doing ML experiments */ if (c2->fmlfeat != NULL) estimate_amplitudes(model, Sw, c2->W, 1); else estimate_amplitudes(model, Sw, c2->W, 0); est_voicing_mbe(&c2->c2const, model, Sw, c2->W); #ifdef DUMP dump_model(model); #endif } /*---------------------------------------------------------------------------* \ FUNCTION....: ear_protection() AUTHOR......: David Rowe DATE CREATED: Nov 7 2012 Limits output level to protect ears when there are bit errors or the input is overdriven. This doesn't correct or mask bit errors, just reduces the worst of their damage. \*---------------------------------------------------------------------------*/ static void ear_protection(float in_out[], int n) { float max_sample, over, gain; int i; /* find maximum sample in frame */ max_sample = 0.0; for (i = 0; i < n; i++) if (in_out[i] > max_sample) max_sample = in_out[i]; /* determine how far above set point */ over = max_sample / 30000.0; /* If we are x dB over set point we reduce level by 2x dB, this attenuates major excursions in amplitude (likely to be caused by bit errors) more than smaller ones */ if (over > 1.0) { gain = 1.0 / (over * over); for (i = 0; i < n; i++) in_out[i] *= gain; } } void codec2_set_lpc_post_filter(struct CODEC2 *c2, int enable, int bass_boost, float beta, float gamma) { assert((beta >= 0.0) && (beta <= 1.0)); assert((gamma >= 0.0) && (gamma <= 1.0)); c2->lpc_pf = enable; c2->bass_boost = bass_boost; c2->beta = beta; c2->gamma = gamma; } /* Allows optional stealing of one of the voicing bits for use as a spare bit, only 1300 & 1400 & 1600 bit/s supported for now. Experimental method of sending voice/data frames for FreeDV. */ int codec2_get_spare_bit_index(struct CODEC2 *c2) { assert(c2 != NULL); switch (c2->mode) { case CODEC2_MODE_1300: return 2; // bit 2 (3th bit) is v2 (third voicing bit) break; case CODEC2_MODE_1400: return 10; // bit 10 (11th bit) is v2 (third voicing bit) break; case CODEC2_MODE_1600: return 15; // bit 15 (16th bit) is v2 (third voicing bit) break; } return -1; } /* Reconstructs the spare voicing bit. Note works on unpacked bits for convenience. */ int codec2_rebuild_spare_bit(struct CODEC2 *c2, char unpacked_bits[]) { int v1, v3; assert(c2 != NULL); v1 = unpacked_bits[1]; switch (c2->mode) { case CODEC2_MODE_1300: v3 = unpacked_bits[1 + 1 + 1]; /* if either adjacent frame is voiced, make this one voiced */ unpacked_bits[2] = (v1 || v3); return 0; break; case CODEC2_MODE_1400: v3 = unpacked_bits[1 + 1 + 8 + 1]; /* if either adjacent frame is voiced, make this one voiced */ unpacked_bits[10] = (v1 || v3); return 0; break; case CODEC2_MODE_1600: v3 = unpacked_bits[1 + 1 + 8 + 5 + 1]; /* if either adjacent frame is voiced, make this one voiced */ unpacked_bits[15] = (v1 || v3); return 0; break; } return -1; } void codec2_set_natural_or_gray(struct CODEC2 *c2, int gray) { assert(c2 != NULL); c2->gray = gray; } void codec2_set_softdec(struct CODEC2 *c2, float *softdec) { assert(c2 != NULL); c2->softdec = softdec; } void codec2_open_mlfeat(struct CODEC2 *codec2_state, char *feat_fn, char *model_fn) { if ((codec2_state->fmlfeat = fopen(feat_fn, "wb")) == NULL) { fprintf(stderr, "error opening machine learning feature file: %s\n", feat_fn); exit(1); } if (model_fn) { if ((codec2_state->fmlmodel = fopen(model_fn, "wb")) == NULL) { fprintf(stderr, "error opening machine learning Codec 2 model file: %s\n", feat_fn); exit(1); } } } #ifndef __EMBEDDED__ void codec2_load_codebook(struct CODEC2 *codec2_state, int num, char *filename) { FILE *f; if ((f = fopen(filename, "rb")) == NULL) { fprintf(stderr, "error opening codebook file: %s\n", filename); exit(1); } // fprintf(stderr, "reading newamp1vq_cb[%d] k=%d m=%d\n", num, // newamp1vq_cb[num].k, newamp1vq_cb[num].m); float tmp[newamp1vq_cb[num].k * newamp1vq_cb[num].m]; int nread = fread(tmp, sizeof(float), newamp1vq_cb[num].k * newamp1vq_cb[num].m, f); float *p = (float *)newamp1vq_cb[num].cb; for (int i = 0; i < newamp1vq_cb[num].k * newamp1vq_cb[num].m; i++) p[i] = tmp[i]; // fprintf(stderr, "nread = %d %f %f\n", nread, newamp1vq_cb[num].cb[0], // newamp1vq_cb[num].cb[1]); assert(nread == newamp1vq_cb[num].k * newamp1vq_cb[num].m); fclose(f); } #endif float codec2_get_var(struct CODEC2 *codec2_state) { if (codec2_state->nse) return codec2_state->se / codec2_state->nse; else return 0; } float *codec2_enable_user_ratek(struct CODEC2 *codec2_state, int *K) { codec2_state->user_rate_K_vec_no_mean_ = (float *)malloc(sizeof(float) * NEWAMP1_K); *K = NEWAMP1_K; return codec2_state->user_rate_K_vec_no_mean_; } void codec2_700c_post_filter(struct CODEC2 *codec2_state, bool en) { codec2_state->post_filter_en = en; } void codec2_700c_eq(struct CODEC2 *codec2_state, bool en) { codec2_state->eq_en = en; codec2_state->se = 0.0; codec2_state->nse = 0; } codec2-1.2.0/src/codec2.h000066400000000000000000000100101445607075400147540ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: codec2.h AUTHOR......: David Rowe DATE CREATED: 21 August 2010 Codec 2 fully quantised encoder and decoder functions. If you want use Codec 2, these are the functions you need to call. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2010 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __CODEC2__ #define __CODEC2__ #include #include #ifdef __cplusplus extern "C" { #endif #define CODEC2_MODE_3200 0 #define CODEC2_MODE_2400 1 #define CODEC2_MODE_1600 2 #define CODEC2_MODE_1400 3 #define CODEC2_MODE_1300 4 #define CODEC2_MODE_1200 5 #define CODEC2_MODE_700C 8 #ifndef CODEC2_MODE_EN_DEFAULT #define CODEC2_MODE_EN_DEFAULT 1 #endif // by default we enable all modes // disable during compile time with -DCODEC2_MODE_1600_EN=0 // all but CODEC2 1600 are enabled then // or the other way round // -DCODEC2_MODE_EN_DEFAULT=0 -DCODEC2_MODE_1600_EN=1 // only CODEC2 Mode 1600 #if !defined(CODEC2_MODE_3200_EN) #define CODEC2_MODE_3200_EN CODEC2_MODE_EN_DEFAULT #endif #if !defined(CODEC2_MODE_2400_EN) #define CODEC2_MODE_2400_EN CODEC2_MODE_EN_DEFAULT #endif #if !defined(CODEC2_MODE_1600_EN) #define CODEC2_MODE_1600_EN CODEC2_MODE_EN_DEFAULT #endif #if !defined(CODEC2_MODE_1400_EN) #define CODEC2_MODE_1400_EN CODEC2_MODE_EN_DEFAULT #endif #if !defined(CODEC2_MODE_1300_EN) #define CODEC2_MODE_1300_EN CODEC2_MODE_EN_DEFAULT #endif #if !defined(CODEC2_MODE_1200_EN) #define CODEC2_MODE_1200_EN CODEC2_MODE_EN_DEFAULT #endif #if !defined(CODEC2_MODE_700C_EN) #define CODEC2_MODE_700C_EN CODEC2_MODE_EN_DEFAULT #endif #define CODEC2_MODE_ACTIVE(mode_name, var) \ ((mode_name##_EN) == 0 ? 0 : (var) == mode_name) struct CODEC2; struct CODEC2 *codec2_create(int mode); void codec2_destroy(struct CODEC2 *codec2_state); void codec2_encode(struct CODEC2 *codec2_state, unsigned char bytes[], short speech_in[]); void codec2_decode(struct CODEC2 *codec2_state, short speech_out[], const unsigned char bytes[]); void codec2_decode_ber(struct CODEC2 *codec2_state, short speech_out[], const unsigned char *bytes, float ber_est); int codec2_samples_per_frame(struct CODEC2 *codec2_state); int codec2_bits_per_frame(struct CODEC2 *codec2_state); int codec2_bytes_per_frame(struct CODEC2 *codec2_state); void codec2_set_lpc_post_filter(struct CODEC2 *codec2_state, int enable, int bass_boost, float beta, float gamma); int codec2_get_spare_bit_index(struct CODEC2 *codec2_state); int codec2_rebuild_spare_bit(struct CODEC2 *codec2_state, char unpacked_bits[]); void codec2_set_natural_or_gray(struct CODEC2 *codec2_state, int gray); void codec2_set_softdec(struct CODEC2 *c2, float *softdec); float codec2_get_energy(struct CODEC2 *codec2_state, const unsigned char *bits); // support for ML and VQ experiments void codec2_open_mlfeat(struct CODEC2 *codec2_state, char *feat_filename, char *model_filename); void codec2_load_codebook(struct CODEC2 *codec2_state, int num, char *filename); float codec2_get_var(struct CODEC2 *codec2_state); float *codec2_enable_user_ratek(struct CODEC2 *codec2_state, int *K); // 700C post filter and equaliser void codec2_700c_post_filter(struct CODEC2 *codec2_state, bool en); void codec2_700c_eq(struct CODEC2 *codec2_state, bool en); #ifdef __cplusplus } #endif #endif codec2-1.2.0/src/codec2_cohpsk.h000066400000000000000000000056321445607075400163410ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: codec2_cohpsk.h AUTHOR......: David Rowe DATE CREATED: March 2015 Functions that implement a coherent PSK FDM modem. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2015 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __CODEC2_COHPSK__ #define __CODEC2_COHPSK__ #define COHPSK_BITS_PER_FRAME 56 #define COHPSK_NC 7 /* number of carriers */ #define COHPSK_NOM_SAMPLES_PER_FRAME 600 #define COHPSK_MAX_SAMPLES_PER_FRAME 625 #define COHPSK_RS 75 /* symbol rate of each carrier */ #define COHPSK_FS \ 7500 /* note this is a weird value to get an integer \ oversampling rate */ #define COHPSK_CLIP 6.5 /* hard clipping for Nc*Nc=14 to reduce PAPR */ #define COHPSK_SCALE 975 /* suggested scaling for 16 bit shorts */ #include "comp.h" #include "modem_stats.h" struct COHPSK; extern const int test_bits_coh[]; struct COHPSK *cohpsk_create(void); void cohpsk_destroy(struct COHPSK *coh); void cohpsk_mod(struct COHPSK *cohpsk, COMP tx_fdm[], int tx_bits[], int nbits); void cohpsk_clip(COMP tx_fdm[], float clip_thresh, int n); void cohpsk_demod(struct COHPSK *cohpsk, float rx_bits[], int *sync, COMP rx_fdm[], int *nin_frame); void cohpsk_get_demod_stats(struct COHPSK *cohpsk, struct MODEM_STATS *stats); void cohpsk_set_verbose(struct COHPSK *coh, int verbose); void cohpsk_get_test_bits(struct COHPSK *coh, int rx_bits[]); void cohpsk_put_test_bits(struct COHPSK *coh, int *state, short error_pattern[], int *bit_errors, char rx_bits[], int channel); int cohpsk_error_pattern_size(void); void cohpsk_set_frame(struct COHPSK *coh, int frame); void fdmdv_freq_shift_coh(COMP rx_fdm_fcorr[], COMP rx_fdm[], float foff, float Fs, COMP *foff_phase_rect, int nin); void cohpsk_set_freq_est_mode(struct COHPSK *coh, int used_simple_mode); /* used for accessing upper and lower bits before diversity combination */ float *cohpsk_get_rx_bits_lower(struct COHPSK *coh); float *cohpsk_get_rx_bits_upper(struct COHPSK *coh); void cohpsk_set_carrier_ampl(struct COHPSK *coh, int c, float ampl); #endif codec2-1.2.0/src/codec2_fdmdv.h000066400000000000000000000115751445607075400161550ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: codec2_fdmdv.h AUTHOR......: David Rowe DATE CREATED: April 14 2012 A 1400 bit/s (nominal) Frequency Division Multiplexed Digital Voice (FDMDV) modem. Used for digital audio over HF SSB. See README_fdmdv.txt for more information, and fdmdv_mod.c and fdmdv_demod.c for example usage. The name codec2_fdmdv.h is used to make it unique when "make installed". References: [1] http://n1su.com/fdmdv/FDMDV_Docs_Rel_1_4b.pdf \*---------------------------------------------------------------------------*/ /* Copyright (C) 2012 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __FDMDV__ #define __FDMDV__ #include "comp.h" #include "modem_stats.h" #ifdef __cplusplus extern "C" { #endif /* set up the calling convention for DLL function import/export for WIN32 cross compiling */ #ifdef __CODEC2_WIN32__ #ifdef __CODEC2_BUILDING_DLL__ #define CODEC2_WIN32SUPPORT __declspec(dllexport) __stdcall #else #define CODEC2_WIN32SUPPORT __declspec(dllimport) __stdcall #endif #else #define CODEC2_WIN32SUPPORT #endif #define FDMDV_NC \ 14 /* default number of data carriers */ #define FDMDV_NC_MAX \ 20 /* maximum number of data carriers */ #define FDMDV_BITS_PER_FRAME \ 28 /* 20ms frames, for nominal 1400 bit/s */ #define FDMDV_NOM_SAMPLES_PER_FRAME \ 160 /* modulator output samples/frame and nominal demod samples/frame */ /* at 8000 Hz sample rate */ #define FDMDV_MAX_SAMPLES_PER_FRAME \ 200 /* max demod samples/frame, use this to allocate storage */ #define FDMDV_SCALE \ 825 /* suggested scaling for 16 bit shorts */ #define FDMDV_FCENTRE \ 1500 /* Centre frequency, Nc/2 carriers below this, Nc/2 carriers above (Hz) \ */ /* 8 to 18 kHz sample rate conversion */ #define FDMDV_OS 2 /* oversampling rate */ #define FDMDV_OS_TAPS_16K 48 /* number of OS filter taps at 16kHz */ #define FDMDV_OS_TAPS_8K \ (FDMDV_OS_TAPS_16K / FDMDV_OS) /* number of OS filter taps at 8kHz */ /* 8 to 48 kHz sample rate conversion */ #define FDMDV_OS_48 6 /* oversampling rate */ #define FDMDV_OS_TAPS_48K 48 /* number of OS filter taps at 48kHz */ #define FDMDV_OS_TAPS_48_8K \ (FDMDV_OS_TAPS_48K / FDMDV_OS_48) /* number of OS filter taps at 8kHz */ /* FDMDV states and stats structures */ struct FDMDV; struct FDMDV *fdmdv_create(int Nc); void fdmdv_destroy(struct FDMDV *fdmdv_state); void fdmdv_use_old_qpsk_mapping(struct FDMDV *fdmdv_state); int fdmdv_bits_per_frame(struct FDMDV *fdmdv_state); float fdmdv_get_fsep(struct FDMDV *fdmdv_state); void fdmdv_set_fsep(struct FDMDV *fdmdv_state, float fsep); void fdmdv_mod(struct FDMDV *fdmdv_state, COMP tx_fdm[], int tx_bits[], int *sync_bit); void fdmdv_demod(struct FDMDV *fdmdv_state, int rx_bits[], int *reliable_sync_bit, COMP rx_fdm[], int *nin); void fdmdv_get_test_bits(struct FDMDV *fdmdv_state, int tx_bits[]); int fdmdv_error_pattern_size(struct FDMDV *fdmdv_state); void fdmdv_put_test_bits(struct FDMDV *f, int *sync, short error_pattern[], int *bit_errors, int *ntest_bits, int rx_bits[]); void fdmdv_get_demod_stats(struct FDMDV *fdmdv_state, struct MODEM_STATS *stats); void fdmdv_8_to_16(float out16k[], float in8k[], int n); void fdmdv_8_to_16_short(short out16k[], short in8k[], int n); void fdmdv_16_to_8(float out8k[], float in16k[], int n); void fdmdv_16_to_8_short(short out8k[], short in16k[], int n); void fdmdv_8_to_48(float out48k[], float in8k[], int n); void fdmdv_48_to_8(float out8k[], float in48k[], int n); void fdmdv_8_to_48_short(short out48k[], short in8k[], int n); void fdmdv_48_to_8_short(short out8k[], short in48k[], int n); void fdmdv_freq_shift(COMP rx_fdm_fcorr[], COMP rx_fdm[], float foff, COMP *foff_phase_rect, int nin); /* debug/development function(s) */ void fdmdv_dump_osc_mags(struct FDMDV *f); void fdmdv_simulate_channel(float *sig_pwr_av, COMP samples[], int nin, float target_snr); #ifdef __cplusplus } #endif #endif codec2-1.2.0/src/codec2_fft.c000066400000000000000000000101631445607075400156170ustar00rootroot00000000000000/* * codec2_fft.c * * Created on: 24.09.2016 * Author: danilo */ #include "codec2_fft.h" #include "debug_alloc.h" #ifdef USE_KISS_FFT #include "_kiss_fft_guts.h" #else #if 0 // caching constants in RAM did not seem to have an effect on performance // TODO: Decide what to with this code #define FFT_INIT_CACHE_SIZE 4 const arm_cfft_instance_f32* fft_init_cache[FFT_INIT_CACHE_SIZE]; static const arm_cfft_instance_f32* arm_fft_instance2ram(const arm_cfft_instance_f32* in) { arm_cfft_instance_f32* out = malloc(sizeof(arm_cfft_instance_f32)); if (out) { memcpy(out,in,sizeof(arm_cfft_instance_f32)); out->pBitRevTable = malloc(out->bitRevLength * sizeof(uint16_t)); out->pTwiddle = malloc(out->fftLen * sizeof(float32_t)); memcpy((void*)out->pBitRevTable,in->pBitRevTable,out->bitRevLength * sizeof(uint16_t)); memcpy((void*)out->pTwiddle,in->pTwiddle,out->fftLen * sizeof(float32_t)); } return out; } static const arm_cfft_instance_f32* arm_fft_cache_get(const arm_cfft_instance_f32* romfft) { const arm_cfft_instance_f32* retval = NULL; static int used = 0; for (int i = 0; fft_init_cache[i] != NULL && i < used; i++) { if (romfft->fftLen == fft_init_cache[i]->fftLen) { retval = fft_init_cache[i]; break; } } if (retval == NULL && used < FFT_INIT_CACHE_SIZE) { retval = arm_fft_instance2ram(romfft); fft_init_cache[used++] = retval; } if (retval == NULL) { retval = romfft; } return retval; } #endif #endif void codec2_fft_free(codec2_fft_cfg cfg) { #ifdef USE_KISS_FFT KISS_FFT_FREE(cfg); #else FREE(cfg); #endif } codec2_fft_cfg codec2_fft_alloc(int nfft, int inverse_fft, void* mem, size_t* lenmem) { codec2_fft_cfg retval; #ifdef USE_KISS_FFT retval = kiss_fft_alloc(nfft, inverse_fft, mem, lenmem); #else retval = MALLOC(sizeof(codec2_fft_struct)); retval->inverse = inverse_fft; switch (nfft) { case 128: retval->instance = &arm_cfft_sR_f32_len128; break; case 256: retval->instance = &arm_cfft_sR_f32_len256; break; case 512: retval->instance = &arm_cfft_sR_f32_len512; break; // case 1024: // retval->instance = &arm_cfft_sR_f32_len1024; // break; default: abort(); } // retval->instance = arm_fft_cache_get(retval->instance); #endif return retval; } codec2_fftr_cfg codec2_fftr_alloc(int nfft, int inverse_fft, void* mem, size_t* lenmem) { codec2_fftr_cfg retval; #ifdef USE_KISS_FFT retval = kiss_fftr_alloc(nfft, inverse_fft, mem, lenmem); #else retval = MALLOC(sizeof(codec2_fftr_struct)); retval->inverse = inverse_fft; retval->instance = MALLOC(sizeof(arm_rfft_fast_instance_f32)); arm_rfft_fast_init_f32(retval->instance, nfft); // memcpy(&retval->instance->Sint,arm_fft_cache_get(&retval->instance->Sint),sizeof(arm_cfft_instance_f32)); #endif return retval; } void codec2_fftr_free(codec2_fftr_cfg cfg) { #ifdef USE_KISS_FFT KISS_FFT_FREE(cfg); #else FREE(cfg->instance); FREE(cfg); #endif } // there is a little overhead for inplace kiss_fft but this is // on the powerful platforms like the Raspberry or even x86 PC based ones // not noticeable // the reduced usage of RAM and increased performance on STM32 platforms // should be worth it. void codec2_fft_inplace(codec2_fft_cfg cfg, codec2_fft_cpx* inout) { #ifdef USE_KISS_FFT // decide whether to use the local stack based buffer for in // or to allow kiss_fft to allocate RAM // second part is just to play safe since first method // is much faster and uses less RAM if (cfg->nfft <= 512) { kiss_fft_cpx in[512]; memcpy(in, inout, cfg->nfft * sizeof(kiss_fft_cpx)); kiss_fft(cfg, in, (kiss_fft_cpx*)inout); } else { kiss_fft(cfg, (kiss_fft_cpx*)inout, (kiss_fft_cpx*)inout); } #else arm_cfft_f32(cfg->instance, (float*)inout, cfg->inverse, 1); if (cfg->inverse) { arm_scale_f32((float*)inout, cfg->instance->fftLen, (float*)inout, cfg->instance->fftLen * 2); } #endif } codec2-1.2.0/src/codec2_fft.h000066400000000000000000000054561445607075400156350ustar00rootroot00000000000000/* * codec2_fft.h * * Created on: 17.09.2016 * Author: danilo */ #ifndef DRIVERS_FREEDV_CODEC2_FFT_H_ #define DRIVERS_FREEDV_CODEC2_FFT_H_ #include #include #include #include #include #ifndef FDV_ARM_MATH #define USE_KISS_FFT #else #include "arm_const_structs.h" #include "arm_math.h" #endif #include "comp.h" #include "defines.h" typedef COMP codec2_fft_cpx; #include "kiss_fftr.h" #ifdef USE_KISS_FFT #include "kiss_fft.h" typedef kiss_fftr_cfg codec2_fftr_cfg; typedef kiss_fft_cfg codec2_fft_cfg; typedef kiss_fft_scalar codec2_fft_scalar; #else typedef float32_t codec2_fft_scalar; typedef struct { arm_rfft_fast_instance_f32* instance; int inverse; } codec2_fftr_struct; typedef codec2_fftr_struct* codec2_fftr_cfg; typedef struct { const arm_cfft_instance_f32* instance; int inverse; } codec2_fft_struct; typedef codec2_fft_struct* codec2_fft_cfg; #endif static inline void codec2_fftr(codec2_fftr_cfg cfg, codec2_fft_scalar* in, codec2_fft_cpx* out) { #ifdef USE_KISS_FFT kiss_fftr(cfg, in, (kiss_fft_cpx*)out); #else arm_rfft_fast_f32(cfg->instance, in, (float*)out, cfg->inverse); out->imag = 0; // remove out[FFT_ENC/2]->real stored in out[0].imag #endif } static inline void codec2_fftri(codec2_fftr_cfg cfg, codec2_fft_cpx* in, codec2_fft_scalar* out) { #ifdef USE_KISS_FFT kiss_fftri(cfg, (kiss_fft_cpx*)in, out); #else arm_rfft_fast_f32(cfg->instance, (float*)in, out, cfg->inverse); // arm_scale_f32(out,cfg->instance->fftLenRFFT,out,cfg->instance->fftLenRFFT); #endif } codec2_fft_cfg codec2_fft_alloc(int nfft, int inverse_fft, void* mem, size_t* lenmem); codec2_fftr_cfg codec2_fftr_alloc(int nfft, int inverse_fft, void* mem, size_t* lenmem); void codec2_fft_free(codec2_fft_cfg cfg); void codec2_fftr_free(codec2_fftr_cfg cfg); static inline void codec2_fft(codec2_fft_cfg cfg, codec2_fft_cpx* in, codec2_fft_cpx* out) { #ifdef USE_KISS_FFT kiss_fft(cfg, (kiss_fft_cpx*)in, (kiss_fft_cpx*)out); #else memcpy(out, in, cfg->instance->fftLen * 2 * sizeof(float)); arm_cfft_f32(cfg->instance, (float*)out, cfg->inverse, 1); // TODO: this is not nice, but for now required to keep changes minimal // however, since main goal is to reduce the memory usage // we should convert to an in place interface // on PC like platforms the overhead of using the "inplace" kiss_fft calls // is neglectable compared to the gain in memory usage on STM32 platforms if (cfg->inverse) { arm_scale_f32((float*)out, cfg->instance->fftLen, (float*)out, cfg->instance->fftLen * 2); } #endif } void codec2_fft_inplace(codec2_fft_cfg cfg, codec2_fft_cpx* inout); #endif codec2-1.2.0/src/codec2_fifo.c000066400000000000000000000066421445607075400157720ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: codec2_fifo.c AUTHOR......: David Rowe DATE CREATED: Oct 15 2012 A FIFO design useful in gluing the FDMDV modem and codec together in integrated applications. The unittest/tfifo indicates these routines are thread safe without the need for synchronisation object, e.g. a different thread can read and write to a fifo at the same time. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2012 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "codec2_fifo.h" #include #include #include struct FIFO { short *buf; short *pin; short *pout; int nshort; }; // standard create function struct FIFO *codec2_fifo_create(int nshort) { short *buf = (short *)malloc(sizeof(short) * nshort); assert(buf != NULL); return codec2_fifo_create_buf(nshort, buf); } // alternate create function where buffer is externally supplied struct FIFO *codec2_fifo_create_buf(int nshort, short *buf) { struct FIFO *fifo; assert(buf != NULL); fifo = (struct FIFO *)malloc(sizeof(struct FIFO)); assert(fifo != NULL); fifo->buf = buf; fifo->pin = fifo->buf; fifo->pout = fifo->buf; fifo->nshort = nshort; return fifo; } void codec2_fifo_destroy(struct FIFO *fifo) { assert(fifo != NULL); free(fifo->buf); free(fifo); } int codec2_fifo_write(struct FIFO *fifo, short data[], int n) { int i; short *pdata; short *pin = fifo->pin; assert(fifo != NULL); assert(data != NULL); if (n > codec2_fifo_free(fifo)) { return -1; } else { /* This could be made more efficient with block copies using memcpy */ pdata = data; for (i = 0; i < n; i++) { *pin++ = *pdata++; if (pin == (fifo->buf + fifo->nshort)) pin = fifo->buf; } fifo->pin = pin; } return 0; } int codec2_fifo_read(struct FIFO *fifo, short data[], int n) { int i; short *pdata; short *pout = fifo->pout; assert(fifo != NULL); assert(data != NULL); if (n > codec2_fifo_used(fifo)) { return -1; } else { /* This could be made more efficient with block copies using memcpy */ pdata = data; for (i = 0; i < n; i++) { *pdata++ = *pout++; if (pout == (fifo->buf + fifo->nshort)) pout = fifo->buf; } fifo->pout = pout; } return 0; } int codec2_fifo_used(const struct FIFO *const fifo) { short *pin = fifo->pin; short *pout = fifo->pout; unsigned int used; assert(fifo != NULL); if (pin >= pout) used = pin - pout; else used = fifo->nshort + (unsigned int)(pin - pout); return used; } int codec2_fifo_free(const struct FIFO *const fifo) { // available storage is one less than nshort as prd == pwr // is reserved for empty rather than full return fifo->nshort - codec2_fifo_used(fifo) - 1; } codec2-1.2.0/src/codec2_fifo.h000066400000000000000000000032171445607075400157720ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: codec2_fifo.h AUTHOR......: David Rowe DATE CREATED: Oct 15 2012 A FIFO design useful in gluing the FDMDV modem and codec together in integrated applications. The name codec2_fifo.h is used to make it unique when "make installed". \*---------------------------------------------------------------------------*/ /* Copyright (C) 2012 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __FIFO__ #define __FIFO__ #ifdef __cplusplus extern "C" { #endif struct FIFO; struct FIFO *codec2_fifo_create(int nshort); struct FIFO *codec2_fifo_create_buf(int nshort, short *buf); void codec2_fifo_destroy(struct FIFO *fifo); int codec2_fifo_write(struct FIFO *fifo, short data[], int n); int codec2_fifo_read(struct FIFO *fifo, short data[], int n); /* Return the number of bytes stored in the FIFO */ int codec2_fifo_used(const struct FIFO *const fifo); /* Return the space available in the FIFO */ int codec2_fifo_free(const struct FIFO *const fifo); #ifdef __cplusplus } #endif #endif codec2-1.2.0/src/codec2_fm.h000066400000000000000000000031521445607075400154470ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: codec2_fm.h AUTHOR......: David Rowe DATE CREATED: February 2015 Functions that implement analog FM, see also octave/fm.m. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2015 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __CODEC2_FM__ #define __CODEC2_FM__ #include "comp.h" struct FM { float Fs; /* setme: sample rate */ float fm_max; /* setme: maximum modulation frequency */ float fd; /* setme: maximum deviation */ float fc; /* setme: carrier frequency */ COMP *rx_bb; COMP rx_bb_filt_prev; float *rx_dem_mem; float tx_phase; int nsam; COMP lo_phase; }; struct FM *fm_create(int nsam); void fm_destroy(struct FM *fm_states); void fm_demod(struct FM *fm, float rx_out[], float rx[]); void fm_mod(struct FM *fm, float tx_in[], float tx_out[]); void fm_mod_comp(struct FM *fm_states, float tx_in[], COMP tx_out[]); #endif codec2-1.2.0/src/codec2_internal.h000066400000000000000000000107651445607075400166710ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: codec2_internal.h AUTHOR......: David Rowe DATE CREATED: April 16 2012 Header file for Codec2 internal states, exposed via this header file to assist in testing. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2012 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __CODEC2_INTERNAL__ #define __CODEC2_INTERNAL__ #include #include "codec2_fft.h" #include "newamp1.h" #include "newamp2.h" struct CODEC2 { int mode; C2CONST c2const; int Fs; int n_samp; int m_pitch; codec2_fft_cfg fft_fwd_cfg; /* forward FFT config */ codec2_fftr_cfg fftr_fwd_cfg; /* forward real FFT config */ float *w; /* [m_pitch] time domain hamming window */ float W[FFT_ENC]; /* DFT of w[] */ float *Pn; /* [2*n_samp] trapezoidal synthesis window */ float *bpf_buf; /* buffer for band pass filter */ float *Sn; /* [m_pitch] input speech */ float hpf_states[2]; /* high pass filter states */ void *nlp; /* pitch predictor states */ int gray; /* non-zero for gray encoding */ codec2_fftr_cfg fftr_inv_cfg; /* inverse FFT config */ float *Sn_; /* [2*n_samp] synthesised output speech */ float ex_phase; /* excitation model phase track */ float bg_est; /* background noise estimate for post filter */ float prev_f0_enc; /* previous frame's f0 estimate */ MODEL prev_model_dec; /* previous frame's model parameters */ float prev_lsps_dec[LPC_ORD]; /* previous frame's LSPs */ float prev_e_dec; /* previous frame's LPC energy */ int lpc_pf; /* LPC post filter on */ int bass_boost; /* LPC post filter bass boost */ float beta; /* LPC post filter parameters */ float gamma; float xq_enc[2]; /* joint pitch and energy VQ states */ float xq_dec[2]; int smoothing; /* enable smoothing for channels with errors */ float *softdec; /* optional soft decn bits from demod */ /* newamp1 states */ float rate_K_sample_freqs_kHz[NEWAMP1_K]; float prev_rate_K_vec_[NEWAMP1_K]; float Wo_left; int voicing_left; codec2_fft_cfg phase_fft_fwd_cfg; codec2_fft_cfg phase_fft_inv_cfg; float se; /* running sum of squared error */ unsigned int nse; /* number of terms in sum */ float *user_rate_K_vec_no_mean_; /* optional, user supplied vector for quantisation experiments */ bool post_filter_en; float eq[NEWAMP1_K]; /* optional equaliser */ bool eq_en; /*newamp2 states (also uses newamp1 states )*/ float energy_prev; float n2_rate_K_sample_freqs_kHz[NEWAMP2_K]; float n2_prev_rate_K_vec_[NEWAMP2_K]; float n2_pwb_rate_K_sample_freqs_kHz[NEWAMP2_16K_K]; float n2_pwb_prev_rate_K_vec_[NEWAMP2_16K_K]; /* used to dump features for deep learning experiments */ FILE *fmlfeat, *fmlmodel; /* encode/decode function pointers for the selected mode */ void (*encode)(struct CODEC2 *c2, unsigned char *bits, short speech[]); void (*decode)(struct CODEC2 *c2, short speech[], const unsigned char *bits); void (*decode_ber)(struct CODEC2 *c2, short speech[], const unsigned char *bits, float ber_est); }; // test and debug void analyse_one_frame(struct CODEC2 *c2, MODEL *model, short speech[]); void synthesise_one_frame(struct CODEC2 *c2, short speech[], MODEL *model, COMP Aw[], float gain); #endif codec2-1.2.0/src/codec2_math.h000066400000000000000000000066171445607075400160070ustar00rootroot00000000000000#ifndef CODEC2_MATH_H #define CODEC2_MATH_H //========================================================================== // Name: codec2_math.h // // Purpose: A wrapper around architecture specific math libraries // used on embedded devices to improve Codec2 performance. // Created: May 15, 2022 // Authors: Mooneer Salem // // License: // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License version 2.1, // as published by the Free Software Foundation. This program is // distributed in the hope that it will be useful, but WITHOUT ANY // WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public // License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with this program; if not, see . // //========================================================================== #include #ifdef __cplusplus extern "C" { #endif // __cplusplus #include "comp.h" //========================================================================== // Note: the functions in this file must be implemented in your code if you // intend on using Codec2 in a non-ARM based embedded device. Otherwise, // linker errors will occur. For ARM, a default implementation of these // functions exists in codec2_math_arm.c. //========================================================================== //========================================================================== /// Calculates the dot product of two real-valued float vectors. /// /// @param leftHandSideRealVector A pointer to the first vector to use for the /// dot product. /// @param rightHandSideRealVector A pointer to the second vector to use for the /// dot product. /// @param vectorLength The length of the vector. Both vectors should be at /// least this long. /// @param resultReal A pointer to the variable in which to store the scalar /// result. /// //========================================================================== void codec2_dot_product_f32(float* leftHandSideRealVector, float* rightHandSideRealVector, size_t vectorLength, float* resultReal); //========================================================================== /// Calculates the dot product of two complex-valued float vectors. /// /// @param leftHandSideComplexVector A pointer to the first vector to use for /// the dot product. /// @param rightHandSideComplexVector A pointer to the second vector to use for /// the dot product. /// @param vectorLength The length of the vector. Both vectors should be at /// least this long. /// @param resultReal A pointer to the variable in which to store the real /// component of the result. /// @param resultImag A pointer to the variable in which to store the imaginary /// component of the result. /// //========================================================================== void codec2_complex_dot_product_f32(COMP* leftHandSideComplexVector, COMP* rightHandSideComplexVector, size_t vectorLength, float* resultReal, float* resultImag); #ifdef __cplusplus } #endif // __cplusplus #endif // CODEC2_MATH_H codec2-1.2.0/src/codec2_math_arm.c000066400000000000000000000065221445607075400166340ustar00rootroot00000000000000//========================================================================== // Name: codec2_math_arm.c // // Purpose: A wrapper around architecture specific math libraries // used on ARM embedded devices to improve Codec2 performance. // Created: May 15, 2022 // Authors: Mooneer Salem // // License: // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License version 2.1, // as published by the Free Software Foundation. This program is // distributed in the hope that it will be useful, but WITHOUT ANY // WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public // License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with this program; if not, see . // //========================================================================== #if defined(__EMBEDDED__) && defined(__ARM_ARCH) #include "arm_math.h" #include "codec2_math.h" //========================================================================== /// Calculates the dot product of two real-valued float vectors. /// /// @param leftHandSideRealVector A pointer to the first vector to use for the /// dot product. /// @param rightHandSideRealVector A pointer to the second vector to use for the /// dot product. /// @param vectorLength The length of the vector. Both vectors should be at /// least this long. /// @param resultReal A pointer to the variable in which to store the scalar /// result. //========================================================================== void codec2_dot_product_f32(float* leftHandSideRealVector, float* rightHandSideRealVector, size_t vectorLength, float* resultReal) { arm_dot_prod_f32(leftHandSideRealVector, rightHandSideRealVector, vectorLength, resultReal); } //========================================================================== /// Calculates the dot product of two complex-valued float vectors. /// /// @param leftHandSideComplexVector A pointer to the first vector to use for /// the dot product. /// @param rightHandSideComplexVector A pointer to the second vector to use for /// the dot product. /// @param vectorLength The length of the vector. Both vectors should be at /// least this long. /// @param resultReal A pointer to the variable in which to store the real /// component of the result. /// @param resultImag A pointer to the variable in which to store the imaginary /// component of the result. /// /// @note Each array of floats is organized with even elements being real and /// odd elements imaginary. //========================================================================== void codec2_complex_dot_product_f32(COMP* leftHandSideComplexVector, COMP* rightHandSideComplexVector, size_t vectorLength, float* resultReal, float* resultImag) { arm_cmplx_dot_prod_f32((float*)leftHandSideComplexVector, (float*)rightHandSideComplexVector, vectorLength, resultReal, resultImag); } #endif // defined(__EMBEDDED__) && defined(__ARM_ARCH) codec2-1.2.0/src/codec2_ofdm.h000066400000000000000000000061751445607075400160020ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: codec2_ofdm.h AUTHORS.....: David Rowe & Steve Sampson DATE CREATED: June 2017 External user references to the modem library. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2017 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef CODEC2_OFDM_H #define CODEC2_OFDM_H /* Includes */ #include #include #include "comp.h" #include "modem_stats.h" /* Defines */ #ifdef __cplusplus extern "C" { #endif #define OFDM_PEAK 16384 /* peak level of OFDM TX signal */ #define OFDM_CLIP \ (32767 * \ 0.35) /* experimentally derived constant to reduce PAPR to about 8dB */ #define UN_SYNC 0 /* Used with the ofdm_set_sync() */ #define AUTO_SYNC 1 #define MANUAL_SYNC 2 #define AUTO_PHASE_EST 0 #define LOCKED_PHASE_EST 1 #define LOW_BW 0 #define HIGH_BW 1 struct OFDM_CONFIG; struct OFDM; /* create and destroy modem states */ struct OFDM *ofdm_create(const struct OFDM_CONFIG *config); void ofdm_destroy(struct OFDM *); void ofdm_init_mode(char mode[], struct OFDM_CONFIG *config); /* signal processing */ void ofdm_mod(struct OFDM *, COMP *, const int *); void ofdm_demod(struct OFDM *, int *, COMP *); void ofdm_demod_shorts(struct OFDM *, int *, short *, float); int ofdm_sync_search(struct OFDM *, COMP *); int ofdm_sync_search_shorts(struct OFDM *, short *, float); void ofdm_sync_state_machine(struct OFDM *, uint8_t *); void ofdm_sync_state_machine2(struct OFDM *, uint8_t *); /* getters */ struct OFDM_CONFIG *ofdm_get_config_param(struct OFDM *ofdm); int ofdm_get_nin(struct OFDM *); int ofdm_get_samples_per_frame(struct OFDM *ofdm); int ofdm_get_samples_per_packet(struct OFDM *ofdm); int ofdm_get_max_samples_per_frame(struct OFDM *ofdm); int ofdm_get_bits_per_frame(struct OFDM *ofdm); int ofdm_get_bits_per_packet(struct OFDM *ofdm); int ofdm_get_phase_est_bandwidth_mode(struct OFDM *ofdm); /* option setters */ void ofdm_set_verbose(struct OFDM *, int); void ofdm_set_timing_enable(struct OFDM *, bool); void ofdm_set_foff_est_enable(struct OFDM *, bool); void ofdm_set_phase_est_enable(struct OFDM *, bool); void ofdm_set_phase_est_bandwidth_mode(struct OFDM *ofdm, int val); void ofdm_set_off_est_hz(struct OFDM *, float); void ofdm_set_sync(struct OFDM *, int); void ofdm_set_tx_bpf(struct OFDM *, bool); void ofdm_set_dpsk(struct OFDM *ofdm, bool val); void ofdm_set_packets_per_burst(struct OFDM *ofdm, int packetsperburst); void ofdm_print_info(struct OFDM *); #ifdef __cplusplus } #endif #endif codec2-1.2.0/src/cohpsk.c000066400000000000000000001272101445607075400151120ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: cohpsk.c AUTHOR......: David Rowe DATE CREATED: March 2015 Functions that implement a coherent PSK FDM modem. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2015 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ /*---------------------------------------------------------------------------*\ INCLUDES \*---------------------------------------------------------------------------*/ #include #include #include #include #include #include "codec2_cohpsk.h" #include "cohpsk_defs.h" #include "cohpsk_internal.h" #include "comp_prim.h" #include "debug_alloc.h" #include "fdmdv_internal.h" #include "kiss_fft.h" #include "linreg.h" #include "pilots_coh.h" #include "rn_coh.h" #include "test_bits_coh.h" static COMP qpsk_mod[] = {{1.0, 0.0}, {0.0, 1.0}, {0.0, -1.0}, {-1.0, 0.0}}; static int sampling_points[] = {0, 1, 6, 7}; void corr_with_pilots(float *corr_out, float *mag_out, struct COHPSK *coh, int t, float f_fine); void update_ct_symb_buf(COMP ct_symb_buf[][COHPSK_NC * COHPSK_ND], COMP ch_symb[][COHPSK_NC * COHPSK_ND]); /*---------------------------------------------------------------------------*\ FUNCTIONS \*---------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------* \ FUNCTION....: cohpsk_create AUTHOR......: David Rowe DATE CREATED: Marcg 2015 Create and initialise an instance of the modem. Returns a pointer to the modem states or NULL on failure. One set of states is sufficient for a full duplex modem. \*---------------------------------------------------------------------------*/ struct COHPSK *cohpsk_create(void) { struct COHPSK *coh; struct FDMDV *fdmdv; int r, c, p, i; float freq_hz, result; float tau = 2.0f * M_PI; assert(COHPSK_NC == PILOTS_NC); assert(COHPSK_NOM_SAMPLES_PER_FRAME == (COHPSK_M * NSYMROWPILOT)); assert(COHPSK_MAX_SAMPLES_PER_FRAME == (COHPSK_M * NSYMROWPILOT + COHPSK_M / P)); assert(COHPSK_NSYM == NSYM); /* as we want to use the tx sym mem on fdmdv */ assert(COHPSK_NT == NT); coh = (struct COHPSK *)MALLOC(sizeof(struct COHPSK)); if (coh == NULL) return NULL; /* set up buffer of tx pilot symbols for coh demod on rx */ for (r = 0; r < 2 * NPILOTSFRAME;) { for (p = 0; p < NPILOTSFRAME; r++, p++) { for (c = 0; c < COHPSK_NC; c++) { coh->pilot2[r][c] = pilots_coh[p][c]; } } } /* Clear symbol buffer memory */ for (r = 0; r < NCT_SYMB_BUF; r++) { for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) { coh->ct_symb_buf[r][c].real = 0.0; coh->ct_symb_buf[r][c].imag = 0.0; } } coh->ff_phase.real = 1.0; coh->ff_phase.imag = 0.0; coh->sync = 0; coh->frame = 0; coh->ratio = 0.0; coh->nin = COHPSK_M; /* clear sync window buffer */ for (i = 0; i < NSW * NSYMROWPILOT * COHPSK_M; i++) { coh->ch_fdm_frame_buf[i].real = 0.0; coh->ch_fdm_frame_buf[i].imag = 0.0; } /* set up fdmdv states so we can use those modem functions */ /* * NC*ND -1 Realize that the function creates a sync carrier (+1), * or one more carrier than asked for. We ignore any initialization * inside of fdmdv and take care of that here, using the whole * NC*ND number of carriers to be used in cohpsk. */ fdmdv = fdmdv_create((COHPSK_NC * COHPSK_ND) - 1); fdmdv->fsep = COHPSK_RS * (1.0 + COHPSK_EXCESS_BW); for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) { fdmdv->phase_tx[c].real = 1.0; fdmdv->phase_tx[c].imag = 0.0; /* note non-linear carrier spacing to help PAPR, works v well in conjunction * with CLIP */ freq_hz = fdmdv->fsep * (-(COHPSK_NC * COHPSK_ND) / 2 - 0.5f + powf(c + 1.0f, 0.98f)); result = tau * freq_hz / COHPSK_FS; fdmdv->freq[c].real = cosf(result); fdmdv->freq[c].imag = sinf(result); fdmdv->freq_pol[c] = result; // printf("c: %d %f %f\n",c,freq_hz,fdmdv->freq_pol[c]); for (i = 0; i < COHPSK_NFILTER; i++) { coh->rx_filter_memory[c][i].real = 0.0; coh->rx_filter_memory[c][i].imag = 0.0; } /* optional per-carrier amplitude weighting for testing */ coh->carrier_ampl[c] = 1.0; } result = tau * FDMDV_FCENTRE / COHPSK_FS; fdmdv->fbb_rect.real = cosf(result); fdmdv->fbb_rect.imag = sinf(result); fdmdv->fbb_pol = result; coh->fdmdv = fdmdv; coh->sig_rms = coh->noise_rms = 0.0; for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) { for (r = 0; r < NSYMROW; r++) { coh->rx_symb[r][c].real = 0.0; coh->rx_symb[r][c].imag = 0.0; } } coh->verbose = 0; /* disable optional logging by default */ coh->rx_baseband_log = NULL; coh->rx_baseband_log_col_index = 0; coh->rx_filt_log = NULL; coh->rx_filt_log_col_index = 0; coh->ch_symb_log = NULL; coh->ch_symb_log_r = 0; coh->rx_timing_log = NULL; coh->rx_timing_log_index = 0; /* test frames */ coh->ptest_bits_coh_tx = coh->ptest_bits_coh_rx[0] = coh->ptest_bits_coh_rx[1] = (int *)test_bits_coh; coh->ptest_bits_coh_end = (int *)test_bits_coh + sizeof(test_bits_coh) / sizeof(int); return coh; } /*---------------------------------------------------------------------------*\ FUNCTION....: cohpsk_destroy AUTHOR......: David Rowe DATE CREATED: March 2015 Destroy an instance of the modem. \*---------------------------------------------------------------------------*/ void cohpsk_destroy(struct COHPSK *coh) { fdmdv_destroy(coh->fdmdv); assert(coh != NULL); FREE(coh); } /*---------------------------------------------------------------------------*\ FUNCTION....: bits_to_qpsk_symbols() AUTHOR......: David Rowe DATE CREATED: March 2015 Rate Rs modulator. Maps bits to parallel DQPSK symbols and inserts pilot symbols. \*---------------------------------------------------------------------------*/ void bits_to_qpsk_symbols(COMP tx_symb[][COHPSK_NC * COHPSK_ND], int tx_bits[], int nbits) { int i, r, c, p_r, data_r, d, diversity; short bits; /* check allowed number of bits supplied matches number of QPSK symbols in the frame */ assert((NSYMROW * COHPSK_NC * 2 == nbits) || (NSYMROW * COHPSK_NC * 2 * COHPSK_ND == nbits)); /* if we input twice as many bits we don't do diversity */ if (NSYMROW * COHPSK_NC * 2 == nbits) { diversity = 1; /* diversity mode */ } else { diversity = 2; /* twice as many bits, non diversity mode */ } /* Insert two rows of Nc pilots at beginning of data frame. Organise QPSK symbols into a NSYMBROWS rows by PILOTS_NC*ND cols matrix, each column is a carrier, time flows down the cols...... Note: the "& 0x1" prevents and non binary tx_bits[] screwing up our lives. Call me defensive. sqrtf(ND) term ensures the same energy/symbol for different diversity factors. */ r = 0; for (p_r = 0; p_r < 2; p_r++) { for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) { tx_symb[r][c].real = pilots_coh[p_r][c % COHPSK_NC] / sqrtf(COHPSK_ND); tx_symb[r][c].imag = 0.0; } r++; } for (data_r = 0; data_r < NSYMROW; data_r++, r++) { for (c = 0; c < COHPSK_NC * diversity; c++) { i = c * NSYMROW + data_r; bits = (tx_bits[2 * i] & 0x1) << 1 | (tx_bits[2 * i + 1] & 0x1); tx_symb[r][c] = fcmult(1.0 / sqrtf(COHPSK_ND), qpsk_mod[bits]); } } assert(p_r == NPILOTSFRAME); assert(r == NSYMROWPILOT); /* if in diversity mode, copy symbols to upper carriers */ for (d = 1; d < 1 + COHPSK_ND - diversity; d++) { for (r = 0; r < NSYMROWPILOT; r++) { for (c = 0; c < COHPSK_NC; c++) { tx_symb[r][c + COHPSK_NC * d] = tx_symb[r][c]; } } } } /*---------------------------------------------------------------------------*\ FUNCTION....: qpsk_symbols_to_bits() AUTHOR......: David Rowe DATE CREATED: March 2015 Rate Rs demodulator. Extract pilot symbols and estimate amplitude and phase of each carrier. Correct phase of data symbols and convert to bits. Further improvement. In channels with slowly changing phase we could optionally use pilots from several past and future symbols. \*---------------------------------------------------------------------------*/ void qpsk_symbols_to_bits(struct COHPSK *coh, float rx_bits[], COMP ct_symb_buf[][COHPSK_NC * COHPSK_ND]) { int p, r, c, i, pc, d, n; float x[NPILOTSFRAME + 2], x1; COMP y[NPILOTSFRAME + 2], yfit; COMP rx_symb_linear[NSYMROW * COHPSK_NC * COHPSK_ND]; COMP m, b; COMP __attribute__((unused)) corr, rot, pi_on_4, phi_rect, div_symb; float mag, __attribute__((unused)) phi_, __attribute__((unused)) amp_; float sum_x, sum_xx, noise_var; float spi_4 = M_PI / 4.0f; COMP s; pi_on_4.real = cosf(spi_4); pi_on_4.imag = sinf(spi_4); for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) { /* Set up lin reg model and interpolate phase. Works better than average for channels with quickly changing phase, like HF. */ for (p = 0; p < NPILOTSFRAME + 2; p++) { x[p] = sampling_points[p]; pc = c % COHPSK_NC; y[p] = fcmult(coh->pilot2[p][pc], ct_symb_buf[sampling_points[p]][c]); } linreg(&m, &b, x, y, NPILOTSFRAME + 2); for (r = 0; r < NSYMROW; r++) { x1 = (float)(r + NPILOTSFRAME); yfit = cadd(fcmult(x1, m), b); coh->phi_[r][c] = atan2f(yfit.imag, yfit.real); } /* amplitude estimation */ mag = 0.0f; for (p = 0; p < NPILOTSFRAME + 2; p++) { mag += cabsolute(ct_symb_buf[sampling_points[p]][c]); } amp_ = mag / (NPILOTSFRAME + 2); for (r = 0; r < NSYMROW; r++) { coh->amp_[r][c] = amp_; } } /* now correct phase of data symbols */ for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) { for (r = 0; r < NSYMROW; r++) { phi_rect.real = cosf(coh->phi_[r][c]); phi_rect.imag = -sinf(coh->phi_[r][c]); coh->rx_symb[r][c] = cmult(ct_symb_buf[NPILOTSFRAME + r][c], phi_rect); i = c * NSYMROW + r; rx_symb_linear[i] = coh->rx_symb[r][c]; } } /* and finally optional diversity combination, note output is soft decn a "1" * is < 0 */ for (c = 0; c < COHPSK_NC; c++) { for (r = 0; r < NSYMROW; r++) { div_symb = coh->rx_symb[r][c]; for (d = 1; d < COHPSK_ND; d++) { div_symb = cadd(div_symb, coh->rx_symb[r][c + COHPSK_NC * d]); } rot = cmult(div_symb, pi_on_4); i = c * NSYMROW + r; rx_bits[2 * i + 1] = rot.real; rx_bits[2 * i] = rot.imag; /* demodulate bits from upper and lower carriers separately for test * purposes */ assert(COHPSK_ND == 2); i = c * NSYMROW + r; rot = cmult(coh->rx_symb[r][c], pi_on_4); coh->rx_bits_lower[2 * i + 1] = rot.real; coh->rx_bits_lower[2 * i] = rot.imag; rot = cmult(coh->rx_symb[r][c + COHPSK_NC], pi_on_4); coh->rx_bits_upper[2 * i + 1] = rot.real; coh->rx_bits_upper[2 * i] = rot.imag; } } /* estimate RMS signal and noise */ mag = 0.0f; for (i = 0; i < NSYMROW * COHPSK_NC * COHPSK_ND; i++) mag += cabsolute(rx_symb_linear[i]); coh->sig_rms = mag / (NSYMROW * COHPSK_NC * COHPSK_ND); sum_x = 0.0f; sum_xx = 0.0f; n = 0; for (i = 0; i < NSYMROW * COHPSK_NC * COHPSK_ND; i++) { s = rx_symb_linear[i]; if (fabsf(s.real) > coh->sig_rms) { sum_x += s.imag; sum_xx += s.imag * s.imag; n++; } } noise_var = 0.0f; if (n > 1) { noise_var = (n * sum_xx - sum_x * sum_x) / (n * (n - 1)); } coh->noise_rms = sqrtf(noise_var); } /*---------------------------------------------------------------------------*\ FUNCTION....: tx_filter_and_upconvert_coh() AUTHOR......: David Rowe DATE CREATED: May 2015 Given NC symbols construct M samples (1 symbol) of NC filtered and upconverted symbols. TODO: work out a way to merge with fdmdv version, e.g. run time define M/NSYM, and run unittests on fdmdv and cohpsk modem afterwards. \*---------------------------------------------------------------------------*/ void tx_filter_and_upconvert_coh(COMP tx_fdm[], int Nc, const COMP tx_symbols[], COMP tx_filter_memory[][COHPSK_NSYM], COMP phase_tx[], COMP freq[], COMP *fbb_phase, COMP fbb_rect) { int c; int i, j, k; float acc; COMP gain; COMP tx_baseband; COMP two = {2.0, 0.0}; float mag; gain.real = sqrtf(2.0) / 2.0; gain.imag = 0.0; for (i = 0; i < COHPSK_M; i++) { tx_fdm[i].real = 0.0; tx_fdm[i].imag = 0.0; } for (c = 0; c < Nc; c++) tx_filter_memory[c][COHPSK_NSYM - 1] = cmult(tx_symbols[c], gain); /* tx filter each symbol, generate M filtered output samples for each symbol, which we then freq shift and sum with other carriers. Efficient polyphase filter techniques used as tx_filter_memory is sparse */ for (c = 0; c < Nc; c++) { for (i = 0; i < COHPSK_M; i++) { /* filter real sample of symbol for carrier c */ acc = 0.0; for (j = 0, k = COHPSK_M - i - 1; j < COHPSK_NSYM; j++, k += COHPSK_M) acc += COHPSK_M * tx_filter_memory[c][j].real * gt_alpha5_root_coh[k]; tx_baseband.real = acc; /* filter imag sample of symbol for carrier c */ acc = 0.0; for (j = 0, k = COHPSK_M - i - 1; j < COHPSK_NSYM; j++, k += COHPSK_M) acc += COHPSK_M * tx_filter_memory[c][j].imag * gt_alpha5_root_coh[k]; tx_baseband.imag = acc; // printf("%d %d %f %f\n", c, i, tx_baseband.real, tx_baseband.imag); /* freq shift and sum */ phase_tx[c] = cmult(phase_tx[c], freq[c]); tx_fdm[i] = cadd(tx_fdm[i], cmult(tx_baseband, phase_tx[c])); // printf("%d %d %f %f\n", c, i, phase_tx[c].real, phase_tx[c].imag); } // exit(0); } /* shift whole thing up to carrier freq */ for (i = 0; i < COHPSK_M; i++) { *fbb_phase = cmult(*fbb_phase, fbb_rect); tx_fdm[i] = cmult(tx_fdm[i], *fbb_phase); } /* Scale such that total Carrier power C of real(tx_fdm) = Nc. This excludes the power of the pilot tone. We return the complex (single sided) signal to make frequency shifting for the purpose of testing easier */ for (i = 0; i < COHPSK_M; i++) tx_fdm[i] = cmult(two, tx_fdm[i]); /* normalise digital oscillators as the magnitude can drift over time */ for (c = 0; c < Nc; c++) { mag = cabsolute(phase_tx[c]); phase_tx[c].real /= mag; phase_tx[c].imag /= mag; } mag = cabsolute(*fbb_phase); fbb_phase->real /= mag; fbb_phase->imag /= mag; /* shift memory, inserting zeros at end */ for (i = 0; i < COHPSK_NSYM - 1; i++) for (c = 0; c < Nc; c++) tx_filter_memory[c][i] = tx_filter_memory[c][i + 1]; for (c = 0; c < Nc; c++) { tx_filter_memory[c][COHPSK_NSYM - 1].real = 0.0; tx_filter_memory[c][COHPSK_NSYM - 1].imag = 0.0; } } void corr_with_pilots(float *corr_out, float *mag_out, struct COHPSK *coh, int t, float f_fine) { COMP acorr, f_fine_rect[NPILOTSFRAME + 2], f_corr; float mag, corr, result; float tau = 2.0f * M_PI; int c, p, pc; for (p = 0; p < NPILOTSFRAME + 2; p++) { result = f_fine * tau * (sampling_points[p] + 1.0) / COHPSK_RS; f_fine_rect[p].real = cosf(result); f_fine_rect[p].imag = sinf(result); } corr = 0.0; mag = 1E-12; for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) { acorr.real = 0.0f; acorr.imag = 0.0f; pc = c % COHPSK_NC; for (p = 0; p < NPILOTSFRAME + 2; p++) { f_corr = cmult(f_fine_rect[p], coh->ct_symb_buf[t + sampling_points[p]][c]); acorr = cadd(acorr, fcmult(coh->pilot2[p][pc], f_corr)); mag += cabsolute(f_corr); } corr += cabsolute(acorr); } *corr_out = corr; *mag_out = mag; } /*---------------------------------------------------------------------------*\ FUNCTION....: frame_sync_fine_freq_est() AUTHOR......: David Rowe DATE CREATED: April 2015 Returns an estimate of frame sync (coarse timing) offset and fine frequency offset, advances to next sync state if we have a reliable match for frame sync. \*---------------------------------------------------------------------------*/ void frame_sync_fine_freq_est(struct COHPSK *coh, COMP ch_symb[][COHPSK_NC * COHPSK_ND], int sync, int *next_sync) { int t; float f_fine, mag, max_corr, max_mag, corr, result; float tau = 2.0f * M_PI; update_ct_symb_buf(coh->ct_symb_buf, ch_symb); /* sample pilots at start of this frame and start of next frame */ if (sync == 0) { /* sample correlation over 2D grid of time and fine freq points */ max_corr = 0.0; max_mag = 1E-12; for (f_fine = -20; f_fine <= 20; f_fine += 0.25) { for (t = 0; t < NSYMROWPILOT; t++) { corr_with_pilots(&corr, &mag, coh, t, f_fine); // printf(" f: %f t: %d corr: %f mag: %f\n", f_fine, t, corr, mag); if (corr >= max_corr) { max_corr = corr; max_mag = mag; coh->ct = t; coh->f_fine_est = f_fine; } } } result = coh->f_fine_est * tau / COHPSK_RS; coh->ff_rect.real = cosf(result); coh->ff_rect.imag = -sinf(result); if (coh->verbose) fprintf(stderr, " [%d] fine freq f: %6.2f max_ratio: %f ct: %d\n", coh->frame, (double)coh->f_fine_est, (double)max_corr / (double)max_mag, coh->ct); if (max_corr / max_mag > 0.9) { if (coh->verbose) fprintf(stderr, " [%d] encouraging sync word!\n", coh->frame); coh->sync_timer = 0; *next_sync = 1; } else { *next_sync = 0; } coh->ratio = max_corr / max_mag; } } void update_ct_symb_buf(COMP ct_symb_buf[][COHPSK_NC * COHPSK_ND], COMP ch_symb[][COHPSK_NC * COHPSK_ND]) { int r, c, i; /* update memory in symbol buffer */ for (r = 0; r < NCT_SYMB_BUF - NSYMROWPILOT; r++) { for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) ct_symb_buf[r][c] = ct_symb_buf[r + NSYMROWPILOT][c]; } for (r = NCT_SYMB_BUF - NSYMROWPILOT, i = 0; r < NCT_SYMB_BUF; r++, i++) { for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) ct_symb_buf[r][c] = ch_symb[i][c]; } } int sync_state_machine(struct COHPSK *coh, int sync, int next_sync) { float corr, mag; if (sync == 1) { /* check that sync is still good, fall out of sync on consecutive bad frames */ corr_with_pilots(&corr, &mag, coh, coh->ct, coh->f_fine_est); coh->ratio = fabsf(corr) / mag; // printf("%f\n", cabsolute(corr)/mag); if (fabsf(corr) / mag < 0.8) coh->sync_timer++; else coh->sync_timer = 0; if (coh->sync_timer == 10) { if (coh->verbose) fprintf(stderr, " [%d] lost sync ....\n", coh->frame); next_sync = 0; } } sync = next_sync; return sync; } /*---------------------------------------------------------------------------*\ FUNCTION....: cohpsk_mod() AUTHOR......: David Rowe DATE CREATED: 5/4/2015 COHPSK modulator, take a frame of COHPSK_BITS_PER_FRAME or 2*COHPSK_BITS_PER_FRAME bits and generates a frame of COHPSK_NOM_SAMPLES_PER_FRAME modulated symbols. if nbits == COHPSK_BITS_PER_FRAME, diveristy mode is used, if nbits == 2*COHPSK_BITS_PER_FRAME diversity mode is not used. The output signal is complex to support single sided frequency shifting, for example when testing frequency offsets in channel simulation. \*---------------------------------------------------------------------------*/ void cohpsk_mod(struct COHPSK *coh, COMP tx_fdm[], int tx_bits[], int nbits) { struct FDMDV *fdmdv = coh->fdmdv; COMP tx_symb[NSYMROWPILOT][COHPSK_NC * COHPSK_ND]; COMP tx_onesym[COHPSK_NC * COHPSK_ND]; int r, c; bits_to_qpsk_symbols(tx_symb, tx_bits, nbits); for (r = 0; r < NSYMROWPILOT; r++) { for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) tx_onesym[c] = fcmult(coh->carrier_ampl[c], tx_symb[r][c]); tx_filter_and_upconvert_coh(&tx_fdm[r * COHPSK_M], COHPSK_NC * COHPSK_ND, tx_onesym, fdmdv->tx_filter_memory, fdmdv->phase_tx, fdmdv->freq, &fdmdv->fbb_phase_tx, fdmdv->fbb_rect); } } /*---------------------------------------------------------------------------*\ FUNCTION....: cohpsk_clip() AUTHOR......: David Rowe DATE CREATED: May 2015 Hard clips a complex signal magnitude (Hilbert Clipping) to improve PAPR. \*---------------------------------------------------------------------------*/ void cohpsk_clip(COMP tx_fdm[], float clip_thresh, int n) { COMP sam; float mag; int i; for (i = 0; i < n; i++) { sam = tx_fdm[i]; mag = cabsolute(sam); if (mag > clip_thresh) { sam = fcmult(clip_thresh / mag, sam); } tx_fdm[i] = sam; } } /*---------------------------------------------------------------------------*\ FUNCTION....: fdm_downconvert_coh AUTHOR......: David Rowe DATE CREATED: May 2015 Frequency shift each modem carrier down to NC baseband signals. TODO: try to combine with fdmdv version, carefully re-test fdmdv modem. \*---------------------------------------------------------------------------*/ void fdm_downconvert_coh(COMP rx_baseband[][COHPSK_M + COHPSK_M / P], int Nc, COMP rx_fdm[], COMP phase_rx[], COMP freq[], int nin) { int i, c; float mag; /* maximum number of input samples to demod */ assert(nin <= (COHPSK_M + COHPSK_M / P)); /* downconvert */ for (c = 0; c < Nc; c++) for (i = 0; i < nin; i++) { phase_rx[c] = cmult(phase_rx[c], freq[c]); rx_baseband[c][i] = cmult(rx_fdm[i], cconj(phase_rx[c])); } /* normalise digital oscilators as the magnitude can drift over time */ for (c = 0; c < Nc; c++) { mag = cabsolute(phase_rx[c]); phase_rx[c].real /= mag; phase_rx[c].imag /= mag; } } /* Determine if we can use vector ops below. */ #if __GNUC__ > 4 || \ (__GNUC__ == 4 && \ (__GNUC_MINOR__ > 6 || (__GNUC_MINOR__ == 6 && __GNUC_PATCHLEVEL__ > 0))) #define USE_VECTOR_OPS 1 #elif __clang_major__ > 3 || \ (__clang_minor__ == 3 && \ (__clang_minor__ > 7 || \ (__clang_minor__ == 7 && __clang_patchlevel__ > 0))) #define USE_VECTOR_OPS 1 #endif #if USE_VECTOR_OPS #ifdef __ARM_NEON #include "arm_neon.h" typedef float32x4_t float4; #else /* Vector of 4 floating point numbers for use by the below function */ typedef float float4 __attribute__((vector_size(16))); #endif // __ARM_NEON #endif /* USE_VECTOR_OPS */ /*---------------------------------------------------------------------------*\ FUNCTION....: rx_filter_coh() AUTHOR......: David Rowe DATE CREATED: May 2015 cohpsk version of fdmdv.c rx_filter function. TODO: see if we can merge the two! Will require re-testing of fdmdv modem. \*---------------------------------------------------------------------------*/ inline extern void rx_filter_coh( COMP rx_filt[COHPSK_NC * COHPSK_ND][P + 1], int Nc, COMP rx_baseband[COHPSK_NC * COHPSK_ND][COHPSK_M + COHPSK_M / P], COMP rx_filter_memory[COHPSK_NC * COHPSK_ND][COHPSK_NFILTER], int nin) { int c, i, j, k, l; int n = COHPSK_M / P; /* rx filter each symbol, generate P filtered output samples for each symbol. Note we keep filter memory at rate M, it's just the filter output at rate P */ for (i = 0, j = 0; i < nin; i += n, j++) { /* latest input sample */ for (c = 0; c < Nc; c++) { rx_filt[c][j].real = 0.0; rx_filt[c][j].imag = 0.0; /* This call is equivalent to the code below: for(k=COHPSK_NFILTER-n,l=i; kreal /= mag; foff_phase_rect->imag /= mag; } void rate_Fs_rx_processing(struct COHPSK *coh, COMP ch_symb[][COHPSK_NC * COHPSK_ND], COMP ch_fdm_frame[], float *f_est, int nsymb, int nin, int freq_track) { struct FDMDV *fdmdv = coh->fdmdv; int r, c, i, ch_fdm_frame_index; COMP rx_fdm_frame_bb[COHPSK_M + COHPSK_M / P]; COMP rx_baseband[COHPSK_NC * COHPSK_ND][COHPSK_M + COHPSK_M / P]; COMP rx_filt[COHPSK_NC * COHPSK_ND][P + 1]; float env[NT * P], rx_timing; COMP rx_onesym[COHPSK_NC * COHPSK_ND]; float beta, g; COMP adiff, amod_strip, mod_strip; ch_fdm_frame_index = 0; rx_timing = 0; for (r = 0; r < nsymb; r++) { fdmdv_freq_shift_coh(rx_fdm_frame_bb, &ch_fdm_frame[ch_fdm_frame_index], -(*f_est), COHPSK_FS, &fdmdv->fbb_phase_rx, nin); ch_fdm_frame_index += nin; fdm_downconvert_coh(rx_baseband, COHPSK_NC * COHPSK_ND, rx_fdm_frame_bb, fdmdv->phase_rx, fdmdv->freq, nin); rx_filter_coh(rx_filt, COHPSK_NC * COHPSK_ND, rx_baseband, coh->rx_filter_memory, nin); rx_timing = rx_est_timing(rx_onesym, fdmdv->Nc, rx_filt, fdmdv->rx_filter_mem_timing, env, nin, COHPSK_M); for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) { ch_symb[r][c] = rx_onesym[c]; } /* freq tracking, see test_ftrack.m for unit test. Placed in this function as it needs to work on a symbol by symbol abasis rather than frame by frame. This means the control loop operates at a sample rate of Rs = 50Hz for say 1 Hz/s drift. */ if (freq_track) { beta = 0.005; g = 0.2; /* combine difference on phase from last symbol over Nc carriers */ mod_strip.real = 0.0; mod_strip.imag = 0.0; for (c = 0; c < fdmdv->Nc + 1; c++) { // printf("rx_onesym[%d] %f %f prev_rx_symbols[%d] %f %f\n", c, // rx_onesym[c].real, rx_onesym[c].imag, // fdmdv->prev_rx_symbols[c].real, // fdmdv->prev_rx_symbols[c].imag); adiff = cmult(rx_onesym[c], cconj(fdmdv->prev_rx_symbols[c])); fdmdv->prev_rx_symbols[c] = rx_onesym[c]; /* 4th power strips QPSK modulation, by multiplying phase by 4 Using the abs value of the real coord was found to help non-linear issues when noise power was large. */ amod_strip = cmult(adiff, adiff); amod_strip = cmult(amod_strip, amod_strip); amod_strip.real = fabsf(amod_strip.real); mod_strip = cadd(mod_strip, amod_strip); } // printf("modstrip: %f %f\n", mod_strip.real, mod_strip.imag); /* loop filter made up of 1st order IIR plus integrator. Integerator was found to be reqd */ fdmdv->foff_filt = (1.0f - beta) * fdmdv->foff_filt + beta * atan2f(mod_strip.imag, mod_strip.real); // printf("foff_filt: %f angle: %f\n", fdmdv->foff_filt, // atan2f(mod_strip.imag, mod_strip.real)); *f_est += g * fdmdv->foff_filt; } /* Optional logging used for testing against Octave version */ if (coh->rx_baseband_log) { assert(nin <= (COHPSK_M + COHPSK_M / P)); for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) { for (i = 0; i < nin; i++) { coh->rx_baseband_log[c * coh->rx_baseband_log_col_sz + coh->rx_baseband_log_col_index + i] = rx_baseband[c][i]; } } coh->rx_baseband_log_col_index += nin; assert(coh->rx_baseband_log_col_index <= coh->rx_baseband_log_col_sz); } if (coh->rx_filt_log) { for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) { for (i = 0; i < nin / (COHPSK_M / P); i++) { coh->rx_filt_log[c * coh->rx_filt_log_col_sz + coh->rx_filt_log_col_index + i] = rx_filt[c][i]; } } coh->rx_filt_log_col_index += nin / (COHPSK_M / P); } if (coh->ch_symb_log) { for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) { coh->ch_symb_log[coh->ch_symb_log_r * COHPSK_NC * COHPSK_ND + c] = ch_symb[r][c]; } coh->ch_symb_log_r++; } if (coh->rx_timing_log) { coh->rx_timing_log[coh->rx_timing_log_index] = rx_timing; coh->rx_timing_log_index++; // printf("rx_timing_log_index: %d\n", coh->rx_timing_log_index); } /* we only allow a timing shift on one symbol per frame */ if (nin != COHPSK_M) nin = COHPSK_M; } coh->rx_timing = rx_timing; } /*---------------------------------------------------------------------------*\ FUNCTION....: cohpsk_demod() AUTHOR......: David Rowe DATE CREATED: 5/4/2015 COHPSK demodulator, takes an array of (nominally) nin_frame = COHPSK_NOM_SAMPLES_PER_FRAME modulated samples, returns an array of COHPSK_BITS_PER_FRAME bits. The input signal is complex to support single sided frequency shifting before the demod input (e.g. click to tune feature). \*---------------------------------------------------------------------------*/ void cohpsk_demod(struct COHPSK *coh, float rx_bits[], int *sync_good, COMP rx_fdm[], int *nin_frame) { COMP ch_symb[NSW * NSYMROWPILOT][COHPSK_NC * COHPSK_ND]; int i, j, sync, anext_sync, next_sync, nin, r, c; float max_ratio, f_est; assert(*nin_frame <= COHPSK_MAX_SAMPLES_PER_FRAME); next_sync = sync = coh->sync; for (i = 0; i < NSW * NSYMROWPILOT * COHPSK_M - *nin_frame; i++) coh->ch_fdm_frame_buf[i] = coh->ch_fdm_frame_buf[i + *nin_frame]; // printf("nin_frame: %d i: %d i+nin_frame: %d\n", *nin_frame, i, // i+*nin_frame); for (j = 0; i < NSW * NSYMROWPILOT * COHPSK_M; i++, j++) coh->ch_fdm_frame_buf[i] = rx_fdm[j]; // printf("i: %d j: %d rx_fdm[0]: %f %f\n", i,j, rx_fdm[0].real, // rx_fdm[0].imag); /* if out of sync do Initial Freq offset estimation using NSW frames to flush * out filter memories */ if (sync == 0) { /* we can test +/- 20Hz, so we break this up into 3 tests to cover +/- 60Hz */ max_ratio = 0.0; f_est = 0.0; for (coh->f_est = FDMDV_FCENTRE - 40.0; coh->f_est <= FDMDV_FCENTRE + 40.0; coh->f_est += 40.0) { if (coh->verbose) fprintf(stderr, " [%d] acohpsk.f_est: %f +/- 20\n", coh->frame, (double)coh->f_est); /* we are out of sync so reset f_est and process two frames to clean out * memories */ rate_Fs_rx_processing(coh, ch_symb, coh->ch_fdm_frame_buf, &coh->f_est, NSW * NSYMROWPILOT, COHPSK_M, 0); for (i = 0; i < NSW - 1; i++) { update_ct_symb_buf(coh->ct_symb_buf, &ch_symb[i * NSYMROWPILOT]); } frame_sync_fine_freq_est(coh, &ch_symb[(NSW - 1) * NSYMROWPILOT], sync, &anext_sync); if (anext_sync == 1) { // printf(" [%d] acohpsk.ratio: %f\n", f, coh->ratio); if (coh->ratio > max_ratio) { max_ratio = coh->ratio; f_est = coh->f_est - coh->f_fine_est; next_sync = anext_sync; } } } if (next_sync == 1) { /* we've found a sync candidate! re-process last NSW frames with adjusted f_est then check again */ coh->f_est = f_est; if (coh->verbose) fprintf(stderr, " [%d] trying sync and f_est: %f\n", coh->frame, (double)coh->f_est); rate_Fs_rx_processing(coh, ch_symb, coh->ch_fdm_frame_buf, &coh->f_est, NSW * NSYMROWPILOT, COHPSK_M, 0); for (i = 0; i < NSW - 1; i++) { update_ct_symb_buf(coh->ct_symb_buf, &ch_symb[i * NSYMROWPILOT]); } /* for(i=0; ict_symb_buf[i][0].real, coh->ct_symb_buf[i][0].imag); } */ frame_sync_fine_freq_est(coh, &ch_symb[(NSW - 1) * NSYMROWPILOT], sync, &next_sync); if (fabsf(coh->f_fine_est) > 2.0) { if (coh->verbose) fprintf(stderr, " [%d] Hmm %f is a bit big :(\n", coh->frame, (double)coh->f_fine_est); next_sync = 0; } } if (next_sync == 1) { /* OK we are in sync! demodulate first frame (demod completed below) */ if (coh->verbose) fprintf(stderr, " [%d] in sync! f_est: %f ratio: %f \n", coh->frame, (double)coh->f_est, (double)coh->ratio); for (r = 0; r < NSYMROWPILOT + 2; r++) for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) coh->ct_symb_ff_buf[r][c] = coh->ct_symb_buf[coh->ct + r][c]; } } /* If in sync just do sample rate processing on latest frame */ if (sync == 1) { rate_Fs_rx_processing(coh, ch_symb, rx_fdm, &coh->f_est, NSYMROWPILOT, coh->nin, 1); frame_sync_fine_freq_est(coh, ch_symb, sync, &next_sync); for (r = 0; r < 2; r++) for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) coh->ct_symb_ff_buf[r][c] = coh->ct_symb_ff_buf[r + NSYMROWPILOT][c]; for (; r < NSYMROWPILOT + 2; r++) for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) coh->ct_symb_ff_buf[r][c] = coh->ct_symb_buf[coh->ct + r][c]; } /* if we are in sync complete demodulation with symbol rate processing */ *sync_good = 0; if ((next_sync == 1) || (sync == 1)) { qpsk_symbols_to_bits(coh, rx_bits, coh->ct_symb_ff_buf); *sync_good = 1; } sync = sync_state_machine(coh, sync, next_sync); coh->sync = sync; /* work out how many samples we need for the next call to account for differences in tx and rx sample clocks */ nin = COHPSK_M; if (sync == 1) { if (coh->rx_timing > COHPSK_M / P) nin = COHPSK_M + COHPSK_M / P; if (coh->rx_timing < -COHPSK_M / P) nin = COHPSK_M - COHPSK_M / P; } coh->nin = nin; *nin_frame = (NSYMROWPILOT - 1) * COHPSK_M + nin; // if (coh->verbose) // fprintf(stderr, "%f %d %d\n", coh->rx_timing, nin, *nin_frame); } /*---------------------------------------------------------------------------*\ FUNCTION....: cohpsk_fs_offset() AUTHOR......: David Rowe DATE CREATED: May 2015 Simulates small Fs offset between mod and demod. \*---------------------------------------------------------------------------*/ int cohpsk_fs_offset(COMP out[], COMP in[], int n, float sample_rate_ppm) { double f; double tin = 0.0; double step = 1.0 + sample_rate_ppm / 1E6; int t1, t2; int tout = 0; while (tin < (double)n) { t1 = (int)floor(tin); t2 = (int)ceil(tin); f = tin - (double)t1; out[tout].real = ((double)1.0 - f) * (double)in[t1].real + f * (double)in[t2].real; out[tout].imag = ((double)1.0 - f) * (double)in[t1].imag + f * (double)in[t2].imag; tin += step; tout++; // printf("tin: %f tout: %d f: %f\n", tin, tout, f); } return tout; } /*---------------------------------------------------------------------------*\ FUNCTION....: cohpsk_get_demod_stats() AUTHOR......: David Rowe DATE CREATED: 14 June 2015 Fills stats structure with a bunch of demod information. \*---------------------------------------------------------------------------*/ void cohpsk_get_demod_stats(struct COHPSK *coh, struct MODEM_STATS *stats) { float new_snr_est; #ifndef __EMBEDDED__ float spi_4 = M_PI / 4.0f; COMP pi_4; pi_4.real = cosf(spi_4); pi_4.imag = sinf(spi_4); #endif stats->Nc = COHPSK_NC * COHPSK_ND; assert(stats->Nc <= MODEM_STATS_NC_MAX); new_snr_est = 20.0f * log10f((coh->sig_rms + 1E-6f) / (coh->noise_rms + 1E-6f)) - 10.0f * log10f(3000.0f / 700.0f); stats->snr_est = 0.9f * stats->snr_est + 0.1f * new_snr_est; // fprintf(stderr, "sig_rms: %f noise_rms: %f snr_est: %f\n", coh->sig_rms, // coh->noise_rms, stats->snr_est); stats->sync = coh->sync; stats->foff = coh->f_est - FDMDV_FCENTRE; stats->rx_timing = coh->rx_timing; stats->clock_offset = 0.0f; /* TODO - implement clock offset estimation */ #ifndef __EMBEDDED__ assert(NSYMROW <= MODEM_STATS_NR_MAX); stats->nr = NSYMROW; for (int c = 0; c < COHPSK_NC * COHPSK_ND; c++) { for (int r = 0; r < NSYMROW; r++) { stats->rx_symbols[r][c] = cmult(coh->rx_symb[r][c], pi_4); } } #endif } void cohpsk_set_verbose(struct COHPSK *coh, int verbose) { assert(coh != NULL); coh->verbose = verbose; } void cohpsk_set_frame(struct COHPSK *coh, int frame) { assert(coh != NULL); coh->frame = frame; } /*---------------------------------------------------------------------------*\ FUNCTION....: cohpsk_get_test_bits() AUTHOR......: David Rowe DATE CREATED: June 2015 Returns a frame of known test bits. \*---------------------------------------------------------------------------*/ void cohpsk_get_test_bits(struct COHPSK *coh, int rx_bits[]) { memcpy(rx_bits, coh->ptest_bits_coh_tx, sizeof(int) * COHPSK_BITS_PER_FRAME); coh->ptest_bits_coh_tx += COHPSK_BITS_PER_FRAME; if (coh->ptest_bits_coh_tx >= coh->ptest_bits_coh_end) { coh->ptest_bits_coh_tx = (int *)test_bits_coh; } } /*---------------------------------------------------------------------------*\ FUNCTION....: cohpsk_put_test_bits() AUTHOR......: David Rowe DATE CREATED: June 2015 Accepts bits from demod and attempts to sync with the known test_bits sequence. When synced measures bit errors. Has states to track two separate received test sequences based on channel 0 or 1. \*---------------------------------------------------------------------------*/ void cohpsk_put_test_bits(struct COHPSK *coh, int *state, short error_pattern[], int *bit_errors, char rx_bits_char[], int channel) { int i, next_state, anerror; int rx_bits[COHPSK_BITS_PER_FRAME]; assert((channel == 0) || (channel == 1)); int *ptest_bits_coh_rx = coh->ptest_bits_coh_rx[channel]; for (i = 0; i < COHPSK_BITS_PER_FRAME; i++) { rx_bits[i] = rx_bits_char[i]; } *bit_errors = 0; for (i = 0; i < COHPSK_BITS_PER_FRAME; i++) { anerror = (rx_bits[i] & 0x1) ^ ptest_bits_coh_rx[i]; if ((anerror < 0) || (anerror > 1)) { fprintf(stderr, "i: %d rx_bits: %d ptest_bits_coh_rx: %d\n", i, rx_bits[i], ptest_bits_coh_rx[i]); } *bit_errors += anerror; error_pattern[i] = anerror; } /* state logic */ next_state = *state; if (*state == 0) { if (*bit_errors < 4) { next_state = 1; ptest_bits_coh_rx += COHPSK_BITS_PER_FRAME; if (ptest_bits_coh_rx >= coh->ptest_bits_coh_end) { ptest_bits_coh_rx = (int *)test_bits_coh; } } } /* if 5 frames with large BER reset test frame sync */ if (*state > 0) { if (*bit_errors > 8) { if (*state == 6) next_state = 0; else next_state = *state + 1; } else next_state = 1; } if (*state > 0) { ptest_bits_coh_rx += COHPSK_BITS_PER_FRAME; if (ptest_bits_coh_rx >= coh->ptest_bits_coh_end) { ptest_bits_coh_rx = (int *)test_bits_coh; } } // fprintf(stderr, "state: %d next_state: %d bit_errors: %d\n", *state, // next_state, *bit_errors); *state = next_state; coh->ptest_bits_coh_rx[channel] = ptest_bits_coh_rx; } int cohpsk_error_pattern_size(void) { return COHPSK_BITS_PER_FRAME; } float *cohpsk_get_rx_bits_lower(struct COHPSK *coh) { return coh->rx_bits_lower; } float *cohpsk_get_rx_bits_upper(struct COHPSK *coh) { return coh->rx_bits_upper; } void cohpsk_set_carrier_ampl(struct COHPSK *coh, int c, float ampl) { assert(c < COHPSK_NC * COHPSK_ND); coh->carrier_ampl[c] = ampl; fprintf(stderr, "cohpsk_set_carrier_ampl: %d %f\n", c, (double)ampl); } codec2-1.2.0/src/cohpsk_defs.h000066400000000000000000000007371445607075400161240ustar00rootroot00000000000000/* Generated by write_pilot_file() Octave function */ #define NSYMROW 4 /* number of data symbols on each row (i.e. each carrier) */ #define NS 4 /* number of data symbols between pilots */ #define NPILOTSFRAME \ 2 /* number of pilot symbols on each row */ #define PILOTS_NC \ 7 /* number of carriers */ #define NSYMROWPILOT \ 6 /* length of row after pilots inserted */ codec2-1.2.0/src/cohpsk_demod.c000066400000000000000000000207141445607075400162630ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: cohpsk_demod.c AUTHOR......: David Rowe DATE CREATED: April 6 2015 Given an input file of raw file (8kHz, 16 bit shorts) of COHPSK modem samples, outputs a file of bits (note one bit per int, not compressed). \*---------------------------------------------------------------------------*/ /* Copyright (C) 2015 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include #include "codec2_cohpsk.h" #include "codec2_fdmdv.h" #include "cohpsk_defs.h" #include "cohpsk_internal.h" #include "debug_alloc.h" #include "octave.h" #define LOG_FRAMES 100 #define SYNC_FRAMES \ 12 /* sync state uses up extra log storage as we reprocess several times */ int opt_exists(char *argv[], int argc, char opt[]) { int i; for (i = 0; i < argc; i++) { if (strcmp(argv[i], opt) == 0) { return i; } } return 0; } int main(int argc, char *argv[]) { FILE *fin, *fout, *foct; struct COHPSK *cohpsk; float rx_bits[COHPSK_BITS_PER_FRAME]; char rx_bits_char[COHPSK_BITS_PER_FRAME]; double rx_bits_double[COHPSK_BITS_PER_FRAME]; COMP rx_fdm[COHPSK_MAX_SAMPLES_PER_FRAME]; short rx_fdm_scaled[COHPSK_MAX_SAMPLES_PER_FRAME]; int frames, sync, nin_frame; float *rx_amp_log = NULL; float *rx_phi_log = NULL; COMP *rx_symb_log = NULL; float f_est_log[LOG_FRAMES], ratio_log[LOG_FRAMES]; int i, r, c, log_data_r, oct, logframes, diversity, sd; foct = NULL; oct = 0; diversity = 1; sd = 0; int verbose = 0; int o = 0; int opt_idx = 0; while (o != -1) { static struct option long_opts[] = { {"help", no_argument, 0, 'h'}, {"octave", required_argument, 0, 'o'}, {"nd", no_argument, 0, 'n'}, {"sd", no_argument, 0, 's'}, {"verbose", no_argument, 0, 'v'}, {0, 0, 0, 0}}; o = getopt_long(argc, argv, "ho:nsv", long_opts, &opt_idx); switch (o) { case 'o': if ((foct = fopen(optarg, "wt")) == NULL) { fprintf(stderr, "Error opening output Octave file: %s: %s.\n", optarg, strerror(errno)); exit(1); } fprintf(stderr, "opened: %s\n", optarg); oct = 1; break; case 'n': diversity = 2; break; case 's': sd = 1; break; case 'v': verbose = 1; break; case 'h': case '?': goto helpmsg; break; } } int dx = optind; if ((argc - dx) < 2) { fprintf(stderr, "Too few arguments\n"); helpmsg: printf("usage: %s [options] InputModemRawFile OutputFile \n", argv[0]); fprintf(stderr, "\n"); fprintf( stderr, " Default output file format is one byte per bit\n"); fprintf(stderr, " -o OctaveLogFile Octave log file for testing\n"); fprintf( stderr, " --nd non-diversity mode, output frames of %d bits\n", COHPSK_ND * COHPSK_BITS_PER_FRAME); fprintf( stderr, " --sd soft decision output, one double per symbol\n"); fprintf(stderr, " -v verbose mode\n"); fprintf(stderr, "\n"); exit(1); } if (strcmp(argv[dx], "-") == 0) fin = stdin; else if ((fin = fopen(argv[dx], "rb")) == NULL) { fprintf(stderr, "Error opening input modem sample file: %s: %s.\n", argv[1], strerror(errno)); exit(1); } if (strcmp(argv[dx + 1], "-") == 0) fout = stdout; else if ((fout = fopen(argv[dx + 1], "wb")) == NULL) { fprintf(stderr, "Error opening output file: %s: %s.\n", argv[2], strerror(errno)); exit(1); } cohpsk = cohpsk_create(); cohpsk_set_verbose(cohpsk, verbose); if (oct) { logframes = LOG_FRAMES; rx_amp_log = (float *)MALLOC(sizeof(float) * logframes * NSYMROW * COHPSK_NC * COHPSK_ND); assert(rx_amp_log != NULL); rx_phi_log = (float *)MALLOC(sizeof(float) * logframes * NSYMROW * COHPSK_NC * COHPSK_ND); assert(rx_phi_log != NULL); rx_symb_log = (COMP *)MALLOC(sizeof(COMP) * logframes * NSYMROW * COHPSK_NC * COHPSK_ND); assert(rx_symb_log != NULL); cohpsk->rx_timing_log = (float *)MALLOC(sizeof(float) * SYNC_FRAMES * logframes * NSYMROWPILOT); assert(cohpsk->rx_timing_log != NULL); } log_data_r = 0; frames = 0; nin_frame = COHPSK_NOM_SAMPLES_PER_FRAME; while (fread(rx_fdm_scaled, sizeof(short), nin_frame, fin) == nin_frame) { frames++; cohpsk_set_frame(cohpsk, frames); /* scale and demod */ for (i = 0; i < nin_frame; i++) { rx_fdm[i].real = rx_fdm_scaled[i] / COHPSK_SCALE; rx_fdm[i].imag = 0.0; } cohpsk_demod(cohpsk, rx_bits, &sync, rx_fdm, &nin_frame); if (sync) { if (diversity == 1) { if (sd == 0) { for (i = 0; i < COHPSK_BITS_PER_FRAME; i++) rx_bits_char[i] = rx_bits[i] < 0.0; fwrite(rx_bits_char, sizeof(char), COHPSK_BITS_PER_FRAME, fout); } else { for (i = 0; i < COHPSK_BITS_PER_FRAME; i++) rx_bits_double[i] = rx_bits[i]; fwrite(rx_bits_double, sizeof(double), COHPSK_BITS_PER_FRAME, fout); } } else { if (sd == 0) { for (i = 0; i < COHPSK_BITS_PER_FRAME; i++) rx_bits_char[i] = cohpsk->rx_bits_lower[i] < 0.0; fwrite(rx_bits_char, sizeof(char), COHPSK_BITS_PER_FRAME, fout); for (i = 0; i < COHPSK_BITS_PER_FRAME; i++) rx_bits_char[i] = cohpsk->rx_bits_upper[i] < 0.0; fwrite(rx_bits_char, sizeof(char), COHPSK_BITS_PER_FRAME, fout); } else { for (i = 0; i < COHPSK_BITS_PER_FRAME; i++) rx_bits_double[i] = cohpsk->rx_bits_lower[i]; fwrite(rx_bits_double, sizeof(double), COHPSK_BITS_PER_FRAME, fout); for (i = 0; i < COHPSK_BITS_PER_FRAME; i++) rx_bits_double[i] = cohpsk->rx_bits_upper[i]; fwrite(rx_bits_double, sizeof(double), COHPSK_BITS_PER_FRAME, fout); } } if (oct) { for (r = 0; r < NSYMROW; r++, log_data_r++) { for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) { rx_amp_log[log_data_r * COHPSK_NC * COHPSK_ND + c] = cohpsk->amp_[r][c]; rx_phi_log[log_data_r * COHPSK_NC * COHPSK_ND + c] = cohpsk->phi_[r][c]; rx_symb_log[log_data_r * COHPSK_NC * COHPSK_ND + c] = cohpsk->rx_symb[r][c]; } } f_est_log[frames - 1] = cohpsk->f_est; ratio_log[frames - 1] = cohpsk->ratio; // fprintf(stderr,"ratio: %f\n", cohpsk->ratio); // printf("frames: %d log_data_r: %d\n", frames, log_data_r); if (frames == logframes) oct = 0; } } /* if this is in a pipeline, we probably don't want the usual buffering to occur */ if (fout == stdout) fflush(stdout); } fclose(fin); fclose(fout); /* optionally dump Octave files */ if (foct != NULL) { octave_save_float(foct, "rx_amp_log_c", (float *)rx_amp_log, log_data_r, COHPSK_NC * COHPSK_ND, COHPSK_NC * COHPSK_ND); octave_save_float(foct, "rx_phi_log_c", (float *)rx_phi_log, log_data_r, COHPSK_NC * COHPSK_ND, COHPSK_NC * COHPSK_ND); octave_save_complex(foct, "rx_symb_log_c", (COMP *)rx_symb_log, log_data_r, COHPSK_NC * COHPSK_ND, COHPSK_NC * COHPSK_ND); octave_save_float(foct, "rx_timing_log_c", (float *)cohpsk->rx_timing_log, 1, cohpsk->rx_timing_log_index, cohpsk->rx_timing_log_index); octave_save_float(foct, "f_est_log_c", f_est_log, 1, logframes, logframes); octave_save_float(foct, "ratio_log_c", ratio_log, 1, logframes, logframes); fclose(foct); } cohpsk_destroy(cohpsk); return 0; } codec2-1.2.0/src/cohpsk_get_test_bits.c000066400000000000000000000046221445607075400200320ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: cohpsk_put_test_bits.c AUTHOR......: David Rowe DATE CREATED: April 2015 Generates a file of test bits, useful for input to cohpsk_mod. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2015 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include "codec2_cohpsk.h" #include "test_bits_coh.h" int main(int argc, char *argv[]) { FILE *fout; int tx_bits[COHPSK_BITS_PER_FRAME]; char tx_bits_char[COHPSK_BITS_PER_FRAME]; int numBits, nFrames, n; int *ptest_bits_coh, *ptest_bits_coh_end, i; if (argc < 2) { printf("usage: %s OutputOneCharPerBitFile numBits\n", argv[0]); exit(1); } if (strcmp(argv[1], "-") == 0) fout = stdout; else if ((fout = fopen(argv[1], "wb")) == NULL) { fprintf(stderr, "Error opening output file: %s: %s.\n", argv[1], strerror(errno)); exit(1); } ptest_bits_coh = (int *)test_bits_coh; ptest_bits_coh_end = (int *)test_bits_coh + sizeof(test_bits_coh) / sizeof(int); numBits = atoi(argv[2]); nFrames = numBits / COHPSK_BITS_PER_FRAME; for (n = 0; n < nFrames; n++) { memcpy(tx_bits, ptest_bits_coh, sizeof(int) * COHPSK_BITS_PER_FRAME); ptest_bits_coh += COHPSK_BITS_PER_FRAME; if (ptest_bits_coh >= ptest_bits_coh_end) { ptest_bits_coh = (int *)test_bits_coh; } for (i = 0; i < COHPSK_BITS_PER_FRAME; i++) tx_bits_char[i] = tx_bits[i]; fwrite(tx_bits_char, sizeof(char), COHPSK_BITS_PER_FRAME, fout); /* if this is in a pipeline, we probably don't want the usual buffering to occur */ if (fout == stdout) fflush(stdout); } fclose(fout); return 0; } codec2-1.2.0/src/cohpsk_internal.h000066400000000000000000000113131445607075400170070ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: cohpsk_internal.h AUTHOR......: David Rowe DATE CREATED: March 2015 Functions that implement a coherent PSK FDM modem. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2015 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __COHPSK_INTERNAL__ #define __COHPSK_INTERNAL__ #define NCT_SYMB_BUF (2 * NSYMROWPILOT + 2) #define COHPSK_ND \ 2 /* diversity factor ND 1 is no diveristy, ND we have original plus \ one copy */ #define NSW 4 /* number of sync window frames */ #define COHPSK_M 100 /* oversampling rate */ #define COHPSK_NSYM 6 #define COHPSK_NFILTER (COHPSK_NSYM * COHPSK_M) #define COHPSK_EXCESS_BW 0.5 /* excess BW factor of root nyq filter */ #define COHPSK_NT 5 /* number of symbols we estimate timing over */ #include "fdmdv_internal.h" #include "kiss_fft.h" struct COHPSK { COMP ch_fdm_frame_buf[NSW * NSYMROWPILOT * COHPSK_M]; /* buffer of several frames of symbols from channel */ float pilot2[2 * NPILOTSFRAME][COHPSK_NC]; float phi_[NSYMROWPILOT] [COHPSK_NC * COHPSK_ND]; /* phase estimates for this frame of rx data symbols */ float amp_[NSYMROW][COHPSK_NC * COHPSK_ND]; /* amplitude estimates for this frame of rx data symbols */ COMP rx_symb[NSYMROWPILOT][COHPSK_NC * COHPSK_ND]; /* demodulated symbols */ float f_est; COMP rx_filter_memory[COHPSK_NC * COHPSK_ND][COHPSK_NFILTER]; COMP ct_symb_buf[NCT_SYMB_BUF][COHPSK_NC * COHPSK_ND]; int ct; /* coarse timing offset in symbols */ float rx_timing; /* fine timing for last symbol in frame */ int nin; /* number of samples to input for next symbol */ float f_fine_est; COMP ff_rect; COMP ff_phase; COMP ct_symb_ff_buf[NSYMROWPILOT + 2][COHPSK_NC * COHPSK_ND]; int sync; int sync_timer; int frame; float ratio; float sig_rms; float noise_rms; struct FDMDV *fdmdv; int verbose; int *ptest_bits_coh_tx; int *ptest_bits_coh_rx[2]; int *ptest_bits_coh_end; /* counting bit errors using pilots */ int npilotbits; int npilotbiterrors; /* optional log variables used for testing Octave to C port */ COMP *rx_baseband_log; int rx_baseband_log_col_index; int rx_baseband_log_col_sz; COMP *rx_filt_log; int rx_filt_log_col_index; int rx_filt_log_col_sz; COMP *ch_symb_log; int ch_symb_log_r; int ch_symb_log_col_sz; float *rx_timing_log; int rx_timing_log_index; /* demodulated bits before diversity combination for test/instrumentation * purposes */ float rx_bits_lower[COHPSK_BITS_PER_FRAME]; float rx_bits_upper[COHPSK_BITS_PER_FRAME]; /* tx amplitude weights for each carrier for test/instrumentation */ float carrier_ampl[COHPSK_NC * COHPSK_ND]; /* Flag enabling simple freq est mode */ int freq_est_mode_reduced; }; void bits_to_qpsk_symbols(COMP tx_symb[][COHPSK_NC * COHPSK_ND], int tx_bits[], int nbits); void qpsk_symbols_to_bits(struct COHPSK *coh, float rx_bits[], COMP ct_symb_buf[][COHPSK_NC * COHPSK_ND]); void tx_filter_and_upconvert_coh(COMP tx_fdm[], int Nc, const COMP tx_symbols[], COMP tx_filter_memory[][COHPSK_NSYM], COMP phase_tx[], COMP freq[], COMP *fbb_phase, COMP fbb_rect); void fdm_downconvert_coh(COMP rx_baseband[][COHPSK_M + COHPSK_M / P], int Nc, COMP rx_fdm[], COMP phase_rx[], COMP freq[], int nin); void frame_sync_fine_freq_est(struct COHPSK *coh, COMP ch_symb[][COHPSK_NC * COHPSK_ND], int sync, int *next_sync); void fine_freq_correct(struct COHPSK *coh, int sync, int next_sync); int sync_state_machine(struct COHPSK *coh, int sync, int next_sync); int cohpsk_fs_offset(COMP out[], COMP in[], int n, float sample_rate_ppm); #endif codec2-1.2.0/src/cohpsk_mod.c000066400000000000000000000067231445607075400157560ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: cohpsk_mod.c AUTHOR......: David Rowe DATE CREATED: April 5 2015 Given an input file of bits (note one bit per float, soft decision format), outputs a raw file (8kHz, 16 bit shorts) of COHPSK modem samples ready to send over a HF radio channel. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2015 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include "codec2_cohpsk.h" #include "codec2_fdmdv.h" int opt_exists(char *argv[], int argc, char opt[]) { int i; for (i = 0; i < argc; i++) { if (strcmp(argv[i], opt) == 0) { return i; } } return 0; } int main(int argc, char *argv[]) { FILE *fin, *fout; struct COHPSK *cohpsk; char tx_bits_char[2 * COHPSK_BITS_PER_FRAME]; int tx_bits[2 * COHPSK_BITS_PER_FRAME]; COMP tx_fdm[COHPSK_NOM_SAMPLES_PER_FRAME]; short tx_fdm_scaled[COHPSK_NOM_SAMPLES_PER_FRAME]; int diversity; int i; if (argc < 3) { fprintf(stderr, "\n"); fprintf(stderr, "usage: %s InputOneCharPerBitFile OutputModemRawFile [-nd]\n", argv[0]); fprintf(stderr, "\n"); fprintf(stderr, " --nd non-diversity mode, input frames of %d bits\n", 2 * COHPSK_BITS_PER_FRAME); fprintf(stderr, "\n"); exit(1); } if (strcmp(argv[1], "-") == 0) fin = stdin; else if ((fin = fopen(argv[1], "rb")) == NULL) { fprintf(stderr, "Error opening input file: %s: %s.\n", argv[1], strerror(errno)); exit(1); } if (strcmp(argv[2], "-") == 0) fout = stdout; else if ((fout = fopen(argv[2], "wb")) == NULL) { fprintf(stderr, "Error opening output modem sample file: %s: %s.\n", argv[2], strerror(errno)); exit(1); } cohpsk = cohpsk_create(); if (opt_exists(argv, argc, "--nd")) { diversity = 2; } else { diversity = 1; } fprintf(stderr, "diversity: %d\n", diversity); while (fread(tx_bits_char, sizeof(char), COHPSK_BITS_PER_FRAME * diversity, fin) == COHPSK_BITS_PER_FRAME * diversity) { for (i = 0; i < COHPSK_BITS_PER_FRAME * diversity; i++) tx_bits[i] = tx_bits_char[i]; cohpsk_mod(cohpsk, tx_fdm, tx_bits, COHPSK_BITS_PER_FRAME * diversity); cohpsk_clip(tx_fdm, COHPSK_CLIP, COHPSK_NOM_SAMPLES_PER_FRAME); /* scale and save to disk as shorts */ for (i = 0; i < COHPSK_NOM_SAMPLES_PER_FRAME; i++) tx_fdm_scaled[i] = COHPSK_SCALE * tx_fdm[i].real; fwrite(tx_fdm_scaled, sizeof(short), COHPSK_NOM_SAMPLES_PER_FRAME, fout); /* if this is in a pipeline, we probably don't want the usual buffering to occur */ if (fout == stdout) fflush(stdout); } fclose(fin); fclose(fout); cohpsk_destroy(cohpsk); return 0; } codec2-1.2.0/src/cohpsk_put_test_bits.c000066400000000000000000000063571445607075400200720ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: cohpsk_put_test_bits.c AUTHOR......: David Rowe DATE CREATED: April 2015 Sinks a stream of test bits generated by cohpsk_get_test_bits, useful for testing coh psk mod and demod. Returns 0 if BER < 0.02 to facailtate Ctesting. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2015 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include "codec2_cohpsk.h" #include "octave.h" #define LOG_FRAMES 100 int main(int argc, char *argv[]) { FILE *fin, *foct; char rx_bits[COHPSK_BITS_PER_FRAME]; int state, i, nbits, bit_errors, nerrors; short error_pattern[COHPSK_BITS_PER_FRAME]; int error_positions_hist[COHPSK_BITS_PER_FRAME], logframes; int nerr_log[LOG_FRAMES]; struct COHPSK *coh; for (i = 0; i < COHPSK_BITS_PER_FRAME; i++) error_positions_hist[i] = 0; if (argc < 2) { fprintf(stderr, "usage: %s InputOneCharPerBitFile [OctaveLogFile]\n", argv[0]); exit(1); } if (strcmp(argv[1], "-") == 0) fin = stdin; else if ((fin = fopen(argv[1], "rb")) == NULL) { fprintf(stderr, "Error opening input file: %s: %s.\n", argv[1], strerror(errno)); exit(1); } coh = cohpsk_create(); foct = NULL; logframes = 0; if (argc == 3) { if ((foct = fopen(argv[2], "wt")) == NULL) { fprintf(stderr, "Error opening output Octave file: %s: %s.\n", argv[2], strerror(errno)); exit(1); } } for (i = 0; i < COHPSK_BITS_PER_FRAME; i++) error_positions_hist[i] = 0; state = 0; nbits = 0; nerrors = 0; while (fread(rx_bits, sizeof(char), COHPSK_BITS_PER_FRAME, fin) == COHPSK_BITS_PER_FRAME) { cohpsk_put_test_bits(coh, &state, error_pattern, &bit_errors, rx_bits, 0); if (state == 1) { for (i = 0; i < COHPSK_BITS_PER_FRAME; i++) error_positions_hist[i] += error_pattern[i]; if (logframes < LOG_FRAMES) nerr_log[logframes++] = bit_errors; nerrors += bit_errors; nbits += COHPSK_BITS_PER_FRAME; } } if (foct != NULL) { octave_save_int(foct, "nerr_log_c", nerr_log, 1, logframes); octave_save_int(foct, "error_positions_hist_c", error_positions_hist, 1, COHPSK_BITS_PER_FRAME); fclose(foct); } fclose(fin); float ber = (float)nerrors / nbits; fprintf(stderr, "BER: %4.3f Nbits: %d Nerrors: %d\n", ber, nbits, nerrors); /* return code for Ctest - 0 for pass, 1 for fail, based on 2% BER */ if (nbits && (ber < 0.02)) return 0; else return 1; } codec2-1.2.0/src/comp.h000066400000000000000000000020121445607075400145560ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: comp.h AUTHOR......: David Rowe DATE CREATED: 24/08/09 Complex number definition. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2009 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __COMP__ #define __COMP__ /* Complex number */ typedef struct { float real; float imag; } COMP; #endif codec2-1.2.0/src/comp_prim.h000066400000000000000000000055011445607075400156130ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: comp_prim.h AUTHOR......: David Rowe DATE CREATED: Marh 2015 Complex number maths primitives. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2015 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __COMP_PRIM__ #define __COMP_PRIM__ #include /*---------------------------------------------------------------------------*\ FUNCTIONS \*---------------------------------------------------------------------------*/ inline static COMP cneg(COMP a) { COMP res; res.real = -a.real; res.imag = -a.imag; return res; } inline static COMP cconj(COMP a) { COMP res; res.real = a.real; res.imag = -a.imag; return res; } inline static COMP cmult(COMP a, COMP b) { COMP res; res.real = a.real * b.real - a.imag * b.imag; res.imag = a.real * b.imag + a.imag * b.real; return res; } inline static COMP fcmult(float a, COMP b) { COMP res; res.real = a * b.real; res.imag = a * b.imag; return res; } inline static COMP cadd(COMP a, COMP b) { COMP res; res.real = a.real + b.real; res.imag = a.imag + b.imag; return res; } inline static float cabsolute(COMP a) { return sqrtf((a.real * a.real) + (a.imag * a.imag)); } /* * Euler's formula in a new convenient function */ inline static COMP comp_exp_j(float phi) { COMP res; res.real = cosf(phi); res.imag = sinf(phi); return res; } /* * Quick and easy complex 0 */ inline static COMP comp0() { COMP res; res.real = 0; res.imag = 0; return res; } /* * Quick and easy complex subtract */ inline static COMP csub(COMP a, COMP b) { COMP res; res.real = a.real - b.real; res.imag = a.imag - b.imag; return res; } /* * Compare the magnitude of a and b. if |a|>|b|, return true, otw false. * This needs no square roots */ inline static int comp_mag_gt(COMP a, COMP b) { return ((a.real * a.real) + (a.imag * a.imag)) > ((b.real * b.real) + (b.imag * b.imag)); } /* * Normalize a complex number's magnitude to 1 */ inline static COMP comp_normalize(COMP a) { COMP b; float av = cabsolute(a); b.real = a.real / av; b.imag = a.imag / av; return b; } #endif codec2-1.2.0/src/debug_alloc.h000066400000000000000000000034161445607075400160710ustar00rootroot00000000000000/* debug_alloc.h * * Some macros which can report on malloc results. * * Enable with "-D DEBUG_ALLOC" */ #ifndef DEBUG_ALLOC_H #define DEBUG_ALLOC_H #include // Debug calls #ifdef CORTEX_M4 extern char *__heap_end; register char *sp asm("sp"); #endif #if defined(__EMBEDDED__) extern void *codec2_malloc(size_t size); extern void *codec2_calloc(size_t nmemb, size_t size); extern void codec2_free(void *ptr); #else #define codec2_malloc(size) (malloc(size)) #define codec2_calloc(nmemb, size) (calloc(nmemb, size)) #define codec2_free(ptr) (free(ptr)) #endif // defined(__EMBEDDED__) static inline void *DEBUG_MALLOC(const char *func, size_t size) { void *ptr = codec2_malloc(size); fprintf(stderr, "MALLOC: %s %p %d", func, ptr, (int)size); #ifdef CORTEX_M4 fprintf(stderr, " : sp %p ", sp); #endif if (!ptr) fprintf(stderr, " ** FAILED **"); fprintf(stderr, "\n"); return (ptr); } static inline void *DEBUG_CALLOC(const char *func, size_t nmemb, size_t size) { void *ptr = codec2_calloc(nmemb, size); fprintf(stderr, "CALLOC: %s %p %d %d", func, ptr, (int)nmemb, (int)size); #ifdef CORTEX_M4 fprintf(stderr, " : sp %p ", sp); #endif if (!ptr) fprintf(stderr, " ** FAILED **"); fprintf(stderr, "\n"); return (ptr); } static inline void DEBUG_FREE(const char *func, void *ptr) { codec2_free(ptr); fprintf(stderr, "FREE: %s %p\n", func, ptr); } #ifdef DEBUG_ALLOC #define MALLOC(size) DEBUG_MALLOC(__func__, size) #define CALLOC(nmemb, size) DEBUG_CALLOC(__func__, nmemb, size) #define FREE(ptr) DEBUG_FREE(__func__, ptr) #else // DEBUG_ALLOC // Default to normal calls #define MALLOC(size) codec2_malloc(size) #define CALLOC(nmemb, size) codec2_calloc(nmemb, size) #define FREE(ptr) codec2_free(ptr) #endif // DEBUG_ALLOC #endif // DEBUG_ALLOC_H codec2-1.2.0/src/defines.h000066400000000000000000000103261445607075400152440ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: defines.h AUTHOR......: David Rowe DATE CREATED: 23/4/93 Defines and structures used throughout the codec. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2009 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __DEFINES__ #define __DEFINES__ /*---------------------------------------------------------------------------*\ DEFINES \*---------------------------------------------------------------------------*/ /* General defines */ #define N_S 0.01 /* internal proc frame length in secs */ #define TW_S 0.005 /* trapezoidal synth window overlap */ #define MAX_AMP 160 /* maximum number of harmonics */ #ifndef PI #define PI 3.141592654 /* mathematical constant */ #endif #define TWO_PI 6.283185307 /* mathematical constant */ #define MAX_STR 2048 /* maximum string size */ #define FFT_ENC 512 /* size of FFT used for encoder */ #define FFT_DEC 512 /* size of FFT used in decoder */ #define V_THRESH 6.0 /* voicing threshold in dB */ #define LPC_ORD 10 /* LPC order */ #define LPC_ORD_LOW 6 /* LPC order for lower rates */ /* Pitch estimation defines */ #define M_PITCH_S 0.0400 /* pitch analysis window in s */ #define P_MIN_S 0.0025 /* minimum pitch period in s */ #define P_MAX_S 0.0200 /* maximum pitch period in s */ /*---------------------------------------------------------------------------*\ TYPEDEFS \*---------------------------------------------------------------------------*/ /* Structure to hold constants calculated at run time based on sample rate */ typedef struct { int Fs; /* sample rate of this instance */ int n_samp; /* number of samples per 10ms frame at Fs */ int max_amp; /* maximum number of harmonics */ int m_pitch; /* pitch estimation window size in samples */ int p_min; /* minimum pitch period in samples */ int p_max; /* maximum pitch period in samples */ float Wo_min; float Wo_max; int nw; /* analysis window size in samples */ int tw; /* trapezoidal synthesis window overlap */ } C2CONST; /* Structure to hold model parameters for one frame */ typedef struct { float Wo; /* fundamental frequency estimate in radians */ int L; /* number of harmonics */ float A[MAX_AMP + 1]; /* amplitiude of each harmonic */ float phi[MAX_AMP + 1]; /* phase of each harmonic */ int voiced; /* non-zero if this frame is voiced */ } MODEL; /* describes each codebook */ struct lsp_codebook { int k; /* dimension of vector */ int log2m; /* number of bits in m */ int m; /* elements in codebook */ #ifdef __EMBEDDED__ /* make sure stored in flash */ const float *cb; /* The elements */ #else float *cb; /* The elements */ #endif }; extern const struct lsp_codebook lsp_cb[]; extern const struct lsp_codebook lsp_cbd[]; extern const struct lsp_codebook lsp_cbjmv[]; extern const struct lsp_codebook ge_cb[]; extern const struct lsp_codebook newamp1vq_cb[]; extern const struct lsp_codebook newamp1_energy_cb[]; extern const struct lsp_codebook newamp2vq_cb[]; extern const struct lsp_codebook newamp2_energy_cb[]; #ifdef _GNU_SOURCE #define POW10F(x) exp10f((x)) #else #define POW10F(x) expf(2.302585092994046f * (x)) #endif #endif codec2-1.2.0/src/deframer.c000066400000000000000000000121601445607075400154050ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: deframer.c AUTHOR......: David Rowe DATE CREATED: July 2020 Command line deframer, obtains UW sync, then extracts frame of data bits. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2020 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include "fsk.h" unsigned int toInt(char c) { if (c >= '0' && c <= '9') return c - '0'; if (c >= 'A' && c <= 'F') return 10 + c - 'A'; if (c >= 'a' && c <= 'f') return 10 + c - 'a'; return -1; } int main(int argc, char *argv[]) { FILE *fin, *fout; if (argc < 5) { fprintf(stderr, "usage: %s InOneFloatPerLLR OutOneFloatPerLLR frameSizeBits HexUW " "[--hard]\n", argv[0]); fprintf(stderr, " --hard Treat input and output files as OneBitPerByte hard " "decisions\n"); exit(1); } if (strcmp(argv[1], "-") == 0) { fin = stdin; } else { if ((fin = fopen(argv[1], "rb")) == NULL) { fprintf(stderr, "Couldn't open input file: %s\n", argv[1]); exit(1); } } if (strcmp(argv[2], "-") == 0) { fout = stdout; } else { if ((fout = fopen(argv[2], "wb")) == NULL) { fprintf(stderr, "Couldn't open output file: %s\n", argv[2]); exit(1); } } /* extract UW array from hex on command line */ size_t framesize = atoi(argv[3]); char *uw_hex = argv[4]; uint8_t uw[4 * strlen(uw_hex)]; int uwsize = 0; for (int c = 0; c < strlen(uw_hex); c++) for (int i = 0; i < 4; i++) uw[uwsize++] = (toInt(uw_hex[c]) >> (3 - i)) & 0x1; /* MSB first */ assert(uwsize == 4 * strlen(uw_hex)); fprintf(stderr, "uw_hex: %s uwsize: %d\n", uw_hex, uwsize); for (int i = 0; i < uwsize; i++) fprintf(stderr, "%d ", uw[i]); fprintf(stderr, "\n"); /* set up for LLRs or hard decision inputs */ size_t framedsize = framesize + uwsize; int oneBitPerByte = 0; int nelement = sizeof(float); if (argc == 6) { oneBitPerByte = 1; nelement = sizeof(uint8_t); } uint8_t *inbuf = malloc(2 * nelement * framedsize); assert(inbuf != NULL); memset(inbuf, 0, 2 * nelement * framedsize); /* main loop */ uint8_t twoframes[2 * framedsize]; memset(twoframes, 0, 2 * framedsize); int state = 0; int thresh1 = 0.1 * uwsize; int thresh2 = 0.4 * uwsize; int baduw = 0; fprintf(stderr, "thresh1: %d thresh2: %d\n", thresh1, thresh2); int best_location, errors; while (fread(&inbuf[nelement * framedsize], nelement, framedsize, fin) == framedsize) { /* We need to maintain a two frame buffer of hard decision data for UW sync */ if (oneBitPerByte) { memcpy(&twoframes[framedsize], inbuf, framedsize); } else { /* convert bit LLRs to hard decisions */ for (int i = 0; i < framedsize; i++) { float *pllr = (float *)&inbuf[nelement * (framedsize + i)]; if (*pllr < 0) twoframes[framedsize + i] = 1; else twoframes[framedsize + i] = 0; // fprintf(stderr, "%d %f %d\n", i, *pllr, twoframes[framedsize+i]); } } int next_state = state; switch (state) { case 0: /* out of sync - look for UW */ best_location = 0; int best_errors = uwsize; for (int i = 0; i < framesize; i++) { errors = 0; for (int u = 0; u < uwsize; u++) errors += twoframes[i + u] ^ uw[u]; // fprintf(stderr, "%d %d %d\n", i, errors, best_errors); if (errors < best_errors) { best_errors = errors; best_location = i; } } if (best_errors <= thresh1) { fprintf(stderr, "found UW!\n"); next_state = 1; baduw = 0; } break; case 1: /* in sync - check UW still OK */ errors = 0; for (int u = 0; u < uwsize; u++) errors += twoframes[best_location + u] ^ uw[u]; if (errors >= thresh2) { baduw++; if (baduw == 3) { fprintf(stderr, "lost UW!\n"); next_state = 0; } } else baduw = 0; break; } state = next_state; if (state == 1) { fwrite(&inbuf[(best_location + uwsize) * nelement], nelement, framesize, fout); } memmove(twoframes, &twoframes[framedsize], framedsize); memmove(inbuf, &inbuf[nelement * framedsize], nelement * framedsize); } free(inbuf); fclose(fin); fclose(fout); return 0; } codec2-1.2.0/src/dump.c000066400000000000000000000314421445607075400145710ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: dump.c AUTHOR......: David Rowe DATE CREATED: 25/8/09 Routines to dump data to text files for Octave analysis. \*---------------------------------------------------------------------------*/ /* All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "dump.h" #include #include #include #include #include #include "comp.h" #include "defines.h" #ifdef DUMP static int dumpon = 0; static FILE *fsn = NULL; static FILE *fsw = NULL; static FILE *few = NULL; static FILE *fsw_ = NULL; static FILE *fsoftdec = NULL; static FILE *fmodel = NULL; static FILE *fqmodel = NULL; static FILE *fpwb = NULL; static FILE *fpw = NULL; static FILE *frw = NULL; static FILE *flsp = NULL; static FILE *fweights = NULL; static FILE *flsp_ = NULL; static FILE *fmel = NULL; static FILE *fmel_indexes = NULL; static FILE *fphase = NULL; static FILE *fphase_ = NULL; static FILE *ffw = NULL; static FILE *fe = NULL; static FILE *fsq = NULL; static FILE *fdec = NULL; static FILE *fsnr = NULL; static FILE *flpcsnr = NULL; static FILE *fak = NULL; static FILE *fak_ = NULL; static FILE *fbg = NULL; static FILE *fE = NULL; static FILE *frk = NULL; static FILE *fhephase = NULL; static char prefix[MAX_STR]; void dump_on(char p[]) { dumpon = 1; strcpy(prefix, p); } void dump_off() { if (fsn != NULL) fclose(fsn); if (fsw != NULL) fclose(fsw); if (fsw_ != NULL) fclose(fsw_); if (few != NULL) fclose(few); if (fmodel != NULL) fclose(fmodel); if (fsoftdec != NULL) fclose(fsoftdec); if (fqmodel != NULL) fclose(fqmodel); if (fpwb != NULL) fclose(fpwb); if (fpw != NULL) fclose(fpw); if (frw != NULL) fclose(frw); if (flsp != NULL) fclose(flsp); if (fweights != NULL) fclose(fweights); if (flsp_ != NULL) fclose(flsp_); if (fmel != NULL) fclose(fmel); if (fmel_indexes != NULL) fclose(fmel_indexes); if (fphase != NULL) fclose(fphase); if (fphase_ != NULL) fclose(fphase_); if (ffw != NULL) fclose(ffw); if (fe != NULL) fclose(fe); if (fsq != NULL) fclose(fsq); if (fdec != NULL) fclose(fdec); if (fsnr != NULL) fclose(fsnr); if (flpcsnr != NULL) fclose(flpcsnr); if (fak != NULL) fclose(fak); if (fak_ != NULL) fclose(fak_); if (fbg != NULL) fclose(fbg); if (fE != NULL) fclose(fE); if (frk != NULL) fclose(frk); if (fhephase != NULL) fclose(fhephase); } void dump_Sn(int m_pitch, float Sn[]) { int i; char s[MAX_STR + 7]; if (!dumpon) return; if (fsn == NULL) { sprintf(s, "%s_sn.txt", prefix); fsn = fopen(s, "wt"); assert(fsn != NULL); } /* split across two lines to avoid max line length problems */ /* reconstruct in Octave */ for (i = 0; i < m_pitch / 2; i++) fprintf(fsn, "%f\t", Sn[i]); fprintf(fsn, "\n"); for (i = m_pitch / 2; i < m_pitch; i++) fprintf(fsn, "%f\t", Sn[i]); fprintf(fsn, "\n"); } void dump_Sw(COMP Sw[]) { int i; char s[MAX_STR + 7]; if (!dumpon) return; if (fsw == NULL) { sprintf(s, "%s_sw.txt", prefix); fsw = fopen(s, "wt"); assert(fsw != NULL); } for (i = 0; i < FFT_ENC / 2; i++) fprintf(fsw, "%f\t", 10.0 * log10(Sw[i].real * Sw[i].real + Sw[i].imag * Sw[i].imag)); fprintf(fsw, "\n"); } void dump_Sw_(COMP Sw_[]) { int i; char s[MAX_STR + 8]; if (!dumpon) return; if (fsw_ == NULL) { sprintf(s, "%s_sw_.txt", prefix); fsw_ = fopen(s, "wt"); assert(fsw_ != NULL); } for (i = 0; i < FFT_ENC / 2; i++) fprintf( fsw_, "%f\t", 10.0 * log10(Sw_[i].real * Sw_[i].real + Sw_[i].imag * Sw_[i].imag)); fprintf(fsw_, "\n"); } void dump_Ew(COMP Ew[]) { int i; char s[MAX_STR + 7]; if (!dumpon) return; if (few == NULL) { sprintf(s, "%s_ew.txt", prefix); few = fopen(s, "wt"); assert(few != NULL); } for (i = 0; i < FFT_ENC / 2; i++) fprintf(few, "%f\t", 10.0 * log10(Ew[i].real * Ew[i].real + Ew[i].imag * Ew[i].imag)); fprintf(few, "\n"); } void dump_softdec(float *softdec, int n) { int i; char s[MAX_STR + 12]; if (!dumpon) return; if (fsoftdec == NULL) { sprintf(s, "%s_softdec.txt", prefix); fsoftdec = fopen(s, "wt"); assert(fsoftdec != NULL); } for (i = 0; i < n; i++) fprintf(fsoftdec, "%f\t", softdec[i]); fprintf(fsoftdec, "\n"); } void dump_model(MODEL *model) { int l; char s[MAX_STR + 10]; char line[MAX_STR * 10]; if (!dumpon) return; if (fmodel == NULL) { sprintf(s, "%s_model.txt", prefix); fmodel = fopen(s, "wt"); assert(fmodel != NULL); } sprintf(line, "%12f %12d ", model->Wo, model->L); for (l = 1; l <= model->L; l++) { sprintf(s, "%12f ", model->A[l]); strcat(line, s); assert(strlen(line) < MAX_STR * 10); } for (l = model->L + 1; l <= MAX_AMP; l++) { sprintf(s, "%12f ", 0.0); strcat(line, s); assert(strlen(line) < MAX_STR * 10); } sprintf(s, "%d\n", model->voiced); strcat(line, s); fprintf(fmodel, "%s", line); } void dump_quantised_model(MODEL *model) { int l; char s[MAX_STR + 11]; char line[4096]; if (!dumpon) return; if (fqmodel == NULL) { sprintf(s, "%s_qmodel.txt", prefix); fqmodel = fopen(s, "wt"); assert(fqmodel != NULL); } sprintf(line, "%12f %12d ", model->Wo, model->L); for (l = 1; l <= model->L; l++) { sprintf(s, "%12f ", model->A[l]); strcat(line, s); assert(strlen(line) < 4096); } for (l = model->L + 1; l <= MAX_AMP; l++) { sprintf(s, "%12f ", 0.0); strcat(line, s); assert(strlen(line) < 4096); } sprintf(s, "%d\n", model->voiced); strcat(line, s); fprintf(fqmodel, "%s", line); } void dump_phase(float phase[], int L) { int l; char s[MAX_STR + 10]; if (!dumpon) return; if (fphase == NULL) { sprintf(s, "%s_phase.txt", prefix); fphase = fopen(s, "wt"); assert(fphase != NULL); } for (l = 1; l <= L; l++) fprintf(fphase, "%f\t", phase[l]); for (l = L + 1; l <= MAX_AMP; l++) fprintf(fphase, "%f\t", 0.0); fprintf(fphase, "\n"); } void dump_phase_(float phase_[], int L) { int l; char s[MAX_STR + 11]; if (!dumpon) return; if (fphase_ == NULL) { sprintf(s, "%s_phase_.txt", prefix); fphase_ = fopen(s, "wt"); assert(fphase_ != NULL); } for (l = 1; l <= L; l++) fprintf(fphase_, "%f\t", phase_[l]); for (l = L + 1; l < MAX_AMP; l++) fprintf(fphase_, "%f\t", 0.0); fprintf(fphase_, "\n"); } void dump_hephase(int ind[], int dim) { int m; char s[MAX_STR + 12]; if (!dumpon) return; if (fhephase == NULL) { sprintf(s, "%s_hephase.txt", prefix); fhephase = fopen(s, "wt"); assert(fhephase != NULL); } for (m = 0; m < dim; m++) fprintf(fhephase, "%d\t", ind[m]); fprintf(fhephase, "\n"); } void dump_snr(float snr) { char s[MAX_STR + 8]; if (!dumpon) return; if (fsnr == NULL) { sprintf(s, "%s_snr.txt", prefix); fsnr = fopen(s, "wt"); assert(fsnr != NULL); } fprintf(fsnr, "%f\n", snr); } void dump_lpc_snr(float snr) { char s[MAX_STR + 12]; if (!dumpon) return; if (flpcsnr == NULL) { sprintf(s, "%s_lpc_snr.txt", prefix); flpcsnr = fopen(s, "wt"); assert(flpcsnr != NULL); } fprintf(flpcsnr, "%f\n", snr); } /* Pw "before" post filter so we can plot before and after */ void dump_Pwb(float Pwb[]) { int i; char s[MAX_STR + 8]; if (!dumpon) return; if (fpwb == NULL) { sprintf(s, "%s_pwb.txt", prefix); fpwb = fopen(s, "wt"); assert(fpwb != NULL); } for (i = 0; i < FFT_ENC / 2; i++) fprintf(fpwb, "%f\t", Pwb[i]); fprintf(fpwb, "\n"); } void dump_Pw(float Pw[]) { int i; char s[MAX_STR + 7]; if (!dumpon) return; if (fpw == NULL) { sprintf(s, "%s_pw.txt", prefix); fpw = fopen(s, "wt"); assert(fpw != NULL); } for (i = 0; i < FFT_ENC / 2; i++) fprintf(fpw, "%f\t", Pw[i]); fprintf(fpw, "\n"); } void dump_Rw(float Rw[]) { int i; char s[MAX_STR + 7]; if (!dumpon) return; if (frw == NULL) { sprintf(s, "%s_rw.txt", prefix); frw = fopen(s, "wt"); assert(frw != NULL); } for (i = 0; i < FFT_ENC / 2; i++) fprintf(frw, "%f\t", Rw[i]); fprintf(frw, "\n"); } void dump_weights(float w[], int order) { int i; char s[MAX_STR + 12]; if (!dumpon) return; if (fweights == NULL) { sprintf(s, "%s_weights.txt", prefix); fweights = fopen(s, "wt"); assert(fweights != NULL); } for (i = 0; i < order; i++) fprintf(fweights, "%f\t", w[i]); fprintf(fweights, "\n"); } void dump_lsp(float lsp[]) { int i; char s[MAX_STR + 8]; if (!dumpon) return; if (flsp == NULL) { sprintf(s, "%s_lsp.txt", prefix); flsp = fopen(s, "wt"); assert(flsp != NULL); } for (i = 0; i < 10; i++) fprintf(flsp, "%f\t", lsp[i]); fprintf(flsp, "\n"); } void dump_lsp_(float lsp_[]) { int i; char s[MAX_STR + 9]; if (!dumpon) return; if (flsp_ == NULL) { sprintf(s, "%s_lsp_.txt", prefix); flsp_ = fopen(s, "wt"); assert(flsp_ != NULL); } for (i = 0; i < 10; i++) fprintf(flsp_, "%f\t", lsp_[i]); fprintf(flsp_, "\n"); } void dump_mel(float mel[], int order) { int i; char s[MAX_STR + 8]; if (!dumpon) return; if (fmel == NULL) { sprintf(s, "%s_mel.txt", prefix); fmel = fopen(s, "wt"); assert(fmel != NULL); } for (i = 0; i < order; i++) fprintf(fmel, "%f\t", mel[i]); fprintf(fmel, "\n"); } void dump_mel_indexes(int mel_indexes[], int order) { int i; char s[MAX_STR + 16]; if (!dumpon) return; if (fmel_indexes == NULL) { sprintf(s, "%s_mel_indexes.txt", prefix); fmel_indexes = fopen(s, "wt"); assert(fmel_indexes != NULL); } for (i = 0; i < order; i++) fprintf(fmel_indexes, "%d\t", mel_indexes[i]); fprintf(fmel_indexes, "\n"); } void dump_ak(float ak[], int order) { int i; char s[MAX_STR + 7]; if (!dumpon) return; if (fak == NULL) { sprintf(s, "%s_ak.txt", prefix); fak = fopen(s, "wt"); assert(fak != NULL); } for (i = 0; i <= order; i++) fprintf(fak, "%f\t", ak[i]); fprintf(fak, "\n"); } void dump_ak_(float ak_[], int order) { int i; char s[MAX_STR + 8]; if (!dumpon) return; if (fak_ == NULL) { sprintf(s, "%s_ak_.txt", prefix); fak_ = fopen(s, "wt"); assert(fak_ != NULL); } for (i = 0; i <= order; i++) fprintf(fak_, "%f\t", ak_[i]); fprintf(fak_, "\n"); } void dump_Fw(COMP Fw[]) { int i; char s[MAX_STR + 7]; if (!dumpon) return; if (ffw == NULL) { sprintf(s, "%s_fw.txt", prefix); ffw = fopen(s, "wt"); assert(ffw != NULL); } for (i = 0; i < 256; i++) fprintf(ffw, "%f\t", Fw[i].real); fprintf(ffw, "\n"); } void dump_e(float e_hz[]) { int i; char s[MAX_STR + 6]; if (!dumpon) return; if (fe == NULL) { sprintf(s, "%s_e.txt", prefix); fe = fopen(s, "wt"); assert(fe != NULL); } for (i = 0; i < 500 / 2; i++) fprintf(fe, "%f\t", e_hz[i]); fprintf(fe, "\n"); for (i = 500 / 2; i < 500; i++) fprintf(fe, "%f\t", e_hz[i]); fprintf(fe, "\n"); } void dump_sq(int m_pitch, float sq[]) { int i; char s[MAX_STR + 7]; if (!dumpon) return; if (fsq == NULL) { sprintf(s, "%s_sq.txt", prefix); fsq = fopen(s, "wt"); assert(fsq != NULL); } for (i = 0; i < m_pitch / 2; i++) fprintf(fsq, "%f\t", sq[i]); fprintf(fsq, "\n"); for (i = m_pitch / 2; i < m_pitch; i++) fprintf(fsq, "%f\t", sq[i]); fprintf(fsq, "\n"); } void dump_dec(COMP Fw[]) { int i; char s[MAX_STR + 8]; if (!dumpon) return; if (fdec == NULL) { sprintf(s, "%s_dec.txt", prefix); fdec = fopen(s, "wt"); assert(fdec != NULL); } for (i = 0; i < 320 / 5; i++) fprintf(fdec, "%f\t", Fw[i].real); fprintf(fdec, "\n"); } void dump_bg(float e, float bg_est, float percent_uv) { char s[MAX_STR + 7]; if (!dumpon) return; if (fbg == NULL) { sprintf(s, "%s_bg.txt", prefix); fbg = fopen(s, "wt"); assert(fbg != NULL); } fprintf(fbg, "%f\t%f\t%f\n", e, bg_est, percent_uv); } void dump_E(float E) { char s[MAX_STR + 6]; if (!dumpon) return; if (fE == NULL) { sprintf(s, "%s_E.txt", prefix); fE = fopen(s, "wt"); assert(fE != NULL); } fprintf(fE, "%f\n", 10.0 * log10(E)); } #if 0 void dump_Rk(float Rk[]) { int i; char s[MAX_STR]; if (!dumpon) return; if (frk == NULL) { sprintf(s,"%s_rk.txt", prefix); frk = fopen(s, "wt"); assert(frk != NULL); } for(i=0; i. */ #ifndef __DUMP__ #define __DUMP__ #include "codec2_fft.h" #include "codec2_internal.h" #include "comp.h" #include "defines.h" void dump_on(char filename_prefix[]); void dump_off(); void dump_Sn(int m_pitch, float Sn[]); void dump_Sw(COMP Sw[]); void dump_Sw_(COMP Sw_[]); void dump_Ew(COMP Ew[]); void dump_softdec(float *softdec, int n); /* amplitude modelling */ void dump_model(MODEL *m); void dump_quantised_model(MODEL *m); void dump_Pwn(COMP Pw[]); void dump_Pw(float Pw[]); void dump_Rw(float Rw[]); void dump_lsp(float lsp[]); void dump_weights(float w[], int ndim); void dump_lsp_(float lsp_[]); void dump_mel(float mel[], int order); void dump_mel_indexes(int mel_indexes[], int order); void dump_ak(float ak[], int order); void dump_ak_(float ak[], int order); void dump_E(float E); void dump_lpc_snr(float snr); /* phase modelling */ void dump_snr(float snr); void dump_phase(float phase[], int L); void dump_phase_(float phase[], int L); void dump_hephase(int ind[], int dim); /* NLP states */ void dump_sq(int m_pitch, float sq[]); void dump_dec(COMP Fw[]); void dump_Fw(COMP Fw[]); void dump_e(float e_hz[]); #if 0 void dump_Rk(float Rk[]); #endif /* post filter */ void dump_bg(float e, float bg_est, float percent_uv); void dump_Pwb(float Pwb[]); #endif codec2-1.2.0/src/fdmdv.c000066400000000000000000001737401445607075400147340ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: fdmdv.c AUTHOR......: David Rowe DATE CREATED: April 14 2012 Functions that implement the FDMDV modem. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2012 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ /*---------------------------------------------------------------------------*\ INCLUDES \*---------------------------------------------------------------------------*/ #include #include #include #include #include #include "codec2_fdmdv.h" #include "codec2_fft.h" #include "comp_prim.h" #include "debug_alloc.h" #include "fdmdv_internal.h" #include "hanning.h" #include "machdep.h" #include "os.h" #include "pilot_coeff.h" #include "rn.h" #include "rxdec_coeff.h" #include "test_bits.h" static int sync_uw[] = {1, -1, 1, -1, 1, -1}; static const COMP pi_on_4 = {.70710678118654752439, .70710678118654752439}; // cosf(PI/4) , sinf(PI/4) /*--------------------------------------------------------------------------* \ FUNCTION....: fdmdv_create AUTHOR......: David Rowe DATE CREATED: 16/4/2012 Create and initialise an instance of the modem. Returns a pointer to the modem states or NULL on failure. One set of states is sufficient for a full duplex modem. \*---------------------------------------------------------------------------*/ struct FDMDV *fdmdv_create(int Nc) { struct FDMDV *f; int c, i, k; assert(NC == FDMDV_NC_MAX); /* check public and private #defines match */ assert(Nc <= NC); assert(FDMDV_NOM_SAMPLES_PER_FRAME == M_FAC); assert(FDMDV_MAX_SAMPLES_PER_FRAME == (M_FAC + M_FAC / P)); f = (struct FDMDV *)MALLOC(sizeof(struct FDMDV)); if (f == NULL) return NULL; f->Nc = Nc; f->ntest_bits = Nc * NB * 4; f->current_test_bit = 0; f->rx_test_bits_mem = (int *)MALLOC(sizeof(int) * f->ntest_bits); assert(f->rx_test_bits_mem != NULL); for (i = 0; i < f->ntest_bits; i++) f->rx_test_bits_mem[i] = 0; assert((sizeof(test_bits) / sizeof(int)) >= f->ntest_bits); f->old_qpsk_mapping = 0; f->tx_pilot_bit = 0; for (c = 0; c < Nc + 1; c++) { f->prev_tx_symbols[c].real = 1.0; f->prev_tx_symbols[c].imag = 0.0; f->prev_rx_symbols[c].real = 1.0; f->prev_rx_symbols[c].imag = 0.0; for (k = 0; k < NSYM; k++) { f->tx_filter_memory[c][k].real = 0.0; f->tx_filter_memory[c][k].imag = 0.0; } /* Spread initial FDM carrier phase out as far as possible. This helped PAPR for a few dB. We don't need to adjust rx phase as DQPSK takes care of that. */ f->phase_tx[c].real = cosf(2.0 * PI * c / (Nc + 1)); f->phase_tx[c].imag = sinf(2.0 * PI * c / (Nc + 1)); f->phase_rx[c].real = 1.0; f->phase_rx[c].imag = 0.0; for (k = 0; k < NT * P; k++) { f->rx_filter_mem_timing[c][k].real = 0.0; f->rx_filter_mem_timing[c][k].imag = 0.0; } } f->prev_tx_symbols[Nc].real = 2.0; fdmdv_set_fsep(f, FSEP); f->freq[Nc].real = cosf(2.0 * PI * 0.0 / FS); f->freq[Nc].imag = sinf(2.0 * PI * 0.0 / FS); f->freq_pol[Nc] = 2.0 * PI * 0.0 / FS; f->fbb_rect.real = cosf(2.0 * PI * FDMDV_FCENTRE / FS); f->fbb_rect.imag = sinf(2.0 * PI * FDMDV_FCENTRE / FS); f->fbb_pol = 2.0 * PI * FDMDV_FCENTRE / FS; f->fbb_phase_tx.real = 1.0; f->fbb_phase_tx.imag = 0.0; f->fbb_phase_rx.real = 1.0; f->fbb_phase_rx.imag = 0.0; /* Generate DBPSK pilot Look Up Table (LUT) */ generate_pilot_lut(f->pilot_lut, &f->freq[Nc]); /* freq Offset estimation states */ f->fft_pilot_cfg = codec2_fft_alloc(MPILOTFFT, 0, NULL, NULL); assert(f->fft_pilot_cfg != NULL); for (i = 0; i < NPILOTBASEBAND; i++) { f->pilot_baseband1[i].real = f->pilot_baseband2[i].real = 0.0; f->pilot_baseband1[i].imag = f->pilot_baseband2[i].imag = 0.0; } f->pilot_lut_index = 0; f->prev_pilot_lut_index = 3 * M_FAC; for (i = 0; i < NRXDECMEM; i++) { f->rxdec_lpf_mem[i].real = 0.0; f->rxdec_lpf_mem[i].imag = 0.0; } for (i = 0; i < NPILOTLPF; i++) { f->pilot_lpf1[i].real = f->pilot_lpf2[i].real = 0.0; f->pilot_lpf1[i].imag = f->pilot_lpf2[i].imag = 0.0; } f->foff = 0.0; f->foff_phase_rect.real = 1.0; f->foff_phase_rect.imag = 0.0; for (i = 0; i < NRX_FDM_MEM; i++) { f->rx_fdm_mem[i].real = 0.0; f->rx_fdm_mem[i].imag = 0.0; } f->fest_state = 0; f->sync = 0; f->timer = 0; for (i = 0; i < NSYNC_MEM; i++) f->sync_mem[i] = 0; for (c = 0; c < Nc + 1; c++) { f->sig_est[c] = 0.0; f->noise_est[c] = 0.0; } f->sig_pwr_av = 0.0; f->foff_filt = 0.0; return f; } /*---------------------------------------------------------------------------*\ FUNCTION....: fdmdv_destroy AUTHOR......: David Rowe DATE CREATED: 16/4/2012 Destroy an instance of the modem. \*---------------------------------------------------------------------------*/ void fdmdv_destroy(struct FDMDV *fdmdv) { assert(fdmdv != NULL); codec2_fft_free(fdmdv->fft_pilot_cfg); FREE(fdmdv->rx_test_bits_mem); FREE(fdmdv); } void fdmdv_use_old_qpsk_mapping(struct FDMDV *fdmdv) { fdmdv->old_qpsk_mapping = 1; } int fdmdv_bits_per_frame(struct FDMDV *fdmdv) { return (fdmdv->Nc * NB); } /*---------------------------------------------------------------------------*\ FUNCTION....: fdmdv_get_test_bits() AUTHOR......: David Rowe DATE CREATED: 16/4/2012 Generate a frame of bits from a repeating sequence of random data. OK so it's not very random if it repeats but it makes syncing at the demod easier for test purposes. \*---------------------------------------------------------------------------*/ void fdmdv_get_test_bits(struct FDMDV *f, int tx_bits[]) { int i; int bits_per_frame = fdmdv_bits_per_frame(f); for (i = 0; i < bits_per_frame; i++) { tx_bits[i] = test_bits[f->current_test_bit]; f->current_test_bit++; if (f->current_test_bit > (f->ntest_bits - 1)) f->current_test_bit = 0; } } float fdmdv_get_fsep(struct FDMDV *f) { return f->fsep; } void fdmdv_set_fsep(struct FDMDV *f, float fsep) { int c; float carrier_freq; f->fsep = fsep; /* Set up frequency of each carrier */ for (c = 0; c < f->Nc / 2; c++) { carrier_freq = (-f->Nc / 2 + c) * f->fsep; f->freq[c].real = cosf(2.0 * PI * carrier_freq / FS); f->freq[c].imag = sinf(2.0 * PI * carrier_freq / FS); f->freq_pol[c] = 2.0 * PI * carrier_freq / FS; } for (c = f->Nc / 2; c < f->Nc; c++) { carrier_freq = (-f->Nc / 2 + c + 1) * f->fsep; f->freq[c].real = cosf(2.0 * PI * carrier_freq / FS); f->freq[c].imag = sinf(2.0 * PI * carrier_freq / FS); f->freq_pol[c] = 2.0 * PI * carrier_freq / FS; } } /*---------------------------------------------------------------------------*\ FUNCTION....: bits_to_dqpsk_symbols() AUTHOR......: David Rowe DATE CREATED: 16/4/2012 Maps bits to parallel DQPSK symbols. Generate Nc+1 QPSK symbols from vector of (1,Nc*Nb) input tx_bits. The Nc+1 symbol is the +1 -1 +1 .... BPSK sync carrier. \*---------------------------------------------------------------------------*/ void bits_to_dqpsk_symbols(COMP tx_symbols[], int Nc, COMP prev_tx_symbols[], int tx_bits[], int *pilot_bit, int old_qpsk_mapping) { int c, msb, lsb; COMP j = {0.0, 1.0}; /* Map tx_bits to to Nc DQPSK symbols. Note legacy support for old (suboptimal) V0.91 FreeDV mapping */ for (c = 0; c < Nc; c++) { msb = tx_bits[2 * c]; lsb = tx_bits[2 * c + 1]; if ((msb == 0) && (lsb == 0)) tx_symbols[c] = prev_tx_symbols[c]; if ((msb == 0) && (lsb == 1)) tx_symbols[c] = cmult(j, prev_tx_symbols[c]); if ((msb == 1) && (lsb == 0)) { if (old_qpsk_mapping) tx_symbols[c] = cneg(prev_tx_symbols[c]); else tx_symbols[c] = cmult(cneg(j), prev_tx_symbols[c]); } if ((msb == 1) && (lsb == 1)) { if (old_qpsk_mapping) tx_symbols[c] = cmult(cneg(j), prev_tx_symbols[c]); else tx_symbols[c] = cneg(prev_tx_symbols[c]); } } /* +1 -1 +1 -1 BPSK sync carrier, once filtered becomes (roughly) two spectral lines at +/- Rs/2 */ if (*pilot_bit) tx_symbols[Nc] = cneg(prev_tx_symbols[Nc]); else tx_symbols[Nc] = prev_tx_symbols[Nc]; if (*pilot_bit) *pilot_bit = 0; else *pilot_bit = 1; } /*---------------------------------------------------------------------------*\ FUNCTION....: tx_filter() AUTHOR......: David Rowe DATE CREATED: 17/4/2012 Given Nc*NB bits construct M_FAC samples (1 symbol) of Nc+1 filtered symbols streams. \*---------------------------------------------------------------------------*/ void tx_filter(COMP tx_baseband[NC + 1][M_FAC], int Nc, COMP tx_symbols[], COMP tx_filter_memory[NC + 1][NSYM]) { int c; int i, j, k; float acc; COMP gain; gain.real = sqrtf(2.0) / 2.0; gain.imag = 0.0; for (c = 0; c < Nc + 1; c++) tx_filter_memory[c][NSYM - 1] = cmult(tx_symbols[c], gain); /* tx filter each symbol, generate M_FAC filtered output samples for each symbol. Efficient polyphase filter techniques used as tx_filter_memory is sparse */ for (i = 0; i < M_FAC; i++) { for (c = 0; c < Nc + 1; c++) { /* filter real sample of symbol for carrier c */ acc = 0.0; for (j = 0, k = M_FAC - i - 1; j < NSYM; j++, k += M_FAC) acc += M_FAC * tx_filter_memory[c][j].real * gt_alpha5_root[k]; tx_baseband[c][i].real = acc; /* filter imag sample of symbol for carrier c */ acc = 0.0; for (j = 0, k = M_FAC - i - 1; j < NSYM; j++, k += M_FAC) acc += M_FAC * tx_filter_memory[c][j].imag * gt_alpha5_root[k]; tx_baseband[c][i].imag = acc; } } /* shift memory, inserting zeros at end */ for (i = 0; i < NSYM - 1; i++) for (c = 0; c < Nc + 1; c++) tx_filter_memory[c][i] = tx_filter_memory[c][i + 1]; for (c = 0; c < Nc + 1; c++) { tx_filter_memory[c][NSYM - 1].real = 0.0; tx_filter_memory[c][NSYM - 1].imag = 0.0; } } /*---------------------------------------------------------------------------*\ FUNCTION....: tx_filter_and_upconvert() AUTHOR......: David Rowe DATE CREATED: 13 August 2014 Given Nc symbols construct M_FAC samples (1 symbol) of Nc+1 filtered and upconverted symbols. \*---------------------------------------------------------------------------*/ void tx_filter_and_upconvert(COMP tx_fdm[], int Nc, COMP tx_symbols[], COMP tx_filter_memory[NC + 1][NSYM], COMP phase_tx[], COMP freq[], COMP *fbb_phase, COMP fbb_rect) { int c; int i, j, k; float acc; COMP gain; COMP tx_baseband; COMP two = {2.0, 0.0}; float mag; gain.real = sqrtf(2.0) / 2.0; gain.imag = 0.0; for (i = 0; i < M_FAC; i++) { tx_fdm[i].real = 0.0; tx_fdm[i].imag = 0.0; } for (c = 0; c < Nc + 1; c++) tx_filter_memory[c][NSYM - 1] = cmult(tx_symbols[c], gain); /* tx filter each symbol, generate M_FAC filtered output samples for each symbol, which we then freq shift and sum with other carriers. Efficient polyphase filter techniques used as tx_filter_memory is sparse */ for (c = 0; c < Nc + 1; c++) { for (i = 0; i < M_FAC; i++) { /* filter real sample of symbol for carrier c */ acc = 0.0; for (j = 0, k = M_FAC - i - 1; j < NSYM; j++, k += M_FAC) acc += M_FAC * tx_filter_memory[c][j].real * gt_alpha5_root[k]; tx_baseband.real = acc; /* filter imag sample of symbol for carrier c */ acc = 0.0; for (j = 0, k = M_FAC - i - 1; j < NSYM; j++, k += M_FAC) acc += M_FAC * tx_filter_memory[c][j].imag * gt_alpha5_root[k]; tx_baseband.imag = acc; /* freq shift and sum */ phase_tx[c] = cmult(phase_tx[c], freq[c]); tx_fdm[i] = cadd(tx_fdm[i], cmult(tx_baseband, phase_tx[c])); } } /* shift whole thing up to carrier freq */ for (i = 0; i < M_FAC; i++) { *fbb_phase = cmult(*fbb_phase, fbb_rect); tx_fdm[i] = cmult(tx_fdm[i], *fbb_phase); } /* Scale such that total Carrier power C of real(tx_fdm) = Nc. This excludes the power of the pilot tone. We return the complex (single sided) signal to make frequency shifting for the purpose of testing easier */ for (i = 0; i < M_FAC; i++) tx_fdm[i] = cmult(two, tx_fdm[i]); /* normalise digital oscillators as the magnitude can drift over time */ for (c = 0; c < Nc + 1; c++) { mag = cabsolute(phase_tx[c]); phase_tx[c].real /= mag; phase_tx[c].imag /= mag; } mag = cabsolute(*fbb_phase); fbb_phase->real /= mag; fbb_phase->imag /= mag; /* shift memory, inserting zeros at end */ for (i = 0; i < NSYM - 1; i++) for (c = 0; c < Nc + 1; c++) tx_filter_memory[c][i] = tx_filter_memory[c][i + 1]; for (c = 0; c < Nc + 1; c++) { tx_filter_memory[c][NSYM - 1].real = 0.0; tx_filter_memory[c][NSYM - 1].imag = 0.0; } } /*---------------------------------------------------------------------------*\ FUNCTION....: fdm_upconvert() AUTHOR......: David Rowe DATE CREATED: 17/4/2012 Construct FDM signal by frequency shifting each filtered symbol stream. Returns complex signal so we can apply frequency offsets easily. \*---------------------------------------------------------------------------*/ void fdm_upconvert(COMP tx_fdm[], int Nc, COMP tx_baseband[NC + 1][M_FAC], COMP phase_tx[], COMP freq[], COMP *fbb_phase, COMP fbb_rect) { int i, c; COMP two = {2.0, 0.0}; float mag; for (i = 0; i < M_FAC; i++) { tx_fdm[i].real = 0.0; tx_fdm[i].imag = 0.0; } for (c = 0; c <= Nc; c++) for (i = 0; i < M_FAC; i++) { phase_tx[c] = cmult(phase_tx[c], freq[c]); tx_fdm[i] = cadd(tx_fdm[i], cmult(tx_baseband[c][i], phase_tx[c])); } /* shift whole thing up to carrier freq */ for (i = 0; i < M_FAC; i++) { *fbb_phase = cmult(*fbb_phase, fbb_rect); tx_fdm[i] = cmult(tx_fdm[i], *fbb_phase); } /* Scale such that total Carrier power C of real(tx_fdm) = Nc. This excludes the power of the pilot tone. We return the complex (single sided) signal to make frequency shifting for the purpose of testing easier */ for (i = 0; i < M_FAC; i++) tx_fdm[i] = cmult(two, tx_fdm[i]); /* normalise digital oscilators as the magnitude can drift over time */ for (c = 0; c < Nc + 1; c++) { mag = cabsolute(phase_tx[c]); phase_tx[c].real /= mag; phase_tx[c].imag /= mag; } mag = cabsolute(*fbb_phase); fbb_phase->real /= mag; fbb_phase->imag /= mag; } /*---------------------------------------------------------------------------*\ FUNCTION....: fdmdv_mod() AUTHOR......: David Rowe DATE CREATED: 26/4/2012 FDMDV modulator, take a frame of FDMDV_BITS_PER_FRAME bits and generates a frame of FDMDV_SAMPLES_PER_FRAME modulated symbols. Sync bit is returned to aid alignment of your next frame. The sync_bit value returned will be used for the _next_ frame. The output signal is complex to support single sided frequency shifting, for example when testing frequency offsets in channel simulation. \*---------------------------------------------------------------------------*/ void fdmdv_mod(struct FDMDV *fdmdv, COMP tx_fdm[], int tx_bits[], int *sync_bit) { COMP tx_symbols[NC + 1]; PROFILE_VAR(mod_start, tx_filter_and_upconvert_start); PROFILE_SAMPLE(mod_start); bits_to_dqpsk_symbols(tx_symbols, fdmdv->Nc, fdmdv->prev_tx_symbols, tx_bits, &fdmdv->tx_pilot_bit, fdmdv->old_qpsk_mapping); memcpy(fdmdv->prev_tx_symbols, tx_symbols, sizeof(COMP) * (fdmdv->Nc + 1)); PROFILE_SAMPLE_AND_LOG(tx_filter_and_upconvert_start, mod_start, " bits_to_dqpsk_symbols"); tx_filter_and_upconvert(tx_fdm, fdmdv->Nc, tx_symbols, fdmdv->tx_filter_memory, fdmdv->phase_tx, fdmdv->freq, &fdmdv->fbb_phase_tx, fdmdv->fbb_rect); PROFILE_SAMPLE_AND_LOG2(tx_filter_and_upconvert_start, " tx_filter_and_upconvert"); *sync_bit = fdmdv->tx_pilot_bit; } /*---------------------------------------------------------------------------*\ FUNCTION....: generate_pilot_fdm() AUTHOR......: David Rowe DATE CREATED: 19/4/2012 Generate M_FAC samples of DBPSK pilot signal for Freq offset estimation. \*---------------------------------------------------------------------------*/ void generate_pilot_fdm(COMP *pilot_fdm, int *bit, float *symbol, float *filter_mem, COMP *phase, COMP *freq) { int i, j, k; float tx_baseband[M_FAC]; /* +1 -1 +1 -1 DBPSK sync carrier, once filtered becomes (roughly) two spectral lines at +/- RS/2 */ if (*bit) *symbol = -*symbol; if (*bit) *bit = 0; else *bit = 1; /* filter DPSK symbol to create M_FAC baseband samples */ filter_mem[NFILTER - 1] = (sqrtf(2) / 2) * *symbol; for (i = 0; i < M_FAC; i++) { tx_baseband[i] = 0.0; for (j = M_FAC - 1, k = M_FAC - i - 1; j < NFILTER; j += M_FAC, k += M_FAC) tx_baseband[i] += M_FAC * filter_mem[j] * gt_alpha5_root[k]; } /* shift memory, inserting zeros at end */ for (i = 0; i < NFILTER - M_FAC; i++) filter_mem[i] = filter_mem[i + M_FAC]; for (i = NFILTER - M_FAC; i < NFILTER; i++) filter_mem[i] = 0.0; /* upconvert */ for (i = 0; i < M_FAC; i++) { *phase = cmult(*phase, *freq); pilot_fdm[i].real = sqrtf(2) * 2 * tx_baseband[i] * phase->real; pilot_fdm[i].imag = sqrtf(2) * 2 * tx_baseband[i] * phase->imag; } } /*---------------------------------------------------------------------------*\ FUNCTION....: generate_pilot_lut() AUTHOR......: David Rowe DATE CREATED: 19/4/2012 Generate a 4M sample vector of DBPSK pilot signal. As the pilot signal is periodic in 4M samples we can then use this vector as a look up table for pilot signal generation in the demod. \*---------------------------------------------------------------------------*/ void generate_pilot_lut(COMP pilot_lut[], COMP *pilot_freq) { int pilot_rx_bit = 0; float pilot_symbol = sqrtf(2.0); COMP pilot_phase = {1.0, 0.0}; float pilot_filter_mem[NFILTER]; COMP pilot[M_FAC]; int i, f; for (i = 0; i < NFILTER; i++) pilot_filter_mem[i] = 0.0; /* discard first 4 symbols as filter memory is filling, just keep last four symbols */ for (f = 0; f < 8; f++) { generate_pilot_fdm(pilot, &pilot_rx_bit, &pilot_symbol, pilot_filter_mem, &pilot_phase, pilot_freq); if (f >= 4) memcpy(&pilot_lut[M_FAC * (f - 4)], pilot, M_FAC * sizeof(COMP)); } // create complex conjugate since we need this and only this later on for (f = 0; f < 4 * M_FAC; f++) { pilot_lut[f] = cconj(pilot_lut[f]); } } /*---------------------------------------------------------------------------*\ FUNCTION....: lpf_peak_pick() AUTHOR......: David Rowe DATE CREATED: 20/4/2012 LPF and peak pick part of freq est, put in a function as we call it twice. \*---------------------------------------------------------------------------*/ void lpf_peak_pick(float *foff, float *max, COMP pilot_baseband[], COMP pilot_lpf[], codec2_fft_cfg fft_pilot_cfg, COMP S[], int nin, int do_fft) { int i, j, k; int mpilot; float mag, imax; int ix; float r; /* LPF cutoff 200Hz, so we can handle max +/- 200 Hz freq offset */ for (i = 0; i < NPILOTLPF - nin; i++) pilot_lpf[i] = pilot_lpf[nin + i]; for (i = NPILOTLPF - nin, j = NPILOTBASEBAND - nin; i < NPILOTLPF; i++, j++) { pilot_lpf[i].real = 0.0; pilot_lpf[i].imag = 0.0; // STM32F4 hand optimized, this alone makes it go done from 1.6 to 1.17ms // switching pilot_coeff to RAM (by removing const in pilot_coeff.h) would // save another 0.11 ms at the expense of NPILOTCOEFF * 4 bytes == 120 bytes // RAM if (NPILOTCOEFF % 5 == 0) { for (k = 0; k < NPILOTCOEFF; k += 5) { COMP i0 = fcmult(pilot_coeff[k], pilot_baseband[j - NPILOTCOEFF + 1 + k]); COMP i1 = fcmult(pilot_coeff[k + 1], pilot_baseband[j - NPILOTCOEFF + 1 + k + 1]); COMP i2 = fcmult(pilot_coeff[k + 2], pilot_baseband[j - NPILOTCOEFF + 1 + k + 2]); COMP i3 = fcmult(pilot_coeff[k + 3], pilot_baseband[j - NPILOTCOEFF + 1 + k + 3]); COMP i4 = fcmult(pilot_coeff[k + 4], pilot_baseband[j - NPILOTCOEFF + 1 + k + 4]); pilot_lpf[i] = cadd(cadd(cadd(cadd(cadd(pilot_lpf[i], i0), i1), i2), i3), i4); } } else { for (k = 0; k < NPILOTCOEFF; k++) { pilot_lpf[i] = cadd( pilot_lpf[i], fcmult(pilot_coeff[k], pilot_baseband[j - NPILOTCOEFF + 1 + k])); } } } /* We only need to do FFTs if we are out of sync. Making them optional saves CPU in sync, which is when we need to run the codec */ imax = 0.0; *foff = 0.0; for (i = 0; i < MPILOTFFT; i++) { S[i].real = 0.0; S[i].imag = 0.0; } if (do_fft) { /* decimate to improve DFT resolution, window and DFT */ mpilot = FS / (2 * 200); /* calc decimation rate given new sample rate is twice LPF freq */ for (i = 0, j = 0; i < NPILOTLPF; i += mpilot, j++) { S[j] = fcmult(hanning[i], pilot_lpf[i]); } codec2_fft_inplace(fft_pilot_cfg, S); /* peak pick and convert to Hz */ imax = 0.0; ix = 0; for (i = 0; i < MPILOTFFT; i++) { mag = S[i].real * S[i].real + S[i].imag * S[i].imag; if (mag > imax) { imax = mag; ix = i; } } r = 2.0 * 200.0 / MPILOTFFT; /* maps FFT bin to frequency in Hz */ if (ix >= MPILOTFFT / 2) *foff = (ix - MPILOTFFT) * r; else *foff = (ix)*r; } *max = imax; } /*---------------------------------------------------------------------------*\ FUNCTION....: rx_est_freq_offset() AUTHOR......: David Rowe DATE CREATED: 19/4/2012 Estimate frequency offset of FDM signal using BPSK pilot. Note that this algorithm is quite sensitive to pilot tone level wrt other carriers, so test variations to the pilot amplitude carefully. \*---------------------------------------------------------------------------*/ float rx_est_freq_offset(struct FDMDV *f, COMP rx_fdm[], int nin, int do_fft) { int i; #ifndef FDV_ARM_MATH int j; #endif COMP pilot[M_FAC + M_FAC / P]; COMP prev_pilot[M_FAC + M_FAC / P]; float foff, foff1, foff2; float max1, max2; assert(nin <= M_FAC + M_FAC / P); /* get pilot samples used for correlation/down conversion of rx signal */ for (i = 0; i < nin; i++) { pilot[i] = f->pilot_lut[f->pilot_lut_index]; f->pilot_lut_index++; if (f->pilot_lut_index >= 4 * M_FAC) f->pilot_lut_index = 0; prev_pilot[i] = f->pilot_lut[f->prev_pilot_lut_index]; f->prev_pilot_lut_index++; if (f->prev_pilot_lut_index >= 4 * M_FAC) f->prev_pilot_lut_index = 0; } /* Down convert latest M_FAC samples of pilot by multiplying by ideal BPSK pilot signal we have generated locally. The peak of the resulting signal is sensitive to the time shift between the received and local version of the pilot, so we do it twice at different time shifts and choose the maximum. */ for (i = 0; i < NPILOTBASEBAND - nin; i++) { f->pilot_baseband1[i] = f->pilot_baseband1[i + nin]; f->pilot_baseband2[i] = f->pilot_baseband2[i + nin]; } #ifndef FDV_ARM_MATH for (i = 0, j = NPILOTBASEBAND - nin; i < nin; i++, j++) { f->pilot_baseband1[j] = cmult(rx_fdm[i], pilot[i]); f->pilot_baseband2[j] = cmult(rx_fdm[i], prev_pilot[i]); } #else // TODO: Maybe a handwritten mult taking advantage of rx_fdm[0] being // used twice would be faster but this is for sure faster than // the implementation above in any case. arm_cmplx_mult_cmplx_f32(&rx_fdm[0].real, &pilot[0].real, &f->pilot_baseband1[NPILOTBASEBAND - nin].real, nin); arm_cmplx_mult_cmplx_f32(&rx_fdm[0].real, &prev_pilot[0].real, &f->pilot_baseband2[NPILOTBASEBAND - nin].real, nin); #endif lpf_peak_pick(&foff1, &max1, f->pilot_baseband1, f->pilot_lpf1, f->fft_pilot_cfg, f->S1, nin, do_fft); lpf_peak_pick(&foff2, &max2, f->pilot_baseband2, f->pilot_lpf2, f->fft_pilot_cfg, f->S2, nin, do_fft); if (max1 > max2) foff = foff1; else foff = foff2; return foff; } /*---------------------------------------------------------------------------*\ FUNCTION....: fdmdv_freq_shift() AUTHOR......: David Rowe DATE CREATED: 26/4/2012 Frequency shift modem signal. The use of complex input and output allows single sided frequency shifting (no images). \*---------------------------------------------------------------------------*/ void fdmdv_freq_shift(COMP rx_fdm_fcorr[], COMP rx_fdm[], float foff, COMP *foff_phase_rect, int nin) { COMP foff_rect; float mag; int i; foff_rect.real = cosf(2.0 * PI * foff / FS); foff_rect.imag = sinf(2.0 * PI * foff / FS); for (i = 0; i < nin; i++) { *foff_phase_rect = cmult(*foff_phase_rect, foff_rect); rx_fdm_fcorr[i] = cmult(rx_fdm[i], *foff_phase_rect); } /* normalise digital oscillator as the magnitude can drift over time */ mag = cabsolute(*foff_phase_rect); foff_phase_rect->real /= mag; foff_phase_rect->imag /= mag; } /*---------------------------------------------------------------------------*\ FUNCTION....: fdm_downconvert AUTHOR......: David Rowe DATE CREATED: 22/4/2012 Frequency shift each modem carrier down to Nc+1 baseband signals. \*---------------------------------------------------------------------------*/ void fdm_downconvert(COMP rx_baseband[NC + 1][M_FAC + M_FAC / P], int Nc, COMP rx_fdm[], COMP phase_rx[], COMP freq[], int nin) { int i, c; float mag; /* maximum number of input samples to demod */ assert(nin <= (M_FAC + M_FAC / P)); /* downconvert */ for (c = 0; c < Nc + 1; c++) for (i = 0; i < nin; i++) { phase_rx[c] = cmult(phase_rx[c], freq[c]); rx_baseband[c][i] = cmult(rx_fdm[i], cconj(phase_rx[c])); } /* normalise digital oscilators as the magnitude can drift over time */ for (c = 0; c < Nc + 1; c++) { mag = cabsolute(phase_rx[c]); phase_rx[c].real /= mag; phase_rx[c].imag /= mag; } } /*---------------------------------------------------------------------------*\ FUNCTION....: rx_filter() AUTHOR......: David Rowe DATE CREATED: 22/4/2012 Receive filter each baseband signal at oversample rate P. Filtering at rate P lowers CPU compared to rate M_FAC. Depending on the number of input samples to the demod nin, we produce P-1, P (usually), or P+1 filtered samples at rate P. nin is occasionally adjusted to compensate for timing slips due to different tx and rx sample clocks. \*---------------------------------------------------------------------------*/ void rx_filter(COMP rx_filt[][P + 1], int Nc, COMP rx_baseband[][M_FAC + M_FAC / P], COMP rx_filter_memory[][NFILTER], int nin) { int c, i, j, k, l; int n = M_FAC / P; /* rx filter each symbol, generate P filtered output samples for each symbol. Note we keep filter memory at rate M_FAC, it's just the filter output at rate P */ for (i = 0, j = 0; i < nin; i += n, j++) { /* latest input sample */ for (c = 0; c < Nc + 1; c++) for (k = NFILTER - n, l = i; k < NFILTER; k++, l++) rx_filter_memory[c][k] = rx_baseband[c][l]; /* convolution (filtering) */ for (c = 0; c < Nc + 1; c++) { rx_filt[c][j].real = 0.0; rx_filt[c][j].imag = 0.0; for (k = 0; k < NFILTER; k++) rx_filt[c][j] = cadd(rx_filt[c][j], fcmult(gt_alpha5_root[k], rx_filter_memory[c][k])); } /* make room for next input sample */ for (c = 0; c < Nc + 1; c++) for (k = 0, l = n; k < NFILTER - n; k++, l++) rx_filter_memory[c][k] = rx_filter_memory[c][l]; } assert(j <= (P + 1)); /* check for any over runs */ } /*---------------------------------------------------------------------------*\ FUNCTION....: rxdec_filter() AUTHOR......: David Rowe DATE CREATED: 31 July 2014 +/- 1000Hz low pass filter, allows us to filter at rate Q to save CPU load. \*---------------------------------------------------------------------------*/ void rxdec_filter(COMP rx_fdm_filter[], COMP rx_fdm[], COMP rxdec_lpf_mem[], int nin) { int i, j, k, st; for (i = 0; i < NRXDECMEM - nin; i++) rxdec_lpf_mem[i] = rxdec_lpf_mem[i + nin]; for (i = 0, j = NRXDECMEM - nin; i < nin; i++, j++) rxdec_lpf_mem[j] = rx_fdm[i]; st = NRXDECMEM - nin - NRXDEC + 1; for (i = 0; i < nin; i++) { rx_fdm_filter[i].real = 0.0; for (k = 0; k < NRXDEC; k++) rx_fdm_filter[i].real += rxdec_lpf_mem[st + i + k].real * rxdec_coeff[k]; rx_fdm_filter[i].imag = 0.0; for (k = 0; k < NRXDEC; k++) rx_fdm_filter[i].imag += rxdec_lpf_mem[st + i + k].imag * rxdec_coeff[k]; } } /*---------------------------------------------------------------------------*\ FUNCTION....: fir_filter2() AUTHOR......: Danilo Beuche DATE CREATED: August 2016 This version submitted by Danilo for the STM32F4 platform. The idea is to avoid reading the same value from the STM32F4 "slow" flash twice. 2-4ms of savings per frame were measured by Danilo and the mcHF team. \*---------------------------------------------------------------------------*/ static void fir_filter2(float acc[], float mem[], const float coeff[], const unsigned int dec_rate) { acc[0] = 0.0; acc[1] = 0.0; float c1, c2, c3, c4, c5, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, a1, a2; float *inpCmplx = &mem[0]; const float *coeffPtr = &coeff[0]; int m; // this manual loop unrolling gives significant boost on STM32 machines // reduction from avg 3.2ms to 2.4ms in tfdmv.c test // 5 was the sweet spot, with 6 it took longer again // and should not harm other, more powerful machines // no significant difference in output, only rounding (which was to be // expected) // TODO: try to move coeffs to RAM and check if it makes a significant // difference if (NFILTER % (dec_rate * 5) == 0) { for (m = 0; m < NFILTER; m += dec_rate * 5) { c1 = *coeffPtr; m1 = inpCmplx[0]; m2 = inpCmplx[1]; inpCmplx += dec_rate * 2; coeffPtr += dec_rate; c2 = *coeffPtr; m3 = inpCmplx[0]; m4 = inpCmplx[1]; inpCmplx += dec_rate * 2; coeffPtr += dec_rate; c3 = *coeffPtr; m5 = inpCmplx[0]; m6 = inpCmplx[1]; inpCmplx += dec_rate * 2; coeffPtr += dec_rate; c4 = *coeffPtr; m7 = inpCmplx[0]; m8 = inpCmplx[1]; inpCmplx += dec_rate * 2; coeffPtr += dec_rate; c5 = *coeffPtr; m9 = inpCmplx[0]; m10 = inpCmplx[1]; inpCmplx += dec_rate * 2; coeffPtr += dec_rate; a1 = c1 * m1 + c2 * m3 + c3 * m5 + c4 * m7 + c5 * m9; a2 = c1 * m2 + c2 * m4 + c3 * m6 + c4 * m8 + c5 * m10; acc[0] += a1; acc[1] += a2; } } else { for (m = 0; m < NFILTER; m += dec_rate) { c1 = *coeffPtr; m1 = inpCmplx[0]; m2 = inpCmplx[1]; inpCmplx += dec_rate * 2; coeffPtr += dec_rate; a1 = c1 * m1; a2 = c1 * m2; acc[0] += a1; acc[1] += a2; } } acc[0] *= dec_rate; acc[1] *= dec_rate; } /*---------------------------------------------------------------------------*\ FUNCTION....: down_convert_and_rx_filter() AUTHOR......: David Rowe DATE CREATED: 30/6/2014 Combined down convert and rx filter, more memory efficient but less intuitive design. Depending on the number of input samples to the demod nin, we produce P-1, P (usually), or P+1 filtered samples at rate P. nin is occasionally adjusted to compensate for timing slips due to different tx and rx sample clocks. \*---------------------------------------------------------------------------*/ /* TODO: [ ] windback phase calculated once at init time */ void down_convert_and_rx_filter(COMP rx_filt[NC + 1][P + 1], int Nc, COMP rx_fdm[], COMP rx_fdm_mem[], COMP phase_rx[], COMP freq[], float freq_pol[], int nin, int dec_rate) { int i, k, c, st, Nval; float windback_phase, mag; COMP windback_phase_rect; COMP rx_baseband[NRX_FDM_MEM]; COMP f_rect; // PROFILE_VAR(windback_start, downconvert_start, filter_start); /* update memory of rx_fdm */ #if 0 for(i=0; i nin |--------------------------|---------| 1 | phase_rx(c) This means winding phase(c) back from this point to ensure phase continuity. */ // PROFILE_SAMPLE(windback_start); windback_phase = -freq_pol[c] * NFILTER; windback_phase_rect.real = cosf(windback_phase); windback_phase_rect.imag = sinf(windback_phase); phase_rx[c] = cmult(phase_rx[c], windback_phase_rect); // PROFILE_SAMPLE_AND_LOG(downconvert_start, windback_start, " windback"); /* down convert all samples in buffer */ st = NRX_FDM_MEM - 1; /* end of buffer */ st -= nin - 1; /* first new sample */ st -= NFILTER; /* first sample used in filtering */ /* freq shift per dec_rate step is dec_rate times original shift */ f_rect = freq[c]; for (i = 0; i < dec_rate - 1; i++) f_rect = cmult(f_rect, freq[c]); for (i = st; i < NRX_FDM_MEM; i += dec_rate) { phase_rx[c] = cmult(phase_rx[c], f_rect); rx_baseband[i] = cmult(rx_fdm_mem[i], cconj(phase_rx[c])); } // PROFILE_SAMPLE_AND_LOG(filter_start, downconvert_start, " downconvert"); /* now we can filter this carrier's P symbols */ Nval = M_FAC / P; for (i = 0, k = 0; i < nin; i += Nval, k++) { #ifdef ORIG rx_filt[c][k].real = 0.0; rx_filt[c][k].imag = 0.0; for (m = 0; m < NFILTER; m++) rx_filt[c][k] = cadd( rx_filt[c][k], fcmult(gt_alpha5_root[m], rx_baseband[st + i + m])); #else // rx_filt[c][k].real = fir_filter(&rx_baseband[st+i].real, // (float*)gt_alpha5_root, dec_rate); rx_filt[c][k].imag = // fir_filter(&rx_baseband[st+i].imag, (float*)gt_alpha5_root, dec_rate); fir_filter2(&rx_filt[c][k].real, &rx_baseband[st + i].real, gt_alpha5_root, dec_rate); #endif } // PROFILE_SAMPLE_AND_LOG2(filter_start, " filter"); /* normalise digital oscilators as the magnitude can drift over time */ mag = cabsolute(phase_rx[c]); phase_rx[c].real /= mag; phase_rx[c].imag /= mag; // printf("phase_rx[%d] = %f %f\n", c, phase_rx[c].real, phase_rx[c].imag); } } /*---------------------------------------------------------------------------*\ FUNCTION....: rx_est_timing() AUTHOR......: David Rowe DATE CREATED: 23/4/2012 Estimate optimum timing offset, re-filter receive symbols at optimum timing estimate. \*---------------------------------------------------------------------------*/ float rx_est_timing(COMP rx_symbols[], int Nc, COMP rx_filt[][P + 1], COMP rx_filter_mem_timing[][NT * P], float env[], int nin, int m) { int c, i, j; int adjust; COMP x, phase, freq; float rx_timing, fract, norm_rx_timing; int low_sample, high_sample; /* nin adjust -------------------------------- 120 -1 (one less rate P sample) 160 0 (nominal) 200 1 (one more rate P sample) */ adjust = P - nin * P / m; /* update buffer of NT rate P filtered symbols */ for (c = 0; c < Nc + 1; c++) for (i = 0, j = P - adjust; i < (NT - 1) * P + adjust; i++, j++) rx_filter_mem_timing[c][i] = rx_filter_mem_timing[c][j]; for (c = 0; c < Nc + 1; c++) for (i = (NT - 1) * P + adjust, j = 0; i < NT * P; i++, j++) rx_filter_mem_timing[c][i] = rx_filt[c][j]; /* sum envelopes of all carriers */ for (i = 0; i < NT * P; i++) { env[i] = 0.0; for (c = 0; c < Nc + 1; c++) env[i] += cabsolute(rx_filter_mem_timing[c][i]); } /* The envelope has a frequency component at the symbol rate. The phase of this frequency component indicates the timing. So work out single DFT at frequency 2*pi/P */ x.real = 0.0; x.imag = 0.0; freq.real = cosf(2 * PI / P); freq.imag = sinf(2 * PI / P); phase.real = 1.0; phase.imag = 0.0; for (i = 0; i < NT * P; i++) { x = cadd(x, fcmult(env[i], phase)); phase = cmult(phase, freq); } /* Map phase to estimated optimum timing instant at rate P. The P/4 part was adjusted by experiment, I know not why.... */ norm_rx_timing = atan2f(x.imag, x.real) / (2 * PI); assert(fabsf(norm_rx_timing) < 1.0); rx_timing = norm_rx_timing * P + P / 4; if (rx_timing > P) rx_timing -= P; if (rx_timing < -P) rx_timing += P; /* rx_filter_mem_timing contains Nt*P samples (Nt symbols at rate P), where Nt is odd. Lets use linear interpolation to resample in the centre of the timing estimation window .*/ rx_timing += floorf(NT / 2.0) * P; low_sample = floorf(rx_timing); fract = rx_timing - low_sample; high_sample = ceilf(rx_timing); // printf("rx_timing: %f low_sample: %d high_sample: %d fract: %f\n", // rx_timing, low_sample, high_sample, fract); for (c = 0; c < Nc + 1; c++) { rx_symbols[c] = cadd(fcmult(1.0 - fract, rx_filter_mem_timing[c][low_sample - 1]), fcmult(fract, rx_filter_mem_timing[c][high_sample - 1])); // rx_symbols[c] = rx_filter_mem_timing[c][high_sample]; } /* This value will be +/- half a symbol so will wrap around at +/- M/2 or +/- 80 samples with M=160 */ return norm_rx_timing * m; } /*---------------------------------------------------------------------------*\ FUNCTION....: qpsk_to_bits() AUTHOR......: David Rowe DATE CREATED: 24/4/2012 Convert DQPSK symbols back to an array of bits, extracts sync bit from DBPSK pilot, and also uses pilot to estimate fine frequency error. \*---------------------------------------------------------------------------*/ float qpsk_to_bits(int rx_bits[], int *sync_bit, int Nc, COMP phase_difference[], COMP prev_rx_symbols[], COMP rx_symbols[], int old_qpsk_mapping) { int c; COMP d; int msb = 0, lsb = 0; float ferr, norm; /* Extra 45 degree clockwise lets us use real and imag axis as decision boundaries. "norm" makes sure the phase subtraction from the previous symbol doesn't affect the amplitude, which leads to sensible scatter plots */ for (c = 0; c < Nc; c++) { norm = 1.0 / (cabsolute(prev_rx_symbols[c]) + 1E-6); phase_difference[c] = cmult( cmult(rx_symbols[c], fcmult(norm, cconj(prev_rx_symbols[c]))), pi_on_4); } /* map (Nc,1) DQPSK symbols back into an (1,Nc*Nb) array of bits */ for (c = 0; c < Nc; c++) { d = phase_difference[c]; if ((d.real >= 0) && (d.imag >= 0)) { msb = 0; lsb = 0; } if ((d.real < 0) && (d.imag >= 0)) { msb = 0; lsb = 1; } if ((d.real < 0) && (d.imag < 0)) { if (old_qpsk_mapping) { msb = 1; lsb = 0; } else { msb = 1; lsb = 1; } } if ((d.real >= 0) && (d.imag < 0)) { if (old_qpsk_mapping) { msb = 1; lsb = 1; } else { msb = 1; lsb = 0; } } rx_bits[2 * c] = msb; rx_bits[2 * c + 1] = lsb; } /* Extract DBPSK encoded Sync bit and fine freq offset estimate */ norm = 1.0 / (cabsolute(prev_rx_symbols[Nc]) + 1E-6); phase_difference[Nc] = cmult(rx_symbols[Nc], fcmult(norm, cconj(prev_rx_symbols[Nc]))); if (phase_difference[Nc].real < 0) { *sync_bit = 1; ferr = phase_difference[Nc].imag * norm; /* make f_err magnitude insensitive */ } else { *sync_bit = 0; ferr = -phase_difference[Nc].imag * norm; } /* pilot carrier gets an extra pi/4 rotation to make it consistent with other carriers, as we need it for snr_update and scatter diagram */ phase_difference[Nc] = cmult(phase_difference[Nc], pi_on_4); return ferr; } /*---------------------------------------------------------------------------*\ FUNCTION....: snr_update() AUTHOR......: David Rowe DATE CREATED: 17 May 2012 Given phase differences update estimates of signal and noise levels. \*---------------------------------------------------------------------------*/ void snr_update(float sig_est[], float noise_est[], int Nc, COMP phase_difference[]) { float s[NC + 1]; COMP refl_symbols[NC + 1]; float n[NC + 1]; int c; /* mag of each symbol is distance from origin, this gives us a vector of mags, one for each carrier. */ for (c = 0; c < Nc + 1; c++) s[c] = cabsolute(phase_difference[c]); /* signal mag estimate for each carrier is a smoothed version of instantaneous magntitude, this gives us a vector of smoothed mag estimates, one for each carrier. */ for (c = 0; c < Nc + 1; c++) sig_est[c] = SNR_COEFF * sig_est[c] + (1.0 - SNR_COEFF) * s[c]; /* noise mag estimate is distance of current symbol from average location of that symbol. We reflect all symbols into the first quadrant for convenience. */ for (c = 0; c < Nc + 1; c++) { refl_symbols[c].real = fabsf(phase_difference[c].real); refl_symbols[c].imag = fabsf(phase_difference[c].imag); n[c] = cabsolute(cadd(fcmult(sig_est[c], pi_on_4), cneg(refl_symbols[c]))); } /* noise mag estimate for each carrier is a smoothed version of instantaneous noise mag, this gives us a vector of smoothed noise power estimates, one for each carrier. */ for (c = 0; c < Nc + 1; c++) noise_est[c] = SNR_COEFF * noise_est[c] + (1 - SNR_COEFF) * n[c]; } // returns number of shorts in error_pattern[], one short per error int fdmdv_error_pattern_size(struct FDMDV *f) { return f->ntest_bits; } /*---------------------------------------------------------------------------*\ FUNCTION....: fdmdv_put_test_bits() AUTHOR......: David Rowe DATE CREATED: 24/4/2012 Accepts nbits from rx and attempts to sync with test_bits sequence. If sync OK measures bit errors. \*---------------------------------------------------------------------------*/ void fdmdv_put_test_bits(struct FDMDV *f, int *sync, short error_pattern[], int *bit_errors, int *ntest_bits, int rx_bits[]) { int i, j; float ber; int bits_per_frame = fdmdv_bits_per_frame(f); /* Append to our memory */ for (i = 0, j = bits_per_frame; i < f->ntest_bits - bits_per_frame; i++, j++) f->rx_test_bits_mem[i] = f->rx_test_bits_mem[j]; for (i = f->ntest_bits - bits_per_frame, j = 0; i < f->ntest_bits; i++, j++) f->rx_test_bits_mem[i] = rx_bits[j]; /* see how many bit errors we get when checked against test sequence */ *bit_errors = 0; for (i = 0; i < f->ntest_bits; i++) { error_pattern[i] = test_bits[i] ^ f->rx_test_bits_mem[i]; *bit_errors += error_pattern[i]; // printf("%d %d %d %d\n", i, test_bits[i], f->rx_test_bits_mem[i], // test_bits[i] ^ f->rx_test_bits_mem[i]); } /* if less than a thresh we are aligned and in sync with test sequence */ ber = (float)*bit_errors / f->ntest_bits; *sync = 0; if (ber < 0.2) *sync = 1; *ntest_bits = f->ntest_bits; } /*---------------------------------------------------------------------------*\ FUNCTION....: freq_state(() AUTHOR......: David Rowe DATE CREATED: 24/4/2012 Freq offset state machine. Moves between coarse and fine states based on BPSK pilot sequence. Freq offset estimator occasionally makes mistakes when used continuously. So we use it until we have acquired the BPSK pilot, then switch to a more robust "fine" tracking algorithm. If we lose sync we switch back to coarse mode for fast re-acquisition of large frequency offsets. The sync state is also useful for higher layers to determine when there is valid FDMDV data for decoding. We want to reliably and quickly get into sync, stay in sync even on fading channels, and fall out of sync quickly if tx stops or it's a false sync. In multipath fading channels the BPSK sync carrier may be pushed down in the noise, despite other carriers being at full strength. We want to avoid loss of sync in these cases. \*---------------------------------------------------------------------------*/ int freq_state(int *reliable_sync_bit, int sync_bit, int *state, int *timer, int *sync_mem) { int next_state, sync, unique_word, i, corr; /* look for 6 symbols (120ms) 101010 of sync sequence */ unique_word = 0; for (i = 0; i < NSYNC_MEM - 1; i++) sync_mem[i] = sync_mem[i + 1]; sync_mem[i] = 1 - 2 * sync_bit; corr = 0; for (i = 0; i < NSYNC_MEM; i++) corr += sync_mem[i] * sync_uw[i]; if (abs(corr) == NSYNC_MEM) unique_word = 1; *reliable_sync_bit = (corr == NSYNC_MEM); /* iterate state machine */ next_state = *state; switch (*state) { case 0: if (unique_word) { next_state = 1; *timer = 0; } break; case 1: /* tentative sync state */ if (unique_word) { (*timer)++; if (*timer == 25) /* sync has been good for 500ms */ next_state = 2; } else next_state = 0; /* quickly fall out of sync */ break; case 2: /* good sync state */ if (unique_word == 0) { *timer = 0; next_state = 3; } break; case 3: /* tentative bad state, but could be a fade */ if (unique_word) next_state = 2; else { (*timer)++; if (*timer == 50) /* wait for 1000ms in case sync comes back */ next_state = 0; } break; } // printf("state: %d next_state: %d uw: %d timer: %d\n", *state, next_state, // unique_word, *timer); *state = next_state; if (*state) sync = 1; else sync = 0; return sync; } /*---------------------------------------------------------------------------*\ FUNCTION....: fdmdv_demod() AUTHOR......: David Rowe DATE CREATED: 26/4/2012 FDMDV demodulator, take an array of FDMDV_SAMPLES_PER_FRAME modulated samples, returns an array of FDMDV_BITS_PER_FRAME bits, plus the sync bit. The input signal is complex to support single sided frequency shifting before the demod input (e.g. fdmdv2 click to tune feature). The number of input samples nin will normally be M_FAC == FDMDV_SAMPLES_PER_FRAME. However to adjust for differences in transmit and receive sample clocks nin will occasionally be M_FAC-M_FAC/P, or M_FAC+M_FAC/P. \*---------------------------------------------------------------------------*/ void fdmdv_demod(struct FDMDV *fdmdv, int rx_bits[], int *reliable_sync_bit, COMP rx_fdm[], int *nin) { float foff_coarse, foff_fine; COMP rx_fdm_fcorr[M_FAC + M_FAC / P]; COMP rx_fdm_filter[M_FAC + M_FAC / P]; COMP rx_fdm_bb[M_FAC + M_FAC / P]; COMP rx_filt[NC + 1][P + 1]; COMP rx_symbols[NC + 1]; float env[NT * P]; int sync_bit; PROFILE_VAR(demod_start, fdmdv_freq_shift_start, down_convert_and_rx_filter_start); PROFILE_VAR(rx_est_timing_start, qpsk_to_bits_start, snr_update_start, freq_state_start); /* shift down to complex baseband */ fdmdv_freq_shift(rx_fdm_bb, rx_fdm, -FDMDV_FCENTRE, &fdmdv->fbb_phase_rx, *nin); /* freq offset estimation and correction */ PROFILE_SAMPLE(demod_start); foff_coarse = rx_est_freq_offset(fdmdv, rx_fdm_bb, *nin, !fdmdv->sync); PROFILE_SAMPLE_AND_LOG(fdmdv_freq_shift_start, demod_start, " rx_est_freq_offset"); if (fdmdv->sync == 0) fdmdv->foff = foff_coarse; fdmdv_freq_shift(rx_fdm_fcorr, rx_fdm_bb, -fdmdv->foff, &fdmdv->foff_phase_rect, *nin); PROFILE_SAMPLE_AND_LOG(down_convert_and_rx_filter_start, fdmdv_freq_shift_start, " fdmdv_freq_shift"); /* baseband processing */ rxdec_filter(rx_fdm_filter, rx_fdm_fcorr, fdmdv->rxdec_lpf_mem, *nin); down_convert_and_rx_filter(rx_filt, fdmdv->Nc, rx_fdm_filter, fdmdv->rx_fdm_mem, fdmdv->phase_rx, fdmdv->freq, fdmdv->freq_pol, *nin, M_FAC / Q); PROFILE_SAMPLE_AND_LOG(rx_est_timing_start, down_convert_and_rx_filter_start, " down_convert_and_rx_filter"); fdmdv->rx_timing = rx_est_timing(rx_symbols, fdmdv->Nc, rx_filt, fdmdv->rx_filter_mem_timing, env, *nin, M_FAC); PROFILE_SAMPLE_AND_LOG(qpsk_to_bits_start, rx_est_timing_start, " rx_est_timing"); /* Adjust number of input samples to keep timing within bounds */ *nin = M_FAC; if (fdmdv->rx_timing > M_FAC / P) *nin += M_FAC / P; if (fdmdv->rx_timing < -M_FAC / P) *nin -= M_FAC / P; foff_fine = qpsk_to_bits(rx_bits, &sync_bit, fdmdv->Nc, fdmdv->phase_difference, fdmdv->prev_rx_symbols, rx_symbols, fdmdv->old_qpsk_mapping); memcpy(fdmdv->prev_rx_symbols, rx_symbols, sizeof(COMP) * (fdmdv->Nc + 1)); PROFILE_SAMPLE_AND_LOG(snr_update_start, qpsk_to_bits_start, " qpsk_to_bits"); snr_update(fdmdv->sig_est, fdmdv->noise_est, fdmdv->Nc, fdmdv->phase_difference); PROFILE_SAMPLE_AND_LOG(freq_state_start, snr_update_start, " snr_update"); /* freq offset estimation state machine */ fdmdv->sync = freq_state(reliable_sync_bit, sync_bit, &fdmdv->fest_state, &fdmdv->timer, fdmdv->sync_mem); PROFILE_SAMPLE_AND_LOG2(freq_state_start, " freq_state"); fdmdv->foff -= TRACK_COEFF * foff_fine; } /*---------------------------------------------------------------------------*\ FUNCTION....: calc_snr() AUTHOR......: David Rowe DATE CREATED: 17 May 2012 Calculate current SNR estimate (3000Hz noise BW) \*---------------------------------------------------------------------------*/ float calc_snr(int Nc, float sig_est[], float noise_est[]) { float S, SdB; float mean, N50, N50dB, N3000dB; float snr_dB; int c; S = 0.0; for (c = 0; c < Nc + 1; c++) { S += sig_est[c] * sig_est[c]; } SdB = 10.0 * log10f(S + 1E-12); /* Average noise mag across all carriers and square to get an average noise power. This is an estimate of the noise power in Rs = 50Hz of BW (note for raised root cosine filters Rs is the noise BW of the filter) */ mean = 0.0; for (c = 0; c < Nc + 1; c++) mean += noise_est[c]; mean /= (Nc + 1); N50 = mean * mean; N50dB = 10.0 * log10f(N50 + 1E-12); /* Now multiply by (3000 Hz)/(50 Hz) to find the total noise power in 3000 Hz */ N3000dB = N50dB + 10.0 * log10f(3000.0 / RS); snr_dB = SdB - N3000dB; return snr_dB; } /*---------------------------------------------------------------------------*\ FUNCTION....: fdmdv_get_demod_stats() AUTHOR......: David Rowe DATE CREATED: 1 May 2012 Fills stats structure with a bunch of demod information. \*---------------------------------------------------------------------------*/ void fdmdv_get_demod_stats(struct FDMDV *fdmdv, struct MODEM_STATS *stats) { assert(fdmdv->Nc <= MODEM_STATS_NC_MAX); stats->Nc = fdmdv->Nc; stats->snr_est = calc_snr(fdmdv->Nc, fdmdv->sig_est, fdmdv->noise_est); stats->sync = fdmdv->sync; stats->foff = fdmdv->foff; stats->rx_timing = fdmdv->rx_timing; stats->clock_offset = 0.0; /* TODO - implement clock offset estimation */ #ifndef __EMBEDDED__ stats->nr = 1; for (int c = 0; c < fdmdv->Nc + 1; c++) { stats->rx_symbols[0][c] = fdmdv->phase_difference[c]; } #endif } /*---------------------------------------------------------------------------*\ FUNCTION....: fdmdv_8_to_16() AUTHOR......: David Rowe DATE CREATED: 9 May 2012 Changes the sample rate of a signal from 8 to 16 kHz. Support function for SM1000. \*---------------------------------------------------------------------------*/ void fdmdv_8_to_16(float out16k[], float in8k[], int n8k) { int i, k, l; float acc; /* this version unrolled for specific FDMDV_OS */ assert(FDMDV_OS == 2); for (i = 0; i < n8k; i++) { acc = 0.0; for (k = 0, l = 0; k < FDMDV_OS_TAPS_16K; k += FDMDV_OS, l++) acc += fdmdv_os_filter[k] * in8k[i - l]; out16k[i * FDMDV_OS] = FDMDV_OS * acc; acc = 0.0; for (k = 1, l = 0; k < FDMDV_OS_TAPS_16K; k += FDMDV_OS, l++) acc += fdmdv_os_filter[k] * in8k[i - l]; out16k[i * FDMDV_OS + 1] = FDMDV_OS * acc; } /* update filter memory */ for (i = -(FDMDV_OS_TAPS_8K); i < 0; i++) in8k[i] = in8k[i + n8k]; } void fdmdv_8_to_16_short(short out16k[], short in8k[], int n8k) { int i, k, l; float acc; /* this version unrolled for specific FDMDV_OS */ assert(FDMDV_OS == 2); for (i = 0; i < n8k; i++) { acc = 0.0; for (k = 0, l = 0; k < FDMDV_OS_TAPS_16K; k += FDMDV_OS, l++) acc += fdmdv_os_filter[k] * (float)in8k[i - l]; out16k[i * FDMDV_OS] = FDMDV_OS * acc; acc = 0.0; for (k = 1, l = 0; k < FDMDV_OS_TAPS_16K; k += FDMDV_OS, l++) acc += fdmdv_os_filter[k] * (float)in8k[i - l]; out16k[i * FDMDV_OS + 1] = FDMDV_OS * acc; } /* update filter memory */ for (i = -(FDMDV_OS_TAPS_8K); i < 0; i++) in8k[i] = in8k[i + n8k]; } /*---------------------------------------------------------------------------*\ FUNCTION....: fdmdv_16_to_8() AUTHOR......: David Rowe DATE CREATED: 9 May 2012 Changes the sample rate of a signal from 16 to 8 kHz. n is the number of samples at the 8 kHz rate, there are FDMDV_OS*n samples at the 16 kHz rate. As above however a memory of FDMDV_OS_TAPS samples is reqd for in16k[] (see t16_8.c unit test as example). Low pass filter the 16 kHz signal at 4 kHz using the same filter as the upsampler, then just output every FDMDV_OS-th filtered sample. \*---------------------------------------------------------------------------*/ void fdmdv_16_to_8(float out8k[], float in16k[], int n) { float acc; int i, j, k; for (i = 0, k = 0; k < n; i += FDMDV_OS, k++) { acc = 0.0; for (j = 0; j < FDMDV_OS_TAPS_16K; j++) acc += fdmdv_os_filter[j] * in16k[i - j]; out8k[k] = acc; } /* update filter memory */ for (i = -FDMDV_OS_TAPS_16K; i < 0; i++) in16k[i] = in16k[i + n * FDMDV_OS]; } void fdmdv_16_to_8_short(short out8k[], short in16k[], int n) { float acc; int i, j, k; for (i = 0, k = 0; k < n; i += FDMDV_OS, k++) { acc = 0.0; for (j = 0; j < FDMDV_OS_TAPS_16K; j++) acc += fdmdv_os_filter[j] * (float)in16k[i - j]; out8k[k] = acc; } /* update filter memory */ for (i = -FDMDV_OS_TAPS_16K; i < 0; i++) in16k[i] = in16k[i + n * FDMDV_OS]; } /*---------------------------------------------------------------------------*\ FUNCTION....: fdmdv_8_to_48() AUTHOR......: David Rowe DATE CREATED: 9 May 2012 Changes the sample rate of a signal from 8 to 48 kHz. n is the number of samples at the 8 kHz rate, there are FDMDV_OS*n samples at the 48 kHz rate. A memory of FDMDV_OS_TAPS_48/FDMDV_OS samples is reqd for in8k[] (see t48_8.c unit test as example). \*---------------------------------------------------------------------------*/ void fdmdv_8_to_48(float out48k[], float in8k[], int n) { int i, j, k, l; for (i = 0; i < n; i++) { for (j = 0; j < FDMDV_OS_48; j++) { out48k[i * FDMDV_OS_48 + j] = 0.0; for (k = 0, l = 0; k < FDMDV_OS_TAPS_48K; k += FDMDV_OS_48, l++) out48k[i * FDMDV_OS_48 + j] += fdmdv_os_filter48[k + j] * in8k[i - l]; out48k[i * FDMDV_OS_48 + j] *= FDMDV_OS_48; } } /* update filter memory */ for (i = -FDMDV_OS_TAPS_48_8K; i < 0; i++) in8k[i] = in8k[i + n]; } void fdmdv_8_to_48_short(short out48k[], short in8k[], int n) { int i, j, k, l; float acc; for (i = 0; i < n; i++) { for (j = 0; j < FDMDV_OS_48; j++) { acc = 0.0; for (k = 0, l = 0; k < FDMDV_OS_TAPS_48K; k += FDMDV_OS_48, l++) acc += fdmdv_os_filter48[k + j] * in8k[i - l]; out48k[i * FDMDV_OS_48 + j] = acc * FDMDV_OS_48; } } /* update filter memory */ for (i = -FDMDV_OS_TAPS_48_8K; i < 0; i++) in8k[i] = in8k[i + n]; } /*---------------------------------------------------------------------------*\ FUNCTION....: fdmdv_48_to_8() AUTHOR......: David Rowe DATE CREATED: 9 May 2012 Changes the sample rate of a signal from 48 to 8 kHz. n is the number of samples at the 8 kHz rate, there are FDMDV_OS_48*n samples at the 48 kHz rate. As above however a memory of FDMDV_OS_TAPS_48 samples is reqd for in48k[] (see t48_8.c unit test as example). \*---------------------------------------------------------------------------*/ void fdmdv_48_to_8(float out8k[], float in48k[], int n) { int i, j; for (i = 0; i < n; i++) { out8k[i] = 0.0; for (j = 0; j < FDMDV_OS_TAPS_48K; j++) out8k[i] += fdmdv_os_filter48[j] * in48k[i * FDMDV_OS_48 - j]; } /* update filter memory */ for (i = -FDMDV_OS_TAPS_48K; i < 0; i++) in48k[i] = in48k[i + n * FDMDV_OS_48]; } void fdmdv_48_to_8_short(short out8k[], short in48k[], int n) { int i, j; float acc; for (i = 0; i < n; i++) { acc = 0.0; for (j = 0; j < FDMDV_OS_TAPS_48K; j++) acc += fdmdv_os_filter48[j] * in48k[i * FDMDV_OS_48 - j]; out8k[i] = acc; } /* update filter memory */ for (i = -FDMDV_OS_TAPS_48K; i < 0; i++) in48k[i] = in48k[i + n * FDMDV_OS_48]; } /*---------------------------------------------------------------------------*\ Function used during development to test if magnitude of digital oscillators was drifting. It was! \*---------------------------------------------------------------------------*/ void fdmdv_dump_osc_mags(struct FDMDV *f) { int i; fprintf(stderr, "phase_tx[]:\n"); for (i = 0; i <= f->Nc; i++) fprintf(stderr, " %1.3f", (double)cabsolute(f->phase_tx[i])); fprintf(stderr, "\nfreq[]:\n"); for (i = 0; i <= f->Nc; i++) fprintf(stderr, " %1.3f", (double)cabsolute(f->freq[i])); fprintf(stderr, "\nfoff_phase_rect: %1.3f", (double)cabsolute(f->foff_phase_rect)); fprintf(stderr, "\nphase_rx[]:\n"); for (i = 0; i <= f->Nc; i++) fprintf(stderr, " %1.3f", (double)cabsolute(f->phase_rx[i])); fprintf(stderr, "\n\n"); } /*---------------------------------------------------------------------------*\ FUNCTION....: randn() AUTHOR......: David Rowe DATE CREATED: 2 August 2014 Simple approximation to normal (gaussian) random number generator with 0 mean and unit variance. \*---------------------------------------------------------------------------*/ #define RANDN_IT \ 12 /* This magic number of iterations gives us a \ unit variance. I think because var = \ (b-a)^2/12 for one uniform random variable, so \ for a sum of n random variables it's \ n(b-a)^2/12, or for b=1, a = 0, n=12, we get \ var = 12(1-0)^2/12 = 1 */ static float randn() { int i; float rn = 0.0; for (i = 0; i < RANDN_IT; i++) rn += (float)rand() / RAND_MAX; rn -= (float)RANDN_IT / 2.0; return rn; } /*---------------------------------------------------------------------------*\ FUNCTION....: fdmdv_simulate_channel() AUTHOR......: David Rowe DATE CREATED: 10 July 2014 Simple channel simulation function to aid in testing. Target SNR uses noise measured in a 3 kHz bandwidth. Doesn't use fdmdv states so can be called from anywhere, e.g. non fdmdv applications. TODO: Measured SNR is coming out a few dB higher than target_snr, this needs to be fixed. \*---------------------------------------------------------------------------*/ void fdmdv_simulate_channel(float *sig_pwr_av, COMP samples[], int nin, float target_snr) { float sig_pwr, target_snr_linear, noise_pwr, noise_pwr_1Hz, noise_pwr_4000Hz, noise_gain; int i; /* prevent NAN when we divide by nin below */ if (nin == 0) return; /* estimate signal power */ sig_pwr = 0.0; for (i = 0; i < nin; i++) sig_pwr += samples[i].real * samples[i].real + samples[i].imag * samples[i].imag; sig_pwr /= nin; *sig_pwr_av = 0.9 * *sig_pwr_av + 0.1 * sig_pwr; /* det noise to meet target SNR */ target_snr_linear = POW10F(target_snr / 10.0); noise_pwr = *sig_pwr_av / target_snr_linear; /* noise pwr in a 3000 Hz BW */ noise_pwr_1Hz = noise_pwr / 3000.0; /* noise pwr in a 1 Hz bandwidth */ noise_pwr_4000Hz = noise_pwr_1Hz * 4000.0; /* noise pwr in a 4000 Hz BW, which due to fs=8000 Hz in our simulation noise BW */ noise_gain = sqrtf( 0.5 * noise_pwr_4000Hz); /* split noise pwr between real and imag sides */ for (i = 0; i < nin; i++) { samples[i].real += noise_gain * randn(); samples[i].imag += noise_gain * randn(); } /* fprintf(stderr, "sig_pwr: %f f->sig_pwr_av: %e target_snr_linear: %f noise_pwr_4000Hz: %e noise_gain: %e\n", sig_pwr, *sig_pwr_av, target_snr_linear, noise_pwr_4000Hz, noise_gain); */ } codec2-1.2.0/src/fdmdv_demod.c000066400000000000000000000173771445607075400161070ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: fdmdv_demod.c AUTHOR......: David Rowe DATE CREATED: April 30 2012 Given an input raw file (8kHz, 16 bit shorts) of FDMDV modem samples outputs a file of bits. The output file is assumed to be arranged as codec frames of 56 bits (7 bytes) which are received as two 28 bit modem frames. Demod states can be optionally logged to an Octave file for display using the Octave script fdmdv_demod_c.m. This is useful for checking demod performance. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2012 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include "codec2_fdmdv.h" #include "debug_alloc.h" #include "freedv_api.h" #include "octave.h" /* lof of information we want to dump to Octave */ #define MAX_FRAMES 50 * 60 /* 1 minute at 50 symbols/s */ int main(int argc, char *argv[]) { FILE *fin, *fout; struct FDMDV *fdmdv; char *packed_bits; int *rx_bits; int *codec_bits; COMP rx_fdm[FDMDV_MAX_SAMPLES_PER_FRAME]; short rx_fdm_scaled[FDMDV_MAX_SAMPLES_PER_FRAME]; int i, bit, byte, c; int nin, nin_prev; int sync_bit = 0, reliable_sync_bit; int sync = 0; int f; FILE *foct = NULL; struct MODEM_STATS stats; COMP *rx_fdm_log; int rx_fdm_log_col_index; COMP *rx_symbols_log; int sync_log[MAX_FRAMES]; float rx_timing_log[MAX_FRAMES]; float foff_log[MAX_FRAMES]; int sync_bit_log[MAX_FRAMES]; int rx_bits_log[FDMDV_BITS_PER_FRAME * MAX_FRAMES]; float snr_est_log[MAX_FRAMES]; float *rx_spec_log; int max_frames_reached; int bits_per_fdmdv_frame; int bits_per_codec_frame; int bytes_per_codec_frame; int Nc; if (argc < 2) { printf("usage: %s InputModemRawFile OutputBitFile [Nc [OctaveDumpFile]]\n", argv[0]); printf("e.g %s hts1a_fdmdv.raw hts1a.c2\n", argv[0]); exit(1); } if (strcmp(argv[1], "-") == 0) fin = stdin; else if ((fin = fopen(argv[1], "rb")) == NULL) { fprintf(stderr, "Error opening input modem sample file: %s: %s.\n", argv[1], strerror(errno)); exit(1); } if (strcmp(argv[2], "-") == 0) fout = stdout; else if ((fout = fopen(argv[2], "wb")) == NULL) { fprintf(stderr, "Error opening output bit file: %s: %s.\n", argv[2], strerror(errno)); exit(1); } if (argc >= 4) { Nc = atoi(argv[3]); if ((Nc < 2) || (Nc > FDMDV_NC_MAX)) { fprintf(stderr, "Error number of carriers must be between 2 and %d\n", FDMDV_NC_MAX); exit(1); } } else Nc = FDMDV_NC; fdmdv = fdmdv_create(Nc); modem_stats_open(&stats); bits_per_fdmdv_frame = fdmdv_bits_per_frame(fdmdv); bits_per_codec_frame = 2 * fdmdv_bits_per_frame(fdmdv); bytes_per_codec_frame = (bits_per_codec_frame + 7) / 8; /* malloc some buffers that are dependent on Nc */ packed_bits = (char *)MALLOC(bytes_per_codec_frame); assert(packed_bits != NULL); rx_bits = (int *)MALLOC(sizeof(int) * bits_per_codec_frame); assert(rx_bits != NULL); codec_bits = (int *)MALLOC(2 * sizeof(int) * bits_per_fdmdv_frame); assert(codec_bits != NULL); /* malloc some of the larger variables to prevent out of stack problems */ rx_fdm_log = (COMP *)MALLOC(sizeof(COMP) * FDMDV_MAX_SAMPLES_PER_FRAME * MAX_FRAMES); assert(rx_fdm_log != NULL); rx_spec_log = (float *)MALLOC(sizeof(float) * MODEM_STATS_NSPEC * MAX_FRAMES); assert(rx_spec_log != NULL); rx_symbols_log = (COMP *)MALLOC(sizeof(COMP) * (Nc + 1) * MAX_FRAMES); assert(rx_fdm_log != NULL); f = 0; nin = FDMDV_NOM_SAMPLES_PER_FRAME; rx_fdm_log_col_index = 0; max_frames_reached = 0; while (fread(rx_fdm_scaled, sizeof(short), nin, fin) == nin) { for (i = 0; i < nin; i++) { rx_fdm[i].real = (float)rx_fdm_scaled[i] / FDMDV_SCALE; rx_fdm[i].imag = 0; } nin_prev = nin; fdmdv_demod(fdmdv, rx_bits, &reliable_sync_bit, rx_fdm, &nin); /* log data for optional Octave dump */ if (f < MAX_FRAMES) { fdmdv_get_demod_stats(fdmdv, &stats); /* log modem states for later dumping to Octave log file */ memcpy(&rx_fdm_log[rx_fdm_log_col_index], rx_fdm, sizeof(COMP) * nin_prev); rx_fdm_log_col_index += nin_prev; for (c = 0; c < Nc + 1; c++) rx_symbols_log[f * (Nc + 1) + c] = stats.rx_symbols[0][c]; foff_log[f] = stats.foff; rx_timing_log[f] = stats.rx_timing; sync_log[f] = stats.sync; sync_bit_log[f] = sync_bit; memcpy(&rx_bits_log[bits_per_fdmdv_frame * f], rx_bits, sizeof(int) * bits_per_fdmdv_frame); snr_est_log[f] = stats.snr_est; modem_stats_get_rx_spectrum(&stats, &rx_spec_log[f * MODEM_STATS_NSPEC], rx_fdm, nin_prev); f++; } if ((f == MAX_FRAMES) && !max_frames_reached) { fprintf(stderr, "MAX_FRAMES exceed in Octave log, log truncated\n"); max_frames_reached = 1; } if (reliable_sync_bit) sync = 1; // printf("sync_bit: %d reliable_sync_bit: %d sync: %d\n", sync_bit, // reliable_sync_bit, sync); if (sync == 0) { memcpy(codec_bits, rx_bits, bits_per_fdmdv_frame * sizeof(int)); sync = 1; } else { memcpy(&codec_bits[bits_per_fdmdv_frame], rx_bits, bits_per_fdmdv_frame * sizeof(int)); /* pack bits, MSB received first */ bit = 7; byte = 0; memset(packed_bits, 0, bytes_per_codec_frame); for (i = 0; i < bits_per_codec_frame; i++) { packed_bits[byte] |= (codec_bits[i] << bit); bit--; if (bit < 0) { bit = 7; byte++; } } fwrite(packed_bits, sizeof(char), bytes_per_codec_frame, fout); sync = 0; } /* if this is in a pipeline, we probably don't want the usual buffering to occur */ if (fout == stdout) fflush(stdout); } /* Optional dump to Octave log file */ if (argc == 5) { if ((foct = fopen(argv[4], "wt")) == NULL) { fprintf(stderr, "Error opening Octave dump file: %s: %s.\n", argv[4], strerror(errno)); exit(1); } octave_save_complex(foct, "rx_fdm_log_c", rx_fdm_log, 1, rx_fdm_log_col_index, FDMDV_MAX_SAMPLES_PER_FRAME); octave_save_complex(foct, "rx_symbols_log_c", (COMP *)rx_symbols_log, Nc + 1, f, MAX_FRAMES); octave_save_float(foct, "foff_log_c", foff_log, 1, f, MAX_FRAMES); octave_save_float(foct, "rx_timing_log_c", rx_timing_log, 1, f, MAX_FRAMES); octave_save_int(foct, "sync_log_c", sync_log, 1, f); octave_save_int(foct, "rx_bits_log_c", rx_bits_log, 1, bits_per_fdmdv_frame * f); octave_save_int(foct, "sync_bit_log_c", sync_bit_log, 1, f); octave_save_float(foct, "snr_est_log_c", snr_est_log, 1, f, MAX_FRAMES); octave_save_float(foct, "rx_spec_log_c", rx_spec_log, f, MODEM_STATS_NSPEC, MODEM_STATS_NSPEC); fclose(foct); } // fdmdv_dump_osc_mags(fdmdv); fclose(fin); fclose(fout); FREE(rx_fdm_log); FREE(rx_spec_log); fdmdv_destroy(fdmdv); if (packed_bits != NULL) FREE(packed_bits); return 0; } codec2-1.2.0/src/fdmdv_get_test_bits.c000066400000000000000000000065001445607075400176400ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: fdmdv_get_test_bits.c AUTHOR......: David Rowe DATE CREATED: 1 May 2012 Generates a file of packed test bits, useful for input to fdmdv_mod. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2012 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include "codec2_fdmdv.h" int main(int argc, char *argv[]) { FILE *fout; struct FDMDV *fdmdv; char *packed_bits; int *tx_bits; int n, i, bit, byte; int numBits, nCodecFrames; int bits_per_fdmdv_frame; int bits_per_codec_frame; int bytes_per_codec_frame; int Nc; if (argc < 3) { printf("usage: %s OutputBitFile numBits [Nc]\n", argv[0]); printf("e.g %s test.c2 1400\n", argv[0]); exit(1); } if (strcmp(argv[1], "-") == 0) fout = stdout; else if ((fout = fopen(argv[1], "wb")) == NULL) { fprintf(stderr, "Error opening output bit file: %s: %s.\n", argv[1], strerror(errno)); exit(1); } numBits = atoi(argv[2]); if (argc == 4) { Nc = atoi(argv[3]); if ((Nc < 2) || (Nc > FDMDV_NC_MAX)) { fprintf(stderr, "Error number of carriers must be btween 2 and %d\n", FDMDV_NC_MAX); exit(1); } } else Nc = FDMDV_NC; fdmdv = fdmdv_create(Nc); bits_per_fdmdv_frame = fdmdv_bits_per_frame(fdmdv); bits_per_codec_frame = 2 * fdmdv_bits_per_frame(fdmdv); bytes_per_codec_frame = (bits_per_codec_frame + 7) / 8; fprintf(stderr, "bits_per_fdmdv_frame: %d bits_per_codec_frame: %d " "bytes_per_codec_frame: %d\n", bits_per_fdmdv_frame, bits_per_codec_frame, bytes_per_codec_frame); packed_bits = (char *)malloc(bytes_per_codec_frame); assert(packed_bits != NULL); tx_bits = (int *)malloc(sizeof(int) * bits_per_codec_frame); assert(tx_bits != NULL); nCodecFrames = numBits / bits_per_codec_frame; for (n = 0; n < nCodecFrames; n++) { fdmdv_get_test_bits(fdmdv, tx_bits); fdmdv_get_test_bits(fdmdv, &tx_bits[bits_per_fdmdv_frame]); /* pack bits, MSB received first */ bit = 7; byte = 0; memset(packed_bits, 0, bytes_per_codec_frame); for (i = 0; i < bits_per_codec_frame; i++) { packed_bits[byte] |= (tx_bits[i] << bit); bit--; if (bit < 0) { bit = 7; byte++; } } fwrite(packed_bits, sizeof(char), bytes_per_codec_frame, fout); /* if this is in a pipeline, we probably don't want the usual buffering to occur */ if (fout == stdout) fflush(stdout); } free(tx_bits); free(packed_bits); fclose(fout); fdmdv_destroy(fdmdv); return 0; } codec2-1.2.0/src/fdmdv_internal.h000066400000000000000000000164131445607075400166260ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: fdmdv_internal.h AUTHOR......: David Rowe DATE CREATED: April 16 2012 Header file for FDMDV internal functions, exposed via this header file for testing. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2012 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __FDMDV_INTERNAL__ #define __FDMDV_INTERNAL__ #include "codec2_fdmdv.h" #include "codec2_fft.h" #include "comp.h" /*---------------------------------------------------------------------------*\ DEFINES \*---------------------------------------------------------------------------*/ #ifndef PI #define PI 3.141592654 #endif #define FS 8000 /* sample rate in Hz */ #define FS_VOICE_8K 8000 /* speech sample rate, 8000 Hz */ #define FS_VOICE_16K 16000 /* speech sample rate, 16000 Hz */ #define T (1.0 / FS) /* sample period in seconds */ #define RS 50 /* symbol rate in Hz */ #define NC 20 /* max number of data carriers (plus one pilot in the centre) */ #define NB 2 /* Bits/symbol for QPSK modulation */ #define RB (NC * RS * NB) /* bit rate */ #define M_FAC (FS / RS) /* oversampling factor */ #define NSYM 6 /* number of symbols to filter over */ #define NFILTER (NSYM * M_FAC) /* size of tx/rx filters at sample rate M */ #define FSEP 75 /* Default separation between carriers (Hz) */ #define NT 5 /* number of symbols we estimate timing over */ #define P 4 /* oversampling for initial rx symbol filtering output */ #define Q (M_FAC / 4) /* oversampling for initial rx symbol filtering input */ #define NRXDEC 31 /* number of taps in the rx decimation filter */ #define NPILOT_LUT (4 * M_FAC) /* number of pilot look up table samples */ #define NPILOTCOEFF 30 /* number of FIR filter coeffs in LP filter */ /* number of pilot baseband samples reqd for pilot LPF */ #define NPILOTBASEBAND (NPILOTCOEFF + M_FAC + M_FAC / P) /* number of samples we DFT pilot over, pilot est window */ #define NPILOTLPF (4 * M_FAC) #define MPILOTFFT 256 #define NSYNC_MEM 6 /* size of rx filter memory */ #define NRX_FDM_MEM (NFILTER + M_FAC + M_FAC / P) /* size of rx decimation filter memory */ #define NRXDECMEM (NRXDEC + M_FAC + M_FAC / P) /* averaging filter coeffs */ #define TRACK_COEFF 0.5 #define SNR_COEFF 0.9 /* SNR est averaging filter coeff */ /*---------------------------------------------------------------------------*\ STRUCT for States \*---------------------------------------------------------------------------*/ struct FDMDV { int Nc; float fsep; /* test data (test frame) states */ int ntest_bits; int current_test_bit; int *rx_test_bits_mem; /* Modulator */ int old_qpsk_mapping; int tx_pilot_bit; COMP prev_tx_symbols[NC + 1]; COMP tx_filter_memory[NC + 1][NSYM]; COMP phase_tx[NC + 1]; COMP freq[NC + 1]; float freq_pol[NC + 1]; /* Pilot generation at demodulator */ COMP pilot_lut[NPILOT_LUT]; int pilot_lut_index; int prev_pilot_lut_index; /* freq offset estimation states */ codec2_fft_cfg fft_pilot_cfg; COMP pilot_baseband1[NPILOTBASEBAND]; COMP pilot_baseband2[NPILOTBASEBAND]; COMP pilot_lpf1[NPILOTLPF]; COMP pilot_lpf2[NPILOTLPF]; COMP S1[MPILOTFFT]; COMP S2[MPILOTFFT]; /* baseband to low IF carrier states */ COMP fbb_rect; float fbb_pol; COMP fbb_phase_tx; COMP fbb_phase_rx; /* freq offset correction states */ float foff; COMP foff_phase_rect; float foff_filt; /* Demodulator */ COMP rxdec_lpf_mem[NRXDECMEM]; COMP rx_fdm_mem[NRX_FDM_MEM]; COMP phase_rx[NC + 1]; COMP rx_filter_mem_timing[NC + 1][NT * P]; float rx_timing; COMP phase_difference[NC + 1]; COMP prev_rx_symbols[NC + 1]; /* sync state machine */ int sync_mem[NSYNC_MEM]; int fest_state; int sync; int timer; /* SNR estimation states */ float sig_est[NC + 1]; float noise_est[NC + 1]; /* channel simulation */ float sig_pwr_av; }; /*---------------------------------------------------------------------------*\ FUNCTION PROTOTYPES \*---------------------------------------------------------------------------*/ void bits_to_dqpsk_symbols(COMP tx_symbols[], int Nc, COMP prev_tx_symbols[], int tx_bits[], int *pilot_bit, int old_qpsk_mapping); void tx_filter(COMP tx_baseband[NC + 1][M_FAC], int Nc, COMP tx_symbols[], COMP tx_filter_memory[NC + 1][NSYM]); void fdm_upconvert(COMP tx_fdm[], int Nc, COMP tx_baseband[NC + 1][M_FAC], COMP phase_tx[], COMP freq_tx[], COMP *fbb_phase, COMP fbb_rect); void tx_filter_and_upconvert(COMP tx_fdm[], int Nc, COMP tx_symbols[], COMP tx_filter_memory[NC + 1][NSYM], COMP phase_tx[], COMP freq[], COMP *fbb_phase, COMP fbb_rect); void generate_pilot_fdm(COMP *pilot_fdm, int *bit, float *symbol, float *filter_mem, COMP *phase, COMP *freq); void generate_pilot_lut(COMP pilot_lut[], COMP *pilot_freq); float rx_est_freq_offset(struct FDMDV *f, COMP rx_fdm[], int nin, int do_fft); void lpf_peak_pick(float *foff, float *max, COMP pilot_baseband[], COMP pilot_lpf[], codec2_fft_cfg fft_pilot_cfg, COMP S[], int nin, int do_fft); void fdm_downconvert(COMP rx_baseband[NC + 1][M_FAC + M_FAC / P], int Nc, COMP rx_fdm[], COMP phase_rx[], COMP freq[], int nin); void rxdec_filter(COMP rx_fdm_filter[], COMP rx_fdm[], COMP rxdec_lpf_mem[], int nin); void rx_filter(COMP rx_filt[][P + 1], int Nc, COMP rx_baseband[][M_FAC + M_FAC / P], COMP rx_filter_memory[][NFILTER], int nin); void down_convert_and_rx_filter(COMP rx_filt[NC + 1][P + 1], int Nc, COMP rx_fdm[], COMP rx_fdm_mem[], COMP phase_rx[], COMP freq[], float freq_pol[], int nin, int dec_rate); float rx_est_timing(COMP rx_symbols[], int Nc, COMP rx_filt[][P + 1], COMP rx_filter_mem_timing[][NT * P], float env[], int nin, int m); float qpsk_to_bits(int rx_bits[], int *sync_bit, int Nc, COMP phase_difference[], COMP prev_rx_symbols[], COMP rx_symbols[], int old_qpsk_mapping); void snr_update(float sig_est[], float noise_est[], int Nc, COMP phase_difference[]); int freq_state(int *reliable_sync_bit, int sync_bit, int *state, int *timer, int *sync_mem); float calc_snr(int Nc, float sig_est[], float noise_est[]); #endif codec2-1.2.0/src/fdmdv_mod.c000066400000000000000000000106411445607075400155610ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: fdmdv_mod.c AUTHOR......: David Rowe DATE CREATED: April 28 2012 Given an input file of bits outputs a raw file (8kHz, 16 bit shorts) of FDMDV modem samples ready to send over a HF radio channel. The input file is assumed to be arranged as codec frames of 56 bits (7 bytes) which we send as two 28 bit modem frames. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2012 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include "codec2_fdmdv.h" int main(int argc, char *argv[]) { FILE *fin, *fout; struct FDMDV *fdmdv; char *packed_bits; int *tx_bits; COMP tx_fdm[2 * FDMDV_NOM_SAMPLES_PER_FRAME]; short tx_fdm_scaled[2 * FDMDV_NOM_SAMPLES_PER_FRAME]; int i, bit, byte; int sync_bit; int bits_per_fdmdv_frame; int bits_per_codec_frame; int bytes_per_codec_frame; int Nc; #ifdef CHANNEL_SIM COMP foff_phase_rect; float foff; #endif if (argc < 3) { printf("usage: %s InputBitFile OutputModemRawFile [Nc]\n", argv[0]); printf("e.g %s hts1a.c2 hts1a_fdmdv.raw\n", argv[0]); exit(1); } if (strcmp(argv[1], "-") == 0) fin = stdin; else if ((fin = fopen(argv[1], "rb")) == NULL) { fprintf(stderr, "Error opening input bit file: %s: %s.\n", argv[1], strerror(errno)); exit(1); } if (strcmp(argv[2], "-") == 0) fout = stdout; else if ((fout = fopen(argv[2], "wb")) == NULL) { fprintf(stderr, "Error opening output modem sample file: %s: %s.\n", argv[2], strerror(errno)); exit(1); } if (argc == 4) { Nc = atoi(argv[3]); if ((Nc < 2) || (Nc > FDMDV_NC_MAX)) { fprintf(stderr, "Error number of carriers must be between 2 and %d\n", FDMDV_NC_MAX); exit(1); } } else Nc = FDMDV_NC; fdmdv = fdmdv_create(Nc); bits_per_fdmdv_frame = fdmdv_bits_per_frame(fdmdv); bits_per_codec_frame = 2 * fdmdv_bits_per_frame(fdmdv); bytes_per_codec_frame = (bits_per_codec_frame + 7) / 8; packed_bits = (char *)malloc(bytes_per_codec_frame); assert(packed_bits != NULL); tx_bits = (int *)malloc(sizeof(int) * bits_per_codec_frame); assert(tx_bits != NULL); #ifdef CHANNEL_SIM foff = -100; foff_phase_rect.real = 1.0; foff_phase_rect.imag = 0.0; #endif while (fread(packed_bits, sizeof(char), bytes_per_codec_frame, fin) == bytes_per_codec_frame) { /* unpack bits, MSB first */ bit = 7; byte = 0; for (i = 0; i < bits_per_codec_frame; i++) { tx_bits[i] = (packed_bits[byte] >> bit) & 0x1; bit--; if (bit < 0) { bit = 7; byte++; } } /* modulate even and odd frames */ fdmdv_mod(fdmdv, tx_fdm, tx_bits, &sync_bit); assert(sync_bit == 1); fdmdv_mod(fdmdv, &tx_fdm[FDMDV_NOM_SAMPLES_PER_FRAME], &tx_bits[bits_per_fdmdv_frame], &sync_bit); assert(sync_bit == 0); #ifdef CHANNEL_SIM /* optional freq shift and channel simulation */ fdmdv_freq_shift(tx_fdm, tx_fdm, foff, &foff_phase_rect, 2 * FDMDV_NOM_SAMPLES_PER_FRAME); fdmdv_simulate_channel(&sig_pwr_av, tx_fdm, 2 * FDMDV_NOM_SAMPLES_PER_FRAME, 10.0); #endif /* scale and save to disk as shorts */ for (i = 0; i < 2 * FDMDV_NOM_SAMPLES_PER_FRAME; i++) tx_fdm_scaled[i] = FDMDV_SCALE * tx_fdm[i].real; fwrite(tx_fdm_scaled, sizeof(short), 2 * FDMDV_NOM_SAMPLES_PER_FRAME, fout); /* if this is in a pipeline, we probably don't want the usual buffering to occur */ if (fout == stdout) fflush(stdout); } // fdmdv_dump_osc_mags(fdmdv); free(tx_bits); free(packed_bits); fclose(fin); fclose(fout); fdmdv_destroy(fdmdv); return 0; } codec2-1.2.0/src/fdmdv_put_test_bits.c000066400000000000000000000111531445607075400176710ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: fdmdv_put_test_bits.c AUTHOR......: David Rowe DATE CREATED: 1 May 2012 Using a file of packed test bits as input, determines bit error rate. Useful for testing fdmdv_demod. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2012 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include "codec2_fdmdv.h" int main(int argc, char *argv[]) { FILE *fin; struct FDMDV *fdmdv; char *packed_bits; int *rx_bits; int i, bit, byte; int test_frame_sync, bit_errors, total_bit_errors, total_bits, ntest_bits; int test_frame_sync_state, test_frame_count; int bits_per_fdmdv_frame; int bits_per_codec_frame; int bytes_per_codec_frame; int Nc; short *error_pattern; if (argc < 2) { printf("usage: %s InputBitFile [Nc]\n", argv[0]); printf("e.g %s test.c2\n", argv[0]); exit(1); } if (strcmp(argv[1], "-") == 0) fin = stdin; else if ((fin = fopen(argv[1], "rb")) == NULL) { fprintf(stderr, "Error opening input bit file: %s: %s.\n", argv[1], strerror(errno)); exit(1); } if (argc == 3) { Nc = atoi(argv[2]); if ((Nc < 2) || (Nc > FDMDV_NC_MAX)) { fprintf(stderr, "Error number of carriers must be between 2 and %d\n", FDMDV_NC_MAX); exit(1); } } else Nc = FDMDV_NC; fdmdv = fdmdv_create(Nc); bits_per_fdmdv_frame = fdmdv_bits_per_frame(fdmdv); bits_per_codec_frame = 2 * fdmdv_bits_per_frame(fdmdv); bytes_per_codec_frame = (bits_per_codec_frame + 7) / 8; fprintf(stderr, "bits_per_fdmdv_frame: %d bits_per_codec_frame: %d " "bytes_per_codec_frame: %d\n", bits_per_fdmdv_frame, bits_per_codec_frame, bytes_per_codec_frame); packed_bits = (char *)malloc(bytes_per_codec_frame); assert(packed_bits != NULL); rx_bits = (int *)malloc(sizeof(int) * bits_per_codec_frame); assert(rx_bits != NULL); error_pattern = (short *)malloc(fdmdv_error_pattern_size(fdmdv) * sizeof(int)); assert(error_pattern != NULL); total_bit_errors = 0; total_bits = 0; test_frame_sync_state = 0; test_frame_count = 0; while (fread(packed_bits, sizeof(char), bytes_per_codec_frame, fin) == bytes_per_codec_frame) { /* unpack bits, MSB first */ bit = 7; byte = 0; for (i = 0; i < bits_per_codec_frame; i++) { rx_bits[i] = (packed_bits[byte] >> bit) & 0x1; // printf("%d 0x%x %d\n", i, packed_bits[byte], rx_bits[i]); bit--; if (bit < 0) { bit = 7; byte++; } } fdmdv_put_test_bits(fdmdv, &test_frame_sync, error_pattern, &bit_errors, &ntest_bits, rx_bits); if (test_frame_sync == 1) { test_frame_sync_state = 1; test_frame_count = 0; } if (test_frame_sync_state) { if (test_frame_count == 0) { total_bit_errors += bit_errors; total_bits = total_bits + ntest_bits; printf("+"); } else printf("-"); test_frame_count++; if (test_frame_count == 4) test_frame_count = 0; } else printf("-"); fdmdv_put_test_bits(fdmdv, &test_frame_sync, error_pattern, &bit_errors, &ntest_bits, &rx_bits[bits_per_fdmdv_frame]); if (test_frame_sync == 1) { test_frame_sync_state = 1; test_frame_count = 0; } if (test_frame_sync_state) { if (test_frame_count == 0) { total_bit_errors += bit_errors; total_bits = total_bits + ntest_bits; printf("+"); } else printf("-"); test_frame_count++; if (test_frame_count == 4) test_frame_count = 0; } else printf("-"); } fclose(fin); free(error_pattern); fdmdv_destroy(fdmdv); printf("\nbits %d errors %d BER %1.4f\n", total_bits, total_bit_errors, (float)total_bit_errors / (1E-6 + total_bits)); if (packed_bits != NULL) free(packed_bits); return 0; } codec2-1.2.0/src/filter.c000066400000000000000000000215661445607075400151170ustar00rootroot00000000000000/* Copyright (C) 2018 James C. Ahlstrom All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "filter.h" #include #include #include #include #include "debug_alloc.h" #include "filter_coef.h" #define cmplx(value) (cosf(value) + sinf(value) * I) /* * This is a library of filter functions. They were copied from Quisk and * converted to single precision. */ /*---------------------------------------------------------------------------*\ FUNCTIONS...: quisk_filt_cfInit AUTHOR......: Jim Ahlstrom DATE CREATED: 27 August 2015 MODIFIED: 4 June 2018 Initialize a FIR filter that has complex samples, and either real or complex coefficients. \*---------------------------------------------------------------------------*/ void quisk_filt_cfInit(struct quisk_cfFilter *filter, float *coefs, int taps) { // Prepare a new filter using coefs and taps. Samples are complex. // Coefficients can be real or complex. filter->dCoefs = coefs; filter->cpxCoefs = NULL; filter->cSamples = (complex float *)MALLOC(taps * sizeof(complex float)); memset(filter->cSamples, 0, taps * sizeof(complex float)); filter->ptcSamp = filter->cSamples; filter->nTaps = taps; filter->cBuf = NULL; filter->nBuf = 0; filter->decim_index = 0; } /*---------------------------------------------------------------------------*\ FUNCTIONS...: quisk_filt_destroy AUTHOR......: Jim Ahlstrom DATE CREATED: 27 August 2015 MODIFIED: 4 June 2018 Destroy the FIR filter and free all resources. \*---------------------------------------------------------------------------*/ void quisk_filt_destroy(struct quisk_cfFilter *filter) { if (filter->cSamples) { FREE(filter->cSamples); filter->cSamples = NULL; } if (filter->cBuf) { FREE(filter->cBuf); filter->cBuf = NULL; } if (filter->cpxCoefs) { FREE(filter->cpxCoefs); filter->cpxCoefs = NULL; } } /*---------------------------------------------------------------------------*\ FUNCTIONS...: quisk_cfInterpDecim AUTHOR......: Jim Ahlstrom DATE CREATED: 27 August 2015 MODIFIED: 4 June 2018 Take an array of samples cSamples of length count, multiply the sample rate by interp, and then divide the sample rate by decim. Return the new number of samples. Each specific interp and decim will require its own custom low pass FIR filter with real coefficients. \*---------------------------------------------------------------------------*/ int quisk_cfInterpDecim(complex float *cSamples, int count, struct quisk_cfFilter *filter, int interp, int decim) { // Interpolate by interp, and then decimate by decim. // This uses the float coefficients of filter (not the complex). Samples are // complex. int i, k, nOut; float *ptCoef; complex float *ptSample; complex float csample; if (count > filter->nBuf) { // increase size of sample buffer filter->nBuf = count * 2; if (filter->cBuf) FREE(filter->cBuf); filter->cBuf = (complex float *)MALLOC(filter->nBuf * sizeof(complex float)); } memcpy(filter->cBuf, cSamples, count * sizeof(complex float)); nOut = 0; for (i = 0; i < count; i++) { // Put samples into buffer left to right. Use samples right to left. *filter->ptcSamp = filter->cBuf[i]; while (filter->decim_index < interp) { ptSample = filter->ptcSamp; ptCoef = filter->dCoefs + filter->decim_index; csample = 0; for (k = 0; k < filter->nTaps / interp; k++, ptCoef += interp) { csample += *ptSample * *ptCoef; if (--ptSample < filter->cSamples) ptSample = filter->cSamples + filter->nTaps - 1; } cSamples[nOut] = csample * interp; nOut++; filter->decim_index += decim; } if (++filter->ptcSamp >= filter->cSamples + filter->nTaps) filter->ptcSamp = filter->cSamples; filter->decim_index = filter->decim_index - interp; } return nOut; } /*---------------------------------------------------------------------------*\ FUNCTIONS...: quisk_ccfInterpDecim AUTHOR......: Jim Ahlstrom DATE CREATED: 7 June 2018 Take an array of samples cSamples of length count, multiply the sample rate by interp, and then divide the sample rate by decim. Return the new number of samples. Each specific interp and decim will require its own custom low pass FIR filter with complex coefficients. This filter can be tuned. This filter is not currently used. \*---------------------------------------------------------------------------*/ #if 0 int quisk_ccfInterpDecim(complex float * cSamples, int count, struct quisk_cfFilter * filter, int interp, int decim) { // Interpolate by interp, and then decimate by decim. // This uses the complex coefficients of filter (not the real). Samples are complex. int i, k, nOut; complex float * ptCoef; complex float * ptSample; complex float csample; if (count > filter->nBuf) { // increase size of sample buffer filter->nBuf = count * 2; if (filter->cBuf) FREE(filter->cBuf); filter->cBuf = (complex float *)MALLOC(filter->nBuf * sizeof(complex float)); } memcpy(filter->cBuf, cSamples, count * sizeof(complex float)); nOut = 0; for (i = 0; i < count; i++) { // Put samples into buffer left to right. Use samples right to left. *filter->ptcSamp = filter->cBuf[i]; while (filter->decim_index < interp) { ptSample = filter->ptcSamp; ptCoef = filter->cpxCoefs + filter->decim_index; csample = 0; for (k = 0; k < filter->nTaps / interp; k++, ptCoef += interp) { csample += *ptSample * *ptCoef; if (--ptSample < filter->cSamples) ptSample = filter->cSamples + filter->nTaps - 1; } cSamples[nOut] = csample * interp; nOut++; filter->decim_index += decim; } if (++filter->ptcSamp >= filter->cSamples + filter->nTaps) filter->ptcSamp = filter->cSamples; filter->decim_index = filter->decim_index - interp; } return nOut; } #endif /*---------------------------------------------------------------------------*\ FUNCTIONS...: quisk_cfTune AUTHOR......: Jim Ahlstrom DATE CREATED: 4 June 2018 Tune a low pass filter with float coefficients into an analytic I/Q bandpass filter with complex coefficients. The "freq" is the center frequency / sample rate. If the float coefs represent a low pass filter with bandwidth 1 kHz, the new bandpass filter has width 2 kHz. The filter can be re-tuned repeatedly. \*---------------------------------------------------------------------------*/ void quisk_cfTune(struct quisk_cfFilter *filter, float freq) { float D, tune; int i; if (!filter->cpxCoefs) filter->cpxCoefs = (complex float *)MALLOC(filter->nTaps * sizeof(complex float)); tune = 2.0 * M_PI * freq; D = (filter->nTaps - 1.0) / 2.0; for (i = 0; i < filter->nTaps; i++) { float tval = tune * (i - D); filter->cpxCoefs[i] = cmplx(tval) * filter->dCoefs[i]; } } /*---------------------------------------------------------------------------*\ FUNCTIONS...: quisk_ccfFilter AUTHOR......: Jim Ahlstrom DATE CREATED: 4 June 2018 Filter complex samples using complex coefficients. The inSamples and outSamples may be the same array. The loop runs forward over coefficients but backwards over samples. Therefore, the coefficients must be reversed unless they are created by quisk_cfTune. Low pass filter coefficients are symmetrical, so this does not usually matter. \*---------------------------------------------------------------------------*/ void quisk_ccfFilter(complex float *inSamples, complex float *outSamples, int count, struct quisk_cfFilter *filter) { int i, k; complex float *ptSample; complex float *ptCoef; complex float accum; for (i = 0; i < count; i++) { *filter->ptcSamp = inSamples[i]; accum = 0; ptSample = filter->ptcSamp; ptCoef = filter->cpxCoefs; for (k = 0; k < filter->nTaps; k++, ptCoef++) { accum += *ptSample * *ptCoef; if (--ptSample < filter->cSamples) ptSample = filter->cSamples + filter->nTaps - 1; } outSamples[i] = accum; if (++filter->ptcSamp >= filter->cSamples + filter->nTaps) filter->ptcSamp = filter->cSamples; } } codec2-1.2.0/src/filter.h000066400000000000000000000036451445607075400151220ustar00rootroot00000000000000/* Copyright (C) 2018 James C. Ahlstrom All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __FILTER__ #define __FILTER__ #include struct quisk_cfFilter { // Structure to hold the static data for FIR filters float *dCoefs; // real filter coefficients complex float *cpxCoefs; // complex filter coefficients int nBuf; // dimension of cBuf int nTaps; // dimension of dSamples, cSamples, dCoefs int decim_index; // index of next sample for decimation complex float *cSamples; // storage for old samples complex float *ptcSamp; // next available position in cSamples complex float *cBuf; // auxiliary buffer for interpolation }; extern int quisk_cfInterpDecim(complex float *, int, struct quisk_cfFilter *, int, int); extern void quisk_filt_cfInit(struct quisk_cfFilter *, float *, int); extern void quisk_filt_destroy(struct quisk_cfFilter *); extern void quisk_cfTune(struct quisk_cfFilter *, float); extern void quisk_ccfFilter(complex float *, complex float *, int, struct quisk_cfFilter *); extern float filtP400S600[100]; extern float filtP550S750[160]; extern float filtP650S900[100]; extern float filtP900S1100[100]; extern float filtP1100S1300[100]; extern float filtP200S400[100]; extern float quiskFilt120t480[480]; #endif codec2-1.2.0/src/filter_coef.h000066400000000000000000000715601445607075400161170ustar00rootroot00000000000000/* Copyright (C) 2018 James C. Ahlstrom All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ /* These are the coefficients for various FIR filters. A declaration of these filter coefficients is in filter.h. Multiple filters can use these coefficients because they are read-only. Although a sample rate is specified, the filters may be used at other sample rates. For example, if filtP750S1040 is used at 48000 sps, the pass and stop frequencies are 4500 and 6240 Hz. */ // Low pass filter, sample rate 8000 hz, 0.2 dB ripple, 100 dB atten, pass 550 // Hz, stop 750 Hz. Used to build 700D BPF float filtP550S750[160] = { 0.000001500540125945, 0.000020553368071006, 0.000052842049763802, 0.000112071233638701, 0.000202565299657164, 0.000325476960438197, 0.000474396686568771, 0.000633746562372497, 0.000778858561033731, 0.000878592697224500, 0.000900611877226272, 0.000818750000130019, 0.000621157718914443, 0.000317269738067462, -0.000058614729046822, -0.000448959090901751, -0.000780751290682747, -0.000978953969922609, -0.000983534965413392, -0.000766540799920385, -0.000344938705664714, 0.000214927788687815, 0.000804118320944653, 0.001289527679116282, 0.001541598437149897, 0.001466078039230554, 0.001032493743140772, 0.000291727467744814, -0.000623607913580581, -0.001518948630011706, -0.002175907515711935, -0.002402252989524116, -0.002082876981631170, -0.001219318501019004, 0.000053915753894017, 0.001483599323867600, 0.002743518309691092, 0.003504691193108974, 0.003515993126242027, 0.002676486805582815, 0.001080325423865147, -0.000980649349095093, -0.003062866925046052, -0.004660487490214220, -0.005321805637618908, -0.004767235761853469, -0.002979877569160189, -0.000242864453416682, 0.002892365745006815, 0.005707645107750651, 0.007473145256589892, 0.007624527169837005, 0.005921569713871673, 0.002547381438730890, -0.001883079571618079, -0.006418195698900790, -0.009958090016198632, -0.011502199858687428, -0.010403943660694560, -0.006572745274759415, -0.000569370325758693, 0.006440667006225166, 0.012881777376768124, 0.017083918451421990, 0.017661533458054445, 0.013877952730549446, 0.005912685575826365, -0.005037640104142052, -0.016864250576905999, -0.026855876467499887, -0.032168177048912679, -0.030370760878632559, -0.019967289813872333, -0.000782327027950076, 0.025871098651626040, 0.057290144048617792, 0.089743290905422241, 0.119038289777397190, 0.141198609990722840, 0.153125933205703250, 0.153125933205703250, 0.141198609990722840, 0.119038289777397190, 0.089743290905422241, 0.057290144048617792, 0.025871098651626040, -0.000782327027950076, -0.019967289813872333, -0.030370760878632559, -0.032168177048912679, -0.026855876467499887, -0.016864250576905999, -0.005037640104142052, 0.005912685575826365, 0.013877952730549446, 0.017661533458054445, 0.017083918451421990, 0.012881777376768124, 0.006440667006225166, -0.000569370325758693, -0.006572745274759415, -0.010403943660694560, -0.011502199858687428, -0.009958090016198632, -0.006418195698900790, -0.001883079571618079, 0.002547381438730890, 0.005921569713871673, 0.007624527169837005, 0.007473145256589892, 0.005707645107750651, 0.002892365745006815, -0.000242864453416682, -0.002979877569160189, -0.004767235761853469, -0.005321805637618908, -0.004660487490214220, -0.003062866925046052, -0.000980649349095093, 0.001080325423865147, 0.002676486805582815, 0.003515993126242027, 0.003504691193108974, 0.002743518309691092, 0.001483599323867600, 0.000053915753894017, -0.001219318501019004, -0.002082876981631170, -0.002402252989524116, -0.002175907515711935, -0.001518948630011706, -0.000623607913580581, 0.000291727467744814, 0.001032493743140772, 0.001466078039230554, 0.001541598437149897, 0.001289527679116282, 0.000804118320944653, 0.000214927788687815, -0.000344938705664714, -0.000766540799920385, -0.000983534965413392, -0.000978953969922609, -0.000780751290682747, -0.000448959090901751, -0.000058614729046822, 0.000317269738067462, 0.000621157718914443, 0.000818750000130019, 0.000900611877226272, 0.000878592697224500, 0.000778858561033731, 0.000633746562372497, 0.000474396686568771, 0.000325476960438197, 0.000202565299657164, 0.000112071233638701, 0.000052842049763802, 0.000020553368071006, 0.000001500540125945}; /* Low pass filter, sample rate 8000 Hz, 60dB dB atten, pass 400 Hz, stop 600 Hz Used for datac0/datac1 Generated using Octave: octave:170> h = fir1(99, 1000/8000); octave:171> save_array_c_header(h,"filtP400S600","t.h") */ float filtP400S600[100] = { 0.0002190442859529, 0.0000253865765807, -0.0001891607957119, -0.0004060215259363, -0.0006000085594001, -0.0007388342366621, -0.0007857143550906, -0.0007055101203620, -0.0004737796456378, -0.0000870157214033, 0.0004284822493668, 0.0010119603553043, 0.0015702670713406, 0.0019880170510650, 0.0021456291121880, 0.0019431076070540, 0.0013256670818267, 0.0003060762051584, -0.0010217279135397, -0.0024824214174461, -0.0038352454444032, -0.0048061266813482, -0.0051327431531073, -0.0046162222656579, -0.0031708262919099, -0.0008619578234589, 0.0020765315052916, 0.0052523330844492, 0.0081546351293169, 0.0102217640867241, 0.0109290873716773, 0.0098852729183138, 0.0069220529480671, 0.0021618869962732, -0.0039502956265373, -0.0106608379232220, -0.0169699130332444, -0.0217388847493965, -0.0238311162893102, -0.0222687242579450, -0.0163838891184744, -0.0059424763426467, 0.0087797880290842, 0.0269827101964810, 0.0473946488239843, 0.0683898571372469, 0.0881575538806286, 0.1049023332507096, 0.1170504418131305, 0.1234349185246360, 0.1234349185246360, 0.1170504418131306, 0.1049023332507097, 0.0881575538806286, 0.0683898571372469, 0.0473946488239843, 0.0269827101964810, 0.0087797880290842, -0.0059424763426467, -0.0163838891184744, -0.0222687242579450, -0.0238311162893102, -0.0217388847493965, -0.0169699130332444, -0.0106608379232220, -0.0039502956265373, 0.0021618869962732, 0.0069220529480671, 0.0098852729183138, 0.0109290873716773, 0.0102217640867241, 0.0081546351293169, 0.0052523330844492, 0.0020765315052916, -0.0008619578234589, -0.0031708262919099, -0.0046162222656579, -0.0051327431531073, -0.0048061266813482, -0.0038352454444032, -0.0024824214174461, -0.0010217279135397, 0.0003060762051584, 0.0013256670818267, 0.0019431076070540, 0.0021456291121880, 0.0019880170510650, 0.0015702670713406, 0.0010119603553043, 0.0004284822493668, -0.0000870157214033, -0.0004737796456378, -0.0007055101203620, -0.0007857143550906, -0.0007388342366621, -0.0006000085594001, -0.0004060215259363, -0.0001891607957119, 0.0000253865765807, 0.0002190442859529}; /* Low pass filter, sample rate 8000 Hz, 60dB dB atten, pass 650 Hz, stop 900 Hz Alternate filter for use with 700D and clipper. A little extra bandwidth helps reduce PAPR. Generated using Octave: octave:170> h = fir1(100, 1500/8000); octave:171> save_array_c_header(h,"filtP650S900","t.h") */ float filtP650S900[100] = { -0.0003447438107989, -0.0000773443016821, 0.0002396774493908, 0.0005183973970710, 0.0006638187313266, 0.0005975981831705, 0.0002897687607439, -0.0002119524114060, -0.0007715254253800, -0.0011873172727259, -0.0012521109061848, -0.0008371281604995, 0.0000296985029260, 0.0011281958214742, 0.0020819312900066, 0.0024705948613571, 0.0019912318935963, 0.0006124281900638, -0.0013451726955418, -0.0032531555468084, -0.0043549616066416, -0.0040377485154437, -0.0021065223027673, 0.0010488136629895, 0.0044817586852605, 0.0069407381267179, 0.0072892156498907, 0.0049639277235708, 0.0003023755700798, -0.0054092967401810, -0.0102368927453788, -0.0121970459192933, -0.0099848952803716, -0.0035856433622624, 0.0054724953549814, 0.0143763043146873, 0.0197915861224756, 0.0189508548007168, 0.0107444584473630, -0.0035511748160051, -0.0202026606441822, -0.0337226677294633, -0.0382279329229346, -0.0291127865967771, -0.0045659298430227, 0.0335371151119154, 0.0796831473314644, 0.1257715935323888, 0.1629350232213685, 0.1836638608187552, 0.1836638608187552, 0.1629350232213685, 0.1257715935323888, 0.0796831473314644, 0.0335371151119154, -0.0045659298430227, -0.0291127865967771, -0.0382279329229346, -0.0337226677294633, -0.0202026606441822, -0.0035511748160051, 0.0107444584473630, 0.0189508548007168, 0.0197915861224756, 0.0143763043146873, 0.0054724953549814, -0.0035856433622624, -0.0099848952803716, -0.0121970459192933, -0.0102368927453788, -0.0054092967401810, 0.0003023755700798, 0.0049639277235708, 0.0072892156498907, 0.0069407381267179, 0.0044817586852605, 0.0010488136629895, -0.0021065223027673, -0.0040377485154437, -0.0043549616066416, -0.0032531555468084, -0.0013451726955418, 0.0006124281900638, 0.0019912318935963, 0.0024705948613571, 0.0020819312900066, 0.0011281958214742, 0.0000296985029260, -0.0008371281604995, -0.0012521109061848, -0.0011873172727259, -0.0007715254253800, -0.0002119524114060, 0.0002897687607439, 0.0005975981831705, 0.0006638187313266, 0.0005183973970710, 0.0002396774493908, -0.0000773443016821, -0.0003447438107989}; /* Low pass filter, sample rate 8000 Hz, 60dB dB atten, pass 900 Hz, stop 1100 Hz Initially used to build 700E BPF. Generated using Octave: octave:170> h = fir1(100, 2000/8000); octave:171> save_array_c_header(h,"filtP900S1100","t.h") */ float filtP900S1100[] = { 0.0004418158615696, 0.0001287637146300, -0.0002887027062308, -0.0005878482226797, -0.0005730851022636, -0.0001872428398401, 0.0004164064769556, 0.0009044243294414, 0.0009214286447099, 0.0003198823196113, -0.0006735180958441, -0.0014968764631324, -0.0015397255009494, -0.0005518542214485, 0.0010799820573451, 0.0024224384337026, 0.0024915418423841, 0.0009146857642078, -0.0016601832557821, -0.0037544126485350, -0.0038606363852215, -0.0014507340945908, 0.0024489243815523, 0.0055987186471211, 0.0057705307663451, 0.0022226683344412, -0.0035036863386865, -0.0081289422623303, -0.0084269758191975, -0.0033347717101330, 0.0049319056855186, 0.0116673991980949, 0.0122195177108518, 0.0049860194363942, -0.0069600525064408, -0.0169004061958973, -0.0180041048574631, -0.0076258897964686, 0.0101458756070637, 0.0255847362406635, 0.0280993703146360, 0.0125508957876736, -0.0162678073198399, -0.0438597596479416, -0.0516282045539403, -0.0256831488498926, 0.0353080736910379, 0.1173458947603512, 0.1953111386765199, 0.2427155307119274, 0.2427155307119275, 0.1953111386765199, 0.1173458947603512, 0.0353080736910379, -0.0256831488498926, -0.0516282045539403, -0.0438597596479416, -0.0162678073198399, 0.0125508957876736, 0.0280993703146360, 0.0255847362406635, 0.0101458756070637, -0.0076258897964686, -0.0180041048574631, -0.0169004061958973, -0.0069600525064408, 0.0049860194363942, 0.0122195177108518, 0.0116673991980949, 0.0049319056855186, -0.0033347717101330, -0.0084269758191975, -0.0081289422623303, -0.0035036863386865, 0.0022226683344412, 0.0057705307663451, 0.0055987186471211, 0.0024489243815523, -0.0014507340945908, -0.0038606363852214, -0.0037544126485350, -0.0016601832557821, 0.0009146857642078, 0.0024915418423841, 0.0024224384337026, 0.0010799820573451, -0.0005518542214485, -0.0015397255009494, -0.0014968764631324, -0.0006735180958441, 0.0003198823196113, 0.0009214286447099, 0.0009044243294414, 0.0004164064769556, -0.0001872428398401, -0.0005730851022636, -0.0005878482226797, -0.0002887027062308, 0.0001287637146300, 0.0004418158615696}; /* Low pass filter, sample rate 8000 Hz, 60dB dB atten, pass 1100 Hz, stop 1300 Hz Designed for 2020B. Generated using Octave: octave:77> h = fir1(99, 2400/8000); f=500:1500; w=f*pi/4000; H=freqz(h,1,w); octave:78> clf; plot(f,20*log10(abs(H))); grid; axis([500 1500 -60 10]) octave:79> save_array_c_header(h,"filtP1100S1300","t.h") */ float filtP1100S1300[] = { 0.0002976192596492, 0.0005268501327879, 0.0003323197705342, -0.0001770640927819, -0.0006221531076115, -0.0006005231876771, -0.0000195189229256, 0.0007355731515642, 0.0010099584762544, 0.0004067132502827, -0.0007585687884437, -0.0015415736366462, -0.0010864635373405, 0.0005254729116986, 0.0020855203587287, 0.0021026629812395, 0.0001529382567188, -0.0024362700654142, -0.0033992733694222, -0.0014410368832294, 0.0023100278520809, 0.0047915084415380, 0.0034240108979541, -0.0013824387082528, -0.0059564413269030, -0.0060581288076594, -0.0006611518028655, 0.0064434052119832, 0.0091346892160535, 0.0040759939927406, -0.0056953567245917, -0.0122613043769937, -0.0090272691278832, 0.0030572766146697, 0.0148523753937746, 0.0156061208345573, 0.0022854541227764, -0.0160929898905979, -0.0239498761167209, -0.0116013322861975, 0.0147513846300672, 0.0346571639712145, 0.0277787088019838, -0.0082808984532188, -0.0505010122605824, -0.0613407201912362, -0.0130972319259225, 0.0900965824440442, 0.2087764094817421, 0.2877718571344791, 0.2877718571344791, 0.2087764094817421, 0.0900965824440442, -0.0130972319259225, -0.0613407201912362, -0.0505010122605824, -0.0082808984532188, 0.0277787088019838, 0.0346571639712145, 0.0147513846300672, -0.0116013322861975, -0.0239498761167209, -0.0160929898905979, 0.0022854541227764, 0.0156061208345573, 0.0148523753937746, 0.0030572766146697, -0.0090272691278832, -0.0122613043769937, -0.0056953567245917, 0.0040759939927406, 0.0091346892160535, 0.0064434052119832, -0.0006611518028655, -0.0060581288076594, -0.0059564413269030, -0.0013824387082528, 0.0034240108979541, 0.0047915084415380, 0.0023100278520809, -0.0014410368832294, -0.0033992733694222, -0.0024362700654142, 0.0001529382567188, 0.0021026629812395, 0.0020855203587287, 0.0005254729116986, -0.0010864635373405, -0.0015415736366462, -0.0007585687884437, 0.0004067132502827, 0.0010099584762544, 0.0007355731515642, -0.0000195189229256, -0.0006005231876771, -0.0006221531076115, -0.0001770640927819, 0.0003323197705342, 0.0005268501327879, 0.0002976192596492}; /* Low pass prototype, sample rate 8000 Hz, 60dB dB atten. Used as an input BPF for datac4 and datac13 Generated using Octave: octave:77> h = fir1(99, 400/8000); f=0:500; w=f*pi/4000; H=freqz(h,1,w); octave:78> clf; plot(f,20*log10(abs(H))); grid; axis([0 500 -60 10]) octave:79> save_array_c_header(h,"filtP200S400","t.h") */ float filtP200S400[] = { 0.0004961403001099, 0.0004878954300076, 0.0004773254753068, 0.0004613755012320, 0.0004356367390736, 0.0003945564225800, 0.0003317489139155, 0.0002403980632049, 0.0001137356780462, -0.0000544235817172, -0.0002691144005802, -0.0005336465184803, -0.0008490522002088, -0.0012135843244779, -0.0016222933008125, -0.0020667090843560, -0.0025346513768318, -0.0030101867721908, -0.0034737462756490, -0.0039024104893224, -0.0042703630503403, -0.0045495058923843, -0.0047102228630850, -0.0047222714599590, -0.0045557762351127, -0.0041822920363898, -0.0035759009450005, -0.0027143037436366, -0.0015798651637566, -0.0001605721201941, 0.0015491343107337, 0.0035476892962647, 0.0058259285585604, 0.0083668321698320, 0.0111455063209044, 0.0141294135724972, 0.0172788535145399, 0.0205476868890766, 0.0238842874108655, 0.0272326970839423, 0.0305339530892875, 0.0337275476120884, 0.0367529765550393, 0.0395513291682391, 0.0420668683822783, 0.0442485511620683, 0.0460514395405405, 0.0474379561100668, 0.0483789425435863, 0.0488544860205982, 0.0488544860205982, 0.0483789425435863, 0.0474379561100668, 0.0460514395405405, 0.0442485511620683, 0.0420668683822783, 0.0395513291682391, 0.0367529765550394, 0.0337275476120884, 0.0305339530892875, 0.0272326970839423, 0.0238842874108655, 0.0205476868890766, 0.0172788535145399, 0.0141294135724972, 0.0111455063209044, 0.0083668321698320, 0.0058259285585604, 0.0035476892962647, 0.0015491343107337, -0.0001605721201941, -0.0015798651637566, -0.0027143037436366, -0.0035759009450005, -0.0041822920363898, -0.0045557762351127, -0.0047222714599590, -0.0047102228630850, -0.0045495058923843, -0.0042703630503403, -0.0039024104893224, -0.0034737462756490, -0.0030101867721908, -0.0025346513768318, -0.0020667090843560, -0.0016222933008125, -0.0012135843244779, -0.0008490522002088, -0.0005336465184803, -0.0002691144005802, -0.0000544235817172, 0.0001137356780462, 0.0002403980632049, 0.0003317489139155, 0.0003945564225800, 0.0004356367390736, 0.0004613755012320, 0.0004773254753068, 0.0004878954300076, 0.0004961403001099}; // FIR filter suitable for changing rates 7500 to/from 8000 // Sample 120000 Hz, pass 2700, stop 3730, ripple 0.1dB, atten 100 dB. Stop // 0.03108. float quiskFilt120t480[480] = { -0.000005050567303837, -0.000000267011791999, 0.000000197734700398, 0.000001038946634000, 0.000002322193058869, 0.000004115682735322, 0.000006499942123311, 0.000009551098482930, 0.000013350669444763, 0.000017966192635412, 0.000023463361155584, 0.000029885221425020, 0.000037271082107518, 0.000045630720487935, 0.000054970017069384, 0.000065233162392019, 0.000076360900545177, 0.000088271373315159, 0.000100818605854714, 0.000113853476544409, 0.000127174196746337, 0.000140558396336177, 0.000153744508371709, 0.000166450784469067, 0.000178368313347299, 0.000189176709991702, 0.000198541881389953, 0.000206128795372885, 0.000211604878787747, 0.000214655997661182, 0.000214994859281552, 0.000212358734245594, 0.000206539880117977, 0.000197379393194548, 0.000184780318878738, 0.000168719942655099, 0.000149250512353807, 0.000126511346757621, 0.000100726393185629, 0.000072210925236429, 0.000041365841965015, 0.000008680571408025, -0.000025277165852799, -0.000059865389594949, -0.000094384355854646, -0.000128080670195777, -0.000160170174848483, -0.000189854272533545, -0.000216333899003825, -0.000238836419299503, -0.000256632149501508, -0.000269058714331757, -0.000275541485292432, -0.000275614059005332, -0.000268937472718753, -0.000255317038867589, -0.000234717772155001, -0.000207273956099563, -0.000173297342436372, -0.000133280012107173, -0.000087895370243821, -0.000037986085678081, 0.000015440388211825, 0.000071232572821451, 0.000128114399130489, 0.000184710477990398, 0.000239577162514028, 0.000291234779803098, 0.000338204791740229, 0.000379047713684221, 0.000412403761615261, 0.000437031818051652, 0.000451848709179591, 0.000455966225408344, 0.000448726371643413, 0.000429729020814434, 0.000398857326863837, 0.000356297600912998, 0.000302547334727027, 0.000238422248479072, 0.000165048886226905, 0.000083853091464077, -0.000003462782744354, -0.000094949813106744, -0.000188451833293202, -0.000281651282503015, -0.000372121907291206, -0.000457387566635848, -0.000534985542936898, -0.000602532044011899, -0.000657788245032425, -0.000698728981427767, -0.000723604675185869, -0.000731002305621048, -0.000719899536922384, -0.000689709694056092, -0.000640319946685634, -0.000572115873292030, -0.000485996080304965, -0.000383371840261246, -0.000266155252511831, -0.000136731311264191, 0.000002082667095075, 0.000147092077716480, 0.000294790953130229, 0.000441441918072383, 0.000583164190168290, 0.000716029226064227, 0.000836164238172957, 0.000939856052624227, 0.001023657909064450, 0.001084492755093968, 0.001119751426837743, 0.001127383039339373, 0.001105974243787613, 0.001054815583369999, 0.000973950761085690, 0.000864209315714227, 0.000727219011746881, 0.000565398080608305, 0.000381924396468366, 0.000180685902835315, -0.000033793183292569, -0.000256444114966522, -0.000481764526566339, -0.000703946352348464, -0.000917016099829735, -0.001114986581270253, -0.001292014799874503, -0.001442563411804926, -0.001561559957317790, -0.001644551048567398, -0.001687846581475964, -0.001688649703502788, -0.001645167889846890, -0.001556702802350076, -0.001423714708648073, -0.001247857669697092, -0.001031986722557201, -0.000780131048444402, -0.000497436825078657, -0.000190077210351809, 0.000134868279325909, 0.000469563533327739, 0.000805591531546815, 0.001134152328775355, 0.001446279849797673, 0.001733071409562941, 0.001985924997799762, 0.002196778054604388, 0.002358342626407065, 0.002464328098407475, 0.002509648218888532, 0.002490604086803692, 0.002405037734357425, 0.002252452724297770, 0.002034094661603120, 0.001752990365583534, 0.001413941154886139, 0.001023470495638453, 0.000589723521647734, 0.000122320866350319, -0.000367832138027160, -0.000868777013398284, -0.001367771151677059, -0.001851587344265625, -0.002306838088978190, -0.002720317947026380, -0.003079353614002113, -0.003372155891804708, -0.003588162376578369, -0.003718362558663737, -0.003755596511143005, -0.003694818131674599, -0.003533315298404129, -0.003270878754553819, -0.002909914962857412, -0.002455496391464944, -0.001915346645364514, -0.001299757227227888, -0.000621437066532776, 0.000104706515738248, 0.000861849931067767, 0.001631595707499856, 0.002394368911341672, 0.003129858565588139, 0.003817496679992245, 0.004436963307209760, 0.004968707287606522, 0.005394469536085115, 0.005697797543539088, 0.005864537618023589, 0.005883292537600076, 0.005745832319314692, 0.005447447099071761, 0.004987231255534477, 0.004368289529377007, 0.003597859022418248, 0.002687338851256991, 0.001652226293162047, 0.000511956075882180, -0.000710356149138656, -0.001988263330091648, -0.003292424566049982, -0.004591123342747130, -0.005850857852106148, -0.007036991266043732, -0.008114450164977267, -0.009048456200082230, -0.009805276478965942, -0.010352975302354198, -0.010662152577592631, -0.010706650669328861, -0.010464214075017983, -0.009917087295446811, -0.009052534679222271, -0.007863270920348924, -0.006347789704693751, -0.004510582323649121, -0.002362238055733795, 0.000080576968834213, 0.002795265196543707, 0.005753566158586979, 0.008921944932552510, 0.012262093950265378, 0.015731539846483594, 0.019284344624007944, 0.022871886384520687, 0.026443706729191677, 0.029948406200633094, 0.033334570666910354, 0.036551709955124537, 0.039551189200810140, 0.042287133974308874, 0.044717290029466283, 0.046803820535016104, 0.048514022996355009, 0.049820951883635139, 0.050703932928426454, 0.051148959210315710, 0.051148959210315710, 0.050703932928426454, 0.049820951883635139, 0.048514022996355009, 0.046803820535016104, 0.044717290029466283, 0.042287133974308874, 0.039551189200810140, 0.036551709955124537, 0.033334570666910354, 0.029948406200633094, 0.026443706729191677, 0.022871886384520687, 0.019284344624007944, 0.015731539846483594, 0.012262093950265378, 0.008921944932552510, 0.005753566158586979, 0.002795265196543707, 0.000080576968834213, -0.002362238055733795, -0.004510582323649121, -0.006347789704693751, -0.007863270920348924, -0.009052534679222271, -0.009917087295446811, -0.010464214075017983, -0.010706650669328861, -0.010662152577592631, -0.010352975302354198, -0.009805276478965942, -0.009048456200082230, -0.008114450164977267, -0.007036991266043732, -0.005850857852106148, -0.004591123342747130, -0.003292424566049982, -0.001988263330091648, -0.000710356149138656, 0.000511956075882180, 0.001652226293162047, 0.002687338851256991, 0.003597859022418248, 0.004368289529377007, 0.004987231255534477, 0.005447447099071761, 0.005745832319314692, 0.005883292537600076, 0.005864537618023589, 0.005697797543539088, 0.005394469536085115, 0.004968707287606522, 0.004436963307209760, 0.003817496679992245, 0.003129858565588139, 0.002394368911341672, 0.001631595707499856, 0.000861849931067767, 0.000104706515738248, -0.000621437066532776, -0.001299757227227888, -0.001915346645364514, -0.002455496391464944, -0.002909914962857412, -0.003270878754553819, -0.003533315298404129, -0.003694818131674599, -0.003755596511143005, -0.003718362558663737, -0.003588162376578369, -0.003372155891804708, -0.003079353614002113, -0.002720317947026380, -0.002306838088978190, -0.001851587344265625, -0.001367771151677059, -0.000868777013398284, -0.000367832138027160, 0.000122320866350319, 0.000589723521647734, 0.001023470495638453, 0.001413941154886139, 0.001752990365583534, 0.002034094661603120, 0.002252452724297770, 0.002405037734357425, 0.002490604086803692, 0.002509648218888532, 0.002464328098407475, 0.002358342626407065, 0.002196778054604388, 0.001985924997799762, 0.001733071409562941, 0.001446279849797673, 0.001134152328775355, 0.000805591531546815, 0.000469563533327739, 0.000134868279325909, -0.000190077210351809, -0.000497436825078657, -0.000780131048444402, -0.001031986722557201, -0.001247857669697092, -0.001423714708648073, -0.001556702802350076, -0.001645167889846890, -0.001688649703502788, -0.001687846581475964, -0.001644551048567398, -0.001561559957317790, -0.001442563411804926, -0.001292014799874503, -0.001114986581270253, -0.000917016099829735, -0.000703946352348464, -0.000481764526566339, -0.000256444114966522, -0.000033793183292569, 0.000180685902835315, 0.000381924396468366, 0.000565398080608305, 0.000727219011746881, 0.000864209315714227, 0.000973950761085690, 0.001054815583369999, 0.001105974243787613, 0.001127383039339373, 0.001119751426837743, 0.001084492755093968, 0.001023657909064450, 0.000939856052624227, 0.000836164238172957, 0.000716029226064227, 0.000583164190168290, 0.000441441918072383, 0.000294790953130229, 0.000147092077716480, 0.000002082667095075, -0.000136731311264191, -0.000266155252511831, -0.000383371840261246, -0.000485996080304965, -0.000572115873292030, -0.000640319946685634, -0.000689709694056092, -0.000719899536922384, -0.000731002305621048, -0.000723604675185869, -0.000698728981427767, -0.000657788245032425, -0.000602532044011899, -0.000534985542936898, -0.000457387566635848, -0.000372121907291206, -0.000281651282503015, -0.000188451833293202, -0.000094949813106744, -0.000003462782744354, 0.000083853091464077, 0.000165048886226905, 0.000238422248479072, 0.000302547334727027, 0.000356297600912998, 0.000398857326863837, 0.000429729020814434, 0.000448726371643413, 0.000455966225408344, 0.000451848709179591, 0.000437031818051652, 0.000412403761615261, 0.000379047713684221, 0.000338204791740229, 0.000291234779803098, 0.000239577162514028, 0.000184710477990398, 0.000128114399130489, 0.000071232572821451, 0.000015440388211825, -0.000037986085678081, -0.000087895370243821, -0.000133280012107173, -0.000173297342436372, -0.000207273956099563, -0.000234717772155001, -0.000255317038867589, -0.000268937472718753, -0.000275614059005332, -0.000275541485292432, -0.000269058714331757, -0.000256632149501508, -0.000238836419299503, -0.000216333899003825, -0.000189854272533545, -0.000160170174848483, -0.000128080670195777, -0.000094384355854646, -0.000059865389594949, -0.000025277165852799, 0.000008680571408025, 0.000041365841965015, 0.000072210925236429, 0.000100726393185629, 0.000126511346757621, 0.000149250512353807, 0.000168719942655099, 0.000184780318878738, 0.000197379393194548, 0.000206539880117977, 0.000212358734245594, 0.000214994859281552, 0.000214655997661182, 0.000211604878787747, 0.000206128795372885, 0.000198541881389953, 0.000189176709991702, 0.000178368313347299, 0.000166450784469067, 0.000153744508371709, 0.000140558396336177, 0.000127174196746337, 0.000113853476544409, 0.000100818605854714, 0.000088271373315159, 0.000076360900545177, 0.000065233162392019, 0.000054970017069384, 0.000045630720487935, 0.000037271082107518, 0.000029885221425020, 0.000023463361155584, 0.000017966192635412, 0.000013350669444763, 0.000009551098482930, 0.000006499942123311, 0.000004115682735322, 0.000002322193058869, 0.000001038946634000, 0.000000197734700398, -0.000000267011791999, -0.000005050567303837}; codec2-1.2.0/src/fm.c000066400000000000000000000214221445607075400142230ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: fm.c AUTHOR......: David Rowe DATE CREATED: February 2015 Functions that implement analog FM modulation and demodulation, see also octave/fm.m. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2015 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ /*---------------------------------------------------------------------------*\ DEFINES \*---------------------------------------------------------------------------*/ #define FILT_MEM 200 /*---------------------------------------------------------------------------*\ INCLUDES \*---------------------------------------------------------------------------*/ #include #include #include #include #include #include "codec2_fm.h" #include "comp_prim.h" #include "fm_fir_coeff.h" /*---------------------------------------------------------------------------*\ FUNCTIONS \*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*\ FUNCTION....: fm_create AUTHOR......: David Rowe DATE CREATED: 24 Feb 2015 Create and initialise an instance of the "modem". Returns a pointer to the modem states or NULL on failure. One set of states is sufficient for a full duplex modem. \*---------------------------------------------------------------------------*/ struct FM *fm_create(int nsam) { struct FM *fm; fm = (struct FM *)malloc(sizeof(struct FM)); if (fm == NULL) return NULL; fm->rx_bb = (COMP *)malloc(sizeof(COMP) * (FILT_MEM + nsam)); assert(fm->rx_bb != NULL); fm->rx_bb_filt_prev.real = 0.0; fm->rx_bb_filt_prev.imag = 0.0; fm->lo_phase.real = 1.0; fm->lo_phase.imag = 0.0; fm->tx_phase = 0; fm->rx_dem_mem = (float *)malloc(sizeof(float) * (FILT_MEM + nsam)); assert(fm->rx_dem_mem != NULL); fm->nsam = nsam; return fm; } void fm_destroy(struct FM *fm_states) { free(fm_states->rx_bb); free(fm_states->rx_dem_mem); free(fm_states); } /*---------------------------------------------------------------------------*\ FUNCTION....: fm_demod AUTHOR......: David Rowe DATE CREATED: 24 Feb 2015 Demodulate a FM signal to baseband audio. \*---------------------------------------------------------------------------*/ void fm_demod(struct FM *fm_states, float rx_out[], float rx[]) { float Fs = fm_states->Fs; float fc = fm_states->fc; float wc = 2 * M_PI * fc / Fs; float fd = fm_states->fd; float wd = 2 * M_PI * fd / Fs; COMP *rx_bb = fm_states->rx_bb + FILT_MEM; COMP wc_rect, rx_bb_filt, rx_bb_diff; float rx_dem; /* float acc; */ float *rx_dem_mem = fm_states->rx_dem_mem + FILT_MEM; int nsam = fm_states->nsam; float mag; int i, k; wc_rect.real = cosf(wc); wc_rect.imag = -sinf(wc); for (i = 0; i < nsam; i++) { /* down to complex baseband */ fm_states->lo_phase = cmult(fm_states->lo_phase, wc_rect); rx_bb[i] = fcmult(rx[i], fm_states->lo_phase); /* input FIR filter */ rx_bb_filt.real = 0.0; rx_bb_filt.imag = 0.0; for (k = 0; k < FILT_MEM / 2; k++) { rx_bb_filt.real += rx_bb[i - k].real * bin[k + FILT_MEM / 4]; rx_bb_filt.imag += rx_bb[i - k].imag * bin[k + FILT_MEM / 4]; } // rx_bb_filt = rx_bb[i]; // printf("%f %f %f\n", rx[i], wc_rect.real, wc_rect.imag); // printf("%f %f %f\n", rx[i], fm_states->lo_phase.real, // fm_states->lo_phase.imag); printf("%f %f %f\n", rx[i], rx_bb[i].real, // rx_bb[i].imag); printf("%f %f\n", rx_bb_filt.real, rx_bb_filt.imag); /* Differentiate first, in rect domain, then find angle, this puts signal on the positive side of the real axis and helps atan2() behaive. */ rx_bb_diff = cmult(rx_bb_filt, cconj(fm_states->rx_bb_filt_prev)); fm_states->rx_bb_filt_prev = rx_bb_filt; rx_dem = atan2f(rx_bb_diff.imag, rx_bb_diff.real); /* limit maximum phase jumps, to remove static type noise at low SNRs */ if (rx_dem > wd) rx_dem = wd; if (rx_dem < -wd) rx_dem = -wd; rx_dem *= (1 / wd); // printf("%f %f\n", rx_bb_diff.real, rx_bb_diff.imag); rx_dem_mem[i] = rx_dem; /* acc = 0; for(k=0; klo_phase); fm_states->lo_phase.real /= mag; fm_states->lo_phase.imag /= mag; } /*---------------------------------------------------------------------------*\ FUNCTION....: fm_mod AUTHOR......: Brady O'Brien DATE CREATED: Sept. 10 2015 Modulate an FM signal from a baseband modulating signal struct FM *fm - FM state structure. Can be reused from fm_demod. float tx_in[] - nsam baseband samples to be modulated float tx_out[] - nsam samples in which to place the modulated FM \*---------------------------------------------------------------------------*/ void fm_mod(struct FM *fm_states, float tx_in[], float tx_out[]) { float Fs = fm_states->Fs; // Sampling freq float fc = fm_states->fc; // Center freq float wc = 2 * M_PI * fc / Fs; // Center freq in rads/samp float fd = fm_states->fd; // Max deviation in cycles/samp float wd = 2 * M_PI * fd / Fs; // Max deviation in rads/samp int nsam = fm_states->nsam; // Samples per batch of modulation float tx_phase = fm_states->tx_phase; // Transmit phase in rads float w; // Temp variable for phase of VFO during loop int i; // Go through the samples, spin the oscillator, and generate some FM for (i = 0; i < nsam; i++) { w = wc + wd * tx_in[i]; // Calculate phase of VFO tx_phase += w; // Spin TX oscillator // TODO: Add pre-emphasis and pre-emph AGC for voice // Make sure tx_phase stays from 0 to 2PI. // If tx_phase goes above 4PI, It's because fc+fd*tx_in[i] is way too large // for the sample // rate. if (tx_phase > 2 * M_PI) tx_phase -= 2 * M_PI; tx_out[i] = cosf(tx_phase); } // Save phase back into state struct fm_states->tx_phase = tx_phase; } /*---------------------------------------------------------------------------*\ FUNCTION....: fm_mod AUTHOR......: Brady O'Brien DATE CREATED: Sept. 10 2015 Modulate an FM signal from a baseband modulating signal. Output signal is in complex domain struct FM *fm - FM state structure. Can be reused from fm_demod. float tx_in[] - nsam baseband samples to be modulated COMP tx_out[] - nsam samples in which to place the modulated FM \*---------------------------------------------------------------------------*/ void fm_mod_comp(struct FM *fm_states, float tx_in[], COMP tx_out[]) { float Fs = fm_states->Fs; // Sampling freq float fc = fm_states->fc; // Center freq float wc = 2 * M_PI * fc / Fs; // Center freq in rads/samp float fd = fm_states->fd; // Max deviation in cycles/samp float wd = 2 * M_PI * fd / Fs; // Max deviation in rads/samp int nsam = fm_states->nsam; // Samples per batch of modulation float tx_phase = fm_states->tx_phase; // Transmit phase in rads float w; // Temp variable for phase of VFO during loop int i; // Go through the samples, spin the oscillator, and generate some FM for (i = 0; i < nsam; i++) { w = wc + wd * tx_in[i]; // Calculate phase of VFO tx_phase += w; // Spin TX oscillator // TODO: Add pre-emphasis and pre-emph AGC for voice // Make sure tx_phase stays from 0 to 2PI. // If tx_phase goes above 4PI, It's because fc+fd*tx_in[i] is way too large // for the sample // rate. if (tx_phase > 2 * M_PI) tx_phase -= 2 * M_PI; tx_out[i].real = cosf(tx_phase); tx_out[i].imag = sinf(tx_phase); } // Save phase back into state struct fm_states->tx_phase = tx_phase; } codec2-1.2.0/src/fm_fir_coeff.h000066400000000000000000000135151445607075400162360ustar00rootroot00000000000000/* Generated by fm_fir_coeff_file() Octave function in fm.m */ const float bin[] = { 4.79309e-05, 1.1306e-05, -5.5983e-05, -7.01194e-05, 7.06484e-06, 9.92193e-05, 8.58591e-05, -4.54326e-05, -0.000152003, -8.65645e-05, 0.000107704, 0.000207915, 6.24307e-05, -0.000194905, -0.000256788, -3.72067e-06, 0.000303862, 0.000285027, -9.75377e-05, -0.000426141, -0.000276571, 0.000245596, 0.00054748, 0.000214543, -0.000438995, -0.000647904, -8.35097e-05, 0.000668808, 0.000702715, -0.000127804, -0.000917433, -0.000684399, 0.000423605, 0.00115821, 0.000565432, -0.000798262, -0.00135608, -0.000321829, 0.00123404, 0.00146953, -6.28411e-05, -0.00169975, -0.00145365, 0.000593351, 0.00215057, 0.00126444, -0.00125906, -0.00252937, -0.000863858, 0.00203097, 0.00276961, 0.000225378, -0.00286002, -0.00279968, 0.00066048, 0.00367697, 0.00254856, -0.00178121, -0.00439398, -0.00195226, 0.00309842, 0.00490791, 0.000960678, -0.0045454, -0.00510509, 0.000456067, 0.00602631, 0.00486678, -0.00230217, -0.00741688, -0.00407467, 0.00455244, 0.00856596, 0.0026148, -0.00715072, -0.0092966, -0.000377815, 0.0100109, 0.00940383, -0.00274808, -0.0130204, -0.00864357, 0.00689875, 0.0160465, 0.0066998, -0.0122874, -0.0189444, -0.0030966, 0.0193367, 0.0215669, -0.00304913, -0.0290487, -0.0237748, 0.0138493, 0.0443198, 0.0254471, -0.0364426, -0.0771407, -0.0264901, 0.120993, 0.285249, 0.366844, 0.285249, 0.120993, -0.0264901, -0.0771407, -0.0364426, 0.0254471, 0.0443198, 0.0138493, -0.0237748, -0.0290487, -0.00304913, 0.0215669, 0.0193367, -0.0030966, -0.0189444, -0.0122874, 0.0066998, 0.0160465, 0.00689875, -0.00864357, -0.0130204, -0.00274808, 0.00940383, 0.0100109, -0.000377815, -0.0092966, -0.00715072, 0.0026148, 0.00856596, 0.00455244, -0.00407467, -0.00741688, -0.00230217, 0.00486678, 0.00602631, 0.000456067, -0.00510509, -0.0045454, 0.000960678, 0.00490791, 0.00309842, -0.00195226, -0.00439398, -0.00178121, 0.00254856, 0.00367697, 0.00066048, -0.00279968, -0.00286002, 0.000225378, 0.00276961, 0.00203097, -0.000863858, -0.00252937, -0.00125906, 0.00126444, 0.00215057, 0.000593351, -0.00145365, -0.00169975, -6.28411e-05, 0.00146953, 0.00123404, -0.000321829, -0.00135608, -0.000798262, 0.000565432, 0.00115821, 0.000423605, -0.000684399, -0.000917433, -0.000127804, 0.000702715, 0.000668808, -8.35097e-05, -0.000647904, -0.000438995, 0.000214543, 0.00054748, 0.000245596, -0.000276571, -0.000426141, -9.75377e-05, 0.000285027, 0.000303862, -3.72067e-06, -0.000256788, -0.000194905, 6.24307e-05, 0.000207915, 0.000107704, -8.65645e-05, -0.000152003, -4.54326e-05, 8.58591e-05, 9.92193e-05, 7.06484e-06, -7.01194e-05, -5.5983e-05, 1.1306e-05, 4.79309e-05}; const float bout[] = { -0.000901664, -0.00105423, -0.00102202, -0.000796428, -0.0004047, 9.24929e-05, 0.000610043, 0.00105267, 0.00133217, 0.00138452, 0.00118367, 0.000749102, 0.000145346, -0.000527025, -0.00114777, -0.00159812, -0.00178311, -0.00165083, -0.00120494, -0.000507584, 0.000328412, 0.0011573, 0.00182538, 0.00219909, 0.00219097, 0.00177877, 0.00101358, 1.48175e-05, -0.00104765, -0.00198192, -0.00260813, -0.00279243, -0.00247437, -0.00168247, -0.000534171, 0.000780521, 0.00202976, 0.00298006, 0.00343915, 0.00329371, 0.00253482, 0.00126569, -0.000310763, -0.00192329, -0.00327808, -0.0041113, -0.00423916, -0.00359628, -0.00225463, -0.000418452, 0.00160526, 0.00345676, 0.00478613, 0.00531776, 0.00490513, 0.00356541, 0.00148629, -0.000997692, -0.00345694, -0.0054391, -0.00654985, -0.00652835, -0.00530323, -0.00301796, -1.90046e-05, 0.00319335, 0.00604515, 0.00798756, 0.00859787, 0.00766479, 0.00524199, 0.001658, -0.00252213, -0.00658004, -0.00976079, -0.011405, -0.0110744, -0.00864874, -0.00437487, 0.00114403, 0.00702171, 0.0122173, 0.0157018, 0.0166372, 0.0145415, 0.00940928, 0.00176699, -0.00735151, -0.0165112, -0.0240533, -0.0283208, -0.027902, -0.0218568, -0.00988994, 0.0075553, 0.0293009, 0.0535398, 0.0780316, 0.100365, 0.118251, 0.129808, 0.143804, 0.129808, 0.118251, 0.100365, 0.0780316, 0.0535398, 0.0293009, 0.0075553, -0.00988994, -0.0218568, -0.027902, -0.0283208, -0.0240533, -0.0165112, -0.00735151, 0.00176699, 0.00940928, 0.0145415, 0.0166372, 0.0157018, 0.0122173, 0.00702171, 0.00114403, -0.00437487, -0.00864874, -0.0110744, -0.011405, -0.00976079, -0.00658004, -0.00252213, 0.001658, 0.00524199, 0.00766479, 0.00859787, 0.00798756, 0.00604515, 0.00319335, -1.90046e-05, -0.00301796, -0.00530323, -0.00652835, -0.00654985, -0.0054391, -0.00345694, -0.000997692, 0.00148629, 0.00356541, 0.00490513, 0.00531776, 0.00478613, 0.00345676, 0.00160526, -0.000418452, -0.00225463, -0.00359628, -0.00423916, -0.0041113, -0.00327808, -0.00192329, -0.000310763, 0.00126569, 0.00253482, 0.00329371, 0.00343915, 0.00298006, 0.00202976, 0.000780521, -0.000534171, -0.00168247, -0.00247437, -0.00279243, -0.00260813, -0.00198192, -0.00104765, 1.48175e-05, 0.00101358, 0.00177877, 0.00219097, 0.00219909, 0.00182538, 0.0011573, 0.000328412, -0.000507584, -0.00120494, -0.00165083, -0.00178311, -0.00159812, -0.00114777, -0.000527025, 0.000145346, 0.000749102, 0.00118367, 0.00138452, 0.00133217, 0.00105267, 0.000610043, 9.24929e-05, -0.0004047, -0.000796428, -0.00102202, -0.00105423, -0.000901664}; codec2-1.2.0/src/fmfsk.c000066400000000000000000000256651445607075400147440ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: fmfsk.c AUTHOR......: Brady O'Brien DATE CREATED: 6 February 2016 C Implementation of a FM+ME+FSK modem for FreeDV mode B and other applications (better APRS, anyone?) \*---------------------------------------------------------------------------*/ /* Copyright (C) 2016 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "fmfsk.h" #include #include #include #include #include #include #include "comp_prim.h" #include "modem_probe.h" #define STD_PROC_BITS 96 /* * Create a new fmfsk modem instance. * * int Fs - sample rate * int Rb - non-manchester bitrate * returns - new struct FMFSK on success, NULL on failure */ struct FMFSK *fmfsk_create(int Fs, int Rb) { assert(Fs % (Rb * 2) == 0); /* Sample freq must be divisible by symbol rate */ int nbits = STD_PROC_BITS; /* Allocate the struct */ struct FMFSK *fmfsk = malloc(sizeof(struct FMFSK)); if (fmfsk == NULL) return NULL; /* Set up static parameters */ fmfsk->Rb = Rb; fmfsk->Rs = Rb * 2; fmfsk->Fs = Fs; fmfsk->Ts = Fs / fmfsk->Rs; fmfsk->N = nbits * 2 * fmfsk->Ts; fmfsk->nmem = fmfsk->N + (fmfsk->Ts * 4); fmfsk->nsym = nbits * 2; fmfsk->nbit = nbits; /* Set up demod state */ fmfsk->lodd = 0; fmfsk->nin = fmfsk->N; fmfsk->snr_mean = 0; float *oldsamps = malloc(sizeof(float) * fmfsk->nmem); if (oldsamps == NULL) { free(fmfsk); return NULL; } for (int i = 0; i < fmfsk->nmem; i++) oldsamps[i] = 0.0; fmfsk->oldsamps = oldsamps; fmfsk->stats = (struct MODEM_STATS *)malloc(sizeof(struct MODEM_STATS)); if (fmfsk->stats == NULL) { free(oldsamps); free(fmfsk); return NULL; } return fmfsk; } /* * Destroys an fmfsk modem and deallocates memory */ void fmfsk_destroy(struct FMFSK *fmfsk) { free(fmfsk->oldsamps); free(fmfsk); } /* * Returns the number of samples that must be fed to fmfsk_demod the next * cycle */ uint32_t fmfsk_nin(struct FMFSK *fmfsk) { return (uint32_t)fmfsk->nin; } void fmfsk_get_demod_stats(struct FMFSK *fmfsk, struct MODEM_STATS *stats) { /* copy from internal stats, note we can't overwrite stats completely as it has other states rqd by caller, also we want a consistent interface across modem types for the freedv_api. */ stats->clock_offset = fmfsk->stats->clock_offset; stats->snr_est = fmfsk->stats->snr_est; // TODO: make this SNR not Eb/No stats->rx_timing = fmfsk->stats->rx_timing; stats->foff = fmfsk->stats->foff; #ifndef __EMBEDDED__ stats->neyesamp = fmfsk->stats->neyesamp; stats->neyetr = fmfsk->stats->neyetr; memcpy(stats->rx_eye, fmfsk->stats->rx_eye, sizeof(stats->rx_eye)); #endif // !__EMBEDDED__ /* these fields not used for FSK so set to something sensible */ stats->sync = 0; stats->nr = fmfsk->stats->nr; stats->Nc = fmfsk->stats->Nc; } /* * Modulates nbit bits into N samples to be sent through an FM radio * * struct FSK *fsk - FSK config/state struct, set up by fsk_create * float mod_out[] - Buffer for N samples of modulated FMFSK * uint8_t tx_bits[] - Buffer containing Nbits unpacked bits */ void fmfsk_mod(struct FMFSK *fmfsk, float fmfsk_out[], uint8_t bits_in[]) { int i, j; int nbit = fmfsk->nbit; int Ts = fmfsk->Ts; for (i = 0; i < nbit; i++) { /* Save a manchester-encoded 0 */ if (bits_in[i] == 0) { for (j = 0; j < Ts; j++) fmfsk_out[j + i * Ts * 2] = -1; for (j = 0; j < Ts; j++) fmfsk_out[Ts + j + i * Ts * 2] = 1; } else { /* Save a manchester-encoded 1 */ for (j = 0; j < Ts; j++) fmfsk_out[j + i * Ts * 2] = 1; for (j = 0; j < Ts; j++) fmfsk_out[Ts + j + i * Ts * 2] = -1; } } } /* * Demodulate some number of FMFSK samples. The number of samples to be * demodulated can be found by calling fmfsk_nin(). * * struct FMFSK *fsk - FMFSK config/state struct, set up by fsk_create * uint8_t rx_bits[] - Buffer for nbit unpacked bits to be written * float fsk_in[] - nin samples of modualted FMFSK from an FM radio */ void fmfsk_demod(struct FMFSK *fmfsk, uint8_t rx_bits[], float fmfsk_in[]) { int i, j, k; int Ts = fmfsk->Ts; int Fs = fmfsk->Fs; int Rs = fmfsk->Rs; int nin = fmfsk->nin; int N = fmfsk->N; int nsym = fmfsk->nsym; int nbit = fmfsk->nbit; int nmem = fmfsk->nmem; float *oldsamps = fmfsk->oldsamps; int nold = nmem - nin; COMP phi_ft, dphi_ft; /* Phase and delta-phase for fine timing estimator */ float t; COMP x; /* Magic fine timing angle */ float norm_rx_timing, old_norm_rx_timing, d_norm_rx_timing, appm; int rx_timing, sample_offset; int next_nin; float apeven, apodd; /* Approx. prob of even or odd stream being correct */ float currv, mdiff, lastv; int neyesamp; int neyeoffset; float eye_max; uint8_t mbit; float var_signal = 0, var_noise = 0, lastFabsV; /* Shift in nin samples */ memmove(&oldsamps[0], &oldsamps[nmem - nold], sizeof(float) * nold); memcpy(&oldsamps[nold], &fmfsk_in[0], sizeof(float) * nin); /* Allocate memory for filtering */ float *rx_filt = malloc(sizeof(float) * (nsym + 1) * Ts); /* Integrate over Ts input symbols at every offset */ for (i = 0; i < (nsym + 1) * Ts; i++) { t = 0; /* Integrate over some samples */ for (j = i; j < i + Ts; j++) { t += oldsamps[j]; } rx_filt[i] = t; } /* * Fine timing estimation * * Estimate fine timing using line at Rs/2 that Manchester encoding provides * We need this to sync up to Manchester codewords. */ /* init fine timing extractor */ phi_ft.real = 1; phi_ft.imag = 0; /* Set up delta-phase */ dphi_ft.real = cosf(2 * M_PI * ((float)Rs) / ((float)Fs)); dphi_ft.imag = sinf(2 * M_PI * ((float)Rs) / ((float)Fs)); x.real = 0; x.imag = 0; for (i = 0; i < (nsym + 1) * Ts; i++) { /* Apply non-linearity */ t = rx_filt[i] * rx_filt[i]; /* Shift Rs/2 down to DC and accumulate */ x = cadd(x, fcmult(t, phi_ft)); /* Spin downshift oscillator */ phi_ft = cmult(dphi_ft, phi_ft); modem_probe_samp_c("t_phi_ft", &phi_ft, 1); } /* Figure out the normalized RX timing, using David's magic number */ norm_rx_timing = atan2f(x.imag, x.real) / (2 * M_PI) - .42; rx_timing = (int)lroundf(norm_rx_timing * (float)Ts); old_norm_rx_timing = fmfsk->norm_rx_timing; fmfsk->norm_rx_timing = norm_rx_timing; /* Estimate sample clock offset */ d_norm_rx_timing = norm_rx_timing - old_norm_rx_timing; /* Filter out big jumps in due to nin change */ if (fabsf(d_norm_rx_timing) < .2) { appm = 1e6 * d_norm_rx_timing / (float)nsym; fmfsk->ppm = .9 * fmfsk->ppm + .1 * appm; } /* Figure out how far offset the sample points are */ sample_offset = (Ts / 2) + Ts + rx_timing - 1; /* Request fewer or greater samples next time, if fine timing is far * enough off. This also makes it possible to tolerate clock offsets */ next_nin = N; if (norm_rx_timing > -.2) next_nin += Ts / 2; if (norm_rx_timing < -.65) next_nin -= Ts / 2; fmfsk->nin = next_nin; /* Make first diff of this round the last sample of the last round, * for the odd stream */ lastv = fmfsk->lodd; lastFabsV = fabs(lastv); apeven = 0; apodd = 0; for (i = 0; i < nsym; i++) { /* Sample a filtered value */ currv = rx_filt[sample_offset + (i * Ts)]; modem_probe_samp_f("t_symsamp", &currv, 1); mdiff = lastv - currv; mbit = mdiff > 0 ? 1 : 0; lastv = currv; // Calculate the signal variance. Note that the mean is zero var_signal += currv * currv; /* Calculate the variance of the noise between samples (symbols). A quick * variance estimate without calculating mean can be done by differentiating * (remove mean) and then dividing by 2. Fabs the samples as we are looking * at how close the samples are to each other as if they were all the same * polarity/symbol. */ currv = fabs(currv); var_noise += (currv - lastFabsV) * (currv - lastFabsV); lastFabsV = currv; mdiff = mdiff > 0 ? mdiff : 0 - mdiff; /* Put bit in it's stream */ if ((i % 2) == 1) { apeven += mdiff; /* Even stream goes in LSB */ rx_bits[i >> 1] |= mbit ? 0x1 : 0x0; } else { apodd += mdiff; /* Odd in second-to-LSB */ rx_bits[i >> 1] = mbit ? 0x2 : 0x0; } } /* Div by 2 to correct variance when doing via differentiation.*/ var_noise *= 0.5; if (apeven > apodd) { /* Zero out odd bits from output bitstream */ for (i = 0; i < nbit; i++) rx_bits[i] &= 0x1; } else { /* Shift odd bits into LSB and even bits out of existence */ for (i = 0; i < nbit; i++) rx_bits[i] = (rx_bits[i] & 0x2) >> 1; } /* Save last sample of int stream for next demod round */ fmfsk->lodd = lastv; /* Save demod statistics */ fmfsk->stats->Nc = 0; fmfsk->stats->nr = 0; /* Clock offset and RX timing are all we know here */ fmfsk->stats->clock_offset = fmfsk->ppm; fmfsk->stats->rx_timing = (float)rx_timing; /* Zero out all of the other things */ fmfsk->stats->foff = 0; /* Use moving average to smooth SNR */ var_signal += 1E-6 / 3.1; var_noise += 1E-6; /* prevent NAN and bias towards -5dB SNR for zero signal inputs */ if (fmfsk->snr_mean < 0.1) fmfsk->snr_mean = (10.0 * log10f(var_signal / var_noise)); else fmfsk->snr_mean = 0.9 * fmfsk->snr_mean + 0.1 * (10.0 * log10f(var_signal / var_noise)); fmfsk->stats->snr_est = fmfsk->snr_mean; #ifndef __EMBEDDED__ /* Collect an eye diagram */ /* Take a sample for the eye diagrams */ neyesamp = fmfsk->stats->neyesamp = Ts * 4; neyeoffset = sample_offset + (Ts * 2 * 28); fmfsk->stats->neyetr = 8; for (k = 0; k < fmfsk->stats->neyetr; k++) for (j = 0; j < neyesamp; j++) fmfsk->stats->rx_eye[k][j] = rx_filt[k * neyesamp + neyeoffset + j]; // fmfsk->stats->rx_eye[k][j] = fmfsk_in[k*neyesamp+neyeoffset+j]; eye_max = 0; /* Normalize eye to +/- 1 */ for (i = 0; i < fmfsk->stats->neyetr; i++) for (j = 0; j < neyesamp; j++) if (fabsf(fmfsk->stats->rx_eye[i][j]) > eye_max) eye_max = fabsf(fmfsk->stats->rx_eye[i][j]); for (i = 0; i < fmfsk->stats->neyetr; i++) for (j = 0; j < neyesamp; j++) fmfsk->stats->rx_eye[i][j] = (fmfsk->stats->rx_eye[i][j] / (2 * eye_max)) + .5; #endif // !__EMBEDDED__ modem_probe_samp_f("t_norm_rx_timing", &norm_rx_timing, 1); modem_probe_samp_f("t_rx_filt", rx_filt, (nsym + 1) * Ts); free(rx_filt); } codec2-1.2.0/src/fmfsk.h000066400000000000000000000066431445607075400147440ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: fmfsk.h AUTHOR......: Brady O'Brien DATE CREATED: 6 February 2016 C Implementation of 2FSK+Manchester over FM modulator/demodulator, based on mancyfsk.m and fmfsk.m \*---------------------------------------------------------------------------*/ /* Copyright (C) 2016 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __C2FMFSK_H #define __C2FMFSK_H #include #include "comp.h" #include "modem_stats.h" #define FMFSK_SCALE 16383 /* * fm-me-2fsk state */ struct FMFSK { /* Static fmfsk parameters */ int Rb; /* Manchester-encoded bitrate */ int Rs; /* Raw modem symbol rate */ int Fs; /* Sample rate */ int Ts; /* Samples-per-symbol */ int N; /* Sample processing buffer size */ int nsym; /* Number of raw modem symbols processed per demod call */ int nbit; /* Number of bits spit out per demod call */ int nmem; /* Number of samples kept around between demod calls */ /* State kept by demod */ int nin; /* Number of samples to be demod-ed the next cycle */ int lodd; /* Last integrated sample for odd bitstream generation */ float *oldsamps; /* Memory of old samples to make clock-offset-tolerance possible */ /* Stats generated by demod */ float norm_rx_timing; /* RX Timing, used to calculate clock offset */ int ppm; /* Clock offset in parts-per-million */ float snr_mean; /* Modem stat structure */ struct MODEM_STATS *stats; }; /* * Create a new fmfsk modem instance. * * int Fs - sample rate * int Rb - non-manchester bitrate * returns - new struct FMFSK on success, NULL on failure */ struct FMFSK *fmfsk_create(int Fs, int Rb); /* * Destroys an fmfsk modem and deallocates memory */ void fmfsk_destroy(struct FMFSK *fmfsk); /* * Deposit demod statistics into a MODEM_STATS struct */ void fmfsk_get_demod_stats(struct FMFSK *fmfsk, struct MODEM_STATS *stats); /* * Returns the number of samples that must be fed to fmfsk_demod the next * cycle */ uint32_t fmfsk_nin(struct FMFSK *fmfsk); /* * Modulates nbit bits into N samples to be sent through an FM radio * * struct FSK *fsk - FSK config/state struct, set up by fsk_create * float mod_out[] - Buffer for N samples of modulated FMFSK * uint8_t tx_bits[] - Buffer containing Nbits unpacked bits */ void fmfsk_mod(struct FMFSK *fmfsk, float fmfsk_out[], uint8_t bits_in[]); /* * Demodulate some number of FMFSK samples. The number of samples to be * demodulated can be found by calling fmfsk_nin(). * * struct FMFSK *fsk - FMFSK config/state struct, set up by fsk_create * uint8_t rx_bits[] - Buffer for nbit unpacked bits to be written * float fsk_in[] - nin samples of modualted FMFSK from an FM radio */ void fmfsk_demod(struct FMFSK *fmfsk, uint8_t rx_bits[], float fmfsk_in[]); #endif codec2-1.2.0/src/framer.c000066400000000000000000000051461445607075400151020ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: framer.c AUTHOR......: David Rowe DATE CREATED: July 2020 Command line framer, inserts a Unique word into a sequence of oneBitPerchar bits. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2020 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include "fsk.h" unsigned int toInt(char c) { if (c >= '0' && c <= '9') return c - '0'; if (c >= 'A' && c <= 'F') return 10 + c - 'A'; if (c >= 'a' && c <= 'f') return 10 + c - 'a'; return -1; } int main(int argc, char *argv[]) { FILE *fin, *fout; if (argc != 5) { fprintf(stderr, "usage: %s InputBitsOnePerByte OutputBitsOnePerByte frameSizeBits " "HexUW\n", argv[0]); exit(1); } if (strcmp(argv[1], "-") == 0) { fin = stdin; } else { if ((fin = fopen(argv[1], "rb")) == NULL) { fprintf(stderr, "Couldn't open input file: %s\n", argv[1]); exit(1); } } if (strcmp(argv[2], "-") == 0) { fout = stdout; } else { if ((fout = fopen(argv[2], "wb")) == NULL) { fprintf(stderr, "Couldn't open output file: %s\n", argv[2]); exit(1); } } /* extract UW array */ size_t framesize = atoi(argv[3]); char *uw_hex = argv[4]; uint8_t uw[4 * strlen(uw_hex)]; int uwsize = 0; for (int c = 0; c < strlen(uw_hex); c++) for (int i = 0; i < 4; i++) uw[uwsize++] = (toInt(uw_hex[c]) >> (3 - i)) & 0x1; /* MSB first */ assert(uwsize == 4 * strlen(uw_hex)); fprintf(stderr, "uw_hex: %s uwsize: %d\n", uw_hex, uwsize); for (int i = 0; i < uwsize; i++) fprintf(stderr, "%d ", uw[i]); fprintf(stderr, "\n"); /* main loop */ uint8_t frame[framesize]; while (fread(frame, sizeof(uint8_t), framesize, fin) == framesize) { fwrite(uw, sizeof(uint8_t), uwsize, fout); fwrite(frame, sizeof(uint8_t), framesize, fout); } fclose(fin); fclose(fout); return 0; } codec2-1.2.0/src/freedv_1600.c000066400000000000000000000205541445607075400155470ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_1600.c AUTHOR......: David Rowe DATE CREATED: May 2020 Functions that implement the FreeDV 1600 mode. \*---------------------------------------------------------------------------*/ #include #include #include #include #include #include #include #include "codec2.h" #include "codec2_fdmdv.h" #include "comp_prim.h" #include "debug_alloc.h" #include "fdmdv_internal.h" #include "freedv_api.h" #include "freedv_api_internal.h" #include "golay23.h" #include "varicode.h" void freedv_1600_open(struct freedv *f) { f->snr_squelch_thresh = 2.0; f->squelch_en = true; f->tx_sync_bit = 0; int Nc = 16; f->fdmdv = fdmdv_create(Nc); assert(f->fdmdv != NULL); golay23_init(); f->nin = f->nin_prev = FDMDV_NOM_SAMPLES_PER_FRAME; f->n_nom_modem_samples = 2 * FDMDV_NOM_SAMPLES_PER_FRAME; f->n_nat_modem_samples = f->n_nom_modem_samples; f->n_max_modem_samples = FDMDV_NOM_SAMPLES_PER_FRAME + FDMDV_MAX_SAMPLES_PER_FRAME; f->modem_sample_rate = FREEDV_FS_8000; int nbit = fdmdv_bits_per_frame(f->fdmdv); f->fdmdv_bits = (int *)MALLOC(nbit * sizeof(int)); assert(f->fdmdv_bits != NULL); nbit = 2 * fdmdv_bits_per_frame(f->fdmdv); f->fdmdv_tx_bits = (int *)CALLOC(1, nbit * sizeof(int)); f->fdmdv_rx_bits = (int *)CALLOC(1, nbit * sizeof(int)); assert(f->fdmdv_tx_bits != NULL); assert(f->fdmdv_rx_bits != NULL); f->evenframe = 0; f->sz_error_pattern = fdmdv_error_pattern_size(f->fdmdv); f->speech_sample_rate = FREEDV_FS_8000; f->codec2 = codec2_create(CODEC2_MODE_1300); assert(f->codec2 != NULL); f->n_speech_samples = codec2_samples_per_frame(f->codec2); f->bits_per_modem_frame = fdmdv_bits_per_frame(f->fdmdv); f->bits_per_codec_frame = codec2_bits_per_frame(f->codec2); f->n_codec_frames = 1; f->tx_payload_bits = MALLOC(f->bits_per_codec_frame); assert(f->tx_payload_bits != NULL); f->rx_payload_bits = MALLOC(f->bits_per_codec_frame); assert(f->rx_payload_bits != NULL); } void freedv_comptx_fdmdv_1600(struct freedv *f, COMP mod_out[]) { int i, j; int data, codeword1, data_flag_index; COMP tx_fdm[f->n_nat_modem_samples]; // spare bit in frame that codec defines. Use this 1 // bit/frame to send txt messages data_flag_index = codec2_get_spare_bit_index(f->codec2); if (f->nvaricode_bits) { f->tx_payload_bits[data_flag_index] = f->tx_varicode_bits[f->varicode_bit_index++]; f->nvaricode_bits--; } if (f->nvaricode_bits == 0) { /* get new char and encode */ char s[2]; if (f->freedv_get_next_tx_char != NULL) { s[0] = (*f->freedv_get_next_tx_char)(f->callback_state); f->nvaricode_bits = varicode_encode(f->tx_varicode_bits, s, VARICODE_MAX_BITS, 1, f->varicode_dec_states.code_num); f->varicode_bit_index = 0; } } /* Protect first 12 out of first 16 excitation bits with (23,12) Golay Code: 0,1,2,3: v[0]..v[3] 4,5,6,7: MSB of pitch 11,12,13,14: MSB of energy */ data = 0; for (i = 0; i < 8; i++) { data <<= 1; data |= f->tx_payload_bits[i]; } for (i = 11; i < 15; i++) { data <<= 1; data |= f->tx_payload_bits[i]; } codeword1 = golay23_encode(data); /* now pack output frame with parity bits at end to make them as far apart as possible from the data they protect. Parity bits are LSB of the Golay codeword */ for (i = 0; i < f->bits_per_codec_frame; i++) f->fdmdv_tx_bits[i] = f->tx_payload_bits[i]; for (j = 0; i < f->bits_per_codec_frame + 11; i++, j++) { f->fdmdv_tx_bits[i] = (codeword1 >> (10 - j)) & 0x1; } f->fdmdv_tx_bits[i] = 0; /* spare bit */ /* optionally overwrite with test frames */ if (f->test_frames) { fdmdv_get_test_bits(f->fdmdv, f->fdmdv_tx_bits); fdmdv_get_test_bits(f->fdmdv, &f->fdmdv_tx_bits[f->bits_per_modem_frame]); } /* modulate even and odd frames */ fdmdv_mod(f->fdmdv, tx_fdm, f->fdmdv_tx_bits, &f->tx_sync_bit); assert(f->tx_sync_bit == 1); fdmdv_mod(f->fdmdv, &tx_fdm[FDMDV_NOM_SAMPLES_PER_FRAME], &f->fdmdv_tx_bits[f->bits_per_modem_frame], &f->tx_sync_bit); assert(f->tx_sync_bit == 0); assert(2 * FDMDV_NOM_SAMPLES_PER_FRAME == f->n_nom_modem_samples); for (i = 0; i < f->n_nom_modem_samples; i++) mod_out[i] = fcmult(FDMDV_SCALE, tx_fdm[i]); } int freedv_comprx_fdmdv_1600(struct freedv *f, COMP demod_in[]) { int bits_per_fdmdv_frame; int i, j; int recd_codeword, codeword1, data_flag_index, n_ascii; short abit[1]; char ascii_out; int reliable_sync_bit; int rx_status = 0; COMP ademod_in[f->nin]; for (i = 0; i < f->nin; i++) ademod_in[i] = fcmult(1.0 / FDMDV_SCALE, demod_in[i]); bits_per_fdmdv_frame = fdmdv_bits_per_frame(f->fdmdv); fdmdv_demod(f->fdmdv, f->fdmdv_bits, &reliable_sync_bit, ademod_in, &f->nin); fdmdv_get_demod_stats(f->fdmdv, &f->stats); f->sync = f->fdmdv->sync; f->snr_est = f->stats.snr_est; if (reliable_sync_bit == 1) { f->evenframe = 1; } if (f->sync) { rx_status = FREEDV_RX_SYNC; if (f->evenframe == 0) { memcpy(f->fdmdv_rx_bits, f->fdmdv_bits, bits_per_fdmdv_frame * sizeof(int)); } else { memcpy(&f->fdmdv_rx_bits[bits_per_fdmdv_frame], f->fdmdv_bits, bits_per_fdmdv_frame * sizeof(int)); if (f->test_frames == 0) { recd_codeword = 0; for (i = 0; i < 8; i++) { recd_codeword <<= 1; recd_codeword |= (f->fdmdv_rx_bits[i] & 0x1); } for (i = 11; i < 15; i++) { recd_codeword <<= 1; recd_codeword |= (f->fdmdv_rx_bits[i] & 0x1); } for (i = f->bits_per_codec_frame; i < f->bits_per_codec_frame + 11; i++) { recd_codeword <<= 1; recd_codeword |= (f->fdmdv_rx_bits[i] & 0x1); } codeword1 = golay23_decode(recd_codeword); f->total_bit_errors += golay23_count_errors(recd_codeword, codeword1); f->total_bits += 23; for (i = 0; i < f->bits_per_codec_frame; i++) f->rx_payload_bits[i] = f->fdmdv_rx_bits[i]; for (i = 0; i < 8; i++) { f->rx_payload_bits[i] = (codeword1 >> (22 - i)) & 0x1; } for (i = 8, j = 11; i < 12; i++, j++) { f->rx_payload_bits[j] = (codeword1 >> (22 - i)) & 0x1; } // extract txt msg data bit // ------------------------------------------------------------ data_flag_index = codec2_get_spare_bit_index(f->codec2); abit[0] = f->rx_payload_bits[data_flag_index]; n_ascii = varicode_decode(&f->varicode_dec_states, &ascii_out, abit, 1, 1); if (n_ascii && (f->freedv_put_next_rx_char != NULL)) { (*f->freedv_put_next_rx_char)(f->callback_state, ascii_out); } // reconstruct missing bit we steal for data bit and decode codec2_rebuild_spare_bit(f->codec2, (char *)f->rx_payload_bits); rx_status |= FREEDV_RX_BITS; } else { int test_frame_sync, bit_errors, ntest_bits, k; short error_pattern[fdmdv_error_pattern_size(f->fdmdv)]; for (k = 0; k < 2; k++) { /* test frames, so lets sync up to the test frames and count any * errors */ fdmdv_put_test_bits(f->fdmdv, &test_frame_sync, error_pattern, &bit_errors, &ntest_bits, &f->fdmdv_rx_bits[k * bits_per_fdmdv_frame]); if (test_frame_sync == 1) { f->test_frame_sync_state = 1; f->test_frame_count = 0; } if (f->test_frame_sync_state) { if (f->test_frame_count == 0) { f->total_bit_errors += bit_errors; f->total_bits += ntest_bits; if (f->freedv_put_error_pattern != NULL) { (*f->freedv_put_error_pattern)( f->error_pattern_callback_state, error_pattern, fdmdv_error_pattern_size(f->fdmdv)); } } f->test_frame_count++; if (f->test_frame_count == 4) f->test_frame_count = 0; } } } /* if (test_frames == 0) .... */ } /* note this freewheels if reliable sync disappears on bad channels */ if (f->evenframe) f->evenframe = 0; else f->evenframe = 1; } /* if (sync) .... */ return rx_status; } codec2-1.2.0/src/freedv_2020.c000066400000000000000000000274571445607075400155550ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_2020.c AUTHOR......: David Rowe DATE CREATED: May 2020 Functions that implement the FreeDV 2020 modes. \*---------------------------------------------------------------------------*/ #include #include #include #include #include #include #include #include "codec2.h" #include "codec2_fdmdv.h" #include "codec2_ofdm.h" #include "comp_prim.h" #include "debug_alloc.h" #include "fmfsk.h" #include "freedv_api.h" #include "freedv_api_internal.h" #include "fsk.h" #include "gp_interleaver.h" #include "interldpc.h" #include "ldpc_codes.h" #include "mpdecode_core.h" #include "ofdm_internal.h" #include "varicode.h" extern char *ofdm_statemode[]; #ifdef __LPCNET__ void freedv_2020x_open(struct freedv *f) { f->speech_sample_rate = FREEDV_FS_16000; f->snr_squelch_thresh = 4.0; f->squelch_en = 0; struct OFDM_CONFIG ofdm_config; switch (f->mode) { case FREEDV_MODE_2020: ofdm_init_mode("2020", &ofdm_config); break; case FREEDV_MODE_2020B: ofdm_init_mode("2020B", &ofdm_config); break; default: assert(0); } f->ofdm = ofdm_create(&ofdm_config); f->ldpc = (struct LDPC *)MALLOC(sizeof(struct LDPC)); assert(f->ldpc != NULL); ldpc_codes_setup(f->ldpc, f->ofdm->codename); ldpc_mode_specific_setup(f->ofdm, f->ldpc); int vq_type; switch (f->mode) { case FREEDV_MODE_2020: vq_type = 1; /* vanilla VQ */ break; case FREEDV_MODE_2020B: vq_type = 2; /* index optimised VQ for increased robustness to single bit errors */ break; default: assert(0); } int coded_syms_per_frame = f->ldpc->coded_bits_per_frame / f->ofdm->bps; f->ofdm_bitsperframe = ofdm_get_bits_per_frame(f->ofdm); f->ofdm_nuwbits = f->ofdm->config.nuwbits; f->ofdm_ntxtbits = f->ofdm->config.txtbits; assert(f->ofdm_ntxtbits == 4); if (f->verbose) { fprintf(stderr, "f->mode = %d\n", f->mode); fprintf(stderr, "vq_type = %d\n", vq_type); fprintf(stderr, "ldpc_data_bits_per_frame = %d\n", f->ldpc->ldpc_data_bits_per_frame); fprintf(stderr, "ldpc_coded_bits_per_frame = %d\n", f->ldpc->ldpc_coded_bits_per_frame); fprintf(stderr, "data_bits_per_frame = %d\n", f->ldpc->data_bits_per_frame); fprintf(stderr, "coded_bits_per_frame = %d\n", f->ldpc->coded_bits_per_frame); fprintf(stderr, "coded_syms_per_frame = %d\n", f->ldpc->coded_bits_per_frame / f->ofdm->bps); fprintf(stderr, "ofdm_bits_per_frame = %d\n", f->ofdm_bitsperframe); fprintf(stderr, "ofdm_nuwbits = %d\n", f->ofdm_nuwbits); fprintf(stderr, "ofdm_ntxtbits = %d\n", f->ofdm_ntxtbits); } f->codeword_symbols = (COMP *)MALLOC(sizeof(COMP) * coded_syms_per_frame); assert(f->codeword_symbols != NULL); f->codeword_amps = (float *)MALLOC(sizeof(float) * coded_syms_per_frame); assert(f->codeword_amps != NULL); for (int i = 0; i < coded_syms_per_frame; i++) { f->codeword_symbols[i].real = 0.0f; f->codeword_symbols[i].imag = 0.0f; f->codeword_amps[i] = 0.0f; } f->nin = f->nin_prev = ofdm_get_samples_per_frame(f->ofdm); f->n_nat_modem_samples = ofdm_get_samples_per_frame(f->ofdm); f->n_nom_modem_samples = ofdm_get_samples_per_frame(f->ofdm); f->n_max_modem_samples = ofdm_get_max_samples_per_frame(f->ofdm); f->modem_sample_rate = f->ofdm->config.fs; f->clip_en = false; f->sz_error_pattern = f->ofdm_bitsperframe; /* storage for pass through audio interpolating filter. These are the rate FREEDV_FS_8000 modem input samples before interpolation */ f->passthrough_2020 = CALLOC(1, sizeof(float) * (FDMDV_OS_TAPS_16K + freedv_get_n_max_modem_samples(f))); assert(f->passthrough_2020 != NULL); // make sure we have enough storage for worst case nin with passthrough, in // 2020 we oversample the 8 kHz input Rx audio to 16 kHz int nout_max = 2 * freedv_get_n_max_modem_samples(f); assert(nout_max <= freedv_get_n_max_speech_samples(f)); f->lpcnet = lpcnet_freedv_create(vq_type); assert(f->lpcnet != NULL); f->codec2 = NULL; /* should be exactly an integer number of Codec frames in a OFDM modem frame */ assert((f->ldpc->data_bits_per_frame % lpcnet_bits_per_frame(f->lpcnet)) == 0); f->n_codec_frames = f->ldpc->data_bits_per_frame / lpcnet_bits_per_frame(f->lpcnet); f->n_speech_samples = f->n_codec_frames * lpcnet_samples_per_frame(f->lpcnet); f->bits_per_codec_frame = lpcnet_bits_per_frame(f->lpcnet); f->bits_per_modem_frame = f->n_codec_frames * f->bits_per_codec_frame; f->tx_payload_bits = (unsigned char *)MALLOC(f->bits_per_modem_frame); assert(f->tx_payload_bits != NULL); f->rx_payload_bits = (unsigned char *)MALLOC(f->bits_per_modem_frame); assert(f->rx_payload_bits != NULL); /* attenuate audio 12dB as channel noise isn't that pleasant */ f->passthrough_gain = 0.25; } void freedv_comptx_2020(struct freedv *f, COMP mod_out[]) { int i, k; int data_bits_per_frame = f->ldpc->data_bits_per_frame; uint8_t tx_bits[data_bits_per_frame]; memcpy(tx_bits, f->tx_payload_bits, data_bits_per_frame); // Generate Varicode txt bits. Txt bits in OFDM frame come just // after Unique Word (UW). Txt bits aren't protected by FEC, and need to be // added to each frame after interleaver as done it's thing int nspare = f->ofdm_ntxtbits; uint8_t txt_bits[nspare]; for (k = 0; k < nspare; k++) { if (f->nvaricode_bits == 0) { /* get new char and encode */ char s[2]; if (f->freedv_get_next_tx_char != NULL) { s[0] = (*f->freedv_get_next_tx_char)(f->callback_state); f->nvaricode_bits = varicode_encode(f->tx_varicode_bits, s, VARICODE_MAX_BITS, 1, f->varicode_dec_states.code_num); f->varicode_bit_index = 0; } } if (f->nvaricode_bits) { txt_bits[k] = f->tx_varicode_bits[f->varicode_bit_index++]; f->nvaricode_bits--; } else txt_bits[k] = 0; } /* optionally replace codec payload bits with test frames known to rx */ if (f->test_frames) { uint8_t payload_data_bits[data_bits_per_frame]; ofdm_generate_payload_data_bits(payload_data_bits, data_bits_per_frame); for (i = 0; i < data_bits_per_frame; i++) { tx_bits[i] = payload_data_bits[i]; } } /* OK now ready to LDPC encode, interleave, and OFDM modulate */ ofdm_ldpc_interleave_tx(f->ofdm, f->ldpc, (complex float *)mod_out, tx_bits, txt_bits); } int freedv_comprx_2020(struct freedv *f, COMP demod_in[]) { int i, k; int n_ascii; char ascii_out; struct OFDM *ofdm = f->ofdm; struct LDPC *ldpc = f->ldpc; int data_bits_per_frame = ldpc->data_bits_per_frame; int coded_bits_per_frame = ldpc->coded_bits_per_frame; int coded_syms_per_frame = ldpc->coded_bits_per_frame / ofdm->bps; COMP *codeword_symbols = f->codeword_symbols; float *codeword_amps = f->codeword_amps; int rx_bits[f->ofdm_bitsperframe]; short txt_bits[f->ofdm_ntxtbits]; COMP payload_syms[coded_syms_per_frame]; float payload_amps[coded_syms_per_frame]; int rx_status = 0; int Nerrs_raw = 0; int Nerrs_coded = 0; int Ncoded; int iter = 0; int parityCheckCount = 0; uint8_t rx_uw[f->ofdm_nuwbits]; f->sync = 0; // TODO: should be higher for 2020? float EsNo = 3.0; /* looking for modem sync */ if (ofdm->sync_state == search) { ofdm_sync_search(f->ofdm, demod_in); f->snr_est = -5.0; } /* OK modem is in sync */ if ((ofdm->sync_state == synced) || (ofdm->sync_state == trial)) { rx_status |= FREEDV_RX_SYNC; if (ofdm->sync_state == trial) rx_status |= FREEDV_RX_TRIAL_SYNC; int txt_sym_index = 0; ofdm_demod(ofdm, rx_bits, demod_in); ofdm_extract_uw(ofdm, ofdm->rx_np, ofdm->rx_amp, rx_uw); ofdm_disassemble_qpsk_modem_packet_with_text_amps( ofdm, ofdm->rx_np, ofdm->rx_amp, payload_syms, payload_amps, txt_bits, &txt_sym_index); f->sync = 1; assert((f->ofdm_nuwbits + f->ofdm_ntxtbits + coded_bits_per_frame) == f->ofdm_bitsperframe); /* newest symbols at end of buffer (uses final i from last loop), note we change COMP formats from what modem uses internally */ for (i = 0; i < coded_syms_per_frame; i++) { codeword_symbols[i] = payload_syms[i]; codeword_amps[i] = payload_amps[i]; } /* run de-interleaver */ COMP codeword_symbols_de[coded_syms_per_frame]; float codeword_amps_de[coded_syms_per_frame]; gp_deinterleave_comp(codeword_symbols_de, codeword_symbols, coded_syms_per_frame); gp_deinterleave_float(codeword_amps_de, codeword_amps, coded_syms_per_frame); float llr[coded_bits_per_frame]; uint8_t out_char[coded_bits_per_frame]; if (f->test_frames) { Nerrs_raw = count_uncoded_errors(ldpc, &f->ofdm->config, codeword_symbols_de, 0); f->total_bit_errors += Nerrs_raw; f->total_bits += f->ofdm_bitsperframe; } symbols_to_llrs(llr, codeword_symbols_de, codeword_amps_de, EsNo, ofdm->mean_amp, coded_syms_per_frame); ldpc_decode_frame(ldpc, &parityCheckCount, &iter, out_char, llr); if (parityCheckCount != ldpc->NumberParityBits) rx_status |= FREEDV_RX_BIT_ERRORS; if (f->test_frames) { uint8_t payload_data_bits[data_bits_per_frame]; ofdm_generate_payload_data_bits(payload_data_bits, data_bits_per_frame); count_errors_protection_mode(ldpc->protection_mode, &Nerrs_coded, &Ncoded, payload_data_bits, out_char, data_bits_per_frame); f->total_bit_errors_coded += Nerrs_coded; f->total_bits_coded += Ncoded; if (Nerrs_coded) f->total_packet_errors++; f->total_packets++; } else { memcpy(f->rx_payload_bits, out_char, data_bits_per_frame); } rx_status |= FREEDV_RX_BITS; /* If modem is synced we can decode txt bits */ for (k = 0; k < f->ofdm_ntxtbits; k++) { if (k % 2 == 0 && (f->freedv_put_next_rx_symbol != NULL)) { (*f->freedv_put_next_rx_symbol)(f->callback_state_sym, ofdm->rx_np[txt_sym_index], ofdm->rx_amp[txt_sym_index]); txt_sym_index++; } // fprintf(stderr, "txt_bits[%d] = %d\n", k, rx_bits[i]); n_ascii = varicode_decode(&f->varicode_dec_states, &ascii_out, &txt_bits[k], 1, 1); if (n_ascii && (f->freedv_put_next_rx_char != NULL)) { (*f->freedv_put_next_rx_char)(f->callback_state, ascii_out); } } /* estimate uncoded BER from UW. Coded bit errors could probably be estimated as half of all failed LDPC parity checks */ for (i = 0; i < f->ofdm_nuwbits; i++) { if (rx_uw[i] != ofdm->tx_uw[i]) { f->total_bit_errors++; } } f->total_bits += f->ofdm_nuwbits; ofdm_get_demod_stats(f->ofdm, &f->stats, ofdm->rx_np, ofdm->rowsperframe * ofdm->nc); f->snr_est = f->stats.snr_est; } /* iterate state machine and update nin for next call */ f->nin = ofdm_get_nin(ofdm); ofdm_sync_state_machine(ofdm, rx_uw); if ((f->verbose && (ofdm->last_sync_state == search)) || (f->verbose == 2)) { assert(rx_status <= 15); fprintf(stderr, "%3d st: %-6s euw: %2d %1d f: %5.1f pbw: %d snr: %4.1f eraw: %3d " "ecdd: %3d iter: %3d pcc: %3d rxst: %s\n", f->frames++, ofdm_statemode[ofdm->last_sync_state], ofdm->uw_errors, ofdm->sync_counter, (double)ofdm->foff_est_hz, ofdm->phase_est_bandwidth, f->snr_est, Nerrs_raw, Nerrs_coded, iter, parityCheckCount, rx_sync_flags_to_text[rx_status]); } return rx_status; } #endif codec2-1.2.0/src/freedv_700.c000066400000000000000000000542551445607075400154740ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_700.c AUTHOR......: David Rowe DATE CREATED: May 2020 Functions that implement the various FreeDV 700 modes, and more generally OFDM data modes. \*---------------------------------------------------------------------------*/ #include #include #include #include #include #include #include #include "codec2.h" #include "codec2_fdmdv.h" #include "codec2_ofdm.h" #include "comp_prim.h" #include "debug_alloc.h" #include "filter.h" #include "fmfsk.h" #include "freedv_api.h" #include "freedv_api_internal.h" #include "fsk.h" #include "gp_interleaver.h" #include "interldpc.h" #include "ldpc_codes.h" #include "mpdecode_core.h" #include "ofdm_internal.h" #include "varicode.h" extern char *ofdm_statemode[]; void freedv_700c_open(struct freedv *f) { f->snr_squelch_thresh = 0.0; f->squelch_en = false; f->cohpsk = cohpsk_create(); f->nin = f->nin_prev = COHPSK_NOM_SAMPLES_PER_FRAME; f->n_nat_modem_samples = COHPSK_NOM_SAMPLES_PER_FRAME; // native modem samples as used by the // modem f->n_nom_modem_samples = f->n_nat_modem_samples * FREEDV_FS_8000 / COHPSK_FS; // number of samples after native samples // are interpolated to 8000 sps f->n_max_modem_samples = COHPSK_MAX_SAMPLES_PER_FRAME * FREEDV_FS_8000 / COHPSK_FS + 1; f->modem_sample_rate = FREEDV_FS_8000; // note weird sample rate tamed by resampling f->clip_en = true; f->sz_error_pattern = cohpsk_error_pattern_size(); f->test_frames_diversity = 1; f->ptFilter7500to8000 = (struct quisk_cfFilter *)MALLOC(sizeof(struct quisk_cfFilter)); f->ptFilter8000to7500 = (struct quisk_cfFilter *)MALLOC(sizeof(struct quisk_cfFilter)); quisk_filt_cfInit(f->ptFilter8000to7500, quiskFilt120t480, sizeof(quiskFilt120t480) / sizeof(float)); quisk_filt_cfInit(f->ptFilter7500to8000, quiskFilt120t480, sizeof(quiskFilt120t480) / sizeof(float)); f->speech_sample_rate = FREEDV_FS_8000; f->codec2 = codec2_create(CODEC2_MODE_700C); assert(f->codec2 != NULL); f->n_codec_frames = 2; f->n_speech_samples = f->n_codec_frames * codec2_samples_per_frame(f->codec2); f->bits_per_codec_frame = codec2_bits_per_frame(f->codec2); f->bits_per_modem_frame = f->n_codec_frames * codec2_bits_per_frame(f->codec2); assert(f->bits_per_modem_frame == COHPSK_BITS_PER_FRAME); f->tx_payload_bits = (uint8_t *)MALLOC(f->bits_per_modem_frame * sizeof(char)); assert(f->tx_payload_bits != NULL); f->rx_payload_bits = (uint8_t *)MALLOC(f->bits_per_modem_frame * sizeof(char)); assert(f->rx_payload_bits != NULL); } void freedv_comptx_700c(struct freedv *f, COMP mod_out[]) { int i; COMP tx_fdm[f->n_nat_modem_samples]; int tx_bits[COHPSK_BITS_PER_FRAME]; /* earlier modems used one bit per int for unpacked bits */ for (i = 0; i < COHPSK_BITS_PER_FRAME; i++) tx_bits[i] = f->tx_payload_bits[i]; /* optionally overwrite the codec bits with test frames */ if (f->test_frames) { cohpsk_get_test_bits(f->cohpsk, tx_bits); } /* cohpsk modulator */ cohpsk_mod(f->cohpsk, tx_fdm, tx_bits, COHPSK_BITS_PER_FRAME); float gain = 1.0; if (f->clip_en) { cohpsk_clip(tx_fdm, COHPSK_CLIP, COHPSK_NOM_SAMPLES_PER_FRAME); gain = 2.5; } for (i = 0; i < f->n_nat_modem_samples; i++) mod_out[i] = fcmult(gain * COHPSK_SCALE, tx_fdm[i]); i = quisk_cfInterpDecim((complex float *)mod_out, f->n_nat_modem_samples, f->ptFilter7500to8000, 16, 15); } // open function for OFDM voice modes void freedv_ofdm_voice_open(struct freedv *f, char *mode) { f->snr_squelch_thresh = 0.0; f->squelch_en = false; struct OFDM_CONFIG *ofdm_config = (struct OFDM_CONFIG *)calloc(1, sizeof(struct OFDM_CONFIG)); assert(ofdm_config != NULL); ofdm_init_mode(mode, ofdm_config); f->ofdm = ofdm_create(ofdm_config); assert(f->ofdm != NULL); free(ofdm_config); ofdm_config = ofdm_get_config_param(f->ofdm); f->ofdm_bitsperpacket = ofdm_get_bits_per_packet(f->ofdm); f->ofdm_bitsperframe = ofdm_get_bits_per_frame(f->ofdm); f->ofdm_nuwbits = ofdm_config->nuwbits; f->ofdm_ntxtbits = ofdm_config->txtbits; f->ldpc = (struct LDPC *)MALLOC(sizeof(struct LDPC)); assert(f->ldpc != NULL); ldpc_codes_setup(f->ldpc, f->ofdm->codename); ldpc_mode_specific_setup(f->ofdm, f->ldpc); #ifdef __EMBEDDED__ f->ldpc->max_iter = 10; /* limit LDPC decoder iterations to limit CPU load */ #endif int Nsymsperpacket = ofdm_get_bits_per_packet(f->ofdm) / f->ofdm->bps; f->rx_syms = (COMP *)MALLOC(sizeof(COMP) * Nsymsperpacket); assert(f->rx_syms != NULL); f->rx_amps = (float *)MALLOC(sizeof(float) * Nsymsperpacket); assert(f->rx_amps != NULL); for (int i = 0; i < Nsymsperpacket; i++) { f->rx_syms[i].real = f->rx_syms[i].imag = 0.0; f->rx_amps[i] = 0.0; } f->nin = f->nin_prev = ofdm_get_samples_per_frame(f->ofdm); f->n_nat_modem_samples = ofdm_get_samples_per_frame(f->ofdm); f->n_nom_modem_samples = ofdm_get_samples_per_frame(f->ofdm); f->n_max_modem_samples = ofdm_get_max_samples_per_frame(f->ofdm); f->modem_sample_rate = f->ofdm->config.fs; f->clip_en = false; f->sz_error_pattern = f->ofdm_bitsperframe; f->tx_bits = NULL; /* not used for 700D */ f->speech_sample_rate = FREEDV_FS_8000; f->codec2 = codec2_create(CODEC2_MODE_700C); assert(f->codec2 != NULL); /* should be exactly an integer number of Codec 2 frames in a OFDM modem frame */ assert((f->ldpc->data_bits_per_frame % codec2_bits_per_frame(f->codec2)) == 0); f->n_codec_frames = f->ldpc->data_bits_per_frame / codec2_bits_per_frame(f->codec2); f->n_speech_samples = f->n_codec_frames * codec2_samples_per_frame(f->codec2); f->bits_per_codec_frame = codec2_bits_per_frame(f->codec2); f->bits_per_modem_frame = f->n_codec_frames * f->bits_per_codec_frame; f->tx_payload_bits = (unsigned char *)MALLOC(f->bits_per_modem_frame); assert(f->tx_payload_bits != NULL); f->rx_payload_bits = (unsigned char *)MALLOC(f->bits_per_modem_frame); assert(f->rx_payload_bits != NULL); /* attenuate audio 12dB as channel noise isn't that pleasant */ f->passthrough_gain = 0.25; /* should all add up to a complete frame */ assert((ofdm_config->ns - 1) * ofdm_config->nc * ofdm_config->bps == f->ldpc->coded_bits_per_frame + ofdm_config->txtbits + f->ofdm_nuwbits); } // open function for OFDM data modes, TODO consider moving to a new // (freedv_ofdm_data.c) file void freedv_ofdm_data_open(struct freedv *f) { struct OFDM_CONFIG ofdm_config; char mode[32]; if (f->mode == FREEDV_MODE_DATAC0) strcpy(mode, "datac0"); if (f->mode == FREEDV_MODE_DATAC1) strcpy(mode, "datac1"); if (f->mode == FREEDV_MODE_DATAC3) strcpy(mode, "datac3"); if (f->mode == FREEDV_MODE_DATAC4) strcpy(mode, "datac4"); if (f->mode == FREEDV_MODE_DATAC13) strcpy(mode, "datac13"); ofdm_init_mode(mode, &ofdm_config); f->ofdm = ofdm_create(&ofdm_config); assert(f->ofdm != NULL); // LDPC set up f->ldpc = (struct LDPC *)MALLOC(sizeof(struct LDPC)); assert(f->ldpc != NULL); ldpc_codes_setup(f->ldpc, f->ofdm->codename); ldpc_mode_specific_setup(f->ofdm, f->ldpc); #ifdef __EMBEDDED__ f->ldpc->max_iter = 10; /* limit LDPC decoder iterations to limit CPU load */ #endif // useful constants f->ofdm_bitsperpacket = ofdm_get_bits_per_packet(f->ofdm); f->ofdm_bitsperframe = ofdm_get_bits_per_frame(f->ofdm); f->ofdm_nuwbits = ofdm_config.nuwbits; f->ofdm_ntxtbits = ofdm_config.txtbits; /* payload bits per FreeDV API "frame". In OFDM modem nomenclature this is the number of payload data bits per packet, or the number of data bits in a LDPC codeword */ f->bits_per_modem_frame = f->ldpc->data_bits_per_frame; // buffers for received symbols for one packet/LDPC codeword - may span many // OFDM modem frames int Nsymsperpacket = ofdm_get_bits_per_packet(f->ofdm) / f->ofdm->bps; f->rx_syms = (COMP *)MALLOC(sizeof(COMP) * Nsymsperpacket); assert(f->rx_syms != NULL); f->rx_amps = (float *)MALLOC(sizeof(float) * Nsymsperpacket); assert(f->rx_amps != NULL); for (int i = 0; i < Nsymsperpacket; i++) { f->rx_syms[i].real = f->rx_syms[i].imag = 0.0; f->rx_amps[i] = 0.0; } f->nin = f->nin_prev = ofdm_get_nin(f->ofdm); f->n_nat_modem_samples = ofdm_get_samples_per_packet(f->ofdm); f->n_nom_modem_samples = ofdm_get_samples_per_frame(f->ofdm); /* in burst mode we might jump a preamble frame */ f->n_max_modem_samples = 2 * ofdm_get_max_samples_per_frame(f->ofdm); f->modem_sample_rate = f->ofdm->config.fs; f->sz_error_pattern = f->ofdm_bitsperpacket; // Note inconsistency: freedv API modem "frame" is a OFDM modem packet f->tx_payload_bits = (unsigned char *)MALLOC(f->bits_per_modem_frame); assert(f->tx_payload_bits != NULL); f->rx_payload_bits = (unsigned char *)MALLOC(f->bits_per_modem_frame); assert(f->rx_payload_bits != NULL); } /* speech or raw data, complex OFDM modulation out */ void freedv_comptx_ofdm(struct freedv *f, COMP mod_out[]) { int i, k; int nspare; /* Generate Varicode txt bits (if used), waren't protected by FEC */ nspare = f->ofdm_ntxtbits; uint8_t txt_bits[nspare]; for (k = 0; k < nspare; k++) { if (f->nvaricode_bits == 0) { /* get new char and encode */ char s[2]; if (f->freedv_get_next_tx_char != NULL) { s[0] = (*f->freedv_get_next_tx_char)(f->callback_state); f->nvaricode_bits = varicode_encode(f->tx_varicode_bits, s, VARICODE_MAX_BITS, 1, f->varicode_dec_states.code_num); f->varicode_bit_index = 0; } } if (f->nvaricode_bits) { txt_bits[k] = f->tx_varicode_bits[f->varicode_bit_index++]; f->nvaricode_bits--; } else txt_bits[k] = 0; } /* optionally replace payload bits with test frames known to rx */ if (f->test_frames) { uint8_t payload_data_bits[f->bits_per_modem_frame]; ofdm_generate_payload_data_bits(payload_data_bits, f->bits_per_modem_frame); for (i = 0; i < f->bits_per_modem_frame; i++) { f->tx_payload_bits[i] = payload_data_bits[i]; } } /* OK now ready to LDPC encode, interleave, and OFDM modulate */ ofdm_ldpc_interleave_tx(f->ofdm, f->ldpc, (complex float *)mod_out, f->tx_payload_bits, txt_bits); } int freedv_comprx_700c(struct freedv *f, COMP demod_in_8kHz[]) { int i; int sync; int rx_status = 0; // quisk_cfInterpDecim() modifies input data so lets make a copy just in case // there is no sync and we need to echo input to output // freedv_nin(f): input samples at Fs=8000 Hz // f->nin: input samples at Fs=7500 Hz COMP demod_in[freedv_nin(f)]; for (i = 0; i < freedv_nin(f); i++) demod_in[i] = demod_in_8kHz[i]; i = quisk_cfInterpDecim((complex float *)demod_in, freedv_nin(f), f->ptFilter8000to7500, 15, 16); for (i = 0; i < f->nin; i++) demod_in[i] = fcmult(1.0 / COHPSK_SCALE, demod_in[i]); float rx_soft_bits[COHPSK_BITS_PER_FRAME]; cohpsk_demod(f->cohpsk, rx_soft_bits, &sync, demod_in, &f->nin); for (i = 0; i < f->bits_per_modem_frame; i++) f->rx_payload_bits[i] = rx_soft_bits[i] < 0.0f; f->sync = sync; cohpsk_get_demod_stats(f->cohpsk, &f->stats); f->snr_est = f->stats.snr_est; if (sync) { rx_status = FREEDV_RX_SYNC; if (f->test_frames == 0) { rx_status |= FREEDV_RX_BITS; } else { if (f->test_frames_diversity) { /* normal operation - error pattern on frame after diveristy combination */ short error_pattern[COHPSK_BITS_PER_FRAME]; int bit_errors; /* test data, lets see if we can sync to the test data sequence */ char rx_bits_char[COHPSK_BITS_PER_FRAME]; for (i = 0; i < COHPSK_BITS_PER_FRAME; i++) rx_bits_char[i] = rx_soft_bits[i] < 0.0; cohpsk_put_test_bits(f->cohpsk, &f->test_frame_sync_state, error_pattern, &bit_errors, rx_bits_char, 0); if (f->test_frame_sync_state) { f->total_bit_errors += bit_errors; f->total_bits += COHPSK_BITS_PER_FRAME; if (f->freedv_put_error_pattern != NULL) { (*f->freedv_put_error_pattern)(f->error_pattern_callback_state, error_pattern, COHPSK_BITS_PER_FRAME); } } } else { /* calculate error pattern on uncombined carriers - test mode to spot any carrier specific issues like tx passband filtering */ short error_pattern[2 * COHPSK_BITS_PER_FRAME]; char rx_bits_char[COHPSK_BITS_PER_FRAME]; int bit_errors_lower, bit_errors_upper; /* lower group of carriers */ float *rx_bits_lower = cohpsk_get_rx_bits_lower(f->cohpsk); for (i = 0; i < COHPSK_BITS_PER_FRAME; i++) { rx_bits_char[i] = rx_bits_lower[i] < 0.0; } cohpsk_put_test_bits(f->cohpsk, &f->test_frame_sync_state, error_pattern, &bit_errors_lower, rx_bits_char, 0); /* upper group of carriers */ float *rx_bits_upper = cohpsk_get_rx_bits_upper(f->cohpsk); for (i = 0; i < COHPSK_BITS_PER_FRAME; i++) { rx_bits_char[i] = rx_bits_upper[i] < 0.0; } cohpsk_put_test_bits(f->cohpsk, &f->test_frame_sync_state_upper, &error_pattern[COHPSK_BITS_PER_FRAME], &bit_errors_upper, rx_bits_char, 1); /* combine total errors and call callback */ if (f->test_frame_sync_state && f->test_frame_sync_state_upper) { f->total_bit_errors += bit_errors_lower + bit_errors_upper; f->total_bits += 2 * COHPSK_BITS_PER_FRAME; if (f->freedv_put_error_pattern != NULL) { (*f->freedv_put_error_pattern)(f->error_pattern_callback_state, error_pattern, 2 * COHPSK_BITS_PER_FRAME); } } } } } return rx_status; } /* OFDM demod function that can support complex (float) or real (short) samples. The real short samples are useful for low memory platforms such as the SM1000. */ int freedv_comp_short_rx_ofdm(struct freedv *f, void *demod_in_8kHz, int demod_in_is_short, float gain) { int i, k; int n_ascii; char ascii_out; struct OFDM *ofdm = f->ofdm; struct LDPC *ldpc = f->ldpc; /* useful constants */ int Nbitsperframe = ofdm_get_bits_per_frame(ofdm); int Nbitsperpacket = ofdm_get_bits_per_packet(ofdm); int Nsymsperframe = Nbitsperframe / ofdm->bps; int Nsymsperpacket = Nbitsperpacket / ofdm->bps; int Npayloadbitsperpacket = Nbitsperpacket - ofdm->nuwbits - ofdm->ntxtbits; int Npayloadsymsperpacket = Npayloadbitsperpacket / ofdm->bps; int Ndatabitsperpacket = ldpc->data_bits_per_frame; complex float *rx_syms = (complex float *)f->rx_syms; float *rx_amps = f->rx_amps; int rx_bits[Nbitsperframe]; short txt_bits[f->ofdm_ntxtbits]; COMP payload_syms[Npayloadsymsperpacket]; float payload_amps[Npayloadsymsperpacket]; int Nerrs_raw = 0; int Nerrs_coded = 0; int iter = 0; int parityCheckCount = 0; uint8_t rx_uw[f->ofdm_nuwbits]; float new_gain = gain / f->ofdm->amp_scale; assert((demod_in_is_short == 0) || (demod_in_is_short == 1)); int rx_status = 0; float EsNo = 3.0; /* further work: estimate this properly from signal */ f->sync = 0; /* looking for OFDM modem sync */ if (ofdm->sync_state == search) { if (demod_in_is_short) ofdm_sync_search_shorts(f->ofdm, (short *)demod_in_8kHz, new_gain); else ofdm_sync_search(f->ofdm, (COMP *)demod_in_8kHz); f->snr_est = -5.0; } if ((ofdm->sync_state == synced) || (ofdm->sync_state == trial)) { /* OK we have OFDM modem sync */ rx_status |= FREEDV_RX_SYNC; if (ofdm->sync_state == trial) rx_status |= FREEDV_RX_TRIAL_SYNC; if (demod_in_is_short) ofdm_demod_shorts(ofdm, rx_bits, (short *)demod_in_8kHz, new_gain); else ofdm_demod(ofdm, rx_bits, (COMP *)demod_in_8kHz); /* accumulate a buffer of data symbols for this packet */ for (i = 0; i < Nsymsperpacket - Nsymsperframe; i++) { rx_syms[i] = rx_syms[i + Nsymsperframe]; rx_amps[i] = rx_amps[i + Nsymsperframe]; } memcpy(&rx_syms[Nsymsperpacket - Nsymsperframe], ofdm->rx_np, sizeof(complex float) * Nsymsperframe); memcpy(&rx_amps[Nsymsperpacket - Nsymsperframe], ofdm->rx_amp, sizeof(float) * Nsymsperframe); /* look for UW as frames enter packet buffer, note UW may span several modem * frames */ int st_uw = Nsymsperpacket - ofdm->nuwframes * Nsymsperframe; ofdm_extract_uw(ofdm, &rx_syms[st_uw], &rx_amps[st_uw], rx_uw); // update some FreeDV API level stats f->sync = 1; if (ofdm->modem_frame == (ofdm->np - 1)) { /* we have received enough modem frames to complete packet and run LDPC * decoder */ int txt_sym_index = 0; ofdm_disassemble_qpsk_modem_packet_with_text_amps( ofdm, rx_syms, rx_amps, payload_syms, payload_amps, txt_bits, &txt_sym_index); COMP payload_syms_de[Npayloadsymsperpacket]; float payload_amps_de[Npayloadsymsperpacket]; gp_deinterleave_comp(payload_syms_de, payload_syms, Npayloadsymsperpacket); gp_deinterleave_float(payload_amps_de, payload_amps, Npayloadsymsperpacket); float llr[Npayloadbitsperpacket]; uint8_t decoded_codeword[Npayloadbitsperpacket]; symbols_to_llrs(llr, payload_syms_de, payload_amps_de, EsNo, ofdm->mean_amp, Npayloadsymsperpacket); ldpc_decode_frame(ldpc, &parityCheckCount, &iter, decoded_codeword, llr); // iter = run_ldpc_decoder(ldpc, decoded_codeword, llr, // &parityCheckCount); memcpy(f->rx_payload_bits, decoded_codeword, Ndatabitsperpacket); if (strlen(ofdm->data_mode)) { // we need a valid CRC to declare a data packet valid if (freedv_check_crc16_unpacked(f->rx_payload_bits, Ndatabitsperpacket)) rx_status |= FREEDV_RX_BITS; else rx_status |= FREEDV_RX_BIT_ERRORS; } else { // voice modes aren't as strict - pass everything through to the speech // decoder, but flag frame with possible errors rx_status |= FREEDV_RX_BITS; if (parityCheckCount != ldpc->NumberParityBits) rx_status |= FREEDV_RX_BIT_ERRORS; } if (f->test_frames) { /* est uncoded BER from payload bits */ Nerrs_raw = count_uncoded_errors( ldpc, &f->ofdm->config, payload_syms_de, strlen(ofdm->data_mode)); f->total_bit_errors += Nerrs_raw; f->total_bits += Npayloadbitsperpacket; /* coded errors from decoded bits */ uint8_t payload_data_bits[Ndatabitsperpacket]; ofdm_generate_payload_data_bits(payload_data_bits, Ndatabitsperpacket); if (strlen(ofdm->data_mode)) { uint16_t tx_crc16 = freedv_crc16_unpacked(payload_data_bits, Ndatabitsperpacket - 16); uint8_t tx_crc16_bytes[] = {tx_crc16 >> 8, tx_crc16 & 0xff}; freedv_unpack(payload_data_bits + Ndatabitsperpacket - 16, tx_crc16_bytes, 16); } Nerrs_coded = count_errors(payload_data_bits, f->rx_payload_bits, Ndatabitsperpacket); f->total_bit_errors_coded += Nerrs_coded; f->total_bits_coded += Ndatabitsperpacket; if (Nerrs_coded) f->total_packet_errors++; f->total_packets++; } /* decode txt bits (if used) */ for (k = 0; k < f->ofdm_ntxtbits; k++) { if (k % 2 == 0 && (f->freedv_put_next_rx_symbol != NULL)) { (*f->freedv_put_next_rx_symbol)(f->callback_state_sym, rx_syms[txt_sym_index], rx_amps[txt_sym_index]); txt_sym_index++; } n_ascii = varicode_decode(&f->varicode_dec_states, &ascii_out, &txt_bits[k], 1, 1); if (n_ascii && (f->freedv_put_next_rx_char != NULL)) { (*f->freedv_put_next_rx_char)(f->callback_state, ascii_out); } } ofdm_get_demod_stats(ofdm, &f->stats, rx_syms, Nsymsperpacket); f->snr_est = f->stats.snr_est; } /* complete packet */ if ((ofdm->np == 1) && (ofdm->modem_frame == 0)) { /* add in UW bit errors, useful in non-testframe, single modem frame per packet modes */ for (i = 0; i < f->ofdm_nuwbits; i++) { if (rx_uw[i] != ofdm->tx_uw[i]) { f->total_bit_errors++; } } f->total_bits += f->ofdm_nuwbits; } } /* iterate state machine and update nin for next call */ f->nin = ofdm_get_nin(ofdm); ofdm_sync_state_machine(ofdm, rx_uw); int print_full = 0; int print_truncated = 0; if (f->verbose && ((rx_status & FREEDV_RX_BITS) || (rx_status & FREEDV_RX_BIT_ERRORS))) print_full = 1; if ((f->verbose == 2) && !((rx_status & FREEDV_RX_BITS) || (rx_status & FREEDV_RX_BIT_ERRORS))) print_truncated = 1; if (print_full) { fprintf(stderr, "%3d nin: %4d st: %-6s euw: %2d %2d mf: %2d f: %5.1f pbw: %d snr: " "%4.1f eraw: %4d ecdd: %4d iter: %3d " "pcc: %4d rxst: %s\n", f->frames++, ofdm->nin, ofdm_statemode[ofdm->last_sync_state], ofdm->uw_errors, ofdm->sync_counter, ofdm->modem_frame, (double)ofdm->foff_est_hz, ofdm->phase_est_bandwidth, (double)f->snr_est, Nerrs_raw, Nerrs_coded, iter, parityCheckCount, rx_sync_flags_to_text[rx_status]); } if (print_truncated) { fprintf(stderr, "%3d nin: %4d st: %-6s euw: %2d %2d mf: %2d f: %5.1f pbw: %d " " " " rxst: %s\n", f->frames++, ofdm->nin, ofdm_statemode[ofdm->last_sync_state], ofdm->uw_errors, ofdm->sync_counter, ofdm->modem_frame, (double)ofdm->foff_est_hz, ofdm->phase_est_bandwidth, rx_sync_flags_to_text[rx_status]); } return rx_status; } codec2-1.2.0/src/freedv_api.c000066400000000000000000001543611445607075400157360ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_api.c AUTHOR......: David Rowe DATE CREATED: August 2014 Library of API functions that implement the FreeDV API, useful for embedding FreeDV in other programs. Please see: 1. README_freedv.md 2. Notes on function use in this file 3. Simple demo programs in the "demo" directory 4. The full featured command line freedv_tx.c and freedv_rx.c programs \*---------------------------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "freedv_api.h" #include #include #include #include #include #include #include #include "codec2.h" #include "codec2_fdmdv.h" #include "codec2_ofdm.h" #include "comp_prim.h" #include "debug_alloc.h" #include "fdmdv_internal.h" #include "fmfsk.h" #include "freedv_api_internal.h" #include "freedv_vhf_framing.h" #include "fsk.h" #include "gp_interleaver.h" #include "interldpc.h" #include "mpdecode_core.h" #include "ofdm_internal.h" #include "varicode.h" /* The API version number. The first version is 10. Increment if the API changes in a way that would require changes by the API user. */ #define VERSION 15 /* Version 10 Initial version August 2, 2015. Version 11 September 2015 Added: freedv_zero_total_bit_errors(), freedv_get_sync() Changed all input and output sample rates to 8000 sps. Rates for FREEDV_MODE_700 and 700B were 7500. Version 12 August 2018 Added OFDM configuration switch structure Version 13 November 2019 Removed 700 and 700B modes Version 14 May 2020 Number of returned speech samples can vary, use freedv_get_n_max_speech_samples() to allocate buffers. Version 15 December 2022 Removing rarely used DPSK support which is not needed given fast fading modes */ char *ofdm_statemode[] = {"search", "trial", "synced"}; char *rx_sync_flags_to_text[] = {"----", "---T", "--S-", "--ST", "-B--", "-B-T", "-BS-", "-BST", "E---", "E--T", "E-S-", "E-ST", "EB--", "EB-T", "EBS-", "EBST"}; /*---------------------------------------------------------------------------* \ FUNCTION....: freedv_open AUTHOR......: David Rowe DATE CREATED: 3 August 2014 Call this first to initialise. Returns NULL if initialisation fails. If a malloc() or calloc() fails in general asserts() will fire. \*---------------------------------------------------------------------------*/ struct freedv *freedv_open(int mode) { // defaults for those modes that support the use of adv struct freedv_advanced adv = {0, 2, 100, 8000, 1000, 200, "H_256_512_4"}; return freedv_open_advanced(mode, &adv); } struct freedv *freedv_open_advanced(int mode, struct freedv_advanced *adv) { struct freedv *f; assert(FREEDV_PEAK == OFDM_PEAK); assert(FREEDV_VARICODE_MAX_BITS == VARICODE_MAX_BITS); if ((FDV_MODE_ACTIVE(FREEDV_MODE_1600, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_700C, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_700D, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_700E, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2400A, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2400B, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_800XA, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020B, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_FSK_LDPC, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC0, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, mode)) == false) return NULL; /* set everything to zero just in case */ f = (struct freedv *)CALLOC(1, sizeof(struct freedv)); if (f == NULL) return NULL; f->mode = mode; if (FDV_MODE_ACTIVE(FREEDV_MODE_1600, mode)) freedv_1600_open(f); if (FDV_MODE_ACTIVE(FREEDV_MODE_700C, mode)) freedv_700c_open(f); if (FDV_MODE_ACTIVE(FREEDV_MODE_700D, mode)) freedv_ofdm_voice_open(f, "700D"); if (FDV_MODE_ACTIVE(FREEDV_MODE_700E, mode)) freedv_ofdm_voice_open(f, "700E"); #ifdef __LPCNET__ if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020B, mode)) freedv_2020x_open(f); #endif if (FDV_MODE_ACTIVE(FREEDV_MODE_2400A, mode)) freedv_2400a_open(f); if (FDV_MODE_ACTIVE(FREEDV_MODE_2400B, mode)) freedv_2400b_open(f); if (FDV_MODE_ACTIVE(FREEDV_MODE_800XA, mode)) freedv_800xa_open(f); if (FDV_MODE_ACTIVE(FREEDV_MODE_FSK_LDPC, mode)) freedv_fsk_ldpc_open(f, adv); if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC0, mode)) freedv_ofdm_data_open(f); if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, mode)) freedv_ofdm_data_open(f); if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, mode)) freedv_ofdm_data_open(f); if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, mode)) freedv_ofdm_data_open(f); if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, mode)) freedv_ofdm_data_open(f); varicode_decode_init(&f->varicode_dec_states, 1); return f; } /*---------------------------------------------------------------------------*\ FUNCTION....: freedv_close AUTHOR......: David Rowe DATE CREATED: 3 August 2014 Call to shut down a freedv instance and free memory. \*---------------------------------------------------------------------------*/ void freedv_close(struct freedv *freedv) { assert(freedv != NULL); FREE(freedv->tx_payload_bits); FREE(freedv->rx_payload_bits); if (freedv->codec2) codec2_destroy(freedv->codec2); if (FDV_MODE_ACTIVE(FREEDV_MODE_1600, freedv->mode)) { FREE(freedv->fdmdv_bits); FREE(freedv->fdmdv_tx_bits); FREE(freedv->fdmdv_rx_bits); fdmdv_destroy(freedv->fdmdv); } if (FDV_MODE_ACTIVE(FREEDV_MODE_700C, freedv->mode)) { cohpsk_destroy(freedv->cohpsk); quisk_filt_destroy(freedv->ptFilter8000to7500); FREE(freedv->ptFilter8000to7500); quisk_filt_destroy(freedv->ptFilter7500to8000); FREE(freedv->ptFilter7500to8000); } if (FDV_MODE_ACTIVE(FREEDV_MODE_700D, freedv->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_700E, freedv->mode)) { FREE(freedv->rx_syms); FREE(freedv->rx_amps); FREE(freedv->ldpc); ofdm_destroy(freedv->ofdm); } if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, freedv->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020B, freedv->mode)) { FREE(freedv->codeword_symbols); FREE(freedv->codeword_amps); FREE(freedv->ldpc); FREE(freedv->passthrough_2020); ofdm_destroy(freedv->ofdm); #ifdef __LPCNET__ lpcnet_freedv_destroy(freedv->lpcnet); #endif } if (FDV_MODE_ACTIVE(FREEDV_MODE_2400A, freedv->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_800XA, freedv->mode)) { fsk_destroy(freedv->fsk); fvhff_destroy_deframer(freedv->deframer); } if (FDV_MODE_ACTIVE(FREEDV_MODE_2400B, freedv->mode)) { fmfsk_destroy(freedv->fmfsk); fvhff_destroy_deframer(freedv->deframer); } if (FDV_MODE_ACTIVE(FREEDV_MODE_FSK_LDPC, freedv->mode)) { fsk_destroy(freedv->fsk); FREE(freedv->ldpc); FREE(freedv->frame_llr); FREE(freedv->twoframes_llr); FREE(freedv->twoframes_hard); } if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC0, freedv->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, freedv->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, freedv->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, freedv->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, freedv->mode)) { FREE(freedv->rx_syms); FREE(freedv->rx_amps); FREE(freedv->ldpc); ofdm_destroy(freedv->ofdm); } FREE(freedv); } /* helper function, unpacked bits are much easier to work with inside the modem */ static void codec2_encode_upacked(struct freedv *f, uint8_t unpacked_bits[], short speech_in[]) { int n_packed = (f->bits_per_codec_frame + 7) / 8; uint8_t packed_codec_bits[n_packed]; codec2_encode(f->codec2, packed_codec_bits, speech_in); freedv_unpack(unpacked_bits, packed_codec_bits, f->bits_per_codec_frame); } static int is_ofdm_mode(struct freedv *f) { return FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_700D, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_700E, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC0, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, f->mode); } static int is_ofdm_data_mode(struct freedv *f) { return FDV_MODE_ACTIVE(FREEDV_MODE_DATAC0, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, f->mode); } /*---------------------------------------------------------------------------*\ FUNCTION....: freedv_tx AUTHOR......: David Rowe DATE CREATED: 3 August 2014 Takes a frame of input speech samples, encodes and modulates them to produce a frame of modem samples that can be sent to the transmitter. See demo/freedv_700d_tx.c for an example. speech_in[] is sampled at freedv_get_speech_sample_rate() Hz, and the user must supply exactly freedv_get_n_speech_samples(). The peak level should be between +/- 16384 and +/- 32767. The modem signal mod_out[] is sampled at freedv_get_modem_sample_rate() and is always exactly freedv_get_n_nom_modem_samples() long. mod_out[] will be scaled such that the peak level is around +/-16384. mod_out[] has a higher RMS power than SSB with the same peak level. In other words, the crest factor or peak to average power ratio is lower than typical SSB voice. Ensure your transmitter is capable of continuous high RMS power operation, or consider reducing Tx power. \*---------------------------------------------------------------------------*/ /* real-valued short output */ void freedv_tx(struct freedv *f, short mod_out[], short speech_in[]) { assert(f != NULL); COMP tx_fdm[f->n_nom_modem_samples]; int i; /* FSK and MEFSK/FMFSK modems work only on real samples. It's simpler to just * stick them in the real sample tx/rx functions than to add a comp->real * converter to comptx */ if ((FDV_MODE_ACTIVE(FREEDV_MODE_2400A, f->mode)) || (FDV_MODE_ACTIVE(FREEDV_MODE_2400B, f->mode)) || (FDV_MODE_ACTIVE(FREEDV_MODE_800XA, f->mode))) { /* 800XA has two codec frames per modem frame */ if (FDV_MODE_ACTIVE(FREEDV_MODE_800XA, f->mode)) { codec2_encode(f->codec2, &f->tx_payload_bits[0], &speech_in[0]); codec2_encode(f->codec2, &f->tx_payload_bits[4], &speech_in[320]); } else { codec2_encode(f->codec2, f->tx_payload_bits, speech_in); } freedv_tx_fsk_voice(f, mod_out); } else { freedv_comptx(f, tx_fdm, speech_in); for (i = 0; i < f->n_nom_modem_samples; i++) mod_out[i] = tx_fdm[i].real; } } /* complex float output version of freedv_tx() */ void freedv_comptx(struct freedv *f, COMP mod_out[], short speech_in[]) { assert(f != NULL); assert(FDV_MODE_ACTIVE(FREEDV_MODE_1600, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_700C, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2400A, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2400B, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_700D, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_700E, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode)); if (FDV_MODE_ACTIVE(FREEDV_MODE_1600, f->mode)) { codec2_encode_upacked(f, f->tx_payload_bits, speech_in); freedv_comptx_fdmdv_1600(f, mod_out); } /* all these modes need to pack a bunch of codec frames into one modem frame * ... */ if (FDV_MODE_ACTIVE(FREEDV_MODE_700C, f->mode)) { for (int j = 0; j < f->n_codec_frames; j++) { codec2_encode_upacked(f, f->tx_payload_bits + j * f->bits_per_codec_frame, speech_in); speech_in += codec2_samples_per_frame(f->codec2); } freedv_comptx_700c(f, mod_out); } if (FDV_MODE_ACTIVE(FREEDV_MODE_700D, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_700E, f->mode)) { /* buffer up bits until we get enough encoded bits for interleaver */ for (int j = 0; j < f->n_codec_frames; j++) { int offset = j * f->bits_per_codec_frame; codec2_encode_upacked(f, f->tx_payload_bits + offset, speech_in); speech_in += codec2_samples_per_frame(f->codec2); } freedv_comptx_ofdm(f, mod_out); } #ifdef __LPCNET__ if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode)) { /* buffer up bits until we get enough encoded bits for interleaver */ for (int j = 0; j < f->n_codec_frames; j++) { int offset = j * f->bits_per_codec_frame; lpcnet_enc(f->lpcnet, speech_in, (char *)f->tx_payload_bits + offset); speech_in += lpcnet_samples_per_frame(f->lpcnet); } freedv_comptx_2020(f, mod_out); } #endif /* 2400 A and B are handled by the real-mode TX */ if (FDV_MODE_ACTIVE(FREEDV_MODE_2400A, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2400B, f->mode)) { codec2_encode(f->codec2, f->tx_payload_bits, speech_in); freedv_comptx_fsk_voice(f, mod_out); } } /* pack bits */ void freedv_pack(uint8_t *bytes, uint8_t *bits, int nbits) { memset(bytes, 0, (nbits + 7) / 8); int bit = 7, byte = 0; for (int i = 0; i < nbits; i++) { bytes[byte] |= bits[i] << bit; bit--; if (bit < 0) { bit = 7; byte++; } } } /* unpack bits, MSB first */ void freedv_unpack(uint8_t *bits, uint8_t *bytes, int nbits) { int bit = 7, byte = 0; for (int i = 0; i < nbits; i++) { bits[i] = (bytes[byte] >> bit) & 0x1; bit--; if (bit < 0) { bit = 7; byte++; } } } /* compute the CRC16 of a frame of unpacked bits */ unsigned short freedv_crc16_unpacked(unsigned char unpacked_bits[], int nbits) { assert((nbits % 8) == 0); int nbytes = nbits / 8; uint8_t packed_bytes[nbytes]; freedv_pack(packed_bytes, unpacked_bits, nbits); return freedv_gen_crc16(packed_bytes, nbytes); } /* Return non-zero if CRC16 of a frame of unpacked bits is correct */ int freedv_check_crc16_unpacked(unsigned char unpacked_bits[], int nbits) { assert((nbits % 8) == 0); int nbytes = nbits / 8; uint8_t packed_bytes[nbytes]; freedv_pack(packed_bytes, unpacked_bits, nbits); uint16_t tx_crc16 = (packed_bytes[nbytes - 2] << 8) | packed_bytes[nbytes - 1]; uint16_t rx_crc16 = freedv_crc16_unpacked(unpacked_bits, nbits - 16); return tx_crc16 == rx_crc16; } /* send raw frames of bytes, or speech data that was compressed externally, * complex float output */ void freedv_rawdatacomptx(struct freedv *f, COMP mod_out[], unsigned char *packed_payload_bits) { assert(f != NULL); freedv_unpack(f->tx_payload_bits, packed_payload_bits, f->bits_per_modem_frame); if (FDV_MODE_ACTIVE(FREEDV_MODE_1600, f->mode)) freedv_comptx_fdmdv_1600(f, mod_out); if (FDV_MODE_ACTIVE(FREEDV_MODE_700C, f->mode)) freedv_comptx_700c(f, mod_out); if (FDV_MODE_ACTIVE(FREEDV_MODE_700D, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC0, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, f->mode)) freedv_comptx_ofdm(f, mod_out); if (FDV_MODE_ACTIVE(FREEDV_MODE_FSK_LDPC, f->mode)) { freedv_tx_fsk_ldpc_data(f, mod_out); } } /* send raw frames of bytes, or speech data that was compressed externally, real * short output */ void freedv_rawdatatx(struct freedv *f, short mod_out[], unsigned char *packed_payload_bits) { assert(f != NULL); COMP mod_out_comp[f->n_nat_modem_samples]; /* Some FSK modes used packed bits, and coincidentally support real samples * natively */ if (FDV_MODE_ACTIVE(FREEDV_MODE_2400A, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2400B, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_800XA, f->mode)) { freedv_codec_frames_from_rawdata(f, f->tx_payload_bits, packed_payload_bits); freedv_tx_fsk_voice(f, mod_out); return; /* output is already real */ } freedv_rawdatacomptx(f, mod_out_comp, packed_payload_bits); /* convert complex to real */ for (int i = 0; i < f->n_nat_modem_samples; i++) mod_out[i] = mod_out_comp[i].real; } int freedv_rawdatapreamblecomptx(struct freedv *f, COMP mod_out[]) { assert(f != NULL); int npreamble_samples = 0; if (f->mode == FREEDV_MODE_FSK_LDPC) { struct FSK *fsk = f->fsk; int npreamble_symbols = 50 * (fsk->mode >> 1); int npreamble_bits = npreamble_symbols * (fsk->mode >> 1); npreamble_samples = fsk->Ts * npreamble_symbols; // fprintf(stderr, "npreamble_symbols: %d npreamble_bits: %d // npreamble_samples: %d Nbits: %d N: %d\n", npreamble_symbols, // npreamble_bits, npreamble_samples, fsk->Nbits, fsk->N); assert(npreamble_samples < f->n_nom_modem_samples); /* caller probably using an array of this size */ freedv_tx_fsk_ldpc_data_preamble(f, mod_out, npreamble_bits, npreamble_samples); } else if (is_ofdm_data_mode(f)) { struct OFDM *ofdm = f->ofdm; complex float *tx_preamble = (complex float *)mod_out; memcpy(tx_preamble, ofdm->tx_preamble, sizeof(COMP) * ofdm->samplesperframe); ofdm_hilbert_clipper(ofdm, tx_preamble, ofdm->samplesperframe); npreamble_samples = ofdm->samplesperframe; } return npreamble_samples; } int freedv_rawdatapreambletx(struct freedv *f, short mod_out[]) { assert(f != NULL); COMP mod_out_comp[f->n_nat_modem_samples]; int npreamble_samples = freedv_rawdatapreamblecomptx(f, mod_out_comp); assert(npreamble_samples <= f->n_nat_modem_samples); /* convert complex to real */ for (int i = 0; i < npreamble_samples; i++) mod_out[i] = mod_out_comp[i].real; return npreamble_samples; } int freedv_rawdatapostamblecomptx(struct freedv *f, COMP mod_out[]) { assert(f != NULL); int npostamble_samples = 0; if (is_ofdm_data_mode(f)) { struct OFDM *ofdm = f->ofdm; complex float *tx_postamble = (complex float *)mod_out; memcpy(tx_postamble, ofdm->tx_postamble, sizeof(COMP) * ofdm->samplesperframe); ofdm_hilbert_clipper(ofdm, tx_postamble, ofdm->samplesperframe); npostamble_samples = ofdm->samplesperframe; } return npostamble_samples; } int freedv_rawdatapostambletx(struct freedv *f, short mod_out[]) { assert(f != NULL); COMP mod_out_comp[f->n_nat_modem_samples]; int npostamble_samples = freedv_rawdatapostamblecomptx(f, mod_out_comp); assert(npostamble_samples <= f->n_nat_modem_samples); /* convert complex to real */ for (int i = 0; i < npostamble_samples; i++) mod_out[i] = mod_out_comp[i].real; return npostamble_samples; } /* VHF packet data tx function */ void freedv_datatx(struct freedv *f, short mod_out[]) { assert(f != NULL); if (FDV_MODE_ACTIVE(FREEDV_MODE_2400A, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2400B, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_800XA, f->mode)) { freedv_tx_fsk_data(f, mod_out); } } /* VHF packet data: returns how many tx frames are queued up but not sent yet */ int freedv_data_ntxframes(struct freedv *f) { assert(f != NULL); if (FDV_MODE_ACTIVE(FREEDV_MODE_2400A, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2400B, f->mode)) { if (f->deframer->fdc) return freedv_data_get_n_tx_frames(f->deframer->fdc, 8); } else if (FDV_MODE_ACTIVE(FREEDV_MODE_800XA, f->mode)) { if (f->deframer->fdc) return freedv_data_get_n_tx_frames(f->deframer->fdc, 6); } return 0; } int freedv_nin(struct freedv *f) { if (FDV_MODE_ACTIVE(FREEDV_MODE_700C, f->mode)) // For mode 700C, the input rate is 8000 sps, but the modem rate is 7500 sps // For mode 700C, we request a larger number of Rx samples that will be // decimated to f->nin samples return (16 * f->nin + f->ptFilter8000to7500->decim_index) / 15; else return f->nin; } int freedv_codec_frames_from_rawdata(struct freedv *f, unsigned char *codec_frames, unsigned char *rawdata) { int cbit = 7; int cbyte = 0; int rbit = 7; int rbyte = 0; int modem_bits = freedv_get_bits_per_modem_frame(f); int codec_bits = freedv_get_bits_per_codec_frame(f); int nr_cbits = 0; int i; codec_frames[0] = 0; for (i = 0; i < modem_bits; i++) { codec_frames[cbyte] |= ((rawdata[rbyte] >> rbit) & 1) << cbit; rbit--; if (rbit < 0) { rbit = 7; rbyte++; } cbit--; if (cbit < 0) { cbit = 7; cbyte++; codec_frames[cbyte] = 0; } nr_cbits++; if (nr_cbits == codec_bits) { if (cbit) { cbyte++; codec_frames[cbyte] = 0; } cbit = 7; nr_cbits = 0; } } return f->n_codec_frames; } int freedv_rawdata_from_codec_frames(struct freedv *f, unsigned char *rawdata, unsigned char *codec_frames) { int cbit = 7; int cbyte = 0; int rbit = 7; int rbyte = 0; int modem_bits = freedv_get_bits_per_modem_frame(f); int codec_bits = freedv_get_bits_per_codec_frame(f); int nr_cbits = 0; int i; rawdata[rbyte] = 0; for (i = 0; i < modem_bits; i++) { rawdata[rbyte] |= ((codec_frames[cbyte] >> cbit) & 1) << rbit; rbit--; if (rbit < 0) { rbit = 7; rbyte++; rawdata[rbyte] = 0; } cbit--; if (cbit < 0) { cbit = 7; cbyte++; } nr_cbits++; if (nr_cbits == codec_bits) { if (cbit) cbyte++; cbit = 7; nr_cbits = 0; } } return f->n_codec_frames; } /*---------------------------------------------------------------------------*\ FUNCTION....: freedv_rx AUTHOR......: David Rowe DATE CREATED: 3 August 2014 Takes samples from the radio receiver and decodes them, producing a frame of decoded speech samples. See demo/freedv_700d_rx.c for an example. demod_in[] is an array of received samples sampled at freedv_get_modem_sample_rate(). To account for difference in the transmit and receive sample clock frequencies, the number of demod_in[] samples is time varying. You MUST call freedv_nin() BEFORE EACH call to freedv_rx() and pass exactly that many samples to this function: short demod_in[freedv_get_n_max_modem_samples(f)]; short speech_out[freedv_get_n_max_speech_samples(f)]; nin = freedv_nin(f); // num input samples for first read while(fread(demod_in, sizeof(short), nin, fin) == nin) { nout = freedv_rx(f, speech_out, demod_in); fwrite(speech_out, sizeof(short), nout, fout); nin = freedv_nin(f); // num input samples for next read } To help set your buffer sizes, The maximum value of freedv_nin() is freedv_get_n_max_modem_samples(). freedv_rx() returns the number of output speech samples available in speech_out[], which is sampled at freedv_get_speech_sample_rate(). You should ALWAYS check the return value of freedv_rx(), and read EXACTLY that number of speech samples from speech_out[]. Not every call to freedv_rx will return speech samples; in some modes several modem frames are processed before speech samples are returned. When squelch is active, zero samples may be returned. The peak level of demod_in[] is not critical, as the demod works well over a wide range of amplitude scaling. However avoid clipping (overload, or samples pinned to +/- 32767). speech_out[] will peak at just less than +/-32767. When squelch is disabled, this function echoes the demod_in[] samples to speech_out[]. This allows the user to listen to the channel, which is useful for tuning FreeDV signals or reception of non-FreeDV signals. \*---------------------------------------------------------------------------*/ int freedv_rx(struct freedv *f, short speech_out[], short demod_in[]) { assert(f != NULL); int i; int nin = freedv_nin(f); f->nin_prev = nin; assert(nin <= f->n_max_modem_samples); /* FSK Rx happens in real floats, so convert to those and call their demod * here */ if (FDV_MODE_ACTIVE(FREEDV_MODE_2400A, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2400B, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_800XA, f->mode)) { float rx_float[f->n_max_modem_samples]; for (i = 0; i < nin; i++) { rx_float[i] = ((float)demod_in[i]); } return freedv_floatrx(f, speech_out, rx_float); } if (FDV_MODE_ACTIVE(FREEDV_MODE_1600, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_700C, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode)) { float gain = 1.0f; assert(nin <= f->n_max_modem_samples); COMP rx_fdm[f->n_max_modem_samples]; for (i = 0; i < nin; i++) { rx_fdm[i].real = gain * (float)demod_in[i]; rx_fdm[i].imag = 0.0f; } return freedv_comprx(f, speech_out, rx_fdm); } /* special low memory version for 700D, to help with stm32 port */ if (FDV_MODE_ACTIVE(FREEDV_MODE_700D, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_700E, f->mode)) { float gain = 2.0f; /* keep levels the same as Octave simulations and C unit tests for real signals */ return freedv_shortrx(f, speech_out, demod_in, gain); } assert(1); /* should never get here */ return 0; } /* complex sample input version of freedv_rx() */ int freedv_comprx(struct freedv *f, short speech_out[], COMP demod_in[]) { assert(f != NULL); assert(f->nin <= f->n_max_modem_samples); int rx_status = 0; f->nin_prev = freedv_nin(f); if (FDV_MODE_ACTIVE(FREEDV_MODE_1600, f->mode)) { rx_status = freedv_comprx_fdmdv_1600(f, demod_in); } if (FDV_MODE_ACTIVE(FREEDV_MODE_700C, f->mode)) { rx_status = freedv_comprx_700c(f, demod_in); } if ((FDV_MODE_ACTIVE(FREEDV_MODE_2400A, f->mode)) || (FDV_MODE_ACTIVE(FREEDV_MODE_2400B, f->mode)) || (FDV_MODE_ACTIVE(FREEDV_MODE_800XA, f->mode))) { rx_status = freedv_comprx_fsk(f, demod_in); } if (FDV_MODE_ACTIVE(FREEDV_MODE_700D, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_700E, f->mode)) { rx_status = freedv_comp_short_rx_ofdm(f, (void *)demod_in, 0, 2.0f); // was 1.0 ?? } if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode)) { #ifdef __LPCNET__ rx_status = freedv_comprx_2020(f, demod_in); #endif } short demod_in_short[f->nin_prev]; for (int i = 0; i < f->nin_prev; i++) demod_in_short[i] = demod_in[i].real; return freedv_bits_to_speech(f, speech_out, demod_in_short, rx_status); } /* memory efficient real short version - just for 700D on the SM1000 */ int freedv_shortrx(struct freedv *f, short speech_out[], short demod_in[], float gain) { assert(f != NULL); int rx_status = 0; f->nin_prev = f->nin; // At this stage short interface only supported for 700D, to help // memory requirements on stm32 assert((f->mode == FREEDV_MODE_700D) || (f->mode == FREEDV_MODE_700E)); assert(f->nin <= f->n_max_modem_samples); if (FDV_MODE_ACTIVE(FREEDV_MODE_700D, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_700E, f->mode)) { rx_status = freedv_comp_short_rx_ofdm(f, (void *)demod_in, 1, gain); } return freedv_bits_to_speech(f, speech_out, demod_in, rx_status); } /* helper function, unpacked bits are much easier to work with inside the modem */ static void codec2_decode_upacked(struct freedv *f, short speech_out[], uint8_t unpacked_bits[]) { int n_packed = (f->bits_per_codec_frame + 7) / 8; uint8_t packed_codec_bits[n_packed]; freedv_pack(packed_codec_bits, unpacked_bits, f->bits_per_codec_frame); codec2_decode(f->codec2, speech_out, packed_codec_bits); } /*---------------------------------------------------------------------------* \ FUNCTION....: freedv_rx_bits_to_speech AUTHOR......: David Rowe DATE CREATED: May 2020 The *_rx functions takes off air samples, demodulates and (for some modes) FEC decodes, giving us a frame of bits. This function captures a lot of tricky logic that has been distilled through experience: There may not be a frame of bits returned on every call freedv_*rx* call. When there are valid bits we need to run the speech decoder. We may not have demod sync, so various pass through options may happen with the input samples. We may squelch based on SNR. Need to handle various codecs, and varying number of codec frames per modem frame. Squelch audio if test frames are being sent. Determine how many speech samples to return, which will vary if in sync/out of sync Work with real and complex inputs (complex wrapper) Attenuate audio on pass through. Deal with 700D first frame burble, and different sync states from OFDM modes like 700D. Output no samples if squelched, we assume it's OK for the audio sink to run dry. A FIFO is required on output to smooth sample flow to audio sink. Don't decode when we are sending test frames \*---------------------------------------------------------------------------*/ int freedv_bits_to_speech(struct freedv *f, short speech_out[], short demod_in[], int rx_status) { int nout = 0; int decode_speech = 0; if ((rx_status & FREEDV_RX_SYNC) == 0) { if (!f->squelch_en) { /* pass through received samples so we can hear what's going on, e.g. * during tuning */ if ((f->mode == FREEDV_MODE_2020) || (f->mode == FREEDV_MODE_2020B)) { /* 8kHz modem sample rate but 16 kHz speech sample rate, so we need to resample */ nout = 2 * f->nin_prev; assert(nout <= freedv_get_n_max_speech_samples(f)); float tmp[nout]; for (int i = 0; i < nout / 2; i++) f->passthrough_2020[FDMDV_OS_TAPS_16K + i] = demod_in[i]; fdmdv_8_to_16(tmp, &f->passthrough_2020[FDMDV_OS_TAPS_16K], nout / 2); for (int i = 0; i < nout; i++) speech_out[i] = f->passthrough_gain * tmp[i]; } else { /* Speech and modem rates might be different */ int rate_factor = f->modem_sample_rate / f->speech_sample_rate; nout = f->nin_prev / rate_factor; for (int i = 0; i < nout; i++) speech_out[i] = f->passthrough_gain * demod_in[i * rate_factor]; } } } if ((rx_status & FREEDV_RX_SYNC) && (rx_status & FREEDV_RX_BITS) && !f->test_frames) { /* following logic is tricky so spell it out clearly, see table in: https://github.com/drowe67/codec2/pull/111 */ if (!f->squelch_en) { decode_speech = 1; } else { /* squelch is enabled */ /* anti-burble case - don't decode on trial sync unless the frame has no bit errors. This prevents short lived trial sync cases generating random bursts of audio */ if (rx_status & FREEDV_RX_TRIAL_SYNC) { if ((rx_status & FREEDV_RX_BIT_ERRORS) == 0) decode_speech = 1; } else { /* sync is solid - decode even through fades as there is still some * speech info there */ if (f->snr_est > f->snr_squelch_thresh) decode_speech = 1; } } } if (decode_speech) { if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode)) { #ifdef __LPCNET__ /* LPCNet decoder */ int bits_per_codec_frame = lpcnet_bits_per_frame(f->lpcnet); int data_bits_per_frame = f->ldpc->data_bits_per_frame; int frames = data_bits_per_frame / bits_per_codec_frame; nout = f->n_speech_samples; for (int i = 0; i < frames; i++) { lpcnet_dec(f->lpcnet, (char *)f->rx_payload_bits + i * bits_per_codec_frame, speech_out); /* ear protection: on frames with errors and clipping, reduce level by * 12dB */ if (rx_status & FREEDV_RX_BIT_ERRORS) { int max = 0.0; for (int j = 0; j < lpcnet_samples_per_frame(f->lpcnet); j++) if (abs(speech_out[j]) > max) max = abs(speech_out[j]); if (max == 32767) for (int j = 0; j < lpcnet_samples_per_frame(f->lpcnet); j++) speech_out[j] *= 0.25; } speech_out += lpcnet_samples_per_frame(f->lpcnet); } #endif } else { /* codec 2 decoder */ if (FDV_MODE_ACTIVE(FREEDV_MODE_700D, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_700E, f->mode)) { nout = f->n_speech_samples; for (int i = 0; i < f->n_codec_frames; i++) { codec2_decode_upacked( f, speech_out, f->rx_payload_bits + i * f->bits_per_codec_frame); speech_out += codec2_samples_per_frame(f->codec2); } } else { /* non-interleaved Codec 2 modes */ nout = f->n_speech_samples; if ((FDV_MODE_ACTIVE(FREEDV_MODE_2400A, f->mode)) || (FDV_MODE_ACTIVE(FREEDV_MODE_2400B, f->mode))) codec2_decode(f->codec2, speech_out, f->rx_payload_bits); else if (FDV_MODE_ACTIVE(FREEDV_MODE_800XA, f->mode)) { codec2_decode(f->codec2, &speech_out[0], &f->rx_payload_bits[0]); codec2_decode(f->codec2, &speech_out[320], &f->rx_payload_bits[4]); } else { for (int i = 0; i < f->n_codec_frames; i++) { codec2_decode_upacked( f, speech_out, f->rx_payload_bits + i * f->bits_per_codec_frame); speech_out += codec2_samples_per_frame(f->codec2); } } } } } if (f->verbose == 3) { fprintf(stderr, " sqen: %d nout: %d decsp: %d\n", f->squelch_en, nout, decode_speech); } f->rx_status = rx_status; assert(nout <= freedv_get_n_max_speech_samples(f)); return nout; } /* a way to receive raw frames of bytes, or speech data that will be * decompressed externally */ int freedv_rawdatarx(struct freedv *f, unsigned char *packed_payload_bits, short demod_in[]) { assert(f != NULL); int nin = freedv_nin(f); assert(nin <= f->n_max_modem_samples); COMP demod_in_comp[f->n_max_modem_samples]; for (int i = 0; i < nin; i++) { demod_in_comp[i].real = (float)demod_in[i]; demod_in_comp[i].imag = 0.0; } return freedv_rawdatacomprx(f, packed_payload_bits, demod_in_comp); } /* a way to receive raw frames of bytes, or speech data that will be * decompressed externally */ int freedv_rawdatacomprx(struct freedv *f, unsigned char *packed_payload_bits, COMP demod_in[]) { assert(f != NULL); int ret = 0; int rx_status = 0; /* FSK modes used packed bits internally */ if (FDV_MODE_ACTIVE(FREEDV_MODE_2400A, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2400B, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_800XA, f->mode)) { rx_status = freedv_comprx_fsk(f, demod_in); f->rx_status = rx_status; if (rx_status & FREEDV_RX_BITS) { ret = (freedv_get_bits_per_modem_frame(f) + 7) / 8; freedv_rawdata_from_codec_frames(f, packed_payload_bits, f->rx_payload_bits); } return ret; } if (FDV_MODE_ACTIVE(FREEDV_MODE_1600, f->mode)) rx_status = freedv_comprx_fdmdv_1600(f, demod_in); if (FDV_MODE_ACTIVE(FREEDV_MODE_700C, f->mode)) rx_status = freedv_comprx_700c(f, demod_in); if (FDV_MODE_ACTIVE(FREEDV_MODE_700D, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC0, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, f->mode)) rx_status = freedv_comp_short_rx_ofdm(f, (void *)demod_in, 0, 1.0f); if (FDV_MODE_ACTIVE(FREEDV_MODE_FSK_LDPC, f->mode)) { rx_status = freedv_rx_fsk_ldpc_data(f, demod_in); } if (rx_status & FREEDV_RX_BITS) { ret = (f->bits_per_modem_frame + 7) / 8; freedv_pack(packed_payload_bits, f->rx_payload_bits, f->bits_per_modem_frame); } /* might want to check this for errors, e.g. if reliable data is important */ f->rx_status = rx_status; return ret; } /*---------------------------------------------------------------------------* \ FUNCTION....: freedv_get_version AUTHOR......: Jim Ahlstrom DATE CREATED: 28 July 2015 Return the version of the FreeDV API. This is meant to help API users determine when incompatible changes have occurred. \*---------------------------------------------------------------------------*/ int freedv_get_version(void) { return VERSION; } /*---------------------------------------------------------------------------* \ FUNCTION....: freedv_get_hash AUTHOR......: David Rowe DATE CREATED: July 2020 Return the a string with the Git hash of the repo used to build this code. \*---------------------------------------------------------------------------*/ static char git_hash[] = GIT_HASH; char *freedv_get_hash(void) { return git_hash; } /*---------------------------------------------------------------------------*\ FUNCTION....: freedv_set_callback_txt AUTHOR......: Jim Ahlstrom DATE CREATED: 28 July 2015 Set the callback functions and the callback state pointer that will be used for the aux txt channel. The freedv_callback_rx is a function pointer that will be called to return received characters. The freedv_callback_tx is a function pointer that will be called to send transmitted characters. The callback state is a user-defined void pointer that will be passed to the callback functions. Any or all can be NULL, and the default is all NULL. The function signatures are: void receive_char(void *callback_state, char c); char transmit_char(void *callback_state); \*---------------------------------------------------------------------------*/ void freedv_set_callback_txt(struct freedv *f, freedv_callback_rx rx, freedv_callback_tx tx, void *state) { if (FDV_MODE_ACTIVE(FREEDV_MODE_800XA, f->mode) == false) { f->freedv_put_next_rx_char = rx; f->freedv_get_next_tx_char = tx; f->callback_state = state; } } /*---------------------------------------------------------------------------*\ FUNCTION....: freedv_set_callback_txt_sym AUTHOR......: Mooneer Salem DATE CREATED: 19 August 2021 Set the callback functions and the callback state pointer that will be used to provide the raw symbols for the aux txt channel. The freedv_callback_rx_sym is a function pointer that will be called to return received symbols. The callback state is a user-defined void pointer that will be passed to the callback function. Any or all can be NULL, and the default is all NULL. The function signature is: void receive_sym(void *callback_state, COMP sym, COMP amp); Note: Active for OFDM modes only (700D/E, 2020). \*---------------------------------------------------------------------------*/ void freedv_set_callback_txt_sym(struct freedv *f, freedv_callback_rx_sym rx, void *state) { if (FDV_MODE_ACTIVE(FREEDV_MODE_700D, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_700E, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode)) { f->freedv_put_next_rx_symbol = rx; f->callback_state_sym = state; } } /*---------------------------------------------------------------------------*\ FUNCTION....: freedv_set_callback_protocol AUTHOR......: Brady OBrien DATE CREATED: 21 February 2016 VHF packet data function. Set the callback functions and callback pointer that will be used for the protocol data channel. freedv_callback_protorx will be called when a frame containing protocol data arrives. freedv_callback_prototx will be called when a frame containing protocol information is being generated. Protocol information is intended to be used to develop protocols and fancy features atop VHF freedv, much like those present in DMR. Protocol bits are to be passed in an msb-first char array The number of protocol bits are findable with freedv_get_protocol_bits \*---------------------------------------------------------------------------*/ void freedv_set_callback_protocol(struct freedv *f, freedv_callback_protorx rx, freedv_callback_prototx tx, void *callback_state) { if (FDV_MODE_ACTIVE(FREEDV_MODE_800XA, f->mode) == false) { f->freedv_put_next_proto = rx; f->freedv_get_next_proto = tx; f->proto_callback_state = callback_state; } } /*---------------------------------------------------------------------------*\ FUNCTION....: freedv_set_callback_datarx / freedv_set_callback_datatx AUTHOR......: Jeroen Vreeken DATE CREATED: 04 March 2016 VHF packet data function. Set the callback functions and callback pointer that will be used for the data channel. freedv_callback_datarx will be called when a packet has been successfully received. freedv_callback_data_tx will be called when transmission of a new packet can begin. If the returned size of the datatx callback is zero the data frame is still generated, but will contain only a header update. \*---------------------------------------------------------------------------*/ void freedv_set_callback_data(struct freedv *f, freedv_callback_datarx datarx, freedv_callback_datatx datatx, void *callback_state) { if ((FDV_MODE_ACTIVE(FREEDV_MODE_2400A, f->mode)) || (FDV_MODE_ACTIVE(FREEDV_MODE_2400B, f->mode)) || (FDV_MODE_ACTIVE(FREEDV_MODE_800XA, f->mode))) { if (!f->deframer->fdc) f->deframer->fdc = freedv_data_channel_create(); if (!f->deframer->fdc) return; freedv_data_set_cb_rx(f->deframer->fdc, datarx, callback_state); freedv_data_set_cb_tx(f->deframer->fdc, datatx, callback_state); } } /*---------------------------------------------------------------------------*\ FUNCTION....: freedv_set_data_header AUTHOR......: Jeroen Vreeken DATE CREATED: 04 March 2016 VHF packet data function. Set the data header for the data channel. Header compression will be used whenever packets from this header are sent. The header will also be used for fill packets when a data frame is requested without a packet available. \*---------------------------------------------------------------------------*/ void freedv_set_data_header(struct freedv *f, unsigned char *header) { if ((FDV_MODE_ACTIVE(FREEDV_MODE_2400A, f->mode)) || (FDV_MODE_ACTIVE(FREEDV_MODE_2400B, f->mode)) || (FDV_MODE_ACTIVE(FREEDV_MODE_800XA, f->mode))) { if (!f->deframer->fdc) f->deframer->fdc = freedv_data_channel_create(); if (!f->deframer->fdc) return; freedv_data_set_header(f->deframer->fdc, header); } } /*---------------------------------------------------------------------------*\ FUNCTION....: freedv_get_modem_stats AUTHOR......: Jim Ahlstrom DATE CREATED: 28 July 2015 Return data from the modem. The arguments are pointers to the data items. The pointers can be NULL if the data item is not wanted. \*---------------------------------------------------------------------------*/ void freedv_get_modem_stats(struct freedv *f, int *sync, float *snr_est) { if (FDV_MODE_ACTIVE(FREEDV_MODE_1600, f->mode)) fdmdv_get_demod_stats(f->fdmdv, &f->stats); if (FDV_MODE_ACTIVE(FREEDV_MODE_700C, f->mode)) cohpsk_get_demod_stats(f->cohpsk, &f->stats); if (sync) *sync = f->sync; if (snr_est) *snr_est = f->snr_est; } /*---------------------------------------------------------------------------*\ FUNCTIONS...: freedv_set_* AUTHOR......: Jim Ahlstrom DATE CREATED: 28 July 2015 Set some parameters used by FreeDV. It is possible to write a macro using ## for this, but I wasn't sure it would be 100% portable. \*---------------------------------------------------------------------------*/ void freedv_set_test_frames(struct freedv *f, int val) { f->test_frames = val; } void freedv_set_test_frames_diversity(struct freedv *f, int val) { f->test_frames_diversity = val; } void freedv_set_squelch_en(struct freedv *f, bool val) { f->squelch_en = val; } void freedv_set_total_bit_errors(struct freedv *f, int val) { f->total_bit_errors = val; } void freedv_set_total_bits(struct freedv *f, int val) { f->total_bits = val; } void freedv_set_total_bit_errors_coded(struct freedv *f, int val) { f->total_bit_errors_coded = val; } void freedv_set_total_bits_coded(struct freedv *f, int val) { f->total_bits_coded = val; } void freedv_set_total_packet_errors(struct freedv *f, int val) { f->total_packet_errors = val; } void freedv_set_total_packets(struct freedv *f, int val) { f->total_packets = val; } void freedv_set_varicode_code_num(struct freedv *f, int val) { varicode_set_code_num(&f->varicode_dec_states, val); } void freedv_set_ext_vco(struct freedv *f, int val) { f->ext_vco = val; } void freedv_set_snr_squelch_thresh(struct freedv *f, float val) { f->snr_squelch_thresh = val; } void freedv_set_tx_amp(struct freedv *f, float amp) { f->tx_amp = amp; } void freedv_passthrough_gain(struct freedv *f, float g) { f->passthrough_gain = g; } /* supported by 700C, 700D, 700E */ void freedv_set_clip(struct freedv *f, bool val) { f->clip_en = val; if (is_ofdm_mode(f)) { f->ofdm->clip_en = val; /* really should have BPF if we clip */ if (val) ofdm_set_tx_bpf(f->ofdm, true); } } /* Band Pass Filter to cleanup OFDM tx waveform, only supported by some modes */ void freedv_set_tx_bpf(struct freedv *f, int val) { if (is_ofdm_mode(f)) { ofdm_set_tx_bpf(f->ofdm, val); } } void freedv_set_phase_est_bandwidth_mode(struct freedv *f, int val) { if (FDV_MODE_ACTIVE(FREEDV_MODE_700D, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode)) { ofdm_set_phase_est_bandwidth_mode(f->ofdm, val); } } // For those FreeDV modes using the codec 2 700C vocoder 700C/D/E/800XA void freedv_set_eq(struct freedv *f, bool val) { if (f->codec2 != NULL) { codec2_700c_eq(f->codec2, val); } } void freedv_set_verbose(struct freedv *f, int verbosity) { f->verbose = verbosity; if (FDV_MODE_ACTIVE(FREEDV_MODE_700C, f->mode)) { cohpsk_set_verbose(f->cohpsk, f->verbose); } if (is_ofdm_mode(f)) { ofdm_set_verbose(f->ofdm, f->verbose - 1); } } void freedv_set_callback_error_pattern(struct freedv *f, freedv_calback_error_pattern cb, void *state) { f->freedv_put_error_pattern = cb; f->error_pattern_callback_state = state; } void freedv_set_carrier_ampl(struct freedv *f, int c, float ampl) { if (FDV_MODE_ACTIVE(FREEDV_MODE_700C, f->mode)) { cohpsk_set_carrier_ampl(f->cohpsk, c, ampl); } } /*---------------------------------------------------------------------------* \ FUNCTIONS...: freedv_set_sync AUTHOR......: David Rowe DATE CREATED: May 2018 Extended control of sync state machines for OFDM modes. Ensure this is called in the same thread as freedv_rx(). \*---------------------------------------------------------------------------*/ void freedv_set_sync(struct freedv *freedv, int sync_cmd) { assert(freedv != NULL); if (freedv->ofdm != NULL) { ofdm_set_sync(freedv->ofdm, sync_cmd); } } // this also selects burst mode void freedv_set_frames_per_burst(struct freedv *freedv, int framesperburst) { assert(freedv != NULL); if (freedv->ofdm != NULL) { // change of nomenclature as we cross into the OFDM modem layer. In the // OFDM modem we have packets that contain multiple "modem frames" ofdm_set_packets_per_burst(freedv->ofdm, framesperburst); } } struct FSK *freedv_get_fsk(struct freedv *f) { return f->fsk; } /*---------------------------------------------------------------------------*\ FUNCTIONS...: freedv_get_* AUTHOR......: Jim Ahlstrom DATE CREATED: 28 July 2015 Get some parameters from FreeDV. \*---------------------------------------------------------------------------*/ int freedv_get_protocol_bits(struct freedv *f) { return f->n_protocol_bits; } int freedv_get_mode(struct freedv *f) { return f->mode; } int freedv_get_test_frames(struct freedv *f) { return f->test_frames; } int freedv_get_speech_sample_rate(struct freedv *f) { return f->speech_sample_rate; } int freedv_get_n_speech_samples(struct freedv *f) { return f->n_speech_samples; } int freedv_get_modem_sample_rate(struct freedv *f) { return f->modem_sample_rate; } int freedv_get_modem_symbol_rate(struct freedv *f) { return f->modem_symbol_rate; } int freedv_get_n_max_modem_samples(struct freedv *f) { return f->n_max_modem_samples; } int freedv_get_n_nom_modem_samples(struct freedv *f) { return f->n_nom_modem_samples; } int freedv_get_n_tx_modem_samples(struct freedv *f) { return f->n_nat_modem_samples; } int freedv_get_total_bits(struct freedv *f) { return f->total_bits; } int freedv_get_total_bit_errors(struct freedv *f) { return f->total_bit_errors; } int freedv_get_total_bits_coded(struct freedv *f) { return f->total_bits_coded; } int freedv_get_total_bit_errors_coded(struct freedv *f) { return f->total_bit_errors_coded; } int freedv_get_total_packets(struct freedv *f) { return f->total_packets; } int freedv_get_total_packet_errors(struct freedv *f) { return f->total_packet_errors; } int freedv_get_sync(struct freedv *f) { return f->sync; } struct CODEC2 *freedv_get_codec2(struct freedv *f) { return f->codec2; } int freedv_get_bits_per_codec_frame(struct freedv *f) { return f->bits_per_codec_frame; } int freedv_get_bits_per_modem_frame(struct freedv *f) { return f->bits_per_modem_frame; } int freedv_get_rx_status(struct freedv *f) { return f->rx_status; } void freedv_get_fsk_S_and_N(struct freedv *f, float *S, float *N) { *S = f->fsk_S[0]; *N = f->fsk_N[0]; } /*---------------------------------------------------------------------------*\ FUNCTIONS...: freedv_set_tuning_range AUTHOR......: Simon Lang - DJ2LS DATE CREATED: 18 feb 2022 DEFAULT.....: fmin: -50.0Hz fmax: 50.0Hz DESCRIPTION.: |<---fmin - | rx centre frequency | + fmax--->| Useful for handling frequency offsets, e.g. caused by an imprecise VFO, the trade off is more CPU power is required. \*---------------------------------------------------------------------------*/ int freedv_set_tuning_range(struct freedv *freedv, float val_fmin, float val_fmax) { if (is_ofdm_data_mode(freedv) && (strcmp(freedv->ofdm->data_mode, "burst") == 0)) { freedv->ofdm->fmin = val_fmin; freedv->ofdm->fmax = val_fmax; return 1; } else { return 0; } } int freedv_get_n_max_speech_samples(struct freedv *f) { /* When "passing through" demod samples to the speech output (e.g. no sync and squelch off) f->nin bounces around with timing variations. So we may return freedv_get_n_max_modem_samples() via the speech_output[] array */ int max_output_passthrough_samples; if (FDV_MODE_ACTIVE(FREEDV_MODE_2020, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2020B, f->mode)) // In 2020 we oversample the input modem samples from 8->16 kHz max_output_passthrough_samples = 2 * freedv_get_n_max_modem_samples(f); else max_output_passthrough_samples = freedv_get_n_max_modem_samples(f); if (max_output_passthrough_samples > f->n_speech_samples) return max_output_passthrough_samples; else return f->n_speech_samples; } // Now dummy obsolete call int freedv_get_sync_interleaver(struct freedv *f) { return 1; } int freedv_get_sz_error_pattern(struct freedv *f) { if (FDV_MODE_ACTIVE(FREEDV_MODE_700C, f->mode)) { /* if diversity disabled callback sends error pattern for upper and lower * carriers */ return f->sz_error_pattern * (2 - f->test_frames_diversity); } else { return f->sz_error_pattern; } } // Get modem status, scatter/eye diagram for plotting, other goodies void freedv_get_modem_extended_stats(struct freedv *f, struct MODEM_STATS *stats) { if (FDV_MODE_ACTIVE(FREEDV_MODE_1600, f->mode)) fdmdv_get_demod_stats(f->fdmdv, stats); if (FDV_MODE_ACTIVE(FREEDV_MODE_2400A, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_800XA, f->mode)) { fsk_get_demod_stats(f->fsk, stats); /* eye diagram samples, clock offset etc */ stats->snr_est = f->snr_est; /* estimated when fsk_demod() called in freedv_fsk.c */ stats->sync = f->sync; /* sync indicator comes from framing layer */ } if (FDV_MODE_ACTIVE(FREEDV_MODE_2400B, f->mode)) { fmfsk_get_demod_stats(f->fmfsk, stats); stats->snr_est = f->snr_est; stats->sync = f->sync; } if (FDV_MODE_ACTIVE(FREEDV_MODE_700C, f->mode)) { cohpsk_get_demod_stats(f->cohpsk, stats); } if (is_ofdm_mode(f)) { // OFDM modem stats updated when demod runs, so copy last update // We need to avoid over writing the FFT states which are updated by a // different function // TODO we need a better design here: Issue #182 #ifndef __EMBEDDED__ size_t ncopy = (void *)stats->rx_eye - (void *)stats; memcpy(stats, &f->stats, ncopy); #endif stats->snr_est = f->snr_est; stats->sync = f->sync; } } int freedv_get_n_tx_preamble_modem_samples(struct freedv *f) { if (f->mode == FREEDV_MODE_FSK_LDPC) { struct FSK *fsk = f->fsk; int npreamble_symbols = 50 * (fsk->mode >> 1); return fsk->Ts * npreamble_symbols; } else if (is_ofdm_data_mode(f)) { return f->ofdm->samplesperframe; } return 0; } int freedv_get_n_tx_postamble_modem_samples(struct freedv *f) { if (is_ofdm_data_mode(f)) { return f->ofdm->samplesperframe; } return 0; } // from // http://stackoverflow.com/questions/10564491/function-to-calculate-a-crc16-checksum unsigned short freedv_gen_crc16(unsigned char *data_p, int length) { unsigned char x; unsigned short crc = 0xFFFF; while (length--) { x = crc >> 8 ^ *data_p++; x ^= x >> 4; crc = (crc << 8) ^ ((unsigned short)(x << 12)) ^ ((unsigned short)(x << 5)) ^ ((unsigned short)x); } return crc; } codec2-1.2.0/src/freedv_api.h000066400000000000000000000332401445607075400157330ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_api.h AUTHOR......: David Rowe DATE CREATED: August 2014 Library of API functions that implement the FreeDV API, useful for embedding FreeDV in other programs. Please see: 1. README_freedv.md 2. Notes on function use in freedv_api.c 3. Simple demo programs in the "demo" directory 4. The full featured command line freedv_tx.c and freedv_rx.c programs \*---------------------------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __FREEDV_API__ #define __FREEDV_API__ #include #include // This declares a single-precision (float) complex number #include "comp.h" #ifdef __cplusplus extern "C" { #endif // available speech modes #define FREEDV_MODE_1600 0 #define FREEDV_MODE_2400A 3 #define FREEDV_MODE_2400B 4 #define FREEDV_MODE_800XA 5 #define FREEDV_MODE_700C 6 #define FREEDV_MODE_700D 7 #define FREEDV_MODE_700E 13 #define FREEDV_MODE_2020 8 #define FREEDV_MODE_2020B 16 // available data modes #define FREEDV_MODE_FSK_LDPC 9 #define FREEDV_MODE_DATAC1 10 #define FREEDV_MODE_DATAC3 12 #define FREEDV_MODE_DATAC0 14 #define FREEDV_MODE_DATAC4 18 #define FREEDV_MODE_DATAC13 19 // Sample rates used #define FREEDV_FS_8000 8000 #define FREEDV_FS_16000 16000 // peak (complex) sample value from Tx modulator #define FREEDV_PEAK 16384 // Return code flags for freedv_get_rx_status() function #define FREEDV_RX_TRIAL_SYNC 0x1 // demodulator has trial sync #define FREEDV_RX_SYNC 0x2 // demodulator has sync #define FREEDV_RX_BITS 0x4 // data bits have been returned #define FREEDV_RX_BIT_ERRORS \ 0x8 // FEC may not have corrected all bit errors (not all parity checks OK) // optional operator control of OFDM modem state machine #define FREEDV_SYNC_UNSYNC \ 0 // force sync state machine to lose sync, and search for new sync #define FREEDV_SYNC_AUTO 1 // falls out of sync automatically #define FREEDV_SYNC_MANUAL 2 // fall out of sync only under operator control #define FREEDV_VARICODE_MAX_BITS 12 // max bits for each ASCII character // These macros allow us to disable unwanted modes at compile tine, for example // to save memory on embedded systems or the remove need to link other // libraries. By default we enable all modes. Disable during compile time e.g // -DFREEDV_MODE_1600_EN=0 will enable all but FreeDV 1600. Or the other way // round -DFREEDV_MODE_EN_DEFAULT=0 -DFREEDV_MODE_1600_EN=1 will enable only // FreeDV 1600 #ifndef FREEDV_MODE_EN_DEFAULT #define FREEDV_MODE_EN_DEFAULT 1 #endif #if !defined(FREEDV_MODE_1600_EN) #define FREEDV_MODE_1600_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_700C_EN) #define FREEDV_MODE_700C_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_700D_EN) #define FREEDV_MODE_700D_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_700E_EN) #define FREEDV_MODE_700E_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_2400A_EN) #define FREEDV_MODE_2400A_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_2400B_EN) #define FREEDV_MODE_2400B_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_800XA_EN) #define FREEDV_MODE_800XA_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_2020_EN) #define FREEDV_MODE_2020_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_2020B_EN) #define FREEDV_MODE_2020B_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_FSK_LDPC_EN) #define FREEDV_MODE_FSK_LDPC_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_DATAC0_EN) #define FREEDV_MODE_DATAC0_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_DATAC1_EN) #define FREEDV_MODE_DATAC1_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_DATAC3_EN) #define FREEDV_MODE_DATAC3_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_DATAC4_EN) #define FREEDV_MODE_DATAC4_EN FREEDV_MODE_EN_DEFAULT #endif #if !defined(FREEDV_MODE_DATAC13_EN) #define FREEDV_MODE_DATAC13_EN FREEDV_MODE_EN_DEFAULT #endif #define FDV_MODE_ACTIVE(mode_name, var) \ ((mode_name##_EN) == 0 ? 0 : (var) == mode_name) // struct that hold state information for one freedv instance struct freedv; // Some modes allow extra configuration parameters struct freedv_advanced { int interleave_frames; // now unused but remains to prevent breaking API for // legacy apps // parameters for FREEDV_MODE_FSK_LDPC int M; // 2 or 4 FSK int Rs; // Symbol rate Hz int Fs; // Sample rate Hz int first_tone; // Freq of first tone Hz int tone_spacing; // Spacing between tones Hz char *codename; // LDPC codename, from codes listed in ldpc_codes.c }; // Called when text message char is decoded typedef void (*freedv_callback_rx)(void *, char); // Called when new text message char is needed typedef char (*freedv_callback_tx)(void *); typedef void (*freedv_calback_error_pattern)(void *error_pattern_callback_state, short error_pattern[], int sz_error_pattern); // Protocol bits are packed MSB-first // Called when a frame containing protocol data is decoded typedef void (*freedv_callback_protorx)(void *, char *); // Called when a frame containing protocol data is to be sent typedef void (*freedv_callback_prototx)(void *, char *); // Data packet callbacks // Called when a packet has been received typedef void (*freedv_callback_datarx)(void *, unsigned char *packet, size_t size); // Called when a new packet can be send typedef void (*freedv_callback_datatx)(void *, unsigned char *packet, size_t *size); /*---------------------------------------------------------------------------*\ FreeDV API functions \*---------------------------------------------------------------------------*/ // open, close ---------------------------------------------------------------- struct freedv *freedv_open_advanced(int mode, struct freedv_advanced *adv); struct freedv *freedv_open(int mode); void freedv_close(struct freedv *freedv); // Transmit ------------------------------------------------------------------- void freedv_tx(struct freedv *freedv, short mod_out[], short speech_in[]); void freedv_comptx(struct freedv *freedv, COMP mod_out[], short speech_in[]); void freedv_datatx(struct freedv *f, short mod_out[]); int freedv_data_ntxframes(struct freedv *freedv); void freedv_rawdatatx(struct freedv *f, short mod_out[], unsigned char *packed_payload_bits); void freedv_rawdatacomptx(struct freedv *f, COMP mod_out[], unsigned char *packed_payload_bits); int freedv_rawdatapreambletx(struct freedv *f, short mod_out[]); int freedv_rawdatapreamblecomptx(struct freedv *f, COMP mod_out[]); int freedv_rawdatapostambletx(struct freedv *f, short mod_out[]); int freedv_rawdatapostamblecomptx(struct freedv *f, COMP mod_out[]); // Receive ------------------------------------------------------------------- int freedv_nin(struct freedv *freedv); int freedv_rx(struct freedv *freedv, short speech_out[], short demod_in[]); int freedv_shortrx(struct freedv *freedv, short speech_out[], short demod_in[], float gain); int freedv_floatrx(struct freedv *freedv, short speech_out[], float demod_in[]); int freedv_comprx(struct freedv *freedv, short speech_out[], COMP demod_in[]); int freedv_rawdatarx(struct freedv *freedv, unsigned char *packed_payload_bits, short demod_in[]); int freedv_rawdatacomprx(struct freedv *freedv, unsigned char *packed_payload_bits, COMP demod_in[]); // Helper functions // ------------------------------------------------------------------- int freedv_codec_frames_from_rawdata(struct freedv *freedv, unsigned char *codec_frames, unsigned char *rawdata); int freedv_rawdata_from_codec_frames(struct freedv *freedv, unsigned char *rawdata, unsigned char *codec_frames); unsigned short freedv_gen_crc16(unsigned char *bytes, int nbytes); void freedv_pack(unsigned char *bytes, unsigned char *bits, int nbits); void freedv_unpack(unsigned char *bits, unsigned char *bytes, int nbits); unsigned short freedv_crc16_unpacked(unsigned char *bits, int nbits); int freedv_check_crc16_unpacked(unsigned char *unpacked_bits, int nbits); // Set parameters ------------------------------------------------------------ void freedv_set_callback_txt(struct freedv *freedv, freedv_callback_rx rx, freedv_callback_tx tx, void *callback_state); void freedv_set_callback_protocol(struct freedv *freedv, freedv_callback_protorx rx, freedv_callback_prototx tx, void *callback_state); void freedv_set_callback_data(struct freedv *freedv, freedv_callback_datarx datarx, freedv_callback_datatx datatx, void *callback_state); void freedv_set_test_frames(struct freedv *freedv, int test_frames); void freedv_set_test_frames_diversity(struct freedv *freedv, int test_frames_diversity); void freedv_set_smooth_symbols(struct freedv *freedv, int smooth_symbols); void freedv_set_squelch_en(struct freedv *freedv, bool squelch_en); void freedv_set_snr_squelch_thresh(struct freedv *freedv, float snr_squelch_thresh); void freedv_set_clip(struct freedv *freedv, bool val); void freedv_set_total_bit_errors(struct freedv *freedv, int val); void freedv_set_total_bits(struct freedv *freedv, int val); void freedv_set_total_bit_errors_coded(struct freedv *freedv, int val); void freedv_set_total_bits_coded(struct freedv *freedv, int val); void freedv_set_total_packets(struct freedv *freedv, int val); void freedv_set_total_packet_errors(struct freedv *freedv, int val); void freedv_set_callback_error_pattern(struct freedv *freedv, freedv_calback_error_pattern cb, void *state); void freedv_set_varicode_code_num(struct freedv *freedv, int val); void freedv_set_data_header(struct freedv *freedv, unsigned char *header); void freedv_set_carrier_ampl(struct freedv *freedv, int c, float ampl); void freedv_set_sync(struct freedv *freedv, int sync_cmd); void freedv_set_verbose(struct freedv *freedv, int verbosity); void freedv_set_tx_bpf(struct freedv *freedv, int val); void freedv_set_tx_amp(struct freedv *freedv, float amp); void freedv_set_ext_vco(struct freedv *f, int val); void freedv_set_phase_est_bandwidth_mode(struct freedv *f, int val); void freedv_set_eq(struct freedv *f, bool val); void freedv_set_frames_per_burst(struct freedv *f, int framesperburst); void freedv_passthrough_gain(struct freedv *f, float g); int freedv_set_tuning_range(struct freedv *freedv, float val_fmin, float val_fmax); // Get parameters // ------------------------------------------------------------------------- struct MODEM_STATS; int freedv_get_version(void); char *freedv_get_hash(void); int freedv_get_mode(struct freedv *freedv); void freedv_get_modem_stats(struct freedv *freedv, int *sync, float *snr_est); void freedv_get_modem_extended_stats(struct freedv *freedv, struct MODEM_STATS *stats); int freedv_get_test_frames(struct freedv *freedv); int freedv_get_speech_sample_rate(struct freedv *freedv); int freedv_get_n_speech_samples(struct freedv *freedv); int freedv_get_n_max_speech_samples(struct freedv *freedv); int freedv_get_modem_sample_rate(struct freedv *freedv); int freedv_get_modem_symbol_rate(struct freedv *freedv); int freedv_get_n_max_modem_samples(struct freedv *freedv); int freedv_get_n_nom_modem_samples(struct freedv *freedv); int freedv_get_n_tx_modem_samples(struct freedv *freedv); int freedv_get_n_tx_preamble_modem_samples(struct freedv *freedv); int freedv_get_n_tx_postamble_modem_samples(struct freedv *freedv); // bit error rate stats int freedv_get_total_bits(struct freedv *freedv); int freedv_get_total_bit_errors(struct freedv *freedv); int freedv_get_total_bits_coded(struct freedv *freedv); int freedv_get_total_bit_errors_coded(struct freedv *freedv); int freedv_get_total_packets(struct freedv *freedv); int freedv_get_total_packet_errors(struct freedv *freedv); int freedv_get_rx_status(struct freedv *freedv); void freedv_get_fsk_S_and_N(struct freedv *freedv, float *S, float *N); int freedv_get_sync(struct freedv *freedv); int freedv_get_sync_interleaver(struct freedv *freedv); // access to speech codec states struct FSK *freedv_get_fsk(struct freedv *f); struct CODEC2 *freedv_get_codec2(struct freedv *freedv); int freedv_get_bits_per_codec_frame(struct freedv *freedv); int freedv_get_bits_per_modem_frame(struct freedv *freedv); int freedv_get_sz_error_pattern(struct freedv *freedv); int freedv_get_protocol_bits(struct freedv *freedv); #ifdef __cplusplus } #endif #endif //__FREEDV_API__ codec2-1.2.0/src/freedv_api_internal.h000066400000000000000000000232201445607075400176240ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_api_internal.h AUTHOR......: David Rowe DATE CREATED: August 2014 This declares the structure freedv. A pointer to this structure is returned by the FreeDV API freedv_open() function. The pointer is used by the other FreeDV API functions declared in freedv_api.h. This structure is intended to be internal to the FreeDV API. The public functions are declared in freedv_api.h. Changes to this structure are expected. Changes (except additions) to freedv_api.h are discouraged. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __FREEDV_API_INTERNAL__ #define __FREEDV_API_INTERNAL__ #include "codec2_cohpsk.h" #include "codec2_fdmdv.h" #include "fmfsk.h" #include "fsk.h" #include "varicode.h" #ifdef __LPCNET__ #include "lpcnet_freedv.h" #endif #include "freedv_api.h" #ifdef __cplusplus extern "C" { #endif // Fudge factors to normalise Tx power across modes #define NORM_PWR_FSK 0.5 // identifiers for non Codec 2 Speech codecs, make sure no overlap with // CODEC2_XXX modes #define CODEC_MODE_LPCNET_1733 100 extern char *rx_sync_flags_to_text[]; // converts flags above to more meaningful text struct freedv { int mode; // states for various modules we support struct CODEC2 *codec2; struct FDMDV *fdmdv; struct COHPSK *cohpsk; struct FSK *fsk; struct FMFSK *fmfsk; struct OFDM *ofdm; struct LDPC *ldpc; struct MODEM_STATS stats; // working memory for when we call xxx_stats // function for each demod #ifdef __LPCNET__ struct LPCNetFreeDV *lpcnet; #endif struct freedv_vhf_deframer *deframer; // Extracts frames from VHF stream struct quisk_cfFilter *ptFilter7500to8000; // Filters to change to/from 7500 // and 8000 sps for 700 .... 700C struct quisk_cfFilter *ptFilter8000to7500; int n_speech_samples; // number of speech samples we need for each // freedv_tx() call num of speech samples output by // freedv_rx() call int n_nom_modem_samples; // size of tx modem sample buffers int n_max_modem_samples; // make your rx modem sample buffers this big int n_nat_modem_samples; // tx modem sample block length as used by the modem // before interpolation to output usually the same // as n_nom_modem_samples, except for 700C int modem_sample_rate; // Caller is responsible for meeting this int modem_symbol_rate; // Useful for ext_vco operation on 2400A and 800XA int speech_sample_rate; // 8 kHz or 16 kHz (high fidelity) int bits_per_codec_frame; int bits_per_modem_frame; // number of modem payload bits in each modem frame // (usually compressed speech) int n_codec_frames; // number of codec frames in each modem frame uint8_t *tx_payload_bits; // payload bits (usually compressed speech) for a // modem frame ... uint8_t *rx_payload_bits; // ... one bit per char for some modes, packed for // others /* FDMDV buffers for FreeDV 1600 * -------------------------------------------------------------*/ int *fdmdv_bits; int *fdmdv_tx_bits; int *fdmdv_rx_bits; /* test frame states * -------------------------------------------------------------------------*/ int *ptest_bits_coh; int *ptest_bits_coh_end; int test_frames; // set this baby for 1 to tx/rx test frames to look at bit // error stats int test_frames_diversity; // 1 -> used combined carriers for error counting // on 700 waveforms int test_frame_sync_state; int test_frame_sync_state_upper; // when test_frames_diveristy==0 we need // extra states for upper carriers int test_frame_count; int total_bits; int total_bit_errors; int total_bits_coded; int total_bit_errors_coded; int total_packets; int total_packet_errors; int sz_error_pattern; /* optional user defined function to pass error pattern when a test frame is * received */ void *error_pattern_callback_state; void (*freedv_put_error_pattern)(void *error_pattern_callback_state, short error_pattern[], int sz_error_pattern); /* Misc * ---------------------------------------------------------------------------------------------*/ int *tx_bits; /* FSK modem frame under construction */ int tx_sync_bit; int frames; bool clip_en; /* non-zero for modem Tx clipping to lower PAPR */ int sync; /* we set this when a mode is in sync */ int evenframe; float snr_est; /* we set this each time the modes's demod estimates SNR */ float snr_squelch_thresh; bool squelch_en; int nin, nin_prev; int verbose; int ext_vco; /* 2400A/800XA use external VCO flag */ float *passthrough_2020; /* 2020 interpolating filter */ float tx_amp; /* amplitude of tx samples */ float passthrough_gain; /* useful constants for OFDM modes * ------------------------------------------------------------------*/ int ofdm_bitsperpacket; int ofdm_bitsperframe; int ofdm_nuwbits; int ofdm_ntxtbits; int rx_status; /* Varicode txt channel states * ----------------------------------------------------------------------*/ struct VARICODE_DEC varicode_dec_states; short tx_varicode_bits[VARICODE_MAX_BITS]; int nvaricode_bits; int varicode_bit_index; /* interleaved LDPC OFDM states * ---------------------------------------------------------------------*/ COMP *codeword_symbols; float *codeword_amps; COMP *rx_syms; float *rx_amps; COMP *mod_out; // output buffer of interleaved frames /* user defined function ptrs to produce and consume ASCII characters using aux txt channel */ char (*freedv_get_next_tx_char)(void *callback_state); void (*freedv_put_next_rx_char)(void *callback_state, char c); void (*freedv_put_next_rx_symbol)(void *callback_state, _Complex float sym, float amp); void *callback_state; void *callback_state_sym; /* user defined functions to produce and consume protocol bits */ /* Protocol bits are packed MSB-first */ void (*freedv_put_next_proto)(void *callback_state, char *proto_bits_packed); void (*freedv_get_next_proto)(void *callback_state, char *proto_bits_packed); void *proto_callback_state; int n_protocol_bits; /* states needed for FSK LDPC */ float *frame_llr; int frame_llr_size, frame_llr_nbits; float *twoframes_llr; uint8_t *twoframes_hard; int fsk_ldpc_thresh1, fsk_ldpc_thresh2, fsk_ldpc_baduw_thresh; int fsk_ldpc_state, fsk_ldpc_best_location, fsk_ldpc_baduw; float fsk_ldpc_snr; float fsk_S[2], fsk_N[2]; }; // open function for each mode void freedv_1600_open(struct freedv *f); void freedv_700c_open(struct freedv *f); void freedv_ofdm_voice_open(struct freedv *f, char *mode); void freedv_2020x_open(struct freedv *f); void freedv_2400a_open(struct freedv *f); void freedv_2400b_open(struct freedv *f); void freedv_800xa_open(struct freedv *f); void freedv_fsk_ldpc_open(struct freedv *f, struct freedv_advanced *adv); void freedv_ofdm_data_open(struct freedv *f); // each mode has tx and rx functions in various flavours for real and complex // valued samples void freedv_comptx_fdmdv_1600(struct freedv *f, COMP mod_out[]); int freedv_comprx_fdmdv_1600(struct freedv *f, COMP demod_in[]); void freedv_comptx_700c(struct freedv *f, COMP mod_out[]); int freedv_comprx_700c(struct freedv *f, COMP demod_in_8kHz[]); void freedv_comptx_ofdm(struct freedv *f, COMP mod_out[]); int freedv_comp_short_rx_ofdm(struct freedv *f, void *demod_in_8kHz, int demod_in_is_short, float gain); void freedv_comptx_2020(struct freedv *f, COMP mod_out[]); int freedv_comprx_2020(struct freedv *f, COMP demod_in[]); void freedv_comptx_fsk_voice(struct freedv *f, COMP mod_out[]); void freedv_tx_fsk_voice(struct freedv *f, short mod_out[]); void freedv_tx_fsk_data(struct freedv *f, short mod_out[]); int freedv_comprx_fsk(struct freedv *f, COMP demod_in[]); int freedv_floatrx(struct freedv *f, short speech_out[], float demod_in[]); void freedv_tx_fsk_ldpc_data(struct freedv *f, COMP mod_out[]); void freedv_tx_fsk_ldpc_data_preamble(struct freedv *f, COMP mod_out[], int npreamble_bits, int npreamble_samples); int freedv_rx_fsk_ldpc_data(struct freedv *f, COMP demod_in[]); int freedv_bits_to_speech(struct freedv *f, short speech_out[], short demod_in[], int rx_status); // for the reliable text protocol we need to pass symbols back rather than text typedef void (*freedv_callback_rx_sym)(void *, _Complex float, float); void freedv_set_callback_txt_sym(struct freedv *freedv, freedv_callback_rx_sym rx, void *callback_state); #ifdef __cplusplus } #endif #endif codec2-1.2.0/src/freedv_data_channel.c000066400000000000000000000241271445607075400175620ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_data_channel.c AUTHOR......: Jeroen Vreeken DATE CREATED: 03 March 2016 Data channel for ethernet like packets in freedv VHF frames. Currently designed for- * 2 control bits per frame * 4 byte counter bits per frame * 64 bits of data per frame \*---------------------------------------------------------------------------*/ /* Copyright (C) 2016 Jeroen Vreeken All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "freedv_data_channel.h" #include #include static unsigned char fdc_header_bcast[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; /* CCIT CRC table (0x1201 polynomail) */ static unsigned short fdc_crc_table[256] = { 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c, 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134, 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78}; static unsigned short fdc_crc(unsigned char *buffer, size_t len) { unsigned short crc = 0xffff; size_t i; for (i = 0; i < len; i++, buffer++) { crc = (crc >> 8) ^ fdc_crc_table[(crc ^ *buffer) & 0xff]; } return crc ^ 0xffff; } /* CRC4 0x03 polynomial */ static unsigned char fdc_crc4(unsigned char *buffer, size_t len) { unsigned char crc = 0x0f; size_t i; for (i = 0; i < len; i++, buffer++) { int shift; for (shift = 7; shift <= 0; shift--) { crc <<= 1; if ((*buffer >> shift) & 0x1) crc |= 1; if (crc & 0x10) crc ^= 0x03; } } return crc & 0x0f; } struct freedv_data_channel *freedv_data_channel_create(void) { struct freedv_data_channel *fdc; fdc = (struct freedv_data_channel *)calloc( 1, sizeof(struct freedv_data_channel)); if (fdc == NULL) return NULL; freedv_data_set_header(fdc, fdc_header_bcast); memcpy(fdc->rx_header, fdc->tx_header, 8); return fdc; } void freedv_data_channel_destroy(struct freedv_data_channel *fdc) { free(fdc); } void freedv_data_set_cb_rx(struct freedv_data_channel *fdc, freedv_data_callback_rx cb, void *state) { fdc->cb_rx = cb; fdc->cb_rx_state = state; } void freedv_data_set_cb_tx(struct freedv_data_channel *fdc, freedv_data_callback_tx cb, void *state) { fdc->cb_tx = cb; fdc->cb_tx_state = state; } void freedv_data_channel_rx_frame(struct freedv_data_channel *fdc, unsigned char *data, size_t size, int from_bit, int bcast_bit, int crc_bit, int end_bits) { int copy_bits; if (end_bits) { copy_bits = end_bits; } else { copy_bits = size; } /* New packet? */ if (fdc->packet_rx_cnt == 0) { /* Does the packet have a compressed from field? */ if (from_bit) { /* Compressed from: take the previously received header */ memcpy(fdc->packet_rx + fdc->packet_rx_cnt, fdc->rx_header, 6); fdc->packet_rx_cnt += 6; } if (bcast_bit) { if (!from_bit) { /* Copy from header and modify size and end_bits accordingly */ memcpy(fdc->packet_rx + fdc->packet_rx_cnt, data, 6); fdc->packet_rx_cnt += 6; copy_bits -= 6; if (copy_bits < 0) copy_bits = 0; data += 6; } /* Compressed to: fill in broadcast address */ memcpy(fdc->packet_rx + fdc->packet_rx_cnt, fdc_header_bcast, sizeof(fdc_header_bcast)); fdc->packet_rx_cnt += 6; } if (crc_bit) { unsigned char calc_crc = fdc_crc4(data, size); if (calc_crc == end_bits) { /* It is a single header field, remember it for later */ memcpy(fdc->rx_header, data, 6); memcpy(fdc->packet_rx + 6, data, 6); memcpy(fdc->packet_rx, fdc_header_bcast, 6); if (fdc->cb_rx) { fdc->cb_rx(fdc->cb_rx_state, fdc->packet_rx, 12); } } fdc->packet_rx_cnt = 0; return; } } if (fdc->packet_rx_cnt + copy_bits >= FREEDV_DATA_CHANNEL_PACKET_MAX) { /* Something went wrong... this can not be a real packet */ fdc->packet_rx_cnt = 0; return; } memcpy(fdc->packet_rx + fdc->packet_rx_cnt, data, copy_bits); fdc->packet_rx_cnt += copy_bits; if (end_bits != 0 && fdc->packet_rx_cnt >= 2) { unsigned short calc_crc = fdc_crc(fdc->packet_rx, fdc->packet_rx_cnt - 2); unsigned short rx_crc; rx_crc = fdc->packet_rx[fdc->packet_rx_cnt - 1] << 8; rx_crc |= fdc->packet_rx[fdc->packet_rx_cnt - 2]; if (rx_crc == calc_crc) { if (fdc->packet_rx_cnt == size) { /* It is a single header field, remember it for later */ memcpy(fdc->rx_header, fdc->packet_rx, 6); } /* callback */ if (fdc->cb_rx) { unsigned char tmp[6]; memcpy(tmp, fdc->packet_rx, 6); memcpy(fdc->packet_rx, fdc->packet_rx + 6, 6); memcpy(fdc->packet_rx + 6, tmp, 6); size_t size = fdc->packet_rx_cnt - 2; if (size < 12) { size = 12; memcpy(fdc->packet_rx, fdc_header_bcast, 6); } fdc->cb_rx(fdc->cb_rx_state, fdc->packet_rx, size); } } fdc->packet_rx_cnt = 0; } } void freedv_data_channel_tx_frame(struct freedv_data_channel *fdc, unsigned char *data, size_t size, int *from_bit, int *bcast_bit, int *crc_bit, int *end_bits) { *from_bit = 0; *bcast_bit = 0; *crc_bit = 0; if (!fdc->packet_tx_size) { fdc->packet_tx_cnt = 0; if (fdc->cb_tx) { fdc->packet_tx_size = FREEDV_DATA_CHANNEL_PACKET_MAX; fdc->cb_tx(fdc->cb_tx_state, fdc->packet_tx, &fdc->packet_tx_size); } if (!fdc->packet_tx_size) { /* Nothing to send, insert a header frame */ memcpy(fdc->packet_tx, fdc->tx_header, size); if (size < 8) { *end_bits = fdc_crc4(fdc->tx_header, size); *crc_bit = 1; memcpy(data, fdc->tx_header, size); return; } else { fdc->packet_tx_size = size; } } else { /* new packet */ unsigned short crc; unsigned char tmp[6]; *from_bit = !memcmp(fdc->packet_tx + 6, fdc->tx_header, 6); *bcast_bit = !memcmp(fdc->packet_tx, fdc_header_bcast, 6); memcpy(tmp, fdc->packet_tx, 6); memcpy(fdc->packet_tx, fdc->packet_tx + 6, 6); memcpy(fdc->packet_tx + 6, tmp, 6); crc = fdc_crc(fdc->packet_tx, fdc->packet_tx_size); fdc->packet_tx[fdc->packet_tx_size] = crc & 0xff; fdc->packet_tx_size++; fdc->packet_tx[fdc->packet_tx_size] = (crc >> 8) & 0xff; fdc->packet_tx_size++; if (*from_bit) { fdc->packet_tx_cnt = 6; } else { if (*bcast_bit) { memcpy(fdc->packet_tx + 6, fdc->packet_tx, 6); } } if (*bcast_bit) { fdc->packet_tx_cnt += 6; } } } if (fdc->packet_tx_size) { int copy = fdc->packet_tx_size - fdc->packet_tx_cnt; if (copy > size) { copy = size; *end_bits = 0; } else { *end_bits = copy; fdc->packet_tx_size = 0; } memcpy(data, fdc->packet_tx + fdc->packet_tx_cnt, copy); fdc->packet_tx_cnt += copy; } } void freedv_data_set_header(struct freedv_data_channel *fdc, unsigned char *header) { unsigned short crc = fdc_crc(header, 6); memcpy(fdc->tx_header, header, 6); fdc->tx_header[6] = crc & 0xff; fdc->tx_header[7] = (crc >> 8) & 0xff; } int freedv_data_get_n_tx_frames(struct freedv_data_channel *fdc, size_t size) { if (fdc->packet_tx_size == 0) return 0; /* packet will be send in 'size' byte frames */ return (fdc->packet_tx_size - fdc->packet_tx_cnt + size - 1) / size; } codec2-1.2.0/src/freedv_data_channel.h000066400000000000000000000057101445607075400175640ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_data_channel.h AUTHOR......: Jeroen Vreeken DATE CREATED: 03 March 2016 Data channel for ethernet like packets in freedv VHF frames. Currently designed for- * 2 control bits per frame * 4 byte counter bits per frame * 64 bits of data per frame \*---------------------------------------------------------------------------*/ /* Copyright (C) 2016 Jeroen Vreeken All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef _FREEDV_DATA_CHANNEL_H #define _FREEDV_DATA_CHANNEL_H #include #define FREEDV_DATA_CHANNEL_PACKET_MAX 2048 typedef void (*freedv_data_callback_rx)(void *, unsigned char *packet, size_t size); typedef void (*freedv_data_callback_tx)(void *, unsigned char *packet, size_t *size); struct freedv_data_channel { freedv_data_callback_rx cb_rx; void *cb_rx_state; freedv_data_callback_tx cb_tx; void *cb_tx_state; unsigned char rx_header[8]; unsigned char packet_rx[FREEDV_DATA_CHANNEL_PACKET_MAX + 2]; int packet_rx_cnt; unsigned char tx_header[8]; unsigned char packet_tx[FREEDV_DATA_CHANNEL_PACKET_MAX + 2]; int packet_tx_cnt; size_t packet_tx_size; }; struct freedv_data_channel *freedv_data_channel_create(void); void freedv_data_channel_destroy(struct freedv_data_channel *fdc); void freedv_data_set_cb_rx(struct freedv_data_channel *fdc, freedv_data_callback_rx cb, void *state); void freedv_data_set_cb_tx(struct freedv_data_channel *fdc, freedv_data_callback_tx cb, void *state); void freedv_data_channel_rx_frame(struct freedv_data_channel *fdc, unsigned char *data, size_t size, int from_bit, int bcast_bit, int crc_bit, int end_bits); void freedv_data_channel_tx_frame(struct freedv_data_channel *fdc, unsigned char *data, size_t size, int *from_bit, int *bcast_bit, int *crc_bit, int *end_bits); void freedv_data_set_header(struct freedv_data_channel *fdc, unsigned char *header); int freedv_data_get_n_tx_frames(struct freedv_data_channel *fdc, size_t size); #endif /* _FREEDV_DATA_CHANNEL_H */ codec2-1.2.0/src/freedv_data_raw_rx.c000066400000000000000000000260331445607075400174520ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_data_raw_rx.c AUTHOR......: David Rowe DATE CREATED: May 2020 Demonstrates receiving frames of raw data bytes (instead of compressed speech) using the FreeDV API. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2020 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include #include "freedv_api.h" #include "fsk.h" #include "ldpc_codes.h" #include "modem_stats.h" #include "octave.h" /* other processes can end this program using signals */ static volatile int finish = 0; void INThandler(int sig) { fprintf(stderr, "signal received: %d\n", sig); finish = 1; } int main(int argc, char *argv[]) { FILE *fin, *fout; char codename[80] = "H_256_512_4"; struct freedv_advanced adv = {0, 2, 100, 8000, 1000, 200, codename}; struct freedv *freedv; int nin, nbytes, nbytes_out = 0, nframes_out = 0, buf = 0; int mode; int verbose = 0, use_testframes = 0; int mask = 0; int framesperburst = 1; FILE *foct = NULL; int quiet = 0; int single_line_summary = 0; float snr_sum = 0.0; int fsk_lower = 0, fsk_upper = 0; int user_fsk_lower = 0, user_fsk_upper = 0; int o = 0; int opt_idx = 0; while (o != -1) { static struct option long_opts[] = { {"testframes", no_argument, 0, 't'}, {"help", no_argument, 0, 'h'}, {"Fs", required_argument, 0, 'f'}, {"Rs", required_argument, 0, 'r'}, {"shift", required_argument, 0, 's'}, {"vv", no_argument, 0, 'x'}, {"vvv", no_argument, 0, 'y'}, {"mask", required_argument, 0, 'k'}, {"framesperburst", required_argument, 0, 'g'}, {"scatter", required_argument, 0, 'c'}, {"quiet", required_argument, 0, 'q'}, {"singleline", no_argument, 0, 'b'}, {"fsk_lower", required_argument, 0, 'l'}, {"fsk_upper", required_argument, 0, 'u'}, {"code", required_argument, 0, 'o'}, {"listcodes", no_argument, 0, 'i'}, {0, 0, 0, 0}}; o = getopt_long(argc, argv, "bf:hm:qr:tvx", long_opts, &opt_idx); switch (o) { case 'b': single_line_summary = 1; break; case 'c': foct = fopen(optarg, "wt"); assert(foct != NULL); break; case 'f': adv.Fs = atoi(optarg); break; case 'k': mask = 1; adv.tone_spacing = atoi(optarg); break; case 'm': adv.M = atoi(optarg); break; case 'l': fsk_lower = atoi(optarg); user_fsk_lower = 1; break; case 'u': fsk_upper = atoi(optarg); user_fsk_upper = 1; break; case 'q': quiet = 1; break; case 'r': adv.Rs = atoi(optarg); break; case 's': adv.tone_spacing = atoi(optarg); break; case 'g': framesperburst = atoi(optarg); break; case 't': use_testframes = 1; break; case 'v': verbose = 1; break; case 'x': verbose = 2; break; case 'y': verbose = 3; break; case 'o': if (ldpc_codes_find(optarg) == -1) { fprintf(stderr, "%s not found, try --listcodes\n", optarg); exit(1); } strcpy(codename, optarg); break; case 'i': ldpc_codes_list(); exit(0); break; case 'h': case '?': goto helpmsg; break; } } int dx = optind; if (argc < 3) { helpmsg: fprintf( stderr, "\nusage: %s [options] FSK_LDPC|DATAC0|... InputModemSpeechFile " "BinaryDataFile\n" " -v or --vv verbose options\n" " --testframes count raw and coded errors in testframes " "sent by tx\n" " --framesperburst N N frames per burst (default 1, must match " "Tx)\n" " --scatter file write scatter diagram symbols to file " "(Octave text file format)\n" " --singleline single line summary at end of test, used " "for logging\n" " --quiet\n" "\n" "For FSK_LDPC only:\n\n" " -m 2|4 number of FSK tones\n" " --Fs FreqHz sample rate (default 8000)\n" " --Rs FreqHz symbol rate (default 100)\n" " --mask shiftHz Use \"mask\" freq estimator (default is " "\"peak\" estimator)\n\n" " --shift FreqHz shift between tones (default 200)\n" " --fsk_lower freq lower limit of freq estimator (default 0)\n" " --fsk_upper freq upper limit of freq estimator (default Fs/2)\n" " --code CodeName LDPC code (defaults (512,256)\n" " --listcodes list available LDPC codes\n" "\n", argv[0]); fprintf(stderr, "example: %s --framesperburst 1 --testframes datac0 samples.s16 " "/dev/null\n\n", argv[0]); exit(1); } if ((argc - dx) < 3) { fprintf(stderr, "too few arguments.\n"); goto helpmsg; } mode = -1; if (!strcmp(argv[dx], "FSK_LDPC") || !strcmp(argv[dx], "fsk_ldpc")) mode = FREEDV_MODE_FSK_LDPC; if (!strcmp(argv[dx], "DATAC0") || !strcmp(argv[dx], "datac0")) mode = FREEDV_MODE_DATAC0; if (!strcmp(argv[dx], "DATAC1") || !strcmp(argv[dx], "datac1")) mode = FREEDV_MODE_DATAC1; if (!strcmp(argv[dx], "DATAC3") || !strcmp(argv[dx], "datac3")) mode = FREEDV_MODE_DATAC3; if (!strcmp(argv[dx], "DATAC4") || !strcmp(argv[dx], "datac4")) mode = FREEDV_MODE_DATAC4; if (!strcmp(argv[dx], "DATAC13") || !strcmp(argv[dx], "datac13")) mode = FREEDV_MODE_DATAC13; if (mode == -1) { fprintf(stderr, "Error in mode: %s\n", argv[dx]); exit(1); } if (strcmp(argv[dx + 1], "-") == 0) fin = stdin; else if ((fin = fopen(argv[dx + 1], "rb")) == NULL) { fprintf(stderr, "Error opening input raw modem sample file: %s: %s.\n", argv[2], strerror(errno)); exit(1); } if (strcmp(argv[dx + 2], "-") == 0) fout = stdout; else if ((fout = fopen(argv[dx + 2], "wb")) == NULL) { fprintf(stderr, "Error opening output speech sample file: %s: %s.\n", argv[3], strerror(errno)); exit(1); } if (mode == FREEDV_MODE_FSK_LDPC) { freedv = freedv_open_advanced(mode, &adv); struct FSK *fsk = freedv_get_fsk(freedv); fsk_set_freq_est_alg(fsk, mask); /* optionally set freq estimator limits */ if (!user_fsk_lower) fsk_lower = 0; if (!user_fsk_upper) fsk_upper = adv.Fs / 2; fprintf(stderr, "Setting estimator limits to %d to %d Hz.\n", fsk_lower, fsk_upper); fsk_set_freq_est_limits(fsk, fsk_lower, fsk_upper); } else { freedv = freedv_open(mode); } assert(freedv != NULL); freedv_set_verbose(freedv, verbose); freedv_set_test_frames(freedv, use_testframes); freedv_set_frames_per_burst(freedv, framesperburst); if (mode == FREEDV_MODE_FSK_LDPC) { struct FSK *fsk = freedv_get_fsk(freedv); if (!quiet) fprintf(stderr, "Nbits: %d N: %d Ndft: %d\n", fsk->Nbits, fsk->N, fsk->Ndft); } /* for streaming bytes it's much easier use the modes that have a multiple of * 8 payload bits/frame */ assert((freedv_get_bits_per_modem_frame(freedv) % 8) == 0); int bytes_per_modem_frame = freedv_get_bits_per_modem_frame(freedv) / 8; // last two bytes used for CRC if (!quiet) fprintf(stderr, "payload bytes_per_modem_frame: %d\n", bytes_per_modem_frame - 2); uint8_t bytes_out[bytes_per_modem_frame]; short demod_in[freedv_get_n_max_modem_samples(freedv)]; signal(SIGINT, INThandler); signal(SIGTERM, INThandler); /* We need to work out how many samples the demod needs on each call (nin). This is used to adjust for differences in the tx and rx sample clock frequencies */ nin = freedv_nin(freedv); while ((fread(demod_in, sizeof(short), nin, fin) == nin) && !finish) { buf++; nbytes = freedv_rawdatarx(freedv, bytes_out, demod_in); nin = freedv_nin(freedv); if (nbytes) { // dont output CRC fwrite(bytes_out, sizeof(uint8_t), nbytes - 2, fout); // log some stats nbytes_out += nbytes - 2; nframes_out++; struct MODEM_STATS stats; freedv_get_modem_extended_stats(freedv, &stats); snr_sum += stats.snr_est; if (foct) { char name[64]; sprintf(name, "rx_symbols_%d", nframes_out); octave_save_complex(foct, name, (COMP *)stats.rx_symbols, stats.nr, stats.Nc, MODEM_STATS_NC_MAX + 1); } } /* if using pipes we probably don't want the usual buffering */ if (fout == stdout) fflush(stdout); } fclose(fin); fclose(fout); fprintf(stderr, "modembufs: %6d bytes: %5d Frms.: %5d SNRAv: %5.2f\n", buf, nbytes_out, nframes_out, snr_sum / nframes_out); int ret = 0; /* in testframe mode finish up with some stats */ if (freedv_get_test_frames(freedv)) { int Tbits = freedv_get_total_bits(freedv); int Terrs = freedv_get_total_bit_errors(freedv); float uncoded_ber = (float)Terrs / Tbits; fprintf(stderr, "BER......: %5.4f Tbits: %5d Terrs: %5d\n", (double)uncoded_ber, Tbits, Terrs); int Tbits_coded = freedv_get_total_bits_coded(freedv); int Terrs_coded = freedv_get_total_bit_errors_coded(freedv); float coded_ber = (float)Terrs_coded / Tbits_coded; fprintf(stderr, "Coded BER: %5.4f Tbits: %5d Terrs: %5d\n", (double)coded_ber, Tbits_coded, Terrs_coded); int Tpackets = freedv_get_total_packets(freedv); int Tpacket_errors = freedv_get_total_packet_errors(freedv); fprintf(stderr, "Coded FER: %5.4f Tfrms: %5d Tfers: %5d\n", (float)Tpacket_errors / Tpackets, Tpackets, Tpacket_errors); if (single_line_summary) { struct MODEM_STATS stats; freedv_get_modem_extended_stats(freedv, &stats); fprintf(stderr, "FrmGd FrmDt Bytes SNRAv RawBER Pre Post UWfails\n"); fprintf(stderr, "%5d %5d %5d %5.2f %5.4f %5d %5d %5d\n", nframes_out, Tpackets, nbytes_out, snr_sum / nframes_out, uncoded_ber, stats.pre, stats.post, stats.uw_fails); } /* set return code for Ctest */ if ((uncoded_ber < 0.1f) && (coded_ber < 0.01f)) ret = 0; else ret = 1; } freedv_close(freedv); if (foct) fclose(foct); return ret; } codec2-1.2.0/src/freedv_data_raw_tx.c000066400000000000000000000417501445607075400174570ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_data_raw_tx.c AUTHOR......: David Rowe DATE CREATED: May 2020 Demonstrates transmitting frames of raw data bytes (instead of compressed speech) using the FreeDV API. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2020 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include #include "freedv_api.h" #include "fsk.h" #include "ldpc_codes.h" #include "ofdm_internal.h" size_t send_preamble(struct freedv *freedv, FILE *fout, int use_complex, size_t n_mod_out); size_t send_modulated_data(struct freedv *freedv, FILE *fout, int use_complex, size_t n_mod_out, uint8_t bytes_in[]); size_t send_postamble(struct freedv *freedv, FILE *fout, int use_complex, size_t n_mod_out); size_t send_silence(FILE *fout, size_t shorts_per_sample, size_t samples_delay); void comp_to_short(short mod_out_short[], COMP mod_out_comp[], int n_mod_out); int main(int argc, char *argv[]) { FILE *fin, *fout; char codename[80] = "H_256_512_4"; struct freedv_advanced adv = {0, 2, 100, 8000, 1000, 200, codename}; struct freedv *freedv; int mode; int use_clip, use_txbpf, testframes, Ntestframes = 0; int use_complex = 0; float amp = FSK_SCALE; size_t shorts_per_sample = 1; int Nbursts = 1, sequence_numbers = 0; int inter_burst_delay_ms = 0; int postdelay_ms = 0; uint8_t source_byte = 0; use_clip = -1; use_txbpf = -1; testframes = 0; int framesperburst = 1; int quiet = 0; int o = 0; int opt_idx = 0; while (o != -1) { static struct option long_opts[] = { {"testframes", required_argument, 0, 't'}, {"help", no_argument, 0, 'h'}, {"txbpf", required_argument, 0, 'b'}, {"clip", required_argument, 0, 'l'}, {"Fs", required_argument, 0, 'f'}, {"Rs", required_argument, 0, 'r'}, {"tone1", required_argument, 0, '1'}, {"shift", required_argument, 0, 's'}, {"bursts", required_argument, 0, 'e'}, {"framesperburst", required_argument, 0, 'g'}, {"delay", required_argument, 0, 'j'}, {"postdelay", required_argument, 0, 'k'}, {"seq", no_argument, 0, 'd'}, {"source", required_argument, 0, 'i'}, {"amp", required_argument, 0, 'a'}, {"quiet", no_argument, 0, 'q'}, {"complexout", no_argument, 0, 'c'}, {"code", required_argument, 0, 'o'}, {"listcodes", no_argument, 0, 'x'}, {0, 0, 0, 0}}; o = getopt_long(argc, argv, "a:cdt:hb:l:e:f:g:r:1:s:m:qi:o:x", long_opts, &opt_idx); switch (o) { case 'a': amp = atof(optarg) / 2.0; break; case 'b': use_txbpf = atoi(optarg); break; case 'c': use_complex = 1; shorts_per_sample = 2; break; case 'd': sequence_numbers = 1; break; case 'i': source_byte = strtol(optarg, NULL, 0); fprintf(stderr, "source byte: 0x%02x\n", source_byte); break; case 'e': Nbursts = atoi(optarg); break; case 'g': framesperburst = atoi(optarg); break; case 'j': inter_burst_delay_ms = atoi(optarg); break; case 'k': postdelay_ms = atoi(optarg); break; case 't': testframes = 1; Ntestframes = atoi(optarg); break; case 'l': use_clip = atoi(optarg); break; case 'm': adv.M = atoi(optarg); break; case 'q': quiet = 1; break; case 'f': adv.Fs = atoi(optarg); break; case 'r': adv.Rs = atoi(optarg); break; case '1': adv.first_tone = atoi(optarg); break; case 's': adv.tone_spacing = atoi(optarg); break; case 'o': if (ldpc_codes_find(optarg) == -1) { fprintf(stderr, "%s not found, try --listcodes\n", optarg); exit(1); } strcpy(codename, optarg); break; case 'x': ldpc_codes_list(); exit(0); break; case 'h': case '?': goto helpmsg; break; } } int dx = optind; if (argc < 4) { helpmsg: fprintf( stderr, "\nusage: %s [options] FSK_LDPC|DATAC0|... InputBinaryDataFile " "OutputModemRawFile\n" "\n" " --testframes T send a total of T test frames (T should " "equal B*N)\n" " --bursts B send B bursts of N testframes (default " "1)\n" " --framesperburst N burst mode, N frames per burst (default " "1)\n" " --delay ms testframe inter-burst delay in ms\n" " --postdelay ms additional delay at end of run in ms\n" " -c complex signed 16 bit output format " "(default real)\n" " --clip 0|1 clipping for reduced PAPR\n" " --txbpf 0|1 bandpass filter\n" " --seq send packet sequence numbers (breaks " "testframe BER counting)\n" " --source Byte insert a (non-zero) source address att " "byte[0]\n" " --complexout complex sample output (default real)\n" " --quiet\n" "\n" "For FSK_LDPC only:\n\n" " -a amp maximum amplitude of FSK signal\n" " -m 2|4 number of FSK tones\n" " --Fs FreqHz sample rate (default 8000)\n" " --Rs FreqHz symbol rate (default 100)\n" " --tone1 FreqHz freq of first tone (default 1000)\n" " --shift FreqHz shift between tones (default 200)\n\n" " --code CodeName LDPC code (defaults (512,256)\n" " --listcodes list available LDPC codes\n\n", argv[0]); fprintf(stderr, "example: $ %s --testframes 6 --bursts 3 --framesperburst 2 datac0 " "/dev/zero samples.s16\n", argv[0]); fprintf( stderr, "example: $ %s -c --testframes 10 FSK_LDPC /dev/zero samples.iq16\n\n", argv[0]); exit(1); } if ((argc - dx) < 3) { fprintf(stderr, "too few arguments.\n"); goto helpmsg; } mode = -1; if (!strcmp(argv[dx], "FSK_LDPC") || !strcmp(argv[dx], "fsk_ldpc")) mode = FREEDV_MODE_FSK_LDPC; if (!strcmp(argv[dx], "DATAC0") || !strcmp(argv[dx], "datac0")) mode = FREEDV_MODE_DATAC0; if (!strcmp(argv[dx], "DATAC1") || !strcmp(argv[dx], "datac1")) mode = FREEDV_MODE_DATAC1; if (!strcmp(argv[dx], "DATAC3") || !strcmp(argv[dx], "datac3")) mode = FREEDV_MODE_DATAC3; if (!strcmp(argv[dx], "DATAC4") || !strcmp(argv[dx], "datac4")) mode = FREEDV_MODE_DATAC4; if (!strcmp(argv[dx], "DATAC13") || !strcmp(argv[dx], "datac13")) mode = FREEDV_MODE_DATAC13; if (mode == -1) { fprintf(stderr, "Error: in mode: %s", argv[dx]); exit(1); } if (strcmp(argv[dx + 1], "-") == 0) fin = stdin; else if ((fin = fopen(argv[dx + 1], "rb")) == NULL) { fprintf(stderr, "Error opening input file of bytes: %s: %s.\n", argv[dx + 1], strerror(errno)); exit(1); } if (strcmp(argv[dx + 2], "-") == 0) fout = stdout; else if ((fout = fopen(argv[dx + 2], "wb")) == NULL) { fprintf(stderr, "Error opening output modem sample file: %s: %s.\n", argv[dx + 2], strerror(errno)); exit(1); } if (mode != FREEDV_MODE_FSK_LDPC) freedv = freedv_open(mode); else freedv = freedv_open_advanced(mode, &adv); assert(freedv != NULL); /* these are optional ------------------ */ if (use_clip != -1) freedv_set_clip(freedv, use_clip); if (use_txbpf != -1) freedv_set_tx_bpf(freedv, use_txbpf); freedv_set_tx_amp(freedv, amp); /* Data modes have a multiple of 8 payload bits/frame */ int bytes_per_modem_frame = freedv_get_bits_per_modem_frame(freedv) / 8; int payload_bytes_per_modem_frame = bytes_per_modem_frame; payload_bytes_per_modem_frame -= 2; /* 16 bits used for the CRC */ if (!quiet) fprintf(stderr, "payload bytes_per_modem_frame: %d ", payload_bytes_per_modem_frame); assert((freedv_get_bits_per_modem_frame(freedv) % 8) == 0); int n_mod_out = freedv_get_n_tx_modem_samples(freedv); uint8_t bytes_in[bytes_per_modem_frame]; if (mode == FREEDV_MODE_FSK_LDPC) { if (!quiet) fprintf(stderr, "Frequency: Fs: %4.1f Hz Rs: %5.0f Hz Tone1: %5.0f Hz Shift: " "%5.0f Hz M: %d \n", (float)adv.Fs, (float)adv.Rs, (float)adv.first_tone, (float)adv.tone_spacing, adv.M); if (adv.tone_spacing < adv.Rs) { fprintf(stderr, "Need shift: %d > Rs: %d\n", adv.tone_spacing, adv.Rs); exit(1); } } /* a few sanity checks */ if (testframes) { if (Ntestframes != framesperburst * Nbursts) { if (!quiet) fprintf(stderr, "Adjusting testframes to equal framesperburst*bursts\n"); Ntestframes = framesperburst * Nbursts; } } else { if (framesperburst != 1) { fprintf(stderr, "Only one frame per burst currently supported in stdin mode\n"); exit(1); } } int frames = 0; size_t on_samples = 0; size_t off_samples = 0; /* initial silence */ int samples_delay = 0; if (inter_burst_delay_ms) { /* user defined inter-burst delay */ samples_delay = FREEDV_FS_8000 * inter_burst_delay_ms / 1000; } else { /* just enough silence at the end of burst to allow demod to complete * processing */ samples_delay = 2 * freedv_get_n_nom_modem_samples(freedv); } off_samples += send_silence(fout, shorts_per_sample, samples_delay); /* --------- Test Frame Mode * --------------------------------------------------*/ if (testframes) { /* generate a fixed test frame */ uint8_t testframe_bytes[bytes_per_modem_frame]; memset(testframe_bytes, 0, bytes_per_modem_frame); int bits_per_frame = freedv_get_bits_per_modem_frame(freedv); uint8_t testframe_bits[bits_per_frame]; ofdm_generate_payload_data_bits(testframe_bits, bits_per_frame); freedv_pack(testframe_bytes, testframe_bits, bits_per_frame); if (!quiet) fprintf(stderr, "\n"); for (int b = 0; b < Nbursts; b++) { on_samples += send_preamble(freedv, fout, use_complex, n_mod_out); for (int fpb = 0; fpb < framesperburst; fpb++) { memcpy(bytes_in, testframe_bytes, bytes_per_modem_frame); if (source_byte) bytes_in[0] = source_byte; if (sequence_numbers) bytes_in[1] = (frames + 1) & 0xff; /* The raw data modes requires a CRC in the last two bytes */ uint16_t crc16 = freedv_gen_crc16(bytes_in, payload_bytes_per_modem_frame); bytes_in[bytes_per_modem_frame - 2] = crc16 >> 8; bytes_in[bytes_per_modem_frame - 1] = crc16 & 0xff; on_samples += send_modulated_data(freedv, fout, use_complex, n_mod_out, bytes_in); /* if using pipes we don't want the usual buffering to occur */ if (fout == stdout) fflush(stdout); frames++; } on_samples += send_postamble(freedv, fout, use_complex, n_mod_out); int samples_delay = 0; if (inter_burst_delay_ms) { /* user defined inter-burst delay */ samples_delay = FREEDV_FS_8000 * inter_burst_delay_ms / 1000; } else { /* just enough silence at the end of burst to allow demod to complete * processing */ samples_delay = 2 * freedv_get_n_nom_modem_samples(freedv); } off_samples += send_silence(fout, shorts_per_sample, samples_delay); } } else { /* --------- modulate data from stdin mode * --------------------------------------------------*/ while (fread(bytes_in, sizeof(uint8_t), payload_bytes_per_modem_frame, fin) == payload_bytes_per_modem_frame) { on_samples += send_preamble(freedv, fout, use_complex, n_mod_out); if (source_byte) bytes_in[0] = source_byte; if (sequence_numbers) bytes_in[1] = (frames + 1) & 0xff; /* The raw data modes requires a CRC in the last two bytes */ uint16_t crc16 = freedv_gen_crc16(bytes_in, payload_bytes_per_modem_frame); bytes_in[bytes_per_modem_frame - 2] = crc16 >> 8; bytes_in[bytes_per_modem_frame - 1] = crc16 & 0xff; on_samples += send_modulated_data(freedv, fout, use_complex, n_mod_out, bytes_in); /* if using pipes we don't want the usual buffering to occur */ if (fout == stdout) fflush(stdout); on_samples += send_postamble(freedv, fout, use_complex, n_mod_out); int samples_delay = 0; if (inter_burst_delay_ms) { /* user defined inter-burst delay */ samples_delay = FREEDV_FS_8000 * inter_burst_delay_ms / 1000; } else { /* just enough silence at the end of burst to allow demod to complete * processing */ samples_delay = 2 * freedv_get_n_nom_modem_samples(freedv); } off_samples += send_silence(fout, shorts_per_sample, samples_delay); frames++; } } /* optional silence at the end of run */ if (postdelay_ms) { int samples_delay = FREEDV_FS_8000 * postdelay_ms / 1000; if (!quiet) fprintf(stderr, "postdelay: %d %d\n", postdelay_ms, samples_delay); off_samples += send_silence(fout, shorts_per_sample, samples_delay); } /* SNR offset to use in channel simulator to account for on/off time of burst * signal */ float mark_space_ratio = (float)on_samples / (on_samples + off_samples); float mark_space_SNR_offset = 10 * log10(mark_space_ratio); if (!quiet) fprintf(stderr, "mark:space: %3.2f SNR offset: %5.2f\n", mark_space_ratio, mark_space_SNR_offset); freedv_close(freedv); fclose(fin); fclose(fout); return 0; } size_t send_preamble(struct freedv *freedv, FILE *fout, int use_complex, size_t n_mod_out) { short mod_out_short[2 * n_mod_out]; int shorts_per_sample = 1; int n_preamble = 0; if (use_complex == 0) { n_preamble = freedv_rawdatapreambletx(freedv, mod_out_short); } else { COMP mod_out_comp[n_mod_out]; n_preamble = freedv_rawdatapreamblecomptx(freedv, mod_out_comp); comp_to_short(mod_out_short, mod_out_comp, n_preamble); shorts_per_sample = 2; } assert(n_preamble == freedv_get_n_tx_preamble_modem_samples(freedv)); assert(n_preamble <= n_mod_out); fwrite(mod_out_short, sizeof(short), shorts_per_sample * n_preamble, fout); return n_preamble; } size_t send_modulated_data(struct freedv *freedv, FILE *fout, int use_complex, size_t n_mod_out, uint8_t bytes_in[]) { short mod_out_short[2 * n_mod_out]; int shorts_per_sample = 1; if (use_complex == 0) { freedv_rawdatatx(freedv, mod_out_short, bytes_in); } else { COMP mod_out_comp[n_mod_out]; freedv_rawdatacomptx(freedv, mod_out_comp, bytes_in); comp_to_short(mod_out_short, mod_out_comp, n_mod_out); shorts_per_sample = 2; } fwrite(mod_out_short, sizeof(short), shorts_per_sample * n_mod_out, fout); return n_mod_out; } size_t send_postamble(struct freedv *freedv, FILE *fout, int use_complex, size_t n_mod_out) { short mod_out_short[2 * n_mod_out]; int shorts_per_sample = 1; int n_postamble = 0; if (use_complex == 0) { n_postamble = freedv_rawdatapostambletx(freedv, mod_out_short); } else { COMP mod_out_comp[n_mod_out]; n_postamble = freedv_rawdatapostamblecomptx(freedv, mod_out_comp); comp_to_short(mod_out_short, mod_out_comp, n_postamble); shorts_per_sample = 2; } assert(n_postamble == freedv_get_n_tx_postamble_modem_samples(freedv)); assert(n_postamble <= n_mod_out); fwrite(mod_out_short, sizeof(short), shorts_per_sample * n_postamble, fout); return n_postamble; } size_t send_silence(FILE *fout, size_t shorts_per_sample, size_t samples_delay) { size_t n = shorts_per_sample * samples_delay; short sil_short[n]; for (int i = 0; i < n; i++) sil_short[i] = 0; fwrite(sil_short, sizeof(short), n, fout); return samples_delay; } void comp_to_short(short mod_out_short[], COMP mod_out_comp[], int n_mod_out) { for (int i = 0; i < n_mod_out; i++) { mod_out_short[2 * i] = (short)(mod_out_comp[i].real); mod_out_short[2 * i + 1] = (short)(mod_out_comp[i].imag); } } codec2-1.2.0/src/freedv_data_rx.c000066400000000000000000000144431445607075400166030ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_data_rx.c AUTHOR......: Jeroen Vreeken DATE CREATED: May 2020 Demo receive program for FreeDV API functions ignores everything but VHF packet data. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2020 Jeroen Vreeken All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include #include "freedv_api.h" /********************************************************** Encoding an ITU callsign (and 4 bit secondary station ID to a valid MAC address. http://dmlinking.net/eth_ar.html */ // Lookup table for valid callsign characters static char alnum2code[37] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 0}; // Decode the callsign in a MAC address static int eth_ar_mac2call(char *callsign, int *ssid, bool *multicast, uint8_t mac[6]) { uint64_t add; int i; if (!memcmp(mac, (uint8_t[6]){0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, 6)) { *ssid = 0; *multicast = true; strcpy(callsign, "*"); return 0; } *multicast = mac[0] & 0x01; *ssid = (mac[0] & 0x3c) >> 2; add = (uint64_t)(mac[0] & 0xc0) << (40 - 6); add |= (uint64_t)mac[1] << 32; add |= (uint64_t)mac[2] << 24; add |= (uint64_t)mac[3] << 16; add |= (uint64_t)mac[4] << 8; add |= (uint64_t)mac[5]; for (i = 0; i < 8; i++) { int c = add % 37; callsign[i] = alnum2code[c]; add /= 37; } callsign[i] = 0; return 0; } /********************************************************** Data channel callback functions */ struct my_callback_state { FILE *fdataout; int calls; }; /* Called when a packet has been received */ void my_datarx(void *callback_state, unsigned char *packet, size_t size) { struct my_callback_state *pstate = (struct my_callback_state *)callback_state; pstate->calls++; fprintf(pstate->fdataout, "%-4d", pstate->calls); if (pstate->fdataout != NULL) { size_t i; char callsign_to[9], callsign_from[9]; int ssid_to, ssid_from; bool multicast_to, multicast_from; eth_ar_mac2call(callsign_to, &ssid_to, &multicast_to, packet); eth_ar_mac2call(callsign_from, &ssid_from, &multicast_from, packet + 6); if (multicast_from) fprintf(pstate->fdataout, "Multicast"); else fprintf(pstate->fdataout, "%s-%d", callsign_from, ssid_from); printf(" -> "); if (multicast_to) fprintf(pstate->fdataout, "Multicast"); else fprintf(pstate->fdataout, "%s-%d", callsign_to, ssid_to); printf(" (%zd bytes)", size); /* It could be just an identification frame */ if (size < 14) { fprintf(pstate->fdataout, " Identification"); } else { unsigned short ethertype = packet[12] << 8 | packet[13]; fprintf(pstate->fdataout, " EtherType 0x%04x", ethertype); if (ethertype == 0x7370) fprintf(pstate->fdataout, " (FPRS)"); } fprintf(pstate->fdataout, ":"); for (i = 0; i < size; i++) { if (i % 0x10 == 0) fprintf(pstate->fdataout, "\n0x%04zx: ", i); fprintf(pstate->fdataout, "0x%02x ", packet[i]); } fprintf(pstate->fdataout, "\n"); } } /* Called when a new packet can be send */ void my_datatx(void *callback_state, unsigned char *packet, size_t *size) { /* This should not happen while receiving.. */ fprintf(stderr, "datarx callback called, this should not happen!\n"); *size = 0; } int main(int argc, char *argv[]) { FILE *fin; struct freedv *freedv; int nin, frame = 0; struct my_callback_state my_cb_state = {0}; int mode; int verbose; int i; if (argc < 3) { printf( "usage: %s 2400A|2400B|800XA InputModemSpeechFile\n" " \n", argv[0]); printf("e.g %s 2400A data_fdmdv.raw\n", argv[0]); exit(1); } my_cb_state.fdataout = stdout; mode = -1; if (!strcmp(argv[1], "2400A")) mode = FREEDV_MODE_2400A; if (!strcmp(argv[1], "2400B")) mode = FREEDV_MODE_2400B; if (!strcmp(argv[1], "800XA")) mode = FREEDV_MODE_800XA; assert(mode != -1); if (strcmp(argv[2], "-") == 0) fin = stdin; else if ((fin = fopen(argv[2], "rb")) == NULL) { fprintf(stderr, "Error opening input raw modem sample file: %s: %s.\n", argv[2], strerror(errno)); exit(1); } verbose = 0; if (argc > 3) { for (i = 3; i < argc; i++) { if (strcmp(argv[i], "-v") == 0) { verbose = 1; } if (strcmp(argv[i], "-vv") == 0) { verbose = 2; } } } freedv = freedv_open(mode); assert(freedv != NULL); freedv_set_verbose(freedv, verbose); short speech_out[freedv_get_n_max_speech_samples(freedv)]; short demod_in[freedv_get_n_max_modem_samples(freedv)]; freedv_set_callback_data(freedv, my_datarx, my_datatx, &my_cb_state); /* Note we need to work out how many samples demod needs on each call (nin). This is used to adjust for differences in the tx and rx sample clock frequencies. Note also the number of output speech samples is time varying. */ nin = freedv_nin(freedv); while (fread(demod_in, sizeof(short), nin, fin) == nin) { frame++; /* usual case: use the freedv_api to do everything: speech decoding, * demodulating */ // most common interface - real shorts in, real shorts out freedv_rx(freedv, speech_out, demod_in); nin = freedv_nin(freedv); } fclose(fin); fprintf(stderr, "frames decoded: %d\n", frame); freedv_close(freedv); return 0; } codec2-1.2.0/src/freedv_data_tx.c000066400000000000000000000164341445607075400166070ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_data_tx.c AUTHOR......: Jeroen Vreeken DATE CREATED: May 2020 Demo VHF packet data transmit program for FreeDV API functions. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2020 Jeroen Vreeken All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include #include #include "codec2.h" #include "freedv_api.h" /********************************************************** Encoding an ITU callsign (and 4 bit secondary station ID to a valid MAC address. http://dmlinking.net/eth_ar.html */ // Lookup table for valid callsign characters static char alnum2code[37] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 0}; // Encode a callsign and ssid into a valid MAC address static int eth_ar_call2mac(uint8_t mac[6], char *callsign, int ssid, bool multicast) { uint64_t add = 0; int i; if (ssid > 15 || ssid < 0) return -1; for (i = 7; i >= 0; i--) { char c; if (i >= strlen(callsign)) { c = 0; } else { c = toupper(callsign[i]); } int j; for (j = 0; j < sizeof(alnum2code); j++) { if (alnum2code[j] == c) break; } if (j == sizeof(alnum2code)) return -1; add *= 37; add += j; } mac[0] = ((add >> (40 - 6)) & 0xc0) | (ssid << 2) | 0x02 | multicast; mac[1] = (add >> 32) & 0xff; mac[2] = (add >> 24) & 0xff; mac[3] = (add >> 16) & 0xff; mac[4] = (add >> 8) & 0xff; mac[5] = add & 0xff; return 0; } /********************************************************** Data channel callback functions */ struct my_callback_state { int calls; unsigned char mac[6]; }; /* Called when a packet has been received Should not be called in this tx-only test program */ void my_datarx(void *callback_state, unsigned char *packet, size_t size) { /* This should not happen while sending... */ fprintf(stderr, "datarx callback called, this should not happen!\n"); } /* Called when a new packet can be send. callback_state Private state variable, not touched by freedv. packet Data array where new packet data is expected size Available size in packet. On return the actual size of the packet */ void my_datatx(void *callback_state, unsigned char *packet, size_t *size) { static int data_type; struct my_callback_state *my_cb_state = callback_state; my_cb_state->calls++; /* Data could come from a network interface, here we just make up some */ if (data_type % 4 == 1) { /* Generate a packet with simple test pattern (counting */ /* Send a packet with data */ int i; /* Destination: broadcast */ memset(packet, 0xff, 6); /* Source: our eth_ar encoded callsign+ssid */ memcpy(packet + 6, my_cb_state->mac, 6); /* Ether type: experimental (since this is just a test pattern) */ packet[12] = 0x01; packet[13] = 0x01; for (i = 0; i < 64; i++) packet[i + 14] = i; *size = i + 14; } else if (data_type % 4 == 2) { /* Generate an FPRS position report */ /* Destination: broadcast */ memset(packet, 0xff, 6); /* Source: our eth_ar encoded callsign+ssid */ memcpy(packet + 6, my_cb_state->mac, 6); /* Ether type: FPRS */ packet[12] = 0x73; packet[13] = 0x70; packet[14] = 0x07; // Position element Lon 86.925026 Lat 27.987850 packet[15] = 0x3d; // packet[16] = 0xd0; packet[17] = 0x37; packet[18] = 0xd0 | 0x08 | 0x01; packet[19] = 0x3e; packet[20] = 0x70; packet[21] = 0x85; *size = 22; } else { /* Set size to zero, the freedv api will insert a header frame This is useful for identifying ourselves */ *size = 0; } data_type++; } int main(int argc, char *argv[]) { FILE *fout; short *mod_out; struct freedv *freedv; struct my_callback_state my_cb_state; int mode; int n_nom_modem_samples; int i; int n_packets = 20; char *callsign = "NOCALL"; int ssid = 0; bool multicast = false; if (argc < 3) { printf( "usage: %s 2400A|2400B|800XA OutputModemRawFile\n" " [--frames nr] [--callsign callsign] [--ssid ssid] [--mac-multicast " "0|1]\n", argv[0]); printf("e.g %s 2400A data_fdmdv.raw\n", argv[0]); exit(1); } mode = -1; if (!strcmp(argv[1], "2400A")) mode = FREEDV_MODE_2400A; if (!strcmp(argv[1], "2400B")) mode = FREEDV_MODE_2400B; if (!strcmp(argv[1], "800XA")) mode = FREEDV_MODE_800XA; if (mode == -1) { fprintf(stderr, "Error in mode: %s\n", argv[1]); exit(0); } if (strcmp(argv[2], "-") == 0) fout = stdout; else if ((fout = fopen(argv[2], "wb")) == NULL) { fprintf(stderr, "Error opening output modem sample file: %s: %s.\n", argv[3], strerror(errno)); exit(1); } if (argc > 3) { for (i = 3; i < argc; i++) { if (strcmp(argv[i], "--packets") == 0) { n_packets = atoi(argv[i + 1]); } if (strcmp(argv[i], "--callsign") == 0) { callsign = argv[i + 1]; } if (strcmp(argv[i], "--ssid") == 0) { ssid = atoi(argv[i + 1]); } if (strcmp(argv[i], "--mac-multicast") == 0) { multicast = atoi(argv[i + 1]); } } } freedv = freedv_open(mode); assert(freedv != NULL); /* Generate our address */ eth_ar_call2mac(my_cb_state.mac, callsign, ssid, multicast); freedv_set_data_header(freedv, my_cb_state.mac); freedv_set_verbose(freedv, 1); n_nom_modem_samples = freedv_get_n_nom_modem_samples(freedv); mod_out = (short *)malloc(sizeof(short) * n_nom_modem_samples); assert(mod_out != NULL); /* set up callback for data packets */ freedv_set_callback_data(freedv, my_datarx, my_datatx, &my_cb_state); /* OK main loop */ /* We will loop until the tx callback has been called n_packets times After that we continue until everything is transmitted, as a data packet might be transmitted in multiple freedv frames. */ while (my_cb_state.calls <= n_packets || freedv_data_ntxframes(freedv)) { freedv_datatx(freedv, mod_out); fwrite(mod_out, sizeof(short), n_nom_modem_samples, fout); /* if this is in a pipeline, we probably don't want the usual buffering to occur */ if (fout == stdout) fflush(stdout); } free(mod_out); freedv_close(freedv); fclose(fout); fclose(stdin); fclose(stderr); return 0; } codec2-1.2.0/src/freedv_fsk.c000066400000000000000000000632661445607075400157530ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_fsk.c AUTHOR......: David Rowe DATE CREATED: May 2020 Functions that implement the FreeDV modes that use the FSK modem. \*---------------------------------------------------------------------------*/ #include #include #include #include #include #include #include #include "codec2.h" #include "comp.h" #include "comp_prim.h" #include "debug_alloc.h" #include "fmfsk.h" #include "freedv_api.h" #include "freedv_api_internal.h" #include "freedv_vhf_framing.h" #include "fsk.h" #include "interldpc.h" #include "ldpc_codes.h" #include "varicode.h" /* 32 bit 0x5186fe15 Unique word for fsk_ldpc modes */ static uint8_t fsk_ldpc_uw[] = {0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1}; void freedv_2400a_open(struct freedv *f) { f->n_protocol_bits = 20; f->deframer = fvhff_create_deframer(FREEDV_VHF_FRAME_A, 0); assert(f->deframer != NULL); f->fsk = fsk_create_hbr(48000, 1200, 4, 10, FSK_DEFAULT_NSYM, 1200, 1200); assert(f->fsk != NULL); /* Note: fsk expects tx/rx bits as an array of uint8_ts, not ints */ f->tx_bits = (int *)MALLOC(f->fsk->Nbits * sizeof(uint8_t)); assert(f->tx_bits != NULL); f->n_nom_modem_samples = f->fsk->N; f->n_max_modem_samples = f->fsk->N + (f->fsk->Ts); f->n_nat_modem_samples = f->fsk->N; f->nin = f->nin_prev = fsk_nin(f->fsk); f->modem_sample_rate = 48000; f->modem_symbol_rate = 1200; f->speech_sample_rate = FREEDV_FS_8000; f->codec2 = codec2_create(CODEC2_MODE_1300); assert(f->codec2 != NULL); f->n_speech_samples = codec2_samples_per_frame(f->codec2); f->n_codec_frames = 1; f->bits_per_codec_frame = codec2_bits_per_frame(f->codec2); f->bits_per_modem_frame = f->bits_per_codec_frame; int n_packed_bytes = (f->bits_per_modem_frame + 7) / 8; f->tx_payload_bits = MALLOC(n_packed_bytes); assert(f->tx_payload_bits != NULL); f->rx_payload_bits = MALLOC(n_packed_bytes); assert(f->rx_payload_bits != NULL); } void freedv_2400b_open(struct freedv *f) { f->n_protocol_bits = 20; f->deframer = fvhff_create_deframer(FREEDV_VHF_FRAME_A, 1); assert(f->deframer != NULL); f->fmfsk = fmfsk_create(48000, 2400); assert(f->fmfsk != NULL); /* Note: fsk expects tx/rx bits as an array of uint8_ts, not ints */ f->tx_bits = (int *)MALLOC(f->fmfsk->nbit * sizeof(uint8_t)); assert(f->tx_bits != NULL); f->n_nom_modem_samples = f->fmfsk->N; f->n_max_modem_samples = f->fmfsk->N + (f->fmfsk->Ts); f->n_nat_modem_samples = f->fmfsk->N; f->nin = f->nin_prev = fmfsk_nin(f->fmfsk); f->modem_sample_rate = 48000; f->speech_sample_rate = FREEDV_FS_8000; f->codec2 = codec2_create(CODEC2_MODE_1300); assert(f->codec2 != NULL); f->n_speech_samples = codec2_samples_per_frame(f->codec2); f->n_codec_frames = 1; f->bits_per_codec_frame = codec2_bits_per_frame(f->codec2); f->bits_per_modem_frame = f->bits_per_codec_frame; int n_packed_bytes = (f->bits_per_modem_frame + 7) / 8; f->tx_payload_bits = MALLOC(n_packed_bytes); assert(f->tx_payload_bits != NULL); f->rx_payload_bits = MALLOC(n_packed_bytes); assert(f->rx_payload_bits != NULL); } void freedv_800xa_open(struct freedv *f) { f->deframer = fvhff_create_deframer(FREEDV_HF_FRAME_B, 0); assert(f->deframer != NULL); f->fsk = fsk_create_hbr(8000, 400, 4, 10, 32, 800, 400); assert(f->fsk != NULL); f->tx_bits = (int *)MALLOC(f->fsk->Nbits * sizeof(uint8_t)); assert(f->fsk != NULL); f->n_nom_modem_samples = f->fsk->N; f->n_max_modem_samples = f->fsk->N + (f->fsk->Ts); f->n_nat_modem_samples = f->fsk->N; f->nin = f->nin_prev = fsk_nin(f->fsk); f->modem_sample_rate = 8000; f->modem_symbol_rate = 400; fsk_stats_normalise_eye(f->fsk, 0); f->codec2 = codec2_create(CODEC2_MODE_700C); assert(f->codec2 != NULL); f->speech_sample_rate = FREEDV_FS_8000; f->n_codec_frames = 2; f->n_speech_samples = f->n_codec_frames * codec2_samples_per_frame(f->codec2); f->bits_per_codec_frame = codec2_bits_per_frame(f->codec2); f->bits_per_modem_frame = f->n_codec_frames * f->bits_per_codec_frame; int n_packed_bytes = (f->bits_per_modem_frame + 7) / 8; f->tx_payload_bits = MALLOC(n_packed_bytes); assert(f->tx_payload_bits != NULL); f->rx_payload_bits = MALLOC(n_packed_bytes); assert(f->rx_payload_bits != NULL); } void freedv_fsk_ldpc_open(struct freedv *f, struct freedv_advanced *adv) { assert(adv != NULL); /* set up modem */ assert((adv->Fs % adv->Rs) == 0); // Fs/Rs must be an integer int P = adv->Fs / adv->Rs; assert(P >= 8); // Good idea for P >= 8 while ((P > 10) && ((P % 2) == 0)) // reduce internal oversampling rate P as // far as we can, keep it an integer P /= 2; // fprintf(stderr, "Fs: %d Rs: %d M: %d P: %d\n", adv->Fs, adv->Rs, adv->M, // P); f->fsk = fsk_create_hbr(adv->Fs, adv->Rs, adv->M, P, FSK_DEFAULT_NSYM, adv->first_tone, adv->tone_spacing); assert(f->fsk != NULL); fsk_set_freq_est_limits(f->fsk, 0, adv->Fs / 2); fsk_stats_normalise_eye(f->fsk, 0); /* set up LDPC code */ int code_index = ldpc_codes_find(adv->codename); assert(code_index != -1); f->ldpc = (struct LDPC *)MALLOC(sizeof(struct LDPC)); assert(f->ldpc != NULL); ldpc_codes_setup(f->ldpc, adv->codename); f->ldpc->max_iter = 15; // fprintf(stderr, "Using: %s\n", f->ldpc->name); f->bits_per_modem_frame = f->ldpc->data_bits_per_frame; int bits_per_frame = f->ldpc->coded_bits_per_frame + sizeof(fsk_ldpc_uw); f->tx_payload_bits = MALLOC(f->bits_per_modem_frame); assert(f->tx_payload_bits != NULL); f->rx_payload_bits = MALLOC(f->bits_per_modem_frame); assert(f->rx_payload_bits != NULL); /* sample buffer size for tx modem samples, we modulate a full frame */ f->n_nom_modem_samples = f->fsk->Ts * (bits_per_frame / (f->fsk->mode >> 1)); f->n_nat_modem_samples = f->n_nom_modem_samples; /* maximum sample buffer size for rx modem samples, note we only demodulate partial frames on each call to fsk_demod() */ f->n_max_modem_samples = f->fsk->N + (f->fsk->Ts); f->nin = f->nin_prev = fsk_nin(f->fsk); f->modem_sample_rate = adv->Fs; f->modem_symbol_rate = adv->Rs; f->tx_amp = FSK_SCALE; /* deframer set up */ f->frame_llr_size = 2 * bits_per_frame; f->frame_llr = (float *)MALLOC(f->frame_llr_size * sizeof(float)); assert(f->frame_llr != NULL); f->frame_llr_nbits = 0; f->twoframes_hard = MALLOC(2 * bits_per_frame); assert(f->twoframes_hard != NULL); memset(f->twoframes_hard, 0, 2 * bits_per_frame); f->twoframes_llr = (float *)MALLOC(2 * bits_per_frame * sizeof(float)); assert(f->twoframes_llr != NULL); for (int i = 0; i < 2 * bits_per_frame; i++) f->twoframes_llr[i] = 0.0; /* currently configured a simple frame-frame approach */ f->fsk_ldpc_thresh1 = 5; f->fsk_ldpc_thresh2 = 6; f->fsk_ldpc_baduw_thresh = 1; // fprintf(stderr, "thresh1: %d thresh2: %d\n", f->fsk_ldpc_thresh1, // f->fsk_ldpc_thresh2); f->fsk_ldpc_baduw = 0; f->fsk_ldpc_best_location = 0; f->fsk_ldpc_state = 0; f->fsk_ldpc_snr = 1.0; f->fsk_S[0] = f->fsk_S[1] = f->fsk_N[0] = f->fsk_N[1] = 0.0; } /* TX routines for 2400 FSK modes, after codec2 encoding */ void freedv_tx_fsk_voice(struct freedv *f, short mod_out[]) { int i; float *tx_float; /* To hold on to modulated samps from fsk/fmfsk */ uint8_t vc_bits[2]; /* Varicode bits for 2400 framing */ uint8_t proto_bits[3]; /* Prococol bits for 2400 framing */ /* Frame for 2400A/B */ if (FDV_MODE_ACTIVE(FREEDV_MODE_2400A, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2400B, f->mode)) { /* Get varicode bits for TX and possibly ask for a new char */ /* 2 bits per 2400A/B frame, so this has to be done twice */ for (i = 0; i < 2; i++) { if (f->nvaricode_bits) { vc_bits[i] = f->tx_varicode_bits[f->varicode_bit_index++]; f->nvaricode_bits--; } if (f->nvaricode_bits == 0) { /* get new char and encode */ char s[2]; if (f->freedv_get_next_tx_char != NULL) { s[0] = (*f->freedv_get_next_tx_char)(f->callback_state); f->nvaricode_bits = varicode_encode(f->tx_varicode_bits, s, VARICODE_MAX_BITS, 1, 1); f->varicode_bit_index = 0; } } } /* If the API user hasn't set up message callbacks, don't bother with * varicode bits */ if (f->freedv_get_next_proto != NULL) { (*f->freedv_get_next_proto)(f->proto_callback_state, (char *)proto_bits); fvhff_frame_bits(FREEDV_VHF_FRAME_A, (uint8_t *)(f->tx_bits), f->tx_payload_bits, proto_bits, vc_bits); } else if (f->freedv_get_next_tx_char != NULL) { fvhff_frame_bits(FREEDV_VHF_FRAME_A, (uint8_t *)(f->tx_bits), f->tx_payload_bits, NULL, vc_bits); } else { fvhff_frame_bits(FREEDV_VHF_FRAME_A, (uint8_t *)(f->tx_bits), f->tx_payload_bits, NULL, NULL); } /* Frame for 800XA */ } else if (FDV_MODE_ACTIVE(FREEDV_MODE_800XA, f->mode)) { fvhff_frame_bits(FREEDV_HF_FRAME_B, (uint8_t *)(f->tx_bits), f->tx_payload_bits, NULL, NULL); } /* Allocate floating point buffer for FSK mod */ tx_float = MALLOC(sizeof(float) * f->n_nom_modem_samples); /* do 4fsk mod */ if (FDV_MODE_ACTIVE(FREEDV_MODE_2400A, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_800XA, f->mode)) { if (f->ext_vco) { fsk_mod_ext_vco(f->fsk, tx_float, (uint8_t *)(f->tx_bits), f->fsk->Nbits); for (i = 0; i < f->n_nom_modem_samples; i++) { mod_out[i] = (short)tx_float[i]; } } else { fsk_mod(f->fsk, tx_float, (uint8_t *)(f->tx_bits), f->fsk->Nbits); /* Convert float samps to short */ for (i = 0; i < f->n_nom_modem_samples; i++) { mod_out[i] = (short)(tx_float[i] * FSK_SCALE * NORM_PWR_FSK); } } /* do me-fsk mod */ } else if (FDV_MODE_ACTIVE(FREEDV_MODE_2400B, f->mode)) { fmfsk_mod(f->fmfsk, tx_float, (uint8_t *)(f->tx_bits)); /* Convert float samps to short */ for (i = 0; i < f->n_nom_modem_samples; i++) { mod_out[i] = (short)(tx_float[i] * FMFSK_SCALE); } } FREE(tx_float); } /* TX routines for 2400 FSK modes, after codec2 encoding */ void freedv_comptx_fsk_voice(struct freedv *f, COMP mod_out[]) { int i; float *tx_float; /* To hold on to modulated samps from fsk/fmfsk */ uint8_t vc_bits[2]; /* Varicode bits for 2400 framing */ uint8_t proto_bits[3]; /* Prococol bits for 2400 framing */ /* Frame for 2400A/B */ if (FDV_MODE_ACTIVE(FREEDV_MODE_2400A, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_2400B, f->mode)) { /* Get varicode bits for TX and possibly ask for a new char */ /* 2 bits per 2400A/B frame, so this has to be done twice */ for (i = 0; i < 2; i++) { if (f->nvaricode_bits) { vc_bits[i] = f->tx_varicode_bits[f->varicode_bit_index++]; f->nvaricode_bits--; } if (f->nvaricode_bits == 0) { /* get new char and encode */ char s[2]; if (f->freedv_get_next_tx_char != NULL) { s[0] = (*f->freedv_get_next_tx_char)(f->callback_state); f->nvaricode_bits = varicode_encode(f->tx_varicode_bits, s, VARICODE_MAX_BITS, 1, 1); f->varicode_bit_index = 0; } } } /* If the API user hasn't set up message callbacks, don't bother with * varicode bits */ if (f->freedv_get_next_proto != NULL) { (*f->freedv_get_next_proto)(f->proto_callback_state, (char *)proto_bits); fvhff_frame_bits(FREEDV_VHF_FRAME_A, (uint8_t *)(f->tx_bits), f->tx_payload_bits, proto_bits, vc_bits); } else if (f->freedv_get_next_tx_char != NULL) { fvhff_frame_bits(FREEDV_VHF_FRAME_A, (uint8_t *)(f->tx_bits), f->tx_payload_bits, NULL, vc_bits); } else { fvhff_frame_bits(FREEDV_VHF_FRAME_A, (uint8_t *)(f->tx_bits), f->tx_payload_bits, NULL, NULL); } /* Frame for 800XA */ } else if (FDV_MODE_ACTIVE(FREEDV_MODE_800XA, f->mode)) { fvhff_frame_bits(FREEDV_HF_FRAME_B, (uint8_t *)(f->tx_bits), f->tx_payload_bits, NULL, NULL); } /* Allocate floating point buffer for FSK mod */ tx_float = MALLOC(sizeof(float) * f->n_nom_modem_samples); /* do 4fsk mod */ if (FDV_MODE_ACTIVE(FREEDV_MODE_2400A, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_800XA, f->mode)) { fsk_mod_c(f->fsk, mod_out, (uint8_t *)(f->tx_bits), f->fsk->Nbits); /* Convert float samps to short */ for (i = 0; i < f->n_nom_modem_samples; i++) { mod_out[i] = fcmult(NORM_PWR_FSK, mod_out[i]); } /* do me-fsk mod */ } else if (FDV_MODE_ACTIVE(FREEDV_MODE_2400B, f->mode)) { fmfsk_mod(f->fmfsk, tx_float, (uint8_t *)(f->tx_bits)); /* Convert float samps to short */ for (i = 0; i < f->n_nom_modem_samples; i++) { mod_out[i].real = (tx_float[i]); } } FREE(tx_float); } /* TX routines for 2400 FSK modes, data channel */ void freedv_tx_fsk_data(struct freedv *f, short mod_out[]) { int i; float *tx_float; /* To hold on to modulated samps from fsk/fmfsk */ if (FDV_MODE_ACTIVE(FREEDV_MODE_800XA, f->mode)) fvhff_frame_data_bits(f->deframer, FREEDV_HF_FRAME_B, (uint8_t *)(f->tx_bits)); else fvhff_frame_data_bits(f->deframer, FREEDV_VHF_FRAME_A, (uint8_t *)(f->tx_bits)); /* Allocate floating point buffer for FSK mod */ tx_float = MALLOC(sizeof(float) * f->n_nom_modem_samples); /* do 4fsk mod */ if (FDV_MODE_ACTIVE(FREEDV_MODE_2400A, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_800XA, f->mode)) { fsk_mod(f->fsk, tx_float, (uint8_t *)(f->tx_bits), f->fsk->Nbits); /* Convert float samps to short */ for (i = 0; i < f->n_nom_modem_samples; i++) { mod_out[i] = (short)(tx_float[i] * FSK_SCALE); } /* do me-fsk mod */ } else if (FDV_MODE_ACTIVE(FREEDV_MODE_2400B, f->mode)) { fmfsk_mod(f->fmfsk, tx_float, (uint8_t *)(f->tx_bits)); /* Convert float samps to short */ for (i = 0; i < f->n_nom_modem_samples; i++) { mod_out[i] = (short)(tx_float[i] * FMFSK_SCALE); } } FREE(tx_float); } int freedv_tx_fsk_ldpc_bits_per_frame(struct freedv *f) { return f->ldpc->coded_bits_per_frame + sizeof(fsk_ldpc_uw); } /* in a separate function so callable by other FSK Txs */ void freedv_tx_fsk_ldpc_framer(struct freedv *f, uint8_t frame[], uint8_t payload_data[]) { /* lets build up the frame to Tx ............. */ /* insert UW */ memcpy(frame, fsk_ldpc_uw, sizeof(fsk_ldpc_uw)); /* insert data bits */ memcpy(frame + sizeof(fsk_ldpc_uw), payload_data, f->bits_per_modem_frame); /* insert parity bits */ encode(f->ldpc, frame + sizeof(fsk_ldpc_uw), frame + sizeof(fsk_ldpc_uw) + f->bits_per_modem_frame); } /* FreeDV FSK_LDPC mode tx */ void freedv_tx_fsk_ldpc_data(struct freedv *f, COMP mod_out[]) { int bits_per_frame = freedv_tx_fsk_ldpc_bits_per_frame(f); uint8_t frame[bits_per_frame]; assert(f->mode == FREEDV_MODE_FSK_LDPC); freedv_tx_fsk_ldpc_framer(f, frame, f->tx_payload_bits); fsk_mod_c(f->fsk, mod_out, frame, bits_per_frame); /* scale samples */ for (int i = 0; i < f->n_nom_modem_samples; i++) { mod_out[i].real *= f->tx_amp; mod_out[i].imag *= f->tx_amp; } } void freedv_tx_fsk_ldpc_data_preamble(struct freedv *f, COMP mod_out[], int npreamble_bits, int npreamble_samples) { struct FSK *fsk = f->fsk; uint8_t preamble[npreamble_bits]; // cycle through all 2 and 4FSK symbols, not sure if this is better than // random int sym = 0; for (int i = 0; i < npreamble_bits; i += 2) { preamble[i] = (sym >> 1) & 0x1; preamble[i + 1] = sym & 0x1; sym += 1; } fsk_mod_c(fsk, mod_out, preamble, npreamble_bits); /* scale samples */ for (int i = 0; i < npreamble_samples; i++) { mod_out[i].real *= f->tx_amp; mod_out[i].imag *= f->tx_amp; } } /* FreeDV FSK_LDPC mode rx */ int freedv_rx_fsk_ldpc_data(struct freedv *f, COMP demod_in[]) { int bits_per_frame = freedv_tx_fsk_ldpc_bits_per_frame(f); struct FSK *fsk = f->fsk; float rx_filt[fsk->mode * fsk->Nsym]; int rx_status = 0, seq = 0; /* Couple of layers of buffers to move chunks of fsk->Nbits into a double buffer we can use for frame sync. There are other ways of doing this, e.g. FIFOs */ /* demodulate to bit LLRs which are placed at end of buffer */ fsk_demod_sd(fsk, rx_filt, demod_in); fsk_rx_filt_to_llrs(&f->frame_llr[f->frame_llr_nbits], rx_filt, fsk->v_est, fsk->SNRest, fsk->mode, fsk->Nsym); f->nin = fsk_nin(fsk); f->frame_llr_nbits += fsk->Nbits; assert(f->frame_llr_nbits < f->frame_llr_size); if (f->frame_llr_nbits >= bits_per_frame) { /* We have an entire frame of llrs, place them at the end of the double * buffer */ memmove(f->twoframes_llr, &f->twoframes_llr[bits_per_frame], bits_per_frame * sizeof(float)); memcpy(&f->twoframes_llr[bits_per_frame], f->frame_llr, bits_per_frame * sizeof(float)); /* update new hard decisions buffer (used for UW search) */ memmove(f->twoframes_hard, &f->twoframes_hard[bits_per_frame], bits_per_frame); for (int i = 0; i < bits_per_frame; i++) { if (f->frame_llr[i] < 0) f->twoframes_hard[bits_per_frame + i] = 1; else f->twoframes_hard[bits_per_frame + i] = 0; } /* update single frame buffer */ memmove(f->frame_llr, &f->frame_llr[bits_per_frame], (f->frame_llr_nbits - bits_per_frame) * sizeof(float)); f->frame_llr_nbits -= bits_per_frame; assert(f->frame_llr_nbits >= 0); /* Sample SNR which we report back to used in fsk->snr_est. Note that fsk->SNRest is the SNR of the last fsk->Nbits that were placed at the end of the buffer. We delay this by one frame to report the SNR of the frame we are currently decoding */ f->snr_est = (double)10.0 * log10(f->fsk_ldpc_snr); f->fsk_ldpc_snr = fsk->SNRest; f->fsk_S[0] = f->fsk_S[1]; f->fsk_N[0] = f->fsk_N[1]; /* also store delayed versions of signal and noise power, useful for channel * estimation */ f->fsk_S[1] = fsk->rx_sig_pow; f->fsk_N[1] = fsk->rx_nse_pow; /* OK lets run frame based processing, starting with state machine */ int errors = 0; int next_state = f->fsk_ldpc_state; switch (f->fsk_ldpc_state) { case 0: /* out of sync - look for UW */ f->fsk_ldpc_best_location = 0; int best_errors = sizeof(fsk_ldpc_uw); for (int i = 0; i < bits_per_frame; i++) { errors = 0; for (int u = 0; u < sizeof(fsk_ldpc_uw); u++) errors += f->twoframes_hard[i + u] ^ fsk_ldpc_uw[u]; // fprintf(stderr, " errors: %d %d %d\n", i, errors, best_errors); if (errors < best_errors) { best_errors = errors; f->fsk_ldpc_best_location = i; } } if (best_errors <= f->fsk_ldpc_thresh1) { errors = best_errors; next_state = 1; f->fsk_ldpc_baduw = 0; } break; case 1: /* in sync */ assert(f->fsk_ldpc_best_location >= 0); assert(f->fsk_ldpc_best_location < bits_per_frame); /* check UW still OK */ for (int u = 0; u < sizeof(fsk_ldpc_uw); u++) errors += f->twoframes_hard[f->fsk_ldpc_best_location + u] ^ fsk_ldpc_uw[u]; if (errors > f->fsk_ldpc_thresh2) { f->fsk_ldpc_baduw++; if (f->fsk_ldpc_baduw >= f->fsk_ldpc_baduw_thresh) { next_state = 0; } } else f->fsk_ldpc_baduw = 0; break; } int Nerrs_raw = 0, Nerrs_coded = 0, iter = 0, parityCheckCount = 0; if (next_state == 1) { /* We may have a valid frame, based on the number on UW errors. Lets do a * LDPC decode and check the CRC */ uint8_t decoded_codeword[f->ldpc->ldpc_coded_bits_per_frame]; iter = run_ldpc_decoder( f->ldpc, decoded_codeword, &f->twoframes_llr[f->fsk_ldpc_best_location + sizeof(fsk_ldpc_uw)], &parityCheckCount); memcpy(f->rx_payload_bits, decoded_codeword, f->bits_per_modem_frame); /* check CRC */ if (freedv_check_crc16_unpacked(f->rx_payload_bits, f->bits_per_modem_frame)) rx_status |= FREEDV_RX_BITS; else { /* if CRC failed on first frame in packet, this was probably a dud UW * match, so go straight back to searching */ if (f->fsk_ldpc_state == 0) next_state = 0; rx_status |= FREEDV_RX_BIT_ERRORS; } } f->fsk_ldpc_state = next_state; if (f->fsk_ldpc_state == 1) { if (f->test_frames) { /* regenerate tx test frame */ uint8_t tx_frame[bits_per_frame]; memcpy(tx_frame, fsk_ldpc_uw, sizeof(fsk_ldpc_uw)); ofdm_generate_payload_data_bits(tx_frame + sizeof(fsk_ldpc_uw), f->bits_per_modem_frame); int bytes_per_modem_frame = f->bits_per_modem_frame / 8; uint8_t tx_bytes[bytes_per_modem_frame]; freedv_pack(tx_bytes, tx_frame + sizeof(fsk_ldpc_uw), f->bits_per_modem_frame); uint16_t tx_crc16 = freedv_gen_crc16(tx_bytes, bytes_per_modem_frame - 2); uint8_t tx_crc16_bytes[] = {tx_crc16 >> 8, tx_crc16 & 0xff}; freedv_unpack( tx_frame + sizeof(fsk_ldpc_uw) + f->bits_per_modem_frame - 16, tx_crc16_bytes, 16); encode(f->ldpc, tx_frame + sizeof(fsk_ldpc_uw), tx_frame + sizeof(fsk_ldpc_uw) + f->bits_per_modem_frame); /* count uncoded (raw) errors across UW, payload bits, parity bits */ Nerrs_raw = count_errors(tx_frame, f->twoframes_hard + f->fsk_ldpc_best_location, bits_per_frame); f->total_bit_errors += Nerrs_raw; f->total_bits += bits_per_frame; /* count coded errors across just payload bits */ Nerrs_coded = count_errors(tx_frame + sizeof(fsk_ldpc_uw), f->rx_payload_bits, f->bits_per_modem_frame); f->total_bit_errors_coded += Nerrs_coded; f->total_bits_coded += f->bits_per_modem_frame; if (Nerrs_coded) f->total_packet_errors++; f->total_packets++; } /* extract packet sequence numbers optionally placed in byte[0] */ seq = 0; for (int i = 0; i < 8; i++) seq |= f->rx_payload_bits[8 + i] << (7 - i); } if (f->fsk_ldpc_state == 1) rx_status |= FREEDV_RX_SYNC; /* need this set before verbose logging fprintf() */ if (((f->verbose == 1) && (rx_status & FREEDV_RX_BITS)) || (f->verbose == 2)) { fprintf(stderr, "%3d nbits: %3d st: %d uwloc: %3d uwerr: %2d bad_uw: %d snrdB: " "%4.1f eraw: %3d ecdd: %3d " "iter: %3d pcc: %3d seq: %3d rxst: %s\n", ++(f->frames), f->frame_llr_nbits, f->fsk_ldpc_state, f->fsk_ldpc_best_location, errors, f->fsk_ldpc_baduw, (double)f->snr_est, Nerrs_raw, Nerrs_coded, iter, parityCheckCount, seq, rx_sync_flags_to_text[rx_status]); } } else { /* set RX_SYNC flag even if we don't perform frame processing */ if (f->fsk_ldpc_state == 1) rx_status |= FREEDV_RX_SYNC; } return rx_status; } int freedv_comprx_fsk(struct freedv *f, COMP demod_in[]) { /* Varicode and protocol bits */ uint8_t vc_bits[2]; uint8_t proto_bits[3]; short vc_bit; int i; int n_ascii; char ascii_out; int rx_status = 0; if (FDV_MODE_ACTIVE(FREEDV_MODE_2400A, f->mode) || FDV_MODE_ACTIVE(FREEDV_MODE_800XA, f->mode)) { fsk_demod(f->fsk, (uint8_t *)f->tx_bits, demod_in); f->nin = fsk_nin(f->fsk); float EbNodB = f->fsk->stats->snr_est; /* fsk demod actually estimates Eb/No */ f->snr_est = EbNodB + 10.0 * log10f(800.0 / 3000.0); /* so convert to SNR Rb=800, noise B=3000 */ } else { /* 2400B needs real input samples */ int n = fmfsk_nin(f->fmfsk); float demod_in_float[n]; for (i = 0; i < n; i++) { demod_in_float[i] = demod_in[i].real; } fmfsk_demod(f->fmfsk, (uint8_t *)f->tx_bits, demod_in_float); /* The fmfsk modem operates on the baseband output of an analog FM demod so the mapping to SNR in 8k is hard to determine */ f->snr_est = f->fmfsk->snr_mean; f->nin = fmfsk_nin(f->fmfsk); } rx_status = fvhff_deframe_bits(f->deframer, f->rx_payload_bits, proto_bits, vc_bits, (uint8_t *)f->tx_bits); if ((rx_status & FREEDV_RX_SYNC) && (rx_status & FREEDV_RX_BITS)) { /* Decode varicode text */ for (i = 0; i < 2; i++) { /* Note: deframe_bits spits out bits in uint8_ts while varicode_decode * expects shorts */ vc_bit = vc_bits[i]; n_ascii = varicode_decode(&f->varicode_dec_states, &ascii_out, &vc_bit, 1, 1); if (n_ascii && (f->freedv_put_next_rx_char != NULL)) { (*f->freedv_put_next_rx_char)(f->callback_state, ascii_out); } } /* Pass proto bits on down if callback is present */ if (f->freedv_put_next_proto != NULL) { (*f->freedv_put_next_proto)(f->proto_callback_state, (char *)proto_bits); } f->sync = 1; } else f->sync = 0; return rx_status; } int freedv_floatrx(struct freedv *f, short speech_out[], float demod_in[]) { assert(f != NULL); int i; int nin = freedv_nin(f); assert(nin <= f->n_max_modem_samples); COMP rx_fdm[f->n_max_modem_samples]; for (i = 0; i < nin; i++) { rx_fdm[i].real = demod_in[i]; rx_fdm[i].imag = 0; } return freedv_comprx(f, speech_out, rx_fdm); } codec2-1.2.0/src/freedv_mixed_rx.c000066400000000000000000000152601445607075400167760ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_mixed_rx.c AUTHOR......: Jeroen Vreeken & David Rowe DATE CREATED: May 2020 Demo receive program for FreeDV API that demonstrates shows mixed VHF packet data and speech frames. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include "codec2.h" #include "freedv_api.h" #include "modem_stats.h" struct my_callback_state { int calls; FILE *ftxt; }; /* Called when a packet has been received */ void my_datarx(void *callback_state, unsigned char *packet, size_t size) { struct my_callback_state *pstate = (struct my_callback_state *)callback_state; pstate->calls++; if (pstate->ftxt != NULL) { size_t i; fprintf(pstate->ftxt, "data (%zd bytes): ", size); for (i = 0; i < size; i++) { fprintf(pstate->ftxt, "0x%02x ", packet[i]); } fprintf(pstate->ftxt, "\n"); } } /* Called when a new packet can be send */ void my_datatx(void *callback_state, unsigned char *packet, size_t *size) { /* This should not happen while receiving.. */ fprintf(stderr, "datarx callback called, this should not happen!\n"); *size = 0; } int main(int argc, char *argv[]) { FILE *fin, *fout, *ftxt; struct freedv *freedv; int nin, nout, nout_total = 0, frame = 0; struct my_callback_state my_cb_state = {0}; int mode; int use_codecrx, verbose; struct CODEC2 *c2 = NULL; int i; if (argc < 4) { printf( "usage: %s 2400A|2400B|800XA InputModemSpeechFile OutputSpeechRawFile\n" " [--codecrx] [-v]\n", argv[0]); printf("e.g %s 2400A hts1a_fdmdv.raw hts1a_out.raw\n", argv[0]); exit(1); } mode = -1; if (!strcmp(argv[1], "2400A")) mode = FREEDV_MODE_2400A; if (!strcmp(argv[1], "2400B")) mode = FREEDV_MODE_2400B; if (!strcmp(argv[1], "800XA")) mode = FREEDV_MODE_800XA; assert(mode != -1); if (strcmp(argv[2], "-") == 0) fin = stdin; else if ((fin = fopen(argv[2], "rb")) == NULL) { fprintf(stderr, "Error opening input raw modem sample file: %s: %s.\n", argv[2], strerror(errno)); exit(1); } if (strcmp(argv[3], "-") == 0) fout = stdout; else if ((fout = fopen(argv[3], "wb")) == NULL) { fprintf(stderr, "Error opening output speech sample file: %s: %s.\n", argv[3], strerror(errno)); exit(1); } use_codecrx = 0; verbose = 0; if (argc > 4) { for (i = 4; i < argc; i++) { if (strcmp(argv[i], "--codecrx") == 0) { int c2_mode; if ((mode == FREEDV_MODE_700C) || (mode == FREEDV_MODE_700D) || (mode == FREEDV_MODE_800XA)) { c2_mode = CODEC2_MODE_700C; } else { c2_mode = CODEC2_MODE_1300; } use_codecrx = 1; c2 = codec2_create(c2_mode); assert(c2 != NULL); } if (strcmp(argv[i], "-v") == 0) { verbose = 1; } if (strcmp(argv[i], "-vv") == 0) { verbose = 2; } } } freedv = freedv_open(mode); assert(freedv != NULL); freedv_set_verbose(freedv, verbose); short speech_out[freedv_get_n_max_speech_samples(freedv)]; short demod_in[freedv_get_n_max_modem_samples(freedv)]; ftxt = fopen("freedv_rx_log.txt", "wt"); assert(ftxt != NULL); my_cb_state.ftxt = ftxt; freedv_set_callback_data(freedv, my_datarx, my_datatx, &my_cb_state); /* Note we need to work out how many samples demod needs on each call (nin). This is used to adjust for differences in the tx and rx sample clock frequencies. Note also the number of output speech samples is time varying (nout). */ nin = freedv_nin(freedv); while (fread(demod_in, sizeof(short), nin, fin) == nin) { frame++; if (use_codecrx == 0) { /* usual case: use the freedv_api to do everything: speech decoding, * demodulating */ nout = freedv_rx(freedv, speech_out, demod_in); } else { /* demo of codecrx mode - separate demodulation and speech decoding */ int bits_per_codec_frame = freedv_get_bits_per_codec_frame(freedv); int bits_per_modem_frame = freedv_get_bits_per_modem_frame(freedv); int bytes_per_codec_frame = (bits_per_codec_frame + 7) / 8; int bytes_per_modem_frame = (bits_per_modem_frame + 7) / 8; int codec_frames = bits_per_modem_frame / bits_per_codec_frame; int samples_per_frame = codec2_samples_per_frame(c2); unsigned char encoded[bytes_per_codec_frame * codec_frames]; unsigned char rawdata[bytes_per_modem_frame]; nout = 0; /* Use the freedv_api to demodulate only */ int ncodec = freedv_rawdatarx(freedv, rawdata, demod_in); freedv_codec_frames_from_rawdata(freedv, encoded, rawdata); /* decode the speech ourself (or send it to elsewhere, e.g. network) */ if (ncodec) { unsigned char *enc_frame = encoded; short *speech_frame = speech_out; for (i = 0; i < codec_frames; i++) { codec2_decode(c2, speech_frame, enc_frame); enc_frame += bytes_per_codec_frame; speech_frame += samples_per_frame; nout += samples_per_frame; } } } fprintf(ftxt, "Demod of %d samples resulted %d speech samples\n", nin, nout); if (nout == 0) { /* We did not get any audio. This means the modem is (probably) synced, but a data frame was received Fill in the 'blanks' use by data frames with silence */ nout = freedv_get_n_speech_samples(freedv); memset(speech_out, 0, nout * sizeof(short)); } nin = freedv_nin(freedv); fwrite(speech_out, sizeof(short), nout, fout); nout_total += nout; /* if this is in a pipeline, we probably don't want the usual buffering to occur */ if (fout == stdout) fflush(stdout); } fclose(ftxt); fclose(fin); fclose(fout); fprintf(stderr, "frames decoded: %d output speech samples: %d, data packets: %d\n", frame, nout_total, my_cb_state.calls); freedv_close(freedv); return 0; } codec2-1.2.0/src/freedv_mixed_tx.c000066400000000000000000000250711445607075400170010ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_mixed_tx.c AUTHOR......: Jeroen Vreeken & David Rowe DATE CREATED: May 2020 Demo transmit program for FreeDV API that demonstrates shows mixed VHF packet data and speech frames. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include #include #include "codec2.h" #include "freedv_api.h" /********************************************************** Encoding an ITU callsign (and 4 bit secondary station ID to a valid MAC address. http://dmlinking.net/eth_ar.html */ // Lookup table for valid callsign characters static char alnum2code[37] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 0}; // Encode a callsign and ssid into a valid MAC address static int eth_ar_call2mac(uint8_t mac[6], char *callsign, int ssid, bool multicast) { uint64_t add = 0; int i; if (ssid > 15 || ssid < 0) return -1; for (i = 7; i >= 0; i--) { char c; if (i >= strlen(callsign)) { c = 0; } else { c = toupper(callsign[i]); } int j; for (j = 0; j < sizeof(alnum2code); j++) { if (alnum2code[j] == c) break; } if (j == sizeof(alnum2code)) return -1; add *= 37; add += j; } mac[0] = ((add >> (40 - 6)) & 0xc0) | (ssid << 2) | 0x02 | multicast; mac[1] = (add >> 32) & 0xff; mac[2] = (add >> 24) & 0xff; mac[3] = (add >> 16) & 0xff; mac[4] = (add >> 8) & 0xff; mac[5] = add & 0xff; return 0; } /********************************************************** Data channel callback functions */ struct my_callback_state { int calls; unsigned char mac[6]; }; /* Called when a packet has been received Should not be called in this tx-only test program */ void my_datarx(void *callback_state, unsigned char *packet, size_t size) { /* This should not happen while sending... */ fprintf(stderr, "datarx callback called, this should not happen!\n"); } /* Called when a new packet can be send. callback_state Private state variable, not touched by freedv. packet Data array where new packet data is expected size Available size in packet. On return the actual size of the packet */ void my_datatx(void *callback_state, unsigned char *packet, size_t *size) { static int data_type; struct my_callback_state *my_cb_state = callback_state; my_cb_state->calls++; /* Data could come from a network interface, here we just make up some */ if (data_type % 4 == 1) { /* Generate a packet with simple test pattern (counting */ /* Send a packet with data */ int i; /* Destination: broadcast */ memset(packet, 0xff, 6); /* Source: our eth_ar encoded callsign+ssid */ memcpy(packet + 6, my_cb_state->mac, 6); /* Ether type: experimental (since this is just a test pattern) */ packet[12] = 0x01; packet[13] = 0x01; for (i = 0; i < 64; i++) packet[i + 14] = i; *size = i + 14; } else if (data_type % 4 == 2) { /* Generate an FPRS position report */ /* Destination: broadcast */ memset(packet, 0xff, 6); /* Source: our eth_ar encoded callsign+ssid */ memcpy(packet + 6, my_cb_state->mac, 6); /* Ether type: FPRS */ packet[12] = 0x73; packet[13] = 0x70; packet[14] = 0x07; // Position element Lon 86.925026 Lat 27.987850 packet[15] = 0x3d; // packet[16] = 0xd0; packet[17] = 0x37; packet[18] = 0xd0 | 0x08 | 0x01; packet[19] = 0x3e; packet[20] = 0x70; packet[21] = 0x85; *size = 22; } else { /* Set size to zero, the freedv api will insert a header frame This is useful for identifying ourselves */ *size = 0; } data_type++; } /* Determine the amount of 'energy' in the samples by squaring them This is not a perfect VAD as noise may trigger it, but works well for demonstrations. */ static float samples_get_energy(short *samples, int nr) { float e = 0; int i; for (i = 0; i < nr; i++) { e += (float)(samples[i] * samples[i]) / (8192); } e /= nr; return e; } int main(int argc, char *argv[]) { FILE *fin, *fout; short *speech_in; short *mod_out; struct freedv *freedv; struct my_callback_state my_cb_state; int mode; int n_speech_samples; int n_nom_modem_samples; char *callsign = "NOCALL"; int ssid = 0; bool multicast = false; int use_codectx; struct CODEC2 *c2; int i; float data_threshold = 15; if (argc < 4) { printf( "usage: %s 2400A|2400B|800XA InputRawSpeechFile OutputModemRawFile\n" " [--codectx] [--callsign callsign] [--ssid ssid] [--mac-multicast " "0|1] [--data-threshold val]\n", argv[0]); printf("e.g %s 2400A hts1a.raw hts1a_fdmdv.raw\n", argv[0]); exit(1); } mode = -1; if (!strcmp(argv[1], "2400A")) mode = FREEDV_MODE_2400A; if (!strcmp(argv[1], "2400B")) mode = FREEDV_MODE_2400B; if (!strcmp(argv[1], "800XA")) mode = FREEDV_MODE_800XA; if (mode == -1) { fprintf(stderr, "Error in mode: %s\n", argv[1]); exit(0); } if (strcmp(argv[2], "-") == 0) fin = stdin; else if ((fin = fopen(argv[2], "rb")) == NULL) { fprintf(stderr, "Error opening input raw speech sample file: %s: %s.\n", argv[2], strerror(errno)); exit(1); } if (strcmp(argv[3], "-") == 0) fout = stdout; else if ((fout = fopen(argv[3], "wb")) == NULL) { fprintf(stderr, "Error opening output modem sample file: %s: %s.\n", argv[3], strerror(errno)); exit(1); } use_codectx = 0; if (argc > 4) { for (i = 4; i < argc; i++) { if (strcmp(argv[i], "--codectx") == 0) { int c2_mode; if ((mode == FREEDV_MODE_700C) || (mode == FREEDV_MODE_700D) || (mode == FREEDV_MODE_800XA)) { c2_mode = CODEC2_MODE_700C; } else { c2_mode = CODEC2_MODE_1300; } use_codectx = 1; c2 = codec2_create(c2_mode); assert(c2 != NULL); } if (strcmp(argv[i], "--callsign") == 0) { callsign = argv[i + 1]; } if (strcmp(argv[i], "--ssid") == 0) { ssid = atoi(argv[i + 1]); } if (strcmp(argv[i], "--mac-multicast") == 0) { multicast = atoi(argv[i + 1]); } if (strcmp(argv[i], "--data-threshold") == 0) { data_threshold = atof(argv[i + 1]); } } } freedv = freedv_open(mode); assert(freedv != NULL); /* Generate our address */ eth_ar_call2mac(my_cb_state.mac, callsign, ssid, multicast); freedv_set_data_header(freedv, my_cb_state.mac); freedv_set_verbose(freedv, 1); n_speech_samples = freedv_get_n_speech_samples(freedv); n_nom_modem_samples = freedv_get_n_nom_modem_samples(freedv); speech_in = (short *)malloc(sizeof(short) * n_speech_samples); assert(speech_in != NULL); mod_out = (short *)malloc(sizeof(short) * n_nom_modem_samples); assert(mod_out != NULL); // fprintf(stderr, "n_speech_samples: %d n_nom_modem_samples: %d\n", // n_speech_samples, n_nom_modem_samples); /* set up callback for data packets */ freedv_set_callback_data(freedv, my_datarx, my_datatx, &my_cb_state); /* OK main loop */ while (fread(speech_in, sizeof(short), n_speech_samples, fin) == n_speech_samples) { if (use_codectx == 0) { /* Use the freedv_api to do everything: speech encoding, modulating */ float energy = samples_get_energy(speech_in, n_speech_samples); /* Is the audio fragment quiet? */ if (energy < data_threshold) { /* Insert a frame with data instead of speech */ freedv_datatx(freedv, mod_out); } else { /* transmit voice frame */ freedv_tx(freedv, mod_out, speech_in); } } else { /* Use the freedv_api to do the modem part, encode ourselves - First encode the frames - Get activity from codec2 api - Based on activity either send encoded voice or data */ int bits_per_codec_frame = freedv_get_bits_per_codec_frame(freedv); int bits_per_modem_frame = freedv_get_bits_per_modem_frame(freedv); int bytes_per_codec_frame = (bits_per_codec_frame + 7) / 8; int bytes_per_modem_frame = (bits_per_modem_frame + 7) / 8; int codec_frames = bits_per_modem_frame / bits_per_codec_frame; int samples_per_frame = codec2_samples_per_frame(c2); unsigned char encoded[bytes_per_codec_frame * codec_frames]; unsigned char rawdata[bytes_per_modem_frame]; unsigned char *enc_frame = encoded; short *speech_frame = speech_in; float energy = 0; /* Encode the speech ourself (or get it from elsewhere, e.g. network) */ for (i = 0; i < codec_frames; i++) { codec2_encode(c2, enc_frame, speech_frame); energy += codec2_get_energy(c2, enc_frame); enc_frame += bytes_per_codec_frame; speech_frame += samples_per_frame; } energy /= codec_frames; /* Is the audio fragment quiet? */ if (energy < data_threshold) { /* Insert a frame with data instead of speech */ freedv_datatx(freedv, mod_out); } else { /* Use the freedv_api to modulate already encoded frames */ freedv_rawdata_from_codec_frames(freedv, rawdata, encoded); freedv_rawdatatx(freedv, mod_out, rawdata); } } fwrite(mod_out, sizeof(short), n_nom_modem_samples, fout); /* if this is in a pipeline, we probably don't want the usual buffering to occur */ if (fout == stdout) fflush(stdout); } free(speech_in); free(mod_out); freedv_close(freedv); fclose(fin); fclose(fout); fclose(stdin); fclose(stderr); return 0; } codec2-1.2.0/src/freedv_rx.c000066400000000000000000000253161445607075400156130ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_rx.c AUTHOR......: David Rowe DATE CREATED: August 2014 Demo/development receive program for FreeDV API functions: Example usage (all one line): $ cd codec2/build_linux/src $ ./freedv_tx 1600 ../../raw/ve9qrp_10s.raw - | ./freedv_rx 1600 - - | aplay -f S16 \*---------------------------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include "freedv_api.h" #include "modem_stats.h" #include "reliable_text.h" #define NDISCARD \ 5 /* BER measure optionally discards first few frames after sync */ /* optioal call-back function for received txt characters */ void my_put_next_rx_char(void *states, char c) { fprintf((FILE *)states, "%c", c); } static FILE *reliable_tx_fp; reliable_text_t reliable_text_obj; void on_reliable_text_rx(reliable_text_t rt, const char *txt_ptr, int length, void *state) { fprintf(reliable_tx_fp, "%s\n", txt_ptr); reliable_text_reset(reliable_text_obj); } int main(int argc, char *argv[]) { FILE *fin, *fout, *ftxt_rx = NULL; int nin, nout, nout_total = 0, frame = 0; struct MODEM_STATS stats = {0}; int mode; int sync; float snr_est; float clock_offset, foff; int use_testframes, verbose, discard, use_complex, use_reliabletext; int use_squelch; float squelch = 0; struct freedv *freedv; int use_passthroughgain; float passthroughgain = 0.0; char f2020[80] = {0}; #ifdef __LPCNET__ sprintf(f2020, "|2020|2020B"); #endif if (argc < 4) { helpmsg: fprintf( stderr, "usage: %s [options] 1600|700C|700D|700E|2400A|2400B|800XA%s " "InputModemSpeechFile OutputSpeechRawFile\n" "\n" " --discard Reset BER stats on loss of sync, helps us " "get sensible BER results\n" " --reliabletext txt Send 'txt' using reliable text protocol\n" " --txtrx filename Store reliable text output to filename\n" " --squelch leveldB Set squelch level\n" " --testframes testframes assumed to be received instead " "of coded speech, measure BER/PER\n" " --usecomplex Complex int16 input samples (default real " "int16)\n" " -v Verbose level 1\n" " --vv Verbose level 2\n" "\n", argv[0], f2020); fprintf(stderr, "example: $ %s 1600 hts1a_fdmdv.raw hts1a_out.raw \n", argv[0]); exit(1); } use_testframes = verbose = discard = use_complex = use_squelch = 0; use_reliabletext = 0; use_passthroughgain = 0; int o = 0; int opt_idx = 0; while (o != -1) { static struct option long_opts[] = { {"discard", no_argument, 0, 'i'}, {"help", no_argument, 0, 'h'}, {"reliabletext", no_argument, 0, 'r'}, {"squelch", required_argument, 0, 's'}, {"txtrx", required_argument, 0, 'x'}, {"testframes", no_argument, 0, 't'}, {"usecomplex", no_argument, 0, 'c'}, {"verbose1", no_argument, 0, 'v'}, {"vv", no_argument, 0, 'w'}, {"passthroughgain", required_argument, 0, 'p'}, {0, 0, 0, 0}}; o = getopt_long(argc, argv, "idhr:s:x:tcvwp:", long_opts, &opt_idx); switch (o) { case 'i': discard = 1; break; case 'c': use_complex = 1; break; case 'p': use_passthroughgain = 1; passthroughgain = atof(optarg); break; case 'r': use_reliabletext = 1; break; case 's': use_squelch = 1; squelch = atof(optarg); break; case 't': use_testframes = 1; break; case 'x': ftxt_rx = fopen(optarg, "wt"); assert(ftxt_rx != NULL); break; case 'v': verbose = 1; break; case 'w': verbose = 2; break; case 'h': case '?': goto helpmsg; break; } } int dx = optind; if ((argc - dx) < 3) { fprintf(stderr, "too few arguments.\n"); goto helpmsg; } mode = -1; if (!strcmp(argv[dx], "1600")) mode = FREEDV_MODE_1600; if (!strcmp(argv[dx], "700C")) mode = FREEDV_MODE_700C; if (!strcmp(argv[dx], "700D")) mode = FREEDV_MODE_700D; if (!strcmp(argv[dx], "700E")) mode = FREEDV_MODE_700E; if (!strcmp(argv[dx], "2400A")) mode = FREEDV_MODE_2400A; if (!strcmp(argv[dx], "2400B")) mode = FREEDV_MODE_2400B; if (!strcmp(argv[dx], "800XA")) mode = FREEDV_MODE_800XA; #ifdef __LPCNET__ if (!strcmp(argv[dx], "2020")) mode = FREEDV_MODE_2020; if (!strcmp(argv[dx], "2020B")) mode = FREEDV_MODE_2020B; #endif if (mode == -1) { fprintf(stderr, "Error in mode: %s\n", argv[dx]); exit(1); } if (strcmp(argv[dx + 1], "-") == 0) fin = stdin; else if ((fin = fopen(argv[dx + 1], "rb")) == NULL) { fprintf(stderr, "Error opening input raw modem sample file: %s: %s.\n", argv[dx + 1], strerror(errno)); exit(1); } if (strcmp(argv[dx + 2], "-") == 0) fout = stdout; else if ((fout = fopen(argv[dx + 2], "wb")) == NULL) { fprintf(stderr, "Error opening output speech sample file: %s: %s.\n", argv[dx + 2], strerror(errno)); exit(1); } freedv = freedv_open(mode); assert(freedv != NULL); /* set up a few options, calling these is optional -------------------------*/ freedv_set_test_frames(freedv, use_testframes); if (verbose == 2) freedv_set_verbose(freedv, verbose); if (use_squelch) { freedv_set_snr_squelch_thresh(freedv, squelch); freedv_set_squelch_en(freedv, true); } if (use_passthroughgain) freedv_passthrough_gain(freedv, passthroughgain); /* install optional handler for received txt characters */ if (ftxt_rx != NULL) { if (use_reliabletext) { reliable_tx_fp = ftxt_rx; reliable_text_obj = reliable_text_create(); assert(reliable_text_obj != NULL); reliable_text_set_string(reliable_text_obj, "AB1CDEF", 7); // not used reliable_text_use_with_freedv(reliable_text_obj, freedv, on_reliable_text_rx, NULL); } else { freedv_set_callback_txt(freedv, my_put_next_rx_char, NULL, ftxt_rx); } } /* note use of API functions to tell us how big our buffers need to be -----*/ short speech_out[freedv_get_n_max_speech_samples(freedv)]; short demod_in[freedv_get_n_max_modem_samples(freedv)]; /* We need to work out how many samples the demod needs on each call (nin). This is used to adjust for differences in the tx and rx sample clock frequencies. Note also the number of output speech samples "nout" is time varying. */ nin = freedv_nin(freedv); while (fread(demod_in, sizeof(short), nin, fin) == nin) { frame++; if (use_complex) { /* exercise the complex version of the API (useful for testing 700D which has a different code path for short samples) */ COMP demod_in_complex[nin]; for (int i = 0; i < nin; i++) { demod_in_complex[i].real = (float)demod_in[i]; demod_in_complex[i].imag = 0.0f; } nout = freedv_comprx(freedv, speech_out, demod_in_complex); } else { // most common interface - real shorts in, real shorts out nout = freedv_rx(freedv, speech_out, demod_in); } /* IMPORTANT: don't forget to do this in the while loop to ensure we fread the correct number of samples: ie update "nin" before every call to freedv_rx()/freedv_comprx() */ nin = freedv_nin(freedv); /* optionally read some stats */ freedv_get_modem_stats(freedv, &sync, &snr_est); freedv_get_modem_extended_stats(freedv, &stats); int total_bit_errors = freedv_get_total_bit_errors(freedv); clock_offset = stats.clock_offset; foff = stats.foff; if (discard && (sync == 0)) { // discard BER results if we get out of sync, helps us get sensible BER // results freedv_set_total_bits(freedv, 0); freedv_set_total_bit_errors(freedv, 0); freedv_set_total_bits_coded(freedv, 0); freedv_set_total_bit_errors_coded(freedv, 0); } fwrite(speech_out, sizeof(short), nout, fout); nout_total += nout; if (verbose == 1) { fprintf(stderr, "frame: %d sync: %d nin: %d snr: %3.2f dB bit errors: %d " "clock_off: %6.2f foff: %5.2f\n", frame, sync, nin, snr_est, total_bit_errors, clock_offset, foff); } /* if using pipes we probably don't want the usual buffering to occur */ if (fout == stdout) fflush(stdout); } if (ftxt_rx != NULL) fclose(ftxt_rx); fclose(fin); fclose(fout); fprintf(stderr, "frames decoded: %d output speech samples: %d\n", frame, nout_total); /* finish up with some stats */ if (freedv_get_test_frames(freedv)) { int Tbits = freedv_get_total_bits(freedv); int Terrs = freedv_get_total_bit_errors(freedv); float uncoded_ber = (float)Terrs / Tbits; fprintf(stderr, "BER......: %5.4f Tbits: %8d Terrs: %8d\n", (double)uncoded_ber, Tbits, Terrs); if ((mode == FREEDV_MODE_700D) || (mode == FREEDV_MODE_700E) || (mode == FREEDV_MODE_2020) || (mode == FREEDV_MODE_2020B)) { int Tbits_coded = freedv_get_total_bits_coded(freedv); int Terrs_coded = freedv_get_total_bit_errors_coded(freedv); float coded_ber = (float)Terrs_coded / Tbits_coded; fprintf(stderr, "Coded BER: %5.4f Tbits: %8d Terrs: %8d\n", (double)coded_ber, Tbits_coded, Terrs_coded); int Tpackets = freedv_get_total_packets(freedv); int Tpacket_errors = freedv_get_total_packet_errors(freedv); float per = (float)Tpacket_errors / Tpackets; fprintf(stderr, "Coded PER: %5.4f Tpkts: %8d Tpers: %8d\n", per, Tpackets, Tpacket_errors); /* set return code for Ctest */ if ((uncoded_ber < 0.1f) && (coded_ber < 0.01f)) return 0; else return 1; } } if (use_reliabletext) { reliable_text_destroy(reliable_text_obj); } freedv_close(freedv); return 0; } codec2-1.2.0/src/freedv_tx.c000066400000000000000000000151001445607075400156030ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_tx.c AUTHOR......: David Rowe DATE CREATED: August 2014 Demo transmit program for FreeDV API functions. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include "freedv_api.h" #include "reliable_text.h" struct my_callback_state { char tx_str[80]; char *ptx_str; int calls; }; char my_get_next_tx_char(void *callback_state) { struct my_callback_state *pstate = (struct my_callback_state *)callback_state; char c = *pstate->ptx_str++; if (*pstate->ptx_str == 0) { pstate->ptx_str = pstate->tx_str; } return c; } void on_reliable_text_rx(reliable_text_t rt, const char *txt_ptr, int length, void *state) { // empty since we don't expect to receive anything in this program. } int main(int argc, char *argv[]) { FILE *fin, *fout; struct freedv *freedv; int mode; int use_testframes, use_clip, use_txbpf, use_reliabletext; char *callsign = ""; reliable_text_t reliable_text_obj; char f2020[80] = {0}; #ifdef __LPCNET__ sprintf(f2020, "|2020|2020B"); #endif if (argc < 4) { helpmsg: fprintf(stderr, "usage: %s [options] 1600|700C|700D|700E|2400A|2400B|800XA%s " "InputRawSpeechFile OutputModemRawFile\n" "\n" " --clip 0|1 Clipping (compression) of modem output " "samples for reduced PAPR\n" " and higher average power\n" " --reliabletext txt Send 'txt' using reliable text protocol\n" " --testframes Send testframe instead of coded speech. " "Number of testsframes depends on\n" " length of speech input file\n" " --txbpf 0|1 Bandpass filter\n" "\n", argv[0], f2020); fprintf(stderr, "example: $ %s 1600 hts1a.raw hts1a_fdmdv.raw\n", argv[0]); exit(1); } use_testframes = 0; use_clip = 0; use_txbpf = 1; use_reliabletext = 0; int o = 0; int opt_idx = 0; while (o != -1) { static struct option long_opts[] = { {"clip", required_argument, 0, 'l'}, {"help", no_argument, 0, 'h'}, {"reliabletext", required_argument, 0, 'r'}, {"testframes", no_argument, 0, 't'}, {"txbpf", required_argument, 0, 'b'}, {0, 0, 0, 0}}; o = getopt_long(argc, argv, "l:dhr:tb:", long_opts, &opt_idx); switch (o) { case 'b': use_txbpf = atoi(optarg); break; case 'l': use_clip = atoi(optarg); break; case 'r': use_reliabletext = 1; callsign = optarg; break; case 't': use_testframes = 1; break; case 'h': case '?': goto helpmsg; break; } } int dx = optind; if ((argc - dx) < 3) { fprintf(stderr, "too few arguments.\n"); goto helpmsg; } mode = -1; if (!strcmp(argv[dx], "1600")) mode = FREEDV_MODE_1600; if (!strcmp(argv[dx], "700C")) mode = FREEDV_MODE_700C; if (!strcmp(argv[dx], "700D")) mode = FREEDV_MODE_700D; if (!strcmp(argv[dx], "700E")) mode = FREEDV_MODE_700E; if (!strcmp(argv[dx], "2400A")) mode = FREEDV_MODE_2400A; if (!strcmp(argv[dx], "2400B")) mode = FREEDV_MODE_2400B; if (!strcmp(argv[dx], "800XA")) mode = FREEDV_MODE_800XA; #ifdef __LPCNET__ if (!strcmp(argv[dx], "2020")) mode = FREEDV_MODE_2020; if (!strcmp(argv[dx], "2020B")) mode = FREEDV_MODE_2020B; #endif if (mode == -1) { fprintf(stderr, "Error in mode: %s\n", argv[dx]); exit(1); } if (strcmp(argv[dx + 1], "-") == 0) fin = stdin; else if ((fin = fopen(argv[dx + 1], "rb")) == NULL) { fprintf(stderr, "Error opening input raw speech sample file: %s: %s.\n", argv[dx + 1], strerror(errno)); exit(1); } if (strcmp(argv[dx + 2], "-") == 0) fout = stdout; else if ((fout = fopen(argv[dx + 2], "wb")) == NULL) { fprintf(stderr, "Error opening output modem sample file: %s: %s.\n", argv[dx + 2], strerror(errno)); exit(1); } freedv = freedv_open(mode); assert(freedv != NULL); /* these are all optional ------------------ */ freedv_set_test_frames(freedv, use_testframes); freedv_set_clip(freedv, use_clip); freedv_set_tx_bpf(freedv, use_txbpf); freedv_set_verbose(freedv, 1); freedv_set_eq(freedv, true); /* for 700C/D/E & 800XA */ if (use_reliabletext) { reliable_text_obj = reliable_text_create(); assert(reliable_text_obj != NULL); reliable_text_set_string(reliable_text_obj, callsign, strlen(callsign)); reliable_text_use_with_freedv(reliable_text_obj, freedv, on_reliable_text_rx, NULL); } else { /* set up callback for txt msg chars */ struct my_callback_state my_cb_state; sprintf(my_cb_state.tx_str, "cq cq cq hello world\r"); my_cb_state.ptx_str = my_cb_state.tx_str; my_cb_state.calls = 0; freedv_set_callback_txt(freedv, NULL, &my_get_next_tx_char, &my_cb_state); } /* handy functions to set buffer sizes, note tx/modulator always returns freedv_get_n_nom_modem_samples() (unlike rx side) */ int n_speech_samples = freedv_get_n_speech_samples(freedv); short speech_in[n_speech_samples]; int n_nom_modem_samples = freedv_get_n_nom_modem_samples(freedv); short mod_out[n_nom_modem_samples]; /* OK main loop --------------------------------------- */ while (fread(speech_in, sizeof(short), n_speech_samples, fin) == n_speech_samples) { freedv_tx(freedv, mod_out, speech_in); fwrite(mod_out, sizeof(short), n_nom_modem_samples, fout); /* if using pipes we don't want the usual buffering to occur */ if (fout == stdout) fflush(stdout); } freedv_close(freedv); if (use_reliabletext) reliable_text_destroy(reliable_text_obj); fclose(fin); fclose(fout); return 0; } codec2-1.2.0/src/freedv_vhf_framing.c000066400000000000000000000646021445607075400174510ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: fsk.c AUTHOR......: Brady O'Brien DATE CREATED: 11 February 2016 Framer and deframer for VHF FreeDV modes 'A' and 'B' Currently designed for- * 40ms ota modem frames * 40ms Codec2 1300 frames * 52 bits of Codec2 per frame * 16 bits of unique word per frame * 28 'spare' bits per frame * - 4 spare bits at front and end of frame (8 total) for padding * - 20 'protocol' bits, either for higher layers of 'protocol' or * - 18 'protocol' bits and 2 vericode sidechannel bits \*---------------------------------------------------------------------------*/ /* Copyright (C) 2016 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "freedv_vhf_framing.h" #include #include #include #include #include #include "freedv_api_internal.h" /* The voice UW of the VHF type A frame */ static const uint8_t A_uw_v[] = {0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1}; /* The data UW of the VHF type A frame */ static const uint8_t A_uw_d[] = {1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}; /* Blank VHF type A frame */ static const uint8_t A_blank[] = { 1, 0, 1, 0, 0, 1, 1, 1, /* Padding[0:3] Proto[0:3] */ 1, 0, 1, 0, 0, 1, 1, 1, /* Proto[4:11] */ 0, 0, 0, 0, 0, 0, 0, 0, /* Voice[0:7] */ 0, 0, 0, 0, 0, 0, 0, 0, /* Voice[8:15] */ 0, 0, 0, 0, 0, 0, 0, 0, /* Voice[16:23] */ 0, 1, 1, 0, 0, 1, 1, 1, /* UW[0:7] */ 1, 0, 1, 0, 1, 1, 0, 1, /* UW[8:15] */ 0, 0, 0, 0, 0, 0, 0, 0, /* Voice[24:31] */ 0, 0, 0, 0, 0, 0, 0, 0, /* Voice[32:39] */ 0, 0, 0, 0, 0, 0, 0, 0, /* Voice[40:47] */ 0, 0, 0, 0, 0, 0, 1, 0, /* Voice[48:51] Proto[12:15] */ 0, 1, 1, 1, 0, 0, 1, 0}; /* Proto[16:19] Padding[4:7] */ /* Blank VHF type AT (A for TDMA; padding bits not transmitted) frame */ static const uint8_t AT_blank[] = { 0, 1, 1, 1, /* Proto[0:3] */ 1, 0, 1, 0, 0, 1, 1, 1, /* Proto[4:11] */ 0, 0, 0, 0, 0, 0, 0, 0, /* Voice[0:7] */ 0, 0, 0, 0, 0, 0, 0, 0, /* Voice[8:15] */ 0, 0, 0, 0, 0, 0, 0, 0, /* Voice[16:23] */ 0, 1, 1, 0, 0, 1, 1, 1, /* UW[0:7] */ 1, 0, 1, 0, 1, 1, 0, 1, /* UW[8:15] */ 0, 0, 0, 0, 0, 0, 0, 0, /* Voice[24:31] */ 0, 0, 0, 0, 0, 0, 0, 0, /* Voice[32:39] */ 0, 0, 0, 0, 0, 0, 0, 0, /* Voice[40:47] */ 0, 0, 0, 0, 0, 0, 1, 0, /* Voice[48:51] Proto[12:15] */ 0, 1, 1, 1}; /* Proto[16:19] */ /* HF Type B voice UW */ static const uint8_t B_uw_v[] = {0, 1, 1, 0, 0, 1, 1, 1}; /* HF Type B data UW */ static const uint8_t B_uw_d[] = {1, 1, 1, 1, 0, 0, 1, 0}; /* Blank HF type B frame */ static const uint8_t B_blank[] = { 0, 1, 1, 0, 0, 1, 1, 1, /* UW[0:7] */ 0, 0, 0, 0, 0, 0, 0, 0, /* Voice1[0:7] */ 0, 0, 0, 0, 0, 0, 0, 0, /* Voice1[8:15] */ 0, 0, 0, 0, 0, 0, 0, 0, /* Voice1[16:23] */ 0, 0, 0, 0, 0, 0, 0, 0, /* Voice1[24:28] Voice2[0:3] */ 0, 0, 0, 0, 0, 0, 0, 0, /* Voice2[4:11] */ 0, 0, 0, 0, 0, 0, 0, 0, /* Voice2[12:19] */ 0, 0, 0, 0, 0, 0, 0, 0}; /* Voice2[20:28] */ /* States */ #define ST_NOSYNC 0 /* Not synchronized */ #define ST_SYNC 1 /* Synchronized */ /* Get a single bit out of an MSB-first packed byte array */ #define UNPACK_BIT_MSBFIRST(bytes, bitidx) \ ((bytes)[(bitidx) >> 3] >> (7 - ((bitidx)&0x7))) & 0x1 enum frame_payload_type { FRAME_PAYLOAD_TYPE_VOICE, FRAME_PAYLOAD_TYPE_DATA, }; /* Place codec and other bits into a frame */ void fvhff_frame_bits(int frame_type, uint8_t bits_out[], uint8_t codec2_in[], uint8_t proto_in[], uint8_t vc_in[]) { int i, ibit; if (frame_type == FREEDV_VHF_FRAME_A) { /* Fill out frame with blank frame prototype */ for (i = 0; i < 96; i++) bits_out[i] = A_blank[i]; /* Fill in protocol bits, if present */ if (proto_in != NULL) { ibit = 0; /* First half of protocol bits */ /* Extract and place in frame, MSB first */ for (i = 4; i < 16; i++) { bits_out[i] = UNPACK_BIT_MSBFIRST(proto_in, ibit); ibit++; } /* Last set of protocol bits */ for (i = 84; i < 92; i++) { bits_out[i] = UNPACK_BIT_MSBFIRST(proto_in, ibit); ibit++; } } /* Fill in varicode bits, if present */ if (vc_in != NULL) { bits_out[90] = vc_in[0]; bits_out[91] = vc_in[1]; } /* Fill in codec2 bits, present or not */ ibit = 0; for (i = 16; i < 40; i++) { /* First half */ bits_out[i] = UNPACK_BIT_MSBFIRST(codec2_in, ibit); ibit++; } for (i = 56; i < 84; i++) { /* Second half */ bits_out[i] = UNPACK_BIT_MSBFIRST(codec2_in, ibit); ibit++; } } else if (frame_type == FREEDV_HF_FRAME_B) { /* Pointers to both c2 frames so the bit unpack macro works */ uint8_t *codec2_in1 = &codec2_in[0]; uint8_t *codec2_in2 = &codec2_in[4]; /* Fill out frame with blank prototype */ for (i = 0; i < 64; i++) bits_out[i] = B_blank[i]; /* Fill out first codec2 block */ ibit = 0; for (i = 8; i < 36; i++) { bits_out[i] = UNPACK_BIT_MSBFIRST(codec2_in1, ibit); ibit++; } /* Fill out second codec2 block */ ibit = 0; for (i = 36; i < 64; i++) { bits_out[i] = UNPACK_BIT_MSBFIRST(codec2_in2, ibit); ibit++; } } else if (frame_type == FREEDV_VHF_FRAME_AT) { /* Fill out frame with blank frame prototype */ for (i = 0; i < 88; i++) bits_out[i] = AT_blank[i]; /* Fill in protocol bits, if present */ if (proto_in != NULL) { ibit = 0; /* First half of protocol bits */ /* Extract and place in frame, MSB first */ for (i = 0; i < 12; i++) { bits_out[i] = UNPACK_BIT_MSBFIRST(proto_in, ibit); ibit++; } /* Last set of protocol bits */ for (i = 80; i < 88; i++) { bits_out[i] = UNPACK_BIT_MSBFIRST(proto_in, ibit); ibit++; } } /* Fill in varicode bits, if present */ if (vc_in != NULL) { bits_out[86] = vc_in[0]; bits_out[87] = vc_in[1]; } /* Fill in codec2 bits, present or not */ ibit = 0; for (i = 12; i < 36; i++) { /* First half */ bits_out[i] = UNPACK_BIT_MSBFIRST(codec2_in, ibit); ibit++; } for (i = 52; i < 80; i++) { /* Second half */ bits_out[i] = UNPACK_BIT_MSBFIRST(codec2_in, ibit); ibit++; } } } /* Place data and other bits into a frame */ void fvhff_frame_data_bits(struct freedv_vhf_deframer *def, int frame_type, uint8_t bits_out[]) { int i, ibit; if (frame_type == FREEDV_VHF_FRAME_A) { uint8_t data[8]; int end_bits; int from_bit; int bcast_bit; int crc_bit; /* Fill out frame with blank frame prototype */ for (i = 0; i < 4; i++) bits_out[i] = A_blank[i]; for (i = 92; i < 96; i++) bits_out[i] = A_blank[i]; /* UW data */ for (i = 0; i < 16; i++) bits_out[40 + i] = A_uw_d[i]; if (def->fdc) freedv_data_channel_tx_frame(def->fdc, data, 8, &from_bit, &bcast_bit, &crc_bit, &end_bits); else return; bits_out[4] = from_bit; bits_out[5] = bcast_bit; bits_out[6] = 0; /* unused */ bits_out[7] = 0; /* unused */ /* Fill in data bits */ ibit = 0; for (i = 8; i < 40; i++) { /* First half */ bits_out[i] = UNPACK_BIT_MSBFIRST(data, ibit); ibit++; } for (i = 56; i < 88; i++) { /* Second half */ bits_out[i] = UNPACK_BIT_MSBFIRST(data, ibit); ibit++; } for (i = 0; i < 4; i++) bits_out[88 + i] = (end_bits >> (3 - i)) & 0x1; } else if (frame_type == FREEDV_HF_FRAME_B) { uint8_t data[6]; int end_bits; int from_bit; int bcast_bit; int crc_bit; /* Fill out frame with blank prototype */ for (i = 0; i < 64; i++) bits_out[i] = B_blank[i]; /* UW data */ for (i = 0; i < 8; i++) bits_out[0 + i] = B_uw_d[i]; if (def->fdc) freedv_data_channel_tx_frame(def->fdc, data, 6, &from_bit, &bcast_bit, &crc_bit, &end_bits); else return; bits_out[56] = from_bit; bits_out[57] = bcast_bit; bits_out[58] = crc_bit; bits_out[59] = 0; /* unused */ /* Fill in data bits */ ibit = 0; for (i = 8; i < 56; i++) { /* First half */ bits_out[i] = UNPACK_BIT_MSBFIRST(data, ibit); ibit++; } for (i = 0; i < 4; i++) bits_out[60 + i] = (end_bits >> (3 - i)) & 0x1; } } /* Init and allocate memory for a freedv-vhf framer/deframer */ struct freedv_vhf_deframer *fvhff_create_deframer(uint8_t frame_type, int enable_bit_flip) { struct freedv_vhf_deframer *deframer; uint8_t *bits, *invbits; int frame_size; int uw_size; assert((frame_type == FREEDV_VHF_FRAME_A) || (frame_type == FREEDV_HF_FRAME_B)); /* It's a Type A frame */ if (frame_type == FREEDV_VHF_FRAME_A) { frame_size = 96; uw_size = 16; } else if (frame_type == FREEDV_HF_FRAME_B) { frame_size = 64; uw_size = 8; } else { return NULL; } /* Allocate memory for the thing */ deframer = malloc(sizeof(struct freedv_vhf_deframer)); if (deframer == NULL) return NULL; /* Allocate the not-bit buffer */ if (enable_bit_flip) { invbits = malloc(sizeof(uint8_t) * frame_size); if (invbits == NULL) { free(deframer); return NULL; } } else { invbits = NULL; } /* Allocate the bit buffer */ bits = malloc(sizeof(uint8_t) * frame_size); if (bits == NULL) { free(deframer); return NULL; } deframer->bits = bits; deframer->invbits = invbits; deframer->ftype = frame_type; deframer->state = ST_NOSYNC; deframer->bitptr = 0; deframer->last_uw = 0; deframer->miss_cnt = 0; deframer->frame_size = frame_size; deframer->uw_size = uw_size; deframer->on_inv_bits = 0; deframer->sym_size = 1; deframer->ber_est = 0; deframer->total_uw_bits = 0; deframer->total_uw_err = 0; deframer->fdc = NULL; return deframer; } /* Get size of frame in bits */ int fvhff_get_frame_size(struct freedv_vhf_deframer *def) { return def->frame_size; } /* Codec2 size in bytes */ int fvhff_get_codec2_size(struct freedv_vhf_deframer *def) { if (def->ftype == FREEDV_VHF_FRAME_A) { return 7; } else if (def->ftype == FREEDV_HF_FRAME_B) { return 8; } else { return 0; } } /* Protocol bits in bits */ int fvhff_get_proto_size(struct freedv_vhf_deframer *def) { if (def->ftype == FREEDV_VHF_FRAME_A) { return 20; } else if (def->ftype == FREEDV_HF_FRAME_B) { return 0; } else { return 0; } } /* Varicode bits in bits */ int fvhff_get_varicode_size(struct freedv_vhf_deframer *def) { if (def->ftype == FREEDV_VHF_FRAME_A) { return 2; } else if (def->ftype == FREEDV_HF_FRAME_B) { return 0; } else { return 0; } } void fvhff_destroy_deframer(struct freedv_vhf_deframer *def) { freedv_data_channel_destroy(def->fdc); free(def->bits); free(def); } int fvhff_synchronized(struct freedv_vhf_deframer *def) { return (def->state) == ST_SYNC; } /* Search for a complete UW in a buffer of bits */ size_t fvhff_search_uw(const uint8_t bits[], size_t nbits, const uint8_t uw[], size_t uw_len, size_t *delta_out, size_t bits_per_sym) { size_t ibits, iuw; size_t delta_min = uw_len; size_t delta; size_t offset_min = 0; /* Walk through buffer bits */ for (ibits = 0; ibits < nbits - uw_len; ibits += bits_per_sym) { delta = 0; for (iuw = 0; iuw < uw_len; iuw++) { if (bits[ibits + iuw] != uw[iuw]) delta++; } if (delta < delta_min) { delta_min = delta; offset_min = ibits; } } if (delta_out != NULL) *delta_out = delta_min; return offset_min; } /* See if the UW is where it should be, to within a tolerance, in a bit buffer */ static int fvhff_match_uw(struct freedv_vhf_deframer *def, uint8_t bits[], int tol, int *rdiff, enum frame_payload_type *pt) { int frame_type = def->ftype; int bitptr = def->bitptr; int frame_size = def->frame_size; int uw_len = def->uw_size; int iuw, ibit; const uint8_t *uw[2]; int uw_offset; int diff[2] = {0, 0}; int i; int match[2]; int r; /* defaults to make compiler happy on -O3 */ *pt = FRAME_PAYLOAD_TYPE_VOICE; *rdiff = 0; /* Set up parameters for the standard type of frame */ if (frame_type == FREEDV_VHF_FRAME_A) { uw[0] = A_uw_v; uw[1] = A_uw_d; uw_len = 16; uw_offset = 40; } else if (frame_type == FREEDV_HF_FRAME_B) { uw[0] = B_uw_v; uw[1] = B_uw_d; uw_len = 8; uw_offset = 0; } else { return 0; } /* Check both the voice and data UWs */ for (i = 0; i < 2; i++) { /* Start bit pointer where UW should be */ ibit = bitptr + uw_offset; if (ibit >= frame_size) ibit -= frame_size; /* Walk through and match bits in frame with bits of UW */ for (iuw = 0; iuw < uw_len; iuw++) { if (bits[ibit] != uw[i][iuw]) diff[i]++; ibit++; if (ibit >= frame_size) ibit = 0; } match[i] = diff[i] <= tol; // fprintf(stderr, "diff[%d]: %d tol: %d\n", i, diff[i], tol); } /* Pick the best matching UW */ if (diff[0] < diff[1]) { r = match[0]; *rdiff = diff[0]; *pt = FRAME_PAYLOAD_TYPE_VOICE; } else { r = match[1]; *rdiff = diff[1]; *pt = FRAME_PAYLOAD_TYPE_DATA; } return r; } static void fvhff_extract_frame_voice(struct freedv_vhf_deframer *def, uint8_t bits[], uint8_t codec2_out[], uint8_t proto_out[], uint8_t vc_out[]) { int frame_type = def->ftype; int bitptr = def->bitptr; int frame_size = def->frame_size; int iframe, ibit; if (frame_type == FREEDV_VHF_FRAME_A) { /* Extract codec2 bits */ memset(codec2_out, 0, 7); ibit = 0; /* Extract and pack first half, MSB first */ iframe = bitptr + 16; if (iframe >= frame_size) iframe -= frame_size; for (; ibit < 24; ibit++) { codec2_out[ibit >> 3] |= (bits[iframe] & 0x1) << (7 - (ibit & 0x7)); iframe++; if (iframe >= frame_size) iframe = 0; } /* Extract and pack last half, MSB first */ iframe = bitptr + 56; if (iframe >= frame_size) iframe -= frame_size; for (; ibit < 52; ibit++) { codec2_out[ibit >> 3] |= (bits[iframe] & 0x1) << (7 - (ibit & 0x7)); iframe++; if (iframe >= frame_size) iframe = 0; } /* Extract varicode bits, if wanted */ if (vc_out != NULL) { iframe = bitptr + 90; if (iframe >= frame_size) iframe -= frame_size; vc_out[0] = bits[iframe]; iframe++; vc_out[1] = bits[iframe]; } /* Extract protocol bits, if proto is passed through */ if (proto_out != NULL) { /* Clear protocol bit array */ memset(proto_out, 0, 3); ibit = 0; /* Extract and pack first half, MSB first */ iframe = bitptr + 4; if (iframe >= frame_size) iframe -= frame_size; for (; ibit < 12; ibit++) { proto_out[ibit >> 3] |= (bits[iframe] & 0x1) << (7 - (ibit & 0x7)); iframe++; if (iframe >= frame_size) iframe = 0; } /* Extract and pack last half, MSB first */ iframe = bitptr + 84; if (iframe >= frame_size) iframe -= frame_size; for (; ibit < 20; ibit++) { proto_out[ibit >> 3] |= (bits[iframe] & 0x1) << (7 - (ibit & 0x7)); iframe++; if (iframe >= frame_size) iframe = 0; } } } else if (frame_type == FREEDV_HF_FRAME_B) { /* Pointers to both c2 frames */ uint8_t *codec2_out1 = &codec2_out[0]; uint8_t *codec2_out2 = &codec2_out[4]; /* Extract codec2 bits */ memset(codec2_out, 0, 8); ibit = 0; /* Extract and pack first c2 frame, MSB first */ iframe = bitptr + 8; if (iframe >= frame_size) iframe -= frame_size; for (; ibit < 28; ibit++) { codec2_out1[ibit >> 3] |= (bits[iframe] & 0x1) << (7 - (ibit & 0x7)); iframe++; if (iframe >= frame_size) iframe = 0; } /* Extract and pack second c2 frame, MSB first */ iframe = bitptr + 36; ibit = 0; if (iframe >= frame_size) iframe -= frame_size; for (; ibit < 28; ibit++) { codec2_out2[ibit >> 3] |= (bits[iframe] & 0x1) << (7 - (ibit & 0x7)); iframe++; if (iframe >= frame_size) iframe = 0; } } else if (frame_type == FREEDV_VHF_FRAME_AT) { /* Extract codec2 bits */ memset(codec2_out, 0, 7); ibit = 0; /* Extract and pack first half, MSB first */ iframe = bitptr + 12; if (iframe >= frame_size) iframe -= frame_size; for (; ibit < 24; ibit++) { codec2_out[ibit >> 3] |= (bits[iframe] & 0x1) << (7 - (ibit & 0x7)); iframe++; if (iframe >= frame_size) iframe = 0; } /* Extract and pack last half, MSB first */ iframe = bitptr + 52; if (iframe >= frame_size) iframe -= frame_size; for (; ibit < 52; ibit++) { codec2_out[ibit >> 3] |= (bits[iframe] & 0x1) << (7 - (ibit & 0x7)); iframe++; if (iframe >= frame_size) iframe = 0; } /* Extract varicode bits, if wanted */ if (vc_out != NULL) { iframe = bitptr + 86; if (iframe >= frame_size) iframe -= frame_size; vc_out[0] = bits[iframe]; iframe++; vc_out[1] = bits[iframe]; } /* Extract protocol bits, if proto is passed through */ if (proto_out != NULL) { /* Clear protocol bit array */ memset(proto_out, 0, 3); ibit = 0; /* Extract and pack first half, MSB first */ iframe = bitptr + 4; if (iframe >= frame_size) iframe -= frame_size; for (; ibit < 12; ibit++) { proto_out[ibit >> 3] |= (bits[iframe] & 0x1) << (7 - (ibit & 0x7)); iframe++; if (iframe >= frame_size) iframe = 0; } /* Extract and pack last half, MSB first */ iframe = bitptr + 84; if (iframe >= frame_size) iframe -= frame_size; for (; ibit < 20; ibit++) { proto_out[ibit >> 3] |= (bits[iframe] & 0x1) << (7 - (ibit & 0x7)); iframe++; if (iframe >= frame_size) iframe = 0; } } } } static void fvhff_extract_frame_data(struct freedv_vhf_deframer *def, uint8_t bits[]) { int frame_type = def->ftype; int bitptr = def->bitptr; int frame_size = def->frame_size; int iframe, ibit; if (frame_type == FREEDV_VHF_FRAME_A) { uint8_t data[8]; int end_bits = 0; int from_bit; int bcast_bit; iframe = bitptr + 4; if (iframe >= frame_size) iframe -= frame_size; from_bit = bits[iframe]; iframe++; if (iframe >= frame_size) iframe -= frame_size; bcast_bit = bits[iframe]; /* Extract data bits */ memset(data, 0, 8); ibit = 0; /* Extract and pack first half, MSB first */ iframe = bitptr + 8; if (iframe >= frame_size) iframe -= frame_size; for (; ibit < 32; ibit++) { data[ibit >> 3] |= (bits[iframe] & 0x1) << (7 - (ibit & 0x7)); iframe++; if (iframe >= frame_size) iframe = 0; } /* Extract and pack last half, MSB first */ iframe = bitptr + 56; if (iframe >= frame_size) iframe -= frame_size; for (; ibit < 64; ibit++) { data[ibit >> 3] |= (bits[iframe] & 0x1) << (7 - (ibit & 0x7)); iframe++; if (iframe >= frame_size) iframe = 0; } /* Extract endbits value, MSB first*/ iframe = bitptr + 88; ibit = 0; if (iframe >= frame_size) iframe -= frame_size; for (; ibit < 4; ibit++) { end_bits |= (bits[iframe] & 0x1) << (3 - (ibit)); iframe++; if (iframe >= frame_size) iframe = 0; } if (def->fdc) { freedv_data_channel_rx_frame(def->fdc, data, 8, from_bit, bcast_bit, 0, end_bits); } } else if (frame_type == FREEDV_HF_FRAME_B) { uint8_t data[6]; int end_bits = 0; int from_bit; int bcast_bit; int crc_bit; ibit = 0; memset(data, 0, 6); /* Extract and pack first c2 frame, MSB first */ iframe = bitptr + 8; if (iframe >= frame_size) iframe -= frame_size; for (; ibit < 48; ibit++) { data[ibit >> 3] |= (bits[iframe] & 0x1) << (7 - (ibit & 0x7)); iframe++; if (iframe >= frame_size) iframe = 0; } iframe = bitptr + 56; if (iframe >= frame_size) iframe -= frame_size; from_bit = bits[iframe]; iframe++; if (iframe >= frame_size) iframe -= frame_size; bcast_bit = bits[iframe]; iframe++; if (iframe >= frame_size) iframe -= frame_size; crc_bit = bits[iframe]; /* Extract endbits value, MSB first*/ iframe = bitptr + 60; ibit = 0; if (iframe >= frame_size) iframe -= frame_size; for (; ibit < 4; ibit++) { end_bits |= (bits[iframe] & 0x1) << (3 - (ibit)); iframe++; if (iframe >= frame_size) iframe = 0; } if (def->fdc) { freedv_data_channel_rx_frame(def->fdc, data, 6, from_bit, bcast_bit, crc_bit, end_bits); } } } static void fvhff_extract_frame(struct freedv_vhf_deframer *def, uint8_t bits[], uint8_t codec2_out[], uint8_t proto_out[], uint8_t vc_out[], enum frame_payload_type pt) { switch (pt) { case FRAME_PAYLOAD_TYPE_VOICE: fvhff_extract_frame_voice(def, bits, codec2_out, proto_out, vc_out); break; case FRAME_PAYLOAD_TYPE_DATA: fvhff_extract_frame_data(def, bits); break; } } /* * Try to find the UW and extract codec/proto/vc bits in def->frame_size bits */ int fvhff_deframe_bits(struct freedv_vhf_deframer *def, uint8_t codec2_out[], uint8_t proto_out[], uint8_t vc_out[], uint8_t bits_in[]) { uint8_t *strbits = def->bits; uint8_t *invbits = def->invbits; uint8_t *bits; int on_inv_bits = def->on_inv_bits; int frame_type = def->ftype; int state = def->state; int bitptr = def->bitptr; int last_uw = def->last_uw; int miss_cnt = def->miss_cnt; int frame_size = def->frame_size; int uw_size = def->uw_size; int uw_diff; int i; int uw_first_tol; int uw_sync_tol; int miss_tol; int extracted_frame = 0; enum frame_payload_type pt = FRAME_PAYLOAD_TYPE_VOICE; /* Possibly set up frame-specific params here */ if (frame_type == FREEDV_VHF_FRAME_A) { uw_first_tol = 1; /* The UW bit-error tolerance for the first frame */ uw_sync_tol = 3; /* The UW bit error tolerance for frames after sync */ miss_tol = 4; /* How many UWs may be missed before going into the de-synced state */ } else if (frame_type == FREEDV_HF_FRAME_B) { uw_first_tol = 0; /* The UW bit-error tolerance for the first frame */ uw_sync_tol = 1; /* The UW bit error tolerance for frames after sync */ miss_tol = 3; /* How many UWs may be missed before going into the de-synced state */ } else { return 0; } /* Skip N bits for multi-bit symbol modems */ for (i = 0; i < frame_size; i++) { /* Put a bit in the buffer */ strbits[bitptr] = bits_in[i]; /* If we're checking the inverted bitstream, put a bit in it */ if (invbits != NULL) invbits[bitptr] = bits_in[i] ? 0 : 1; bitptr++; if (bitptr >= frame_size) bitptr -= frame_size; def->bitptr = bitptr; /* Enter state machine */ if (state == ST_SYNC) { /* Already synchronized, just wait till UW is back where it should be */ last_uw++; if (invbits != NULL) { if (on_inv_bits) bits = invbits; else bits = strbits; } else { bits = strbits; } /* UW should be here. We're sunk, so deframe anyway */ if (last_uw == frame_size) { last_uw = 0; if (!fvhff_match_uw(def, bits, uw_sync_tol, &uw_diff, &pt)) miss_cnt++; else miss_cnt = 0; /* If we go over the miss tolerance, go into no-sync */ if (miss_cnt > miss_tol) { state = ST_NOSYNC; } /* Extract the bits */ extracted_frame = 1; fvhff_extract_frame(def, bits, codec2_out, proto_out, vc_out, pt); /* Update BER estimate */ def->ber_est = (.995 * def->ber_est) + (.005 * ((float)uw_diff) / ((float)uw_size)); def->total_uw_bits += uw_size; def->total_uw_err += uw_diff; } /* Not yet sunk */ } else { /* It's a sync!*/ if (invbits != NULL) { if (fvhff_match_uw(def, invbits, uw_first_tol, &uw_diff, &pt)) { state = ST_SYNC; last_uw = 0; miss_cnt = 0; extracted_frame = 1; on_inv_bits = 1; fvhff_extract_frame(def, invbits, codec2_out, proto_out, vc_out, pt); /* Update BER estimate */ def->ber_est = (.995 * def->ber_est) + (.005 * ((float)uw_diff) / ((float)uw_size)); def->total_uw_bits += uw_size; def->total_uw_err += uw_diff; } } if (fvhff_match_uw(def, strbits, uw_first_tol, &uw_diff, &pt)) { state = ST_SYNC; last_uw = 0; miss_cnt = 0; extracted_frame = 1; on_inv_bits = 0; fvhff_extract_frame(def, strbits, codec2_out, proto_out, vc_out, pt); /* Update BER estimate */ def->ber_est = (.995 * def->ber_est) + (.005 * ((float)uw_diff) / ((float)uw_size)); def->total_uw_bits += uw_size; def->total_uw_err += uw_diff; } } } def->state = state; def->last_uw = last_uw; def->miss_cnt = miss_cnt; def->on_inv_bits = on_inv_bits; /* return sync state and presence of extracted voice bits. only sync for data frames, they are already handled by callback */ return (extracted_frame ? FREEDV_RX_SYNC : 0) | (pt == FRAME_PAYLOAD_TYPE_VOICE ? FREEDV_RX_BITS : 0); } codec2-1.2.0/src/freedv_vhf_framing.h000066400000000000000000000077441445607075400174620ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_vhf_framing.h AUTHOR......: Brady O'Brien DATE CREATED: 11 February 2016 Framer and deframer for VHF FreeDV modes 'A' and 'B' Currently designed for- * 40ms ota modem frames * 40ms Codec2 1300 frames * 52 bits of Codec2 per frame * 16 bits of unique word per frame * 28 'spare' bits per frame * - 4 spare bits at front and end of frame (8 total) for padding * - 20 'protocol' bits, either for higher layers of 'protocol' or * - 18 'protocol' bits and 2 vericode sidechannel bits \*---------------------------------------------------------------------------*/ /* Copyright (C) 2016 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef _FREEDV_VHF_FRAMING_H #define _FREEDV_VHF_FRAMING_H #include #include "freedv_data_channel.h" /* Standard frame type */ #define FREEDV_VHF_FRAME_A 1 /* 2400A/B Frame */ #define FREEDV_HF_FRAME_B 2 /* 800XA Frame */ #define FREEDV_VHF_FRAME_AT 3 /* 4800T Frame */ struct freedv_vhf_deframer { int ftype; /* Type of frame to be looking for */ int state; /* State of deframer */ uint8_t *bits; /* Bits currently being decanted */ uint8_t *invbits; /* Inversion of bits currently being decanted, for FMFSK */ int bitptr; /* Pointer into circular bit buffer */ int miss_cnt; /* How many UWs have been missed */ int last_uw; /* How many bits since the last UW? */ int frame_size; /* How big is a frame? */ int uw_size; /* How big is the UW */ int on_inv_bits; /* Are we using the inverted bits? */ int sym_size; /* How many bits in a modem symbol */ float ber_est; /* Bit error rate estimate */ int total_uw_bits; /* Total RX-ed bits of UW */ int total_uw_err; /* Total errors in UW bits */ struct freedv_data_channel *fdc; }; /* Init and allocate memory for a freedv-vhf framer/deframer */ struct freedv_vhf_deframer *fvhff_create_deframer(uint8_t frame_type, int enable_bit_flip); /* Get size of various frame parameters */ /* Frame size in bits */ int fvhff_get_frame_size(struct freedv_vhf_deframer *def); /* Codec2 size in bytes */ int fvhff_get_codec2_size(struct freedv_vhf_deframer *def); /* Protocol bits in bits */ int fvhff_get_proto_size(struct freedv_vhf_deframer *def); /* Varicode bits in bits */ int fvhff_get_varicode_size(struct freedv_vhf_deframer *def); /* Free the memory used by a freedv-vhf framer/deframer */ void fvhff_destroy_deframer(struct freedv_vhf_deframer *def); /* Place codec and other bits into a frame */ void fvhff_frame_bits(int frame_type, uint8_t bits_out[], uint8_t codec2_in[], uint8_t proto_in[], uint8_t vc_in[]); void fvhff_frame_data_bits(struct freedv_vhf_deframer *def, int frame_type, uint8_t bits_out[]); /* Find and extract frames from a stream of bits */ int fvhff_deframe_bits(struct freedv_vhf_deframer *def, uint8_t codec2_out[], uint8_t proto_out[], uint8_t vc_out[], uint8_t bits_in[]); /* Is the de-framer synchronized? */ int fvhff_synchronized(struct freedv_vhf_deframer *def); /* Search for a complete UW in a buffer of bits */ size_t fvhff_search_uw(const uint8_t bits[], size_t nbits, const uint8_t uw[], size_t uw_len, size_t *delta_out, size_t bits_per_sym); #endif //_FREEDV_VHF_FRAMING_H codec2-1.2.0/src/fsk.c000066400000000000000000000767161445607075400144240ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: fsk.c AUTHOR......: Brady O'Brien & David Rowe DATE CREATED: 7 January 2016 C Implementation of 2/4FSK modulator/demodulator, based on octave/fsk_lib.m \*---------------------------------------------------------------------------*/ /* Copyright (C) 2016-2020 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ /*---------------------------------------------------------------------------*\ DEFINES \*---------------------------------------------------------------------------*/ /* Define this to enable EbNodB estimate */ /* This needs square roots, may take more cpu time than it's worth */ #define EST_EBNO /* This is a flag for the freq. estimator to use a precomputed/rt computed hann window table On platforms with slow cosf, this will produce a substantial speedup at the cost of a small amount of memory */ #define USE_HANN_TABLE /* This flag turns on run-time hann table generation. If USE_HANN_TABLE is unset, this flag has no effect. If USE_HANN_TABLE is set and this flag is set, the hann table will be allocated and generated when fsk_init or fsk_init_hbr is called. If this flag is not set, a hann function table of size fsk->Ndft MUST be provided. On small platforms, this can be used with a precomputed table to save memory at the cost of flash space. */ #define GENERATE_HANN_TABLE_RUNTIME /* Turn off table generation if on cortex M4 to save memory */ #ifdef CORTEX_M4 #undef USE_HANN_TABLE #endif /*---------------------------------------------------------------------------*\ INCLUDES \*---------------------------------------------------------------------------*/ #include "fsk.h" #include #include #include #include #include "comp_prim.h" #include "kiss_fftr.h" #include "modem_probe.h" /*---------------------------------------------------------------------------*\ FUNCTIONS \*---------------------------------------------------------------------------*/ static void stats_init(struct FSK *fsk); #ifdef USE_HANN_TABLE /* This is used by fsk_create and fsk_create_hbr to generate a hann function table */ static void fsk_generate_hann_table(struct FSK *fsk) { int Ndft = fsk->Ndft; size_t i; for (i = 0; i < Ndft; i++) { fsk->hann_table[i] = 0.5 - 0.5 * cosf(2.0 * M_PI * (float)i / (float)(Ndft - 1)); } } #endif /*---------------------------------------------------------------------------*\ FUNCTION....: fsk_create_core AUTHOR......: Brady O'Brien DATE CREATED: 7 January 2016 In this version of the demod the standard/hbr modes have been largely combined at they shared so much common code. The fsk_create/fsk_create_hbr function interface has been retained to maximise compatibility with existing applications. \*---------------------------------------------------------------------------*/ struct FSK *fsk_create_core(int Fs, int Rs, int M, int P, int Nsym, int f1_tx, int tone_spacing) { struct FSK *fsk; int i; /* Check configuration validity */ assert(Fs > 0); assert(Rs > 0); assert(P > 0); assert(Nsym > 0); /* Ts (Fs/Rs) must be an integer */ assert((Fs % Rs) == 0); /* Ts/P (Fs/Rs/P) must be an integer */ assert(((Fs / Rs) % P) == 0); /* If P is too low we don't have a good choice of timing offsets to choose * from */ assert(P >= 4); assert(M == 2 || M == 4); fsk = (struct FSK *)calloc(1, sizeof(struct FSK)); assert(fsk != NULL); // Need enough bins to within 10% of tone centre float bin_width_Hz = 0.1 * Rs; float Ndft = (float)Fs / bin_width_Hz; Ndft = pow(2.0, ceil(log2(Ndft))); /* Set constant config parameters */ fsk->Fs = Fs; fsk->Rs = Rs; fsk->Ts = Fs / Rs; fsk->burst_mode = 0; fsk->P = P; fsk->Nsym = Nsym; fsk->N = fsk->Ts * fsk->Nsym; fsk->Ndft = Ndft; fsk->tc = 0.1; fsk->Nmem = fsk->N + (2 * fsk->Ts); fsk->f1_tx = f1_tx; fsk->tone_spacing = tone_spacing; fsk->nin = fsk->N; fsk->lock_nin = 0; fsk->mode = M == 2 ? MODE_2FSK : MODE_4FSK; fsk->Nbits = M == 2 ? fsk->Nsym : fsk->Nsym * 2; fsk->est_min = 0; fsk->est_max = Fs; fsk->est_space = 0.75 * Rs; fsk->freq_est_type = 0; // printf("C.....: M: %d Fs: %d Rs: %d Ts: %d nsym: %d nbit: %d N: %d Ndft: %d // fmin: %d fmax: %d\n", // M, fsk->Fs, fsk->Rs, fsk->Ts, fsk->Nsym, fsk->Nbits, fsk->N, // fsk->Ndft, fsk->est_min, fsk->est_max); /* Set up rx state */ for (i = 0; i < M; i++) fsk->phi_c[i] = comp_exp_j(0); fsk->f_dc = (COMP *)malloc(M * fsk->Nmem * sizeof(COMP)); assert(fsk->f_dc != NULL); for (i = 0; i < M * fsk->Nmem; i++) fsk->f_dc[i] = comp0(); fsk->fft_cfg = kiss_fft_alloc(Ndft, 0, NULL, NULL); assert(fsk->fft_cfg != NULL); fsk->Sf = (float *)malloc(sizeof(float) * fsk->Ndft); assert(fsk->Sf != NULL); for (i = 0; i < Ndft; i++) fsk->Sf[i] = 0; #ifdef USE_HANN_TABLE #ifdef GENERATE_HANN_TABLE_RUNTIME fsk->hann_table = (float *)malloc(sizeof(float) * fsk->Ndft); assert(fsk->hann_table != NULL); fsk_generate_hann_table(fsk); #else fsk->hann_table = NULL; #endif #endif fsk->norm_rx_timing = 0; /* Set up tx state */ fsk->tx_phase_c = comp_exp_j(0); /* Set up demod stats */ fsk->EbNodB = 0; for (i = 0; i < M; i++) fsk->f_est[i] = 0; fsk->ppm = 0; fsk->stats = (struct MODEM_STATS *)malloc(sizeof(struct MODEM_STATS)); assert(fsk->stats != NULL); stats_init(fsk); fsk->normalise_eye = 1; return fsk; } /*---------------------------------------------------------------------------* \ FUNCTION....: fsk_create AUTHOR......: Brady O'Brien DATE CREATED: 7 January 2016 Create and initialize an instance of the FSK modem. Returns a pointer to the modem state/config struct. One modem config struct may be used for both mod and demod. If you are not intending to use the modulation functions, you can set f1_tx to FSK_NONE. \*---------------------------------------------------------------------------*/ struct FSK *fsk_create(int Fs, int Rs, int M, int tx_f1, int tx_fs) { return fsk_create_core(Fs, Rs, M, FSK_DEFAULT_P, FSK_DEFAULT_NSYM, tx_f1, tx_fs); } /*---------------------------------------------------------------------------*\ FUNCTION....: fsk_create_hbr AUTHOR......: Brady O'Brien DATE CREATED: 11 February 2016 Alternate version of create allows user defined oversampling P and averaging window Nsym. In the current version of the demod it's simply an alias for the default core function. P is the oversampling rate of the internal demod processing, which happens at Rs*P Hz. We filter the tones at P different timing offsets, and choose the best one. P should be >=8, so we have a choice of at least 8 timing offsets. This may require some adjustment of Fs and Rs, as Fs/Rs/P must be an integer. Nsym is the number of symbols we average demod parameters like symbol timing over. \*---------------------------------------------------------------------------*/ struct FSK *fsk_create_hbr(int Fs, int Rs, int M, int P, int Nsym, int f1_tx, int tone_spacing) { return fsk_create_core(Fs, Rs, M, P, Nsym, f1_tx, tone_spacing); } /*---------------------------------------------------------------------------*\ FUNCTION....: fsk_destroy AUTHOR......: Brady O'Brien DATE CREATED: 11 February 2016 Call this to free all memory and shut down the modem. \*---------------------------------------------------------------------------*/ void fsk_destroy(struct FSK *fsk) { free(fsk->Sf); free(fsk->f_dc); free(fsk->fft_cfg); free(fsk->stats); free(fsk->hann_table); free(fsk); } /*---------------------------------------------------------------------------*\ FUNCTION....: fsk_mod AUTHOR......: Brady O'Brien DATE CREATED: 11 February 2016 FSK modulator function, real valued output samples with amplitude 2. \*---------------------------------------------------------------------------*/ void fsk_mod(struct FSK *fsk, float fsk_out[], uint8_t tx_bits[], int nbits) { COMP tx_phase_c = fsk->tx_phase_c; /* Current complex TX phase */ int f1_tx = fsk->f1_tx; /* '0' frequency */ int tone_spacing = fsk->tone_spacing; /* space between frequencies */ int Ts = fsk->Ts; /* samples-per-symbol */ int Fs = fsk->Fs; /* sample freq */ int M = fsk->mode; COMP dosc_f[M]; /* phase shift per sample */ COMP dph; /* phase shift of current bit */ size_t i, j, m, bit_i, sym; /* trap these parameters being set to FSK_UNUSED, then calling mod */ assert(f1_tx > 0); assert(tone_spacing > 0); /* Init the per sample phase shift complex numbers */ for (m = 0; m < M; m++) { dosc_f[m] = comp_exp_j(2 * M_PI * ((float)(f1_tx + (tone_spacing * m)) / (float)(Fs))); } bit_i = 0; int nsym = nbits / (M >> 1); for (i = 0; i < nsym; i++) { sym = 0; /* Pack the symbol number from the bit stream */ for (m = M; m >>= 1;) { uint8_t bit = tx_bits[bit_i]; bit = (bit == 1) ? 1 : 0; sym = (sym << 1) | bit; bit_i++; } /* Look up symbol phase shift */ dph = dosc_f[sym]; /* Spin the oscillator for a symbol period */ for (j = 0; j < Ts; j++) { tx_phase_c = cmult(tx_phase_c, dph); fsk_out[i * Ts + j] = 2 * tx_phase_c.real; } } /* Normalize TX phase to prevent drift */ tx_phase_c = comp_normalize(tx_phase_c); /* save TX phase */ fsk->tx_phase_c = tx_phase_c; } /*---------------------------------------------------------------------------*\ FUNCTION....: fsk_mod_c AUTHOR......: Brady O'Brien DATE CREATED: 11 February 2016 FSK modulator function, complex valued output samples with magnitude 1. \*---------------------------------------------------------------------------*/ void fsk_mod_c(struct FSK *fsk, COMP fsk_out[], uint8_t tx_bits[], int nbits) { COMP tx_phase_c = fsk->tx_phase_c; /* Current complex TX phase */ int f1_tx = fsk->f1_tx; /* '0' frequency */ int tone_spacing = fsk->tone_spacing; /* space between frequencies */ int Ts = fsk->Ts; /* samples-per-symbol */ int Fs = fsk->Fs; /* sample freq */ int M = fsk->mode; COMP dosc_f[M]; /* phase shift per sample */ COMP dph; /* phase shift of current bit */ size_t i, j, bit_i, sym; int m; /* trap these parameters being set to FSK_UNUSED, then calling mod */ assert(f1_tx > 0); assert(tone_spacing > 0); /* Init the per sample phase shift complex numbers */ for (m = 0; m < M; m++) { dosc_f[m] = comp_exp_j(2 * M_PI * ((float)(f1_tx + (tone_spacing * m)) / (float)(Fs))); } bit_i = 0; int nsym = nbits / (M >> 1); for (i = 0; i < nsym; i++) { sym = 0; /* Pack the symbol number from the bit stream */ for (m = M; m >>= 1;) { uint8_t bit = tx_bits[bit_i]; bit = (bit == 1) ? 1 : 0; sym = (sym << 1) | bit; bit_i++; } /* Look up symbol phase shift */ dph = dosc_f[sym]; /* Spin the oscillator for a symbol period */ for (j = 0; j < Ts; j++) { tx_phase_c = cmult(tx_phase_c, dph); fsk_out[i * Ts + j] = tx_phase_c; } } /* Normalize TX phase to prevent drift */ tx_phase_c = comp_normalize(tx_phase_c); /* save TX phase */ fsk->tx_phase_c = tx_phase_c; } /*---------------------------------------------------------------------------*\ FUNCTION....: fsk_mod_ext_vco AUTHOR......: David Rowe DATE CREATED: February 2018 Modulator that assume an external VCO. The output is a voltage that changes for each symbol. \*---------------------------------------------------------------------------*/ void fsk_mod_ext_vco(struct FSK *fsk, float vco_out[], uint8_t tx_bits[], int nbits) { int f1_tx = fsk->f1_tx; /* '0' frequency */ int tone_spacing = fsk->tone_spacing; /* space between frequencies */ int Ts = fsk->Ts; /* samples-per-symbol */ int M = fsk->mode; int i, j, m, sym, bit_i; /* trap these parameters being set to FSK_UNUSED, then calling mod */ assert(f1_tx > 0); assert(tone_spacing > 0); bit_i = 0; int nsym = nbits / (M >> 1); for (i = 0; i < nsym; i++) { /* generate the symbol number from the bit stream, e.g. 0,1 for 2FSK, 0,1,2,3 for 4FSK */ sym = 0; /* unpack the symbol number from the bit stream */ for (m = M; m >>= 1;) { uint8_t bit = tx_bits[bit_i]; bit = (bit == 1) ? 1 : 0; sym = (sym << 1) | bit; bit_i++; } /* Map 'sym' to VCO frequency Note: drive is inverted, a higher tone drives VCO voltage lower */ // fprintf(stderr, "i: %d sym: %d freq: %f\n", i, sym, f1_tx + // tone_spacing*(float)sym); for (j = 0; j < Ts; j++) { vco_out[i * Ts + j] = f1_tx + tone_spacing * (float)sym; } } } /*---------------------------------------------------------------------------*\ FUNCTION....: fsk_nin AUTHOR......: Brady O'Brien DATE CREATED: 11 February 2016 Call me before each call to fsk_demod() to determine how many new samples you should pass in. the number of samples will vary due to timing variations. \*---------------------------------------------------------------------------*/ uint32_t fsk_nin(struct FSK *fsk) { return (uint32_t)fsk->nin; } /* * Internal function to estimate the frequencies of the FSK tones. * This is split off because it is fairly complicated, needs a bunch of memory, * and probably takes more cycles than the rest of the demod. Parameters: fsk - * FSK struct from demod containing FSK config fsk_in - block of samples in this * demod cycles, must be nin long freqs - Array for the estimated frequencies M * - number of frequency peaks to find */ void fsk_demod_freq_est(struct FSK *fsk, COMP fsk_in[], float *freqs, int M) { int Ndft = fsk->Ndft; int Fs = fsk->Fs; int nin = fsk->nin; size_t i, j; float hann; float max; int imax; kiss_fft_cfg fft_cfg = fsk->fft_cfg; int freqi[M]; int st, en, f_zero; kiss_fft_cpx *fftin = (kiss_fft_cpx *)malloc(sizeof(kiss_fft_cpx) * Ndft); kiss_fft_cpx *fftout = (kiss_fft_cpx *)malloc(sizeof(kiss_fft_cpx) * Ndft); st = (fsk->est_min * Ndft) / Fs + Ndft / 2; if (st < 0) st = 0; en = (fsk->est_max * Ndft) / Fs + Ndft / 2; if (en > Ndft) en = Ndft; // fprintf(stderr, "min: %d max: %d st: %d en: %d\n", fsk->est_min, // fsk->est_max, st, en); f_zero = (fsk->est_space * Ndft) / Fs; // fprintf(stderr, "fsk->est_space: %d f_zero = %d\n", fsk->est_space, // f_zero); int numffts = floor((float)nin / (Ndft / 2)) - 1; for (j = 0; j < numffts; j++) { int a = j * Ndft / 2; // fprintf(stderr, "numffts: %d j: %d a: %d\n", numffts, (int)j, a); /* Copy FSK buffer into reals of FFT buffer and apply a hann window */ for (i = 0; i < Ndft; i++) { #ifdef USE_HANN_TABLE hann = fsk->hann_table[i]; #else hann = 0.5 - 0.5 * cosf(2.0 * M_PI * (float)i / (float)(fft_samps - 1)); #endif fftin[i].r = hann * fsk_in[i + a].real; fftin[i].i = hann * fsk_in[i + a].imag; } /* Do the FFT */ kiss_fft(fft_cfg, fftin, fftout); /* FFT shift to put DC bin at Ndft/2 */ kiss_fft_cpx tmp; for (i = 0; i < Ndft / 2; i++) { tmp = fftout[i]; fftout[i] = fftout[i + Ndft / 2]; fftout[i + Ndft / 2] = tmp; } /* Find the magnitude^2 of each freq slot */ for (i = 0; i < Ndft; i++) { fftout[i].r = (fftout[i].r * fftout[i].r) + (fftout[i].i * fftout[i].i); } /* Mix back in with the previous fft block */ /* Copy new fft est into imag of fftout for frequency divination below */ float tc = fsk->tc; for (i = 0; i < Ndft; i++) { fsk->Sf[i] = (fsk->Sf[i] * (1 - tc)) + (sqrtf(fftout[i].r) * tc); fftout[i].i = fsk->Sf[i]; } } modem_probe_samp_f("t_Sf", fsk->Sf, Ndft); max = 0; /* Find the M frequency peaks here */ for (i = 0; i < M; i++) { imax = 0; max = 0; for (j = st; j < en; j++) { if (fftout[j].i > max) { max = fftout[j].i; imax = j; } } /* Blank out FMax +/-Fspace/2 */ int f_min, f_max; f_min = imax - f_zero; f_min = f_min < 0 ? 0 : f_min; f_max = imax + f_zero; f_max = f_max > Ndft ? Ndft : f_max; for (j = f_min; j < f_max; j++) fftout[j].i = 0; /* Stick the freq index on the list */ freqi[i] = imax - Ndft / 2; } /* Gnome sort the freq list */ /* My favorite sort of sort*/ i = 1; while (i < M) { if (freqi[i] >= freqi[i - 1]) i++; else { j = freqi[i]; freqi[i] = freqi[i - 1]; freqi[i - 1] = j; if (i > 1) i--; } } /* Convert freqs from indices to frequencies */ for (i = 0; i < M; i++) { freqs[i] = (float)(freqi[i]) * ((float)Fs / (float)Ndft); } /* Search for each tone method 2 - correlate with mask with non-zero entries * at tone spacings ----- */ /* construct mask */ float mask[Ndft]; for (i = 0; i < Ndft; i++) mask[i] = 0.0; for (i = 0; i < 3; i++) mask[i] = 1.0; int bin = 0; for (int m = 1; m <= M - 1; m++) { bin = round((float)m * fsk->tone_spacing * Ndft / Fs) - 1; for (i = bin; i <= bin + 2; i++) mask[i] = 1.0; } int len_mask = bin + 2 + 1; #ifdef MODEMPROBE_ENABLE modem_probe_samp_f("t_mask", mask, len_mask); #endif /* drag mask over Sf, looking for peak in correlation */ int b_max = st; float corr_max = 0.0; float *Sf = fsk->Sf; for (int b = st; b < en - len_mask; b++) { float corr = 0.0; for (i = 0; i < len_mask; i++) corr += mask[i] * Sf[b + i]; if (corr > corr_max) { corr_max = corr; b_max = b; } } float foff = (b_max - Ndft / 2) * Fs / Ndft; // fprintf(stderr, "fsk->tone_spacing: %d\n",fsk->tone_spacing); for (int m = 0; m < M; m++) fsk->f2_est[m] = foff + m * fsk->tone_spacing; #ifdef MODEMPROBE_ENABLE modem_probe_samp_f("t_f2_est", fsk->f2_est, M); #endif free(fftin); free(fftout); } /* core demodulator function */ void fsk_demod_core(struct FSK *fsk, uint8_t rx_bits[], float rx_filt[], COMP fsk_in[]) { int N = fsk->N; int Ts = fsk->Ts; int Rs = fsk->Rs; int Fs = fsk->Fs; int nsym = fsk->Nsym; int nin = fsk->nin; int P = fsk->P; int Nmem = fsk->Nmem; int M = fsk->mode; size_t i, j, m; float ft1; COMP t[M]; /* complex number temps */ COMP t_c; /* another complex temp */ COMP *phi_c = fsk->phi_c; COMP *f_dc = fsk->f_dc; COMP phi_ft; int nold = Nmem - nin; COMP dphift; float rx_timing, norm_rx_timing, old_norm_rx_timing, d_norm_rx_timing, appm; float fc_avg, fc_tx; float meanebno, stdebno, eye_max; int neyesamp, neyeoffset; #ifdef MODEMPROBE_ENABLE #define NMP_NAME 26 char mp_name_tmp[NMP_NAME + 1]; /* Temporary string for modem probe trace names */ #endif /* Estimate tone frequencies */ fsk_demod_freq_est(fsk, fsk_in, fsk->f_est, M); #ifdef MODEMPROBE_ENABLE modem_probe_samp_f("t_f_est", fsk->f_est, M); #endif float *f_est; if (fsk->freq_est_type) f_est = fsk->f2_est; else f_est = fsk->f_est; /* update filter (integrator) memory by shifting in nin samples */ for (m = 0; m < M; m++) { for (i = 0, j = Nmem - nold; i < nold; i++, j++) f_dc[m * Nmem + i] = f_dc[m * Nmem + j]; } /* freq shift down to around DC, ensuring continuous phase from last frame */ COMP dphi_m; for (m = 0; m < M; m++) { dphi_m = comp_exp_j(2 * M_PI * ((f_est[m]) / (float)(Fs))); for (i = nold, j = 0; i < Nmem; i++, j++) { phi_c[m] = cmult(phi_c[m], dphi_m); f_dc[m * Nmem + i] = cmult(fsk_in[j], cconj(phi_c[m])); } phi_c[m] = comp_normalize(phi_c[m]); #ifdef MODEMPROBE_ENABLE snprintf(mp_name_tmp, NMP_NAME, "t_f%zd_dc", m + 1); modem_probe_samp_c(mp_name_tmp, &f_dc[m * Nmem], Nmem); #endif } /* integrate over symbol period at a variety of offsets */ COMP f_int[M][(nsym + 1) * P]; for (i = 0; i < (nsym + 1) * P; i++) { int st = i * Ts / P; int en = st + Ts - 1; for (m = 0; m < M; m++) { f_int[m][i] = comp0(); for (j = st; j <= en; j++) f_int[m][i] = cadd(f_int[m][i], f_dc[m * Nmem + j]); } } #ifdef MODEMPROBE_ENABLE for (m = 0; m < M; m++) { snprintf(mp_name_tmp, NMP_NAME, "t_f%zd_int", m + 1); modem_probe_samp_c(mp_name_tmp, &f_int[m][0], (nsym + 1) * P); } #endif /* Fine Timing Estimation */ /* Apply magic nonlinearity to f1_int and f2_int, shift down to 0, * extract angle */ /* Figure out how much to spin the oscillator to extract magic spectral line */ dphift = comp_exp_j(2 * M_PI * ((float)(Rs) / (float)(P * Rs))); phi_ft.real = 1; phi_ft.imag = 0; t_c = comp0(); for (i = 0; i < (nsym + 1) * P; i++) { /* Get abs^2 of fx_int[i], and add 'em */ ft1 = 0; for (m = 0; m < M; m++) { ft1 += (f_int[m][i].real * f_int[m][i].real) + (f_int[m][i].imag * f_int[m][i].imag); } /* Down shift and accumulate magic line */ t_c = cadd(t_c, fcmult(ft1, phi_ft)); /* Spin the oscillator for the magic line shift */ phi_ft = cmult(phi_ft, dphift); } /* Check for NaNs in the fine timing estimate, return if found */ /* otherwise segfaults happen */ if (isnan(t_c.real) || isnan(t_c.imag)) { return; } /* Get the magic angle */ norm_rx_timing = atan2f(t_c.imag, t_c.real) / (2 * M_PI); rx_timing = norm_rx_timing * (float)P; old_norm_rx_timing = fsk->norm_rx_timing; fsk->norm_rx_timing = norm_rx_timing; /* Estimate sample clock offset */ d_norm_rx_timing = norm_rx_timing - old_norm_rx_timing; /* Filter out big jumps in due to nin change */ if (fabsf(d_norm_rx_timing) < .2) { appm = 1e6 * d_norm_rx_timing / (float)nsym; fsk->ppm = .9 * fsk->ppm + .1 * appm; } /* Figure out how many samples are needed the next modem cycle */ /* Unless we're in burst mode or nin locked */ if (!fsk->burst_mode && !fsk->lock_nin) { if (norm_rx_timing > 0.25) fsk->nin = N + Ts / 4; else if (norm_rx_timing < -0.25) fsk->nin = N - Ts / 4; else fsk->nin = N; } modem_probe_samp_f("t_norm_rx_timing", &(norm_rx_timing), 1); modem_probe_samp_i("t_nin", &(fsk->nin), 1); /* Re-sample the integrators with linear interpolation magic */ int low_sample = (int)floorf(rx_timing); float fract = rx_timing - (float)low_sample; int high_sample = (int)ceilf(rx_timing); /* Vars for finding the max-of-4 for each bit */ float tmax[M]; #ifdef EST_EBNO meanebno = 0; stdebno = 0; #endif float rx_nse_pow = 1E-12; float rx_sig_pow = 0.0; for (i = 0; i < nsym; i++) { /* resample at ideal sampling instant */ int st = (i + 1) * P; for (m = 0; m < M; m++) { t[m] = fcmult(1 - fract, f_int[m][st + low_sample]); t[m] = cadd(t[m], fcmult(fract, f_int[m][st + high_sample])); /* Figure mag^2 of each resampled fx_int */ tmax[m] = (t[m].real * t[m].real) + (t[m].imag * t[m].imag); } /* hard decision decoding of bits */ float max = tmax[0]; /* Maximum for figuring correct symbol */ float min = tmax[0]; int sym = 0; /* Index of maximum */ for (m = 0; m < M; m++) { if (tmax[m] > max) { max = tmax[m]; sym = m; } if (tmax[m] < min) { min = tmax[m]; } } if (rx_bits != NULL) { /* Get bits for 2FSK and 4FSK */ if (M == 2) { rx_bits[i] = sym == 1; /* 2FSK. 1 bit per symbol */ } else if (M == 4) { rx_bits[(i * 2) + 1] = (sym & 0x1); /* 4FSK. 2 bits per symbol */ rx_bits[(i * 2)] = (sym & 0x2) >> 1; } } /* Optionally output filter magnitudes for soft decision/LLR calculation. Update SNRest always as this is a useful alternative to the earlier EbNo estimator below */ float sum = 0.0; for (m = 0; m < M; m++) { if (rx_filt != NULL) rx_filt[m * nsym + i] = sqrtf(tmax[m]); sum += tmax[m]; } rx_sig_pow += max; rx_nse_pow += (sum - max) / (M - 1); /* Accumulate resampled int magnitude for EbNodB estimation */ /* Standard deviation is calculated by algorithm devised by crafty soviets */ #ifdef EST_EBNO /* Accumulate the square of the sampled value */ ft1 = max; stdebno += ft1; /* Figure the abs value of the max tone */ meanebno += sqrtf(ft1); #endif } fsk->rx_sig_pow = rx_sig_pow = rx_sig_pow / nsym; fsk->rx_nse_pow = rx_nse_pow = rx_nse_pow / nsym; fsk->v_est = sqrt(rx_sig_pow - rx_nse_pow); fsk->SNRest = rx_sig_pow / rx_nse_pow; #ifdef EST_EBNO /* Calculate mean for EbNodB estimation */ meanebno = meanebno / (float)nsym; /* Calculate the std. dev for EbNodB estimate */ stdebno = (stdebno / (float)nsym) - (meanebno * meanebno); /* trap any negative numbers to avoid NANs flowing through */ if (stdebno > 0.0) { stdebno = sqrt(stdebno); } else { stdebno = 0.0; } fsk->EbNodB = -6 + (20 * log10f((1e-6 + meanebno) / (1e-6 + stdebno))); #else fsk->EbNodB = 1; #endif /* Write some statistics to the stats struct */ /* Save clock offset in ppm */ fsk->stats->clock_offset = fsk->ppm; /* Calculate and save SNR from EbNodB estimate */ fsk->stats->snr_est = .5 * fsk->stats->snr_est + .5 * fsk->EbNodB; //+ 10*log10f(((float)Rs)/((float)Rs*M)); /* Save rx timing */ fsk->stats->rx_timing = (float)rx_timing; /* Estimate and save frequency offset */ fc_avg = fc_tx = 0.0; for (int m = 0; m < M; m++) { fc_avg += f_est[m] / M; fc_tx += (fsk->f1_tx + m * fsk->tone_spacing) / M; } fsk->stats->foff = fc_avg - fc_tx; /* Take a sample for the eye diagrams ---------------------------------- */ /* due to oversample rate P, we have too many samples for eye trace. So lets output a decimated version. We use 2P as we want two symbols worth of samples in trace */ #ifndef __EMBEDDED__ int neyesamp_dec = ceil(((float)P * 2) / MODEM_STATS_EYE_IND_MAX); neyesamp = (P * 2) / neyesamp_dec; assert(neyesamp <= MODEM_STATS_EYE_IND_MAX); fsk->stats->neyesamp = neyesamp; neyeoffset = high_sample + 1; int eye_traces = MODEM_STATS_ET_MAX / M; int ind; fsk->stats->neyetr = fsk->mode * eye_traces; for (i = 0; i < eye_traces; i++) { for (m = 0; m < M; m++) { for (j = 0; j < neyesamp; j++) { /* 2*P*i...........: advance two symbols for next trace neyeoffset......: centre trace on ideal timing offset, peak eye opening j*neweyesamp_dec: For 2*P>MODEM_STATS_EYE_IND_MAX advance through integrated samples newamp_dec at a time so we dont overflow rx_eye[][] */ ind = 2 * P * (i + 1) + neyeoffset + j * neyesamp_dec; assert((i * M + m) < MODEM_STATS_ET_MAX); assert(ind >= 0); assert(ind < (nsym + 1) * P); fsk->stats->rx_eye[i * M + m][j] = cabsolute(f_int[m][ind]); } } } if (fsk->normalise_eye) { eye_max = 0; /* Normalize eye to +/- 1 */ for (i = 0; i < M * eye_traces; i++) for (j = 0; j < neyesamp; j++) if (fabsf(fsk->stats->rx_eye[i][j]) > eye_max) eye_max = fabsf(fsk->stats->rx_eye[i][j]); for (i = 0; i < M * eye_traces; i++) for (j = 0; j < neyesamp; j++) fsk->stats->rx_eye[i][j] = fsk->stats->rx_eye[i][j] / eye_max; } fsk->stats->nr = 0; fsk->stats->Nc = 0; for (i = 0; i < M; i++) fsk->stats->f_est[i] = f_est[i]; #endif // !__EMBEDDED__ /* Dump some internal samples */ modem_probe_samp_f("t_EbNodB", &(fsk->EbNodB), 1); modem_probe_samp_f("t_ppm", &(fsk->ppm), 1); modem_probe_samp_f("t_rx_timing", &(rx_timing), 1); } /*---------------------------------------------------------------------------*\ FUNCTION....: fsk_demod AUTHOR......: Brady O'Brien DATE CREATED: 11 February 2016 FSK demodulator functions: fsk_demod...: complex samples in, bits out fsk_demos_sd: complex samples in, soft decision symbols out \*---------------------------------------------------------------------------*/ void fsk_demod(struct FSK *fsk, uint8_t rx_bits[], COMP fsk_in[]) { fsk_demod_core(fsk, rx_bits, NULL, fsk_in); } void fsk_demod_sd(struct FSK *fsk, float rx_filt[], COMP fsk_in[]) { fsk_demod_core(fsk, NULL, rx_filt, fsk_in); } /* make sure stats have known values in case monitoring process reads stats * before they are set */ static void stats_init(struct FSK *fsk) { /* Take a sample for the eye diagrams */ int i, j, m; int P = fsk->P; int M = fsk->mode; /* due to oversample rate P, we have too many samples for eye trace. So lets output a decimated version */ /* asserts below as we found some problems over-running eye matrix */ /* TODO: refactor eye tracing code here and in fsk_demod */ #ifndef __EMBEDDED__ int neyesamp_dec = ceil(((float)P * 2) / MODEM_STATS_EYE_IND_MAX); int neyesamp = (P * 2) / neyesamp_dec; assert(neyesamp <= MODEM_STATS_EYE_IND_MAX); fsk->stats->neyesamp = neyesamp; int eye_traces = MODEM_STATS_ET_MAX / M; fsk->stats->neyetr = fsk->mode * eye_traces; for (i = 0; i < eye_traces; i++) { for (m = 0; m < M; m++) { for (j = 0; j < neyesamp; j++) { assert((i * M + m) < MODEM_STATS_ET_MAX); fsk->stats->rx_eye[i * M + m][j] = 0; } } } #endif // !__EMBEDDED__ fsk->stats->rx_timing = fsk->stats->snr_est = 0; } /* Set the FSK modem into burst demod mode */ void fsk_enable_burst_mode(struct FSK *fsk) { fsk->nin = fsk->N; fsk->burst_mode = 1; } void fsk_clear_estimators(struct FSK *fsk) { int i; /* Clear freq estimator state */ for (i = 0; i < (fsk->Ndft); i++) { fsk->Sf[i] = 0; } /* Reset timing diff correction */ fsk->nin = fsk->N; } void fsk_get_demod_stats(struct FSK *fsk, struct MODEM_STATS *stats) { /* copy from internal stats, note we can't overwrite stats completely as it has other states rqd by caller, also we want a consistent interface across modem types for the freedv_api. */ stats->clock_offset = fsk->stats->clock_offset; stats->snr_est = fsk->stats->snr_est; // TODO: make this SNR not Eb/No stats->rx_timing = fsk->stats->rx_timing; stats->foff = fsk->stats->foff; #ifndef __EMBEDDED__ stats->neyesamp = fsk->stats->neyesamp; stats->neyetr = fsk->stats->neyetr; memcpy(stats->rx_eye, fsk->stats->rx_eye, sizeof(stats->rx_eye)); memcpy(stats->f_est, fsk->stats->f_est, fsk->mode * sizeof(float)); #endif // !__EMBEDDED__ /* these fields not used for FSK so set to something sensible */ stats->sync = 0; stats->nr = fsk->stats->nr; stats->Nc = fsk->stats->Nc; } /* * Set the minimum and maximum frequencies at which the freq. estimator can find * tones */ void fsk_set_freq_est_limits(struct FSK *fsk, int est_min, int est_max) { assert(fsk != NULL); assert(est_min >= -fsk->Fs / 2); assert(est_max <= fsk->Fs / 2); assert(est_max > est_min); fsk->est_min = est_min; fsk->est_max = est_max; } void fsk_stats_normalise_eye(struct FSK *fsk, int normalise_enable) { assert(fsk != NULL); fsk->normalise_eye = normalise_enable; } void fsk_set_freq_est_alg(struct FSK *fsk, int est_type) { assert(fsk != NULL); fsk->freq_est_type = est_type; } codec2-1.2.0/src/fsk.h000066400000000000000000000172001445607075400144100ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: fsk.h AUTHOR......: Brady O'Brien DATE CREATED: 6 January 2016 C Implementation of 2FSK/4FSK modulator/demodulator, based on octave/fsk_horus.m \*---------------------------------------------------------------------------*/ /* Copyright (C) 2016 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __C2FSK_H #define __C2FSK_H #include #include "comp.h" #include "kiss_fftr.h" #include "modem_stats.h" #define MODE_2FSK 2 #define MODE_4FSK 4 #define MODE_M_MAX 4 #define FSK_SCALE 16383 /* default internal parameters */ #define FSK_DEFAULT_P \ 8 /* Number of timing offsets we have to choose from, try to keep P >= 8 */ #define FSK_DEFAULT_NSYM 50 /* See Nsym below */ #define FSK_NONE -1 /* unused parameter */ #undef P /* avoid clash with #define P in fdmdv_internal.h */ struct FSK { /* Static parameters set up by fsk_init */ int Ndft; /* freq offset est fft */ int Fs; /* sample freq */ int N; /* processing buffer size */ int Rs; /* symbol rate */ int Ts; /* samples per symbol */ int Nmem; /* size of extra mem for timing adj */ int P; /* oversample rate for timing est/adj */ int Nsym; /* Number of symbols processed by demodulator in each call, also the timing estimator window */ int Nbits; /* Number of bits spat out in a processing frame */ int f1_tx; /* f1 for modulator */ int tone_spacing; /* Space between TX freqs for modulator (and option mask freq estimator) */ int mode; /* 2FSK or 4FSK */ float tc; /* time constant for smoothing FFTs */ int est_min; /* Minimum frequency for freq. estimator */ int est_max; /* Maximum frequency for freq. estimator */ int est_space; /* Minimum frequency spacing for freq. estimator */ float *hann_table; /* Precomputed or runtime computed hann window table */ /* Parameters used by demod */ float *Sf; /* Average of magnitude spectrum */ COMP phi_c[MODE_M_MAX]; /* phase of each demod local oscillator */ COMP *f_dc; /* down converted samples */ kiss_fft_cfg fft_cfg; /* Config for KISS FFT, used in freq est */ float norm_rx_timing; /* Normalized RX timing */ /* Parameters used by mod */ COMP tx_phase_c; /* TX phase, but complex */ /* Statistics generated by demod */ float EbNodB; /* Estimated EbNo in dB */ float f_est[MODE_M_MAX]; /* Estimated frequencies (peak method) */ float f2_est[MODE_M_MAX]; /* Estimated frequencies (mask method) */ int freq_est_type; /* which estimator to use */ float ppm; /* Estimated PPM clock offset */ float SNRest; /* used for LLRs */ float v_est; /* used for LLRs */ float rx_sig_pow; float rx_nse_pow; /* Parameters used by mod/demod and driving code */ int nin; /* Number of samples to feed the next demod cycle */ int burst_mode; /* enables/disables 'burst' mode */ int lock_nin; /* locks nin during testing */ /* modem statistics struct */ struct MODEM_STATS *stats; int normalise_eye; /* enables/disables normalisation of eye diagram */ }; /* * Create a FSK modem * * int Fs - Sample frequency * int Rs - Symbol rate * int M - 2 for 2FSK, 4 for 4FSK * int f1_tx - first tone frequency * int tone_spacing - frequency spacing (for modulator and optional "mask" freq * estimator) */ struct FSK *fsk_create(int Fs, int Rs, int M, int f1_tx, int tone_spacing); /* * Create a FSK modem - advanced version * * int Fs - Sample frequency * int Rs - Symbol rate * int M - 2 for 2FSK, 4 for 4FSK * int P - number of timing offsets to choose from (suggest >= 8) * int Nsym - windows size for timing estimator * int f1_tx - first tone frequency * int tone_spacing - frequency spacing (for modulator and optional "mask" freq * estimator) */ struct FSK *fsk_create_hbr(int Fs, int Rs, int M, int P, int Nsym, int f1_tx, int tone_spacing); /* * Set the minimum and maximum frequencies at which the freq. estimator can find * tones */ void fsk_set_freq_est_limits(struct FSK *fsk, int fmin, int fmax); /* * Clear the estimator states */ void fsk_clear_estimators(struct FSK *fsk); /* * Fills MODEM_STATS struct with demod statistics */ void fsk_get_demod_stats(struct FSK *fsk, struct MODEM_STATS *stats); /* * Destroy an FSK state struct and free it's memory * * struct FSK *fsk - FSK config/state struct to be destroyed */ void fsk_destroy(struct FSK *fsk); /* * Modulates Nsym bits into N samples * * struct FSK *fsk - FSK config/state struct, set up by fsk_create * float fsk_out[] - Buffer for samples of modulated FSK, * fsk->Ts*(nbits/(M>>1)) in length uint8_t tx_bits[] - Buffer containing Nbits * unpacked bits int nbits - number of bits to transmit */ void fsk_mod(struct FSK *fsk, float fsk_out[], uint8_t tx_bits[], int nbits); /* * Modulates Nsym bits into N samples * * struct FSK *fsk - FSK config/state struct, set up by fsk_create * float fsk_out[] - Buffer for samples of "voltage" used to modulate an * external VCO * - fsk->Ts*(nbits/(M>>1)) in length * uint8_t tx_bits[] - Buffer containing Nbits unpacked bits * int nbits - number of bits to transmit */ void fsk_mod_ext_vco(struct FSK *fsk, float vco_out[], uint8_t tx_bits[], int nbits); /* * Modulates Nsym bits into N complex samples * * struct FSK *fsk - FSK config/state struct, set up by fsk_create * comp fsk_out[] - Buffer for samples of modulated FSK, * fsk->Ts*(nbits/(M>>1)) in length uint8_t tx_bits[] - Buffer containing Nbits * unpacked bits int nbits - number of bits to transmit */ void fsk_mod_c(struct FSK *fsk, COMP fsk_out[], uint8_t tx_bits[], int nbits); /* * Returns the number of samples needed for the next fsk_demod() cycle * * struct FSK *fsk - FSK config/state struct, set up by fsk_create * returns - number of samples to be fed into fsk_demod next cycle */ uint32_t fsk_nin(struct FSK *fsk); /* * Demodulate some number of FSK samples. The number of samples to be * demodulated can be found by calling fsk_nin(). * * struct FSK *fsk - FSK config/state struct, set up by fsk_create * uint8_t rx_bits[] - Buffer for fsk->Nbits unpacked bits to be written * float fsk_in[] - nin samples of modulated FSK */ void fsk_demod(struct FSK *fsk, uint8_t rx_bits[], COMP fsk_in[]); /* * Soft decision demodulation * * struct FSK *fsk - FSK config/state struct, set up by fsk_create * float rx_flit[] - M x Nsym array of filtermagnitude outputs * float fsk_in[] - nin samples of modualted FSK */ void fsk_demod_sd(struct FSK *fsk, float rx_filt[], COMP fsk_in[]); /* enables/disables normalisation of eye diagram samples */ void fsk_stats_normalise_eye(struct FSK *fsk, int normalise_enable); /* Set the FSK modem into burst demod mode */ void fsk_enable_burst_mode(struct FSK *fsk); /* Set freq est algorithm 0: peak 1:mask */ void fsk_set_freq_est_alg(struct FSK *fsk, int est_type); #endif codec2-1.2.0/src/fsk_demod.c000066400000000000000000000334271445607075400155640ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: fsk_demod.c AUTHOR......: Brady O'Brien and David Rowe DATE CREATED: 8 January 2016 Command line FSK demodulator. Reads in FSK samples, writes demodulated output bits. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2016 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #define TEST_FRAME_SIZE 100 /* must match fsk_get_test_bits.c */ #include #include #include #include #include #include #include #include "codec2_fdmdv.h" #include "fsk.h" #include "modem_stats.h" #include "mpdecode_core.h" /* cleanly exit when we get a SIGTERM */ void sig_handler(int signo) { if (signo == SIGTERM) { exit(0); } } int main(int argc, char *argv[]) { struct FSK *fsk; struct MODEM_STATS stats; int Fs, Rs, M, P, stats_ctr, stats_loop; float loop_time; int enable_stats = 0; FILE *fin, *fout; uint8_t *bitbuf = NULL; int16_t *rawbuf; COMP *modbuf; float *rx_filt = NULL; float *llrs = NULL; int i, j, Ndft; int soft_dec_mode = 0; stats_loop = 0; int complex_input = 1, bytes_per_sample = 2; int stats_rate = 8; int testframe_mode = 0; P = 8; /* default */ M = 0; int fsk_lower = 0; int fsk_upper = 0; int user_fsk_lower = 0; int user_fsk_upper = 0; int nsym = FSK_DEFAULT_NSYM; int mask = 0; int tone_separation = 100; int o = 0; int opt_idx = 0; while (o != -1) { static struct option long_opts[] = { {"help", no_argument, 0, 'h'}, {"conv", required_argument, 0, 'p'}, {"cs16", no_argument, 0, 'c'}, {"cu8", no_argument, 0, 'd'}, {"fsk_lower", required_argument, 0, 'b'}, {"fsk_upper", required_argument, 0, 'u'}, {"stats", optional_argument, 0, 't'}, {"soft-dec", no_argument, 0, 's'}, {"testframes", no_argument, 0, 'f'}, {"nsym", required_argument, 0, 'n'}, {"mask", required_argument, 0, 'm'}, {0, 0, 0, 0}}; o = getopt_long(argc, argv, "fhlp:cdt::sb:u:m", long_opts, &opt_idx); switch (o) { case 'c': complex_input = 2; bytes_per_sample = 2; break; case 'd': complex_input = 2; bytes_per_sample = 1; break; case 'f': testframe_mode = 1; break; case 't': enable_stats = 1; if (optarg != NULL) { stats_rate = atoi(optarg); if (stats_rate == 0) { stats_rate = 8; } } break; case 's': soft_dec_mode = 1; break; case 'p': P = atoi(optarg); break; case 'b': if (optarg != NULL) { fsk_lower = atoi(optarg); user_fsk_lower = 1; } break; case 'u': if (optarg != NULL) { fsk_upper = atoi(optarg); user_fsk_upper = 1; } break; case 'n': if (optarg != NULL) { nsym = atoi(optarg); } break; case 'm': mask = 1; tone_separation = atoi(optarg); break; case 'h': case '?': goto helpmsg; break; } } int dx = optind; if ((argc - dx) < 5) { fprintf(stderr, "Too few arguments\n"); goto helpmsg; } if ((argc - dx) > 5) { fprintf(stderr, "Too many arguments\n"); helpmsg: fprintf(stderr, "usage: %s [options] (2|4) SampleRate SymbolRate InputModemRawFile " "OutputFile\n", argv[0]); fprintf(stderr, " -c --cs16 The raw input file will be in complex signed " "16 bit format.\n"); fprintf(stderr, " -d --cu8 The raw input file will be in complex " "unsigned 8 bit format.\n"); fprintf(stderr, " If neither -c nor -d are used, the input " "should be in signed 16 bit format.\n"); fprintf(stderr, " -f --testframes Testframe mode, prints stats to stderr when a " "testframe is detected, if -t (JSON) \n"); fprintf(stderr, " is enabled stats will be in JSON format\n"); fprintf( stderr, " -t[r] --stats=[r] Print out modem statistics to stderr in JSON.\n"); fprintf(stderr, " r, if provided, sets the number of modem " "frames between statistic printouts.\n"); fprintf(stderr, " -s --soft-dec The output file will be in a soft-decision " "format, with one 32-bit float per bit.\n"); fprintf(stderr, " If -s is not used, the output will be in a 1 " "byte-per-bit format.\n"); fprintf(stderr, " -p P Number of timing offsets we have to choose " "from, default %d.\n", FSK_DEFAULT_P); fprintf(stderr, " Fs/Rs/P must be an integer. Smaller values " "result in faster operation, but\n"); fprintf(stderr, " coarse sampling. Try to keep >= 8\n"); fprintf(stderr, " processing but lower demodulation " "performance. Default %d\n", FSK_DEFAULT_P); fprintf(stderr, " --fsk_lower freq lower limit of freq estimator (default 0 for " "real input, -Fs/2 for complex input)\n"); fprintf( stderr, " --fsk_upper freq upper limit of freq estimator (default Fs/2)\n"); fprintf(stderr, " --nsym Nsym number of symbols used for estimators. " "Default %d\n", FSK_DEFAULT_NSYM); fprintf(stderr, " --mask TxFreqSpace Use \"mask\" freq estimator (default is " "\"peak\" estimator)\n"); exit(1); } /* Extract parameters */ M = atoi(argv[dx]); Fs = atoi(argv[dx + 1]); Rs = atoi(argv[dx + 2]); if ((M != 2) && (M != 4)) { fprintf(stderr, "Mode %d is not valid. Mode must be 2 or 4.\n", M); goto helpmsg; } /* Open files */ if (strcmp(argv[dx + 3], "-") == 0) { fin = stdin; } else { fin = fopen(argv[dx + 3], "r"); } if (strcmp(argv[dx + 4], "-") == 0) { fout = stdout; } else { fout = fopen(argv[dx + 4], "w"); } /* set up FSK */ fsk = fsk_create_hbr(Fs, Rs, M, P, nsym, FSK_NONE, tone_separation); /* set freq estimator limits */ if (!user_fsk_lower) { if (complex_input == 1) fsk_lower = 0; else fsk_lower = -Fs / 2; } if (!user_fsk_upper) { fsk_upper = Fs / 2; } fprintf(stderr, "Setting estimator limits to %d to %d Hz.\n", fsk_lower, fsk_upper); fsk_set_freq_est_limits(fsk, fsk_lower, fsk_upper); fsk_set_freq_est_alg(fsk, mask); if (fin == NULL || fout == NULL || fsk == NULL) { fprintf(stderr, "Couldn't open files\n"); exit(1); } /* set up testframe mode */ int testframecnt, bitcnt, biterr, testframe_detected; uint8_t *bitbuf_tx = NULL, *bitbuf_rx = NULL; if (testframe_mode) { bitbuf_tx = (uint8_t *)malloc(sizeof(uint8_t) * TEST_FRAME_SIZE); assert(bitbuf_tx != NULL); bitbuf_rx = (uint8_t *)malloc(sizeof(uint8_t) * TEST_FRAME_SIZE); assert(bitbuf_rx != NULL); /* Generate known tx frame from known seed */ srand(158324); for (i = 0; i < TEST_FRAME_SIZE; i++) { bitbuf_tx[i] = rand() & 0x1; bitbuf_rx[i] = 0; } testframecnt = 0; bitcnt = 0; biterr = 0; } if (enable_stats) { loop_time = ((float)fsk_nin(fsk)) / ((float)Fs); stats_loop = (int)(1 / (stats_rate * loop_time)); stats_ctr = 0; } /* allocate buffers for processing */ if (soft_dec_mode) { rx_filt = (float *)malloc(sizeof(float) * fsk->mode * fsk->Nsym); assert(rx_filt != NULL); llrs = (float *)malloc(sizeof(float) * fsk->Nbits); assert(llrs != NULL); } else { bitbuf = (uint8_t *)malloc(sizeof(uint8_t) * fsk->Nbits); assert(bitbuf != NULL); } rawbuf = (int16_t *)malloc(bytes_per_sample * (fsk->N + fsk->Ts * 2) * complex_input); modbuf = (COMP *)malloc(sizeof(COMP) * (fsk->N + fsk->Ts * 2)); /* set up signal handler so we can terminate gracefully */ if (signal(SIGTERM, sig_handler) == SIG_ERR) { printf("\ncan't catch SIGTERM\n"); } /* Demodulate! */ while (fread(rawbuf, bytes_per_sample * complex_input, fsk_nin(fsk), fin) == fsk_nin(fsk)) { /* convert input to a buffer of floats. Note scaling isn't really necessary * for FSK */ if (complex_input == 1) { /* S16 real input */ for (i = 0; i < fsk_nin(fsk); i++) { modbuf[i].real = ((float)rawbuf[i]) / FDMDV_SCALE; modbuf[i].imag = 0.0; } } else { if (bytes_per_sample == 1) { /* U8 complex */ uint8_t *rawbuf_u8 = (uint8_t *)rawbuf; for (i = 0; i < fsk_nin(fsk); i++) { modbuf[i].real = ((float)rawbuf_u8[2 * i] - 127.0) / 128.0; modbuf[i].imag = ((float)rawbuf_u8[2 * i + 1] - 127.0) / 128.0; } } else { /* S16 complex */ for (i = 0; i < fsk_nin(fsk); i++) { modbuf[i].real = ((float)rawbuf[2 * i]) / FDMDV_SCALE; modbuf[i].imag = ((float)rawbuf[2 * i + 1] / FDMDV_SCALE); } } } if (soft_dec_mode) { int bps = log2(fsk->mode); assert(fsk->Nbits == bps * fsk->Nsym); /* output bit LLRs */ fsk_demod_sd(fsk, rx_filt, modbuf); fsk_rx_filt_to_llrs(llrs, rx_filt, fsk->v_est, fsk->SNRest, fsk->mode, fsk->Nsym); } else { fsk_demod(fsk, bitbuf, modbuf); } testframe_detected = 0; if (testframe_mode) { assert(soft_dec_mode == 0); /* attempt to find a testframe and update stats */ /* update silding window of input bits */ int errs; for (j = 0; j < fsk->Nbits; j++) { for (i = 0; i < TEST_FRAME_SIZE - 1; i++) { bitbuf_rx[i] = bitbuf_rx[i + 1]; } bitbuf_rx[TEST_FRAME_SIZE - 1] = bitbuf[j]; /* compare to know tx frame. If they are time aligned, there will be a fairly low bit error rate */ errs = 0; for (i = 0; i < TEST_FRAME_SIZE; i++) { if (bitbuf_rx[i] != bitbuf_tx[i]) { errs++; } } if (errs < 0.1 * TEST_FRAME_SIZE) { /* OK, we have a valid test frame sync, so lets count errors */ testframe_detected = 1; testframecnt++; bitcnt += TEST_FRAME_SIZE; biterr += errs; if (enable_stats == 0) { fprintf(stderr, "errs: %d FSK BER %f, bits tested %d, bit errors %d\n", errs, ((float)biterr / (float)bitcnt), bitcnt, biterr); } } } } /* if (testframe_mode) ... */ if (enable_stats) { if ((stats_ctr < 0) || testframe_detected) { fsk_get_demod_stats(fsk, &stats); /* Print standard 2FSK stats */ fprintf(stderr, "{"); time_t seconds = time(NULL); fprintf(stderr, "\"secs\": %ld, \"EbNodB\": %5.1f, \"ppm\": %4d,", (long)seconds, stats.snr_est, (int)fsk->ppm); float *f_est; if (fsk->freq_est_type) f_est = fsk->f2_est; else f_est = fsk->f_est; fprintf(stderr, " \"f1_est\":%.1f, \"f2_est\":%.1f", f_est[0], f_est[1]); /* Print 4FSK stats if in 4FSK mode */ if (fsk->mode == 4) { fprintf(stderr, ", \"f3_est\":%.1f, \"f4_est\":%.1f", f_est[2], f_est[3]); } if (testframe_mode == 0) { /* Print the eye diagram */ fprintf(stderr, ",\t\"eye_diagram\":["); for (i = 0; i < stats.neyetr; i++) { fprintf(stderr, "["); for (j = 0; j < stats.neyesamp; j++) { fprintf(stderr, "%f ", stats.rx_eye[i][j]); if (j < stats.neyesamp - 1) fprintf(stderr, ","); } fprintf(stderr, "]"); if (i < stats.neyetr - 1) fprintf(stderr, ","); } fprintf(stderr, "],"); /* Print a sample of the FFT from the freq estimator */ fprintf(stderr, "\"samp_fft\":["); Ndft = fsk->Ndft / 2; for (i = 0; i < Ndft; i++) { fprintf(stderr, "%f ", (fsk->Sf)[i]); if (i < Ndft - 1) fprintf(stderr, ","); } fprintf(stderr, "]"); } if (testframe_mode) { fprintf(stderr, ", \"frames\":%d, \"bits\":%d, \"errs\":%d", testframecnt, bitcnt, biterr); } fprintf(stderr, "}\n"); if (stats_ctr < 0) { stats_ctr = stats_loop; } } if (testframe_mode == 0) { stats_ctr--; } } if (soft_dec_mode) { fwrite(llrs, sizeof(float), fsk->Nbits, fout); } else { fwrite(bitbuf, sizeof(uint8_t), fsk->Nbits, fout); } if (fout == stdin) { fflush(fout); } } /* while(fread ...... */ if (testframe_mode) { free(bitbuf_tx); free(bitbuf_rx); } if (soft_dec_mode) { free(rx_filt); free(llrs); } else { free(bitbuf); } free(rawbuf); free(modbuf); fclose(fin); fclose(fout); fsk_destroy(fsk); return 0; } codec2-1.2.0/src/fsk_get_test_bits.c000066400000000000000000000047211445607075400173260ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: fsk_get_test_bits.c AUTHOR......: Brady O'Brien DATE CREATED: January 2016 Generates a pseudorandom sequence of bits for testing of fsk_mod and fsk_demod \*---------------------------------------------------------------------------*/ /* Copyright (C) 2016 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include "fsk.h" #define TEST_FRAME_SIZE \ 100 /* arbitrary choice, repeats after this \ many bits, sets frame size for rx \ processing */ int main(int argc, char *argv[]) { int bitcnt, framecnt; int framesize = TEST_FRAME_SIZE; int i; FILE *fout; uint8_t *bitbuf; if (argc < 3) { fprintf(stderr, "usage: %s OutputBitsOnePerByte numBits [framesize]\n", argv[0]); exit(1); } if (argc == 4) { framesize = atoi(argv[3]); fprintf(stderr, "Using custom frame size of %d bits\n", framesize); } /* Extract parameters */ bitcnt = atoi(argv[2]); framecnt = bitcnt / framesize; if (framecnt == 0) { fprintf(stderr, "Need a minimum of %d bits\n", framesize); exit(1); } if (strcmp(argv[1], "-") == 0) { fout = stdout; } else { fout = fopen(argv[1], "w"); } if (fout == NULL) { fprintf(stderr, "Couldn't open output file: %s\n", argv[1]); exit(1); } /* allocate buffers for processing */ bitbuf = (uint8_t *)malloc(sizeof(uint8_t) * framesize); /* Generate buffer of test frame bits from known seed */ srand(158324); for (i = 0; i < framesize; i++) { bitbuf[i] = rand() & 0x1; } /* Output test frames */ srand(158324); for (i = 0; i < framecnt; i++) { fwrite(bitbuf, sizeof(uint8_t), framesize, fout); if (fout == stdout) { fflush(fout); } } free(bitbuf); fclose(fout); return 0; } codec2-1.2.0/src/fsk_mod.c000066400000000000000000000077161445607075400152550ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: fsk_mod.c AUTHOR......: Brady O'Brien and David Rowe DATE CREATED: 8 January 2016 Command line FSK modulator. Reads in bits, writes FSK modulated output. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2016 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include "codec2_fdmdv.h" #include "fsk.h" int main(int argc, char *argv[]) { struct FSK *fsk; int Fs, Rs, f1, fs, M; int i; int p, user_p = 0; FILE *fin, *fout; int complex = 0; int bytes_per_sample = 2; float amp = FDMDV_SCALE; int test_mode = 0; char usage[] = "usage: %s [-p P] [-c] [-a Amplitude] [-t] Mode SampleFreq SymbolFreq " "TxFreq1 TxFreqSpace InputOneBitPerCharFile OutputModRawFile\n" " -c complex signed 16 bit output format\n" " -a Amplitude Amplitude of signal\n" " -t test mode unmodulated carrier, useful for setting levels\n"; int opt; while ((opt = getopt(argc, argv, "a:p:ct")) != -1) { switch (opt) { case 'a': amp = atof(optarg) / 2.0; /* fsk_mod amplitude is +/-2 */ break; case 'c': complex = 1; bytes_per_sample = 4; break; case 't': test_mode = 1; break; case 'p': p = atoi(optarg); user_p = 1; break; default: fprintf(stderr, usage, argv[0]); exit(1); } } if (argc < 8) { fprintf(stderr, usage, argv[0]); exit(1); } /* Extract parameters */ M = atoi(argv[optind++]); Fs = atoi(argv[optind++]); Rs = atoi(argv[optind++]); f1 = atoi(argv[optind++]); fs = atoi(argv[optind++]); if (strcmp(argv[optind], "-") == 0) { fin = stdin; } else { fin = fopen(argv[optind], "r"); } optind++; if (strcmp(argv[optind], "-") == 0) { fout = stdout; } else { fout = fopen(argv[optind], "w"); } /* p is not actually used for the modulator, but we need to set it for * fsk_create() to be happy */ if (!user_p) p = Fs / Rs; /* set up FSK */ fsk = fsk_create_hbr(Fs, Rs, M, p, FSK_DEFAULT_NSYM, f1, fs); if (fin == NULL || fout == NULL || fsk == NULL) { fprintf(stderr, "Couldn't open files\n"); exit(1); } /* Mote we use the same buffer sizes as demod (fsk->Nbits, fsk->N) for convenience, but other sizes are possible for the FSK modulator. */ uint8_t bitbuf[fsk->Nbits]; while (fread(bitbuf, sizeof(uint8_t), fsk->Nbits, fin) == fsk->Nbits) { if (test_mode) memset(bitbuf, 0, fsk->Nbits); if (complex == 0) { float modbuf[fsk->N]; int16_t rawbuf[fsk->N]; /* 16 bit signed short real output */ fsk_mod(fsk, modbuf, bitbuf, fsk->Nbits); for (i = 0; i < fsk->N; i++) rawbuf[i] = (int16_t)(modbuf[i] * amp); fwrite(rawbuf, bytes_per_sample, fsk->N, fout); } else { /* 16 bit signed char complex output */ COMP modbuf[fsk->N]; int16_t rawbuf[2 * fsk->N]; fsk_mod_c(fsk, (COMP *)modbuf, bitbuf, fsk->Nbits); for (i = 0; i < fsk->N; i++) { rawbuf[2 * i] = (int16_t)(modbuf[i].real * amp); rawbuf[2 * i + 1] = (int16_t)(modbuf[i].imag * amp); } fwrite(rawbuf, bytes_per_sample, fsk->N, fout); } if (fout == stdin) { fflush(fout); } } fsk_destroy(fsk); } codec2-1.2.0/src/fsk_put_test_bits.c000066400000000000000000000110571445607075400173570ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: fsk_get_test_bits.c AUTHOR......: Brady O'Brien DATE CREATED: January 2016 Generates a pseudorandom sequence of bits for testing of fsk_mod and fsk_demod. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2016 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include "fsk.h" #define TEST_FRAME_SIZE 100 /* must match fsk_get_test_bits.c */ #define VALID_PACKET_BER_THRESH 0.1 int main(int argc, char *argv[]) { int bitcnt, biterr, i, errs, packetcnt; int framesize = TEST_FRAME_SIZE; float valid_packet_ber_thresh = VALID_PACKET_BER_THRESH; int packet_pass_thresh = 0; float ber_pass_thresh = 0; FILE *fin; uint8_t *bitbuf_tx, *bitbuf_rx, abyte, abit; int verbose = 1; int packed_in = 0; char usage[] = "usage: %s [-f frameSizeBits] [-t VaildFrameBERThreshold] [-b BERPass] " "[-p numPacketsPass] [-k] InputOneBitPerByte\n" " [-k] packet byte input\n"; int opt; while ((opt = getopt(argc, argv, "f:b:p:hqt:k")) != -1) { switch (opt) { case 't': valid_packet_ber_thresh = atof(optarg); break; case 'b': ber_pass_thresh = atof(optarg); break; case 'p': packet_pass_thresh = atoi(optarg); break; case 'f': framesize = atoi(optarg); break; case 'q': verbose = 0; break; case 'k': packed_in = 1; break; case 'h': default: fprintf(stderr, usage, argv[0]); exit(1); } } if (argc == 1) { fprintf(stderr, usage, argv[0]); exit(1); } int bits_per_byte = 1; if (packed_in) { if (framesize % 8) { fprintf(stderr, "framesize (-f) must be a multiple of 8 for packed byte input " "(-k)\n"); exit(1); } bits_per_byte = 8; } char *fname = argv[optind++]; if ((strcmp(fname, "-") == 0) || (argc < 2)) { fin = stdin; } else { fin = fopen(fname, "r"); } if (fin == NULL) { fprintf(stderr, "Couldn't open input file: %s\n", argv[1]); exit(1); } /* allocate buffers for processing */ bitbuf_tx = (uint8_t *)malloc(sizeof(uint8_t) * framesize); bitbuf_rx = (uint8_t *)malloc(sizeof(uint8_t) * framesize); /* Generate known tx frame from known seed */ srand(158324); for (i = 0; i < framesize; i++) { bitbuf_tx[i] = rand() & 0x1; bitbuf_rx[i] = 0; } bitcnt = 0; biterr = 0; packetcnt = 0; float ber = 0.5; while (fread(&abyte, sizeof(uint8_t), 1, fin) > 0) { for (int b = 0; b < bits_per_byte; b++) { abit = (abyte >> ((bits_per_byte - 1) - b)) & 0x1; /* update sliding window of input bits */ for (i = 0; i < framesize - 1; i++) { bitbuf_rx[i] = bitbuf_rx[i + 1]; } bitbuf_rx[framesize - 1] = abit; /* compare to know tx frame. If they are time aligned, there will be a fairly low bit error rate */ errs = 0; for (i = 0; i < framesize; i++) { if (bitbuf_rx[i] != bitbuf_tx[i]) { errs++; } } if (errs < valid_packet_ber_thresh * framesize) { /* OK, we have a valid packet, so lets count errors */ packetcnt++; bitcnt += framesize; biterr += errs; ber = (float)biterr / (float)bitcnt; if (verbose) { fprintf( stderr, "[%04d] BER %5.3f, bits tested %6d, bit errors %6d errs: %4d \n", packetcnt, ber, bitcnt, biterr, errs); } } } } free(bitbuf_rx); free(bitbuf_tx); fclose(fin); fprintf(stderr, "[%04d] BER %5.3f, bits tested %6d, bit errors %6d\n", packetcnt, ber, bitcnt, biterr); if ((packetcnt >= packet_pass_thresh) && (ber <= ber_pass_thresh)) { fprintf(stderr, "PASS\n"); return 0; } else { fprintf(stderr, "FAIL\n"); return 1; } } codec2-1.2.0/src/generate_codebook.c000066400000000000000000000106231445607075400172610ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: generate_codebook.c AUTHOR......: Bruce Perens DATE CREATED: 29 Sep 2010 Generate header files containing quantisers, runs at compile time. \*---------------------------------------------------------------------------*/ /* All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include static const char usage[] = "Usage: %s filename array_name [filename ...]\n" "\tCreate C code for codebook tables.\n"; static const char format[] = "The table format must be:\n" "\tTwo integers describing the dimensions of the codebook.\n" "\tThen, enough numbers to fill the specified dimensions.\n"; static const char header[] = "/* THIS IS A GENERATED FILE. Edit generate_codebook.c and its input */\n\n" "/*\n" " * This intermediary file and the files that used to create it are under " "\n" " * The LGPL. See the file COPYING.\n" " */\n\n" "#include \"defines.h\"\n\n"; struct codebook { unsigned int k; unsigned int log2m; unsigned int m; float *cb; }; static void dump_array(const struct codebook *b, int index) { int limit = b->k * b->m; int i; printf("#ifdef __EMBEDDED__\n"); printf("static const float codes%d[] = {\n", index); printf("#else\n"); printf("static float codes%d[] = {\n", index); printf("#endif\n"); for (i = 0; i < limit; i++) { printf(" %g", b->cb[i]); if (i < limit - 1) printf(","); /* organise VQs by rows, looks prettier */ if (((i + 1) % b->k) == 0) printf("\n"); } printf("};\n"); } static void dump_structure(const struct codebook *b, int index) { printf(" {\n"); printf(" %d,\n", b->k); printf(" %d,\n", (int)roundf(log(b->m) / log(2))); printf(" %d,\n", b->m); printf(" codes%d\n", index); printf(" }"); } float get_float(FILE *in, const char *name, char **cursor, char *buffer, int size) { for (;;) { char *s = *cursor; char c; while ((c = *s) != '\0' && !isdigit(c) && c != '-' && c != '.') s++; /* Comments start with "#" and continue to the end of the line. */ if (c != '\0' && c != '#') { char *end = 0; float f = 0; f = strtod(s, &end); if (end != s) *cursor = end; return f; } if (fgets(buffer, size, in) == NULL) { fprintf(stderr, "%s: Format error. %s\n", name, format); exit(1); } *cursor = buffer; } } static struct codebook *load(FILE *file, const char *name) { char line[1024]; char *cursor = line; struct codebook *b = malloc(sizeof(struct codebook)); int i; int size; *cursor = '\0'; b->k = (int)get_float(file, name, &cursor, line, sizeof(line)); b->m = (int)get_float(file, name, &cursor, line, sizeof(line)); size = b->k * b->m; b->cb = (float *)malloc(size * sizeof(float)); for (i = 0; i < size; i++) b->cb[i] = get_float(file, name, &cursor, line, sizeof(line)); return b; } int main(int argc, char **argv) { struct codebook **cb = malloc(argc * sizeof(struct codebook *)); int i; if (argc < 2) { fprintf(stderr, usage, argv[0]); fprintf(stderr, format); exit(1); } for (i = 0; i < argc - 2; i++) { FILE *in = fopen(argv[i + 2], "r"); if (in == NULL) { perror(argv[i + 2]); exit(1); } cb[i] = load(in, argv[i + 2]); fclose(in); } printf(header); for (i = 0; i < argc - 2; i++) { printf(" /* %s */\n", argv[i + 2]); dump_array(cb[i], i); } printf("\nconst struct lsp_codebook %s[] = {\n", argv[1]); for (i = 0; i < argc - 2; i++) { printf(" /* %s */\n", argv[i + 2]); dump_structure(cb[i], i); printf(",\n"); } printf(" { 0, 0, 0, 0 }\n"); printf("};\n"); for (i = 0; i < argc - 2; i++) { free(cb[i]->cb); free(cb[i]); } free(cb); return 0; } codec2-1.2.0/src/golay23.c000066400000000000000000000157531445607075400151130ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: golay23.c AUTHOR......: Tomas Härdin & David Rowe DATE CREATED: 3 March 2013 To test: src$ gcc golay23.c -o golay23 -Wall -O3 -DGOLAY23_UNITTEST && ./golay23 src$ gcc golay23.c -o golay23 -Wall -O3 -DGOLAY23_UNITTEST -DRUN_TIME_TABLES && ./golay23 src$ gcc golay23.c -o golay23 -Wall -O3 -DGOLAY23_UNITTEST -DNO_TABLES && ./golay23 To generate tables: src$ gcc golay23.c -o golay23 -Wall -O3 -DGOLAY23_MAKETABLES && ./golay23 \*---------------------------------------------------------------------------*/ /* Copyright (C) 2016 Tomas Härdin & David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not,see . */ #include #ifdef GOLAY23_MAKETABLES #define RUN_TIME_TABLES #endif #ifndef NO_TABLES #ifdef RUN_TIME_TABLES int static encoding_table[4096]; int static decoding_table[2048]; static int inited = 0; #else // default is to use precomputed tables #include "golaydectable.h" #include "golayenctable.h" #endif #endif // since we want to avoid bit-reversing inside syndrome() we bit-reverse the // polynomial instead #define GOLAY_POLYNOMIAL 0xC75 // AE3 reversed int golay23_syndrome(int c) { // could probably be done slightly smarter, but works int x; for (x = 11; x >= 0; x--) { if (c & ((1 << 11) << x)) { c ^= GOLAY_POLYNOMIAL << x; } } return c; } #ifdef __GNUC__ #define popcount __builtin_popcount #elif defined(__MSC_VER) #include #define popcount __popcnt #else static int popcount(unsigned int c) { int ret = 0; while (c) { if (c & 1) { ret++; } c >>= 1; } return ret; } #endif #if defined(NO_TABLES) || defined(RUN_TIME_TABLES) static int golay23_encode_no_tables(int c) { c <<= 11; return golay23_syndrome(c) | c; } #endif #ifdef NO_TABLES static int unrotate(unsigned int c, int x) { return ((c << x) & 0x7FFFFF) | (c >> (23 - x)); } static int golay23_decode_no_tables(int c) { // TODO: optimize? int x; c = unrotate(c, 12); for (x = 0; x < 23; x++) { int t; int s = golay23_syndrome(c); if (popcount(s) <= 3) { return unrotate(c ^ s, x) & 0xFFF; } for (t = 0; t < 23; t++) { int c2 = c ^ (1 << t); int s = golay23_syndrome(c2); if (popcount(s) <= 2) { return unrotate(c2 ^ s, x) & 0xFFF; } } // rotate c = (c >> 1) | ((c & 1) << 22); } // shouldn't reach here.. assert("Something is wrong with golay23_decode_no_tables().."); return c & 0xFFF; } #endif void golay23_init(void) { #ifdef RUN_TIME_TABLES int x, y, z; inited = 1; for (x = 0; x < 4096; x++) { encoding_table[x] = golay23_encode_no_tables(x); } decoding_table[0] = 0; // 1-bit errors for (x = 0; x < 23; x++) { int d = 1 << x; decoding_table[golay23_syndrome(d)] = d; } // 2-bit errors for (x = 0; x < 22; x++) { for (y = x + 1; y < 23; y++) { int d = (1 << x) | (1 << y); decoding_table[golay23_syndrome(d)] = d; } } // 3-bit errors for (x = 0; x < 21; x++) { for (y = x + 1; y < 22; y++) { for (z = y + 1; z < 23; z++) { int d = (1 << x) | (1 << y) | (1 << z); decoding_table[golay23_syndrome(d)] = d; } } } #endif } int golay23_encode(int c) { assert(c >= 0 && c <= 0xFFF); #ifdef RUN_TIME_TABLES assert(inited); #endif #ifdef NO_TABLES return golay23_encode_no_tables(c); #else return encoding_table[c]; #endif } int golay23_decode(int c) { assert(c >= 0 && c <= 0x7FFFFF); #ifdef RUN_TIME_TABLES assert(inited); #endif #ifdef NO_TABLES // duplicate old golay23_decode()'s shift return unrotate(golay23_decode_no_tables(c), 11); #else // message is shifted 11 places left in the return value return c ^ decoding_table[golay23_syndrome(c)]; #endif } int golay23_count_errors(int recd_codeword, int corrected_codeword) { return popcount(recd_codeword ^ corrected_codeword); } /** * Table generation and testing code below */ #ifdef GOLAY23_MAKETABLES #include int main() { int x; // generate and dump golay23_init(); FILE *enc = fopen("golayenctable.h", "w"); FILE *dec = fopen("golaydectable.h", "w"); fprintf(enc, "/* Generated by golay23.c -DGOLAY23_MAKETABLE */\n\ \n\ const int static encoding_table[]={\n"); for (x = 0; x < 4096; x++) { fprintf(enc, x < 4095 ? " 0x%x,\n" : " 0x%x\n", encoding_table[x]); } fprintf(enc, "};\n"); fprintf(dec, "/* Generated by golay23.c -DGOLAY23_MAKETABLE */\n\ \n\ const int static decoding_table[]={\n"); for (x = 0; x < 2048; x++) { fprintf(dec, x < 2047 ? " 0x%x,\n" : " 0x%x\n", decoding_table[x]); } fprintf(dec, "};\n"); fclose(enc); fclose(dec); return 0; } #elif defined(GOLAY23_UNITTEST) #include #include #include int main() { int c; golay23_init(); // keep track of whether every single codeword has been checked char *checkmask = malloc(1 << 23); memset(checkmask, 0, 1 << 23); // step through all possible messages for (c = 0; c < (1 << 12); c++) { int g23 = golay23_encode(c); int x, y, z; checkmask[g23] = 1; int c2 = golay23_decode(g23) >> 11; printf("%03x -> %06x %03x\n", c, g23, c2); if (c != c2) { printf("Bad!\n"); exit(1); } // test the code by flipping every combination of one, two and three bits for (x = 0; x < 23; x++) { int flipped = g23 ^ (1 << x); checkmask[flipped] = 1; int c2 = golay23_decode(flipped) >> 11; if (c != c2) { printf("Bad!\n"); exit(1); } } for (x = 0; x < 22; x++) { for (y = x + 1; y < 23; y++) { int flipped = g23 ^ (1 << x) ^ (1 << y); checkmask[flipped] = 1; int c2 = golay23_decode(flipped) >> 11; if (c != c2) { printf("Bad!\n"); exit(1); } } } for (x = 0; x < 21; x++) { for (y = x + 1; y < 22; y++) { for (z = y + 1; z < 23; z++) { int flipped = g23 ^ (1 << x) ^ (1 << y) ^ (1 << z); checkmask[flipped] = 1; int c2 = golay23_decode(flipped) >> 11; if (c != c2) { printf("Bad!\n"); exit(1); } } } } } // did we check every codeword? for (c = 0; c < (1 << 23); c++) { if (checkmask[c] != 1) { printf("%06x unchecked!\n", c); exit(1); } } printf("Everything checks out\n"); free(checkmask); return 0; } #endif codec2-1.2.0/src/golay23.h000066400000000000000000000023251445607075400151070ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: golay23.h AUTHOR......: David Rowe DATE CREATED: 3 March 2013 Header file for Golay FEC. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2013 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __GOLAY23__ #define __GOLAY23__ #ifdef __cplusplus extern "C" { #endif void golay23_init(void); int golay23_encode(int data); int golay23_decode(int received_codeword); int golay23_count_errors(int recd_codeword, int corrected_codeword); int golay23_syndrome(int c); #ifdef __cplusplus } #endif #endif codec2-1.2.0/src/golaydectable.h000066400000000000000000000516251445607075400164350ustar00rootroot00000000000000/* Generated by golay23.c -DGOLAY23_MAKETABLE */ static const int decoding_table[] = { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0x24020, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x412000, 0x18, 0x19, 0x1a, 0x180800, 0x1c, 0x200300, 0x48040, 0x1480, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x24008, 0x28, 0x29, 0x2a, 0x24004, 0x2c, 0x24002, 0x24001, 0x24000, 0x30, 0x31, 0x32, 0x8180, 0x34, 0xc40, 0x301000, 0xc0200, 0x38, 0x43000, 0x400600, 0x210040, 0x90080, 0x508000, 0x2900, 0x24010, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x280080, 0x48, 0x49, 0x4a, 0x2500, 0x4c, 0x111000, 0x48010, 0x400a00, 0x50, 0x51, 0x52, 0x21200, 0x54, 0xc20, 0x48008, 0x104100, 0x58, 0x404080, 0x48004, 0x210020, 0x48002, 0xa2000, 0x48000, 0x48001, 0x60, 0x61, 0x62, 0x540000, 0x64, 0xc10, 0x10300, 0xb000, 0x68, 0x88200, 0x1880, 0x210010, 0x602000, 0x40180, 0x180400, 0x24040, 0x70, 0xc04, 0x86000, 0x210008, 0xc01, 0xc00, 0x420080, 0xc02, 0x120100, 0x210002, 0x210001, 0x210000, 0x5200, 0xc08, 0x48020, 0x210004, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x280040, 0x88, 0x89, 0x8a, 0x50200, 0x8c, 0xa800, 0x500100, 0x1410, 0x90, 0x91, 0x92, 0x8120, 0x94, 0x160000, 0x4a00, 0x1408, 0x98, 0x404040, 0x222000, 0x1404, 0x90020, 0x1402, 0x1401, 0x1400, 0xa0, 0xa1, 0xa2, 0x8110, 0xa4, 0x401200, 0x42400, 0x110800, 0xa8, 0x300400, 0x1840, 0x482000, 0x90010, 0x40140, 0x208200, 0x24080, 0xb0, 0x8102, 0x8101, 0x8100, 0x90008, 0x206000, 0x420040, 0x8104, 0x90004, 0x20a00, 0x144000, 0x8108, 0x90000, 0x90001, 0x90002, 0x1420, 0xc0, 0xc1, 0xc2, 0x280004, 0xc4, 0x280002, 0x280001, 0x280000, 0xc8, 0x404010, 0x1820, 0x128000, 0x20600, 0x40120, 0x16000, 0x280008, 0xd0, 0x404008, 0x110400, 0x42800, 0x3100, 0x18200, 0x420020, 0x280010, 0x404001, 0x404000, 0x80300, 0x404002, 0x300800, 0x404004, 0x48080, 0x1440, 0xe0, 0x32000, 0x1808, 0x4600, 0x10c000, 0x40108, 0x420010, 0x280020, 0x1802, 0x40104, 0x1800, 0x1801, 0x40101, 0x40100, 0x1804, 0x40102, 0x240200, 0x181000, 0x420004, 0x8140, 0x420002, 0xc80, 0x420000, 0x420001, 0xa400, 0x404020, 0x1810, 0x210080, 0x90040, 0x40110, 0x420008, 0x102200, 0x100, 0x101, 0x102, 0x103, 0x104, 0x105, 0x106, 0x41800, 0x108, 0x109, 0x10a, 0x2440, 0x10c, 0x200210, 0x500080, 0x98000, 0x110, 0x111, 0x112, 0x80a0, 0x114, 0x200208, 0xa0400, 0x104040, 0x118, 0x200204, 0x15000, 0x460000, 0x200201, 0x200200, 0x2820, 0x200202, 0x120, 0x121, 0x122, 0x8090, 0x124, 0x182000, 0x10240, 0x600400, 0x128, 0x410800, 0x2c0000, 0x101200, 0x9400, 0x400c0, 0x2810, 0x24100, 0x130, 0x8082, 0x8081, 0x8080, 0x444000, 0x31000, 0x2808, 0x8084, 0x120040, 0x84400, 0x2804, 0x8088, 0x2802, 0x200220, 0x2800, 0x2801, 0x140, 0x141, 0x142, 0x2408, 0x144, 0x428000, 0x10220, 0x104010, 0x148, 0x2402, 0x2401, 0x2400, 0x84800, 0x400a0, 0x221000, 0x2404, 0x150, 0xd0000, 0x600800, 0x104004, 0x3080, 0x104002, 0x104001, 0x104000, 0x120020, 0x9800, 0x80280, 0x2410, 0x410400, 0x200240, 0x48100, 0x104008, 0x160, 0x205000, 0x10204, 0xa0800, 0x10202, 0x40088, 0x10200, 0x10201, 0x120010, 0x40084, 0x40c000, 0x2420, 0x40081, 0x40080, 0x10208, 0x40082, 0x120008, 0x402200, 0x41400, 0x80c0, 0x288000, 0xd00, 0x10210, 0x104020, 0x120000, 0x120001, 0x120002, 0x210100, 0x120004, 0x40090, 0x2840, 0x481000, 0x180, 0x181, 0x182, 0x8030, 0x184, 0x14400, 0x500008, 0x22200, 0x188, 0xa1000, 0x500004, 0x204800, 0x500002, 0x40060, 0x500000, 0x500001, 0x190, 0x8022, 0x8021, 0x8020, 0x3040, 0x480800, 0x250000, 0x8024, 0x40c00, 0x112000, 0x80240, 0x8028, 0x2c000, 0x200280, 0x500010, 0x1500, 0x1a0, 0x8012, 0x8011, 0x8010, 0x220800, 0x40048, 0x85000, 0x8014, 0x6200, 0x40044, 0x30400, 0x8018, 0x40041, 0x40040, 0x500020, 0x40042, 0x8003, 0x8002, 0x8001, 0x8000, 0x100600, 0x8006, 0x8005, 0x8004, 0x601000, 0x800a, 0x8009, 0x8008, 0x90100, 0x40050, 0x2880, 0x800c, 0x1c0, 0x100a00, 0x64000, 0x411000, 0x3010, 0x40028, 0x8c00, 0x280100, 0x218000, 0x40024, 0x80210, 0x2480, 0x40021, 0x40020, 0x500040, 0x40022, 0x3004, 0x220400, 0x80208, 0x8060, 0x3000, 0x3001, 0x3002, 0x104080, 0x80202, 0x404100, 0x80200, 0x80201, 0x3008, 0x40030, 0x80204, 0x30800, 0x480400, 0x4000c, 0x302000, 0x8050, 0x40009, 0x40008, 0x10280, 0x4000a, 0x40005, 0x40004, 0x1900, 0x40006, 0x40001, 0x40000, 0x40003, 0x40002, 0x14800, 0x8042, 0x8041, 0x8040, 0x3020, 0x40018, 0x420100, 0x8044, 0x120080, 0x40014, 0x80220, 0x8048, 0x40011, 0x40010, 0x204400, 0x40012, 0x200, 0x201, 0x202, 0x203, 0x204, 0x205, 0x206, 0x108400, 0x208, 0x209, 0x20a, 0x50080, 0x20c, 0x200110, 0x83000, 0x400840, 0x210, 0x211, 0x212, 0x21040, 0x214, 0x200108, 0x4880, 0xc0020, 0x218, 0x200104, 0x400420, 0xe000, 0x200101, 0x200100, 0x130000, 0x200102, 0x220, 0x221, 0x222, 0x202800, 0x224, 0x401080, 0x10140, 0xc0010, 0x228, 0x88040, 0x400410, 0x101100, 0x140800, 0x12400, 0x208080, 0x24200, 0x230, 0x114000, 0x400408, 0xc0004, 0x2a000, 0xc0002, 0xc0001, 0xc0000, 0x400402, 0x20880, 0x400400, 0x400401, 0x5040, 0x200120, 0x400404, 0xc0008, 0x240, 0x241, 0x242, 0x21010, 0x244, 0x46000, 0x10120, 0x400808, 0x248, 0x88020, 0x304000, 0x400804, 0x20480, 0x400802, 0x400801, 0x400800, 0x250, 0x21002, 0x21001, 0x21000, 0x580000, 0x18080, 0x202400, 0x21004, 0x12800, 0x140400, 0x80180, 0x21008, 0x5020, 0x200140, 0x48200, 0x400810, 0x260, 0x88008, 0x10104, 0x4480, 0x10102, 0x320000, 0x10100, 0x10101, 0x88001, 0x88000, 0x62000, 0x88002, 0x5010, 0x88004, 0x10108, 0x400820, 0x240080, 0x402100, 0x108800, 0x21020, 0x5008, 0xe00, 0x10110, 0xc0040, 0x5004, 0x88010, 0x400440, 0x210200, 0x5000, 0x5001, 0x5002, 0x102080, 0x280, 0x281, 0x282, 0x50008, 0x284, 0x401020, 0x4810, 0x22100, 0x288, 0x50002, 0x50001, 0x50000, 0x20440, 0x184000, 0x208020, 0x50004, 0x290, 0x82400, 0x4804, 0x700000, 0x4802, 0x18040, 0x4800, 0x4801, 0x109000, 0x20820, 0x80140, 0x50010, 0x442000, 0x200180, 0x4808, 0x1600, 0x2a0, 0x401004, 0x1a0000, 0x4440, 0x401001, 0x401000, 0x208008, 0x401002, 0x6100, 0x20810, 0x208004, 0x50020, 0x208002, 0x401008, 0x208000, 0x208001, 0x240040, 0x20808, 0x13000, 0x8300, 0x100500, 0x401010, 0x4820, 0xc0080, 0x20801, 0x20800, 0x400480, 0x20802, 0x90200, 0x20804, 0x208010, 0x102040, 0x2c0, 0x100900, 0x40a000, 0x4420, 0x20408, 0x18010, 0x141000, 0x280200, 0x20404, 0x203000, 0x80110, 0x50040, 0x20400, 0x20401, 0x20402, 0x400880, 0x240020, 0x18004, 0x80108, 0x21080, 0x18001, 0x18000, 0x4840, 0x18002, 0x80102, 0x404200, 0x80100, 0x80101, 0x20410, 0x18008, 0x80104, 0x102020, 0x240010, 0x4402, 0x4401, 0x4400, 0x82800, 0x401040, 0x10180, 0x4404, 0x510000, 0x88080, 0x1a00, 0x4408, 0x20420, 0x40300, 0x208040, 0x102010, 0x240000, 0x240001, 0x240002, 0x4410, 0x240004, 0x18020, 0x420200, 0x102008, 0x240008, 0x20840, 0x80120, 0x102004, 0x5080, 0x102002, 0x102001, 0x102000, 0x300, 0x301, 0x302, 0x484000, 0x304, 0x200018, 0x10060, 0x22080, 0x308, 0x200014, 0x28800, 0x101020, 0x200011, 0x200010, 0x44400, 0x200012, 0x310, 0x20000c, 0x142000, 0x10c00, 0x200009, 0x200008, 0x409000, 0x20000a, 0x200005, 0x200004, 0x800c0, 0x200006, 0x200001, 0x200000, 0x200003, 0x200002, 0x320, 0x60400, 0x10044, 0x101008, 0x10042, 0xc800, 0x10040, 0x10041, 0x6080, 0x101002, 0x101001, 0x101000, 0x4a0000, 0x200030, 0x10048, 0x101004, 0x81800, 0x402040, 0x224000, 0x8280, 0x100480, 0x200028, 0x10050, 0xc0100, 0x58000, 0x200024, 0x400500, 0x101010, 0x200021, 0x200020, 0x2a00, 0x200022, 0x340, 0x100880, 0x10024, 0x248000, 0x10022, 0x81400, 0x10020, 0x10021, 0x441000, 0x34000, 0x80090, 0x2600, 0x10a000, 0x200050, 0x10028, 0x400900, 0xc400, 0x402020, 0x80088, 0x21100, 0x60800, 0x200048, 0x10030, 0x104200, 0x80082, 0x200044, 0x80080, 0x80081, 0x200041, 0x200040, 0x80084, 0x200042, 0x10006, 0x402010, 0x10004, 0x10005, 0x10002, 0x10003, 0x10000, 0x10001, 0x200c00, 0x88100, 0x1000c, 0x101040, 0x1000a, 0x40280, 0x10008, 0x10009, 0x402001, 0x402000, 0x10014, 0x402002, 0x10012, 0x402004, 0x10010, 0x10011, 0x120200, 0x402008, 0x800a0, 0x44800, 0x5100, 0x200060, 0x10018, 0x28400, 0x380, 0x100840, 0x201400, 0x22004, 0xc8000, 0x22002, 0x22001, 0x22000, 0x6020, 0x408400, 0x80050, 0x50100, 0x11800, 0x200090, 0x500200, 0x22008, 0x430000, 0x45000, 0x80048, 0x8220, 0x100420, 0x200088, 0x4900, 0x22010, 0x80042, 0x200084, 0x80040, 0x80041, 0x200081, 0x200080, 0x80044, 0x200082, 0x6008, 0x290000, 0x440800, 0x8210, 0x100410, 0x401100, 0x100c0, 0x22020, 0x6000, 0x6001, 0x6002, 0x101080, 0x6004, 0x40240, 0x208100, 0x80c00, 0x100404, 0x8202, 0x8201, 0x8200, 0x100400, 0x100401, 0x100402, 0x8204, 0x6010, 0x20900, 0x80060, 0x8208, 0x100408, 0x2000a0, 0x61000, 0x414000, 0x100801, 0x100800, 0x80018, 0x100802, 0x604000, 0x100804, 0x100a0, 0x22040, 0x80012, 0x100808, 0x80010, 0x80011, 0x20500, 0x40220, 0x80014, 0xd000, 0x8000a, 0x100810, 0x80008, 0x80009, 0x3200, 0x18100, 0x8000c, 0x440400, 0x80002, 0x80003, 0x80000, 0x80001, 0x80006, 0x2000c0, 0x80004, 0x80005, 0x29000, 0x100820, 0x10084, 0x4500, 0x10082, 0x40208, 0x10080, 0x10081, 0x6040, 0x40204, 0x80030, 0x620000, 0x40201, 0x40200, 0x10088, 0x40202, 0x240100, 0x402080, 0x80028, 0x8240, 0x100440, 0xa4000, 0x10090, 0x201800, 0x80022, 0x11400, 0x80020, 0x80021, 0x408800, 0x40210, 0x80024, 0x102100, 0x400, 0x401, 0x402, 0x403, 0x404, 0x405, 0x406, 0x108200, 0x408, 0x409, 0x40a, 0x2140, 0x40c, 0x4c0000, 0x210800, 0x1090, 0x410, 0x411, 0x412, 0x244000, 0x414, 0x860, 0xa0100, 0x1088, 0x418, 0x38000, 0x400220, 0x1084, 0x106000, 0x1082, 0x1081, 0x1080, 0x420, 0x421, 0x422, 0x91000, 0x424, 0x850, 0x42080, 0x600100, 0x428, 0x300080, 0x400210, 0x48800, 0x9100, 0x12200, 0x180040, 0x24400, 0x430, 0x844, 0x400208, 0x122000, 0x841, 0x840, 0x1c000, 0x842, 0x400202, 0x84100, 0x400200, 0x400201, 0x260000, 0x848, 0x400204, 0x10a0, 0x440, 0x441, 0x442, 0x2108, 0x444, 0x830, 0x405000, 0x70000, 0x448, 0x2102, 0x2101, 0x2100, 0x20280, 0x20c000, 0x180020, 0x2104, 0x450, 0x824, 0x110080, 0x488000, 0x821, 0x820, 0x202200, 0x822, 0x281000, 0x140200, 0x24800, 0x2110, 0x410100, 0x828, 0x48400, 0x10c0, 0x460, 0x814, 0x228000, 0x4280, 0x811, 0x810, 0x180008, 0x812, 0x54000, 0x421000, 0x180004, 0x2120, 0x180002, 0x818, 0x180000, 0x180001, 0x805, 0x804, 0x41100, 0x806, 0x801, 0x800, 0x803, 0x802, 0xa080, 0x80c, 0x400240, 0x210400, 0x809, 0x808, 0x180010, 0x80a, 0x480, 0x481, 0x482, 0x420800, 0x484, 0x14100, 0x42020, 0x1018, 0x488, 0x300020, 0x8c000, 0x1014, 0x20240, 0x1012, 0x1011, 0x1010, 0x490, 0x82200, 0x110040, 0x100c, 0x608000, 0x100a, 0x1009, 0x1008, 0x40900, 0x1006, 0x1005, 0x1004, 0x1003, 0x1002, 0x1001, 0x1000, 0x4a0, 0x300008, 0x42004, 0x4240, 0x42002, 0xa8000, 0x42000, 0x42001, 0x300001, 0x300000, 0x30100, 0x300002, 0x404800, 0x300004, 0x42008, 0x1030, 0x25000, 0x450000, 0x280800, 0x8500, 0x100300, 0x8c0, 0x42010, 0x1028, 0xa040, 0x300010, 0x400280, 0x1024, 0x90400, 0x1022, 0x1021, 0x1020, 0x4c0, 0x49000, 0x110010, 0x4220, 0x20208, 0x502000, 0x8900, 0x280400, 0x20204, 0x90800, 0x640000, 0x2180, 0x20200, 0x20201, 0x20202, 0x1050, 0x110002, 0x220100, 0x110000, 0x110001, 0xc4000, 0x8a0, 0x110004, 0x1048, 0xa020, 0x404400, 0x110008, 0x1044, 0x20210, 0x1042, 0x1041, 0x1040, 0x480100, 0x4202, 0x4201, 0x4200, 0x211000, 0x890, 0x42040, 0x4204, 0xa010, 0x300040, 0x1c00, 0x4208, 0x20220, 0x40500, 0x180080, 0x418000, 0xa008, 0x884, 0x110020, 0x4210, 0x881, 0x880, 0x420400, 0x882, 0xa000, 0xa001, 0xa002, 0xe0000, 0xa004, 0x888, 0x204100, 0x1060, 0x500, 0x501, 0x502, 0x2048, 0x504, 0x14080, 0xa0010, 0x600020, 0x508, 0x2042, 0x2041, 0x2040, 0x9020, 0x120800, 0x44200, 0x2044, 0x510, 0x501000, 0xa0004, 0x10a00, 0xa0002, 0x4a000, 0xa0000, 0xa0001, 0x40880, 0x84020, 0x308000, 0x2050, 0x410040, 0x200600, 0xa0008, 0x1180, 0x520, 0x60200, 0x104800, 0x600004, 0x9008, 0x600002, 0x600001, 0x600000, 0x9004, 0x84010, 0x30080, 0x2060, 0x9000, 0x9001, 0x9002, 0x600008, 0x212000, 0x84008, 0x41040, 0x8480, 0x100280, 0x940, 0xa0020, 0x600010, 0x84001, 0x84000, 0x400300, 0x84002, 0x9010, 0x84004, 0x2c00, 0x150000, 0x540, 0x200a, 0x2009, 0x2008, 0x340000, 0x81200, 0x8880, 0x200c, 0x2003, 0x2002, 0x2001, 0x2000, 0x410010, 0x2006, 0x2005, 0x2004, 0xc200, 0x220080, 0x41020, 0x2018, 0x410008, 0x920, 0xa0040, 0x104400, 0x410004, 0x2012, 0x2011, 0x2010, 0x410000, 0x410001, 0x410002, 0x2014, 0x480080, 0x118000, 0x41010, 0x2028, 0x26000, 0x910, 0x10600, 0x600040, 0x200a00, 0x2022, 0x2021, 0x2020, 0x9040, 0x40480, 0x180100, 0x2024, 0x41002, 0x904, 0x41000, 0x41001, 0x901, 0x900, 0x41004, 0x902, 0x120400, 0x84040, 0x41008, 0x2030, 0x410020, 0x908, 0x204080, 0x28200, 0x580, 0x14004, 0x201200, 0x1c0000, 0x14001, 0x14000, 0x8840, 0x14002, 0x40810, 0x408200, 0x30020, 0x20c0, 0x282000, 0x14008, 0x500400, 0x1110, 0x40808, 0x220040, 0x406000, 0x8420, 0x100220, 0x14010, 0xa0080, 0x1108, 0x40800, 0x40801, 0x40802, 0x1104, 0x40804, 0x1102, 0x1101, 0x1100, 0x480040, 0x3800, 0x30008, 0x8410, 0x100210, 0x14020, 0x42100, 0x600080, 0x30002, 0x300100, 0x30000, 0x30001, 0x9080, 0x40440, 0x30004, 0x80a00, 0x100204, 0x8402, 0x8401, 0x8400, 0x100200, 0x100201, 0x100202, 0x8404, 0x40820, 0x84080, 0x30010, 0x8408, 0x100208, 0x422000, 0x204040, 0x1120, 0x480020, 0x220010, 0x8804, 0x2088, 0x8802, 0x14040, 0x8800, 0x8801, 0x105000, 0x2082, 0x2081, 0x2080, 0x20300, 0x40420, 0x8808, 0x2084, 0x220001, 0x220000, 0x110100, 0x220002, 0x3400, 0x220004, 0x8810, 0x440200, 0x40840, 0x220008, 0x80600, 0x2090, 0x410080, 0x188000, 0x204020, 0x1140, 0x480000, 0x480001, 0x480002, 0x4300, 0x480004, 0x40408, 0x8820, 0x121000, 0x480008, 0x40404, 0x30040, 0x20a0, 0x40401, 0x40400, 0x204010, 0x40402, 0x480010, 0x220020, 0x41080, 0x8440, 0x100240, 0x980, 0x204008, 0x92000, 0xa100, 0x11200, 0x204004, 0x500800, 0x204002, 0x40410, 0x204000, 0x204001, 0x600, 0x601, 0x602, 0x108004, 0x604, 0x108002, 0x108001, 0x108000, 0x608, 0x5800, 0x400030, 0x2a0000, 0x200c0, 0x12020, 0x44100, 0x108008, 0x610, 0x82080, 0x400028, 0x10900, 0x51000, 0x424000, 0x202040, 0x108010, 0x400022, 0x140040, 0x400020, 0x400021, 0x88800, 0x200500, 0x400024, 0x1280, 0x620, 0x60100, 0x400018, 0x40c0, 0x284000, 0x12008, 0x21800, 0x108020, 0x400012, 0x12004, 0x400010, 0x400011, 0x12001, 0x12000, 0x400014, 0x12002, 0x40000a, 0x209000, 0x400008, 0x400009, 0x100180, 0xa40, 0x40000c, 0xc0400, 0x400002, 0x400003, 0x400000, 0x400001, 0x400006, 0x12010, 0x400004, 0x400005, 0x640, 0x610000, 0xc0800, 0x40a0, 0x20088, 0x81100, 0x202010, 0x108040, 0x20084, 0x140010, 0x19000, 0x2300, 0x20080, 0x20081, 0x20082, 0x400c00, 0xc100, 0x140008, 0x202004, 0x21400, 0x202002, 0xa20, 0x202000, 0x202001, 0x140001, 0x140000, 0x400060, 0x140002, 0x20090, 0x140004, 0x202008, 0x94000, 0x103000, 0x4082, 0x4081, 0x4080, 0x448000, 0xa10, 0x10500, 0x4084, 0x200900, 0x88400, 0x400050, 0x4088, 0x200a0, 0x12040, 0x180200, 0x241000, 0xb0000, 0xa04, 0x400048, 0x4090, 0xa01, 0xa00, 0x202020, 0xa02, 0x400042, 0x140020, 0x400040, 0x400041, 0x5400, 0xa08, 0x400044, 0x28100, 0x680, 0x82010, 0x201100, 0x4060, 0x20048, 0x240800, 0x490000, 0x108080, 0x20044, 0x408100, 0x102800, 0x50400, 0x20040, 0x20041, 0x20042, 0x1210, 0x82001, 0x82000, 0x68000, 0x82002, 0x100120, 0x82004, 0x4c00, 0x1208, 0x214000, 0x82008, 0x4000a0, 0x1204, 0x20050, 0x1202, 0x1201, 0x1200, 0x18800, 0x4042, 0x4041, 0x4040, 0x100110, 0x401400, 0x42200, 0x4044, 0xc1000, 0x300200, 0x400090, 0x4048, 0x20060, 0x12080, 0x208400, 0x80900, 0x100104, 0x82020, 0x400088, 0x4050, 0x100100, 0x100101, 0x100102, 0x230000, 0x400082, 0x20c00, 0x400080, 0x400081, 0x100108, 0x4c000, 0x400084, 0x1220, 0x2000c, 0x4022, 0x4021, 0x4020, 0x20008, 0x20009, 0x2000a, 0x4024, 0x20004, 0x20005, 0x20006, 0x4028, 0x20000, 0x20001, 0x20002, 0x20003, 0x401800, 0x82040, 0x110200, 0x4030, 0x20018, 0x18400, 0x202080, 0x440100, 0x20014, 0x140080, 0x80500, 0x208800, 0x20010, 0x20011, 0x20012, 0x1240, 0x4003, 0x4002, 0x4001, 0x4000, 0x20028, 0x4006, 0x4005, 0x4004, 0x20024, 0x400a, 0x4009, 0x4008, 0x20020, 0x20021, 0x20022, 0x400c, 0x240400, 0x4012, 0x4011, 0x4010, 0x100140, 0xa80, 0x89000, 0x4014, 0xa200, 0x11100, 0x4000c0, 0x4018, 0x20030, 0x680000, 0x50800, 0x102400, 0x700, 0x60020, 0x201080, 0x10810, 0x402800, 0x81040, 0x44008, 0x108100, 0x190000, 0x408080, 0x44004, 0x2240, 0x44002, 0x200410, 0x44000, 0x44001, 0xc040, 0x10802, 0x10801, 0x10800, 0x1000a0, 0x200408, 0xa0200, 0x10804, 0x23000, 0x200404, 0x400120, 0x10808, 0x200401, 0x200400, 0x44010, 0x200402, 0x60001, 0x60000, 0x8a000, 0x60002, 0x100090, 0x60004, 0x10440, 0x600200, 0x200840, 0x60008, 0x400110, 0x101400, 0x9200, 0x12100, 0x44020, 0x80880, 0x100084, 0x60010, 0x400108, 0x10820, 0x100080, 0x100081, 0x100082, 0x7000, 0x400102, 0x84200, 0x400100, 0x400101, 0x100088, 0x200420, 0x400104, 0x28040, 0xc010, 0x81004, 0x520000, 0x2208, 0x81001, 0x81000, 0x10420, 0x81002, 0x200820, 0x2202, 0x2201, 0x2200, 0x20180, 0x81008, 0x44040, 0x2204, 0xc000, 0xc001, 0xc002, 0x10840, 0xc004, 0x81010, 0x202100, 0x440080, 0xc008, 0x140100, 0x80480, 0x2210, 0x410200, 0x200440, 0x101800, 0x28020, 0x200808, 0x60040, 0x10404, 0x4180, 0x10402, 0x81020, 0x10400, 0x10401, 0x200800, 0x200801, 0x200802, 0x2220, 0x200804, 0x504000, 0x10408, 0x28010, 0xc020, 0x402400, 0x41200, 0x380000, 0x1000c0, 0xb00, 0x10410, 0x28008, 0x200810, 0x11080, 0x400140, 0x28004, 0xc2000, 0x28002, 0x28001, 0x28000, 0x201002, 0x408008, 0x201000, 0x201001, 0x100030, 0x14200, 0x201004, 0x22400, 0x408001, 0x408000, 0x201008, 0x408002, 0x20140, 0x408004, 0x44080, 0x80820, 0x100024, 0x82100, 0x201010, 0x10880, 0x100020, 0x100021, 0x100022, 0x440040, 0x40a00, 0x408010, 0x80440, 0x124000, 0x100028, 0x200480, 0x1a000, 0x1300, 0x100014, 0x60080, 0x201020, 0x4140, 0x100010, 0x100011, 0x100012, 0x80808, 0x6400, 0x408020, 0x30200, 0x80804, 0x100018, 0x80802, 0x80801, 0x80800, 0x100004, 0x100005, 0x100006, 0x8600, 0x100000, 0x100001, 0x100002, 0x100003, 0x10000c, 0x11040, 0x400180, 0x242000, 0x100008, 0x100009, 0x10000a, 0x80810, 0x52000, 0x100c00, 0x201040, 0x4120, 0x20108, 0x81080, 0x8a00, 0x440010, 0x20104, 0x408040, 0x80410, 0x2280, 0x20100, 0x20101, 0x20102, 0x310000, 0xc080, 0x220200, 0x80408, 0x440004, 0x100060, 0x440002, 0x440001, 0x440000, 0x80402, 0x11020, 0x80400, 0x80401, 0x20110, 0x6800, 0x80404, 0x440008, 0x480200, 0x4102, 0x4101, 0x4100, 0x100050, 0x20a000, 0x10480, 0x4104, 0x200880, 0x11010, 0x148000, 0x4108, 0x20120, 0x40600, 0x403000, 0x80840, 0x100044, 0x11008, 0x22800, 0x4110, 0x100040, 0x100041, 0x100042, 0x440020, 0x11001, 0x11000, 0x80420, 0x11002, 0x100048, 0x11004, 0x204200, 0x28080}; codec2-1.2.0/src/golayenctable.h000066400000000000000000001244641445607075400164510ustar00rootroot00000000000000/* Generated by golay23.c -DGOLAY23_MAKETABLE */ static const int encoding_table[] = { 0x0, 0xc75, 0x149f, 0x18ea, 0x254b, 0x293e, 0x31d4, 0x3da1, 0x46e3, 0x4a96, 0x527c, 0x5e09, 0x63a8, 0x6fdd, 0x7737, 0x7b42, 0x81b3, 0x8dc6, 0x952c, 0x9959, 0xa4f8, 0xa88d, 0xb067, 0xbc12, 0xc750, 0xcb25, 0xd3cf, 0xdfba, 0xe21b, 0xee6e, 0xf684, 0xfaf1, 0x10366, 0x10f13, 0x117f9, 0x11b8c, 0x1262d, 0x12a58, 0x132b2, 0x13ec7, 0x14585, 0x149f0, 0x1511a, 0x15d6f, 0x160ce, 0x16cbb, 0x17451, 0x17824, 0x182d5, 0x18ea0, 0x1964a, 0x19a3f, 0x1a79e, 0x1abeb, 0x1b301, 0x1bf74, 0x1c436, 0x1c843, 0x1d0a9, 0x1dcdc, 0x1e17d, 0x1ed08, 0x1f5e2, 0x1f997, 0x206cc, 0x20ab9, 0x21253, 0x21e26, 0x22387, 0x22ff2, 0x23718, 0x23b6d, 0x2402f, 0x24c5a, 0x254b0, 0x258c5, 0x26564, 0x26911, 0x271fb, 0x27d8e, 0x2877f, 0x28b0a, 0x293e0, 0x29f95, 0x2a234, 0x2ae41, 0x2b6ab, 0x2bade, 0x2c19c, 0x2cde9, 0x2d503, 0x2d976, 0x2e4d7, 0x2e8a2, 0x2f048, 0x2fc3d, 0x305aa, 0x309df, 0x31135, 0x31d40, 0x320e1, 0x32c94, 0x3347e, 0x3380b, 0x34349, 0x34f3c, 0x357d6, 0x35ba3, 0x36602, 0x36a77, 0x3729d, 0x37ee8, 0x38419, 0x3886c, 0x39086, 0x39cf3, 0x3a152, 0x3ad27, 0x3b5cd, 0x3b9b8, 0x3c2fa, 0x3ce8f, 0x3d665, 0x3da10, 0x3e7b1, 0x3ebc4, 0x3f32e, 0x3ff5b, 0x401ed, 0x40d98, 0x41572, 0x41907, 0x424a6, 0x428d3, 0x43039, 0x43c4c, 0x4470e, 0x44b7b, 0x45391, 0x45fe4, 0x46245, 0x46e30, 0x476da, 0x47aaf, 0x4805e, 0x48c2b, 0x494c1, 0x498b4, 0x4a515, 0x4a960, 0x4b18a, 0x4bdff, 0x4c6bd, 0x4cac8, 0x4d222, 0x4de57, 0x4e3f6, 0x4ef83, 0x4f769, 0x4fb1c, 0x5028b, 0x50efe, 0x51614, 0x51a61, 0x527c0, 0x52bb5, 0x5335f, 0x53f2a, 0x54468, 0x5481d, 0x550f7, 0x55c82, 0x56123, 0x56d56, 0x575bc, 0x579c9, 0x58338, 0x58f4d, 0x597a7, 0x59bd2, 0x5a673, 0x5aa06, 0x5b2ec, 0x5be99, 0x5c5db, 0x5c9ae, 0x5d144, 0x5dd31, 0x5e090, 0x5ece5, 0x5f40f, 0x5f87a, 0x60721, 0x60b54, 0x613be, 0x61fcb, 0x6226a, 0x62e1f, 0x636f5, 0x63a80, 0x641c2, 0x64db7, 0x6555d, 0x65928, 0x66489, 0x668fc, 0x67016, 0x67c63, 0x68692, 0x68ae7, 0x6920d, 0x69e78, 0x6a3d9, 0x6afac, 0x6b746, 0x6bb33, 0x6c071, 0x6cc04, 0x6d4ee, 0x6d89b, 0x6e53a, 0x6e94f, 0x6f1a5, 0x6fdd0, 0x70447, 0x70832, 0x710d8, 0x71cad, 0x7210c, 0x72d79, 0x73593, 0x739e6, 0x742a4, 0x74ed1, 0x7563b, 0x75a4e, 0x767ef, 0x76b9a, 0x77370, 0x77f05, 0x785f4, 0x78981, 0x7916b, 0x79d1e, 0x7a0bf, 0x7acca, 0x7b420, 0x7b855, 0x7c317, 0x7cf62, 0x7d788, 0x7dbfd, 0x7e65c, 0x7ea29, 0x7f2c3, 0x7feb6, 0x803da, 0x80faf, 0x81745, 0x81b30, 0x82691, 0x82ae4, 0x8320e, 0x83e7b, 0x84539, 0x8494c, 0x851a6, 0x85dd3, 0x86072, 0x86c07, 0x874ed, 0x87898, 0x88269, 0x88e1c, 0x896f6, 0x89a83, 0x8a722, 0x8ab57, 0x8b3bd, 0x8bfc8, 0x8c48a, 0x8c8ff, 0x8d015, 0x8dc60, 0x8e1c1, 0x8edb4, 0x8f55e, 0x8f92b, 0x900bc, 0x90cc9, 0x91423, 0x91856, 0x925f7, 0x92982, 0x93168, 0x93d1d, 0x9465f, 0x94a2a, 0x952c0, 0x95eb5, 0x96314, 0x96f61, 0x9778b, 0x97bfe, 0x9810f, 0x98d7a, 0x99590, 0x999e5, 0x9a444, 0x9a831, 0x9b0db, 0x9bcae, 0x9c7ec, 0x9cb99, 0x9d373, 0x9df06, 0x9e2a7, 0x9eed2, 0x9f638, 0x9fa4d, 0xa0516, 0xa0963, 0xa1189, 0xa1dfc, 0xa205d, 0xa2c28, 0xa34c2, 0xa38b7, 0xa43f5, 0xa4f80, 0xa576a, 0xa5b1f, 0xa66be, 0xa6acb, 0xa7221, 0xa7e54, 0xa84a5, 0xa88d0, 0xa903a, 0xa9c4f, 0xaa1ee, 0xaad9b, 0xab571, 0xab904, 0xac246, 0xace33, 0xad6d9, 0xadaac, 0xae70d, 0xaeb78, 0xaf392, 0xaffe7, 0xb0670, 0xb0a05, 0xb12ef, 0xb1e9a, 0xb233b, 0xb2f4e, 0xb37a4, 0xb3bd1, 0xb4093, 0xb4ce6, 0xb540c, 0xb5879, 0xb65d8, 0xb69ad, 0xb7147, 0xb7d32, 0xb87c3, 0xb8bb6, 0xb935c, 0xb9f29, 0xba288, 0xbaefd, 0xbb617, 0xbba62, 0xbc120, 0xbcd55, 0xbd5bf, 0xbd9ca, 0xbe46b, 0xbe81e, 0xbf0f4, 0xbfc81, 0xc0237, 0xc0e42, 0xc16a8, 0xc1add, 0xc277c, 0xc2b09, 0xc33e3, 0xc3f96, 0xc44d4, 0xc48a1, 0xc504b, 0xc5c3e, 0xc619f, 0xc6dea, 0xc7500, 0xc7975, 0xc8384, 0xc8ff1, 0xc971b, 0xc9b6e, 0xca6cf, 0xcaaba, 0xcb250, 0xcbe25, 0xcc567, 0xcc912, 0xcd1f8, 0xcdd8d, 0xce02c, 0xcec59, 0xcf4b3, 0xcf8c6, 0xd0151, 0xd0d24, 0xd15ce, 0xd19bb, 0xd241a, 0xd286f, 0xd3085, 0xd3cf0, 0xd47b2, 0xd4bc7, 0xd532d, 0xd5f58, 0xd62f9, 0xd6e8c, 0xd7666, 0xd7a13, 0xd80e2, 0xd8c97, 0xd947d, 0xd9808, 0xda5a9, 0xda9dc, 0xdb136, 0xdbd43, 0xdc601, 0xdca74, 0xdd29e, 0xddeeb, 0xde34a, 0xdef3f, 0xdf7d5, 0xdfba0, 0xe04fb, 0xe088e, 0xe1064, 0xe1c11, 0xe21b0, 0xe2dc5, 0xe352f, 0xe395a, 0xe4218, 0xe4e6d, 0xe5687, 0xe5af2, 0xe6753, 0xe6b26, 0xe73cc, 0xe7fb9, 0xe8548, 0xe893d, 0xe91d7, 0xe9da2, 0xea003, 0xeac76, 0xeb49c, 0xeb8e9, 0xec3ab, 0xecfde, 0xed734, 0xedb41, 0xee6e0, 0xeea95, 0xef27f, 0xefe0a, 0xf079d, 0xf0be8, 0xf1302, 0xf1f77, 0xf22d6, 0xf2ea3, 0xf3649, 0xf3a3c, 0xf417e, 0xf4d0b, 0xf55e1, 0xf5994, 0xf6435, 0xf6840, 0xf70aa, 0xf7cdf, 0xf862e, 0xf8a5b, 0xf92b1, 0xf9ec4, 0xfa365, 0xfaf10, 0xfb7fa, 0xfbb8f, 0xfc0cd, 0xfccb8, 0xfd452, 0xfd827, 0xfe586, 0xfe9f3, 0xff119, 0xffd6c, 0x1007b4, 0x100bc1, 0x10132b, 0x101f5e, 0x1022ff, 0x102e8a, 0x103660, 0x103a15, 0x104157, 0x104d22, 0x1055c8, 0x1059bd, 0x10641c, 0x106869, 0x107083, 0x107cf6, 0x108607, 0x108a72, 0x109298, 0x109eed, 0x10a34c, 0x10af39, 0x10b7d3, 0x10bba6, 0x10c0e4, 0x10cc91, 0x10d47b, 0x10d80e, 0x10e5af, 0x10e9da, 0x10f130, 0x10fd45, 0x1104d2, 0x1108a7, 0x11104d, 0x111c38, 0x112199, 0x112dec, 0x113506, 0x113973, 0x114231, 0x114e44, 0x1156ae, 0x115adb, 0x11677a, 0x116b0f, 0x1173e5, 0x117f90, 0x118561, 0x118914, 0x1191fe, 0x119d8b, 0x11a02a, 0x11ac5f, 0x11b4b5, 0x11b8c0, 0x11c382, 0x11cff7, 0x11d71d, 0x11db68, 0x11e6c9, 0x11eabc, 0x11f256, 0x11fe23, 0x120178, 0x120d0d, 0x1215e7, 0x121992, 0x122433, 0x122846, 0x1230ac, 0x123cd9, 0x12479b, 0x124bee, 0x125304, 0x125f71, 0x1262d0, 0x126ea5, 0x12764f, 0x127a3a, 0x1280cb, 0x128cbe, 0x129454, 0x129821, 0x12a580, 0x12a9f5, 0x12b11f, 0x12bd6a, 0x12c628, 0x12ca5d, 0x12d2b7, 0x12dec2, 0x12e363, 0x12ef16, 0x12f7fc, 0x12fb89, 0x13021e, 0x130e6b, 0x131681, 0x131af4, 0x132755, 0x132b20, 0x1333ca, 0x133fbf, 0x1344fd, 0x134888, 0x135062, 0x135c17, 0x1361b6, 0x136dc3, 0x137529, 0x13795c, 0x1383ad, 0x138fd8, 0x139732, 0x139b47, 0x13a6e6, 0x13aa93, 0x13b279, 0x13be0c, 0x13c54e, 0x13c93b, 0x13d1d1, 0x13dda4, 0x13e005, 0x13ec70, 0x13f49a, 0x13f8ef, 0x140659, 0x140a2c, 0x1412c6, 0x141eb3, 0x142312, 0x142f67, 0x14378d, 0x143bf8, 0x1440ba, 0x144ccf, 0x145425, 0x145850, 0x1465f1, 0x146984, 0x14716e, 0x147d1b, 0x1487ea, 0x148b9f, 0x149375, 0x149f00, 0x14a2a1, 0x14aed4, 0x14b63e, 0x14ba4b, 0x14c109, 0x14cd7c, 0x14d596, 0x14d9e3, 0x14e442, 0x14e837, 0x14f0dd, 0x14fca8, 0x15053f, 0x15094a, 0x1511a0, 0x151dd5, 0x152074, 0x152c01, 0x1534eb, 0x15389e, 0x1543dc, 0x154fa9, 0x155743, 0x155b36, 0x156697, 0x156ae2, 0x157208, 0x157e7d, 0x15848c, 0x1588f9, 0x159013, 0x159c66, 0x15a1c7, 0x15adb2, 0x15b558, 0x15b92d, 0x15c26f, 0x15ce1a, 0x15d6f0, 0x15da85, 0x15e724, 0x15eb51, 0x15f3bb, 0x15ffce, 0x160095, 0x160ce0, 0x16140a, 0x16187f, 0x1625de, 0x1629ab, 0x163141, 0x163d34, 0x164676, 0x164a03, 0x1652e9, 0x165e9c, 0x16633d, 0x166f48, 0x1677a2, 0x167bd7, 0x168126, 0x168d53, 0x1695b9, 0x1699cc, 0x16a46d, 0x16a818, 0x16b0f2, 0x16bc87, 0x16c7c5, 0x16cbb0, 0x16d35a, 0x16df2f, 0x16e28e, 0x16eefb, 0x16f611, 0x16fa64, 0x1703f3, 0x170f86, 0x17176c, 0x171b19, 0x1726b8, 0x172acd, 0x173227, 0x173e52, 0x174510, 0x174965, 0x17518f, 0x175dfa, 0x17605b, 0x176c2e, 0x1774c4, 0x1778b1, 0x178240, 0x178e35, 0x1796df, 0x179aaa, 0x17a70b, 0x17ab7e, 0x17b394, 0x17bfe1, 0x17c4a3, 0x17c8d6, 0x17d03c, 0x17dc49, 0x17e1e8, 0x17ed9d, 0x17f577, 0x17f902, 0x18046e, 0x18081b, 0x1810f1, 0x181c84, 0x182125, 0x182d50, 0x1835ba, 0x1839cf, 0x18428d, 0x184ef8, 0x185612, 0x185a67, 0x1867c6, 0x186bb3, 0x187359, 0x187f2c, 0x1885dd, 0x1889a8, 0x189142, 0x189d37, 0x18a096, 0x18ace3, 0x18b409, 0x18b87c, 0x18c33e, 0x18cf4b, 0x18d7a1, 0x18dbd4, 0x18e675, 0x18ea00, 0x18f2ea, 0x18fe9f, 0x190708, 0x190b7d, 0x191397, 0x191fe2, 0x192243, 0x192e36, 0x1936dc, 0x193aa9, 0x1941eb, 0x194d9e, 0x195574, 0x195901, 0x1964a0, 0x1968d5, 0x19703f, 0x197c4a, 0x1986bb, 0x198ace, 0x199224, 0x199e51, 0x19a3f0, 0x19af85, 0x19b76f, 0x19bb1a, 0x19c058, 0x19cc2d, 0x19d4c7, 0x19d8b2, 0x19e513, 0x19e966, 0x19f18c, 0x19fdf9, 0x1a02a2, 0x1a0ed7, 0x1a163d, 0x1a1a48, 0x1a27e9, 0x1a2b9c, 0x1a3376, 0x1a3f03, 0x1a4441, 0x1a4834, 0x1a50de, 0x1a5cab, 0x1a610a, 0x1a6d7f, 0x1a7595, 0x1a79e0, 0x1a8311, 0x1a8f64, 0x1a978e, 0x1a9bfb, 0x1aa65a, 0x1aaa2f, 0x1ab2c5, 0x1abeb0, 0x1ac5f2, 0x1ac987, 0x1ad16d, 0x1add18, 0x1ae0b9, 0x1aeccc, 0x1af426, 0x1af853, 0x1b01c4, 0x1b0db1, 0x1b155b, 0x1b192e, 0x1b248f, 0x1b28fa, 0x1b3010, 0x1b3c65, 0x1b4727, 0x1b4b52, 0x1b53b8, 0x1b5fcd, 0x1b626c, 0x1b6e19, 0x1b76f3, 0x1b7a86, 0x1b8077, 0x1b8c02, 0x1b94e8, 0x1b989d, 0x1ba53c, 0x1ba949, 0x1bb1a3, 0x1bbdd6, 0x1bc694, 0x1bcae1, 0x1bd20b, 0x1bde7e, 0x1be3df, 0x1befaa, 0x1bf740, 0x1bfb35, 0x1c0583, 0x1c09f6, 0x1c111c, 0x1c1d69, 0x1c20c8, 0x1c2cbd, 0x1c3457, 0x1c3822, 0x1c4360, 0x1c4f15, 0x1c57ff, 0x1c5b8a, 0x1c662b, 0x1c6a5e, 0x1c72b4, 0x1c7ec1, 0x1c8430, 0x1c8845, 0x1c90af, 0x1c9cda, 0x1ca17b, 0x1cad0e, 0x1cb5e4, 0x1cb991, 0x1cc2d3, 0x1ccea6, 0x1cd64c, 0x1cda39, 0x1ce798, 0x1cebed, 0x1cf307, 0x1cff72, 0x1d06e5, 0x1d0a90, 0x1d127a, 0x1d1e0f, 0x1d23ae, 0x1d2fdb, 0x1d3731, 0x1d3b44, 0x1d4006, 0x1d4c73, 0x1d5499, 0x1d58ec, 0x1d654d, 0x1d6938, 0x1d71d2, 0x1d7da7, 0x1d8756, 0x1d8b23, 0x1d93c9, 0x1d9fbc, 0x1da21d, 0x1dae68, 0x1db682, 0x1dbaf7, 0x1dc1b5, 0x1dcdc0, 0x1dd52a, 0x1dd95f, 0x1de4fe, 0x1de88b, 0x1df061, 0x1dfc14, 0x1e034f, 0x1e0f3a, 0x1e17d0, 0x1e1ba5, 0x1e2604, 0x1e2a71, 0x1e329b, 0x1e3eee, 0x1e45ac, 0x1e49d9, 0x1e5133, 0x1e5d46, 0x1e60e7, 0x1e6c92, 0x1e7478, 0x1e780d, 0x1e82fc, 0x1e8e89, 0x1e9663, 0x1e9a16, 0x1ea7b7, 0x1eabc2, 0x1eb328, 0x1ebf5d, 0x1ec41f, 0x1ec86a, 0x1ed080, 0x1edcf5, 0x1ee154, 0x1eed21, 0x1ef5cb, 0x1ef9be, 0x1f0029, 0x1f0c5c, 0x1f14b6, 0x1f18c3, 0x1f2562, 0x1f2917, 0x1f31fd, 0x1f3d88, 0x1f46ca, 0x1f4abf, 0x1f5255, 0x1f5e20, 0x1f6381, 0x1f6ff4, 0x1f771e, 0x1f7b6b, 0x1f819a, 0x1f8def, 0x1f9505, 0x1f9970, 0x1fa4d1, 0x1fa8a4, 0x1fb04e, 0x1fbc3b, 0x1fc779, 0x1fcb0c, 0x1fd3e6, 0x1fdf93, 0x1fe232, 0x1fee47, 0x1ff6ad, 0x1ffad8, 0x20031d, 0x200f68, 0x201782, 0x201bf7, 0x202656, 0x202a23, 0x2032c9, 0x203ebc, 0x2045fe, 0x20498b, 0x205161, 0x205d14, 0x2060b5, 0x206cc0, 0x20742a, 0x20785f, 0x2082ae, 0x208edb, 0x209631, 0x209a44, 0x20a7e5, 0x20ab90, 0x20b37a, 0x20bf0f, 0x20c44d, 0x20c838, 0x20d0d2, 0x20dca7, 0x20e106, 0x20ed73, 0x20f599, 0x20f9ec, 0x21007b, 0x210c0e, 0x2114e4, 0x211891, 0x212530, 0x212945, 0x2131af, 0x213dda, 0x214698, 0x214aed, 0x215207, 0x215e72, 0x2163d3, 0x216fa6, 0x21774c, 0x217b39, 0x2181c8, 0x218dbd, 0x219557, 0x219922, 0x21a483, 0x21a8f6, 0x21b01c, 0x21bc69, 0x21c72b, 0x21cb5e, 0x21d3b4, 0x21dfc1, 0x21e260, 0x21ee15, 0x21f6ff, 0x21fa8a, 0x2205d1, 0x2209a4, 0x22114e, 0x221d3b, 0x22209a, 0x222cef, 0x223405, 0x223870, 0x224332, 0x224f47, 0x2257ad, 0x225bd8, 0x226679, 0x226a0c, 0x2272e6, 0x227e93, 0x228462, 0x228817, 0x2290fd, 0x229c88, 0x22a129, 0x22ad5c, 0x22b5b6, 0x22b9c3, 0x22c281, 0x22cef4, 0x22d61e, 0x22da6b, 0x22e7ca, 0x22ebbf, 0x22f355, 0x22ff20, 0x2306b7, 0x230ac2, 0x231228, 0x231e5d, 0x2323fc, 0x232f89, 0x233763, 0x233b16, 0x234054, 0x234c21, 0x2354cb, 0x2358be, 0x23651f, 0x23696a, 0x237180, 0x237df5, 0x238704, 0x238b71, 0x23939b, 0x239fee, 0x23a24f, 0x23ae3a, 0x23b6d0, 0x23baa5, 0x23c1e7, 0x23cd92, 0x23d578, 0x23d90d, 0x23e4ac, 0x23e8d9, 0x23f033, 0x23fc46, 0x2402f0, 0x240e85, 0x24166f, 0x241a1a, 0x2427bb, 0x242bce, 0x243324, 0x243f51, 0x244413, 0x244866, 0x24508c, 0x245cf9, 0x246158, 0x246d2d, 0x2475c7, 0x2479b2, 0x248343, 0x248f36, 0x2497dc, 0x249ba9, 0x24a608, 0x24aa7d, 0x24b297, 0x24bee2, 0x24c5a0, 0x24c9d5, 0x24d13f, 0x24dd4a, 0x24e0eb, 0x24ec9e, 0x24f474, 0x24f801, 0x250196, 0x250de3, 0x251509, 0x25197c, 0x2524dd, 0x2528a8, 0x253042, 0x253c37, 0x254775, 0x254b00, 0x2553ea, 0x255f9f, 0x25623e, 0x256e4b, 0x2576a1, 0x257ad4, 0x258025, 0x258c50, 0x2594ba, 0x2598cf, 0x25a56e, 0x25a91b, 0x25b1f1, 0x25bd84, 0x25c6c6, 0x25cab3, 0x25d259, 0x25de2c, 0x25e38d, 0x25eff8, 0x25f712, 0x25fb67, 0x26043c, 0x260849, 0x2610a3, 0x261cd6, 0x262177, 0x262d02, 0x2635e8, 0x26399d, 0x2642df, 0x264eaa, 0x265640, 0x265a35, 0x266794, 0x266be1, 0x26730b, 0x267f7e, 0x26858f, 0x2689fa, 0x269110, 0x269d65, 0x26a0c4, 0x26acb1, 0x26b45b, 0x26b82e, 0x26c36c, 0x26cf19, 0x26d7f3, 0x26db86, 0x26e627, 0x26ea52, 0x26f2b8, 0x26fecd, 0x27075a, 0x270b2f, 0x2713c5, 0x271fb0, 0x272211, 0x272e64, 0x27368e, 0x273afb, 0x2741b9, 0x274dcc, 0x275526, 0x275953, 0x2764f2, 0x276887, 0x27706d, 0x277c18, 0x2786e9, 0x278a9c, 0x279276, 0x279e03, 0x27a3a2, 0x27afd7, 0x27b73d, 0x27bb48, 0x27c00a, 0x27cc7f, 0x27d495, 0x27d8e0, 0x27e541, 0x27e934, 0x27f1de, 0x27fdab, 0x2800c7, 0x280cb2, 0x281458, 0x28182d, 0x28258c, 0x2829f9, 0x283113, 0x283d66, 0x284624, 0x284a51, 0x2852bb, 0x285ece, 0x28636f, 0x286f1a, 0x2877f0, 0x287b85, 0x288174, 0x288d01, 0x2895eb, 0x28999e, 0x28a43f, 0x28a84a, 0x28b0a0, 0x28bcd5, 0x28c797, 0x28cbe2, 0x28d308, 0x28df7d, 0x28e2dc, 0x28eea9, 0x28f643, 0x28fa36, 0x2903a1, 0x290fd4, 0x29173e, 0x291b4b, 0x2926ea, 0x292a9f, 0x293275, 0x293e00, 0x294542, 0x294937, 0x2951dd, 0x295da8, 0x296009, 0x296c7c, 0x297496, 0x2978e3, 0x298212, 0x298e67, 0x29968d, 0x299af8, 0x29a759, 0x29ab2c, 0x29b3c6, 0x29bfb3, 0x29c4f1, 0x29c884, 0x29d06e, 0x29dc1b, 0x29e1ba, 0x29edcf, 0x29f525, 0x29f950, 0x2a060b, 0x2a0a7e, 0x2a1294, 0x2a1ee1, 0x2a2340, 0x2a2f35, 0x2a37df, 0x2a3baa, 0x2a40e8, 0x2a4c9d, 0x2a5477, 0x2a5802, 0x2a65a3, 0x2a69d6, 0x2a713c, 0x2a7d49, 0x2a87b8, 0x2a8bcd, 0x2a9327, 0x2a9f52, 0x2aa2f3, 0x2aae86, 0x2ab66c, 0x2aba19, 0x2ac15b, 0x2acd2e, 0x2ad5c4, 0x2ad9b1, 0x2ae410, 0x2ae865, 0x2af08f, 0x2afcfa, 0x2b056d, 0x2b0918, 0x2b11f2, 0x2b1d87, 0x2b2026, 0x2b2c53, 0x2b34b9, 0x2b38cc, 0x2b438e, 0x2b4ffb, 0x2b5711, 0x2b5b64, 0x2b66c5, 0x2b6ab0, 0x2b725a, 0x2b7e2f, 0x2b84de, 0x2b88ab, 0x2b9041, 0x2b9c34, 0x2ba195, 0x2bade0, 0x2bb50a, 0x2bb97f, 0x2bc23d, 0x2bce48, 0x2bd6a2, 0x2bdad7, 0x2be776, 0x2beb03, 0x2bf3e9, 0x2bff9c, 0x2c012a, 0x2c0d5f, 0x2c15b5, 0x2c19c0, 0x2c2461, 0x2c2814, 0x2c30fe, 0x2c3c8b, 0x2c47c9, 0x2c4bbc, 0x2c5356, 0x2c5f23, 0x2c6282, 0x2c6ef7, 0x2c761d, 0x2c7a68, 0x2c8099, 0x2c8cec, 0x2c9406, 0x2c9873, 0x2ca5d2, 0x2ca9a7, 0x2cb14d, 0x2cbd38, 0x2cc67a, 0x2cca0f, 0x2cd2e5, 0x2cde90, 0x2ce331, 0x2cef44, 0x2cf7ae, 0x2cfbdb, 0x2d024c, 0x2d0e39, 0x2d16d3, 0x2d1aa6, 0x2d2707, 0x2d2b72, 0x2d3398, 0x2d3fed, 0x2d44af, 0x2d48da, 0x2d5030, 0x2d5c45, 0x2d61e4, 0x2d6d91, 0x2d757b, 0x2d790e, 0x2d83ff, 0x2d8f8a, 0x2d9760, 0x2d9b15, 0x2da6b4, 0x2daac1, 0x2db22b, 0x2dbe5e, 0x2dc51c, 0x2dc969, 0x2dd183, 0x2dddf6, 0x2de057, 0x2dec22, 0x2df4c8, 0x2df8bd, 0x2e07e6, 0x2e0b93, 0x2e1379, 0x2e1f0c, 0x2e22ad, 0x2e2ed8, 0x2e3632, 0x2e3a47, 0x2e4105, 0x2e4d70, 0x2e559a, 0x2e59ef, 0x2e644e, 0x2e683b, 0x2e70d1, 0x2e7ca4, 0x2e8655, 0x2e8a20, 0x2e92ca, 0x2e9ebf, 0x2ea31e, 0x2eaf6b, 0x2eb781, 0x2ebbf4, 0x2ec0b6, 0x2eccc3, 0x2ed429, 0x2ed85c, 0x2ee5fd, 0x2ee988, 0x2ef162, 0x2efd17, 0x2f0480, 0x2f08f5, 0x2f101f, 0x2f1c6a, 0x2f21cb, 0x2f2dbe, 0x2f3554, 0x2f3921, 0x2f4263, 0x2f4e16, 0x2f56fc, 0x2f5a89, 0x2f6728, 0x2f6b5d, 0x2f73b7, 0x2f7fc2, 0x2f8533, 0x2f8946, 0x2f91ac, 0x2f9dd9, 0x2fa078, 0x2fac0d, 0x2fb4e7, 0x2fb892, 0x2fc3d0, 0x2fcfa5, 0x2fd74f, 0x2fdb3a, 0x2fe69b, 0x2feaee, 0x2ff204, 0x2ffe71, 0x3004a9, 0x3008dc, 0x301036, 0x301c43, 0x3021e2, 0x302d97, 0x30357d, 0x303908, 0x30424a, 0x304e3f, 0x3056d5, 0x305aa0, 0x306701, 0x306b74, 0x30739e, 0x307feb, 0x30851a, 0x30896f, 0x309185, 0x309df0, 0x30a051, 0x30ac24, 0x30b4ce, 0x30b8bb, 0x30c3f9, 0x30cf8c, 0x30d766, 0x30db13, 0x30e6b2, 0x30eac7, 0x30f22d, 0x30fe58, 0x3107cf, 0x310bba, 0x311350, 0x311f25, 0x312284, 0x312ef1, 0x31361b, 0x313a6e, 0x31412c, 0x314d59, 0x3155b3, 0x3159c6, 0x316467, 0x316812, 0x3170f8, 0x317c8d, 0x31867c, 0x318a09, 0x3192e3, 0x319e96, 0x31a337, 0x31af42, 0x31b7a8, 0x31bbdd, 0x31c09f, 0x31ccea, 0x31d400, 0x31d875, 0x31e5d4, 0x31e9a1, 0x31f14b, 0x31fd3e, 0x320265, 0x320e10, 0x3216fa, 0x321a8f, 0x32272e, 0x322b5b, 0x3233b1, 0x323fc4, 0x324486, 0x3248f3, 0x325019, 0x325c6c, 0x3261cd, 0x326db8, 0x327552, 0x327927, 0x3283d6, 0x328fa3, 0x329749, 0x329b3c, 0x32a69d, 0x32aae8, 0x32b202, 0x32be77, 0x32c535, 0x32c940, 0x32d1aa, 0x32dddf, 0x32e07e, 0x32ec0b, 0x32f4e1, 0x32f894, 0x330103, 0x330d76, 0x33159c, 0x3319e9, 0x332448, 0x33283d, 0x3330d7, 0x333ca2, 0x3347e0, 0x334b95, 0x33537f, 0x335f0a, 0x3362ab, 0x336ede, 0x337634, 0x337a41, 0x3380b0, 0x338cc5, 0x33942f, 0x33985a, 0x33a5fb, 0x33a98e, 0x33b164, 0x33bd11, 0x33c653, 0x33ca26, 0x33d2cc, 0x33deb9, 0x33e318, 0x33ef6d, 0x33f787, 0x33fbf2, 0x340544, 0x340931, 0x3411db, 0x341dae, 0x34200f, 0x342c7a, 0x343490, 0x3438e5, 0x3443a7, 0x344fd2, 0x345738, 0x345b4d, 0x3466ec, 0x346a99, 0x347273, 0x347e06, 0x3484f7, 0x348882, 0x349068, 0x349c1d, 0x34a1bc, 0x34adc9, 0x34b523, 0x34b956, 0x34c214, 0x34ce61, 0x34d68b, 0x34dafe, 0x34e75f, 0x34eb2a, 0x34f3c0, 0x34ffb5, 0x350622, 0x350a57, 0x3512bd, 0x351ec8, 0x352369, 0x352f1c, 0x3537f6, 0x353b83, 0x3540c1, 0x354cb4, 0x35545e, 0x35582b, 0x35658a, 0x3569ff, 0x357115, 0x357d60, 0x358791, 0x358be4, 0x35930e, 0x359f7b, 0x35a2da, 0x35aeaf, 0x35b645, 0x35ba30, 0x35c172, 0x35cd07, 0x35d5ed, 0x35d998, 0x35e439, 0x35e84c, 0x35f0a6, 0x35fcd3, 0x360388, 0x360ffd, 0x361717, 0x361b62, 0x3626c3, 0x362ab6, 0x36325c, 0x363e29, 0x36456b, 0x36491e, 0x3651f4, 0x365d81, 0x366020, 0x366c55, 0x3674bf, 0x3678ca, 0x36823b, 0x368e4e, 0x3696a4, 0x369ad1, 0x36a770, 0x36ab05, 0x36b3ef, 0x36bf9a, 0x36c4d8, 0x36c8ad, 0x36d047, 0x36dc32, 0x36e193, 0x36ede6, 0x36f50c, 0x36f979, 0x3700ee, 0x370c9b, 0x371471, 0x371804, 0x3725a5, 0x3729d0, 0x37313a, 0x373d4f, 0x37460d, 0x374a78, 0x375292, 0x375ee7, 0x376346, 0x376f33, 0x3777d9, 0x377bac, 0x37815d, 0x378d28, 0x3795c2, 0x3799b7, 0x37a416, 0x37a863, 0x37b089, 0x37bcfc, 0x37c7be, 0x37cbcb, 0x37d321, 0x37df54, 0x37e2f5, 0x37ee80, 0x37f66a, 0x37fa1f, 0x380773, 0x380b06, 0x3813ec, 0x381f99, 0x382238, 0x382e4d, 0x3836a7, 0x383ad2, 0x384190, 0x384de5, 0x38550f, 0x38597a, 0x3864db, 0x3868ae, 0x387044, 0x387c31, 0x3886c0, 0x388ab5, 0x38925f, 0x389e2a, 0x38a38b, 0x38affe, 0x38b714, 0x38bb61, 0x38c023, 0x38cc56, 0x38d4bc, 0x38d8c9, 0x38e568, 0x38e91d, 0x38f1f7, 0x38fd82, 0x390415, 0x390860, 0x39108a, 0x391cff, 0x39215e, 0x392d2b, 0x3935c1, 0x3939b4, 0x3942f6, 0x394e83, 0x395669, 0x395a1c, 0x3967bd, 0x396bc8, 0x397322, 0x397f57, 0x3985a6, 0x3989d3, 0x399139, 0x399d4c, 0x39a0ed, 0x39ac98, 0x39b472, 0x39b807, 0x39c345, 0x39cf30, 0x39d7da, 0x39dbaf, 0x39e60e, 0x39ea7b, 0x39f291, 0x39fee4, 0x3a01bf, 0x3a0dca, 0x3a1520, 0x3a1955, 0x3a24f4, 0x3a2881, 0x3a306b, 0x3a3c1e, 0x3a475c, 0x3a4b29, 0x3a53c3, 0x3a5fb6, 0x3a6217, 0x3a6e62, 0x3a7688, 0x3a7afd, 0x3a800c, 0x3a8c79, 0x3a9493, 0x3a98e6, 0x3aa547, 0x3aa932, 0x3ab1d8, 0x3abdad, 0x3ac6ef, 0x3aca9a, 0x3ad270, 0x3ade05, 0x3ae3a4, 0x3aefd1, 0x3af73b, 0x3afb4e, 0x3b02d9, 0x3b0eac, 0x3b1646, 0x3b1a33, 0x3b2792, 0x3b2be7, 0x3b330d, 0x3b3f78, 0x3b443a, 0x3b484f, 0x3b50a5, 0x3b5cd0, 0x3b6171, 0x3b6d04, 0x3b75ee, 0x3b799b, 0x3b836a, 0x3b8f1f, 0x3b97f5, 0x3b9b80, 0x3ba621, 0x3baa54, 0x3bb2be, 0x3bbecb, 0x3bc589, 0x3bc9fc, 0x3bd116, 0x3bdd63, 0x3be0c2, 0x3becb7, 0x3bf45d, 0x3bf828, 0x3c069e, 0x3c0aeb, 0x3c1201, 0x3c1e74, 0x3c23d5, 0x3c2fa0, 0x3c374a, 0x3c3b3f, 0x3c407d, 0x3c4c08, 0x3c54e2, 0x3c5897, 0x3c6536, 0x3c6943, 0x3c71a9, 0x3c7ddc, 0x3c872d, 0x3c8b58, 0x3c93b2, 0x3c9fc7, 0x3ca266, 0x3cae13, 0x3cb6f9, 0x3cba8c, 0x3cc1ce, 0x3ccdbb, 0x3cd551, 0x3cd924, 0x3ce485, 0x3ce8f0, 0x3cf01a, 0x3cfc6f, 0x3d05f8, 0x3d098d, 0x3d1167, 0x3d1d12, 0x3d20b3, 0x3d2cc6, 0x3d342c, 0x3d3859, 0x3d431b, 0x3d4f6e, 0x3d5784, 0x3d5bf1, 0x3d6650, 0x3d6a25, 0x3d72cf, 0x3d7eba, 0x3d844b, 0x3d883e, 0x3d90d4, 0x3d9ca1, 0x3da100, 0x3dad75, 0x3db59f, 0x3db9ea, 0x3dc2a8, 0x3dcedd, 0x3dd637, 0x3dda42, 0x3de7e3, 0x3deb96, 0x3df37c, 0x3dff09, 0x3e0052, 0x3e0c27, 0x3e14cd, 0x3e18b8, 0x3e2519, 0x3e296c, 0x3e3186, 0x3e3df3, 0x3e46b1, 0x3e4ac4, 0x3e522e, 0x3e5e5b, 0x3e63fa, 0x3e6f8f, 0x3e7765, 0x3e7b10, 0x3e81e1, 0x3e8d94, 0x3e957e, 0x3e990b, 0x3ea4aa, 0x3ea8df, 0x3eb035, 0x3ebc40, 0x3ec702, 0x3ecb77, 0x3ed39d, 0x3edfe8, 0x3ee249, 0x3eee3c, 0x3ef6d6, 0x3efaa3, 0x3f0334, 0x3f0f41, 0x3f17ab, 0x3f1bde, 0x3f267f, 0x3f2a0a, 0x3f32e0, 0x3f3e95, 0x3f45d7, 0x3f49a2, 0x3f5148, 0x3f5d3d, 0x3f609c, 0x3f6ce9, 0x3f7403, 0x3f7876, 0x3f8287, 0x3f8ef2, 0x3f9618, 0x3f9a6d, 0x3fa7cc, 0x3fabb9, 0x3fb353, 0x3fbf26, 0x3fc464, 0x3fc811, 0x3fd0fb, 0x3fdc8e, 0x3fe12f, 0x3fed5a, 0x3ff5b0, 0x3ff9c5, 0x40063a, 0x400a4f, 0x4012a5, 0x401ed0, 0x402371, 0x402f04, 0x4037ee, 0x403b9b, 0x4040d9, 0x404cac, 0x405446, 0x405833, 0x406592, 0x4069e7, 0x40710d, 0x407d78, 0x408789, 0x408bfc, 0x409316, 0x409f63, 0x40a2c2, 0x40aeb7, 0x40b65d, 0x40ba28, 0x40c16a, 0x40cd1f, 0x40d5f5, 0x40d980, 0x40e421, 0x40e854, 0x40f0be, 0x40fccb, 0x41055c, 0x410929, 0x4111c3, 0x411db6, 0x412017, 0x412c62, 0x413488, 0x4138fd, 0x4143bf, 0x414fca, 0x415720, 0x415b55, 0x4166f4, 0x416a81, 0x41726b, 0x417e1e, 0x4184ef, 0x41889a, 0x419070, 0x419c05, 0x41a1a4, 0x41add1, 0x41b53b, 0x41b94e, 0x41c20c, 0x41ce79, 0x41d693, 0x41dae6, 0x41e747, 0x41eb32, 0x41f3d8, 0x41ffad, 0x4200f6, 0x420c83, 0x421469, 0x42181c, 0x4225bd, 0x4229c8, 0x423122, 0x423d57, 0x424615, 0x424a60, 0x42528a, 0x425eff, 0x42635e, 0x426f2b, 0x4277c1, 0x427bb4, 0x428145, 0x428d30, 0x4295da, 0x4299af, 0x42a40e, 0x42a87b, 0x42b091, 0x42bce4, 0x42c7a6, 0x42cbd3, 0x42d339, 0x42df4c, 0x42e2ed, 0x42ee98, 0x42f672, 0x42fa07, 0x430390, 0x430fe5, 0x43170f, 0x431b7a, 0x4326db, 0x432aae, 0x433244, 0x433e31, 0x434573, 0x434906, 0x4351ec, 0x435d99, 0x436038, 0x436c4d, 0x4374a7, 0x4378d2, 0x438223, 0x438e56, 0x4396bc, 0x439ac9, 0x43a768, 0x43ab1d, 0x43b3f7, 0x43bf82, 0x43c4c0, 0x43c8b5, 0x43d05f, 0x43dc2a, 0x43e18b, 0x43edfe, 0x43f514, 0x43f961, 0x4407d7, 0x440ba2, 0x441348, 0x441f3d, 0x44229c, 0x442ee9, 0x443603, 0x443a76, 0x444134, 0x444d41, 0x4455ab, 0x4459de, 0x44647f, 0x44680a, 0x4470e0, 0x447c95, 0x448664, 0x448a11, 0x4492fb, 0x449e8e, 0x44a32f, 0x44af5a, 0x44b7b0, 0x44bbc5, 0x44c087, 0x44ccf2, 0x44d418, 0x44d86d, 0x44e5cc, 0x44e9b9, 0x44f153, 0x44fd26, 0x4504b1, 0x4508c4, 0x45102e, 0x451c5b, 0x4521fa, 0x452d8f, 0x453565, 0x453910, 0x454252, 0x454e27, 0x4556cd, 0x455ab8, 0x456719, 0x456b6c, 0x457386, 0x457ff3, 0x458502, 0x458977, 0x45919d, 0x459de8, 0x45a049, 0x45ac3c, 0x45b4d6, 0x45b8a3, 0x45c3e1, 0x45cf94, 0x45d77e, 0x45db0b, 0x45e6aa, 0x45eadf, 0x45f235, 0x45fe40, 0x46011b, 0x460d6e, 0x461584, 0x4619f1, 0x462450, 0x462825, 0x4630cf, 0x463cba, 0x4647f8, 0x464b8d, 0x465367, 0x465f12, 0x4662b3, 0x466ec6, 0x46762c, 0x467a59, 0x4680a8, 0x468cdd, 0x469437, 0x469842, 0x46a5e3, 0x46a996, 0x46b17c, 0x46bd09, 0x46c64b, 0x46ca3e, 0x46d2d4, 0x46dea1, 0x46e300, 0x46ef75, 0x46f79f, 0x46fbea, 0x47027d, 0x470e08, 0x4716e2, 0x471a97, 0x472736, 0x472b43, 0x4733a9, 0x473fdc, 0x47449e, 0x4748eb, 0x475001, 0x475c74, 0x4761d5, 0x476da0, 0x47754a, 0x47793f, 0x4783ce, 0x478fbb, 0x479751, 0x479b24, 0x47a685, 0x47aaf0, 0x47b21a, 0x47be6f, 0x47c52d, 0x47c958, 0x47d1b2, 0x47ddc7, 0x47e066, 0x47ec13, 0x47f4f9, 0x47f88c, 0x4805e0, 0x480995, 0x48117f, 0x481d0a, 0x4820ab, 0x482cde, 0x483434, 0x483841, 0x484303, 0x484f76, 0x48579c, 0x485be9, 0x486648, 0x486a3d, 0x4872d7, 0x487ea2, 0x488453, 0x488826, 0x4890cc, 0x489cb9, 0x48a118, 0x48ad6d, 0x48b587, 0x48b9f2, 0x48c2b0, 0x48cec5, 0x48d62f, 0x48da5a, 0x48e7fb, 0x48eb8e, 0x48f364, 0x48ff11, 0x490686, 0x490af3, 0x491219, 0x491e6c, 0x4923cd, 0x492fb8, 0x493752, 0x493b27, 0x494065, 0x494c10, 0x4954fa, 0x49588f, 0x49652e, 0x49695b, 0x4971b1, 0x497dc4, 0x498735, 0x498b40, 0x4993aa, 0x499fdf, 0x49a27e, 0x49ae0b, 0x49b6e1, 0x49ba94, 0x49c1d6, 0x49cda3, 0x49d549, 0x49d93c, 0x49e49d, 0x49e8e8, 0x49f002, 0x49fc77, 0x4a032c, 0x4a0f59, 0x4a17b3, 0x4a1bc6, 0x4a2667, 0x4a2a12, 0x4a32f8, 0x4a3e8d, 0x4a45cf, 0x4a49ba, 0x4a5150, 0x4a5d25, 0x4a6084, 0x4a6cf1, 0x4a741b, 0x4a786e, 0x4a829f, 0x4a8eea, 0x4a9600, 0x4a9a75, 0x4aa7d4, 0x4aaba1, 0x4ab34b, 0x4abf3e, 0x4ac47c, 0x4ac809, 0x4ad0e3, 0x4adc96, 0x4ae137, 0x4aed42, 0x4af5a8, 0x4af9dd, 0x4b004a, 0x4b0c3f, 0x4b14d5, 0x4b18a0, 0x4b2501, 0x4b2974, 0x4b319e, 0x4b3deb, 0x4b46a9, 0x4b4adc, 0x4b5236, 0x4b5e43, 0x4b63e2, 0x4b6f97, 0x4b777d, 0x4b7b08, 0x4b81f9, 0x4b8d8c, 0x4b9566, 0x4b9913, 0x4ba4b2, 0x4ba8c7, 0x4bb02d, 0x4bbc58, 0x4bc71a, 0x4bcb6f, 0x4bd385, 0x4bdff0, 0x4be251, 0x4bee24, 0x4bf6ce, 0x4bfabb, 0x4c040d, 0x4c0878, 0x4c1092, 0x4c1ce7, 0x4c2146, 0x4c2d33, 0x4c35d9, 0x4c39ac, 0x4c42ee, 0x4c4e9b, 0x4c5671, 0x4c5a04, 0x4c67a5, 0x4c6bd0, 0x4c733a, 0x4c7f4f, 0x4c85be, 0x4c89cb, 0x4c9121, 0x4c9d54, 0x4ca0f5, 0x4cac80, 0x4cb46a, 0x4cb81f, 0x4cc35d, 0x4ccf28, 0x4cd7c2, 0x4cdbb7, 0x4ce616, 0x4cea63, 0x4cf289, 0x4cfefc, 0x4d076b, 0x4d0b1e, 0x4d13f4, 0x4d1f81, 0x4d2220, 0x4d2e55, 0x4d36bf, 0x4d3aca, 0x4d4188, 0x4d4dfd, 0x4d5517, 0x4d5962, 0x4d64c3, 0x4d68b6, 0x4d705c, 0x4d7c29, 0x4d86d8, 0x4d8aad, 0x4d9247, 0x4d9e32, 0x4da393, 0x4dafe6, 0x4db70c, 0x4dbb79, 0x4dc03b, 0x4dcc4e, 0x4dd4a4, 0x4dd8d1, 0x4de570, 0x4de905, 0x4df1ef, 0x4dfd9a, 0x4e02c1, 0x4e0eb4, 0x4e165e, 0x4e1a2b, 0x4e278a, 0x4e2bff, 0x4e3315, 0x4e3f60, 0x4e4422, 0x4e4857, 0x4e50bd, 0x4e5cc8, 0x4e6169, 0x4e6d1c, 0x4e75f6, 0x4e7983, 0x4e8372, 0x4e8f07, 0x4e97ed, 0x4e9b98, 0x4ea639, 0x4eaa4c, 0x4eb2a6, 0x4ebed3, 0x4ec591, 0x4ec9e4, 0x4ed10e, 0x4edd7b, 0x4ee0da, 0x4eecaf, 0x4ef445, 0x4ef830, 0x4f01a7, 0x4f0dd2, 0x4f1538, 0x4f194d, 0x4f24ec, 0x4f2899, 0x4f3073, 0x4f3c06, 0x4f4744, 0x4f4b31, 0x4f53db, 0x4f5fae, 0x4f620f, 0x4f6e7a, 0x4f7690, 0x4f7ae5, 0x4f8014, 0x4f8c61, 0x4f948b, 0x4f98fe, 0x4fa55f, 0x4fa92a, 0x4fb1c0, 0x4fbdb5, 0x4fc6f7, 0x4fca82, 0x4fd268, 0x4fde1d, 0x4fe3bc, 0x4fefc9, 0x4ff723, 0x4ffb56, 0x50018e, 0x500dfb, 0x501511, 0x501964, 0x5024c5, 0x5028b0, 0x50305a, 0x503c2f, 0x50476d, 0x504b18, 0x5053f2, 0x505f87, 0x506226, 0x506e53, 0x5076b9, 0x507acc, 0x50803d, 0x508c48, 0x5094a2, 0x5098d7, 0x50a576, 0x50a903, 0x50b1e9, 0x50bd9c, 0x50c6de, 0x50caab, 0x50d241, 0x50de34, 0x50e395, 0x50efe0, 0x50f70a, 0x50fb7f, 0x5102e8, 0x510e9d, 0x511677, 0x511a02, 0x5127a3, 0x512bd6, 0x51333c, 0x513f49, 0x51440b, 0x51487e, 0x515094, 0x515ce1, 0x516140, 0x516d35, 0x5175df, 0x5179aa, 0x51835b, 0x518f2e, 0x5197c4, 0x519bb1, 0x51a610, 0x51aa65, 0x51b28f, 0x51befa, 0x51c5b8, 0x51c9cd, 0x51d127, 0x51dd52, 0x51e0f3, 0x51ec86, 0x51f46c, 0x51f819, 0x520742, 0x520b37, 0x5213dd, 0x521fa8, 0x522209, 0x522e7c, 0x523696, 0x523ae3, 0x5241a1, 0x524dd4, 0x52553e, 0x52594b, 0x5264ea, 0x52689f, 0x527075, 0x527c00, 0x5286f1, 0x528a84, 0x52926e, 0x529e1b, 0x52a3ba, 0x52afcf, 0x52b725, 0x52bb50, 0x52c012, 0x52cc67, 0x52d48d, 0x52d8f8, 0x52e559, 0x52e92c, 0x52f1c6, 0x52fdb3, 0x530424, 0x530851, 0x5310bb, 0x531cce, 0x53216f, 0x532d1a, 0x5335f0, 0x533985, 0x5342c7, 0x534eb2, 0x535658, 0x535a2d, 0x53678c, 0x536bf9, 0x537313, 0x537f66, 0x538597, 0x5389e2, 0x539108, 0x539d7d, 0x53a0dc, 0x53aca9, 0x53b443, 0x53b836, 0x53c374, 0x53cf01, 0x53d7eb, 0x53db9e, 0x53e63f, 0x53ea4a, 0x53f2a0, 0x53fed5, 0x540063, 0x540c16, 0x5414fc, 0x541889, 0x542528, 0x54295d, 0x5431b7, 0x543dc2, 0x544680, 0x544af5, 0x54521f, 0x545e6a, 0x5463cb, 0x546fbe, 0x547754, 0x547b21, 0x5481d0, 0x548da5, 0x54954f, 0x54993a, 0x54a49b, 0x54a8ee, 0x54b004, 0x54bc71, 0x54c733, 0x54cb46, 0x54d3ac, 0x54dfd9, 0x54e278, 0x54ee0d, 0x54f6e7, 0x54fa92, 0x550305, 0x550f70, 0x55179a, 0x551bef, 0x55264e, 0x552a3b, 0x5532d1, 0x553ea4, 0x5545e6, 0x554993, 0x555179, 0x555d0c, 0x5560ad, 0x556cd8, 0x557432, 0x557847, 0x5582b6, 0x558ec3, 0x559629, 0x559a5c, 0x55a7fd, 0x55ab88, 0x55b362, 0x55bf17, 0x55c455, 0x55c820, 0x55d0ca, 0x55dcbf, 0x55e11e, 0x55ed6b, 0x55f581, 0x55f9f4, 0x5606af, 0x560ada, 0x561230, 0x561e45, 0x5623e4, 0x562f91, 0x56377b, 0x563b0e, 0x56404c, 0x564c39, 0x5654d3, 0x5658a6, 0x566507, 0x566972, 0x567198, 0x567ded, 0x56871c, 0x568b69, 0x569383, 0x569ff6, 0x56a257, 0x56ae22, 0x56b6c8, 0x56babd, 0x56c1ff, 0x56cd8a, 0x56d560, 0x56d915, 0x56e4b4, 0x56e8c1, 0x56f02b, 0x56fc5e, 0x5705c9, 0x5709bc, 0x571156, 0x571d23, 0x572082, 0x572cf7, 0x57341d, 0x573868, 0x57432a, 0x574f5f, 0x5757b5, 0x575bc0, 0x576661, 0x576a14, 0x5772fe, 0x577e8b, 0x57847a, 0x57880f, 0x5790e5, 0x579c90, 0x57a131, 0x57ad44, 0x57b5ae, 0x57b9db, 0x57c299, 0x57ceec, 0x57d606, 0x57da73, 0x57e7d2, 0x57eba7, 0x57f34d, 0x57ff38, 0x580254, 0x580e21, 0x5816cb, 0x581abe, 0x58271f, 0x582b6a, 0x583380, 0x583ff5, 0x5844b7, 0x5848c2, 0x585028, 0x585c5d, 0x5861fc, 0x586d89, 0x587563, 0x587916, 0x5883e7, 0x588f92, 0x589778, 0x589b0d, 0x58a6ac, 0x58aad9, 0x58b233, 0x58be46, 0x58c504, 0x58c971, 0x58d19b, 0x58ddee, 0x58e04f, 0x58ec3a, 0x58f4d0, 0x58f8a5, 0x590132, 0x590d47, 0x5915ad, 0x5919d8, 0x592479, 0x59280c, 0x5930e6, 0x593c93, 0x5947d1, 0x594ba4, 0x59534e, 0x595f3b, 0x59629a, 0x596eef, 0x597605, 0x597a70, 0x598081, 0x598cf4, 0x59941e, 0x59986b, 0x59a5ca, 0x59a9bf, 0x59b155, 0x59bd20, 0x59c662, 0x59ca17, 0x59d2fd, 0x59de88, 0x59e329, 0x59ef5c, 0x59f7b6, 0x59fbc3, 0x5a0498, 0x5a08ed, 0x5a1007, 0x5a1c72, 0x5a21d3, 0x5a2da6, 0x5a354c, 0x5a3939, 0x5a427b, 0x5a4e0e, 0x5a56e4, 0x5a5a91, 0x5a6730, 0x5a6b45, 0x5a73af, 0x5a7fda, 0x5a852b, 0x5a895e, 0x5a91b4, 0x5a9dc1, 0x5aa060, 0x5aac15, 0x5ab4ff, 0x5ab88a, 0x5ac3c8, 0x5acfbd, 0x5ad757, 0x5adb22, 0x5ae683, 0x5aeaf6, 0x5af21c, 0x5afe69, 0x5b07fe, 0x5b0b8b, 0x5b1361, 0x5b1f14, 0x5b22b5, 0x5b2ec0, 0x5b362a, 0x5b3a5f, 0x5b411d, 0x5b4d68, 0x5b5582, 0x5b59f7, 0x5b6456, 0x5b6823, 0x5b70c9, 0x5b7cbc, 0x5b864d, 0x5b8a38, 0x5b92d2, 0x5b9ea7, 0x5ba306, 0x5baf73, 0x5bb799, 0x5bbbec, 0x5bc0ae, 0x5bccdb, 0x5bd431, 0x5bd844, 0x5be5e5, 0x5be990, 0x5bf17a, 0x5bfd0f, 0x5c03b9, 0x5c0fcc, 0x5c1726, 0x5c1b53, 0x5c26f2, 0x5c2a87, 0x5c326d, 0x5c3e18, 0x5c455a, 0x5c492f, 0x5c51c5, 0x5c5db0, 0x5c6011, 0x5c6c64, 0x5c748e, 0x5c78fb, 0x5c820a, 0x5c8e7f, 0x5c9695, 0x5c9ae0, 0x5ca741, 0x5cab34, 0x5cb3de, 0x5cbfab, 0x5cc4e9, 0x5cc89c, 0x5cd076, 0x5cdc03, 0x5ce1a2, 0x5cedd7, 0x5cf53d, 0x5cf948, 0x5d00df, 0x5d0caa, 0x5d1440, 0x5d1835, 0x5d2594, 0x5d29e1, 0x5d310b, 0x5d3d7e, 0x5d463c, 0x5d4a49, 0x5d52a3, 0x5d5ed6, 0x5d6377, 0x5d6f02, 0x5d77e8, 0x5d7b9d, 0x5d816c, 0x5d8d19, 0x5d95f3, 0x5d9986, 0x5da427, 0x5da852, 0x5db0b8, 0x5dbccd, 0x5dc78f, 0x5dcbfa, 0x5dd310, 0x5ddf65, 0x5de2c4, 0x5deeb1, 0x5df65b, 0x5dfa2e, 0x5e0575, 0x5e0900, 0x5e11ea, 0x5e1d9f, 0x5e203e, 0x5e2c4b, 0x5e34a1, 0x5e38d4, 0x5e4396, 0x5e4fe3, 0x5e5709, 0x5e5b7c, 0x5e66dd, 0x5e6aa8, 0x5e7242, 0x5e7e37, 0x5e84c6, 0x5e88b3, 0x5e9059, 0x5e9c2c, 0x5ea18d, 0x5eadf8, 0x5eb512, 0x5eb967, 0x5ec225, 0x5ece50, 0x5ed6ba, 0x5edacf, 0x5ee76e, 0x5eeb1b, 0x5ef3f1, 0x5eff84, 0x5f0613, 0x5f0a66, 0x5f128c, 0x5f1ef9, 0x5f2358, 0x5f2f2d, 0x5f37c7, 0x5f3bb2, 0x5f40f0, 0x5f4c85, 0x5f546f, 0x5f581a, 0x5f65bb, 0x5f69ce, 0x5f7124, 0x5f7d51, 0x5f87a0, 0x5f8bd5, 0x5f933f, 0x5f9f4a, 0x5fa2eb, 0x5fae9e, 0x5fb674, 0x5fba01, 0x5fc143, 0x5fcd36, 0x5fd5dc, 0x5fd9a9, 0x5fe408, 0x5fe87d, 0x5ff097, 0x5ffce2, 0x600527, 0x600952, 0x6011b8, 0x601dcd, 0x60206c, 0x602c19, 0x6034f3, 0x603886, 0x6043c4, 0x604fb1, 0x60575b, 0x605b2e, 0x60668f, 0x606afa, 0x607210, 0x607e65, 0x608494, 0x6088e1, 0x60900b, 0x609c7e, 0x60a1df, 0x60adaa, 0x60b540, 0x60b935, 0x60c277, 0x60ce02, 0x60d6e8, 0x60da9d, 0x60e73c, 0x60eb49, 0x60f3a3, 0x60ffd6, 0x610641, 0x610a34, 0x6112de, 0x611eab, 0x61230a, 0x612f7f, 0x613795, 0x613be0, 0x6140a2, 0x614cd7, 0x61543d, 0x615848, 0x6165e9, 0x61699c, 0x617176, 0x617d03, 0x6187f2, 0x618b87, 0x61936d, 0x619f18, 0x61a2b9, 0x61aecc, 0x61b626, 0x61ba53, 0x61c111, 0x61cd64, 0x61d58e, 0x61d9fb, 0x61e45a, 0x61e82f, 0x61f0c5, 0x61fcb0, 0x6203eb, 0x620f9e, 0x621774, 0x621b01, 0x6226a0, 0x622ad5, 0x62323f, 0x623e4a, 0x624508, 0x62497d, 0x625197, 0x625de2, 0x626043, 0x626c36, 0x6274dc, 0x6278a9, 0x628258, 0x628e2d, 0x6296c7, 0x629ab2, 0x62a713, 0x62ab66, 0x62b38c, 0x62bff9, 0x62c4bb, 0x62c8ce, 0x62d024, 0x62dc51, 0x62e1f0, 0x62ed85, 0x62f56f, 0x62f91a, 0x63008d, 0x630cf8, 0x631412, 0x631867, 0x6325c6, 0x6329b3, 0x633159, 0x633d2c, 0x63466e, 0x634a1b, 0x6352f1, 0x635e84, 0x636325, 0x636f50, 0x6377ba, 0x637bcf, 0x63813e, 0x638d4b, 0x6395a1, 0x6399d4, 0x63a475, 0x63a800, 0x63b0ea, 0x63bc9f, 0x63c7dd, 0x63cba8, 0x63d342, 0x63df37, 0x63e296, 0x63eee3, 0x63f609, 0x63fa7c, 0x6404ca, 0x6408bf, 0x641055, 0x641c20, 0x642181, 0x642df4, 0x64351e, 0x64396b, 0x644229, 0x644e5c, 0x6456b6, 0x645ac3, 0x646762, 0x646b17, 0x6473fd, 0x647f88, 0x648579, 0x64890c, 0x6491e6, 0x649d93, 0x64a032, 0x64ac47, 0x64b4ad, 0x64b8d8, 0x64c39a, 0x64cfef, 0x64d705, 0x64db70, 0x64e6d1, 0x64eaa4, 0x64f24e, 0x64fe3b, 0x6507ac, 0x650bd9, 0x651333, 0x651f46, 0x6522e7, 0x652e92, 0x653678, 0x653a0d, 0x65414f, 0x654d3a, 0x6555d0, 0x6559a5, 0x656404, 0x656871, 0x65709b, 0x657cee, 0x65861f, 0x658a6a, 0x659280, 0x659ef5, 0x65a354, 0x65af21, 0x65b7cb, 0x65bbbe, 0x65c0fc, 0x65cc89, 0x65d463, 0x65d816, 0x65e5b7, 0x65e9c2, 0x65f128, 0x65fd5d, 0x660206, 0x660e73, 0x661699, 0x661aec, 0x66274d, 0x662b38, 0x6633d2, 0x663fa7, 0x6644e5, 0x664890, 0x66507a, 0x665c0f, 0x6661ae, 0x666ddb, 0x667531, 0x667944, 0x6683b5, 0x668fc0, 0x66972a, 0x669b5f, 0x66a6fe, 0x66aa8b, 0x66b261, 0x66be14, 0x66c556, 0x66c923, 0x66d1c9, 0x66ddbc, 0x66e01d, 0x66ec68, 0x66f482, 0x66f8f7, 0x670160, 0x670d15, 0x6715ff, 0x67198a, 0x67242b, 0x67285e, 0x6730b4, 0x673cc1, 0x674783, 0x674bf6, 0x67531c, 0x675f69, 0x6762c8, 0x676ebd, 0x677657, 0x677a22, 0x6780d3, 0x678ca6, 0x67944c, 0x679839, 0x67a598, 0x67a9ed, 0x67b107, 0x67bd72, 0x67c630, 0x67ca45, 0x67d2af, 0x67deda, 0x67e37b, 0x67ef0e, 0x67f7e4, 0x67fb91, 0x6806fd, 0x680a88, 0x681262, 0x681e17, 0x6823b6, 0x682fc3, 0x683729, 0x683b5c, 0x68401e, 0x684c6b, 0x685481, 0x6858f4, 0x686555, 0x686920, 0x6871ca, 0x687dbf, 0x68874e, 0x688b3b, 0x6893d1, 0x689fa4, 0x68a205, 0x68ae70, 0x68b69a, 0x68baef, 0x68c1ad, 0x68cdd8, 0x68d532, 0x68d947, 0x68e4e6, 0x68e893, 0x68f079, 0x68fc0c, 0x69059b, 0x6909ee, 0x691104, 0x691d71, 0x6920d0, 0x692ca5, 0x69344f, 0x69383a, 0x694378, 0x694f0d, 0x6957e7, 0x695b92, 0x696633, 0x696a46, 0x6972ac, 0x697ed9, 0x698428, 0x69885d, 0x6990b7, 0x699cc2, 0x69a163, 0x69ad16, 0x69b5fc, 0x69b989, 0x69c2cb, 0x69cebe, 0x69d654, 0x69da21, 0x69e780, 0x69ebf5, 0x69f31f, 0x69ff6a, 0x6a0031, 0x6a0c44, 0x6a14ae, 0x6a18db, 0x6a257a, 0x6a290f, 0x6a31e5, 0x6a3d90, 0x6a46d2, 0x6a4aa7, 0x6a524d, 0x6a5e38, 0x6a6399, 0x6a6fec, 0x6a7706, 0x6a7b73, 0x6a8182, 0x6a8df7, 0x6a951d, 0x6a9968, 0x6aa4c9, 0x6aa8bc, 0x6ab056, 0x6abc23, 0x6ac761, 0x6acb14, 0x6ad3fe, 0x6adf8b, 0x6ae22a, 0x6aee5f, 0x6af6b5, 0x6afac0, 0x6b0357, 0x6b0f22, 0x6b17c8, 0x6b1bbd, 0x6b261c, 0x6b2a69, 0x6b3283, 0x6b3ef6, 0x6b45b4, 0x6b49c1, 0x6b512b, 0x6b5d5e, 0x6b60ff, 0x6b6c8a, 0x6b7460, 0x6b7815, 0x6b82e4, 0x6b8e91, 0x6b967b, 0x6b9a0e, 0x6ba7af, 0x6babda, 0x6bb330, 0x6bbf45, 0x6bc407, 0x6bc872, 0x6bd098, 0x6bdced, 0x6be14c, 0x6bed39, 0x6bf5d3, 0x6bf9a6, 0x6c0710, 0x6c0b65, 0x6c138f, 0x6c1ffa, 0x6c225b, 0x6c2e2e, 0x6c36c4, 0x6c3ab1, 0x6c41f3, 0x6c4d86, 0x6c556c, 0x6c5919, 0x6c64b8, 0x6c68cd, 0x6c7027, 0x6c7c52, 0x6c86a3, 0x6c8ad6, 0x6c923c, 0x6c9e49, 0x6ca3e8, 0x6caf9d, 0x6cb777, 0x6cbb02, 0x6cc040, 0x6ccc35, 0x6cd4df, 0x6cd8aa, 0x6ce50b, 0x6ce97e, 0x6cf194, 0x6cfde1, 0x6d0476, 0x6d0803, 0x6d10e9, 0x6d1c9c, 0x6d213d, 0x6d2d48, 0x6d35a2, 0x6d39d7, 0x6d4295, 0x6d4ee0, 0x6d560a, 0x6d5a7f, 0x6d67de, 0x6d6bab, 0x6d7341, 0x6d7f34, 0x6d85c5, 0x6d89b0, 0x6d915a, 0x6d9d2f, 0x6da08e, 0x6dacfb, 0x6db411, 0x6db864, 0x6dc326, 0x6dcf53, 0x6dd7b9, 0x6ddbcc, 0x6de66d, 0x6dea18, 0x6df2f2, 0x6dfe87, 0x6e01dc, 0x6e0da9, 0x6e1543, 0x6e1936, 0x6e2497, 0x6e28e2, 0x6e3008, 0x6e3c7d, 0x6e473f, 0x6e4b4a, 0x6e53a0, 0x6e5fd5, 0x6e6274, 0x6e6e01, 0x6e76eb, 0x6e7a9e, 0x6e806f, 0x6e8c1a, 0x6e94f0, 0x6e9885, 0x6ea524, 0x6ea951, 0x6eb1bb, 0x6ebdce, 0x6ec68c, 0x6ecaf9, 0x6ed213, 0x6ede66, 0x6ee3c7, 0x6eefb2, 0x6ef758, 0x6efb2d, 0x6f02ba, 0x6f0ecf, 0x6f1625, 0x6f1a50, 0x6f27f1, 0x6f2b84, 0x6f336e, 0x6f3f1b, 0x6f4459, 0x6f482c, 0x6f50c6, 0x6f5cb3, 0x6f6112, 0x6f6d67, 0x6f758d, 0x6f79f8, 0x6f8309, 0x6f8f7c, 0x6f9796, 0x6f9be3, 0x6fa642, 0x6faa37, 0x6fb2dd, 0x6fbea8, 0x6fc5ea, 0x6fc99f, 0x6fd175, 0x6fdd00, 0x6fe0a1, 0x6fecd4, 0x6ff43e, 0x6ff84b, 0x700293, 0x700ee6, 0x70160c, 0x701a79, 0x7027d8, 0x702bad, 0x703347, 0x703f32, 0x704470, 0x704805, 0x7050ef, 0x705c9a, 0x70613b, 0x706d4e, 0x7075a4, 0x7079d1, 0x708320, 0x708f55, 0x7097bf, 0x709bca, 0x70a66b, 0x70aa1e, 0x70b2f4, 0x70be81, 0x70c5c3, 0x70c9b6, 0x70d15c, 0x70dd29, 0x70e088, 0x70ecfd, 0x70f417, 0x70f862, 0x7101f5, 0x710d80, 0x71156a, 0x71191f, 0x7124be, 0x7128cb, 0x713021, 0x713c54, 0x714716, 0x714b63, 0x715389, 0x715ffc, 0x71625d, 0x716e28, 0x7176c2, 0x717ab7, 0x718046, 0x718c33, 0x7194d9, 0x7198ac, 0x71a50d, 0x71a978, 0x71b192, 0x71bde7, 0x71c6a5, 0x71cad0, 0x71d23a, 0x71de4f, 0x71e3ee, 0x71ef9b, 0x71f771, 0x71fb04, 0x72045f, 0x72082a, 0x7210c0, 0x721cb5, 0x722114, 0x722d61, 0x72358b, 0x7239fe, 0x7242bc, 0x724ec9, 0x725623, 0x725a56, 0x7267f7, 0x726b82, 0x727368, 0x727f1d, 0x7285ec, 0x728999, 0x729173, 0x729d06, 0x72a0a7, 0x72acd2, 0x72b438, 0x72b84d, 0x72c30f, 0x72cf7a, 0x72d790, 0x72dbe5, 0x72e644, 0x72ea31, 0x72f2db, 0x72feae, 0x730739, 0x730b4c, 0x7313a6, 0x731fd3, 0x732272, 0x732e07, 0x7336ed, 0x733a98, 0x7341da, 0x734daf, 0x735545, 0x735930, 0x736491, 0x7368e4, 0x73700e, 0x737c7b, 0x73868a, 0x738aff, 0x739215, 0x739e60, 0x73a3c1, 0x73afb4, 0x73b75e, 0x73bb2b, 0x73c069, 0x73cc1c, 0x73d4f6, 0x73d883, 0x73e522, 0x73e957, 0x73f1bd, 0x73fdc8, 0x74037e, 0x740f0b, 0x7417e1, 0x741b94, 0x742635, 0x742a40, 0x7432aa, 0x743edf, 0x74459d, 0x7449e8, 0x745102, 0x745d77, 0x7460d6, 0x746ca3, 0x747449, 0x74783c, 0x7482cd, 0x748eb8, 0x749652, 0x749a27, 0x74a786, 0x74abf3, 0x74b319, 0x74bf6c, 0x74c42e, 0x74c85b, 0x74d0b1, 0x74dcc4, 0x74e165, 0x74ed10, 0x74f5fa, 0x74f98f, 0x750018, 0x750c6d, 0x751487, 0x7518f2, 0x752553, 0x752926, 0x7531cc, 0x753db9, 0x7546fb, 0x754a8e, 0x755264, 0x755e11, 0x7563b0, 0x756fc5, 0x75772f, 0x757b5a, 0x7581ab, 0x758dde, 0x759534, 0x759941, 0x75a4e0, 0x75a895, 0x75b07f, 0x75bc0a, 0x75c748, 0x75cb3d, 0x75d3d7, 0x75dfa2, 0x75e203, 0x75ee76, 0x75f69c, 0x75fae9, 0x7605b2, 0x7609c7, 0x76112d, 0x761d58, 0x7620f9, 0x762c8c, 0x763466, 0x763813, 0x764351, 0x764f24, 0x7657ce, 0x765bbb, 0x76661a, 0x766a6f, 0x767285, 0x767ef0, 0x768401, 0x768874, 0x76909e, 0x769ceb, 0x76a14a, 0x76ad3f, 0x76b5d5, 0x76b9a0, 0x76c2e2, 0x76ce97, 0x76d67d, 0x76da08, 0x76e7a9, 0x76ebdc, 0x76f336, 0x76ff43, 0x7706d4, 0x770aa1, 0x77124b, 0x771e3e, 0x77239f, 0x772fea, 0x773700, 0x773b75, 0x774037, 0x774c42, 0x7754a8, 0x7758dd, 0x77657c, 0x776909, 0x7771e3, 0x777d96, 0x778767, 0x778b12, 0x7793f8, 0x779f8d, 0x77a22c, 0x77ae59, 0x77b6b3, 0x77bac6, 0x77c184, 0x77cdf1, 0x77d51b, 0x77d96e, 0x77e4cf, 0x77e8ba, 0x77f050, 0x77fc25, 0x780149, 0x780d3c, 0x7815d6, 0x7819a3, 0x782402, 0x782877, 0x78309d, 0x783ce8, 0x7847aa, 0x784bdf, 0x785335, 0x785f40, 0x7862e1, 0x786e94, 0x78767e, 0x787a0b, 0x7880fa, 0x788c8f, 0x789465, 0x789810, 0x78a5b1, 0x78a9c4, 0x78b12e, 0x78bd5b, 0x78c619, 0x78ca6c, 0x78d286, 0x78def3, 0x78e352, 0x78ef27, 0x78f7cd, 0x78fbb8, 0x79022f, 0x790e5a, 0x7916b0, 0x791ac5, 0x792764, 0x792b11, 0x7933fb, 0x793f8e, 0x7944cc, 0x7948b9, 0x795053, 0x795c26, 0x796187, 0x796df2, 0x797518, 0x79796d, 0x79839c, 0x798fe9, 0x799703, 0x799b76, 0x79a6d7, 0x79aaa2, 0x79b248, 0x79be3d, 0x79c57f, 0x79c90a, 0x79d1e0, 0x79dd95, 0x79e034, 0x79ec41, 0x79f4ab, 0x79f8de, 0x7a0785, 0x7a0bf0, 0x7a131a, 0x7a1f6f, 0x7a22ce, 0x7a2ebb, 0x7a3651, 0x7a3a24, 0x7a4166, 0x7a4d13, 0x7a55f9, 0x7a598c, 0x7a642d, 0x7a6858, 0x7a70b2, 0x7a7cc7, 0x7a8636, 0x7a8a43, 0x7a92a9, 0x7a9edc, 0x7aa37d, 0x7aaf08, 0x7ab7e2, 0x7abb97, 0x7ac0d5, 0x7acca0, 0x7ad44a, 0x7ad83f, 0x7ae59e, 0x7ae9eb, 0x7af101, 0x7afd74, 0x7b04e3, 0x7b0896, 0x7b107c, 0x7b1c09, 0x7b21a8, 0x7b2ddd, 0x7b3537, 0x7b3942, 0x7b4200, 0x7b4e75, 0x7b569f, 0x7b5aea, 0x7b674b, 0x7b6b3e, 0x7b73d4, 0x7b7fa1, 0x7b8550, 0x7b8925, 0x7b91cf, 0x7b9dba, 0x7ba01b, 0x7bac6e, 0x7bb484, 0x7bb8f1, 0x7bc3b3, 0x7bcfc6, 0x7bd72c, 0x7bdb59, 0x7be6f8, 0x7bea8d, 0x7bf267, 0x7bfe12, 0x7c00a4, 0x7c0cd1, 0x7c143b, 0x7c184e, 0x7c25ef, 0x7c299a, 0x7c3170, 0x7c3d05, 0x7c4647, 0x7c4a32, 0x7c52d8, 0x7c5ead, 0x7c630c, 0x7c6f79, 0x7c7793, 0x7c7be6, 0x7c8117, 0x7c8d62, 0x7c9588, 0x7c99fd, 0x7ca45c, 0x7ca829, 0x7cb0c3, 0x7cbcb6, 0x7cc7f4, 0x7ccb81, 0x7cd36b, 0x7cdf1e, 0x7ce2bf, 0x7ceeca, 0x7cf620, 0x7cfa55, 0x7d03c2, 0x7d0fb7, 0x7d175d, 0x7d1b28, 0x7d2689, 0x7d2afc, 0x7d3216, 0x7d3e63, 0x7d4521, 0x7d4954, 0x7d51be, 0x7d5dcb, 0x7d606a, 0x7d6c1f, 0x7d74f5, 0x7d7880, 0x7d8271, 0x7d8e04, 0x7d96ee, 0x7d9a9b, 0x7da73a, 0x7dab4f, 0x7db3a5, 0x7dbfd0, 0x7dc492, 0x7dc8e7, 0x7dd00d, 0x7ddc78, 0x7de1d9, 0x7dedac, 0x7df546, 0x7df933, 0x7e0668, 0x7e0a1d, 0x7e12f7, 0x7e1e82, 0x7e2323, 0x7e2f56, 0x7e37bc, 0x7e3bc9, 0x7e408b, 0x7e4cfe, 0x7e5414, 0x7e5861, 0x7e65c0, 0x7e69b5, 0x7e715f, 0x7e7d2a, 0x7e87db, 0x7e8bae, 0x7e9344, 0x7e9f31, 0x7ea290, 0x7eaee5, 0x7eb60f, 0x7eba7a, 0x7ec138, 0x7ecd4d, 0x7ed5a7, 0x7ed9d2, 0x7ee473, 0x7ee806, 0x7ef0ec, 0x7efc99, 0x7f050e, 0x7f097b, 0x7f1191, 0x7f1de4, 0x7f2045, 0x7f2c30, 0x7f34da, 0x7f38af, 0x7f43ed, 0x7f4f98, 0x7f5772, 0x7f5b07, 0x7f66a6, 0x7f6ad3, 0x7f7239, 0x7f7e4c, 0x7f84bd, 0x7f88c8, 0x7f9022, 0x7f9c57, 0x7fa1f6, 0x7fad83, 0x7fb569, 0x7fb91c, 0x7fc25e, 0x7fce2b, 0x7fd6c1, 0x7fdab4, 0x7fe715, 0x7feb60, 0x7ff38a, 0x7fffff}; codec2-1.2.0/src/gp_interleaver.c000066400000000000000000000106161445607075400166320ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: gp_interleaver.c AUTHOR......: David Rowe DATE CREATED: April 2018 Golden Prime Interleaver. My interpretation of "On the Analysis and Design of Good Algebraic Interleavers", Xie et al,eq (5). See also octave/gp_interleaver.m \*---------------------------------------------------------------------------*/ /* Copyright (C) 2018 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "gp_interleaver.h" #include #include /* Choose b for Golden Prime Interleaver. b is chosen to be the closest integer, which is relatively prime to N, to the Golden section of N. Implemented with a LUT in C for convenience, Octave version has a more complete implementation. If you find you need some more numbers head back to the Octave choose_interleaver_b() function. */ static const int b_table[] = { 56, 37, /* 700E: HRA_56_56 */ 106, 67, /* 2020B: (112,56) partial protection */ 112, 71, /* 700D: HRA_112_112 */ 128, 83, /* datac0: H_128_256_5 */ 192, 127, /* datac13: H_256_512_4, 128 data bits used */ 210, 131, /* 2020: HRAb_396_504 with 312 data bits used */ 736, 457, /* datac4: H_1024_2048_4f, 448 data bits used */ 1024, 641, /* datac3: H_1024_2048_4f */ 1290, 797, /* datac2: H2064_516_sparse */ 4096, 2531 /* datac1: H_4096_8192_3d */ }; int choose_interleaver_b(int Nbits) { int i; for (i = 0; i < sizeof(b_table) / sizeof(int); i += 2) { if (b_table[i] == Nbits) { return b_table[i + 1]; } } /* if we get to here it means a Nbits we don't have in our table so choke */ fprintf(stderr, "gp_interleaver: Nbits: %d, b not found!\n", Nbits); assert(0); return -1; } void gp_interleave_comp(COMP interleaved_frame[], COMP frame[], int Nbits) { int b = choose_interleaver_b(Nbits); int i, j; for (i = 0; i < Nbits; i++) { j = (b * i) % Nbits; interleaved_frame[j] = frame[i]; } } void gp_deinterleave_comp(COMP frame[], COMP interleaved_frame[], int Nbits) { int b = choose_interleaver_b(Nbits); int i, j; for (i = 0; i < Nbits; i++) { j = (b * i) % Nbits; frame[i] = interleaved_frame[j]; } } void gp_interleave_float(float interleaved_frame[], float frame[], int Nbits) { int b = choose_interleaver_b(Nbits); int i, j; for (i = 0; i < Nbits; i++) { j = (b * i) % Nbits; interleaved_frame[j] = frame[i]; } } void gp_deinterleave_float(float frame[], float interleaved_frame[], int Nbits) { int b = choose_interleaver_b(Nbits); int i, j; for (i = 0; i < Nbits; i++) { j = (b * i) % Nbits; frame[i] = interleaved_frame[j]; } } // The above work on complex numbers (e.g. OFDM symbols), so the below work on // groups of two bits at a time to remain compatible with the above. void gp_interleave_bits(char interleaved_frame[], char frame[], int Nbits) { char temp[Nbits]; int b = choose_interleaver_b(Nbits); int i, j; for (i = 0; i < Nbits; i++) { j = (b * i) % Nbits; temp[j] = ((frame[i * 2] & 1) << 1) | (frame[i * 2 + 1] & 1); } for (i = 0; i < Nbits; i++) { interleaved_frame[i * 2] = temp[i] >> 1; interleaved_frame[i * 2 + 1] = temp[i] & 1; } } void gp_deinterleave_bits(char frame[], char interleaved_frame[], int Nbits) { char temp[Nbits]; int b = choose_interleaver_b(Nbits); int i, j; for (i = 0; i < Nbits; i++) { j = (b * i) % Nbits; temp[i] = ((interleaved_frame[j * 2] & 1) << 1) | (interleaved_frame[j * 2 + 1] & 1); } for (i = 0; i < Nbits; i++) { frame[i * 2] = temp[i] >> 1; frame[i * 2 + 1] = temp[i] & 1; } } codec2-1.2.0/src/gp_interleaver.h000066400000000000000000000031201445607075400166270ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: gp_interleaver.h AUTHOR......: David Rowe DATE CREATED: April 2018 Golden Prime Interleaver. My interprestation of "On the Analysis and Design of Good Algebraic Interleavers", Xie et al,eq (5). See also octvae/gp_interleaver.m \*---------------------------------------------------------------------------*/ /* Copyright (C) 2018 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __GP_INTERLEAVER__ #define __GP_INTERLEAVER__ #include "comp.h" void gp_interleave_comp(COMP interleaved_frame[], COMP frame[], int Nbits); void gp_deinterleave_comp(COMP frame[], COMP interleaved_frame[], int Nbits); void gp_interleave_float(float interleaved_frame[], float frame[], int Nbits); void gp_deinterleave_float(float frame[], float interleaved_frame[], int Nbits); void gp_interleave_bits(char interleaved_frame[], char frame[], int Nbits); void gp_deinterleave_bits(char frame[], char interleaved_frame[], int Nbits); #endif codec2-1.2.0/src/hanning.h000066400000000000000000000205331445607075400152520ustar00rootroot00000000000000/* Generated by hanning_file() Octave function */ const float hanning[] = { 0, 2.4171e-05, 9.66816e-05, 0.000217525, 0.000386689, 0.000604158, 0.00086991, 0.00118392, 0.00154616, 0.00195659, 0.00241517, 0.00292186, 0.00347661, 0.00407937, 0.00473008, 0.00542867, 0.00617507, 0.00696922, 0.00781104, 0.00870045, 0.00963736, 0.0106217, 0.0116533, 0.0127322, 0.0138581, 0.0150311, 0.0162509, 0.0175175, 0.0188308, 0.0201906, 0.0215968, 0.0230492, 0.0245478, 0.0260923, 0.0276826, 0.0293186, 0.0310001, 0.032727, 0.034499, 0.036316, 0.0381779, 0.0400844, 0.0420354, 0.0440307, 0.04607, 0.0481533, 0.0502802, 0.0524506, 0.0546643, 0.056921, 0.0592206, 0.0615627, 0.0639473, 0.0663741, 0.0688427, 0.0713531, 0.0739048, 0.0764978, 0.0791318, 0.0818064, 0.0845214, 0.0872767, 0.0900718, 0.0929066, 0.0957807, 0.0986939, 0.101646, 0.104636, 0.107665, 0.110732, 0.113836, 0.116978, 0.120156, 0.123372, 0.126624, 0.129912, 0.133235, 0.136594, 0.139989, 0.143418, 0.146881, 0.150379, 0.153911, 0.157476, 0.161074, 0.164705, 0.168368, 0.172063, 0.17579, 0.179549, 0.183338, 0.187158, 0.191008, 0.194888, 0.198798, 0.202737, 0.206704, 0.2107, 0.214724, 0.218775, 0.222854, 0.226959, 0.231091, 0.235249, 0.239432, 0.243641, 0.247874, 0.252132, 0.256414, 0.260719, 0.265047, 0.269398, 0.273772, 0.278167, 0.282584, 0.287021, 0.29148, 0.295958, 0.300456, 0.304974, 0.30951, 0.314065, 0.318638, 0.323228, 0.327835, 0.332459, 0.3371, 0.341756, 0.346427, 0.351113, 0.355814, 0.360528, 0.365256, 0.369997, 0.374751, 0.379516, 0.384293, 0.389082, 0.393881, 0.398691, 0.40351, 0.408338, 0.413176, 0.418022, 0.422876, 0.427737, 0.432605, 0.43748, 0.44236, 0.447247, 0.452138, 0.457034, 0.461935, 0.466839, 0.471746, 0.476655, 0.481568, 0.486481, 0.491397, 0.496313, 0.501229, 0.506145, 0.511061, 0.515976, 0.520889, 0.5258, 0.530708, 0.535614, 0.540516, 0.545414, 0.550308, 0.555197, 0.560081, 0.564958, 0.56983, 0.574695, 0.579552, 0.584402, 0.589244, 0.594077, 0.598901, 0.603715, 0.60852, 0.613314, 0.618097, 0.622868, 0.627628, 0.632375, 0.63711, 0.641831, 0.646538, 0.651232, 0.655911, 0.660574, 0.665222, 0.669855, 0.67447, 0.679069, 0.683651, 0.688215, 0.69276, 0.697287, 0.701795, 0.706284, 0.710752, 0.7152, 0.719627, 0.724033, 0.728418, 0.73278, 0.73712, 0.741437, 0.74573, 0.75, 0.754246, 0.758467, 0.762663, 0.766833, 0.770978, 0.775097, 0.779189, 0.783254, 0.787291, 0.791301, 0.795283, 0.799236, 0.80316, 0.807055, 0.810921, 0.814756, 0.81856, 0.822334, 0.826077, 0.829788, 0.833468, 0.837115, 0.840729, 0.844311, 0.847859, 0.851374, 0.854855, 0.858301, 0.861713, 0.86509, 0.868431, 0.871737, 0.875007, 0.87824, 0.881437, 0.884598, 0.887721, 0.890806, 0.893854, 0.896864, 0.899835, 0.902768, 0.905661, 0.908516, 0.911331, 0.914106, 0.916841, 0.919536, 0.92219, 0.924804, 0.927376, 0.929907, 0.932397, 0.934845, 0.93725, 0.939614, 0.941935, 0.944213, 0.946448, 0.94864, 0.950789, 0.952894, 0.954955, 0.956972, 0.958946, 0.960874, 0.962759, 0.964598, 0.966393, 0.968142, 0.969846, 0.971505, 0.973118, 0.974686, 0.976207, 0.977683, 0.979112, 0.980495, 0.981832, 0.983122, 0.984365, 0.985561, 0.986711, 0.987813, 0.988868, 0.989876, 0.990837, 0.99175, 0.992616, 0.993434, 0.994204, 0.994927, 0.995601, 0.996228, 0.996807, 0.997337, 0.99782, 0.998255, 0.998641, 0.998979, 0.999269, 0.999511, 0.999704, 0.999849, 0.999946, 0.999994, 0.999994, 0.999946, 0.999849, 0.999704, 0.999511, 0.999269, 0.998979, 0.998641, 0.998255, 0.99782, 0.997337, 0.996807, 0.996228, 0.995601, 0.994927, 0.994204, 0.993434, 0.992616, 0.99175, 0.990837, 0.989876, 0.988868, 0.987813, 0.986711, 0.985561, 0.984365, 0.983122, 0.981832, 0.980495, 0.979112, 0.977683, 0.976207, 0.974686, 0.973118, 0.971505, 0.969846, 0.968142, 0.966393, 0.964598, 0.962759, 0.960874, 0.958946, 0.956972, 0.954955, 0.952894, 0.950789, 0.94864, 0.946448, 0.944213, 0.941935, 0.939614, 0.93725, 0.934845, 0.932397, 0.929907, 0.927376, 0.924804, 0.92219, 0.919536, 0.916841, 0.914106, 0.911331, 0.908516, 0.905661, 0.902768, 0.899835, 0.896864, 0.893854, 0.890806, 0.887721, 0.884598, 0.881437, 0.87824, 0.875007, 0.871737, 0.868431, 0.86509, 0.861713, 0.858301, 0.854855, 0.851374, 0.847859, 0.844311, 0.840729, 0.837115, 0.833468, 0.829788, 0.826077, 0.822334, 0.81856, 0.814756, 0.810921, 0.807055, 0.80316, 0.799236, 0.795283, 0.791301, 0.787291, 0.783254, 0.779189, 0.775097, 0.770978, 0.766833, 0.762663, 0.758467, 0.754246, 0.75, 0.74573, 0.741437, 0.73712, 0.73278, 0.728418, 0.724033, 0.719627, 0.7152, 0.710752, 0.706284, 0.701795, 0.697287, 0.69276, 0.688215, 0.683651, 0.679069, 0.67447, 0.669855, 0.665222, 0.660574, 0.655911, 0.651232, 0.646538, 0.641831, 0.63711, 0.632375, 0.627628, 0.622868, 0.618097, 0.613314, 0.60852, 0.603715, 0.598901, 0.594077, 0.589244, 0.584402, 0.579552, 0.574695, 0.56983, 0.564958, 0.560081, 0.555197, 0.550308, 0.545414, 0.540516, 0.535614, 0.530708, 0.5258, 0.520889, 0.515976, 0.511061, 0.506145, 0.501229, 0.496313, 0.491397, 0.486481, 0.481568, 0.476655, 0.471746, 0.466839, 0.461935, 0.457034, 0.452138, 0.447247, 0.44236, 0.43748, 0.432605, 0.427737, 0.422876, 0.418022, 0.413176, 0.408338, 0.40351, 0.398691, 0.393881, 0.389082, 0.384293, 0.379516, 0.374751, 0.369997, 0.365256, 0.360528, 0.355814, 0.351113, 0.346427, 0.341756, 0.3371, 0.332459, 0.327835, 0.323228, 0.318638, 0.314065, 0.30951, 0.304974, 0.300456, 0.295958, 0.29148, 0.287021, 0.282584, 0.278167, 0.273772, 0.269398, 0.265047, 0.260719, 0.256414, 0.252132, 0.247874, 0.243641, 0.239432, 0.235249, 0.231091, 0.226959, 0.222854, 0.218775, 0.214724, 0.2107, 0.206704, 0.202737, 0.198798, 0.194888, 0.191008, 0.187158, 0.183338, 0.179549, 0.17579, 0.172063, 0.168368, 0.164705, 0.161074, 0.157476, 0.153911, 0.150379, 0.146881, 0.143418, 0.139989, 0.136594, 0.133235, 0.129912, 0.126624, 0.123372, 0.120156, 0.116978, 0.113836, 0.110732, 0.107665, 0.104636, 0.101646, 0.0986939, 0.0957807, 0.0929066, 0.0900718, 0.0872767, 0.0845214, 0.0818064, 0.0791318, 0.0764978, 0.0739048, 0.0713531, 0.0688427, 0.0663741, 0.0639473, 0.0615627, 0.0592206, 0.056921, 0.0546643, 0.0524506, 0.0502802, 0.0481533, 0.04607, 0.0440307, 0.0420354, 0.0400844, 0.0381779, 0.036316, 0.034499, 0.032727, 0.0310001, 0.0293186, 0.0276826, 0.0260923, 0.0245478, 0.0230492, 0.0215968, 0.0201906, 0.0188308, 0.0175175, 0.0162509, 0.0150311, 0.0138581, 0.0127322, 0.0116533, 0.0106217, 0.00963736, 0.00870045, 0.00781104, 0.00696922, 0.00617507, 0.00542867, 0.00473008, 0.00407937, 0.00347661, 0.00292186, 0.00241517, 0.00195659, 0.00154616, 0.00118392, 0.00086991, 0.000604158, 0.000386689, 0.000217525, 9.66816e-05, 2.4171e-05, 0}; codec2-1.2.0/src/ht_coeff.h000066400000000000000000000146261445607075400154130ustar00rootroot00000000000000/* Hilbert Transform FIR filter coeffs */ /* Generated by make_hilb Octave script */ #define HT_N 257 COMP ht_coeff[] = { {-0.000004, 0.000000}, {-0.000000, 0.000008}, {-0.000008, 0.000000}, {0.000000, 0.000012}, {-0.000013, 0.000000}, {0.000000, 0.000014}, {-0.000021, 0.000000}, {0.000000, 0.000016}, {-0.000032, 0.000000}, {-0.000000, 0.000017}, {-0.000045, 0.000000}, {0.000000, 0.000015}, {-0.000060, 0.000000}, {-0.000000, 0.000009}, {-0.000078, -0.000000}, {-0.000000, -0.000001}, {-0.000098, 0.000000}, {-0.000000, -0.000017}, {-0.000119, 0.000000}, {-0.000000, -0.000040}, {-0.000140, 0.000000}, {-0.000000, -0.000071}, {-0.000159, 0.000000}, {0.000000, -0.000111}, {-0.000174, 0.000000}, {-0.000000, -0.000160}, {-0.000183, 0.000000}, {0.000000, -0.000219}, {-0.000184, 0.000000}, {-0.000000, -0.000288}, {-0.000173, -0.000000}, {-0.000000, -0.000365}, {-0.000147, -0.000000}, {-0.000000, -0.000450}, {-0.000103, 0.000000}, {0.000000, -0.000539}, {-0.000038, 0.000000}, {-0.000000, -0.000630}, {0.000052, -0.000000}, {0.000000, -0.000719}, {0.000168, 0.000000}, {0.000000, -0.000801}, {0.000313, -0.000000}, {0.000000, -0.000870}, {0.000488, 0.000000}, {0.000000, -0.000918}, {0.000693, -0.000000}, {0.000000, -0.000940}, {0.000927, -0.000000}, {0.000000, -0.000927}, {0.001186, -0.000000}, {0.000000, -0.000871}, {0.001466, -0.000000}, {-0.000000, -0.000763}, {0.001762, -0.000000}, {0.000000, -0.000597}, {0.002064, -0.000000}, {-0.000000, -0.000364}, {0.002363, -0.000000}, {0.000000, -0.000060}, {0.002646, -0.000000}, {0.000000, 0.000321}, {0.002900, 0.000000}, {-0.000000, 0.000782}, {0.003109, 0.000000}, {-0.000000, 0.001322}, {0.003255, -0.000000}, {0.000000, 0.001940}, {0.003322, -0.000000}, {-0.000000, 0.002630}, {0.003291, -0.000000}, {0.000000, 0.003384}, {0.003141, -0.000000}, {-0.000000, 0.004188}, {0.002856, -0.000000}, {-0.000000, 0.005028}, {0.002417, 0.000000}, {0.000000, 0.005883}, {0.001808, 0.000000}, {0.000000, 0.006728}, {0.001016, 0.000000}, {0.000000, 0.007538}, {0.000029, -0.000000}, {-0.000000, 0.008279}, {-0.001160, -0.000000}, {-0.000000, 0.008919}, {-0.002556, -0.000000}, {0.000000, 0.009418}, {-0.004158, -0.000000}, {-0.000000, 0.009736}, {-0.005962, -0.000000}, {0.000000, 0.009829}, {-0.007957, -0.000000}, {-0.000000, 0.009653}, {-0.010130, -0.000000}, {-0.000000, 0.009158}, {-0.012459, -0.000000}, {0.000000, 0.008294}, {-0.014922, 0.000000}, {-0.000000, 0.007006}, {-0.017489, -0.000000}, {-0.000000, 0.005234}, {-0.020127, 0.000000}, {0.000000, 0.002910}, {-0.022800, -0.000000}, {-0.000000, -0.000046}, {-0.025469, -0.000000}, {0.000000, -0.003735}, {-0.028094, -0.000000}, {0.000000, -0.008292}, {-0.030631, -0.000000}, {0.000000, -0.013906}, {-0.033039, -0.000000}, {0.000000, -0.020868}, {-0.035278, 0.000000}, {-0.000000, -0.029645}, {-0.037308, -0.000000}, {-0.000000, -0.041052}, {-0.039093, -0.000000}, {0.000000, -0.056643}, {-0.040601, 0.000000}, {-0.000000, -0.079776}, {-0.041804, 0.000000}, {0.000000, -0.119232}, {-0.042679, -0.000000}, {-0.000000, -0.207305}, {-0.043211, 0.000000}, {0.000000, -0.634978}, {0.956610, 0.000000}, {0.000000, 0.634978}, {-0.043211, 0.000000}, {0.000000, 0.207305}, {-0.042679, 0.000000}, {0.000000, 0.119232}, {-0.041804, 0.000000}, {-0.000000, 0.079776}, {-0.040601, 0.000000}, {0.000000, 0.056643}, {-0.039093, 0.000000}, {-0.000000, 0.041052}, {-0.037308, 0.000000}, {-0.000000, 0.029645}, {-0.035278, 0.000000}, {0.000000, 0.020868}, {-0.033039, -0.000000}, {0.000000, 0.013906}, {-0.030631, 0.000000}, {-0.000000, 0.008292}, {-0.028094, 0.000000}, {0.000000, 0.003735}, {-0.025469, 0.000000}, {-0.000000, 0.000046}, {-0.022800, -0.000000}, {0.000000, -0.002910}, {-0.020127, 0.000000}, {-0.000000, -0.005234}, {-0.017489, -0.000000}, {-0.000000, -0.007006}, {-0.014922, 0.000000}, {-0.000000, -0.008294}, {-0.012459, 0.000000}, {0.000000, -0.009158}, {-0.010130, 0.000000}, {-0.000000, -0.009653}, {-0.007957, 0.000000}, {-0.000000, -0.009829}, {-0.005962, 0.000000}, {-0.000000, -0.009736}, {-0.004158, -0.000000}, {0.000000, -0.009418}, {-0.002556, 0.000000}, {0.000000, -0.008919}, {-0.001160, -0.000000}, {-0.000000, -0.008279}, {0.000029, 0.000000}, {-0.000000, -0.007538}, {0.001016, -0.000000}, {-0.000000, -0.006728}, {0.001808, 0.000000}, {-0.000000, -0.005883}, {0.002417, 0.000000}, {-0.000000, -0.005028}, {0.002856, 0.000000}, {-0.000000, -0.004188}, {0.003141, 0.000000}, {0.000000, -0.003384}, {0.003291, -0.000000}, {-0.000000, -0.002630}, {0.003322, 0.000000}, {-0.000000, -0.001940}, {0.003255, 0.000000}, {0.000000, -0.001322}, {0.003109, 0.000000}, {0.000000, -0.000782}, {0.002900, 0.000000}, {-0.000000, -0.000321}, {0.002646, 0.000000}, {0.000000, 0.000060}, {0.002363, 0.000000}, {-0.000000, 0.000364}, {0.002064, 0.000000}, {0.000000, 0.000597}, {0.001762, -0.000000}, {-0.000000, 0.000763}, {0.001466, -0.000000}, {0.000000, 0.000871}, {0.001186, -0.000000}, {-0.000000, 0.000927}, {0.000927, 0.000000}, {-0.000000, 0.000940}, {0.000693, 0.000000}, {0.000000, 0.000918}, {0.000488, 0.000000}, {-0.000000, 0.000870}, {0.000313, 0.000000}, {-0.000000, 0.000801}, {0.000168, 0.000000}, {0.000000, 0.000719}, {0.000052, -0.000000}, {-0.000000, 0.000630}, {-0.000038, 0.000000}, {-0.000000, 0.000539}, {-0.000103, -0.000000}, {0.000000, 0.000450}, {-0.000147, 0.000000}, {-0.000000, 0.000365}, {-0.000173, 0.000000}, {0.000000, 0.000288}, {-0.000184, 0.000000}, {-0.000000, 0.000219}, {-0.000183, 0.000000}, {0.000000, 0.000160}, {-0.000174, 0.000000}, {-0.000000, 0.000111}, {-0.000159, 0.000000}, {-0.000000, 0.000071}, {-0.000140, 0.000000}, {0.000000, 0.000040}, {-0.000119, 0.000000}, {0.000000, 0.000017}, {-0.000098, -0.000000}, {0.000000, 0.000001}, {-0.000078, -0.000000}, {0.000000, -0.000009}, {-0.000060, -0.000000}, {0.000000, -0.000015}, {-0.000045, -0.000000}, {-0.000000, -0.000017}, {-0.000032, -0.000000}, {0.000000, -0.000016}, {-0.000021, -0.000000}, {-0.000000, -0.000014}, {-0.000013, -0.000000}, {-0.000000, -0.000012}, {-0.000008, -0.000000}, {0.000000, -0.000008}, {-0.000004, 0.000000}};codec2-1.2.0/src/interldpc.c000066400000000000000000000273371445607075400156200ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: interldpc.c AUTHOR......: David Rowe DATE CREATED: April 2018 Helper functions for LDPC-based waveforms. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2018 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "interldpc.h" #include #include #include #include #include #include #include "gp_interleaver.h" #include "mpdecode_core.h" #include "ofdm_internal.h" void freedv_pack(unsigned char *bytes, unsigned char *bits, int nbits); void freedv_unpack(unsigned char *bits, unsigned char *bytes, int nbits); unsigned short freedv_crc16_unpacked(unsigned char *bits, int nbits); void set_up_ldpc_constants(struct LDPC *ldpc, int code_length, int parity_bits) { /* following provided for convenience and to match Octave variable names */ /* these remain fixed */ ldpc->ldpc_data_bits_per_frame = code_length - parity_bits; ldpc->ldpc_coded_bits_per_frame = code_length; /* in the case there are some unused data bits, these may be modified to be less that ldpc->ldpc_xxx versions above. We place known bits in the unused data bit positions, which make the code stronger, and allow us to mess with different speech codec bit allocations without designing new LDPC codes. */ ldpc->data_bits_per_frame = ldpc->ldpc_data_bits_per_frame; ldpc->coded_bits_per_frame = ldpc->ldpc_coded_bits_per_frame; ldpc->protection_mode = LDPC_PROT_2020; } void set_data_bits_per_frame(struct LDPC *ldpc, int new_data_bits_per_frame) { ldpc->data_bits_per_frame = new_data_bits_per_frame; ldpc->coded_bits_per_frame = ldpc->data_bits_per_frame + ldpc->NumberParityBits; } /* 1' stuffing (code rate reduction) - tweak LDPC code setup for selected modes */ void ldpc_mode_specific_setup(struct OFDM *ofdm, struct LDPC *ldpc) { /* mode specific set up */ if (!strcmp(ofdm->mode, "2020")) set_data_bits_per_frame(ldpc, 312); if (!strcmp(ofdm->mode, "2020B")) { set_data_bits_per_frame(ldpc, 156); ldpc->protection_mode = LDPC_PROT_2020B; } if (!strcmp(ofdm->mode, "datac4")) set_data_bits_per_frame(ldpc, 448); if (!strcmp(ofdm->mode, "datac13")) set_data_bits_per_frame(ldpc, 128); } /* LDPC encode frame - generate parity bits and a codeword, applying the selected FEC protection scheme */ void ldpc_encode_frame(struct LDPC *ldpc, int codeword[], unsigned char tx_bits_char[]) { unsigned char pbits[ldpc->NumberParityBits]; int codec_frame; int i, j; unsigned char tx_bits_char_padded[ldpc->ldpc_data_bits_per_frame]; switch (ldpc->protection_mode) { case LDPC_PROT_EQUAL: assert(ldpc->data_bits_per_frame == ldpc->ldpc_data_bits_per_frame); /* we have enough data bits to fill the codeword */ encode(ldpc, tx_bits_char, pbits); break; case LDPC_PROT_2020: /* not all data bits in codeword used, so set them to known values */ memcpy(tx_bits_char_padded, tx_bits_char, ldpc->data_bits_per_frame); for (i = ldpc->data_bits_per_frame; i < ldpc->ldpc_data_bits_per_frame; i++) tx_bits_char_padded[i] = 1; encode(ldpc, tx_bits_char_padded, pbits); break; case LDPC_PROT_2020B: /* We only want to protect the stage 1 VQ data bits, 0..10 in each 52 bit codec frame. There are 3 codec frames 3x52=156 bits, and 56 parity bits. We only use 11*3 = 33 bits of the LDPC codeword data bits, the rest are set to known values. */ for (j = 0, codec_frame = 0; codec_frame < 3; codec_frame++) for (i = 0; i < 11; i++, j++) tx_bits_char_padded[j] = tx_bits_char[codec_frame * 52 + i]; assert(j == 33); for (i = 33; i < ldpc->ldpc_data_bits_per_frame; i++) tx_bits_char_padded[i] = 1; encode(ldpc, tx_bits_char_padded, pbits); break; default: assert(0); } /* output codeword is concatenation of (used) data bits and parity bits, we don't bother sending unused (known) data bits */ for (i = 0; i < ldpc->data_bits_per_frame; i++) codeword[i] = tx_bits_char[i]; for (j = 0; j < ldpc->NumberParityBits; i++, j++) codeword[i] = pbits[j]; } void qpsk_modulate_frame(COMP tx_symbols[], int codeword[], int n) { int s, i; int dibit[2]; complex float qpsk_symb; for (s = 0, i = 0; i < n; s += 2, i++) { dibit[0] = codeword[s + 1] & 0x1; dibit[1] = codeword[s] & 0x1; qpsk_symb = qpsk_mod(dibit); tx_symbols[i].real = crealf(qpsk_symb); tx_symbols[i].imag = cimagf(qpsk_symb); } } /* run LDPC decoder, taking into account the FEC protection scheme */ void ldpc_decode_frame(struct LDPC *ldpc, int *parityCheckCount, int *iter, uint8_t out_char[], float llr[]) { float llr_full_codeword[ldpc->ldpc_coded_bits_per_frame]; int unused_data_bits = ldpc->ldpc_data_bits_per_frame - ldpc->data_bits_per_frame; uint8_t out_char_ldpc[ldpc->coded_bits_per_frame]; int i, j; int codec_frame; switch (ldpc->protection_mode) { case LDPC_PROT_EQUAL: /* Equal protection all data bits in codeword (e.g. 700D/700E), works well with rate 0.5 codes */ assert(ldpc->data_bits_per_frame == ldpc->ldpc_data_bits_per_frame); *iter = run_ldpc_decoder(ldpc, out_char, llr, parityCheckCount); break; case LDPC_PROT_2020: /* some data bits in codeword unused, effectively decreasing code rate and making FEC more powerful (without having to design a new code) */ for (i = 0; i < ldpc->data_bits_per_frame; i++) llr_full_codeword[i] = llr[i]; // known bits ... so really likely for (i = ldpc->data_bits_per_frame; i < ldpc->ldpc_data_bits_per_frame; i++) llr_full_codeword[i] = -100.0f; // parity bits at end for (i = ldpc->ldpc_data_bits_per_frame; i < ldpc->ldpc_coded_bits_per_frame; i++) llr_full_codeword[i] = llr[i - unused_data_bits]; *iter = run_ldpc_decoder(ldpc, out_char, llr_full_codeword, parityCheckCount); break; case LDPC_PROT_2020B: /* 2020B waveform, with unequal error protection. Only the stage1 VQ index of each LPCNet vocoder frames is protected. In this case the FEC codeword is much smaller than the payload data. */ // set up LDPC codeword for (j = 0, codec_frame = 0; codec_frame < 3; codec_frame++) for (i = 0; i < 11; i++, j++) llr_full_codeword[j] = llr[codec_frame * 52 + i]; // set known LDPC codeword data bits for (i = 33; i < ldpc->ldpc_data_bits_per_frame; i++) llr_full_codeword[i] = -100; // parity bits at end for (i = 0; i < ldpc->NumberParityBits; i++) llr_full_codeword[ldpc->ldpc_data_bits_per_frame + i] = llr[ldpc->data_bits_per_frame + i]; *iter = run_ldpc_decoder(ldpc, out_char_ldpc, llr_full_codeword, parityCheckCount); // pass through received data bits, replacing only decoded bits for (i = 0; i < ldpc->data_bits_per_frame; i++) { out_char[i] = llr[i] < 0; } for (j = 0, codec_frame = 0; codec_frame < 3; codec_frame++) for (i = 0; i < 11; i++, j++) out_char[codec_frame * 52 + i] = out_char_ldpc[j]; break; default: assert(0); } } /* Count uncoded (raw) bit errors over frame, note we don't include UW of txt bits as this is done after we dissassemmble the frame */ int count_uncoded_errors(struct LDPC *ldpc, struct OFDM_CONFIG *config, COMP codeword_symbols_de[], int crc16) { int i, Nerrs; int coded_syms_per_frame = ldpc->coded_bits_per_frame / config->bps; int coded_bits_per_frame = ldpc->coded_bits_per_frame; int data_bits_per_frame = ldpc->data_bits_per_frame; int rx_bits_raw[coded_bits_per_frame]; /* generate test codeword from known payload data bits */ int test_codeword[coded_bits_per_frame]; uint16_t r[data_bits_per_frame]; uint8_t tx_bits[data_bits_per_frame]; ofdm_rand(r, data_bits_per_frame); for (i = 0; i < data_bits_per_frame; i++) { tx_bits[i] = r[i] > 16384; } if (crc16) { uint16_t tx_crc16 = freedv_crc16_unpacked(tx_bits, data_bits_per_frame - 16); uint8_t tx_crc16_bytes[] = {tx_crc16 >> 8, tx_crc16 & 0xff}; freedv_unpack(tx_bits + data_bits_per_frame - 16, tx_crc16_bytes, 16); } ldpc_encode_frame(ldpc, test_codeword, tx_bits); for (i = 0; i < coded_syms_per_frame; i++) { int bits[2]; complex float s = codeword_symbols_de[i].real + I * codeword_symbols_de[i].imag; qpsk_demod(s, bits); rx_bits_raw[config->bps * i] = bits[1]; rx_bits_raw[config->bps * i + 1] = bits[0]; } Nerrs = 0; for (i = 0; i < coded_bits_per_frame; i++) { if (test_codeword[i] != rx_bits_raw[i]) Nerrs++; } return Nerrs; } int count_errors(uint8_t tx_bits[], uint8_t rx_bits[], int n) { int i; int Nerrs = 0; for (i = 0; i < n; i++) if (tx_bits[i] != rx_bits[i]) Nerrs++; return Nerrs; } /* for unequal protection modes, count coded errors only in those bits that have * been protected */ void count_errors_protection_mode(int protection_mode, int *pNerrs, int *pNcoded, uint8_t tx_bits[], uint8_t rx_bits[], int n) { int i; int Nerrs = 0; int Ncoded = 0; switch (protection_mode) { case LDPC_PROT_EQUAL: case LDPC_PROT_2020: for (i = 0; i < n; i++) { if (tx_bits[i] != rx_bits[i]) Nerrs++; Ncoded++; } break; case LDPC_PROT_2020B: /* We only protect bits 0..10 in each 52 bit LPCNet codec frame. There are 3 codec frames 3x52=156 data bits, of which only 11*3 = 33 bits are protected. */ for (int codec_frame = 0; codec_frame < 3; codec_frame++) { for (i = 0; i < 11; i++) { if (tx_bits[codec_frame * 52 + i] != rx_bits[codec_frame * 52 + i]) Nerrs++; Ncoded++; } } break; default: assert(0); } *pNerrs = Nerrs; *pNcoded = Ncoded; } /* Given an array of tx_bits, LDPC encodes, interleaves, and OFDM modulates */ void ofdm_ldpc_interleave_tx(struct OFDM *ofdm, struct LDPC *ldpc, complex float tx_sams[], uint8_t tx_bits[], uint8_t txt_bits[]) { int Npayloadsymsperpacket = ldpc->coded_bits_per_frame / ofdm->bps; int Npayloadbitsperpacket = ldpc->coded_bits_per_frame; int Nbitsperpacket = ofdm_get_bits_per_packet(ofdm); int codeword[Npayloadbitsperpacket]; COMP payload_symbols[Npayloadsymsperpacket]; COMP payload_symbols_inter[Npayloadsymsperpacket]; complex float tx_symbols[Nbitsperpacket / ofdm->bps]; ldpc_encode_frame(ldpc, codeword, tx_bits); qpsk_modulate_frame(payload_symbols, codeword, Npayloadsymsperpacket); gp_interleave_comp(payload_symbols_inter, payload_symbols, Npayloadsymsperpacket); ofdm_assemble_qpsk_modem_packet_symbols(ofdm, tx_symbols, payload_symbols_inter, txt_bits); ofdm_txframe(ofdm, tx_sams, tx_symbols); } codec2-1.2.0/src/interldpc.h000066400000000000000000000047001445607075400156120ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: interldpc.h AUTHOR......: David Rowe DATE CREATED: April 2018 Helper functions for interleaved LDPC modems. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2018 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __INTERLDPC__ #define __INTERLDPC__ #include #include "comp.h" #include "mpdecode_core.h" #include "ofdm_internal.h" /* LDPC unequal protection modes */ #define LDPC_PROT_EQUAL 0 /* all bits in LDPC codeword used, e.g. 700D/700E */ #define LDPC_PROT_2020 1 /* (504,396) but some data bits unused */ #define LDPC_PROT_2020B \ 3 /* (112,56) but we only protect stage1 VQ in each LPCNet frame */ void set_up_ldpc_constants(struct LDPC *ldpc, int code_length, int parity_bits); void set_data_bits_per_frame(struct LDPC *ldpc, int new_data_bits_per_frame); void ldpc_mode_specific_setup(struct OFDM *ofdm, struct LDPC *ldpc); void ldpc_encode_frame(struct LDPC *ldpc, int codeword[], unsigned char tx_bits_char[]); void qpsk_modulate_frame(COMP tx_symbols[], int codeword[], int n); void ldpc_decode_frame(struct LDPC *ldpc, int *parityCheckCount, int *iter, uint8_t out_char[], float llr[]); int count_uncoded_errors(struct LDPC *ldpc, struct OFDM_CONFIG *config, COMP codeword_symbols_de[], int crc16); int count_errors(uint8_t tx_bits[], uint8_t rx_bits[], int n); void count_errors_protection_mode(int protection_mode, int *pNerrs, int *pNcoded, uint8_t tx_bits[], uint8_t rx_bits[], int n); void ofdm_ldpc_interleave_tx(struct OFDM *ofdm, struct LDPC *ldpc, complex float tx_sams[], uint8_t tx_bits[], uint8_t txt_bits[]); #endif codec2-1.2.0/src/interp.c000066400000000000000000000231431445607075400151240ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: interp.c AUTHOR......: David Rowe DATE CREATED: 9/10/09 Interpolation of 20ms frames to 10ms frames. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2009 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "interp.h" #include #include #include #include #include "defines.h" #include "lsp.h" #include "quantise.h" float sample_log_amp(MODEL *model, float w); #if 0 /*---------------------------------------------------------------------------*\ FUNCTION....: interp() AUTHOR......: David Rowe DATE CREATED: 22/8/10 Given two frames described by model parameters 20ms apart, determines the model parameters of the 10ms frame between them. Assumes voicing is available for middle (interpolated) frame. Outputs are amplitudes and Wo for the interpolated frame. This version can interpolate the amplitudes between two frames of different Wo and L. This version works by log linear interpolation, but listening tests showed it creates problems in background noise, e.g. hts2a and mmt1. When this function is used (--dec mode) bg noise appears to be amplitude modulated, and gets louder. The interp_lsp() function below seems to do a better job. \*---------------------------------------------------------------------------*/ void interpolate( MODEL *interp, /* interpolated model params */ MODEL *prev, /* previous frames model params */ MODEL *next, /* next frames model params */ float Wo_min ) { int l; float w,log_amp; /* Wo depends on voicing of this and adjacent frames */ if (interp->voiced) { if (prev->voiced && next->voiced) interp->Wo = (prev->Wo + next->Wo)/2.0; if (!prev->voiced && next->voiced) interp->Wo = next->Wo; if (prev->voiced && !next->voiced) interp->Wo = prev->Wo; } else { interp->Wo = Wo_min; } interp->L = PI/interp->Wo; /* Interpolate amplitudes using linear interpolation in log domain */ for(l=1; l<=interp->L; l++) { w = l*interp->Wo; log_amp = (sample_log_amp(prev, w) + sample_log_amp(next, w))/2.0; interp->A[l] = powf(10.0, log_amp); } } #endif /*---------------------------------------------------------------------------*\ FUNCTION....: sample_log_amp() AUTHOR......: David Rowe DATE CREATED: 22/8/10 Samples the amplitude envelope at an arbitrary frequency w. Uses linear interpolation in the log domain to sample between harmonic amplitudes. \*---------------------------------------------------------------------------*/ float sample_log_amp(MODEL *model, float w) { int m; float f, log_amp; assert(w > 0.0); assert(w <= PI); m = floorf(w / model->Wo + 0.5); f = (w - m * model->Wo) / w; assert(f <= 1.0); if (m < 1) { log_amp = f * log10f(model->A[1] + 1E-6); } else if ((m + 1) > model->L) { log_amp = (1.0 - f) * log10f(model->A[model->L] + 1E-6); } else { log_amp = (1.0 - f) * log10f(model->A[m] + 1E-6) + f * log10f(model->A[m + 1] + 1E-6); } return log_amp; } #ifdef NOT_NEEDED /*---------------------------------------------------------------------------*\ FUNCTION....: interp_lsp() AUTHOR......: David Rowe DATE CREATED: 10 Nov 2010 Given two frames described by model parameters 20ms apart, determines the model parameters of the 10ms frame between them. Assumes voicing is available for middle (interpolated) frame. Outputs are amplitudes and Wo for the interpolated frame. This version uses interpolation of LSPs, seems to do a better job with bg noise. \*---------------------------------------------------------------------------*/ void interpolate_lsp(codec2_fft_cfg fft_fwd_cfg, MODEL *interp, /* interpolated model params */ MODEL *prev, /* previous frames model params */ MODEL *next, /* next frames model params */ float *prev_lsps, /* previous frames LSPs */ float prev_e, /* previous frames LPC energy */ float *next_lsps, /* next frames LSPs */ float next_e, /* next frames LPC energy */ float *ak_interp, /* interpolated aks for this frame */ float *lsps_interp, /* interpolated lsps for this frame */ float Wo_min) { int i; float e; float snr; /* trap corner case where V est is probably wrong */ if (interp->voiced && !prev->voiced && !next->voiced) { interp->voiced = 0; } /* Wo depends on voicing of this and adjacent frames */ if (interp->voiced) { if (prev->voiced && next->voiced) interp->Wo = (prev->Wo + next->Wo) / 2.0; if (!prev->voiced && next->voiced) interp->Wo = next->Wo; if (prev->voiced && !next->voiced) interp->Wo = prev->Wo; } else { interp->Wo = Wo_min; } interp->L = PI / interp->Wo; // printf(" interp: prev_v: %d next_v: %d prev_Wo: %f next_Wo: %f\n", // prev->voiced, next->voiced, prev->Wo, next->Wo); // printf(" interp: Wo: %1.5f L: %d\n", interp->Wo, interp->L); /* interpolate LSPs */ for (i = 0; i < LPC_ORD; i++) { lsps_interp[i] = (prev_lsps[i] + next_lsps[i]) / 2.0; } /* Interpolate LPC energy in log domain */ e = powf(10.0, (log10f(prev_e) + log10f(next_e)) / 2.0); // printf(" interp: e: %f\n", e); /* convert back to amplitudes */ lsp_to_lpc(lsps_interp, ak_interp, LPC_ORD); aks_to_M2(fft_fwd_cfg, ak_interp, LPC_ORD, interp, e, &snr, 0, 0, 1, 1, LPCPF_BETA, LPCPF_GAMMA); // printf(" interp: ak[1]: %f A[1] %f\n", ak_interp[1], interp->A[1]); } #endif /*---------------------------------------------------------------------------*\ FUNCTION....: interp_Wo() AUTHOR......: David Rowe DATE CREATED: 22 May 2012 Interpolates centre 10ms sample of Wo and L samples given two samples 20ms apart. Assumes voicing is available for centre (interpolated) frame. \*---------------------------------------------------------------------------*/ void interp_Wo(MODEL *interp, /* interpolated model params */ MODEL *prev, /* previous frames model params */ MODEL *next, /* next frames model params */ float Wo_min) { interp_Wo2(interp, prev, next, 0.5, Wo_min); } /*---------------------------------------------------------------------------*\ FUNCTION....: interp_Wo2() AUTHOR......: David Rowe DATE CREATED: 22 May 2012 Weighted interpolation of two Wo samples. \*---------------------------------------------------------------------------*/ void interp_Wo2(MODEL *interp, /* interpolated model params */ MODEL *prev, /* previous frames model params */ MODEL *next, /* next frames model params */ float weight, float Wo_min) { /* trap corner case where voicing est is probably wrong */ if (interp->voiced && !prev->voiced && !next->voiced) { interp->voiced = 0; } /* Wo depends on voicing of this and adjacent frames */ if (interp->voiced) { if (prev->voiced && next->voiced) interp->Wo = (1.0 - weight) * prev->Wo + weight * next->Wo; if (!prev->voiced && next->voiced) interp->Wo = next->Wo; if (prev->voiced && !next->voiced) interp->Wo = prev->Wo; } else { interp->Wo = Wo_min; } interp->L = PI / interp->Wo; } /*---------------------------------------------------------------------------*\ FUNCTION....: interp_energy() AUTHOR......: David Rowe DATE CREATED: 22 May 2012 Interpolates centre 10ms sample of energy given two samples 20ms apart. \*---------------------------------------------------------------------------*/ float interp_energy(float prev_e, float next_e) { // return powf(10.0, (log10f(prev_e) + log10f(next_e))/2.0); return sqrtf(prev_e * next_e); // looks better is math. identical and faster math } /*---------------------------------------------------------------------------*\ FUNCTION....: interp_energy2() AUTHOR......: David Rowe DATE CREATED: 22 May 2012 Interpolates centre 10ms sample of energy given two samples 20ms apart. \*---------------------------------------------------------------------------*/ float interp_energy2(float prev_e, float next_e, float weight) { return POW10F((1.0 - weight) * log10f(prev_e) + weight * log10f(next_e)); } /*---------------------------------------------------------------------------*\ FUNCTION....: interpolate_lsp_ver2() AUTHOR......: David Rowe DATE CREATED: 22 May 2012 Weighted interpolation of LSPs. \*---------------------------------------------------------------------------*/ void interpolate_lsp_ver2(float interp[], float prev[], float next[], float weight, int order) { int i; for (i = 0; i < order; i++) interp[i] = (1.0 - weight) * prev[i] + weight * next[i]; } codec2-1.2.0/src/interp.h000066400000000000000000000033311445607075400151260ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: interp.h AUTHOR......: David Rowe DATE CREATED: 9/10/09 Interpolation of 20ms frames to 10ms frames. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2009 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __INTERP__ #define __INTERP__ #include "defines.h" #include "kiss_fft.h" void interpolate(MODEL *interp, MODEL *prev, MODEL *next); void interpolate_lsp(kiss_fft_cfg fft_dec_cfg, MODEL *interp, MODEL *prev, MODEL *next, float *prev_lsps, float prev_e, float *next_lsps, float next_e, float *ak_interp, float *lsps_interp, float Wo_min); void interp_Wo(MODEL *interp, MODEL *prev, MODEL *next, float Wo_min); void interp_Wo2(MODEL *interp, MODEL *prev, MODEL *next, float weight, float Wo_min); float interp_energy(float prev, float next); float interp_energy2(float prev, float next, float weight); void interpolate_lsp_ver2(float interp[], float prev[], float next[], float weight, int order); #endif codec2-1.2.0/src/kiss_fft.c000066400000000000000000000275601445607075400154420ustar00rootroot00000000000000/* Copyright (c) 2003-2010, Mark Borgerding All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * 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. * Neither the author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission. 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 OWNER 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. */ #include "_kiss_fft_guts.h" /* The guts header contains all the multiplication and addition macros that are defined for fixed or floating point complex numbers. It also declares the kf_ internal functions. */ static void kf_bfly2(kiss_fft_cpx *Fout, const size_t fstride, const kiss_fft_cfg st, int m) { kiss_fft_cpx *Fout2; kiss_fft_cpx *tw1 = st->twiddles; kiss_fft_cpx t; Fout2 = Fout + m; do { C_FIXDIV(*Fout, 2); C_FIXDIV(*Fout2, 2); C_MUL(t, *Fout2, *tw1); tw1 += fstride; C_SUB(*Fout2, *Fout, t); C_ADDTO(*Fout, t); ++Fout2; ++Fout; } while (--m); } static void kf_bfly4(kiss_fft_cpx *Fout, const size_t fstride, const kiss_fft_cfg st, const size_t m) { kiss_fft_cpx *tw1, *tw2, *tw3; kiss_fft_cpx scratch[6]; size_t k = m; const size_t m2 = 2 * m; const size_t m3 = 3 * m; tw3 = tw2 = tw1 = st->twiddles; do { C_FIXDIV(*Fout, 4); C_FIXDIV(Fout[m], 4); C_FIXDIV(Fout[m2], 4); C_FIXDIV(Fout[m3], 4); C_MUL(scratch[0], Fout[m], *tw1); C_MUL(scratch[1], Fout[m2], *tw2); C_MUL(scratch[2], Fout[m3], *tw3); C_SUB(scratch[5], *Fout, scratch[1]); C_ADDTO(*Fout, scratch[1]); C_ADD(scratch[3], scratch[0], scratch[2]); C_SUB(scratch[4], scratch[0], scratch[2]); C_SUB(Fout[m2], *Fout, scratch[3]); tw1 += fstride; tw2 += fstride * 2; tw3 += fstride * 3; C_ADDTO(*Fout, scratch[3]); if (st->inverse) { Fout[m].r = scratch[5].r - scratch[4].i; Fout[m].i = scratch[5].i + scratch[4].r; Fout[m3].r = scratch[5].r + scratch[4].i; Fout[m3].i = scratch[5].i - scratch[4].r; } else { Fout[m].r = scratch[5].r + scratch[4].i; Fout[m].i = scratch[5].i - scratch[4].r; Fout[m3].r = scratch[5].r - scratch[4].i; Fout[m3].i = scratch[5].i + scratch[4].r; } ++Fout; } while (--k); } static void kf_bfly3(kiss_fft_cpx *Fout, const size_t fstride, const kiss_fft_cfg st, size_t m) { size_t k = m; const size_t m2 = 2 * m; kiss_fft_cpx *tw1, *tw2; kiss_fft_cpx scratch[5]; kiss_fft_cpx epi3; epi3 = st->twiddles[fstride * m]; tw1 = tw2 = st->twiddles; do { C_FIXDIV(*Fout, 3); C_FIXDIV(Fout[m], 3); C_FIXDIV(Fout[m2], 3); C_MUL(scratch[1], Fout[m], *tw1); C_MUL(scratch[2], Fout[m2], *tw2); C_ADD(scratch[3], scratch[1], scratch[2]); C_SUB(scratch[0], scratch[1], scratch[2]); tw1 += fstride; tw2 += fstride * 2; Fout[m].r = Fout->r - HALF_OF(scratch[3].r); Fout[m].i = Fout->i - HALF_OF(scratch[3].i); C_MULBYSCALAR(scratch[0], epi3.i); C_ADDTO(*Fout, scratch[3]); Fout[m2].r = Fout[m].r + scratch[0].i; Fout[m2].i = Fout[m].i - scratch[0].r; Fout[m].r -= scratch[0].i; Fout[m].i += scratch[0].r; ++Fout; } while (--k); } static void kf_bfly5(kiss_fft_cpx *Fout, const size_t fstride, const kiss_fft_cfg st, int m) { kiss_fft_cpx *Fout0, *Fout1, *Fout2, *Fout3, *Fout4; int u; kiss_fft_cpx scratch[13]; kiss_fft_cpx *twiddles = st->twiddles; kiss_fft_cpx *tw; kiss_fft_cpx ya, yb; ya = twiddles[fstride * m]; yb = twiddles[fstride * 2 * m]; Fout0 = Fout; Fout1 = Fout0 + m; Fout2 = Fout0 + 2 * m; Fout3 = Fout0 + 3 * m; Fout4 = Fout0 + 4 * m; tw = st->twiddles; for (u = 0; u < m; ++u) { C_FIXDIV(*Fout0, 5); C_FIXDIV(*Fout1, 5); C_FIXDIV(*Fout2, 5); C_FIXDIV(*Fout3, 5); C_FIXDIV(*Fout4, 5); scratch[0] = *Fout0; C_MUL(scratch[1], *Fout1, tw[u * fstride]); C_MUL(scratch[2], *Fout2, tw[2 * u * fstride]); C_MUL(scratch[3], *Fout3, tw[3 * u * fstride]); C_MUL(scratch[4], *Fout4, tw[4 * u * fstride]); C_ADD(scratch[7], scratch[1], scratch[4]); C_SUB(scratch[10], scratch[1], scratch[4]); C_ADD(scratch[8], scratch[2], scratch[3]); C_SUB(scratch[9], scratch[2], scratch[3]); Fout0->r += scratch[7].r + scratch[8].r; Fout0->i += scratch[7].i + scratch[8].i; scratch[5].r = scratch[0].r + S_MUL(scratch[7].r, ya.r) + S_MUL(scratch[8].r, yb.r); scratch[5].i = scratch[0].i + S_MUL(scratch[7].i, ya.r) + S_MUL(scratch[8].i, yb.r); scratch[6].r = S_MUL(scratch[10].i, ya.i) + S_MUL(scratch[9].i, yb.i); scratch[6].i = -S_MUL(scratch[10].r, ya.i) - S_MUL(scratch[9].r, yb.i); C_SUB(*Fout1, scratch[5], scratch[6]); C_ADD(*Fout4, scratch[5], scratch[6]); scratch[11].r = scratch[0].r + S_MUL(scratch[7].r, yb.r) + S_MUL(scratch[8].r, ya.r); scratch[11].i = scratch[0].i + S_MUL(scratch[7].i, yb.r) + S_MUL(scratch[8].i, ya.r); scratch[12].r = -S_MUL(scratch[10].i, yb.i) + S_MUL(scratch[9].i, ya.i); scratch[12].i = S_MUL(scratch[10].r, yb.i) - S_MUL(scratch[9].r, ya.i); C_ADD(*Fout2, scratch[11], scratch[12]); C_SUB(*Fout3, scratch[11], scratch[12]); ++Fout0; ++Fout1; ++Fout2; ++Fout3; ++Fout4; } } /* perform the butterfly for one stage of a mixed radix FFT */ static void kf_bfly_generic(kiss_fft_cpx *Fout, const size_t fstride, const kiss_fft_cfg st, int m, int p) { int u, k, q1, q; kiss_fft_cpx *twiddles = st->twiddles; kiss_fft_cpx t; int Norig = st->nfft; kiss_fft_cpx *scratch = (kiss_fft_cpx *)KISS_FFT_TMP_ALLOC(sizeof(kiss_fft_cpx) * p); for (u = 0; u < m; ++u) { k = u; for (q1 = 0; q1 < p; ++q1) { scratch[q1] = Fout[k]; C_FIXDIV(scratch[q1], p); k += m; } k = u; for (q1 = 0; q1 < p; ++q1) { int twidx = 0; Fout[k] = scratch[0]; for (q = 1; q < p; ++q) { twidx += fstride * k; if (twidx >= Norig) twidx -= Norig; C_MUL(t, scratch[q], twiddles[twidx]); C_ADDTO(Fout[k], t); } k += m; } } KISS_FFT_TMP_FREE(scratch); } static void kf_work(kiss_fft_cpx *Fout, const kiss_fft_cpx *f, const size_t fstride, int in_stride, int *factors, const kiss_fft_cfg st) { kiss_fft_cpx *Fout_beg = Fout; const int p = *factors++; /* the radix */ const int m = *factors++; /* stage's fft length/p */ const kiss_fft_cpx *Fout_end = Fout + p * m; #ifdef _OPENMP // use openmp extensions at the // top-level (not recursive) if (fstride == 1 && p <= 5) { int k; // execute the p different work units in different threads #pragma omp parallel for for (k = 0; k < p; ++k) kf_work(Fout + k * m, f + fstride * in_stride * k, fstride * p, in_stride, factors, st); // all threads have joined by this point switch (p) { case 2: kf_bfly2(Fout, fstride, st, m); break; case 3: kf_bfly3(Fout, fstride, st, m); break; case 4: kf_bfly4(Fout, fstride, st, m); break; case 5: kf_bfly5(Fout, fstride, st, m); break; default: kf_bfly_generic(Fout, fstride, st, m, p); break; } return; } #endif if (m == 1) { do { *Fout = *f; f += fstride * in_stride; } while (++Fout != Fout_end); } else { do { // recursive call: // DFT of size m*p performed by doing // p instances of smaller DFTs of size m, // each one takes a decimated version of the input kf_work(Fout, f, fstride * p, in_stride, factors, st); f += fstride * in_stride; } while ((Fout += m) != Fout_end); } Fout = Fout_beg; // recombine the p smaller DFTs switch (p) { case 2: kf_bfly2(Fout, fstride, st, m); break; case 3: kf_bfly3(Fout, fstride, st, m); break; case 4: kf_bfly4(Fout, fstride, st, m); break; case 5: kf_bfly5(Fout, fstride, st, m); break; default: kf_bfly_generic(Fout, fstride, st, m, p); break; } } /* facbuf is populated by p1,m1,p2,m2, ... where p[i] * m[i] = m[i-1] m0 = n */ static void kf_factor(int n, int *facbuf) { int p = 4; double floor_sqrt; floor_sqrt = floorf(sqrtf((double)n)); /*factor out powers of 4, powers of 2, then any remaining primes */ do { while (n % p) { switch (p) { case 4: p = 2; break; case 2: p = 3; break; default: p += 2; break; } if (p > floor_sqrt) p = n; /* no more factors, skip to end */ } n /= p; *facbuf++ = p; *facbuf++ = n; } while (n > 1); } /* * * User-callable function to allocate all necessary storage space for the fft. * * The return value is a contiguous block of memory, allocated with malloc. As * such, It can be freed with free(), rather than a kiss_fft-specific function. * */ kiss_fft_cfg kiss_fft_alloc(int nfft, int inverse_fft, void *mem, size_t *lenmem) { kiss_fft_cfg st = NULL; size_t memneeded = sizeof(struct kiss_fft_state) + sizeof(kiss_fft_cpx) * (nfft - 1); /* twiddle factors*/ if (lenmem == NULL) { st = (kiss_fft_cfg)KISS_FFT_MALLOC(memneeded); } else { if (mem != NULL && *lenmem >= memneeded) st = (kiss_fft_cfg)mem; *lenmem = memneeded; } if (st) { int i; st->nfft = nfft; st->inverse = inverse_fft; for (i = 0; i < nfft; ++i) { const double pi = 3.141592653589793238462643383279502884197169399375105820974944; double phase = -2 * pi * i / nfft; if (st->inverse) phase *= -1; kf_cexp(st->twiddles + i, phase); } kf_factor(nfft, st->factors); } return st; } void kiss_fft_stride(kiss_fft_cfg st, const kiss_fft_cpx *fin, kiss_fft_cpx *fout, int in_stride) { if (fin == fout) { // NOTE: this is not really an in-place FFT algorithm. // It just performs an out-of-place FFT into a temp buffer kiss_fft_cpx *tmpbuf = (kiss_fft_cpx *)KISS_FFT_TMP_ALLOC(sizeof(kiss_fft_cpx) * st->nfft); kf_work(tmpbuf, fin, 1, in_stride, st->factors, st); memcpy(fout, tmpbuf, sizeof(kiss_fft_cpx) * st->nfft); KISS_FFT_TMP_FREE(tmpbuf); } else { kf_work(fout, fin, 1, in_stride, st->factors, st); } } void kiss_fft(kiss_fft_cfg cfg, const kiss_fft_cpx *fin, kiss_fft_cpx *fout) { kiss_fft_stride(cfg, fin, fout, 1); } void kiss_fft_cleanup(void) { // nothing needed any more } int kiss_fft_next_fast_size(int n) { while (1) { int m = n; while ((m % 2) == 0) m /= 2; while ((m % 3) == 0) m /= 3; while ((m % 5) == 0) m /= 5; if (m <= 1) break; /* n is completely factorable by twos, threes, and fives */ n++; } return n; } codec2-1.2.0/src/kiss_fft.h000066400000000000000000000063731445607075400154460ustar00rootroot00000000000000#ifndef KISS_FFT_H #define KISS_FFT_H #include #include #include #include #ifdef __cplusplus extern "C" { #endif /* ATTENTION! If you would like a : -- a utility that will handle the caching of fft objects -- real-only (no imaginary time component ) FFT -- a multi-dimensional FFT -- a command-line utility to perform ffts -- a command-line utility to perform fast-convolution filtering Then see kfc.h kiss_fftr.h kiss_fftnd.h fftutil.c kiss_fastfir.c in the tools/ directory. */ #ifdef USE_SIMD #include #define kiss_fft_scalar __m128 #define KISS_FFT_MALLOC(nbytes) _mm_malloc(nbytes, 16) #define KISS_FFT_FREE _mm_free #else #define KISS_FFT_MALLOC malloc #define KISS_FFT_FREE free #endif #ifdef FIXED_POINT #include #if (FIXED_POINT == 32) #define kiss_fft_scalar int32_t #else #define kiss_fft_scalar int16_t #endif #else #ifndef kiss_fft_scalar /* default is float */ #define kiss_fft_scalar float #endif #endif typedef struct { kiss_fft_scalar r; kiss_fft_scalar i; } kiss_fft_cpx; typedef struct kiss_fft_state *kiss_fft_cfg; /* * kiss_fft_alloc * * Initialize a FFT (or IFFT) algorithm's cfg/state buffer. * * typical usage: kiss_fft_cfg mycfg=kiss_fft_alloc(1024,0,NULL,NULL); * * The return value from fft_alloc is a cfg buffer used internally * by the fft routine or NULL. * * If lenmem is NULL, then kiss_fft_alloc will allocate a cfg buffer using * malloc. The returned value should be free()d when done to avoid memory leaks. * * The state can be placed in a user supplied buffer 'mem': * If lenmem is not NULL and mem is not NULL and *lenmem is large enough, * then the function places the cfg in mem and the size used in *lenmem * and returns mem. * * If lenmem is not NULL and ( mem is NULL or *lenmem is not large enough), * then the function returns NULL and places the minimum cfg * buffer size in *lenmem. * */ kiss_fft_cfg kiss_fft_alloc(int nfft, int inverse_fft, void *mem, size_t *lenmem); /* * kiss_fft(cfg,in_out_buf) * * Perform an FFT on a complex input buffer. * for a forward FFT, * fin should be f[0] , f[1] , ... ,f[nfft-1] * fout will be F[0] , F[1] , ... ,F[nfft-1] * Note that each element is complex and can be accessed like f[k].r and f[k].i * */ void kiss_fft(kiss_fft_cfg cfg, const kiss_fft_cpx *fin, kiss_fft_cpx *fout); /* A more generic version of the above function. It reads its input from every Nth sample. * */ void kiss_fft_stride(kiss_fft_cfg cfg, const kiss_fft_cpx *fin, kiss_fft_cpx *fout, int fin_stride); /* If kiss_fft_alloc allocated a buffer, it is one contiguous buffer and can be simply free()d when no longer needed*/ #define kiss_fft_free free /* Cleans up some memory that gets managed internally. Not necessary to call, but it might clean up your compiler output to call this before you exit. */ void kiss_fft_cleanup(void); /* * Returns the smallest integer k, such that k>=n and k has only "fast" factors * (2,3,5) */ int kiss_fft_next_fast_size(int n); /* for real ffts, we need an even size */ #define kiss_fftr_next_fast_size_real(n) \ (kiss_fft_next_fast_size(((n) + 1) >> 1) << 1) #ifdef __cplusplus } #endif #endif codec2-1.2.0/src/kiss_fftr.c000066400000000000000000000126461445607075400156230ustar00rootroot00000000000000/* Copyright (c) 2003-2004, Mark Borgerding All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * 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. * Neither the author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission. 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 OWNER 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. */ #include "kiss_fftr.h" #include "_kiss_fft_guts.h" #include "assert.h" struct kiss_fftr_state { kiss_fft_cfg substate; kiss_fft_cpx *tmpbuf; kiss_fft_cpx *super_twiddles; #ifdef USE_SIMD void *pad; #endif }; kiss_fftr_cfg kiss_fftr_alloc(int nfft, int inverse_fft, void *mem, size_t *lenmem) { int i; kiss_fftr_cfg st = NULL; size_t subsize, memneeded; if (nfft & 1) { fprintf(stderr, "Real FFT optimization must be even.\n"); return NULL; } nfft >>= 1; kiss_fft_alloc(nfft, inverse_fft, NULL, &subsize); memneeded = sizeof(struct kiss_fftr_state) + subsize + sizeof(kiss_fft_cpx) * (nfft * 3 / 2); if (lenmem == NULL) { st = (kiss_fftr_cfg)KISS_FFT_MALLOC(memneeded); } else { if (*lenmem >= memneeded) st = (kiss_fftr_cfg)mem; *lenmem = memneeded; } if (!st) return NULL; st->substate = (kiss_fft_cfg)(st + 1); /*just beyond kiss_fftr_state struct */ st->tmpbuf = (kiss_fft_cpx *)(((char *)st->substate) + subsize); st->super_twiddles = st->tmpbuf + nfft; kiss_fft_alloc(nfft, inverse_fft, st->substate, &subsize); for (i = 0; i < nfft / 2; ++i) { float phase = -3.14159265358979323846264338327 * ((float)(i + 1) / nfft + .5); if (inverse_fft) phase *= -1; kf_cexp(st->super_twiddles + i, phase); } return st; } void kiss_fftr(kiss_fftr_cfg st, const kiss_fft_scalar *timedata, kiss_fft_cpx *freqdata) { /* input buffer timedata is stored row-wise */ int k, ncfft; kiss_fft_cpx fpnk, fpk, f1k, f2k, tw, tdc; assert(st->substate->inverse == 0); ncfft = st->substate->nfft; /*perform the parallel fft of two real signals packed in real,imag*/ kiss_fft(st->substate, (const kiss_fft_cpx *)timedata, st->tmpbuf); /* The real part of the DC element of the frequency spectrum in st->tmpbuf * contains the sum of the even-numbered elements of the input time sequence * The imag part is the sum of the odd-numbered elements * * The sum of tdc.r and tdc.i is the sum of the input time sequence. * yielding DC of input time sequence * The difference of tdc.r - tdc.i is the sum of the input (dot product) * [1,-1,1,-1... yielding Nyquist bin of input time sequence */ tdc.r = st->tmpbuf[0].r; tdc.i = st->tmpbuf[0].i; C_FIXDIV(tdc, 2); CHECK_OVERFLOW_OP(tdc.r, +, tdc.i); CHECK_OVERFLOW_OP(tdc.r, -, tdc.i); freqdata[0].r = tdc.r + tdc.i; freqdata[ncfft].r = tdc.r - tdc.i; #ifdef USE_SIMD freqdata[ncfft].i = freqdata[0].i = _mm_set1_ps(0); #else freqdata[ncfft].i = freqdata[0].i = 0; #endif for (k = 1; k <= ncfft / 2; ++k) { fpk = st->tmpbuf[k]; fpnk.r = st->tmpbuf[ncfft - k].r; fpnk.i = -st->tmpbuf[ncfft - k].i; C_FIXDIV(fpk, 2); C_FIXDIV(fpnk, 2); C_ADD(f1k, fpk, fpnk); C_SUB(f2k, fpk, fpnk); C_MUL(tw, f2k, st->super_twiddles[k - 1]); freqdata[k].r = HALF_OF(f1k.r + tw.r); freqdata[k].i = HALF_OF(f1k.i + tw.i); freqdata[ncfft - k].r = HALF_OF(f1k.r - tw.r); freqdata[ncfft - k].i = HALF_OF(tw.i - f1k.i); } } void kiss_fftri(kiss_fftr_cfg st, const kiss_fft_cpx *freqdata, kiss_fft_scalar *timedata) { /* input buffer timedata is stored row-wise */ int k, ncfft; assert(st->substate->inverse == 1); ncfft = st->substate->nfft; st->tmpbuf[0].r = freqdata[0].r + freqdata[ncfft].r; st->tmpbuf[0].i = freqdata[0].r - freqdata[ncfft].r; C_FIXDIV(st->tmpbuf[0], 2); for (k = 1; k <= ncfft / 2; ++k) { kiss_fft_cpx fk, fnkc, fek, fok, tmp; fk = freqdata[k]; fnkc.r = freqdata[ncfft - k].r; fnkc.i = -freqdata[ncfft - k].i; C_FIXDIV(fk, 2); C_FIXDIV(fnkc, 2); C_ADD(fek, fk, fnkc); C_SUB(tmp, fk, fnkc); C_MUL(fok, tmp, st->super_twiddles[k - 1]); C_ADD(st->tmpbuf[k], fek, fok); C_SUB(st->tmpbuf[ncfft - k], fek, fok); #ifdef USE_SIMD st->tmpbuf[ncfft - k].i *= _mm_set1_ps(-1.0); #else st->tmpbuf[ncfft - k].i *= -1; #endif } kiss_fft(st->substate, st->tmpbuf, (kiss_fft_cpx *)timedata); } codec2-1.2.0/src/kiss_fftr.h000066400000000000000000000016201445607075400156160ustar00rootroot00000000000000#ifndef KISS_FTR_H #define KISS_FTR_H #include "kiss_fft.h" #ifdef __cplusplus extern "C" { #endif /* Real optimized version can save about 45% cpu time vs. complex fft of a real seq. */ typedef struct kiss_fftr_state *kiss_fftr_cfg; kiss_fftr_cfg kiss_fftr_alloc(int nfft, int inverse_fft, void *mem, size_t *lenmem); /* nfft must be even If you don't care to allocate space, use mem = lenmem = NULL */ void kiss_fftr(kiss_fftr_cfg cfg, const kiss_fft_scalar *timedata, kiss_fft_cpx *freqdata); /* input timedata has nfft scalar points output freqdata has nfft/2+1 complex points */ void kiss_fftri(kiss_fftr_cfg cfg, const kiss_fft_cpx *freqdata, kiss_fft_scalar *timedata); /* input freqdata has nfft/2+1 complex points output timedata has nfft scalar points */ #define kiss_fftr_free free #ifdef __cplusplus } #endif #endif codec2-1.2.0/src/ldpc_codes.c000066400000000000000000000126741445607075400157310ustar00rootroot00000000000000/* FILE...: ldpc_codes.c AUTHOR.: David Rowe CREATED: July 2020 Array of LDPC codes used for various Codec2 waveforms. */ #include "ldpc_codes.h" #include #include #include "HRA_112_112.h" #include "HRA_56_56.h" #include "HRAa_1536_512.h" #include "HRAb_396_504.h" #include "H_1024_2048_4f.h" #include "H_128_256_5.h" #include "H_16200_9720.h" #include "H_2064_516_sparse.h" #include "H_212_158.h" #include "H_256_512_4.h" #include "H_256_768_22.h" #include "H_4096_8192_3d.h" #include "assert.h" #include "interldpc.h" struct LDPC ldpc_codes[] = { /* short rate 1/2 code for FreeDV 700D */ {"HRA_112_112", HRA_112_112_MAX_ITER, 0, 1, 1, HRA_112_112_CODELENGTH, HRA_112_112_NUMBERPARITYBITS, HRA_112_112_NUMBERROWSHCOLS, HRA_112_112_MAX_ROW_WEIGHT, HRA_112_112_MAX_COL_WEIGHT, (uint16_t *)HRA_112_112_H_rows, (uint16_t *)HRA_112_112_H_cols}, /* short rate 1/2 code for FreeDV 700E */ {"HRA_56_56", HRA_56_56_MAX_ITER, 0, 1, 1, HRA_56_56_CODELENGTH, HRA_56_56_NUMBERPARITYBITS, HRA_56_56_NUMBERROWSHCOLS, HRA_56_56_MAX_ROW_WEIGHT, HRA_56_56_MAX_COL_WEIGHT, (uint16_t *)HRA_56_56_H_rows, (uint16_t *)HRA_56_56_H_cols}, #ifndef __EMBEDDED__ /* default Wenet High Alitiude Balloon rate 0.8 code */ {"H_2064_516_sparse", MAX_ITER, 0, 1, 1, CODELENGTH, NUMBERPARITYBITS, NUMBERROWSHCOLS, MAX_ROW_WEIGHT, MAX_COL_WEIGHT, (uint16_t *)H_2064_516_sparse_H_rows, (uint16_t *)H_2064_516_sparse_H_cols}, /* rate 0.8 code used for FreeDV 2020 */ {"HRAb_396_504", HRAb_396_504_MAX_ITER, 0, 1, 1, HRAb_396_504_CODELENGTH, HRAb_396_504_NUMBERPARITYBITS, HRAb_396_504_NUMBERROWSHCOLS, HRAb_396_504_MAX_ROW_WEIGHT, HRAb_396_504_MAX_COL_WEIGHT, (uint16_t *)HRAb_396_504_H_rows, (uint16_t *)HRAb_396_504_H_cols}, /* Rate 0.745 code for mopping up errors on 2020C from Bill VK5DSP. 2020C has been removed but code might be useful in future */ {"H_212_158", H_212_158_MAX_ITER, 0, 1, 1, H_212_158_CODELENGTH, H_212_158_NUMBERPARITYBITS, H_212_158_NUMBERROWSHCOLS, H_212_158_MAX_ROW_WEIGHT, H_212_158_MAX_COL_WEIGHT, (uint16_t *)H_212_158_H_rows, (uint16_t *)H_212_158_H_cols}, /* rate 1/3 code, works at raw BER of 14% */ {"H_256_768_22", H_256_768_22_MAX_ITER, 0, 1, 1, H_256_768_22_CODELENGTH, H_256_768_22_NUMBERPARITYBITS, H_256_768_22_NUMBERROWSHCOLS, H_256_768_22_MAX_ROW_WEIGHT, H_256_768_22_MAX_COL_WEIGHT, (uint16_t *)H_256_768_22_H_rows, (uint16_t *)H_256_768_22_H_cols}, /* used for 4FSK/LLR experiments */ {"H_256_512_4", H_256_512_4_MAX_ITER, 0, 1, 1, H_256_512_4_CODELENGTH, H_256_512_4_NUMBERPARITYBITS, H_256_512_4_NUMBERROWSHCOLS, H_256_512_4_MAX_ROW_WEIGHT, H_256_512_4_MAX_COL_WEIGHT, (uint16_t *)H_256_512_4_H_rows, (uint16_t *)H_256_512_4_H_cols}, /* used for 4FSK/LLR experiments */ {"HRAa_1536_512", HRAa_1536_512_MAX_ITER, 0, 1, 1, HRAa_1536_512_CODELENGTH, HRAa_1536_512_NUMBERPARITYBITS, HRAa_1536_512_NUMBERROWSHCOLS, HRAa_1536_512_MAX_ROW_WEIGHT, HRAa_1536_512_MAX_COL_WEIGHT, (uint16_t *)HRAa_1536_512_H_rows, (uint16_t *)HRAa_1536_512_H_cols}, /* used for 4FSK/LLR experiments */ {"H_128_256_5", H_128_256_5_MAX_ITER, 0, 1, 1, H_128_256_5_CODELENGTH, H_128_256_5_NUMBERPARITYBITS, H_128_256_5_NUMBERROWSHCOLS, H_128_256_5_MAX_ROW_WEIGHT, H_128_256_5_MAX_COL_WEIGHT, (uint16_t *)H_128_256_5_H_rows, (uint16_t *)H_128_256_5_H_cols}, /* Nice long code from Bill VK5DSP - useful for HF data */ {"H_4096_8192_3d", H_4096_8192_3d_MAX_ITER, 0, 1, 1, H_4096_8192_3d_CODELENGTH, H_4096_8192_3d_NUMBERPARITYBITS, H_4096_8192_3d_NUMBERROWSHCOLS, H_4096_8192_3d_MAX_ROW_WEIGHT, H_4096_8192_3d_MAX_COL_WEIGHT, (uint16_t *)H_4096_8192_3d_H_rows, (uint16_t *)H_4096_8192_3d_H_cols}, /* Nice long code from Bill VK5DSP - useful for HF data */ {"H_16200_9720", H_16200_9720_MAX_ITER, 0, 1, 1, H_16200_9720_CODELENGTH, H_16200_9720_NUMBERPARITYBITS, H_16200_9720_NUMBERROWSHCOLS, H_16200_9720_MAX_ROW_WEIGHT, H_16200_9720_MAX_COL_WEIGHT, (uint16_t *)H_16200_9720_H_rows, (uint16_t *)H_16200_9720_H_cols}, /* Another fine code from Bill VK5DSP - also useful for HF data */ {"H_1024_2048_4f", H_1024_2048_4f_MAX_ITER, 0, 1, 1, H_1024_2048_4f_CODELENGTH, H_1024_2048_4f_NUMBERPARITYBITS, H_1024_2048_4f_NUMBERROWSHCOLS, H_1024_2048_4f_MAX_ROW_WEIGHT, H_1024_2048_4f_MAX_COL_WEIGHT, (uint16_t *)H_1024_2048_4f_H_rows, (uint16_t *)H_1024_2048_4f_H_cols} #endif }; int ldpc_codes_num(void) { return sizeof(ldpc_codes) / sizeof(struct LDPC); } void ldpc_codes_list() { fprintf(stderr, "\n"); for (int c = 0; c < ldpc_codes_num(); c++) { int n = ldpc_codes[c].NumberRowsHcols + ldpc_codes[c].NumberParityBits; int k = ldpc_codes[c].NumberRowsHcols; float rate = (float)k / n; fprintf(stderr, "%-20s rate %3.2f (%d,%d) \n", ldpc_codes[c].name, (double)rate, n, k); } fprintf(stderr, "\n"); } int ldpc_codes_find(char name[]) { int code_index = -1; for (int c = 0; c < ldpc_codes_num(); c++) if (strcmp(ldpc_codes[c].name, name) == 0) code_index = c; assert(code_index != -1); /* code not found */ return code_index; } void ldpc_codes_setup(struct LDPC *ldpc, char name[]) { int code_index; code_index = ldpc_codes_find(name); assert(code_index != -1); memcpy(ldpc, &ldpc_codes[code_index], sizeof(struct LDPC)); set_up_ldpc_constants(ldpc, ldpc->CodeLength, ldpc->NumberParityBits); } codec2-1.2.0/src/ldpc_codes.h000066400000000000000000000006611445607075400157270ustar00rootroot00000000000000/* FILE...: ldpc_codes.h AUTHOR.: David Rowe CREATED: July 2020 Array of LDPC codes used for various Codec2 waveforms. */ #ifndef __LDPC_CODES__ #ifdef __cplusplus extern "C" { #endif #include "mpdecode_core.h" extern struct LDPC ldpc_codes[]; int ldpc_codes_num(void); void ldpc_codes_list(); int ldpc_codes_find(char name[]); void ldpc_codes_setup(struct LDPC *ldpc, char name[]); #ifdef __cplusplus } #endif #endif codec2-1.2.0/src/ldpc_dec.c000066400000000000000000000202201445607075400153510ustar00rootroot00000000000000/* FILE...: ldpc_dec.c AUTHOR.: Matthew C. Valenti, Rohit Iyer Seshadri, David Rowe CREATED: Sep 2016 Command line C LDPC decoder derived from MpDecode.c in the CML library. Allows us to run the same decoder in Octave and C. */ #include #include #include #include #include #include #include #include "ldpc_codes.h" #include "mpdecode_core.h" #include "ofdm_internal.h" int opt_exists(char *argv[], int argc, char opt[]) { int i; for (i = 0; i < argc; i++) { if (strcmp(argv[i], opt) == 0) { return i; } } return 0; } int main(int argc, char *argv[]) { int CodeLength, NumberParityBits; int i, codename, parityCheckCount, mute, testframes; int data_bits_per_frame; struct LDPC ldpc; int iter, total_iters; int Tbits, Terrs, Tbits_raw, Terrs_raw, Tpackets, Tpacketerrs; int unused_data_bits = 84; if (argc < 2) { fprintf(stderr, "\n"); fprintf(stderr, "usage: %s --listcodes\n\n", argv[0]); fprintf(stderr, " List supported codes (more can be added via using Octave ldpc " "scripts)\n"); fprintf(stderr, "\n"); fprintf(stderr, "usage: %s InOneSymbolPerFloat OutOneBitPerByte [--sd] [--half] " "[--code CodeName] [--testframes]", argv[0]); fprintf(stderr, " [--unused numUnusedDataBits]\n\n"); fprintf(stderr, " InOneSymbolPerFloat Input file of float LLRs, use - for " "the \n"); fprintf(stderr, " file names to use stdin/stdout\n"); fprintf(stderr, " --code Use LDPC code CodeName\n"); fprintf(stderr, " --listcodes List available LDPC codes\n"); fprintf(stderr, " --sd Treat input file samples as BPSK Soft " "Decision\n"); fprintf(stderr, " demod outputs rather than LLRs\n"); fprintf(stderr, " --mute Only output frames with < 10%% parity " "check fails\n"); fprintf(stderr, " --testframes built in test frame modem, requires " "--testframes at encoder\n"); fprintf(stderr, " --unused number of unused data bits, which are " "set to 1's at enc and dec\n"); fprintf(stderr, "\n"); fprintf(stderr, "Example in testframe mode:\n\n"); fprintf(stderr, " $ ./ldpc_enc /dev/zero - --sd --code HRA_112_112 --testframes 10 " "|\n"); fprintf(stderr, " ./ldpc_dec - /dev/null --code HRA_112_112 --sd --testframes\n"); exit(0); } if ((codename = opt_exists(argv, argc, "--listcodes")) != 0) { ldpc_codes_list(); exit(0); } /* set up LDPC code */ int code_index = 0; if ((codename = opt_exists(argv, argc, "--code")) != 0) code_index = ldpc_codes_find(argv[codename + 1]); memcpy(&ldpc, &ldpc_codes[code_index], sizeof(struct LDPC)); fprintf(stderr, "Using: %s\n", ldpc.name); CodeLength = ldpc.CodeLength; /* length of entire codeword */ NumberParityBits = ldpc.NumberParityBits; data_bits_per_frame = ldpc.NumberRowsHcols; unsigned char ibits[data_bits_per_frame]; unsigned char pbits[NumberParityBits]; uint8_t out_char[CodeLength]; testframes = 0; total_iters = 0; Tbits = Terrs = Tbits_raw = Terrs_raw = Tpackets = Tpacketerrs = 0; FILE *fin, *fout; int sdinput, nread, offset = 0; /* File I/O mode ------------------------------------------------*/ if (strcmp(argv[1], "-") == 0) fin = stdin; else if ((fin = fopen(argv[1], "rb")) == NULL) { fprintf(stderr, "Error opening input SD file: %s: %s.\n", argv[1], strerror(errno)); exit(1); } if (strcmp(argv[2], "-") == 0) fout = stdout; else if ((fout = fopen(argv[2], "wb")) == NULL) { fprintf(stderr, "Error opening output bit file: %s: %s.\n", argv[2], strerror(errno)); exit(1); } sdinput = 0; mute = 0; testframes = 0; if (opt_exists(argv, argc, "--sd")) { sdinput = 1; } if (opt_exists(argv, argc, "--mute")) { mute = 1; } unused_data_bits = 0; int arg; if ((arg = opt_exists(argv, argc, "--unused"))) { unused_data_bits = atoi(argv[arg + 1]); } if (opt_exists(argv, argc, "--testframes")) { testframes = 1; uint16_t r[data_bits_per_frame]; ofdm_rand(r, data_bits_per_frame); for (i = 0; i < data_bits_per_frame - unused_data_bits; i++) { ibits[i] = r[i] > 16384; } for (i = data_bits_per_frame - unused_data_bits; i < data_bits_per_frame; i++) { ibits[i] = 1; } encode(&ldpc, ibits, pbits); } float *input_float = calloc(CodeLength, sizeof(float)); nread = CodeLength - unused_data_bits; fprintf(stderr, "CodeLength: %d offset: %d\n", CodeLength, offset); while (fread(input_float, sizeof(float), nread, fin) == nread) { if (testframes) { /* BPSK SD and bit LLRs get mapped roughly the same way so this just * happens to work for both */ char in_char; for (i = 0; i < data_bits_per_frame - unused_data_bits; i++) { in_char = input_float[i] < 0; if (in_char != ibits[i]) { Terrs_raw++; } Tbits_raw++; } for (i = 0; i < NumberParityBits; i++) { in_char = input_float[i + data_bits_per_frame - unused_data_bits] < 0; if (in_char != pbits[i]) { Terrs_raw++; } Tbits_raw++; } } if (sdinput) { /* map BPSK SDs to bit LLRs */ float llr[CodeLength - unused_data_bits]; sd_to_llr(llr, input_float, CodeLength - unused_data_bits); /* insert unused data LLRs */ float llr_tmp[CodeLength]; for (i = 0; i < data_bits_per_frame - unused_data_bits; i++) llr_tmp[i] = llr[i]; // rx data bits for (i = data_bits_per_frame - unused_data_bits; i < data_bits_per_frame; i++) llr_tmp[i] = -10.0; // known data bits high likelhood for (i = data_bits_per_frame; i < CodeLength; i++) llr_tmp[i] = llr[i - unused_data_bits]; // rx parity bits memcpy(input_float, llr_tmp, sizeof(float) * CodeLength); } iter = run_ldpc_decoder(&ldpc, out_char, input_float, &parityCheckCount); // fprintf(stderr, "iter: %d\n", iter); total_iters += iter; if (mute) { // Output data bits only if decoder converged, or was // within 10% of all parity checks converging (10% est // BER). Useful for real world operation as it can // resync and won't send crappy packets to the decoder float ber_est = (float)(ldpc.NumberParityBits - parityCheckCount) / ldpc.NumberParityBits; // fprintf(stderr, "iter: %4d parityCheckErrors: %4d ber: %3.2f\n", iter, // ldpc.NumberParityBits - parityCheckCount, ber_est); if (ber_est < 0.1) { fwrite(out_char, sizeof(char), ldpc.NumberRowsHcols, fout); } } fwrite(out_char, sizeof(char), data_bits_per_frame, fout); if (testframes) { int perr = 0; for (i = 0; i < data_bits_per_frame; i++) { if (out_char[i] != ibits[i]) { Terrs++; perr = 1; } Tbits++; } Tpackets++; if (perr) { Tpacketerrs++; fprintf(stderr, "x"); } else fprintf(stderr, "."); } // fprintf(stderr, "Terrs_raw: %d Tbits_raw: %d Terr: %d Tbits: %d\n", // Terrs_raw, Tbits_raw, Terrs, Tbits); } free(input_float); if (fin != NULL) fclose(fin); if (fout != NULL) fclose(fout); fprintf(stderr, "total iters %d\n", total_iters); if (testframes) { fprintf(stderr, "Raw Tbits: %6d Terr: %6d BER: %4.3f\n", Tbits_raw, Terrs_raw, (float)Terrs_raw / (Tbits_raw + 1E-12)); float coded_ber = (float)Terrs / (Tbits + 1E-12); fprintf(stderr, "Coded Tbits: %6d Terr: %6d BER: %4.3f\n", Tbits, Terrs, coded_ber); fprintf(stderr, " Tpkts: %6d Tper: %6d PER: %4.3f\n", Tpackets, Tpacketerrs, Tpacketerrs / (Tpackets + 1E-12)); /* set return code for Ctest */ if (Tpackets && (coded_ber < 0.01)) return 0; else return 1; } return 0; } codec2-1.2.0/src/ldpc_dec_test.c000066400000000000000000000277161445607075400164310ustar00rootroot00000000000000/* FILE...: ldpc_dec.c AUTHOR.: Matthew C. Valenti, Rohit Iyer Seshadri, David Rowe CREATED: Sep 2016 Command line C LDPC decoder derived from MpDecode.c in the CML library. Allows us to run the same decoder in Octave and C. The code is defined by the parameters and array stored in the include file below, which can be machine generated from the Octave function ldpc_fsk_lib.m:ldpc_decode() The include file also contains test input/output vectors for the LDPC decoder for testing this program. Build: $ gcc -O2 -o ldpc_dec ldpc_dec.c mpdecode_core.c -Wall -lm -g Note: -O2 option was required to get identical results to MpDecode, which is also compiled with -O2. Without it the number of bit errors between C and Octave was different, especially when the code did not converge and hit max_iters. */ #include #include #include #include #include #include #include "mpdecode_core_test.h" #include "ofdm_internal.h" /* Machine generated consts, H_rows, H_cols, test input/output data to change LDPC code regenerate this file. */ /* TODO: Better octave/C support for multuple codes */ #include "H2064_516_sparse_test.h" #include "HRA_112_112_test.h" int opt_exists(char *argv[], int argc, char opt[]) { int i; for (i = 0; i < argc; i++) { if (strcmp(argv[i], opt) == 0) { return i; } } return 0; } int main(int argc, char *argv[]) { int CodeLength, NumberParityBits; int i, r, num_ok, num_runs, codename, parityCheckCount, mute; int state, next_state, hframe, testframes; // int frame; int data_bits_per_frame; char *adetected_data; struct LDPC ldpc; float *ainput; int iter, total_iters; int Tbits, Terrs, Tbits_raw, Terrs_raw; if (argc < 2) { fprintf(stderr, "\n"); fprintf(stderr, "usage: %s --test [--code CodeName]\n\n", argv[0]); fprintf(stderr, " Run internal self test and print code parameters.\n"); fprintf(stderr, "\n"); fprintf(stderr, "usage: %s --listcodes\n\n", argv[0]); fprintf(stderr, " List supported codes (more can be added via using Octave ldpc " "scripts)\n"); fprintf(stderr, "\n"); fprintf(stderr, "usage: %s InOneSymbolPerDouble OutOneBitPerByte [--sd] [--half] " "[--code CodeName] [--testframes]\n\n", argv[0]); fprintf(stderr, " InOneSymbolPerDouble Input file of double LLRs, use - for " "the \n"); fprintf(stderr, " file names to use stdin/stdout\n"); fprintf(stderr, " --code Use LDPC code CodeName\n"); fprintf(stderr, " --listcodes List available LDPC codes\n"); fprintf(stderr, " --sd Treat input file samples as Soft " "Decision\n"); fprintf(stderr, " demod outputs rather than LLRs\n"); fprintf(stderr, " --half Load framesize/2 input samples for " "each decode\n"); fprintf(stderr, " attempt, only output decoded bits\n"); fprintf(stderr, " converges. Form of frame sync.\n"); fprintf(stderr, " --mute Only output frames with < 10%% parity " "check fails\n"); fprintf(stderr, " --testframes built in test frame modem, requires " "--testframes at encoder\n"); fprintf(stderr, "\n"); fprintf(stderr, "Example in testframe mode:\n\n"); fprintf(stderr, " $ ./ldpc_enc /dev/zero - --sd --code HRA_112_112 --testframes 10 " "|\n"); fprintf(stderr, " ./ldpc_dec - /dev/null --code HRA_112_112 --sd --testframes\n"); exit(0); } if ((codename = opt_exists(argv, argc, "--listcodes")) != 0) { fprintf(stderr, "\n"); fprintf(stderr, "H2064_516_sparse\n"); fprintf(stderr, "HRA_112_112\n"); fprintf(stderr, "\n"); exit(0); } /* default Wenet High Alitiude Balloon rate 0.8 code */ ldpc.max_iter = MAX_ITER; ldpc.dec_type = 0; ldpc.q_scale_factor = 1; ldpc.r_scale_factor = 1; ldpc.CodeLength = CODELENGTH; ldpc.NumberParityBits = NUMBERPARITYBITS; ldpc.NumberRowsHcols = NUMBERROWSHCOLS; ldpc.max_row_weight = MAX_ROW_WEIGHT; ldpc.max_col_weight = MAX_COL_WEIGHT; ldpc.H_rows = H_rows; ldpc.H_cols = H_cols; ainput = input; adetected_data = detected_data; if ((codename = opt_exists(argv, argc, "--code")) != 0) { /* short rate 1/2 code for FreeDV HF digital voice */ if (strcmp(argv[codename + 1], "HRA_112_112") == 0) { fprintf(stderr, "code: %s\n", argv[codename + 1]); ldpc.max_iter = HRA_112_112_MAX_ITER; ldpc.dec_type = 0; ldpc.q_scale_factor = 1; ldpc.r_scale_factor = 1; ldpc.CodeLength = HRA_112_112_CODELENGTH; ldpc.NumberParityBits = HRA_112_112_NUMBERPARITYBITS; ldpc.NumberRowsHcols = HRA_112_112_NUMBERROWSHCOLS; ldpc.max_row_weight = HRA_112_112_MAX_ROW_WEIGHT; ldpc.max_col_weight = HRA_112_112_MAX_COL_WEIGHT; ldpc.H_rows = HRA_112_112_H_rows; ldpc.H_cols = HRA_112_112_H_cols; ainput = HRA_112_112_input; adetected_data = HRA_112_112_detected_data; } } if ((i = opt_exists(argv, argc, "--max_iter")) > 0) { ldpc.max_iter = atoi(argv[i + 1]); fprintf(stderr, "max_iter: %d\n", ldpc.max_iter); } CodeLength = ldpc.CodeLength; /* length of entire codeword */ NumberParityBits = ldpc.NumberParityBits; data_bits_per_frame = ldpc.NumberRowsHcols; unsigned char ibits[data_bits_per_frame]; unsigned char pbits[NumberParityBits]; char out_char[CodeLength]; testframes = 0; total_iters = 0; Tbits = Terrs = Tbits_raw = Terrs_raw = 0; if (!strcmp(argv[1], "--test")) { /* test mode --------------------------------------------------------*/ fprintf(stderr, "Starting test using pre-compiled test data .....\n"); fprintf(stderr, "Codeword length: %d\n", CodeLength); fprintf(stderr, "Parity Bits....: %d\n", NumberParityBits); num_runs = 1; num_ok = 0; for (r = 0; r < num_runs; r++) { iter = run_ldpc_decoder(&ldpc, out_char, ainput, &parityCheckCount); // fprintf(stderr, "iter: %d\n", iter); total_iters += iter; int ok = 0; for (i = 0; i < CodeLength; i++) { if (out_char[i] == adetected_data[i]) ok++; } if (ok == CodeLength) num_ok++; } fprintf(stderr, "test runs......: %d\n", num_runs); fprintf(stderr, "test runs OK...: %d\n", num_ok); if (num_runs == num_ok) fprintf(stderr, "test runs OK...: PASS\n"); else fprintf(stderr, "test runs OK...: FAIL\n"); } else { FILE *fin, *fout; int sdinput, readhalfframe, nread, offset; /* File I/O mode ------------------------------------------------*/ if (strcmp(argv[1], "-") == 0) fin = stdin; else if ((fin = fopen(argv[1], "rb")) == NULL) { fprintf(stderr, "Error opening input SD file: %s: %s.\n", argv[1], strerror(errno)); exit(1); } if (strcmp(argv[2], "-") == 0) fout = stdout; else if ((fout = fopen(argv[2], "wb")) == NULL) { fprintf(stderr, "Error opening output bit file: %s: %s.\n", argv[2], strerror(errno)); exit(1); } sdinput = 0; readhalfframe = 0; mute = 0; state = 0; hframe = 0; if (opt_exists(argv, argc, "--sd")) { sdinput = 1; } if (opt_exists(argv, argc, "--half")) { readhalfframe = 1; } if (opt_exists(argv, argc, "--mute")) { mute = 1; } if (opt_exists(argv, argc, "--testframes")) { testframes = 1; uint16_t r[data_bits_per_frame]; ofdm_rand(r, data_bits_per_frame); for (i = 0; i < data_bits_per_frame; i++) { ibits[i] = r[i] > 16384; } encode(&ldpc, ibits, pbits); } double *input_double = calloc(CodeLength, sizeof(double)); float *input_float = calloc(CodeLength, sizeof(float)); nread = CodeLength; offset = 0; if (readhalfframe) { nread = CodeLength / 2; offset = CodeLength / 2; for (i = 0; i < offset; i++) { input_double[i] = 0.0; } } fprintf(stderr, "Codeword length: %d\n", CodeLength); fprintf(stderr, "Parity Bits....: %d\n", NumberParityBits); // frame = 0; while (fread(&input_double[offset], sizeof(double), nread, fin) == nread) { // fprintf(stderr, "Frame %d\n", frame); if (sdinput) { if (testframes) { char in_char; for (i = 0; i < data_bits_per_frame; i++) { in_char = input_double[i] < 0; if (in_char != ibits[i]) { Terrs_raw++; } Tbits_raw++; } for (i = 0; i < NumberParityBits; i++) { in_char = input_double[i + data_bits_per_frame] < 0; if (in_char != pbits[i]) { Terrs_raw++; } Tbits_raw++; } } sd_to_llr(input_float, input_double, CodeLength); } iter = run_ldpc_decoder(&ldpc, out_char, input_float, &parityCheckCount); // fprintf(stderr, "iter: %d\n", iter); total_iters += iter; if (mute) { // Output data bits if decoder converged, or was // within 10% of all parity checks converging (10% est // BER). useful for real world operation as it can // resync and won't send crappy packets to the decoder float ber_est = (float)(ldpc.NumberParityBits - parityCheckCount) / ldpc.NumberParityBits; // fprintf(stderr, "iter: %4d parityCheckErrors: %4d ber: %3.2f\n", // iter, ldpc.NumberParityBits - parityCheckCount, ber_est); if (ber_est < 0.1) { fwrite(out_char, sizeof(char), ldpc.NumberRowsHcols, fout); } } else { if (readhalfframe) { // Establish which half hframe we want to sync on, // used for testing with cohpsk_put_bits, as it // maintains sync with test bits state machine. next_state = state; switch (state) { case 0: if (iter < ldpc.max_iter) { /* OK we've found which hframe to sync on */ next_state = 1; hframe = 0; } break; case 1: hframe++; if ((hframe % 2) == 0) { /* write decoded packets every second input hframe */ fwrite(out_char, sizeof(char), ldpc.NumberRowsHcols, fout); } break; } state = next_state; // fprintf(stderr, "state: %d iter: %d\n", state, iter); } for (i = 0; i < offset; i++) { input_double[i] = input_double[i + offset]; } } fwrite(out_char, sizeof(char), data_bits_per_frame, fout); if (testframes) { for (i = 0; i < data_bits_per_frame; i++) { // fprintf(stderr, "%d %d\n", out_char[i], ibits[i]); if (out_char[i] != ibits[i]) { Terrs++; } Tbits++; } } // frame ++; } free(input_double); if (fin != NULL) fclose(fin); if (fout != NULL) fclose(fout); } fprintf(stderr, "total iters %d\n", total_iters); if (testframes) { fprintf(stderr, "Raw Tbits..: %d Terr: %d BER: %4.3f\n", Tbits_raw, Terrs_raw, (float)Terrs_raw / (Tbits_raw + 1E-12)); fprintf(stderr, "Coded Tbits: %d Terr: %d BER: %4.3f\n", Tbits, Terrs, (float)Terrs / (Tbits + 1E-12)); } // ldpc_free_mem(&ldpc); return 0; } codec2-1.2.0/src/ldpc_enc.c000066400000000000000000000077211445607075400153760ustar00rootroot00000000000000/* FILE...: ldpc_enc.c AUTHOR.: Bill Cowley, David Rowe CREATED: Sep 2016 RA LDPC encoder program. Using the elegant back substitution of RA LDPC codes. */ #include #include #include #include #include #include "ldpc_codes.h" #include "mpdecode_core.h" #include "ofdm_internal.h" int opt_exists(char *argv[], int argc, char opt[]) { int i; for (i = 0; i < argc; i++) { if (strcmp(argv[i], opt) == 0) { return i; } } return 0; } int main(int argc, char *argv[]) { FILE *fin, *fout; int arg, sd, i, frames, codename, testframes, Nframes, data_bits_per_frame, parity_bits_per_frame; struct LDPC ldpc; int unused_data_bits; if (argc < 2) { fprintf(stderr, "\n"); fprintf(stderr, "usage: %s InputOneBytePerBit OutputFile [--sd] [--code CodeName] " "[--testframes Nframes] [--unused numUnusedDataBits]\n", argv[0]); fprintf(stderr, "\n"); fprintf(stderr, "usage: %s --listcodes\n\n", argv[0]); fprintf(stderr, " List supported codes (more can be added via using Octave ldpc " "scripts)\n"); fprintf(stderr, "\n"); exit(0); } /* todo: put this in a function file to share with ldpc_dec.c */ if ((codename = opt_exists(argv, argc, "--listcodes")) != 0) { ldpc_codes_list(); exit(0); } /* set up LDPC code */ int code_index = 0; if ((codename = opt_exists(argv, argc, "--code")) != 0) code_index = ldpc_codes_find(argv[codename + 1]); memcpy(&ldpc, &ldpc_codes[code_index], sizeof(struct LDPC)); fprintf(stderr, "Using: %s\n", ldpc.name); data_bits_per_frame = ldpc.NumberRowsHcols; parity_bits_per_frame = ldpc.NumberParityBits; unsigned char ibits[data_bits_per_frame]; unsigned char pbits[parity_bits_per_frame]; float sdout[data_bits_per_frame + parity_bits_per_frame]; if (strcmp(argv[1], "-") == 0) fin = stdin; else if ((fin = fopen(argv[1], "rb")) == NULL) { fprintf(stderr, "Error opening input bit file: %s: %s.\n", argv[1], strerror(errno)); exit(1); } if (strcmp(argv[2], "-") == 0) fout = stdout; else if ((fout = fopen(argv[2], "wb")) == NULL) { fprintf(stderr, "Error opening output bit file: %s: %s.\n", argv[2], strerror(errno)); exit(1); } sd = 0; if (opt_exists(argv, argc, "--sd")) { sd = 1; } unused_data_bits = 0; if ((arg = opt_exists(argv, argc, "--unused"))) { unused_data_bits = atoi(argv[arg + 1]); } testframes = Nframes = 0; if ((arg = (opt_exists(argv, argc, "--testframes")))) { testframes = 1; Nframes = atoi(argv[arg + 1]); fprintf(stderr, "Nframes: %d\n", Nframes); } frames = 0; int written = 0; while (fread(ibits, sizeof(char), data_bits_per_frame, fin) == data_bits_per_frame) { if (testframes) { uint16_t r[data_bits_per_frame]; ofdm_rand(r, data_bits_per_frame); for (i = 0; i < data_bits_per_frame - unused_data_bits; i++) { ibits[i] = r[i] > 16384; } for (i = data_bits_per_frame - unused_data_bits; i < data_bits_per_frame; i++) { ibits[i] = 1; } } encode(&ldpc, ibits, pbits); if (sd) { /* map to BPSK symbols */ for (i = 0; i < data_bits_per_frame - unused_data_bits; i++) sdout[i] = 1.0 - 2.0 * ibits[i]; for (i = 0; i < parity_bits_per_frame; i++) sdout[i + data_bits_per_frame - unused_data_bits] = 1.0 - 2.0 * pbits[i]; written += fwrite( sdout, sizeof(float), data_bits_per_frame - unused_data_bits + parity_bits_per_frame, fout); } else { written += fwrite(ibits, sizeof(char), data_bits_per_frame, fout); written += fwrite(pbits, sizeof(char), parity_bits_per_frame, fout); } frames++; if (testframes && (frames >= Nframes)) { goto finished; } } finished: fprintf(stderr, "written: %d\n", written); fclose(fin); fclose(fout); return 1; } codec2-1.2.0/src/ldpc_enc_test.c000066400000000000000000000105071445607075400164310ustar00rootroot00000000000000/* FILE...: ldpc_enc.c AUTHOR.: Bill Cowley, David Rowe CREATED: Sep 2016 RA LDPC encoder program. Using the elegant back substitution of RA LDPC codes. building: gcc ldpc_enc.c -o ldpc_enc -Wall -g */ #include #include #include #include #include #include "mpdecode_core_test.h" #include "ofdm_internal.h" /* generated by ldpc_fsk_lib.m:ldpc_decode() */ #include "H2064_516_sparse_test.h" #include "HRA_112_112_test.h" int opt_exists(char *argv[], int argc, char opt[]) { int i; for (i = 0; i < argc; i++) { if (strcmp(argv[i], opt) == 0) { return i; } } return 0; } int main(int argc, char *argv[]) { unsigned char ibits[NUMBERROWSHCOLS]; unsigned char pbits[NUMBERPARITYBITS]; FILE *fin, *fout; int arg, sd, i, frames, codename, testframes, Nframes, data_bits_per_frame; double sdout[NUMBERROWSHCOLS + NUMBERPARITYBITS]; struct LDPC ldpc; if (argc < 2) { fprintf(stderr, "\n"); fprintf(stderr, "usage: %s InputOneBytePerBit OutputFile [--sd] [--code CodeName] " "[--testframes Nframes]\n", argv[0]); fprintf(stderr, "\n"); fprintf(stderr, "usage: %s --listcodes\n\n", argv[0]); fprintf(stderr, " List supported codes (more can be added via using Octave ldpc " "scripts)\n"); fprintf(stderr, "\n"); exit(0); } /* todo: put this in a function file to share with ldpc_dec.c */ if ((codename = opt_exists(argv, argc, "--listcodes")) != 0) { fprintf(stderr, "\n"); fprintf(stderr, "H2064_516_sparse\n"); fprintf(stderr, "HRA_112_112\n"); fprintf(stderr, "\n"); exit(0); } /* set up LDPC code from include file constants */ if ((codename = opt_exists(argv, argc, "--code")) != 0) { /* short rate 1/2 code for FreeDV HF digital voice */ if (strcmp(argv[codename + 1], "HRA_112_112") == 0) { fprintf(stderr, "code: %s\n", argv[codename + 1]); ldpc.CodeLength = HRA_112_112_CODELENGTH; ldpc.NumberParityBits = HRA_112_112_NUMBERPARITYBITS; ldpc.NumberRowsHcols = HRA_112_112_NUMBERROWSHCOLS; ldpc.max_row_weight = HRA_112_112_MAX_ROW_WEIGHT; ldpc.max_col_weight = HRA_112_112_MAX_COL_WEIGHT; ldpc.H_rows = HRA_112_112_H_rows; ldpc.H_cols = HRA_112_112_H_cols; } } else { /* default Wenet High Alitiude Balloon rate 0.8 code */ ldpc.CodeLength = CODELENGTH; ldpc.NumberParityBits = NUMBERPARITYBITS; ldpc.NumberRowsHcols = NUMBERROWSHCOLS; ldpc.max_row_weight = MAX_ROW_WEIGHT; ldpc.max_col_weight = MAX_COL_WEIGHT; ldpc.H_rows = H_rows; ldpc.H_cols = H_cols; } data_bits_per_frame = ldpc.NumberRowsHcols; if (strcmp(argv[1], "-") == 0) fin = stdin; else if ((fin = fopen(argv[1], "rb")) == NULL) { fprintf(stderr, "Error opening input bit file: %s: %s.\n", argv[1], strerror(errno)); exit(1); } if (strcmp(argv[2], "-") == 0) fout = stdout; else if ((fout = fopen(argv[2], "wb")) == NULL) { fprintf(stderr, "Error opening output bit file: %s: %s.\n", argv[2], strerror(errno)); exit(1); } sd = 0; if (opt_exists(argv, argc, "--sd")) { sd = 1; } testframes = Nframes = 0; if ((arg = (opt_exists(argv, argc, "--testframes")))) { testframes = 1; Nframes = atoi(argv[arg + 1]); fprintf(stderr, "Nframes: %d\n", Nframes); } frames = 0; while (fread(ibits, sizeof(char), data_bits_per_frame, fin) == data_bits_per_frame) { if (testframes) { uint16_t r[data_bits_per_frame]; ofdm_rand(r, data_bits_per_frame); for (i = 0; i < data_bits_per_frame; i++) { ibits[i] = r[i] > 16384; } } encode(&ldpc, ibits, pbits); if (sd) { /* map to BPSK symbols */ for (i = 0; i < data_bits_per_frame; i++) sdout[i] = 1.0 - 2.0 * ibits[i]; for (i = 0; i < ldpc.NumberParityBits; i++) sdout[i + data_bits_per_frame] = 1.0 - 2.0 * pbits[i]; fwrite(sdout, sizeof(double), data_bits_per_frame + ldpc.NumberParityBits, fout); } else { fwrite(ibits, sizeof(char), data_bits_per_frame, fout); fwrite(pbits, sizeof(char), ldpc.NumberParityBits, fout); } frames++; if (testframes && (frames >= Nframes)) { goto finished; } } finished: fclose(fin); fclose(fout); return 1; } codec2-1.2.0/src/ldpc_noise.c000066400000000000000000000040061445607075400157370ustar00rootroot00000000000000/* FILE...: ldpc_enc.c AUTHOR.: Don Reid CREATED: Aug 2018 Add noise to LDPC soft decision samples for testing. Simulates use of LDPC code with PSK modem. */ #include #include #include #include #include #include int main(int argc, char *argv[]) { FILE *fin, *fout; float datain, dataout; if (argc < 3) { fprintf(stderr, "\n"); fprintf(stderr, "usage: %s InputFile OutputFile NodB\n", argv[0]); fprintf(stderr, "\n"); exit(1); } if (strcmp(argv[1], "-") == 0) fin = stdin; else if ((fin = fopen(argv[1], "rb")) == NULL) { fprintf(stderr, "Error opening input bit file: %s: %s.\n", argv[1], strerror(errno)); exit(1); } if (strcmp(argv[2], "-") == 0) fout = stdout; else if ((fout = fopen(argv[2], "wb")) == NULL) { fprintf(stderr, "Error opening output bit file: %s: %s.\n", argv[2], strerror(errno)); exit(1); } double NodB = atof(argv[3]); double No = pow(10.0, NodB / 10.0); double sum_xx = 0; double sum_x = 0.0; long n = 0; fprintf(stderr, "Uncoded PSK Eb/No simulation:\n"); fprintf(stderr, "No = % 4.2f dB (%4.2f linear)\n", NodB, No); fprintf(stderr, "Eb = % 4.2f dB (%4.2f linear)\n", 0.0, 1.0); fprintf(stderr, "Eb/No = %4.2f dB (%4.2f linear)\n", -NodB, pow(10, -NodB / 10.0)); while (fread(&datain, sizeof(float), 1, fin) == 1) { // Gaussian from uniform: double x = (double)rand() / RAND_MAX; double y = (double)rand() / RAND_MAX; double z = sqrt(-2 * log(x)) * cos(2 * M_PI * y); double noise = sqrt(No / 2) * z; dataout = datain + noise; fwrite(&dataout, sizeof(float), 1, fout); // keep running stats to calculate actual noise variance (power) sum_xx += noise * noise; sum_x += noise; n++; } fclose(fin); fclose(fout); double noise_var = (n * sum_xx - sum_x * sum_x) / (n * (n - 1)); fprintf(stderr, "measured double sided (real) noise power: %f\n", noise_var); return 0; } codec2-1.2.0/src/linreg.c000066400000000000000000000051201445607075400150760ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: linreg.c AUTHOR......: David Rowe DATE CREATED: April 2015 Linear regression C module based on: http://stackoverflow.com/questions/5083465/fast-efficient-least-squares-fit-algorithm-in-c Use: $ gcc linreg.c -o linreg -D__UNITTEST__ -Wall $ ./linreg Then compare yfit results with octave/tlinreg.m \*---------------------------------------------------------------------------*/ /* Copyright (C) 2015 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "linreg.h" #include #include #include #include "comp_prim.h" void linreg(COMP *m, COMP *b, float x[], COMP y[], int n) { float sumx = 0.0; /* sum of x */ float sumx2 = 0.0; /* sum of x^2 */ COMP sumxy = {0.0, 0.0}; /* sum of x * y */ COMP sumy = {0.0, 0.0}; /* sum of y */ COMP sumy2 = {0.0, 0.0}; /* sum of y**2 */ float denom; COMP zero; int i; for (i = 0; i < n; i++) { sumx += x[i]; sumx2 += x[i] * x[i]; sumxy = cadd(sumxy, fcmult(x[i], y[i])); sumy = cadd(sumy, y[i]); sumy2 = cadd(sumy2, cmult(y[i], y[i])); } denom = (n * sumx2 - sumx * sumx); if (denom == 0) { /* singular matrix. can't solve the problem */ zero.real = 0.0; zero.imag = 0.0; *m = zero; *b = zero; } else { *m = fcmult(1.0 / denom, cadd(fcmult(n, sumxy), cneg(fcmult(sumx, sumy)))); *b = fcmult(1.0 / denom, cadd(fcmult(sumx2, sumy), cneg(fcmult(sumx, sumxy)))); } } #ifdef __UNITTEST__ static float x[] = {1, 2, 7, 8}; static COMP y[] = {{-0.70702, 0.70708}, {-0.77314, 0.63442}, {-0.98083, 0.19511}, {-0.99508, 0.09799}}; int main(void) { float x1; COMP m, b, yfit; linreg(&m, &b, x, y, sizeof(x) / sizeof(float)); for (x1 = 1; x1 <= 8; x1++) { yfit = cadd(fcmult(x1, m), b); printf("%f %f\n", yfit.real, yfit.imag); } return 0; } #endif codec2-1.2.0/src/linreg.h000066400000000000000000000020331445607075400151030ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: linreg.h AUTHOR......: David Rowe DATE CREATED: April 2015 Linear regression C module based \*---------------------------------------------------------------------------*/ /* Copyright (C) 2015 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __LINREG__ #define __LINREG__ #include "comp.h" void linreg(COMP *m, COMP *b, float x[], COMP y[], int n); #endif codec2-1.2.0/src/lpc.c000066400000000000000000000212101445607075400143720ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: lpc.c AUTHOR......: David Rowe DATE CREATED: 30 Sep 1990 (!) Linear Prediction functions written in C. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2009-2012 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #define LPC_MAX_N 512 /* maximum no. of samples in frame */ #define PI 3.141592654 /* mathematical constant */ #define ALPHA 1.0 #define BETA 0.94 #include "lpc.h" #include #include #include "defines.h" /*---------------------------------------------------------------------------*\ pre_emp() Pre-emphasise (high pass filter with zero close to 0 Hz) a frame of speech samples. Helps reduce dynamic range of LPC spectrum, giving greater weight and hence a better match to low energy formants. Should be balanced by de-emphasis of the output speech. \*---------------------------------------------------------------------------*/ void pre_emp(float Sn_pre[], /* output frame of speech samples */ float Sn[], /* input frame of speech samples */ float *mem, /* Sn[-1]single sample memory */ int Nsam /* number of speech samples to use */ ) { int i; for (i = 0; i < Nsam; i++) { Sn_pre[i] = Sn[i] - ALPHA * mem[0]; mem[0] = Sn[i]; } } /*---------------------------------------------------------------------------*\ de_emp() De-emphasis filter (low pass filter with a pole close to 0 Hz). \*---------------------------------------------------------------------------*/ void de_emp(float Sn_de[], /* output frame of speech samples */ float Sn[], /* input frame of speech samples */ float *mem, /* Sn[-1]single sample memory */ int Nsam /* number of speech samples to use */ ) { int i; for (i = 0; i < Nsam; i++) { Sn_de[i] = Sn[i] + BETA * mem[0]; mem[0] = Sn_de[i]; } } /*---------------------------------------------------------------------------*\ hanning_window() Hanning windows a frame of speech samples. \*---------------------------------------------------------------------------*/ void hanning_window(float Sn[], /* input frame of speech samples */ float Wn[], /* output frame of windowed samples */ int Nsam /* number of samples */ ) { int i; /* loop variable */ for (i = 0; i < Nsam; i++) Wn[i] = Sn[i] * (0.5 - 0.5 * cosf(2 * PI * (float)i / (Nsam - 1))); } /*---------------------------------------------------------------------------*\ autocorrelate() Finds the first P autocorrelation values of an array of windowed speech samples Sn[]. \*---------------------------------------------------------------------------*/ void autocorrelate(float Sn[], /* frame of Nsam windowed speech samples */ float Rn[], /* array of P+1 autocorrelation coefficients */ int Nsam, /* number of windowed samples to use */ int order /* order of LPC analysis */ ) { int i, j; /* loop variables */ for (j = 0; j < order + 1; j++) { Rn[j] = 0.0; for (i = 0; i < Nsam - j; i++) Rn[j] += Sn[i] * Sn[i + j]; } } /*---------------------------------------------------------------------------*\ levinson_durbin() Given P+1 autocorrelation coefficients, finds P Linear Prediction Coeff. (LPCs) where P is the order of the LPC all-pole model. The Levinson-Durbin algorithm is used, and is described in: J. Makhoul "Linear prediction, a tutorial review" Proceedings of the IEEE Vol-63, No. 4, April 1975 \*---------------------------------------------------------------------------*/ void levinson_durbin(float R[], /* order+1 autocorrelation coeff */ float lpcs[], /* order+1 LPC's */ int order /* order of the LPC analysis */ ) { float a[order + 1][order + 1]; float sum, e, k; int i, j; /* loop variables */ e = R[0]; /* Equation 38a, Makhoul */ for (i = 1; i <= order; i++) { sum = 0.0; for (j = 1; j <= i - 1; j++) sum += a[i - 1][j] * R[i - j]; k = -1.0 * (R[i] + sum) / e; /* Equation 38b, Makhoul */ if (fabsf(k) > 1.0) k = 0.0; a[i][i] = k; for (j = 1; j <= i - 1; j++) a[i][j] = a[i - 1][j] + k * a[i - 1][i - j]; /* Equation 38c, Makhoul */ e *= (1 - k * k); /* Equation 38d, Makhoul */ } for (i = 1; i <= order; i++) lpcs[i] = a[order][i]; lpcs[0] = 1.0; } /*---------------------------------------------------------------------------*\ inverse_filter() Inverse Filter, A(z). Produces an array of residual samples from an array of input samples and linear prediction coefficients. The filter memory is stored in the first order samples of the input array. \*---------------------------------------------------------------------------*/ void inverse_filter(float Sn[], /* Nsam input samples */ float a[], /* LPCs for this frame of samples */ int Nsam, /* number of samples */ float res[], /* Nsam residual samples */ int order /* order of LPC */ ) { int i, j; /* loop variables */ for (i = 0; i < Nsam; i++) { res[i] = 0.0; for (j = 0; j <= order; j++) res[i] += Sn[i - j] * a[j]; } } /*---------------------------------------------------------------------------*\ synthesis_filter() C version of the Speech Synthesis Filter, 1/A(z). Given an array of residual or excitation samples, and the the LP filter coefficients, this function will produce an array of speech samples. This filter structure is IIR. The synthesis filter has memory as well, this is treated in the same way as the memory for the inverse filter (see inverse_filter() notes above). The difference is that the memory for the synthesis filter is stored in the output array, whereas the memory of the inverse filter is stored in the input array. Note: the calling function must update the filter memory. \*---------------------------------------------------------------------------*/ void synthesis_filter( float res[], /* Nsam input residual (excitation) samples */ float a[], /* LPCs for this frame of speech samples */ int Nsam, /* number of speech samples */ int order, /* LPC order */ float Sn_[] /* Nsam output synthesised speech samples */ ) { int i, j; /* loop variables */ /* Filter Nsam samples */ for (i = 0; i < Nsam; i++) { Sn_[i] = res[i] * a[0]; for (j = 1; j <= order; j++) Sn_[i] -= Sn_[i - j] * a[j]; } } /*---------------------------------------------------------------------------*\ find_aks() This function takes a frame of samples, and determines the linear prediction coefficients for that frame of samples. \*---------------------------------------------------------------------------*/ void find_aks(float Sn[], /* Nsam samples with order sample memory */ float a[], /* order+1 LPCs with first coeff 1.0 */ int Nsam, /* number of input speech samples */ int order, /* order of the LPC analysis */ float *E /* residual energy */ ) { float Wn[LPC_MAX_N]; /* windowed frame of Nsam speech samples */ float R[order + 1]; /* order+1 autocorrelation values of Sn[] */ int i; assert(Nsam < LPC_MAX_N); hanning_window(Sn, Wn, Nsam); autocorrelate(Wn, R, Nsam, order); levinson_durbin(R, a, order); *E = 0.0; for (i = 0; i <= order; i++) *E += a[i] * R[i]; if (*E < 0.0) *E = 1E-12; } /*---------------------------------------------------------------------------*\ weight() Weights a vector of LPCs. \*---------------------------------------------------------------------------*/ void weight(float ak[], /* vector of order+1 LPCs */ float gamma, /* weighting factor */ int order, /* num LPCs (excluding leading 1.0) */ float akw[] /* weighted vector of order+1 LPCs */ ) { int i; for (i = 1; i <= order; i++) akw[i] = ak[i] * powf(gamma, (float)i); } codec2-1.2.0/src/lpc.h000066400000000000000000000030731445607075400144060ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: lpc.h AUTHOR......: David Rowe DATE CREATED: 24/8/09 Linear Prediction functions written in C. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2009-2012 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __LPC__ #define __LPC__ #define LPC_MAX_ORDER 20 void pre_emp(float Sn_pre[], float Sn[], float *mem, int Nsam); void de_emp(float Sn_se[], float Sn[], float *mem, int Nsam); void hanning_window(float Sn[], float Wn[], int Nsam); void autocorrelate(float Sn[], float Rn[], int Nsam, int order); void levinson_durbin(float R[], float lpcs[], int order); void inverse_filter(float Sn[], float a[], int Nsam, float res[], int order); void synthesis_filter(float res[], float a[], int Nsam, int order, float Sn_[]); void find_aks(float Sn[], float a[], int Nsam, int order, float *E); void weight(float ak[], float gamma, int order, float akw[]); #endif codec2-1.2.0/src/lpcnet_freq.c000066400000000000000000000064611445607075400161310ustar00rootroot00000000000000/* lpcnet_freq.c freq.c from LPCnet project, I think this code originally came from Opus. */ /* Copyright (c) 2017-2018 Mozilla */ /* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - 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 FOUNDATION 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. */ #include "lpcnet_freq.h" #include #include #include #include #include "comp.h" #define SQUARE(x) ((x) * (x)) /* FFT bin index of centre of each band, assuming an 80 sample time domain window (5ms at 16 kHz), which results in 40 samples in the positive freq side of the FFT. TODO - refactor this to something more generic */ static float eband5ms[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 34, 40}; /* bandE[i] is the sum of energy in a triangular window centred on eband5ms[i], with adjustments for first and last band */ int lpcnet_compute_band_energy(float *bandE, float *bandCentrekHz, COMP *X, float Fs, int Nfft) { float sum[LPCNET_FREQ_MAX_BANDS] = {0}; int nb_bands; float scale; assert((Fs == 8000) || (Fs == 16000)); if (Fs == 8000) nb_bands = 14; else nb_bands = 18; /* map eband5ms[] bins to our FFT size and Fs */ scale = ((float)Nfft / 2) / eband5ms[nb_bands - 1]; /* sum energy from either side of band centre */ for (int i = 0; i < nb_bands - 1; i++) { int band_size; band_size = (eband5ms[i + 1] - eband5ms[i]) * scale; // fprintf(stderr, "band: %d band_size: %d offset: %d scale: %f\n", i, // band_size, (int)(eband5ms[i]*scale), scale); for (int j = 0; j < band_size; j++) { float tmp; float frac = (float)j / band_size; int bin = eband5ms[i] * scale; assert((bin + j) < Nfft / 2); tmp = SQUARE(X[bin + j].real); tmp += SQUARE(X[bin + j].imag); sum[i] += (1 - frac) * tmp; sum[i + 1] += frac * tmp; } } /* first and last band only summed from half of triangular window */ sum[0] *= 2; sum[nb_bands - 1] *= 2; for (int i = 0; i < nb_bands; i++) { bandCentrekHz[i] = eband5ms[i] * Fs / 40.0 / 1000.0; bandE[i] = 10.0 * log10(sum[i]); } return nb_bands; } codec2-1.2.0/src/lpcnet_freq.h000066400000000000000000000032141445607075400161270ustar00rootroot00000000000000/* lpcnet_freq.h freq.c from LPCnet project, I think this code originally came from Opus. */ /* Copyright (c) 2017-2018 Mozilla */ /* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - 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 FOUNDATION 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. */ #ifndef __LPCNET_FREQ__ #define __LPCNET_FREQ__ #define LPCNET_FREQ_MAX_BANDS 18 #include "comp.h" int lpcnet_compute_band_energy(float *bandE, float *bandCentrekHz, COMP *Sw, float Fs, int Nfft); #endif codec2-1.2.0/src/lsp.c000066400000000000000000000220311445607075400144140ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: lsp.c AUTHOR......: David Rowe DATE CREATED: 24/2/93 This file contains functions for LPC to LSP conversion and LSP to LPC conversion. Note that the LSP coefficients are not in radians format but in the x domain of the unit circle. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2009 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "lsp.h" #include #include #include #include "defines.h" /*---------------------------------------------------------------------------*\ Introduction to Line Spectrum Pairs (LSPs) ------------------------------------------ LSPs are used to encode the LPC filter coefficients {ak} for transmission over the channel. LSPs have several properties (like less sensitivity to quantisation noise) that make them superior to direct quantisation of {ak}. A(z) is a polynomial of order lpcrdr with {ak} as the coefficients. A(z) is transformed to P(z) and Q(z) (using a substitution and some algebra), to obtain something like: A(z) = 0.5[P(z)(z+z^-1) + Q(z)(z-z^-1)] (1) As you can imagine A(z) has complex zeros all over the z-plane. P(z) and Q(z) have the very neat property of only having zeros _on_ the unit circle. So to find them we take a test point z=exp(jw) and evaluate P (exp(jw)) and Q(exp(jw)) using a grid of points between 0 and pi. The zeros (roots) of P(z) also happen to alternate, which is why we swap coefficients as we find roots. So the process of finding the LSP frequencies is basically finding the roots of 5th order polynomials. The root so P(z) and Q(z) occur in symmetrical pairs at +/-w, hence the name Line Spectrum Pairs (LSPs). To convert back to ak we just evaluate (1), "clocking" an impulse thru it lpcrdr times gives us the impulse response of A(z) which is {ak}. \*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*\ FUNCTION....: cheb_poly_eva() AUTHOR......: David Rowe DATE CREATED: 24/2/93 This function evaluates a series of chebyshev polynomials FIXME: performing memory allocation at run time is very inefficient, replace with stack variables of MAX_P size. \*---------------------------------------------------------------------------*/ static float cheb_poly_eva(float *coef, float x, int order) /* float coef[] coefficients of the polynomial to be evaluated */ /* float x the point where polynomial is to be evaluated */ /* int order order of the polynomial */ { int i; float *t, *u, *v, sum; float T[(order / 2) + 1]; /* Initialise pointers */ t = T; /* T[i-2] */ *t++ = 1.0; u = t--; /* T[i-1] */ *u++ = x; v = u--; /* T[i] */ /* Evaluate chebyshev series formulation using iterative approach */ for (i = 2; i <= order / 2; i++) *v++ = (2 * x) * (*u++) - *t++; /* T[i] = 2*x*T[i-1] - T[i-2] */ sum = 0.0; /* initialise sum to zero */ t = T; /* reset pointer */ /* Evaluate polynomial and return value also free memory space */ for (i = 0; i <= order / 2; i++) sum += coef[(order / 2) - i] * *t++; return sum; } /*---------------------------------------------------------------------------*\ FUNCTION....: lpc_to_lsp() AUTHOR......: David Rowe DATE CREATED: 24/2/93 This function converts LPC coefficients to LSP coefficients. \*---------------------------------------------------------------------------*/ int lpc_to_lsp(float *a, int order, float *freq, int nb, float delta) /* float *a lpc coefficients */ /* int order order of LPC coefficients (10) */ /* float *freq LSP frequencies in radians */ /* int nb number of sub-intervals (4) */ /* float delta grid spacing interval (0.02) */ { float psuml, psumr, psumm, temp_xr, xl, xr, xm = 0; float temp_psumr; int i, j, m, flag, k; float *px; /* ptrs of respective P'(z) & Q'(z) */ float *qx; float *p; float *q; float *pt; /* ptr used for cheb_poly_eval() whether P' or Q' */ int roots = 0; /* number of roots found */ float Q[order + 1]; float P[order + 1]; flag = 1; m = order / 2; /* order of P'(z) & Q'(z) polynimials */ /* Allocate memory space for polynomials */ /* determine P'(z)'s and Q'(z)'s coefficients where P'(z) = P(z)/(1 + z^(-1)) and Q'(z) = Q(z)/(1-z^(-1)) */ px = P; /* initilaise ptrs */ qx = Q; p = px; q = qx; *px++ = 1.0; *qx++ = 1.0; for (i = 1; i <= m; i++) { *px++ = a[i] + a[order + 1 - i] - *p++; *qx++ = a[i] - a[order + 1 - i] + *q++; } px = P; qx = Q; for (i = 0; i < m; i++) { *px = 2 * *px; *qx = 2 * *qx; px++; qx++; } px = P; /* re-initialise ptrs */ qx = Q; /* Search for a zero in P'(z) polynomial first and then alternate to Q'(z). Keep alternating between the two polynomials as each zero is found */ xr = 0; /* initialise xr to zero */ xl = 1.0; /* start at point xl = 1 */ for (j = 0; j < order; j++) { if (j % 2) /* determines whether P' or Q' is eval. */ pt = qx; else pt = px; psuml = cheb_poly_eva(pt, xl, order); /* evals poly. at xl */ flag = 1; while (flag && (xr >= -1.0)) { xr = xl - delta; /* interval spacing */ psumr = cheb_poly_eva(pt, xr, order); /* poly(xl-delta_x) */ temp_psumr = psumr; temp_xr = xr; /* if no sign change increment xr and re-evaluate poly(xr). Repeat til sign change. if a sign change has occurred the interval is bisected and then checked again for a sign change which determines in which interval the zero lies in. If there is no sign change between poly(xm) and poly(xl) set interval between xm and xr else set interval between xl and xr and repeat till root is located within the specified limits */ if (((psumr * psuml) < 0.0) || (psumr == 0.0)) { roots++; psumm = psuml; for (k = 0; k <= nb; k++) { xm = (xl + xr) / 2; /* bisect the interval */ psumm = cheb_poly_eva(pt, xm, order); if (psumm * psuml > 0.) { psuml = psumm; xl = xm; } else { psumr = psumm; xr = xm; } } /* once zero is found, reset initial interval to xr */ freq[j] = (xm); xl = xm; flag = 0; /* reset flag for next search */ } else { psuml = temp_psumr; xl = temp_xr; } } } /* convert from x domain to radians */ for (i = 0; i < order; i++) { freq[i] = acosf(freq[i]); } return (roots); } /*---------------------------------------------------------------------------*\ FUNCTION....: lsp_to_lpc() AUTHOR......: David Rowe DATE CREATED: 24/2/93 This function converts LSP coefficients to LPC coefficients. In the Speex code we worked out a way to simplify this significantly. \*---------------------------------------------------------------------------*/ void lsp_to_lpc(float *lsp, float *ak, int order) /* float *freq array of LSP frequencies in radians */ /* float *ak array of LPC coefficients */ /* int order order of LPC coefficients */ { int i, j; float xout1, xout2, xin1, xin2; float *pw, *n1, *n2, *n3, *n4 = 0; float freq[order]; float Wp[(order * 4) + 2]; /* convert from radians to the x=cos(w) domain */ for (i = 0; i < order; i++) freq[i] = cosf(lsp[i]); pw = Wp; /* initialise contents of array */ for (i = 0; i <= 4 * (order / 2) + 1; i++) { /* set contents of buffer to 0 */ *pw++ = 0.0; } /* Set pointers up */ pw = Wp; xin1 = 1.0; xin2 = 1.0; /* reconstruct P(z) and Q(z) by cascading second order polynomials in form 1 - 2xz(-1) +z(-2), where x is the LSP coefficient */ for (j = 0; j <= order; j++) { for (i = 0; i < (order / 2); i++) { n1 = pw + (i * 4); n2 = n1 + 1; n3 = n2 + 1; n4 = n3 + 1; xout1 = xin1 - 2 * (freq[2 * i]) * *n1 + *n2; xout2 = xin2 - 2 * (freq[2 * i + 1]) * *n3 + *n4; *n2 = *n1; *n4 = *n3; *n1 = xin1; *n3 = xin2; xin1 = xout1; xin2 = xout2; } xout1 = xin1 + *(n4 + 1); xout2 = xin2 - *(n4 + 2); ak[j] = (xout1 + xout2) * 0.5; *(n4 + 1) = xin1; *(n4 + 2) = xin2; xin1 = 0.0; xin2 = 0.0; } } codec2-1.2.0/src/lsp.h000066400000000000000000000023251445607075400144250ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: lsp.c AUTHOR......: David Rowe DATE CREATED: 24/2/93 This file contains functions for LPC to LSP conversion and LSP to LPC conversion. Note that the LSP coefficients are not in radians format but in the x domain of the unit circle. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2009 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __LSP__ #define __LSP__ int lpc_to_lsp(float *a, int lpcrdr, float *freq, int nb, float delta); void lsp_to_lpc(float *freq, float *ak, int lpcrdr); #endif codec2-1.2.0/src/machdep.h000066400000000000000000000034721445607075400152340ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: machdep.h AUTHOR......: David Rowe DATE CREATED: May 2 2013 Machine dependent functions, e.g. profiling that requires access to a clock counter register. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2013 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __MACHDEP__ #define __MACHDEP__ #ifdef PROFILE #define PROFILE_VAR(...) unsigned int __VA_ARGS__ #define PROFILE_SAMPLE(timestamp) timestamp = machdep_profile_sample() #define PROFILE_SAMPLE_AND_LOG(timestamp, prev_timestamp, label) \ timestamp = machdep_profile_sample_and_log(prev_timestamp, label) #define PROFILE_SAMPLE_AND_LOG2(prev_timestamp, label) \ machdep_profile_sample_and_log(prev_timestamp, label) #else #define PROFILE_VAR(...) #define PROFILE_SAMPLE(timestamp) #define PROFILE_SAMPLE_AND_LOG(timestamp, prev_timestamp, label) #define PROFILE_SAMPLE_AND_LOG2(prev_timestamp, label) #endif void machdep_profile_init(void); void machdep_profile_reset(void); unsigned int machdep_profile_sample(void); unsigned int machdep_profile_sample_and_log(unsigned int start, char s[]); void machdep_profile_print_logged_samples(void); #endif codec2-1.2.0/src/mbest.c000066400000000000000000000122121445607075400147300ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: mbest.c AUTHOR......: David Rowe DATE CREATED: Jan 2017 Multistage vector quantiser search algorithm that keeps multiple candidates from each stage. \*---------------------------------------------------------------------------*/ /* Copyright David Rowe 2017 All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "mbest.h" #include #include #include #include #include struct MBEST *mbest_create(int entries) { int i, j; struct MBEST *mbest; assert(entries > 0); mbest = (struct MBEST *)malloc(sizeof(struct MBEST)); assert(mbest != NULL); mbest->entries = entries; mbest->list = (struct MBEST_LIST *)malloc(entries * sizeof(struct MBEST_LIST)); assert(mbest->list != NULL); for (i = 0; i < mbest->entries; i++) { for (j = 0; j < MBEST_STAGES; j++) mbest->list[i].index[j] = 0; mbest->list[i].error = 1E32; } return mbest; } void mbest_destroy(struct MBEST *mbest) { assert(mbest != NULL); free(mbest->list); free(mbest); } /* apply weighting to VQ for efficient VQ search */ void mbest_precompute_weight(float cb[], float w[], int k, int m) { for (int j = 0; j < m; j++) { for (int i = 0; i < k; i++) cb[k * j + i] *= w[i]; } } /*---------------------------------------------------------------------------*\ mbest_insert Insert the results of a vector to codebook entry comparison. The list is ordered in order of error, so those entries with the smallest error will be first on the list. \*---------------------------------------------------------------------------*/ void mbest_insert(struct MBEST *mbest, int index[], float error) { int i, found; struct MBEST_LIST *list = mbest->list; int entries = mbest->entries; found = 0; for (i = 0; i < entries && !found; i++) if (error < list[i].error) { found = 1; memmove(&list[i + 1], &list[i], sizeof(struct MBEST_LIST) * (entries - i - 1)); memcpy(&list[i].index[0], &index[0], sizeof(int) * MBEST_STAGES); list[i].error = error; } } void mbest_print(char title[], struct MBEST *mbest) { int i, j; fprintf(stderr, "%s\n", title); for (i = 0; i < mbest->entries; i++) { for (j = 0; j < MBEST_STAGES; j++) fprintf(stderr, " %4d ", mbest->list[i].index[j]); fprintf(stderr, " %f\n", (double)mbest->list[i].error); } } /*---------------------------------------------------------------------------*\ mbest_search Searches vec[] to a codebbook of vectors, and maintains a list of the mbest closest matches. \*---------------------------------------------------------------------------*/ void mbest_search(const float *cb, /* VQ codebook to search */ float vec[], /* target vector */ int k, /* dimension of vector */ int m, /* number on entries in codebook */ struct MBEST *mbest, /* list of closest matches */ int index[] /* indexes that lead us here */ ) { int j; /* note weighting can be applied externally by modifying cb[] and vec: float e = 0.0; for(i=0; ilist[mbest->entries - 1].error) mbest_insert(mbest, index, e); } } /*---------------------------------------------------------------------------*\ mbest_search450 Searches vec[] to a codebbook of vectors, and maintains a list of the mbest closest matches. Only searches the first NewAmp2_K Vectors \*---------------------------------------------------------------------------*/ void mbest_search450(const float *cb, float vec[], float w[], int k, int shorterK, int m, struct MBEST *mbest, int index[]) { float e; int i, j; float diff; for (j = 0; j < m; j++) { e = 0.0; for (i = 0; i < k; i++) { // Only search first NEWAMP2_K Vectors if (i < shorterK) { diff = cb[j * k + i] - vec[i]; e += diff * w[i] * diff * w[i]; } } index[0] = j; mbest_insert(mbest, index, e); } } codec2-1.2.0/src/mbest.h000066400000000000000000000034111445607075400147360ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: mbest.h AUTHOR......: David Rowe DATE CREATED: Jan 2017 Multistage vector quantiser search algorithm that keeps multiple candidates from each stage. \*---------------------------------------------------------------------------*/ /* Copyright David Rowe 2017 All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __MBEST__ #define __MBEST__ #define MBEST_STAGES 4 struct MBEST_LIST { int index[MBEST_STAGES]; /* index of each stage that lead us to this error */ float error; }; struct MBEST { int entries; /* number of entries in mbest list */ struct MBEST_LIST *list; }; struct MBEST *mbest_create(int entries); void mbest_destroy(struct MBEST *mbest); void mbest_precompute_weight(float cb[], float w[], int k, int m); void mbest_insert(struct MBEST *mbest, int index[], float error); void mbest_search(const float *cb, float vec[], int k, int m, struct MBEST *mbest, int index[]); void mbest_search450(const float *cb, float vec[], float w[], int k, int shorterK, int m, struct MBEST *mbest, int index[]); void mbest_print(char title[], struct MBEST *mbest); #endif codec2-1.2.0/src/modem_probe.c000066400000000000000000000127301445607075400161130ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: modem_probe.c AUTHOR......: Brady O'Brien DATE CREATED: 9 January 2016 Library to easily extract debug traces from modems during development and verification \*---------------------------------------------------------------------------*/ /* Copyright (C) 2016 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include "comp.h" #include "octave.h" #define TRACE_I 1 #define TRACE_F 2 #define TRACE_C 3 typedef struct probe_trace_info_s probe_trace_info; typedef struct datlink_s datlink; struct datlink_s { void *data; size_t len; datlink *next; }; struct probe_trace_info_s { int type; char name[255]; datlink *data; datlink *last; probe_trace_info *next; }; static char *run = NULL; static char *mod = NULL; static probe_trace_info *first_trace = NULL; /* Init the probing library */ void modem_probe_init_int(char *modname, char *runname) { mod = malloc((strlen(modname) + 1) * sizeof(char)); run = malloc((strlen(runname) + 1) * sizeof(char)); strcpy(run, runname); strcpy(mod, modname); } /* * Gather the data stored in the linked list into a single blob, * freeing links and buffers as it goes */ void *gather_data(datlink *d, size_t *len) { size_t size = 0; datlink *cur = d; datlink *next; while (cur != NULL) { size += d->len; cur = cur->next; } cur = d; size_t i = 0; void *newbuf = malloc(size); while (cur != NULL) { memcpy(newbuf + i, cur->data, cur->len); i += cur->len; free(cur->data); next = cur->next; free(cur); cur = next; } *len = size; return newbuf; } /* Dump all of the traces into a nice octave-able dump file */ void modem_probe_close_int() { if (run == NULL) return; probe_trace_info *cur, *next; cur = first_trace; FILE *dumpfile = fopen(run, "w"); void *dbuf; size_t len; while (cur != NULL) { dbuf = gather_data(cur->data, &len); switch (cur->type) { case TRACE_I: octave_save_int(dumpfile, cur->name, (int32_t *)dbuf, 1, len / sizeof(int32_t)); break; case TRACE_F: octave_save_float(dumpfile, cur->name, (float *)dbuf, 1, len / sizeof(float), 10); break; case TRACE_C: octave_save_complex(dumpfile, cur->name, (COMP *)dbuf, 1, len / sizeof(COMP), 10); break; } next = cur->next; free(cur); free(dbuf); cur = next; } fclose(dumpfile); free(run); free(mod); } /* Look up or create a trace by name */ probe_trace_info *modem_probe_get_trace(char *tracename) { probe_trace_info *cur, *npti; /* Make sure probe session is open */ if (run == NULL) return NULL; cur = first_trace; /* Walk through list, find trace with matching name */ while (cur != NULL) { /* We got one! */ if (strcmp(cur->name, tracename) == 0) { return cur; } cur = cur->next; } /* None found, open a new trace */ npti = (probe_trace_info *)malloc(sizeof(probe_trace_info)); npti->next = first_trace; npti->data = NULL; npti->last = NULL; strcpy(npti->name, tracename); first_trace = npti; return npti; } void modem_probe_samp_i_int(char *tracename, int32_t samp[], size_t cnt) { probe_trace_info *pti; datlink *ndat; pti = modem_probe_get_trace(tracename); if (pti == NULL) return; pti->type = TRACE_I; ndat = (datlink *)malloc(sizeof(datlink)); ndat->data = malloc(sizeof(int32_t) * cnt); ndat->len = cnt * sizeof(int32_t); ndat->next = NULL; memcpy(ndat->data, (void *)&(samp[0]), sizeof(int32_t) * cnt); if (pti->last != NULL) { pti->last->next = ndat; pti->last = ndat; } else { pti->data = ndat; pti->last = ndat; } } void modem_probe_samp_f_int(char *tracename, float samp[], size_t cnt) { probe_trace_info *pti; datlink *ndat; pti = modem_probe_get_trace(tracename); if (pti == NULL) return; pti->type = TRACE_F; ndat = (datlink *)malloc(sizeof(datlink)); ndat->data = malloc(sizeof(float) * cnt); ndat->len = cnt * sizeof(float); ndat->next = NULL; memcpy(ndat->data, (void *)&(samp[0]), sizeof(float) * cnt); if (pti->last != NULL) { pti->last->next = ndat; pti->last = ndat; } else { pti->data = ndat; pti->last = ndat; } } void modem_probe_samp_c_int(char *tracename, COMP samp[], size_t cnt) { probe_trace_info *pti; datlink *ndat; pti = modem_probe_get_trace(tracename); if (pti == NULL) return; pti->type = TRACE_C; ndat = (datlink *)malloc(sizeof(datlink)); ndat->data = malloc(sizeof(COMP) * cnt); ndat->len = cnt * sizeof(COMP); ndat->next = NULL; memcpy(ndat->data, (void *)&(samp[0]), sizeof(COMP) * cnt); if (pti->last != NULL) { pti->last->next = ndat; pti->last = ndat; } else { pti->data = ndat; pti->last = ndat; } } codec2-1.2.0/src/modem_probe.h000066400000000000000000000073221445607075400161210ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: modem_probe.h AUTHOR......: Brady O'Brien DATE CREATED: 9 January 2016 Library to easily extract debug traces from modems during development \*---------------------------------------------------------------------------*/ /* Copyright (C) 2016 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __MODEMPROBE_H #define __MODEMPROBE_H #include #include #include #include "comp.h" #ifdef MODEMPROBE_ENABLE /* Internal functions */ void modem_probe_init_int(char *modname, char *runname); void modem_probe_close_int(); void modem_probe_samp_i_int(char *tracename, int samp[], size_t cnt); void modem_probe_samp_f_int(char *tracename, float samp[], size_t cnt); void modem_probe_samp_c_int(char *tracename, COMP samp[], size_t cnt); /* * Init the probe library. * char *modname - Name of the modem under test * char *runname - Name/path of the file data is dumped to */ static inline void modem_probe_init(char *modname, char *runname) { modem_probe_init_int(modname, runname); } /* * Dump traces to a file and clean up */ static inline void modem_probe_close() { modem_probe_close_int(); } /* * Save some number of int samples to a named trace * char *tracename - name of trace being saved to * int samp[] - int samples * size_t cnt - how many samples to save */ static inline void modem_probe_samp_i(char *tracename, int samp[], size_t cnt) { modem_probe_samp_i_int(tracename, samp, cnt); } /* * Save some number of float samples to a named trace * char *tracename - name of trace being saved to * float samp[] - int samples * size_t cnt - how many samples to save */ static inline void modem_probe_samp_f(char *tracename, float samp[], size_t cnt) { modem_probe_samp_f_int(tracename, samp, cnt); } /* * Save some number of complex samples to a named trace * char *tracename - name of trace being saved to * COMP samp[] - int samples * size_t cnt - how many samples to save */ static inline void modem_probe_samp_c(char *tracename, COMP samp[], size_t cnt) { modem_probe_samp_c_int(tracename, samp, cnt); } /* * Save some number of complex samples to a named trace * char *tracename - name of trace being saved to * float complex samp[] - int samples * size_t cnt - how many samples to save */ static inline void modem_probe_samp_cft(char *tracename, complex float samp[], size_t cnt) { modem_probe_samp_c_int(tracename, (COMP *)samp, cnt); } #else static inline void modem_probe_init(char *modname, char *runname) { return; } static inline void modem_probe_close() { return; } static inline void modem_probe_samp_i(char *name, int samp[], size_t sampcnt) { return; } static inline void modem_probe_samp_f(char *name, float samp[], size_t cnt) { return; } static inline void modem_probe_samp_c(char *name, COMP samp[], size_t cnt) { return; } static inline void modem_probe_samp_cft(char *name, complex float samp[], size_t cnt) { return; } #endif #endif codec2-1.2.0/src/modem_stats.c000066400000000000000000000075351445607075400161510ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: modem_stats.c AUTHOR......: David Rowe DATE CREATED: June 2015 Common functions for returning demod stats from fdmdv and cohpsk modems. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2015 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "modem_stats.h" #include #include #include "codec2_fdmdv.h" #include "kiss_fft.h" void modem_stats_open(struct MODEM_STATS *f) { int i; /* zero out all the stats */ memset(f, 0, sizeof(struct MODEM_STATS)); /* init the FFT */ #ifndef __EMBEDDED__ for (i = 0; i < 2 * MODEM_STATS_NSPEC; i++) f->fft_buf[i] = 0.0; f->fft_cfg = (void *)kiss_fft_alloc(2 * MODEM_STATS_NSPEC, 0, NULL, NULL); assert(f->fft_cfg != NULL); #endif } void modem_stats_close(struct MODEM_STATS *f) { #ifndef __EMBEDDED__ KISS_FFT_FREE(f->fft_cfg); #endif } /*---------------------------------------------------------------------------*\ FUNCTION....: modem_stats_get_rx_spectrum() AUTHOR......: David Rowe DATE CREATED: 9 June 2012 Returns the MODEM_STATS_NSPEC point magnitude spectrum of the rx signal in dB. The spectral samples are scaled so that 0dB is the peak, a good range for plotting is 0 to -40dB. Note only the real part of the complex input signal is used at present. A complex variable is used for input for compatibility with the other rx signal processing. Successive calls can be used to build up a waterfall or spectrogram plot, by mapping the received levels to colours. The time-frequency resolution of the spectrum can be adjusted by varying MODEM_STATS_NSPEC. Note that a 2* MODEM_STATS_NSPEC size FFT is reqd to get MODEM_STATS_NSPEC output points. MODEM_STATS_NSPEC must be a power of 2. See octave/tget_spec.m for a demo real time spectral display using Octave. This demo averages the output over time to get a smoother display: av = 0.9*av + 0.1*mag_dB \*---------------------------------------------------------------------------*/ #ifndef __EMBEDDED__ void modem_stats_get_rx_spectrum(struct MODEM_STATS *f, float mag_spec_dB[], COMP rx_fdm[], int nin) { int i, j; COMP fft_in[2 * MODEM_STATS_NSPEC]; COMP fft_out[2 * MODEM_STATS_NSPEC]; float full_scale_dB; /* update buffer of input samples */ for (i = 0; i < 2 * MODEM_STATS_NSPEC - nin; i++) f->fft_buf[i] = f->fft_buf[i + nin]; for (j = 0; j < nin; j++, i++) f->fft_buf[i] = rx_fdm[j].real; assert(i == 2 * MODEM_STATS_NSPEC); /* window and FFT */ for (i = 0; i < 2 * MODEM_STATS_NSPEC; i++) { fft_in[i].real = f->fft_buf[i] * (0.5 - 0.5 * cosf((float)i * 2.0 * M_PI / (2 * MODEM_STATS_NSPEC))); fft_in[i].imag = 0.0; } kiss_fft((kiss_fft_cfg)f->fft_cfg, (kiss_fft_cpx *)fft_in, (kiss_fft_cpx *)fft_out); /* FFT scales up a signal of level 1 FDMDV_NSPEC */ full_scale_dB = 20 * log10(MODEM_STATS_NSPEC * FDMDV_SCALE); /* scale and convert to dB */ for (i = 0; i < MODEM_STATS_NSPEC; i++) { mag_spec_dB[i] = 10.0 * log10f(fft_out[i].real * fft_out[i].real + fft_out[i].imag * fft_out[i].imag + 1E-12); mag_spec_dB[i] -= full_scale_dB; } } #endif codec2-1.2.0/src/modem_stats.h000066400000000000000000000056371445607075400161570ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: modem_stats.h AUTHOR......: David Rowe DATE CREATED: June 2015 Common structure for returning demod stats from fdmdv and cohpsk modems. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2015 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __MODEM_STATS__ #define __MODEM_STATS__ #include "comp.h" #ifdef __cplusplus extern "C" { #endif #define MODEM_STATS_NC_MAX 50 #define MODEM_STATS_NR_MAX 320 #define MODEM_STATS_ET_MAX 8 #define MODEM_STATS_EYE_IND_MAX 160 #define MODEM_STATS_NSPEC 512 #define MODEM_STATS_MAX_F_HZ 4000 #define MODEM_STATS_MAX_F_EST 4 struct MODEM_STATS { int Nc; float snr_est; /* estimated SNR of rx signal in dB (3 kHz noise BW) */ #ifndef __EMBEDDED__ COMP rx_symbols[MODEM_STATS_NR_MAX][MODEM_STATS_NC_MAX + 1]; /* latest received symbols, for scatter plot */ #endif int nr; /* number of rows in rx_symbols */ int sync; /* demod sync state */ float foff; /* estimated freq offset in Hz */ float rx_timing; /* estimated optimum timing offset in samples */ float clock_offset; /* Estimated tx/rx sample clock offset in ppm */ float sync_metric; /* number between 0 and 1 indicating quality of sync */ int pre, post; /* preamble/postamble det counters for burst data */ int uw_fails; /* Failed to detect Unique word (burst data) */ /* FSK eye diagram traces */ /* Eye diagram plot -- first dim is trace number, second is the trace idx */ #ifndef __EMBEDDED__ float rx_eye[MODEM_STATS_ET_MAX][MODEM_STATS_EYE_IND_MAX]; int neyetr; /* How many eye traces are plotted */ int neyesamp; /* How many samples in the eye diagram */ /* optional for FSK modems - est tone freqs */ float f_est[MODEM_STATS_MAX_F_EST]; #endif /* Buf for FFT/waterfall */ #ifndef __EMBEDDED__ float fft_buf[2 * MODEM_STATS_NSPEC]; void *fft_cfg; #endif }; void modem_stats_open(struct MODEM_STATS *f); void modem_stats_close(struct MODEM_STATS *f); void modem_stats_get_rx_spectrum(struct MODEM_STATS *f, float mag_spec_dB[], COMP rx_fdm[], int nin); #ifdef __cplusplus } #endif #endif codec2-1.2.0/src/mpdecode_core.c000066400000000000000000000541671445607075400164250ustar00rootroot00000000000000/* FILE...: mpdecode_core.c AUTHOR.: Matthew C. Valenti, Rohit Iyer Seshadri, David Rowe CREATED: Sep 2016 C-callable core functions moved from MpDecode.c, so they can be used for Octave and C programs. */ #include "mpdecode_core.h" #include #include #include #include #include #ifndef USE_ORIGINAL_PHI0 #include "phi0.h" #endif #include "debug_alloc.h" #ifdef __EMBEDDED__ #include "machdep.h" #endif #define QPSK_CONSTELLATION_SIZE 4 #define QPSK_BITS_PER_SYMBOL 2 /* QPSK constellation for symbol likelihood calculations */ static COMP S_matrix[] = { {1.0f, 0.0f}, {0.0f, 1.0f}, {0.0f, -1.0f}, {-1.0f, 0.0f}}; // c_nodes will be an array of NumberParityBits of struct c_node // Each c_node contains an array of c_sub_node elements // This structure reduces the indexing calclations in SumProduct() struct c_sub_node { // Order is important here to keep total size small. uint16_t index; // Values from H_rows (except last 2 entries) uint16_t socket; // The socket number at the v_node float message; // modified during operation! }; struct c_node { int degree; // A count of elements in the following arrays struct c_sub_node *subs; }; // v_nodes will be an array of CodeLength of struct v_node struct v_sub_node { uint16_t index; // the index of a c_node it is connected to // Filled with values from H_cols (except last 2 entries) uint16_t socket; // socket number at the c_node float message; // Loaded with input data // modified during operation! uint8_t sign; // 1 if input is negative // modified during operation! }; struct v_node { int degree; // A count of ??? float initial_value; struct v_sub_node *subs; }; void encode(struct LDPC *ldpc, unsigned char ibits[], unsigned char pbits[]) { unsigned int p, i, tmp, par, prev = 0; int ind; uint16_t *H_rows = ldpc->H_rows; for (p = 0; p < ldpc->NumberParityBits; p++) { par = 0; for (i = 0; i < ldpc->max_row_weight; i++) { ind = H_rows[p + i * ldpc->NumberParityBits]; if (ind) par = par + ibits[ind - 1]; } tmp = par + prev; tmp &= 1; // only retain the lsb prev = tmp; pbits[p] = tmp; } } #ifdef USE_ORIGINAL_PHI0 /* Phi function */ static float phi0(float x) { float z; if (x > 10) return (0); else if (x < 9.08e-5) return (10); else if (x > 9) return (1.6881e-4); /* return( 1.4970e-004 ); */ else if (x > 8) return (4.5887e-4); /* return( 4.0694e-004 ); */ else if (x > 7) return (1.2473e-3); /* return( 1.1062e-003 ); */ else if (x > 6) return (3.3906e-3); /* return( 3.0069e-003 ); */ else if (x > 5) return (9.2168e-3); /* return( 8.1736e-003 ); */ else { z = (float)exp(x); return ((float)log((z + 1) / (z - 1))); } } #endif /* Values for linear approximation (DecoderType=5) */ #define AJIAN -0.24904163195436 #define TJIAN 2.50681740420944 /* The linear-log-MAP algorithm */ static float max_star0(float delta1, float delta2) { register float diff; diff = delta2 - delta1; if (diff > TJIAN) return (delta2); else if (diff < -TJIAN) return (delta1); else if (diff > 0) return (delta2 + AJIAN * (diff - TJIAN)); else return (delta1 - AJIAN * (diff + TJIAN)); } void init_c_v_nodes(struct c_node *c_nodes, int shift, int NumberParityBits, int max_row_weight, uint16_t *H_rows, int H1, int CodeLength, struct v_node *v_nodes, int NumberRowsHcols, uint16_t *H_cols, int max_col_weight, int dec_type, float *input) { int i, j, k, count, cnt, c_index, v_index; /* first determine the degree of each c-node */ if (shift == 0) { for (i = 0; i < NumberParityBits; i++) { count = 0; for (j = 0; j < max_row_weight; j++) { if (H_rows[i + j * NumberParityBits] > 0) { count++; } } c_nodes[i].degree = count; if (H1) { if (i == 0) { c_nodes[i].degree = count + 1; } else { c_nodes[i].degree = count + 2; } } } } else { cnt = 0; for (i = 0; i < (NumberParityBits / shift); i++) { for (k = 0; k < shift; k++) { count = 0; for (j = 0; j < max_row_weight; j++) { if (H_rows[cnt + j * NumberParityBits] > 0) { count++; } } c_nodes[cnt].degree = count; if ((i == 0) || (i == (NumberParityBits / shift) - 1)) { c_nodes[cnt].degree = count + 1; } else { c_nodes[cnt].degree = count + 2; } cnt++; } } } if (H1) { if (shift == 0) { for (i = 0; i < NumberParityBits; i++) { // Allocate sub nodes c_nodes[i].subs = CALLOC(c_nodes[i].degree, sizeof(struct c_sub_node)); assert(c_nodes[i].subs); // Populate sub nodes for (j = 0; j < c_nodes[i].degree - 2; j++) { c_nodes[i].subs[j].index = (H_rows[i + j * NumberParityBits] - 1); } j = c_nodes[i].degree - 2; if (i == 0) { c_nodes[i].subs[j].index = (H_rows[i + j * NumberParityBits] - 1); } else { c_nodes[i].subs[j].index = (CodeLength - NumberParityBits) + i - 1; } j = c_nodes[i].degree - 1; c_nodes[i].subs[j].index = (CodeLength - NumberParityBits) + i; } } if (shift > 0) { cnt = 0; for (i = 0; i < (NumberParityBits / shift); i++) { for (k = 0; k < shift; k++) { // Allocate sub nodes c_nodes[cnt].subs = CALLOC(c_nodes[cnt].degree, sizeof(struct c_sub_node)); assert(c_nodes[cnt].subs); // Populate sub nodes for (j = 0; j < c_nodes[cnt].degree - 2; j++) { c_nodes[cnt].subs[j].index = (H_rows[cnt + j * NumberParityBits] - 1); } j = c_nodes[cnt].degree - 2; if ((i == 0) || (i == (NumberParityBits / shift - 1))) { c_nodes[cnt].subs[j].index = (H_rows[cnt + j * NumberParityBits] - 1); } else { c_nodes[cnt].subs[j].index = (CodeLength - NumberParityBits) + k + shift * (i); } j = c_nodes[cnt].degree - 1; c_nodes[cnt].subs[j].index = (CodeLength - NumberParityBits) + k + shift * (i + 1); if (i == (NumberParityBits / shift - 1)) { c_nodes[cnt].subs[j].index = (CodeLength - NumberParityBits) + k + shift * (i); } cnt++; } } } } else { for (i = 0; i < NumberParityBits; i++) { // Allocate sub nodes c_nodes[i].subs = CALLOC(c_nodes[i].degree, sizeof(struct c_sub_node)); assert(c_nodes[i].subs); // Populate sub nodes for (j = 0; j < c_nodes[i].degree; j++) { c_nodes[i].subs[j].index = (H_rows[i + j * NumberParityBits] - 1); } } } /* determine degree of each v-node */ for (i = 0; i < (CodeLength - NumberParityBits + shift); i++) { count = 0; for (j = 0; j < max_col_weight; j++) { if (H_cols[i + j * NumberRowsHcols] > 0) { count++; } } v_nodes[i].degree = count; } for (i = CodeLength - NumberParityBits + shift; i < CodeLength; i++) { count = 0; if (H1) { if (i != CodeLength - 1) { v_nodes[i].degree = 2; } else { v_nodes[i].degree = 1; } } else { for (j = 0; j < max_col_weight; j++) { if (H_cols[i + j * NumberRowsHcols] > 0) { count++; } } v_nodes[i].degree = count; } } if (shift > 0) { v_nodes[CodeLength - 1].degree = v_nodes[CodeLength - 1].degree + 1; } /* set up v_nodes */ for (i = 0; i < CodeLength; i++) { // Allocate sub nodes v_nodes[i].subs = CALLOC(v_nodes[i].degree, sizeof(struct v_sub_node)); assert(v_nodes[i].subs); // Populate sub nodes /* index tells which c-nodes this v-node is connected to */ v_nodes[i].initial_value = input[i]; count = 0; for (j = 0; j < v_nodes[i].degree; j++) { if ((H1) && (i >= CodeLength - NumberParityBits + shift)) { v_nodes[i].subs[j].index = i - (CodeLength - NumberParityBits + shift) + count; if (shift == 0) { count = count + 1; } else { count = count + shift; } } else { v_nodes[i].subs[j].index = (H_cols[i + j * NumberRowsHcols] - 1); } /* search the connected c-node for the proper message value */ for (c_index = 0; c_index < c_nodes[v_nodes[i].subs[j].index].degree; c_index++) if (c_nodes[v_nodes[i].subs[j].index].subs[c_index].index == i) { v_nodes[i].subs[j].socket = c_index; break; } /* initialize v-node with received LLR */ if (dec_type == 1) v_nodes[i].subs[j].message = fabs(input[i]); else v_nodes[i].subs[j].message = phi0(fabs(input[i])); if (input[i] < 0) v_nodes[i].subs[j].sign = 1; } } /* now finish setting up the c_nodes */ for (i = 0; i < NumberParityBits; i++) { /* index tells which v-nodes this c-node is connected to */ for (j = 0; j < c_nodes[i].degree; j++) { /* search the connected v-node for the proper message value */ for (v_index = 0; v_index < v_nodes[c_nodes[i].subs[j].index].degree; v_index++) if (v_nodes[c_nodes[i].subs[j].index].subs[v_index].index == i) { c_nodes[i].subs[j].socket = v_index; break; } } } } /////////////////////////////////////// /* function for doing the MP decoding */ // Returns the iteration count int SumProduct(int *parityCheckCount, char DecodedBits[], struct c_node c_nodes[], struct v_node v_nodes[], int CodeLength, int NumberParityBits, int max_iter, float r_scale_factor, float q_scale_factor, int data[]) { int result; int bitErrors; int i, j, iter; float phi_sum; int sign; float temp_sum; float Qi; int ssum; result = max_iter; for (iter = 0; iter < max_iter; iter++) { for (i = 0; i < CodeLength; i++) DecodedBits[i] = 0; // Clear each pass! bitErrors = 0; /* update r */ ssum = 0; for (j = 0; j < NumberParityBits; j++) { sign = v_nodes[c_nodes[j].subs[0].index] .subs[c_nodes[j].subs[0].socket] .sign; phi_sum = v_nodes[c_nodes[j].subs[0].index] .subs[c_nodes[j].subs[0].socket] .message; for (i = 1; i < c_nodes[j].degree; i++) { // Compiler should optomize this but write the best we can to start // from. struct c_sub_node *cp = &c_nodes[j].subs[i]; struct v_sub_node *vp = &v_nodes[cp->index].subs[cp->socket]; phi_sum += vp->message; sign ^= vp->sign; } if (sign == 0) ssum++; for (i = 0; i < c_nodes[j].degree; i++) { struct c_sub_node *cp = &c_nodes[j].subs[i]; struct v_sub_node *vp = &v_nodes[cp->index].subs[cp->socket]; if (sign ^ vp->sign) { cp->message = -phi0(phi_sum - vp->message); // *r_scale_factor; } else cp->message = phi0(phi_sum - vp->message); // *r_scale_factor; } } /* update q */ for (i = 0; i < CodeLength; i++) { /* first compute the LLR */ Qi = v_nodes[i].initial_value; for (j = 0; j < v_nodes[i].degree; j++) { struct v_sub_node *vp = &v_nodes[i].subs[j]; Qi += c_nodes[vp->index].subs[vp->socket].message; } /* make hard decision */ if (Qi < 0) { DecodedBits[i] = 1; } /* now subtract to get the extrinsic information */ for (j = 0; j < v_nodes[i].degree; j++) { struct v_sub_node *vp = &v_nodes[i].subs[j]; temp_sum = Qi - c_nodes[vp->index].subs[vp->socket].message; vp->message = phi0(fabs(temp_sum)); // *q_scale_factor; if (temp_sum > 0) vp->sign = 0; else vp->sign = 1; } } /* count data bit errors, assuming that it is systematic */ for (i = 0; i < CodeLength - NumberParityBits; i++) if (DecodedBits[i] != data[i]) bitErrors++; /* Halt if zero errors */ if (bitErrors == 0) { result = iter + 1; break; } // count the number of PC satisfied and exit if all OK *parityCheckCount = ssum; if (ssum == NumberParityBits) { result = iter + 1; break; } } return (result); } /* Convenience function to call LDPC decoder from C programs */ int run_ldpc_decoder(struct LDPC *ldpc, uint8_t out_char[], float input[], int *parityCheckCount) { int max_iter, dec_type; float q_scale_factor, r_scale_factor; int max_row_weight, max_col_weight; int CodeLength, NumberParityBits, NumberRowsHcols, shift, H1; int i; struct c_node *c_nodes; struct v_node *v_nodes; /* default values */ max_iter = ldpc->max_iter; dec_type = ldpc->dec_type; q_scale_factor = ldpc->q_scale_factor; r_scale_factor = ldpc->r_scale_factor; CodeLength = ldpc->CodeLength; /* length of entire codeword */ NumberParityBits = ldpc->NumberParityBits; NumberRowsHcols = ldpc->NumberRowsHcols; char *DecodedBits = CALLOC(CodeLength, sizeof(char)); assert(DecodedBits); /* derive some parameters */ shift = (NumberParityBits + NumberRowsHcols) - CodeLength; if (NumberRowsHcols == CodeLength) { H1 = 0; shift = 0; } else { H1 = 1; } max_row_weight = ldpc->max_row_weight; max_col_weight = ldpc->max_col_weight; /* initialize c-node and v-node structures */ c_nodes = CALLOC(NumberParityBits, sizeof(struct c_node)); assert(c_nodes); v_nodes = CALLOC(CodeLength, sizeof(struct v_node)); assert(v_nodes); init_c_v_nodes(c_nodes, shift, NumberParityBits, max_row_weight, ldpc->H_rows, H1, CodeLength, v_nodes, NumberRowsHcols, ldpc->H_cols, max_col_weight, dec_type, input); int DataLength = CodeLength - NumberParityBits; int *data_int = CALLOC(DataLength, sizeof(int)); /* need to clear these on each call */ for (i = 0; i < CodeLength; i++) DecodedBits[i] = 0; /* Call function to do the actual decoding */ int iter = SumProduct(parityCheckCount, DecodedBits, c_nodes, v_nodes, CodeLength, NumberParityBits, max_iter, r_scale_factor, q_scale_factor, data_int); for (i = 0; i < CodeLength; i++) out_char[i] = DecodedBits[i]; /* Clean up memory */ FREE(DecodedBits); FREE(data_int); for (i = 0; i < NumberParityBits; i++) FREE(c_nodes[i].subs); FREE(c_nodes); for (i = 0; i < CodeLength; i++) FREE(v_nodes[i].subs); FREE(v_nodes); return iter; } void sd_to_llr(float llr[], float sd[], int n) { double sum, mean, sign, sumsq, estvar, estEsN0, x; int i; /* convert SD samples to LLRs -------------------------------*/ sum = 0.0; for (i = 0; i < n; i++) sum += fabs(sd[i]); mean = sum / n; /* find variance from +/-1 symbol position */ sum = sumsq = 0.0; for (i = 0; i < n; i++) { sign = (sd[i] > 0.0L) - (sd[i] < 0.0L); x = ((double)sd[i] / mean - sign); sum += x; sumsq += x * x; } estvar = (n * sumsq - sum * sum) / (n * (n - 1)); // fprintf(stderr, "mean: %f var: %f\n", mean, estvar); estEsN0 = 1.0 / (2.0L * estvar + 1E-3); for (i = 0; i < n; i++) llr[i] = 4.0L * estEsN0 * sd[i]; } /* Determine symbol likelihood from received QPSK symbols. Notes: 1) We assume fading[] is real, it is also possible to compute with complex fading, see CML library Demod2D.c source code. 2) Using floats instead of doubles, for stm32. Testing shows good BERs with floats. */ void Demod2D(float symbol_likelihood[], /* output, M*number_symbols */ COMP r[], /* received QPSK symbols, number_symbols */ COMP S_matrix[], /* constellation of size M */ float EsNo, float fading[], /* real fading values, number_symbols */ float mean_amp, int number_symbols) { int M = QPSK_CONSTELLATION_SIZE; int i, j; float tempsr, tempsi, Er, Ei; /* determine output */ for (i = 0; i < number_symbols; i++) { /* go through each received symbol */ for (j = 0; j < M; j++) { /* each postulated symbol */ tempsr = fading[i] * S_matrix[j].real / mean_amp; tempsi = fading[i] * S_matrix[j].imag / mean_amp; Er = r[i].real / mean_amp - tempsr; Ei = r[i].imag / mean_amp - tempsi; symbol_likelihood[i * M + j] = -EsNo * (Er * Er + Ei * Ei); // printf("symbol_likelihood[%d][%d] = %f\n", // i,j,symbol_likelihood[i*M+j]); } // exit(0); } } void Somap(float bit_likelihood[], /* number_bits, bps*number_symbols */ float symbol_likelihood[], /* M*number_symbols */ int M, /* constellation size */ int bps, /* bits per symbol */ int number_symbols) { int n, i, j, k, mask; float num[bps], den[bps]; float metric; for (n = 0; n < number_symbols; n++) { /* loop over symbols */ for (k = 0; k < bps; k++) { /* initialize */ num[k] = -1000000; den[k] = -1000000; } for (i = 0; i < M; i++) { metric = symbol_likelihood[n * M + i]; /* channel metric for this symbol */ mask = 1 << (bps - 1); for (j = 0; j < bps; j++) { mask = mask >> 1; } mask = 1 << (bps - 1); for (k = 0; k < bps; k++) { /* loop over bits */ if (mask & i) { /* this bit is a one */ num[k] = max_star0(num[k], metric); } else { /* this bit is a zero */ den[k] = max_star0(den[k], metric); } mask = mask >> 1; } } for (k = 0; k < bps; k++) { bit_likelihood[bps * n + k] = num[k] - den[k]; } } } void symbols_to_llrs(float llr[], COMP rx_qpsk_symbols[], float rx_amps[], float EsNo, float mean_amp, int nsyms) { int i; float symbol_likelihood[nsyms * QPSK_CONSTELLATION_SIZE]; float bit_likelihood[nsyms * QPSK_BITS_PER_SYMBOL]; Demod2D(symbol_likelihood, rx_qpsk_symbols, S_matrix, EsNo, rx_amps, mean_amp, nsyms); Somap(bit_likelihood, symbol_likelihood, QPSK_CONSTELLATION_SIZE, QPSK_BITS_PER_SYMBOL, nsyms); for (i = 0; i < nsyms * QPSK_BITS_PER_SYMBOL; i++) { llr[i] = -bit_likelihood[i]; } } /* Description: Transforms M-dimensional FSK symbols into ML symbol log-likelihoods The calling syntax is: [output] = FskDemod( input, EsNo, [csi_flag], [fade_coef] ) Where: output = M by N matrix of symbol log-likelihoods input = M by N matrix of (complex) matched filter outputs EsNo = the symbol SNR (in linear, not dB, units) csi_flag = 0 for coherent reception (default) 1 for noncoherent reception w/ perfect amplitude estimates 2 for noncoherent reception without amplitude estimates fade_coef = 1 by N matrix of (complex) fading coefficients (defaults to all-ones, i.e. AWGN) Copyright (C) 2006, Matthew C. Valenti Last updated on May 6, 2006 Function DemodFSK is part of the Iterative Solutions Coded Modulation Library. The Iterative Solutions Coded Modulation Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* the logI_0 function */ static float logbesseli0(float x) { if (x < 1) return (0.226 * x * x + 0.0125 * x - 0.0012); else if (x < 2) return (0.1245 * x * x + 0.2177 * x - 0.108); else if (x < 5) return (0.0288 * x * x + 0.6314 * x - 0.5645); else if (x < 20) return (0.002 * x * x + 0.9048 * x - 1.2997); else return (0.9867 * x - 2.2053); } /* Function that does the demodulation (can be used in stand-alone C) */ static void FskDemod(float out[], float yr[], float v_est, float SNR, int M, int number_symbols) { int i, j; float y_envelope, scale_factor; scale_factor = 2 * SNR; for (i = 0; i < number_symbols; i++) { for (j = 0; j < M; j++) { y_envelope = sqrt(yr[j * number_symbols + i] * yr[j * number_symbols + i] / (v_est * v_est)); out[i * M + j] = logbesseli0(scale_factor * y_envelope); } } } void fsk_rx_filt_to_llrs(float llr[], float rx_filt[], float v_est, float SNRest, int M, int nsyms) { int i; int bps = log2(M); float symbol_likelihood[M * nsyms]; float bit_likelihood[bps * nsyms]; FskDemod(symbol_likelihood, rx_filt, v_est, SNRest, M, nsyms); Somap(bit_likelihood, symbol_likelihood, M, bps, nsyms); for (i = 0; i < bps * nsyms; i++) { llr[i] = -bit_likelihood[i]; } } void ldpc_print_info(struct LDPC *ldpc) { fprintf(stderr, "ldpc->max_iter = %d\n", ldpc->max_iter); fprintf(stderr, "ldpc->dec_type = %d\n", ldpc->dec_type); fprintf(stderr, "ldpc->q_scale_factor = %d\n", ldpc->q_scale_factor); fprintf(stderr, "ldpc->r_scale_factor = %d\n", ldpc->r_scale_factor); fprintf(stderr, "ldpc->CodeLength = %d\n", ldpc->CodeLength); fprintf(stderr, "ldpc->NumberParityBits = %d\n", ldpc->NumberParityBits); fprintf(stderr, "ldpc->NumberRowsHcols = %d\n", ldpc->NumberRowsHcols); fprintf(stderr, "ldpc->max_row_weight = %d\n", ldpc->max_row_weight); fprintf(stderr, "ldpc->max_col_weight = %d\n", ldpc->max_col_weight); fprintf(stderr, "ldpc->data_bits_per_frame = %d\n", ldpc->data_bits_per_frame); fprintf(stderr, "ldpc->coded_bits_per_frame = %d\n", ldpc->coded_bits_per_frame); } codec2-1.2.0/src/mpdecode_core.h000066400000000000000000000032541445607075400164210ustar00rootroot00000000000000/* FILE...: mpdecode_core.h AUTHOR.: David Rowe CREATED: Sep 2016 C-callable core functions for MpDecode, so they can be used for Octave and C programs. Also some convenience functions to help use the C-callable LDPC decoder in C programs. */ #ifndef __MPDECODE_CORE__ #define __MPDECODE_CORE__ #include #include "comp.h" struct LDPC { char name[32]; int max_iter; int dec_type; int q_scale_factor; int r_scale_factor; int CodeLength; int NumberParityBits; int NumberRowsHcols; int max_row_weight; int max_col_weight; uint16_t *H_rows; uint16_t *H_cols; /* these two are fixed to code params */ int ldpc_data_bits_per_frame; int ldpc_coded_bits_per_frame; /* support for partial use of data bits in codeword and unequal protection * schemes */ int protection_mode; int data_bits_per_frame; int coded_bits_per_frame; }; void encode(struct LDPC *ldpc, unsigned char ibits[], unsigned char pbits[]); int run_ldpc_decoder(struct LDPC *ldpc, uint8_t out_char[], float input[], int *parityCheckCount); void sd_to_llr(float llr[], float sd[], int n); void Demod2D(float symbol_likelihood[], COMP r[], COMP S_matrix[], float EsNo, float fading[], float mean_amp, int number_symbols); void Somap(float bit_likelihood[], float symbol_likelihood[], int M, int bps, int number_symbols); void symbols_to_llrs(float llr[], COMP rx_qpsk_symbols[], float rx_amps[], float EsNo, float mean_amp, int nsyms); void fsk_rx_filt_to_llrs(float llr[], float rx_filt[], float v_est, float SNRest, int M, int nsyms); void ldpc_print_info(struct LDPC *ldpc); #endif codec2-1.2.0/src/newamp1.c000066400000000000000000000475271445607075400152070ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: newamp1.c AUTHOR......: David Rowe DATE CREATED: Jan 2017 Quantisation functions for the sinusoidal coder, using "newamp1" algorithm that resamples variable rate L [Am} to a fixed rate K then VQs. \*---------------------------------------------------------------------------*/ /* Copyright David Rowe 2017 All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "newamp1.h" #include #include #include #include #include #include "defines.h" #include "mbest.h" #include "phase.h" #include "quantise.h" /*---------------------------------------------------------------------------*\ FUNCTION....: interp_para() AUTHOR......: David Rowe DATE CREATED: Jan 2017 General 2nd order parabolic interpolator. Used splines originally, but this is much simpler and we don't need much accuracy. Given two vectors of points xp and yp, find interpolated values y at points x. \*---------------------------------------------------------------------------*/ void interp_para(float y[], float xp[], float yp[], int np, float x[], int n) { assert(np >= 3); int k, i; float xi, x1, y1, x2, y2, x3, y3, a, b; k = 0; for (i = 0; i < n; i++) { xi = x[i]; /* k is index into xp of where we start 3 points used to form parabola */ while ((xp[k + 1] < xi) && (k < (np - 3))) k++; x1 = xp[k]; y1 = yp[k]; x2 = xp[k + 1]; y2 = yp[k + 1]; x3 = xp[k + 2]; y3 = yp[k + 2]; // printf("k: %d np: %d i: %d xi: %f x1: %f y1: %f\n", k, np, i, xi, x1, // y1); a = ((y3 - y2) / (x3 - x2) - (y2 - y1) / (x2 - x1)) / (x3 - x1); b = ((y3 - y2) / (x3 - x2) * (x2 - x1) + (y2 - y1) / (x2 - x1) * (x3 - x2)) / (x3 - x1); y[i] = a * (xi - x2) * (xi - x2) + b * (xi - x2) + y2; } } /*---------------------------------------------------------------------------*\ FUNCTION....: ftomel() AUTHOR......: David Rowe DATE CREATED: Jan 2017 Non linear sampling of frequency axis, reducing the "rate" is a first step before VQ \*---------------------------------------------------------------------------*/ float ftomel(float fHz) { float mel = floorf(2595.0 * log10f(1.0 + fHz / 700.0) + 0.5); return mel; } void mel_sample_freqs_kHz(float rate_K_sample_freqs_kHz[], int K, float mel_start, float mel_end) { float step = (mel_end - mel_start) / (K - 1); float mel; int k; mel = mel_start; for (k = 0; k < K; k++) { rate_K_sample_freqs_kHz[k] = 0.7 * (POW10F(mel / 2595.0) - 1.0); mel += step; } } /*---------------------------------------------------------------------------*\ FUNCTION....: resample_const_rate_f() AUTHOR......: David Rowe DATE CREATED: Jan 2017 Resample Am from time-varying rate L=floor(pi/Wo) to fixed rate K. \*---------------------------------------------------------------------------*/ void resample_const_rate_f(C2CONST *c2const, MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K) { int m; float AmdB[MAX_AMP + 1], rate_L_sample_freqs_kHz[MAX_AMP + 1], AmdB_peak; /* convert rate L=pi/Wo amplitude samples to fixed rate K */ AmdB_peak = -100.0; for (m = 1; m <= model->L; m++) { AmdB[m] = 20.0 * log10f(model->A[m] + 1E-16); if (AmdB[m] > AmdB_peak) { AmdB_peak = AmdB[m]; } rate_L_sample_freqs_kHz[m] = m * model->Wo * (c2const->Fs / 2000.0) / M_PI; // printf("m: %d AmdB: %f AmdB_peak: %f sf: %f\n", m, AmdB[m], AmdB_peak, // rate_L_sample_freqs_kHz[m]); } /* clip between peak and peak -50dB, to reduce dynamic range */ for (m = 1; m <= model->L; m++) { if (AmdB[m] < (AmdB_peak - 50.0)) { AmdB[m] = AmdB_peak - 50.0; } } interp_para(rate_K_vec, &rate_L_sample_freqs_kHz[1], &AmdB[1], model->L, rate_K_sample_freqs_kHz, K); } /*---------------------------------------------------------------------------*\ FUNCTION....: rate_K_mbest_encode AUTHOR......: David Rowe DATE CREATED: Jan 2017 Two stage rate K newamp1 VQ quantiser using mbest search. \*---------------------------------------------------------------------------*/ float rate_K_mbest_encode(int *indexes, float *x, float *xq, int ndim, int mbest_entries) { int i, j, n1, n2; const float *codebook1 = newamp1vq_cb[0].cb; const float *codebook2 = newamp1vq_cb[1].cb; struct MBEST *mbest_stage1, *mbest_stage2; float target[ndim]; int index[MBEST_STAGES]; float mse, tmp; /* codebook is compiled for a fixed K */ assert(ndim == newamp1vq_cb[0].k); mbest_stage1 = mbest_create(mbest_entries); mbest_stage2 = mbest_create(mbest_entries); for (i = 0; i < MBEST_STAGES; i++) index[i] = 0; /* Stage 1 */ mbest_search(codebook1, x, ndim, newamp1vq_cb[0].m, mbest_stage1, index); /* Stage 2 */ for (j = 0; j < mbest_entries; j++) { index[1] = n1 = mbest_stage1->list[j].index[0]; for (i = 0; i < ndim; i++) target[i] = x[i] - codebook1[ndim * n1 + i]; mbest_search(codebook2, target, ndim, newamp1vq_cb[1].m, mbest_stage2, index); } n1 = mbest_stage2->list[0].index[1]; n2 = mbest_stage2->list[0].index[0]; mse = 0.0; for (i = 0; i < ndim; i++) { tmp = codebook1[ndim * n1 + i] + codebook2[ndim * n2 + i]; mse += (x[i] - tmp) * (x[i] - tmp); xq[i] = tmp; } mbest_destroy(mbest_stage1); mbest_destroy(mbest_stage2); indexes[0] = n1; indexes[1] = n2; return mse; } /*---------------------------------------------------------------------------*\ FUNCTION....: post_filter AUTHOR......: David Rowe DATE CREATED: Jan 2017 Post Filter, has a big impact on speech quality after VQ. When used on a mean removed rate K vector, it raises formants, and suppresses anti-formants. As it manipulates amplitudes, we normalise energy to prevent clipping or large level variations. pf_gain of 1.2 to 1.5 (dB) seems to work OK. Good area for further investigations and improvements in speech quality. \*---------------------------------------------------------------------------*/ void post_filter_newamp1(float vec[], float sample_freq_kHz[], int K, float pf_gain) { int k; /* vec is rate K vector describing spectrum of current frame lets pre-emp before applying PF. 20dB/dec over 300Hz. Postfilter affects energy of frame so we measure energy before and after and normalise. Plenty of room for experimentation here. */ float pre[K]; float e_before = 0.0; float e_after = 0.0; for (k = 0; k < K; k++) { pre[k] = 20.0 * log10f(sample_freq_kHz[k] / 0.3); vec[k] += pre[k]; e_before += POW10F(vec[k] / 10.0); vec[k] *= pf_gain; e_after += POW10F(vec[k] / 10.0); } float gain = e_after / e_before; float gaindB = 10 * log10f(gain); for (k = 0; k < K; k++) { vec[k] -= gaindB; vec[k] -= pre[k]; } } /*---------------------------------------------------------------------------*\ FUNCTION....: interp_Wo_v AUTHOR......: David Rowe DATE CREATED: Jan 2017 Decoder side interpolation of Wo and voicing, to go from 25 Hz sample rate used over channel to 100Hz internal sample rate of Codec 2. \*---------------------------------------------------------------------------*/ void interp_Wo_v(float Wo_[], int L_[], int voicing_[], float Wo1, float Wo2, int voicing1, int voicing2) { int i; int M = 4; /* interpolation rate */ for (i = 0; i < M; i++) voicing_[i] = 0; if (!voicing1 && !voicing2) { for (i = 0; i < M; i++) Wo_[i] = 2.0 * M_PI / 100.0; } if (voicing1 && !voicing2) { Wo_[0] = Wo_[1] = Wo1; Wo_[2] = Wo_[3] = 2.0 * M_PI / 100.0; voicing_[0] = voicing_[1] = 1; } if (!voicing1 && voicing2) { Wo_[0] = Wo_[1] = 2.0 * M_PI / 100.0; Wo_[2] = Wo_[3] = Wo2; voicing_[2] = voicing_[3] = 1; } if (voicing1 && voicing2) { float c; for (i = 0, c = 1.0; i < M; i++, c -= 1.0 / M) { Wo_[i] = Wo1 * c + Wo2 * (1.0 - c); voicing_[i] = 1; } } for (i = 0; i < M; i++) { L_[i] = floorf(M_PI / Wo_[i]); } } /*---------------------------------------------------------------------------*\ FUNCTION....: resample_rate_L AUTHOR......: David Rowe DATE CREATED: Jan 2017 Decoder side conversion of rate K vector back to rate L. \*---------------------------------------------------------------------------*/ void resample_rate_L(C2CONST *c2const, MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K) { float rate_K_vec_term[K + 2], rate_K_sample_freqs_kHz_term[K + 2]; float AmdB[MAX_AMP + 1], rate_L_sample_freqs_kHz[MAX_AMP + 1]; int m, k; /* terminate either end of the rate K vecs with 0dB points */ rate_K_vec_term[0] = rate_K_vec_term[K + 1] = 0.0; rate_K_sample_freqs_kHz_term[0] = 0.0; rate_K_sample_freqs_kHz_term[K + 1] = 4.0; for (k = 0; k < K; k++) { rate_K_vec_term[k + 1] = rate_K_vec[k]; rate_K_sample_freqs_kHz_term[k + 1] = rate_K_sample_freqs_kHz[k]; // printf("k: %d f: %f rate_K: %f\n", k, rate_K_sample_freqs_kHz[k], // rate_K_vec[k]); } for (m = 1; m <= model->L; m++) { rate_L_sample_freqs_kHz[m] = m * model->Wo * (c2const->Fs / 2000.0) / M_PI; } interp_para(&AmdB[1], rate_K_sample_freqs_kHz_term, rate_K_vec_term, K + 2, &rate_L_sample_freqs_kHz[1], model->L); for (m = 1; m <= model->L; m++) { model->A[m] = POW10F(AmdB[m] / 20.0); // printf("m: %d f: %f AdB: %f A: %f\n", m, rate_L_sample_freqs_kHz[m], // AmdB[m], model->A[m]); } } /*---------------------------------------------------------------------------*\ FUNCTION....: determine_phase AUTHOR......: David Rowe DATE CREATED: Jan 2017 Given a magnitude spectrum determine a phase spectrum, used for phase synthesis with newamp1. \*---------------------------------------------------------------------------*/ void determine_phase(C2CONST *c2const, COMP H[], MODEL *model, int Nfft, codec2_fft_cfg fwd_cfg, codec2_fft_cfg inv_cfg) { int i, m, b; int Ns = Nfft / 2 + 1; float Gdbfk[Ns], sample_freqs_kHz[Ns], phase[Ns]; float AmdB[MAX_AMP + 1], rate_L_sample_freqs_kHz[MAX_AMP + 1]; for (m = 1; m <= model->L; m++) { assert(model->A[m] != 0.0); AmdB[m] = 20.0 * log10f(model->A[m]); rate_L_sample_freqs_kHz[m] = (float)m * model->Wo * (c2const->Fs / 2000.0) / M_PI; } for (i = 0; i < Ns; i++) { sample_freqs_kHz[i] = (c2const->Fs / 1000.0) * (float)i / Nfft; } interp_para(Gdbfk, &rate_L_sample_freqs_kHz[1], &AmdB[1], model->L, sample_freqs_kHz, Ns); mag_to_phase(phase, Gdbfk, Nfft, fwd_cfg, inv_cfg); for (m = 1; m <= model->L; m++) { b = floorf(0.5 + m * model->Wo * Nfft / (2.0 * M_PI)); H[m].real = cosf(phase[b]); H[m].imag = sinf(phase[b]); } } /*---------------------------------------------------------------------------* \ FUNCTION....: determine_autoc AUTHOR......: David Rowe DATE CREATED: April 2020 Determine autocorrelation coefficients from model params, for machine learning experiments. \*---------------------------------------------------------------------------*/ void determine_autoc(C2CONST *c2const, float Rk[], int order, MODEL *model, int Nfft, codec2_fft_cfg fwd_cfg, codec2_fft_cfg inv_cfg) { int i, m; int Ns = Nfft / 2 + 1; float Gdbfk[Ns], sample_freqs_kHz[Ns]; float AmdB[MAX_AMP + 1], rate_L_sample_freqs_kHz[MAX_AMP + 1]; /* interpolate in the log domain */ for (m = 1; m <= model->L; m++) { assert(model->A[m] != 0.0); AmdB[m] = 20.0 * log10f(model->A[m]); rate_L_sample_freqs_kHz[m] = (float)m * model->Wo * (c2const->Fs / 2000.0) / M_PI; } for (i = 0; i < Ns; i++) { sample_freqs_kHz[i] = (c2const->Fs / 1000.0) * (float)i / Nfft; } interp_para(Gdbfk, &rate_L_sample_freqs_kHz[1], &AmdB[1], model->L, sample_freqs_kHz, Ns); COMP S[Nfft], R[Nfft]; /* install negative frequency components, convert to mag squared of spectrum */ S[0].real = pow(10.0, Gdbfk[0] / 10.0); S[0].imag = 0.0; for (i = 1; i < Ns; i++) { S[i].real = S[Nfft - i].real = pow(10.0, Gdbfk[i] / 10.0); S[i].imag = S[Nfft - i].imag = 0.0; } /* IDFT of mag squared is autocorrelation function */ codec2_fft(inv_cfg, S, R); for (int k = 0; k < order + 1; k++) Rk[k] = R[k].real; } /* update and optionally run "front eq" equaliser on before VQ */ void newamp1_eq(float rate_K_vec_no_mean[], float eq[], int K, int eq_en) { static float ideal[] = {8, 10, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, -20}; float gain = 0.02; float update; for (int k = 0; k < K; k++) { update = rate_K_vec_no_mean[k] - ideal[k]; eq[k] = (1.0 - gain) * eq[k] + gain * update; if (eq[k] < 0.0) eq[k] = 0.0; if (eq_en) rate_K_vec_no_mean[k] -= eq[k]; } } /*---------------------------------------------------------------------------* \ FUNCTION....: newamp1_model_to_indexes AUTHOR......: David Rowe DATE CREATED: Jan 2017 newamp1 encoder for amplitdues {Am}. Given the rate L model parameters, outputs VQ and energy quantiser indexes. \*---------------------------------------------------------------------------*/ void newamp1_model_to_indexes(C2CONST *c2const, int indexes[], MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K, float *mean, float rate_K_vec_no_mean[], float rate_K_vec_no_mean_[], float *se, float *eq, int eq_en) { int k; /* convert variable rate L to fixed rate K */ resample_const_rate_f(c2const, model, rate_K_vec, rate_K_sample_freqs_kHz, K); /* remove mean */ float sum = 0.0; for (k = 0; k < K; k++) sum += rate_K_vec[k]; *mean = sum / K; for (k = 0; k < K; k++) rate_K_vec_no_mean[k] = rate_K_vec[k] - *mean; /* update and optionally run "front eq" equaliser on before VQ */ newamp1_eq(rate_K_vec_no_mean, eq, K, eq_en); /* two stage VQ */ rate_K_mbest_encode(indexes, rate_K_vec_no_mean, rate_K_vec_no_mean_, K, NEWAMP1_VQ_MBEST_DEPTH); /* running sum of squared error for variance calculation */ for (k = 0; k < K; k++) *se += (float)pow(rate_K_vec_no_mean[k] - rate_K_vec_no_mean_[k], 2.0); /* scalar quantise mean (effectively the frame energy) */ float w[1] = {1.0}; float se_mean; indexes[2] = quantise(newamp1_energy_cb[0].cb, mean, w, newamp1_energy_cb[0].k, newamp1_energy_cb[0].m, &se_mean); /* scalar quantise Wo. We steal the smallest Wo index to signal an unvoiced frame */ if (model->voiced) { int index = encode_log_Wo(c2const, model->Wo, 6); if (index == 0) { index = 1; } indexes[3] = index; } else { indexes[3] = 0; } } /*---------------------------------------------------------------------------*\ FUNCTION....: newamp1_interpolate AUTHOR......: David Rowe DATE CREATED: Jan 2017 \*---------------------------------------------------------------------------*/ void newamp1_interpolate(float interpolated_surface_[], float left_vec[], float right_vec[], int K) { int i, k; int M = 4; float c; /* (linearly) interpolate 25Hz amplitude vectors back to 100Hz */ for (i = 0, c = 1.0; i < M; i++, c -= 1.0 / M) { for (k = 0; k < K; k++) { interpolated_surface_[i * K + k] = left_vec[k] * c + right_vec[k] * (1.0 - c); } } } /*---------------------------------------------------------------------------*\ FUNCTION....: newamp1_indexes_to_rate_K_vec AUTHOR......: David Rowe DATE CREATED: Jan 2017 newamp1 decoder for amplitudes {Am}. Given the rate K VQ and energy indexes, outputs rate K vector. \*---------------------------------------------------------------------------*/ void newamp1_indexes_to_rate_K_vec(float rate_K_vec_[], float rate_K_vec_no_mean_[], float rate_K_sample_freqs_kHz[], int K, float *mean_, int indexes[], float user_rate_K_vec_no_mean_[], int post_filter_en) { int k; const float *codebook1 = newamp1vq_cb[0].cb; const float *codebook2 = newamp1vq_cb[1].cb; int n1 = indexes[0]; int n2 = indexes[1]; if (user_rate_K_vec_no_mean_ == NULL) { /* normal operation */ for (k = 0; k < K; k++) { rate_K_vec_no_mean_[k] = codebook1[K * n1 + k] + codebook2[K * n2 + k]; } } else { /* for development we can optionally inject the quantised rate K vector here */ for (k = 0; k < K; k++) rate_K_vec_no_mean_[k] = user_rate_K_vec_no_mean_[k]; } if (post_filter_en) post_filter_newamp1(rate_K_vec_no_mean_, rate_K_sample_freqs_kHz, K, 1.5); *mean_ = newamp1_energy_cb[0].cb[indexes[2]]; for (k = 0; k < K; k++) { rate_K_vec_[k] = rate_K_vec_no_mean_[k] + *mean_; } } /*---------------------------------------------------------------------------*\ FUNCTION....: newamp1_indexes_to_model AUTHOR......: David Rowe DATE CREATED: Jan 2017 newamp1 decoder. \*---------------------------------------------------------------------------*/ void newamp1_indexes_to_model(C2CONST *c2const, MODEL model_[], COMP H[], float *interpolated_surface_, float prev_rate_K_vec_[], float *Wo_left, int *voicing_left, float rate_K_sample_freqs_kHz[], int K, codec2_fft_cfg fwd_cfg, codec2_fft_cfg inv_cfg, int indexes[], float user_rate_K_vec_no_mean_[], int post_filter_en) { float rate_K_vec_[K], rate_K_vec_no_mean_[K], mean_, Wo_right; int voicing_right, k; int M = 4; /* extract latest rate K vector */ newamp1_indexes_to_rate_K_vec(rate_K_vec_, rate_K_vec_no_mean_, rate_K_sample_freqs_kHz, K, &mean_, indexes, user_rate_K_vec_no_mean_, post_filter_en); /* decode latest Wo and voicing */ if (indexes[3]) { Wo_right = decode_log_Wo(c2const, indexes[3], 6); voicing_right = 1; } else { Wo_right = 2.0 * M_PI / 100.0; voicing_right = 0; } /* interpolate 25Hz rate K vec back to 100Hz */ float *left_vec = prev_rate_K_vec_; float *right_vec = rate_K_vec_; newamp1_interpolate(interpolated_surface_, left_vec, right_vec, K); /* interpolate 25Hz v and Wo back to 100Hz */ float aWo_[M]; int avoicing_[M], aL_[M], i; interp_Wo_v(aWo_, aL_, avoicing_, *Wo_left, Wo_right, *voicing_left, voicing_right); /* back to rate L amplitudes, synthesise phase for each frame */ for (i = 0; i < M; i++) { model_[i].Wo = aWo_[i]; model_[i].L = aL_[i]; model_[i].voiced = avoicing_[i]; resample_rate_L(c2const, &model_[i], &interpolated_surface_[K * i], rate_K_sample_freqs_kHz, K); determine_phase(c2const, &H[(MAX_AMP + 1) * i], &model_[i], NEWAMP1_PHASE_NFFT, fwd_cfg, inv_cfg); } /* update memories for next time */ for (k = 0; k < K; k++) { prev_rate_K_vec_[k] = rate_K_vec_[k]; } *Wo_left = Wo_right; *voicing_left = voicing_right; } codec2-1.2.0/src/newamp1.h000066400000000000000000000101031445607075400151700ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: newamp1.h AUTHOR......: David Rowe DATE CREATED: Jan 2017 Quantisation functions for the sinusoidal coder, using "newamp1" algorithm that resamples variable rate L [Am} to a fixed rate K then VQs. \*---------------------------------------------------------------------------*/ /* Copyright David Rowe 2017 All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __NEWAMP1__ #define __NEWAMP1__ #define NEWAMP1_N_INDEXES \ 4 /* Number of indexes to pack: vq1, vq2, energy, Wo */ #define NEWAMP1_PHASE_NFFT \ 128 /* size of FFT used for phase synthesis */ #define NEWAMP1_K 20 /* rate K vector length */ #define NEWAMP1_VQ_MBEST_DEPTH \ 5 /* how many candidates we keep for each stage of mbest search */ #include "codec2_fft.h" #include "comp.h" void interp_para(float y[], float xp[], float yp[], int np, float x[], int n); float ftomel(float fHz); void mel_sample_freqs_kHz(float rate_K_sample_freqs_kHz[], int K, float mel_start, float mel_end); void resample_const_rate_f(C2CONST *c2const, MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K); float rate_K_mbest_encode(int *indexes, float *x, float *xq, int ndim, int mbest_entries); void post_filter_newamp1(float vec[], float sample_freq_kHz[], int K, float pf_gain); void interp_Wo_v(float Wo_[], int L_[], int voicing_[], float Wo1, float Wo2, int voicing1, int voicing2); void resample_rate_L(C2CONST *c2const, MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K); void determine_phase(C2CONST *c2const, COMP H[], MODEL *model, int Nfft, codec2_fft_cfg fwd_cfg, codec2_fft_cfg inv_cfg); void determine_autoc(C2CONST *c2const, float Rk[], int order, MODEL *model, int Nfft, codec2_fft_cfg fwd_cfg, codec2_fft_cfg inv_cfg); void newamp1_model_to_indexes(C2CONST *c2const, int indexes[], MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K, float *mean, float rate_K_vec_no_mean[], float rate_K_vec_no_mean_[], float *se, float *eq, int eq_en); void newamp1_indexes_to_rate_K_vec(float rate_K_vec_[], float rate_K_vec_no_mean_[], float rate_K_sample_freqs_kHz[], int K, float *mean_, int indexes[], float user_rate_K_vec_no_mean_[], int post_filter_en); void newamp1_interpolate(float interpolated_surface_[], float left_vec[], float right_vec[], int K); void newamp1_eq(float rate_K_vec_no_mean[], float eq[], int K, int eq_en); void newamp1_indexes_to_model(C2CONST *c2const, MODEL model_[], COMP H[], float interpolated_surface_[], float prev_rate_K_vec_[], float *Wo_left, int *voicing_left, float rate_K_sample_freqs_kHz[], int K, codec2_fft_cfg fwd_cfg, codec2_fft_cfg inv_cfg, int indexes[], float user_rate_K_vec_no_mean_[], int post_filter_en); #endif codec2-1.2.0/src/newamp2.h000066400000000000000000000073271445607075400152070ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: newamp2.h AUTHOR......: Thomas Kurin and Stefan Erhardt INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg DATE CREATED: July 2018 BASED ON....: "newamp1.h" by David Rowe Quantisation functions for the sinusoidal coder, using "newamp1" algorithm that resamples variable rate L [Am} to a fixed rate K then VQs. \*---------------------------------------------------------------------------*/ /* Copyright Thomas Kurin and Stefan Erhardt 2018 All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __NEWAMP2__ #define __NEWAMP2__ #define NEWAMP2_N_INDEXES \ 4 /* Number of indexes to pack: vq1, vq2, energy, Wo */ #define NEWAMP2_PHASE_NFFT \ 128 /* size of FFT used for phase synthesis */ #define NEWAMP2_K 29 /* rate K vector length */ #define NEWAMP2_16K_K \ 40 /* rate K vector length for 16k Mode */ #include "codec2_fft.h" #include "comp.h" void n2_mel_sample_freqs_kHz(float rate_K_sample_freqs_kHz[], int K); void n2_resample_const_rate_f(C2CONST *c2const, MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K); void n2_rate_K_mbest_encode(int *indexes, float *x, float *xq, int ndim); void n2_resample_rate_L(C2CONST *c2const, MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K, int plosive_flag); void n2_post_filter_newamp2(float vec[], float sample_freq_kHz[], int K, float pf_gain); void newamp2_interpolate(float interpolated_surface_[], float left_vec[], float right_vec[], int K, int plosive_flag); void newamp2_model_to_indexes(C2CONST *c2const, int indexes[], MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K, float *mean, float rate_K_vec_no_mean[], float rate_K_vec_no_mean_[], int plosiv); void newamp2_indexes_to_rate_K_vec(float rate_K_vec_[], float rate_K_vec_no_mean_[], float rate_K_sample_freqs_kHz[], int K, float *mean_, int indexes[], float pf_gain); void newamp2_16k_indexes_to_rate_K_vec(float rate_K_vec_[], float rate_K_vec_no_mean_[], float rate_K_sample_freqs_kHz[], int K, float *mean_, int indexes[], float pf_gain); void newamp2_indexes_to_model(C2CONST *c2const, MODEL model_[], COMP H[], float interpolated_surface_[], float prev_rate_K_vec_[], float *Wo_left, int *voicing_left, float rate_K_sample_freqs_kHz[], int K, codec2_fft_cfg fwd_cfg, codec2_fft_cfg inv_cfg, int indexes[], float pf_gain, int flag16k); #endif codec2-1.2.0/src/nlp.c000066400000000000000000000350621445607075400144170ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: nlp.c AUTHOR......: David Rowe DATE CREATED: 23/3/93 Non Linear Pitch (NLP) estimation functions. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2009 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "nlp.h" #include "codec2_fft.h" #include "defines.h" #include "dump.h" #undef PROFILE #include #include #include #include "machdep.h" #include "os.h" /*---------------------------------------------------------------------------*\ DEFINES \*---------------------------------------------------------------------------*/ #define PMAX_M 320 /* maximum NLP analysis window size */ #define COEFF 0.95 /* notch filter parameter */ #define PE_FFT_SIZE 512 /* DFT size for pitch estimation */ #define DEC 5 /* decimation factor */ #define SAMPLE_RATE 8000 #define PI 3.141592654 /* mathematical constant */ #define T 0.1 /* threshold for local minima candidate */ #define F0_MAX 500 #define CNLP 0.3 /* post processor constant */ #define NLP_NTAP 48 /* Decimation LPF order */ /* 8 to 16 kHz sample rate conversion */ #define FDMDV_OS 2 /* oversampling rate */ #define FDMDV_OS_TAPS_16K 48 /* number of OS filter taps at 16kHz */ #define FDMDV_OS_TAPS_8K \ (FDMDV_OS_TAPS_16K / FDMDV_OS) /* number of OS filter taps at 8kHz */ /*---------------------------------------------------------------------------*\ GLOBALS \*---------------------------------------------------------------------------*/ /* 48 tap 600Hz low pass FIR filter coefficients */ const float nlp_fir[] = { -1.0818124e-03, -1.1008344e-03, -9.2768838e-04, -4.2289438e-04, 5.5034190e-04, 2.0029849e-03, 3.7058509e-03, 5.1449415e-03, 5.5924666e-03, 4.3036754e-03, 8.0284511e-04, -4.8204610e-03, -1.1705810e-02, -1.8199275e-02, -2.2065282e-02, -2.0920610e-02, -1.2808831e-02, 3.2204775e-03, 2.6683811e-02, 5.5520624e-02, 8.6305944e-02, 1.1480192e-01, 1.3674206e-01, 1.4867556e-01, 1.4867556e-01, 1.3674206e-01, 1.1480192e-01, 8.6305944e-02, 5.5520624e-02, 2.6683811e-02, 3.2204775e-03, -1.2808831e-02, -2.0920610e-02, -2.2065282e-02, -1.8199275e-02, -1.1705810e-02, -4.8204610e-03, 8.0284511e-04, 4.3036754e-03, 5.5924666e-03, 5.1449415e-03, 3.7058509e-03, 2.0029849e-03, 5.5034190e-04, -4.2289438e-04, -9.2768838e-04, -1.1008344e-03, -1.0818124e-03}; typedef struct { int Fs; /* sample rate in Hz */ int m; float w[PMAX_M / DEC]; /* DFT window */ float sq[PMAX_M]; /* squared speech samples */ float mem_x, mem_y; /* memory for notch filter */ float mem_fir[NLP_NTAP]; /* decimation FIR filter memory */ codec2_fft_cfg fft_cfg; /* kiss FFT config */ float *Sn16k; /* Fs=16kHz input speech vector */ FILE *f; } NLP; float post_process_sub_multiples(COMP Fw[], int pmin, int pmax, float gmax, int gmax_bin, float *prev_f0); static void fdmdv_16_to_8(float out8k[], float in16k[], int n); /*---------------------------------------------------------------------------*\ nlp_create() Initialisation function for NLP pitch estimator. \*---------------------------------------------------------------------------*/ void *nlp_create(C2CONST *c2const) { NLP *nlp; int i; int m = c2const->m_pitch; int Fs = c2const->Fs; nlp = (NLP *)malloc(sizeof(NLP)); if (nlp == NULL) return NULL; assert((Fs == 8000) || (Fs == 16000)); nlp->Fs = Fs; nlp->m = m; /* if running at 16kHz allocate storage for decimating filter memory */ if (Fs == 16000) { nlp->Sn16k = (float *)malloc(sizeof(float) * (FDMDV_OS_TAPS_16K + c2const->n_samp)); for (i = 0; i < FDMDV_OS_TAPS_16K; i++) { nlp->Sn16k[i] = 0.0; } if (nlp->Sn16k == NULL) { free(nlp); return NULL; } /* most processing occurs at 8 kHz sample rate so halve m */ m /= 2; } assert(m <= PMAX_M); for (i = 0; i < m / DEC; i++) { nlp->w[i] = 0.5 - 0.5 * cosf(2 * PI * i / (m / DEC - 1)); } for (i = 0; i < PMAX_M; i++) nlp->sq[i] = 0.0; nlp->mem_x = 0.0; nlp->mem_y = 0.0; for (i = 0; i < NLP_NTAP; i++) nlp->mem_fir[i] = 0.0; nlp->fft_cfg = codec2_fft_alloc(PE_FFT_SIZE, 0, NULL, NULL); assert(nlp->fft_cfg != NULL); return (void *)nlp; } /*---------------------------------------------------------------------------*\ nlp_destroy() Shut down function for NLP pitch estimator. \*---------------------------------------------------------------------------*/ void nlp_destroy(void *nlp_state) { NLP *nlp; assert(nlp_state != NULL); nlp = (NLP *)nlp_state; codec2_fft_free(nlp->fft_cfg); if (nlp->Fs == 16000) { free(nlp->Sn16k); } free(nlp_state); } /*---------------------------------------------------------------------------*\ nlp() Determines the pitch in samples using the Non Linear Pitch (NLP) algorithm [1]. Returns the fundamental in Hz. Note that the actual pitch estimate is for the centre of the M sample Sn[] vector, not the current N sample input vector. This is (I think) a delay of 2.5 frames with N=80 samples. You should align further analysis using this pitch estimate to be centred on the middle of Sn[]. Two post processors have been tried, the MBE version (as discussed in [1]), and a post processor that checks sub-multiples. Both suffer occasional gross pitch errors (i.e. neither are perfect). In the presence of background noise the sub-multiple algorithm tends towards low F0 which leads to better sounding background noise than the MBE post processor. A good way to test and develop the NLP pitch estimator is using the tnlp (codec2/unittest) and the codec2/octave/plnlp.m Octave script. A pitch tracker searching a few frames forward and backward in time would be a useful addition. References: [1] http://rowetel.com/downloads/1997_rowe_phd_thesis.pdf Chapter 4 \*---------------------------------------------------------------------------*/ float nlp( void *nlp_state, float Sn[], /* input speech vector */ int n, /* frames shift (no. new samples in Sn[]) */ float *pitch, /* estimated pitch period in samples at current Fs */ COMP Sw[], /* Freq domain version of Sn[] */ float W[], /* Freq domain window */ float *prev_f0 /* previous pitch f0 in Hz, memory for pitch tracking */ ) { NLP *nlp; float notch; /* current notch filter output */ COMP Fw[PE_FFT_SIZE]; /* DFT of squared signal (input/output) */ float gmax; int gmax_bin; int m, i, j; float best_f0; PROFILE_VAR(start, tnotch, filter, peakpick, window, fft, magsq, shiftmem); assert(nlp_state != NULL); nlp = (NLP *)nlp_state; m = nlp->m; /* Square, notch filter at DC, and LP filter vector */ /* If running at 16 kHz decimate to 8 kHz, as NLP ws designed for Fs = 8kHz. The decimating filter introduces about 3ms of delay, that shouldn't be a problem as pitch changes slowly. */ if (nlp->Fs == 8000) { /* Square latest input samples */ for (i = m - n; i < m; i++) { nlp->sq[i] = Sn[i] * Sn[i]; } } else { assert(nlp->Fs == 16000); /* re-sample at 8 KHz */ for (i = 0; i < n; i++) { nlp->Sn16k[FDMDV_OS_TAPS_16K + i] = Sn[m - n + i]; } m /= 2; n /= 2; float Sn8k[n]; fdmdv_16_to_8(Sn8k, &nlp->Sn16k[FDMDV_OS_TAPS_16K], n); /* Square latest input samples */ for (i = m - n, j = 0; i < m; i++, j++) { nlp->sq[i] = Sn8k[j] * Sn8k[j]; } assert(j <= n); } // fprintf(stderr, "n: %d m: %d\n", n, m); PROFILE_SAMPLE(start); for (i = m - n; i < m; i++) { /* notch filter at DC */ notch = nlp->sq[i] - nlp->mem_x; notch += COEFF * nlp->mem_y; nlp->mem_x = nlp->sq[i]; nlp->mem_y = notch; nlp->sq[i] = notch + 1.0; /* With 0 input vectors to codec, kiss_fft() would take a long time to execute when running in real time. Problem was traced to kiss_fft function call in this function. Adding this small constant fixed problem. Not exactly sure why. */ } PROFILE_SAMPLE_AND_LOG(tnotch, start, " square and notch"); for (i = m - n; i < m; i++) { /* FIR filter vector */ for (j = 0; j < NLP_NTAP - 1; j++) nlp->mem_fir[j] = nlp->mem_fir[j + 1]; nlp->mem_fir[NLP_NTAP - 1] = nlp->sq[i]; nlp->sq[i] = 0.0; for (j = 0; j < NLP_NTAP; j++) nlp->sq[i] += nlp->mem_fir[j] * nlp_fir[j]; } PROFILE_SAMPLE_AND_LOG(filter, tnotch, " filter"); /* Decimate and DFT */ for (i = 0; i < PE_FFT_SIZE; i++) { Fw[i].real = 0.0; Fw[i].imag = 0.0; } for (i = 0; i < m / DEC; i++) { Fw[i].real = nlp->sq[i * DEC] * nlp->w[i]; } PROFILE_SAMPLE_AND_LOG(window, filter, " window"); #ifdef DUMP dump_dec(Fw); #endif // FIXME: check if this can be converted to a real fft // since all imag inputs are 0 codec2_fft_inplace(nlp->fft_cfg, Fw); PROFILE_SAMPLE_AND_LOG(fft, window, " fft"); for (i = 0; i < PE_FFT_SIZE; i++) Fw[i].real = Fw[i].real * Fw[i].real + Fw[i].imag * Fw[i].imag; PROFILE_SAMPLE_AND_LOG(magsq, fft, " mag sq"); #ifdef DUMP dump_sq(m, nlp->sq); dump_Fw(Fw); #endif /* todo: express everything in f0, as pitch in samples is dep on Fs */ int pmin = floor(SAMPLE_RATE * P_MIN_S); int pmax = floor(SAMPLE_RATE * P_MAX_S); /* find global peak */ gmax = 0.0; gmax_bin = PE_FFT_SIZE * DEC / pmax; for (i = PE_FFT_SIZE * DEC / pmax; i <= PE_FFT_SIZE * DEC / pmin; i++) { if (Fw[i].real > gmax) { gmax = Fw[i].real; gmax_bin = i; } } PROFILE_SAMPLE_AND_LOG(peakpick, magsq, " peak pick"); best_f0 = post_process_sub_multiples(Fw, pmin, pmax, gmax, gmax_bin, prev_f0); PROFILE_SAMPLE_AND_LOG(shiftmem, peakpick, " post process"); /* Shift samples in buffer to make room for new samples */ for (i = 0; i < m - n; i++) nlp->sq[i] = nlp->sq[i + n]; /* return pitch period in samples and F0 estimate */ *pitch = (float)nlp->Fs / best_f0; PROFILE_SAMPLE_AND_LOG2(shiftmem, " shift mem"); PROFILE_SAMPLE_AND_LOG2(start, " nlp int"); *prev_f0 = best_f0; return (best_f0); } /*---------------------------------------------------------------------------*\ post_process_sub_multiples() Given the global maximma of Fw[] we search integer submultiples for local maxima. If local maxima exist and they are above an experimentally derived threshold (OK a magic number I pulled out of the air) we choose the submultiple as the F0 estimate. The rational for this is that the lowest frequency peak of Fw[] should be F0, as Fw[] can be considered the autocorrelation function of Sw[] (the speech spectrum). However sometimes due to phase effects the lowest frequency maxima may not be the global maxima. This works OK in practice and favours low F0 values in the presence of background noise which means the sinusoidal codec does an OK job of synthesising the background noise. High F0 in background noise tends to sound more periodic introducing annoying artifacts. \*---------------------------------------------------------------------------*/ float post_process_sub_multiples(COMP Fw[], int pmin, int pmax, float gmax, int gmax_bin, float *prev_f0) { int min_bin, cmax_bin; int mult; float thresh, best_f0; int b, bmin, bmax, lmax_bin; float lmax; int prev_f0_bin; /* post process estimate by searching submultiples */ mult = 2; min_bin = PE_FFT_SIZE * DEC / pmax; cmax_bin = gmax_bin; prev_f0_bin = *prev_f0 * (PE_FFT_SIZE * DEC) / SAMPLE_RATE; while (gmax_bin / mult >= min_bin) { b = gmax_bin / mult; /* determine search interval */ bmin = 0.8 * b; bmax = 1.2 * b; if (bmin < min_bin) bmin = min_bin; /* lower threshold to favour previous frames pitch estimate, this is a form of pitch tracking */ if ((prev_f0_bin > bmin) && (prev_f0_bin < bmax)) thresh = CNLP * 0.5 * gmax; else thresh = CNLP * gmax; lmax = 0; lmax_bin = bmin; for (b = bmin; b <= bmax; b++) /* look for maximum in interval */ if (Fw[b].real > lmax) { lmax = Fw[b].real; lmax_bin = b; } if (lmax > thresh) if ((lmax > Fw[lmax_bin - 1].real) && (lmax > Fw[lmax_bin + 1].real)) { cmax_bin = lmax_bin; } mult++; } best_f0 = (float)cmax_bin * SAMPLE_RATE / (PE_FFT_SIZE * DEC); return best_f0; } /*---------------------------------------------------------------------------*\ FUNCTION....: fdmdv_16_to_8() AUTHOR......: David Rowe DATE CREATED: 9 May 2012 Changes the sample rate of a signal from 16 to 8 kHz. n is the number of samples at the 8 kHz rate, there are FDMDV_OS*n samples at the 48 kHz rate. As above however a memory of FDMDV_OS_TAPS samples is reqd for in16k[] (see t16_8.c unit test as example). Low pass filter the 16 kHz signal at 4 kHz using the same filter as the upsampler, then just output every FDMDV_OS-th filtered sample. Note: this function copied from fdmdv.c, included in nlp.c as a convenience to avoid linking with another source file. \*---------------------------------------------------------------------------*/ static void fdmdv_16_to_8(float out8k[], float in16k[], int n) { float acc; int i, j, k; for (i = 0, k = 0; k < n; i += FDMDV_OS, k++) { acc = 0.0; for (j = 0; j < FDMDV_OS_TAPS_16K; j++) acc += fdmdv_os_filter[j] * in16k[i - j]; out8k[k] = acc; } /* update filter memory */ for (i = -FDMDV_OS_TAPS_16K; i < 0; i++) in16k[i] = in16k[i + n * FDMDV_OS]; } codec2-1.2.0/src/nlp.h000066400000000000000000000022611445607075400144170ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: nlp.c AUTHOR......: David Rowe DATE CREATED: 23/3/93 Non Linear Pitch (NLP) estimation functions. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2009 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __NLP__ #define __NLP__ #include "comp.h" #include "defines.h" void *nlp_create(C2CONST *c2const); void nlp_destroy(void *nlp_state); float nlp(void *nlp_state, float Sn[], int n, float *pitch_samples, COMP Sw[], float W[], float *prev_f0); #endif codec2-1.2.0/src/noise_samples.h000066400000000000000000055620071445607075400165050ustar00rootroot00000000000000/* unit variance complex noise samples */ /* Generated by write_noise_file() Octave function */ COMP noise[] = { {-1.885516, 0.055745}, {-0.521966, -0.622614}, {1.066249, 0.337187}, {0.425638, 1.008370}, {-0.318666, -0.210894}, {-0.498824, 0.361164}, {-0.300114, -0.527950}, {0.385872, 0.182296}, {1.195960, -0.586922}, {0.266811, 0.178374}, {0.013054, 0.215778}, {-0.823216, -0.322273}, {0.837766, -0.727259}, {-0.862485, 0.092857}, {0.075880, 0.633056}, {-0.410681, -0.646296}, {0.586237, -0.116673}, {-0.058715, 0.066528}, {0.857992, -1.043428}, {-0.123710, -0.261511}, {0.185764, 0.023376}, {0.236794, -0.527785}, {-1.703954, 0.502907}, {-0.299082, -0.422089}, {-0.288630, -0.675562}, {-0.424885, -0.319811}, {-0.032088, 0.101098}, {0.605509, 0.242926}, {0.145393, -0.199722}, {-0.184393, -1.528490}, {0.081268, -0.843421}, {0.654326, -0.158813}, {-0.234536, 1.226681}, {0.221648, -1.226646}, {-0.193938, -0.336096}, {-0.518051, -1.309855}, {-0.664323, 1.059784}, {0.007637, 1.113850}, {-0.465620, 1.714405}, {1.028837, -0.549814}, {0.073478, -0.721235}, {0.964658, 0.084118}, {-1.822765, -0.997525}, {1.032482, 0.916581}, {-0.597571, -0.136872}, {-0.009127, -0.208567}, {0.516709, -0.773967}, {-1.129711, 1.021948}, {-0.697322, -0.812202}, {0.327103, -0.638199}, {-0.497829, 0.319382}, {-1.362630, -0.414764}, {-0.307641, 0.207521}, {-0.982186, -0.198641}, {-0.588516, -0.097265}, {1.299202, 0.644097}, {-0.972070, -0.680644}, {0.782015, -0.002870}, {-1.177445, -1.014379}, {-0.398772, 0.513042}, {-0.666921, 0.266484}, {-0.803497, 0.971730}, {0.267153, 0.335670}, {-0.591532, 0.779734}, {-1.211656, -0.382351}, {0.065910, -0.504718}, {-0.686435, -0.584560}, {0.858992, -1.042560}, {0.847992, 1.057437}, {1.492562, -0.829278}, {0.816092, -1.530742}, {-0.520592, -0.549319}, {-0.076793, 0.021602}, {-0.697792, 0.763414}, {0.821960, 0.552985}, {0.376647, -1.094689}, {-1.401195, -0.857007}, {-0.376378, -0.783975}, {-0.120497, 0.662907}, {0.670862, -0.673604}, {-0.177972, -1.238774}, {-0.037790, -1.376598}, {-0.899490, -0.445965}, {0.474709, 1.022354}, {-0.291882, 0.370018}, {-0.072661, -0.118012}, {0.396912, -1.371327}, {-0.711547, 0.258054}, {-1.118704, -0.050908}, {-0.592657, -1.747229}, {-0.731285, -0.387065}, {-0.535939, -0.294046}, {-1.314716, -1.534715}, {0.361445, 0.618672}, {-0.082988, -0.336140}, {0.210252, 0.650233}, {-0.674824, 0.056007}, {0.596070, 0.007299}, {0.305633, -1.176059}, {1.659456, 0.424673}, {0.660546, -0.514937}, {-0.206967, 0.241885}, {-1.104655, -0.744576}, {-0.218762, 0.014955}, {0.165193, 1.381141}, {0.078718, -1.222328}, {-0.377642, -0.152884}, {0.108755, 0.412056}, {-0.429127, -0.383452}, {0.518805, 0.741250}, {0.740139, -0.770384}, {-1.485392, -0.336407}, {-0.078238, 0.141468}, {-1.271050, 0.180219}, {-0.211076, -1.217480}, {1.461947, 0.144679}, {-0.109724, -0.861360}, {-0.296620, -1.282399}, {0.201649, -0.713701}, {-0.156722, 0.424378}, {1.029760, -1.173706}, {0.571211, -0.156216}, {-0.455729, 0.236642}, {0.742660, 0.014606}, {-0.097202, -0.498742}, {0.266521, 0.048233}, {-0.060433, 0.282215}, {-0.239310, 1.006663}, {0.389689, -0.071960}, {-0.689538, 0.568830}, {0.759056, 0.330529}, {0.149945, -0.521060}, {-0.580738, -0.907159}, {1.448531, -0.054100}, {0.690290, 0.275166}, {-0.478557, -0.516261}, {-0.820324, -0.831472}, {-0.341231, 0.409044}, {0.180268, 0.231572}, {-0.450892, 1.061669}, {0.192718, -0.862400}, {-0.399038, 0.268735}, {-0.856262, -0.454883}, {0.363651, -0.198669}, {-0.642075, -0.189629}, {0.005932, -0.508157}, {0.985162, -0.020120}, {1.562916, 0.229486}, {-0.899449, 0.307419}, {0.112975, 0.627516}, {-1.857863, -1.008967}, {0.378419, 0.019322}, {0.443381, 0.253609}, {1.715317, -0.767294}, {-0.385770, 0.001505}, {-0.645703, -0.310651}, {-1.888905, 0.409068}, {0.805380, 0.333960}, {-1.046012, -0.674661}, {0.794386, -0.303931}, {-0.286721, 0.610492}, {-0.123797, -0.552424}, {0.206278, -0.663653}, {0.428624, -0.249450}, {0.430463, -0.635776}, {-0.119454, 0.773666}, {-0.578332, -0.980697}, {0.235559, 1.481441}, {-0.714737, -1.423728}, {0.350707, 0.157071}, {0.453768, 0.680754}, {0.283172, -1.286042}, {0.031254, -0.559665}, {-0.008719, -0.527750}, {-1.036011, -0.024812}, {0.392333, 0.647429}, {0.203090, 0.422197}, {-1.948977, 0.778356}, {1.366324, -0.798091}, {1.180139, -0.048221}, {0.114722, 1.012431}, {0.615604, 0.391601}, {0.987843, 0.495600}, {-0.496219, -0.900673}, {1.001277, -0.568435}, {-0.576352, -1.332582}, {0.306377, 0.123371}, {0.211114, -0.685042}, {0.298619, 0.362809}, {0.202382, 0.173210}, {-0.075417, -0.014578}, {-1.015379, -0.025271}, {0.128685, 0.929594}, {-0.723128, 0.984769}, {-0.536901, -0.125969}, {0.240670, 0.812981}, {-0.763511, 1.108132}, {0.500508, -0.241395}, {0.624663, -0.410191}, {-0.094272, -0.521839}, {1.429982, -0.369827}, {-0.070236, -1.263636}, {-0.498143, -0.973796}, {0.575172, -1.017724}, {0.487669, 0.215515}, {0.562802, -0.136995}, {-0.963325, -0.880169}, {-0.541808, -0.623215}, {0.613993, 0.303645}, {-0.604527, -0.329199}, {-0.331248, 1.331861}, {-1.040864, 1.077405}, {0.342707, 0.741436}, {-0.627839, -0.347768}, {0.231630, -0.578183}, {-1.128172, 0.396462}, {-0.198999, 1.538255}, {-0.177279, -0.290086}, {-0.687712, -0.894058}, {-0.124584, 0.925987}, {-0.602825, 0.432388}, {-0.111357, -0.496225}, {0.034978, 0.298642}, {0.324142, -0.092883}, {1.347456, 0.820678}, {0.674479, -0.288974}, {1.539829, -1.107841}, {-1.023161, 0.056007}, {0.317892, -0.963086}, {0.158138, 0.483226}, {0.340379, -0.422898}, {-0.813880, -0.882603}, {-0.322466, 0.829669}, {-0.217180, -1.046571}, {0.452658, 0.839521}, {-0.622912, -0.060398}, {-0.034008, -0.564055}, {-1.793271, -0.605655}, {-0.028383, 0.886204}, {-0.308408, 0.061571}, {0.536948, 0.120042}, {-0.574106, -0.562561}, {0.406051, -0.338068}, {0.492813, -0.083346}, {-0.711445, -0.455225}, {-0.061165, 0.217759}, {0.338502, -0.376511}, {0.832324, -0.406104}, {-0.083176, 0.715563}, {0.040608, -0.871143}, {-0.462891, 0.849255}, {-0.372708, -1.019345}, {0.934808, -0.626071}, {1.010369, -1.084185}, {0.479580, -0.842863}, {0.927175, 0.131809}, {-0.689773, -0.142861}, {1.343912, 0.404388}, {-1.759282, 0.448528}, {0.619114, -0.525565}, {-0.321018, 0.404425}, {-0.741470, -0.296394}, {-1.980475, 0.026427}, {-0.614688, 0.342918}, {0.066823, 0.132296}, {0.498182, 0.005019}, {0.182848, 0.162708}, {-0.493550, 0.153312}, {1.072346, -1.225466}, {1.139312, 0.832815}, {1.252850, 0.105664}, {-0.397363, -0.754276}, {0.580338, -1.300751}, {0.009278, -0.598071}, {0.402804, -0.530334}, {-0.039782, -0.370667}, {-0.990988, -0.169245}, {1.697751, -0.452739}, {1.272906, -0.324169}, {-1.567337, -0.459235}, {-0.798090, -0.024978}, {0.697111, -1.399949}, {0.110211, -0.941636}, {-1.480043, -0.132934}, {-1.148194, 0.987249}, {-0.873447, -0.209100}, {1.065186, -1.104929}, {0.099062, 0.126155}, {1.977617, 0.094483}, {-0.786564, -0.546020}, {-0.714383, 0.131073}, {0.905849, 0.394293}, {0.190777, -0.513831}, {0.437916, 0.203698}, {1.043923, 0.145473}, {-0.443628, -0.725054}, {0.983123, -0.489622}, {0.842413, 0.307580}, {-0.822191, -0.258379}, {-0.523631, 0.285446}, {0.571865, -0.025860}, {-0.201652, -0.099850}, {-0.022666, 0.495916}, {0.596392, 0.867633}, {0.804110, -0.338599}, {-0.026179, -1.043212}, {-0.598738, 0.094476}, {-1.478593, -0.541411}, {-0.941390, 0.363421}, {0.361994, 0.590341}, {1.113285, -1.212781}, {0.701988, 0.084937}, {-0.083600, -0.245951}, {-1.484694, -0.468464}, {0.162783, 1.536800}, {0.252869, -0.052530}, {0.926480, -0.277632}, {0.299984, -1.410909}, {-0.425939, -0.332244}, {0.464111, 0.662834}, {-0.802428, -0.324926}, {0.028548, 0.511754}, {0.140263, 0.200719}, {1.751965, 1.362158}, {0.773686, -0.044970}, {-0.098854, 0.668847}, {-0.356892, 1.006610}, {0.272827, 0.118268}, {0.294481, 0.308008}, {1.772151, 0.001790}, {0.399585, -0.223070}, {0.143887, 0.187282}, {-0.580062, 0.483563}, {0.263317, 0.146606}, {0.913153, 0.409123}, {0.176392, 0.531394}, {1.266576, 0.812919}, {-0.339609, -0.004748}, {1.029027, -0.899818}, {-0.770858, -0.547236}, {0.286743, -0.638120}, {-0.521747, -0.089493}, {-0.565535, -0.929156}, {-1.535774, 0.479567}, {-0.615287, -0.520953}, {-0.553663, -0.319031}, {0.582640, 1.113202}, {0.232977, 0.041975}, {-0.199109, -0.254687}, {-0.066200, 0.947135}, {0.666122, 0.627375}, {0.480019, 1.051260}, {-0.093472, -0.787448}, {0.480187, 0.926381}, {-0.857216, 0.556518}, {0.442832, 0.376201}, {-0.119017, -0.140136}, {-0.409616, -1.213675}, {-0.437294, -0.024768}, {0.451274, -0.787326}, {-0.533223, -0.923706}, {0.131233, 1.268746}, {1.743505, 1.131077}, {0.987317, 0.595257}, {-0.088862, 0.853512}, {0.551818, 0.665099}, {0.883782, 0.470033}, {-0.516423, -1.423524}, {0.091609, 0.378477}, {0.009939, 0.994809}, {1.045723, -1.221703}, {-0.276956, -0.093140}, {-0.409436, -0.171621}, {-0.964290, -0.362871}, {0.592260, 0.544377}, {-0.681616, -0.447483}, {-0.431291, 0.024446}, {0.663176, 1.026108}, {0.838537, -0.118180}, {-0.747318, 0.251341}, {-0.380034, -0.715319}, {-0.900635, 0.212346}, {-0.464843, 0.620745}, {-1.093005, 0.607958}, {0.515036, 1.299937}, {-1.016371, -0.029679}, {-0.205308, 0.148501}, {0.505373, -0.440794}, {-0.048557, -0.301057}, {-0.698358, -1.099303}, {-0.088257, -0.329308}, {0.075595, -0.362464}, {0.027192, -0.680106}, {-0.757238, -0.166757}, {-1.448321, -0.138835}, {-0.136439, 0.459323}, {0.912758, 0.296751}, {0.799521, -0.573520}, {-0.861892, -0.589343}, {-0.567036, 0.158120}, {0.478773, -1.056482}, {0.709261, 0.523567}, {0.739101, -1.002925}, {-0.494944, 0.003764}, {0.454782, -0.046268}, {0.210620, 0.297517}, {-0.781813, 0.236194}, {0.348782, -0.613968}, {-0.094413, -0.465826}, {1.768494, -0.406883}, {0.007841, 0.789725}, {-0.162655, 0.552781}, {-0.758330, 0.343804}, {0.454609, -0.732044}, {-0.168881, 0.095592}, {0.515566, -0.569084}, {1.255135, -0.757000}, {0.469649, 0.564189}, {1.260765, 0.360564}, {0.055027, -0.177677}, {0.600213, -1.511142}, {-0.018551, 1.257905}, {0.308072, 0.151081}, {-0.207634, -1.327921}, {-0.527733, 0.174325}, {-0.159456, -0.732546}, {-0.220168, -0.415477}, {0.543532, -0.145998}, {0.884459, 1.021665}, {-0.262540, -0.398469}, {-0.281570, 0.698927}, {-0.908972, -0.709079}, {1.589970, 0.503578}, {-0.171265, -0.741831}, {-0.743265, -0.294431}, {0.731885, 0.012954}, {0.007728, -0.499237}, {0.089515, -0.775161}, {0.725415, -0.411110}, {0.298849, -0.118750}, {-1.303123, 0.250206}, {0.310939, 0.936912}, {-0.172330, 0.754859}, {0.093154, 0.269182}, {-0.858640, -0.029252}, {-1.073149, 0.280686}, {-0.601430, -0.256738}, {-0.351531, -0.914084}, {-1.751136, -0.490966}, {0.112360, -0.656132}, {0.921817, -0.276350}, {0.763771, 0.769928}, {0.221840, 1.213251}, {-0.706608, -0.303978}, {0.281566, -1.404763}, {1.496795, 0.177279}, {0.261977, -0.939172}, {-0.919389, -0.188529}, {0.044503, 0.718759}, {-0.825230, 0.774033}, {0.693991, 0.858213}, {0.509792, 0.099608}, {-0.020553, -0.839990}, {-0.854648, -0.540134}, {-0.000525, 1.256322}, {0.894022, -0.693105}, {0.442684, -0.596914}, {0.498318, 0.275977}, {-0.388386, 0.465259}, {0.414579, -1.294942}, {0.098001, -0.237709}, {1.594870, -0.240582}, {-0.711413, 0.451491}, {0.019527, 2.133193}, {0.948900, 0.242084}, {0.059194, 0.584269}, {0.852393, -0.156332}, {-1.485739, 0.262110}, {-0.016760, -0.827316}, {-0.891646, 0.181925}, {-0.018801, 0.682929}, {-0.690712, -0.572420}, {1.070712, 0.423795}, {1.438766, 0.043977}, {-0.318368, -0.067348}, {-0.661371, -1.089229}, {0.046538, 0.984436}, {0.749236, -0.964548}, {1.566314, 0.918615}, {-1.235787, 1.002522}, {0.416022, 1.866776}, {1.217135, 0.668893}, {-0.698937, -0.486054}, {-0.478062, -1.168289}, {1.113613, -0.737028}, {0.773078, 0.234230}, {-0.270515, -0.411625}, {-0.228462, 0.192394}, {-0.838646, 0.153818}, {-0.436599, -0.408881}, {-0.286055, -0.410803}, {0.729377, -0.731766}, {0.197643, 0.237175}, {0.836606, 0.664076}, {-1.657439, 1.703306}, {-0.925155, -0.171418}, {0.078549, -0.331130}, {0.629470, 0.307286}, {1.248656, 0.135449}, {1.243601, 0.442489}, {0.387421, -0.154848}, {-1.179918, -0.732728}, {1.236507, 0.602991}, {0.372452, 0.171586}, {-0.394677, -0.101565}, {0.381677, 1.147393}, {-1.697199, 0.109712}, {0.188553, -0.752200}, {0.333632, -1.929951}, {-1.659946, 0.767602}, {-0.190815, -0.557146}, {-1.244192, 0.038106}, {0.077329, 0.305661}, {0.945212, 1.065261}, {-0.912713, 1.292797}, {-0.391785, -0.024158}, {0.240759, -1.304114}, {0.112919, -0.091566}, {-0.424359, -0.382424}, {-1.079261, 0.972243}, {0.454041, -0.530269}, {-1.976890, -0.123184}, {-0.190632, -0.544888}, {0.296577, -0.825026}, {-0.477747, -0.335360}, {0.208503, 0.097964}, {-0.579558, -0.380423}, {-0.414982, -0.344604}, {0.940711, -0.907772}, {-0.962894, -1.441203}, {-0.648064, 2.197827}, {-0.633787, -0.990602}, {0.215111, -0.181544}, {0.232828, -0.123360}, {-0.303892, 1.339899}, {-0.166969, 1.219343}, {0.508222, -0.102310}, {-0.811188, 1.126966}, {0.321233, -1.277579}, {0.007428, 0.316342}, {0.506948, 0.481229}, {-1.304547, 0.311991}, {0.142125, 0.263640}, {0.391351, 0.737307}, {1.437568, -0.534043}, {-0.949425, 1.069958}, {-0.409085, -0.759735}, {0.412259, 0.737801}, {-0.492377, -0.804608}, {-0.217219, -0.405020}, {0.115039, 0.000846}, {0.349041, 0.299516}, {-0.460594, 0.403723}, {0.196753, 1.155867}, {-0.277940, 0.266830}, {-0.274583, 0.585154}, {-1.172068, 1.790906}, {0.590439, -0.406621}, {1.328016, -0.283713}, {1.517565, -0.073409}, {0.130855, 1.772665}, {-2.619775, 1.072108}, {0.319751, 1.536673}, {0.047733, -0.326729}, {0.289634, 1.226698}, {2.014575, -0.883138}, {0.229264, -0.183602}, {0.589396, -1.070306}, {0.273592, -2.039844}, {-0.935323, -0.715785}, {0.849403, 0.619567}, {0.480466, -0.484123}, {0.222280, -0.134613}, {-0.258632, -1.289221}, {0.050742, 0.026907}, {-0.283583, 0.031728}, {-0.757978, 0.771411}, {-0.434361, 0.111156}, {0.021107, -0.043801}, {0.773835, -0.122289}, {-0.292605, 0.119946}, {0.501058, 0.447133}, {0.227193, 0.479879}, {-0.544627, -0.222938}, {0.583272, -0.387875}, {-0.223831, -0.468512}, {-1.520007, 0.446069}, {-0.573569, 0.226990}, {-1.019881, 0.053637}, {-0.634610, -0.875259}, {0.504476, -0.027282}, {-0.039342, 0.409377}, {0.202815, 1.231918}, {-0.843921, 0.164374}, {0.356392, -0.821357}, {0.108781, -0.523469}, {-0.196590, -0.568744}, {0.903934, 1.041689}, {-0.544910, -0.022931}, {0.299150, 1.544291}, {0.880525, 0.454125}, {-0.528507, -0.169262}, {-0.683196, -0.079160}, {0.153998, -0.420623}, {0.324243, 0.022550}, {0.099578, 1.237426}, {0.613243, 0.648504}, {-0.190038, 0.945184}, {-1.058645, 0.829361}, {0.657373, -0.037085}, {0.292522, -1.824963}, {1.306603, 0.982009}, {0.202489, -0.632477}, {-0.198865, 1.503029}, {-0.506292, 0.002522}, {0.709691, 0.107836}, {-0.135288, -0.949001}, {-0.013697, 0.446746}, {0.269863, 1.736851}, {0.147020, -0.676663}, {-0.044332, 0.878172}, {-0.969214, 0.385042}, {-0.108626, -0.577699}, {0.573041, -0.693982}, {-0.430415, 1.253413}, {0.106646, -0.057892}, {-0.946692, -0.108739}, {-0.070615, -0.924246}, {-0.407323, -1.048572}, {0.541592, -0.183877}, {1.559869, -0.734420}, {-0.667415, -0.567982}, {0.194163, -0.030077}, {0.088646, 0.226636}, {0.502396, -1.399375}, {-0.016646, -0.215656}, {0.348238, 0.112063}, {1.303715, 0.470275}, {-0.665134, -0.786941}, {0.470438, 0.135527}, {-1.337204, 0.482771}, {-0.535810, 0.980521}, {-0.168026, -0.750603}, {0.387649, -0.230317}, {-0.100852, 0.278379}, {0.685615, 0.909829}, {-1.248533, -0.401446}, {0.402464, 1.846549}, {0.119498, 0.304702}, {0.717501, -1.078118}, {-0.450438, 0.775426}, {-1.459832, -0.482867}, {0.328487, -0.012362}, {-0.126026, 0.086507}, {-0.630993, 0.029377}, {-1.326625, 0.927913}, {-0.198820, 0.150652}, {0.266277, -0.555360}, {0.424295, -0.359816}, {1.393099, -0.408979}, {-0.137465, 0.133084}, {0.628200, -0.501458}, {-0.684531, -0.666955}, {-0.181920, 0.890694}, {-0.700720, -0.956197}, {-0.060714, -1.247294}, {-0.405972, -0.881525}, {1.118188, 0.072000}, {-0.195761, -1.868639}, {0.358203, 0.349429}, {0.154352, -1.476324}, {-0.210438, -1.836233}, {0.277728, 0.211249}, {0.104063, 1.608697}, {0.078646, -0.690233}, {1.107666, 0.152621}, {0.976973, 0.132356}, {0.625021, 0.424496}, {1.106620, -1.108251}, {-0.606551, 0.611908}, {-0.079978, 0.362614}, {0.450618, 0.582625}, {-0.256559, -0.109762}, {-1.029120, -0.607627}, {0.030983, 0.226229}, {0.466365, -0.698225}, {-0.320317, 0.232588}, {-0.294836, 0.215016}, {0.380833, 0.902802}, {0.179398, -0.539814}, {-0.750583, -0.650149}, {-0.528202, 0.616827}, {-1.363519, -1.202585}, {0.284990, -1.236363}, {0.243581, -0.864788}, {0.624023, 0.137801}, {-0.032040, -0.595454}, {0.518910, 0.207927}, {-0.623962, 0.216663}, {-0.382311, 0.684690}, {-1.561598, 0.901426}, {0.426931, 1.278804}, {0.332361, -0.658982}, {0.181141, -0.012956}, {0.171052, 0.552234}, {-0.435677, 0.454231}, {-0.919015, 0.176359}, {-0.000067, -0.799626}, {-0.930220, -0.187525}, {-0.452119, -0.228146}, {0.380184, -0.566153}, {-0.179594, 0.470684}, {0.176167, -0.917050}, {0.002315, 0.589605}, {1.252774, 0.206557}, {-0.284561, -1.124914}, {0.174024, 0.351072}, {-0.838853, 1.170720}, {-0.067488, -0.254230}, {-0.622343, -1.414225}, {0.436853, 0.611763}, {-0.128391, 0.096025}, {-0.819464, -0.451713}, {-0.165038, -0.122421}, {0.024147, -1.314003}, {0.304931, 0.164088}, {-0.288640, -0.620373}, {0.357003, 0.454057}, {-1.286647, 0.415088}, {1.849891, 0.616365}, {-0.185972, -1.212797}, {-0.415794, -0.401859}, {-0.431783, -0.137922}, {0.768623, -0.292081}, {0.012545, 1.445239}, {-1.689607, -0.394403}, {0.152052, -0.025210}, {-1.765495, 0.816127}, {0.035743, 0.371073}, {-0.218734, -0.149507}, {1.291120, -1.111594}, {-0.374380, 0.070194}, {-0.903368, 0.788305}, {0.867657, -0.973921}, {0.913874, 0.430432}, {-0.121419, 0.832404}, {-0.415312, 1.135312}, {-0.393487, -0.150178}, {-0.079568, -0.565870}, {1.522292, 0.090401}, {-0.334966, 0.599134}, {0.515824, 0.178857}, {-0.199075, -0.457595}, {0.246401, -0.054357}, {1.396896, -1.363043}, {-0.027178, -0.553311}, {1.010836, 0.249187}, {0.075435, 0.009485}, {-0.217608, 1.185129}, {-0.522616, 0.556410}, {0.858783, -0.313273}, {-0.001036, -0.621413}, {0.960607, -1.149066}, {-0.521696, 0.268324}, {-0.517445, -1.383789}, {0.305025, 0.761437}, {0.031777, -0.095862}, {-0.795680, -1.512038}, {0.033550, -0.338430}, {-0.398340, -0.145735}, {-0.322545, 0.322695}, {0.372049, -0.610750}, {-0.137179, -0.590167}, {-0.504190, -0.258481}, {-0.335035, 0.338316}, {-0.364893, 0.692466}, {0.038100, -0.724327}, {0.296797, 0.135183}, {0.159604, 0.214980}, {0.250361, -0.215980}, {-0.347541, 0.122078}, {-0.056809, 0.890072}, {0.285375, 0.181473}, {0.170715, -0.393356}, {-1.015282, -0.208756}, {-0.785738, 0.483868}, {0.007467, 1.387720}, {-0.178938, 0.754625}, {0.664808, -0.600883}, {0.001036, -0.083353}, {0.194157, 0.160494}, {1.084332, -0.062428}, {0.349357, 0.373911}, {1.433766, -1.303837}, {0.037403, 2.429277}, {0.395728, -0.834206}, {-0.389085, -0.755077}, {0.850327, 0.007645}, {-0.368104, 0.126990}, {-0.775816, -0.923819}, {-0.537167, 0.945156}, {0.142793, 1.312552}, {-0.125607, 0.032723}, {-0.137840, -0.002817}, {0.742073, 0.013517}, {0.251125, -0.528226}, {0.820089, -0.035605}, {-0.713914, 0.167522}, {-0.863981, -0.178499}, {-0.390476, -0.120624}, {0.583901, -0.243569}, {-0.227909, 0.309306}, {0.324491, -0.693688}, {-1.094183, 0.252179}, {0.192052, 0.039188}, {-0.267150, -0.444016}, {-0.005890, -0.573760}, {-0.232266, -0.276434}, {0.382483, 0.162194}, {0.150483, -0.651730}, {0.067169, 0.902480}, {-2.098348, 0.945188}, {0.825451, 1.329186}, {-0.815597, -1.181818}, {0.461014, -0.678300}, {-0.711512, 0.009708}, {0.260361, 1.191568}, {0.185182, -0.338544}, {0.478590, 0.221720}, {0.624523, 0.990393}, {-0.706888, 0.014106}, {1.173506, -1.110449}, {-0.091258, -0.061557}, {1.120091, 1.816875}, {-0.989880, -1.531038}, {0.692417, -1.128270}, {1.716773, 0.088070}, {1.162503, 0.054400}, {0.810364, 0.272585}, {-0.013515, -0.520286}, {-0.730928, -0.950759}, {0.008127, 0.539806}, {-1.317219, 0.544458}, {0.781036, 0.503169}, {-0.335197, -0.425765}, {-0.735000, -0.347362}, {0.528729, 0.365142}, {-0.617825, 0.301920}, {0.910278, -0.760821}, {-0.709713, -0.356227}, {0.953397, 0.042611}, {0.086349, -0.037081}, {0.171876, 0.033586}, {1.106060, -0.413432}, {-0.408955, 1.259989}, {0.072173, 1.348382}, {0.650744, 0.132067}, {0.241760, -0.334014}, {-0.088343, 0.502032}, {-0.043052, 0.355098}, {-0.313450, 0.269137}, {-0.329212, -1.672112}, {-0.207438, -0.117867}, {0.366077, -0.234852}, {0.411392, -0.008275}, {0.353902, 0.251566}, {-1.477623, 0.757765}, {0.654771, -0.149077}, {0.076332, -0.376470}, {-0.879182, -0.887672}, {0.125407, 1.010632}, {-0.871182, 0.304759}, {0.194266, -0.223159}, {0.060104, -0.953143}, {-0.045438, 0.534938}, {0.615844, 0.411408}, {-0.374972, -0.055209}, {-0.253019, 0.383784}, {-0.891703, -0.218474}, {-0.706804, 0.115545}, {-1.026031, 1.389687}, {-0.462136, 0.335579}, {-0.773215, -0.951771}, {-0.779558, -0.464746}, {0.476106, -0.777170}, {0.664543, -0.569407}, {0.214316, 0.063090}, {-0.569488, -0.008396}, {0.750912, -0.739441}, {0.214514, 0.148096}, {-0.198354, 1.474815}, {-1.805212, -0.107083}, {0.169518, -0.786940}, {-0.409644, 0.852013}, {-0.221826, -0.037541}, {0.253388, -0.616419}, {-1.774513, -1.460955}, {0.742875, 0.456503}, {-0.232420, -1.359596}, {-0.507235, -0.763391}, {0.195227, 0.320688}, {-0.224637, -0.845635}, {1.009627, 0.163178}, {0.778218, -1.096235}, {0.865546, 0.293077}, {1.466179, 0.233799}, {0.226625, -0.545274}, {0.692166, -0.527514}, {0.013789, 0.635607}, {0.807891, -0.801895}, {-1.053395, 0.465520}, {-0.036991, -1.273551}, {-0.589794, -0.753839}, {-0.030564, -0.036160}, {0.155678, -1.045183}, {0.625342, -0.595545}, {0.036864, -0.046397}, {-0.004179, -0.652544}, {-0.820676, 0.620457}, {-0.183887, 0.725946}, {-0.166238, -1.560859}, {0.175907, -1.429565}, {-0.020052, 0.815148}, {-0.197063, -1.522027}, {0.813251, -2.196093}, {-1.334144, -0.008865}, {0.412217, 0.219281}, {-0.080738, -0.419816}, {0.192626, -0.493562}, {-0.370266, -1.389646}, {-0.030379, 0.021337}, {0.496641, 0.294285}, {-0.416795, 0.418699}, {0.195812, -0.707197}, {0.122865, -0.525780}, {-0.610908, -0.373378}, {-0.177131, -1.018769}, {0.403266, 0.457369}, {-0.288750, 1.777459}, {-0.606019, 0.137316}, {0.164513, 1.727904}, {0.911565, -0.299473}, {-0.493145, 0.145941}, {0.279365, 0.579905}, {0.452409, 1.222730}, {-0.329814, 0.070742}, {-0.098010, -0.289855}, {1.204663, 0.662790}, {-0.493696, 0.573452}, {-0.938748, -0.639465}, {-0.739078, 1.243613}, {-0.343832, 0.558003}, {0.027203, 0.055290}, {-0.170201, 0.729385}, {-0.878156, -1.902973}, {0.690907, 1.079256}, {0.028972, 0.634171}, {-0.155383, 0.545055}, {-0.431928, 0.330613}, {-0.635781, 0.072453}, {0.615176, 0.308009}, {0.104105, -0.205818}, {0.415076, 1.103903}, {-0.024480, 0.212016}, {0.664855, -0.116184}, {0.652496, -1.192114}, {0.695982, -0.080428}, {-0.526819, -0.078349}, {1.742119, 0.556368}, {-0.153092, 1.204460}, {0.311190, 0.421990}, {0.938121, 1.025194}, {0.156598, -0.031073}, {0.224118, 0.600692}, {-0.051218, 0.216583}, {-0.842484, 0.468331}, {0.407989, 0.450259}, {-0.949113, -1.564583}, {-0.434143, 0.325978}, {0.747291, 2.322704}, {0.737442, 1.246064}, {-0.762481, -0.758876}, {0.729215, 0.853799}, {-0.908589, -0.622078}, {-0.598447, 1.603107}, {-0.959017, 0.214551}, {0.536470, -0.187251}, {0.530038, 0.557070}, {-0.247256, 0.391664}, {0.445570, 0.089350}, {1.499768, -0.418437}, {0.800986, -0.273838}, {0.177952, -1.141694}, {1.090844, 1.147880}, {0.084762, -0.180105}, {-0.464588, 0.255076}, {-0.710487, -0.422911}, {-0.159879, 0.388722}, {0.919932, -0.041034}, {-0.515947, -0.139864}, {-0.432913, -0.527550}, {-0.275296, -1.159533}, {-0.136299, 0.789806}, {-0.464789, -0.109964}, {0.939702, -0.027732}, {0.197460, 0.125553}, {0.360497, -0.081121}, {-1.038393, 0.917326}, {-0.562256, -0.247960}, {-0.506010, 0.057694}, {-0.061158, 0.007115}, {1.085933, 0.036530}, {0.782551, 0.730841}, {-1.730593, -0.649685}, {1.033557, 0.042674}, {1.004293, -0.582702}, {-0.588062, 1.893153}, {-0.038458, -0.489328}, {-0.223353, 0.176598}, {-0.602039, -0.177264}, {0.484092, -0.207521}, {0.131809, 0.406690}, {-0.420236, 2.391833}, {-1.389783, -0.697870}, {-1.051676, 0.985787}, {1.027283, 0.026054}, {-0.193866, 0.459321}, {-0.237210, -0.168983}, {0.034746, 0.785979}, {1.228488, -0.966549}, {1.189960, 0.910590}, {0.215783, -0.132182}, {0.865491, 1.580951}, {0.342861, -1.317527}, {-0.347129, 0.117582}, {0.477505, 0.073989}, {-0.330732, -0.626076}, {-0.383103, -1.051103}, {-1.127629, 0.266550}, {0.077820, 0.478365}, {0.979591, -0.218870}, {-0.666472, 0.081770}, {-0.846640, 0.983632}, {-0.481019, 0.374114}, {0.076811, 0.167969}, {-1.276667, -1.056656}, {0.884138, 1.533002}, {-0.422899, 0.149947}, {-0.471814, 0.310129}, {-0.294613, 0.138715}, {-0.917606, 0.974627}, {0.338625, 0.106750}, {-0.447939, -0.094187}, {0.404872, 0.074803}, {-0.759799, -0.426123}, {-0.788273, 0.712513}, {-0.021566, -0.188178}, {-0.162962, -1.214495}, {0.093791, -0.540991}, {-0.961095, 0.434286}, {0.353384, -1.489342}, {0.292430, -1.036190}, {0.150482, -0.471052}, {0.149233, -0.987746}, {-0.432685, 0.980449}, {-0.738729, 0.443044}, {-0.038329, 0.068701}, {1.188859, -0.898705}, {-1.250213, -0.076530}, {-0.526824, 0.334444}, {-0.464058, 0.049049}, {-0.642591, -0.525583}, {0.192584, -0.630311}, {0.437306, 0.681520}, {0.487855, 0.369540}, {0.641239, -0.574243}, {0.371964, -1.021879}, {-1.041124, 0.131275}, {-0.691663, 0.998510}, {0.546112, 0.831658}, {1.393481, -0.148050}, {1.262175, 0.248708}, {0.540609, -0.336198}, {0.041225, -1.024662}, {-0.177173, -0.224147}, {0.867867, -0.187578}, {-0.967667, -1.219234}, {0.213381, -0.057988}, {-0.675667, -1.091565}, {0.556298, -0.770728}, {-0.188682, 0.656382}, {-0.092475, 0.407926}, {-1.641683, 0.484862}, {0.190082, -0.330329}, {0.174209, -0.676685}, {-0.950743, -0.193766}, {-0.435225, -0.580076}, {0.246472, -0.472847}, {-0.505688, -0.759662}, {-1.255934, -0.736332}, {1.935964, 0.332194}, {-0.500932, 0.083885}, {-0.067564, 0.231471}, {-0.379280, 0.846503}, {-0.030848, -0.246677}, {0.125241, -0.397222}, {-1.137543, -0.555543}, {-0.122221, 0.387840}, {2.042492, -1.202247}, {1.772027, 0.326225}, {-0.550197, 0.205095}, {0.450376, 0.791456}, {-0.506594, 0.069919}, {-0.063568, 1.032985}, {-0.621426, -0.028421}, {0.043761, -1.038331}, {-2.012759, -0.886260}, {-0.144653, -0.613454}, {1.042293, -0.047165}, {-0.059067, 0.116286}, {0.148872, -0.095572}, {-0.573228, -0.480453}, {-0.200914, -1.046460}, {-0.824112, 1.568436}, {-0.133283, -0.288869}, {0.597348, 0.377234}, {-0.505799, 1.227439}, {-0.606898, 0.148651}, {-0.583873, -1.081077}, {-0.347056, 0.271253}, {0.784106, 0.033133}, {0.184385, 0.180992}, {0.378686, -0.264273}, {1.264891, 1.156455}, {-0.180967, 0.378180}, {1.185364, 2.147560}, {-0.443654, -0.290601}, {-1.069806, 0.508735}, {1.608167, 1.233684}, {-0.794538, 0.519840}, {-0.078219, 1.219228}, {0.334451, -0.046541}, {-0.666285, 0.564027}, {-0.577876, -0.550521}, {-0.000416, -0.584869}, {0.624742, -0.128862}, {-0.205674, -0.383454}, {-0.377425, 0.710460}, {0.086861, -1.107777}, {0.781845, -0.797178}, {0.153671, 0.734022}, {0.009617, -0.036667}, {0.752946, 1.007603}, {0.471233, 0.459138}, {-0.821665, -0.267974}, {-0.924172, 0.593227}, {-0.364922, 0.183033}, {0.503286, 0.374220}, {0.817608, -1.185941}, {-1.068648, 0.590834}, {-0.100083, -0.975689}, {0.801345, 0.166370}, {0.878885, 0.514705}, {-0.707014, 0.403084}, {0.827796, 0.483292}, {-0.975586, 0.279704}, {0.362153, 1.075430}, {0.799974, 0.002309}, {0.676713, -1.092933}, {1.578438, 0.276312}, {0.110806, -1.246881}, {-0.865309, 0.165009}, {-0.282162, 0.733062}, {-0.990404, -0.702353}, {0.121363, 0.147771}, {0.038031, -0.195024}, {0.138621, 0.371235}, {0.142721, 0.021207}, {0.268035, -0.692454}, {0.945280, -0.180407}, {-0.253126, -1.299034}, {0.215126, 0.964959}, {0.214474, 0.039968}, {-0.315065, 1.317935}, {-0.495310, 0.013483}, {0.470253, 0.354208}, {-0.089794, 0.245806}, {-0.208178, 1.288801}, {0.753819, -0.739573}, {-0.885257, -0.056685}, {0.478816, 0.673381}, {0.388771, 0.612329}, {-0.820496, -1.297063}, {-1.437975, 0.521158}, {0.271222, -0.170637}, {-0.400573, -0.022383}, {-1.216831, -0.194283}, {1.347498, -0.865849}, {1.490747, 1.638422}, {-0.066047, -0.399105}, {-0.420802, 1.133171}, {0.135157, 1.573802}, {0.541187, 0.894018}, {1.510389, 0.809415}, {0.881448, -0.730401}, {0.296695, -0.733757}, {0.339736, -1.370242}, {0.274695, 0.252843}, {-1.281780, 0.313851}, {1.274502, -0.466039}, {0.808820, -0.486975}, {0.817662, 0.485549}, {-0.095951, 0.029602}, {-0.110720, 0.676979}, {1.202230, 0.782503}, {0.323406, -0.119733}, {-0.284233, 0.460801}, {-0.138012, -0.172029}, {0.660058, -0.652850}, {0.681055, 0.587900}, {1.034573, -1.401681}, {-0.803681, 0.663399}, {0.279558, -1.726715}, {-0.064446, -0.133818}, {0.111129, -0.818469}, {-0.109438, 0.108017}, {0.655329, -0.214051}, {-0.182692, 0.983672}, {-0.386961, -0.148666}, {-0.520381, 0.408330}, {-0.277355, 0.529608}, {-0.227798, 1.212313}, {0.286884, 1.328657}, {0.330357, 0.676798}, {-0.386855, -0.073008}, {-0.005346, 0.643306}, {-0.408125, -0.611805}, {-1.344349, 1.214852}, {0.280046, 0.328383}, {0.193258, 0.841163}, {0.688097, 1.470022}, {-0.543274, 0.871549}, {-0.243657, 0.867887}, {0.031152, 0.192752}, {-1.158627, -1.398383}, {-0.797943, -0.620853}, {0.551211, -1.681158}, {0.057558, -1.031877}, {-1.029493, 0.639438}, {0.099115, -0.246357}, {0.343168, 0.265658}, {1.188859, 1.031717}, {0.126086, 0.836314}, {-0.606482, 0.051107}, {0.162957, -0.781010}, {-0.462344, -0.438913}, {-0.539638, 0.657519}, {0.022154, 0.230604}, {-0.843574, 0.180764}, {0.398755, -0.125898}, {0.299966, -0.155337}, {1.022899, -0.742968}, {-0.807121, -0.640128}, {-0.392841, -0.596371}, {-0.360295, -1.003922}, {0.679328, -0.665397}, {-0.072668, 1.290516}, {-0.280499, -0.949490}, {0.111927, 0.581514}, {-1.363240, -1.343656}, {-1.084450, 0.050768}, {-0.385367, -0.565308}, {0.202467, -1.237126}, {-0.242867, 0.417895}, {-1.545462, -0.660856}, {-0.215712, 0.754475}, {0.950926, 0.189388}, {-0.907607, -0.356709}, {-0.018424, -0.492529}, {0.592479, -0.228064}, {-0.666301, -0.997495}, {0.316365, 2.371218}, {0.234107, -0.170388}, {-0.382072, -0.617266}, {0.008455, 0.054220}, {0.391055, -0.070040}, {-1.131104, 0.097647}, {0.114958, 0.491805}, {-1.828644, 0.079717}, {1.282146, 0.110291}, {0.357302, -0.071632}, {-1.285120, -0.698425}, {-0.620723, 0.250825}, {-1.580495, 0.607744}, {-0.310391, 0.023209}, {0.659152, -0.517724}, {0.722716, 0.407689}, {-0.310078, 0.307880}, {-0.515929, -0.421393}, {0.481648, -0.771808}, {-0.613531, -0.311456}, {-0.557038, 0.487850}, {0.240958, 1.033137}, {-0.411849, -0.652721}, {-1.414977, 1.570391}, {0.198022, 0.143388}, {-0.665199, 0.006710}, {-0.125512, 1.145256}, {0.939666, -0.184737}, {1.254756, 0.210233}, {-0.414391, -1.647095}, {0.149630, 0.144509}, {0.288296, 0.362648}, {-0.017046, 0.108292}, {0.500758, 1.194654}, {-0.132504, 0.838117}, {0.436872, -1.259608}, {0.185786, -0.150289}, {0.570040, -0.268047}, {-0.924944, 0.709866}, {0.460708, -0.753595}, {1.505297, 0.124422}, {0.070403, 0.380217}, {-0.453289, -0.844383}, {0.339141, 0.421633}, {-0.276216, 0.254737}, {-0.740343, 0.477980}, {-1.140554, 0.373471}, {-0.619092, -0.126768}, {-0.106514, -0.394367}, {1.219767, 0.408088}, {0.570849, 0.749630}, {0.279189, 0.802048}, {-1.761637, 0.917490}, {-0.125839, -0.480779}, {-0.716519, -1.313543}, {-0.886599, 1.677483}, {0.471796, 0.455429}, {0.472861, -0.700399}, {0.630634, 0.789490}, {0.388011, 0.023963}, {0.160770, -0.328353}, {0.684503, -0.912411}, {-0.613712, -0.942848}, {0.187679, -1.243436}, {-0.303386, 0.183180}, {-0.430191, -0.919399}, {-0.486669, 0.017418}, {-0.196664, -0.596788}, {-0.016898, -0.305134}, {-1.003277, 0.875101}, {0.016353, -0.323237}, {0.821922, 0.531172}, {0.068244, -1.142754}, {0.564201, -0.493468}, {-0.108778, -0.451831}, {-1.104421, -0.533559}, {-0.190109, 1.354647}, {-1.625892, -0.106572}, {0.053986, 0.048085}, {-0.078443, -0.504104}, {-0.981755, 0.138946}, {-0.089922, 0.305097}, {-2.134689, -0.514083}, {-0.557133, 1.367571}, {-0.124624, 0.607339}, {-1.498195, -1.186483}, {-0.872943, -0.334031}, {0.433069, 0.253202}, {0.748849, 0.097565}, {0.431413, -0.732537}, {0.468929, 0.578734}, {-1.277818, 0.672101}, {0.471820, -0.460997}, {0.494373, 0.102286}, {-0.141118, 0.866229}, {-0.347544, -0.467992}, {-0.772585, 0.634551}, {-0.968830, -0.935472}, {-0.019241, 0.227594}, {-0.813687, 0.776289}, {-0.124640, 0.511015}, {0.045039, 0.998667}, {0.160430, -0.284327}, {-0.252488, -0.276808}, {-1.446518, -0.593809}, {0.444264, -0.215641}, {-0.495694, 1.313423}, {0.233200, 0.628049}, {1.058397, -0.209975}, {-0.631813, 0.212791}, {0.724289, 0.730092}, {0.766557, 0.140992}, {-0.422498, -0.065908}, {0.759667, -0.394613}, {-0.280825, -0.249983}, {-0.334594, -0.099555}, {-0.100845, -0.279454}, {-0.631641, -0.001709}, {-0.390891, 0.591299}, {-0.614147, -0.867562}, {0.794232, 0.262570}, {-0.855585, -0.445803}, {0.137634, -0.208739}, {0.735539, -0.285394}, {0.254964, -1.231606}, {0.529011, 0.143706}, {1.430450, -0.392117}, {0.441543, -0.753268}, {-0.215594, 0.692776}, {0.235193, 1.031127}, {-0.658717, -0.573607}, {-0.945679, -1.445653}, {-0.416275, 0.659500}, {0.907194, 0.304227}, {-0.031342, 0.374716}, {0.005759, -0.770302}, {-0.877440, -0.213883}, {-0.710438, -0.089993}, {-0.417193, -0.780149}, {0.281753, -1.127371}, {0.074096, 0.751776}, {-1.369300, -0.313873}, {0.975236, -0.674780}, {-0.395840, 0.453994}, {0.229087, -0.431998}, {0.686648, -0.040472}, {-1.932872, -2.114067}, {-0.053147, 0.889797}, {1.557776, 0.187376}, {-0.177372, -0.372058}, {-0.145758, -0.406644}, {0.893661, -0.736872}, {0.699794, -0.837986}, {0.562408, -1.315862}, {0.248331, 0.796103}, {-0.974681, -0.545749}, {-0.633997, -0.920930}, {-0.653344, -0.148806}, {-0.278669, -1.016823}, {0.990752, 0.282628}, {-0.002135, 0.295268}, {0.247889, -0.002233}, {0.299683, 0.464098}, {-0.348562, 0.234081}, {-0.653547, 1.042115}, {1.427451, -0.211486}, {-0.249740, 0.299611}, {0.236624, -0.236593}, {0.361321, -0.011710}, {0.225996, -0.116814}, {0.665416, -0.154760}, {-0.343271, 0.309692}, {0.214282, 0.840876}, {0.436174, 0.465315}, {0.491642, -0.396010}, {-0.840432, 0.546308}, {-0.484284, -0.253952}, {-0.674070, 0.614429}, {-1.132196, 0.300718}, {-0.686720, -0.668618}, {-0.209752, -0.193816}, {-0.864450, 0.711636}, {-0.704162, 0.080921}, {-0.281052, -0.711402}, {0.476961, -0.296571}, {-0.567590, 0.120557}, {1.206292, -0.739669}, {0.073467, 0.983447}, {-0.761649, -0.205547}, {-0.101813, -0.757212}, {-0.036924, -1.095216}, {-0.203280, 0.087312}, {0.419187, 0.045301}, {-0.128742, 0.611231}, {0.002422, -0.752412}, {0.674792, 0.880037}, {-0.130573, -0.395283}, {0.043261, 0.842507}, {0.744393, 0.440538}, {0.327633, 0.077634}, {-0.173323, 1.100831}, {-0.364820, 0.190809}, {-0.929120, 0.340176}, {0.083238, -0.252833}, {-0.812169, 1.206466}, {-0.658568, 0.595224}, {-1.328600, 0.526328}, {-2.155765, 1.269370}, {-0.046160, -0.114023}, {0.293193, -0.938083}, {-0.254478, -1.169655}, {0.586072, 0.064899}, {-0.826939, 0.519365}, {0.000194, -0.042804}, {0.703387, 0.425636}, {-0.071028, 0.344410}, {-0.690411, -0.426178}, {-0.305423, -0.957584}, {0.565793, 0.471864}, {0.572453, -1.210154}, {-0.176756, -0.543416}, {-0.122719, 0.142358}, {0.041164, -0.689254}, {0.488677, 0.046068}, {0.272934, -0.298194}, {0.056580, -0.113747}, {-0.586258, -0.393607}, {0.449298, 0.411649}, {0.222406, 0.339896}, {-0.259049, 0.537135}, {-0.162509, 1.788969}, {0.261787, -1.022771}, {0.342338, 0.185518}, {0.579314, -0.173051}, {-0.141523, -0.044285}, {0.193116, -0.235134}, {-1.353094, -1.018692}, {-0.436509, 0.480147}, {0.110273, 0.018753}, {-0.074405, 0.256683}, {-0.246641, -0.072741}, {0.193535, 0.110739}, {0.236249, 0.450123}, {-1.328284, 0.200608}, {0.203875, 0.971534}, {0.140868, 0.836049}, {-1.180779, -0.571187}, {0.352527, -0.941286}, {-0.603336, 1.499530}, {-1.722024, -0.622489}, {-0.665516, 0.309695}, {-0.196527, 0.388266}, {0.748597, 0.328682}, {-0.700676, -0.457945}, {0.241755, 0.916166}, {-1.055948, 0.612258}, {-0.088514, -1.051597}, {-0.666181, -0.503929}, {-0.373979, 0.896727}, {-0.372882, -0.074176}, {-0.109262, 0.026398}, {0.140324, 0.378864}, {-0.019849, -1.097344}, {0.235596, -0.286668}, {0.782230, -0.389778}, {0.013781, -0.571368}, {0.789306, 0.647173}, {0.630138, 0.773210}, {0.750400, -1.183298}, {-0.682019, -1.609188}, {0.896088, 0.067930}, {0.420614, -0.078741}, {-1.496000, 0.450049}, {-0.863680, -0.475229}, {-1.423561, -0.224888}, {0.024832, -0.453597}, {0.737548, 0.300150}, {-0.738513, 0.671116}, {0.789577, -0.557279}, {0.667659, -0.837533}, {0.440875, -1.043855}, {-0.051215, -1.357721}, {0.359163, -1.468140}, {-0.336103, -0.186086}, {-1.253254, 0.917832}, {-0.307426, 0.767409}, {-0.567196, 0.228002}, {-0.028435, 0.944140}, {0.222374, 0.474538}, {1.165054, -0.954027}, {0.925421, 0.519574}, {-0.072758, -0.302302}, {0.298489, 0.526333}, {0.559091, -0.004799}, {0.661053, -0.291473}, {0.589520, -0.043129}, {0.486342, -0.102644}, {0.399697, 0.607928}, {-1.591074, 0.238188}, {0.864441, 0.826969}, {-0.717594, 0.995645}, {0.335125, 1.336621}, {-0.374524, 0.390990}, {-0.010197, 0.428746}, {-0.061779, 0.352761}, {-1.529446, -0.080619}, {0.588116, 1.395893}, {-0.455056, 0.445153}, {-0.217297, 1.396009}, {-0.657833, -1.016368}, {-1.806291, 0.038937}, {0.002294, -0.394349}, {-0.774411, 1.119519}, {-0.807535, 0.342889}, {-0.122509, 0.143458}, {-1.612262, 0.133762}, {-0.704500, -0.634429}, {0.421355, 1.477149}, {-0.346425, 1.488303}, {-0.320905, 1.385086}, {0.517736, 1.018882}, {-0.698406, -0.561933}, {0.455363, 1.519318}, {-1.529130, -0.417045}, {1.090679, 1.108610}, {0.054188, 0.538953}, {0.034975, 0.942247}, {1.127053, -1.169750}, {0.347556, 0.169247}, {-0.388350, -0.124856}, {0.119545, 0.172064}, {0.335029, -0.074899}, {-0.071492, 0.385402}, {0.701349, 0.030827}, {0.272265, 0.385385}, {-1.295989, -0.440285}, {-0.016185, -0.292499}, {-0.425862, 0.192669}, {-0.474981, 1.023225}, {0.378090, -0.085647}, {-1.380673, -0.172079}, {0.267498, -0.609266}, {-0.174361, -0.720071}, {-0.903868, 0.497839}, {-0.754455, 0.498984}, {0.333531, 0.300701}, {0.570416, 0.121552}, {-0.856487, 1.273007}, {0.864065, 0.677483}, {-0.359296, -0.764656}, {0.373897, -0.165979}, {0.004695, 1.059938}, {-0.205988, 0.159122}, {0.240554, -0.757747}, {-2.731705, -1.090066}, {0.196211, -0.214263}, {-1.060994, 0.303117}, {0.065935, -1.370273}, {0.147199, 0.460440}, {-1.434710, -0.211987}, {0.506390, 0.291023}, {-0.385415, 0.150877}, {-0.058076, 0.033607}, {-0.040447, 0.121214}, {0.217183, 0.381020}, {0.008537, 0.171304}, {-0.793652, 0.273910}, {-0.113031, -0.165199}, {-0.137888, -0.411958}, {0.129773, 1.543414}, {0.026013, 1.008311}, {0.859350, 0.590368}, {0.137087, -0.138097}, {0.273403, -0.938621}, {0.365497, -0.156764}, {0.670901, 0.144948}, {0.356986, -0.869288}, {-0.882520, -0.440277}, {0.462818, 0.724776}, {-0.573334, -0.513149}, {-0.216443, -1.260162}, {-0.037775, 0.735246}, {-0.374519, 0.457316}, {0.058640, -0.761478}, {-0.440620, -0.890988}, {-0.052313, -0.360096}, {-0.537367, 0.085238}, {-0.894927, -0.267870}, {-0.710221, -0.890203}, {-1.603747, 1.430830}, {1.840006, 1.279425}, {0.449807, 0.176538}, {0.071127, -0.599730}, {0.340974, 0.830768}, {0.167339, 0.262566}, {-0.519153, -0.781460}, {-0.953526, -0.572926}, {-0.718084, 1.342914}, {0.887380, -0.767601}, {-0.500773, -1.256327}, {-0.504054, -0.387444}, {-0.423248, 0.941044}, {-0.075436, -0.011957}, {0.778830, -0.741112}, {0.527124, 1.470712}, {-0.061345, 0.245175}, {-0.108031, -0.165018}, {0.089631, -0.062024}, {-0.079677, -0.101521}, {-0.396044, -0.025846}, {0.849632, 0.900182}, {0.614655, -0.309219}, {-0.168051, 0.184285}, {0.629810, -0.125703}, {-0.626641, -0.299066}, {-0.766331, 0.668178}, {1.026631, 0.970999}, {1.056465, 0.385935}, {0.034025, 0.934794}, {1.049357, -1.364552}, {-0.307284, 0.554048}, {-0.124591, 0.459456}, {0.634236, 0.196816}, {0.846920, -0.870074}, {0.377849, -0.151186}, {0.010945, 0.711493}, {-0.143725, -0.331314}, {-0.428652, 0.812929}, {-0.507231, 0.476529}, {0.822266, -0.169064}, {-0.312591, 0.878717}, {0.126182, -0.185989}, {1.011325, 0.536978}, {0.511545, 1.633077}, {-1.054305, 0.395063}, {1.824536, 0.854489}, {-1.843423, 1.187168}, {-0.260379, 0.320860}, {0.762158, 0.289641}, {0.273799, -0.015125}, {0.406928, 0.953909}, {-0.053545, -0.024161}, {-0.636427, -0.198150}, {-0.601937, -0.004703}, {0.117514, -0.399147}, {0.147300, -0.182524}, {0.117742, -0.391568}, {0.598795, -0.217514}, {-0.530160, -1.275872}, {-0.448360, 0.509787}, {-0.231334, 0.208376}, {0.653553, -0.510494}, {-0.469246, -0.599648}, {0.223253, -0.260082}, {0.425304, -1.320700}, {-1.013285, -0.561188}, {-0.649321, 0.686967}, {-1.283270, -0.227414}, {-0.186007, 0.368703}, {-0.136933, -0.192889}, {1.185159, 0.545198}, {1.216968, 0.689015}, {0.910311, -0.002513}, {-0.253238, -0.334718}, {-0.272165, 0.329764}, {0.419154, 0.171196}, {0.856108, -0.866033}, {-0.363408, -1.279964}, {-0.323154, 1.229737}, {0.515595, 0.771904}, {-0.113071, 0.472993}, {-1.090156, -0.702003}, {-0.615317, 0.258520}, {-1.389988, 0.090579}, {0.227189, 1.873838}, {0.238943, 1.189236}, {0.997707, -0.750336}, {-0.168988, 1.198045}, {-0.908115, -0.325316}, {-0.276129, -0.887500}, {-0.193721, 0.061984}, {0.372694, -1.067987}, {-0.021077, -1.086837}, {-0.355942, -0.129020}, {0.601311, 0.890568}, {0.458201, 0.949799}, {0.477640, 0.087344}, {0.024384, 0.268283}, {-0.314620, 0.511970}, {0.208499, -0.010617}, {1.054139, -0.793165}, {0.712241, 0.313028}, {0.095001, 0.032736}, {-0.050507, -0.099467}, {0.966046, -0.046950}, {0.735177, -0.035276}, {1.216582, -0.536102}, {0.579388, 0.044030}, {-0.031001, -1.871012}, {1.061978, -0.288872}, {-0.504246, -0.401761}, {-0.562567, -0.284664}, {-0.275011, -0.021875}, {-0.393798, 0.931489}, {0.006711, 0.841041}, {0.402936, 0.199119}, {0.107574, -1.388760}, {-0.230410, 0.022241}, {-0.191842, -1.192988}, {1.171249, 0.021609}, {0.716926, 0.486816}, {0.145686, 0.517127}, {-1.328921, 0.377331}, {0.851484, -1.077027}, {-0.182252, -0.973016}, {0.547530, 0.307628}, {0.752337, 0.227463}, {-0.943868, -1.105141}, {0.051322, 1.847229}, {0.162891, 1.662704}, {0.215910, 0.074535}, {0.968104, -0.819955}, {0.398545, 0.106263}, {0.311276, 0.300695}, {0.553913, 1.407050}, {-0.074835, -0.314706}, {-0.756606, -0.249815}, {-0.007184, 0.241820}, {-0.903521, -1.140063}, {-0.347949, 0.735517}, {-1.520924, -0.054318}, {-0.336836, -1.417745}, {0.668140, -0.550144}, {-0.813826, -0.378920}, {-1.142460, -0.895100}, {-0.464542, 0.305670}, {-0.803636, 0.464800}, {-0.519269, 0.330770}, {-0.744446, 0.223551}, {0.133873, 0.641134}, {-0.234319, -0.617046}, {0.237105, 0.190497}, {-0.207124, 0.186992}, {-0.222716, -0.026379}, {0.616382, 0.940631}, {-0.202311, 0.380659}, {0.365658, 0.144009}, {1.794867, -0.495343}, {0.500606, -0.433379}, {0.363196, -0.689170}, {-0.025768, 0.286324}, {-0.868493, 1.012894}, {0.110665, -0.207569}, {-0.041372, 1.248633}, {0.885087, -0.488457}, {0.910808, 0.069023}, {0.693604, -0.067264}, {0.566380, 0.592366}, {1.130313, -0.894986}, {0.853269, 1.224186}, {0.451775, 0.907155}, {-0.899638, -0.755130}, {0.009159, -0.715130}, {0.725935, -0.067967}, {-0.648557, -0.976766}, {-0.215151, -0.130206}, {-0.882912, 1.101720}, {0.549423, 1.141824}, {0.091037, -1.123045}, {0.851998, -1.088543}, {0.671949, -0.768697}, {-0.026212, -0.142371}, {0.188458, 0.044498}, {1.035851, 0.732378}, {0.496930, 0.763086}, {0.620814, -0.084441}, {-0.816705, -1.005846}, {0.129933, 0.607144}, {-0.335244, 0.079260}, {0.062206, 0.842265}, {0.342883, 0.267645}, {-0.570073, 0.645440}, {-0.179948, -0.386216}, {-0.767378, 0.206902}, {0.759143, -0.306648}, {0.482275, 0.475103}, {0.825030, -0.514951}, {-1.028938, -0.819744}, {1.732835, 0.066877}, {0.450762, -0.541033}, {-0.616540, -0.408825}, {0.089601, -0.831240}, {-0.716228, -0.620456}, {-0.045554, 1.373536}, {0.723475, 0.165982}, {0.238882, -0.391897}, {1.879258, 0.418675}, {-0.908657, 0.808384}, {-0.286725, 0.203416}, {0.622622, 1.988791}, {-0.204689, 0.503124}, {-0.840514, -1.052989}, {0.109104, -0.491465}, {-0.458429, -0.890611}, {-0.040308, 0.387025}, {0.334213, 0.845817}, {-0.485131, 1.161892}, {-0.154884, -0.021494}, {0.901447, 0.368832}, {-0.577289, 0.422688}, {0.066667, 0.480205}, {0.497143, 1.273457}, {0.411773, -0.013752}, {0.663922, 0.240592}, {0.147365, -0.939324}, {0.265064, -0.679686}, {0.080121, -0.490473}, {0.405063, -0.141264}, {1.250869, -1.013448}, {-1.771650, -0.026840}, {-0.214699, -0.238854}, {0.153398, 0.152295}, {-0.332406, 0.850663}, {0.082405, 0.034282}, {-0.778027, 1.776842}, {1.119535, 0.093578}, {0.405343, 0.144457}, {0.318296, -1.045619}, {0.894029, -0.789367}, {-0.705205, -0.559302}, {-0.583245, -0.587218}, {-1.732809, 0.502952}, {-0.072216, -0.619449}, {-1.005389, -1.337074}, {-0.925036, -1.050076}, {-0.849897, 1.451525}, {-0.640269, -0.536556}, {0.280792, -0.596720}, {-1.731763, -1.392341}, {0.225837, -1.310780}, {-0.855570, 0.357171}, {-0.596824, 0.705603}, {1.015263, -0.013845}, {-1.378102, -0.871470}, {-0.037446, -0.148328}, {-1.100256, -0.404901}, {0.618017, -0.193406}, {-0.165397, 0.385855}, {1.048162, 1.070281}, {0.913836, 0.796236}, {-0.470200, -0.595482}, {0.435984, 0.550976}, {0.991639, 0.713741}, {1.354705, 0.236459}, {-0.514888, 0.034946}, {0.447832, -0.324686}, {-0.324818, 0.064890}, {0.512776, -1.010271}, {0.644555, 1.172259}, {-0.884525, 0.399588}, {0.106287, -0.599133}, {0.245535, 0.597192}, {-0.128277, 0.432917}, {0.307422, -0.650546}, {0.870460, 0.392310}, {-0.236295, 0.161812}, {-0.905288, 0.260416}, {-0.288011, -0.014239}, {-0.391415, -0.625783}, {1.255478, -0.407403}, {1.023093, 0.311064}, {0.059888, -2.054203}, {0.200850, 0.982033}, {0.936100, 0.701518}, {-0.629761, 0.267995}, {1.891356, -0.312648}, {0.084493, 0.120200}, {0.658455, 0.408385}, {0.401558, -0.236054}, {0.213266, -0.339748}, {0.249614, 1.030643}, {0.861996, -0.401135}, {-0.645997, -0.919200}, {0.345041, -0.019794}, {0.422888, -1.570761}, {-0.728576, -0.302344}, {0.698979, 0.162284}, {0.432374, -0.278804}, {0.288216, -0.280750}, {0.692058, -0.788072}, {-0.513736, 0.160921}, {-0.484442, 0.091290}, {0.217502, 0.258031}, {-0.564786, -0.078785}, {0.773842, -0.205731}, {0.496951, 0.661244}, {0.703862, 0.256431}, {0.417277, -0.643702}, {0.030253, 0.964357}, {0.487751, -0.148838}, {0.603282, 0.729704}, {0.623268, -1.087961}, {0.673468, 0.933167}, {-0.456305, 0.170897}, {-0.397510, -0.674178}, {-0.320248, 0.681368}, {0.138825, 0.000576}, {-0.706556, 0.500306}, {-0.180191, -0.216743}, {-1.383253, 0.599270}, {-0.024074, 0.774923}, {0.117188, 0.327920}, {-0.897107, -0.217729}, {0.780948, -1.488166}, {-0.189833, -1.665574}, {0.160742, 0.396893}, {0.132436, -0.269463}, {-0.477604, 0.319153}, {-1.594824, -0.229696}, {-1.033510, 0.226079}, {-0.375408, 0.377189}, {0.203341, -0.627341}, {0.000475, -0.876883}, {-0.354389, -0.692829}, {0.902375, 0.537518}, {0.765544, 1.350291}, {0.617121, 0.549060}, {0.191055, -1.656615}, {-0.637320, 0.461113}, {-0.139140, 0.405568}, {0.338228, 0.190319}, {-0.111718, 0.427500}, {-0.607051, -0.223998}, {-0.256013, -0.126726}, {-0.460717, 0.657032}, {-0.264035, 0.642030}, {-0.480224, -0.125524}, {-1.104871, -1.244684}, {0.794316, -0.618685}, {-1.325048, 0.625898}, {-0.609105, -0.317561}, {-0.110370, 0.574926}, {-0.079341, -0.941059}, {1.123131, 0.516150}, {0.646988, -0.799697}, {-0.528347, 0.716934}, {-1.297124, 0.049700}, {0.952649, -0.161405}, {0.104493, -0.030703}, {-1.168308, 1.727449}, {0.676470, 0.693357}, {-0.412443, 0.253094}, {-0.447798, 0.038550}, {-0.228133, 0.125712}, {0.274084, -0.664014}, {-1.273383, -0.516870}, {0.331193, -0.663290}, {0.834921, -1.083132}, {-0.016795, 0.063665}, {0.463293, 0.100810}, {-0.222092, -1.166433}, {-0.045631, -0.035269}, {-0.045329, -0.674897}, {-0.784392, -1.057570}, {-0.329826, 0.339698}, {1.178970, 0.965670}, {-0.300943, -0.650654}, {0.152251, -0.474047}, {-0.578936, -0.462915}, {0.349399, -0.057776}, {0.102065, -0.396655}, {0.217686, 0.393256}, {-1.565998, -0.678150}, {-0.317381, 0.390873}, {0.032866, 0.637578}, {-0.462473, -1.228468}, {0.037433, -0.126953}, {-0.219955, -0.079598}, {0.986041, -0.242647}, {0.981236, -0.308921}, {-0.714607, 0.747562}, {0.878252, 0.290233}, {-0.013550, -0.801533}, {-0.837193, -0.073407}, {0.004598, -0.299227}, {0.718243, -0.521436}, {-1.411477, 0.345819}, {-0.185560, 0.407726}, {-0.645613, 0.341977}, {-0.144282, -0.130033}, {0.170185, 0.210823}, {0.648260, 0.522148}, {0.163927, 0.452781}, {0.091997, -1.512229}, {-0.925560, 0.389415}, {0.396382, -0.605291}, {-0.206984, 0.810648}, {0.605544, -0.329259}, {-0.496895, -0.433621}, {0.821201, -0.159951}, {-0.287604, -0.461316}, {0.269550, -0.172898}, {0.223504, -0.519438}, {-1.219596, -1.509329}, {-1.177703, 0.106731}, {-0.614510, -2.303451}, {-0.508790, -0.814873}, {-0.235748, -0.655716}, {0.675918, 0.241968}, {0.848823, 0.109502}, {-0.339173, 0.251667}, {-0.907714, 0.025476}, {1.135073, -0.983344}, {0.597885, 0.092979}, {0.775967, 0.017399}, {-2.228663, -0.026600}, {0.991905, 1.087891}, {-1.345601, 0.617191}, {0.369217, -0.003157}, {0.380365, -0.183456}, {1.141741, -0.120062}, {0.208724, 0.917995}, {-0.751646, 1.025081}, {-0.244497, -1.070647}, {-0.426150, -0.441223}, {-0.083133, 0.600314}, {-0.639394, -0.449710}, {-0.227868, -0.052185}, {0.039466, 0.902238}, {-0.228256, 0.424697}, {-1.264894, 1.007502}, {0.025662, -1.050856}, {-0.853853, -0.077905}, {-0.283073, 0.020308}, {0.102863, 0.285404}, {-0.729183, -0.883586}, {0.488278, -0.537274}, {-0.638371, 0.705178}, {0.257958, 0.187060}, {1.876355, -0.296744}, {-0.029220, 0.081046}, {-1.202058, 0.013792}, {0.143679, -0.221348}, {0.813612, 1.334167}, {-0.308881, 0.009709}, {0.744881, 0.191344}, {0.703735, 0.479720}, {0.916091, 0.301598}, {0.229351, 0.527300}, {0.608015, 1.084639}, {-0.028380, 0.179041}, {0.741942, 0.210321}, {-0.441117, 2.019392}, {0.287010, 1.148982}, {0.751560, -0.634404}, {0.633605, -0.574008}, {0.254998, 0.117379}, {1.321661, -0.738031}, {-0.086967, -0.576727}, {0.357126, 0.432979}, {-0.743290, 0.811585}, {-0.501911, 0.783671}, {-0.187481, 0.444391}, {0.175805, 0.576845}, {0.749123, 0.582751}, {-1.669288, -1.212711}, {-0.024771, 0.530228}, {-0.600212, 0.278748}, {0.380659, 0.552119}, {-0.054384, -0.183081}, {-0.577043, 1.758637}, {-1.290098, -0.034919}, {-0.626743, -0.901914}, {0.548593, 0.563251}, {-1.189395, -0.111436}, {0.672192, 0.884066}, {0.490141, -0.258325}, {1.522702, -0.355020}, {0.280899, 0.463460}, {0.297340, -0.975150}, {-0.783965, -0.193888}, {0.116301, -0.696152}, {-0.613030, 0.111460}, {-1.438732, -0.335699}, {0.152343, 0.580044}, {0.174164, -0.175062}, {-0.148853, -0.874012}, {0.175072, 0.017771}, {0.358267, 0.083250}, {-1.047536, 0.175354}, {-0.048482, -0.104485}, {0.180338, 0.466878}, {-0.062379, -0.997160}, {-0.737199, -0.210693}, {0.536667, 0.012390}, {0.013080, -0.896293}, {-1.111020, 0.036888}, {-0.592474, -0.623239}, {-0.587658, -1.419053}, {0.481731, 0.315493}, {0.239846, 0.451458}, {-0.107999, -0.142484}, {-0.238403, 0.700594}, {0.326648, 0.295695}, {0.709781, -0.414870}, {-0.303296, -0.812312}, {0.605543, -1.441576}, {0.046576, 0.392842}, {0.391747, 1.805781}, {-0.610474, -0.502987}, {-0.084417, -0.635316}, {-0.117791, -0.511594}, {1.263054, -0.152197}, {0.036088, -1.413123}, {-1.142865, 0.441812}, {0.670441, -1.734080}, {-0.655343, -0.321802}, {0.441931, -0.212622}, {0.368448, -1.376489}, {0.216562, -0.500590}, {0.430320, 0.433900}, {0.910263, 0.145197}, {0.261373, -0.024356}, {-0.931035, -1.031641}, {0.071638, -0.030381}, {1.047164, -0.390936}, {0.786061, 0.374129}, {0.399636, -0.470714}, {-0.828217, 0.411402}, {0.402586, 0.304012}, {0.173574, -0.061146}, {0.718928, 0.903788}, {0.757697, -0.340347}, {0.311022, -0.630422}, {-0.320119, 0.438468}, {0.213126, 0.315590}, {-0.367474, -0.858977}, {-0.364710, -0.211865}, {-0.088531, -0.338955}, {-0.426875, -1.259798}, {0.017767, 0.903531}, {-1.317742, -0.291868}, {-0.021616, -0.223357}, {-0.466416, -0.982947}, {-0.723046, -0.216801}, {-0.506496, -1.256971}, {-0.876586, -0.668156}, {0.799653, 0.883145}, {-0.116016, -0.230735}, {0.153892, 0.245910}, {-1.493473, -0.543369}, {-0.104258, 0.937885}, {0.145870, -0.862457}, {0.004280, 0.091261}, {-0.201859, 0.062320}, {1.434108, 0.390146}, {0.223945, -0.417881}, {-1.429893, -0.221635}, {-0.263642, -0.043051}, {-0.301817, -0.656976}, {-0.055533, -0.422469}, {-0.170936, 0.094114}, {0.920585, -0.536474}, {-0.244583, 0.125218}, {-0.398405, -0.673800}, {-0.648268, -0.174215}, {0.104402, -0.545924}, {1.039966, -0.450643}, {0.454026, -0.007051}, {-1.348483, 0.435892}, {-1.154315, 0.012219}, {0.586239, -0.790228}, {0.420334, -0.425579}, {-0.695935, 0.400174}, {-0.324462, -0.569611}, {-0.891715, 1.286844}, {-0.225809, -0.497207}, {-0.877583, -0.401090}, {-0.230709, -0.162162}, {0.040464, 0.348907}, {-0.431771, 0.340009}, {0.045460, -0.714410}, {-0.216520, -2.046873}, {0.804486, 0.379955}, {0.107529, 0.317036}, {0.349638, -1.542756}, {0.112593, 0.633379}, {0.245919, -1.442921}, {1.226988, 0.413531}, {-0.216186, -1.098418}, {-0.592056, -0.703833}, {-0.461250, 1.152356}, {-0.451106, -1.041155}, {0.758497, -0.026281}, {0.580829, 0.434704}, {-0.244442, -1.287007}, {0.871367, -0.668387}, {-0.252397, -0.492179}, {-0.105915, 0.221225}, {-0.396868, 0.424444}, {0.468587, -0.808788}, {-0.332904, 0.334434}, {-0.300457, -0.004120}, {0.200741, 0.652505}, {-0.290567, 0.311535}, {-0.596088, -0.685691}, {0.383474, -0.564410}, {0.365202, -0.520154}, {0.303368, 0.394516}, {0.156166, 0.414418}, {-1.362271, -0.651302}, {-0.565455, 0.543162}, {-0.528145, 0.145123}, {-1.176076, -1.178721}, {0.086984, -0.105966}, {-0.021746, -0.978670}, {0.518625, 0.155903}, {-1.258329, 0.223466}, {0.130332, -0.419232}, {0.563122, 0.231711}, {0.306401, -0.507524}, {-1.053291, 1.560204}, {0.047668, 0.546148}, {0.948363, 0.284353}, {0.672895, 0.507781}, {-1.334744, -0.168633}, {-1.208243, 0.148212}, {-0.848912, 0.415874}, {0.843947, 0.736823}, {-1.158485, 0.210237}, {-0.099862, 1.120765}, {0.337771, 0.007164}, {-0.469080, 0.520155}, {-0.100074, -1.349217}, {-0.157844, 0.287353}, {-0.779996, 0.294751}, {0.073369, 0.492718}, {-0.464267, 0.726453}, {-0.462696, -0.741070}, {0.023056, 1.172214}, {0.224251, 0.025615}, {-0.336091, -0.276409}, {0.473509, -0.561504}, {0.845649, -0.907685}, {0.627133, -0.351774}, {-0.990811, -0.590419}, {-0.172712, -0.470133}, {0.723323, -0.199676}, {-0.307695, -0.713114}, {-0.083497, 0.329677}, {-0.518250, 0.421263}, {0.084627, 0.104033}, {-0.333341, 0.047107}, {-1.401702, 0.346693}, {-1.554243, -0.861078}, {0.326409, -0.263726}, {-0.100557, -0.931537}, {1.703162, 0.946824}, {-0.198882, -0.911880}, {-0.506174, -0.771035}, {-0.827505, 0.609437}, {0.673322, -0.205578}, {-0.806857, -0.975934}, {0.294299, 0.863600}, {-0.008905, 0.140791}, {-0.175659, -0.263704}, {0.242597, -0.175465}, {0.581556, -0.693348}, {0.221080, -0.123343}, {0.864177, 1.380508}, {-0.485638, -0.235111}, {0.019145, -0.507227}, {1.115591, 1.035217}, {-1.242264, -0.613672}, {0.528370, 0.525414}, {-0.389619, -0.519511}, {-0.156849, -0.205102}, {-0.985984, -1.423871}, {0.517087, -0.357108}, {-0.199417, -0.794782}, {0.201648, -0.957863}, {0.127940, -0.981328}, {-0.892293, -0.484381}, {-0.246429, -0.134570}, {-1.208455, 1.697750}, {0.005429, 0.475156}, {1.495576, -0.048856}, {-0.532713, 0.246399}, {0.020822, 0.397247}, {-0.943340, 0.215974}, {0.091969, 0.698433}, {-0.605709, -0.662562}, {-0.662931, 0.331181}, {0.510917, -0.498797}, {-0.070321, -0.339604}, {-0.828848, 0.232796}, {0.637634, 0.622874}, {-0.384873, 0.201997}, {0.762228, -0.732545}, {-0.051603, -0.149058}, {0.029130, 0.529245}, {0.834301, 0.594478}, {-0.261223, -0.069449}, {-1.302920, -0.290366}, {-0.609619, -0.588839}, {0.497506, 0.424783}, {-0.187720, 0.612541}, {0.017128, 0.698742}, {-1.811540, -0.055316}, {0.862133, -1.369530}, {1.262000, -0.131324}, {1.156433, 0.484189}, {-0.076493, -0.424579}, {-0.130062, 1.379691}, {0.833397, 0.567487}, {0.078902, 0.473863}, {0.055890, -0.769505}, {0.060725, -0.404843}, {0.000445, 0.737484}, {-0.625014, -0.395060}, {-0.753279, -0.276740}, {1.520089, 1.037106}, {-0.319487, 1.277601}, {0.118810, 1.297974}, {-0.215298, -0.455871}, {0.254708, 0.218111}, {0.418569, -0.707815}, {-1.185689, 0.006936}, {0.123850, 0.442040}, {-0.408899, 0.843042}, {-0.086253, -0.322820}, {-1.244809, -0.408063}, {-0.152610, 0.218428}, {-0.304509, 0.721444}, {-0.223893, -0.198213}, {0.161462, 0.965719}, {-0.016545, -0.046833}, {0.014223, 0.409396}, {1.975500, -1.416411}, {0.987470, -0.295333}, {1.392536, -0.339042}, {-1.772024, 1.071792}, {0.561628, 0.260545}, {-0.614207, 0.253911}, {0.255899, 0.338669}, {-0.545300, 0.377977}, {-0.781682, -0.308513}, {-0.473559, 0.115544}, {0.970356, 0.389522}, {1.340998, 0.204031}, {0.636971, -0.691872}, {1.087438, -0.703128}, {0.335864, -0.678190}, {-0.567828, -0.567210}, {-0.650808, 0.427866}, {-0.267197, -0.819795}, {-0.757122, -1.946263}, {-0.479753, -0.686059}, {-1.058098, -0.284788}, {-0.601739, -1.515210}, {0.613674, 0.326730}, {1.501791, -0.056387}, {-0.990549, 0.002105}, {-0.865560, -0.308869}, {0.464395, -0.231092}, {-0.644999, 0.444856}, {0.545002, -0.193149}, {0.447797, -0.492268}, {-0.421009, -0.021117}, {-0.190813, 0.311118}, {0.467296, 0.294717}, {0.154595, 1.419043}, {0.281873, 0.405801}, {-1.053144, 0.367926}, {0.048581, 1.905063}, {-0.637562, -0.469837}, {0.650205, -1.538225}, {-0.885319, -0.085329}, {-0.052037, 0.098850}, {-1.205488, 0.099386}, {1.421300, -0.337389}, {0.163746, 1.595691}, {0.316168, 0.058669}, {0.901451, -0.757891}, {0.374950, 0.220098}, {0.289515, -0.754124}, {-0.344068, -0.343308}, {0.232374, 0.263313}, {2.246893, 0.378554}, {-0.376969, 0.322563}, {0.709981, -1.565807}, {-0.784404, 0.311436}, {-0.414114, 0.191005}, {-0.912873, -1.111710}, {0.022198, 1.018839}, {-1.388431, -0.029500}, {1.318379, 0.695939}, {0.832088, -0.225946}, {-0.685464, 1.189551}, {-1.724108, 0.128743}, {-0.267640, 0.820472}, {0.369300, 1.266272}, {-0.485413, -1.174063}, {-1.258036, 0.730961}, {-1.037161, -0.806028}, {-1.128983, -0.308337}, {0.655767, -0.390841}, {-0.343421, 0.248034}, {0.458703, -0.580272}, {-0.309516, -0.875010}, {0.612543, 0.577868}, {0.291884, 0.221870}, {0.556053, 0.899818}, {-0.155180, -0.104632}, {0.342271, 0.297307}, {0.201082, 0.328868}, {1.519672, -1.255112}, {-0.277044, 0.809604}, {-0.983866, -0.270883}, {-0.252473, 0.652332}, {0.320750, 0.253181}, {0.439080, -1.174365}, {0.577125, 0.328839}, {0.900496, 0.913433}, {0.217882, -0.002589}, {-0.005437, -0.172455}, {0.777052, -0.589731}, {-0.319754, -0.552669}, {0.663022, 0.005191}, {-0.444068, 0.973952}, {-0.284655, 0.373087}, {-0.653444, 0.000541}, {0.937499, -0.190486}, {-0.353436, -0.421615}, {-0.586946, 1.251421}, {-0.106296, -0.907972}, {-0.133041, -1.699473}, {-1.323406, 1.678851}, {0.297010, -1.495266}, {-0.282727, -0.006885}, {2.101317, -0.581565}, {-0.386652, 0.065565}, {-0.086661, 0.930770}, {1.072493, -0.689899}, {-1.072787, 1.386659}, {1.079130, 0.126657}, {-0.255408, -0.604117}, {0.923296, 0.431058}, {0.884115, 0.288090}, {-0.783201, -0.804343}, {-1.563031, 0.029382}, {-0.366755, 0.047618}, {0.931579, 0.790832}, {0.079395, -1.064498}, {-0.576885, -1.423422}, {1.061247, -0.359222}, {-0.079346, -0.583210}, {-0.513897, -1.038086}, {-0.306731, -0.347102}, {-0.303644, 0.082931}, {1.070749, 0.846657}, {0.596321, -0.863198}, {-1.493087, 0.752431}, {-0.326493, -0.259466}, {0.762672, 0.637558}, {0.470650, -0.475920}, {1.217709, 1.223485}, {-0.105262, 0.348860}, {0.809125, 0.110621}, {0.705164, -0.451192}, {0.256454, 0.998392}, {-0.182322, -1.808778}, {0.132926, -0.046858}, {-0.115529, -0.094157}, {-0.386512, -0.427899}, {1.703266, 0.413302}, {1.689060, 0.300520}, {-0.746970, -0.620105}, {0.331307, 1.166821}, {-1.642881, -0.355440}, {0.284702, -0.125837}, {-0.942006, 0.609114}, {0.490133, -0.550940}, {0.479289, 0.712846}, {-0.733015, 1.085078}, {1.342473, 0.807258}, {-0.139847, -0.210786}, {-1.019707, -0.083367}, {-0.515722, -0.667669}, {-0.490205, 0.536208}, {1.137698, -2.187429}, {0.689605, -0.279192}, {-0.758482, -1.078222}, {-0.062444, -1.440962}, {-0.959758, -0.131322}, {0.578693, 1.089248}, {-0.447809, 0.153117}, {-0.380639, 0.131958}, {0.663486, 0.877594}, {0.280871, -1.058013}, {-0.699962, 0.353879}, {-0.162627, 0.269167}, {-0.204061, 0.751909}, {0.209289, -0.584008}, {0.284208, 0.331193}, {0.885480, 0.772389}, {-0.252435, -0.861216}, {1.302831, 0.447444}, {0.039083, -0.234160}, {-0.935810, -0.162396}, {0.125644, 0.184471}, {0.445812, -1.213550}, {-1.380393, 0.775430}, {-0.188419, 0.701213}, {0.684211, -0.154271}, {-0.182573, 0.039267}, {0.811469, -0.969950}, {-0.778200, 1.188098}, {-0.049732, -0.445024}, {-0.852271, -0.949873}, {0.086241, -0.750884}, {-0.096712, -1.624033}, {-0.400723, 0.228941}, {1.049161, -2.253919}, {-0.058805, -0.708923}, {-1.286261, -1.145985}, {-0.215680, 0.977318}, {-1.137437, 0.643552}, {0.648707, 0.534293}, {-0.097589, 0.270605}, {-0.536918, 0.019383}, {0.467302, 0.109569}, {-1.583003, -0.761356}, {-0.935186, -0.891575}, {-0.514207, 0.428989}, {0.765034, -0.341230}, {0.067731, 0.661021}, {-0.145722, 0.204315}, {-0.062658, 0.608009}, {0.471454, 0.095159}, {-0.452387, 1.030955}, {0.553401, -0.726777}, {0.622963, 0.530085}, {0.208907, 1.294012}, {-0.324651, 1.366459}, {-0.576267, -0.393594}, {-1.011991, 0.804189}, {0.737499, 0.822178}, {0.481131, -0.143674}, {-0.684440, 0.644153}, {0.794158, -0.398822}, {0.568346, 0.400063}, {0.913021, -0.104825}, {-0.181232, -0.575912}, {-1.186140, 0.417101}, {0.311493, 0.955016}, {0.331007, 1.201278}, {0.208202, 0.031411}, {0.463080, 0.501488}, {0.482757, 0.079090}, {-0.880469, 0.584826}, {-0.159840, -0.023861}, {0.845792, -0.498914}, {1.200194, -0.998738}, {-0.687638, 0.627621}, {0.834554, -0.044152}, {-0.567932, 0.022438}, {0.649994, -0.451273}, {1.550910, 0.386612}, {0.643220, -1.226031}, {-0.084707, 0.483131}, {1.142138, -0.495484}, {0.591518, 0.600105}, {0.909766, -0.968842}, {-0.318164, -1.216190}, {-0.002672, 0.682111}, {0.303462, -0.734521}, {-1.328197, -0.512260}, {0.142123, -0.446938}, {-0.563399, -0.108576}, {-0.595759, 0.432539}, {0.140978, -0.820013}, {0.691118, -0.298545}, {-0.892137, 0.532776}, {0.882700, -0.514615}, {-1.126496, -0.553388}, {-0.366223, 0.264003}, {1.216088, -0.643513}, {0.144411, 0.190855}, {-0.513814, 1.301282}, {-0.139218, -1.666939}, {-0.873328, 1.087577}, {0.368330, -0.436673}, {-0.799562, 0.387875}, {1.105326, 0.374214}, {0.212973, 0.611913}, {-1.233469, -0.191584}, {-0.678596, -0.747265}, {-1.464750, 0.891797}, {-0.103633, 0.529639}, {0.946408, 0.704495}, {-0.247739, 0.650610}, {0.314285, -0.478465}, {-0.801484, -1.330346}, {-0.474770, 0.029146}, {0.156161, 0.354246}, {-0.514883, 0.437114}, {-0.723243, -0.302359}, {-0.623393, -0.064006}, {0.668911, 0.512527}, {-0.200754, 0.270304}, {1.274333, -1.593959}, {-0.433487, -0.077630}, {1.022869, -0.724708}, {1.302765, -0.324157}, {0.048530, 0.524041}, {0.580503, 0.255952}, {0.871851, -0.571890}, {-1.320527, 0.372024}, {-0.837724, -1.330308}, {-0.130319, 1.947338}, {-0.966811, -0.248498}, {-0.980519, 0.121219}, {-0.928127, 0.014107}, {0.784902, -0.292815}, {-0.001154, 0.102495}, {0.174204, -0.798143}, {-0.616828, -1.187243}, {0.901858, 0.095972}, {-0.036058, -0.624901}, {-0.136308, 0.048002}, {0.724986, 0.204018}, {-0.290315, -0.226273}, {-0.937261, 0.310854}, {1.350983, 1.247481}, {0.132400, -0.117268}, {-0.433586, 0.672210}, {0.427985, 1.263974}, {0.053098, -0.134753}, {0.145390, -1.579824}, {-0.466987, -0.271971}, {-0.452877, -0.054139}, {-0.137701, -0.493978}, {0.449226, 0.123858}, {0.641004, -1.580859}, {0.732717, 0.424758}, {-1.191464, -0.668713}, {-0.068454, -1.558817}, {-1.255019, 0.090546}, {0.133334, -0.672320}, {-0.357994, -0.062960}, {-0.179648, -0.136934}, {-1.405926, -0.152062}, {-0.122649, -0.447278}, {-0.956039, 0.706032}, {-0.577964, 0.702715}, {-1.092396, -0.224851}, {-0.080453, 0.539972}, {0.941582, 0.526443}, {-0.245442, -0.421211}, {-0.655510, 0.175952}, {0.090653, 0.356258}, {0.597282, 0.245042}, {-1.281953, 1.174625}, {0.246278, 0.484865}, {-2.421806, -0.626013}, {-0.515321, 0.348373}, {0.100784, -0.155870}, {-0.518027, -0.137351}, {-1.091217, 0.932436}, {0.298705, 0.215227}, {-0.032357, 0.318942}, {-0.028669, 0.835347}, {-0.164235, -0.633671}, {-0.978889, 0.405411}, {-0.366083, -0.163942}, {-0.367713, 0.709928}, {-0.245638, -0.099905}, {-0.171231, 0.640628}, {-0.531550, -0.252464}, {-0.460142, 1.860309}, {-1.486483, -0.241096}, {-1.050993, -0.330973}, {0.877660, 0.278261}, {0.471375, 0.863250}, {0.815270, 0.878291}, {-1.064940, 1.248690}, {-0.069835, -0.017150}, {1.102388, 0.275357}, {1.179494, 0.240331}, {-1.664730, -0.144800}, {-0.236780, -0.450388}, {0.727520, -0.630164}, {-0.976490, -0.375161}, {1.003983, -1.257875}, {-0.358144, -0.688150}, {0.425984, 0.320394}, {0.145065, -0.070437}, {-0.791365, -0.328291}, {0.251614, -0.243055}, {-0.393163, 0.191665}, {-0.150863, -0.584294}, {-0.673513, -0.686572}, {-0.402621, -0.474615}, {-1.157962, -0.033111}, {0.452590, -1.526519}, {0.021951, -0.726401}, {-0.912745, 0.826707}, {-0.372052, 0.412758}, {0.777297, -0.106160}, {-0.135258, 0.030331}, {-0.109689, -0.926576}, {0.683335, -1.604886}, {-0.421987, 0.744210}, {-0.557095, -0.775698}, {0.454006, -0.044498}, {0.177879, 0.041843}, {0.074312, 0.324311}, {-1.059395, 0.620565}, {-0.421680, 0.527942}, {-1.202068, 1.160552}, {-0.115764, -0.745636}, {-1.541088, 0.056196}, {0.381186, 0.008007}, {-0.499599, 0.141341}, {0.013978, -0.125940}, {0.090000, -1.187147}, {1.160943, -0.631971}, {-0.156704, 0.697033}, {-1.239590, -0.623728}, {-0.792073, 0.313426}, {-0.731100, -0.549662}, {-0.357447, 1.054545}, {-1.142243, -0.677072}, {0.337990, 0.046116}, {0.530248, -1.446341}, {0.636612, -0.662750}, {-2.179262, 0.191543}, {-0.550411, 0.747675}, {-0.402629, 0.988314}, {-0.083953, 0.479871}, {0.124996, -0.359557}, {0.421828, 0.346338}, {-0.171740, -1.735271}, {1.095081, -0.775815}, {-0.492503, 0.267703}, {-0.204414, 0.545646}, {0.385776, -0.276769}, {0.183290, 0.903289}, {-0.084581, -0.121421}, {-0.245414, -0.714739}, {-0.576804, 0.885006}, {-1.119495, -0.231658}, {1.164001, 0.578247}, {0.112226, 0.129056}, {-0.593079, -1.115176}, {0.166237, -0.014866}, {-0.444435, 0.569202}, {-1.420244, -0.532449}, {-0.340449, -0.654735}, {1.268462, -0.042484}, {-0.553843, -0.819293}, {0.303196, -0.769441}, {0.388195, -0.520681}, {-0.196868, -0.813691}, {0.519316, -1.007083}, {0.706958, 0.112890}, {-1.075358, -0.054663}, {0.741997, 0.785043}, {0.052625, -0.121979}, {0.253025, 0.356385}, {0.828369, -0.593061}, {-0.384827, 0.456143}, {-0.140667, 0.196871}, {-1.966096, -0.083070}, {-1.020553, -1.461990}, {0.190510, -0.037306}, {-0.625134, -0.080120}, {-0.562010, -0.950249}, {-0.230976, -0.527893}, {-0.228677, -0.348693}, {-0.332359, -0.311350}, {-0.704024, -1.084836}, {-0.434046, 0.133438}, {-0.318342, -0.053535}, {-0.096872, 0.012919}, {-0.610696, -0.174108}, {-0.252555, -0.509190}, {1.061245, 0.467663}, {0.252635, -0.703320}, {-0.212390, 1.327738}, {0.587415, 0.199159}, {-0.966466, -0.076941}, {-0.829028, 1.083157}, {-0.505337, 1.097833}, {0.691992, 0.091951}, {0.564158, 0.597321}, {0.804210, 0.592029}, {-0.413688, 0.496419}, {-0.298775, 0.196912}, {-0.092485, -0.806745}, {-1.159163, 0.204774}, {-0.794889, -0.067174}, {-0.438785, -0.115991}, {0.282720, -0.231078}, {-1.228366, -0.260419}, {-1.528740, -0.246528}, {-0.246221, -0.580162}, {0.114350, -1.968410}, {-0.218031, -0.356657}, {-0.948797, 0.708502}, {-0.805080, -0.480688}, {-0.334364, 0.785381}, {0.070317, -0.128118}, {0.470661, -0.323759}, {-0.185075, 0.483122}, {-0.404439, 0.149669}, {0.074842, 0.256006}, {-1.013446, 0.621396}, {-0.134759, 0.287886}, {0.376520, 1.192665}, {-0.362520, -0.634418}, {0.362985, -0.196815}, {0.653376, 0.725399}, {1.234385, -0.520766}, {0.281393, 1.887825}, {-0.506625, 0.262909}, {-1.755273, 0.507609}, {-0.321531, -0.128175}, {0.301331, -0.922664}, {-0.600594, -1.248979}, {-0.314934, -0.073132}, {-1.253293, -0.794391}, {-0.119523, -0.106375}, {-1.036734, -0.848670}, {-0.204574, 0.546471}, {0.823228, 0.262015}, {1.082957, -0.114482}, {-0.728824, 0.148125}, {-0.883430, 0.785116}, {0.641440, -0.078952}, {-1.272558, 0.134591}, {0.505240, -0.602016}, {-0.972164, 1.092034}, {0.612247, 0.549404}, {0.450208, 0.493039}, {-0.525409, 0.940858}, {-0.216053, 0.053321}, {-0.034777, 0.076897}, {-0.559997, -1.618377}, {-0.739954, 0.626905}, {-0.033963, -0.233715}, {0.672760, -0.049505}, {-0.208845, -0.160882}, {0.953452, -0.034831}, {-0.376313, -0.779698}, {-1.116935, 0.789470}, {1.852068, -0.400982}, {0.337988, -0.001624}, {0.591794, -0.223387}, {-0.764729, -0.256717}, {0.409644, -0.331827}, {0.353446, 0.986947}, {0.013275, -0.074213}, {0.197200, -0.544923}, {-0.331489, 0.568903}, {0.432285, -0.929833}, {0.600862, 0.718698}, {0.872893, -0.419268}, {-0.200237, -0.718290}, {0.242213, 0.079084}, {-1.577807, 1.174048}, {-0.379725, 0.187433}, {0.307646, 1.344402}, {1.215462, 0.395933}, {0.029692, 0.606788}, {0.892763, -0.031153}, {0.685208, 0.002816}, {0.907146, 0.248276}, {0.328204, 0.310385}, {-0.450021, -0.534631}, {2.075611, -0.976094}, {0.337534, 0.624849}, {-0.375221, -0.715899}, {-0.134676, -0.128634}, {-0.654845, -0.951174}, {-0.407146, -0.844925}, {-1.268266, -0.592878}, {-0.624101, -0.781781}, {-0.162159, -0.785210}, {-1.763260, 0.357187}, {-0.408447, 0.565726}, {-0.392385, -0.323932}, {0.070956, -0.460428}, {-0.053136, 0.207713}, {-0.164207, -1.296008}, {-1.192106, -1.901697}, {-0.431213, -1.017489}, {-0.520848, 1.407188}, {0.145023, -0.336089}, {0.856252, -0.968676}, {0.695109, -1.115058}, {0.942748, 0.032814}, {-0.442368, 0.501998}, {-1.339842, 0.494702}, {0.793722, 0.683030}, {-0.080036, -0.001120}, {-0.124282, -0.176612}, {-0.510859, -0.403349}, {-0.013581, -0.068892}, {-0.285268, 0.123699}, {0.681833, -0.376550}, {0.665080, 1.385498}, {-1.217502, 0.225975}, {-0.594094, -0.361329}, {0.640636, -1.635224}, {0.440288, -0.173718}, {-1.095971, 0.028588}, {-0.391012, 0.536173}, {-0.679180, -0.332060}, {0.443795, 0.206495}, {0.102913, -0.012004}, {-0.877523, -1.194485}, {1.576267, -0.479076}, {-1.125040, -0.707965}, {-0.293637, -0.295395}, {1.163673, 0.261285}, {-0.009871, 1.620751}, {0.420659, 1.657904}, {0.184678, 0.360919}, {-1.117315, -0.182509}, {-1.805887, -0.737423}, {1.715050, -0.359039}, {0.548347, -0.711148}, {0.819885, -0.536776}, {0.038829, -0.046101}, {-1.555754, 1.115475}, {0.059829, -0.900202}, {0.215772, 0.610962}, {0.008583, -0.164357}, {-0.394604, -0.266908}, {-0.089186, 0.115016}, {0.879229, -1.099212}, {0.666276, -1.094933}, {-2.243026, 0.931909}, {1.069452, -0.301207}, {1.192592, 1.144332}, {-0.546448, -0.404087}, {1.042238, 0.099649}, {-1.150986, -0.352998}, {1.671102, 0.062038}, {-0.292935, -0.142184}, {0.912273, 0.927933}, {-0.610804, -0.790526}, {-1.233318, 0.582164}, {0.362886, 0.126435}, {0.266818, 0.880278}, {0.334312, -0.851251}, {-0.625542, 0.254909}, {0.730234, 0.366879}, {0.714704, 0.004163}, {1.194976, -0.023707}, {0.326624, -0.471626}, {-0.229043, -0.827678}, {0.325709, -0.115376}, {0.677117, -0.136203}, {0.609055, -0.553231}, {0.043072, -0.424984}, {0.441790, 0.828142}, {-0.436910, -0.103521}, {-0.626695, 0.363246}, {-1.091702, 0.016860}, {0.576059, 0.141374}, {-0.152014, -0.661996}, {-0.774034, -0.052961}, {0.523869, 0.787151}, {0.022872, 0.624295}, {2.371050, 2.241895}, {0.099188, -0.686992}, {-0.026026, -0.171252}, {0.675816, 1.843051}, {0.006666, 0.000152}, {1.021349, 0.543076}, {-0.602923, 0.676056}, {1.027891, -0.418795}, {-1.759205, -1.102256}, {1.116023, 0.103083}, {0.576224, -1.411952}, {-0.156183, 1.999043}, {0.124434, -0.238939}, {-0.938087, 0.337435}, {0.047635, 0.159295}, {0.217816, -0.807263}, {-0.727492, 0.439254}, {0.245795, -1.372293}, {1.078585, 0.289308}, {-0.746381, -0.190481}, {0.461490, -0.156236}, {0.279562, -0.141011}, {0.800455, 0.112162}, {0.846632, -1.442145}, {0.896583, -0.366371}, {0.142449, 0.555705}, {0.443817, -0.165670}, {-0.278247, 1.893330}, {-0.148235, 0.209155}, {0.819120, -0.340799}, {0.110860, -0.461213}, {-0.191900, -1.200356}, {0.385260, 0.158268}, {0.179177, -0.338312}, {0.286717, 0.336873}, {-0.596235, -0.074333}, {0.311757, -1.159880}, {-0.906439, 0.587565}, {0.837066, -0.107715}, {-0.260451, -1.427325}, {-0.216606, 1.473217}, {-1.717780, -0.058343}, {-1.378627, 0.891233}, {-0.079320, 0.532493}, {-0.016687, 0.630684}, {0.240314, 0.096040}, {-0.331577, 0.458243}, {0.372299, -1.365709}, {-0.741196, 1.252891}, {-0.264394, -0.346368}, {0.174941, 0.592150}, {-0.182301, 0.472894}, {-1.078744, 0.352627}, {0.668825, -0.839549}, {-0.794913, 0.098837}, {0.346916, 0.827142}, {-0.557851, -0.824683}, {0.152571, -1.089133}, {0.317379, -0.377552}, {-0.310447, -0.798186}, {1.416259, 0.538289}, {-0.139209, 0.950880}, {-0.671851, -0.023958}, {-0.295455, 0.491929}, {-0.042358, -0.225679}, {0.306427, -0.412672}, {-0.096405, -0.210148}, {1.661258, -0.451881}, {0.887263, -0.441136}, {1.303738, 0.032488}, {1.248415, -0.771581}, {-0.521452, 0.088019}, {-1.103925, -1.154315}, {0.257631, 1.121379}, {-0.262130, 0.533858}, {0.605826, -0.581051}, {-0.188663, 0.498607}, {0.764838, 0.473480}, {0.860975, -1.159374}, {0.452993, 0.327307}, {0.175875, 1.009939}, {0.281291, -0.479527}, {0.434156, 0.687246}, {0.453294, 0.558911}, {0.191183, -0.316014}, {0.214000, 0.309648}, {0.502847, 0.327473}, {-0.398865, -1.147691}, {-0.952348, 0.394180}, {-0.349121, -0.235417}, {-0.449837, 0.044554}, {-0.402914, -0.408737}, {0.199668, 0.760049}, {0.010913, -0.831466}, {0.090912, 0.009287}, {0.512837, -0.858424}, {-0.283099, -0.240292}, {-0.112692, -0.322550}, {-0.417705, -0.353556}, {-1.267119, 0.235106}, {-0.412714, -1.078769}, {-1.068857, -0.020876}, {0.735610, -0.698172}, {0.097437, 1.100995}, {-0.824265, -0.625636}, {-0.151463, 0.035774}, {-0.097028, -0.167782}, {-0.354245, -0.055691}, {0.360549, 0.749328}, {0.718972, -0.297089}, {0.093750, -0.638153}, {-0.247393, -0.297925}, {-1.029741, -0.068838}, {0.526758, 0.786855}, {-0.926147, 0.224848}, {0.558481, -0.057841}, {-0.267158, -0.691253}, {-1.247372, -0.770014}, {-0.163633, -1.488970}, {-0.501774, 0.176045}, {0.136177, -0.868078}, {0.777970, 0.447295}, {0.460035, 0.095623}, {0.503416, -0.169723}, {1.171534, -0.676447}, {-0.713499, 0.434530}, {0.462648, 0.066601}, {-0.832730, -1.270562}, {0.765136, 0.913623}, {0.417389, 0.798048}, {-1.426013, -0.274914}, {-0.825985, -0.424720}, {0.603344, -0.834278}, {0.709370, 0.850793}, {0.003214, -0.250830}, {-1.002978, -0.742748}, {-0.936138, 0.680271}, {-0.053393, 0.089266}, {0.420002, -0.368487}, {0.710330, -0.438794}, {-1.087089, 0.102425}, {0.476970, -1.002341}, {0.375935, 0.399873}, {-0.989189, 0.653074}, {0.872430, 0.758053}, {-0.890879, -0.312795}, {-0.238132, -0.250050}, {0.849829, -0.245135}, {-0.306339, 1.034213}, {0.133859, -0.614994}, {-0.556895, 0.160389}, {-0.042028, -1.154500}, {-0.019949, -0.576390}, {-1.028293, 0.814275}, {0.766851, 0.887268}, {0.044484, -0.512244}, {0.795847, -0.238133}, {-0.123321, 1.153876}, {1.732138, 0.309731}, {-0.429759, 0.508320}, {-0.700518, -0.577407}, {0.586965, 0.247099}, {0.474665, -0.264909}, {0.657846, 0.682646}, {1.683598, -0.181147}, {0.481185, 0.407061}, {-0.867097, -0.307912}, {-0.884851, 0.803434}, {0.248120, 0.335810}, {-0.766947, -0.015652}, {0.138088, -0.540963}, {0.483644, -0.292753}, {0.434778, -0.933118}, {0.969690, -0.575479}, {0.033365, -0.110259}, {0.045278, -0.657264}, {-0.823623, 0.516920}, {-0.153628, -1.007980}, {-0.500080, 0.938031}, {-0.332981, 0.507900}, {0.290413, 0.159538}, {-0.402051, 0.813947}, {0.464196, 0.574152}, {0.578220, -1.425212}, {0.202852, -0.043236}, {1.658922, 0.205793}, {-0.485749, -0.745853}, {-0.446857, 0.377168}, {0.876179, 1.074485}, {-0.584951, 0.013578}, {-0.837915, -0.240871}, {-1.524292, 0.233789}, {-0.825139, 0.748604}, {1.596491, 0.933630}, {-0.401496, -1.003424}, {-0.258193, -0.695623}, {-0.052062, -0.166794}, {0.690957, 0.351045}, {0.493275, -0.920828}, {-0.863543, 1.297232}, {-0.108419, 0.062067}, {1.378657, -1.208240}, {0.085856, -1.104558}, {-0.366961, 0.245213}, {0.832540, 0.165383}, {-0.584261, 0.126903}, {0.016941, 0.536423}, {-0.270773, 1.502084}, {-0.372237, -0.400977}, {1.068030, -0.451306}, {-0.621204, -0.546822}, {1.960128, 0.187646}, {-0.280504, -0.872304}, {0.683431, 0.366819}, {0.595984, -0.857526}, {-0.631380, -0.386350}, {0.020853, -0.369727}, {-0.212579, 0.923348}, {0.683995, -0.323235}, {0.805253, 0.720984}, {-0.198278, -0.751235}, {-0.587794, 1.028549}, {0.082077, 0.108813}, {0.745455, -0.151971}, {-0.976860, -1.417301}, {-0.100352, 0.301667}, {0.452015, 0.239125}, {-1.198564, 1.164572}, {-0.347850, -0.780059}, {1.005080, -0.098043}, {-0.076527, 0.140155}, {0.822524, 0.259489}, {-0.484033, 0.190539}, {0.547659, 0.465998}, {0.402279, -0.058429}, {-0.145342, 0.125883}, {-0.136622, 1.065746}, {0.408618, -0.650430}, {0.015056, 0.491154}, {1.132468, -0.328837}, {-0.012391, -0.686920}, {0.053038, 0.495824}, {0.071729, -0.474581}, {-0.440191, -0.561736}, {-0.524869, 0.365948}, {0.556736, -0.017547}, {0.292031, -0.097135}, {1.006116, 1.298618}, {0.516901, 0.626829}, {0.630999, -0.413970}, {0.774604, -1.207384}, {-0.615805, 0.565898}, {0.364355, -0.950000}, {0.530245, -1.069383}, {1.242254, 0.041582}, {1.198631, -0.852988}, {0.409406, -0.362121}, {-0.051573, 1.378894}, {0.526354, 0.639450}, {-0.194904, -1.121370}, {0.927330, 1.050282}, {-1.444789, 0.271173}, {-0.428099, 0.664772}, {-0.780386, 0.717917}, {-0.113324, -0.553108}, {0.355862, -0.738216}, {-0.099107, 0.064152}, {-0.154411, 1.265266}, {0.802506, -0.378603}, {-0.254708, -0.134292}, {0.098108, -0.759107}, {-0.609531, -1.121607}, {-0.421901, -0.211898}, {0.711968, -0.180637}, {-1.105167, 1.156956}, {-1.003797, 0.694685}, {0.049084, -0.230107}, {-0.236223, 1.025917}, {0.404298, -0.017089}, {-0.066885, 0.931927}, {-1.723563, -0.969529}, {0.491575, -0.029033}, {0.623884, -0.068448}, {0.176416, -0.045140}, {-0.898063, -0.441314}, {0.054965, -0.105671}, {0.099547, 0.031943}, {-0.136638, -0.641491}, {-0.416031, 0.788225}, {0.421132, 0.199360}, {0.973337, -0.185653}, {0.088055, 0.466610}, {0.175948, 0.713615}, {-0.186074, -0.718673}, {-0.477278, 0.873979}, {0.439899, 0.385747}, {0.281673, 1.501744}, {-0.893871, 0.167312}, {-1.196201, 0.511553}, {-0.088248, 1.523528}, {-0.127180, 0.047668}, {-1.244524, 1.220496}, {-0.458583, 0.408467}, {-0.423980, -0.843592}, {-0.680569, -0.034943}, {0.025603, -0.219165}, {-0.182524, -0.609754}, {-0.540846, 1.056731}, {0.303247, 1.820157}, {0.180851, 0.479806}, {0.025760, -1.252858}, {-0.747286, -0.234204}, {-1.773173, 0.069396}, {0.370812, -0.513683}, {-0.420497, -0.847213}, {-0.820247, 0.180888}, {0.377636, -0.251796}, {-0.084840, 0.837256}, {0.204533, -0.516983}, {-0.579383, 0.361949}, {-0.079244, -0.997139}, {0.763352, -0.920005}, {0.991156, 0.097808}, {-0.207017, -0.379039}, {-1.048663, 0.392404}, {-0.947993, -0.165707}, {0.222565, -1.486800}, {1.309369, 0.187803}, {0.083914, 0.759151}, {0.017533, -0.350594}, {0.936769, -0.133694}, {-0.542859, 0.015576}, {0.527186, 1.057142}, {0.576027, -1.107543}, {-0.597828, 0.116528}, {-0.573770, -0.408299}, {-0.564696, 0.907437}, {-0.843667, 0.002832}, {1.708716, -1.282816}, {0.099415, -0.410289}, {-1.175233, 0.409935}, {-0.505987, 1.096503}, {0.831878, -0.633435}, {-0.036724, 0.894208}, {-1.009229, 0.523294}, {-0.206856, -0.518026}, {-0.265399, 0.734165}, {-1.418101, -0.082190}, {0.605095, 0.372543}, {-1.234487, 1.112847}, {-0.036487, 0.136546}, {-0.027486, -0.021950}, {0.087476, 0.308363}, {0.380610, -0.770809}, {-0.612494, 0.395982}, {-0.760804, 0.774983}, {1.865483, 0.743280}, {0.077926, 0.679733}, {-0.346491, -0.172862}, {0.652737, -0.498038}, {-0.306556, -0.127240}, {1.422770, -0.788084}, {0.727473, 0.199273}, {0.998929, 0.906173}, {-0.062778, -0.292218}, {0.389584, -0.499927}, {1.122804, 0.323068}, {-0.936607, 0.116318}, {0.080546, -1.053398}, {-0.108415, 0.262303}, {0.675554, -0.771375}, {0.697370, 0.301939}, {-0.516065, 0.371745}, {-1.958861, -0.787043}, {1.816436, -0.421257}, {0.580993, 0.294074}, {-0.218823, -0.831417}, {-0.217031, -1.430616}, {-0.483142, 0.379944}, {0.067187, -0.582305}, {-0.697808, -0.168340}, {1.293952, 0.231077}, {0.097290, -0.755162}, {0.165245, 0.091931}, {-1.238996, 0.033182}, {0.094961, -0.517375}, {-0.390291, 0.240153}, {0.023253, 2.137456}, {0.621424, -0.412412}, {0.242280, -0.594768}, {-0.765264, -0.423112}, {-0.153731, 0.730757}, {0.419930, 0.768227}, {0.164315, 0.199661}, {-1.536602, 0.855813}, {0.226126, -0.357326}, {0.350009, 0.143890}, {0.337303, 0.843891}, {-0.411561, -1.142193}, {-0.701707, -0.241532}, {-0.754151, -0.193665}, {-0.371459, -0.379980}, {-0.276399, -0.210742}, {-1.074638, 0.834850}, {1.617356, -0.576681}, {1.568916, -0.678719}, {0.562247, 0.287642}, {0.631863, 1.237075}, {0.042284, -0.047805}, {1.485053, -0.684224}, {0.160235, -0.248368}, {-0.389660, 0.710686}, {-0.050819, 0.065209}, {0.147388, 0.158528}, {0.327583, -1.242319}, {-0.185792, -0.398783}, {-0.880967, -0.168451}, {0.561261, 0.309319}, {0.114879, 0.834084}, {-0.630472, 0.320430}, {0.435172, -0.147865}, {0.138108, 0.189852}, {0.433189, 0.538220}, {-0.539843, -0.734402}, {0.102453, 1.548384}, {-0.349662, -0.123426}, {-0.497825, -0.681592}, {-0.815304, 0.920879}, {0.264205, 1.651104}, {-0.360736, -0.822221}, {-0.546373, -0.203813}, {1.506398, 0.351934}, {1.271735, 0.262145}, {0.706702, 0.382961}, {0.063130, 0.014527}, {-0.198279, -0.082914}, {0.756777, 0.133322}, {0.762393, 0.070534}, {-1.168252, 0.042773}, {-0.875856, 0.058973}, {-0.907179, 1.363516}, {0.003700, 1.289862}, {0.279690, -0.489829}, {-0.952025, -0.016869}, {-0.062242, 0.118709}, {0.335991, -0.262022}, {-0.135763, 0.124727}, {0.827726, -0.460658}, {0.070106, 0.118099}, {-0.594234, 0.138962}, {0.638866, 1.436196}, {0.038912, 0.342362}, {-0.409336, 1.245498}, {0.246502, -0.213165}, {-0.522154, -0.329476}, {-1.023245, -0.070043}, {0.648593, -0.512078}, {0.202472, -1.312851}, {-1.306352, -0.890312}, {1.086565, -0.802461}, {0.842372, -1.343072}, {-0.159571, -0.014023}, {0.857682, -0.038734}, {-1.088896, -0.345921}, {0.822683, 0.990156}, {-0.329881, 0.808677}, {1.062717, 1.498025}, {-0.433379, -0.433149}, {-1.122758, -0.127346}, {0.542121, 0.927791}, {0.308221, 0.175934}, {-0.149790, -1.068382}, {-0.616779, -0.744305}, {0.839533, -0.157706}, {0.303678, 0.382350}, {0.194006, -0.212379}, {0.033246, -0.903250}, {-0.338256, -0.678675}, {-0.613313, -0.387690}, {-1.010888, -0.461805}, {0.256900, 1.327843}, {0.791153, 0.371449}, {0.412562, -0.756850}, {0.065134, -0.322337}, {0.083713, 0.126607}, {0.723780, 1.256984}, {-1.243036, -0.742905}, {0.026896, 0.353344}, {-0.269050, 0.745763}, {1.149596, 0.347420}, {-0.774535, 0.020295}, {0.596979, 0.015554}, {-0.615475, -0.620565}, {0.318177, 0.396116}, {0.421686, -0.052160}, {-0.430877, -1.293244}, {-0.155236, -0.215658}, {-0.602139, 0.532974}, {-0.243152, -1.579031}, {0.123780, -0.983632}, {0.136269, -0.821246}, {0.284418, 0.304578}, {-0.397824, 0.300438}, {-0.360441, 0.227509}, {0.046855, -0.171865}, {-1.804252, -0.700048}, {-0.924882, -0.556849}, {0.134748, 0.082988}, {-0.132825, -0.916706}, {0.786704, 0.720149}, {1.091863, 0.641613}, {0.881371, 0.215342}, {-0.096880, 0.560482}, {0.422486, -0.921443}, {0.341221, -0.894846}, {0.075976, 1.064656}, {-0.533020, -0.023005}, {0.320752, 0.244138}, {-0.040666, 0.065450}, {1.450750, 0.008950}, {0.306952, -0.562488}, {0.302953, 0.123134}, {0.798245, 0.094443}, {0.038655, -0.516631}, {-0.252824, 1.501311}, {-0.356779, 0.297983}, {-0.180288, 1.164347}, {-1.407410, -0.435116}, {-0.576522, -0.443552}, {0.111603, -0.209512}, {0.136332, 1.190104}, {-0.810554, 0.693664}, {0.308525, 0.629498}, {0.318195, -2.104560}, {0.162520, -0.149801}, {-1.142162, 1.218633}, {-0.351640, -0.468696}, {-0.793111, -0.658338}, {-0.575915, 0.941180}, {0.317133, 0.669761}, {0.985808, -0.707916}, {0.260989, 0.770580}, {-0.078153, -0.123214}, {0.053145, 1.817637}, {-0.628024, 0.069947}, {-0.777414, -0.126421}, {-0.647336, 0.166883}, {2.207409, -0.473580}, {-1.038409, 0.398710}, {-0.345503, 0.161175}, {0.081747, 0.890997}, {-0.308902, -0.075592}, {-0.139376, -0.676387}, {0.971584, -0.470253}, {-0.162857, 1.149113}, {0.171516, 0.587119}, {-0.613744, -0.035450}, {-0.580046, -0.329255}, {0.100551, -1.085898}, {-0.592872, -0.489665}, {-0.941300, -0.498021}, {0.156036, 0.709273}, {0.178233, -0.632015}, {0.678891, 0.228611}, {0.492409, -0.005288}, {-1.497998, -1.024431}, {0.838897, -0.110250}, {0.568010, -1.606525}, {-0.432611, 0.904418}, {0.334915, 1.309759}, {-0.890282, 1.529258}, {-1.064858, -1.150747}, {0.051353, 0.433881}, {-0.146728, -0.312565}, {-1.063791, -0.097197}, {-0.181281, 0.331634}, {1.723937, -0.176101}, {0.569951, 0.990671}, {0.418655, -0.675772}, {0.182521, -0.095608}, {-1.007120, 0.018916}, {1.718394, 1.198867}, {-0.313048, 0.068845}, {-1.421110, -0.661129}, {-1.370764, -0.150880}, {0.358122, 1.405506}, {-2.015900, -0.734896}, {0.605181, -0.924120}, {-1.191318, 0.682983}, {-0.456857, -0.148538}, {0.300737, -0.194614}, {0.929323, 0.927409}, {-0.450904, 0.410019}, {0.838989, 0.855354}, {0.011216, 0.148217}, {1.790998, -0.435076}, {0.979138, 0.801324}, {-0.434199, 0.113647}, {0.244367, -0.759697}, {-0.866268, -0.172338}, {0.185045, -0.400993}, {-0.381384, -0.328469}, {0.870050, -1.131930}, {0.475579, -1.270791}, {0.553011, -0.863202}, {0.654535, 0.866937}, {0.636370, 0.353826}, {0.532848, -0.266808}, {-0.305542, 0.323175}, {0.817581, -1.178811}, {-1.196670, 0.435729}, {-0.879273, -0.080918}, {-0.355981, 0.831777}, {-0.514107, -0.221697}, {-0.173027, 0.391314}, {0.480640, -0.762188}, {-1.365528, 0.280669}, {-1.190631, -0.468936}, {0.865182, -1.193025}, {0.501712, 1.474804}, {-0.256834, 0.036278}, {0.625077, -0.710525}, {0.236352, 1.463872}, {1.622799, -0.836983}, {-1.629799, -0.761636}, {0.048897, 1.161363}, {-0.782579, 1.512752}, {0.305203, -0.203621}, {0.078598, 0.853412}, {-0.590944, 0.241544}, {0.173496, -1.406007}, {-0.999952, -0.051233}, {0.671370, -0.805464}, {-0.681366, 0.306463}, {0.562013, -1.218074}, {-0.901352, 0.429769}, {-0.149506, 0.266835}, {0.214535, 1.287188}, {-0.169843, -0.687892}, {-0.054779, 1.567896}, {0.240689, 0.339854}, {-0.874400, -0.867453}, {0.412938, 0.074314}, {0.567298, -2.005843}, {0.023167, 0.258225}, {-1.641902, 0.893004}, {-0.335666, -0.481124}, {-0.406708, -0.010981}, {0.658780, 0.316174}, {-0.955737, 0.114306}, {-0.015993, -1.537689}, {1.424653, 0.275514}, {0.391517, -0.073148}, {-0.745075, 0.282317}, {0.345172, 0.271172}, {0.481076, 0.739154}, {-0.356021, -0.874318}, {-0.063438, 0.390779}, {-1.109843, -0.988009}, {0.717374, 0.051986}, {-0.076888, 0.729893}, {1.231962, 0.770958}, {-0.473425, 0.077225}, {-0.541175, 0.273609}, {0.353179, -1.140094}, {0.000531, 0.335460}, {-0.553490, -0.163401}, {-0.267372, -0.190631}, {-1.005119, 0.844056}, {-0.739355, -0.466000}, {1.232900, -0.286890}, {0.072653, 0.156869}, {0.766814, 0.123674}, {0.409127, 0.391504}, {-1.568030, 0.076824}, {0.312427, 1.087632}, {0.194971, 0.012558}, {-0.835118, -0.977949}, {1.155426, 0.060691}, {-0.251222, 0.836983}, {0.405056, 0.222589}, {0.062390, -0.297580}, {0.201353, -0.620657}, {-0.057828, 0.302448}, {0.353545, -0.819051}, {-1.077600, 0.701107}, {0.551567, -0.547460}, {-0.206217, 0.843281}, {0.195007, -0.522554}, {0.786147, 0.742689}, {-0.915141, -0.436052}, {-1.052682, 1.424224}, {0.597211, -0.177125}, {-0.226331, -0.785225}, {-1.502941, 0.305148}, {0.211830, 0.257461}, {0.039781, 0.621727}, {1.764019, -0.364944}, {-0.011250, 0.080853}, {-0.037767, -0.191529}, {0.120387, 0.320196}, {1.215214, 0.159849}, {0.951333, -0.128658}, {0.683926, 0.291417}, {0.465572, 0.464227}, {0.237083, -0.278794}, {0.825346, 1.939517}, {-1.000650, 0.397936}, {-0.422528, 0.457669}, {-0.415993, -0.857881}, {0.654893, 0.925834}, {0.702427, 0.341379}, {-0.992852, -0.485504}, {0.468854, -0.558263}, {1.051053, -1.438013}, {-1.609177, -0.229971}, {-0.338898, 1.308837}, {1.716121, -0.108408}, {-1.842097, -0.281067}, {0.180047, 0.058089}, {0.314948, -0.365466}, {-0.598626, -1.149004}, {0.282546, 0.129074}, {-0.297604, -0.102458}, {-0.134736, 0.128291}, {1.822758, -0.192577}, {0.071825, -0.011008}, {0.497849, -0.199343}, {-0.005720, -0.569142}, {-0.765651, -0.543594}, {-1.172104, -0.011979}, {-0.242091, 0.779012}, {-0.028042, 0.723704}, {0.451185, -0.941516}, {-0.613115, -0.114437}, {-0.972157, 0.133869}, {-0.076452, -0.516053}, {0.083782, 0.204923}, {0.784000, 0.582870}, {-0.183293, 0.586900}, {-0.219489, 0.464479}, {0.144135, 1.149970}, {0.288305, -0.029936}, {1.159682, 0.771728}, {-0.068957, 0.519200}, {-0.352525, -0.019248}, {-0.265696, -0.606806}, {-0.369018, 0.437127}, {0.533511, -0.112122}, {-0.720835, 0.975622}, {1.285089, -0.946088}, {0.455252, 0.289840}, {-1.326309, -0.639170}, {0.108470, -0.476583}, {0.142548, 0.079352}, {-0.029694, 0.643831}, {-1.482084, -0.771038}, {-0.465824, -1.087531}, {0.707385, 0.077513}, {-0.076182, 1.057646}, {0.379631, 0.409768}, {0.188938, -0.425715}, {-0.234099, -0.734066}, {0.043174, 0.676531}, {-1.163066, -0.193611}, {-0.159620, -0.673125}, {0.127940, -1.817839}, {-0.451725, 0.015069}, {0.235742, 0.360075}, {1.748806, -0.323556}, {-1.276301, 0.117820}, {0.166940, 0.213350}, {0.355975, 0.062672}, {-0.320198, -1.132743}, {-0.855608, -1.215465}, {0.013539, 0.799086}, {0.828422, 0.915972}, {1.006847, 0.215101}, {0.595009, 0.252831}, {0.442370, 0.482821}, {-0.693609, 0.417306}, {0.288466, -1.005315}, {-0.396817, 0.004994}, {-0.293724, -1.217092}, {1.212464, 0.943142}, {-0.865108, 0.242460}, {0.390441, 0.080091}, {0.871808, -1.076529}, {0.254390, -0.387861}, {0.532100, -1.371890}, {0.132686, -1.074121}, {0.426648, 0.209831}, {1.146969, 0.503369}, {-0.668154, -0.483259}, {0.259931, -0.150336}, {0.082358, -0.893764}, {0.840501, -0.011365}, {-0.082053, 0.647275}, {0.266846, 1.226206}, {-0.140652, -0.516312}, {0.643273, -0.881556}, {-0.379870, 1.065882}, {0.680447, 0.242642}, {-1.571274, -0.140568}, {-0.535686, 0.628896}, {-0.010813, -0.606330}, {0.361251, 1.002445}, {1.065906, -0.068655}, {-0.224415, 1.117594}, {0.218497, -0.668069}, {-0.429568, 0.891438}, {-0.998373, -0.389920}, {0.226733, -0.730284}, {1.059704, -0.349823}, {-0.625330, -0.250376}, {0.007118, 1.525240}, {-0.162942, -0.147716}, {-0.666501, 1.257793}, {-0.909984, -0.138492}, {-1.032952, -0.006279}, {-0.404583, -1.848097}, {-1.225754, 0.434826}, {1.235797, -0.792226}, {0.783316, -0.750591}, {-0.975057, 0.365633}, {-1.894987, -0.971523}, {-0.147116, 0.722479}, {0.279787, 0.076446}, {1.433566, 0.223812}, {0.878914, -0.054495}, {0.011693, 0.776712}, {-0.558728, 0.481371}, {0.641182, 0.167371}, {-0.669665, -0.807005}, {-0.791191, 0.591605}, {-0.461665, 0.714639}, {0.066197, -0.199694}, {-1.124229, 0.833225}, {-1.295771, -0.025693}, {-0.037691, -0.391047}, {-0.847875, 0.862880}, {0.441229, 0.830506}, {-0.259800, -0.491246}, {-0.240834, 0.911920}, {0.442518, -0.580840}, {1.561534, 1.501570}, {0.280203, 0.397246}, {-0.194177, 0.276828}, {0.944982, -0.351264}, {0.022922, 0.275745}, {-0.867058, -1.632255}, {0.280170, -0.145873}, {0.108578, -0.052305}, {-0.745809, -0.673504}, {-0.616121, -0.379739}, {1.008981, -0.155303}, {0.285808, -0.263033}, {0.601160, -0.612923}, {0.900771, 0.463246}, {-1.013394, -0.618011}, {1.233695, -0.032871}, {-0.521967, -0.979415}, {0.273272, -0.433226}, {-0.240057, 0.465270}, {-0.465325, 0.770377}, {0.988019, -1.088975}, {0.592680, 0.367929}, {0.800055, -0.721733}, {-0.737244, -1.452977}, {-0.427059, 0.281520}, {0.866413, -0.643401}, {-0.182692, 0.588766}, {0.273523, 0.294392}, {0.566235, 0.542400}, {0.129606, 0.397222}, {-0.579409, 0.288147}, {-0.238510, 0.268652}, {1.122152, 0.526534}, {-0.841624, 1.691837}, {0.833782, 1.207890}, {-0.924153, 2.110262}, {-0.474350, -0.238235}, {-0.515517, 0.124354}, {-0.064715, -0.236171}, {0.599675, 1.079644}, {1.849341, 0.024192}, {0.161045, -0.379662}, {0.823915, 0.389173}, {-1.260631, -0.467304}, {0.052479, -0.187389}, {-0.036665, 0.449072}, {0.069593, -0.152828}, {0.068830, -1.285841}, {0.680442, 0.401365}, {-0.160834, -2.024653}, {-0.929411, 0.671114}, {-0.421687, 0.749814}, {-0.065965, 0.527096}, {0.929475, -0.741284}, {-0.077824, -0.442484}, {0.193024, -0.911981}, {-0.101269, 0.845595}, {0.165756, 0.295690}, {0.319546, 0.593792}, {-0.808930, 0.153177}, {1.124408, 0.458110}, {0.771971, 0.222809}, {-0.167902, 0.238733}, {-0.169285, 1.231875}, {-1.585493, 0.216024}, {-0.747700, 0.098100}, {0.340226, -0.192779}, {-1.219417, -0.107218}, {0.228007, 0.456442}, {-0.007155, -0.634464}, {-1.875543, 0.567589}, {-0.519810, -2.179719}, {-0.904975, -2.451302}, {0.736883, -0.419567}, {0.918135, -1.128765}, {0.384645, 0.353239}, {0.434095, -0.284308}, {-0.374883, -0.095262}, {-0.304398, 0.413076}, {-0.748666, 1.124787}, {-0.701671, 0.451972}, {0.395372, 0.412637}, {0.588244, -0.145257}, {0.405163, 1.023715}, {0.744314, 0.958872}, {-0.037084, -0.577777}, {-0.628322, -1.456151}, {0.762014, -0.483828}, {-0.958353, -0.171473}, {-0.113997, 1.464166}, {1.350982, -0.530942}, {-0.172846, -0.004565}, {0.233537, 0.941079}, {-0.200530, 0.383425}, {0.264278, 0.095382}, {0.725498, 1.193517}, {1.280922, -0.026653}, {0.097571, -0.441089}, {0.300984, 0.414280}, {-0.041914, -0.544705}, {1.009088, 0.188493}, {0.866042, -0.355025}, {-0.317615, -0.910565}, {0.489751, -0.574142}, {0.963424, -0.661532}, {-0.318844, -0.517722}, {-0.190129, 0.036885}, {0.186444, -0.158205}, {0.078693, -2.586327}, {-0.266931, 0.725793}, {-0.074349, 0.454831}, {-0.374770, 0.697565}, {-0.467025, -0.014349}, {-0.260550, -0.127574}, {0.666807, 0.559806}, {-0.271031, -0.063661}, {0.095739, 0.428225}, {-0.115755, 0.220370}, {1.075172, -0.821800}, {1.387517, -1.151660}, {-1.516364, 0.833318}, {-0.347857, 0.250917}, {0.299464, 0.749435}, {0.154734, -1.501682}, {-0.503228, 1.050996}, {0.327790, -0.112045}, {0.987849, -0.260528}, {0.449412, 1.852591}, {-0.526460, 0.814047}, {-0.451808, -0.480134}, {0.678355, 0.739133}, {0.317312, -0.328581}, {0.196623, 0.404023}, {0.324616, 1.699530}, {-0.776618, -0.269720}, {0.162184, 0.179116}, {0.297846, -0.710724}, {-0.169321, 0.167991}, {1.769393, 1.076862}, {-1.380745, -0.595286}, {0.568804, 0.534699}, {-0.846191, -0.871218}, {-0.110816, -0.141844}, {0.285220, -0.612886}, {-1.000946, -0.050010}, {-0.101431, -0.938313}, {0.162775, 0.079309}, {-0.582009, 0.345429}, {0.124885, 0.247372}, {-1.328240, 0.510701}, {0.442295, 0.051789}, {0.949722, 0.676903}, {-0.111284, 0.899622}, {-0.437720, -0.322130}, {-0.258154, 0.985684}, {-0.758257, 0.557973}, {-0.421330, -0.073546}, {1.197222, -0.621330}, {-1.526086, 0.768420}, {0.144164, 0.595554}, {0.071158, 0.831643}, {0.121315, 1.096341}, {-0.442333, 0.055718}, {0.261819, -0.929387}, {-0.335194, -0.703410}, {-0.634767, -0.488540}, {-0.152389, -0.588104}, {0.153830, -0.655196}, {-0.631695, 0.677282}, {1.746302, -0.602460}, {0.338172, -0.699808}, {0.901305, 0.660470}, {1.137559, -0.192002}, {-0.332112, 0.081961}, {-0.379872, 0.728106}, {-0.433884, -1.073145}, {-0.247557, 0.726460}, {-0.232024, -0.849128}, {1.187650, -0.092062}, {-0.392385, -0.780775}, {0.413751, -0.559636}, {-0.431597, -0.961824}, {0.463489, 0.645597}, {-0.897957, -0.663863}, {0.842534, -0.688768}, {-0.834302, -0.540110}, {0.174923, -0.886926}, {0.256774, -0.733313}, {-0.513784, -0.360074}, {0.156928, 0.710061}, {-0.779415, -0.205818}, {1.122295, -0.263072}, {-0.067941, -0.241437}, {0.775305, -1.499039}, {-0.959691, -0.336725}, {-0.557347, 0.644162}, {0.097356, 0.117803}, {0.085507, 1.845262}, {0.507571, -0.452847}, {0.157979, 0.584192}, {0.534463, 0.510878}, {0.436897, -0.704341}, {-0.598275, -1.183016}, {-0.479736, 1.993246}, {-1.004427, -0.606627}, {1.175857, -0.209354}, {-0.555928, 0.024468}, {-0.519805, -0.867264}, {0.391430, 0.558873}, {-0.640640, 0.630178}, {-1.513294, 0.362170}, {-0.096170, 0.302206}, {1.549390, 0.176401}, {-0.712729, 0.480838}, {0.400243, -0.498461}, {0.050925, -0.342701}, {0.365122, 0.134136}, {0.517262, 1.140502}, {0.650985, -0.879352}, {0.791790, 0.189469}, {0.654234, 0.497645}, {0.384115, -0.034611}, {-0.125724, 0.640141}, {-0.543262, -1.255624}, {-0.220592, -0.656310}, {-0.130609, -0.147886}, {-0.441347, 0.720036}, {0.400598, -0.080680}, {-0.199337, 0.873405}, {0.032691, 1.536398}, {-0.093394, -1.310056}, {-0.854984, 1.071773}, {0.102072, -0.810930}, {-0.477344, 0.066698}, {0.648895, 0.026279}, {-0.285891, 1.400032}, {-1.216298, -0.236778}, {-0.549714, 0.688796}, {-0.062685, -0.343855}, {-0.341088, 0.238776}, {0.105347, 0.048365}, {0.514533, -0.634733}, {-0.571926, 0.456588}, {0.367809, -0.456143}, {0.979090, -1.286519}, {-1.218222, 0.367350}, {-0.590629, -1.532832}, {-1.718226, 0.242958}, {1.096783, -0.711503}, {0.588342, 0.376010}, {0.744463, 0.371433}, {0.003243, 0.668123}, {0.062086, 0.809872}, {-1.132122, -0.104988}, {0.084982, 0.995250}, {-0.688752, 0.216891}, {0.215504, -0.061450}, {0.452003, -0.690233}, {-0.723135, -0.275493}, {0.357621, -0.515781}, {-0.890998, -0.479333}, {0.498701, -0.923387}, {0.936200, -2.091405}, {-0.879032, 1.485557}, {0.332185, -0.128280}, {0.550373, 0.387625}, {0.632224, 0.633608}, {-0.605378, 1.048378}, {-0.472907, 0.472679}, {-0.926621, 0.312398}, {-0.285207, -0.148072}, {-0.160155, -0.599110}, {0.743425, 0.098568}, {0.668188, 1.079139}, {1.112103, 1.452457}, {-0.727684, -0.625500}, {0.582495, 0.602978}, {-0.533045, -0.290135}, {-0.137783, -0.815375}, {-0.423199, -0.027111}, {-0.199832, 0.858830}, {-0.774598, -0.479101}, {-0.808559, 0.112108}, {-0.095061, -0.376614}, {-0.643351, 1.359531}, {0.932951, -1.417012}, {-0.848382, -0.222414}, {-1.002188, -1.075297}, {-0.939211, -0.668392}, {0.479471, -0.342248}, {-0.651955, 0.089450}, {-0.529345, 1.103163}, {-0.297371, 0.787987}, {-0.692098, -0.212505}, {0.441398, 0.601694}, {1.155338, 0.506600}, {0.806606, -0.500708}, {-0.740199, -1.292330}, {-0.301074, 0.068852}, {0.517610, 0.645486}, {-0.240596, 0.629380}, {0.078991, -0.446581}, {0.463990, -0.548239}, {0.076625, -0.265612}, {0.100232, -0.929770}, {0.066872, 0.589058}, {-0.187736, -0.658316}, {-0.822249, 0.309850}, {-0.917348, 0.269891}, {-0.295888, 0.149902}, {0.910250, 0.779854}, {-0.763011, -0.047352}, {-0.345678, -0.728869}, {0.991317, -1.211605}, {0.654773, -1.301914}, {0.240193, 0.127080}, {0.683297, 0.857939}, {-1.056701, 0.902413}, {0.538899, -0.329668}, {-0.212189, 0.730930}, {-1.240264, -0.481620}, {-0.735395, -0.030127}, {-0.024994, -0.142647}, {0.112034, -0.735685}, {0.427365, -0.104027}, {-0.416424, -1.693984}, {1.186313, 0.507243}, {-1.550728, 0.625737}, {-0.395223, 1.280803}, {0.117296, 0.255594}, {0.078576, -0.343091}, {0.336925, -0.610704}, {0.535086, -0.319883}, {0.586244, 0.858364}, {0.792222, -0.425311}, {-1.174751, -0.317509}, {-0.296053, 1.341013}, {-0.761628, 0.373641}, {0.144214, -0.064574}, {0.308336, -0.161496}, {0.713510, 0.549545}, {0.561945, 0.014662}, {0.618634, 0.376704}, {0.566078, -0.488592}, {0.749551, -0.008964}, {-1.439229, -1.800224}, {0.330291, 0.691467}, {-0.371258, 1.717772}, {0.264541, 1.219097}, {-0.449660, 0.278444}, {-0.925116, -0.622006}, {1.810841, 0.357436}, {-0.361036, -0.568890}, {-0.245604, -0.543745}, {-0.809004, -0.297720}, {0.673398, -1.349551}, {0.320146, 0.122381}, {0.055778, 0.645761}, {-1.114450, 0.141513}, {0.191087, 1.024756}, {-0.230242, 0.131826}, {1.440529, -0.146838}, {-0.309778, -0.905495}, {0.038309, 0.453297}, {-0.322784, 0.721147}, {-0.358682, -0.408192}, {-0.387312, -1.581744}, {0.455011, 0.089694}, {-0.435709, 0.434022}, {1.121966, 0.703677}, {-0.000289, 0.898656}, {0.370298, 0.569843}, {-0.759395, 0.155326}, {0.264595, -0.758241}, {-0.717438, -1.284560}, {0.534397, 0.044761}, {-0.387217, -0.850411}, {0.044635, -0.092650}, {-0.372661, -0.068370}, {0.066867, 0.992163}, {0.309686, -0.088930}, {-0.551975, 1.140835}, {0.282269, -0.265153}, {-0.385975, 0.629002}, {-0.588541, 0.936380}, {-0.450421, -0.312229}, {-0.584466, 0.390126}, {-0.561504, 0.846689}, {-0.327959, 1.138398}, {0.772840, -1.154541}, {0.109965, 0.119873}, {-1.041428, 0.030014}, {-1.054290, -0.520300}, {-0.401694, -1.322928}, {0.339501, -1.053816}, {-1.483539, 0.383590}, {0.179033, -0.005078}, {-0.449563, 0.617536}, {0.159361, -0.300597}, {0.681503, 0.425180}, {0.075334, -0.054530}, {1.127598, -0.722161}, {0.830144, -0.411552}, {0.130735, -0.537078}, {-0.318294, 0.279468}, {1.329998, 0.436047}, {0.628394, 0.202456}, {0.452344, -1.322196}, {-1.328185, 1.430783}, {-0.607721, -0.864380}, {0.504693, -0.747412}, {0.873797, 0.066753}, {-1.716981, -1.433918}, {-1.009027, -0.760573}, {-0.113434, 0.171071}, {-0.037380, 0.247667}, {0.522725, -0.251274}, {0.372523, -0.578671}, {0.363876, -0.147056}, {0.646783, -0.450081}, {1.137476, 0.323571}, {-0.780254, -0.368106}, {1.146234, 0.162286}, {0.762737, 0.417214}, {-1.238331, 0.742666}, {-0.390029, -0.580793}, {0.171207, 0.920070}, {0.371806, -0.258019}, {-1.675454, 0.112764}, {0.314425, 0.532884}, {-0.212717, 0.521552}, {1.230658, 0.602619}, {0.024240, 1.086085}, {-0.753075, 0.421991}, {1.184260, 0.288993}, {-0.156075, -0.349412}, {0.070528, -0.556874}, {1.304863, 0.059083}, {0.075264, 0.205343}, {-0.115468, 0.910225}, {-0.086719, -0.359175}, {0.580907, 1.065438}, {0.059108, -1.456124}, {1.143980, -0.250649}, {-0.532360, 0.202426}, {-1.306963, 0.894754}, {-0.004374, 0.331473}, {0.530959, 1.017206}, {0.896061, -0.486310}, {0.124527, -0.835825}, {0.401800, -0.694786}, {0.131098, -0.507110}, {-0.493495, -1.031719}, {-0.380582, 0.015232}, {-1.773868, 0.203092}, {-0.243199, -0.939094}, {-0.243723, -1.167272}, {0.991581, 0.396060}, {-0.559749, 0.941881}, {0.942520, 1.077600}, {-0.572208, 0.399250}, {-1.198896, 0.820616}, {-0.733767, 0.042879}, {-1.020932, 1.153919}, {-1.048099, 0.943322}, {-0.354407, 0.317066}, {0.308045, 0.211141}, {0.831764, -1.378969}, {-0.007062, -0.513552}, {0.967642, 0.641026}, {-0.668442, 0.316706}, {-1.122864, -0.024464}, {0.316990, 0.362859}, {-0.111627, 0.744548}, {0.185230, -0.636517}, {1.227635, -0.165264}, {-0.506497, 0.297073}, {-0.317230, -0.293662}, {0.344244, 0.550272}, {0.086386, 0.725618}, {-0.374595, 0.121906}, {0.205497, 1.783572}, {0.647253, -0.895754}, {0.162982, -0.022414}, {-0.994075, -1.237339}, {1.033565, -0.151604}, {-0.280396, 0.878138}, {-0.264564, -0.165480}, {0.301752, 0.255018}, {-0.615882, 0.711428}, {0.300740, 0.246028}, {1.845295, -0.214744}, {1.080206, -0.092894}, {0.015605, 0.522865}, {1.172807, -0.447869}, {-0.821485, 0.490399}, {-0.306496, 0.230408}, {0.709987, -0.375342}, {-0.355816, 0.453023}, {-0.212208, -0.678919}, {0.091036, -0.565006}, {0.116062, -0.416735}, {1.050847, 0.339220}, {1.742643, -0.228713}, {-0.434887, -0.201646}, {-0.382463, -0.917137}, {-0.598962, 0.979455}, {-0.678083, -0.074060}, {1.074554, 0.667668}, {-0.175566, 0.080397}, {-0.746242, -0.837080}, {0.569198, -0.288397}, {-0.419237, 0.814960}, {1.110668, 0.610994}, {1.024729, -0.522782}, {0.287071, 0.129891}, {1.059693, 0.192434}, {-0.500546, 1.681387}, {-0.352649, 0.693367}, {1.330871, 0.878471}, {1.452162, 1.296531}, {-0.561816, 1.060767}, {-0.024246, 0.549463}, {-0.558191, -0.475732}, {0.579874, -0.378951}, {-0.386188, 0.616314}, {1.904212, -0.081406}, {0.056011, 0.587343}, {2.079102, -0.449990}, {-0.585793, 0.200955}, {-0.148105, -0.720863}, {-0.871106, 1.178992}, {-0.259457, 0.018706}, {-0.838352, -0.101366}, {1.104726, -0.165176}, {-0.376425, 0.962019}, {-0.383321, -0.621639}, {0.185654, -0.673447}, {0.088111, 0.910684}, {1.972742, 1.066469}, {0.343070, 1.425779}, {0.235284, -1.008437}, {-0.232498, -0.780531}, {-0.285426, 0.387394}, {0.570176, 0.601760}, {0.857470, 0.042025}, {0.823288, 0.485621}, {-0.161700, 0.393089}, {0.653084, -0.695477}, {0.397400, 1.144465}, {0.330464, 1.209299}, {-0.905504, 0.536976}, {0.462790, 0.056269}, {0.181789, 0.418193}, {-0.442622, -0.997435}, {-0.622074, -1.020432}, {0.174594, -0.272027}, {0.195162, 0.424718}, {-0.483125, -0.014181}, {-0.333027, -0.666385}, {-0.225218, -1.387923}, {0.380830, -0.801521}, {0.500795, 0.083064}, {-0.354031, 0.562019}, {-0.322369, 0.355784}, {-0.689934, 1.420140}, {0.505533, 0.590711}, {-0.258165, -0.519527}, {0.484829, 0.168475}, {-0.887195, 0.627565}, {-0.569851, 0.255714}, {0.656937, 1.030732}, {0.253163, 1.183688}, {-0.090994, 0.350419}, {-0.621855, 0.522503}, {1.260944, -0.340844}, {-0.328843, 1.339729}, {-0.187433, 0.904883}, {-0.091476, 1.344383}, {-0.398040, -0.259532}, {0.059961, -0.952296}, {-0.669200, -0.513899}, {0.882696, -0.883357}, {0.445337, 0.858188}, {-0.376645, 0.216174}, {0.251451, 1.293422}, {-0.343713, 0.459366}, {-0.790002, -1.400639}, {-0.281481, 0.156530}, {-0.050578, -0.812539}, {-0.069669, -0.942398}, {0.206314, 1.062811}, {-0.862538, 0.079873}, {-0.142145, -0.179803}, {-0.635656, 0.187704}, {-0.288690, -0.632587}, {0.489273, -1.319410}, {-0.113265, 0.243749}, {-0.547880, 0.138515}, {0.503130, -0.553393}, {-1.042138, 1.207500}, {0.993756, 1.771553}, {0.945115, 0.708578}, {-0.755664, -0.227831}, {2.114421, 0.144923}, {1.322935, 0.007610}, {0.668800, 0.872877}, {1.206511, 1.284430}, {0.119083, 1.037143}, {0.469420, -0.968104}, {0.178111, -0.706050}, {-0.093654, 0.351570}, {1.216869, -0.083921}, {1.128239, -0.721634}, {-0.603763, -1.222727}, {-0.246507, 0.765585}, {-0.469168, -0.154943}, {0.115194, -0.645646}, {-0.628875, -0.134190}, {-0.218869, 1.072319}, {-0.304600, -0.845963}, {0.041486, 0.312707}, {-0.824256, 0.026274}, {-0.398291, 0.206157}, {0.865547, 0.384018}, {-0.518704, -0.244805}, {0.770365, -0.244413}, {-0.853040, 1.803973}, {-0.112336, 0.330401}, {0.389707, 0.066202}, {-1.206726, -0.931216}, {0.890161, 1.029948}, {0.224077, -0.218359}, {-0.835221, 0.379948}, {-0.576608, 0.010603}, {-0.046229, -0.651582}, {0.149031, -0.006860}, {-0.232445, -0.153048}, {-0.361445, -0.624316}, {-0.089316, -0.902206}, {-0.677576, 0.291582}, {-0.694052, 0.341786}, {0.604152, 0.954109}, {-0.451568, -1.027999}, {0.888470, 0.246610}, {1.378708, -0.162367}, {0.807884, -0.154657}, {-0.121010, 0.723971}, {0.756675, -0.287967}, {-1.352302, 0.460834}, {-0.539413, -0.417247}, {0.138693, 0.716212}, {-1.262669, 0.189740}, {-0.127893, 0.098501}, {-2.031114, -0.515120}, {-0.566216, 0.134760}, {-0.894512, -1.013835}, {0.545570, -0.785318}, {0.314537, -0.541041}, {-0.623232, -0.972520}, {-0.239815, -0.060572}, {-0.016385, 0.088118}, {0.233685, 0.536110}, {-0.701300, 0.465990}, {0.772176, -0.169732}, {-0.111524, -0.101524}, {0.058288, 1.465041}, {0.712798, -0.116610}, {0.667813, 0.354510}, {-0.055343, -0.426603}, {0.923450, -0.343740}, {0.351264, -0.768122}, {-0.881422, 0.152680}, {-0.929116, 1.638255}, {0.167936, -0.278059}, {1.027618, 0.529101}, {-0.777487, -0.773029}, {-0.171119, -0.587115}, {-0.630818, 0.969008}, {0.561234, 0.268168}, {0.106045, -0.638529}, {1.266788, -1.129971}, {-0.995631, -0.558621}, {0.188110, -0.702478}, {0.335395, -0.240620}, {-0.116215, 0.260554}, {0.680446, -0.603189}, {0.904362, 1.717741}, {-0.015833, 0.746788}, {-0.148045, 0.051645}, {0.009869, 0.846651}, {0.298090, 1.350605}, {1.345340, -1.423719}, {-0.754747, -1.335279}, {0.419094, -0.864441}, {-0.145479, -0.797688}, {0.135712, 0.991836}, {0.225006, -0.060168}, {0.355427, 0.550726}, {1.954229, 0.656213}, {-0.169736, 0.311985}, {0.939487, 0.650424}, {0.789964, -0.684274}, {0.164532, 0.093543}, {0.060515, 0.106031}, {-0.024316, -0.913373}, {-0.582858, 0.242192}, {-0.599441, 0.706627}, {-0.037631, -0.529508}, {0.108102, 0.029830}, {-0.766994, 0.601282}, {-1.162212, -0.241856}, {-0.283526, 1.599770}, {-1.549907, -0.505364}, {0.722774, 0.073483}, {-1.024597, -0.392075}, {0.858099, -0.287027}, {0.327537, -1.007954}, {0.667032, -0.025028}, {0.975513, 0.143732}, {0.018982, 0.474133}, {-0.098149, 1.106961}, {-0.108187, -0.707083}, {-0.219794, 0.475886}, {0.210508, -0.510677}, {-0.416087, -0.900413}, {-0.752409, -0.392688}, {0.327123, -0.496539}, {-0.879819, -1.010528}, {-1.401704, -0.483436}, {-1.566675, -0.015039}, {-0.550926, -0.315944}, {-0.711913, -0.986015}, {0.408434, -0.200798}, {-0.921718, 0.340502}, {-1.323506, -0.767555}, {0.762208, -0.010204}, {1.414222, -0.108579}, {-1.279120, -0.115126}, {-1.063315, -0.287798}, {-0.612699, 0.708367}, {1.058841, -0.974767}, {-0.887090, 0.515838}, {-0.169713, -0.586082}, {0.468957, -1.057315}, {-1.137185, -0.201351}, {0.857001, 0.506281}, {-0.694478, 1.116885}, {-0.101536, 0.252581}, {-0.186678, 0.121469}, {0.237319, 1.220649}, {0.590731, 0.106154}, {-0.307152, -0.195058}, {-0.534827, 0.484876}, {1.112901, 0.239961}, {0.050445, 0.481539}, {0.545830, 0.854745}, {-0.687006, -0.117939}, {0.167796, 0.067286}, {-0.200961, -0.851043}, {-0.029250, -0.070030}, {0.571111, -0.402512}, {-0.291893, -0.486622}, {0.199427, -0.464909}, {0.485504, 0.196643}, {-1.203786, 1.305744}, {-0.457443, 2.058590}, {-0.206683, -0.175040}, {0.166361, 0.461590}, {-0.426843, -1.352936}, {0.501698, 0.238129}, {-0.809285, -0.792133}, {-0.655155, 0.336089}, {0.726113, -1.582158}, {-0.150580, 0.179097}, {0.715039, -1.127365}, {-0.012255, -1.422302}, {-0.291115, -0.120922}, {0.109163, 0.722364}, {0.653337, 0.016132}, {0.459079, -0.773381}, {-1.171660, 1.182249}, {-0.102436, 0.837007}, {0.845445, 0.528685}, {-0.409713, 0.406902}, {0.830749, 0.057450}, {0.671611, 0.782030}, {0.200145, -1.167993}, {-0.205830, -0.256860}, {0.341035, 0.280555}, {-1.201147, -0.323218}, {-0.212821, 0.050460}, {0.742152, -0.323082}, {0.819270, 0.195198}, {0.669024, 0.897072}, {-0.501893, -0.365942}, {-1.308934, 0.089249}, {-0.037597, -0.113499}, {-1.004372, 0.368385}, {0.141077, -0.067610}, {0.275376, -0.743583}, {-0.191894, -1.129273}, {-1.258964, -0.039886}, {0.728804, -1.000285}, {1.086578, -0.617149}, {-0.855317, -0.310454}, {-0.147711, 0.408143}, {-0.517206, 0.043758}, {0.719426, -1.283598}, {-0.235939, 0.668859}, {-0.380010, -0.313257}, {0.316778, -0.118759}, {-0.262927, -1.567183}, {-0.282733, 0.420140}, {0.818925, -0.012589}, {0.357610, 0.577911}, {-0.190272, -0.414123}, {0.625359, 1.169565}, {-0.917634, 0.809205}, {0.909000, -0.614465}, {-0.273865, 0.307313}, {0.708742, 1.146401}, {-0.736018, 1.297624}, {-0.132588, -0.042389}, {0.752216, -0.630562}, {0.602787, -0.506396}, {0.633488, 0.200361}, {0.862136, -0.559107}, {0.745865, -1.328896}, {-0.015377, -0.603058}, {0.012261, 0.207465}, {-1.262966, 0.309847}, {-0.816732, -0.048421}, {1.368862, -0.089376}, {-0.950272, -0.966439}, {0.201282, -0.088005}, {-0.675286, 0.791768}, {0.857350, -0.330363}, {0.297582, -0.494692}, {-0.536755, 0.002392}, {-0.209953, 0.732953}, {-0.443116, -0.086068}, {-1.175001, 0.573199}, {-0.515406, 0.620601}, {0.519220, 0.365639}, {0.179975, -0.360670}, {-0.307683, 0.106896}, {0.132153, 0.727465}, {-0.280980, -0.228803}, {0.239138, -0.878369}, {-0.037641, 0.340422}, {0.908774, -1.101317}, {0.049850, -0.299075}, {0.019113, 0.674994}, {-0.015975, 0.379414}, {0.288954, -0.809359}, {0.347018, -1.157598}, {0.074732, -0.537650}, {0.996135, -0.001765}, {0.056827, -0.488387}, {-0.833093, 0.386931}, {0.758476, 0.872903}, {-0.745092, -0.444934}, {-0.224247, -0.116532}, {-0.204749, 0.261726}, {0.404937, 0.616612}, {0.339130, 0.532116}, {0.321454, -0.851996}, {0.318065, 0.804013}, {0.255111, -0.303607}, {0.430730, 0.409011}, {0.336340, -0.608268}, {0.689794, 0.099887}, {0.120092, 0.052738}, {-0.588516, -0.366448}, {0.325651, -0.658579}, {0.947989, -0.734417}, {0.016734, -0.728917}, {-0.841605, 0.381322}, {0.231804, 0.206317}, {1.051284, -0.490680}, {-0.050906, -0.211480}, {-0.105047, 0.477795}, {-0.252414, -0.626855}, {-0.057217, -0.134807}, {1.067822, -0.178322}, {-0.086659, -1.147155}, {-0.741801, 0.582173}, {0.803925, -1.119881}, {0.543473, 0.197205}, {0.407991, -0.434675}, {0.107264, -0.319198}, {1.091457, 0.760169}, {-0.013718, 0.000686}, {-1.248275, 0.208178}, {-0.899392, 0.261502}, {-0.631148, -0.302873}, {0.083128, 0.705050}, {-0.778608, -0.788078}, {1.135346, -0.872922}, {-1.157340, -0.867567}, {-0.593543, -2.187029}, {0.093469, 0.234575}, {0.443437, -0.304265}, {1.551142, -1.422596}, {0.442576, -1.577903}, {0.192425, 0.160683}, {-0.902680, -0.431437}, {-1.004525, -0.745898}, {-0.483396, -0.192180}, {1.080987, -0.266741}, {-0.903296, 1.170854}, {-0.364402, 0.684777}, {0.309202, -0.017096}, {-0.492831, -0.600043}, {-1.612991, -0.804477}, {-0.407146, -0.758813}, {0.829137, -0.603992}, {-0.251557, -0.383196}, {-0.743938, 0.109216}, {1.011679, -0.340907}, {0.241315, 0.068707}, {-1.006463, 0.402521}, {0.031220, -0.028792}, {-0.417251, -1.398311}, {0.775474, 0.111723}, {-1.223098, -0.658243}, {2.340365, -0.265007}, {0.301015, -0.206530}, {-0.200633, -0.557171}, {-0.202832, 0.319060}, {-0.010049, 0.742861}, {0.106082, 0.811121}, {0.055592, -0.191956}, {0.355395, 0.583195}, {0.282830, -0.170406}, {0.025638, 1.918779}, {0.944669, -0.058716}, {1.264998, 1.490664}, {0.823037, 0.092036}, {1.217579, -0.491040}, {0.037653, -0.782702}, {0.149131, -0.656208}, {0.410757, 1.584757}, {1.325665, 0.028426}, {0.971514, -0.170968}, {0.142927, -0.349601}, {-0.675615, 1.239243}, {1.118417, 0.482521}, {-0.525994, 0.493175}, {-1.053111, -0.390079}, {0.030564, 0.067288}, {-0.074059, -0.899509}, {-0.360663, 0.382902}, {0.550419, 0.853873}, {-0.544569, -0.824151}, {0.568337, 0.130398}, {-0.604970, 0.925242}, {0.220753, -0.254279}, {0.337711, 0.557667}, {-0.753422, -0.586669}, {0.428708, -0.232984}, {1.794279, 0.483338}, {1.304773, -0.365589}, {-0.433436, -0.791504}, {-0.214934, 0.966716}, {-0.305057, 0.580224}, {-0.106751, -0.822595}, {1.028315, -0.877748}, {0.852443, -0.409121}, {0.625301, 0.180248}, {1.396398, 0.143160}, {1.108587, 0.541150}, {0.468621, -1.043421}, {0.906804, 0.715312}, {-0.766680, 0.905431}, {-0.441257, 0.668639}, {0.284121, -0.043281}, {-0.616953, 0.794195}, {0.163532, -0.395955}, {-0.412360, -0.597153}, {0.241518, -0.585513}, {0.482960, 0.567925}, {-1.054434, -0.649045}, {0.605650, -0.378689}, {-0.609803, 0.359699}, {1.365516, 0.646388}, {-0.344219, 0.120575}, {-0.654285, -0.631225}, {0.468870, 0.618246}, {-0.390055, 0.556382}, {-0.508965, 0.454676}, {0.116800, 0.138547}, {-1.168829, -0.304091}, {-0.385664, -0.659049}, {-0.639212, -1.396839}, {1.224527, 1.061921}, {-0.712606, -0.081001}, {0.120125, -0.300214}, {0.179791, -0.636082}, {-0.605018, -0.693630}, {-0.678318, -0.318564}, {-0.598472, -0.031708}, {-0.520574, -0.296742}, {0.067744, -0.796947}, {0.696445, 0.463145}, {0.094760, -0.023756}, {-1.028425, 1.287291}, {-0.669956, 0.116063}, {-0.209304, 0.099915}, {-1.108453, -0.002002}, {-0.060206, -0.515472}, {0.981295, 0.380674}, {0.263531, -0.667106}, {0.250979, 0.072504}, {-0.096590, 0.766292}, {0.920231, -0.755035}, {-0.505097, -1.091862}, {-0.615787, 0.117510}, {0.368374, 0.389098}, {-0.126383, -0.430203}, {0.164085, -0.529933}, {0.599555, -0.034148}, {1.102519, -0.438562}, {0.085070, -0.251993}, {0.865140, 0.585431}, {0.934833, -1.057558}, {0.249809, -0.620187}, {0.265592, 1.080486}, {-0.634548, -0.038819}, {-0.150059, 0.264938}, {0.250318, 1.521858}, {-0.173384, -0.223300}, {0.129138, 0.492724}, {1.592594, 0.165069}, {-0.331133, 1.012240}, {-0.697260, -0.195315}, {-0.312506, -1.024730}, {-0.234223, -0.824909}, {-0.383885, 0.106128}, {-0.175865, 0.392687}, {-0.510849, -0.462690}, {-1.018937, 1.151529}, {-0.038301, -0.066566}, {0.530731, 0.127405}, {-0.208679, -0.107666}, {0.120497, 1.016165}, {-0.052440, 0.725401}, {1.832884, -0.342007}, {0.092143, 0.258115}, {-1.159934, -0.970688}, {0.589430, -0.586012}, {1.209632, 1.986167}, {-0.366520, 0.055513}, {0.384307, 0.775611}, {-0.877936, -2.193519}, {-0.003713, 1.002400}, {-1.173911, 0.755036}, {-0.477599, 0.075858}, {0.388147, 0.137404}, {-0.270243, -0.165515}, {-0.260462, 1.171696}, {-0.150456, -0.885312}, {0.469399, -0.599552}, {-0.597813, -0.750128}, {0.095583, -0.274177}, {-0.509728, 1.587391}, {0.972749, 0.614814}, {-0.752960, -0.189362}, {1.062092, -0.210413}, {-0.114508, 0.325050}, {1.881627, 0.271021}, {-1.128107, -0.567826}, {0.014185, -0.695967}, {0.338390, 0.827812}, {-0.274898, 0.464329}, {0.550296, 0.200794}, {-0.197346, -1.187593}, {-0.155908, -0.802583}, {-0.207092, -0.070371}, {-0.486399, -1.113643}, {-0.129494, -0.242884}, {0.631126, 0.237594}, {0.772150, -1.293381}, {-0.148225, 1.069063}, {-0.557726, 0.180037}, {-0.251261, 0.420506}, {-0.687525, -1.530252}, {0.308271, -0.038557}, {-1.212547, 0.035603}, {-0.060400, -0.303898}, {1.425639, -0.355048}, {0.144429, 0.420649}, {-0.688609, -0.997562}, {0.259183, -0.891376}, {0.275503, -0.114022}, {-1.060990, -0.859264}, {-1.590535, -0.179986}, {-0.197122, -0.339152}, {-1.741402, -1.241081}, {-0.101596, -0.103421}, {-0.576440, -0.998940}, {-0.159847, -0.078504}, {-0.598367, -0.701100}, {0.454856, 0.507896}, {-1.739180, -0.913037}, {1.341986, 0.134193}, {-0.290217, -0.535215}, {0.783955, -0.574633}, {-0.126710, -1.241383}, {-1.693904, -0.209030}, {0.500406, 0.058675}, {0.876139, -0.205673}, {0.347464, 1.353533}, {-0.250533, -0.590198}, {-0.049717, 0.984800}, {-1.667565, -0.013165}, {0.328547, 0.584034}, {-0.578874, -0.321222}, {0.607281, -0.663825}, {-0.042807, -0.635103}, {-0.198325, -0.054844}, {-0.567400, -1.007322}, {0.181597, -0.281650}, {0.922825, 0.237707}, {-0.725941, 0.008540}, {0.146820, 0.712341}, {-2.004479, 0.919673}, {-0.437029, -0.158475}, {0.009848, 0.194884}, {0.064501, 0.515108}, {0.966986, -0.106012}, {0.431525, -0.640987}, {0.226213, 0.704404}, {-0.389554, 0.297250}, {0.227194, -0.123749}, {0.958163, 0.684737}, {-0.763641, -1.299124}, {-0.519729, 1.144937}, {0.517323, 0.380140}, {0.358759, -0.376012}, {0.485276, -1.189659}, {-1.128039, 0.154856}, {0.012640, -0.800780}, {-1.023062, 0.541789}, {-0.088985, 1.220985}, {-0.274541, 0.330453}, {-0.223176, 0.277022}, {-1.250833, 0.859561}, {0.166349, -1.059528}, {0.706370, 1.301363}, {0.865846, -0.966971}, {-0.746104, -0.181980}, {-0.382071, -0.287606}, {-0.696105, 0.935651}, {-0.754779, -0.608633}, {1.558518, -0.068025}, {-0.730162, -1.159437}, {-1.243312, -0.025267}, {0.538259, -0.151188}, {0.755668, 0.731049}, {0.362774, -1.112199}, {0.951361, -0.710292}, {1.205493, 0.703087}, {-0.384461, -0.900938}, {0.558954, 0.738985}, {0.534887, -0.264438}, {0.451519, -0.094902}, {0.271715, -0.849368}, {-0.622068, -0.879637}, {0.747059, 0.748628}, {-0.141696, -0.554025}, {-0.162613, -0.058699}, {-0.438999, -0.305623}, {-0.974950, -0.030913}, {-0.836826, -1.211227}, {0.066026, -0.500706}, {0.317875, 0.639406}, {1.768633, -1.108933}, {-0.169267, -0.005666}, {0.308455, 0.547168}, {-0.792556, -0.067929}, {-1.053188, -0.742882}, {-0.439344, 1.796462}, {0.928509, -1.153488}, {-0.883353, 0.292079}, {1.150053, -0.757907}, {0.159497, 0.386146}, {-0.575171, 0.435701}, {-0.104603, -0.597094}, {-0.010359, -0.762375}, {0.533096, -0.049087}, {-0.622529, -0.504482}, {-0.649558, -0.521691}, {1.604563, -0.953022}, {0.483842, 0.422572}, {0.604771, 0.258910}, {-0.420070, 0.075085}, {-0.670900, -0.537843}, {-0.643097, -0.750436}, {2.158761, -0.134695}, {-0.699376, 1.792557}, {0.316584, 0.159085}, {-1.290301, 0.659405}, {-0.470062, 0.491114}, {-0.217911, 0.097260}, {-0.883950, 0.411357}, {-1.137233, -0.417558}, {-0.060187, 0.823960}, {-0.527339, 0.909397}, {0.614027, -0.516774}, {0.326730, -0.720490}, {-0.732945, 1.140511}, {0.527214, -0.857791}, {0.354728, 0.527356}, {-1.042879, -0.843408}, {0.388951, -0.250227}, {-0.760452, -0.272504}, {0.670556, 1.780283}, {0.178493, -0.103607}, {0.281239, 0.573283}, {-0.276774, -0.666889}, {-0.369088, -0.515050}, {-1.566099, -0.292304}, {0.241018, 0.111041}, {-0.579810, -0.131634}, {0.614676, -1.020588}, {2.122965, -0.652456}, {1.003513, -0.009904}, {0.384063, -0.315227}, {1.662325, -1.228987}, {0.421827, -0.875429}, {0.615807, -1.046427}, {-0.369778, 0.103087}, {-1.400076, -1.351331}, {0.243226, 0.565874}, {-0.190009, -1.569295}, {0.431636, -0.614997}, {0.640676, -0.202974}, {0.723470, 0.490124}, {0.178854, 0.920912}, {0.291047, 0.310138}, {1.437523, -0.613064}, {0.311316, 1.098868}, {0.064226, 0.222299}, {0.635425, 0.681261}, {-2.079335, -0.027042}, {-1.620853, -0.434969}, {-0.771540, -0.951936}, {0.075813, -0.359065}, {-0.196248, 0.026575}, {0.549859, -0.479033}, {0.779249, -0.479395}, {0.489763, 0.682128}, {0.779679, 0.447111}, {0.248959, -0.926465}, {-0.978864, -0.625647}, {0.487766, -0.729178}, {0.488021, -0.395398}, {-1.132487, -0.266249}, {-0.946289, -0.121230}, {-0.043873, -0.494146}, {-1.797368, -0.163129}, {0.604546, 0.840547}, {-0.100001, 0.205591}, {-0.704900, -0.745045}, {0.141108, -0.367080}, {0.714093, 0.338304}, {-0.211548, 0.288865}, {-0.139203, 1.696446}, {0.398683, -0.856051}, {-1.399684, 1.056120}, {-0.172748, -0.560887}, {-0.742047, -1.011942}, {0.435281, -1.466353}, {0.372200, 0.312796}, {-0.470258, 0.052912}, {-0.720672, -0.015639}, {0.525673, 0.064041}, {0.322946, 0.778343}, {-0.715545, 0.200291}, {-0.638279, -0.376644}, {0.318214, 1.262688}, {0.518733, -0.228811}, {-0.587650, -1.462563}, {0.669318, -0.231777}, {0.771174, 0.304270}, {-0.186317, 1.664676}, {0.111617, -1.626430}, {-0.574343, 1.310556}, {1.093523, 1.010366}, {-0.051229, 0.373412}, {-1.055527, -0.123199}, {1.258413, -0.434222}, {0.204129, 0.827730}, {-0.609029, 0.323469}, {1.834988, 0.769506}, {-0.473224, 0.009616}, {-0.936846, -1.464676}, {0.419282, 0.867511}, {0.691505, -0.431348}, {0.462740, -0.806883}, {-0.077804, 0.056353}, {0.201756, 0.460018}, {-0.101533, -0.186722}, {-0.683106, -0.812029}, {0.393013, 0.220783}, {0.960070, 0.016689}, {-0.818561, 0.072895}, {-0.304093, 0.221132}, {0.432887, 0.613225}, {0.799350, 1.722360}, {-1.201054, 0.101461}, {-0.284951, -0.099726}, {-0.284407, 1.019124}, {1.161096, -1.015084}, {0.470649, 0.547416}, {0.910485, -0.148244}, {0.903437, -0.639555}, {0.414630, -0.744832}, {-0.807047, 0.328593}, {0.546277, 0.129403}, {0.979881, 1.317070}, {0.815188, -1.157551}, {0.652102, 0.325572}, {0.986148, -0.443291}, {0.321192, -0.168401}, {-0.095464, 0.134572}, {-0.644626, -0.367752}, {1.186512, 1.426639}, {-1.268228, -1.212135}, {0.329307, -0.048942}, {-0.453068, 0.181014}, {-0.120221, 1.319718}, {0.203761, 1.057543}, {0.323603, -0.370886}, {1.278257, 0.506360}, {-0.137128, -0.217014}, {-0.123980, -0.196150}, {0.969988, 0.131635}, {1.034595, 0.043616}, {0.051072, -0.038913}, {0.475718, 0.545762}, {0.860966, -0.183492}, {1.509751, 0.139050}, {0.183777, 0.478787}, {0.452950, 0.262511}, {1.193602, -0.473727}, {1.279293, 1.055423}, {0.496909, 0.719865}, {1.540333, -0.346943}, {-0.293427, -0.718329}, {0.304463, 1.034630}, {0.081471, -1.789542}, {-0.654413, 0.275167}, {-0.234365, 0.326354}, {-1.026665, 0.836313}, {1.740778, -0.446498}, {1.571499, 0.008159}, {-1.551162, 0.190736}, {0.766180, -1.958868}, {-0.246677, 0.141081}, {-1.245445, -1.767784}, {0.338713, -0.398232}, {-0.167049, 0.337391}, {1.670908, -0.878596}, {-0.346210, 0.066791}, {-0.167848, -0.262351}, {-0.838038, -0.908504}, {0.665549, -0.241012}, {0.507867, -1.133164}, {0.083940, -0.788292}, {0.689884, 0.002313}, {0.188896, 0.230707}, {-0.395535, 0.585358}, {0.759700, 0.630998}, {0.406334, 0.692208}, {-0.523691, 0.244080}, {-0.358877, -0.192886}, {0.658757, -1.197811}, {0.276591, -0.550659}, {1.042222, -0.377038}, {-0.519696, 0.588037}, {0.042507, 0.893983}, {-1.038433, -0.388424}, {0.229740, 0.097563}, {0.050357, 0.853214}, {1.178250, 0.666711}, {1.119683, 0.327372}, {0.299392, 0.581337}, {-0.726023, 0.958577}, {-2.087364, -0.040116}, {-0.733430, -0.365305}, {-0.183230, 0.747083}, {0.195544, -0.669629}, {0.096009, 0.081064}, {-0.158337, 0.140540}, {-0.141282, 1.098426}, {-0.200366, -0.260091}, {0.179909, 0.324990}, {-0.177505, 0.710188}, {0.418389, 0.656253}, {0.201164, -0.480767}, {-0.663206, -0.632061}, {0.866354, 0.298333}, {0.580605, -0.186255}, {1.573994, -0.905037}, {-0.331628, -0.857198}, {0.740416, 0.061667}, {-0.564123, -0.882095}, {-0.015107, 0.034831}, {0.843711, 0.918154}, {-1.214840, 0.950409}, {-0.362231, 0.026602}, {-0.345554, 0.438305}, {-0.413601, 0.471900}, {-1.395099, -1.305808}, {-0.405840, -0.326921}, {0.411408, -0.368048}, {0.883666, -0.358755}, {-0.035198, 0.003136}, {0.954488, -0.213214}, {0.332939, 0.172640}, {0.959216, 0.688263}, {0.018761, 2.039100}, {2.100315, 0.051013}, {-0.271325, -0.485585}, {0.510974, -0.232181}, {-0.510400, -0.715401}, {0.026534, -0.521681}, {0.089140, 0.147550}, {-0.756320, 0.829660}, {-0.500559, 0.266032}, {-0.082253, 0.526760}, {-0.317537, 1.100217}, {0.537659, 0.004379}, {-0.511521, -0.070164}, {-0.950504, 0.979454}, {-0.434086, -0.894423}, {-0.161771, 0.383922}, {0.169965, 0.443431}, {1.126951, 0.313781}, {-0.083320, 0.064187}, {1.105827, 0.058595}, {1.599304, 1.457213}, {0.097539, -0.136787}, {0.050654, 0.763772}, {-0.815735, 0.069732}, {0.712392, 0.340298}, {-0.349751, 1.663162}, {-0.520406, 0.437961}, {-0.182619, -1.106802}, {1.249108, 0.082180}, {-1.228325, -0.360564}, {-1.231868, -0.419608}, {-0.294485, 0.226044}, {-0.060826, 0.702817}, {-1.200765, 0.467426}, {-0.116198, 0.278628}, {1.214728, 0.324470}, {0.225038, 0.563450}, {-0.007607, -0.256299}, {-1.010766, -0.953903}, {-0.277060, 0.812392}, {0.707381, 0.168940}, {-0.918905, 0.693847}, {0.282631, -0.353127}, {0.225166, 1.501837}, {-0.954247, -0.586650}, {0.318076, -0.497355}, {-0.418723, 0.065298}, {0.084946, 0.228400}, {0.307594, 0.474237}, {-0.107772, -0.421675}, {-0.232476, 0.576236}, {0.586626, -0.859792}, {0.283680, -1.605937}, {0.065020, 0.212051}, {-0.474997, -0.555701}, {0.353018, 0.138387}, {-1.107164, 0.434415}, {0.138023, 1.048943}, {0.390060, -0.475007}, {0.216655, -1.005081}, {-0.421095, 0.760430}, {0.827316, 0.631502}, {-0.349654, 0.360977}, {0.492383, 1.430285}, {-1.500687, 0.296066}, {-0.380852, -0.291811}, {-0.484800, -0.267565}, {-0.346712, 0.186646}, {-0.083542, 0.405885}, {-0.188996, 1.142481}, {1.320101, 0.391448}, {-0.146608, 0.368600}, {-1.163383, 0.327332}, {0.298202, -0.377332}, {-0.805110, 0.443164}, {-0.871706, 0.069784}, {0.373116, -0.326406}, {-0.607307, 0.912847}, {-0.607633, -0.101585}, {1.970281, 1.321946}, {-0.148369, 0.105401}, {-0.282688, 0.816048}, {1.025746, 0.483259}, {-0.713131, 0.610143}, {0.300423, -0.665059}, {-0.374302, 0.666611}, {-0.869616, 0.119894}, {1.018758, -0.715852}, {-0.928172, -1.549172}, {0.085113, 0.833680}, {1.108642, 0.496890}, {-1.549615, -1.217051}, {0.266179, -0.905077}, {-0.215376, 0.513998}, {1.069599, 0.120225}, {-0.307138, -0.329984}, {-0.571582, -0.130708}, {2.142098, -1.288388}, {-0.420347, 1.053044}, {0.495939, -0.195319}, {0.502492, 0.785095}, {0.766173, 0.428730}, {-0.099107, -0.093918}, {0.729183, -0.195718}, {0.426967, 0.415027}, {-0.895545, 0.886429}, {-0.968602, -1.162273}, {0.416021, -0.046332}, {-1.219170, 0.166351}, {0.586550, -0.244157}, {0.838475, -0.615897}, {-0.672975, -0.618807}, {-0.360221, -0.009750}, {-0.674237, -0.787390}, {0.760231, -0.187308}, {-0.812272, -0.645441}, {0.790059, -0.221013}, {-0.232809, -1.981273}, {1.111118, 0.087870}, {0.404225, -1.245472}, {0.461102, 0.105999}, {0.013247, 1.296239}, {-0.108755, 0.536528}, {-1.449621, 0.250056}, {-0.195004, -1.416802}, {0.037800, -0.364457}, {0.552454, -0.675048}, {-0.065913, 0.268582}, {-0.831306, -0.075565}, {0.515745, -0.533599}, {-1.138916, -1.364227}, {-0.070245, -0.567231}, {0.128759, 0.526600}, {0.665589, 0.326906}, {-0.224787, 0.432314}, {-0.228078, -0.843603}, {-0.031752, -0.495566}, {0.022634, -0.591376}, {-0.700905, 1.335250}, {-0.661231, 0.287638}, {0.023830, -0.433696}, {-1.666931, -1.034963}, {0.531734, -0.239730}, {-0.827702, -1.580614}, {-0.751258, 0.940162}, {-0.287944, -0.191240}, {-0.907179, -0.244279}, {0.709229, -0.938878}, {0.900749, 0.288377}, {-0.676512, 1.189215}, {0.514203, 0.472178}, {0.721634, -0.583054}, {1.061447, 0.267226}, {-1.211157, 0.301310}, {-0.167337, -0.373970}, {0.028457, 0.985726}, {0.110579, -0.098623}, {-0.172895, -0.801720}, {1.208278, 0.474267}, {-0.384456, -1.699807}, {-0.218454, -0.500844}, {-0.106211, 0.296750}, {-1.006444, -0.168547}, {0.382713, -0.009482}, {0.331157, -0.878432}, {0.031083, -0.458680}, {-0.365436, -0.454964}, {-0.398935, -0.993382}, {-0.769671, 0.501222}, {-0.051267, -0.864739}, {1.167413, 0.251483}, {-0.638681, -0.123305}, {-0.903249, -1.315449}, {1.127817, 0.729152}, {-1.489803, -0.197712}, {0.258543, -0.400706}, {-0.067041, -0.250410}, {1.170671, 0.585027}, {-1.025814, -0.952182}, {0.191594, -0.695594}, {1.088652, 0.211765}, {-0.672739, 0.157990}, {0.594503, -0.652204}, {0.621315, -1.149470}, {-1.002667, -0.051699}, {-0.548659, 0.070243}, {-0.256829, -0.297262}, {0.978255, 0.627959}, {0.645651, 0.839562}, {0.851345, -0.772047}, {0.605615, -1.084795}, {-1.066617, 0.157309}, {-0.431485, -0.334219}, {-0.065427, -1.128954}, {-0.568002, -1.040160}, {0.572203, -0.754751}, {0.659738, -0.070165}, {-0.381698, -0.328700}, {-1.564251, 0.477004}, {0.088705, -1.206888}, {0.054398, 1.727333}, {-0.225188, -0.242253}, {0.166157, -0.688561}, {-0.949477, 0.963288}, {0.412511, 0.460764}, {-0.156152, -0.188229}, {1.155036, 0.424556}, {-0.490640, -0.278005}, {-0.412096, 0.287758}, {1.863923, -0.062265}, {-0.222627, 0.474599}, {1.395178, 0.343841}, {-0.147666, -1.077881}, {-1.174875, 0.087301}, {0.690832, 0.894002}, {0.207429, -0.821849}, {1.005274, 1.609804}, {0.371987, -0.429320}, {-0.514226, -0.590668}, {-0.026782, 0.397409}, {1.015714, 0.810520}, {0.927649, 0.649634}, {0.776910, -0.296798}, {0.976134, 0.656214}, {0.003040, -0.262665}, {0.315733, 1.042726}, {-0.596531, 0.246790}, {-0.402001, 0.608359}, {0.581907, 0.501635}, {1.279527, 0.729790}, {0.490545, 0.881851}, {1.094798, -1.607173}, {0.965914, 0.484647}, {-0.960222, 0.649783}, {0.364875, -0.219241}, {-0.077840, -0.737867}, {0.774998, 0.247243}, {-0.119677, -0.232309}, {-0.570180, -0.118825}, {0.977602, 1.283441}, {0.831912, -0.804168}, {-0.196479, -0.062512}, {0.656737, 0.855329}, {0.528258, -0.285970}, {-2.250344, 0.084504}, {0.546068, 0.570570}, {-0.858377, -0.909879}, {-1.108219, 0.488554}, {-0.490006, -0.454847}, {0.049783, -0.432571}, {0.144726, 1.065848}, {-1.394773, 0.611523}, {0.082976, 0.531777}, {0.285337, -0.535880}, {0.308235, -0.704091}, {-0.234517, 0.379574}, {-0.039539, 0.828459}, {0.357857, -0.609556}, {0.753604, -1.306881}, {0.790172, 0.034169}, {0.056248, -0.121251}, {0.186954, 0.648174}, {-0.995005, 0.274405}, {-1.001077, 0.860050}, {-0.057085, 1.511382}, {-1.206087, 0.878339}, {0.137995, 1.844478}, {-1.493125, -0.998766}, {0.745860, -0.643919}, {-2.238097, 1.200986}, {-1.456539, 0.719147}, {0.950348, 0.805055}, {-0.011920, 1.722326}, {1.586502, -0.601509}, {-0.761579, -0.427211}, {-0.442142, 0.336680}, {0.366955, -0.402493}, {0.706776, 1.396136}, {-0.456781, 0.836723}, {1.000545, -0.568838}, {0.385663, 0.662292}, {0.477626, 0.829285}, {-0.458256, -1.032467}, {-0.359687, -0.822045}, {-0.684604, 0.498532}, {-1.225389, 0.177601}, {0.432596, 0.406977}, {-0.151285, 0.179645}, {1.147279, -1.685706}, {0.525030, 0.020319}, {-0.118010, -0.066492}, {-0.080738, 0.414352}, {0.066255, 0.637437}, {0.213317, -0.937024}, {0.349175, -0.783824}, {-0.536209, 0.153490}, {-0.439903, -0.158521}, {0.270046, 0.415777}, {0.680110, -0.429989}, {0.868958, -0.394753}, {-0.327469, -0.604439}, {0.018249, 0.086110}, {0.863033, -0.847249}, {0.819329, 0.546402}, {1.547121, -0.605341}, {-0.742487, 0.218372}, {-0.531181, -0.785213}, {-0.414961, -1.837414}, {-0.697729, -0.105849}, {0.562781, 1.161757}, {-0.252197, 0.174986}, {1.019893, -1.022593}, {1.147283, -0.216186}, {-0.192484, 0.544878}, {-0.288308, -1.126081}, {-0.653159, 1.145602}, {0.356144, -0.300500}, {-1.877840, -0.660298}, {-0.888508, 0.081546}, {0.095668, -0.650209}, {-0.996078, -0.377501}, {-0.936371, -1.051814}, {0.735572, 0.371096}, {0.667417, 0.241111}, {-1.166763, -0.795707}, {-0.604337, -0.214551}, {0.366715, -0.220244}, {0.135127, -1.369202}, {-1.280505, 0.349096}, {1.611228, 0.383331}, {0.010946, -0.325781}, {0.156384, 1.852116}, {-0.937935, 0.398887}, {-0.149062, 0.073763}, {2.104644, 1.227660}, {-0.626178, -0.143603}, {0.148232, 0.324548}, {0.172888, -0.311778}, {-1.220482, -0.578080}, {-0.817595, 1.215959}, {-0.071187, -0.946781}, {-0.316114, -0.621434}, {0.612704, -0.753227}, {0.053054, -0.899090}, {-0.548320, -0.228200}, {0.163999, 0.796821}, {-0.245404, 0.209061}, {0.441967, 1.234234}, {-0.551563, 0.044447}, {0.658026, 0.187557}, {0.127459, -0.986518}, {-1.929082, -1.281298}, {-0.281742, -0.218021}, {-0.024907, 0.738612}, {-0.576868, 0.213936}, {1.047293, 1.199670}, {-0.588133, 0.536676}, {-0.873318, -0.257263}, {-0.173412, -0.363335}, {-0.711159, -1.458770}, {-0.627417, -0.146663}, {0.734973, 0.087137}, {1.617436, -0.176356}, {-0.695416, 0.009464}, {0.641452, 0.164848}, {-0.365163, -0.298145}, {-0.040627, -0.594555}, {-1.136559, 0.782394}, {0.889175, 1.501206}, {-0.505251, -0.965412}, {-0.235839, 0.215222}, {-0.031725, 0.742335}, {0.298775, -0.150465}, {-0.849287, 0.112957}, {1.179378, 0.099546}, {0.512879, 0.770936}, {-1.199297, -0.033108}, {-0.539796, 0.936294}, {-0.205207, -1.051996}, {-0.131672, 0.924508}, {-0.089858, 0.043459}, {-0.523057, 0.636311}, {-0.307674, 1.349578}, {0.036264, 0.711152}, {1.140221, -0.739087}, {-0.755562, 0.284111}, {-0.724637, 2.054996}, {-0.342831, -0.691441}, {-0.131512, -0.096478}, {-0.257152, 0.074351}, {0.214615, 1.055861}, {1.802147, -0.650688}, {0.494614, -0.618490}, {0.345858, -0.425000}, {-0.654990, 0.633968}, {1.944518, -0.824383}, {0.027463, -1.406552}, {-0.356381, 1.000390}, {-0.326255, -0.349790}, {-1.301773, -0.173698}, {1.209587, 0.733830}, {-0.415904, -0.973085}, {-0.342312, 0.036046}, {-0.186381, 0.151542}, {-0.326625, 0.939369}, {0.462830, -0.373640}, {0.606673, -0.179940}, {-0.484880, 0.561731}, {-0.508378, -0.365497}, {0.234596, -1.627686}, {1.368364, -0.734676}, {-0.795618, -1.015961}, {-2.239029, -0.882143}, {0.465919, -0.251305}, {0.445335, -1.446642}, {-0.265756, 0.613863}, {-0.452452, -0.137435}, {0.431065, 0.801259}, {-0.152433, 0.602319}, {-0.540982, -0.360173}, {0.631619, 0.163229}, {-0.006424, -0.396139}, {-1.237030, 0.367923}, {-0.850830, -0.132116}, {0.775877, -0.627868}, {0.771979, -0.413618}, {0.022536, 0.168067}, {1.196601, 0.009715}, {-0.617334, 0.060062}, {0.364119, -0.116998}, {0.673689, 0.458119}, {0.149576, -0.055954}, {-0.543521, 0.313275}, {-0.158121, 0.340606}, {-1.637515, 0.192407}, {-0.980130, -1.214198}, {0.271889, -1.100195}, {-0.043511, -0.011070}, {1.944409, 1.536861}, {1.054500, -0.241073}, {-0.266577, -1.534933}, {-0.040460, -0.625212}, {-0.459612, -1.252847}, {0.965432, 0.594862}, {0.576392, -0.927788}, {-0.551566, 0.279525}, {0.426353, 0.063682}, {0.612646, -1.516517}, {-0.007228, -0.346205}, {0.011120, 0.115249}, {0.472003, -0.089491}, {0.714530, -0.399992}, {-0.151271, -0.191677}, {-0.775722, 0.462697}, {0.938747, -0.059595}, {-0.019837, 0.256951}, {1.336979, -0.025192}, {-0.897808, -0.356736}, {-0.805198, 0.998662}, {-0.427256, 0.460826}, {0.649266, -0.173119}, {0.712430, -0.425832}, {-0.254883, 0.091398}, {-0.082338, -0.612070}, {0.215579, -0.567451}, {-1.144568, 0.155085}, {0.780083, -0.289786}, {-0.695259, 0.933670}, {0.982418, -1.676289}, {2.030334, 1.321377}, {0.038067, 0.527490}, {-0.875315, -0.009320}, {0.068908, -1.082731}, {-0.327867, 0.493442}, {-0.247380, 0.306530}, {-0.737028, 0.122061}, {0.989016, 0.117014}, {-0.043846, 0.663677}, {0.666528, -1.034380}, {0.394277, 0.951912}, {-0.002676, 0.539665}, {1.144832, 0.222148}, {0.575492, 0.698214}, {-0.465967, 0.644700}, {0.135505, -0.027215}, {0.971868, 0.345926}, {0.064156, -0.279836}, {-0.379608, 0.096507}, {-0.122669, -0.207917}, {0.579961, 0.725394}, {0.595409, -0.048807}, {1.252596, -0.666008}, {0.928256, 0.648530}, {-0.765453, 0.753437}, {-0.869056, -0.282207}, {0.599402, 1.136827}, {-0.491976, 1.257567}, {-0.690075, 0.095121}, {0.114144, 0.613636}, {-0.016676, 0.984432}, {-0.038227, 1.273482}, {-0.273440, 0.465032}, {-0.042422, -0.082568}, {0.293014, -0.062751}, {0.091950, 1.052528}, {1.290355, 0.079452}, {-0.373801, -0.287744}, {0.178010, 0.153087}, {-0.069493, -0.767951}, {0.592277, -0.164846}, {-0.624072, 0.699601}, {-0.164866, 0.014304}, {-0.989879, 0.549690}, {-0.390924, 0.210302}, {0.028281, 1.109096}, {0.200445, -0.121299}, {-0.837043, -0.089108}, {-0.330949, -0.683155}, {-1.497096, -0.744454}, {0.724696, 1.325496}, {1.093918, -0.158002}, {-0.986055, 0.252052}, {0.738405, 0.425232}, {0.346898, -0.636832}, {0.795577, -0.558523}, {1.639357, 0.539509}, {-1.027171, -1.972701}, {-0.526853, 0.066382}, {0.029728, 0.371083}, {0.493240, -0.618207}, {-0.085066, 0.157037}, {-0.598327, 0.875382}, {0.473045, -0.683630}, {-0.190108, 0.531203}, {0.755223, -0.445656}, {-0.970831, -0.378947}, {0.691900, -0.774742}, {-0.566027, -1.971771}, {0.221130, 0.861383}, {1.126111, -1.603044}, {-0.238397, -0.723054}, {-1.355820, 0.134919}, {0.901198, 0.804579}, {-0.152608, -0.056988}, {-0.405939, 0.133609}, {-0.748368, -0.793250}, {-1.127288, -0.628552}, {-0.545445, -0.085877}, {-0.731033, 1.379358}, {0.017076, 0.460959}, {0.860053, 0.187958}, {-0.398644, 0.846772}, {-0.136298, -0.593748}, {-0.570386, -0.054041}, {-0.208522, 0.414807}, {1.089348, 0.418117}, {0.071506, -0.234059}, {0.803787, -0.420491}, {0.379378, 1.744838}, {0.984846, -0.269280}, {0.287580, 1.777600}, {-0.044561, 0.393765}, {1.037652, 0.288589}, {1.365033, 1.028047}, {-0.268731, 0.214781}, {-1.399734, -0.585635}, {0.396474, -0.012739}, {-0.310157, -0.572639}, {-0.869280, -0.470035}, {-0.767115, -0.147986}, {-0.594210, -0.009435}, {-0.259161, 0.687769}, {0.400244, 0.052298}, {-0.081466, 1.100944}, {-0.597903, -0.298039}, {-0.112978, 0.185533}, {-1.188213, 0.607802}, {0.406532, 0.557457}, {0.053603, 0.608809}, {-0.909431, -1.412004}, {0.092312, -0.308009}, {-1.045767, -0.193634}, {-0.655190, 0.515159}, {-0.979891, -0.064583}, {-0.305666, 2.135184}, {0.263726, -1.169643}, {0.138287, 0.442218}, {0.414382, -0.295128}, {-1.223938, -0.394704}, {-0.670657, -0.732705}, {-0.130172, 1.369600}, {0.795171, 0.769043}, {-0.363984, 0.127902}, {-0.154541, -0.229581}, {0.285194, 1.725037}, {-1.330522, 0.314956}, {-0.233268, -0.249791}, {-0.867872, -0.116151}, {0.528821, 0.939245}, {0.529436, -0.728938}, {1.562335, -0.647528}, {0.100798, 0.930577}, {-0.638534, -0.474881}, {-0.985353, -0.905430}, {-0.508469, -0.557904}, {0.109266, -0.555654}, {0.066719, -1.050199}, {0.086614, 0.288710}, {-0.064293, 0.794723}, {0.211760, 0.375610}, {-0.388465, 0.047865}, {0.115226, 0.666505}, {0.090883, -1.307463}, {-0.505210, -0.481163}, {0.297328, 0.181031}, {-1.005686, -0.291049}, {-0.384623, -0.349974}, {-1.117550, -0.533047}, {-0.273571, 1.197142}, {-0.355377, -0.791390}, {-1.166707, 0.219873}, {-0.039557, 0.571754}, {-0.869280, 0.219124}, {-0.267389, 0.851277}, {-0.047552, -0.759693}, {-1.247211, 0.340410}, {0.074985, -0.567950}, {0.114898, -0.993669}, {1.315018, 1.236524}, {0.490222, -1.122814}, {-0.208569, 0.122706}, {0.811257, 0.284157}, {-1.535386, -0.961487}, {-0.575903, -0.329705}, {-0.440839, 0.189689}, {0.461173, 0.106876}, {-1.404882, -0.039592}, {0.157627, -0.164670}, {-0.143457, -0.082398}, {0.137764, -1.405608}, {1.138510, 0.467085}, {-0.569274, 0.068115}, {0.254692, -0.256963}, {-0.200568, -0.105250}, {0.649507, 0.852508}, {0.256781, 0.075334}, {-0.422662, 0.827176}, {0.453451, -0.274344}, {-0.619070, -0.789528}, {0.511156, -0.517215}, {-0.746724, 0.533320}, {-0.266023, 0.211951}, {0.820569, -0.021797}, {0.906967, -0.184995}, {0.080283, -0.845286}, {0.216563, -0.065165}, {-1.069864, -0.627168}, {-0.694919, -0.377147}, {0.560266, 0.723653}, {-1.810003, 0.936073}, {0.401495, -0.323666}, {0.279725, -0.512582}, {0.115233, 0.391509}, {-0.049100, 0.503527}, {0.381476, -0.924580}, {0.158435, -0.369579}, {-1.724612, -0.082530}, {0.146337, -0.627385}, {-0.580628, -1.005474}, {-1.283667, -0.367336}, {1.671694, 0.093866}, {0.495123, 0.338942}, {1.386453, 1.289725}, {0.046473, -0.010269}, {0.345976, 0.217331}, {-1.307691, 0.901025}, {0.011671, -0.051992}, {0.446749, 0.491618}, {-0.798861, -1.715122}, {0.459684, 0.845517}, {-0.619994, -0.080941}, {0.726701, 0.519006}, {0.366870, -1.500535}, {-0.695698, -0.307731}, {0.383154, -0.604660}, {-0.200421, -0.592773}, {0.845962, 0.202566}, {-0.081811, -0.479720}, {-0.162211, 0.211402}, {-0.508318, -0.515009}, {-0.598247, -0.160839}, {-0.361101, 1.022331}, {-0.593453, -0.828867}, {-0.335951, -1.161512}, {0.323913, 0.171438}, {0.880390, -0.900887}, {0.961106, 1.439049}, {-0.145219, 0.714873}, {-0.035628, 0.517433}, {-1.289047, 0.344996}, {0.823198, -0.391606}, {-0.666119, -0.158353}, {-0.497984, -0.154500}, {0.346989, 1.546966}, {0.708533, -0.966663}, {0.374617, 1.425507}, {-0.337693, 0.237900}, {0.070178, -1.763557}, {-0.029864, -0.502392}, {1.018740, 0.551282}, {0.470196, 0.024369}, {-1.046625, 0.923415}, {-0.440020, 0.376281}, {0.735956, -1.156211}, {-0.994301, 0.170391}, {0.092725, 0.006086}, {0.907493, -0.090784}, {0.594763, 0.737713}, {0.906663, -0.107508}, {-0.367296, -0.557330}, {-2.018388, 0.168510}, {0.752505, 0.463679}, {0.078006, 0.290962}, {0.109202, 1.088115}, {-0.098741, 2.088661}, {0.628856, 0.143489}, {0.531659, -0.603075}, {-0.792778, 0.565173}, {1.033181, 0.091416}, {-0.436632, 1.313604}, {-0.484757, -0.142273}, {0.419226, -1.120024}, {0.480503, 1.065520}, {-0.237411, -0.260825}, {0.605263, -0.918341}, {0.875513, -0.731113}, {1.386509, 1.669871}, {-0.213429, 0.316753}, {0.131674, 1.000488}, {0.748148, -0.249815}, {-0.533266, 0.340614}, {-0.869102, 0.414872}, {0.441595, -0.694290}, {0.054900, 1.807807}, {-1.703986, -0.934117}, {-1.249102, 0.046980}, {-0.221412, -0.687920}, {0.448836, 0.201658}, {0.650497, 1.040959}, {0.177494, -0.799854}, {-0.085265, 0.556515}, {-0.932668, -0.426775}, {-0.062327, -1.158497}, {-0.500424, -0.587836}, {0.391493, -0.387043}, {-0.617236, -0.317457}, {-0.578667, 0.512964}, {-0.169709, -0.817154}, {-0.110670, 0.372632}, {-0.222525, -0.793149}, {-0.009570, 0.182038}, {-0.527806, 0.463093}, {-1.697382, -1.718132}, {0.361860, 0.075201}, {0.089404, 0.241598}, {-0.946784, 0.814996}, {-0.613512, -0.255426}, {-0.177349, -0.488484}, {0.054348, -0.553629}, {-0.194009, 1.167781}, {1.709740, 0.267476}, {-0.821832, -0.696939}, {-0.200828, -0.430296}, {1.069248, -0.373373}, {-0.238442, -0.199476}, {-0.180144, -0.025549}, {-0.139817, -0.071419}, {-0.173577, -0.475708}, {0.304222, -0.368525}, {-0.590842, -0.064255}, {-1.185859, -1.155381}, {-0.081806, -0.629742}, {0.922781, 0.144932}, {0.942112, 0.322870}, {0.825791, 1.003816}, {0.826714, -0.826888}, {0.213177, 0.794777}, {-0.099002, -0.002608}, {-0.492385, 0.451787}, {0.128127, 1.082202}, {0.271635, -1.443648}, {-0.178330, -1.243963}, {-0.067726, 0.414538}, {-0.546234, 0.480571}, {-0.991696, -0.224893}, {0.432404, -0.524750}, {-0.501489, -0.744894}, {0.103839, -1.138339}, {-0.279854, -0.368705}, {0.455291, 0.602993}, {-1.678218, 0.178024}, {-0.130112, 0.138684}, {-1.101287, 0.579001}, {-0.092947, -0.011740}, {0.295525, 0.118103}, {0.785569, 0.325779}, {0.504792, -0.455453}, {1.132796, 0.017106}, {0.033302, 0.186834}, {0.810809, -0.362816}, {-0.474375, 0.097647}, {-1.062575, -0.732286}, {0.342440, -0.680445}, {-0.732904, -0.575352}, {0.303712, -0.631739}, {-0.319236, -1.030421}, {-0.387937, -0.348376}, {-1.079633, 0.118041}, {-0.602187, -0.491677}, {0.423529, 0.249166}, {-0.952323, 0.209902}, {0.034247, 0.375740}, {-0.592018, -0.397569}, {-0.163837, -0.427724}, {0.382374, -0.150979}, {0.555706, -0.725082}, {-0.355857, 0.158597}, {0.761846, 0.076153}, {-0.634078, -0.304593}, {0.471280, -0.916497}, {0.242803, 0.758195}, {0.754191, 1.510976}, {1.548155, -0.494631}, {0.691794, -0.562304}, {0.668136, -0.981643}, {-0.254217, -0.991335}, {-0.318592, -0.794923}, {-0.462833, -0.254355}, {0.963190, -0.369654}, {-0.006760, 0.514227}, {-0.029911, 0.884285}, {0.486003, -0.768507}, {0.111313, -0.201531}, {0.594695, -0.372400}, {0.590731, -0.701254}, {-0.563540, 0.783977}, {0.368562, -1.798989}, {0.756754, 0.099174}, {-0.637641, -1.143978}, {0.650260, -0.244381}, {-0.691307, -1.071333}, {0.861524, 0.340780}, {0.505066, 0.009908}, {1.474460, 0.787023}, {0.976164, 0.140441}, {-0.254395, -0.077743}, {-0.607054, -0.319290}, {0.265146, 0.411305}, {-1.013336, 0.386584}, {0.105899, 0.018232}, {0.563171, -0.016770}, {-0.940128, -0.278832}, {-0.221102, 0.977281}, {1.567826, 0.261716}, {0.196254, -1.341196}, {-0.102125, 0.328156}, {-0.201069, -0.674704}, {0.352926, -0.898702}, {0.911536, 0.859603}, {-0.528193, 0.953868}, {1.140887, 0.032021}, {-0.020405, 0.168142}, {0.328295, -0.517896}, {-0.337676, 0.588593}, {0.585343, 0.249905}, {-0.287053, -0.782415}, {0.794615, 0.416868}, {-0.332534, 1.181646}, {0.674689, -0.239908}, {-0.248407, 0.137528}, {-0.301989, 0.114605}, {-0.044851, 0.768646}, {0.542929, 0.080812}, {-0.071794, -0.299563}, {-0.734715, 0.382308}, {-0.421130, 0.911202}, {-0.430273, 0.472535}, {-0.687487, -0.273706}, {0.367111, -0.660188}, {-0.918680, 0.527015}, {-0.341398, 0.970202}, {-0.107157, 0.886225}, {0.938713, -0.223450}, {-0.671171, -0.152803}, {-0.385831, 0.640238}, {-0.780561, -0.635265}, {0.715185, 0.185086}, {-0.699200, 0.606720}, {-0.653360, 0.102234}, {0.131534, -1.084895}, {0.261869, 0.060136}, {0.317683, -0.939159}, {-0.840538, -0.043646}, {-1.424293, 0.084761}, {1.215854, -0.694838}, {0.062843, -0.337987}, {0.563976, 0.504785}, {-0.080370, 0.085930}, {0.032035, -1.010920}, {0.551369, 0.494227}, {-0.116020, 0.300480}, {0.331724, 0.036285}, {-0.382426, -0.529493}, {1.077808, -0.458413}, {0.331854, 1.032253}, {-0.535004, -0.323188}, {-0.819970, 0.052055}, {0.719559, -0.602325}, {0.915057, 0.257542}, {-0.428636, -0.009926}, {-1.805475, 0.369659}, {-0.614094, -0.001800}, {-1.235578, -0.052044}, {0.097063, -0.732735}, {-1.460257, 1.469093}, {1.278098, -0.169305}, {-1.378817, 0.540052}, {0.493755, -0.307548}, {0.218180, 1.141994}, {-0.221486, -0.292270}, {0.287143, -0.163096}, {0.703925, 0.446666}, {0.212925, 0.082821}, {0.484300, 0.306027}, {0.357386, -1.297873}, {-0.738326, -0.241678}, {-0.741457, -0.442234}, {0.327873, 0.656962}, {-0.853324, 0.049464}, {0.311712, -0.772024}, {0.492337, -0.224030}, {-0.072145, -0.706020}, {0.120789, -0.269756}, {0.510265, -0.199574}, {0.305081, 1.339218}, {-1.174933, -0.318689}, {-0.310504, 0.857660}, {-0.260578, -0.738450}, {0.840290, -0.412105}, {0.978639, 0.996309}, {0.545701, -0.214489}, {0.442492, 0.140782}, {0.134327, -0.614024}, {0.152361, -0.415766}, {0.402772, -0.590738}, {-0.086536, 0.126473}, {0.212853, 0.348347}, {1.454511, 0.690384}, {-0.525360, 0.196963}, {0.096687, -0.682747}, {0.001357, 0.832025}, {-0.426188, -0.466376}, {0.206853, -0.152419}, {0.687454, 1.804000}, {-1.322728, 1.203989}, {0.482003, -1.241984}, {0.500789, -0.065064}, {0.244065, 0.269642}, {-0.469472, -0.237159}, {-0.066490, -0.163310}, {-0.281095, -0.567134}, {0.893307, 0.612599}, {-0.632126, -0.774347}, {0.109283, 0.368826}, {0.148461, -0.404510}, {-0.667521, 1.577892}, {0.218306, 0.265584}, {0.264606, -0.211250}, {0.652372, -0.157857}, {-0.577376, -0.888662}, {-0.945390, 0.153267}, {0.375344, -1.667404}, {-0.156601, -0.117106}, {-1.462571, -0.718417}, {-0.575509, -0.808437}, {0.364817, 0.078618}, {-0.403867, 0.323323}, {0.157170, 0.940718}, {-0.905934, 0.911193}, {0.173700, 1.333921}, {0.056693, -0.033255}, {-0.296912, -0.103485}, {0.153056, -0.604195}, {0.377705, 0.504978}, {-0.673747, 0.286633}, {0.034797, 0.558569}, {-0.710120, -0.480598}, {-0.362652, -0.642279}, {-0.284230, 0.181896}, {-0.426250, 2.162377}, {0.985906, -1.488951}, {-0.458442, -0.456442}, {0.553374, -0.612342}, {-0.809457, -0.439975}, {0.180812, 0.353789}, {-0.978222, 0.464068}, {-0.300099, 0.132864}, {1.487060, 0.218514}, {0.957071, 0.801319}, {-1.294117, 0.020448}, {0.445091, 0.773514}, {-0.199977, 0.450449}, {1.443591, 0.429417}, {-0.113708, 0.610933}, {0.137175, -0.859998}, {-0.132513, -1.322847}, {-1.005503, -0.177505}, {0.000357, 0.779256}, {1.075366, 0.024032}, {0.459241, 0.710256}, {-0.305482, 0.106401}, {-0.276184, 1.043264}, {0.516417, -1.254294}, {-0.131916, 0.527997}, {0.234204, -1.557823}, {0.030533, -0.531908}, {1.085678, -0.371773}, {-0.221198, -0.710384}, {-0.063287, 0.159905}, {0.444706, -0.383745}, {-0.446182, -0.684475}, {0.740908, 0.413410}, {0.167352, 0.712524}, {0.392175, 0.355523}, {0.129803, -0.137579}, {-0.528156, -0.906438}, {0.405284, -0.052276}, {0.240957, -1.088857}, {0.642791, -0.012554}, {-0.439821, 0.196588}, {0.640984, 0.397706}, {-1.267697, -0.882481}, {-0.129466, 1.197844}, {1.461545, -0.514695}, {-0.664521, -0.084123}, {-0.351623, 1.236291}, {0.412838, -0.694709}, {0.414800, -0.181844}, {-0.304968, -0.380719}, {1.155782, -0.095914}, {-0.071784, -1.320101}, {-0.694458, 0.795722}, {0.810258, 0.637455}, {1.163340, -0.742524}, {-0.963930, 0.444600}, {0.655143, 0.089189}, {-0.592677, -1.127872}, {0.887550, -0.327055}, {0.625412, -0.529684}, {0.713678, -0.696201}, {0.055567, -0.252346}, {0.166431, 0.153213}, {0.441026, -1.378759}, {0.559243, -0.537530}, {0.202748, 0.275560}, {-0.840727, 0.168231}, {-0.064211, 0.001891}, {0.281684, 0.135740}, {-0.358316, -0.959788}, {1.306011, 0.464514}, {-1.036941, -0.959162}, {1.406593, 0.632846}, {-1.569454, -0.365218}, {-0.346228, 0.731728}, {-1.295997, 0.560615}, {-0.959968, 0.986496}, {-0.585640, -0.657095}, {-0.118904, -0.871209}, {0.926150, -0.531476}, {0.933032, 0.480609}, {0.263173, 0.494663}, {0.886100, -0.059677}, {-0.369519, -0.535388}, {0.421964, -0.910301}, {-0.326652, -0.190231}, {0.547934, 0.631971}, {0.710113, -0.411325}, {0.693213, -0.929055}, {0.018916, -0.458380}, {-0.289372, -0.644681}, {1.603608, -0.790238}, {-0.870347, -0.519386}, {-0.120219, -0.195792}, {0.896996, 0.754328}, {-1.072971, 0.660451}, {-0.169902, 0.618787}, {1.392250, 0.699588}, {0.102127, -1.159976}, {0.654802, -1.138594}, {0.341693, 0.533089}, {0.622157, 0.293998}, {0.739470, -0.685871}, {0.889143, -1.040852}, {0.028575, 1.018274}, {1.349263, -0.463929}, {0.455431, -0.360066}, {-0.778939, 1.099713}, {-0.893473, 0.754993}, {0.004027, -0.390836}, {-0.251340, 0.012372}, {-0.222768, -0.628511}, {-0.106092, -1.338030}, {-1.913003, 0.816801}, {0.249156, -0.479677}, {-0.736923, 1.666795}, {1.082270, -0.175401}, {-0.885157, 0.570095}, {-0.049028, 0.558581}, {-0.490770, 0.519661}, {-0.287551, -0.111662}, {1.033980, 0.682340}, {0.087287, 1.358185}, {-0.050552, 0.564941}, {-0.303037, 0.089188}, {0.842740, 0.611644}, {0.467414, -0.006327}, {0.466794, 0.602077}, {0.439659, -0.483228}, {0.974723, -0.062053}, {-0.260206, -1.049128}, {-0.205828, 0.295329}, {-1.647119, 0.441492}, {-0.714502, 0.081394}, {-0.205006, -0.757855}, {-1.960274, 0.470666}, {-0.533298, 0.409415}, {0.855841, 1.096989}, {0.358798, 0.730984}, {0.750960, -0.725304}, {1.146306, 1.834112}, {-0.476547, 0.068212}, {-0.694398, -0.779186}, {1.092268, -0.985842}, {1.398056, -0.217714}, {0.251666, 0.911836}, {0.110386, 0.085893}, {0.701887, 0.259171}, {0.516668, 0.334310}, {-0.003315, -0.918830}, {-0.195731, 0.013077}, {0.430466, -0.277817}, {1.030171, -0.394052}, {-0.225629, -0.195349}, {-0.027538, -0.056974}, {0.031358, 0.064035}, {0.387717, 0.243636}, {0.317769, -0.582616}, {0.940290, 0.778192}, {-0.490807, -0.763537}, {0.207110, -0.045007}, {1.971938, 0.382367}, {-0.727075, 0.439464}, {-0.077633, 0.672896}, {-1.460959, 1.007622}, {-0.025801, -0.096694}, {-0.993988, -0.999907}, {0.464187, 0.789316}, {0.256421, -1.363865}, {0.159660, -0.277453}, {-0.006103, 0.852472}, {0.060031, 0.596424}, {0.620580, 0.715707}, {0.276113, -0.545072}, {-1.012081, -1.133049}, {-0.097912, -0.474511}, {1.319384, 0.602481}, {-0.031653, 0.663256}, {0.386930, 0.752664}, {-0.991397, -0.430424}, {0.051973, -1.136431}, {-1.149435, 0.841670}, {-0.186103, 0.364773}, {-0.412187, 0.132497}, {-0.775032, 0.368945}, {0.032215, 0.521604}, {1.015831, -0.411670}, {0.726604, -0.273412}, {-0.017691, 0.358815}, {-0.486292, -1.210999}, {-0.099767, 0.094482}, {0.097904, 0.233600}, {-1.240408, 0.247283}, {0.721376, -1.415937}, {0.561702, 0.753190}, {-0.214495, -0.390780}, {-0.433983, -0.193696}, {-0.539126, -0.635186}, {0.334874, 0.117167}, {0.112738, -0.692831}, {1.294694, 1.248792}, {-0.305773, 0.353188}, {1.021686, 0.202287}, {0.256958, -0.390091}, {0.166097, 0.454005}, {-0.079576, -1.102067}, {1.538520, -0.563688}, {-1.731706, -1.126758}, {-0.670402, 0.414350}, {0.514859, -0.033709}, {0.457049, -0.953866}, {-0.025339, -0.186967}, {0.921516, -0.006589}, {1.133250, 0.762349}, {-1.942749, -0.290318}, {-1.006259, -1.719958}, {0.583133, 0.184458}, {1.533676, 0.565125}, {1.678753, 1.997106}, {0.414856, 0.635099}, {0.248681, -0.371868}, {-0.480461, 0.508675}, {0.128528, 1.225431}, {-1.035243, -0.326540}, {-0.591735, -0.256529}, {0.404609, 0.115763}, {-0.127455, -0.322196}, {-1.377901, 0.027817}, {-0.419663, -0.117352}, {0.100835, -0.416059}, {0.112067, -0.455572}, {-0.918836, -1.089230}, {0.819424, -0.676223}, {-1.262287, -0.710934}, {-1.405267, -0.629728}, {-0.245684, 0.259446}, {0.275126, 0.743111}, {-0.632728, 0.059081}, {-0.268444, 1.149652}, {0.262731, -0.503980}, {-0.732316, 1.865036}, {0.546659, -0.355999}, {1.055911, -0.387197}, {0.493665, -0.753767}, {-0.182871, 0.659888}, {0.622885, -1.309388}, {-0.557757, -0.093695}, {0.098147, 0.439508}, {0.803828, -0.887762}, {-0.324194, -0.317906}, {-1.732072, -0.835605}, {-0.244274, 0.535165}, {0.459924, 0.794849}, {-0.678300, 1.156888}, {-0.492597, 0.785141}, {0.158968, 0.435641}, {-0.036905, 0.358065}, {0.110872, -0.689448}, {0.880365, -1.190838}, {0.796720, 1.588231}, {-1.706377, 0.554221}, {-0.358409, -0.529411}, {-0.715658, 0.777524}, {-0.561075, -0.227583}, {0.899021, -0.235572}, {0.525853, -1.659359}, {0.079290, 0.113489}, {0.113024, 0.340952}, {-0.139241, 0.174221}, {0.224799, 0.763237}, {-1.379719, 0.258011}, {-0.935142, -0.447336}, {-0.784769, 0.357662}, {-0.232321, -1.397151}, {-1.450584, 0.943146}, {-0.324962, -0.543177}, {-1.282408, 0.863020}, {0.050112, 0.898989}, {-0.604191, -0.538101}, {0.343664, -0.068146}, {0.102684, -0.123663}, {0.928256, 0.360823}, {-0.097289, 0.462497}, {-0.092053, 0.034602}, {0.440637, -0.296188}, {1.149567, -0.825341}, {0.260298, -0.546318}, {0.369902, -0.765528}, {-0.115122, -0.752161}, {-0.134579, -0.097381}, {-0.352925, -0.341836}, {-0.133949, 0.670338}, {-1.133992, -0.211796}, {-0.771100, 0.093373}, {-0.958877, 0.269735}, {-1.004989, -0.185393}, {-0.095868, 0.247778}, {-2.586064, -0.157309}, {0.225446, -0.204901}, {0.848046, -0.114858}, {0.944526, 0.415761}, {0.175256, 0.081095}, {-0.221988, 0.520441}, {0.101561, 0.235463}, {1.036973, 0.143210}, {1.226535, -0.837936}, {0.071154, -0.334797}, {0.002085, -1.605103}, {-0.217532, -0.203431}, {-0.020084, -0.177046}, {1.594854, 0.364505}, {0.353434, 0.078027}, {-0.408512, 0.470233}, {1.312720, -0.497096}, {-0.446915, 1.180362}, {0.576132, -0.033510}, {0.987148, 0.361694}, {-0.741101, 0.494390}, {-0.147701, 0.106470}, {-0.122341, 0.707589}, {-0.828018, 0.595488}, {0.358592, 0.384138}, {1.122524, -0.548564}, {0.865484, 0.246095}, {-0.347659, 0.661972}, {-0.629108, -0.078289}, {0.435537, 0.266599}, {-0.290543, 0.076388}, {1.350286, -1.026417}, {-0.279524, 0.033803}, {0.805857, -1.271171}, {1.494965, -0.166193}, {0.224108, -0.156611}, {0.348711, 0.043524}, {0.486362, 0.705632}, {-0.135721, 0.860144}, {-0.419355, -0.933635}, {0.585876, -0.739752}, {0.348953, 1.633115}, {-0.716160, -0.030413}, {-1.012214, 0.928111}, {1.274223, -1.604781}, {0.986726, 0.442809}, {0.926012, -1.822679}, {-0.976620, -0.129446}, {-0.631693, -1.113716}, {0.013938, -0.471054}, {-0.337122, 0.006422}, {-0.075227, 1.194378}, {0.192303, 0.005400}, {0.482293, 0.882435}, {0.759362, -1.106292}, {-0.178414, 0.131685}, {-0.109098, -0.738940}, {0.076915, 1.201590}, {-0.065114, -0.913385}, {0.258717, 0.253192}, {0.006675, 0.474848}, {-0.120236, 0.074537}, {-0.914876, -0.604674}, {-0.239318, 0.139784}, {0.373102, -0.811346}, {-0.112757, 1.025991}, {0.939548, 0.465295}, {-0.350290, -0.018134}, {-0.562664, 0.175504}, {0.514850, -0.074323}, {0.521176, 0.137696}, {0.194373, 0.197405}, {0.927279, 1.181192}, {-0.118453, -0.014140}, {1.916604, -0.970558}, {0.612289, -1.323595}, {-0.046588, 0.676538}, {-0.361614, 0.343330}, {-0.072801, -0.258052}, {-0.387405, -0.305871}, {-0.953448, -0.183769}, {0.528532, -0.434791}, {-0.180672, -0.359667}, {-0.599359, 0.653634}, {0.050363, -0.480589}, {0.233107, 0.154633}, {-0.948858, 0.182072}, {0.456937, -0.516302}, {0.303400, 0.828243}, {-0.675064, -0.986310}, {-0.305059, 0.166836}, {1.464878, 0.165149}, {0.374637, -0.656082}, {0.718124, -1.594720}, {0.470116, -0.781559}, {0.309853, -0.650064}, {-1.133502, 0.331558}, {0.145630, -0.142324}, {-0.157430, -0.301290}, {1.777805, 0.083103}, {0.717511, 0.394040}, {-0.145187, 0.174645}, {-0.557239, 0.572090}, {0.191157, 0.101788}, {0.484733, 0.137371}, {0.285309, -0.047834}, {0.197723, 0.435201}, {1.212389, 1.074376}, {1.174508, -1.056099}, {-0.076020, -0.321082}, {-1.196586, -0.557423}, {-0.610224, -1.475905}, {-0.009208, 0.213072}, {0.515729, -1.346302}, {0.103609, -0.105880}, {-1.120470, 0.071781}, {-0.777519, 0.463790}, {1.156226, -0.298195}, {0.203968, 0.760272}, {-0.780637, -0.918900}, {-0.769841, -0.775429}, {0.935468, 0.026705}, {-0.241774, 1.112869}, {0.227628, 0.184193}, {-0.183832, 0.409623}, {1.130661, 0.731075}, {-0.555506, 0.437555}, {0.457972, -1.800335}, {0.272675, 0.660832}, {-1.884673, 0.050126}, {-0.580737, -0.779387}, {1.227434, 0.547756}, {0.053354, -0.616688}, {0.478480, 0.910639}, {-0.333049, 0.719330}, {0.010465, -0.612533}, {0.906478, 0.818118}, {-1.193153, -1.824502}, {0.706058, 0.615496}, {-0.370577, -0.145762}, {-0.902391, -0.628656}, {-0.106987, -0.364320}, {-0.084966, -1.302484}, {0.849559, -0.758851}, {-0.721184, 0.072056}, {0.445967, 0.442923}, {1.135449, 1.092539}, {0.250839, 1.832846}, {0.242031, -0.912937}, {0.969083, -1.380916}, {-0.854039, 0.805446}, {-0.063648, -0.529546}, {-0.556826, 0.358275}, {0.502400, -0.419893}, {1.121981, -0.341123}, {0.146130, 1.403614}, {-1.507194, 0.954692}, {1.696664, 1.704881}, {-0.599841, -0.359776}, {-0.044186, -0.459231}, {-0.118475, -0.554999}, {-0.833973, -0.512125}, {-1.163373, -0.238938}, {-0.208580, 0.332700}, {0.371481, -0.478670}, {-0.607465, -1.178812}, {-0.293391, 0.125643}, {-0.646705, 0.940141}, {0.189148, -1.350865}, {0.342294, -1.580507}, {-1.132454, -0.157761}, {-0.019979, 0.524966}, {-0.169449, -0.519595}, {1.065918, -0.985098}, {-0.915971, -0.284780}, {0.098857, -1.215288}, {0.783253, 0.635773}, {0.449313, -0.510098}, {0.689266, 0.814086}, {-0.144834, -0.612379}, {-1.427958, 0.199905}, {-0.474064, -0.742974}, {-0.337112, -0.137790}, {-0.674899, -0.264672}, {0.912269, 1.104826}, {0.831791, -0.341448}, {-0.388669, 0.672793}, {1.087330, 1.281850}, {0.118528, 0.631338}, {-0.206049, -0.715623}, {-0.781056, 0.033644}, {0.792916, 0.295321}, {-0.482422, -0.237909}, {0.261478, -0.752447}, {-0.754615, -0.516213}, {0.192734, 0.378640}, {-0.439435, -0.431982}, {-0.946669, 0.479718}, {-0.357092, -0.691345}, {1.157752, 0.666368}, {-1.383208, 0.311908}, {0.409399, 0.461214}, {-0.698759, -0.607928}, {-0.482476, 1.416944}, {-0.199183, 0.371134}, {-0.082352, 0.429145}, {0.432215, -1.285389}, {-0.244029, -0.686566}, {-1.015378, 0.249656}, {0.956609, 0.256536}, {-1.108435, -0.400837}, {0.358475, 0.626661}, {0.376849, 0.118413}, {0.384957, -0.159492}, {1.550985, 0.318564}, {-0.658378, 0.829656}, {0.070058, -1.867597}, {-0.556355, 0.877398}, {-0.939162, -0.758821}, {-0.975259, 0.428551}, {-0.465374, 0.248586}, {-0.647683, 0.162461}, {0.478579, -0.086328}, {1.171809, -1.210333}, {0.350605, -0.026423}, {-1.535107, -0.289105}, {0.569494, 0.289004}, {-0.842191, -0.535135}, {-1.056587, -0.341966}, {0.571423, -0.949688}, {0.377006, 0.223183}, {0.895255, -1.194232}, {0.407145, 0.361737}, {-0.133994, -1.212235}, {-0.635602, 0.102165}, {-0.112363, 0.370473}, {0.088680, -0.934189}, {0.189376, 0.032527}, {0.241638, 0.015864}, {0.926939, -0.360267}, {0.633242, -0.199406}, {-0.777074, 0.718454}, {1.263760, 1.272871}, {-0.887876, 0.895443}, {0.045161, -0.732052}, {-0.500926, 0.113907}, {-0.126137, 0.817229}, {0.086923, -0.332814}, {0.016727, 0.325903}, {-0.336638, -0.207087}, {-0.613900, -0.550235}, {1.069793, -0.208412}, {0.077398, -1.607311}, {-0.215649, 0.115757}, {-0.404151, -0.996211}, {0.226156, -0.014279}, {-1.177157, 0.074822}, {-0.140062, 0.186657}, {-0.409112, -0.330324}, {1.309929, -0.332041}, {0.821633, 0.695834}, {-0.938862, -1.552127}, {0.075839, 1.054654}, {0.323977, -1.147671}, {0.310022, 0.038229}, {-0.359029, -0.022630}, {0.324017, 0.387352}, {-0.048052, 0.500409}, {-0.768604, -0.470784}, {0.684604, 0.201031}, {0.736939, -1.300678}, {-0.479045, -1.017034}, {0.007828, -0.810752}, {-0.304589, -0.420991}, {0.655603, -0.376914}, {-0.526926, -0.309443}, {1.263186, 0.124584}, {-0.301892, 0.095891}, {0.329349, 0.607629}, {0.858170, 0.481326}, {0.863272, -1.044820}, {-0.185530, 0.990111}, {-0.944209, 0.851341}, {-0.140130, 1.176828}, {0.656967, -0.249158}, {0.831843, 0.166278}, {0.281441, 1.026104}, {0.815836, 1.287209}, {1.204176, -0.446447}, {-0.824919, -0.004133}, {-1.288957, 0.000250}, {0.202791, 0.163948}, {-0.652007, 1.250650}, {-0.940207, 1.250555}, {0.060222, -0.160424}, {0.276591, -0.733905}, {1.240840, -0.391642}, {1.228907, 0.734534}, {0.183878, 0.004227}, {0.471755, -0.211169}, {1.313163, 1.109955}, {0.040600, -1.427535}, {-1.534644, 0.502761}, {-0.618235, 0.755691}, {0.075225, 0.536254}, {-0.464799, -0.526058}, {-0.418575, -0.584390}, {-0.394190, -1.816489}, {0.225854, 0.231993}, {-0.635186, -0.053889}, {-0.064877, -0.134776}, {-0.030140, 0.052716}, {-0.548128, -0.690454}, {0.386017, 0.089867}, {1.770913, 0.146184}, {-0.245883, 1.392924}, {-0.437879, 0.537205}, {-0.330323, 0.467750}, {0.586680, -1.393470}, {-0.120830, -0.437540}, {-0.963768, 0.437445}, {0.330936, -0.667993}, {0.308680, -1.588304}, {0.825726, 0.482044}, {0.226749, -0.379008}, {0.713663, 0.392264}, {-0.364814, -1.242878}, {-0.029851, -0.845113}, {0.519322, -0.794357}, {0.118346, -1.295004}, {-0.992456, 1.318909}, {-0.072580, -0.019761}, {-0.289738, 1.767553}, {-1.316428, 0.126071}, {1.683718, 0.210909}, {1.611788, 0.725453}, {0.165352, 0.295910}, {2.416738, 0.700021}, {0.526805, -0.148660}, {0.937490, -0.086265}, {0.818973, 0.716807}, {1.269264, 0.610734}, {0.966294, 0.177897}, {-0.865904, 0.933524}, {-0.204972, 0.387884}, {1.036139, -0.352334}, {0.025383, 0.301119}, {1.257758, -0.315413}, {0.678906, 0.616848}, {1.169668, -0.413489}, {-0.307375, 0.005018}, {0.073738, -0.187008}, {1.813125, -0.752193}, {1.392039, -0.785845}, {-0.643245, 0.390684}, {0.463355, 0.238971}, {-0.002376, -0.085880}, {-0.838524, 1.114617}, {-0.367220, -0.351002}, {0.266690, -0.777264}, {0.192761, -0.720230}, {-1.500903, 0.695838}, {0.493120, 0.067029}, {0.030118, 1.236780}, {0.034760, -0.819626}, {0.293606, 0.201533}, {0.312385, 1.481040}, {0.644201, -0.675942}, {-0.630559, 0.140196}, {0.752821, 0.626086}, {-0.310553, 0.372922}, {0.511409, 1.005211}, {-0.312640, 1.205754}, {0.047365, 1.161801}, {0.634709, 0.848718}, {-0.185228, 0.068916}, {0.710197, -0.424226}, {-0.627263, 0.410260}, {-0.890694, 1.019410}, {-0.911236, -0.507543}, {0.072052, -0.119403}, {0.277360, 0.255984}, {0.011718, -0.365213}, {-1.242291, -0.359709}, {-0.266353, -0.290392}, {-1.193119, -0.901162}, {0.016134, -0.154263}, {-0.392536, -1.082696}, {0.997809, 0.053994}, {-1.230871, -0.639927}, {0.753734, 0.260376}, {-0.177411, -0.654997}, {-0.664207, -0.818289}, {0.558704, -0.173549}, {-0.456297, -0.523642}, {0.437174, 0.603725}, {1.110922, 0.929951}, {-1.145341, 0.606142}, {0.762613, -0.534990}, {1.123318, 0.182479}, {-0.924404, 0.074693}, {0.421870, -0.803706}, {0.237068, -0.731789}, {0.114878, 0.715037}, {-0.115797, 0.490062}, {0.613808, -0.057239}, {-0.002727, 0.385070}, {0.118135, -0.066553}, {-0.137414, -0.095722}, {0.241358, -0.096421}, {-0.514497, -0.904141}, {-0.484342, 1.537877}, {-0.143724, 0.510801}, {0.761716, 0.162944}, {0.627842, -0.387618}, {-0.263134, -0.631088}, {0.435091, 0.285372}, {-0.506864, 1.600501}, {-0.514922, -0.416914}, {-0.127203, 0.976581}, {-1.080020, -1.111665}, {0.197020, 0.354050}, {1.494278, -0.024726}, {-0.547009, 0.483956}, {-0.111064, -1.245961}, {-0.654196, -0.610226}, {0.233488, 0.119793}, {-0.816235, -0.666550}, {-0.154340, 0.061817}, {-0.949530, 0.341751}, {0.045377, 1.203108}, {0.430596, 1.308333}, {-0.016732, -0.389215}, {0.399432, 0.672581}, {0.459967, 0.156065}, {-0.095913, -1.398591}, {-1.249649, -0.318145}, {0.584487, 0.046164}, {0.523293, -0.263306}, {0.928685, -0.941009}, {-0.094772, 1.143322}, {-0.647698, 0.255648}, {-1.029936, 0.187780}, {0.514449, 1.421299}, {0.437990, -0.736063}, {-0.148725, -1.226925}, {0.735137, -0.988119}, {1.047799, -0.121534}, {-0.407426, 0.264870}, {-0.700435, -1.115746}, {0.532253, 0.835391}, {-0.713866, -0.766539}, {-0.594814, -1.583788}, {-0.091316, 0.186157}, {-1.061280, 0.790775}, {1.196936, -0.655124}, {0.138017, -0.110440}, {-0.482455, -0.535907}, {1.275872, -0.400182}, {-0.064806, 0.484727}, {0.401664, -0.613058}, {-0.700481, -0.936574}, {0.532775, 0.696085}, {1.008801, 0.749932}, {-0.986396, -1.189219}, {-0.913639, 0.371736}, {0.784265, -0.263053}, {-0.408200, -1.066935}, {-0.668052, -0.239838}, {-1.178900, -1.241531}, {-0.853686, 0.295449}, {0.166123, -1.515813}, {-0.444517, 0.062558}, {0.332299, 0.329983}, {-1.982113, -0.485853}, {1.132998, -1.205220}, {-0.804666, 0.302509}, {-0.238308, -0.134546}, {0.710908, -0.432452}, {0.315154, 1.398999}, {-0.681044, 0.872108}, {0.606473, 0.523653}, {0.014945, 0.278227}, {-0.139660, 0.507999}, {0.589431, 1.064057}, {1.203018, -0.095737}, {-0.706335, 0.844312}, {-0.457733, 0.411376}, {1.392476, 0.615478}, {0.503531, 0.629748}, {-1.868925, 1.019854}, {0.623614, -0.097751}, {1.591276, -0.051853}, {-0.113714, 0.458968}, {0.053809, -0.896137}, {0.828523, -0.324982}, {-0.897275, 0.933097}, {1.465266, 0.219218}, {-0.328468, -0.511827}, {-0.269574, 0.240325}, {0.158350, -0.002023}, {0.007904, 0.374705}, {-0.748152, -0.404403}, {0.401461, 1.023925}, {-0.694375, 0.165567}, {-0.750854, -0.441250}, {-0.732961, 1.478016}, {-1.351355, -0.403812}, {1.015405, -0.641125}, {-1.187931, 0.516955}, {0.356994, 0.568579}, {-0.980631, -1.747832}, {0.841677, -0.390122}, {-0.341402, -0.520199}, {0.267459, 0.114024}, {-0.241603, -0.232871}, {0.477839, 0.132306}, {-1.470251, 0.729433}, {0.041666, -1.683171}, {0.476142, 0.743715}, {-0.601401, -0.980501}, {0.652458, -0.252309}, {0.456130, -0.278763}, {1.118120, 0.633555}, {-0.749787, -0.239808}, {-0.104785, 0.184428}, {0.669072, 0.512814}, {-0.766815, -0.611725}, {0.264691, 0.519192}, {0.723239, 0.197053}, {0.208870, -1.040927}, {0.225315, 1.672246}, {-0.292557, 0.249723}, {0.028916, 0.585265}, {0.095992, 0.356909}, {-0.555301, -0.057219}, {-0.928637, -0.681245}, {-0.528215, 0.113653}, {0.051210, -0.925710}, {-0.488349, -1.072004}, {0.388358, -0.829677}, {-0.440984, 0.402262}, {-0.587779, 0.415484}, {-0.854813, -1.202757}, {0.140449, 0.615316}, {-0.969118, 0.625102}, {0.723061, -0.023433}, {-0.466547, -1.193377}, {0.174382, -0.191844}, {-0.069412, 0.744591}, {0.614304, 0.878272}, {1.039704, -0.498006}, {-0.308974, 0.145160}, {1.014526, -0.374036}, {0.252267, 0.687180}, {-0.162024, -0.879458}, {-0.069318, -0.136461}, {1.084086, -0.626762}, {-0.337708, 0.138883}, {-0.614793, 0.495342}, {-0.313819, 0.218629}, {-0.355789, -0.208860}, {1.264926, -0.581676}, {0.995574, 1.298469}, {0.048826, 1.154609}, {0.853013, 0.154451}, {-0.288999, -0.321106}, {-0.313594, -1.063780}, {0.993070, 0.561339}, {0.227798, 1.300257}, {0.228511, 1.096806}, {-0.206126, -0.606261}, {0.534751, 1.086407}, {0.990795, -0.239272}, {-0.221983, -1.228456}, {-0.853842, -0.354515}, {-1.529191, -0.080374}, {0.510801, 0.916183}, {-0.406386, 0.535647}, {-0.894904, -0.543193}, {-0.238739, -0.062090}, {-0.888515, -0.567698}, {-0.480891, -0.205695}, {0.174172, -0.275572}, {-0.272541, 0.816420}, {-2.017061, -0.971229}, {0.654095, -0.688792}, {-1.521416, -0.151355}, {-0.419304, -0.564373}, {-0.683359, -0.964495}, {0.191915, 0.116535}, {-0.122173, 0.698014}, {0.091031, 0.996259}, {0.807417, -0.307397}, {0.503590, -0.560922}, {-0.025515, -0.177932}, {-1.471801, 0.431103}, {-0.274382, -1.436026}, {0.410563, 0.251427}, {-0.688289, 0.531037}, {0.235751, -0.017373}, {1.697625, 0.330051}, {1.296692, -0.008806}, {-0.161821, -1.267515}, {-0.157375, 0.552060}, {0.194818, -0.498418}, {-0.803649, 0.679683}, {-0.085934, 0.145656}, {1.299868, -0.011962}, {-0.912591, -0.421947}, {1.145332, 0.300821}, {0.269805, 0.306810}, {-0.204528, -0.802886}, {-0.467310, 0.023213}, {-0.143521, -0.064844}, {-0.615181, -0.550979}, {-1.849136, -0.009920}, {0.171609, -0.665812}, {-0.491934, 0.882227}, {-1.650295, 0.114048}, {-0.400294, 0.424205}, {-0.514118, -0.669073}, {0.258922, 0.794121}, {0.049997, 0.134089}, {0.194488, -0.156671}, {0.344593, -0.056610}, {-0.065019, -0.791255}, {-0.712143, -0.889316}, {-0.037947, -0.410308}, {-0.608536, 0.363014}, {-0.995931, 0.748773}, {-0.532246, 1.524272}, {-1.273984, -0.692641}, {0.216458, -0.969723}, {0.596969, 1.207691}, {0.630096, 0.619046}, {0.053170, 0.680191}, {-0.316325, 2.215220}, {-0.727683, 0.614145}, {-0.426250, -0.833144}, {0.824881, -0.500053}, {-0.529623, 0.311797}, {-0.178255, 0.825478}, {0.103841, -0.104707}, {-0.031122, 0.452810}, {-1.102562, -0.565139}, {0.562892, -1.009280}, {-0.990678, 0.532690}, {0.780854, -0.558275}, {-0.797341, -0.248667}, {0.419113, 0.984902}, {-0.373388, -0.223312}, {-0.219678, -0.502263}, {0.073586, -0.923303}, {0.462648, -0.208484}, {0.402837, 1.456425}, {0.394849, 0.801398}, {-0.032908, -0.398294}, {0.137910, 0.005318}, {-0.388445, 0.932065}, {-0.968678, 0.568907}, {-1.168897, 0.713647}, {-0.135803, 0.675903}, {-0.798947, 0.409210}, {-0.210345, 0.474493}, {-0.996924, -0.261361}, {-0.376090, -0.169902}, {-0.084624, -0.337132}, {-0.149856, 1.151486}, {-0.334993, -0.025083}, {0.014955, -0.281633}, {-0.296591, 1.360250}, {-0.356625, -0.268706}, {0.092831, -0.664457}, {0.661417, 1.101560}, {0.818075, -0.436305}, {0.257700, 0.826407}, {-0.876984, -0.265632}, {-0.847009, 0.983195}, {0.533962, 0.025176}, {0.475236, -0.021672}, {-0.408513, 0.144330}, {-0.054836, -0.056845}, {-0.811997, -0.428748}, {-0.041344, 0.580983}, {-0.403695, 1.106749}, {-0.782566, -0.126241}, {-0.164866, 0.115952}, {-0.511490, -0.220781}, {0.758437, 1.045866}, {1.585939, 0.717827}, {0.198230, -0.423196}, {0.425990, 0.760640}, {0.349586, 0.560766}, {-0.394644, 0.704755}, {0.816262, 0.894866}, {0.669015, 2.130989}, {0.400988, 0.020291}, {0.271768, 0.213246}, {0.677947, -0.681183}, {-1.418844, -0.062849}, {0.154916, -0.318327}, {-0.397071, 2.104998}, {0.775958, -0.897373}, {-0.332711, 0.107389}, {0.120366, -0.286305}, {0.329814, -0.271822}, {0.103319, -1.265877}, {-0.729148, 1.209006}, {0.782576, -1.122029}, {-0.924092, -0.627575}, {-0.804932, -0.421433}, {0.344793, -0.265698}, {0.408639, 0.540421}, {-0.154016, 0.136751}, {-1.289312, 0.562553}, {-0.541214, 0.328546}, {0.113700, 0.137387}, {-0.357670, 0.284727}, {0.870838, -0.493262}, {-0.984308, -0.399538}, {0.156173, 0.616735}, {0.558083, 0.793972}, {-0.041236, -0.886977}, {-0.272831, -0.458041}, {0.720271, -1.299717}, {0.800746, -0.688169}, {0.003356, -0.488594}, {0.112341, 1.180680}, {-0.404111, -0.185403}, {-1.132811, 0.187327}, {0.278689, 0.563330}, {-0.475478, 0.253690}, {0.822805, -1.018580}, {-0.536317, -0.432998}, {1.196511, 0.646342}, {0.248643, -0.351856}, {0.023010, 0.801504}, {0.082477, 0.227903}, {-0.739984, 1.409377}, {-1.093346, 0.284272}, {0.014437, 0.797834}, {-0.231989, -0.756894}, {-0.324308, -0.373406}, {0.327255, 0.165462}, {0.077915, 0.976373}, {0.099804, -0.232398}, {-0.188951, -1.848099}, {-0.264076, 0.299642}, {-0.249151, 0.531139}, {-0.085369, 0.191014}, {0.418407, 0.643442}, {0.548592, -0.986217}, {0.201831, -0.013044}, {0.402804, 0.414341}, {0.672157, -1.203954}, {0.095442, -0.174176}, {0.841303, -0.015891}, {-1.263681, -1.045229}, {0.761722, 0.884349}, {-1.504885, -0.472921}, {-0.346331, 0.174952}, {0.933591, 0.149618}, {0.730042, -0.463471}, {-0.475737, 1.006552}, {0.759548, -0.283706}, {0.157366, -1.489094}, {0.523688, 0.334166}, {0.876784, 0.002512}, {-1.026722, 0.090503}, {-1.165607, 0.169016}, {0.359693, -0.053239}, {0.215738, 0.499053}, {-0.350342, 0.196230}, {0.896169, 0.062044}, {2.042446, -1.127256}, {-0.534803, -0.041073}, {-0.164018, 0.930955}, {1.250713, 0.249031}, {-0.869230, 0.749397}, {0.340076, -0.429473}, {0.156416, -0.607349}, {-0.876436, 0.247448}, {0.631910, -0.711511}, {-0.353926, 0.595086}, {-0.317500, 0.152275}, {0.016852, 0.409049}, {0.138180, -0.897995}, {-1.043338, 0.106864}, {0.249097, 0.765102}, {-0.063449, -0.898102}, {-0.009991, 0.423051}, {-2.479719, -0.472494}, {0.089759, 0.324779}, {-0.425748, -0.136768}, {-0.039432, 0.113546}, {0.378075, 0.584178}, {-0.116790, -0.340992}, {1.409989, 0.608333}, {0.185191, 0.854648}, {0.148669, -0.916006}, {0.243601, -0.578485}, {0.534792, 0.128748}, {0.096589, -0.011526}, {0.302454, -0.104072}, {0.557113, -0.581964}, {0.123224, 0.084108}, {-0.040691, 1.241659}, {-0.976656, -0.139564}, {0.461107, 0.951388}, {-0.172467, -1.082873}, {-1.153675, -0.385351}, {-0.618565, 0.103723}, {0.584970, -0.576273}, {-0.072267, 0.632778}, {-1.229002, -0.083644}, {-0.398376, -0.960650}, {-0.182248, 0.182768}, {0.047476, -0.416691}, {-0.006784, 0.265975}, {0.197887, -0.503323}, {1.187192, -0.302236}, {-0.243130, -1.039109}, {-0.062329, 0.768271}, {0.943091, 0.735741}, {-0.034137, 0.599684}, {-0.528197, -0.012226}, {-1.206841, 0.534777}, {-0.136555, 0.133648}, {-0.026909, -0.925145}, {0.545718, 0.306186}, {0.019155, 0.114856}, {0.108414, 0.467932}, {-0.690591, 0.822777}, {-0.784363, -0.578012}, {-0.355875, 0.224161}, {1.082772, 0.724638}, {0.259778, -0.690524}, {0.144948, -0.594185}, {-0.569524, -0.553273}, {0.951085, -1.238274}, {-0.334362, 0.954367}, {0.270034, -0.455925}, {0.135168, 0.992027}, {0.673968, -0.116692}, {1.150927, -0.985755}, {0.401896, -0.044726}, {-0.404015, 0.215494}, {-0.874189, -0.310641}, {-1.076193, -1.010944}, {-1.077048, -0.032036}, {-0.059354, -0.173463}, {-0.218021, 0.018288}, {-0.196944, -0.747249}, {0.734062, 0.379284}, {1.158500, 0.450099}, {-0.858797, 0.229643}, {1.308480, -0.146091}, {-0.741501, 0.254662}, {1.000943, 0.157585}, {0.521755, -0.098708}, {0.086764, 0.359042}, {-0.099892, 0.739584}, {0.340750, -1.523697}, {-0.536943, 1.085834}, {0.570584, 0.105172}, {0.202618, -0.072868}, {-0.636440, 0.211023}, {0.497984, 0.587557}, {-0.110149, -1.306920}, {-0.679943, 0.412284}, {-0.316334, -0.908325}, {-0.711702, 1.541623}, {1.257867, 0.108194}, {-0.642721, -0.461193}, {-0.358721, -0.241200}, {0.150649, -1.176602}, {-1.319244, 0.289257}, {0.773558, 0.096770}, {-0.827512, -0.185106}, {-0.040823, -1.803707}, {0.649424, -0.745211}, {1.254139, 0.001556}, {0.329440, -0.291886}, {-0.640815, -0.162880}, {0.091218, 1.039846}, {0.699821, -0.470335}, {-0.583234, -0.635644}, {0.819819, -1.751943}, {-0.721584, 0.787984}, {-0.179237, 0.328456}, {-0.063781, 0.429699}, {1.631510, 0.041000}, {0.122645, -0.926669}, {0.970309, -0.036087}, {-0.204184, -0.045486}, {-0.597965, 0.889277}, {-0.564184, -0.344697}, {-1.064722, -1.138890}, {-0.751389, -0.391462}, {-0.024089, 0.535480}, {-0.265461, 0.383199}, {-0.504780, -1.007336}, {-1.021076, 0.831820}, {0.141181, -0.805943}, {0.451375, 0.655968}, {1.100952, 0.897682}, {0.205680, -1.447828}, {-0.748725, 0.229730}, {0.886689, -0.042364}, {-1.821520, -0.303140}, {0.697765, -0.619635}, {-0.046616, -0.261678}, {-0.207704, -0.328292}, {-0.534695, -0.547877}, {-1.575192, 0.622682}, {0.469863, 0.483822}, {-0.215089, 1.552073}, {0.505524, -0.648942}, {0.262484, 0.623770}, {0.427704, -0.562431}, {-0.872769, 0.672559}, {-0.020422, -0.187349}, {1.243445, -1.678458}, {0.123213, -0.587475}, {0.071629, -0.272299}, {0.150438, 0.166304}, {-0.278067, -0.782556}, {0.011738, -0.690190}, {0.881321, -0.960599}, {0.234258, -0.529572}, {-1.583603, -1.199128}, {0.394669, -0.930577}, {-0.358556, 1.527559}, {-1.524935, -0.981286}, {-1.283556, 0.168284}, {-0.071836, -0.156780}, {1.300191, 1.006321}, {-1.238737, 0.048229}, {-0.377324, -0.229504}, {1.099479, 0.998962}, {-0.298661, -1.195932}, {-0.283137, -0.159995}, {0.098216, 1.750651}, {-1.026856, 0.639700}, {0.770303, 0.037554}, {-0.190248, -0.145522}, {-0.674866, 0.016212}, {-1.556569, 1.310796}, {-0.417356, 1.000320}, {1.292398, -0.862891}, {-0.666403, 1.999084}, {0.359215, 0.069716}, {0.347212, -0.033478}, {-0.378434, -0.364239}, {-0.177074, 0.536678}, {0.665238, -0.817818}, {-0.050101, 0.086105}, {0.402255, -0.348473}, {-0.108418, -0.286375}, {0.632875, -0.573563}, {-0.401028, -1.098233}, {-0.209670, -0.524291}, {1.161718, -0.018141}, {0.062103, 0.583460}, {0.477218, 1.102610}, {-0.467535, 1.244971}, {-0.375225, -0.086564}, {0.628985, -0.808293}, {1.769568, -0.074081}, {-0.632422, 0.452516}, {-0.080602, 0.904194}, {-0.036578, 0.987790}, {-1.059879, -0.224910}, {-0.942022, 0.248616}, {0.604268, 0.203433}, {0.511442, -0.200682}, {-1.007013, 0.355784}, {-0.895393, -0.034260}, {-1.057717, 1.382638}, {0.611742, 0.856244}, {0.703185, -0.058025}, {-0.130182, -0.591155}, {0.638317, -0.190395}, {0.522978, -0.891479}, {-0.002451, -0.012145}, {-0.321576, 0.154897}, {-1.017726, 0.839232}, {0.275647, -0.836124}, {-0.118267, -0.695792}, {-2.185583, -0.392189}, {0.732423, -0.118374}, {0.884142, 0.303615}, {-1.341810, -0.498593}, {-0.479942, -0.379985}, {0.111066, -2.027992}, {0.639038, -1.018160}, {0.123944, 0.497292}, {-1.415298, -0.098769}, {1.108608, -1.269705}, {-1.101691, 0.124200}, {0.442822, -0.443518}, {-1.122461, 0.522937}, {-0.142504, -0.305149}, {-0.176067, -0.623792}, {-0.196882, 0.715774}, {0.406265, 0.244901}, {1.161033, 0.506478}, {0.167092, -0.544898}, {-0.008688, -0.682775}, {-0.481234, -0.114580}, {-0.301007, -0.278349}, {0.839510, -0.084011}, {0.523550, 0.618197}, {-1.485248, 1.869149}, {-0.385724, 0.172770}, {-0.388899, -0.581958}, {0.615073, -0.767256}, {0.695869, 1.535576}, {-1.500226, -0.888290}, {-0.511725, 0.657499}, {-0.738649, -0.437450}, {0.652296, -0.153666}, {-0.169144, -0.366049}, {-0.213299, 0.312138}, {-0.862391, -0.179164}, {0.479733, 1.023316}, {-1.704103, -0.974490}, {-0.348370, -1.488505}, {-1.099062, 0.282122}, {-1.578280, -0.162824}, {-1.091052, 0.744575}, {-0.515178, -0.044797}, {0.065343, 0.960922}, {-0.051800, -0.142943}, {-0.117723, -1.467680}, {-0.643133, 1.163677}, {-0.034072, 0.261251}, {0.464990, -0.130008}, {0.133313, -1.401987}, {0.126248, 0.450691}, {-0.003664, -0.323720}, {0.142170, -0.755157}, {-1.656898, -0.020361}, {-0.612778, 0.036440}, {0.353884, -0.743228}, {-0.430287, -0.179029}, {0.625341, 0.171575}, {1.016815, -0.257385}, {0.324956, -0.714199}, {-1.174736, -0.158217}, {-0.274466, -0.771165}, {-0.393455, -0.971745}, {-0.298555, 0.790057}, {-0.646557, -1.558486}, {0.758193, 0.973426}, {-0.512463, -0.785605}, {0.980556, -0.044524}, {0.453143, 0.624350}, {1.147269, 0.020674}, {-0.501269, -0.404065}, {-0.244718, -0.507250}, {0.770791, 0.097876}, {0.244499, -0.019047}, {-0.727271, -1.001762}, {-0.366096, -0.511113}, {0.479774, 0.574401}, {0.917365, -0.129024}, {-0.745295, -0.245488}, {0.745051, 1.034707}, {0.810366, -0.847422}, {0.235447, 0.300914}, {-0.708897, -0.941699}, {0.309677, -1.041238}, {-0.081649, 0.128611}, {0.844397, 0.010619}, {-1.009033, 0.934418}, {1.144116, 0.074744}, {-0.057235, -0.308853}, {0.360603, 0.036429}, {0.830911, -0.450962}, {-0.194946, -0.151025}, {-0.211182, 0.118259}, {0.021337, 0.332110}, {0.129465, -0.225661}, {-1.052171, -0.755217}, {0.633623, -0.177776}, {0.100743, -0.704954}, {-0.818968, 1.180590}, {-0.535346, -0.545943}, {-0.006770, 0.316309}, {0.775806, 0.533149}, {0.339163, 0.050466}, {0.318535, -0.074793}, {-1.297398, -0.351562}, {-0.772665, 1.015512}, {0.295548, -0.180960}, {-0.044699, -0.203172}, {0.724933, -1.023951}, {-0.167979, -0.725819}, {0.686506, 0.268161}, {-0.480277, -0.221435}, {-0.056920, 0.480959}, {0.030116, -0.272789}, {-0.302421, 0.129490}, {-1.671242, 0.181529}, {-0.281706, -0.333536}, {0.016290, -0.028753}, {-0.259901, -0.190484}, {0.289524, -0.195349}, {-1.337980, 0.540319}, {0.661628, -0.670418}, {0.599796, 0.557768}, {0.580559, 0.969807}, {0.031230, 0.964814}, {0.198048, 0.444485}, {0.578456, -0.883133}, {0.624222, 1.329692}, {-0.625168, -0.127331}, {-0.017311, 1.164091}, {-0.621783, -0.446638}, {0.701142, -0.309340}, {-1.057874, -0.834624}, {0.346678, -1.338687}, {0.667874, -0.522838}, {-1.028893, -0.504854}, {-1.338328, -0.931585}, {0.287635, 0.120742}, {0.230818, 0.167010}, {-0.328503, -0.748337}, {-0.255351, 0.964045}, {0.510160, -1.611867}, {0.223958, -0.860844}, {0.239175, -0.837760}, {1.266567, -0.125655}, {0.582400, 0.156299}, {0.251579, -1.778354}, {0.650474, 0.028121}, {0.993767, -0.090186}, {0.441591, -0.361052}, {-1.413507, 0.317850}, {0.334364, -0.332911}, {-0.010362, -0.177608}, {0.014458, -0.502127}, {-0.919481, -1.160841}, {-0.443414, 0.552915}, {-0.054788, -1.052794}, {-0.561902, 0.153077}, {-0.677469, -0.159762}, {0.650310, -0.922686}, {0.296712, 0.812605}, {-0.294342, 0.055605}, {-0.535585, -1.384576}, {-1.433487, -0.747544}, {0.645626, -0.741622}, {0.920579, -0.258878}, {0.169646, 0.529906}, {0.674057, 0.410030}, {-0.351663, 0.199608}, {-0.339342, -0.416492}, {-0.271758, 1.138671}, {0.224929, -1.327320}, {0.601037, 1.033542}, {-0.193132, -0.768238}, {0.364633, -0.653041}, {0.783166, -0.809904}, {0.559880, 0.350413}, {0.615788, -0.237848}, {0.236813, -0.842202}, {0.031135, -0.661401}, {0.349296, -0.774153}, {1.759036, -0.724450}, {-0.116563, 0.294276}, {0.375200, -1.357901}, {-1.029118, 1.305234}, {0.497985, -0.464184}, {-0.295867, -0.349915}, {0.221068, -0.835466}, {-0.838100, 0.275901}, {-1.020066, 0.277497}, {1.091145, 0.328918}, {0.327124, 0.702349}, {-0.476125, 0.304774}, {0.520932, 0.875467}, {-1.726524, 1.028699}, {0.060615, 0.113976}, {0.297927, 1.293605}, {-0.405591, 0.650445}, {0.037677, -0.734049}, {-0.565393, 0.943537}, {0.910424, -0.580765}, {0.493416, -0.962297}, {0.956024, 0.716498}, {0.474440, 0.623715}, {-0.922501, -0.564992}, {-0.794655, 0.719802}, {0.596664, -0.091353}, {-1.236730, 0.412576}, {-0.041676, 0.394763}, {0.786846, 0.085198}, {1.051734, -0.257630}, {-0.906726, -1.590711}, {0.362094, -1.386569}, {0.148797, -0.901821}, {-0.736306, 0.417423}, {0.329381, -0.221941}, {0.009126, 0.513875}, {-1.192236, 0.638637}, {-0.317820, 0.575279}, {1.586186, -0.027898}, {-0.025386, 0.094059}, {-0.315796, -0.838576}, {0.030063, -0.320087}, {0.534822, 0.130995}, {0.477222, -0.398652}, {-0.913466, -0.563169}, {-0.823684, -0.189615}, {-0.213996, 0.665743}, {0.654202, 0.146227}, {-0.004974, 0.257017}, {-0.024927, -0.214095}, {-1.045988, 0.681355}, {0.146436, 0.294438}, {1.089600, -0.127405}, {0.798004, 0.931002}, {-0.505832, 0.828742}, {0.361348, -0.830710}, {-0.305041, 1.032923}, {-0.728657, -0.579665}, {0.517347, -0.452207}, {0.879566, -0.278807}, {-0.124969, -0.036169}, {0.628951, -0.089218}, {-0.603025, -0.528341}, {0.019535, 1.501341}, {0.881593, 0.143029}, {-0.231925, -0.097508}, {0.538676, 0.300952}, {-0.127155, 0.296466}, {-0.274248, 0.005941}, {1.500761, -0.345010}, {-0.907824, 1.044908}, {0.414848, 1.043371}, {-0.867983, -0.304333}, {0.044936, 0.571416}, {-0.266616, 0.376188}, {0.878846, 0.549724}, {-0.170746, 0.362205}, {0.160919, 0.167739}, {0.462195, 0.540838}, {-0.875388, -0.096774}, {0.307478, -0.185363}, {-0.181949, 0.313114}, {-0.085873, -0.399748}, {-0.129085, 1.140098}, {-0.252383, 0.086665}, {0.189609, -1.301528}, {0.382798, 0.498417}, {-0.506249, -0.317346}, {-1.212357, 0.230474}, {0.474321, 0.181404}, {0.681870, -0.999781}, {0.607469, -0.406532}, {0.622035, -0.522596}, {0.227928, 0.106501}, {-0.379127, -0.283975}, {0.139899, -0.090042}, {0.672276, -0.271219}, {-0.234798, -0.982539}, {0.475426, -0.896914}, {-0.325514, 0.546342}, {0.437787, 0.300656}, {-0.625297, -0.525772}, {-0.061169, 0.198968}, {-0.094667, 0.112590}, {0.786903, 0.717350}, {-0.109661, -0.225045}, {0.186298, -1.271786}, {-0.369875, 0.986481}, {0.689748, -0.439040}, {-0.965116, -0.848020}, {0.656998, -2.318079}, {0.002981, 0.218055}, {-1.189818, 0.355672}, {0.584073, -1.050715}, {-0.108002, -0.588069}, {-0.313385, 0.621555}, {-0.889104, -0.082471}, {-0.769348, 1.617374}, {-1.728674, 1.396468}, {-0.616521, 1.370656}, {-1.249198, 0.309463}, {0.189456, -0.979952}, {-0.118186, 1.507419}, {0.747125, 0.309914}, {-0.614646, 1.308353}, {0.333443, -1.419442}, {-1.700063, 0.680655}, {0.266295, 0.063078}, {-1.331327, 0.169856}, {0.242049, -1.531715}, {0.960667, -0.302137}, {-0.061825, 0.429394}, {-0.329970, 0.278702}, {0.410208, 1.176057}, {-0.789042, -0.174484}, {-0.238696, -0.184614}, {0.602804, 0.051704}, {-0.633642, 0.103324}, {0.065643, -0.546136}, {-0.339235, -0.673524}, {-0.315448, -0.300233}, {-0.864395, 0.215781}, {0.254565, 0.459681}, {-0.723593, 1.270257}, {-0.583801, 0.838345}, {-0.808536, -0.416249}, {-0.053534, 0.820439}, {0.798705, -0.418082}, {1.776613, -1.110952}, {0.366472, 0.636865}, {0.324757, 0.701457}, {-0.036684, 0.112409}, {-0.877729, 0.003873}, {-1.084160, -0.401799}, {-0.008295, 0.326360}, {0.787213, -0.261947}, {0.836987, -0.392854}, {0.275954, 0.382297}, {-0.690174, 0.027938}, {-0.374934, 0.437628}, {-0.759869, 0.360720}, {-0.638815, 0.093196}, {0.189722, -0.218160}, {-0.454777, -1.027413}, {1.236142, 0.310097}, {0.477871, -0.594035}, {-0.124788, -0.108431}, {0.544631, 0.996734}, {-0.496622, -0.463029}, {0.625047, 0.069807}, {0.557384, 0.060492}, {-0.265568, -1.409334}, {0.239741, 0.259396}, {0.904890, -0.068242}, {-0.744938, 0.163030}, {-0.471091, -0.345572}, {-0.273164, 0.370181}, {0.729318, 1.531839}, {-0.726184, -0.223504}, {0.242483, 0.053784}, {-0.205845, -0.562647}, {-2.151637, -0.069466}, {-0.846446, 0.795935}, {1.110915, -0.399958}, {0.489046, -0.556660}, {0.205667, 0.176983}, {0.328136, 0.200920}, {0.527322, 0.191632}, {1.546037, -0.657550}, {-0.310488, 0.301548}, {0.585276, 0.957516}, {0.128524, 0.840981}, {0.018146, 1.407488}, {-1.516386, 0.228783}, {0.124218, -0.156492}, {0.265637, 0.315627}, {-1.063782, -0.367510}, {0.827797, 0.276360}, {1.960161, -1.227262}, {0.806068, 1.260862}, {0.373849, -0.276127}, {-0.498184, -0.462535}, {-0.077592, 0.327073}, {0.588710, -0.430273}, {-0.905723, -1.065033}, {-0.016188, -0.290291}, {-0.109620, 0.477222}, {0.565824, -0.470857}, {0.705157, 0.606991}, {0.614145, -0.049931}, {-0.031315, -0.632364}, {0.072033, -0.559342}, {0.458793, 1.387290}, {0.206636, 0.224213}, {-0.392240, -0.854508}, {-0.839329, 1.695036}, {0.566507, -0.629087}, {0.370644, -1.070375}, {0.761916, -0.623349}, {0.602129, 0.418224}, {0.790301, -0.310664}, {1.481982, 0.146058}, {-1.573813, 0.024454}, {0.567915, -0.336681}, {-0.639597, 0.182668}, {1.260436, 2.207508}, {0.696288, 0.181341}, {0.376110, 0.431512}, {-0.000551, 0.056281}, {0.402438, -0.361156}, {0.072172, 0.279490}, {-0.885060, -0.641645}, {1.385817, 0.885361}, {0.690711, -0.158455}, {-0.960198, -0.182059}, {0.321308, 0.180684}, {0.147669, -0.549752}, {-0.107020, 0.306074}, {0.174252, 0.899434}, {0.061913, -0.189282}, {1.102905, -1.250777}, {0.223198, -0.637361}, {-2.146420, 0.173387}, {-0.084436, -0.775938}, {0.287327, 0.446614}, {1.090236, 0.383949}, {1.121181, 0.127876}, {0.103766, 0.991675}, {1.242702, 0.272046}, {1.008926, -0.211179}, {-1.353983, -0.705201}, {-1.661310, 0.179906}, {-0.572442, 0.843940}, {0.534838, -0.420940}, {1.906158, 1.102764}, {-0.553360, -0.478077}, {-0.636383, -1.315762}, {-1.124395, 0.081685}, {0.220542, 0.468091}, {-1.229590, -0.659073}, {-0.564517, 0.239986}, {-1.172267, -0.314597}, {0.151538, 0.149107}, {0.242211, -0.821363}, {0.254545, 0.273831}, {-0.534100, -0.226399}, {1.163542, -0.942243}, {1.041018, 0.317274}, {-0.401554, -0.096105}, {-0.113999, -0.117513}, {-0.010346, -0.748131}, {0.354813, 0.636504}, {-0.681541, -0.112983}, {-0.488145, 0.464117}, {-0.193164, 0.061733}, {-0.192093, -0.321730}, {0.509883, 0.382645}, {-1.403973, -0.336215}, {0.394349, -0.205158}, {0.391611, -0.502082}, {0.616434, -0.022915}, {0.804218, -0.495715}, {-0.079753, 0.070374}, {0.341990, -0.635143}, {0.067861, -0.236447}, {-1.101606, -0.120961}, {0.442884, -0.438436}, {0.212980, 0.309736}, {0.528495, -0.251375}, {-0.692353, -0.169402}, {0.562221, -0.028760}, {0.590351, 0.405250}, {-0.717372, 0.369161}, {-0.806613, 0.504272}, {0.286954, 1.111197}, {-0.105423, -0.153474}, {-0.346757, -1.116428}, {0.226199, -0.504658}, {0.004135, -0.101712}, {-0.040985, -0.512184}, {-0.022114, -0.025237}, {-0.334621, -0.134380}, {0.534726, -0.729250}, {-0.282945, -0.576566}, {-0.931037, 0.047644}, {1.365371, -0.644779}, {0.168399, -1.211458}, {2.486020, -1.456800}, {-0.004467, -0.574279}, {-0.401257, 1.031333}, {0.424854, 0.679751}, {-0.360869, -0.836076}, {-0.349323, 1.100520}, {0.126475, 0.711401}, {-0.075597, 1.820855}, {-1.746648, 1.113080}, {-0.153525, -0.544782}, {-0.533184, -0.693391}, {-0.769927, -0.582211}, {-0.680363, 0.216778}, {-0.004214, -1.526735}, {-0.086907, -0.002847}, {0.232166, -0.016912}, {0.817197, 0.482386}, {-1.105532, 0.491655}, {-0.376338, 0.410127}, {1.042417, 0.054103}, {-0.241349, -0.748510}, {-0.014625, -0.417149}, {0.738367, 0.443956}, {-1.044035, 0.497683}, {0.292520, -0.751995}, {-0.217407, 0.722108}, {0.918647, -0.718313}, {-0.164316, 0.409743}, {1.309759, 0.090394}, {0.233709, -0.815158}, {-0.239462, 0.605397}, {-0.039005, -0.027079}, {-0.954133, -0.096347}, {1.816169, 0.521655}, {0.153716, -0.328576}, {0.835515, -0.359370}, {-0.705611, -0.523065}, {0.138570, -0.063344}, {0.083846, -0.023266}, {-0.562762, -0.812709}, {0.365173, -0.859163}, {0.578421, -0.182048}, {-0.126089, 1.117181}, {0.617319, -1.086710}, {0.769929, 0.422361}, {-1.309781, 1.172984}, {-0.596821, -0.251837}, {0.212351, -0.811837}, {-0.162098, -0.192380}, {-0.813093, 1.121627}, {0.256762, 0.936857}, {-0.875631, 1.008870}, {0.247567, 0.868075}, {0.971357, -0.738473}, {-0.226325, 0.330532}, {-0.162002, 0.916161}, {-0.400712, 1.001422}, {0.074112, 1.112345}, {0.860980, 0.266196}, {0.395444, -0.557019}, {0.120734, -1.186860}, {0.556697, 0.066680}, {0.854588, 0.178589}, {2.451387, -1.403948}, {0.227316, 0.024298}, {0.591620, 0.075444}, {0.200034, 0.061233}, {0.482442, -0.836773}, {1.044504, 0.162091}, {0.928003, -0.484096}, {0.382501, -0.191498}, {-0.375135, 0.607373}, {-0.736591, 0.301910}, {0.174839, -0.142515}, {0.733383, 0.997919}, {-0.786136, -1.067298}, {-0.206222, -0.113384}, {-0.464171, 0.094194}, {-1.350080, -0.791223}, {-1.126134, -0.116062}, {-0.208917, -1.109539}, {-0.370726, -0.057655}, {-0.091744, -1.090501}, {-0.208418, 0.132989}, {0.864632, -0.798601}, {1.102361, 1.368734}, {-0.272215, -0.247604}, {-1.023085, -0.986586}, {-0.065967, 0.605997}, {0.063587, -0.976618}, {-0.267152, -0.116898}, {-0.461969, -0.203471}, {-0.573852, 0.570464}, {-0.138348, 0.534036}, {-0.090592, 0.936618}, {0.850179, -0.537120}, {-0.433713, -0.556356}, {-0.537237, -0.713364}, {0.426253, -0.478599}, {1.133750, -0.964272}, {-1.331896, 0.116871}, {0.191830, 0.696149}, {-0.109898, -1.447008}, {0.959592, 0.346543}, {0.261532, -0.822086}, {0.303775, -1.459434}, {0.530404, 0.421720}, {-0.453037, -1.463699}, {0.123500, 0.017147}, {0.172476, -0.507657}, {-0.160135, 1.263925}, {0.030836, 0.556500}, {-0.185416, -0.025333}, {0.637640, 0.395256}, {0.089760, -0.864083}, {0.577483, 1.581489}, {0.979522, 1.296548}, {-0.497799, -0.045689}, {-0.047660, 1.066061}, {0.048446, -1.060159}, {-0.968548, -0.221439}, {1.484060, 0.378410}, {-0.770293, -0.087204}, {-0.764451, -0.554893}, {0.348932, -0.676770}, {-1.210537, 0.339603}, {0.924898, -0.536966}, {-1.159727, -0.216140}, {-0.625226, -0.977963}, {0.640809, 0.919168}, {-0.239144, 0.785286}, {0.809998, 0.679827}, {0.397941, -0.337279}, {1.158469, -0.284939}, {0.740868, -0.632110}, {0.246451, 0.582746}, {1.169569, -0.447871}, {-0.206093, -0.436712}, {1.593053, -0.562783}, {-0.072116, -1.390822}, {0.534517, -0.038637}, {0.034689, 0.141429}, {0.474386, 0.514105}, {0.572791, -0.330251}, {-0.548599, -0.594569}, {-1.071301, -0.270923}, {0.486895, 0.652847}, {-0.069770, 1.249662}, {-0.040552, -0.687992}, {-0.284734, 0.643650}, {-0.808577, 0.013167}, {-0.452947, 0.353593}, {-0.729562, -2.012804}, {1.237631, -1.264824}, {0.110039, 1.404809}, {0.107938, -0.296577}, {0.386214, -0.709940}, {1.137573, 0.606987}, {0.412215, -0.555525}, {-1.988232, -0.162112}, {0.848561, 0.408090}, {-0.811612, 0.394181}, {0.485756, -0.746334}, {0.049115, -0.087741}, {-1.022135, -0.921590}, {-0.633999, 0.061617}, {-0.090648, 0.618570}, {-1.247020, -0.001903}, {-0.421031, -0.238286}, {0.711286, -0.314523}, {-0.147505, -0.383916}, {-0.683990, 0.445952}, {0.432133, -0.119312}, {-1.132072, -0.396738}, {0.135841, 0.222292}, {-0.230532, 0.331470}, {0.254731, -0.376331}, {-0.776682, 0.039871}, {-1.169703, -0.331153}, {-0.873728, 0.067719}, {-0.207084, -0.835310}, {0.037790, -0.362456}, {0.583451, 1.129280}, {-0.558111, -0.573604}, {0.856679, -0.022411}, {0.164767, 0.141428}, {-0.009111, -0.317562}, {1.150656, 1.264776}, {-0.789474, 0.292994}, {-0.466256, 0.131396}, {-0.773386, 0.095435}, {-0.310801, 0.037979}, {0.426976, 0.983285}, {0.477342, 0.671231}, {0.453581, 0.460922}, {-0.126415, 0.223835}, {-0.197906, -0.189931}, {-0.526443, 0.635295}, {-0.729339, -0.271754}, {-0.277572, -0.106432}, {0.605958, 0.268731}, {0.697244, -0.324635}, {-0.601406, 0.750119}, {2.020241, -0.455436}, {-0.545556, -1.777371}, {-0.106454, -0.323364}, {0.730151, -0.521349}, {-0.222232, -0.678729}, {-0.822648, 0.759164}, {0.347482, 0.318147}, {0.320443, 1.047896}, {-0.007527, -0.099273}, {-0.469680, 0.811059}, {-0.725923, 0.045348}, {-0.845127, 0.408992}, {-0.483176, -0.402357}, {-0.244242, -0.138255}, {0.777707, 0.361076}, {-0.284361, -1.213446}, {-0.005269, 1.151649}, {-0.132040, -0.605975}, {-0.614343, 0.207020}, {0.172750, 1.326225}, {-0.902838, 0.195327}, {0.343014, -0.865008}, {0.125967, 0.451258}, {0.332072, 0.614969}, {-0.298182, 0.490626}, {1.424204, -0.479491}, {-0.031385, 0.164505}, {0.233636, -1.315612}, {-0.450889, 0.377407}, {0.029363, 0.410567}, {0.306058, 0.200634}, {-1.349288, 0.431649}, {0.358784, 0.047745}, {-0.557686, 1.348221}, {-0.061715, -0.056931}, {-0.363172, 0.195052}, {-0.657930, -0.139592}, {-0.228460, 0.043261}, {-0.400956, -0.445312}, {-0.518420, 0.120859}, {-0.698407, -1.044712}, {1.235472, 1.348407}, {0.487842, 0.303364}, {-0.723742, 0.780963}, {-0.593303, -0.225305}, {-0.534609, 0.308384}, {0.517702, 0.592656}, {0.954708, 0.946876}, {0.138369, 0.042618}, {-0.011117, 0.156468}, {0.129045, -0.782424}, {0.544442, -0.335302}, {0.100454, 0.021699}, {-0.414913, -0.364941}, {-1.446169, 0.180437}, {-0.104807, -1.198166}, {-0.663552, 0.253006}, {-0.873757, 0.653705}, {0.913861, 0.776582}, {0.408304, -0.209211}, {-0.292234, 0.935191}, {0.612411, 0.506772}, {0.052624, -0.170316}, {-0.316935, 0.099714}, {-0.353097, 0.013558}, {1.233948, 0.295996}, {0.369796, 0.587798}, {-0.240517, -0.082754}, {0.456761, 1.042474}, {-0.213108, 0.167637}, {0.399378, -1.139074}, {0.884318, -0.559808}, {1.445237, -0.362312}, {0.116480, 1.022887}, {-1.064627, -0.325939}, {0.517946, -0.548647}, {0.415227, 0.031714}, {0.100481, -0.138348}, {-0.809183, -0.296851}, {0.780624, 1.262479}, {0.563065, -0.043795}, {0.912444, -0.494706}, {-0.734037, 0.870375}, {-0.318819, 1.118381}, {-0.000746, -0.287874}, {-1.164864, -0.526955}, {0.294943, 0.563007}, {-0.310269, 0.305960}, {-0.477327, -0.723869}, {1.444745, 0.187725}, {1.871817, -0.263160}, {-0.194735, 0.555531}, {-0.321051, -0.730174}, {-0.190988, -0.402861}, {-0.471553, -0.864754}, {0.858125, -1.345250}, {-0.616872, 0.087958}, {1.283791, 0.027641}, {0.256228, -1.305667}, {0.135487, -0.829405}, {-1.326564, 0.237115}, {-0.150936, 0.123060}, {0.525275, -1.201838}, {0.345162, -0.254455}, {-0.289832, -0.377094}, {-0.152667, -0.439359}, {-1.044104, -0.312180}, {0.123564, 0.909003}, {0.092452, -0.627863}, {-1.077986, 0.652712}, {0.546415, 0.317801}, {-0.327865, 0.791680}, {-0.742691, 0.429484}, {1.359870, 0.653960}, {0.618629, -0.810634}, {-1.486101, -0.628531}, {0.594045, -0.133495}, {-0.470586, 0.135156}, {-0.143237, -0.465263}, {-1.088628, 0.943733}, {0.198579, -0.639867}, {-0.063074, -0.021058}, {0.108028, 0.446404}, {1.189162, 0.613968}, {0.337471, -1.129207}, {-0.455311, 0.326954}, {-0.570540, -1.907149}, {-0.314445, 0.220247}, {-0.644406, 0.871505}, {-0.516263, 0.822251}, {-0.557629, -0.170696}, {0.722273, -0.131339}, {0.230421, 0.790328}, {-0.104488, -1.716517}, {-1.241919, 0.455016}, {-0.692486, 1.120817}, {1.549314, -0.046370}, {-0.106043, 0.644970}, {-0.074406, -0.804419}, {0.548174, 0.128521}, {-0.595960, -0.462357}, {0.142829, -0.219578}, {-0.162097, -0.875243}, {0.686753, 0.775003}, {0.873880, 1.383881}, {-0.653841, 0.636136}, {0.383632, -0.777116}, {-1.108266, 0.038942}, {0.971520, 0.211922}, {-0.268643, 0.730017}, {0.855520, 0.049969}, {0.302034, -0.524310}, {-0.852706, -0.537224}, {-0.804297, -0.114715}, {-1.478564, -0.084384}, {-0.408535, 0.423840}, {-0.168721, -0.141810}, {0.077383, 0.243237}, {-1.559434, 1.191402}, {1.022154, -0.100324}, {0.323561, 0.469589}, {-0.663531, 0.640213}, {0.554019, 1.763611}, {1.013954, -0.099589}, {-0.768361, 0.429501}, {-1.056947, -0.854475}, {0.199817, -1.902227}, {-0.070703, -0.504816}, {-0.936270, 0.009265}, {0.151126, -0.507320}, {-0.504326, 0.276844}, {-0.314265, 1.314549}, {0.326736, -0.579350}, {0.592561, -0.964175}, {-0.223907, -0.829707}, {-0.401792, -0.560375}, {0.302453, -0.641377}, {0.179660, 0.273186}, {-0.093790, -1.403175}, {-0.547478, -0.365566}, {-1.082055, -0.079541}, {0.493591, 0.675680}, {0.488427, 0.562525}, {0.214921, 0.219073}, {1.036597, -0.145378}, {-0.027255, -0.113060}, {0.673240, 0.620677}, {0.723878, -0.899601}, {0.069137, -0.059731}, {0.241888, 0.932147}, {0.990557, 0.522072}, {0.333210, -0.429499}, {0.416918, 0.495753}, {-0.659767, -0.994323}, {0.616175, 0.547587}, {1.096390, 0.648779}, {1.512614, 1.140619}, {-0.038962, -1.035122}, {-1.083694, -0.279680}, {0.614096, 0.432151}, {-0.347563, 0.062973}, {1.386988, -0.035997}, {0.327510, -0.207868}, {-1.183518, -1.737384}, {-0.208895, 1.406995}, {0.663338, -0.017747}, {-0.897272, -0.573788}, {0.942633, -0.547325}, {-0.099388, -0.254556}, {-0.201353, 0.644556}, {0.866075, -0.228444}, {0.946155, -0.216844}, {-0.253558, 0.114459}, {0.715896, 0.743102}, {-0.359932, 0.276616}, {-0.210247, -0.083149}, {0.802847, 0.140860}, {0.408994, 0.029881}, {0.377356, 0.319152}, {-0.372690, -0.245271}, {0.676166, 0.109436}, {0.724096, 0.333436}, {0.221166, 0.187551}, {-0.391584, 0.738071}, {0.005351, 0.778829}, {-0.358326, 0.932486}, {0.490539, 0.803589}, {-1.940728, -0.191677}, {0.344834, 0.501654}, {0.800213, 0.523732}, {0.582049, -0.075948}, {-0.161980, 0.485703}, {-0.259158, -0.582118}, {1.062836, 0.273222}, {-0.778178, 0.190672}, {0.714527, -1.538556}, {-0.396795, 0.449148}, {-0.781750, 0.953574}, {-0.338389, -0.501176}, {-0.641856, -0.054484}, {0.563696, -0.904985}, {-0.099391, 1.184931}, {-0.112808, 0.108574}, {0.646080, 0.427004}, {0.212517, 0.155965}, {0.535560, -0.571720}, {0.553376, -0.294148}, {-1.607834, -0.184165}, {-1.547767, 0.680574}, {0.781165, 0.154537}, {0.560969, 0.631483}, {0.495580, 1.820957}, {0.007403, -0.213880}, {-0.133441, 0.263800}, {-0.539947, -1.040542}, {0.451911, -0.153928}, {0.637194, 0.419776}, {1.273621, 1.299122}, {-0.212328, 0.126958}, {-0.797461, 1.644603}, {-0.122874, 1.002433}, {0.531739, 1.435631}, {-0.292445, 0.088739}, {0.116979, 0.506073}, {0.300921, -0.773498}, {-0.001333, -0.556370}, {-0.895409, 0.437721}, {0.917279, 0.508782}, {-0.491002, 0.775053}, {0.198360, -0.494544}, {-0.466188, 0.389353}, {1.026724, 0.378360}, {0.554313, 0.153011}, {2.109013, 0.702959}, {-1.076990, -0.126220}, {-0.628257, -0.250837}, {-0.360120, -0.713433}, {0.323767, -0.526853}, {0.618992, 0.232543}, {0.680284, -0.239604}, {-0.469444, 0.121707}, {-0.121518, -0.113712}, {0.429205, -0.768057}, {0.120817, -0.738954}, {0.246917, -0.025595}, {0.223685, 0.828870}, {0.558682, 0.833145}, {-0.226176, -1.141426}, {0.592138, 0.661966}, {0.057983, -0.123112}, {-0.277232, 0.942800}, {0.380806, -0.215897}, {-1.027768, -0.692785}, {1.629491, -1.099912}, {-0.047831, -1.555090}, {-0.577377, -0.165198}, {0.708597, -0.250402}, {-1.063587, -0.338164}, {0.505373, 0.385189}, {0.072781, -0.658487}, {0.542617, -0.198652}, {1.367844, 0.323822}, {-0.727703, 0.962762}, {-0.393308, 0.873045}, {-0.950481, 0.223532}, {1.018389, 0.884161}, {-0.042519, 0.854602}, {-1.358413, -0.098257}, {0.245351, -0.975102}, {-0.055406, -1.219287}, {1.325559, -0.297813}, {-0.072107, -0.600966}, {-0.045452, -0.636110}, {1.196032, -0.569957}, {0.455332, -1.319878}, {-0.547178, -0.392150}, {-1.296887, -0.758016}, {0.862281, 0.903182}, {-0.538526, -0.948723}, {0.065158, 0.398744}, {-0.565977, -0.745461}, {-0.050462, 0.869712}, {0.205620, -0.219247}, {0.093927, -0.270377}, {1.113685, -1.069443}, {-0.718055, 0.556379}, {0.050929, 0.307347}, {-1.222501, 0.207457}, {0.951141, -1.438969}, {-0.003803, -0.125003}, {-1.267607, 0.411439}, {-0.857943, -1.588554}, {0.596604, -0.286897}, {-0.872539, -0.101087}, {-0.658556, 0.189207}, {-0.387868, -0.070786}, {-0.462842, 0.344476}, {1.085369, -0.860640}, {1.581858, 1.043663}, {-0.972570, 0.171239}, {-0.075607, -0.486479}, {1.421958, -1.399106}, {-0.589684, 0.410053}, {0.377491, 0.034375}, {0.428788, 0.365635}, {-0.528193, -1.238089}, {0.262891, 0.578832}, {0.066590, 0.188433}, {-0.745635, -0.018847}, {-0.116912, -0.514034}, {0.597006, 0.677949}, {0.107517, -0.406065}, {1.015423, 0.001044}, {-0.197476, 0.574557}, {-0.248416, -0.193462}, {0.473342, -1.017108}, {0.137976, 1.024174}, {-0.210346, 0.751566}, {-1.015057, -0.473646}, {-0.595567, 0.801209}, {0.796281, 0.545814}, {-0.856927, -0.309617}, {0.591179, 1.361440}, {0.157283, -0.776932}, {0.393443, 1.025215}, {0.537778, 0.697904}, {2.219707, 0.499801}, {1.273309, -0.828332}, {-0.982928, 0.949413}, {-1.153902, 0.670467}, {-0.156032, -0.994523}, {0.821935, -0.378448}, {0.260809, 0.087339}, {0.216860, -0.601138}, {-0.882410, -0.227433}, {-0.440866, -0.094405}, {-0.074585, 0.039917}, {-0.737009, 1.217088}, {-0.268090, 0.493822}, {-0.066510, -0.570724}, {-0.203579, 0.757423}, {0.062591, -0.452128}, {0.507822, 1.130258}, {-1.135255, -0.393007}, {0.740321, 0.411285}, {-0.402801, -0.390182}, {0.794407, 0.970310}, {0.566977, 0.605520}, {-0.537209, 0.639380}, {-0.426697, 0.138911}, {-0.087417, 0.452920}, {-1.152861, -0.321958}, {-0.284884, 0.639191}, {0.145500, 0.907847}, {0.982621, 0.367939}, {-0.195191, 1.137989}, {0.211046, -1.239543}, {0.562427, -0.534005}, {0.830928, -0.588515}, {0.651664, -0.531934}, {-0.056867, 0.384091}, {-0.589129, 1.364900}, {-0.141771, -0.114847}, {-0.411185, 0.073030}, {-0.265763, 0.272064}, {0.882316, 0.793624}, {-0.160386, 0.002500}, {-0.235607, -0.567823}, {-1.210585, 0.206751}, {0.817503, 0.330202}, {-0.162811, -1.417884}, {0.592217, 0.010516}, {1.662363, -0.402841}, {-0.446189, 0.501595}, {-0.729150, -0.238869}, {-0.452834, 0.078506}, {-1.518996, -0.427439}, {-0.266874, 0.101362}, {0.531735, -0.547254}, {-0.965587, 0.011378}, {-0.298296, -0.096297}, {-0.149287, 0.531172}, {0.448779, -0.448307}, {1.047356, -0.315960}, {1.247794, 0.506753}, {0.590511, 0.472349}, {0.121279, -0.433674}, {-0.114362, 0.767422}, {1.581429, 0.955828}, {1.476868, -0.288333}, {-0.556583, -1.164155}, {-0.059431, -1.160055}, {0.634128, 1.002689}, {-0.575933, 0.033633}, {1.081099, 1.385344}, {-1.422736, 0.075505}, {1.046288, 0.401673}, {0.435929, -0.472107}, {-0.206122, 0.348224}, {-0.412777, -0.109916}, {0.121895, -0.581462}, {-0.133105, 0.264961}, {-0.850482, -0.072401}, {-0.577871, 0.376519}, {-1.388756, -0.023759}, {0.779804, -0.186311}, {-0.620828, -0.118957}, {0.932679, 0.434943}, {0.633370, 0.592508}, {1.134259, 0.028486}, {0.799487, 0.223794}, {-0.347314, -0.170474}, {0.539087, -0.221093}, {-0.820533, 0.307851}, {-0.717160, 0.017505}, {0.542587, -1.162436}, {-0.624600, 0.801725}, {1.352536, -0.143812}, {-0.796545, -0.900611}, {-0.356700, -0.350123}, {0.038018, 0.541666}, {0.289386, 0.401983}, {-0.137301, 1.430812}, {1.503273, 0.402538}, {-0.492407, -0.424006}, {0.932498, -0.226829}, {0.093021, 0.081391}, {-0.093971, -0.658882}, {-0.284706, -0.026044}, {-0.226983, 0.526229}, {0.029324, 0.041975}, {0.873120, 0.151935}, {-0.393476, -0.848702}, {1.838695, -0.084288}, {-0.074042, 1.079671}, {0.039939, -1.111425}, {0.669271, 2.216002}, {-0.589368, -0.446797}, {-0.465512, 0.085837}, {0.651261, 0.403519}, {0.218905, -0.766309}, {-0.128001, 0.073902}, {-0.272830, -0.432066}, {0.519152, -0.589446}, {-0.311524, 0.233018}, {-0.545692, -0.664651}, {-1.380502, 0.757145}, {-0.000180, -0.339163}, {0.446891, 0.438011}, {0.454009, -0.094370}, {-1.035878, 0.187205}, {-0.896572, 0.237276}, {0.382598, 0.442667}, {-2.504186, -0.537285}, {0.099216, 0.970556}, {-0.381212, -0.168048}, {0.554364, -0.100494}, {-0.269872, -1.498621}, {-0.494833, -0.343613}, {0.449499, 0.124923}, {0.027846, -0.151862}, {-0.115574, -0.391918}, {0.431950, -0.632974}, {-0.223079, 0.433815}, {-0.360470, 0.230335}, {-0.351935, -0.652477}, {-0.699202, -0.709860}, {0.165994, 1.156386}, {0.946215, -0.422976}, {-0.694515, 0.460667}, {0.163665, -0.096615}, {-0.011231, 0.132682}, {1.105695, 0.245389}, {1.070530, 0.039658}, {-0.393505, -0.942814}, {0.695178, -0.279964}, {0.373143, -0.153469}, {0.068343, -0.246175}, {0.255959, 0.802372}, {-0.561208, 0.096934}, {-0.520615, -0.044160}, {0.829240, -0.282919}, {0.617384, -0.417490}, {1.900495, 1.234182}, {-1.341464, 1.226474}, {-0.168441, -0.813023}, {1.015085, -0.464638}, {0.369413, -0.066272}, {-0.239524, 0.683590}, {0.357866, -0.112409}, {1.009900, 1.254497}, {0.068589, 0.356761}, {-0.438932, -0.304929}, {-0.012575, -0.341361}, {0.299906, -0.036658}, {0.404167, -0.128515}, {0.366136, -1.307424}, {-0.598692, -1.008058}, {0.110613, -0.159653}, {1.201734, 0.376235}, {-0.704852, 0.106275}, {0.007635, 0.082348}, {-0.767279, 0.145814}, {-2.046550, 1.123715}, {-0.006254, -0.772897}, {1.860613, 0.657821}, {-1.010233, 0.378664}, {0.049775, 0.410985}, {-1.426361, 0.659661}, {0.362923, 0.949449}, {0.169229, -0.433502}, {1.588609, -1.429715}, {1.714049, 1.762603}, {0.280914, 0.315189}, {-0.366100, 0.687960}, {-0.017839, 0.001341}, {-0.011156, -0.946371}, {0.605485, -0.901263}, {1.083968, -1.642610}, {0.689493, 1.137977}, {-1.346342, -1.228991}, {0.441885, 0.428678}, {-0.300121, -0.242661}, {0.151982, 0.516324}, {1.165886, 0.321775}, {-0.428105, 0.187019}, {-1.004687, 0.294742}, {0.338772, 1.213508}, {0.988679, -0.037867}, {-0.224368, 0.155973}, {0.141559, 0.186316}, {-0.644438, 0.395989}, {-0.199866, -0.523264}, {-0.107300, -0.461294}, {0.358698, -0.649953}, {-0.634770, -0.312915}, {-0.564734, -0.715844}, {0.255026, -1.108371}, {-0.086293, 0.312637}, {0.814938, -0.283814}, {1.229763, 0.128464}, {0.227974, -0.418647}, {-0.120043, -0.684067}, {0.077666, -0.085758}, {-0.050780, -0.670323}, {0.136626, 0.813804}, {0.594956, -0.407936}, {0.955985, -0.191253}, {0.489552, -1.486926}, {0.577579, -0.486322}, {0.562717, -0.751664}, {0.002459, 0.263571}, {0.288905, -0.878478}, {-0.464409, -0.538675}, {0.286060, 0.412672}, {-0.181148, 0.381556}, {0.151361, 0.358454}, {-0.078488, 0.251609}, {0.773414, -0.739208}, {0.691577, -0.694201}, {-1.293390, -0.509235}, {1.146156, -0.653543}, {-0.242636, -0.801005}, {0.353931, -0.135868}, {-0.243086, -0.439001}, {0.354013, -0.233653}, {-0.277764, -0.677296}, {0.473043, 0.038362}, {-0.176500, 0.264359}, {-0.625575, 0.366112}, {0.202867, 0.941900}, {-0.326032, 0.671700}, {-1.046037, -0.687290}, {-0.868275, -0.007581}, {-0.570060, 0.286439}, {0.713059, 0.210833}, {-1.294165, -0.028527}, {0.071361, 0.847772}, {0.508287, 0.046283}, {0.058998, -0.528609}, {-0.568115, 1.051018}, {0.922293, -0.377449}, {0.202094, 0.031911}, {-0.114554, -0.415825}, {-0.776175, -0.804922}, {-0.057279, -0.584848}, {0.412935, 0.618731}, {-1.092835, 0.486985}, {-0.678552, 0.788882}, {-0.968375, 0.329940}, {-0.714789, -0.149820}, {-0.384156, 0.175588}, {0.730323, -0.459545}, {-0.374056, -0.030715}, {-0.530865, 1.744913}, {0.317942, 0.712183}, {0.514842, -1.521713}, {-1.982352, 0.917451}, {0.533069, -0.184669}, {-0.047735, -0.546721}, {-0.084978, 0.164704}, {-0.713723, 0.221991}, {0.082505, -0.468486}, {-0.100827, 0.472135}, {-0.666553, 0.018597}, {0.287429, -0.329748}, {-1.436239, 1.330035}, {0.290806, -0.769263}, {-0.048715, 0.566687}, {-0.968640, -0.211849}, {0.088714, -1.498366}, {-0.081821, -1.526247}, {-0.569582, 0.589569}, {-0.581721, -0.848599}, {-0.006144, -0.254501}, {-0.374622, 1.266927}, {-0.426722, 0.039232}, {-0.613330, 0.408639}, {0.242699, -0.420023}, {-0.511846, -0.344112}, {0.055041, -0.785869}, {0.817784, 0.414807}, {0.327502, -0.140078}, {-0.177410, 0.254219}, {-0.697158, 1.041201}, {0.443662, 0.437433}, {0.255286, 1.735288}, {-0.986974, 0.995444}, {-0.170297, 0.934111}, {0.016505, -0.449689}, {0.074375, 0.925671}, {-0.264038, -0.993178}, {0.394263, 0.428509}, {0.275369, -0.148148}, {-0.026461, 0.786728}, {0.219694, -0.715724}, {-0.198181, -0.337653}, {-0.046106, 1.077969}, {-0.427274, -1.648299}, {0.916379, 0.354817}, {-0.495159, 0.025080}, {0.900671, -0.716446}, {-0.255983, 0.933249}, {0.849832, -0.023818}, {0.848812, 1.222279}, {0.762640, -0.407851}, {-1.113535, -0.693755}, {0.853063, -0.222685}, {0.182071, -0.562988}, {0.452813, -0.071797}, {-1.401647, 0.298240}, {-1.096633, -0.276216}, {-0.470637, -1.218317}, {0.061808, 0.397691}, {0.600333, -0.767871}, {1.008250, 0.000708}, {-0.647290, 0.306240}, {-0.398649, 0.249797}, {-1.305586, -0.172789}, {0.385940, -1.320990}, {0.758806, 0.901173}, {-0.002028, -0.687838}, {-0.619773, -0.519246}, {0.850480, -0.003780}, {-0.327611, 1.357023}, {0.407292, 0.562773}, {-0.053213, -0.769666}, {1.106032, 1.282982}, {-0.673619, 1.289760}, {0.476732, -0.611785}, {0.152022, -1.680944}, {-0.649479, -0.291411}, {-0.012972, -0.162121}, {-0.691724, 0.407729}, {0.236190, -1.267413}, {0.533790, 0.419325}, {-0.018652, 0.266647}, {0.229770, 0.165313}, {-0.558823, -0.887105}, {-0.764080, 0.628785}, {0.355465, 0.190894}, {-1.031620, 0.424156}, {0.210209, -0.511032}, {2.231847, -1.271046}, {0.495758, -0.561719}, {-0.007179, -0.289322}, {0.208132, 1.637787}, {-0.761436, -0.158279}, {-1.584498, -0.324741}, {0.085113, 0.686596}, {-0.430017, 0.361140}, {0.205829, -0.606992}, {0.307451, 0.417509}, {-0.305665, 0.631657}, {-0.401597, -0.758367}, {-0.231825, -0.733147}, {0.413582, 0.999199}, {-0.017343, -0.416519}, {-0.165102, -1.228027}, {1.079916, 0.834003}, {-0.032758, 1.090964}, {0.682886, 0.223947}, {-0.125567, 0.406849}, {-0.291070, 0.319598}, {-0.433261, 1.411476}, {-0.521844, 0.077749}, {-1.622536, 0.199245}, {-1.152493, -1.236599}, {0.010262, -1.143242}, {0.590426, 0.129957}, {0.710855, -0.106919}, {0.453857, -0.988619}, {-0.904005, -0.503640}, {0.589253, -0.486321}, {-0.430470, -0.027916}, {-0.820770, -0.751695}, {-0.282278, -0.038594}, {0.864998, 0.097233}, {0.111612, -0.288777}, {-0.028031, -0.269425}, {0.431845, 0.101275}, {-0.339818, -0.152321}, {0.921835, 0.289830}, {-0.671086, -0.501673}, {0.247329, 0.183999}, {0.567859, -0.307398}, {0.116284, 0.435589}, {0.203286, 0.041931}, {0.492580, -1.168513}, {0.661239, 0.504958}, {0.626179, 0.315147}, {1.241463, -0.126592}, {-0.242149, 0.706826}, {0.022340, -1.150953}, {-0.121594, 0.286725}, {-0.759044, 0.336943}, {1.203657, -0.225805}, {-0.307556, -0.613049}, {0.760114, -0.923164}, {-1.293027, 0.195280}, {1.015077, 0.098072}, {-2.074471, -0.189545}, {0.841240, 0.955406}, {-0.178337, 0.721980}, {1.160489, 0.003816}, {-0.384566, 2.620896}, {0.704705, 0.063137}, {0.548336, 0.066192}, {0.190808, -0.012015}, {0.553649, 0.329412}, {-0.320558, 0.795527}, {-0.615417, 0.909293}, {-1.246752, -0.698925}, {0.549175, 0.281020}, {-0.778784, -1.430814}, {0.806743, 0.036949}, {0.477405, -0.736326}, {-0.702940, -0.929653}, {0.151960, 0.582314}, {0.865540, -0.423882}, {0.491950, 0.963153}, {0.330508, 0.053934}, {0.464252, 0.827913}, {0.192361, -0.235847}, {0.816402, -0.115001}, {0.092131, -0.660784}, {0.174107, 0.285417}, {-0.755223, 0.514173}, {0.364767, -0.792043}, {-0.562086, -0.217651}, {0.353453, 0.348443}, {0.585457, 1.370006}, {0.984197, -0.178664}, {-0.366706, -0.786270}, {1.414700, -0.134770}, {0.941644, 0.284337}, {-0.455753, 1.036933}, {1.382049, 0.541054}, {0.575756, -0.046144}, {-0.051649, 0.048517}, {-1.119540, 0.541357}, {0.273349, 1.070178}, {-0.456227, -0.374803}, {-0.426392, -0.882598}, {-0.085007, 1.118462}, {-0.265127, 0.515600}, {0.769586, -0.251247}, {-0.458924, 1.727463}, {0.661363, 0.210307}, {0.953185, 0.310892}, {0.165745, -0.249229}, {0.003256, -1.461112}, {-1.295068, 0.895661}, {0.505398, -0.514159}, {-0.794349, -0.483016}, {-0.156867, -1.192899}, {0.540678, 0.515770}, {-0.124202, -0.030591}, {-0.391160, 1.843647}, {0.495854, 0.368012}, {0.973258, -0.316386}, {-0.194668, -0.132074}, {-0.155372, -0.897061}, {0.231087, -0.105997}, {-0.153340, -0.294455}, {0.796845, 0.174109}, {0.603647, 0.542966}, {0.254563, 0.674866}, {-0.956172, -0.048158}, {-0.530818, -0.801843}, {-1.026113, -0.351077}, {0.523780, 0.415202}, {-0.948912, -1.572310}, {0.410020, 0.659503}, {-0.701486, -0.147504}, {2.688922, 0.358403}, {1.560465, -0.433628}, {-0.496547, -0.211502}, {-0.124965, -0.391226}, {-0.533224, 0.503166}, {-0.321520, -0.572785}, {1.258924, 0.163907}, {0.151190, -0.084062}, {0.226057, -0.056905}, {0.587172, -0.471113}, {-0.695980, -0.163141}, {-1.237538, -0.208643}, {0.998500, 0.955563}, {-0.179606, 0.559009}, {0.137764, -0.393149}, {0.502345, -0.054011}, {-0.904479, 0.141850}, {-0.350247, -0.211378}, {0.404017, -0.839708}, {1.263962, 0.630874}, {-0.135289, -2.442988}, {0.442130, -0.830587}, {0.122658, 0.023062}, {0.883724, 0.665128}, {-0.178230, 0.306886}, {-0.468211, 0.071836}, {0.246586, 0.267636}, {-0.557471, -0.275384}, {0.580532, -0.339634}, {0.229230, 0.098588}, {-0.037226, 0.048941}, {0.429143, -0.409864}, {-0.994136, 0.254552}, {1.166575, 0.976509}, {0.851270, -0.625880}, {-0.345877, 0.458113}, {1.414551, -0.046154}, {-0.380014, 0.085284}, {-0.464670, 0.922754}, {0.372413, -0.292998}, {0.047303, -0.678625}, {0.754110, -0.077518}, {-0.818388, -0.489265}, {0.374833, 0.280108}, {0.074119, -1.470670}, {-0.635899, -0.637640}, {0.921722, 0.985314}, {-1.420950, 0.022021}, {0.627703, 0.569002}, {0.340334, 0.147938}, {0.400352, 0.190057}, {-1.088817, 0.050628}, {0.137021, 0.484178}, {0.078217, 0.350442}, {0.294682, 0.070688}, {-0.085588, 0.602284}, {0.673964, -0.173427}, {-0.235137, -0.583674}, {-0.707102, 0.052630}, {0.474050, -1.693641}, {1.003813, 0.543324}, {0.628591, -0.050070}, {-0.249527, 0.767586}, {-1.879195, -0.452537}, {0.396132, -0.415229}, {-0.028199, 0.551825}, {0.385329, -0.220834}, {1.324679, -0.312798}, {-0.642863, -0.825135}, {-0.004710, -0.058157}, {-0.847162, 0.856134}, {-0.740614, -0.863084}, {-1.158400, 0.973958}, {-1.671737, -0.563632}, {-0.650321, -0.235563}, {0.598594, -0.545525}, {0.526469, 0.149947}, {-0.237268, 0.583359}, {0.423311, -0.217139}, {0.379071, 1.034865}, {-1.758812, 0.686033}, {-0.185959, 0.643266}, {0.032531, 0.661944}, {-0.298139, -0.817098}, {-1.599706, -0.313605}, {0.426141, -0.444764}, {-1.006136, -0.819221}, {-0.706618, -0.317805}, {0.141126, 1.084697}, {0.623824, 0.023016}, {-1.046610, 0.015300}, {0.745230, 0.751430}, {-1.319946, -0.564289}, {-0.604642, 0.954636}, {-0.483640, 1.126604}, {-0.757284, -0.011440}, {-0.387955, -0.304309}, {0.153010, 2.368292}, {0.914144, -1.029997}, {-0.299668, -0.611878}, {0.525482, -0.659581}, {0.420515, 0.491139}, {-0.366100, 0.268333}, {0.341777, -1.103398}, {-0.323677, 0.907073}, {-1.121212, 0.392582}, {0.633364, 0.164803}, {0.338245, -0.443073}, {-0.135408, -0.702552}, {-1.008789, -0.011260}, {-0.781123, -0.685846}, {0.776429, -0.662386}, {1.057167, 0.352887}, {-0.597591, 0.229540}, {0.084232, 1.119583}, {-0.285929, 0.236433}, {0.186841, 0.460782}, {-0.172005, -0.130474}, {0.310647, 0.559606}, {-0.119430, 0.878673}, {-1.612776, 0.477573}, {-0.154730, -0.506361}, {-0.083025, -1.341480}, {-0.590808, -0.873065}, {0.237921, 0.451140}, {-1.029581, -0.416044}, {-0.719467, -1.896297}, {-0.051499, 0.067354}, {0.889375, -0.684079}, {-0.718765, 0.727295}, {-0.536690, -0.605252}, {-0.739059, -0.585248}, {0.344357, 0.106056}, {-0.829777, 0.728094}, {-0.283713, 0.261390}, {0.152151, 0.078054}, {0.567021, 0.126294}, {0.291900, 0.562743}, {1.059085, 0.084687}, {-0.551331, -1.234712}, {-0.588794, -1.091670}, {-1.691073, -0.118561}, {1.420551, -1.631329}, {0.205528, -0.641568}, {0.162794, 0.566978}, {0.766135, -0.410851}, {-0.798597, 0.988584}, {-0.718769, -0.992680}, {0.344092, 0.608391}, {0.292893, 0.732026}, {0.056027, -0.138066}, {0.429755, 0.079029}, {0.187873, 0.660457}, {-0.517005, 0.344139}, {-0.147412, -0.311869}, {-0.426811, -0.332282}, {1.157440, -0.638019}, {0.183905, -0.237103}, {-0.779848, 0.107454}, {-0.451815, -0.023654}, {-0.631830, 0.052062}, {-0.010302, 0.265023}, {-0.740212, 0.667259}, {-0.327306, -0.562585}, {-0.036460, -0.926800}, {-0.695698, 0.585635}, {0.506878, 0.691465}, {0.758726, 0.102093}, {0.084728, 0.503180}, {1.401625, 0.519015}, {-0.631581, -0.606695}, {0.803128, -0.862507}, {0.940896, 0.866730}, {0.194009, 1.652032}, {0.144810, -0.487873}, {-0.461080, -0.403805}, {0.002382, 0.136163}, {0.075381, -0.322951}, {-0.966995, 0.269808}, {-0.030479, -0.126750}, {-0.149463, 0.291122}, {1.059634, -0.087343}, {-0.579570, 0.637704}, {-0.747178, -0.468939}, {0.647099, -0.724797}, {-0.223191, 0.924383}, {-0.337221, -0.601146}, {-0.515588, 0.209382}, {-0.439052, -0.285641}, {-0.461382, 0.405431}, {-0.342314, -0.077113}, {-0.631056, -0.415190}, {0.238351, -0.386171}, {-0.862323, 0.642213}, {0.023490, 1.420643}, {-0.875054, -0.335857}, {-0.501911, 0.198525}, {-0.610229, -0.615875}, {-0.798574, 0.715166}, {0.822130, -1.270475}, {-1.244082, 0.455988}, {1.012773, -0.052447}, {1.371291, 0.428342}, {0.352000, -0.742200}, {-0.239479, -0.204546}, {-0.894340, -0.160308}, {0.011754, -0.047223}, {-0.665009, -1.202901}, {-0.774045, -1.477797}, {0.298235, 0.642437}, {0.281567, -0.363596}, {-0.359115, 0.641628}, {0.457527, 0.395590}, {-0.613016, 0.686037}, {0.366476, -1.001394}, {-1.256980, -0.267237}, {-0.929750, 0.866740}, {0.450983, -0.179572}, {-0.783167, 0.315364}, {0.373729, -0.263585}, {-0.829264, 1.092197}, {-0.294844, -1.307715}, {-0.382714, 0.271065}, {0.432171, 1.321070}, {1.193662, -0.601561}, {0.441481, 1.078067}, {0.816584, 0.272961}, {0.550523, -0.150661}, {0.184214, -0.219220}, {-0.009063, -0.442284}, {1.646675, -0.741609}, {1.016200, 0.837222}, {-0.793906, -0.222885}, {0.919271, 0.064883}, {-1.356202, 0.423254}, {0.049124, -0.191414}, {-0.195965, 0.184440}, {1.121060, 1.056448}, {-1.033376, -0.124441}, {0.347735, 1.195392}, {0.503386, 0.384467}, {0.000622, 0.057254}, {0.170387, -0.558950}, {0.128132, 0.079457}, {1.004037, -0.526779}, {0.385914, 0.909700}, {1.335021, -1.678956}, {-0.288577, -0.895513}, {0.565198, -0.882130}, {0.225851, 0.962253}, {0.879317, -0.347095}, {0.176626, 0.994786}, {-0.866639, -0.349720}, {-0.671101, -0.515104}, {-0.485501, 0.483706}, {-0.618060, 0.335038}, {0.041503, -0.588110}, {0.111759, 0.143271}, {0.462091, -1.215689}, {-0.745533, 0.359722}, {-0.258587, -0.704901}, {0.274778, 0.923238}, {-0.004584, -0.433904}, {-0.110584, 0.522650}, {0.310410, -0.005530}, {-0.937176, -1.562305}, {-0.827198, 0.289808}, {-0.698794, -2.184667}, {-0.330698, -0.129384}, {1.282239, 0.020580}, {0.367543, 0.233161}, {0.065772, 0.245385}, {-1.368919, -0.232512}, {-0.022110, -0.434683}, {0.989342, 2.850177}, {0.301916, -0.504838}, {-0.199269, 0.274472}, {0.050557, -0.762571}, {-0.439144, -1.131543}, {-1.080251, -0.382884}, {0.966876, -2.108684}, {-0.843520, -0.663706}, {0.898827, 0.695593}, {1.141696, 1.743007}, {-1.209097, 0.920291}, {-0.133004, -0.591750}, {0.230189, -0.024491}, {0.267833, -0.097969}, {0.945771, -0.620059}, {-1.927322, 0.029121}, {0.624278, -1.539738}, {0.038578, 0.956436}, {-0.340126, 0.630304}, {0.615450, 0.090583}, {0.546216, -0.444248}, {1.103206, -0.220818}, {0.249552, -1.338686}, {0.137988, -0.524542}, {0.535324, -0.053403}, {-0.312144, 0.754749}, {-0.305128, -0.570806}, {-0.270710, -0.431734}, {1.075527, -0.517887}, {0.925849, -0.402164}, {0.780606, -0.094631}, {0.304430, -0.321345}, {-2.161699, 0.828282}, {-0.074158, -0.677161}, {-0.063345, -1.326582}, {-0.309826, 0.355096}, {-0.276573, -0.413940}, {0.647672, 0.302474}, {-0.232098, -1.147781}, {0.120684, -1.621992}, {0.955412, 0.475249}, {-1.220155, -0.114060}, {1.336061, 0.110965}, {-0.643678, -0.340022}, {-0.275077, -0.365716}, {0.534379, -0.975696}, {-1.015498, -0.567058}, {-0.064751, -0.046544}, {1.134877, -0.470992}, {-1.008269, 0.759255}, {-0.144860, 0.949311}, {-0.732892, 1.047155}, {-1.535131, -0.961362}, {-0.269558, 0.444843}, {0.059658, -0.187720}, {0.035190, -0.221091}, {-0.281704, -0.358197}, {1.022722, 0.075790}, {-1.083448, -0.575743}, {-1.302319, 0.027091}, {0.650458, 1.349900}, {-1.899117, 1.012783}, {0.181135, 0.688259}, {-0.202816, 0.372898}, {0.022705, 1.006927}, {0.407585, -0.837289}, {0.002035, 0.352033}, {-0.356021, 0.346572}, {-0.617595, 0.786143}, {0.239147, -0.279550}, {-0.088149, 0.102956}, {-0.145992, 0.070007}, {0.061313, -0.731353}, {-0.584911, -0.334126}, {-1.203326, 0.593685}, {-0.269043, -0.369218}, {0.521335, -0.180848}, {0.144528, 0.438304}, {0.735844, -0.087415}, {0.843519, 0.404185}, {0.253477, 0.233027}, {0.286579, -0.892798}, {0.017010, 1.496329}, {-0.282048, -0.432474}, {-0.831781, -0.766073}, {-0.339801, 0.157388}, {0.117625, -0.661367}, {-0.133374, -0.349166}, {-0.700496, -0.598886}, {1.062019, -0.225486}, {-0.844149, 1.129804}, {0.879032, 0.843744}, {-0.329666, 0.330986}, {0.186070, -0.855283}, {-0.324321, -1.583881}, {1.541431, -0.622636}, {0.819195, -0.182278}, {0.449811, -0.132524}, {-0.888292, -1.515782}, {-1.001516, -0.830254}, {0.250502, -0.344122}, {-0.187613, 1.197694}, {-0.529563, 1.498822}, {-0.076462, -0.133383}, {0.650433, 0.946105}, {-0.483935, 0.181802}, {-0.723391, -0.925543}, {-0.431870, -0.262836}, {-0.422439, 0.651529}, {-0.782266, 0.681568}, {0.562754, -0.374426}, {0.519622, 0.043415}, {-0.801116, 1.075381}, {-0.799244, -1.077313}, {0.540276, 1.027038}, {-0.894727, -0.874882}, {-0.749377, 1.018981}, {0.184097, -0.111914}, {0.042289, -0.830370}, {1.791222, -0.588920}, {-0.047891, 0.031348}, {0.043701, -0.440535}, {-0.840151, -0.568261}, {0.323255, 0.787932}, {1.107241, 0.054776}, {0.060801, -0.856247}, {-0.813509, 0.705567}, {-0.791245, 1.459674}, {-0.014035, -0.216140}, {0.387915, 0.037240}, {0.642452, -0.129442}, {-1.843821, -0.114364}, {-0.035832, 0.415178}, {0.767540, 0.263665}, {-0.652285, -0.081054}, {-1.285872, 0.969226}, {0.618911, 0.255848}, {-0.807479, 0.457430}, {1.064158, 0.201941}, {0.880563, 0.083746}, {-0.305545, 1.351159}, {0.904389, -0.245280}, {-0.217445, 0.025212}, {-0.836006, -0.776473}, {0.738829, 1.044716}, {0.284688, -0.270552}, {1.085086, -0.533687}, {0.671634, 1.461351}, {0.644988, -0.881924}, {-0.894529, 0.426442}, {0.562243, 0.029641}, {0.404564, 0.410895}, {0.425106, -0.487737}, {-0.640461, -0.176507}, {-0.113150, -0.170049}, {0.212635, -0.218543}, {0.269008, 1.255394}, {0.432785, 0.488759}, {0.513129, 0.005448}, {0.099545, 0.578849}, {0.086904, -0.186066}, {-1.555150, 0.851275}, {-0.032900, 0.503340}, {1.149826, 0.331512}, {0.073811, 0.159585}, {-0.223626, 0.427643}, {1.261585, 0.418598}, {0.601685, -0.525800}, {-0.486987, -0.199185}, {-0.059233, 0.227470}, {0.226861, 0.459247}, {-0.341422, -1.927231}, {-0.171239, 0.113076}, {0.078549, 1.096510}, {-0.338355, -1.369953}, {0.159905, -0.691937}, {-0.307114, 0.783536}, {-0.566867, 0.107976}, {0.511947, -0.433910}, {0.691441, -0.214146}, {-0.603745, 0.410150}, {0.628406, 1.315388}, {0.785402, -0.016113}, {0.897580, 1.142371}, {-0.523238, 0.503762}, {-1.709664, -0.720023}, {0.458547, -0.008885}, {-0.334689, -0.277679}, {0.489018, -0.845080}, {0.523348, 0.669807}, {-0.078580, 0.679453}, {0.434669, 1.223368}, {-0.046575, 1.365787}, {-0.280968, -0.687172}, {-1.099810, 0.666500}, {-0.860152, -0.227991}, {-0.330220, 0.063645}, {-0.469986, -0.845073}, {-0.674068, 1.048877}, {0.455515, 0.818142}, {0.849858, -0.564687}, {0.059095, -0.035666}, {-0.223894, 0.001953}, {-0.067447, -1.792125}, {1.605312, 0.096682}, {-1.475052, -0.104396}, {-0.360386, -0.579824}, {0.955123, 1.157321}, {-1.251963, 0.038931}, {0.370436, -0.992312}, {1.371997, -0.487094}, {0.015502, -0.447989}, {-0.022840, -0.149928}, {-0.664625, 0.831535}, {0.757109, 0.066880}, {-0.632931, -0.921457}, {-0.231963, -0.193233}, {0.777090, 0.166369}, {0.609395, -0.027552}, {0.139106, 0.541898}, {0.942118, 0.587904}, {0.251157, -0.133831}, {0.487019, 0.189802}, {0.457665, 0.362136}, {-0.424465, -1.249760}, {0.581103, -0.376516}, {0.510419, -0.590129}, {1.037473, 0.371550}, {-0.466737, -1.004333}, {-0.011938, 0.537880}, {0.547161, 1.035422}, {0.606423, -0.516887}, {0.056961, 1.039645}, {0.477078, -0.559180}, {-0.254626, -1.547132}, {-1.133833, 0.334869}, {0.822161, 0.621644}, {-0.062360, -1.517223}, {-0.703293, -0.420242}, {0.317995, -0.825593}, {0.736898, -0.336708}, {0.771707, -0.083937}, {-0.213908, 0.357054}, {1.824059, 0.566277}, {-0.196467, 1.192675}, {0.798056, 0.142119}, {-1.061991, 0.018563}, {-0.560025, 0.370005}, {0.454753, -0.180904}, {-0.998511, 0.325013}, {-0.821580, -0.926141}, {0.234012, -1.400391}, {-0.674742, -0.704986}, {-0.291769, 1.030446}, {-0.034057, 0.722172}, {0.696109, -0.239704}, {0.209895, -1.576507}, {-0.157850, 0.127201}, {0.466905, 0.165965}, {0.723092, -0.550305}, {0.061567, 0.078169}, {-0.065939, 0.569606}, {-0.133807, 0.770113}, {0.393001, 0.504942}, {0.938111, -0.161913}, {-0.597112, 0.176459}, {-0.258463, 0.179758}, {1.377765, -0.886022}, {0.438264, 0.736861}, {-1.525573, 0.999277}, {-0.620013, 0.193526}, {0.575873, -1.214428}, {-0.126903, 0.386866}, {0.530483, 0.213737}, {0.088473, -0.115534}, {-0.212839, 0.385450}, {-1.321082, 0.296746}, {0.250801, 0.116243}, {-0.419752, 0.580050}, {0.941619, -1.096349}, {0.016156, -0.012206}, {0.223729, -0.513092}, {0.431069, -0.090005}, {-0.564370, 0.121675}, {0.207579, 0.543705}, {-0.569522, 0.970283}, {0.817061, 0.419924}, {-0.249714, 0.263547}, {0.715514, 0.375579}, {0.601764, 0.078943}, {0.912619, -0.785623}, {-0.761932, 0.233378}, {0.345236, -0.083941}, {0.256879, 0.092192}, {1.596566, 0.978531}, {0.233048, 0.142618}, {0.613216, -0.032437}, {0.829523, -0.330173}, {0.230123, -0.145399}, {1.458398, 1.026591}, {0.430070, 0.208748}, {0.266168, 0.118494}, {0.539393, -0.277606}, {-0.413476, -0.313748}, {-0.369556, 0.091205}, {-0.326428, -0.843489}, {0.876747, 0.200702}, {-0.649832, 0.677572}, {-0.132473, -0.408711}, {-0.189154, -1.243630}, {0.300237, -0.606909}, {-0.727253, -1.333235}, {0.491897, 0.548159}, {0.129355, 1.663229}, {-0.845514, -0.240228}, {-0.375039, -0.919784}, {0.911949, -0.218323}, {0.235257, 0.391849}, {-0.246544, 0.164098}, {-0.231634, 0.840406}, {0.469351, -0.182122}, {-1.743900, 0.992432}, {0.852607, -0.539289}, {0.795267, -0.387124}, {-0.185710, 1.359292}, {0.094303, 0.079949}, {0.642032, 0.393244}, {-0.155963, 0.192307}, {-0.348090, -0.970893}, {0.392175, 0.779526}, {0.325050, -1.394403}, {-0.089091, -0.577495}, {-0.483524, 0.167122}, {-0.942847, 0.788769}, {-0.766730, -0.156880}, {0.105378, 0.028165}, {-0.514349, 0.215037}, {0.561907, -0.681160}, {0.734924, 0.641628}, {-0.145145, -0.683320}, {0.393664, 0.363491}, {-0.681003, 0.495072}, {0.548521, -0.587928}, {-0.058075, 0.565056}, {-0.107237, 1.111712}, {0.172436, -0.254398}, {0.227540, -0.704157}, {0.265045, -0.730209}, {-0.869922, -0.474264}, {-0.424165, 0.721119}, {-1.396401, -0.989424}, {0.221913, -0.297296}, {0.286758, -1.498876}, {0.359150, 0.152013}, {0.112532, 0.792481}, {-0.518915, 0.573917}, {0.223169, -0.581940}, {0.093260, -0.638841}, {0.366104, 0.042771}, {0.417517, 0.376103}, {0.991679, -0.041029}, {-0.060651, -0.884169}, {-1.391370, 0.124718}, {1.114556, 1.972558}, {1.020741, -0.667193}, {-0.025144, 0.571881}, {0.669084, -0.756397}, {0.439585, -0.056732}, {0.015199, 0.202094}, {0.566927, -0.613071}, {-0.253624, 0.616822}, {-1.725917, 0.187096}, {-0.845198, 1.593293}, {-0.490629, -0.100485}, {0.571619, -0.604498}, {-0.018727, -0.145532}, {-0.003540, 0.086011}, {-0.606243, -0.821588}, {0.783794, 0.540017}, {1.102898, -0.136964}, {0.216892, 1.340393}, {0.342599, -1.539241}, {-0.575259, 0.204180}, {-1.488872, 0.715385}, {-0.221673, -0.742431}, {-0.113355, 0.020189}, {0.213762, -0.406233}, {-0.170202, -1.176525}, {-0.131939, -0.115900}, {0.612452, 0.453876}, {-0.743530, -0.455021}, {0.466304, 0.328039}, {-0.258516, 0.475259}, {-0.516879, -0.380717}, {-1.270884, -0.082694}, {0.501087, -0.200590}, {-1.445308, -0.484118}, {0.650660, -0.526876}, {-0.229810, -0.738966}, {-0.802840, 0.194996}, {0.829044, -0.227303}, {-0.054933, -0.287901}, {0.285078, 0.281370}, {-0.363464, 0.182841}, {0.075010, -1.057872}, {-0.589787, -0.269938}, {1.178426, 0.146037}, {-0.073736, 1.967197}, {0.910865, 0.370300}, {-0.153322, 0.395913}, {1.123574, 0.170210}, {-0.882067, 0.376414}, {0.111788, 0.783705}, {-0.791890, 0.455797}, {0.724860, 0.924557}, {-1.174621, 1.356142}, {-1.081595, -0.106305}, {-0.006296, -0.172133}, {-0.122594, -1.407199}, {-0.404103, 0.582921}, {-0.882765, 0.122557}, {0.094063, -0.110042}, {1.335416, -0.733367}, {0.464591, -0.575710}, {-0.121591, -0.127096}, {-0.062471, 1.097518}, {0.159503, 1.027292}, {-1.093872, -0.247750}, {0.529288, -0.443974}, {-0.136074, -0.048432}, {0.556999, 0.495463}, {0.588577, 0.128776}, {0.462049, -0.451937}, {0.353590, -0.723830}, {0.204804, -1.625933}, {0.092930, 1.161258}, {-1.224485, 0.628751}, {0.229420, -0.877564}, {0.739953, -0.878338}, {-0.892648, 0.514262}, {-0.544203, 0.616829}, {1.134951, -1.505910}, {0.708691, 0.176345}, {-0.292243, 0.137628}, {-0.337737, -0.596135}, {1.471883, 0.535997}, {-0.850951, 0.121347}, {0.243537, -0.589604}, {-0.059771, 1.176776}, {-0.454490, 0.804287}, {0.070382, 0.030761}, {0.242788, 0.176748}, {-0.126759, 0.129941}, {0.030666, -0.850073}, {1.875655, 0.587808}, {-0.161780, -1.784124}, {-0.569807, 0.916039}, {-0.569185, 0.072547}, {-1.127872, 0.026428}, {-1.150343, 1.487388}, {0.720566, 0.922631}, {0.383465, -1.084402}, {-1.237511, 0.762091}, {-0.099930, -0.928349}, {-0.601861, -0.484212}, {0.014186, 0.985724}, {0.396531, -0.374346}, {0.370483, 0.478921}, {0.417636, 0.285218}, {0.144493, 0.855940}, {1.513194, -0.430838}, {-0.286139, -0.974602}, {-1.347122, -1.183399}, {-0.109208, -0.834271}, {-0.070154, -1.123663}, {0.980670, 0.398785}, {1.504316, -1.491271}, {0.365317, 0.703937}, {0.327227, -1.471393}, {0.779325, -0.291336}, {-0.813175, -0.633449}, {0.201307, -1.315156}, {-0.157624, 0.806373}, {1.101852, 0.306818}, {0.548022, 0.618568}, {0.914485, -1.093983}, {-0.788237, 1.330140}, {0.204645, -1.260284}, {0.708261, -0.487650}, {0.831419, 0.494045}, {-0.479281, -0.174932}, {0.274606, 0.031707}, {0.511466, 1.479375}, {-0.749887, 0.138556}, {0.094436, -1.604624}, {1.701213, -0.021478}, {1.273051, 0.873564}, {-0.564715, -0.604606}, {0.576919, -0.577415}, {0.854536, 0.069007}, {2.004698, -0.186701}, {-1.020772, 0.648632}, {-0.474304, -0.256917}, {0.280593, -0.442013}, {0.609646, -0.099227}, {-0.587909, -1.324509}, {-0.478677, -0.380842}, {0.992419, -0.833282}, {-0.207837, 0.203639}, {0.504914, 0.234515}, {-0.266033, 0.132612}, {-0.242541, -0.095664}, {-0.167233, -0.590706}, {-1.276869, 0.288847}, {-0.312084, -0.687477}, {0.271583, -0.587164}, {0.515093, 0.888483}, {-0.886180, 1.600277}, {0.761687, 1.283905}, {-0.917327, -0.468507}, {-0.255153, 0.234853}, {-0.698140, 0.280238}, {-0.173308, -0.549159}, {1.163074, -0.136380}, {-0.522856, -1.545376}, {-0.250713, -0.577033}, {0.127714, 0.573650}, {-0.619459, 0.761195}, {0.854662, -0.335280}, {1.288629, -1.596849}, {-0.259143, 0.994771}, {-0.089218, 0.323881}, {1.037082, -0.027840}, {0.020579, 1.366726}, {-0.158254, 0.495453}, {0.551658, 0.631316}, {0.038543, -0.710163}, {0.702737, -1.985090}, {1.398746, -0.143418}, {0.084599, -0.676724}, {-0.015678, 1.464065}, {-0.034517, -1.102207}, {-0.094801, -0.520467}, {-0.203622, 0.612699}, {-1.132184, -0.715451}, {-0.130513, 0.631629}, {-0.340655, 0.517577}, {-1.132617, -0.041877}, {-0.913628, 0.061052}, {1.393766, -0.805041}, {0.243021, -0.275513}, {0.592899, 0.812328}, {-0.181057, 0.511301}, {-0.230935, 0.289646}, {-0.253628, 1.248452}, {-0.375765, -0.450903}, {0.175142, -0.879180}, {0.632521, 0.051703}, {0.714207, 1.053456}, {-0.848408, 1.064349}, {-0.233667, -0.270396}, {0.383107, -0.240141}, {0.507137, -0.249806}, {-0.030230, -0.356838}, {-0.578340, 0.125787}, {-1.095438, -1.281125}, {0.471165, -1.473161}, {-0.176499, -0.292983}, {0.283998, -0.579375}, {-1.456174, 0.442805}, {-1.091059, -0.554400}, {0.325498, 1.215230}, {0.374914, -0.970670}, {1.014939, 0.866143}, {-0.947639, 0.514860}, {0.945109, -0.393500}, {-1.063523, -0.388257}, {0.026398, -0.066196}, {-0.485485, 0.511262}, {0.171215, -0.511392}, {-1.389303, -0.782160}, {0.119798, -0.872876}, {-0.380890, -0.950004}, {-0.454074, 0.379206}, {-0.150043, -0.133012}, {0.209178, 0.071162}, {0.194253, -0.916240}, {-0.696335, -1.251679}, {-0.227848, 0.695565}, {-0.243941, -0.084309}, {-0.950502, -0.635794}, {-0.290364, 0.216578}, {-0.751428, -1.213585}, {0.460577, -0.149599}, {0.324715, 0.166467}, {-0.614041, -1.173885}, {-0.142238, -0.336419}, {-1.471493, -0.936717}, {1.646690, 0.184204}, {0.225939, 0.300060}, {-0.128450, 0.389350}, {0.727421, -0.454894}, {-0.435942, 0.105538}, {1.205978, 0.100260}, {-1.315567, 0.308342}, {0.754698, 1.164033}, {-0.107954, -0.172451}, {-1.047203, 1.015069}, {-1.389840, -0.266683}, {0.547945, 0.616535}, {-0.434114, 0.849453}, {0.071122, -0.277037}, {-0.050800, 0.284288}, {-0.165278, 0.009121}, {-0.219966, -0.098418}, {0.198508, 0.353809}, {-0.581533, 0.448088}, {-1.784726, -1.161621}, {-0.604861, -0.274908}, {0.183057, 0.051142}, {-0.317797, 0.278299}, {-0.850828, -0.630589}, {0.104573, 0.285301}, {0.105866, 0.698211}, {-0.180861, -0.862928}, {0.475285, -0.838884}, {0.532029, -1.353946}, {-0.605465, 1.385299}, {0.218651, -1.214866}, {2.160576, -0.144045}, {0.168189, 1.107664}, {0.299490, -0.176740}, {-0.396194, 0.210866}, {-0.125884, -0.224011}, {0.853672, 0.228498}, {-1.748178, -1.154824}, {0.367379, 0.232790}, {-0.181073, -0.618603}, {-0.789253, -0.907517}, {0.589666, 0.083053}, {0.205531, -0.292960}, {-1.755342, -0.647660}, {1.320671, 0.483386}, {0.751741, -0.776958}, {0.895885, 0.848563}, {0.581838, -0.625789}, {-0.172855, -0.093791}, {1.730868, -0.185926}, {-0.859963, -0.199970}, {0.619064, -1.075834}, {-0.751592, -0.307590}, {0.383126, 0.058031}, {0.532780, -0.855648}, {-0.809753, 0.598019}, {0.523282, -0.210299}, {0.092903, 0.620162}, {-0.841020, -0.066447}, {-0.888254, 0.244874}, {-0.225321, -0.358074}, {-0.523697, 0.142496}, {-0.211782, 0.560938}, {0.850574, -0.508918}, {-0.016610, 0.930612}, {-0.170152, -0.661760}, {0.379929, 0.104789}, {-0.781353, 0.502040}, {1.259342, -0.010921}, {-0.135465, 0.122281}, {0.166991, -0.732114}, {0.955615, -0.124115}, {1.109480, -1.575200}, {0.054263, -0.253799}, {0.862238, -1.307799}, {0.016864, 0.606661}, {0.483294, -0.230111}, {1.663652, 0.729566}, {-0.611224, -0.653048}, {-1.924986, -0.524554}, {-0.603593, -0.245722}, {0.878295, 0.316568}, {0.052504, -1.019809}, {0.512341, 0.171092}, {0.774275, -0.490241}, {-1.055341, 0.751595}, {-1.688396, 1.987387}, {-0.902226, -0.336708}, {-0.433191, -0.099476}, {-0.920050, 1.128085}, {-1.100896, 0.374304}, {0.388182, 1.245751}, {0.280377, 0.511610}, {-0.344954, -0.349710}, {0.567448, -0.222402}, {-0.230275, 0.053800}, {-1.450383, -0.655175}, {-0.140144, 0.256758}, {-1.291789, 0.096818}, {-0.626539, -1.194533}, {0.550245, -0.702534}, {0.445211, 0.411623}, {0.860433, -0.689320}, {0.660554, -0.055735}, {0.924256, -0.222386}, {1.467143, -0.039871}, {0.423189, -0.130886}, {-0.157257, -0.253543}, {0.054858, 0.012374}, {0.004722, -0.181412}, {1.204185, -0.360653}, {0.683748, -1.078223}, {0.114180, 0.204924}, {-0.209641, 0.052979}, {0.590545, -0.623896}, {0.855198, 0.077004}, {-0.183976, 0.390004}, {0.562404, -0.634269}, {0.638455, 0.770984}, {0.539077, 0.058849}, {1.143837, -0.619012}, {0.379303, 0.131913}, {0.694961, -0.856962}, {1.031972, -0.095841}, {-0.414443, -0.130743}, {-0.530670, -1.027409}, {0.532992, 0.593755}, {-0.302745, 0.408516}, {-0.163969, -0.009049}, {-0.937897, 0.569411}, {0.236075, -0.118090}, {0.367388, 0.920104}, {-0.228411, -0.020714}, {0.450075, -1.376905}, {0.672742, 0.878365}, {0.272849, 0.717775}, {0.332603, -0.084299}, {-0.123209, 0.546980}, {1.599618, -0.734019}, {-1.207434, -1.476439}, {0.126576, 0.023655}, {1.085747, 0.148754}, {-1.156599, -0.185243}, {1.100054, -0.369996}, {-0.075626, -0.451481}, {-0.905205, -0.526888}, {-0.401543, -0.591241}, {-0.114917, -0.419392}, {0.538569, -0.347340}, {0.301107, -0.265479}, {-1.341466, -0.843870}, {-1.296856, -0.888799}, {0.498068, -0.039892}, {-0.390159, 0.729649}, {1.171404, 1.213731}, {-0.539536, -0.533475}, {-0.471922, -0.364102}, {0.204217, -0.768619}, {0.692290, -0.199941}, {0.682400, 2.105154}, {-0.663000, 0.094841}, {1.190975, 1.491593}, {-0.756086, 0.111941}, {0.061172, 0.566461}, {-0.048715, 0.143162}, {0.311618, -0.313990}, {0.310462, 0.386462}, {0.466845, 0.225448}, {0.572650, -1.340082}, {-0.824610, 0.849502}, {0.746589, -0.306592}, {1.392851, 0.308872}, {0.506791, 0.509163}, {-1.012017, 0.338057}, {-0.425655, 0.744355}, {-0.177273, -1.268582}, {1.931480, -0.463406}, {-1.005768, -0.526282}, {-0.554007, 0.732979}, {0.203002, 1.016918}, {-0.343580, 0.392522}, {0.671733, 0.125681}, {-1.033077, -0.210715}, {-0.047144, -1.546564}, {0.263303, -0.350745}, {-0.790377, -0.556737}, {0.347599, -0.244305}, {-0.267536, -0.557566}, {-0.914996, -0.772484}, {-1.415204, 0.476464}, {0.636720, 0.271362}, {-0.160421, -0.202122}, {0.256900, -0.971435}, {-1.341629, -1.340080}, {-0.996941, -0.175151}, {-0.275634, -0.620064}, {0.277806, 1.181420}, {0.257685, -0.644443}, {0.972835, 0.904661}, {-0.069391, 0.979036}, {0.033424, 1.180349}, {1.601465, -0.899762}, {-1.159530, -0.513358}, {0.659085, -0.351394}, {-0.778353, 0.391627}, {-0.732485, -0.817011}, {0.160577, -0.745746}, {-1.425300, 0.587289}, {0.466481, 0.028874}, {0.257711, -0.211149}, {0.360215, 0.446898}, {0.160066, -0.290423}, {-0.826929, 0.104860}, {-1.006527, 1.418773}, {0.086332, -0.509908}, {-0.775915, -0.277061}, {-0.568888, -1.679972}, {-0.636057, 0.987827}, {-0.308029, 0.307089}, {0.717339, -0.888667}, {-0.398455, 0.051524}, {1.624831, -0.428584}, {-0.995265, -0.949414}, {-0.574018, -0.660601}, {0.821218, 0.649943}, {-0.066875, -0.742312}, {-1.042409, -0.345767}, {-0.694825, -0.086997}, {0.892671, 0.304710}, {1.463746, 1.347942}, {-0.794659, -1.465119}, {0.093978, -1.391761}, {-0.289519, 0.622867}, {-0.038301, -0.287028}, {0.225742, -0.501018}, {-0.619576, 1.728619}, {-0.078345, 0.521977}, {0.410487, 0.768793}, {0.898314, -1.505122}, {0.982556, -0.321653}, {-0.156688, 0.426663}, {0.914887, 0.476645}, {-0.661801, -1.162848}, {-0.834380, -0.187532}, {-1.033042, -0.657361}, {-0.258103, -0.279691}, {-0.077377, -0.617789}, {-0.067528, -0.795636}, {0.697166, 1.250363}, {0.612638, 0.426930}, {0.414738, 0.159230}, {0.012610, 1.110968}, {0.088986, 0.174993}, {-0.701699, -0.585427}, {0.005547, -1.001461}, {-0.499370, -0.219090}, {-0.409379, -1.410114}, {0.678592, 1.914758}, {-0.333608, 0.094601}, {1.473032, -0.764558}, {0.234098, 0.682258}, {-0.764432, 0.203001}, {-0.286558, -0.776227}, {0.015636, -0.427128}, {-0.829637, -0.587309}, {0.126426, -0.046741}, {-0.999990, -0.782663}, {-1.231364, -0.812437}, {-0.064503, -0.714886}, {-0.917891, 0.770603}, {-0.586602, 0.007693}, {0.403223, 0.712644}, {-0.008010, -0.902316}, {0.357368, 0.403032}, {0.138081, -0.123957}, {-0.283588, 0.063573}, {-0.309539, 0.658890}, {-0.406599, 0.958829}, {-0.708649, -0.300691}, {-0.292065, 0.281290}, {0.654537, 0.474224}, {-0.708419, -2.474893}, {-0.285932, 0.822338}, {-1.107321, -0.186473}, {-0.369601, -0.659469}, {0.617200, -0.315311}, {0.185574, -1.073683}, {-1.332198, 0.646972}, {1.358647, -0.343407}, {0.423292, 0.187194}, {-1.766024, 0.026657}, {-0.511465, -0.056579}, {-0.202844, -0.666845}, {-0.061273, 0.149654}, {-0.160488, 0.253664}, {-0.336715, 0.856404}, {-0.211530, 0.286960}, {-0.096027, -0.438433}, {-0.123255, 0.410071}, {-0.588208, 0.110857}, {-0.160651, -0.237762}, {0.178849, -0.486365}, {0.523072, -0.604543}, {-0.481635, 0.822471}, {-1.427760, 1.475099}, {-0.015193, 0.056991}, {-0.020920, -0.628689}, {-0.662725, -0.334047}, {-0.029955, 0.271499}, {-0.549856, 0.193420}, {-0.591084, -0.460397}, {-0.847475, 0.176087}, {0.134666, 1.535474}, {-0.404517, 1.774605}, {-0.012591, -0.025081}, {0.304635, 0.349055}, {1.032524, -1.067513}, {-0.654717, -0.443237}, {0.354067, -0.906890}, {0.645732, -0.808004}, {0.708526, 0.422639}, {0.251741, -0.199950}, {-0.343301, -0.372559}, {0.521966, 0.293809}, {0.596219, 1.459711}, {-0.911900, 1.090172}, {-0.180459, -0.242334}, {0.043777, -0.308086}, {0.892502, -0.297267}, {0.069414, 0.548758}, {0.106618, 0.638483}, {0.075271, 0.328460}, {-0.453758, 0.763184}, {0.873083, -0.518432}, {-0.165817, -0.466517}, {-0.777957, 0.195349}, {-1.045421, -0.135624}, {1.085889, 0.201413}, {0.045273, 0.861950}, {-0.380225, -0.540513}, {1.234628, -0.061586}, {0.388294, 0.042646}, {-1.184967, -0.334204}, {-0.431482, 0.137044}, {-0.260536, -0.255510}, {0.676812, -1.129665}, {0.060250, -0.101155}, {0.177268, 0.504934}, {0.447116, 0.913391}, {-0.188139, 0.308266}, {-0.461521, -0.562924}, {0.803880, -0.403873}, {-0.719793, 0.283642}, {-0.274215, -1.343825}, {-0.176226, -0.931566}, {-0.456589, 0.988810}, {0.069589, -0.085009}, {0.498388, 0.661623}, {1.764237, -1.921451}, {-0.520769, -0.283433}, {-0.863480, -0.545718}, {0.164524, -1.140960}, {0.391842, 1.388107}, {-0.211966, -0.760097}, {0.882238, 0.726142}, {-0.494735, -0.147398}, {-2.130035, -0.271010}, {-0.091024, -0.085686}, {-1.139421, 0.482023}, {-1.313630, 0.069675}, {-1.013372, -0.030979}, {-0.010000, -0.309232}, {0.015798, -0.454868}, {-0.021211, 1.170452}, {0.733800, 0.657433}, {-0.564449, -1.202041}, {-1.438305, -0.225477}, {0.737473, 0.034093}, {-0.124011, 0.017096}, {-1.054430, -0.490369}, {0.735048, -0.170665}, {-0.603735, -0.398150}, {-0.291035, -1.773649}, {-0.230866, 0.024045}, {0.565597, -0.230533}, {0.341789, 1.338716}, {-0.174622, -0.278944}, {-0.235408, -1.074645}, {0.457028, 0.409652}, {0.792267, 0.082481}, {0.739603, -0.207675}, {-0.446134, 0.728303}, {0.271171, 0.646737}, {-0.080809, -0.597354}, {-0.333713, 0.650210}, {-0.058765, -0.037884}, {0.313115, 0.179699}, {1.061631, 0.029643}, {-0.718130, -0.867332}, {0.161520, -0.373053}, {0.115240, 1.018624}, {-1.401570, -1.811324}, {-0.389145, 1.565653}, {0.275466, 0.553665}, {1.366925, -0.550564}, {-0.653708, -0.492507}, {0.639135, 0.108763}, {0.502588, 1.583952}, {-0.959099, 1.271320}, {-1.233735, 0.101634}, {-0.740340, -0.248321}, {-0.892102, 0.109857}, {-0.345742, 0.073819}, {0.031049, -0.115825}, {0.366890, 1.202980}, {-0.555795, 0.858266}, {-0.789748, -0.582250}, {-0.684044, -0.073831}, {0.431366, -0.264677}, {-0.251106, -1.079765}, {-0.048445, -0.527598}, {-0.257022, 0.807331}, {0.604370, 0.108487}, {1.193560, -0.504331}, {0.887205, 0.223083}, {0.165226, 0.181709}, {-0.694678, 0.305534}, {-0.539173, -0.699254}, {-0.962349, -2.031904}, {0.437054, 0.981274}, {0.472644, 0.330887}, {0.577628, 0.332816}, {-0.547620, -0.333722}, {-0.651263, 2.080435}, {-0.084852, 0.079156}, {-0.760344, 0.805795}, {0.499899, -1.470379}, {0.351524, 0.328809}, {0.080884, -0.587359}, {-0.553406, -0.169034}, {0.039425, -0.538786}, {0.858310, -0.140728}, {0.472670, -2.246532}, {-0.368775, -0.323302}, {0.090378, -1.378154}, {-0.550284, 0.507064}, {0.539224, 0.603538}, {-0.000691, -1.727633}, {-2.003468, -0.661973}, {0.337784, 0.651070}, {0.162028, 0.567114}, {-0.067531, 0.050097}, {0.182332, -0.719324}, {-1.474951, 0.685114}, {0.860035, 0.235277}, {0.673692, -0.745029}, {0.163864, 0.823959}, {0.712323, -0.579740}, {0.133995, -0.852349}, {-0.093329, -0.759119}, {0.285367, 1.120202}, {0.187071, -0.415625}, {0.522904, 0.451246}, {0.757153, 0.243609}, {0.184169, 1.090276}, {1.479287, -1.344383}, {1.487636, 0.349166}, {-0.095602, 0.755634}, {-0.112605, 0.207789}, {-0.441569, -0.286210}, {-0.409203, 1.547667}, {-0.546806, -1.646303}, {1.074615, 1.044879}, {-0.434627, -0.525903}, {-0.242109, 1.227347}, {-1.319122, 0.275312}, {-0.545729, 0.662611}, {0.343853, 0.157724}, {0.475258, 0.149229}, {0.253291, 1.076345}, {-0.570123, -1.272515}, {-0.186610, 0.269897}, {-0.189057, 1.120619}, {-0.383515, 0.226731}, {0.924259, -0.098409}, {-0.080234, -0.649794}, {-0.726238, -1.386272}, {0.806442, -0.219207}, {0.024879, 0.089845}, {0.913936, -0.796274}, {2.617004, -0.280960}, {-0.718628, -0.178037}, {-0.428151, 0.215331}, {-0.073535, -0.606667}, {0.254862, 0.639116}, {1.488909, 0.267331}, {-0.583632, -0.698212}, {1.157905, 0.856185}, {0.267413, 0.309240}, {-0.460028, 0.787779}, {0.527296, 0.364704}, {0.341824, -1.132002}, {0.758196, 0.233237}, {0.556152, 0.517602}, {0.066575, -0.831919}, {0.517617, -1.003521}, {-0.448421, 0.717349}, {0.254943, 0.001274}, {-0.525383, -0.477606}, {1.091618, 0.208053}, {-0.123831, -0.791330}, {0.334160, 0.226185}, {-0.698222, 0.706486}, {-0.032881, 0.242425}, {-0.281343, 0.751205}, {0.632088, -1.214175}, {0.073367, -1.174985}, {-0.324776, -0.120150}, {0.164874, 0.111320}, {0.609620, -0.439175}, {0.031007, 0.000219}, {1.028218, -0.287004}, {1.158747, 0.853374}, {-1.199486, -0.275183}, {-1.283849, 1.091030}, {0.561488, -0.120327}, {-0.287822, -0.044037}, {-0.968829, -0.687665}, {1.352591, -0.243109}, {-1.373144, 0.694374}, {-0.378153, 0.037286}, {-0.802495, 0.406625}, {-0.041211, -0.643437}, {0.185728, -0.003745}, {-0.305742, -0.281991}, {0.387514, -1.518495}, {-0.242799, 0.206669}, {-0.669666, -0.599745}, {-0.141009, -2.414735}, {-0.003491, -0.033090}, {-0.289344, -0.418806}, {0.520367, 0.013915}, {0.555563, -1.274973}, {-0.324143, 0.296732}, {-1.457603, 0.238373}, {0.410639, 0.101798}, {-1.012753, -0.935328}, {0.899841, 0.309905}, {0.127096, -0.954350}, {0.106654, 1.147259}, {-0.355125, -0.287927}, {-1.547840, -0.332855}, {-0.733110, 0.032549}, {-0.271676, 0.273160}, {-0.415254, -1.088883}, {0.067924, -1.032075}, {0.476029, -0.014800}, {-0.003191, -0.439740}, {-0.798743, 0.822659}, {0.883440, 0.479619}, {-1.455205, -0.328712}, {0.775377, 0.211114}, {1.220351, 0.695741}, {0.452471, 1.035777}, {0.341504, -1.320770}, {-0.611155, 0.468035}, {0.908185, 0.273328}, {0.292692, -1.200411}, {-0.033289, -1.174946}, {0.994273, -0.733959}, {0.214130, 0.413516}, {0.274615, -0.372335}, {1.346686, -1.437341}, {-0.197733, -0.578892}, {0.149638, -0.107375}, {-0.339736, 0.034751}, {-0.338912, 0.066107}, {0.750437, 0.078081}, {-1.049538, 0.591718}, {-0.041805, 0.895005}, {-1.095430, 0.700039}, {-0.235200, 0.094713}, {0.065897, 0.602921}, {0.755398, -0.108273}, {1.091147, 0.071925}, {0.228578, -0.294732}, {-0.584694, -0.554632}, {-0.078499, 0.146121}, {-0.915751, -0.799416}, {-0.365473, 0.373294}, {-0.531644, -0.071814}, {0.721813, 0.581123}, {-0.110709, 0.244037}, {0.199982, 1.816332}, {0.564345, 1.371369}, {0.467000, 1.041223}, {-0.686056, 0.372524}, {0.104741, -0.231289}, {0.409822, -0.375921}, {0.031726, -0.309260}, {1.183292, 0.898475}, {-0.493938, -0.680656}, {0.890296, 0.420048}, {0.070555, -0.613145}, {-0.022719, 0.779646}, {1.421551, -0.488215}, {-1.226503, 1.639620}, {-0.306046, 0.416864}, {-0.696823, 0.344132}, {-0.143656, 1.441148}, {-0.689809, -0.700984}, {0.463316, 0.449139}, {-1.364012, 0.198649}, {0.449165, 0.742472}, {-0.486011, -1.473443}, {0.500896, 0.833914}, {-0.622554, -0.239606}, {1.189831, -1.242437}, {1.151693, -0.330836}, {0.920582, -0.666624}, {-1.224090, -1.875929}, {-1.092502, -0.769761}, {-0.262561, -0.202329}, {0.431854, 1.719011}, {-0.428703, -0.207687}, {0.564636, 0.288137}, {-0.667355, 0.277334}, {0.180266, 0.623707}, {-0.315467, -0.069400}, {-0.601639, -0.462335}, {-0.948292, -0.538306}, {-1.253119, -0.336230}, {-0.049082, 0.253962}, {-0.451911, 0.428742}, {0.736800, 0.882449}, {-0.412044, 0.366809}, {-0.467545, -1.006095}, {1.008279, 1.350596}, {-0.359243, 1.473972}, {0.331398, -0.803076}, {-0.297361, -0.463851}, {0.201236, -0.107912}, {0.239863, 0.923164}, {-0.353475, 0.650233}, {0.384891, 0.803903}, {0.302545, 1.670567}, {0.799741, 0.176856}, {-0.024317, 0.120099}, {0.008041, -0.350004}, {0.230942, 0.570515}, {-0.132010, 0.455897}, {-0.263291, -0.539349}, {-0.645935, 0.218008}, {-0.463458, 0.613702}, {0.243487, 1.705323}, {-0.868175, 1.548390}, {-0.227668, 1.410199}, {0.658615, 0.988933}, {-1.447789, 0.664133}, {0.798315, 0.707355}, {0.425196, -1.360819}, {-0.135508, -1.272751}, {0.647140, 0.224335}, {1.161476, 0.319277}, {-0.480896, 0.374320}, {1.878285, 0.118100}, {-0.211065, 2.614610}, {0.436903, -0.128683}, {1.200507, -0.109365}, {-0.119335, -0.098252}, {0.589978, 0.683516}, {-0.940828, 1.101724}, {-1.549157, 0.580937}, {-0.045247, 1.021449}, {0.032804, -0.767668}, {0.999415, -0.176564}, {-0.273115, -1.412497}, {0.167989, -0.295090}, {-0.036130, -0.505037}, {0.340076, -0.586571}, {-0.911702, 0.260780}, {-0.738639, -1.333492}, {0.734417, -1.151579}, {-1.217327, -0.926407}, {0.231592, 0.190441}, {0.737205, -0.440307}, {0.438334, -0.481113}, {0.415552, 0.334575}, {0.720010, 0.454014}, {-0.802826, -0.345235}, {-1.888756, 0.673207}, {-0.545520, -0.182574}, {1.213482, 0.417727}, {-1.244954, 0.421645}, {-0.259205, -0.972422}, {-0.804418, 0.298643}, {-0.497450, -1.013039}, {-0.363112, -0.066604}, {-0.295601, 0.914620}, {1.021939, -0.017453}, {0.680981, 0.298866}, {1.107544, 0.912255}, {0.209341, 0.491702}, {1.108210, 0.582607}, {-1.014248, -0.037100}, {0.258361, 0.684969}, {1.045870, -0.304365}, {-0.871056, 0.100909}, {0.823420, -0.126928}, {-1.214117, 0.314406}, {0.871430, 0.118769}, {-0.231277, 0.241207}, {0.035972, 0.285960}, {-0.742023, 0.505129}, {0.254087, 0.341223}, {0.454655, -0.525507}, {0.755748, -0.462112}, {0.587311, 0.633949}, {-1.442459, 0.796037}, {-0.318407, -0.290317}, {-0.527692, -0.825944}, {0.971368, -0.736664}, {0.229420, 1.203638}, {-0.736167, -1.347227}, {1.412800, 0.828552}, {0.740372, -0.240037}, {0.876093, -1.017553}, {-1.210328, 0.107513}, {1.137077, 0.416858}, {-0.750964, -0.268489}, {-0.489146, -0.819406}, {0.703970, -0.019085}, {-0.301573, 0.768771}, {-0.280863, -0.923373}, {-0.372715, 0.726574}, {0.399350, 1.779629}, {-0.254864, -0.001700}, {0.357948, 1.923558}, {0.853556, -0.006690}, {0.509726, 0.496630}, {-0.858094, -1.471612}, {-1.728564, 1.392049}, {0.623779, -0.300334}, {-0.675676, -0.167689}, {-0.849742, -0.641322}, {0.697436, -0.283774}, {-0.275413, -0.855216}, {0.109529, -1.411846}, {-0.609845, 1.742109}, {0.172157, 0.641408}, {0.021837, 0.465026}, {-0.022089, -1.116902}, {0.964458, 0.032398}, {0.532234, 0.444177}, {1.296815, -0.784017}, {0.749398, 0.180579}, {0.574044, -0.467364}, {-0.838701, -1.398614}, {0.129156, 0.516463}, {-1.055356, -1.190214}, {0.528734, -0.367550}, {0.797226, 0.908928}, {-0.050036, 0.414600}, {-1.125256, -0.572235}, {0.346222, 0.074931}, {-0.538717, -0.265686}, {-0.056401, 0.092578}, {-0.207907, -0.019935}, {1.012684, 0.194750}, {-0.367511, -0.884469}, {0.107956, 0.421098}, {-0.130369, -0.206243}, {-0.422989, 0.053730}, {0.242778, 0.306604}, {1.008636, -1.384316}, {0.333947, 0.589110}, {-0.676884, 0.681691}, {0.948866, 0.105958}, {0.426000, 0.672980}, {-1.064013, 0.336557}, {-0.240377, 0.553604}, {-1.066478, -0.727211}, {-0.640961, -0.431194}, {-0.047056, 0.430286}, {1.455127, 0.086339}, {1.044019, 0.478455}, {-0.476166, 0.241834}, {0.380861, -1.272487}, {-0.346503, -0.477271}, {0.130709, 0.817365}, {-0.985777, -1.207054}, {-0.046189, -1.202671}, {-0.330047, 0.026048}, {-0.239273, 1.694012}, {-0.003318, -0.758511}, {0.329162, -0.169705}, {-0.474235, -0.351765}, {0.503979, 1.428228}, {0.554457, 0.574828}, {-1.434442, -0.919440}, {-0.451345, 0.194554}, {0.521378, -0.954107}, {0.200849, 0.335852}, {-0.124435, 0.284194}, {-0.895518, -0.304695}, {0.301791, 0.348402}, {0.093200, -1.526336}, {0.633977, 0.922629}, {0.135976, -0.420617}, {0.232458, -0.359167}, {0.716139, 0.072091}, {0.254796, -0.013268}, {-0.379655, -0.585246}, {-0.022477, 0.395561}, {-1.191544, -0.383859}, {1.447703, -0.326901}, {1.032686, 1.916231}, {-0.883760, 0.132351}, {0.797983, 0.389918}, {0.690284, 0.427680}, {-0.500221, -0.126779}, {-0.347322, 1.756772}, {0.199207, 0.321965}, {1.155876, -0.872054}, {0.930258, -0.737929}, {0.355776, 0.125540}, {0.111132, -0.084686}, {-1.765447, -0.399887}, {-0.484057, -0.693399}, {0.164002, 1.979783}, {0.861997, 0.458612}, {1.264516, 0.761647}, {-0.265837, 0.631914}, {1.055233, 0.348404}, {-1.092578, -1.237799}, {0.095743, -1.847219}, {-0.335968, -0.005423}, {-0.404703, 0.532334}, {-0.681848, -0.884532}, {-1.117062, -1.755286}, {-0.757974, -0.504821}, {-0.349785, 0.132151}, {0.770082, 0.883966}, {-0.583158, -0.064996}, {-1.505933, 0.375539}, {0.417048, 0.888212}, {0.276252, -0.045163}, {-0.424762, -0.615027}, {-0.365226, -0.268774}, {0.618845, -0.605848}, {0.164242, -0.422652}, {0.645703, 0.576558}, {0.709919, 0.591569}, {0.666594, -0.737500}, {0.026753, 0.073156}, {-0.021352, -0.729128}, {0.909815, -0.255206}, {-0.589314, -0.428360}, {0.632534, -0.568628}, {0.261934, -1.385056}, {0.119414, 0.325016}, {0.805002, -1.770542}, {0.277957, -0.422711}, {0.741012, -1.257607}, {1.212983, 1.441817}, {-0.765914, 0.535380}, {0.317519, -0.080034}, {-0.338720, 0.031978}, {0.437849, 0.750522}, {0.047748, -0.215083}, {-0.962192, -0.546992}, {-0.645064, 0.921583}, {-0.551719, 0.389382}, {0.105114, -0.340749}, {-0.310464, -1.039947}, {0.161271, 0.002407}, {-0.846793, -0.332475}, {0.085515, -0.070405}, {0.516329, 0.565764}, {-0.035842, -1.577365}, {-0.663475, -0.556161}, {0.282857, 0.891555}, {-1.157957, 0.323517}, {0.468238, 0.244984}, {-0.001649, -1.302923}, {-0.138291, 0.749416}, {0.078580, 1.089354}, {0.049946, -0.266946}, {0.138307, -0.213026}, {-0.398241, 0.031845}, {-1.097927, 0.485306}, {-0.228563, 0.686991}, {1.497539, 0.916258}, {0.779815, -0.813548}, {-0.470301, -0.251974}, {0.471512, 1.453454}, {-0.334489, -0.584985}, {-0.471259, -1.117006}, {0.399544, -0.900880}, {0.372172, 0.255576}, {-0.107049, -0.126052}, {0.408528, -0.020332}, {0.284764, 0.268221}, {-0.298182, -0.221228}, {-1.686760, 0.052717}, {-0.036532, 0.036560}, {-0.523159, -0.734161}, {-1.978600, -0.302538}, {-0.584814, -0.405386}, {-0.741486, 0.753370}, {-0.040990, -0.509271}, {-0.541529, -0.386237}, {0.566418, 0.037714}, {0.151225, 0.807270}, {0.189559, -0.703980}, {-0.079181, -0.363765}, {-0.031324, -1.081530}, {0.083723, -0.843167}, {0.221127, 0.064046}, {-0.427889, 0.022969}, {0.139107, 0.082158}, {-0.086705, 1.011836}, {0.342143, 0.246917}, {0.207554, 0.133077}, {-0.080966, 1.046769}, {-1.059233, -1.085633}, {-0.356010, 0.718178}, {-0.577859, -0.109375}, {0.542744, 1.108480}, {-0.876346, -0.752113}, {1.300557, -0.250276}, {-1.010939, 1.119039}, {0.250270, -0.805066}, {-0.711292, -0.052695}, {-0.272900, 0.801570}, {-0.129894, -1.472325}, {-0.059291, 0.042281}, {0.343083, 0.256834}, {0.652360, 1.649133}, {-0.441827, 0.270447}, {-0.338878, 0.306703}, {-0.533263, -0.367020}, {-0.251497, -0.091588}, {-0.288078, -0.953882}, {-0.687001, 1.500250}, {-0.145605, -0.885543}, {-0.295624, 0.364480}, {-0.773724, 0.838420}, {-0.755309, -0.637771}, {0.140479, 0.139850}, {0.164407, -0.946375}, {0.334796, 0.474215}, {-0.108846, 0.443189}, {-0.315848, -0.562709}, {1.146425, -0.086577}, {1.422925, 1.452282}, {0.528118, 1.090295}, {0.142858, -1.517183}, {0.089292, -1.030106}, {1.868715, -0.729473}, {-0.847120, 1.530669}, {-0.619504, -0.077095}, {0.013841, 0.239227}, {0.358968, -0.495570}, {0.529144, -0.319802}, {-0.237481, 0.008175}, {-0.949545, -1.524610}, {-0.764478, 1.202526}, {-0.754071, 0.211168}, {0.726948, -0.350558}, {-0.383736, -0.722571}, {-0.531464, 0.251220}, {-0.215829, 0.489119}, {-0.673253, 0.780101}, {-0.425690, 0.571457}, {-0.591886, -0.066992}, {-1.591411, -0.156612}, {0.832392, -2.183463}, {0.089291, 0.262270}, {0.334040, 0.864206}, {1.070955, -0.017792}, {-0.209751, -0.368139}, {0.320312, 0.611719}, {0.299755, -0.675094}, {0.945826, 0.192595}, {0.160973, -0.236396}, {-0.930557, -0.137053}, {0.824962, -0.452584}, {-0.781090, 0.259436}, {0.499810, -0.342312}, {-0.976936, -0.295870}, {-1.864960, -1.380520}, {-0.343277, 1.189033}, {0.354532, 0.766793}, {-0.539951, 0.213865}, {-0.755910, 0.577450}, {-1.051209, -1.337479}, {-0.047104, 0.329372}, {0.415117, -0.259529}, {0.118073, 0.808609}, {1.623840, -0.219009}, {-0.092132, 1.145445}, {-0.289294, 0.153253}, {-0.118908, 0.241607}, {-1.524828, -0.280118}, {0.532567, -0.648456}, {-0.104690, -0.952993}, {0.096358, 0.341141}, {0.577925, -1.416989}, {-0.472131, 0.005166}, {0.441558, 0.684743}, {-1.075276, 0.458788}, {-0.542887, -2.145492}, {0.982289, -0.712595}, {0.376656, -0.133513}, {-0.495061, -0.153725}, {-0.843701, -0.590876}, {0.189824, -1.026949}, {0.271507, 0.450949}, {-1.214261, 1.019265}, {-0.192929, 0.809120}, {0.580104, -0.580059}, {-1.008693, 0.258822}, {-0.686540, -0.150929}, {-0.806180, 0.585680}, {0.382421, 0.681665}, {0.993495, 0.326671}, {-0.011094, 0.137639}, {0.230903, 1.353307}, {0.321925, -0.530779}, {0.445268, -0.218635}, {-0.248939, -0.811110}, {-0.438773, 0.174895}, {0.092849, -0.786051}, {0.672213, 0.282743}, {0.310022, 0.016750}, {-0.554465, -1.296100}, {1.167694, 0.289020}, {-1.008050, -1.267211}, {1.337627, -0.727579}, {1.107920, -0.800503}, {1.580887, -0.434263}, {0.534123, -0.023207}, {-0.672041, -1.190008}, {-0.623945, -1.000304}, {-0.339638, -0.090139}, {-0.247150, -0.090013}, {-0.248865, -0.373625}, {-1.008469, -0.345410}, {0.219290, -0.748377}, {-1.110240, 0.109012}, {-1.315957, -0.132981}, {0.328799, 0.407528}, {0.992340, 0.695968}, {0.540487, 0.100143}, {-0.101748, 1.200990}, {1.372902, -0.484321}, {0.182478, 0.930679}, {1.286810, -0.092169}, {0.361417, -0.430697}, {0.059600, 0.508897}, {0.957065, 0.231615}, {0.315519, 0.910029}, {-0.259820, -1.108543}, {1.139876, 1.306830}, {0.111378, 0.598970}, {-1.158463, 0.057921}, {0.732254, 0.269129}, {-0.422410, 0.384354}, {0.434930, 0.258197}, {-0.135920, -0.584475}, {-0.525475, 0.266487}, {0.479545, -1.317436}, {-0.588906, -1.032770}, {0.421416, -0.456796}, {-1.112158, 0.197872}, {0.427474, -1.371221}, {1.169989, 0.066283}, {-0.285752, 0.682510}, {-1.103367, -0.081644}, {-0.492414, -0.508673}, {-0.603259, 0.274685}, {0.453820, -0.705243}, {0.451449, -0.286640}, {-0.890995, 1.493104}, {-0.269448, -0.111697}, {-0.284481, 0.892255}, {-0.156936, 1.178820}, {-0.026075, -0.288447}, {0.192773, -0.689622}, {0.408094, 0.221306}, {-0.077789, 0.462070}, {-0.763512, 0.374190}, {1.372160, -0.387671}, {-0.961063, 0.123053}, {-0.563208, -1.176171}, {-0.681526, 0.053875}, {0.246027, 0.916420}, {0.074971, 0.397053}, {-0.509338, -0.467579}, {-0.028080, -0.246218}, {-0.778298, -1.008908}, {-0.688193, -0.856779}, {2.135919, -0.463805}, {-0.151521, -0.435434}, {0.286563, -1.399753}, {-0.238350, 0.812805}, {-0.637019, 0.391566}, {-0.930719, -0.753007}, {-0.130401, -0.095141}, {-2.022008, 1.588912}, {0.465128, -0.736271}, {0.259710, 0.008248}, {-0.670376, 0.573592}, {-0.759845, -0.245010}, {1.199012, 1.484925}, {0.117486, -1.283839}, {0.823713, 0.601557}, {0.430107, 1.305288}, {-0.857913, -0.086698}, {-0.240219, 1.178419}, {0.106586, -0.727451}, {-0.013468, -0.553821}, {0.331834, -0.839487}, {-0.314308, -0.236823}, {-1.020583, -0.465144}, {-1.183478, -0.838031}, {-0.688226, -0.504797}, {-0.659946, 0.110839}, {-0.317790, -0.888356}, {0.070495, -0.690989}, {-0.215137, -0.280878}, {-0.523957, -1.084659}, {-1.625006, -0.827692}, {-1.254357, -0.098812}, {-0.037334, -0.320405}, {-1.032500, -1.006692}, {1.085823, -0.464633}, {-0.424815, -0.295596}, {-0.359488, -1.184184}, {-0.081069, -0.021767}, {0.194173, -1.145768}, {-0.408176, -0.113861}, {-0.210713, 0.116032}, {0.153323, -0.278102}, {-0.824116, -0.348393}, {1.711024, -0.546763}, {0.732380, 0.343069}, {-0.031038, -0.890522}, {0.333504, -0.385973}, {0.838976, 0.266577}, {-0.957789, -0.709820}, {0.084819, -0.404493}, {0.086928, 0.312046}, {0.263436, 0.677942}, {-0.878981, -0.061526}, {1.171282, -0.158491}, {1.014568, -0.534002}, {-0.414913, -0.218960}, {1.441376, -0.016469}, {-1.076862, 0.575999}, {-0.508823, -0.139239}, {0.558421, 0.010286}, {0.950772, -0.758483}, {-0.041742, 0.060954}, {-0.951736, -0.703192}, {1.175201, 0.090376}, {-0.088403, 0.175440}, {1.137298, 0.338050}, {0.202901, -0.780958}, {0.061536, 1.037387}, {0.163756, 0.146354}, {-1.082413, -0.656845}, {-0.663994, -0.554342}, {0.921438, 0.127520}, {-1.683027, -0.494672}, {-1.207142, 0.324501}, {-1.591428, -0.689670}, {0.380479, -0.276296}, {-1.370787, -0.457896}, {0.311180, 0.865492}, {0.329667, -0.284122}, {0.764384, -0.263737}, {0.388595, 0.581989}, {0.530794, 0.089158}, {-0.194579, -0.160770}, {-0.497197, 0.237652}, {-0.969043, 0.476531}, {0.638742, 0.543269}, {-0.246685, -0.490291}, {-0.504714, 0.519112}, {-0.275926, 0.004395}, {-0.679165, 0.801614}, {-1.013769, 0.245981}, {-1.048180, 0.133878}, {-0.347843, -0.709411}, {-0.382321, 0.205123}, {-0.289524, 0.058317}, {0.779829, -0.108258}, {-0.607607, -0.504919}, {-0.313592, -0.887478}, {-1.599302, 0.151143}, {-0.235541, 0.112637}, {0.193417, 0.135649}, {0.160499, -0.467862}, {-0.417821, 0.508193}, {-0.371340, -0.797004}, {-1.218597, -0.463920}, {-0.329584, -0.832050}, {0.403735, -0.347268}, {0.312113, -0.544869}, {-0.885796, -0.033127}, {0.757105, 0.871085}, {-0.135961, 0.870860}, {-0.428802, -1.184347}, {0.290754, 0.685975}, {0.025818, -0.815321}, {0.241907, 0.375104}, {1.038442, 0.255637}, {0.196660, -0.681084}, {-1.074595, -0.105662}, {-1.073237, 0.535047}, {-1.330165, -0.216306}, {0.568918, -1.460499}, {0.046209, -1.528571}, {0.044727, 0.488519}, {-0.583277, -0.315108}, {-1.471177, -0.727805}, {-0.046036, -0.582608}, {-0.295384, 0.529362}, {0.361797, -0.922655}, {0.397070, -0.019993}, {-0.492521, -0.117990}, {0.782889, 1.170999}, {0.662184, 0.636561}, {-1.735288, 0.395381}, {0.079380, -0.052730}, {0.709996, 0.654113}, {-0.376010, -0.821716}, {0.920385, -1.393132}, {-0.322399, 0.137951}, {0.319344, -0.513440}, {1.985403, -1.230494}, {-0.254706, 0.778217}, {-0.381202, 0.578765}, {-0.175651, 0.459589}, {0.364902, -0.349097}, {-0.521217, 0.377102}, {-0.696214, 0.237524}, {-1.428330, 0.264137}, {1.113969, -0.075405}, {-1.211818, 0.228307}, {-0.100941, 0.790198}, {0.189215, -0.790792}, {0.363891, -1.198473}, {-0.964005, 0.251669}, {0.801589, -0.261038}, {-1.090147, 0.402919}, {-0.227480, -0.351480}, {-0.406823, 0.119514}, {-0.814855, 1.243446}, {0.516934, -1.114966}, {0.026047, 0.248718}, {-0.378437, 0.509858}, {0.312049, 0.311611}, {-0.891748, 0.177292}, {0.608950, 0.028471}, {-0.495443, -0.650332}, {-0.032869, 0.579244}, {1.360294, -1.192193}, {-0.391750, 0.494781}, {-0.337458, 0.448717}, {0.363825, -0.229340}, {-1.236290, 0.427883}, {0.399168, 0.082217}, {0.280208, -0.644907}, {-0.759483, -1.003514}, {1.269082, -0.253776}, {0.442041, 1.322204}, {1.329775, -0.544052}, {0.399145, 0.137237}, {0.772111, 0.321600}, {-0.588199, -0.243919}, {-0.658466, -0.868454}, {0.146449, -0.936439}, {0.021534, -0.658851}, {0.764039, 0.391941}, {0.200860, -0.212653}, {0.159180, -0.042023}, {-0.537129, -0.147575}, {0.702245, -1.015617}, {1.790915, 0.570027}, {0.766059, -1.875739}, {-0.182925, -0.787800}, {0.315391, 0.206610}, {0.710280, -0.029793}, {0.798824, 0.611930}, {0.082498, -0.122377}, {-0.441196, -0.130910}, {0.361502, 0.019255}, {-0.494324, 1.258054}, {-0.658917, 0.549865}, {1.452774, 0.133686}, {-0.454627, -0.589725}, {-0.880561, 0.736115}, {-0.035445, 0.327460}, {0.642400, 0.698314}, {0.196188, 0.488357}, {-1.092548, -0.378542}, {1.012368, 0.219866}, {0.136436, 1.050915}, {0.450533, -0.095960}, {-1.079073, 0.205764}, {0.129783, -0.607319}, {0.304598, -0.028435}, {1.256490, -0.636622}, {0.251786, -0.305137}, {-0.501987, 0.211074}, {-0.906736, -0.486202}, {-0.082131, 0.034965}, {-0.584390, 0.499364}, {0.129603, -0.644452}, {-0.480831, 0.196367}, {0.349143, 1.779059}, {0.431185, 1.141092}, {-0.747513, 0.731564}, {-0.786213, 0.604126}, {1.290785, 0.708430}, {-1.621136, 0.607945}, {-1.515636, 0.414725}, {-1.243614, 0.535769}, {-0.468547, 0.431251}, {-0.710815, -1.121571}, {-1.329742, -0.444443}, {-0.399959, 0.076529}, {-0.261205, -0.551109}, {-0.712130, -1.339364}, {-1.672925, 1.158768}, {0.511278, 0.494824}, {1.221284, -0.403334}, {-0.689758, 0.135193}, {-0.266714, -1.264919}, {-0.186901, -1.052718}, {0.711819, 1.601651}, {-0.004976, -1.134699}, {0.264689, 0.143991}, {-0.485013, 0.240249}, {-0.430138, -0.180132}, {-0.448256, 0.065344}, {-0.313909, 0.042542}, {-1.788176, -1.003737}, {-0.430691, 0.515782}, {-0.552024, 0.033933}, {-0.511113, -0.396641}, {-0.667628, 1.324609}, {1.536055, -0.176847}, {-0.371362, -0.780574}, {-0.604459, -0.180242}, {0.127890, -0.724469}, {-0.546043, 1.055909}, {-1.160424, 0.296830}, {0.851429, -0.834491}, {-0.653446, -0.319744}, {-0.281928, 0.036064}, {0.152684, 0.887427}, {-0.584216, -1.129730}, {-0.301487, -0.448074}, {-0.644999, -0.062434}, {-1.064140, -0.877770}, {-0.025358, 0.318626}, {-0.169102, -1.656778}, {-0.410128, 1.517397}, {0.908370, 0.349006}, {-1.017744, -0.256003}, {-0.115645, 0.371458}, {-1.286410, -1.036681}, {0.668494, -0.174631}, {0.543753, -0.269535}, {0.520788, -0.045167}, {-0.348305, 0.919992}, {0.371761, 0.757065}, {0.314541, -0.679578}, {0.365607, 0.778578}, {-0.119374, 0.153537}, {-0.266104, -1.198807}, {0.480855, 0.786074}, {-0.032335, -0.840292}, {0.610415, 0.164635}, {-0.644738, -0.147418}, {0.544935, 0.824594}, {0.702994, -1.244186}, {0.383204, 1.467042}, {0.264960, -0.885661}, {0.500914, -0.588794}, {0.070323, 0.125276}, {-1.166675, -1.286120}, {2.429481, -0.059230}, {0.764725, -0.984194}, {1.319205, 0.802877}, {0.667521, -1.156544}, {-0.490046, -1.778711}, {0.006985, 0.759426}, {-0.060767, 0.767774}, {-0.536098, -0.574244}, {-0.438429, -1.187924}, {-0.482447, -1.117342}, {-0.450270, -0.012118}, {-0.862294, 0.414935}, {0.111836, -0.764191}, {0.176201, -0.840321}, {0.003283, 0.329039}, {-1.081580, -0.831850}, {-0.757816, -0.792817}, {1.390379, 0.527990}, {-0.423941, -0.375055}, {1.019446, 0.722048}, {-1.226189, -0.806075}, {-0.767485, -0.457873}, {0.492217, -0.548094}, {0.691643, -0.508868}, {0.141146, -0.799097}, {-0.090612, 0.367936}, {-1.588061, -0.270815}, {-0.235590, -0.137989}, {-0.055501, 0.515153}, {0.710591, -0.228057}, {-0.499118, 0.081473}, {0.605634, -0.712194}, {-1.465126, -0.300375}, {-1.525912, 0.646441}, {-0.143056, 0.092698}, {-1.615522, 0.655455}, {-0.920867, 0.776885}, {1.293398, 0.375770}, {-0.367088, 0.290023}, {0.060016, -1.396905}, {-0.564301, -0.163519}, {0.765264, 0.454371}, {0.251582, -0.413469}, {-0.202361, -0.426122}, {-0.059972, 0.009915}, {-0.818937, 0.409182}, {0.019321, 1.223693}, {-0.308784, -0.106641}, {-0.245638, -1.287715}, {-1.559027, 0.473275}, {-0.523531, 0.009086}, {-0.815917, 0.794331}, {1.557748, 0.201257}, {-1.003834, 0.532228}, {-0.108970, -0.321004}, {0.324720, -1.294292}, {-0.526747, 1.138428}, {-0.648496, 0.837288}, {0.145426, 0.003744}, {0.995406, -0.617984}, {0.658038, -0.080149}, {0.680441, -0.468064}, {1.360485, 0.405642}, {-0.648630, 0.199765}, {1.421996, 0.120768}, {-1.160572, 0.425829}, {-0.534584, 0.437195}, {0.263973, 1.083009}, {0.084184, -0.731033}, {-0.583261, -0.202720}, {-0.567244, -0.031166}, {-0.393410, 0.011082}, {0.471308, 0.529559}, {0.817988, 0.803892}, {-0.436848, 0.012289}, {0.134056, -0.016346}, {-0.510996, -0.160355}, {0.301328, 0.155798}, {0.135075, -0.240089}, {-2.111101, -0.043898}, {0.492706, -1.075578}, {0.331122, -0.193177}, {-0.337675, -0.385101}, {0.600488, -0.607441}, {-0.482480, 0.488866}, {0.510644, -1.348219}, {-0.900080, -0.246883}, {0.054556, -0.043343}, {-2.185732, -0.132914}, {-1.179464, -0.506427}, {0.060865, 0.023893}, {0.465712, -0.293140}, {0.600472, -0.542588}, {0.339465, -0.734740}, {0.066566, -0.329599}, {-0.182971, -0.834260}, {-0.759862, -0.649675}, {0.503928, 0.562654}, {0.180099, -0.072681}, {-0.298720, 0.091572}, {0.414829, 0.685094}, {-0.178731, 1.490621}, {-0.764312, -0.940243}, {-0.609986, 0.139467}, {0.620076, -0.882397}, {-0.662503, -0.243036}, {0.756788, 0.492556}, {-0.192028, -0.450766}, {0.351446, 0.122595}, {0.312300, -0.348844}, {-0.844268, 0.241385}, {-0.245266, -0.747779}, {-1.043476, -2.173372}, {0.689560, 0.287984}, {-0.604039, 1.340161}, {-0.186566, -1.016223}, {-1.636023, -1.237069}, {-0.183189, 0.475359}, {0.632049, -0.473980}, {-0.105737, 0.324525}, {-0.734339, -0.411750}, {-0.959041, -0.918415}, {0.467121, -0.942991}, {0.819873, 0.146195}, {0.528463, -0.981180}, {0.144697, 0.795032}, {0.104364, 0.648283}, {0.183268, 0.614067}, {-1.164645, 0.810951}, {0.009496, 0.610751}, {-1.300113, -0.583004}, {-1.015675, 0.243285}, {0.097064, 0.342813}, {-0.245720, 0.670790}, {0.205629, 0.159022}, {-0.262508, -0.028034}, {-0.035008, 0.785832}, {0.565660, 0.072977}, {0.857016, -0.270113}, {0.136789, -0.121418}, {-0.656906, 0.866977}, {0.154962, 1.086797}, {1.053022, -1.172792}, {0.226542, 0.180113}, {0.245718, -0.555295}, {-0.232891, 0.136740}, {-0.930222, 0.234981}, {-0.486962, -0.336185}, {0.350798, 0.599626}, {0.574125, 0.169891}, {0.614118, -0.392546}, {-1.180994, 0.390905}, {0.683221, 0.485573}, {-0.841497, 0.916893}, {0.493882, 0.242793}, {1.254721, -0.271983}, {-0.534063, 0.438921}, {0.575408, -0.133856}, {0.312608, -0.033845}, {0.580808, -0.613817}, {-0.784972, -0.028488}, {0.021831, -0.097100}, {1.458365, -0.869399}, {-1.300065, 0.760049}, {0.248812, -0.160696}, {0.577725, 0.443818}, {-0.187965, 1.600714}, {0.318288, -0.795075}, {-0.721696, -0.233585}, {0.273242, 0.614688}, {0.681000, -0.554330}, {-1.334662, -0.151226}, {0.090395, 0.928536}, {0.810563, 0.579363}, {-1.128333, 0.111594}, {1.434974, 0.769472}, {-1.029423, 0.004195}, {-0.400590, 0.108051}, {-0.108363, -0.294703}, {2.176060, -0.435633}, {0.755020, 0.883148}, {-0.455663, -0.243404}, {0.367326, -1.926805}, {-0.455835, -0.070141}, {1.081696, 0.103537}, {0.413618, -0.241936}, {-0.155372, -0.490682}, {-0.621036, 0.039829}, {0.890303, -0.313264}, {-0.023574, -0.297114}, {0.149197, 0.434404}, {-0.685611, -0.688437}, {0.206938, 0.778492}, {-0.031417, 0.174300}, {-0.246155, -0.983701}, {0.342626, 1.369090}, {-0.431405, 0.516606}, {-0.058886, -0.776391}, {1.360163, 0.224372}, {1.125009, 0.009836}, {0.803894, 0.584153}, {-1.066450, -0.134171}, {0.881308, -0.764883}, {0.171104, 0.260482}, {0.114729, -0.114913}, {0.883607, 1.086200}, {0.699362, -0.659063}, {-0.164816, -0.175345}, {0.387135, -0.085228}, {-0.572309, 0.619865}, {-0.012015, -0.860950}, {-0.342715, 0.692370}, {-0.024062, -0.039234}, {0.292654, 0.782865}, {0.060171, 0.442951}, {0.160037, -0.381519}, {0.408238, -0.320343}, {-0.342973, -0.880725}, {0.737359, 0.306119}, {-0.536555, -0.356491}, {0.838071, -0.060380}, {0.019197, -0.215087}, {0.281771, 0.139607}, {-0.133836, -0.948025}, {0.064779, -0.167417}, {-0.325938, 0.106840}, {0.447499, 0.335119}, {0.025073, 0.284159}, {-0.052734, 0.106778}, {-0.701789, -1.485622}, {0.518739, -0.597975}, {-1.716639, 0.510981}, {-0.148489, 0.188995}, {0.199804, 0.565255}, {0.503694, -0.249207}, {0.351417, 0.318152}, {-0.004846, 0.498401}, {-0.527585, 0.429634}, {2.230256, 0.657682}, {1.005492, 0.534070}, {0.335269, -0.396652}, {-0.245966, 0.173556}, {1.145575, 0.588938}, {0.250537, 0.473746}, {0.273775, -0.223929}, {0.015710, -0.244761}, {-0.725572, 0.598468}, {0.272714, 0.218757}, {-1.388789, 1.100565}, {0.552103, -0.509940}, {-1.061048, -0.439544}, {0.192437, 0.828632}, {-0.847671, 1.023359}, {0.366431, -0.588009}, {0.237764, 0.442998}, {-0.676158, -0.309010}, {-0.610452, -0.659422}, {-0.259924, 0.412575}, {0.388464, 0.697350}, {0.043340, 0.184411}, {-0.572546, -0.447644}, {-0.330020, 0.540548}, {-0.476494, 0.090675}, {0.428011, 0.507960}, {-0.296043, -0.255790}, {1.215630, -0.318831}, {-1.154660, -0.477923}, {-0.262266, 1.238092}, {-0.608603, 0.453266}, {-0.032630, -0.939531}, {-1.660462, -0.153632}, {1.705682, -0.866847}, {0.429987, -0.912308}, {0.416998, 0.929955}, {1.043259, 0.307132}, {-0.982368, 0.014721}, {0.123933, 1.132765}, {-0.203176, -0.346598}, {0.070922, -0.385330}, {0.144019, 0.165251}, {0.096086, -0.226780}, {0.793344, 0.135213}, {-0.393406, -0.119594}, {1.126684, -1.053134}, {-0.132630, 0.517421}, {0.300448, -1.340154}, {-0.834868, 0.378596}, {-0.132590, -0.127355}, {-0.544568, 1.427218}, {-0.443372, 0.521400}, {-1.030830, 1.124109}, {-1.434174, 0.036345}, {-0.448801, -0.849006}, {1.295485, 1.176937}, {0.612869, -0.763780}, {-0.369440, -1.146724}, {-0.183304, -0.234196}, {0.228224, -0.830902}, {1.022613, 0.744120}, {0.025729, 0.401274}, {-0.291958, 0.275394}, {-0.232227, -0.344890}, {-0.372023, -0.748359}, {0.399097, -0.026262}, {-0.980706, 0.557794}, {-1.242178, -0.160578}, {0.807544, 0.089148}, {-0.313827, -0.935789}, {0.877743, 0.053390}, {-0.471764, -1.392615}, {0.816500, 1.445653}, {-0.016996, -0.915960}, {-0.919171, -0.825732}, {0.536946, 0.833119}, {-1.361314, -0.838853}, {-0.180351, -0.307114}, {0.720178, 1.060531}, {0.168912, 1.130233}, {1.082306, 0.407076}, {0.193384, 0.074239}, {0.505658, -0.337304}, {-0.059033, -0.040496}, {-0.238771, -0.195282}, {-0.160034, 1.174256}, {1.572109, -0.122569}, {0.170932, -0.122646}, {0.407778, 0.454863}, {-0.016869, -0.027842}, {0.533907, -0.455801}, {1.171133, 1.451143}, {-0.221926, 0.445829}, {-0.343024, -1.134887}, {-0.084294, -0.803381}, {1.762508, 0.510097}, {0.422538, -1.828873}, {-0.272140, -0.351999}, {-0.432142, 1.296591}, {-0.804792, 1.207034}, {-0.903372, 0.071198}, {0.221699, -0.548004}, {0.296788, -0.487708}, {-0.892082, 0.116939}, {0.118529, -0.058040}, {0.889249, 0.038813}, {-1.435339, 0.345064}, {0.196684, 0.414290}, {-1.174361, -0.538056}, {-0.655841, 0.448240}, {0.472673, -0.022418}, {0.940362, 0.311382}, {-0.835209, -0.613456}, {1.186347, 0.367963}, {-0.745946, -1.281948}, {0.614204, -0.405224}, {0.981560, 0.711532}, {-0.869991, 0.308124}, {-0.141029, -0.054972}, {-0.145974, 0.432189}, {0.451887, -0.259041}, {-0.784348, -0.033713}, {0.793608, 0.102305}, {-0.744519, 0.342470}, {0.486741, 0.105299}, {0.347823, -0.107864}, {-0.331637, 0.717920}, {-0.508501, 1.192128}, {1.490978, 0.162327}, {0.736492, -0.127445}, {-0.085074, -0.474562}, {0.599451, -0.167800}, {0.674386, 0.323677}, {-0.412837, -0.758638}, {0.609945, -0.786243}, {0.606302, 0.662258}, {0.070750, 0.124316}, {0.362489, 0.853723}, {-0.421579, -0.217535}, {-0.769619, 2.120710}, {-0.686205, -1.002458}, {0.847970, 0.499804}, {-0.240487, -1.200173}, {-0.787843, -0.870082}, {0.134999, -0.037935}, {1.418077, 1.020690}, {0.255585, -0.903872}, {0.517503, 1.018629}, {0.222738, -0.956358}, {-1.235963, 0.716474}, {0.896358, 1.292193}, {0.622993, 0.939205}, {0.032065, 0.164409}, {-0.779169, 0.659748}, {-0.738374, 0.133285}, {-0.620870, -0.855214}, {0.342903, 0.804248}, {0.339164, -0.133036}, {-1.661026, -0.210091}, {0.245305, -0.675406}, {-0.984197, 0.390112}, {-0.061474, -1.162560}, {-0.723975, 0.336075}, {0.796753, -0.371630}, {-0.548010, -0.761000}, {-0.603116, -0.658810}, {0.990442, 0.351586}, {-0.086890, -0.036006}, {0.092425, -0.586906}, {-0.925900, 0.593131}, {-0.763373, -0.389790}, {-0.938653, -0.603703}, {1.319069, 0.867869}, {0.485223, 0.597602}, {0.488264, -0.833841}, {0.550617, -0.599518}, {-0.329951, 0.815395}, {0.408096, -0.163820}, {0.427087, -0.036759}, {0.177247, 0.112508}, {0.674777, -0.049031}, {-0.068546, 1.438730}, {0.238263, -1.518472}, {0.883496, 0.410851}, {-0.306168, -0.121973}, {0.119223, 0.124116}, {-0.458455, 0.205762}, {0.819118, -0.420270}, {-0.502089, 0.258248}, {-0.168138, 0.489351}, {0.807982, -0.264625}, {0.084262, -0.505577}, {-0.559426, 0.054462}, {0.257622, -0.205514}, {0.063041, -0.447553}, {0.373281, 0.067113}, {-0.407206, -0.939355}, {0.143221, -0.451897}, {0.706256, 0.478611}, {0.537206, 0.751956}, {0.186734, -0.620411}, {0.745475, -1.471416}, {0.698281, 0.256863}, {0.042234, -0.046608}, {0.099521, -0.430961}, {0.236487, 0.680732}, {0.928581, 0.289094}, {-0.110851, 0.188157}, {-0.222611, -0.812705}, {-0.633681, 0.426959}, {1.240335, -1.514135}, {0.889274, -0.903866}, {0.435835, 0.552663}, {0.713055, 0.641659}, {-0.042562, -0.629798}, {-0.218147, -0.486607}, {0.534103, -0.801708}, {0.241010, 0.206161}, {0.572140, -0.082834}, {-1.509288, -0.142938}, {0.613317, -1.136810}, {-0.196998, -0.273118}, {-0.692536, -1.013502}, {-0.524362, -0.353001}, {-1.413574, -0.317148}, {-0.184674, -1.254237}, {0.212553, -0.393970}, {0.115187, -0.497395}, {-1.156764, 0.217090}, {-0.424303, -0.518804}, {0.414805, 0.157648}, {0.213679, -0.158910}, {-0.174193, 0.696145}, {0.085286, 0.143396}, {-1.850393, 0.435779}, {-0.015959, -0.039908}, {-1.196652, -0.512413}, {0.461147, 1.083615}, {1.188726, -1.253006}, {0.191977, 0.248884}, {-0.633004, 0.193534}, {0.030327, 0.447737}, {-0.264705, 0.787837}, {0.010620, 0.245484}, {-0.824799, -0.704581}, {-0.850004, 0.204610}, {0.381113, -0.610533}, {0.471917, 1.571607}, {1.071030, -0.224993}, {-0.384820, -0.304042}, {0.283926, -0.337624}, {-0.030392, -0.446234}, {0.380697, 1.115396}, {-0.572464, 0.561788}, {0.625570, 0.831812}, {0.385308, 0.863936}, {-0.754364, 0.169919}, {0.019587, -0.256785}, {0.572060, 0.074947}, {-0.701087, -0.235522}, {-0.048703, 0.055669}, {1.222353, 0.777241}, {0.332950, 0.082754}, {-0.367895, -0.645924}, {0.770417, 0.554187}, {-0.458786, -1.031422}, {0.314500, -0.322402}, {-0.683719, -0.429777}, {-1.553851, -0.570942}, {-0.067857, -0.160216}, {2.145920, 0.854215}, {0.213836, -0.315033}, {-0.513806, -0.416544}, {-1.457721, -1.141119}, {0.886807, -0.392147}, {-0.193698, -0.206875}, {0.548596, -0.465798}, {0.215522, 0.180953}, {-0.391465, -0.142202}, {0.902257, 0.158063}, {0.408777, -0.224758}, {0.446692, 0.091443}, {-0.094655, 0.081225}, {0.499235, 0.958718}, {0.761380, -0.531675}, {0.276579, 1.203927}, {0.276615, 0.189762}, {-0.100258, -0.732587}, {-0.027769, 1.596871}, {0.462540, 0.379880}, {-0.341576, 1.767737}, {0.394437, -0.167993}, {-0.105307, -0.509844}, {0.334850, -2.520104}, {0.845128, -0.104068}, {-0.740984, -0.026126}, {-0.974643, -0.280273}, {-0.134239, -0.078789}, {-0.299124, -0.863529}, {0.106515, 0.170939}, {-0.927394, 0.870161}, {-0.491114, -1.917638}, {-0.529767, -0.057114}, {0.786100, -0.565618}, {0.176072, -0.842280}, {0.326239, -0.605491}, {0.116318, 1.170250}, {0.644626, 0.571773}, {0.232028, -1.300912}, {0.588283, 0.271257}, {-0.906647, -1.277791}, {0.521843, -0.527216}, {1.442306, 0.379763}, {0.236952, 1.052319}, {-0.295295, -0.568414}, {0.242369, -0.208334}, {-0.513807, -0.995215}, {0.709065, 0.862066}, {-0.881110, -0.392734}, {-0.341385, -0.818876}, {-0.562235, -0.774610}, {-0.383367, -0.394595}, {0.193563, 0.074610}, {1.080435, 0.606053}, {0.541249, 1.153279}, {-0.507145, -0.367372}, {-0.179289, 0.029067}, {0.098487, -0.117080}, {-0.648908, 1.440715}, {0.227369, 0.898461}, {0.080062, -0.499544}, {0.644433, -0.375275}, {1.389011, 0.012401}, {-0.264708, -0.741045}, {0.537436, -0.075225}, {1.106610, -0.549125}, {1.258275, -0.013265}, {0.728976, 0.175113}, {-1.886547, -0.858978}, {-0.781953, -0.791226}, {0.122237, -0.660890}, {-1.264703, -0.283197}, {0.103200, -0.239052}, {-0.243478, 0.149221}, {-0.144997, -0.203846}, {-1.067080, -1.526123}, {-0.976317, 0.443019}, {-1.106013, 0.024286}, {-0.311371, 0.312037}, {0.122867, -0.212564}, {-1.891145, 0.276717}, {-0.898165, -0.258266}, {0.160126, -1.155622}, {0.322655, -0.124973}, {0.709720, -0.446937}, {0.646654, -0.041224}, {-0.212961, 0.280510}, {0.377353, 0.020557}, {-0.559193, 0.356275}, {-0.304649, 0.801474}, {0.039679, -1.071028}, {0.201060, 0.268840}, {0.060299, 0.506095}, {0.468796, 0.933767}, {-0.161046, 0.352827}, {0.444057, -0.026569}, {-0.686397, 0.188762}, {-0.335728, 0.854376}, {1.571248, -0.778097}, {-0.297224, -1.112280}, {-0.298702, 0.212694}, {0.753050, -0.774688}, {0.772973, 0.801142}, {1.006190, 0.195367}, {0.333846, -0.480112}, {-0.391853, 1.243410}, {-0.695698, -0.290131}, {-0.739155, -0.888427}, {-0.332246, -1.694342}, {-0.872134, -0.491913}, {-1.196152, -0.951224}, {0.677412, 0.228122}, {0.078804, 0.855733}, {0.835586, 0.425326}, {-0.229803, -0.248342}, {-0.718329, -0.707283}, {-0.509813, -1.200162}, {0.225505, -1.007218}, {-0.328166, -0.713028}, {0.464166, 0.043179}, {0.309117, 1.116584}, {0.123684, 0.813080}, {-0.557566, 0.056690}, {0.771158, 0.111089}, {-0.102040, 0.365176}, {0.283581, -0.304576}, {0.965047, 0.603779}, {-0.888726, 0.478438}, {0.477779, 1.650476}, {-1.743258, -0.545295}, {1.377725, -0.340541}, {-0.086465, 0.288027}, {0.172055, -1.416793}, {-0.156652, -1.552419}, {1.449604, -0.803632}, {0.172637, 0.621346}, {0.793824, 1.127283}, {-0.470779, 0.819345}, {0.854335, -0.217494}, {1.238408, -0.227297}, {-0.446910, -0.251604}, {-0.124721, 0.631903}, {1.355742, -0.253180}, {0.521698, -0.380554}, {0.610522, -0.644701}, {-0.081964, 0.075793}, {-0.023329, 1.079615}, {0.035329, 0.305532}, {0.833652, 0.329381}, {1.248972, -0.520503}, {1.090623, -0.312108}, {-0.298609, 0.072040}, {-1.133040, -1.182362}, {0.439116, 0.599685}, {-0.255228, -0.318038}, {-0.027322, 0.405769}, {-0.892907, 1.076022}, {-0.262922, 0.302096}, {-0.920155, -0.097186}, {-0.540438, 1.415810}, {0.272013, -1.071177}, {-1.292397, -0.727006}, {-0.061905, -0.763598}, {-0.941549, 0.110682}, {-0.295776, 0.793431}, {-0.169404, 2.201666}, {-0.222637, -0.543007}, {-0.231419, 1.018982}, {0.431675, -0.674150}, {0.647789, 1.313624}, {-0.264086, -1.589729}, {-0.501708, 1.108352}, {-0.208768, -0.310074}, {-0.597616, 0.571167}, {0.001134, -0.028259}, {1.776513, 0.322038}, {0.000932, 0.887187}, {-0.308110, -0.292049}, {-0.532540, -0.401817}, {0.489140, -0.274389}, {2.617062, 0.127502}, {0.147567, 1.240201}, {0.663675, 0.555925}, {-0.074294, -0.891471}, {-0.052708, 1.536838}, {0.022298, -0.206741}, {0.479854, 0.468749}, {-0.554820, 1.208232}, {0.082508, 0.244005}, {0.308910, 0.266430}, {-0.474058, 0.730188}, {-0.234200, -0.862644}, {0.952488, 0.374155}, {-1.407313, 0.324058}, {0.255768, 0.333183}, {-1.409944, 0.885110}, {-0.133868, 0.923739}, {0.365945, -0.286467}, {-0.173753, -0.130918}, {-0.127021, -0.366972}, {0.038457, 0.743113}, {-0.478880, -0.722286}, {-0.422107, -0.391745}, {1.431973, 1.075899}, {0.065443, 0.277849}, {-1.101839, -0.748236}, {0.291738, 0.774096}, {-0.408096, 0.206278}, {-1.180762, 0.039864}, {0.986053, -0.063561}, {0.898749, 0.024366}, {0.206499, 0.151574}, {0.542112, 0.681856}, {0.773880, 0.684502}, {-0.241328, -0.031931}, {-0.382695, -0.326442}, {-0.849252, -0.163569}, {-0.224038, 0.104381}, {-0.271735, 0.180993}, {-0.297649, 1.141589}, {-0.707010, -0.959005}, {0.401963, -0.582866}, {-0.715231, -0.495908}, {0.530290, -1.238800}, {-0.754427, 0.394484}, {0.419279, -1.220995}, {0.230175, 0.787427}, {0.371875, -0.606294}, {0.450371, -0.675309}, {0.171612, -0.392663}, {0.044028, 0.193995}, {0.390951, 0.897858}, {0.462471, -1.607671}, {1.295156, 0.465999}, {0.793000, -0.411269}, {0.521132, -0.780113}, {0.533996, -0.337154}, {0.465286, 0.327814}, {0.575773, 0.419234}, {-0.030753, -0.501412}, {-0.575181, -1.392250}, {0.464516, 0.592014}, {-1.051143, 0.268391}, {0.131935, 0.110597}, {0.074115, 0.640275}, {1.141666, -0.715042}, {0.981527, 0.398484}, {-0.318100, -0.014155}, {0.180788, -2.372129}, {-0.228512, -1.445935}, {0.604143, 0.511910}, {0.061448, 0.220588}, {1.285856, 0.755178}, {-0.007362, 0.382650}, {-0.121693, -1.355384}, {0.384877, 1.724619}, {0.501171, 0.169846}, {0.072657, 1.420837}, {-0.653957, -1.801468}, {1.157954, -0.653464}, {-0.086409, 0.466198}, {-0.284619, -1.509457}, {0.250620, 0.007603}, {-0.493596, -0.521283}, {0.052350, 0.242415}, {-0.662703, 0.329744}, {0.270573, 0.839284}, {1.071362, -1.329600}, {1.398703, -0.282566}, {-0.731533, 1.666659}, {1.288748, 0.120392}, {-0.275091, -0.249067}, {0.385583, 0.034420}, {-0.019935, -0.619918}, {0.126886, 0.241649}, {-0.634954, -0.683893}, {-0.689498, -0.555893}, {0.355284, -0.081731}, {-1.040687, -0.136149}, {-0.539910, -1.308056}, {-0.577548, 0.394734}, {-1.345688, 0.532236}, {-0.139622, 0.230896}, {0.266085, -0.109778}, {0.720346, 1.119455}, {0.079954, 0.124289}, {0.511923, -1.657132}, {-2.248034, 0.251991}, {1.364589, 0.688028}, {0.888909, -0.151714}, {-0.569128, 0.357256}, {-0.771377, 1.271462}, {-0.737187, -0.032195}, {-0.719654, 0.068332}, {-0.741507, -0.004577}, {-0.437575, 0.452222}, {0.046679, 0.449842}, {-0.220268, -0.231133}, {0.487091, -0.782256}, {-0.588303, -0.523988}, {0.078759, 0.662810}, {1.248130, -0.793583}, {0.508679, 0.242683}, {0.870960, -0.005896}, {0.322792, -0.772706}, {-0.837291, -0.424434}, {-0.273942, -0.068730}, {-0.996061, 0.634835}, {-0.325385, 0.366167}, {-1.601558, -0.215569}, {0.865809, -0.026148}, {1.361558, -0.115469}, {-0.588242, -0.102336}, {-0.387966, 0.323272}, {0.289584, -0.504165}, {-0.754503, -1.114553}, {-0.353904, -0.014974}, {-0.948798, 0.383592}, {-0.060121, -1.007894}, {-0.209254, 0.035108}, {-0.191868, -0.327112}, {-0.872958, 1.449912}, {1.215036, 0.727058}, {-0.851767, 0.775217}, {0.370956, -0.452360}, {-0.325553, -0.956322}, {-0.341459, 1.281000}, {-0.094430, -0.289030}, {0.272220, 0.131684}, {-0.490177, -0.806252}, {-0.099482, 0.801627}, {0.660006, -0.111388}, {-0.412095, 0.392647}, {-0.019833, 0.332668}, {-0.076947, 1.499139}, {-0.243294, 1.683990}, {-0.671076, -0.433132}, {0.167768, -0.058623}, {1.324849, 0.390514}, {-0.069259, -1.476604}, {-0.201312, -0.076595}, {0.817829, -0.669267}, {0.271931, 0.149985}, {-0.209551, -0.803738}, {0.823791, -0.880931}, {0.945366, -0.396813}, {-0.636227, 0.164765}, {-0.560128, 1.371587}, {-0.210411, -0.871558}, {0.049073, 0.899454}, {-0.426285, 0.802485}, {0.481298, 0.695859}, {-1.158734, 0.585655}, {0.344093, -0.512270}, {0.837968, 0.186502}, {0.446366, -0.555741}, {0.389203, -0.792521}, {-1.165375, -1.629469}, {-1.254712, 0.471550}, {0.689930, 1.197958}, {-1.004811, 0.105754}, {0.841131, 0.147341}, {0.154420, -0.297913}, {-0.796042, -0.454021}, {-1.231614, -1.187511}, {-1.109815, -0.141912}, {-0.566546, -0.288210}, {-0.661025, 0.127627}, {-1.017198, -1.001861}, {1.186309, 0.060379}, {-0.220627, 1.019218}, {-1.293678, -0.087054}, {-0.025609, 0.418478}, {0.771157, -0.681107}, {0.539560, 0.233353}, {-0.378370, 0.264538}, {1.893478, -0.101454}, {0.248258, -0.000550}, {-0.031156, -0.785691}, {1.781812, -1.292306}, {1.084657, 0.507894}, {-0.699208, 0.885340}, {1.285794, -0.619386}, {0.955586, -0.121447}, {-0.914452, -1.178647}, {-0.242399, -0.427685}, {-0.000717, 0.064139}, {0.574391, -0.693162}, {0.485580, -0.614569}, {-0.408661, -0.616323}, {-0.464543, 0.219753}, {0.765718, 0.874867}, {1.166937, -0.037645}, {-0.387840, 0.839810}, {-0.522687, 1.260869}, {0.079230, 0.752776}, {-1.317984, 1.303184}, {1.280048, 0.412472}, {1.609177, -1.354228}, {1.037420, 0.014540}, {0.221589, 0.058322}, {-0.629552, 0.832290}, {-1.314747, 0.685569}, {0.279436, -0.743734}, {-1.036796, 0.905691}, {0.495922, 0.253242}, {-0.916021, 0.154075}, {0.864485, 0.140135}, {-0.350216, -0.107206}, {-0.536267, 0.213086}, {1.398571, -0.305908}, {-1.517443, -0.348266}, {0.316594, 0.475011}, {-0.682424, 0.439457}, {-0.443305, 1.044724}, {-0.515239, -0.514528}, {-1.187287, 0.148757}, {0.286934, -0.102590}, {0.258621, -0.932940}, {1.392701, -0.258996}, {-0.247044, 0.662986}, {-0.039077, -0.511042}, {0.844728, -0.217617}, {0.655759, -0.440128}, {-0.413628, -0.925661}, {-0.488104, -1.044892}, {-0.543050, 0.155919}, {0.817307, 0.193785}, {0.341966, 0.009039}, {0.574199, 0.718193}, {-0.179957, -0.492905}, {0.487152, 0.524160}, {0.329158, -0.281555}, {-0.816659, -1.487422}, {0.535622, 0.409912}, {0.252481, -0.624546}, {-0.108432, -0.823732}, {0.302554, -1.011194}, {-0.425776, -1.472152}, {-0.398910, -0.198658}, {-0.068758, -1.227234}, {0.126371, -0.758421}, {0.343071, -0.216133}, {0.001535, 1.505001}, {0.112153, 0.738745}, {-1.513525, -1.478555}, {0.939067, 1.193568}, {0.382158, -0.305531}, {-0.777582, -1.155642}, {-0.672354, -0.312022}, {-0.374348, -1.352798}, {-0.418581, 0.634617}, {0.217850, -0.116165}, {0.432181, 0.426225}, {-0.889372, 0.893485}, {0.855687, -0.582910}, {-0.438450, -0.263930}, {-0.466874, -0.869459}, {0.040757, -0.535451}, {-0.140064, 0.789127}, {-0.027951, 0.105940}, {-0.437942, -0.211395}, {-0.040889, -0.017258}, {0.338753, 0.833301}, {0.111661, -0.175934}, {0.984011, 0.077959}, {-0.244420, 0.211986}, {-1.269522, 0.063911}, {0.409668, -0.303990}, {0.462926, 1.021879}, {0.011614, -0.284044}, {1.020808, 0.476647}, {0.196290, 0.617474}, {-1.098523, 0.371501}, {0.161323, -0.313071}, {-0.002902, 0.397897}, {-0.356512, 0.045680}, {0.279592, -0.533235}, {-0.475045, 0.692805}, {-0.089288, -0.703191}, {-0.405232, -0.892280}, {1.186783, 0.798136}, {-1.149640, -0.304031}, {-0.243771, -0.696568}, {-1.109856, 0.231693}, {0.587465, -0.480350}, {0.184300, 0.622183}, {0.153163, 0.512540}, {1.675888, 0.477305}, {0.698217, 0.670234}, {0.860644, 1.171471}, {-0.330617, 0.580491}, {-0.058262, -0.788790}, {-0.358326, -0.426058}, {0.905134, -0.409635}, {-0.008586, 0.990271}, {0.929488, -0.596337}, {-1.358305, 0.391919}, {0.902404, 0.342821}, {-0.063962, 0.618381}, {-0.053813, 0.301008}, {0.297584, -0.666505}, {0.556545, 0.163475}, {-0.105724, 0.005318}, {0.756775, 0.828292}, {-0.274629, -0.880320}, {-0.476757, -1.149811}, {1.127103, -0.294822}, {-1.437952, 0.298334}, {0.907496, 0.739951}, {0.482075, 0.004954}, {0.157887, -0.816916}, {-1.104784, 0.063870}, {-0.724938, -0.327697}, {-0.487298, 0.975783}, {-0.065203, 0.869972}, {-0.211487, -0.462389}, {1.094010, 0.177366}, {0.291395, -1.629667}, {0.319282, 0.785872}, {1.229602, 0.954910}, {-0.342436, -0.978418}, {0.352808, -0.930560}, {0.347757, -0.981736}, {0.298532, -0.077863}, {-0.714535, -0.393789}, {-0.333766, -0.139255}, {-0.418941, 0.359123}, {-0.645184, 0.861929}, {-0.722475, 0.301444}, {-0.583318, 1.352369}, {-0.712937, 0.243635}, {0.440878, -0.827122}, {0.327224, -0.062067}, {0.186287, 1.258463}, {-0.729241, 0.868902}, {0.541857, -0.200516}, {1.156841, -0.049354}, {1.070085, -0.139319}, {0.275765, 0.779653}, {0.355802, -0.444176}, {-0.215164, 1.591130}, {0.410285, -0.761158}, {-0.921834, -0.002490}, {-0.552404, -0.660768}, {0.405438, 0.139289}, {-0.275428, -0.582028}, {0.727740, -0.766058}, {-0.306953, -0.280078}, {0.816312, -0.261072}, {-0.199058, 0.147132}, {-0.360431, 1.125081}, {1.191538, -0.047433}, {0.305817, -0.633319}, {-0.494003, 0.488029}, {0.212671, 0.098168}, {0.210869, -0.461609}, {-0.134279, 0.437562}, {0.343639, -0.292114}, {-0.041375, -0.808615}, {-1.049076, 0.685913}, {-0.665760, -1.010501}, {-0.316509, -0.003953}, {0.009980, 0.599501}, {0.638152, -0.300940}, {-1.337720, -1.392983}, {-0.275772, 0.226258}, {-0.550300, 0.251820}, {-0.584194, 0.093470}, {0.610120, 1.230993}, {-0.976958, 0.361009}, {-0.875544, 1.373339}, {0.287035, -0.431066}, {-0.467716, 0.616202}, {-0.521935, -1.111703}, {-0.098289, -0.170971}, {-0.189521, -0.430798}, {0.994687, -0.127269}, {0.197679, 0.364513}, {-0.553761, -1.362114}, {-1.599143, 0.283164}, {0.343200, 0.241993}, {0.950041, 0.135606}, {-0.496251, 0.947582}, {0.112208, -0.474788}, {-0.043567, -0.201243}, {-0.152120, 0.819050}, {-0.698148, -0.987049}, {0.472844, 0.167428}, {0.805574, 0.137483}, {0.993595, 0.361435}, {-0.755927, 0.329879}, {-0.477493, 0.425378}, {0.513390, 0.862967}, {-0.370640, -1.203726}, {0.303774, 0.888996}, {-0.531538, -0.061148}, {0.292513, 1.123151}, {-1.375406, 0.912479}, {0.874095, 0.312105}, {0.285703, 1.070449}, {-0.327598, 0.204123}, {0.514364, -0.591838}, {0.187292, 0.151885}, {-0.305341, 0.797145}, {0.512371, -0.430627}, {-0.263249, 1.117044}, {1.457063, 0.655659}, {0.400834, -0.687060}, {-0.534341, 0.199095}, {-0.670479, -0.049629}, {0.170424, 0.355076}, {-0.089197, -0.199899}, {-0.516640, -0.098609}, {-1.415132, -0.986232}, {-0.543245, -0.612453}, {1.700407, -0.111663}, {-0.333996, 0.941663}, {-0.558882, 0.628745}, {-0.189070, -0.269156}, {-0.092103, 0.289742}, {1.721874, -0.613049}, {0.400596, -1.689893}, {0.029330, 0.780505}, {0.702801, -1.886583}, {0.527904, 1.344383}, {-1.532567, -0.282722}, {-0.187656, 1.032522}, {-0.563567, 0.352977}, {1.552724, 1.036609}, {-0.362367, 0.884433}, {0.907224, -0.245049}, {0.968850, 0.022296}, {0.991932, -0.528220}, {-0.574841, -0.667893}, {-1.285195, -0.410222}, {0.961984, 0.592525}, {0.851798, -0.802477}, {-1.049946, -0.207182}, {0.797470, -0.161487}, {-0.749814, 0.644751}, {1.147914, 0.191578}, {1.094925, -0.009702}, {-0.016473, -0.192798}, {-0.479182, -0.608849}, {-0.521973, 0.822191}, {-0.532269, 0.303592}, {1.239154, 0.041944}, {0.389138, 0.091142}, {-0.663000, 0.328936}, {0.342085, -0.836875}, {-1.076007, -0.660702}, {-0.134030, 0.851663}, {0.024222, 0.084575}, {-1.902667, -0.772045}, {-0.584827, -0.179968}, {0.072428, 0.119199}, {-0.342968, 0.700217}, {-0.467256, -0.216460}, {0.245841, 0.459667}, {-0.569716, -0.968906}, {-0.425136, -0.329992}, {-0.290409, 0.687952}, {0.225955, 0.172615}, {1.003682, -0.248519}, {-0.114798, 1.216756}, {1.860231, -0.053088}, {0.106746, -0.618765}, {0.288442, -0.650337}, {0.718256, -0.694432}, {-0.331457, -0.719543}, {1.068076, 0.148336}, {-0.096353, -0.028651}, {0.897863, -0.741848}, {0.412489, 1.038703}, {-0.114692, -0.055749}, {0.139043, -0.040275}, {0.638080, -0.220795}, {-0.633578, 1.226884}, {-0.251365, 1.662993}, {0.225500, 0.307234}, {-0.602385, -1.321478}, {0.034489, -0.600173}, {-0.758390, -0.563067}, {-0.284530, -0.408226}, {-0.579724, 1.090416}, {0.564264, -0.546693}, {1.299442, -0.259779}, {0.540747, 0.139655}, {0.950786, 0.132223}, {-0.293267, -0.682357}, {-0.926701, 1.267867}, {-0.861209, -0.469813}, {0.266995, 0.266466}, {-0.336500, 0.231023}, {-0.345643, 0.297993}, {-1.065829, -0.717767}, {0.337612, -0.915230}, {0.091474, 0.162675}, {0.308361, -0.094296}, {0.577293, -1.348639}, {-0.284413, 0.283653}, {0.357282, 0.494051}, {1.245152, 0.281545}, {-1.431170, -0.390320}, {0.181289, 0.594357}, {0.532038, -1.703506}, {-0.080299, -0.145390}, {0.706124, 0.883663}, {-0.383556, -0.058734}, {-0.778841, -0.343133}, {0.466969, -0.233412}, {0.438538, -0.476148}, {0.583980, -0.010636}, {-0.877575, 0.042320}, {0.360100, -1.169871}, {-0.088032, -0.398826}, {-0.476665, -0.290729}, {0.290340, 0.526910}, {0.348399, -0.419803}, {0.846750, 0.362483}, {1.325840, 0.694740}, {-0.345673, -0.490818}, {-0.280731, -0.855840}, {1.003652, 0.167563}, {0.046835, 0.199770}, {-0.137995, 0.109839}, {1.236355, 0.414718}, {0.076375, 0.187022}, {0.540177, 1.332342}, {-0.536548, 0.170836}, {-0.538823, -0.787885}, {-0.030721, -0.152529}, {-0.197468, -0.453547}, {-0.860949, -0.359616}, {-0.076259, -0.168284}, {0.128913, 0.374510}, {0.491855, 0.338274}, {0.841089, 0.539245}, {-0.918791, -0.642914}, {0.722143, 0.109400}, {-1.613346, 0.192994}, {0.138179, 0.384452}, {0.217286, 0.484391}, {-0.617670, 0.552131}, {-0.314759, 1.396384}, {0.680449, 0.920245}, {-0.776923, 0.591054}, {0.357123, 0.348420}, {-0.552000, -0.959852}, {-0.457786, -0.012405}, {0.194398, 0.372935}, {-1.158776, -0.739099}, {-0.119856, 0.695673}, {-1.044994, 0.542655}, {-0.057589, 0.663487}, {-0.637497, 1.383641}, {0.841195, 1.016650}, {-0.227216, 0.350548}, {-0.666675, 0.297665}, {-0.837852, 0.428705}, {-1.515275, -0.555662}, {-0.151261, -0.712636}, {-0.221931, -0.513521}, {-1.443995, 0.844288}, {0.313953, 0.097811}, {-0.204681, -0.430877}, {0.980967, -0.423177}, {0.232925, -0.543011}, {0.306555, -0.317551}, {-1.105006, -0.200727}, {-0.491818, -0.043239}, {-0.024608, -0.174225}, {0.033530, 2.148918}, {-0.623382, -0.443777}, {-1.073524, 0.750841}, {-0.120307, 1.009256}, {0.383676, -0.259419}, {-0.313467, -1.256964}, {-0.422919, -0.188656}, {1.284099, 0.681505}, {0.223126, -0.031646}, {0.306322, -0.620767}, {0.442285, 0.769126}, {-0.724718, -0.051262}, {0.239249, -0.361381}, {0.330321, -0.151744}, {-0.732583, 0.357697}, {1.352363, 0.469735}, {-0.520244, -1.172771}, {-0.830415, 0.617391}, {-0.345373, -0.338332}, {-0.195310, 1.495399}, {-0.303452, -0.330434}, {-0.858515, 0.736562}, {-0.299252, 0.080389}, {1.345959, -0.872637}, {0.074448, -0.237625}, {1.059866, -0.609576}, {-0.575313, 0.866044}, {-0.077763, 1.006470}, {-1.001055, 0.181480}, {0.602403, -0.828705}, {0.704641, -0.635900}, {0.125989, 0.812281}, {-0.020565, -0.376771}, {0.086654, 0.473210}, {-0.807156, -0.842660}, {1.800373, 0.552391}, {-0.130840, 0.401600}, {1.213215, 0.407588}, {0.032867, 0.902099}, {-0.647827, -0.660410}, {0.139245, 0.572428}, {0.503025, -0.013337}, {-0.345741, -0.790109}, {1.992791, -0.453862}, {-1.025935, 0.141881}, {1.284579, -0.440883}, {-0.079254, 0.984268}, {0.774126, 0.771004}, {0.446898, 0.009177}, {-0.145382, 0.156029}, {0.640419, 1.548422}, {0.417477, -0.537218}, {-0.166369, -1.168204}, {-1.576589, -0.006857}, {-0.568257, 0.799393}, {-0.097194, 0.950091}, {0.517471, -1.411220}, {0.238796, -0.516115}, {0.520339, 0.649062}, {0.066756, -0.377378}, {-0.337598, 0.506655}, {0.082550, -0.452063}, {0.348994, 0.931952}, {-0.986407, -0.704322}, {-0.127239, 0.598529}, {0.326580, -0.100612}, {-0.479889, -0.405277}, {-1.261540, 0.389325}, {-0.326830, -0.479964}, {0.362882, 0.916080}, {0.351699, 0.236263}, {0.339159, -0.569330}, {0.193999, 0.722854}, {-0.383134, -0.307248}, {0.983325, -0.083201}, {0.134546, 1.185024}, {0.453730, 0.055284}, {0.699766, -0.295923}, {-1.300227, 2.106761}, {1.649077, 0.568909}, {1.754100, -0.494836}, {1.533405, 0.734520}, {1.171021, 0.482031}, {1.401353, 0.104870}, {0.365542, -1.022673}, {-0.297745, 0.086303}, {0.811492, 0.413641}, {-0.006258, 0.257878}, {0.025602, 0.267244}, {0.302591, 0.729528}, {1.143575, 0.702035}, {0.878501, 0.429343}, {-0.568291, 1.009797}, {0.475038, -0.837439}, {0.463692, 0.574354}, {-0.262200, -0.340073}, {-0.092665, 0.807504}, {0.502834, -0.559747}, {-0.405528, 0.310426}, {0.892265, 0.595287}, {1.606894, -1.747076}, {-0.552482, 0.153944}, {-1.140951, 0.420524}, {-0.002796, 0.745166}, {1.856330, -0.471658}, {-0.278099, 0.079846}, {-0.859602, 0.915874}, {-0.131552, -0.316820}, {-0.384475, -0.141175}, {1.036717, -0.801126}, {-0.243963, -0.971380}, {-0.096054, 0.106090}, {-1.006589, 0.633260}, {1.195284, 0.049783}, {1.377535, 0.570432}, {0.727388, 0.842091}, {-0.591521, -0.187649}, {0.435684, -0.688750}, {-0.294460, 0.716584}, {1.215540, -0.474825}, {-0.696852, -1.070607}, {-0.396589, 0.554698}, {0.089609, -0.423692}, {-1.348885, -0.346625}, {0.203519, 0.440114}, {0.743717, -0.894146}, {-0.159810, -0.334923}, {0.682591, -0.546565}, {-0.712575, 0.476973}, {-1.104661, -0.456355}, {-0.479537, 0.251457}, {-1.174705, -0.052909}, {-0.352342, 0.708805}, {0.131579, -0.078383}, {0.418601, 0.558629}, {-0.035404, -0.244368}, {0.264606, -1.039640}, {-0.949351, 0.500103}, {0.788048, 0.890085}, {-0.089676, 0.665759}, {-0.926300, 0.785008}, {0.511916, 0.407786}, {0.421369, -0.501708}, {0.673039, -0.920122}, {-1.286538, -0.354717}, {0.248195, 0.038161}, {-0.205990, 1.080045}, {-0.217009, 0.702000}, {-0.276423, 0.807365}, {-0.426657, 0.829259}, {1.389469, -0.172937}, {0.242023, 0.337750}, {0.111603, -1.317547}, {-0.474308, -0.557545}, {-0.943573, 0.433703}, {0.637707, -0.325782}, {0.288693, 0.683452}, {0.404386, 0.934451}, {0.280019, 0.234267}, {0.235777, -0.732291}, {0.679205, -0.897298}, {-0.633602, 1.471122}, {0.135238, 0.129816}, {-0.615491, -0.198805}, {-0.064142, -0.264310}, {-0.386053, -0.523291}, {0.905432, -0.812653}, {-0.251535, 0.119324}, {0.544902, -1.468042}, {0.940112, -1.020098}, {0.261122, 0.539496}, {-1.028811, -1.062924}, {-0.961214, 1.210793}, {0.440965, -0.383521}, {-0.471681, -0.646258}, {-0.640999, 0.630283}, {-0.593379, 0.907085}, {-0.559648, -0.906520}, {0.131252, 0.190629}, {-1.155937, 0.469075}, {-0.774295, 0.491694}, {-0.391053, 0.660751}, {0.248040, 0.038323}, {-0.603211, 0.265228}, {-1.222478, -0.223261}, {1.022423, 0.355851}, {0.285110, 0.398718}, {1.496522, -0.815689}, {0.651223, -0.214058}, {1.483784, -0.345858}, {0.338015, -0.489712}, {-0.046722, -0.437334}, {0.159075, -1.718044}, {-0.190740, -0.099638}, {0.061885, 0.049811}, {0.679428, -0.232491}, {0.435870, -0.001996}, {1.027309, -0.975858}, {-0.014691, -0.487557}, {-0.295080, 0.752236}, {-0.274321, 0.469497}, {-0.517557, 1.067698}, {0.064585, 0.127431}, {-1.046478, -0.199519}, {0.243379, 0.939476}, {0.061894, -0.918354}, {0.182123, 0.572483}, {0.530045, 0.686889}, {-0.039721, -0.301593}, {1.310340, -1.022175}, {0.167251, -0.342483}, {-0.873160, 0.739288}, {1.084948, -1.081913}, {0.987790, -0.737875}, {1.115765, 0.832754}, {0.710369, 0.565371}, {1.222391, -0.328709}, {0.981649, -0.055245}, {-0.777509, -1.846205}, {0.368035, 0.488807}, {-1.365216, 0.569074}, {1.124465, 0.671338}, {0.992709, 0.751788}, {-0.470874, 0.278596}, {0.636061, -0.169493}, {0.359905, 0.085555}, {0.222456, 0.382605}, {-1.173254, 0.201384}, {0.279053, -1.466444}, {-0.551690, 1.345065}, {-0.510876, -0.198530}, {0.495703, -0.623988}, {0.084364, 0.323890}, {-1.999895, -0.270420}, {-0.076837, 1.042714}, {-0.752037, 0.184538}, {0.788181, -0.585590}, {-0.331946, 0.352529}, {-0.573372, 0.687863}, {0.138512, -0.567696}, {-0.295121, -0.726297}, {-0.543169, 0.137349}, {-1.715495, -1.038332}, {-0.792709, 1.829956}, {-0.512584, -0.042359}, {0.314335, 0.342696}, {0.301736, 0.685331}, {0.538495, 1.567646}, {0.619975, 0.078173}, {-0.498993, -0.523364}, {-0.772238, 0.214198}, {-0.098512, -0.182276}, {0.454210, -0.534136}, {-1.022817, -1.137971}, {0.073646, 1.100400}, {-1.024269, -1.297541}, {0.102126, -0.936219}, {-0.656945, 0.838675}, {-0.883419, -0.256136}, {-0.187742, -0.020857}, {0.277194, -0.076560}, {0.664217, -0.799587}, {-0.150595, -0.678707}, {1.282330, -0.650995}, {0.230992, -0.615056}, {1.240003, -0.672353}, {-0.277618, -0.291440}, {0.819647, 0.226890}, {0.150397, -0.913147}, {-0.416220, 0.946438}, {-0.076384, 1.536212}, {1.392241, -1.502352}, {1.326505, -0.499578}, {-0.091994, -0.153227}, {-0.961196, 0.689524}, {0.781255, -0.480439}, {0.928013, 0.550042}, {-0.232140, 0.627398}, {-0.954812, -0.337019}, {0.310334, 1.994616}, {0.437513, -0.248398}, {0.219854, 0.604570}, {-0.986371, 0.508113}, {0.338285, -1.014958}, {0.109864, 0.456381}, {0.279878, -0.662212}, {0.837898, 0.324217}, {0.556637, 0.129244}, {0.274982, 0.417030}, {-0.610253, -0.031767}, {0.087246, -0.527219}, {-0.003924, -0.518842}, {-1.162910, 0.023406}, {-0.748007, -0.086280}, {-1.473481, 0.519776}, {0.227004, -0.462845}, {-1.082161, 0.747261}, {-0.506904, 0.368379}, {-0.400566, -0.884841}, {0.601519, 0.983189}, {-0.166960, 0.343570}, {-1.095310, 0.099506}, {1.360160, 0.674208}, {-0.147483, 0.107427}, {0.281204, -0.417472}, {0.661175, -0.414379}, {-1.448734, 1.031802}, {-0.755926, 0.045997}, {-0.411609, 0.573619}, {0.557744, 0.825309}, {-0.849476, -0.220213}, {0.491201, 0.095585}, {0.495856, -0.624079}, {0.271922, -0.075840}, {-1.176081, 0.131668}, {0.199308, 0.838635}, {1.157825, -0.261944}, {0.499849, 0.118281}, {0.977981, 0.048878}, {1.199673, -0.964225}, {0.858596, -0.581090}, {-0.452553, -0.218746}, {0.299985, 0.111416}, {0.658092, 0.162666}, {-1.038127, -1.509123}, {-0.476839, -0.238866}, {-0.825964, -0.083540}, {-0.311650, 0.915382}, {-0.346397, 0.095597}, {1.291551, -0.057599}, {-0.180325, 1.013067}, {-0.377176, -0.025424}, {-0.170279, -0.752118}, {-1.045206, -0.436628}, {1.077868, 0.598796}, {-1.083213, -1.758250}, {-0.312935, 0.179621}, {0.255198, -0.202909}, {0.713268, -1.475905}, {-0.464259, 0.230728}, {-0.089435, 0.405254}, {0.475353, -0.424938}, {-0.867856, -0.104100}, {-0.636819, -0.246586}, {-0.172386, 0.532258}, {-0.100517, -0.057939}, {-0.090309, -0.013900}, {-0.012730, -0.418781}, {-0.323899, -0.112924}, {0.548806, -0.078950}, {0.011270, -0.804839}, {-1.476368, 0.179108}, {0.820229, -0.630583}, {1.295267, -0.443406}, {0.544548, 0.943069}, {1.785252, -0.261154}, {2.075199, -0.129452}, {0.294332, 0.738836}, {-0.488866, 1.007274}, {-0.503534, -1.208814}, {-0.422143, 0.460624}, {-0.695711, 1.140055}, {-0.298145, 0.028151}, {-0.530038, 0.012494}, {1.063207, 0.272223}, {0.307094, -0.925566}, {-0.396384, -0.079196}, {-0.264129, -0.690633}, {0.342815, 1.176028}, {0.208513, 0.031339}, {1.092949, -1.279019}, {-0.182367, 1.458113}, {0.459643, 0.537035}, {-1.422746, -0.199628}, {0.120842, 0.431555}, {0.120487, 0.860370}, {0.880075, -1.318327}, {-0.918494, -0.508262}, {1.039805, -0.397278}, {-1.116948, -0.764242}, {-0.648588, 0.086831}, {-0.310475, 0.435516}, {0.627558, -0.763336}, {-0.357348, 1.121826}, {-0.261118, -0.210469}, {0.566079, 0.338734}, {0.732632, -0.864559}, {-0.031237, -0.416613}, {-0.486114, 0.440274}, {1.080200, 0.451333}, {0.411008, -0.914379}, {1.630417, -0.573224}, {1.789973, -0.128818}, {-1.282816, -0.068424}, {0.649218, -0.044922}, {0.219130, 0.525529}, {-0.370677, -0.053050}, {1.003421, -0.883361}, {-0.342108, -0.405991}, {0.559990, 0.090486}, {-0.819193, 1.397662}, {-0.712352, 0.014975}, {0.372887, 0.809808}, {0.368211, 0.098352}, {0.107715, 0.035441}, {-1.024098, 0.171511}, {-1.378939, -0.282636}, {-0.515788, 0.376429}, {0.019939, 0.105386}, {-0.458813, -0.083868}, {-0.496787, 0.049241}, {0.463699, 0.772761}, {-0.261173, 1.395466}, {-0.700428, -0.454140}, {0.203633, 0.129327}, {0.688547, -0.064068}, {-0.286357, -0.615908}, {1.006754, -0.251008}, {0.233480, 0.634520}, {0.098067, -0.799585}, {0.531663, 1.047693}, {-0.357639, 0.643432}, {-0.454815, -1.314132}, {0.024120, 0.533402}, {-0.411249, -1.147575}, {-0.478917, 0.650582}, {0.527923, -0.220407}, {0.760079, -0.003595}, {-1.436180, 1.015680}, {0.226704, 0.663645}, {-0.045143, -0.061152}, {-0.302953, 0.503048}, {-1.017092, -0.028102}, {-0.437520, -0.181724}, {0.691820, 0.557386}, {0.481078, 0.854929}, {0.210535, -0.105821}, {0.309759, 1.545655}, {-0.118720, -0.106134}, {-0.491147, 0.073132}, {-0.315558, 1.304714}, {-0.069603, -0.566994}, {-1.420324, -0.302228}, {-0.001001, -0.159619}, {0.538514, -0.717943}, {-0.023256, 0.486612}, {0.961986, -0.094342}, {1.390177, 1.690547}, {0.060921, -0.573038}, {1.227780, -1.614966}, {0.860354, 0.141537}, {-0.673537, -0.182732}, {-0.394389, 0.486924}, {0.189958, -0.299760}, {-0.187816, 0.758961}, {0.930850, 0.838789}, {0.532089, 0.052800}, {1.183978, 0.043238}, {0.000885, 1.006165}, {0.652237, -0.033242}, {-0.062365, 0.853989}, {0.074019, 1.062932}, {0.548674, 1.299869}, {0.635525, 0.892433}, {1.040413, -0.904244}, {-0.637131, -1.220854}, {-0.178723, 0.705191}, {0.679517, -1.054694}, {0.050417, 0.463792}, {-0.432476, -0.705006}, {0.479097, -1.050954}, {0.759427, -0.851752}, {1.022693, -0.592958}, {-1.062087, 0.416080}, {0.240269, -0.546121}, {0.721674, 0.787447}, {0.390897, 0.893822}, {-1.344788, -0.366112}, {-0.388957, 1.529754}, {-0.410491, -0.551688}, {0.059600, 0.157555}, {0.589211, 0.635496}, {1.524161, -0.681505}, {0.382074, 0.694384}, {0.184238, -1.242472}, {-1.872358, 0.314061}, {0.197887, -0.051333}, {0.134921, 1.052766}, {0.262707, 0.571038}, {0.217454, 1.533922}, {-0.473612, 1.565367}, {-0.430548, -0.327960}, {2.456992, 0.326251}, {-0.249071, -1.096478}, {1.629764, 0.016947}, {-0.311299, -0.966789}, {-0.271977, 0.129707}, {0.570742, 0.441806}, {-0.663392, -0.189752}, {-0.657755, -0.378028}, {-0.289619, 0.178035}, {-1.547191, -1.379442}, {0.318863, 0.097885}, {-0.133141, -0.867632}, {1.709726, -0.325249}, {-0.859378, -1.097579}, {-0.824774, -1.066003}, {0.667650, -0.896375}, {0.771396, 0.193745}, {0.187997, 0.834902}, {0.264365, -0.077232}, {-0.205345, -0.363629}, {0.785119, 0.128526}, {-0.691053, -0.612586}, {0.013257, -0.052083}, {0.825087, 0.514926}, {-0.296533, 0.266757}, {0.172197, -1.001242}, {-0.096571, 0.384834}, {0.009580, -0.143642}, {-0.430595, 0.227296}, {0.246564, -0.054633}, {-0.094468, -0.110370}, {-0.692380, 0.378773}, {-0.199042, -1.555449}, {0.505427, 0.687997}, {0.449979, 0.039450}, {0.393759, -0.881240}, {1.174371, 0.587504}, {-0.022562, -0.094548}, {0.799280, -1.480472}, {0.041460, -1.331186}, {-0.092273, -0.056904}, {1.089637, 1.394368}, {0.377098, -0.286844}, {-1.518074, 0.303598}, {-0.424125, -0.919862}, {0.735314, 0.790515}, {-0.419136, -0.537595}, {-0.224393, -1.089326}, {-0.932735, 0.204017}, {-1.046173, -0.492433}, {0.530493, -0.892328}, {-1.605953, -0.056949}, {-0.082756, -0.072003}, {-0.273932, -0.025963}, {-0.800355, 0.314344}, {0.072312, 0.478394}, {0.398293, 0.285516}, {-0.548830, 0.122373}, {-0.168767, 0.843687}, {-0.270897, 1.661998}, {-1.170453, -0.201107}, {-0.475110, -0.145280}, {1.305465, -0.282810}, {-0.315642, 0.100244}, {-0.086178, 1.029969}, {0.615427, 0.779651}, {-0.207107, 0.112033}, {1.324170, -0.301879}, {0.970426, -0.300709}, {-0.051026, -1.504892}, {-0.710653, 0.471644}, {-0.246991, 0.815189}, {0.603725, 0.395888}, {0.287185, -0.903460}, {0.542505, -0.034145}, {0.491362, 0.846853}, {-0.795065, -0.413406}, {-0.094830, -1.353670}, {0.848408, -0.279441}, {0.423856, -0.773367}, {0.223410, -0.744911}, {-0.290439, 0.138562}, {0.179655, -0.293731}, {0.963360, 1.602055}, {-0.162586, -0.561803}, {0.690172, -0.162130}, {-0.056525, -0.217605}, {0.406531, -1.570055}, {-0.214027, 1.317937}, {-1.324464, 0.041843}, {0.524061, 0.463133}, {-0.308113, -0.660500}, {-0.045374, 0.866035}, {-1.375194, -0.346669}, {-0.241115, -1.057360}, {1.046871, 1.007542}, {-1.538573, -0.349429}, {-1.296515, 0.500255}, {-0.319061, 1.182597}, {0.822835, 1.088292}, {-0.242570, 0.808708}, {-0.741186, -0.287133}, {-0.043203, -0.170825}, {0.086436, 1.296764}, {0.039347, 0.444439}, {-0.452934, 0.019311}, {0.165106, 0.678114}, {0.077917, 0.386698}, {-0.827517, 0.531529}, {0.008533, 0.559169}, {0.779173, -1.106132}, {-0.141012, -1.305121}, {-0.017937, 0.457808}, {1.289752, 0.160765}, {0.540358, 1.399083}, {-0.512611, 0.568784}, {-0.648622, -0.300842}, {-0.293245, 1.682090}, {0.675206, 0.479373}, {-0.247437, 0.127139}, {0.385699, -1.137733}, {0.734392, 0.440471}, {-1.045057, -0.228324}, {0.556728, -0.598054}, {-0.283752, -0.097712}, {-0.555117, 0.220327}, {0.850535, 0.713509}, {-0.187237, -0.137412}, {-0.069355, -0.705473}, {0.514740, -0.842808}, {-0.680879, -0.366539}, {0.249006, -0.335864}, {-0.098391, 0.639156}, {0.171737, -0.709357}, {-0.443634, -0.636049}, {1.088524, 0.709373}, {1.223219, -0.602659}, {1.372139, -0.120711}, {0.934723, 0.998017}, {-0.627598, 0.214279}, {1.030711, -0.173404}, {0.136914, 0.142240}, {-0.703009, -1.393580}, {0.296772, -0.271707}, {-0.650348, 0.475265}, {0.681210, -0.614719}, {-0.063976, 0.173702}, {0.927263, -0.034156}, {0.436673, 0.433596}, {-0.011766, 0.233163}, {-0.461304, -2.176818}, {-0.555505, -0.395928}, {-0.121968, -0.515902}, {-0.078036, -0.661705}, {0.922070, -1.399317}, {0.438197, -0.410533}, {0.889117, 2.238643}, {-0.109874, -1.599532}, {-0.122962, -0.682850}, {-1.305958, -0.154182}, {0.431402, 1.018367}, {-0.143377, -0.893054}, {0.560765, -0.446487}, {0.753484, -0.241121}, {-0.967923, 0.257292}, {-0.119665, -1.032914}, {-0.991815, 0.479675}, {-0.629275, 0.847630}, {0.721789, 0.636400}, {0.977668, -0.039434}, {0.187379, -0.387067}, {-0.314152, 0.141318}, {-0.817531, 0.628117}, {-0.923341, -0.167044}, {-0.155868, -0.084994}, {-0.686082, -0.206933}, {0.021763, -1.069100}, {0.091063, -0.184178}, {-0.307996, -0.942727}, {0.036592, 0.643156}, {-0.299491, 1.314708}, {-0.149338, -0.041127}, {-0.365165, 0.727747}, {-0.591302, -0.009641}, {-0.511106, 0.790851}, {-0.008839, -0.298441}, {0.450988, -0.963904}, {-0.043228, -0.140045}, {0.622787, -0.480381}, {1.330465, -0.430632}, {0.237069, 0.372814}, {0.013612, 0.660065}, {-0.005838, 0.638106}, {0.099138, 0.487362}, {-0.462270, 0.760901}, {-0.039276, -0.367186}, {-0.849389, 0.963066}, {0.260960, -0.760724}, {-0.017266, -0.504135}, {0.468009, 0.090059}, {1.015524, 0.512994}, {0.320663, -0.586802}, {1.320691, -0.542734}, {-0.662519, -0.014055}, {-0.297684, -0.044484}, {-0.799770, -0.356844}, {-0.382747, 0.640791}, {-0.656885, 0.305997}, {0.114703, -0.966648}, {0.136089, -0.769987}, {0.032134, -0.482388}, {0.164098, -0.131159}, {0.378416, 0.078075}, {-0.221686, 1.091587}, {-0.103693, 0.709294}, {-0.345252, -0.305954}, {1.203122, -0.260458}, {0.793078, -1.844025}, {0.052521, 0.691232}, {0.327413, 1.180506}, {0.000942, -0.045549}, {0.500746, -0.800283}, {-0.118962, -0.269397}, {0.302711, -0.955327}, {-0.451537, -0.663640}, {-0.783589, -0.143810}, {0.777130, 0.550576}, {-1.296793, -0.096188}, {0.156387, 1.318119}, {-0.441793, 0.789109}, {0.098510, -0.721234}, {1.144887, 0.174284}, {-0.628743, 1.542204}, {-0.746915, -1.002669}, {0.640209, 1.564354}, {-0.042800, 0.694716}, {-1.546423, 0.892586}, {-0.302209, 1.431112}, {-0.691142, 0.333508}, {-0.429388, -1.099203}, {1.047799, -0.141377}, {-0.835629, -0.419429}, {-0.395704, 0.291504}, {1.169077, -0.006899}, {-0.000406, -1.023570}, {-0.005843, 0.363119}, {-0.830499, -0.161589}, {-0.049930, 0.150634}, {0.110034, 0.489642}, {0.229673, -0.090654}, {0.628243, 1.472188}, {-0.426285, -0.014405}, {0.704156, -0.031663}, {1.408712, -0.223024}, {-0.310124, 0.322176}, {1.341750, -0.011950}, {-0.475503, -0.217211}, {-0.322988, 0.045987}, {-0.293056, 0.205099}, {-0.120599, -0.231858}, {-0.145756, -1.419736}, {0.586338, 0.525593}, {-0.107314, 0.053626}, {-0.592978, -0.037145}, {-1.158385, -1.045554}, {0.119389, 0.728346}, {1.574950, -0.490199}, {-0.282055, -0.229629}, {0.168220, 0.641829}, {0.215137, 0.436435}, {-1.469822, -1.022768}, {0.122827, -0.355324}, {0.340368, 0.460545}, {-0.133655, -0.013018}, {-0.214706, -0.229367}, {1.137280, -0.600999}, {-0.774999, -1.178053}, {1.518943, 1.058591}, {0.407081, -0.502228}, {-1.241990, 0.417551}, {0.014212, 0.382705}, {1.079171, 0.037512}, {1.449532, -0.035599}, {-0.342860, 0.119856}, {-0.203089, 1.758978}, {0.892215, -0.343795}, {-0.742509, -0.990385}, {0.467033, -0.033716}, {0.478131, -0.642241}, {1.344997, -0.160438}, {-0.420145, 0.331979}, {-0.652954, 0.592996}, {-0.495241, 0.174791}, {0.187080, -0.257417}, {-0.382043, -0.147167}, {0.529967, 0.430835}, {0.479963, -0.054450}, {-0.878576, 0.171068}, {0.128695, -0.437802}, {-0.715424, -0.054429}, {-0.735767, 1.208460}, {0.913745, 0.145152}, {-0.901428, 0.263530}, {-0.108728, 1.211707}, {0.869162, 1.245237}, {1.346936, 0.981211}, {0.064847, -0.378967}, {0.076235, 1.113281}, {-0.158075, -0.350806}, {-0.830559, 0.718345}, {0.165189, 0.659124}, {0.566927, -0.057358}, {-0.256642, 0.501692}, {-0.496891, 0.558987}, {0.314791, 1.531419}, {-0.105210, -0.967250}, {0.340576, 0.711382}, {-1.141627, -1.066447}, {-0.110436, -0.387441}, {0.079143, -0.720602}, {0.166833, 0.239506}, {-0.442205, -0.338438}, {0.483370, 0.156757}, {0.693114, 0.276451}, {-0.183391, 0.020851}, {0.204206, -0.677262}, {0.689076, 0.309579}, {-0.481239, -0.584827}, {-0.933420, -0.491870}, {-0.520784, -0.281925}, {1.692787, -0.862935}, {0.974295, -0.065542}, {0.013460, -0.253194}, {-0.484361, 0.487765}, {1.102883, -0.797744}, {1.017178, -0.706175}, {-0.306430, 0.465774}, {0.652186, 0.377622}, {-0.509788, -0.117614}, {-0.182832, 0.281499}, {-0.243806, -0.608884}, {-0.812188, 1.031517}, {-0.318785, -1.096473}, {-0.753378, 0.448524}, {0.190946, 0.805434}, {1.315679, 0.386423}, {0.517649, -0.029638}, {0.005505, 0.303030}, {0.245582, -0.056264}, {-1.003810, 0.352134}, {0.145024, 0.704185}, {0.462317, 0.143256}, {0.942234, 0.897553}, {-0.215521, -0.331736}, {-0.486441, -0.282984}, {-0.132013, -0.653772}, {0.703166, -0.978950}, {1.265242, -0.730936}, {0.541313, -1.092878}, {-0.426889, -0.709462}, {0.358945, -0.092949}, {1.287703, -0.466656}, {-0.029177, -0.528144}, {-1.262047, -0.156719}, {1.119061, -0.140010}, {0.744231, 1.364940}, {-1.477712, 0.677879}, {1.394701, 0.568561}, {-0.709296, 1.089103}, {-1.084068, 1.032923}, {0.692925, -1.436255}, {-0.583488, 0.006146}, {-0.096832, 0.481081}, {0.065004, -0.486029}, {0.870241, -0.777612}, {-0.485691, 1.334895}, {1.654056, -0.558402}, {-0.123607, -0.634878}, {-0.327436, -0.483555}, {-0.308836, 0.238801}, {0.997275, 0.372461}, {1.298622, -0.350636}, {0.054553, -0.251766}, {-0.663848, 0.096227}, {-0.414783, -0.476282}, {0.017994, -0.596242}, {0.073553, 0.224045}, {-0.017235, -0.787626}, {-0.513162, -0.883175}, {0.296796, -0.667669}, {0.609890, 0.396096}, {-0.429109, 0.719473}, {1.004360, -0.399219}, {-0.729476, -0.121898}, {0.495306, 0.262692}, {-0.113961, -0.354866}, {-0.397658, 0.111103}, {0.772712, 0.034410}, {1.351640, -0.201355}, {-0.632191, -0.828298}, {-1.263127, -0.771645}, {0.439372, -1.090465}, {0.360964, -0.050497}, {0.347296, -0.241183}, {0.779991, 1.223795}, {-0.304319, 0.532105}, {0.438098, 0.404655}, {-0.851470, -0.274463}, {-0.456542, 0.692725}, {-0.246019, 0.385583}, {0.191244, 0.619761}, {-1.086195, 0.003533}, {0.904869, 0.542475}, {0.998638, 0.170402}, {-0.706807, -0.315809}, {0.166527, -0.172701}, {-1.000581, -0.025441}, {-0.835619, 1.640966}, {0.465558, -0.261938}, {-0.312499, 1.039515}, {0.963936, 0.325342}, {-0.691905, -1.644457}, {0.352920, -1.072839}, {0.628098, 0.001310}, {0.081833, 0.343911}, {0.014168, 0.756927}, {-0.973338, -0.558293}, {-0.871959, -0.104032}, {-0.002001, -0.006319}, {1.286904, -0.201689}, {0.244030, 1.578598}, {-0.616804, 0.274645}, {-0.318141, 0.335599}, {-0.697360, -0.095197}, {0.011818, -0.863732}, {-0.138582, -0.019176}, {-0.725250, -0.217377}, {-0.875897, 0.417330}, {-0.319059, 0.539565}, {-0.482789, -0.312334}, {0.409422, 1.158154}, {-0.015202, 0.405469}, {0.566499, -0.239419}, {-0.048926, -0.333125}, {0.123632, -0.575811}, {-0.737014, 1.050065}, {-0.498796, -0.462582}, {1.103683, -1.514551}, {-0.494598, -0.326410}, {-0.197300, 0.386700}, {0.062856, 0.241676}, {1.540076, 0.134030}, {0.167199, 0.718623}, {1.460202, 0.168436}, {-0.151115, 1.190752}, {-1.605562, -0.849851}, {-0.182316, 0.843664}, {0.063442, -0.632068}, {0.600120, -1.467388}, {-0.214057, 0.008288}, {-0.591725, 0.015858}, {0.426621, -0.467059}, {0.308007, -0.521593}, {0.187186, 0.432812}, {0.771873, -0.797405}, {-1.666113, -0.612908}, {0.662923, -0.640449}, {0.418502, 0.839952}, {0.567399, 1.411843}, {1.409143, 0.943162}, {0.272974, 0.334327}, {-0.194930, -0.042914}, {-0.656420, 0.632150}, {-1.041831, 0.166806}, {0.747201, 0.813639}, {0.281704, 0.944374}, {1.358369, 0.491507}, {0.367469, -0.875805}, {-0.422513, 0.169091}, {1.285167, 0.685694}, {0.330428, -0.193560}, {0.299608, 0.675410}, {-0.270314, -0.081031}, {0.064389, 1.581159}, {-0.222432, -0.019499}, {0.426707, 0.157563}, {0.722662, -0.647789}, {0.242988, 0.714443}, {0.748898, -0.308079}, {-0.016544, 0.354901}, {-0.997099, -0.209123}, {-0.235030, -0.400691}, {-0.203206, 1.099828}, {0.142727, 0.095450}, {-0.341516, 0.326233}, {0.095229, 0.019195}, {-0.660175, 0.112390}, {0.905233, -0.514587}, {0.319161, -0.949665}, {-0.405405, -2.149487}, {0.208820, 0.999381}, {-0.315606, 1.516585}, {-0.641859, -1.688719}, {0.964642, -0.657701}, {0.065903, -0.060402}, {-0.026539, -0.681936}, {-0.614921, -0.563590}, {0.246976, -0.939397}, {0.385899, 0.281023}, {-0.094005, 0.848061}, {-0.169226, 0.774612}, {-0.724207, 0.299136}, {-1.194411, -0.024786}, {0.882686, -0.287766}, {-0.483190, -0.806528}, {-0.483338, 0.922785}, {0.041603, 0.257413}, {0.498249, 0.308889}, {0.634894, -0.438796}, {0.295743, -0.624397}, {0.071996, 0.006979}, {-0.372322, -0.699701}, {-0.914731, 1.474448}, {-0.027933, -0.761139}, {-0.295425, -0.913413}, {1.158772, -0.605934}, {-1.099764, 1.238334}, {0.225717, -0.107705}, {-0.060501, -0.133608}, {-1.004261, -0.846772}, {1.353121, 0.234258}, {0.115511, -0.813911}, {-2.526341, -0.552748}, {0.628997, 0.483053}, {-0.185551, 0.719097}, {1.038135, -1.267809}, {-0.807875, -0.433980}, {-0.095644, 0.352912}, {-0.401847, 0.180421}, {0.326983, -0.414106}, {-0.700716, -0.454423}, {1.753344, 0.341367}, {-0.495613, 0.589827}, {0.795817, -0.022842}, {-0.921182, -0.686602}, {-1.692668, -0.029685}, {-1.122250, -0.221354}, {-0.588052, 1.370316}, {0.988746, -0.162050}, {-0.653970, -0.824491}, {0.362938, -0.445459}, {1.171398, -0.033829}, {-0.128480, 0.441175}, {-0.102669, -0.405796}, {1.815588, -0.843343}, {-0.009833, -0.493984}, {-0.949789, 1.129682}, {0.396000, 0.520610}, {0.793786, -1.116647}, {0.245421, -0.634161}, {-1.542438, 0.723155}, {-0.983627, -0.634587}, {0.325658, 0.423862}, {0.686591, 0.678101}, {0.840170, 1.189774}, {-0.124161, 0.328021}, {-0.670110, 0.306719}, {-0.647672, -0.390379}, {-0.799760, -0.896996}, {0.791386, 0.183740}, {-0.999459, 0.290365}, {0.108208, 0.682826}, {0.722602, -0.063568}, {0.675050, -0.417068}, {0.049737, -0.626277}, {-0.091161, -0.152698}, {-0.169368, -0.424080}, {0.965155, 1.073006}, {0.875146, 0.371974}, {0.027511, -0.094845}, {0.046664, -0.034023}, {0.088000, 0.191606}, {-0.292866, 0.357606}, {0.486410, -0.150151}, {0.758034, 0.769236}, {0.373728, 0.795101}, {-0.271229, -0.284477}, {1.579846, -0.350881}, {-0.201557, 0.028050}, {-0.509997, 0.955817}, {0.452960, 0.647232}, {-0.406892, 0.567143}, {-1.706461, 1.360423}, {0.953890, -0.875465}, {0.657629, 0.021581}, {-0.129957, -1.226930}, {-0.302970, -0.942701}, {0.048147, -0.690086}, {-0.477384, 0.846820}, {0.024795, 1.669001}, {1.201373, 0.130037}, {0.028444, -0.954818}, {0.597766, -0.157195}, {1.257619, -0.713805}, {-0.793364, 0.384184}, {-1.448279, 0.244332}, {-0.241725, 0.023413}, {-0.834162, -1.002103}, {-0.092808, -0.130621}, {0.251400, 0.563136}, {0.142776, -0.576081}, {0.082036, -0.836429}, {0.477424, -0.233922}, {0.592498, -0.708705}, {-0.092424, -0.165077}, {0.961011, -0.437526}, {-0.040373, -0.007315}, {0.151106, 0.495559}, {-0.791185, -0.172713}, {0.532989, -0.116812}, {0.323417, -0.257345}, {-1.564697, 1.408229}, {-0.721557, 1.018666}, {0.590124, -0.231628}, {0.771734, -0.400268}, {-0.051036, 0.575551}, {-0.045053, -0.822877}, {0.870412, 0.425655}, {-0.252330, -0.444619}, {-0.101144, -0.403048}, {-0.027262, 1.535667}, {-0.641673, -0.519516}, {0.738704, 0.547992}, {0.168648, -0.151548}, {-1.710591, 0.257789}, {-0.092677, 0.346082}, {-0.338101, 0.082259}, {-0.050333, -0.211235}, {-0.699288, -0.374695}, {-0.591992, 1.089774}, {0.627032, -0.226781}, {-0.162334, 0.632005}, {1.473994, -0.687098}, {-0.034147, -0.046207}, {1.689347, 0.546087}, {-0.064003, 0.303521}, {0.024821, -0.361900}, {0.625408, 0.536032}, {0.859899, -0.542843}, {-0.768487, 0.655731}, {0.156214, 0.442436}, {-0.920403, -0.423091}, {0.288070, -0.057672}, {0.835439, -0.025869}, {0.486492, -0.403805}, {-0.670555, -0.015233}, {0.202429, -0.231184}, {0.368462, 0.045512}, {-0.759523, -0.656840}, {-0.306825, -1.845469}, {-1.126798, 0.416730}, {0.253965, -0.048144}, {0.573909, 0.256679}, {-0.077506, 0.902226}, {0.106140, -0.161830}, {0.944351, -0.103539}, {0.996280, 0.024614}, {-0.437475, -0.095610}, {1.605320, 0.269590}, {-0.030932, 0.428579}, {0.298472, -0.901861}, {-0.459703, -1.415808}, {-1.427354, -0.827994}, {-0.668940, -0.453174}, {0.081398, -0.075764}, {0.449178, 0.115437}, {1.319972, 0.180253}, {0.214731, -0.518376}, {0.401389, -0.697856}, {-0.966804, -0.086393}, {0.091583, 0.256263}, {0.121284, -0.390260}, {0.682460, 0.337722}, {-0.528372, -0.012843}, {0.535463, 0.220828}, {-0.207327, -0.002275}, {0.032177, -1.481349}, {-1.046740, 0.503154}, {0.990748, -1.593273}, {-0.395646, 0.419805}, {0.309283, -0.466387}, {1.107873, 0.046100}, {0.557575, 0.602810}, {-0.973449, -0.826520}, {1.174536, -0.115438}, {0.270087, -0.056070}, {0.301369, -1.259042}, {0.176198, 0.039041}, {0.685912, -1.168439}, {0.868333, 0.870309}, {0.428619, -0.314340}, {-0.605176, -0.019613}, {0.551734, 0.028005}, {0.967593, -0.636688}, {0.282477, 0.393573}, {0.681596, -0.537855}, {0.080952, 0.362344}, {1.080137, -1.004045}, {-0.121193, -0.497869}, {0.873317, -0.001814}, {-0.626031, -0.544039}, {0.108145, -0.684680}, {-0.563032, -0.925852}, {0.979941, -0.514612}, {-0.608938, 0.633467}, {-0.053909, 0.182506}, {-0.043155, 1.357664}, {-0.258396, 0.276981}, {-0.273572, -0.131251}, {-0.146091, -0.601641}, {-0.285407, -0.362421}, {-0.145943, -0.085332}, {1.246647, -0.702939}, {0.000929, -0.146198}, {0.426066, 0.520638}, {-0.385219, -1.726361}, {0.895211, 0.932719}, {1.007455, -1.259203}, {-0.192862, 0.700090}, {-0.229940, 0.047657}, {-0.530813, -0.440148}, {-0.611116, -0.509634}, {-0.580100, 0.142553}, {0.614953, 0.098769}, {1.398503, 0.775546}, {-0.541719, -1.671509}, {-0.241597, 1.020908}, {-1.077532, -0.515526}, {0.655762, 0.775059}, {-0.765450, -1.239293}, {0.962747, -0.806323}, {-0.609721, 0.251087}, {0.050378, -0.384786}, {0.848758, 0.698701}, {2.116104, 1.231120}, {0.111879, -0.017177}, {-0.687465, -0.181288}, {-0.675059, -0.418819}, {0.279545, -0.339861}, {-0.599722, 0.492495}, {0.684005, -0.397453}, {0.147776, -0.639692}, {0.097598, -0.641184}, {0.081977, 0.034408}, {-1.362164, 0.108665}, {0.163552, -1.671503}, {0.040631, -1.212350}, {0.291558, 0.657082}, {-0.295903, -1.140027}, {-0.376469, 1.434394}, {0.423132, 1.500112}, {0.939533, 0.706458}, {-0.723371, 0.467943}, {0.734789, -1.367821}, {-0.286426, -0.430950}, {0.741645, 0.202610}, {-0.474269, -0.383443}, {-0.111238, -1.258131}, {0.660971, -0.293692}, {-1.682554, 0.395094}, {-0.315600, 1.396362}, {-0.537842, 0.199873}, {-0.495910, 1.133647}, {-0.202967, 0.311606}, {0.956309, 1.302041}, {0.014266, 1.520439}, {-0.219412, 0.174062}, {-0.681151, -0.951635}, {0.404607, 1.513381}, {0.416153, 0.210891}, {0.142163, 0.694091}, {0.076219, 0.460826}, {-1.083648, 1.037683}, {0.270994, 0.354254}, {0.986873, 2.149951}, {0.393861, 0.989633}, {0.688971, 0.339303}, {0.071278, 0.056799}, {-1.016039, -0.020912}, {-1.334468, -0.536643}, {0.734131, -0.538999}, {0.610162, -0.467191}, {0.178098, 0.248881}, {1.107075, 0.903290}, {0.067019, 0.376517}, {0.063519, 0.307756}, {0.222092, 0.047481}, {-0.642008, 1.339605}, {-1.434671, 0.390346}, {-0.286363, -1.096375}, {0.528233, -0.114303}, {0.002839, -0.363739}, {0.081966, 0.477424}, {-0.745078, -0.212704}, {0.262151, -0.629614}, {0.650702, 0.297788}, {-0.360384, 0.654797}, {-1.210552, 0.346825}, {-1.123528, 0.141074}, {0.254125, 0.134089}, {-0.854449, -1.272994}, {0.503444, 0.407784}, {-0.063343, 0.002590}, {-1.217891, 0.297324}, {1.362821, -0.092500}, {-0.620024, -0.181695}, {-0.583878, -0.087572}, {-0.077708, -0.591811}, {0.407316, 0.210572}, {0.370971, -1.195471}, {-0.299583, 1.320451}, {0.203216, 0.646346}, {0.366164, 0.909438}, {0.203023, 0.338926}, {0.886110, -0.616392}, {0.123373, -0.265751}, {1.002188, -0.721736}, {-0.087786, -0.162014}, {-0.147706, -0.257366}, {0.138837, 0.156403}, {-0.935765, -0.897313}, {0.145589, 0.934317}, {-1.257050, 0.339883}, {-0.640691, -0.497094}, {0.249565, 0.324230}, {0.429013, -0.807024}, {0.951042, -0.750363}, {-0.233908, 0.322168}, {-0.155345, -0.058620}, {-0.923954, 1.122193}, {0.575643, 0.585440}, {0.020598, 1.436937}, {-0.091407, -0.699294}, {0.578322, 1.106103}, {-0.103452, -0.119980}, {1.023561, 0.237926}, {-0.294089, -0.806202}, {0.353528, -0.555679}, {-0.047433, -0.322646}, {1.165529, 0.140760}, {-0.792405, -0.115971}, {-1.054716, -1.248429}, {-0.445960, -0.522722}, {-0.535668, -0.623538}, {1.871897, 0.379341}, {-0.602944, 0.291409}, {0.163383, -0.302622}, {-0.434323, -0.137421}, {-0.350281, 0.083213}, {0.871609, -0.841751}, {0.975364, -0.601977}, {0.494758, 0.224624}, {0.242478, 0.421058}, {0.232225, -1.453569}, {0.414761, 0.849492}, {0.604876, 0.053472}, {0.281405, -0.468279}, {-0.722334, -0.651553}, {0.212448, 0.783791}, {0.338838, 0.566970}, {0.968908, 0.412173}, {-0.818738, 1.184692}, {-0.942716, 1.063357}, {0.156179, -0.884947}, {0.275563, -0.824764}, {0.161075, 0.512591}, {-0.063483, -0.132659}, {0.244437, 0.539625}, {-1.022381, 0.103652}, {-0.191213, 0.245448}, {1.202137, -0.341605}, {-0.830870, 0.088173}, {-0.376038, -1.505356}, {-0.132499, -0.483134}, {1.405172, -0.388605}, {-0.731394, -0.474684}, {0.424459, 1.084378}, {0.569630, -0.465403}, {0.342360, 0.588034}, {0.530620, 0.584731}, {0.465075, 0.367666}, {0.476078, -0.835102}, {0.325328, 0.098233}, {-0.588893, 0.045396}, {0.190879, 0.254040}, {0.743863, 1.485769}, {0.092567, 0.772116}, {-0.316621, 0.345606}, {-0.782686, -0.306573}, {-0.034863, -0.764078}, {0.087823, 1.095970}, {0.006421, 0.475137}, {-0.539624, 1.058665}, {-0.112003, -0.421538}, {0.814427, -2.240315}, {0.297667, 0.029955}, {0.387983, 0.365167}, {-0.512255, 0.697944}, {-1.002389, -1.053748}, {0.785925, -0.982717}, {0.513858, -0.382507}, {-0.739047, 0.720458}, {0.563904, -0.592574}, {0.269190, -0.290482}, {-0.443868, 1.120572}, {-1.130339, 0.430364}, {0.653121, -1.146882}, {-0.143795, -0.395516}, {-0.601965, 0.136010}, {0.108440, -1.108889}, {-0.633592, -0.202239}, {-0.057448, 0.917590}, {-0.339216, 0.038929}, {-0.236586, 0.236913}, {0.250535, 0.573183}, {-1.205567, -0.151059}, {0.435760, 0.422565}, {0.195745, -0.511377}, {1.127967, -0.973948}, {0.989271, -1.392772}, {0.135742, 0.374199}, {-0.344161, 0.674263}, {-0.011739, -0.360829}, {-1.431782, 0.085627}, {-0.120657, 0.501635}, {0.750871, 0.035088}, {-0.415468, -0.782156}, {0.295173, 0.275036}, {-0.601768, 0.944578}, {-0.818800, -0.499709}, {0.750934, 0.255211}, {0.011539, -0.207586}, {-0.059063, 0.577347}, {0.027127, 0.182079}, {0.058243, 0.931415}, {-0.671812, 0.744172}, {0.645644, 0.221537}, {-0.870574, -0.487558}, {1.078105, 0.615241}, {-0.212722, -0.339828}, {1.044228, -0.140719}, {0.507397, -0.046622}, {-0.034885, -0.440408}, {0.752870, 2.271021}, {-0.581907, -0.235032}, {-0.322662, -0.221511}, {0.415694, 1.662084}, {0.145703, -0.397409}, {0.254030, 0.000521}, {-0.087437, -0.980333}, {0.227735, -0.592052}, {-1.659078, 1.444394}, {0.165351, 0.893154}, {0.143596, -1.051117}, {-0.150326, -0.227989}, {-0.176142, -2.753715}, {-0.304719, -1.679630}, {0.142689, 1.087978}, {-0.017008, -1.616949}, {-1.541590, 0.163136}, {-0.310240, -0.896758}, {-1.275426, 0.756192}, {1.243312, -0.449887}, {1.116768, 0.875750}, {-0.707965, 0.070670}, {0.913211, -0.140092}, {-0.979090, 0.451250}, {-0.864155, -1.828690}, {0.921171, 0.476562}, {0.355440, 0.234661}, {-0.524266, 0.329766}, {-0.358736, -1.603375}, {-0.648495, 0.757445}, {0.418951, 0.216528}, {-0.427809, -0.403671}, {0.337321, -1.387978}, {1.655019, -0.215407}, {0.451075, -0.095607}, {-0.244406, 0.146289}, {-0.137790, 0.167550}, {0.630097, 0.525331}, {1.207748, 0.306192}, {0.281222, 2.135639}, {1.263418, -0.404728}, {-0.462965, -0.321707}, {-0.502160, -0.109373}, {0.267206, 0.604009}, {-0.095540, -0.133320}, {-0.518950, -0.011799}, {0.882133, -0.870423}, {-0.273993, -0.871520}, {-0.369624, -0.376413}, {-0.426616, -1.054248}, {0.605760, -0.041916}, {-1.076826, -0.702786}, {0.262593, 0.312531}, {-0.247497, 0.678962}, {0.286441, -0.227566}, {-0.090176, -0.850555}, {-0.613904, -0.323067}, {-0.479344, 0.855193}, {0.812688, 0.259328}, {-0.397216, -0.922578}, {0.056809, -0.180688}, {-1.371158, 0.243855}, {-1.014261, 0.371907}, {0.033020, 0.410626}, {-0.916478, 1.112751}, {0.669737, 1.082816}, {0.431280, -0.142717}, {0.497122, -0.690756}, {-0.119205, -0.540953}, {0.181345, 0.682248}, {0.031749, -0.632391}, {-0.426867, 0.192814}, {-0.081193, 0.403163}, {0.211498, 1.119102}, {-0.832741, -0.389058}, {0.687365, 0.355030}, {0.635475, -0.427351}, {-0.546154, -0.025184}, {-0.489334, 0.302793}, {-0.652276, -0.513544}, {1.042010, -0.712245}, {-1.620305, 0.506514}, {-0.862786, 0.428432}, {0.604738, -0.408423}, {-0.521311, -0.121360}, {0.541474, -1.269409}, {-0.497038, 0.414833}, {-0.241790, -0.086959}, {-0.152804, -0.480866}, {-0.370062, 1.004085}, {0.669046, 0.066165}, {-0.781561, 0.108622}, {-0.559473, 0.168401}, {-0.453866, 0.541715}, {-0.674082, 0.794643}, {-1.933105, -0.147404}, {1.300205, 0.575127}, {0.347053, 1.234056}, {0.029991, 1.224125}, {0.468447, 0.084716}, {0.172597, -0.493143}, {0.474934, 0.314407}, {-0.641944, -1.460289}, {-0.397220, 1.519256}, {-0.434311, 0.720815}, {0.309265, 0.342057}, {-1.198355, -0.052924}, {-0.707677, 0.641043}, {-0.961501, -0.105753}, {0.041026, -0.219741}, {0.296451, -0.155747}, {-0.041502, 0.329670}, {-0.175649, -1.146940}, {0.291242, -0.629172}, {0.201876, 0.521308}, {-1.249795, 1.396366}, {0.721736, -0.901069}, {-0.279288, 0.146240}, {0.057212, -0.542932}, {0.895544, 0.168533}, {1.243546, 0.419985}, {1.443173, 0.998921}, {1.178023, -0.424663}, {0.944378, 0.694314}, {0.077267, -0.557875}, {-0.100770, -0.061053}, {0.091123, 0.783914}, {0.627541, -0.406884}, {0.300425, 0.129705}, {1.588361, 1.060950}, {-0.737907, -0.102440}, {-0.408529, -0.967258}, {0.409326, -0.583521}, {-0.252992, 0.274365}, {0.467400, 0.293939}, {0.616506, 0.083653}, {0.069252, 0.630033}, {1.261570, -0.161448}, {0.980182, 0.016625}, {-0.967191, 0.426424}, {0.974353, 0.373262}, {0.465758, 0.406121}, {0.049765, 0.155789}, {1.019360, 1.113022}, {1.482616, -1.082850}, {-0.370055, 1.170347}, {-0.914180, -0.076800}, {0.711749, 0.443053}, {1.000344, -0.911585}, {-0.685291, -0.007084}, {0.003534, -1.342957}, {-0.224481, -0.897010}, {1.435450, 1.058341}, {0.901816, -1.078478}, {0.440206, 0.310660}, {-0.440452, 1.055084}, {-0.481999, 0.510978}, {-0.425880, -0.638269}, {-0.887044, 0.737327}, {0.766324, 0.831116}, {0.474519, 0.013742}, {0.719499, 0.072296}, {0.128751, 0.551124}, {-0.346348, -0.115964}, {-0.027651, -0.597646}, {0.459124, 0.203102}, {0.076236, 0.050293}, {-1.070625, 1.089285}, {0.946162, 0.643590}, {0.493112, -0.908918}, {-0.530798, 0.636518}, {-0.775397, 0.649794}, {0.666540, -0.670376}, {-0.051724, -1.176117}, {0.734299, -0.049687}, {-0.366040, 0.690415}, {-0.363912, -0.763731}, {0.809317, -0.192377}, {-0.584942, -0.575854}, {0.212895, 0.318501}, {-0.229536, -0.564216}, {0.325465, -0.148910}, {-1.208239, 0.149334}, {-0.854608, -0.061222}, {-1.275009, 1.356758}, {0.005121, 0.384686}, {0.540351, -0.968782}, {0.522470, 0.505677}, {1.606856, 0.455340}, {0.390568, 0.183534}, {-0.517696, 0.031122}, {0.301117, 2.578628}, {-0.301510, -1.216527}, {-0.342228, -0.046947}, {-0.348194, 0.992603}, {-0.067880, -0.448626}, {1.327164, 0.245718}, {-0.452255, -1.409662}, {0.439151, 1.195320}, {-1.258445, 1.550755}, {-0.487881, 1.205291}, {-0.539438, -0.040513}, {0.112800, 0.659260}, {0.163991, -0.512811}, {-0.598902, 0.260073}, {-0.759021, 1.076704}, {-0.850034, -0.410968}, {0.017091, -0.374513}, {-1.673326, 0.068799}, {0.965866, -0.779812}, {-0.058769, -0.720178}, {-0.055818, -0.470524}, {-1.050913, 0.161955}, {1.117855, 0.191514}, {1.104705, 0.175696}, {0.367485, -0.458936}, {0.138570, 0.060696}, {-0.646029, 0.418187}, {0.562371, -0.098041}, {0.132342, 0.156962}, {0.616000, 0.247797}, {-0.849396, -0.017041}, {-1.265605, -0.174037}, {0.263149, 0.173862}, {-0.947393, -0.548476}, {-0.781072, -1.083780}, {0.283519, -1.581446}, {-0.649758, 0.090980}, {0.080903, -0.435490}, {-0.546066, -0.445276}, {0.883145, 0.033681}, {-1.438228, -1.592795}, {-0.929637, 0.644398}, {-0.843645, 1.001079}, {-0.103938, 0.314698}, {-0.882742, 0.603233}, {0.560060, 0.672982}, {0.265318, -0.520901}, {0.037542, -0.468269}, {-0.614846, -0.896426}, {-0.811132, -0.075196}, {-0.701491, -0.278436}, {-0.169226, 0.555609}, {0.152666, 0.988791}, {0.155918, -1.638999}, {-0.029867, -0.008556}, {0.789905, -0.447722}, {0.369189, 0.638383}, {0.224741, -0.857948}, {1.360289, -0.368943}, {1.012567, -1.472297}, {0.750105, -0.167508}, {0.543334, -0.115844}, {0.551806, -1.337525}, {1.881674, 0.384950}, {-0.334593, -0.392176}, {0.568056, 0.658811}, {0.826330, -0.070998}, {-0.837258, -0.838016}, {-0.559858, -1.022418}, {0.141410, -0.739586}, {-0.910228, -1.581966}, {-0.196767, -0.383060}, {-1.084272, -0.459566}, {-0.639058, 0.491458}, {0.003765, 0.880280}, {1.188473, -0.151647}, {0.210026, -1.324828}, {-0.100415, 0.512765}, {0.513964, -0.254631}, {-0.644200, 0.342062}, {0.783293, 0.003817}, {0.641491, 0.529011}, {0.382460, -0.793553}, {-0.168696, 0.881504}, {-0.665068, -0.411740}, {-0.422928, -0.392841}, {-0.293466, -0.490343}, {0.174657, 0.011203}, {0.371092, 0.692387}, {0.221498, 0.094331}, {1.040101, -0.724797}, {-0.594782, -0.235973}, {0.067611, -1.262378}, {0.159732, -0.070026}, {0.643780, -0.804505}, {0.537444, 0.286446}, {0.032259, -0.725526}, {-0.348096, 1.322484}, {-0.412691, -0.682603}, {0.064050, -0.147144}, {-1.125518, -0.730751}, {0.100103, -0.336546}, {0.011121, -1.408579}, {-0.435174, 0.184880}, {0.216681, 0.145450}, {0.160929, -0.027522}, {-0.094411, 0.775505}, {0.917143, -0.930427}, {0.346981, 0.563719}, {-1.570088, -0.176042}, {-0.151329, -1.215049}, {-0.517596, -0.556149}, {1.388624, 0.121150}, {-1.346197, -0.331584}, {-1.014897, -0.904715}, {-0.370488, 0.625232}, {0.234481, -0.599066}, {-0.838492, 0.445635}, {0.570000, 0.510314}, {-0.117676, 0.285231}, {1.428193, 0.287780}, {0.846940, 0.133845}, {1.197855, 0.607831}, {-0.882803, -1.383388}, {0.034651, -0.574273}, {0.081993, -1.106833}, {-0.415176, -0.051580}, {-0.142726, 0.131354}, {0.705295, 0.285068}, {0.616462, 0.274167}, {0.542851, -0.557143}, {-0.453895, 1.480666}, {0.389829, 0.139984}, {0.729928, 0.418423}, {0.199777, 0.543327}, {-0.777423, -0.121813}, {0.544161, 1.047456}, {0.144618, 0.189402}, {-0.330806, -0.839508}, {-0.386112, 0.095356}, {0.334664, -0.570556}, {0.688800, 0.258836}, {-0.375194, 0.976342}, {-0.979181, 0.389248}, {0.352754, 0.182541}, {-0.557678, 0.183718}, {0.059676, -0.515850}, {0.889687, 0.384437}, {0.326761, -0.569045}, {-0.356064, 0.960982}, {-0.015646, 0.537468}, {0.070428, -0.848307}, {-0.986289, 0.860168}, {-0.141119, 0.141116}, {0.387450, 1.352744}, {0.898063, 0.207277}, {0.307952, 0.280249}, {-1.091253, -0.645560}, {1.079365, 0.448420}, {0.318470, -0.047758}, {-0.664574, 0.564786}, {-0.568208, 0.492372}, {0.143767, 0.051228}, {-0.416511, 0.722973}, {-0.892012, -0.308575}, {0.361998, -0.008642}, {-0.497223, -0.648014}, {0.249791, -0.081327}, {0.207192, 0.128874}, {-1.025766, -0.510293}, {0.098964, 0.621213}, {-0.490461, 0.631713}, {-0.448633, 1.805053}, {-0.321075, -0.425673}, {0.109959, 0.748809}, {-0.636473, 0.818729}, {-0.323787, -0.565485}, {-0.031436, 0.886588}, {-1.100856, -0.295367}, {0.013026, 1.275442}, {1.243183, -0.863036}, {-0.016862, -1.104960}, {-0.503751, 0.059092}, {-0.428264, -1.092108}, {0.240446, 0.733125}, {-0.924166, -0.286675}, {0.081255, 0.268827}, {0.578614, 0.267076}, {0.855698, 0.686772}, {0.694556, 0.169285}, {0.065727, -1.138257}, {-1.326172, -0.634456}, {-0.290709, 0.244074}, {0.184962, -0.684550}, {-0.484932, -0.874069}, {0.683665, -1.045173}, {-0.583586, 0.853352}, {-0.817727, -1.045137}, {-0.661010, -1.251055}, {-0.369424, 0.527159}, {-1.301217, 0.246717}, {0.143446, 0.006156}, {-0.073755, 0.534466}, {-1.136401, -0.589760}, {-0.607309, -0.316112}, {0.335294, -0.448585}, {-0.574601, 0.205810}, {-0.239630, 0.283724}, {-0.697449, -0.307286}, {0.071816, 0.155103}, {1.367617, -1.141154}, {-0.396951, -0.248389}, {-1.092599, -0.617174}, {-1.294691, -0.226609}, {-0.380847, -0.089574}, {-0.743203, 0.637321}, {0.235272, -0.819851}, {-1.195970, 0.512104}, {-1.679973, -0.738527}, {0.575380, -0.899765}, {-1.649001, -0.199959}, {0.213428, 1.358885}, {0.943931, -0.471162}, {0.432717, 0.866101}, {0.145445, 0.133728}, {-0.555018, 0.149227}, {-0.914787, 0.598720}, {-0.653930, -0.654901}, {-1.346925, 0.329945}, {-0.171424, -0.565344}, {-0.301527, 0.240508}, {1.273836, -0.145758}, {-0.675821, -1.095405}, {-0.413545, -0.143713}, {-0.106844, 0.824615}, {0.131452, -1.038036}, {-0.326685, 1.463916}, {-0.584519, -0.458745}, {-0.543369, -1.094143}, {0.143483, -0.846585}, {0.272163, 0.167407}, {0.401943, -0.563082}, {1.212306, 0.087879}, {0.504145, -0.648031}, {-0.462351, -0.159423}, {-0.319523, 0.179709}, {1.357242, 0.045627}, {1.074160, 0.840235}, {0.790452, 0.720079}, {-0.705431, 0.410349}, {0.416680, -0.002549}, {-0.884954, -0.146867}, {-0.808279, -0.171336}, {-1.018281, 0.721639}, {0.822228, 1.039615}, {1.037790, 0.060549}, {-0.074556, -0.200271}, {-0.880853, -0.366553}, {-0.343761, 0.333341}, {-0.313231, -0.586011}, {0.283823, 0.573617}, {1.143016, 0.089887}, {0.410687, 1.083689}, {0.277861, -0.083366}, {0.021606, -0.194773}, {-0.750214, 1.458612}, {0.917402, -0.016748}, {-0.339684, -0.337568}, {1.005284, -0.645882}, {-0.519209, 0.899330}, {0.826162, -0.741211}, {1.300132, -1.109551}, {-0.374995, -0.317730}, {0.785101, 0.228184}, {0.415868, 0.737788}, {0.527210, -0.188643}, {0.376705, 0.413658}, {0.989599, 0.805633}, {-0.137061, -0.915614}, {-1.702346, -0.057933}, {-1.956591, 0.046432}, {-0.416960, 0.338240}, {-0.658461, -1.216968}, {0.365795, 0.659371}, {0.252050, -0.558653}, {-0.454467, 0.004934}, {0.504714, 0.229244}, {-0.278911, -0.228103}, {-0.127623, -0.114296}, {-0.014266, -0.342689}, {-0.604625, 0.121864}, {-0.387685, -0.068082}, {-0.091712, 0.800537}, {0.485931, -0.161304}, {-0.016110, 0.493620}, {-0.653134, -0.353877}, {-1.046778, 0.196967}, {-0.263242, -0.289129}, {0.336474, -0.180203}, {0.298396, -0.644825}, {-0.427587, 0.572250}, {-0.208223, 0.053185}, {0.533386, -1.227956}, {-0.725350, 0.128195}, {0.672904, 0.530250}, {-0.061316, -0.194678}, {-0.709433, -0.046001}, {-0.588879, 0.353459}, {0.123260, 0.618527}, {-0.549665, 0.060101}, {0.890191, -0.845135}, {-0.454263, -1.313850}, {0.783957, -0.491876}, {1.361276, 0.023611}, {-0.458428, 0.042147}, {-0.143219, -0.073745}, {0.074903, -0.017429}, {-0.067903, -0.816547}, {-0.380387, -0.772921}, {-0.240030, 1.420491}, {-0.003621, 0.010600}, {-0.444036, 0.409901}, {0.277409, 0.726745}, {0.119726, 1.707099}, {-0.621712, -0.457125}, {-0.214421, 1.545744}, {0.278621, -0.735467}, {-0.099482, 0.119682}, {0.952647, -1.013460}, {-0.290825, -0.041022}, {0.368084, -0.002760}, {-0.689006, -0.068005}, {0.015785, 0.505867}, {1.306051, 0.203435}, {-0.263603, -0.214893}, {0.292584, -0.248845}, {-0.344389, -1.191472}, {0.096606, -0.045469}, {0.147219, 0.465939}, {-0.579923, -1.133735}, {-0.918253, -0.931145}, {0.557217, 0.127417}, {0.614199, 0.613104}, {0.412233, 0.943510}, {-0.471662, -0.514960}, {-0.817375, -0.836164}, {-0.264718, -0.546935}, {0.508435, 0.771316}, {0.031847, -1.856060}, {-0.443846, -0.260004}, {-0.716667, -1.374211}, {0.501604, 0.548927}, {0.314912, 1.032581}, {-0.781109, 0.916868}, {-0.869837, -1.039860}, {0.630546, 0.674600}, {0.272632, 0.214175}, {0.531070, 0.330978}, {0.675056, -0.653400}, {0.573720, 0.836919}, {-0.611225, 0.014075}, {-0.257263, -0.391545}, {-0.759020, -0.312859}, {0.264351, 0.791373}, {-0.438730, -0.456151}, {-0.103243, -0.632429}, {0.482892, 0.141475}, {-1.072978, 0.148871}, {-0.939209, -0.558985}, {0.464793, -0.984782}, {0.344131, 0.564869}, {1.005227, -0.360487}, {-0.225080, 0.071180}, {0.208733, -0.458590}, {0.680123, -1.202615}, {-0.308920, 0.517768}, {0.980274, 0.589646}, {0.902236, -0.040233}, {-1.138100, 0.039754}, {0.169840, 0.120056}, {-0.733937, 0.211810}, {0.623660, -0.836100}, {-0.173754, 0.076214}, {-0.541470, 0.864952}, {-0.080678, -0.163713}, {-0.044093, 0.109390}, {-0.028695, -0.639742}, {0.643003, 0.482195}, {-0.364304, -0.293403}, {-0.231682, -0.410161}, {-0.467438, -0.345931}, {-0.390529, 0.236207}, {-0.175126, 0.380258}, {0.978393, 0.640634}, {0.257795, -0.903357}, {0.641261, 0.315085}, {-0.098354, 0.511919}, {-0.717823, -0.919712}, {0.709709, -0.590981}, {0.997767, 0.207366}, {0.588275, -0.122289}, {-0.222499, 0.042538}, {0.394217, 0.054417}, {0.214881, 0.114854}, {0.596482, 0.581786}, {0.477025, -0.157396}, {-0.633506, -1.318668}, {-0.037122, 0.440028}, {0.968742, -0.275315}, {-0.513770, 0.381195}, {1.098776, 0.728930}, {0.150417, -0.421163}, {-0.902237, 1.142415}, {-0.729498, 0.499136}, {0.418742, 0.861949}, {0.267916, -0.737845}, {0.024422, 0.770033}, {0.566193, 0.531592}, {0.166300, -0.113780}, {-0.275348, -0.044917}, {0.629763, -0.044562}, {0.108581, -0.580329}, {0.247883, -0.494344}, {-1.462176, 0.531806}, {0.324773, -1.258865}, {-0.406431, 0.059552}, {0.113265, 0.337107}, {-0.506166, 1.040579}, {-0.703153, 0.839870}, {-0.260571, -1.535683}, {-0.454874, -0.041822}, {-0.199992, -0.302883}, {-0.743083, -0.906848}, {-0.675013, -0.597745}, {-0.338081, -1.521178}, {0.931345, -1.090509}, {0.651153, -1.330153}, {-1.079088, 0.315838}, {0.246740, 0.044863}, {0.202616, 1.446147}, {-0.433066, 0.284324}, {-0.609858, 0.344346}, {1.142330, -0.944550}, {-0.350428, -0.881955}, {-0.451507, -1.605877}, {-0.400012, -0.239471}, {-0.136838, -0.775874}, {0.282265, -0.413392}, {-0.988833, 1.529659}, {0.719835, 0.005099}, {0.052020, -0.477086}, {-1.283307, 0.058599}, {0.165701, 0.649111}, {1.021960, -1.416111}, {0.940476, 0.062629}, {-0.751199, 0.038566}, {0.243450, -0.762697}, {-0.649152, 0.044560}, {0.908395, 0.209002}, {0.325158, 0.216998}, {0.396454, 0.138658}, {-0.763522, -0.025907}, {-0.762589, -0.137472}, {-0.327529, -1.036809}, {-0.632504, 0.676907}, {0.183574, 0.389227}, {-0.859700, -0.703806}, {-1.154826, -0.991693}, {0.449444, 0.396030}, {0.441770, 0.491508}, {-1.205186, 0.299378}, {1.050428, -0.456205}, {0.096725, 0.154959}, {0.584349, -0.864514}, {-1.679030, 1.143489}, {0.008505, 0.228789}, {-0.661763, 0.775812}, {0.142798, -0.623065}, {-0.241421, -0.526502}, {1.106520, 0.156370}, {0.365753, -0.256303}, {-0.977046, 1.118332}, {0.884009, 0.203437}, {-0.353712, 0.852741}, {1.135822, -0.309740}, {-0.439555, -0.067368}, {0.554689, -0.288402}, {1.734416, 1.344531}, {-1.349819, 0.759427}, {0.102799, -0.495112}, {0.063102, 0.722775}, {-1.222947, -0.080150}, {-0.340332, 1.061612}, {-0.228259, -1.903851}, {-0.090773, 0.687378}, {0.203348, 0.507128}, {-0.577364, -0.212706}, {-0.857515, -0.853969}, {-0.562304, 0.383151}, {-0.918214, -1.478510}, {1.026666, 0.071216}, {-0.012886, -0.308529}, {0.022988, -0.145717}, {0.234582, 1.146633}, {1.975283, -0.173765}, {-1.487083, 0.919537}, {-1.203767, 1.128685}, {-1.355804, -0.425852}, {-0.102354, -1.008553}, {-0.436827, 0.374401}, {-1.741085, 0.223597}, {-0.898223, 0.399684}, {0.002133, -0.652951}, {0.333743, 0.185220}, {-0.163247, 1.355073}, {-0.198911, -0.789921}, {0.240101, 0.133008}, {-0.149245, -0.404471}, {1.281203, -0.360689}, {-0.172603, -0.635725}, {0.286292, -0.148272}, {-0.989616, 0.037128}, {-0.811488, 1.305276}, {0.736930, -1.009141}, {1.069361, -0.737178}, {0.752787, -0.592366}, {-0.668359, 0.755571}, {0.005078, -0.395512}, {0.006600, 0.636287}, {-0.619231, -0.611731}, {0.333470, -0.919963}, {-0.492449, -1.419036}, {-0.622632, 0.194757}, {0.676292, 1.819990}, {-0.328240, 0.542470}, {0.345128, -0.019528}, {-0.616645, 0.691087}, {-0.507449, -0.432094}, {-0.204852, -0.217874}, {0.834005, -0.099980}, {1.199202, -0.293367}, {0.449203, -0.521362}, {0.226780, -0.171567}, {0.523436, 0.775392}, {-0.711218, -0.421231}, {0.151391, -1.096606}, {-0.249307, 0.995733}, {0.245582, -0.339674}, {0.412624, -0.060258}, {-0.300827, 0.023954}, {-0.265459, 0.720401}, {-0.496526, -2.099281}, {-0.605097, -0.001741}, {-1.378320, -0.341276}, {-0.994346, 0.085029}, {1.632400, 0.360458}, {-0.491899, -0.396243}, {-0.010321, -1.021544}, {-1.316304, 0.895828}, {-0.198830, -0.208983}, {0.916044, 0.314340}, {0.562103, -0.885413}, {0.878424, -0.092960}, {-1.045844, -0.687749}, {-1.295066, -0.226382}, {-0.359215, 0.110638}, {0.540396, -0.456394}, {1.030585, 0.127512}, {-0.085532, 0.952881}, {0.106917, 0.478915}, {-0.664272, -0.344642}, {0.788052, 1.409984}, {-0.673592, 1.430835}, {-0.718720, -0.290875}, {-0.721900, 0.085461}, {0.476120, -0.538352}, {0.554070, 0.581590}, {-0.576287, -0.853427}, {-0.431295, -0.014809}, {-2.353094, 1.312785}, {1.022447, 1.017332}, {0.418273, 2.001674}, {-0.898325, 0.139499}, {0.235885, 0.080549}, {0.183877, 0.730680}, {1.009956, 0.519400}, {-0.689154, 0.060848}, {-0.683728, -0.649710}, {0.079095, 0.516578}, {-1.386436, -0.530334}, {0.302774, -0.053089}, {-0.248980, 0.192447}, {-0.680767, 0.423570}, {-0.043439, 0.510224}, {-1.016935, 0.183362}, {0.076796, -1.333739}, {-0.313256, -1.452270}, {-0.850463, 0.112410}, {0.244360, -0.084178}, {0.067792, -0.882987}, {-0.569372, -0.399011}, {-0.189225, 0.729525}, {-0.588975, -0.077969}, {1.010968, -0.489609}, {-0.395063, 0.239897}, {0.025387, 0.354833}, {0.725579, 0.805842}, {-1.146500, -0.264508}, {-0.222810, -1.814964}, {0.507912, -1.443934}, {0.296149, 0.880303}, {-0.439268, 1.606203}, {0.334727, 0.325640}, {-0.869431, -0.847762}, {-0.407707, 0.153088}, {0.348556, 0.542411}, {-0.082133, 0.838110}, {-0.377740, 0.348750}, {-0.523685, 0.000306}, {0.451224, 1.080533}, {0.864641, 0.961894}, {-0.464419, -0.075393}, {0.247437, -0.100790}, {0.677059, -0.034906}, {0.977166, 0.730818}, {0.276546, -0.403567}, {-0.380227, -0.745522}, {-0.300027, 0.125790}, {0.454573, 0.006509}, {-0.771309, 0.081517}, {-0.311846, -0.412134}, {-0.014595, 0.090009}, {0.707382, -0.074778}, {-1.353019, -0.753631}, {-0.100071, 0.822131}, {0.954790, -0.432571}, {-0.078897, -0.647015}, {0.386041, -0.035061}, {0.448108, 0.197019}, {-0.270952, 0.887823}, {0.648405, -1.073664}, {0.044912, -0.754380}, {-0.455401, -1.209139}, {-1.242109, 0.132042}, {0.391696, -0.419274}, {-0.160193, -1.086374}, {0.193327, 0.720599}, {1.178831, -0.759304}, {-0.564605, 1.076430}, {-0.643302, -0.416708}, {-0.962134, -0.990827}, {0.368858, -0.144279}, {0.036509, -0.440959}, {0.179113, 0.270476}, {0.049637, -0.799549}, {0.618109, -0.582336}, {-1.394815, 0.395536}, {0.810724, -0.184896}, {-0.176056, -0.058013}, {-0.488312, -0.368066}, {-0.080337, -0.440737}, {0.116364, 0.953468}, {-0.307639, -0.302137}, {0.341945, 0.164106}, {-0.466698, -1.158425}, {0.052765, -0.344994}, {-0.107626, -0.229995}, {0.080011, 0.653158}, {-0.438442, 0.465432}, {1.422075, -0.608592}, {0.108080, -1.057456}, {-0.484339, -0.907178}, {-0.746907, -1.978396}, {-0.177762, 0.203051}, {0.386845, -1.106388}, {0.611978, -1.018232}, {0.520887, -0.361754}, {-0.360101, -0.064618}, {0.794305, 0.526908}, {0.619432, -0.126033}, {-0.340265, -1.373028}, {0.847319, 1.149398}, {-0.270491, -0.369213}, {-1.409881, 0.523044}, {-0.402942, 0.347133}, {0.100939, -0.350152}, {-0.107951, -0.680471}, {0.436856, -0.753223}, {-0.874005, 0.762825}, {1.008767, -0.929545}, {0.927536, -0.502055}, {1.498450, -0.602521}, {0.762959, -0.278194}, {-1.522717, -0.649417}, {0.994833, -0.186581}, {0.216919, 0.567066}, {0.850492, -0.682931}, {-0.777097, -0.903028}, {-0.850634, -0.188701}, {0.044620, 1.541080}, {-0.307342, -0.202304}, {-1.090498, -0.818833}, {-0.004279, 0.647200}, {-0.290596, 0.500608}, {-0.009800, -0.272120}, {-1.731344, -0.849070}, {-0.389416, -0.540169}, {1.177543, 0.747062}, {-0.858150, -0.456143}, {0.973307, 1.377374}, {1.032589, 0.695827}, {0.015056, 0.450971}, {-0.934915, -0.677001}, {0.342935, 0.069114}, {0.145474, -0.791543}, {1.997462, -0.362196}, {-0.993218, -0.020078}, {1.123258, -0.113204}, {0.125841, 1.008802}, {0.727876, 1.066038}, {-0.224529, 0.890501}, {0.213441, 1.187995}, {0.239012, -0.848701}, {-0.519815, -0.475935}, {0.113620, -0.506924}, {0.203290, -0.296634}, {-0.290231, -0.514121}, {0.218741, 1.021963}, {-1.315299, 0.334324}, {-0.936988, 0.419998}, {0.886813, 0.145840}, {-0.188194, -1.261272}, {0.949296, 0.646163}, {-0.826651, -0.432253}, {0.061005, 0.573649}, {0.922200, -1.334003}, {-0.006091, 0.134091}, {1.024516, 0.063476}, {-0.089739, -0.290697}, {0.339610, 0.989953}, {0.555781, -1.426528}, {-0.025669, -0.189457}, {-0.710042, 0.953935}, {-1.262187, 0.132588}, {0.658343, -0.530960}, {0.676713, -0.669361}, {0.834718, -2.007914}, {0.833518, 0.359230}, {0.649170, -0.687822}, {-0.001830, -0.386894}, {0.994915, -0.229340}, {0.092444, 0.399221}, {0.536323, -0.782432}, {0.262010, 1.204889}, {-0.208387, 0.425622}, {-1.100914, 1.683131}, {-1.658393, -0.775979}, {-0.078725, -0.220114}, {-0.303566, 0.923927}, {-0.225885, 0.033406}, {-0.837593, 0.349616}, {-0.560227, 0.714755}, {0.551992, -0.393791}, {0.541405, -0.530435}, {-1.165526, 0.078792}, {-1.026038, 0.387096}, {-0.517090, -0.484350}, {0.136127, 0.124638}, {0.698761, 0.346848}, {-0.783071, 0.074379}, {0.158195, 1.117125}, {0.712435, -0.286792}, {-0.362540, -1.001977}, {-0.261314, 1.161940}, {1.007828, 0.544864}, {0.141605, 0.538099}, {-0.536036, -0.744530}, {-0.056455, 1.157725}, {0.270982, -0.362836}, {1.263497, 0.040674}, {0.146764, -0.753269}, {0.364839, 0.210494}, {0.142940, 0.490340}, {0.272361, 0.068047}, {-1.040589, 1.260799}, {1.008508, 0.670697}, {-1.014574, 2.123840}, {-0.791800, -1.531609}, {-1.780964, 0.224965}, {1.573411, 0.802257}, {-0.041381, 0.109724}, {-1.138676, 0.501035}, {-0.552511, 0.754384}, {0.074825, -0.740712}, {0.310992, -0.947818}, {-0.161513, 1.611466}, {0.351436, -0.213846}, {-0.232344, 0.926067}, {-0.712473, 0.154074}, {0.531308, 0.239847}, {0.530134, 0.456501}, {-0.297722, -0.791948}, {-0.072871, -1.399393}, {0.183656, 0.497474}, {-0.279718, -0.393118}, {0.648989, -0.820860}, {0.372595, -1.044493}, {1.032547, 0.849237}, {1.174671, -0.618382}, {-1.652857, -1.472496}, {0.158852, 0.191819}, {0.298620, 0.279073}, {-0.234746, -0.135384}, {-0.875820, 0.319486}, {-0.426039, 0.843713}, {-0.496797, -0.192881}, {-0.578836, 0.257663}, {-0.238402, 0.900325}, {-0.204088, -1.191861}, {0.736090, 1.052130}, {-0.052316, -0.025508}, {-0.213198, -0.936710}, {-0.491398, 0.410943}, {0.177843, 0.351607}, {0.413028, -0.384109}, {-0.296570, 0.034297}, {-0.222102, 0.514522}, {0.347397, -0.839739}, {0.755191, 0.119118}, {-1.317696, 1.106367}, {0.012111, 0.796336}, {0.227983, 0.378704}, {-0.182946, 0.270691}, {-0.133785, 0.099382}, {-0.266511, 0.038997}, {-0.821681, 0.553035}, {0.389307, -1.106532}, {0.135254, -0.883464}, {1.870178, -0.286558}, {-0.437784, -0.288228}, {0.390194, 0.094215}, {0.606508, -1.296029}, {-0.093019, -0.614305}, {1.233362, 1.207790}, {0.161323, -0.765341}, {-0.350088, 1.001790}, {-0.502004, -0.037202}, {-0.067642, -0.030906}, {-0.579459, -0.835251}, {-0.327448, -1.330617}, {-0.822818, -0.500291}, {1.616254, -0.161664}, {0.523254, 0.304197}, {0.874754, 0.727626}, {-0.625833, 0.211643}, {-0.295817, -0.417120}, {-0.533891, 0.548556}, {-0.558758, 0.571516}, {0.822203, 0.414686}, {1.369430, 0.325986}, {1.064004, 0.174272}, {-0.985833, 0.875381}, {-0.345980, 0.354199}, {0.100855, 1.346421}, {1.413487, -0.299202}, {-0.121055, -1.168458}, {0.501534, -0.001734}, {-0.099610, 0.124655}, {-0.014849, -0.560165}, {1.152084, 0.973772}, {-0.517379, -0.823509}, {0.020539, -0.675177}, {-0.039182, 0.878191}, {0.067950, 0.560550}, {-1.394269, 0.829335}, {-0.441627, -0.010153}, {0.385140, 0.222085}, {0.653992, -0.840685}, {0.554082, -0.687828}, {0.754380, -0.171576}, {0.690489, -0.152949}, {0.000351, -0.549264}, {0.634582, -0.004171}, {-0.818523, 1.190795}, {-0.877491, -0.566566}, {-1.770940, -0.640230}, {-0.681648, 0.896819}, {0.714653, -1.455870}, {0.904495, -1.333302}, {0.574457, -0.384864}, {-0.758292, -0.483590}, {0.187676, 0.405114}, {0.994700, -0.071836}, {0.104159, 0.532615}, {-0.044879, -0.582247}, {0.088417, 0.343948}, {-0.123630, -0.413369}, {-0.520220, 1.012739}, {-0.210080, -0.180696}, {1.090599, -0.559357}, {0.684438, 0.378806}, {-0.026784, 0.937192}, {1.281961, 0.075214}, {0.730268, -0.520097}, {0.937449, -1.019487}, {-0.061509, -0.176202}, {-0.421825, 0.313385}, {-0.367561, 0.463862}, {-0.121494, -0.479397}, {0.550684, -0.312000}, {-0.047790, -0.598700}, {-0.759626, -0.857538}, {0.464120, -0.230825}, {0.787116, -0.630031}, {-0.508880, 0.581898}, {-0.454863, 0.576846}, {-0.207468, 1.946940}, {-0.913960, -0.235153}, {1.143211, 0.111025}, {-0.137003, 0.162749}, {-1.146435, 1.853002}, {-0.318815, -0.421180}, {-0.260398, -0.035725}, {0.175171, -0.048527}, {-0.261859, 0.350284}, {0.162278, -0.033220}, {-0.592133, -0.719742}, {1.618602, 0.334038}, {-0.096548, -0.880363}, {-0.348537, 0.448118}, {-0.662260, 0.179356}, {1.039235, 0.256463}, {-0.996895, 0.746454}, {-0.834224, -0.090841}, {-0.647685, -0.812629}, {-1.308253, 0.412350}, {-0.125295, -0.126640}, {0.576406, -0.583028}, {-0.374377, -0.094747}, {0.533871, -0.080927}, {0.515122, -1.155921}, {-0.507165, 0.282523}, {-0.699975, 1.619406}, {0.182354, -0.753123}, {0.710919, -0.243223}, {1.477830, -0.025138}, {1.782881, 0.259661}, {-0.521191, 0.411698}, {-0.166741, 0.852319}, {0.207224, -0.159255}, {-0.487196, 1.583805}, {0.420298, -0.587703}, {-0.287136, 0.347728}, {-0.058681, -1.279535}, {-0.213399, -0.886647}, {-1.030968, 0.343184}, {0.028405, -0.952633}, {0.464603, 0.442204}, {0.931560, 0.453043}, {0.284575, 0.967136}, {0.138022, 0.059599}, {-0.451299, -1.015639}, {1.003979, 1.068919}, {-0.655263, -0.663366}, {-0.019621, -0.138225}, {0.156525, -0.341867}, {0.381232, 0.059268}, {-0.023279, -0.077880}, {-0.156909, 0.250573}, {-0.169278, -0.914286}, {0.305569, -0.291525}, {0.731565, 0.454905}, {1.160261, 0.085413}, {-0.402037, -0.336640}, {-0.086852, 1.607379}, {1.032812, 0.761434}, {-1.011438, 0.206404}, {-0.152752, 0.593129}, {0.239131, -0.087052}, {0.808812, -0.541022}, {-0.140430, -1.364158}, {0.194295, 0.880644}, {0.118366, 0.064148}, {-0.536040, 0.778541}, {-0.720747, 0.002512}, {0.088296, -1.191485}, {0.644848, -0.444607}, {0.485903, 0.409511}, {1.460176, -0.876221}, {-0.339190, -0.439055}, {0.447675, 0.418898}, {-1.175829, -0.902773}, {0.534399, 0.539156}, {-0.365101, -0.459903}, {-0.889603, -0.728754}, {-0.720091, 0.356776}, {0.152954, 0.223066}, {1.507327, 0.739365}, {0.310249, -0.006371}, {-0.112344, -0.419108}, {0.843904, -0.314723}, {0.087930, 0.313616}, {0.844712, 0.196815}, {0.375568, 0.356237}, {0.204981, -0.400083}, {0.361654, -0.270180}, {-0.424588, -0.363919}, {-0.302380, 0.390982}, {0.538019, -0.362291}, {-0.287025, 0.105711}, {-0.592141, -0.264936}, {-0.265425, 0.583077}, {-0.152032, 0.522918}, {-0.189186, -0.250399}, {-1.096465, 0.469056}, {-0.888549, -1.140952}, {-0.501972, -0.339613}, {-0.203446, 0.426474}, {-0.039456, -0.535356}, {0.070475, 0.484328}, {0.924276, -0.396241}, {-0.106967, 0.012352}, {-0.367264, 0.819153}, {0.456802, 0.237844}, {0.563188, -1.024814}, {0.009682, -0.064482}, {-0.764852, 0.219713}, {-0.414932, -0.531342}, {-0.088775, -0.892699}, {-0.473699, 0.186136}, {-0.776648, -0.582610}, {0.175734, -1.058049}, {1.285690, -0.391957}, {-0.091057, -1.011907}, {-0.162767, 0.561617}, {0.031953, -0.540131}, {0.534081, 0.664403}, {-0.360770, 0.122694}, {-0.178962, 0.466559}, {-0.004184, -0.337578}, {-0.757067, 0.029093}, {-1.101300, 0.209913}, {0.465322, -0.086027}, {-0.168690, 1.115947}, {0.263414, -0.000775}, {0.159567, 0.853760}, {0.094110, -0.060344}, {-0.421000, -1.195796}, {0.441781, 0.242496}, {-0.021002, -0.381271}, {-0.481126, -0.563097}, {-0.798248, -0.508280}, {-0.268196, 0.934724}, {1.292721, -0.335166}, {0.226534, 0.445048}, {1.184933, 0.558462}, {0.375495, -1.145480}, {0.748214, -0.745104}, {0.688162, 1.047310}, {0.637883, 0.949140}, {-0.578133, -0.371881}, {-0.506057, 0.137040}, {-0.392437, -1.031430}, {-1.250713, -1.946813}, {-0.206704, 1.462894}, {0.398430, -0.219612}, {0.730672, -0.702692}, {-0.698928, -0.450961}, {0.584867, -0.708127}, {0.590944, -0.109226}, {-0.542510, 0.253958}, {-0.268875, 1.111628}, {0.649546, -0.696286}, {-1.149829, -0.309965}, {-0.154368, -1.500089}, {0.822416, 0.353288}, {0.501110, -0.318761}, {-0.212429, -0.008096}, {-0.006164, -0.123611}, {0.288868, 0.048345}, {-0.574713, -0.524916}, {0.018293, -1.030497}, {-0.005055, -0.072736}, {0.723568, -0.635163}, {0.237863, -0.875191}, {-1.247980, -0.863139}, {-0.302079, -0.212290}, {-0.421802, -0.759025}, {-0.589974, -0.507471}, {-0.334862, 0.003375}, {0.401797, 0.706722}, {-0.461749, 0.283630}, {-0.841187, -0.665548}, {-0.626371, 0.618334}, {-0.020821, 0.503040}, {0.116914, -0.093341}, {-0.151675, -0.528033}, {-0.193343, -1.099319}, {0.274029, 0.445690}, {-0.021446, -1.220103}, {0.513206, -0.740022}, {1.777028, 0.407704}, {0.786759, 0.109353}, {-1.004914, 0.876901}, {0.464743, 1.170006}, {-0.002439, 0.125068}, {0.962875, -0.407956}, {0.530559, -0.756573}, {-0.389738, 0.110620}, {-0.556624, 0.014509}, {-0.132983, 0.247574}, {0.587943, -0.342146}, {1.296368, 0.197680}, {-0.733120, -0.623643}, {-0.011093, 0.978888}, {0.039641, -0.978184}, {-0.443314, -0.153156}, {0.588043, 0.490341}, {0.218709, 0.363791}, {-0.914626, 0.826702}, {1.411108, -0.816719}, {-0.490262, -0.144227}, {-1.206037, 1.156620}, {-0.662082, 0.479091}, {0.615883, -0.149877}, {1.177829, -0.036366}, {0.394260, -1.578483}, {0.383648, 0.485998}, {-0.028002, 0.334074}, {0.722762, 0.190366}, {0.475814, 0.082245}, {0.439991, -0.022567}, {0.014753, 0.128088}, {-1.144640, -0.335474}, {0.470690, 0.257257}, {-0.751319, -1.107300}, {0.531539, 0.456327}, {0.464679, 0.083408}, {0.077604, -2.053833}, {-0.031526, -0.401000}, {-0.741780, -0.921745}, {-0.504616, -1.015580}, {0.999344, -0.252633}, {0.199592, -0.614304}, {-1.630268, -0.100880}, {-0.754618, -0.275004}, {-1.115735, -0.519031}, {-0.156714, -0.646913}, {-0.315061, 0.123277}, {-0.414084, -0.655534}, {0.469319, -0.330941}, {0.647004, -0.163404}, {-0.255922, 1.618105}, {-1.376396, -0.535470}, {1.334960, -0.249415}, {-0.920735, -0.189727}, {2.380895, -0.939174}, {-0.661720, 0.252740}, {1.948294, -0.096848}, {-1.518951, -0.774151}, {0.370676, -0.131442}, {0.135880, 0.077151}, {-0.793921, 0.407360}, {0.434706, 0.909590}, {-0.892096, 0.523341}, {-0.077199, 0.691331}, {-0.703000, 0.726934}, {-0.793375, -0.399673}, {0.170385, -0.177280}, {0.497139, 0.034646}, {-0.972295, 1.093025}, {-0.260981, -0.434597}, {0.295369, 0.422417}, {0.508523, 0.711213}, {-0.589540, 0.610066}, {0.089695, 0.577849}, {-1.169455, 0.371278}, {0.097553, -0.508773}, {-1.427358, -0.450822}, {0.764169, -0.321795}, {0.281425, 1.167852}, {-0.513064, -0.109472}, {1.086924, 0.792903}, {-0.003835, 0.815400}, {-0.876442, -0.231937}, {0.483821, -0.227180}, {0.779304, 0.300537}, {-1.021341, -1.075650}, {-0.042599, 1.217835}, {-0.124324, 1.154569}, {0.983924, 0.128325}, {-0.262283, -0.571139}, {0.163939, 0.036503}, {0.502541, -0.457276}, {0.027506, 0.551723}, {-0.759208, -0.190703}, {-0.532469, 1.757544}, {-0.097832, 1.793890}, {-0.233310, 0.236538}, {-0.296963, -0.245692}, {0.331985, 0.497470}, {1.077897, -0.029477}, {0.485004, -1.550032}, {0.829323, -1.208018}, {-0.417397, -0.885481}, {-0.910960, 0.333680}, {0.505911, 0.222267}, {-0.779049, -0.648859}, {0.024723, -0.506963}, {-1.044112, 0.858742}, {0.349329, 0.199761}, {0.426148, 0.579699}, {1.397881, -0.625570}, {-0.999539, 0.150193}, {-0.506555, -0.493017}, {0.815503, -1.014094}, {-0.309845, 0.860823}, {0.636101, 0.034581}, {0.383700, 0.629026}, {0.046350, -0.409060}, {0.382661, 0.192436}, {1.578886, 0.214420}, {-0.287174, 0.113654}, {-0.567400, 0.209722}, {0.432908, -0.738713}, {-0.114021, 1.023082}, {-0.087467, -0.003324}, {1.628689, 0.382128}, {0.930859, -0.955031}, {0.365787, -0.587545}, {-0.566131, 0.401941}, {1.205574, -0.693033}, {1.041772, -0.318306}, {0.520455, -0.180903}, {1.313961, 0.417802}, {-0.785333, -0.826391}, {-0.003165, 0.987190}, {0.202221, -1.499396}, {-0.156205, 0.234217}, {-0.034555, -0.710464}, {0.578915, 0.025341}, {-0.967250, 0.482964}, {-0.125553, 0.645679}, {0.121600, 0.282214}, {-0.467374, -0.523647}, {0.801851, 0.110140}, {-0.202959, 0.245792}, {0.964451, -0.823875}, {-0.720574, -0.733981}, {-1.552269, 0.726240}, {0.240196, 0.208363}, {-1.020113, 0.453542}, {0.835032, 0.546624}, {-0.427770, 0.890482}, {0.244842, -0.570207}, {0.187974, -0.525677}, {-0.033276, -0.603446}, {0.681630, 0.069452}, {-0.076943, 1.444004}, {-0.466249, -1.483352}, {-0.333822, -0.553728}, {-0.464640, 1.570671}, {0.247143, -0.404809}, {0.217763, -1.913662}, {0.569612, 0.403222}, {-0.950478, 0.269484}, {1.296281, -0.340172}, {0.248056, -0.421869}, {0.333895, 1.464495}, {-0.974868, 0.646046}, {0.432670, -1.031978}, {1.128838, 0.295748}, {-0.460823, 0.493682}, {-0.717489, 1.188427}, {1.258650, -0.377973}, {-0.828146, 0.064178}, {0.641771, -0.060587}, {0.245022, 0.356199}, {0.154221, -0.400658}, {0.570724, 0.989517}, {-0.412180, 0.972591}, {0.350613, 0.545597}, {1.122365, -1.975271}, {0.160367, 0.137915}, {0.352691, -0.878584}, {0.423026, 0.373635}, {-0.726179, 0.179411}, {-0.338326, -1.788241}, {1.947859, 1.575207}, {-0.951344, 0.536022}, {0.247396, -0.497166}, {0.724586, -0.403144}, {-0.061126, -0.153871}, {0.528230, -0.103315}, {-0.022290, -0.672390}, {-0.000978, -0.182703}, {-0.241614, -0.359854}, {0.220241, 0.428535}, {0.798476, -0.295902}, {-0.146218, 0.143398}, {-0.619417, 0.438462}, {-0.308855, 0.331077}, {-1.361136, 1.024312}, {-0.647613, 0.907512}, {0.233092, -1.078341}, {1.052241, -0.621467}, {-0.198725, 1.172681}, {-0.081506, 0.023033}, {-0.547092, 0.137317}, {0.637615, 1.859723}, {-0.623497, -0.596191}, {0.149195, -0.605881}, {0.093756, 0.630550}, {0.213268, -0.787503}, {0.426453, -0.185747}, {-1.548568, 0.881788}, {0.051195, 0.231489}, {0.209291, -0.593744}, {0.628475, 0.857678}, {-1.089235, -0.641101}, {0.594605, -0.576514}, {0.252215, -0.021007}, {1.067553, 0.471123}, {0.321541, -0.402181}, {0.284533, -0.960188}, {0.541105, -0.082863}, {0.565337, 1.026278}, {0.317525, -1.185003}, {0.530922, -0.175306}, {-0.946283, 1.216512}, {-0.462192, 0.124213}, {-0.067219, 0.018689}, {-0.295595, 0.227283}, {-1.116823, 0.278792}, {0.252187, -0.143898}, {-1.275510, 0.009213}, {-0.097323, -1.128635}, {-0.292395, -0.146099}, {0.287647, 0.343419}, {-0.297120, 1.037639}, {-1.152909, -1.062561}, {0.117167, 0.480675}, {0.542487, 0.344975}, {-0.269590, 0.071787}, {0.351416, 1.336789}, {-0.679649, 1.205267}, {0.158638, 0.405538}, {0.690315, -0.580242}, {-0.528184, 0.321935}, {-0.275456, 0.434026}, {1.047915, -0.868060}, {-0.268058, 0.433124}, {0.395739, 0.168345}, {-0.706243, 0.261628}, {-1.686516, 0.100118}, {1.210646, 0.205449}, {-0.403912, 1.149188}, {0.218345, -0.059565}, {0.666191, -1.686280}, {-1.080821, 0.264224}, {0.133752, -0.095685}, {-0.765833, -0.042006}, {-0.851086, -0.571563}, {-0.431850, -0.146573}, {-0.083487, 0.324847}, {-0.458226, 0.266507}, {-1.653483, 0.274261}, {-0.892105, 0.192638}, {0.325240, 0.618814}, {0.839860, -0.650172}, {0.586121, 0.493141}, {0.424046, -0.596069}, {0.579320, -0.426532}, {-0.860414, -0.096015}, {1.231735, -0.063091}, {0.667487, 0.509589}, {-0.244143, -0.241915}, {0.392425, -0.336987}, {-0.577080, 0.077028}, {-0.243798, 0.518442}, {-0.186535, -0.514620}, {-0.350824, 0.893193}, {-1.068767, -0.852674}, {0.256260, -0.692879}, {0.700920, -0.234622}, {-1.148149, 0.242284}, {0.140398, -0.995881}, {-1.137315, -0.101466}, {0.642480, 1.006613}, {-0.539053, -0.106642}, {0.894393, -0.576259}, {0.055949, -0.805028}, {-0.346054, -0.817483}, {-0.401898, 0.351013}, {0.959261, -0.648991}, {-0.653608, 1.002869}, {0.844153, 0.220495}, {-0.631592, -0.347616}, {-0.725926, 1.047737}, {0.236023, 0.283730}, {0.123264, 0.320307}, {1.048852, -0.451049}, {-0.411348, -0.986237}, {-0.003611, -1.217079}, {-0.178690, 0.757153}, {-0.913871, 0.555166}, {0.359649, -0.092164}, {-0.762808, -1.868481}, {-0.459054, -0.002625}, {-0.409244, -0.658257}, {0.538408, -0.336349}, {-0.748231, -0.660716}, {-0.250560, -0.025371}, {0.456996, -0.231112}, {0.299549, -1.219953}, {1.172228, -0.394426}, {-0.378361, 0.665830}, {0.415112, 0.418938}, {-0.548112, 0.102843}, {-0.133962, -0.903369}, {-0.468702, 0.681193}, {1.222459, 1.556622}, {0.578721, 0.124503}, {-0.465609, -1.236596}, {0.344855, 0.485644}, {-0.769591, 0.360454}, {-0.285111, -0.421824}, {0.383924, -0.612774}, {-0.340934, -0.217555}, {1.033859, -0.961846}, {-0.638277, -0.124713}, {0.713854, -1.025591}, {0.641113, 0.723899}, {-0.714185, 0.025297}, {-0.243242, -0.632974}, {0.004698, -0.561759}, {0.826869, 1.173450}, {0.966164, -0.707247}, {-0.542635, 1.049767}, {-0.518506, -0.302156}, {0.545221, -0.705138}, {-0.102193, -0.186358}, {0.365136, 0.095347}, {0.201770, -0.480568}, {0.016332, 0.581984}, {-0.200321, -0.337498}, {0.655831, 0.299526}, {-0.638049, 0.233237}, {1.424052, -0.333001}, {0.052369, -0.134042}, {-0.288253, 1.232961}, {0.183916, -0.245885}, {0.477995, -1.296021}, {-0.386385, -0.681627}, {-0.871080, 0.846105}, {0.995819, -0.009435}, {0.296135, 0.463088}, {0.504048, 0.026186}, {0.829560, -1.492906}, {0.848924, -0.979175}, {-0.656607, -0.872808}, {0.063178, -0.565062}, {-0.543978, 0.668214}, {-0.282821, -0.442039}, {0.348789, 0.133412}, {-0.108280, -0.389999}, {0.463560, -0.296653}, {0.762565, -0.939430}, {0.562681, 0.745310}, {-0.475544, -0.766254}, {-0.140575, 0.199589}, {-0.681751, -0.057548}, {-1.695019, -0.254700}, {-0.534453, -1.252818}, {-0.097463, -0.033164}, {0.013134, 0.327568}, {0.838379, 0.372423}, {0.665435, -1.323001}, {-0.545902, 1.244126}, {-0.272644, 0.828079}, {-0.246118, 0.092456}, {1.201818, 0.219538}, {0.298446, 0.028810}, {0.130586, -1.150124}, {-0.189182, 0.693609}, {-0.220031, 0.117008}, {0.553178, -1.375086}, {0.699370, 0.127016}, {0.961901, 0.570180}, {-0.251472, -0.425322}, {0.846566, 0.693479}, {-0.078834, -0.799604}, {-0.174930, -0.493040}, {-1.328997, -0.114349}, {0.127677, 0.719281}, {-1.121602, -1.078388}, {-0.664228, 1.733879}, {1.383895, -0.064893}, {0.539674, -2.059210}, {-1.022668, 0.526521}, {0.733573, -0.308119}, {-0.188367, 1.132020}, {0.610091, -0.282697}, {0.423397, 0.009993}, {0.393636, -0.644193}, {0.128715, -0.357517}, {0.517623, -0.447918}, {0.158965, 1.067064}, {0.371601, -0.581261}, {-0.927113, -0.619224}, {1.303716, -1.165499}, {0.322206, 0.200896}, {-0.825444, 0.595176}, {0.762828, -1.494917}, {1.295692, -1.470736}, {0.013767, -0.200418}, {-0.238785, -0.631234}, {-0.022044, -0.446997}, {0.407923, -0.215020}, {-0.523749, -0.371120}, {0.713283, 0.184292}, {-0.268406, -0.526939}, {0.138893, -1.775308}, {-0.937942, 1.003578}, {-0.063107, 0.546195}, {-0.317434, 0.743692}, {0.750336, 0.359023}, {-0.674060, -1.184966}, {2.118200, 0.150908}, {0.312808, 0.577403}, {-0.115615, -0.380405}, {0.093313, 0.277709}, {0.781873, -0.614278}, {0.868257, -0.087240}, {0.696852, -0.037947}, {0.418258, -0.615206}, {-0.502346, -0.363948}, {0.607748, 1.486425}, {-0.564759, 0.351200}, {-0.583354, -1.006512}, {0.270122, -0.440737}, {0.779603, -0.084426}, {-0.007898, -0.106035}, {0.320554, 0.214694}, {-0.177764, -1.660508}, {0.364537, -0.190366}, {0.239589, -0.553225}, {-0.383177, 0.604839}, {0.055061, 0.152930}, {0.224963, 0.592680}, {0.196291, -0.213862}, {-0.145762, 0.712477}, {0.968561, 0.056109}, {0.598746, 0.380951}, {0.702798, 0.468182}, {-0.052676, -0.835553}, {0.586200, -0.290487}, {-0.725037, -0.556427}, {0.267490, -0.645407}, {-0.859603, 0.256510}, {-1.167129, -0.483687}, {-0.249517, -0.840456}, {-0.081174, -0.251055}, {-0.107692, 1.266167}, {0.924662, -0.992418}, {0.178689, 0.182523}, {-0.559303, -0.632352}, {-0.754172, -0.225666}, {0.422639, -0.820600}, {0.948590, 1.657351}, {-0.281405, -0.169279}, {0.057540, 0.103383}, {0.965329, -0.888955}, {-0.568440, 1.343059}, {-0.186236, -0.018155}, {-0.110761, -0.791860}, {-0.525465, -0.172692}, {-0.820201, -0.368637}, {0.488156, -0.537817}, {-0.115891, -0.625948}, {-0.244424, -0.566245}, {-0.034738, -0.193282}, {0.995996, 1.175802}, {0.633444, 1.030137}, {0.651915, 0.959199}, {1.923756, -0.905022}, {-1.312415, 0.148790}, {-0.096677, -0.026953}, {0.390501, 0.602404}, {0.867561, -0.780886}, {-0.248516, 0.609102}, {0.754966, -0.110229}, {0.193581, -1.306164}, {-0.006005, -0.435352}, {-0.309464, 0.845346}, {-1.119399, -0.660584}, {1.827421, -0.534782}, {1.365352, -0.177950}, {-0.386234, -0.795813}, {-0.468086, -0.003789}, {0.881840, 0.036744}, {-0.514770, -0.810572}, {0.151684, 0.110164}, {0.458389, 0.323786}, {-0.120473, -1.314917}, {0.204646, 1.100970}, {0.020544, 0.284023}, {-1.429218, 1.177050}, {0.905353, 0.885557}, {-1.160315, 1.849909}, {-1.424230, -1.176559}, {-0.905514, 0.530293}, {0.395918, 0.575079}, {-0.420402, 0.728284}, {-0.068162, -0.727264}, {-1.231408, 0.352116}, {-0.629367, 0.024142}, {-0.776077, 0.835663}, {1.388639, 1.024976}, {0.079304, 0.123010}, {-0.742089, -0.595562}, {0.413633, 0.178427}, {1.148139, 0.310845}, {-1.223023, -0.107151}, {0.893529, -0.158779}, {0.455295, 0.570938}, {0.361370, 0.154722}, {0.452221, 0.207669}, {0.342056, 0.533909}, {1.139659, 0.955398}, {0.954993, 0.826294}, {0.436891, 0.869010}, {0.229994, -0.244482}, {0.099847, -0.476888}, {-0.522935, 0.503299}, {-0.406360, 0.610955}, {0.944435, -0.128204}, {0.065770, -1.670135}, {0.740768, -0.036056}, {-0.584472, -2.391807}, {-0.818919, 0.704807}, {-0.164141, 0.180842}, {-0.896661, 0.450317}, {0.871090, 0.180263}, {0.135365, 1.111712}, {-0.834453, -0.341845}, {-0.257690, -0.035587}, {-0.462253, 0.690694}, {-0.658742, -0.564799}, {-0.424196, 2.228747}, {0.041939, -0.154539}, {-0.403634, 0.374377}, {-1.213989, -0.071425}, {-1.333255, 0.641658}, {0.544231, 0.130374}, {-0.285297, -0.101088}, {0.409156, 0.353600}, {-0.616579, -0.490166}, {0.138329, 1.149111}, {-0.089856, -0.208823}, {0.269195, 0.727445}, {-0.532599, 0.947341}, {1.064642, 0.518264}, {-0.160568, 0.127441}, {-0.982412, 0.428601}, {0.671490, -0.105111}, {-0.544419, 0.539514}, {0.650748, 0.073317}, {1.383643, 0.790720}, {0.254461, -1.150863}, {-1.104232, 0.797452}, {-0.254246, -0.008363}, {-0.300772, -0.103863}, {0.576015, 0.396718}, {1.176581, 0.732102}, {0.153447, 0.054295}, {0.000016, -0.797409}, {0.700654, 0.049420}, {-0.194685, -0.862644}, {-0.478585, -0.200502}, {-1.569114, -0.100896}, {-0.099857, 1.359227}, {0.499119, 0.183329}, {-0.594711, 0.176504}, {0.329206, 1.105346}, {0.247398, -0.273746}, {-0.345935, -0.650667}, {-0.038984, -0.023328}, {-0.333903, -0.697988}, {-1.651307, -0.010374}, {0.135007, -0.017740}, {-0.899312, 0.155947}, {-0.464175, -0.248264}, {0.009996, 0.360149}, {-0.695577, -0.382261}, {-0.402334, -0.007657}, {0.620490, 0.453809}, {0.091440, 0.758711}, {0.343166, 1.541721}, {0.429339, -0.421495}, {-1.151836, 0.034463}, {-0.085981, 0.906358}, {-0.026440, 1.303161}, {0.193819, 0.354018}, {0.562069, -0.395005}, {-0.439914, -0.948032}, {-0.334438, 0.562737}, {-0.864347, 0.208509}, {-0.643184, -0.135769}, {0.053163, 0.285246}, {1.646151, -0.432861}, {1.132792, -0.101623}, {-0.698541, 0.212543}, {-0.600253, -0.394334}, {-1.414120, -0.017888}, {-0.368393, -0.718877}, {-0.680915, 0.363811}, {-0.319313, 0.322213}, {-0.244923, 0.003331}, {1.157367, -0.139673}, {0.607064, -0.324347}, {-0.644671, -0.765634}, {0.089788, -0.064507}, {-0.720007, -0.670351}, {0.360654, 0.469579}, {-0.309126, -0.364294}, {0.500641, -0.866124}, {-0.320571, -0.281417}, {-0.224328, 1.348302}, {0.115238, 0.182192}, {-0.936327, -0.335628}, {0.137544, 0.668139}, {0.100546, -0.022904}, {-0.024822, -0.108423}, {0.011225, 0.990800}, {-0.279834, -0.438608}, {-0.275984, 0.874441}, {-0.823737, 0.963043}, {-0.768202, 1.310865}, {-0.066729, 1.666242}, {0.907228, 0.372265}, {-0.319255, 0.457291}, {-0.671123, 0.800845}, {-0.077611, 0.279797}, {-0.194283, -0.608156}, {-0.041376, -0.876926}, {-0.020332, -0.458281}, {-0.440460, 0.163008}, {0.454897, 0.330234}, {-0.331951, -1.540866}, {-0.633680, -0.034518}, {0.757495, 0.101301}, {-0.833573, -0.786251}, {0.965374, -1.392252}, {-1.562416, -0.203946}, {0.170349, 0.102477}, {-0.297897, 0.362400}, {-0.231639, -0.158231}, {0.959721, 0.665986}, {1.098533, 0.573646}, {-0.091776, 0.472902}, {0.533416, -1.030881}, {0.526210, 1.060061}, {-0.223194, 0.188243}, {-0.611879, -1.854657}, {0.428365, 0.538233}, {-1.044283, -0.338610}, {0.027523, 0.049873}, {-0.049738, 0.893777}, {-0.579892, -0.756394}, {-0.740191, 0.748805}, {-0.542898, -1.202564}, {0.825741, -0.048525}, {0.539443, -1.170783}, {1.033500, 0.348025}, {0.715562, 0.128228}, {0.108775, 0.269008}, {0.955005, 0.864143}, {-0.207915, 0.674605}, {1.403034, 0.313231}, {0.296529, -1.450481}, {0.548132, 1.537754}, {-0.021173, -0.057581}, {0.936941, 0.628264}, {-0.628539, 0.130955}, {0.068526, 0.421100}, {-0.403953, -1.199911}, {1.453961, -0.456943}, {-0.201087, 0.108304}, {0.271445, 0.783038}, {0.520304, 0.921613}, {-1.395021, -0.780013}, {0.131228, -0.186797}, {-0.855353, 0.537660}, {-0.337268, -0.724038}, {-0.432516, 0.344531}, {-0.767389, 0.464180}, {-1.035498, 0.530026}, {0.441212, 0.883714}, {1.105195, -0.408422}, {-1.103082, -0.169069}, {-0.295896, 0.969360}, {-0.478854, -0.782398}, {0.416756, 0.605709}, {0.733967, 0.544675}, {0.971172, 0.356416}, {0.599161, -1.120536}, {-0.248181, 0.556249}, {0.887368, -0.641314}, {0.673646, -0.843245}, {-0.312341, 0.397320}, {0.729720, 1.731690}, {-0.801968, 0.323223}, {-0.536627, 0.327754}, {1.622578, -0.105935}, {-1.750543, -0.207221}, {-1.908934, -0.520022}, {-1.469000, 0.309230}, {-0.115261, 0.192568}, {-0.122709, 0.084334}, {0.189000, 0.696045}, {0.493215, -1.328955}, {-0.721492, -0.333963}, {1.161054, -0.002184}, {0.512723, 1.972711}, {-0.444754, -0.130414}, {-0.868852, -0.249870}, {-0.816170, 0.515289}, {1.022070, -0.030086}, {-0.638999, -1.338192}, {0.242959, 0.271414}, {-0.602075, -0.601963}, {0.423126, 0.633321}, {0.223533, 0.010055}, {0.646706, 1.390161}, {-0.357542, 0.682465}, {-2.009524, -0.830636}, {-0.778937, -0.933904}, {0.175269, -1.002111}, {-0.634257, 0.665399}, {-0.657813, 0.290878}, {0.747272, -0.428248}, {0.007320, -0.768663}, {1.248404, -0.212529}, {-0.270378, 0.342898}, {-0.666666, -1.140755}, {0.196211, 1.501705}, {0.302202, 0.083526}, {0.991868, -0.189178}, {0.155298, -1.253545}, {-0.466703, -0.348936}, {0.716118, 0.723010}, {-1.105804, -0.353013}, {0.555094, 0.469380}, {-0.287244, 1.500390}, {-0.246485, 0.237558}, {-0.510462, -0.763731}, {-0.561608, -0.551817}, {-0.069471, 0.227096}, {1.137497, 0.948345}, {0.172721, -0.065489}, {0.748416, 0.831896}, {-0.155555, -0.792121}, {-0.477453, 0.763809}, {0.124495, 0.775665}, {-0.615673, 0.574783}, {0.204540, 0.358135}, {-0.903123, -0.381671}, {0.487242, 0.995473}, {-0.926024, 0.064502}, {0.929931, 0.258942}, {0.312395, -0.341280}, {0.549625, -0.936615}, {-0.861195, 0.434874}, {1.386344, 1.002935}, {0.150581, 1.440757}, {-0.223814, 0.226411}, {-1.239970, 0.911429}, {0.525911, -0.294822}, {0.774677, -0.033484}, {-0.481076, -0.140935}, {0.097171, 0.602864}, {0.273227, 1.072022}, {0.309890, 0.473631}, {-0.466034, 0.111893}, {-0.691036, 0.030113}, {-0.821156, -0.280252}, {-0.526502, -0.289481}, {0.720837, 0.871377}, {0.790615, 0.875528}, {0.797253, 0.484843}, {0.111852, -1.055992}, {0.169400, 0.295747}, {1.171135, -0.137264}, {0.290213, 0.662161}, {-0.393626, -0.143884}, {-0.749653, -0.256666}, {0.260497, 0.439210}, {1.135854, -0.431511}, {0.258906, 0.670444}, {-1.066888, -0.119150}, {0.453981, 0.837529}, {0.411804, 0.845536}, {-1.059449, 0.036210}, {0.764611, 0.473083}, {-0.027347, 0.346493}, {0.339275, -1.308645}, {-0.110170, -0.533479}, {-0.509505, 0.121273}, {0.007601, 0.222193}, {0.245116, 1.845521}, {-0.063218, 0.106742}, {0.947333, 0.014644}, {0.082611, -0.363300}, {0.686892, -0.186853}, {1.235221, 0.021879}, {-0.257780, 0.017378}, {0.015664, 0.281120}, {0.190295, 0.897504}, {0.379354, 0.120590}, {0.427338, -0.164006}, {1.172924, 0.915224}, {0.721570, -1.247163}, {0.084550, 0.312004}, {-1.286085, 0.190192}, {0.284174, -0.119200}, {-0.010789, -1.373622}, {-0.185711, -0.418035}, {0.505770, 0.363854}, {0.061188, 0.700576}, {-0.462928, 0.573874}, {0.740084, -0.629523}, {0.528961, 1.652541}, {0.623314, 0.190869}, {-0.597870, -0.927126}, {0.533533, 0.251731}, {0.277124, 1.153433}, {0.851106, -0.786252}, {-1.330171, 1.147345}, {-0.464697, 0.070864}, {0.212042, -0.145618}, {-0.687571, 1.186801}, {0.481482, 0.178028}, {-0.149879, 0.044565}, {-0.223578, 0.104703}, {0.574649, -0.285176}, {-1.833740, 0.013517}, {-1.725660, -0.234990}, {-0.463536, 0.588847}, {0.902710, 0.788674}, {-0.254637, -0.532033}, {0.572229, 1.349808}, {-0.063305, -0.215431}, {0.516429, 0.299522}, {-1.130246, 0.308680}, {-0.900674, -0.507683}, {-0.583496, 0.223002}, {-0.592279, -0.950809}, {-0.100426, -0.586777}, {-0.028076, 0.677118}, {-1.803788, -0.573550}, {-1.088822, 1.183910}, {0.596317, -1.549580}, {0.668189, -0.306555}, {-0.020441, 0.607971}, {0.853888, 0.246148}, {0.879904, 1.225752}, {1.614124, 0.830021}, {-0.291743, -0.135559}, {0.458523, -0.480775}, {0.275255, 0.138678}, {0.883940, 0.525436}, {-0.542455, -0.182128}, {0.999170, -0.332015}, {0.099745, 0.792268}, {0.708489, 0.722752}, {-1.050482, -0.202141}, {-1.139348, 0.223888}, {-0.165198, -0.429917}, {0.319484, 0.084528}, {0.047179, 0.526009}, {-1.274314, -0.347434}, {-0.377124, 0.028014}, {-0.360881, 0.915426}, {-0.725553, -1.003947}, {0.135016, 0.821066}, {0.748460, 0.802817}, {0.130105, 0.256667}, {-0.269583, 0.719719}, {0.649401, 0.873793}, {0.987143, 0.161186}, {-0.240362, 0.789136}, {-0.121450, 0.924916}, {-0.259843, 0.404871}, {0.016597, -0.851491}, {-0.042926, -0.009539}, {-0.196370, -0.423108}, {-1.535905, 0.622120}, {-0.853325, 0.069428}, {-0.713308, 0.493254}, {0.023896, 0.016209}, {-1.230161, 0.130732}, {0.290839, -1.217903}, {-0.256162, -0.539416}, {0.629392, 0.257101}, {0.982458, -0.309371}, {1.120927, 1.254970}, {2.080817, -0.873252}, {-0.419871, 0.427512}, {-0.008634, 0.589147}, {-1.033991, -0.181336}, {0.243382, -0.186332}, {0.333660, -0.327366}, {0.221360, 0.080553}, {0.704698, 0.309089}, {-0.450895, 0.130395}, {0.168094, -0.573576}, {1.018659, 0.358155}, {0.418952, -0.622499}, {-0.997778, 0.362820}, {0.222152, -0.219744}, {-0.166802, 0.480155}, {-0.919339, -0.890832}, {-0.286039, 0.292035}, {0.448303, -0.301572}, {-0.449567, 1.207951}, {0.897655, -0.477985}, {0.503965, -0.545751}, {0.401514, -1.644501}, {0.271308, 0.286347}, {-0.284592, 0.577983}, {-0.009884, 0.478410}, {1.517272, -1.524143}, {-1.437806, 0.700884}, {-0.275556, -1.439763}, {1.893314, -0.130608}, {-0.166340, 0.557318}, {-0.691321, 0.091720}, {-0.106616, 0.561819}, {-0.383283, -0.766395}, {0.775944, 0.312252}, {0.208777, -0.783645}, {-0.680476, 0.061669}, {0.183494, -1.161476}, {-0.392678, -0.523162}, {-0.073376, 0.398882}, {1.160349, -0.807825}, {-0.986883, 0.472541}, {-0.034247, -0.317474}, {0.352450, -0.542563}, {0.578726, 0.400276}, {-0.141064, -0.541357}, {-0.202180, 0.303236}, {-0.873698, -0.388820}, {-1.241604, -0.714657}, {0.264090, -1.498626}, {0.602075, 0.227838}, {-0.154430, 0.667914}, {-1.462996, 0.458992}, {-0.822634, 0.424372}, {-0.658739, 0.865879}, {-0.422218, 0.182616}, {0.053181, -0.072330}, {-0.062806, 0.762247}, {0.835446, -1.311912}, {0.087703, 0.026320}, {0.542328, -0.151886}, {-1.828505, 0.593531}, {-1.080520, 1.086271}, {0.849256, 0.525323}, {0.497942, 0.697413}, {-0.244531, 1.043887}, {-1.458797, -0.216500}, {-1.214738, -1.022308}, {0.159061, -0.098262}, {0.727952, 1.271393}, {-0.754485, 0.954004}, {-0.176632, 0.615747}, {0.028411, -0.767032}, {-0.748180, -0.441965}, {0.242074, -0.788659}, {0.670060, 1.096734}, {0.154009, -1.243446}, {0.850586, -1.501833}, {1.150581, 0.774110}, {-0.989572, 0.879881}, {-0.575178, 0.294339}, {0.003447, 0.489239}, {1.145287, 0.324623}, {0.184091, -1.062771}, {0.158889, 0.215402}, {0.201577, 0.011042}, {-0.181512, -0.504270}, {-0.055374, 0.590276}, {-0.531721, -0.884568}, {-0.209470, -0.372283}, {-1.255795, -0.759923}, {0.366333, -0.922058}, {1.322717, -0.181335}, {-0.678275, 1.164669}, {-0.750670, -0.137794}, {0.112897, 0.410423}, {0.191286, 0.113733}, {-0.452766, 0.723349}, {-0.736083, -0.170689}, {0.692416, 0.132405}, {1.018870, -1.559833}, {-1.443120, -0.229399}, {0.716224, 0.947647}, {0.279685, 0.653005}, {0.710520, 0.177459}, {-0.557518, -1.425511}, {-0.256127, 0.315232}, {-0.082281, 0.579783}, {-0.857951, -0.531888}, {-0.747733, 1.197090}, {-0.006789, -0.966185}, {-0.612837, -0.621645}, {1.132351, 0.561013}, {0.365387, 0.280771}, {0.819015, 0.005642}, {0.077710, -0.275083}, {-0.589305, 0.053577}, {0.746235, 0.106363}, {0.483010, -0.756925}, {0.555464, -1.006915}, {1.083126, -0.706053}, {-0.114394, -0.110508}, {1.101602, -1.451006}, {0.482109, 0.584615}, {0.242472, -1.768441}, {2.096101, 0.679566}, {-0.527421, -0.071384}, {1.001152, 0.540874}, {1.515730, -0.408948}, {-1.081754, -0.587317}, {-1.534001, -0.908835}, {0.161009, 0.022969}, {-0.555147, 0.084544}, {-0.049147, 0.004229}, {-0.281130, 1.140545}, {1.877216, 0.501126}, {0.834883, 0.052106}, {0.108568, -1.416109}, {-0.496393, -0.851726}, {-0.546421, -0.850434}, {-0.100497, 0.366563}, {-0.505233, -0.181871}, {0.003181, -0.257644}, {-0.427184, 0.802357}, {2.175829, 0.214003}, {-1.470833, -0.859757}, {0.177123, -0.005589}, {-0.155512, -0.028954}, {-0.576782, -0.183170}, {0.659928, 0.889550}, {0.547329, -0.667458}, {1.543267, -0.883763}, {-0.027341, -0.587168}, {-0.767299, 0.181322}, {-0.058809, 0.621716}, {-0.136666, 0.112151}, {1.320616, -0.923620}, {-0.758136, 0.563569}, {-0.896224, 0.826225}, {0.415972, 1.835909}, {-0.226084, 0.573171}, {0.648683, 0.868590}, {0.148597, 0.095773}, {-0.923255, -0.006413}, {0.008498, 0.345011}, {-0.438936, -0.177137}, {-0.220799, 0.289912}, {0.374629, -1.246758}, {-0.405352, -0.920192}, {0.267008, 0.274742}, {-0.976383, -0.137177}, {0.688771, 1.380999}, {-0.478994, -0.518246}, {0.005349, 0.286922}, {-0.296630, 0.203362}, {-0.543880, -0.873593}, {1.511098, -0.907825}, {0.433183, -1.112696}, {0.716750, -0.497192}, {0.545947, 0.471261}, {1.624519, -0.037766}, {-0.383763, -0.364185}, {-0.361717, 0.471989}, {-0.997984, 1.419701}, {0.816524, -0.299520}, {-0.245384, 0.189731}, {0.065447, -0.059209}, {0.779328, 0.204790}, {0.731539, -0.345297}, {0.404574, 0.248687}, {1.043347, 2.307089}, {0.334605, -0.253063}, {-0.216840, -0.098456}, {0.350238, -0.382642}, {0.349119, -0.532957}, {-1.859158, -0.233730}, {0.862392, -0.445325}, {-0.101752, -0.036104}, {-0.378956, -0.338704}, {-0.994805, 0.464318}, {-0.996382, 0.208659}, {0.808323, 0.455032}, {-2.112046, 0.061540}, {0.819598, 0.624593}, {0.878981, 1.053073}, {-0.341489, -0.442258}, {-0.496671, -0.854729}, {0.065132, 0.231571}, {-0.246478, 0.530029}, {-0.284105, 0.054951}, {0.376465, -0.172238}, {0.299234, 0.652101}, {-0.627995, 1.886543}, {-0.482888, -0.856058}, {-0.830026, -0.832774}, {0.779929, 0.337171}, {-0.369851, -0.412797}, {-0.432700, 0.692209}, {-0.065776, 1.142133}, {1.054275, -0.392488}, {-0.718737, -0.644947}, {-0.076992, -0.542669}, {-0.175216, 0.328426}, {-1.591234, -0.008631}, {-0.369091, -0.575943}, {-0.664370, 0.357384}, {-0.223916, -0.159983}, {-0.524674, 0.109124}, {0.980964, 0.285221}, {1.085013, 0.302149}, {0.239054, -1.200352}, {-1.131626, 0.880129}, {0.611328, 0.462691}, {0.109595, -0.038623}, {0.137486, 0.811529}, {0.196871, -0.418142}, {0.699526, -0.181672}, {-0.998589, 0.332045}, {-0.339367, -0.358573}, {-0.870253, 0.811889}, {0.424311, 2.218276}, {0.122027, 0.056903}, {-0.485555, -0.599874}, {-0.023325, 0.457989}, {-0.257390, 0.531017}, {-0.594800, -0.363526}, {1.037002, 0.461854}, {0.667577, 0.489237}, {0.025804, 0.603610}, {-0.453581, -0.162107}, {0.230955, -0.243543}, {-0.669782, 0.966822}, {-0.624782, -0.044558}, {-0.787855, 0.834564}, {-0.309755, -0.555690}, {0.895544, 0.561778}, {-0.081447, -0.146939}, {0.741198, -0.128052}, {0.669056, 0.986545}, {-0.747874, 0.482845}, {0.073550, -0.909752}, {-0.872751, -0.413878}, {-0.863929, -0.294266}, {1.093727, -0.577195}, {-0.161357, 0.324918}, {0.125704, 0.723239}, {-0.766171, -0.998274}, {-0.023512, 0.626686}, {-0.790729, -0.296770}, {2.140339, 0.378394}, {-0.262331, 0.246625}, {-0.856882, -0.281878}, {0.997209, 0.093078}, {1.148219, -0.546145}, {-0.030454, 0.592030}, {0.076696, 0.233782}, {-0.141260, -0.777390}, {-0.589189, -0.483685}, {0.289672, 0.386135}, {-1.264861, -0.995417}, {-0.042752, -0.532604}, {-0.134781, 0.365284}, {-0.340780, 1.472232}, {-1.483415, 0.914143}, {-0.283508, 0.156881}, {-0.736152, -1.343692}, {-0.096745, 0.290601}, {0.091744, 0.223455}, {-0.353464, 0.284825}, {-2.136104, -0.528703}, {0.494303, 0.010275}, {0.096905, -0.401126}, {0.727808, 0.185508}, {-0.613681, 0.534158}, {1.044872, 0.971303}, {0.717104, 0.100286}, {-1.419618, -0.604448}, {-0.410767, -0.231726}, {0.848536, 0.951917}, {0.746859, -0.161283}, {-1.056914, -0.626140}, {-0.302984, 0.411916}, {-0.391683, 0.373145}, {-0.314457, 0.491804}, {1.239795, -0.694703}, {-0.168077, -0.742324}, {0.053671, 0.573151}, {1.116908, -0.547143}, {-0.580176, 1.202944}, {0.088589, -0.455011}, {0.779909, 0.947051}, {-0.559228, -0.818329}, {-0.112108, -0.428851}, {0.483455, 0.814911}, {1.219918, -1.265525}, {-0.808586, 0.580155}, {-0.538486, -0.056154}, {0.696324, 0.122801}, {-0.312645, -0.640077}, {0.504048, -1.031634}, {0.178747, 0.494393}, {1.744485, 1.430984}, {-0.106728, 0.085838}, {-0.572292, 0.236523}, {0.052278, 0.163252}, {0.083152, -0.214327}, {0.114333, 0.425771}, {0.359542, -0.296919}, {-0.935315, 0.054319}, {0.076361, -0.824908}, {-0.081657, 0.104635}, {-0.267140, -0.395640}, {0.426262, -1.206860}, {0.257655, 0.559848}, {0.244592, 1.151796}, {0.897633, -0.515393}, {0.418324, 0.647156}, {-0.741549, 0.112829}, {0.988401, -0.625204}, {0.369894, -0.802808}, {0.658272, -2.303792}, {-0.215105, 1.646744}, {0.519888, 1.012419}, {-0.238965, -0.324462}, {-0.112710, 0.191850}, {-0.066331, -1.146826}, {-0.038528, -0.023964}, {0.373568, 0.001974}, {-0.864264, -0.906543}, {0.679871, 0.421732}, {-0.043741, 1.101931}, {-0.552452, -0.138525}, {-0.095636, -0.883681}, {-0.072871, 0.876045}, {-0.238791, 0.132820}, {0.244078, -0.390211}, {-0.082340, 0.487018}, {0.796116, 0.096262}, {0.408338, 0.230686}, {-0.441585, -0.626388}, {0.365510, 0.719968}, {0.126699, -0.388437}, {0.110592, -0.075274}, {2.264902, -1.563334}, {-0.272466, -0.015424}, {0.608222, 1.351945}, {-1.147737, 1.113406}, {0.284979, -0.205787}, {-0.450449, 0.238860}, {1.027885, -0.840673}, {-0.455186, -0.221859}, {-0.938632, -2.082159}, {1.391911, 0.802204}, {0.975475, -0.276338}, {-0.243330, -0.064295}, {0.138971, 0.536216}, {0.691166, 0.177819}, {1.026026, -1.879955}, {-0.187583, 0.063026}, {-0.074402, -0.288843}, {-0.243687, 0.652614}, {-1.212718, -0.767727}, {0.251387, 0.506600}, {-0.660165, 0.422242}, {0.679188, 1.371130}, {-0.170699, -0.614176}, {0.520129, -0.476992}, {0.848435, -0.401178}, {0.405024, -0.093561}, {0.626143, 0.076985}, {0.295405, -0.762852}, {0.549177, 0.725065}, {0.526664, 0.156528}, {0.977468, -0.889557}, {-0.501570, -0.343316}, {-2.000729, -1.623071}, {-1.946962, 0.328553}, {0.777598, -0.856117}, {-0.326491, 0.100360}, {0.198779, -0.141495}, {-0.995361, -1.077920}, {0.047623, -0.345042}, {1.887429, -0.220347}, {-0.157694, 0.558083}, {0.462495, -0.577463}, {-0.215078, -0.858704}, {1.253739, 0.253756}, {-0.169634, -1.005008}, {-0.047497, 0.740879}, {-0.581666, 0.040685}, {-0.201745, 1.662973}, {0.317519, -1.047738}, {0.967803, 0.032915}, {0.212464, 0.089187}, {0.718780, 0.944362}, {-1.948257, -0.331151}, {0.922229, -0.646998}, {-0.627500, 0.378164}, {-0.222201, -1.313254}, {-0.266142, 0.014479}, {-0.424176, -0.993625}, {-0.059820, 0.319289}, {-0.843761, -0.433096}, {0.087394, -0.412266}, {0.305914, -1.210798}, {0.471462, 0.643052}, {1.252232, 0.000904}, {0.216403, -0.122659}, {1.216662, 0.381311}, {1.296341, -0.140316}, {-0.022925, 0.194975}, {0.862409, 0.620792}, {0.064807, 1.351515}, {-0.565969, -0.236810}, {-0.155437, 0.605360}, {0.051996, 0.325921}, {0.150445, 0.429124}, {0.459964, 0.511976}, {0.428904, 0.323586}, {0.188316, -0.513317}, {0.939000, 1.371945}, {0.649626, -0.024783}, {1.376851, 0.200015}, {-0.048111, -1.183880}, {-0.786435, -0.777301}, {-0.241709, 1.388115}, {-0.109006, 0.946566}, {1.156840, 1.561297}, {-0.127523, 1.700414}, {0.761736, -0.883463}, {-1.099255, -0.579362}, {1.338325, 0.799131}, {-1.021709, 0.379151}, {-0.994399, 0.063684}, {0.818383, -0.273057}, {0.668366, -0.297543}, {-1.015779, 0.889539}, {0.913941, -0.629156}, {-1.700678, 0.079532}, {0.256160, -0.369452}, {0.150019, 0.098158}, {-0.119020, -1.045646}, {0.741243, -0.716726}, {-1.108436, 0.863056}, {0.307252, 0.506812}, {-0.171352, -0.503576}, {1.261155, 0.176500}, {0.174007, -0.712686}, {-0.141806, 0.330990}, {-0.109117, -0.228317}, {0.203634, 0.606610}, {-0.712412, 0.250541}, {-0.137947, 0.768827}, {-0.744735, 0.914129}, {-1.167755, 0.152721}, {0.327150, -0.113608}, {0.177006, -0.387882}, {0.848800, 0.884244}, {-0.111614, -0.152304}, {-0.300267, 0.243189}, {0.093467, 0.290017}, {1.352682, 0.983666}, {0.299551, 0.490373}, {-0.353636, 0.504747}, {0.613392, -0.069319}, {1.054224, -0.871011}, {2.339625, -0.344715}, {-1.010481, 0.230538}, {-0.539544, -0.583309}, {0.499012, 0.102340}, {-0.575380, 0.783295}, {0.805940, 0.307558}, {0.417599, -0.060720}, {-0.177191, -0.033481}, {0.109710, -0.280558}, {0.446148, -0.888981}, {0.195612, -0.768271}, {0.039506, 0.628468}, {-0.492624, -0.504992}, {-1.396420, -0.011736}, {-0.046356, 0.570300}, {1.085142, -1.294011}, {0.752542, -0.090279}, {-1.473829, 0.875925}, {0.761430, -0.161165}, {0.959718, 0.258992}, {0.460259, 0.467090}, {0.108088, -0.414908}, {0.842820, 0.796490}, {0.248226, 0.228333}, {-0.166433, -2.038801}, {-1.326628, -0.722473}, {-0.475355, 0.696458}, {0.138056, 0.500725}, {0.168092, -0.866839}, {0.019798, -0.447601}, {-0.724926, 0.046180}, {-0.276801, 1.054389}, {0.003609, -0.044388}, {-0.692568, 0.378780}, {-0.950437, -0.173717}, {0.251268, -0.282029}, {-0.439649, 0.031710}, {-1.080425, -0.215370}, {0.719048, -0.338402}, {-0.687926, -0.765291}, {-0.401951, -1.098793}, {-0.568740, -0.550765}, {-1.100182, -1.817952}, {0.427277, 0.515781}, {-0.227288, 0.535524}, {0.311561, -0.427903}, {0.531886, 0.638625}, {-1.225598, -0.291583}, {-0.123388, -0.705261}, {0.958207, 0.537159}, {0.328784, -0.348955}, {0.027395, -0.081869}, {0.067524, 0.032020}, {0.528416, -0.759115}, {0.941596, -0.896593}, {-0.219845, -0.026498}, {-0.032095, 1.010285}, {-0.610792, 0.633952}, {0.108644, 0.649716}, {0.552711, 0.848451}, {0.201063, 0.583580}, {-1.261548, 0.388021}, {0.890668, -0.175176}, {0.607208, -0.307948}, {-0.205981, 0.041344}, {-0.776250, 0.177243}, {0.337239, 0.161071}, {-0.037705, -0.120282}, {-0.014045, -1.241609}, {-0.555803, 0.188605}, {0.241814, -0.987252}, {-0.463139, 0.874492}, {-0.070504, 0.160308}, {-0.178391, 0.972757}, {-0.366224, -1.177044}, {0.971867, 0.479103}, {0.125259, 0.461216}, {0.694764, -1.494325}, {-0.277845, 0.320865}, {0.616292, -0.626879}, {-0.030863, 0.874982}, {-0.766846, -0.016767}, {-0.369774, 0.258101}, {-0.149097, 0.291851}, {-0.493542, -0.295266}, {1.146361, -0.267924}, {-0.934380, -0.011444}, {0.415305, 0.183752}, {-0.491891, -0.357477}, {-0.560602, -0.794771}, {0.317386, 0.323920}, {-0.500328, -0.562780}, {0.041451, -0.181370}, {-0.529525, -0.497591}, {0.648109, 0.580791}, {-0.582613, -0.249940}, {-0.051540, -0.826063}, {1.646775, 0.986751}, {0.481024, -0.258589}, {-0.789469, -0.719895}, {0.638624, -0.406398}, {-0.281974, -0.250588}, {-0.619277, -0.458814}, {1.953618, -0.616999}, {1.097286, 0.692794}, {-0.079763, 1.146230}, {-0.662413, -0.114838}, {-0.710125, -0.561579}, {0.652582, -1.218519}, {-1.107519, -1.568995}, {-0.128567, -0.868703}, {1.148380, -0.401765}, {0.275385, 0.300600}, {0.619924, 0.435204}, {0.536274, -1.285634}, {-0.410239, -0.168935}, {0.305748, 0.032075}, {-0.278987, -0.244613}, {0.272564, -0.215397}, {0.442925, 0.284863}, {0.343083, -0.985089}, {0.243655, -0.535491}, {-0.058256, -0.138061}, {1.469464, 0.252023}, {0.457389, 0.293408}, {-0.401809, 0.313757}, {0.756131, -0.077182}, {-0.785143, 0.185929}, {0.335933, 0.863780}, {-0.386318, -0.435270}, {0.083281, -0.052628}, {0.228627, -0.248970}, {0.607702, -0.139063}, {-0.640376, -1.314560}, {-0.128571, -0.846763}, {0.614100, -0.123165}, {0.129793, -0.321393}, {-0.266171, -0.648007}, {0.416713, -0.029613}, {0.225510, 0.728644}, {0.393598, 0.429328}, {1.597007, -0.340253}, {0.768635, 0.000382}, {0.010930, 0.047671}, {-0.193073, 0.323188}, {-1.230056, 0.049060}, {-0.445542, -0.226577}, {-1.104063, -0.513824}, {0.799375, 0.141533}, {0.706937, 0.178929}, {0.236867, 0.128337}, {-0.097298, -1.042810}, {-0.735652, 0.420616}, {-0.588963, -0.623118}, {-1.635909, 0.027266}, {-0.945824, 1.046139}, {-0.697924, -0.368466}, {0.335071, -0.324357}, {0.418055, -0.170021}, {-0.243762, 0.064872}, {0.400947, -0.261076}, {-0.356738, -0.672932}, {1.059406, 0.747656}, {0.122394, -0.472220}, {0.295724, 0.705496}, {-0.593362, 0.561189}, {0.827451, -0.913072}, {0.575753, -0.582888}, {-0.449487, -1.203258}, {0.002070, -0.209496}, {-0.819372, 1.013107}, {-0.223983, 0.409793}, {-0.105117, -0.240320}, {0.505813, 0.544863}, {-0.062506, 0.840417}, {-0.074185, -1.498686}, {-0.050561, -0.531679}, {-0.407497, 0.036355}, {-0.640938, -0.667689}, {0.015491, 0.043753}, {0.687209, -1.632878}, {0.618242, -1.063427}, {-0.241815, -0.839270}, {0.602280, 0.346705}, {-0.701291, 0.105225}, {-0.407340, -0.339801}, {-0.345298, -1.047087}, {-0.134469, -0.783420}, {-0.543787, 1.086768}, {-0.222433, -0.012544}, {0.760408, -0.125045}, {-0.585757, -1.015366}, {-0.622145, -0.507983}, {-0.105669, -0.357043}, {-0.255007, 0.058948}, {-0.925739, 0.274361}, {-0.375779, -0.555844}, {0.432849, 0.596696}, {0.057883, -0.368657}, {-0.451532, -0.509855}, {-0.756553, -1.048769}, {-0.348112, -0.540951}, {-0.831728, -0.598372}, {0.332533, 0.729092}, {-0.135877, 0.565378}, {0.062568, -0.041090}, {-0.367750, -0.509901}, {-0.553719, -0.111947}, {-1.021522, 0.275873}, {-0.050085, 0.315809}, {-0.928466, 0.206772}, {-1.191365, 1.451377}, {0.920724, 1.063243}, {-0.063332, -0.406468}, {-0.515630, -1.279352}, {0.487661, -0.818408}, {-0.027072, -0.002359}, {0.227643, 0.002201}, {1.084393, 0.067814}, {0.552847, 0.362214}, {0.199879, 0.680228}, {0.372569, 0.685069}, {0.292540, 0.321147}, {0.363653, 0.247260}, {-0.588959, -0.794473}, {0.352148, 0.263375}, {0.524180, -1.109269}, {-0.285997, -0.110195}, {-1.179159, -0.952197}, {0.573545, 0.373895}, {-0.224947, 0.447142}, {0.137062, -0.810396}, {0.027311, -0.504226}, {1.193193, 0.163454}, {0.554125, 0.651387}, {0.650385, 0.140576}, {-0.818715, -0.166574}, {0.098850, 0.910239}, {-0.364286, 1.396334}, {-0.209655, -0.775914}, {-0.370780, -1.208692}, {-0.047578, 0.440463}, {1.233010, -0.648612}, {-0.140918, 0.321229}, {0.196838, 0.020064}, {0.376956, 0.417526}, {0.185651, 0.879134}, {0.640523, -0.156284}, {0.743281, -0.154083}, {-0.360541, -0.915597}, {-0.177171, -0.588081}, {0.960627, -0.156028}, {0.537350, -0.452252}, {-0.235733, -0.027291}, {-0.746237, -0.017686}, {-0.406613, 0.579063}, {-0.994922, -1.060790}, {-0.669324, 0.430821}, {-0.398869, -0.634411}, {0.762944, -0.143725}, {0.283899, 0.878354}, {-0.070692, -1.069885}, {1.509989, -0.562410}, {0.612479, -0.758589}, {-0.176361, -0.743195}, {-1.116313, -0.446980}, {-0.007589, 0.391379}, {0.102751, 0.106416}, {0.704608, -0.302822}, {0.013309, -0.343502}, {1.258582, -0.751478}, {-0.768097, -1.864140}, {-1.428795, 0.401529}, {-0.620903, -1.088542}, {-0.328758, -0.244061}, {-0.351989, -0.302104}, {0.040004, 0.117331}, {-0.116617, -0.037641}, {-0.271723, 0.244152}, {0.359241, -0.171465}, {-0.586401, -0.121233}, {0.604605, 1.161484}, {-0.403794, 1.518033}, {-0.320099, -1.946147}, {1.265835, -1.070397}, {1.028280, 0.157896}, {0.070852, 0.788980}, {-0.628415, -0.602539}, {-0.452347, 0.152041}, {0.078811, 0.062621}, {0.343871, 1.592619}, {-0.148877, 0.159315}, {-0.000463, -0.181856}, {-1.639889, -0.376867}, {0.521937, 1.142912}, {0.935462, -0.231012}, {0.779969, -0.218677}, {-0.354689, -0.476571}, {-0.904562, 0.034987}, {0.125173, 0.573088}, {-0.495766, -1.612758}, {-2.062263, 0.055393}, {-0.580883, 0.751677}, {0.616167, -0.770758}, {0.926324, -0.141294}, {1.046484, -0.562055}, {0.375710, -0.089429}, {-1.166185, -0.487809}, {-0.707975, -0.729558}, {-0.118322, -0.402670}, {0.272092, 0.594689}, {0.240115, -0.224296}, {0.244773, -0.446577}, {-0.046161, 0.215951}, {1.385255, -0.292633}, {0.161275, -0.089966}, {-0.145126, -0.954704}, {-0.061937, 0.085533}, {-0.448217, -0.232410}, {-0.295303, 0.406249}, {-0.273240, -0.980753}, {-0.413078, 0.765020}, {0.565840, -0.524401}, {0.554666, -0.284595}, {0.114768, 0.187983}, {-0.890592, -0.266010}, {0.650560, 0.103151}, {0.586884, -0.342944}, {0.626604, -1.021207}, {-1.554120, -0.024893}, {1.869185, 0.210050}, {-0.012275, 0.388102}, {-0.462074, -0.605148}, {0.255341, -0.179884}, {-0.340660, -1.397953}, {0.187923, 0.360639}, {0.484712, -0.181846}, {-0.177458, 0.360760}, {-0.482337, -0.081107}, {-0.253224, 0.661932}, {-0.724755, 0.316380}, {-0.028731, -0.097583}, {-0.090675, 0.918420}, {-0.288796, -0.874214}, {-1.281843, -1.346400}, {-1.975214, 0.339394}, {-0.613541, 0.515236}, {0.250206, 0.074632}, {0.996936, 0.863932}, {-0.782503, -0.162518}, {-0.086359, -1.378544}, {0.721407, -0.891762}, {0.240897, 0.580625}, {-0.133187, 1.084532}, {1.435339, -0.476021}, {0.283575, 0.906435}, {-0.470645, -0.523456}, {-0.939491, -0.042648}, {-0.949484, -0.012379}, {-0.083733, -0.312338}, {-0.885689, -0.387254}, {0.644921, -1.190076}, {-1.121036, -0.485559}, {-0.356930, -0.523413}, {-0.479120, -0.096518}, {0.952204, -0.417529}, {0.557766, -1.049478}, {1.135059, -0.173027}, {-0.302560, -0.322420}, {-0.183123, -0.081440}, {0.074167, -0.077368}, {-1.407874, 0.624530}, {-0.230311, -0.298617}, {0.770821, 0.424980}, {-1.662785, -0.094771}, {-0.287911, 0.475809}, {-0.048476, -0.203032}, {0.553445, -1.016724}, {-0.376555, -0.217766}, {0.114631, -0.345042}, {-0.593877, 0.872006}, {0.276043, 0.101842}, {0.882983, 0.102907}, {0.001158, -0.755667}, {0.047028, -0.324113}, {-0.646981, 0.918540}, {0.291671, 0.556886}, {-0.137889, -1.529846}, {0.298642, -0.279176}, {1.768655, -0.293840}, {-0.235337, -0.109834}, {0.114141, -1.468380}, {0.478717, 0.202262}, {-0.370501, -1.198972}, {-0.151985, 0.917563}, {-0.053941, 0.940994}, {1.249975, -0.625239}, {0.398662, 0.117818}, {-0.205314, -0.918815}, {-0.419043, -0.126397}, {-1.290054, 0.482208}, {0.604014, -0.941747}, {0.399735, 0.820368}, {-0.249355, 1.154546}, {0.359412, -1.303754}, {-0.016680, -1.368714}, {0.248771, -0.238636}, {-0.263899, 0.869256}, {-0.369987, -0.283830}, {-0.466650, -0.208697}, {-1.657492, -0.255177}, {0.933283, 0.293801}, {2.525568, -0.350252}, {-0.106274, -0.303690}, {-0.411917, 1.078396}, {-0.386613, -1.306253}, {0.971809, -0.252645}, {0.155680, 0.462985}, {-0.520441, -0.015665}, {0.566224, -0.363200}, {0.858518, -0.442505}, {-0.176691, 0.428155}, {-0.006586, -0.742642}, {-0.224886, -0.229415}, {1.261164, -0.739608}, {-0.669418, -0.283427}, {1.069320, -0.425814}, {-1.009479, 0.708147}, {-0.473014, -0.106836}, {0.283953, -0.549942}, {-0.853421, -0.329629}, {-0.464193, 0.622219}, {-0.087188, -0.801405}, {0.500055, 0.318167}, {1.123225, 0.074764}, {-0.235380, -0.485006}, {-0.714091, 0.030128}, {-0.239461, -1.534452}, {1.116795, -0.824399}, {-0.825487, -0.207473}, {-0.051835, -0.448793}, {0.164883, 0.984871}, {0.253362, -0.188939}, {-0.372140, -0.968723}, {0.119889, 0.519344}, {1.497227, -0.331945}, {-1.279538, -0.084243}, {1.188019, -0.265337}, {0.213106, -1.016021}, {0.100412, 0.388037}, {-0.512935, -0.810146}, {-0.598912, -0.689186}, {-0.567116, -1.257426}, {0.086859, -0.193039}, {-0.940346, 0.374944}, {-0.034308, 0.275811}, {-0.545470, 0.096491}, {-0.093181, 0.866228}, {-1.219487, 0.113771}, {1.206312, 0.106241}, {0.892992, -0.849006}, {-1.354809, 0.769571}, {0.735957, 0.424012}, {-0.565301, 0.510339}, {-0.899932, 0.461990}, {1.103376, 0.451826}, {0.132011, -0.842416}, {-0.638797, 0.144869}, {-0.642707, 0.416796}, {-0.427401, 0.363543}, {0.168475, -0.766367}, {-0.751506, 0.061892}, {0.574152, -0.505695}, {-0.335072, -0.286006}, {-0.834026, 0.619608}, {0.547215, 0.287132}, {0.298914, -0.179478}, {-0.561363, 0.759409}, {0.745341, 0.945481}, {-0.902903, -0.037729}, {-0.390261, -0.658194}, {0.279026, 0.870289}, {-0.157925, 0.902163}, {0.536656, 1.220876}, {0.488578, 0.348556}, {-0.531355, 0.421049}, {0.117253, 0.950821}, {0.718010, -0.541365}, {-0.837644, 0.805630}, {0.181802, -0.456620}, {-1.144830, -0.841213}, {0.996041, 0.509847}, {-0.317890, 1.355479}, {0.444140, 0.143680}, {-0.301898, 0.640867}, {0.655019, 0.121403}, {-0.515694, 1.185059}, {0.107950, 0.148497}, {-0.134465, 0.366955}, {-0.413694, -0.651129}, {-1.609086, -0.006717}, {1.545435, 0.251703}, {-0.413004, -0.506535}, {1.058658, -0.827896}, {-0.625554, -1.151844}, {0.662481, 0.578591}, {-0.053525, 0.667165}, {-1.458461, 0.403909}, {1.438034, 1.671089}, {0.449605, -0.144770}, {-0.211705, 0.239155}, {0.737903, -0.691716}, {-0.892143, -0.156775}, {1.022161, 0.568443}, {-0.895021, -1.159661}, {-0.129957, -1.015277}, {0.025829, 0.618146}, {-0.725841, 1.354559}, {-0.404110, 0.239310}, {-0.381553, -1.030973}, {0.661700, 0.726828}, {-0.871968, -0.873774}, {-0.634683, -1.073318}, {-0.190002, 0.527019}, {0.450145, 0.068487}, {-0.493345, -0.565194}, {-0.067292, -1.089015}, {0.311426, -0.162816}, {0.696492, -1.081337}, {-0.079561, 0.192018}, {-1.038164, 0.001589}, {-1.209152, 0.260031}, {0.517225, 0.673063}, {-1.070390, 0.051018}, {-0.172812, -0.518776}, {0.246896, 0.360236}, {1.261445, -1.363637}, {-0.249520, 0.115168}, {-1.039049, 1.002534}, {0.995219, -0.530594}, {0.158186, -0.370508}, {0.269083, -0.100298}, {0.446531, 0.134572}, {0.163460, -0.234424}, {0.655361, -0.266745}, {1.368913, -1.221585}, {-0.037131, 0.339951}, {-0.094642, 0.057267}, {1.801376, 1.555417}, {-0.674158, -0.035333}, {1.133275, -0.083941}, {-0.528994, 0.797127}, {-0.613801, -0.039986}, {0.326418, 0.552173}, {0.961590, 0.195621}, {0.164999, -0.415260}, {1.123196, -0.173849}, {-1.028232, -0.935003}, {-0.006582, -0.860200}, {0.017667, 0.604943}, {-0.069771, -0.320669}, {0.410253, -0.394301}, {-0.464009, -1.065665}, {-0.388085, -0.714962}, {-0.379551, -0.026035}, {-0.465111, 0.046714}, {0.329026, 1.072201}, {-0.204617, 0.340843}, {0.353240, -0.991605}, {0.276096, 0.606240}, {0.180433, 0.509623}, {0.603712, -1.428401}, {-0.288965, 0.170324}, {0.199499, -0.953213}, {0.555000, -0.156563}, {-0.332052, -0.212173}, {-0.551909, -1.110573}, {-0.701355, -0.256082}, {0.052215, -0.905251}, {0.154667, 0.287735}, {-0.375212, 0.075292}, {0.831316, -0.327454}, {-0.544062, -0.324524}, {0.375690, 0.435796}, {1.420773, -1.694466}, {-0.472987, -0.933482}, {-0.295863, 1.125223}, {1.051997, -0.065696}, {-0.318684, -0.268566}, {-0.407761, 0.906795}, {0.611763, -0.834517}, {-0.577473, -0.618957}, {-0.056931, 1.173181}, {1.188827, -0.751072}, {-0.395580, -0.277524}, {-0.286643, -0.821660}, {-0.243831, -0.902510}, {-0.859681, 0.635123}, {0.132016, 0.648423}, {0.176409, -0.202077}, {0.916956, -0.416387}, {-0.387859, 0.270335}, {-0.470603, -1.118427}, {-0.082099, 0.536118}, {-0.319736, 0.623595}, {0.105603, -1.227178}, {-0.246468, -0.676755}, {-0.137842, -0.198255}, {-0.612401, 0.267072}, {0.140070, 0.928564}, {-0.276867, -0.692713}, {0.330789, 0.082247}, {-0.310965, 0.471960}, {-0.638029, -0.130571}, {-0.227627, 0.371444}, {1.447594, -0.579724}, {1.434342, 1.967624}, {-0.533127, -0.360049}, {0.090985, 0.865811}, {1.621069, -0.655068}, {-0.107101, 0.602642}, {-0.678090, -0.200194}, {0.631410, 0.856782}, {0.026655, -0.682962}, {1.024181, -2.110779}, {-0.329181, -0.015544}, {-0.869617, 0.964415}, {-0.574403, 0.639381}, {-0.200844, -0.526831}, {-0.254985, -0.692828}, {-0.627544, 0.386942}, {-0.594953, 0.059818}, {-0.728173, 0.322703}, {-0.125809, -0.264083}, {-0.862048, -0.024952}, {-0.305275, 0.632945}, {0.503292, 0.276135}, {-1.035994, -0.815081}, {0.004263, -0.952890}, {0.188009, -0.695292}, {-0.490270, -0.076733}, {-0.847985, 1.389987}, {0.757101, 0.356868}, {-0.744715, 0.614691}, {-1.179587, -1.951262}, {0.406179, -0.501517}, {-0.567337, 0.303614}, {-0.351789, 1.342365}, {1.001646, -0.588464}, {-0.751630, -0.865141}, {-0.336056, 0.681107}, {0.181667, -0.648438}, {0.661723, -0.599597}, {-0.843666, 0.930312}, {0.610179, 0.011804}, {0.637391, 0.730488}, {0.887057, -0.039574}, {-0.596744, 0.306742}, {0.693533, -0.788946}, {0.358266, -0.635755}, {-0.103668, 1.012763}, {-0.409437, 0.643533}, {0.623653, -0.403418}, {0.974759, -0.268196}, {0.726314, 0.552070}, {-0.209079, -0.180960}, {-0.253123, 0.174441}, {-0.343619, -0.120766}, {0.153239, -1.407465}, {0.003501, -0.301579}, {-0.565188, 1.263652}, {0.256238, 0.366026}, {-0.196671, 0.887337}, {-0.842150, 1.461294}, {-0.109778, -0.496130}, {0.715528, -0.835101}, {-0.091186, 1.525347}, {1.127749, 0.614371}, {0.816348, 0.223844}, {0.088529, 0.545457}, {0.681807, -0.374392}, {0.497116, 0.065098}, {1.063631, 0.330052}, {-0.473036, 0.034874}, {-0.157862, -0.001305}, {0.434218, 0.197264}, {-0.550799, 0.054486}, {0.973037, 0.002784}, {0.493822, 1.160678}, {0.413581, 1.777586}, {0.337161, 0.056664}, {-0.209438, -0.856569}, {0.312104, -0.137281}, {-0.812145, -1.333425}, {-0.687317, 1.281605}, {0.245950, 0.130437}, {-1.137658, -1.119996}, {-0.321589, -0.976619}, {1.042918, 0.688281}, {0.126441, -0.281123}, {-0.690719, 0.538968}, {0.814742, 0.984337}, {0.800806, 1.660842}, {0.253362, 0.679494}, {0.289842, 0.084567}, {0.065649, -1.313600}, {1.285205, 0.734431}, {0.200443, -0.037244}, {1.168457, 0.074900}, {0.726807, -0.504987}, {-0.246237, -0.309694}, {-0.030608, 0.807033}, {-0.040489, -0.022902}, {-0.102770, -0.193521}, {0.760273, -0.024193}, {0.153393, 0.638818}, {-0.049047, 0.072808}, {-0.751583, 0.168734}, {-0.163908, -0.509905}, {0.673933, -0.014424}, {-0.833475, -1.008629}, {-0.590986, -0.105231}, {0.643961, 0.628600}, {0.438267, 0.052614}, {0.110321, 0.046113}, {-0.517915, 1.355916}, {0.868033, -0.159152}, {0.371602, -0.857592}, {-0.419888, -0.337480}, {0.558052, 0.219982}, {-1.131058, -1.257138}, {0.733544, 0.933340}, {-0.646570, -0.253332}, {-0.419020, 0.398702}, {1.839728, -0.458298}, {0.357707, -1.077159}, {0.104771, 0.546341}, {-1.056007, -0.099425}, {-0.111075, -2.042791}, {0.053667, 1.959269}, {0.389828, -0.320662}, {1.618109, 0.681527}, {0.103634, -1.050246}, {0.915626, 0.011762}, {1.378525, 0.843142}, {-0.180366, -1.548472}, {0.582354, 0.761079}, {-0.022354, -0.375777}, {-0.465816, -0.153786}, {0.803733, 1.015041}, {-0.844731, -0.505638}, {0.629193, -0.387865}, {-0.170733, 0.143273}, {-0.240827, 0.231065}, {-1.250344, -0.026121}, {-0.388932, 0.564174}, {0.216054, -0.002170}, {0.232108, 1.522422}, {0.519424, -0.502575}, {-0.052313, 0.444903}, {-0.705677, -0.812735}, {-1.176015, -1.380785}, {-1.723397, -0.849389}, {-0.225763, -0.831275}, {-0.102199, -0.389384}, {0.320482, -0.065426}, {0.050518, -0.353202}, {0.095464, 0.245600}, {0.610228, -1.495030}, {0.499674, 0.301388}, {0.079124, -0.689882}, {-0.176226, 0.270693}, {0.591074, -0.395837}, {0.962485, 1.108556}, {-0.376415, 1.325772}, {1.593700, -1.306007}, {-0.669529, 0.727318}, {0.730542, -0.798588}, {-1.006559, -1.222182}, {0.105828, -0.657938}, {-0.965177, -0.739113}, {-0.235450, 0.413555}, {0.384625, -0.100571}, {1.362594, -1.289672}, {1.236262, 0.729084}, {0.648425, -0.684215}, {0.986055, -0.194520}, {-1.152769, -0.783978}, {0.576223, 0.548201}, {0.097504, -0.259566}, {-0.360024, 0.723081}, {0.607059, -1.003423}, {-0.227951, -0.734850}, {-0.294650, -1.235194}, {0.193334, -1.675714}, {-0.767385, 0.618813}, {0.098473, -1.515022}, {0.358150, -0.135228}, {1.113325, 1.368268}, {-0.151595, -0.246173}, {-1.570232, -0.023322}, {-1.226877, -0.155807}, {1.879898, 0.177321}, {1.050730, -0.192028}, {0.075023, 0.738806}, {0.439378, 0.159967}, {-0.870739, -0.053774}, {-0.613293, 1.773483}, {1.022477, 0.589100}, {-1.903232, -0.116118}, {0.130492, 0.364978}, {-0.889512, 0.294264}, {-0.898750, 0.561895}, {0.251006, 0.804611}, {-0.113566, -0.941961}, {-0.234088, -0.917563}, {-0.250283, -0.288450}, {-0.907878, -0.094818}, {-0.881149, 0.528179}, {-1.303454, -0.223259}, {0.206582, 0.221846}, {-1.571029, 1.443146}, {-0.706678, -0.390482}, {0.141913, 0.510894}, {0.182936, 0.421928}, {-0.119593, 0.561059}, {-0.744027, 0.428400}, {-0.152375, -0.959526}, {1.160939, -0.069288}, {-0.076280, 0.162181}, {0.327619, 0.155115}, {-0.530834, 0.574725}, {-0.430831, -0.101593}, {0.920280, -0.279728}, {0.031487, -0.263205}, {-0.576176, -0.109081}, {0.808516, -0.116405}, {1.125426, -0.338095}, {-0.908021, -0.070953}, {0.115823, 0.531403}, {0.848018, -0.378923}, {-0.380277, -0.804293}, {-0.373310, 0.893974}, {-0.330087, 0.948002}, {-0.086096, -0.437250}, {-0.469167, 0.454149}, {0.970617, 0.231241}, {-0.817633, 0.825176}, {-0.435250, 0.430634}, {1.683802, 0.853621}, {1.351207, 0.235931}, {-0.050678, -0.032962}, {-0.355436, 0.398207}, {-0.678845, -0.389077}, {-0.273377, -0.710650}, {-1.210956, 0.678632}, {-0.755085, -0.086894}, {-1.100352, 0.299255}, {-0.035763, 0.330123}, {0.322939, 1.101242}, {0.595764, -1.157084}, {-1.243325, -0.664861}, {-1.663768, -0.505836}, {-1.267451, 0.873669}, {-0.455003, -0.043938}, {0.470999, 0.538119}, {0.579555, -0.717479}, {-0.802576, 0.421240}, {-0.237682, 0.488393}, {0.862354, 0.812298}, {0.230856, 0.213576}, {0.141439, 0.509505}, {0.206889, 0.858483}, {0.026078, -0.546219}, {0.781592, -0.388893}, {-0.123377, -0.794665}, {0.068495, 1.214323}, {-0.714881, -1.054803}, {-0.461472, -0.106502}, {0.562470, -0.529948}, {-0.709943, -1.806260}, {0.774827, 0.627849}, {-0.082874, 0.781436}, {-0.301659, -0.219263}, {0.608640, -0.139735}, {-0.786892, -1.283778}, {-0.366386, -1.194705}, {1.061684, -0.463841}, {-0.559144, 0.542831}, {-0.177584, 1.693041}, {-0.677950, 0.092316}, {0.408613, -0.701200}, {0.245716, -0.034669}, {0.997366, -0.451955}, {-0.206925, 0.136163}, {0.352996, 1.213371}, {0.148059, 0.397297}, {1.053839, 0.169786}, {0.573741, -0.636227}, {0.612745, -0.530977}, {0.516292, 0.150499}, {-0.036636, 1.234072}, {-0.283012, 0.155921}, {-0.487859, 0.275921}, {-0.763096, 1.543259}, {-1.012146, 0.104486}, {0.648292, 0.052648}, {1.113207, -1.334106}, {1.621335, -0.326147}, {0.044245, 1.144835}, {-0.604862, -0.428931}, {0.208504, 0.480038}, {0.621283, -0.263113}, {-0.268506, -1.286471}, {-1.190871, -0.981942}, {-0.343443, -0.970982}, {-0.443971, 0.172888}, {-0.529676, 0.789394}, {-0.747990, -0.355262}, {0.260979, -0.616260}, {-0.364506, 0.875792}, {0.230262, -0.650448}, {-0.157869, -0.224029}, {-0.138491, 0.273796}, {-0.337906, 0.142918}, {-1.126425, 1.012362}, {-0.045829, -1.204217}, {-0.040201, 0.072991}, {0.095082, -0.512595}, {0.391243, -0.697281}, {0.028836, 0.470680}, {-0.254693, 0.317709}, {0.527280, 0.185890}, {0.679726, -0.539661}, {0.536096, 0.202399}, {0.636754, -0.073378}, {-1.635579, 0.303301}, {-0.055276, -0.309005}, {-0.377681, -0.618366}, {-0.570992, 0.899069}, {0.318571, -1.082007}, {-0.501136, -0.050577}, {0.463349, -0.492909}, {-0.586518, 1.437252}, {-1.498805, 0.669497}, {-0.668884, 0.501976}, {0.849874, -0.274321}, {1.503969, 0.089087}, {0.495296, -0.282796}, {0.643539, -0.319368}, {-0.003123, 0.503895}, {0.448926, 0.415716}, {1.300971, 1.185440}, {0.666304, -1.011385}, {-0.501095, -0.437884}, {0.126722, -0.628526}, {0.602820, 0.306907}, {-1.052462, 1.759648}, {0.804709, -0.383309}, {-0.783674, 0.703607}, {0.555353, -0.894576}, {0.367530, -1.251446}, {-0.379656, 1.053925}, {-0.368063, 1.523577}, {-0.512766, 1.220449}, {0.310470, 1.126447}, {-0.668240, -0.719845}, {1.311328, -0.273581}, {1.193026, 0.758730}, {0.011468, 0.411093}, {0.679916, 0.227215}, {0.200297, -0.461842}, {0.203994, -0.360266}, {-1.711995, -0.791191}, {-0.587169, -0.795622}, {-0.126559, 0.539690}, {-0.311544, 0.215622}, {0.624084, -0.939499}, {0.451027, 0.963659}, {0.053951, 0.473962}, {-0.378173, -0.754404}, {-0.483375, 0.169867}, {0.327772, 0.443014}, {0.438977, -0.918669}, {0.272163, 0.913450}, {-1.148166, -1.651656}, {0.678756, 0.022641}, {-0.162722, 1.419714}, {-0.442976, -0.324650}, {-0.101127, -0.176612}, {-0.257379, -0.900592}, {-0.692997, -0.167735}, {-0.576470, -1.033809}, {0.129483, -0.795888}, {-0.091165, -0.991940}, {-1.546060, 0.754515}, {-1.955953, 0.823558}, {-0.507420, -0.342439}, {0.839643, 0.549449}, {1.041734, -0.351442}, {-0.099299, 0.427514}, {0.396409, 0.685967}, {1.582812, 1.019917}, {0.095047, -1.033650}, {1.097222, 0.232333}, {0.235403, 0.744469}, {-0.956056, -0.248764}, {-0.007542, 1.351857}, {0.829327, 0.165330}, {1.934778, 0.740345}, {-0.042057, -0.505659}, {0.029940, 0.584136}, {-0.660522, 0.974654}, {0.550707, 0.625208}, {-0.736240, -0.090338}, {-0.773422, 1.383895}, {0.164752, 0.971219}, {-0.078130, -0.016604}, {1.174557, -0.671066}, {0.709217, -0.447833}, {1.173960, 0.447247}, {-0.452182, -0.283778}, {0.221362, 0.238256}, {0.438321, 1.115051}, {0.385345, -0.134963}, {-0.116907, -0.452026}, {1.326754, -0.143928}, {0.377629, 0.647795}, {0.706637, 0.054253}, {0.484648, 0.233001}, {0.559643, -0.014661}, {0.442585, 0.019897}, {-0.481860, 0.319169}, {-1.873430, -0.373696}, {-1.468880, -0.338588}, {-0.564341, 0.015573}, {0.135980, -1.308351}, {-0.209918, 0.409567}, {0.134787, 0.555218}, {-0.280328, 0.229205}, {0.356642, 0.145734}, {1.209981, -0.768739}, {0.323467, 0.471938}, {-0.538486, 0.833259}, {0.377447, 1.471453}, {-1.542076, 0.534062}, {0.308006, -0.915789}, {0.667877, 0.838388}, {-1.325876, -0.147813}, {0.049283, -0.409670}, {0.822751, -0.324401}, {-0.248490, 0.044080}, {0.397286, -0.527903}, {0.267321, 0.173917}, {0.097825, -0.258165}, {0.156112, -0.403906}, {-1.493610, -0.584519}, {1.035700, -0.624181}, {0.193366, 0.367275}, {-0.591444, -0.918827}, {-0.031241, 1.199647}, {-0.635795, -0.401301}, {0.292380, -1.257504}, {0.790531, 0.283300}, {-0.612248, -0.856913}, {-0.003711, 0.557474}, {0.046168, 0.504684}, {-0.258980, -0.145285}, {-0.700174, 0.664606}, {-1.044332, 0.112828}, {-1.203219, -0.050509}, {-0.098679, 0.681808}, {0.117978, 1.020073}, {-0.138431, -0.213658}, {-0.373621, 0.314261}, {-1.125660, 0.217905}, {0.579220, 0.315413}, {0.819870, -0.421409}, {0.215607, 0.366435}, {-0.391899, -0.353763}, {0.031600, 0.391145}, {0.779146, -0.001210}, {-0.371743, 0.236842}, {0.044205, 0.077276}, {-0.029682, 0.564854}, {-0.803910, 0.609822}, {0.083413, -0.621601}, {-0.569837, -0.201887}, {-1.037479, 0.198802}, {0.870755, -0.457554}, {-0.644685, 0.562159}, {-0.368567, -0.571753}, {-0.908622, 0.593380}, {-0.022836, -0.725834}, {-0.212127, 0.760100}, {0.182831, -0.768164}, {1.377295, 0.894573}, {-0.388203, -1.179584}, {-0.366572, 0.592177}, {-1.357572, 1.221986}, {-1.467493, 1.254612}, {0.728275, 1.398245}, {0.270538, -0.980435}, {-0.109704, 0.391466}, {-0.819701, -0.282182}, {-1.576902, -0.264228}, {-0.293211, -0.354652}, {0.932537, 0.499530}, {0.124587, 0.187973}, {-1.182933, 0.450079}, {0.045172, 0.295898}, {-0.952133, -0.026615}, {-1.077399, 1.492134}, {2.165598, -0.025851}, {0.615697, -0.448814}, {0.371116, 0.104843}, {-0.637342, 0.743420}, {-0.339935, 1.886651}, {-0.118879, -0.518939}, {-1.136926, 0.479470}, {0.151684, 0.264658}, {-0.017438, 0.081592}, {0.013367, -0.432744}, {0.818175, -0.660425}, {0.169977, 1.246542}, {0.046875, -0.572609}, {0.971265, 1.007843}, {0.552874, -0.763970}, {0.402362, 0.688291}, {-0.177514, 0.862440}, {0.727237, 0.600365}, {-0.123267, -0.320214}, {-0.973245, -1.093332}, {-0.622050, 0.480692}, {0.850534, 0.250697}, {1.435793, -1.334161}, {-0.297031, -1.179966}, {0.304224, 0.432995}, {-0.319411, 0.044257}, {-0.130799, -0.801940}, {0.073259, -0.088438}, {-0.115683, 0.651869}, {-1.284032, 0.744815}, {-0.572874, 1.298015}, {0.284922, -0.246805}, {0.516957, 0.398332}, {-0.407991, -0.949022}, {0.136622, 0.969059}, {0.040189, -0.190255}, {-0.287121, -0.074766}, {-0.610242, -0.365421}, {-0.695631, 0.472487}, {-0.761210, -1.011743}, {-0.159401, 0.335151}, {-0.127480, -2.513513}, {-0.621617, -0.001532}, {-0.233636, 0.540107}, {-0.615082, 0.740370}, {0.728082, -0.745504}, {0.755201, -0.364350}, {1.455688, 0.113219}, {-0.384111, 1.799205}, {-0.060414, 0.594761}, {-0.645534, -1.282521}, {1.354648, -0.365049}, {0.700581, -0.261592}, {-0.420933, 0.412919}, {-0.118914, -0.126970}, {-0.369305, -0.651979}, {0.833302, -0.776442}, {-0.889951, 0.333417}, {0.717829, 0.832634}, {-0.780598, -0.353698}, {-0.126353, 0.156872}, {-0.870306, -0.186695}, {0.188068, -0.272942}, {-0.853431, -0.099724}, {-0.972554, -0.599254}, {-1.109184, -0.599650}, {0.911559, 0.240889}, {-0.351639, -0.044241}, {0.189684, -1.491880}, {0.667445, -0.069260}, {0.369786, -0.124370}, {0.521743, -0.479616}, {-1.023666, 0.709321}, {-0.009410, -1.304473}, {0.457866, -0.753617}, {0.514681, -1.122756}, {0.052715, 0.047106}, {-0.308785, -0.058814}, {-0.543798, 0.853832}, {0.057451, 0.111738}, {0.023706, 0.449120}, {0.854094, -2.321072}, {-1.288841, 0.610626}, {1.070943, 0.900281}, {-0.314136, 0.986491}, {-0.484965, -0.906231}, {-0.534703, -0.786444}, {0.529497, 0.880418}, {-0.594563, -0.523274}, {-0.714857, -0.819102}, {0.846788, -0.989649}, {-0.535982, 0.146718}, {-0.205090, -1.063691}, {0.080422, -1.044347}, {0.026911, 0.228324}, {1.491431, 0.321161}, {0.661557, -0.309540}, {0.438783, -0.302408}, {0.264915, 1.176531}, {0.410967, -0.019055}, {0.147043, -0.649251}, {0.492513, -0.013112}, {0.332999, -0.478951}, {0.068906, 0.560099}, {-0.486798, -0.215182}, {-0.415900, 0.858515}, {0.705293, 1.097754}, {-0.154359, 0.384802}, {-0.221449, -0.178315}, {-0.575917, 0.074498}, {0.146447, 0.313370}, {0.126790, 0.398399}, {0.289635, -0.126919}, {-0.074227, -0.213796}, {-0.065885, 0.678123}, {0.656923, 0.499602}, {-0.564350, -0.575801}, {-0.629272, 1.852769}, {-0.652193, -1.012536}, {0.935159, 0.505553}, {0.010577, 0.401854}, {0.400071, 0.797892}, {-0.638037, 0.362640}, {-1.348614, -0.440950}, {0.377069, -0.621824}, {0.782456, 0.777046}, {0.279392, -0.409277}, {-0.093743, -0.882047}, {0.432319, -0.202289}, {-0.854399, 0.269268}, {-0.569395, -0.550870}, {-1.305619, -0.766131}, {0.399734, 0.356151}, {-0.587518, 0.990603}, {-0.461472, -0.854095}, {-0.776429, 1.123592}, {-2.094551, 0.016854}, {-0.852694, -0.164675}, {-0.752425, -1.146923}, {0.235446, 0.097446}, {-0.191573, 0.584031}, {0.036355, 0.837690}, {0.950405, -0.468673}, {0.022319, 0.946512}, {-0.666949, 0.540367}, {-0.517209, -0.408994}, {-1.497582, 1.429821}, {-1.424709, -0.265863}, {1.067800, -0.018164}, {-0.403612, 0.521463}, {0.520736, 0.179845}, {1.558446, 2.297753}, {-0.611957, 0.341035}, {0.574676, 0.189530}, {0.258192, -0.367458}, {-0.515869, -0.068053}, {0.320528, 0.981756}, {0.756459, 0.855889}, {-0.436195, 0.505209}, {-0.197706, -0.042505}, {0.570348, -0.442366}, {0.618202, -1.234316}, {-0.246493, 0.145392}, {0.249191, 0.204177}, {-0.504036, -0.337933}, {0.265983, 0.156993}, {1.010411, -0.820082}, {0.967946, -1.061406}, {-0.994254, 0.516854}, {0.246911, -1.559882}, {-0.224508, -1.563141}, {-0.420039, -0.552007}, {0.078066, -0.074774}, {-0.203336, -0.297024}, {-0.109335, 0.225023}, {1.250758, -0.808705}, {-1.025240, 0.921113}, {0.077180, 1.828942}, {-0.881796, -0.755137}, {-0.091333, -1.279348}, {-0.062119, 0.378901}, {-1.499594, 0.831770}, {-1.371222, 0.612782}, {0.282594, 0.759345}, {0.601033, -0.540685}, {0.873884, -2.107622}, {-0.413409, 1.183102}, {0.035613, 0.033901}, {-0.371701, -0.512521}, {-0.390149, 0.589897}, {-0.421352, -0.052553}, {0.213716, -0.657424}, {-0.090430, -0.071487}, {0.058196, -0.653575}, {-0.705436, 0.067998}, {-0.053729, -0.957150}, {-0.271140, 0.371048}, {1.052676, 1.059416}, {1.043681, 0.143528}, {1.356857, 0.687629}, {0.091930, 1.509739}, {0.339513, 0.792737}, {-0.055242, 1.281981}, {0.029510, 0.013582}, {-0.120412, 0.188881}, {-1.249855, -0.851677}, {-1.079515, -0.452445}, {0.393657, -1.150160}, {-0.008601, -0.141600}, {0.225137, 0.963209}, {-0.201913, 0.770309}, {-0.791302, -0.165032}, {0.517454, -1.029753}, {-0.607919, -0.209344}, {0.527461, -0.735633}, {-0.266679, -0.286525}, {-1.703636, -1.176549}, {-0.200180, 0.435851}, {0.269835, 0.613393}, {0.745864, -0.434237}, {0.471439, 1.529898}, {0.363553, -0.002981}, {-0.338163, 0.906062}, {0.883375, -0.307422}, {-1.120693, -0.268472}, {1.221899, 2.130810}, {0.141656, 0.031991}, {-1.233096, 0.667534}, {0.624299, 0.425867}, {-0.170222, 0.592248}, {1.076470, 1.444681}, {-0.183938, 0.142772}, {-0.821524, -1.008571}, {-0.146813, 0.404454}, {0.684416, -1.073105}, {1.117901, -0.560429}, {0.530161, -0.027038}, {-0.253069, -1.639337}, {-0.717668, -1.081437}, {0.653127, 0.114892}, {0.095271, 0.140140}, {-0.053616, 0.987509}, {-0.122837, 0.191773}, {-0.706302, 0.420038}, {1.186340, 1.028863}, {-0.117144, -0.018757}, {1.239061, -0.216330}, {0.295645, 0.318719}, {-0.287663, 0.752288}, {1.436414, 1.607598}, {-1.174806, 0.781807}, {0.919130, 0.760221}, {-1.465950, -0.301338}, {-0.028985, 0.532472}, {0.108693, 0.221737}, {-0.679071, -0.035699}, {0.046814, -1.058415}, {0.343905, 0.344772}, {0.570854, 0.524909}, {0.315360, 0.196929}, {-0.434684, 1.005404}, {-0.404268, 0.684464}, {-0.747997, -0.269495}, {-0.358844, 0.247169}, {-0.714708, -0.157657}, {1.004165, 0.448171}, {-1.235014, -0.550712}, {0.442388, -0.935624}, {0.702100, -0.807752}, {0.358939, -0.783201}, {-1.133754, -0.837761}, {-0.467297, -0.165956}, {1.008790, 0.066224}, {-0.272849, 0.330043}, {-1.966277, 1.246796}, {-0.917265, -1.017836}, {-0.027061, -0.299158}, {1.124767, -0.984969}, {0.146385, 1.049555}, {0.558241, 0.085019}, {-0.158555, -1.463400}, {-0.133509, -0.671532}, {0.666487, -0.563999}, {0.656119, 0.119249}, {1.041716, 0.447584}, {-0.025932, 0.527085}, {-1.593675, -0.940512}, {0.218719, 0.224522}, {0.858700, -0.400714}, {-1.323566, -1.320280}, {-1.019153, -0.525948}, {1.737703, 0.326414}, {-0.638443, 0.055007}, {0.086753, 0.243740}, {-0.885970, 0.377519}, {1.184245, 0.505174}, {0.202493, -0.306676}, {1.189207, -0.823331}, {0.398937, 0.120145}, {-0.646384, 0.314075}, {-1.137885, -0.095339}, {0.948864, -0.716966}, {0.463843, -0.358252}, {0.980654, -0.901849}, {-1.215558, -0.298514}, {0.270095, 0.365947}, {0.140718, -0.306677}, {0.587339, -0.550040}, {0.855364, -0.692435}, {-0.456061, -0.045239}, {0.462259, -0.725169}, {0.724895, 0.455988}, {-1.028200, -0.257751}, {-1.072973, -1.142716}, {-0.576397, -1.548709}, {-0.284426, 0.134787}, {-1.039392, 0.502217}, {-0.217312, -0.180047}, {0.694919, 0.186815}, {-0.847320, -1.048344}, {-1.022385, -0.565583}, {-0.660343, 0.410869}, {-0.718115, -0.544506}, {-0.182651, 0.469230}, {-0.231679, -0.362006}, {-0.015608, 0.083363}, {1.222271, -0.723882}, {-0.508861, -0.822197}, {-0.902930, 0.636436}, {0.112424, -0.324648}, {0.315799, -0.188587}, {1.024169, -0.474601}, {-1.152947, 0.595031}, {0.902782, -0.236906}, {-0.241519, 0.977620}, {-1.518523, -0.585001}, {-0.000930, 0.727162}, {0.877585, 1.068244}, {-1.638870, -0.206063}, {1.408922, -0.130538}, {-0.523389, -0.811424}, {0.101777, 0.366629}, {1.289354, -0.426427}, {0.604590, -1.337170}, {-0.058429, 1.861749}, {-0.561091, -0.637419}, {0.424127, -0.323688}, {-0.081614, -1.449043}, {0.968017, 0.267704}, {0.108011, 0.499381}, {0.170847, -0.487345}, {-0.458183, -0.767461}, {-0.039893, 0.250217}, {0.131645, -1.086087}, {0.161841, 0.342612}, {-1.600553, 0.342165}, {0.541176, 0.414102}, {0.409636, 0.349951}, {1.204189, -1.086040}, {0.350477, 0.682488}, {-0.721238, 0.208825}, {0.428534, -0.790265}, {0.121097, -0.359704}, {1.361358, 1.230809}, {-0.384294, 0.472650}, {0.145290, -0.174952}, {-0.046377, -0.107608}, {-0.383656, 0.796097}, {1.031273, 0.264224}, {1.167621, -0.300218}, {-0.292386, -0.318581}, {-0.335417, -1.144967}, {-0.648088, -0.289108}, {-0.068185, -0.682794}, {0.894230, 0.285057}, {-1.260050, 0.086270}, {0.247349, 0.104827}, {0.007993, 0.124410}, {-0.089590, -0.563814}, {1.509332, -1.875702}, {-0.076540, 1.065093}, {0.316001, -0.172131}, {0.102151, -0.953328}, {-0.190367, 0.254101}, {0.255213, 1.104178}, {0.291825, -0.052904}, {-1.058847, -0.004168}, {-0.293184, -0.372100}, {-0.420888, 0.496658}, {0.646020, 0.472691}, {-0.568856, -0.424865}, {-0.822198, 0.342074}, {0.566707, -0.906916}, {0.880532, -1.481777}, {-0.158097, 0.395299}, {-0.169400, -0.308643}, {-0.420999, -0.995964}, {-0.134220, -0.451067}, {-0.560854, -0.358684}, {0.533672, 0.609505}, {0.225296, -0.259670}, {0.136387, 1.320238}, {-0.143082, -0.656944}, {-0.039519, -0.440310}, {0.064516, -0.216104}, {0.327496, -1.720161}, {1.222967, 0.133978}, {0.344704, -0.992218}, {-0.298720, 1.336461}, {0.910618, 0.343415}, {0.792131, -0.077562}, {-0.078523, 0.161363}, {0.419388, 0.354756}, {-1.022862, -0.528513}, {0.024169, 0.636111}, {-0.121226, 0.869259}, {0.269960, 0.147618}, {-0.173962, -0.286819}, {-0.610308, -0.112641}, {1.516570, 0.220792}, {0.067268, -0.929080}, {0.140334, 1.330344}, {0.126366, -1.081471}, {-0.243734, -0.118978}, {-0.277617, -1.194380}, {-0.682716, 0.298833}, {-1.288838, 1.513837}, {-1.077710, -0.288363}, {0.353844, 0.331654}, {-0.496007, -0.449799}, {0.674501, -0.901818}, {-0.425209, -0.743499}, {-0.493533, -0.014724}, {-0.126484, -0.166360}, {0.321523, -1.190012}, {-0.243319, 0.253336}, {-0.324947, -0.463787}, {0.224061, -0.778740}, {-0.022366, -0.614416}, {-0.104315, -0.614804}, {0.416559, 0.514345}, {-0.380783, -0.071819}, {1.224245, -0.170595}, {0.668510, 0.088242}, {0.011928, -0.606299}, {-1.276925, -0.185928}, {1.427795, 0.603522}, {-0.687761, -0.603504}, {-0.132693, -0.457303}, {-0.680173, -0.865798}, {-0.251745, -0.935759}, {0.444854, -0.248104}, {0.068890, 0.189164}, {-0.218620, -1.194219}, {0.102438, 0.748316}, {0.626796, -0.085816}, {0.382283, 0.477754}, {-0.055020, -0.453327}, {-0.629663, -0.255501}, {-0.314275, -0.853495}, {0.153019, 0.700717}, {0.819287, 0.714535}, {0.078689, -0.639930}, {-0.470512, -0.225320}, {0.479791, 0.944982}, {1.631216, 1.256571}, {-0.936889, 0.646269}, {-0.494894, 0.683656}, {0.921918, 0.268295}, {0.561338, 0.520386}, {0.414373, 1.463005}, {0.760467, 0.214625}, {0.964109, -0.139284}, {-0.587657, -0.930694}, {0.299208, 0.117574}, {-0.452623, 1.080372}, {-0.206742, -0.027465}, {-0.995999, 0.131516}, {-0.409115, -1.251451}, {0.286588, 0.339968}, {0.248896, 0.976740}, {-0.600229, -1.037789}, {1.217989, -0.829786}, {-0.533772, -0.390166}, {-0.252891, 0.090843}, {0.830241, -0.674900}, {-0.305120, -0.830369}, {-0.491488, 0.649178}, {0.438337, -0.155879}, {-0.355961, 0.587665}, {0.504438, 0.139915}, {0.729127, -0.183104}, {0.107723, -0.278060}, {0.688445, 0.756468}, {0.393728, -1.411304}, {0.536781, 1.086957}, {-0.520090, -0.203326}, {0.533082, -0.846444}, {-0.394528, 0.670604}, {-0.382789, -0.861758}, {0.250303, 0.478741}, {-0.327998, 0.777437}, {0.733849, -0.765777}, {-0.089826, -1.110802}, {-0.206186, -0.678356}, {0.386616, 0.326163}, {0.525415, -1.219435}, {0.133794, 0.344521}, {0.004897, -0.582482}, {-0.750436, -0.832588}, {1.048079, -0.016272}, {1.705627, 0.415836}, {1.430775, 0.468125}, {0.131126, -0.137068}, {0.835151, -0.271749}, {-0.298794, 0.661111}, {-1.031776, -0.466190}, {0.920307, 0.012391}, {0.714790, 0.765926}, {0.049065, 1.311591}, {-0.718093, -0.406004}, {0.398720, -1.039662}, {-0.246073, 0.103843}, {-0.710795, 0.507890}, {0.091547, -0.294237}, {1.265596, 0.506513}, {0.247169, -0.808032}, {0.329468, -0.429356}, {0.401651, -1.497002}, {-0.915131, 0.517771}, {-0.158804, -1.010671}, {0.337866, 0.270349}, {-0.334280, -0.437324}, {0.587549, -0.839959}, {0.609462, 0.218756}, {0.663163, 0.295161}, {0.199296, -0.011211}, {0.336088, -0.804984}, {-0.689722, 0.139018}, {1.805106, 0.071002}, {0.012271, -0.185305}, {-0.242626, 1.069228}, {-0.001816, -0.770260}, {1.082567, -0.538776}, {-0.300932, 0.408739}, {0.673658, -0.546763}, {-0.522996, -0.593263}, {0.783541, 0.018982}, {0.129059, 1.126919}, {0.089440, 0.382453}, {-0.027288, 0.112335}, {0.207647, -0.722367}, {-0.570810, 0.360483}, {0.285651, -0.252501}, {0.723943, 0.093512}, {0.112908, 0.175056}, {-0.488045, 0.285721}, {-0.059020, -0.037746}, {-0.512124, -0.099456}, {-0.349365, -0.609648}, {0.107796, -0.112698}, {-1.477146, 0.619852}, {0.417878, 1.275517}, {0.029314, -0.196885}, {0.570071, -0.086919}, {0.249916, 0.287204}, {0.383593, 0.201145}, {0.114623, 0.900762}, {0.682162, -0.223562}, {0.322560, 0.917578}, {0.750428, 0.353774}, {-0.948208, 0.123629}, {0.768450, 0.085982}, {1.272772, 0.309070}, {-0.439142, -0.382147}, {-0.008128, -1.247159}, {0.009078, -0.697620}, {0.007060, 0.961034}, {0.129413, 0.505956}, {-1.910256, -0.665300}, {0.069935, -1.173748}, {-0.120057, 0.181999}, {0.399439, -0.688444}, {0.284874, 0.541595}, {0.285854, 0.693654}, {-0.001666, -0.103849}, {-1.224582, 1.329128}, {-0.648986, 0.890249}, {-0.388631, -0.337343}, {-0.610412, 0.675449}, {0.271354, -0.522851}, {-0.469737, 0.289745}, {-0.135145, 0.094711}, {0.391914, 0.360719}, {-1.432849, -0.395919}, {0.718524, 0.095473}, {0.971875, 0.020463}, {0.321075, 1.646243}, {-0.198847, -0.236427}, {1.874800, -0.097315}, {-0.243075, -0.495529}, {0.920510, 0.609915}, {0.471311, -2.079300}, {-0.581785, -1.219514}, {-0.280604, 0.335288}, {0.744908, 1.156712}, {1.065821, 1.187737}, {0.063306, 0.219678}, {0.149226, 0.523140}, {-0.223783, -0.203258}, {-0.453659, -0.055288}, {-0.577265, 0.580418}, {-0.394131, 0.807998}, {-0.805989, 0.389628}, {0.497947, 0.244122}, {0.156364, 0.586017}, {-0.824797, 1.008399}, {0.152007, -1.426285}, {0.515238, 0.477685}, {-0.477381, 0.117855}, {-0.950519, -1.318016}, {0.420935, 0.940154}, {-1.026912, -0.466710}, {-0.582401, 0.139818}, {-0.549374, -0.236186}, {0.644767, -0.465686}, {0.830889, -0.265762}, {-0.144430, -0.761845}, {-0.128806, -1.521828}, {-0.372228, -0.069244}, {-0.492768, 0.219460}, {-0.490296, 0.354823}, {-0.848195, 0.898729}, {0.865969, -0.571089}, {-0.454317, 0.699749}, {0.042831, -0.315084}, {-0.285471, -0.292725}, {-0.534360, 0.172237}, {0.689555, 0.264977}, {0.815292, -1.505314}, {0.497006, -0.098925}, {0.298728, 0.364288}, {0.136240, 0.303815}, {0.283923, 0.596503}, {0.114502, -0.238589}, {-0.297723, 0.385486}, {-0.316969, 0.430939}, {0.040942, -0.313941}, {-0.289333, 0.351903}, {0.896973, 0.079274}, {-0.268520, 0.041966}, {1.030958, -0.635246}, {-1.875177, 0.592061}, {-0.430594, -0.653622}, {0.267462, 0.655383}, {-0.514834, 1.076798}, {-0.097106, 0.538920}, {0.013117, 0.662483}, {0.644666, 0.595031}, {-0.117338, 0.439290}, {-0.357636, -0.677673}, {-0.088865, -0.231393}, {0.965777, -0.113227}, {0.220975, 0.768523}, {-0.828622, 0.050192}, {-0.240097, -0.029707}, {-1.058309, 1.038959}, {-0.570250, -0.924301}, {-0.262456, -1.462101}, {-1.228857, -0.142778}, {0.469875, 0.739288}, {1.100930, 0.341907}, {0.672967, -0.393436}, {0.518804, 0.496781}, {-0.142314, 0.761519}, {0.125922, -0.550510}, {-0.348100, -0.273610}, {-0.427612, 0.061501}, {0.256513, 0.747116}, {-0.059648, 0.168510}, {-0.913990, 0.875762}, {-0.802038, 0.135093}, {0.203664, -0.374754}, {0.469188, -0.636419}, {0.809588, 0.460623}, {0.113743, 0.524456}, {-0.272354, -0.854766}, {0.022865, 0.418124}, {-0.133409, 0.060661}, {1.539998, -0.517456}, {-0.645522, -0.426623}, {-0.371401, -0.661202}, {-0.122534, 1.261750}, {0.093323, -0.383381}, {0.134252, 0.902849}, {0.511477, 1.313929}, {0.099273, 0.514895}, {-0.058003, 0.969434}, {-0.141294, -0.471783}, {-0.429620, -0.154513}, {-0.287361, -0.442306}, {-0.336878, -0.062789}, {-0.605904, 0.102936}, {-0.142869, -0.443398}, {1.535686, 1.529627}, {0.367539, 0.095620}, {0.212680, 0.531485}, {0.604709, -0.251699}, {-0.161790, -0.242223}, {-0.575133, 0.475413}, {0.007935, 0.138656}, {-0.156317, 0.351535}, {1.107248, 1.232089}, {-0.269558, 0.504884}, {0.074465, -0.942669}, {0.141073, -0.429191}, {-0.269876, 0.330541}, {-0.209983, 0.505994}, {0.562585, 1.614445}, {0.439637, -1.675931}, {0.030853, -1.163880}, {0.304423, 1.022936}, {-0.327022, -0.504994}, {1.936745, -1.338733}, {-0.351500, -0.385984}, {-0.563641, -0.826557}, {-0.380570, 0.789590}, {-0.148708, 0.255027}, {-0.888800, -1.395291}, {0.632760, -0.463043}, {0.234656, 0.303244}, {0.116743, -0.473395}, {0.271851, 0.175900}, {-0.552514, -0.338339}, {0.691982, 0.143707}, {-0.976338, 0.662087}, {-0.504830, 0.685742}, {-0.264117, -0.307242}, {0.511863, 0.356987}, {0.055412, -1.049023}, {0.191737, 0.267756}, {0.231510, -1.056609}, {0.204476, -0.636612}, {-0.133734, 1.938848}, {0.255605, -1.483930}, {1.011052, 1.161027}, {0.898627, 0.805878}, {-0.213312, 0.436263}, {0.755626, 0.187831}, {-0.762523, 0.657359}, {0.036146, 0.739059}, {-0.116160, -0.417153}, {-0.150632, -0.670163}, {0.418430, -0.878027}, {0.525073, -0.538173}, {-0.370425, -1.117374}, {-0.757346, 0.213995}, {-0.208166, -0.014412}, {1.041135, -0.440021}, {0.745159, -0.655492}, {0.075926, -0.175046}, {-0.667127, -1.402322}, {-0.420118, -0.660770}, {-0.911100, -0.316687}, {-0.103679, 0.220340}, {-0.660715, -0.765549}, {-1.825846, 0.383159}, {-0.802056, -0.280138}, {-0.373981, 0.538737}, {-0.426700, 0.773436}, {-0.163357, 0.074898}, {1.227122, 1.422060}, {1.288474, -0.542456}, {-1.032935, 0.639189}, {0.437950, -0.087142}, {0.475027, -0.968816}, {0.165371, 0.564307}, {-0.510503, -0.411686}, {-1.231209, -0.637638}, {1.256137, -0.449882}, {-1.522424, -0.184787}, {-1.028042, 0.985088}, {1.030749, -0.439651}, {-0.387196, 0.411551}, {1.188856, 0.408318}, {-0.587327, -0.142216}, {1.135026, -0.262557}, {-0.508316, -0.762131}, {-0.149100, 0.280352}, {-0.951866, 0.279302}, {-0.604205, -0.672315}, {1.600248, -0.457873}, {0.569092, 0.161693}, {-1.152617, 0.488698}, {0.409741, 0.570698}, {-0.507684, -0.112046}, {-0.748483, 1.030598}, {-0.076532, -0.294944}, {0.270334, -0.074069}, {0.758352, 0.152663}, {-1.269700, 0.914973}, {-0.730966, 0.274066}, {-1.529546, -0.878928}, {-1.992355, -0.301284}, {-0.645659, 0.223827}, {-1.002499, 0.318252}, {0.165309, -0.639122}, {-1.019766, 0.307431}, {0.679903, -1.055646}, {-0.003741, 0.179578}, {0.256276, 0.808911}, {1.114403, -1.010407}, {-1.146745, -0.331667}, {0.404155, 0.383710}, {-0.237773, 0.921262}, {1.885775, 0.430458}, {-0.818223, 0.346674}, {-0.078311, 0.863722}, {-0.428592, 0.254773}, {0.534155, 0.809113}, {1.383017, 0.888617}, {-0.515986, -0.599548}, {0.212821, -0.000715}, {-1.206773, 0.526967}, {0.014093, 0.006118}, {0.158839, -1.216860}, {-0.027659, 0.926053}, {0.019575, 0.165710}, {0.197453, -0.230582}, {1.261566, 0.802630}, {0.197086, 0.008144}, {0.059366, -1.335864}, {0.762630, 0.316835}, {0.094044, 0.216878}, {-0.061064, 0.344751}, {1.017651, -1.442284}, {0.827257, 0.377237}, {-1.187013, -0.462500}, {0.582280, -0.502331}, {0.744537, -1.480232}, {-0.629860, 0.197390}, {0.059392, -0.392031}, {-0.574393, 0.117983}, {0.129667, -0.171614}, {-0.108789, -0.144976}, {-0.289720, 0.028863}, {-0.236768, 0.375456}, {-0.026387, -0.120244}, {-0.494994, 1.099108}, {-0.243313, -0.271767}, {0.887063, -0.199488}, {-1.520577, 0.158127}, {1.002710, -0.502214}, {-0.690706, -0.243567}, {-1.318276, -0.321401}, {-0.458306, -0.366136}, {-0.120988, 0.372985}, {-0.278336, 0.750513}, {-0.430248, 0.203486}, {-0.431980, 0.898660}, {0.147149, 0.183560}, {-0.761892, -0.033976}, {0.544541, 0.195048}, {-1.004320, 0.048136}, {0.445875, 0.124557}, {0.819350, 0.116228}, {-0.074228, -0.359250}, {0.149207, 0.639891}, {0.338190, 0.705314}, {0.771753, 0.452919}, {0.713768, -0.325439}, {0.792008, 0.244063}, {0.619732, -0.670480}, {-0.192255, -0.539623}, {-0.071555, 0.106152}, {-0.531400, 0.439331}, {0.858087, 0.454744}, {-0.324386, -0.432407}, {-0.049221, -0.765374}, {0.524452, 0.531419}, {0.003815, 0.508387}, {-0.841803, -0.132345}, {-0.251592, 0.174575}, {0.134064, -0.846480}, {-0.380022, -0.772825}, {0.570028, 0.455106}, {0.685860, 0.878152}, {0.349189, -0.979386}, {-0.870929, 0.582146}, {-0.970770, -0.902920}, {1.432578, 0.124514}, {-1.833284, 0.491911}, {-0.632608, 0.655085}, {-0.587920, -0.340920}, {-0.688839, -0.890105}, {0.453233, -1.036321}, {1.020132, 0.523791}, {0.951761, 0.683777}, {-1.376582, 1.527485}, {0.236742, -1.750241}, {-0.460403, 0.501992}, {1.020721, 0.229132}, {1.051587, -0.362471}, {-0.259974, 0.863537}, {0.429171, 1.050911}, {0.191844, 0.578415}, {-0.231841, 0.432569}, {-0.984387, -0.084837}, {-0.358412, 0.102102}, {0.878619, 0.582503}, {-0.205932, 0.835352}, {-0.103196, -0.742711}, {1.284650, -0.553309}, {-0.438278, -0.845167}, {-0.180808, -0.562684}, {-1.415280, 0.309014}, {1.032654, 1.546299}, {-0.578971, 0.502129}, {-0.372922, 0.342322}, {-0.601495, -0.396972}, {0.449218, 1.693786}, {-0.215480, -0.912576}, {-0.305294, -0.068039}, {1.234584, 0.890927}, {-0.133936, -0.401511}, {-0.029240, -0.508774}, {-0.446670, 0.056391}, {0.438196, 0.121282}, {-0.235203, -0.016227}, {0.085158, 0.853693}, {0.589462, -0.003206}, {-0.347001, 1.098295}, {-0.482088, 0.276294}, {1.115959, 0.104063}, {1.222275, -0.122048}, {1.131900, -0.401884}, {0.416713, 0.972292}, {0.268957, 0.822470}, {-0.378075, -0.239070}, {0.678130, -0.622487}, {0.001222, 0.176722}, {0.515715, 0.556026}, {-0.811341, -0.664363}, {-0.066931, -0.106832}, {0.259630, -0.482719}, {-1.051136, 0.675293}, {-0.444388, -0.119788}, {0.307477, -0.014828}, {-0.184077, 0.282394}, {-0.719949, 0.155395}, {0.689853, 0.466149}, {0.254500, -1.065029}, {-1.153940, 1.026575}, {-0.724639, 0.811474}, {0.280946, 0.774506}, {1.733286, 0.702247}, {0.057015, -0.144861}, {1.201717, -0.620823}, {-1.489848, -0.513420}, {0.007687, 0.478682}, {0.217798, -0.381518}, {0.395505, 0.487883}, {0.637114, 0.738214}, {-0.696254, -0.017240}, {-0.601473, -0.310016}, {-0.911395, -0.423135}, {0.943762, 0.871834}, {0.712787, -0.214152}, {-0.154493, 0.356730}, {0.439694, 2.528324}, {0.511167, -0.597179}, {-1.077821, 1.509451}, {0.534645, -0.031730}, {0.367335, -0.235827}, {-1.523038, 0.527418}, {0.337825, -0.714982}, {-0.447831, -0.426621}, {-1.118101, -0.239219}, {0.531552, 0.943312}, {-1.294295, -0.742653}, {0.625772, 0.643434}, {-0.277690, -0.187306}, {0.253799, -0.294410}, {-0.613186, 0.208064}, {-0.188373, -0.612828}, {0.217985, -0.165977}, {0.588750, 0.477662}, {-0.901009, -0.304080}, {-1.010997, 0.557475}, {-0.375059, -0.290759}, {0.071666, -0.579673}, {0.210535, 0.735150}, {-0.448087, -0.526083}, {0.398716, 0.065340}, {0.485392, 1.369999}, {-0.299177, -1.126727}, {-0.103942, 0.680101}, {0.328730, 0.178544}, {0.142174, 0.134296}, {0.204866, -0.912750}, {-2.020140, 0.645009}, {0.177036, -0.288237}, {-0.069950, 1.225832}, {-0.304805, 0.134353}, {-1.765184, -0.128221}, {-0.393885, -0.444420}, {-1.330829, 0.743254}, {0.830278, 0.671366}, {0.869670, -0.919906}, {1.211946, -1.221721}, {0.363820, 0.389598}, {-0.613657, -0.172961}, {0.534523, -0.777950}, {0.899525, 0.837620}, {0.229674, 0.539808}, {-0.588145, 1.541271}, {0.526527, 0.218288}, {0.108346, -0.146209}, {0.256885, 0.222342}, {-0.471906, -0.622017}, {-1.040667, -1.033413}, {1.262585, 0.812615}, {-0.109457, 1.184248}, {-0.777400, -1.560435}, {0.151619, -0.442552}, {1.678563, 0.504373}, {-0.589008, -0.440073}, {-0.173452, 0.875637}, {-0.330927, -0.861614}, {0.529098, 0.754519}, {-0.530484, 0.361856}, {-0.340118, -0.014196}, {-0.443443, -0.221920}, {-0.295703, 0.775663}, {0.931839, 0.391841}, {1.227308, 0.357324}, {1.058906, -0.561328}, {0.379099, 0.857939}, {0.379845, 0.088003}, {2.175076, 0.202864}, {0.100406, -0.297335}, {0.240141, -0.401507}, {0.578608, 0.265995}, {-0.515623, 0.946173}, {-0.587795, -0.555286}, {0.383657, -0.195416}, {0.759589, -0.774641}, {-0.109808, -0.123684}, {0.172620, 1.054034}, {0.231130, 1.353771}, {0.832332, -0.629704}, {0.736182, -0.815986}, {1.913341, -0.066831}, {0.548944, 0.930218}, {1.187104, 0.054595}, {-0.065391, 1.307484}, {-1.032659, -0.304898}, {0.770218, 0.384590}, {-0.461868, 0.279681}, {0.659794, 1.167296}, {-0.280067, 1.596266}, {-0.557632, -1.620087}, {0.231064, 0.159401}, {-0.585902, -0.632748}, {-1.008761, 0.180220}, {-2.136943, 0.182556}, {0.578714, -0.151526}, {0.468830, -0.370074}, {-0.124409, 0.101686}, {-0.623913, 0.511890}, {0.603725, -0.110424}, {0.086402, 0.305489}, {0.397162, -0.844066}, {0.287331, 0.595819}, {0.435615, -0.308301}, {-1.631188, 1.233723}, {-0.099963, -0.568243}, {-0.069033, -0.553885}, {0.465490, 1.705170}, {-1.502903, 0.051838}, {0.202618, 0.056840}, {0.690444, 0.625482}, {0.529718, -0.327767}, {-0.489490, -0.609651}, {0.832393, 1.453277}, {1.712547, 0.803720}, {0.189576, -1.727333}, {0.907285, -0.228063}, {1.339552, -0.868890}, {-1.166663, -1.224587}, {-0.379674, 0.609648}, {-0.573722, -0.147682}, {-0.268252, -0.294019}, {-0.342327, 0.622820}, {-0.973481, 1.055302}, {0.765404, -0.814623}, {-0.533027, -1.451319}, {-0.272482, 1.012991}, {-0.542893, -1.562890}, {-0.171077, 0.717300}, {0.308168, 0.116356}, {0.314240, -0.370956}, {0.804733, -0.334112}, {0.386616, -0.027912}, {-0.099513, 0.902143}, {-0.123303, 0.843877}, {1.079426, -0.071035}, {0.598008, -0.248097}, {0.573794, 0.625676}, {0.290775, 0.601791}, {-0.846620, -0.609600}, {0.441754, 0.374976}, {-0.292908, -0.310313}, {0.389009, -1.122842}, {-1.994184, -0.597685}, {-0.288490, -0.137211}, {0.826802, -0.414513}, {0.440020, -0.030550}, {-0.776099, -0.389480}, {0.554564, 0.554801}, {1.224902, 0.286133}, {-0.979788, 0.109225}, {1.253196, 0.209456}, {0.251155, 0.753947}, {0.665114, -0.393747}, {-0.564377, -0.513027}, {1.288081, -2.157011}, {0.235869, 0.471166}, {-0.406039, 0.027257}, {-0.294357, -0.382251}, {0.119859, -0.100326}, {-0.458593, 0.981385}, {1.025987, -0.633064}, {0.615666, 1.604773}, {0.594899, -0.462359}, {0.309323, 0.834967}, {1.020212, 0.969725}, {-0.195893, -0.386131}, {-0.627758, 0.223954}, {-1.018009, 0.285884}, {-0.624008, 0.485126}, {0.160685, -0.253051}, {-1.063582, 1.681213}, {-0.198088, -0.757754}, {0.728279, 0.034337}, {0.762127, -0.032588}, {0.221347, -0.818478}, {0.269797, -1.110743}, {-1.210268, -0.495728}, {0.485286, -0.320922}, {-0.155302, 0.041326}, {-0.402684, 1.638042}, {-0.478496, -0.696576}, {0.857587, -0.932290}, {-0.479103, -1.444577}, {0.106673, 0.771573}, {0.174064, 0.228316}, {0.379493, 0.761051}, {-0.573243, -0.279958}, {0.611776, 0.691011}, {0.437668, 0.574424}, {1.270251, 0.249666}, {0.164892, 0.358455}, {0.667730, 1.155659}, {0.466743, 0.958982}, {-0.728237, -0.561067}, {-0.191912, 0.053633}, {-0.319731, -0.092707}, {-0.675490, 0.366198}, {0.535741, -1.151621}, {-0.343547, 0.839867}, {0.751048, -1.498414}, {1.666151, -0.356844}, {0.042997, 0.353855}, {0.599371, 0.374659}, {-0.030844, -0.467997}, {0.527571, -0.170217}, {1.039629, 0.511229}, {0.139445, -0.375293}, {-0.643767, -0.579323}, {-0.213417, 0.056574}, {0.868315, -0.291497}, {1.312809, 0.661863}, {-0.239329, -0.350563}, {0.055933, 1.334509}, {-0.896131, 1.594030}, {-0.843781, -1.287317}, {0.346229, -0.350082}, {-0.385374, -0.165116}, {0.058133, -0.170327}, {-0.302902, -0.091267}, {-0.224982, -0.275217}, {-0.639219, 0.182658}, {1.005439, 0.970002}, {0.302856, 0.157512}, {0.167572, 0.392681}, {-0.183465, -0.536818}, {-0.276488, 0.932653}, {-0.698586, -0.291830}, {-0.663474, 0.073177}, {-0.707151, 0.843712}, {0.813781, -0.237099}, {-0.567100, -0.155201}, {-0.695440, 0.900429}, {-0.507948, -0.238936}, {0.813905, -1.435846}, {-1.030962, 0.416183}, {0.010413, -0.077815}, {-0.456217, 0.939060}, {-0.280898, 0.860698}, {-1.059189, -0.026381}, {0.418985, 0.103886}, {0.243547, 0.263705}, {1.022534, -0.870284}, {-0.319105, -0.830518}, {0.309283, 0.131609}, {-0.366955, 0.545398}, {-1.091913, 0.803764}, {0.919995, -1.444688}, {-0.514388, -0.892124}, {0.046488, -0.043293}, {-0.097040, -0.142277}, {-0.621773, 0.278483}, {-0.238226, -0.303143}, {-0.239201, -0.202993}, {0.828891, -0.447296}, {-0.814409, -0.762757}, {0.317636, -0.775188}, {-0.704665, -0.001095}, {0.190795, -0.410853}, {0.438536, 0.007221}, {-1.275473, 1.581711}, {-1.032641, 0.427879}, {0.043270, 0.560571}, {-0.310790, -0.295852}, {-0.322617, -0.582956}, {-0.823786, 0.792678}, {-0.825312, 0.460310}, {-0.142982, -0.231356}, {-0.107885, 0.006865}, {-0.428315, -0.575707}, {-0.451766, -1.312755}, {-0.605263, 0.052154}, {-0.858527, 0.472405}, {-0.147632, 0.851068}, {-0.032356, -0.398183}, {-0.601653, -0.044037}, {0.037578, 0.212620}, {0.475474, 0.577324}, {-1.937575, -1.393675}, {0.241383, -0.543812}, {0.300632, -0.384921}, {0.860763, 0.252422}, {0.040594, -0.371765}, {0.552900, 0.011664}, {-0.353449, 0.312965}, {0.857064, 1.235445}, {-0.408279, -0.576770}, {0.133850, -0.708734}, {0.979223, 1.697775}, {-0.859229, -0.252335}, {-1.136499, -0.537318}, {-0.025246, 0.178310}, {1.169886, -0.131893}, {0.491317, -0.071596}, {1.485336, -0.526005}, {1.948320, -0.173133}, {0.359882, -0.593865}, {0.784955, 0.290084}, {-0.367032, 0.564664}, {-0.053053, 0.166978}, {0.576522, -1.319649}, {0.593626, -0.037716}, {0.330368, 0.727155}, {0.248306, 0.837877}, {-0.596916, -0.440271}, {-0.031691, 0.753502}, {-0.427416, 1.496483}, {0.024830, 0.428486}, {-0.251342, -1.094742}, {0.345125, -0.553380}, {-0.898429, -0.026258}, {0.712027, 0.447699}, {-1.220289, -0.815846}, {0.262894, 0.251074}, {-0.136647, 0.183869}, {0.404985, -0.461170}, {0.431711, -1.281842}, {0.163396, 0.332593}, {-0.552892, 0.335223}, {-0.672727, -0.000601}, {0.044287, 0.469885}, {0.199923, 0.345696}, {0.723835, -0.177781}, {-0.379719, 0.397453}, {-0.641487, 1.511009}, {0.061980, 0.031751}, {-0.844554, 0.892103}, {-0.715934, -1.294866}, {0.173878, -1.451147}, {0.564775, -0.224633}, {-0.475705, 0.218131}, {1.368321, 2.155638}, {-0.559571, -0.151806}, {0.367671, -1.069871}, {-0.480085, -0.683981}, {-0.968596, -0.196502}, {0.088215, -0.398611}, {0.089681, 0.049280}, {0.019565, 0.640091}, {0.804096, -0.312743}, {-0.029222, -0.817238}, {0.111560, 0.026803}, {1.124348, -0.247172}, {0.828146, -1.297903}, {0.584710, 1.072408}, {-1.079120, 0.519528}, {-0.559623, -2.083301}, {-0.013739, 0.168279}, {0.094835, -0.001691}, {-0.176566, -0.071756}, {0.143178, 0.023358}, {-1.209996, -0.402923}, {0.502949, -0.787258}, {-0.439794, -0.826874}, {0.037231, -0.182201}, {0.559047, -0.316920}, {1.353808, -0.063423}, {-0.184105, -1.087707}, {0.520159, 0.016875}, {0.408005, 0.337109}, {0.012034, -0.141686}, {-0.116381, 0.989265}, {0.215828, -0.819388}, {-0.175628, 0.230390}, {-0.392693, -0.773533}, {0.019304, 0.018939}, {0.019620, 1.129002}, {-0.266461, 0.476351}, {-0.932192, -0.308265}, {1.087973, 0.187229}, {0.878040, 0.274679}, {-0.967149, -1.149465}, {0.110062, -0.288712}, {0.410077, 0.016828}, {-1.137827, 0.737936}, {0.556373, 0.712373}, {-0.136341, -0.106141}, {0.966315, 0.131986}, {-1.636164, 0.243468}, {1.058806, -0.648276}, {0.211281, 1.021837}, {-0.200606, 0.108194}, {0.343630, 0.685307}, {0.492227, -0.038799}, {0.033762, 0.584277}, {0.236607, 0.567255}, {0.680730, 0.758640}, {-1.029663, 1.126743}, {-1.572466, -0.113236}, {-0.285795, 0.080142}, {-0.974205, -0.403896}, {1.117339, -0.485668}, {-0.600984, -1.054548}, {0.893469, -0.995996}, {1.668182, -0.272915}, {-0.209205, 0.453159}, {0.256428, -0.019136}, {0.333610, 0.511375}, {-1.232951, 0.873284}, {-0.761203, -0.368131}, {-0.518450, -1.168993}, {0.742393, -0.718962}, {0.449123, 0.250070}, {0.014006, -0.412005}, {-0.680747, -0.172112}, {0.116133, -0.562759}, {0.460738, -0.656872}, {0.650550, 0.619822}, {0.131879, 0.424197}, {-0.553638, -1.742206}, {0.312592, 0.469697}, {-0.531606, -0.391612}, {1.380083, 1.445451}, {-0.921923, -0.915796}, {-1.153275, 0.556598}, {-0.161191, 0.501045}, {-0.702263, -0.058096}, {0.560614, 0.671590}, {0.036180, -0.376868}, {-0.588677, 0.721655}, {0.621821, -0.164663}, {0.794529, 0.699955}, {-0.719335, 0.651360}, {0.148510, 0.760655}, {-0.114731, 0.951111}, {0.895827, 0.383900}, {-0.746435, 0.641606}, {-0.421358, 0.631822}, {0.466984, -0.324033}, {0.489916, -0.957898}, {0.079711, 0.062274}, {1.246410, -0.778342}, {-0.318010, 0.318632}, {0.510297, -0.392028}, {1.251361, 1.171531}, {0.293846, 0.756420}, {-0.909834, -1.088653}, {0.185629, -0.928923}, {-0.192179, 0.381852}, {0.128132, -0.618807}, {1.135265, 1.096902}, {1.130910, 0.031333}, {0.189199, -0.530720}, {0.364752, 0.516586}, {-0.640494, -0.438013}, {-0.554450, 0.002218}, {-1.568253, -0.283404}, {0.597701, -0.124230}, {1.153399, 0.400638}, {0.290154, -0.118022}, {-0.394926, 0.335760}, {-0.046594, -1.272174}, {0.520793, -0.596359}, {0.684737, 1.409372}, {2.146829, -0.595201}, {0.334683, 0.150969}, {0.037160, 0.579834}, {0.559788, -1.024755}, {-0.268161, -1.685690}, {-0.777837, 0.327112}, {-0.628273, -0.114822}, {-2.163572, 0.843763}, {-0.523453, 1.909596}, {-0.390204, 0.742400}, {0.184483, -0.248507}, {0.492118, 0.308610}, {0.809920, -0.427897}, {0.210169, -0.601697}, {0.065808, -0.422819}, {-1.259986, 0.023207}, {-1.222129, 0.568027}, {-0.255664, -0.612253}, {0.228229, 0.962349}, {-1.340872, 1.427331}, {-0.567869, -1.869379}, {-0.763201, -0.271214}, {-1.445104, 0.226024}, {-0.645348, 0.310639}, {-0.516378, 0.457223}, {0.261481, -0.723054}, {0.698503, -0.491313}, {0.002835, 0.081625}, {-1.025465, -0.176307}, {-0.479908, 0.644662}, {-0.748698, -0.134649}, {0.463082, -1.921004}, {0.586063, -2.033114}, {-0.458925, 0.394895}, {-0.509606, 0.005512}, {-0.447751, -1.910113}, {-1.557059, -0.149125}, {0.534921, -0.429562}, {0.211883, 0.620042}, {-1.527148, 0.587183}, {0.401908, 1.280822}, {0.031060, 0.420576}, {-0.762789, -0.367085}, {1.175118, -0.820434}, {-0.478197, -0.370352}, {-0.236025, 0.061470}, {0.686564, -0.585512}, {-0.237052, 0.253177}, {-0.729385, -0.466642}, {-0.662395, -0.391071}, {0.273296, 0.506813}, {0.965051, -0.027263}, {0.070026, 1.046618}, {0.092287, 0.070415}, {-0.908972, -0.539245}, {-0.623800, 1.413496}, {0.325102, 0.822477}, {-0.518215, 0.034588}, {0.220737, 0.705239}, {-0.818519, -0.857503}, {-1.388012, 0.171706}, {0.650287, 1.022428}, {2.412083, -0.776552}, {-0.297618, 1.080676}, {0.467493, -0.420103}, {-0.059584, -0.053936}, {0.624517, -0.194404}, {0.036811, 1.302039}, {0.842010, -0.194790}, {0.215698, 0.725725}, {-0.272988, 0.542958}, {-0.298502, 1.190862}, {0.166648, 0.297913}, {-0.783560, -0.385328}, {0.351894, -0.279022}, {0.183874, 0.243079}, {0.134334, 0.079331}, {-0.383688, 0.849714}, {-0.227904, 0.641252}, {0.329318, 0.943028}, {0.936512, 1.038576}, {0.757479, 0.393397}, {1.478493, -0.037539}, {-1.189804, 0.402658}, {0.292558, -1.779022}, {-0.284935, -0.366083}, {-0.386498, 1.453383}, {0.611253, 0.499528}, {-0.251683, 0.181155}, {0.804380, -0.388200}, {-0.231037, 0.258398}, {0.623782, 0.017725}, {0.468501, 0.540843}, {0.054289, 1.158843}, {0.109397, 0.089475}, {0.057510, 0.640870}, {-1.007740, -1.110276}, {0.732886, 0.842128}, {0.268033, -0.755497}, {-0.031795, -0.214367}, {-0.643266, -0.275480}, {1.885364, -0.353332}, {1.004060, -1.001434}, {-0.017497, 0.894947}, {1.829552, 0.069833}, {-0.930362, -0.271928}, {-0.374898, 0.170401}, {-0.104757, -0.184549}, {1.479948, -0.472800}, {-0.766489, -0.268751}, {-0.188110, 0.343063}, {-0.068686, 0.373199}, {-0.335110, 0.539789}, {0.926700, -0.263069}, {-0.060970, 0.075089}, {-0.047239, -2.343455}, {-0.758616, -0.638756}, {0.194242, 0.628520}, {-0.670422, -0.252502}, {-0.586947, 1.217569}, {0.325827, 0.180049}, {-1.170374, -0.478935}, {1.157467, 0.136615}, {0.553874, 0.901300}, {0.489163, 0.191637}, {0.233215, -0.282606}, {1.394105, -0.595516}, {-0.616522, 0.715078}, {-0.840391, -0.099596}, {0.539287, -0.316566}, {-0.384641, 1.575414}, {0.708599, 0.923721}, {-0.728650, 0.399285}, {-0.884493, -0.797352}, {0.346664, 0.439675}, {-0.912444, -1.014233}, {0.440793, 1.115063}, {-0.852873, -0.619209}, {0.167686, -0.498302}, {1.288179, 0.409765}, {1.402931, 0.688458}, {-0.515123, -0.824088}, {0.192950, -0.248628}, {-0.062076, 0.319169}, {0.488478, 2.046597}, {-0.279347, 0.144513}, {-0.425342, -0.162927}, {0.794761, 0.950190}, {0.050606, -1.039568}, {0.258260, 0.371916}, {0.299544, 0.840263}, {1.011669, 1.277889}, {-0.455175, 0.008475}, {0.006032, 0.495940}, {-0.564037, 0.951911}, {-0.739710, 0.911333}, {0.288278, 0.246605}, {-0.415489, 0.418020}, {0.214393, -0.216782}, {-0.258230, 0.012515}, {0.085156, -1.067564}, {-0.477948, -0.126020}, {0.819553, 0.227472}, {0.218761, 0.118708}, {-1.147643, 0.315880}, {-0.227523, 0.539005}, {0.001495, 0.428174}, {1.833835, -0.253958}, {0.094817, -0.427417}, {0.304182, 0.027684}, {-0.448943, 1.724177}, {0.306482, -1.723176}, {0.297892, 0.566358}, {0.070474, -0.408958}, {-1.135178, 0.616141}, {1.174561, 0.739951}, {-0.427643, -0.076585}, {-0.143676, -0.561043}, {-0.575947, -0.963853}, {0.287610, -0.416596}, {1.053362, 0.219671}, {0.215916, -0.082404}, {-0.004859, 1.016390}, {-0.304115, -1.250074}, {-0.804160, 1.414419}, {0.435396, 1.580271}, {-0.540909, -0.386004}, {0.391329, 0.175570}, {0.068666, -0.634001}, {-0.924601, -1.223534}, {-0.244715, -1.882378}, {-0.005935, 0.055254}, {0.053374, -2.037105}, {-0.222229, -0.314341}, {1.683783, -0.136252}, {-0.209519, 0.319064}, {0.128087, 0.515904}, {1.057809, 0.518777}, {1.302667, -0.667992}, {0.711711, 1.370832}, {-0.425870, -0.921453}, {-0.282099, -0.019978}, {0.475885, 0.778538}, {-1.191533, 0.734870}, {-0.029950, 0.617866}, {-0.455740, -0.735148}, {-1.482617, 0.289506}, {-0.281529, -1.036867}, {-0.900051, -0.070463}, {-0.281393, -0.018742}, {-1.565083, 0.033298}, {-1.253289, 0.604701}, {-1.473103, 0.505138}, {-1.337558, -0.025304}, {0.025156, 0.114029}, {1.186775, 0.120767}, {0.833490, -1.016311}, {-0.566033, -1.332979}, {-0.525104, -0.650364}, {-0.791062, 0.388240}, {1.154731, 1.317110}, {-0.317317, -0.091369}, {0.113614, 0.044248}, {-0.258272, -0.047712}, {1.078975, 0.638972}, {-0.597647, 0.741361}, {-0.489840, -0.645206}, {0.555416, 0.241694}, {-0.612925, -1.006549}, {-1.021876, -0.178930}, {-0.739651, 0.372522}, {0.602211, 1.641040}, {0.379708, -0.413169}, {0.089748, -0.616324}, {0.599494, -0.401401}, {0.259038, 1.039479}, {0.006801, -0.534216}, {-1.441283, -0.788294}, {0.652339, -0.170895}, {0.170934, 0.389251}, {0.369531, 1.157200}, {-1.009088, 0.126682}, {-0.315585, 0.221797}, {0.202527, 1.134547}, {-0.272163, -0.354116}, {-0.278950, -0.284232}, {-0.055980, -0.181156}, {-0.432454, -0.002721}, {-0.818628, -0.041833}, {-0.544952, -0.105704}, {0.552322, 0.225571}, {-0.429020, -0.426446}, {0.450359, 0.329922}, {-0.420977, 0.010542}, {0.524081, 0.061941}, {-0.611116, -0.497061}, {-0.185940, -1.029832}, {-0.352210, 0.272805}, {-0.523549, 0.577421}, {0.484978, -0.655545}, {0.426839, 0.473204}, {-0.694465, 0.191582}, {1.346640, -0.894402}, {-0.108025, 0.551475}, {0.196850, 0.014778}, {0.461298, -0.661029}, {1.183668, -0.482788}, {0.451475, 1.978741}, {0.436252, -0.573917}, {-0.793265, 0.340729}, {0.372344, 0.278611}, {-0.754183, 0.302767}, {-1.031154, -1.065581}, {0.628203, -0.223986}, {0.430165, -0.891388}, {-0.015695, -0.279011}, {0.048695, -1.308632}, {-0.269414, -0.197042}, {-0.795862, 1.044719}, {0.436994, -0.946302}, {0.660415, 0.069112}, {-0.073069, -0.338405}, {-1.016127, -0.176174}, {0.603558, 0.251424}, {0.051546, -0.212910}, {-0.297017, -1.927157}, {-0.110347, -0.266009}, {0.592700, -0.192662}, {-0.562193, -0.059079}, {-0.549655, 1.273057}, {0.063368, 0.733878}, {-0.221776, 1.592995}, {-0.742231, -1.023633}, {-0.300987, 1.027012}, {0.819822, 1.696182}, {-0.391936, 0.788524}, {0.532161, -0.042235}, {-0.366096, -0.206694}, {-0.124892, -0.264484}, {-0.704913, 0.651417}, {2.149216, -0.035024}, {-0.208488, 0.467413}, {0.197927, -0.450251}, {0.775973, 0.707921}, {-0.971095, 0.934934}, {-0.675312, -0.556623}, {0.398423, 2.014933}, {1.314999, 0.121784}, {-0.149328, -0.548591}, {0.624388, 0.554257}, {0.794465, -0.762318}, {-0.342740, -0.044003}, {0.664133, 0.988572}, {-0.591256, -0.550813}, {0.004503, -0.209721}, {-0.704415, 1.115631}, {0.499527, -0.865457}, {-0.427010, -0.058056}, {-0.442966, -0.801730}, {-0.028645, -0.432707}, {-0.520193, -0.477441}, {0.693746, -0.591685}, {-0.723356, -0.124885}, {-0.271467, 0.138230}, {0.378694, -1.346075}, {0.867608, -0.861081}, {-0.030809, -0.637696}, {1.547649, -0.433481}, {0.281972, 1.218074}, {0.289769, -0.252994}, {-0.547299, -1.114947}, {0.281379, 0.103827}, {0.144241, 0.141649}, {0.882615, 0.777328}, {0.293825, -0.291434}, {0.115586, 0.642325}, {-0.661045, -0.025898}, {0.339237, 0.790670}, {-0.709378, 0.173682}, {-0.691671, 0.227216}, {-0.093392, 0.390772}, {-0.822655, 1.661899}, {0.470760, -0.539462}, {0.883847, 0.324028}, {-0.816597, -0.501790}, {-0.171583, -1.222645}, {0.589553, 0.087931}, {0.352979, -0.325299}, {-0.040087, 0.573102}, {-0.333396, 0.702907}, {0.678815, 0.634352}, {1.236381, -0.495768}, {0.455672, 1.242359}, {-0.877502, -1.177867}, {0.036368, 0.084722}, {-0.261535, 1.262188}, {-0.187800, 0.138469}, {0.075047, 0.017116}, {-0.553277, -0.427987}, {0.203971, -0.219700}, {-0.102810, 0.727420}, {-0.208146, 0.641188}, {0.505555, -1.229252}, {-0.089677, -0.317869}, {0.045298, 0.553962}, {0.682165, 0.978041}, {0.758240, 1.062833}, {-0.591609, -0.169416}, {0.200002, -0.806496}, {0.401893, -0.505467}, {-0.049368, 0.974221}, {-1.338392, -1.052507}, {-0.234168, -0.459732}, {-0.049076, -0.787956}, {-0.440995, 0.824773}, {-0.310494, 0.155186}, {0.629950, 0.438434}, {0.128082, -0.298934}, {-0.889005, -0.700750}, {0.725139, 1.108872}, {0.806530, 0.172376}, {1.274152, -1.109091}, {0.361415, 0.304318}, {-0.770589, -1.690576}, {-0.077050, -1.541958}, {0.055098, 0.140834}, {-1.027384, -0.083170}, {-0.387121, 1.173074}, {-0.511185, -0.640359}, {0.970168, 0.278280}, {-0.399875, -0.215985}, {0.578435, 0.171387}, {-0.143334, -0.387392}, {1.048777, 0.181700}, {0.369934, 0.608091}, {1.128358, -0.533869}, {0.725995, -0.677232}, {0.131748, -0.914071}, {-0.661664, 0.557397}, {0.864385, 0.026499}, {-0.076076, -0.384927}, {-1.700148, 0.806878}, {-0.093025, 0.160711}, {0.657889, -0.819687}, {1.415252, 0.043090}, {-0.474513, 1.021749}, {-0.235819, 0.669443}, {-0.209294, 0.038555}, {0.350373, 0.947927}, {-0.473777, 0.450919}, {-0.439863, -1.296476}, {-0.041963, 0.452473}, {0.519491, -0.934337}, {0.029848, 0.199221}, {0.568997, 0.413023}, {-0.422968, 0.191107}, {-1.046889, -0.575230}, {0.555575, 0.114778}, {-0.271803, -0.125287}, {-1.492866, -0.813928}, {0.581882, -0.352968}, {-0.802623, 1.377947}, {0.700558, 0.297364}, {0.010499, 0.485443}, {0.030525, -0.214066}, {0.290003, -0.036848}, {0.177382, 0.633674}, {-0.142112, -0.817479}, {-1.506692, 0.130953}, {-0.549851, 0.089496}, {0.530755, 1.632153}, {0.958531, -1.707736}, {0.610349, 2.078139}, {-0.086293, 0.239772}, {0.202042, -0.362267}, {0.894271, -1.466671}, {0.438957, 0.318388}, {-0.721440, -1.241242}, {0.570884, 0.929768}, {0.691115, 0.078293}, {2.031262, 0.005026}, {0.614740, 0.403247}, {-0.153316, -0.453097}, {-0.500683, -0.473711}, {-0.604458, 0.407987}, {0.182040, 0.697141}, {-0.162319, 0.006736}, {0.525699, 0.675310}, {-0.360962, -0.686781}, {1.308789, -0.386448}, {-0.174349, -0.941565}, {-1.104866, 0.335170}, {-0.705175, 0.291939}, {-0.244608, -0.192226}, {0.962480, 0.146916}, {0.413036, -0.045753}, {0.322721, 0.586207}, {-0.285444, 0.020732}, {-0.201547, -0.960376}, {-0.525784, 0.598120}, {-0.594926, 0.215987}, {-0.157909, -0.395456}, {0.609670, 0.114630}, {0.326789, -0.001808}, {-0.652800, 0.608450}, {0.630816, -0.318163}, {1.290349, -0.308122}, {0.302288, 0.042105}, {-0.618234, -0.122607}, {-0.671018, 0.647521}, {-0.033489, 1.029981}, {1.127675, 0.838844}, {-0.391586, 0.406333}, {0.634599, -0.206173}, {-0.158274, 0.281173}, {0.031888, 0.459707}, {-0.371921, 0.932324}, {0.076527, -0.283407}, {-0.241424, 0.283793}, {0.312402, 0.175612}, {0.212368, -0.432081}, {-0.773642, 0.100780}, {0.251432, 0.483141}, {-0.166812, -0.067869}, {0.027261, 0.793139}, {0.764140, 0.027200}, {0.014120, -0.858433}, {-0.996727, 0.370392}, {0.132527, 0.167380}, {0.972844, 0.615013}, {-0.400845, -1.129354}, {0.468849, -0.867083}, {1.017556, -0.782061}, {-0.109531, -0.643417}, {-0.213625, 0.158193}, {0.199067, -0.074333}, {0.344584, -1.074916}, {-0.221442, 0.527535}, {-0.427743, 0.192179}, {-0.445158, 0.223376}, {-0.406246, -1.129810}, {0.498180, -0.537912}, {0.246385, 1.147774}, {1.124593, 0.638781}, {-0.238219, -1.178279}, {0.564715, 0.082624}, {0.009528, -0.294926}, {0.449595, -0.413499}, {-0.222000, -0.383341}, {-0.293071, -0.020010}, {0.262525, -0.619825}, {-0.622110, 0.994815}, {0.826520, -0.318905}, {-0.139956, 0.034670}, {-0.602776, 1.445757}, {-0.000428, 0.515115}, {0.262184, -0.002736}, {1.304981, -0.501046}, {-0.321231, 0.622551}, {1.054329, -0.220852}, {-0.492771, -0.940654}, {-0.780517, 1.146123}, {-0.030875, -1.453137}, {0.833466, -0.395468}, {0.523778, 0.759513}, {-1.126077, -0.417115}, {-0.556663, 0.032786}, {0.206892, -1.122757}, {-0.366164, 1.106942}, {0.152365, -0.067752}, {0.046570, -0.568357}, {-1.294625, 0.304168}, {-0.314597, -0.414620}, {1.204236, 0.126016}, {-0.051512, 0.247893}, {-0.662050, -0.548429}, {0.806882, 0.635211}, {0.354519, 0.315406}, {-0.102549, -0.307759}, {-0.945865, -1.144877}, {0.092988, -0.095752}, {-0.590799, 1.426964}, {-0.512031, -0.295192}, {-0.241074, -0.440517}, {0.829680, 0.087681}, {-0.109337, -0.289886}, {0.656985, 0.294518}, {0.564203, 0.206732}, {-0.898597, -0.207926}, {0.327259, 0.685055}, {1.226880, -0.695505}, {-0.829727, 0.718718}, {-1.451225, -0.289371}, {0.837042, 1.220714}, {-0.158113, 0.175430}, {0.974037, -0.062980}, {0.178835, 0.169509}, {1.118203, 0.735886}, {0.104949, -0.340257}, {0.378724, 0.089648}, {0.214056, -0.821406}, {1.396107, 0.599080}, {0.369926, 0.109247}, {0.673800, 0.763612}, {-0.268951, -0.230063}, {0.567933, 0.162580}, {-1.689604, -0.345288}, {0.137885, -0.093063}, {-0.298533, -0.191792}, {1.251967, -0.136681}, {-0.693495, -0.932444}, {-0.555325, -0.131594}, {0.236263, -0.069815}, {-1.252648, 0.035106}, {-1.764317, 0.733486}, {-0.075051, 1.622354}, {-0.085244, -0.605377}, {-0.642959, -0.089863}, {-0.113593, -0.099045}, {0.058362, -1.029047}, {0.826847, 0.113454}, {-0.244119, -0.050284}, {-1.073509, 0.123867}, {-0.904460, -0.901549}, {0.453204, -0.459712}, {-1.264724, -0.418653}, {0.472295, -1.485124}, {0.323558, -0.092765}, {1.800720, 0.519789}, {-1.126308, -0.318456}, {0.724158, -0.269665}, {0.710385, 0.177657}, {-0.783852, -0.215007}, {-1.354067, 0.031020}, {-1.015185, 0.249321}, {0.839984, 1.457903}, {-0.353245, -0.313877}, {0.763070, 0.903317}, {-1.656538, -0.791042}, {-0.892608, -0.381481}, {0.649284, -0.643492}, {1.455720, -0.133815}, {0.732560, -0.289157}, {-0.377583, -1.019029}, {-0.377847, -1.270397}, {0.809711, -0.293496}, {-1.027232, -0.492600}, {-0.531947, -1.149837}, {-0.321890, 0.886703}, {-0.603477, -1.377457}, {0.259723, -0.220563}, {0.949998, 0.240148}, {0.261264, 0.890932}, {0.595257, -1.336390}, {-0.362741, 0.082717}, {-0.355324, -0.058517}, {-0.404853, -0.487143}, {-0.431324, 0.299014}, {0.079328, -0.804580}, {0.824935, -0.454231}, {0.262757, -0.554689}, {0.126869, -0.439135}, {-1.051874, -0.512746}, {0.293715, 0.904688}, {-1.530512, -0.258114}, {0.782473, 1.192382}, {0.532046, 0.769399}, {0.384142, -0.126943}, {0.161275, -0.961466}, {-0.060918, -0.053277}, {0.876995, 1.833961}, {-0.747767, 0.165348}, {-0.052410, -0.612302}, {0.814379, 0.370027}, {0.848717, -0.351940}, {-0.797478, -0.346407}, {0.451936, 1.010194}, {0.582376, 0.949018}, {-0.342362, 0.108576}, {0.556515, -0.142943}, {0.728162, -1.097160}, {-1.075414, 0.137602}, {0.457708, -0.654780}, {0.165246, 1.781712}, {-0.319642, -0.993107}, {-0.584410, 0.462585}, {-0.203283, -0.682679}, {-0.872903, 0.560968}, {0.545374, 0.278981}, {0.918419, 0.246065}, {-0.632251, -0.167158}, {-0.285094, 0.517218}, {0.742545, -0.428022}, {-0.272512, -0.650121}, {0.007097, -0.259464}, {0.321549, -0.153838}, {-0.935528, -0.478174}, {-0.609717, -0.076270}, {-0.755654, -0.453108}, {0.881595, 0.809393}, {-0.851194, -0.126438}, {-0.678539, -0.168662}, {-0.735439, 1.454476}, {-0.702070, -0.732654}, {0.950217, 0.061374}, {0.931381, 0.383055}, {-1.577577, -0.830957}, {1.081051, 0.875738}, {0.946201, 1.485701}, {0.433276, 0.890427}, {1.505338, 0.234134}, {0.083216, 0.185535}, {0.206556, 0.692397}, {0.800164, 1.210478}, {0.308393, -0.573495}, {-0.455541, 0.377465}, {0.285379, 0.593679}, {1.807014, 0.007663}, {1.599165, -0.768434}, {-0.182963, -1.147207}, {0.691660, 0.496669}, {0.235179, -0.284885}, {-0.461998, 0.542110}, {-1.935320, -0.774389}, {-0.078056, -0.127823}, {0.299281, -0.033361}, {0.302731, 0.078716}, {0.069066, -0.050105}, {0.221607, -1.239222}, {0.340220, 0.582368}, {-0.565872, 0.345751}, {-0.470414, 0.191707}, {-0.086475, -1.321960}, {-0.653337, 1.499706}, {-1.186698, 0.203143}, {0.362014, 0.335224}, {0.763790, -0.914370}, {1.135858, -1.463878}, {0.719099, -0.477518}, {0.269766, 0.421199}, {0.064365, -0.175814}, {-0.367548, 0.001256}, {0.544776, -0.698629}, {0.615651, -0.386841}, {-0.875089, -0.516872}, {0.413476, -1.281108}, {0.502809, -0.490843}, {-2.204143, 0.110420}, {-0.385040, -0.740596}, {0.695904, 0.385231}, {0.255709, 0.008205}, {-0.586557, -0.564665}, {0.803747, 0.411107}, {1.601181, 0.662062}, {0.865286, -0.979781}, {0.689845, 0.519237}, {0.395498, 0.145840}, {-0.626369, 0.344739}, {0.042164, 0.051887}, {-1.403498, 0.671656}, {0.598572, 0.681828}, {1.220256, -1.165620}, {-0.793312, 0.715179}, {-0.234183, 0.019938}, {0.385507, 0.226328}, {-0.450997, -1.107601}, {-1.171289, 0.649867}, {-1.080178, -1.231856}, {-0.061619, 1.143806}, {0.430298, 0.525364}, {-1.049354, 0.166192}, {-0.080776, -0.357525}, {0.511572, -1.785495}, {-0.558196, 0.261639}, {-0.887145, 0.298578}, {-1.566637, 0.706769}, {1.151140, 0.445122}, {-0.586133, 0.107778}, {-0.804525, 0.245580}, {0.980744, 1.043818}, {-0.070419, -0.910922}, {-0.451713, 0.466261}, {1.125777, 0.160904}, {0.577041, 0.069860}, {1.144021, -0.150339}, {-0.411414, 0.404973}, {0.188443, 0.548050}, {0.225498, -0.614626}, {1.398432, -1.427287}, {-0.035313, 0.492779}, {0.460713, -1.022950}, {-0.523193, -0.887124}, {-1.045011, 0.261402}, {1.388863, -0.612235}, {0.475152, -0.857959}, {0.468680, -0.231389}, {0.983306, 0.199760}, {-0.645385, 0.205021}, {-0.363448, -0.870316}, {-0.003819, 0.010668}, {0.471121, 0.244769}, {-0.040500, 0.556180}, {-1.479050, 0.358434}, {0.182788, 0.373558}, {-0.858638, -0.878108}, {0.001368, 0.436654}, {0.142518, 0.294864}, {-1.153171, 0.438127}, {0.937820, 0.034099}, {1.521724, -0.077421}, {-0.377694, -0.278517}, {1.467230, -0.459260}, {0.145964, 0.357560}, {0.619192, -1.480037}, {-0.797876, 0.686615}, {-0.465726, 1.294829}, {1.120753, 0.433341}, {0.481084, 0.429728}, {-0.993491, -0.218804}, {0.080120, 0.061366}, {-0.345080, -1.108765}, {0.597685, -1.108810}, {0.272861, -1.448070}, {0.103180, -0.368753}, {0.452562, -0.193846}, {-0.047889, -0.169513}, {-0.062237, -0.499899}, {-0.208393, 1.227431}, {0.358621, -0.122079}, {-0.538647, 0.167846}, {-0.535399, 0.147300}, {-0.016851, -0.523791}, {0.185591, 0.287441}, {-0.076126, 0.077379}, {0.111808, -0.298068}, {-0.360049, 0.447806}, {-0.468579, 0.021829}, {0.999254, 0.093009}, {0.409156, 0.087569}, {-0.290239, 1.155172}, {-0.631769, 0.113278}, {-0.485475, 0.352847}, {0.132807, 0.899243}, {0.231351, -0.149363}, {0.389824, -1.011206}, {-0.093767, 0.618494}, {0.302881, 0.883287}, {0.253348, -0.020438}, {0.310115, 0.544154}, {-0.181672, 0.250213}, {0.785253, -0.002714}, {0.399704, -0.310344}, {-1.634428, 0.357997}, {0.976723, 0.117106}, {-0.663422, 0.938808}, {1.142522, 0.426250}, {-0.176854, 0.538674}, {1.134571, 1.976267}, {-0.793977, 0.553600}, {-0.496199, 0.132777}, {0.428161, 1.342281}, {0.881731, -0.349207}, {0.487284, -0.673507}, {0.834150, 0.300816}, {1.043740, 0.574802}, {-0.108407, 1.056837}, {-0.745715, 0.304328}, {0.494903, 0.535517}, {-0.608093, 0.752694}, {0.430291, -0.135674}, {-0.174181, -1.362910}, {-0.064613, -1.995513}, {-0.704478, 0.276742}, {0.232225, -0.347325}, {0.129886, 0.297225}, {0.095056, 0.366532}, {1.123177, -0.516860}, {0.280489, 0.548995}, {0.950114, 0.871146}, {-0.045855, -0.101106}, {0.323361, 0.916197}, {-0.379042, -0.789420}, {0.155370, -0.526626}, {0.123440, -0.404112}, {1.122189, -0.542010}, {0.287594, -0.412748}, {-0.487695, -0.914112}, {0.326158, -0.133099}, {-0.166449, -1.353339}, {-0.055827, 0.625175}, {-1.228110, 0.059411}, {-0.274514, -1.194058}, {0.008816, -0.571387}, {-0.700423, 0.936284}, {-0.528928, 0.824434}, {-0.436216, 1.131698}, {-1.371594, -0.535034}, {-0.002092, 0.190907}, {-0.652668, 1.278957}, {0.101573, -0.906194}, {0.783427, -0.139790}, {-2.499705, -0.774554}, {0.580857, 0.350367}, {-0.259410, 0.346345}, {1.443858, 0.066180}, {1.007880, -0.608615}, {-1.185398, -0.124630}, {-1.074749, -0.104417}, {-0.075128, 0.869631}, {-0.157998, 1.035636}, {-0.212559, -0.416354}, {0.399589, -0.077372}, {0.139788, 0.342017}, {1.188158, -1.194288}, {0.290935, 0.230597}, {0.467906, 0.144104}, {0.777358, 0.288836}, {0.818580, 0.308433}, {-0.210142, 0.214512}, {0.315948, -0.636328}, {-0.005891, -0.999753}, {0.072755, -0.563891}, {0.425654, 0.196551}, {0.361411, -0.211226}, {0.905206, -1.349513}, {-0.790974, -0.395724}, {0.525156, 0.770383}, {-0.092408, -0.488183}, {0.265920, -0.036150}, {-0.276333, -0.689856}, {0.117261, 0.005735}, {-0.665691, -0.164460}, {0.312157, -0.594442}, {0.107864, -0.443120}, {1.118670, -0.671898}, {-0.022763, 0.583797}, {0.510916, -0.179671}, {0.714169, -0.104546}, {0.396036, 1.216840}, {0.373920, 0.135520}, {0.553972, -0.997894}, {0.052585, 0.462084}, {-0.150044, -0.163447}, {1.461147, 0.659548}, {-1.000455, -1.680109}, {-0.717611, -0.210337}, {-0.772596, -0.251350}, {0.537726, 1.050492}, {-0.482650, -0.283289}, {-0.633239, -0.569656}, {-0.904458, -0.617468}, {0.109119, -1.522443}, {-1.226419, -0.899079}, {0.379579, -0.252179}, {-0.104614, 0.852366}, {-0.503179, 0.002718}, {0.361405, -0.255127}, {0.707854, -0.139151}, {0.588351, 0.341695}, {0.541234, 0.404290}, {-0.423201, 0.945891}, {0.540899, 0.903758}, {-0.383715, -1.224310}, {0.541671, -0.191686}, {0.220524, -0.467755}, {0.419523, -0.261834}, {-0.248004, -0.524029}, {1.166929, -0.005245}, {0.162462, 0.683697}, {0.021613, -1.336883}, {-0.371790, -0.820360}, {0.064987, -0.180902}, {-0.530311, -0.237448}, {0.014535, 0.196268}, {0.302158, -0.943375}, {-0.741328, -0.621982}, {-0.990134, -0.843669}, {0.298802, 0.314671}, {0.150737, -0.515418}, {0.642389, 0.170803}, {-0.660634, -0.070932}, {-0.466752, 0.294915}, {0.498991, 0.882812}, {-0.120033, -0.318492}, {-0.283866, 0.416022}, {-1.125159, 0.156951}, {0.164229, 0.285664}, {-0.680682, 0.531478}, {-0.228335, 0.444181}, {0.424797, -0.850202}, {-0.620993, 1.933195}, {0.618146, 1.057688}, {0.351681, 0.093757}, {0.343992, -0.350496}, {0.419756, -0.682277}, {0.132223, -0.220393}, {0.315669, -0.077213}, {0.623756, -0.047636}, {-0.980970, 0.008924}, {-0.180176, 0.848320}, {1.546197, 0.370102}, {0.713022, -0.899697}, {-0.512503, -0.004650}, {-1.161518, 0.132127}, {-1.041393, -0.554167}, {-0.036518, 0.378256}, {-0.567661, -0.897940}, {0.259504, -0.049623}, {-0.026158, -0.270600}, {0.724927, -0.499448}, {0.138307, 1.291056}, {-1.822129, -1.644371}, {0.671500, 0.097591}, {-0.980895, 0.107560}, {-0.420513, 0.010420}, {0.003000, -0.162645}, {0.447768, -0.633708}, {0.382118, 0.153956}, {-0.223916, -0.841490}, {-1.102503, -0.035876}, {0.040286, 0.813246}, {0.067205, -2.636223}, {-1.058178, -0.439882}, {0.240943, 0.599442}, {-0.266778, -1.074089}, {0.320826, -0.918839}, {-0.646954, -0.007690}, {-0.530749, -0.347252}, {-0.393036, -0.123253}, {0.053211, -2.091439}, {-0.481911, -0.677379}, {-0.014975, 0.997160}, {0.536010, 1.088136}, {-1.031007, -1.129666}, {-0.116730, 0.519996}, {1.565485, -0.343272}, {-0.368459, 0.506657}, {-0.230470, -0.260120}, {0.621381, 1.007440}, {0.186324, -0.312790}, {0.273069, -0.166279}, {0.201102, 1.556145}, {-1.115634, 1.567159}, {-0.648866, -0.322859}, {-0.704410, 0.380438}, {0.342389, 0.213936}, {-0.042804, 0.701810}, {0.016719, 0.090798}, {-0.731592, -0.277491}, {0.103078, 0.783883}, {0.345053, 0.215559}, {0.067924, 1.081925}, {0.369806, -0.219722}, {1.098806, 0.215612}, {-0.724316, -0.036048}, {0.186158, 0.608022}, {0.139663, 0.056514}, {-0.575010, -0.801492}, {-1.123663, -0.414602}, {0.564236, 0.266108}, {-0.391462, 0.093429}, {0.144703, -0.560902}, {-0.686121, 1.329790}, {-0.379640, -0.241261}, {-0.498875, -1.364991}, {0.541470, 0.214751}, {-0.508841, -0.694946}, {0.812702, 0.407024}, {0.257132, 0.128592}, {-1.187255, -0.495273}, {0.020247, -0.196925}, {0.188392, -0.459074}, {-0.932918, 0.525366}, {1.134929, 1.151288}, {-1.296745, -0.844320}, {-0.610290, -1.014578}, {0.623994, 0.443023}, {-0.303615, -1.049124}, {-0.597543, -0.208275}, {0.252960, 0.992397}, {-0.023412, 0.368284}, {-0.429581, -0.070039}, {0.923782, -0.778340}, {0.060056, -0.739469}, {0.753096, 0.478049}, {-0.127857, 0.093383}, {0.106401, 0.423911}, {-0.183224, -0.032369}, {-0.381160, 0.851604}, {-0.797228, -0.217383}, {0.227067, 0.316891}, {0.451114, 1.830366}, {-1.042958, 0.186763}, {-0.171936, 0.478779}, {-0.075379, 0.034822}, {0.385404, 1.160047}, {0.105260, -1.211098}, {1.211046, -1.103540}, {0.308818, -1.042156}, {-0.704631, -0.115963}, {0.012675, -0.547391}, {-0.484557, -0.100460}, {-0.836917, -0.043501}, {-0.463115, 1.544351}, {0.309894, -0.669455}, {0.685375, 0.000866}, {0.511942, 0.836813}, {-0.929517, -0.531037}, {0.050933, 0.075894}, {0.845070, 1.231045}, {0.796139, 0.796776}, {0.766749, -0.653760}, {0.742048, 1.398289}, {-0.403017, -0.007496}, {-0.509706, 1.110607}, {-1.449968, 0.427343}, {-0.010909, 1.223294}, {-0.077727, -0.670769}, {0.526333, 0.308160}, {0.319094, -0.176388}, {0.742543, 1.379446}, {1.245044, 1.188638}, {-0.025489, -0.164810}, {0.608945, -0.073624}, {-0.174670, -0.273746}, {-0.624686, 1.010041}, {-0.670461, 0.584006}, {-0.444858, -1.904891}, {0.222806, 0.547945}, {0.138390, 0.546322}, {-0.446882, -0.696967}, {-0.628694, -1.208785}, {-2.152300, -0.613403}, {-0.096864, 0.068138}, {-0.301906, -0.946012}, {-0.369820, -0.646125}, {-1.447581, -0.646713}, {-0.400707, -0.494477}, {-0.635435, -0.038456}, {0.296783, 0.278288}, {-1.001213, 0.042941}, {0.091071, 0.902239}, {-0.460656, 0.281628}, {0.479946, 0.142043}, {-0.487485, -0.696643}, {-0.407485, -0.541246}, {-0.607882, -0.853128}, {-1.305443, -0.877425}, {-0.359749, -0.647498}, {-0.626709, 0.576527}, {-0.148729, -0.090456}, {0.172979, 0.177948}, {-0.107637, -0.478667}, {0.366998, 0.024629}, {0.462107, 0.857612}, {-0.460563, 0.248349}, {0.907838, 0.853909}, {0.783150, 0.585374}, {-0.299669, -0.212882}, {1.119594, 0.504852}, {0.377228, 0.481423}, {0.852296, 0.676788}, {-0.286757, -0.002129}, {0.209843, -0.977784}, {-0.441823, -0.072773}, {0.917957, -0.753300}, {0.273348, -0.628772}, {-0.284862, 0.155215}, {-0.247355, -0.247082}, {2.118546, -0.537469}, {-0.310251, -0.363626}, {1.378995, 0.614774}, {0.009172, -1.398820}, {-0.300000, 0.441999}, {-0.297449, 0.954413}, {0.683275, 0.180768}, {-0.371476, -1.618431}, {-0.175134, -1.231505}, {-0.749555, -0.428287}, {-0.969477, 0.592818}, {0.687133, -0.691685}, {-0.165526, -0.045505}, {0.910848, -0.391948}, {1.179305, 0.100935}, {0.166614, -0.729254}, {-1.130469, 0.164593}, {-1.549639, 0.217721}, {-0.481054, -0.872328}, {-0.586590, -1.074824}, {0.091563, 0.381294}, {-0.609678, -0.230306}, {0.503876, 0.238278}, {-0.562595, 1.625733}, {1.273220, 0.329444}, {0.309265, -0.432313}, {0.950421, 0.011570}, {0.374275, -0.221395}, {-0.002535, -0.068439}, {-0.704010, -0.714205}, {0.645151, -0.117244}, {-0.548621, 0.089519}, {-1.310708, 0.214149}, {-0.222895, 0.327611}, {-1.536313, 0.422522}, {0.805899, -1.158480}, {0.201190, 0.527469}, {0.085621, -0.741991}, {-0.638953, 0.135701}, {0.610284, 0.256558}, {-0.021550, -0.185034}, {-0.663349, 0.344785}, {1.234438, 0.087483}, {-0.131234, -1.490191}, {0.256245, 0.425473}, {-0.093340, 0.831930}, {-1.552555, -0.056483}, {0.441688, 0.115210}, {0.108127, 0.046402}, {-0.367616, -0.887437}, {-0.808894, -0.681247}, {-0.609795, -0.206087}, {0.578144, 0.401209}, {-0.066620, 0.628916}, {0.230375, -0.294361}, {0.168031, 0.445080}, {0.184035, 0.358481}, {0.251087, -0.489438}, {-0.945207, 2.090916}, {-0.899493, 0.281441}, {-0.600711, 0.695281}, {0.496877, 1.825249}, {0.557064, 1.787828}, {-0.032903, 0.096150}, {-0.171482, -0.526085}, {-0.560700, 0.472487}, {-0.295947, 0.009918}, {1.142040, 0.416169}, {-0.447775, 0.074483}, {-0.823909, -1.010476}, {-1.547191, 1.727266}, {-0.760387, -0.877929}, {-1.629711, -0.932786}, {0.486282, 0.248117}, {-0.264396, 0.926022}, {1.081113, 0.075435}, {-0.643699, -0.289886}, {0.440984, 0.308158}, {0.821736, -0.810105}, {-1.505203, -1.521192}, {-0.542677, 0.842918}, {0.164887, 0.399004}, {-0.811521, 0.078831}, {0.797827, -1.167125}, {-0.401101, -0.501867}, {0.364811, -0.809028}, {0.734068, -0.323428}, {-0.319197, -0.550535}, {-0.271324, -0.367006}, {-0.059699, 0.983663}, {-1.366932, 0.282483}, {0.168976, 0.203650}, {0.302598, -0.221575}, {1.175485, 0.753488}, {0.107512, 1.781766}, {0.946028, -0.282479}, {-0.679608, -0.932184}, {-1.191856, 0.201361}, {-0.166462, -0.053378}, {-0.812532, -0.147616}, {1.611017, 0.674833}, {0.314528, 1.017239}, {-1.162592, 0.325194}, {-1.032033, 0.635921}, {0.084120, -0.730470}, {0.494315, 0.897198}, {0.847109, 0.168996}, {1.644454, 0.751446}, {-0.353970, -0.863128}, {0.678397, 0.141939}, {-0.973674, -2.013022}, {0.685345, 0.419897}, {-1.288642, -0.442089}, {-0.054887, -0.748914}, {-0.601785, -0.605123}, {-0.214297, -0.391510}, {-1.074972, 0.659726}, {0.105391, 0.708672}, {-0.113354, -0.765485}, {0.300873, 0.781452}, {0.170277, 0.599499}, {0.147834, -0.954326}, {-0.339726, -0.501183}, {0.544002, 0.385444}, {0.352044, 1.066552}, {0.911869, 0.956912}, {-0.191047, 0.108966}, {1.413499, -0.757569}, {0.706789, -1.026854}, {0.539308, -0.138690}, {0.080942, -0.272806}, {0.098018, 0.018024}, {0.195238, -0.389384}, {0.488144, -0.357992}, {-0.309817, 0.010149}, {-1.032893, -0.592658}, {-0.298775, -0.388887}, {1.131782, -1.690704}, {-0.193514, 0.171204}, {-0.537903, -0.543134}, {0.659055, -0.601144}, {0.304951, 0.294985}, {0.888941, 0.970043}, {0.458543, -0.183693}, {-0.759308, 0.795668}, {-0.350375, -0.113882}, {-0.127585, 0.382365}, {-0.213916, 0.521858}, {-0.344818, 0.116112}, {-0.092834, -0.185633}, {0.061649, 1.365497}, {0.476463, -0.791558}, {-0.984206, 0.997109}, {-0.057978, -0.489422}, {-0.194234, -0.607085}, {-0.657674, 0.088412}, {-0.469191, 0.137722}, {1.011820, -0.291022}, {-0.303269, -0.626332}, {0.561159, -0.200477}, {0.140475, 0.804297}, {0.160608, -0.598328}, {0.213319, 1.449153}, {1.142243, 0.283340}, {0.065037, -0.257834}, {0.261033, 0.207025}, {0.700460, 0.482503}, {0.843141, -0.154417}, {0.292633, 0.402510}, {-0.818789, -0.671620}, {0.736334, -0.267822}, {-0.736153, 0.705889}, {-1.012207, -0.010744}, {0.662579, 0.401311}, {-0.387354, -0.679445}, {1.209621, -0.153205}, {-0.701672, 0.069607}, {1.319853, 1.085888}, {1.254748, -0.101110}, {0.266011, -0.499106}, {0.615725, 0.884454}, {-1.011208, 0.102181}, {-1.099802, -0.974027}, {-0.531963, -0.562972}, {0.121607, -0.356338}, {0.518231, 0.154831}, {0.499951, 1.188225}, {-0.817457, 1.714401}, {0.369950, 0.572897}, {-0.414845, -0.182628}, {-0.718216, 1.117213}, {-1.333928, 0.469810}, {-1.207522, -0.417102}, {0.561111, 0.726184}, {-1.117766, -0.219214}, {0.744550, -0.034760}, {0.797619, 1.455506}, {-0.584053, 0.337943}, {0.157397, -0.757585}, {0.116196, -0.446006}, {0.146428, 0.467807}, {0.714421, -0.366232}, {1.429872, 0.625346}, {-0.033015, 0.198674}, {0.105885, -0.216353}, {-0.023687, 0.692143}, {-0.048073, 0.669529}, {-0.205184, 0.780326}, {0.266525, 0.176072}, {0.141148, 0.252191}, {-0.388369, 0.046018}, {0.299170, -0.177464}, {-1.081893, -1.145642}, {0.010014, 0.514986}, {0.448166, -0.748932}, {-0.295357, -0.035173}, {-0.033904, 0.187373}, {-0.964666, -0.232491}, {0.485426, -1.478534}, {0.150372, 0.430681}, {1.004055, 0.755612}, {-1.273932, -0.382681}, {-0.123319, 0.320989}, {-0.919513, -0.315545}, {-0.497703, 0.345372}, {0.182013, -0.018783}, {0.188130, -1.169909}, {-0.716006, -0.184715}, {0.178950, -0.378160}, {-1.121777, 0.261067}, {-0.884913, 0.533499}, {-0.252487, -0.381490}, {-0.521029, -0.459944}, {0.109009, -0.604069}, {-0.131799, -0.166129}, {-0.915776, 0.867035}, {-0.051356, -0.189373}, {0.352025, 0.298949}, {0.197533, 0.081879}, {-0.198604, 0.668512}, {1.153004, 0.840196}, {-0.111957, -0.162456}, {1.271047, 0.649951}, {-0.272905, 1.016445}, {-0.490432, -1.110506}, {0.098962, 0.280027}, {-0.149747, -1.055724}, {0.592247, -0.565550}, {1.155912, -1.145805}, {0.763039, 0.568494}, {-0.395993, 0.406406}, {0.047324, 0.263514}, {-0.137376, 0.214639}, {-0.226893, -0.197915}, {0.966088, -0.475559}, {-0.194234, -0.012569}, {-0.473935, -0.886494}, {-0.265603, 0.751773}, {-1.593588, 0.084399}, {1.119877, 0.854302}, {-0.038422, 0.118207}, {0.370947, 0.914543}, {1.114324, 0.036220}, {0.206356, -0.695196}, {1.075653, 0.031579}, {-0.428467, 0.099867}, {-0.942289, 0.247139}, {-0.925418, -0.511600}, {-0.275870, -0.147021}, {0.403291, -0.774485}, {-0.147236, -0.816691}, {0.715749, -0.581534}, {0.714183, -0.266639}, {-0.530022, 0.395632}, {-0.081142, 0.308192}, {0.776196, -1.301781}, {0.402042, 0.760863}, {0.582426, 1.116527}, {0.303501, -1.230810}, {0.909943, -0.101521}, {-0.304997, 0.216745}, {-0.534911, -1.278462}, {0.117181, 0.344833}, {0.598680, -0.801582}, {-0.488952, 0.298129}, {-0.577852, -1.244262}, {1.066878, -0.383162}, {0.365205, -0.304288}, {0.219744, 1.047894}, {-0.203519, 0.603274}, {0.562170, 0.561149}, {0.172008, 0.053308}, {-0.240833, -0.248882}, {0.374048, 0.395277}, {-0.184462, 0.712107}, {-0.744861, -0.403328}, {0.909695, -0.029738}, {-0.518537, 0.759702}, {0.075402, 0.358815}, {1.141827, -0.585600}, {-0.562473, 0.258697}, {-1.676194, 0.124049}, {0.233487, -1.891531}, {-0.829451, 0.542206}, {0.671130, -0.997574}, {-0.508597, -0.729909}, {1.180725, -0.338574}, {1.129566, -0.232048}, {-0.380058, 0.044743}, {-0.520974, 0.138217}, {0.316724, 0.009838}, {0.133527, -1.443095}, {0.420516, 0.089332}, {-0.302825, 0.028929}, {1.668571, -0.092751}, {0.452698, 0.532245}, {0.360685, -1.949182}, {-0.909377, 1.422417}, {0.108981, 0.031519}, {0.529371, -0.320971}, {-0.439658, 0.288459}, {0.212286, -0.312996}, {0.505587, 0.680236}, {0.990288, -0.247507}, {-0.568695, -0.327833}, {-0.026999, -2.401438}, {0.339704, -0.467720}, {1.232324, -0.049586}, {-1.244245, -0.285340}, {-1.630956, 0.212445}, {0.099499, 0.057161}, {0.764231, -0.893147}, {0.454370, -0.132950}, {0.140425, 0.680194}, {0.516606, 0.024468}, {-0.862301, 0.058704}, {0.505420, 0.269336}, {-1.237570, -0.038382}, {0.535371, -1.536667}, {-0.363929, -0.038955}, {0.024531, 0.914036}, {0.543681, 0.532978}, {-0.515135, -0.698846}, {-0.428846, 0.073398}, {-1.039931, 0.055062}, {-0.621873, -1.226401}, {0.007829, 0.811232}, {0.571021, -0.114346}, {-0.382807, 0.023667}, {-1.068780, -1.869853}, {1.156098, -0.153257}, {0.573828, -0.535261}, {-0.790467, 0.176901}, {-0.315664, 0.803594}, {-0.334936, 0.354728}, {-0.055522, 0.952521}, {1.315614, 0.102351}, {0.491766, 0.538302}, {0.653814, -0.342202}, {-0.127639, -1.045441}, {0.819444, -0.227273}, {-0.029933, 0.258527}, {-0.824566, 0.432697}, {0.165227, -0.560056}, {-0.588310, 0.436099}, {-0.421849, -0.388859}, {-0.090400, -1.251581}, {-0.533719, 1.429956}, {0.394513, 1.115320}, {-0.782266, 0.768142}, {-0.197776, 0.622177}, {-0.067525, 1.525139}, {1.756764, 0.035239}, {0.798450, -0.795585}, {-0.262068, 0.632512}, {1.880538, -0.279111}, {-0.792909, -0.561815}, {0.888441, 1.301812}, {0.701364, -0.873528}, {1.343495, -0.562411}, {0.868597, 0.141126}, {-0.328745, 0.918909}, {-0.941006, -1.339590}, {-1.343155, -0.049963}, {-0.574658, -1.478137}, {0.137838, 0.792901}, {-0.041365, 0.454133}, {0.091431, -0.459571}, {-1.358113, -0.736001}, {-0.192427, -0.926593}, {0.350541, 0.433002}, {-0.084577, -0.444999}, {0.205895, -0.138558}, {-0.941218, -0.106877}, {-0.194195, 0.335722}, {0.734401, -0.283139}, {1.613564, -0.517256}, {-0.090641, 0.231313}, {0.266345, 0.222315}, {0.518095, 0.960832}, {0.250561, -0.619001}, {-0.130002, -0.001817}, {-0.447930, 0.628615}, {-1.273623, 0.406367}, {0.212427, 0.986079}, {-0.997576, -0.940297}, {0.375197, 0.358510}, {0.229471, -1.781878}, {0.184320, 0.461606}, {0.434436, -0.414778}, {0.034886, -0.062974}, {-1.325976, 0.135652}, {0.189020, -0.739167}, {-0.205637, -0.572855}, {0.860524, -0.315333}, {0.469117, -1.548092}, {-0.513513, 1.158982}, {-0.837350, 0.105504}, {-0.061953, -0.530778}, {0.293859, 0.467221}, {-1.319548, -0.912039}, {-0.137013, -0.872433}, {0.387589, -0.454601}, {-0.234174, -0.245068}, {-0.744095, -0.128278}, {-0.391439, 0.309053}, {0.908503, 0.583369}, {0.802960, 0.512355}, {-0.685064, 1.108868}, {0.251810, 0.543558}, {-0.142699, 0.735253}, {-0.039414, -0.908746}, {0.003694, -0.414133}, {0.715774, 0.070174}, {-0.374828, 1.309546}, {-0.427538, 0.385587}, {1.338794, 0.002127}, {-0.216609, -0.694721}, {-1.047300, 0.562533}, {0.397480, 0.627659}, {-0.068233, -1.155685}, {-0.553008, 0.472904}, {-0.042893, -0.644339}, {-0.448845, -1.208575}, {-1.198214, 0.953970}, {0.997727, 0.245114}, {0.597755, 0.536424}, {0.056192, 0.023036}, {-0.599560, 0.905339}, {-0.495127, -1.106235}, {-0.677290, -0.536778}, {-0.732936, 0.552336}, {-0.341833, 0.636930}, {0.745283, 0.226951}, {-1.677101, -0.140140}, {0.185817, 1.107540}, {-0.845686, -0.138093}, {0.337944, -0.600359}, {1.011849, 0.076595}, {-0.535078, 0.401710}, {-0.509358, 0.080738}, {-0.713136, 0.201088}, {-0.037796, -0.459023}, {0.077312, 0.078831}, {-0.674500, 0.304809}, {0.022353, 0.208630}, {0.234088, -0.185560}, {-0.100573, -0.317607}, {1.598601, 0.170815}, {1.128860, 0.395856}, {0.126361, 0.194856}, {-0.743378, -1.283214}, {-0.729153, -1.745945}, {0.427334, 0.514369}, {-0.260759, 0.127843}, {0.726265, 0.484686}, {-1.043220, 1.583933}, {0.058154, 0.202930}, {-0.691332, 0.298501}, {0.914411, -0.450303}, {0.871508, -0.248846}, {-0.880065, -1.352105}, {-0.347400, -0.479989}, {-0.523254, -0.137392}, {0.062610, 0.321808}, {0.583315, 1.055442}, {-0.543484, 0.434486}, {-0.325772, -0.127451}, {-0.691826, -2.465879}, {-0.182029, -0.371495}, {0.061634, 0.106658}, {0.465593, -0.215001}, {0.799056, -0.576378}, {0.246446, 0.624574}, {-0.629259, -0.126268}, {-0.332421, -0.594629}, {0.811796, 0.672092}, {-0.362575, -0.952485}, {-0.013237, -0.559132}, {0.462364, -0.104255}, {-1.326460, -0.448336}, {-0.472969, -1.030240}, {0.263871, 0.137456}, {0.289922, 0.058766}, {0.129665, -0.095386}, {0.004142, 0.060144}, {0.440724, 0.236644}, {-0.648048, -0.197413}, {-0.313149, 0.016730}, {-0.002432, 0.336209}, {0.258660, 1.080749}, {-0.622678, -0.971236}, {-0.756907, -0.630989}, {-0.511331, 1.518728}, {0.044649, -0.192437}, {-0.525301, 1.021474}, {-0.281214, 0.054685}, {-1.829357, -0.855561}, {-1.000657, -0.711545}, {0.117003, -0.447632}, {0.776485, -0.166259}, {0.540743, 0.110749}, {0.957454, -0.352617}, {1.317026, 1.546090}, {0.140886, 0.013168}, {-0.570171, 0.392356}, {-0.129722, 0.788992}, {-0.725847, 0.653395}, {0.679142, 0.364229}, {0.007173, -0.853037}, {0.914126, -0.596944}, {0.066525, 0.639936}, {0.026810, 0.096725}, {-0.538577, -0.152497}, {0.239321, 1.002422}, {0.129554, -1.193610}, {-0.187528, 0.700211}, {-0.645819, 0.080298}, {0.283125, 0.043507}, {0.350661, 0.372335}, {-0.655806, 0.541560}, {0.259071, 0.914486}, {-0.920489, -0.623889}, {0.682493, 0.379061}, {-0.505215, 0.663097}, {-0.426863, -0.323863}, {0.363894, 0.848174}, {-0.959164, 0.304144}, {0.370840, 0.239161}, {-0.576532, 1.683390}, {0.072048, -0.479737}, {0.248627, -0.740696}, {0.267982, -1.331841}, {-0.742341, -0.098982}, {-1.397583, 0.691099}, {0.062944, -0.918057}, {-0.341076, -0.572305}, {-0.625912, 0.261916}, {0.000942, 0.115087}, {-0.175561, -0.065593}, {0.613856, -0.651875}, {-0.374162, -1.289950}, {-0.165900, -0.183065}, {0.934889, -0.088622}, {-0.658801, -0.699260}, {-0.381254, -0.924817}, {-0.606669, 0.746831}, {-0.801585, -0.060323}, {0.750367, -1.191764}, {0.422306, 0.025905}, {-0.348244, -0.193827}, {0.533889, 0.323919}, {-0.475731, -0.614214}, {1.358458, 1.027040}, {0.041062, 0.716650}, {1.086781, 0.856076}, {-0.318239, -0.090265}, {-0.583590, -0.229458}, {0.280177, -0.106195}, {-0.066028, 1.050147}, {0.446572, 0.653688}, {1.619855, 1.546549}, {-0.200833, -0.507327}, {1.815705, 1.725080}, {0.491063, -0.912080}, {-0.302422, -0.518018}, {-1.497067, -0.317440}, {0.268533, -2.004116}, {-0.197770, -0.600212}, {0.599980, 0.496906}, {-0.801705, -0.434370}, {-0.209023, -0.416797}, {0.089678, 0.179194}, {0.720592, -0.140217}, {0.937690, 0.785413}, {0.390751, 0.123322}, {0.407110, -0.263791}, {-0.635582, 0.585058}, {1.028085, 0.038369}, {0.650746, -0.320141}, {0.273652, -0.045191}, {-0.773139, -0.851372}, {0.357316, 0.497209}, {0.140061, 0.278817}, {-0.416838, -1.327050}, {1.445687, -0.014796}, {0.457813, 0.799090}, {-0.556724, 0.854916}, {-0.641068, -0.733796}, {-0.186028, 0.209995}, {0.018928, -0.915909}, {-0.352721, 0.748722}, {-0.917271, 0.414704}, {-1.388564, 0.625074}, {-0.601451, 1.435210}, {-0.090926, -0.755952}, {-0.293108, -1.116392}, {0.041463, -0.942099}, {0.666369, -0.398063}, {0.076754, -0.528375}, {0.698873, -1.134724}, {-0.392975, -1.312348}, {-0.526917, 0.774984}, {-0.133714, -0.398997}, {-0.990661, -0.808244}, {0.208158, 0.174976}, {-0.042402, 0.479397}, {0.972845, -1.260660}, {-0.360790, 2.380324}, {-1.161445, -0.617964}, {-1.369325, 0.963665}, {0.712060, 0.409267}, {0.061189, 1.091821}, {0.108450, 0.248626}, {-0.532186, 0.684632}, {0.049827, 0.344103}, {-0.730446, -0.644051}, {0.644672, 0.108521}, {-0.311770, 0.388340}, {0.133496, 0.663978}, {-1.068918, -0.856697}, {-0.186471, -2.407906}, {0.497449, 0.217132}, {0.553690, 0.561973}, {-0.222306, 0.573912}, {0.294889, -0.153714}, {-0.467937, -0.114124}, {0.505513, 0.947824}, {0.835613, 1.387442}, {0.099424, -0.647555}, {-1.266308, 0.746230}, {-0.314232, -0.506824}, {-0.017508, 1.148471}, {-0.005104, 0.544153}, {1.347437, 0.169568}, {0.736192, -2.120244}, {0.478583, -0.538318}, {-0.845261, -0.241234}, {0.711244, 0.248858}, {-0.960539, 0.885631}, {0.519557, 0.157119}, {0.400078, -0.558660}, {-0.355913, -0.726436}, {0.620301, 0.283481}, {0.437469, 0.894420}, {-0.246065, -0.441159}, {-0.207652, 0.260112}, {0.235413, 1.202266}, {-0.147333, 0.651418}, {-0.885893, -0.987513}, {-0.126637, -0.161050}, {0.198054, -0.239859}, {0.753221, -0.122113}, {0.852570, 0.312679}, {-1.421536, 0.339068}, {-0.608847, 0.082841}, {0.806647, -0.618066}, {-0.055481, 0.361346}, {0.524385, 1.872652}, {-0.288788, -0.146810}, {-0.967147, -0.853194}, {1.966405, -0.833411}, {0.789003, -0.347270}, {0.015620, -0.631887}, {-0.150879, 0.915769}, {-1.491238, 0.217030}, {0.326333, 1.498518}, {0.141223, -0.389036}, {-0.513646, 0.793641}, {0.900859, 0.209672}, {0.036641, -0.621067}, {-0.472702, 0.503169}, {-0.229471, 0.415297}, {-0.063377, -0.510807}, {1.772735, -0.165259}, {0.367308, 0.204078}, {-0.811216, -0.742540}, {-0.346736, -1.336241}, {-0.390538, -0.215693}, {0.273645, 0.017357}, {-0.411219, -0.583215}, {0.179285, 0.386901}, {-0.714087, -0.705568}, {0.354034, -0.029101}, {-0.124648, -1.203258}, {1.036534, -0.216642}, {-0.079461, -0.167129}, {-0.519538, 0.969040}, {-0.926647, -0.543191}, {-0.311806, 0.129944}, {0.338452, 0.046144}, {0.443791, 1.037348}, {0.366235, 0.139119}, {-0.436045, -0.889787}, {-0.487186, -0.329841}, {0.501924, -0.296196}, {-0.155070, 0.928638}, {-2.271375, -1.096587}, {-0.875416, 0.031515}, {0.034895, 1.136367}, {1.259196, 0.151467}, {-0.252917, 0.546385}, {0.146755, 0.215855}, {-1.279319, 1.584790}, {-0.218261, -0.211344}, {0.838865, -0.281694}, {0.072992, 0.018618}, {-1.486640, -1.384387}, {0.673440, 0.783368}, {0.039087, 0.485902}, {0.548339, -0.131470}, {-0.662826, 2.232434}, {-0.724622, -0.767747}, {-0.737761, -0.048276}, {0.858736, 0.000247}, {-0.219835, -1.241124}, {0.396621, -0.086901}, {-1.437003, 0.502828}, {-1.537267, 0.734791}, {0.247638, -1.034931}, {-0.879638, 0.130748}, {0.532153, 0.697673}, {0.869286, 1.340851}, {0.477714, -0.332712}, {-0.081229, 0.614635}, {-0.409415, -0.046581}, {0.677428, -1.891076}, {-0.988289, 0.508962}, {0.887530, -0.096640}, {-1.348466, 0.384365}, {-1.031462, -0.619078}, {-0.457756, 1.980067}, {-1.307319, -0.821311}, {-0.428687, -1.927863}, {0.126831, 0.314297}, {0.552891, 0.191885}, {1.303032, -1.178928}, {-0.456697, 0.537127}, {-0.138564, 0.139533}, {-0.864216, -0.683295}, {0.036298, -1.122012}, {0.480571, -0.713238}, {0.192623, -0.245657}, {1.311303, -0.200987}, {0.399964, -0.611107}, {0.442759, 1.073488}, {-0.696011, -1.128391}, {0.170959, -0.286343}, {1.066110, -0.985228}, {-0.541647, 0.438916}, {-0.441049, 1.398625}, {0.351268, -0.444252}, {-0.100225, -0.353511}, {-0.544437, 0.471382}, {0.719671, 0.361168}, {0.651644, 0.499506}, {0.854268, -0.138822}, {-0.292998, -1.397932}, {0.351302, 0.565472}, {-0.249761, -0.289783}, {0.579986, 1.135063}, {0.380274, 0.431460}, {0.142501, -0.768253}, {1.174364, -1.250559}, {0.124183, -0.664356}, {-1.775768, -0.426318}, {-0.410384, 1.397669}, {-0.001185, 0.082445}, {0.683819, 0.016434}, {-0.474231, -1.274486}, {-0.227899, -0.715442}, {0.190972, -1.037010}, {0.515506, 1.060213}, {0.574070, -0.057852}, {0.794263, 0.456543}, {0.941117, 0.348461}, {0.714095, 0.442504}, {-1.016134, -0.621262}, {1.501944, -0.164696}, {0.859384, 0.325223}, {0.605958, -0.405522}, {0.907773, -0.133478}, {-0.652518, 0.324279}, {-0.223686, 1.532219}, {0.361665, 0.114357}, {0.118379, -1.485257}, {0.306623, -1.663751}, {-0.611527, 0.305831}, {-0.371509, 0.148804}, {-0.317648, 0.168418}, {-0.579078, -0.164959}, {0.064958, 1.214070}, {-1.513764, -0.019390}, {0.016424, 2.001058}, {-0.457485, -0.024951}, {-0.847341, 0.548593}, {-0.839426, 0.760265}, {-0.698344, 1.016456}, {-0.246799, 0.331351}, {0.869786, -0.376963}, {-0.318179, 0.256495}, {0.392127, -1.203653}, {-0.120425, -0.077075}, {1.005891, -0.597390}, {0.055568, -0.619495}, {0.760399, 0.047681}, {0.293058, 0.480236}, {0.295600, 1.063913}, {0.595203, 0.121404}, {0.681366, -0.184135}, {1.298989, -0.786985}, {-0.354303, 0.275603}, {0.255593, -0.140121}, {1.054477, 0.948719}, {-0.798213, 0.913454}, {-0.582777, 0.673212}, {-1.973554, 1.089905}, {0.606828, -0.566130}, {-0.539355, -1.199468}, {0.086100, 0.764955}, {0.792542, -1.548656}, {-0.533920, 0.802166}, {0.132591, -0.662338}, {-0.061156, 0.482952}, {-0.104437, -0.056214}, {-2.042381, 0.317327}, {-0.706828, 0.899494}, {-0.098682, 0.865073}, {0.231769, -0.480548}, {-0.723515, -0.797806}, {-0.333745, -0.255096}, {1.425486, 0.616569}, {-0.223026, -0.286492}, {0.945380, -0.819845}, {-0.836305, 0.433398}, {0.888634, -0.227558}, {-0.302648, -0.403994}, {-0.266759, 0.341454}, {-0.911044, 0.207652}, {0.257598, 0.267578}, {-0.376137, -0.484206}, {-0.106228, 1.155262}, {-0.547100, -1.021943}, {-0.252786, 0.099260}, {0.089525, -0.008952}, {-0.445924, 0.184429}, {0.141610, -0.548673}, {-0.639422, -1.083761}, {0.498910, 0.621386}, {0.093824, -0.107770}, {-0.245646, 0.217584}, {-0.612243, -0.523719}, {0.457347, 0.364012}, {-0.411336, -0.629464}, {-0.092268, 0.204563}, {0.920493, -0.578667}, {-0.869454, -0.238633}, {-0.751389, 0.777007}, {0.580578, 0.705056}, {-1.233334, -1.695404}, {-0.121305, 0.368160}, {0.782543, 0.610795}, {0.553925, 1.300069}, {1.374260, 0.609157}, {-1.357033, 0.843414}, {0.098626, -0.521365}, {-0.032515, 0.264753}, {0.062218, 0.085845}, {0.138012, -1.084788}, {-0.187827, 1.380862}, {0.263689, 1.028871}, {-1.215770, -0.552066}, {-0.971891, -0.672402}, {-0.256976, 0.648996}, {0.007809, -0.724976}, {-1.053466, -0.103232}, {0.957392, -1.526623}, {0.387851, 1.252142}, {0.298416, -0.686813}, {-0.249408, -0.417895}, {-0.524619, -0.646987}, {-0.101608, 0.062621}, {0.111389, -0.960781}, {1.101285, 0.205008}, {-0.120747, -0.663793}, {-0.602035, 0.176470}, {1.221108, 0.961762}, {0.159797, -0.161413}, {-0.233941, 0.806754}, {1.256036, 0.863057}, {0.259618, 0.549863}, {0.320844, 0.899846}, {1.030547, -0.232090}, {-0.517929, -0.918284}, {0.680314, 0.060717}, {-0.505026, -1.527791}, {0.162336, 0.314724}, {0.234991, -0.216314}, {1.375132, 0.094076}, {-0.125705, -0.044844}, {0.657598, 0.128665}, {0.281292, 0.370853}, {0.027894, -0.981212}, {-0.732655, 0.132501}, {-0.338577, 0.250010}, {-1.883558, 0.143130}, {-1.095169, -0.539749}, {0.166138, 0.224390}, {-1.094189, -0.104317}, {-0.997375, -0.598321}, {-0.535645, -0.686231}, {1.289569, -0.268987}, {0.998965, 0.994487}, {-0.349591, 0.714244}, {-0.457773, -1.093644}, {-1.171475, 1.478846}, {0.523449, 0.576947}, {-0.610201, 0.802389}, {1.367942, -0.063770}, {-1.189872, 0.914725}, {0.408213, 0.132025}, {-0.856124, -1.135856}, {-0.347681, -0.706150}, {0.226903, 0.619634}, {0.548890, 0.651093}, {-1.798606, -0.216122}, {-0.220157, -0.282742}, {0.108822, -0.485596}, {-0.238309, -0.347750}, {-0.476180, 0.392785}, {0.428713, -0.175999}, {0.416074, -0.089752}, {1.268016, -1.407373}, {-0.322409, 0.315716}, {-0.086932, -0.954776}, {-1.178527, 1.119818}, {0.873189, -0.405550}, {-0.286794, -0.449645}, {0.741120, -0.039714}, {-0.401502, 0.784565}, {1.378832, 0.131114}, {-0.510286, -0.774428}, {-0.241374, 0.226729}, {-0.413898, -0.710203}, {-0.617347, -0.040064}, {1.452338, -1.110283}, {0.018838, -0.592385}, {0.339572, -0.084802}, {0.262142, 1.120113}, {0.382072, 0.167998}, {-0.273583, 1.253093}, {-0.509580, -0.586627}, {-1.016938, 0.501199}, {0.530467, 0.149760}, {0.204492, 0.038013}, {0.074458, -0.292217}, {0.257628, 0.451130}, {0.557490, -0.411723}, {-0.181796, -0.641207}, {-0.392248, -0.582808}, {0.705525, -0.502120}, {-1.021501, -0.207399}, {-0.060821, 0.298599}, {-0.261969, -0.318225}, {-0.350443, 1.831054}, {0.029182, 0.719110}, {-1.269295, -1.154099}, {-1.488271, -1.469956}, {0.176535, 1.097410}, {-1.195927, 0.342358}, {0.582184, 0.396307}, {-0.764560, -0.634440}, {0.106084, -0.378503}, {0.760363, 0.649530}, {-0.020356, -0.601389}, {-0.423594, -0.651490}, {0.600149, -0.395775}, {0.421193, 0.051504}, {-1.364237, 0.717686}, {0.876530, -0.288772}, {-0.098973, 0.266692}, {0.051789, 0.462817}, {0.361495, -0.346842}, {-0.553109, 0.940488}, {-0.653951, 0.277526}, {0.163045, -0.244626}, {-0.126776, -0.299731}, {0.860475, 0.302389}, {0.606731, -0.425179}, {0.305458, 0.780583}, {1.028347, -1.635167}, {0.197608, 1.209333}, {0.150105, -0.773508}, {-0.560487, -1.383294}, {-0.657034, 0.108016}, {-0.629934, -0.335711}, {-0.404889, 0.112022}, {0.350071, -0.125444}, {-0.397430, -0.533393}, {1.157015, -0.673598}, {0.836126, -0.091404}, {0.420003, 0.030830}, {0.304754, 0.940964}, {0.857632, -0.131707}, {1.482902, -0.526416}, {-0.506755, 0.581483}, {0.798173, -0.622550}, {0.199645, 0.054187}, {-1.166797, -0.592686}, {0.703425, -0.099088}, {0.100574, -0.652021}, {-0.452634, 0.557510}, {-0.395655, 0.631259}, {0.005128, -0.031089}, {-0.476422, 0.288975}, {-0.696440, 1.007601}, {0.651351, 0.229279}, {-0.546184, 0.967790}, {-1.783408, 0.458041}, {-0.158492, 0.721176}, {-0.829438, -0.495769}, {0.853862, -0.436152}, {-0.510630, 0.354021}, {0.410283, -0.562993}, {1.333456, 0.619765}, {0.680707, 0.364967}, {0.768117, 0.202325}, {-0.624035, 0.194222}, {-0.242982, -0.068768}, {-0.060626, 0.243812}, {0.918857, 0.010191}, {-0.158575, -0.660882}, {0.268070, -1.046163}, {-0.550812, -0.916602}, {0.222526, -1.326576}, {-0.142632, 1.771943}, {-0.500111, 0.366333}, {0.045897, -0.931826}, {0.061037, -0.398634}, {-1.206603, 1.049450}, {-0.346603, 0.009748}, {-0.194651, -0.420179}, {-0.172385, 1.200766}, {-0.276451, -1.221394}, {-0.971227, 0.736046}, {0.849993, -0.122658}, {0.565771, 1.029030}, {0.572575, -0.539519}, {-0.278977, 0.982730}, {-0.406039, -0.534002}, {-0.022104, -0.217645}, {0.393789, -0.655764}, {-0.821859, 0.222043}, {0.709829, -0.538537}, {0.309091, 1.335973}, {0.555716, 0.225149}, {1.155433, -0.264109}, {-0.224191, -0.004592}, {-0.076549, 0.928899}, {0.141337, -0.500391}, {-0.286491, 0.403995}, {0.340087, 1.192301}, {-0.264734, 0.101794}, {0.873252, -1.455120}, {-0.574337, 0.221889}, {-1.110424, 0.703227}, {0.420803, 0.333899}, {0.277080, -0.644572}, {-0.747538, 0.159962}, {0.552815, 1.068068}, {1.368512, 0.010990}, {-0.206001, -0.237472}, {0.288503, -0.659436}, {-0.954056, 0.215502}, {1.548500, -0.238286}, {-0.889812, 0.522877}, {-0.012439, -0.723786}, {-0.525273, -0.379121}, {-0.527515, -1.502476}, {0.133542, 0.108887}, {0.492447, -0.045511}, {0.574807, -1.260810}, {0.878001, 0.683264}, {-0.376682, -0.588180}, {0.164608, 0.358034}, {0.459547, 0.386397}, {-1.374767, 0.442204}, {-0.699591, -0.427016}, {-0.228447, -1.161662}, {-0.322419, 1.606881}, {0.576055, 1.101472}, {0.563123, 0.146375}, {0.244216, -0.241690}, {0.438112, -0.485327}, {-1.276929, 0.367200}, {-0.181353, -1.346356}, {-0.146869, -0.957341}, {-2.198517, 0.705247}, {-0.289717, -0.177364}, {0.280325, -1.142208}, {0.002380, 0.345383}, {-0.418233, -1.133385}, {0.183564, 0.534520}, {-0.372636, -0.051311}, {-0.020811, -0.085884}, {1.163894, -0.173220}, {0.616165, 0.230038}, {-1.320575, -0.652613}, {0.123778, -0.062176}, {-0.722536, -0.008719}, {1.340873, 0.027244}, {-0.294827, -0.522338}, {-0.602427, 0.183616}, {-0.785766, -0.953680}, {-0.286187, 0.348720}, {-0.280901, 0.554931}, {0.380116, 0.763759}, {0.780404, 0.192032}, {1.328343, 1.436113}, {-0.362877, 0.085413}, {1.403308, -0.413647}, {0.773876, -0.086423}, {-1.316530, -0.726207}, {-0.379298, -0.390658}, {-0.150301, 0.006436}, {0.370812, -0.684290}, {-0.905463, -0.548246}, {-0.072613, 0.421906}, {-0.211486, 0.321136}, {-0.247273, 0.076461}, {-1.160356, 0.131643}, {0.379819, -0.441965}, {1.064987, 0.033534}, {-0.575692, -0.336300}, {-0.131156, 0.299834}, {-0.907355, -0.562159}, {-0.142894, -0.067061}, {-0.305338, 0.059685}, {-0.890171, -0.918641}, {-0.333344, 0.104434}, {0.450288, 0.236190}, {0.180918, -0.376193}, {-0.816878, 0.145535}, {-0.789538, -1.143910}, {-0.022631, 0.224265}, {-0.080696, 0.591185}, {-0.511739, 0.521540}, {1.522040, -1.191704}, {-0.120255, 0.225194}, {-0.124457, 0.484338}, {-0.332395, 0.668069}, {1.358569, 0.343165}, {-0.907961, 0.303291}, {-0.726165, 0.958101}, {-0.631030, -0.969657}, {0.187222, -0.841928}, {-1.702365, -0.218011}, {0.042628, -1.318380}, {0.356098, 0.394505}, {-0.321503, -0.176962}, {-1.508798, 0.471924}, {0.284711, -0.884522}, {-0.279981, 1.075346}, {0.261212, 0.062374}, {0.730161, -0.028577}, {1.413322, -0.696512}, {-0.537404, -0.498826}, {0.470840, -0.050515}, {1.075743, 1.816796}, {0.238969, 0.728689}, {0.021923, -0.203939}, {0.068466, 0.691633}, {-0.463844, 0.382524}, {0.536354, 1.367231}, {-0.269568, 0.317660}, {-0.509721, -0.056128}, {-0.996035, 0.482343}, {-0.318504, 0.613621}, {0.724407, -0.391671}, {-0.976483, 0.002770}, {0.168754, -0.138651}, {-0.850412, 0.004662}, {-0.778271, 0.301141}, {-0.556300, -0.014048}, {-0.144566, 0.581755}, {1.567425, -1.299013}, {-0.633055, -1.176258}, {-1.218887, 1.088643}, {-0.057700, 0.210952}, {-0.252005, -0.056308}, {-0.164041, 1.200916}, {0.881096, -0.523409}, {1.271002, 0.348902}, {0.300212, 0.080781}, {-1.259126, -0.385348}, {0.380261, -0.005380}, {0.301990, -0.096667}, {-0.644417, 0.661865}, {0.031295, -0.414362}, {0.513909, -0.849192}, {1.037724, 0.167813}, {0.045507, 0.302800}, {-1.007752, -0.631584}, {-1.626240, 0.520166}, {0.161739, -0.005463}, {-1.011094, -0.296322}, {0.530863, -0.353709}, {0.919905, -1.215387}, {-0.399307, 0.348172}, {0.124302, -0.831545}, {-1.101106, 0.209511}, {0.423896, 0.392179}, {-0.194011, -0.630735}, {-0.500591, 0.215709}, {0.031183, 0.910928}, {0.038389, -0.311259}, {-0.355431, -1.334079}, {0.530912, -0.294080}, {-0.716034, -1.092596}, {0.581166, 0.307768}, {0.499546, -1.691484}, {-0.109812, -0.243400}, {0.044216, 0.158567}, {-1.588308, -0.037482}, {0.222448, -1.635453}, {-0.184406, -0.084681}, {1.961808, 0.936940}, {0.545590, 0.745191}, {0.655076, 0.761226}, {0.928499, -0.528748}, {0.311753, 0.419596}, {1.127516, 0.514393}, {-1.142233, -1.018180}, {-0.751043, 0.873569}, {-0.003552, -0.256010}, {-0.055468, -0.040296}, {-0.461006, 0.063426}, {0.114477, 1.054606}, {0.646237, -0.738074}, {0.047691, 0.563215}, {0.182860, -0.736483}, {1.006184, -0.743762}, {0.208249, 1.194100}, {-0.936638, -0.678655}, {1.379611, -1.003314}, {-0.214213, 0.683884}, {-0.412822, 0.050631}, {0.206172, -0.486222}, {-0.262572, 0.662397}, {0.484827, 0.903902}, {1.340717, 0.828282}, {0.376723, -0.394673}, {0.947224, 0.377674}, {-1.479304, -0.488522}, {-0.346264, -1.112863}, {0.079983, -0.757019}, {-0.589024, -0.865351}, {0.154858, 0.742523}, {-0.185417, -1.110911}, {0.054021, 0.213561}, {0.049129, 0.159524}, {0.250903, 1.427318}, {-1.002452, -1.002884}, {-0.706890, 0.148861}, {-1.154288, -0.107721}, {-0.817221, 0.436977}, {-0.157997, -0.870204}, {1.385451, -1.059729}, {-0.802317, 0.030557}, {0.536617, -0.377124}, {-0.267416, 1.257724}, {0.271600, -0.064099}, {-0.293484, 0.280734}, {-0.139114, -0.129475}, {0.480314, -0.765081}, {0.342935, -0.322883}, {0.036162, -0.632071}, {0.182499, 0.303409}, {0.388280, -0.850579}, {-0.118716, 0.915001}, {-0.755100, -0.436041}, {-0.860414, 0.326513}, {-0.078845, 0.146499}, {-0.454604, 0.719797}, {-2.241604, 0.049962}, {-1.192389, 1.327719}, {0.375567, 1.037999}, {0.689446, -0.703830}, {0.302199, -0.655993}, {-0.087239, 0.488734}, {0.211377, 0.892874}, {-1.046074, -0.479046}, {-1.018003, 0.367627}, {-0.152274, 1.650427}, {-0.779947, 1.239985}, {0.952925, 0.318968}, {0.643531, 0.231822}, {-0.469200, -0.137811}, {0.818526, -0.988439}, {0.143608, -0.391619}, {-0.078638, -0.494635}, {-0.706101, -0.278646}, {-0.828922, 0.806409}, {-0.198227, 0.585023}, {-0.181743, -0.538596}, {0.696894, 0.324933}, {-1.035302, -0.067149}, {1.116654, -0.636352}, {-1.447442, -0.383901}, {-0.842335, 0.808594}, {-0.059386, -1.333912}, {0.039588, -0.568428}, {1.841497, 0.186063}, {-0.222182, 0.546696}, {-0.492511, 0.065429}, {-0.049596, 0.521704}, {0.950219, 0.001244}, {0.239031, 0.821970}, {-0.148545, -0.111477}, {-0.799855, 0.719260}, {-0.198976, -0.598787}, {1.057029, -0.080555}, {-0.042454, 0.198415}, {-0.396442, 0.128443}, {0.356674, 0.917567}, {0.629624, -0.252468}, {0.494230, 0.346046}, {-0.203429, 0.238311}, {-1.254628, -0.489511}, {-0.885587, 1.273245}, {0.130810, -0.161627}, {0.060963, -0.761843}, {-0.216955, -1.087269}, {0.365978, 0.094954}, {0.912409, 0.200455}, {-1.054822, -0.278074}, {0.608031, 0.908329}, {0.311314, -0.062994}, {-1.084923, -0.437044}, {0.483123, 0.692619}, {0.487429, 0.109963}, {-0.553350, 0.131579}, {-0.992250, 0.280366}, {-0.884746, 0.002868}, {-0.029371, 1.412446}, {0.678184, 0.364567}, {-0.139078, -0.387712}, {-0.347524, 1.175467}, {-1.183990, -0.650822}, {1.246393, -1.035660}, {-0.296366, 0.060319}, {-1.583348, 0.761657}, {-0.150878, 0.717756}, {-0.539900, 0.032499}, {0.538042, -0.765398}, {0.608876, -0.599854}, {0.351878, -0.018209}, {-0.963879, 0.867025}, {-0.746801, 0.240322}, {-0.264184, -0.061670}, {0.684332, 0.011746}, {1.440898, -0.176096}, {0.229892, -1.161869}, {0.056788, -0.657892}, {-0.700251, -0.949597}, {-0.678207, -1.371336}, {0.610739, 0.719252}, {-1.817905, -0.601268}, {0.031990, 0.180419}, {0.060516, 0.204577}, {-0.679842, 1.491688}, {0.905999, -1.561989}, {-0.013397, -0.658106}, {0.646469, -0.124247}, {0.231365, -0.066460}, {0.072911, 1.358672}, {0.523387, 0.767592}, {-0.255464, -0.837687}, {-0.347596, 0.065474}, {-0.118698, 0.282555}, {0.227003, -0.532110}, {-0.105316, 1.261845}, {-1.287464, 0.009365}, {0.164639, 0.004452}, {0.487845, -0.036515}, {0.237642, -0.113136}, {0.280221, -0.370952}, {-0.693740, -0.547488}, {-0.026475, -1.513071}, {0.562730, -0.294865}, {-0.407170, -0.821101}, {-0.007381, -0.255046}, {-0.882883, 0.044493}, {0.458046, -0.236675}, {-0.280611, 0.402649}, {0.655407, 0.081470}, {-0.583163, 0.689875}, {-0.126923, -0.141713}, {0.568498, -0.192502}, {0.207786, -0.707445}, {0.181237, -0.315024}, {0.452277, -0.237819}, {0.804749, 0.161488}, {-0.668502, -0.165804}, {-0.995984, -0.756193}, {-1.477199, 0.138328}, {0.224779, 0.153369}, {0.714115, -0.105414}, {0.755752, -1.157271}, {-0.624159, 0.288454}, {0.410050, -0.940682}, {-0.735226, 0.333144}, {-0.319454, -0.151368}, {-0.534119, 0.581015}, {-1.021982, 0.025073}, {0.364749, -0.324409}, {-0.809700, -0.013999}, {-0.631631, -1.111146}, {0.041314, -0.401087}, {0.694871, 0.735264}, {-0.367532, -1.564337}, {-0.580821, -0.330655}, {0.183537, 0.598051}, {-0.245114, -0.399095}, {0.431852, -0.491440}, {-1.538842, 0.741551}, {0.355387, -0.411799}, {0.047607, -1.484812}, {-0.406563, -0.099734}, {-0.476070, -0.974793}, {0.424268, -0.049799}, {-0.463479, 0.342533}, {-0.021704, -0.441977}, {0.274849, 0.092550}, {0.062134, 0.876438}, {0.724167, -0.072370}, {-0.878909, 0.087750}, {0.496256, -0.162627}, {0.279006, 0.247471}, {1.112257, -0.008240}, {-0.542958, 1.121075}, {0.883658, -1.033522}, {0.665774, 1.218471}, {-0.485500, 0.566506}, {0.101171, -0.467048}, {0.428733, 0.037372}, {0.070215, 0.356568}, {-0.115995, 0.469828}, {-0.288060, 0.751706}, {-0.893341, -0.479910}, {0.129788, -0.712225}, {0.607605, -0.659464}, {-0.928870, 0.184671}, {1.532564, 0.622921}, {-0.259213, 0.773723}, {-0.613180, 1.165169}, {-0.246855, 0.477170}, {-0.763396, 0.185209}, {0.176437, -0.026025}, {0.238849, 0.442184}, {-0.352254, -0.531682}, {0.807799, -0.627800}, {0.047221, 0.691612}, {-1.063426, -0.086542}, {0.127711, -0.873769}, {-0.266249, -0.401636}, {-0.792988, 0.561747}, {1.359199, 0.175116}, {0.055027, 0.221748}, {-0.811887, 0.783136}, {-0.242847, 1.170197}, {0.603982, -0.386618}, {-0.066028, -0.887924}, {0.195072, -0.461362}, {-0.124588, -1.349309}, {-0.923671, 0.021243}, {0.672608, 0.390882}, {-0.157503, 0.476204}, {0.395069, 1.581050}, {0.546212, 0.493126}, {-0.275470, -0.171620}, {0.279435, 0.010272}, {0.398665, -0.060216}, {-0.540549, -0.545716}, {-0.203679, 0.332363}, {-0.496097, -0.577372}, {0.580802, 0.437667}, {1.112826, -0.947356}, {-0.740122, -1.666636}, {0.794783, -1.131704}, {-0.942124, -0.854277}, {-0.673412, 0.214855}, {-0.147656, 0.291988}, {-0.104863, 0.388239}, {0.076779, 0.606955}, {0.200388, 0.524721}, {-0.320980, 0.897459}, {0.075462, 0.168864}, {1.058383, -0.217411}, {-0.257135, -0.135694}, {-0.967934, -0.164808}, {-0.923465, 1.535662}, {-0.342228, 0.493143}, {0.950437, 0.330328}, {1.159788, 0.029407}, {0.519360, -0.289634}, {-0.387919, 0.756822}, {0.110258, -0.324655}, {-0.834385, 0.057787}, {0.385197, 0.770062}, {-0.865068, -0.695108}, {-0.163616, 0.499126}, {-0.260925, 0.174936}, {0.269825, -0.563868}, {0.085977, 0.711242}, {-0.154136, -0.310298}, {0.667896, 0.312458}, {0.455000, 0.511352}, {-0.119230, 0.565919}, {0.448509, -0.266193}, {-0.076594, 0.711581}, {0.487758, -0.084284}, {-0.134384, 0.512608}, {-0.073188, -1.588799}, {0.263813, -1.537716}, {-0.318161, 0.668523}, {0.716481, 1.034983}, {0.100407, 0.603227}, {1.278314, 0.725134}, {-1.102419, -0.668425}, {-1.533689, -0.122580}, {-0.015321, -0.363228}, {-0.354993, -0.049059}, {0.234433, -0.176360}, {1.531154, 1.445120}, {0.196174, -0.704589}, {0.939701, 0.188199}, {-0.883210, -0.154533}, {0.533736, 1.018771}, {1.025444, -0.745913}, {-0.224936, 0.074982}, {-0.445386, -0.861890}, {0.037407, -0.227981}, {-0.186347, -1.290577}, {-0.309371, 0.403374}, {-0.532396, 0.613887}, {2.165530, 1.358975}, {2.007988, -0.415721}, {1.170118, 1.184736}, {0.147671, 0.285319}, {0.189048, -1.372490}, {0.572345, -0.160934}, {-0.968055, 0.078689}, {-0.838057, 0.005487}, {0.002971, 0.754035}, {0.963936, -1.052451}, {1.384693, -0.238220}, {0.730919, -0.253514}, {-0.055962, -1.239576}, {-0.971576, 0.081729}, {1.592811, 0.554873}, {0.891373, -1.465274}, {-0.436801, 0.681487}, {0.781594, -0.567997}, {-0.734441, -0.356614}, {-0.417233, 0.307766}, {-0.342015, -0.643618}, {-0.292766, -0.377798}, {0.524786, 0.511648}, {-0.581227, 1.232650}, {-0.014453, 0.621820}, {0.249726, 0.375897}, {0.606730, -0.436103}, {0.470665, 1.092492}, {0.049061, 0.242758}, {0.356517, 0.602295}, {-0.136680, -0.171375}, {0.138788, 0.924838}, {1.014005, -0.233081}, {-1.201889, 0.445990}, {1.026871, -0.586108}, {0.489435, 1.106440}, {-0.647070, 0.966539}, {0.412053, 0.403891}, {1.508765, 0.651857}, {0.967302, 0.360629}, {0.643439, 0.542859}, {0.009643, 0.167438}, {-0.043095, -0.479629}, {-0.427617, -0.891696}, {0.262743, 0.496652}, {0.399848, 0.055136}, {0.389352, -0.140837}, {-0.874961, -0.286650}, {-1.148781, 0.964809}, {-0.075158, -1.058411}, {-1.356972, 0.477178}, {-0.583056, 0.785091}, {0.180521, 0.643195}, {-0.341790, 0.582116}, {0.617637, -0.386019}, {0.287523, -0.641069}, {0.445544, -1.046088}, {0.056885, 0.909019}, {0.237974, -0.577966}, {0.265120, 0.170968}, {0.831315, 0.261175}, {-0.053478, 0.750541}, {-0.910915, 0.305149}, {0.740491, 0.199702}, {-0.644430, 0.804073}, {-0.032674, 0.043810}, {0.506929, 0.722204}, {-1.458642, -0.012285}, {1.125423, -0.870600}, {-0.413975, -1.013859}, {0.263494, -0.250882}, {-0.509992, 0.642512}, {0.309917, 0.102069}, {0.432682, -0.594946}, {0.389074, -0.347972}, {0.363322, 0.447382}, {0.409466, 0.684147}, {-0.383569, 1.103528}, {0.400605, 1.027698}, {-0.244181, -1.174979}, {-0.138094, -0.035489}, {-0.732504, -1.119719}, {0.401623, -0.226204}, {-0.009444, -0.493273}, {-0.623539, 0.052497}, {-0.082322, 0.624134}, {-0.241276, 0.692779}, {-0.855399, -0.954111}, {-0.102812, 0.455049}, {-0.163148, -0.813131}, {0.632547, -0.140929}, {0.494530, -0.185368}, {-0.193079, -0.723176}, {0.337338, -0.445788}, {0.401790, 0.559695}, {0.230591, -0.192288}, {-0.300693, -0.121974}, {1.384646, -0.585677}, {0.325791, -0.040454}, {-0.012575, 0.226125}, {-1.008117, -1.345584}, {-0.253066, -0.722583}, {0.510556, -1.634320}, {-0.620574, 0.638105}, {0.744498, -0.848184}, {-0.604678, 0.294828}, {0.576435, -0.241527}, {-0.209046, 1.633283}, {-0.037161, -0.383274}, {-0.522555, -0.336960}, {0.454551, 0.473618}, {-0.155145, -0.383863}, {0.691671, 0.364433}, {0.110858, -0.308247}, {0.291931, -0.200529}, {-0.257731, -0.294773}, {-0.297832, -0.078972}, {-1.000551, -0.056650}, {-0.728054, 1.617977}, {0.683715, -0.328680}, {-0.000525, 0.011541}, {0.620598, -0.661930}, {0.264711, -0.928142}, {0.228987, -0.335306}, {-0.244599, -0.068855}, {-0.836542, -0.817358}, {0.092673, 0.460987}, {-1.129502, -0.114615}, {-0.632434, 0.515582}, {0.031820, 0.686984}, {0.770886, -0.492505}, {-0.596480, 1.289307}, {-0.101952, -0.691478}, {-0.104274, -0.131200}, {-0.625558, -1.086399}, {0.877969, -0.772245}, {0.268059, -0.223637}, {-0.900697, 1.204608}, {0.050722, 0.907601}, {0.673273, 0.381280}, {-2.047377, -0.460464}, {-0.180485, 0.585813}, {0.917693, -0.593887}, {-0.800537, 0.647290}, {-0.440595, 0.183335}, {-0.713969, -0.073229}, {-0.774967, -0.149180}, {0.404131, 0.588253}, {-0.461998, -0.696968}, {0.274178, -0.357117}, {0.206730, 0.108627}, {-1.064527, -0.450529}, {0.868135, -0.511465}, {1.861500, -0.019361}, {-0.168042, 0.157278}, {-0.306666, -0.372632}, {-0.358648, 0.439013}, {-0.508541, 0.110548}, {0.429907, 0.318529}, {0.768140, 0.536835}, {-0.468226, -0.061801}, {-0.479689, -0.447397}, {1.419374, -0.900772}, {1.265393, -0.725799}, {-1.446047, 0.967326}, {-1.003305, -0.450572}, {-0.765069, -0.367291}, {0.058085, 0.520892}, {0.507400, 0.307971}, {-0.096135, 0.082836}, {0.499087, -0.483651}, {0.786245, -0.896910}, {-0.776823, -0.917120}, {0.046113, -0.674221}, {0.437166, -0.946565}, {-0.481481, 0.348660}, {-0.303571, -1.297511}, {0.184266, -0.433271}, {0.351287, 0.490834}, {0.136868, 0.207400}, {-0.928643, -0.705652}, {0.411477, -0.296834}, {-0.130098, 0.423371}, {0.256138, 0.201198}, {1.325804, -1.394897}, {-0.987536, 0.911194}, {0.467954, 0.721556}, {-1.111917, -0.388390}, {-0.225829, -0.194731}, {0.686892, 0.002306}, {0.017090, -0.337756}, {0.320620, 0.701407}, {-0.126604, -0.448189}, {-1.038320, 0.350680}, {0.525033, -0.775856}, {1.423413, -0.907011}, {-0.654169, 1.310124}, {-0.256723, -1.274182}, {-0.148799, 1.158405}, {-1.309938, -0.423753}, {-0.822022, 0.520373}, {-0.487639, -0.029609}, {-1.731135, 1.225201}, {0.860007, 0.817290}, {1.085528, -0.477385}, {0.170410, 0.225994}, {0.130012, 0.501964}, {1.362920, -1.040532}, {0.274595, -0.360680}, {-0.180443, -1.150807}, {-1.010892, -2.785690}, {-0.185408, 0.645141}, {0.408186, 0.598987}, {-0.276912, -0.233762}, {-0.554369, 0.384061}, {-0.313129, -1.273413}, {-0.295076, -0.206805}, {-1.135422, 0.314641}, {-0.091967, 1.316718}, {-1.148036, 0.420483}, {0.464056, 0.070829}, {0.643956, -1.132460}, {0.007388, -0.087534}, {-0.670980, -0.644856}, {-0.562657, 0.103308}, {-0.910544, -0.624181}, {-1.294871, -0.704342}, {0.253288, -1.249465}, {0.010697, -0.206204}, {0.032296, -0.068846}, {0.227298, 0.289679}, {-1.018986, 0.376146}, {0.196228, 0.336658}, {0.324491, 0.481509}, {1.401432, -1.385349}, {0.469776, -0.021242}, {-0.359218, 0.077900}, {0.263855, -0.553276}, {-1.338136, 1.760596}, {0.345680, -0.356526}, {0.967508, -0.348957}, {-0.000197, -0.317256}, {0.266182, 0.209979}, {0.645966, -0.065156}, {0.095471, 0.687960}, {-0.950904, 0.472007}, {0.237504, 1.029535}, {-1.188493, 0.582823}, {0.037901, 0.276498}, {1.500981, 0.033858}, {0.470859, 0.204791}, {-0.325697, -0.511828}, {-0.701164, -0.624759}, {-1.022831, 0.029449}, {-0.617654, -0.209681}, {-1.086358, -0.753587}, {-0.620495, 0.350436}, {0.255824, 0.780289}, {0.259997, 0.853987}, {0.178984, 0.708660}, {0.206355, 0.342937}, {-0.203803, 0.123989}, {0.087570, -0.018768}, {-0.251778, 0.402282}, {-0.067944, 0.802752}, {0.814430, -1.075422}, {0.980073, 0.924960}, {-0.643462, 0.281085}, {-0.043385, 0.222169}, {0.150379, -0.073680}, {-0.866595, -0.370094}, {0.070700, -0.031495}, {-0.718160, -0.057721}, {-1.453375, 0.891355}, {0.289324, 0.775060}, {0.181655, 0.483275}, {-0.752997, -0.073676}, {-0.304538, -1.541777}, {-0.709192, 0.581410}, {0.492839, -0.517246}, {0.183811, -0.156000}, {0.653373, 0.230724}, {0.406458, 0.005703}, {-0.311049, 0.812297}, {-0.520574, 0.204449}, {0.054290, -0.724717}, {0.094583, -0.073227}, {0.038531, 1.556567}, {-0.384123, -0.654494}, {0.561946, -0.464299}, {-0.404523, -0.766166}, {-0.481575, 0.460856}, {-1.907571, -0.823209}, {2.101905, 0.161585}, {0.287454, -0.132443}, {1.242270, 0.686925}, {-0.921165, -0.565261}, {0.611637, 0.513699}, {0.049954, -1.129081}, {-0.501940, 0.054891}, {1.429713, -0.551187}, {-0.836163, -0.446508}, {0.278495, 0.087073}, {0.218168, -0.779450}, {-0.223319, -0.407988}, {0.634553, -0.616996}, {1.182395, 0.959111}, {-0.978832, 0.211972}, {0.424967, -0.249287}, {-0.041136, -0.865872}, {0.678616, 0.138109}, {-0.183760, 0.626009}, {0.774335, 0.071065}, {-0.711756, 0.994632}, {-1.071178, -0.459611}, {-0.483535, 0.070145}, {-1.195615, 0.843780}, {-0.466068, -0.769168}, {-0.277629, -1.090422}, {0.421671, -0.180614}, {0.412349, 0.215483}, {0.770770, -1.211197}, {0.216869, -1.257316}, {1.131962, 1.071910}, {0.604317, 1.569760}, {-0.432696, -0.511691}, {1.490919, 0.544307}, {0.722433, -0.223854}, {-0.747281, 0.587934}, {0.591043, -0.389259}, {0.915617, 0.907123}, {-0.090304, 0.260222}, {-0.286085, 0.181432}, {-1.366335, 0.134996}, {1.006915, -0.256088}, {-0.742269, -0.287000}, {-0.560519, 0.149843}, {0.228870, -0.089042}, {0.485062, 1.555019}, {-2.098179, -1.037507}, {0.281221, 0.160181}, {1.124136, 0.576409}, {0.377565, 0.179290}, {-0.774858, -0.594426}, {0.057609, 0.773926}, {-0.352908, 0.659389}, {-0.214422, -0.486733}, {1.185269, -0.773319}, {2.361595, 0.580060}, {-0.480781, 0.323322}, {-0.280537, 0.592566}, {-0.518135, 1.090907}, {0.038454, -0.673850}, {-0.396300, 0.291648}, {0.431237, -0.742958}, {-0.354511, -0.258468}, {0.589504, -0.340787}, {0.350439, 0.872189}, {0.434521, 0.321774}, {-0.033107, 0.105060}, {0.708078, -0.753049}, {0.529888, -0.271240}, {0.536421, -1.059462}, {-0.225809, -0.688310}, {1.434065, 0.509015}, {-0.173576, 0.479379}, {-1.128043, -1.200555}, {-0.400962, 0.006900}, {-0.193926, 0.797977}, {0.890121, -0.520395}, {0.483454, -0.759030}, {0.120016, 0.881875}, {-0.600343, -0.651720}, {-1.451600, -1.029965}, {0.761142, 0.319997}, {-0.112053, -1.155185}, {1.220439, 1.751782}, {1.160185, 0.688299}, {-0.512242, -0.051162}, {-0.706967, -0.136270}, {0.615304, 1.293581}, {-1.400761, 0.916505}, {1.187036, 0.351908}, {0.080335, -1.965701}, {-1.630052, 0.439980}, {-1.391160, 0.129870}, {1.155798, 0.582881}, {-0.065111, -1.099486}, {0.125533, -0.003002}, {-0.164680, 0.102916}, {0.466728, 0.343552}, {0.762902, 0.475304}, {0.744999, -0.654491}, {-1.398257, 0.311517}, {-0.237558, -0.246793}, {0.428761, 0.156024}, {0.570756, 0.535184}, {2.016382, -0.060246}, {-1.088301, 0.681331}, {0.830869, -0.097576}, {0.388942, 1.207765}, {-0.606217, -0.034154}, {-0.231597, -0.930088}, {-1.380885, -0.946200}, {1.243384, -0.076184}, {-0.876585, 1.046718}, {0.966272, 0.210433}, {-0.291174, 0.271509}, {0.211819, 0.974055}, {-0.463701, -0.565772}, {0.487341, -0.602470}, {-1.121183, -0.165544}, {-0.252906, 0.474726}, {-0.402199, 0.851284}, {0.080496, -0.760036}, {0.025413, -1.091766}, {0.547332, -0.330242}, {-0.672557, 0.494495}, {0.954815, -0.310860}, {0.424952, 0.387591}, {-0.206481, -1.215096}, {-0.565978, 0.308471}, {-0.594998, 0.287291}, {0.244841, -1.011218}, {-0.121897, -0.182509}, {0.436936, -0.388815}, {-0.237612, 0.125997}, {0.469551, 0.559430}, {-0.150812, 0.430465}, {-0.309672, -0.159915}, {-0.041266, -0.484249}, {-0.498416, 0.134495}, {-0.216836, -0.600673}, {0.753550, 0.178144}, {-0.829567, 0.580848}, {0.151586, 0.985193}, {-0.030831, 0.835093}, {-1.336242, -0.274785}, {0.877728, 0.795873}, {-1.272274, -0.088021}, {0.329721, 0.397562}, {0.284857, -0.480608}, {0.682917, 0.080741}, {-0.101889, -0.248454}, {-0.682076, 1.494906}, {0.629653, 0.954928}, {-0.543290, 1.090091}, {1.459454, 0.219865}, {0.242040, -0.001250}, {1.335699, -0.279217}, {-0.929197, -0.177255}, {-1.073987, -0.628953}, {-0.603636, 0.406831}, {-0.127502, -0.233138}, {-0.595331, -1.556322}, {-0.003979, -0.372901}, {-0.071019, 0.395963}, {0.367574, -1.213747}, {-0.334848, -0.212891}, {0.545672, 0.431015}, {-0.319922, -1.488089}, {1.622107, -0.160144}, {-0.443496, -0.342474}, {-0.182690, 0.814460}, {0.294580, 0.439232}, {-0.456404, -0.781690}, {-0.239482, 0.065164}, {0.522642, 0.114414}, {0.220545, 0.027521}, {0.928442, -0.357315}, {-0.037976, 0.045284}, {0.271085, -0.280372}, {1.126150, -0.692677}, {0.605778, -0.288038}, {-0.839818, 0.853392}, {-0.017924, -0.218859}, {0.193144, 0.838310}, {0.382364, -0.079117}, {-1.218131, -1.625995}, {0.587757, -0.067836}, {1.112485, -0.821042}, {-1.079681, 1.113467}, {0.739449, 0.903260}, {-0.337197, -0.539171}, {-0.715782, 0.433698}, {-0.681131, -1.078419}, {-0.399622, -0.481035}, {0.985279, 0.921888}, {-0.886267, -0.759144}, {0.477293, -0.151442}, {-0.382453, -0.131280}, {-0.996212, -0.422600}, {0.704734, 0.607694}, {0.134826, 0.350086}, {-0.256879, 0.214261}, {-0.492210, -1.268288}, {0.269138, 1.401154}, {-0.717996, 0.256866}, {0.058280, -0.897792}, {0.335278, -0.190030}, {-0.247184, -0.605186}, {0.020146, 0.328500}, {-1.189915, 0.129145}, {0.215961, 1.303383}, {0.478757, 0.180930}, {-0.299342, -0.948503}, {-1.146943, 0.060521}, {-0.868843, -1.063643}, {0.923269, -0.045103}, {-0.878523, 1.072741}, {0.151682, -0.385870}, {1.248675, 0.859689}, {0.583381, -0.622081}, {-0.427717, -0.653473}, {0.114755, 1.122795}, {0.715533, -1.419478}, {-0.653173, -0.975489}, {0.388866, -0.494883}, {0.991641, -1.615541}, {1.623819, -0.756583}, {-0.477507, -0.049437}, {-0.921536, -0.203534}, {0.524950, -1.209924}, {0.015214, 0.484588}, {-0.744276, -0.907266}, {-0.256785, 0.726990}, {-0.989783, 0.236785}, {-0.927026, 0.190489}, {-1.224202, 0.044595}, {0.695077, -0.066990}, {0.118911, 0.317058}, {0.216068, 0.148307}, {0.147362, 0.344791}, {-0.335603, 0.447019}, {-1.224890, -0.325840}, {0.002756, -0.321191}, {-0.160248, 1.419446}, {1.272372, -0.411115}, {0.090553, -0.020891}, {-0.813158, 0.552475}, {-1.298817, 0.862553}, {-0.585694, 1.251896}, {-0.013283, -0.413138}, {-0.297463, -0.903216}, {-0.255549, 1.091331}, {-0.206760, 0.800369}, {-0.390704, 0.606333}, {0.513017, -1.429631}, {0.433862, 2.005801}, {-0.383853, -0.598873}, {1.005859, 0.614970}, {0.851717, 0.475903}, {0.326298, 0.574711}, {-0.558315, 0.661107}, {0.524201, 0.697230}, {0.354126, -1.373313}, {-0.935029, 0.948730}, {-0.134743, 0.135532}, {0.276808, 1.185467}, {0.018978, 0.217541}, {-0.112404, 1.728553}, {-1.302444, 0.146517}, {0.311354, -0.511768}, {-0.162418, 1.170043}, {1.221405, -0.185509}, {0.187501, -0.388756}, {-0.992425, 0.895706}, {0.010906, -0.436499}, {-1.151269, -0.978387}, {0.331651, 2.365055}, {-0.261792, -0.105662}, {-0.015082, -1.027851}, {-0.566662, -0.066912}, {0.333652, 0.030599}, {-0.580868, 1.197625}, {-0.698983, -0.072313}, {-0.336455, 0.586318}, {-0.460653, -1.130129}, {1.129557, -0.342097}, {0.675431, -0.111390}, {0.656948, -1.198251}, {0.124118, 0.471617}, {0.873740, -0.661021}, {0.883188, -0.120431}, {-0.231922, 0.823063}, {-0.037173, 0.803393}, {0.249852, -0.697130}, {-0.608230, 0.681932}, {-0.243067, -0.598592}, {1.280129, 0.144530}, {0.335054, -0.507225}, {-0.148178, 0.471538}, {-1.320556, 0.648198}, {0.793534, 0.184092}, {0.175364, 0.260736}, {-0.345658, -1.638374}, {-0.954853, 0.361345}, {-0.439794, -0.209984}, {-0.580261, -0.437008}, {-0.042380, -1.008410}, {-0.256240, 0.240739}, {0.997668, 0.041341}, {0.084286, 1.337007}, {-0.089726, 0.349824}, {-0.351226, -0.439389}, {0.789935, -0.231385}, {0.559332, 0.372916}, {0.431332, -0.309163}, {0.438769, 0.729816}, {-0.709308, -0.453381}, {-0.806887, 0.031475}, {-0.109243, 0.296421}, {1.053895, -0.808360}, {1.310377, -0.018203}, {-0.088228, 0.464224}, {0.404860, 1.091152}, {0.980650, -0.822832}, {-0.182331, 0.154915}, {-0.416259, 0.293648}, {-1.202575, 0.608544}, {-0.939778, 0.311341}, {0.362085, -0.732201}, {0.318978, -0.637671}, {-0.485214, 0.461226}, {-0.302925, -0.728450}, {0.411979, -0.138660}, {-0.429297, -0.510534}, {-1.260831, -0.795375}, {0.852526, -0.602336}, {-0.795936, 0.503556}, {-1.379397, -0.490658}, {0.325956, -1.584800}, {-0.223558, 0.569081}, {0.081155, 0.347926}, {-0.295295, 0.593889}, {1.147863, 0.678079}, {0.666420, 0.268891}, {0.335919, -0.387414}, {1.884109, -0.565796}, {-1.155022, -0.181474}, {-0.083694, 0.434470}, {-0.431032, -0.709799}, {0.867853, -0.661146}, {1.308108, -0.705654}, {0.441709, 0.237870}, {0.906238, 0.160666}, {0.263269, -0.911975}, {1.316673, 0.073375}, {0.495316, 0.359938}, {-0.137338, -0.098128}, {1.551014, -0.986343}, {0.852076, -0.721691}, {0.453226, 0.292144}, {1.095678, -0.511793}, {-0.038954, 1.062364}, {0.808936, -0.562206}, {-0.290931, -0.645168}, {0.256794, 0.145837}, {-0.849594, 0.501363}, {0.383039, -0.725827}, {0.191017, 0.987863}, {-0.260132, 0.407206}, {0.386396, -1.059209}, {-0.377412, -0.745123}, {-0.291906, -0.531367}, {-0.405497, 0.709018}, {0.620085, 0.652872}, {-0.848280, -0.510761}, {0.284859, 0.615713}, {0.348772, -0.207622}, {-0.055816, 1.039482}, {0.334478, 0.209594}, {1.605196, -0.420670}, {-0.605169, -0.084273}, {0.630320, 0.781429}, {0.014900, -0.362734}, {0.894942, -0.727579}, {0.067741, 0.754466}, {0.949988, -0.066743}, {-0.253311, -0.959373}, {-0.348181, 0.499553}, {0.059039, -0.130159}, {-0.127018, -0.015114}, {0.113024, -0.379652}, {-0.474835, -0.334921}, {0.787752, 1.233290}, {0.730310, -0.362158}, {-0.043029, 0.764059}, {0.702234, 0.977776}, {-0.707870, 0.675695}, {-0.746668, -0.056283}, {-1.427597, 0.548321}, {-0.889836, -0.322518}, {0.559716, -0.205609}, {0.866683, -0.427771}, {0.190978, -0.991563}, {-0.904855, 0.124091}, {0.050012, -0.833915}, {-0.237735, 0.753702}, {1.054057, -0.159998}, {-1.311705, -0.141423}, {-0.167340, -0.857237}, {0.299898, -2.073567}, {1.438581, 0.978587}, {-0.643269, -0.584753}, {0.133317, 0.494257}, {-0.649429, 0.374599}, {0.275902, -1.538577}, {1.198951, -0.760458}, {-1.385012, -0.069386}, {-1.281703, -0.058265}, {-0.555278, -0.011261}, {-2.004580, -0.558871}, {0.177745, -0.102492}, {0.172073, -0.727798}, {0.435496, -0.446889}, {0.636023, -1.534272}, {0.316862, 0.134926}, {-0.152594, -0.252641}, {1.716484, -0.760875}, {0.577497, 1.141460}, {0.259169, 0.340464}, {0.148970, -0.160064}, {1.170360, 0.759366}, {-0.411688, 0.120789}, {0.282131, -0.723614}, {-0.570560, -0.471775}, {0.394987, 0.179098}, {0.078922, -1.605195}, {1.222166, 0.705268}, {0.112494, 0.182192}, {-0.419529, -0.187154}, {-1.690670, -0.646314}, {-1.058211, 0.228100}, {0.214788, 0.185218}, {0.288251, 0.244880}, {-1.430080, -1.445750}, {0.247476, -0.302103}, {0.265110, -0.804134}, {1.164424, 1.113711}, {0.311110, -1.210742}, {0.796506, 0.428281}, {-0.316142, -0.291436}, {-0.440177, -0.503075}, {0.097647, -0.178009}, {0.663421, 0.217058}, {0.665703, -0.958534}, {0.310222, 0.430380}, {1.264676, 0.514635}, {0.652022, -0.675808}, {0.546673, -0.732842}, {-1.412238, 0.029713}, {1.812263, -0.439160}, {-0.059908, -0.137715}, {0.717444, -0.127056}, {-0.231742, 0.293963}, {0.953017, 0.337998}, {-0.259151, 0.250980}, {0.052105, -0.381903}, {0.152729, -1.519173}, {-0.591415, -0.657243}, {-0.150356, 0.561554}, {0.049513, -0.328535}, {0.980559, -0.235285}, {1.255975, -0.268207}, {0.054851, 0.313362}, {1.065817, 0.798603}, {0.333122, 0.943230}, {0.173731, 1.244529}, {-0.137778, 1.175759}, {-0.572404, -0.089366}, {-1.084071, 0.201398}, {-0.302239, -0.089035}, {-2.102849, 0.327512}, {-0.071969, 0.048153}, {-0.987305, 0.609359}, {0.045616, -0.070737}, {0.255401, -0.350403}, {-0.325866, -0.684457}, {-0.949723, -0.234736}, {0.084110, -0.655785}, {0.250549, 1.066458}, {0.025403, -0.832694}, {-0.995800, 0.738287}, {0.298398, 1.547136}, {-1.442081, 0.084168}, {0.067213, -0.221365}, {0.242559, 0.174805}, {-0.326723, -0.622174}, {0.223836, -0.637175}, {0.811831, -0.299335}, {0.773214, 0.551379}, {0.392211, -0.445570}, {-0.284968, -0.265439}, {-0.881859, 1.508451}, {-0.347475, -0.325761}, {-0.616885, -0.769191}, {0.576795, -0.557282}, {0.047390, 0.337606}, {-0.097859, 1.780184}, {-0.429312, 1.112392}, {-0.524623, 0.219636}, {0.405006, -0.298594}, {0.382213, -1.012895}, {-0.976113, -0.643431}, {-0.135279, 0.069899}, {-0.077138, 0.056443}, {-0.622842, -0.648767}, {-0.142333, -0.385734}, {0.939501, 1.168477}, {-0.090723, -0.021190}, {0.941865, -1.007430}, {-0.986187, 0.958079}, {0.375743, 0.363480}, {-0.381949, -0.320752}, {1.268664, -0.616885}, {0.136944, 0.263353}, {-2.053794, 0.961262}, {-0.684081, -1.224868}, {0.599383, 0.140131}, {-0.032657, 0.782458}, {0.385562, -0.313714}, {0.404669, 0.093627}, {1.091659, 0.677779}, {-0.253105, -0.859333}, {-0.324104, 0.386444}, {-1.904799, -0.146740}, {0.373496, 0.440722}, {1.125800, 0.354270}, {-0.276754, -0.390405}, {0.553166, -0.230742}, {0.345504, 1.257560}, {0.326855, 0.709150}, {0.168127, 0.088543}, {0.349772, -0.368904}, {-0.285477, -0.469480}, {0.523761, -0.504454}, {0.904464, -0.016717}, {0.081565, -0.511504}, {0.885394, 0.427703}, {-0.042153, 0.607306}, {-0.240457, -0.369428}, {-0.476362, 0.849541}, {0.090063, -0.979648}, {0.986172, -1.489947}, {-1.101995, 0.630631}, {-0.700222, -0.297787}, {-0.105735, -0.061019}, {0.274621, 0.286836}, {0.956524, -0.005156}, {1.141911, 0.489715}, {0.155700, 0.477954}, {0.161408, -0.280752}, {0.208306, -0.382345}, {-0.319743, -0.654164}, {1.015004, -0.453518}, {0.798286, 0.047264}, {-0.339036, 1.191907}, {-0.508641, 0.191641}, {-0.312756, 0.231250}, {1.006892, 0.770095}, {0.392099, -0.187454}, {0.827204, -1.196456}, {-0.071158, 0.489808}, {-0.111609, -0.123514}, {-0.392260, 1.137272}, {-0.418037, -0.312706}, {-0.890258, -0.638300}, {0.922980, 1.538843}, {-0.076405, -0.034489}, {-0.056280, 0.132953}, {0.470452, -0.751306}, {-0.507513, -0.546397}, {-1.195554, 0.917548}, {0.119745, -1.039416}, {0.641056, 0.873863}, {-1.881030, 0.230334}, {-0.472662, -0.485251}, {-0.731312, -0.241578}, {1.386169, -0.814696}, {0.439633, 0.192069}, {0.060629, -0.471375}, {-0.908071, 0.528836}, {0.831151, 0.885574}, {-1.203440, -0.299895}, {0.129863, 0.106531}, {0.936271, 0.756381}, {0.084020, -0.140794}, {0.018339, -0.191766}, {0.476259, 1.311259}, {0.250059, -1.190703}, {-0.203745, 0.761848}, {-0.825526, -0.180980}, {0.812343, 0.263797}, {-0.153643, 0.325493}, {-0.823435, -0.089900}, {-0.936715, -0.947103}, {0.504302, 0.273732}, {-0.136153, 0.040614}, {-0.228844, 0.063628}, {0.961477, -0.801511}, {0.144958, 0.157167}, {-0.275340, 0.067845}, {0.982365, 0.655564}, {-0.101251, 0.364215}, {-0.518940, 0.008418}, {1.146963, 0.276110}, {-0.685455, 0.477746}, {-0.867617, 0.334274}, {-0.216229, -1.075130}, {0.222334, 0.883621}, {0.561563, -0.562039}, {0.122965, -1.491563}, {0.905398, 0.202764}, {0.237011, 0.541816}, {0.995545, -0.305894}, {0.621302, -0.394520}, {0.118272, -0.759820}, {0.217348, -1.054868}, {0.146891, 0.018121}, {-1.551826, -0.096002}, {0.015579, -0.036639}, {1.011278, -1.192439}, {-0.071961, 0.011541}, {-0.953020, -0.444260}, {-0.367500, 1.228606}, {1.526161, 0.151876}, {1.107404, 0.159669}, {0.491996, -0.158496}, {-0.098865, 0.292759}, {-0.430131, -1.325361}, {1.032900, 0.131424}, {0.238858, -0.653212}, {1.227567, -0.970755}, {-1.135533, 0.454609}, {-0.498524, -0.586837}, {-0.249832, 0.164953}, {0.788240, 0.689636}, {-1.805305, 0.688304}, {-0.568470, -0.213126}, {-1.008743, 0.494092}, {-0.068211, -0.558996}, {1.019529, -1.524452}, {-1.555353, 0.038906}, {-1.517993, 0.035634}, {-0.183605, 1.086476}, {-0.901828, 1.815693}, {-0.376961, 0.539305}, {0.384843, 0.052507}, {-0.147705, -1.045677}, {0.880142, -0.997078}, {-0.854662, 0.272260}, {0.283422, 1.151546}, {-1.105150, 0.930541}, {0.044104, 0.397594}, {-0.104013, -0.673208}, {-0.211616, -0.621975}, {0.027161, 0.371316}, {0.600274, -0.606245}, {0.806180, 0.471603}, {-1.008090, 0.778175}, {-0.289146, -0.809723}, {-0.038659, -0.429242}, {-1.334523, -0.137992}, {-1.995175, 0.137457}, {0.021312, -0.091064}, {-1.281258, -0.684793}, {-0.413871, -0.292442}, {0.381687, 0.818085}, {0.295284, 0.101209}, {0.665034, 0.592564}, {0.037124, 0.035242}, {0.132064, -0.657651}, {1.053341, 0.819935}, {1.210807, 0.675951}, {0.457895, -1.075189}, {0.358357, 0.147282}, {-0.499271, 0.175458}, {0.854323, 0.068143}, {1.991820, 0.805889}, {1.826429, -0.005057}, {-0.467242, 0.138414}, {-0.366227, -1.697539}, {0.485183, -0.821876}, {0.536318, 0.341220}, {-0.441596, 0.831566}, {-0.134826, 0.751288}, {0.358869, 1.095253}, {-0.386092, 0.078119}, {-0.397661, -0.118587}, {-0.419914, -1.100465}, {0.280444, 0.389289}, {-0.832278, 0.269468}, {0.472347, 0.132484}, {0.088928, -0.278739}, {0.361290, -0.444613}, {-0.320039, -0.519034}, {1.354470, 0.178576}, {-0.168088, -0.359028}, {-1.317068, -0.040397}, {-0.157570, 0.775248}, {0.150971, -0.256518}, {0.921575, 0.744693}, {-0.137337, -0.764665}, {-0.917358, -0.458914}, {-0.705772, -0.263352}, {-0.510704, -1.187616}, {0.796905, 0.825262}, {-0.050399, 0.512465}, {0.768824, -0.159475}, {-0.687249, 0.364975}, {-0.430008, -0.471340}, {-0.202663, -0.386981}, {-0.518536, 0.608685}, {0.525161, 0.135142}, {-0.372337, -0.486685}, {0.717387, -1.392395}, {0.854322, 0.356855}, {-1.102180, -0.156184}, {-0.209081, -0.377676}, {-0.967928, -0.798301}, {0.111753, 0.232228}, {0.314745, 0.446778}, {-0.989801, 0.082857}, {-0.298760, 0.326928}, {-0.204933, 0.197721}, {1.048764, -0.114128}, {-0.304972, 0.032725}, {0.104894, 0.290204}, {-0.045314, 0.859009}, {-0.718912, 1.194088}, {-0.242557, 0.422101}, {-0.859795, 0.575768}, {0.311124, -0.177388}, {-1.427806, 0.214970}, {-0.645104, 0.500403}, {-0.219194, -0.984099}, {0.788104, -0.907460}, {0.513765, 0.453685}, {0.335412, -0.418488}, {-1.097887, 0.150175}, {-0.979087, 0.198912}, {0.305300, -1.140391}, {0.077787, 0.856586}, {0.214734, -0.592854}, {-1.113305, 0.320877}, {-0.669169, 0.448671}, {0.253991, 0.932563}, {-0.455481, 0.185849}, {0.762277, -0.010084}, {-0.477479, 0.184388}, {0.960667, 0.390639}, {-0.720191, 0.037977}, {-1.316302, 1.152700}, {0.398760, 0.257566}, {-0.401636, -0.419254}, {-1.914376, 1.449176}, {-0.339228, 0.296751}, {0.207467, 0.305288}, {-1.731574, -0.030498}, {-0.240750, -0.617304}, {-0.237212, 0.715578}, {-0.416285, -1.008641}, {0.634027, 1.717009}, {0.384123, -0.449106}, {-1.160894, -1.767794}, {0.618354, -0.261380}, {-1.569626, -0.364495}, {0.631915, -0.543410}, {0.282734, -0.370501}, {-0.977373, -0.433726}, {1.432343, -0.462557}, {-0.972547, 0.004444}, {0.784231, -0.243932}, {-0.376546, -0.584034}, {1.001247, -0.164126}, {0.554715, -0.308636}, {0.540227, 0.426550}, {-1.066853, -0.294694}, {-0.504114, 0.275915}, {-0.949985, 0.630675}, {0.506317, -0.294027}, {0.133689, 0.989125}, {0.105266, 0.527915}, {0.072913, 0.211680}, {0.381472, 0.837872}, {-0.183162, 0.180758}, {0.458198, -0.961007}, {-0.004799, 0.996245}, {-1.561414, -0.676542}, {-1.427195, 0.800941}, {0.173579, 0.155504}, {-0.830370, 0.498583}, {-0.232669, 0.505982}, {-0.096304, -0.750719}, {1.906512, -1.461034}, {-0.395663, -1.409489}, {-0.705341, -0.497179}, {-0.163104, -0.442154}, {0.853744, -0.265722}, {-0.361874, 0.151299}, {0.107204, -0.414142}, {-0.106144, 0.419209}, {-1.286889, -0.802826}, {-0.144332, 0.370855}, {0.474858, 0.913496}, {-0.867293, 0.301363}, {-0.545302, 0.146680}, {0.001880, 0.805475}, {1.320236, 0.643083}, {-1.141064, 1.684144}, {-0.128674, 0.678582}, {-0.343416, 0.309854}, {0.019772, 1.077821}, {-0.239235, -0.119506}, {-0.373356, -0.583563}, {0.403890, -0.534354}, {-0.519976, 0.020956}, {0.712048, 0.988539}, {-0.861664, -0.493059}, {0.093158, -0.833793}, {1.052626, 0.468904}, {0.091221, 0.456901}, {-0.584013, -0.961460}, {1.685019, 0.470576}, {-0.180148, -0.785828}, {-0.210638, -0.498937}, {0.934431, 1.304392}, {0.066268, -0.504962}, {0.151449, -0.194295}, {0.247991, 0.136973}, {-0.126328, -0.633755}, {-0.857218, 1.918319}, {0.354034, 0.566611}, {-0.323836, -0.588707}, {-0.093776, -0.592204}, {-0.027068, -0.042178}, {0.002969, 0.636477}, {-0.480469, -0.201484}, {-1.191052, 0.906057}, {0.598655, -0.164748}, {-0.044789, -1.118828}, {-0.541816, -0.070911}, {0.074609, 1.345165}, {-0.032322, -0.231974}, {-0.449760, 1.661760}, {0.707548, 0.034345}, {-0.907888, -0.004174}, {0.152966, 0.440522}, {0.046909, 0.346149}, {-0.281537, -1.219698}, {-0.895213, 1.513594}, {-0.881255, 0.124261}, {-1.081693, -0.436486}, {-0.106278, 0.626797}, {0.754899, 0.295278}, {-0.227234, 0.474572}, {-0.763770, -0.042921}, {-1.002643, 0.429052}, {0.478156, -0.815031}, {-0.733688, -0.279437}, {-0.362104, 0.064655}, {-0.114674, 0.196627}, {0.044324, -1.013509}, {-0.452231, -1.026683}, {-0.928972, 0.240171}, {0.531384, -0.041877}, {0.360475, 2.263092}, {-0.002502, 0.278693}, {-1.068170, -0.652698}, {-0.133973, 0.404417}, {0.112787, 0.817903}, {0.093469, 0.514351}, {0.173190, 0.030494}, {-0.386117, -0.119304}, {-0.150011, 1.098977}, {-0.718702, 1.061190}, {-0.187865, 0.769379}, {-0.673330, -0.520017}, {-0.782271, 0.749117}, {1.040643, -0.447207}, {-0.686538, -1.825913}, {0.706101, -1.401344}, {-0.031939, -0.069587}, {1.026212, -0.730925}, {0.311104, 0.591601}, {0.589268, -0.406947}, {-0.305040, 0.233919}, {-0.658906, -0.074957}, {-0.172826, 0.539225}, {1.621683, 0.577736}, {1.074205, 0.776840}, {-1.131216, -0.504166}, {-0.664862, -0.542385}, {-0.245912, 0.040006}, {1.012363, -0.520893}, {-1.044423, -0.968495}, {0.057525, -0.137602}, {0.031642, -0.360814}, {0.302685, 0.776735}, {-0.590976, 0.666512}, {-0.153819, -0.015702}, {0.050475, 1.733477}, {0.474972, 0.052117}, {0.185655, -0.901557}, {0.383428, 0.150210}, {0.254788, 0.679409}, {-0.224796, 0.681574}, {-0.256749, -1.077031}, {0.134707, -0.760133}, {1.014226, -1.619607}, {-0.766887, -0.104736}, {0.761824, -0.642466}, {0.640060, 0.025030}, {0.717916, 0.808046}, {0.158375, -0.609786}, {0.599932, 0.529572}, {0.920422, -1.417508}, {0.247593, -0.365323}, {0.143007, 0.147123}, {-0.698949, -0.661064}, {0.099640, 0.528546}, {0.387466, 1.303945}, {0.721636, -0.563915}, {-0.056200, -0.095831}, {0.127167, 0.466936}, {0.614167, -0.250185}, {0.324173, -0.104513}, {0.564475, -0.584259}, {0.000883, -0.715214}, {0.175617, -0.853427}, {-0.655242, 0.141206}, {-0.799496, -0.397656}, {0.509296, -0.078758}, {0.824815, -0.397955}, {0.165592, -0.838807}, {-1.406393, -0.034832}, {-0.140087, -0.245922}, {-0.039954, -0.580654}, {0.592499, 0.257650}, {0.865662, -0.321183}, {-0.348095, 0.633829}, {-0.222209, 0.346638}, {0.077141, -0.429164}, {-0.612928, 0.649756}, {-0.218828, -0.978959}, {-0.467017, 0.873553}, {1.012268, -0.236361}, {0.935993, -0.768227}, {-0.637278, 0.397934}, {-0.171380, 0.726429}, {-0.200094, 1.039778}, {-0.395740, -0.290233}, {-0.251927, 0.547605}, {-0.317331, 2.066899}, {0.874234, -0.172457}, {-0.112367, 0.968130}, {-0.608874, -0.281634}, {0.458084, 0.134327}, {-0.327929, -0.153658}, {-0.809721, -1.217724}, {0.108791, 0.635246}, {-0.127071, 0.688169}, {-0.681222, 0.292983}, {-0.447850, -0.098757}, {-0.059162, 0.033865}, {-1.459920, -0.167831}, {-0.546872, 1.304584}, {0.567670, -0.764303}, {-0.051371, 0.814561}, {0.018359, 0.085225}, {0.295254, 0.367041}, {0.923804, -0.382126}, {-0.094986, 0.179273}, {0.751972, -1.355834}, {-0.131853, -0.066514}, {0.223027, -0.074406}, {-0.447982, -0.207079}, {-1.165943, -1.747960}, {0.289496, -0.581631}, {0.995888, -0.840471}, {0.287864, -1.173235}, {-0.035233, -0.012186}, {1.404205, -0.502267}, {0.271013, -0.607421}, {0.082209, -0.294491}, {1.108759, 0.397367}, {0.147693, -0.077201}, {0.644694, -1.167422}, {0.439444, -0.480603}, {1.596557, 0.704222}, {0.202072, -1.010761}, {0.472276, -0.171207}, {0.496560, -0.780542}, {1.279076, -0.623514}, {0.182762, -0.393778}, {0.150084, 0.277712}, {0.752527, 0.683646}, {0.480142, 1.172231}, {1.005193, -0.949569}, {0.668218, -0.521006}, {-0.401607, 0.695572}, {0.934451, -1.387263}, {-1.060714, -0.674529}, {0.445290, -0.241091}, {0.757956, 0.271408}, {1.231487, 0.237535}, {-0.486448, 0.433734}, {-1.455954, 1.581795}, {-1.037576, -1.013962}, {-0.251248, -0.324413}, {1.064396, 0.130331}, {-1.209972, -0.399869}, {0.412389, 0.237274}, {-0.971736, 0.139207}, {0.364493, 0.360362}, {0.462466, 0.123618}, {0.015647, 0.662696}, {0.521067, -0.464325}, {-0.691029, -0.419101}, {0.797372, -0.361360}, {-0.711848, -0.337005}, {0.276187, 0.033567}, {0.261731, 0.465815}, {-0.122547, -0.163457}, {0.449124, 0.025562}, {-0.366007, -0.325535}, {0.741756, 0.044402}, {0.795758, -1.009837}, {-0.045791, -1.021170}, {-0.690750, -0.553651}, {-0.885860, 0.289949}, {0.587965, -0.598258}, {0.645572, 0.810630}, {-0.008388, -0.730176}, {0.161907, 0.977525}, {-0.967148, 0.872038}, {0.372738, -0.028752}, {0.255575, 1.354765}, {-0.947345, 0.186383}, {0.938292, 0.931974}, {-0.137511, -1.156500}, {1.535508, 1.226839}, {0.098197, 0.233959}, {1.091029, -0.489096}, {0.919905, 1.862780}, {0.715268, 0.128684}, {0.737863, -0.154854}, {-0.231765, -0.541695}, {-0.512769, -0.574521}, {-0.128448, 0.487393}, {0.352688, 1.345931}, {0.064971, -0.982254}, {-0.726009, 1.313529}, {0.448623, -0.053441}, {1.469537, -0.044362}, {1.011843, 0.352729}, {1.063249, -0.322635}, {-0.131380, 0.533014}, {0.451360, 0.230248}, {0.001995, 0.153600}, {1.646787, 0.881911}, {-1.458759, -0.586824}, {-0.702392, -0.241636}, {-0.074182, -0.072131}, {0.262439, 0.583482}, {-0.476122, 0.082469}, {0.438068, 0.803544}, {-0.207061, 0.660637}, {0.567990, -0.597823}, {-1.688718, -0.103409}, {-0.829192, 0.426556}, {0.827020, 0.826934}, {0.441454, -0.546262}, {-0.304897, -0.022233}, {-0.357555, -0.612953}, {-0.388052, 0.013095}, {0.777314, 0.544567}, {0.437676, 0.305298}, {-0.356608, -0.848358}, {0.791083, -0.271240}, {0.044885, 0.107636}, {0.364655, 0.012973}, {0.538263, -1.124278}, {0.228271, -1.168910}, {0.026633, -0.327359}, {0.464736, -0.077427}, {-0.438151, -0.387916}, {0.384472, 0.255111}, {-0.913587, 0.151118}, {0.215311, 0.261325}, {0.133743, 1.302663}, {0.977288, -1.212393}, {-1.005590, 1.135110}, {-1.031105, -0.046053}, {0.034069, 0.088167}, {-1.874043, 0.314546}, {-0.138676, -0.665746}, {-1.367737, 0.809027}, {-0.617917, 0.576212}, {-0.059977, 0.148805}, {1.021231, -1.734845}, {0.232449, -1.635767}, {-0.402629, 0.093773}, {0.306316, -0.589913}, {0.691035, -0.933528}, {-0.854344, -0.581280}, {-0.550056, -0.087623}, {-0.735359, 0.440600}, {-0.599941, -0.566529}, {-0.157511, 0.329776}, {-0.620057, -0.573574}, {-0.618399, -0.151361}, {0.173969, -0.559218}, {-0.316563, 2.332789}, {-0.512502, -0.263662}, {0.127996, 0.407326}, {0.888734, -0.229112}, {0.431876, -0.881928}, {0.480039, -0.855335}, {0.548737, 0.504779}, {0.039114, -0.355311}, {-0.536205, 1.175569}, {-0.006012, -1.440053}, {-0.366908, -0.714389}, {-0.253160, -0.482878}, {0.071598, -0.022415}, {0.484456, 0.242941}, {0.353405, -0.516339}, {0.269909, 0.018111}, {-0.512141, 0.368190}, {-0.034358, -0.690191}, {0.186251, -0.383563}, {-1.243734, 1.020511}, {-0.310334, -0.639568}, {-0.238013, 1.203421}, {-0.276677, 0.105597}, {0.528988, 0.213357}, {0.351103, 0.004227}, {0.686052, -0.683489}, {0.402253, -0.548756}, {-0.244236, -0.179112}, {0.039858, 0.390838}, {0.985325, 0.842588}, {0.440814, -0.329205}, {0.666419, 0.644613}, {0.548497, -0.000859}, {-0.938426, 1.023278}, {-0.941754, 0.721262}, {0.000099, 1.114577}, {-1.218951, 1.191773}, {-0.607709, 0.205343}, {-0.206425, 0.838011}, {0.699534, -0.002445}, {1.352826, -0.100402}, {0.041916, 0.740550}, {0.416504, -0.341657}, {0.097466, 1.186724}, {0.687240, -0.367369}, {0.545399, -0.035212}, {0.374638, 0.479261}, {0.135228, -0.116509}, {-0.608795, 0.777712}, {0.335622, 0.171713}, {-0.049759, 0.394634}, {0.882455, -0.007277}, {0.074308, 0.777326}, {0.370312, 0.102349}, {0.376820, 0.573884}, {-0.431049, 0.306366}, {1.085490, 0.744110}, {-0.230620, -0.315921}, {0.436716, 0.557135}, {-0.702941, 0.571264}, {0.221250, 0.066672}, {-0.570686, -0.286918}, {-0.560485, -1.471082}, {-0.314618, -0.584589}, {-0.311362, 0.168867}, {1.173793, 0.106905}, {-1.017770, -0.355978}, {-0.228067, -0.524127}, {-0.163044, -1.799027}, {-0.126843, -0.121222}, {-0.360908, -0.655512}, {1.040580, -1.978968}, {-0.769183, 0.705786}, {-0.275717, -0.258945}, {-0.590592, -1.078141}, {-1.062724, 0.958762}, {0.123248, 0.000726}, {-0.630985, -0.643702}, {-0.304755, 0.333120}, {-0.354195, -0.773979}, {-1.222200, -0.340033}, {-0.500831, -0.495272}, {0.395941, 0.305049}, {1.926537, -0.064242}, {0.102387, 0.533556}, {1.094398, 0.165614}, {-1.017921, -1.540784}, {-0.218494, -0.929660}, {-0.535317, 0.186219}, {1.199743, -0.241787}, {0.086699, -0.643872}, {-0.586069, 0.057078}, {0.457002, -0.144936}, {0.938976, 0.355965}, {-0.478159, -0.863239}, {0.123059, 0.137369}, {-0.726764, 0.697758}, {-0.776171, -0.293292}, {0.532566, -0.658669}, {0.490077, -0.101454}, {0.031428, 0.291178}, {-0.667737, 0.741288}, {0.907230, 0.233775}, {0.515349, -0.227823}, {1.010764, -0.015213}, {0.444179, -0.562985}, {-0.276474, 0.657198}, {-0.172263, 0.956311}, {-0.355806, 0.703603}, {-0.506885, -0.799493}, {-0.697335, -0.297622}, {-0.012191, 1.840314}, {-0.847463, 0.284183}, {0.854194, 0.403219}, {1.929827, 0.528325}, {-0.261886, 0.577017}, {-0.031070, -2.348125}, {-0.155820, -0.265157}, {0.512475, 0.208609}, {-1.450445, -0.816839}, {0.564060, 0.610582}, {0.208762, 0.538423}, {-0.394083, -0.217364}, {0.232377, -0.084660}, {0.344522, 0.516178}, {-1.449901, -0.112290}, {0.000158, -0.982079}, {0.787346, 1.416797}, {0.158547, -0.490012}, {-0.765118, 0.416037}, {0.552854, 0.197313}, {-0.560294, 0.168624}, {-0.710216, -0.278700}, {-0.022732, 0.174521}, {-0.831227, 0.475439}, {0.219373, -0.678127}, {-0.002961, -0.573618}, {-0.945813, 0.412736}, {-0.979897, 1.265908}, {-0.311475, 0.379769}, {-0.082964, 0.038846}, {-0.500868, 0.551077}, {-1.116548, -0.382053}, {-0.150512, -0.889516}, {0.003441, -0.441244}, {-0.155477, 0.236868}, {-0.372866, -0.003664}, {0.517363, -0.227696}, {0.348671, -1.184919}, {0.023715, -0.857359}, {-1.165542, 0.373084}, {-0.372004, 0.745161}, {1.486675, 0.482708}, {0.713017, -0.111925}, {0.698459, 0.261537}, {-1.448937, 0.151106}, {-0.936754, 0.023684}, {0.896661, -0.031541}, {0.360038, 0.783076}, {-0.094289, 0.365897}, {1.270895, 0.047391}, {-0.069325, -0.911174}, {0.356797, -0.202779}, {0.966214, -0.501017}, {-1.056213, -0.334850}, {-1.048820, 1.448814}, {-1.559907, 0.438635}, {-0.533985, 0.378701}, {1.577709, -0.730175}, {0.591595, 1.416816}, {-0.192300, -0.219470}, {0.299344, -0.860943}, {0.318677, 0.121607}, {0.335483, 0.070689}, {-0.111371, -1.205420}, {0.395077, 0.205784}, {1.026121, -0.818676}, {-0.968687, 0.857896}, {0.312721, 1.501156}, {-0.482650, 0.352206}, {0.997697, 0.112893}, {0.950446, -0.398203}, {0.097713, -1.070921}, {-0.800673, -0.325717}, {0.671945, -0.861890}, {0.021531, -0.436324}, {0.437880, 1.356432}, {0.457176, -0.276639}, {-0.247776, 0.777048}, {0.251688, 0.079969}, {-1.334482, -1.474248}, {-0.483623, 0.743976}, {0.355137, -0.034433}, {-0.956198, -1.078557}, {0.405169, 1.702393}, {-0.835610, -0.412153}, {0.177645, -0.803742}, {0.190991, -0.126655}, {-0.293197, 0.907349}, {0.208255, 0.226394}, {-0.590120, -0.320991}, {-0.477141, -0.954609}, {0.534067, -0.035251}, {-0.962419, 0.424134}, {0.409965, -0.074026}, {-0.110630, -0.862237}, {0.037791, 0.944337}, {0.944043, -0.704466}, {-0.648236, 0.057918}, {-0.617177, -0.830966}, {0.416183, -0.658194}, {1.180214, 0.519521}, {-0.123865, -0.426364}, {0.019066, 0.317164}, {0.234837, 0.331158}, {-0.656986, 0.335032}, {0.346063, -1.649529}, {0.058210, -0.381788}, {-0.260900, 0.186365}, {0.429371, 0.681698}, {1.939461, -1.181745}, {-0.445243, -0.716289}, {0.131740, 0.865901}, {-0.918136, -0.131137}, {-0.053577, -0.373297}, {-0.531049, 0.031422}, {-1.254709, 0.556524}, {-1.119247, 0.394916}, {-0.498215, -0.035437}, {1.322329, 0.190493}, {-0.701283, -1.164440}, {-0.361131, -0.504716}, {-0.117174, 0.107979}, {0.700073, 1.603625}, {-0.582119, 0.440169}, {1.018868, -0.420729}, {-0.212079, -0.280104}, {1.132422, -0.035123}, {0.026273, 1.886585}, {-0.729453, 0.098911}, {0.805546, 0.750763}, {0.224181, 0.331261}, {0.116170, 0.259857}, {0.100047, 0.046190}, {-0.055174, 0.957446}, {-1.456418, -1.105336}, {0.290339, -0.811412}, {-0.403941, -0.272939}, {1.707646, 0.332927}, {0.858293, 0.006974}, {-0.476534, 0.364698}, {-0.705168, 0.544668}, {-0.667669, 0.289049}, {1.181489, -0.102266}, {-0.363524, -0.507603}, {0.077873, -0.227451}, {-0.070765, 0.236432}, {0.547170, 0.221358}, {-0.084700, -0.954482}, {-0.930200, -1.003973}, {0.641949, 1.189144}, {0.292530, 1.376169}, {0.146329, 0.050514}, {0.504086, 0.327294}, {0.560656, -0.819642}, {-0.782328, 0.555732}, {-0.321355, 0.040423}, {0.575312, 0.676942}, {0.676739, 0.371605}, {-0.739089, 0.154797}, {-0.196959, 0.765774}, {-0.075477, -0.064618}, {-0.708957, -0.695153}, {-0.114007, -0.274311}, {-0.208777, -0.197655}, {-0.330289, 0.090402}, {0.645717, -0.861720}, {0.759627, 1.159973}, {0.736863, 0.016140}, {-0.290055, 1.066642}, {-0.360313, 0.572408}, {0.559798, -0.118348}, {1.099664, 0.913475}, {-1.221145, 0.753011}, {-1.080846, -0.309538}, {0.898748, -1.751489}, {-0.793636, -0.682252}, {0.601441, 0.716634}, {-0.754166, -0.295275}, {-0.057178, -0.531244}, {-0.503737, 0.754428}, {-0.092784, 0.415358}, {-0.428408, 0.867882}, {-0.531645, -0.427532}, {0.015225, 0.360774}, {0.052039, 0.804546}, {0.140220, 0.683936}, {-0.183837, -0.075742}, {0.141611, 0.121116}, {0.863189, -0.304942}, {-0.183500, -1.267097}, {0.721582, 0.324832}, {0.490362, -0.620402}, {0.032723, -0.342147}, {0.015191, 0.299803}, {-0.453198, 0.232907}, {0.890290, -0.037167}, {1.101406, -0.724242}, {-1.147539, -0.245951}, {-1.727078, -1.683502}, {0.261545, -0.107582}, {0.068065, 0.753220}, {0.369570, 0.796556}, {0.143988, 0.884428}, {0.009223, -0.259795}, {-0.207237, 1.912655}, {0.901343, 0.446570}, {1.779646, -0.190026}, {0.060311, -0.035492}, {0.471146, -0.987103}, {-0.678292, -0.087719}, {-0.381341, 0.932014}, {0.423463, -0.374888}, {0.132522, -0.133326}, {0.725087, -0.055467}, {-0.026041, 0.630602}, {0.237645, -0.147676}, {0.384787, 0.046887}, {1.184148, -0.971991}, {0.904135, -1.133769}, {1.047468, -0.174437}, {-0.262063, 1.567163}, {-0.323006, 0.521236}, {0.517606, 0.341770}, {-0.289763, -0.525198}, {1.140138, -0.745015}, {0.748583, 0.650728}, {-0.040966, 0.218449}, {0.340059, 0.915520}, {0.031779, 0.421656}, {-0.394555, -0.262061}, {0.204192, -0.199669}, {-0.222583, 0.416622}, {0.026680, 0.648281}, {0.394312, -0.072898}, {-0.547009, -0.610642}, {-0.323403, -0.781335}, {0.246200, -0.481307}, {1.250227, -0.203189}, {1.335570, 0.028829}, {0.907068, -0.322204}, {-0.241285, 0.672412}, {-0.500388, 1.413200}, {0.348404, 0.053563}, {-0.515993, 1.348158}, {0.419507, 0.843740}, {-1.680552, -0.349667}, {1.125661, 0.162114}, {-2.253658, -1.822658}, {-0.603819, -0.131986}, {-0.688067, -1.520234}, {0.107885, 1.042587}, {0.794351, 0.550783}, {0.107568, 0.622575}, {0.427502, 0.055636}, {-0.386636, -0.648276}, {-0.530590, 0.233918}, {-0.069396, -0.648418}, {0.677155, 1.610371}, {-0.636080, 0.824467}, {1.069180, 0.649464}, {-1.099628, 0.652186}, {1.175325, 0.015894}, {0.519414, -1.197649}, {-0.613790, -0.781378}, {-1.117294, 0.891372}, {0.284313, -0.488536}, {0.142283, 1.641906}, {1.718632, -0.694643}, {-0.611194, -0.432577}, {-0.251579, -0.852987}, {-0.170100, 0.486159}, {0.320121, -0.580628}, {0.872266, -0.384060}, {-0.208309, 0.139307}, {-1.583756, -0.645014}, {-0.702369, -0.541675}, {0.336241, 0.831866}, {-0.865645, 0.436119}, {-0.620241, -0.606092}, {-0.104203, 0.984638}, {-0.410559, -0.040961}, {-0.416490, -0.226391}, {0.088726, -0.220726}, {-1.499559, -0.585178}, {0.293249, 0.186455}, {-1.210379, -0.633716}, {-0.277191, -1.244025}, {1.139804, 0.055639}, {-0.228353, 0.448129}, {0.559068, -0.023119}, {-1.221999, 0.465622}, {1.162107, -0.729434}, {-0.368202, 0.259066}, {-0.285426, 1.295138}, {0.379646, 0.224708}, {0.294352, -0.551327}, {-0.462702, 0.187464}, {-0.026366, -1.131739}, {0.894485, -0.169837}, {1.029962, -0.513169}, {-0.308485, -0.846109}, {0.013267, 0.200561}, {0.442056, 0.037734}, {-1.579953, -0.567456}, {0.313331, 0.287219}, {0.237625, -1.467799}, {-0.343068, 0.471870}, {0.808584, -0.605491}, {-0.384505, 0.285999}, {-0.821182, 1.140405}, {0.083857, 0.569015}, {0.358021, 0.251793}, {-1.050896, 0.222264}, {0.693579, -0.417443}, {0.488468, 0.599156}, {-0.102947, -1.320533}, {0.340396, -0.671734}, {0.618710, -0.219283}, {-0.125032, -0.163230}, {-0.088188, -0.534394}, {0.682064, 1.041136}, {-0.344705, -0.089664}, {-0.529053, 0.255838}, {-0.136569, -0.214062}, {1.455681, 0.491256}, {1.238314, -0.436456}, {0.183785, -0.294781}, {-1.115245, 1.248687}, {-0.649421, -0.614780}, {1.178710, -0.312908}, {0.812326, -0.393600}, {-0.874232, 0.893146}, {-1.043341, -0.195049}, {-1.266037, -0.004749}, {-0.377230, -0.359996}, {-0.196225, 0.796953}, {0.996897, -0.623582}, {-0.556859, -0.864103}, {-1.371972, 0.769551}, {0.056397, -0.658378}, {-0.074004, 0.516830}, {-0.019248, 0.750291}, {0.172892, -0.524600}, {-0.598676, -0.007268}, {0.137861, 1.698237}, {-0.084691, 1.344243}, {0.001925, -0.191394}, {0.240667, -0.596132}, {-0.139205, 1.502034}, {0.716061, -1.415551}, {0.861506, -0.658005}, {0.514495, 0.090184}, {-0.528631, 1.006103}, {-0.388832, -0.792382}, {0.735890, 0.122394}, {-1.547132, 1.015471}, {0.121113, -0.501140}, {0.975384, -1.280454}, {0.079350, 0.996285}, {0.046097, -1.248331}, {-0.978137, -0.857029}, {-0.292484, 0.917538}, {0.476399, -0.533662}, {-0.185424, 0.410061}, {-0.516918, 0.560953}, {-1.108884, 0.242701}, {0.393610, -1.112134}, {-0.342411, 0.026459}, {0.960001, -0.039799}, {0.292966, -0.871399}, {0.509531, 0.068985}, {0.306125, 0.182601}, {0.684688, 0.611943}, {0.366705, -1.300976}, {-0.161117, 0.460565}, {0.919045, 0.162937}, {-0.600136, 0.528728}, {0.807988, -0.082820}, {0.723075, -1.101493}, {0.408624, 0.497548}, {0.592179, -0.511883}, {-0.624763, 0.320432}, {0.702432, 0.047555}, {-0.826321, 0.702721}, {-0.590704, 0.927206}, {-1.222225, 0.520187}, {0.057220, -0.355501}, {-0.346697, 0.327871}, {-0.389801, -1.554275}, {0.700315, -0.895953}, {0.367463, 0.307326}, {-0.364395, -1.611608}, {-0.506932, 0.889372}, {-0.243596, 0.575283}, {-0.802028, 0.056860}, {-0.171424, 0.239689}, {0.169908, -0.522395}, {0.213199, -0.701460}, {0.552262, 0.906828}, {-1.016062, 0.643300}, {0.298917, -0.477633}, {0.354035, 0.004910}, {-0.091019, 0.375327}, {-0.237197, 0.523797}, {-0.445213, 0.236868}, {0.184486, 0.210037}, {-0.200655, -0.532764}, {-0.165018, 0.252682}, {0.301383, -0.470096}, {0.733004, -0.519851}, {-0.340900, 0.559258}, {-0.003634, 0.397142}, {-0.158002, -0.601995}, {1.029616, -0.712344}, {-0.272084, 1.292895}, {-0.245181, 0.153895}, {1.537927, 0.233934}, {-0.194398, -0.207617}, {-0.037529, -0.362480}, {-1.439610, -0.069318}, {-0.527334, -0.847175}, {0.888073, 1.120245}, {0.759059, -1.709285}, {-0.038818, -0.451563}, {-1.569456, 0.059742}, {-1.135825, 1.105116}, {0.860456, -0.054651}, {0.791421, 0.583433}, {0.300375, 0.733727}, {0.740330, 0.173272}, {0.720677, -0.006213}, {0.211773, 0.171237}, {1.239301, 0.513578}, {-0.038229, -1.319419}, {-1.110608, 0.623842}, {-1.199877, 2.009182}, {0.110201, 1.359225}, {-0.521048, 1.259603}, {-0.779884, 0.080694}, {0.922866, 1.378522}, {-0.036678, -0.256378}, {0.630587, 0.356473}, {-0.818911, 0.348724}, {-0.823156, -0.403827}, {-0.305461, -0.183285}, {0.545495, -0.917827}, {-0.307489, 0.278087}, {0.576430, 0.263072}, {-0.110932, 0.343314}, {-0.730010, 0.924897}, {0.492041, 0.775198}, {0.461854, 0.423507}, {0.427495, 1.700151}, {0.432533, 0.301152}, {-0.593518, 1.393076}, {-0.389399, -0.733757}, {-1.049504, 0.301791}, {0.546392, 0.734537}, {0.338524, 0.116400}, {-0.597570, -1.925078}, {0.322346, 1.008118}, {0.513935, -0.042958}, {-0.518049, 0.101353}, {1.352677, -0.293425}, {0.240988, -1.041734}, {-0.691185, -1.063328}, {0.130569, 1.016253}, {-0.586304, -0.555797}, {0.462853, -0.235079}, {0.079994, -0.355770}, {0.153572, 0.147783}, {-0.596490, -0.795026}, {0.326538, -0.790256}, {-1.460756, -0.251033}, {0.017858, 0.259083}, {0.507881, -1.054094}, {0.266351, 0.627879}, {-0.752761, -0.513762}, {-0.627282, 0.008649}, {-0.886446, 0.842860}, {-0.463043, -0.469626}, {0.096623, 0.933024}, {-0.286410, 0.744126}, {-0.542282, 1.126897}, {-0.313235, 0.205528}, {-1.320519, 0.277179}, {0.071715, 0.147248}, {-0.903511, -0.083047}, {0.656132, -1.350683}, {-0.207632, -0.039248}, {0.117073, -0.120780}, {-1.332364, 0.590990}, {-0.380298, -0.400794}, {-0.366577, 0.174013}, {0.485112, -0.117400}, {0.372690, -0.023396}, {-0.909507, -0.293390}, {1.037746, 0.057621}, {0.939461, -1.025088}, {1.893673, -0.611078}, {0.078827, -0.951650}, {-0.839030, 0.090466}, {-1.104840, -1.126416}, {0.590214, 0.068381}, {1.100851, 0.573205}, {-0.393116, -0.875980}, {-0.254150, -0.405253}, {-0.278855, 1.000683}, {0.921864, 0.463923}, {-0.041988, -0.112156}, {0.155288, -0.019315}, {0.099627, 0.916635}, {-0.622412, -0.503004}, {-0.262853, 0.533022}, {-2.349103, -0.232631}, {-0.387689, -0.672924}, {-0.981208, 0.386278}, {0.021049, -0.336082}, {0.385965, 1.431628}, {0.084666, -0.022362}, {1.501095, -0.445381}, {-0.174828, 0.029946}, {-0.075096, -0.754793}, {0.440599, -0.624117}, {-0.191469, -0.122779}, {-0.619664, 0.048316}, {0.681431, -1.113935}, {0.392264, -0.416262}, {-1.025569, 0.426959}, {0.231863, 1.526328}, {-0.235847, 0.767781}, {-0.081400, -1.937839}, {-0.142145, 0.413403}, {-0.578059, -0.410749}, {0.886248, -1.144489}, {-0.584558, -0.717462}, {0.337355, -0.804375}, {-0.070221, 0.776269}, {-0.020066, 0.015296}, {-0.731855, 1.217179}, {0.430529, -0.118092}, {0.121456, 2.210222}, {0.825156, -1.563617}, {-0.365542, -0.034897}, {0.238998, 0.603491}, {-0.488885, -0.418294}, {0.519796, -1.412865}, {-1.114191, -0.510320}, {-0.752598, 0.541650}, {0.380631, -0.713726}, {0.023115, 1.015882}, {-0.198359, 0.433732}, {0.103927, 0.017306}, {-0.039809, 0.223707}, {1.711996, 0.402454}, {-0.056678, 0.174339}, {-1.687713, -0.160125}, {0.696416, -0.493909}, {-0.873410, 0.257890}, {0.319853, 0.072947}, {-0.368300, 0.341422}, {-0.482285, 0.930112}, {-0.004708, 0.893093}, {-0.051559, 0.713417}, {1.244796, 1.336726}, {-0.104941, -0.449322}, {0.655462, 0.706759}, {-0.239773, 1.696788}, {-0.324650, 0.398949}, {0.624589, 0.044072}, {0.357952, 0.443955}, {0.749903, 1.159453}, {-1.563112, -0.838062}, {-0.617714, -0.025810}, {1.450510, -0.020522}, {0.225253, -1.483181}, {-0.666102, -0.989824}, {0.463322, 0.622948}, {-0.252765, -0.493345}, {-0.030605, 0.132428}, {-0.104919, -1.328013}, {0.512898, -0.265843}, {0.641341, 0.344586}, {0.586485, -0.656758}, {-0.869639, -1.444607}, {-0.283470, -0.175611}, {-0.403954, -0.687469}, {0.222511, -0.720233}, {-1.268683, -0.981553}, {-0.379982, -0.435577}, {1.266867, 0.349347}, {0.164557, -1.057785}, {0.093567, 0.955540}, {-0.141307, -0.705522}, {0.371905, 0.120573}, {-0.389172, -0.765473}, {0.917816, -0.237643}, {1.004090, 0.178844}, {-0.629418, -0.412242}, {-0.210337, 0.560592}, {-0.318360, 1.059381}, {0.583389, -1.323808}, {-0.817288, 0.993688}, {-0.878170, -1.153520}, {0.368115, 0.337455}, {0.031655, 0.110590}, {0.265206, 0.204946}, {0.088893, 0.170791}, {-0.177558, 2.292458}, {0.141059, -0.985035}, {-0.660856, -0.980383}, {-0.609849, 0.985874}, {-0.214610, 0.730502}, {-0.616156, -0.316919}, {0.694992, -0.768053}, {-0.325122, -1.054053}, {1.217558, -0.854166}, {0.854051, -0.005104}, {1.209427, -0.241328}, {0.324556, 0.132322}, {-0.343527, 0.053413}, {0.224351, 0.479553}, {0.421346, -0.521788}, {0.118883, -0.218365}, {0.188380, -0.456052}, {-0.349273, -0.770785}, {0.219073, 0.003962}, {-0.296130, -0.656501}, {0.636082, 0.026015}, {-0.625080, 0.346952}, {0.929759, 0.857013}, {0.187340, 0.484039}, {0.007584, -0.624158}, {0.309799, -2.221435}, {0.640643, 1.329439}, {0.226335, -0.805996}, {0.822625, 1.060992}, {-0.470881, -1.000766}, {0.425072, -0.397100}, {-0.223623, 0.531114}, {0.292353, -0.088059}, {0.366968, 0.358980}, {-0.753461, -0.700875}, {0.249173, 0.177231}, {0.182607, -0.592219}, {-0.058347, 0.078718}, {0.183978, -0.226199}, {0.648659, -0.221680}, {-0.656861, -0.408497}, {0.798399, 0.044049}, {-1.154125, -0.803622}, {0.008225, -0.136806}, {0.676763, -0.316637}, {-0.376109, 0.251771}, {-1.331292, 1.241033}, {0.190767, 0.475373}, {0.578552, 1.172062}, {0.505876, -0.233129}, {-0.361797, -0.297199}, {-0.097264, -0.225741}, {-0.050572, -0.001436}, {-0.454120, -0.192442}, {1.120225, -0.898933}, {-0.216917, 0.333024}, {0.110060, 0.750588}, {0.760030, 0.575150}, {0.975368, 0.487183}, {-0.416180, 1.692559}, {0.804607, -0.335317}, {-0.669472, 0.243862}, {1.112954, -0.010765}, {-0.312142, -0.937224}, {-0.567689, -0.263702}, {0.041868, 0.572080}, {1.804127, -0.566619}, {-0.521481, 1.063847}, {1.819315, 0.382287}, {0.380872, -0.611233}, {0.296314, -0.222157}, {1.498113, 0.879454}, {1.518674, 0.605166}, {0.019620, -0.040801}, {1.102724, 0.266670}, {-0.684836, -0.568236}, {0.519185, -0.779516}, {-0.226690, -0.818393}, {0.394623, -1.286799}, {0.900695, 0.487765}, {-0.799478, -0.400191}, {-0.830514, -0.562055}, {0.951365, -0.076491}, {-0.152298, -1.042769}, {0.069064, -1.023238}, {0.053427, -1.985536}, {-0.686719, 0.206313}, {-0.872301, 0.294649}, {-0.624577, -0.387285}, {-0.050756, 0.173358}, {-0.721308, 0.536205}, {0.598027, -1.956268}, {1.243462, -0.102223}, {0.272178, 0.642981}, {0.490204, -1.332468}, {-0.459636, 1.005367}, {-0.186912, -0.782287}, {-0.912943, -0.294037}, {1.394333, 0.134047}, {-0.104225, 0.280412}, {0.396206, -0.652859}, {-1.350593, 0.267762}, {-0.192340, 0.249925}, {-0.294556, 0.392405}, {-0.585629, -0.706280}, {0.416039, -0.105205}, {0.230197, -0.642631}, {-0.788622, -0.801780}, {0.641724, 0.143368}, {0.868609, 0.721575}, {-0.648315, -0.221029}, {-0.759865, -0.581518}, {0.050452, -0.421412}, {0.554405, -0.621567}, {-0.620533, -0.351417}, {-0.708260, 0.277084}, {-0.663141, 0.789494}, {0.544607, -0.890151}, {0.915475, 0.208660}, {-0.089024, -1.629471}, {0.122487, 0.665973}, {0.778714, -0.473087}, {0.436424, -0.053708}, {-0.962989, 0.178894}, {-0.093878, -1.372909}, {-1.334592, -0.532912}, {0.914235, -1.047946}, {0.468339, 0.302520}, {0.144360, 0.390533}, {-0.851259, 0.971010}, {-0.701207, 0.150590}, {0.338131, -0.762748}, {1.102405, -0.101683}, {0.187218, 1.112117}, {0.825270, -0.520667}, {0.520354, 0.359599}, {-0.541755, 0.243781}, {-0.025789, -0.276606}, {0.663983, -0.217932}, {-0.424530, 0.937543}, {0.087080, -0.695290}, {0.125273, -0.056948}, {-0.574391, 0.829597}, {0.707433, -0.081680}, {1.053279, 0.587411}, {1.371934, -0.232203}, {1.377562, -0.181817}, {0.301180, 1.214186}, {-1.259045, -0.768218}, {-0.106634, 0.320428}, {0.638354, 0.147326}, {1.035767, 1.246632}, {-0.484057, -0.778008}, {-0.568900, 0.810352}, {1.343526, -0.565878}, {-0.078860, 0.468044}, {-0.241550, -0.951938}, {0.207429, -0.254585}, {0.447816, -0.015839}, {0.302137, 0.164948}, {0.563014, 0.769551}, {-1.148579, 0.887160}, {-0.083611, 0.680195}, {0.369397, 0.512873}, {0.381627, 1.395393}, {0.681791, 0.515388}, {-0.542576, -1.534588}, {1.918437, 0.611528}, {-0.522244, 1.209917}, {-0.093985, -0.455651}, {-0.107796, 0.859061}, {-1.018800, 0.051540}, {-0.539498, -0.754561}, {-0.015481, -1.049091}, {0.407858, 0.681992}, {1.168251, -0.815391}, {0.280607, -0.068227}, {-0.528591, 0.091963}, {-1.073499, -0.577745}, {0.395243, -0.629384}, {1.095985, -0.516588}, {-0.136250, -0.015595}, {-0.696164, 0.819270}, {-0.192516, -0.906690}, {1.066016, 0.386976}, {0.084233, -0.420819}, {0.691169, -0.036671}, {0.304274, -0.143800}, {0.174184, 1.080694}, {-0.812545, -0.113297}, {0.498295, -0.183696}, {1.482711, 0.261931}, {-1.195411, -0.365014}, {-1.007641, -1.211093}, {0.180812, -0.582404}, {-0.600608, 0.360349}, {-0.795459, -0.612485}, {-0.498403, -0.770827}, {0.179341, 0.252923}, {0.078219, -0.134409}, {0.029020, 0.530232}, {-1.082486, -0.964627}, {0.475449, 0.228865}, {0.945295, -0.971173}, {-0.376007, -0.822730}, {-0.048402, -0.952172}, {0.442908, 0.788001}, {-0.523677, 0.317709}, {0.249828, -0.866534}, {0.288825, -0.711717}, {0.749714, 1.240367}, {0.231159, -0.142686}, {-0.672808, -0.212280}, {-0.205479, 0.294669}, {-0.867840, 1.497664}, {0.602268, 0.171039}, {-0.439475, -0.397819}, {0.056233, 1.305299}, {-0.202537, -1.087085}, {0.879143, 0.645517}, {-0.098655, 0.549591}, {-0.079826, 0.092852}, {0.787565, -0.587819}, {0.844504, 0.083068}, {-0.316615, -0.486807}, {0.318470, -0.589745}, {-0.323499, 0.031700}, {0.794815, 1.192794}, {-1.434705, -0.743418}, {0.194635, 0.496011}, {-0.068369, 1.097164}, {0.055882, -0.610884}, {-0.944299, -0.941208}, {-0.498806, 0.156640}, {0.208447, -0.528226}, {0.956777, -0.354452}, {-0.879130, -1.356783}, {-0.605954, 1.495664}, {-0.025056, 0.107553}, {0.610923, 0.435619}, {-1.008064, 0.239170}, {-0.137944, -0.395381}, {-0.531626, 0.570013}, {0.039088, -0.074388}, {-0.602167, -0.940069}, {0.520930, 0.839237}, {-1.547177, 0.015998}, {0.439233, 0.453052}, {-0.029776, -0.125403}, {-0.345532, 0.150671}, {0.283820, -0.311247}, {0.691268, 0.439948}, {-0.297298, 0.571417}, {-0.664505, -0.174490}, {1.265258, 0.472942}, {0.049889, 0.244857}, {-0.095322, 0.754115}, {-0.029737, -0.356600}, {0.146569, -1.294022}, {-0.295789, 0.369970}, {0.200032, -0.482899}, {0.781168, 1.247152}, {-0.245575, 0.442512}, {-1.080089, -1.224498}, {0.347986, -0.310894}, {1.813778, -0.546107}, {0.347830, 1.098305}, {1.139714, 0.083681}, {0.613995, -0.064648}, {0.627980, -1.185934}, {-0.088940, -0.247523}, {0.293299, 0.282612}, {0.145607, -0.363898}, {0.682261, 0.069479}, {-0.062785, -0.107404}, {-0.404708, 0.102763}, {-0.237587, 0.193964}, {0.971118, 1.637474}, {-0.449309, 0.565929}, {1.795769, 0.373496}, {-0.873712, 0.616632}, {-0.196513, -0.640404}, {-0.186019, -0.672891}, {0.405301, -0.523678}, {-1.000323, 1.087868}, {-0.748565, 0.346213}, {-0.533750, 0.023908}, {-0.576248, 0.401431}, {-0.892996, 0.627997}, {-0.467071, 1.447969}, {-0.139768, -1.028884}, {0.278656, 0.126379}, {-0.238544, 0.542289}, {-0.270467, -1.010170}, {-0.228088, 0.216426}, {1.142972, -0.627060}, {1.031965, -0.434600}, {0.340546, -0.237191}, {-0.136616, 0.924569}, {-0.852451, 0.409948}, {-0.030960, 0.003293}, {0.751540, -0.478669}, {0.454761, -0.433887}, {-1.611252, 0.302680}, {0.003690, -0.193511}, {-0.883646, -0.472813}, {-0.217567, 0.614904}, {-0.060909, -0.291651}, {0.348777, 0.769840}, {-0.205364, -0.945972}, {0.100935, -1.105324}, {-0.730546, 1.197917}, {0.037881, -1.364004}, {-0.790273, -0.500485}, {1.019594, 1.405192}, {0.553383, -0.760307}, {0.079813, 1.242097}, {0.724602, 0.322399}, {0.691650, -0.277596}, {-0.999711, 0.814944}, {-0.103090, 0.702437}, {-0.245544, -0.599467}, {-0.194306, 1.677402}, {0.436362, 1.246626}, {0.206087, -0.136172}, {1.747782, 0.584106}, {0.406945, 0.500722}, {0.401018, 0.061251}, {-0.485579, -0.126287}, {0.102872, 0.074572}, {0.526394, -0.130306}, {-0.997377, 0.317494}, {0.651321, -0.412428}, {-1.160759, -1.663891}, {-1.106270, 0.202325}, {-0.698919, 0.195317}, {0.486878, 0.717703}, {-0.998619, 0.718843}, {0.006452, 0.669891}, {1.418430, -0.380581}, {-0.079725, 0.248431}, {0.034193, -0.516827}, {0.087614, -0.200013}, {-0.608534, -0.918271}, {-0.096351, -0.320469}, {-0.803814, -0.983979}, {-0.563381, 0.035484}, {0.725737, 0.753731}, {0.945344, -0.412933}, {1.252002, 0.158636}, {-0.615195, -0.442558}, {-0.181433, -0.153078}, {-0.131831, 0.255303}, {0.028794, 0.045431}, {-0.901468, -0.112194}, {-0.240013, 0.332503}, {0.725427, 1.028639}, {-0.832698, -1.074637}, {-0.087355, 2.052221}, {-1.695433, 1.195954}, {0.348765, 0.618883}, {-1.261736, 0.226435}, {-1.036571, 1.108908}, {-0.631858, 0.969470}, {-0.383927, 0.513694}, {-1.065415, 0.305332}, {-0.770717, -0.211612}, {-0.042169, -0.577398}, {0.778070, 0.164015}, {-0.308740, 0.253317}, {0.673013, 0.384047}, {-0.663271, -1.645542}, {-0.594806, -0.266981}, {0.031422, 0.017209}, {0.372819, 0.179241}, {-0.451831, -1.222927}, {-1.473253, -1.466359}, {-0.021394, 1.299407}, {0.517073, 1.048515}, {-0.492487, 0.319604}, {0.045902, -0.369191}, {0.761630, -0.646184}, {-1.143760, -0.877989}, {-1.207937, 0.402411}, {0.647822, -0.684881}, {1.561865, -0.520949}, {0.034907, 0.267810}, {-0.060274, -1.422451}, {-0.739349, 0.707542}, {-0.536740, -0.575886}, {-0.052684, -0.290248}, {-0.123131, -0.743400}, {-0.514004, 0.128876}, {-0.865755, 0.825335}, {-1.093714, -1.041393}, {1.399303, -0.474390}, {-1.593978, -0.302014}, {-0.647736, 0.276940}, {-1.921976, -1.024671}, {-0.330629, -1.292647}, {-0.758354, 0.195156}, {0.469699, 0.035348}, {-0.091111, 0.143719}, {-0.451077, 0.345265}, {0.206307, -1.201955}, {-0.710390, 1.963236}, {0.375559, -0.576808}, {0.149091, -1.086740}, {-0.449572, 0.325384}, {-0.192764, 0.050606}, {0.421631, -0.018053}, {1.221822, 0.036003}, {0.377659, 0.155503}, {0.659024, -0.972623}, {0.028611, 1.195320}, {0.766597, 1.851492}, {-0.080947, -0.311238}, {-0.546674, 0.601715}, {0.100401, -0.217646}, {0.545637, 0.168297}, {-1.346635, -0.631837}, {-0.682666, 0.621478}, {0.045733, -0.349107}, {-1.244812, -0.204358}, {-0.422721, 0.108213}, {0.079947, -0.097146}, {-0.020068, 0.559199}, {0.297205, 0.513111}, {0.941640, 0.417691}, {-0.925712, -0.314921}, {-0.315827, 1.287305}, {0.529011, 0.755734}, {-1.309677, 0.875144}, {-0.230303, 0.267374}, {0.868997, 0.302759}, {-0.111540, 0.065648}, {-0.142909, 0.138899}, {-0.578420, -1.061350}, {0.245031, 0.319639}, {1.260454, -0.384548}, {0.982616, 0.576288}, {0.159346, 0.750479}, {-0.087783, 1.089588}, {0.196171, -0.771344}, {-0.607085, 0.048410}, {-0.068539, -0.651095}, {0.361776, -0.899946}, {0.513233, -0.276754}, {-0.815696, 0.184741}, {0.595970, 0.094903}, {0.115271, -0.496266}, {1.233400, -0.604420}, {-1.610600, 0.068291}, {1.685176, -0.540653}, {1.331054, -0.306383}, {0.474553, -0.181542}, {-0.349692, -1.046318}, {0.466882, 0.552974}, {0.671398, 0.059918}, {1.220610, -0.655965}, {-1.017139, 0.324829}, {-0.405089, -0.133175}, {-1.230806, -0.614727}, {0.053516, 0.105043}, {0.263139, -0.629699}, {0.284898, -0.362198}, {-0.210472, 0.588927}, {0.430466, 0.051079}, {0.114497, 0.987658}, {-1.348501, 0.053213}, {-0.087962, 0.937382}, {-0.583326, -0.560167}, {0.925946, 0.254656}, {-0.883881, -1.030357}, {-0.800863, 0.810453}, {1.625943, -1.280755}, {0.323764, -0.336854}, {0.797648, 0.589424}, {-0.219584, 0.872309}, {0.640241, 0.052660}, {0.266435, -0.575933}, {0.010578, 0.226011}, {0.416890, 0.200529}, {1.452786, -0.051537}, {-0.310855, 0.121700}, {-0.632248, -0.915323}, {0.030787, -0.673870}, {-1.049494, 0.197745}, {0.047091, -1.145422}, {0.711093, 0.945179}, {-0.242047, 0.140575}, {0.340217, 0.852112}, {0.630934, 1.603793}, {-0.212128, 0.191145}, {-1.331703, -0.244984}, {0.474762, -1.272654}, {-0.064322, 0.887641}, {-0.772426, -0.137183}, {-0.476909, -0.765121}, {-0.921167, 0.515822}, {0.706203, -0.726292}, {-1.297285, 1.234220}, {0.251867, 0.516994}, {0.152440, 0.693035}, {0.355725, -0.222082}, {0.070784, -0.573142}, {-0.472779, 0.405148}, {-0.387195, 0.495100}, {0.353239, 1.388869}, {0.436446, 0.846312}, {0.117673, 0.291440}, {0.038314, 0.003910}, {0.832524, 0.297668}, {-0.067787, -0.787236}, {0.308990, -1.201882}, {-0.716303, 0.682363}, {-1.541222, 0.779205}, {-0.399833, 0.182525}, {-1.489015, 0.201933}, {-1.085351, -0.414808}, {-0.593430, -0.460045}, {-0.136958, 0.225884}, {0.839454, 0.132045}, {0.512016, 0.539074}, {1.021031, -0.818081}, {-2.082684, -0.974775}, {1.078381, -0.424613}, {-0.215449, -1.070854}, {-0.267500, -0.045646}, {-0.097457, -0.787663}, {-1.127850, -0.129833}, {0.261141, 0.361222}, {-0.047321, -0.078316}, {-0.213066, -0.934763}, {-0.693972, 0.416171}, {0.734195, 0.443239}, {-0.761988, 1.089263}, {0.254715, 0.226029}, {0.302206, 0.304181}, {-0.588604, -0.955464}, {-0.724068, 0.962523}, {1.030788, 1.094885}, {-1.634408, 0.959742}, {-0.343578, 0.529590}, {-0.913576, 0.062114}, {-0.029438, 0.785613}, {-0.978121, -1.357258}, {0.393594, -0.252471}, {-0.547676, 0.105908}, {0.540394, -0.607045}, {0.769064, -0.118855}, {-0.655730, 0.653167}, {0.624079, 0.821763}, {0.289239, -0.019449}, {0.171656, -0.435785}, {1.322478, 0.011860}, {-2.093062, 1.275452}, {-0.213217, 0.410659}, {-0.922502, 0.014639}, {1.481723, -0.168258}, {-1.494468, -0.526159}, {0.212115, -0.653763}, {0.247302, 0.440803}, {-0.227827, -0.164564}, {-0.730551, 0.626705}, {0.955221, -0.640437}, {0.083621, -0.495753}, {0.010779, 0.268628}, {-0.517990, 0.518614}, {-0.127293, 0.121118}, {-1.391215, 0.845785}, {0.376562, 0.013170}, {-0.023148, 0.651098}, {-0.545330, 1.030364}, {0.423751, -1.034899}, {0.064578, 0.069449}, {0.727233, -0.170816}, {-0.262943, -0.128789}, {-0.200262, 0.310986}, {0.252975, 0.424229}, {-0.907615, -0.073997}, {-0.543862, -0.735072}, {-0.813343, -0.173314}, {-1.201885, 1.528061}, {0.656099, 0.166095}, {-1.168671, 0.209173}, {0.835893, 0.449546}, {0.058003, -0.443218}, {-0.940742, 0.333260}, {0.685444, 1.349441}, {-0.070850, 0.383320}, {-0.784000, 0.412765}, {0.972754, 0.248983}, {-0.611710, 0.795272}, {0.740168, -0.382664}, {-0.595800, 1.134890}, {-0.291688, -0.192899}, {-0.324666, 1.139416}, {-0.026190, 0.014553}, {-0.797475, 0.108035}, {0.257394, -0.383343}, {0.936633, -2.076909}, {-0.164027, 0.563305}, {-0.029333, -1.077666}, {-0.776752, 0.687745}, {-0.361438, -1.434606}, {0.159147, 0.129632}, {0.742079, -0.379723}, {-0.325943, -0.534641}, {0.421914, 0.776426}, {-1.185213, 1.207085}, {-0.812063, -0.427344}, {-1.734549, -0.468229}, {-0.532631, -0.196973}, {-1.124256, -0.783135}, {0.002816, -0.609461}, {0.497856, -0.858671}, {0.297182, -0.995354}, {-0.009002, -0.094468}, {-0.841901, 0.478523}, {-0.357151, -0.724320}, {0.684269, -0.106986}, {-0.875832, 0.368872}, {-0.451512, 1.155647}, {0.007695, 0.984606}, {-0.245539, -0.586946}, {-0.438202, 0.003614}, {0.272786, 0.270776}, {0.645523, 0.541562}, {-0.237560, -0.637564}, {-0.848358, -0.612336}, {-0.277362, -0.783485}, {0.481862, -0.045225}, {0.276958, 0.039033}, {-0.226987, 1.330472}, {1.139474, 0.298630}, {-0.452719, 0.688238}, {0.575993, -1.073807}, {-0.877879, -0.474368}, {1.162578, -0.352652}, {-0.616572, -0.422459}, {-0.353035, 1.347897}, {-1.158601, -0.646731}, {0.451272, 0.588822}, {-0.141924, 0.363633}, {0.527233, -0.473859}, {-0.363216, -0.892939}, {-1.340083, -0.111274}, {-0.603631, -0.270979}, {-0.188457, 0.012816}, {-0.811343, 1.252060}, {1.188571, -0.831308}, {-1.041929, -0.096941}, {0.712698, 0.394449}, {-0.553583, 0.946137}, {-1.219442, -0.169581}, {0.864311, -0.554224}, {-0.262955, 1.220312}, {-0.576259, 0.887034}, {1.004077, 0.461673}, {-1.593715, 0.659881}, {0.531584, 0.228323}, {-0.240945, 0.486940}, {0.922614, -0.455564}, {0.275567, 0.685332}, {-0.420722, 1.269918}, {0.430470, 0.686037}, {0.034631, -0.235561}, {-0.314039, -0.525507}, {0.272926, 1.024054}, {-0.597859, -0.371195}, {0.369351, 0.638611}, {-0.203028, 1.337666}, {0.939544, 0.549966}, {0.478238, -0.275508}, {-0.155890, 0.618782}, {0.065502, 1.306056}, {-0.144435, -1.053199}, {0.675192, -1.042800}, {0.887757, 0.799049}, {1.032078, -0.335687}, {-0.416585, -0.671976}, {-0.277219, 0.392748}, {-1.373308, 0.145767}, {-1.898957, 0.258620}, {-1.507777, -0.799117}, {0.125190, -1.513681}, {-0.555275, -1.147338}, {0.109193, 0.630449}, {0.850572, -0.428761}, {0.762598, -0.418743}, {-0.658676, 0.120374}, {0.219889, 0.679444}, {0.960891, 0.748391}, {0.870463, 0.591815}, {1.008497, 0.258433}, {-0.397245, 0.229091}, {0.079530, -0.765548}, {-1.189197, 0.391146}, {1.090130, -0.176457}, {0.878735, -1.220042}, {-0.282687, 0.045037}, {0.690295, 0.760265}, {-0.064226, -1.270045}, {0.451127, 0.620894}, {0.518653, -0.291379}, {1.427926, 0.763723}, {0.013799, -0.112367}, {-0.284511, 0.556617}, {0.023375, -1.498134}, {0.527409, 0.837385}, {-0.337269, 0.119037}, {0.397375, 1.457268}, {-0.915267, 1.637006}, {0.189049, 0.517475}, {0.118637, 1.005364}, {0.396135, -1.604041}, {-0.089106, -0.609048}, {-0.028093, 0.096681}, {0.978246, -0.222336}, {0.078209, 0.502843}, {0.317957, -0.209239}, {-0.235391, -1.067509}, {0.672564, -0.630147}, {0.573721, 0.505773}, {-0.211566, 0.007962}, {0.493715, -1.029766}, {0.610607, -0.973276}, {-0.204172, -0.197208}, {1.323638, -0.298948}, {-1.036127, -1.456968}, {-0.650336, -0.262731}, {-0.324206, -0.556171}, {0.184158, -0.349058}, {0.439262, 0.058320}, {-1.534475, 0.227140}, {-0.631174, 1.780843}, {-0.755815, -0.501755}, {0.146835, -0.731846}, {0.859454, 0.963689}, {0.800582, -0.146938}, {1.372001, 0.638182}, {-0.919889, -0.622212}, {0.681129, -0.602858}, {0.172753, 1.274081}, {-0.669045, -0.735854}, {1.072433, -0.430603}, {-0.945714, 0.249387}, {0.058404, -0.356905}, {0.280842, 1.395081}, {-1.333727, 0.175503}, {-0.162653, 0.997135}, {1.349928, -0.778412}, {0.351735, -0.432853}, {0.130525, -0.679365}, {-0.255894, 0.000290}, {-0.033975, 0.753936}, {0.880727, 0.592943}, {-0.432137, -1.241763}, {-0.916417, 0.629270}, {-0.417353, 0.281667}, {1.027431, -0.561347}, {-0.313624, -0.862803}, {0.688305, -1.114407}, {0.407758, 0.350545}, {-0.084867, -0.097319}, {0.659983, 0.568765}, {-0.226611, 0.133226}, {-0.215283, -0.443496}, {0.718936, -0.037813}, {0.933978, -0.233086}, {-0.516582, 0.734210}, {0.736643, 0.706611}, {0.305234, 0.000249}, {-0.370270, 0.590320}, {0.962118, -0.925841}, {-1.048981, -0.103269}, {0.044995, 0.871437}, {0.797065, -0.797195}, {0.012374, 1.464487}, {-0.744670, -0.902590}, {-0.975379, 0.299666}, {-0.751756, -0.171825}, {-0.478057, 1.113745}, {-0.351503, 0.127088}, {0.589924, -0.913712}, {1.035181, -0.319182}, {-0.226216, -0.426067}, {0.740355, 0.631193}, {-0.506299, -2.521827}, {-0.734618, -0.279302}, {-0.793006, 0.934782}, {0.400248, 0.019342}, {-0.460130, 0.039696}, {-1.182922, -0.759926}, {-0.322657, 0.433662}, {1.295318, 0.089107}, {0.776325, -0.202020}, {-1.354920, -0.019325}, {-0.070378, -0.628537}, {-0.313186, -0.122804}, {0.679820, -0.407435}, {0.568100, -0.865077}, {-0.270622, -0.118376}, {-0.120073, 1.163957}, {-2.521375, -0.093829}, {0.242298, -0.793270}, {0.110432, 1.286578}, {0.589488, 0.684460}, {-0.130721, -0.833847}, {-1.196174, 0.719174}, {1.558364, -0.705261}, {0.040922, 0.325140}, {-0.591884, 0.749348}, {-0.121397, 0.219684}, {0.378761, -0.899270}, {-0.292474, -0.083947}, {-0.868838, -1.003608}, {0.229984, -1.746968}, {-0.653827, -0.413638}, {-0.724029, 0.485097}, {0.014806, 1.481808}, {-0.493384, -0.210216}, {0.722527, -0.225007}, {1.054819, 1.601291}, {-0.282008, -0.282742}, {-0.866851, 0.072647}, {-1.735218, -0.205276}, {-0.689724, -0.951328}, {0.216225, 0.177342}, {-0.124588, -0.162394}, {0.489274, -0.190430}, {-0.057484, -0.451252}, {-0.838170, 0.008589}, {-0.012782, 1.507933}, {-0.471353, 0.394553}, {-0.190237, 0.685665}, {0.557875, -0.620214}, {-0.059726, 0.397332}, {-0.592982, -0.006411}, {-0.123340, 0.161368}, {-0.854995, 0.700566}, {-0.572703, -0.252267}, {-0.763440, 0.344721}, {0.021265, 0.446768}, {-0.586946, 0.323793}, {0.180415, 0.043743}, {-0.288882, -0.511805}, {2.624556, -0.567090}, {0.551481, 0.803221}, {-0.143453, -0.586976}, {0.992092, 1.533923}, {-0.318124, -0.550864}, {1.318704, -0.063433}, {-0.155347, 1.117042}, {0.058911, -0.944546}, {0.108052, -0.051107}, {-1.035368, 0.386023}, {-0.823147, 0.171737}, {0.846301, 0.680001}, {-0.110664, 0.468723}, {-0.083706, 0.625575}, {0.290091, 0.858146}, {-0.662183, -0.590796}, {-0.288190, -0.353492}, {-1.159802, -1.337642}, {-0.306885, -0.750638}, {0.044691, -1.653807}, {-0.615050, 0.289028}, {-0.201731, 0.465221}, {1.008004, -0.060762}, {-0.550498, 0.300423}, {-0.116548, -0.013405}, {0.549048, 1.586230}, {0.759367, -0.971517}, {1.323636, 1.681829}, {0.170062, 0.089436}, {-0.211072, 0.704819}, {-0.419963, -0.128266}, {0.626398, -0.551576}, {1.543900, 0.511508}, {-0.784514, 1.183790}, {0.502940, 1.028658}, {-1.016714, 0.248965}, {0.112604, 0.111350}, {-0.123006, 0.683764}, {0.021753, -0.247159}, {0.138703, 1.086674}, {-0.051887, -1.076659}, {1.737884, 0.864115}, {-0.215718, 0.020311}, {0.666013, -0.799401}, {-1.108657, 0.547216}, {0.552800, 2.316691}, {-0.103811, 0.195943}, {-0.559387, 0.399860}, {-0.574699, -0.002171}, {0.494645, 0.839499}, {1.539942, 0.061094}, {-1.185473, 0.157370}, {0.687725, -0.726402}, {1.062304, 0.143174}, {-0.231306, 0.431820}, {0.181212, 0.243572}, {0.048089, 1.016969}, {1.019749, -0.468151}, {0.272841, -0.383551}, {0.606381, -0.216956}, {-1.061207, -1.080103}, {-0.174838, 0.363043}, {-0.498895, 1.116096}, {-0.098641, 0.561958}, {0.043930, 0.385439}, {-0.427768, -1.146650}, {0.923076, -0.396539}, {0.754689, 0.963067}, {-0.037038, -0.203416}, {0.019305, -0.562339}, {-0.797642, -0.371491}, {0.081456, -0.831708}, {0.208751, -1.180105}, {-0.774074, -0.978951}, {1.266618, 0.537957}, {-0.712267, 0.567095}, {0.145303, -0.817414}, {1.967789, 1.007710}, {0.193202, 0.217408}, {-0.798454, -0.633302}, {-0.330441, 0.650118}, {-0.007839, 0.797737}, {-0.990287, 0.006108}, {-0.443475, 1.373610}, {0.356907, -0.324058}, {-0.456490, 0.150888}, {0.778863, -0.215198}, {-0.465454, -0.433403}, {0.906855, 0.653127}, {0.492398, -0.648731}, {0.945877, -1.419218}, {-0.177893, -0.646512}, {1.411359, -0.241056}, {-0.264133, -1.505842}, {-0.366946, 0.985009}, {-0.128469, -0.052593}, {0.167171, -0.446152}, {0.919920, 0.002816}, {0.119854, -0.960683}, {1.395234, -1.093261}, {0.264784, 0.684038}, {0.136742, -0.623673}, {-1.157844, 0.208610}, {-0.081146, -0.545579}, {0.129620, 0.317296}, {-0.565284, 0.051918}, {-0.552605, 0.036032}, {0.605695, -0.026673}, {0.050425, 2.453665}, {0.044827, -1.616143}, {-0.113293, 0.653822}, {1.093501, 2.247677}, {0.695921, -1.033199}, {0.000694, -0.086366}, {0.421101, 0.539692}, {0.051940, -1.072276}, {0.040107, -0.888686}, {-0.229449, 1.123220}, {1.198503, -0.862325}, {0.700102, 0.555513}, {-0.119860, -0.774937}, {-0.028011, 1.437656}, {1.000033, 0.429811}, {0.381991, -0.471777}, {-1.061909, 0.633338}, {0.795537, -0.653199}, {1.595592, -1.118207}, {-0.084673, -1.361223}, {-0.624297, 0.764246}, {0.089882, 1.013592}, {-0.533656, 0.632749}, {0.465736, 0.775404}, {-0.888801, -0.059761}, {0.523573, 0.053779}, {-0.209593, 0.885880}, {0.748105, 0.127068}, {0.599795, -1.139121}, {-0.077588, 0.842374}, {0.761840, -0.795831}, {0.709548, 0.183950}, {-0.252544, 0.680008}, {0.570220, 0.515018}, {0.266137, -0.206870}, {-0.885632, 1.679647}, {1.150557, 0.483125}, {-0.468721, -1.841706}, {0.271059, 0.926911}, {-0.154149, -0.322614}, {-0.329320, 1.218566}, {-0.171047, -1.007784}, {0.223529, -0.505620}, {0.772175, 0.801805}, {-0.341824, 0.518301}, {0.968368, -1.633597}, {0.073692, -0.583842}, {-0.953372, -0.161117}, {0.551488, 0.447077}, {0.020273, -0.505357}, {0.365393, -0.032102}, {0.844367, -0.639689}, {1.018752, 0.751834}, {1.126097, -0.613405}, {1.016788, -0.019078}, {0.623747, 0.592169}, {-1.319641, 0.298078}, {-0.329394, -0.423323}, {0.364704, -0.653483}, {0.617694, -0.252054}, {-0.591705, 1.619074}, {-0.161785, 1.838932}, {0.564582, -0.723667}, {0.225778, 0.243980}, {-0.037796, 0.502040}, {0.367842, -1.021410}, {-0.427836, -0.366767}, {-0.488887, 1.324747}, {0.283351, -0.475819}, {-0.368885, -0.343402}, {0.022111, -1.503025}, {0.608174, 0.232807}, {0.872253, -0.186510}, {-0.550839, -0.327475}, {-0.154591, -0.267873}, {-0.747008, -0.379431}, {-0.277511, -0.951636}, {-0.759266, 0.574239}, {1.154286, 0.179194}, {-0.112772, -0.817203}, {0.200759, 0.799191}, {-0.502025, 0.432883}, {-1.119323, -0.074693}, {1.254542, 0.141465}, {0.080510, 0.266965}, {1.402806, 0.382574}, {0.817240, -0.115142}, {0.507720, 0.176294}, {0.210651, -0.143840}, {-0.689945, 1.732906}, {0.235579, -0.641823}, {0.851720, -0.271216}, {-0.214092, -1.383215}, {1.260678, -0.375676}, {-0.342547, 0.300925}, {0.157321, -1.216358}, {-1.291505, 0.269752}, {-0.813264, 0.966839}, {0.385009, -0.966745}, {0.048812, 0.037934}, {0.157922, 0.072546}, {0.136019, -0.636157}, {-1.131118, 0.701695}, {0.057882, 0.542163}, {-0.289670, -0.556624}, {0.296565, 0.901636}, {0.811896, 0.152258}, {0.071886, -0.310387}, {0.248307, -1.423973}, {-0.077694, -0.208889}, {0.351881, -0.374276}, {-1.108993, 0.435304}, {0.689461, -0.661618}, {-0.847280, 0.417742}, {-0.693780, -0.030547}, {0.205481, 0.163966}, {1.152296, 0.501315}, {0.421218, -0.000555}, {-0.796311, 0.281834}, {-0.269010, 1.052164}, {0.133541, -0.454531}, {-0.412860, 1.370429}, {0.616688, 0.124832}, {0.702940, -1.203623}, {0.675882, -0.390202}, {0.830890, 1.250459}, {0.674844, 0.665324}, {-0.043831, 0.707066}, {-0.886906, -0.060713}, {0.677298, -0.111700}, {-0.754756, -0.380721}, {-0.561574, 0.787921}, {-0.138727, -0.246949}, {0.399551, 0.257836}, {0.391218, -0.046240}, {-0.604638, -0.547392}, {1.211615, 0.045085}, {-2.243039, -0.736534}, {0.779312, 0.843648}, {0.162298, 0.157163}, {-0.140700, 0.766237}, {-0.144998, 0.378899}, {0.417087, 0.656509}, {-0.663537, 0.226287}, {0.623830, 0.333788}, {2.231783, 0.374867}, {0.734099, 0.049999}, {1.036979, -0.688127}, {-1.040401, -0.707128}, {0.381121, -0.100134}, {1.359817, -0.400703}, {-0.552157, -1.396689}, {0.259124, -0.224525}, {-0.273705, -0.347394}, {-0.409249, 0.216952}, {-0.216934, -0.899068}, {-0.235146, 0.030945}, {-0.889038, 0.360220}, {-0.157354, 0.100057}, {-0.036127, -0.499812}, {-0.348823, 0.151622}, {0.279825, -0.589387}, {-0.933342, 0.643324}, {0.555767, -0.017369}, {-0.011276, -0.013992}, {-0.434804, 0.253158}, {0.675855, -0.224374}, {-0.805744, 0.659219}, {0.808692, 0.008962}, {0.397507, -1.041463}, {-0.127428, -0.570829}, {-0.029020, -0.201817}, {-1.009712, -0.877845}, {-1.216129, 0.783185}, {0.328932, -0.747150}, {-0.854801, -0.178626}, {-0.785073, -1.023245}, {0.788804, 0.147804}, {-0.654940, 0.835733}, {1.194529, 0.469089}, {-0.435047, -0.112630}, {-0.398296, 0.298359}, {0.614442, -0.831401}, {0.898647, 1.252811}, {-0.651719, 0.063096}, {0.829332, -0.130964}, {-0.644862, 0.485383}, {0.099189, -1.241679}, {0.232553, -1.087991}, {0.827992, 0.327188}, {0.251847, -0.542311}, {0.114473, 0.172203}, {-0.607207, -0.449144}, {-0.376521, 0.290727}, {-0.132065, 0.363772}, {0.435356, -0.571154}, {-0.190653, 0.248960}, {0.651496, -0.923586}, {0.512997, -0.004873}, {-0.236174, -0.568753}, {0.932160, -1.334080}, {0.155451, 0.672475}, {-0.911918, -0.030052}, {0.263176, 0.406002}, {0.304970, -0.011967}, {-0.410390, -0.330155}, {-0.141643, 0.047151}, {-0.172968, -1.012272}, {-0.372838, 0.560728}, {-0.855840, 0.042006}, {-0.164063, 0.636134}, {-1.109047, -0.279656}, {-0.069774, -0.604646}, {-0.282135, -0.394121}, {0.176084, 0.052311}, {0.487541, -0.565642}, {-0.208335, 0.518275}, {-0.149021, -0.363198}, {-0.249631, -0.090729}, {-0.249841, -0.596483}, {0.640211, -0.976106}, {0.326645, 0.866942}, {1.183765, 0.830576}, {-0.029594, -0.620946}, {1.115148, -0.337932}, {1.567311, 0.261972}, {-0.721293, -0.564232}, {-0.357507, 0.803439}, {-1.016735, -0.027591}, {-0.426745, 1.104032}, {0.443712, 1.244449}, {1.160755, -0.838377}, {-0.819387, -0.128786}, {0.288092, 0.008755}, {-0.515644, 0.101036}, {0.364482, -0.130023}, {-0.229438, -0.654899}, {0.906635, -0.125711}, {-0.159322, -0.304040}, {-1.211824, 0.158356}, {-0.012123, -0.488427}, {-0.426069, -0.835684}, {-0.125217, -1.170805}, {-0.270562, 0.000386}, {0.623183, -0.945317}, {0.848419, -0.522606}, {1.250635, 0.444407}, {0.492130, 1.050228}, {1.080375, -0.338691}, {-0.764704, -1.279899}, {0.741656, 0.485046}, {0.956357, -1.023715}, {-0.247405, -0.820810}, {-0.149085, -0.107801}, {-0.570624, 1.043465}, {-0.115018, -0.641550}, {-0.616512, -0.289516}, {1.176485, -0.172412}, {-0.362269, 1.717443}, {-0.817064, -0.370700}, {-0.465179, 0.259246}, {-0.642608, 0.664244}, {0.747615, 0.390002}, {-1.838046, -0.673345}, {-0.071150, -0.063051}, {0.124401, -0.037791}, {0.721531, -0.349121}, {0.948579, -0.683095}, {-0.296344, -1.657454}, {-0.244777, -0.050854}, {-0.355675, -0.088336}, {0.834088, -0.200241}, {-1.139669, 0.315556}, {-0.080632, -0.198803}, {-0.187648, 0.739006}, {0.609210, -1.146719}, {0.133987, 0.472373}, {1.301981, -0.658052}, {0.148344, 0.175711}, {0.482189, -1.298825}, {-0.666823, -0.399625}, {0.067421, -0.725454}, {-0.052146, -0.168842}, {0.332959, 0.334690}, {-1.054764, 0.239030}, {-0.165250, -0.447066}, {-0.428016, 1.320568}, {0.510212, 0.318306}, {0.451920, 0.645015}, {1.606643, 0.236357}, {0.230974, 0.123761}, {-0.049062, 0.112286}, {0.479037, 0.015434}, {-0.287389, 0.872496}, {1.067029, 0.499731}, {-0.126337, 0.779721}, {-0.370434, 0.612051}, {0.075632, 0.614917}, {-0.528660, -0.850174}, {0.487266, -0.590261}, {-0.234836, 0.263938}, {-0.065654, 2.081570}, {-0.636267, -0.906258}, {-0.803871, 0.321421}, {-0.328638, 0.333370}, {-0.516140, 0.175497}, {0.347902, -0.402807}, {0.411276, 0.362019}, {0.440469, 0.412853}, {1.107078, -0.338276}, {0.856038, -0.131811}, {-0.369578, 0.324333}, {0.516267, 0.144410}, {-0.706354, -0.923046}, {1.199280, -0.679079}, {-0.206381, 0.733361}, {-1.118980, -0.339299}, {0.249695, 1.301003}, {-0.001465, 1.070052}, {-0.888923, -0.187516}, {0.810337, 0.313939}, {0.305196, 0.026000}, {0.494726, 1.024847}, {1.476541, -0.802107}, {-0.526713, 0.266385}, {0.384008, -0.961735}, {1.282973, -0.698481}, {0.988486, 0.038408}, {-0.219075, -1.024923}, {-0.466889, 0.255891}, {0.003917, 0.530058}, {-0.767964, -0.385498}, {-0.377691, 0.462312}, {0.026027, -1.093603}, {-0.458202, 0.027801}, {0.806314, -0.293232}, {0.050386, 0.705391}, {0.738212, 0.099567}, {1.685787, 0.176921}, {-0.892685, -0.318613}, {1.109295, -0.356620}, {-0.037037, -0.399946}, {1.099257, 0.066189}, {-0.138197, 0.931202}, {0.352476, 0.541835}, {-0.234773, 1.811281}, {0.220325, 1.006277}, {1.183808, 0.818720}, {0.412037, -0.266925}, {-0.046189, 0.101378}, {-0.525259, 0.184060}, {0.223098, -0.866883}, {0.759485, 1.089619}, {-0.645569, 0.593185}, {-0.363564, -0.111653}, {-0.760729, 0.424275}, {-0.173270, 0.825271}, {-0.893186, 0.404038}, {0.757566, 0.583220}, {-0.256129, -0.077900}, {0.284986, 0.630869}, {0.664454, 0.481663}, {0.119009, 0.113249}, {-0.205947, 1.010834}, {0.932543, -0.060003}, {0.274266, -0.406043}, {-0.247609, 0.396317}, {-0.442815, 0.120444}, {-1.305720, 0.295270}, {0.936322, 0.968362}, {-0.571598, -0.407698}, {-0.392774, -0.484139}, {0.822763, 0.339368}, {-0.517289, 0.041135}, {0.147543, -0.792703}, {-1.670020, 0.099579}, {-0.299869, -0.266431}, {0.605640, -0.814238}, {1.222721, 1.050723}, {-0.467391, -0.124769}, {-0.575869, 0.609053}, {1.713472, 0.570511}, {0.042960, -1.006402}, {1.239476, -0.082176}, {0.378559, -0.955065}, {-0.165652, 0.451352}, {0.429384, -0.053004}, {-0.244308, 1.056232}, {0.830270, -0.183125}, {-0.600558, -1.360258}, {0.171056, -0.003685}, {0.839484, 0.430587}, {-0.553197, -1.112661}, {0.472149, 1.241828}, {0.428034, 0.237235}, {0.611704, -0.377012}, {-0.231170, -0.306880}, {0.087621, 0.844398}, {1.390622, 0.674419}, {0.387463, -0.353450}, {-0.150300, 0.730488}, {-1.062157, 0.504289}, {-0.531514, 0.020223}, {0.128882, -0.065820}, {0.331307, 0.862964}, {-0.725060, 0.793610}, {0.668800, -2.340218}, {0.306622, 0.510434}, {-0.240424, 0.483310}, {0.755874, -0.307130}, {0.307453, -0.534037}, {-0.260084, -0.957092}, {0.030535, -0.356006}, {0.063740, 0.338408}, {0.137347, 0.408912}, {0.071998, -0.512812}, {-0.816655, 0.667604}, {0.206418, 0.459734}, {-0.199134, -1.021477}, {-0.027864, -0.229509}, {0.029766, 0.406308}, {0.263539, 0.950641}, {1.107474, 0.510104}, {0.701356, -0.092664}, {-0.332519, 0.882492}, {-0.259295, 0.542719}, {0.803323, -0.516191}, {-0.810940, 0.828519}, {-0.333099, 0.493898}, {0.803446, 0.041317}, {-0.752852, -0.397360}, {-0.508714, -0.341192}, {-0.998590, 0.444147}, {0.540311, 0.590371}, {0.352505, -0.284619}, {-0.330681, 0.699920}, {-0.428966, 0.610587}, {-1.333091, -0.297171}, {0.345433, -0.821063}, {0.993852, 0.062134}, {0.729285, 0.480559}, {-0.038753, -0.071297}, {-0.388438, -0.398816}, {-0.746620, -0.076653}, {0.345309, 0.817757}, {0.769405, -0.063687}, {0.092044, -0.442898}, {1.029397, -0.869702}, {0.832081, 0.437601}, {-0.374608, -0.269611}, {-0.728890, -1.033769}, {-0.207543, 1.059676}, {0.140337, 0.321861}, {-0.268235, 0.376937}, {0.554032, -1.522496}, {0.302898, 1.115891}, {-0.566679, 1.087246}, {0.209126, -0.299056}, {0.183449, -0.446472}, {0.769257, 1.156924}, {-0.426186, -0.534314}, {1.357257, -0.027091}, {0.125598, -0.148277}, {0.361150, -0.612232}, {0.733645, -0.215266}, {-0.599140, -0.087500}, {0.364386, -0.379064}, {0.106744, 0.427322}, {0.244401, -0.090466}, {-0.086618, 0.290300}, {-0.769588, 1.227312}, {0.410929, 0.406906}, {0.033896, -0.301329}, {1.368098, -1.264228}, {0.265425, 0.246094}, {-1.089731, 0.655995}, {-0.959035, -0.323536}, {-0.177452, 0.299655}, {-1.085650, 0.751856}, {-0.934940, -0.467314}, {0.157832, -1.370121}, {-0.756801, 1.174560}, {-0.238213, 1.484015}, {0.103337, 0.562886}, {-0.883352, -0.457006}, {-0.619941, -0.072602}, {0.827989, -0.576543}, {-0.274512, 0.688768}, {0.192892, 0.046977}, {0.494114, -1.198486}, {0.210812, -1.483980}, {0.068552, -0.412908}, {0.768963, 0.512225}, {0.887015, -0.416106}, {0.069268, -0.161404}, {1.158016, 0.428234}, {1.414889, 0.177849}, {-0.043316, -0.734135}, {1.519925, -0.641341}, {-0.954973, -0.096053}, {-0.627640, 0.832967}, {-0.128482, 0.227255}, {0.096457, -0.172163}, {-1.188885, 0.383040}, {-0.636699, 0.641324}, {0.760031, -0.811875}, {-0.020737, 0.443516}, {0.457384, -0.365880}, {-0.876749, 1.149372}, {0.295054, 0.679878}, {0.023256, 0.103668}, {-0.327805, -0.125698}, {0.020041, 0.216254}, {-0.306899, -0.187019}, {1.085265, 0.158704}, {-0.145690, -0.394788}, {0.338803, 0.342693}, {-0.515034, -1.539775}, {-0.389804, 1.336893}, {-0.094832, 0.858926}, {-0.697567, -0.301372}, {0.304157, -0.457016}, {0.445920, 0.840317}, {0.367189, -0.400123}, {-0.537674, 0.319642}, {0.040484, 0.213835}, {0.486631, 0.235979}, {-0.927168, 0.494577}, {0.095336, 0.538537}, {-0.685255, -0.341503}, {-0.414110, 0.730628}, {-0.249497, -0.384687}, {-0.381906, 0.335050}, {-0.296216, 0.192564}, {0.259756, 0.167208}, {-0.631983, 0.213763}, {-0.107557, 0.031968}, {0.086282, -0.608626}, {-0.520260, -0.616549}, {-0.380245, 1.375046}, {-1.355688, -0.262657}, {-1.404467, 0.037742}, {0.045811, 0.570009}, {-0.416171, -0.129814}, {0.370554, 0.880282}, {0.719642, 1.595834}, {0.056979, 1.643866}, {0.509780, -0.269105}, {-0.035170, -0.008985}, {-0.380304, 0.435292}, {-0.061932, 0.766256}, {0.417917, 0.120335}, {-1.059375, 0.118735}, {0.561525, -0.136216}, {1.044780, 0.316513}, {0.278741, 0.285996}, {0.445276, 1.914646}, {1.135214, -0.056030}, {1.552693, -0.468664}, {0.107992, 0.196631}, {0.010882, -0.782850}, {0.411889, 0.243120}, {1.041102, 0.506174}, {-0.436580, 1.011682}, {0.234764, -1.107368}, {-0.369947, -0.283590}, {0.712020, -0.042864}, {0.256171, -0.289042}, {-0.664674, -0.389437}, {0.501317, -0.199763}, {-0.233973, 0.776302}, {-0.551974, -0.311394}, {-1.213793, -0.063365}, {-0.942542, 0.886742}, {0.120656, -0.927157}, {0.848886, -0.191111}, {-0.085995, 0.712069}, {-0.121119, 0.712586}, {0.795790, 0.039031}, {1.130273, -1.091505}, {-1.009660, -0.084673}, {-1.391243, 1.439570}, {-0.790172, 1.190427}, {-1.055203, 1.031347}, {0.351972, -0.261797}, {0.309700, -0.121583}, {-1.395336, -0.368211}, {-0.242807, 0.043287}, {-0.091725, 1.525055}, {0.222701, -0.585086}, {-0.197990, 1.109946}, {0.683433, 0.234584}, {0.778488, 1.031004}, {-1.728844, -0.828213}, {-0.305833, 0.235194}, {0.839395, 1.013991}, {-0.732283, -1.178569}, {0.751353, 0.525831}, {-0.608151, -0.209578}, {-0.760489, 0.909863}, {-0.941207, 0.596632}, {0.113422, 0.124614}, {-0.677100, -0.845145}, {-2.116992, -1.043945}, {0.443954, 1.264070}, {-0.844221, -0.548022}, {0.073296, 0.266820}, {0.606826, -0.308290}, {-0.142944, 0.057349}, {0.072881, 0.302992}, {-0.294356, -1.221644}, {0.671911, 0.295323}, {-0.409702, -0.847209}, {0.266690, -0.020814}, {1.417976, 0.528433}, {0.294250, -1.224903}, {-0.438673, -0.509542}, {0.044148, 0.398124}, {-0.812297, -0.912451}, {-0.879513, -0.624383}, {0.758342, 0.704452}, {0.563399, -1.164427}, {0.809358, -0.309169}, {-0.076009, -1.386514}, {-0.580469, 0.458582}, {0.513892, 0.214365}, {-0.640728, -0.171872}, {-0.521270, -0.133816}, {-0.843834, 0.906054}, {-1.123661, 0.041336}, {0.082797, 0.087755}, {0.904721, 1.160552}, {-0.238756, 0.127971}, {-1.306804, 0.307469}, {-0.097808, 0.500074}, {-0.007891, -0.206617}, {-1.058789, -1.223922}, {-0.086817, 1.141660}, {-0.672100, 0.422630}, {1.107477, 0.445402}, {-1.048691, 0.148970}, {0.860657, -0.307406}, {-0.075900, -0.772589}, {0.085372, -0.654328}, {-0.402544, 0.348887}, {0.836413, -0.212447}, {0.969845, -0.432787}, {1.678800, -0.719544}, {0.122685, 0.736764}, {-0.610210, -0.231955}, {-0.602630, 0.861072}, {1.689118, -0.524512}, {-0.570388, -0.710299}, {0.359182, -0.302528}, {-0.584968, 0.029896}, {0.376150, -0.101358}, {0.190034, -0.895052}, {-0.083246, 0.352043}, {0.488237, -0.109218}, {0.864959, -0.134808}, {-0.489859, 0.046721}, {-0.285949, -0.556426}, {-0.090628, -0.144285}, {-0.407313, 0.094491}, {-0.754715, 0.269388}, {-0.110048, 0.336987}, {-1.504402, 0.827809}, {-1.144984, 0.736338}, {-0.615585, -0.119038}, {-1.320089, 0.799899}, {0.146051, -1.613330}, {-0.203844, 1.002752}, {1.005593, -1.051012}, {0.590068, 0.881226}, {1.034314, 0.478533}, {-0.807146, 0.527922}, {-1.431626, 1.052176}, {0.254060, -0.588784}, {-0.552606, 0.801991}, {0.571316, -0.099644}, {1.906518, 0.779457}, {0.661004, 0.688072}, {-0.848444, -0.767891}, {-0.446525, 1.557097}, {0.342626, 0.070643}, {1.499481, -0.562495}, {0.474748, -0.065518}, {-1.305470, 0.236428}, {-0.996922, 0.424136}, {0.109899, 0.116446}, {-1.376289, -1.178174}, {1.094583, 0.176159}, {-0.660629, 0.735661}, {0.324773, -0.650471}, {-0.050363, 0.168514}, {1.411432, 0.431589}, {-0.841104, 1.189949}, {-0.090368, 0.422103}, {-0.138836, -0.227462}, {0.251194, 0.456981}, {-0.456550, -1.052269}, {-0.585470, -0.733649}, {0.718189, 0.069608}, {-0.215514, 0.144581}, {-0.295208, -0.293870}, {0.064279, 1.659733}, {-0.639890, 0.107245}, {0.671313, -0.308464}, {0.171154, 0.201673}, {0.530860, -0.395579}, {0.405182, 0.111475}, {-1.105560, 0.477897}, {-0.469701, -0.814646}, {-0.310904, -0.140531}, {0.906292, 0.445761}, {0.641656, -0.711619}, {1.811121, -0.499532}, {0.544038, 0.258314}, {0.240229, 0.023662}, {-0.161251, -0.927410}, {0.526134, 0.501783}, {-0.633589, -0.525689}, {-0.969783, 1.421790}, {0.164651, -1.234975}, {-0.945772, 0.158957}, {0.120218, -0.221355}, {0.234672, -0.016298}, {-0.397618, -0.661839}, {1.072883, -0.141947}, {-1.348040, 0.586734}, {-0.872801, 0.434857}, {-1.430760, 0.165192}, {-0.636803, 0.781150}, {-0.071279, 0.396819}, {-0.298115, 0.418331}, {0.831866, -0.535220}, {0.958718, 0.633147}, {1.412960, -0.748229}, {-0.178002, -0.206609}, {-0.024151, 0.915775}, {1.393923, 0.405981}, {-0.206648, 1.302225}, {0.259960, 0.096155}, {0.842216, 0.222933}, {-0.375179, 0.699708}, {-1.103264, -0.776247}, {0.193353, -1.171155}, {0.205492, 0.076179}, {-0.072841, -1.186499}, {-0.401707, 1.760304}, {-0.205922, 0.764063}, {0.028046, 0.211591}, {0.009746, 0.166249}, {-0.523126, 0.458907}, {0.775557, -0.863099}, {0.597490, 0.287191}, {1.398946, -0.443293}, {-0.610123, -1.801501}, {-0.659803, 0.440813}, {-0.254009, 0.206463}, {0.023678, -1.708605}, {1.336293, -1.666408}, {-0.624224, -0.008318}, {-0.391454, -0.672562}, {0.005607, 0.074204}, {-0.563962, 0.743411}, {-0.451022, -0.173040}, {-0.382636, 0.398129}, {-0.036862, -0.079446}, {-0.008467, -2.296086}, {0.023278, 1.499503}, {-0.064032, -0.525729}, {1.457191, -0.108098}, {0.321643, 0.192680}, {0.121531, 0.798915}, {0.925207, 0.317706}, {1.826658, 0.097183}, {-1.022560, 0.131480}, {-0.318490, 1.086323}, {-1.671511, -0.990183}, {-0.087723, 1.093251}, {-0.866849, 0.094690}, {0.559302, -0.868112}, {-0.607928, -1.491484}, {-0.369056, 0.883585}, {-0.373229, -0.023122}, {-0.971052, 0.792590}, {0.851785, -0.009613}, {-0.460853, 0.096153}, {-0.755498, 0.166030}, {-0.598639, -0.848533}, {0.291127, -0.247983}, {-0.829961, -1.371573}, {-0.887194, -0.038222}, {1.016759, 0.265340}, {-1.203644, -0.226689}, {1.077377, 0.055066}, {-0.711420, -0.799640}, {-0.952350, 1.757540}, {-0.699760, -0.395833}, {0.196095, -0.452552}, {0.858758, 0.082961}, {-0.102536, -0.000287}, {0.343266, -0.165811}, {-0.728940, 0.271092}, {-0.365214, 0.684535}, {0.216959, 0.140539}, {1.180350, -0.419423}, {1.324288, -0.085228}, {0.147214, -0.477679}, {-0.340726, -0.495787}, {-1.273332, -1.550655}, {0.922246, -0.111028}, {0.801098, 0.605313}, {0.636192, 1.656684}, {-0.459339, 0.881863}, {1.781037, 0.234321}, {0.109470, 0.133394}, {-0.004980, -0.810822}, {0.908525, -0.163045}, {-0.974477, 0.323659}, {-0.048603, -0.036304}, {0.325440, -0.342764}, {-0.337570, -1.092254}, {0.903449, -0.284129}, {-0.513390, 0.181617}, {-0.906126, 0.669673}, {-0.047735, -0.670418}, {0.017003, 0.589952}, {0.028141, 0.768896}, {-0.578796, 0.026764}, {0.153556, -1.036369}, {1.736299, 0.027607}, {0.207225, -0.621084}, {0.705813, 0.683555}, {0.613738, -0.279927}, {0.893509, -0.452908}, {0.636020, -0.005940}, {-0.658270, -0.311733}, {-0.134504, 0.070080}, {1.042131, 0.291936}, {-1.287365, 0.847615}, {-0.003671, 0.744938}, {1.467651, 0.342594}, {0.428411, 0.563561}, {-0.684351, 0.323237}, {-1.151725, -1.138706}, {-0.979643, -0.060294}, {-0.950965, 1.226894}, {0.275188, 1.399455}, {1.059926, -0.504133}, {1.403033, -0.687512}, {0.451808, -0.267527}, {0.287162, 0.469132}, {0.667303, -0.852516}, {-0.817966, 0.656727}, {-0.610009, -1.209200}, {-0.303650, -0.565971}, {0.794594, -0.236306}, {0.431590, -0.908313}, {-0.486556, -0.148481}, {0.047972, -0.563498}, {0.402585, -0.280605}, {-0.378654, 1.233252}, {0.353901, -0.875133}, {0.422729, 0.132703}, {0.856809, 1.362334}, {-0.307263, -1.011948}, {-0.301736, 0.329660}, {-1.085452, 0.606158}, {0.652982, -0.949242}, {0.162631, -0.537617}, {-0.965026, -0.836121}, {-0.224588, -0.548422}, {-0.437774, -0.279190}, {0.115997, 1.282330}, {-0.897054, -0.047287}, {-0.798308, 0.372153}, {0.665938, -0.055502}, {-0.287413, -0.908496}, {0.678644, 1.314557}, {-1.449310, 1.522950}, {0.133398, -0.047658}, {1.224299, -0.149895}, {0.441690, -0.259865}, {0.126046, 0.235240}, {-0.966749, -0.417786}, {-0.246070, 0.437277}, {-0.513593, 0.459173}, {1.263919, 0.212954}, {-0.627105, 0.099150}, {-0.594187, 1.118584}, {0.080869, 0.148184}, {0.706184, 0.093108}, {-0.250103, 0.904912}, {-0.085195, 0.370800}, {-0.081942, 1.186957}, {-0.296313, 0.398278}, {0.107458, -0.270042}, {-1.468816, 0.286041}, {-0.248786, -0.194616}, {-0.839973, 0.355437}, {-0.683425, -0.178796}, {-0.338075, -0.537129}, {-0.036752, -0.461836}, {-1.024372, -0.805341}, {0.013059, 0.294161}, {0.921884, 0.535430}, {-1.007252, 1.557665}, {0.542827, -0.917693}, {0.309396, 0.368338}, {1.457432, -0.177952}, {0.233876, -1.087922}, {-0.287049, -0.480668}, {-2.620387, 0.600910}, {1.326669, -0.917157}, {0.401335, 0.923110}, {0.162796, 1.157234}, {0.041788, -0.014345}, {0.072941, -0.425285}, {-0.560475, 0.764890}, {0.016479, 0.416079}, {0.097405, 0.248996}, {0.019340, -0.636057}, {-0.744067, 0.747826}, {0.245503, 0.206129}, {-0.143130, -0.092267}, {-0.030139, -0.746082}, {-0.340620, -0.172249}, {0.574330, 0.097636}, {0.705237, 1.038887}, {0.036829, -1.428994}, {-0.385480, 1.221082}, {0.367570, -0.573062}, {0.850865, -0.205763}, {-1.330905, 0.354961}, {-1.307074, -0.343509}, {-0.957751, -0.442580}, {-0.409731, 0.243503}, {0.567889, -0.604233}, {0.388103, 0.085991}, {0.040627, -0.011142}, {0.077060, 2.004945}, {-0.833086, -0.049453}, {-0.843774, -0.478384}, {0.372355, -0.792844}, {-0.234287, 0.672964}, {0.107062, -0.502565}, {-1.135028, 0.280502}, {0.638347, 0.034212}, {-0.199093, -0.238458}, {0.782282, 1.017529}, {1.389149, 0.234737}, {-0.823454, -0.341639}, {0.651162, 0.121302}, {0.653624, 0.783446}, {0.352699, -0.207281}, {1.238071, -0.754767}, {-0.238806, 0.128663}, {0.262681, 0.361327}, {0.509025, -0.603024}, {0.981913, -0.189391}, {-0.706196, -0.289371}, {1.145942, 0.153677}, {-0.907823, -1.129337}, {0.188763, 0.623059}, {-0.207448, 0.309242}, {-1.436932, -0.449519}, {0.263175, 0.540244}, {-0.483092, -0.058570}, {0.397371, 0.753641}, {0.644110, 0.798701}, {-0.237872, -0.334731}, {0.600366, -0.897091}, {0.710538, -0.133366}, {-1.516116, 0.488503}, {-0.939188, 0.418730}, {-0.827630, -1.305309}, {0.991499, -0.948166}, {-0.499176, -0.031343}, {0.451127, 0.527453}, {-0.546957, -0.430328}, {0.946791, -0.178838}, {1.094307, -0.154938}, {0.609540, -0.054620}, {0.425711, 0.862792}, {1.052342, -0.544269}, {0.017746, 0.359976}, {0.075115, -0.401081}, {0.374648, 1.155752}, {-0.461745, 0.439978}, {0.047619, -0.886710}, {-0.099683, 0.583548}, {-0.334765, 0.050996}, {-0.478206, -1.264766}, {0.516489, 0.865504}, {0.320340, -0.267298}, {-1.324292, 0.440493}, {-0.710460, -0.206828}, {-0.884704, 0.660258}, {-0.262272, 0.394818}, {-1.601370, 0.444466}, {-0.040487, 1.753595}, {0.449335, 0.513686}, {-0.558298, 0.133991}, {-1.303113, -0.149324}, {-0.640885, 0.046974}, {-0.069325, -1.365680}, {0.608970, 0.076633}, {-0.606595, 1.106964}, {-1.357901, -0.599083}, {0.171158, -0.825277}, {-0.169345, 1.197084}, {0.952399, -0.276599}, {-1.216459, -1.814032}, {0.336292, -0.361441}, {-0.391223, 0.027209}, {-0.888571, 1.002162}, {0.433612, 0.093511}, {-0.367321, 1.307070}, {0.857512, -0.309022}, {0.552752, -0.380307}, {-0.133756, -0.251153}, {-0.076031, 0.670133}, {0.150394, 0.146506}, {-0.499016, 0.809971}, {-0.790913, 0.740662}, {-1.123231, -1.005292}, {0.580124, 0.208377}, {-0.466913, 0.115610}, {1.579526, 0.786724}, {0.463652, 0.545059}, {0.363065, -0.468610}, {0.052198, 0.530309}, {-0.533674, 1.126832}, {0.055098, 1.460855}, {0.446183, -0.620585}, {0.061081, -0.558367}, {0.602677, 1.026030}, {-0.214633, 0.288994}, {-0.885402, -0.515751}, {0.666543, 0.166763}, {-0.582033, -0.122415}, {0.363257, -0.093152}, {0.197198, 0.114842}, {0.406922, 1.065118}, {-0.242795, 0.181694}, {1.181767, 0.889092}, {0.397062, -0.428570}, {-1.448884, -0.474985}, {-0.309184, -0.467696}, {0.137783, 2.027669}, {0.474842, -0.884960}, {-1.661712, 0.148843}, {-0.069285, -0.320696}, {-0.170034, 1.251510}, {-0.222496, -0.937833}, {-0.311250, -0.485117}, {-0.383917, -0.251372}, {-0.320437, -0.642387}, {0.206323, -0.019793}, {-0.278823, -0.242762}, {0.680746, -0.243103}, {-0.567863, -0.748655}, {-0.323796, -0.790379}, {0.524243, -1.175681}, {-0.397445, -0.523772}, {-0.474692, -0.477136}, {0.189023, 0.966859}, {0.386555, 0.481977}, {-0.140878, -0.911496}, {0.406182, -0.015365}, {0.102477, -0.746348}, {0.090930, -0.614517}, {-0.086082, -0.376112}, {0.370291, 1.207642}, {1.139898, 0.217497}, {-0.610672, 0.245983}, {-0.174618, 0.833632}, {-0.831968, 0.195580}, {-0.757329, -0.178189}, {-0.452875, 0.648865}, {-0.050510, -0.011244}, {0.607291, 0.053154}, {-0.511124, 0.651127}, {1.482337, -0.900918}, {-0.703173, 0.311134}, {-0.814727, 0.000269}, {-0.500544, -0.108025}, {-0.986775, -1.061037}, {0.121914, -0.452219}, {-0.442473, 1.026816}, {0.763792, 1.515099}, {0.623316, 0.417977}, {-0.212855, 0.306216}, {-0.561318, -0.795493}, {0.576698, 0.693102}, {0.061154, 1.127743}, {-0.887248, -0.434093}, {0.400682, -0.310835}, {0.432078, 0.437754}, {-1.820646, -0.665382}, {-0.545136, -0.481289}, {0.400912, 0.700684}, {0.137771, 0.590814}, {0.811931, 1.048663}, {-0.815412, -0.744414}, {-0.182987, 0.208578}, {-0.481622, -0.883622}, {-1.174057, 0.017304}, {0.762922, 0.651641}, {-0.225956, 0.405115}, {0.170487, 0.754648}, {-0.324751, -0.699111}, {0.508982, 0.579276}, {-0.217381, 0.280138}, {-0.164204, 0.071186}, {1.046480, -0.151789}, {-0.407525, 0.236215}, {0.043528, 0.503335}, {-0.422499, 0.544007}, {0.737522, -1.360706}, {1.348720, 0.519788}, {-0.879691, 0.405074}, {-0.357675, 0.687248}, {-0.860730, -0.689677}, {-1.748928, -1.078704}, {-0.195426, -1.049862}, {-0.035495, -0.350232}, {1.033713, -0.030587}, {0.800092, -0.110899}, {-0.305951, 0.274492}, {-0.832381, -0.825501}, {1.297737, 0.530891}, {-0.024356, 0.967573}, {-0.449962, 1.296328}, {0.341683, -0.869522}, {-1.470761, 0.197663}, {-0.936318, -1.271953}, {0.048144, -0.615236}, {0.378908, 0.844420}, {0.461083, -0.366872}, {0.047960, 0.407828}, {-0.840079, -1.095449}, {-0.027915, 1.084483}, {0.674601, 0.522046}, {1.931610, 0.765981}, {-0.125784, -0.336877}, {0.019115, -1.481554}, {0.820840, -0.447176}, {0.707047, 0.929830}, {0.958282, -0.396113}, {-0.580240, 0.094636}, {-0.174754, -1.196160}, {-0.860568, -0.091731}, {0.523920, -0.030573}, {0.274479, -0.049813}, {0.153459, 0.249274}, {0.533358, 0.444977}, {-1.241255, 0.245974}, {-1.012174, -0.027701}, {-0.395522, -0.193917}, {-0.972526, 0.180350}, {0.430804, -0.833766}, {-1.011518, 0.292716}, {0.207684, -0.205800}, {0.044858, 0.152791}, {0.448157, -0.030646}, {-0.499634, -0.262260}, {-0.143806, -1.010803}, {0.886031, -0.336787}, {-0.362530, -1.768263}, {-0.242831, -0.154468}, {0.734717, 0.111474}, {0.072613, 0.508828}, {-1.899793, 0.301018}, {0.090072, 0.247977}, {1.285664, 0.732956}, {-0.135188, 0.142834}, {1.273538, -0.920904}, {0.221604, 0.753942}, {0.117900, 1.060812}, {-0.232774, -0.083558}, {-0.425926, 0.686408}, {-0.340529, -0.169042}, {-1.070367, -0.239810}, {0.173529, -0.065984}, {-0.933640, 0.004310}, {-0.566267, 1.379593}, {0.734686, -0.766672}, {-0.413294, 0.709294}, {0.595004, -1.135705}, {0.718267, -0.281773}, {0.106468, -0.863281}, {-1.145502, 0.206171}, {0.887536, -0.242405}, {-0.075956, 0.156573}, {-0.567216, -0.288216}, {0.664645, -0.362856}, {0.547459, -1.799647}, {-0.241719, 0.821927}, {-0.034155, 0.250263}, {-0.046388, -0.235086}, {0.419359, 0.310763}, {-0.215888, -1.367215}, {0.034387, 1.044299}, {-0.358005, 0.645426}, {0.326152, 0.748784}, {0.202163, -1.123275}, {0.690767, -0.848466}, {-0.125006, -0.255902}, {0.162892, -0.345699}, {-0.955042, 0.294080}, {0.083320, 1.880625}, {-1.198282, 0.804137}, {0.587054, -0.958859}, {-1.601116, -0.725511}, {1.139292, -0.045379}, {0.203917, 0.685789}, {-0.493037, 0.458789}, {-0.031010, -0.106568}, {-0.429805, 1.119367}, {-0.528015, 0.735593}, {-0.134197, -1.255463}, {-0.448291, -0.262008}, {-0.050223, 0.690944}, {-0.326287, 0.961302}, {0.124462, -0.571389}, {-1.086006, 0.724509}, {0.209547, 1.056945}, {-1.293691, 0.471514}, {-0.003896, 0.567797}, {0.183588, -0.440099}, {0.728438, -0.316034}, {0.626752, -0.654537}, {-0.323843, -0.581490}, {-0.584120, 1.235448}, {-0.724753, -0.357822}, {0.651802, -0.255045}, {1.066699, 0.145706}, {-0.327084, -0.703887}, {0.726433, 0.902326}, {0.615929, -0.468777}, {0.215638, 0.025393}, {0.133688, 0.312972}, {1.480107, 0.472599}, {-0.422097, -0.160696}, {-0.044013, -0.556906}, {0.614888, -0.377907}, {-0.064303, -0.363883}, {0.417722, 0.242693}, {-0.610622, -0.349784}, {0.274353, 1.229638}, {1.376876, -0.661918}, {0.065799, 0.192942}, {-0.985618, 1.632529}, {0.007131, -0.681075}, {0.034166, -0.337426}, {-0.725304, -0.279474}, {-0.730621, -0.266983}, {-0.843057, 0.478930}, {0.474710, -0.454256}, {-0.507851, -1.321088}, {-0.017476, -0.794130}, {-1.038323, 0.066833}, {0.385382, 1.225797}, {0.021934, -0.410591}, {-1.010484, -0.669754}, {0.429793, 1.532827}, {0.636827, -0.288977}, {-0.534265, -0.646029}, {-0.844287, -0.564450}, {-0.396490, 0.315667}, {-1.273186, 0.218433}, {0.417662, -0.018864}, {0.462506, -1.253567}, {-0.182622, -0.273477}, {-1.579637, 0.949574}, {0.433213, -0.037784}, {-0.846671, 0.082560}, {0.662308, 0.650516}, {0.045595, -0.496667}, {0.119091, 0.014749}, {0.608458, 0.837623}, {-0.687084, -0.195381}, {-0.018589, 0.789815}, {-0.298420, 0.261702}, {-0.040271, -0.194730}, {0.620631, 0.613639}, {-0.937617, -1.049478}, {-1.053561, -0.076996}, {-0.146382, 1.050599}, {-0.020837, 0.355688}, {0.201458, 0.287587}, {2.218790, 0.476933}, {-0.104763, 0.355760}, {-0.479467, 1.109721}, {-0.893756, -0.550251}, {0.956522, -0.432295}, {-0.194464, 0.764093}, {-0.704136, 0.235401}, {-0.654628, -0.706623}, {-0.493649, -1.139754}, {1.131061, -0.875211}, {0.422646, 0.452794}, {1.210811, 0.230644}, {0.529746, 1.430776}, {0.460853, -0.100968}, {0.145607, 0.417836}, {-0.183425, 0.671501}, {0.712047, 0.585763}, {0.667523, 0.427398}, {0.083714, 0.241186}, {0.603047, -0.437378}, {0.671836, -0.108031}, {0.147556, 1.611462}, {-0.474514, 0.338308}, {0.669331, -0.582147}, {-0.518075, -1.063090}, {-0.404972, 1.037375}, {0.392642, 0.132706}, {0.091281, -0.677244}, {-0.101493, 0.595298}, {-0.273278, -0.149243}, {-0.056904, 0.119955}, {-1.155884, -1.080464}, {-0.068053, -0.148710}, {0.578176, 0.409176}, {0.840193, 0.143279}, {-0.240609, -0.502595}, {-1.242000, -0.441204}, {1.109439, 0.606569}, {0.055563, -0.064248}, {-0.149710, 0.672466}, {0.726856, -0.310854}, {-0.653160, -0.652705}, {0.278598, 0.458304}, {1.079266, 0.059011}, {-1.419938, 0.322182}, {0.945599, 0.108086}, {-0.751556, 0.294139}, {0.427620, 0.212390}, {-0.069527, 0.242822}, {0.278856, -0.156601}, {-0.065200, 0.118212}, {-0.195535, -0.019769}, {-0.420603, -0.282551}, {-0.907453, 0.158124}, {0.113203, -0.260452}, {0.108842, -0.457941}, {0.325193, 0.172876}, {0.291742, -1.615476}, {1.111341, 0.223062}, {0.355686, 0.290422}, {0.634955, -0.443257}, {-0.288282, -0.326955}, {0.392507, -0.445702}, {-0.079780, -0.200318}, {0.358629, 0.085606}, {-1.037372, 0.489174}, {-0.650397, -0.686827}, {1.025516, -1.009867}, {0.704492, -0.014842}, {-1.937672, 0.038744}, {1.043168, -0.182518}, {0.767195, 1.172210}, {-0.973759, 0.495782}, {0.727765, -0.454134}, {-0.463311, 0.027464}, {0.461195, 0.676168}, {0.563002, -0.443334}, {0.837410, 1.297797}, {0.530937, 0.527558}, {-0.207558, 1.073655}, {0.017685, -0.129331}, {-0.434984, -0.756967}, {1.186167, 0.330663}, {-0.494215, -0.229928}, {-1.967930, 0.423566}, {0.085717, 0.490676}, {0.579028, 0.081474}, {-1.165809, 1.066751}, {0.155616, -0.207882}, {0.824000, 0.024005}, {-0.650314, -0.289259}, {0.289677, 0.562463}, {0.084380, -0.741257}, {-0.185975, -1.002760}, {-0.258544, -1.231110}, {-0.680721, -0.132215}, {-0.126178, -0.346100}, {0.059501, -0.556818}, {0.257426, 0.740194}, {0.209590, 0.920746}, {0.278486, 0.751635}, {-0.266518, -0.406470}, {0.747083, 0.368274}, {0.361351, 1.035953}, {0.730710, 0.834248}, {-0.629610, -0.456521}, {-1.063318, 0.238140}, {-0.239986, 0.455673}, {0.045907, 1.094522}, {-0.098907, -1.444712}, {0.346836, -0.959861}, {-0.120778, -0.989386}, {0.411690, 0.088654}, {-0.269997, 0.408287}, {0.840135, -0.066117}, {-0.488370, 1.718434}, {0.875784, 1.132982}, {-0.423667, -0.074866}, {0.406809, -1.179861}, {0.214059, -0.303153}, {-0.302193, 1.101238}, {0.868983, -0.955911}, {-0.507030, -0.093825}, {0.906214, 0.198565}, {-1.340024, 0.138617}, {-0.383054, -0.069114}, {-0.486159, -0.087876}, {-0.469249, 0.620882}, {-0.278926, 0.596592}, {-1.669627, 0.194691}, {0.742352, -0.614247}, {0.718457, -1.097553}, {-1.226771, 0.059541}, {-0.753392, -1.289320}, {-0.209317, -0.130344}, {0.481910, 0.355924}, {-0.316461, 0.620936}, {-1.244952, -0.290661}, {0.215579, -0.017983}, {-0.469612, -0.348379}, {-1.275008, 0.509724}, {-0.522839, 0.762522}, {1.326882, 0.479414}, {0.226020, -0.210263}, {-1.179333, -0.508178}, {-0.818269, -0.304733}, {-0.173224, -0.439298}, {-0.536131, 0.998854}, {0.607704, 0.360449}, {0.006800, 1.240915}, {-0.835128, -0.346159}, {0.147648, 0.135792}, {-0.724952, -0.728993}, {0.387685, -0.535468}, {0.119265, 0.577041}, {0.496673, -0.247011}, {-0.506871, 0.140888}, {-0.556531, -0.131979}, {-0.286395, 0.267888}, {-1.535815, 0.901937}, {-0.025959, -0.061265}, {0.571857, 0.076721}, {0.378659, -1.266500}, {0.474031, -1.498596}, {-0.010007, 0.157154}, {1.036847, 0.749449}, {1.036444, 0.841654}, {0.548594, -0.632059}, {0.368966, -1.003432}, {0.570837, -0.124028}, {0.341200, 0.495283}, {1.122887, 0.046649}, {0.748775, -0.646888}, {0.114935, 0.407391}, {0.016391, -1.068782}, {0.276187, 0.082486}, {0.328695, -0.203988}, {-0.955191, -0.006992}, {-0.954723, 0.976115}, {0.130024, 0.006814}, {1.178728, -1.134652}, {-0.280919, 1.145315}, {-0.074035, -0.138700}, {-0.885872, -0.173488}, {-0.052446, 0.391385}, {0.061407, -0.036012}, {-0.178374, 0.207062}, {1.539364, -0.706954}, {0.683015, -0.203145}, {0.214058, -0.228743}, {0.816114, -0.336901}, {1.083669, 0.601556}, {0.243885, 0.366600}, {-0.376040, 0.342849}, {0.049959, -0.020917}, {-0.249481, 1.559691}, {0.260203, 0.448585}, {0.400041, 0.204926}, {0.103935, -0.828622}, {-1.743587, -0.564881}, {1.227175, -0.006252}, {0.517290, 0.681785}, {0.041937, -1.277299}, {0.884991, 1.022953}, {-0.395354, 0.177096}, {0.659057, -0.417478}, {-1.433312, -1.086898}, {-0.307188, 0.459477}, {1.083389, -0.395616}, {0.931207, -0.529729}, {-0.691098, -0.682569}, {-0.107824, -0.121179}, {0.162237, 0.278125}, {-0.187331, -0.078223}, {0.539435, -0.468066}, {-0.037026, -0.169309}, {-0.032828, 0.774350}, {1.004977, 0.207932}, {-1.375620, -0.465708}, {-0.853797, -0.492372}, {0.857050, -0.067048}, {-1.358066, -0.056983}, {0.205638, 0.517628}, {0.134978, -1.457460}, {-0.628057, -0.198079}, {1.020819, 0.168767}, {-0.660697, 0.430602}, {-1.207856, 0.350159}, {0.211552, 0.334102}, {1.569613, 0.644036}, {0.625801, -0.806877}, {0.753956, -0.280829}, {0.800271, 0.796731}, {-0.157847, 0.366712}, {-0.520191, -0.177564}, {-1.880639, 0.111041}, {0.565178, -0.025211}, {0.867760, 0.267054}, {-1.699681, 0.127302}, {0.925459, 0.105993}, {-0.381951, -0.290209}, {-0.008579, -0.672418}, {-0.226066, 0.111930}, {-0.511046, -0.180645}, {-0.150570, -0.920002}, {0.456257, 1.157604}, {0.285512, -0.521834}, {0.197973, 0.250159}, {-0.574980, -1.048345}, {0.065042, 0.539600}, {-0.080347, 0.440878}, {0.334152, 1.807252}, {0.870739, -0.406652}, {0.176466, 0.116783}, {-0.373632, -0.833253}, {-0.411070, -0.622612}, {0.490742, 0.472114}, {-0.144185, 0.440259}, {-0.911075, 1.395547}, {-0.963359, 0.070059}, {0.472861, 0.954686}, {0.144494, 0.457410}, {0.724328, 0.010123}, {1.405964, 0.660263}, {0.629468, -1.148403}, {-0.365955, 0.044107}, {1.302156, -0.349987}, {0.559796, 0.286848}, {-1.408563, 1.083378}, {0.176937, 0.040345}, {-0.339737, -1.036991}, {-0.000428, 0.120110}, {0.174082, -0.440745}, {-0.812662, 0.308663}, {-0.344535, 0.731337}, {-0.687735, -0.481504}, {-0.167853, 0.616992}, {-0.032443, -0.661320}, {-0.744886, -0.239760}, {0.372373, 0.085475}, {-1.440036, 0.895442}, {-0.277006, -0.398549}, {-0.370569, -0.322067}, {0.103481, -0.007568}, {-0.106426, 0.323058}, {-0.483987, -0.268954}, {0.292168, 0.040605}, {0.074066, 0.134120}, {0.153317, -1.287651}, {-1.203918, -0.967637}, {-0.317271, 0.386501}, {0.954049, -0.099558}, {0.462192, -0.061542}, {-0.062967, 0.369906}, {-0.884488, 0.712304}, {0.186711, -0.348097}, {-0.352553, -1.659383}, {-0.486478, -1.015527}, {0.251005, 0.060654}, {-0.383225, 0.840563}, {-0.808342, -0.888829}, {-0.227572, 0.129202}, {-0.314270, -0.775019}, {-1.545768, -0.570873}, {0.545677, 0.182432}, {0.081540, -0.429030}, {-0.106779, -0.216418}, {0.450044, 0.045841}, {0.905832, -0.902027}, {0.457874, -0.063177}, {0.116610, -0.016288}, {-1.167063, 0.372052}, {0.982923, -0.259440}, {-0.922239, 0.212051}, {-0.529454, -0.435260}, {-0.213398, 0.659482}, {0.235217, -0.582746}, {0.622280, 0.032259}, {0.593666, 0.351868}, {-0.873997, -0.448480}, {-0.945217, 1.031911}, {-0.039626, 0.351279}, {1.166869, -0.022261}, {0.104525, 0.891744}, {-0.833076, 0.326978}, {1.038616, 0.221851}, {0.210548, 0.797819}, {-0.610088, -0.922245}, {-0.343548, -0.954441}, {0.159815, -0.755620}, {-1.254248, 0.310110}, {0.112621, 0.338769}, {0.509586, -0.114230}, {0.458902, -0.012483}, {-0.077531, 0.845512}, {-0.024838, -0.325136}, {0.099325, -0.797450}, {-0.149184, 0.461116}, {-0.229381, -0.113607}, {-0.790994, 0.906154}, {1.110214, 0.040753}, {-0.312241, 0.102262}, {-0.492226, -0.169707}, {0.154426, 0.445431}, {0.915648, 0.371803}, {-0.997727, -0.598569}, {-0.694967, -0.288512}, {0.440323, -0.276589}, {-0.606794, -1.515034}, {-0.336494, 0.022852}, {0.119489, -0.371741}, {-0.695836, 0.229833}, {-0.161236, -1.197827}, {0.902952, 0.341914}, {-0.478975, -0.883342}, {0.010275, 0.473193}, {-0.257723, 0.343809}, {-1.647461, -0.658151}, {1.203630, 0.311324}, {-0.520208, -0.077408}, {-0.042387, -0.201717}, {0.732624, -0.442372}, {-0.025341, 0.263186}, {-0.585464, 0.089537}, {-1.270729, 0.861931}, {0.365129, 0.609487}, {1.133617, -1.306806}, {-0.010529, -0.948779}, {-1.495597, 1.148781}, {-0.029070, -0.136818}, {0.206800, 0.008509}, {-0.794964, 0.295312}, {0.338531, -0.540493}, {-0.405923, -0.474873}, {0.979782, 0.070233}, {-1.358570, -3.041284}, {-2.044437, -0.337722}, {0.467839, -0.830266}, {0.885020, 0.766034}, {0.628159, 0.150322}, {0.155384, 1.033378}, {0.499468, -0.472419}, {-0.017379, 0.135709}, {1.044006, 0.107473}, {0.069893, 1.038512}, {0.052506, -0.202886}, {0.725175, -0.396198}, {-1.435707, 0.436358}, {-0.537693, 0.135514}, {0.874197, 1.596120}, {0.692789, -0.072948}, {1.514427, 0.422330}, {0.356388, 0.004602}, {-0.424132, 1.742008}, {1.161560, 0.621060}, {-1.253631, 0.873246}, {0.830477, -0.113869}, {-0.089117, 1.005543}, {-0.119315, 0.415317}, {0.530735, -0.551322}, {0.468530, -0.096115}, {0.465401, 0.845196}, {-1.226917, 1.079224}, {-0.340842, -0.903031}, {1.019357, -0.845306}, {-0.542261, -0.981142}, {0.745563, -0.146286}, {0.146678, 1.522813}, {0.489313, 0.877646}, {0.622197, 0.410875}, {-0.332401, 1.742686}, {-0.530628, 0.179136}, {0.214410, 0.379434}, {-1.320653, 0.366324}, {-0.135837, -0.625588}, {0.018205, 0.579573}, {0.113747, 0.193869}, {0.826568, -0.342809}, {0.517217, 0.388353}, {0.511517, -1.261484}, {0.069570, 1.590514}, {0.524966, 1.277127}, {-0.604102, 0.356745}, {-0.289114, 1.192349}, {-1.224444, 0.781320}, {0.797974, 0.660886}, {0.358733, 0.016464}, {-0.201142, 0.232487}, {1.024496, -0.588845}, {-0.513361, 1.122263}, {-0.918694, 0.121980}, {-0.195506, -0.020095}, {0.331440, -0.501190}, {0.266567, 1.455573}, {0.740847, 0.632486}, {-0.395862, 0.862711}, {-0.542915, -0.406950}, {-0.187643, 0.516822}, {-0.777298, -0.688838}, {1.561877, 0.175345}, {0.042752, 0.261983}, {-0.477959, 0.013431}, {-0.378112, -0.612150}, {0.517772, -0.504068}, {0.534609, -0.171057}, {0.581429, -0.511870}, {1.573305, 0.690322}, {0.371148, 0.371632}, {0.775532, -1.827403}, {0.699914, -0.106911}, {-0.563281, -0.400668}, {0.120288, 0.692679}, {-0.216988, 0.919587}, {-0.032172, -0.042166}, {0.257666, -0.073362}, {-0.829215, 0.807044}, {0.043528, -0.370050}, {0.726681, -0.109935}, {0.199629, -0.260646}, {-0.064800, 0.952449}, {-0.366864, 0.342468}, {-0.213579, 0.473732}, {0.475745, -0.522349}, {-0.578518, 0.470114}, {0.131571, 0.070506}, {0.199747, 1.295036}, {0.163703, 0.315885}, {0.730185, -0.561563}, {0.155160, -0.466836}, {0.209743, -0.938351}, {-0.332044, 0.339460}, {-0.334248, -0.438717}, {-0.177906, -0.445812}, {-0.403888, 0.515655}, {-0.529417, 1.448326}, {0.751148, -0.069385}, {-0.543366, 1.195889}, {-0.565148, 0.963886}, {1.462286, -0.220984}, {1.482440, -0.287540}, {-0.577094, -0.718976}, {-1.677120, -0.951714}, {1.349836, 0.330001}, {0.047546, -0.005764}, {-0.087343, -0.860869}, {0.969527, -0.058331}, {0.640526, -0.460373}, {-0.620476, 0.177907}, {0.646331, 0.313684}, {-0.865669, -0.430395}, {-1.109093, 0.284577}, {0.623313, 1.066345}, {-0.942186, 0.297467}, {0.386541, -0.886178}, {-1.337573, 0.110937}, {0.411021, -0.972933}, {-0.731420, -1.565217}, {0.115932, 0.032862}, {0.647009, -0.702312}, {0.368068, 0.376174}, {1.769808, -0.289011}, {-0.186158, 0.373612}, {-1.327035, -0.080788}, {-1.039836, -0.777259}, {-0.020857, 0.135255}, {-0.342180, -0.853006}, {0.599834, 0.159697}, {-1.190980, -0.408167}, {-0.953700, -0.055447}, {0.242964, 0.103171}, {-0.330887, 0.495570}, {-0.736320, -0.023509}, {0.572782, 0.531094}, {1.955315, 0.650087}, {0.489044, -0.003831}, {-0.573902, -1.761131}, {-0.258057, -0.141214}, {0.092342, 0.110264}, {0.813360, 1.816915}, {1.221027, -0.215925}, {-0.103234, 0.313383}, {0.078699, -0.198435}, {-0.581828, -0.816310}, {0.283286, -0.081822}, {0.302095, -0.251803}, {-0.406478, -0.593376}, {-1.326431, 0.230793}, {-0.180609, 0.370457}, {0.552601, 0.177024}, {-1.333465, 0.065461}, {0.599845, -0.602277}, {1.077753, -1.104753}, {0.809628, 0.038772}, {0.024962, -0.314990}, {-0.988391, 1.568123}, {0.338240, 0.004098}, {-0.412518, 0.731701}, {-0.313828, 0.854789}, {1.524806, -1.562020}, {-1.169150, 0.061988}, {-0.463460, -1.121006}, {-0.688317, 0.548066}, {1.066755, -1.657319}, {-0.098140, -0.618434}, {0.432144, -0.550599}, {-0.078023, 1.897759}, {0.527062, -1.127072}, {0.386297, 0.274681}, {1.092527, -0.621702}, {0.544097, -0.200129}, {0.619517, 0.186827}, {-0.894467, 0.710752}, {-0.516944, -0.474122}, {-0.178624, -0.241885}, {-1.103791, 0.206812}, {-0.750328, -0.465599}, {-1.049783, -0.059999}, {-0.238415, -0.584913}, {0.841484, 0.498381}, {0.772949, -0.257598}, {0.631129, -0.010723}, {0.638257, -0.000321}, {0.484532, -1.725015}, {0.429875, 0.794608}, {0.098118, -0.679536}, {0.252370, -1.123608}, {0.256356, 0.128045}, {-1.654829, -0.677293}, {0.341717, 0.901616}, {-1.530022, -0.071391}, {1.584247, 0.385784}, {-0.134925, -0.596211}, {-0.306823, -0.640632}, {0.680138, 1.001415}, {0.855363, 0.466031}, {1.047399, -0.967652}, {0.874714, 0.771008}, {0.023131, 0.930381}, {-1.094853, -0.870464}, {0.718843, -0.226276}, {-0.135767, 0.433719}, {0.058625, -1.398816}, {-1.478618, -0.590113}, {-1.706239, -0.238334}, {-0.278994, 1.505897}, {-0.649649, 0.049328}, {0.357204, -0.249715}, {-0.178715, 0.811732}, {1.233743, 0.677688}, {0.404137, 1.022936}, {0.656525, 0.330724}, {0.607732, -1.362354}, {-0.127905, -0.419755}, {-0.152615, -0.700967}, {-0.352367, -0.973191}, {-0.720073, -1.323530}, {-0.127801, -0.477660}, {-0.092400, 0.491723}, {0.341948, -0.814883}, {-0.040942, -0.194408}, {-0.510947, 0.165069}, {-0.386948, 0.041816}, {-0.391543, 0.095043}, {0.814066, -0.413210}, {0.652218, -0.465334}, {-0.144483, 0.331067}, {0.230318, -0.335014}, {-0.085459, -0.090830}, {-0.458532, 0.005534}, {0.602005, 0.549709}, {-0.656597, -0.039494}, {-0.529460, -0.586545}, {0.459330, 0.016754}, {-0.902031, -0.240948}, {-0.046894, 0.151840}, {0.377669, 1.389795}, {0.397125, 0.524265}, {-0.388316, 0.810665}, {1.536130, -0.018437}, {-0.324880, 0.392937}, {-0.402622, 1.137794}, {0.298408, -0.266189}, {0.681114, -0.071383}, {-0.272913, -0.092683}, {1.575728, 0.022775}, {0.194788, -0.335136}, {0.519039, 0.062735}, {-0.764728, 0.146452}, {0.236471, -1.427158}, {0.995246, 0.767302}, {-0.349678, 0.736569}, {0.118835, 0.421198}, {-1.078159, 0.402561}, {-0.764007, -0.533382}, {-0.455951, 1.354001}, {0.541724, 0.107812}, {0.517193, 0.011113}, {0.192692, 0.927513}, {-0.639680, -0.461272}, {-0.497412, 0.005693}, {0.035037, 0.968771}, {0.427440, -0.147090}, {-1.412140, -0.121905}, {0.344535, 0.038231}, {0.256825, 0.088627}, {-0.859248, -0.787997}, {-0.127159, -1.105511}, {1.125815, -0.063713}, {-1.355366, -0.913897}, {0.567869, 0.633445}, {0.784268, -0.756031}, {-0.417336, 0.300105}, {-1.430904, 0.105505}, {-0.042593, -0.153161}, {0.213039, 0.587233}, {0.028565, 0.513513}, {-0.041316, -1.552297}, {0.458964, 1.495922}, {0.559308, -1.214681}, {1.049392, 0.519859}, {0.290751, 0.410285}, {-0.235969, 0.075235}, {0.827775, 0.234283}, {-0.353105, 0.368130}, {1.152140, 0.124431}, {-0.676463, -0.451120}, {0.431903, 0.156522}, {-1.146142, 0.821383}, {-0.231929, 0.460321}, {0.331103, 0.291431}, {-0.486103, -1.028895}, {0.247142, -0.577083}, {0.643317, 0.642730}, {-0.038357, -0.731389}, {-0.529627, -0.518347}, {-0.458770, -0.602541}, {0.717108, -1.502174}, {1.639891, -0.046797}, {0.367167, -0.575410}, {0.200877, -0.125050}, {1.282175, -0.037682}, {-0.094635, -0.888363}, {0.413420, 1.283817}, {0.132756, 0.300671}, {-0.367404, 1.005577}, {0.511375, -0.097647}, {-0.375077, 0.423522}, {0.382736, 0.001469}, {0.044349, -1.190297}, {-1.190740, 0.471491}, {0.835772, 0.424912}, {1.030520, 0.464877}, {-0.529949, 0.824068}, {-0.099363, 0.508190}, {-1.371466, 0.242051}, {0.916338, -1.128584}, {0.785841, -1.448629}, {0.407546, 0.603846}, {0.575293, -0.166221}, {0.886545, 0.439648}, {-0.226133, 0.961934}, {-0.165523, 0.076377}, {-0.678735, -0.898540}, {-0.053888, 1.308609}, {0.584848, 0.060583}, {0.083871, -0.233156}, {0.004868, 0.283304}, {0.552259, 0.868118}, {0.500338, -0.610468}, {-0.043386, -0.346571}, {-0.498805, 0.288491}, {0.438704, -0.106490}, {0.415201, -0.503631}, {0.032692, 0.644929}, {0.101192, 0.299544}, {0.381060, -1.411974}, {-0.859828, -0.958490}, {-0.680687, 0.892740}, {0.112933, 0.002252}, {-0.278048, -0.241376}, {-2.217421, -0.418946}, {0.671425, 0.447137}, {1.852803, -0.254499}, {-0.777766, 0.350337}, {0.058883, -0.792590}, {1.819335, 0.931958}, {-0.140655, 0.687205}, {-0.454620, 0.532005}, {0.520396, -0.641183}, {-0.614732, -0.794939}, {-0.555090, 0.194826}, {-0.867211, -0.430899}, {0.114316, 0.279198}, {0.906085, 0.126300}, {-1.652861, -0.398311}, {0.720231, 0.310120}, {0.616857, -0.224845}, {-0.355100, 0.825606}, {-0.443765, -0.588850}, {0.548479, 0.069557}, {0.311662, 0.550548}, {1.211246, -0.191114}, {-0.220659, 1.110956}, {-0.359286, -0.164330}, {0.789602, -0.070392}, {0.566583, -0.827020}, {0.595349, -0.690691}, {0.189841, 0.431550}, {-0.289571, -0.607088}, {0.621366, -0.321307}, {0.186891, -0.852539}, {0.232188, -1.220607}, {-0.612862, 0.059821}, {-0.105208, 0.298759}, {-0.329366, -1.318732}, {0.320709, 0.096560}, {0.140400, -1.134450}, {-1.507197, -1.015648}, {0.397460, 0.411895}, {-0.815200, -0.096281}, {0.168722, 0.671290}, {-0.859969, 0.821381}, {0.171885, -0.220966}, {-0.093656, -1.361741}, {-0.527003, 0.899775}, {0.390672, -1.707368}, {0.729568, -0.255314}, {0.688398, 0.539302}, {-0.397821, 0.236694}, {-0.255357, 0.443405}, {1.355847, 0.620758}, {1.705390, 0.158142}, {1.290421, -0.602823}, {-0.732108, -0.318124}, {0.541361, 0.046519}, {-0.502741, -1.050050}, {0.252136, -0.639033}, {0.878938, 0.856368}, {-0.690850, 1.354681}, {0.104990, 0.071316}, {0.447853, -0.020789}, {-0.009859, -0.006837}, {-0.719030, 0.285837}, {-0.045532, 1.180974}, {-0.413249, -0.120820}, {0.590697, 0.086396}, {-0.312210, 0.058620}, {0.038969, -0.080060}, {0.668350, 0.562553}, {-0.339013, 0.060135}, {-0.907438, -0.823162}, {-0.119806, -0.877603}, {-0.478883, -0.143292}, {-0.320699, 0.212539}, {0.100108, 0.485710}, {-0.392466, -0.806866}, {0.001016, 0.076458}, {-0.592774, 0.343524}, {1.462533, -0.066516}, {-0.569967, 0.315363}, {-0.481084, 0.337295}, {-0.087391, 0.658159}, {-0.302733, 0.653680}, {0.413127, 0.535186}, {-0.582368, 0.582489}, {1.018942, 0.463516}, {-0.061175, -0.350878}, {-1.630071, -0.232123}, {1.208054, 0.322525}, {0.230705, 0.582932}, {-0.217847, 0.575781}, {0.893442, 0.630389}, {-0.174874, 0.390805}, {0.956859, 0.734961}, {0.438679, 0.368285}, {1.409507, -0.272855}, {-0.021050, 0.944726}, {-0.227605, -1.004858}, {0.346623, 0.582952}, {0.576312, 0.318435}, {1.094793, -0.629266}, {-1.088802, 0.041459}, {-0.500393, 0.442719}, {-0.271167, 0.374385}, {0.241921, 0.418248}, {-0.627281, -1.002708}, {-1.147085, -0.423343}, {0.728013, -0.479764}, {0.055815, -0.515315}, {0.496916, 0.348340}, {0.640592, -0.044396}, {-0.823480, -0.081510}, {-0.658153, 0.363340}, {0.549048, 0.679255}, {0.379224, 0.498001}, {0.531963, 0.993990}, {0.503592, 0.389701}, {-0.354800, 0.131830}, {0.447769, -0.726391}, {-0.226749, 0.070274}, {1.525876, 0.048507}, {0.423583, 0.515601}, {0.281501, 0.333000}, {-0.581471, -0.653560}, {0.356261, 0.210534}, {-1.831239, -2.179264}, {-0.207313, 2.443682}, {0.581231, 0.219500}, {0.244048, -0.433631}, {0.234179, -0.519635}, {0.321517, -0.667325}, {0.331807, 0.023669}, {0.150836, 0.951006}, {0.850205, -0.427679}, {-0.266342, 0.492303}, {0.421612, -0.671137}, {0.097019, -0.343781}, {0.353095, 0.071768}, {0.399844, 1.140014}, {-0.092161, 0.421038}, {0.951596, 0.997798}, {0.233831, -0.888818}, {-0.914231, 0.468451}, {-0.320417, 0.768939}, {0.010017, -0.067670}, {-0.641204, 0.499319}, {0.464514, -0.342039}, {0.806917, 0.412848}, {-0.389667, -0.723328}, {1.504390, -0.862004}, {-0.077352, -0.895115}, {-0.618964, 0.190222}, {0.301279, 0.239691}, {-1.242100, 0.120618}, {0.930139, 0.521412}, {0.529753, -0.277023}, {-0.884634, -0.158847}, {0.636505, -0.971609}, {-0.835765, 0.991747}, {0.277340, -0.861971}, {1.021073, 1.142868}, {-0.705786, 0.603524}, {0.156000, -0.793177}, {0.066289, -0.265637}, {-1.395549, -0.477809}, {-0.398661, 0.403177}, {-0.459976, -0.843605}, {0.984018, -0.852629}, {0.218633, -0.126745}, {-0.282519, 0.221063}, {-0.030076, 0.666546}, {-0.069338, 0.189674}, {0.437178, 0.500713}, {0.391939, 0.145078}, {-1.572762, 0.700506}, {-1.015432, 0.377474}, {-0.840338, 0.937558}, {0.342004, 0.167650}, {-0.060252, 0.117581}, {0.472117, 0.635502}, {0.104385, -0.161998}, {1.188391, -1.588144}, {-1.256569, -0.943382}, {-1.338045, -1.795011}, {0.423467, -0.663819}, {0.202217, 0.684588}, {0.233240, 1.011311}, {-0.758494, 0.433929}, {0.926118, -0.054441}, {0.564314, -0.974460}, {0.726559, -1.559723}, {-0.541272, -0.563339}, {0.749341, -0.459923}, {-0.592150, -0.292360}, {-1.425995, -1.199563}, {0.630984, 0.173879}, {-0.496013, 0.849446}, {0.730005, -0.623744}, {0.339948, 0.700938}, {0.318261, -1.431390}, {0.179177, -0.081351}, {0.422595, 0.110693}, {0.525183, -0.014276}, {0.791773, -0.477120}, {0.337622, -0.907080}, {-0.961643, 0.350677}, {-0.419235, 0.114661}, {-0.036426, -0.074521}, {-0.851223, 0.150299}, {-1.402542, -0.652643}, {-0.444904, 0.206768}, {0.649220, 0.699797}, {0.159030, 0.332804}, {0.252170, -0.574764}, {0.214542, -0.070060}, {0.672585, -0.214337}, {0.317019, 0.014172}, {-0.760543, 0.267257}, {1.642791, 0.243831}, {-1.046533, -0.098091}, {-0.043117, 0.019885}, {0.017252, -1.446676}, {0.264861, 0.685846}, {0.517324, 0.010126}, {0.343672, 0.470516}, {0.031183, 0.226200}, {-0.069854, -0.562667}, {0.527272, 0.532637}, {-0.858228, 0.534935}, {0.364460, 0.740142}, {-0.140402, -0.483472}, {0.017139, 0.061624}, {-0.294724, 1.396053}, {-0.540405, -0.124744}, {-0.216948, -0.080703}, {0.142776, -0.316044}, {-0.253452, -0.078581}, {-0.025665, 0.377449}, {0.170569, 0.657816}, {0.558146, 0.230644}, {-0.811005, 0.844136}, {1.274885, -0.602096}, {-0.256525, 0.339416}, {-0.445608, -0.526104}, {-0.679020, -0.428087}, {-0.585500, 0.611806}, {0.321104, 1.015454}, {0.088048, 0.254566}, {-0.194493, -0.085023}, {0.235160, 0.956288}, {0.814722, 0.247546}, {-0.785712, 0.033330}, {1.303812, -0.323498}, {0.900592, 0.189877}, {0.557885, -0.981445}, {0.472523, 0.784359}, {0.761798, -0.989764}, {0.391552, 0.560236}, {0.697718, -0.307289}, {-0.302544, 0.328754}, {-1.050820, -0.691314}, {-0.647732, -0.054507}, {0.021808, 0.443342}, {-1.449923, -0.824803}, {0.190423, -0.098085}, {0.631746, -0.468679}, {0.040293, -1.576056}, {-0.372698, 0.455461}, {0.220583, 0.009939}, {-0.270850, -0.097216}, {-0.505603, 0.942481}, {-0.821008, 0.456088}, {-0.903589, -0.879087}, {-1.037097, 0.467356}, {-0.106833, 1.072424}, {0.863947, 0.585468}, {0.005151, 0.434652}, {-0.400947, -1.251142}, {0.189981, 0.404356}, {-0.285439, 0.379628}, {0.087294, -0.869496}, {-0.192137, 0.869642}, {-0.692827, -0.385168}, {-0.562495, 0.217508}, {0.542657, -0.510556}, {0.464191, -0.475241}, {-0.360873, 0.439250}, {0.855123, 0.200659}, {-0.610447, 0.408358}, {0.908977, 1.265472}, {0.594758, -1.492478}, {0.029868, -0.283152}, {-0.742647, -0.959861}, {-1.058543, -0.718420}, {0.030062, 0.074846}, {0.484401, -1.125483}, {-0.284086, 0.159763}, {-1.080775, -0.140955}, {-0.174126, -0.086363}, {0.739286, -0.217804}, {0.141377, -0.665255}, {0.920503, -0.318352}, {0.312659, 0.743913}, {0.276399, 0.154918}, {0.663342, -0.243720}, {0.208475, 1.070727}, {1.547443, -0.539637}, {-0.480355, -0.378719}, {-0.286722, -0.944048}, {-0.939835, 0.257670}, {-0.970612, -0.234679}, {-0.869842, 1.134333}, {0.129012, -1.323594}, {-0.847059, 0.612807}, {0.143607, 0.167211}, {-0.644289, -0.020060}, {0.597720, -0.525289}, {0.344575, 0.696561}, {0.032192, -0.316594}, {-0.527359, 0.248141}, {0.057843, -1.004926}, {0.174263, -0.084976}, {-0.103775, -0.357881}, {0.591409, 0.244348}, {-1.185070, -0.186006}, {0.643666, 0.679958}, {-0.560183, -0.180895}, {-0.730927, 0.972640}, {0.414448, -0.245573}, {-0.715735, -0.063948}, {0.602288, -0.368285}, {-0.595310, -0.096140}, {0.154414, -0.239226}, {-0.643521, -1.322612}, {-0.372893, 0.644678}, {-0.871536, -1.116017}, {-0.355362, -0.495611}, {0.807998, -0.506884}, {-1.512365, 1.149375}, {-0.663902, -0.483402}, {-0.027985, 0.740126}, {-0.627528, 0.621482}, {0.273277, 0.398212}, {0.646616, 1.375140}, {-0.691492, 1.019221}, {0.666217, 0.443858}, {0.695471, 0.183591}, {-0.505856, -0.531083}, {0.770952, 0.230695}, {-0.598738, 0.451612}, {0.301636, -1.123508}, {0.345123, -0.300982}, {-0.371200, 0.114885}, {0.040179, 0.024051}, {-0.193750, 0.538700}, {-0.540208, 0.170493}, {-0.732932, -0.668738}, {-1.222816, 0.434783}, {0.056403, 0.263628}, {0.248752, 1.012811}, {-0.511117, -0.049178}, {-0.044573, -0.975817}, {0.398627, 0.462711}, {-0.260856, -0.068978}, {-0.280710, -0.321223}, {-1.899199, -1.720357}, {-0.214145, 0.610662}, {0.860637, -0.542982}, {1.479895, 0.512347}, {-0.634684, -0.205669}, {-0.774042, 0.960716}, {0.254752, -0.070188}, {0.048949, 0.072511}, {-0.076806, 0.217678}, {-0.398325, 0.011892}, {0.947991, 0.795319}, {1.507949, -0.647927}, {-0.067973, 0.815859}, {0.021869, -1.330399}, {0.260440, -0.736693}, {0.047665, 1.669888}, {0.051714, -0.750557}, {0.461558, 0.446945}, {1.025170, 0.357000}, {0.045956, -0.325779}, {-0.173120, 0.700485}, {0.536135, -0.477065}, {0.128767, -0.204009}, {-0.760650, -1.142806}, {0.136669, -1.190282}, {0.497392, -1.408788}, {-0.148019, 0.206583}, {-0.501879, -0.488139}, {0.009399, -0.681400}, {0.701198, -0.538127}, {0.180453, 0.485088}, {-0.265001, 0.156447}, {-0.640031, 0.482786}, {-0.518979, -0.541837}, {-0.032891, -0.430068}, {-0.461893, -0.277698}, {0.262606, 0.260080}, {0.041808, -0.123995}, {-0.440511, 0.223938}, {-0.106192, -1.594211}, {-0.418230, 0.723012}, {0.073327, -0.112584}, {-0.418561, -0.692791}, {0.368207, 0.185128}, {0.168326, 0.239815}, {0.114983, -0.779877}, {-0.513697, -0.218598}, {-0.509730, -1.001503}, {-0.257517, 0.486916}, {-0.939828, 0.965026}, {-1.454300, -0.203483}, {-0.492785, -0.713430}, {0.301437, -0.797414}, {0.238702, -0.386490}, {-0.944933, 0.181264}, {0.443444, 1.104281}, {0.703275, -1.091732}, {-0.739420, 0.369381}, {-0.541723, 0.306867}, {-0.421282, -0.067401}, {-0.359663, -0.430076}, {-0.365976, -0.386311}, {-1.235840, -0.744903}, {-0.582278, 0.165135}, {0.258208, 0.795858}, {0.656751, -0.199973}, {-0.661437, -1.236283}, {-0.183853, 0.537246}, {-0.698045, 0.604539}, {-0.705045, 0.847084}, {-1.459402, 0.628008}, {0.692337, 1.236132}, {-0.260324, 0.599788}, {-0.010288, -0.048783}, {0.066315, 0.077396}, {0.258401, -1.300776}, {-0.606507, 0.626366}, {0.918692, 0.313908}, {0.301100, 0.600185}, {0.756285, -0.134042}, {0.419008, 0.068592}, {0.678707, 0.297421}, {-0.762643, 0.544065}, {0.811504, 0.550301}, {-0.128498, 0.753596}, {-0.506348, -0.102907}, {-0.361289, -0.120066}, {0.772548, 0.007574}, {-0.403729, 0.699871}, {0.438742, 2.197012}, {-1.157543, -0.354945}, {0.220848, 0.508695}, {0.354803, -0.410951}, {1.084506, 0.972850}, {0.092344, 1.433922}, {0.506397, 0.385787}, {1.217549, 0.293367}, {-0.334559, -0.101333}, {-0.406466, -0.023401}, {0.356600, -1.141455}, {-0.011750, 0.287641}, {-0.050458, 0.686041}, {-1.213470, 0.430009}, {0.551580, -0.801972}, {0.065996, -0.224313}, {0.281099, -1.068458}, {-0.096408, 0.757440}, {1.583368, 0.056612}, {0.087061, 0.328131}, {-0.394441, -1.372195}, {0.512555, -0.342829}, {-0.073289, -0.416035}, {0.913218, -1.088553}, {-0.698006, 0.235712}, {-0.230038, -0.514247}, {-0.040607, -0.916763}, {0.632154, -0.540679}, {-0.887651, -1.009355}, {-0.632470, -1.022231}, {0.190182, 1.032801}, {-0.027089, 0.692375}, {-0.675473, 0.192100}, {-1.255069, 0.423638}, {-0.195848, 0.109171}, {0.292869, -1.505548}, {0.515116, -0.182036}, {-0.690289, 0.288317}, {1.434559, -0.687078}, {-0.461406, -1.224466}, {-0.374814, 0.354303}, {0.616066, 0.664220}, {-0.312574, -0.753793}, {-0.010131, 0.316177}, {0.677541, -0.304399}, {0.362407, -0.542312}, {0.421985, -0.426462}, {1.074806, 0.427175}, {0.714370, -0.383605}, {0.981694, -0.101514}, {-0.580749, 0.366888}, {0.150148, 1.272927}, {0.102605, 1.472671}, {0.133743, -0.162327}, {0.098048, 0.154761}, {0.138915, 0.424027}, {-0.068587, -0.269135}, {0.151768, -0.574258}, {0.705147, 0.504406}, {-0.199471, -0.747309}, {0.660886, 1.191666}, {-0.434080, 0.337494}, {0.065750, -1.195325}, {-0.022976, 0.447841}, {0.105985, 0.089817}, {-0.084156, -0.318798}, {0.072991, -0.327037}, {-0.128438, 0.126156}, {-0.405562, -0.076535}, {-0.426691, -0.173649}, {-1.860770, -0.948092}, {-0.127870, -0.262563}, {-1.138050, -0.096580}, {0.370414, -1.870972}, {-0.169835, 0.059237}, {0.107617, 0.823066}, {-1.055285, -0.282586}, {-1.207492, 0.630350}, {0.199582, 0.096160}, {0.726497, 0.068093}, {-0.532842, -0.156855}, {1.093617, 0.601716}, {-1.528594, -0.081629}, {-0.210981, -0.742901}, {0.320628, -1.275187}, {-0.959229, -1.040017}, {-0.435513, -1.345417}, {0.883669, 0.681837}, {-1.529650, -0.446392}, {-0.720045, 1.701187}, {-1.098947, 0.930781}, {-0.652223, -0.676971}, {0.540277, 0.620405}, {-0.084783, -0.516229}, {-0.645938, -0.752328}, {0.592236, -0.445923}, {0.987580, -0.654351}, {0.631582, -0.687112}, {-0.747723, -0.216685}, {-0.242519, 0.244150}, {-0.503676, -0.402645}, {-1.298327, 1.084137}, {-0.362467, 0.491899}, {-0.033132, -0.268392}, {-0.126278, 0.423416}, {-1.031263, -0.085027}, {0.243811, -0.366720}, {0.639498, 0.129467}, {-0.335136, 1.108368}, {-0.512740, 1.873530}, {0.643081, 0.099739}, {-0.255082, 0.612374}, {-0.175646, 0.130710}, {0.108781, 1.292291}, {-0.614601, 0.259555}, {0.168058, 0.048234}, {-0.574672, 0.318310}, {-0.216721, -0.336900}, {-0.005054, 0.439731}, {-0.850990, 0.370968}, {-0.067698, 0.383192}, {0.383593, -0.525092}, {-0.061197, 0.459613}, {1.361076, -0.818933}, {-0.505306, -0.543337}, {0.635340, -0.050133}, {-1.114203, 0.161483}, {-0.176448, -0.346756}, {0.120352, 0.445743}, {-0.245858, -0.834506}, {-0.920717, 0.600234}, {-0.297926, 0.695282}, {1.293254, 0.324459}, {-0.963549, 0.214107}, {0.291750, 0.306301}, {-0.020635, -0.108404}, {-0.625249, 0.393424}, {-0.678041, -0.306473}, {1.267072, -0.004506}, {0.022893, 0.861164}, {-0.623908, 0.323349}, {0.368754, 0.620841}, {-0.528447, -0.141905}, {0.088043, 1.543236}, {-0.899354, -0.855242}, {-0.026557, -0.453395}, {0.027462, 1.047341}, {0.769418, -1.229816}, {1.440973, -0.699249}, {0.073809, -0.849225}, {0.260617, -0.050471}, {-0.343781, -0.188150}, {0.196896, 0.184787}, {0.186939, -0.670752}, {0.922055, 1.559028}, {0.501239, -0.571159}, {-0.501999, 0.117773}, {-0.919095, 0.778399}, {0.351764, -0.823198}, {0.148608, 0.329635}, {1.115657, -0.601348}, {-0.356139, -0.377287}, {0.082008, -0.934193}, {0.413781, -0.481072}, {0.159484, 0.219529}, {0.769932, -0.473240}, {-0.127988, -0.380868}, {0.633024, -0.074308}, {0.422594, -1.072281}, {-0.962782, 0.898361}, {0.606030, -0.243257}, {0.060875, -0.778985}, {-0.615502, 0.659961}, {0.690715, -0.017834}, {0.475395, -0.359472}, {-0.974448, -0.511066}, {0.692056, -0.796830}, {0.464684, -0.250498}, {-0.473990, 0.157603}, {-0.221502, -0.380543}, {0.776700, 0.874519}, {0.278098, -0.390918}, {-0.020204, 0.129496}, {-0.492732, -1.203373}, {-0.192923, 0.392172}, {-0.456686, -1.096002}, {0.225734, -0.338651}, {-0.423440, -0.151675}, {0.047326, 0.697747}, {-1.402831, 0.389770}, {-0.481669, -0.607328}, {0.707638, -0.420784}, {-0.585504, 0.372906}, {0.884026, 0.946783}, {-0.890221, -0.123712}, {-0.946448, -1.331909}, {-0.161589, 0.672376}, {-0.428532, 0.326757}, {-0.478465, -0.457691}, {-0.054022, 1.405670}, {-0.333135, 0.375169}, {-0.372505, 0.854525}, {1.535750, 0.415969}, {0.295118, -0.716003}, {-0.336206, -0.196896}, {0.743605, 0.229018}, {0.792000, -1.768616}, {-1.354626, 0.963126}, {-1.405782, 0.680236}, {-0.237975, -0.000923}, {-0.690345, -1.003080}, {-1.313895, -0.033107}, {-0.614969, 0.864382}, {0.990158, 1.112463}, {-1.001071, -0.634240}, {0.594301, 0.062948}, {-0.534023, 0.563650}, {0.605461, -0.096271}, {0.236832, -0.313801}, {-0.493347, -0.201958}, {-0.520262, -0.387792}, {-0.912513, -1.199020}, {-0.129950, -0.310796}, {-0.541204, -0.716691}, {-0.081170, 0.596112}, {0.737798, 1.145168}, {-0.928121, -0.998200}, {0.669610, 1.145227}, {0.832308, 0.318849}, {-0.039104, -0.614171}, {0.755613, -0.876583}, {-1.016801, 0.001975}, {-0.050756, 0.076366}, {0.630505, -0.239083}, {0.197191, -0.747906}, {-0.372266, -0.592826}, {-1.529025, 0.438443}, {-0.412525, -0.849941}, {0.829853, 0.127465}, {0.283020, 0.119718}, {1.891486, -0.325311}, {-0.585484, -0.410801}, {0.059833, -0.092511}, {-0.831938, -0.638384}, {-0.235357, 0.183885}, {-0.347581, -1.189650}, {0.014281, -0.758982}, {0.350777, -0.963252}, {-0.065657, -0.156335}, {-0.165794, 0.022285}, {0.747007, -0.478210}, {0.567832, -0.106546}, {0.396140, 0.016729}, {-0.272671, 0.066605}, {1.376385, 0.510745}, {-0.060046, 0.644132}, {0.775174, -0.161923}, {0.685821, 0.001454}, {-1.561711, 0.881058}, {1.787424, -0.058002}, {0.336836, -0.858057}, {-0.331450, -0.740409}, {-2.109117, 0.353266}, {-0.216311, 0.071157}, {0.114973, -0.504866}, {-0.622727, -0.587637}, {-1.153190, 0.816906}, {-1.426416, 1.516651}, {-1.307579, 0.228991}, {-0.770577, -0.045774}, {0.372744, 0.808508}, {0.120187, -0.103078}, {-0.195718, -0.374301}, {1.075698, 1.295923}, {-0.361592, -0.873742}, {-0.418061, -1.279100}, {0.784779, -1.675948}, {1.268633, -0.865789}, {-0.519273, 0.090093}, {-0.262722, -0.402864}, {-0.951638, 0.084945}, {-0.355352, -0.351439}, {0.285010, 0.056406}, {-0.950448, -0.397773}, {-0.464651, 0.160215}, {1.109933, -0.480592}, {-1.419546, 1.158028}, {0.905718, 0.111670}, {-0.237821, 0.135966}, {-1.259691, 0.323498}, {-0.470925, -0.541165}, {0.102619, -0.372763}, {-0.712979, -0.457720}, {0.970056, 0.171370}, {-1.135346, -0.461788}, {-0.633181, 1.008828}, {1.176038, -1.068340}, {0.500422, -0.673381}, {0.894371, -0.164669}, {0.483704, 0.314087}, {-1.188251, -0.842904}, {-0.157257, 0.172253}, {-0.898239, 0.677601}, {-0.279064, -1.615232}, {-0.992485, 0.177739}, {-0.476199, -0.218263}, {-0.132737, 1.169939}, {-1.302813, 0.651199}, {-0.310092, 0.900820}, {0.049591, -0.876856}, {-0.107885, -0.364864}, {-0.126501, -0.848695}, {1.113648, 0.511673}, {0.264047, 0.194513}, {-0.056919, 0.273691}, {0.703939, -0.054764}, {-1.272536, -0.341796}, {-0.119178, -0.654156}, {0.132597, -0.130565}, {0.899426, 0.459049}, {-0.391768, -1.166623}, {-0.225483, -0.557438}, {-0.167593, 0.661089}, {-1.659540, -0.002336}, {0.794658, 0.033512}, {-1.069324, 0.241018}, {-0.918777, 1.380683}, {0.332766, 0.468339}, {1.686444, -0.943082}, {-0.547574, -0.948940}, {0.030771, 0.036540}, {-0.833640, -1.376152}, {-1.243536, 0.371659}, {-0.237937, -0.425704}, {0.259845, 1.519797}, {-0.911238, -0.668074}, {-0.013456, 0.176795}, {-0.882968, -0.341753}, {0.854397, 0.383916}, {0.235472, 0.285590}, {-0.359982, 0.097074}, {-0.131102, -1.300127}, {0.266605, 0.174879}, {-0.294888, 0.138128}, {-0.108081, 0.172793}, {-0.478603, -0.057927}, {-0.712859, 1.038960}, {0.209788, 0.449368}, {0.387551, -0.640651}, {0.003760, -0.340271}, {-0.061907, 0.617510}, {0.392158, -0.953156}, {0.726593, -0.189035}, {0.597882, -0.274553}, {0.666026, 0.048594}, {0.284210, 0.946907}, {0.305420, 0.165142}, {0.404228, 0.231668}, {-0.017939, -1.142982}, {1.139064, -0.458041}, {-0.819369, 0.895217}, {-0.047318, 0.285829}, {-0.568780, -0.190502}, {-0.606370, -0.099547}, {1.424332, 0.802029}, {-0.821119, 0.250209}, {-1.376602, 1.326391}, {-1.098387, 1.606694}, {0.496951, -0.357961}, {0.210738, 0.046687}, {0.369485, -0.157254}, {-0.544895, -0.402399}, {-0.882763, -0.055791}, {-0.357232, 0.166177}, {-0.615774, -0.069649}, {-0.767183, -0.112721}, {0.375762, -0.020422}, {-0.098314, 0.398756}, {0.176510, 0.550347}, {1.200922, -0.003930}, {1.325052, -0.313705}, {-0.150081, 1.250977}, {2.057610, 0.216751}, {-0.238246, 0.229506}, {0.857400, -0.572607}, {-0.562334, 1.100413}, {0.384247, -1.554662}, {0.067540, 0.515121}, {1.340051, -0.351801}, {-0.422137, -0.315044}, {0.860255, -0.025928}, {-0.499608, -0.491812}, {-0.466429, -1.328300}, {-0.323761, 0.241738}, {0.393656, -0.847954}, {0.459800, 1.193975}, {0.310703, -0.636093}, {-0.445585, 0.424384}, {0.846073, 0.364936}, {-0.259331, -0.399480}, {0.436216, -0.067255}, {-0.733748, -0.699265}, {0.324053, 1.497643}, {0.615826, 0.748861}, {1.193295, -1.242813}, {-0.466988, 0.156967}, {0.611477, 0.193048}, {-0.055928, -0.158672}, {0.975226, -0.459924}, {-0.655781, -0.693858}, {1.324562, -0.668467}, {0.864872, -2.109563}, {0.717141, -0.626098}, {-1.302740, 0.096267}, {1.116621, -0.009268}, {0.100593, 1.267514}, {0.425933, -0.009823}, {-0.173129, -0.174238}, {0.153032, 0.109386}, {-0.318603, 0.546064}, {0.289912, 0.429496}, {0.155977, 0.603650}, {-0.776808, 0.920140}, {-0.878454, -0.082128}, {0.608451, 1.174464}, {0.353067, -0.103951}, {-0.452806, 0.168395}, {1.339559, 0.439086}, {-0.020182, -1.321645}, {0.118079, -0.311166}, {-0.272936, 0.134373}, {0.373963, -1.299783}, {0.054969, 0.261178}, {-0.239239, -0.615398}, {-1.001020, -1.146200}, {0.449862, -1.228006}, {0.323008, 0.572236}, {-1.653429, 0.189960}, {-1.049711, -0.245348}, {0.976135, 0.169753}, {0.706318, -0.614142}, {1.130571, 1.122720}, {-0.180019, -0.492531}, {0.585209, -0.465400}, {-0.786602, 0.685904}, {0.096573, 0.109326}, {-0.141775, -0.749653}, {-0.059186, -0.316195}, {-1.462725, -1.202917}, {-1.236354, 0.418481}, {0.151833, 0.157247}, {0.691259, 0.080574}, {0.483058, -1.638888}, {0.128021, 1.112820}, {-0.191649, 1.303981}, {-0.086171, -1.095404}, {-0.568276, 0.304373}, {2.181999, -0.551641}, {-1.035423, -0.289490}, {0.155008, -0.150995}, {-1.103950, -1.857698}, {-0.668989, -0.467956}, {-0.185524, 0.446566}, {-0.643301, -0.258359}, {0.087981, -0.547687}, {-0.516929, 0.605263}, {0.342129, 0.093293}, {2.011109, 0.019105}, {0.363808, 0.781133}, {-1.536479, 1.337943}, {0.435211, -0.631518}, {-0.556866, -0.694405}, {1.114228, -0.174913}, {0.538381, -0.752450}, {0.550732, -0.407947}, {0.022731, -0.085540}, {0.188773, 0.308336}, {0.487134, -0.164736}, {0.186646, 1.139253}, {0.045252, -1.157604}, {1.084051, -0.890305}, {0.619163, -0.150592}, {0.354104, 0.841673}, {0.229173, -2.117542}, {-0.396302, -0.148405}, {-0.233108, 0.645852}, {-0.409376, 0.680217}, {0.561133, -1.591081}, {0.132287, 1.114235}, {-0.167495, -0.729692}, {-0.563572, -1.003719}, {-1.407809, 0.049666}, {0.259140, -1.152104}, {0.876016, 0.966907}, {1.109627, 0.127202}, {0.900875, 0.161930}, {-0.239223, -0.745766}, {-0.049711, -0.106964}, {-1.172386, 1.606319}, {1.580091, -0.165441}, {-0.105897, 0.096532}, {0.514744, -0.441290}, {-0.410128, 1.642280}, {1.025580, -0.241450}, {0.570167, 0.040530}, {0.871560, -0.323875}, {-0.234388, -1.244179}, {0.675376, 0.964659}, {0.374233, 0.149805}, {-0.789252, 1.310412}, {-0.284409, 1.148222}, {-0.660847, 0.363166}, {0.782152, 0.454305}, {0.172868, 0.088907}, {-0.278771, 0.023603}, {0.293272, 0.372982}, {0.311987, 0.322549}, {0.606624, 0.527143}, {0.192137, 0.430538}, {-0.324541, 0.343529}, {-0.158355, 0.734556}, {-0.137073, -0.403531}, {-0.250048, 0.162757}, {0.447298, 0.471529}, {-0.874570, -0.929687}, {0.556881, 0.694617}, {0.202336, 0.104962}, {-1.529270, 0.384855}, {0.164846, -0.749040}, {-0.712317, -0.291645}, {-0.649720, -0.482616}, {-0.157974, 0.405484}, {0.057860, 0.996968}, {0.618568, -0.192818}, {-0.569099, 0.526239}, {0.535368, -2.569703}, {0.287562, -0.200457}, {-0.774001, -0.447806}, {-0.677427, 0.757377}, {0.440255, 1.722018}, {0.221734, 0.363236}, {-1.142799, 0.246628}, {-0.000987, 0.084137}, {0.177699, -0.161609}, {0.219112, 0.145815}, {1.192557, -0.513284}, {-1.063099, -0.407821}, {0.344825, 0.059121}, {0.324140, -1.340732}, {-0.385376, 0.564923}, {1.112126, 0.068623}, {1.217525, -0.793810}, {-0.173809, 0.211866}, {0.008904, 0.344939}, {-0.551659, -0.020264}, {0.409603, 0.130882}, {-0.460838, 0.011734}, {0.767436, -0.389044}, {-0.317004, 1.030325}, {0.765716, 1.202983}, {-0.899111, -0.543610}, {-0.281986, -0.684544}, {-0.364272, 0.091067}, {-0.944820, 0.735864}, {-0.473074, 0.236066}, {0.590428, -0.001307}, {0.902710, 0.060698}, {-0.479309, 0.186699}, {-0.622708, 0.120223}, {-0.552450, -0.012236}, {0.431918, 1.303160}, {0.050594, -0.525912}, {0.362519, 0.624894}, {-0.941750, 0.479853}, {-0.146931, -0.166574}, {-0.222338, -0.578684}, {0.516931, 0.696953}, {-0.950476, 0.567101}, {0.021004, 0.707791}, {1.023076, 1.585372}, {-0.379172, -0.455007}, {0.999678, -1.125859}, {1.112727, 1.119853}, {-1.229585, -0.372180}, {0.485929, 1.072664}, {-0.533969, -0.058251}, {-0.780870, -0.083022}, {0.197475, -0.090851}, {0.869964, -0.537793}, {0.041044, 0.400725}, {0.337632, 0.010040}, {0.995867, -0.413684}, {-0.197465, -0.816039}, {0.113805, 1.162790}, {-0.869838, 0.460479}, {-0.720627, 0.136898}, {-0.555949, 0.348150}, {-1.010460, 0.876235}, {0.288385, 0.442596}, {0.628015, 0.092587}, {1.017268, 1.102030}, {0.136902, 0.765530}, {-1.074543, -0.048865}, {-1.177793, -0.693738}, {0.527523, 0.145117}, {-0.760523, 0.203876}, {0.938313, 1.041252}, {0.539914, -0.157041}, {-0.572504, -0.177670}, {-0.180789, -0.215865}, {0.138948, -0.228659}, {-0.294927, -0.979739}, {-0.295661, -1.044591}, {0.151225, -1.389272}, {-0.756423, -0.423643}, {-0.061934, -0.301791}, {-0.270853, -0.240812}, {-0.803715, 0.821259}, {-0.697601, 0.617383}, {0.289209, -0.053389}, {-0.896823, 0.262431}, {-0.295344, -0.261914}, {0.058281, 0.044589}, {-1.008325, 0.176720}, {0.175546, -0.335204}, {0.631611, -0.600731}, {-0.433719, -1.128985}, {-0.409720, -0.312795}, {0.323113, 0.261763}, {0.036730, 0.115460}, {0.059806, 0.466118}, {-0.435466, 0.810298}, {1.362624, -0.053060}, {0.017303, 0.016551}, {-0.831908, -0.085054}, {-0.047121, -1.210964}, {-0.492066, 0.242858}, {0.390794, 0.069634}, {0.814141, -0.385739}, {0.000600, 1.161953}, {-0.825328, -1.076807}, {-0.137587, -0.380351}, {-1.033185, 0.376119}, {-0.942623, 0.986463}, {-0.615904, 0.634404}, {0.405671, 0.449572}, {-0.610933, 0.735977}, {-0.318879, 0.163802}, {-0.507174, -0.284257}, {0.727653, -0.764991}, {0.553744, 0.406244}, {0.109977, -0.425145}, {0.007260, 0.694717}, {-0.589111, -0.324782}, {1.296184, -0.280316}, {0.273412, -0.063905}, {0.628945, 0.335630}, {-0.149412, -0.710817}, {1.448227, -0.686517}, {0.812279, 1.204193}, {-0.323526, 0.612276}, {1.317114, -0.397886}, {-0.905302, -0.684715}, {-0.018889, 0.460583}, {0.413307, 0.079909}, {0.196694, -0.264636}, {0.237990, 0.380848}, {1.110570, 0.186631}, {1.100941, 0.944369}, {-0.268469, -0.372955}, {0.654447, -1.005281}, {-0.867087, 0.494783}, {-0.307357, 0.224308}, {1.126564, -0.447765}, {-1.441809, -0.432263}, {0.829316, -0.254776}, {0.276601, 0.028482}, {0.321513, 0.477089}, {-0.326903, -0.065775}, {0.181178, 0.425015}, {-0.021201, -0.632189}, {0.196787, -0.270172}, {0.482211, 0.760539}, {-0.021529, 0.350678}, {0.538731, 0.792097}, {-0.792762, -1.073304}, {0.269102, 0.466839}, {-0.457873, -0.267988}, {-1.086786, -1.382579}, {-0.902461, -0.333688}, {1.449862, 0.549708}, {1.103982, -0.815866}, {-0.331610, -0.126280}, {-0.434605, -0.574026}, {-0.564428, 0.451053}, {1.065076, -0.142613}, {-1.067355, -0.781069}, {0.415735, 0.395771}, {-0.257126, -0.498318}, {0.229113, -0.904408}, {0.475347, 0.932772}, {-0.126197, -0.312728}, {0.015972, 1.513573}, {0.072260, -0.478380}, {0.199441, -1.515994}, {0.801702, -0.148107}, {0.732459, -0.716389}, {-1.055474, 0.377686}, {0.882117, -0.319396}, {-0.389893, 0.614071}, {-0.426814, 0.453146}, {-1.280709, 0.307466}, {0.465162, -0.568253}, {-0.105649, 0.264185}, {0.207625, 0.360816}, {-1.212366, 0.121881}, {0.229992, -0.215450}, {0.416004, -0.583465}, {0.716912, -0.118409}, {0.096084, -0.512867}, {0.186247, 0.032560}, {0.028022, -0.556780}, {1.150752, -0.299593}, {-1.619091, -0.453159}, {-0.212540, -1.038386}, {0.255212, -0.885610}, {-0.279565, 0.220245}, {-0.933030, 1.702921}, {1.098960, -0.501176}, {0.621376, -0.194441}, {-0.046707, -0.191768}, {0.820383, -1.152666}, {-0.625110, 1.133264}, {0.136433, -0.774816}, {0.450809, -0.089682}, {-2.456335, 0.966943}, {0.912559, -0.737705}, {-0.981240, -0.672716}, {-0.364111, -0.695029}, {-0.339351, 1.566577}, {-1.639069, 1.051843}, {0.305872, 0.958157}, {-0.506132, 0.126778}, {0.213442, 0.269895}, {0.219518, 0.742494}, {0.850854, 0.816322}, {0.239080, 0.545993}, {-0.092504, 0.731571}, {0.440567, -1.122125}, {0.610520, -0.413122}, {-0.578101, -0.718322}, {-0.222974, 1.427200}, {0.545492, -0.056598}, {0.627889, 1.317222}, {-0.048461, -0.116290}, {-0.394290, -0.229413}, {-0.462502, -0.045762}, {-0.200809, 0.574322}, {0.339283, -0.584942}, {-0.393629, 1.095376}, {-0.371673, -0.655765}, {-0.260952, -0.654112}, {1.083400, 0.823028}, {-0.952867, -0.473551}, {-0.018485, 0.260282}, {0.387338, 0.088609}, {-0.988637, -0.394637}, {-0.651919, -0.458630}, {1.482098, 0.311456}, {0.617416, 0.339357}, {0.024986, -0.654472}, {-0.633096, -1.253554}, {0.316704, -1.543150}, {-0.309558, -0.064486}, {-0.027012, -1.213059}, {0.155906, -0.785986}, {-0.021507, -0.082515}, {1.588522, -1.195031}, {-0.385961, -0.717514}, {0.813259, 0.823171}, {1.542545, -0.583962}, {0.699293, 1.152578}, {-2.520775, -0.740568}, {1.650931, 0.444675}, {-0.894331, -1.449709}, {-0.606002, -0.786614}, {0.612772, 0.153705}, {-0.921274, 0.922913}, {0.440139, 0.658577}, {-0.229417, 0.728289}, {1.547479, -2.279597}, {-0.319338, -0.157973}, {-1.461973, 1.054925}, {-0.679512, -0.422229}, {-0.320076, -0.624900}, {-0.272455, -0.652699}, {-0.050571, -0.713983}, {-0.389856, -0.423589}, {-0.973979, 0.062857}, {1.550694, -0.360476}, {0.159432, -0.127434}, {-0.372704, 0.494970}, {0.300625, -0.256622}, {-1.003412, 0.402113}, {-0.075613, -1.686128}, {0.482382, -0.480330}, {0.093242, -0.754616}, {0.281740, 0.184726}, {-1.393960, -0.547393}, {0.536805, -0.148686}, {-0.465176, 0.255458}, {0.306821, 0.035537}, {0.559831, -0.109144}, {-0.714140, 0.108895}, {0.217559, 0.447498}, {-0.314098, -0.724385}, {-1.492888, -0.993242}, {-0.428441, -0.227405}, {0.188548, 0.658179}, {0.768091, 1.556233}, {-1.545457, -1.086941}, {0.140440, 0.092669}, {0.537909, -0.495652}, {0.332552, -0.612271}, {-0.511223, -0.340514}, {0.079385, -0.114250}, {-1.463661, 0.057599}, {0.223999, 0.976185}, {-0.543545, 0.027883}, {0.979747, 0.489620}, {-1.192039, -0.798037}, {0.730126, -0.056639}, {-0.267151, 0.693524}, {0.558097, 0.153657}, {-0.696618, -1.338386}, {-0.909832, -0.096288}, {0.882699, 0.742963}, {-0.275874, -0.809979}, {-0.053137, -0.168546}, {-0.422878, -0.367399}, {1.557298, 0.459112}, {0.246203, -1.167259}, {-0.504330, -0.532256}, {0.987550, -0.885807}, {0.683296, -0.854008}, {-0.999180, 0.227098}, {-0.668949, -0.025123}, {0.025665, -0.317833}, {1.113571, 0.491572}, {-0.168884, 1.194192}, {0.093188, -1.044563}, {1.753660, -0.163939}, {0.555963, -0.609948}, {0.794400, 0.059530}, {-0.335538, 1.145340}, {-0.230857, -0.288830}, {-0.449282, 0.390382}, {0.306169, 0.184478}, {-0.346556, -0.363817}, {-0.831726, 0.067839}, {1.276276, -0.466759}, {0.244800, 0.473109}, {-0.215391, -0.292773}, {-0.273257, 0.201723}, {0.842924, -0.698762}, {-0.729074, 0.256315}, {-1.456625, 0.252573}, {0.559147, -0.282695}, {0.994685, 0.128463}, {0.300242, -0.524755}, {0.229392, -0.252261}, {-0.262222, 1.375848}, {-0.629900, 0.580724}, {-0.886522, 0.229244}, {0.175535, -0.159406}, {-0.005415, 0.158939}, {0.950522, 0.379940}, {0.346992, 0.559263}, {-0.822353, 0.315018}, {1.106625, -0.737253}, {-0.252764, -0.041978}, {-0.652043, 1.078668}, {0.544128, -0.877090}, {-0.435260, -0.777845}, {-0.142025, 0.692931}, {-0.031940, -0.162408}, {-0.737664, 0.759069}, {0.018416, -0.910539}, {0.501767, 0.015715}, {-0.525217, -0.909641}, {0.502059, 1.002820}, {0.550277, 0.890858}, {0.563253, -0.901443}, {-0.482929, -0.468226}, {0.459780, -1.053824}, {0.679393, -0.444330}, {-1.560609, 0.500156}, {0.326860, -0.233930}, {0.014115, 1.226398}, {-0.841667, 0.256632}, {-0.986458, 0.214088}, {0.561778, -0.293625}, {-0.166624, -0.623391}, {0.072308, -1.647830}, {0.261475, 0.207571}, {-0.439805, -0.515374}, {-0.903760, 0.247456}, {-0.992315, -0.455678}, {-0.736917, -0.314349}, {-0.760237, -0.334644}, {-0.808025, 0.764268}, {0.962557, -0.746572}, {-0.497432, 0.389293}, {-0.627429, 0.078673}, {0.281879, -0.521353}, {-0.041629, 0.996509}, {0.148478, -0.832781}, {0.241113, 0.180056}, {0.427418, -1.070871}, {-0.528049, -0.483790}, {-0.523555, -0.270324}, {-0.304426, -0.037406}, {-0.137959, 1.438044}, {0.928138, -0.431107}, {0.158206, 0.475620}, {0.290347, -0.571426}, {0.518227, -0.212278}, {1.434704, -0.008646}, {0.870633, 0.309615}, {-0.408402, -0.358914}, {-0.932732, 1.867362}, {-1.106557, 0.682544}, {0.700628, 0.050873}, {0.606759, 0.318505}, {1.100808, 0.865530}, {1.167061, 0.859812}, {-0.457106, 0.360329}, {-0.412289, 0.264824}, {0.121729, 0.471512}, {-1.263924, 0.036896}, {0.592224, -0.981550}, {-1.358297, -1.589214}, {0.370305, 0.206402}, {-0.033672, -0.610428}, {0.084157, -1.167364}, {-0.925039, 0.239143}, {0.529815, 1.166401}, {0.059166, 0.526304}, {-1.093501, 1.010147}, {1.095547, -0.668412}, {-0.013464, -0.212740}, {0.318854, 0.079713}, {-0.582878, 0.209336}, {0.654810, 0.042878}, {1.084759, 0.085261}, {-0.816288, 0.517988}, {-0.922044, -0.145496}, {-0.413527, -0.094974}, {0.921929, 0.223829}, {0.834340, -0.632027}, {0.740097, 0.472727}, {0.109634, -0.761616}, {0.181177, 0.801596}, {-0.139230, 0.351644}, {-0.919758, 1.187038}, {-0.538770, -0.565291}, {1.101719, 0.094469}, {0.063713, 1.074669}, {0.544651, -0.008236}, {-0.043402, -0.182157}, {-0.337167, -0.066716}, {-0.942704, -0.275433}, {-1.247517, 0.659809}, {0.260576, -0.850054}, {0.328842, -0.795337}, {-1.158718, 0.621543}, {0.696945, -1.559381}, {-0.387067, -0.638698}, {-0.196632, 0.228895}, {0.300199, 0.872357}, {0.989715, 1.032305}, {-0.595253, 0.281982}, {-0.591831, -0.041140}, {0.274069, -0.351900}, {-0.204608, -0.274791}, {0.111010, 1.228848}, {-1.030237, -0.321911}, {0.451188, -0.908440}, {-1.157873, -1.048536}, {-0.773016, -0.742834}, {-0.068020, 0.052725}, {0.424745, -0.757197}, {-0.495433, -0.890633}, {0.095193, -0.673641}, {-0.838353, 0.958686}, {-0.070324, 0.364606}, {0.240110, -0.379039}, {0.814811, 0.773006}, {-0.123048, 0.360797}, {-0.383944, -0.049565}, {-0.384357, 0.170201}, {0.027846, -0.520829}, {0.509019, -0.721829}, {1.510086, -0.121824}, {0.461037, -0.152050}, {-0.062760, 0.456919}, {0.903696, -0.632184}, {0.147880, -1.655441}, {0.107131, 0.254212}, {-1.168225, 0.436568}, {1.645891, 0.720458}, {0.637719, -0.054386}, {-0.674512, -0.595368}, {-1.647293, -0.454644}, {-1.427878, -1.542565}, {-1.299486, -0.638739}, {-0.789832, 0.890510}, {-0.971617, 0.239988}, {1.162886, 0.122570}, {0.296613, 0.157020}, {-0.651558, -1.195472}, {-0.483987, -0.676177}, {-1.459346, 0.226026}, {-1.565833, -0.705405}, {0.562608, -0.783332}, {-0.335643, 0.629401}, {0.601555, -0.527161}, {0.172194, -0.279522}, {1.396232, 1.176078}, {1.057625, -0.239732}, {0.925509, -0.621106}, {-0.112643, -0.176105}, {-0.224907, -0.088044}, {-0.615717, 0.351970}, {-1.022447, -0.343888}, {-0.611137, 0.278950}, {-0.611510, -0.059484}, {-0.585823, -0.678989}, {-0.601954, -0.562345}, {-0.262591, 1.266941}, {-0.772093, 0.174441}, {-0.587666, 0.893304}, {0.111368, 1.608418}, {0.714706, -0.534446}, {-0.771247, 0.120513}, {0.318155, 0.438540}, {2.023913, 0.190916}, {-0.212721, 0.773555}, {0.232401, 0.319443}, {-0.251844, -1.318009}, {0.162669, 0.403618}, {0.827621, -0.529870}, {0.250448, -1.073482}, {0.059679, -0.063302}, {-0.194909, 0.064858}, {0.480359, 0.527630}, {0.037879, 0.460448}, {0.486415, -0.957618}, {0.451010, -0.068816}, {0.968128, 0.192947}, {0.831207, -0.164804}, {0.144330, -1.177113}, {-1.046468, -0.117025}, {1.453514, 0.529669}, {0.462780, 0.519148}, {0.355027, 0.727646}, {0.355796, 0.311839}, {1.776668, 0.186074}, {-1.419462, -0.435581}, {-0.360595, -0.117783}, {-0.309289, 0.349530}, {-0.530039, -0.873192}, {-0.106943, 0.925020}, {1.306105, 0.027449}, {0.580964, 0.705161}, {1.478512, -0.101863}, {-0.202531, 0.738568}, {-0.493564, -0.930668}, {0.268006, 0.343200}, {0.459762, 1.566772}, {-0.160910, 0.379268}, {0.629888, -0.503718}, {1.381070, -0.364317}, {0.307948, -0.047268}, {0.796512, -0.935058}, {-0.700082, -0.972416}, {-0.298262, -0.605478}, {-0.323136, 1.541209}, {-0.195020, 0.416722}, {-0.086115, 0.749763}, {0.435675, -0.521759}, {-0.104943, -0.146577}, {1.092303, 0.546935}, {0.274549, 0.086542}, {0.505962, 0.274669}, {-0.720219, -0.028282}, {0.761485, 0.999235}, {0.953266, 0.149321}, {0.633826, 0.108976}, {-0.930898, 0.531887}, {-0.401657, 1.460128}, {-1.032822, 0.380031}, {0.199604, 0.147336}, {-0.633607, -0.055812}, {-0.316084, -0.492567}, {-0.775544, -0.393868}, {-0.304902, 0.496941}, {0.587243, 0.404586}, {0.535787, -0.290660}, {0.526786, -0.492909}, {0.032885, -0.335402}, {0.254548, 0.025119}, {-0.007256, 0.956603}, {-0.781701, 0.182978}, {-0.594395, -0.051752}, {1.137163, 0.417077}, {-0.725425, 1.703746}, {0.203050, -0.823786}, {-0.093223, -0.599492}, {-0.171074, 0.434182}, {0.446139, -1.024946}, {1.307526, -0.924091}, {0.165343, -0.061759}, {0.847232, -0.364522}, {-1.687820, -0.966855}, {0.367350, 1.007379}, {0.462134, -0.629192}, {1.480619, 0.308647}, {-0.480776, -0.412441}, {-0.032728, 0.426328}, {-0.723946, 0.349359}, {-0.695635, 0.225437}, {0.093643, 0.801008}, {-1.148551, -0.246205}, {-0.049321, -0.459364}, {-0.241512, 1.553192}, {1.138608, 1.302721}, {0.263139, -0.527765}, {0.172326, 0.638467}, {-0.425811, 0.438227}, {-0.932956, 0.082939}, {-0.145653, -0.835906}, {0.099492, -1.396676}, {-0.730089, -1.456065}, {0.328898, 0.922454}, {-0.479136, 0.168375}, {-0.693307, -1.117508}, {0.434907, 0.255777}, {0.159500, -0.075837}, {0.606847, -1.786357}, {0.114103, -0.890503}, {0.475339, -0.639335}, {-0.501279, 0.909314}, {-0.461021, 0.340318}, {-2.371022, 0.240045}, {-0.663024, -0.078565}, {0.408487, 0.747418}, {-0.039952, 0.544522}, {-0.346095, -1.181014}, {1.313543, 1.313791}, {-0.286968, 0.049342}, {-0.985057, 0.416389}, {0.567016, -0.890193}, {-0.029613, -1.097792}, {-0.274942, 1.279869}, {0.840626, -0.071335}, {1.103612, -0.346434}, {-0.971668, 0.314411}, {-0.401788, -0.159312}, {0.876157, -1.020020}, {-0.187758, -0.633080}, {-0.737539, 0.950549}, {-0.537099, 1.220313}, {-0.354796, 0.504951}, {0.516333, 0.303805}, {0.744535, -0.050407}, {-0.305368, 0.196347}, {-0.539320, -0.584686}, {0.578355, 0.192718}, {-1.251327, 0.031665}, {-0.988681, -1.128213}, {-1.076868, 1.127315}, {-0.652836, -0.331953}, {-0.922967, 0.220209}, {0.721116, -0.345270}, {0.102160, -0.184497}, {0.724131, -0.729485}, {0.311939, 1.406437}, {-0.687354, -0.482095}, {-0.746110, 0.490688}, {-0.290505, -0.930634}, {1.203664, 0.171541}, {0.798127, 0.241126}, {-0.347300, 0.167841}, {-0.383096, 0.527781}, {0.231403, -0.662014}, {1.208195, -0.842100}, {0.118811, 0.382395}, {-0.971162, -0.657731}, {-0.109055, -1.321417}, {-0.166172, 1.000512}, {0.245685, 0.853006}, {1.179090, 0.148636}, {-0.722005, 0.218807}, {-0.356529, 0.394081}, {0.283431, -1.474497}, {-0.528565, -0.181279}, {-0.309054, -0.447532}, {-0.302059, -0.835447}, {0.063289, 0.197125}, {0.873344, 0.283293}, {-0.827399, 0.327898}, {-1.445307, 0.015543}, {1.134014, 0.449569}, {0.026380, -0.550346}, {-0.107964, 0.656922}, {0.551898, -0.361890}, {1.354513, -1.238748}, {0.259696, 1.783583}, {-0.954792, 0.686831}, {-0.745327, -0.404158}, {0.454100, -0.837450}, {0.087043, -0.950885}, {0.505512, 0.460524}, {0.404887, 0.789404}, {-0.037236, 0.441461}, {1.725802, 0.267412}, {0.797967, 0.244751}, {-0.978130, 0.515460}, {0.542536, -0.075439}, {0.712379, -0.497695}, {-0.212806, 0.608145}, {0.577898, -0.192766}, {0.489932, 0.990213}, {0.119053, -0.729816}, {1.097182, -0.576013}, {-1.201042, -0.794151}, {-0.120795, 0.066962}, {0.146414, 0.603197}, {0.026528, -0.603082}, {-0.800504, 0.268076}, {-0.343166, -0.407044}, {-0.102762, -0.303068}, {0.129492, 1.346782}, {-0.258398, 0.169313}, {1.243914, -0.592895}, {1.095122, 0.260779}, {-0.600781, -0.189894}, {0.240113, 0.082414}, {0.353061, 0.355369}, {0.420819, -0.911021}, {0.696589, 0.394239}, {-0.682780, 0.358780}, {0.063955, -1.517855}, {-0.322178, -0.074134}, {-0.974101, 1.406756}, {-0.526017, -0.353056}, {-0.640417, 0.340377}, {-0.182126, -0.411452}, {-0.488776, -1.599695}, {1.517429, 0.767395}, {0.603698, -0.721522}, {0.541078, -0.821337}, {0.110168, 0.163595}, {0.212353, -0.539387}, {0.117418, -0.754495}, {-0.155305, -0.255334}, {-0.119331, 0.141361}, {-1.467100, -0.792509}, {0.202781, 0.268023}, {-0.814643, -0.407787}, {0.137034, -0.791640}, {-0.789811, -0.493989}, {-0.336780, -0.653000}, {-0.759226, -0.386969}, {0.455847, 0.617339}, {1.664504, -0.591428}, {-0.206955, 0.421407}, {-0.567116, 0.215310}, {-0.634151, -0.216379}, {-0.474751, 0.577085}, {0.580540, 0.007682}, {0.431102, -0.313646}, {0.037617, -0.541906}, {0.586028, 0.437426}, {1.122127, 1.192700}, {0.679301, 0.617392}, {-0.266514, 0.750701}, {1.021989, 0.573764}, {-0.471908, -1.137463}, {-0.275688, -1.347824}, {-0.260820, 0.857808}, {-0.353317, -0.507878}, {1.482158, -0.115137}, {0.989099, -1.264611}, {-0.181237, -0.731317}, {-1.272231, 0.000604}, {-0.050286, -0.518716}, {0.906532, 0.073988}, {-0.725282, -0.708613}, {1.130826, 0.492829}, {0.382025, 0.118885}, {-0.289855, 0.327266}, {-0.356868, -0.127456}, {-0.497037, 0.347544}, {0.916516, -0.011213}, {0.795788, 0.833036}, {-1.108708, 0.654990}, {1.098447, -0.380100}, {-0.699273, 0.774193}, {0.342752, -0.535842}, {0.047643, -0.227671}, {1.274331, 0.341689}, {0.895537, -0.407677}, {-0.778889, -0.038155}, {0.698568, 0.098739}, {1.916364, -0.661903}, {-0.845148, 0.287349}, {0.837011, -1.241308}, {0.022716, -0.396469}, {-0.020420, -0.034983}, {-0.285681, -0.753360}, {-0.118651, -1.527316}, {-0.176143, 0.446362}, {0.130017, -0.415744}, {0.318507, 0.552840}, {-0.603890, 0.207048}, {-0.523459, 0.105243}, {-0.002344, -0.410590}, {0.476249, -1.748434}, {0.110030, -0.295667}, {-0.776678, -0.699187}, {-0.336088, 0.120044}, {-0.132220, 0.564894}, {-0.400230, -1.465552}, {-0.899290, 0.326598}, {-1.442301, -0.087643}, {-0.008753, -0.630739}, {0.390787, 0.192346}, {-0.340743, -0.440807}, {-1.539744, 1.205671}, {0.627614, 0.398445}, {0.127486, 0.357655}, {0.135552, 0.764774}, {0.518036, -0.218960}, {1.049276, -0.090579}, {-0.008401, 1.454761}, {0.003514, 0.918229}, {0.302454, 0.976231}, {-0.961992, -0.017294}, {0.076837, 0.668940}, {-0.348232, 0.509916}, {-1.436588, 0.235003}, {-0.084113, -0.570737}, {0.635977, 0.515143}, {-0.580761, 0.004320}, {-0.130124, 0.718512}, {-1.064332, 0.805427}, {1.314300, -0.425192}, {-0.597376, 0.040773}, {-0.369787, 0.951658}, {1.179303, 0.302642}, {0.309178, 0.951243}, {0.683143, -0.691633}, {0.595706, -0.308229}, {1.452309, 0.693933}, {-0.597845, 0.801738}, {0.458518, -0.343717}, {-0.149173, -0.241056}, {0.979689, 0.240095}, {-0.599037, 0.543307}, {0.354471, -1.145843}, {-0.020165, -0.398078}, {-0.123823, 1.399765}, {0.024307, 0.255874}, {0.390943, 0.200198}, {0.660994, -0.236146}, {0.874927, 0.787643}, {0.171618, 0.136452}, {0.225134, 0.175814}, {-1.009673, 0.213737}, {0.778509, -0.536733}, {0.659917, -1.701921}, {-1.047737, -0.614887}, {-0.561108, 0.215661}, {-0.185832, -0.245792}, {-0.486231, 0.531170}, {0.116419, -0.145595}, {0.019939, -0.695158}, {0.144234, -0.507506}, {-0.396990, -0.833085}, {0.375825, -1.907635}, {-0.080535, 0.196175}, {0.007163, 0.589929}, {-1.106312, -0.916138}, {1.084560, -1.289281}, {0.700913, -0.454858}, {1.690164, -0.645198}, {0.472295, 0.365814}, {-0.354035, -1.187006}, {-0.363422, -0.700427}, {-0.409595, -0.297748}, {0.222860, -0.488023}, {1.154380, -0.023766}, {-0.572994, 0.995388}, {-0.522744, 0.915831}, {-0.102298, 0.075968}, {-1.113661, 0.277819}, {-0.541258, 0.942888}, {0.144149, -1.421493}, {-0.813628, 0.518374}, {0.438114, -0.583365}, {-0.306953, -0.083300}, {-0.965428, -0.187021}, {-1.651694, 0.301327}, {-0.358049, 0.160427}, {0.494740, 0.212273}, {-0.475793, 0.129843}, {-0.513566, 0.206706}, {-0.789498, -0.454014}, {-0.506331, -0.677233}, {-1.191360, -0.684613}, {-0.473632, -0.505620}, {1.704961, -0.000282}, {-0.748426, 0.044751}, {0.722466, -0.271562}, {-0.114380, -0.029615}, {0.881983, 0.732634}, {-2.466091, 0.797042}, {0.107247, -1.069177}, {0.365094, -0.240360}, {0.860761, -0.392398}, {0.419712, 1.024297}, {-0.733678, -0.114491}, {-0.387299, -0.698591}, {-1.111876, -0.894044}, {-0.338478, 0.432863}, {0.374858, 0.592964}, {0.132022, -0.172552}, {-0.566581, 0.486986}, {-0.361814, -0.127256}, {-0.495429, -1.119817}, {-0.373163, 0.277704}, {-0.451895, -0.150489}, {0.676212, 0.462474}, {0.731097, 0.067339}, {-0.391580, -0.221534}, {0.702811, 0.805510}, {0.306927, -0.330470}, {0.202033, -0.281253}, {0.670677, -1.640630}, {-0.171426, 0.129238}, {0.855865, -0.001158}, {0.902835, -0.314898}, {0.258288, -0.817972}, {-0.246663, -0.050172}, {-1.298989, 1.057827}, {-0.194878, -0.869015}, {-0.989629, -0.909738}, {-0.566145, -0.028838}, {-0.537190, -0.250192}, {1.007348, 0.083241}, {0.351506, -0.080267}, {0.167228, -0.274140}, {0.523975, -0.383455}, {-0.693140, -0.400584}, {-1.377034, -0.099976}, {0.687119, 0.508089}, {0.624748, -0.713680}, {0.524963, 0.852304}, {-0.365119, 1.391765}, {-0.098955, -0.773518}, {0.099686, 0.092521}, {-0.191519, 0.113134}, {-0.246630, -0.849187}, {0.372718, -0.028201}, {0.209208, 0.168457}, {0.531034, 0.810682}, {-2.065181, -0.403745}, {1.662412, -1.025271}, {0.116164, -1.358371}, {0.871266, 0.684274}, {-0.601819, 0.436820}, {0.379071, -0.950469}, {-1.481672, 1.328396}, {-0.215309, 0.881097}, {1.543692, -1.302871}, {0.566876, -0.346706}, {-0.107790, 0.187282}, {-0.050962, 0.305967}, {2.234456, 0.245861}, {0.922211, 0.315870}, {0.170718, 0.332505}, {-0.173235, 0.269735}, {-0.034479, -0.147379}, {-0.910476, 0.549261}, {-1.482071, 0.073635}, {-1.006192, -0.257727}, {1.380736, 0.159414}, {0.133536, -0.518567}, {0.452510, -0.297029}, {0.506554, 0.634800}, {-0.223515, -0.113593}, {1.640303, -0.303890}, {0.451081, -0.579022}, {-0.423077, -0.310128}, {-0.515610, 0.197095}, {1.449878, -0.575191}, {0.595091, -0.861876}, {0.467010, 0.214356}, {1.126815, -0.412791}, {-0.768978, 0.928791}, {0.662096, 0.992854}, {-0.870112, 0.867863}, {-0.444760, 0.695527}, {0.545433, 0.548246}, {0.900893, 1.440884}, {1.009321, -1.093170}, {0.002783, -0.661035}, {0.446845, -0.962453}, {1.071007, 0.104193}, {0.701488, 0.155886}, {-1.495756, -1.595266}, {0.037920, -0.027757}, {-0.816584, 0.442122}, {1.024597, 0.061760}, {0.372463, 0.656436}, {0.193900, -1.113707}, {0.702296, 0.063060}, {-0.387018, 0.640494}, {0.472535, 0.526097}, {-0.113295, -0.461936}, {-0.549302, -0.072353}, {0.113877, 1.728784}, {-0.503031, 0.465992}, {-1.800512, 0.344290}, {-0.291058, 0.191364}, {-1.383239, -0.639046}, {0.301438, 0.939880}, {-0.887944, 0.532416}, {-0.337686, -1.497391}, {-0.273128, 0.170892}, {-0.187554, 1.292625}, {-0.335620, 0.813804}, {0.302649, 0.115870}, {-0.125463, 0.244516}, {0.775593, 0.754042}, {0.726695, -0.656969}, {0.888387, -1.134760}, {1.275522, -0.250979}, {-0.736736, -0.023197}, {-0.722655, 0.071534}, {0.398133, -0.225856}, {-0.158094, -0.713822}, {-0.187789, 1.530984}, {0.066136, -0.285781}, {0.337437, 0.069203}, {-1.522060, 0.359290}, {-0.410925, 0.715260}, {-0.348957, 0.792795}, {-0.822869, 0.817856}, {0.215875, -0.611351}, {-0.606455, 0.320282}, {1.436453, -0.107341}, {-0.330349, -1.194834}, {0.572256, 1.303348}, {1.090097, 1.118251}, {0.745744, -0.906311}, {-1.122036, -0.363927}, {-0.352830, 0.069443}, {0.173709, 0.298217}, {1.233522, 0.305900}, {0.226477, -0.043980}, {-0.722420, 0.493256}, {0.557195, 0.058823}, {-1.094416, -0.312172}, {0.071648, 0.977559}, {-0.387061, 0.773792}, {0.338082, -0.019251}, {0.163224, -0.330960}, {0.610427, 0.371691}, {0.323763, -0.522994}, {-0.668372, -0.370236}, {1.242604, 0.090453}, {-1.050305, -0.440150}, {0.388379, -0.214487}, {-0.479460, -0.280957}, {-0.581688, 0.708546}, {-0.651918, -0.699252}, {-1.289294, 0.894307}, {0.430920, 1.134885}, {-0.140695, 0.119391}, {-0.113397, 0.141629}, {-0.224160, -0.849461}, {0.145152, 1.010905}, {0.114341, 0.319432}, {-0.731503, 0.963791}, {-0.805791, -0.234161}, {-0.097786, -0.078454}, {1.247790, 0.056807}, {-0.066401, -0.334968}, {0.675039, -0.744820}, {-0.181113, -0.290322}, {0.651336, 0.530368}, {-1.249633, -0.321314}, {-0.289785, 0.448466}, {0.666290, 1.196834}, {0.623286, -0.328105}, {-0.469083, 0.311728}, {-0.641303, -0.664674}, {-0.033907, -0.670533}, {0.177868, 1.697506}, {-0.216707, 0.202837}, {-0.186939, -0.529367}, {0.022609, -0.126800}, {0.203477, -0.579855}, {-0.230490, 1.011908}, {0.162921, 1.168193}, {0.885725, -0.666452}, {0.277346, 0.026881}, {0.127636, -0.291993}, {0.343859, 0.254767}, {0.937021, -0.240389}, {-0.450499, -0.519208}, {0.026306, 0.871227}, {-0.532201, 0.361956}, {0.510303, -0.387441}, {-0.746218, 0.107938}, {-0.043113, 0.416857}, {-0.765734, -0.057674}, {-0.976013, -0.471322}, {-0.608322, -0.386790}, {-0.153345, -0.142873}, {0.282707, -0.174705}, {0.908893, -0.288510}, {1.248578, -0.267686}, {-0.733607, -0.318778}, {0.711804, 0.106524}, {0.730638, -0.818837}, {-0.143297, 0.775292}, {0.826449, -0.764265}, {-1.053740, 0.429313}, {0.093451, -0.285474}, {0.092797, -1.313155}, {-0.990341, -0.497315}, {0.566588, 0.912216}, {-0.641365, -1.513570}, {-0.399701, 0.419908}, {0.550336, 0.454210}, {1.130919, -1.011306}, {-0.648588, 0.724713}, {1.530720, -0.329322}, {0.240109, 0.297342}, {-0.803036, -0.672687}, {0.558095, 0.210214}, {-0.415771, 0.335389}, {-0.446871, -0.080301}, {0.439153, 0.420859}, {0.454300, -0.120721}, {0.210916, -0.112178}, {-0.409692, -0.248721}, {-0.879181, -0.650745}, {0.314275, 0.157443}, {-0.127992, 0.459773}, {0.189201, -0.437353}, {-0.199317, 0.335634}, {0.926867, -1.219475}, {0.990475, 0.115756}, {-0.596768, 0.519271}, {0.544668, 0.177830}, {0.025311, 0.718018}, {0.865983, -0.396329}, {0.931238, 0.051218}, {-1.306796, 0.890281}, {-0.038267, 0.417608}, {0.423411, 0.011136}, {-0.591386, -0.028572}, {-0.659057, -0.868477}, {-0.454503, -0.183610}, {-1.296091, 0.623354}, {-0.369003, -1.032546}, {0.687142, -0.539728}, {0.702910, 0.311785}, {0.486632, -0.654871}, {-0.698156, 0.479333}, {-0.286491, 0.023513}, {-0.061237, 0.264710}, {0.815363, -0.724906}, {0.080431, 0.452235}, {0.209167, -0.366842}, {0.238600, -1.015582}, {0.236585, 1.119290}, {0.115878, -0.511488}, {0.417193, -0.342133}, {-0.132619, -0.383681}, {-0.309108, -0.467185}, {0.389856, -0.296845}, {0.862805, -0.845385}, {0.163740, -1.328876}, {0.841628, -1.134586}, {-1.314638, 0.983453}, {0.007594, -0.151851}, {0.491880, 0.589396}, {0.410562, -0.533815}, {0.152744, -0.382076}, {-0.814165, -0.726665}, {-1.054786, 0.399620}, {-0.604055, 0.219815}, {0.195637, -1.204522}, {-0.218163, 0.389220}, {-1.060887, -0.365853}, {0.076152, 0.972619}, {0.106557, -0.550138}, {0.350506, -0.580934}, {0.899491, -1.202793}, {0.006987, -0.237220}, {-0.621779, 0.109460}, {0.758860, 0.378667}, {0.665073, 0.149904}, {0.514973, -1.076146}, {-0.531363, -0.151537}, {-0.160327, -0.372274}, {1.439986, -1.868230}, {0.189739, 0.119885}, {0.203151, 1.214735}, {0.227369, -0.449251}, {-0.320953, 1.173650}, {0.362700, -0.413635}, {0.104156, 0.742685}, {0.786895, 0.217765}, {0.461444, -0.383361}, {-0.026425, 0.050263}, {-0.700833, -0.176479}, {0.516268, -0.266494}, {0.542822, -0.196286}, {0.972150, 0.282374}, {0.373345, -1.661969}, {0.848982, -0.275416}, {-0.147993, 0.557783}, {-1.235018, -0.425926}, {-0.990208, -0.819959}, {-0.502916, 0.897826}, {-0.963431, 0.100756}, {-0.539236, -0.495820}, {0.043163, -0.313743}, {0.268113, -0.401802}, {0.094456, 0.929705}, {0.434827, 0.666465}, {-0.285961, 0.540364}, {-0.067659, 0.148652}, {-0.343734, 1.625959}, {0.941489, -0.334072}, {-0.339727, -0.526445}, {0.793149, 0.946932}, {-0.398235, 0.623877}, {0.264790, -0.715621}, {-1.011724, 0.322794}, {1.384937, 0.455970}, {1.454257, 0.048507}, {-0.306816, -1.428050}, {0.370468, 0.733515}, {0.850482, 0.067026}, {-0.026520, 0.315161}, {0.553367, -1.038959}, {-1.381139, 0.169341}, {-0.126396, 0.774954}, {0.579820, -0.324341}, {0.690277, -0.552866}, {0.042603, 0.250999}, {0.234958, -0.328548}, {-0.034987, -0.427424}, {0.017550, 1.027859}, {0.639405, 0.074327}, {-1.079853, 0.773206}, {-0.255093, -0.538056}, {-0.516779, 0.552364}, {0.588249, -0.122769}, {-0.180270, -0.526765}, {0.281459, -0.573820}, {-0.597178, 0.884251}, {-1.459452, 0.521668}, {0.475132, 0.670896}, {0.364260, -0.003726}, {0.162263, 1.430702}, {1.002323, 1.191997}, {0.593734, 1.105144}, {0.455673, -1.069412}, {-0.566892, -0.153912}, {-0.401493, 0.730293}, {-0.616850, -0.357030}, {0.131704, 0.877433}, {0.448159, 0.531570}, {0.707994, 0.388152}, {-1.120399, -1.558184}, {0.205040, 0.110543}, {0.667577, 0.900941}, {-1.023609, -0.438459}, {0.592556, -0.786459}, {-0.218398, -0.203380}, {0.274252, 0.404389}, {-0.458191, 1.011445}, {0.222179, 0.858687}, {0.029628, -0.040130}, {-0.290997, -0.035703}, {0.309122, -1.492022}, {-1.010844, 0.589316}, {-0.356162, 0.305040}, {0.261650, 0.718863}, {0.434287, 0.022466}, {-0.076320, -0.343857}, {0.183141, 1.026684}, {0.784650, 0.184908}, {0.701212, 0.267810}, {0.525909, 1.299042}, {-1.685660, 0.350329}, {-0.593831, -0.228072}, {0.017935, 0.860203}, {0.840364, -1.130071}, {1.015367, 1.442451}, {-0.901634, -0.746853}, {0.199565, -0.821338}, {-0.313785, 0.748286}, {0.090435, 0.856189}, {-0.393746, 1.621984}, {-0.703148, 0.813511}, {-1.461475, 0.879518}, {0.943104, -0.598617}, {0.393415, -0.321067}, {0.352488, -0.808631}, {-0.262355, 0.074378}, {0.444508, 0.028535}, {-1.235967, 0.087614}, {-0.366743, 0.274720}, {-1.534213, 1.187011}, {-1.288413, 1.152383}, {-0.176366, 0.392408}, {-0.479891, -1.289108}, {0.006065, -2.244152}, {-0.200774, 0.584892}, {0.841201, 0.359442}, {0.042903, 0.605595}, {-0.050008, 0.526026}, {0.545172, 0.114942}, {-0.741202, 0.452490}, {-0.662675, 0.502251}, {-0.293925, 0.361124}, {-0.174266, 0.891888}, {0.214914, -0.044729}, {1.076459, -0.324856}, {0.028362, -0.712596}, {0.119129, 0.420191}, {0.290109, -1.690392}, {-0.534984, -0.709829}, {0.928031, 0.340022}, {0.329803, -0.001821}, {-0.789933, -0.997637}, {0.525651, -0.947355}, {0.800005, 0.294846}, {-0.940716, -0.342722}, {1.153485, -0.757920}, {-0.372701, -0.015358}, {0.413703, 0.474207}, {0.554610, -0.587293}, {0.609088, 0.282538}, {-0.389165, -0.999838}, {-0.501062, 0.425428}, {0.506568, 0.864824}, {0.467536, 0.041527}, {0.413553, -0.972673}, {-0.784710, -0.456333}, {-0.591675, -0.081141}, {-0.000096, -0.918489}, {-0.741971, -0.673887}, {0.423698, 0.133942}, {-0.353825, -0.248892}, {0.265903, 1.104794}, {1.155745, -0.487131}, {-1.230837, 1.182218}, {-0.039358, -1.024105}, {-0.126243, -0.422831}, {0.083741, 1.333631}, {-0.582043, -0.167835}, {-0.651064, -0.716060}, {-0.933496, 1.031392}, {0.285776, 0.119386}, {1.790267, 1.839585}, {0.673148, -0.036901}, {0.060941, 0.392402}, {0.439779, 0.335930}, {0.482075, -0.508116}, {0.166439, -0.478669}, {1.468145, 0.050076}, {0.697232, 0.408675}, {-0.276139, 0.399703}, {0.376897, -0.613126}, {0.465563, -1.169737}, {-1.834874, 0.539662}, {-0.091337, 0.444562}, {-0.997118, 0.098997}, {-0.233274, -0.598737}, {-0.989027, -1.117883}, {0.624755, 0.428710}, {-0.375702, -1.212512}, {-1.056685, 0.388795}, {-0.909594, 0.317522}, {-0.356905, -0.074151}, {0.524995, 0.703629}, {0.314174, -0.403816}, {-0.491192, 1.182237}, {-0.926085, -1.084090}, {-0.017806, 0.842876}, {0.440742, -0.130747}, {0.272952, 0.081986}, {0.441477, -0.697158}, {0.259341, -2.099767}, {0.831863, -0.033636}, {-0.502615, -1.206727}, {0.555998, 0.859499}, {-2.056364, 0.396201}, {0.341466, 0.784581}, {0.343672, 1.187463}, {1.274795, -0.151500}, {-0.628121, 1.454649}, {0.565032, -0.448605}, {-0.207750, -0.820005}, {1.175663, 0.211856}, {-1.633000, 1.122887}, {-0.291601, 2.700069}, {-0.622804, 1.831482}, {-0.301059, 0.509034}, {-0.427513, 0.001459}, {-0.341017, -0.116875}, {0.022551, -0.314193}, {-0.918960, -0.674715}, {-0.129296, -0.117801}, {0.786287, -1.378251}, {-0.451442, -1.084505}, {0.942049, -0.109402}, {-0.219356, -0.655816}, {-0.878586, 0.229613}, {0.675175, -0.893381}, {-0.932964, -1.161234}, {0.214065, -0.396179}, {-0.277875, 1.353829}, {0.086688, -0.992670}, {0.266658, 1.190433}, {-0.665654, 0.447818}, {-1.073475, -0.902468}, {0.561274, 1.066952}, {0.439581, 1.398037}, {-0.038367, -0.253666}, {-0.180841, -0.607550}, {-0.663332, 0.315716}, {-0.204138, -0.260854}, {1.300259, 0.483273}, {0.488196, -1.506948}, {-1.576188, -0.122042}, {-0.161309, -0.070824}, {-0.163122, -0.342865}, {-0.647706, 1.966371}, {-0.912235, -1.511959}, {0.246138, -0.881132}, {-0.400870, -0.146707}, {1.873068, -0.401651}, {-0.246960, 1.020948}, {-0.309774, -0.749670}, {-1.658745, 0.706234}, {0.137746, 0.464169}, {-0.128249, 1.229660}, {0.485569, -0.862653}, {-0.314748, -0.798912}, {0.596327, -2.260403}, {-0.739134, -0.774303}, {0.559885, 2.133758}, {-0.378982, -0.458096}, {-0.645429, -0.411828}, {0.442957, 0.412317}, {0.062638, -0.130068}, {0.913193, 0.872129}, {-0.000645, -0.659925}, {-0.611296, 0.051654}, {0.463594, 0.106210}, {-0.172544, 0.250975}, {-0.820128, 0.059186}, {1.244089, -0.241306}, {-0.606408, 0.162598}, {-0.516257, -0.453431}, {0.379360, -0.010924}, {1.694404, -0.098512}, {0.740398, -1.163674}, {-0.086404, 0.808617}, {-0.788179, 0.497859}, {0.518954, 1.316377}, {-0.268101, -0.000552}, {-0.011397, 0.127380}, {-0.776983, 1.310111}, {1.155819, -0.536423}, {0.325867, 0.129875}, {-0.305559, 1.698206}, {1.469264, 1.171590}, {0.052020, 1.645200}, {-0.475098, 0.752333}, {-0.478576, 1.051189}, {0.209720, -0.846175}, {0.336027, 1.281707}, {-0.457927, 0.978607}, {0.434299, 0.603314}, {0.819164, -0.707148}, {0.285992, 0.200020}, {0.903948, 0.841191}, {-0.374723, 0.784422}, {0.270358, -0.432780}, {-1.131503, -0.204865}, {0.998721, -0.562161}, {2.709929, 0.333403}, {0.277214, -0.599034}, {-1.049311, 0.119009}, {-0.022257, -0.188019}, {1.186738, 0.666140}, {0.855026, -0.173047}, {-0.518785, 0.244153}, {1.443967, 0.472201}, {0.268845, 0.765957}, {-0.262575, -0.227543}, {-0.178477, -0.237919}, {0.718803, -1.198294}, {0.296576, -0.928266}, {-0.265587, 0.333848}, {0.004683, 0.050916}, {0.746835, -0.077362}, {-0.848756, 0.639052}, {-0.435768, 0.677006}, {-0.761960, -0.673618}, {0.483697, -0.006953}, {0.859446, 0.342013}, {0.652033, 1.150497}, {0.279404, 0.172724}, {-1.654868, -0.062761}, {-0.628006, 1.229600}, {0.434866, 0.453249}, {0.674872, -0.018098}, {-0.880481, 0.632858}, {0.357744, -1.100971}, {0.576850, -0.473425}, {1.084853, -0.458153}, {-0.135107, -0.068785}, {-0.519318, -1.097185}, {-0.391322, -0.857973}, {0.105697, 0.637781}, {1.012647, 0.768231}, {0.032431, -0.712690}, {-0.204606, -0.459269}, {0.385121, 0.683265}, {0.360634, -0.324071}, {0.146076, -0.206186}, {-0.206886, -0.280858}, {0.331549, -0.657394}, {0.877392, 0.663666}, {0.395278, 0.505377}, {0.756041, 0.859819}, {-0.571644, -0.580026}, {0.612494, -0.767403}, {0.440062, -0.276920}, {0.205130, 0.951105}, {-0.082089, 0.424510}, {-0.388500, -0.817454}, {-0.297097, -0.030734}, {0.564334, 0.170313}, {-0.046735, -1.039128}, {0.236019, -0.606694}, {0.580484, 0.228738}, {0.732596, 1.402753}, {0.684455, 0.312711}, {-0.114287, 0.351727}, {0.132644, 0.482891}, {-0.052996, 0.413845}, {-0.092510, 0.323390}, {-1.249163, 0.744762}, {-0.144000, -0.150784}, {0.245751, -0.037541}, {-0.265020, 0.824606}, {0.166448, -0.503386}, {0.221548, 1.011519}, {0.705554, 0.734803}, {-0.449412, 0.766934}, {-0.041904, 0.103437}, {-0.589535, 0.745306}, {0.178707, 0.543289}, {-0.049604, 0.417483}, {-1.320194, 0.671440}, {0.618327, 0.293337}, {-0.035204, -0.955884}, {0.696789, 0.975314}, {0.335561, -0.397880}, {-0.101238, -0.789334}, {-1.353433, 0.224343}, {-1.536268, 0.154368}, {0.290941, 0.264984}, {0.054972, 0.497049}, {0.249733, 0.304852}, {0.072880, 0.649790}, {-1.092497, -0.508302}, {-0.580980, -0.404179}, {0.684158, 1.161387}, {1.027268, 0.419341}, {-0.575905, 0.422229}, {-0.586725, 0.243471}, {1.044492, 0.197131}, {-0.818624, -0.339106}, {1.028786, 0.649399}, {0.128927, 0.552989}, {-0.381191, -0.812393}, {0.255808, -0.783620}, {-1.000067, -0.814667}, {0.937145, 0.594671}, {-0.138406, 0.009326}, {0.646863, 0.329219}, {0.114717, 0.727041}, {0.534733, -0.274257}, {-0.076583, 2.064369}, {-0.061055, 0.387069}, {0.587603, -0.573761}, {-1.432342, 0.080705}, {0.517872, -0.933701}, {0.257925, -1.369532}, {-0.882056, 0.033029}, {0.272729, -0.396548}, {0.898916, 0.232792}, {-0.323588, 0.996638}, {1.414689, -0.936268}, {-0.063766, 0.848570}, {-0.631058, -1.026964}, {0.144042, -0.577972}, {0.620716, -0.672317}, {1.311640, 0.177935}, {0.355140, -0.394373}, {-0.892820, 0.040002}, {0.669596, -1.423798}, {-0.728338, 0.281565}, {-0.158685, -0.108162}, {0.294872, 0.143540}, {0.154297, 0.845158}, {-0.614381, 0.567366}, {0.342103, 1.116219}, {0.264975, -1.064063}, {-0.177622, -0.849517}, {-0.539107, 0.444928}, {0.552126, -0.015861}, {-0.212621, 0.081190}, {-0.653462, -0.566566}, {0.092306, -0.221675}, {1.100202, 0.129533}, {1.004146, 0.906987}, {-0.450678, -0.139092}, {-0.041574, 0.880738}, {1.077768, 0.691243}, {0.683594, 1.009049}, {-0.782169, 1.735141}, {0.450257, 0.439635}, {0.529029, 0.258264}, {1.138549, 1.986809}, {-1.302507, 0.020303}, {-0.283556, 0.445303}, {-0.718645, -0.162901}, {-0.043436, 0.596306}, {-0.253106, 1.007761}, {0.511255, -0.417590}, {0.747033, 0.272022}, {-0.558437, -0.347778}, {0.160240, -0.682185}, {-0.958911, -0.030034}, {-0.156077, 0.031554}, {-1.151408, 0.317689}, {-0.063615, 0.309607}, {0.652097, -0.090736}, {0.093596, 0.162455}, {-0.179022, 1.654394}, {-0.242415, -1.079423}, {0.397297, -1.272118}, {-0.182965, 0.130558}, {-1.227359, 0.503225}, {0.010313, 0.859745}, {-0.230950, -0.566212}, {-0.237624, 0.329725}, {0.962370, -0.180738}, {-0.382887, -0.314282}, {-0.606405, 1.263377}, {0.178244, -0.050770}, {1.157081, -0.144043}, {1.081460, -0.125683}, {0.287172, 0.296327}, {-0.145758, 0.931086}, {-0.235046, 0.421208}, {-0.476461, 0.823257}, {-0.425877, -0.436417}, {-0.164299, 0.097882}, {0.438670, 0.627963}, {-0.690073, 0.733569}, {0.386280, -0.534213}, {-1.074264, -0.832657}, {0.059724, 0.429346}, {0.241225, -1.310186}, {-0.041200, -2.185164}, {0.104350, 0.419205}, {0.259056, -0.248550}, {1.271667, 0.475120}, {-0.218242, 1.164193}, {0.346768, -0.150378}, {-0.846548, 0.308488}, {-1.063304, -0.776317}, {1.166478, -0.454347}, {0.033053, 0.179463}, {-0.332293, -0.312112}, {-0.403124, -0.863969}, {-0.115242, 0.881201}, {-0.443942, -0.049482}, {0.576722, 0.121133}, {1.115690, -0.395430}, {-0.967709, -0.283118}, {0.238138, 0.015244}, {-0.346183, -0.321679}, {-0.184817, -0.803985}, {0.428226, -0.424139}, {0.294728, 1.082187}, {0.146915, -0.379303}, {-0.524167, 0.099747}, {0.586104, -0.292682}, {0.078394, 0.960573}, {1.670460, 0.570454}, {0.535695, 0.279784}, {-0.059247, 1.179067}, {0.193284, 0.103453}, {0.198475, 1.316057}, {-0.354204, -0.801039}, {-1.095112, -0.629114}, {-0.739693, 0.109626}, {-0.669776, -1.101214}, {-1.119037, -0.827679}, {-0.697044, 0.582501}, {0.670182, -0.339850}, {1.052632, -1.151181}, {-0.013924, -0.148582}, {0.676350, -0.382496}, {-0.609900, 0.145339}, {-0.467053, -1.060301}, {0.329805, 1.116336}, {-0.657195, -0.381897}, {0.144469, 0.365412}, {-0.455678, 0.492839}, {0.164257, -0.588328}, {-0.215978, -0.137108}, {0.885806, 0.550884}, {-0.512770, -0.358695}, {-0.059087, 0.164926}, {-0.401278, -0.857801}, {0.648031, -0.168120}, {-0.175814, -0.106801}, {1.103215, -0.147023}, {-0.173378, -1.161128}, {0.048200, 0.186641}, {0.382578, 0.367532}, {0.470646, 0.681831}, {-0.094808, 0.385076}, {-0.227419, -0.100211}, {0.752327, 1.031990}, {0.325679, -0.929947}, {-1.252363, 0.747342}, {0.611128, 0.470173}, {-0.717586, -0.267591}, {-1.351702, 0.677071}, {-0.216029, 0.531468}, {0.115357, 0.016478}, {-1.068851, 1.084321}, {0.464010, 0.510275}, {1.225770, -0.765537}, {0.508388, -0.879914}, {-0.865601, -0.344538}, {0.685346, 0.515833}, {-0.637203, -0.617789}, {0.279486, -0.543520}, {0.897987, -0.208160}, {-0.677693, -0.780875}, {-0.760403, 0.397810}, {0.184177, 0.176928}, {-1.069590, -0.614911}, {-0.132476, 0.356640}, {-0.036611, -1.348685}, {0.173300, 0.074283}, {0.665913, 0.252531}, {0.876800, 0.368352}, {0.239620, 1.213974}, {0.392571, 0.197044}, {1.445377, 1.168005}, {-0.351908, -1.245911}, {-0.200333, -0.246884}, {1.165079, 0.269904}, {1.102148, 0.936739}, {0.415018, -0.692267}, {0.695930, -0.610682}, {0.337706, -0.194200}, {-0.406360, -0.428313}, {2.001919, 0.298601}, {0.040240, 0.021280}, {0.476985, -0.207150}, {-0.955785, 2.342469}, {0.167188, 0.627934}, {0.278484, -0.586048}, {-0.908941, 0.243936}, {-0.146000, -0.877617}, {0.192032, -0.244236}, {0.975606, 0.244268}, {-0.170990, 0.257347}, {0.764497, -0.551919}, {0.058791, 0.682466}, {0.065943, -0.984803}, {-0.912431, 0.368831}, {0.855040, 0.067306}, {0.749915, -0.835586}, {0.838403, -1.238493}, {-1.483938, -0.123001}, {-0.557550, -0.923933}, {-0.771014, 0.386390}, {0.273899, -0.385988}, {0.750930, -0.659754}, {0.777048, 1.433688}, {-0.209220, 0.937272}, {0.205420, -0.235356}, {0.414937, 0.418160}, {0.718236, -0.451301}, {-0.186269, -1.322922}, {-1.920077, 0.476052}, {-1.398596, 0.784435}, {-0.256580, 0.180031}, {-0.532659, 0.457304}, {-0.384892, -0.039057}, {-0.055613, -0.548142}, {0.527916, 0.194822}, {0.823368, -0.281136}, {0.619060, -1.874924}, {1.444115, 0.480538}, {-0.819634, 0.380911}, {-0.423061, -0.352648}, {0.834671, 1.128296}, {-0.327942, -0.116678}, {-0.313019, 0.264847}, {-0.887367, -0.196781}, {0.102331, -0.425392}, {0.586136, -0.513125}, {-0.392544, 0.760032}, {0.048821, -0.120578}, {-0.659257, 1.355152}, {0.071198, -0.123784}, {-0.611575, -0.162787}, {0.600874, 0.427984}, {-0.438527, -0.718199}, {1.021030, -0.206658}, {-0.040177, 0.469484}, {-0.097920, 0.431053}, {-0.227448, 0.032859}, {0.438377, -0.490723}, {-0.127967, -0.318678}, {0.530951, -0.205032}, {0.306926, -1.611728}, {-0.155619, 0.005610}, {0.364185, 1.075986}, {-0.355830, 1.056994}, {-0.416081, 0.881061}, {-0.168114, 0.891871}, {0.318273, 0.022034}, {0.045802, -0.498750}, {0.874723, -0.261830}, {2.041322, 0.581367}, {-0.434688, -0.889884}, {-0.625497, -1.424039}, {-0.916101, -0.012513}, {0.301928, -0.119459}, {0.054875, 0.719308}, {0.113292, -0.985813}, {-0.256198, 1.240920}, {0.110794, 0.058590}, {0.475235, 0.043136}, {0.265904, 0.466909}, {0.569717, 1.513256}, {2.460579, 0.347629}, {-0.583997, -0.395316}, {1.412936, -0.136881}, {0.257743, -0.020675}, {-0.773710, 0.598378}, {-0.155740, 0.175291}, {0.708158, -0.303414}, {0.128797, -1.688465}, {-0.944673, 0.178251}, {-0.419667, -0.800480}, {1.015229, 0.451624}, {-0.563132, -0.098941}, {1.022619, 0.269203}, {0.544089, -0.558886}, {0.285403, -0.945592}, {-0.249927, -0.639200}, {0.616154, 0.448953}, {1.538937, 0.176176}, {-1.072722, -0.731432}, {2.202183, -1.085427}, {-0.187007, 0.862339}, {-0.009781, -0.919787}, {0.882595, -0.224292}, {0.328335, -1.466478}, {-0.425207, -0.406182}, {0.230537, 0.884368}, {-0.295215, -0.639698}, {-1.490884, 0.427221}, {1.247354, 0.295467}, {-0.810296, 0.889553}, {1.136726, 0.000428}, {-0.448626, -0.265578}, {-0.375165, -0.970000}, {-0.029743, 1.329743}, {0.191118, -0.149061}, {-1.198112, 0.166633}, {-1.072263, 0.604945}, {1.319951, 0.678233}, {-0.286881, 1.447051}, {-0.000431, -0.790107}, {-0.927154, -0.720568}, {1.244388, 0.126044}, {0.361372, -0.563810}, {1.786158, 0.068526}, {0.652693, -0.233381}, {-0.956019, -0.446398}, {-1.257622, -0.253433}, {0.262294, 0.421673}, {1.178025, 0.259483}, {-0.138056, 0.076554}, {-0.338284, -0.760501}, {0.238752, -0.363470}, {-0.467720, -0.613917}, {1.727196, -2.032936}, {0.453188, 1.148454}, {-0.860575, -0.211261}, {-0.134673, -0.149191}, {0.089986, -0.837997}, {-0.421324, 0.572281}, {-0.154263, 0.793297}, {-0.068541, -1.226925}, {-1.024731, 1.765286}, {0.321293, -0.655162}, {-0.381602, 0.084867}, {-0.761043, 0.072325}, {-0.153164, -0.580169}, {1.095428, -0.725517}, {-1.360859, -0.509727}, {-0.015713, 1.146405}, {0.080499, 0.991718}, {-0.037406, 0.203660}, {0.437657, 0.772791}, {-0.335827, -0.643198}, {-0.748036, 1.554296}, {0.056139, 0.540525}, {0.855326, 1.251389}, {1.512833, 0.127560}, {-0.335811, -0.685869}, {0.049175, -0.612331}, {0.744695, 0.303599}, {0.086665, 0.554790}, {-1.437300, -0.698848}, {1.208241, 0.809530}, {-0.368646, 0.188188}, {0.918053, 2.303752}, {0.542692, 0.198394}, {0.895487, -1.142547}, {1.427584, -0.139881}, {0.366063, -0.559492}, {0.615816, -0.518515}, {1.683531, 0.689662}, {-0.561367, 0.740093}, {0.136173, 0.685102}, {0.676639, 0.746691}, {0.409337, -1.146213}, {-0.636375, 0.027888}, {0.588745, 0.274056}, {-0.722872, 0.098504}, {-0.671533, 0.012166}, {1.011527, 0.719796}, {0.081135, -0.237933}, {-0.318500, 0.963256}, {-0.817222, 0.191993}, {-0.244338, 0.114244}, {-0.596279, -0.365810}, {-0.075441, 1.479957}, {-0.791400, 0.528275}, {0.028476, -0.288631}, {0.165929, -0.171160}, {0.275183, 0.915583}, {0.295522, -0.680658}, {0.488326, 0.104785}, {-0.735568, -0.701452}, {-0.082936, -1.234151}, {-0.944770, 0.415823}, {-0.723673, 0.661138}, {0.020222, -0.209032}, {0.744207, 1.798693}, {-0.650645, 0.033519}, {-1.346394, -1.296518}, {0.979960, -1.559900}, {0.346991, -0.097270}, {0.844271, -0.832661}, {-0.627946, -0.340953}, {0.648317, -0.668772}, {1.035056, 0.096494}, {-0.374343, 0.301709}, {-1.959191, 0.184104}, {0.354760, 0.554715}, {0.461264, -0.291802}, {-1.445191, -0.676835}, {-0.390066, 0.002849}, {-1.243483, -0.254016}, {0.756660, -0.152519}, {0.449951, -0.361801}, {0.032053, 0.448066}, {0.301092, -0.018617}, {0.919110, -1.106308}, {0.688230, -0.751883}, {1.443475, 0.290925}, {-0.336814, -0.202997}, {0.194678, 0.132777}, {0.438428, -0.932498}, {-0.005527, -1.612383}, {-0.065145, -0.331485}, {0.569241, 0.575176}, {-0.973392, 0.141843}, {-2.301017, 0.881275}, {0.784561, 0.317932}, {-0.077933, 0.914512}, {0.087316, -0.135682}, {0.092940, -1.181121}, {-1.310608, 0.288132}, {-0.892082, -1.676985}, {0.916083, 0.042083}, {-1.244578, 0.624427}, {-0.334890, 0.718718}, {-0.741767, -0.347100}, {-0.416327, -0.223633}, {0.086690, 0.939596}, {0.888409, -0.085335}, {0.625874, 1.037141}, {0.722036, -1.315310}, {-0.335910, -0.880128}, {-0.565481, -0.047599}, {0.935371, -0.398854}, {-0.727068, 0.164967}, {-0.431810, -0.025259}, {0.528973, 0.176538}, {-0.620117, -0.164306}, {0.113693, -0.756706}, {-0.026549, -0.082517}, {0.366109, -0.935198}, {0.574120, -0.696891}, {-0.329320, -1.004717}, {0.167355, -1.385869}, {-1.184704, 0.231683}, {-1.687510, 0.741804}, {0.460393, 0.417694}, {0.913381, -0.623551}, {-0.025182, 0.652840}, {0.149389, 1.580919}, {0.046797, 0.067857}, {0.445068, -0.193108}, {-0.087060, 0.449112}, {0.444716, 1.154858}, {-1.680048, -1.100377}, {0.060122, 1.288340}, {1.811764, 0.294464}, {0.172455, 1.302739}, {-1.053456, -0.391417}, {-0.932098, -1.179288}, {0.822615, 0.311778}, {-0.593686, -0.517305}, {0.592373, -0.858691}, {-0.941357, 0.211116}, {-1.091715, -0.037219}, {0.397495, 0.181766}, {-0.339179, -0.444183}, {0.202008, -0.835547}, {0.707791, 0.284963}, {1.127548, 0.443368}, {0.320918, 0.693486}, {-0.408938, -0.202700}, {-0.474738, -1.197323}, {0.196347, -0.186877}, {0.133286, -0.981743}, {0.454869, -0.118595}, {-0.708891, 0.915489}, {-0.124946, 0.257625}, {-0.013053, -1.262217}, {-0.816680, 0.357514}, {-1.325378, -0.000513}, {-0.471835, -1.666112}, {0.006822, 0.861943}, {-0.609116, 0.665514}, {-0.022823, -0.921185}, {0.334153, -0.307869}, {-0.200664, 0.039748}, {-1.341585, -1.016766}, {-1.478115, -0.168005}, {0.493183, -0.315358}, {0.320896, -0.265798}, {-0.410948, 0.749325}, {0.493700, 0.609085}, {1.511312, -0.136707}, {-0.369151, -1.186832}, {0.053669, -0.453470}, {-0.344181, 0.465001}, {-0.409580, 1.225758}, {-0.040541, 0.314214}, {-0.563372, 0.154451}, {-0.296031, 0.128113}, {-0.170489, -0.237342}, {0.484353, 0.541345}, {-0.281269, -1.163252}, {-0.441618, -0.191346}, {-0.766963, -1.158696}, {0.683851, -0.047111}, {0.085014, -1.047429}, {0.435402, -1.193670}, {0.723781, 0.086784}, {0.117848, 0.731946}, {-1.001471, -0.568533}, {1.623786, -0.472448}, {-0.405629, -0.440914}, {-0.867240, 0.860770}, {-1.370369, -0.367847}, {-1.068700, 0.049127}, {-0.506801, 0.070046}, {-0.571468, -0.279030}, {-0.936487, 0.177180}, {1.208152, 0.335738}, {0.547493, 0.278008}, {-0.676350, 0.122804}, {0.881113, -0.622278}, {-0.997446, 0.228682}, {0.374538, -1.112491}, {0.018405, 2.294138}, {0.190651, -0.275758}, {-1.066702, 1.292937}, {0.453821, 1.500667}, {-0.003891, -0.058122}, {0.483079, 1.838471}, {-0.535369, -0.173664}, {-1.069100, -0.694773}, {-0.112032, -1.188326}, {0.855142, 0.212202}, {-1.308295, -0.165234}, {-0.899488, -0.114441}, {-0.146224, 0.097630}, {-0.510277, 0.887175}, {0.821703, 0.158980}, {0.853827, -0.985330}, {0.451970, 0.343768}, {0.077419, -1.075895}, {-0.613300, 0.876653}, {-0.747934, 0.101782}, {0.456308, -0.448831}, {0.704574, 0.516584}, {-0.123099, 0.328140}, {0.934254, -0.065327}, {-0.598220, -0.151876}, {0.247193, -0.320853}, {0.710846, 0.595196}, {1.133704, -0.279589}, {-0.213979, 0.300774}, {-0.136586, -0.481220}, {-0.818138, 0.623683}, {0.492634, -0.509161}, {0.233986, -0.216658}, {-1.803974, -0.101863}, {0.338246, -0.233200}, {1.210916, -0.191023}, {-0.419416, 0.400604}, {0.174883, 0.361058}, {0.041907, -0.084804}, {-0.565089, -0.646098}, {0.808848, -0.495713}, {-0.880710, -0.067991}, {0.466173, -0.432444}, {0.326814, 0.655068}, {1.323321, -1.755300}, {-0.246832, 0.422534}, {0.488638, 0.630369}, {-0.672349, -0.571405}, {0.929277, 0.597525}, {0.295168, 1.180543}, {-0.443439, -0.167602}, {0.850886, 0.731905}, {-0.130536, -1.019228}, {0.667789, -0.245031}, {-0.048100, 0.713830}, {-0.693496, 1.039212}, {-0.470569, -0.156852}, {1.071015, -0.851179}, {-0.141749, -0.228665}, {0.133398, 0.157939}, {-0.920078, -0.522450}, {-1.336102, -2.023545}, {0.189471, -0.546281}, {0.600537, -0.493998}, {0.253657, 0.643392}, {-0.844469, 1.910885}, {0.805807, 0.277348}, {0.113829, -0.394163}, {0.706544, 0.990309}, {0.166811, -1.066923}, {0.713167, 0.883103}, {1.297380, -0.698009}, {0.182918, 0.196844}, {-0.582698, 0.320323}, {1.179693, 1.053822}, {1.973986, 0.861945}, {0.831394, 0.372738}, {0.036404, -1.044186}, {-0.322784, 0.736748}, {0.465765, 1.236812}, {-0.094890, -0.910340}, {0.534838, 0.087896}, {-0.423018, 0.473497}, {0.446821, -0.345740}, {1.370136, -0.313957}, {0.605235, -0.218558}, {-0.312323, -0.331415}, {-0.957650, -0.174169}, {0.438262, 0.355984}, {-0.630817, -0.585063}, {0.844182, 0.027599}, {0.255999, 0.290238}, {0.195645, -0.309908}, {-0.361390, 0.759387}, {0.793257, -0.590533}, {-0.272252, -0.825983}, {-0.524775, 1.002337}, {1.025595, 0.035075}, {0.144336, 0.133347}, {-0.053176, -0.873734}, {-1.072797, -0.022777}, {-0.201704, -0.812261}, {0.406989, 0.690699}, {0.167489, 0.337122}, {0.954502, 0.132945}, {-0.234877, -1.122684}, {-0.713308, 0.242610}, {0.993134, -0.224591}, {0.195455, 0.240318}, {0.176161, 0.919258}, {-1.200962, 0.602950}, {0.146329, -0.178380}, {1.905485, 0.926800}, {-1.213910, -0.046545}, {-0.712013, 0.163252}, {0.701015, 0.587351}, {0.475746, -0.236882}, {0.681216, 1.077988}, {1.005624, 0.206876}, {0.503490, 0.797294}, {-0.740207, -0.178577}, {0.049749, 0.215896}, {0.121691, 0.231312}, {0.307603, 1.696005}, {0.149964, -0.357488}, {-0.833350, 1.591904}, {-1.066643, -0.227741}, {-0.130385, 0.289346}, {0.171775, 1.229285}, {0.499181, 0.204163}, {0.365325, 0.432717}, {-1.116102, 1.193373}, {0.816269, 0.322493}, {0.044289, -0.038741}, {-0.081816, -0.660226}, {0.209952, -0.440067}, {-0.585770, -1.303251}, {-0.470685, 0.187163}, {-0.273317, -0.063477}, {1.701860, -0.310642}, {0.235376, 0.741904}, {-1.391462, -0.818046}, {0.891559, 0.276066}, {0.397528, -0.407250}, {-0.245719, 0.703900}, {0.408310, -1.425978}, {0.984774, 0.218506}, {-0.226844, 0.404807}, {-0.478742, -0.640515}, {0.194719, 1.070898}, {-0.421489, -1.495545}, {-0.285219, -0.021769}, {0.805010, -0.178533}, {-1.462175, -0.074131}, {-0.012403, -0.230968}, {1.614191, -0.155847}, {1.208571, -1.196227}, {-0.757660, 1.376246}, {0.948323, -0.100899}, {-0.537264, 0.178661}, {-0.225242, -0.390378}, {-2.111611, -0.388815}, {0.591711, 0.721370}, {-0.486270, -0.043296}, {-0.354134, 0.102331}, {0.494296, 0.500110}, {0.977534, 0.912976}, {0.083083, 0.580670}, {0.047811, -0.201119}, {-0.101871, 1.602735}, {-0.299291, -0.338615}, {-0.517633, -0.181010}, {0.557599, -1.494308}, {-1.180601, -0.754826}, {0.843726, 1.285523}, {0.248651, 1.227134}, {0.385419, -1.487426}, {0.329802, 0.523718}, {0.832042, 2.344297}, {-0.483497, -0.042848}, {-0.571850, 0.444970}, {0.578707, -0.332521}, {-0.383466, 0.231784}, {0.026002, 1.355058}, {0.290971, -0.253279}, {-0.280147, -0.381802}, {0.068319, -1.243266}, {1.056405, -0.214847}, {-0.804678, 0.348259}, {-0.311298, -0.374442}, {-0.727188, 1.198522}, {0.089518, 0.348222}, {0.016808, 0.138825}, {-0.165610, 0.734759}, {-0.607876, 0.020547}, {-0.381076, 0.319154}, {0.771585, 2.282850}, {-0.679082, -0.535810}, {0.922199, -0.104349}, {0.883859, 0.707429}, {0.297841, -0.513259}, {-0.084643, 0.804522}, {0.051716, 0.095978}, {-0.214681, -0.166287}, {0.681025, 0.064098}, {1.880843, 0.324433}, {0.035759, 0.351759}, {-0.184237, 1.372837}, {0.089526, -0.380857}, {1.314891, 0.090765}, {-0.166000, -0.408904}, {-0.487537, -0.303936}, {1.403138, -0.027080}, {0.874409, -1.421801}, {-1.455847, -0.180022}, {1.082291, 1.664879}, {0.071012, 0.797922}, {0.252097, -0.345585}, {0.278979, 0.328135}, {0.096045, -0.823268}, {0.240866, 0.568270}, {0.623840, 0.074629}, {1.197388, -0.864621}, {0.010140, 0.536038}, {-0.936742, -0.311617}, {0.229416, 0.009804}, {-0.867776, 1.059319}, {0.613966, 0.475140}, {-0.213434, 0.139105}, {0.725146, -0.742290}, {0.106239, 0.386418}, {0.189119, -0.313432}, {-0.506237, -0.211804}, {0.625359, 0.120521}, {0.723693, -0.672366}, {-0.960395, 0.399574}, {0.120116, 0.211127}, {0.862921, -0.124087}, {1.083842, 1.379676}, {-0.596075, -0.150507}, {1.813520, 0.153563}, {0.821543, 0.716422}, {0.905501, 0.148319}, {-0.281616, 0.736664}, {0.523724, 0.771024}, {0.736386, 0.335333}, {0.704974, -1.258289}, {0.230135, 0.149167}, {-0.183667, 0.141978}, {0.343212, -0.472806}, {0.502101, -0.030266}, {0.302980, -0.873466}, {-0.047585, 0.202728}, {-0.490690, -1.793145}, {0.072517, 0.500160}, {0.574135, 0.273335}, {-0.679558, -0.481851}, {-0.391140, 0.833001}, {0.007197, -0.476483}, {0.755864, 0.699900}, {0.023659, 0.256314}, {-0.219938, -0.203388}, {-0.489864, 0.259189}, {-1.006033, -0.103282}, {0.158715, -0.664053}, {-0.300183, -1.039796}, {-1.321861, -0.637445}, {-0.720415, -0.327571}, {0.251887, -0.485211}, {0.078411, -0.322993}, {0.056805, -0.293353}, {0.315853, -0.085568}, {0.222705, 0.310332}, {-0.182731, -0.397738}, {-0.180319, 0.561981}, {0.598215, -0.364178}, {-1.249949, -1.177746}, {-0.456053, -0.685671}, {0.954583, 0.571800}, {1.014219, -1.278695}, {1.266613, 0.223437}, {-0.283420, -0.474797}, {0.693306, -0.029207}, {0.273299, 0.133892}, {0.532101, -0.320308}, {-0.594831, 0.406073}, {-0.005518, 0.766143}, {0.147701, 0.838501}, {-0.745052, 0.749668}, {0.936722, 0.046095}, {-0.921153, -0.296284}, {0.230717, 1.078411}, {-0.104489, 0.089344}, {0.184105, 0.646882}, {0.829563, -0.030537}, {0.646903, -1.032258}, {-0.266078, -0.192410}, {0.430983, -0.751174}, {-0.369734, 0.154678}, {1.027273, -1.123325}, {-0.284810, -0.673581}, {-0.198272, 0.710599}, {-0.664385, 0.828056}, {-1.078880, 0.714872}, {-0.474676, 0.242386}, {0.680091, -0.410467}, {-0.127690, -0.562865}, {-0.234136, -1.291910}, {-0.304469, -0.626725}, {0.530474, 0.566233}, {-0.109255, -0.557004}, {0.087012, 0.988810}, {-0.750837, -1.577521}, {0.347408, -0.389814}, {1.437412, 0.283755}, {-0.159056, 1.128835}, {0.004413, -0.144927}, {0.088644, -0.027569}, {-0.079487, -0.229503}, {0.870379, -0.028245}, {-0.138882, 1.645245}, {-0.177149, -0.495996}, {-0.040567, -0.960823}, {0.701093, -0.753669}, {-0.268945, 0.477653}, {0.519034, -0.856936}, {1.010434, 0.014817}, {0.314739, 0.141389}, {0.838768, 0.270923}, {-0.922034, 0.148587}, {0.537647, 1.022497}, {-0.184456, 0.248540}, {-0.702941, 0.129272}, {-1.199959, -0.484713}, {0.775146, 0.641877}, {1.355787, -0.061010}, {-0.273411, -0.344273}, {-0.079652, -0.580078}, {-0.294108, 0.383430}, {-0.663756, 0.764663}, {-0.029209, 0.187390}, {0.458825, 0.020946}, {-0.759974, -0.072059}, {-0.762552, 2.339859}, {-0.691081, 0.637021}, {0.066676, -0.267145}, {-0.000870, -0.130399}, {-0.128295, -0.090600}, {0.434282, -1.040424}, {0.064080, 0.311479}, {0.445593, -1.427874}, {0.309938, 0.341331}, {-0.668997, 0.293917}, {1.532275, 0.452357}, {1.468994, 0.022104}, {-0.581643, 1.003752}, {0.923086, 0.272041}, {0.469483, 0.205555}, {0.066270, 1.032433}, {-0.223936, 0.193990}, {0.722656, 0.900099}, {-0.460502, 0.026773}, {0.264304, 0.263321}, {0.011564, 0.998830}, {-0.852220, -0.735707}, {-0.367962, 0.277292}, {0.912905, -0.022560}, {0.474794, -0.033505}, {0.383646, 0.014366}, {-0.147667, -0.066343}, {0.496019, -0.698605}, {0.466197, 0.778409}, {-0.005985, -0.917034}, {0.364603, -1.005913}, {-1.127720, -0.496130}, {0.530754, -0.710343}, {0.817573, -0.478350}, {1.542207, 1.147533}, {-1.015912, -0.392767}, {-0.528064, -1.332638}, {-1.655403, 0.790160}, {-0.192199, 0.863973}, {-0.148335, 1.398748}, {0.231018, -0.580136}, {-0.028057, 0.350163}, {-0.078239, -0.095824}, {-0.368671, -0.118777}, {0.143814, 0.563598}, {-0.286646, -1.756129}, {0.331342, 0.411717}, {0.402591, 0.419929}, {0.267689, 0.344904}, {-0.737596, 0.808101}, {-1.479648, -0.212449}, {0.354386, 1.310559}, {-0.676218, -1.049757}, {-0.115748, -1.162720}, {-0.325709, -1.636897}, {0.093754, 0.067673}, {-0.266273, -1.083043}, {-0.366387, -0.814048}, {-0.315910, 0.796504}, {1.358526, 0.414087}, {-0.674816, -0.587575}, {-1.084357, -0.761996}, {1.170537, -1.118362}, {-0.888671, -0.372056}, {0.206631, -0.197368}, {0.151309, -0.017645}, {-0.639638, -0.158684}, {-0.818429, -0.799644}, {0.193617, 0.138892}, {-0.330140, 0.508120}, {-1.023892, -0.005087}, {-0.492779, -0.242526}, {1.190477, 0.548598}, {0.380355, -0.428248}, {-0.443627, 0.322194}, {0.643475, -0.610225}, {1.639932, 0.217874}, {-0.075206, -0.891935}, {0.472977, 0.806206}, {-0.049387, 0.521157}, {0.775513, 1.120129}, {-0.820993, -0.580519}, {0.787248, 0.471905}, {1.982564, -0.239183}, {0.036994, -0.084856}, {0.397587, -0.108305}, {0.717829, -0.658020}, {0.096854, -1.073618}, {-0.247410, 0.105690}, {-0.636805, -0.001866}, {0.249262, 0.170546}, {-1.384929, -0.181014}, {0.394318, -0.470332}, {0.312685, -0.971393}, {0.126831, 1.201348}, {-0.741448, -0.364570}, {0.885990, -0.170062}, {0.946030, 0.048529}, {-0.814388, 0.775904}, {0.365165, -0.393381}, {-0.910022, -0.285627}, {-1.692124, -0.058729}, {-1.176468, 0.344140}, {-0.680828, -0.802456}, {1.430130, -1.167865}, {-1.009736, -0.292885}, {0.780604, 0.117665}, {-1.183708, -0.191115}, {-1.109502, -2.955782}, {-0.679155, -0.425963}, {-0.478117, -0.857997}, {0.559869, 1.189793}, {0.693475, 0.705402}, {-0.069617, -0.231592}, {-0.824859, -0.475262}, {-0.613227, 0.171012}, {-0.972368, -0.750733}, {0.572478, -0.362034}, {0.400015, 0.093211}, {-0.664619, -0.115371}, {1.629905, 1.260396}, {-0.887239, -0.880451}, {-0.475993, 1.783962}, {-0.535449, 0.374335}, {-0.268655, 0.381528}, {-0.048788, 0.080243}, {-0.263956, 0.156544}, {-0.201047, -0.681716}, {0.007541, -0.270714}, {0.968368, -1.040116}, {1.598093, -0.868513}, {0.608883, -0.925775}, {-0.292500, 0.359309}, {0.781647, -1.854675}, {-0.048384, -0.358500}, {-0.045277, 0.182846}, {0.702542, -0.682803}, {-1.310088, 0.288354}, {-1.111262, -0.253839}, {-0.610601, 0.629673}, {-0.077137, -0.288207}, {-1.248534, -0.678787}, {0.589672, -0.209868}, {0.328118, 0.280762}, {-0.130254, 0.359489}, {-1.191280, -0.282377}, {-0.727137, 0.795181}, {-0.332298, 0.545214}, {0.449265, 0.809670}, {-1.176652, 0.024432}, {-0.444225, 0.247852}, {-0.493719, -0.443957}, {0.490093, -0.462030}, {0.894083, -0.428290}, {-0.808464, 0.061714}, {-0.438031, -0.880389}, {-0.374120, -0.133532}, {0.109504, 0.714367}, {1.199793, -0.870295}, {-0.016396, 1.234340}, {0.176536, 0.170704}, {1.583727, -1.037287}, {-0.408359, 0.192187}, {-0.716863, -0.030518}, {-0.087939, -0.157292}, {0.233970, -0.789071}, {0.448874, -0.318136}, {-0.001706, 0.203524}, {-0.583113, 0.483299}, {0.032509, -1.159109}, {0.243543, -1.545598}, {0.963137, -1.858378}, {-0.433912, 0.106663}, {-0.584636, -0.554822}, {-0.169820, 0.694442}, {-0.694692, -1.420531}, {0.124368, 0.308158}, {-0.371740, -1.256747}, {-0.371259, -0.345713}, {-0.080108, -0.248600}, {-0.508996, -0.502867}, {-0.259720, -1.107589}, {-0.479506, -0.625836}, {-0.966428, -1.108758}, {0.199396, 0.684562}, {-0.139579, -0.532375}, {-0.671940, 1.263705}, {0.583387, -0.545125}, {0.594017, 0.135560}, {0.295089, -0.517450}, {0.227495, -0.116494}, {-0.278437, 0.070346}, {1.252146, 0.161429}, {-0.719420, -0.400126}, {0.411649, 0.672294}, {-0.067492, -0.147642}, {0.773465, 0.447213}, {-0.096564, 0.687259}, {0.223581, -0.672181}, {-1.189369, -1.012300}, {0.378992, -1.602545}, {0.528201, -0.184505}, {0.555361, -0.073704}, {0.641793, -0.149102}, {0.614789, 0.145011}, {-0.014245, 0.835852}, {-0.433430, -0.150091}, {1.265735, -0.171617}, {0.424119, 0.261458}, {0.543597, -0.019062}, {0.106955, -0.352852}, {0.259824, -1.044464}, {-0.134395, 1.294968}, {0.614190, 0.103061}, {-0.472730, 0.440592}, {0.026255, 1.541770}, {-0.680532, 0.748520}, {-1.652447, -0.981050}, {1.530492, 0.410946}, {0.590749, -0.057968}, {-0.204753, -0.053539}, {-0.146540, 0.407365}, {-0.589178, -0.794021}, {1.057477, 0.390612}, {-0.318475, 0.110593}, {0.860875, -0.484007}, {-0.853862, -0.303066}, {-0.640767, -0.247635}, {-0.661993, 0.487274}, {-0.132963, -0.470698}, {0.276424, 0.103581}, {0.269608, -1.122638}, {-1.094199, 0.419837}, {0.466955, -0.942801}, {1.061330, -0.773058}, {0.504520, 0.613301}, {0.975902, 0.530381}, {-0.030956, 0.526710}, {0.231220, -1.339298}, {-0.011487, 0.006031}, {-0.018207, -1.410146}, {-0.042725, -1.430596}, {0.082844, 0.468408}, {-0.592661, 0.098480}, {0.011226, 0.279928}, {0.032576, -1.292298}, {-1.290445, 0.847037}, {0.901504, -0.435370}, {-0.728679, -1.694385}, {0.869029, 1.438773}, {0.348432, 0.771641}, {0.433021, -0.359444}, {-0.716851, -1.686122}, {0.654974, -0.546823}, {-0.288514, 0.307206}, {0.656826, 0.217168}, {-0.688401, 0.403697}, {-0.151237, -0.641147}, {0.280761, -0.025080}, {1.352524, 0.262260}, {-1.020794, 0.502821}, {-0.308908, -0.753609}, {-1.227055, -0.566285}, {1.246124, -1.216215}, {-0.096449, -0.082642}, {-0.582940, 0.409202}, {-0.297638, 0.527261}, {-0.473862, -0.847413}, {0.493371, 0.316474}, {-0.505728, -0.462956}, {-0.595404, -0.478184}, {0.282216, -0.370408}, {-0.648353, 2.154436}, {0.388833, -1.448003}, {0.520432, 0.059147}, {-0.013529, 0.455994}, {0.939385, -0.134557}, {0.620260, 0.444285}, {0.242877, -0.212567}, {0.864014, 1.110652}, {-0.433176, 0.148295}, {-0.467423, 0.654889}, {0.385444, 0.838910}, {-0.451962, -0.686281}, {-0.028356, 1.160879}, {-0.420737, 0.282096}, {0.276441, 0.183335}, {0.644401, 0.809729}, {-0.038628, -0.032380}, {-0.689183, 0.615413}, {0.685082, 0.193192}, {0.603120, -0.720557}, {0.575454, -0.298269}, {-0.336636, 0.032836}, {1.167203, -0.640395}, {-1.086856, -0.481934}, {1.008476, 1.002123}, {-0.884676, 0.816595}, {1.107577, -0.884024}, {0.478516, -0.707394}, {0.258192, -0.748370}, {-0.741356, 0.392670}, {0.705741, -0.514239}, {0.153360, 0.250206}, {0.332233, 0.401451}, {-0.810436, 0.247146}, {0.382241, 0.492063}, {-0.120140, -0.666149}, {0.219067, -0.351762}, {0.503475, 0.143766}, {1.810909, -0.522492}, {0.914236, 1.024772}, {-0.001545, 0.951413}, {-0.361359, -0.703397}, {-0.790543, -0.080398}, {-0.124326, 0.712994}, {0.989520, 0.282750}, {-0.639085, -0.593687}, {0.532412, 0.985720}, {-0.814493, -0.684384}, {-0.335779, -0.770313}, {-1.021545, 0.405681}, {-0.711770, -1.295042}, {0.875563, -0.431312}, {-1.424888, 0.070227}, {0.041671, 0.512540}, {0.560060, -1.156517}, {0.495886, 0.815220}, {0.932619, 0.063747}, {0.015802, -0.313213}, {0.849039, 0.928043}, {-1.711563, -0.070807}, {-0.666807, -0.065413}, {1.336124, 0.298359}, {-1.465749, 1.267894}, {0.643581, 0.208283}, {-0.027162, 0.285537}, {0.727538, 0.592374}, {-1.035589, 0.161733}, {-0.093690, -1.111324}, {-0.118812, -0.492105}, {-0.310044, 0.136076}, {0.423281, 0.738354}, {-0.332121, -1.129243}, {0.821705, -1.094517}, {0.034405, -0.125589}, {-1.061441, -0.025527}, {0.262581, 0.337586}, {0.089369, -0.030417}, {0.001538, -0.262250}, {-0.603561, 0.120004}, {-0.666026, -0.523188}, {-0.604976, 0.661149}, {0.424495, 0.063530}, {-0.459048, 0.273275}, {-0.759139, -1.058355}, {0.788408, -0.233671}, {0.420774, -0.023008}, {-0.057270, -0.647363}, {0.332215, -0.161691}, {-0.241240, 0.285908}, {-2.248124, -1.075027}, {1.897230, 1.332517}, {-1.000960, -0.341355}, {-0.764357, 0.742789}, {-0.430048, 0.351628}, {-0.758480, -1.168399}, {-0.435465, -1.025082}, {-0.031475, 1.442605}, {-0.098961, 0.902862}, {-1.182562, 1.622450}, {-0.779323, 0.082419}, {0.456925, 0.197176}, {-0.508334, -0.322065}, {0.508929, 1.414049}, {0.831596, -0.269084}, {-0.557522, 0.829015}, {-0.307706, 1.811900}, {0.522715, 0.538211}, {-0.007168, -0.369323}, {-0.617961, 0.598800}, {-0.978429, -1.276183}, {-0.311683, -0.168769}, {0.813820, -0.732024}, {1.620090, 0.776415}, {-0.244712, -0.030740}, {0.423419, 0.437735}, {-0.438972, 0.722604}, {-0.882370, -0.599715}, {0.861613, 0.144139}, {0.794431, -0.119300}, {0.174561, 0.355555}, {-0.691546, 0.900205}, {0.994296, 1.262278}, {-0.693701, 0.809946}, {0.153439, 0.433443}, {-0.125105, -0.519678}, {0.091914, 0.929540}, {0.307382, 1.281497}, {-0.219573, -0.230141}, {0.323594, 0.781383}, {0.898631, 0.775206}, {0.511558, -0.475861}, {0.097796, -0.356711}, {0.279638, 1.045159}, {1.270842, -0.511080}, {-0.082679, 0.240138}, {0.568139, -0.004501}, {0.109403, -0.183895}, {-0.739424, 1.048188}, {-0.054909, -0.730640}, {-0.107852, -0.216831}, {0.685852, -0.120568}, {1.372181, 0.079369}, {-0.057168, -1.475400}, {1.379104, -0.416757}, {0.674217, 0.132367}, {0.823818, 0.008095}, {-0.227594, -1.181870}, {0.154429, -0.278722}, {-0.380589, 1.327236}, {0.953822, -0.415279}, {0.523925, -0.065958}, {-0.336928, 0.243956}, {0.552334, 0.546455}, {1.968980, -0.255377}, {0.071926, -0.528260}, {-0.242553, 0.409914}, {0.794756, -0.821838}, {0.670664, -0.016080}, {-0.195775, -0.420098}, {-0.437345, -0.444139}, {0.929108, 0.038056}, {-0.034900, 0.359362}, {-0.646337, 0.250061}, {0.164494, -0.964178}, {0.217552, -0.079574}, {0.616784, -0.219605}, {0.274625, 0.461819}, {0.600045, 0.609724}, {-0.227316, 0.212501}, {-0.681566, -0.149931}, {0.613788, 0.331795}, {-0.746826, -0.495927}, {-0.352302, -0.492596}, {-0.234966, -0.714624}, {0.209031, 0.429705}, {0.909196, -0.574662}, {-0.264863, 1.129618}, {-0.418314, 0.193085}, {0.140225, -0.055672}, {-0.259935, 0.107007}, {0.577398, -0.501482}, {-0.700274, 0.431435}, {-0.320978, -1.214359}, {0.040677, -0.504970}, {0.621603, 0.489428}, {-0.775181, 0.755810}, {-0.449114, -0.259854}, {-0.964709, -0.189900}, {0.571927, -0.612827}, {-0.510919, 0.532547}, {1.043521, 0.076593}, {0.559284, 1.091596}, {0.385705, -0.620434}, {-0.281876, 1.139602}, {0.696445, 0.461885}, {0.144423, -0.355093}, {-1.477952, 0.389119}, {1.033198, -0.665606}, {0.301267, 0.413149}, {-0.437421, 1.527053}, {-0.688981, 0.779191}, {-0.736537, -0.869510}, {0.633416, 0.485837}, {-0.217942, -0.604167}, {0.052318, -0.432202}, {-0.404016, 0.007563}, {0.371806, 0.924113}, {0.685100, 0.792052}, {0.338713, -1.831682}, {0.116368, -0.901689}, {0.859729, -0.187662}, {0.532246, -0.609526}, {-0.252737, 0.583202}, {0.802405, -0.891543}, {-0.657884, -1.409923}, {-1.011401, -0.576367}, {-0.518947, 0.454590}, {-0.760309, 0.886904}, {0.551054, 0.077816}, {-0.056155, -0.399365}, {-1.188687, -0.144384}, {0.348530, -0.718497}, {0.040766, 0.421674}, {0.054193, -1.058049}, {-0.703027, 0.823753}, {0.674644, 0.568892}, {0.653971, -0.029957}, {-0.330844, 0.894927}, {-0.355906, 0.469251}, {-0.548867, 1.196719}, {-0.316741, -0.112885}, {-0.050654, -1.074386}, {-0.458463, -0.052899}, {-0.323981, -0.056114}, {-1.226962, -0.781318}, {-0.793700, 0.814978}, {0.588809, 0.468163}, {0.297339, 0.292342}, {-1.189165, -0.848667}, {-0.401703, -0.893584}, {0.275424, 0.119550}, {-0.152022, -0.594732}, {-0.937268, 0.649621}, {0.139979, 0.423321}, {-0.267033, -0.061451}, {0.460158, 0.411101}, {0.102352, 0.520000}, {-0.670053, 0.131062}, {-0.547779, -1.300149}, {1.065430, -1.272432}, {0.850852, -1.537153}, {-0.127321, -0.412569}, {0.497995, -0.760964}, {0.618018, -0.962779}, {-0.367868, 0.358651}, {0.418133, -0.031711}, {0.827988, -0.299697}, {0.418025, -0.080342}, {0.227770, -0.733112}, {-0.522901, 0.220810}, {0.036422, -0.204918}, {1.192243, -0.320297}, {0.640624, -2.005424}, {1.277127, 0.447780}, {-0.277087, 0.657680}, {-0.277141, 0.773988}, {-1.130237, 0.935414}, {0.284414, 0.813877}, {-0.174957, 1.139543}, {0.300714, -0.749478}, {1.404330, -1.232405}, {-0.313154, -0.213062}, {0.652658, 0.241568}, {1.120691, 0.518463}, {0.224488, -0.153773}, {0.375402, 0.482763}, {0.435975, 0.236790}, {1.127072, -0.422277}, {0.580361, 1.063162}, {-0.955583, 0.064231}, {-1.802524, 0.616951}, {0.463128, -0.562220}, {0.556800, 0.473310}, {0.658684, -0.639963}, {-0.085954, -1.135439}, {-0.243128, -0.126796}, {-0.207362, -0.333691}, {0.056183, -0.707808}, {0.902377, -0.681407}, {0.152853, 0.619626}, {-0.603487, 0.293431}, {0.133038, -0.379933}, {0.264123, -0.101897}, {0.861720, 1.091886}, {-0.479815, -0.165089}, {-0.508836, 0.900798}, {-1.131878, 0.459296}, {0.037585, 1.004276}, {-0.480040, 0.214050}, {0.156506, -0.222274}, {0.690720, 0.133503}, {0.429938, -0.394251}, {-0.791723, -0.605653}, {-0.554200, -0.418231}, {-0.655144, -0.346624}, {0.054409, 0.359821}, {-0.198795, -0.563282}, {0.006104, 0.725420}, {-0.447277, 0.540059}, {-0.240985, 0.280044}, {0.637304, -0.116014}, {1.381762, 0.955712}, {-0.148803, 0.395996}, {0.461393, 0.840140}, {-0.627308, -0.418263}, {-2.171597, -0.599572}, {0.080969, 0.894764}, {0.237331, -0.687851}, {0.226158, -0.331895}, {0.210506, -0.350461}, {-0.043257, -0.021596}, {0.551392, 0.221253}, {0.410879, -0.257200}, {0.735420, 0.692801}, {-0.812522, 0.436671}, {-1.425556, -0.022695}, {1.337264, -0.118216}, {-0.196561, -1.121436}, {-1.635570, -0.545684}, {-0.259296, 0.302864}, {0.233845, 0.231713}, {-1.369904, 0.069084}, {0.310104, 0.568822}, {-0.074240, -0.389091}, {0.513558, 0.016256}, {0.154059, -0.551779}, {0.139022, 0.002589}, {1.252789, -1.075694}, {-0.357876, 0.779981}, {-0.057981, -0.578702}, {-0.348248, -0.564724}, {-0.281181, 0.160394}, {0.755197, -1.493796}, {0.349744, -0.585402}, {-0.097265, 0.568082}, {-1.207000, 0.702378}, {-1.086582, 0.502455}, {-0.274557, -0.175564}, {-0.663327, -1.099270}, {0.025018, -0.858302}, {0.251512, 0.181174}, {0.948731, 0.438021}, {0.278818, -0.736799}, {0.384640, 0.133641}, {-0.269113, 0.522492}, {-0.192256, 0.710115}, {0.052306, 0.974402}, {0.154651, -0.268357}, {-0.131640, 0.099690}, {-1.309976, -0.291957}, {0.346624, 0.382487}, {0.516366, 0.707133}, {0.697076, 1.540016}, {0.490790, -0.397012}, {1.123760, 0.916850}, {0.515663, 0.434250}, {-1.638678, -0.176421}, {1.167902, -0.355185}, {-0.264941, 1.971705}, {0.745419, -0.542922}, {-0.754792, -0.652504}, {1.369699, -0.283123}, {-0.372842, -0.062135}, {-0.746602, -1.311843}, {0.620061, -0.729972}, {-0.014445, -0.658271}, {0.344167, 0.003698}, {-0.842281, 1.037953}, {-0.843122, -0.523207}, {-0.318300, -0.179022}, {-0.323143, 0.019886}, {0.430288, 0.041221}, {0.360478, 0.640265}, {0.483503, -0.160184}, {0.244137, 1.233902}, {-0.545883, 0.318665}, {0.247693, -0.469566}, {-0.321296, 0.284737}, {1.147200, 0.641921}, {1.216635, 0.890397}, {0.486701, 0.456830}, {0.550060, -0.222243}, {-1.397045, 0.187919}, {0.912252, -0.441861}, {1.245188, -0.318386}, {-1.140431, 0.133960}, {-0.223423, -0.543275}, {-0.259693, 0.710342}, {0.100516, 0.525350}, {-0.101837, -0.378891}, {0.004744, -0.651883}, {0.701837, 0.505055}, {1.259750, 0.414716}, {1.619510, -0.525369}, {-0.927012, 0.502818}, {-0.687559, 0.774157}, {-1.015032, 0.154981}, {0.783957, 0.857966}, {1.055951, 1.123508}, {0.124867, -1.198195}, {-0.122501, -0.319462}, {0.522490, 1.035699}, {0.047462, -1.064514}, {-0.069016, -0.011192}, {-0.061777, 0.932923}, {-0.496995, 0.483659}, {0.960503, 0.102691}, {-0.858251, -0.587168}, {-0.679635, -1.149459}, {0.778286, 0.086740}, {-0.797912, 0.786926}, {0.043148, -1.618909}, {0.354889, 1.345281}, {1.176276, -0.529673}, {0.612892, 1.322230}, {0.784053, -1.188249}, {-0.921667, 1.036610}, {-0.328724, -0.039212}, {0.462540, 1.173392}, {-0.104801, -0.346268}, {-0.531985, 0.372684}, {-0.788000, 0.243345}, {0.882742, -0.834651}, {0.691050, 0.394536}, {-0.122631, 0.586303}, {-1.264893, -0.525182}, {0.461967, 0.151354}, {0.776068, 0.123712}, {0.063297, 0.200959}, {0.136792, -0.138604}, {-0.573293, 0.711280}, {0.738962, -1.300857}, {0.159731, -0.141142}, {-0.359106, -0.029247}, {-1.076380, 0.376036}, {0.572506, -0.942929}, {0.367264, 0.437083}, {-0.507908, -0.742628}, {-0.012061, 0.227037}, {-0.747644, -0.353159}, {-0.998729, -0.220973}, {-0.587253, -0.390827}, {-0.094152, 0.756393}, {0.448719, 0.149999}, {-0.218918, -0.048559}, {-0.015560, -0.440495}, {1.434334, -1.392218}, {0.077947, -0.359505}, {1.786997, -0.312543}, {0.255695, -0.381884}, {-0.301675, -0.104294}, {0.700752, 0.109512}, {0.170083, 1.699975}, {-0.434933, 0.267685}, {0.402053, -0.343667}, {0.698429, 0.834043}, {-0.331847, -0.731839}, {-1.146666, -0.701629}, {-0.002935, 0.704111}, {0.205245, 0.690760}, {-0.683238, 0.215240}, {-0.646288, 0.694404}, {0.325711, -0.046830}, {0.592448, -0.308384}, {1.529366, -0.987481}, {-0.295320, -0.271241}, {0.729563, -0.167488}, {0.642193, -0.120176}, {-1.548146, 0.885333}, {0.351531, 0.897226}, {1.595430, 1.246450}, {-0.486378, -0.288596}, {-0.302011, 0.618312}, {0.182741, 0.420557}, {1.113837, 0.316246}, {0.527597, 0.254757}, {1.415948, -0.051085}, {0.520356, -0.721367}, {-0.144424, 0.705921}, {-0.070251, -1.038962}, {-0.218357, 1.041630}, {0.729530, -0.690915}, {0.128689, 0.314481}, {-0.117418, 0.402299}, {0.241349, -0.167075}, {0.360539, 0.711009}, {-0.001491, 0.204478}, {0.487177, -0.385142}, {0.480899, 0.083528}, {0.905059, -0.668149}, {0.473028, 0.683468}, {0.048413, -0.513762}, {0.392684, -0.016979}, {0.008658, -0.397690}, {0.312022, -0.290086}, {-0.224513, -0.203352}, {-0.700904, 1.285464}, {-0.209541, 0.152510}, {-0.689456, 0.082655}, {-0.090242, 0.461600}, {-0.012036, -0.301713}, {-0.301809, 1.238924}, {-0.329893, -0.021590}, {0.223851, 0.421586}, {0.317937, 1.311734}, {0.075659, -1.100616}, {0.582116, 0.136126}, {-0.364256, -0.625304}, {0.014662, -0.234577}, {-1.092968, 0.618389}, {-0.238227, -0.574362}, {-0.417061, -1.373738}, {-0.534463, 0.792450}, {-0.112449, -0.282805}, {-0.579626, 0.953945}, {-0.737441, -1.782889}, {-0.761315, -0.665039}, {-0.230262, 0.334866}, {-1.640518, 0.345659}, {-0.183278, 1.207714}, {-0.155715, 0.262073}, {0.495034, 0.977896}, {0.267491, 0.395822}, {0.020021, -0.525175}, {-0.409405, 0.155372}, {-0.637273, 0.397385}, {0.569432, -0.826493}, {-0.300224, -0.571919}, {-0.419535, 0.627416}, {-0.670691, 0.736638}, {0.148186, 0.842415}, {-1.898319, 0.635542}, {-0.194627, -0.501422}, {0.649891, 0.952195}, {-0.213436, -0.681949}, {-0.868013, -1.363636}, {0.613184, -1.017739}, {-0.840052, -1.564144}, {0.723446, -0.354610}, {0.654592, -0.818130}, {-0.712827, -0.762259}, {0.166346, 0.489915}, {-0.302822, -0.693097}, {1.358446, -1.355483}, {-1.139428, 0.086305}, {-1.082740, 1.498861}, {-0.329648, 0.147864}, {-0.174769, -0.118863}, {0.845277, -0.480739}, {-0.289794, -0.173351}, {0.837552, -0.021153}, {-0.033429, 0.650532}, {-0.718426, -0.668466}, {-0.238433, 0.483005}, {-0.720576, -0.226939}, {-0.565185, -0.899305}, {-0.586429, -0.847011}, {0.948211, -1.151628}, {0.079392, -1.199359}, {-0.196210, -0.018502}, {0.092218, -0.902690}, {0.545633, -0.702880}, {0.953190, -0.244621}, {-0.122974, -0.872691}, {1.001723, 0.399548}, {0.773129, 0.292586}, {0.369522, 1.099643}, {-0.128016, 0.145086}, {0.432098, -0.694186}, {0.830267, -0.548718}, {0.960296, -0.000663}, {0.811884, 0.184881}, {-1.071500, 0.409177}, {0.738243, 0.409131}, {0.073622, 0.031693}, {-0.046745, 0.274024}, {-0.115489, -0.411869}, {0.216582, -0.319286}, {0.753995, -0.498359}, {-0.216480, -1.134280}, {-0.021988, -0.433786}, {-0.327947, 0.395941}, {0.075096, -0.558661}, {-1.031386, -0.090874}, {0.661876, 0.234726}, {-0.032586, -0.957959}, {0.675562, -0.062058}, {0.089478, 0.117239}, {0.758516, -1.036737}, {0.363183, -0.269026}, {0.465104, 0.683736}, {0.515043, 0.202359}, {1.572937, -1.193864}, {-0.456658, -0.051996}, {-0.262883, -0.004140}, {1.536223, -0.941011}, {0.241501, -1.081946}, {0.376242, -0.059869}, {1.661854, -0.122313}, {-0.171189, -0.902749}, {0.163209, 0.109854}, {0.838006, -0.570945}, {-0.403151, 0.401615}, {-0.941536, 0.224667}, {0.254770, 0.119757}, {0.010017, 0.650252}, {-0.849219, -0.093818}, {0.438965, 0.528280}, {0.585909, 0.170241}, {-0.231668, -0.647083}, {-0.812408, -0.241565}, {-0.270441, -0.747414}, {0.351427, -0.136789}, {-0.454502, -1.594160}, {-0.128552, -0.381218}, {0.852571, 0.550196}, {-0.082519, -0.975152}, {-0.118825, -0.587947}, {0.118019, 0.174990}, {0.977679, 0.989980}, {-0.687867, 0.152383}, {1.597743, 0.880373}, {-0.926928, -0.305081}, {-0.676320, 0.054946}, {-0.480725, -0.568788}, {-0.366417, 1.067759}, {0.017773, 1.235424}, {1.404835, -1.087228}, {-0.967946, 0.352186}, {-1.229937, -0.317813}, {-0.051257, -0.039613}, {-0.580332, -1.096354}, {1.377717, 0.775992}, {-0.525138, -0.051334}, {0.341863, 0.010390}, {-0.994051, 0.551957}, {0.554196, 0.888456}, {-0.096138, -0.120533}, {0.772601, -0.270712}, {0.643594, -0.087350}, {0.409067, -0.299266}, {-0.679971, -0.342567}, {0.589620, 0.703170}, {0.636779, 1.389787}, {-0.824128, -0.335895}, {0.607159, 0.420643}, {1.373971, -0.342893}, {-0.910657, 0.837440}, {1.034973, -0.352405}, {1.085682, 1.920129}, {0.064748, 0.257708}, {0.862755, 0.755955}, {-0.684932, 0.094005}, {0.112119, -1.441972}, {1.163420, -0.049867}, {-0.635217, 0.609453}, {-0.238855, 0.480435}, {1.449328, -0.098448}, {0.784127, -0.652244}, {0.769041, -0.937921}, {0.835573, 0.295585}, {-0.062899, 1.494506}, {-0.062220, 0.228891}, {0.481334, -0.470990}, {-0.505073, 0.374573}, {-0.099382, -0.967523}, {1.186319, -0.831618}, {-0.399300, 0.931511}, {-1.524902, -0.985501}, {-0.615012, 0.547274}, {0.268857, -0.076929}, {-0.897427, 1.088771}, {1.055351, 0.095282}, {1.708821, -0.076167}, {-0.739946, -0.354375}, {0.373417, 0.855748}, {0.131967, 0.285461}, {-0.364408, -1.708271}, {-1.014175, 0.495565}, {0.505787, 1.003443}, {0.391683, -0.524584}, {0.752228, 0.882360}, {-0.394883, 1.502965}, {-0.997717, -0.172972}, {-0.230813, 0.301756}, {0.669804, -0.121530}, {-0.070862, -0.368520}, {1.320153, -0.521160}, {-1.390873, 0.259563}, {1.146922, 0.597540}, {0.281829, -0.449891}, {0.295038, 0.408987}, {-0.202209, -1.183362}, {-0.399018, -0.672154}, {1.004778, -1.104954}, {0.143005, 0.049996}, {0.232512, 0.669719}, {0.094630, -0.576997}, {0.667844, 0.367973}, {-0.537996, 0.626066}, {1.033757, -0.285931}, {0.992368, -0.514368}, {-0.319021, 0.248041}, {1.579195, -0.231515}, {-0.582862, 0.913516}, {-1.085018, 0.556959}, {-0.024787, 0.559586}, {0.402267, 0.959849}, {-0.032095, -0.548640}, {-1.150115, -0.539607}, {0.385566, -0.409285}, {-1.471116, 0.537079}, {0.392795, -1.486643}, {0.328634, -0.040776}, {-0.084120, 0.830458}, {-0.524122, 0.922066}, {-0.416595, -0.044276}, {0.100140, 0.462444}, {-0.590881, 1.340948}, {-0.891718, 0.723849}, {0.337707, -0.670773}, {0.721537, 0.536058}, {0.059957, 0.287448}, {0.400511, -0.763103}, {-0.550953, -0.197097}, {0.591824, 0.441947}, {0.447746, -0.502807}, {-0.167608, -0.888259}, {1.103233, -1.437809}, {0.199023, 0.063524}, {0.202555, 0.322043}, {-0.976584, -0.396812}, {0.372419, -0.791595}, {1.289941, 0.357281}, {-0.228916, -1.001487}, {1.049654, -0.610849}, {-1.054080, -0.370253}, {0.859058, -0.644741}, {-0.377507, 0.207554}, {-0.559546, 0.074691}, {-1.074664, 1.355183}, {0.305625, 0.198544}, {-0.606985, 0.356763}, {0.242896, -0.375304}, {-0.749774, -0.181054}, {-0.342246, -0.259054}, {1.589396, 1.010118}, {1.140405, -0.864599}, {-1.096629, -0.377337}, {-0.496940, 0.605907}, {-0.664267, -0.651997}, {0.951590, 0.175420}, {-1.117929, -0.261231}, {-0.534170, 0.241918}, {-0.781527, 0.244559}, {-0.271591, 0.486803}, {-1.256120, 0.858586}, {-0.421249, 0.405847}, {0.479353, -0.525636}, {0.209101, 0.142047}, {-0.083113, 0.886645}, {-0.471083, -0.416663}, {0.011834, -0.389550}, {0.669072, -1.245624}, {-0.598668, 0.117422}, {-0.173989, -0.056465}, {-0.922954, 0.482571}, {0.522571, -0.365634}, {0.042361, 1.106480}, {0.655395, -0.034779}, {0.631652, -0.294389}, {1.527036, -0.058525}, {-0.249208, 0.459807}, {-0.887983, -0.627558}, {-0.289353, -1.411403}, {0.054751, 2.470137}, {-0.248717, 1.053043}, {-0.735576, 0.010779}, {-0.514003, -0.279226}, {0.305765, 1.274540}, {0.534981, 0.774853}, {0.392611, -0.644576}, {-0.468937, 1.078119}, {-0.541705, 1.414380}, {0.277103, 0.165488}, {-0.387851, -0.830792}, {-1.253914, 0.532510}, {-0.221315, 1.797991}, {0.274370, 0.277949}, {-1.765567, 0.046853}, {-0.327146, -0.297614}, {-0.984489, -0.168465}, {-0.660634, -0.450022}, {0.198917, -0.218025}, {-0.677175, -0.172085}, {0.644052, 0.285876}, {0.088023, 0.232635}, {-0.451399, -1.512956}, {-0.377844, -0.626486}, {-0.362430, -0.127407}, {-0.840019, 0.380215}, {0.114939, 0.878416}, {0.470442, -0.105566}, {-0.585039, 0.237390}, {-0.815600, -0.504437}, {-0.161445, 0.036143}, {0.296359, 1.325861}, {-0.322171, -1.669738}, {1.477603, 0.776825}, {0.381550, -0.635687}, {-0.694525, -0.559498}, {-1.930663, -0.704911}, {-0.449682, -0.545347}, {0.026977, -0.127266}, {0.233908, 0.544153}, {-0.863452, -0.074155}, {-0.649361, 2.113175}, {-1.059833, 0.624585}, {0.846892, -1.573266}, {-0.217441, -0.559443}, {-0.160678, 1.002391}, {0.804081, -0.338683}, {-1.541742, 0.230370}, {-0.503421, -0.416987}, {1.028147, 0.529024}, {-0.596178, 0.738456}, {-1.173493, 0.202724}, {-0.297988, -0.661943}, {0.302419, 0.866482}, {-0.521944, -1.270284}, {-0.436218, -0.097784}, {-0.264531, -0.550600}, {1.014478, -0.038692}, {-0.999085, 0.486181}, {1.440740, -0.371893}, {-0.042694, 0.067326}, {0.093956, -0.957300}, {-0.375195, -0.970154}, {-0.251632, -1.304492}, {-0.414494, 1.099568}, {0.017527, 0.168563}, {-1.263777, 0.285450}, {0.068131, 0.327754}, {1.105079, 0.539763}, {0.981225, -0.468582}, {0.551992, -0.036035}, {1.124159, -0.005432}, {0.611806, -0.979175}, {0.483684, -0.518734}, {-0.366983, 0.455012}, {-1.008954, 0.471497}, {-0.133646, -0.509659}, {-1.029489, 0.006309}, {0.530972, -0.509375}, {1.140833, 0.249621}, {-0.211773, 0.138957}, {-0.537149, 1.254415}, {-0.213279, 0.065513}, {-1.082796, 0.529235}, {0.350453, 0.444304}, {0.031279, -0.234978}, {-0.543908, 0.234837}, {0.487194, 1.375390}, {0.215563, -0.549211}, {0.072623, 0.165267}, {0.801105, -0.987048}, {0.269412, 0.711896}, {0.027622, 0.562303}, {-0.813866, -0.782547}, {-0.093912, 0.227673}, {-0.172055, 0.060514}, {0.074656, -0.266314}, {1.217632, -0.605089}, {-0.535103, -0.616239}, {0.151379, -0.076634}, {0.642760, -0.481053}, {0.035701, -0.056708}, {0.980441, -1.299210}, {-0.856956, -1.002073}, {0.598486, 0.466839}, {-0.386966, -1.046460}, {0.625117, -0.115207}, {-0.260750, -0.041046}, {0.076652, -0.932881}, {0.265818, 0.764649}, {0.421985, -0.714312}, {-0.601085, 0.964101}, {0.467187, -0.124653}, {-0.387454, 0.211856}, {-0.157263, -0.585296}, {0.418027, -0.077462}, {1.583309, -0.609096}, {0.884257, 0.515131}, {0.138889, -0.138020}, {-0.169847, 0.059272}, {0.540075, 0.309144}, {0.557179, 1.418778}, {0.610912, 0.512799}, {-0.873253, 0.692568}, {0.120274, -0.853970}, {-0.586573, -0.561751}, {-0.672660, 0.694987}, {1.109601, 0.008173}, {1.003841, -0.652223}, {0.874688, 0.367941}, {-0.330203, 0.745219}, {-0.753140, 0.915769}, {-0.696116, 0.227309}, {0.346841, 0.100445}, {0.740158, -0.250985}, {-0.397857, 0.594584}, {1.110536, 0.339610}, {0.345296, -0.347319}, {-0.907915, -0.471159}, {-0.649958, 1.565001}, {0.775790, -0.287460}, {1.032125, 0.130026}, {0.907496, 1.390180}, {0.298254, -1.588717}, {-0.259348, 0.502732}, {0.220840, -0.783740}, {-0.138042, -0.590126}, {0.426154, -0.091085}, {0.405208, 0.611676}, {-0.204049, -0.083068}, {0.159682, 0.740970}, {0.942561, 0.693500}, {-0.610743, 0.303196}, {0.172349, 1.598668}, {1.627400, -0.281164}, {0.551930, 0.098748}, {-0.388243, 0.433245}, {-1.235033, 0.763915}, {-0.744667, -0.561124}, {-0.592271, -0.641181}, {0.156840, 0.347964}, {-0.023119, 0.533539}, {0.011757, 1.073952}, {-1.186307, 0.280738}, {0.756950, 1.492111}, {-0.877649, 0.112185}, {-0.585789, -0.254425}, {0.038438, -0.550157}, {0.314995, 0.322778}, {-0.134760, 0.871567}, {-1.044096, -0.636270}, {0.590711, 0.558388}, {0.209019, 0.293453}, {-0.599300, 0.026492}, {1.033710, -0.675529}, {-1.954583, 0.594947}, {-0.182764, 0.343157}, {0.859978, 0.329311}, {0.646436, -0.806192}, {-0.046664, 0.909861}, {1.093129, 0.536020}, {0.872300, 0.678087}, {-0.123750, 0.457168}, {0.551871, -0.941036}, {0.794294, -0.407648}, {-1.538821, -0.171563}, {-1.035249, 0.118770}, {-0.348383, -0.118152}, {-0.226615, -0.889496}, {1.341554, 0.160355}, {-0.351517, -0.424568}, {-0.070817, 0.414649}, {-0.442786, 0.423882}, {-0.388425, 1.093738}, {-0.582796, 0.676209}, {0.752177, 0.821946}, {-1.006474, 0.412201}, {-0.416449, -0.072394}, {-0.911661, 1.041543}, {0.003509, 0.102477}, {0.196127, 0.591685}, {0.326262, -0.526969}, {-1.042304, 0.505778}, {-1.505353, -1.006878}, {-0.951996, -1.085898}, {-0.317499, 0.045335}, {-0.099205, 0.858056}, {0.764524, 1.480639}, {0.517856, 0.207770}, {-0.742181, 0.240161}, {-0.555104, -0.871874}, {-0.699238, -0.986373}, {-0.763561, -1.000094}, {0.670026, -0.733751}, {0.662880, -0.655407}, {0.119571, -1.657008}, {-0.223206, -1.113342}, {0.487176, 0.474053}, {0.192200, 1.888510}, {0.611398, -0.667669}, {-1.403757, 0.409866}, {0.024463, -0.041370}, {-0.609262, 0.806420}, {-0.907307, 1.198974}, {0.162117, -1.544459}, {-0.796786, 0.537950}, {-0.387992, -0.266020}, {-0.225214, -0.058790}, {0.753621, 0.972150}, {-0.615864, 1.401833}, {-0.819524, -0.597168}, {0.647379, -0.468126}, {-0.655050, -0.432251}, {-0.069667, -1.062873}, {0.359295, 0.145826}, {0.647484, 0.920104}, {-0.101287, -0.687857}, {0.695485, 0.112454}, {0.685476, -0.236214}, {0.374271, -0.144157}, {-1.779720, -0.300198}, {0.145786, 0.213707}, {0.038580, -0.033343}, {0.672791, 1.277813}, {0.479531, 1.053826}, {-0.907617, -0.059189}, {-0.172751, 0.074425}, {-0.349068, 0.726073}, {0.008332, 0.348492}, {0.319315, -0.391381}, {0.402430, 0.078896}, {-0.391121, 0.722606}, {0.081394, 0.035975}, {0.604639, 0.636573}, {-0.598326, -0.581740}, {-1.369758, 1.353076}, {-1.032156, -0.428532}, {-0.405163, 0.809273}, {-0.638386, -0.671499}, {-1.571366, -0.098790}, {-0.047946, -0.327424}, {-0.535140, 1.485649}, {0.572495, -0.533611}, {0.769134, -0.416792}, {-0.122776, 0.855205}, {0.281802, -0.669203}, {0.694392, -0.350054}, {-0.516665, 0.498350}, {-1.145787, 0.669606}, {-0.587504, -1.078295}, {-0.906257, 1.099786}, {0.713687, -0.104260}, {0.500828, -1.120030}, {0.201346, 0.446714}, {0.571867, 0.307374}, {-0.307728, 1.383134}, {-0.066681, 0.450119}, {-0.848761, -1.038823}, {1.032712, 0.224183}, {0.061333, -0.310979}, {0.468093, 0.223010}, {-0.199854, -0.913527}, {-0.857930, 0.211259}, {-0.587648, -0.245449}, {0.353839, -0.297458}, {0.888759, -0.874265}, {0.403853, -0.386048}, {0.278338, 0.103402}, {-0.538262, -0.477405}, {-0.028885, 1.451692}, {0.309332, 0.336400}, {-0.000990, 0.952112}, {0.551432, 0.708093}, {0.885608, 0.394472}, {0.630507, 0.873531}, {2.009406, 0.830925}, {0.270462, 0.962180}, {-0.188686, 0.224709}, {-0.176674, -0.183785}, {0.140600, 1.093924}, {0.189660, -0.420077}, {-0.523965, -0.625934}, {-0.336031, 0.037125}, {0.082479, -0.028029}, {-0.186355, -0.412999}, {0.082385, 1.314585}, {-0.916720, 0.023372}, {0.361526, 0.970313}, {-1.036301, 0.902711}, {0.753404, -1.144667}, {1.331139, 0.200917}, {0.079871, 0.568019}, {0.105169, -0.612822}, {-1.203528, -0.279910}, {0.681629, -0.484965}, {1.737185, -1.163903}, {-0.073538, -0.938369}, {0.199483, 0.191980}, {-0.463281, 0.147863}, {0.502202, 1.383967}, {0.662814, -0.696233}, {0.322913, -0.224863}, {-0.039758, -0.433784}, {-0.241469, 0.133004}, {0.631311, -0.203045}, {-0.490926, 0.738562}, {-0.738987, -0.807033}, {-0.559719, -1.710482}, {0.414458, -1.114866}, {0.217559, -1.101081}, {2.001337, -0.837311}, {-0.309366, -1.325185}, {-0.421962, -0.105397}, {-0.254192, 0.250041}, {0.149750, 1.424141}, {0.574641, -0.960555}, {1.300898, 0.408217}, {1.120122, -0.397386}, {0.988203, -0.705869}, {0.025219, -0.318984}, {-0.787385, 0.484271}, {0.244498, -1.167668}, {-0.293105, 1.187101}, {-1.315942, -0.787983}, {0.014455, 0.371305}, {0.454436, -0.013107}, {-0.983662, 0.592077}, {-0.500665, 0.485289}, {-0.822873, -0.988985}, {-0.684186, 0.119209}, {-0.770508, 0.745145}, {0.751135, 0.857208}, {0.580580, -0.403847}, {-0.261483, 0.001789}, {-0.599543, 0.700149}, {-0.134033, 0.276866}, {1.292787, 0.681824}, {0.571468, -0.079806}, {-0.420807, -0.237937}, {-1.393211, -1.148364}, {-0.826257, -0.341136}, {-1.430113, -0.469738}, {0.254639, -0.935916}, {0.477547, -0.063091}, {0.143719, -0.656087}, {-1.043832, -1.865735}, {-0.223533, -0.255380}, {-0.347852, 1.319428}, {0.216353, 0.217898}, {0.751324, -0.392111}, {0.126306, 0.463054}, {0.421776, 0.953244}, {0.101965, 0.723898}, {0.711760, 0.644511}, {1.214540, -0.992251}, {-0.900924, 0.851336}, {-0.768326, -0.273583}, {0.611353, -0.777963}, {-0.644784, -0.597365}, {-0.866147, -0.077811}, {1.171992, -0.373912}, {0.166663, 0.845840}, {-0.051581, -0.037914}, {-0.044931, 0.952456}, {1.025787, 0.092280}, {0.682561, 1.339457}, {-0.392748, 0.417949}, {0.032937, 0.238781}, {-0.620218, -0.190434}, {-0.281839, 0.385357}, {-1.841805, 0.735532}, {0.803464, 0.390506}, {-0.520705, -1.106509}, {-0.231873, -0.372118}, {1.238221, -0.126795}, {0.021599, 0.567909}, {0.135681, 0.509549}, {-0.372477, 0.993091}, {-0.463447, 2.094221}, {-1.084856, 0.187484}, {-0.146659, -0.233581}, {0.020933, -0.106898}, {0.829958, 0.011197}, {-0.094014, -0.883021}, {0.547873, -0.450064}, {0.202885, 1.034507}, {0.994910, 0.329836}, {1.331541, -0.281977}, {0.228948, -2.008565}, {-0.478031, 0.427230}, {1.083612, -1.020268}, {-0.249602, 1.393039}, {-0.012306, 0.044320}, {0.574595, -0.315582}, {0.774972, -0.431653}, {0.270253, 1.094467}, {0.120273, -0.263953}, {1.016864, 0.431796}, {-0.309168, -0.270309}, {-1.523819, 0.385376}, {-0.763456, 0.512232}, {0.336560, 0.850508}, {0.042057, -0.438179}, {0.847706, -0.456465}, {0.742120, 0.530981}, {-0.373430, -1.277644}, {0.670180, -1.752892}, {-0.817789, 0.218930}, {0.452251, -0.077324}, {-0.072623, -0.105395}, {-1.412266, -1.332875}, {0.357278, 0.516348}, {-0.043991, -1.067616}, {1.180654, -0.141604}, {0.105626, -0.698556}, {0.368029, 0.262566}, {-0.920419, 0.474313}, {-0.223634, 0.572453}, {0.361011, 0.280134}, {0.558817, 0.182521}, {0.561101, 0.605270}, {0.229716, -0.019313}, {-0.434761, -0.308359}, {-0.245133, 0.726120}, {-0.390881, -1.251642}, {-0.250035, -1.268882}, {1.655818, -0.092527}, {-0.910120, 0.060578}, {-0.188804, -0.314052}, {1.215279, -0.127738}, {-0.878795, 0.285774}, {0.369799, -0.207177}, {0.389388, 0.134644}, {0.047652, 0.563269}, {0.447321, -0.865163}, {-0.080775, -0.368620}, {-1.003217, -0.560501}, {0.115756, 0.065585}, {0.736376, -0.286535}, {-0.305092, 0.029092}, {0.016444, -0.133073}, {-0.385179, -0.465072}, {-0.411212, -0.129245}, {-2.027827, 0.247035}, {-0.408223, -0.432254}, {-0.623146, -0.096782}, {0.066094, 0.359122}, {-0.658791, 1.673232}, {0.345053, 0.994307}, {0.475042, -0.520856}, {-0.629916, 0.001245}, {0.231530, -0.112516}, {-0.310512, 0.763089}, {0.351545, -0.857181}, {-1.282645, 0.358697}, {0.265706, -0.200202}, {-1.020432, -0.205901}, {-0.450405, 0.863954}, {0.535266, -1.489977}, {0.116972, -0.830045}, {-0.574343, 0.203469}, {-1.234327, 0.190012}, {-0.671839, 0.202848}, {-0.511748, 0.717934}, {-0.667350, -0.498889}, {0.062991, -0.257410}, {1.387187, 0.166053}, {0.038892, -0.294788}, {-0.197843, -1.474079}, {0.842538, 0.954516}, {0.190780, -0.445425}, {0.986009, 0.305338}, {-0.043897, -0.600633}, {1.275066, 0.500597}, {0.688402, 0.940529}, {0.681829, 1.527615}, {1.058668, 0.147151}, {1.057440, 0.219391}, {0.279102, 0.711516}, {-0.735985, -0.916082}, {-0.795380, 0.473156}, {-0.188000, -0.126179}, {-0.130109, 1.022084}, {-0.255161, -0.611966}, {-0.712545, 0.512778}, {-0.390866, -0.023470}, {0.585919, 0.072051}, {0.265748, -0.113116}, {-0.954015, 0.396356}, {1.150886, 0.526901}, {0.918889, -0.335352}, {0.908329, -0.918572}, {0.829812, 1.271961}, {0.385431, 0.764974}, {0.842191, 0.817413}, {-0.211592, -0.300848}, {0.085412, -0.503896}, {-0.295625, -1.210188}, {0.553279, -0.752066}, {-0.336870, -0.023617}, {-0.117579, 0.194043}, {-0.439305, 0.074470}, {-0.871696, 0.517667}, {1.132128, -0.352925}, {1.659963, 0.078571}, {-0.718459, 1.770532}, {-0.815585, 0.052456}, {0.462433, -0.846664}, {0.112519, -0.115914}, {0.351286, 0.311147}, {0.445398, 1.030217}, {-1.336584, 0.196926}, {1.720238, -0.567869}, {-0.036464, 0.802003}, {-0.783873, -0.818943}, {1.240642, 0.976164}, {0.760370, 0.622208}, {0.716383, 0.043453}, {0.007335, 0.445271}, {-1.912350, 0.369577}, {0.471466, -0.281855}, {-1.259278, 0.458071}, {-0.505514, 0.551813}, {0.808326, 0.336688}, {0.134236, 0.795999}, {-1.110478, 0.657803}, {0.788157, -1.379746}, {-0.602157, -0.601484}, {-0.601597, -0.629413}, {-0.562336, -0.375857}, {-0.115154, -0.348384}, {-1.337893, -0.034902}, {-0.421096, -0.451334}, {0.828483, 1.195515}, {-1.170578, -0.527504}, {-0.310432, 0.760422}, {-1.197816, 0.709533}, {-0.127652, -0.091019}, {0.069065, -0.305886}, {-0.078245, -0.633251}, {0.088257, 0.108119}, {-0.449101, 0.132235}, {-0.124084, 1.428966}, {-0.281890, 0.234157}, {-0.525617, 0.582656}, {-0.816034, 0.676694}, {0.126295, -0.336684}, {0.148247, 0.687522}, {-0.650085, 0.552353}, {1.047440, -0.871696}, {-0.652720, 0.124596}, {0.143902, -0.299925}, {-0.045092, -0.377154}, {0.337776, -0.360983}, {-1.034746, -0.453121}, {0.446298, -0.614523}, {-0.576398, -0.186150}, {-0.660111, 0.507337}, {-0.212991, -0.067267}, {-0.472959, 0.233856}, {0.757097, 0.921087}, {-0.371281, -0.873578}, {-0.462358, -0.546336}, {1.046260, 0.861505}, {0.188323, -0.927420}, {-0.394811, -0.928531}, {-0.745356, 1.802213}, {-0.144337, 1.288925}, {0.042964, 0.393180}, {-1.051774, -0.538140}, {-0.859913, -0.181454}, {-0.768838, -0.081829}, {-0.410304, -0.505518}, {0.513469, -0.829740}, {0.143379, -0.353562}, {0.259461, -0.349013}, {-0.693666, 0.506081}, {-0.142532, -1.125624}, {0.027827, 0.093478}, {0.755859, -1.261207}, {-0.805314, 0.460203}, {0.565516, 0.049003}, {-0.290886, -0.435227}, {0.177884, 1.134761}, {-0.790097, -1.155042}, {0.609440, -0.427450}, {-1.456648, 0.430752}, {0.731694, 0.148750}, {-1.096537, -0.659722}, {-0.045365, -0.812621}, {-0.052870, -0.012892}, {-0.186133, -1.655777}, {-1.233724, 0.005300}, {0.227544, -0.206169}, {0.444051, -1.393497}, {0.145246, -0.470748}, {0.321554, -0.540005}, {0.574299, 0.947717}, {-0.851562, 0.821642}, {-0.224767, 0.375636}, {-1.247393, -1.880826}, {0.869151, 0.644628}, {1.350218, -0.621884}, {0.386796, -0.520246}, {-0.978645, 0.272595}, {0.065436, -0.430137}, {-0.790944, 0.646567}, {-0.368160, 0.501998}, {-0.401020, 0.148140}, {-0.046369, -0.202567}, {0.058994, -0.870889}, {-0.652756, 1.932327}, {0.172676, -1.271166}, {0.413797, 0.955612}, {0.814433, 0.006399}, {0.328790, 1.584645}, {0.709699, 0.490172}, {-0.774854, -0.005901}, {0.730751, -2.130532}, {0.585216, -0.058045}, {0.745170, -0.426331}, {-0.547863, 0.536897}, {0.291419, 0.183834}, {0.370049, -0.225214}, {0.720345, 0.700864}, {-0.658056, 0.512990}, {-0.197299, -0.572787}, {-0.980329, -0.373197}, {-0.102615, -0.600997}, {0.551575, 0.035526}, {0.227213, -1.755647}, {-0.720773, 1.473189}, {1.078551, 0.494038}, {-0.590708, -0.726487}, {0.174511, 0.593049}, {-1.113569, -0.861532}, {-0.863915, -0.407862}, {-1.489835, 0.680252}, {0.605744, -0.755458}, {0.019818, -1.444399}, {1.537532, 0.420513}, {0.454858, 0.278244}, {-1.167997, 0.522964}, {0.636516, 0.864054}, {0.904913, 0.954676}, {-0.172054, 1.515377}, {-0.323955, -0.109815}, {-0.408556, -0.110050}, {-0.074129, 0.608238}, {0.907023, 0.611414}, {0.527238, -0.111692}, {-1.210925, 1.026236}, {0.414338, -1.508815}, {0.865041, 0.205104}, {-0.519846, 0.335515}, {0.025669, 0.894116}, {-0.069780, 0.825868}, {-0.977589, 0.602818}, {-1.474683, -1.465573}, {-0.906716, -1.172873}, {0.633533, -0.164525}, {1.348636, -0.597077}, {-0.676391, -0.863396}, {0.836835, 0.681102}, {0.597157, -0.230220}, {0.394546, 0.387985}, {-0.930641, 0.087960}, {-0.591838, -0.300588}, {-0.886742, 0.109750}, {-1.099630, -1.113304}, {-0.728393, -0.212042}, {0.763934, -0.639567}, {0.298122, -0.353191}, {-0.190079, -0.338979}, {0.348171, 0.548532}, {-0.524688, -0.411727}, {0.233072, -0.517023}, {0.062224, -0.491644}, {-1.043832, 0.098989}, {-0.476795, -1.490535}, {0.329321, 0.234013}, {0.221229, 0.925059}, {-0.390816, 0.510160}, {0.875961, 0.263989}, {0.269341, 0.588287}, {-0.104352, 1.572109}, {-0.466807, -0.291013}, {0.052197, 0.507006}, {-1.203065, 0.707042}, {-1.156324, 0.471411}, {0.754021, -0.321351}, {-0.351852, 0.063256}, {1.050723, -0.239489}, {0.095218, -0.048337}, {-1.306553, -0.315263}, {0.445850, -0.782225}, {2.486118, -0.184109}, {-0.450901, 0.744972}, {0.815191, -0.335411}, {-0.842677, -0.284237}, {0.315266, -0.974383}, {0.075656, -0.930034}, {-0.265583, 0.430262}, {-0.066361, -0.215722}, {0.460555, -0.264005}, {0.338359, -1.339680}, {-0.711655, 0.100374}, {-0.092740, 1.377253}, {-0.072264, -0.288660}, {-0.052467, 0.772709}, {0.293775, 0.090349}, {0.824527, 1.267417}, {-0.112363, 0.132903}, {-0.363463, 0.969263}, {-1.642345, 0.744705}, {-0.477562, 1.379558}, {-0.589734, -0.589188}, {-0.466736, -0.970264}, {0.010874, 0.547445}, {1.722207, 0.884766}, {0.098718, -0.666330}, {-0.296542, -1.569936}, {1.125261, -0.712730}, {-0.975173, 0.932793}, {0.634325, 1.085860}, {0.217421, 0.671107}, {0.305540, -1.001059}, {0.798078, 0.480317}, {1.662060, -0.279516}, {0.613269, -0.820772}, {-0.367006, 0.253467}, {-0.506871, 0.590810}, {2.014429, -0.631055}, {-1.851417, -0.047491}, {0.237869, -0.702116}, {-0.850494, 0.647305}, {0.129418, -0.098577}, {-0.842460, 0.401123}, {0.289509, -0.445374}, {-0.192546, 0.423623}, {0.132945, -0.395475}, {1.171623, -0.137565}, {-0.672710, 0.703577}, {0.289266, 0.112169}, {0.388150, -1.503414}, {-0.632542, -1.193749}, {-0.836479, -1.570629}, {-0.117854, 0.799663}, {-1.031422, 0.769983}, {1.141551, 1.223726}, {-0.136202, 0.032976}, {0.539139, -0.362692}, {0.386391, -0.404400}, {-0.807908, 0.672289}, {-0.273757, 0.409065}, {0.072317, 0.218765}, {0.315393, -0.161862}, {0.109827, 0.280521}, {1.124393, -0.880358}, {1.062493, -0.861810}, {-0.694576, 0.955105}, {-0.704939, 0.712260}, {0.620207, 0.404908}, {-0.149497, 0.008919}, {0.213315, 0.753410}, {0.882143, 0.344575}, {-0.580178, -0.062246}, {0.588335, 0.732016}, {-0.923274, 0.056641}, {-0.172440, -0.095349}, {-1.135217, 0.278840}, {0.775523, -0.339523}, {-0.314081, -0.344806}, {-0.764043, -0.198468}, {-0.089438, -0.785644}, {-1.040912, 1.061657}, {0.895079, -0.034029}, {-0.526144, -1.937661}, {-0.207926, -1.120596}, {-0.091010, -0.505344}, {0.284329, 0.647329}, {1.276309, -0.095555}, {-1.225333, 0.215700}, {0.090999, 0.073973}, {0.870768, -0.363724}, {0.248731, 0.020068}, {-0.548422, -0.119689}, {0.920298, -0.082783}, {-0.467797, 1.355912}, {1.329022, -0.309356}, {-1.728073, -0.120729}, {0.624453, 0.563478}, {-0.698755, 0.502237}, {0.401369, -1.301986}, {-0.924123, -0.248924}, {0.419063, -0.429884}, {-0.417802, 0.312480}, {0.303873, 0.281815}, {-0.216253, -0.382458}, {0.871156, 0.437237}, {0.076165, -0.075358}, {0.978428, 0.177972}, {-0.387862, -0.666285}, {-0.385355, -1.084756}, {-0.039386, 0.090518}, {-0.110409, -0.131921}, {-0.266880, -0.746409}, {-0.628974, 0.648673}, {-0.473564, -0.126878}, {0.061978, -0.647717}, {-0.282066, -0.853113}, {-0.118735, 1.327370}, {1.149891, 1.209448}, {0.352147, -0.388989}, {1.769291, -0.319750}, {0.764107, -0.667852}, {-0.587102, -0.210417}, {1.015087, 0.052787}, {-0.035987, 1.195230}, {0.892858, 0.405185}, {-0.756342, -0.517984}, {0.623213, -0.595297}, {0.604408, 1.193989}, {0.953219, 0.110624}, {0.152238, 0.507352}, {-0.094461, -0.308558}, {0.384838, -0.277351}, {0.025861, -0.759865}, {-0.657839, 0.460731}, {-0.194513, 0.533848}, {1.023904, -0.500503}, {-0.359781, 0.642104}, {-0.404128, -0.973247}, {0.908211, -0.748690}, {1.828527, 0.178212}, {0.993783, 0.377209}, {0.497713, 0.653823}, {1.349187, -0.664650}, {0.867764, -0.677804}, {0.784912, -0.648229}, {0.855189, 0.283978}, {-0.177741, 0.486565}, {0.171991, -1.590330}, {-0.341884, -0.551188}, {0.552575, -1.140915}, {0.234083, -0.731475}, {-0.841477, 0.261885}, {-0.463546, 1.015421}, {-0.655670, -0.933363}, {0.091412, -0.144388}, {0.777763, -1.143306}, {0.393413, 0.247097}, {-0.859657, 1.263778}, {-0.091360, -0.695528}, {0.453558, 0.447697}, {-0.285448, -0.091432}, {0.575826, 0.771546}, {-0.185321, -0.400092}, {-0.927254, -0.065710}, {-0.404850, 0.199127}, {1.175847, -0.727493}, {-0.646317, -0.100079}, {-0.146116, 0.997661}, {0.940721, 0.331262}, {-0.176631, -0.432014}, {-0.158682, 0.007962}, {0.403128, 0.862988}, {-1.286299, -0.553118}, {-0.625140, -0.416925}, {0.164739, 0.127397}, {-1.296657, 0.431593}, {0.110012, 0.621031}, {0.131967, 0.747297}, {-0.417073, -0.528516}, {-0.058879, 0.064701}, {0.878022, 0.417763}, {-0.593777, -0.749282}, {-1.488954, -0.088751}, {0.327350, 0.729740}, {0.288635, 0.711133}, {-0.516210, 0.772244}, {0.646623, -0.360133}, {0.517444, -1.050468}, {0.275757, -0.042346}, {1.091949, -0.723761}, {-0.581401, 0.804300}, {-0.281716, 0.298812}, {0.389729, -1.352334}, {0.968056, -0.125904}, {1.044800, 0.400574}, {0.876008, 0.171549}, {-0.861513, -0.111525}, {1.321833, 0.560932}, {-0.756588, 0.179387}, {-1.030283, -0.202424}, {-1.125655, 0.034160}, {-1.018706, 0.236765}, {-1.619937, 1.162817}, {0.587348, 0.547688}, {-1.197305, -0.512869}, {-0.043864, -1.074949}, {-0.830876, 0.394422}, {0.164382, -0.058257}, {-1.269143, 0.168948}, {0.160676, -0.664515}, {-0.505345, -1.100780}, {-0.245201, 0.068290}, {-1.306518, -0.678766}, {-0.425379, 0.392774}, {-0.258367, 0.204147}, {0.045519, -0.256474}, {-2.017382, 0.265548}, {-0.452550, 0.579091}, {-0.340566, -0.079455}, {-0.463289, -0.473197}, {-0.304125, -1.146060}, {-1.079937, 0.770227}, {0.697733, -1.635291}, {0.794379, -0.590399}, {2.066159, 0.237608}, {0.203241, 0.228367}, {0.209470, -0.821393}, {1.064899, -0.383132}, {0.799363, -0.151461}, {-0.607846, 0.619438}, {-0.440935, -0.199774}, {1.095711, 0.112102}, {-0.687980, -0.399792}, {-0.489549, 0.143813}, {0.567918, 0.022705}, {0.838391, -1.106572}, {1.085598, 2.516036}, {-0.699425, -0.521144}, {-1.195329, -0.973063}, {-0.455357, 0.190010}, {-0.365438, -0.562397}, {-0.303810, -1.368273}, {0.466171, -0.926118}, {-0.428213, 0.660771}, {0.847118, 1.179101}, {0.431831, 0.765670}, {0.216519, 0.066846}, {0.050229, -1.132895}, {-0.591341, -0.135568}, {-1.016589, 0.499351}, {0.619695, 1.239771}, {-0.860305, 0.327144}, {0.794001, -0.673587}, {-0.198357, 0.818361}, {1.168914, -0.014642}, {0.448577, 1.053050}, {0.292636, -0.202807}, {0.769249, 0.583713}, {0.416304, -0.914883}, {0.462558, -0.935260}, {0.088227, -0.958327}, {0.594615, 1.182851}, {-0.204744, 0.504845}, {-0.244805, -0.381424}, {-0.737471, -1.320935}, {-0.528289, -0.573258}, {-0.105260, -0.673370}, {-0.635278, -0.500940}, {0.839401, -0.789100}, {-0.900784, 0.142913}, {-0.611013, 1.205516}, {-0.341594, 0.707921}, {-0.549906, -0.191784}, {-0.351525, 0.601229}, {0.696679, -0.084436}, {0.249797, -0.466641}, {-0.112995, 0.982649}, {-0.103804, 0.028549}, {1.300759, 0.562159}, {0.188050, 0.252173}, {0.106742, 0.672221}, {1.403964, 0.196841}, {0.178249, 1.119562}, {0.478215, 0.501237}, {-0.603436, -0.402843}, {0.938323, -0.147083}, {-1.344410, -0.465496}, {-0.274058, 0.037370}, {0.302808, 0.701736}, {0.522547, -1.063970}, {0.214000, -1.234162}, {0.115400, -0.182797}, {0.613710, -1.188964}, {-0.059478, -0.884451}, {-0.020643, 0.621642}, {-0.485842, -0.203300}, {-0.574101, 1.824857}, {-1.110800, 0.465908}, {-0.009223, -0.878354}, {-0.970119, -0.234322}, {2.232488, -0.241458}, {-0.817618, -0.215082}, {0.985711, -1.312330}, {-0.043408, 0.166327}, {0.685598, -1.189246}, {-0.863629, 1.000956}, {0.363370, 0.558049}, {-0.275515, -1.251793}, {-0.783958, -0.159861}, {-0.265416, 1.423040}, {-0.303787, 0.078342}, {-0.942708, 0.058797}, {-0.126596, -0.043927}, {0.940185, -0.514732}, {-1.717989, -0.302336}, {0.392299, -0.472739}, {-0.605450, -0.153565}, {0.172246, 1.273566}, {0.973775, -0.571675}, {0.412459, 0.246981}, {0.750398, 0.637567}, {-0.131172, -0.812034}, {-0.412718, -0.312419}, {-1.084367, 0.469211}, {-0.750192, 0.239366}, {-0.807903, 0.025000}, {0.169366, 1.110027}, {0.341377, -0.550559}, {1.503539, -0.645394}, {-0.546320, -0.503335}, {0.349192, 0.240205}, {1.054660, -1.886768}, {0.052298, 0.500975}, {-0.010100, -0.988941}, {0.166413, -0.383006}, {0.843436, 0.918938}, {-0.595515, 0.371500}, {-0.309942, 1.492045}, {0.605896, -0.550874}, {0.379367, -0.626731}, {-0.236509, 0.601141}, {-0.378510, -0.419328}, {0.478068, 0.010601}, {-0.675805, -0.583364}, {-0.210744, 0.418466}, {-0.189950, 0.501288}, {-0.463660, 0.303614}, {-0.537675, -0.958237}, {-1.015898, -0.270030}, {0.198231, 0.122265}, {1.116642, -0.840185}, {-1.101533, 1.812925}, {-0.561163, -0.261127}, {1.012467, 0.890354}, {-0.529417, 0.082287}, {0.009180, 0.806196}, {0.789673, 0.029863}, {1.003828, 0.373652}, {0.814418, 0.309315}, {-0.606146, -0.168860}, {0.056299, 0.365320}, {0.093105, -0.068656}, {0.755631, -0.057552}, {0.081025, -0.900634}, {-0.016102, 0.247733}, {0.884746, 0.342390}, {-0.875936, 0.681588}, {0.098843, -0.487980}, {-0.376775, -0.427447}, {0.381212, 0.542140}, {0.530379, -0.369676}, {0.709660, 0.380700}, {-1.112918, 0.335488}, {-0.171830, 0.036069}, {-1.019468, 0.441974}, {0.552776, 1.116890}, {-0.256032, 1.029227}, {0.709352, 0.980046}, {-0.721419, -0.145083}, {-1.190310, -1.516095}, {-1.099134, -0.241831}, {-1.177761, 0.420445}, {0.618117, 1.070602}, {1.308669, -0.017416}, {-0.186330, -0.148709}, {-1.075173, 1.134706}, {-0.474658, -0.073558}, {-0.417598, -0.815183}, {0.452627, -0.086364}, {-0.099908, 0.206006}, {1.159685, -0.593182}, {-0.620191, 0.221127}, {1.099579, 0.166276}, {-0.224604, -0.878283}, {0.361899, 0.449122}, {0.782647, -1.303460}, {1.024841, 0.701208}, {-0.575269, 0.369847}, {0.185542, 0.396025}, {-0.475507, 0.042582}, {-0.644299, 1.072212}, {0.024074, 0.094974}, {1.065494, 1.061942}, {-0.103903, 0.047036}, {-1.507948, 1.355023}, {0.488277, -0.387922}, {-0.670998, 0.516623}, {1.043637, 1.027954}, {-0.814702, -0.705341}, {1.113500, -0.824085}, {-0.446971, 0.387174}, {0.085304, 0.134263}, {-0.032566, 0.373506}, {-0.715275, 0.920719}, {0.856968, -0.363303}, {-0.531281, -0.778124}, {-0.273956, 0.840519}, {-1.738353, 0.489447}, {-0.868719, 0.482146}, {-0.324818, 0.031145}, {0.538558, 0.494144}, {-0.353669, 0.337685}, {0.231094, 0.720309}, {-0.836142, 0.106659}, {0.595464, 0.423801}, {0.883973, -0.601154}, {0.723997, 0.934565}, {-0.355962, 0.152775}, {-0.127005, 1.104947}, {0.969229, -0.149105}, {-1.201512, 0.674038}, {0.146767, -0.498363}, {-0.035950, 0.557077}, {-0.459134, -0.914077}, {0.763345, 0.524424}, {0.011704, -2.017428}, {-0.849172, 1.506112}, {-0.250493, -1.045756}, {-0.121860, -0.690564}, {-0.155904, 0.608851}, {-1.229102, -0.406017}, {1.226610, 1.085280}, {-0.805206, 0.629291}, {-0.069214, 0.730650}, {1.064779, 0.264552}, {-0.006544, -0.494682}, {0.457170, -0.951151}, {-0.410514, 0.789954}, {0.565477, -0.255665}, {0.734690, -0.988831}, {-1.062641, 0.225151}, {-0.385230, 0.821491}, {0.371702, -0.110034}, {-0.057454, 0.128720}, {-0.081977, 1.037915}, {0.311523, 1.253425}, {-0.502448, 0.093294}, {0.615595, -2.344534}, {0.653408, -1.185627}, {0.867888, -0.434547}, {-0.240755, 0.331160}, {-1.197783, 0.687314}, {0.521806, 0.208657}, {-0.554643, 0.428899}, {0.057554, -0.366342}, {-0.357134, 0.156007}, {0.334822, 0.737721}, {1.436037, -0.287579}, {-0.612891, 0.136375}, {0.789853, -0.141415}, {0.525511, 0.179881}, {0.123147, 0.811655}, {0.113730, 0.769911}, {0.182976, -0.119810}, {0.628026, -0.801001}, {-0.469332, -0.992844}, {0.420309, 0.553148}, {-1.170904, -0.099700}, {-0.146831, -0.313078}, {0.388133, 0.790864}, {0.282657, 0.691093}, {1.559222, 0.832869}, {0.381183, 0.380482}, {0.489654, -0.943613}, {0.054295, -0.253576}, {0.455407, 0.344980}, {0.570221, -0.475851}, {-0.223240, 0.744998}, {-0.530980, 0.687077}, {-0.449808, -0.821267}, {-0.330739, 0.448330}, {0.804212, -0.577691}, {0.158454, 0.805972}, {-0.108758, -0.954099}, {-0.439021, 0.197579}, {-0.539345, 0.439251}, {0.651230, 0.754042}, {-0.355923, -1.137383}, {-0.177306, 0.749586}, {0.441287, -0.286658}, {-0.902108, 0.227320}, {-1.284466, 1.638574}, {-0.036202, 0.181132}, {-1.497482, 0.003437}, {-0.061348, -0.006829}, {-0.005529, -0.741155}, {0.215731, 0.852106}, {1.581736, 0.051235}, {0.515924, 0.070864}, {-0.482895, 1.204395}, {-0.025352, -0.128358}, {1.549274, -0.306254}, {0.574087, 0.073902}, {-0.521191, 0.521923}, {-0.316768, -1.246159}, {0.374086, -0.736770}, {0.657694, 0.176918}, {-0.873769, 0.767673}, {1.284637, 0.593571}, {0.129845, -0.097307}, {-0.554935, 0.847270}, {0.103939, 0.668202}, {0.803857, 1.265275}, {0.337945, -0.680761}, {-0.332438, 0.818654}, {0.815651, -0.086611}, {0.898750, 0.267473}, {0.332558, 0.854873}, {0.033251, -0.369557}, {-0.994826, 0.728912}, {0.320312, 0.989656}, {-0.968790, -0.524464}, {0.050254, -1.200479}, {1.284280, 0.052694}, {-0.551391, 1.260977}, {-0.243554, -0.369087}, {0.248510, -1.259281}, {-0.100092, 0.030010}, {0.639801, -0.080694}, {-0.453774, 0.601667}, {0.157292, 0.534592}, {0.350959, 0.051935}, {-0.757799, -0.971434}, {0.493319, -0.446165}, {0.614688, -0.582649}, {0.074603, -0.299675}, {0.882269, -0.187581}, {0.372823, 0.368325}, {0.114711, -0.315413}, {-0.451795, 0.002528}, {0.124370, -2.011045}, {0.144513, -0.674410}, {-0.887191, 0.318651}, {0.276441, -0.028075}, {-0.656448, 0.802020}, {-0.278558, 0.378958}, {-1.030818, -0.732686}, {0.993217, -0.426098}, {0.539963, -0.880491}, {0.259553, 0.120942}, {0.980649, 0.629225}, {0.549393, -0.007366}, {1.775229, -0.150526}, {-0.505972, 0.223503}, {-0.705733, -0.590672}, {0.617949, -0.169851}, {-0.057909, 0.846471}, {0.008234, -0.314480}, {-0.096775, 1.283379}, {-0.962696, -0.439218}, {-0.259974, 0.118526}, {0.250173, -0.150096}, {0.910862, -0.680728}, {-0.415913, -0.191966}, {-0.396152, -0.497643}, {-0.771449, -0.213775}, {-0.301254, -0.272266}, {0.926896, -0.570671}, {-0.591745, 0.146475}, {1.086466, -0.131236}, {-0.844351, -1.562438}, {-0.990476, 0.070498}, {-0.077338, -0.863886}, {0.136252, -0.505947}, {-0.382066, -1.286926}, {0.669333, -0.074047}, {1.276768, -0.175578}, {0.350866, 0.997669}, {0.615194, -1.606065}, {-1.052562, -0.334451}, {0.299494, -1.071920}, {0.549473, 0.191316}, {-1.676270, -0.096974}, {0.265582, 0.159041}, {0.244795, 1.792395}, {1.008245, -0.322289}, {-0.702334, 0.432326}, {-1.037780, 0.165330}, {1.538379, 0.489235}, {0.703589, -0.819391}, {-0.628913, -0.514712}, {0.569468, 0.511478}, {-1.707972, 0.273521}, {0.317935, 0.288596}, {-0.284997, -2.009373}, {-0.740532, 0.559777}, {0.537857, 0.332833}, {0.429478, -0.292228}, {0.285689, 1.118983}, {-0.631836, -0.066223}, {0.592196, -1.045784}, {0.226062, 0.549405}, {0.309204, 0.291148}, {0.328950, -0.651208}, {-0.175570, 0.128113}, {-1.071762, -0.222013}, {-0.246732, 0.503570}, {0.562434, -0.087614}, {-1.083738, 0.163863}, {0.138512, -0.058985}, {-0.738895, 0.011677}, {1.499974, 0.103210}, {0.355002, -0.338290}, {-0.256904, -0.343176}, {-0.015659, -0.417844}, {0.208660, 0.606469}, {-0.734477, 0.817951}, {-0.867542, 0.663637}, {-1.304717, -0.388440}, {0.704185, 0.760198}, {-1.316292, -0.295106}, {0.218730, 0.983686}, {0.818713, -1.046025}, {-0.583046, 0.551182}, {1.265510, -1.016420}, {-0.761852, 0.033767}, {-0.745320, -0.492837}, {0.934553, 0.066774}, {-0.819204, 0.242431}, {0.611336, -0.031476}, {0.096080, -0.848272}, {-0.106150, -0.492336}, {-0.383184, -0.269763}, {0.132107, 0.766301}, {0.212758, -0.088413}, {-0.422718, 1.161167}, {0.736935, -0.974879}, {-0.910351, 0.495623}, {0.997377, 0.717006}, {1.989167, -0.180638}, {-0.518269, 1.156765}, {-1.168705, 0.352030}, {0.875218, -0.727473}, {0.110928, 0.594784}, {-0.893894, 0.190021}, {-0.063990, -0.588675}, {0.271381, -0.362008}, {-1.002002, 0.472853}, {-0.262505, -1.738222}, {-0.726954, -0.594786}, {1.196291, 1.072635}, {-0.121522, -0.341266}, {-0.041270, 0.655770}, {0.198658, 0.212242}, {0.259623, -0.910297}, {-0.906628, -0.709528}, {0.763820, -0.135300}, {1.075767, 0.169487}, {-0.535647, -0.428838}, {0.184472, 0.911065}, {-1.106756, 0.326421}, {-0.568826, -0.976099}, {-1.131721, -0.119743}, {-1.014501, 0.157798}, {-0.188462, -0.981151}, {0.998759, -0.198788}, {-0.831733, -0.686713}, {0.940988, -0.639840}, {0.432728, -0.625815}, {-0.373126, -0.262423}, {0.717374, 0.275913}, {0.267194, -0.410032}, {-0.244544, -0.599248}, {-0.372515, -0.727035}, {1.133795, 0.095964}, {0.188813, 0.214390}, {-0.491510, 0.110745}, {-0.112035, 1.669554}, {-0.692933, 0.354110}, {-0.777650, -0.649853}, {0.206946, -0.549717}, {0.060381, -0.218033}, {-0.923367, 1.095193}, {-0.086790, 0.112154}, {0.173823, -0.663045}, {0.246195, 0.466305}, {0.046693, -0.524645}, {-1.283808, -0.478148}, {0.964145, -0.018176}, {0.171523, -1.351762}, {-0.679412, -0.388570}, {0.550322, -0.537612}, {0.731997, -1.087005}, {-0.454207, -0.599756}, {-0.187639, 0.654378}, {-0.844323, -0.003906}, {-0.145352, -0.604780}, {1.621990, -1.918143}, {-0.151221, 0.586071}, {-2.341130, -1.090539}, {0.085287, 0.722866}, {-0.323067, 0.087640}, {1.363234, -0.722450}, {-1.625929, -0.003371}, {-1.349280, 0.497928}, {-0.763448, 0.084800}, {0.968353, 0.485273}, {-0.654131, 0.368048}, {0.906649, 0.966963}, {0.502693, -0.801039}, {-0.106512, -0.017897}, {-0.357878, 0.507848}, {0.596556, -0.386384}, {-1.350622, -0.075382}, {-1.132769, -0.094515}, {0.784254, 1.026684}, {-1.195967, -0.498431}, {-1.486993, 1.041977}, {-0.861464, 1.155882}, {0.454096, -0.743460}, {0.135509, 0.255852}, {0.328982, 0.287838}, {-0.351451, -1.454514}, {-1.163104, 0.800600}, {-0.159101, -0.818017}, {0.570768, -0.511169}, {0.261905, 0.321343}, {-0.961814, -0.663710}, {1.707887, -0.051143}, {-1.670659, -0.504308}, {0.921242, 0.016788}, {0.340322, -0.915290}, {0.166781, -0.511569}, {-0.158216, -0.111283}, {-0.283839, -0.287862}, {0.628406, 0.668089}, {-0.332001, -1.189296}, {0.017396, 0.278010}, {-0.009861, 0.703837}, {0.292750, 0.126056}, {-1.187099, -1.326938}, {-0.183012, -0.223564}, {-0.566881, 0.719534}, {-0.083212, -0.380213}, {0.070757, -0.303190}, {-0.121132, 0.687038}, {0.322541, -0.477786}, {0.129674, -0.807120}, {-0.418168, 0.229298}, {-0.546595, 0.883441}, {0.637606, 0.900993}, {-0.022450, -0.668027}, {1.165285, -0.042859}, {0.394648, 1.776434}, {-0.119592, -0.949967}, {-0.380534, -0.700304}, {-0.428653, 0.876593}, {-0.010833, 0.445818}, {-2.068289, 0.926831}, {-0.056759, -1.011635}, {0.951500, 0.730713}, {-0.735857, -0.974632}, {-0.441883, -0.113780}, {0.403497, -0.698566}, {-0.583007, -0.225655}, {0.845352, 1.129219}, {1.029108, 0.170238}, {0.677910, -0.154584}, {-0.866846, -0.610082}, {0.620796, 0.585499}, {-0.175772, -0.410802}, {0.738516, 0.222083}, {0.340440, -0.224279}, {0.514320, -0.118299}, {0.643830, 0.931380}, {0.823034, 0.678161}, {-0.025896, -0.374766}, {-0.296529, 0.078295}, {-0.197529, 1.188479}, {-0.561245, 1.938594}, {-0.891056, -0.514375}, {-0.583395, 1.256778}, {0.358371, 0.149749}, {0.713595, 0.243942}, {-0.424386, -0.267761}, {0.801126, -0.010966}, {-0.860760, 0.599409}, {-0.132413, 0.845348}, {-0.366124, 1.094189}, {0.098452, 1.013495}, {-0.594768, 1.698599}, {-0.214296, 0.107876}, {0.435504, -0.097577}, {0.484505, 0.098009}, {0.395685, 1.294490}, {-0.288240, 0.457515}, {0.454454, 0.065128}, {0.611166, 1.360646}, {0.479140, 1.245248}, {1.573051, 0.996718}, {0.353760, -0.558113}, {-0.300835, -0.238335}, {-1.239956, -0.500976}, {0.687230, -1.586164}, {0.984939, 0.909665}, {0.095002, -0.407167}, {-0.722139, 0.986728}, {0.656063, 0.152251}, {-1.206285, 0.300682}, {-0.445228, -1.320390}, {0.868370, 0.652878}, {0.480469, -0.416396}, {0.844269, -0.152263}, {-0.854423, -2.170806}, {0.451749, -0.005347}, {0.076050, -0.938747}, {0.414240, 0.282529}, {-0.314277, 0.634230}, {-0.352751, 1.885884}, {-0.331918, 0.293480}, {-0.611542, -0.591605}, {-0.032914, -0.878914}, {0.182686, 0.511677}, {0.282213, -0.654782}, {0.180992, -0.735602}, {0.434231, -0.167422}, {-0.416232, 0.478046}, {-0.150081, -0.445287}, {-0.321248, -0.468089}, {0.620043, 0.101055}, {-0.728128, -0.213253}, {-1.353567, -0.307609}, {0.725953, -0.761898}, {0.531030, -0.335851}, {-0.913209, -0.639658}, {-0.309075, 0.414710}, {-0.120038, 1.012719}, {0.402300, -0.164851}, {-0.404268, -0.373224}, {-0.619788, -0.509276}, {-1.967288, -0.882356}, {0.774993, 0.863349}, {0.170683, -0.823057}, {-1.277681, -0.649139}, {-0.150491, 0.048295}, {0.655999, -0.224661}, {-0.328017, 1.448516}, {-0.168569, -0.611396}, {-1.867020, -0.315154}, {-0.172188, 0.758110}, {-0.688985, 0.441307}, {-0.344957, 0.468144}, {0.467038, -1.260435}, {-0.002124, 0.251853}, {0.532495, -0.325352}, {-0.436167, 0.212400}, {-0.226487, 0.643460}, {1.280616, -1.277356}, {-0.015069, 1.146608}, {0.145602, 0.831614}, {-1.259462, 0.772211}, {-0.348614, 0.234378}, {0.236966, -0.423945}, {0.171916, 0.116998}, {-0.380486, -0.447256}, {-0.069114, -0.908586}, {0.006162, 0.030039}, {-0.360495, 0.129786}, {-0.449148, 0.342152}, {-0.637659, 0.279006}, {-0.475733, 0.146527}, {0.774150, -0.450019}, {0.384453, 0.905140}, {0.539473, 0.294686}, {0.963547, 0.772764}, {-0.577154, 0.243345}, {-0.990744, -0.184541}, {0.361697, -0.706210}, {-1.300668, -1.074359}, {-0.350468, -0.053975}, {-1.253670, 1.152225}, {0.645014, -1.229474}, {-0.947043, -0.775451}, {0.731531, 0.761002}, {-0.704281, -0.492722}, {-2.122805, 1.221006}, {-0.886448, 0.215374}, {-0.063047, 1.035249}, {-0.130030, -1.597369}, {-1.588580, -0.164693}, {0.243675, 0.189793}, {1.045297, -1.178104}, {0.389365, -0.556548}, {0.475483, -1.559555}, {-0.335436, 0.300775}, {-0.972000, -0.175491}, {-0.133305, 1.090422}, {1.581001, 0.260800}, {-0.075648, 1.263143}, {1.516818, -0.971175}, {0.169816, -0.200516}, {-1.034590, 0.153998}, {-1.097372, 0.044848}, {-0.579664, -0.209895}, {-0.053491, -0.037996}, {1.254129, -1.166188}, {-1.171324, -1.423655}, {0.425314, -0.416050}, {-0.615369, 0.303270}, {-0.110978, -0.122135}, {0.204478, 0.019416}, {-0.802350, 0.427858}, {-1.296030, -0.172149}, {-0.506648, 0.402006}, {-0.190420, 0.046755}, {0.243431, 0.240358}, {-0.507131, 0.100200}, {-0.454722, -0.946433}, {0.725846, 0.693385}, {-0.194304, 1.034517}, {-0.639409, -1.491172}, {-0.370464, -1.316069}, {0.026346, 1.232204}, {-0.045298, -1.867401}, {1.566024, -1.070478}, {-0.525522, 0.424209}, {-0.390620, 0.469335}, {-0.748788, -0.640077}, {-0.861505, 1.668542}, {0.942889, 1.164779}, {0.168485, -0.273375}, {-1.415495, 1.078624}, {-0.973990, -0.245288}, {-0.406225, 0.204616}, {-1.107687, 0.132306}, {-0.922430, 0.271948}, {-0.770345, 0.248383}, {-0.262733, -0.459021}, {-1.543574, 0.237828}, {0.427934, 1.167747}, {0.838651, -0.645278}, {0.003714, 0.143614}, {-0.365774, 0.832688}, {0.120564, 0.594678}, {0.995994, -0.565695}, {-0.126425, 0.174578}, {0.947284, -0.717938}, {1.291500, 0.893980}, {0.094097, 0.331983}, {-1.520554, 1.050692}, {0.429938, 0.967334}, {1.062959, 1.335563}, {-1.374009, 0.443307}, {-0.133662, 0.424658}, {-0.351652, 0.475247}, {-0.774004, 1.216356}, {-0.929932, -1.357864}, {-1.093596, -0.304936}, {0.421699, 1.120944}, {-0.347581, -1.700207}, {1.759930, 0.663514}, {-0.091702, 0.155358}, {0.037256, 0.562375}, {-0.880499, 0.164302}, {-0.851232, 0.905426}, {-0.576845, 0.536598}, {-0.671018, 0.273580}, {0.527832, 0.179628}, {-0.088704, -0.382192}, {-0.475693, -0.489545}, {0.813913, -0.007911}, {0.866953, 1.168459}, {0.342727, 0.090489}, {-0.102248, 0.577989}, {0.548149, 0.018512}, {-0.439522, -0.100163}, {-0.187621, -0.065630}, {-0.323931, -0.323939}, {-0.346097, -0.211944}, {0.183836, 1.796108}, {-0.314326, 0.290377}, {0.221068, -0.314679}, {-0.807497, 0.876966}, {1.656237, -1.284909}, {0.429140, 0.610550}, {-0.692503, -1.275180}, {0.148498, -0.742160}, {0.471384, -0.117794}, {-0.337555, 0.201199}, {0.276186, 0.288946}, {0.242827, -0.076791}, {1.846708, -0.086855}, {-0.069953, 0.656462}, {0.115995, 0.180799}, {-0.284735, 0.545367}, {0.633690, -0.122335}, {-0.909572, -1.230068}, {0.080008, 0.996363}, {0.694586, -0.073983}, {-0.882830, -1.068673}, {0.189491, 1.853682}, {-1.424492, 0.427126}, {0.689818, 1.018190}, {0.475888, -0.235734}, {0.272150, 0.265798}, {0.032696, 0.054859}, {-0.596591, -0.418400}, {-0.330926, 1.472477}, {0.830467, 0.554452}, {0.141106, -0.441457}, {0.871720, 0.179847}, {0.295633, -0.724683}, {-0.435067, 0.340489}, {0.350137, 1.011308}, {-0.193628, 0.339546}, {0.698882, 0.568895}, {0.714853, -0.257131}, {-0.262342, -0.470386}, {-0.636850, -0.532836}, {-0.147885, -0.767427}, {0.750463, -0.213164}, {-0.548790, 0.050549}, {-1.033421, -0.901535}, {1.500041, -1.549836}, {-0.432532, 0.497503}, {1.038156, 0.874007}, {0.463656, 0.085929}, {-0.089563, -0.381914}, {-0.081148, 1.037969}, {0.548773, 0.429676}, {-0.491311, -0.637343}, {-2.438709, -0.051842}, {1.225795, -0.902596}, {-0.445842, 0.452895}, {0.109824, 0.055383}, {-0.232239, 0.462964}, {0.237473, -0.816454}, {-0.073903, 0.108264}, {-0.412081, 0.634950}, {0.526763, -0.598860}, {0.633333, 0.185228}, {-0.230045, -0.696161}, {-1.147548, -0.875395}, {-0.126686, -0.787857}, {-0.478097, -0.754376}, {-1.022308, -0.408585}, {-0.269342, -0.318111}, {-0.634583, 0.035421}, {0.976029, 0.481457}, {0.490922, 1.815942}, {-0.325872, 0.000525}, {-0.552517, 0.029422}, {-0.493102, -0.053374}, {-1.503537, -0.460894}, {1.108601, -0.232398}, {-0.695587, -1.170494}, {-1.077017, -0.195150}, {0.199615, 0.188295}, {0.984679, -0.566367}, {1.297710, -0.537764}, {-0.743610, 1.332962}, {0.611631, -1.230295}, {0.535225, -0.203019}, {-1.456897, 0.798777}, {-0.000363, -0.238487}, {0.922337, 0.150983}, {0.215997, 0.386013}, {0.536468, 0.167675}, {0.223258, 0.110369}, {0.661156, 0.422147}, {-0.247800, -0.854418}, {0.653356, 0.093449}, {0.412471, 0.099614}, {0.008260, -0.284842}, {0.602377, 0.832860}, {-0.140841, 0.066235}, {0.373272, -0.127086}, {0.881863, -0.583065}, {-0.689000, 0.206484}, {1.005700, -0.372850}, {-0.405465, -0.531119}, {-0.647395, -0.657215}, {0.062044, -1.065059}, {-0.727797, 0.903809}, {-0.566777, -0.706294}, {-0.632129, 0.467014}, {0.899076, 0.126889}, {0.385478, 1.186605}, {0.703954, -0.241354}, {0.283012, 0.853681}, {-0.971216, -0.982086}, {0.102070, -0.510027}, {-0.474635, 0.615183}, {-1.176123, 0.165700}, {0.656442, -0.454286}, {-0.470031, 0.269875}, {-0.570072, 0.651427}, {0.160737, 0.443575}, {-0.102227, -1.423956}, {0.063696, 0.787943}, {0.435511, -1.119014}, {-0.192739, -0.355147}, {-0.353761, -0.790623}, {-1.113609, 0.176838}, {0.250330, -0.046952}, {0.615718, 0.870463}, {0.400504, 0.431724}, {1.162029, -0.731667}, {0.568344, -1.078877}, {0.085425, -0.443310}, {0.207902, 1.284480}, {0.334856, 0.462654}, {-0.335173, 1.595103}, {-0.929111, -0.555447}, {0.011277, 0.456913}, {-0.040002, 0.130483}, {0.973999, 0.191361}, {-0.303043, 0.236946}, {0.643394, -0.426236}, {0.323195, -1.152534}, {0.747335, -1.247994}, {0.294046, -0.113540}, {-0.253140, -0.990029}, {1.250059, 0.248076}, {-0.521407, -0.594040}, {0.808065, 0.500768}, {-0.017087, 1.026674}, {0.006366, -0.327461}, {-0.349676, -1.622236}, {-0.438362, 0.532035}, {-0.660037, -0.474255}, {0.162498, 0.533545}, {1.633542, -0.132034}, {-0.318215, 0.175327}, {1.192031, -0.516092}, {0.778273, 2.231759}, {-0.011893, -0.581060}, {-1.029364, -0.695297}, {-0.173287, 0.110115}, {0.635321, 0.005894}, {-0.363303, 0.267814}, {0.757333, 0.531349}, {-0.454391, -0.388071}, {0.250888, -1.427019}, {0.180933, -1.456074}, {0.679743, -0.683070}, {-0.313584, -0.254765}, {-0.030301, 0.911933}, {0.128000, 0.628659}, {-0.443625, -0.158499}, {1.973744, -0.920044}, {0.893488, -0.150660}, {0.931910, 0.910991}, {0.042853, -0.026324}, {-0.313634, -0.520955}, {-0.671536, -0.215733}, {0.556569, 0.028198}, {1.117075, 0.254181}, {-0.910888, 0.046416}, {-0.442587, -0.710371}, {0.417335, 0.155742}, {-0.390962, 1.821362}, {0.041557, 0.535249}, {0.118388, -1.118331}, {-1.008590, 0.173649}, {0.933494, -0.410314}, {-1.828304, -0.246922}, {0.948599, 0.110863}, {0.563454, -0.219323}, {0.190125, -1.330677}, {0.649893, 0.077576}, {0.752153, 0.957161}, {0.145088, 0.727431}, {-0.266557, -0.271793}, {-0.021569, 0.947269}, {-0.193472, 0.296913}, {0.872543, 0.792483}, {0.567036, -1.219657}, {-0.243654, 0.348594}, {1.193936, 0.547621}, {0.457518, 0.539115}, {0.476268, 0.389504}, {0.481768, -1.579726}, {-0.125194, 0.075938}, {0.973247, -0.247002}, {-0.843604, 0.794316}, {0.516310, 0.192748}, {-0.156413, -0.385387}, {0.670795, 0.673320}, {0.715695, 0.154379}, {-1.280764, -0.035405}, {0.336530, 1.477179}, {0.379120, 1.083063}, {-0.395949, -0.490567}, {-0.541033, 0.318875}, {1.380447, 1.144061}, {-1.155728, -0.451759}, {-0.119609, 0.530847}, {0.112070, -0.418582}, {-0.073277, -0.967746}, {-0.568655, 0.359419}, {-0.644562, 1.301028}, {-0.972656, -0.051257}, {0.565598, 0.063147}, {0.226373, -1.303766}, {-0.053945, 0.745209}, {-0.902083, -0.659843}, {1.127191, 1.430759}, {-0.593266, -0.302685}, {-0.258176, 0.542044}, {-0.416106, -0.838782}, {-0.513205, -0.035953}, {0.242585, -0.897682}, {-0.942517, 1.556742}, {-0.845536, -0.691953}, {1.195428, -0.996093}, {2.193852, -0.065919}, {0.924832, -0.176276}, {2.032670, 0.127016}, {-0.102169, 0.484681}, {-0.035450, -1.188934}, {0.429058, 0.816624}, {-0.470365, 0.209900}, {1.204684, 0.408525}, {-1.114052, 0.414965}, {-0.544975, 1.493659}, {1.142379, 0.058358}, {-1.591466, 0.057853}, {-0.396774, -0.466300}, {0.278815, 0.305556}, {0.398613, -0.065548}, {0.671438, 0.213874}, {-1.240631, 0.575082}, {0.694327, -1.107893}, {-0.789778, -0.245106}, {1.082148, 0.219531}, {0.152659, -0.295388}, {1.491724, 1.028192}, {0.264360, -2.175691}, {0.311309, 0.322370}, {-1.010542, -0.856291}, {1.053519, -0.514131}, {0.635882, 0.553160}, {0.210920, -0.544505}, {-0.390892, 0.472470}, {-1.002592, 0.835210}, {-0.380769, 1.290713}, {-1.474071, -0.592612}, {-1.467829, -0.275493}, {-0.484917, -0.266843}, {1.358912, -0.290679}, {-0.760563, 0.421103}, {0.606959, 0.863622}, {-0.587442, 0.924857}, {-0.967521, -0.513563}, {-0.083623, 0.137413}, {-0.366754, 0.279873}, {-0.664209, -0.109312}, {-0.807642, -1.778743}, {0.805218, 0.540964}, {0.176385, -0.486583}, {0.173106, -0.536233}, {0.000016, 0.458630}, {-0.370551, -0.189795}, {0.285176, 0.463441}, {0.240888, -0.349790}, {0.108800, -1.538375}, {0.043605, -2.269263}, {-0.272421, -0.006057}, {0.246002, 0.570891}, {0.096239, 1.069368}, {0.120818, -0.952900}, {-0.717973, 0.329944}, {0.667827, 0.340873}, {1.111960, -0.209056}, {-0.189543, -0.273671}, {0.227323, 1.114953}, {-0.126011, 0.855705}, {-0.076941, -0.519865}, {0.663803, 0.416814}, {-1.438996, 0.380905}, {0.894368, -1.006748}, {0.577437, -0.173548}, {1.291229, 1.496509}, {-0.272941, -0.641907}, {-0.724711, 0.930725}, {0.076404, -0.563913}, {-1.000032, 0.407691}, {-0.566778, 0.243748}, {0.053640, -1.146169}, {0.056950, -0.137659}, {0.346461, 0.676644}, {1.134174, 0.689609}, {0.667048, 0.155867}, {-0.320707, -0.534195}, {0.003425, 0.485725}, {-0.047785, -0.403591}, {-0.508202, -0.573405}, {0.249207, 0.572682}, {-0.257244, 0.012521}, {0.677142, -0.089546}, {0.020521, 1.116257}, {0.752646, 1.008726}, {-0.505273, -0.214467}, {-0.574463, 0.394588}, {-0.062090, 0.170994}, {-1.058119, 0.845956}, {0.671211, 0.127179}, {0.669598, 0.396192}, {-1.024867, -0.406429}, {-0.919537, -1.145803}, {0.835666, -1.895036}, {-1.151913, 0.473192}, {0.555942, 0.438244}, {-0.109398, -0.855773}, {-0.287955, -0.851273}, {-0.240201, 0.972916}, {0.263522, 1.213921}, {0.260295, 0.650558}, {0.211509, 0.528461}, {0.224630, 0.145409}, {0.998198, -0.616575}, {-0.241487, -0.203747}, {0.176697, 0.282204}, {-1.171878, -0.213805}, {-0.379528, 0.635300}, {-1.216967, 0.179625}, {-0.880248, -0.542043}, {-0.062630, 1.538727}, {-0.418366, 0.221704}, {-0.204577, -0.588521}, {0.468903, 0.240225}, {0.962490, 0.035097}, {-1.212926, -0.343519}, {1.920868, 0.684370}, {1.041078, 0.532627}, {0.283895, -0.418711}, {-1.397285, 0.823509}, {0.297481, -0.725686}, {-0.495904, 0.086877}, {-0.863560, -0.351497}, {0.531538, 1.820775}, {-1.045262, 0.780107}, {0.974250, -0.849368}, {0.380715, -1.227674}, {0.781374, -0.931283}, {-0.112700, 0.323563}, {0.188277, 0.095565}, {-0.780066, -0.535792}, {-0.559995, 0.628452}, {-0.217922, -0.893528}, {0.759105, -0.418794}, {0.649615, 0.790668}, {0.067538, -0.565015}, {-0.002673, 0.883082}, {0.194140, 0.176718}, {-0.940190, 1.442042}, {0.619299, 0.056097}, {0.468398, 0.509592}, {-0.711271, 0.043840}, {-0.998983, -0.728807}, {0.325337, 0.466913}, {0.077430, 0.279358}, {-0.673751, 0.162800}, {-0.231974, 0.235378}, {0.910689, -0.797473}, {-1.622605, -0.841817}, {0.432091, -1.018767}, {-0.539186, -0.324225}, {-0.242040, 0.155646}, {1.252015, 0.593035}, {0.188151, -0.739432}, {0.534619, 0.511769}, {0.345659, 0.476703}, {-0.474379, 0.580542}, {-0.760683, -0.293209}, {-0.917086, 0.574522}, {-0.423170, -0.878440}, {0.040276, 0.362034}, {0.008902, -0.223798}, {0.002946, -0.186733}, {-0.727363, 0.046058}, {0.494353, -0.235286}, {0.720284, 0.433101}, {1.295036, 0.230127}, {-0.419453, 0.141825}, {-0.485166, 0.030742}, {-0.579491, -0.809389}, {0.297978, 1.166165}, {0.107656, 0.089250}, {-0.419769, 0.749546}, {0.101102, 0.988807}, {-0.007293, -0.739409}, {-0.673602, 0.874056}, {0.488981, -0.019753}, {-0.544172, 1.634457}, {-1.110920, -0.678521}, {-1.387117, -0.567418}, {-1.186982, -0.625841}, {-0.131011, -0.534074}, {0.455097, 0.393563}, {0.737161, -1.031238}, {0.817935, -0.327775}, {-0.385625, -0.012476}, {-0.802613, 0.038609}, {-0.194642, -0.009339}, {0.377562, -1.207033}, {-0.660416, -0.454296}, {-0.706623, 0.381842}, {-0.116607, 0.548143}, {0.288850, -1.075507}, {0.276881, 0.463193}, {0.829630, 0.529055}, {0.299449, -0.575188}, {-0.231345, 0.351412}, {1.003362, -1.460585}, {0.451130, -1.124930}, {0.322338, 0.099733}, {-0.254205, -0.042471}, {0.211873, -0.537793}, {0.550656, -1.202402}, {0.302071, -0.529459}, {0.484872, -0.424805}, {-0.676112, 1.242723}, {0.196295, 0.986675}, {-0.006182, 0.043626}, {1.004458, -1.101313}, {-0.508022, -0.307337}, {-0.069604, -0.270549}, {-0.936588, 0.401472}, {0.395051, -0.291762}, {0.249364, -0.460210}, {0.470524, -1.377845}, {-0.031948, -0.316301}, {0.398084, 0.453870}, {-0.084745, 0.044352}, {-0.653237, 0.563452}, {-0.052125, 0.128803}, {-0.427875, 0.636993}, {1.058874, 0.376406}, {-0.282247, -1.483023}, {-0.125176, -0.032568}, {1.794146, -1.232187}, {-0.187983, -0.345985}, {0.123095, -0.261032}, {-0.415461, -1.090493}, {-0.500346, -0.804478}, {-0.513241, 1.041086}, {-1.784888, 0.501072}, {-0.235262, -0.395913}, {-0.874197, 0.136517}, {0.802032, 0.092163}, {0.172660, -1.036619}, {-0.740904, 0.535180}, {0.617676, 0.005886}, {-0.693840, -0.522827}, {-0.803188, -0.240073}, {-0.728556, -0.632434}, {-0.149941, 0.193266}, {0.476898, -0.368260}, {-0.031225, -0.120384}, {-0.073972, 0.464808}, {0.160690, 0.537959}, {-0.450836, 0.102038}, {-0.216212, 1.235659}, {0.164200, 0.192175}, {-0.265676, 0.384622}, {0.213530, -0.157196}, {-0.833550, -0.048440}, {0.003577, 0.903917}, {-0.060957, 0.001082}, {-0.422697, -0.291104}, {-0.436963, 0.617239}, {-0.560838, -0.652536}, {-0.389877, -1.335308}, {0.221871, -0.727966}, {0.366452, -0.156117}, {0.048762, 0.817719}, {1.364032, -1.028170}, {-0.199738, -0.597666}, {-0.048452, 0.186324}, {0.317672, 1.640253}, {1.030187, 1.004812}, {0.186677, 0.155142}, {-0.128456, -0.513439}, {1.114846, -0.127393}, {-0.365605, -0.311630}, {-0.081923, 0.648966}, {0.060946, 1.009555}, {0.545678, 0.076880}, {-0.990208, -1.026702}, {-0.840658, 0.552260}, {-1.316496, 0.415412}, {0.233111, -0.268865}, {-1.081822, 0.126111}, {-0.893361, 0.121170}, {0.637557, -0.768942}, {-0.981313, -0.937625}, {0.366842, -0.491230}, {-0.296605, -0.122075}, {-0.694637, -0.691831}, {-0.346922, 1.010405}, {0.265549, -0.072721}, {0.553767, 0.365723}, {-0.886712, 0.109635}, {-0.548347, -0.303784}, {-0.124639, 0.349517}, {-0.989650, 0.330316}, {0.762642, 0.298664}, {-0.179434, 1.111018}, {0.040421, 0.525211}, {-0.040726, -0.517622}, {-0.436258, -0.419372}, {-0.614376, -1.002123}, {0.714119, -0.753994}, {-0.514783, -0.369145}, {0.074207, -1.001150}, {0.344306, -0.309130}, {0.149015, 0.765323}, {-0.296244, 0.136197}, {0.962661, 1.268011}, {0.023783, -1.186554}, {0.123632, 0.492674}, {0.856406, 0.442632}, {0.232322, -0.486339}, {0.191689, 0.265950}, {0.179934, -0.748107}, {-1.701289, -0.051015}, {-0.259518, 1.342912}, {-1.092688, 0.126797}, {0.646145, 1.070342}, {-0.102832, 0.212320}, {0.371741, 1.059808}, {0.329041, 0.597689}, {1.172615, 0.542162}, {-0.190803, 0.345770}, {0.694535, -0.143332}, {1.565777, -0.517105}, {-1.157503, -0.395621}, {0.977210, 0.015425}, {-0.257104, 0.098762}, {-1.333003, 0.368782}, {0.061883, 0.379086}, {0.445949, -0.575541}, {0.417953, 0.289093}, {0.289993, -0.020798}, {-1.440368, 0.472769}, {1.148131, 1.054014}, {-0.556081, 0.000779}, {0.327782, 0.192655}, {-0.039300, -0.677965}, {0.740380, -0.491050}, {-0.072859, -1.870999}, {-0.464327, -0.233392}, {0.037757, -0.291647}, {-0.124848, -0.199890}, {0.429504, 1.065232}, {-0.841457, 0.469673}, {-0.636712, 0.263585}, {0.958690, -0.322036}, {-0.209246, 0.211522}, {0.228839, -1.553564}, {0.544155, 0.188110}, {0.738006, 0.016440}, {0.586748, 0.001516}, {0.360613, 0.505248}, {-0.257556, -0.316652}, {-0.203123, 0.066133}, {0.707979, -0.756344}, {-0.583274, -0.479593}, {-0.810371, -0.061860}, {0.273421, -0.865636}, {-0.823282, 0.610077}, {0.094723, 0.544387}, {-0.008236, 0.290898}, {0.646489, 0.296314}, {-0.205770, -0.509249}, {-0.052562, 0.594927}, {0.444777, 0.441814}, {0.100155, -0.501991}, {-0.232563, -0.082230}, {-0.081497, -0.962312}, {0.041276, 0.987394}, {1.069935, -1.329858}, {-0.076026, -0.887274}, {0.086993, 0.014743}, {-0.179174, 0.280143}, {0.565349, -0.420367}, {0.521928, -1.241770}, {0.916126, 1.435687}, {0.637655, -0.516147}, {-1.043603, 0.819465}, {-0.883656, -0.205474}, {-0.644741, 0.180014}, {0.622506, -0.334192}, {-0.241486, -0.600670}, {-1.499588, 0.650466}, {-0.201187, -0.192333}, {0.480999, -0.530799}, {-1.738026, -0.145849}, {0.998277, 0.673428}, {-0.144344, -0.233893}, {-0.059109, -0.308362}, {0.269830, 1.562885}, {-0.013641, -0.506529}, {-0.278890, 0.111794}, {0.066036, 0.843526}, {-0.042208, 1.107633}, {-0.014597, 0.485376}, {0.183473, -1.283402}, {-0.039860, -0.602430}, {0.759903, 0.034461}, {-0.520732, 0.826968}, {0.093097, 0.518453}, {-0.047591, 0.588031}, {-0.808060, -0.728578}, {-1.845584, 0.914242}, {0.266263, 0.716752}, {-1.253357, -1.118286}, {0.705217, 0.050021}, {0.743902, -0.448512}, {0.216893, 0.073955}, {0.385487, 0.994616}, {0.178511, 0.204042}, {-0.523429, -0.483543}, {0.274570, 0.042189}, {-0.187481, 0.727858}, {-1.040426, -0.720766}, {-0.359936, 1.093006}, {-0.665247, -0.950281}, {-1.001936, 0.289410}, {1.381124, 0.376211}, {0.995092, -0.174666}, {1.360198, -2.217745}, {-0.554387, -1.676721}, {-0.233175, -0.582371}, {-0.388060, -0.034116}, {1.342218, 0.537788}, {0.249304, 1.296082}, {-1.475857, -1.157512}, {-0.197745, -0.568437}, {0.824403, 0.507678}, {0.819198, -0.920770}, {0.385495, -0.200380}, {-0.503672, 0.548119}, {-1.111840, -1.633640}, {-1.163537, -0.037715}, {0.292674, -0.654745}, {-0.962338, -0.407980}, {-0.123743, 0.028162}, {-0.253323, 0.014822}, {0.479730, -0.823812}, {-1.207221, 0.300687}, {0.996807, -1.482183}, {-0.338063, 0.564877}, {0.920558, -0.084443}, {1.293720, 0.577197}, {-0.967375, 0.013719}, {-0.481738, 0.429749}, {-0.943010, -0.544458}, {0.060644, 0.029556}, {1.271225, 0.072382}, {1.345314, -0.606930}, {-0.113264, 0.048617}, {-0.471231, 0.591903}, {0.450025, -0.255396}, {1.082117, -0.457752}, {-0.437023, 0.619777}, {0.199128, 0.415873}, {-0.738844, -1.578600}, {-0.460504, -0.497232}, {0.365693, 0.851386}, {1.155773, 0.416016}, {1.362762, -0.089273}, {0.045085, -0.410653}, {-0.352391, 1.194551}, {0.269619, -0.845695}, {-0.937635, -0.041440}, {-0.291614, 0.210214}, {-0.590964, 0.334029}, {0.041430, -0.582846}, {-0.049634, -0.333992}, {0.587620, 0.926445}, {0.019148, -0.708333}, {-0.897879, 1.311240}, {-0.362442, 1.068789}, {0.417690, 0.948938}, {1.014004, -0.315357}, {-0.426504, 0.852104}, {0.879939, 1.426273}, {1.147532, -0.513129}, {-0.010543, -0.559115}, {-0.935264, -0.274738}, {0.047804, -0.517361}, {-1.287619, -0.019239}, {-0.829546, -0.280842}, {-0.731296, 0.823460}, {-0.891822, 0.427640}, {0.589846, 0.227553}, {0.224689, 0.571736}, {-0.991209, -1.790480}, {-0.009287, 0.367028}, {-0.551808, -1.155483}, {-0.158887, -0.504851}, {-1.006753, 1.691039}, {0.139125, 1.656709}, {0.311493, -1.358651}, {-0.000659, -0.397979}, {0.168687, -0.256026}, {-1.042776, 0.605335}, {-0.319026, 1.219072}, {1.837911, 0.271572}, {0.239919, 0.877257}, {-0.037115, -0.596589}, {-0.745878, 1.264467}, {0.010089, 0.390431}, {-0.581987, -0.175623}, {-0.649250, 0.127701}, {-0.927358, -0.445949}, {0.969864, -0.227424}, {0.341977, 0.252902}, {0.135549, -0.495303}, {-0.434902, -0.375805}, {0.365613, 0.090189}, {-0.599520, -0.108817}, {-0.486901, 0.808199}, {0.802453, 0.113674}, {-0.985303, 0.348679}, {0.272472, -0.315188}, {0.653225, -0.102477}, {-1.075974, 0.333581}, {0.197104, -0.038665}, {0.362767, 0.959841}, {-0.336212, -0.991636}, {0.341808, -0.200085}, {0.350307, -1.046523}, {0.941919, -0.790265}, {-0.391904, -0.269616}, {-0.583731, -0.576541}, {-0.767887, 0.168764}, {0.804567, -0.160216}, {1.321056, 0.602316}, {-0.188219, -0.925499}, {-0.025028, -0.134455}, {0.409337, 0.135734}, {0.934364, 0.899781}, {0.443336, -0.454010}, {0.267522, 1.651923}, {-0.021616, -0.240785}, {-0.389671, 0.913717}, {1.028459, -0.957200}, {0.917363, 0.369138}, {0.528539, 0.496175}, {0.086018, 0.410356}, {-0.761042, 0.621316}, {0.674682, -0.212507}, {-0.658861, -0.532391}, {0.285689, -0.034456}, {0.547369, 0.588551}, {-0.665673, -0.523220}, {-0.044039, 0.016680}, {0.770642, 1.488234}, {1.180668, -0.468981}, {-0.046869, -0.474722}, {-0.575480, 1.143743}, {0.493793, -0.521459}, {-0.181592, 0.068195}, {-0.893649, -0.629530}, {0.739301, -0.072214}, {0.372672, 0.080329}, {0.913631, -1.018692}, {-0.517839, 0.093767}, {0.621679, 0.306497}, {0.074540, 0.055095}, {0.723377, -0.915493}, {0.022777, -0.462031}, {0.093992, 0.364776}, {-0.161938, -1.408632}, {-0.700315, -0.305135}, {0.067748, -0.187459}, {0.483409, -0.713985}, {0.928152, -0.381167}, {-0.857084, 1.583029}, {-1.318696, 0.516152}, {0.062040, 0.590523}, {0.832742, -0.065744}, {0.190616, 0.184008}, {0.718808, 0.579103}, {0.091621, -0.167070}, {-0.496135, 1.776628}, {-0.776281, -0.967919}, {-0.340838, -1.252051}, {0.509865, 0.890890}, {0.011224, 1.492168}, {-0.370739, 0.707013}, {-0.707116, 1.492027}, {-1.470031, -1.128868}, {-1.199963, 0.304341}, {0.178199, -1.144514}, {0.827291, 0.129026}, {-1.809214, 0.424594}, {-0.056250, -1.086321}, {-0.806620, 0.594545}, {0.614157, 0.789597}, {-0.230539, -0.152551}, {0.305055, 0.383843}, {-0.572786, -0.383604}, {0.699148, 0.289711}, {1.471148, 1.731421}, {0.221494, -0.119078}, {0.134051, 0.860560}, {-0.199285, 1.539492}, {0.327753, -0.263169}, {0.070554, -0.500086}, {0.607835, 1.349017}, {0.298997, 0.241897}, {0.128546, 0.517720}, {-0.933511, -0.304699}, {-0.222248, -0.319890}, {0.219134, 1.083726}, {0.732430, -0.081472}, {-0.274968, 0.590110}, {-0.774399, 1.437671}, {1.398432, -0.474460}, {0.731892, 0.666366}, {0.286832, -0.212891}, {0.820630, 1.301418}, {0.413562, 1.052060}, {-0.226316, -0.541971}, {-1.042872, -0.345541}, {-0.858989, -1.096863}, {1.880585, -0.233188}, {-0.807930, -1.151544}, {0.394861, -0.330062}, {-0.085289, -1.629366}, {0.640853, -0.152655}, {0.183194, -0.254060}, {-1.443384, 1.394728}, {-0.011702, 0.646342}, {0.736446, -1.332796}, {0.621335, -0.574106}, {-0.338450, -1.567302}, {-0.332211, 0.110908}, {-1.017165, -1.522539}, {-0.140315, 2.030807}, {0.044867, -1.101171}, {0.189708, 0.085158}, {-1.830584, 0.387522}, {-1.017359, 0.484883}, {0.275108, 0.181996}, {-0.327957, 1.214680}, {0.336969, -0.766226}, {-0.562675, 0.180997}, {1.310744, 0.585186}, {0.080051, 2.094519}, {0.211201, 0.942647}, {0.568763, -0.272394}, {0.152587, -0.595240}, {1.275315, 0.622396}, {0.813283, -0.132745}, {0.407696, 1.569844}, {0.039364, 0.287794}, {0.244642, -0.641218}, {0.886477, 1.006243}, {0.948847, 0.187471}, {-0.626010, 0.160922}, {0.962612, 0.504401}, {0.875536, -0.815369}, {0.175947, -1.244808}, {-0.070131, 0.461325}, {0.202225, -1.039772}, {-0.325603, 0.232979}, {-0.747171, -1.024781}, {-0.079451, 0.376832}, {0.336329, 1.142868}, {0.213160, 0.231289}, {-0.691300, -0.017983}, {0.057278, -0.387798}, {0.073555, 1.006174}, {0.490772, 0.337166}, {0.685390, -0.318414}, {0.637094, 0.808315}, {0.523969, 2.121595}, {0.721264, -0.482325}, {-0.145401, -0.605792}, {-0.233810, -0.053732}, {1.269554, 0.710916}, {1.057321, -1.046691}, {0.464363, -0.270764}, {0.840490, 1.150537}, {-0.620898, -1.419891}, {-0.857446, -0.039502}, {-0.770707, -1.876256}, {0.950801, 1.087080}, {1.432451, -0.030974}, {0.490360, -0.567231}, {-0.268067, -1.435917}, {-1.183652, 0.279454}, {0.884853, -0.220426}, {-0.528640, -0.111193}, {-1.097008, 0.128877}, {-1.181036, -0.940732}, {0.775628, 0.000761}, {1.472129, 0.938313}, {-0.651045, -0.150514}, {0.253945, 0.727849}, {-0.625689, -0.863395}, {-0.857663, -0.204035}, {0.229410, 0.785159}, {0.415385, -0.811285}, {0.135788, 0.541017}, {0.540449, 0.302355}, {-0.375243, -0.075659}, {-0.126218, -1.254478}, {-0.842535, -0.102853}, {-0.944249, 0.424586}, {1.011823, -0.620988}, {1.012036, 0.169655}, {0.512690, 0.312651}, {-0.628804, 0.539718}, {0.567513, 0.109352}, {0.934259, -0.533472}, {-0.633715, -1.496096}, {-0.416398, -0.918620}, {0.421463, -1.209687}, {0.314672, -0.470088}, {-0.834237, -0.445546}, {-0.485232, -0.247145}, {-0.136325, -0.141431}, {-0.006273, 1.250196}, {0.266229, -0.648711}, {-0.945678, -0.027143}, {0.782856, -0.470187}, {0.305630, 0.658933}, {-1.111016, 0.700723}, {-0.365320, 0.254061}, {-0.175023, 0.308741}, {0.744562, 0.103704}, {0.557819, 0.264705}, {-1.130397, -0.307616}, {0.190300, 0.843572}, {0.871835, -0.864320}, {1.025579, 0.117274}, {-0.714639, -1.413594}, {-0.394212, 0.630346}, {-0.402052, 0.309273}, {1.048158, 0.495032}, {-1.458614, 0.390078}, {-1.348655, -0.157187}, {0.627460, 0.517239}, {0.616428, 0.013392}, {0.066659, 0.172077}, {0.177589, 1.104288}, {-0.202342, 0.342469}, {-0.896507, -0.597822}, {-2.067867, -1.208733}, {-0.022428, 0.203426}, {0.303756, 0.349684}, {0.627717, 0.858736}, {-0.745760, -0.181848}, {-0.496215, 1.429290}, {-0.011943, -1.057738}, {0.536641, 1.349276}, {-0.528001, -0.098934}, {-1.063109, 0.581999}, {-1.256061, 0.808575}, {-0.601466, 0.399072}, {0.563718, -0.264581}, {-0.237276, -0.677165}, {-0.348054, 1.673165}, {0.064061, -0.618610}, {-0.161228, 0.795589}, {-0.924021, -1.050412}, {0.197726, 0.353867}, {-0.151410, -1.246225}, {-0.714340, 0.549384}, {1.556261, -1.468342}, {0.468479, -0.903354}, {-0.483340, 1.187727}, {0.077127, -0.093447}, {0.064972, 0.945303}, {-0.092409, 0.145919}, {1.315321, 0.437219}, {0.090724, 0.761955}, {0.781174, 0.978083}, {-0.308962, -0.268376}, {0.696462, -0.805879}, {0.966927, 1.486179}, {-1.249165, -1.299388}, {1.239842, 0.109267}, {-0.340003, 0.701168}, {-1.633695, 0.438179}, {0.257196, 0.023754}, {0.005382, -0.652799}, {0.698827, -1.245465}, {1.057062, -0.264028}, {-0.335223, -0.503241}, {0.175219, -1.082885}, {-0.274187, -0.933890}, {-0.240526, -2.221268}, {-0.007571, 0.808866}, {0.162060, 0.252737}, {0.481541, 0.726904}, {-0.555236, 0.591634}, {-0.136039, -0.497365}, {-0.914324, -0.971380}, {-0.330625, 0.159913}, {0.231296, -1.098666}, {0.393929, -1.169035}, {-0.664998, 0.348284}, {0.579266, -0.439099}, {0.782286, -0.483201}, {-0.036705, 0.243544}, {-0.470027, -0.758332}, {-1.089025, 0.282651}, {-0.536396, -0.779503}, {0.584009, 0.036838}, {0.777240, -0.758248}, {-0.410388, 0.482134}, {-0.240905, -0.322910}, {1.052859, 0.448321}, {0.744819, 0.688556}, {-0.323975, -0.312544}, {1.688688, 0.125085}, {0.767757, 0.027399}, {-0.165767, 0.087836}, {-0.295850, -1.950460}, {0.035816, 0.245902}, {-0.180130, -1.262665}, {0.117034, 0.019373}, {0.309583, -0.084634}, {0.160314, 0.617106}, {-0.223874, -0.405101}, {0.391423, -0.984880}, {-0.583522, -0.208371}, {0.314564, 1.000927}, {1.528070, -0.488905}, {0.682797, -0.214904}, {-0.961746, 0.561929}, {-0.044529, -0.357871}, {-0.881485, -0.203306}, {1.081847, -0.376245}, {0.828899, 1.159757}, {-0.396282, 0.868155}, {0.013008, -0.796971}, {1.839981, 0.128022}, {0.861759, -0.389782}, {0.939432, 0.185296}, {0.402922, -1.121553}, {-0.878636, -1.122818}, {1.213472, 0.848105}, {0.264317, -0.326819}, {0.669519, -0.620270}, {0.703125, -0.958242}, {-0.367984, -0.413227}, {-0.561993, 0.902582}, {0.709199, 0.095548}, {-0.624048, -0.624104}, {0.367587, 0.743255}, {0.349618, -0.082040}, {0.353670, -0.602772}, {-0.121469, 0.186655}, {0.966288, -0.989082}, {0.615847, 1.087146}, {0.049469, -0.498055}, {0.161550, 0.553359}, {-0.061135, -0.214648}, {0.046340, 1.148951}, {-0.104857, 0.135405}, {0.575610, 1.613613}, {0.294077, 0.716711}, {0.590764, -0.458646}, {0.533655, -0.474675}, {-0.200094, 0.220235}, {0.538978, -0.112814}, {-0.596995, 0.556408}, {0.538951, -2.449696}, {0.092171, -0.864222}, {1.336939, 0.991303}, {0.333067, 0.173662}, {-0.153896, 0.523270}, {-0.582494, 0.868651}, {0.018634, 0.130106}, {-0.392325, -0.082136}, {0.011480, 0.421792}, {-0.427424, -0.661210}, {0.942397, 0.587290}, {-0.291423, 0.402361}, {-0.624678, 0.855158}, {0.427905, -0.996070}, {-0.282753, -0.652971}, {-1.240070, 1.256909}, {0.815396, -0.668763}, {0.069285, 0.238819}, {0.077701, 0.317614}, {1.331490, 0.009543}, {1.194605, -0.196271}, {0.230566, 0.449264}, {0.385677, 1.158774}, {-0.340860, -0.164507}, {-0.842850, -0.564676}, {-1.758840, 0.064669}, {-0.772174, 0.091618}, {1.140984, -0.811770}, {-0.283852, -0.741705}, {0.846224, 0.293317}, {-0.901372, 1.090597}, {1.033877, -1.064114}, {-1.186147, 0.598334}, {-0.967792, 1.113083}, {0.974157, 0.994512}, {0.313614, -0.240645}, {-0.063238, -0.036188}, {-0.886378, -0.081582}, {0.155813, -1.314707}, {0.005821, 0.803969}, {0.031398, 1.138370}, {0.020663, -1.412936}, {0.051696, 0.849846}, {-0.754989, -0.899231}, {0.394988, 0.540404}, {-0.440672, -0.180217}, {1.164193, -0.163753}, {0.201996, -0.935543}, {-0.757096, 0.768721}, {-0.851269, 0.282609}, {-0.032236, -0.457477}, {0.242147, -0.379077}, {-0.369603, -0.280814}, {0.521168, -0.299217}, {-0.383667, 0.998399}, {-0.273344, -0.133382}, {-0.197726, 0.033374}, {0.399979, 0.840030}, {-0.349378, -0.387395}, {1.124925, -0.570043}, {0.418603, 0.905447}, {0.470094, -0.957354}, {0.799573, 0.109228}, {0.261391, -0.587899}, {0.115105, 0.568951}, {-0.511340, 1.109997}, {0.183765, 1.450929}, {0.528498, -0.666337}, {0.342372, -0.375714}, {-1.148716, 0.543099}, {-0.747361, -0.454390}, {-0.510703, -0.904779}, {0.494719, 0.007910}, {-0.178977, -0.714179}, {-0.178152, -0.715379}, {-0.282468, 0.236082}, {-1.500059, -0.596371}, {0.070261, 0.659727}, {-0.930558, 0.499131}, {0.889396, 0.872062}, {1.504564, -0.762497}, {-0.316940, -0.491494}, {-0.366178, -0.120892}, {-1.136140, -0.665677}, {0.792450, 0.494536}, {-0.058379, -0.131564}, {0.318553, -0.170468}, {-0.442968, -0.453066}, {-0.086122, 0.487054}, {-0.002152, 0.609175}, {-0.198518, -0.485488}, {0.401525, 1.306812}, {-0.871198, -0.567593}, {-1.415314, -0.301627}, {1.094900, 0.063995}, {-0.495128, 0.213385}, {0.001405, -0.320934}, {-0.324564, -0.183506}, {0.122253, -0.766486}, {0.984696, 0.267844}, {0.390885, -0.724844}, {-0.295282, 0.211369}, {-0.452752, 0.149217}, {-1.129899, 1.635510}, {0.401396, 0.319009}, {-0.558456, 0.761582}, {0.516621, -0.299728}, {1.170774, 0.462117}, {0.617850, 0.230530}, {-0.616788, -0.704169}, {0.921282, -0.768237}, {-0.341409, 0.311033}, {1.237788, -0.817666}, {0.485433, -1.114476}, {-0.342288, -0.175267}, {0.536632, 1.147849}, {0.173754, 0.023311}, {0.019679, -0.413100}, {0.597239, -0.651007}, {0.649898, -0.023947}, {0.784239, 0.588037}, {0.830428, -0.495560}, {-1.123475, 1.667920}, {-0.757155, 0.047444}, {-1.536651, 0.080233}, {-0.600005, 0.260676}, {0.220305, -1.151817}, {-0.957182, 0.202521}, {0.051226, -0.029891}, {0.929447, 0.384707}, {-0.422607, -0.106100}, {0.353436, 0.656718}, {-1.698234, -0.708923}, {0.303429, -0.258709}, {-0.088662, 0.015699}, {-0.107934, -0.261967}, {0.273168, 1.400901}, {0.727049, -0.003312}, {0.353597, 0.715919}, {-0.952026, -0.067464}, {-0.145977, -0.817247}, {0.424964, -0.919265}, {0.216841, -0.912514}, {0.817183, -0.911165}, {-0.818262, -0.517903}, {0.313475, -0.796077}, {-0.461417, 0.089258}, {0.281792, -0.291761}, {0.256943, -0.778188}, {0.692420, -1.751276}, {-0.667443, -1.761493}, {0.064327, 0.039954}, {0.393151, -0.403340}, {0.452610, -1.766216}, {-1.336807, -0.219532}, {0.984460, -0.595093}, {-0.702228, 0.759469}, {-0.464956, 0.036841}, {0.212799, 0.031216}, {-0.802860, -0.547493}, {-0.158662, 0.903760}, {0.085684, -0.487384}, {0.396768, -0.742668}, {0.947527, -0.110617}, {-0.879301, 0.044952}, {1.116675, -0.038127}, {-0.722818, 1.392444}, {-0.373075, 0.108044}, {0.341487, 0.570356}, {0.441689, -0.298432}, {-0.916256, 0.631859}, {-0.115507, 0.498266}, {0.487754, 0.201490}, {1.238389, -0.100924}, {0.271103, 0.682797}, {-0.148481, 0.589360}, {-1.194668, -0.756352}, {0.264142, 0.313523}, {0.562690, -0.166170}, {-0.527054, 0.196752}, {-1.636821, -0.651796}, {0.182204, 0.101729}, {-1.710289, -0.320628}, {0.053238, -0.006688}, {0.879077, -0.416623}, {0.459898, -0.350816}, {-0.856786, 0.761817}, {0.575136, 0.370224}, {-0.710682, -1.661932}, {0.336980, 0.262314}, {-0.579270, 1.290335}, {1.163348, 0.112616}, {-0.596616, -0.104548}, {-0.584829, 0.611158}, {-0.507069, 0.090728}, {-1.061880, 0.073344}, {-0.141397, 0.660130}, {1.132322, 0.001417}, {-0.578203, 1.455008}, {0.430346, -0.353417}, {0.774728, -0.360911}, {0.089974, 0.151366}, {-0.258221, -0.281586}, {0.380590, -0.050307}, {0.805828, 1.610702}, {-2.417115, -0.796571}, {0.513097, -0.330322}, {-0.384140, 0.768697}, {-0.343898, 0.186101}, {-1.280400, -0.294454}, {0.497601, -1.076587}, {0.969059, 0.648983}, {0.415521, -0.271362}, {-0.023547, -0.051680}, {0.697681, 0.077273}, {1.467525, -0.087120}, {0.914526, 0.512467}, {0.673227, -0.608451}, {0.868157, -0.438369}, {-0.641897, -0.582166}, {-0.395403, -0.726859}, {0.708135, 0.058289}, {0.155302, -0.353393}, {-0.604680, -0.269021}, {0.555662, -0.222243}, {-0.691591, -1.012201}, {0.593126, -0.482201}, {0.938501, -0.141245}, {-0.285179, -0.282197}, {-0.332866, -0.838107}, {-0.299353, 0.907257}, {-0.502252, 0.130212}, {0.509899, 0.203982}, {0.432764, -1.036891}, {0.320100, 0.302258}, {-0.715537, 0.630849}, {1.399467, 0.189787}, {0.257626, 0.021932}, {-0.112331, 0.217707}, {-1.289427, 1.432804}, {-0.390872, -0.357403}, {0.236182, 0.303781}, {0.802511, 0.330483}, {-1.028297, -0.403086}, {-0.147910, -0.288479}, {0.978197, -0.775374}, {0.868229, 1.459663}, {0.452224, 0.498722}, {0.746035, -0.670797}, {-0.360626, 0.630983}, {-0.148420, -0.258364}, {-0.536846, 0.526774}, {-0.736656, 0.599485}, {0.251565, 0.410096}, {-0.817544, 0.436993}, {-0.361899, -0.266149}, {0.106065, 1.119062}, {-0.001893, -0.840154}, {-0.174058, 0.288847}, {0.450589, -0.520516}, {0.330658, -0.272313}, {0.560301, 0.149574}, {-0.927905, -0.026315}, {-0.130635, 0.149914}, {-0.167674, 0.479912}, {0.163863, -0.914797}, {-0.236233, 0.492833}, {-0.439716, -0.273501}, {1.097053, 0.570964}, {-1.090225, -0.751110}, {-0.622561, -1.038814}, {0.309323, -1.010214}, {-0.204232, -0.589475}, {-0.039192, 0.034730}, {-0.672256, 0.289962}, {1.195556, -0.759149}, {0.701010, -0.946209}, {-0.211877, -0.021206}, {0.834771, 0.269014}, {0.310538, 0.897536}, {-0.416299, -0.103346}, {0.263666, -0.033155}, {1.199319, 0.739114}, {0.209693, -0.011071}, {1.463650, -1.052988}, {-0.101228, -0.167856}, {1.234120, -0.942573}, {0.196785, 0.954050}, {0.829042, 0.153133}, {0.357430, 0.139137}, {-1.233805, 0.986066}, {-0.587524, 0.933536}, {1.124220, 0.284460}, {0.369787, -0.213798}, {-0.012298, 1.911852}, {-1.586387, 0.267615}, {0.696006, -0.464801}, {-0.624327, 1.280676}, {0.367066, 0.324597}, {0.000432, 0.067311}, {0.390603, 1.101625}, {0.256944, -0.623323}, {0.543036, 0.814041}, {0.002517, -0.822681}, {-1.222231, 0.151677}, {1.087153, -0.651828}, {-0.140421, -0.309047}, {-1.276460, -0.479672}, {0.907053, 0.734263}, {-1.468305, 1.325843}, {-0.742062, 1.724340}, {0.602905, 0.826894}, {-0.234395, 0.552366}, {-0.319795, -0.300154}, {0.766130, 0.375387}, {-0.565094, -0.908181}, {-0.002303, 0.803038}, {0.606245, -0.886099}, {-0.375411, -0.501269}, {1.137430, 0.498844}, {1.400551, 1.243294}, {-0.572345, 0.330001}, {-0.831085, 0.224646}, {-1.193440, 0.029548}, {-1.017357, 0.114069}, {0.036078, 0.403207}, {1.394122, -0.032985}, {-0.220085, 0.427158}, {-1.279987, -0.411288}, {0.377185, 0.243313}, {0.004243, -0.857524}, {1.036016, -0.532137}, {0.245228, -1.150637}, {1.467709, -0.614337}, {-0.512344, 0.162373}, {-1.104046, -0.167139}, {-0.224718, -0.143013}, {-0.256979, 0.070597}, {0.089855, -0.271238}, {-0.734984, 0.724372}, {-0.217210, 0.319333}, {0.718725, 0.347974}, {0.251565, 0.741094}, {0.290149, 0.659867}, {0.408272, -0.032915}, {0.079918, 0.470449}, {-1.011348, -0.572926}, {0.265858, -0.244285}, {0.498660, -1.173075}, {-0.489052, 0.268982}, {0.803724, -0.240363}, {-0.448072, 0.003395}, {0.190085, 0.738899}, {-1.320261, -0.384362}, {-0.851492, -0.388560}, {0.421440, -0.177958}, {-0.701418, 0.243165}, {-0.274377, 0.336519}, {-0.432270, 0.059413}, {0.723602, -1.369028}, {0.003061, 1.025321}, {0.439715, 0.455140}, {0.247416, -0.318078}, {-0.295679, -0.309351}, {-1.069923, 0.563669}, {0.778952, 0.003877}, {-0.650501, 0.383655}, {0.290488, -0.280076}, {-0.318266, -0.503424}, {0.200569, -0.451626}, {-0.058511, 1.000852}, {-0.501142, 1.127454}, {0.840729, 0.860918}, {0.404423, 1.184485}, {0.080599, 0.337071}, {0.265972, -0.831970}, {-0.792118, -0.632130}, {-1.312815, -0.150298}, {0.384463, 0.434096}, {-0.473277, -0.646626}, {0.726083, 0.524943}, {0.232413, -1.349094}, {-0.132578, -0.328246}, {0.192057, -0.949313}, {-0.294124, 1.799810}, {-0.646249, -0.365151}, {-1.142885, -0.860267}, {0.952542, 0.463949}, {-0.843407, 0.603740}, {0.245604, 0.005612}, {0.876790, -0.725446}, {-1.264255, -0.509446}, {0.935016, -0.003417}, {0.253759, -0.252225}, {-0.504993, 0.338401}, {1.002041, 0.260841}, {0.156989, -0.135302}, {-1.024724, -0.400709}, {-0.112462, -1.205456}, {0.334260, 0.781035}, {0.183794, 0.683842}, {-0.865777, 0.383277}, {-0.505670, 0.667817}, {-0.088249, 0.840903}, {1.101360, 1.926043}, {-0.308625, -0.138154}, {0.609676, -0.715983}, {-0.645769, -0.287890}, {0.369474, -0.729993}, {0.186644, 0.541750}, {0.463282, 0.674407}, {0.216844, -0.852488}, {0.856090, 0.940839}, {1.001064, 0.394220}, {-0.837133, -0.154497}, {-0.390434, 0.439008}, {0.680226, -0.317541}, {0.098053, 0.117416}, {0.071014, -0.649889}, {-0.262387, -0.155264}, {0.388413, 0.769428}, {0.158413, 0.941346}, {0.671325, -0.266932}, {0.970945, -0.618071}, {0.233638, 0.572923}, {0.060161, -0.256486}, {-0.637504, 0.063894}, {0.934414, -0.427341}, {-0.467026, 0.652522}, {-0.863576, 0.149723}, {-0.771443, -0.816274}, {0.511701, -0.479018}, {-0.257457, 0.087086}, {0.290638, 0.016947}, {-0.386981, -0.727179}, {-1.098515, -0.274432}, {-0.557208, 1.426296}, {-0.613355, 0.019539}, {-0.419196, -0.251018}, {-0.832714, 0.502052}, {0.128755, 0.655366}, {0.256114, 0.273034}, {-1.125167, -0.906505}, {0.388043, -0.540845}, {-0.937881, 2.105264}, {-0.202089, 1.002912}, {0.723756, -0.449443}, {0.233778, 0.527703}, {-0.057235, 1.884349}, {1.157345, -0.412072}, {-0.955458, -1.385361}, {0.053114, 0.627971}, {0.827722, 0.375269}, {-0.181816, 0.772748}, {-1.626276, 0.442130}, {-0.435385, -0.179652}, {1.089080, -0.426374}, {1.017264, 0.699838}, {-1.020426, -0.298556}, {0.676783, 0.459662}, {-0.739834, 0.763761}, {0.721741, -1.206326}, {-0.951135, -0.270497}, {-0.457913, -1.038211}, {1.712993, -0.468750}, {-0.543171, 1.050327}, {-0.541388, 0.741480}, {1.399220, -0.146602}, {-0.246873, 1.307922}, {-0.314164, -0.681691}, {-0.361125, 0.096600}, {0.468431, -0.456516}, {-1.208053, 0.471189}, {-0.369852, -0.310925}, {-0.655492, -0.981961}, {1.982648, 0.257313}, {0.350295, -0.328245}, {-0.408155, 0.164967}, {1.186227, 0.615053}, {1.538608, 0.853998}, {-1.014463, -0.266268}, {-0.038058, 1.267679}, {1.226620, -0.039905}, {0.128462, -0.723152}, {1.117944, -0.485275}, {0.110495, 0.512575}, {0.613947, -0.332562}, {1.183653, -0.135030}, {-0.545671, -1.236704}, {-0.368847, 0.282388}, {0.354177, -0.397370}, {-0.221450, 0.619409}, {-0.212607, -0.070614}, {-0.746339, 0.421409}, {-0.796334, 0.416425}, {0.281155, -0.847141}, {1.084794, -0.633466}, {-1.416468, -0.504705}, {-0.413320, -0.218964}, {-0.006619, 1.498092}, {0.592891, 0.110515}, {0.202503, -0.802352}, {-1.044280, -0.551926}, {-0.551728, 0.074422}, {-1.621229, -0.887687}, {-0.034501, -0.177771}, {0.643751, -0.498982}, {0.537422, 0.214707}, {0.859316, 0.230005}, {0.984145, 0.642774}, {-0.446523, -0.283910}, {0.698656, -0.512658}, {-0.413664, 0.370197}, {0.012230, 0.057244}, {-0.124965, 0.707693}, {-1.668994, 0.589325}, {0.431439, 0.916868}, {0.357835, -0.007437}, {0.091721, -1.193125}, {1.085117, 0.362418}, {-0.815710, -0.704111}, {0.368599, 0.417522}, {-0.153068, 0.701186}, {0.633497, 1.153006}, {-0.640502, -0.448321}, {-0.288243, -1.008288}, {-0.241203, 0.571272}, {-0.700623, 0.003668}, {0.762784, -0.271363}, {-0.675450, -0.536786}, {-1.095720, 0.963368}, {-0.545080, -0.052652}, {0.425995, 1.045991}, {0.747089, -0.106197}, {0.705921, 0.481355}, {-0.231552, -0.495818}, {-0.035338, 0.271549}, {-1.434181, -0.462102}, {-0.234651, -0.659026}, {0.293521, 0.578445}, {-0.159469, -0.371527}, {0.947780, -0.184427}, {-0.575724, 1.293055}, {1.217078, 0.776812}, {0.077462, 0.005225}, {0.031218, 0.312440}, {-0.254340, -1.261328}, {-0.545078, 0.114315}, {0.214459, 0.265649}, {0.665158, -0.572889}, {0.156845, -0.494711}, {-0.805048, -0.829465}, {-1.377436, -0.234879}, {-0.680977, 1.091655}, {0.991115, -0.327044}, {-0.636966, -0.868296}, {-0.468122, 0.139195}, {-0.023171, -0.344042}, {0.779795, 0.665803}, {0.288043, -0.640526}, {-0.377837, -0.768582}, {1.312911, 0.154017}, {0.594896, 0.205326}, {0.546600, -0.380945}, {-0.348857, -0.048100}, {-0.719583, 0.758329}, {0.366828, 0.580990}, {0.370738, 0.785391}, {-0.058071, -1.293254}, {-0.886575, 0.757403}, {0.424991, -0.722256}, {0.284736, 0.076029}, {1.316231, -1.073572}, {-0.783294, 0.805530}, {0.389834, -0.129104}, {1.095639, -0.075839}, {0.935852, -0.373630}, {-0.885108, -0.020762}, {0.158064, 0.217629}, {-0.640319, -0.386929}, {-0.909168, -0.373835}, {0.010911, -0.101003}, {-0.277750, -0.148550}, {0.521820, 1.009048}, {-0.512451, -0.513281}, {-0.008047, 0.202402}, {0.741191, -0.666179}, {0.763195, 0.771867}, {0.390221, 0.297205}, {0.625399, 0.489404}, {1.023425, 0.108867}, {-0.703103, 0.629155}, {-0.103211, -0.285761}, {-0.390588, 1.375767}, {0.454617, -0.110921}, {0.317920, -0.896351}, {0.649451, -0.067138}, {-0.121899, -0.655986}, {0.358821, -1.041252}, {-0.222857, -0.303574}, {-0.568716, -0.089093}, {-0.192284, -0.838715}, {1.222415, -0.016245}, {0.526310, -0.627056}, {-0.068488, -1.753668}, {-1.039387, -0.320863}, {0.020520, 0.318572}, {0.496641, -0.577605}, {-0.968605, -0.480527}, {0.285637, 1.389404}, {0.944869, 0.885298}, {0.638385, -0.710974}, {-0.279932, 0.152341}, {-0.743228, -1.024093}, {-0.486215, -0.168400}, {-0.114585, 1.020039}, {0.056702, -0.528896}, {-0.949243, -0.844536}, {1.129499, 0.153529}, {-1.146171, -0.448270}, {-0.600020, -0.088151}, {1.026368, -0.907166}, {1.049642, 1.198028}, {-0.732045, -0.405919}, {0.210230, -0.786201}, {0.310585, 0.342437}, {0.067431, 0.566931}, {-0.587248, 0.255356}, {-0.170138, 1.277977}, {-0.258523, -1.186042}, {-0.773006, -1.019886}, {-0.448797, -0.188137}, {-0.091370, 0.772927}, {0.244919, -0.106617}, {-0.774478, -0.520363}, {0.440259, 0.217792}, {0.363108, 0.753145}, {-0.266081, 0.238928}, {-1.127392, 0.360823}, {-0.261177, 1.592192}, {0.699450, 0.113524}, {-0.655141, 0.291248}, {-0.436259, -0.058521}, {0.384314, 0.487647}, {0.039816, -1.110978}, {0.404230, 0.678814}, {-0.949673, -0.269000}, {-0.248331, -1.005033}, {-0.540079, 0.606271}, {0.444702, 0.146360}, {1.015384, -1.065484}, {-1.877784, -1.198948}, {0.489736, 1.350612}, {-0.710135, -0.775063}, {0.593538, -0.900296}, {-0.098286, -1.049735}, {-0.108973, 0.545483}, {0.062642, -0.684699}, {0.098171, 0.140806}, {-0.959390, -0.170130}, {0.461162, 1.804670}, {1.124557, 0.055315}, {0.189370, -1.658841}, {0.186242, -0.841503}, {0.633026, -0.735853}, {0.857498, -0.201044}, {-0.218993, -0.016715}, {-0.765959, 0.455723}, {0.217731, -0.073306}, {-0.436889, 0.159793}, {-0.023781, -0.349387}, {-0.248361, 0.055098}, {-0.771684, 0.303200}, {-0.211929, 1.024403}, {0.104045, -1.383657}, {-0.416710, 0.061459}, {-0.436209, -0.471431}, {-1.510879, -0.277018}, {0.200120, 1.225231}, {-0.328469, 0.600453}, {0.127003, -0.602157}, {0.987188, 0.212941}, {0.670236, 0.123304}, {0.422322, 0.157453}, {0.152338, -0.945760}, {-0.025870, -0.413677}, {-0.268227, -0.778529}, {0.480173, 0.907527}, {-0.888884, -1.439385}, {-1.351376, -1.091003}, {0.222836, -0.086297}, {0.573336, -1.360066}, {-0.806399, -0.498281}, {-0.595494, 0.831074}, {0.908191, 0.307062}, {-0.459795, -0.710666}, {-0.094751, -0.206448}, {-0.024242, -0.951987}, {-0.318051, 0.362327}, {-0.063917, -0.408062}, {-0.003055, 1.006656}, {1.000114, -0.003844}, {0.433414, 0.153418}, {-0.146174, -0.778023}, {-0.002596, -0.081254}, {-0.372852, -0.562314}, {0.813749, -0.171006}, {0.516876, -0.334962}, {0.130150, -0.220825}, {-0.399139, -0.678091}, {-0.184451, -0.949755}, {-0.188671, 0.303505}, {0.037500, -0.099776}, {0.773437, 0.244504}, {0.445884, -0.043319}, {0.316367, -0.273157}, {-0.746967, 0.698428}, {-0.191399, 0.086704}, {1.316252, 1.332223}, {0.445639, 0.004308}, {-0.087606, 0.111263}, {-0.891735, 0.020169}, {0.193313, -0.606729}, {0.731145, -0.605570}, {-0.692633, 0.021142}, {-0.444493, 0.208281}, {-0.466215, -0.817877}, {-0.624077, -0.305184}, {0.280254, 1.208432}, {0.014983, 0.902646}, {0.006548, 0.008337}, {0.044097, 0.697776}, {-0.171889, -0.146767}, {0.265368, 0.009346}, {1.059121, 0.446341}, {1.888582, -0.599794}, {-0.562391, 0.519765}, {-1.251330, -0.838557}, {-2.137730, -0.631450}, {0.182187, 0.499127}, {0.764443, 0.756613}, {0.631286, 0.584558}, {1.111431, -0.772644}, {0.076405, 0.183672}, {-0.058883, -0.335039}, {-0.703857, 0.073318}, {0.757167, 0.909054}, {-0.611251, -0.894211}, {-0.330231, 0.304851}, {-0.364020, -0.938645}, {-0.104970, 0.914045}, {0.093519, 1.357853}, {-0.770065, -0.085731}, {1.319136, 0.816044}, {0.058947, -0.406575}, {-0.396587, -0.503710}, {0.220349, -0.336425}, {-0.501066, 0.255245}, {1.323531, -1.916640}, {-0.596563, 0.742761}, {0.713492, -0.603602}, {0.051641, -0.788488}, {-0.027644, -0.011744}, {0.313449, 0.369693}, {-0.874394, -0.458299}, {0.156414, -0.301505}, {-0.817243, -0.129309}, {0.387262, 1.050022}, {-0.730068, 0.280044}, {0.562581, 0.907164}, {0.467513, 0.105385}, {0.244667, 0.168116}, {0.639852, 0.033501}, {0.208643, 0.034229}, {0.947509, -1.095182}, {0.730262, 1.390582}, {-0.409880, -1.003160}, {0.401874, 1.156874}, {-0.714656, -1.740182}, {-0.430680, -0.361054}, {-0.188850, 0.396311}, {0.796301, -0.592325}, {-1.140359, -0.833160}, {-0.015264, -0.656368}, {1.098273, -0.926714}, {0.514728, -0.216690}, {0.098571, -0.636577}, {-0.910064, 0.415927}, {-0.440682, 0.758024}, {0.127293, 0.104132}, {-0.981800, -0.277406}, {0.899617, -0.979514}, {0.602636, 0.426296}, {0.150065, 0.494543}, {0.232962, 0.763611}, {0.467684, 0.140699}, {-1.574619, 0.669059}, {0.882179, -0.011036}, {0.097422, 0.257114}, {-0.102244, -0.259914}, {0.490538, 0.105090}, {-0.996295, 0.948638}, {0.083436, 0.900836}, {0.438195, 0.350201}, {-0.679329, -0.713746}, {0.529187, 1.286256}, {-0.954747, -0.283946}, {-0.130941, -0.382040}, {-0.158855, -1.450548}, {-0.250052, -0.982319}, {-0.268123, -0.627128}, {0.444598, 1.229273}, {1.187865, 0.972354}, {1.162571, 0.615927}, {-0.053069, -0.762640}, {0.568529, 0.950631}, {0.704832, -0.363101}, {-0.821986, -0.831900}, {0.321775, -0.386797}, {0.318484, -0.462144}, {-0.981095, -0.085616}, {-0.827586, -0.611532}, {-0.767987, 0.213131}, {1.465830, 0.359996}, {0.063406, -0.101972}, {0.103066, -0.104108}, {-0.332640, -0.565526}, {0.153801, 0.192602}, {-0.180607, -0.683069}, {-1.020433, -0.029838}, {-1.056090, -0.281924}, {0.711217, 1.040632}, {-0.779687, -0.286412}, {-1.227989, 0.344829}, {-0.325886, -0.117333}, {0.010627, 0.905134}, {-0.179905, -0.040737}, {-0.034126, 0.635378}, {-0.551102, -0.611186}, {1.349050, 0.713766}, {-1.950842, 0.993737}, {-0.285493, 0.919628}, {-0.839695, -1.284912}, {0.867960, 0.118154}, {-0.524136, -0.534178}, {-0.606047, -0.077576}, {0.997701, -0.360559}, {-0.143819, -0.521362}, {0.277948, 0.011120}, {0.781126, -0.650844}, {0.514107, -0.291052}, {-0.605037, 0.018662}, {0.595003, -0.358330}, {-0.892601, -0.794597}, {-1.068990, -1.057503}, {-0.833229, 1.270529}, {-0.334875, 0.977099}, {-0.663629, 0.338105}, {0.554117, -0.088210}, {-0.667932, 1.031071}, {-0.082927, -0.130890}, {-0.543973, -0.272414}, {1.397328, 0.081006}, {0.369186, 0.137642}, {-1.393635, 0.792070}, {-0.582444, -0.031794}, {-0.053332, -0.043677}, {-0.372722, -0.230031}, {1.135177, 0.092456}, {0.280377, -0.188462}, {-0.486260, -0.151009}, {1.265662, 0.491554}, {-0.473461, 0.147609}, {-0.239905, -0.801906}, {-0.220706, 0.501078}, {0.640279, -0.721218}, {-0.349523, -0.466126}, {0.322248, 0.690068}, {0.360951, 0.602485}, {0.312384, -0.548838}, {-1.562549, 0.675293}, {0.282446, 0.191236}, {-0.251916, 0.509349}, {-1.270286, -1.114868}, {-0.429550, -0.631172}, {0.636991, 1.337931}, {-0.239257, -0.528962}, {0.203516, 0.107619}, {-0.158954, 0.175905}, {0.017560, -0.973022}, {1.063318, -0.351026}, {-0.500848, 0.195306}, {-0.407674, -0.547799}, {0.311455, -0.233779}, {0.950908, 0.750602}, {0.087365, -0.326519}, {-0.921551, -0.059790}, {-0.237386, 0.904391}, {0.579191, -1.093121}, {1.114219, 0.472145}, {1.464486, -0.047726}, {0.230240, -0.507439}, {0.214072, 0.384204}, {0.227012, 1.628634}, {0.862830, -0.777709}, {0.499309, 0.503287}, {0.194024, -0.094408}, {-0.333249, -1.050169}, {-0.510589, -1.637118}, {-0.885624, -0.982164}, {1.742562, -1.274337}, {0.089119, -1.079374}, {-0.446537, -0.098650}, {0.360210, -0.124113}, {-0.658511, 0.326397}, {-0.544164, 0.579137}, {-0.251213, 0.155793}, {0.335646, 0.461865}, {0.443714, -0.380484}, {-0.217890, 0.767709}, {-1.477727, -0.131848}, {-0.670288, -0.482916}, {1.276010, -0.242181}, {-0.569009, -0.344377}, {0.258112, 0.099654}, {-0.470833, -0.107608}, {0.077847, -1.011430}, {-0.095550, -1.610504}, {-0.245212, -0.779197}, {0.507037, 0.270557}, {-0.210576, -0.406151}, {0.334297, 0.471540}, {0.940615, -0.817298}, {0.807612, -0.335314}, {-0.967504, 1.005527}, {-0.419911, -0.427284}, {1.058308, 0.377315}, {-0.640751, -0.100329}, {-0.206736, -1.490178}, {-0.908508, 0.534514}, {0.236230, -0.674558}, {0.040694, 0.194800}, {0.926613, -0.976837}, {-0.400272, 0.398158}, {1.213940, -0.431001}, {-0.154429, -0.506394}, {0.263405, -0.666924}, {-0.587860, -1.305488}, {-0.626593, 0.117810}, {0.343828, 1.396967}, {0.083446, -0.263320}, {-0.486981, -0.263767}, {-0.353650, 0.590502}, {0.546912, 0.129352}, {-0.148903, -0.442021}, {0.148692, 0.307489}, {0.456169, 0.695536}, {-0.306257, 0.742800}, {0.843344, -0.137786}, {-0.403558, -0.081928}, {0.004422, 0.767584}, {0.602551, -0.925966}, {0.808077, 0.677800}, {-0.920983, 0.444859}, {0.709114, -0.150759}, {0.774244, 0.583938}, {-0.007792, -0.664973}, {0.811944, -0.309259}, {0.744698, -0.075886}, {-0.510442, -0.065905}, {-0.015831, -0.190166}, {0.713298, -0.160445}, {-0.693444, 0.164467}, {0.504515, 0.718341}, {-0.357876, 0.683165}, {-0.509067, 0.349283}, {0.027786, 0.967045}, {0.001332, -0.162389}, {-0.917110, 0.767740}, {0.095917, -0.158809}, {-0.542706, 0.715325}, {0.730792, 0.659037}, {-0.010585, -0.228058}, {0.500959, -0.152128}, {0.079144, 0.005812}, {-1.190054, -0.493119}, {0.184814, 1.759480}, {0.491137, -0.172917}, {-1.489489, -0.538351}, {0.038032, 0.828474}, {-0.790134, 0.518021}, {1.008854, 0.645478}, {0.307948, 0.009483}, {-0.329913, 0.936288}, {0.018155, -0.235603}, {-0.321219, -1.203784}, {0.428175, -0.218314}, {-0.362877, -0.370190}, {0.444549, -0.342885}, {-0.049808, 0.501963}, {0.674179, -0.185107}, {0.599912, -1.732999}, {0.088862, 0.782982}, {-0.107951, 0.180743}, {-0.122355, 1.267863}, {0.550598, -0.112575}, {-0.000421, 0.525225}, {1.443725, 0.501908}, {-0.409289, 0.574812}, {-0.039830, 0.421113}, {0.508459, -1.005977}, {-1.445393, -1.149261}, {-0.631553, -0.319625}, {-0.909902, 0.054411}, {0.339123, 2.211716}, {-1.144259, 0.907937}, {0.767662, 0.182702}, {-0.001103, -0.936672}, {0.724690, -0.821044}, {-0.127908, 0.396448}, {-1.259213, -0.942427}, {0.270614, 0.534192}, {0.302353, -0.606736}, {0.368202, 0.117501}, {-0.621508, -0.599182}, {-0.389050, 0.382474}, {0.276748, -0.206800}, {0.692974, -2.222835}, {0.281160, 0.177410}, {0.692791, 0.111511}, {0.641347, 0.456632}, {-0.024490, 0.649549}, {-0.110421, -1.172916}, {-1.093464, -0.732331}, {-0.355374, -0.282145}, {0.758283, -0.156623}, {-1.392806, -0.020595}, {0.062043, -0.332704}, {0.072246, -0.407848}, {0.764714, -0.922699}, {0.324736, 0.223764}, {0.322471, -0.791710}, {-0.310998, 0.871270}, {0.409121, 0.452691}, {-0.507904, 0.540686}, {0.247319, 0.370197}, {0.289584, 0.022769}, {0.918507, -0.797867}, {-0.002342, -0.653221}, {0.665966, 0.086050}, {-0.105914, 0.520572}, {0.661266, -0.788971}, {-0.016104, 1.032441}, {-1.079144, 0.763598}, {0.286110, -0.408518}, {-0.702570, -0.278708}, {0.418026, -1.825956}, {-0.699938, 0.339054}, {-0.549577, -0.472606}, {-0.958419, -0.399456}, {0.931910, 0.405273}, {-0.061580, -0.001784}, {-0.235095, -0.195635}, {0.396945, -0.793988}, {-0.120105, 0.741895}, {0.967101, -1.193312}, {0.408000, 0.328582}, {0.121563, 0.074206}, {0.794018, 0.365534}, {1.427377, -0.303106}, {-1.185743, -0.469011}, {-1.014410, -0.160477}, {0.891003, -0.675965}, {-0.449822, 0.835702}, {0.168080, -0.372203}, {0.231932, -0.813300}, {0.695524, 0.543724}, {-1.150522, -0.300759}, {-1.130058, -0.194783}, {-0.158590, 0.163209}, {0.318411, -1.215333}, {-0.130949, 1.027326}, {-0.022279, -0.079554}, {-0.819798, -1.296138}, {0.045197, 0.904739}, {2.069130, -0.927992}, {-0.409507, 0.500071}, {-0.320066, -1.146465}, {0.541117, 0.115373}, {-0.789460, -0.165824}, {0.540866, -0.330202}, {-0.794487, -0.094771}, {-0.857677, 0.866646}, {-1.027897, -0.906066}, {-0.990814, -0.484744}, {-1.118999, 1.518096}, {0.368560, 0.062309}, {-0.472288, -0.358193}, {0.818078, 0.355593}, {0.432227, 0.535003}, {0.881773, -0.248469}, {0.386008, -0.326813}, {0.729605, -0.034809}, {-1.973023, -0.054177}, {-0.155383, 0.156626}, {-0.654563, 0.363333}, {-0.629236, 0.253927}, {0.047558, -0.270537}, {0.876852, 1.219813}, {0.676330, 0.747201}, {1.527175, -0.031846}, {0.058820, 0.330611}, {-1.429720, -0.026237}, {0.145607, -0.314241}, {-1.057689, -0.330500}, {0.140384, -0.134579}, {-0.954319, 0.012254}, {0.454891, -1.125468}, {2.357209, -0.042871}, {-1.230701, 0.477340}, {-0.320824, -0.139064}, {-0.761107, 0.100853}, {-0.288901, -0.086378}, {-0.428826, 1.158555}, {0.547848, -1.217274}, {-0.445240, -0.070165}, {-1.133672, 0.465347}, {0.623461, 0.635773}, {1.003495, -0.575461}, {-0.028313, -1.236159}, {-0.362889, 0.221756}, {-0.439814, -0.193680}, {0.519280, 1.102878}, {0.752761, 0.423081}, {0.166261, -0.338834}, {-0.310806, -0.151127}, {-0.160761, 0.442555}, {0.654292, -0.498436}, {0.080171, -0.983075}, {0.630524, 0.050145}, {-1.094236, 0.845830}, {-0.395812, -1.350396}, {0.362922, -1.130889}, {0.657214, 0.160993}, {-1.055868, 0.691473}, {-0.077860, -0.396539}, {0.272831, 0.186593}, {-0.963077, 1.436838}, {-1.491045, 0.983782}, {-0.445406, -1.055664}, {-0.560002, 0.315656}, {-1.094953, 0.428742}, {1.355583, -0.101228}, {-0.610726, -0.903339}, {0.220781, 0.133283}, {-0.385599, -0.105530}, {1.569466, 0.694499}, {-0.949049, 0.657375}, {0.293380, -0.197649}, {-0.121347, -1.023660}, {0.142107, 1.869948}, {0.240700, 1.753354}, {0.155119, -0.787710}, {0.072108, 0.802771}, {-0.518774, -0.835932}, {0.686448, 0.413265}, {-0.075227, 0.357503}, {-0.367060, -0.293209}, {1.198188, 0.228709}, {0.086829, 0.401398}, {0.402488, -0.001439}, {1.875893, 1.073098}, {-0.997759, -1.144125}, {-0.046681, 0.959887}, {-0.059867, 0.850184}, {-0.456443, -0.686195}, {-0.245116, -0.874781}, {-0.652563, -1.042379}, {-0.538923, 0.202282}, {-0.076387, -0.432216}, {0.434154, -0.289432}, {0.791833, 1.524970}, {-1.011962, 0.122749}, {0.443728, 0.583743}, {-0.476166, -0.164564}, {0.865760, 1.395544}, {0.458453, 0.486414}, {-1.083056, -0.554460}, {-0.320430, 1.151998}, {-0.522975, 0.380352}, {-0.800879, -0.410712}, {-1.160173, -0.225969}, {-0.727965, -0.082624}, {-0.078411, 0.553021}, {0.825728, -0.312162}, {-1.384057, 0.781615}, {-0.368922, 0.233514}, {0.279253, -0.378687}, {0.403824, 0.290804}, {-0.229572, -0.601070}, {-0.626745, -0.384230}, {-1.287989, -0.222999}, {0.484008, -0.010462}, {0.301750, -0.985000}, {-0.633804, 0.825349}, {0.394338, -0.576349}, {0.468509, 0.024264}, {0.255173, -0.901778}, {0.346377, -0.280184}, {0.110180, 0.975376}, {-0.753469, -0.647554}, {0.651564, -0.547723}, {-0.144017, 0.548258}, {-0.046057, -0.679254}, {-0.688028, 0.887658}, {-0.445831, -0.479626}, {-0.456182, 0.267624}, {-0.799260, 0.204550}, {0.563612, -0.771680}, {0.352540, 0.832719}, {-0.186709, -0.571833}, {-0.293953, -0.033501}, {-0.817521, 0.420114}, {-1.095604, -0.434751}, {1.279435, -0.039357}, {-0.247834, 0.165422}, {0.921388, 0.559970}, {-0.060142, 0.715675}, {0.740212, 1.014127}, {-0.452908, 0.311206}, {-0.067195, -0.201576}, {-1.385389, -0.762611}, {-1.021316, -1.118405}, {1.760285, 0.265590}, {-0.914306, 0.241406}, {-1.244930, -0.148217}, {-0.866724, 0.107860}, {0.289939, -1.543434}, {0.245372, 0.941026}, {0.353275, -0.177928}, {-0.031020, 1.110706}, {0.377406, -0.075570}, {-0.164487, 1.047496}, {-0.499391, -0.473578}, {0.300038, -0.640920}, {-0.628968, 0.062134}, {0.489684, -0.638970}, {-0.015019, 0.460942}, {-0.638345, -1.058916}, {-0.916723, 0.886223}, {-0.333517, 0.053708}, {0.736499, -0.159192}, {-0.594457, 0.367349}, {-1.222093, -0.085438}, {0.251137, -0.073996}, {0.161582, 0.194835}, {-0.380923, 0.667572}, {-0.679757, -0.361005}, {-0.028839, 0.205199}, {1.091436, -1.342332}, {-0.221619, -0.241515}, {-1.053060, 0.026055}, {0.644250, -1.217245}, {-1.450051, 0.901819}, {-0.920654, -0.715461}, {-0.130068, 1.003309}, {1.031255, 0.523672}, {-0.136103, -1.381621}, {-0.011925, -0.254506}, {-0.960022, 1.478489}, {0.103113, -1.121767}, {-0.272495, 0.511347}, {0.286424, 0.059268}, {1.022935, 0.594292}, {0.591589, 0.954365}, {0.350593, -0.458349}, {-0.050092, 0.359806}, {-1.176490, 0.825566}, {-0.680308, -1.571630}, {0.664836, -1.675775}, {0.341383, -0.000495}, {-0.036233, 0.927286}, {-1.339825, -0.242439}, {-0.295042, -1.175472}, {0.327445, -0.305612}, {-1.334769, 0.363978}, {-0.428302, -1.062567}, {0.329631, 0.597784}, {0.869728, -1.290804}, {0.836562, 0.583755}, {-0.647207, -0.128658}, {-0.438580, -0.636896}, {-0.104333, 1.364442}, {0.134730, -0.418112}, {-0.297180, -0.005213}, {-0.277926, -0.075135}, {-0.356162, -1.540321}, {-0.315842, -0.300644}, {-1.054645, 0.153170}, {-0.247471, 0.149554}, {1.167076, -0.050294}, {-1.150539, -0.133037}, {1.375072, -0.851715}, {0.074937, -0.949878}, {-0.757522, -0.348698}, {-0.904564, 0.281156}, {-0.601026, -0.749410}, {-0.559856, 0.573678}, {-1.146828, 0.569818}, {0.867965, 0.745430}, {-1.303702, -0.904121}, {0.878923, -0.963699}, {-0.201701, -0.181087}, {0.623439, -1.377927}, {-0.196558, -0.155427}, {0.545429, 0.059872}, {-0.546805, -0.394397}, {-0.673582, 0.666513}, {-0.904560, 0.345434}, {-0.404512, 0.602264}, {0.037119, 0.766632}, {0.114462, 0.094188}, {0.152701, 0.227803}, {0.192302, 0.350055}, {-0.806506, 0.365440}, {1.434434, 0.090690}, {-0.927956, 0.028970}, {-0.935372, -0.873602}, {-0.008948, -0.719395}, {0.984091, -0.139250}, {-0.659274, 0.742974}, {-0.389700, 0.424576}, {-0.417964, -0.791927}, {-0.496517, -0.670771}, {-0.839619, -0.452674}, {0.353229, -0.699395}, {0.160866, 0.370645}, {-1.017395, 1.246349}, {-0.215995, -0.034148}, {-0.917350, 0.216393}, {0.676833, -1.047976}, {0.260097, 0.124759}, {0.217774, -0.111813}, {0.676580, -0.052744}, {0.283784, 0.299891}, {-0.063002, -0.428329}, {0.105711, -0.622631}, {-0.355259, -0.471869}, {0.266862, 0.081740}, {-1.059721, 0.037092}, {-0.335785, -0.856030}, {0.165769, 0.484277}, {-0.709411, -0.235252}, {0.027820, 0.592038}, {0.069184, 0.501440}, {1.395272, 2.336471}, {0.930130, 0.779630}, {0.985494, 0.017321}, {0.462865, -0.679985}, {-0.562682, -0.638530}, {-0.220520, -1.015673}, {0.447075, 0.614206}, {-0.113999, 0.348454}, {-0.330527, -1.009147}, {0.389321, -0.059019}, {0.160636, 1.179804}, {0.951858, 0.075998}, {0.220489, 0.169580}, {1.011409, -1.264994}, {0.431117, -0.022166}, {1.354951, 0.693625}, {0.365787, 0.922387}, {-0.335963, 0.354223}, {-0.231851, 1.246409}, {0.039846, -0.434578}, {-0.640260, -0.246655}, {1.010049, -0.948681}, {0.420819, 0.066446}, {-0.792475, -0.850887}, {-0.136391, -0.217795}, {-0.306861, -1.044193}, {0.599871, 0.242422}, {0.837296, -0.704235}, {-1.036397, 0.218225}, {-0.362114, -0.270397}, {-0.815529, -0.643457}, {-0.346423, 0.137188}, {-0.533657, 0.614111}, {0.894783, 0.792716}, {0.996665, 0.135734}, {-1.810934, -0.175269}, {0.231803, 0.610888}, {-0.033074, -0.878133}, {1.029652, -0.537181}, {0.969218, -0.136601}, {0.637612, 0.569671}, {-0.856078, 0.008827}, {-0.884361, 0.905464}, {0.266886, 0.602131}, {0.724282, 0.927329}, {0.656946, 1.176936}, {0.385285, 0.453920}, {0.428491, 1.218457}, {-0.534283, -0.476385}, {1.265943, -0.071326}, {1.205410, 0.119519}, {0.729693, 0.805513}, {0.792140, 0.259950}, {0.032696, 0.915109}, {0.577120, -0.330747}, {0.393790, -0.488283}, {-0.285168, -0.266736}, {-1.092401, 0.351137}, {-0.410238, -0.455906}, {-0.112126, -1.848342}, {-0.694043, 0.586241}, {-0.282187, -0.084074}, {0.208143, -0.690431}, {-0.294220, -0.077478}, {0.114810, -0.640660}, {0.317942, 0.617271}, {-1.111586, 0.978228}, {0.522150, 1.274807}, {-0.714204, 0.099528}, {-0.270756, -0.875450}, {0.562005, -0.039459}, {0.705905, 0.860567}, {0.762285, 1.074943}, {-0.776165, -0.025768}, {-0.459283, -0.636944}, {0.185427, -0.185363}, {0.204738, 0.186381}, {0.973185, 0.077738}, {-0.292046, -0.508409}, {0.513353, -0.271946}, {0.003043, 0.871596}, {0.688854, 0.660598}, {0.210751, 0.387266}, {-0.279586, -1.103817}, {-0.688930, 0.757404}, {0.565899, -0.300622}, {0.174615, 0.399735}, {0.138945, 0.695770}, {0.223658, 0.384469}, {-1.073520, -0.360915}, {-0.489023, -0.405400}, {-0.605479, -1.167890}, {-0.411600, 0.781236}, {-1.073459, 1.248510}, {0.810854, -0.254195}, {1.234502, -0.806495}, {0.260701, 1.174122}, {-0.372537, 1.946493}, {0.314475, 0.895673}, {-1.009274, 0.473788}, {-0.182152, -0.423023}, {0.252709, 2.433176}, {0.355098, 0.295953}, {-0.547349, 0.145758}, {-0.602792, 0.126766}, {-0.736203, -0.064009}, {0.927410, -0.913014}, {0.685445, 0.595637}, {-1.650825, -0.447151}, {0.274037, 0.349263}, {0.465722, 0.789074}, {-0.162240, -0.368575}, {-0.699205, -0.695247}, {-1.299655, -0.834587}, {-0.112135, 0.439572}, {-0.554151, 0.008035}, {0.843647, -0.401783}, {-0.043751, -0.334123}, {1.091176, 0.919460}, {-0.122626, -0.120011}, {0.282004, 0.565924}, {1.054618, 0.582818}, {-0.770044, 0.182383}, {-0.377127, -0.662357}, {0.699934, -0.416461}, {0.725721, -2.274378}, {-0.285218, -0.376295}, {-0.046947, 0.662061}, {-0.150529, -0.552474}, {0.366969, -0.279145}, {-0.522761, 0.138649}, {0.359948, -1.543065}, {-1.101930, -0.354878}, {0.338112, -0.700804}, {-0.408526, 0.129634}, {0.649985, -0.651205}, {0.418800, -0.999764}, {0.357306, -1.544311}, {-0.381705, -0.067610}, {-0.161721, 0.259118}, {-0.606741, 0.789184}, {0.281002, 0.526998}, {0.011339, -0.794455}, {-1.830912, -0.398614}, {-0.550333, 0.484507}, {0.380872, 0.240877}, {-0.333808, 0.561707}, {-0.306073, -0.400679}, {0.455130, 0.236129}, {-1.028073, -0.645612}, {-0.594235, -0.259487}, {-0.990751, 0.305760}, {0.006477, -1.019058}, {0.269924, -0.321009}, {-0.232176, -0.961120}, {-0.595080, -0.028841}, {1.278412, 0.318883}, {0.447321, 1.388019}, {0.532051, 0.673116}, {-1.563452, -0.046970}, {-0.449587, 0.019068}, {0.606453, -0.602681}, {1.166692, -0.056815}, {-0.500489, 0.600240}, {-0.500505, -0.287763}, {0.713353, -0.974392}, {0.627625, -0.903950}, {0.360888, 0.126583}, {-0.455974, -0.380084}, {-0.104278, -0.465263}, {0.651519, 0.420961}, {0.788706, 0.245607}, {0.070684, -0.600027}, {0.647984, -0.619099}, {0.649698, -1.690212}, {0.318449, 0.028318}, {-1.471110, 1.370645}, {1.207134, -0.322368}, {-0.685125, 0.769329}, {1.287764, 0.797221}, {-0.996293, 1.087134}, {0.442161, -0.195315}, {0.121135, 0.058126}, {1.045922, 0.679832}, {0.873562, 0.306245}, {-0.946556, -1.014899}, {-1.098702, -0.429317}, {-0.259191, 0.604008}, {-0.446836, -0.599038}, {0.079361, -0.237178}, {-0.530503, 0.677970}, {-0.601736, 0.605187}, {-0.160833, 0.081568}, {-0.692943, -1.922262}, {-1.351586, -0.764923}, {-0.910394, 1.516147}, {-0.447204, 0.696053}, {-1.603351, 0.949397}, {0.853493, -0.313292}, {-0.782020, 0.417463}, {-0.229522, 0.508701}, {0.760533, -0.023716}, {0.227146, 0.243735}, {-0.842789, 0.148573}, {0.517921, -0.314691}, {0.692720, 0.314784}, {0.280511, 0.102037}, {0.665274, -0.165350}, {0.082569, 0.733769}, {0.296156, 1.171633}, {1.047696, 0.574972}, {1.019455, 0.327643}, {0.590864, -0.069291}, {0.058153, -0.552653}, {0.532137, -0.655718}, {0.030514, 0.631288}, {0.014617, 0.384621}, {1.061152, 0.155026}, {-1.531251, 0.473269}, {0.989563, 0.018146}, {-0.456740, 0.513566}, {0.652150, 0.217298}, {0.305406, -0.295892}, {-2.437038, -0.899029}, {0.129350, 0.230154}, {-0.072882, -0.255708}, {1.735334, -0.122027}, {0.357863, -0.822077}, {-0.260330, -1.094809}, {-0.618916, 0.441565}, {-0.692015, 0.582413}, {-0.962700, -0.265797}, {-0.354149, 0.603085}, {-0.086914, -0.518697}, {-0.573745, -0.565417}, {0.606341, 0.808186}, {-0.799331, 0.580242}, {-0.096986, 0.161126}, {0.633315, 0.549819}, {-0.144446, 0.177149}, {0.781768, 0.531140}, {0.338951, -0.899343}, {0.498622, -0.161978}, {-1.030481, 0.406074}, {-0.853416, 0.247330}, {-0.021314, 0.430044}, {-0.792349, -0.084728}, {0.661328, 1.015329}, {-0.127205, 0.562281}, {0.597676, 0.621570}, {0.134817, 0.231554}, {-0.159303, -0.083000}, {1.241670, -0.215870}, {0.511646, -0.487637}, {0.396153, 0.003545}, {-0.879940, -0.429533}, {-0.720669, 0.339226}, {-0.316744, 0.113981}, {-0.177206, 1.125024}, {-1.768052, -1.277820}, {0.241700, -0.037855}, {-0.839180, 0.779339}, {-0.368304, -0.224287}, {-0.788630, 0.576087}, {0.842764, -0.512279}, {-0.162576, 0.392872}, {-0.704226, 0.243854}, {0.131859, -0.414154}, {-0.819482, -1.100527}, {-0.470748, 0.467712}, {-0.316207, 0.030052}, {-0.235583, -0.156785}, {-0.557592, -0.375994}, {-0.784024, 0.716792}, {-0.032535, 0.712314}, {-0.122718, 0.060842}, {0.256587, -0.063350}, {1.593900, -0.262349}, {-0.241222, 1.230849}, {0.595739, 0.423673}, {0.891444, 0.670761}, {0.005808, 0.459865}, {0.340771, -0.696366}, {-0.238902, 0.415223}, {-0.572688, -0.354505}, {-0.059561, 0.494342}, {0.693758, -0.277854}, {-0.037608, -0.300489}, {0.644744, 1.106841}, {0.232660, 0.485564}, {2.011315, 0.810211}, {1.047770, -0.099242}, {1.206122, 0.597776}, {-1.206184, 0.417061}, {-0.522987, 0.244164}, {-0.036536, 0.528486}, {-0.624421, -0.312582}, {0.898749, 0.177874}, {1.192713, -0.990058}, {0.498853, -0.556840}, {0.589997, -1.001501}, {0.623528, -0.219887}, {0.082308, 0.170954}, {-0.289952, 0.937628}, {-0.907912, -0.664638}, {0.010034, -0.573764}, {0.911873, 0.898607}, {0.204328, 0.208605}, {0.886008, 0.671941}, {-0.238965, -0.470697}, {-0.047580, -1.367534}, {0.445139, 0.183575}, {-0.257686, 1.029901}, {0.650779, 0.298196}, {-1.048885, 0.864492}, {0.018705, 1.086719}, {0.353729, -0.758869}, {0.135370, -0.483281}, {-1.076019, 0.680627}, {1.100044, 0.598223}, {-1.294965, 1.147402}, {-0.106790, 0.436389}, {-0.743914, 1.121257}, {-0.871260, 1.178553}, {0.204845, -0.486308}, {0.361820, -0.974340}, {-0.206131, 0.818694}, {0.788987, 0.506632}, {0.344848, -1.206124}, {1.204349, -0.052713}, {0.485916, -0.425330}, {-0.356002, 1.018318}, {-0.627702, 0.255646}, {-1.301431, 0.413334}, {0.247930, -0.302713}, {-1.193767, 0.508636}, {0.802304, -0.014054}, {0.225364, 0.597259}, {1.130788, 0.014869}, {-0.375125, -0.713056}, {-0.887297, -1.193802}, {0.911819, 0.357139}, {0.102299, 1.114198}, {0.346137, 0.583719}, {-0.295741, -0.163232}, {0.306565, 0.062372}, {-0.387799, 0.117200}, {-0.078818, 0.039897}, {-0.951657, -0.147061}, {0.531560, -0.532658}, {-0.922460, 0.370301}, {-0.800399, 0.384196}, {0.207158, 1.049643}, {-0.855953, 0.709615}, {0.833019, 0.272167}, {0.272961, 0.796026}, {0.862792, 0.320292}, {-2.027771, -0.518041}, {0.382846, -0.137945}, {-0.116166, -0.315429}, {-0.168185, -0.144519}, {0.531779, 0.133622}, {-0.516350, -0.152330}, {-0.127356, -1.375547}, {-0.105342, 0.100885}, {0.525022, -0.939381}, {-0.066998, 0.440557}, {-0.397364, 0.443860}, {0.503200, 0.746156}, {-0.431620, 0.075595}, {-0.841891, 0.743002}, {1.371081, -0.365098}, {-0.010784, -0.465652}, {0.020112, -0.041097}, {0.826739, 0.182882}, {-0.613873, 0.704830}, {-0.568370, 0.143343}, {0.387460, -0.545298}, {0.021157, -0.747607}, {1.302628, 0.905500}, {0.261942, -0.033071}, {0.376649, 0.470807}, {-0.612337, -0.531302}, {0.841322, 0.076988}, {-0.153153, 0.320945}, {-0.874257, -0.702040}, {0.165278, -1.657980}, {-0.147901, -1.012033}, {-1.277508, 0.406026}, {0.962158, -0.812888}, {0.570132, -0.249752}, {0.178017, 0.240519}, {0.221700, -1.244702}, {-1.203450, 0.112039}, {0.203837, -0.704907}, {0.134167, -0.222161}, {-0.462939, -1.592425}, {-0.032346, 0.235999}, {0.386704, -0.786325}, {-0.693315, 0.928200}, {-2.135864, 0.434740}, {1.006662, 1.715587}, {-0.142810, -0.802204}, {0.458850, 0.565148}, {-0.338997, 1.517529}, {-0.803918, 0.696678}, {-0.048029, 0.081896}, {0.172872, -1.381249}, {-0.463157, 0.151494}, {0.014982, -0.330029}, {0.131682, 0.900381}, {1.245995, -0.694195}, {0.723281, 0.823227}, {-1.268782, 0.935669}, {-0.323588, 0.329887}, {-0.826465, 0.789808}, {0.969452, 0.147947}, {-0.086800, -0.739140}, {0.330504, -0.580053}, {0.613212, -0.291821}, {1.508769, 0.762460}, {0.427432, -0.078387}, {0.241827, -0.720148}, {0.103200, 0.692154}, {0.237121, -0.186097}, {0.383141, 0.836269}, {-1.686991, -0.116805}, {0.357785, 0.936704}, {0.009202, -0.259852}, {-0.364276, 0.361380}, {-0.452860, 1.136152}, {-0.503536, 0.666926}, {1.115614, 0.371158}, {-0.140742, 0.824371}, {-0.082390, -0.656057}, {-1.230565, 0.359913}, {0.005553, -0.198844}, {1.238036, -0.548324}, {-0.707677, -0.575827}, {0.561192, -0.372388}, {0.495972, 1.965641}, {0.693577, -0.278012}, {-0.501385, 0.209282}, {1.174469, -1.508376}, {0.645479, -1.112553}, {0.216551, 1.222801}, {0.317056, -0.152965}, {0.192083, 0.034963}, {-0.110488, -0.462419}, {-0.666300, -0.015961}, {-1.752495, 0.399985}, {-0.469240, 0.924181}, {-0.274931, 0.641528}, {-0.312214, -0.016273}, {-0.517574, -0.530389}, {0.833532, 0.046255}, {0.684154, -0.745428}, {-0.955607, 0.071248}, {-0.251567, 0.985285}, {-0.121152, -0.148834}, {-0.009011, 0.787854}, {-0.649552, 0.048180}, {-0.425329, 0.878791}, {0.393766, 0.793184}, {0.526353, -1.044814}, {-0.425715, 0.097562}, {0.345638, -0.549481}, {0.697957, -0.674357}, {0.905744, 0.301798}, {0.974970, 0.602490}, {-0.901499, -0.882178}, {-0.019264, -0.630321}, {-0.421427, 0.049030}, {-0.217801, -1.297212}, {0.182897, -0.126145}, {0.128832, -1.435972}, {-0.107732, -0.836753}, {-0.777310, 0.461033}, {0.206962, -0.196436}, {1.346730, -0.307975}, {0.401943, 0.332010}, {0.044175, 0.580896}, {0.186951, 0.580326}, {0.198179, 0.439384}, {-0.265917, 0.422116}, {0.364858, 1.826492}, {0.891892, -0.698183}, {1.583665, -1.221355}, {-0.190341, 0.962946}, {-0.174967, -0.009207}, {0.729038, -0.307764}, {0.043398, -1.428511}, {-0.680441, 0.960596}, {0.250274, 0.295808}, {0.032164, -0.418385}, {-0.197256, -0.704446}, {-1.712183, -1.163529}, {-0.268695, -0.200849}, {2.306987, 2.318621}, {0.060264, 0.224934}, {0.578235, 0.321018}, {0.028329, -0.398577}, {-0.468995, 0.372626}, {-0.486544, 1.004021}, {-1.324421, -0.240098}, {-0.516670, 0.486116}, {1.493896, -0.392662}, {0.129571, -0.570646}, {0.163091, -0.300952}, {-0.249986, 0.337349}, {-0.795421, -0.775087}, {-1.050828, -0.478171}, {-0.687893, -1.095394}, {0.446193, -0.334549}, {0.207191, 1.248893}, {1.304610, 0.004308}, {-0.531389, -0.521206}, {0.856143, -0.371803}, {-0.436616, 1.111738}, {-1.420017, -0.184266}, {1.140460, -1.630379}, {0.161864, 0.404858}, {-0.253171, -0.606452}, {-1.208974, 1.509948}, {-0.954164, -1.303938}, {-0.048128, 0.715313}, {0.256096, -0.413618}, {0.282291, 1.407356}, {0.056407, 0.582285}, {0.394826, 0.319440}, {-0.481465, -1.111214}, {0.591739, 0.508274}, {0.032651, 0.767816}, {-0.134227, 0.328188}, {0.092560, -0.469654}, {0.797004, -0.160862}, {0.769209, 1.001893}, {0.898712, 0.476407}, {-0.606030, 0.660273}, {0.035930, -0.406220}, {0.549958, 0.477784}, {0.930700, 0.739616}, {-0.352887, 0.120378}, {1.456712, -0.987803}, {-2.326077, -0.576206}, {0.005039, -0.663576}, {0.271949, 0.400765}, {1.016654, -0.532382}, {0.578166, 0.345697}, {1.335427, -0.691842}, {0.346829, -1.486777}, {-1.153416, -1.026001}, {0.223860, 0.210608}, {-0.190999, -0.519098}, {-0.198968, 0.263295}, {0.651483, 0.398883}, {-0.549925, -0.275894}, {-1.229674, -0.017529}, {-1.383489, 0.757820}, {-0.253172, 0.217579}, {-0.816223, -0.232510}, {0.104862, 0.528907}, {0.079655, 0.495187}, {-1.060489, 0.302825}, {-0.137642, 0.212762}, {0.674357, 0.008222}, {-0.048395, 0.926425}, {0.412030, -0.840911}, {0.237129, 0.647045}, {0.339638, -0.335510}, {0.284322, 1.034499}, {-1.397022, -0.292628}, {-0.146085, 0.519480}, {-0.041487, -0.555443}, {0.577501, -0.304147}, {0.311928, -0.446547}, {0.635509, -0.519239}, {-1.033277, -1.288549}, {0.731980, 0.033399}, {-1.854763, -0.310873}, {-0.244777, 0.164482}, {0.177305, -1.028995}, {-0.848186, -1.102416}, {0.208618, 0.238623}, {0.141655, -0.253353}, {0.171815, 0.430131}, {-0.300252, 0.385949}, {-0.002417, 0.000851}, {0.140724, 0.631155}, {-0.361690, -0.341663}, {0.452532, 1.566797}, {-0.983234, -0.383707}, {-0.919083, -0.153251}, {-0.570362, -0.004002}, {0.012526, 0.451240}, {1.078805, 0.115248}, {-0.303834, -0.334887}, {0.111197, -0.445325}, {0.190372, 0.714853}, {0.826630, -0.758796}, {-0.855694, -0.601218}, {-0.240251, 0.838381}, {0.169116, 0.269469}, {-0.758837, -0.535851}, {0.833886, 0.712264}, {-1.228975, -1.041728}, {-0.454220, 1.116119}, {1.266360, 0.991548}, {0.399368, 0.572129}, {0.284363, 0.183403}, {0.852430, -0.069496}, {-0.634331, 0.143028}, {0.704158, -0.787308}, {-0.348563, -0.322614}, {-0.926186, 0.376325}, {0.743159, 0.167845}, {2.017916, 1.018183}, {0.808439, -0.898639}, {-0.362709, -0.359190}, {-0.263045, -1.681332}, {-0.155017, -0.596109}, {-0.058238, -0.339211}, {-1.052586, -0.827454}, {0.083530, -0.579545}, {0.798530, 0.075240}, {-0.671206, -0.110130}, {-0.032062, -0.960990}, {0.473355, 0.406486}, {0.724043, 0.644396}, {-0.324565, 0.679171}, {-0.260678, 0.183511}, {-0.340520, -0.690654}, {-0.490994, -1.070487}, {-0.102180, -0.653080}, {1.588020, 1.305983}, {-0.284747, 0.210628}, {-0.084555, 0.093298}, {-0.200014, 0.790467}, {-0.717793, 0.363149}, {0.131695, -0.446003}, {0.914407, 0.814170}, {-0.202136, -0.003753}, {1.277709, 0.898150}, {0.656615, -0.393242}, {-0.156783, 0.685943}, {-0.206718, 0.503998}, {0.201327, 0.404118}, {0.042250, -0.107335}, {-0.870850, 0.210164}, {0.381354, 0.642557}, {-0.595277, 0.854957}, {0.322635, 0.139045}, {1.736598, 0.188796}, {0.862338, -0.908735}, {0.952138, -1.054378}, {0.771591, 0.755734}, {0.080442, -0.425273}, {0.711784, 0.796568}, {0.221518, 0.711452}, {-0.754410, 0.214646}, {0.297972, -0.998691}, {-0.023798, -0.667344}, {-0.064961, -0.853014}, {0.082753, 0.438751}, {-0.829817, -0.535958}, {0.179596, 0.170377}, {-0.232841, 0.874216}, {1.184970, 0.506020}, {0.638693, -1.085547}, {0.618905, 0.086848}, {0.091035, -1.093523}, {1.586531, -0.145763}, {0.781375, -0.734368}, {-0.439204, -0.368124}, {0.884153, -0.881938}, {0.443501, 0.046392}, {-0.000463, -2.010197}, {-1.341146, 0.413517}, {-0.115972, -0.617283}, {0.576521, -0.591029}, {0.262853, 0.282668}, {0.454027, -0.299344}, {0.561599, -1.411193}, {0.847940, -0.386760}, {0.162330, -1.607905}, {0.019188, 0.449590}, {0.667390, 0.097850}, {1.070732, -0.511950}, {0.837035, 0.531196}, {0.366102, -0.046720}, {-0.715692, 0.543561}, {-0.021125, -0.195383}, {0.548797, -1.182353}, {1.307617, -0.209852}, {0.563610, 0.627996}, {0.085233, 0.093108}, {-0.445645, 1.093604}, {-0.920394, 1.114292}, {-0.394214, 0.442132}, {-0.175037, 0.756531}, {-1.486353, 0.249107}, {0.036325, -1.007293}, {-0.348203, 0.752406}, {-0.502838, 0.733700}, {-0.386542, -0.143784}, {-0.289604, 1.540041}, {-0.112224, 0.139364}, {-0.060213, -0.734811}, {0.401407, 1.469775}, {0.455272, 0.162539}, {-0.151403, 0.737257}, {0.767557, -0.397638}, {-0.392108, -0.373642}, {0.602157, -0.607477}, {-0.745662, -0.034958}, {-1.102743, 0.087956}, {-1.559189, 0.464934}, {-1.466796, 0.183389}, {-1.075429, -0.243765}, {-0.902469, -0.918449}, {0.135849, 0.153793}, {-0.867781, -0.363082}, {1.109122, 0.450055}, {-0.862578, 0.592056}, {-0.417136, 0.030326}, {1.119029, 0.172928}, {-0.460388, 1.450624}, {-0.383553, -0.286544}, {0.769042, 0.259261}, {-0.624490, 1.200131}, {-1.122671, -0.736922}, {-1.806449, 0.235413}, {-0.034734, -1.440604}, {0.183904, -0.178401}, {0.345460, -0.134209}, {-0.048553, -0.107624}, {-1.055511, -0.230159}, {-0.770478, 1.603207}, {0.225398, 1.413173}, {-0.771651, -0.881477}, {0.297900, -0.163596}, {-0.747235, 0.837724}, {1.266946, -0.261761}, {0.714842, -0.900438}, {0.566732, -0.227364}, {-0.266881, -0.036107}, {-0.791542, 0.149132}, {-1.792347, -0.319528}, {-0.653766, 0.011991}, {1.200644, 0.555262}, {0.282989, -0.753802}, {0.528717, 0.482407}, {-0.546723, -0.455929}, {0.266867, 0.694730}, {0.516831, 0.923688}, {0.182959, -1.056826}, {-1.486910, -0.208888}, {1.201567, 0.192398}, {-1.757454, -0.151676}, {1.324179, -0.469352}, {0.040209, 0.160468}, {0.654096, -0.624048}, {0.357661, 0.980737}, {0.058591, -0.693167}, {-0.122160, -1.377046}, {0.281492, 0.331693}, {-0.082028, 0.294920}, {1.769671, 0.812195}, {0.098679, 0.119134}, {-1.443098, -1.187373}, {-0.280626, -0.135435}, {0.589831, 0.260585}, {-0.540208, -0.744497}, {0.140753, 0.497638}, {-1.508149, -0.600368}, {-0.545563, 1.017052}, {0.626888, -0.915797}, {-0.053717, -0.598712}, {-0.550529, 0.572603}, {0.159770, 1.587399}, {-1.196120, 0.802992}, {-0.515035, 0.547389}, {-0.008116, 0.409647}, {-1.058518, 0.054808}, {-0.042508, -0.559489}, {0.011590, 0.322688}, {1.052709, 0.384123}, {0.425621, -0.744465}, {-1.279637, 1.410061}, {0.107505, -1.717265}, {-0.850488, -0.542529}, {-0.969962, 0.197049}, {0.045225, -1.201257}, {-0.701234, 0.348909}, {0.254005, -0.689191}, {0.696662, 0.251047}, {1.158640, -0.473769}, {-0.674666, 0.000070}, {-1.079858, -0.744986}, {-0.956900, -0.604828}, {0.336681, 0.096805}, {0.749376, 0.408288}, {-0.341699, -0.132789}, {-0.566410, -0.063452}, {-0.307095, 0.690775}, {1.362382, -0.954373}, {0.027733, 0.171340}, {-0.043149, -0.889067}, {-0.759746, -0.387685}, {-0.014074, 0.110098}, {1.941074, 1.179552}, {-0.316348, 1.024601}, {0.686783, -0.662860}, {-0.480265, -0.318199}, {-0.301052, 0.547353}, {-0.658741, 0.133439}, {0.219759, 0.560583}, {-0.128545, -0.937591}, {0.937029, 0.858481}, {0.636270, -0.195326}, {-0.333245, -0.881758}, {0.799974, 0.622142}, {-0.008765, -0.681762}, {-0.344503, -0.152322}, {-0.269002, -0.978158}, {-1.401038, 0.473890}, {-0.254753, -0.199118}, {0.501615, -0.004429}, {0.223899, 0.481336}, {-0.846760, 0.430996}, {-0.061397, -1.110077}, {-1.262684, -0.975124}, {-0.255968, 0.443139}, {0.165242, 2.157322}, {0.171348, -0.113452}, {0.784235, 0.826362}, {-0.930326, -0.142924}, {-1.016804, -1.041038}, {0.053696, 0.188937}, {-1.831388, -0.308341}, {0.956302, -0.422604}, {-0.814804, -1.598612}, {0.125995, -0.841216}, {1.222502, -0.172663}, {-0.066590, 0.294008}, {1.467924, 0.078648}, {-0.594113, 0.074105}, {0.454844, 0.418237}, {-0.355792, -1.712601}, {0.280973, 0.482542}, {-1.677893, -0.708101}, {-0.143138, -0.222046}, {0.185764, -0.182096}, {-1.591763, 0.811301}, {-0.872062, 0.528511}, {0.531152, 0.105743}, {-0.405518, -0.243221}, {-0.285285, -0.724835}, {1.211926, -0.938313}, {-0.311116, 0.708844}, {0.452738, 0.246767}, {-0.734349, -0.015975}, {0.504125, -0.297089}, {-0.550223, -0.407948}, {1.386104, -1.647487}, {-0.532341, -0.778504}, {-1.609207, -0.322142}, {0.151805, 0.083478}, {0.045700, 0.360312}, {-0.209418, 0.028573}, {-0.028010, -0.531229}, {-0.297919, -0.606391}, {-0.227399, -0.036008}, {-1.071328, 0.802874}, {1.611743, -0.469932}, {-0.639568, 1.269852}, {1.007945, 0.734555}, {0.278845, 1.802139}, {-0.074947, 1.028369}, {0.512044, -1.046021}, {0.400092, 0.083723}, {-0.560397, -0.243498}, {0.036739, 0.207770}, {0.571326, 0.324339}, {0.186415, -0.351682}, {-0.457269, 0.176103}, {0.021670, -0.065631}, {0.511796, -0.018099}, {1.735932, -1.412607}, {-0.650731, -1.358326}, {0.575977, 0.636595}, {0.654576, -0.152643}, {-0.490564, 0.772623}, {-0.524959, -0.161241}, {-0.658197, -0.312236}, {0.163393, -0.340469}, {0.656293, 0.638867}, {0.501754, -0.811553}, {0.440917, 0.449741}, {1.556753, 0.811315}, {0.841730, -0.772732}, {0.660040, -0.888669}, {-0.782535, -0.242943}, {1.033138, -1.092518}, {-0.069224, 0.487574}, {0.387082, -0.053341}, {-0.254564, -0.830744}, {-0.007638, -0.247230}, {-0.661025, 0.930161}, {0.606968, -0.680955}, {-0.137605, 0.289561}, {0.863396, 0.128169}, {-0.349560, -0.836361}, {-1.438246, -1.537779}, {-0.460247, -1.009597}, {0.728357, -0.362308}, {-0.050639, -0.243558}, {-0.679497, 0.781298}, {0.658934, 0.412632}, {0.670115, 0.267368}, {0.123810, -0.916516}, {0.868722, -1.620722}, {-0.145830, 0.480333}, {-1.145276, -0.014976}, {-0.108175, -1.215163}, {-0.449991, -0.695477}, {0.354733, 0.823464}, {-0.039724, -0.098980}, {0.013556, 0.499284}, {-1.312451, -0.054851}, {-0.830864, 0.524224}, {0.486311, -0.717254}, {0.643189, -0.177630}, {0.273871, 0.698640}, {0.853247, -0.305921}, {-1.129702, 0.190997}, {0.373702, -1.523299}, {-0.301040, 0.189571}, {-0.224603, 0.155915}, {0.831177, -0.779143}, {1.389989, -0.223985}, {-0.321807, -0.258173}, {-0.366492, -0.422011}, {-0.384236, 0.224358}, {-1.063747, -0.704562}, {-0.555400, 0.187686}, {0.271893, 0.617246}, {-0.610279, -0.700190}, {-0.551170, 0.213321}, {1.648215, 0.778172}, {-0.025453, -0.830363}, {-0.219132, -0.100106}, {-1.131840, 0.570620}, {0.351216, 0.049910}, {-0.316256, -0.207403}, {-0.050467, 1.734194}, {-0.654866, 0.299421}, {0.150861, -0.684421}, {-0.561852, 0.297147}, {-0.126410, 0.789246}, {-0.127865, -0.749320}, {0.162245, 1.241481}, {1.336352, -0.647051}, {-0.605969, 0.480636}, {-1.072146, 0.585871}, {0.768267, 0.008915}, {-0.399790, 0.263734}, {-1.004410, 0.473403}, {0.145836, 0.570952}, {0.647171, 0.532919}, {1.021832, -0.194468}, {-0.166667, 0.643500}, {-0.062712, 0.359724}, {0.260920, 1.286259}, {0.702274, -0.475356}, {-0.995690, -0.674690}, {1.214113, 0.161147}, {-0.054271, -0.030268}, {0.135363, 0.245079}, {-0.193862, -0.856533}, {-0.446497, 0.195088}, {0.909234, 0.465749}, {0.027739, -0.240682}, {0.202885, -0.391204}, {-0.915654, -1.517288}, {0.032038, 0.801794}, {-0.565640, -1.125811}, {-0.746958, 0.080219}, {1.012414, -0.176261}, {0.925715, 0.171622}, {0.504816, 0.886424}, {-0.055414, -1.707216}, {0.331249, 1.448197}, {0.325529, -0.748697}, {0.006156, -0.885744}, {0.843520, -0.760984}, {1.008421, -0.221801}, {-0.978591, 1.867998}, {0.351767, 1.119610}, {-0.152918, 1.039013}, {-0.595093, 0.442284}, {0.844670, -0.308379}, {0.716920, -0.336382}, {0.461792, -0.273735}, {0.097085, -0.336706}, {-0.119997, 0.705377}, {0.216905, -0.214695}, {-0.163907, 0.691365}, {0.046850, -0.395489}, {-0.622611, -0.633670}, {0.073035, -0.563313}, {-1.652085, -0.637483}, {0.004529, -0.510007}, {-0.756162, -0.373366}, {0.224175, 0.104698}, {0.240622, 0.087521}, {0.051187, 0.920317}, {1.667764, 0.411180}, {-0.117246, -0.234740}, {-0.082710, -0.477874}, {0.040677, -0.399180}, {-0.950192, 0.484832}, {0.746072, -0.140056}, {-1.349141, 0.607029}, {0.548435, -0.191376}, {0.190776, -1.480638}, {0.719537, 1.345205}, {1.446202, -0.580025}, {0.053474, 0.978262}, {0.786674, 0.753003}, {-0.996297, 0.640894}, {1.383403, 0.136313}, {0.608127, 0.754792}, {-0.827608, -0.016325}, {-0.924064, -0.682900}, {-1.054567, -0.001422}, {1.185203, 1.589105}, {0.496944, 0.349206}, {-0.169828, -0.384878}, {-0.285749, 0.247343}, {-0.719044, -1.465544}, {0.064705, -0.715851}, {-0.313329, 1.540674}, {-0.565377, -0.220547}, {-0.959113, -0.696998}, {-0.265068, 0.828256}, {-0.231885, -0.521362}, {0.084903, -0.990582}, {0.419140, -0.095240}, {0.278788, -0.044144}, {0.586966, 0.431494}, {1.209696, 0.763105}, {-1.666831, -0.629313}, {-0.497822, 0.832480}, {-0.142951, -0.554920}, {-0.275496, -1.050326}, {-0.478618, -0.636370}, {0.782930, 0.504903}, {-0.082104, -1.564349}, {-0.211217, 0.853166}, {1.084067, 0.782337}, {-0.055275, 0.277204}, {0.880825, -0.475584}, {-0.949252, 0.084678}, {-0.211708, 0.245726}, {1.704036, 0.424302}, {0.077734, -0.365634}, {0.216536, 0.821771}, {0.375309, -0.657953}, {-0.659413, -0.187937}, {-0.499583, -0.274513}, {1.229467, -0.033242}, {-0.267309, 0.993163}, {0.865415, 0.210650}, {-0.823692, -0.069652}, {-0.540393, -0.407260}, {-0.708647, -0.380446}, {-0.456284, -0.443381}, {-1.262311, -0.764377}, {-0.321781, 0.630733}, {-0.588639, -0.187851}, {-0.568256, 0.499750}, {0.373187, 0.006208}, {0.707336, 0.348158}, {1.672811, -0.006168}, {-0.123496, 0.243460}, {-0.436994, 0.521309}, {0.221835, 0.213596}, {-0.110805, 0.604376}, {-0.453414, -0.656775}, {-0.342502, -0.092188}, {0.282574, 1.154633}, {-0.805164, 0.800347}, {0.792364, 0.263727}, {-0.117166, -0.150103}, {-0.284043, 1.115365}, {0.454632, -1.305995}, {-0.027046, -0.148701}, {0.158758, -1.399725}, {-0.035824, 1.192414}, {-0.761856, 0.094855}, {-0.008090, 0.994581}, {-0.259027, -0.931982}, {-0.978369, -0.050289}, {0.339204, -0.785655}, {-0.301449, 0.823972}, {0.745963, 0.972562}, {1.820135, 0.926824}, {-0.182639, 0.155852}, {-0.307134, 0.062589}, {-0.356943, 1.592747}, {-0.810041, -0.170031}, {0.924231, -0.092920}, {-0.511708, -0.739995}, {0.217789, 0.214683}, {0.727853, 0.509274}, {0.540418, 0.119559}, {1.247327, 0.541364}, {0.750281, 0.697049}, {0.211089, 0.231808}, {0.542634, 0.268686}, {0.250232, 0.727131}, {-1.260513, 0.624552}, {0.606138, -0.194470}, {0.114722, 0.116973}, {-0.552551, -0.850632}, {-0.586970, -0.054372}, {0.199770, -0.540281}, {-1.122043, -0.794103}, {1.090813, 0.071042}, {-0.304107, 0.113772}, {0.555280, 0.023257}, {0.066496, -1.087529}, {0.735559, 1.299498}, {-0.523713, -0.325003}, {0.558212, -1.053250}, {-0.542305, -0.417328}, {0.228459, -0.174137}, {0.882993, 1.180572}, {-0.210242, 0.141900}, {0.530180, -0.288710}, {-0.867478, -0.490810}, {0.680940, 0.052579}, {-0.190379, -0.716328}, {2.098467, 0.446381}, {-0.802407, 0.021896}, {-0.050531, 0.152073}, {-0.548937, -0.769984}, {1.160574, 1.151177}, {-0.844446, -1.831308}, {0.469147, 0.201575}, {0.915001, 0.416576}, {0.447789, -1.554800}, {0.498533, -0.152030}, {0.333739, 0.365833}, {0.523884, 0.261510}, {0.102519, -2.132332}, {1.322340, 0.237185}, {-0.666061, 0.182718}, {-0.547886, 0.110171}, {-0.885832, -0.119981}, {-0.220295, 0.279038}, {0.672774, -0.493978}, {0.201961, 0.278770}, {-0.698567, 1.015529}, {-0.547559, 0.238427}, {-0.900760, -0.019301}, {0.850664, 0.808783}, {-0.435736, 0.345590}, {-0.166500, 0.514461}, {-0.734562, -1.054797}, {-0.480065, 0.153198}, {1.169755, 0.209574}, {1.069664, 0.606532}, {-0.708567, -0.040850}, {0.652199, -0.079326}, {-0.719968, 0.322006}, {-0.514982, 0.234570}, {-1.101919, -0.339730}, {0.150537, 0.654555}, {-0.736618, -0.262166}, {-0.856246, -0.452481}, {1.287460, -0.187745}, {-0.217413, -0.915828}, {0.609253, -0.743804}, {-1.171250, -0.922717}, {0.150368, 0.415436}, {1.201096, -0.573735}, {-0.115596, 0.661219}, {1.042194, -0.088547}, {0.005057, -0.396937}, {-1.158327, -0.358233}, {0.623459, -0.169205}, {0.388201, 0.751152}, {0.895239, 0.665853}, {0.354939, 0.105708}, {-0.587396, -1.923318}, {-0.061833, 0.531589}, {0.604179, -0.251531}, {0.494426, 0.338236}, {-0.271009, -0.331057}, {-0.256580, 0.492214}, {-0.088714, -0.383933}, {1.123027, 0.719944}, {0.375988, 0.313174}, {0.236084, 0.230468}, {0.003886, -0.712924}, {0.104498, 1.606752}, {-0.532576, 0.330591}, {-0.488381, -1.352006}, {0.161545, 1.723053}, {-0.710498, -0.276665}, {-0.986647, 0.482909}, {1.434283, 0.726346}, {0.068419, 1.131931}, {0.442032, -0.394590}, {-0.239756, 0.143242}, {1.643873, -0.058546}, {-1.003878, -0.192841}, {0.122247, -0.079203}, {-0.252594, -1.356311}, {-0.869489, -0.064070}, {-1.961857, -0.185462}, {-1.899979, 0.496400}, {-0.109843, 0.709934}, {0.827485, -0.498313}, {0.209843, 1.037273}, {-1.581375, -1.119497}, {0.290475, 1.032399}, {0.668792, 0.476572}, {-0.433339, -0.944385}, {0.323084, 0.537194}, {-0.221663, 0.003856}, {1.383254, -0.497884}, {-1.198460, -0.892147}, {-0.750552, 0.230349}, {-0.637159, 0.240327}, {1.023382, 1.174099}, {0.449877, 1.718353}, {0.110701, -1.119723}, {0.188672, -0.085627}, {-0.767622, 0.429697}, {0.022888, -0.290090}, {0.029017, -0.575055}, {0.569277, -0.179878}, {-1.100726, 0.865245}, {-0.544482, 0.275123}, {-0.336701, -0.933121}, {0.051869, 0.544727}, {0.845421, -0.138977}, {-0.855811, 0.654785}, {0.146789, -1.087976}, {-0.213152, 0.076521}, {1.014701, 0.369228}, {0.303512, -0.346069}, {0.019167, 0.409554}, {0.812617, -0.834358}, {1.338190, -0.103966}, {0.776275, 0.019837}, {-0.804914, -0.226097}, {-1.210668, -1.599920}, {-0.354872, 1.508185}, {-0.577729, -0.030264}, {1.140923, -0.684538}, {-1.087623, 0.646425}, {-1.213811, 1.245787}, {-0.747429, 0.088243}, {-1.028906, 1.421081}, {0.269063, 0.871054}, {-1.154534, 0.036896}, {0.616763, 0.386360}, {-0.112931, -0.217046}, {0.465623, -0.396933}, {0.167084, -1.587480}, {1.067098, 1.142031}, {-0.726521, 0.527343}, {0.521179, 0.754796}, {1.965600, -0.951334}, {-0.493864, 0.148753}, {-0.789453, -0.495132}, {1.154057, 0.025690}, {0.226936, 0.017755}, {-0.397219, 0.138528}, {0.825606, -0.364112}, {-0.550409, 0.454887}, {0.168085, -0.192830}, {1.037240, 0.172213}, {-0.623615, -1.192414}, {-1.394999, 0.433780}, {-0.517121, 0.276487}, {-0.717265, -1.106185}, {1.173780, 0.500190}, {1.189896, 0.347666}, {-0.367490, 0.332201}, {1.428207, 0.822697}, {0.450744, 1.052459}, {-0.703437, 0.894070}, {0.915143, 0.151831}, {-0.076742, 0.733596}, {0.524063, -0.923572}, {0.182666, -1.514815}, {-0.096585, -0.475288}, {0.933516, 0.325996}, {0.262816, -1.152226}, {-1.298289, 1.056797}, {0.290436, 0.293651}, {-0.796841, 0.007490}, {-0.001210, -0.482373}, {-0.372255, -0.003545}, {-0.951811, 0.424592}, {0.428500, -0.154131}, {-0.016110, 0.104156}, {0.714483, -0.096403}, {-0.497021, 0.177252}, {0.119749, -1.519028}, {1.655545, -1.336578}, {0.765918, -0.329551}, {1.142739, 1.110006}, {0.715838, 0.057273}, {0.978170, 0.262785}, {0.989103, 0.268928}, {-0.844677, 0.128637}, {-0.709728, -0.957801}, {1.655370, 0.576793}, {-0.701566, -0.455455}, {1.472421, 0.138446}, {-0.068813, 0.104376}, {-0.307454, 0.024655}, {-1.584193, 0.460054}, {-0.636200, 0.303211}, {-0.547006, -0.100346}, {0.033197, -0.233433}, {0.036871, -1.428877}, {-1.282191, -0.020832}, {-0.226060, 0.575992}, {0.539645, 0.580925}, {-0.515746, 0.640159}, {0.122624, 0.379262}, {-0.298237, -0.430135}, {0.582305, 0.104006}, {0.761337, 0.778517}, {-0.116138, -0.079724}, {0.056869, 0.497983}, {0.534546, -0.781835}, {1.373099, 0.424074}, {-0.326885, -0.553422}, {0.466659, 0.459637}, {0.057961, 0.638324}, {1.220616, 0.000019}, {-0.396984, 1.437168}, {0.217722, 0.458254}, {0.517229, -0.226219}, {0.266293, 0.723080}, {0.316267, -0.496743}, {0.395212, 0.100780}, {0.208948, -0.868054}, {0.494479, 0.422566}, {0.090251, 0.077638}, {-0.006175, -0.650019}, {-0.244839, -0.682264}, {-0.168110, 0.761099}, {-0.705272, 0.959809}, {0.345444, -0.191354}, {-1.338302, -0.620916}, {-0.913269, -0.357629}, {-0.326929, -0.599831}, {-0.886159, -0.329607}, {-0.352269, -0.326190}, {0.517424, -0.679915}, {-0.256276, 0.568007}, {-0.018477, 0.625619}, {-1.188829, -0.540793}, {-0.063814, 0.082350}, {-0.574465, -0.281673}, {-1.431945, -0.967747}, {-1.319540, -0.350255}, {0.385732, 0.441168}, {0.648657, -0.187545}, {-0.413140, -0.199861}, {-0.860812, 0.630549}, {-0.526107, -0.254688}, {1.561758, -0.918379}, {0.478789, -0.553762}, {0.577887, 0.031411}, {-0.123129, -1.310582}, {0.467329, -0.373385}, {-0.158891, -0.519788}, {0.413279, -0.717616}, {-0.090683, 0.008334}, {-0.201974, -0.766771}, {0.467733, -0.252969}, {1.537250, -0.785099}, {1.055945, 1.034578}, {0.855592, -1.000192}, {0.049488, 1.476671}, {0.485982, -1.096695}, {-0.417544, -0.230928}, {0.650111, -0.343016}, {-0.697971, -0.973262}, {0.665104, 0.431052}, {0.312919, 1.312641}, {0.441995, -0.145228}, {0.314576, 0.658067}, {-0.499512, -0.180834}, {0.274381, -0.633668}, {-1.253873, 0.337280}, {0.429498, -0.073320}, {-0.721886, -0.291230}, {2.130391, -0.609516}, {0.264504, -0.772070}, {0.197991, 0.156987}, {0.012200, 0.176025}, {0.511819, 0.264211}, {0.846034, -0.534889}, {-0.019510, 0.783356}, {0.369750, -0.658338}, {0.067036, -0.850373}, {-0.187688, 0.650173}, {-0.550258, 0.977643}, {0.310795, -0.493400}, {-1.002795, -0.323754}, {-0.687753, 0.520814}, {-0.273234, -0.055023}, {1.420085, -0.258885}, {-1.197577, 0.045913}, {0.069913, -0.134013}, {-0.662290, -0.003455}, {-0.451015, -0.580987}, {1.162251, -0.128787}, {-0.397880, -0.417766}, {0.970358, 0.047251}, {-0.999546, -0.615866}, {-0.667909, 0.655248}, {0.171279, -1.041255}, {0.490597, -0.745594}, {-0.163106, -0.467833}, {0.685498, -0.884569}, {0.021264, -0.159166}, {-0.284385, 0.390590}, {-0.406411, 0.147308}, {-0.887529, -0.424785}, {0.800653, 0.320601}, {-0.237328, 0.229176}, {-0.356110, -0.871456}, {-0.469616, -0.563785}, {0.540253, 0.000454}, {0.766091, -0.692660}, {1.265823, -1.121352}, {-0.519969, -0.763516}, {-0.908685, 1.223205}, {0.378901, -0.148434}, {0.734892, -0.017845}, {0.630235, 0.605463}, {0.484549, 0.798393}, {0.889189, -0.588511}, {-1.209300, -0.615938}, {0.745912, 0.216205}, {-0.361015, 0.030537}, {-0.140569, 0.491194}, {0.206099, 0.823077}, {1.382085, 0.511459}, {0.822290, 1.501179}, {0.580893, 0.246972}, {-0.058519, -0.069856}, {-0.623353, -0.877999}, {0.911648, 0.144101}, {0.264720, -1.072727}, {-0.788517, -0.665520}, {0.884159, -0.498943}, {-0.328181, -1.628856}, {-0.854272, -0.298947}, {0.369952, -0.228915}, {0.466766, -0.533842}, {-0.856672, 0.555703}, {-1.666030, 0.205364}, {-1.163374, 0.020615}, {-0.460905, 0.147512}, {-1.150163, -0.171924}, {-1.086664, 1.156968}, {0.221459, 0.371883}, {-0.140640, -0.413140}, {0.015694, -0.876451}, {0.084676, -0.170816}, {1.728853, -0.133309}, {0.505786, 0.017453}, {0.738540, -1.225824}, {-0.732059, 0.505571}, {0.586809, 0.992493}, {-0.201427, 0.147962}, {-0.669290, 0.191411}, {-0.670438, 0.813079}, {-0.396987, 0.005979}, {-0.248870, 0.602922}, {0.019785, -1.162706}, {0.258091, -0.507443}, {-0.293495, -0.206140}, {-1.416552, -0.047997}, {0.863624, -0.614726}, {0.618458, -0.667468}, {-0.068763, -0.452185}, {0.518270, 0.013776}, {0.095323, 0.282178}, {-0.501060, 1.250301}, {0.495096, -0.240239}, {0.841004, 0.186255}, {0.979204, -0.843511}, {0.159362, -0.525116}, {-1.076816, -0.329245}, {0.590261, 0.475905}, {-0.042284, 0.849452}, {-0.176301, 0.436022}, {-0.007701, 1.259334}, {-1.508466, -0.903273}, {1.741680, 0.724148}, {-0.829550, 0.878517}, {0.549818, 0.385023}, {-0.586413, 0.711769}, {-0.731277, 0.072802}, {0.732751, -0.781661}, {1.453798, 0.653282}, {-0.547525, 0.163118}, {1.321736, 0.284994}, {0.967075, 0.447090}, {0.449005, -1.871133}, {0.049354, -0.499692}, {0.623433, 1.594496}, {-0.006018, -0.366873}, {-0.476288, -0.645067}, {-0.185525, 1.921269}, {0.691321, -1.097974}, {-1.417428, 0.364298}, {0.995453, 0.433032}, {0.645331, -0.069612}, {0.587566, -0.248929}, {-0.015891, 0.435682}, {0.300868, 0.560848}, {0.593525, 0.847680}, {-1.032251, 0.705217}, {-1.236513, -0.605437}, {0.480328, 0.151749}, {-0.327914, -0.239973}, {0.645026, 1.272340}, {1.041862, -0.097846}, {-0.444069, 0.694695}, {0.748340, -0.242565}, {-0.392311, -0.564402}, {0.955277, -0.330417}, {0.766884, -1.099700}, {0.270925, -0.271814}, {0.991722, -1.258038}, {-1.300449, -0.021881}, {-0.648161, -0.316676}, {0.189458, 0.566763}, {-1.087335, 0.525761}, {-0.096931, 0.439582}, {-0.004232, -0.614384}, {-1.011860, 0.920394}, {-0.096274, -0.360917}, {0.126764, -0.317622}, {1.075920, -2.092266}, {-0.745683, 0.670968}, {-0.427878, 0.479526}, {1.421614, 1.297357}, {-0.182187, 0.907850}, {0.576038, -0.390017}, {-0.774510, 0.092694}, {1.486913, 0.472625}, {-0.985614, -0.039686}, {0.497321, 0.513824}, {-0.226054, -0.465794}, {0.263041, -0.071887}, {0.284301, -0.781556}, {0.312159, -1.389565}, {-0.473675, 1.103600}, {0.066062, -0.020374}, {0.153187, -0.821651}, {0.252598, -0.505776}, {-0.588915, -0.507526}, {0.746750, 0.865902}, {-0.198729, 0.371388}, {0.192385, -0.115625}, {-0.301964, 1.093953}, {-0.372911, 0.616029}, {-0.146635, -0.921548}, {0.449273, -0.739387}, {0.901099, 0.774089}, {0.266051, 0.377341}, {0.591555, 0.563182}, {0.636632, -0.227791}, {1.160072, 0.570171}, {0.176682, 0.068412}, {-0.005833, 0.132717}, {0.004802, -0.842799}, {1.604389, -0.379789}, {0.484633, -0.421334}, {0.185324, 0.164699}, {0.040009, 0.495247}, {-0.126941, -0.436956}, {1.077300, 1.615921}, {-0.092967, -0.177670}, {0.562370, -0.425568}, {-0.812328, -0.831640}, {0.504950, -0.415654}, {0.634659, -1.051510}, {-0.509551, -0.741446}, {0.461403, -0.823263}, {0.741515, -0.178576}, {-1.803048, 0.240838}, {0.965793, 0.671290}, {0.485702, 0.199620}, {-0.033739, 0.468502}, {0.995017, 0.457605}, {-0.891019, -1.422089}, {0.213272, 1.349124}, {0.957810, -0.529870}, {1.144436, 0.631099}, {-0.608364, -0.008161}, {-0.183913, -0.622132}, {0.259485, 1.794263}, {-1.893936, 0.887524}, {0.869948, 0.279483}, {1.330244, -0.234150}, {-0.698793, -1.869186}, {-0.023907, -0.584283}, {0.889881, -1.321943}, {0.739625, -0.348848}, {-0.445268, 0.106291}, {0.826921, 0.698815}, {-0.290005, 0.699820}, {-0.344072, -0.323324}, {-0.411819, -0.585410}, {-0.018909, -0.290762}, {0.505112, -0.327444}, {-0.118789, -0.034296}, {1.369287, 0.043394}, {-1.463384, -0.619034}, {-0.230005, 1.632769}, {-0.715552, 1.059146}, {0.500928, -0.212733}, {0.920560, -0.635359}, {-0.588473, 0.687934}, {-0.213108, -0.623500}, {-1.114112, 1.581999}, {1.450259, -0.777587}, {-0.240633, 0.524103}, {-0.437009, -0.672738}, {-0.672158, -0.442712}, {-1.001309, 0.772701}, {-0.448667, 0.061504}, {0.258287, -0.116766}, {-1.022620, 0.057617}, {-0.132288, 1.008135}, {1.073702, -1.840446}, {1.048816, -0.795525}, {0.549427, -0.386099}, {0.536366, -1.205694}, {-0.187059, 1.950097}, {0.301988, -0.179036}, {-0.553248, 1.508990}, {-1.704598, 0.083126}, {-0.872153, -0.082539}, {-0.436999, 0.247757}, {-0.535663, 0.218898}, {1.740084, -1.134760}, {1.769763, 0.915663}, {-0.562986, -0.099149}, {1.793889, -0.797788}, {-0.178126, -0.267732}, {0.631260, -1.067603}, {0.824120, 0.547277}, {0.414803, 0.795777}, {1.524148, -0.914855}, {0.122641, -0.801623}, {0.240361, -0.440083}, {0.297449, 2.260062}, {-0.047492, -0.415373}, {1.113301, -0.107794}, {-0.278272, -0.153044}, {-0.795337, 0.227249}, {-0.362846, 0.602121}, {0.954406, 1.716838}, {-0.259979, -0.099052}, {-0.032074, -0.033958}, {-1.944759, -1.116393}, {-0.489102, 0.214741}, {-0.522574, 1.262638}, {0.863974, -0.082520}, {0.484891, 1.178134}, {0.703921, 0.461285}, {-1.885850, -0.134840}, {0.185955, 0.977271}, {0.324373, 0.280497}, {-0.540469, 0.740809}, {-0.490823, 0.276430}, {1.048976, -0.306852}, {-0.872366, 0.408507}, {-0.522883, 0.166499}, {0.244488, -0.257421}, {-1.040009, -0.423785}, {-0.755068, 0.536125}, {-0.684830, 0.823324}, {0.564522, 0.356330}, {-0.595022, 0.388829}, {-0.144106, 0.215685}, {0.035723, -0.053939}, {-0.353620, -1.153940}, {1.247211, -0.730838}, {1.664593, 0.096993}, {0.991357, -0.265930}, {-1.524475, 1.193607}, {0.404257, -1.329731}, {-0.893348, -0.573884}, {-0.456101, 1.026453}, {0.114008, -0.620093}, {0.505622, 0.342661}, {0.550962, 0.586929}, {0.809653, -0.405812}, {-0.028734, -0.834741}, {-0.155816, -1.209146}, {1.153799, 1.158627}, {-0.190132, 0.358644}, {-0.802479, -0.235259}, {0.090976, -0.943619}, {0.728902, -0.942158}, {1.160826, -0.138895}, {0.377593, -0.778267}, {0.070475, 0.710161}, {-0.141220, -1.059658}, {0.833144, 0.183631}, {-0.769879, 0.085471}, {0.940921, 0.622870}, {0.717500, 0.267314}, {-0.671317, -0.402610}, {-0.190394, 0.893239}, {0.197755, 0.923891}, {1.199303, -0.372345}, {-0.196247, 0.422832}, {0.254665, -0.230619}, {1.194773, -0.045428}, {-0.165593, -1.152962}, {0.457136, -0.280145}, {-0.302551, 0.117955}, {1.065757, 0.136590}, {-0.403169, -1.378557}, {-0.555648, 0.009076}, {-0.654869, -0.527972}, {0.007930, 0.308520}, {0.267582, -0.462596}, {-1.321099, 1.596624}, {0.201720, 0.549905}, {0.573367, -0.507021}, {0.816064, 0.368670}, {-0.014020, 0.027474}, {0.437790, 0.322314}, {0.228108, -0.622273}, {-0.462938, -1.714444}, {0.645504, 0.655548}, {-0.129067, -1.174696}, {-0.363463, 0.121620}, {0.064644, -0.373728}, {0.829669, -0.093423}, {1.987522, 1.409714}, {0.402627, 0.461663}, {-0.517408, 1.461400}, {-0.194346, 0.371817}, {-0.095302, 1.127603}, {0.854504, 0.243799}, {-0.175436, 0.956797}, {0.765841, 0.740974}, {-0.311100, 0.344987}, {0.505908, -1.150500}, {0.570032, -0.062613}, {-0.145633, 0.780485}, {-0.162999, 0.361546}, {-0.290794, 1.229566}, {0.262506, -0.308712}, {-0.060761, -1.319020}, {-0.374195, 0.429511}, {-0.086799, 0.375579}, {-0.695934, 1.544833}, {-0.553200, 0.563327}, {0.270544, 0.934228}, {0.336961, 0.195811}, {0.665743, 0.096687}, {-0.076057, 1.056521}, {0.798484, -0.357557}, {0.241616, -1.011969}, {-1.077322, -0.558872}, {0.442441, -0.655746}, {0.244793, -0.618180}, {0.103232, 0.499368}, {-0.227070, 0.190847}, {0.550947, -0.745656}, {-1.079964, 0.299129}, {0.779327, -1.277451}, {-1.628750, 0.145433}, {0.240864, -1.102978}, {-1.270518, 0.131556}, {0.775651, -0.293631}, {-0.240939, -1.275808}, {0.223459, 0.026144}, {-0.742946, 0.387688}, {0.012050, -0.095382}, {-0.342335, -0.145945}, {-0.474094, -0.504738}, {-0.202108, 0.823645}, {1.541322, -0.601652}, {0.433840, -0.201410}, {0.098066, 0.014597}, {-0.773606, -0.954702}, {0.318751, -0.263447}, {0.397180, -0.536216}, {-1.235381, 0.558129}, {0.769004, -0.940717}, {-0.235040, -0.468838}, {-0.564520, -0.384393}, {-0.005423, 1.188288}, {-0.985059, 0.199438}, {-0.189449, -0.528242}, {-0.388491, -1.042069}, {0.430704, -0.535256}, {-0.591624, -0.007859}, {0.592677, -0.737538}, {-0.381401, -0.351623}, {0.491357, -0.380019}, {-0.483469, 1.474160}, {-0.125849, 0.369908}, {0.078613, -0.121651}, {-0.353110, -0.717969}, {0.872719, -0.606648}, {-0.428882, 0.846706}, {0.175737, -0.707301}, {0.420668, -0.670445}, {0.181614, -0.047297}, {0.921628, -0.508933}, {0.592896, 0.669205}, {-0.330365, -0.380564}, {0.650241, 1.309658}, {0.236892, -0.200631}, {-1.285455, -1.072231}, {0.258253, -0.458396}, {0.580260, -0.058791}, {-0.198798, 0.297518}, {-0.081461, 1.105449}, {-0.972283, 0.637500}, {-0.752549, -0.092627}, {-0.787857, -1.415530}, {1.506419, 1.017351}, {0.585529, 0.375103}, {0.637950, -0.354231}, {0.542343, -0.978832}, {-0.631439, 0.380096}, {0.387861, -0.406235}, {-0.458367, 0.221299}, {0.982058, -1.106305}, {0.250386, -0.654296}, {0.176148, -0.799581}, {-1.154337, 0.577434}, {0.743221, -0.164562}, {0.147461, 0.563461}, {0.262860, -0.187851}, {0.080463, -1.267225}, {-0.842093, 0.465417}, {-1.150684, 0.413909}, {-0.697233, -0.258542}, {1.008287, 0.072083}, {-0.788413, -0.051451}, {-0.039100, 0.376908}, {0.314799, -0.081361}, {-0.961472, -1.372276}, {0.190966, -0.194039}, {-0.415721, 0.883995}, {-0.001280, -1.035261}, {-0.578034, 0.253532}, {0.718858, 0.130658}, {0.169064, -0.650773}, {1.019305, 0.470424}, {-0.779577, -1.527926}, {-1.397568, -0.116837}, {0.151050, -0.025676}, {-0.946740, -0.996213}, {0.946883, 0.374918}, {0.120331, 0.668101}, {-0.158538, -0.647519}, {1.011966, -0.291368}, {-0.414841, 0.899555}, {-0.613882, -0.444467}, {0.133879, -1.173510}, {-0.713934, 0.659541}, {0.632421, -0.324801}, {-0.929352, -0.825345}, {-0.939329, -0.154669}, {0.135173, 0.015513}, {1.221067, 0.948110}, {-0.389186, -0.513496}, {0.296118, 1.574228}, {-0.296515, -0.024812}, {1.003795, 0.323161}, {-0.435951, 0.654561}, {-0.490652, -0.418108}, {0.752490, -0.105439}, {-0.337112, 0.345660}, {-0.567309, 1.101450}, {0.959341, -1.200654}, {0.928823, 0.018668}, {0.251045, -0.478851}, {0.947048, -1.373055}, {0.155776, -1.054964}, {-0.380913, -0.118574}, {0.042293, -0.476657}, {0.200067, -0.039548}, {-0.386089, -0.409839}, {0.799759, -0.629364}, {1.030871, -0.758805}, {0.191216, -0.009835}, {1.064252, 0.456354}, {-0.739292, 0.213518}, {-0.957471, 0.766434}, {1.289907, 1.080144}, {0.839509, -0.415417}, {-0.126717, -0.220462}, {-0.493196, 0.136442}, {-0.740415, -0.205084}, {-0.451410, -0.124071}, {0.590748, -1.389196}, {1.048353, -0.143902}, {1.382293, 0.237621}, {-0.817723, -1.004158}, {0.025907, -0.953813}, {-0.134011, 0.870525}, {-0.796710, 0.808375}, {1.063805, -0.573200}, {0.608984, 0.022332}, {0.705208, 1.520836}, {-0.449768, 0.364173}, {-0.121032, -0.081536}, {-0.222846, 1.764236}, {-2.317731, -0.242630}, {0.003012, 2.291217}, {-0.731425, 0.097707}, {0.267980, 0.021976}, {-0.052570, -0.060891}, {1.328129, 1.291555}, {-0.535779, -0.699093}, {-0.321002, 0.511984}, {-0.118378, 0.976733}, {-0.483034, -0.250304}, {-1.164027, 0.342938}, {0.152236, 0.157467}, {-0.219252, 0.092701}, {0.666655, -0.396142}, {-0.662523, -0.345241}, {0.362952, -0.167473}, {-0.619415, 0.020731}, {1.119113, 0.580225}, {-1.234932, 0.059510}, {-0.979695, 0.650857}, {0.248844, 0.475403}, {0.152068, 0.896504}, {-0.025802, -0.188693}, {-0.312432, 0.713030}, {0.318940, 1.325683}, {-1.388616, -0.069398}, {0.563331, 0.129599}, {0.556248, 0.372978}, {-0.387270, -0.410561}, {0.381157, 0.174884}, {0.205704, 0.309849}, {0.546306, 1.544967}, {-1.502442, 0.568854}, {-1.441137, -0.654132}, {0.236177, 0.806135}, {-0.458600, -0.272605}, {1.645150, -0.472139}, {1.230134, -0.639721}, {0.194120, -0.166522}, {0.117438, -0.763945}, {0.775048, -0.144419}, {0.582774, -0.338508}, {-0.451656, -0.308490}, {-0.997512, 0.221620}, {0.518933, 0.834596}, {0.072709, 0.691029}, {-0.072488, -0.926413}, {0.455952, 1.521838}, {0.452472, -1.063857}, {0.509717, 0.548683}, {0.555750, -0.567077}, {0.044489, 0.772517}, {-1.065137, 1.047399}, {-0.057517, 0.426841}, {-0.048828, -0.066677}, {-0.090397, -1.373149}, {0.299498, -1.074127}, {0.508632, 0.940645}, {-0.075787, -0.866339}, {1.162672, 0.315994}, {-0.398345, -0.537812}, {-0.364908, -0.483622}, {0.461687, 0.527551}, {-0.162621, 0.230750}, {1.072227, 1.602365}, {-0.866570, 1.022571}, {1.183777, 0.054456}, {-0.901192, -0.614876}, {0.207856, -1.230461}, {-0.218150, -0.421866}, {-0.416722, 0.161147}, {0.434887, 0.939654}, {-0.141095, -0.011220}, {-1.002557, -0.906183}, {-0.336980, 0.143558}, {1.524689, -0.734075}, {-1.673018, -0.011837}, {-0.399086, 0.379387}, {0.022946, 0.360077}, {1.334352, -0.058248}, {0.582118, 0.104689}, {-0.235530, -0.117603}, {-0.685178, 1.207036}, {-0.505037, 0.394430}, {1.041913, -0.754037}, {0.157290, -0.635867}, {0.420463, 0.059918}, {-0.672484, -0.106277}, {-0.342000, -0.887734}, {0.037279, -1.312576}, {0.196471, -0.690414}, {0.628345, 0.600837}, {1.905626, 0.213228}, {0.002845, 0.911432}, {-0.273556, -0.817731}, {-0.734045, -0.814594}, {-0.278813, 1.362944}, {-0.490799, 0.681619}, {0.823281, 0.924446}, {0.382131, 0.054887}, {0.207567, 0.197565}, {-0.198756, -2.356373}, {-0.146667, 1.116811}, {-1.225286, 0.261605}, {-1.600163, -0.215777}, {0.188098, 0.034549}, {0.059091, 0.203517}, {0.539660, -0.144263}, {0.559525, -0.197091}, {-0.995693, 0.479884}, {-0.140240, 0.304529}, {-0.933852, 1.657169}, {-0.378402, 0.686321}, {-0.133646, -0.711732}, {0.356331, 0.032003}, {0.167839, -1.094820}, {0.495340, 0.695848}, {-0.324402, 2.032407}, {0.345523, -0.708782}, {0.651872, 1.141485}, {-0.804705, 0.431775}, {0.073119, -0.202232}, {-0.389707, -0.229234}, {-0.264997, 1.293800}, {0.443424, 0.482117}, {0.331831, -1.277015}, {-1.021430, -1.437496}, {0.034502, -1.757843}, {-0.222381, -0.925680}, {0.029757, 0.759219}, {0.025235, 0.100197}, {0.204608, 0.007049}, {0.108738, -0.526643}, {0.063573, -1.456564}, {-0.344489, 0.271249}, {-0.605927, -1.137269}, {-0.505740, -0.805053}, {0.607392, 0.236317}, {-0.004607, 0.308809}, {0.148965, 0.107110}, {-0.116365, -1.014452}, {0.054350, -0.377083}, {1.753877, 0.889535}, {-1.155775, 0.390584}, {-0.077606, 0.065922}, {0.550225, 0.202540}, {1.695931, -1.527247}, {0.112023, 1.588761}, {-0.397930, -0.627045}, {-0.761887, 0.846351}, {-0.202916, 0.218434}, {0.028378, 1.479997}, {-0.484383, -0.042392}, {-0.104811, 0.833990}, {-0.860957, 0.498545}, {1.074833, -0.971359}, {0.286261, -0.574891}, {0.415268, 0.659014}, {-0.123245, -0.459360}, {0.596546, -0.406837}, {1.301351, -0.741688}, {0.925065, -0.414523}, {0.443874, -0.870857}, {0.416989, -0.113289}, {0.117815, 0.264440}, {-0.569040, -0.606823}, {-0.071240, 0.617613}, {1.082605, 0.798463}, {-0.300080, 0.104141}, {-0.190657, -0.215200}, {-0.109927, -1.077320}, {-0.865215, -0.747596}, {0.026072, 0.657730}, {-0.602460, -0.765455}, {-0.120662, -0.176552}, {-0.020959, 0.700393}, {-0.532963, 1.578641}, {0.660906, -0.761852}, {0.204630, 0.671138}, {1.378102, 1.047063}, {0.561706, 0.261408}, {-0.260495, 0.707119}, {0.122258, -1.309491}, {0.348012, -0.204710}, {0.590837, -0.752105}, {1.641608, -0.346800}, {-0.873873, 0.418680}, {-0.277803, 0.003063}, {1.257064, 0.252787}, {0.675850, 0.403955}, {-0.418536, 0.803833}, {-0.164660, 0.169753}, {0.850197, 0.896004}, {0.819463, -0.702546}, {0.422036, 0.045786}, {0.453763, -0.574596}, {-0.166787, -0.756407}, {0.523826, 0.600864}, {-0.115417, 0.177982}, {-0.055416, 0.683982}, {-0.270215, 0.340186}, {0.195431, 1.313902}, {-0.443910, -0.182965}, {-0.071393, -0.364572}, {-0.707667, 0.098065}, {0.778016, -0.604885}, {-0.229268, -0.776824}, {-0.512173, -1.134451}, {0.252034, 0.380931}, {-0.003544, 0.019841}, {-0.058631, 0.109133}, {-0.128306, -0.186545}, {-0.293227, 1.213620}, {-0.779521, 0.232263}, {0.060435, 0.186679}, {0.990281, -0.912743}, {-1.301892, 0.111320}, {-0.034738, -0.546598}, {-0.566775, -0.661059}, {-0.925700, -1.136595}, {0.568009, -0.694776}, {-0.857730, 1.198007}, {-0.037984, -0.146860}, {-0.252787, -0.038902}, {-0.568219, -0.219940}, {0.303626, 0.948180}, {-0.038566, -0.531735}, {-0.103828, -0.538015}, {0.260650, -0.359314}, {-0.327697, 0.416712}, {-1.116063, 0.090095}, {-1.293285, -0.837186}, {-0.482711, -0.182843}, {0.059427, 0.514144}, {0.566554, -0.141405}, {-1.308599, 0.222065}, {0.119560, -0.441928}, {-0.228916, -0.884073}, {0.381615, -0.358756}, {0.207154, 1.337287}, {-0.260877, -0.510744}, {-0.240457, 0.257392}, {-0.147033, -0.616898}, {0.252767, 0.555545}, {1.142911, 0.946975}, {-0.145901, -0.472828}, {0.263985, 0.594191}, {0.275152, -0.360078}, {-0.378772, 0.233403}, {0.060201, -1.295192}, {0.711630, -0.480067}, {-0.727486, -0.316626}, {-1.024395, -0.820563}, {0.229158, 0.571038}, {-0.195501, 0.125831}, {-0.134340, -0.536494}, {-0.265465, -1.168649}, {-1.253822, 0.766807}, {-0.908661, 0.099254}, {-0.303613, -0.289008}, {-0.312701, -1.039648}, {-0.560653, 0.439198}, {-0.592471, -0.580957}, {-1.482518, 0.450587}, {1.765973, -0.280969}, {-2.102702, 0.355270}, {0.543240, 1.121485}, {0.960646, 0.575538}, {-0.328846, -1.412944}, {-0.158343, 1.897285}, {1.102149, -1.023840}, {0.757352, -0.148155}, {-0.543007, 0.817050}, {0.860867, 0.780749}, {-0.209900, -0.052244}, {0.033218, 0.744034}, {0.846613, 0.704981}, {1.311109, -1.502775}, {0.749682, -0.026687}, {-0.670479, -0.906180}, {-0.449276, -0.235328}, {-1.029479, -0.800321}, {-0.552364, 0.362018}, {0.571044, -0.294024}, {0.303263, -0.977773}, {-1.872468, 0.396964}, {-0.955788, -0.245566}, {-0.953171, 0.032204}, {-0.140014, 0.562421}, {-0.238861, -1.034260}, {0.016618, -0.778735}, {0.641832, -1.328999}, {-0.555008, 0.001675}, {0.177758, 0.407400}, {0.378772, -0.737130}, {-0.947272, 0.646346}, {0.530960, 0.259863}, {-0.901216, -0.065121}, {-0.322799, -1.319203}, {1.054523, 0.101474}, {1.428788, -0.349216}, {0.349194, 1.127674}, {-0.452166, -0.174773}, {-1.118452, 0.641579}, {0.089249, -0.175187}, {0.266167, 0.234908}, {0.087406, -0.807926}, {-1.697266, 0.627200}, {-1.079827, -0.422557}, {-0.372603, 0.642134}, {0.131330, 0.888119}, {0.792349, 0.278774}, {-0.246192, 0.080661}, {-0.353288, 0.005239}, {-0.134266, -0.384476}, {-0.828652, 0.066405}, {-0.548264, -0.080022}, {-0.120933, -0.875978}, {0.903563, -0.743197}, {-0.567596, -0.824528}, {-0.206943, -0.203413}, {0.232509, 0.801755}, {0.398309, -1.779415}, {-0.186675, -0.863868}, {1.305872, 0.428744}, {-1.716046, 0.133683}, {-0.450440, 0.029653}, {-0.506766, 0.145657}, {-0.967946, -0.295591}, {0.257046, -0.199603}, {0.490026, 0.741449}, {-0.482293, 0.888983}, {0.433545, 0.021292}, {0.395731, -0.152964}, {-0.127526, 0.629495}, {0.948778, 0.420625}, {0.080788, 0.918771}, {-0.601768, -0.511523}, {0.056685, -0.188264}, {0.077067, -0.297327}, {0.362971, -0.552698}, {0.500014, -0.566048}, {0.681482, 0.264552}, {-0.610054, -0.646848}, {0.265600, 0.541288}, {0.026679, 0.942537}, {-1.762192, -0.407303}, {-0.902743, -0.036230}, {0.474591, -0.525614}, {0.067020, -0.220233}, {-0.618935, 0.644017}, {-0.247249, 0.460334}, {0.455640, -0.078102}, {0.204557, 0.186035}, {-0.502683, -0.745109}, {0.603414, 2.160750}, {0.949033, -0.309626}, {0.143544, -0.468590}, {-1.617425, -0.599765}, {-0.338967, 0.795837}, {-0.575392, 0.117471}, {1.113309, 0.741864}, {0.491207, -1.773106}, {-0.796479, -1.166586}, {1.776758, -0.487393}, {0.665706, -0.686534}, {-0.733067, 0.665936}, {-1.191914, -0.753852}, {-0.861479, -0.028041}, {0.528864, 0.362282}, {0.372907, -0.759873}, {-0.326107, -0.368006}, {1.034767, -0.488401}, {-0.020672, 0.121155}, {-0.763290, -0.252682}, {-0.581453, 0.977660}, {-0.422611, 0.734330}, {0.410968, -0.697525}, {0.256227, 0.884536}, {-0.271733, 0.028247}, {-0.553155, 0.558822}, {0.591687, 0.681808}, {-0.295964, -0.252254}, {-0.861694, 0.270864}, {-0.212098, 0.137016}, {0.563568, 0.156760}, {-0.959209, -0.885105}, {1.242799, -0.806484}, {-1.749964, 0.424195}, {-0.811421, 0.090595}, {-1.270889, 0.077082}, {-0.507043, 0.606896}, {-0.573533, 0.304032}, {-0.073649, 1.058108}, {0.042070, -0.145220}, {-0.668327, 1.142738}, {0.669062, -0.322129}, {0.021137, -0.503492}, {-0.193499, 0.358862}, {-0.508566, 0.260507}, {0.084811, -0.605995}, {1.557960, -1.120053}, {1.643320, -0.421612}, {-0.480576, -0.823660}, {0.231449, 0.151004}, {0.398016, 0.209073}, {0.045075, 0.672618}, {-0.008618, 0.247177}, {-1.053566, 0.352608}, {0.116426, 1.141890}, {0.792719, -0.667965}, {0.331232, 1.168582}, {-0.196787, 0.038326}, {-1.109405, 0.145585}, {0.925101, -0.146615}, {0.420151, -0.522343}, {-0.006697, 0.762735}, {-0.508807, -0.069119}, {0.925127, 0.708615}, {-0.110840, -0.048132}, {-0.364342, 0.472781}, {-0.885346, 1.332877}, {-0.247386, 1.012912}, {-1.386080, 0.289459}, {0.225626, -1.466751}, {-0.274328, -0.634428}, {0.221469, 0.108111}, {-0.288359, 0.596638}, {0.406563, -1.159590}, {-0.781803, 0.171775}, {-0.266993, 1.093298}, {0.188762, -0.887276}, {-1.385732, 0.271974}, {-0.535123, -0.445177}, {-0.405735, 0.672560}, {0.184163, 0.241237}, {0.218489, -0.629709}, {-0.080616, 0.521363}, {-0.263647, -1.969656}, {-0.000105, -1.140732}, {0.345163, 0.238108}, {-0.724603, -0.973090}, {0.166771, 2.574467}, {-0.442168, -0.073635}, {0.087945, 0.845359}, {0.179795, -0.061662}, {-0.317741, -0.537081}, {-0.444731, -0.240390}, {0.451603, -0.608631}, {0.311307, -1.277915}, {-1.138521, 0.364751}, {0.634037, -0.538308}, {0.336605, -0.705948}, {0.112277, 0.892130}, {-1.254259, 0.041164}, {-0.032781, 1.144167}, {-0.022324, 0.649488}, {-0.344520, -1.047174}, {0.317010, -0.433506}, {0.814095, -0.340343}, {0.022872, 0.077959}, {0.249692, 0.224696}, {1.305443, 0.613798}, {-0.581707, 0.071940}, {-0.258272, -1.904325}, {0.601451, -0.060804}, {-0.118601, 0.938334}, {0.303851, 0.393623}, {0.736692, -0.211060}, {-0.272122, -0.490145}, {0.222637, -0.021387}, {-0.311633, 0.735060}, {-0.199568, 0.759139}, {-1.013715, -0.780787}, {-1.135842, -0.735749}, {0.387608, 0.235686}, {0.083913, -0.711059}, {0.163113, -0.233968}, {0.180869, -1.193578}, {-0.541856, 0.511090}, {0.718738, -0.971796}, {0.918659, -0.884243}, {0.235544, -1.235024}, {0.685277, 0.219639}, {0.854647, -0.421738}, {-0.028494, -0.255750}, {-0.526021, -0.508404}, {-0.492737, -0.753063}, {0.462732, -0.859153}, {-0.133400, 0.676276}, {0.450487, 0.025040}, {-0.561239, 0.571686}, {-0.642541, -0.609117}, {1.075468, -0.169765}, {0.574631, -0.097372}, {0.338229, -0.024071}, {-0.525317, 0.025844}, {0.487080, 0.416213}, {-1.007587, -0.270080}, {0.343576, -1.099756}, {-0.699170, 0.043134}, {-1.044511, 0.757733}, {-0.575676, -0.749373}, {0.305846, -0.161683}, {0.811672, 0.079546}, {-0.192293, 0.436743}, {-0.693445, -0.830657}, {0.968077, 1.051416}, {-0.769386, -1.502744}, {-0.255967, -1.803842}, {-0.470924, -0.998421}, {-0.824508, -1.845973}, {0.045837, -0.401762}, {0.360613, 0.910411}, {-0.337096, -0.237348}, {-0.484460, 0.113391}, {0.305826, -0.010794}, {0.147090, 0.500318}, {0.225740, -0.205529}, {-1.264348, -0.329185}, {-1.194871, -0.957492}, {0.650858, -0.758139}, {-1.280834, 0.080681}, {0.625022, -0.858635}, {1.711320, 0.093822}, {-1.151505, 0.996810}, {1.790324, 0.687198}, {0.656644, 1.704101}, {-0.376292, -0.352113}, {-0.126730, 0.661884}, {0.252564, -0.254102}, {-0.661905, 1.131852}, {-0.368894, 0.146481}, {-0.798706, -1.083358}, {-0.454165, 1.240990}, {-0.039095, -0.119828}, {0.632847, -0.423721}, {-0.380750, -0.363220}, {-0.262391, -0.622616}, {-0.859738, 0.564480}, {-0.750698, 0.139456}, {0.947125, 0.430152}, {0.677915, 0.729907}, {-0.239181, 0.435498}, {0.466691, -0.384876}, {0.532654, -0.083163}, {0.542034, 0.653067}, {0.208817, -0.330605}, {-0.130409, 0.034659}, {-2.320815, -0.033099}, {0.871427, 0.273985}, {0.194936, 1.108967}, {-0.285382, 0.345010}, {1.195251, 1.573778}, {0.713952, 1.087552}, {-0.415100, 0.517458}, {1.196398, 0.021875}, {0.802508, 1.907587}, {0.299614, -0.173952}, {-0.608050, -0.581877}, {0.977775, 0.565290}, {-0.192386, 0.145355}, {-0.665472, 0.535100}, {-0.151025, 0.022383}, {-0.250835, 0.788190}, {0.764801, 0.467007}, {0.298350, -1.467544}, {-0.017556, -1.063610}, {1.562445, -0.529165}, {-0.520377, 0.378911}, {0.058748, 1.831556}, {-1.071124, 0.601172}, {-0.878448, -0.254107}, {-0.154485, -0.985552}, {-0.887400, 0.327273}, {-0.705357, -1.472086}, {-0.740599, -0.067128}, {0.711410, -1.034293}, {-0.333938, 0.630428}, {1.278035, 0.397289}, {0.210056, -0.257437}, {-0.585602, -0.005302}, {0.203850, 0.195065}, {-1.060016, 0.172660}, {0.771525, -0.917467}, {-0.723919, -0.412679}, {0.232786, -0.197431}, {1.194496, -0.581625}, {1.340972, 0.360705}, {0.975104, 0.097678}, {1.133589, 0.133129}, {-0.298991, 0.302132}, {-0.784508, -0.922366}, {0.322948, -0.119337}, {0.110163, -0.145440}, {1.574654, 0.287009}, {-0.189796, -0.018106}, {-0.174887, -0.498104}, {-0.080131, -0.165148}, {-0.657113, 0.318723}, {-0.433595, 0.705876}, {0.857977, -0.158599}, {-0.482497, 0.036595}, {-0.576244, -0.193566}, {0.296959, -0.488391}, {0.405842, -0.070404}, {0.590507, 0.533184}, {0.587150, 1.314828}, {-0.211139, -1.292577}, {-1.010083, -0.313106}, {-0.863307, 0.569579}, {0.997553, -0.971260}, {0.472407, 1.098185}, {-1.119245, -1.232905}, {0.618522, 1.245082}, {-0.262763, -0.278210}, {-0.105775, 0.170132}, {1.269669, -0.240590}, {0.170976, 0.601526}, {0.188523, -0.015175}, {-1.326050, 1.007456}, {-0.090769, 0.040268}, {0.418566, 0.135730}, {-0.182901, 0.036998}, {-0.333515, 0.424837}, {0.428316, 0.383354}, {-0.794054, -0.779979}, {0.263906, 0.439720}, {0.162836, 0.989119}, {-0.071999, 0.354381}, {-0.291458, -0.020139}, {0.449140, 0.931136}, {-0.694063, -0.246796}, {-0.862572, 0.091815}, {0.028864, -0.095157}, {0.724161, 0.223737}, {0.047003, 1.150192}, {-1.174734, -0.534178}, {0.591572, -0.393347}, {-0.219495, 0.747091}, {-0.136702, -0.163781}, {-1.060912, 0.069882}, {0.029668, 0.042101}, {0.131750, 0.093846}, {0.871290, 1.182361}, {1.253828, 0.378833}, {1.186058, -1.172422}, {-0.063604, 0.553535}, {1.002073, -0.209174}, {0.444720, -0.729126}, {-0.206357, 0.032391}, {-0.700775, -0.526320}, {-0.737105, 0.314376}, {0.592877, 0.135543}, {-0.663426, 0.630024}, {1.260741, 0.446146}, {-0.705061, -1.146632}, {0.428181, 0.432223}, {-0.213335, 0.151536}, {0.520582, 0.924886}, {0.577738, -0.057536}, {-0.751351, 1.533813}, {-0.156074, 0.562951}, {0.046758, -0.037720}, {-0.217340, 0.168171}, {0.241340, 0.494540}, {0.506104, -0.317633}, {-0.655820, 0.567359}, {0.480759, -1.112311}, {0.386474, -1.201118}, {-1.449230, -0.518502}, {-0.706211, 0.406803}, {-1.560129, -0.422456}, {-0.077915, -0.197029}, {-1.004173, -0.827722}, {0.500350, 1.832784}, {1.097967, -0.612166}, {-0.131651, 0.635959}, {-0.049192, 0.986648}, {0.349039, 0.570957}, {-0.171897, -0.308825}, {-1.215161, -0.958771}, {0.571949, 0.628435}, {0.729169, 0.139248}, {0.709536, 0.696363}, {0.097966, 0.586873}, {0.397300, 0.024276}, {0.236370, 0.090813}, {0.514880, 0.171434}, {0.793476, -0.258985}, {-0.515502, -0.496673}, {0.473964, 0.129542}, {-0.354065, -0.227705}, {0.656057, 0.340024}, {-0.176111, 0.646745}, {0.688527, 0.624363}, {-0.533171, -0.007906}, {-1.490044, -0.019393}, {0.062044, 0.744611}, {0.830698, -0.386727}, {-0.110515, 0.456228}, {1.417382, -0.674755}, {0.459868, 0.925687}, {-0.836631, 0.488354}, {-0.019731, -0.693838}, {1.289891, -0.627465}, {0.055161, -0.256309}, {0.468467, -0.780689}, {0.717432, -0.802497}, {-0.085141, -0.309899}, {0.930132, 0.556225}, {0.405997, -0.271818}, {-0.768176, -0.288646}, {0.100647, 0.538259}, {0.907866, 0.140152}, {-0.368110, -0.402555}, {-0.228629, -0.940188}, {-0.569401, 0.233255}, {-1.022570, 0.000617}, {-0.324842, 0.052006}, {-0.269973, 0.777187}, {-0.035408, -0.139996}, {0.473745, 0.160440}, {-1.354914, -0.289104}, {-0.475516, -0.054631}, {-0.041168, -0.128649}, {0.427951, -0.409020}, {1.363959, -0.447370}, {-0.703075, 1.016340}, {-0.075306, -0.369703}, {0.230086, -0.722273}, {1.792416, -0.645114}, {-0.093824, -0.242755}, {-1.292877, -1.080529}, {1.196220, 0.155053}, {0.173557, -0.177454}, {-0.634131, -0.976788}, {-0.379141, 0.884947}, {-0.536256, 0.697163}, {0.552100, -0.096580}, {-0.696552, 0.923878}, {0.118458, 0.110518}, {-0.582715, -0.173407}, {-0.956599, 1.799081}, {-0.843667, -0.384598}, {0.764067, -0.865968}, {1.000620, -0.160073}, {0.953401, 1.628974}, {-0.888514, -0.891334}, {-0.680686, 0.247835}, {-0.754843, 0.258330}, {-0.675973, 0.394557}, {-0.190745, 0.303396}, {-0.170964, 1.405210}, {0.926068, -0.197468}, {0.672418, 0.927374}, {0.197025, -0.069306}, {0.354251, -0.267216}, {0.290035, -0.073490}, {0.110947, 0.354887}, {0.443680, -0.098480}, {-0.294424, 0.866491}, {-0.841475, -0.422685}, {0.266968, 0.062065}, {1.515674, -0.060925}, {0.176005, 0.140636}, {0.404577, -0.509459}, {0.515552, 0.061269}, {0.853981, -0.954393}, {1.019148, -1.441008}, {0.163838, 0.376008}, {0.288430, 0.184545}, {0.067683, 1.030477}, {-0.499583, 0.343582}, {0.009995, -0.042159}, {-0.621239, 1.076062}, {-0.939004, 0.349109}, {0.798145, 0.400775}, {0.435127, 0.287123}, {0.202232, -0.459503}, {-0.115217, -0.562763}, {0.415476, -0.178029}, {1.158389, 1.432155}, {0.936251, -0.718354}, {0.848607, -0.413887}, {0.391567, -0.379341}, {-0.299960, 0.021999}, {-0.500304, -0.145804}, {0.809236, 0.749736}, {0.827454, 0.361110}, {0.433617, -1.060374}, {0.897989, 0.043762}, {-1.028161, 0.704788}, {-0.194029, -0.081497}, {0.651930, -0.779738}, {-0.210318, 0.138924}, {-0.224011, -0.719656}, {-0.690712, -0.403295}, {-0.421069, 0.703604}, {-0.492768, -0.402452}, {-0.811297, 0.602505}, {-1.785654, 0.521719}, {0.587757, -0.400209}, {0.043330, -0.684632}, {0.384072, 1.455485}, {1.259714, 0.400161}, {0.761448, 0.079450}, {-0.053741, -0.471277}, {0.412257, 0.180934}, {0.519025, -0.912317}, {1.338382, -1.089903}, {-0.120862, 1.387350}, {0.046935, 1.216046}, {0.078641, 0.418476}, {-0.826729, -0.603339}, {-1.169826, -0.905686}, {-0.319044, -0.337864}, {-0.000338, -0.036139}, {-0.070890, 0.167189}, {-0.364559, -0.483024}, {-0.845227, 0.663173}, {-0.358604, 0.991618}, {-0.544255, 0.196842}, {1.734390, 0.066961}, {0.304854, -0.438655}, {0.570055, 1.368692}, {0.680056, 0.502049}, {1.473820, -0.240434}, {0.143943, 0.150471}, {-0.601375, 1.462794}, {-0.130329, 0.130809}, {-0.816240, -0.613083}, {-0.363673, 0.906229}, {-0.137845, 0.310958}, {0.028385, 0.813332}, {0.797503, -1.224658}, {0.193431, -0.529715}, {-0.088177, -0.203006}, {-0.475714, -0.792887}, {0.226096, -0.128947}, {0.184089, -0.068373}, {0.887181, 0.224031}, {-0.216778, 0.056027}, {-1.168135, -0.932106}, {0.564475, -0.495475}, {-0.673622, 1.542024}, {-0.610914, -0.581747}, {-0.089544, -0.439327}, {0.714516, -0.660308}, {1.223961, -0.522664}, {0.661751, -0.105839}, {-0.630532, -0.064537}, {-1.161529, 1.098738}, {-0.427223, -0.021232}, {-0.026751, 0.416435}, {0.362154, -0.386305}, {0.208456, 0.633020}, {0.045405, 1.111140}, {1.425449, -1.110883}, {0.707444, 0.651275}, {-0.500077, 0.697821}, {0.203707, 0.456913}, {-0.853159, 1.120343}, {0.834138, -1.031290}, {0.617247, -0.697880}, {-0.043978, -0.182348}, {0.543946, -0.336939}, {-0.357450, -0.588382}, {0.063896, 0.467717}, {-1.005923, 0.946648}, {0.848093, 0.260463}, {-0.603198, 0.472919}, {0.824311, 1.081034}, {-1.794170, -0.412169}, {-1.188588, -0.303771}, {-0.599378, -0.512405}, {-0.764410, 0.839242}, {-1.630732, -1.206763}, {0.475393, 1.662433}, {0.287510, 0.340842}, {-0.361590, -0.457253}, {0.259458, 0.427517}, {-0.962593, -0.157040}, {-1.043433, 0.709428}, {-0.124816, 0.350705}, {-1.784117, -0.277703}, {-0.816757, 0.881473}, {1.130899, 0.072276}, {0.508338, -0.545349}, {0.248984, -1.013667}, {0.303921, -0.296289}, {0.907752, -0.325327}, {-0.706874, -0.148790}, {-1.511246, -1.230174}, {-0.034105, 1.186995}, {0.791315, -0.061800}, {-0.115356, -0.013607}, {0.614068, -0.643597}, {-1.434752, -0.837895}, {-0.262646, -0.486002}, {0.425083, -1.154407}, {-0.888865, 0.643359}, {0.354696, -0.522025}, {0.516178, -0.483834}, {-0.383349, -0.393546}, {0.627820, 1.304975}, {-1.536539, 0.297887}, {0.522986, -0.438700}, {0.570505, 0.136875}, {1.225639, 0.726921}, {0.046321, 0.004620}, {-0.978947, 0.165502}, {0.673976, 0.355861}, {-0.565507, 0.154310}, {0.184185, 0.636983}, {0.669884, 0.339459}, {-0.272178, 0.155650}, {0.946849, -0.018712}, {1.554380, -0.573908}, {-1.650752, -0.797470}, {0.149065, -0.449614}, {0.000874, 0.687892}, {-0.496167, -0.407806}, {-0.311445, -0.715590}, {-0.129442, 0.092998}, {1.038462, 1.427624}, {0.969798, -0.841165}, {-0.638606, 0.246169}, {-0.007508, -0.280498}, {0.113839, -0.195910}, {1.042036, 0.726260}, {-0.200482, 0.235256}, {-0.406369, -0.249998}, {0.286145, -1.006218}, {0.210969, 0.512718}, {-0.859586, -0.839554}, {0.139226, 0.146909}, {0.695305, -0.442922}, {-0.681479, 0.678879}, {0.573686, 0.732063}, {0.409687, -0.487551}, {-0.740833, 0.407906}, {-0.627461, -0.094149}, {0.717096, -0.324215}, {-1.040547, 0.209955}, {0.390960, 0.716126}, {0.087138, 0.229283}, {-0.453888, -0.488261}, {-0.309646, -0.346751}, {-0.129650, 0.732543}, {-0.170771, 0.525447}, {0.514311, 0.262524}, {0.791326, -1.098801}, {0.026081, -0.432545}, {0.695147, 0.619485}, {-0.160913, -0.305334}, {-0.388194, 0.428275}, {-0.857131, 0.383539}, {-0.127692, -0.568071}, {-0.153925, -1.205867}, {-0.131234, -0.794515}, {0.509942, 0.661891}, {-0.411283, -0.325822}, {-0.557037, 0.549357}, {0.276122, -0.018714}, {-0.459507, 0.586174}, {0.946074, 0.411524}, {-0.517742, -0.440520}, {0.518675, -0.707372}, {0.346846, -0.672055}, {0.552754, 1.465565}, {-0.084615, 0.414643}, {0.452343, -0.941522}, {0.346356, 0.291833}, {-0.280410, 1.026607}, {0.938494, -0.769506}, {-0.559070, -0.210613}, {-1.005965, 1.379425}, {1.003043, -1.111699}, {-0.675980, -0.769700}, {0.000281, 1.375752}, {0.304516, -1.251364}, {-0.821937, -0.484556}, {-0.859102, -1.335838}, {0.058085, -0.346139}, {0.003970, -0.523620}, {-0.142542, 0.689615}, {-0.916600, 0.902236}, {0.486899, 0.086527}, {-0.428760, 0.270439}, {0.358628, -0.635933}, {-0.564581, -0.585300}, {0.873809, 0.369030}, {-0.178501, 0.513622}, {1.498494, 0.604123}, {-0.119000, 0.391230}, {-0.893021, -0.149327}, {-1.342297, -1.126706}, {0.373536, 0.861215}, {0.256534, 1.148103}, {0.899039, -0.560694}, {0.054489, 0.862495}, {-0.293322, -0.433164}, {-0.232534, -0.152667}, {0.571215, -0.491188}, {0.200082, 1.008588}, {-0.535039, -0.070187}, {-0.374009, -0.006474}, {0.968621, -1.673820}, {-0.250826, -0.592453}, {-0.768210, -1.143156}, {0.506240, 0.456245}, {0.517084, -0.666774}, {0.212136, -0.465469}, {1.318910, -0.330234}, {0.021991, 0.039870}, {-0.393252, 0.086292}, {0.707893, -0.244737}, {0.499235, -0.784132}, {0.007350, -0.371172}, {1.522063, 0.906834}, {-0.242588, -1.852291}, {0.221807, -0.033887}, {0.323357, 0.072972}, {0.960496, 0.074214}, {0.760485, -0.415787}, {1.011444, -1.408695}, {-0.765112, 0.167737}, {0.051886, 0.271979}, {-0.082595, 0.361773}, {0.870305, 0.283143}, {0.225699, 0.608936}, {-1.312811, -0.998105}, {-0.653488, 0.900398}, {-1.438955, 0.084821}, {-0.412878, -0.723466}, {-0.272037, 0.361482}, {-0.694861, 0.082223}, {0.850862, 1.180117}, {-0.283139, 0.336570}, {-0.271481, 0.069012}, {-0.029517, -1.101000}, {0.634905, -0.821237}, {0.149412, -0.139163}, {-0.484147, 0.270160}, {-0.761418, 0.079378}, {-0.072847, 0.937568}, {-1.307853, -1.009845}, {0.297282, 0.648821}, {-0.091781, -1.985271}, {-0.606219, 0.151353}, {-0.429607, -0.025052}, {-0.332890, 1.175599}, {-1.118603, 0.141680}, {-0.097394, -0.858219}, {0.016748, 0.173787}, {0.499711, 0.334283}, {0.294804, -0.100448}, {-0.226681, 1.320937}, {0.445101, -0.020208}, {0.298761, 0.661325}, {0.366419, 0.625208}, {-0.610404, -0.402482}, {-0.196988, -1.143042}, {-0.140385, -0.419017}, {0.112807, 0.888080}, {0.266033, 0.057014}, {-0.728926, -0.934920}, {-0.140320, -0.094250}, {1.177336, -0.396966}, {0.420952, 0.653529}, {0.796815, 0.416470}, {0.811086, -0.565463}, {0.367195, 0.333449}, {-0.400751, 1.975824}, {1.216133, -0.533538}, {-0.061920, -0.453391}, {-0.711951, -0.449488}, {-0.102566, -0.455585}, {0.285088, -0.802786}, {0.808552, -0.322926}, {-0.602289, 0.632072}, {-0.661576, -1.758596}, {-0.146488, -0.548057}, {-0.206403, -0.017511}, {-0.450221, -1.498859}, {0.932314, -1.134894}, {0.656476, 0.145769}, {0.235734, 0.094820}, {-0.722074, 0.001788}, {-0.957129, 0.829923}, {-1.219129, -0.094515}, {0.433577, 0.505638}, {0.667379, -0.080276}, {-0.481288, -0.154287}, {0.832150, 0.696951}, {0.845959, 0.070575}, {0.511181, -0.543340}, {1.404294, 0.382848}, {0.652795, -0.156181}, {-0.114089, -0.125219}, {0.105672, -0.192649}, {1.581463, -0.060738}, {1.179013, 0.318857}, {-0.514448, -0.186117}, {-0.004286, 0.388816}, {0.553462, 1.141917}, {-0.108260, -0.709488}, {0.366715, 0.522898}, {1.011547, 0.255626}, {0.510127, -0.556431}, {1.387465, -1.491813}, {-0.030602, 0.643039}, {0.252861, 0.370345}, {0.158032, -0.485250}, {1.505481, -0.401738}, {-0.425678, 1.475448}, {0.558642, 0.266556}, {-0.761068, -0.757845}, {-0.236187, 0.096478}, {-0.299872, -1.335299}, {-1.133420, 0.013509}, {0.020291, 0.311569}, {0.852593, -0.665722}, {-0.523899, 0.543296}, {-0.258387, 0.397797}, {-1.620860, 0.323925}, {1.104585, -1.383714}, {0.683798, 0.260786}, {-1.928301, -0.180178}, {-1.028854, 0.442835}, {0.657349, -0.494352}, {-0.277212, 0.670959}, {-0.180849, 0.531330}, {-1.227284, -0.792597}, {0.563598, -0.076574}, {-0.437456, 0.229217}, {0.929340, 0.015725}, {0.074666, 0.424629}, {0.534245, -0.350823}, {0.389638, -0.082153}, {0.500066, -0.103981}, {0.517706, 0.482821}, {-0.748255, 1.069502}, {0.473974, -0.018833}, {0.395953, 0.000067}, {0.154909, 0.296848}, {0.200809, 0.287738}, {-0.607075, -0.544885}, {-0.267287, 0.616905}, {-0.323802, 1.280877}, {0.255228, 0.082953}, {0.888876, -0.780725}, {-1.507838, -0.628624}, {0.117847, 0.741004}, {0.951439, 2.158240}, {0.255605, -0.694650}, {0.403436, -0.019320}, {0.028617, -1.122894}, {-0.559034, -0.279798}, {-0.151086, 1.482814}, {0.401004, -1.215030}, {-0.010857, -0.722506}, {-0.779211, 0.186412}, {0.839532, 0.388371}, {-0.519503, -0.769165}, {0.886356, -0.068777}, {-0.666874, 0.232912}, {-0.769333, 0.407110}, {-0.156172, 0.626609}, {-0.845403, 0.246838}, {-0.921500, -1.513649}, {-0.659432, -0.352143}, {-0.456287, 0.822831}, {-0.264057, 0.594756}, {-0.381242, 0.749825}, {0.584222, -0.010185}, {0.717621, 0.407810}, {0.126997, 0.610555}, {0.121083, -0.601804}, {0.338280, -1.296916}, {-0.998988, 0.202698}, {0.271413, 0.241189}, {-0.660860, -0.922695}, {0.217074, 0.091244}, {-0.829182, -0.173802}, {-1.686936, 0.133783}, {0.085111, -1.036699}, {-0.835207, -0.547288}, {-1.001460, 0.163306}, {-0.009840, -0.897352}, {-0.221570, 0.248621}, {-0.104666, -0.544456}, {0.492826, 1.224533}, {-0.303816, 0.203433}, {-0.035890, -0.396120}, {-0.911609, 0.154966}, {-0.477369, -0.149520}, {0.829666, 0.383750}, {0.288714, -0.400195}, {0.825822, 1.060236}, {-0.565369, 0.570078}, {0.725772, 0.524669}, {-1.427359, 0.510741}, {0.185095, 0.075540}, {0.123475, -0.291902}, {0.273887, -0.125613}, {-0.173428, 1.043319}, {0.321986, 0.197724}, {-0.846527, -0.708152}, {0.008510, -0.342922}, {0.627415, -0.580544}, {0.845050, 1.241589}, {0.585281, 0.461177}, {0.359324, -0.420843}, {0.049152, 1.106094}, {0.581734, -0.166265}, {0.003368, 1.019929}, {1.025792, -0.545836}, {-0.566680, 0.838736}, {0.217046, -0.554830}, {0.746989, 0.330831}, {-0.477775, -1.838477}, {1.209384, 0.537204}, {0.084745, -0.402040}, {0.453664, 0.663259}, {-0.949609, 0.481791}, {-1.018870, 0.244091}, {-0.100135, -0.408291}, {0.145723, -0.390015}, {0.591639, -0.187299}, {-0.072565, 0.022234}, {-0.090558, 0.900594}, {-0.115991, -1.076001}, {-0.047715, 0.945083}, {-0.153139, 1.232195}, {0.395757, -0.137489}, {0.500312, -0.165208}, {-0.446434, -1.255448}, {0.744826, 0.719971}, {0.101905, 0.317928}, {-1.113815, 1.181345}, {-0.826383, -0.342046}, {0.698280, -0.256223}, {-0.376007, 0.253217}, {-0.351381, -0.465508}, {0.347951, 0.252016}, {1.060703, -0.456476}, {-0.487386, 1.010946}, {0.082913, 1.363434}, {0.144076, 0.505970}, {0.788440, 0.349740}, {0.359451, 0.412744}, {-0.133783, 0.371278}, {0.132375, 0.736016}, {0.675589, -0.281074}, {1.388233, 0.041104}, {-0.111974, -0.788585}, {-0.719106, 0.429423}, {0.285667, 0.906691}, {-0.412522, -0.263860}, {-0.379611, -1.850579}, {-0.882381, 0.633164}, {-0.350683, 0.326832}, {0.113319, 0.299109}, {0.030724, -0.533961}, {-0.229546, 1.599082}, {0.791774, 0.219618}, {-0.083769, -0.825250}, {-0.250508, 0.384164}, {1.622536, 0.627566}, {0.269926, 1.457477}, {0.027500, 0.077387}, {-0.040952, -0.869704}, {0.249097, 0.799744}, {-0.855749, -1.207818}, {0.031174, 0.232988}, {0.470634, -0.176486}, {-1.322606, -0.574727}, {0.618473, -1.051757}, {0.044093, -1.194452}, {-0.856825, -0.363124}, {-0.740040, 0.491909}, {1.049228, -0.383126}, {0.269759, -0.756658}, {0.411827, -0.187708}, {-0.021801, -0.730890}, {-0.338874, -0.436049}, {0.439729, -0.211741}, {-0.464913, 0.405662}, {0.813909, 1.691059}, {-0.432949, -0.328759}, {0.016182, 0.617470}, {-0.000084, -0.630506}, {1.013115, 0.113926}, {1.045430, -0.431612}, {-0.149045, -0.540305}, {-0.168907, 1.023595}, {-0.681722, -0.870885}, {0.148709, -0.519793}, {0.083637, -0.233137}, {-0.006738, -0.358652}, {-1.132096, -0.196676}, {0.755618, -0.630740}, {1.172062, 0.331256}, {-0.074557, -1.505289}, {1.261753, -0.254490}, {0.432557, -0.043824}, {0.233409, -0.174214}, {0.046213, 0.259837}, {-0.956389, 0.034619}, {0.336500, 0.085573}, {1.029807, -1.168944}, {0.148733, -0.666186}, {0.504364, 0.591615}, {-0.244863, -0.431764}, {-1.287166, -0.010764}, {0.206851, -1.199483}, {-1.130227, -0.926562}, {0.045319, -0.640907}, {1.744857, 0.365060}, {-0.337659, 0.254251}, {-1.241628, 0.474563}, {-0.098000, 0.043348}, {0.135789, 0.720002}, {0.079954, -0.567468}, {0.209679, 0.580221}, {0.129076, -0.638995}, {-0.259201, 0.098160}, {0.684000, 0.742712}, {-1.058322, 1.121174}, {-1.133869, -0.077823}, {-0.786057, -0.192047}, {0.043596, -0.730099}, {-0.468971, -0.508530}, {-0.166478, 0.964301}, {-0.421994, 0.534392}, {0.801013, 0.327796}, {0.626465, -0.857809}, {-0.316640, 0.963254}, {-0.686444, -0.349580}, {-0.411887, 0.006307}, {-0.044218, -0.684096}, {1.448337, -0.256645}, {0.224336, -0.436483}, {0.025337, -0.347815}, {-0.407366, 0.419951}, {-0.132820, 0.348857}, {0.371735, -0.864264}, {0.086483, -0.338426}, {0.585107, 0.270821}, {0.326869, 0.548646}, {-0.326146, -0.463299}, {1.143470, -0.087656}, {-0.098858, 1.246934}, {-0.036904, 0.191940}, {0.287535, -0.291944}, {0.369159, 0.063018}, {-1.317075, -0.193187}, {0.378189, 0.176271}, {0.856049, -0.716794}, {0.077633, 0.519224}, {-0.699016, -0.029019}, {0.295033, 0.961106}, {0.197367, 0.762655}, {0.114262, -0.106428}, {0.589365, -0.677044}, {-0.241511, 0.228210}, {-0.430454, -0.895877}, {0.702252, 0.370365}, {1.742418, -0.318825}, {0.735371, -0.917391}, {0.798335, -0.370615}, {-0.537492, 0.369018}, {1.236422, 0.065891}, {-0.266399, -0.351783}, {0.423548, 0.165331}, {0.077228, 0.536433}, {-0.174825, 0.148350}, {0.199017, -0.554067}, {-0.965766, -0.545608}, {0.554513, 0.053499}, {0.037865, 0.091226}, {0.586746, 0.403764}, {1.063461, -0.711465}, {0.627927, 0.180048}, {1.849318, 0.366474}, {-0.787943, -0.066363}, {-0.225401, 0.838693}, {0.780419, 1.099950}, {-0.583530, -0.334410}, {0.435296, -0.110910}, {-0.395316, 0.522476}, {-0.296867, 1.030867}, {0.180194, 0.365723}, {-0.565612, 0.105022}, {-0.071050, -0.637618}, {1.036443, 1.254893}, {-0.357016, 0.150407}, {-0.105283, 0.193076}, {0.137034, 0.727374}, {0.395267, -0.224436}, {-0.148716, 0.241524}, {-0.185222, 0.387931}, {1.193605, -0.847551}, {0.250426, -0.707717}, {0.140128, -0.294992}, {0.023456, 0.023879}, {0.557191, -1.088329}, {-0.705496, -0.351205}, {0.706976, 1.287748}, {0.207298, -0.734820}, {0.124706, 0.189566}, {0.797376, 1.215020}, {-0.329404, -0.576281}, {0.648951, 0.195529}, {-0.597548, 0.519029}, {0.212921, 0.436097}, {-0.330959, 0.311842}, {-2.163917, -0.881882}, {-1.070369, 0.664018}, {0.473269, -0.101973}, {0.378465, -0.822488}, {1.361181, 0.418143}, {-1.012859, -0.712103}, {0.870152, -1.346827}, {0.653007, -0.617410}, {0.497337, -0.775725}, {-0.260237, 0.259267}, {-0.743430, -0.591395}, {-0.674841, -0.191339}, {-0.584851, -0.214106}, {0.225244, 0.160024}, {1.161423, 0.256300}, {-1.640086, -0.242275}, {-0.180871, -0.679693}, {-1.243241, -0.228350}, {0.599251, 0.947940}, {1.146590, -0.156590}, {-0.647330, 0.051065}, {1.949584, -0.583944}, {-0.242692, 1.238130}, {0.039443, 0.740763}, {-1.458523, 0.089037}, {-0.153975, -0.381741}, {-0.317357, -0.610750}, {0.237125, 1.346517}, {-0.201768, 0.320696}, {0.606654, 1.023548}, {0.810015, 0.801355}, {-0.870015, 0.018496}, {0.005406, 0.866319}, {-0.020676, -0.167982}, {-0.341657, 0.564725}, {-0.720214, -0.704252}, {0.656031, -0.457047}, {0.070486, 0.044186}, {-0.170715, -0.739585}, {0.184302, -1.788002}, {0.715592, -0.376628}, {-0.363081, -0.119088}, {-0.100914, 0.119614}, {0.005834, -0.268860}, {-0.129771, 0.331506}, {0.143287, -0.198036}, {-0.304611, 0.217426}, {-0.594381, -0.825000}, {-0.365556, -0.258829}, {-0.214172, 1.162243}, {-1.194364, 0.810341}, {-0.325733, -0.570507}, {-0.614001, -0.663556}, {0.118437, -0.291858}, {0.502611, -0.601088}, {0.659081, -0.217369}, {-0.446278, -0.786148}, {0.022241, 0.272441}, {0.590431, 0.909812}, {-0.505353, 0.055519}, {-1.032100, -0.102485}, {0.514653, 0.094284}, {0.017452, -0.117900}, {-0.434090, -0.360114}, {-0.795938, 0.951701}, {1.526127, -0.592844}, {-0.389825, -0.453072}, {0.384166, -1.012017}, {1.182901, -0.350927}, {-0.650756, -0.215167}, {-0.920064, 0.382095}, {0.325262, 0.053581}, {-0.367365, -0.250609}, {-0.792805, -0.159176}, {0.364886, 1.149926}, {-0.952999, -0.523706}, {-0.590878, -0.928414}, {1.302134, 0.020920}, {0.271231, 1.409444}, {-0.421610, 0.925520}, {1.193167, 0.706521}, {-0.333416, 0.336865}, {0.018979, 0.278195}, {0.454613, 0.518481}, {-0.039562, -0.760878}, {0.452849, 0.034856}, {-0.363828, -0.532211}, {-0.120648, 0.354305}, {0.124415, 0.897220}, {0.079466, -0.085179}, {0.550458, 0.796151}, {0.118218, 0.662074}, {-0.355235, -0.199056}, {0.436312, 0.191719}, {1.566220, -0.116118}, {-0.836157, -0.768313}, {1.586808, 0.178922}, {-0.280443, -0.468900}, {-0.326042, 0.010218}, {0.566632, 1.593287}, {1.012295, -1.739928}, {-0.076488, 0.044391}, {0.483599, -0.125041}, {-1.492059, 0.640508}, {-0.678092, -0.179653}, {-0.373386, -0.340247}, {-0.832028, 0.600061}, {-0.567324, -1.027965}, {-0.083357, 0.199339}, {-0.734433, 0.929912}, {0.570454, 0.573202}, {-0.365270, 0.716633}, {-0.417190, -0.754130}, {-0.854980, -0.194668}, {-0.798654, -0.640999}, {-0.386871, 0.854369}, {-0.317394, -0.378946}, {0.845760, -0.762026}, {-0.238503, 0.628650}, {-0.476581, -1.193935}, {0.372842, 0.363358}, {1.929276, 0.425483}, {0.560945, -0.892123}, {0.832559, 1.026749}, {0.332159, -0.899940}, {0.729769, -0.406694}, {1.773252, -1.453081}, {0.014471, 0.518545}, {-0.032728, -0.153441}, {-0.418525, -0.263385}, {1.483183, 1.053228}, {-1.108048, -0.126405}, {-0.882071, 0.557002}, {-0.299469, 0.621888}, {-1.390889, 0.791123}, {0.087246, -0.444939}, {-0.971593, 0.855966}, {0.288585, -1.387271}, {-0.019311, 0.732536}, {0.575029, -0.900371}, {-0.849454, -0.021176}, {0.102055, 0.741000}, {0.639938, 0.250506}, {0.031515, -1.559311}, {0.184749, 0.007297}, {-0.615292, 0.150555}, {-1.045878, 0.504486}, {0.648174, 0.248709}, {-1.923251, -0.525706}, {-0.139883, -0.496519}, {-0.273595, 0.733709}, {-0.554049, -0.638829}, {-0.388154, -0.721417}, {0.302342, -0.922345}, {0.301997, 0.247964}, {0.783229, -0.118560}, {0.015568, -1.688273}, {-0.203951, -0.271846}, {-0.464304, -0.803130}, {0.788053, 0.525790}, {-0.310437, 0.810294}, {0.734484, -0.122955}, {0.078820, -0.755273}, {0.689406, 0.380790}, {-0.879125, -0.800241}, {0.916797, -0.158671}, {-0.955580, 0.370290}, {1.053886, 0.183747}, {-1.024297, 0.502801}, {0.821289, -0.323075}, {-0.197416, -0.199129}, {0.128673, -0.204273}, {-0.047906, 0.532305}, {-0.332497, -0.459762}, {-0.921215, 0.010891}, {-1.187693, 0.237371}, {-0.907113, -1.114225}, {-0.391416, 0.334680}, {0.484839, -0.022006}, {0.279699, -0.155898}, {0.232580, 0.635441}, {0.442647, -0.512038}, {0.457949, -0.744347}, {-0.420994, -0.605339}, {0.607157, 1.329146}, {-0.274663, 0.330222}, {-0.146928, 0.998094}, {0.634872, -0.085303}, {0.038862, 0.137135}, {0.874375, 0.481656}, {-0.078049, 0.930253}, {0.211922, 0.365963}, {-0.057426, -1.256802}, {-0.249915, 0.102113}, {0.074635, 0.926036}, {-0.919523, 0.156604}, {0.321808, -0.463000}, {-0.336447, 0.591209}, {0.069922, 0.186182}, {-0.098125, 0.286970}, {-0.945924, 0.199885}, {1.251790, -0.588337}, {-0.103392, -0.063531}, {-1.495706, 0.300232}, {0.161476, -0.532461}, {-0.229976, 0.007762}, {0.102294, 0.640865}, {-0.046165, -0.345694}, {0.152871, -0.139371}, {-0.621642, 0.466272}, {0.502189, -0.429932}, {0.381534, 0.850587}, {1.047882, 0.364581}, {0.166650, -0.533360}, {-0.147243, 0.870267}, {0.264328, -0.088269}, {0.241229, 0.219450}, {-0.674579, 0.991554}, {-0.952101, 0.726952}, {0.000481, -0.050198}, {-0.237754, 0.641076}, {-0.058228, -0.524298}, {1.097294, -0.979438}, {-1.219292, -0.095890}, {0.265504, -0.684968}, {-0.779660, 0.555899}, {0.571050, -0.072841}, {0.669225, 1.701574}, {-1.191487, 0.111178}, {0.909199, 0.891876}, {-0.395837, -0.258702}, {0.093876, -0.469630}, {-0.423132, 0.835933}, {-0.273781, -0.809838}, {0.379980, 0.848947}, {1.264064, -0.035597}, {-0.801897, 0.295423}, {0.817880, -0.017036}, {-0.105681, 0.855247}, {0.486284, -0.619853}, {-0.032531, 0.489774}, {0.211010, 0.529908}, {0.661884, 2.635604}, {0.539633, 1.054015}, {-0.523203, 0.144841}, {0.642130, -0.062279}, {0.773169, -0.295494}, {1.236025, 0.138371}, {-0.902266, -0.091117}, {0.126149, 1.096640}, {-0.361577, 0.548790}, {0.082879, -0.449861}, {-0.084813, 1.095634}, {1.546048, 1.536377}, {0.856924, 0.635732}, {0.834506, 0.824424}, {-0.021495, -0.526435}, {-0.838356, 0.515902}, {-0.473372, -0.161548}, {-0.778314, 1.424876}, {-0.230595, -0.748969}, {-1.592887, -0.737746}, {-0.938554, -0.530306}, {-1.572545, -0.791394}, {0.435546, -0.376083}, {0.525145, 0.213393}, {0.367887, -1.044275}, {-0.719915, 0.061255}, {0.304958, -0.204748}, {1.210495, -0.112141}, {-0.086723, 0.129535}, {-1.281467, 0.522155}, {-0.333647, -0.274983}, {-0.554049, 0.413201}, {0.753145, 0.891878}, {0.274075, -0.707382}, {-0.062669, 0.788726}, {0.466273, -0.501215}, {0.024895, 0.354051}, {0.798756, 0.455852}, {-0.020206, -0.029112}, {0.339560, 1.851831}, {0.152438, 0.738243}, {0.183936, -0.781268}, {-0.103182, 0.713654}, {0.875376, -0.483562}, {0.015320, -0.460793}, {0.060661, -0.643523}, {-2.264353, 0.105116}, {-0.789343, 0.615718}, {-0.243310, 0.060137}, {1.699891, -0.863147}, {-0.512188, -0.107884}, {0.715462, -0.746962}, {-0.168059, 0.396399}, {-1.855221, 0.474742}, {1.117193, -0.177673}, {0.605124, 0.264148}, {-0.158801, -0.269563}, {-0.026259, 1.643594}, {-0.612630, -0.403823}, {-2.104756, 1.120870}, {0.439319, -0.326207}, {-0.729839, -0.030055}, {-0.197924, -0.161142}, {0.859821, 0.172257}, {-0.082605, 1.518575}, {-1.076389, -1.744869}, {-0.219282, 1.053450}, {-0.545467, 0.263106}, {0.717580, -0.589610}, {-0.704720, -0.962831}, {0.404192, 0.274100}, {-0.559766, -0.674194}, {-0.846818, 1.766523}, {0.413603, 0.183993}, {0.258588, 0.447021}, {0.711449, -0.254685}, {-0.039759, 0.029436}, {-0.128433, -0.269298}, {-1.025894, 1.345869}, {-0.912975, 0.052240}, {0.755264, -0.206240}, {0.044141, 0.949915}, {-1.565117, -0.595266}, {0.200074, -1.417585}, {-0.158238, -0.081043}, {-0.503170, -0.078182}, {0.362525, -0.194696}, {0.259960, -0.907605}, {-0.105310, -1.933984}, {-0.899535, -0.440019}, {0.163533, 0.065331}, {-0.571787, -1.130394}, {0.301250, -0.094735}, {0.104414, -1.423818}, {-0.146865, -0.198913}, {-0.497490, 0.758248}, {0.466122, -0.416899}, {-0.940500, 0.639487}, {-0.440392, 0.809788}, {-2.223726, 0.948796}, {-0.313709, 1.585454}, {0.206535, -0.868710}, {0.910526, -1.174225}, {-0.495236, 0.167135}, {-0.575404, 0.007086}, {-0.255414, 0.937178}, {-0.296419, -0.082039}, {1.002712, 1.059056}, {-1.200725, 1.009362}, {-1.031906, 1.427611}, {0.064588, -0.744817}, {1.290310, 0.659770}, {0.251141, -0.190253}, {-0.586866, -0.099783}, {1.514305, 0.076462}, {-0.292877, -0.034932}, {0.086519, -1.537324}, {0.558554, -1.027847}, {0.016688, -0.294418}, {-0.464068, 0.572870}, {-1.031390, 0.702926}, {-0.993327, 0.280797}, {0.407376, 1.270542}, {-0.291421, -0.688110}, {0.842434, 1.685884}, {-0.464356, -1.287623}, {0.680357, -0.473646}, {0.694717, 0.571415}, {0.391202, -0.560555}, {-0.169632, -0.035731}, {-0.203948, 0.790613}, {-0.670035, -0.264796}, {-0.090461, 0.101945}, {-0.311617, 0.481222}, {-0.344817, 0.135445}, {-1.162870, 0.142668}, {-0.487890, -0.544005}, {0.732853, 0.690509}, {0.585005, -1.244755}, {0.503757, -0.316446}, {0.869989, -0.370224}, {0.351113, -0.041060}, {0.021720, -0.728370}, {-0.706755, -0.494790}, {-0.103364, -1.238782}, {-0.355559, -0.533147}, {0.166720, -0.864956}, {0.334983, 0.100261}, {-0.848547, 0.637065}, {-0.317559, 0.657728}, {0.409242, 0.262048}, {0.596688, 0.826314}, {-0.458137, 0.110997}, {-0.682732, -0.219886}, {-0.408569, 0.043952}, {-0.320255, -1.596813}, {0.387040, -0.699110}, {0.198430, -0.538138}, {0.856802, -0.708255}, {0.756612, -0.653997}, {-0.356619, -0.562844}, {0.271806, 1.194806}, {-0.175223, -1.368711}, {-0.153117, -0.398840}, {0.706898, -0.328442}, {0.034251, -0.107789}, {0.277096, 0.757656}, {-0.144774, 0.378035}, {-1.538711, 0.603603}, {0.206118, 0.430155}, {0.622510, 0.173831}, {0.046042, 0.058330}, {-0.577057, 0.162875}, {0.685647, -0.647830}, {-0.910460, 0.504792}, {-0.200849, -0.954877}, {0.475974, -0.438454}, {0.340606, 0.030790}, {-0.278135, 0.194854}, {0.707024, -0.623755}, {-0.091069, -2.189701}, {-0.273684, -0.897539}, {0.050275, 0.334330}, {-1.301614, -0.241288}, {0.376532, 1.392280}, {0.848500, 0.658936}, {-0.354567, -0.729838}, {0.779270, -0.651632}, {-1.525730, 0.876681}, {0.587723, -1.383307}, {-0.741497, 0.254969}, {0.873264, 0.197479}, {-0.480964, 1.299430}, {-0.431708, 0.130537}, {0.323680, -0.448970}, {-0.803705, -0.383630}, {0.259853, -0.171842}, {-0.074427, -1.423999}, {0.213413, -0.806918}, {0.319758, -0.629784}, {0.197369, -0.175039}, {0.374164, -2.020326}, {0.234205, 0.212423}, {0.442106, -0.486910}, {-0.970864, 0.312143}, {0.994610, 0.634741}, {0.048931, 0.205781}, {0.369340, -0.247351}, {-0.458195, 0.094655}, {-0.853393, 0.397950}, {-0.222113, -0.020140}, {0.855104, 1.002182}, {-0.949021, 0.731330}, {-0.073219, 1.402526}, {-0.151223, -0.492186}, {-1.375457, -0.136411}, {-0.466811, 0.022190}, {1.087376, 0.106868}, {-0.744528, -0.413374}, {-0.342038, 0.049102}, {-1.494273, -0.271438}, {-0.125528, 0.601419}, {-0.111221, -0.380202}, {0.641612, 0.273790}, {-0.883504, 0.517323}, {-0.843544, 0.433726}, {0.070544, 0.613134}, {-1.407600, -0.044330}, {-0.492451, 0.995879}, {0.983269, 0.143963}, {0.221852, 0.495000}, {-0.791657, 0.614310}, {0.703727, -0.571992}, {-0.071284, 0.875682}, {1.641568, -0.631850}, {-0.083871, 0.250629}, {-0.229893, -1.203232}, {-0.382616, 1.669525}, {0.486753, -1.096469}, {-0.599193, -0.121324}, {1.105338, 0.376484}, {-0.433136, -0.568643}, {1.262118, 0.303337}, {-0.180750, -0.251747}, {0.232196, 0.634354}, {0.526905, 0.692507}, {-0.416640, -0.134469}, {-0.945404, 0.290901}, {1.452757, 0.222601}, {-0.057791, -0.455470}, {-0.853629, -0.583719}, {-0.233342, 0.161093}, {-0.968813, 0.500752}, {-0.861537, 0.075586}, {1.474493, -0.284338}, {-0.754792, 0.807480}, {-0.643724, 1.545286}, {-0.922333, -0.131210}, {-1.068958, -0.426784}, {-1.011546, 0.020778}, {0.787292, 0.193200}, {1.276891, 0.812940}, {-0.001378, 1.525040}, {-0.482745, 0.059566}, {0.640762, -0.003003}, {-0.842820, -0.681972}, {-1.136885, 1.104554}, {0.707249, 0.574867}, {0.404579, 0.578500}, {0.772682, 0.950729}, {-0.758872, -0.442283}, {-0.134508, 0.287088}, {-1.217763, -0.136208}, {0.067001, 0.006883}, {-1.117236, -0.517592}, {1.074093, -1.371225}, {0.434892, -0.753326}, {-1.657469, -0.184451}, {-0.563524, 0.887134}, {0.594674, -0.128692}, {-0.861165, 0.393858}, {0.740365, -0.155010}, {-0.542431, -0.137020}, {-0.160958, 0.367545}, {1.061826, -0.276971}, {-0.771112, 0.145356}, {1.963119, 0.088410}, {0.024542, 0.144405}, {-1.161727, 0.028527}, {-0.629890, -1.011632}, {-0.523735, 0.451983}, {0.226956, -0.663835}, {-0.709942, 0.411619}, {-0.862071, -0.723057}, {-0.430194, 0.705340}, {0.489380, -0.913195}, {-0.913531, -0.125404}, {0.580276, -0.084090}, {-0.795566, 0.423792}, {0.195894, -0.952419}, {0.206701, 0.058895}, {0.343643, 0.988757}, {0.111858, 1.155224}, {-0.402678, 0.396630}, {-0.085481, 1.087237}, {-0.626447, 0.384020}, {-1.545255, 1.402500}, {-0.382681, 1.101254}, {-0.570465, -0.881833}, {-0.067170, 0.447168}, {-0.402078, -0.107883}, {-0.063022, 1.237664}, {0.357641, -0.210884}, {0.173106, 1.169455}, {0.371232, -0.555801}, {0.426061, 1.683925}, {-0.862561, 0.481593}, {-1.295345, 0.677131}, {0.882575, -0.080920}, {1.076227, 0.081224}, {0.217811, 0.806447}, {0.642645, -0.244275}, {-0.137093, -0.322132}, {0.246084, -0.089603}, {0.827582, -0.845716}, {0.373640, -0.242160}, {-1.221390, 0.390996}, {-0.147700, 0.855458}, {-0.301463, -0.077718}, {-0.477683, -1.468176}, {-0.708449, 0.284200}, {0.341767, 1.177536}, {0.073596, -0.373099}, {-0.418003, 0.011618}, {0.659790, 0.501637}, {0.517335, -0.383893}, {-0.504534, 0.584654}, {-0.700111, -0.051171}, {0.235161, -1.457844}, {0.447664, -0.556099}, {0.669581, 1.662563}, {0.635083, -0.024530}, {-0.426292, -0.598758}, {0.380072, -1.112453}, {-0.081336, 0.145480}, {-0.907122, 0.871629}, {0.131628, 1.573776}, {-0.384249, 0.507013}, {-0.799491, 0.657805}, {-0.243014, 0.812674}, {-0.280861, -1.138266}, {0.252573, -0.763178}, {-0.829438, 0.152104}, {0.238524, -0.277766}, {2.523618, -0.842357}, {-0.699246, -0.801106}, {1.166441, 0.831885}, {0.413058, 0.094339}, {-0.446019, 0.307323}, {-0.725646, -0.489846}, {-0.253605, -1.246224}, {0.912358, -0.556724}, {1.278255, 0.012615}, {-0.078776, -1.194235}, {-0.366774, -2.136559}, {0.776158, 0.034121}, {0.124952, 0.735158}, {0.495498, -0.287894}, {0.645361, 0.435278}, {-0.027172, -0.196745}, {-0.091825, 0.181205}, {-0.449690, 0.202206}, {0.615196, -0.763464}, {0.006443, -0.808811}, {-0.778937, -0.464757}, {-0.661201, -0.076723}, {0.142220, 0.639184}, {0.043606, 0.256401}, {1.185320, 0.179074}, {0.964460, 1.638016}, {-0.439314, -1.027129}, {-0.974713, -0.701040}, {0.626450, 1.670174}, {0.849683, 0.000633}, {-0.758821, 0.643905}, {0.533524, -0.276729}, {-0.287200, 0.229033}, {0.976720, 0.691516}, {0.413251, -0.414654}, {-0.105930, 0.582164}, {1.083972, 0.127931}, {-0.008602, 0.396564}, {-1.014633, -0.766216}, {-0.567769, -0.603326}, {-0.671345, -0.870915}, {-0.436383, 0.159432}, {0.789563, -1.405331}, {-0.012052, 0.291490}, {-1.064900, 0.499255}, {1.857613, 0.173601}, {-0.166943, -0.593651}, {0.813628, 0.624637}, {-0.792895, -0.334087}, {-0.371264, -1.463375}, {0.232055, 1.514775}, {-0.480078, -0.932215}, {0.493973, 0.190971}, {0.477380, 0.232577}, {0.240390, -0.359935}, {0.082890, -0.564972}, {0.142401, 0.071885}, {0.415193, -0.076906}, {1.294283, 0.031845}, {0.184350, 0.522837}, {-0.985097, 0.515890}, {-0.321414, 0.266318}, {-0.040275, -1.090636}, {1.454251, -0.464461}, {-1.341400, -0.556900}, {1.112672, -1.294695}, {0.684248, -0.569627}, {0.110519, 1.620119}, {-0.074092, -1.501786}, {0.836840, 0.582174}, {-0.312866, -0.163083}, {-0.348387, 0.846036}, {-0.401781, -0.683929}, {-0.477886, 0.419644}, {0.380085, 1.371967}, {-0.151815, -1.437845}, {0.362655, 1.699131}, {-0.285574, -0.328342}, {-0.373046, 0.552420}, {0.524496, -0.274919}, {0.162426, -0.591347}, {0.247988, -1.248758}, {0.179873, -0.495477}, {0.332481, 0.187029}, {-0.680053, -0.795562}, {-0.297790, -1.228507}, {0.433604, 0.362610}, {-0.912981, -0.317793}, {0.356607, -0.401878}, {-0.457215, 1.277897}, {0.423863, -0.907331}, {1.369555, 0.294154}, {-0.558227, -0.787342}, {-0.700928, -0.002200}, {0.475999, 0.053324}, {0.759515, -0.511097}, {-0.214352, -1.108068}, {-0.823262, 0.181915}, {-1.481847, -0.145536}, {-0.838811, -0.827068}, {-0.354237, -0.929419}, {-0.003615, 0.497626}, {1.165999, 0.676843}, {0.626492, 0.510292}, {0.158529, 0.168647}, {1.189623, 0.008902}, {0.281004, -1.174505}, {0.610236, -0.754183}, {-0.669239, 0.615970}, {0.300373, -0.608739}, {1.205115, -0.072012}, {0.272992, -0.140035}, {-0.478646, -0.534863}, {-1.353538, 0.265825}, {-0.199615, -1.529628}, {-0.219052, 1.418831}, {-0.138797, 0.344504}, {0.170086, -0.026321}, {-0.196733, 0.535114}, {-1.033414, -0.221792}, {0.028438, 0.044914}, {-0.884678, 0.622154}, {0.822835, -2.043658}, {0.344915, -1.053158}, {-0.644134, -0.574558}, {-1.332407, 0.519250}, {0.036381, 0.475286}, {-0.303382, 0.982412}, {-0.353411, 0.250417}, {0.139548, -0.642938}, {1.414632, -0.370112}, {0.532912, -0.264381}, {0.342811, 0.344477}, {0.501145, -0.288626}, {0.311541, 0.560236}, {-0.413902, -0.733376}, {0.591928, -0.533218}, {-0.311692, -0.614243}, {0.357470, -1.610867}, {-0.400828, -0.474021}, {0.291392, 1.248851}, {0.016993, -0.633725}, {-0.525249, 0.450546}, {0.801819, 1.070688}, {-1.296271, -0.616623}, {-0.393605, -0.448016}, {-0.165781, 0.199731}, {-0.066457, 0.457058}, {0.245912, 0.367495}, {-0.614678, 0.338112}, {0.424687, -0.042103}, {-0.016281, 0.164701}, {-0.388587, -0.005404}, {-0.616791, 0.044666}, {0.164994, -0.591148}, {1.130053, 0.244749}, {-0.764096, -0.677907}, {0.001894, 0.070851}, {0.970162, -0.004036}, {0.294438, -0.848449}, {-0.085147, -1.038641}, {0.146574, -1.020098}, {0.731212, 1.172352}, {-0.966413, 0.010182}, {0.022011, 0.098571}, {-0.062500, 0.809517}, {0.613554, 0.896113}, {-1.702897, -0.428981}, {-0.295817, -0.095047}, {0.363999, 1.299666}, {-0.185637, 0.710197}, {0.667850, -0.579586}, {-0.091486, -1.745092}, {0.278540, -0.322231}, {-1.393286, 0.017571}, {-0.909896, -0.550217}, {-0.227978, -0.287231}, {-0.041531, -0.572542}, {0.598923, -1.109982}, {0.528515, 0.294793}, {1.420346, -0.167967}, {0.339044, -0.296742}, {-0.427926, -0.195084}, {2.320888, -0.602119}, {0.316394, -0.195310}, {0.392226, -0.018758}, {-0.347128, -0.012198}, {0.885682, 0.291685}, {0.694113, -0.213884}, {1.098109, 0.434729}, {0.126689, 0.353735}, {-0.540018, -0.289525}, {-0.878448, 1.391600}, {-0.019977, 0.206745}, {0.873189, -0.483586}, {0.121439, -0.209070}, {0.648235, -0.185503}, {-0.009043, -0.764272}, {0.372579, 0.872373}, {0.472101, -0.192603}, {-0.407035, -0.893065}, {-1.367142, -0.975043}, {0.746200, -0.328607}, {0.388173, -1.625638}, {0.884013, -0.528696}, {0.705324, 0.779519}, {0.408395, -0.377831}, {1.083901, 0.395567}, {0.781733, -0.146787}, {-0.068884, -0.865584}, {0.156537, 0.742738}, {0.113212, 0.987732}, {1.521997, 0.329659}, {-0.192594, -0.352522}, {-0.976653, 0.187491}, {0.817131, 0.071363}, {0.699118, 0.409109}, {-0.297057, -0.940273}, {-0.936432, -1.106289}, {0.626260, -0.241420}, {-0.260488, 0.166791}, {0.701135, -1.061037}, {-0.554144, -1.046121}, {0.513165, 0.663304}, {-0.011168, 0.147376}, {0.037910, 1.201414}, {0.140816, 1.384849}, {-0.242984, -1.207828}, {-0.107482, 0.575915}, {0.451083, 0.174602}, {0.269525, -0.536069}, {0.211411, -0.104573}, {-0.204415, -0.512769}, {0.628925, -0.352539}, {1.033395, 0.036681}, {-0.675614, -0.143876}, {-0.621722, -0.934906}, {0.211877, -0.248810}, {-0.352170, 0.551980}, {-1.116948, 0.321283}, {-0.826697, 1.581404}, {-0.195648, 0.310111}, {-0.938570, -0.616930}, {-0.451007, 0.525622}, {-0.120274, 0.851907}, {0.045607, -0.373985}, {-0.214821, 0.266194}, {0.171364, -0.008571}, {0.301965, -0.705054}, {-1.165181, -0.235733}, {-0.650434, -0.274030}, {0.122090, 0.561616}, {0.435428, -0.782393}, {-0.004740, -0.125884}, {-0.321219, -0.415579}, {-1.199688, 0.284728}, {-0.533240, 0.015463}, {0.304348, -0.073971}, {-0.733804, -0.444715}, {-0.725423, 0.204256}, {0.604231, -0.689961}, {-0.756920, -0.218757}, {0.956018, 0.954204}, {0.169414, -0.152566}, {0.481613, -0.565409}, {0.371303, 0.288803}, {-0.794294, -1.147211}, {-1.706341, 0.716376}, {-0.627696, 0.291968}, {-0.121333, -1.001299}, {0.550558, -0.282856}, {-0.349733, -0.561486}, {0.578835, 0.339123}, {0.420234, -0.741495}, {0.144577, 0.277881}, {0.031130, -0.728796}, {-0.564058, 1.498556}, {1.015670, 0.422366}, {-0.063266, 0.346276}, {0.551090, -1.963699}, {0.934465, -0.385555}, {0.422983, 1.159449}, {0.101278, -1.667219}, {-0.308766, 0.332842}, {0.150898, -0.097385}, {-0.862758, -1.060237}, {-0.687885, -1.141096}, {-0.862829, -0.505841}, {0.558943, -0.778417}, {0.549535, -0.363780}, {0.072778, 0.637066}, {0.286029, 0.322126}, {0.330171, -0.854661}, {-1.348837, -0.420251}, {-0.198428, -0.371513}, {-0.525214, 0.301414}, {-0.667387, 0.022208}, {-0.574674, 0.529466}, {2.371918, -0.496606}, {0.257499, -0.783288}, {0.156324, 0.286932}, {0.087484, 0.531503}, {0.093291, 0.317147}, {-0.427160, -2.024729}, {-0.044421, 1.046526}, {0.978931, 0.464268}, {-1.373383, -0.073722}, {-2.321501, -0.976402}, {0.683655, 0.655822}, {0.352602, -0.192715}, {0.339613, 0.269168}, {-0.472547, -1.432907}, {-0.231035, 0.019309}, {-0.094858, 1.060712}, {0.681354, -1.324615}, {0.864079, 0.416811}, {-0.558628, 0.087251}, {-0.365315, 0.133957}, {0.107680, 2.348517}, {0.198383, 1.253961}, {-1.268406, 0.952837}, {-0.992758, -0.560084}, {0.672959, 0.572037}, {-0.449041, 1.977002}, {0.522614, 0.339234}, {0.085229, -0.360501}, {0.640099, 0.726865}, {-0.091502, -0.015738}, {-1.201696, 1.035130}, {-0.109550, -0.696829}, {1.168720, 1.005732}, {-0.249323, 1.263522}, {0.724024, 0.109230}, {0.265328, 0.012693}, {-0.842707, -1.113746}, {-1.256092, -0.822533}, {-0.075814, -0.052293}, {-0.128797, -0.411582}, {-0.653104, -0.788771}, {0.939494, 0.157740}, {1.072504, 0.885641}, {0.163190, 0.818505}, {0.706255, 0.687324}, {0.384361, -0.313490}, {0.508228, -1.395336}, {0.359982, 0.352805}, {-0.256236, 0.825832}, {0.029179, -0.324424}, {0.486841, 0.728258}, {0.817556, 0.065814}, {1.494148, 0.828882}, {-0.050180, -0.893645}, {-0.636544, -1.178485}, {-0.720967, 0.391549}, {-1.307682, 0.078339}, {-0.605757, -0.944323}, {-0.731348, -0.094258}, {0.396463, 0.209925}, {0.209509, -0.607296}, {0.119597, -0.249649}, {-0.200995, -0.099649}, {-0.567400, -0.345251}, {-0.857138, 0.181769}, {-0.941646, -0.854838}, {-1.128753, 0.837338}, {-0.657241, -0.759242}, {-0.188936, 0.670672}, {-0.306598, -0.482202}, {0.912207, -0.517195}, {1.164901, -0.427966}, {-0.009895, -1.020774}, {0.025765, 1.322707}, {0.150524, 1.732201}, {-0.439267, -0.498603}, {-0.368177, 0.524348}, {-0.630978, -0.521041}, {-0.231973, -0.184883}, {0.067075, 1.310441}, {-0.105442, 1.412885}, {0.331006, -1.363233}, {0.791599, 0.084396}, {-0.890726, -1.246866}, {-0.542651, -0.106851}, {0.107314, 0.092753}, {-0.732606, 0.153913}, {-0.330158, 0.495539}, {0.489401, 1.064049}, {-0.417820, 1.261110}, {-1.631694, -0.818434}, {-0.620724, -0.895058}, {0.426467, -1.064865}, {0.467471, -0.278711}, {0.817514, -0.321221}, {0.096475, -0.494918}, {0.152146, 0.351492}, {-0.498145, 1.133315}, {0.303055, -0.317239}, {0.103959, 0.019469}, {0.092448, 0.918901}, {-0.993398, 0.147710}, {-0.995629, 0.413023}, {1.220671, -1.202642}, {0.724379, 1.575400}, {0.811431, 0.466068}, {0.499664, -0.880995}, {0.558109, 0.769554}, {-0.702879, -1.050569}, {-0.353375, -0.936081}, {0.360053, -0.464839}, {-0.779252, -0.780140}, {0.090785, -0.637723}, {-0.304972, 0.459278}, {0.736270, -0.110646}, {-0.109772, 0.206927}, {-0.478619, -0.042280}, {-0.876631, 0.510703}, {-0.906729, -0.217556}, {-1.537449, -0.267733}, {-0.978123, -0.957757}, {-0.714696, 0.975507}, {0.812617, -0.332136}, {-0.725724, -0.236311}, {-0.100842, 1.337503}, {0.080524, 1.176672}, {0.771711, -0.341004}, {-0.423299, -0.455648}, {2.158161, -0.512129}, {1.151039, -1.024555}, {0.642063, 0.018575}, {-1.054085, 0.401372}, {-0.288785, 0.630494}, {0.347641, -0.610670}, {1.408482, 0.059692}, {-0.379421, -0.208655}, {-0.483324, -0.878070}, {0.602104, -0.394601}, {-0.004706, -0.642013}, {-0.358424, -0.253404}, {0.411569, -0.129959}, {1.228551, 0.006102}, {0.531607, -0.018854}, {-1.380934, -0.627088}, {0.547267, -0.039238}, {0.746745, 0.351671}, {0.303177, -0.387336}, {-0.796387, -1.614076}, {0.464988, 0.970223}, {0.191287, 0.066696}, {-0.220325, 0.790812}, {0.303741, 1.089789}, {0.448117, -0.011489}, {0.419576, 0.169210}, {0.541446, -0.813073}, {-0.746604, -0.394798}, {-0.535124, -0.399080}, {1.212820, 1.210170}, {-0.608420, 0.220226}, {-1.418918, 1.368314}, {0.931166, 0.677711}, {0.682432, -0.895030}, {-0.693349, 0.261801}, {0.258131, -2.168849}, {0.867516, 0.563051}, {-0.096511, -0.462814}, {-0.689393, -0.230999}, {-0.369812, 0.249233}, {0.046717, 0.954072}, {-0.032594, 0.551930}, {-0.766079, -0.071566}, {0.793508, -0.748283}, {0.241679, 0.608403}, {0.498824, 0.196015}, {0.386018, -0.774475}, {-0.291054, -0.131220}, {-0.436014, 0.049768}, {-0.006478, 0.331976}, {-1.126995, 0.403371}, {0.674118, -1.006190}, {0.727574, -0.631312}, {0.115880, 0.143336}, {-0.181566, 0.695052}, {-0.233203, -0.086295}, {0.112809, -0.045588}, {0.543264, 0.808170}, {-0.581874, -0.471845}, {0.340867, -0.485032}, {0.165312, 0.013926}, {-0.162445, 0.725280}, {-0.499103, -1.248448}, {0.033577, 0.051456}, {-1.045131, -0.235899}, {-1.110962, -0.102827}, {-0.274189, 1.259956}, {-0.791826, 1.100141}, {0.324671, 0.829447}, {0.800825, -0.584404}, {0.849667, -0.944107}, {0.288553, 0.174365}, {-0.215377, 1.086802}, {0.392650, -0.010487}, {0.748435, -1.137606}, {0.034898, -0.302699}, {0.636265, 0.119519}, {0.837150, -0.690876}, {-0.092518, 0.354308}, {0.084607, -0.381048}, {0.970579, 0.659439}, {-0.564493, -0.616213}, {-0.403944, -0.133496}, {1.350834, 0.527610}, {-0.742367, -0.805350}, {0.624140, 0.366381}, {0.005646, -0.563460}, {0.268050, -1.292687}, {0.547784, -0.463622}, {-0.659049, -0.130209}, {0.283018, 0.527990}, {1.418480, 1.297302}, {0.488656, 0.974499}, {0.551555, -0.669995}, {0.015860, -0.360077}, {0.438938, 1.527582}, {-0.729915, -1.304140}, {0.025131, 0.002452}, {-1.484426, 0.708978}, {-0.804342, 0.051125}, {0.990833, -0.309900}, {-0.023686, 0.762213}, {-0.617502, 0.277137}, {-1.488232, 0.224413}, {-0.082550, 0.224711}, {0.610967, -0.436610}, {-0.019999, 1.299875}, {-0.323230, 1.244962}, {-0.812947, 1.719798}, {0.333300, -0.174474}, {0.115682, -1.155270}, {-0.695856, 0.388529}, {-0.543434, -0.096509}, {-0.096049, 0.107245}, {-0.199971, 0.163067}, {-0.067111, 0.395370}, {1.026571, -0.210498}, {-0.233456, 0.753581}, {0.051242, -0.861376}, {0.567777, -0.613727}, {0.987200, -0.366176}, {-0.409966, -0.600319}, {-0.021597, -0.362028}, {-0.285392, -1.023961}, {0.324897, -0.397392}, {-0.592783, -1.366636}, {1.513069, 0.094527}, {-0.044122, 0.361806}, {0.677076, -0.471443}, {-0.333290, 0.236344}, {0.108895, -0.098454}, {0.103235, -0.195197}, {0.650796, -0.537053}, {-0.131204, -0.326541}, {0.520322, 0.172370}, {0.210147, -0.555893}, {-1.082301, -0.048132}, {-1.964090, -0.466588}, {0.328335, -0.553112}, {0.708616, 0.426767}, {1.323439, -0.348617}, {0.360543, 0.545349}, {-0.719946, -0.639191}, {0.592925, 0.790534}, {0.402184, -0.204855}, {0.907703, -1.809146}, {-0.387200, 0.273777}, {-1.602303, 0.588109}, {0.867147, 0.107290}, {0.824226, 0.764841}, {-0.538419, -0.797958}, {0.814390, 0.065650}, {-1.453486, -0.528528}, {-0.672247, -0.514976}, {-0.052375, 0.190079}, {-0.094941, 0.604553}, {0.088500, 0.393075}, {0.195693, 0.876814}, {-0.184889, -1.487501}, {-0.270364, 0.104600}, {0.102034, 0.660195}, {-0.091355, -0.465751}, {-0.135152, -0.520824}, {-0.022116, -0.821371}, {0.570832, 0.492145}, {0.066106, 0.238053}, {-0.184571, 0.890977}, {0.288094, -1.019289}, {-0.022496, -0.473805}, {1.126320, 1.508352}, {-0.531990, 0.461793}, {-0.594808, 0.080021}, {0.290982, -0.692523}, {-0.890167, 0.818541}, {-0.162518, 0.512516}, {-0.062089, 0.662125}, {-0.469694, 0.836419}, {0.590828, -0.375129}, {-1.549634, 1.352916}, {-0.257487, 0.526662}, {0.554513, -0.496139}, {-0.489056, -1.265723}, {0.233948, -0.647727}, {0.333881, 0.673747}, {0.721218, 0.641171}, {0.166479, 1.234207}, {0.251689, -0.854045}, {0.503304, -0.772030}, {-0.397815, 1.070705}, {-0.454466, -0.093432}, {0.509756, 0.581621}, {-0.636769, 0.173815}, {-0.434115, -0.379772}, {0.360372, 0.416251}, {-0.816916, 0.336363}, {-0.481516, -0.148237}, {-0.344201, 1.129372}, {-0.745381, -0.145303}, {-0.237741, -1.131222}, {0.083772, -0.220665}, {0.519841, -0.090807}, {-0.074125, -0.928286}, {-0.280099, -1.361722}, {-0.233499, -0.378497}, {0.373073, -1.241461}, {-1.426124, 0.070811}, {-0.509544, 0.495983}, {0.099959, -0.668754}, {0.270905, 1.556735}, {-0.390670, 0.537248}, {-0.058168, 0.187165}, {-0.406095, -0.397041}, {0.121194, -0.343134}, {-0.451420, 0.715020}, {-0.116938, -0.147192}, {-0.333465, 0.135991}, {-0.741996, -0.453454}, {-0.481034, -0.484738}, {-0.782498, 0.231260}, {0.024518, 0.585927}, {-0.450470, -0.353688}, {0.594174, -0.126300}, {-0.794772, 0.420486}, {1.314513, -0.513466}, {-0.370453, 0.760489}, {0.150855, -0.339750}, {-0.135993, -0.778609}, {-0.276600, -0.086547}, {0.113501, -0.451234}, {0.807762, -0.310844}, {0.789981, 0.544938}, {-0.304444, 0.191596}, {-1.155565, -0.682987}, {0.312056, 1.172277}, {0.148072, -0.646764}, {-1.017788, 0.784066}, {0.908108, -2.113397}, {-0.647792, -0.940894}, {-0.147613, 0.439221}, {-1.081613, 0.980868}, {0.632143, -0.374708}, {-0.495802, -0.113519}, {-0.001556, 0.150950}, {-1.307628, -0.508955}, {-0.300870, 0.315066}, {-1.083447, -0.140177}, {-0.100772, 0.376783}, {-0.477322, 1.014067}, {-0.567785, -0.305888}, {-0.836664, 1.106455}, {-0.015276, 0.006448}, {0.616278, 0.239966}, {0.030009, -1.107782}, {-0.770995, -0.138155}, {-0.681094, -0.519193}, {-0.882058, -0.080711}, {0.248760, -0.979030}, {0.000043, -0.366665}, {0.400810, -0.085567}, {0.641021, -0.084098}, {0.533652, 0.288318}, {0.894862, -0.065116}, {0.123370, 0.978511}, {-0.180674, 0.803822}, {0.728752, -0.234438}, {-1.319526, 0.158393}, {-0.205442, -0.299613}, {-0.383721, -0.335137}, {-1.028570, 0.223713}, {0.932332, -0.634004}, {0.157887, -0.980576}, {0.889136, 0.047845}, {-0.087490, -1.077315}, {1.004223, -0.574276}, {-0.563213, -0.079366}, {0.609176, 0.143015}, {1.007697, -0.230920}, {-0.432129, -0.855668}, {-0.751450, -0.419138}, {-0.531787, 0.218861}, {1.240797, 0.009179}, {0.098613, 1.024921}, {-0.418097, -0.610862}, {0.638017, -0.556955}, {-0.882736, 0.678364}, {-0.101406, 0.188363}, {0.575997, -0.320782}, {-0.184244, -0.946120}, {0.854262, 0.058870}, {0.623265, 0.222449}, {0.026415, 0.979594}, {0.482302, 0.001502}, {-0.278778, -0.147706}, {0.640003, 0.194414}, {0.438042, -0.226420}, {0.136500, 0.092192}, {-0.202665, 0.686749}, {0.522478, 0.318777}, {-0.913607, 0.461100}, {0.058242, -0.589196}, {-0.125264, 0.196658}, {0.455045, 0.102476}, {-0.248191, -0.131455}, {-0.497535, 0.250805}, {0.168700, 0.673232}, {0.711314, -0.106036}, {0.651818, -0.851557}, {0.977553, -1.253093}, {0.286839, 1.317582}, {-0.371842, -1.093583}, {-0.301749, 1.329315}, {-0.403959, -0.126875}, {-0.217582, 0.112597}, {0.122512, -0.547045}, {0.538957, 1.455939}, {-0.051608, 0.121125}, {-0.483043, 0.988090}, {0.497165, -0.191173}, {-0.703290, 0.550797}, {0.658044, 0.757078}, {-0.412660, -0.052012}, {-0.252273, 0.092307}, {-1.322972, 0.140665}, {-0.203724, 0.534689}, {0.116356, 0.483238}, {0.554228, 1.157456}, {0.327654, 1.316895}, {0.250489, -1.294149}, {0.982871, 0.689230}, {0.192154, -0.292214}, {-0.669868, -0.373672}, {-1.188747, -0.038297}, {-1.090901, 0.731469}, {0.764236, -0.485868}, {0.275150, 1.088652}, {0.976241, -0.963219}, {-0.581240, -1.282012}, {0.320197, 0.407777}, {0.748587, 0.046703}, {0.467881, -0.329966}, {-1.102496, 0.283212}, {1.062265, 1.008907}, {-0.606597, 0.619235}, {-0.156865, -0.044052}, {-0.002704, -0.036497}, {0.706197, -0.423776}, {-0.257156, 0.973133}, {0.487914, 1.074381}, {-0.885602, -1.777507}, {-0.940260, 0.448708}, {0.932505, 0.236523}, {1.804253, 0.372704}, {-1.578130, 0.083653}, {-0.626332, 1.026166}, {1.193807, -0.043563}, {-0.505137, -1.317739}, {-0.508528, 0.107232}, {-0.487782, 0.645512}, {-0.437935, -0.346208}, {0.632623, 1.393825}, {0.487853, 0.179346}, {0.015868, 0.802943}, {-0.172107, -0.530354}, {-0.438663, 0.597939}, {-0.523518, -0.769340}, {-0.309114, -0.877138}, {-0.805692, 0.319938}, {0.980487, 0.415193}, {0.086533, -0.000662}, {0.083456, 0.469788}, {2.350354, 0.199267}, {-1.117492, 1.031942}, {-1.874684, -1.438324}, {-1.506923, -0.254100}, {-0.442244, -0.212173}, {0.622220, 0.078493}, {0.442782, 0.738116}, {0.382808, 1.370781}, {-0.572913, -0.327280}, {0.033002, -1.591756}, {-1.011466, -0.707980}, {-0.540779, -0.501728}, {-0.430794, -0.139464}, {0.953393, -0.835771}, {-0.569549, -1.511300}, {-1.023529, -1.226598}, {-0.030465, 0.795517}, {-0.123311, -0.051937}, {-0.428708, -0.079562}, {-1.177091, 0.332774}, {-1.004645, -0.843150}, {-0.038739, 1.507680}, {0.090651, 0.221051}, {0.109970, 0.073002}, {1.310602, 0.693833}, {0.072228, 1.417407}, {-0.104879, 0.467846}, {-1.441396, 0.816322}, {-0.151793, 0.678658}, {-0.096420, 0.855195}, {0.430901, 1.154121}, {-0.250084, -0.013302}, {0.587835, 0.733677}, {0.477520, -0.424982}, {-0.504096, -1.402798}, {-1.013512, 0.267668}, {-0.363026, -0.005476}, {-0.718136, -0.118798}, {-0.446816, -0.602576}, {-0.797358, -0.024473}, {0.633098, 0.624564}, {0.021270, 1.205089}, {0.266963, 1.498017}, {-0.508527, 0.054780}, {-0.043710, 0.286613}, {-0.142768, 0.551359}, {0.220664, -1.355083}, {0.521431, -0.476980}, {0.141075, 0.083285}, {-0.059602, -0.756118}, {-0.451512, -0.258693}, {-0.730176, 1.521289}, {-1.362482, 0.104512}, {0.270994, 0.327411}, {-0.363492, -0.868879}, {0.672515, -0.270446}, {-1.342101, 0.237073}, {0.508772, -0.377732}, {-0.713798, -0.466147}, {0.368961, 0.592551}, {0.299261, 2.116040}, {-0.672263, -0.279814}, {-1.007523, 1.276007}, {0.227684, -0.462034}, {0.387360, -0.328996}, {0.352344, 0.109850}, {-0.554321, -0.079454}, {-1.105078, 0.393291}, {1.734659, 0.308959}, {-0.308866, 0.349966}, {-0.493334, 1.891041}, {0.107295, -0.199193}, {0.015633, 1.669639}, {-0.192819, 0.360563}, {1.300187, 0.043971}, {-0.195297, -0.619241}, {-0.120101, -1.056832}, {-0.447948, -0.495157}, {-0.326704, -0.483233}, {-1.035520, 1.157850}, {-0.498165, 1.806892}, {-0.145448, 0.642467}, {-0.405584, 1.352826}, {-0.421562, 0.606142}, {0.294387, 1.309778}, {-0.154054, 0.079388}, {0.536240, 0.173272}, {-0.024006, 1.108828}, {0.874482, -1.013605}, {0.377186, -0.667107}, {1.113183, 0.945097}, {-0.623475, -0.893737}, {-0.192779, -1.241070}, {0.632202, 0.599329}, {-0.998820, -0.803084}, {1.383370, 0.376201}, {-0.083581, 0.942494}, {-0.173566, -0.198364}, {0.074235, -0.314876}, {-0.556586, 0.347212}, {0.490005, 0.416503}, {0.331992, -0.555958}, {-0.691485, -0.331265}, {-0.796966, -0.358733}, {-0.252577, 0.543161}, {-0.861375, 0.772953}, {0.133135, 1.007422}, {0.110358, -0.029927}, {-1.330897, 0.730045}, {0.393907, 0.863772}, {-0.741439, 0.432644}, {0.576414, -1.086511}, {-0.053779, 1.091841}, {0.727738, -0.274889}, {-0.147372, 0.359935}, {-1.596102, 0.038969}, {0.002325, -0.748844}, {1.142039, -0.398003}, {-0.334125, -0.639994}, {0.207807, 0.496680}, {-0.364096, -0.594810}, {1.762264, 0.531826}, {-0.749354, 0.980400}, {-1.280578, 1.031222}, {0.206510, 0.566433}, {-0.682051, -0.394535}, {-0.551294, 1.174139}, {0.313715, -1.149243}, {0.656347, 0.386459}, {0.735878, 0.178740}, {-0.293578, -0.287406}, {-0.179112, -0.387732}, {0.213178, -0.962025}, {-0.344776, -0.181182}, {0.641578, -0.406269}, {-1.401786, -0.171097}, {0.286238, -0.125231}, {0.252492, -0.547389}, {0.120026, 0.720419}, {1.337138, 0.195949}, {-0.660370, 0.703330}, {0.092159, -0.695855}, {-0.620594, 0.229351}, {1.055181, 0.111751}, {1.006880, 0.293700}, {-0.093249, 0.555442}, {-0.399694, 0.811308}, {-1.684486, -0.633970}, {0.080918, 0.511860}, {-0.439946, 0.019865}, {-0.390984, -1.044203}, {-0.685936, -1.231559}, {-0.204744, -0.679722}, {-0.859863, 0.460715}, {-0.246945, 0.401049}, {0.193542, 1.129638}, {-0.255188, 0.214659}, {0.484590, -0.289803}, {0.830376, -1.338483}, {-0.649905, -0.117391}, {-0.796076, -0.304220}, {0.353714, 0.110796}, {1.064357, 0.203116}, {0.772181, 0.613989}, {-0.595196, 0.130421}, {0.714852, -0.201961}, {-0.246157, 1.317799}, {-0.188331, 1.819959}, {-0.255805, -0.742062}, {-0.138330, -0.228130}, {0.447635, 0.068326}, {0.167371, 0.023899}, {0.541047, -0.398183}, {1.279247, -0.892511}, {0.970960, -0.571617}, {0.064149, -0.440132}, {-0.091864, 0.479401}, {-0.178907, -0.263349}, {-0.460228, 0.072292}, {-0.022178, 0.024037}, {0.042415, 0.943316}, {-0.639441, 0.125048}, {0.773008, 1.096997}, {0.127606, 0.363171}, {0.870742, -0.533857}, {-0.763648, 0.812840}, {0.461366, 0.041432}, {-0.006986, -0.606103}, {0.535399, 0.207011}, {-0.584722, -1.519249}, {0.121278, -0.207252}, {1.085226, -0.059229}, {0.129751, 0.594549}, {-0.110785, 1.298075}, {-0.828154, 0.282231}, {0.357325, 0.161702}, {-0.286592, 0.378964}, {0.132628, 0.276829}, {-0.793980, 1.023088}, {-0.957162, 0.460617}, {-0.032594, -0.412238}, {0.060784, 0.629413}, {1.100209, 0.447011}, {-0.198523, 0.062691}, {-0.709541, 0.204258}, {0.020197, -1.320956}, {-0.215897, -1.623511}, {0.748680, 0.160824}, {-0.504640, 0.232847}, {-0.269767, -0.738709}, {0.392299, 0.153438}, {0.160576, -0.386143}, {0.357881, 0.613915}, {-1.268598, -0.067517}, {-0.666996, 0.396000}, {-0.761129, -1.835104}, {-0.128240, 0.064241}, {-0.200634, -0.545752}, {0.111993, 0.186523}, {-0.162610, -0.333088}, {-0.548141, 0.520658}, {0.016143, -0.863869}, {-0.569927, 1.339376}, {0.616225, -0.058848}, {-0.664092, -0.932852}, {-0.309768, -0.158927}, {0.459254, 1.205541}, {-0.809099, -0.795062}, {-0.182439, -0.025138}, {-0.916346, -0.341971}, {0.829546, -0.066365}, {0.855095, -0.587404}, {-0.275741, 1.185855}, {-0.816888, 0.228774}, {-1.253625, -0.671337}, {-0.336773, -0.885292}, {-1.419712, 0.386946}, {0.256469, -0.112479}, {-0.195782, 0.897473}, {-0.448164, 0.230629}, {-0.137292, -0.954298}, {0.044064, -1.420896}, {0.346739, -0.728567}, {-0.486216, 0.932718}, {-0.234357, -0.424851}, {-0.893944, -1.580683}, {0.224420, -0.109758}, {-0.525390, -0.659896}, {-0.082822, -1.111491}, {-0.027127, 0.600399}, {0.417077, -0.941458}, {-0.672273, -0.776712}, {-0.375658, -0.673124}, {-0.128259, 0.669274}, {0.274039, -0.162639}, {0.531405, 0.328816}, {-0.173541, -0.344658}, {0.109632, -0.652172}, {0.745372, -0.988494}, {0.323987, 0.395099}, {-0.220000, -0.137398}, {0.004579, -0.872426}, {0.251476, -0.625225}, {1.333603, -0.551770}, {0.081311, -0.544503}, {0.326594, -0.007595}, {-0.823281, 1.430717}, {0.572531, 0.791617}, {0.063804, -0.438730}, {-0.804912, -0.338880}, {0.533428, -0.017895}, {-2.355835, -0.084042}, {-0.020945, 0.576270}, {-1.338558, 0.102208}, {-1.341976, 0.904601}, {0.494760, 0.485739}, {-0.067460, 2.005861}, {-0.249791, 0.460139}, {0.735361, 0.697345}, {-0.007071, -0.683978}, {0.116523, -0.146979}, {0.082917, -0.544381}, {-0.183656, -0.015491}, {-0.125475, 0.097676}, {0.216174, 0.367420}, {-0.825492, 0.033576}, {0.392395, 0.018111}, {-1.196534, -0.398387}, {0.858381, -0.236375}, {0.427010, -0.140906}, {0.549912, 1.102720}, {0.013097, -0.589424}, {-0.486318, -0.182311}, {0.597453, 0.811553}, {-0.394496, 0.945556}, {0.194762, -0.392322}, {-0.245420, -1.255616}, {0.591577, -0.107335}, {-0.065784, -1.591483}, {-0.463762, -0.160668}, {-0.789821, -0.048679}, {-0.275537, 0.448439}, {1.110561, 1.009790}, {0.527317, -1.005654}, {1.115740, -0.604145}, {-0.557221, 1.170167}, {0.014607, -0.908701}, {0.869524, -0.104916}, {0.670785, -0.073642}, {0.275557, -0.344125}, {-0.677464, 0.205771}, {1.468200, -2.040479}, {-0.644867, -0.260612}, {-0.885294, -0.600743}, {-1.083463, 0.305217}, {0.192783, 0.054288}, {-1.442832, -0.464161}, {-0.430593, 0.193934}, {1.037362, -0.157372}, {0.396271, 0.148627}, {-0.590031, -0.536029}, {-0.903929, -0.929530}, {0.502786, -0.088813}, {0.556812, 0.044700}, {0.140136, -0.196190}, {0.247448, -0.454580}, {0.858752, 0.511401}, {-0.226488, -0.387412}, {-0.588826, 0.225291}, {0.122682, -0.776759}, {-0.494520, 0.407446}, {-0.991127, 0.502398}, {0.655983, -0.129177}, {-1.425441, -0.191821}, {-1.341352, 0.064542}, {-1.072479, 1.113384}, {0.041286, 2.051621}, {-0.242983, 0.516347}, {-0.237060, -1.113874}, {-0.023272, 1.377334}, {-1.899043, 0.594030}, {0.467479, 1.264261}, {0.663846, -0.112813}, {0.692125, -0.625121}, {-0.298478, -0.083012}, {-0.964078, -0.081148}, {-0.470905, 0.411913}, {1.474979, -0.154895}, {0.661302, -0.012302}, {-0.965442, 0.514810}, {0.318276, 0.457882}, {-0.542257, -1.222535}, {0.062860, 0.023413}, {0.085049, 1.158655}, {1.247453, -0.154635}, {0.178202, 0.204762}, {0.844883, 0.791503}, {0.233726, -0.984440}, {0.164056, 0.642663}, {-0.322448, 0.327553}, {-0.126490, 0.319918}, {-0.158159, -1.372744}, {1.298184, -0.764151}, {0.018998, 0.522201}, {-0.962200, 0.169821}, {-0.176380, 1.186852}, {-0.034894, 0.510674}, {0.098506, -0.900306}, {0.336179, -0.133751}, {0.337938, 0.195812}, {0.012498, 0.889530}, {-0.625594, -0.298426}, {0.694907, 0.251068}, {-0.113195, 0.672439}, {-0.753666, 0.051040}, {0.141270, 0.049792}, {-0.067074, 0.245343}, {-1.587448, -1.120145}, {0.136902, 0.397052}, {0.012719, 0.888125}, {-0.899053, -0.232361}, {-0.572945, 0.118157}, {0.689248, -0.024022}, {-0.369033, 1.314103}, {1.171046, -0.441653}, {0.148432, 0.000953}, {0.474619, 1.318479}, {-0.789100, -0.189436}, {1.168206, -0.870973}, {-0.471363, 0.375174}, {0.506161, -0.536559}, {1.423200, 0.042084}, {-0.929433, -1.633785}, {-1.295439, 0.135491}, {-1.538034, -0.008372}, {-1.271645, -1.051796}, {0.554905, -0.373024}, {-0.643509, -0.327706}, {-0.419714, 1.107479}, {0.466287, -0.239969}, {-0.653212, 0.139871}, {-1.451830, -0.344354}, {-0.907859, -0.216021}, {0.944616, 0.366605}, {0.059977, 0.109431}, {1.031953, -1.164485}, {0.449597, -2.254492}, {-0.703591, -0.293462}, {0.705176, 0.000026}, {0.129751, -0.129761}, {-0.500724, 0.070967}, {0.708266, -0.279742}, {0.057621, -0.165775}, {-0.918908, 0.311085}, {0.103258, 0.736145}, {0.327648, 0.004814}, {-0.462488, -1.311553}, {-0.800705, -0.250875}, {0.725654, -0.503263}, {0.070847, 0.104229}, {-0.617014, -0.723182}, {-1.389549, -0.393330}, {0.968007, -0.009708}, {0.139527, 1.299372}, {0.248082, 0.601290}, {0.953040, -0.996260}, {1.309783, -1.016336}, {-0.934166, 0.729653}, {-0.388471, 0.682112}, {-0.240315, 0.888481}, {-1.098614, -0.034184}, {-0.421662, -0.755789}, {0.307964, 0.867011}, {0.444477, 0.930219}, {1.603805, -0.402639}, {-0.089754, 1.413485}, {0.230484, 0.488389}, {0.354216, 0.348765}, {-0.322557, -0.563235}, {-0.185066, 0.795538}, {-0.550469, 0.168640}, {-0.331680, -0.810292}, {-0.678005, -0.138885}, {0.888325, 0.259799}, {-0.261157, 1.314246}, {-0.724085, 0.698159}, {-0.487339, 0.343089}, {0.256545, 0.306148}, {1.087370, 1.360731}, {0.909221, 0.906951}, {0.840193, 0.271044}, {-0.449186, -0.712406}, {-0.100897, -0.905420}, {-1.281902, -0.335234}, {0.740303, 0.011500}, {0.899467, -0.124748}, {0.536766, -0.366208}, {-0.643354, 0.691747}, {-0.261056, -0.256182}, {0.272516, -0.258403}, {0.631447, -0.167719}, {-0.196437, -0.052842}, {1.508024, -0.936465}, {-0.180365, -1.378710}, {-0.249668, 0.002152}, {1.598053, 1.741993}, {-1.056432, 0.117693}, {0.515300, 1.069078}, {-0.212007, -1.048830}, {0.335613, 0.489364}, {-0.796184, -1.069425}, {0.083158, 0.697802}, {-1.235153, -0.772422}, {-0.357202, -0.012821}, {-0.593893, -1.181373}, {0.050524, -0.401930}, {0.074720, 0.364095}, {-0.079716, -1.693522}, {0.100870, -0.312204}, {0.947544, 0.242623}, {-0.643159, -0.717020}, {0.224527, 0.733617}, {0.216476, 1.876947}, {0.332304, -0.401619}, {1.189563, -1.382521}, {0.908890, -0.674780}, {0.437119, -0.298161}, {-0.058059, -0.200793}, {0.362838, 0.619364}, {0.117785, 0.015330}, {-1.151039, -0.121108}, {-0.542608, 0.263258}, {-0.605341, 1.175677}, {-0.526847, 0.683678}, {-0.003684, -0.546691}, {0.101077, -0.028945}, {-0.699619, 0.028653}, {-0.287565, 0.909150}, {-0.003493, 0.475101}, {0.110908, -0.450847}, {0.822169, -0.268593}, {-1.331173, 0.303365}, {0.354079, 1.195309}, {1.074010, -0.113039}, {1.358327, 0.349989}, {0.328412, 0.126190}, {0.251235, 0.427830}, {-0.681032, -0.654465}, {0.947471, -0.314890}, {-0.506438, 0.044035}, {0.437633, -0.586149}, {0.108011, 0.609608}, {-0.313954, 0.566877}, {-0.057536, -1.682225}, {0.588066, 0.182714}, {1.063758, -0.640294}, {0.843978, -0.415465}, {1.201541, 1.527708}, {-0.299630, -0.584595}, {0.591297, 0.504796}, {-0.056764, -0.947796}, {-0.517348, -0.289759}, {-0.288464, 0.617447}, {0.348633, -1.043987}, {0.054553, -0.520532}, {-0.090965, -0.147650}, {0.086384, -0.577068}, {-0.102547, -1.253433}, {0.635189, 0.519118}, {-0.720591, -1.495902}, {0.080849, 0.205010}, {0.751958, -0.190846}, {-0.538937, -0.320929}, {-0.612417, 0.554560}, {-0.851261, 0.869392}, {1.198195, -0.529736}, {0.057548, -0.579206}, {-1.025654, -0.151350}, {0.303841, -0.211254}, {0.446343, -1.552067}, {0.315397, -0.808794}, {-0.063785, 0.774825}, {0.783816, -0.157279}, {-0.693511, 0.332481}, {-0.234900, 0.528764}, {0.596556, 0.333542}, {1.373749, -0.817280}, {-0.295436, -0.145692}, {0.006813, 0.157722}, {0.516578, -0.790212}, {0.478924, -0.959898}, {0.370258, 0.489034}, {0.713319, -0.586588}, {0.332856, 0.078227}, {-0.425185, -0.677807}, {-0.149519, 0.199877}, {1.263811, -0.509766}, {0.233085, -0.479083}, {0.856984, 0.232124}, {-0.398816, 0.118417}, {0.725782, 0.573860}, {-0.423177, -0.195038}, {0.479589, -0.152071}, {-0.606474, 1.399722}, {-2.041557, 0.729519}, {-0.617790, -0.668932}, {0.137657, -1.422402}, {-0.786831, -0.619224}, {-0.149759, -0.165667}, {0.190154, 0.929670}, {-0.287768, 1.169585}, {1.061637, 0.067450}, {-0.140288, -0.424489}, {0.785589, -0.241400}, {-0.992917, 0.456275}, {0.543095, -0.526169}, {0.262447, 0.354750}, {0.115837, -1.383394}, {-0.765803, -0.645191}, {0.382408, -0.004403}, {0.124288, -0.280736}, {1.156532, 0.881587}, {1.088618, 0.321389}, {-2.279889, -0.488846}, {-1.135730, 0.591114}, {-1.093988, -0.708227}, {-0.153356, 0.947910}, {0.191071, -0.367728}, {0.332287, 0.126137}, {-0.150579, -0.128056}, {-0.515071, 1.279206}, {-0.471647, 0.450751}, {-0.177599, 0.084528}, {0.405248, -1.192993}, {-1.199598, -1.871218}, {-1.009935, 0.125214}, {0.860742, -0.062698}, {-0.657040, -1.041627}, {0.026116, -0.059837}, {-1.346135, 1.113968}, {-0.624805, 0.301187}, {0.274945, 0.937253}, {0.478006, 0.733921}, {-0.612665, -0.715399}, {-0.016013, 0.268927}, {0.319591, 0.208865}, {1.344190, -0.216045}, {0.130151, 1.142744}, {0.172902, -0.626551}, {-1.349281, -0.008253}, {0.621623, 0.463895}, {0.184316, 0.698054}, {-0.585348, -1.744754}, {0.109077, 0.127077}, {0.216486, 0.290303}, {0.785660, 0.927775}, {0.384514, -0.692532}, {0.727702, -0.034449}, {-0.057908, 0.127263}, {0.271526, 0.524594}, {-0.858654, -0.086733}, {0.464001, 0.064140}, {0.227926, 1.431933}, {0.138844, 0.005704}, {0.141627, -0.127211}, {-1.003825, 0.034579}, {-0.388278, 0.179387}, {0.158985, 0.905558}, {-1.242335, 0.519667}, {-0.047141, 0.947802}, {0.336262, -1.612058}, {0.614542, -0.464413}, {0.982166, -1.628173}, {-0.870128, -0.651271}, {0.486409, 0.436105}, {0.108930, 1.638884}, {-0.021817, -0.425794}, {0.039699, -0.387185}, {-1.225415, -0.377385}, {0.391090, -0.505627}, {0.651504, -0.883661}, {-0.276837, 0.691315}, {0.383239, 0.054891}, {0.297223, -0.197196}, {1.388005, -0.270560}, {-1.400360, 0.278525}, {-2.093290, 0.098416}, {0.610011, 1.401331}, {-0.945061, -0.541204}, {0.412258, -1.330328}, {0.173694, -1.109422}, {-0.159121, -1.744757}, {0.285345, 1.096001}, {0.128427, -0.244146}, {0.067905, -0.156659}, {-1.018499, -0.578789}, {0.505971, 0.765807}, {1.015914, 0.376986}, {0.790707, -1.646495}, {0.487164, -0.607104}, {-0.697297, -0.367804}, {-0.565402, 0.674289}, {1.188518, 0.712744}, {-0.592933, -0.373505}, {-0.203660, 1.226443}, {-0.098045, -0.097690}, {0.433178, -1.020054}, {-0.430052, -0.776739}, {0.324026, -0.937248}, {0.701878, -0.493328}, {0.230826, 0.826293}, {0.004731, 0.068967}, {-0.498959, 0.400514}, {-0.513084, -1.025155}, {0.421206, -1.417798}, {-0.981820, -0.435834}, {0.506125, 0.020348}, {-0.235266, -0.135010}, {0.838326, -0.650392}, {-0.396983, -0.682428}, {0.182128, 0.408830}, {0.727117, -0.622519}, {-0.068542, 0.310867}, {0.442916, 0.767343}, {0.044007, -1.159112}, {0.493622, -0.162111}, {0.380900, -1.503298}, {0.423037, 0.548507}, {-1.568571, 0.528272}, {0.547764, -0.029898}, {-0.356876, 0.578955}, {0.515241, 0.565923}, {0.167784, 1.612647}, {0.169705, 0.087695}, {1.177100, 0.004351}, {-0.689952, 0.053029}, {0.154453, 1.419159}, {-0.546385, 1.058132}, {0.021626, -0.754253}, {0.741607, -0.361204}, {-0.057849, 0.999592}, {-0.015000, 1.519017}, {-0.384562, 0.938159}, {1.000041, 1.295279}, {-1.069485, -0.177887}, {-0.656125, -0.402525}, {-0.338546, 0.308619}, {-0.201887, 0.631236}, {-0.576348, -1.438422}, {0.094374, -0.332953}, {1.717504, 0.411315}, {-0.139432, 0.242414}, {1.030451, -0.541582}, {-0.132491, 0.928665}, {-0.929343, 0.330223}, {0.212063, -0.999967}, {-1.546734, 1.473279}, {0.895231, -0.122118}, {-0.024873, 0.397475}, {-0.471758, 0.171216}, {-0.384773, 0.411799}, {1.604132, 0.192566}, {-0.352284, -1.692873}, {-0.127207, -0.166561}, {-0.087210, -0.289254}, {0.069733, 0.733600}, {-0.481091, -0.748068}, {0.025913, -0.282440}, {0.385995, -0.269872}, {0.807898, 0.547847}, {0.920522, -0.253019}, {0.590344, 0.287209}, {-0.264166, -1.420356}, {0.741891, -0.453230}, {-0.005511, -0.334318}, {0.584215, -0.105380}, {1.235921, 0.737084}, {0.073373, 0.196251}, {0.050188, 0.318437}, {0.326590, 0.608379}, {-0.322564, 0.284616}, {-0.646108, -0.359319}, {0.322070, 0.143369}, {-0.863728, -0.775195}, {0.831176, 0.342701}, {0.032958, -0.098237}, {0.571168, -0.012336}, {0.182689, 0.790901}, {-0.425154, -0.855671}, {-0.898454, 0.187687}, {-0.526788, 0.506000}, {0.653615, 0.022943}, {-0.027712, 0.795147}, {-0.439436, 0.442340}, {0.706258, -1.337857}, {0.478575, 0.834826}, {-1.198496, -0.435258}, {-0.626551, -0.689605}, {0.463850, -1.046754}, {0.616860, 0.015892}, {-0.036480, -0.180819}, {-0.850951, 0.360575}, {-0.778725, 0.021580}, {-0.003573, 0.011854}, {0.901575, 1.139995}, {-1.397778, -0.965160}, {0.828026, -0.382807}, {-0.014620, 0.930159}, {-1.300195, -0.110779}, {0.749689, 0.981340}, {0.030482, 0.848674}, {0.187375, -0.097744}, {0.209488, -0.196027}, {0.347616, -0.395632}, {0.329045, 0.511381}, {1.124516, -0.961421}, {-0.221487, -0.120998}, {-1.498910, 1.138313}, {-0.900081, 0.195057}, {0.353490, -0.370964}, {0.461766, -0.958569}, {-0.156196, -1.009013}, {-0.303470, 0.211825}, {0.970393, 0.376784}, {0.495209, 0.940894}, {-0.760660, -0.732722}, {-0.277112, -0.555909}, {0.336774, -0.081721}, {-0.764784, 1.256559}, {0.729786, 0.187455}, {-1.516521, -0.580250}, {-0.060807, 1.773198}, {0.384536, -0.806667}, {-0.704657, -0.622280}, {-0.801176, 0.052175}, {-0.590213, 1.990490}, {-0.177006, -0.136596}, {-0.043811, -1.299593}, {-0.581471, 0.077527}, {0.234488, -0.891170}, {-0.346771, 1.199070}, {0.082643, 1.293400}, {0.936822, 0.025082}, {-0.731120, -0.476702}, {-0.934721, -0.022417}, {0.222389, 0.501521}, {-0.120435, 0.461318}, {-0.065142, 0.306212}, {0.295570, -0.442311}, {0.993401, 0.404579}, {-0.453363, 0.509552}, {0.282236, 0.306297}, {-0.536249, -0.901250}, {-0.425114, 0.194843}, {-0.519253, 1.853919}, {-0.710138, 0.608713}, {0.021883, -0.406892}, {-0.119297, 1.104563}, {-1.009286, 0.692377}, {-1.312874, 0.446078}, {0.820048, 0.144155}, {0.594350, -0.518111}, {0.445168, -0.296112}, {0.528797, 0.275437}, {-0.975129, 1.054113}, {-0.141110, -0.278283}, {-1.108218, 0.758768}, {-0.720411, 0.105147}, {0.012397, 0.377536}, {-0.600491, -0.143086}, {-0.953860, -0.409408}, {0.207974, -0.533590}, {0.505393, -0.929868}, {0.693728, -0.168896}, {1.295575, 0.330245}, {0.197670, -0.003298}, {-0.644899, -0.599500}, {0.369732, -0.579213}, {-0.403831, -1.208236}, {0.102628, 0.417057}, {0.225578, 1.013419}, {-0.251294, -0.004769}, {0.889491, 1.815880}, {-1.038993, 0.521891}, {0.764166, -0.213457}, {-0.562020, -1.509213}, {0.211293, -0.936981}, {-0.463538, 1.090030}, {-0.553620, -0.791400}, {0.611880, -0.306484}, {0.044468, -0.166676}, {-0.023328, -1.778915}, {-0.214294, -0.414020}, {-0.756939, -1.513298}, {0.250125, -0.882986}, {1.120913, -0.169637}, {0.645831, -0.162204}, {1.177705, -0.888318}, {0.363945, -0.029949}, {0.402238, -0.546777}, {-0.094455, -0.101378}, {0.164174, 0.060548}, {-0.169991, -1.176339}, {-0.374419, -0.123020}, {-0.914397, -0.405280}, {-0.853371, -0.380429}, {1.609595, 1.394657}, {0.488861, 0.494798}, {0.158526, 0.345015}, {0.803121, 0.150331}, {-0.081292, 0.181697}, {0.393064, -0.478711}, {0.279182, 0.092095}, {0.430334, -0.073225}, {0.014806, 0.588098}, {0.913267, 0.970571}, {0.646704, 0.609592}, {0.566444, 0.775254}, {-0.335177, 1.080688}, {0.127562, 1.140199}, {0.165559, -0.264557}, {-1.069915, -0.891586}, {0.507922, -0.743511}, {-0.734341, 1.039713}, {-0.738939, -0.058723}, {0.759593, -1.014583}, {0.555667, -1.733928}, {-1.367914, -1.030299}, {0.188542, -0.418601}, {0.793444, -0.741383}, {-0.040384, 0.198946}, {1.361842, -0.048743}, {-0.225959, 0.500185}, {-0.613758, -0.930241}, {-1.065079, -1.626019}, {-1.661331, 0.447628}, {-1.178209, -1.594785}, {0.385772, 0.687990}, {0.320431, 0.326874}, {-0.209635, 0.241160}, {-0.478316, -0.322029}, {-1.574782, 0.928755}, {-0.150281, 0.335387}, {0.346979, 0.106675}, {-0.979085, -0.448834}, {-0.484871, -0.130679}, {-0.882404, -0.284669}, {-0.135947, 1.428153}, {0.289974, 0.663804}, {-0.832558, -0.786738}, {0.566306, 1.650858}, {-0.618622, -0.104784}, {-0.597685, -0.212515}, {1.865293, 1.206891}, {0.617878, -0.378103}, {-0.276038, 1.353459}, {0.879395, 0.084117}, {-0.648554, -0.500746}, {0.603251, -0.759062}, {-1.056790, 0.769620}, {0.451470, -0.190342}, {1.668428, -1.349133}, {-0.399983, -1.187873}, {-0.876715, 0.206248}, {0.800569, -0.255028}, {0.108497, 1.535395}, {-0.321630, 0.307984}, {-0.010085, -1.543582}, {0.733422, -0.807197}, {-0.527735, 0.361278}, {0.546397, -0.913698}, {0.386942, -0.026931}, {-0.683948, 1.644054}, {-0.713074, -0.760496}, {0.729880, 0.611484}, {-0.324111, -0.185442}, {0.513507, 0.655970}, {0.973032, 0.708102}, {0.162839, -1.911128}, {0.171333, 0.442628}, {0.793978, 0.363283}, {0.139764, -0.553196}, {1.477350, 0.571024}, {0.046847, -0.083842}, {0.774276, 0.538647}, {-1.232450, -0.279392}, {0.998783, 0.699271}, {-2.497752, 0.890340}, {-0.686000, -0.489450}, {-0.622210, 0.728997}, {-0.896078, -0.269973}, {0.254307, 0.947307}, {1.029120, 0.030115}, {-0.457637, 0.586413}, {-0.570341, 0.796948}, {-0.326200, 0.703162}, {0.718013, -0.641897}, {-0.347796, -0.117920}, {0.980266, -0.427121}, {0.715130, 0.436598}, {-0.354809, -0.981161}, {0.609447, 0.117866}, {-1.117899, 1.185150}, {-0.070233, 0.421426}, {0.362961, -0.220281}, {0.091918, -0.947668}, {-0.918369, 0.893874}, {1.165251, 0.420864}, {1.432566, -0.178810}, {-0.356868, -0.188257}, {-0.815491, -0.404427}, {-1.070312, -1.216305}, {-0.318984, -0.583511}, {1.848678, 0.453940}, {-0.708129, 0.177312}, {-0.893931, 1.710539}, {0.093921, 0.348349}, {1.105949, 0.999284}, {0.967769, -0.721817}, {0.937282, 0.156570}, {1.436906, 1.511836}, {0.508619, -0.010131}, {-0.069583, -0.309253}, {0.108287, 0.135978}, {-0.739620, -0.139477}, {-0.651608, 1.778285}, {0.027295, -0.276027}, {0.751467, 0.405693}, {-0.350001, 1.687277}, {0.358628, -0.135793}, {1.669210, -0.094304}, {0.563354, 0.389800}, {-0.248111, -0.198466}, {0.074279, -0.311566}, {0.205118, -0.722409}, {0.284728, 0.431713}, {-0.299721, 0.775480}, {0.288778, 1.204617}, {-2.612038, 1.096907}, {0.138972, 0.125366}, {0.298215, 0.304176}, {-0.193236, 1.529766}, {0.485275, -0.982963}, {0.725341, -0.936405}, {-0.065237, 0.208370}, {0.125534, -0.205573}, {-1.821296, 0.674082}, {-0.275038, 0.327760}, {-0.727191, -1.227306}, {-0.865239, 0.939065}, {-0.803833, 1.620915}, {-0.842433, -1.108209}, {-0.401148, -0.736410}, {-0.115040, -1.629236}, {-2.049102, -0.888722}, {0.563586, -1.881832}, {0.500135, 0.870559}, {-0.623029, -1.087557}, {0.560799, -0.777685}, {-0.023666, -0.920057}, {0.514122, -0.387123}, {0.330311, -0.267867}, {0.141501, -0.770913}, {0.895122, 1.295559}, {0.235886, -0.142025}, {-1.600266, 1.392146}, {0.062394, -0.199017}, {0.105093, 0.847228}, {-0.004692, -0.611023}, {-1.105202, -0.676440}, {-0.803199, 0.080607}, {1.068037, -1.432548}, {-0.073955, 0.534296}, {-1.544967, -0.292418}, {-0.018596, 0.600587}, {0.693918, 0.111383}, {0.875333, 0.538827}, {0.810163, 0.603066}, {-0.991128, 0.633334}, {1.410649, -0.273373}, {-1.402586, 0.048299}, {-0.476167, -0.040214}, {1.133741, 0.893093}, {-1.976746, 0.495152}, {-0.762297, -0.434453}, {-0.407391, 0.458918}, {0.081289, -0.693117}, {-0.901769, -0.566278}, {0.294244, 0.018293}, {-1.778410, 0.169995}, {-0.065897, -0.565356}, {-0.067741, -0.386928}, {-0.042227, -0.470778}, {-0.724262, -0.448146}, {0.799391, -0.353504}, {0.736085, -0.189575}, {-0.170609, -0.001362}, {-0.876784, -0.416884}, {-1.194944, -1.159666}, {0.378294, -0.050373}, {2.029991, 0.034750}, {0.488729, 0.272216}, {0.100163, 0.084453}, {0.619746, 0.787200}, {1.516011, 0.190597}, {0.242183, -0.282804}, {1.348479, 0.195434}, {1.574083, 0.044098}, {-1.648078, 0.005385}, {-0.240798, 0.327597}, {-0.072394, -0.742375}, {-0.357626, -0.537052}, {-1.019427, -1.502025}, {0.265137, 1.275985}, {-1.408237, 0.487417}, {0.488564, 0.094077}, {0.538473, 0.089383}, {0.822984, -0.041699}, {0.446649, 0.965423}, {0.425275, 0.258184}, {0.293588, -0.009747}, {-1.901312, 0.094518}, {0.055270, 0.104028}, {0.717610, -0.083141}, {-1.028907, 0.529666}, {0.276336, -1.707147}, {0.518490, 0.271655}, {-0.157786, -0.735939}, {-0.642959, 0.105473}, {-0.194654, 0.744489}, {1.057427, 0.578372}, {-0.078556, 0.535382}, {0.275007, 0.425924}, {-1.493477, 0.323239}, {0.384662, -0.732389}, {-0.458062, -0.246727}, {-0.009941, -0.256232}, {-0.431288, 0.694332}, {1.237922, -0.196164}, {0.049717, -0.417202}, {-0.828197, 0.209999}, {-1.328594, -0.698908}, {0.817510, 1.298454}, {0.021412, -0.376025}, {0.656062, -0.479696}, {0.739794, -0.697219}, {0.359927, 0.330324}, {0.490626, -1.394430}, {0.003006, -0.052538}, {0.188833, 0.728305}, {-1.187172, 0.758908}, {-0.519732, -1.148840}, {-0.411235, -1.217214}, {0.955021, -0.430176}, {-0.523480, -0.587903}, {-1.227340, 0.033012}, {0.122805, -0.649916}, {0.990446, -0.160799}, {0.217109, 0.439570}, {0.197974, -0.855599}, {-1.016884, -0.834066}, {-0.685161, 0.797699}, {0.718871, 0.735908}, {-2.084638, -0.653982}, {0.229928, 0.252590}, {0.876971, -1.135835}, {0.208727, -1.096199}, {0.189714, 0.324005}, {0.559235, 0.891645}, {-0.337588, 1.226503}, {-0.633028, 1.304579}, {0.352611, 0.118112}, {0.755508, -1.202909}, {-0.368064, 0.379022}, {0.187482, 0.040502}, {-0.489215, -0.316624}, {-0.148897, 1.794500}, {0.617933, 0.380534}, {0.724284, 0.929908}, {-0.101068, 0.829591}, {0.239707, 0.830689}, {1.419880, -0.703233}, {0.428630, -0.738185}, {0.188227, -0.067175}, {0.848946, -0.139604}, {1.358890, -0.759908}, {-0.598246, -1.356423}, {0.708571, -0.747022}, {-1.307309, -1.158771}, {1.114919, 0.003653}, {0.247448, 0.759891}, {0.629880, -0.013493}, {0.581883, -0.841438}, {-0.348783, 0.559365}, {0.553004, 0.045767}, {-0.689707, 0.334441}, {0.783204, 0.262356}, {1.422351, -0.205031}, {2.033491, 0.619792}, {-0.663187, -0.541048}, {0.546304, 0.061896}, {0.954720, 1.149216}, {-0.559310, 0.175198}, {1.274649, 1.348253}, {-0.247850, -0.207347}, {1.742038, 1.103291}, {0.043844, -0.424239}, {0.614981, -0.080676}, {-0.517806, 1.025811}, {0.801125, -0.606164}, {0.473503, 0.520220}, {-0.308974, 0.331494}, {-1.295514, -0.646832}, {-0.472990, -0.230161}, {0.174489, -0.366097}, {-0.118363, -0.163279}, {-0.200880, -0.899742}, {0.998390, -0.199202}, {-0.622541, -0.695766}, {0.669754, -0.206478}, {0.106122, 0.549600}, {0.591344, 0.214104}, {0.488377, 0.644834}, {1.136572, 1.169122}, {0.323891, 0.444824}, {-0.562209, -0.060314}, {0.213956, -1.280496}, {-0.321971, -1.103028}, {0.672409, -0.083641}, {0.495207, 0.706465}, {-0.494982, 1.309929}, {0.994709, -0.975631}, {0.059966, -0.007228}, {1.295286, 0.210362}, {-1.155912, 0.093655}, {-0.270843, 0.470326}, {0.756844, 0.345241}, {0.514597, 0.140073}, {-0.621769, 0.148131}, {0.357821, -0.203675}, {-0.273598, -0.884954}, {-0.849266, -0.397208}, {-0.405585, -1.645132}, {-0.010028, -0.355219}, {-0.143243, 0.535060}, {-0.489155, 0.541734}, {-1.917934, 0.442072}, {1.120600, 0.609251}, {-0.806215, -0.431671}, {1.317120, -1.219868}, {0.067240, 1.040216}, {-0.567193, -1.387665}, {0.795042, 0.402961}, {-1.025794, -0.277941}, {0.649983, 1.281336}, {-0.256848, 0.005927}, {0.607023, 0.715590}, {0.540951, -0.424004}, {-0.353391, 1.289066}, {1.755964, -0.674437}, {-0.664991, -0.691634}, {-0.096792, 0.422837}, {-1.167967, 0.555492}, {0.152719, -0.072909}, {0.116643, 0.226822}, {-0.630662, -0.558520}, {0.414169, -0.530572}, {0.717343, -0.343964}, {0.485011, -0.965124}, {0.132872, -1.176696}, {-0.542650, -0.059320}, {-0.771646, -0.399126}, {-0.848580, 0.963529}, {0.186147, 0.262803}, {0.352650, 0.664986}, {0.993840, 0.913475}, {-0.484132, -0.800343}, {0.680518, 0.491133}, {-0.187661, 0.025441}, {-0.647229, 0.234518}, {1.007825, -0.196186}, {0.956857, -1.015468}, {-0.722691, -1.369092}, {0.254518, 0.088674}, {0.029979, -0.009861}, {0.301615, 0.155056}, {0.039314, 0.343316}, {0.145456, 1.183385}, {0.775872, 0.441937}, {-0.305562, -1.261231}, {-0.509677, -1.261546}, {-0.452788, -0.152168}, {-0.024417, 0.566667}, {0.156338, 0.402470}, {0.451700, -0.516105}, {0.517440, 0.675626}, {0.108431, 0.416795}, {-0.764284, -0.532834}, {1.206985, 0.069426}, {-0.932342, 1.046480}, {-0.777393, 0.052027}, {-1.092549, 0.033582}, {0.197445, -0.491148}, {-0.411677, -0.336139}, {-0.037210, -0.926280}, {-0.708483, 0.693739}, {0.664921, -1.385649}, {-1.353380, 1.021171}, {-0.241049, -0.683939}, {-0.029907, 0.167199}, {-1.608903, -0.559216}, {-0.181052, 0.821785}, {1.590072, -1.518116}, {1.057565, -0.689682}, {-1.281043, -0.980591}, {0.304693, -1.080609}, {-0.240484, 0.707799}, {-0.768310, -0.067520}, {0.843861, -0.009503}, {0.807601, -0.431015}, {-0.512754, -0.550360}, {1.284096, -1.260585}, {-0.922574, 0.298207}, {-0.393917, -0.519193}, {0.127912, -0.984685}, {-0.144986, 0.035279}, {0.188536, 0.393360}, {0.259745, -0.309148}, {-0.677779, -0.595934}, {-0.037591, -0.101627}, {-0.309109, 0.365495}, {-0.102452, 1.566645}, {1.387901, -0.195166}, {-0.446879, -0.526524}, {0.997398, -0.882687}, {0.031554, 0.124163}, {-0.931075, 0.093264}, {0.482681, 1.855809}, {-0.010467, 0.925571}, {0.169549, 0.122786}, {-0.090570, -0.028792}, {0.849088, -1.107529}, {0.050598, 0.536702}, {-0.571372, 0.390521}, {0.337937, 0.089426}, {-0.070935, -0.296006}, {-0.543102, -0.683296}, {-0.082528, 1.188412}, {-0.075670, 0.684850}, {0.217929, 0.127319}, {0.244448, 0.690258}, {-0.526178, 0.479326}, {-0.126780, 1.089720}, {0.456035, -0.008824}, {-0.236651, 0.009875}, {-0.671016, -0.961407}, {0.700866, 0.834313}, {-0.049151, 0.411310}, {0.069039, 0.176343}, {1.372698, 0.367522}, {-0.107484, 0.090397}, {-1.242871, 0.580082}, {0.352131, 0.516255}, {-0.409130, -0.283403}, {0.399885, -0.173183}, {-0.911535, -1.057501}, {-0.134356, -0.571363}, {-0.200745, -0.714382}, {0.247331, -1.213185}, {-0.183543, 0.319417}, {-0.359287, -0.789582}, {-0.258945, -0.568476}, {0.371024, -0.265164}, {-0.075029, -1.608623}, {0.082652, 2.076230}, {-1.223628, -1.586630}, {0.405567, 0.823574}, {0.054968, 0.521170}, {-1.478086, 0.062628}, {0.111418, -0.029518}, {-1.266318, 0.854860}, {0.944464, -0.835138}, {0.460958, 0.185149}, {-0.058453, 0.047748}, {0.078237, -0.159788}, {0.734696, 0.268869}, {0.027735, -1.024541}, {0.228605, -1.028311}, {-0.264515, 0.187069}, {0.016598, 0.390539}, {0.080454, 0.084167}, {-0.373853, -0.258455}, {0.496835, -0.132385}, {-1.257065, 0.046987}, {0.335159, 0.020590}, {0.466133, 0.439269}, {0.014981, 1.110095}, {0.785194, 0.155149}, {-0.920996, -0.294657}, {-0.108107, 0.667374}, {-0.074103, 0.487597}, {0.309323, 0.450575}, {1.192132, 0.937428}, {-0.334944, -0.222933}, {0.412831, -1.114841}, {0.239488, -0.354992}, {0.444740, -0.426829}, {-0.133782, 0.466919}, {-0.488809, 0.609075}, {0.312304, -0.261759}, {-0.790404, -0.962166}, {-0.274962, -0.943480}, {-0.063458, 0.313199}, {0.754376, -0.624958}, {0.894785, 0.254635}, {-0.454480, -0.679299}, {-0.017854, -0.594485}, {-0.423178, -0.160964}, {-0.458684, -0.155883}, {-0.663973, 0.506733}, {0.541449, -0.654020}, {0.172654, 0.253066}, {1.021464, -0.901336}, {0.111092, -0.491099}, {0.252050, -0.769468}, {-0.617856, 0.312547}, {-0.409293, -1.120223}, {0.039604, -0.485376}, {-1.493487, 0.335907}, {0.274749, 0.723980}, {-0.203481, -0.723032}, {-0.495656, -0.759281}, {1.456744, -1.628369}, {-0.975111, 0.016837}, {-0.622091, 1.044867}, {-0.434081, -0.462833}, {-0.315109, -0.189411}, {0.081910, -0.831801}, {-0.414067, 0.096517}, {0.024855, -0.006315}, {-0.505820, 0.029401}, {0.677997, -0.561131}, {1.161094, -0.385332}, {0.171413, -1.071286}, {0.796474, 0.125143}, {0.737257, 0.495755}, {-0.760664, 0.609637}, {0.050209, 0.872019}, {-0.779293, -0.049293}, {-0.084521, -0.987525}, {0.836932, 0.679155}, {0.295252, -0.767659}, {-0.018792, 0.419797}, {-1.163658, 0.443970}, {-0.266127, -0.327858}, {0.087685, -1.161947}, {-0.369729, 0.762725}, {0.172665, -0.329469}, {0.330880, 0.749120}, {-0.816435, -0.491657}, {0.111348, -1.505915}, {0.209077, 0.184622}, {-2.342060, -0.110587}, {0.307412, 0.700396}, {0.113512, -0.465633}, {-0.646155, 0.716656}, {-0.638825, -1.478782}, {0.450901, -0.035870}, {0.035266, 1.827315}, {0.737470, -0.119507}, {-0.228202, 0.108246}, {0.825314, 0.200114}, {0.487949, 0.471538}, {-0.357296, 0.391417}, {0.180314, 0.346172}, {0.559934, 0.139351}, {-1.305116, 0.414318}, {0.716210, 0.212909}, {-0.013896, 1.197851}, {-1.824869, -0.867501}, {-0.515474, 0.050329}, {-0.414146, -0.076725}, {0.708817, -1.133978}, {-0.639175, 0.428318}, {1.050038, 0.727185}, {-0.702393, 0.513455}, {0.276582, 0.809652}, {0.077934, 0.198272}, {2.196177, 0.991960}, {-0.440575, -1.385910}, {0.706450, -0.276282}, {-0.391529, 0.375718}, {0.486569, -0.694199}, {-0.074971, -1.160590}, {0.662076, 0.018694}, {0.336811, -0.550141}, {-0.387020, -0.397890}, {-0.096345, 0.269838}, {-0.026117, -0.057475}, {0.158403, -0.187549}, {0.420344, -0.129844}, {0.190663, -0.087482}, {-0.366855, 0.893119}, {-0.249219, 0.316325}, {-0.117221, -0.587177}, {-1.294407, 1.470405}, {0.418475, -0.548199}, {1.001920, -0.042350}, {-0.292716, -0.515533}, {-1.153163, 0.988116}, {-0.289238, -0.720697}, {-0.106232, -1.124727}, {-0.965999, 0.865133}, {-0.401036, 0.078021}, {-1.109930, -0.864017}, {0.297575, 0.865459}, {0.995143, 0.682193}, {-0.599609, -1.702099}, {0.883933, -0.307388}, {0.802376, -0.004978}, {-0.401257, 0.112706}, {0.384942, -1.000741}, {-0.989461, 0.937746}, {0.964376, -0.361083}, {1.014743, -0.689544}, {-1.640868, 0.131432}, {0.631133, -0.101351}, {0.185813, 0.273002}, {-1.225259, -0.530792}, {1.054923, 0.095617}, {-0.207572, 0.807720}, {0.950261, -0.272710}, {-0.842451, 1.027046}, {-0.948909, 0.464619}, {-0.652197, -0.593345}, {0.386114, 0.647057}, {-0.348600, -0.148170}, {0.035874, -0.075556}, {-0.566582, 0.252229}, {-1.150907, 0.142389}, {-0.373560, 0.708924}, {0.179962, 0.177331}, {0.017741, 1.577087}, {-0.489230, -0.574279}, {-0.239784, 0.779613}, {-0.897308, -0.203218}, {0.925241, 0.527958}, {1.036630, 0.416062}, {0.888976, 0.209959}, {0.455977, 0.361892}, {0.395073, 0.243300}, {0.499225, 0.860184}, {1.188627, 0.506501}, {-0.358162, -0.525381}, {1.769127, -0.519498}, {-0.973750, 0.263258}, {0.081556, -0.101205}, {1.293777, 0.240134}, {0.128978, -1.442584}, {0.092528, -0.197125}, {-0.117172, -0.490877}, {-0.946199, -0.606982}, {0.652803, -0.511129}, {0.043937, -0.032281}, {0.284060, 0.005765}, {-0.734968, -1.145450}, {-0.025606, -0.626951}, {-0.375895, 0.717175}, {0.438582, 0.918001}, {0.038609, -1.114450}, {1.118108, 0.106149}, {1.272686, 0.846763}, {0.633646, -0.105666}, {-0.205043, 0.210912}, {-0.334164, -0.085337}, {-0.206717, 0.894467}, {-0.085313, 1.097756}, {-0.399149, -0.100234}, {-0.149590, 0.007444}, {0.494023, -1.223272}, {-1.126557, -0.292829}, {1.506312, -0.733856}, {0.129777, -0.464705}, {-0.430088, 0.615048}, {1.070713, 1.226466}, {-0.500223, -0.890256}, {0.241018, -0.691634}, {-0.425803, -1.598684}, {-0.349414, 0.668187}, {-0.759980, -1.039801}, {0.099818, 0.588593}, {0.661566, -0.452644}, {-0.276551, -0.245314}, {0.062076, 0.738192}, {-0.436350, -1.545334}, {-0.338107, 0.327650}, {-0.671510, -0.169933}, {-0.250838, -0.394788}, {-0.716007, 0.057696}, {0.716020, 0.323465}, {0.287767, -0.496472}, {-1.361017, -1.022037}, {-0.389014, -0.327876}, {0.005581, 0.230345}, {1.057323, 0.344696}, {0.404404, 0.524537}, {0.213022, 1.094306}, {-0.594658, -0.593064}, {-0.748241, 0.800080}, {-0.115638, -0.166546}, {-0.107154, -0.697047}, {-0.458238, -0.452683}, {-0.336989, -0.047009}, {-1.289175, 1.647780}, {0.150375, -0.407781}, {0.597241, -0.547383}, {0.443295, 0.936489}, {0.590847, -0.187656}, {-1.212900, 0.882074}, {0.484389, -0.686777}, {1.149782, -0.194390}, {-1.172668, 0.032417}, {0.260298, -1.012974}, {-0.294107, -1.012750}, {0.801182, 0.633359}, {0.239464, 0.241602}, {-0.881659, -1.163284}, {0.489810, -0.463799}, {0.565567, 0.113305}, {-0.556349, -1.347072}, {-1.062547, -0.931198}, {-0.738569, -0.353611}, {1.317955, -1.099776}, {0.148693, -0.201014}, {0.133189, 0.681195}, {-0.120725, 0.135954}, {0.109002, -0.457197}, {-0.694733, 0.709827}, {0.529587, 0.628810}, {-1.078803, 0.606417}, {-0.135627, 1.108991}, {0.037637, -1.260746}, {-1.080624, 1.191058}, {0.359973, 0.135705}, {0.232936, 0.269440}, {0.002593, -0.783674}, {-0.069699, 1.212021}, {-0.664211, -0.740183}, {0.165729, 0.041761}, {-0.317411, 0.070021}, {-0.172353, -0.428702}, {0.332293, -0.774738}, {-0.917322, -0.820716}, {-0.058246, -0.746256}, {0.477261, -0.232573}, {-0.644001, 0.166028}, {-0.429890, 0.847238}, {-0.056154, -1.187696}, {-0.879377, -0.311314}, {-0.187718, -0.505879}, {0.145068, 0.268477}, {0.344934, -0.459281}, {-0.892009, -0.676237}, {-0.648511, -0.152063}, {0.285463, 0.019339}, {-0.020319, -0.901552}, {-0.937522, 0.163649}, {-0.431348, -0.446665}, {-0.614010, -0.352647}, {0.890186, -0.313942}, {0.187972, 0.408152}, {-0.040763, -0.587026}, {-1.192632, -0.395902}, {-0.089341, 0.188121}, {-1.109439, 0.101585}, {-1.721289, -1.011886}, {-0.451708, 0.401072}, {-0.878256, -0.235344}, {0.572753, -0.329785}, {-1.136417, 1.039607}, {-0.433782, -0.120676}, {0.567816, 0.084631}, {0.546969, -0.179829}, {0.225644, -0.412318}, {0.171741, 0.816235}, {-1.141608, -0.629613}, {-0.537893, -0.566981}, {0.734572, 1.390754}, {0.099797, -0.210714}, {-0.603835, -0.911116}, {-0.919496, 0.154357}, {-0.200722, -0.585775}, {0.721968, 0.331313}, {0.561601, 0.473508}, {0.550664, -0.258516}, {-0.237893, 0.651197}, {-0.756266, 0.166779}, {-0.705900, 0.481691}, {-0.006736, 0.003238}, {0.955769, 0.739538}, {-1.102150, -2.203276}, {-0.152229, -0.119703}, {-0.498020, 0.338978}, {1.435975, 0.240195}, {0.009239, 2.011670}, {0.176554, 0.774631}, {-0.793129, 0.211589}, {-0.072293, 0.240170}, {0.881402, 0.528900}, {0.458104, 0.297768}, {1.425877, -0.725340}, {-1.097623, -0.304087}, {-0.127377, -0.767495}, {-0.019548, 0.382421}, {0.498701, 1.214140}, {0.443213, -0.118249}, {-0.071224, -0.014039}, {0.630956, -1.420196}, {1.092859, -0.858199}, {0.601709, -0.454233}, {0.061239, -0.833424}, {-0.018905, 0.604909}, {0.465324, -1.778430}, {-0.755851, 0.803587}, {1.085178, -0.492003}, {0.820772, -0.064660}, {0.125793, -1.132899}, {0.315742, -0.133927}, {0.890772, 0.347966}, {0.509473, -0.904259}, {0.313390, -1.242697}, {-0.183140, -0.195672}, {-0.664699, -0.149961}, {1.498274, -0.991017}, {-1.516974, -0.399403}, {-0.916197, 0.142253}, {0.040795, -0.428170}, {-0.845305, 0.260543}, {1.148172, 1.459513}, {-0.079861, 0.168896}, {0.687934, 0.865708}, {-0.536824, 0.124210}, {-0.692623, -1.014247}, {-1.316924, -0.789046}, {0.636503, -0.209795}, {0.552650, 0.090913}, {-0.033354, 0.150511}, {1.249451, -0.206799}, {0.901957, -0.045704}, {-0.268462, 0.797655}, {-0.295622, -0.834320}, {-0.623560, 0.392378}, {0.753139, -0.171098}, {-0.315586, -0.093971}, {-0.171782, 0.310994}, {-0.584684, -1.313163}, {0.305928, 1.064417}, {0.262624, -0.763970}, {-0.460683, -1.066815}, {0.775057, 0.025142}, {-0.476420, 0.420022}, {-0.123804, -0.614338}, {0.107369, -0.775216}, {1.000481, -0.185825}, {0.204721, 0.528385}, {0.234913, 0.036659}, {-0.580442, 0.580949}, {1.199714, -0.639281}, {-0.175095, -1.293234}, {0.211567, -1.011604}, {0.534241, 0.104124}, {0.475270, 0.112080}, {-0.296861, 0.570522}, {-0.006516, -0.807378}, {1.324154, 0.366234}, {0.385646, 0.663829}, {0.952289, -0.020348}, {-0.107272, -0.904948}, {-0.430374, -0.791322}, {0.023816, 0.049091}, {-0.739512, -0.394887}, {0.267303, 0.220767}, {0.585441, -0.615484}, {-0.174586, -0.975560}, {-0.857831, 0.240895}, {-0.578808, 0.608267}, {-0.618652, -0.737440}, {-1.703410, 1.076574}, {0.239973, -0.524723}, {-0.877083, 0.885381}, {0.364504, -1.546471}, {0.843914, 1.160001}, {1.150505, 1.071204}, {-0.370583, -0.153527}, {-0.146237, -1.166747}, {1.580330, 0.835601}, {1.183807, -0.290036}, {0.408171, 0.697836}, {-1.363711, 1.276123}, {0.003091, -0.751142}, {0.892821, 1.683361}, {-0.181868, 0.148855}, {0.247007, -0.270453}, {-0.864199, -0.144221}, {0.131680, -1.468996}, {1.015785, 0.628468}, {0.080450, -0.687172}, {-0.209898, 0.096785}, {0.759138, -0.425614}, {-0.758907, -0.363425}, {0.295546, -0.675126}, {0.137910, 0.585381}, {-0.615761, -0.004313}, {0.900616, 0.336981}, {1.909880, -0.158311}, {-0.634418, -0.790108}, {-0.475383, 0.335938}, {-0.438158, 1.008165}, {-0.066609, -0.342591}, {1.040649, 0.129256}, {-0.317508, 0.138331}, {-0.934472, 0.287414}, {-0.822846, -0.707184}, {0.013228, 0.200951}, {-0.192966, 0.231664}, {0.702280, -0.035047}, {1.601308, -0.110163}, {0.968228, 0.484041}, {0.267920, 1.208324}, {0.387431, 0.257585}, {0.137627, -0.038053}, {-0.533791, -0.592955}, {-0.208416, -0.090015}, {1.242265, -0.575457}, {-0.093360, 0.612640}, {0.474705, 1.164073}, {-0.223268, -0.303550}, {0.725415, 0.987524}, {-0.792211, 0.833725}, {-0.127078, 0.253060}, {1.032843, -0.053796}, {-0.611660, 0.688883}, {0.020020, -0.682951}, {-0.061453, 1.055994}, {0.159875, 0.842203}, {1.073916, 0.515861}, {-1.002761, 0.703949}, {-0.433069, -0.241907}, {-0.485950, 0.355489}, {0.046573, 0.251588}, {0.594776, 1.519930}, {-0.353550, -0.125344}, {0.019352, -0.371083}, {0.567640, -0.653759}, {-0.250529, 0.176770}, {-0.406982, 0.103083}, {0.373635, 0.728257}, {1.588916, -0.649808}, {-0.478022, -0.050687}, {0.377243, 0.193279}, {-0.036592, -0.246075}, {1.520919, 1.009384}, {0.159340, 0.341124}, {-0.463280, 0.378020}, {-0.035160, 0.543988}, {0.118358, 0.710502}, {-0.619443, 0.780539}, {0.191851, 0.377155}, {-0.776310, -0.116329}, {-0.276307, -0.043138}, {-1.211908, 0.346911}, {0.079369, -0.858422}, {0.016724, 0.926178}, {1.256652, -0.481102}, {-0.806248, 0.229023}, {0.044788, 0.119707}, {-0.262081, 0.272806}, {0.932057, -0.006805}, {0.544372, -0.095148}, {-1.383816, -1.364462}, {-0.358308, 1.050147}, {0.273473, -0.855889}, {-0.003535, 0.064740}, {-0.833668, -1.139499}, {-0.191707, 0.659760}, {-0.462448, 0.173778}, {-0.025911, 0.309467}, {-0.460535, 0.971118}, {1.307444, 1.320250}, {1.627809, 0.805101}, {0.508275, -0.630378}, {-0.234563, 1.086843}, {-0.122915, 0.361400}, {-0.915180, 0.611521}, {-0.286575, -0.818160}, {0.182178, 0.788028}, {0.604783, -0.208278}, {0.359150, 1.039738}, {-0.992256, 0.972576}, {0.106132, -1.299370}, {-0.162884, 1.643172}, {-0.338271, 0.643220}, {-0.862948, -0.463959}, {0.326343, 0.010285}, {-0.098661, -0.720012}, {0.058748, 0.476613}, {-0.313979, 0.106628}, {0.342506, -1.683328}, {-0.675662, 0.430103}, {-0.378889, -0.229145}, {1.071848, 0.353785}, {-0.028918, -0.457589}, {0.480169, 1.182056}, {-0.186146, 0.337164}, {0.032820, -0.383106}, {-0.716018, 0.172634}, {-0.408182, -0.131892}, {0.656507, -1.192520}, {-0.081387, -1.758375}, {0.157451, 0.629884}, {-0.501019, 0.814047}, {-0.998292, -0.030481}, {-0.562935, 0.654219}, {0.092469, -0.943344}, {0.875478, 0.782977}, {0.136500, 0.716997}, {-0.130205, 0.061150}, {0.772493, -0.787669}, {-0.069071, -1.069128}, {0.020852, 0.155118}, {-0.691191, -0.378006}, {0.037354, -0.996423}, {1.281753, -0.929153}, {-0.426147, -0.438014}, {0.112682, 1.190760}, {-0.025867, -0.051631}, {0.855843, 0.245861}, {-1.283729, 0.078821}, {0.082616, 0.423985}, {0.650177, 0.257912}, {-0.288642, -0.113135}, {-0.309283, 0.956368}, {0.275866, 0.777270}, {1.063946, -0.850517}, {-0.114175, -0.925831}, {-0.197025, 0.160165}, {0.188163, 0.770923}, {0.725416, -0.238262}, {0.532756, 0.332611}, {0.110235, 0.733467}, {0.568374, -0.980107}, {0.264085, -0.102002}, {0.128516, 0.242100}, {-0.326246, 0.476676}, {0.177628, 1.005675}, {0.183542, -0.730819}, {0.560809, 0.026720}, {-0.555138, -0.837223}, {-1.111326, -0.738718}, {-0.573157, 1.307743}, {0.039276, -0.375639}, {-0.610247, 0.441594}, {0.288641, -0.912492}, {1.190911, 0.545295}, {0.782747, 0.523818}, {-0.489349, -0.232879}, {-0.020657, -0.703896}, {0.073902, 0.609629}, {0.772461, -0.210514}, {-0.035950, 0.573090}, {0.973263, 0.098002}, {0.573650, -0.286151}, {-0.420773, 0.322248}, {0.828456, -0.527977}, {1.858361, 0.248676}, {-0.216404, 0.356862}, {-0.646708, -0.483857}, {-0.093864, -0.293461}, {0.583492, -0.646171}, {-1.115405, -0.181960}, {1.366417, -1.845473}, {-0.794050, 0.390124}, {0.467227, 0.144103}, {0.059131, 1.012538}, {0.365336, 0.237803}, {-0.484233, -0.485568}, {-1.005855, -0.440960}, {0.502362, -0.343204}, {-0.153506, -0.221922}, {1.040348, 0.847320}, {0.875955, 0.856994}, {0.134586, -0.579993}, {0.979287, -0.133640}, {0.552321, 0.102281}, {0.541191, -1.039863}, {-1.155057, -0.141459}, {-0.136017, 0.538894}, {-0.816461, 0.275250}, {-0.724677, 0.192772}, {0.326787, -0.010919}, {0.117003, 1.159378}, {0.504487, -0.285180}, {-0.855043, 0.300502}, {0.497492, 1.177945}, {-1.019849, -0.391640}, {0.294492, -0.148558}, {-1.105971, -1.574034}, {-0.549529, 0.276093}, {1.612157, 0.358384}, {-0.490901, -0.027039}, {0.169836, 1.390746}, {-0.194342, -0.284269}, {-0.171289, 0.586009}, {0.440634, -0.241719}, {-0.866231, 0.075171}, {0.604738, 0.501042}, {-1.268727, 0.181187}, {0.970697, 0.307040}, {1.049433, 0.365987}, {-0.498752, 0.386423}, {-0.025266, -0.505426}, {-0.073175, 0.049414}, {-0.182412, 1.089200}, {-0.323381, -0.689772}, {0.110545, -1.103422}, {-0.264985, 1.043266}, {-0.572449, 1.384650}, {0.364356, 0.676386}, {0.022608, 0.196732}, {1.158744, 2.048316}, {0.765193, -0.520691}, {0.612272, 0.175707}, {0.822290, -0.539943}, {-0.029847, 0.542674}, {-0.046485, -0.527074}, {-0.247289, -0.309464}, {-0.123121, 0.695817}, {-0.585551, 1.109341}, {1.091744, -0.323955}, {-0.258755, 0.608515}, {-0.359400, -0.617556}, {0.213343, 0.803480}, {0.723600, -0.553256}, {-0.919498, 1.614200}, {0.151235, -0.057427}, {0.507107, 0.231984}, {-0.423361, -0.409427}, {0.846366, 1.210201}, {-0.481114, -0.023277}, {-0.021299, 0.801072}, {0.087164, 0.162119}, {0.648244, -0.593489}, {-1.033972, -0.776052}, {-0.910048, 0.009627}, {1.145802, -0.064943}, {-0.863007, 0.893723}, {-0.063187, 0.408214}, {0.097570, 0.371056}, {0.055008, 0.378266}, {0.760486, -0.116970}, {0.175700, -0.711182}, {-1.061988, -1.515268}, {-0.366716, 1.634002}, {-1.127267, 0.259187}, {-0.105613, -1.658119}, {-0.956148, 0.078537}, {-0.789998, -0.046661}, {-0.555772, 0.241221}, {-0.361317, 0.374073}, {0.542807, -0.644804}, {-0.067211, -0.306273}, {-0.313289, -0.762354}, {0.944145, 0.011802}, {0.344604, 0.581157}, {-0.238694, -1.260077}, {-0.499531, -0.040909}, {1.081440, -0.013408}, {-1.020259, -0.402582}, {0.168469, -0.449379}, {-0.322218, -0.352819}, {0.417512, 0.125277}, {-0.179187, 0.773391}, {0.934511, 0.154665}, {0.668175, 1.139319}, {-1.109726, -0.697647}, {-0.058986, -0.618589}, {1.224662, -0.691357}, {-0.344564, 1.430847}, {-0.198289, 0.080758}, {0.248374, -0.855443}, {0.510391, 0.972455}, {-0.236303, -0.325335}, {0.461915, -0.112654}, {-1.113610, -1.548437}, {-1.242013, -0.824333}, {-0.071317, 0.322042}, {-0.489653, -0.266651}, {0.049223, -0.240123}, {-0.017929, 0.190162}, {-0.643566, -0.146084}, {0.581599, 0.459194}, {-0.885802, -0.729123}, {0.659102, 1.113099}, {0.604221, 0.372455}, {0.150965, -0.404922}, {0.024189, -0.589169}, {0.181120, -2.232684}, {-0.109871, -0.604952}, {-0.441800, -1.783353}, {1.351005, 0.201968}, {0.226026, 0.178360}, {0.052492, 0.086991}, {1.777618, 1.068832}, {-0.332651, 0.317066}, {0.541455, -0.685652}, {0.392310, 1.079179}, {-0.427805, -0.269735}, {0.498657, -0.582363}, {0.940945, 0.355367}, {0.265536, -1.458500}, {0.449227, 0.874282}, {0.227071, -0.627270}, {-0.093351, -0.097808}, {-1.145261, -0.218075}, {0.484358, 1.069822}, {0.996167, 0.219158}, {0.164768, 0.888018}, {-0.524378, -0.335536}, {0.408570, 0.683742}, {0.520097, -0.352789}, {0.528279, 0.701878}, {0.254929, 0.657117}, {-0.913148, -0.518469}, {-0.444215, -0.199164}, {0.123173, 0.541502}, {0.623248, 0.013648}, {0.876430, 0.188051}, {-0.745054, -0.440719}, {1.370839, -0.341183}, {-0.557997, 0.053702}, {0.504211, -0.772695}, {1.925599, -0.732382}, {1.134615, 0.354443}, {-0.823694, 0.010852}, {-0.010443, -0.137324}, {0.583601, -0.844533}, {0.664869, 1.118130}, {-0.000382, 0.444552}, {-0.646392, 1.280645}, {1.497105, 0.917277}, {-0.230933, -0.814139}, {-0.618821, -0.230543}, {0.004494, -0.586885}, {0.188155, 0.759926}, {0.400992, -0.852580}, {0.916116, 0.173815}, {0.164091, -0.226974}, {0.428332, -1.030586}, {-1.450546, -0.165323}, {-0.743664, -0.984256}, {1.239929, 0.021010}, {0.169317, 0.059045}, {1.351634, 0.648103}, {-0.725472, 0.514575}, {0.682044, 0.646209}, {-0.254000, -0.088715}, {0.820242, 0.000807}, {-0.199804, -1.335055}, {0.568600, -0.573050}, {-0.372125, 1.120332}, {-0.080109, -0.217794}, {-0.077319, 0.183705}, {0.610015, -0.768326}, {0.531406, -0.197264}, {0.374272, 0.746575}, {0.811771, -0.070560}, {0.456952, 0.828381}, {-1.114625, -0.778551}, {-0.677564, -1.195200}, {-0.032155, -0.146667}, {0.160033, -1.240192}, {0.784846, -0.048669}, {0.226182, -0.040282}, {-1.385046, -0.704092}, {0.539381, -1.102437}, {0.385233, 0.702485}, {0.229480, 0.119168}, {-1.160470, 0.285107}, {-0.541554, 0.585548}, {-0.348345, 0.770643}, {-0.277295, 0.505369}, {0.072372, 0.074768}, {-1.171783, -0.243523}, {0.704349, 0.708709}, {0.059024, 0.631281}, {0.065354, 1.504243}, {-0.835199, 0.568548}, {-0.460690, 1.264099}, {-1.828812, -1.061787}, {0.003831, 0.815100}, {-1.209037, 0.131804}, {0.842161, -0.991327}, {0.138250, -0.926978}, {-0.127969, 0.712464}, {-0.350826, 1.252760}, {0.556596, 0.709099}, {-0.880338, -0.882393}, {0.633947, 0.831589}, {1.535985, 0.012752}, {-0.110222, -1.560059}, {-0.473637, -0.328046}, {-0.183194, 0.641908}, {-1.074374, 0.106450}, {0.837744, -1.048600}, {0.080980, -1.310010}, {0.538448, -1.136176}, {-0.596666, -0.628378}, {-0.594768, 0.340720}, {0.251058, -0.190293}, {-0.061235, 0.142368}, {0.563618, -0.663220}, {-0.994710, 0.799951}, {-0.013219, -0.077868}, {-0.260975, 0.436012}, {0.701558, -1.555042}, {0.218937, -0.839333}, {0.189052, -0.893478}, {-0.825828, -0.108326}, {0.179960, -0.454794}, {-0.189811, -0.729981}, {0.258641, 0.734701}, {1.033546, -0.851021}, {-0.481548, 1.060999}, {0.550961, -0.495215}, {-0.720159, 0.605927}, {-0.918472, -1.437412}, {0.238061, 0.359825}, {-0.669119, -0.477539}, {-0.393230, 1.100341}, {-0.294604, 0.625805}, {1.183505, 0.325424}, {0.656797, 0.302560}, {-0.264583, 1.659226}, {0.944444, 0.759065}, {0.363301, -0.931562}, {0.321250, 0.144317}, {0.056304, 0.033562}, {0.396821, -0.081704}, {-0.146098, -0.157071}, {-0.567406, 0.542368}, {0.087811, -1.191284}, {0.645851, -1.129586}, {-0.480500, 0.559676}, {-0.512098, -0.692533}, {-0.576949, -0.178230}, {-0.312055, -1.312385}, {-0.661092, -0.003298}, {1.385371, 0.073527}, {0.749575, 0.121531}, {0.451503, -0.172923}, {-1.720465, 0.533779}, {-0.558727, -0.163352}, {1.161200, 1.410997}, {0.343344, -0.099791}, {-0.065168, -2.180713}, {0.350066, 0.806381}, {-0.286234, -0.192670}, {0.073187, 0.263513}, {-0.757331, -0.586757}, {0.984908, 0.277915}, {1.028605, 0.961379}, {0.644807, 0.258389}, {0.606982, 0.266423}, {-0.090490, 0.787222}, {0.184171, 0.023188}, {0.350628, 0.158079}, {0.778608, 0.188059}, {-0.930078, 1.186364}, {-0.671489, -0.012170}, {-0.081454, 0.351651}, {1.178337, 0.477150}, {-0.455728, -0.782186}, {0.891922, 0.565029}, {1.160296, -0.280368}, {0.653268, 0.357551}, {1.540297, 1.202347}, {0.245353, 0.959049}, {0.243214, -0.407234}, {-0.450652, 1.435352}, {-0.707209, 1.169824}, {-0.087597, 0.734600}, {0.280094, -0.507072}, {-0.362702, 0.385568}, {-0.298647, -0.445275}, {1.484539, -0.134123}, {-0.714418, -0.484541}, {0.183658, -0.100520}, {-1.304078, -0.615248}, {-0.145906, -0.378490}, {-1.139469, 0.513238}, {-1.002350, -0.857683}, {-0.662826, 1.027047}, {0.866330, -0.714924}, {0.134961, -0.170331}, {-1.346329, -0.335113}, {-1.486651, 0.211276}, {-0.033975, 0.498228}, {0.808639, 0.410672}, {-0.183830, 0.673398}, {0.283445, 0.591164}, {-0.775002, -0.358194}, {-0.559984, 0.245061}, {0.448254, -0.351589}, {-0.307253, 0.317585}, {0.110474, -0.551974}, {1.435987, -0.093767}, {-0.899370, -0.601259}, {0.050750, -0.801049}, {-0.248103, -0.266506}, {-0.722677, 0.408100}, {0.439215, 0.082929}, {0.326781, 0.560803}, {-0.435041, 0.157077}, {0.616733, -0.929936}, {-1.000230, 0.585819}, {0.197016, -0.325485}, {-0.661867, -0.863923}, {-0.149218, -0.118129}, {-0.048844, -0.426240}, {-0.048809, -1.036530}, {1.234970, -1.198487}, {-0.564061, 0.812790}, {0.518469, -0.899248}, {-1.011805, -0.436426}, {-0.731235, 0.119354}, {-0.748153, -0.686550}, {-0.765046, -0.353657}, {-0.836584, 0.509778}, {0.848860, -0.573605}, {0.275349, -0.980142}, {-0.086480, 0.350212}, {0.561023, 0.614301}, {0.295835, -0.062431}, {-0.169997, 1.796229}, {1.411584, -0.157918}, {-0.820578, -0.083208}, {0.363949, -1.059952}, {-1.105712, -0.108223}, {0.022597, -1.059282}, {-0.599310, -1.113121}, {1.271478, 0.088851}, {-0.351697, 1.037394}, {0.708869, 1.367619}, {1.616188, 0.268445}, {-0.055062, 0.051147}, {0.089420, 0.984126}, {1.037123, 0.467659}, {0.285018, 1.056293}, {0.076872, 0.167609}, {0.466394, 0.073944}, {-1.120238, -0.403795}, {-0.605089, 0.022859}, {0.279943, 1.026083}, {0.103397, 0.277845}, {-0.243145, 0.104500}, {0.333394, -0.637974}, {-0.115601, 1.088147}, {-0.792947, 0.234692}, {-0.789909, -0.934349}, {-0.734755, 0.478295}, {1.709832, -0.280996}, {0.744538, -0.906727}, {0.250604, 0.999609}, {-0.503783, 0.558645}, {0.495996, 0.365936}, {0.142156, -0.574836}, {0.512751, 0.192158}, {1.235956, 0.332711}, {0.023924, -0.429072}, {1.193035, -0.496755}, {0.507106, 0.569391}, {-0.957161, -1.168585}, {-0.107514, 0.423613}, {-0.739674, -0.701516}, {0.904520, -0.072935}, {-0.102696, -0.928840}, {-0.431224, 0.774089}, {0.546826, 0.645864}, {-1.462693, -0.997040}, {0.045656, 0.881963}, {1.235724, 0.605226}, {0.485086, -0.077597}, {-0.269521, -0.825996}, {-1.322636, 0.198827}, {-0.755254, 0.130400}, {0.905988, -0.026561}, {0.398511, -0.221909}, {0.101731, -0.824604}, {-0.772005, -0.034138}, {0.255018, 0.583319}, {-0.099606, -0.618148}, {-1.244045, 0.403242}, {0.290003, 0.145494}, {0.525354, 0.224848}, {0.953469, 0.330420}, {-0.529456, 0.842453}, {-0.558430, -0.068691}, {0.816181, -1.027805}, {0.473286, 0.705963}, {-0.374642, -0.541333}, {0.450463, -0.658926}, {-0.817825, -0.087311}, {-0.506713, 0.154635}, {-0.234898, 0.576703}, {-0.308701, -0.353461}, {-1.064488, -0.829382}, {-0.948916, 1.358909}, {0.873385, 0.041247}, {-0.975031, 0.341437}, {0.465089, -0.305899}, {-1.322672, -0.257483}, {-1.628600, 0.631921}, {1.432280, -0.394926}, {-0.278556, 0.212714}, {-0.350961, -1.579332}, {-0.404100, 0.750536}, {0.368782, 0.707155}, {0.075936, -1.267203}, {-0.831914, -0.096899}, {-0.333046, -1.207398}, {0.347681, 1.157404}, {-0.578348, -0.070195}, {-0.129107, 1.292968}, {0.170815, 0.528093}, {0.446822, -0.070859}, {0.606865, -1.535666}, {0.948290, -0.884917}, {-0.045336, -0.805774}, {0.469737, -0.474745}, {-0.491228, 1.119829}, {-0.441045, 0.412691}, {-0.263473, 0.314737}, {-0.249778, -0.497140}, {1.067664, 0.185250}, {0.464393, 0.962226}, {1.268074, -0.124376}, {-0.050562, 0.440929}, {1.169404, 0.656123}, {-0.881702, 0.319503}, {-1.052664, 1.076097}, {-0.492302, 0.583617}, {0.558011, -0.848022}, {-0.723854, 0.330486}, {-0.451609, 0.208036}, {0.033972, 0.322249}, {0.081812, 0.909632}, {0.438240, -0.140270}, {-1.769997, 0.783168}, {0.841427, 0.381585}, {-0.535555, 1.054986}, {0.480827, -0.859746}, {-0.590138, -1.197696}, {1.838550, -0.341772}, {0.314785, 0.598647}, {0.966481, 0.829249}, {-0.603204, 1.197482}, {0.287894, -0.764641}, {0.245047, 0.646047}, {0.703114, 0.023655}, {-0.751477, -0.640445}, {0.128946, 0.238554}, {-0.248008, -0.661997}, {-1.358426, 0.542743}, {-0.077018, 0.562820}, {-0.992383, -0.265463}, {0.815603, -0.609510}, {0.402195, 0.111800}, {0.098221, 0.243275}, {0.465141, -0.894786}, {-0.195025, 0.818069}, {0.163013, 0.020456}, {0.019287, 0.280488}, {-1.292419, -0.472930}, {-1.176423, -0.206148}, {-0.517755, -0.206153}, {-0.221025, -0.087351}, {0.613520, 0.874127}, {0.125680, -0.160756}, {0.959133, -0.888381}, {-0.119945, 0.682721}, {0.994469, 1.538646}, {0.666825, 0.194733}, {-0.037507, -0.858152}, {1.210323, -0.049750}, {-1.064716, -0.617205}, {0.945401, -2.387452}, {0.158818, 0.160687}, {-0.482974, 0.394775}, {-0.858639, 0.219751}, {0.294519, 0.146071}, {1.044995, -0.604510}, {0.823595, 0.998153}, {0.038470, 1.230760}, {1.575698, -0.815523}, {0.148811, 0.410763}, {-0.389223, 0.867009}, {-0.126203, 0.541746}, {1.678347, 0.380927}, {0.429547, -1.024259}, {-0.266202, 0.332225}, {-1.617040, -1.222720}, {-0.563409, -0.661385}, {-0.219464, -0.002245}, {0.314463, 0.656447}, {-0.300489, 0.532422}, {-1.675190, 0.759753}, {0.428757, 0.171765}, {-0.011795, -0.359087}, {-0.887617, 0.835305}, {-0.810371, 1.602856}, {0.409307, -0.461949}, {0.199920, -0.987035}, {0.123417, 0.693076}, {-0.100030, -1.106335}, {1.582451, -1.165881}, {-0.704681, -0.668353}, {0.760863, 1.026244}, {-0.191075, 0.266052}, {-0.668103, 0.170235}, {-0.012904, -0.286498}, {-0.501481, 0.788971}, {0.668517, 0.968752}, {-1.047200, -0.400916}, {-0.533675, 0.024010}, {-0.986899, -0.229436}, {0.627433, 1.110767}, {-0.365978, 0.023073}, {0.663772, -0.100048}, {1.049500, 0.285839}, {-0.643717, -0.106911}, {0.591250, -0.125807}, {-0.639040, -0.106044}, {0.037507, -0.832752}, {0.328107, -0.285961}, {-0.627469, -0.265954}, {-0.052279, 0.075179}, {-0.231068, 0.046103}, {1.172718, 0.580020}, {-0.255252, 0.819326}, {-0.169260, -0.100791}, {-0.756299, 0.608835}, {-0.181330, -0.094706}, {0.479515, -0.363664}, {1.236969, 0.858327}, {-0.975062, 0.641956}, {1.244166, 0.412330}, {-0.243528, -0.367673}, {-0.352109, -0.345661}, {-0.198278, 0.348731}, {-0.264499, 0.354155}, {1.043070, -1.080189}, {-0.158193, 0.645892}, {-0.341817, -0.186282}, {-0.152951, -0.679947}, {-0.281572, 0.534695}, {-0.012417, 0.328755}, {-0.265771, -0.525037}, {-0.161336, 1.444940}, {0.995682, 0.203988}, {-0.537981, 0.988658}, {-0.529871, 1.194728}, {0.831686, 0.030963}, {0.356165, -0.026852}, {-0.577640, -0.518094}, {-1.028778, -0.136226}, {1.046369, -0.334105}, {-0.005565, -1.329268}, {-0.821778, -0.563742}, {1.142928, 0.091294}, {0.682693, -1.263949}, {0.380228, -0.658545}, {0.843082, 0.932597}, {-0.345522, 0.249836}, {0.446026, -1.368423}, {-0.918192, 1.002040}, {-0.661288, -0.984786}, {-0.590316, -0.129025}, {0.777157, 0.056676}, {-0.264574, -0.214260}, {-0.816790, 0.067197}, {-0.585520, -0.519243}, {-1.193762, -0.976993}, {0.583269, 0.827641}, {0.394747, -0.120571}, {-0.049132, -0.030678}, {-0.484051, 0.178199}, {-0.283985, -0.097271}, {0.105214, -0.205086}, {0.341469, 1.602652}, {0.269129, 0.846228}, {-0.386895, -0.161324}, {0.950400, 0.840099}, {-0.753280, 0.687107}, {0.466935, -0.616318}, {-0.287216, -0.420626}, {-1.046482, -0.085754}, {0.284436, -0.869538}, {0.897849, 0.423417}, {0.921429, -0.765774}, {0.763842, -0.209293}, {0.617392, 0.912271}, {-0.177456, -0.132474}, {0.806300, 0.356169}, {0.336841, -0.384476}, {0.283514, -1.204551}, {-1.051563, 0.410899}, {-0.962639, 0.824742}, {-0.270251, -0.887304}, {0.165904, -0.610252}, {-0.333379, 0.607510}, {0.600463, 0.941986}, {0.997552, 0.235415}, {-1.187420, -0.233916}, {0.897561, -0.197762}, {0.319458, -0.794006}, {1.832876, -1.005851}, {0.117741, 0.084043}, {-0.277336, -0.585939}, {-0.220366, 0.332784}, {-0.955706, -0.663342}, {-0.874698, -0.661934}, {-0.977466, 0.530857}, {-0.670765, 0.717771}, {1.169043, 0.801325}, {-0.313282, 0.543873}, {1.361090, -0.016967}, {-0.045271, 0.468467}, {-0.872414, 0.191454}, {-0.622985, 1.003125}, {-1.506511, -0.683927}, {-0.860689, -0.551287}, {-0.871940, -0.866821}, {0.624825, 0.683967}, {1.592190, 0.116308}, {0.126634, 0.042754}, {0.051162, 1.220215}, {0.758876, 0.604646}, {0.941573, 0.080765}, {-0.195989, 0.676589}, {-0.499377, 0.152671}, {0.658630, 0.605302}, {-0.358647, 1.735287}, {1.364593, 0.503183}, {0.210822, -0.166494}, {-0.861761, 0.367387}, {-0.458178, 0.060156}, {0.427491, 0.042062}, {0.086057, -0.088052}, {0.162160, -0.189039}, {-0.734105, 1.173913}, {1.009910, -0.268308}, {0.511028, 0.449041}, {-0.638741, 1.917117}, {-0.396037, -0.155032}, {-0.997269, -0.575873}, {0.535088, 0.441734}, {-0.543414, -0.751851}, {-1.416398, -0.066365}, {-0.053821, 1.180805}, {0.282290, 0.897749}, {0.759861, -0.479464}, {0.990860, -0.835886}, {0.536881, -0.128652}, {-0.235283, 1.638562}, {-0.048821, -1.424798}, {-1.013434, -0.285478}, {0.380225, 0.037058}, {0.083666, 0.162508}, {-0.638680, -0.529640}, {0.063698, 0.202676}, {0.126295, -0.106833}, {-0.705436, 0.875691}, {1.560148, -0.744106}, {0.506902, 0.182486}, {-0.216431, 0.488020}, {0.088319, 0.537304}, {0.744745, 0.260296}, {-0.266826, 0.163056}, {-0.680731, 1.666494}, {0.716172, -0.824289}, {0.576971, 1.097574}, {-0.306776, 0.425233}, {0.559360, 0.770270}, {0.306141, -0.569606}, {0.641368, 0.473688}, {-0.534869, 0.305556}, {0.479480, -1.319807}, {-0.369422, 0.008258}, {-1.015711, 0.415351}, {0.334729, -0.161003}, {0.111812, -0.232136}, {1.115033, 0.418084}, {0.372638, 0.159681}, {0.228723, 0.086318}, {0.183488, 0.840287}, {-0.032699, -0.968931}, {0.497496, 0.382361}, {-0.737920, 0.301958}, {-0.390336, -0.313842}, {-1.358576, -0.824571}, {-0.296870, -0.221777}, {-1.204408, -0.178874}, {0.430879, 0.540454}, {-0.129484, -0.943346}, {0.111495, -0.347794}, {0.241006, 0.882070}, {0.259517, -0.153651}, {0.359138, 0.493153}, {-0.117222, -0.896891}, {0.130265, -0.611169}, {-0.564621, -0.942626}, {0.109644, 0.919373}, {-0.765497, -0.454155}, {1.351302, -0.499722}, {-0.388550, 0.828392}, {1.338169, 1.025334}, {-0.017090, -0.296752}, {-0.180796, 0.374854}, {0.418456, 0.346593}, {-0.739752, 0.202709}, {-0.167847, -0.921766}, {0.747846, -0.289610}, {0.366519, -1.205982}, {0.238487, -0.366714}, {-0.757299, 0.554594}, {-0.815610, -0.092068}, {0.238967, 0.595734}, {-0.637637, -0.039172}, {-0.511671, -0.025446}, {1.327343, -0.892339}, {0.787727, 0.725476}, {0.193989, -0.948691}, {-0.435612, 0.747976}, {0.973745, 0.043831}, {-0.081442, -1.261099}, {0.972757, 0.437030}, {-0.906525, 0.511164}, {0.286286, -0.007231}, {-0.724918, 0.317117}, {-0.010738, -1.408628}, {-0.892791, -0.413062}, {-1.145404, -1.000462}, {-0.054472, -0.656673}, {-0.397352, -1.006708}, {1.272339, 0.348268}, {-0.072337, 0.462120}, {0.263024, 0.820054}, {-1.350094, -1.060760}, {0.318931, 1.224979}, {-0.743524, 0.081760}, {0.782937, 0.494788}, {-0.380764, 0.038653}, {0.366967, -1.110074}, {-0.539220, -0.289508}, {-0.750016, -0.379700}, {-1.056018, 0.760600}, {-0.014371, 0.051682}, {0.646769, -1.206138}, {-0.192194, -0.268590}, {0.211900, -0.061502}, {0.667021, 0.717522}, {-0.988574, 0.469784}, {0.909208, -0.187655}, {-0.264537, 0.459019}, {0.283053, -0.771236}, {0.977605, 0.326370}, {0.188691, -0.116146}, {-0.841161, -1.507667}, {-0.622058, 0.275580}, {0.827556, 0.636424}, {0.829953, -0.934848}, {-0.974846, -0.484086}, {1.038897, 0.572127}, {-1.470389, 0.655402}, {-0.031678, -0.280099}, {0.345680, 1.131225}, {1.521886, 0.475562}, {-0.095613, 0.225868}, {0.587360, 0.098605}, {-0.910606, -0.220681}, {0.695483, 0.270633}, {1.392499, -0.534474}, {-0.380665, -0.132181}, {0.739761, -0.804516}, {0.247837, 0.364872}, {-0.504840, 0.279031}, {0.577741, -0.499917}, {-0.877160, -0.500081}, {0.470665, 0.626683}, {-0.845048, -0.661755}, {0.573259, 0.452514}, {1.463281, 0.460497}, {-0.140814, -1.014287}, {0.792857, 0.139124}, {0.095435, -1.194781}, {-0.168013, -0.617225}, {-0.669563, -0.438816}, {0.970599, 1.334226}, {-0.389379, -0.250410}, {0.337426, 1.425473}, {0.040593, 0.759876}, {-0.692656, -0.593318}, {0.644505, -0.808285}, {0.343813, 0.483264}, {0.262818, -0.442864}, {0.401180, -0.354012}, {0.042798, 0.576953}, {1.057127, -0.234653}, {-0.543273, 0.116899}, {-0.261085, 0.760538}, {0.917617, 0.504692}, {-0.505622, -0.461514}, {-0.397714, 0.102581}, {0.841617, 0.258265}, {-1.224217, 1.200595}, {0.549822, -0.854504}, {-0.331807, 0.249164}, {-0.969781, 1.050829}, {-1.102970, -0.743287}, {0.391551, -1.364767}, {-0.291293, 0.652954}, {-1.597162, -0.453738}, {-0.347804, -0.281488}, {-0.384993, -0.354367}, {-0.893094, -0.032469}, {-1.033837, 0.258447}, {-0.059178, -0.196922}, {-0.727165, 1.094397}, {-0.050880, -0.416205}, {-1.801534, 0.759659}, {-0.013259, -0.907752}, {-0.663571, -0.737940}, {0.248589, -0.087161}, {1.713345, 1.020552}, {0.274155, -0.077844}, {0.684280, 0.290232}, {0.467950, -1.380906}, {-0.134793, 0.354306}, {0.641834, -0.147045}, {1.549775, 1.034824}, {1.011992, 0.136162}, {1.032606, -0.470594}, {0.002512, -0.501699}, {0.263132, -0.873676}, {0.596802, 0.698595}, {0.644208, -1.026820}, {-0.241748, -0.120648}, {0.400545, 0.692764}, {0.723725, -1.171937}, {-0.065336, 0.082173}, {0.087121, 0.777870}, {0.137719, 0.862409}, {0.600762, -0.256252}, {-0.496334, 1.522049}, {1.415523, -0.361800}, {0.195888, 0.140839}, {-0.201059, -0.957306}, {0.833613, -0.884474}, {-1.923963, -0.511931}, {-0.401694, -0.750599}, {-0.057871, -1.554591}, {0.136921, -0.610025}, {-0.692221, 0.232519}, {-0.963772, -0.406412}, {-1.011556, 0.388904}, {0.196652, 0.402592}, {-0.236942, 0.249439}, {0.197316, 0.749347}, {0.260643, 1.518230}, {-0.261184, -0.019793}, {0.953847, 0.003123}, {-0.488447, -0.693489}, {0.100561, -0.839624}, {-0.387958, 0.029235}, {-0.056287, 0.849571}, {0.146328, -0.596042}, {-0.442422, -0.081224}, {1.467301, 1.058274}, {-0.842963, -0.823609}, {0.361145, 0.235648}, {2.244235, -0.417005}, {0.557178, 0.494236}, {-0.286937, 0.446261}, {-0.797514, 0.125949}, {-0.396846, -0.492949}, {0.791338, 0.112081}, {0.731112, 0.815339}, {0.124238, 1.042459}, {0.178620, -0.243480}, {-0.297767, -0.499014}, {0.089431, -1.045263}, {0.876765, 1.478866}, {-0.433655, -0.416072}, {0.076538, 0.452756}, {0.276575, -0.657696}, {0.710620, 0.425570}, {-0.348002, -1.521084}, {0.463074, -0.794634}, {1.420303, 0.458714}, {-0.799261, 0.730155}, {-0.282421, -0.450125}, {-1.215153, 0.133084}, {0.429525, 0.137792}, {-0.046368, -0.348350}, {1.182696, -0.476907}, {-0.354102, -0.016664}, {0.228567, -0.048909}, {0.317271, -0.110712}, {0.000535, 0.097966}, {0.358389, -0.986634}, {0.233837, -0.517393}, {-0.702710, -1.470436}, {0.301747, -0.361704}, {-0.116303, 0.152185}, {0.321548, 0.456944}, {0.426785, 0.809817}, {0.862019, -0.752446}, {0.503493, -0.196673}, {-0.188695, 1.043960}, {-0.634846, 0.615436}, {-0.773059, -0.768587}, {0.735760, -0.078372}, {0.076222, -0.103925}, {-0.837846, -1.879631}, {0.311214, 0.005395}, {-0.256265, 0.525394}, {-0.759509, 0.445865}, {-0.425542, 0.964997}, {0.621631, 0.218384}, {0.749916, 0.486092}, {0.735936, -0.741326}, {-0.550580, 0.175995}, {0.441750, 0.922190}, {-0.284205, 0.780467}, {0.111299, -0.940763}, {-0.488491, 0.739998}, {-0.538022, 0.602799}, {-0.458050, -0.227355}, {1.218009, 1.485198}, {0.293776, 0.548771}, {0.621581, 0.201245}, {0.029869, -0.484299}, {0.297470, -0.678649}, {-0.652890, -0.572565}, {0.708517, 0.135724}, {-0.759185, 1.020900}, {0.089393, 1.254895}, {-0.163606, -0.225901}, {1.028091, -0.979818}, {-0.463887, -0.461716}, {-0.472972, 1.295955}, {-1.499760, -0.100153}, {-0.316495, 0.182810}, {-0.029037, 1.390832}, {-1.052626, 0.016877}, {0.140853, -1.064090}, {0.077518, 0.160558}, {-0.789567, 0.126484}, {0.237999, 0.933535}, {-0.625411, -0.154393}, {-0.651849, 0.477355}, {0.313835, -0.871245}, {0.063692, 0.733038}, {-0.125890, -1.321408}, {0.782127, 0.731970}, {0.067632, 1.028553}, {0.390798, -0.202231}, {0.859910, -0.547214}, {0.303427, 0.117133}, {-1.221034, 0.106196}, {-0.556539, -0.005747}, {-0.581574, -0.064757}, {-0.093350, -1.416022}, {-0.371514, 0.863009}, {-0.228865, -0.911086}, {0.226620, 0.868273}, {-0.022400, 0.968063}, {-0.282417, -1.206830}, {0.517815, -0.318365}, {0.433595, -1.277757}, {0.650281, 0.282816}, {0.696810, -0.618460}, {-0.018515, -1.174056}, {0.528708, -0.383014}, {0.465366, -0.166643}, {-1.111839, -0.208049}, {1.260600, -0.904770}, {0.114190, 0.595080}, {-0.772035, 1.160945}, {-0.072465, -0.121030}, {0.740277, 0.073001}, {-0.031995, -1.003071}, {0.309444, -0.284262}, {0.256298, 0.217717}, {-0.714797, 0.139100}, {1.365575, -0.321842}, {0.609559, 1.219424}, {-0.656153, 0.923034}, {0.306127, 0.569498}, {-0.185454, -0.769265}, {0.640850, -0.158718}, {-1.334112, -0.208599}, {-0.368937, -0.719614}, {0.154071, 0.481000}, {0.369258, -1.256445}, {-1.053810, 1.454169}, {-0.166292, -0.690521}, {0.434216, -0.485381}, {0.446152, 0.316255}, {0.598136, -0.692985}, {0.194634, 0.723444}, {0.033284, -0.674910}, {-0.677093, -0.480733}, {0.483942, 0.055658}, {-0.380847, 1.698802}, {-0.739697, -0.967901}, {0.181901, -0.283096}, {-0.385252, -0.218986}, {0.571349, 1.211891}, {0.208035, -0.801372}, {-0.001354, 0.011905}, {0.481477, -0.622890}, {1.126983, 0.720045}, {0.366125, 0.725890}, {0.172974, 0.276534}, {-0.297515, -0.000297}, {0.716860, -0.694652}, {0.896244, -0.218171}, {0.166865, -0.781466}, {-0.782709, -0.862993}, {-0.004288, 1.019110}, {-0.509804, 0.230849}, {-0.987740, 0.724671}, {-0.816786, -1.334751}, {-0.406238, -0.684850}, {0.680826, 0.080398}, {-0.045664, 0.409165}, {1.857790, -0.268328}, {0.265866, 1.576185}, {-0.633796, -0.378996}, {0.441580, 0.420835}, {0.594992, -0.103592}, {-0.350224, 1.054242}, {-0.454100, 0.966540}, {-0.553087, 0.060871}, {-0.473446, -0.638460}, {0.348962, -0.726140}, {0.403723, -0.092776}, {0.168148, -0.187260}, {-0.047057, -0.712472}, {0.546338, 0.364816}, {0.918003, -0.461675}, {-0.907751, -1.659162}, {0.690737, 0.688165}, {1.115170, -0.620245}, {-0.424054, -0.378832}, {-0.295589, 0.438479}, {-1.181545, -0.526172}, {-0.191356, 0.363078}, {1.256819, 0.772957}, {0.660880, -0.127556}, {-0.770033, 1.086703}, {-0.221948, -0.024302}, {0.376195, 0.665919}, {0.855315, 1.296681}, {0.064168, -1.090223}, {1.198266, -0.123963}, {0.222219, 0.832714}, {0.265471, 0.660817}, {0.926886, 0.106470}, {-0.116532, -0.351282}, {0.282755, 1.394651}, {1.976995, 0.625415}, {0.086001, 0.874691}, {-1.158765, -0.296382}, {0.821879, 0.330819}, {1.473645, 0.454222}, {0.373012, 0.334324}, {0.784090, -1.194075}, {-0.049292, -0.080586}, {-0.326299, -1.150056}, {-0.376097, -0.297711}, {0.400420, 0.699295}, {-0.401832, 0.718915}, {0.513962, 1.314126}, {-1.223199, 0.822673}, {-0.198511, 0.577317}, {-0.931176, -0.141243}, {-0.328271, -0.297043}, {0.058682, 0.063005}, {-1.537647, -1.357544}, {0.991342, -0.020237}, {0.389384, -0.358624}, {-0.286835, 0.522531}, {-0.921756, -1.109047}, {-0.005216, 0.585698}, {0.073284, -0.240263}, {-0.608758, 1.045577}, {-0.127535, 1.243989}, {1.069722, -0.381090}, {0.658169, -0.466652}, {0.110592, -0.898093}, {-0.344192, 0.315264}, {-1.253943, 0.576829}, {-0.988689, 0.289650}, {0.323581, 0.406835}, {0.753623, -1.395921}, {-0.526975, 0.375853}, {-0.228419, 0.642204}, {-0.911534, -0.802450}, {-0.714417, -0.277566}, {-0.248413, -0.669371}, {0.558370, -0.525797}, {-0.676306, -0.233652}, {0.187377, -0.245513}, {-0.115084, -0.722299}, {-0.778514, -0.521242}, {1.510762, 0.186472}, {-0.112162, 0.741817}, {0.168038, 0.036480}, {0.473081, -0.613676}, {0.017735, -1.619743}, {0.125184, -0.943553}, {0.545184, -0.381330}, {0.093888, 0.932584}, {0.298593, -1.014602}, {1.317871, -0.453601}, {0.446039, 0.296345}, {-0.003700, -0.215325}, {0.357740, -1.726941}, {0.056925, -0.146512}, {0.242151, -0.224778}, {0.333254, 1.380770}, {1.576821, -0.423607}, {0.293532, 0.300461}, {-0.192775, -0.819195}, {-0.724187, 0.864495}, {-0.256047, 0.693948}, {0.227372, 0.048857}, {0.384743, -0.022614}, {0.334230, 0.059078}, {-0.084885, 0.245805}, {-0.956303, -1.202349}, {-0.673081, -0.715653}, {-1.070653, -0.327304}, {-0.147279, 0.735590}, {-1.051301, 2.081734}, {0.743641, 0.675310}, {0.497307, -0.052339}, {-1.137150, -0.681605}, {0.958912, -0.359105}, {-0.011346, -1.133356}, {-0.675276, 0.676611}, {-0.088049, -0.368402}, {1.029195, 0.986048}, {0.769677, 0.565289}, {-0.142346, 1.404113}, {-1.105935, 0.105231}, {0.137296, -0.042361}, {0.064376, 1.281022}, {0.891722, -0.662071}, {-0.274474, 1.361238}, {0.501089, 0.037064}, {-1.079683, 0.260584}, {-0.657026, -0.608459}, {-1.321491, 0.137369}, {-0.147387, 1.485629}, {0.701370, -0.338272}, {-0.937117, -1.890266}, {-0.002981, -0.309410}, {-0.450557, 0.756156}, {-0.207628, 0.767636}, {-0.017018, -1.057447}, {-0.516946, 0.622016}, {-0.439782, -0.660634}, {0.465733, 0.369621}, {-1.107081, 0.963995}, {-1.304264, -0.056408}, {0.326753, 0.871892}, {0.607911, -0.097462}, {0.368739, -0.185021}, {1.177421, 0.378663}, {-0.059318, -0.122919}, {0.024356, -0.157050}, {-0.952570, -0.640217}, {-0.285763, 0.974177}, {-0.222286, -0.638367}, {1.350695, 0.832729}, {0.426047, 0.068965}, {-1.235143, -0.255727}, {0.097972, -1.280044}, {0.613868, 0.569266}, {0.792483, -0.388408}, {-0.611795, -0.757664}, {0.066523, -1.342460}, {1.152646, 0.059112}, {-0.407404, -0.164086}, {0.998551, -0.553072}, {-0.230242, -0.414397}, {1.100387, -0.474447}, {-0.136452, -0.266361}, {-0.783866, -0.608098}, {-0.626331, 0.731900}, {0.453871, 0.483000}, {0.118882, -0.076636}, {-0.010890, 1.832384}, {-0.275781, 0.534932}, {-0.758412, 0.302367}, {0.774181, -0.666316}, {-1.239903, -0.018154}, {-0.826897, -0.159508}, {0.294782, 0.329762}, {-0.310305, 0.173462}, {-0.484331, 0.577130}, {0.528037, -0.079597}, {-1.165040, 0.643362}, {0.218828, -1.879045}, {0.340559, 0.534394}, {1.027003, -0.862991}, {0.265023, 0.582110}, {0.533497, 0.424652}, {-0.143533, -0.668350}, {-0.043478, 1.242700}, {0.140689, -0.328515}, {0.594427, 0.952587}, {0.328719, 0.131913}, {1.647645, 0.451601}, {0.807728, 0.547755}, {-0.398431, 1.090855}, {0.071550, 0.529582}, {0.696988, 0.096969}, {-0.315803, 0.602702}, {-0.053510, 0.368662}, {-0.783694, -0.369834}, {-0.513209, -0.183077}, {-0.389552, -0.423163}, {0.250511, -0.197899}, {1.072604, 1.141232}, {-0.256157, 0.324126}, {-0.845304, 1.344024}, {1.607235, -0.083729}, {0.216531, -0.229193}, {-1.849789, 0.283520}, {-0.273563, -0.437125}, {0.439165, 0.820069}, {-0.071710, 0.044047}, {-0.036628, 0.811854}, {0.949810, 0.092324}, {0.223015, -0.302363}, {-1.151938, 0.219130}, {-0.602013, -0.159929}, {-0.479745, -0.467518}, {-0.596418, 1.115315}, {1.155356, 0.976269}, {-0.339066, 0.667014}, {-0.537118, -0.328546}, {0.231632, -0.251679}, {-0.564684, -0.151955}, {0.404261, 0.591546}, {0.156538, -0.119747}, {-0.265291, 0.441799}, {-0.710732, 0.990762}, {-0.037181, -0.893433}, {-0.608993, 0.072250}, {-0.431612, -0.294577}, {-0.449292, -0.627379}, {1.118185, -0.219789}, {-1.095315, -0.141630}, {-0.906823, 1.379934}, {-0.355207, 0.170146}, {0.012266, -0.140593}, {0.582558, 0.200710}, {-0.264941, 0.654223}, {0.490653, 0.262090}, {-0.806158, 0.423760}, {-0.916022, -0.095727}, {-1.435559, -0.430004}, {-1.383499, 0.819679}, {-0.476148, -0.799760}, {-0.086440, -0.288405}, {0.468541, -0.026429}, {-0.513250, -0.142815}, {-0.903017, 0.571624}, {-0.097263, 0.834344}, {-1.345370, -0.677137}, {1.710559, -0.271618}, {-0.490398, -0.719281}, {-0.660807, 0.868829}, {-0.612810, -0.703682}, {0.992913, 0.444834}, {0.083612, 0.800845}, {-0.140036, -0.531708}, {-1.676151, 0.726057}, {1.115666, 0.611399}, {-0.454838, 0.031736}, {0.338107, 0.033385}, {-1.179649, 0.975904}, {-0.362644, -0.703524}, {0.265567, -0.598433}, {0.612009, -0.911296}, {0.669627, 0.732675}, {0.299979, -1.083474}, {-0.001796, 0.450980}, {-0.312085, -0.240890}, {-0.157834, -0.452017}, {-1.005825, -1.124619}, {1.514761, -0.139328}, {0.205847, -0.624360}, {-0.788916, -0.431594}, {0.185577, 0.530159}, {-0.998640, -0.120038}, {-0.701757, -0.385069}, {0.127492, 0.278129}, {0.644093, -0.318252}, {1.349703, 0.815553}, {1.178677, 0.257816}, {0.290177, 1.567018}, {0.815353, 0.069366}, {0.428406, 0.751920}, {-0.358682, -0.000313}, {0.898652, -0.035994}, {0.007882, -0.203406}, {1.143951, 0.676206}, {-1.579231, -0.510529}, {-0.029383, 0.067530}, {-0.207513, -0.651686}, {-0.171590, 0.197287}, {1.106950, 0.639104}, {-1.153861, 0.109446}, {0.128439, 1.245168}, {-1.709516, 0.155977}, {0.698242, 0.511780}, {0.188021, 0.140058}, {0.214542, -0.603858}, {-0.585161, -0.999378}, {-0.125116, -0.107497}, {1.169544, -0.068827}, {-0.641184, -0.795741}, {0.299439, -0.994491}, {-1.270881, 0.080905}, {0.638892, 0.320804}, {-0.045967, 0.343003}, {0.572705, -0.597459}, {-1.076651, 0.926168}, {1.591514, -0.239336}, {-0.151223, 0.296796}, {-0.547906, -0.598357}, {0.194930, -1.469040}, {-1.066167, -0.488868}, {0.375923, -0.458435}, {0.118752, -0.176519}, {-1.119040, -0.877881}, {0.317179, 1.106286}, {-0.524586, 0.380106}, {0.449438, -0.812248}, {0.218978, -0.240793}, {0.920874, 1.099158}, {0.337065, -1.042434}, {0.165176, -0.575666}, {0.124061, 0.064366}, {-0.972349, -0.449360}, {0.438009, -0.607478}, {1.340508, 0.164007}, {-0.611231, -0.045868}, {-1.894545, 0.313067}, {0.026078, -0.046337}, {-0.993251, 0.529082}, {0.338591, -0.050854}, {0.276524, -1.876008}, {0.553549, -0.641581}, {-1.274207, 1.314869}, {0.082555, 0.483468}, {0.480747, 0.004671}, {0.129514, 0.227370}, {0.488707, -0.498655}, {-0.672859, 0.446981}, {-0.389134, 0.220936}, {0.678780, 0.388861}, {0.004714, 0.113091}, {0.098152, 0.402314}, {-0.584163, 0.655414}, {1.069824, 0.053944}, {1.426146, -0.171673}, {-0.492434, 0.430442}, {0.387326, -0.723692}, {0.923225, 0.315823}, {-0.436266, -0.179644}, {0.679013, 0.839753}, {0.121002, 0.328185}, {0.686624, 0.263510}, {-1.014880, 0.226535}, {0.496357, 0.676631}, {-0.685878, 0.475997}, {-0.816184, -0.690225}, {0.624418, -0.640938}, {0.981859, -0.263799}, {1.266654, -0.559957}, {-0.447318, -1.692190}, {-1.632760, -0.647412}, {1.237379, 1.188506}, {0.224983, -0.193860}, {0.265301, 0.088248}, {1.487341, -0.210028}, {0.975147, -1.738118}, {-0.315739, -1.563346}, {0.759571, -0.834275}, {0.248891, -0.487193}, {0.593097, 0.883254}, {-0.295665, -0.091338}, {0.242557, -0.870492}, {0.076878, -0.401879}, {-1.275364, -0.748062}, {-1.030366, -0.635397}, {-0.059741, 0.281073}, {0.647269, 0.569318}, {0.091019, -0.383699}, {1.550738, -0.017491}, {0.558012, -0.883251}, {1.344487, 0.781872}, {0.425354, -0.544888}, {0.443166, -0.622855}, {0.402391, -0.428524}, {0.322402, 0.140907}, {0.665183, 0.150628}, {0.264571, 0.063423}, {-0.180192, 1.228519}, {0.176187, 0.609708}, {-0.686995, -0.858999}, {0.403250, 1.127242}, {-0.460433, 0.622449}, {0.957213, 0.125857}, {-0.214465, -0.254392}, {0.953570, -0.146560}, {0.351196, -0.097209}, {0.363350, 0.991605}, {-0.842097, 0.750050}, {0.173444, 0.393799}, {0.644241, 0.891357}, {0.518479, 0.829535}, {-0.793455, -0.868437}, {-0.451662, 0.080692}, {1.713382, 0.806600}, {-0.986818, 0.371536}, {-0.732506, -0.086137}, {-0.287972, 1.333554}, {-0.505251, -0.388335}, {0.182226, -0.170677}, {0.656847, -0.151742}, {0.240621, -0.408503}, {-1.207747, 0.579227}, {-0.480071, -1.477118}, {0.397312, 1.160838}, {-0.478893, 0.085660}, {-1.201398, -0.484779}, {-0.875166, 1.306590}, {-0.048226, 0.168645}, {0.575978, 0.334768}, {0.268464, -0.584981}, {0.172204, 0.362164}, {-0.573584, 0.837555}, {0.097430, 0.693442}, {0.710075, 0.430611}, {0.279881, 0.500559}, {-0.495316, -0.284207}, {-0.024375, -0.582689}, {0.503912, 0.590465}, {0.543956, -0.751481}, {-0.113901, 0.583382}, {-0.424219, 0.552384}, {-0.209784, 0.254702}, {2.524661, -1.007793}, {0.453447, -0.787107}, {0.129431, 0.856054}, {-0.725614, -0.060954}, {-0.076847, -0.411651}, {-0.585319, -0.607995}, {0.354620, -0.943508}, {0.004873, 0.874609}, {0.584256, 0.295973}, {-0.751269, -0.621494}, {1.252094, 0.523044}, {0.412384, -0.071193}, {1.460668, -0.424840}, {-1.668383, -0.125918}, {-0.140575, -0.793958}, {-0.602913, -1.530258}, {-0.485749, 0.647443}, {0.327012, 0.012391}, {-0.065556, -1.534338}, {0.040087, 0.692505}, {0.331535, 0.606771}, {-1.081422, 0.655871}, {0.112370, 0.095884}, {0.544109, -0.418467}, {0.883949, 0.869171}, {-0.053113, 1.005180}, {0.084581, 0.070706}, {1.176918, 0.868754}, {0.340621, -0.290651}, {1.069518, -0.145240}, {-0.305978, -0.255205}, {0.264782, 0.828990}, {0.076048, 0.311651}, {1.020387, -0.341573}, {1.171179, 0.317841}, {0.039440, -0.343955}, {-0.196474, -1.120097}, {0.173672, -0.637267}, {0.869413, 0.499800}, {0.402750, -0.274691}, {-0.195399, -0.716727}, {-0.697868, -0.592886}, {1.005820, -0.833437}, {1.667014, -0.928567}, {0.112603, 0.637979}, {-0.378046, -0.094991}, {-0.264513, 0.562337}, {-0.281534, -0.171989}, {0.184469, 0.954685}, {-0.184794, -0.419611}, {0.042573, -0.035524}, {0.526333, 0.216558}, {0.221470, -0.570724}, {0.952384, 0.824810}, {0.377462, -0.439426}, {0.552507, 0.406306}, {0.356019, -0.448320}, {-1.181908, 0.315880}, {1.237299, -1.380363}, {-0.266766, 1.166820}, {-0.543319, -0.487425}, {0.853891, 1.002771}, {0.094524, -1.085172}, {-0.122670, -0.819704}, {0.507893, 1.214830}, {0.066840, 0.391217}, {-0.627340, -1.028818}, {0.048450, 0.066480}, {1.252207, -1.088292}, {1.914396, -0.390461}, {0.783587, -0.456659}, {-1.087500, -0.414070}, {-0.017378, -0.330487}, {0.822467, 0.523086}, {0.544551, -0.396871}, {0.505004, -0.302542}, {0.655396, 0.309852}, {0.744048, -0.677621}, {0.632487, 0.637052}, {0.382478, -0.487032}, {-0.253994, 1.037147}, {1.056620, 0.110571}, {-1.000220, 0.890575}, {0.227128, -0.051171}, {0.249166, -0.869667}, {0.362158, 0.942859}, {0.170629, 0.370184}, {-0.428655, -0.104012}, {0.827800, -0.147575}, {0.050820, -0.016864}, {1.169503, 0.264916}, {1.055638, -1.029984}, {-0.213356, -0.446858}, {0.883660, -0.272743}, {-0.179240, 1.234001}, {-1.124872, -1.414740}, {0.620017, 0.524664}, {0.429714, -1.144124}, {0.071774, 0.024483}, {0.236817, 0.493902}, {-0.345272, 0.403117}, {-0.245305, 0.443081}, {0.456796, 0.439895}, {0.127632, -1.065099}, {1.004045, 0.187642}, {0.910957, 0.711730}, {0.270826, 0.181679}, {0.554230, -0.318570}, {0.415953, 0.287152}, {0.249620, -1.683391}, {-0.183154, -0.452854}, {0.914111, -0.432673}, {-1.329404, -0.200816}, {0.408647, 0.357466}, {0.342816, 0.128307}, {-0.372446, -0.517950}, {-0.268470, -0.945823}, {0.058636, 0.446404}, {0.077650, -0.641117}, {0.500659, 0.569755}, {-1.264154, -0.108240}, {-0.323458, 1.076444}, {0.286058, -0.812280}, {1.130102, -0.533853}, {0.820155, 0.813720}, {-0.369292, 0.599253}, {-0.401040, -1.122319}, {0.015961, 0.999207}, {0.113009, 0.151940}, {-0.326797, -1.045239}, {-0.631927, -0.213249}, {-0.232764, -0.353310}, {-0.277962, 0.172006}, {-1.384869, 0.322627}, {0.657043, 0.378613}, {1.632659, -0.311238}, {-0.128560, 0.380120}, {-0.021658, 0.595562}, {0.055891, 0.020949}, {0.360843, -1.355132}, {-0.441202, 0.653312}, {-0.903583, -0.602887}, {0.589411, -0.501421}, {0.009663, 0.497738}, {0.955606, 0.137016}, {-0.829489, 0.248268}, {-0.623087, 0.554453}, {-0.983462, -0.470261}, {-0.093188, -0.254457}, {0.281605, -0.015601}, {1.143487, -0.512110}, {-0.259302, 0.254954}, {-1.333991, 0.113816}, {1.056834, 0.224210}, {0.478784, -1.143913}, {1.172144, 0.054436}, {0.126576, -0.617074}, {0.129731, 0.567838}, {0.992712, 0.311224}, {-0.080398, 0.093624}, {-0.333385, 0.321406}, {-0.857085, 0.136303}, {-0.193071, 0.112527}, {0.174651, -0.824896}, {-0.044413, -0.225567}, {0.889937, 0.174611}, {0.221331, -0.846178}, {-0.911343, -0.217177}, {-0.598798, 1.486589}, {0.678465, -0.562484}, {1.906944, 0.211159}, {-0.148741, 0.420947}, {0.875071, 0.723028}, {0.500603, 0.175314}, {-0.669264, 0.505343}, {-0.162355, 0.492007}, {0.405254, 0.188295}, {0.730781, -0.170657}, {0.219461, -0.487510}, {-0.607648, -0.266311}, {1.031809, -1.878717}, {0.262365, 0.080670}, {0.704439, -0.342870}, {0.526865, 0.107263}, {0.449751, -0.350958}, {-0.250292, -0.244899}, {0.322347, -0.066403}, {0.250252, 0.152062}, {-0.123904, 0.252763}, {0.097518, 0.668475}, {-0.756972, 0.544061}, {-0.482034, -1.042969}, {0.216007, -0.057989}, {-0.076012, -0.157728}, {-0.193643, 0.281670}, {-0.047023, -1.385414}, {0.425208, 0.198825}, {-1.128706, 1.130083}, {0.749280, 0.273274}, {-0.885277, -0.437183}, {-0.045310, 0.493993}, {0.689210, 0.481689}, {-0.836367, -0.212518}, {0.933511, -0.551367}, {0.323157, 0.145200}, {-0.381780, 0.425335}, {-0.043935, 0.669080}, {0.950537, -0.788988}, {0.888065, 0.870818}, {0.198948, 1.131985}, {0.333668, 1.531210}, {0.329099, 1.260233}, {0.619784, -0.971239}, {-0.362197, 0.842451}, {-0.107082, 0.572070}, {-1.273638, -0.219990}, {-0.220258, 0.341964}, {-0.110476, -0.229104}, {1.871605, 1.085818}, {-0.667567, -0.510587}, {-0.081589, -0.002145}, {-0.485358, -0.264608}, {-0.021298, -1.378931}, {1.061728, -0.050554}, {0.063661, -0.078720}, {0.540324, -0.679083}, {0.040479, -1.175746}, {-1.651713, 0.175791}, {-1.061321, -0.905733}, {-0.144548, -0.403863}, {-0.212951, -0.162069}, {-0.202079, 0.210548}, {-0.481286, -0.089389}, {0.534427, 0.293422}, {-0.077023, -0.592110}, {0.748204, -0.933897}, {0.789813, 0.023419}, {0.364097, -0.688288}, {-0.817344, -0.232389}, {-1.106773, -0.011376}, {-1.149018, 0.589183}, {-0.237988, 0.461070}, {0.144291, -0.866590}, {-0.319867, -0.741546}, {0.467556, -0.563525}, {0.787965, -0.067020}, {-0.377218, 0.346134}, {-0.439111, -0.729340}, {0.111481, -0.725684}, {-0.345130, 0.303179}, {0.221511, -0.444748}, {-0.139828, 1.064259}, {-0.102410, 1.595486}, {-0.033213, -1.118558}, {0.003251, 0.259777}, {-0.418818, 0.218547}, {0.196030, -0.238166}, {0.317481, 0.810128}, {0.685667, -1.193565}, {-0.230818, 1.499649}, {0.527567, 1.628496}, {0.418979, -0.163575}, {0.943900, 0.909605}, {-1.191709, -0.027791}, {0.834602, 1.596546}, {0.285289, 0.562981}, {-0.270156, -0.195083}, {-0.731085, -0.510584}, {0.054180, 0.401694}, {0.222936, -0.465566}, {0.708946, 0.905168}, {0.274867, -0.023564}, {0.255887, -1.523657}, {-0.438371, -0.835342}, {-0.388636, 0.420745}, {0.575120, 0.350653}, {0.165252, -1.180423}, {-0.106785, -0.106601}, {-0.163290, 0.059107}, {-0.048709, -0.263100}, {0.309147, -0.042611}, {-0.927395, 0.617546}, {0.809214, 1.027300}, {-0.146042, 0.142650}, {-0.784247, -1.284659}, {-0.278628, -0.344565}, {0.036556, 0.842948}, {0.912256, 0.120918}, {-1.159161, -0.897982}, {1.183806, 0.116039}, {0.080759, -0.670877}, {1.106555, 0.968417}, {-0.748972, -0.332161}, {0.015659, -0.238382}, {0.072921, 0.945789}, {0.720423, -0.655437}, {-1.184291, -1.204869}, {0.005271, -0.500795}, {-0.947286, 0.565118}, {0.402954, -0.272249}, {-0.051205, -1.269563}, {-0.244921, -0.403400}, {0.688696, -0.966522}, {-1.332749, 1.102022}, {0.248091, -0.614807}, {0.542833, 0.089974}, {0.092234, -1.064895}, {-0.142784, -0.393747}, {-1.915675, 0.230426}, {0.189830, 0.787094}, {-0.630199, 0.176279}, {-1.014131, 1.143947}, {-0.520987, -0.274620}, {0.207558, -0.600789}, {0.091016, -0.244461}, {-0.130663, 0.121426}, {0.004404, 0.214764}, {1.305978, 0.539062}, {1.085432, 0.406738}, {-1.147405, 0.986932}, {-0.527963, 0.040514}, {1.048821, 0.402675}, {0.871429, 1.049595}, {1.770856, -0.090866}, {-0.518070, 0.716500}, {0.487361, 0.022371}, {-0.686924, -0.549181}, {0.340429, 0.907657}, {-0.394719, 1.043237}, {0.202132, -0.329431}, {-0.569046, 0.377140}, {-0.446943, 0.699826}, {-1.179740, -0.505842}, {0.356706, 0.439865}, {-0.598450, 0.446083}, {-1.374043, 0.679741}, {-0.021589, -1.611401}, {0.410296, 0.014703}, {1.604389, 0.059808}, {-1.673347, -0.607599}, {-0.050574, 0.534932}, {1.712505, 1.284287}, {-0.342150, -0.043176}, {0.055806, 0.223800}, {0.355618, -0.311415}, {-0.271235, 0.683074}, {-0.775743, 1.125752}, {-0.378310, -1.640378}, {-1.038677, 0.190076}, {1.174409, -0.118801}, {0.331030, -0.048922}, {0.728780, -0.295898}, {0.693699, -0.972498}, {0.174966, -1.152868}, {-0.876610, -0.017480}, {-0.062463, 0.606038}, {0.974421, 1.248637}, {1.417309, -0.262139}, {0.011829, 1.068245}, {-0.812946, 2.785479}, {0.861911, 0.248256}, {-0.567134, 0.287479}, {-1.000297, 0.453402}, {-0.007071, 0.201681}, {-0.152146, 1.342125}, {0.671739, 0.150808}, {1.116866, 0.838904}, {0.759212, -1.364876}, {-1.013891, 1.460428}, {-0.226149, -1.126365}, {-0.451954, -0.444787}, {-0.021515, 1.034266}, {-0.571367, -0.692007}, {-0.349616, 0.140445}, {0.168654, 0.087815}, {-0.129953, 0.445421}, {0.410578, 0.912573}, {-0.217475, -0.669581}, {-0.222785, 1.245619}, {1.558435, 0.605819}, {-0.488581, -0.336896}, {-0.247095, 0.691559}, {-0.272835, -0.264770}, {0.675699, 0.032700}, {-0.600614, 0.262450}, {0.180303, -0.367078}, {0.919067, 1.375550}, {0.152099, -0.550776}, {-0.201242, 0.036053}, {0.764895, -1.477231}, {0.396961, 0.220377}, {-0.306654, 0.876105}, {-0.991493, 0.187414}, {-0.307614, 0.684635}, {-0.773884, 0.106210}, {-1.566911, 0.170510}, {0.361833, -0.141857}, {-0.600408, -0.446279}, {1.421652, 0.535651}, {0.798181, 1.741752}, {0.828463, -1.351656}, {1.064522, 0.356219}, {-0.261882, -0.068944}, {-0.274206, -0.863308}, {-0.472305, -0.610240}, {1.169302, 0.073319}, {0.212464, -0.516636}, {0.072813, 0.172732}, {-0.402815, -0.754899}, {0.240675, 0.006754}, {-0.413280, 0.162876}, {-0.878790, -0.579111}, {-0.490272, -1.206031}, {-0.500456, -0.219817}, {0.069254, -1.439473}, {0.914958, 0.485123}, {0.759158, -0.336522}, {0.798766, -0.831419}, {0.572361, -0.465976}, {-0.130641, -0.259763}, {-0.529278, 0.642024}, {0.169663, 1.957850}, {0.290362, 1.466387}, {0.486745, -0.303996}, {-0.739829, 0.729494}, {-1.119647, -0.438709}, {1.199651, 0.132905}, {-0.028488, 0.166904}, {0.294118, 1.343646}, {-1.078798, -0.045417}, {-0.144834, 0.724221}, {-0.286147, 0.584877}, {-1.025536, 1.281690}, {1.349738, 0.051777}, {-0.163706, 0.861461}, {1.304346, -1.415064}, {-0.220065, 0.578733}, {-0.073421, -0.292662}, {-0.407989, 1.100458}, {0.306779, -0.903447}, {-0.053132, -0.864616}, {-0.613827, 0.320417}, {-0.157362, -0.152289}, {-0.363881, -0.696127}, {-0.644928, -0.357587}, {0.523401, -0.545460}, {-0.284975, 0.437116}, {-0.332811, 0.194424}, {0.886436, -0.283097}, {-0.353503, 1.253798}, {0.777206, 1.140778}, {-0.176515, 1.349269}, {0.200192, 0.474405}, {-0.090735, 0.782045}, {0.108052, -0.393573}, {-0.097758, 0.133294}, {-0.521819, -0.069948}, {0.495179, 0.903907}, {-1.635143, 0.044403}, {-1.044754, 0.995099}, {-0.029236, 0.231209}, {-0.763150, -0.740411}, {0.666666, 0.948566}, {-0.996496, 0.103076}, {0.066595, 0.386752}, {1.079913, -0.587405}, {-0.126881, 0.324364}, {0.242668, 0.274037}, {-0.167854, -0.463373}, {1.254502, -1.338299}, {-0.814549, -0.540325}, {0.604115, 0.960306}, {-0.762464, 0.255581}, {-0.145291, -0.151457}, {0.539461, 0.564589}, {0.452901, -0.644154}, {-0.121667, 0.123363}, {0.172408, 0.943437}, {0.349217, -0.431470}, {0.193653, -0.286326}, {0.373892, -0.225571}, {-0.469563, -0.051636}, {0.703894, 0.076285}, {-0.342531, -0.919488}, {-0.093593, 0.467140}, {-0.370503, -0.159512}, {-0.427136, 0.822814}, {0.484980, 0.660569}, {0.380112, 1.642120}, {0.741086, -1.181946}, {-0.861984, -0.551848}, {-0.326551, 0.051893}, {-0.673266, 0.128672}, {0.477538, -0.448337}, {0.424523, -0.099635}, {-0.200313, 0.300309}, {-0.319153, -1.021980}, {-0.640520, -0.659841}, {-0.189198, 0.771204}, {0.163659, -0.315306}, {0.756345, 0.736886}, {-0.321533, 0.169677}, {-1.755957, 0.206259}, {-2.116119, 1.256344}, {-0.750604, 0.344105}, {0.267358, -0.320943}, {1.438068, -0.187643}, {-0.629031, -0.059064}, {0.769031, 0.174502}, {0.611810, 0.637876}, {0.509224, 1.423682}, {0.029716, -0.226301}, {-0.529129, -0.458146}, {0.588062, 0.568816}, {-0.261343, 0.028227}, {0.000322, -0.506508}, {-0.454871, -0.212809}, {-1.170607, 0.073436}, {1.134318, 0.212980}, {-1.039946, 1.151672}, {0.904145, -0.236109}, {0.572173, -0.222902}, {0.354798, -0.056846}, {0.617914, -0.121507}, {-0.485005, -0.789432}, {0.555901, 1.045454}, {-0.342510, 0.662108}, {0.477863, 0.919492}, {-0.886891, -0.151806}, {0.073477, 0.660208}, {-0.836821, -0.492241}, {0.868206, 0.057640}, {-0.278170, -0.344302}, {1.740416, 0.163213}, {0.710730, 0.125488}, {0.283223, 0.313698}, {0.549759, -0.103777}, {0.979863, 0.559804}, {-0.290891, -0.894974}, {0.187074, -1.035208}, {0.722918, -1.398915}, {-0.581228, 0.581626}, {0.289505, -0.332083}, {0.489170, -0.566258}, {-0.889190, -0.521928}, {-0.262424, 0.143982}, {-1.279355, -0.724648}, {0.257297, 0.851178}, {-0.306166, -0.469346}, {0.045235, -0.453040}, {0.285296, 0.528722}, {-0.568471, -0.086437}, {-0.449844, 0.791630}, {0.440313, 0.203210}, {-0.715834, 0.084234}, {-0.535316, -0.471520}, {0.545214, 0.542797}, {0.858170, -0.392007}, {0.459011, 0.277321}, {0.630900, 0.621847}, {-0.661226, -1.433006}, {0.657691, -0.355625}, {-0.083747, 0.737402}, {-0.427198, -0.957863}, {-0.194041, 1.158089}, {-0.546119, -0.629835}, {1.668000, 1.040309}, {-0.407113, -1.748223}, {0.586268, 0.131234}, {0.824612, 0.043758}, {0.077720, 0.434675}, {-0.878529, 0.066930}, {-0.910217, -0.770628}, {-0.399495, 0.223856}, {-0.776131, 0.072596}, {0.968979, -0.378461}, {-0.788724, -0.419890}, {-0.717876, -0.129177}, {0.649467, -0.543748}, {-0.083694, -0.154461}, {0.433057, 0.341816}, {-0.109326, 0.473616}, {-0.306007, 0.525211}, {1.334709, 0.792284}, {0.450165, 0.092275}, {1.269496, -0.283253}, {-0.987681, 0.679147}, {0.700508, -0.765557}, {0.020683, 0.657076}, {0.556750, 0.196350}, {-1.036465, 0.515704}, {0.529448, 0.036856}, {-1.108420, -0.332631}, {-0.792801, -0.226293}, {-0.806708, -0.100053}, {-0.810484, -0.306346}, {-0.181914, -0.053941}, {-0.967090, 0.696498}, {1.192545, -0.294435}, {-0.566689, -1.356403}, {-0.828942, -0.407377}, {-0.621438, 1.217900}, {-1.028343, 0.521929}, {1.025599, -0.656932}, {0.138542, 0.489792}, {-0.202065, 1.257500}, {0.043756, -0.176369}, {0.685895, -0.249690}, {0.549922, 0.885082}, {-0.189354, -1.551150}, {-1.118100, 0.020367}, {0.474848, 1.184561}, {-0.050645, 1.195300}, {0.867725, -0.380298}, {1.033550, 0.154888}, {-0.477175, -0.457725}, {1.148061, 0.585421}, {0.380830, -0.754913}, {-0.106258, 0.080392}, {-0.092959, -0.386023}, {-0.358937, -0.724895}, {-1.374994, 1.067211}, {0.460321, 0.527363}, {-1.238789, -0.089993}, {1.464682, 0.876127}, {-1.234731, 1.128579}, {0.724792, -0.450972}, {-1.521916, 0.809717}, {-0.388497, -0.174976}, {0.086236, 0.748876}, {1.100546, -0.528230}, {0.226367, 0.697463}, {0.744283, 1.254010}, {-0.249234, -0.694237}, {0.167903, 0.298213}, {-0.228874, -0.560931}, {0.394532, 0.449698}, {-0.344909, -0.227098}, {-0.415043, -1.065131}, {0.126645, 1.162114}, {1.370732, -0.619147}, {0.823699, -0.552124}, {0.345714, -0.232139}, {0.894510, -0.203477}, {0.475686, -1.010735}, {0.661874, 0.478840}, {-0.521820, -0.526937}, {1.314386, 0.651335}, {-0.319251, -0.196685}, {-0.505632, 0.967049}, {0.590235, 0.712258}, {1.380347, 1.137978}, {0.152855, -0.242439}, {0.291709, -0.255131}, {1.260959, -0.491270}, {-1.089113, -0.159145}, {0.435095, -0.676862}, {-0.340494, 0.469703}, {1.302442, -0.532868}, {-0.378602, -0.400420}, {0.925227, -0.607976}, {0.251869, 0.591035}, {-0.646873, -0.636483}, {-0.328268, -0.897893}, {1.089412, -0.159031}, {0.814358, 2.220698}, {0.772924, -0.691036}, {-0.784735, 1.137714}, {-0.042070, -0.600536}, {0.592465, -0.209877}, {0.769297, 1.296465}, {0.448652, -0.198575}, {0.025998, 0.141744}, {0.485850, -1.270583}, {-0.846149, -0.038597}, {-0.277242, -0.731952}, {0.198053, -1.496392}, {-0.073055, 0.046129}, {0.574797, -1.238401}, {0.133512, 0.156586}, {0.105417, 1.088396}, {0.143785, 0.480135}, {0.306526, -0.884781}, {0.722423, -0.916666}, {-0.657561, 0.272999}, {-0.557441, 1.138685}, {-0.782249, -1.293763}, {0.453444, 0.532557}, {1.013185, -0.405740}, {-0.094466, 0.752667}, {1.286455, -0.593367}, {-0.298950, 0.306095}, {1.181346, 0.559262}, {0.461658, -0.639042}, {-1.291839, -0.121779}, {-0.326193, 0.113747}, {-1.154270, -0.089857}, {-0.351472, -1.491822}, {0.720080, -0.419379}, {-0.672820, 0.094205}, {0.812964, -0.064953}, {-1.294077, 1.076364}, {-0.133796, -0.745281}, {-0.393393, 0.385628}, {-0.602521, -0.377900}, {0.528132, -0.164217}, {0.505215, -0.104243}, {0.765574, 0.926339}, {2.024634, -0.477364}, {0.017166, 0.179716}, {0.399008, -1.200177}, {-1.090208, 0.311701}, {-0.158439, -0.916668}, {1.058774, 0.191072}, {-0.464662, -0.983746}, {0.540500, -0.331676}, {0.139759, -0.346498}, {-0.331954, 0.206804}, {-0.956494, 0.357149}, {-0.944290, -0.414694}, {1.172465, -0.536726}, {-0.541046, 0.365657}, {0.276923, 1.402963}, {-0.242318, 0.269377}, {0.965338, -0.785207}, {-0.718256, -0.028312}, {0.231175, 0.665614}, {-0.947264, -0.913082}, {-0.501002, 1.094529}, {0.352224, -0.272040}, {0.397494, 0.185641}, {-0.151725, 0.717844}, {0.839893, 0.459279}, {0.801901, -0.313492}, {-0.684958, 0.226865}, {-0.212219, -0.213841}, {0.892238, -0.435760}, {1.314788, -0.271844}, {0.836362, 0.043882}, {-0.957485, -0.948085}, {1.079672, 0.119647}, {-0.513333, 0.529166}, {0.438430, -0.923301}, {0.175442, -0.539418}, {-0.003292, -0.268481}, {-0.438336, 0.598716}, {0.174795, 0.663858}, {0.409033, 1.094613}, {0.766143, 0.882464}, {0.116399, 0.720590}, {-0.563363, 0.971493}, {-1.542577, 0.365604}, {0.514771, -0.458050}, {-0.346020, 0.184177}, {-1.029390, 0.631160}, {0.916323, 0.569872}, {0.330674, -0.403426}, {-0.815112, 0.338683}, {-0.233795, -0.536290}, {-0.156529, -1.368641}, {-0.263744, 0.144793}, {0.546089, 0.239988}, {-0.176949, -0.463405}, {-0.369226, -1.044596}, {-0.505317, -0.388794}, {-0.451340, 0.812733}, {0.325007, 0.206856}, {-0.810237, -1.085805}, {0.165055, 0.996302}, {-0.931375, 0.613591}, {-0.126483, -0.744854}, {0.397855, 0.364294}, {0.287751, -0.500914}, {-0.053719, 0.982818}, {-0.553468, 0.292330}, {0.179430, -0.597617}, {-1.198685, -0.800000}, {1.186764, -0.992792}, {0.724964, 0.103448}, {0.963127, 0.232599}, {0.092029, 0.364811}, {0.023554, 0.358368}, {-0.156919, -0.181441}, {0.186716, 0.206933}, {0.533803, -0.467186}, {-0.459122, 0.140642}, {0.994366, -0.893881}, {0.452242, 0.282844}, {-1.757045, -0.228025}, {0.966083, -0.036048}, {-0.134917, -0.207168}, {0.124213, -0.129237}, {-0.080806, -0.024992}, {-0.799884, -0.669277}, {-0.620681, -0.397588}, {-0.352503, -0.044189}, {0.092370, 0.364939}, {0.449970, 1.026360}, {0.529612, 0.063033}, {-1.083693, -0.194379}, {0.369823, -0.277191}, {-0.177423, -0.619947}, {0.562466, 1.467675}, {-0.573227, 0.920231}, {0.552988, -0.530708}, {0.844829, -1.136412}, {0.558908, 0.169169}, {0.626978, -0.115006}, {0.351068, -0.464366}, {-0.762156, -0.066833}, {-0.117971, 0.052717}, {-0.570717, 0.761831}, {-0.514255, 0.164156}, {0.013305, -0.055138}, {-0.245547, 0.642430}, {0.216396, 0.005143}, {-0.507045, -0.685026}, {1.118325, 0.364330}, {-0.590687, -0.140389}, {0.013596, 0.844098}, {-0.399225, 0.716323}, {-0.417137, -0.565919}, {0.092852, 0.416915}, {-0.943451, -0.152195}, {-1.020240, 0.801126}, {-0.611728, 0.436773}, {-0.019905, -1.332957}, {-0.690646, -0.464269}, {0.907830, -0.494683}, {-0.281882, -0.749796}, {-1.546127, -1.007659}, {0.830144, -0.015166}, {-0.390510, -1.043779}, {0.117684, -0.482510}, {0.924184, 1.260658}, {-1.061867, 1.221469}, {-0.815122, -0.023800}, {-0.103022, 0.298058}, {-0.252904, 0.230901}, {0.021567, -0.875517}, {0.248461, 0.093681}, {0.264196, 0.004397}, {-0.311626, -0.620671}, {0.280419, 0.771652}, {-0.018466, 0.219481}, {1.700853, -0.112003}, {-0.882344, 0.018746}, {-0.006374, 0.087725}, {-0.100868, 0.209463}, {0.512129, 0.523700}, {-0.317199, 0.307879}, {0.294301, -0.330502}, {0.601020, -0.125700}, {-0.739890, -0.023356}, {-1.444838, 0.568493}, {-0.134116, -0.671218}, {1.005881, 0.367029}, {-0.738930, 0.646782}, {-0.342683, -0.504731}, {0.716899, -0.539596}, {0.738524, 0.070291}, {0.386202, 0.440067}, {1.345032, 0.180183}, {-0.018880, -0.031769}, {-0.378806, -0.171766}, {-0.286278, -0.617444}, {-0.080975, -0.526326}, {0.700062, -0.604598}, {-0.885363, 0.470310}, {-1.156147, -0.054617}, {0.133744, -0.226376}, {-0.240292, -1.157249}, {0.063137, -0.793579}, {0.030749, -0.302199}, {0.090525, 0.483558}, {0.073085, -0.481644}, {-0.223842, -2.140667}, {0.031752, 0.005003}, {1.231275, -0.530212}, {1.038917, -0.422673}, {0.394114, 0.524978}, {-1.097829, 0.484170}, {0.431677, 0.251181}, {1.225130, -0.837454}, {-0.186695, 1.110229}, {0.338671, 0.141820}, {-0.023210, 1.021750}, {0.990528, -1.624820}, {0.011025, -0.247794}, {-0.339063, 0.407060}, {0.384226, 0.510580}, {-0.757315, -0.246458}, {-1.582920, 0.107500}, {-1.012034, 0.035645}, {1.968999, 0.055935}, {-1.424400, -1.006629}, {-0.381551, -0.428135}, {0.437026, 0.843355}, {0.179125, 0.109344}, {-0.449217, 1.913849}, {0.427694, -0.425086}, {-0.211741, -0.700567}, {-0.188227, -0.847564}, {-0.594710, 1.483595}, {-0.072411, 0.766453}, {1.150670, 0.617209}, {-0.386818, -0.026636}, {-0.385528, -1.273407}, {-0.361319, 0.734053}, {0.098469, -0.126693}, {-1.389158, 1.163252}, {-0.460623, 0.471711}, {0.338909, -0.460817}, {0.130190, 0.607843}, {0.207546, 0.467445}, {-0.587233, -0.598555}, {0.608060, 0.186716}, {1.153664, 0.245205}, {0.328400, 0.759055}, {-0.694971, 0.220107}, {-0.338761, -1.561954}, {-0.594066, -0.121286}, {-0.422942, -0.435408}, {-0.514954, -0.135974}, {-0.685185, 0.540584}, {-0.824955, 1.303292}, {0.226211, -0.342887}, {-0.598595, -1.523227}, {0.678569, 0.475931}, {0.630242, 0.483559}, {-0.620338, 0.518139}, {0.919177, -0.181962}, {0.507928, -0.566914}, {-0.488096, 0.812728}, {-0.364813, 0.705453}, {-1.369744, 0.240855}, {0.714938, -0.709527}, {0.582868, 0.091790}, {-0.180208, 0.726072}, {0.452558, 0.415231}, {0.495553, -1.877462}, {0.582132, -0.333465}, {0.833380, -0.489799}, {0.267983, 0.623820}, {-1.556596, 0.244596}, {0.566314, 0.288588}, {-0.067564, 1.023165}, {0.505347, 0.922345}, {-0.470138, -0.951912}, {0.660978, 0.761539}, {0.621641, 0.135908}, {1.400944, 0.226884}, {0.652989, -0.565545}, {0.237052, -0.192473}, {0.953481, -0.437290}, {-0.532917, 0.753979}, {-0.401020, 0.182003}, {-0.774883, 0.538031}, {-0.320697, -0.549711}, {1.663374, 0.724379}, {0.588294, 1.303208}, {1.044164, -0.361746}, {-0.145359, -1.690668}, {-0.825189, 1.215719}, {-1.088180, -0.300943}, {-0.430774, 0.622501}, {0.316668, 0.544425}, {0.504829, -0.457687}, {-0.834387, -0.240484}, {-0.306896, 0.687505}, {0.268810, 1.644408}, {-0.780049, 1.087894}, {-1.538673, -0.201769}, {0.535403, 0.605154}, {0.019388, -0.435640}, {-0.440314, -0.055865}, {1.298971, 1.128651}, {0.177042, 1.260625}, {-0.854552, 0.621748}, {-0.677730, 0.607538}, {0.203182, 0.219196}, {1.347539, 0.528045}, {-1.261542, 0.367327}, {-0.137496, 0.330269}, {0.960711, 1.133014}, {0.687000, 0.111912}, {-0.181358, 1.091956}, {0.223343, -0.483492}, {-0.273860, 0.362866}, {-0.011742, -0.136568}, {0.275521, -1.429957}, {-0.273297, -0.074082}, {0.290409, -0.066311}, {-0.228273, -0.362296}, {-1.378862, -0.444713}, {0.241775, 0.546076}, {0.039962, -0.186289}, {-0.036983, -0.286490}, {0.091318, -1.140707}, {0.511967, -0.298166}, {-0.103362, 0.567148}, {-1.507135, -0.446682}, {-0.002256, -0.382378}, {0.793055, 0.713325}, {0.519248, -0.273429}, {0.373212, 1.206027}, {-0.186569, 0.345384}, {-1.037811, 0.160379}, {0.100911, 0.728662}, {0.348187, 1.397238}, {1.053003, 0.787660}, {0.851118, -0.072377}, {0.885419, -2.014642}, {0.224168, -0.873868}, {0.866546, -1.231568}, {-0.196727, 0.530071}, {-0.510674, -0.434893}, {0.256375, -0.296321}, {1.333570, 1.516369}, {0.216969, 1.545445}, {0.164709, 0.254986}, {0.100115, -0.605479}, {0.086380, 0.234960}, {0.907601, -0.649032}, {-1.199984, 0.075438}, {1.186217, -0.332770}, {-0.270511, -1.202410}, {0.826974, 0.035252}, {0.331603, -0.037377}, {0.476641, 0.109902}, {-0.174187, -0.546405}, {0.159829, -0.563128}, {-0.251076, -0.337193}, {0.587231, 0.086443}, {-0.004139, -0.062337}, {0.847037, -1.213560}, {0.720797, -0.302577}, {-0.313615, 1.223469}, {-0.385838, 0.548932}, {-0.681006, 0.375296}, {-0.002250, -0.626297}, {0.044566, -0.714328}, {-0.785516, 0.625881}, {1.008274, -0.326630}, {-0.475841, 0.809907}, {-0.189279, -0.144121}, {-0.147481, -0.167430}, {0.297717, -0.662249}, {0.903221, -0.828173}, {-0.076715, -0.103500}, {-0.220609, 0.037787}, {0.500891, 0.420473}, {0.273765, -1.134860}, {0.469416, -0.299483}, {0.490976, 0.584688}, {0.840863, 0.462752}, {-0.374205, -0.498565}, {0.970595, 1.606044}, {0.351297, 0.387913}, {-1.301970, 1.173260}, {0.132588, 1.491314}, {-1.181621, -0.261585}, {-1.361050, 0.972321}, {-0.153063, -1.707550}, {0.758497, 0.123412}, {0.238820, 0.155025}, {-0.254726, 0.301346}, {-1.010450, 1.160231}, {-1.240972, 0.287896}, {0.784458, -0.105589}, {-0.536336, -0.405889}, {-0.146211, 0.253732}, {-0.878979, 0.549278}, {0.065870, -0.198147}, {-0.954775, 1.043484}, {0.557617, 1.047797}, {0.493106, -0.919198}, {-0.170124, 0.314583}, {0.688442, 0.122648}, {-1.023681, -0.111431}, {0.801745, -1.821817}, {-0.723679, 0.440206}, {-0.453669, -0.190110}, {-0.581141, 0.078254}, {-0.941791, -0.060551}, {0.890659, 0.122601}, {0.963847, 0.066347}, {0.759853, -0.199802}, {-0.106224, 0.458618}, {1.065279, 0.399051}, {-0.321525, 0.808861}, {-1.208707, 0.585097}, {0.866323, -0.559539}, {0.474646, 0.039294}, {1.902251, 0.915424}, {-0.455613, -0.414985}, {-0.246282, -0.640345}, {-0.333131, 0.196717}, {-0.493399, -0.772411}, {0.204786, -0.870497}, {0.309500, -0.533279}, {0.910107, 0.510703}, {-0.056168, -0.123584}, {-0.491468, -0.572133}, {0.375774, 1.162053}, {0.063430, 1.272410}, {-1.406177, -0.010975}, {-0.087637, -0.226010}, {-0.563296, 0.452261}, {-0.449694, -0.554259}, {0.707040, 0.188047}, {1.601323, -0.206911}, {-0.923501, 0.574700}, {-0.966020, 0.679890}, {0.268570, 0.368709}, {0.212696, -0.904453}, {0.194974, 0.488184}, {0.470565, 0.918929}, {-0.684581, -0.142648}, {-0.844954, -0.189146}, {-0.542152, -0.747252}, {0.495473, 0.403557}, {-0.688008, -0.913830}, {-0.059830, 0.517971}, {-2.171862, 1.024477}, {-1.249624, -0.015772}, {0.015926, 0.734811}, {0.457707, -0.081584}, {-0.009916, -0.098752}, {0.810571, -0.772556}, {1.274648, 0.151342}, {1.083434, -0.643550}, {1.044509, 0.338194}, {-0.378948, 0.039118}, {-0.075820, -1.730294}, {0.774083, 0.620047}, {-0.066915, -1.689347}, {0.731451, -0.094387}, {0.259309, -0.417934}, {-0.498563, 0.708930}, {0.774393, 1.168883}, {-0.172278, -0.053409}, {-0.293542, -0.414288}, {1.373904, 0.468393}, {-0.086211, 0.448331}, {0.141485, -0.030337}, {-0.107671, 0.406149}, {0.098529, 0.748433}, {-0.267386, -0.031872}, {-0.748722, -0.653857}, {0.004819, 0.286587}, {0.320934, 0.502389}, {0.434680, 0.257350}, {0.042256, -0.018636}, {-0.305369, 0.076753}, {-0.205572, -0.818070}, {0.936762, 0.858510}, {-0.423207, 0.799304}, {0.072296, 0.374763}, {-0.156480, -0.604657}, {-0.968287, 0.266390}, {1.115752, -0.133177}, {0.666615, -0.815890}, {0.472277, 0.132071}, {-0.193603, 0.875236}, {0.318294, -0.031684}, {1.004666, -0.833170}, {0.262337, -0.253264}, {0.691983, 2.042454}, {0.209886, -0.290278}, {0.278291, 1.124044}, {-0.207172, 1.567355}, {0.238977, -0.323462}, {-0.223252, -0.119456}, {0.303814, 1.004795}, {1.200940, 0.213197}, {-0.687440, -1.084798}, {-0.198295, 0.195513}, {0.046763, 0.521581}, {-0.510831, -0.423679}, {0.244499, -0.628926}, {0.698044, -0.623503}, {0.416896, -0.041211}, {-0.350345, -0.226075}, {0.695417, 0.604628}, {-0.383804, 0.383435}, {0.086188, -0.192144}, {0.781463, -1.146905}, {0.098847, -0.660911}, {-0.335006, 0.419788}, {1.122026, -0.064158}, {0.384520, -0.618539}, {0.479143, -1.027819}, {1.107169, -0.524087}, {0.383901, -0.402677}, {0.194053, 0.255903}, {0.477393, 0.074827}, {-0.410776, -0.444651}, {-1.991022, -0.394045}, {0.216143, -0.334173}, {-0.563452, 0.819894}, {-0.311190, 0.640443}, {-0.243058, 0.560057}, {-0.546188, -0.070783}, {-0.615962, 0.363862}, {0.240774, 0.912485}, {0.219238, -0.849157}, {-0.885919, -1.007370}, {0.190039, 0.543608}, {1.070954, 0.179088}, {0.554915, -0.018668}, {1.371742, -0.335006}, {-0.645975, 0.229713}, {-0.736469, 0.669922}, {0.001929, -0.033222}, {0.701460, -0.205447}, {0.486977, 0.824796}, {1.258540, -0.391141}, {-0.036946, 0.293066}, {0.670274, -0.247172}, {-1.768643, 0.859413}, {0.290706, -0.231858}, {-0.102970, -0.041794}, {-0.418989, -0.849960}, {0.098567, 0.921322}, {-0.459667, -0.893404}, {-0.804486, 1.022065}, {-0.978005, -1.097316}, {0.774600, -0.328074}, {-0.242046, 0.003126}, {-0.056869, -0.164227}, {-0.521315, 0.145929}, {0.311763, -0.783776}, {0.116789, 0.376795}, {0.518519, -0.236313}, {0.134501, -1.013336}, {-1.199793, -0.823016}, {0.122597, 0.539057}, {0.664613, 0.256397}, {-0.316770, 0.490154}, {-1.263702, -0.252355}, {0.550430, 0.282031}, {1.070783, -0.094371}, {0.587430, -0.613368}, {0.684523, 0.740690}, {-1.023715, 0.345296}, {0.107663, 0.265091}, {0.215299, -0.153788}, {-0.342020, -1.389234}, {1.512062, 0.110530}, {-0.255843, -0.304788}, {0.344653, 0.472651}, {1.604399, 0.282072}, {-0.123394, -1.073324}, {0.823059, 0.235494}, {1.005127, -0.422945}, {1.087857, 0.942103}, {0.388606, 0.630055}, {-0.489398, 0.271613}, {0.662806, -0.072930}, {-0.505174, -0.083009}, {-1.099044, -0.087619}, {1.682942, 0.105597}, {-0.963602, -1.159610}, {1.770411, -0.665544}, {0.274943, -0.029549}, {-0.368023, 0.498046}, {0.382125, 0.110398}, {0.143411, -0.471052}, {-0.962301, -0.125190}, {-0.382881, -0.300460}, {-0.702084, -1.028932}, {0.609839, -0.269770}, {-0.322227, -0.046758}, {0.196679, -0.841992}, {0.389128, 0.554504}, {-0.138058, -0.153224}, {0.225274, 0.357098}, {-0.326247, -0.149102}, {0.189830, 2.038718}, {0.622165, -0.578665}, {-0.555788, -1.517656}, {0.223546, -0.956908}, {0.036102, -0.216316}, {-0.527827, -0.790654}, {-0.703457, 1.216742}, {1.896473, 0.420610}, {-0.919048, -1.717801}, {-0.564716, -0.463391}, {0.072924, 0.515583}, {1.213858, 1.273362}, {-0.585628, -1.777402}, {0.315143, 0.314280}, {1.599076, 0.263103}, {0.551870, -0.508782}, {0.198278, -0.171192}, {0.370793, 0.390001}, {0.186273, -0.685544}, {-1.334139, -0.047514}, {0.859364, 1.107470}, {1.108595, -0.249803}, {-0.767836, 0.024632}, {-0.755180, 0.202525}, {0.558701, -0.646325}, {-0.864527, -0.056300}, {-0.568031, 0.020910}, {-0.192644, -0.239731}, {0.335820, 0.941753}, {-0.905318, 0.078626}, {1.348554, -0.274217}, {0.718711, 0.937416}, {0.701784, 1.186619}, {0.783715, 0.942788}, {0.511822, -0.269353}, {0.262749, 0.224861}, {-0.369690, 0.087992}, {0.119908, 0.245625}, {-0.755046, -0.352329}, {1.050758, -1.220104}, {1.112945, -0.869696}, {0.154116, -0.398725}, {-0.682546, -0.178220}, {0.000616, -1.176764}, {0.582237, -0.360093}, {-0.048804, -0.182963}, {0.343632, -1.302243}, {-0.059123, 1.169904}, {-0.849233, 0.417740}, {0.802972, 0.824939}, {-0.259347, 1.401916}, {0.262680, 1.027712}, {0.119396, 0.842189}, {0.789537, 0.288341}, {0.873023, -0.678867}, {-0.282999, -0.803959}, {0.032434, -0.332495}, {0.362466, -0.869451}, {1.303907, -0.351392}, {-0.261026, -0.184508}, {0.069724, 0.222538}, {-1.692123, -0.176506}, {0.182023, -0.297168}, {1.166731, 0.974402}, {0.182690, 0.901593}, {-2.707181, 0.294289}, {-0.422655, 0.616411}, {0.818191, -0.536655}, {0.200265, -0.152867}, {-0.571663, -0.576991}, {-1.149922, 0.237294}, {0.683474, 0.514764}, {-0.327411, -0.298380}, {0.543399, 1.134105}, {0.221413, -0.885642}, {1.120697, -0.024074}, {-0.727365, 0.561341}, {-0.060173, -0.140444}, {0.010505, -0.532622}, {0.085622, 0.854726}, {0.776915, 0.627544}, {-0.480372, 1.612013}, {0.035874, 0.948871}, {-0.202889, 0.071192}, {1.071655, 0.563884}, {-0.856493, 0.157759}, {1.465912, 0.740984}, {-0.975957, 0.149083}, {0.017006, 0.661242}, {0.677641, 0.736448}, {-0.055937, 1.619199}, {0.017620, 0.501037}, {-0.329608, -0.642669}, {0.460941, -0.086157}, {-0.677150, -0.999700}, {1.085090, 0.487071}, {0.766686, 0.736476}, {0.245465, -0.602065}, {0.259054, -0.926270}, {0.241794, 0.493962}, {0.213145, -0.717582}, {-0.164479, 1.252053}, {1.520899, 0.765972}, {-0.262001, -0.514990}, {0.394009, 0.530819}, {-0.398782, 0.610431}, {0.061806, -0.058270}, {0.630771, 1.025669}, {-0.235617, 0.164118}, {-0.497122, 0.651216}, {0.906863, 0.812694}, {0.942602, 0.037286}, {0.353956, -0.268639}, {0.721879, -1.407883}, {0.336154, -1.490511}, {0.463325, -0.409685}, {-0.654404, 0.164448}, {1.353668, -1.381831}, {0.902985, 1.291975}, {-0.673638, 1.082945}, {0.096381, 0.069481}, {0.268580, -0.006480}, {0.351301, 0.210100}, {-0.111290, 0.763114}, {0.482922, 0.206619}, {0.265563, 0.454462}, {-1.242255, -1.027363}, {-1.082879, 0.470826}, {0.192528, -1.507715}, {-1.393900, 0.462004}, {-0.328719, 0.813496}, {0.736296, 0.834899}, {0.401170, -0.096215}, {0.570525, -0.070442}, {-0.633878, -0.590925}, {0.147991, 0.069756}, {0.368475, 0.553471}, {-0.936644, -0.634945}, {-0.209835, 0.061014}, {0.376984, 0.415601}, {-0.053992, 0.927934}, {-0.664815, -0.230709}, {-0.368558, -0.869841}, {0.869019, 0.207397}, {-0.077032, 0.015291}, {-1.041657, -1.084937}, {-0.040849, -1.191117}, {-0.040502, -0.637029}, {-0.113547, -0.036059}, {-0.376653, 0.011245}, {-0.611166, -0.722246}, {-0.252785, 0.199909}, {-0.554396, -0.777145}, {1.508706, 1.960357}, {0.802878, -1.058245}, {-0.668372, -0.380450}, {0.934698, 0.328675}, {-0.484190, -0.777490}, {-1.096700, -0.599480}, {0.133311, -0.708274}, {-0.037022, -0.697705}, {-0.094335, -0.104415}, {0.578229, -0.473142}, {0.521239, 0.402009}, {-0.601727, -0.589783}, {1.068671, -0.802095}, {-0.179212, 0.761986}, {-0.098283, -0.660154}, {-1.325546, 0.733457}, {1.204701, 0.635880}, {0.071453, 0.547081}, {0.116252, 0.809687}, {-0.289209, -0.786678}, {0.060218, -0.093927}, {1.040621, 0.201639}, {0.663944, -1.404113}, {0.323341, 0.022382}, {-1.173198, 1.186145}, {0.631958, 0.811309}, {0.140914, -0.812980}, {0.918574, -0.388552}, {0.137629, 0.245151}, {0.286895, -1.006635}, {-0.883709, 0.464159}, {1.149660, 0.500635}, {0.869576, -0.471720}, {0.820353, 0.381747}, {-0.764649, -0.632796}, {-1.436934, -0.113737}, {-2.086755, 0.084057}, {1.010455, -0.246709}, {-0.149211, -1.532015}, {0.496285, 0.442942}, {0.101726, -0.696911}, {0.536346, -0.055237}, {-1.001254, -0.165978}, {0.527046, 1.269435}, {0.251018, -0.408625}, {-0.398318, 1.683260}, {-0.838820, -0.091386}, {1.301904, 1.505187}, {0.156433, -0.483412}, {-0.888996, -0.920372}, {1.318649, 0.539760}, {0.608943, 1.036337}, {-0.290264, -1.659074}, {-0.100778, 0.034840}, {-0.597380, -0.927067}, {2.662626, -0.397478}, {1.115005, -0.106991}, {0.838668, -0.032934}, {-0.046413, 0.184593}, {0.262956, -0.070027}, {0.126185, 1.919012}, {-0.267772, -0.664473}, {0.614649, 0.179683}, {-0.527418, 0.106321}, {-0.240424, 1.418708}, {-0.112591, -0.348458}, {1.337480, -0.026564}, {-0.112471, 0.124444}, {-0.491147, 0.252096}, {-0.291925, -0.069114}, {0.572380, 0.425877}, {0.216700, 0.480072}, {0.002923, -0.590032}, {-0.221473, 0.797032}, {-0.450239, -0.109167}, {-0.138495, 0.363282}, {0.536702, 0.942890}, {-0.385188, -0.255577}, {-0.195874, -0.396227}, {-0.149959, -0.045442}, {0.175505, 0.639732}, {-0.871016, 0.558898}, {-0.166986, 0.487026}, {0.015097, 0.188443}, {1.593731, -0.064295}, {-1.302004, 1.334270}, {0.647612, 0.649894}, {-0.466297, -1.438770}, {-0.082164, -0.271981}, {-0.369005, 0.109265}, {0.012960, 1.067369}, {0.008171, -0.522336}, {1.072758, 0.533772}, {0.010905, -0.615835}, {-0.267041, 0.338341}, {-0.163231, -0.172623}, {-0.298143, -0.844671}, {-0.996324, 0.395993}, {0.351228, 0.210237}, {-0.408737, 1.852449}, {1.371179, -0.270106}, {0.698624, -0.186227}, {0.764440, -1.018351}, {-0.417185, -0.489324}, {-0.254638, -0.780647}, {-0.589837, -1.171805}, {1.132576, -0.812185}, {0.071797, 0.075910}, {-0.142160, -0.205967}, {-0.131813, -1.570445}, {-0.646197, -0.501273}, {-0.343572, -0.550584}, {-0.384814, 0.182407}, {1.396442, -0.058372}, {1.089823, 0.806014}, {0.613392, 0.111495}, {-0.619374, -0.997811}, {0.937457, 0.236635}, {-1.783063, -0.017353}, {0.639293, 1.721414}, {-0.973684, -0.595704}, {0.588127, 2.077128}, {-0.508637, 0.421534}, {-0.204767, -0.116534}, {-0.925742, -0.808087}, {-0.247853, 0.383247}, {0.122339, -0.377588}, {-0.245016, 1.239323}, {-1.251013, 1.414176}, {-0.595604, 0.183438}, {0.165761, 0.973419}, {-0.360977, 0.533837}, {-0.156010, 1.266329}, {-0.361477, -0.706989}, {-1.278243, -0.570395}, {0.188787, -0.241089}, {0.695269, -0.016308}, {0.336792, 1.128790}, {-0.195083, -0.486791}, {0.435703, -1.218875}, {-0.892865, 0.992856}, {-0.503019, -0.799460}, {0.305161, -0.872681}, {0.824504, 0.670722}, {-0.057163, -0.737607}, {-0.459377, -0.426213}, {0.661363, -0.123470}, {0.291500, -0.574575}, {0.736858, -0.048679}, {-1.798391, -0.674830}, {-1.124265, -0.210419}, {0.305464, 0.240427}, {0.660762, 0.390722}, {-2.191616, -0.299109}, {0.764942, -0.333123}, {-0.766828, -0.575533}, {0.609647, -0.179405}, {0.010595, -0.673221}, {0.496617, 0.041268}, {0.961196, -0.055449}, {-0.225309, 0.834606}, {1.114384, -0.055796}, {-0.222813, -0.099848}, {-0.120519, 0.033593}, {1.015066, -0.116109}, {-0.906373, 0.667821}, {-1.147539, -1.158675}, {-0.339648, -0.873359}, {-0.489429, -0.652974}, {-0.607693, 0.915098}, {-0.739589, -0.880921}, {-0.519588, 0.827766}, {0.166684, -0.028429}, {-0.621222, -0.143460}, {0.186200, -0.213188}, {-0.815053, -0.375461}, {0.459186, 0.134372}, {0.218895, 0.177810}, {0.028394, -0.083888}, {-0.673259, -0.245137}, {1.213576, -0.494994}, {-0.504661, 1.291076}, {0.485929, 0.212768}, {-0.050601, 1.330620}, {-0.127089, 1.121260}, {-0.062864, 1.184358}, {0.388036, 0.065984}, {0.639649, 0.940623}, {0.345500, -0.926372}, {0.294821, 0.080969}, {-0.675096, 0.401880}, {-0.457889, -1.034898}, {0.546379, -0.123306}, {1.925229, 0.617684}, {0.036275, 0.153092}, {0.438382, -0.367055}, {-1.510804, -0.350652}, {0.511549, 0.357008}, {0.058650, -0.056035}, {0.426843, 0.291233}, {0.647381, 1.340631}, {-0.459728, 0.946206}, {-0.626630, 0.024277}, {-0.023095, -0.808970}, {0.409768, -1.094577}, {-0.364498, 0.100205}, {0.584196, -0.029047}, {-1.299973, -1.205881}, {-1.467178, 1.165527}, {0.651701, -0.056131}, {0.591321, 0.585146}, {1.050908, -0.864838}, {-1.010467, 0.869663}, {0.286195, 0.382027}, {-0.407370, 0.606735}, {0.731817, -0.248191}, {0.594029, 0.949877}, {1.107643, 0.816630}, {0.112756, -0.800629}, {-0.936598, -0.635692}, {0.320902, -1.154471}, {0.362662, 0.687527}, {-0.772593, -0.345974}, {-0.301668, -0.298240}, {-0.317592, 1.336231}, {-0.396778, -0.334856}, {-0.506675, -0.312185}, {-1.281432, 0.149600}, {0.401639, -0.418585}, {0.782846, 0.722927}, {0.344150, 0.854286}, {-0.014517, 0.567740}, {0.108356, 0.024531}, {0.902085, -0.055156}, {0.826237, -0.713395}, {0.244866, 0.044681}, {-0.176188, 0.891915}, {-0.420097, -0.253119}, {0.417268, 0.290663}, {0.163310, -0.245311}, {-0.182683, -0.297175}, {0.631826, -0.030011}, {-0.109512, -0.088560}, {1.429108, 0.225297}, {0.155576, 0.083817}, {1.613520, 0.239461}, {0.127288, -0.420358}, {0.477950, 0.504352}, {1.328754, -0.163013}, {-0.568880, -0.751232}, {-0.482506, -1.538834}, {-0.059557, 0.412963}, {0.350223, -0.360451}, {0.833328, 1.009992}, {-0.066145, -0.506290}, {-1.529181, 0.414709}, {1.240990, 0.206763}, {-1.129462, 0.769895}, {-0.481806, 0.484887}, {0.595993, 0.725062}, {-0.285575, 1.347548}, {2.330541, -0.013789}, {-1.797866, 0.257308}, {0.905498, 0.146234}, {-0.319323, -1.413330}, {-0.175398, -1.142782}, {-0.862556, 0.482210}, {0.223448, 0.729414}, {0.578396, -0.016839}, {-0.318659, -0.617867}, {0.157744, 0.530414}, {0.123166, -0.362401}, {1.806366, 0.187194}, {0.141849, 0.128567}, {0.233317, 0.139137}, {-0.195036, -0.613837}, {1.714962, 1.593262}, {-0.732866, -0.038927}, {0.307565, -0.920340}, {0.373395, -0.516143}, {0.826920, -0.612844}, {-0.388779, -0.390229}, {-0.862877, 0.788258}, {0.495550, 0.670739}, {-0.545650, 0.635220}, {-0.230298, 0.414062}, {-0.719266, -0.811359}, {-0.999942, 1.684412}, {0.527479, 0.543823}, {-0.743616, 0.101886}, {-0.199070, 0.115074}, {-0.870949, 0.256787}, {0.142208, 0.122864}, {1.178514, -0.092691}, {0.516611, 0.664212}, {-0.414682, 1.125980}, {0.378510, -0.100979}, {0.283304, -0.277420}, {-0.208157, -0.202171}, {-0.440988, -0.820237}, {1.298009, -0.850293}, {0.779159, -0.461672}, {0.149934, 1.508017}, {0.095404, -0.092000}, {-0.337095, -0.317412}, {-0.629736, -0.111690}, {-0.399381, 0.078341}, {-0.479442, -0.187099}, {-0.760090, 0.125670}, {-0.610029, -0.278563}, {0.649156, 0.494456}, {-0.672965, 0.631743}, {-0.016562, 0.306273}, {-0.609100, 0.137436}, {0.652638, 1.047158}, {0.026014, -0.348532}, {0.423324, -0.479491}, {-0.383879, 0.485369}, {-0.598911, -0.835369}, {0.115294, -0.571799}, {-0.125615, 0.202125}, {-0.909276, -0.587717}, {-0.727220, 0.093925}, {-0.134042, -0.601821}, {-0.187468, -0.669988}, {0.370470, 0.393121}, {-0.691281, 0.520446}, {-0.548105, -0.687475}, {1.223865, 0.276014}, {-0.770862, -0.529642}, {-0.147001, -0.466523}, {-0.573650, 0.453058}, {-0.592723, 0.439779}, {-0.455307, -0.206169}, {1.320446, 0.684046}, {-0.935463, -0.447754}, {0.703593, -1.016309}, {-0.891936, -0.175935}, {0.328758, -0.396236}, {0.094338, 0.221705}, {-1.404257, -0.190658}, {-0.100089, 1.039360}, {-0.966548, 0.827384}, {-1.253737, -1.014768}, {-0.346418, -1.267854}, {-0.158700, 1.164901}, {-0.034736, 0.009220}, {0.545952, -0.246464}, {0.717271, -0.093260}, {0.676085, -0.863656}, {0.493132, -0.105922}, {-0.533072, 0.636553}, {-0.216843, 0.884234}, {0.111424, 0.082110}, {1.028141, 0.146957}, {-0.446215, 0.136231}, {0.730978, -0.275731}, {0.042365, 0.048442}, {-0.370711, -0.543378}, {0.106057, 1.265886}, {0.379243, -0.330497}, {1.108852, -0.723866}, {-0.110398, 0.511860}, {-0.106902, 0.174878}, {1.148426, -0.603670}, {-0.128195, 0.280598}, {0.764800, -0.358176}, {-0.266245, 0.816531}, {0.114914, -0.539096}, {0.114034, -0.367231}, {2.141155, -1.484656}, {-0.724135, -0.856970}, {0.266306, -0.874060}, {0.846456, 0.435570}, {0.066472, 0.252900}, {-1.088643, -1.133248}, {-0.566947, 0.767431}, {0.619468, -0.550164}, {0.029218, 1.459059}, {1.301080, 0.095710}, {1.753613, -0.553147}, {1.516418, -0.318869}, {0.861448, -0.472804}, {-1.047020, -0.037668}, {-0.123383, 0.272455}, {-0.124143, 1.500702}, {0.378722, 0.458093}, {-1.369372, -0.010599}, {-1.027065, 0.948843}, {0.152530, -0.545888}, {-0.239192, 0.716174}, {0.874709, -1.022073}, {-0.259942, -0.432089}, {0.315777, -0.677813}, {-0.187516, 0.604001}, {-0.350366, -0.868253}, {0.358178, 0.239084}, {-0.355413, 0.043801}, {-0.114867, 0.567550}, {0.031781, 0.301042}, {-0.447827, -0.086481}, {0.347362, -0.347636}, {1.466736, -1.298975}, {1.198740, -0.131404}, {1.300932, 0.897703}, {0.490673, -0.229079}, {-0.330844, -0.232505}, {0.025943, 0.810266}, {-0.261850, -0.280763}, {-0.607853, 1.415846}, {0.498158, -1.107135}, {0.674920, -1.200670}, {-0.527907, 0.318037}, {-0.097676, 0.532536}, {-0.475594, 0.848160}, {1.642276, -0.891873}, {-0.019197, -0.109536}, {0.784795, 0.260554}, {-0.431823, -0.907632}, {-0.763132, -0.342258}, {0.570806, -0.517628}, {-0.522336, 0.403684}, {0.307563, -1.143478}, {0.825753, 0.031997}, {0.368023, -0.139664}, {2.021968, -0.943570}, {0.245160, -0.269865}, {1.303964, 0.871270}, {-0.453218, 0.819811}, {0.594784, 0.655540}, {-0.891577, -0.373922}, {0.538908, -0.710190}, {0.930254, 0.481708}, {0.307017, -0.652410}, {-0.201791, -0.804746}, {-0.740248, -0.045989}, {0.865316, 0.507359}, {0.112008, 0.675150}, {0.390570, -0.737997}, {0.588187, -0.739911}, {-0.557253, 0.208247}, {-1.425644, -0.743117}, {0.400609, -1.036328}, {0.703460, 0.720835}, {-1.235671, 0.360834}, {0.977538, 0.800469}, {-0.215826, -0.917093}, {0.464002, -0.108658}, {-0.170525, 1.430161}, {0.249880, 0.881905}, {0.039538, 0.515360}, {0.589463, 1.687736}, {-0.918504, 0.398258}, {0.885603, -0.419459}, {-0.103454, 0.517781}, {-1.403384, 0.991157}, {-1.129402, -0.084304}, {0.631421, -0.053522}, {1.013885, -0.201949}, {0.677556, 0.891074}, {0.761542, -0.055830}, {1.043183, 0.841930}, {0.116780, 0.047638}, {-0.379538, 0.850317}, {0.899566, -1.508949}, {-0.360145, -0.726620}, {-0.394237, 0.504382}, {1.299661, -0.904075}, {0.037135, -1.543567}, {0.025721, -1.294574}, {-0.201345, -0.573420}, {-0.805476, 1.100473}, {-0.222557, 0.815637}, {0.745171, -0.443108}, {-0.051322, 0.385340}, {0.415288, 0.967950}, {0.567228, 0.929748}, {-0.981482, 0.368396}, {-0.322623, 0.925524}, {0.036004, -1.359715}, {-1.239654, 0.547052}, {0.569381, 0.209552}, {0.999405, 0.435894}, {0.209398, -0.035708}, {-0.616545, -1.367319}, {-0.032505, 0.893263}, {-0.753972, -0.284855}, {-1.122253, 0.694921}, {0.062416, 0.560687}, {-0.867416, 0.682553}, {-0.093222, 0.154366}, {-0.881648, 0.429238}, {-0.190308, -2.089628}, {0.066021, 0.756615}, {0.514725, -0.798372}, {0.053171, -1.408616}, {0.209844, 0.661365}, {-0.353419, 0.830578}, {0.283011, -0.510899}, {1.844187, 0.067852}, {0.452893, 0.042450}, {1.522679, 0.732928}, {0.455406, -0.622942}, {0.434744, -0.877805}, {0.156233, 0.549888}, {-0.488361, 0.683512}, {-0.709181, -0.074767}, {1.094457, -1.430172}, {-1.090533, -1.200256}, {0.467875, -1.396375}, {-0.216862, 0.998395}, {0.845417, 0.461581}, {-0.243621, -1.037224}, {1.009367, -0.804843}, {-0.733158, -0.634989}, {-0.317695, 0.187141}, {1.042970, -0.479150}, {0.574917, -0.396721}, {-0.753535, 0.501924}, {0.176516, 0.011773}, {-0.252053, -0.567245}, {0.523082, 0.913279}, {-1.555099, 0.401929}, {-0.437464, 0.181542}, {-0.873226, 0.044419}, {0.219685, 1.157821}, {-0.254417, -1.517094}, {0.091563, -0.354438}, {-0.528333, -0.170731}, {0.995211, 0.678314}, {-0.898812, -0.064997}, {-0.013840, 0.293050}, {-0.839259, -0.587023}, {-0.945978, -0.617619}, {-0.895625, 0.302625}, {1.051869, 0.573372}, {-0.825980, -0.122912}, {0.163980, 1.256745}, {0.706734, 0.124522}, {-0.361175, 0.101887}, {1.057818, -0.426948}, {-0.675053, 1.031729}, {0.206726, 0.279056}, {0.389211, -0.301896}, {1.063765, 0.619761}, {0.352544, 0.613860}, {0.128183, -0.129278}, {-0.839177, 0.102129}, {-1.009067, 0.298734}, {0.002993, -0.360330}, {1.224970, -0.160513}, {1.106708, -0.229533}, {-1.032136, -0.377685}, {-0.236230, 0.001354}, {0.410400, 0.222334}, {0.392320, 1.483927}, {0.665122, 0.691449}, {-0.455393, -0.602445}, {-1.351692, 0.738197}, {-0.766579, 0.268302}, {1.589365, 0.864385}, {0.070446, 0.850433}, {-0.308235, -0.135000}, {-0.292362, -1.347597}, {1.555687, -0.715862}, {-0.014022, -0.045398}, {-0.446291, 1.226295}, {-1.032951, -0.093507}, {-0.899258, 1.039720}, {-1.078121, -0.867005}, {0.520897, 0.494706}, {-0.211998, -0.448273}, {0.580937, -0.430233}, {0.179600, 0.873513}, {0.808713, -1.022514}, {0.555485, 0.127189}, {0.880953, -0.143050}, {1.149157, 0.917433}, {-0.893810, 0.428443}, {-1.266854, -0.409126}, {-0.626689, 0.378355}, {-0.164413, -0.184089}, {-0.898300, 0.593376}, {-0.547055, 0.834128}, {-1.142588, -0.422562}, {-0.284378, -0.254682}, {0.791523, -0.756468}, {0.485108, -0.001937}, {-1.059758, -0.298921}, {0.575755, 0.321922}, {0.126469, 0.056855}, {0.481604, -0.118000}, {-0.161121, -0.348846}, {-0.018420, 0.600699}, {1.149129, -0.048108}, {-0.542935, -1.132408}, {0.615102, 0.119735}, {-0.401196, -0.056096}, {0.240128, -0.191069}, {-0.230665, 0.650328}, {-1.043812, 0.267771}, {-0.337422, -1.346232}, {-1.272762, 0.339037}, {-0.577232, 0.042670}, {-0.024654, 1.721493}, {-0.290755, -0.294420}, {0.050099, -0.241641}, {0.523826, -0.443739}, {1.259578, 0.041380}, {1.203733, -0.585998}, {0.759313, -0.279728}, {-0.270898, 0.554221}, {0.319001, 0.630204}, {-1.012906, -1.065616}, {-0.064960, -0.895967}, {-0.439101, -0.524601}, {0.648934, -0.701096}, {0.990764, -1.487838}, {0.266843, 0.072485}, {-1.337164, -0.177902}, {0.882257, -0.971672}, {0.443937, 1.419520}, {0.489435, 0.600496}, {-1.048080, 0.668837}, {0.080006, -0.024016}, {0.393861, -0.144830}, {0.029134, -0.594013}, {0.020636, 0.866641}, {-0.695757, -0.655914}, {-0.145142, -0.618203}, {-0.302988, -0.495213}, {-0.462676, 1.085804}, {0.153729, -0.610300}, {-0.098602, 1.025134}, {-0.571255, -1.464634}, {-0.761817, 0.959088}, {-0.975994, -0.370398}, {-0.313675, 0.590253}, {0.297074, 0.390224}, {-0.582347, -0.270186}, {-0.652665, -1.353611}, {-0.019627, 0.000436}, {0.117063, 0.851400}, {-0.123453, -0.339978}, {-0.071860, -0.712601}, {-0.150279, 0.705257}, {0.346280, -0.008366}, {-0.959111, 0.297700}, {0.620350, -0.430125}, {-0.047112, 0.050720}, {1.805691, -0.047197}, {1.715418, -0.183448}, {-1.158967, 2.090597}, {0.743999, -1.778906}, {0.025331, -0.388354}, {0.518336, -0.327919}, {1.166154, -0.289812}, {0.029288, 1.018113}, {0.007631, -0.292880}, {-1.468947, 0.677554}, {0.948800, -0.363516}, {0.363116, -1.186390}, {0.033570, -0.368930}, {-1.920066, -0.183494}, {1.245028, 1.360201}, {0.157701, 0.511411}, {-0.725534, 0.913929}, {-0.642394, 0.108628}, {1.433083, 0.355667}, {-0.351948, 0.578183}, {0.229656, -1.065693}, {-0.231833, 0.177390}, {1.099345, -0.553877}, {-1.922732, 0.038200}, {-0.200014, 1.349928}, {0.725471, -1.057210}, {0.242414, 0.445252}, {-0.886991, -0.408397}, {0.510536, 0.822131}, {-0.260030, 0.343419}, {-0.214564, -1.138471}, {-0.008637, -0.579129}, {-0.761397, -0.872982}, {0.350951, 0.624380}, {0.900611, 0.816234}, {-0.522778, 0.207549}, {-0.760791, 0.034648}, {0.375186, 0.362076}, {0.112175, 0.831388}, {-1.242682, -0.022903}, {0.331423, 0.701496}, {0.253687, -0.488079}, {-0.873518, 0.279186}, {0.231592, -0.385780}, {-0.701089, -0.501785}, {-0.241921, -1.391418}, {0.019241, 0.106733}, {0.591344, -1.051357}, {0.745421, -0.610140}, {-0.606596, 0.169312}, {-0.372797, -0.501536}, {-0.768757, 0.841569}, {-0.348190, 0.051062}, {0.063387, 0.584047}, {0.329073, -0.791211}, {0.514938, 0.740972}, {0.273985, -0.582246}, {-0.967329, 0.578559}, {0.415417, 0.124701}, {-0.098539, 0.385786}, {-0.004510, -0.248503}, {0.555897, 0.242153}, {1.579329, 0.015322}, {0.230998, 1.990804}, {0.363098, 0.553719}, {1.562863, 0.478130}, {0.026208, 0.305355}, {1.116516, 0.360515}, {-0.982566, -0.465728}, {-0.508676, -0.878270}, {-0.144291, 0.415225}, {-1.350074, -0.098142}, {1.616341, -1.518052}, {0.104774, 0.015461}, {0.374867, -1.531420}, {-0.416475, -0.114543}, {-0.739622, -1.138037}, {-0.923005, 1.062459}, {-0.664320, -0.280073}, {-1.156293, -0.337499}, {-0.689945, 0.344369}, {1.058939, 0.443670}, {-1.285207, 0.147568}, {0.475596, 0.835141}, {-0.239945, 1.476067}, {0.025039, 0.541449}, {-0.101321, -0.682732}, {-0.546186, -0.130474}, {-0.433541, 0.503623}, {0.464975, 1.359146}, {-0.567927, 0.964406}, {-1.219789, -1.539823}, {-0.016740, 0.669833}, {0.182447, -0.271553}, {-1.320623, 1.306323}, {-0.000075, -0.219999}, {-1.536075, 0.914474}, {-1.404556, -1.020084}, {-0.150083, 0.236011}, {0.516978, 0.585327}, {0.241503, 0.030283}, {-0.329743, 0.849644}, {-0.537257, 1.132562}, {0.817902, -0.281236}, {1.432319, 0.095690}, {0.632687, -0.576622}, {-0.734149, 0.271036}, {0.459345, -0.277828}, {0.305288, -0.697961}, {-1.187887, 0.415304}, {0.796687, -0.667703}, {0.059859, 0.503282}, {-0.674526, 0.557001}, {0.761860, -0.342605}, {-0.553691, -0.066432}, {0.158447, 0.486740}, {0.871085, -0.243732}, {-0.618374, 0.322577}, {0.211178, -0.228494}, {0.256709, -0.631463}, {0.136058, -0.407427}, {0.386538, -0.076609}, {0.363731, 0.067482}, {-0.693882, 0.964447}, {1.052294, -0.778507}, {-0.404876, -1.906265}, {0.357725, -0.223712}, {-0.899349, -0.135851}, {0.297922, -0.353175}, {0.378138, 0.542955}, {0.948882, -0.008489}, {-1.168557, -0.095203}, {0.196487, 1.331091}, {-1.592780, -0.195128}, {0.496292, 0.257436}, {0.094574, 0.257786}, {0.179735, 0.175672}, {-0.773849, -0.867187}, {-0.218875, -0.151987}, {-1.457404, 0.561553}, {-0.766543, -1.240765}, {-0.311424, -0.241690}, {1.593359, -0.990696}, {-1.347961, -0.110373}, {0.087199, -0.249410}, {-0.381577, 0.193060}, {1.290974, 0.330803}, {-0.264855, -0.062533}, {1.932407, -0.669281}, {1.404137, -0.854353}, {0.032966, -0.375454}, {-0.665186, -0.403770}, {-0.669869, 0.889790}, {0.897455, -0.188428}, {0.730249, 1.021129}, {-0.843537, -0.297006}, {0.429220, -0.539707}, {0.449427, -0.771936}, {-0.429601, 0.576114}, {0.055077, -0.604795}, {-0.278586, 0.300688}, {0.067531, -1.925382}, {-0.924128, -0.958812}, {-0.337994, -0.727637}, {-0.457529, 1.034296}, {0.370646, -0.836115}, {-0.467752, 0.409464}, {-0.334921, -0.540654}, {0.832486, 0.959241}, {0.746558, 0.657005}, {-0.318685, -1.230673}, {-0.169521, 0.642337}, {0.789263, 0.831460}, {0.223756, 0.414123}, {-0.325954, -0.321332}, {0.075028, 0.967698}, {0.216434, -0.716844}, {-0.776716, 0.826807}, {-0.074531, 0.812789}, {-0.537597, 1.026980}, {0.152495, 0.982402}, {0.413097, -0.552747}, {0.611235, -0.071720}, {-0.491325, -0.356869}, {-0.486791, -0.626587}, {0.204293, -0.436972}, {-0.211208, -0.432147}, {-0.561132, 1.073539}, {-0.070137, -0.184257}, {-1.115610, -0.477053}, {1.018256, 0.435396}, {0.301658, -0.197887}, {-0.147236, 1.059088}, {-0.888603, 0.328241}, {-1.070295, -0.599636}, {0.316661, 0.365444}, {-0.212919, -0.409418}, {-0.753071, 0.087512}, {0.404576, 0.038580}, {-1.504748, -0.267729}, {-0.313997, -0.930065}, {-0.236354, -1.238931}, {-0.376294, 0.405383}, {1.291459, -0.346108}, {-0.297634, 0.589772}, {0.110657, -0.512851}, {-1.955329, -0.456873}, {-1.247619, 0.482959}, {0.083895, -0.640105}, {-0.396012, 1.108095}, {0.909912, -0.470332}, {-0.049822, -0.096660}, {0.363109, 0.186229}, {-0.314218, -0.256700}, {-0.295377, -0.825150}, {-0.122935, 0.847107}, {0.254378, 0.637229}, {0.103655, 1.262402}, {0.673758, -0.803048}, {0.318196, -0.206245}, {0.385547, 0.450488}, {-1.392342, 0.052822}, {-0.665772, 0.103675}, {0.426712, -1.222266}, {-0.075608, -0.769710}, {-0.548068, -0.642260}, {0.647223, 0.860224}, {0.483236, 0.514534}, {0.398769, 0.050907}, {1.229950, 0.745029}, {0.911489, 1.188746}, {-0.099161, -0.697764}, {0.247348, -0.284992}, {-0.248089, -0.862396}, {0.846203, -1.166603}, {0.906759, 0.708414}, {-1.122335, -0.402972}, {-0.118882, -0.437190}, {-0.430711, 0.992516}, {-0.985280, -0.933490}, {0.753059, -1.029240}, {0.074035, 1.011795}, {-0.554878, -0.736494}, {0.137578, -0.170962}, {0.010941, 0.160870}, {-0.287390, -0.081999}, {-0.915608, -0.288509}, {1.009344, 0.455340}, {-1.170750, 0.374210}, {-0.509900, 0.696984}, {-0.073667, 0.542572}, {0.508428, -0.509940}, {0.162651, -0.619031}, {-0.894067, -0.370045}, {-1.100994, 0.144700}, {-0.361678, 0.973850}, {-0.592640, 0.709252}, {0.482369, 0.464118}, {0.646740, 0.794370}, {-1.518095, -0.047480}, {-2.480153, 0.558073}, {0.171995, -0.118977}, {-0.307031, -0.408313}, {0.667857, 0.886201}, {1.215072, -1.815363}, {0.636451, -0.999552}, {1.038871, 0.746703}, {0.799771, -0.633650}, {-0.478658, 0.963576}, {0.660793, -0.396006}, {-0.366382, -0.010134}, {-0.126455, 0.550368}, {-0.295040, -0.019897}, {-0.189119, 0.144486}, {-0.409427, -0.246134}, {-0.749594, 1.158845}, {-0.619952, -0.568661}, {0.418661, -0.682120}, {0.022881, -0.611217}, {0.745549, -0.999202}, {0.223803, -1.326778}, {-0.512690, -0.409827}, {0.730464, 0.154411}, {0.304366, 0.129614}, {1.037600, -0.642403}, {-1.589766, 0.575436}, {1.303312, 1.195870}, {-0.048468, -0.161105}, {-0.583344, 0.721412}, {-0.598792, -1.629398}, {-1.184964, 0.686923}, {-0.206515, 0.128982}, {-1.354328, 0.347421}, {-0.305114, -0.063748}, {-0.148754, 1.025688}, {1.386647, -0.299267}, {0.623479, 0.660380}, {0.111936, -0.215479}, {0.164504, -0.448971}, {-1.298132, -0.229643}, {-0.544931, 0.273312}, {0.708111, 1.131149}, {-1.025639, 0.983595}, {-0.874828, 0.448445}, {0.083092, 0.131569}, {-0.199073, 0.111786}, {0.471144, -0.582538}, {-0.002063, -1.209889}, {0.036177, -0.191428}, {0.048523, -0.482262}, {-0.591823, 0.022019}, {-0.957858, 0.379499}, {-0.388964, -0.030605}, {-1.067693, -0.564523}, {0.683215, 0.452901}, {-0.417523, -0.888896}, {0.116388, -0.001175}, {-0.530451, -0.402808}, {-0.501828, -0.447776}, {-0.312741, -0.320066}, {0.239558, 0.274188}, {0.413057, -0.479391}, {0.804059, 0.228824}, {0.251042, -0.392509}, {-0.977828, -0.114416}, {0.706358, 0.019025}, {-0.604572, -0.619421}, {-0.965764, 0.532922}, {-0.557196, -0.448498}, {0.117221, -2.151584}, {0.339451, 0.235127}, {1.163795, 0.355797}, {-0.724402, 0.409418}, {0.255004, 0.576204}, {-0.258374, 0.349667}, {1.028698, -0.794530}, {0.527963, 1.589823}, {0.719742, -0.748712}, {0.368928, -0.686335}, {0.065692, 0.585041}, {-0.125019, -0.273104}, {-0.241274, -0.481545}, {0.254201, 0.650913}, {-0.612250, 0.134043}, {-0.040628, 1.546205}, {-0.153613, -0.158336}, {0.573747, -0.368891}, {0.247576, -0.546121}, {-0.327529, -0.227120}, {0.909237, 0.293783}, {-0.641484, 1.032472}, {0.945376, -0.976555}, {-0.097696, -1.005641}, {0.280105, 0.778472}, {0.129635, -0.266768}, {0.163724, -0.064104}, {0.234504, -0.013251}, {-0.745244, 2.072479}, {-1.437508, 0.815776}, {-0.742229, -0.540598}, {0.532092, -0.390349}, {0.231447, -0.072878}, {0.459868, -0.668039}, {-1.085061, 0.706084}, {0.666810, -0.686744}, {0.881553, 0.001870}, {0.028822, -1.283565}, {-0.420608, 0.313733}, {-0.114939, -0.901210}, {-0.382738, 0.663378}, {-0.159187, 0.391378}, {0.413518, 0.011760}, {-1.145054, -0.174115}, {0.657089, -0.093871}, {0.439769, -0.078178}, {-0.876726, -1.290887}, {-0.194151, -0.120212}, {-0.573588, -0.601036}, {0.480740, -0.445964}, {0.246870, 0.914457}, {1.507856, -0.333776}, {1.176638, 0.254658}, {0.571415, 0.268885}, {-0.635128, 0.650310}, {0.383027, -0.382331}, {0.464641, -0.511072}, {0.874510, -0.963842}, {-0.540770, -0.325872}, {0.253789, -0.123098}, {-0.270305, 0.172002}, {-1.031316, 0.278028}, {-0.332885, -0.499473}, {0.120825, -0.860634}, {-0.643136, -0.068827}, {-0.040357, 0.200742}, {-0.933480, 0.185052}, {0.771612, -0.286406}, {0.939360, -0.140307}, {0.028340, 0.302658}, {-1.188171, -0.068560}, {-0.180113, 0.072284}, {-0.550815, -0.947792}, {-0.643721, -0.045899}, {0.092203, -0.288068}, {0.439139, 0.467489}, {0.682732, -0.634377}, {-0.736317, -0.107723}, {-0.237552, -1.170557}, {-1.265348, -0.851037}, {-0.117957, -0.085973}, {1.102227, -0.027409}, {0.201656, 0.258550}, {-0.341302, 0.345698}, {-0.226687, 0.021001}, {0.300950, 0.747520}, {-0.548719, -0.764005}, {0.342371, 0.650129}, {-0.197264, -0.406966}, {0.253969, 0.590828}, {-0.654232, -0.911205}, {-0.069347, -0.649115}, {-0.302273, -0.962710}, {-0.858735, -0.734358}, {0.824973, 0.347623}, {0.561939, -0.332102}, {-0.149910, -0.141332}, {-0.329960, -0.276681}, {-0.477825, 0.796294}, {-0.929950, -1.013256}, {0.660669, -1.277091}, {0.992162, 0.447772}, {-0.304259, 1.500934}, {-0.057727, 0.903363}, {0.674917, 0.876704}, {-0.634144, -0.191583}, {0.845197, -1.233301}, {-1.661000, 0.075804}, {-0.514972, 0.235703}, {0.140527, 0.185480}, {-0.234079, -1.451824}, {-0.405753, 0.462321}, {1.170499, 0.117621}, {0.131879, 0.114231}, {0.965116, -0.378527}, {0.206708, -0.220844}, {-0.187811, 0.488983}, {-0.661154, -0.013639}, {-1.372899, -0.391042}, {-0.208436, 0.141927}, {-0.900758, 0.338770}, {-1.061068, -0.473609}, {-0.442850, -0.150059}, {-0.656915, -0.213440}, {-0.519110, 0.388374}, {0.552973, 0.412297}, {0.246784, 0.360372}, {0.037668, -0.058916}, {-1.348537, -0.018245}, {-0.618509, 0.055222}, {0.618511, -0.123750}, {-0.034437, -0.099757}, {0.323428, -0.652759}, {0.154987, 0.899311}, {1.781830, -0.153147}, {0.035979, 1.188616}, {0.488400, 0.697546}, {-0.446666, 0.281943}, {-0.453892, 0.528215}, {-0.688147, -1.008588}, {-0.390631, 0.389458}, {-1.194630, -0.928712}, {0.678735, -0.466324}, {0.976499, -0.038259}, {1.396877, -0.138085}, {-1.430019, 0.335065}, {-0.055289, -0.927780}, {0.485662, 0.485284}, {0.201981, 0.537132}, {0.363088, 1.731858}, {-0.668758, 0.465720}, {0.077665, 0.666078}, {-1.566421, 0.040135}, {-0.355676, -1.374433}, {-1.271148, 0.473298}, {-0.709383, -1.088175}, {0.072900, -0.383878}, {-0.221073, 0.694508}, {0.979392, 0.358300}, {-0.468658, -1.257957}, {-0.986421, -0.688206}, {0.774736, 0.025302}, {-0.350405, -1.379404}, {0.265043, -0.179214}, {0.632730, 0.655965}, {-0.580958, 0.073589}, {-0.674751, -0.329321}, {-0.157258, 0.366028}, {-0.167454, 0.458918}, {0.360995, -0.045800}, {0.541670, 0.414036}, {-0.953282, 0.396081}, {-0.640341, -0.815884}, {0.099247, 0.488115}, {1.028320, -1.065518}, {-0.608843, -0.394921}, {-0.660332, 0.127980}, {1.215143, -0.784662}, {-0.597942, 0.410855}, {-0.460977, -1.731878}, {-1.125346, -0.522925}, {0.160018, -0.890953}, {0.354174, 0.463096}, {0.432617, 0.091890}, {-0.537692, 0.916233}, {-0.231298, -1.123082}, {0.448289, 0.048934}, {0.141959, 0.248023}, {-0.239098, 1.258853}, {0.659532, 0.029834}, {1.296697, -0.068587}, {-0.566528, 0.709376}, {-0.408385, -0.069338}, {-0.390137, 0.783384}, {-1.620428, -0.505653}, {0.410443, -0.303323}, {-0.550195, -0.764973}, {-0.576556, 0.263301}, {-0.600212, 0.262565}, {-0.122290, -0.126754}, {0.331186, -1.519006}, {-0.345319, -0.461422}, {-0.572596, 0.480422}, {1.103205, 0.915259}, {0.118307, 1.801626}, {-0.764045, 0.235550}, {-0.022141, 1.201361}, {0.028013, 0.044403}, {0.488177, 0.026615}, {-0.623776, -0.232662}, {-0.961218, 0.888319}, {0.486462, -0.519644}, {0.199430, -0.047332}, {0.947899, 1.148955}, {0.169357, -1.336189}, {-0.930552, -0.016437}, {-0.518731, 0.323647}, {1.068277, -0.408039}, {0.873528, -0.510827}, {-0.062329, -0.013528}, {0.016866, 0.267559}, {1.056129, -1.027253}, {-0.539801, 0.935748}, {0.096848, -0.037621}, {-0.095070, -0.255447}, {-0.848099, 0.443100}, {0.639670, -0.048560}, {0.923418, -0.283416}, {1.456548, -1.294075}, {-1.764045, -0.439263}, {0.461557, 0.172525}, {-0.436138, 0.071867}, {-0.673432, 0.538713}, {0.312169, 0.260254}, {0.103237, -0.512787}, {-1.493843, 0.399438}, {0.819913, 1.366162}, {-0.016400, 1.497652}, {0.215513, -0.225488}, {-0.017414, -0.407048}, {-0.020617, 0.629335}, {0.224152, 0.982394}, {-0.511165, -0.579162}, {0.007663, 0.124781}, {0.108301, 0.792560}, {0.158005, 0.407386}, {-0.182543, -0.165334}, {1.159181, -0.510782}, {0.280196, -1.062985}, {0.236496, -0.145702}, {-0.422758, 1.424397}, {-0.331449, -0.193450}, {0.192874, -0.427651}, {0.112059, 0.188264}, {-0.272202, 0.107938}, {-0.760328, -0.363161}, {-0.726426, 1.597634}, {-0.071579, 0.949224}, {0.308458, 0.255762}, {1.021180, -0.266580}, {0.143714, 0.679690}, {0.402213, -0.431472}, {0.325377, -0.219868}, {1.102590, 0.967718}, {0.358516, -0.734835}, {0.014624, 0.178090}, {0.448299, -0.407042}, {-0.611858, -0.011623}, {1.077674, -0.250480}, {-0.299770, 0.274045}, {-0.091250, 0.162794}, {0.263684, 0.580732}, {-0.524096, 0.453355}, {1.220175, -0.439485}, {0.505437, 0.769273}, {-0.448804, -0.993002}, {-0.443388, -0.483274}, {-0.523477, -0.401425}, {-0.313273, -0.056149}, {0.050769, 0.557578}, {-0.702026, -0.345979}, {-0.323416, 0.362591}, {0.804164, 0.415913}, {0.366415, 0.231610}, {-0.674289, 2.719386}, {-0.390476, -0.001017}, {0.634584, 0.043129}, {-0.165932, -0.088890}, {-0.084003, 0.164003}, {0.326900, -0.176912}, {0.846530, -0.575045}, {0.379000, -0.560151}, {-0.045598, -1.256528}, {0.004132, -0.330289}, {0.801731, 0.102068}, {0.310208, -0.016975}, {0.804024, -0.848600}, {0.530551, 0.564239}, {-0.217442, -0.406346}, {0.482194, -0.354971}, {1.013284, 0.341576}, {-0.189813, -0.158867}, {0.057823, 0.314484}, {-0.385227, 0.961346}, {-0.252099, 0.877088}, {-0.150246, 0.399242}, {0.227240, -0.011056}, {-0.906256, 0.232546}, {0.447790, 0.615224}, {0.710736, 0.413033}, {0.332351, 0.394525}, {-1.111575, -0.892920}, {0.671354, 0.236546}, {-0.530462, 0.833944}, {-0.487734, -0.933744}, {-0.279573, 0.015821}, {0.150636, 0.941044}, {-0.490255, -1.718709}, {-0.562611, -0.050636}, {0.161397, -0.336955}, {-0.581458, 0.013550}, {1.301819, -0.243034}, {0.328760, -0.383835}, {-0.558614, 0.312557}, {-0.994847, -0.123656}, {-0.946885, -0.460904}, {-0.150270, 0.629816}, {0.059610, -0.005996}, {-0.577683, -0.466143}, {-0.471025, -0.278965}, {-0.148945, -0.324783}, {1.276411, 0.305076}, {0.980279, -0.070273}, {1.162642, 0.100148}, {1.843762, 0.357636}, {-1.342349, -0.353233}, {-0.436687, -0.095269}, {-0.805848, 0.606225}, {0.871641, -1.329340}, {0.184974, 1.265810}, {-0.244617, -0.882645}, {-0.907868, -0.039793}, {1.031712, 0.603956}, {-0.320916, 0.296021}, {0.769198, 0.408169}, {0.273306, -1.560085}, {-0.845221, -0.120352}, {-0.292803, -0.487164}, {-1.188451, 1.021220}, {0.712612, -0.904145}, {1.536593, 0.458014}, {0.948114, -0.292910}, {0.183039, -0.763955}, {2.157607, -0.224608}, {-0.273569, -0.394222}, {-0.431183, 0.416926}, {0.132424, -0.348722}, {0.753581, 1.216860}, {-0.337171, -0.893545}, {-1.120653, -0.243974}, {1.019687, 0.181340}, {1.477047, -0.821085}, {0.046624, -0.107856}, {0.433614, -0.195993}, {-0.405870, -1.017501}, {-0.050243, 0.119354}, {-0.671673, 0.243350}, {-0.315893, 1.721316}, {-0.083615, 0.238805}, {-1.037536, 0.577163}, {-0.913802, -0.523424}, {1.219618, -0.315761}, {1.146100, 0.517259}, {-0.895445, -1.015857}, {0.514174, 0.575290}, {-0.123435, 0.745106}, {0.702053, 0.848669}, {-0.342611, -0.957096}, {-0.289839, -0.316382}, {-0.397795, 0.021996}, {-0.677843, 0.971322}, {0.361514, -0.183216}, {0.080051, -0.295673}, {1.160202, -0.910675}, {-0.150463, 0.736822}, {-0.709405, -0.203295}, {-0.350063, 0.552303}, {-0.721111, 0.319029}, {-0.253701, -0.103668}, {-0.750172, -0.320345}, {-1.206247, -0.063426}, {-1.373506, 0.124767}, {0.508866, 0.460720}, {-1.336954, 0.210008}, {-0.631641, -0.072041}, {0.928787, -1.037158}, {0.032754, 1.022849}, {0.666725, -0.698994}, {-0.426685, 0.073876}, {0.641602, 0.815373}, {0.375179, -0.463772}, {-0.233340, 1.332766}, {-0.588562, 0.673215}, {-1.583380, 0.174935}, {0.183747, -0.026180}, {-0.037925, -0.435531}, {0.421545, -1.077913}, {0.739201, 0.256848}, {0.278009, -0.012421}, {1.071530, -1.464473}, {0.879311, 0.140050}, {0.690285, -0.379450}, {-0.359215, 0.696639}, {0.445641, 1.003849}, {-0.471426, 0.216653}, {0.747519, -0.191435}, {0.609888, 1.087821}, {-0.114237, 0.707995}, {0.310145, -0.068274}, {0.238114, 0.520310}, {0.188092, -0.863861}, {-0.272074, 0.545071}, {-0.584299, 0.335263}, {0.568218, 0.803199}, {-0.430740, 0.419229}, {-0.900838, 0.175793}, {0.241127, 0.980598}, {0.229357, -0.402579}, {-0.005071, 0.451806}, {-0.169403, 0.001801}, {0.498114, 0.632898}, {0.880223, -0.529746}, {-0.868428, 0.322017}, {-0.934466, 0.316410}, {-0.153631, -0.037373}, {-0.402630, -0.960009}, {0.069345, 1.147181}, {0.538025, 0.497931}, {-0.752724, 0.353508}, {1.119766, 0.340039}, {2.267532, -0.419679}, {0.867285, -0.861810}, {-0.219850, 0.147761}, {-1.333873, 0.140060}, {0.349306, -0.296989}, {1.246670, -0.360293}, {0.448126, 1.393103}, {0.458653, -0.009429}, {0.897902, 0.163413}, {-0.423687, 0.569503}, {0.533119, -0.220683}, {-0.561732, -0.975309}, {0.881865, 0.101322}, {-0.304062, 0.840913}, {0.773744, -0.251265}, {0.767785, -0.089005}, {0.093558, 0.166969}, {-0.144223, 0.543223}, {0.599210, -0.139195}, {-0.757562, 0.974285}, {1.287608, -1.166102}, {0.851889, 0.840470}, {-0.060754, 1.083686}, {0.613368, 0.304015}, {-0.379987, -0.439814}, {-0.329733, -0.112941}, {-0.424859, -0.739637}, {-1.793210, -1.188762}, {-0.635379, -0.904453}, {0.257752, -1.166231}, {0.795667, -1.099593}, {0.943045, -0.741673}, {0.132503, -0.740775}, {-0.441437, -0.158045}, {0.625827, -0.791281}, {0.206786, 0.183906}, {0.838373, -0.394791}, {0.800490, 0.460415}, {0.158553, 0.035947}, {0.941686, 1.030037}, {-0.449424, 0.181222}, {-0.064192, 0.321760}, {-0.818197, -0.517869}, {-1.001442, -0.964262}, {-0.341690, 0.209038}, {0.769880, -0.509106}, {-1.800834, -0.977495}, {0.934141, -0.956871}, {-0.544929, -0.234843}, {0.052514, -0.188411}, {0.020671, 0.409432}, {-0.446867, 0.177584}, {-0.018809, 0.439592}, {-1.004284, -1.141000}, {0.165529, -0.054725}, {0.209767, 0.617396}, {-0.141390, -0.133027}, {-0.035609, 0.141281}, {-0.178184, 1.191617}, {0.543428, 0.601854}, {-0.095008, -0.455613}, {-0.059113, 0.233037}, {0.233059, -0.139516}, {0.272380, -1.266193}, {0.618656, 0.116292}, {-0.009285, 0.623049}, {0.096660, 0.123946}, {-1.580974, 0.525244}, {0.206597, 1.002594}, {0.089974, -0.500957}, {1.895818, 0.543035}, {-0.305681, 0.122755}, {0.221252, 0.227730}, {-0.820677, -0.365112}, {0.947046, 0.458062}, {0.542810, -0.838007}, {-0.052196, -0.075847}, {0.814450, -0.744863}, {-0.567190, 0.264126}, {0.237717, 0.018269}, {-0.703420, 0.405742}, {0.614185, 0.753346}, {-1.418353, 0.214996}, {-0.860688, 0.915467}, {-0.360367, -0.260405}, {1.472941, 0.435927}, {0.446222, 0.730291}, {-0.144925, -0.561438}, {-1.750887, -0.525869}, {0.340149, -0.191235}, {0.377149, 0.915875}, {0.114776, 0.838241}, {1.129547, -0.141350}, {0.184851, -0.695700}, {-0.534036, -0.634324}, {-0.340427, 0.321547}, {-0.404642, -0.697021}, {-0.253808, -0.192746}, {-0.596530, -0.932647}, {-0.838994, -0.405391}, {-0.755491, -0.342310}, {-0.057286, -0.358306}, {-1.447241, 1.301361}, {-1.313619, -1.013152}, {-0.571824, 0.109239}, {-0.260698, 0.606990}, {0.070246, 0.534229}, {0.597517, -0.037879}, {-1.094173, -0.410137}, {-0.254631, -0.246340}, {0.431483, -0.376672}, {0.519113, 0.214955}, {-0.076563, 0.738583}, {0.205809, -1.447609}, {-0.810528, -0.234393}, {0.229555, 0.246711}, {0.927126, 0.590173}, {-0.466521, -1.469152}, {0.695727, 1.527739}, {-1.704484, -0.591690}, {0.307858, 0.231491}, {-0.995968, 0.318885}, {0.661263, -0.555950}, {-0.712018, 0.863494}, {0.187289, -0.103648}, {0.148728, 0.440236}, {-0.416693, 0.421814}, {-0.285165, -1.497392}, {-1.351142, -0.185347}, {0.484214, -0.136529}, {0.573682, -1.192687}, {0.410345, -0.315465}, {0.848424, 0.671905}, {-1.103233, 0.644873}, {1.299410, 0.565215}, {-0.461676, 0.064235}, {-1.379040, -0.432968}, {-1.015434, -1.145416}, {0.129534, 0.363062}, {0.104220, 0.288515}, {1.543944, -1.307105}, {0.221840, 0.109014}, {-0.184143, 0.370434}, {0.058980, 0.873678}, {0.551447, -0.039445}, {-0.270308, 0.105572}, {0.469465, -0.104565}, {0.015573, 0.788276}, {0.749307, 1.602021}, {-0.203181, -0.465786}, {0.133115, -1.936805}, {-0.429016, -0.726444}, {-0.149023, -0.362963}, {0.397963, -0.235261}, {1.558527, 0.044457}, {-0.972298, 0.805232}, {-0.807760, -0.399592}, {0.280215, 0.243919}, {0.137227, -1.792080}, {-0.651625, 0.507164}, {0.275789, -0.969788}, {-0.254710, -0.494221}, {-0.568344, -0.391331}, {-0.403117, -0.847222}, {0.850632, 0.551661}, {0.375400, 0.202567}, {0.407655, 0.339162}, {-0.077186, -0.944989}, {0.853879, 0.321790}, {-0.878723, 1.078369}, {0.402514, 0.134404}, {-0.636014, 0.028282}, {-0.306382, -0.725383}, {0.596217, 0.775472}, {0.743227, 0.136710}, {0.318624, 0.141530}, {-2.436086, 1.380653}, {-1.525091, -0.330171}, {0.786829, -0.068407}, {-0.268204, 0.051274}, {0.026261, -0.264944}, {0.284678, 0.800642}, {1.139380, -0.635677}, {0.531484, 1.095444}, {0.061698, -1.585712}, {-0.200152, -0.292121}, {0.511662, 1.497851}, {-1.734319, 0.421699}, {0.730265, -0.139450}, {-0.853009, -0.131672}, {0.279669, 0.232947}, {-0.265099, -0.688263}, {-0.929645, -0.286772}, {-0.125102, -1.125642}, {1.064545, 0.166148}, {0.733526, -0.916868}, {-0.934886, 0.513751}, {1.207510, 1.425677}, {-0.027745, 0.571540}, {-1.475919, -1.304595}, {0.891606, -0.522466}, {-1.132359, -0.916251}, {0.769611, 1.058327}, {-0.787181, -0.146081}, {-0.219027, 0.104576}, {-0.095533, 0.083469}, {-0.115227, 0.014563}, {-1.070410, 0.746173}, {1.109839, -1.229791}, {-0.326565, 0.830876}, {0.286977, 0.532019}, {-0.769394, 0.226197}, {0.754521, 0.827572}, {-0.361735, -0.367817}, {-0.546435, -0.902863}, {0.746461, -0.939287}, {-0.625963, 1.456091}, {-0.244332, 0.173159}, {0.735755, 0.338783}, {1.161011, -0.592912}, {0.316221, -0.277843}, {-0.515322, -0.171536}, {-0.073174, 0.804972}, {1.050407, -1.065537}, {0.484378, 0.954140}, {0.939704, -0.717131}, {-0.746289, 0.125873}, {0.306167, 0.822975}, {-0.688430, -0.009492}, {0.473809, -0.195759}, {-0.291123, -0.887642}, {-1.113639, -0.205191}, {0.507462, -1.139016}, {-1.047570, 1.061075}, {0.076114, 0.502083}, {-0.009567, 0.771579}, {0.277710, -1.082459}, {-0.030487, -0.792313}, {-0.005490, -0.038347}, {-0.070947, -0.641452}, {0.064114, -1.279288}, {-0.735976, -0.177716}, {-1.173461, -0.963224}, {0.642447, -1.215458}, {-0.542537, -0.779186}, {0.208617, 0.707524}, {-0.815926, 0.734432}, {-1.362503, 0.826668}, {0.171331, -0.098047}, {0.299502, -0.977795}, {-1.423973, 0.972393}, {1.079616, -1.087319}, {-0.301928, 0.824269}, {1.239375, 0.407183}, {0.060999, -0.016179}, {0.804982, -0.385257}, {-0.012938, 0.677340}, {-0.121473, 1.046107}, {-0.173294, -0.590221}, {0.680903, 0.172555}, {0.901474, -0.638362}, {-0.754168, 0.954427}, {-1.017190, 0.458050}, {-0.893258, -0.651492}, {-1.223616, 0.734166}, {-0.551561, 0.465105}, {-0.472743, -1.538767}, {-0.643332, 0.237332}, {-1.403355, -0.712716}, {-0.696300, 0.281854}, {0.063601, 0.242936}, {0.140091, -0.361881}, {-0.466220, 0.056740}, {0.400082, 0.655608}, {-0.218787, 0.165453}, {0.162508, 0.460463}, {0.196531, 0.805585}, {0.867586, -0.796481}, {-0.103192, -0.372709}, {1.480107, -0.244144}, {-0.377288, -0.616448}, {0.827771, 0.615012}, {0.241670, -0.067976}, {0.159564, -0.039752}, {0.202995, -0.531926}, {-0.635295, -0.300095}, {-0.112240, -0.452463}, {-0.005874, -1.283824}, {-0.902111, -0.502776}, {0.246129, 0.198008}, {0.478389, 0.145563}, {0.441332, 0.687473}, {-0.247149, 0.184176}, {-0.789643, -0.991969}, {-1.231853, -0.521080}, {0.419307, -1.074857}, {0.844709, 0.320482}, {1.197865, 0.314086}, {-0.515979, 0.581945}, {-0.331012, -0.496182}, {-0.030485, 0.691218}, {-0.148168, 0.839336}, {-0.386217, -0.545061}, {0.377549, -2.132758}, {-0.636174, -0.065140}, {-0.578408, 0.476528}, {-0.770655, 0.716478}, {-0.315434, 0.652659}, {-0.095634, 0.084278}, {-0.454542, 0.493002}, {-0.466113, -0.638183}, {-0.452908, 0.032110}, {0.612871, -0.006891}, {-0.519763, -0.980015}, {0.216004, 1.044187}, {-0.522556, -1.037992}, {0.191915, -0.608267}, {1.409379, -0.193706}, {-0.007437, -0.406039}, {-0.109688, -0.212492}, {0.014242, -0.315274}, {-1.498715, -0.045784}, {0.823582, -0.518037}, {0.453221, -0.453072}, {0.308668, 0.963767}, {-0.639039, -0.106259}, {-0.295817, -1.112948}, {0.149772, 1.651655}, {-0.190802, 0.742309}, {-0.697535, 0.406187}, {0.803067, -0.505165}, {-0.543679, -0.703909}, {-0.455789, 0.354645}, {-0.801542, -0.036586}, {0.803856, -0.099847}, {-1.193883, -0.353241}, {1.075654, 0.052465}, {-0.258694, -0.040366}, {-0.699399, -0.209583}, {-0.215574, -0.004929}, {0.632563, 0.109047}, {-0.472713, 1.246852}, {0.558519, 0.764899}, {-1.312153, -0.650642}, {0.319234, 0.096798}, {-0.116014, 1.918017}, {0.348943, -0.098542}, {-0.517133, -0.367209}, {-0.032548, -1.034303}, {0.328535, -0.909280}, {0.458397, 1.012904}, {0.159957, 0.751975}, {0.448532, 1.165521}, {-0.289242, -1.073650}, {0.221077, 0.996689}, {0.271276, 0.400481}, {-0.293484, 0.257531}, {0.380645, -0.869409}, {1.060007, -1.185366}, {-0.683863, -0.654862}, {0.335272, 0.036245}, {-0.230655, 0.834185}, {-0.012915, -0.531325}, {0.024833, -1.050938}, {-0.708008, 0.918939}, {-0.825306, -0.060127}, {0.253139, 0.491280}, {0.680471, 0.175579}, {-0.198326, -0.665312}, {-0.922970, -0.808154}, {0.156470, -0.797370}, {-0.783536, -0.469965}, {0.341051, 0.873579}, {-2.007647, 0.681225}, {0.364041, -0.508894}, {-0.015955, 0.350543}, {-0.291678, -0.998941}, {0.239003, -0.487403}, {-0.327758, -0.508257}, {-0.539391, -0.798760}, {-0.540462, -0.564731}, {-0.620798, 0.707924}, {0.256000, 0.452068}, {0.385059, 1.172229}, {0.360328, -0.171884}, {-0.572500, 0.532958}, {0.648164, 0.071339}, {-1.027705, -1.054336}, {0.522261, -0.590621}, {-0.019556, 0.572396}, {0.607990, 0.481700}, {-1.322499, 0.788470}, {-0.684229, -0.473861}, {-1.265839, 1.105980}, {-0.581971, -0.124401}, {0.444034, 0.102150}, {0.794992, 0.031055}, {0.603776, 0.000266}, {0.877366, 0.024301}, {0.277579, 0.682971}, {-0.109226, 0.230966}, {-0.935434, 0.116535}, {-0.083082, 0.334694}, {0.362059, -0.024471}, {0.753738, 0.122144}, {0.304294, 1.505981}, {0.271106, -0.317919}, {-0.465618, -0.059502}, {-0.373175, -0.755986}, {0.387614, -0.416476}, {-0.748802, -0.395856}, {-0.013579, -1.476338}, {-0.366869, 0.317716}, {-0.979219, -0.200391}, {-0.153407, -0.447562}, {-0.255245, 0.351090}, {0.998840, -0.545270}, {0.186904, -0.240711}, {0.153329, -0.943938}, {0.247078, 0.571677}, {0.192360, 1.104895}, {-0.551067, 0.802267}, {-0.124506, 0.860949}, {-0.139002, -0.104195}, {-0.642611, -0.508259}, {0.157868, 0.859140}, {0.019725, 0.207020}, {-0.653316, 1.187525}, {1.329306, -0.509686}, {0.694674, 0.256705}, {0.202853, 0.851294}, {-0.441419, 1.428209}, {0.156150, -0.080560}, {0.715021, -0.899171}, {-0.239049, -0.631319}, {0.195295, 0.575186}, {-1.311572, -0.865187}, {0.570106, 0.651064}, {0.208959, -1.023329}, {0.906490, -0.109625}, {-0.781286, -0.253333}, {0.231546, 0.707965}, {-1.265833, 1.067884}, {0.815263, 1.165205}, {1.466715, 0.385384}, {0.535490, 0.581761}, {-0.472358, -0.470277}, {0.983264, 0.384383}, {0.727058, 0.443847}, {-0.416272, -0.472738}, {0.376082, -0.134460}, {-0.503839, -0.901079}, {0.682625, 1.008080}, {-1.386979, -1.091660}, {0.213387, 0.535684}, {-0.957192, -0.557212}, {-0.067069, -1.051855}, {-0.101157, -0.178941}, {-1.306964, -0.631127}, {0.926961, -0.083734}, {-0.264348, -0.487315}, {0.627269, -0.923797}, {1.086963, 0.082439}, {-0.149566, -1.399193}, {0.389143, -0.198131}, {-0.031070, 0.505173}, {1.081145, -0.421980}, {-0.365429, -0.412667}, {-0.376916, 0.370359}, {0.531009, 1.324279}, {0.522575, -0.338998}, {0.502957, -0.482424}, {-0.562535, -0.545277}, {-0.397874, -0.045620}, {-0.210300, -0.937677}, {0.678832, -1.456153}, {-0.290273, 0.095165}, {0.631624, 0.517150}, {-0.411457, 0.459952}, {1.217812, -0.542939}, {0.073630, -0.234428}, {0.054958, -0.570539}, {-1.128586, 0.230127}, {0.720559, 0.058370}, {-1.035968, 0.077082}, {-0.608327, -0.358758}, {0.269851, 0.489804}, {-0.406969, -0.549994}, {0.527270, -0.654157}, {1.027706, -0.593285}, {-0.471971, -0.594411}, {0.040449, -0.467310}, {-0.290221, 0.851614}, {-0.226635, -0.794078}, {0.447274, 0.236763}, {-0.785187, -0.067945}, {0.712972, 0.436643}, {-0.088441, 1.299909}, {0.475924, 0.408473}, {0.209117, 0.539048}, {0.714783, -0.513016}, {0.106957, 0.344444}, {-0.517943, 0.098828}, {1.248470, 0.110160}, {-0.164676, 0.715642}, {0.116579, 0.701060}, {-0.338202, 1.285789}, {0.252122, 0.401489}, {0.208841, 0.077311}, {0.254678, 0.806815}, {0.234503, -0.687878}, {-0.017710, 1.099931}, {1.248068, -1.577695}, {-2.177322, 0.634684}, {0.383749, -0.488257}, {0.626473, 0.894318}, {0.950392, -1.224503}, {-1.592308, 0.183474}, {-0.883620, 0.459040}, {0.335251, -0.492958}, {-1.452049, 0.645747}, {0.654540, -0.613036}, {-0.786306, 0.621635}, {-0.835920, 1.214810}, {-0.402804, -0.379300}, {-0.167140, -1.088577}, {2.017823, -0.733220}, {1.277852, 0.045432}, {-0.655324, -0.273020}, {-0.502679, -1.294652}, {0.139179, 0.305881}, {0.476464, 0.374818}, {-1.204706, 0.929919}, {-0.703096, 0.426476}, {-0.170932, -0.224981}, {-0.351279, -0.400379}, {0.267640, 0.852748}, {0.272721, -0.274755}, {0.394744, 0.261766}, {-0.427077, -1.197927}, {0.469152, -0.246978}, {-0.068939, -0.212535}, {0.567020, 0.581239}, {1.773606, -1.261858}, {0.258176, -1.131465}, {-1.103839, -0.289925}, {1.177229, -0.690317}, {0.137438, -0.884592}, {0.116897, -0.623741}, {1.231751, -1.044646}, {0.653054, -0.008248}, {-1.025754, 0.353121}, {0.152087, -0.684942}, {0.970565, 0.373987}, {-0.392564, -0.069188}, {-0.268254, 0.066466}, {1.288850, -0.546856}, {-0.879522, 1.075044}, {0.398109, 0.957102}, {0.937518, -0.970381}, {1.315683, 0.004675}, {0.656915, 0.923958}, {0.964084, 0.332777}, {-0.544967, -0.260763}, {0.161974, -0.230332}, {0.086070, 1.573961}, {-0.383494, 0.130120}, {1.082890, 0.057498}, {-1.410456, -0.461719}, {0.540485, 0.691271}, {-0.278103, 0.291339}, {0.180835, 0.081187}, {0.648822, -0.143641}, {-1.616721, 0.284309}, {0.850766, -0.295949}, {-0.452081, -0.318424}, {-0.672436, 0.363193}, {0.330021, -0.103062}, {-1.201214, 0.695691}, {-0.176974, -0.049101}, {0.034254, -0.001430}, {-0.581966, -1.404542}, {1.233772, 0.845893}, {0.770042, -0.222329}, {-0.134528, 1.408050}, {0.981347, 0.143636}, {0.145948, 1.099040}, {0.710827, 0.052673}, {0.557771, -0.481154}, {-0.146756, -1.008837}, {-0.689552, -0.880902}, {0.001022, 0.756353}, {0.222483, 0.013501}, {0.905978, 0.432735}, {-0.497583, -0.437051}, {0.010372, -0.231759}, {-0.834391, 0.245930}, {0.869406, -1.488002}, {-1.420173, 0.137089}, {0.055164, 0.678866}, {0.811665, 1.025276}, {0.375303, 0.608999}, {-0.615345, -0.077846}, {-0.186463, 0.319902}, {0.005719, 0.915684}, {0.318663, -0.507730}, {-0.803895, 0.451266}, {0.160835, 0.158185}, {1.633081, 0.429963}, {-0.791587, 0.563798}, {-0.778932, -0.083845}, {-0.746995, 0.259063}, {-0.374430, 0.379522}, {-0.025126, -0.204688}, {-0.991074, 0.045919}, {-0.136845, -0.414905}, {0.899845, 1.310109}, {-0.868625, -0.129578}, {1.148100, 0.070605}, {-0.810213, -0.433737}, {1.207818, -0.151042}, {-0.515970, -0.141577}, {-0.161548, 0.388756}, {-0.679441, -0.108745}, {-0.858860, 0.144068}, {-0.111455, -0.935162}, {-0.512453, 0.281827}, {0.802022, -0.977459}, {-0.488174, 0.273547}, {-0.555684, 0.973625}, {-1.467122, 1.287905}, {0.769233, -0.351832}, {0.214904, 0.347022}, {0.942995, 0.470266}, {-1.265858, -1.103599}, {0.786352, -0.915630}, {0.377453, 0.259392}, {0.364408, -0.253769}, {-0.939662, 0.510476}, {-0.611435, 0.630746}, {0.496403, 0.350935}, {0.780776, -0.376306}, {0.329368, -0.560035}, {-0.104896, -0.414545}, {0.459736, -0.818950}, {0.101952, 0.759826}, {0.234506, 0.195742}, {1.165165, 1.081672}, {-0.741395, -0.556266}, {0.136652, -0.063647}, {-0.380017, 0.025288}, {-1.149874, 1.004539}, {0.233882, 0.583344}, {1.407491, -0.873973}, {0.124950, 0.137739}, {0.077742, 0.655085}, {0.756326, 0.693924}, {-0.978230, -0.590244}, {-0.318209, -0.151183}, {1.590341, 0.137861}, {-0.091311, -0.581231}, {0.362381, -0.416706}, {0.646778, -0.246347}, {0.432081, -0.436533}, {0.467351, 0.177888}, {-0.192966, 1.332833}, {-0.364669, 0.036797}, {-0.426350, 0.041546}, {-0.468050, 0.813732}, {-1.082121, -0.356209}, {0.795313, 0.513634}, {0.286996, 0.171098}, {0.534304, -0.756041}, {-0.676098, 0.413430}, {-0.707209, 0.964446}, {-0.144614, -0.627121}, {1.280522, -1.317728}, {-0.159645, -0.237936}, {-0.582439, -0.659814}, {-0.070758, -1.089956}, {-0.148674, -1.374329}, {-0.179882, 0.506686}, {0.086493, -0.791614}, {0.489759, -0.403031}, {-0.314327, -0.111422}, {-0.412931, 0.493597}, {0.253975, 0.712494}, {0.449653, 0.383925}, {-0.170046, -0.209558}, {0.146663, 0.741047}, {-0.391870, -0.091945}, {-0.442016, 0.119528}, {-0.802004, -1.400078}, {-0.352020, -0.673484}, {1.178405, 0.222166}, {0.401656, -0.176436}, {-0.270939, -0.198899}, {-0.695723, -0.566735}, {0.834854, -1.471402}, {-0.289106, 0.437823}, {0.251627, 0.054241}, {0.029125, -0.307041}, {-1.487735, 1.231129}, {0.333572, -0.223186}, {0.038154, 1.081929}, {-0.087970, -1.036150}, {0.592180, 0.133148}, {0.093161, -0.294506}, {-0.296535, 0.495623}, {-0.522146, 1.313928}, {-0.714640, -0.532988}, {0.398263, 0.293071}, {-0.596224, 1.223075}, {0.479882, -1.180554}, {-0.065416, -0.710133}, {-0.889315, -0.315524}, {0.962241, -0.055537}, {-0.221264, 0.112333}, {0.322420, -0.571722}, {1.192841, 0.558100}, {0.521199, 0.138154}, {0.716695, 0.106324}, {0.711628, -0.260564}, {0.189505, -0.382577}, {-0.438235, -0.546217}, {0.077497, -0.092175}, {-0.202673, -0.048951}, {1.487370, -0.747006}, {-1.031527, -0.820128}, {-1.649929, -0.105742}, {-0.347869, -0.458435}, {-0.029234, -1.320993}, {1.253876, 0.585886}, {0.436760, 2.430056}, {0.545664, 0.470634}, {0.901732, -0.856095}, {0.662886, 0.977089}, {1.075384, -0.075824}, {0.209674, 0.063782}, {-0.126499, 0.482599}, {-0.507162, 0.208925}, {0.247866, -0.354774}, {0.054885, -1.024517}, {0.204562, 0.827382}, {-0.883562, -0.740692}, {0.849976, -0.019489}, {0.263688, 0.251006}, {-0.330082, -0.061291}, {-0.083851, 1.370921}, {0.295784, 0.875275}, {-0.425539, -0.283223}, {-0.640975, 0.136141}, {-0.173006, 0.465478}, {-0.895481, 0.477515}, {0.229261, 1.220279}, {-0.407060, 1.466588}, {1.295396, 0.176855}, {-0.632605, 0.786648}, {-1.121659, 0.268616}, {-0.847703, -0.305246}, {1.663789, 1.656323}, {-0.523322, -0.547465}, {-0.792665, 0.115445}, {-0.824945, 0.042476}, {0.901073, 0.249932}, {1.130116, -1.907218}, {-0.859768, -1.577612}, {-0.191384, 0.566792}, {0.676686, -0.623231}, {-0.793064, -0.852185}, {0.027490, -0.460866}, {0.540012, -1.738204}, {-0.751769, -1.401695}, {-0.652675, -2.187214}, {0.546582, 0.366436}, {0.191392, -0.194236}, {0.143155, 0.472797}, {-0.850023, -0.135606}, {-0.377306, 0.072815}, {1.283611, 0.519238}, {0.216310, 0.401307}, {0.612385, 0.376774}, {0.509529, -1.018581}, {0.718140, -0.664603}, {-0.092749, -0.580942}, {0.408930, -0.062835}, {-0.082806, -1.497458}, {-0.474417, -0.431005}, {-0.261473, 0.207407}, {-0.241734, 0.107672}, {-1.042802, -0.161642}, {0.155338, 0.029191}, {0.742596, 0.009836}, {1.004603, -0.548445}, {-0.772076, 0.004202}, {0.684254, -1.908420}, {-0.643584, -0.503343}, {-0.602398, 0.352084}, {0.637940, 0.050408}, {-0.282541, -0.673629}, {-0.218095, -0.677067}, {0.028687, -0.173118}, {0.599385, 0.120223}, {-0.635225, 1.055321}, {-0.321093, -1.072140}, {0.301278, -0.518003}, {-0.301802, 0.560499}, {0.404168, -0.160419}, {0.439423, -0.123051}, {-0.001024, -0.084182}, {-0.222399, 0.398534}, {-0.032543, 0.290847}, {-0.686894, 0.642376}, {-0.376391, -0.292043}, {1.291833, -0.282113}, {-0.432943, 0.047899}, {-0.268253, -1.565101}, {-0.079616, -0.299536}, {0.117126, -0.616435}, {0.920777, -1.547713}, {0.672508, -0.938412}, {-0.127227, 0.039824}, {0.497527, 0.137301}, {-1.150554, -0.242356}, {0.526140, 0.662427}, {0.332716, 0.387359}, {0.193252, -0.748491}, {0.879236, 1.244841}, {-0.320852, 0.438523}, {0.655207, 0.250311}, {0.798317, -0.037761}, {1.759320, 0.543552}, {0.796490, 0.394488}, {-0.426451, 0.104660}, {-0.596812, 0.295484}, {-0.586590, -0.761865}, {-1.204936, 1.145020}, {-0.858949, 0.734240}, {0.417170, -1.861530}, {-1.380253, 0.411880}, {0.940440, -1.547216}, {0.392789, 0.067926}, {0.752023, -0.870322}, {0.120743, -0.084171}, {0.226500, -0.038959}, {-0.199741, 0.982130}, {-1.435202, 1.924533}, {-0.681303, -0.685655}, {-0.017819, 0.316710}, {-0.419371, 0.291876}, {-0.419993, -0.704322}, {-0.167402, -0.653200}, {0.689883, 1.667397}, {0.656809, -0.191279}, {1.349286, 0.707932}, {-0.417382, -0.503832}, {-0.314839, 0.076203}, {0.018604, 0.103821}, {-0.670877, 0.305072}, {0.238125, -0.177294}, {-0.711169, 0.115679}, {0.098621, -0.114667}, {-0.836724, 0.797509}, {-1.266489, 0.300376}, {-1.574358, -0.601570}, {0.109701, -0.625894}, {0.799278, -2.008089}, {0.734900, 1.439041}, {-0.172757, 0.297516}, {0.123756, 0.251462}, {-0.605374, 0.019162}, {-0.277414, 0.527217}, {1.598600, -0.465976}, {0.478046, -0.621558}, {-0.032111, 0.513916}, {-0.406663, 0.473997}, {0.377026, -1.022417}, {0.261630, -0.600598}, {0.192450, -0.761462}, {-0.945120, 1.662247}, {1.445931, -0.381166}, {0.796386, -0.527247}, {0.570342, -0.165144}, {-0.260445, 0.197738}, {-0.396075, 0.035099}, {0.438589, 0.193911}, {0.279975, 0.803087}, {-0.718632, -0.043015}, {-0.073136, -0.144147}, {0.091844, -1.245899}, {1.133630, 1.064059}, {0.333917, -1.059628}, {-0.475974, 0.272878}, {1.618769, 0.338515}, {-0.026654, 0.173819}, {-0.832746, -1.291872}, {1.459739, -1.787186}, {0.152053, 0.719499}, {-0.845311, 0.148728}, {0.096770, 0.236791}, {0.788550, 0.590381}, {0.589643, 0.130083}, {0.556591, 1.302659}, {-0.149560, 0.050103}, {0.917707, -0.486145}, {-0.059802, 1.519826}, {-1.072536, 0.667091}, {-0.111194, 1.228050}, {-0.229775, 0.154698}, {-0.371433, 0.541268}, {0.403110, 0.104249}, {-0.766373, -1.209893}, {-0.133097, 0.781221}, {0.018198, -0.190757}, {0.547760, -0.448064}, {-0.733735, 0.187525}, {0.308738, 0.575826}, {0.120420, -0.748615}, {-0.162974, -1.656815}, {0.495299, 1.294132}, {0.284833, 0.326106}, {0.304357, -0.029696}, {-0.114308, -0.998843}, {1.147646, 0.007336}, {0.889660, 0.377428}, {1.101746, -0.075572}, {-0.630002, 0.224827}, {-0.447421, -0.680766}, {-0.398164, -0.758312}, {1.162091, 0.872670}, {-0.153320, 0.100257}, {-1.053855, -0.142606}, {-0.151297, -1.709248}, {-0.088670, -0.030046}, {-0.039511, -0.751111}, {-0.268719, 0.233002}, {0.107060, 0.944089}, {-0.528369, 0.218636}, {0.379463, -1.271446}, {0.845463, -0.200500}, {0.449410, -0.308035}, {-1.125393, -1.368811}, {-0.707799, 0.752393}, {0.224584, 0.957984}, {-0.076844, -0.185815}, {-0.276454, -0.875122}, {-0.308372, -0.078258}, {0.710906, -0.432983}, {0.086967, -0.475256}, {-0.484939, -0.239784}, {0.527071, 1.381910}, {1.207738, 0.764537}, {-1.166732, 0.156223}, {-0.928368, -0.713470}, {0.232623, 0.248816}, {0.234335, -0.713494}, {0.506899, -0.538864}, {0.923647, 0.164175}, {0.589798, 0.487695}, {-0.068928, -0.289141}, {0.770468, 0.393273}, {-0.850038, 1.509075}, {-0.050092, -1.065967}, {0.044840, -0.642072}, {1.538218, -0.718189}, {-0.483958, 0.310072}, {0.883513, 0.423129}, {0.577394, -0.913756}, {0.369553, -0.000248}, {1.306622, -0.676905}, {-0.161439, -0.092252}, {0.124913, 0.545292}, {-0.055785, -0.270095}, {-0.654485, 1.619946}, {0.010064, -0.415884}, {0.561868, -0.574773}, {0.417682, 0.121106}, {0.447357, -1.403651}, {0.036032, 0.849953}, {-0.310738, -0.139296}, {-0.340548, 1.709065}, {0.324753, -0.829858}, {-0.482715, 1.278533}, {0.027337, 0.634282}, {0.543259, -1.129644}, {-0.176542, 0.641092}, {0.513499, 0.270266}, {0.592728, 1.200615}, {-0.168299, 0.071350}, {-0.028778, -1.609077}, {0.100068, -0.177816}, {0.179793, 0.405800}, {-0.550998, -0.189012}, {-0.374629, -0.335207}, {0.489373, -0.863435}, {-0.909667, -0.243295}, {-1.905582, 0.828148}, {-0.322044, 0.578390}, {0.172952, 0.392945}, {-1.349845, -0.593467}, {0.385443, -0.834331}, {-0.520047, -0.256327}, {-0.168864, -0.011272}, {0.705916, 0.337266}, {-0.613837, 0.309663}, {0.732870, 0.082069}, {-0.446717, 0.037997}, {0.503221, -0.919048}, {-1.227801, -0.644395}, {-0.110226, 0.472814}, {-0.153520, -1.426752}, {-0.372143, -0.995245}, {0.041903, 1.617146}, {-1.716966, -0.094746}, {0.110050, 0.506537}, {0.441591, 0.285438}, {-0.422717, 0.030475}, {-0.546275, 1.427064}, {0.597491, -0.001582}, {-0.227799, 0.278393}, {-0.711928, -0.389254}, {-0.316276, -0.045449}, {-0.246906, 0.142129}, {-0.017644, 0.530840}, {-0.846558, 0.285732}, {0.024601, 1.550225}, {0.135991, -0.281795}, {1.076094, -0.393152}, {0.469595, 0.373539}, {0.700686, -0.192217}, {-1.044613, -0.031666}, {-0.172857, 0.037056}, {0.216986, -0.221328}, {1.202936, 0.262729}, {0.736136, 0.660856}, {0.310616, -0.895782}, {0.756943, -0.860938}, {0.491193, 0.919560}, {-0.391990, -1.038218}, {0.630603, 0.076034}, {-1.672313, 0.931548}, {0.031370, -0.235708}, {-0.059540, -0.730453}, {1.751460, -0.083331}, {-0.312742, 1.042875}, {-1.327894, -0.601739}, {1.130657, -0.489036}, {-0.578349, -0.452027}, {0.442817, -0.010612}, {0.568033, 0.646896}, {-0.209657, 0.511084}, {0.185712, -0.492029}, {1.604476, -0.325909}, {-0.804376, -0.713345}, {-1.315856, 0.385873}, {-0.221093, 1.328622}, {-0.759605, 0.387801}, {0.152179, -0.162878}, {-0.218474, -0.005204}, {0.375890, -0.799244}, {0.637063, -1.137409}, {0.594361, 0.315677}, {0.645739, 0.636245}, {0.658041, -0.321056}, {0.070071, 1.391222}, {0.721141, -0.400061}, {-0.352948, 0.195410}, {-1.271695, 0.849227}, {-0.501393, -0.054339}, {0.423696, 1.085774}, {-1.135309, 0.703848}, {-0.274176, 0.653380}, {-0.316789, -0.988309}, {0.711998, 1.178853}, {0.467890, 0.383039}, {-0.361315, 0.586150}, {-1.992977, 0.823878}, {0.390939, 0.167472}, {0.110536, 0.002095}, {-1.247517, -0.665658}, {0.121696, 0.179633}, {-1.365006, 0.556461}, {0.408822, -0.155980}, {-0.730116, 0.123973}, {0.684268, -1.776762}, {-0.649453, -0.171713}, {-0.372612, -0.050829}, {0.376350, 0.556347}, {-0.100789, -0.048297}, {0.535745, -0.486194}, {-0.461672, -0.184145}, {0.397655, -0.685573}, {-0.322562, -0.405548}, {-0.139347, 0.980121}, {0.383183, -0.416704}, {0.405772, 0.305710}, {1.287783, 1.488584}, {0.032704, 0.960170}, {-0.996629, -0.613880}, {0.344951, 0.741074}, {0.012855, 0.279797}, {0.059268, 0.437106}, {1.099804, -0.690001}, {2.066302, -1.011066}, {-1.138329, 0.358600}, {0.915106, 0.661313}, {-0.890883, -0.368142}, {-1.368238, 0.378705}, {-0.336150, 0.507975}, {-0.706113, 0.234963}, {-0.606888, -0.970039}, {-0.527169, 0.523949}, {0.018031, -0.474310}, {0.741809, -0.091430}, {-0.009929, 0.576888}, {0.874371, 0.333460}, {-0.254588, 0.654464}, {0.261702, 1.313061}, {-1.277335, 1.378973}, {-0.138901, -0.173082}, {0.924853, 0.129874}, {-0.387252, 0.001449}, {0.101334, -0.534299}, {1.166440, -0.414895}, {1.069226, 0.257124}, {0.900367, -0.135723}, {1.218319, -0.472790}, {0.508176, -0.583053}, {0.556299, 0.001431}, {0.941767, 0.240470}, {1.019062, -1.238945}, {-1.044413, 0.547817}, {0.739657, 0.372119}, {-1.127057, -0.032632}, {1.021823, -2.155687}, {0.154893, -0.768565}, {0.222839, -0.891271}, {-0.021271, -0.349137}, {-0.498438, -0.404658}, {0.713753, -1.281305}, {0.516202, -0.400977}, {0.375070, -0.381473}, {0.611029, -0.695506}, {0.329870, 0.978420}, {-0.440990, -0.627980}, {1.106160, -0.673187}, {0.330761, 0.960060}, {0.002016, -0.375526}, {-0.418742, -0.230493}, {0.889310, 0.259182}, {-0.743094, 0.859461}, {-0.639141, 0.046149}, {-0.825368, 1.113567}, {-0.183710, -1.099516}, {-0.688241, 0.048768}, {-0.567826, 0.016499}, {-0.252604, -0.505972}, {0.125737, -0.032586}, {-0.289104, 0.481842}, {0.197078, -0.361814}, {1.702697, -0.135121}, {-0.313162, -0.195712}, {0.373467, -0.638017}, {0.265985, 0.688793}, {-0.930620, -0.543390}, {0.266031, 0.127381}, {-1.131799, -0.707161}, {0.294857, -1.044248}, {0.844394, -1.509590}, {-0.012985, 0.455971}, {0.934720, 0.325752}, {0.477097, -0.617656}, {-0.186792, 0.919832}, {0.661168, -1.463831}, {-0.052266, -0.007023}, {-0.417000, -0.630278}, {-0.201517, 0.049327}, {0.324582, 0.488122}, {-1.135622, 1.088472}, {-0.839457, 0.576660}, {0.776228, -0.246711}, {-0.060646, 0.204187}, {-1.666099, -0.412724}, {-0.302620, 0.413709}, {0.134609, -0.417098}, {0.667218, -0.505744}, {0.310204, -0.163001}, {2.227881, 0.439271}, {-0.402395, -0.165319}, {-0.381247, 0.233719}, {-0.070232, -0.083912}, {0.705271, 0.505574}, {-0.574528, -0.237527}, {-0.097888, 0.687548}, {-0.287092, -0.392327}, {0.771057, -2.105183}, {-0.424797, -0.712019}, {-1.141051, -0.262563}, {1.245465, -0.173175}, {-0.809671, 0.478984}, {0.420857, -1.118626}, {-0.774501, 0.206551}, {-0.371353, -0.523965}, {-0.475349, 0.782751}, {0.354270, 0.297627}, {0.429063, -0.301249}, {-0.253951, -0.024314}, {0.542049, 0.210328}, {-1.288145, 0.902746}, {-0.610673, -0.457713}, {0.560486, -0.045507}, {1.012326, 0.160808}, {0.739327, 0.227113}, {0.440689, -0.364347}, {0.043907, -0.902520}, {0.107084, -0.850966}, {-0.864312, -0.936915}, {-0.983595, 1.279503}, {-0.826804, -0.510867}, {0.410159, -0.166249}, {0.234942, 0.048679}, {-0.440864, -1.871740}, {-0.277232, 0.058905}, {0.865167, -1.085117}, {0.323421, 0.865950}, {0.078567, 0.487181}, {-0.106628, 0.112398}, {-0.701141, -0.631292}, {-0.241547, -0.907031}, {-1.058655, 1.194515}, {-0.245933, -0.291151}, {0.090384, -0.078327}, {-1.804471, 0.305652}, {-0.710208, -0.044177}, {-1.637185, 0.634789}, {0.322701, 0.202198}, {0.592642, 0.027099}, {0.106661, 0.220082}, {0.374884, 0.031143}, {0.466431, 0.144924}, {-0.435113, -0.045018}, {-0.812143, 0.850339}, {-0.723946, 0.392704}, {-2.151521, -0.712553}, {0.450893, -0.280685}, {0.819631, 0.669219}, {0.173790, -0.823862}, {1.252888, -0.450119}, {-0.760925, 0.126633}, {0.100797, 0.669706}, {0.636397, 0.644360}, {0.314358, 0.426072}, {0.399418, -0.772800}, {-0.648593, -0.341262}, {-0.247134, 0.264055}, {1.077773, 0.975354}, {0.523563, -0.791219}, {-0.796902, -0.163962}, {-0.615911, 0.149349}, {0.954916, -1.262222}, {0.678034, 1.207517}, {-0.372992, -0.431473}, {-1.124813, -1.597092}, {-0.447033, -0.087720}, {-0.720631, 0.709710}, {0.384703, 0.910101}, {-0.247341, -1.476532}, {-1.241862, 1.322373}, {-0.310325, 0.816418}, {-0.050700, -0.416219}, {0.309471, -0.192610}, {0.371081, 0.778064}, {-0.510419, -1.055190}, {0.127094, 0.388637}, {-0.255658, -0.020784}, {-0.239095, -0.235771}, {0.860355, 0.144748}, {0.175697, 0.666209}, {0.161710, -1.018808}, {0.208616, -0.113253}, {0.322261, -0.153970}, {0.115609, 0.527421}, {-1.142425, -0.174532}, {-0.867659, -0.160025}, {0.702013, -0.499588}, {-0.305717, -0.468403}, {1.015578, -0.486232}, {0.012654, 0.647932}, {0.650411, 0.663774}, {0.064881, 0.712345}, {-0.408083, -0.026499}, {0.129269, 0.557035}, {-1.311066, 0.784364}, {-0.811294, -0.539442}, {-0.783403, -0.385913}, {0.661821, 0.125770}, {-0.659564, 0.069575}, {0.995148, 0.349592}, {0.148861, -0.577855}, {1.019181, -0.324607}, {0.569564, -0.397281}, {0.908002, 0.954231}, {1.214742, -0.616921}, {-0.173224, 0.454581}, {-2.116294, -0.837803}, {-0.363546, 0.105419}, {0.440872, 0.067274}, {-0.101457, 0.086710}, {0.335032, 1.011214}, {-0.212784, 1.709394}, {-0.609104, 0.294062}, {0.257849, -0.420324}, {-1.753260, -0.996065}, {0.233278, 0.392532}, {0.347599, 0.585661}, {0.445643, -0.462247}, {1.049963, 0.117133}, {0.839655, -0.356217}, {0.703241, 0.033581}, {0.271280, -0.196860}, {0.065959, -0.921553}, {0.405906, -0.688962}, {0.098046, 0.333902}, {-0.014572, 0.211136}, {-0.737884, 0.177744}, {-0.649906, -1.604793}, {0.293595, 0.706452}, {-0.066643, 1.517094}, {0.441195, -0.173964}, {1.195227, 0.123771}, {-1.135443, -1.413717}, {0.006356, -1.017804}, {0.722946, 0.103556}, {-0.003354, 0.488708}, {0.474062, 0.159755}, {0.324770, 0.895972}, {-0.553939, 0.154297}, {-0.103416, 0.898922}, {-1.072220, -0.410260}, {-0.053047, -0.030047}, {0.070087, -0.725415}, {0.165223, -0.558910}, {0.782904, -0.136372}, {-0.041688, -0.135373}, {0.334520, -0.033481}, {0.801873, -0.133751}, {0.209301, 0.597294}, {0.618379, 1.223616}, {0.888198, -0.672384}, {-1.214205, 0.041896}, {-0.207532, -0.540674}, {0.992363, -1.169905}, {0.940801, -0.242385}, {-0.708174, 0.635987}, {-0.369966, 0.143612}, {1.281108, 0.086508}, {0.250887, -0.332167}, {-0.515793, -0.631672}, {1.136276, 0.346349}, {-0.464252, 1.668219}, {0.525805, -0.141030}, {0.999260, 1.590780}, {0.605581, -0.060022}, {1.056390, -0.048178}, {-0.968752, 0.185265}, {-1.340377, -0.330139}, {-1.046545, 0.051473}, {-0.450882, 0.258781}, {0.243010, 0.998613}, {0.421506, -0.706489}, {0.656187, -0.851819}, {-1.749329, -0.182724}, {0.266263, 0.302166}, {0.344290, -0.491448}, {0.946706, 1.671205}, {1.056879, -0.219540}, {0.627745, -0.729454}, {0.433355, -0.250281}, {-0.200019, -1.300245}, {1.255424, -1.022037}, {-0.061801, -0.646340}, {-0.232252, 0.533970}, {-0.395477, 0.369443}, {-0.623953, -0.526531}, {-0.820382, 1.716970}, {0.140594, 0.061758}, {-1.036810, 0.403211}, {-0.469993, -0.107368}, {1.205792, 0.275994}, {0.959943, 0.019721}, {0.573598, 0.123293}, {-1.420059, -1.132904}, {0.290727, 0.167288}, {0.365799, 0.542990}, {0.516968, -0.612634}, {0.160027, -0.390477}, {-0.347292, 0.029547}, {-0.004609, 1.121404}, {-0.335175, -0.015666}, {0.908113, 0.229171}, {0.545009, 1.480549}, {-1.220973, 1.093788}, {0.479628, -1.425169}, {-0.513786, 1.062727}, {0.357421, -0.804394}, {-1.061941, 0.223873}, {-0.385252, 0.110396}, {-1.640287, -0.021951}, {0.623028, -0.060477}, {-0.550756, 0.678768}, {0.135673, 0.837449}, {0.751838, -0.180054}, {0.954815, -0.866757}, {0.604536, 1.476877}, {-0.286459, 0.372774}, {0.376627, -0.910916}, {1.217027, 0.101736}, {0.011181, -0.874826}, {-0.722030, 0.489939}, {0.311409, -0.260903}, {0.226439, -0.416559}, {-0.217666, 0.618687}, {-0.882251, -0.420330}, {0.562126, -0.226552}, {-0.133127, -0.134644}, {0.969153, -0.508304}, {0.405205, -0.871967}, {-1.017625, 0.079112}, {-0.736203, -0.949411}, {0.250579, 0.868592}, {0.584736, 0.487773}, {-0.200735, 0.406254}, {-0.169967, -0.174164}, {-0.926833, -0.008126}, {-1.276335, -0.436210}, {-1.055847, -0.464811}, {1.382819, -0.892263}, {0.549810, -0.254992}, {-1.222183, -0.947043}, {0.548589, -0.517754}, {0.330987, 1.018993}, {0.025173, 0.069526}, {0.574042, -1.129914}, {1.165371, -0.221953}, {-0.047741, -0.296772}, {0.651998, 0.263669}, {-0.694023, 0.443470}, {-0.956615, -0.672689}, {0.016381, -0.458048}, {0.982982, -0.048522}, {0.181067, -0.514465}, {-0.391139, -0.223578}, {0.161096, -0.653129}, {-0.351802, -0.290479}, {-0.314563, 0.489580}, {-0.146600, 0.217679}, {-0.626463, -1.314274}, {-0.425276, 0.036105}, {0.653590, -0.842355}, {0.326039, -0.509672}, {-0.469673, 0.286035}, {-0.123351, 0.467094}, {0.413046, 1.210950}, {-1.022797, -0.785435}, {0.675002, 0.772235}, {-0.862771, -0.220066}, {-0.231169, -0.567071}, {-0.022879, -1.662436}, {0.191818, -0.220743}, {-0.011754, -1.811256}, {0.535316, -0.223392}, {0.073030, 1.008182}, {0.433603, 1.040546}, {0.057488, -0.260627}, {-0.750304, -0.190874}, {-1.484162, -0.249188}, {0.555514, -0.171803}, {0.541373, 0.623842}, {-0.324439, -0.112460}, {0.079769, -0.353481}, {0.330382, 1.054412}, {-0.106034, 0.995793}, {-0.382467, 0.382232}, {-0.036929, -0.393942}, {0.511558, -1.203157}, {-0.669114, -0.507821}, {-0.717810, -0.040914}, {-1.754621, 0.344004}, {-0.597845, -1.199356}, {1.760979, 0.700903}, {0.625006, -0.444735}, {-0.348717, -0.247748}, {0.174249, 0.142504}, {0.819233, 0.294173}, {-0.031325, -0.221121}, {0.591852, 0.560305}, {-0.018918, -0.672425}, {0.779234, -0.181712}, {-1.059580, 0.442549}, {-0.326264, 1.377449}, {-0.788614, -1.350767}, {0.216709, 0.414704}, {0.220819, 0.108199}, {-0.359007, 0.600802}, {-0.309663, 0.778317}, {0.757247, 0.732882}, {-0.492180, 0.313444}, {-0.869761, -1.301811}, {-0.125626, -0.676394}, {0.295449, -0.241053}, {1.054322, 0.797473}, {-0.287078, -0.504316}, {-0.537100, -0.231610}, {0.613905, -0.234007}, {0.741154, 0.141237}, {0.626367, -0.853201}, {0.755579, -0.402972}, {0.791054, 0.600208}, {-0.063499, -0.518131}, {-0.489265, -0.036842}, {-0.949063, 0.023314}, {-0.515292, -0.340645}, {1.479585, 0.191550}, {-0.606714, -0.320708}, {0.466669, 0.522580}, {-0.863079, 1.451320}, {0.528683, 0.847398}, {0.542235, -0.755739}, {0.118265, 0.135243}, {-0.740312, -0.861944}, {-0.435756, 0.830366}, {-0.109372, -0.213866}, {-0.553930, -0.845500}, {-1.099287, -0.297620}, {0.106898, -0.424559}, {-0.378716, 0.193142}, {0.213494, 1.033237}, {-0.853118, -0.760434}, {-0.206960, 0.322096}, {0.515476, -0.382595}, {-0.452647, 0.010086}, {-0.802250, -0.678852}, {0.294123, 0.686175}, {0.858965, 0.189241}, {0.605752, -1.104271}, {1.481873, 0.508996}, {-1.116676, 0.289812}, {-0.707222, -0.382630}, {-0.079025, 1.156617}, {0.639524, -0.001944}, {-0.088679, -1.253192}, {-0.321477, 0.741010}, {0.995588, -0.064482}, {-0.881360, 1.360842}, {-0.297000, -0.072434}, {0.060998, 0.138554}, {0.421436, -0.022213}, {0.600608, -0.843743}, {-0.093266, -0.799977}, {-0.270330, -0.551698}, {-0.586570, 0.075585}, {0.535896, -0.937339}, {-0.196885, -1.152215}, {-0.824956, -0.668942}, {-0.259150, 0.564970}, {1.163106, -0.343775}, {-0.211627, 0.887391}, {-1.519484, -0.692918}, {0.630723, -0.711066}, {-0.804122, -0.662480}, {0.839553, 1.605451}, {-0.326213, 0.368434}, {0.059140, -1.102124}, {0.237029, 0.146990}, {-0.696770, -0.008057}, {-1.171176, 0.075899}, {-0.147349, 0.040450}, {0.129807, -1.078745}, {-1.346480, -0.102841}, {1.923088, -0.340920}, {0.604509, -0.631306}, {0.830188, 0.900687}, {-0.244172, -0.131295}, {-1.297096, 0.273955}, {-0.851825, 1.248525}, {-0.198894, -0.720303}, {0.603852, 0.405432}, {0.164840, 0.543281}, {1.671773, 0.067980}, {0.038583, 0.297031}, {0.507509, -0.744625}, {0.359393, 0.748717}, {-0.212608, -0.358101}, {0.126437, 1.165712}, {-0.248434, -0.585575}, {-0.263564, 1.882286}, {0.197666, -0.007268}, {1.382641, -2.141275}, {0.372177, -1.454355}, {-1.179644, 0.104261}, {1.106674, -0.282933}, {-0.265928, -0.626704}, {-0.561107, 0.452555}, {-1.300538, 0.287714}, {-1.015374, 0.573758}, {-0.607617, -0.309770}, {-0.023152, -0.760109}, {-0.194123, 0.599047}, {0.647420, -0.037263}, {0.106358, 0.238426}, {-0.392097, 0.094144}, {0.661177, 0.412145}, {-1.399599, 1.957816}, {0.148234, 0.471031}, {0.286092, 0.528837}, {-0.391787, 0.921074}, {0.195292, 0.118754}, {-0.136761, 0.298155}, {-0.378985, -0.604095}, {1.371422, -0.622111}, {0.857070, 0.509011}, {0.066269, -0.029824}, {-1.377703, 0.529433}, {-0.694186, -0.441324}, {-0.257793, 1.275458}, {-0.672277, -0.654115}, {-0.809306, 0.145106}, {0.670659, -0.012692}, {0.157773, 0.013152}, {-0.462958, -0.012297}, {0.827130, 1.661564}, {0.397882, 0.120724}, {1.117614, 1.225687}, {0.476878, 0.490050}, {0.724769, 1.113002}, {0.586609, -0.560797}, {-1.361147, 0.474845}, {-0.007226, 0.580620}, {-0.701521, 0.864232}, {0.994535, 0.306268}, {0.370349, 1.237807}, {-0.242788, -1.443067}, {0.473815, -0.479609}, {-0.389546, 0.026009}, {-0.338480, 0.878802}, {0.435504, -0.420076}, {0.889075, 0.161873}, {0.138696, -0.566162}, {0.217055, 0.953271}, {0.839538, 0.048184}, {-0.059206, -1.142293}, {0.665060, -0.676547}, {0.221557, 0.086282}, {-1.173015, 0.335912}, {0.457360, -0.040303}, {0.575889, -1.213594}, {0.658439, -0.011276}, {-1.457696, -0.189237}, {-0.800412, 0.566585}, {-0.102734, -0.661830}, {-0.348242, 0.424874}, {0.353335, 1.852790}, {1.435363, 0.984674}, {0.405182, -0.313471}, {-0.641495, 1.885674}, {1.945466, 1.286943}, {-1.031042, -0.000691}, {-0.513774, -1.070626}, {1.364844, -0.285854}, {-0.121790, -1.095977}, {-1.249687, 0.021067}, {-0.075555, 0.781338}, {0.954208, -0.915902}, {-1.027627, -0.406509}, {-1.513386, 0.885096}, {-0.487952, -0.456337}, {-1.052057, 0.867359}, {-0.145713, 0.278056}, {-0.756226, -0.964303}, {-0.446097, -0.089467}, {0.169928, -0.361224}, {0.397326, -0.307696}, {-0.034144, -0.246857}, {-0.696100, -0.538312}, {-0.534972, 0.210185}, {0.816251, -0.647654}, {-0.705987, -0.908852}, {-0.615467, -1.097666}, {-0.159338, -0.149510}, {-0.937470, 0.880936}, {-0.320957, -0.048574}, {-0.372401, -0.285898}, {-0.358402, -0.568311}, {0.708385, -1.254534}, {0.829644, 0.011912}, {0.285381, -1.031588}, {0.017740, -0.349993}, {-0.022239, -0.439243}, {-1.430300, -0.497895}, {0.170766, -0.701765}, {0.175088, 0.629816}, {-0.098450, 0.984733}, {-0.506275, 0.273047}, {0.386685, 0.226191}, {-0.849597, 0.026814}, {0.331172, -0.400903}, {-0.166717, 0.322664}, {0.840811, 0.163583}, {-1.492836, 0.838920}, {-1.518271, 0.133282}, {0.411785, 0.665886}, {-1.288775, 0.573578}, {-0.679826, 0.216065}, {1.072059, 0.678109}, {0.327039, 0.057915}, {0.748172, -1.016021}, {0.766777, 0.338616}, {-0.154979, 1.088221}, {-0.233660, -0.592573}, {0.733229, -0.356964}, {-0.716623, 0.333791}, {0.201190, -0.773714}, {0.312616, -0.148537}, {0.290474, -0.743141}, {-0.227709, -0.668733}, {-1.515149, 1.270848}, {0.226198, -0.729829}, {-0.181346, -1.271070}, {-1.045326, -0.092295}, {1.642772, -1.645010}, {1.017090, -1.591010}, {0.095373, -1.289559}, {1.964387, 0.348377}, {-0.950861, 0.367564}, {0.556953, 0.768761}, {-0.203486, 0.439205}, {0.491570, 0.168439}, {-0.687148, -0.295486}, {-0.740794, -0.566119}, {-0.024076, 0.456466}, {0.109395, -0.274543}, {-0.793800, -1.014024}, {0.292454, 0.541633}, {-0.595307, 0.963837}, {-0.657843, -0.867296}, {0.204862, -0.344086}, {-0.578269, -0.345403}, {-0.780437, -0.385625}, {-0.273820, 0.505994}, {1.004484, -0.156356}, {-0.868964, 0.266448}, {0.143031, -0.803470}, {0.101618, -0.081850}, {0.193181, -0.062062}, {-0.861275, 0.852923}, {0.288135, -0.426406}, {-0.928134, 0.099686}, {-0.181721, 1.615686}, {-0.136660, 0.020212}, {0.072772, 0.114802}, {0.202198, -0.238392}, {-0.251007, 0.316880}, {0.349716, -0.792136}, {-1.213064, -0.842004}, {0.862678, -0.028549}, {-0.973473, 0.006869}, {0.233388, -0.345947}, {1.041065, 0.708671}, {0.324049, -1.771873}, {-0.185275, 0.653364}, {0.628341, 0.054329}, {-0.164341, 0.487005}, {0.393343, -0.037375}, {-0.532730, 1.366482}, {0.106510, 0.798337}, {-0.801100, -0.368808}, {0.492501, -0.594827}, {-0.157276, -0.210969}, {1.430722, -0.123353}, {0.869858, -0.330376}, {-0.870905, -0.576319}, {0.488152, -0.077766}, {-1.352852, -0.983699}, {-0.071516, 0.008669}, {0.038294, -0.659775}, {-0.638838, -1.453811}, {0.365078, 0.936548}, {-0.176761, 0.029567}, {-0.637139, 0.811721}, {0.199638, -0.298378}, {-0.555570, 0.019142}, {-0.091645, 0.610158}, {0.877453, 0.174360}, {-0.568953, 0.103565}, {-0.832229, 0.324979}, {0.712774, 0.870009}, {-0.278872, -0.588582}, {0.435542, 0.494374}, {-0.065868, 0.021952}, {1.423758, -0.393834}, {-0.477059, 0.827165}, {0.627414, -0.276227}, {1.000520, 0.682515}, {0.607696, 0.206943}, {-0.154464, 0.495945}, {-0.124329, -0.829138}, {-0.087112, -0.220509}, {-0.465875, -0.382839}, {-1.017272, 0.487396}, {-0.547511, 0.237748}, {-0.038977, 0.393638}, {1.026923, -0.597241}, {-0.621617, -0.717375}, {0.667387, 0.914740}, {-0.608364, -0.851361}, {0.615870, 0.510211}, {0.292743, 0.514543}, {0.347583, 1.275365}, {0.200986, -0.420921}, {1.374615, -0.215986}, {-0.414803, 0.434964}, {-1.476929, -1.362368}, {0.636865, 0.488148}, {1.114926, 0.262444}, {0.082692, -0.670997}, {1.966723, 1.124746}, {-0.046586, -1.173584}, {-0.363377, -0.208166}, {0.501587, 0.594431}, {-0.168038, 0.767871}, {0.323440, 0.680381}, {1.067349, 0.560431}, {-0.772885, -1.138626}, {0.518494, 0.322721}, {0.685843, -0.056191}, {0.787104, -0.784384}, {0.609174, -0.220906}, {-0.006505, 0.671218}, {0.460238, -0.684338}, {0.438095, 1.508562}, {0.009417, 0.237749}, {0.393314, 1.196541}, {-0.583606, 1.070722}, {-0.169269, -0.926174}, {-0.066992, -0.301332}, {0.497741, -1.198867}, {-1.090838, 0.548678}, {-0.004155, -0.024343}, {-0.612437, -0.656401}, {-0.663257, -0.093885}, {-0.174069, 0.911494}, {0.367565, 0.610990}, {-0.144097, -0.435430}, {1.104616, -1.845717}, {-0.972594, 0.334831}, {-0.794574, -0.392847}, {0.311997, 0.561151}, {0.586292, -0.042105}, {-1.605228, -0.279692}, {-0.382017, 2.388282}, {1.055212, 0.335750}, {0.209281, 0.138650}, {-0.385178, -0.272430}, {0.548245, -0.025245}, {-0.638262, -0.021417}, {-1.294383, -0.197757}, {0.423815, 0.591952}, {-0.071987, -0.562847}, {-0.126977, 1.038596}, {0.496448, 0.840634}, {-1.185477, 0.042048}, {-0.823043, -0.368610}, {1.008274, -0.231597}, {-0.660260, 0.296490}, {-0.743515, 0.208480}, {0.379941, -1.003447}, {0.968945, 0.294877}, {-0.698481, -1.144907}, {-1.162786, 0.387927}, {-0.293235, 0.428785}, {0.718636, -0.315848}, {0.107103, -0.828505}, {0.356476, -0.645877}, {0.505071, -0.331163}, {-0.649298, -0.398312}, {-0.090610, -0.074341}, {0.200451, -0.421806}, {0.908067, -0.168388}, {-0.846288, 0.033026}, {-0.189659, -0.925072}, {-0.023812, 0.459475}, {1.602866, 0.714233}, {-0.575714, -0.238446}, {0.846762, -0.832419}, {0.120918, 0.182480}, {-0.570597, -0.373300}, {0.419728, 0.612563}, {-0.320002, -0.948555}, {0.318035, -0.186493}, {-0.127286, 0.112951}, {-0.141023, 0.135715}, {1.060583, 0.677137}, {0.101330, 0.199317}, {0.803035, -0.452390}, {-0.340576, 0.650283}, {0.902556, -0.144691}, {-0.893404, 0.858889}, {-0.007600, -0.345112}, {0.111926, -0.168442}, {1.039893, -0.469075}, {0.240538, -0.826278}, {0.826768, 0.578478}, {1.046184, 0.665426}, {0.038550, 0.215966}, {-0.635648, 0.508181}, {-0.146230, 0.638788}, {-0.362399, -0.629495}, {0.542586, 0.843847}, {0.167182, -0.792296}, {-0.855717, 0.083743}, {-1.036334, -0.085065}, {-0.324723, -0.030988}, {-1.833660, -0.410648}, {-0.001357, -0.829866}, {-0.104752, -0.284616}, {-0.816835, -1.210435}, {-0.052255, -0.543345}, {-0.367505, 0.092323}, {-0.736559, -0.520296}, {0.201749, 0.054396}, {-0.199049, 0.602651}, {0.404682, -0.309862}, {-0.317471, 1.036744}, {-0.098938, -0.818030}, {-0.814101, -1.260633}, {0.763575, 0.457821}, {0.358938, -0.131199}, {-0.301845, 0.650210}, {-0.029168, -0.595484}, {-0.369691, 0.223720}, {0.194581, 0.025750}, {-0.460265, 0.156045}, {0.305830, 0.208558}, {0.223866, 0.641668}, {0.026609, 0.558788}, {0.356247, 0.373533}, {0.237883, -1.069953}, {0.147891, -0.805516}, {0.188977, -0.068435}, {0.292733, -0.380567}, {0.221952, 1.563443}, {0.345474, -0.145997}, {0.562837, 0.992170}, {0.931969, 1.306009}, {1.241908, 0.118149}, {0.565906, -0.246496}, {-0.585196, 0.203570}, {0.711276, -0.200387}, {-0.376149, 0.513875}, {1.192035, -0.156803}, {-0.862564, 0.588024}, {0.388852, -1.356642}, {0.725190, 0.687537}, {0.257052, 0.151601}, {0.411402, 0.594166}, {-0.047136, -1.330878}, {1.164207, -0.046186}, {-0.200303, 0.780709}, {-1.433552, 0.524817}, {0.560902, 0.219424}, {1.472746, 0.370998}, {0.004523, 0.852842}, {-0.707314, -0.502471}, {-0.705225, -0.568235}, {-1.031248, 0.407625}, {1.060594, 0.382613}, {1.464419, -0.586019}, {-0.605902, -0.458757}, {0.929307, 0.153506}, {-0.016372, 0.282450}, {-1.208132, -0.830801}, {-0.126240, -0.367972}, {-0.499330, 0.674812}, {1.438503, 0.217270}, {0.740691, 0.305890}, {-0.108512, 0.515161}, {-0.078081, -0.658439}, {0.032558, -0.295751}, {-0.340864, -0.476425}, {-0.013541, 1.071300}, {-0.316971, 0.276887}, {-0.154365, -0.266247}, {0.612401, 0.295050}, {0.668963, -0.540567}, {0.158289, 0.472776}, {-0.166571, 1.587298}, {-0.159732, 0.238475}, {0.347017, 0.964527}, {0.004723, 1.073330}, {0.829038, -0.522273}, {-0.541649, 0.245743}, {-0.766282, -1.376811}, {1.171373, -0.879527}, {0.569829, 0.378677}, {0.416307, 0.145570}, {-0.123077, -0.283547}, {-0.896898, 0.201798}, {-0.435349, -0.464885}, {1.650033, 0.637224}, {0.965961, 0.150970}, {1.166701, 0.751840}, {-0.127525, 0.401022}, {0.092153, 0.492356}, {-0.022106, 0.491025}, {0.385129, 1.227755}, {-0.436923, 0.728795}, {-0.022073, -0.802340}, {1.216361, -1.280683}, {-0.519844, -0.069400}, {0.409208, -0.807452}, {-0.368572, 0.226689}, {0.076268, 0.839854}, {0.287471, -0.764709}, {1.363614, 0.454507}, {-1.102576, 0.253968}, {-0.046986, -0.270808}, {-0.736602, 0.092040}, {1.165091, -0.216918}, {0.127164, 0.453077}, {-0.886593, 0.861856}, {0.158112, -0.594493}, {-0.030994, 0.470361}, {-0.261688, 0.126497}, {0.600867, 0.028243}, {-0.982395, 0.004090}, {-0.507128, -0.005293}, {-0.731200, -1.445173}, {-1.293737, -0.514366}, {0.105943, -0.405240}, {0.207327, -0.755563}, {-0.023598, 0.754680}, {1.402186, -0.206298}, {-0.127333, 0.036313}, {1.399904, -0.297810}, {-0.974748, 0.286854}, {1.124209, 1.335946}, {-0.128752, 0.673476}, {0.713310, 0.757828}, {-0.843100, -0.537106}, {-0.715673, 0.477791}, {-0.382188, -0.826056}, {0.390282, -0.250610}, {0.514525, 1.058072}, {-0.896554, 1.141563}, {0.829613, 0.348516}, {0.238624, 0.417594}, {-0.105300, -1.182838}, {1.532616, -0.028817}, {-0.894122, -0.090487}, {-0.389445, 0.360247}, {1.821895, 0.589262}, {-1.125450, 0.413939}, {0.161053, 1.207355}, {-0.222854, 0.366948}, {0.533803, 0.516122}, {-0.531179, -0.721872}, {-0.763610, 0.387296}, {-1.006094, -0.714480}, {-0.053524, 2.039535}, {0.715739, -0.315490}, {0.112799, -0.374255}, {0.012495, -0.075747}, {0.777265, -1.168285}, {-0.030666, -0.933422}, {-0.621612, 0.877107}, {1.613176, -0.222628}, {0.762815, 0.849391}, {-0.616282, 0.927940}, {-0.508595, -0.736129}, {-0.282486, 0.049873}, {0.685474, -0.516179}, {-0.167842, -1.278946}, {-0.341434, 0.561593}, {-0.450187, 0.553444}, {-0.284804, 0.812548}, {0.660818, 0.289406}, {-0.851014, -1.087384}, {-0.046101, 1.015682}, {-0.127992, -0.773456}, {0.306108, -0.585527}, {0.058395, 1.365709}, {-1.008366, -0.490221}, {0.982199, 0.335153}, {-0.577732, 0.243236}, {0.835171, 1.062171}, {0.861717, -0.878783}, {0.076238, 0.653993}, {0.882457, -1.182033}, {0.395471, 0.707660}, {0.175015, 0.113237}, {-0.326660, -0.420746}, {-0.270266, -0.064866}, {1.219132, 0.257211}, {0.532239, -1.366118}, {-0.063139, 0.364975}, {-0.538459, -0.301802}, {-0.066699, 1.443469}, {1.349248, -0.063832}, {0.640151, -0.177954}, {-0.281434, -0.418631}, {0.205809, 0.035216}, {-0.593818, -0.007308}, {0.083672, -0.018417}, {0.229748, -1.197985}, {0.617426, -0.238514}, {0.627780, 1.027152}, {-0.525954, 0.502738}, {-0.494039, 0.268553}, {-0.565555, 1.133933}, {0.692407, -0.156891}, {-1.132269, -1.404156}, {0.952331, 0.232551}, {0.542762, 0.026346}, {-0.223407, -0.463245}, {-0.889800, -1.076883}, {1.183630, 0.315594}, {-0.424457, -2.145227}, {2.273507, 0.093040}, {1.217376, -0.209756}, {-0.118041, 0.061581}, {-0.281683, -0.337646}, {0.681924, -0.618740}, {0.366107, 0.349009}, {0.162105, -0.360180}, {0.626527, -0.551253}, {-0.406674, 1.130650}, {-0.210328, -0.182414}, {0.362503, -0.512021}, {-0.628315, -0.024001}, {0.504299, 0.803734}, {1.120537, 0.920166}, {0.908672, -0.033387}, {-0.253838, 1.298045}, {0.481005, 0.131980}, {-0.135943, 0.437193}, {0.267186, 0.026759}, {0.542714, -0.264004}, {-1.206726, -0.419685}, {-0.699274, 0.238968}, {0.463989, -0.510916}, {0.043349, -0.214415}, {0.160823, 0.541792}, {-0.242431, -0.210894}, {0.511331, -0.176104}, {1.048913, 0.488046}, {0.365260, -0.066836}, {-1.066309, -0.093985}, {0.542119, 0.501833}, {-1.244972, -0.372142}, {-0.753972, -0.096356}, {-0.291842, 0.016194}, {-0.477053, -0.804632}, {-0.078449, -0.379581}, {0.753739, -0.537456}, {0.100513, -0.310604}, {1.368776, 0.717445}, {0.764968, -0.075108}, {0.053403, 0.448399}, {0.582609, -0.788861}, {0.049464, -0.413320}, {-1.015383, -0.153174}, {-1.441094, 1.226203}, {-0.935850, 0.636812}, {0.714004, -0.531381}, {-0.467397, 0.354665}, {-0.132670, 0.678550}, {0.491754, -0.263982}, {0.137027, -0.063034}, {-0.320801, 0.061453}, {-0.682060, 0.697585}, {0.772583, -0.400500}, {-0.702765, 0.154811}, {0.248536, -0.291513}, {1.213524, -1.416038}, {-0.169976, -0.794819}, {0.012138, 0.740188}, {0.700987, -0.962213}, {0.654398, 1.372495}, {0.267751, 0.491715}, {0.380491, -0.409166}, {0.697133, -0.296663}, {-0.210519, 0.303294}, {-0.557089, 0.942688}, {0.250830, 0.597076}, {0.836891, 0.383697}, {-0.781979, -1.371013}, {-0.312390, -0.764450}, {-0.475572, 0.060645}, {0.756715, -0.479073}, {-0.018402, 0.967757}, {-1.118602, 0.402060}, {-0.050789, 0.033776}, {-0.378991, -0.301264}, {0.550866, -0.472333}, {0.695695, -0.564736}, {-1.022700, 0.001319}, {-0.995349, -0.179992}, {-0.160696, -0.561579}, {-1.238996, 1.005039}, {0.164585, 0.869884}, {-0.474996, 0.425370}, {-0.437417, 1.116224}, {-0.429658, 0.009218}, {-0.525544, -0.272148}, {0.695156, -0.102539}, {-0.850466, -0.358257}, {0.079718, -1.212420}, {0.484277, 0.505628}, {0.433427, 0.521144}, {1.357588, -0.280115}, {-1.050502, 0.461743}, {0.092603, 0.569536}, {0.031757, 0.460663}, {-0.412955, 0.613726}, {-0.236422, -0.089493}, {0.459335, 0.304540}, {-0.753505, -0.235785}, {0.355571, -0.811544}, {0.221435, -0.954573}, {-2.346443, 1.114150}, {-0.490478, 0.349986}, {-0.652118, 0.839932}, {0.946405, -0.288780}, {0.892454, 0.348067}, {0.154899, 0.070845}, {-0.145795, 0.359580}, {1.398316, -0.468739}, {1.048537, 0.085309}, {-0.840074, -0.159959}, {-0.514107, 0.060504}, {-1.325402, -0.340374}, {0.838967, 0.991954}, {-1.218276, -1.408265}, {0.335541, -0.565783}, {-0.954269, 0.937467}, {-0.559335, -0.134362}, {1.943719, -1.403866}, {-0.460487, -0.682805}, {0.681467, -0.850286}, {-0.644147, 0.907500}, {-0.369335, 0.124141}, {-0.290076, -0.249195}, {-1.372572, 0.399371}, {-0.216078, 0.112425}, {0.202706, -0.571132}, {0.007932, 0.238452}, {0.622883, -0.361681}, {-1.659769, -0.052142}, {0.913395, -0.548796}, {-1.546375, -0.177939}, {0.033195, 0.124151}, {-1.002228, 0.568683}, {-0.552731, -0.057954}, {-1.386417, -0.250903}, {-0.685426, 0.169422}, {-0.419053, -0.687470}, {0.203790, 1.177844}, {0.101606, 0.434861}, {1.212102, -1.394154}, {-0.376188, 0.550320}, {0.845756, 0.440839}, {0.313480, -0.822269}, {-0.806734, -0.209968}, {0.235863, -0.633919}, {-0.345711, -1.139946}, {0.420142, 0.087180}, {0.522750, 0.494215}, {-0.415381, -0.544665}, {-0.805989, -0.717142}, {0.591845, -0.006759}, {-1.082991, -0.056471}, {-1.529968, 1.037963}, {-0.255855, -1.785748}, {-0.454847, -0.034732}, {-0.272457, 0.141042}, {-0.539356, 0.233351}, {-1.123501, 0.381575}, {-1.362791, -0.485143}, {0.867246, -0.554638}, {-0.592859, -0.071347}, {0.029115, 0.338592}, {0.892906, -0.530447}, {-0.942275, -0.950575}, {0.681004, -0.812727}, {-0.682861, -0.748591}, {0.852113, 0.476257}, {0.789010, -0.330489}, {0.615453, 0.653533}, {1.319493, -1.499355}, {0.423842, -0.348825}, {0.157478, -0.767351}, {1.477448, 1.666978}, {0.067225, -0.415903}, {0.744507, -0.884219}, {0.040268, 0.058540}, {-1.735353, 0.366785}, {0.153680, 0.237515}, {0.667468, 0.542703}, {0.436021, 0.493232}, {0.563348, -1.182141}, {-0.003835, -0.322843}, {-0.656232, -0.176493}, {-0.873231, 0.360992}, {0.136123, 1.085468}, {-0.510539, 0.320659}, {-0.312098, 0.046118}, {-0.421199, -1.437631}, {-0.215423, 0.161690}, {1.307419, -0.284457}, {-0.563560, -0.119780}, {-1.600169, 0.228748}, {-1.421886, 0.023649}, {-0.189495, 0.797349}, {-0.165802, 0.372003}, {-0.221700, -0.219905}, {0.534275, -0.120511}, {-0.248351, -0.805280}, {0.034413, 0.744190}, {-0.642193, -0.452466}, {-0.599072, -0.680422}, {-1.724224, 0.426709}, {-0.790234, -0.730923}, {0.088659, -1.035535}, {-0.275351, -0.733153}, {-1.102652, -0.046605}, {-0.757406, 0.374197}, {1.053567, -1.538006}, {0.088439, -0.294301}, {0.516494, 0.576207}, {0.909468, -0.056118}, {0.067821, -0.686035}, {-1.044428, 0.968891}, {0.557625, -0.843896}, {-0.446400, 0.872971}, {0.354836, 1.692407}, {-1.197610, -0.164863}, {1.193169, -0.074590}, {0.564380, -0.167004}, {1.458768, 0.101084}, {-1.659323, -0.179509}, {-0.637948, -1.333850}, {0.521633, -0.111609}, {0.159952, 0.245567}, {0.557457, 0.552443}, {-0.541189, -0.269047}, {0.178323, 0.718181}, {-0.148046, 1.282756}, {0.396217, -0.918592}, {-1.196000, -1.302291}, {-1.147016, 1.087835}, {-0.697901, 0.120563}, {-0.416445, -0.085792}, {-0.575136, 1.047383}, {-0.108410, 0.806852}, {0.103438, 0.190436}, {-0.514501, 0.205539}, {-1.158432, 0.436651}, {1.837359, 0.282446}, {2.898165, 0.605520}, {-0.638636, -1.383828}, {-0.422205, -1.159697}, {0.439481, 1.089898}, {-0.440211, 0.267563}, {0.055757, -0.465994}, {0.203813, -1.372535}, {-0.369227, -0.991863}, {0.502829, 0.205971}, {-0.168711, 0.991037}, {-0.441042, -0.002326}, {0.323292, -0.197988}, {0.245345, 0.967783}, {-1.106120, -0.247019}, {-0.701892, -0.940481}, {0.089337, 0.099586}, {-0.484300, 0.499526}, {1.270932, 0.213534}, {0.769257, 0.759910}, {-0.001945, 0.582357}, {-1.013147, 0.480989}, {0.541451, 0.216142}, {0.984260, -0.129450}, {0.593683, -0.154239}, {-1.381179, 1.039958}, {0.586204, -0.209757}, {0.373642, 0.368349}, {0.322644, 0.122887}, {-0.760574, 0.101006}, {-0.369533, 0.356949}, {0.793169, 0.343188}, {-0.088122, -0.026515}, {-0.134987, -0.622070}, {-0.209032, 0.730416}, {-0.633736, -0.964829}, {0.004523, 0.680249}, {-0.251489, -0.161656}, {-1.236883, 0.834379}, {0.158569, -0.243367}, {-0.728852, 0.382640}, {0.132910, -0.265206}, {0.491294, 1.636521}, {-1.199529, -0.648592}, {0.655339, -0.600365}, {-0.088940, 0.359795}, {-0.344506, 1.674392}, {-0.074931, -0.684859}, {-0.600775, 0.495819}, {0.546661, -0.283537}, {0.816700, 1.018373}, {1.345432, 0.093005}, {-0.429347, -1.242027}, {-0.195153, 0.520674}, {0.051187, -0.285221}, {-0.157695, 0.732045}, {0.525571, 0.750470}, {-1.647741, 0.695828}, {0.729457, -1.305992}, {-0.156214, 0.275815}, {-0.271609, -1.109912}, {-0.884156, 1.468249}, {0.772042, -0.843589}, {1.124620, 0.188741}, {-0.613738, -1.412528}, {1.392810, 0.203713}, {0.414216, -0.811126}, {0.049929, -0.015404}, {-1.845246, 0.585689}, {0.311221, -0.174248}, {0.322036, 0.428788}, {0.323903, -1.877702}, {0.723333, -0.843178}, {-1.316829, -0.626211}, {-0.457250, -0.296858}, {0.460788, -0.256206}, {1.858779, 0.618149}, {1.520473, 0.618939}, {0.182818, -0.609792}, {0.093293, -0.511200}, {-0.796530, 0.280311}, {0.314653, 0.441506}, {0.145929, -0.171299}, {0.989340, -0.023398}, {0.382977, 0.962526}, {-0.234472, 0.204414}, {-0.168631, 0.970621}, {-0.359397, -0.238005}, {-1.160084, -0.108981}, {1.026957, 0.611603}, {0.594561, 0.074036}, {-0.703831, -0.612982}, {-0.920383, 0.335892}, {0.779956, -0.290330}, {0.160028, -0.530884}, {-0.462821, -0.124964}, {-0.021306, -0.500310}, {-0.640899, -0.880880}, {-0.168131, 0.249834}, {-0.181111, 0.256184}, {0.201675, -1.172094}, {-1.107592, -0.654002}, {0.618958, -1.100837}, {-0.613276, -0.606221}, {0.589475, 0.793413}, {-0.799120, -1.033400}, {0.461943, 0.180295}, {-0.992388, 0.078304}, {0.249753, -0.552251}, {1.140054, 0.813340}, {-0.380441, -0.427859}, {0.140464, -0.478517}, {-0.693361, 1.211238}, {0.156036, -0.216601}, {0.403554, -1.008049}, {-0.867654, 1.706051}, {-0.451461, 0.206311}, {-1.312167, -0.321273}, {0.304323, 1.501758}, {-1.237910, 0.416220}, {-0.246990, -0.517017}, {0.921878, 1.665267}, {0.680523, 0.333206}, {-0.250695, -0.780680}, {0.017056, -1.185064}, {0.833909, -0.065707}, {-1.048432, -0.304359}, {-0.079640, 0.971286}, {0.860137, 1.148088}, {-0.222327, 0.443586}, {0.569845, 0.484530}, {0.709289, 0.527264}, {-0.437060, 1.058135}, {0.441519, 0.926605}, {0.563086, -0.036039}, {0.731869, 1.018196}, {0.715868, -0.555336}, {0.083263, -0.392260}, {-0.432371, 0.271707}, {-0.323319, 0.838910}, {-0.250503, -0.369677}, {-0.341576, -0.046356}, {1.703584, 0.832092}, {0.305570, 0.700940}, {0.313809, 0.320696}, {-0.232152, -0.195104}, {-0.160822, 0.383805}, {-0.782644, 0.821497}, {0.317483, 0.561839}, {0.292112, -0.787810}, {0.682217, -0.036886}, {-0.234958, -0.342815}, {1.489802, 0.394218}, {-0.780212, 0.082822}, {0.012921, 1.219529}, {-0.309442, 1.310485}, {0.805021, 0.916130}, {-0.164403, -0.490808}, {-2.442305, 0.477766}, {0.306204, 0.782185}, {-0.642253, 0.034201}, {-0.734342, 0.374860}, {-0.534225, -0.141448}, {-1.039800, 0.243934}, {-0.758901, 0.139142}, {0.772172, -0.221432}, {-0.227259, -0.494436}, {-0.797240, 0.203608}, {-0.526939, -1.003768}, {0.604457, -0.836335}, {-1.042733, -1.031733}, {0.351133, -1.552611}, {0.193510, -0.593573}, {-0.158616, -0.000909}, {0.477336, 0.765709}, {0.294301, -0.549073}, {2.252452, 0.421725}, {-0.648990, -0.424124}, {-0.564920, -0.189999}, {-0.270131, 0.078961}, {0.772736, 0.336949}, {0.313340, -0.927747}, {-0.573263, 0.583021}, {0.470820, -1.055331}, {0.581432, 0.212701}, {-0.711626, 0.384798}, {0.162031, -0.175657}, {0.742236, -0.643734}, {0.803206, -0.132745}, {0.613025, -0.690771}, {0.291435, 1.290752}, {0.501168, 0.658611}, {-1.443138, -0.434044}, {0.661785, 0.822570}, {-1.374180, 0.778183}, {0.382538, -0.753720}, {-0.517099, 0.294458}, {0.849115, 0.536175}, {1.511322, -0.255960}, {-0.446477, -0.510725}, {0.351935, -0.058662}, {-0.309950, -0.683659}, {-0.315003, 0.260157}, {0.056499, -0.463872}, {-0.865618, -0.396466}, {-1.294184, 0.061282}, {1.011925, 0.144531}, {0.932576, -0.379779}, {1.018562, 0.158520}, {-0.048017, 0.052001}, {-0.917482, -1.278635}, {-0.098721, -0.152092}, {1.017871, 0.028110}, {-0.268018, -0.393909}, {0.293293, 0.208300}, {-0.580657, -0.411407}, {1.031302, 0.428409}, {1.910617, -0.467351}, {-0.831919, 1.592028}, {0.663417, -0.384198}, {1.046530, -0.066088}, {0.351843, 0.024416}, {0.571277, -0.833007}, {-0.079296, -0.149397}, {0.413530, -0.701706}, {0.210312, -0.385820}, {-0.140847, -0.268188}, {0.139115, 1.298546}, {-1.143262, -0.441174}, {-0.027645, 0.535143}, {-0.405058, -0.616212}, {0.316847, -0.050931}, {0.349966, -0.763656}, {-0.103767, 0.410991}, {-1.917632, -0.571364}, {-0.242820, -1.010565}, {-0.127771, -0.753536}, {0.604908, -0.475209}, {0.013372, 0.837038}, {0.608820, 0.079690}, {-0.142643, -0.181203}, {-0.281800, -0.574404}, {1.254414, 0.387417}, {0.880432, -0.334068}, {-0.222264, -1.359749}, {-0.157873, 0.904339}, {-0.249764, -0.463576}, {0.667664, 0.499756}, {-0.267900, 0.673011}, {0.640840, 1.260412}, {0.484117, -0.429452}, {0.592152, -0.003510}, {0.506192, -0.201848}, {1.247699, 0.171432}, {0.353386, 0.996887}, {0.078137, -0.308590}, {-0.018745, -1.037419}, {1.093397, 0.245313}, {0.750051, 1.199990}, {-0.094081, -0.586781}, {0.051596, -0.731723}, {0.455013, 1.276353}, {-0.195394, -0.845165}, {-0.520628, 0.355488}, {-0.688832, -0.070661}, {0.375953, 0.177470}, {1.142021, 0.354608}, {-0.475901, 0.038190}, {0.364796, 0.118211}, {-0.675976, -0.263314}, {-0.552894, 0.232846}, {-0.464710, -0.158232}, {-0.258691, -0.053579}, {0.279914, -0.374251}, {-0.442636, -0.032047}, {-0.444012, -0.548113}, {-0.360146, 0.089110}, {0.490385, 0.171563}, {1.123041, -0.550139}, {0.543533, 0.079109}, {-0.637200, -1.014626}, {0.046707, -0.245370}, {-0.257292, 1.703984}, {-0.071662, -0.589401}, {0.108536, 0.405153}, {-0.344097, 0.282119}, {-0.245578, 0.106487}, {-0.401110, -1.258960}, {0.107488, 0.353920}, {0.608643, -0.021585}, {0.440527, -1.022432}, {0.213325, 0.187777}, {-0.052628, -0.281017}, {0.235210, 0.007120}, {-1.235719, 0.155901}, {-0.268724, 1.113432}, {-0.121335, 0.019839}, {0.189913, 1.015487}, {0.865889, 0.697982}, {0.197149, 0.792114}, {-0.117071, 0.639035}, {-1.306955, 0.275980}, {0.252452, 0.322515}, {-0.529397, -0.478036}, {0.936446, -1.395706}, {0.400833, 0.024500}, {-0.502883, -0.102895}, {0.273595, 0.753245}, {-0.343074, 0.091902}, {0.304226, -0.867240}, {-0.180509, -1.078705}, {-0.205455, 0.858649}, {0.774539, 0.517635}, {-0.823959, 0.593452}, {0.732369, 0.153099}, {0.672588, -0.633125}, {0.002290, -0.941901}, {0.176569, -0.579932}, {0.171845, -0.870413}, {-0.293425, 0.175049}, {-0.137718, 0.217686}, {1.044936, 0.061606}, {-0.758815, 0.807341}, {-0.336751, -0.164385}, {1.008626, 0.256348}, {-0.723706, 0.047971}, {-0.050905, -0.353985}, {0.390970, -0.158517}, {0.119335, 0.109838}, {-0.041174, -0.673703}, {-0.556070, -0.401985}, {-0.509192, 0.543375}, {0.625149, -0.084801}, {-0.744969, 0.178757}, {-0.163163, 0.168014}, {-0.749477, 0.577796}, {-0.154530, 0.089817}, {0.437073, -0.946214}, {-0.116608, -1.099246}, {0.666880, 0.264435}, {0.474793, -0.843138}, {0.617247, 0.069116}, {0.294487, 0.030065}, {-0.337986, 0.559117}, {-0.227776, 0.882621}, {1.101572, -1.080786}, {0.070565, -0.664384}, {-0.451764, -0.457432}, {-0.576313, -0.841245}, {0.068010, 0.274456}, {-0.710972, 1.045372}, {-0.080175, -0.636644}, {-1.167785, -0.908857}, {-0.040623, 0.027782}, {2.470891, -0.352323}, {0.225188, -0.216579}, {-0.911285, -0.883839}, {1.575339, 0.857027}, {-0.480260, 0.028266}, {-1.400611, -0.208040}, {-0.607262, 0.315214}, {-1.413554, -0.086775}, {-0.078748, 0.091694}, {-0.823326, -0.045219}, {0.179688, 0.157220}, {0.503945, -0.069413}, {0.384609, 1.810637}, {-0.036682, 0.018567}, {-0.630811, -0.597114}, {-0.672791, -0.931285}, {1.222804, 1.107029}, {-0.313392, 0.591602}, {1.095544, 1.771690}, {-0.798560, 1.745435}, {1.543951, 0.832816}, {0.126556, 1.114287}, {0.213435, 1.321216}, {-0.224136, -1.359183}, {1.477972, -0.350192}, {-0.077844, -0.795493}, {-0.231997, -0.564458}, {0.801618, -0.460815}, {-1.183569, 1.681266}, {0.800365, -1.537642}, {-0.329589, -0.279386}, {0.146069, -0.294189}, {0.197825, 0.827717}, {-0.649584, 1.974452}, {-1.281819, 1.044606}, {0.908785, -0.571095}, {1.096563, -0.008991}, {1.743241, 0.314216}, {0.653207, 0.687347}, {-0.304444, -0.200533}, {0.317770, 0.204985}, {1.680031, -1.270921}, {0.013470, 0.101117}, {0.035178, 0.125471}, {-0.496304, -1.027426}, {-0.803857, -0.277048}, {0.785028, -0.689768}, {0.339297, 0.190250}, {0.464936, -0.560609}, {-0.775980, -0.128567}, {-0.724656, 0.021571}, {0.116261, -1.049885}, {-0.856403, 0.530206}, {0.067380, -0.690871}, {-0.101626, 0.190740}, {-0.230450, 0.733674}, {1.510300, -0.232611}, {-0.558900, 0.743672}, {0.328636, -0.130287}, {0.037062, 0.836783}, {0.228297, -1.114284}, {0.591880, -0.742029}, {1.016332, 0.389831}, {0.501144, 0.220041}, {-0.682226, 0.173825}, {0.194447, -0.220124}, {-0.201636, 0.483213}, {-0.346227, 0.693268}, {0.089963, 0.776428}, {0.784136, -0.216991}, {1.351173, 0.460213}, {0.948340, 0.389235}, {0.856649, -0.280823}, {-0.281458, -0.467549}, {0.712758, -0.473551}, {-0.113624, -0.180662}, {0.827903, -0.935301}, {0.384431, 0.183861}, {-0.116835, 0.143097}, {0.437151, 0.673442}, {-0.259116, 1.211244}, {-0.832708, 0.005765}, {0.579745, -0.839210}, {-0.272578, 0.846526}, {0.006319, -0.191822}, {-0.543038, -2.053956}, {0.577765, -0.226179}, {-0.864414, 0.264531}, {-0.081640, -0.316889}, {-0.733387, -0.029103}, {-0.856447, 0.102918}, {1.118355, -0.516612}, {-0.953002, 0.614206}, {0.317643, 0.733096}, {-0.268814, 0.548796}, {1.819432, -1.055275}, {-0.311760, 0.400650}, {0.198343, -1.247555}, {-0.027410, 0.778872}, {-0.508919, 0.444286}, {-1.171694, 0.019824}, {1.248879, 0.012588}, {-0.703571, -1.267101}, {-0.351630, 0.717535}, {0.712341, 0.238149}, {-0.921778, 0.823704}, {0.183744, -0.465176}, {0.967624, 0.110433}, {0.638384, -0.733964}, {0.023469, -0.341078}, {0.457953, 0.148002}, {-0.387642, 0.886603}, {-0.069635, -0.580919}, {-0.059943, -1.223428}, {0.912288, 0.393697}, {0.642983, 0.930647}, {0.910222, 0.601928}, {-0.445410, -0.667141}, {-1.572064, 0.279244}, {1.978238, 0.802084}, {-0.397479, -0.061574}, {0.410751, 0.408608}, {-0.708602, -0.186290}, {-0.230716, 0.939863}, {0.243815, 0.220266}, {0.510986, 0.986593}, {-0.697529, 0.649296}, {-0.586676, -0.694978}, {1.365805, 0.060623}, {0.669724, 0.191354}, {1.712433, 0.794664}, {1.420112, 0.316341}, {0.241010, 0.642880}, {-0.543402, -0.040763}, {0.566228, -0.271359}, {-0.161257, 0.334876}, {0.599455, 1.548617}, {-0.164632, -0.789523}, {-0.166458, -1.089323}, {-0.603273, -0.989075}, {0.528595, 0.451579}, {-0.312701, 0.087580}, {0.052067, -0.329935}, {-0.422394, -0.867374}, {0.543689, 0.209453}, {-0.559684, -1.177563}, {0.467575, -0.097401}, {0.369629, -0.501474}, {0.404819, 0.203655}, {1.147670, 0.855509}, {-0.639961, 0.122152}, {0.634182, -0.589714}, {-1.383792, 0.081240}, {-0.762136, -0.308434}, {0.795235, -0.419563}, {-0.464381, 1.585393}, {1.078462, 0.518624}, {0.096101, -0.470606}, {-1.483047, -0.692461}, {-0.298531, 0.776764}, {0.119121, -0.885261}, {0.117578, 0.531321}, {-0.917483, 1.214456}, {0.103637, -0.543026}, {-0.029330, -0.442023}, {0.667382, -0.559059}, {0.454800, 1.315120}, {-0.121242, 1.135188}, {-0.488542, 0.095236}, {1.029647, 0.289141}, {-0.103825, -0.536353}, {0.328875, 0.038776}, {0.506639, -0.670018}, {0.579004, 0.162704}, {0.390291, 0.091227}, {-1.290292, -0.652858}, {-0.408826, 0.011857}, {0.767200, 0.888858}, {1.439873, 0.872966}, {1.146577, 0.749942}, {0.081693, -0.305140}, {-0.129388, 1.025387}, {-0.634484, -0.843138}, {0.172444, 0.005313}, {-0.657469, -0.089850}, {-0.760529, -0.081906}, {-0.426315, -1.084558}, {-0.979330, -0.160143}, {-0.044730, 0.574946}, {-1.527934, 0.139190}, {-0.115705, -0.468978}, {0.394550, -0.231006}, {0.586208, -0.529691}, {0.437290, -1.153886}, {0.808557, 1.623821}, {-1.472277, 0.306073}, {0.113523, -0.990164}, {-0.436942, -0.152251}, {0.906011, -0.455300}, {-0.137609, -0.290251}, {0.467302, -0.253409}, {-0.677977, -0.643365}, {-0.258209, 0.117683}, {0.237770, 0.579862}, {0.361357, 0.184037}, {-0.768527, -0.431966}, {-0.374232, 0.070814}, {-0.271652, 0.701989}, {-1.650963, 1.243199}, {0.817481, -0.130520}, {0.093297, 1.182986}, {-0.740615, 0.357099}, {0.190737, 1.086730}, {-0.326431, -0.458982}, {0.123048, 1.118810}, {-0.006755, 0.087656}, {0.321461, 0.525849}, {-0.567447, -0.412553}, {-0.516657, -1.118277}, {-0.343009, -0.119105}, {0.491223, 1.372952}, {0.179821, 0.053473}, {-0.238648, 0.029409}, {0.222945, 0.156960}, {0.310281, 0.281777}, {-0.992198, -0.975749}, {-0.432296, -0.289497}, {-1.121582, -0.621216}, {-0.079473, -0.549632}, {0.673944, 0.250442}, {-1.170647, 0.816044}, {0.009351, -0.038545}, {0.202295, 0.376773}, {0.207996, -0.767330}, {-0.683128, 0.462706}, {0.363351, 0.668791}, {-0.236248, 0.234738}, {0.236777, 0.097248}, {-0.079751, -0.322131}, {0.422070, 0.380715}, {0.465275, -0.117293}, {0.914394, 0.070100}, {-0.328927, -1.087863}, {0.009725, -0.714301}, {0.694105, -0.275872}, {0.038939, -1.079395}, {0.761932, 1.210910}, {0.753418, 0.067086}, {-0.215663, -0.159486}, {-0.187086, 0.872605}, {-0.142958, 0.220448}, {0.273894, -0.555399}, {-0.650689, -0.402346}, {0.897581, 0.328779}, {-0.338363, 1.002994}, {-0.328070, 0.563372}, {-0.550288, 0.856980}, {-0.977701, -1.482775}, {2.446075, -0.651519}, {0.653114, 0.245545}, {0.481750, 1.570437}, {-0.925317, 0.286313}, {0.723354, 0.222318}, {0.684692, -1.247687}, {-0.189216, -0.475236}, {-0.640211, 0.212953}, {-0.053677, 0.669794}, {-0.330972, -0.472563}, {0.194653, -1.044945}, {-0.541368, -0.021547}, {0.683410, -0.394597}, {0.106472, -0.419672}, {0.760465, 0.199993}, {-1.179110, 0.112292}, {0.055066, 0.377698}, {0.909270, -1.560735}, {0.401362, 1.350247}, {0.187297, -0.004588}, {-0.039523, 1.088870}, {-0.268140, 0.216489}, {0.164274, 1.288643}, {-1.308630, 0.008255}, {-0.828187, 0.539431}, {0.171691, 1.194553}, {0.299761, -0.052910}, {1.722756, -0.697963}, {-0.251873, -0.722015}, {0.079270, -0.072157}, {-0.932151, -0.304344}, {0.207095, 0.052868}, {1.088320, -1.003559}, {0.850424, -0.709885}, {0.649069, -1.639259}, {0.383301, -0.409913}, {0.170324, -0.407571}, {0.752730, 0.520546}, {0.243588, 0.101737}, {-0.487145, 0.946709}, {-0.484323, -0.380167}, {0.224305, -0.272019}, {0.059913, -0.726160}, {-0.285819, -0.028296}, {-1.484445, -0.022900}, {0.166353, 0.255178}, {-1.161566, 0.903064}, {0.494498, 0.797073}, {-0.297146, -0.147285}, {-0.236315, 0.665692}, {-0.085679, 0.279219}, {-0.870393, 0.141386}, {-0.014293, -0.542938}, {-0.365326, 0.980887}, {0.203701, -0.711214}, {-0.407262, 0.445812}, {1.421543, -0.606156}, {1.347169, 0.048977}, {-1.433734, 0.817061}, {1.146370, -0.793382}, {0.319925, -0.854738}, {0.438860, 2.145962}, {1.166341, -0.365637}, {0.683141, 0.055309}, {-1.130258, 0.470611}, {-0.142316, 0.723606}, {-1.167357, 0.251633}, {-0.061046, -0.144651}, {-0.028701, -0.462089}, {-0.018132, 0.169646}, {-0.671335, 0.900461}, {0.116801, -0.593090}, {0.085282, -0.067586}, {-0.411836, 0.548411}, {0.260672, -1.297764}, {-0.232586, -0.692774}, {-0.797251, 0.519497}, {0.493274, 0.128724}, {-0.452326, -0.942666}, {-1.259305, 0.165846}, {-0.397245, -0.650621}, {-0.827247, -0.027941}, {0.400771, 0.899915}, {-1.510673, -0.552102}, {-0.016118, -1.664885}, {0.468835, -0.256144}, {-0.095802, -0.449476}, {-0.334430, -1.538678}, {0.005072, 0.053176}, {0.276647, -0.648527}, {0.087667, 0.067103}, {0.853516, 0.367063}, {0.694817, -0.772811}, {0.402106, -0.764670}, {0.563088, 0.747578}, {-0.268367, 1.277181}, {-0.749042, -0.032805}, {1.254513, 0.221049}, {-0.610276, 0.267629}, {-0.316447, 1.420839}, {-1.922798, -0.390022}, {0.556385, 0.484709}, {0.027270, 0.139172}, {-0.726247, -0.156295}, {-0.120574, 1.445949}, {0.876597, 0.011245}, {-0.056240, -0.228567}, {-0.008902, -0.187852}, {0.322713, -0.491207}, {-0.362863, 0.473453}, {-0.712861, -0.365141}, {-0.742098, -0.136880}, {0.111748, 1.005100}, {-0.464041, -0.288319}, {-0.591913, 0.416452}, {0.517190, 0.391430}, {1.195625, 0.788324}, {0.410152, 0.138649}, {-1.371791, 1.228180}, {-0.101232, 0.141153}, {-0.710496, -0.154048}, {-0.808498, -0.383805}, {-0.018569, -0.202316}, {1.184777, -1.079341}, {-1.306705, 0.345682}, {-0.154691, 0.011843}, {0.661710, 0.500578}, {-0.343929, 0.779614}, {0.543034, 1.214597}, {-1.348330, 0.139834}, {0.117324, 0.850516}, {-0.108573, -0.567512}, {-0.543670, -0.506252}, {0.763259, -0.023357}, {-0.124683, -0.687557}, {-0.298014, 0.912602}, {0.205308, 0.618330}, {1.529908, -0.085205}, {0.956008, -0.652740}, {-0.068925, -1.092457}, {-0.637354, -0.419358}, {1.268680, -0.243073}, {-0.136088, -0.425454}, {-1.136538, 1.501422}, {-0.865629, 0.163418}, {1.489446, -0.425663}, {-0.176186, -0.697113}, {0.053611, -0.207498}, {0.453244, 0.901965}, {0.045845, 1.465057}, {0.863726, -0.540462}, {-0.043928, 0.683414}, {0.115106, -1.021701}, {0.247975, 0.286382}, {0.801124, 0.684719}, {-0.492425, -0.671975}, {-0.738085, -0.372832}, {0.246402, 0.622964}, {1.316755, 0.124231}, {0.061890, 0.559458}, {-0.016314, 0.518483}, {0.065088, -0.564502}, {-1.075867, -0.098767}, {0.178467, 0.098481}, {-0.008945, -0.802168}, {-0.811757, 0.814761}, {1.059392, -0.846953}, {-0.343747, 0.373055}, {0.758821, -1.176281}, {-0.647837, -0.951149}, {-0.817682, 0.112162}, {1.173084, -0.558803}, {-0.604647, 0.144875}, {-0.132176, 0.361366}, {-0.668269, 0.061026}, {0.246659, 0.201436}, {1.226810, -0.619724}, {-0.468072, -0.019591}, {0.966661, 0.482886}, {0.583820, 0.926226}, {0.852546, 0.572840}, {-0.649207, -0.545958}, {0.255183, -0.155787}, {-0.025898, 0.078114}, {-0.201309, -0.225492}, {0.525905, 0.410706}, {0.177865, 1.477507}, {2.457610, -1.850447}, {0.151478, 1.000617}, {1.360119, -0.754828}, {0.157215, -0.492841}, {-0.566692, 1.324305}, {0.620154, 0.754623}, {0.074979, -0.860552}, {-0.222454, 0.021736}, {-1.408236, -1.307141}, {-0.544968, 0.463417}, {-0.595774, -0.743040}, {0.559990, 0.480234}, {-1.168589, -0.203965}, {0.281098, -0.105368}, {0.641682, -0.360390}, {0.836257, -0.373430}, {-0.805041, 0.752649}, {0.441466, -0.719064}, {-1.832253, 1.143759}, {-0.247786, -0.438656}, {-0.870375, 0.850503}, {-0.375699, 0.159219}, {-1.124725, 0.793712}, {-0.723709, 0.342564}, {-0.633437, -0.558060}, {-0.135905, -0.355088}, {-2.183977, -0.007379}, {1.116177, 0.159945}, {1.490166, 0.480268}, {0.164575, -0.726484}, {-0.520145, 0.297363}, {-0.641292, -0.643205}, {-0.067693, -0.128819}, {0.413410, 0.031469}, {-0.760742, 1.425786}, {0.085627, -0.041021}, {0.114922, 0.384508}, {-0.225939, -0.065478}, {0.023267, 1.057989}, {1.470100, -0.598823}, {0.723707, -1.348607}, {0.035084, -1.125010}, {-0.454672, 0.069253}, {0.809724, -0.071756}, {0.083234, 0.221237}, {-0.377449, 1.091443}, {0.402802, 0.357787}, {-0.684853, -0.705112}, {-0.625051, -0.136144}, {1.018437, -0.307444}, {-0.339611, 0.577613}, {-0.559291, -0.331159}, {-0.661887, 0.404697}, {-0.412244, -0.877878}, {-0.591570, -0.072583}, {-0.437359, 0.868594}, {0.926766, -0.479234}, {-0.939874, 0.960508}, {-0.216226, -2.190387}, {0.373954, -0.239234}, {0.735172, -0.368192}, {0.925092, 0.361395}, {0.238858, -1.067577}, {0.211254, 0.055615}, {0.067811, -0.232802}, {-0.256948, -1.231779}, {-0.231535, -1.085856}, {1.027191, 0.635764}, {-1.039482, -0.284762}, {0.802325, 0.903988}, {-0.407235, -0.165035}, {-0.645411, 0.570917}, {-0.631895, -0.866667}, {-0.413516, -0.479763}, {-0.327054, 0.889851}, {-0.660647, 1.168247}, {-0.054201, -0.157478}, {0.021347, 1.157376}, {-0.281979, 0.310791}, {1.078613, -0.998599}, {0.978329, -0.316584}, {0.227859, -0.057813}, {0.879319, 1.029731}, {0.007877, -0.338237}, {-0.023282, 0.856635}, {0.802926, 0.658965}, {-0.654637, -0.321326}, {-0.486953, -0.278102}, {0.399871, -0.703921}, {0.137966, -0.143648}, {-1.382161, -0.633032}, {0.994994, 0.454662}, {-0.563795, -0.296766}, {0.395332, -0.055457}, {0.879708, -0.963628}, {-0.321128, -0.149853}, {-0.072034, -0.491397}, {0.094058, -0.301073}, {0.846232, 0.232090}, {0.286858, -0.066615}, {-0.642041, 0.413146}, {0.464097, 0.354731}, {0.102751, 1.804440}, {0.377422, 0.609243}, {0.654797, -0.435679}, {0.472210, -0.209745}, {-0.641060, -0.154395}, {-1.512229, 0.312514}, {-0.668791, -1.337721}, {-0.568657, -0.277971}, {0.842358, 1.337541}, {-0.633354, 0.123400}, {-0.236926, 1.438454}, {-0.524131, 0.461021}, {-0.027427, 0.041582}, {-0.630328, -0.951639}, {0.467582, -0.775196}, {-0.645079, -0.410044}, {1.050603, 1.068060}, {-0.144830, 0.117018}, {-0.428974, -0.059010}, {0.343620, -1.481687}, {-0.117022, 0.802153}, {0.371381, 0.568841}, {-0.713658, -0.166011}, {-0.262867, -0.772913}, {1.097425, 0.118692}, {-0.682499, 0.040285}, {-0.088318, -0.101135}, {0.596149, 0.381073}, {-1.594536, 0.711970}, {-0.520008, 0.491471}, {0.042324, 0.355744}, {-0.736938, -0.529835}, {-0.648401, 0.855958}, {-0.338084, -0.351747}, {0.672677, 0.892670}, {0.361092, -0.678357}, {2.079292, 0.329758}, {0.234354, 0.449063}, {0.246854, -0.747312}, {-0.254858, -0.378022}, {0.391048, 0.078144}, {-1.322392, 1.109864}, {-0.392252, 1.133680}, {0.317787, -1.119124}, {-1.125500, 0.590658}, {0.651714, -0.019948}, {-0.188271, -0.587491}, {0.512942, 0.238828}, {-0.089800, 0.880141}, {-0.020669, -0.745277}, {-0.393933, 0.425016}, {-0.706385, -0.337056}, {-0.072274, -0.466942}, {1.361972, 1.600456}, {-0.536411, 0.143837}, {-1.315825, -0.345262}, {0.586610, -0.105453}, {0.361835, -0.310457}, {0.162424, -0.455937}, {-0.266229, 0.468748}, {0.608348, 0.237188}, {-0.338820, 0.469070}, {0.825241, -0.122825}, {-1.296042, -1.106153}, {0.782186, 1.012854}, {0.546063, 0.108291}, {-0.675564, -0.118591}, {0.959435, -0.617240}, {0.253049, 0.642651}, {-0.717033, 0.421230}, {0.065648, -0.236145}, {0.787941, -0.725300}, {-0.214982, -0.330445}, {-0.005308, 0.843855}, {0.569761, -1.404632}, {-0.847684, 0.288276}, {-1.351673, 0.398555}, {-0.653094, 0.359977}, {-0.451479, -0.175236}, {0.250162, 1.082506}, {1.720280, -0.173550}, {0.043283, 0.495568}, {-0.467075, -0.286571}, {-0.516911, 0.372184}, {-0.644850, 0.027566}, {0.412044, -0.228306}, {0.441079, -0.818598}, {0.597972, 0.496661}, {-0.751802, 0.592583}, {-0.172332, -0.063214}, {-0.486652, 0.453796}, {-0.789048, 0.001233}, {-0.037757, -0.424086}, {0.610775, 0.085934}, {1.357820, 0.385392}, {0.772897, 0.561994}, {-0.547971, 0.343509}, {-0.305912, -0.659965}, {-0.150391, 0.051106}, {-0.659545, 0.811236}, {1.156720, -1.403491}, {0.250035, 0.752173}, {-1.033130, 1.467901}, {-0.081366, 0.567584}, {-0.189016, 0.757573}, {-0.062907, 0.109766}, {0.519387, -0.073148}, {0.852716, 1.480028}, {-0.332826, -0.335259}, {0.699783, 1.177709}, {-1.501976, -0.869618}, {0.011903, 0.566373}, {0.240645, 0.815848}, {0.022006, 0.778674}, {-0.311565, -0.232334}, {0.412026, 0.252313}, {-0.541887, 0.196055}, {1.576042, 1.850318}, {0.801784, 0.173800}, {-0.910855, -0.685674}, {2.049228, -0.222369}, {-0.354029, 1.030187}, {0.323162, -0.505727}, {-0.125605, -0.829970}, {0.512979, 0.187703}, {-1.013040, -1.303101}, {0.013997, 0.121938}, {0.058118, 0.257561}, {-0.258403, 0.395440}, {-0.670940, 1.122375}, {-1.432201, -0.379968}, {-0.814277, -0.812373}, {-0.559929, 0.609962}, {0.363925, 0.849823}, {0.621028, -0.837635}, {-0.240268, -0.472030}, {0.072362, 1.038756}, {0.227193, -0.732684}, {-0.658857, 0.208278}, {-1.534011, 0.239111}, {-0.154706, -0.173726}, {-1.368605, -1.607920}, {0.111885, 0.436946}, {-0.125141, 1.156338}, {-0.468032, -1.283854}, {-0.095271, -1.024174}, {-0.298550, 0.045489}, {0.683411, 0.029385}, {0.549679, -0.031146}, {0.498454, -0.530899}, {-0.477430, 0.323974}, {0.791994, 0.089182}, {0.361261, 0.618991}, {0.562423, 0.394355}, {0.244952, 0.570213}, {0.006620, 2.036926}, {-1.886519, -0.587302}, {0.648386, 0.606893}, {-1.081200, 1.050888}, {0.376747, -0.048129}, {-0.587935, 0.543545}, {1.449966, -0.385258}, {0.268650, 1.464783}, {-0.781591, -0.348916}, {0.585803, -0.636496}, {0.978237, 1.172719}, {0.668928, -0.068851}, {-1.466985, 0.045779}, {-1.179510, 1.101713}, {0.904752, 0.497169}, {0.097355, -0.293205}, {-0.172173, -0.181016}, {-0.501643, -0.080642}, {0.581053, -0.218558}, {-0.895757, 0.375873}, {-0.483364, 0.120657}, {-0.423777, 0.643739}, {0.124416, -1.106641}, {-1.457878, -0.321679}, {0.659524, -0.761259}, {0.364923, -0.166847}, {-1.388401, -0.199159}, {1.588209, -0.604498}, {1.309079, -0.352915}, {-0.347980, 0.189430}, {0.911844, -1.078087}, {0.278893, -0.835737}, {-0.982551, -0.254161}, {-0.431526, 0.412463}, {-0.477069, 0.486325}, {0.573694, 0.715416}, {1.143420, 2.072284}, {-0.857854, -0.906373}, {-0.297631, 0.413436}, {-0.467294, -0.331288}, {0.982162, -0.975864}, {0.285199, 0.043006}, {-0.812961, 0.340233}, {1.431540, 1.133126}, {0.102308, 0.190565}, {1.476116, 0.637898}, {0.434583, 0.580426}, {0.046831, -0.794218}, {-0.341083, 0.192367}, {-0.279135, -0.299876}, {0.296558, 0.569512}, {0.147472, 0.329278}, {-1.388735, 1.020627}, {0.602259, 0.386248}, {-0.528118, 1.134901}, {-0.181877, -0.564929}, {-0.553234, 0.469098}, {-1.455098, -0.185264}, {0.800772, 0.396759}, {-1.234805, 0.736313}, {0.761554, -0.175533}, {-0.650272, -1.001478}, {0.515606, -0.160728}, {1.523529, 0.422419}, {0.327472, 0.391494}, {0.747341, 0.126178}, {0.796575, 0.604781}, {-0.579325, 0.723723}, {0.188695, -0.270173}, {0.608637, -0.176246}, {0.357106, -0.187142}, {-0.476938, 0.579994}, {-0.159003, -0.546717}, {0.805633, 0.436189}, {-0.000267, -0.078362}, {0.388497, 0.613782}, {-0.616919, 0.325909}, {-0.139824, 0.506477}, {-0.357327, -0.352587}, {0.465315, 0.517060}, {-0.402298, 0.401676}, {-1.052840, 1.068351}, {0.089254, -0.088566}, {1.553712, -0.490081}, {0.796169, 0.313496}, {0.221044, 0.079029}, {0.735658, 0.515442}, {0.088796, -0.414440}, {0.177135, 0.018821}, {-0.136482, 0.116556}, {0.998341, 1.750061}, {1.539176, -0.444703}, {-0.005825, -1.174685}, {-0.546142, -1.060067}, {-0.238276, -0.411240}, {1.270839, 1.815292}, {0.238926, -0.014318}, {-0.433391, 1.175325}, {0.365434, 0.514461}, {0.549538, -0.875982}, {-0.052031, 0.088336}, {0.056105, 0.755373}, {-0.739169, 1.345512}, {0.022259, 0.310272}, {-0.143530, 0.226380}, {0.377260, -2.217078}, {1.266910, 0.770192}, {-1.430207, -0.389470}, {0.373033, 0.954533}, {-0.032998, 0.458503}, {0.033109, 0.876798}, {1.254053, -0.868324}, {-0.750205, -1.243251}, {0.178780, -0.059218}, {-0.138437, -1.864862}, {-0.057342, 0.724688}, {0.255896, 1.443441}, {0.554522, -0.149032}, {0.535395, 0.518631}, {0.178084, -1.333335}, {-1.146268, -0.525930}, {-0.444915, -0.179534}, {-1.827258, 0.610506}, {-0.970571, 0.433014}, {-0.851848, -1.408017}, {-0.010547, 0.425406}, {-0.438689, -0.641632}, {0.982537, 0.523425}, {0.194053, 0.040519}, {-2.164144, -0.712796}, {-0.286878, -1.289071}, {-1.189324, 0.191043}, {-0.178947, 0.227410}, {0.543007, -0.209633}, {-0.504561, 0.558697}, {-0.476418, -0.360136}, {-0.066349, 0.311321}, {0.205228, 0.537992}, {-0.431381, 0.691561}, {0.373215, -0.698683}, {-0.021947, -0.774605}, {0.587365, -1.799103}, {0.808319, -0.623221}, {1.089104, 0.969406}, {-0.309144, 0.148429}, {-0.370805, 0.696824}, {0.232746, 0.498690}, {0.207694, 0.370303}, {-0.921240, -1.399620}, {-0.553996, 0.380382}, {-0.578575, 0.448331}, {0.429058, -0.213727}, {-0.710646, -0.159683}, {1.620601, 0.839856}, {-0.118776, 0.365243}, {1.473897, 0.572852}, {0.186774, 0.121951}, {0.610082, -0.416502}, {-0.680911, 0.926587}, {-0.677998, 0.322929}, {0.386026, 0.195354}, {0.127726, 0.580091}, {0.103026, -0.655300}, {-0.285589, 0.668215}, {-0.304495, 0.862677}, {0.676639, -0.908045}, {-0.101844, -1.374433}, {0.111932, -0.315504}, {-0.786232, 0.096354}, {0.412804, 1.171453}, {0.242855, 0.419671}, {-1.122453, 0.072119}, {-0.954008, -1.360665}, {0.490884, -0.394485}, {1.407058, -0.197984}, {0.516526, -0.041076}, {-0.356944, 0.119194}, {0.114765, -0.432646}, {-0.616070, -0.812770}, {-1.283144, 0.352879}, {-0.675260, 0.248547}, {0.037469, 0.111532}, {1.808690, 0.215876}, {-0.262605, 0.390434}, {-0.528473, -0.590598}, {0.067823, 1.025179}, {-0.134779, 0.388853}, {-0.856184, -0.137929}, {-1.322880, -0.587829}, {0.255339, 0.957455}, {0.691181, 0.120283}, {-0.138113, -0.681550}, {-0.839258, -0.647184}, {0.717937, -0.342172}, {-0.002496, 0.085833}, {0.066570, 0.376295}, {-1.184694, -0.306608}, {-0.765986, -0.240214}, {-1.484250, -0.148429}, {-0.381439, 1.124766}, {-0.350007, 0.336370}, {0.235697, -1.183933}, {1.443619, 0.581121}, {0.491068, -0.099921}, {0.093451, 0.902716}, {0.505893, 1.686718}, {-0.385501, -1.017724}, {-0.541630, 0.466243}, {0.186522, -0.926013}, {-0.447201, -0.317000}, {-0.142966, -1.103298}, {0.144505, -0.006342}, {1.660683, -0.528652}, {-0.863812, -0.656971}, {0.373327, -0.447680}, {0.064399, -0.006573}, {0.273959, -0.067186}, {0.158321, -0.040345}, {-0.809976, 1.524938}, {0.265150, 0.968352}, {-0.561451, 0.122076}, {-0.238906, 0.602495}, {-0.682023, -1.518610}, {0.226352, 0.239321}, {0.249679, -0.450287}, {1.424126, -0.421314}, {0.347601, -1.256083}, {-0.161817, -0.558341}, {-0.698010, 1.392321}, {0.854525, -0.180275}, {-0.607136, -0.163008}, {-0.201352, -0.463324}, {0.177265, 0.445976}, {-1.139061, -0.711736}, {0.071346, 0.954147}, {-0.007381, -0.234975}, {0.122223, 0.301816}, {0.744879, -0.147205}, {0.885961, 0.569310}, {-0.584466, 0.194479}, {-0.356190, -0.486432}, {-0.604637, 0.312954}, {-0.571192, 0.009307}, {-1.645607, -1.013357}, {0.767907, 0.911892}, {-0.292811, -0.436490}, {0.754294, -0.258061}, {-0.020915, -0.553060}, {0.513940, 0.367752}, {-0.039909, -0.308901}, {-0.426255, -0.427997}, {0.031096, -0.350317}, {0.183359, 0.337084}, {-1.442484, 0.931023}, {0.285229, 0.747264}, {1.284922, -0.542352}, {-0.580213, -0.744180}, {-1.258930, 1.722668}, {-0.259699, -0.002504}, {0.488400, 0.053418}, {0.626716, -0.067078}, {-0.262059, -0.661936}, {-0.826681, 1.076488}, {-0.313348, 0.452737}, {0.751086, -0.240226}, {-0.201071, -0.293798}, {0.498236, 0.533344}, {0.445915, -0.498216}, {-0.476964, -0.992134}, {0.124767, 0.528058}, {-0.175549, 0.108257}, {-0.983469, 1.220194}, {-1.365000, 0.620389}, {0.126352, 1.586583}, {0.698377, -0.366504}, {-0.972605, -0.070712}, {-0.173680, 0.387337}, {-1.296066, -0.326749}, {0.074632, 1.409292}, {0.273771, 0.567147}, {1.247218, 0.334758}, {0.109021, 0.319268}, {0.782710, 0.115378}, {0.481173, -0.827708}, {-0.539717, -0.877906}, {0.746934, 1.005647}, {-0.621987, 0.129283}, {0.413268, 0.131652}, {-1.265124, 0.249034}, {-0.352113, 0.553744}, {0.639651, -0.490536}, {-0.207383, -0.516105}, {0.300740, 0.271305}, {-0.778036, -0.864931}, {0.237860, -0.011126}, {0.147210, 0.427180}, {-0.038382, 1.535662}, {-1.191819, 0.386445}, {0.553605, 0.469841}, {0.060159, 0.320722}, {0.628356, 0.798504}, {0.141494, 0.747546}, {0.356586, -0.813978}, {-0.526579, 0.129332}, {-0.142047, -0.183652}, {0.142306, -1.230296}, {0.163303, 0.973984}, {0.741797, -0.963034}, {-0.953978, 1.630063}, {0.782292, 0.927006}, {0.269555, -0.483264}, {-0.225813, -0.846876}, {-0.147398, 0.037824}, {-1.151203, 0.182452}, {-0.051871, 1.116905}, {0.618385, 0.772501}, {-0.806309, -0.676225}, {0.314484, 0.962604}, {-0.877810, 0.165547}, {-0.278775, 0.828332}, {-0.193032, 0.607956}, {0.481850, 0.406728}, {0.189260, 0.564026}, {0.101573, -0.153646}, {0.141078, 0.577827}, {0.442071, -0.654711}, {-0.497890, -0.069597}, {-0.896127, 0.092677}, {1.379386, -1.739856}, {0.049072, 0.076701}, {-0.000871, -0.137247}, {-1.069033, 1.216272}, {1.305900, -1.105981}, {-0.038746, 0.948692}, {0.097514, -0.182169}, {0.504969, 0.301159}, {-0.070645, -0.338149}, {-0.648749, 1.116034}, {0.019086, 0.366446}, {0.061191, -0.513735}, {-0.412078, 0.343295}, {-1.006799, -0.785297}, {0.728767, -0.194047}, {-0.294156, 0.632371}, {-0.674312, -1.092083}, {-0.662882, -0.689872}, {-1.090220, -0.610777}, {0.103421, 0.205088}, {0.654995, -0.196212}, {0.811050, -1.173118}, {0.047948, 0.235323}, {0.657132, 0.634237}, {0.807551, 0.684801}, {0.066354, -0.968132}, {-0.109448, -0.718459}, {-1.570057, 0.383556}, {1.177749, -0.333918}, {-0.076754, -0.018363}, {1.147423, 0.535147}, {-1.099482, -1.047722}, {0.202256, 0.611263}, {0.355965, 0.186135}, {0.638869, 0.248176}, {0.423701, 0.167180}, {0.140065, -1.046322}, {-0.128061, 0.389472}, {-0.073327, -0.620858}, {0.551739, -0.001060}, {-0.010351, -0.343739}, {0.273292, 0.077655}, {0.018582, -0.649334}, {0.858083, -0.239483}, {0.434152, -0.516887}, {-1.191059, 0.970440}, {-1.078976, -1.186674}, {1.220491, 0.830858}, {0.392834, -0.620787}, {0.570976, 1.188011}, {0.659424, -0.514683}, {0.396493, 0.413003}, {1.064244, -1.299914}, {-0.395576, -0.151052}, {-1.016292, -0.124868}, {0.339642, 0.187616}, {-0.732745, 0.330348}, {0.064742, 0.443943}, {0.986493, -0.439466}, {0.469584, -0.447904}, {0.721960, 0.754263}, {0.157520, -0.324514}, {-0.114010, -0.285823}, {-0.771222, -0.402135}, {0.327920, 0.786586}, {-0.761432, -0.278662}, {0.019400, -0.367941}, {1.070777, 0.601845}, {0.456113, -0.819699}, {0.879266, -1.927595}, {0.205047, -0.103213}, {0.499241, 0.410470}, {0.833646, -1.356775}, {0.148523, 0.231443}, {0.561257, -0.947881}, {0.003637, -0.389497}, {0.433277, 0.984572}, {-0.048365, -0.418898}, {-0.136111, -1.207308}, {1.922850, 1.447618}, {0.384710, 0.640459}, {0.139125, 0.130501}, {0.571578, -0.186558}, {0.682121, 0.751595}, {0.321521, -1.559149}, {-0.371364, -0.545437}, {0.621527, 0.318470}, {-0.035350, 0.128997}, {0.478967, 0.282489}, {-1.726296, 0.075075}, {-0.410562, -0.229728}, {0.248913, 0.103229}, {-1.158596, 0.232259}, {0.162925, 0.185782}, {0.954972, -0.172445}, {-1.023235, -0.827372}, {0.386385, 0.418922}, {-1.535752, -0.171385}, {-0.052104, 0.779521}, {0.578034, -0.561471}, {0.132959, 0.311450}, {-0.343702, -0.401046}, {0.245350, 0.969726}, {0.396674, 0.108288}, {-1.432259, 0.419970}, {0.341158, 0.317464}, {-0.330617, -0.606965}, {-0.152268, -0.472867}, {-0.060637, 0.458003}, {-0.571015, -0.285286}, {-0.689380, -0.890630}, {1.280908, 0.748947}, {-0.541963, 0.307449}, {1.509660, 0.796404}, {1.759599, -0.190714}, {0.431596, -0.064444}, {0.781975, -0.726109}, {-0.225672, -0.453357}, {-1.213446, 0.029801}, {-0.502440, 0.933800}, {0.526578, 0.291420}, {0.147412, 0.134833}, {0.512102, 0.625511}, {1.456875, 1.380586}, {-0.290328, -1.063807}, {0.101380, -0.817843}, {0.113163, 0.126724}, {1.215953, 0.725106}, {0.201676, 0.845303}, {0.239325, -0.398681}, {0.164998, -0.338345}, {-0.108562, -0.506582}, {-0.489327, 0.543874}, {0.661906, -0.354970}, {-0.265596, 0.563607}, {-0.884218, 0.854292}, {1.321217, -1.368510}, {0.081827, -1.410110}, {-0.219351, 0.885236}, {-0.982823, 0.858992}, {-1.274274, -1.011328}, {-1.067975, 0.067140}, {0.436583, -0.052909}, {-0.404171, -0.153187}, {-0.582062, 0.600456}, {0.023155, 0.627493}, {-0.685279, -0.017384}, {0.548277, -0.244152}, {-0.115240, 0.053806}, {0.060231, 0.740503}, {-0.145329, 0.863530}, {-1.448378, 0.298489}, {0.240402, -0.369060}, {1.430967, 1.095404}, {0.331176, 0.532789}, {0.065128, 0.165151}, {-0.301511, -0.764322}, {1.104458, 0.230971}, {-0.659759, -0.691340}, {-0.814781, -0.814180}, {0.417795, 1.175324}, {0.289451, 0.400148}, {-0.418076, 0.131680}, {-1.362387, 0.205250}, {-0.014391, 0.377274}, {-1.409865, -1.379234}, {0.541087, 1.912687}, {-0.029290, -0.841498}, {0.466166, 0.092614}, {0.184014, -0.060701}, {0.809956, 1.648975}, {-0.773957, 0.556490}, {-0.526512, -0.408391}, {0.241741, 0.658692}, {-0.542720, 1.687133}, {-0.516997, -0.467089}, {0.739354, 0.421007}, {-0.042296, -0.146626}, {-0.269594, -0.550475}, {-1.523314, -1.306939}, {0.250566, 0.617745}, {0.504463, -0.722584}, {-0.179117, -0.083309}, {1.874666, 0.664473}, {0.786372, -0.183692}, {-0.791371, -0.105155}, {0.546627, -0.378284}, {-0.682557, 0.353458}, {-1.551750, -1.178922}, {0.004591, -0.364755}, {0.595242, -0.129436}, {-0.525592, -0.317380}, {-0.090858, -0.976245}, {-0.485468, 0.291478}, {0.149195, 0.432197}, {-0.614205, -0.776327}, {-0.282117, 0.839998}, {-0.805384, -0.020502}, {0.822789, -1.368598}, {-0.626826, 0.998920}, {0.496481, -0.497299}, {1.668775, 0.382570}, {0.548438, -1.033250}, {1.007271, 0.933075}, {0.183149, -0.380990}, {1.293787, -0.119620}, {0.774773, 0.143392}, {-0.274284, -0.302211}, {0.451132, -0.154428}, {-0.025212, 0.110100}, {-1.359157, 0.348165}, {0.013577, 0.207362}, {1.101108, 1.741819}, {-1.147832, -0.970628}, {-0.792563, -0.451914}, {-0.065555, 0.248664}, {-1.252769, 0.225012}, {0.954973, -1.085338}, {0.121842, -0.845815}, {-1.622493, 0.134620}, {-0.785575, -1.165826}, {-0.155585, -0.299899}, {0.204921, 1.247232}, {0.190846, 0.982351}, {-0.086519, 0.188154}, {0.911527, -0.410064}, {-0.589303, 0.001458}, {-0.461175, -0.753628}, {-0.703909, -0.266743}, {-0.552377, -0.836142}, {-0.316481, -0.804232}, {-1.208979, -0.807974}, {-0.405595, -0.324402}, {0.556275, 0.511671}, {0.755633, -0.192398}, {0.361233, -0.288166}, {-0.271475, -0.290048}, {0.036496, 1.048269}, {-0.230503, 0.604447}, {1.000254, -0.234682}, {0.120851, -0.393787}, {-1.135812, -0.005555}, {0.117785, 0.102412}, {0.269803, 0.306705}, {-1.000569, -0.211454}, {-0.921295, -0.318864}, {0.015830, -0.276718}, {0.855560, 0.052771}, {-0.331353, 0.532554}, {-0.998449, -0.148572}, {1.087764, 1.700836}, {-0.433519, 1.028843}, {0.238422, -0.076953}, {-0.789252, -0.068322}, {0.231041, 0.257196}, {-0.119942, 0.994053}, {-1.624463, 0.592305}, {0.489505, 0.330256}, {-0.791727, -0.240149}, {0.023486, 0.405492}, {-0.712725, 1.139520}, {-0.397841, 0.392477}, {-0.172113, -0.103673}, {-0.916898, -0.115494}, {-0.740514, -0.159728}, {0.030016, 0.438515}, {-0.189621, 0.505697}, {-0.312361, -0.485750}, {0.395219, -0.191466}, {-0.681995, 0.910094}, {-0.886425, 0.038644}, {-0.363377, 0.254644}, {1.213012, 0.273619}, {0.387538, -0.267483}, {0.184534, -0.031493}, {-0.082584, 0.185597}, {-0.168003, -1.103117}, {-0.130390, 0.133329}, {-0.641604, -1.152805}, {0.930567, 0.868625}, {-0.667303, 0.040410}, {0.885582, -0.805815}, {1.203275, 0.842920}, {-1.398472, -0.587075}, {-1.319309, -0.535182}, {0.187520, 0.267047}, {1.366326, 0.361960}, {0.099778, -0.157978}, {-0.133780, -0.185177}, {0.536479, -0.703430}, {-1.744925, 0.483704}, {-0.188968, -0.117653}, {0.100862, -0.201597}, {1.112205, 0.886361}, {1.065932, 0.187435}, {-0.515742, -1.160125}, {-0.302570, 0.686457}, {0.650096, -0.027069}, {-0.038160, 1.315195}, {0.325478, -0.873972}, {-1.071418, 0.172045}, {0.086233, -0.410727}, {0.062731, 0.419938}, {-0.067950, 0.160374}, {-0.871875, -0.789548}, {-0.533510, 0.417835}, {0.549437, -0.061798}, {0.230347, 0.244062}, {-0.664741, -0.647699}, {0.866195, -0.509121}, {-0.455236, -1.065637}, {-0.098402, -0.964385}, {0.972477, 0.831164}, {1.126182, 1.212522}, {-1.214912, -0.489044}, {-0.145521, -0.082823}, {0.172649, 0.507886}, {0.816966, 0.723179}, {0.286767, 0.813230}, {-0.292067, 0.442358}, {-0.242028, 0.403211}, {0.810219, -0.296835}, {-0.965484, 0.781090}, {0.030609, 1.430429}, {-0.113167, -0.735173}, {0.679344, 0.038494}, {-0.296711, 1.173452}, {0.205363, 0.307279}, {0.236531, -0.902335}, {1.474420, 1.009479}, {-0.794636, -1.088974}, {-0.600780, -0.630495}, {-0.120746, 0.153255}, {-0.074198, -1.159780}, {0.479216, -0.756744}, {-0.061359, -0.464196}, {0.266948, 0.499785}, {0.466252, -0.801677}, {-0.739398, -1.104281}, {-0.209888, 0.342897}, {0.317751, 0.652312}, {-0.108828, -0.502183}, {0.311654, -0.272723}, {-1.213448, 0.887512}, {-0.156897, 0.247416}, {0.684845, 0.663784}, {-0.834150, -1.557275}, {-0.111679, -0.539638}, {-0.629201, -0.244997}, {0.345529, -0.729459}, {-0.573635, 0.569731}, {0.202781, 1.168916}, {0.299240, 0.698863}, {-0.303744, 0.092127}, {-0.770121, -0.010426}, {0.785242, -0.473798}, {-0.258107, -1.614886}, {-0.364306, 0.445393}, {-0.030830, -0.396489}, {-0.861569, -0.618809}, {-0.467142, -0.065045}, {1.496496, 0.390095}, {-0.664346, -0.666512}, {-1.078531, -0.683208}, {-1.035570, 0.332805}, {0.334032, 0.923234}, {-0.352618, 1.163516}, {0.487088, 0.813483}, {-0.108438, 0.111755}, {-0.242763, -0.716151}, {0.048218, -0.411570}, {-0.682291, -0.100047}, {-0.347302, -0.541596}, {-0.055860, 0.329776}, {-0.486827, 0.763519}, {0.936834, 0.378179}, {0.560789, -0.581682}, {0.062925, -1.147451}, {0.370209, 0.604113}, {0.303006, 0.781933}, {-0.771395, 1.640898}, {0.367795, -0.936096}, {-0.948469, -0.645591}, {-1.338969, 0.458720}, {-0.119671, 0.943494}, {-0.504578, 1.348833}, {0.087662, 0.180008}, {-0.400353, -0.940478}, {-1.020622, 0.010305}, {-0.572008, 0.916672}, {0.777239, -0.920403}, {-0.246385, -1.900782}, {0.368677, -0.397907}, {-0.213803, 1.423726}, {-0.529380, 0.287280}, {0.674833, 0.865517}, {0.214032, 0.083444}, {-1.354788, 0.121986}, {-0.147398, -0.259880}, {-0.236661, 0.083370}, {1.070576, -0.674437}, {-1.696654, -0.863431}, {-0.288571, -0.088433}, {-1.178608, 0.352638}, {-0.686168, -0.664879}, {-0.727181, 0.139968}, {0.704379, 0.011108}, {-0.097122, -0.414411}, {0.833092, -0.416375}, {1.679856, -0.186026}, {-0.188038, -0.789648}, {0.788024, 1.319672}, {-0.111910, -0.429271}, {0.026979, -0.973063}, {-0.822299, -0.468297}, {-0.020743, -0.075185}, {-0.196015, -0.653514}, {-0.531606, 0.126889}, {0.683125, 0.196602}, {-0.642640, -1.115938}, {0.216297, 0.501497}, {-0.798830, -0.596719}, {0.118774, -0.356140}, {-1.144614, -0.125928}, {0.782631, 0.924172}, {-1.170188, -0.199186}, {-1.219077, 1.060124}, {-0.426246, 0.782024}, {0.022011, 1.753737}, {-1.176024, 1.096339}, {0.892655, 0.511964}, {0.162166, 0.613459}, {0.089108, 0.600362}, {0.727923, 0.549506}, {0.043496, -0.772287}, {0.545886, -1.494124}, {-0.208190, -0.121938}, {0.457878, -0.436767}, {0.202868, 1.137949}, {0.442543, -0.970062}, {-0.938356, 0.524556}, {-0.206104, -0.650013}, {-0.241362, -0.130104}, {0.825974, 0.375147}, {-1.030467, 0.349799}, {0.165765, 0.053764}, {0.539089, 0.219063}, {-0.920803, -0.360764}, {-1.501808, 0.467059}, {0.010156, -0.026508}, {0.296985, 1.309064}, {0.255845, 0.369301}, {0.282236, 0.181767}, {-0.599911, 0.417191}, {-0.124009, -0.052300}, {1.762523, -0.638097}, {1.559969, -0.392161}, {0.788940, -1.012021}, {-0.889773, 0.829916}, {-0.758505, 0.629368}, {0.149425, 0.205740}, {-1.489133, 0.519999}, {0.274081, -0.473210}, {-0.400278, -0.605729}, {-0.034848, -0.711428}, {0.797203, 0.653726}, {0.684081, 0.306657}, {-0.898558, 0.487512}, {0.531034, -0.804407}, {-0.189209, 0.079728}, {-0.236203, 0.887653}, {-1.055849, -0.030049}, {0.157577, 0.262297}, {0.816064, 0.614824}, {-0.517684, -0.651690}, {0.817597, 0.142859}, {0.632049, 0.746048}, {-0.004080, -0.044616}, {-0.443800, -0.623657}, {-1.950154, 0.292959}, {0.849712, 0.756986}, {-0.331359, 0.267557}, {0.110510, 0.822703}, {1.123170, -0.844141}, {-0.779840, 0.699576}, {0.039398, 0.256364}, {0.701604, -1.071505}, {0.068249, -0.334658}, {-0.092711, -0.747982}, {0.279999, 0.476331}, {-0.250376, -0.152404}, {-0.633183, -0.303464}, {-0.871779, -0.289203}, {0.520590, 0.441538}, {0.411185, 0.050415}, {0.299688, 0.061898}, {0.006655, 0.250882}, {0.663987, -0.250278}, {-0.435304, 0.428809}, {-0.954020, 0.275075}, {-0.534693, -0.019677}, {-0.454147, -0.287202}, {-0.410159, 0.876545}, {0.167473, 0.702159}, {-0.798929, -0.035521}, {0.321676, 0.347692}, {0.817898, 0.460273}, {-0.129380, 0.029044}, {0.252003, -0.312483}, {-0.794911, 2.260189}, {1.196671, -0.508444}, {0.658018, 0.454661}, {-0.110961, 1.988064}, {1.027958, -0.139970}, {0.371965, 0.512944}, {-0.889717, -0.561569}, {-0.385539, 1.492987}, {0.182554, -0.293347}, {-0.678913, -0.180265}, {-0.619095, 0.804020}, {-0.246786, 0.065080}, {0.732415, 0.287005}, {-0.433814, 0.359104}, {-1.062615, 0.398734}, {-0.068996, -0.161415}, {0.177600, -0.169124}, {-1.098818, 0.257113}, {-0.199506, -0.234330}, {-0.457931, -0.929827}, {1.267319, -0.665283}, {0.569162, 0.128109}, {-0.894920, -0.343725}, {-1.047250, 0.194854}, {0.145325, 1.000184}, {-0.485785, 0.176002}, {0.416958, 0.181212}, {-0.538063, 1.408044}, {0.396945, 0.376793}, {-0.650388, 0.600960}, {-0.336692, 0.041523}, {0.762633, 0.056195}, {-0.101801, 1.060078}, {0.008753, 0.341367}, {1.213057, 0.650804}, {-0.242555, 0.605359}, {-0.096545, 0.505888}, {-0.218160, 0.065450}, {-0.392291, -0.153585}, {-0.382276, -0.435595}, {-0.566462, 0.503745}, {0.742303, 0.092767}, {-0.706119, -0.446348}, {0.846034, -0.169926}, {-0.800204, 0.067673}, {0.393443, -0.252153}, {-1.189230, -0.417032}, {-0.258718, -0.577801}, {0.148415, -0.218861}, {-0.242399, -0.722251}, {-0.554846, 0.266552}, {-0.154566, 0.345374}, {-0.178620, -0.620674}, {-1.452684, 0.547125}, {0.742394, -0.579851}, {-0.535252, 0.818573}, {-0.373753, -0.844847}, {-0.307951, -0.485154}, {-1.055151, -0.234469}, {-0.617500, 0.155782}, {-0.632949, -0.514511}, {0.321217, -0.177787}, {0.810575, 0.867079}, {-0.739780, 0.080659}, {-0.702951, -0.542686}, {-0.849406, -0.434737}, {-0.107667, 1.546333}, {-0.481642, 0.249243}, {-0.434692, 0.925578}, {-0.649042, 0.190168}, {0.543056, 0.387398}, {0.229006, 1.749723}, {-0.659196, 1.496811}, {-1.112472, -1.378348}, {-0.347713, 0.655806}, {-0.333020, -0.442177}, {-0.010896, 0.243385}, {0.396435, -0.937387}, {-1.542977, -0.081353}, {-0.988957, -1.301314}, {-0.671717, 0.385106}, {-0.475757, -0.051430}, {-0.152665, -0.430897}, {0.226653, -1.286005}, {-0.121291, -0.593614}, {-0.416353, 0.289417}, {0.641212, -0.014396}, {0.625740, 0.289628}, {0.109355, -0.864110}, {-1.304982, 0.864331}, {0.540706, -0.034820}, {1.160577, 0.426277}, {0.897177, 0.120431}, {0.166315, 0.025191}, {-1.194892, -0.817293}, {-0.018821, -0.365376}, {0.419874, -0.904719}, {-0.376988, 1.270798}, {0.591134, -0.413071}, {0.765301, 0.183033}, {0.425363, -2.200343}, {0.282538, -0.115302}, {0.471367, -0.189218}, {0.072332, -1.738241}, {0.705167, 1.306461}, {0.517418, -0.123308}, {0.665696, 0.768678}, {0.799159, 0.744041}, {0.388496, 0.054943}, {-0.509369, -0.466480}, {-0.932773, -0.129384}, {-1.766512, 0.342952}, {-0.411573, -0.953764}, {-0.376695, -0.388200}, {0.253429, 0.762383}, {-0.238802, -0.837494}, {-0.568870, 0.170795}, {0.970388, 1.303336}, {-0.483732, -0.759695}, {-0.067874, -0.877486}, {0.361803, -0.828496}, {0.148481, -0.631609}, {0.188760, 0.682836}, {0.233787, 1.072984}, {0.607324, 0.052559}, {-0.462668, -0.875849}, {0.513511, -0.625931}, {0.029210, -0.447513}, {0.480831, 0.480287}, {-0.664907, -0.973077}, {0.188319, -1.203828}, {0.022725, -0.215416}, {-0.426508, 0.568704}, {0.696166, -0.153401}, {-0.888605, 0.283359}, {-1.887684, -0.631214}, {-0.027258, -0.755818}, {0.463172, 0.099262}, {0.176597, 0.408871}, {0.139626, 0.475139}, {-0.512137, -0.095797}, {0.142498, 0.791082}, {1.714745, 0.050486}, {-0.151700, 1.001408}, {-0.187926, -1.189337}, {-1.047952, 0.351206}, {-0.605363, 0.923878}, {-0.880344, -0.236752}, {0.158545, 0.536012}, {-0.702132, -0.383830}, {-0.232765, -0.434727}, {-0.332018, 0.111265}, {-0.115645, 1.224794}, {1.130556, 1.039947}, {-0.684674, 0.389432}, {-0.495957, -0.819223}, {-0.287520, 0.044088}, {-0.120997, -0.373808}, {0.344498, -0.861474}, {-0.287849, -0.627099}, {-1.624836, 1.107974}, {-0.161896, 0.734496}, {0.922077, 0.415761}, {-0.092261, -0.792858}, {0.740678, 0.637053}, {0.009040, -1.221702}, {-0.151925, -1.520832}, {-0.926963, 1.228550}, {1.592761, -0.740545}, {0.975686, -0.204006}, {-0.510445, -0.013318}, {-0.116722, -1.460534}, {0.050564, -0.696307}, {0.238704, -0.306242}, {-0.056267, -0.039088}, {0.367015, 0.155718}, {0.828479, 0.364074}, {-0.066791, -0.263206}, {-0.206769, -0.176020}, {0.607347, -0.204373}, {-0.328140, 0.234530}, {-0.149728, 0.964312}, {-0.673761, -0.476774}, {-0.531880, 1.004618}, {-0.115795, -0.702836}, {0.150798, -1.577178}, {-0.261606, -0.115086}, {-0.466822, -0.540959}, {0.188110, -0.368671}, {1.054299, 0.152076}, {0.955712, -0.861367}, {-0.203463, 1.366727}, {0.633374, 0.651992}, {-1.391364, 0.818343}, {0.956846, 1.464320}, {-0.393481, 0.977886}, {0.069476, 1.092029}, {-0.819219, 0.095735}, {-0.358142, -0.433980}, {0.880563, 0.408356}, {-0.110838, 0.733042}, {0.767039, 0.273039}, {0.484175, 1.024151}, {0.506067, -0.462739}, {0.138992, 0.524270}, {0.438017, -0.334267}, {-0.480006, -1.227354}, {-0.549142, 0.321805}, {0.558154, 0.085036}, {-1.561828, 1.403826}, {0.792447, -1.514236}, {0.340796, 0.383640}, {-1.368843, -0.478391}, {0.058797, 0.152301}, {-1.186850, 0.309630}, {0.008511, 0.569976}, {0.499503, 0.907362}, {-0.582328, -1.193703}, {0.457649, 0.390902}, {0.080038, 0.404945}, {0.509056, -1.101939}, {-0.172094, 0.524935}, {-0.856769, -1.342524}, {0.600361, 0.564700}, {0.669194, -0.792939}, {1.645031, -1.295386}, {-0.563368, -1.044735}, {1.573442, 0.369752}, {-0.476873, 1.693162}, {0.009118, -0.394260}, {-1.892748, 0.376392}, {0.527800, 0.693088}, {0.174069, 1.074548}, {0.421630, -0.272748}, {-0.328084, 0.643263}, {-1.074268, -0.336496}, {1.380511, -0.549909}, {0.446078, -0.836703}, {0.094413, 0.555130}, {2.359104, 0.198856}, {-0.171100, 1.095922}, {0.554416, -0.723893}, {-1.692759, -0.111848}, {-0.968574, -0.811231}, {-1.243309, -0.641704}, {0.374876, -0.441376}, {-0.298878, 0.934476}, {0.959066, 0.185512}, {-0.372387, 0.626353}, {-0.200447, 0.974171}, {-0.656902, -0.411072}, {0.606477, 0.609449}, {0.596347, -0.335998}, {-0.680908, -0.373738}, {-0.714886, -0.319760}, {-1.232879, -0.543364}, {0.597159, 0.750747}, {-0.092650, 0.649143}, {1.312315, 0.577498}, {0.949531, 0.577766}, {-0.536287, -0.256933}, {0.026927, 0.209819}, {-0.506280, 0.975751}, {-0.100592, -0.496428}, {0.703664, 0.977937}, {0.439077, 0.642939}, {-1.186330, -0.562701}, {0.834602, -0.346392}, {-1.140063, 1.278697}, {-0.176394, -0.177266}, {-1.911734, -0.158996}, {-0.938247, -1.139427}, {0.430852, -0.519788}, {0.552453, 0.347402}, {0.397558, -0.621711}, {0.395750, -0.030026}, {-0.318682, 0.526152}, {-0.086843, 0.198691}, {-0.463806, 1.322882}, {0.021087, 0.405731}, {-0.997044, -0.774766}, {-0.693620, 0.425756}, {-0.093692, 0.639838}, {0.605591, 0.305130}, {-1.280314, 0.984296}, {-0.058598, -1.163590}, {0.649775, -0.003839}, {-0.268283, 0.754608}, {-1.297487, 0.615832}, {0.619815, -0.088227}, {-0.447024, 0.734463}, {0.342713, 0.254090}, {-0.076577, 1.067338}, {-0.580665, -0.362452}, {0.233286, -0.620338}, {-0.934433, 0.379823}, {0.933342, 0.231465}, {-0.859952, 0.114437}, {-0.856929, 0.585641}, {-0.943033, -0.113384}, {1.038475, 0.201911}, {-0.469030, -0.388884}, {-0.118337, -0.297191}, {-0.702286, -0.240531}, {-0.513404, -0.591197}, {0.324736, 0.499129}, {0.131897, -0.425180}, {-0.464172, 1.168790}, {-0.606129, 0.482431}, {-0.947150, -0.266069}, {0.443681, -1.910554}, {-0.022401, -0.327754}, {0.551598, 0.923532}, {0.223361, -0.385604}, {0.185751, 0.593156}, {-0.184030, 0.754766}, {1.395817, 0.028574}, {0.475188, 0.054661}, {-0.277480, 0.125616}, {-0.496862, -1.147994}, {-0.004339, -1.205962}, {-0.143203, -0.265497}, {0.125309, -0.043515}, {0.366992, 0.512033}, {0.824571, 0.106918}, {-1.068985, 0.132551}, {1.832261, 0.084296}, {0.263801, -1.200894}, {-1.508048, 0.915831}, {0.482696, -0.426293}, {0.033090, -1.904729}, {-2.108846, -0.435991}, {-0.176570, 0.183011}, {-0.552305, 0.353128}, {-0.238016, 0.185723}, {-1.105006, -0.940637}, {-0.819965, -0.929777}, {0.157431, 0.682561}, {-0.217550, 0.640647}, {0.203090, -0.654541}, {-0.077923, 1.061114}, {0.255508, -1.220831}, {-0.166887, -0.641701}, {-0.366592, 0.125942}, {-1.173483, 0.813176}, {0.808734, -0.982589}, {-0.278042, 1.861455}, {-0.065514, 0.269957}, {0.906470, 0.226526}, {-0.120529, -0.080793}, {0.417512, 0.156899}, {-0.907569, -0.097119}, {0.263494, -0.109026}, {0.189893, -0.050584}, {-0.790905, 0.939795}, {-0.170601, -0.628612}, {0.350909, -0.626418}, {-0.386598, -0.927327}, {-0.453768, 0.023829}, {0.914262, 0.275209}, {-0.562420, -0.398459}, {-0.630268, 1.978496}, {0.221322, 1.406665}, {0.469280, 0.011328}, {1.173789, 0.177916}, {-0.299844, 0.272473}, {0.251780, -0.111125}, {-0.773700, 1.126264}, {-0.141209, 0.420552}, {0.799946, -0.075850}, {-1.245327, 0.658100}, {0.291694, 0.510028}, {-0.794185, -0.184348}, {0.558676, -0.725595}, {0.104020, 0.146003}, {0.687901, 0.258342}, {0.447092, 1.306396}, {0.252250, -0.596987}, {-0.576601, 0.104527}, {-0.528980, 0.897886}, {0.319621, 0.007942}, {-0.271045, -1.032491}, {0.106805, -1.171924}, {-0.117934, -0.002040}, {0.937400, 0.094878}, {0.767345, 0.456467}, {-0.248117, 1.399906}, {-0.019431, 0.029962}, {-0.553835, -0.199065}, {0.973482, -0.555913}, {-1.158272, 0.011195}, {0.289042, -0.022439}, {-0.242274, 0.051491}, {-0.784552, 0.046357}, {0.089161, -0.070526}, {-0.347404, -0.479778}, {-0.387975, -0.227373}, {0.209500, -1.064529}, {1.636459, -0.994817}, {0.962069, -0.828699}, {0.599537, 0.180033}, {0.403511, -1.375267}, {-0.030051, 0.364420}, {0.255406, -0.152639}, {-0.842737, -0.083531}, {0.265162, -0.110579}, {0.023556, -1.674108}, {0.998462, -0.391540}, {-0.236300, -0.679450}, {-0.135786, 0.684768}, {-0.166010, 0.165157}, {0.727715, -0.372501}, {-0.189725, 0.488845}, {-0.295131, -0.024017}, {0.260305, -0.897897}, {0.282883, -0.374545}, {-0.131905, 0.759994}, {0.642608, -0.501903}, {0.235753, -0.019992}, {0.234917, -0.917430}, {-0.187950, -0.955321}, {-1.679033, -0.077540}, {0.057969, -0.182145}, {0.806970, 0.187450}, {-1.255149, -1.161657}, {0.071722, -1.622885}, {0.743520, -0.598178}, {-0.541128, 0.760663}, {-0.690128, -0.163725}, {-0.713829, 1.032708}, {-0.184282, 0.073560}, {-1.631399, -1.104151}, {-0.287196, -1.050644}, {-0.861881, 0.837003}, {0.658268, -0.445585}, {-0.492519, -0.822022}, {-0.042083, 0.453774}, {-1.060994, 0.621202}, {0.552598, -0.448519}, {0.547632, -0.643752}, {-0.180073, -0.870508}, {-0.301082, 0.100829}, {-0.185883, 0.378342}, {-1.021355, -0.041632}, {0.835251, 0.146685}, {0.367444, 1.012175}, {-0.336391, 0.016233}, {-1.065102, 0.040814}, {-0.949472, 0.846319}, {1.291102, 0.795366}, {-0.487972, 1.266731}, {0.385963, -1.232202}, {-0.274804, -0.575065}, {0.142511, 0.996808}, {-1.127767, 0.320745}, {-1.464213, -0.001272}, {-1.263870, -0.925822}, {0.440001, 1.508906}, {-1.938712, -1.470684}, {-0.186008, 0.087603}, {0.166957, -0.114873}, {-0.546288, 0.060052}, {-0.451944, -0.677336}, {0.110307, -0.073643}, {-2.575184, -0.348193}, {0.686896, -0.114358}, {0.104536, -0.295687}, {1.742926, 0.023467}, {-0.764176, 0.383341}, {0.143325, 0.194010}, {0.520979, 0.503754}, {1.008110, -0.184279}, {0.707282, 0.233438}, {-1.342322, -0.476836}, {-0.162102, -0.516986}, {-1.555440, 0.272954}, {1.012432, -0.043494}, {-0.081673, 1.117860}, {0.403470, 0.057254}, {-0.517038, -0.110340}, {0.475128, 0.752501}, {-0.489141, -0.553330}, {-0.636345, -0.926923}, {0.379515, 0.423726}, {0.263556, -0.838201}, {1.364556, -0.420440}, {-0.269874, 0.091490}, {-1.434258, 0.014961}, {-0.590992, 0.091827}, {-0.308413, 0.016741}, {0.349648, -1.591085}, {-0.118712, 1.184347}, {0.187251, 1.433784}, {0.562964, 1.318689}, {-0.861674, -0.392680}, {0.002905, 0.622487}, {-0.151723, -1.179258}, {-0.070747, 0.053384}, {0.525404, -0.554260}, {-0.343545, -0.118922}, {-0.507229, -0.864504}, {0.500450, -0.403323}, {0.377233, 0.949879}, {-0.833561, -0.056483}, {-0.725906, -0.705636}, {0.922402, -0.108117}, {0.242458, -0.509338}, {1.107595, 0.489720}, {-1.198374, -0.015819}, {-0.413664, -0.441380}, {0.218345, -1.315292}, {0.497907, -0.042786}, {1.204892, -0.699516}, {-0.555751, 0.313409}, {0.379257, -0.609355}, {0.950328, -0.278547}, {-0.755355, 0.813622}, {0.513696, -0.533451}, {-0.495311, 0.409720}, {0.112153, -1.160556}, {0.353378, 0.752034}, {0.459675, -0.527592}, {0.546631, 0.123779}, {0.828528, 0.384762}, {-0.369489, 0.154474}, {-0.505704, 0.615962}, {-0.473887, 0.076201}, {0.008357, -0.357277}, {0.129246, -0.337053}, {-0.257137, -0.189718}, {-1.475479, 0.652016}, {0.204440, -0.454342}, {1.032094, -0.103206}, {-1.053839, 0.656926}, {0.190919, -0.204573}, {-0.069636, -0.090363}, {-1.022143, 0.421546}, {0.117690, -0.596925}, {0.668920, -0.202848}, {0.414527, 0.111164}, {0.569160, -0.332882}, {-0.740114, -0.838751}, {-0.811449, 0.332958}, {0.165041, -0.548386}, {0.586089, 1.162788}, {-0.441744, 0.705830}, {0.345507, 0.417786}, {-0.150969, -0.217414}, {0.980970, -0.395728}, {0.202029, 0.053837}, {-0.567949, -0.756414}, {0.838055, -0.962655}, {0.185033, -0.842624}, {0.505452, -0.230980}, {0.500792, -1.312236}, {0.098343, 0.520689}, {-0.927027, -0.045385}, {0.569641, 0.548063}, {-0.798887, 1.354409}, {-1.055338, 0.516666}, {-1.035704, 0.360430}, {-0.184264, 0.067661}, {0.570477, 0.590137}, {0.551827, 0.899930}, {0.533855, 1.304288}, {0.350958, -0.358284}, {-1.384382, -0.753483}, {0.601123, -2.156966}, {-0.554389, 0.059956}, {-0.871086, -0.106200}, {0.558179, 0.180493}, {0.531430, -0.025180}, {-0.795320, 0.260424}, {0.692222, -0.238340}, {0.169459, 0.823660}, {0.299030, 0.761034}, {-0.698652, -0.351722}, {0.368231, 0.434130}, {0.185790, -1.403230}, {-0.799883, -0.119406}, {0.736042, 0.392089}, {-0.666826, -0.832812}, {-0.513339, 0.050691}, {-0.587525, 0.355240}, {-0.517997, 0.850523}, {-0.899883, 0.695032}, {-0.206738, 0.938988}, {-0.699376, -0.248451}, {0.788660, -0.329191}, {-0.803143, 0.755641}, {-0.347574, -0.096980}, {0.655063, -0.198669}, {0.324775, -0.654269}, {0.921286, -0.437049}, {0.744575, -0.148011}, {-1.499490, 0.208673}, {1.813010, 1.936063}, {-0.330382, 0.942141}, {-0.175160, 0.095578}, {-0.688972, 0.621992}, {-0.710787, 0.337475}, {0.082558, -0.051458}, {0.108929, -1.049616}, {0.411274, 0.385344}, {0.016239, -0.562674}, {0.921934, 0.406952}, {0.524669, -0.237757}, {-0.660776, -0.152646}, {-0.149333, 0.000891}, {-0.254695, -0.615310}, {-0.756202, 0.840237}, {-0.309718, -0.633714}, {-0.218646, -1.024427}, {-0.085284, 0.238786}, {-0.127700, -0.176234}, {0.641768, -0.561286}, {-1.032711, -0.515069}, {1.363094, -0.095828}, {1.534582, 0.380000}, {0.805601, 0.320919}, {0.701193, -0.161937}, {0.262605, -0.457002}, {0.345692, -0.485455}, {0.973676, 1.050191}, {0.563517, -0.896698}, {-1.052935, -0.655316}, {-0.231460, -0.146481}, {-0.979474, 0.060279}, {-1.088586, -0.421800}, {0.161069, 1.003289}, {0.090253, -0.088947}, {-0.547361, -1.206487}, {0.246441, 1.106913}, {-0.706636, -0.015038}, {0.132891, 1.002612}, {-0.295681, 0.231105}, {-1.153732, -0.996986}, {-0.501629, -0.644197}, {0.295345, -0.691762}, {-1.440078, -0.607401}, {0.101169, 0.934845}, {0.071043, -0.644190}, {0.614922, -0.503042}, {1.037925, -0.411965}, {-0.852186, 0.229310}, {0.299200, -0.324206}, {-0.088801, -0.474293}, {-2.187987, -0.562442}, {0.874113, -0.747951}, {0.575873, -0.728991}, {-0.846189, 0.157840}, {-1.429388, 0.899668}, {0.146948, -0.004011}, {1.408618, -0.212564}, {-0.215899, -0.253146}, {1.498321, -0.772136}, {-0.877108, -0.120817}, {1.817143, 0.201466}, {-0.209176, 0.538539}, {1.517331, -0.539165}, {-0.251656, 0.628209}, {-0.629867, 1.537735}, {0.022098, 1.206070}, {-0.360631, -0.347506}, {0.752599, 0.256274}, {0.417381, -0.329550}, {-1.519437, -1.728036}, {-0.414089, -0.630542}, {-0.364826, 0.403330}, {0.581478, 0.594084}, {0.663563, 0.961159}, {0.825272, 1.573900}, {-0.367023, -0.988905}, {-0.073497, 0.708838}, {1.148249, -0.415716}, {-0.101004, 0.106337}, {-0.928442, -1.408122}, {0.469680, -0.047484}, {-0.960126, -0.904661}, {-1.132264, -0.188708}, {-0.016658, -0.199830}, {-1.075654, -0.338366}, {0.061431, 1.126846}, {-1.081800, -0.415970}, {1.123256, -0.127503}, {-1.145737, -0.191834}, {-0.793043, -0.118410}, {-1.196367, 1.014650}, {1.527032, -1.381034}, {0.647338, -0.080257}, {-0.804731, 0.453449}, {-0.516077, 0.480638}, {0.530282, -0.739929}, {0.269033, -1.963435}, {1.477697, 0.784988}, {0.311743, 0.788590}, {-0.325671, 0.653941}, {-0.233521, -0.206602}, {-0.278201, 0.128288}, {1.135366, -1.284597}, {-0.763170, -0.012900}, {0.438701, 0.811553}, {-0.249020, -0.316173}, {0.561871, -0.138876}, {0.726334, 1.041021}, {0.098118, -0.710592}, {-0.572228, 0.067081}, {0.734250, 0.106212}, {-0.105387, 0.013023}, {-0.089425, 0.237119}, {-0.955892, 0.328177}, {-0.219179, 0.170715}, {0.931844, -0.349402}, {-0.006197, -1.310244}, {1.151184, 0.469394}, {1.308615, 1.117283}, {-0.431605, 0.200205}, {0.191977, -0.367832}, {0.236475, 0.821365}, {-0.941490, 0.282290}, {-0.006772, 0.760460}, {0.184771, -0.364421}, {-0.329091, -1.396452}, {-0.459936, 0.172703}, {-0.153217, 1.302087}, {0.098202, -0.527384}, {-1.355245, 0.009842}, {-0.924139, 0.157557}, {-0.100397, -0.408893}, {0.217141, -0.593144}, {-0.156430, 1.211818}, {0.011004, -0.314417}, {0.131301, -0.060106}, {0.399402, -0.219055}, {0.392387, -0.631019}, {-0.341266, 0.461355}, {0.426031, -0.852869}, {-0.101110, 0.790776}, {-0.436091, 1.765631}, {0.568398, 0.767510}, {-0.271711, -0.480995}, {-0.249560, -0.882825}, {-0.381369, 1.034425}, {-0.503866, 0.598387}, {0.876082, -1.385329}, {0.063173, 0.213468}, {0.543796, -0.225159}, {-0.032141, 0.017681}, {0.493171, 0.162913}, {0.686035, 0.268915}, {0.175293, 1.136665}, {0.157721, 0.697172}, {-1.127321, 0.592262}, {0.166970, -0.343138}, {0.194866, 0.189738}, {-0.288449, 1.476208}, {-0.421817, 1.014786}, {0.126023, -0.775427}, {0.394521, -0.989582}, {-1.089528, -0.055308}, {0.200147, 0.011439}, {1.903990, 0.358153}, {0.664392, -0.905588}, {0.539781, 0.841634}, {0.582682, 0.671146}, {-0.024278, -0.572103}, {0.185635, -0.697631}, {0.106066, 0.699490}, {0.246818, 0.300906}, {1.189828, -0.227730}, {-0.013825, -0.769516}, {-0.684393, 0.018085}, {1.218080, -1.701471}, {0.424389, -0.592234}, {1.403248, -0.017446}, {0.013415, -0.977801}, {0.369274, 0.430111}, {0.381919, 1.117175}, {0.816133, -0.715540}, {0.035215, -0.105043}, {0.556964, -0.135119}, {-0.673203, 1.053060}, {-0.516621, 0.494257}, {0.450111, -0.035975}, {-0.421140, 1.411773}, {-0.535489, 0.037563}, {-0.574600, -1.377926}, {0.032767, -0.640636}, {-0.459555, -0.203066}, {-0.434567, 0.545250}, {0.650357, 0.652128}, {-0.892425, 1.283559}, {0.692184, 0.557113}, {0.751736, -0.211262}, {0.313737, -0.163152}, {-0.247115, -0.034955}, {0.491416, -1.537278}, {0.930530, -1.108210}, {-0.556112, -1.391934}, {-0.961302, 0.326983}, {1.662905, -0.278552}, {-0.313318, -1.433712}, {-1.000577, 0.559144}, {0.216728, 0.878720}, {0.487019, -0.649528}, {-0.623891, -0.371940}, {-0.040803, 0.208126}, {0.315032, 0.149693}, {-0.198370, -1.011750}, {-0.824018, 1.104106}, {-0.353701, 0.822379}, {-0.123394, -1.055204}, {-0.737870, -0.757284}, {-0.634799, -0.464904}, {-1.763571, -0.369890}, {0.047103, 0.948021}, {0.847644, 0.119019}, {0.504559, -0.136831}, {0.049168, 0.250676}, {-0.407130, 0.581465}, {-0.424114, -0.237635}, {-0.576690, -0.447438}, {-0.534590, -0.285313}, {-0.525026, 0.509418}, {0.991170, 0.776430}, {0.082037, -0.154868}, {-0.738468, 1.113500}, {-1.376870, -0.237227}, {0.182010, 0.599488}, {-0.012601, 0.360641}, {-0.874033, 0.846574}, {-0.453102, 0.527465}, {-0.140117, 0.979272}, {0.469908, -0.563083}, {0.494906, 0.205413}, {-0.152124, 1.445632}, {-1.070697, -0.417032}, {0.620584, 1.098607}, {0.647829, -0.212808}, {0.329902, 0.206018}, {0.769611, 0.068876}, {0.595618, -1.179969}, {0.134816, 1.155849}, {0.132816, -0.826840}, {-0.204456, -0.005218}, {0.565919, -0.406434}, {1.076761, 0.279015}, {-0.824357, -0.318681}, {0.536584, 1.190336}, {-0.837780, -0.783722}, {-0.365623, -0.592565}, {0.140732, -0.354577}, {-0.318893, 0.197879}, {-0.650844, 0.142190}, {0.611141, -0.819490}, {0.824394, -1.997252}, {1.188414, -0.772520}, {0.495803, 0.456638}, {-0.793332, 1.358671}, {-1.208357, 0.747812}, {0.639802, -0.096943}, {0.128095, -0.588363}, {0.114812, 0.593784}, {-0.189818, -0.088502}, {-0.281234, 0.074641}, {-0.318011, 0.468384}, {-0.032031, 0.092814}, {0.280203, 0.824080}, {0.375190, 0.631836}, {0.434939, -0.102007}, {-0.537006, -1.514559}, {0.203213, -0.319343}, {-0.141183, -1.038148}, {-0.218501, -0.477195}, {-0.338538, -0.751898}, {-0.686068, 0.283823}, {0.062352, 1.559887}, {-0.241352, -1.511161}, {0.720157, -0.832961}, {0.558763, -0.548703}, {0.263548, 0.902844}, {0.842079, -0.167704}, {-0.542509, 0.454977}, {0.903157, 0.620579}, {0.964410, 0.047286}, {-0.955672, 0.944376}, {0.860074, 1.300853}, {0.512725, 0.794600}, {-0.450602, 0.516415}, {-0.447504, 0.181518}, {-0.437303, 0.401800}, {-0.578495, -0.043247}, {0.617911, -0.345819}, {-0.552715, -1.044463}, {-0.867800, -0.875333}, {0.481378, -0.046626}, {0.191387, -0.016629}, {-0.518826, -0.671362}, {-0.076694, 0.392508}, {0.019799, -0.500523}, {1.539289, 0.191522}, {0.268896, 0.472991}, {-0.122127, -0.508825}, {0.314364, -0.019904}, {-0.144547, 0.440958}, {0.265538, 0.198174}, {0.863341, -0.176679}, {0.122943, -0.154642}, {0.043506, 0.107960}, {0.099631, -0.078301}, {-0.560396, 0.316725}, {1.286545, 0.635450}, {-0.358192, -0.438848}, {1.039133, -0.132411}, {1.186643, 0.405783}, {-1.001651, -0.156892}, {-1.179719, -0.490621}, {-0.721972, 0.717535}, {-1.029560, -0.455562}, {-0.077975, 0.563804}, {-0.813295, 0.621995}, {0.618189, 0.598485}, {-1.199978, -0.777894}, {-0.290504, 0.990481}, {-0.031754, 0.345115}, {-0.368322, 1.005785}, {0.599679, -0.895852}, {-0.590234, -0.096684}, {-0.496663, -0.691375}, {0.088853, 0.700215}, {-0.183732, 0.242244}, {-0.643606, -0.335184}, {0.121277, -0.906499}, {0.241237, 1.352691}, {-0.254636, -0.459023}, {-0.621434, -0.262442}, {-1.261593, 0.823850}, {0.524973, 0.145684}, {0.664583, -0.298579}, {0.609610, -0.078780}, {0.203934, -0.123287}, {-0.774268, -0.471319}, {-0.207046, 1.271445}, {-0.236533, -0.485094}, {-0.597981, 1.115511}, {-0.406298, 0.760957}, {0.694472, -0.379866}, {-0.372914, 0.292032}, {0.784017, 0.922657}, {0.297901, 0.163029}, {-0.904827, -0.819312}, {0.561786, 0.562537}, {-0.239547, 0.126229}, {-1.407316, -0.320167}, {-0.134303, -1.366530}, {-0.531725, -0.336818}, {0.623285, 0.322439}, {-0.335097, 0.897800}, {0.695935, -0.312405}, {0.095367, 0.409572}, {-0.765337, -0.211423}, {-1.131867, -0.623383}, {-0.267968, -0.286704}, {-0.404970, -0.309191}, {1.379609, 0.251604}, {0.331291, 0.143124}, {-0.913650, 0.804486}, {-1.218644, 0.871913}, {0.039236, 0.744136}, {1.449769, 0.975760}, {-0.210467, 0.262295}, {0.405987, 0.424655}, {0.999384, 0.627690}, {1.164600, 0.133861}, {-0.175488, 1.427081}, {-1.744108, 0.555451}, {0.302610, -0.688230}, {-0.529522, -1.322584}, {-0.223304, -0.289473}, {0.668378, 0.179522}, {0.084177, 0.492469}, {0.266502, -0.068043}, {0.764533, -0.106614}, {-0.317832, 0.270595}, {-0.444143, -0.228776}, {0.108340, -0.373711}, {-0.027397, -0.010145}, {-0.613227, 0.902768}, {-0.557055, 0.429239}, {0.373258, -0.228158}, {-0.631503, -0.356203}, {0.643938, -0.284783}, {-0.784050, -0.572626}, {-0.207974, -0.145033}, {0.006310, 0.173822}, {-0.106005, 0.111244}, {2.363675, -0.471391}, {0.972607, 0.013920}, {1.130367, -0.608325}, {-0.479318, -0.017402}, {-0.647306, 0.746952}, {1.365227, 0.174166}, {0.586382, -0.751731}, {-0.467157, 1.701264}, {-0.531539, 0.869207}, {-0.610338, 0.132307}, {0.356638, 0.108132}, {-0.568649, -0.676443}, {0.089214, -0.008608}, {-0.984149, 0.709467}, {0.597348, 0.413095}, {0.139796, 1.022797}, {-1.032483, -0.315232}, {0.021779, -1.284263}, {0.891663, -0.443996}, {-0.684480, -0.817773}, {0.401035, 0.351907}, {0.217196, -0.252169}, {-1.349881, -0.517501}, {0.816430, -0.091990}, {-0.502108, -0.698291}, {-0.086025, 0.915485}, {-0.682122, -0.322046}, {0.706000, 0.763462}, {0.796854, 0.455243}, {1.366467, 1.196075}, {0.417067, -0.256263}, {0.015371, 0.451181}, {-0.400583, 0.178607}, {0.179912, -0.117066}, {0.597156, -0.688654}, {-0.661676, -0.820197}, {0.085683, -0.217177}, {-0.706450, -1.381830}, {0.028548, 1.200703}, {-0.920667, 0.289784}, {0.160350, -0.351146}, {-0.804724, -0.618602}, {0.024888, 0.647150}, {-0.098113, 0.173361}, {0.697754, 0.291105}, {-1.408036, 1.022388}, {0.469920, 0.445517}, {0.384059, 0.532228}, {-0.151818, 0.944132}, {-0.090433, 0.327546}, {-0.879679, -1.070965}, {-0.495967, 0.063480}, {-0.358409, -0.789978}, {-0.699352, -0.883109}, {-1.947079, 0.913473}, {-0.641222, -0.030654}, {-1.419634, -0.263358}, {-0.287427, 1.075618}, {1.041925, 0.333373}, {1.035917, -0.384391}, {-0.742460, 0.756039}, {0.484778, 0.439710}, {-0.454690, -0.553386}, {-0.860744, -0.035129}, {-0.063566, 0.489990}, {0.107992, 0.565035}, {-0.016311, 0.236242}, {0.309996, 0.522161}, {0.839932, 1.127528}, {0.213453, -1.064570}, {-0.716013, 0.561550}, {-0.277888, -0.545995}, {-0.080229, -0.275056}, {-1.231363, -0.438038}, {-0.221378, 1.152323}, {0.465562, -0.015422}, {-0.636983, -1.776097}, {0.994972, 1.153935}, {-0.840363, -1.044283}, {-0.147775, -0.659287}, {-1.008426, 1.195206}, {0.221680, 0.312210}, {0.391826, 0.267132}, {-0.300629, 0.352818}, {1.088779, 0.848130}, {-0.087740, -1.562253}, {-0.636828, 0.356063}, {0.255724, -0.928242}, {0.197228, -1.313775}, {-0.363243, -0.477933}, {0.342319, 1.332603}, {-0.687342, -0.697300}, {0.588366, -0.220649}, {0.718963, 1.534212}, {0.378261, -0.815048}, {0.008267, -0.048339}, {-0.337132, -0.394747}, {-0.429718, -1.955695}, {0.422312, 0.648188}, {-0.225384, -1.038982}, {-0.074649, -0.432788}, {1.197830, 0.224400}, {0.179256, 0.174055}, {0.324657, -0.153234}, {-0.008755, -0.720614}, {1.171336, 1.386902}, {-0.502534, 0.544987}, {-0.874559, -0.045977}, {0.641911, 0.309244}, {-0.852252, -0.189481}, {0.905778, -0.240689}, {0.805296, 0.190095}, {0.583950, 0.500505}, {0.927808, -0.289025}, {-0.161069, -1.142641}, {-0.829648, -1.067679}, {0.160495, -0.177610}, {-0.669901, 0.538416}, {-0.417880, -0.610111}, {-0.641121, 0.118270}, {-0.307481, 0.182497}, {-0.098936, -0.300794}, {0.079945, -1.126696}, {0.767377, -0.205567}, {-0.229164, -0.681283}, {-0.938784, 0.869544}, {0.729480, -0.893640}, {0.318684, 0.291873}, {-0.063858, -1.269459}, {-0.394907, 0.032640}, {0.041145, -0.695384}, {0.903121, -0.762764}, {-0.236944, -1.403906}, {0.010014, -0.107070}, {-0.144645, 0.624289}, {0.889531, -0.018986}, {0.956051, 1.297021}, {-0.096103, -0.738099}, {-0.795984, -1.097452}, {-0.394740, 0.151985}, {0.109809, -0.515633}, {1.331729, -1.680084}, {1.546974, 0.279037}, {-1.785160, -0.221012}, {0.122575, -0.919889}, {-0.788030, 1.561325}, {-0.205935, 0.088416}, {-0.265662, 0.431570}, {0.115537, 0.899615}, {0.471598, 0.669058}, {-0.214156, 0.254611}, {0.970194, 1.044374}, {-0.486194, 0.026669}, {0.232387, 0.010928}, {0.162715, 0.243238}, {-0.554603, 0.305242}, {0.050873, 0.089235}, {0.866591, 0.431844}, {-0.137254, 0.419949}, {-0.444023, -0.814751}, {0.405856, 0.278733}, {-0.006847, -0.084791}, {0.661887, 0.366497}, {0.036938, -1.474893}, {0.074623, 0.527883}, {-0.932561, -1.217377}, {-0.579955, -0.770222}, {0.496777, -0.398753}, {0.415390, 0.029064}, {-0.368869, 0.318877}, {-0.083926, 0.115238}, {-0.165148, 0.315531}, {-0.201764, -1.548454}, {-0.837318, -1.399309}, {0.078016, -0.732903}, {-0.094333, -0.160290}, {0.732228, -1.029345}, {0.690766, 0.425063}, {-0.896572, -0.514863}, {0.781318, -0.797095}, {-0.121511, 0.255802}, {1.919578, -0.769384}, {-0.060926, 0.430455}, {-0.409906, -0.249459}, {-0.460218, -0.783980}, {-0.191177, 0.609070}, {1.020451, -0.427484}, {0.388170, -0.559406}, {0.583320, 0.030542}, {-1.179019, 0.739794}, {1.513305, 0.344903}, {-1.082705, -0.638275}, {-0.426897, 0.254435}, {-0.481466, 0.047423}, {0.330028, -0.364721}, {0.571710, 0.131679}, {0.796521, -1.303731}, {-0.192941, -0.043661}, {-0.182032, 1.445423}, {-0.370906, 0.132620}, {1.865372, -0.256694}, {0.122110, -0.042592}, {-0.484049, 0.625328}, {0.498676, -0.447230}, {-0.698297, -0.450146}, {0.197802, 0.388351}, {-0.270285, 0.053455}, {0.113784, -0.200340}, {0.144229, 0.267333}, {0.085266, 1.105437}, {-0.021050, 1.100430}, {1.668020, -1.591069}, {1.074784, -0.878131}, {-0.687458, -1.410101}, {0.945055, 0.057837}, {-0.968993, -0.249526}, {-0.095768, -0.004312}, {0.539684, -0.120041}, {-0.690336, -0.784441}, {-0.070364, 0.818636}, {0.306879, -0.280708}, {-0.072888, 0.404632}, {-1.158507, 1.076282}, {-1.311557, 0.016792}, {-1.276006, 0.450810}, {0.052812, -0.238705}, {1.449476, -0.258773}, {-0.935995, -0.005463}, {-0.355631, 0.492401}, {-0.612492, 0.524131}, {0.838550, 0.621703}, {0.198766, -1.213802}, {0.114797, -0.883231}, {0.323205, -0.912574}, {-0.492987, 0.031387}, {0.613420, -1.264507}, {-0.452913, -0.543444}, {0.252574, 0.848988}, {0.177081, 1.145831}, {-0.172781, -0.088674}, {-0.380519, -0.210205}, {-0.333186, -1.162848}, {0.424112, -0.009379}, {-0.876016, 0.594356}, {0.191680, -0.347826}, {-0.001609, -0.647491}, {-0.410415, -0.735499}, {-0.001733, -0.310524}, {-0.323841, 0.482596}, {-0.242955, 0.027559}, {0.502454, 0.491188}, {0.014760, 0.136650}, {0.969240, -0.064603}, {-0.230129, -0.410373}, {0.068982, 0.158729}, {-0.264938, 1.121409}, {-0.330733, -1.289736}, {-0.310857, -0.416680}, {-0.995101, 0.426949}, {0.044670, -0.644963}, {-0.370186, -0.419359}, {-0.198722, 0.626537}, {0.250446, -0.321014}, {-0.199294, 0.428196}, {0.287559, 0.661812}, {-0.819334, -0.182923}, {0.627230, 0.073635}, {-0.254799, 0.086437}, {0.629778, -0.238849}, {-0.214531, -0.833867}, {-0.370971, -1.340886}, {-0.838782, 0.085272}, {0.699287, 0.326143}, {0.969557, 0.265905}, {0.224255, 1.026885}, {-0.705422, 0.039940}, {2.677294, 0.824637}, {-0.872479, 0.726054}, {-0.356049, -0.644072}, {1.247068, -0.283382}, {-0.052734, 0.460700}, {-0.219080, -0.773459}, {-0.404964, 1.015079}, {-0.613011, -0.740705}, {-0.224677, 0.053237}, {0.894221, 0.740370}, {1.156185, -0.712990}, {0.292658, -0.216708}, {-0.066752, 1.055119}, {1.357077, 0.220257}, {0.460298, 0.433686}, {-1.604282, 0.281681}, {0.013828, -0.330717}, {0.170076, -0.933305}, {1.041761, -0.252779}, {-0.246114, -0.576060}, {1.480525, 0.007697}, {0.441859, 0.826016}, {0.295619, -1.276915}, {0.915688, 0.319889}, {0.022048, 0.222383}, {1.378602, -1.120309}, {-0.027128, 0.227251}, {-0.029159, 0.234012}, {-1.232345, -1.709367}, {0.443828, 0.107305}, {-0.853740, -1.028442}, {0.423166, -0.208449}, {0.437276, 0.123764}, {-0.405086, -0.566809}, {-0.459850, -0.615080}, {0.015966, -0.560154}, {-0.524545, 0.824488}, {0.590298, 1.680262}, {-0.074765, 1.037196}, {1.410833, -0.872378}, {0.595534, -0.084257}, {0.283239, -0.652858}, {-0.046879, -0.046124}, {-0.369435, 0.393944}, {1.852725, 0.076027}, {-1.092554, -0.019375}, {-1.380574, -1.233999}, {0.377688, 0.527289}, {-0.179858, 0.250972}, {0.411598, 0.469015}, {0.284770, -0.983034}, {0.950896, -0.086210}, {0.315096, 0.753994}, {-0.153846, -0.582036}, {-0.642368, -0.187750}, {0.048072, 0.639136}, {-0.556765, -1.105212}, {0.180486, -0.178092}, {0.924552, -0.298329}, {-0.232289, -1.459794}, {-0.210924, -0.352326}, {-0.743565, 0.331766}, {0.804067, -0.756999}, {-1.120228, 1.402332}, {-0.563865, -0.766699}, {-1.241026, -0.016935}, {-1.083249, 0.663982}, {-0.696610, 0.197940}, {0.240815, -1.001368}, {0.338313, -1.016316}, {-0.333358, -0.619444}, {0.114418, -0.274406}, {-0.048887, 0.026654}, {0.319559, -0.940490}, {-0.772192, -0.627506}, {0.732077, 0.628962}, {-0.517531, -0.461387}, {0.366764, -0.719179}, {0.537746, 0.869680}, {0.349716, -0.212016}, {-1.339703, 0.494797}, {-0.261270, 0.480154}, {-1.071839, -2.066688}, {-0.370999, -0.038925}, {-0.747227, 0.085586}, {-0.942602, -0.057338}, {-0.072358, 1.097723}, {-0.205848, -1.136328}, {0.597227, 0.197329}, {0.676518, 0.381645}, {-0.874854, -0.479414}, {-1.999738, -0.565455}, {-0.664048, -0.574682}, {0.186569, 0.411274}, {-0.110267, -0.357864}, {0.302705, -1.743357}, {-0.319344, -0.476152}, {-0.640334, -0.720226}, {-0.910033, -0.422789}, {-0.208408, 0.548207}, {-0.964300, 0.002179}, {0.824444, 0.424217}, {-1.032269, -0.762202}, {0.105175, 0.447058}, {-0.012006, 0.049305}, {-0.937920, 0.289750}, {-1.253273, 0.757789}, {-0.762061, 0.328438}, {-0.241415, 1.027135}, {0.243270, 0.013979}, {-1.109143, -0.208914}, {0.090512, -0.386316}, {1.503883, 0.622403}, {0.175205, 1.011719}, {0.386237, -0.727356}, {1.030490, -0.207293}, {-0.934681, -0.637268}, {0.390874, 0.381332}, {0.183902, 1.098244}, {-0.785477, 1.103963}, {0.665390, 0.256809}, {0.263688, -0.503673}, {-0.166081, -0.926605}, {-0.557337, 0.532023}, {-0.195427, 1.271505}, {-0.474249, 0.447195}, {0.443875, 1.233854}, {-0.269777, -0.979940}, {-0.022060, 0.544843}, {0.313713, -0.853284}, {-0.096390, 2.008847}, {0.439922, -0.335096}, {0.896690, -0.588963}, {-0.844743, 0.183750}, {0.781349, -0.755606}, {-0.765362, 0.170504}, {-1.628206, -0.216829}, {0.500102, -0.059625}, {-0.304791, 0.107158}, {0.557697, -0.477804}, {0.583642, 0.627863}, {-0.121640, -0.409209}, {-1.120829, -1.076884}, {-0.536931, 0.178972}, {-0.417448, -0.458302}, {0.718477, -1.059868}, {0.610038, -0.423881}, {0.999029, -0.368049}, {-0.197010, 0.618818}, {-0.092802, 0.280660}, {-0.884475, 0.746423}, {-0.218251, 0.164965}, {-0.421409, 0.312894}, {-0.658414, 0.399046}, {0.745212, -0.200538}, {0.941667, -0.785267}, {0.521849, 0.859422}, {-0.473471, 0.762251}, {0.397426, -0.176657}, {-0.323150, 0.760653}, {-0.998414, 1.716395}, {0.740360, -0.938944}, {0.023348, 1.116443}, {1.069598, -0.382364}, {-1.043662, 0.236812}, {-0.382172, -0.980040}, {-0.349019, 0.364638}, {-0.298100, -1.107602}, {0.456000, 0.116486}, {0.877536, 0.868085}, {0.048209, -1.069550}, {0.661781, -1.278720}, {0.359336, 0.813250}, {-0.123966, -0.468063}, {0.430191, 0.023114}, {-0.135566, -0.319366}, {0.968871, -0.115512}, {-0.394328, -0.170491}, {-0.009694, -1.061476}, {0.046248, -0.139918}, {0.368727, 0.177700}, {0.414373, -0.767674}, {0.759806, 0.895111}, {-1.039452, -0.596694}, {0.098206, 0.950569}, {-1.174535, -0.768597}, {0.623601, -0.766489}, {1.209239, -0.052878}, {-0.452015, -0.009341}, {0.690382, 0.542857}, {-0.108723, 0.123140}, {-0.529691, 0.324165}, {1.478203, -0.911289}, {1.068649, -0.374113}, {0.299869, 0.396780}, {0.430316, 0.155351}, {0.013919, -0.121839}, {0.039700, 0.017585}, {-0.571082, -0.704321}, {-0.736133, 1.469112}, {0.703268, -0.091642}, {0.386893, 0.603817}, {0.172514, -0.849675}, {0.607745, 0.054904}, {0.271231, -0.590061}, {0.913552, -0.116009}, {-1.138750, 0.486391}, {-0.076353, -0.638643}, {-0.498974, 0.588957}, {-0.246757, -1.191164}, {-0.997522, 0.317823}, {-0.041872, 0.542933}, {1.096147, 0.311412}, {-0.397941, -0.073418}, {-0.674415, -0.476303}, {0.129485, -0.144863}, {-0.320564, -0.468116}, {-0.409642, -0.561575}, {0.221420, -0.215094}, {-0.958367, 0.609774}, {-0.465613, 0.040251}, {0.382094, -1.384503}, {0.918899, 0.048990}, {-0.078886, 0.735926}, {-0.090336, -0.471819}, {-0.263712, -0.599983}, {0.620502, -0.130819}, {-0.335282, 0.318506}, {0.052591, 0.963759}, {-0.671888, 0.668188}, {-0.372171, -0.042465}, {0.471828, -0.469881}, {-0.393130, -1.355191}, {0.245535, -0.797273}, {-0.293227, -0.997773}, {-0.191794, -0.927120}, {0.484915, -1.363790}, {0.318464, 0.435871}, {-0.854547, -0.351262}, {-0.218097, -0.360717}, {0.263629, -0.076017}, {-0.414797, 0.096633}, {0.897394, -0.109831}, {0.962227, -0.804732}, {0.151329, 1.627499}, {0.990435, 0.235665}, {0.290903, 0.311037}, {0.160010, -0.053403}, {-0.069998, 0.302710}, {0.084036, 0.853274}, {0.560929, -0.560850}, {-0.106112, 0.314448}, {-0.421578, -0.268470}, {-0.785387, -0.750187}, {-1.189174, -0.084856}, {0.466530, 0.976102}, {0.880929, -0.457008}, {-0.729195, -0.675082}, {0.104374, -0.633442}, {0.757444, -0.949991}, {0.008917, 0.692426}, {-0.338838, 0.532756}, {0.794670, 0.717730}, {-0.709404, 1.043684}, {0.579162, 0.487640}, {-0.404886, 0.060629}, {1.349450, -0.355399}, {0.770612, -1.464736}, {0.347219, 0.274775}, {0.354646, -0.020434}, {0.465359, -0.985538}, {0.385781, 1.068191}, {-0.106262, 1.103081}, {-0.599815, -0.997276}, {-0.492767, -0.081408}, {-0.245567, 0.057807}, {0.120883, 0.308476}, {-1.143013, -0.054048}, {0.398061, 0.717026}, {-0.600222, 0.456605}, {-0.984594, -0.328664}, {0.330060, 0.028399}, {0.273902, -1.559059}, {0.491818, 0.871726}, {-0.827789, -0.540048}, {0.065844, 0.068222}, {-0.808401, 1.160869}, {-1.274150, -0.355051}, {0.561683, 0.271525}, {-0.413291, -0.224445}, {-0.344482, -0.270754}, {-0.669051, 0.246237}, {-0.049024, -0.250489}, {0.977734, -0.366526}, {-0.742840, 0.329251}, {-0.793661, -0.540377}, {-0.164454, -0.041182}, {0.796305, -0.095571}, {-0.168732, 0.018351}, {-0.010513, 1.211849}, {-0.994831, -0.709750}, {-1.282949, 0.285938}, {0.864976, 0.026893}, {-0.160674, -0.991054}, {0.235256, 0.436919}, {1.212801, -0.909780}, {0.529844, 0.976362}, {0.946160, -0.680521}, {0.094877, 0.672648}, {-0.675454, -0.322118}, {0.305372, -0.550007}, {0.912401, 1.035879}, {1.131467, -0.138706}, {-0.253731, -0.964860}, {0.051329, -1.529624}, {-0.113924, 0.173806}, {0.884102, 0.159153}, {-0.227632, 0.877234}, {1.010051, -1.543880}, {0.809937, -0.173659}, {0.332144, -0.243052}, {-0.906095, 0.676593}, {0.073033, -1.548259}, {0.458666, 0.050823}, {-0.289121, 1.068049}, {-0.383643, 0.011142}, {0.134420, 0.076707}, {0.466514, -0.043312}, {0.438283, -1.522376}, {0.163508, -0.193750}, {0.487026, 0.542501}, {-0.200524, 0.459230}, {0.262819, 1.505884}, {0.653087, -0.201042}, {0.233565, -0.547870}, {-1.017089, 0.878535}, {0.228269, -0.679254}, {1.248531, -0.791408}, {0.439579, 1.697946}, {0.592039, -0.339903}, {-0.109908, 0.453321}, {-1.115247, 0.010700}, {-0.164818, 1.131623}, {2.025510, -0.505251}, {-0.309346, -1.373256}, {0.537120, -0.360283}, {-0.104894, 0.296882}, {0.024801, 0.978248}, {-0.937777, -1.070944}, {-0.198826, -0.783295}, {-1.127480, -0.610347}, {0.298001, 0.024948}, {0.145368, 0.794536}, {0.612907, -0.059654}, {0.782929, -0.048403}, {-0.435378, -1.436197}, {0.169811, 0.516786}, {-0.116510, 0.319035}, {0.538300, 0.841565}, {-0.155311, 0.492565}, {0.620200, 0.730660}, {-0.015916, 0.419497}, {0.164181, -1.630272}, {0.824648, 0.320043}, {-1.560239, 0.572704}, {-0.252823, 0.296962}, {-0.746081, 0.958339}, {0.082239, -1.217646}, {-0.567736, 0.000241}, {0.427482, 0.476159}, {-0.459043, 1.161889}, {0.254120, -0.488463}, {-0.023313, -0.723543}, {-0.293002, -0.169112}, {0.089490, -0.261529}, {0.247961, 0.791363}, {-1.110516, -0.166830}, {0.983670, -1.198302}, {0.519375, -0.785171}, {-0.619925, 0.150262}, {0.569926, 0.149914}, {0.719057, -0.514677}, {0.458531, -0.475477}, {0.571393, 1.036797}, {-0.827266, -1.069063}, {-0.208821, 0.601468}, {0.601543, -0.246378}, {-0.545977, -0.481944}, {-0.142618, -0.493885}, {0.104624, -0.885512}, {-0.806208, -1.172703}, {-0.327891, -0.764616}, {-0.111412, 0.778570}, {-0.025417, -0.823612}, {-0.064253, 0.146300}, {0.897841, 0.233453}, {0.170462, -0.208221}, {0.469815, 0.534622}, {0.464492, 0.082733}, {0.852167, -0.277563}, {0.042076, -0.252323}, {-0.639666, -0.218750}, {0.344882, -0.710013}, {-0.897684, 0.020080}, {0.969355, -0.131562}, {-1.412936, 0.152039}, {0.762647, -1.063394}, {-0.706248, -0.458628}, {-0.193334, 0.251486}, {-0.278574, -0.609158}, {-0.000444, 0.167283}, {-0.191255, -0.598270}, {0.113407, 0.082497}, {1.361065, 0.155568}, {-0.171486, 0.161889}, {1.639261, -0.316890}, {-0.129987, -0.110577}, {-0.802764, 1.330457}, {-0.147106, 0.095728}, {0.820872, 1.110744}, {-0.391447, 0.136340}, {0.927357, 0.908692}, {1.225880, -0.741652}, {0.166896, -2.018048}, {-0.072197, -0.734190}, {-0.188537, 0.562295}, {-0.419001, 0.597966}, {1.012061, -0.032231}, {-1.265661, -0.098692}, {-0.363672, 0.493087}, {-1.277901, 0.568014}, {0.094125, 0.641038}, {0.366210, -0.871913}, {-0.406243, 1.248265}, {-0.265139, 0.291993}, {-0.711300, -0.517739}, {0.551969, 0.211300}, {0.863097, 0.620748}, {-0.791252, 0.292823}, {-0.859584, -0.514999}, {-0.222594, 0.242104}, {-0.529240, 1.091900}, {0.056589, -0.206772}, {-0.206678, 0.117667}, {-0.372107, 0.346623}, {0.197375, 0.175770}, {0.109383, -0.285298}, {-0.128606, -0.575351}, {-1.350885, -0.629351}, {-0.549311, -0.890107}, {-0.052058, -0.399744}, {0.117226, -0.822548}, {-0.522921, -0.747784}, {0.696853, 0.225147}, {1.404505, 0.031853}, {-0.199716, 0.923465}, {-0.366027, -0.965298}, {0.254400, 0.565191}, {0.720813, -0.011776}, {0.048742, 0.485636}, {0.463885, -0.445094}, {-0.354658, -0.258331}, {-0.512308, 0.875492}, {0.109512, -0.704183}, {-0.359123, -0.222049}, {2.094077, -0.596104}, {0.099119, 0.151596}, {1.272189, -0.870022}, {-1.203661, 0.080126}, {-0.402370, -0.038618}, {-1.465566, 0.187786}, {-0.188615, -0.551253}, {-0.144342, -0.651031}, {0.466536, -0.902577}, {0.442013, -0.756855}, {0.651331, 0.059349}, {-0.580323, -0.556246}, {1.443369, 0.532876}, {-0.410520, 0.142482}, {-0.638481, -1.620247}, {1.107948, 0.449859}, {-0.053538, 0.595051}, {-0.660756, 0.271631}, {-0.110972, 0.102598}, {-0.853215, 0.693121}, {-0.815886, 0.697183}, {0.444707, 0.103685}, {-0.147454, 1.248558}, {-0.304216, 0.147728}, {-0.380406, 0.389584}, {0.869539, -0.442373}, {0.367415, 0.370479}, {-0.860426, 0.294945}, {-0.310280, -0.101136}, {-0.724660, -0.542268}, {0.084686, -0.384017}, {0.620385, -0.343553}, {0.193432, -0.835223}, {0.342748, 0.073244}, {-0.208107, 0.866350}, {-0.433622, -0.098584}, {-1.050180, 0.800354}, {1.140817, -0.095778}, {0.074059, 0.720540}, {0.324579, -0.250899}, {0.908664, -0.424491}, {-0.349658, 0.492219}, {-0.416368, -0.443491}, {-0.093378, 0.249512}, {-1.388730, 0.610637}, {0.516564, -1.098854}, {-0.860684, 0.484278}, {-0.183881, -0.463325}, {-0.461003, -0.667445}, {0.768848, 0.198854}, {0.229416, -1.256209}, {0.480655, -0.403404}, {0.479239, -0.007571}, {-1.318306, 0.738942}, {1.469443, -0.959983}, {0.253482, 0.333056}, {0.017190, 1.742204}, {-0.519932, 0.898752}, {-0.452267, -0.316200}, {0.022717, 1.692417}, {0.796237, -0.765617}, {-0.812041, -0.198540}, {0.884469, -0.078862}, {0.030191, -0.787176}, {1.126078, -0.516637}, {-1.102333, 0.446474}, {0.446080, -0.315343}, {-0.062631, -0.265291}, {-0.853606, -0.044797}, {1.077386, -0.224226}, {-0.147136, -0.399345}, {0.166629, -0.401479}, {0.257271, 0.174285}, {-0.244527, -0.825127}, {-0.798872, 0.420259}, {0.491059, 0.151109}, {-1.041543, -1.289491}, {-0.331789, -1.527598}, {-0.083175, 0.394579}, {-0.323992, 0.766890}, {0.902158, 0.010174}, {1.662799, -0.272640}, {-0.497409, -0.677542}, {-0.849235, 0.346076}, {0.747101, 0.412698}, {1.611062, 0.866991}, {0.163223, -0.262013}, {0.741905, 0.535948}, {-0.239992, 0.315095}, {1.073907, 0.578535}, {-0.344179, 0.817836}, {-0.620181, -0.707425}, {0.834661, 0.312322}, {-1.019361, -0.609310}, {1.785614, -0.162301}, {0.529534, 0.672965}, {0.486672, 0.153629}, {-0.288024, -0.719498}, {0.413983, 0.270909}, {1.374466, 0.087559}, {0.163283, 0.494934}, {-0.234819, 0.954579}, {0.012206, -0.678054}, {1.572847, -1.076632}, {-0.599282, -0.633372}, {1.095665, -0.655620}, {-0.684687, -0.201969}, {-0.549440, 0.045874}, {0.322676, 0.581203}, {0.148109, 0.304196}, {-0.253076, 0.734066}, {-0.251967, 0.042417}, {0.045715, -0.031266}, {1.116937, 1.123835}, {0.483493, 0.290907}, {0.068072, 0.333893}, {-0.429817, -0.931647}, {-0.480528, -0.164660}, {-0.775073, 0.535179}, {-0.275572, -0.740592}, {0.448695, -0.532992}, {0.393924, -0.730806}, {-0.932048, -1.011165}, {-0.001888, 0.395913}, {-0.030311, 0.267041}, {0.251709, -0.163471}, {0.758127, 1.170676}, {-0.971904, 0.719459}, {-0.677315, 1.283372}, {0.015133, 0.474236}, {0.250784, 0.239230}, {-0.284132, 0.714203}, {0.344950, 0.419915}, {1.583594, -0.064074}, {0.576677, 0.349100}, {0.125629, 0.022908}, {0.377394, -0.234506}, {-0.563284, -0.715614}, {0.101048, -0.920563}, {0.608430, 0.161613}, {-0.928742, -0.992338}, {-0.294843, -0.399957}, {-0.365761, 0.504701}, {0.306154, 0.060709}, {0.715237, 0.113832}, {-0.231447, -0.747493}, {-0.137875, 0.022192}, {0.270512, -0.373718}, {-0.284239, -0.283799}, {0.279434, 0.240517}, {0.968853, -1.661595}, {0.795511, 0.040827}, {0.756925, -0.008006}, {0.410158, 0.188364}, {0.212647, 0.160361}, {-0.274239, 0.135422}, {-0.748007, 0.121514}, {1.889864, -0.426021}, {-1.118363, 0.603299}, {-1.079087, 0.214901}, {0.881102, 0.533797}, {0.977096, 0.271883}, {-0.593182, -0.608447}, {-0.831317, -0.259562}, {-1.046078, -0.378692}, {-0.521179, 1.064548}, {0.310178, -0.242294}, {-0.276422, -0.319965}, {-0.581592, -1.175487}, {0.078785, 0.414402}, {0.384824, -0.029560}, {0.350595, -0.015079}, {-0.505694, 0.346891}, {-0.244162, -0.431912}, {0.179140, 0.408671}, {-1.683719, -0.175195}, {-0.439600, -0.848327}, {0.214818, -0.535441}, {0.799181, 1.313585}, {-0.476475, 1.275140}, {-0.281987, -0.003127}, {-0.659120, 0.672635}, {-0.061892, -0.705050}, {-1.224782, 0.446358}, {0.016139, 0.676888}, {0.102488, 0.468285}, {0.270256, 1.292447}, {-0.872090, 0.046884}, {0.843556, -0.407998}, {1.131680, -0.756558}, {0.414796, -1.380356}, {-0.696230, -1.001295}, {-0.356978, 0.947810}, {0.203772, -1.057518}, {-0.328018, 0.786771}, {0.943286, 1.338451}, {-1.157899, -0.594093}, {0.126929, 1.437347}, {1.125664, -0.410598}, {1.476748, -0.336433}, {0.391183, 0.754958}, {-0.538390, 1.039711}, {0.539183, 0.253245}, {-0.738926, -1.328143}, {0.843172, -0.517204}, {-1.094296, 0.432451}, {-0.207836, 0.579061}, {-0.780287, -0.213072}, {0.251006, -0.069137}, {0.847453, 0.521498}, {-0.110487, -0.550587}, {1.366744, 0.051771}, {0.111898, -0.116679}, {0.457595, 0.211260}, {-0.224542, -0.247515}, {-0.075318, -0.913189}, {0.413131, 0.636904}, {0.442816, -0.725927}, {-0.269415, -1.101203}, {1.238631, -0.048564}, {-0.867622, -0.029135}, {-1.272665, -0.426738}, {-0.358993, 1.214374}, {0.223994, 0.430413}, {-0.069366, -0.065533}, {-1.151986, -0.046081}, {-0.034817, -0.587513}, {0.820362, -0.805810}, {-0.002677, -0.479108}, {-0.501825, -0.402321}, {0.479133, 0.520280}, {-0.023935, 0.157521}, {-0.805270, -0.213889}, {-0.652714, -1.133157}, {0.141114, 0.750052}, {-0.870557, 0.131878}, {-0.537313, 0.243984}, {0.270492, 1.388730}, {0.351691, -1.026747}, {0.265859, -0.073035}, {0.876907, 0.008793}, {-0.015669, 0.222651}, {-0.458046, -0.172892}, {0.480864, -0.236468}, {-0.304051, 0.883748}, {1.386217, 0.196728}, {-0.448091, 0.725679}, {0.279281, 1.432388}, {-1.090792, -0.202419}, {0.531809, -0.405696}, {-0.038049, 0.323853}, {-0.027231, -0.016436}, {-0.716140, -0.504110}, {0.323352, -0.270107}, {-0.253368, -1.019154}, {-0.779463, -0.217103}, {-0.579380, -0.994819}, {1.349996, 0.012975}, {0.343522, -0.422818}, {0.277107, -1.468269}, {1.635924, -0.133051}, {-0.184484, 0.613490}, {0.452174, 1.169168}, {-0.116411, 0.804015}, {-0.040472, 0.200894}, {-0.451595, 0.380316}, {-0.018660, -0.980569}, {1.037949, 1.233064}, {1.095728, 0.983920}, {0.472751, -0.243982}, {0.234380, 0.303549}, {-0.706062, 1.365919}, {-1.056416, -0.147830}, {0.003918, 0.621718}, {-0.866214, -0.038261}, {0.019575, -0.379413}, {0.205000, 0.142153}, {-0.272811, 0.136060}, {-1.150797, -1.754010}, {0.777102, 0.334033}, {0.144743, 0.082452}, {0.409845, 1.246999}, {-0.848828, -0.844270}, {0.336356, 1.069431}, {-0.261880, 0.472035}, {-0.274440, -0.250428}, {0.096055, 1.333042}, {-1.150019, -0.005824}, {-0.345565, 1.491009}, {0.434845, 0.644814}, {-0.995453, 0.103214}, {-0.248426, -0.545754}, {0.087275, 1.536388}, {-1.950359, 0.672084}, {0.687779, 0.938171}, {0.592318, -0.358229}, {0.719642, -0.071983}, {-0.080845, 0.708763}, {0.136255, -1.235083}, {-0.251003, -0.912274}, {-0.884002, -0.310324}, {0.031525, 0.320763}, {0.556086, -0.250977}, {0.090584, 0.172983}, {-0.360676, 0.948733}, {-0.090851, 0.465571}, {-0.059321, 0.271202}, {0.377821, 0.928997}, {-2.122083, -0.662680}, {0.606876, -0.740523}, {0.304647, -1.075289}, {0.104366, 0.294334}, {-0.618571, -1.125453}, {0.347400, -0.197963}, {0.740467, -0.980580}, {0.567211, 0.587097}, {-0.009102, 0.368841}, {0.365819, 1.246754}, {0.408926, -0.573655}, {0.629943, 0.031990}, {-0.888191, -1.455036}, {-0.192010, -1.721713}, {-0.525795, -0.883365}, {-0.688342, -0.233976}, {-1.231810, 0.919714}, {-0.171857, 0.047815}, {0.829192, 0.498064}, {-0.164813, 0.833731}, {-0.835674, 1.420757}, {0.117641, 0.408307}, {0.061907, -0.340905}, {0.328647, 0.483077}, {-0.334550, -0.634442}, {-1.143177, 0.176319}, {0.945986, -0.429932}, {0.962872, -0.156957}, {0.316408, -0.309555}, {-0.071834, 0.467993}, {0.374919, 0.531204}, {-0.061652, -0.441122}, {0.296652, -0.735807}, {0.635521, 0.547129}, {-0.820187, -0.119987}, {-0.256993, -0.874678}, {-1.176903, 0.375631}, {-0.389114, 1.458620}, {-1.499695, 1.086553}, {0.662846, -0.346478}, {1.134804, 0.260529}, {-0.353432, 0.041867}, {0.599759, -0.706760}, {0.233411, -0.191501}, {0.069271, -0.371072}, {-0.299719, -0.158599}, {0.156862, 0.287897}, {0.044521, -1.565973}, {0.647652, -0.050318}, {-0.625813, 0.313538}, {-0.305193, 0.707469}, {-0.889292, -0.615903}, {0.108968, 0.323345}, {0.891658, 0.530089}, {-0.619121, 0.542110}, {-0.173821, -0.076271}, {-0.066656, -0.380613}, {1.201157, -0.868830}, {-0.269634, -0.547771}, {-0.166608, 0.337899}, {-0.580004, 0.028538}, {-0.178471, 0.256375}, {0.479790, -0.353481}, {-0.141978, -0.140536}, {0.573456, -1.096426}, {-1.407537, 0.376742}, {-0.000291, -0.159343}, {0.566129, 1.021878}, {0.592375, 0.213044}, {-1.093385, -0.195052}, {-1.227213, -0.283957}, {-1.107600, -0.512341}, {0.405843, -0.034674}, {-0.628223, -1.573836}, {-0.424388, -1.127573}, {1.352502, 0.703620}, {0.260965, 0.940215}, {0.564688, -0.617820}, {0.627958, -1.090734}, {-0.519309, -0.170822}, {-0.018574, 0.160240}, {0.581393, 0.735974}, {-1.723723, -0.001348}, {0.426947, 0.152603}, {1.732577, -0.140408}, {0.733090, -1.014674}, {0.548625, -0.606929}, {-0.104524, -0.976971}, {0.002059, 0.365576}, {-0.437915, -0.973652}, {0.409557, -0.489978}, {-0.000720, 0.508669}, {0.256095, -1.595859}, {0.287175, 0.564402}, {0.876617, -1.300599}, {-0.980624, 0.538104}, {-0.197058, -0.835753}, {0.293510, 1.023684}, {-1.124246, -0.346680}, {1.728107, 0.223808}, {0.608823, 0.314713}, {-0.678436, -0.934938}, {0.467041, -0.286489}, {0.304061, 0.659360}, {0.433362, -0.114714}, {0.470833, 0.482791}, {0.136415, 0.001946}, {-0.192213, 1.062735}, {1.160425, 1.197857}, {0.570082, -0.708591}, {-0.674925, -0.979498}, {0.258815, -0.140179}, {0.765330, 0.060888}, {-1.138194, -0.547729}, {-0.342221, -0.331377}, {0.487680, -0.431774}, {0.195766, -0.563726}, {-0.515654, -2.231175}, {-0.514830, 1.422505}, {-0.818513, 0.454493}, {0.380391, 0.182849}, {-0.069606, 1.071475}, {-1.175893, 0.278782}, {-1.024879, -0.018088}, {0.047685, -0.767415}, {-0.451445, 0.575550}, {0.806845, -0.635450}, {0.137154, 0.051450}, {0.484762, 0.473028}, {1.476065, -0.375153}, {0.038745, 0.227390}, {1.613348, -0.285214}, {0.027663, -0.441607}, {0.327132, 0.393034}, {0.097041, 1.118078}, {-1.373910, -0.535039}, {-0.830631, 0.886098}, {0.712699, 0.117282}, {-0.435669, 0.900266}, {-0.230984, 0.260017}, {-1.134322, 0.277879}, {1.217344, 0.070220}, {-0.322548, 0.229832}, {-0.912984, 1.081382}, {0.945157, -0.653585}, {0.109940, -0.208093}, {-0.750971, -0.827736}, {0.077654, -0.623765}, {1.218827, -0.344685}, {-0.313002, 0.296601}, {0.400554, 0.568839}, {0.304519, -0.601576}, {0.373664, 1.261417}, {0.019345, 0.795808}, {-0.078023, -0.626856}, {0.116647, 0.074558}, {0.563238, -0.563330}, {-2.463399, 0.442332}, {-0.109267, 0.048086}, {0.519121, 0.180174}, {0.193848, -0.161425}, {-0.042920, 0.296486}, {0.073707, -1.348922}, {0.617742, -0.148470}, {0.261979, -0.030175}, {1.197662, -1.031986}, {-0.180963, 0.326171}, {-0.182722, 0.138127}, {0.333006, -0.298385}, {0.118052, 0.145749}, {-0.378857, -0.353684}, {-0.874132, -0.138412}, {1.049590, -0.258466}, {-0.227425, 0.931924}, {0.060564, 0.378351}, {0.371015, -0.349550}, {-0.143444, -0.217476}, {-0.247485, -0.046193}, {-0.765423, 0.386454}, {0.075810, 0.747783}, {-0.562521, -0.075906}, {0.409856, -0.469514}, {-0.135998, -0.492786}, {0.986502, -0.462649}, {-0.068894, 0.801619}, {-0.162736, 0.525729}, {-0.453916, 0.283674}, {-0.123426, -1.358265}, {1.200608, -0.396901}, {0.577734, -0.019945}, {-0.436619, 0.346352}, {0.830315, 0.899719}, {-0.064963, 1.026769}, {-0.019483, -1.140266}, {-0.248584, 0.297740}, {-0.203858, 0.942282}, {-0.081061, -0.362369}, {0.963064, 0.245140}, {-0.061346, 0.970336}, {-1.223766, -1.442024}, {-0.659296, -0.305137}, {-0.168098, 0.526909}, {0.244864, 0.201375}, {-1.037356, -0.409374}, {-0.342768, 0.074298}, {-0.126356, 0.583275}, {0.700812, 0.148717}, {1.123453, -0.594402}, {-0.880209, -0.000771}, {0.508231, 0.583812}, {0.461500, -1.305179}, {-0.352762, -0.342643}, {0.026590, 1.641167}, {0.172356, -0.551779}, {0.624259, 1.319173}, {-0.343181, 0.521502}, {-0.377493, 0.564330}, {0.463338, 0.107471}, {-1.020304, 0.501309}, {1.214700, -0.385908}, {0.246930, 0.896288}, {-1.150099, 0.525414}, {0.598091, -0.621490}, {-0.551424, 0.044236}, {0.503002, 0.175473}, {-0.326038, 0.203589}, {0.000174, -0.755465}, {-0.076286, 0.193240}, {0.751071, -0.851721}, {-1.638472, -0.078066}, {0.277348, 0.196780}, {0.017669, -0.946993}, {-0.808836, 0.460763}, {0.389572, -0.585954}, {-0.536593, -0.448112}, {0.668181, -0.374583}, {-0.103420, -0.222061}, {0.033553, 0.915602}, {-0.727955, -0.942821}, {0.227992, -0.544748}, {0.215369, 0.016803}, {-0.331175, -0.358666}, {-0.369147, -1.683768}, {0.287561, 1.754403}, {0.730502, 1.075420}, {0.098139, 0.193287}, {-0.220536, -0.547638}, {-0.708086, 0.229183}, {-0.066645, 0.221207}, {-0.544498, 0.224689}, {0.909845, 0.066686}, {-0.417147, -1.561040}, {-0.588530, -0.271389}, {0.765381, 0.630382}, {-1.536043, 0.954170}, {-0.007504, -0.251426}, {0.320371, -0.415162}, {-1.079865, -0.015651}, {1.246319, -0.288800}, {1.664357, 0.873397}, {1.274888, -0.286462}, {0.089238, 0.521546}, {-0.850328, -0.204610}, {-1.344064, -0.175840}, {1.059629, 0.597417}, {1.396640, -0.558153}, {-1.299523, -0.700533}, {-0.303029, -0.016323}, {-0.571055, -0.101430}, {0.240632, -0.156008}, {-0.210472, -0.676508}, {-0.377210, -0.257232}, {-0.458563, 0.394798}, {-1.298114, 0.535994}, {0.348716, 1.486169}, {-0.551518, 0.095552}, {-0.454461, 0.613793}, {0.589896, 0.608956}, {0.024315, -0.615423}, {0.108640, 0.657051}, {0.277486, 0.095590}, {0.112263, 0.590235}, {-1.676875, 0.295265}, {-0.641851, 0.429911}, {0.112035, -0.999186}, {0.407359, 1.310697}, {0.123607, -0.285048}, {-0.584768, 0.856268}, {0.365845, -1.606895}, {0.118025, 0.980790}, {0.976487, -0.548793}, {-0.608533, 0.177190}, {-0.254552, 0.490015}, {-0.764686, -0.476040}, {0.339780, 0.307140}, {1.071418, -0.394981}, {0.343840, -0.138409}, {0.050959, 0.206412}, {-0.132190, 1.024308}, {-0.531174, -0.997495}, {0.107836, 0.197144}, {0.006508, 0.051268}, {-1.180682, -0.078210}, {-0.301054, 0.221919}, {-0.198790, -2.154487}, {1.281974, -0.406055}, {0.248667, 0.220739}, {-0.151733, 0.572224}, {-0.887702, -0.282886}, {-0.035221, 0.961347}, {-1.071469, 0.514402}, {-1.341250, 0.603023}, {-0.080709, 0.493279}, {0.437681, -0.565973}, {0.221259, 1.582183}, {-0.409386, 0.729511}, {0.982076, -0.071098}, {-1.001791, -0.519130}, {-0.121082, -0.007075}, {-0.339436, 1.234458}, {1.513595, 0.969100}, {-0.583819, 0.253911}, {0.177078, -0.732721}, {1.010067, 0.995855}, {-1.355505, 0.888006}, {-0.332757, 0.204762}, {0.021403, 1.025592}, {-1.217885, 0.139156}, {0.889080, 0.092179}, {-1.102149, 0.293526}, {0.435463, -0.449178}, {0.080275, 0.169176}, {-0.709930, -1.149043}, {0.196490, -0.626610}, {0.000069, -0.943691}, {0.223655, 0.039723}, {-0.560770, -0.882470}, {-0.807256, 0.094114}, {-0.058225, -0.349692}, {-0.500905, -1.096078}, {-0.962775, 0.327158}, {0.282785, -0.401214}, {0.361234, -0.934402}, {0.576734, -0.359076}, {-1.413799, 0.265539}, {-1.117609, -0.837082}, {0.180753, -0.472530}, {-0.120835, -0.959192}, {-0.157811, 0.176422}, {-0.850684, 0.325782}, {0.828223, 0.792925}, {0.054204, 0.579626}, {-1.121286, -0.414842}, {-0.113676, 0.001080}, {0.642904, 0.453393}, {-1.026285, 0.939691}, {0.521202, 0.352828}, {0.456312, -0.206836}, {0.058434, -0.053600}, {0.115901, 0.497408}, {1.204157, -0.447713}, {0.345992, -0.395337}, {0.164925, 1.328079}, {0.069910, 0.657455}, {0.884794, 0.478670}, {0.805589, 0.626931}, {-0.169274, -0.328030}, {-0.535077, 0.102330}, {-0.946526, 0.154656}, {0.358642, -1.362812}, {-0.676983, -0.652080}, {0.992864, -0.004017}, {-0.410549, 0.342659}, {-1.235267, 0.713491}, {-0.398621, 0.103696}, {-0.820035, 0.801927}, {1.200059, 0.099361}, {0.165502, 0.725726}, {-0.591579, 0.903920}, {-0.843723, 0.547834}, {0.773809, 0.403580}, {-0.110340, -0.128695}, {-0.642852, 0.256573}, {0.020826, -0.020841}, {-2.163248, 0.136883}, {-0.964862, 0.387295}, {0.687709, 0.453517}, {-0.112839, -0.567023}, {-0.409633, 0.580404}, {-0.395668, 1.251119}, {0.347308, -0.652184}, {1.734678, -0.822788}, {0.601811, -0.259379}, {0.378296, -0.866471}, {0.498403, -0.656762}, {0.504824, 0.489810}, {0.639843, 0.108016}, {-0.224104, 0.234376}, {0.009714, -1.168003}, {0.019711, 0.237093}, {0.442850, 0.092101}, {0.202559, 0.660920}, {-0.738652, -1.371965}, {-1.297719, 0.932182}, {0.739608, 1.592722}, {0.287503, -0.045919}, {1.222096, -0.184544}, {-0.022342, -1.348633}, {-0.384473, 0.250028}, {0.001750, -0.224717}, {-0.339904, -0.227850}, {-0.775438, -1.310795}, {0.571535, 0.293371}, {-0.324597, 0.227490}, {0.169930, 1.145261}, {-1.551123, -0.199599}, {0.903788, -0.358227}, {-0.622574, -0.635810}, {-0.045168, 1.216837}, {0.093370, 2.013175}, {-0.171013, -0.524670}, {0.035948, 0.841222}, {-0.592962, 0.383082}, {0.304794, -0.702133}, {0.779021, 0.240417}, {1.021212, 0.841250}, {-0.373074, -0.296006}, {-0.522088, 1.139662}, {-0.268210, -0.251780}, {-0.668865, -0.925004}, {-0.197566, 0.255127}, {1.441911, 1.117605}, {0.359801, 0.069378}, {0.485969, -1.028166}, {0.009410, 1.004055}, {-0.386974, -1.624570}, {0.923300, 0.143629}, {0.181342, 0.541303}, {0.292919, 0.079149}, {0.324985, -0.714574}, {1.032349, -0.142324}, {-0.163295, 0.054984}, {-1.028432, -0.229401}, {0.459060, -0.443054}, {-0.236741, -0.785944}, {-0.703899, -1.736899}, {-0.586833, -0.513491}, {-1.517056, -0.084420}, {0.292003, -0.016637}, {0.700051, -0.583601}, {0.526109, 0.250151}, {-0.227784, -0.209721}, {1.818833, -0.253432}, {-0.360458, -0.668042}, {0.666832, -0.166561}, {-0.358616, -0.418329}, {-0.412887, 0.836863}, {0.467107, 0.455230}, {0.592494, 1.202728}, {-0.049518, -0.533706}, {-1.002130, 0.544990}, {-0.257809, -0.145484}, {-0.507467, -0.453834}, {0.291788, 0.724311}, {-0.135188, 0.157332}, {0.631982, 0.964860}, {-1.346895, 0.067204}, {-0.288235, 0.488706}, {-2.477087, 1.241502}, {-0.518612, -0.435361}, {0.955342, 0.489972}, {1.169275, 0.407173}, {0.213697, 0.494150}, {1.485172, 0.045033}, {0.153003, 0.092241}, {-0.308640, -0.601813}, {-0.228943, 0.489280}, {-1.169407, -1.772660}, {0.178640, 0.792597}, {-0.165417, 0.292843}, {1.369952, -1.611009}, {0.852707, -0.827966}, {0.821978, -0.004446}, {0.649031, -0.812858}, {0.973973, -0.310191}, {-0.044568, -1.440362}, {0.765165, -0.538318}, {0.073737, 0.997220}, {1.234533, 0.305244}, {0.063294, 0.158006}, {0.169849, 0.859146}, {-0.719410, -1.068298}, {0.116258, -0.709057}, {-0.930144, -0.632747}, {-0.181414, -0.975216}, {0.795997, 0.192359}, {0.066111, -1.055039}, {-0.298799, -0.559138}, {-0.603013, -0.082259}, {0.209757, 1.372754}, {0.347500, 0.495824}, {0.676474, -0.072774}, {0.550261, -1.227179}, {-0.263165, 0.041038}, {-0.546702, -0.491019}, {0.738601, -0.021821}, {-0.575464, -0.045919}, {0.123871, -0.075287}, {-1.083198, -1.254586}, {-0.183814, -1.052704}, {-0.881953, 0.291254}, {0.295336, -0.371557}, {0.023762, -0.165479}, {0.922082, 0.683317}, {0.324383, -0.491146}, {1.171481, -0.557506}, {0.470032, 0.663233}, {-0.433687, 0.881275}, {0.569872, 1.163325}, {-1.147629, 1.276498}, {-1.667829, 0.173502}, {1.509836, -0.393443}, {0.061339, -0.994588}, {1.297176, -0.289000}, {-0.222211, 1.274974}, {0.171856, -0.708127}, {-0.762371, 0.928647}, {0.489001, -0.717858}, {0.273726, -0.144006}, {0.089858, 0.479527}, {-0.415939, -0.754283}, {-0.820428, -1.308644}, {0.246597, 0.476980}, {-0.061898, -0.518679}, {-0.002501, -0.563025}, {0.160470, -0.497633}, {0.654653, -0.058246}, {-0.346737, 0.304705}, {-0.730579, -0.133753}, {0.332384, 0.151924}, {-0.769060, 0.340191}, {-0.946356, 0.802338}, {-0.185563, -0.701926}, {-0.018478, 0.385360}, {-0.763889, -0.171119}, {0.136434, -1.151131}, {0.944360, 0.351269}, {0.234035, 0.460682}, {-0.126511, -0.343346}, {-0.129577, 0.714668}, {0.831803, 1.425489}, {-0.311698, 0.471973}, {0.374336, -0.532622}, {-1.287929, 0.086859}, {-0.960906, -0.551099}, {-1.322977, 0.426687}, {0.566247, -1.476259}, {-0.042332, -0.595204}, {-0.217199, 0.570666}, {-0.336883, 0.586814}, {0.991186, 1.090638}, {-0.112997, 0.343201}, {0.936285, 0.699872}, {1.134616, 0.605336}, {-0.332672, 0.412190}, {-0.131705, -0.706994}, {0.966135, 0.922373}, {1.133423, -0.652360}, {-1.177552, -0.186519}, {0.708659, -0.078514}, {-0.951753, -0.658081}, {0.498906, 0.236519}, {0.282086, -1.164112}, {0.256290, -0.187041}, {0.292859, -0.420021}, {0.670422, -0.359978}, {-0.031479, -0.211732}, {-0.243913, -0.094388}, {-0.214352, 0.162763}, {-0.671425, 1.172721}, {-0.345164, -0.766127}, {-0.628780, -0.950380}, {-0.275698, 0.202610}, {-0.358559, 0.974356}, {0.409593, 0.965904}, {-0.287768, -0.284934}, {-0.817917, 0.034221}, {0.282824, -0.083509}, {0.266940, 0.414989}, {-0.839039, 0.602647}, {-0.030358, -0.143335}, {-0.461787, -1.323753}, {-0.947434, 0.034506}, {0.206777, 0.393953}, {0.110051, 0.039027}, {-0.255445, -0.418588}, {-0.824977, -0.529115}, {-0.847940, 0.003400}, {-0.227448, -0.605217}, {-0.658428, -0.129496}, {-0.070069, -0.874316}, {-0.452178, -0.509891}, {0.006794, 0.737596}, {-0.173131, -0.491329}, {-0.018882, 0.037139}, {1.012352, -1.428883}, {0.341480, -0.177353}, {0.088907, 1.263644}, {-0.007106, -0.035769}, {0.494848, -0.291677}, {1.029770, 1.640336}, {-0.019924, -0.576639}, {1.078143, 0.161988}, {-1.158261, -0.009208}, {-0.920354, 0.385655}, {-0.103172, -0.424669}, {-0.128917, 0.361840}, {0.451312, -0.151329}, {0.486818, -0.792695}, {0.173666, -0.625128}, {-1.227586, 0.233996}, {-0.567889, 0.022017}, {-0.012878, 0.076646}, {-0.423646, 0.335511}, {-0.989293, 1.156415}, {-0.977194, 0.382489}, {-1.465169, 0.221222}, {-0.821043, -0.880370}, {0.953556, 0.320459}, {-0.493348, 1.015682}, {-0.041491, -1.401656}, {0.110917, -1.090802}, {-0.787109, 0.792470}, {-1.183552, -0.605356}, {-0.466455, 0.123053}, {1.377708, 0.488188}, {1.036160, -0.429887}, {-0.195443, 0.367498}, {-0.649320, -0.214917}, {0.818471, -0.314367}, {-1.095956, -1.066370}, {1.010551, 1.357206}, {-0.522272, -1.266004}, {0.742807, -0.658170}, {0.137677, -0.996820}, {-0.269035, -0.313754}, {0.231487, 1.580343}, {0.050224, -0.237917}, {0.022147, 0.008968}, {-0.118094, -0.562883}, {0.746369, -0.220601}, {0.103125, -1.486236}, {-0.018752, 0.345496}, {-0.026367, 0.124820}, {-0.095584, 0.426964}, {0.299398, -0.036745}, {0.876858, 0.071707}, {0.080784, 0.101691}, {-0.365802, -0.832668}, {-0.066045, -0.042815}, {-1.336839, -0.309595}, {-1.855670, 0.090094}, {0.142864, 0.213680}, {0.170087, -0.748118}, {0.757840, -0.487161}, {-0.008566, 0.015099}, {-0.574190, 0.366625}, {0.850847, -0.670065}, {-0.088781, -0.552472}, {0.065881, -0.562275}, {2.174229, -0.693270}, {0.545383, 0.173825}, {0.179404, -1.118853}, {-0.706263, 0.644413}, {-0.201256, 0.026020}, {0.371367, 0.027994}, {0.695924, -0.856474}, {-0.068587, -0.377147}, {-1.335474, -0.381794}, {-0.705342, -0.264330}, {1.211854, 0.734180}, {0.689579, -0.829674}, {0.236230, -0.519350}, {-0.373274, -0.203030}, {0.522275, 0.190464}, {-0.984102, 0.184132}, {0.608537, 0.528305}, {0.645580, -0.632723}, {0.106191, -1.924526}, {-0.860820, 0.172286}, {-0.017002, -0.413171}, {-0.870914, -0.915141}, {-0.032162, -0.022238}, {1.063524, 0.208230}, {0.208620, 0.392565}, {1.534353, 0.353688}, {0.503624, 0.611747}, {1.441714, 0.373080}, {-1.685419, 0.553616}, {-1.251072, 1.088477}, {0.030551, 0.653043}, {0.348223, -0.875562}, {-0.158646, -1.827145}, {-0.599854, -1.150166}, {-0.622279, 1.015380}, {-0.045192, 0.068378}, {0.289380, 0.241892}, {0.780663, -0.317637}, {-0.624796, -0.111034}, {0.156313, 0.625074}, {-0.887464, 0.338653}, {0.276127, -1.089799}, {0.393729, -0.259418}, {0.290756, 0.344205}, {-1.690691, 0.271341}, {1.070050, -0.375246}, {-0.518340, -0.146201}, {-0.136899, -0.031255}, {-0.732118, 0.763056}, {0.595604, -0.170473}, {0.313932, 0.752164}, {1.258402, -0.021841}, {-1.271193, 0.594328}, {1.074153, 0.128659}, {0.478066, -0.276071}, {-0.358573, 0.984028}, {0.423156, 0.233965}, {-0.177399, 0.151124}, {0.079737, 0.146108}, {-0.800067, -0.511673}, {0.506933, -0.549296}, {0.699370, -0.759465}, {0.195093, 1.236176}, {0.557245, 1.418542}, {0.287210, 1.479131}, {0.668788, -0.448889}, {-0.463056, 0.926393}, {1.124722, -0.224757}, {1.118837, -0.244739}, {-0.214775, 0.121754}, {-0.086324, -0.784099}, {1.274702, 0.512876}, {1.060185, 1.325123}, {0.193620, 0.390433}, {-0.286823, 0.231843}, {-0.351578, 0.727546}, {-1.647569, 0.062221}, {0.356859, -0.256082}, {0.266346, 0.400761}, {-0.225153, -0.791734}, {0.522282, 0.074414}, {-0.375861, -0.448761}, {-0.533274, 0.056055}, {-0.400783, -0.040651}, {0.436361, 0.406416}, {0.165936, 0.403954}, {0.851735, 1.253902}, {-0.996147, 0.302040}, {0.979640, 0.288274}, {-0.020106, -0.155534}, {-0.392568, -0.327217}, {-0.200327, 0.496539}, {-0.233763, -0.423968}, {-0.976208, -0.408918}, {-0.571268, -0.378235}, {0.224025, -0.154206}, {-0.176338, 0.225973}, {0.355614, -0.189466}, {-0.450087, 0.567394}, {-0.659818, 1.574000}, {-0.724889, 0.197115}, {-1.355431, -0.664189}, {-0.203199, 0.667343}, {-0.361135, 0.152712}, {-0.007547, -0.222527}, {-0.546892, -0.387338}, {1.044558, -0.663379}, {0.326269, -0.004359}, {-0.012900, 0.714057}, {-0.032278, -0.204936}, {-0.152106, 0.539984}, {-0.484380, -0.174141}, {-0.480804, -0.521659}, {0.019051, -0.512885}, {-0.371011, -0.457457}, {0.637777, -0.575044}, {1.426366, 0.512612}, {0.266994, 0.797655}, {-0.824664, -0.336600}, {-0.422137, -0.905715}, {0.656471, 0.209458}, {-0.864761, -0.058947}, {1.312581, 0.409720}, {0.093477, 1.303098}, {-0.495575, 0.491653}, {0.616295, 0.289625}, {0.019085, 0.370022}, {-1.785266, 0.062761}, {-0.110044, -0.749797}, {1.685633, 0.914155}, {0.759099, 0.624272}, {-0.950030, 1.223722}, {0.414424, -0.410528}, {0.183760, -0.081691}, {-0.402176, -0.026614}, {-0.349344, -0.746451}, {-0.669819, 0.784265}, {0.124418, 0.632759}, {0.541258, -1.198492}, {-0.866841, 0.005112}, {-0.420861, 0.310081}, {-0.492845, 2.040430}, {0.289183, -0.025633}, {0.333462, -0.545470}, {0.620450, -0.664730}, {-0.966239, 0.477068}, {-0.280518, 0.588544}, {0.855581, 0.526154}, {0.176645, -0.532816}, {0.243194, -0.347975}, {0.121295, 1.046375}, {0.468586, -0.344088}, {-0.350739, -0.403584}, {-0.631745, -0.782817}, {-0.949273, -1.150875}, {0.922169, -1.684543}, {-0.345543, -0.015945}, {0.837118, 0.348048}, {-0.849669, 0.097854}, {-0.950003, -0.284938}, {-0.827245, 1.274905}, {0.582750, 0.674266}, {0.863202, -0.250190}, {0.661880, 0.368907}, {0.037276, -0.913114}, {0.165824, 1.259230}, {0.058122, 0.701148}, {-0.309547, -0.432040}, {-0.596559, -0.618049}, {0.889281, 0.852314}, {0.257575, -0.140190}, {0.466566, -1.164941}, {-0.846649, -0.024130}, {-0.006130, -0.345342}, {0.554810, -0.369790}, {0.132936, -1.245072}, {-0.708319, -0.243577}, {-0.938221, 0.593895}, {-0.035179, 0.513441}, {-0.049975, 1.127913}, {-0.672031, 0.159578}, {-0.023330, 1.155255}, {0.143090, 1.023505}, {0.115199, 0.309062}, {-1.199697, 0.879078}, {0.519932, 0.063135}, {0.186381, 0.036151}, {-0.474750, 1.313004}, {-1.041353, 0.036701}, {-0.089927, -0.772333}, {0.090568, -0.837483}, {-0.048569, -0.259303}, {1.571934, -0.955589}, {-0.022494, -0.250567}, {-0.308409, 0.008499}, {-0.198203, -0.449276}, {-0.294832, -0.776042}, {0.258584, -0.160882}, {0.168586, -0.668421}, {-0.607039, -0.175648}, {-1.595333, 0.275002}, {0.354293, -1.433081}, {-1.076825, 0.444679}, {0.112063, 0.403675}, {-0.019937, -0.526304}, {0.878192, 1.126714}, {-0.555291, -0.177409}, {0.618919, -1.270440}, {-0.718783, -0.636622}, {1.023238, -0.542857}, {0.482907, 0.146108}, {1.333821, 1.330160}, {1.132981, -0.772368}, {-0.543637, -0.834221}, {0.775740, 0.171336}, {0.801106, -0.771147}, {-0.561803, 0.079096}, {0.652019, -0.040842}, {-0.654772, -0.774603}, {0.405766, -0.335507}, {-0.131693, -0.202866}, {-1.261224, 0.358867}, {0.573502, 0.072986}, {-0.658929, -0.659778}, {-0.667468, -0.367979}, {1.363660, 0.358243}, {0.355715, 0.497317}, {0.186055, -0.513256}, {-0.427157, -0.478966}, {1.490717, -0.058493}, {-0.952606, -0.205605}, {1.437961, 0.595822}, {1.113979, 0.821148}, {-1.993044, 0.178065}, {0.062770, -1.172124}, {-0.601798, -0.508838}, {0.404892, 0.157432}, {0.446296, -0.198539}, {-2.000248, -0.062555}, {0.418983, -0.605122}, {1.044428, 1.430575}, {-0.225956, 0.016324}, {0.516675, 0.456090}, {-0.117366, -0.642548}, {0.821745, 0.347570}, {0.439764, 0.695177}, {-0.216506, -0.082014}, {1.389264, -0.080676}, {-0.185223, -0.603367}, {-0.860185, -0.740634}, {-0.146111, -0.173600}, {-0.208919, 0.975808}, {-0.323668, -0.191408}, {0.325369, 0.387206}, {-1.016963, 0.031901}, {-0.607601, -1.373026}, {-0.029588, 1.154785}, {-0.134545, -0.252350}, {0.776553, -0.133224}, {0.543461, 0.280061}, {-0.890756, -0.743419}, {-1.170665, 1.021231}, {0.518692, -0.016268}, {0.959604, 0.190010}, {-0.985259, -0.574513}, {0.772275, -0.572044}, {-0.989352, -0.007084}, {-0.843395, -0.709321}, {-0.701267, 0.196028}, {-0.479826, 0.888804}, {1.012193, 1.019070}, {0.706742, 0.197803}, {-0.979845, -0.049822}, {-0.200635, -0.291375}, {0.049786, -0.795526}, {1.237530, 0.009952}, {-1.067907, 0.940046}, {-0.112405, -0.397752}, {-0.046100, -0.102711}, {0.453746, 0.537092}, {-0.187188, -0.759559}, {0.717383, -0.561168}, {-0.164953, -0.323824}, {-0.166557, 0.021823}, {-0.783368, -0.429656}, {0.794975, -0.230617}, {-0.527327, -0.780894}, {-0.872325, 0.014350}, {0.054789, 0.241499}, {0.738298, -0.228210}, {0.060773, 0.996415}, {0.241621, -1.596309}, {0.445850, 0.578241}, {0.315976, 1.201028}, {-1.511131, -0.670994}, {-0.110134, 0.130493}, {-0.265378, 0.556605}, {-0.552998, 0.389953}, {0.085908, 0.759607}, {-1.029355, 0.404668}, {0.516605, -0.500285}, {-0.014747, 0.186171}, {-0.662889, 0.914909}, {1.133404, 0.043481}, {0.942736, -1.022847}, {-1.367925, 0.662538}, {0.202927, -0.261840}, {-0.080038, 0.255562}, {0.334206, 0.344507}, {0.909260, 0.161783}, {0.279950, -0.442240}, {-0.132812, 1.284395}, {0.561415, -0.874174}, {-0.040063, 0.004187}, {0.139506, 0.273340}, {0.678991, -0.833389}, {-1.242484, -0.045382}, {0.256214, -0.213426}, {-0.587563, -0.587595}, {0.078473, 0.384032}, {-0.277039, 1.136410}, {-0.092972, -1.062368}, {-0.023888, -0.080233}, {-0.452956, -0.444322}, {1.328310, -0.992490}, {-0.474930, 0.347850}, {0.523240, -0.003848}, {-0.051859, 0.435035}, {0.353494, -0.243220}, {-1.096435, 1.075703}, {-0.289883, 0.126013}, {1.309579, 0.419419}, {-0.249474, -1.277937}, {0.370228, -0.619822}, {-0.162931, -0.986185}, {0.529442, 0.663374}, {0.206235, -0.141314}, {0.327230, 0.297918}, {0.258588, -0.423171}, {-0.397341, 0.502437}, {0.021206, 0.592566}, {-0.289367, 0.413864}, {0.910642, 0.392091}, {-1.057228, -0.461395}, {1.001500, 0.315649}, {-0.090014, -0.918110}, {0.318253, 0.558070}, {0.211192, -0.014893}, {0.522386, -0.366099}, {0.090398, -0.703867}, {1.622834, 0.018082}, {-0.071737, -1.007484}, {-0.664638, -0.104874}, {-0.189868, -0.515833}, {0.358739, 0.281609}, {-0.622523, 0.089106}, {0.361331, 0.095296}, {1.085784, 0.080787}, {0.478981, -0.441729}, {1.068931, 0.439744}, {-0.628892, 0.424033}, {-0.196324, 0.379911}, {-0.789710, -0.283177}, {-0.806679, -1.377374}, {1.599832, 1.186046}, {0.412645, 0.144409}, {0.327430, 1.119619}, {1.057958, 1.303142}, {0.432599, 0.474891}, {0.284130, -0.147951}, {0.137384, -0.946542}, {-1.047473, 0.054293}, {-0.143269, -0.396173}, {0.134200, -1.117673}, {0.904095, -0.967660}, {0.784155, -0.589834}, {-0.329207, -1.584818}, {1.336969, -0.965850}, {0.562061, 0.584660}, {-0.860259, -0.550482}, {0.553302, 0.170503}, {0.384839, 0.442235}, {-0.123665, 0.795758}, {-2.267570, 1.579904}, {-0.985957, 0.263810}, {-0.114123, -0.105293}, {-0.073897, -0.131005}, {0.394013, 0.420781}, {1.294967, -0.725636}, {0.392888, -0.237295}, {0.708169, -0.947210}, {0.598124, -0.131921}, {0.392268, 1.238404}, {0.565937, -1.492817}, {-0.620915, 0.218253}, {-0.187653, -0.500112}, {-0.225466, -0.457223}, {0.298875, 0.099610}, {0.214690, -0.399322}, {-0.679138, -0.038895}, {0.118053, 0.472370}, {-0.488826, -0.872846}, {-1.119422, -0.036171}, {-0.075847, -0.265969}, {-1.290590, -1.483111}, {0.903551, 1.081328}, {-0.903254, -0.425745}, {-1.654210, -0.592746}, {-0.834468, 0.360416}, {-0.517414, -0.268347}, {0.219221, -0.942583}, {-0.159846, 0.647089}, {0.022067, -0.112729}, {1.161820, -1.200230}, {-1.140920, -0.081036}, {-1.039243, -0.377205}, {0.314333, 0.565306}, {-1.575490, 0.432187}, {0.468719, 0.702260}, {-0.496647, -0.982869}, {0.807580, 0.126209}, {-1.232223, -0.694859}, {0.344013, 0.146694}, {0.352479, -0.248874}, {0.500112, 0.240281}, {0.150882, 0.007734}, {1.025832, 0.271827}, {0.087793, -0.911808}, {0.239715, -0.182878}, {-0.488536, -1.404765}, {0.245387, -0.004696}, {-0.830521, 0.880491}, {0.083542, 0.285857}, {0.921577, -0.685627}, {0.695468, -0.133940}, {0.939971, 1.828094}, {0.789922, 0.759310}, {0.403211, 0.030107}, {0.016796, 0.689851}, {1.084819, -0.186630}, {-0.903993, -0.024230}, {0.712283, -1.107485}, {-0.931592, 0.898492}, {-0.696849, 1.388040}, {0.542043, -1.230688}, {-0.217901, 1.160492}, {-0.093252, -0.025223}, {-0.766154, 0.653670}, {-0.042860, 0.814345}, {-0.196778, -0.716831}, {0.540037, 0.172703}, {-0.361556, -0.529404}, {-0.422260, -0.060487}, {0.516217, -0.838463}, {0.084237, 0.024053}, {-0.942743, -0.718373}, {-0.665473, -0.812679}, {-0.055540, 0.324464}, {-1.050179, 0.765823}, {0.374960, 0.619826}, {0.099384, 0.440820}, {-1.375869, 0.145126}, {-1.168991, -0.089796}, {-0.464068, 0.467425}, {0.141780, 1.426938}, {0.483327, 1.031467}, {-0.966008, -0.779106}, {-0.735806, 0.516178}, {-0.139286, 0.109933}, {1.469544, 0.847398}, {0.027674, -0.409753}, {-0.025074, -1.939206}, {-0.240214, -0.034248}, {0.650895, -0.982693}, {0.425554, -0.059190}, {-0.496271, 0.495123}, {-1.237870, 1.392917}, {0.256191, -0.155617}, {0.586083, -0.158262}, {-0.078923, -0.643073}, {-0.331194, -1.453308}, {-0.144171, -0.906848}, {0.966641, -0.220992}, {-0.423391, 0.041833}, {-0.824277, 0.698242}, {-0.861274, 0.529953}, {0.179762, -1.130919}, {-0.996767, -0.193545}, {0.453175, 1.234067}, {1.485681, 0.094392}, {1.051655, 0.052776}, {-0.134871, 0.796853}, {0.864630, -0.781504}, {0.780484, -0.400513}, {0.331109, 0.578865}, {0.776426, -1.263769}, {0.572772, -0.326729}, {0.372413, 0.005622}, {0.941942, -1.305397}, {0.303917, -1.556093}, {0.189437, 1.234819}, {0.508129, 0.382806}, {-1.116871, -0.360450}, {0.422168, -0.982315}, {0.594919, 0.466410}, {1.035624, 0.463855}, {-0.783077, -0.390978}, {1.236459, 1.182626}, {-0.387814, -0.332232}, {0.086563, 1.162983}, {-0.346845, -0.245300}, {0.221111, -0.315026}, {-0.125533, -0.386266}, {1.007383, -1.514431}, {0.408173, -0.652894}, {-0.444993, 0.620328}, {-0.081295, 0.024145}, {-1.171356, 0.146286}, {-0.654750, -0.194256}, {1.094476, 0.948711}, {-0.885556, -0.313736}, {-0.013248, 0.284773}, {-0.687804, -0.472138}, {-0.155912, -1.113625}, {-0.819529, 0.183507}, {1.128618, 1.019696}, {-0.355820, -0.271205}, {-1.577226, 0.085216}, {0.538217, -0.298420}, {0.076116, -0.620804}, {0.154589, -1.126306}, {0.598211, 0.261215}, {-1.007944, 1.678870}, {0.224117, -0.226210}, {-1.489159, 0.965365}, {-0.297128, -0.374228}, {0.750106, 0.539997}, {0.386862, 0.676595}, {0.966769, -0.407596}, {0.384334, -1.359028}, {-0.664215, -0.143987}, {0.039815, -0.249599}, {-1.121556, 0.013060}, {0.991496, 1.175812}, {-0.353957, -0.926145}, {0.416137, 0.633272}, {-0.347908, -0.060762}, {-1.001857, -1.669313}, {0.715754, -0.308980}, {0.493890, 0.621634}, {0.080629, -0.165597}, {0.066092, -0.718772}, {-0.340841, 0.667852}, {0.031320, -1.351725}, {0.793912, 0.365991}, {0.094964, 0.747321}, {-1.342909, 0.528676}, {-0.173577, -0.344160}, {-0.196297, -0.688651}, {0.159112, 0.542697}, {0.329935, 0.154517}, {1.185337, 0.700728}, {-0.704310, -0.402117}, {-0.316785, -0.310172}, {-1.232388, -1.015449}, {-0.043209, 0.901854}, {-0.340189, -2.254502}, {-0.603832, 0.362719}, {0.962932, -0.001934}, {1.768897, 0.121106}, {0.679471, 0.866237}, {-0.737197, -1.149965}, {1.225298, -0.618371}, {-0.296798, -1.468710}, {-1.678878, 0.063437}, {0.479002, 0.192428}, {0.346018, -1.538752}, {-1.206099, -0.295383}, {1.053135, 0.455640}, {-0.560954, 0.547959}, {0.643517, -0.909463}, {-0.098024, -0.246867}, {0.931635, -0.252753}, {0.148997, -0.323576}, {0.050144, -0.171018}, {-0.267956, 0.294251}, {0.333497, 0.911259}, {-0.365215, 0.268823}, {0.144195, -0.701040}, {-1.526851, -0.129927}, {1.142833, 0.635755}, {-0.586324, 0.067496}, {1.134076, -0.946287}, {-0.493528, -0.592981}, {-0.425575, 0.286177}, {0.092149, 0.506148}, {-0.271803, -1.297036}, {0.026268, 0.441668}, {1.237103, 0.694613}, {0.582480, -0.500776}, {-0.919241, 0.616013}, {0.539933, -0.765108}, {-0.238804, -0.015991}, {0.251532, 1.010740}, {0.018575, 1.538529}, {1.164247, 0.775468}, {-0.724490, 0.704236}, {0.572185, -0.261278}, {-0.165192, -0.473733}, {-0.275442, -0.214077}, {0.529682, 0.079349}, {-1.043063, 0.590297}, {-0.312898, 0.982987}, {-0.347152, -0.300360}, {0.198617, -1.545474}, {-0.137123, 0.206520}, {1.406277, 0.504897}, {-0.230632, -0.020974}, {1.165849, 1.286086}, {0.567973, 0.251033}, {0.730319, -0.018651}, {-1.173668, 0.011321}, {-0.036457, -0.751900}, {-0.615665, 0.447886}, {-0.452895, -0.069779}, {0.673152, -0.178631}, {-0.327908, -0.701133}, {0.721903, -0.259445}, {0.096390, -0.755208}, {0.558453, -0.050797}, {0.264645, 0.199839}, {-0.894315, 0.312986}, {-0.216785, -0.394039}, {-1.143224, 0.400516}, {-1.356620, 0.072608}, {1.362480, -0.018613}, {1.142226, -0.983870}, {0.627630, 0.620440}, {0.660075, -0.739872}, {0.579792, -1.280997}, {0.651826, 0.602429}, {1.895455, -0.274354}, {-0.906672, -0.429069}, {-0.803452, 0.029061}, {0.481015, 1.138218}, {1.032808, -0.296512}, {-0.832241, 0.455665}, {0.539383, 1.075476}, {-0.438440, 0.887938}, {0.424835, -0.368019}, {-0.135554, 0.584722}, {0.599934, 1.286793}, {-1.006594, 0.727090}, {0.911023, 0.076265}, {0.337550, 1.120384}, {-0.895655, 0.047860}, {0.266564, -0.467233}, {-0.048357, 0.118508}, {-0.702445, -0.560325}, {0.480256, -1.121399}, {0.654894, 0.949342}, {-0.417652, -0.110876}, {0.709040, -0.321438}, {-0.238239, -0.984386}, {-0.301674, -0.706961}, {0.472112, 1.348416}, {-0.288396, -0.181889}, {-0.450683, -0.267402}, {-0.308414, -1.071811}, {-0.417105, 0.973953}, {-1.553241, -0.142268}, {0.128366, 0.111307}, {-0.927474, -0.051060}, {1.101826, -0.477989}, {-0.242754, 0.084899}, {-0.746846, 1.115605}, {-1.127438, -0.172875}, {-0.155172, -0.399688}, {-1.837735, 0.530750}, {-1.374064, 0.363114}, {-0.097395, 0.053473}, {0.609195, -0.274619}, {1.734941, 0.890505}, {0.779686, -0.972688}, {0.585193, -1.045163}, {0.248025, -0.300921}, {-0.152088, 0.863592}, {0.576776, -0.435392}, {-0.660678, -1.619638}, {-0.049095, 0.111165}, {-0.054992, 0.933530}, {0.502694, 0.260923}, {-0.330115, -0.374907}, {0.738413, 0.897929}, {-0.134611, -0.079508}, {-0.501918, 0.744600}, {1.092964, 0.366548}, {-0.569112, -0.575195}, {-0.361389, -0.543941}, {-0.246589, 1.583851}, {0.115483, 0.436651}, {0.709692, -0.027134}, {-0.201305, -0.325035}, {-0.081069, -0.613508}, {-0.204912, 0.899014}, {-0.052638, -0.313595}, {-0.055242, -0.450843}, {-1.021730, -0.600249}, {0.649428, 0.166285}, {-0.566037, -0.062804}, {0.020980, 0.775753}, {-0.665180, 0.091810}, {0.475532, 0.480182}, {-0.392908, 0.497955}, {-0.911233, -1.270771}, {0.008075, -0.360294}, {0.692020, -0.075024}, {-0.731113, -0.013576}, {0.768481, 0.871268}, {-0.414806, -0.177137}, {-0.085437, -0.311006}, {0.611962, 0.398797}, {-1.456806, 0.915209}, {0.234176, -0.108086}, {0.392467, -0.300692}, {-1.290682, -0.075481}, {0.661390, 0.746033}, {-0.613522, -0.349294}, {-0.658477, 1.050708}, {-0.966256, -0.650581}, {-0.356483, -0.515624}, {0.776759, 1.027077}, {-1.230686, -1.756435}, {1.443473, 0.351437}, {-1.627666, 0.332377}, {-0.893450, 0.724938}, {-1.214274, 0.674931}, {0.575030, -1.220913}, {0.436178, -0.146204}, {0.255927, -0.642819}, {0.837765, 0.357972}, {0.413942, 0.336704}, {-0.491814, 0.029299}, {0.577770, -0.709864}, {0.618412, -0.094846}, {1.113511, 0.720462}, {-1.276252, -1.169819}, {-0.221518, 0.034718}, {1.175932, 0.480262}, {-1.089821, -0.091391}, {-0.050210, 0.483209}, {0.570865, -0.312307}, {0.218860, -0.555332}, {0.085193, 0.903061}, {-0.177520, -0.161550}, {-0.920380, -0.285077}, {1.144318, -0.822307}, {-0.443889, -0.246271}, {1.751176, 0.442665}, {-0.171192, 0.036515}, {1.478796, 0.623020}, {0.988539, -0.047767}, {-0.656993, 1.766078}, {0.175814, -0.815643}, {0.621924, 0.409207}, {-0.576310, 0.039971}, {-1.353919, -0.486915}, {-0.387561, -1.061818}, {-0.119924, 1.290992}, {-0.230595, -0.112278}, {-0.740619, -0.035881}, {0.143479, -1.215912}, {0.210367, 1.334086}, {-0.308564, -0.243013}, {-0.152059, -0.489945}, {-0.321632, 0.092499}, {1.924499, -0.416900}, {-0.096596, -0.427458}, {0.269636, 0.757454}, {-0.150174, -0.186291}, {0.865667, -0.424643}, {0.370408, 0.371389}, {-0.766370, -0.272893}, {-0.222344, 0.995829}, {-0.468779, 1.033146}, {-0.149001, 0.896831}, {-0.755959, -1.024279}, {1.217738, -0.762323}, {0.534823, 0.219960}, {-0.070087, -0.996893}, {0.319844, -0.482557}, {0.360326, -1.036808}, {0.175977, 0.088674}, {-1.461705, 0.208011}, {0.077773, -0.162524}, {0.054694, -0.539832}, {-0.096807, 0.513069}, {-0.100006, 0.909039}, {1.406467, -0.680385}, {-0.474095, 0.657180}, {-0.266534, -0.258199}, {-0.155174, 0.776743}, {-0.786856, -1.189942}, {-0.191945, -0.142069}, {1.405201, 0.141338}, {0.792400, 0.879229}, {0.517136, -0.068225}, {-0.073672, 0.710877}, {-0.308993, -0.293807}, {-0.242238, 0.739423}, {0.319612, 1.603955}, {0.275246, -1.560017}, {0.990727, 0.848362}, {0.559344, -0.346077}, {-1.078959, -0.356477}, {-0.070324, 0.894042}, {-0.528587, 0.035779}, {-1.258713, 0.379885}, {-0.290864, 0.053989}, {-0.225357, -0.508803}, {-0.752478, -0.581330}, {0.126417, -0.906446}, {-0.993092, 0.097985}, {0.016474, 1.418872}, {-0.886978, 1.124599}, {-0.864118, 0.032904}, {0.105550, 0.529514}, {-0.447701, -0.032437}, {-0.815386, 0.312394}, {1.531759, 0.864403}, {0.463851, -0.299624}, {1.193057, -0.699033}, {-0.904051, 1.118158}, {-0.019004, -0.938424}, {0.479988, -0.435766}, {0.614927, 0.556017}, {-0.620773, 0.176160}, {-0.040731, -0.961046}, {1.396722, 0.475938}, {-0.651834, -0.578144}, {-1.231469, 0.391926}, {0.074102, 0.218066}, {-0.780426, 0.939099}, {0.266873, 0.597431}, {0.035461, -0.147601}, {-0.041518, -1.551616}, {-0.652796, 0.186071}, {-0.515741, 0.854016}, {0.260025, -0.565384}, {-0.507427, -1.442764}, {1.156603, -0.625163}, {-0.277430, -0.146397}, {0.786110, -0.385100}, {0.187860, 0.259149}, {-0.708870, 0.857568}, {0.258114, -0.517658}, {-1.593806, 1.354268}, {0.769054, 1.115951}, {-0.320025, 0.831390}, {0.362127, -0.478752}, {0.463627, -0.562727}, {0.105345, -0.459347}, {-1.973697, -0.097140}, {-0.329367, 0.850698}, {-0.703448, -0.335789}, {0.450011, 1.121062}, {0.654028, -0.721941}, {0.397198, 0.029445}, {0.299006, 0.140008}, {-1.278916, -0.883708}, {-0.442195, 0.297563}, {0.159308, -0.023143}, {0.282331, -0.269534}, {1.455855, 0.834365}, {0.520331, -0.449560}, {-0.163163, 0.285191}, {-0.485547, -0.381264}, {0.182946, -0.895494}, {-1.239939, 0.220402}, {-0.161033, -0.885029}, {-1.573787, -0.436694}, {0.431696, -0.262095}, {-0.044572, -0.808512}, {-1.515339, -0.713970}, {-0.072136, -0.707279}, {0.083839, 0.736988}, {0.609676, -0.073344}, {-0.218284, 0.410031}, {-0.145884, -0.759804}, {1.449489, 0.119417}, {-0.924116, -0.784971}, {0.396728, -0.420324}, {0.442812, 0.065814}, {0.300979, 0.512297}, {0.720141, 0.898594}, {-0.335842, -0.181875}, {-0.558501, -0.374812}, {-0.124859, 0.840644}, {-0.457252, -0.211346}, {-0.502385, -0.919004}, {-0.681491, 0.752273}, {-0.596193, -1.541557}, {0.244109, -0.338625}, {0.598338, -0.141999}, {-0.132257, 0.405104}, {-0.402130, 0.664641}, {-0.985068, 0.337142}, {0.289973, 0.153776}, {-0.086672, 0.267755}, {-1.157864, 1.082877}, {0.138765, 1.203857}, {0.157440, -0.081841}, {0.183486, 1.244150}, {-1.021782, -0.631884}, {-0.147782, -0.684714}, {0.196621, 0.546394}, {-0.631778, -0.068033}, {-0.138504, -0.409385}, {-0.600232, 0.098769}, {-0.817953, 0.213884}, {0.961003, 0.245662}, {0.790531, 0.562720}, {-0.703499, 1.039309}, {0.479667, -1.119048}, {-0.013366, 0.839971}, {-0.034365, 0.640450}, {-1.399523, 0.355804}, {0.260801, 0.147967}, {0.065808, 0.546078}, {-0.347448, 0.098553}, {0.821639, 0.246355}, {-1.628820, -0.597563}, {-0.248049, 0.428404}, {-0.053644, 1.339589}, {-0.477780, -0.236885}, {0.582341, -0.895865}, {0.551673, -0.940215}, {0.810823, 0.355256}, {-0.718213, -0.553310}, {0.761180, -1.567887}, {-1.354477, 0.587993}, {-0.280057, 0.265041}, {-0.485069, -0.830335}, {-0.898486, -0.123829}, {-0.065445, -0.810844}, {-0.075952, 0.012324}, {0.489889, -0.201254}, {0.502262, -0.204768}, {0.228861, 0.614161}, {0.686882, 0.221387}, {-0.191478, -0.314977}, {-0.163156, 0.201862}, {0.981396, -0.176446}, {0.031663, 0.040162}, {0.765293, 0.204843}, {-1.423840, 0.580181}, {0.661978, -0.453962}, {-0.198973, -0.676154}, {0.975239, 0.071402}, {0.514612, 1.173023}, {0.395354, -0.237298}, {0.218742, -0.040218}, {1.092119, 0.149444}, {-0.066491, 1.171302}, {0.600378, -0.193844}, {-0.522677, -0.422476}, {-0.450177, -0.922771}, {0.814332, 0.819734}, {0.611399, 0.414148}, {-0.102235, 1.090889}, {0.172764, 0.367310}, {-0.386690, 0.711734}, {-0.308570, 0.399715}, {-0.067773, 0.037268}, {0.897905, -0.893449}, {0.499070, -0.204820}, {1.054001, 0.253654}, {-1.022458, -0.025210}, {0.791977, -0.988702}, {0.083416, -0.657610}, {-0.203881, -0.187619}, {1.728950, 0.829113}, {-0.980056, 0.458782}, {-0.475889, -0.471833}, {-0.597087, -0.425042}, {1.065324, 0.775118}, {0.503802, -0.715574}, {0.017682, -0.631690}, {-0.846011, -0.086879}, {-1.073453, -0.572789}, {0.668645, 0.492660}, {0.202993, 0.029645}, {-0.464086, 0.246619}, {-0.899470, -0.353428}, {0.399672, -0.546029}, {-0.121598, 1.584198}, {0.616540, 0.126347}, {1.654014, -0.991907}, {0.329572, -0.377064}, {-0.771268, 0.203136}, {0.866739, -0.212090}, {-0.105599, 0.598985}, {0.124672, 0.816280}, {0.148568, -0.916659}, {0.156576, -0.534549}, {0.963588, 1.376216}, {0.514055, -0.130478}, {-0.228784, 0.663864}, {0.478723, -0.412546}, {-0.851050, -1.062536}, {0.424482, 0.064766}, {-0.229494, 0.000992}, {1.328704, -0.161219}, {-0.001671, 1.095202}, {0.127424, 0.140526}, {0.072691, 0.881068}, {-0.449420, -1.174092}, {-0.002478, 0.730130}, {-0.264893, 1.106372}, {-0.113501, 0.098044}, {0.445563, -1.652426}, {-0.648095, -0.615132}, {-0.791597, 0.312268}, {-0.592599, 0.128912}, {0.193724, -0.027621}, {-0.246776, 1.475506}, {0.154953, 0.056356}, {-0.256764, -0.209585}, {1.243059, 0.094700}, {-1.263590, 1.488868}, {-0.715768, 1.026954}, {-0.069072, -0.394451}, {-0.054306, 0.165971}, {-0.905233, 0.403129}, {-0.220554, -0.122628}, {0.364791, 0.286679}, {0.785926, -0.769723}, {-0.735274, 2.193241}, {1.277747, 0.699746}, {0.279424, 0.904941}, {-0.202973, 0.086592}, {-0.778679, -0.431290}, {0.160730, -0.785100}, {-0.503414, -0.322093}, {0.592752, -0.398302}, {-0.224174, 0.376569}, {-0.504882, 0.240802}, {0.639766, 0.479862}, {-0.548174, 0.076778}, {0.839506, -1.051851}, {-0.614694, 0.201207}, {0.946087, 0.430684}, {-0.128392, 0.666809}, {0.392418, 0.875509}, {-0.468207, -0.038870}, {-0.222987, -1.094249}, {-0.745045, -0.662640}, {-0.282590, -0.848140}, {0.273818, -0.451490}, {-0.107371, 0.883462}, {1.090884, -0.618116}, {0.320881, -0.288501}, {-0.802570, -0.344983}, {0.293442, 0.998732}, {-0.027360, 0.016971}, {-0.520384, 1.021780}, {-1.029293, 0.643514}, {0.544240, -0.294024}, {0.814885, 0.293088}, {-0.217184, -1.607462}, {1.042856, -0.193162}, {-0.482617, 0.001200}, {1.290766, 0.396281}, {0.541096, 0.190732}, {-0.185152, 0.422218}, {-0.395013, -0.856063}, {0.129098, -0.208842}, {-1.216610, 0.501032}, {-0.578368, -0.077011}, {-0.142931, -0.107519}, {-0.049935, -1.347985}, {-0.169092, -0.532516}, {0.473700, -0.739075}, {-0.372626, -0.612488}, {0.695860, 0.589931}, {0.090898, 0.189706}, {1.451253, 0.155602}, {0.630673, 1.074650}, {0.523568, 1.240808}, {-0.333037, -1.525041}, {0.828902, 0.384816}, {0.705692, -0.123515}, {-0.161236, -1.091553}, {-0.905419, 1.093307}, {-0.353888, -0.534408}, {0.604700, -1.082505}, {0.014201, -0.516866}, {-2.169492, 1.453974}, {1.951017, 0.818724}, {0.494091, -0.791937}, {0.118409, -0.206657}, {1.085713, 0.213897}, {0.301931, -0.566131}, {-0.259674, 0.527941}, {0.980986, 0.596725}, {-0.596668, -1.134933}, {0.625839, 0.458710}, {-0.334225, -0.120566}, {1.771062, -1.026789}, {0.151459, -1.012159}, {-0.330544, 0.845122}, {-1.728633, -1.435125}, {0.140577, -0.610380}, {0.822159, 0.635061}, {-0.201738, 0.393073}, {0.440206, -0.257053}, {0.260232, -0.046157}, {-0.020715, 0.469076}, {-0.449526, -0.525654}, {1.069078, 1.418019}, {-0.433268, -0.165652}, {-0.085426, -0.660526}, {-0.843452, -1.075621}, {0.160153, -0.609560}, {0.532025, -0.402982}, {1.053319, -0.606113}, {-0.912064, 0.532538}, {0.288336, -0.224900}, {1.049554, -0.798748}, {0.062931, 0.248464}, {1.171278, -0.296591}, {-0.258426, -0.410351}, {0.945094, 0.478489}, {-1.461804, 1.046522}, {-0.633659, 0.358206}, {0.250690, 1.106278}, {0.430452, -0.309765}, {-0.308992, 0.553894}, {0.779977, 0.398830}, {-0.294969, 0.376904}, {0.220612, 0.065218}, {-0.920859, -0.345626}, {0.187574, 0.099608}, {-1.349871, -0.183671}, {0.130552, 0.361476}, {-0.141677, 0.506033}, {0.618300, 1.618166}, {0.475492, 0.079416}, {0.714330, -0.370986}, {-0.573479, 0.180490}, {-0.137712, -0.060913}, {0.515423, -0.368048}, {0.244133, 1.174597}, {-0.525398, 0.663225}, {0.578443, -0.543669}, {1.201958, 0.923160}, {-0.111823, -0.487590}, {-0.073718, 0.190523}, {0.649657, -0.659715}, {-0.409310, 0.134954}, {-1.326234, -1.272925}, {1.305404, 0.226864}, {-0.392474, -0.933792}, {-0.007464, -1.287274}, {-0.446668, -0.005931}, {0.098037, -1.037468}, {1.342139, 0.517189}, {0.428876, 0.529115}, {0.527585, -0.589122}, {0.132382, 0.288948}, {-0.088091, -0.529385}, {-0.211020, 0.106296}, {-0.618083, -0.302373}, {1.818536, 0.685940}, {-0.922613, -0.342791}, {-1.840156, 0.792622}, {-0.553622, -0.586101}, {0.623642, -1.195093}, {-1.132636, 0.579581}, {0.093510, -0.770117}, {-0.885828, -1.187070}, {-0.293717, -0.805523}, {0.400295, -0.348303}, {0.607811, -0.144559}, {-0.692936, -0.145218}, {0.725639, -0.758167}, {-0.143427, -1.162858}, {0.782318, -0.861163}, {-0.606077, -0.183103}, {0.022532, -0.331872}, {-0.240756, -1.411801}, {0.278457, 0.187169}, {0.424589, 0.760281}, {0.483186, -0.084917}, {-1.213938, -0.432077}, {-0.429109, 0.225001}, {0.175712, 0.073672}, {1.027955, 0.430115}, {-0.106412, -1.172744}, {-0.400012, 0.691001}, {0.488778, 0.654797}, {0.674586, 0.222262}, {-0.040199, 0.757857}, {0.335755, -0.779464}, {-0.011836, 0.511340}, {-0.287985, 0.242453}, {-0.323989, -0.022321}, {-1.788818, -0.594621}, {-0.126588, -0.670139}, {-0.582553, -0.282272}, {-0.172383, -1.483735}, {0.097068, 0.374952}, {1.145251, -0.041021}, {-0.661188, -0.015538}, {0.478935, -0.798933}, {0.483136, -0.932957}, {-0.692102, 0.831164}, {0.387143, -0.210910}, {-0.369834, -0.499064}, {-0.552389, 0.968678}, {0.706835, 0.672863}, {0.884666, -1.374115}, {-0.892116, -0.645080}, {0.212438, -0.363604}, {0.120562, 0.094899}, {-0.607090, 0.509514}, {0.391938, -0.197226}, {1.477689, -0.894952}, {0.067956, 0.305202}, {-0.377072, -1.118688}, {0.238509, -0.640692}, {0.985068, -1.082955}, {1.406457, 0.016522}, {-0.195835, 0.951245}, {-0.668623, 0.196354}, {0.629538, -0.359206}, {-2.110332, -0.600784}, {0.218971, -0.422251}, {0.327340, -0.702791}, {-0.506006, -0.186140}, {0.342203, 0.477097}, {-0.211730, -0.864108}, {-0.065807, 0.211029}, {-0.227760, 0.316405}, {0.086344, 0.613594}, {0.237860, 1.320884}, {0.473216, -0.549211}, {0.498238, -0.583895}, {0.286832, 0.326195}, {-0.476474, 0.218899}, {-0.563894, 0.557927}, {0.272322, 0.469703}, {-0.749019, -0.736560}, {0.161585, 0.085403}, {0.056852, 0.115904}, {-0.388830, -0.672548}, {0.884869, -0.590201}, {0.566593, 0.608661}, {-0.516091, -0.918691}, {1.642885, 1.310890}, {0.696677, 0.124297}, {0.445759, 2.250527}, {0.322959, 0.688997}, {0.016110, -0.780982}, {1.171736, 0.361072}, {1.343905, 1.272841}, {0.592350, 0.019416}, {0.152619, -0.147421}, {-0.704640, 0.341073}, {1.099323, -0.430740}, {-0.840177, -0.697932}, {-1.442964, 0.718412}, {0.164263, 0.523929}, {-0.111350, -0.289444}, {1.050958, 0.639940}, {-0.763601, -0.206712}, {-0.631193, -0.041356}, {0.663994, 0.322670}, {-0.258825, 1.093934}, {0.337754, -0.472584}, {-0.618973, 0.215902}, {0.770590, -1.183008}, {1.114851, -0.199457}, {1.027480, 1.933290}, {-0.609203, 1.103349}, {-0.541345, 0.547887}, {0.276828, -0.095631}, {1.215758, -0.061026}, {-0.865888, -0.313945}, {0.134350, -0.986536}, {0.333627, 0.278205}, {0.229353, -0.313560}, {0.822267, -0.147288}, {1.790442, -0.772786}, {0.614975, -0.867141}, {0.824009, -0.340756}, {0.242416, 0.525339}, {-0.913436, 1.352899}, {0.085737, 0.921626}, {0.600046, 0.518829}, {0.840608, -0.399042}, {0.744769, 0.036632}, {-0.040337, 0.836790}, {0.069399, 0.963537}, {0.190218, -1.028734}, {0.357859, -0.557734}, {-0.160823, -0.761802}, {0.679527, 0.810942}, {-0.334324, 0.388009}, {0.635341, -0.443085}, {1.119667, 1.031693}, {0.702179, -0.010668}, {0.687804, 0.335793}, {-1.218997, 0.360120}, {-0.015499, 0.167078}, {0.772188, -0.754889}, {1.119482, 0.633941}, {0.789910, -0.165533}, {-0.352196, -0.008508}, {0.863554, 0.258157}, {0.200500, 0.053978}, {-0.201635, 0.202142}, {-0.195493, 0.605893}, {-0.351966, -0.907111}, {-0.185199, -1.375999}, {-0.288755, 0.112778}, {-0.601478, 0.546465}, {-0.254146, 0.433599}, {1.287544, 0.188691}, {0.748493, 0.772074}, {-0.185359, -0.704725}, {0.297589, -0.523805}, {-1.228142, 0.231061}, {-0.238207, -1.513225}, {-1.093305, -0.811754}, {-1.360744, -0.232347}, {0.770614, 2.942337}, {-1.054750, -0.772966}, {0.639057, -0.927998}, {-0.300836, -0.163147}, {-0.393160, -0.264180}, {-0.502845, 1.088386}, {-0.790613, 0.905711}, {-0.312306, -0.234891}, {0.024799, 0.486804}, {-0.059798, 1.341482}, {-0.463482, 0.141503}, {-0.142495, 0.482216}, {-0.584915, 0.774424}, {0.727377, 0.857342}, {-0.250533, -0.538912}, {-0.708249, -0.711566}, {-1.633626, -0.948018}, {-0.654737, 0.568716}, {-0.452462, 0.609938}, {0.103789, 0.356140}, {-0.028716, 0.443183}, {1.028940, 0.846843}, {-1.932886, -0.497384}, {-0.029238, -0.196571}, {0.059763, -0.375114}, {-0.336361, -0.329419}, {0.088773, -0.164776}, {0.765711, 0.371364}, {0.204439, 0.390603}, {-0.110530, 1.504023}, {-0.431800, 0.089282}, {-0.819449, -0.350066}, {-0.974220, 0.564947}, {0.125759, 0.339755}, {0.317493, -0.006911}, {-1.013535, -0.202630}, {0.112258, 0.117162}, {-0.531978, 0.042502}, {-0.940156, 0.121649}, {-0.725521, 0.466195}, {-0.416124, 0.485405}, {0.336967, 0.057276}, {-0.421566, -0.168387}, {-0.015320, 0.831380}, {-1.056343, -0.068795}, {0.549310, -1.282829}, {-0.194868, 0.315490}, {0.003948, -0.561034}, {0.479671, -0.065741}, {-0.425547, 0.760606}, {0.488399, -0.579394}, {-0.424074, -0.366667}, {0.044047, 1.152952}, {-0.830197, -0.460495}, {-0.814327, 0.057209}, {1.553867, -0.219049}, {0.774422, 0.590411}, {0.363240, -0.485420}, {0.185316, 0.168755}, {-0.564670, -0.244371}, {0.792661, -0.638865}, {-0.024050, -0.436980}, {1.350849, -0.888220}, {-0.143934, 0.300172}, {0.586975, 0.568336}, {-0.081438, -0.547728}, {0.492427, 0.008414}, {0.215698, -0.171356}, {0.462206, 0.692607}, {-0.431732, -0.509402}, {-1.299840, -1.348103}, {-0.738818, -0.011450}, {-0.193146, -1.086403}, {0.998385, -0.142121}, {-0.217947, -0.430734}, {-0.035329, -1.851256}, {-0.353180, 0.927875}, {0.107119, 0.623563}, {0.012206, -0.271749}, {-0.307655, 0.692549}, {-0.622138, -0.761409}, {0.442970, -0.480029}, {0.796093, 0.551437}, {0.009668, -0.449114}, {-0.116923, -0.003272}, {0.747452, 0.198782}, {1.585947, -0.584168}, {0.062659, -2.154515}, {-1.470887, -0.702686}, {-0.377002, -0.215950}, {-1.380013, 0.062652}, {0.664140, 0.181371}, {1.034914, 1.310640}, {0.810257, -0.623334}, {0.768412, -0.116447}, {-0.043917, 1.459535}, {-0.441852, -0.598940}, {0.028953, -0.184729}, {-0.076069, 0.867122}, {-0.752365, -0.121888}, {0.348209, -0.710583}, {1.006050, -0.709281}, {0.321016, 0.506845}, {-1.004044, 0.592095}, {1.476868, 1.249852}, {0.404023, -0.215948}, {-0.786363, 0.092388}, {0.312994, -1.676486}, {0.877315, 0.390367}, {0.304297, 1.872417}, {0.488998, -0.499786}, {0.018221, -0.372451}, {-1.630813, 0.961882}, {-0.677563, 0.211437}, {-0.795802, 0.135461}, {0.520392, 0.265735}, {0.785026, 0.446039}, {-0.362354, -0.016902}, {-0.318927, -0.455923}, {-0.333291, 0.675215}, {-1.334583, 0.593424}, {1.430517, -0.375052}, {-0.502683, -0.736192}, {-0.710810, -0.141498}, {-0.252294, 0.092360}, {0.626259, -0.169977}, {-0.267358, -0.042655}, {0.193435, 0.364396}, {0.847771, -0.951427}, {-0.521408, 0.066863}, {1.582067, -0.274576}, {-0.618104, 0.064801}, {0.613930, -0.093315}, {0.117743, 0.435939}, {1.262775, 0.798231}, {-0.609864, 0.402638}, {-0.433813, -0.204178}, {0.343590, -0.619007}, {-0.178302, 0.528886}, {0.558275, -0.569073}, {-0.158423, -0.646560}, {0.527513, 0.661901}, {-0.991489, 0.090190}, {-0.352216, -0.296703}, {-0.809827, -0.667036}, {-0.509143, 0.613069}, {-0.175233, 0.802702}, {-0.393206, -0.142194}, {0.443495, -0.739842}, {-0.493505, -0.346109}, {0.291099, 0.973915}, {-0.121100, -0.623550}, {0.464915, -0.564442}, {-0.544471, 0.680835}, {-0.476296, 0.594486}, {-0.646494, -0.116102}, {-0.912840, 0.857731}, {0.608502, 0.100114}, {0.831568, -1.091763}, {0.233161, 0.780343}, {-0.197179, 0.037707}, {-0.367386, -0.575712}, {-0.755259, 0.477536}, {0.467144, -0.619239}, {-0.321884, 0.010948}, {0.452682, 0.145276}, {-0.220426, -0.550002}, {-0.256978, 0.137362}, {0.680658, -0.565345}, {-1.750026, -0.017867}, {-0.323665, -0.262173}, {-0.097985, 0.422237}, {-1.404647, -0.993924}, {-0.588194, 0.571803}, {-1.200961, 0.921556}, {0.193916, 2.152188}, {1.013266, -0.106129}, {0.235823, 2.080106}, {-0.108434, -0.729457}, {-0.408723, -0.348886}, {-0.302859, 1.484877}, {-0.312681, -0.505828}, {0.018735, -0.122920}, {0.355886, -0.484280}, {-0.135969, 0.761103}, {0.390779, 1.771250}, {-0.145102, -1.388635}, {-0.416709, -0.621879}, {0.126479, -0.899692}, {-1.448828, 0.318005}, {0.672198, 0.308803}, {-1.764904, 0.014698}, {0.467586, 0.731148}, {-0.866142, -0.129121}, {1.095405, 1.415374}, {-0.288686, 1.532333}, {-0.694974, -0.572545}, {-0.296954, -0.918548}, {0.185017, -0.335333}, {0.106725, -0.810778}, {-0.266406, -0.574720}, {1.024931, 0.523381}, {0.111210, 1.033764}, {1.104428, 0.317206}, {0.138012, -0.485474}, {-0.075850, -0.936313}, {-0.691784, 0.547524}, {-0.960452, -0.600781}, {-0.806045, -0.461982}, {1.408073, -0.255135}, {0.150425, -0.658298}, {0.240710, -0.413124}, {0.206125, 1.431848}, {-0.706788, -0.747984}, {0.209810, 0.344959}, {0.940145, 1.819041}, {-0.423045, 1.613672}, {0.691372, 0.408910}, {0.291379, 1.694717}, {-0.022473, -0.483715}, {1.506409, -0.487754}, {-0.950211, 0.174272}, {0.437884, 0.334518}, {-0.059121, -0.187999}, {-0.706148, 0.532011}, {1.247993, -0.173918}, {0.403025, -0.456743}, {0.101642, -0.201338}, {0.220295, 0.098694}, {-0.544353, -1.008343}, {0.706586, -0.476523}, {0.291079, -0.150127}, {-0.041337, -0.659792}, {-0.493954, -0.757686}, {-0.198818, -0.425300}, {0.765368, -0.713655}, {0.129659, -0.656772}, {0.752741, 0.605671}, {0.059329, 1.098435}, {-0.095906, -1.236300}, {-0.192572, -0.654089}, {0.060002, -0.407818}, {1.023894, -0.192512}, {-0.012820, -0.526931}, {-0.853581, -0.349135}, {0.422981, -0.199832}, {-0.884115, -1.022837}, {0.051870, 2.156258}, {0.511633, 0.370017}, {1.100921, 0.287222}, {-1.091726, -0.326993}, {1.065161, -0.088250}, {1.295012, 0.347661}, {-0.186661, 0.274683}, {0.453460, 0.453078}, {-0.019832, -1.655232}, {0.033441, -0.077400}, {0.083820, -0.808385}, {0.161770, 1.034907}, {-0.408970, 0.435216}, {0.710238, 0.172596}, {0.070505, 0.071455}, {-0.157619, 1.133331}, {0.934837, 0.290817}, {-0.142153, -1.033463}, {-0.805522, -0.609104}, {-0.713519, 0.333743}, {0.766007, 0.180658}, {-0.210227, -0.404890}, {-1.432711, 0.510194}, {-1.527153, -0.138670}, {-1.413773, -1.392381}, {1.162048, -1.121023}, {0.375536, 0.334633}, {0.277678, 0.377802}, {0.353273, -0.438537}, {-0.000468, 0.519358}, {-1.862624, -0.213202}, {0.231657, -0.206180}, {0.579498, 1.438150}, {-0.818714, 0.244540}, {-0.414526, -0.963580}, {1.434481, -0.200950}, {-0.706870, -0.490200}, {-0.445819, 0.232220}, {0.014789, 0.903088}, {0.823644, 0.019996}, {-0.257175, 1.092355}, {0.233427, 1.236390}, {-1.569737, 0.596411}, {0.289963, -0.304775}, {-0.652898, -0.307950}, {0.677093, 0.468114}, {0.199346, -0.368715}, {-0.122099, -0.856128}, {0.527088, -0.699184}, {0.098459, -0.383729}, {0.127642, 0.100256}, {-0.743423, -0.133080}, {-1.904618, -0.208222}, {-0.311420, 0.441420}, {0.314336, -0.480474}, {-0.822712, -0.862232}, {-0.009480, 1.146566}, {-0.001370, -0.736855}, {-0.643167, -0.430793}, {-1.377535, 0.367134}, {0.117747, -0.018534}, {0.118661, -0.605605}, {-0.428251, 0.078424}, {-0.755322, 0.026743}, {0.108427, -0.429369}, {-0.546590, -0.242576}, {-1.123375, 0.034104}, {-0.178010, 0.215736}, {0.555579, -0.157472}, {0.008256, -1.040877}, {0.300994, 0.502246}, {-0.596434, -0.574450}, {0.650520, -0.251038}, {-1.202669, 0.119406}, {1.207843, -0.367324}, {-0.839307, -0.511398}, {-1.142954, 0.350094}, {1.745947, -0.663306}, {-0.197524, -0.058007}, {0.604840, 0.358341}, {-0.629763, -1.061339}, {0.714119, -0.671946}, {-0.957979, 0.108516}, {-0.204673, -0.841928}, {-0.224796, 1.403409}, {0.057728, -0.276108}, {0.022420, 0.907590}, {-0.442873, -0.197745}, {0.070502, 0.367408}, {1.111314, -0.115300}, {-1.214722, 0.435263}, {-0.623381, -0.183199}, {0.842462, 0.271952}, {0.223962, -0.253993}, {0.784241, -0.623105}, {-0.460386, 0.244667}, {0.057513, -0.844943}, {0.252052, 1.072527}, {0.045339, 0.090347}, {-1.550655, -0.849565}, {0.698342, 1.719761}, {0.625755, -0.059108}, {0.461099, 0.873655}, {-0.178899, -0.905113}, {0.378758, 0.050943}, {-0.024118, 0.005723}, {0.139377, -1.441619}, {0.746170, -0.864942}, {2.244304, 0.225823}, {0.941294, 0.456267}, {0.681838, 0.479907}, {0.555077, 0.448809}, {0.113034, 0.326665}, {0.290276, -0.323618}, {-0.310803, -0.740078}, {0.288215, 0.147328}, {0.122018, -0.901168}, {1.102202, -1.702754}, {-0.681899, 1.076125}, {-0.823461, -0.531651}, {0.608237, -0.372707}, {-0.681661, -0.191809}, {0.079867, -1.266244}, {-0.317741, -0.703671}, {0.034086, 0.942178}, {0.168887, 0.177944}, {-0.613740, 0.025035}, {1.089925, 0.392534}, {0.075943, 0.040485}, {0.566377, -0.156880}, {0.660386, 0.045064}, {-0.906557, 0.350211}, {-0.616084, 0.671656}, {-0.353653, -0.928423}, {1.334011, -0.377983}, {0.733590, 0.190001}, {-0.583415, -0.285064}, {1.339272, 0.266120}, {-0.537001, -0.258520}, {-0.448141, -0.050157}, {0.740691, 0.648732}, {1.056314, -0.629005}, {-1.160330, 0.410656}, {0.633715, -0.113482}, {0.220648, -0.289338}, {-1.356221, -1.047442}, {-0.799830, -0.402114}, {-0.855423, -0.218579}, {0.533292, -0.955058}, {-0.590952, -0.359871}, {-1.003588, -0.950145}, {0.031010, -0.073887}, {-0.970717, 0.112552}, {0.905541, 0.082191}, {1.109198, 0.621634}, {0.061115, -0.182655}, {0.519211, 0.584771}, {0.453454, 1.105118}, {0.307900, -0.290329}, {-1.310764, -1.192390}, {-0.990446, -0.449249}, {-0.636245, -1.136897}, {0.194571, -0.105070}, {0.972256, 0.693447}, {-0.291198, 1.374025}, {0.144387, 1.382765}, {-0.101333, -0.022509}, {-0.474852, 0.062917}, {-0.543704, -0.461692}, {0.714138, -0.106485}, {0.040096, 0.285104}, {0.590028, 1.369938}, {0.501543, -0.043429}, {2.614600, 1.102147}, {0.255439, -1.183224}, {-1.069301, 0.552063}, {0.505847, 0.666774}, {0.018523, 2.289326}, {-0.261409, -0.381025}, {-0.633168, -0.802063}, {-0.221651, -0.314856}, {0.314198, 1.603044}, {1.173064, 1.017943}, {-0.665682, -0.159433}, {-1.758748, -0.064417}, {1.147580, 0.950364}, {0.550126, -0.366558}, {0.065759, 0.113614}, {0.956481, 1.179104}, {0.433038, -0.684553}, {-0.367835, -0.136092}, {-1.108652, -0.501821}, {0.014093, -0.724897}, {0.474274, 0.071691}, {-0.878852, -0.454418}, {-0.111987, 0.397469}, {0.980863, 0.508451}, {0.567833, -0.325126}, {0.117299, -0.350239}, {0.496458, -0.149528}, {-0.712447, 0.404552}, {0.050514, -0.370253}, {0.209666, -0.591714}, {-0.392540, -1.209119}, {-0.075244, 0.496292}, {-0.294131, -1.102998}, {-0.209255, 0.078796}, {0.109577, -0.306647}, {-0.214269, 0.731213}, {1.862247, 0.688064}, {-0.992337, 0.128817}, {0.056261, 2.006550}, {-0.259084, 0.729512}, {0.491870, -0.795017}, {0.176987, 0.094347}, {-0.319391, 0.300136}, {-0.069294, -0.021210}, {1.038121, -1.099239}, {1.734655, -0.131408}, {0.361025, 1.818288}, {-0.758635, -0.906905}, {1.433721, -0.082347}, {-0.327756, -1.150218}, {0.449566, 0.413723}, {0.983053, -0.867287}, {-0.937329, -0.376043}, {-0.126866, -0.124008}, {-0.438458, -0.453466}, {-0.101627, 0.012617}, {0.582181, -0.133631}, {0.121428, -0.222195}, {-0.608804, 0.004610}, {-0.280329, -0.071507}, {0.776663, -0.049369}, {0.603737, -0.528278}, {-1.155587, 0.324328}, {-1.123362, -0.454602}, {0.767449, -0.921822}, {-0.352388, -0.357436}, {0.309848, 0.070129}, {-0.656513, -0.652553}, {-0.381851, 0.355358}, {0.495213, 0.523033}, {1.153773, 1.092873}, {0.668633, -0.859082}, {-0.746353, -0.312026}, {1.048775, 0.535930}, {0.279033, -0.054578}, {-0.111243, -0.422662}, {-0.136422, 0.053799}, {-0.056102, 0.342915}, {-1.088014, -0.730922}, {0.878624, -0.890989}, {-0.729911, -0.058834}, {-1.333908, -1.160115}, {-0.684287, -0.253154}, {-1.079448, -0.270283}, {0.151333, -1.649204}, {0.253875, 0.108594}, {0.235712, 0.387503}, {-0.899825, 0.496213}, {-0.610484, -0.533034}, {0.496822, -0.243569}, {-0.524167, 0.235972}, {-1.610220, -0.155522}, {-0.796686, 1.243795}, {-0.581308, -0.236754}, {-0.209195, -0.037144}, {0.184881, -0.083576}, {0.396540, -0.490520}, {0.508980, 1.096300}, {-0.094454, 0.369221}, {0.680896, 1.252947}, {-0.440938, -0.853486}, {-0.157199, -1.304081}, {-1.447599, 0.971928}, {0.626587, 0.396517}, {0.836229, 0.966611}, {1.381874, -0.246085}, {-0.414028, -0.280956}, {0.980019, -0.334138}, {-1.644429, -0.389069}, {0.225519, 0.368235}, {1.116159, -0.726131}, {-0.733320, 0.355245}, {0.988265, -1.747007}, {0.840822, 0.138793}, {-0.117871, 0.688465}, {0.657025, 0.157528}, {-0.117520, 0.629271}, {-0.645882, -0.938485}, {0.980639, 0.197481}, {0.320092, -0.621575}, {1.315216, 0.186380}, {-1.150480, -1.020916}, {1.148288, -0.445450}, {-0.049133, 0.097262}, {0.210559, -0.338083}, {-0.164647, 1.698560}, {-0.134143, -0.581370}, {-0.100706, 0.043457}, {-0.251067, -0.907292}, {0.551859, -0.013725}, {0.299242, -0.340345}, {-0.247395, 1.075102}, {-0.032695, -1.479628}, {0.250204, 0.334675}, {0.859668, -0.605057}, {0.362075, 0.166596}, {0.432570, -0.747261}, {0.674745, -0.020640}, {0.361038, 0.375811}, {0.009795, 0.744204}, {-0.437627, -0.150132}, {-1.149837, 0.074239}, {-0.717292, -1.450907}, {1.485412, 0.238923}, {-0.577879, -0.010250}, {0.641200, -0.964459}, {-0.088981, 0.206840}, {0.593610, -0.502221}, {-1.008813, 0.283182}, {-0.009605, -0.090918}, {-1.338922, 0.333185}, {-1.074846, -1.517178}, {0.539697, -0.906593}, {0.275416, -0.647435}, {1.139667, 1.074978}, {0.070698, -0.375933}, {0.008435, 1.196329}, {-0.222550, 0.250323}, {0.275090, -0.128200}, {0.279230, 0.576149}, {-0.362237, 0.693913}, {-0.614259, 0.504714}, {0.812049, -1.100580}, {-0.370461, 0.966923}, {1.198670, -0.644836}, {-0.031461, 0.128519}, {-0.122097, 0.053159}, {1.315332, -1.008152}, {-0.754167, -0.305309}, {-0.485979, 0.476556}, {0.823664, 1.071616}, {-0.183654, -0.551620}, {0.748615, 0.994233}, {-0.119972, 0.065139}, {-0.849627, -1.159702}, {-0.444765, 0.256956}, {0.209474, -0.472828}, {-0.525549, -1.027303}, {1.757616, 0.445698}, {0.160525, 0.088103}, {0.435382, 0.227305}, {0.218477, 0.170341}, {-0.580507, -0.450303}, {0.398378, 0.017052}, {-0.031351, -0.247548}, {-2.316506, -1.483557}, {-0.443973, -0.691774}, {-0.510807, 0.699816}, {-1.037649, 0.345879}, {-1.257505, 0.629094}, {-0.000852, -0.321557}, {-0.373482, -0.402662}, {-0.022826, -1.218651}, {0.025138, 0.767667}, {0.356935, -1.465306}, {-0.020640, -0.323252}, {0.602591, -0.289913}, {0.046297, 0.283469}, {-0.283535, -0.047672}, {-0.166785, -0.277583}, {-2.385793, 1.082178}, {-0.050855, 0.483435}, {-0.239055, -0.165545}, {0.505107, 0.359352}, {-0.855951, -1.185629}, {-0.394709, 0.226833}, {1.257326, -0.916278}, {-0.745575, -0.046165}, {-2.243851, -0.696840}, {0.551393, 0.147983}, {0.291053, -0.204270}, {0.161488, -0.475875}, {-0.528262, 0.575247}, {-0.986426, 0.773656}, {-0.744878, -0.909927}, {0.320911, 0.629702}, {-0.323660, -0.506678}, {0.028159, -0.259382}, {0.460460, -0.163144}, {-0.813206, -0.350558}, {1.044790, 0.293066}, {-0.132596, 1.665505}, {0.395208, -1.153663}, {0.924725, -0.269132}, {-0.982288, -0.672640}, {0.021874, 0.182806}, {0.249894, 0.425458}, {-0.636470, -0.070118}, {0.024546, -0.394318}, {-0.114422, -0.016105}, {0.604817, 0.799636}, {0.172222, 0.798172}, {-0.091129, 0.328291}, {0.590852, 1.199025}, {-1.487713, 0.087366}, {-1.108675, -0.555536}, {-0.692600, 0.090637}, {0.911874, 0.392273}, {0.402013, 0.091871}, {-2.169173, 0.338864}, {0.067482, -1.073878}, {-0.036547, 1.460194}, {0.266305, 0.645196}, {0.003120, 0.423355}, {-0.238731, 0.052394}, {-1.065448, -0.598678}, {0.055241, 0.168619}, {0.562618, 1.551298}, {-0.301688, -0.337400}, {0.547448, 0.323789}, {0.788771, 0.516224}, {0.132486, 0.681322}, {-0.323760, -0.904475}, {-0.871126, -0.916061}, {-1.544630, 0.204207}, {-0.082182, 0.441189}, {-0.325721, 0.084840}, {-0.000671, -0.910962}, {-1.548705, -0.305130}, {1.464460, 1.600289}, {-1.349656, 0.526047}, {-1.552741, 0.906982}, {-0.519449, -0.233318}, {0.355732, 0.331088}, {-0.489145, 0.230703}, {-0.970139, 0.363476}, {-1.624033, -0.509895}, {0.174146, 0.821782}, {0.724604, -1.376511}, {1.393602, -0.607327}, {-0.510112, 1.657338}, {0.015431, -0.001536}, {-0.130508, -1.555322}, {0.000549, -0.198261}, {0.311467, 1.081502}, {0.243611, -1.360408}, {-0.894903, -0.713205}, {0.388720, -0.109925}, {0.521072, 0.398730}, {0.574843, 0.157766}, {-0.617189, -0.437769}, {-0.211497, 0.748437}, {0.702855, 0.433536}, {0.432827, -0.382179}, {0.447150, 1.156332}, {-0.241624, 0.581731}, {1.292169, 0.119941}, {0.294642, -0.871407}, {0.078200, -0.381604}, {1.032330, 0.908219}, {0.814741, -0.010627}, {-0.355983, -0.219502}, {-0.243898, -0.682654}, {0.635359, -1.737373}, {-0.107756, -0.345466}, {-1.263305, -0.370563}, {0.175980, 0.376202}, {1.108166, -0.738982}, {-0.840360, -0.285063}, {-0.324492, -0.354966}, {0.478240, 0.505811}, {0.319641, 0.856630}, {-0.332756, 0.510426}, {2.005001, 0.405899}, {0.155406, -1.227927}, {0.289207, 0.937761}, {0.051751, -0.221727}, {0.149748, 0.268723}, {-1.025125, 0.344019}, {0.582839, -0.321769}, {-0.775607, 1.441111}, {0.027304, -0.584074}, {0.863740, 0.627974}, {-1.060986, 0.321724}, {-0.281804, -0.212668}, {-0.329657, 0.371799}, {0.531848, -0.158105}, {0.026672, -0.486360}, {-0.218047, 0.635491}, {0.666709, 0.993036}, {0.459120, 0.452677}, {0.248002, 0.115551}, {0.206833, -1.105758}, {-1.569637, -0.151421}, {0.180787, 0.166870}, {1.226875, 1.017497}, {-1.217281, -0.448781}, {-1.565721, 0.396797}, {-0.217848, -0.273230}, {-0.526096, 0.662491}, {-1.229207, 0.003437}, {0.383000, -0.372112}, {1.650689, 0.790800}, {0.536051, 1.136376}, {-0.392390, -0.182759}, {-0.163732, -1.005985}, {-1.140970, 0.475364}, {0.184716, -1.063705}, {0.945672, -0.647324}, {0.317886, -0.600098}, {-0.396886, 0.775971}, {0.101952, -0.090515}, {0.276508, 1.253623}, {-0.416748, 0.718122}, {-0.099947, -0.530635}, {-1.499713, 0.042544}, {0.397603, -0.268105}, {0.204542, -1.122999}, {-0.983787, -0.646320}, {0.250761, -0.124317}, {0.473183, 0.341900}, {-0.705158, 0.158472}, {0.371776, 0.467056}, {0.257410, -1.623932}, {0.092234, -1.078695}, {-0.295587, 0.833320}, {-0.531598, -0.934193}, {0.124603, -0.162051}, {-0.040780, -0.840548}, {0.785678, 0.974760}, {-0.282413, 0.507355}, {0.057080, -0.754205}, {-0.817044, 0.275642}, {0.449437, 0.089153}, {-0.482425, 0.004603}, {1.564964, -1.225545}, {-0.296003, 1.012181}, {0.691527, 0.516007}, {0.861031, -0.816600}, {0.276897, -0.215415}, {-0.478248, 1.152079}, {-0.243767, 0.552381}, {-0.615166, 0.120121}, {-0.258476, -0.311377}, {-0.105806, -1.233470}, {0.933500, 0.163247}, {0.430437, 1.092868}, {-1.072369, -0.214236}, {-0.893004, 0.971634}, {-0.207458, -0.661337}, {0.591135, 0.252093}, {-0.044583, 0.323754}, {0.455226, 0.549888}, {1.492632, 0.101093}, {-0.299396, -0.684097}, {0.378218, -0.334619}, {0.232610, -0.041219}, {0.051506, 0.557403}, {1.217142, -1.249841}, {0.292157, 1.470057}, {0.044903, 0.071167}, {-0.290396, 0.496778}, {-0.181920, 0.671063}, {-0.579713, -1.039686}, {-1.356184, 0.198084}, {0.175306, 1.691410}, {1.030813, -0.581909}, {-0.959255, -0.444030}, {-0.357172, -0.625541}, {0.681264, 0.143548}, {-0.065022, -1.255416}, {-0.025972, 0.751640}, {0.195418, 0.198967}, {-0.581082, 1.283469}, {0.990660, 0.778059}, {-0.282029, 1.107940}, {-0.273763, 0.542701}, {0.995269, 0.786820}, {-0.232447, 0.365286}, {0.704749, 1.074984}, {0.644010, 0.101394}, {0.378756, -0.170049}, {0.796258, 0.096740}, {0.728484, 0.048925}, {-0.029005, 1.135049}, {-1.414461, 0.100530}, {0.195218, 1.644827}, {-1.140545, 0.941779}, {-0.380364, -0.295396}, {-0.489642, 0.720380}, {0.491530, 1.084624}, {0.771087, 0.723882}, {-0.079504, -0.260956}, {0.512847, 0.722547}, {0.807801, -0.638746}, {-0.235408, -2.425129}, {-0.331496, -0.883682}, {-0.331335, 0.149970}, {0.777123, 0.876489}, {1.812793, -0.280792}, {-0.603163, 0.962356}, {-0.433949, 0.895134}, {0.611068, -0.002651}, {-0.050707, -0.939219}, {0.333190, -0.695877}, {1.033787, -0.977412}, {1.029110, 0.572951}, {-0.703830, 0.009984}, {-0.605666, 0.240015}, {-0.892166, -0.256507}, {0.310084, -0.876146}, {1.405525, 0.188992}, {-0.818726, 0.673212}, {0.010904, -1.077932}, {-1.260912, 0.553293}, {-0.193185, 0.554862}, {-0.169833, -0.541666}, {0.022431, -0.220661}, {-0.072948, 0.560653}, {-0.643691, -0.722108}, {-0.414350, -0.104367}, {0.708357, 0.463080}, {0.714304, -0.151360}, {-0.658587, -0.887861}, {0.149199, 0.432913}, {-0.530458, 0.445705}, {1.826116, 1.011888}, {0.656833, 0.119869}, {-0.563687, 0.624626}, {-0.525881, 0.838023}, {0.361541, 0.559821}, {-1.743937, 0.165666}, {-1.349337, 1.152104}, {-0.049679, 0.493514}, {1.987946, -0.325951}, {0.055513, 0.426012}, {-1.269326, 0.122713}, {-0.773301, -0.328201}, {0.863300, 0.397242}, {1.404658, 0.490418}, {0.697909, -1.272366}, {0.346984, 0.771560}, {-0.275198, 1.462558}, {0.614286, -0.583483}, {0.491689, -0.121321}, {0.868958, -0.218826}, {0.802647, 0.609581}, {-0.178894, -0.484794}, {1.554270, -0.459034}, {-0.578008, -0.604401}, {0.141200, -0.810175}, {0.444930, 1.801883}, {-0.510472, 0.370071}, {0.280709, -1.144972}, {0.020627, -1.159767}, {-0.815817, -0.708195}, {1.525475, -1.186390}, {0.277199, 0.101433}, {-0.263937, -0.366057}, {-0.084328, -0.735973}, {-1.014961, -0.808112}, {-0.463739, 0.359998}, {-0.195469, -0.339523}, {-0.016981, 0.736436}, {-0.265756, 0.651378}, {1.181170, 0.229175}, {0.508341, -0.387702}, {0.232816, 0.750349}, {0.118147, 0.881985}, {0.775509, -1.072872}, {0.126875, -0.169368}, {0.733796, -1.038803}, {-0.002779, 1.199573}, {-0.771687, -0.819622}, {-0.160414, 1.766988}, {-0.554493, -0.822178}, {-0.966927, -0.264584}, {-1.666005, 0.562460}, {-1.142024, -0.696414}, {0.406841, 0.433538}, {-0.370948, -1.115653}, {0.136048, 0.160321}, {0.288581, 1.454045}, {0.877842, -0.195856}, {-0.788680, -1.099470}, {-0.132225, 1.177897}, {0.090549, 0.626800}, {-0.773979, -0.074852}, {0.684609, 0.690323}, {0.177050, -1.167072}, {-0.324256, -0.482870}, {-0.176754, -0.424217}, {-1.014998, -0.298680}, {-0.474555, -0.796117}, {0.283239, 0.175760}, {0.614617, 0.095776}, {-0.294539, -0.581832}, {-0.411225, -0.981276}, {0.042082, 0.873893}, {-0.603924, 0.401098}, {-0.783720, -0.094055}, {-0.750818, 1.155413}, {-0.229883, -0.177973}, {-0.439507, 0.600696}, {1.064919, 0.193246}, {-0.304774, 0.765127}, {-0.423589, 1.423282}, {0.226341, 0.048299}, {-0.491662, 0.021729}, {-1.190822, -0.192527}, {0.236763, -1.021980}, {0.347245, 0.305465}, {0.437791, -0.174323}, {0.293884, -1.183318}, {0.090410, -0.351897}, {0.127531, 0.572262}, {-1.046283, -0.452403}, {0.940061, -0.475348}, {-0.986271, 0.443950}, {0.220640, 1.032270}, {0.286851, -0.234600}, {0.875448, -0.665507}, {0.054512, 0.468117}, {-0.130507, 1.089372}, {-0.035702, 0.486985}, {0.069264, -0.306520}, {-0.066945, -0.482707}, {0.452421, 0.252962}, {0.597328, -0.457166}, {-0.475184, -0.265545}, {0.663543, -0.025896}, {0.284485, 0.141732}, {0.041567, -0.957668}, {0.290973, -0.844633}, {-0.681949, -1.232429}, {0.017290, 0.318637}, {-0.575524, -0.211416}, {0.508609, 0.616042}, {0.019156, 1.014363}, {-0.230623, -0.152963}, {0.390757, 0.179639}, {-0.076114, 0.571760}, {-0.385456, 0.807338}, {1.161341, -1.117539}, {0.108692, -0.217050}, {0.124773, -0.057939}, {0.460042, -0.075353}, {0.381092, -0.249534}, {0.421018, 0.484359}, {0.008405, -0.001483}, {-1.033700, 0.064492}, {0.168744, -0.730623}, {-0.456130, -0.563921}, {-0.042797, -0.009800}, {0.296420, 0.994668}, {-0.431712, -0.260015}, {-0.851644, 0.160001}, {0.315681, -0.696367}, {2.018690, 1.186418}, {-0.250355, -0.220666}, {0.748427, -0.192764}, {-0.047138, -0.852542}, {0.211458, 1.086426}, {0.871051, -0.574737}, {-0.562745, 0.929652}, {0.283267, -0.955651}, {-1.076759, -0.129783}, {0.675245, 0.669145}, {-0.702168, -0.896492}, {-0.291861, 0.305292}, {-0.395244, 0.389980}, {1.207996, 0.801305}, {0.975263, -0.313611}, {-1.106120, 0.102991}, {0.171218, 0.482130}, {0.049836, 0.344150}, {-0.574798, 0.577927}, {0.172133, 0.333449}, {-1.172473, 0.893130}, {1.350215, -0.102154}, {0.456540, 0.882785}, {0.794284, -1.919899}, {0.870210, 0.114615}, {0.286346, 0.295210}, {0.213541, 1.053429}, {0.087514, -0.244276}, {-0.872078, 0.726523}, {0.614549, 0.116808}, {-0.631306, -1.519765}, {-0.542784, 1.390314}, {0.087673, 0.809103}, {-1.379197, -0.585950}, {0.481568, 0.087880}, {-0.119636, -0.372124}, {0.016361, -0.024546}, {0.371448, -0.472289}, {-0.572025, 0.092977}, {0.848296, 0.441249}, {-0.453304, 0.205288}, {-0.271298, 0.488850}, {-0.281843, -0.272080}, {-0.630517, -0.095495}, {-0.762736, -0.986147}, {0.057032, 0.993819}, {-0.237911, -1.264914}, {0.382413, -0.189031}, {1.303322, -0.407785}, {0.538644, 0.342608}, {0.330098, -0.259188}, {-1.271100, -0.197699}, {1.826721, 0.415414}, {0.508481, -0.379909}, {-0.724041, -0.599641}, {-1.260518, -1.057946}, {-0.374209, -0.096198}, {0.392033, 1.122224}, {-0.810644, 0.587815}, {0.365400, 1.456110}, {0.729153, 0.098419}, {-0.225790, -0.539353}, {-0.858060, 0.189621}, {0.376242, -0.480459}, {0.232259, -0.269844}, {0.129211, 1.283390}, {-0.948935, 0.157627}, {0.613247, 0.455174}, {-0.868574, 0.557501}, {0.133104, 1.933073}, {0.493281, -0.734954}, {-0.317203, 0.085507}, {-0.072179, -0.635623}, {-0.985795, 1.545802}, {0.274456, -0.767398}, {0.728872, 0.296392}, {0.593057, 0.123323}, {-0.183197, 1.056002}, {-0.032735, -0.029408}, {0.677645, 0.164514}, {0.091211, -0.485727}, {-2.498205, 0.808644}, {0.996395, 0.003573}, {0.266711, -0.454450}, {-0.263794, -0.040333}, {0.354992, -0.771940}, {1.172659, -0.469942}, {-0.367261, -0.704077}, {-0.143653, 0.755396}, {1.250809, -0.502261}, {1.019959, -0.368994}, {1.590169, -0.138417}, {0.177393, 0.277887}, {-0.611047, 0.094640}, {-0.549878, -0.036917}, {0.807628, 0.821926}, {-0.010075, 0.421684}, {-1.108953, -0.164506}, {-1.299036, -0.726626}, {0.671054, -0.292631}, {0.742427, -0.086543}, {-1.439898, -0.338884}, {-0.130204, 0.124819}, {0.283823, 0.657034}, {-0.109731, -1.711867}, {-0.245196, 0.209915}, {0.134997, -0.672792}, {0.052287, -0.037615}, {0.660337, -0.488347}, {-0.874463, -0.641201}, {-0.570408, 0.594626}, {0.681125, 1.678168}, {0.795936, -1.473398}, {0.778924, -0.690375}, {0.431527, -0.973408}, {-0.440928, -0.786162}, {0.032495, -0.001239}, {0.384671, 0.422006}, {-0.232534, 0.009146}, {-0.797171, 0.074804}, {0.273856, -1.269545}, {-0.171058, -0.791818}, {1.061619, -0.008526}, {1.034158, -0.217879}, {-1.073993, 0.364692}, {0.025259, 0.399442}, {-0.054965, 0.068811}, {-0.267747, -0.643064}, {1.461066, -0.012076}, {-0.836750, 1.168916}, {0.751557, 0.373319}, {0.284049, -0.561823}, {0.913427, 0.006951}, {0.604871, 0.613051}, {0.938690, 0.069825}, {0.501171, -0.252792}, {0.173783, 0.437109}, {-0.295979, -0.584728}, {0.268176, -0.073450}, {-0.039777, 0.110535}, {0.448278, -0.594228}, {-0.298566, -0.370610}, {0.359251, 1.950238}, {0.585298, -0.306953}, {0.002142, -0.517386}, {0.039309, 0.239663}, {-0.535150, 0.901889}, {0.909644, -0.597911}, {1.686969, -0.229593}, {-0.675714, -0.593584}, {-0.388048, -1.333594}, {0.141555, -0.868886}, {0.566275, 0.216197}, {0.132033, 0.260242}, {0.623869, 0.696830}, {0.374297, -0.755016}, {-0.375173, -0.919679}, {0.062230, 0.203455}, {-1.171487, 1.698409}, {-0.657380, -0.503744}, {0.414301, 0.170470}, {-0.611193, -0.370376}, {0.470375, -0.330994}, {-0.990314, 0.032083}, {-1.312575, -0.450515}, {0.164736, -0.128481}, {-0.912458, -1.485285}, {-0.073236, -0.747723}, {0.278586, -0.044914}, {-0.449681, -1.314391}, {0.509207, 1.963487}, {0.443624, -1.487975}, {0.605531, 0.966878}, {0.884828, 1.743505}, {-0.335874, -0.307016}, {-0.615678, 0.670790}, {0.953036, 0.532101}, {0.825614, 0.299899}, {0.399454, -0.946779}, {-0.563757, -0.802924}, {-0.023567, 0.554864}, {0.046483, -0.362895}, {-0.330303, 0.001323}, {0.433488, 0.570663}, {-0.127014, 1.545073}, {0.235044, -0.692703}, {0.339960, -0.764085}, {0.765956, -0.657851}, {1.077800, -0.036173}, {0.431734, -0.931291}, {0.205175, 1.147130}, {-0.058883, -0.741478}, {0.538996, 0.374879}, {-0.435105, 0.405032}, {0.930107, 0.775706}, {0.158508, -0.559880}, {-0.043020, -0.139690}, {0.218128, -0.940794}, {0.107406, -0.191890}, {-0.040673, -0.450419}, {0.710685, -0.272868}, {0.214608, -0.733148}, {-0.440708, -0.166709}, {0.216889, -1.104968}, {0.114942, 0.352891}, {0.515426, 0.834965}, {-0.186585, -0.424557}, {1.257561, -0.686647}, {-0.278166, -1.068819}, {0.045243, -0.149820}, {-0.806871, 0.387979}, {0.040414, -0.705648}, {-0.016666, 1.472054}, {-0.427683, 0.185384}, {0.017081, 0.122558}, {-1.422488, 0.695789}, {0.084603, 1.586049}, {-0.226098, -0.072565}, {-0.689706, 0.246104}, {0.644654, 0.604549}, {-0.260322, 1.463776}, {-0.430197, 0.702709}, {-0.736554, 1.401740}, {0.204332, -0.375610}, {-0.939807, 1.309502}, {-0.037928, 0.882787}, {-0.338569, 0.066617}, {0.075071, 0.541251}, {0.172982, 1.021832}, {0.431851, -0.387000}, {0.307106, -0.919275}, {0.988648, -0.253024}, {-0.673928, 0.782128}, {-0.688000, -0.918977}, {-0.027596, 0.365924}, {-0.017926, 1.175705}, {0.199711, -0.926633}, {0.739217, -0.155412}, {-0.592162, 0.021539}, {0.080983, -0.276297}, {0.537674, -0.246176}, {0.015238, 0.398952}, {-0.027734, -0.249279}, {-1.378429, 0.127339}, {-0.809060, 1.028061}, {0.218043, -0.052562}, {0.856957, 1.006954}, {-1.011526, 0.164596}, {0.476552, 0.826400}, {0.022545, 0.496168}, {-0.593984, 0.825097}, {-0.170301, -0.015034}, {0.206013, 0.981045}, {0.558955, -2.047671}, {-0.285619, -0.535242}, {0.338595, -0.054516}, {-0.320398, 0.326921}, {-1.165209, -0.830182}, {-0.247664, -0.461885}, {0.566396, -0.099876}, {-0.062142, 0.605779}, {0.862879, 0.021585}, {-0.964586, -0.456012}, {0.383126, -0.226075}, {1.125091, 0.452775}, {0.287649, 1.076596}, {0.090020, 0.540193}, {-0.329572, 1.895356}, {0.883979, -0.133990}, {0.777596, 0.934683}, {0.305673, -0.097759}, {0.445752, 0.546775}, {0.438676, -0.401466}, {0.515517, 0.663239}, {-0.861769, -0.334754}, {-1.155387, 1.376435}, {0.693576, 0.380899}, {-0.233764, -1.427252}, {-0.512225, 0.275704}, {-1.300603, -0.025943}, {-0.886231, 0.393107}, {0.203813, -1.151956}, {1.065475, 0.274747}, {1.298933, -0.171110}, {-0.034164, -0.546428}, {1.344656, 0.280082}, {0.303208, -0.150756}, {-0.278895, 0.217139}, {0.774302, 0.280649}, {-0.397168, -0.748535}, {-0.154686, -0.416415}, {0.108531, -0.707248}, {1.044479, 0.517916}, {-1.079087, -0.181141}, {-0.618875, -0.601089}, {-0.903401, 1.369553}, {-0.434703, 1.004383}, {0.084219, -0.594635}, {0.760134, 0.396506}, {-0.868353, 0.425362}, {0.190516, -0.470775}, {0.130523, -0.050180}, {1.613252, -0.894441}, {-1.230645, 0.027123}, {-0.207136, 1.406158}, {0.097428, 0.373589}, {1.101023, 0.803449}, {1.891159, -1.054308}, {-0.158666, -0.325728}, {0.218607, -0.427098}, {0.581789, -0.007118}, {0.407515, 0.254448}, {0.153202, -1.566655}, {1.270156, 0.791481}, {-0.807984, -1.293868}, {-0.631812, 0.190605}, {1.684536, 0.502642}, {-0.623167, -0.326260}, {0.460536, 1.490078}, {-0.633215, -0.730038}, {0.455857, -0.569264}, {1.113987, 0.512264}, {-0.303183, -0.813196}, {1.242308, 0.346664}, {0.235454, 0.588078}, {0.884906, -0.682330}, {-0.870385, 0.197874}, {-0.392108, 1.132213}, {0.139987, 0.749446}, {0.057771, -0.617700}, {-0.090352, 0.118191}, {0.007506, 0.480385}, {-0.183661, -0.349638}, {-0.201963, 1.476555}, {-0.705242, -0.479413}, {0.975864, 0.280884}, {0.972210, 0.753330}, {0.338783, -0.040685}, {-0.054492, 0.060498}, {-0.159293, 0.819645}, {-1.053555, 0.401428}, {0.115345, -0.107756}, {-0.194026, 0.187454}, {0.439241, -0.428716}, {-0.065278, -1.075082}, {-0.272430, 0.840665}, {-0.259244, 0.669703}, {0.033760, -1.203906}, {0.088858, -0.092993}, {-0.855095, -0.299047}, {-0.255525, 0.089061}, {-0.202798, 0.134231}, {0.574524, 0.323405}, {-0.355686, -0.509011}, {-0.238557, 0.035684}, {-0.381287, -0.557626}, {0.657797, 0.952902}, {-0.077875, 0.403221}, {-0.237508, 1.411722}, {0.652551, -0.088574}, {-0.013073, 0.581057}, {0.570232, -0.572671}, {1.442937, -1.109803}, {0.997920, -0.010095}, {-0.152155, 0.277499}, {-0.584876, -0.218181}, {0.717679, -0.143585}, {-0.075248, -0.695632}, {-1.576641, -0.266963}, {-0.228247, -1.087442}, {-0.672358, -0.340599}, {-0.682509, -0.975534}, {0.412126, 0.155315}, {0.540229, -0.913902}, {-0.949688, -0.498559}, {0.038080, -0.334697}, {-0.844788, 0.671919}, {-0.340829, -1.268134}, {0.033822, 1.867938}, {-0.995863, -0.338217}, {0.179299, -0.122295}, {-0.037869, -0.933049}, {-0.750164, -0.719282}, {-0.833977, 1.003917}, {0.932833, 0.760645}, {0.867564, 0.655081}, {-0.504874, -0.636730}, {0.714318, -1.290905}, {-0.672831, 0.341525}, {0.278639, 0.168889}, {-1.057328, -0.938548}, {-0.028958, 0.765673}, {0.659485, -0.427439}, {-0.688018, 0.905752}, {0.593115, -1.081085}, {1.020607, -1.035200}, {-0.288406, 0.254196}, {0.681091, -0.195788}, {-0.405965, 0.877370}, {0.247328, -1.348181}, {0.193907, -0.618541}, {0.104252, -0.480525}, {-1.219477, -0.511557}, {-0.355216, 0.903456}, {-1.510029, -0.513418}, {-0.622239, 1.647319}, {1.211936, -0.279494}, {-0.944064, 0.760953}, {0.165329, 0.746784}, {1.123063, 0.150372}, {0.591389, 0.426566}, {-0.763105, 0.099885}, {-0.233567, -0.051927}, {0.451271, 0.672933}, {-0.319276, -0.725166}, {0.090943, 0.256992}, {-0.740401, 0.083129}, {-0.493689, 0.594996}, {-1.160349, 0.225323}, {-0.120932, -0.308355}, {-0.242434, 0.784263}, {-0.564637, -0.499833}, {-0.094070, -0.250553}, {-0.953770, -0.371332}, {1.661581, 0.171338}, {0.341775, 0.270245}, {0.118130, 0.083808}, {-0.079126, -0.216981}, {0.338884, 0.258435}, {0.264433, -0.841639}, {0.232893, -1.129943}, {1.240106, -0.052206}, {0.209045, 0.058734}, {0.520361, 0.888685}, {-0.349822, -0.636562}, {0.594371, 1.144844}, {0.075638, 0.714484}, {-0.784900, -0.809998}, {0.662100, -0.092575}, {0.056696, 0.432525}, {-1.239459, 0.384416}, {-0.006458, 0.746883}, {-0.290814, -0.506631}, {0.561491, -0.077239}, {-1.024084, 0.663394}, {-0.157999, -0.050504}, {1.085344, -0.554264}, {-0.708002, 0.222259}, {-0.593735, -0.009698}, {0.223185, 0.251755}, {-1.023014, 0.387383}, {0.397333, 0.864350}, {1.103984, 0.475520}, {0.352685, -0.245976}, {0.549224, 0.087034}, {-0.472024, 0.633377}, {-0.620719, -0.384944}, {-0.442898, -0.177685}, {-1.124416, 1.350868}, {0.618839, 0.158407}, {0.718180, 0.334085}, {-0.107034, -1.414157}, {0.390844, -0.348879}, {0.416452, -0.381163}, {0.016589, 0.693169}, {0.210261, 1.649291}, {0.151838, 0.205813}, {-0.595573, -0.768804}, {-0.160431, -0.717857}, {-0.510800, -0.293505}, {-0.818709, 0.437824}, {0.545773, 0.032159}, {0.676537, -0.059850}, {-0.311443, -1.175198}, {0.157728, -1.121027}, {0.012740, 0.536150}, {-0.639492, 0.488597}, {-0.070496, -0.204313}, {0.234541, 0.328949}, {0.236419, -0.139396}, {-0.288891, 0.889796}, {0.148007, 1.176270}, {0.546853, 0.583059}, {-0.361551, 1.330611}, {1.183964, 1.397033}, {-0.993293, 0.519104}, {-0.712212, -0.401528}, {0.445422, -1.006540}, {0.778229, -0.924857}, {0.140488, -0.120001}, {-0.930823, 0.679986}, {0.269149, -1.501842}, {0.630853, -0.526320}, {0.957876, -0.802863}, {0.190233, -1.009434}, {-0.185559, 0.932629}, {0.050613, -0.086777}, {0.020035, -0.059037}, {-0.511718, -0.355513}, {-0.795821, 0.050420}, {-0.656840, 1.891314}, {-0.055379, 0.405881}, {0.539094, 0.845218}, {-1.014806, 0.375225}, {-0.503707, 1.354756}, {0.124660, -1.563966}, {-0.465392, -0.054315}, {-0.437257, 0.566359}, {-0.082575, -0.150215}, {-0.133522, 0.536886}, {0.594595, 1.933791}, {0.914843, -0.872862}, {-0.247467, -0.433828}, {-0.064788, 0.077212}, {0.778095, -0.045493}, {0.366523, 1.293263}, {0.094333, 0.230801}, {-0.614536, 0.463331}, {0.430178, 1.113947}, {-0.150038, 0.174521}, {0.438024, 0.254990}, {0.480884, -1.856722}, {-0.666409, -0.255484}, {-0.457158, -0.599194}, {-0.450171, 0.118477}, {0.497637, -0.101183}, {-1.705586, 0.405099}, {0.259566, 0.922599}, {0.672946, -0.407264}, {0.324409, 0.900242}, {-0.243075, -0.163768}, {0.051280, 0.490307}, {0.571128, 0.105678}, {0.345743, -1.177099}, {-0.869364, -0.068202}, {-0.334410, 0.647972}, {0.476318, -0.010292}, {-0.404522, 0.623306}, {-1.162121, -1.071830}, {-0.627528, -0.384318}, {-0.337665, -1.341870}, {0.041529, 0.841819}, {-0.201762, -0.736758}, {0.184452, -0.757867}, {-0.709406, -0.513657}, {-0.135826, -1.416885}, {-0.764527, -0.630076}, {-0.759073, 1.284986}, {-0.016376, -1.529208}, {1.348773, -0.176343}, {-0.604174, 0.991312}, {-0.281693, -1.131040}, {0.070203, 0.284520}, {-1.229019, -0.521961}, {-0.321063, -0.524171}, {-0.284333, -0.886437}, {0.325590, -0.528520}, {0.254426, -0.232536}, {0.263271, -0.448853}, {-0.872268, 0.657765}, {-0.819516, -0.328243}, {-0.259070, 0.625280}, {-0.590739, -0.670188}, {0.493374, 0.019055}, {1.344704, -0.174393}, {-1.182374, -1.425261}, {-0.666870, 0.434800}, {-0.225687, 0.069924}, {0.375164, 1.016698}, {0.327044, -0.675835}, {0.497187, 0.790896}, {-0.054661, -0.971456}, {0.260230, 0.159026}, {-1.246029, -0.535410}, {-0.124982, 0.871965}, {1.010443, 1.001963}, {0.452742, -0.029144}, {0.117958, -0.136449}, {0.148605, -0.229105}, {0.251393, 0.825563}, {0.730487, 0.258166}, {-0.610108, 0.505836}, {0.797900, 0.109366}, {-0.107968, 0.039054}, {0.252653, -0.138314}, {0.035959, 0.047755}, {-1.412453, -0.353756}, {-0.174516, -1.100457}, {-0.405645, 0.021713}, {-1.214659, -0.958074}, {-0.598051, -0.067393}, {0.459193, -0.091313}, {-0.584458, -0.757231}, {-0.806303, -0.669604}, {0.808333, 0.602605}, {-0.258282, -0.747621}, {0.089092, -0.642856}, {-0.730287, 0.033052}, {0.087943, -0.788594}, {0.341008, -0.211460}, {0.000571, 0.004990}, {0.670368, -0.386947}, {0.557711, -0.002995}, {-0.293485, -0.872980}, {-0.783528, 0.580868}, {-1.146005, 1.580005}, {-0.361812, 1.094479}, {0.124733, 0.413218}, {-0.158285, -0.637446}, {0.364533, 0.669450}, {-0.382480, 0.147327}, {-1.131368, -0.908078}, {-0.134073, 0.755815}, {0.085353, 0.234990}, {0.038784, -0.362630}, {-1.186840, -0.015796}, {0.464353, 0.494665}, {-0.835406, 0.374020}, {-0.321494, 0.250667}, {0.327866, 0.142119}, {0.104908, 0.694259}, {0.081477, -0.930475}, {-1.022207, 0.157953}, {1.114196, -0.318852}, {-0.153446, -0.083414}, {-0.004149, -1.802615}, {0.061545, -0.040178}, {-0.799257, -0.743362}, {-0.208531, -0.357144}, {-0.319060, 1.569294}, {0.077045, -0.067189}, {-0.161677, 0.635664}, {-1.405501, -0.763577}, {-0.397846, 0.381495}, {-0.609449, 0.151477}, {0.790843, 0.583281}, {-0.125419, -0.673059}, {0.048552, -0.170964}, {0.251041, 1.361702}, {0.146372, -0.095489}, {0.636802, 0.172758}, {0.019193, 0.213042}, {-1.039100, -1.241302}, {-0.564480, -0.945689}, {0.486241, -0.284521}, {0.331050, -1.330519}, {-0.267252, -0.434646}, {0.766397, -0.345934}, {-0.200744, 0.569833}, {-0.041749, 1.160658}, {-0.166904, 0.567353}, {-0.647654, -0.482519}, {1.259189, 0.238637}, {-0.061864, -1.133994}, {0.709167, 0.066215}, {0.421481, 0.512487}, {0.539837, 0.885868}, {-0.840289, -1.137802}, {1.081907, -0.754870}, {0.139268, -0.120622}, {1.964821, 1.068368}, {0.623684, 0.427752}, {-0.307559, -0.061760}, {-0.075474, -0.859298}, {0.856064, -0.238438}, {0.100253, 0.302974}, {-0.637176, -0.566873}, {-0.008290, 0.282227}, {1.214723, 0.715509}, {-0.162779, -1.789175}, {-0.134063, 0.710633}, {-0.519932, 0.522329}, {0.204941, 0.159361}, {-0.482306, -0.376938}, {-0.188561, 0.397104}, {0.440798, 0.479065}, {0.765870, 0.912747}, {-0.419145, -1.087277}, {0.200862, 0.291699}, {1.606653, 0.419064}, {-0.231721, -0.095246}, {-0.709828, -0.172976}, {0.156692, -0.203509}, {-1.074669, 0.010797}, {0.247751, -0.531622}, {0.596496, -0.743859}, {-0.167848, 0.769772}, {-0.600885, -0.306912}, {-1.540693, 0.221595}, {0.449488, -0.651038}, {-0.250910, -0.287887}, {-0.367598, 0.361719}, {0.494129, 0.106607}, {-0.074593, -1.892982}, {0.883074, 0.395411}, {-1.092268, 0.178541}, {-0.087335, -0.713201}, {-0.276838, -0.297331}, {0.652034, -0.294585}, {0.545522, -0.253011}, {0.923416, 0.397211}, {-1.625554, -0.069215}, {0.004244, -0.025244}, {0.961205, 1.110819}, {-0.183857, -0.022013}, {0.193756, 0.316726}, {-2.046393, -0.164273}, {-0.368365, -0.635641}, {-0.977759, 0.639374}, {-0.511194, 0.291523}, {-0.240401, 0.676329}, {0.444406, 0.962063}, {-0.276425, 1.306324}, {-0.632475, -0.521505}, {-2.202754, -0.707231}, {0.036750, -1.180940}, {1.569251, -0.049689}, {0.398289, 0.888255}, {0.348308, -1.632712}, {-0.564295, -0.266565}, {0.269295, -0.357566}, {0.717308, -0.386385}, {0.055096, 1.001055}, {-0.316491, 0.558610}, {-0.104349, -0.364259}, {-0.628408, 0.275177}, {-0.793190, -0.708380}, {0.273673, -0.761222}, {-0.324338, 0.469933}, {-0.879443, 1.299100}, {-1.259126, 0.852917}, {-0.076886, -0.512190}, {0.102022, -0.181585}, {0.519581, 0.053206}, {0.001434, -0.202726}, {-1.015981, 0.459688}, {1.125770, 0.940926}, {0.312231, 0.424855}, {-0.499418, -0.502875}, {0.517807, 0.069577}, {-0.973119, 0.268788}, {0.374483, -0.502729}, {0.003039, -0.024829}, {-0.040855, 1.072277}, {-0.951793, -0.475118}, {-0.710944, -0.003773}, {-0.114791, 1.219599}, {-0.245796, 0.792555}, {-0.003881, 0.164329}, {0.352843, 0.700678}, {1.098609, -0.455416}, {0.890404, -0.589496}, {0.004892, -0.535082}, {1.442431, -0.702892}, {-0.366707, -1.095639}, {1.025595, 0.172890}, {0.938371, 0.195878}, {0.126380, 0.673834}, {-0.578430, 0.938407}, {-0.502260, 0.910490}, {0.254066, 0.433385}, {-0.220341, 1.040807}, {1.453578, 0.343099}, {-0.608675, -0.498692}, {0.073501, 0.011211}, {-0.829259, 0.377760}, {-0.079486, -1.685480}, {1.145159, -0.985214}, {0.098902, -0.864296}, {0.393820, 1.649395}, {-0.734563, 0.744368}, {-0.147095, -1.257531}, {-1.627407, -1.136028}, {0.467873, 1.041606}, {0.757500, -0.414132}, {0.831162, -1.034454}, {0.816375, 0.500999}, {0.702928, 1.649657}, {0.080263, -0.721470}, {-1.187533, -0.047103}, {-0.150313, 1.708622}, {0.493906, -0.679800}, {0.594035, -0.186757}, {-0.240079, 1.222442}, {-0.360900, 0.050265}, {0.144905, 0.624081}, {1.181170, 0.285112}, {0.290493, 0.604750}, {1.092495, 0.412827}, {0.562585, 0.524007}, {0.341804, 0.235361}, {-1.162588, -0.993807}, {0.413398, 0.629788}, {-0.085675, 0.234139}, {0.096242, -0.149101}, {-0.237502, -0.226784}, {1.018918, 0.053213}, {-0.242669, -0.787538}, {0.756043, -0.235274}, {0.919413, 0.564605}, {1.108872, 0.879978}, {-0.581288, 0.281426}, {-0.326461, 1.233718}, {-0.079129, -1.162175}, {0.349478, -0.844907}, {0.027088, -0.819916}, {0.170056, 0.187616}, {0.502767, -0.666850}, {0.961324, -0.584669}, {0.710063, 0.119446}, {0.239278, 0.976768}, {-0.014996, 0.524941}, {0.008554, 0.179727}, {-0.393247, -0.037826}, {0.718612, -0.978392}, {-0.225419, -0.038771}, {-0.227036, -0.165385}, {0.121599, -0.197455}, {1.134869, 0.485862}, {-0.947191, -0.134063}, {-0.654587, 1.189330}, {0.443246, -0.706134}, {-0.830123, -0.240530}, {-0.113430, 1.241655}, {-0.108660, -1.135730}, {0.036003, -0.841002}, {-0.157794, 0.185786}, {-0.483079, 0.099628}, {0.280081, 0.479144}, {1.939184, -0.257319}, {-0.687604, 0.274654}, {0.281510, 0.228436}, {-0.028762, -0.144790}, {-0.171744, 0.621507}, {-0.370458, -0.435995}, {-0.369755, 0.546579}, {1.695030, 0.039443}, {1.240829, -0.834031}, {0.295979, -0.031126}, {-0.422307, -0.218957}, {0.139370, 0.067480}, {0.184715, -0.646348}, {-0.818519, 0.518805}, {-0.103088, 0.886249}, {-0.138199, -0.692871}, {-0.039802, 0.305166}, {0.227665, 0.707830}, {0.407761, -0.090334}, {-0.148850, 1.035646}, {0.706539, 0.838360}, {-1.216193, 0.118999}, {-1.145744, -0.154962}, {-1.072350, 0.028873}, {0.816804, -0.037296}, {-0.223583, 0.078154}, {0.551985, -0.137222}, {-0.434480, -0.170241}, {-0.717792, 0.161839}, {0.404747, -0.083635}, {0.457787, 0.137080}, {-0.205589, 0.734910}, {-0.788705, 1.504406}, {0.647835, -0.940490}, {1.096260, -0.020625}, {-0.515190, 0.721472}, {0.151921, 0.029406}, {-1.071512, -0.382693}, {-0.666773, 0.643925}, {0.473907, 0.434675}, {0.281689, 0.152364}, {1.231462, 0.143107}, {0.422616, 0.642618}, {-0.860802, 1.066102}, {0.180806, -0.160456}, {-0.171602, 1.259847}, {-1.080608, -1.537974}, {0.247965, -0.391762}, {-0.597206, -0.026325}, {0.806679, 0.506041}, {-0.448461, -0.551637}, {0.609211, 1.564775}, {-0.584254, -0.421677}, {-0.115819, 0.092741}, {0.630211, -0.423075}, {0.219037, 0.467483}, {0.330857, 0.747908}, {-0.653036, 0.009290}, {-0.785070, -0.874116}, {1.707815, 0.381228}, {0.023747, -1.518223}, {-0.937137, -0.965197}, {0.640566, 0.933056}, {-0.594679, -0.574540}, {0.296794, -0.291891}, {-0.714825, 0.378028}, {0.757843, 0.220650}, {1.019762, 2.070884}, {1.052090, -0.108974}, {0.617214, -1.030121}, {0.234111, 1.070887}, {0.325029, 1.415523}, {-1.411232, -0.591198}, {0.955943, 0.862474}, {-1.524439, 0.478968}, {0.161252, -0.000874}, {-1.682225, -0.113368}, {-0.714802, 0.379857}, {0.815552, -0.386556}, {0.565304, 0.508925}, {0.033944, -0.055679}, {-0.160544, -0.364665}, {1.167740, -0.747209}, {-0.114289, -0.426222}, {0.998961, -0.781649}, {0.480485, -0.325437}, {0.818972, 1.053668}, {-0.759151, 0.662107}, {-0.533949, 1.213625}, {-0.348061, -0.399280}, {-0.612857, 0.282472}, {-0.155041, 0.177124}, {1.564518, 0.497387}, {-0.259280, 0.598564}, {-0.330630, -0.194511}, {-0.927641, 0.683062}, {-0.492680, 0.187990}, {-0.486909, 0.556354}, {-1.016376, 0.123981}, {0.605410, 0.661383}, {-1.259776, -0.139097}, {0.687748, -0.124519}, {1.076749, 1.172916}, {0.826104, 0.453227}, {0.916044, 0.484496}, {-0.220030, 0.081309}, {-0.762988, -0.501734}, {0.156663, -0.397336}, {-0.645976, -0.464085}, {0.013181, -0.690831}, {1.418278, -0.223876}, {0.138929, 0.135069}, {0.576396, -0.082604}, {0.341489, 0.166084}, {0.239311, 0.512591}, {-0.705057, 0.281017}, {-0.216695, 0.700219}, {-0.052454, -1.245938}, {-0.553732, -1.127581}, {-0.875834, 0.839077}, {0.590675, -0.603937}, {1.115400, 0.110295}, {-0.433421, 0.192051}, {0.724311, -0.663050}, {-0.511338, -0.678864}, {0.319840, -0.020854}, {-1.173155, 0.013443}, {0.379830, 0.418095}, {-1.047586, 0.754616}, {-0.458533, -0.744747}, {0.039738, 0.740735}, {-0.448691, -1.323799}, {-0.614500, 0.274110}, {-0.954928, 1.710574}, {-1.115993, 0.162485}, {1.193523, -0.172836}, {-0.813587, -0.815742}, {0.432139, -0.761635}, {0.539046, -0.256594}, {0.293082, 0.217539}, {0.390536, -0.019131}, {-0.520508, -0.341834}, {-0.124911, -0.157248}, {-0.637428, -0.090345}, {-1.047505, 0.197182}, {1.028592, 0.057271}, {0.228695, -0.421307}, {0.160562, 0.065647}, {-0.125276, 0.570122}, {0.771720, -0.929429}, {-0.885627, -0.643624}, {0.674625, 0.505683}, {-0.361914, -0.577650}, {0.053097, -0.825371}, {1.336278, -0.384586}, {0.004049, 0.906965}, {-1.072504, 0.415022}, {0.802524, -0.826920}, {-0.955720, 0.142124}, {-0.125373, 1.113202}, {0.334120, 0.836902}, {0.835931, -0.122422}, {1.106213, -0.047726}, {2.296859, 0.078391}, {0.366122, -0.430429}, {0.701139, -0.605645}, {-0.146080, -1.767753}, {0.016836, 1.135654}, {-0.176842, -0.909804}, {0.161320, 0.030687}, {0.095294, -0.085024}, {-0.777534, -0.732828}, {-0.415510, 0.843213}, {-0.064383, 1.441395}, {-0.077757, -0.848909}, {0.344072, -0.405862}, {-0.685213, -0.152876}, {2.219878, -0.147536}, {-0.259629, -0.346784}, {-0.154063, -0.256064}, {-0.347575, -0.135536}, {-0.507167, -0.471854}, {1.053886, 1.000078}, {0.899577, 0.115105}, {-0.044331, -0.789282}, {-0.151879, -1.288516}, {0.121111, -1.153694}, {1.329053, 0.966325}, {-0.678745, 0.814417}, {-0.257457, -0.282341}, {-0.962823, -0.351230}, {0.873445, 0.133721}, {0.627689, -0.454924}, {-0.255754, -0.414715}, {0.018030, 1.186715}, {-0.957481, 0.875629}, {-0.117672, -0.173647}, {0.174636, -0.871127}, {-0.384196, 0.778462}, {0.082789, 0.383797}, {-0.701027, -1.355462}, {0.668719, 0.695236}, {-0.042132, 2.102093}, {1.413857, -0.300645}, {-0.112820, -0.849034}, {-0.612251, 0.816555}, {0.608860, 0.226898}, {-0.179368, -0.087384}, {0.040499, 0.002180}, {-0.737672, 0.256065}, {-0.161481, 0.832177}, {1.099151, 0.426534}, {-0.235701, -0.127462}, {-0.152026, -0.390955}, {-0.543015, -0.478542}, {-1.160759, 0.623038}, {-0.202691, 0.593749}, {1.786126, -0.318883}, {1.316698, 0.020550}, {0.169104, -0.060324}, {1.045560, -0.056788}, {1.020056, -0.597922}, {-1.645949, 0.293017}, {0.923375, -0.090014}, {-0.844203, -0.218401}, {-0.239957, 0.368485}, {-0.309986, 0.239761}, {-1.016587, -0.062435}, {-0.767244, 0.118052}, {0.277478, 0.074426}, {0.683305, -1.041466}, {-0.808274, -1.614546}, {0.394355, 0.811173}, {0.796282, -1.296704}, {-0.714204, 0.137774}, {0.196927, 0.370427}, {-0.376269, -0.542680}, {0.791492, -0.123199}, {0.321249, 0.521318}, {1.046344, 0.661679}, {-0.141206, -0.238853}, {-0.383405, 0.290032}, {0.376350, 0.432868}, {-0.049260, -0.368856}, {0.408613, -0.014061}, {-0.326055, 0.816902}, {-0.026001, -0.589331}, {-0.072918, 0.200475}, {0.331867, -1.316811}, {0.435541, -0.935694}, {0.510818, 1.141595}, {-0.190277, -1.450792}, {0.173657, -0.279898}, {0.438387, -0.236168}, {-0.079822, -1.188886}, {0.332160, -0.026150}, {-0.156566, -0.711998}, {1.519541, 0.155118}, {-0.252771, 0.027134}, {-0.051493, 0.730522}, {1.034388, -0.494617}, {0.585226, -0.142609}, {-0.056058, 0.636934}, {0.427097, -0.139863}, {0.142636, -0.376670}, {0.261685, -0.129577}, {0.622429, -0.458139}, {0.558685, -1.457037}, {-0.302307, -0.237556}, {0.667578, -0.893159}, {0.394038, -0.616568}, {-1.053062, -0.607413}, {-0.102774, 0.550373}, {-0.151209, -0.605143}, {0.982131, -0.044701}, {0.872422, 0.300385}, {-1.738852, -0.042787}, {-0.927014, 0.312879}, {1.133143, 0.059571}, {-1.447607, -0.203064}, {0.844638, -0.610940}, {-0.131441, -0.383945}, {0.185690, 0.504708}, {0.873802, -0.522457}, {-0.241741, -0.833009}, {-0.527447, -0.384432}, {-0.313053, 0.007224}, {-0.144519, -1.752126}, {-0.350914, 0.331914}, {0.019446, 0.830710}, {-0.361050, 0.087871}, {0.136350, -0.729097}, {-0.727329, -1.483267}, {0.506054, -0.485436}, {0.062342, 0.447545}, {0.577105, 0.248545}, {-0.160478, 0.636342}, {0.874559, 0.051499}, {0.105072, -0.821176}, {-0.398886, 0.154675}, {-0.622607, 0.598468}, {-0.199183, -0.205099}, {-0.450282, -0.153537}, {0.663143, -0.304326}, {-0.184256, -1.048931}, {-0.162581, 0.645661}, {-1.044422, -0.455806}, {-1.229037, -0.793770}, {-2.194331, -0.034931}, {0.302824, 0.337893}, {-0.190657, 0.691359}, {0.829411, 0.226586}, {-0.425507, -0.020147}, {-0.664468, 0.683717}, {-0.671081, -0.230903}, {-0.907480, -1.183741}, {0.554297, -0.117632}, {0.096878, 0.871193}, {-1.083314, 0.379586}, {-0.234206, -0.116224}, {1.369810, 0.686732}, {-0.721421, -1.029317}, {-0.368926, 0.569493}, {1.046382, 0.740596}, {0.360666, 0.448457}, {0.480405, 0.359113}, {-0.086104, -0.363264}, {0.238387, 0.695863}, {-0.736684, 1.072959}, {0.386997, -0.744110}, {-0.437168, -0.232638}, {-1.153335, -0.780908}, {-0.684055, 0.692340}, {0.289389, 0.249867}, {-1.698004, 0.639394}, {0.394495, 0.268874}, {-0.603894, 0.330558}, {1.253198, 0.211305}, {-0.322306, 0.240516}, {0.102897, 0.083584}, {0.309184, -1.627874}, {-0.390228, 0.139204}, {-0.089614, 0.647020}, {-0.121180, -1.208862}, {0.826558, -0.115660}, {0.495726, -0.898881}, {-0.312265, 0.328451}, {-0.575407, -0.648683}, {-0.432874, -0.055634}, {0.299794, -0.672465}, {0.755398, -1.216531}, {-0.785094, 0.381940}, {1.177524, -0.442002}, {-0.690561, -0.399181}, {0.280850, 1.343907}, {-0.409116, 0.423859}, {1.752878, 0.134327}, {0.051034, -0.396984}, {0.519335, 0.260097}, {0.669303, -0.512912}, {-0.121664, -0.181888}, {1.193699, -0.767988}, {1.019133, -0.321132}, {0.967335, -0.098405}, {1.413661, -0.166381}, {-0.125145, 0.663141}, {0.401551, -0.358640}, {-0.253575, 0.814815}, {-0.102327, -0.276315}, {-0.122363, -0.012399}, {0.113221, 0.159392}, {0.425525, -2.019792}, {-2.296354, 0.492443}, {-0.954148, -0.237086}, {0.238738, -0.639157}, {-1.761694, -0.164252}, {0.737287, 0.200460}, {-0.162938, -0.768438}, {-0.782868, -0.626567}, {-2.246589, -0.509916}, {-0.310067, -0.836668}, {-1.464033, -0.333291}, {1.315826, -0.280998}, {0.002046, 1.347203}, {1.070363, 0.251329}, {0.246476, 0.663615}, {-0.845820, -0.236884}, {0.093058, 0.749687}, {-1.111095, 1.211477}, {0.009610, 0.450174}, {0.915608, 0.234386}, {0.143672, 0.205552}, {1.527516, 0.145242}, {0.460513, 1.555029}, {-0.555127, -0.285376}, {0.145695, 0.896220}, {1.217480, -0.305496}, {0.414556, -0.502992}, {0.603741, -0.844504}, {0.129219, 0.575608}, {-0.283013, 1.040908}, {-1.255234, -0.534709}, {1.088903, 0.197861}, {-0.058756, 0.425937}, {0.123779, -1.040665}, {0.637367, -0.271180}, {-0.103176, -1.697012}, {-0.158588, 0.656751}, {-0.967854, -0.951648}, {0.086897, -0.516020}, {-0.373714, -0.748635}, {0.596132, -0.522697}, {-0.983889, -0.989551}, {-0.467885, -0.141256}, {0.830302, 0.458530}, {-0.760114, 0.632394}, {-0.274484, 1.063399}, {0.388037, 0.224930}, {1.249109, -0.166835}, {-0.449788, -0.325036}, {0.042710, -0.844489}, {0.146003, 1.006131}, {-0.220865, -0.302253}, {1.058335, 1.753412}, {0.002717, -0.206278}, {-0.435205, 0.096155}, {0.045458, 0.308059}, {0.985575, -0.174125}, {0.888946, 0.271600}, {-0.928001, 0.303726}, {0.508220, 0.392928}, {1.126653, 0.623124}, {-0.026042, -0.803140}, {-0.924908, 1.178639}, {0.420452, 1.218289}, {0.232925, -0.244339}, {-0.786826, 0.421704}, {-1.480250, -0.437413}, {-0.876270, -1.154740}, {-1.039014, 0.278444}, {0.540032, -0.043074}, {-0.333186, 0.620742}, {0.264837, 0.039240}, {-0.323505, 0.012675}, {-0.409204, -0.767399}, {0.025022, 0.921557}, {0.331678, 0.765442}, {0.655658, 0.673464}, {0.122603, 1.712084}, {0.671768, 1.118615}, {-0.304646, -0.327486}, {0.200620, 0.635266}, {1.151679, -0.567691}, {0.063835, -0.149801}, {1.857157, 0.061181}, {-0.314228, -0.969461}, {1.172970, 0.214697}, {-0.123463, 0.139130}, {-1.037067, 0.729725}, {0.375812, -0.068514}, {0.007778, 0.344010}, {-0.498291, 0.686760}, {-0.021774, 0.153344}, {-0.106309, 0.126358}, {-1.635683, -0.251761}, {0.280908, 0.489367}, {-0.706807, 0.816537}, {-0.831300, -0.192401}, {0.178349, -0.073416}, {0.680202, -0.971835}, {-1.256339, -0.648133}, {0.699942, 0.382164}, {-0.150262, -0.545250}, {-0.612851, -1.036643}, {0.778548, 0.694659}, {0.419950, -0.302441}, {0.364074, 1.256622}, {-0.157228, -0.261850}, {-0.107384, -0.158219}, {0.493916, -0.735154}, {-0.157863, 0.679501}, {-0.238097, 0.159096}, {-0.151747, -0.515968}, {-0.196244, 0.393762}, {0.981312, -0.958934}, {-0.172524, 0.221805}, {-1.038868, -0.156395}, {-0.540427, -0.434566}, {0.143654, -0.576748}, {1.394838, 0.011972}, {-0.567336, 1.449890}, {0.016188, -0.586559}, {0.018122, 0.164911}, {0.282832, -0.041033}, {0.516311, -0.903365}, {-0.074153, 0.774443}, {0.525149, -0.511892}, {-0.064105, 0.462937}, {-0.550807, -0.740917}, {-0.159709, 0.095051}, {0.856954, 0.712022}, {0.184713, -0.093683}, {0.562640, -0.866336}, {1.091445, 0.202260}, {0.504672, -0.248524}, {0.172117, 0.391537}, {-0.067218, -0.440004}, {0.287740, 1.212661}, {-0.562285, -0.146228}, {0.218122, 0.047461}, {0.593255, -0.355369}, {-0.533896, -0.299014}, {-0.568450, -0.278213}, {0.203598, 0.537438}, {-0.938066, 0.704581}, {-0.917601, 0.791035}, {-0.839964, -0.649079}, {1.307890, 0.264572}, {-0.599850, -0.634273}, {0.460067, -0.969037}, {-0.646018, 0.708979}, {-0.452636, 0.224816}, {0.494858, 0.238132}, {-0.011522, -1.346647}, {0.000576, -0.737202}, {0.100013, -0.266210}, {1.318841, 0.403066}, {-0.639935, -0.303449}, {0.675628, -0.063920}, {-0.097399, 0.502298}, {1.924211, -0.661343}, {-0.193195, -0.836120}, {-0.879425, -1.065778}, {-0.777720, 0.991738}, {0.449743, -0.615344}, {-0.163401, -0.484593}, {-0.295979, 0.797219}, {-0.293076, 0.655861}, {-0.012079, -1.170280}, {0.217685, -0.808306}, {0.521063, 0.052078}, {-0.051550, -0.734594}, {-0.035872, -1.275539}, {-0.111903, 0.457933}, {1.585142, -1.073931}, {-0.630589, -0.097644}, {0.196150, -0.329361}, {0.786858, -0.651981}, {0.353044, -0.508077}, {0.633349, 0.050938}, {0.292792, -1.147545}, {-1.636248, 0.076500}, {0.121149, 0.667182}, {-0.485428, 0.822637}, {0.042791, 0.346486}, {-0.406830, 0.061469}, {0.260006, 0.078180}, {0.480654, -0.228662}, {0.069106, 0.904044}, {0.689995, -0.355703}, {1.356396, 0.165978}, {-1.216395, -0.167056}, {0.806751, -0.082865}, {1.379444, 0.548229}, {0.082448, -0.566330}, {-0.153881, -0.613327}, {-0.400828, -1.175044}, {0.007904, 0.187198}, {0.017020, 0.469228}, {-0.635306, 0.814212}, {-0.686244, -1.695371}, {0.635513, -0.061291}, {-0.425817, 0.149979}, {0.251848, -0.710921}, {-0.046316, 0.161009}, {0.286905, -0.673584}, {-0.816487, -0.090565}, {-0.587562, 1.125426}, {-0.388150, -0.088164}, {-0.855313, -1.030685}, {0.137949, 0.442570}, {-0.500305, 0.481672}, {-0.569691, -0.277656}, {1.232236, 2.015065}, {-0.544907, -1.314194}, {-1.063375, -0.275894}, {-0.061552, -0.173145}, {0.552244, 0.176811}, {-0.276732, -0.699921}, {-1.723753, -0.289518}, {-1.246463, 1.183601}, {-0.500170, 0.373240}, {0.651110, 0.202271}, {-1.201287, -0.164245}, {-0.252490, 0.060805}, {0.267841, 0.166147}, {0.217199, 0.233845}, {0.487467, 1.765281}, {-1.323439, 1.017541}, {-1.689664, 0.253096}, {0.024758, 0.480120}, {0.663608, 0.503539}, {0.951764, -0.395559}, {0.811294, 0.409032}, {-0.687545, 0.241462}, {-0.320659, 0.006277}, {-0.239229, 1.109935}, {1.192667, 0.419789}, {0.461142, 0.131372}, {0.087449, 0.030492}, {1.724236, -1.133479}, {-0.233717, 0.474440}, {-0.107867, -0.340221}, {-0.260094, -0.871921}, {1.512797, -0.186811}, {-1.150296, 0.161701}, {1.270353, -1.064373}, {-0.208916, -0.609819}, {0.266445, -0.850148}, {-0.191666, -1.143687}, {0.624237, 0.402745}, {-0.146100, -0.313531}, {-0.394306, -0.512183}, {0.748664, 1.567171}, {1.172201, -0.075086}, {-0.203625, -0.403359}, {0.801120, 0.219087}, {0.483011, -0.186969}, {-0.822249, 0.790955}, {-0.826600, 0.057749}, {-0.340349, -1.708476}, {-0.612349, 0.017105}, {-0.405678, 0.770708}, {-0.882441, -0.884726}, {-0.760047, 0.956302}, {-0.134529, -0.806649}, {-0.616061, -0.717116}, {-0.786351, 0.960517}, {0.995470, 0.823887}, {0.803940, -0.068840}, {-0.780356, 0.796537}, {0.754690, 0.462261}, {0.558489, -1.826939}, {0.565941, -0.533679}, {-0.349220, -0.565535}, {-0.117447, -0.033437}, {0.306679, 0.561986}, {-0.452673, 0.002558}, {0.656129, -0.312644}, {-0.137241, 0.808405}, {0.023718, -0.818979}, {0.316627, 0.723533}, {0.245948, -0.220425}, {0.018669, -0.033499}, {-0.384480, -0.064193}, {1.059643, 1.011290}, {0.255465, 0.122262}, {0.892933, 0.377851}, {-1.057426, -1.072620}, {0.376262, 0.020682}, {-0.318577, -1.103330}, {0.820800, 0.258835}, {0.084963, -0.566530}, {-0.270657, 0.173413}, {-0.630122, 0.411348}, {-0.140339, 0.070918}, {-0.580496, 1.695575}, {0.184591, -0.255626}, {-1.595309, 0.220755}, {-1.086653, -0.518954}, {-0.092904, -1.828520}, {-1.560213, -0.345541}, {-0.107258, 0.421123}, {1.333753, 0.427132}, {0.651096, -0.307819}, {1.547703, 0.021547}, {-0.938925, 0.799421}, {0.161495, 1.637137}, {-0.566160, 0.009561}, {0.765734, 1.847262}, {-0.099619, 1.217570}, {-1.646296, 1.143879}, {-0.341561, 0.208659}, {-0.829797, -0.078640}, {0.230420, 0.260061}, {-1.115321, -0.415304}, {-0.759305, 1.137078}, {0.119318, 0.326539}, {0.634494, -0.172025}, {0.951927, 1.084809}, {-0.481045, -0.125166}, {-0.147533, -1.237017}, {-0.194932, 0.304319}, {-0.055354, -0.773023}, {-0.610176, 0.526057}, {-1.442512, 0.301773}, {0.806472, 0.525891}, {0.442248, 0.868214}, {-0.735627, -0.085293}, {-0.527279, -0.419674}, {-0.485876, -0.318730}, {0.619257, -0.096117}, {0.256008, -0.511587}, {0.402021, 0.667654}, {1.085013, 0.181906}, {-1.075699, -0.590304}, {0.149918, 0.698889}, {1.232178, -0.974211}, {0.299137, -0.807070}, {-0.363717, 1.920628}, {0.520819, -1.006913}, {0.237037, -0.181282}, {-0.473254, 0.538424}, {-0.693209, 0.205641}, {0.196816, -1.365328}, {1.294426, -0.457957}, {-1.201707, 0.159986}, {-0.434547, 1.602358}, {0.640590, -1.134317}, {0.145536, -0.201253}, {-0.295678, -0.144970}, {0.474340, 0.506270}, {0.626337, 0.119856}, {-0.389066, -1.331761}, {1.112996, -0.698493}, {0.218681, 0.173533}, {1.403960, -0.330757}, {0.473726, 0.286873}, {-0.065860, -0.094907}, {0.245194, -0.785259}, {-0.737379, 0.731098}, {0.888062, 0.554072}, {1.481762, -0.047101}, {0.422688, 0.158868}, {0.569769, -0.263568}, {-1.225339, -0.094437}, {-1.449739, 0.636898}, {-0.257917, -0.053649}, {0.155706, -0.122416}, {0.953568, 0.325125}, {-0.798452, 1.472069}, {0.052703, -0.295397}, {0.456338, -0.736016}, {0.529491, -0.568515}, {-0.233975, 1.120665}, {-0.680203, -1.295243}, {-0.466273, -0.062131}, {-0.131288, 1.168066}, {-0.385004, -1.409355}, {-0.314060, -0.015362}, {-0.874063, -0.686612}, {-0.445655, -1.003053}, {0.928618, 0.248422}, {0.478245, -0.872451}, {-0.240218, 0.229832}, {-0.207487, 1.315485}, {0.708097, -0.459610}, {0.324259, -1.091280}, {-1.452807, 0.091208}, {1.395570, -1.863330}, {0.999160, -1.241401}, {0.280141, -0.706033}, {-0.925961, 0.469675}, {-0.688460, -0.963031}, {0.119873, 0.226830}, {-0.106209, -0.158092}, {0.677296, -0.307387}, {0.390625, 0.002007}, {-1.651675, 0.216743}, {0.079875, 0.792000}, {0.235602, 0.452420}, {0.777284, -0.266590}, {-0.895642, -0.021410}, {0.254087, 0.034999}, {-0.270512, -0.127041}, {-0.256159, -0.869917}, {0.373497, 1.048321}, {-0.762650, -0.290650}, {-0.578370, -0.111365}, {-1.982232, -0.062361}, {0.578377, -0.656604}, {-0.468886, 0.154771}, {0.844443, 1.791920}, {0.097667, -1.339984}, {0.210075, 1.094129}, {-0.206117, 0.067388}, {0.421055, 0.203273}, {0.584588, 0.986430}, {0.133407, -0.641132}, {-1.170174, -0.263451}, {-0.157218, -0.021621}, {1.475833, -0.127775}, {0.078896, 0.799595}, {-1.587069, -0.475999}, {0.695471, 0.483917}, {0.025792, -0.441905}, {1.007477, 0.041037}, {-0.181478, -0.017029}, {0.036815, -0.111715}, {-0.465989, 0.179141}, {0.794247, 0.927431}, {0.285622, -0.418923}, {-0.068971, -0.305474}, {-0.463998, -0.444865}, {0.699853, -1.012322}, {0.151237, 1.087834}, {-0.146684, 0.233955}, {0.567227, -0.089576}, {-0.224722, 0.477183}, {1.199889, 1.553201}, {0.760053, 0.017195}, {0.261229, 0.445578}, {-0.705770, -1.755211}, {0.290944, 0.079387}, {0.133894, -0.691097}, {-0.059663, 2.211638}, {0.370996, -0.939649}, {0.112302, 1.366692}, {0.188262, -0.356295}, {-0.612580, 0.733432}, {0.619933, 0.144186}, {0.278577, 0.110054}, {0.225926, 0.612772}, {-0.729589, 0.857299}, {1.264619, 0.408863}, {-0.628055, -1.407078}, {-0.514858, -0.744270}, {0.619405, 1.047669}, {-0.199934, 0.731997}, {0.418989, -0.042346}, {0.785841, -0.113664}, {-0.932752, -0.678127}, {-0.806044, 0.573963}, {0.587483, 0.194597}, {-0.103663, 0.283307}, {-0.433701, 1.184546}, {0.790999, 0.223614}, {1.419865, 1.046606}, {-0.830056, 0.788822}, {-0.242103, -0.605081}, {-1.753848, -0.814530}, {0.527669, 0.991027}, {-0.240201, -0.427279}, {0.856250, 0.646151}, {1.153696, 0.714506}, {0.866539, 0.692044}, {0.203711, 0.315015}, {-0.285981, -0.182996}, {0.789261, -0.986318}, {-0.144656, 0.102805}, {-0.151745, -0.054796}, {-0.093111, 0.849218}, {0.517938, 0.271205}, {0.552012, -0.102406}, {1.085765, 0.387176}, {0.084600, 1.884932}, {-0.054731, -0.030402}, {1.382310, -0.885943}, {0.098738, 0.889079}, {1.144495, -0.059725}, {-0.899532, 0.664015}, {-0.181939, 0.217922}, {0.321437, 0.396019}, {0.285473, -1.089756}, {0.586511, 0.295108}, {-0.372205, 0.500376}, {-0.078211, 0.182058}, {0.011147, -0.495137}, {0.896627, -0.426638}, {-0.092586, -0.308805}, {0.601102, 1.063945}, {0.749759, -1.427166}, {1.055874, 0.699219}, {-0.903965, -0.438794}, {-0.707729, 0.384313}, {-0.101038, 0.921657}, {-0.485551, 0.820867}, {0.236179, -0.929859}, {1.125738, -0.530163}, {0.077800, -1.861208}, {-0.730572, 0.920142}, {-0.898268, 0.339665}, {-0.317154, 0.181412}, {-0.160429, -1.323295}, {-0.400514, -0.563102}, {-0.014542, 0.576620}, {-0.381432, -0.415218}, {-0.377208, 0.718852}, {-0.705579, 1.318340}, {1.530143, -0.271100}, {-0.221327, -0.588484}, {-0.022733, -0.642035}, {0.030789, -0.791981}, {-0.766666, -0.492790}, {-0.749544, -0.073490}, {0.447054, -0.800807}, {1.070489, 0.825108}, {-0.727046, 0.726992}, {-0.060446, -1.037320}, {-0.328770, 0.190905}, {-0.128967, -0.434271}, {-0.186546, 0.312983}, {0.935917, -0.100236}, {-0.047536, -0.213380}, {0.082069, -0.603080}, {-0.913393, -0.849605}, {-0.457231, -0.796030}, {0.682990, 0.778589}, {0.209229, -0.807062}, {0.272420, 1.125802}, {0.036284, 1.629727}, {0.104411, -0.167382}, {-0.626081, -0.031098}, {-0.351775, -1.618939}, {0.413605, 0.257989}, {-0.370629, 0.161392}, {-0.330446, 0.806375}, {0.390219, -0.746819}, {-0.509487, -0.047151}, {-0.273129, -0.108304}, {-0.319689, -0.338005}, {0.842067, 0.281057}, {0.055884, 0.234417}, {-0.365933, 0.614457}, {-0.454615, 1.448888}, {-0.699608, -1.033875}, {-0.372957, 0.671612}, {-0.133444, -0.030193}, {-0.924223, 0.603383}, {-0.516276, 0.204182}, {-0.382316, -0.235633}, {-0.187827, -1.054536}, {-0.442085, 0.354249}, {0.622665, 0.610810}, {0.265960, -0.284553}, {0.040194, -0.911782}, {-0.509020, 0.860569}, {0.600634, -1.182167}, {0.151219, 0.454662}, {-0.418144, 0.065874}, {-1.569977, 1.023171}, {0.266306, 0.219226}, {0.791286, 0.244977}, {-0.241393, 0.875145}, {-0.318656, -1.030454}, {-0.022462, 0.214741}, {-0.619332, 0.153986}, {-1.020611, -1.628587}, {0.479077, 0.439942}, {1.740772, 1.610355}, {0.003287, 0.194352}, {0.566085, 0.121822}, {-1.147140, 0.412844}, {1.376034, 0.118976}, {0.420202, -1.038233}, {0.373144, 0.162301}, {0.794360, 0.106407}, {-0.962990, -0.802783}, {0.056256, 0.007095}, {-0.708347, -0.662442}, {-0.959655, 1.323960}, {-0.529900, 0.259971}, {1.193998, 0.563030}, {0.939263, 1.103177}, {-0.385987, 0.149407}, {-0.476455, -1.133539}, {0.308749, 0.266472}, {-0.497402, 0.161375}, {-0.740784, 0.032059}, {-0.760730, -0.593766}, {-0.063348, -0.060021}, {0.633546, -1.329736}, {0.834383, 0.497996}, {-0.600352, 0.731318}, {-0.447242, 0.431888}, {-1.343652, -0.365840}, {0.777551, -0.685316}, {-0.680872, -0.406050}, {-0.586652, -0.305786}, {-0.554828, 0.022048}, {-0.699549, -0.247367}, {1.389279, -0.742174}, {-0.065282, -1.308684}, {-0.261274, -0.493450}, {-0.733425, 0.887315}, {-0.025220, -0.501261}, {0.241883, -0.683133}, {-0.140739, 0.262319}, {-2.045143, -1.409459}, {1.343072, 0.855186}, {-0.035921, -0.283506}, {0.106737, 0.720865}, {0.406583, 0.040440}, {0.214985, 1.947726}, {0.438985, -0.798479}, {-0.217059, 0.167267}, {1.243574, 0.015551}, {-0.125817, -0.046205}, {-1.183831, -1.384855}, {-0.322551, 0.251363}, {-0.722839, 0.595898}, {0.551627, -0.760119}, {1.054220, 0.065259}, {0.591739, -0.191866}, {0.296816, -0.332836}, {1.165112, -0.248075}, {0.248393, -0.545047}, {1.311024, -0.407092}, {0.591438, -1.621612}, {-0.052964, -0.001681}, {-0.298430, -0.248136}, {0.275239, -0.088719}, {-0.147969, -0.645551}, {-0.505692, 0.261343}, {0.309140, 0.959088}, {0.921434, 0.629677}, {0.748760, 1.088213}, {-0.680151, -0.335191}, {-0.613400, 0.493749}, {0.727131, -0.030512}, {-0.379323, -1.035416}, {-0.211766, -0.796419}, {-0.454060, 0.049283}, {-0.049881, 0.070106}, {-0.279312, 0.046965}, {-0.397766, 0.760498}, {0.520312, -0.439711}, {0.331968, -1.409079}, {0.427486, 0.218783}, {1.003588, -0.080820}, {1.556979, -0.423669}, {0.619977, 0.469522}, {-0.045054, -0.809393}, {-0.528064, -0.036637}, {-0.482697, 0.131513}, {-0.460037, 0.505505}, {-0.324516, -0.389828}, {0.460368, -0.314426}, {-0.560330, -0.324922}, {-0.376507, -0.059857}, {-0.851451, -0.423302}, {0.336302, -0.960355}, {1.612286, -1.262715}, {0.637618, -0.176273}, {0.382746, 0.450728}, {0.643770, 0.137805}, {-0.321537, 1.065434}, {-0.913438, -1.344611}, {0.123579, -0.525252}, {-0.684321, -0.050399}, {0.092025, -0.049197}, {0.230247, -0.846072}, {-0.567252, 1.537805}, {-0.113614, -0.004427}, {0.694251, -0.089008}, {-0.303172, -0.350574}, {0.609402, -0.434146}, {0.107243, -0.651101}, {1.272207, -0.348857}, {-0.502908, 0.151282}, {-0.145185, -1.741187}, {0.660613, -0.230215}, {0.178185, -0.686348}, {1.272619, -0.158281}, {-0.280741, 0.764747}, {0.044990, -0.769996}, {0.417010, 0.096608}, {0.062595, 1.686842}, {2.151472, 0.043530}, {0.715346, 1.734442}, {0.098966, -0.998731}, {0.599808, 0.342824}, {-0.343734, 0.708030}, {-0.128109, -0.806256}, {0.761198, 0.210038}, {-0.138642, 0.040832}, {-0.062262, 0.648355}, {1.277507, 0.552877}, {-0.927193, -0.325931}, {-0.249534, -0.771760}, {0.521253, -0.650575}, {0.616145, 1.180146}, {-0.318551, -0.126697}, {-0.526436, -0.915103}, {1.171009, 1.586755}, {-1.579776, -0.032072}, {0.379730, -0.424383}, {0.219217, -0.851723}, {0.557224, 0.464978}, {-0.216519, 0.253208}, {0.972628, 0.385579}, {0.412359, 0.086125}, {0.876441, -0.274872}, {-0.407527, -0.657947}, {0.541719, 0.812008}, {0.772499, 0.092084}, {0.502839, 0.363918}, {0.146701, 0.081139}, {-0.007951, -0.624450}, {-0.605555, -1.647412}, {-0.169302, -0.077049}, {-0.244837, -0.620332}, {0.764241, -0.522473}, {-1.133782, 0.258060}, {0.948375, 0.016726}, {1.587208, -0.235768}, {0.424286, 0.560435}, {0.366718, -0.229027}, {0.114061, -0.120273}, {-0.032553, -0.706649}, {-1.656256, 0.469776}, {-0.800075, 0.163134}, {0.184989, -0.490187}, {-0.066939, 0.069671}, {-0.124030, -0.278587}, {0.098588, -0.516323}, {0.641825, 0.433273}, {0.039826, -1.896522}, {0.544579, 0.174252}, {-1.136703, 0.508232}, {0.473606, -0.928168}, {-0.262024, 0.277016}, {-0.525881, -0.940302}, {0.774239, 0.928604}, {0.475874, -0.471899}, {-0.803854, 0.030975}, {-0.993059, -1.988145}, {0.006261, -0.462312}, {0.304373, -0.219476}, {-0.064896, 0.411816}, {-0.565623, 0.410175}, {0.451946, 0.896558}, {0.579193, -0.666237}, {1.111956, -0.324559}, {0.958126, 0.875141}, {-2.376995, 0.139360}, {-0.174255, -0.647183}, {0.014742, 0.174545}, {-0.527097, -1.346987}, {1.514308, 1.010371}, {0.148586, 0.574571}, {-0.282640, 0.894507}, {-0.099804, 0.189072}, {-0.371499, -0.000976}, {0.094502, 1.606489}, {-0.417943, 0.639646}, {0.660216, -0.605938}, {-0.545899, -0.550059}, {1.076567, -0.745220}, {0.405227, 0.711701}, {-0.366586, 0.196052}, {0.860394, 0.269181}, {-1.127270, 0.202607}, {0.136211, 0.475897}, {0.459787, 0.495293}, {0.544301, -0.482145}, {0.365063, 0.234250}, {-0.593792, -0.434170}, {-0.426111, -1.761006}, {0.869614, -0.020494}, {-0.467603, 0.072709}, {-0.324193, -0.665541}, {0.777996, -0.277466}, {-0.283302, 0.615438}, {-1.708614, 0.792042}, {0.621137, -0.463159}, {0.521234, 0.742400}, {-0.133299, -0.939262}, {-0.160119, -0.770287}, {-0.512796, 0.969515}, {0.315453, -1.192219}, {1.288366, 0.188477}, {0.555009, 0.515260}, {0.190975, -0.611313}, {0.181731, 0.979969}, {1.256390, -0.748626}, {-0.335278, -0.480621}, {-0.671001, 0.965038}, {-0.104705, 0.209754}, {-0.085875, -1.716713}, {-1.640847, -0.669974}, {0.447848, -0.348934}, {0.265837, 1.298157}, {0.752559, 1.353997}, {-1.107378, 1.884381}, {-0.974856, 0.729668}, {-0.408192, 0.715443}, {0.256093, -1.141904}, {-1.426772, 0.454018}, {-0.379814, -0.020252}, {0.808918, -0.270355}, {0.032856, -0.539366}, {-1.792033, -0.556382}, {-0.749878, 0.045814}, {-1.284019, 0.264061}, {-0.644668, 0.334991}, {0.167439, 0.463690}, {0.781219, 0.368265}, {-0.260223, -0.044352}, {-0.071616, -0.070425}, {-1.084332, 0.404648}, {-1.607982, -0.417932}, {0.755238, -0.174306}, {0.185585, 1.881097}, {-0.015098, 0.559027}, {-0.177597, -0.752248}, {-0.550116, -1.060073}, {-0.358345, -0.425293}, {0.348800, -0.817303}, {-0.881309, -0.246413}, {0.925273, -0.021585}, {-0.725402, 0.242012}, {0.185628, 0.275909}, {-0.422986, 1.393526}, {0.628901, -0.118229}, {0.317355, -0.260886}, {0.700872, -0.179362}, {-0.261562, -0.299310}, {0.255547, 0.459484}, {0.874547, -0.523117}, {1.173201, 1.024590}, {-0.996085, -0.014251}, {-0.936499, -0.186035}, {-0.124365, -0.515926}, {-1.063564, -0.984708}, {0.564578, -1.758164}, {-0.798557, -0.294069}, {-0.100377, 0.060186}, {-0.199967, -0.488498}, {0.888361, -0.509741}, {0.983519, 1.571630}, {0.112599, 1.056708}, {0.873252, 0.482406}, {0.452934, -0.285808}, {-0.043803, -0.750535}, {0.403150, 0.892230}, {-0.396320, -0.357763}, {-0.332699, -0.116355}, {0.593079, 0.468945}, {0.284203, 0.714000}, {0.215099, -0.285505}, {-1.147423, 0.160707}, {-0.762612, 1.411527}, {0.472681, 0.269305}, {0.255840, -0.160359}, {-0.055088, 1.194371}, {-0.698704, -0.799073}, {-1.285369, 0.675681}, {1.004399, -0.126013}, {-0.548650, 0.989301}, {-0.348031, 0.143843}, {0.019998, -0.340962}, {1.023248, 0.761331}, {-0.902970, -1.223627}, {-0.279665, 0.623119}, {-0.366014, 0.496679}, {-0.813344, -0.457467}, {-0.372345, 0.539890}, {-0.485404, -0.267196}, {0.536624, 0.644437}, {1.607247, 0.297879}, {0.220415, 0.883121}, {-0.610471, -0.507677}, {0.457363, 0.253781}, {-0.258994, 0.833024}, {-0.261108, -1.096423}, {-0.890548, -0.267881}, {-0.514366, -0.459512}, {0.812269, -0.123179}, {-0.034540, 0.119925}, {-0.180841, 0.846220}, {-0.752312, -0.637519}, {1.026199, 1.242000}, {0.197854, -1.717988}, {0.475428, 0.194479}, {0.292648, -0.864272}, {0.947169, -0.161454}, {-0.464096, -0.510604}, {1.153502, 0.164372}, {0.487626, -1.698067}, {-0.435832, -0.248461}, {0.986247, 0.332766}, {0.573550, 0.450706}, {0.217594, -0.594628}, {0.411145, 0.714235}, {-0.635136, 1.259112}, {0.505637, 0.257079}, {1.088652, 0.088325}, {-0.412997, 1.426823}, {0.773139, 0.811379}, {1.222511, -1.367456}, {0.062337, 0.036862}, {-0.941056, -0.307414}, {-0.219902, 0.345179}, {-0.822663, -0.150728}, {-0.830573, 0.243392}, {0.184643, -1.254941}, {0.044543, 2.065648}, {-0.303212, 0.177042}, {-1.024625, -0.575737}, {-1.766237, -0.128839}, {1.166984, -1.325277}, {0.296716, -0.350582}, {0.108368, -0.173239}, {0.820007, -0.685029}, {-1.179457, -1.230915}, {0.373694, -0.295121}, {0.792136, 0.427746}, {0.908489, 0.134038}, {0.112420, 0.145958}, {-0.528428, -0.719873}, {-1.018138, -0.106810}, {0.487126, 0.785684}, {-0.459239, 1.922989}, {0.315122, -0.019843}, {0.271436, 1.009157}, {-0.561563, -0.748185}, {-0.823416, -0.551511}, {-0.966122, -1.600366}, {0.213364, -0.578518}, {0.495633, -0.444785}, {-0.527658, 1.519762}, {-0.069264, 0.878791}, {-0.269854, 0.404970}, {-0.610037, -0.956304}, {0.484475, 0.633773}, {-0.168591, -0.969952}, {0.484383, 1.817719}, {0.141585, 0.111118}, {-1.199097, -0.051283}, {-0.528354, 0.347269}, {0.475852, 0.415654}, {0.228798, 0.835716}, {-0.253920, 0.038539}, {1.462540, -0.489890}, {-0.104670, -0.701368}, {-0.022712, -0.856311}, {-1.130025, 0.873925}, {-0.019534, -0.883438}, {-0.193835, 0.406293}, {-0.387684, 0.052551}, {1.298327, -0.709101}, {-0.310405, 0.001679}, {-0.481614, -0.685795}, {-1.062058, -0.520206}, {-1.344745, -0.153656}, {-0.831422, 0.037292}, {0.400435, 1.234084}, {0.727975, 0.204297}, {0.824147, -0.809614}, {0.702855, -0.127743}, {-1.649216, 1.142318}, {0.341254, 0.448017}, {-0.898656, -0.789927}, {1.058227, -0.602215}, {-1.095050, -0.894509}, {-0.599427, -0.153097}, {-0.102633, 0.228645}, {0.508210, 0.665789}, {-0.535104, 0.147440}, {-1.277860, -1.283381}, {-0.023286, 0.344266}, {-0.632160, 0.903716}, {0.360618, -0.187216}, {-0.390545, 0.532805}, {-0.595274, 1.078196}, {0.211172, -0.862871}, {0.328564, -0.792903}, {0.829098, 0.198476}, {-0.566607, 1.373401}, {-0.019308, 0.285081}, {-0.888302, 0.700636}, {0.148316, 0.138057}, {1.181460, 0.019935}, {0.392411, 0.162331}, {-0.247861, 0.263792}, {0.505014, -0.182329}, {0.628016, 1.287511}, {0.212292, 1.024624}, {0.687431, 1.089767}, {0.564834, -0.028119}, {0.371715, -1.099486}, {0.357609, 0.070059}, {2.215728, 0.181810}, {0.836665, -0.244650}, {-0.220496, 0.330559}, {0.676588, 0.472829}, {-0.829341, -0.226416}, {0.744014, -0.881448}, {-0.729316, -0.218085}, {-0.984519, -0.858390}, {-0.487788, 0.244053}, {-0.671190, -0.312322}, {0.049124, 0.288241}, {-1.004947, 0.620259}, {-0.321884, -0.417017}, {-0.493885, 0.523531}, {-0.059619, -0.791344}, {-0.457605, 0.691495}, {0.170169, -0.246006}, {1.075328, -0.540974}, {-0.079762, 0.947477}, {-0.010670, -0.267796}, {0.943646, 0.021645}, {-0.285628, -0.533131}, {-0.326849, 0.040866}, {-1.421573, -0.739533}, {1.107711, -0.003967}, {1.000615, -0.065396}, {0.312538, -0.117636}, {-0.125344, -0.171464}, {-1.212099, -0.453897}, {0.288620, -0.519846}, {-0.248802, -1.402444}, {-0.310674, 0.442311}, {0.098956, 0.041407}, {-0.145050, 1.286205}, {-0.429898, 0.190147}, {-1.606072, 0.685533}, {0.367341, 0.528374}, {-0.074278, -0.544411}, {0.109107, 0.601468}, {-0.454410, 0.957520}, {0.453384, 0.097285}, {-1.143893, 0.610775}, {1.249307, -0.776195}, {0.494955, 1.337840}, {0.242363, 0.197588}, {-0.114836, -0.076961}, {-0.517306, 0.086171}, {0.536084, 0.234221}, {-0.269984, -0.404274}, {0.607933, -0.179944}, {1.480986, 0.514357}, {-1.274472, -0.307237}, {0.687074, 1.058117}, {-0.400117, 0.313936}, {-0.791993, -0.417857}, {-0.561613, -0.645294}, {0.656279, -0.373169}, {0.740039, -0.034331}, {-0.240484, -0.434931}, {-0.485973, 0.426967}, {0.234931, 1.122127}, {0.391140, -0.409224}, {0.549154, 0.884721}, {-0.915296, -0.762616}, {0.305934, -0.771631}, {-0.760185, 0.255838}, {0.140172, 0.086197}, {-0.136659, -1.801038}, {-0.285519, -1.066988}, {-0.359939, 1.554395}, {0.289408, 0.825934}, {0.461379, -0.152002}, {-0.806281, 0.378343}, {-1.253917, -1.287774}, {-0.911462, -0.640941}, {0.986825, 0.222918}, {0.108762, 0.707578}, {0.028426, 1.052636}, {0.337372, 0.262425}, {-0.074310, -0.230538}, {-0.746241, -0.364158}, {0.184766, 0.326757}, {0.299052, 0.408284}, {0.454029, 0.336521}, {-0.418725, -0.640634}, {-0.358958, 0.325470}, {-0.113820, 1.106193}, {0.097508, -0.640975}, {0.004309, 0.013634}, {-0.103721, -0.180842}, {0.500274, 0.105109}, {1.541197, 0.972081}, {0.441451, -0.455017}, {0.040723, -0.995386}, {0.963317, -0.421559}, {1.402597, 0.107761}, {1.587690, 0.790156}, {-0.360062, 0.069757}, {0.272024, -0.645917}, {0.182518, -0.169444}, {-0.720138, 0.570094}, {-0.219343, -0.714791}, {0.364707, 0.085334}, {1.238324, -0.048266}, {-0.069206, 0.421442}, {-0.369665, 0.405097}, {-0.125755, 1.815291}, {1.339344, -0.722225}, {0.212585, 0.318092}, {0.198631, -0.060546}, {0.526265, 0.353971}, {-0.432338, 0.914161}, {-0.259149, -0.485961}, {0.186000, -1.204080}, {0.143559, 0.179813}, {0.174681, -0.217002}, {-0.535888, 0.862929}, {0.138733, 0.315051}, {-0.281155, -0.621632}, {0.825205, 1.046364}, {-1.448150, 0.028607}, {1.043647, -0.708319}, {0.579024, -0.187058}, {0.462025, -0.051373}, {0.080543, -0.987185}, {-0.422065, 1.038899}, {1.245455, 0.673572}, {0.120575, -0.872393}, {-0.935692, -0.049482}, {0.833592, 0.112002}, {-0.280053, -0.923684}, {-0.352881, -0.159811}, {0.006592, 0.880995}, {-0.334637, 0.319727}, {1.600511, 0.559890}, {-0.063299, 0.518006}, {0.767673, -0.342292}, {0.894664, -1.056244}, {0.218239, -1.485107}, {1.313901, -0.284383}, {0.416552, 0.516669}, {-0.945374, -0.353124}, {-1.444466, -0.478877}, {0.595701, -0.530269}, {0.321203, -0.859422}, {-0.202144, 0.563280}, {-0.921581, -0.435354}, {-0.709879, -0.080659}, {0.850755, 0.425879}, {0.371517, -0.722259}, {-0.655815, -0.005035}, {0.270087, 0.539163}, {-0.233616, 0.091892}, {0.062617, -0.648446}, {0.581563, -0.013480}, {-0.959711, 2.092442}, {-1.236567, -0.286320}, {0.048573, -0.041422}, {-0.491037, -1.454069}, {1.001908, 0.754578}, {-0.301879, 0.407477}, {0.642198, 0.246582}, {0.224810, 0.092193}, {-0.272613, 0.953599}, {-0.427767, 1.107148}, {-0.212575, -0.673377}, {0.074416, -0.040497}, {0.889662, 0.397214}, {-0.188469, 0.498567}, {0.687591, 1.144973}, {1.150738, -0.377170}, {-0.700195, 0.414603}, {-1.226960, -0.280948}, {0.047836, -1.929469}, {-0.082189, -0.056623}, {-0.601386, -0.154564}, {-0.462696, 0.956185}, {0.425110, 0.342661}, {-0.840692, 0.701600}, {-0.504892, 0.547409}, {0.111847, 0.714410}, {0.239928, -0.645067}, {-0.108924, -0.190042}, {-0.383790, 0.092672}, {-1.208346, 0.551190}, {0.603143, 0.029640}, {-1.009036, -0.200890}, {-0.446945, -1.003718}, {0.765485, -1.039887}, {-0.480552, -0.196850}, {-0.203509, -0.820593}, {0.688553, 0.072149}, {0.703177, -0.301738}, {0.086873, 0.336471}, {-0.087231, -0.206545}, {0.269569, -0.857498}, {0.233124, 0.128947}, {-0.484636, 0.170069}, {-0.537166, 0.776772}, {0.175699, -0.230826}, {0.085410, -0.018865}, {0.034945, -0.185273}, {0.569387, 0.834000}, {0.947868, -0.930988}, {-0.100640, 0.458731}, {1.002459, 0.121581}, {1.059436, -0.068274}, {-0.421766, -0.185124}, {0.812700, -0.879198}, {1.381454, -0.394813}, {0.765729, -0.434247}, {-0.715909, -0.355391}, {0.073886, 1.283928}, {0.489919, -0.471248}, {0.194977, 1.066605}, {-0.578221, -0.425253}, {-0.406449, 1.355422}, {-0.264036, -1.141037}, {-0.684424, 0.475471}, {-0.556184, 1.217787}, {-0.098804, 0.291072}, {-2.004840, -0.218550}, {0.675484, 0.712235}, {-0.467058, 0.550342}, {-0.743855, 2.418363}, {-0.778534, 0.962859}, {-0.835465, -0.887622}, {0.044832, 1.405487}, {0.309662, -1.836249}, {0.206982, -0.439087}, {0.960534, -2.043925}, {-0.543298, 1.356592}, {0.928993, -0.616757}, {0.549173, 0.603967}, {-0.430636, -0.012406}, {0.260641, 0.304006}, {0.440114, -0.450592}, {0.231095, 0.277928}, {0.209124, -0.466697}, {-0.960677, -1.002757}, {1.075456, -0.462500}, {-0.606526, 0.152494}, {-0.182662, -0.659743}, {1.384662, -0.357479}, {-1.330588, -1.047178}, {0.502764, 0.377201}, {-0.247289, 0.855959}, {-0.012699, -0.113936}, {0.364142, 0.075726}, {-0.269392, 1.005615}, {1.370532, 0.307236}, {1.142868, 0.386704}, {0.440215, -0.324471}, {-0.033589, -0.638411}, {-0.327272, 1.068003}, {-0.543571, -0.273416}, {-0.365062, -0.542959}, {1.250943, 0.688743}, {0.472615, -0.098602}, {1.445136, 0.536558}, {0.784735, -0.170791}, {0.064371, -0.779831}, {0.308675, -0.603152}, {1.586819, 0.666450}, {0.639744, -1.202155}, {-0.627964, 1.088006}, {-0.476573, 0.282566}, {0.027772, 0.994415}, {0.334959, 1.192618}, {0.504855, 0.281254}, {0.413815, 0.195150}, {-0.592291, 1.052660}, {0.079286, -1.324581}, {0.235540, -0.732265}, {-0.005819, -0.171668}, {0.067451, -0.441117}, {0.607046, -0.160835}, {-0.162694, 0.829134}, {0.421080, 0.189770}, {-0.116096, -0.441471}, {-1.205497, -0.460146}, {0.111566, 0.707898}, {-0.674216, 0.010199}, {-0.516917, -0.340492}, {-0.253736, -0.133809}, {0.293164, -0.493820}, {0.094884, 1.329867}, {0.888509, 0.028852}, {0.507446, 0.428109}, {0.777171, -1.230643}, {0.888975, -0.258522}, {0.494596, 0.073523}, {-0.528695, -0.616262}, {-0.133796, 1.596729}, {0.042732, 0.994114}, {0.187107, -0.683293}, {1.709562, -0.422073}, {-0.501284, -0.984705}, {0.979104, 0.114013}, {0.619612, 0.148485}, {0.265311, 0.436067}, {-1.104922, 0.399318}, {-0.844686, 0.364787}, {0.045931, -1.764657}, {0.234470, 0.330008}, {-0.745766, 0.634961}, {1.040822, -1.192880}, {-0.924936, -0.069478}, {-0.559008, 1.068087}, {-0.001940, -1.409943}, {-0.963420, -0.425440}, {-0.355644, -0.262865}, {-0.325353, 0.688031}, {-0.505974, 0.930113}, {-0.513432, 0.014631}, {-0.641167, -0.464992}, {0.989676, 0.899411}, {0.475176, 1.152172}, {-0.649576, -0.471232}, {-0.544376, 0.273234}, {-1.936626, 0.360009}, {-0.788292, -0.146180}, {0.029239, 0.663837}, {0.089389, -0.405482}, {-1.006432, 0.041522}, {0.065737, 0.170432}, {-0.536108, 0.463754}, {0.249146, -0.505395}, {0.371547, -0.812264}, {-0.037906, -1.072131}, {0.484523, -1.128252}, {-0.715915, -0.328589}, {-0.274512, 0.228612}, {-0.058716, 0.021879}, {0.702693, -0.158524}, {-0.151997, 0.473194}, {-0.852896, -0.326452}, {-0.100443, 0.365915}, {-0.955887, 0.394822}, {-0.208727, -0.344079}, {-0.131318, 0.157507}, {0.210001, 0.434525}, {-1.062122, -0.117708}, {-0.346687, -0.182016}, {0.654369, -0.500059}, {-0.307734, -0.826574}, {0.155367, 1.735056}, {1.858707, -0.541347}, {-0.268982, 0.440984}, {0.216965, -1.158686}, {-0.431159, -1.260753}, {-1.785308, -0.584553}, {0.261771, 0.584204}, {1.451317, -0.742810}, {-0.004668, -0.752829}, {-0.024921, 1.245290}, {0.595504, 0.565095}, {0.960266, -0.329771}, {0.326327, 0.550239}, {-0.863137, 0.203973}, {-0.380078, -0.435468}, {1.090459, -0.823282}, {-0.356638, 0.283852}, {0.682541, 0.012101}, {-0.308431, 0.770005}, {1.199072, 0.069286}, {-1.046700, 1.675759}, {-0.077715, 0.534336}, {-0.222926, 0.910906}, {0.261806, 0.566523}, {0.420022, -0.553801}, {-1.412877, 0.700632}, {0.797401, 0.323269}, {-0.694224, 0.960901}, {0.533299, 0.850659}, {-0.991622, 1.002736}, {-0.028049, 0.666471}, {0.715754, -0.271882}, {0.578916, 0.553135}, {0.231987, 0.123384}, {-0.109185, -1.359211}, {-0.398565, 0.173967}, {-0.043014, -0.665217}, {-1.225856, 0.628940}, {-0.929289, -1.132390}, {1.603272, 0.818561}, {-0.103226, -0.692397}, {0.141116, 1.383120}, {-0.400579, 0.668820}, {0.143826, -0.222660}, {0.333041, -0.807693}, {-0.320005, 0.808184}, {0.629822, -0.286580}, {-0.772778, 1.724556}, {1.386505, 0.462035}, {-0.229246, -1.474260}, {-0.503459, 1.044767}, {-0.250001, 0.561403}, {0.012072, -0.058950}, {0.756583, 0.503015}, {-0.335019, -0.761904}, {-0.682864, 0.003814}, {0.068344, 0.231416}, {0.256777, -0.369994}, {-0.282520, -0.095213}, {-0.187083, -0.559020}, {-0.026183, -0.522028}, {-0.650853, -0.769108}, {0.035804, -0.431890}, {0.030008, -0.399347}, {-0.287980, -0.145851}, {-0.677012, -0.560565}, {-1.049641, -0.861592}, {0.312580, 0.091289}, {-0.963485, 0.211167}, {0.287165, -0.371532}, {0.555650, -0.838435}, {0.395525, -0.449511}, {0.252774, -0.490994}, {-0.688084, -0.314271}, {-0.402613, 0.309283}, {0.511800, -0.453051}, {1.035475, -0.441895}, {-0.655559, 0.204947}, {-0.683300, -0.428916}, {0.387642, 0.043918}, {-0.179349, -0.651814}, {-0.493107, 1.155292}, {-0.030356, 0.289986}, {0.652280, 1.046866}, {0.057809, 1.266974}, {0.215742, 1.064339}, {0.447729, -0.632852}, {0.279966, -0.339154}, {-0.166371, -1.026682}, {0.421910, 0.351254}, {-0.254637, -0.154264}, {-1.334090, -0.110719}, {-0.566168, -1.155950}, {-0.558998, 0.207397}, {-0.055417, 0.648158}, {-0.241039, -0.287178}, {-0.582347, -1.040992}, {-0.289176, 0.447352}, {0.564223, -0.500253}, {0.200212, 0.121773}, {0.752287, 0.131198}, {-0.586207, -0.250267}, {0.752385, -1.118821}, {-0.454050, 0.686154}, {0.421964, -0.071049}, {0.385670, 0.105139}, {-0.883155, 0.420629}, {0.582838, 0.829220}, {1.599990, 0.302506}, {-0.711621, -0.048242}, {-0.769061, -0.939823}, {-0.570805, 1.221850}, {0.746084, 0.370521}, {-1.095763, 0.542099}, {0.507870, -0.028658}, {-0.006494, -0.140681}, {1.123004, 0.639325}, {0.023228, -0.243014}, {2.006419, -0.925360}, {0.244315, 0.241295}, {0.714233, 0.041423}, {0.930361, 1.159843}, {-0.439284, -1.104778}, {-2.044038, 1.046255}, {-0.247643, -0.295368}, {-0.496474, -0.188701}, {0.427399, -0.103610}, {-0.048929, -0.755309}, {-0.378127, -0.657410}, {0.647217, 0.149609}, {0.628906, -1.593151}, {-0.581867, -0.372896}, {-0.483963, -0.772021}, {-1.279053, -0.372171}, {-0.505264, -0.021054}, {-1.130825, 0.247607}, {0.329896, 1.593840}, {-0.312292, -0.619026}, {-0.024599, 0.020700}, {-0.647591, -0.690874}, {1.248162, 1.039611}, {-0.252032, 0.173910}, {0.311838, -0.632350}, {-1.024234, 0.131065}, {0.035961, -1.216873}, {0.477173, 0.507557}, {-1.295462, -0.451069}, {-0.377181, 1.110673}, {0.706351, -0.382557}, {-0.134564, -0.499312}, {0.566652, -0.673370}, {-0.967847, -0.852623}, {-0.139758, -2.138448}, {-0.176702, 0.054714}, {0.043205, 0.100348}, {-1.012144, -0.515393}, {0.620692, -0.001168}, {-0.231469, 0.384359}, {0.167537, 0.294412}, {-0.061414, -0.366999}, {0.731633, 0.876544}, {1.154343, 0.803758}, {0.412281, 0.559052}, {-0.371725, -1.273328}, {0.957476, -1.378973}, {0.289512, -0.991069}, {-0.578394, -1.421610}, {0.015914, 0.322132}, {0.106358, -1.449675}, {-0.069120, 0.739722}, {0.531874, -0.371638}, {0.657279, 0.323686}, {0.037083, -0.796566}, {1.061708, -0.965017}, {0.413730, 0.054267}, {0.521430, 1.075811}, {0.856354, -0.905745}, {0.373586, -0.270185}, {0.791206, -0.986693}, {0.729893, 0.860268}, {0.043905, -0.429560}, {-0.656692, -1.039828}, {0.555913, 1.767401}, {0.303388, -0.323869}, {-0.125446, -0.255745}, {1.117126, 0.195974}, {-0.992980, 0.304440}, {-0.382740, 0.426044}, {-0.223638, -0.152487}, {1.023637, -0.350714}, {0.245655, -0.157361}, {-0.111659, -0.614165}, {0.354600, 0.026794}, {-0.027813, 0.532690}, {0.245690, 0.739772}, {-0.504872, -0.794998}, {-0.809269, -1.094385}, {-1.001891, -0.480770}, {-0.465059, 0.023020}, {0.229876, -0.151501}, {-1.141435, -0.029146}, {-0.937562, -0.801157}, {-0.195200, -2.144830}, {0.101337, 0.587135}, {0.153064, -0.325187}, {-0.583504, -1.060043}, {-0.098906, -0.330180}, {-0.216563, -0.818141}, {-0.211935, -0.707920}, {0.636668, 0.028993}, {-0.758271, -0.108885}, {-0.706584, 0.097759}, {1.376119, 0.384825}, {0.420516, 1.213370}, {1.030631, -0.077473}, {-1.252726, 1.002692}, {0.487495, 0.456548}, {0.682253, 0.398622}, {0.147446, -0.079877}, {0.722369, -0.614144}, {0.378631, -0.601790}, {0.075497, 0.837757}, {0.199081, 0.445597}, {0.535089, 0.570803}, {-0.122319, 0.373349}, {-0.321298, 0.741177}, {0.903177, -0.013977}, {-0.583050, -0.924612}, {0.066698, 1.396794}, {0.408667, 0.958962}, {-0.738580, -1.497866}, {0.600777, -0.398895}, {0.254742, 0.347824}, {-0.265817, 0.876722}, {0.907423, 0.129822}, {-0.114962, -0.826617}, {-0.240360, -0.143947}, {0.148077, -0.071668}, {-0.212910, 1.016550}, {-0.013388, -1.067770}, {0.046668, -0.442470}, {0.256538, -0.318212}, {-0.250360, 1.417343}, {-0.775082, 1.038648}, {1.220756, -0.342349}, {-0.032158, -0.172829}, {0.922113, 0.382379}, {1.047628, 0.944538}, {0.885199, -0.041166}, {-1.458274, 0.373000}, {0.855979, 0.373876}, {0.431145, 0.483826}, {-0.019854, -1.320043}, {0.213858, -0.134150}, {-1.273584, -0.203977}, {-0.916604, 0.918129}, {-0.768406, -1.109353}, {-0.278667, -0.372253}, {0.878634, 0.434317}, {-1.182409, 0.691791}, {-0.166143, 0.370502}, {-0.371636, -0.617445}, {0.836100, -1.092805}, {0.179593, 2.209969}, {-0.760372, -0.186876}, {0.580655, 0.070447}, {0.637695, -1.328039}, {-0.210008, 0.169876}, {0.107828, -1.200689}, {0.689020, 0.461975}, {0.799638, -0.225619}, {0.549319, 0.257945}, {-0.169926, -0.062423}, {-1.000681, -1.230883}, {-0.280677, -0.889594}, {-0.365240, 0.176973}, {-0.496268, -1.327882}, {-0.051553, 1.031328}, {-1.118158, 1.437687}, {0.069181, -0.263582}, {0.034310, 0.657226}, {-0.665250, -0.249209}, {-0.265277, -0.231715}, {0.768583, -0.439151}, {-0.516311, 1.258394}, {-1.062635, -0.480988}, {0.768868, 1.387988}, {-0.133561, -0.253474}, {0.174635, -0.763359}, {0.207988, 0.224757}, {0.171049, 1.245499}, {-0.923550, 1.085739}, {0.631564, -1.467559}, {-0.160409, 0.068830}, {-0.008023, -1.455924}, {0.180831, -0.762764}, {0.303099, 2.221159}, {0.032024, 0.734284}, {0.086762, -0.565552}, {-0.273328, 1.536368}, {-0.101105, -0.703900}, {0.023821, -0.404259}, {0.138986, -0.943679}, {-0.511459, 0.739696}, {-1.031153, 0.329790}, {-0.038206, -0.799769}, {0.440881, -0.555912}, {0.023990, -0.531059}, {0.659228, -0.843024}, {-0.826474, -0.770692}, {0.946334, -1.545003}, {0.261025, -0.113739}, {0.048911, -1.179110}, {0.060770, -0.859467}, {-0.785178, -0.587693}, {-0.381189, 0.094381}, {0.630990, -0.822901}, {0.013473, -0.408986}, {-1.789311, 0.714900}, {1.519795, -0.195693}, {-0.701243, 0.864168}, {-0.915110, 0.072452}, {-1.261997, 1.360065}, {-0.163284, 0.527620}, {0.649672, -0.335824}, {0.610109, 0.962789}, {1.048801, -0.879891}, {-1.064425, -1.265436}, {0.105428, -0.129546}, {1.539402, -0.029218}, {-0.431054, -0.384473}, {0.440965, -1.503971}, {-0.553600, 0.461140}, {0.432415, -0.588674}, {0.466966, 0.767686}, {-1.282511, -0.822551}, {-0.405750, -0.169677}, {-0.529296, -0.256420}, {0.333425, -0.212289}, {0.351865, -1.052035}, {-0.372759, -0.324327}, {0.496838, 0.426941}, {0.521469, 0.729775}, {-0.360286, 0.330552}, {-0.939280, -0.731402}, {-0.589460, 0.375702}, {0.473278, 0.562849}, {0.907852, 0.477585}, {-1.161415, 0.674441}, {-0.978026, 0.108291}, {-0.646718, 0.244958}, {-0.037385, -0.220525}, {-0.453012, 0.255493}, {0.903459, -0.255742}, {-0.099331, 0.318876}, {0.002754, -0.225539}, {0.134105, -0.165745}, {1.240310, -0.105975}, {0.009197, 0.949681}, {-0.673977, 0.458706}, {0.679855, -0.534481}, {-0.073767, 0.277108}, {0.277924, -0.047804}, {0.415045, -0.608651}, {0.122556, 0.982192}, {-0.446661, -0.313225}, {1.173726, 1.220580}, {-1.593188, 0.789350}, {-1.834105, -1.079304}, {0.107095, -0.091381}, {1.110756, 0.061581}, {-0.917192, 0.734789}, {0.348696, -1.323831}, {0.010933, 1.090009}, {-0.106413, -0.322089}, {-0.860837, -0.506303}, {0.627199, 0.541836}, {-0.139889, -0.512866}, {0.637993, 0.510208}, {-1.167249, -0.146076}, {-0.862119, 0.394909}, {-1.240754, 0.494548}, {-0.376744, 0.672959}, {-0.999381, 0.637653}, {-1.391600, 0.390940}, {0.955660, -0.769621}, {0.310879, -0.798671}, {0.408795, -0.452281}, {-0.974719, -0.029192}, {0.311104, 0.273352}, {0.026062, -0.858645}, {0.556329, 0.206713}, {0.094267, -1.481594}, {-0.356078, 0.544259}, {-0.033796, -0.245353}, {0.203784, 0.331156}, {0.096733, 2.575388}, {-0.381793, 0.290671}, {-0.116102, -0.156839}, {0.161793, 0.594064}, {-0.321204, -1.339815}, {-1.090421, -0.762797}, {0.787900, 0.459478}, {0.243785, 0.940882}, {-0.153906, 0.841058}, {-0.936971, 1.541452}, {-0.439278, -0.322908}, {-1.066801, -0.222840}, {0.629434, -0.352457}, {-0.202999, 0.278222}, {-0.505916, 0.969990}, {0.396149, -0.315510}, {-0.829205, -0.140890}, {-0.660853, -0.447071}, {-0.699586, 0.850048}, {-0.706088, 0.377818}, {-0.876828, 0.869990}, {0.937227, -0.354026}, {-1.149567, -0.878271}, {-0.807950, -0.806797}, {-0.733349, -1.050036}, {0.134549, -1.452923}, {0.623023, 0.412688}, {0.119168, -1.377420}, {0.682589, 0.820573}, {0.800743, -0.117315}, {-0.930976, -0.305719}, {0.007050, 0.193402}, {1.580681, 0.605792}, {0.281324, 0.201371}, {0.005740, 1.007009}, {0.993450, -0.268242}, {0.289972, -0.080020}, {0.206252, 0.023882}, {-0.015665, -2.024198}, {0.371283, -1.340106}, {-0.213033, -0.457500}, {0.263077, -0.366399}, {0.710898, -1.090262}, {0.677746, -1.151681}, {1.238201, -0.610042}, {0.325461, -1.103737}, {-0.980765, -0.488024}, {-0.077484, 0.774584}, {0.496364, 0.004649}, {0.643821, 1.447878}, {-0.743024, -1.112741}, {-0.195607, 0.639318}, {-0.080202, 0.412438}, {0.916875, 0.189103}, {-0.106268, 0.390295}, {0.715604, -0.486286}, {0.115849, 1.370489}, {-0.576103, 1.129486}, {0.935521, -0.616187}, {-0.914664, 0.196014}, {0.360647, 0.177486}, {0.442306, -0.048782}, {-1.345507, 0.159373}, {-1.024007, -1.295577}, {0.303087, -0.450638}, {0.225152, -0.356881}, {-0.503513, -0.770894}, {-0.333461, -1.843134}, {-0.432863, -0.889999}, {-0.784493, -0.566774}, {0.410618, 0.701420}, {0.136290, -1.037936}, {0.145021, 0.974063}, {0.529589, 0.128197}, {-0.676674, -0.971814}, {-0.270406, 1.019808}, {0.096367, -0.838265}, {0.318717, -0.762441}, {0.397090, 0.756928}, {0.648969, 0.667148}, {-0.913693, -0.162627}, {0.119623, 0.022965}, {0.555892, 0.378100}, {0.900717, 0.703179}, {-0.046262, -0.721821}, {-1.181653, 0.505205}, {0.465203, -0.477470}, {0.046090, -0.627510}, {-0.363122, -0.091161}, {0.953653, 1.039114}, {-0.789380, -0.928026}, {0.162396, 0.803479}, {-0.835156, -0.260672}, {0.250119, -0.467056}, {0.218336, 0.454615}, {0.209926, 1.190928}, {-1.178592, -0.891917}, {0.550639, -0.793167}, {-1.985065, -1.044282}, {-0.196421, -0.054591}, {0.084188, -0.363259}, {-0.505210, -0.803844}, {1.240644, -0.301110}, {0.512258, -0.469191}, {-1.549377, 0.756018}, {-0.614481, -0.080973}, {-0.744195, -0.048617}, {0.879512, -0.837412}, {-1.089793, 1.223308}, {1.011531, 0.192099}, {0.335207, -0.361593}, {0.976295, -0.603421}, {-0.220526, -0.371096}, {-1.002946, 0.716884}, {-0.444541, -0.037052}, {-0.477626, 0.295812}, {-1.046918, -2.279811}, {0.133746, -0.120300}, {0.279460, 0.397052}, {-0.663998, 0.035170}, {1.121487, 0.680845}, {1.108689, 1.142655}, {0.380884, 1.253683}, {0.106635, -0.096270}, {0.651713, -1.297000}, {0.481130, -0.876693}, {-2.086800, 0.062748}, {0.502741, 0.743331}, {-0.634120, 0.417364}, {0.332408, -1.807629}, {0.288393, -0.248269}, {-0.589845, 0.528027}, {-0.953016, 0.010891}, {1.215645, -1.463684}, {0.179478, -0.118753}, {0.304072, 0.579308}, {-0.786558, -1.384700}, {1.545828, 0.671325}, {-1.103380, 0.496542}, {0.566262, 0.207667}, {0.168035, -0.084493}, {-0.745029, 0.787807}, {-0.008405, 0.486130}, {-1.256400, -0.811337}, {-0.421056, -0.997844}, {-0.129980, -0.010057}, {0.683615, 0.299871}, {0.171174, -0.371855}, {0.239929, -0.288358}, {0.736989, 0.844517}, {0.502939, -0.293006}, {-0.078536, -0.030891}, {0.889214, 0.617627}, {0.107697, -0.504655}, {-0.322943, -0.180390}, {-0.659880, -0.211751}, {-0.425630, 1.220749}, {1.564708, 1.804423}, {-0.562868, 0.198486}, {-0.064851, -0.014952}, {-0.685409, 0.304867}, {1.341588, 0.203554}, {0.391212, -0.841740}, {0.700891, 0.658326}, {-0.301305, 0.902339}, {-0.046588, 0.019530}, {0.415121, -0.949705}, {-0.410635, -0.231837}, {0.615095, 1.334066}, {-0.067261, 0.324586}, {0.167043, -1.136141}, {0.422422, 0.696197}, {0.584087, 0.667480}, {-0.551074, 0.249301}, {0.421860, -0.454014}, {-0.585820, -0.664637}, {-0.071516, 0.815123}, {-0.541864, 0.195446}, {0.866604, -1.519052}, {-1.811300, 0.473683}, {-0.412564, 0.863621}, {-0.125827, -0.223240}, {0.963505, 0.064195}, {0.096324, -0.017230}, {-0.559212, 0.385040}, {-0.071234, 0.362721}, {-0.783611, -1.711285}, {-0.466996, -0.665663}, {-0.422348, 0.153831}, {0.031726, 0.347303}, {0.126585, 0.194805}, {1.089699, -0.115948}, {0.261952, 1.193404}, {-0.062577, 0.658827}, {1.046650, 1.250723}, {0.343986, -0.385875}, {0.398418, -1.112678}, {0.397788, 0.432553}, {-0.081351, -0.869887}, {0.115778, -1.810748}, {1.089135, 0.283668}, {0.348676, -0.215081}, {0.990831, 0.340013}, {-0.429526, 0.150394}, {-0.209451, -0.426354}, {1.251426, 0.387939}, {-0.941099, -0.048392}, {0.553432, 0.490465}, {0.820341, -0.892655}, {-0.469979, 0.215954}, {-0.111752, -0.518634}, {-0.322742, 0.282748}, {-0.131831, -0.096259}, {0.928465, 0.491990}, {-0.131168, 0.713177}, {1.182858, -0.137778}, {0.498624, 0.596945}, {-0.340255, 1.333451}, {-0.263143, -0.178530}, {-0.853000, -0.367513}, {0.645533, 0.217256}, {-0.222484, -0.050816}, {-0.889767, 0.961630}, {-0.559303, -0.335849}, {0.755808, 1.224325}, {-0.295347, -0.382986}, {0.154238, 0.489334}, {0.806167, 0.600666}, {-1.440967, 0.906005}, {0.400307, -1.289369}, {-1.322768, 0.271201}, {0.721328, -0.415260}, {0.328246, 0.162043}, {1.063849, -0.169918}, {0.661691, 0.188712}, {-0.393050, -0.106635}, {-0.924026, -0.264599}, {-0.379871, -0.638547}, {1.648221, 0.026247}, {1.111263, 0.149709}, {0.176878, -1.278937}, {0.734091, 0.194270}, {0.643210, -0.024985}, {-0.703541, -0.377990}, {0.786560, 0.295150}, {1.646656, -0.147934}, {-0.361062, 0.674906}, {-0.317120, 0.143807}, {-1.310888, -0.164024}, {0.035068, 0.189815}, {-0.787682, 0.694272}, {-0.057575, -0.198782}, {0.037946, -1.261234}, {0.789551, 0.167209}, {0.163492, 1.280868}, {1.486117, 0.344385}, {-0.259139, -0.046155}, {-0.720616, -0.687107}, {0.332266, 0.269337}, {0.677660, -0.080123}, {0.221776, 0.671525}, {-1.286564, -1.026638}, {-0.137566, -0.439496}, {1.253971, -1.647977}, {-1.082200, -0.445719}, {-0.166409, -0.650523}, {-0.453263, 0.213402}, {-0.017712, -0.128208}, {-0.032769, -0.405644}, {-0.219371, -0.017666}, {-0.799480, -1.769117}, {-0.532850, 0.965634}, {-0.686125, -1.467377}, {-0.633034, -0.389067}, {-0.150331, 0.782007}, {-0.691980, 0.730198}, {-0.597063, -0.279026}, {0.834946, 0.396175}, {-0.078053, -0.123351}, {-0.571384, -0.618287}, {0.325004, 0.114546}, {0.411609, 1.274331}, {0.206788, -0.139653}, {-1.090128, 0.800625}, {-0.412709, 0.694443}, {-0.162932, 1.311011}, {0.397417, -0.737950}, {-0.100183, 0.447697}, {1.213408, -1.126972}, {0.034492, 0.978029}, {-0.872335, -0.584584}, {0.568310, 0.904579}, {-0.453700, 0.703082}, {-1.230769, 0.813793}, {-0.851555, 0.357280}, {0.604006, 0.281641}, {0.411237, 0.367925}, {-0.750405, -1.252638}, {0.260416, 0.091677}, {0.333514, -1.104021}, {0.782219, 0.587118}, {-0.200975, -0.528729}, {-0.332689, -1.636132}, {-0.415304, -0.010511}, {-0.121022, 0.354709}, {0.994143, 0.280846}, {0.138590, -0.213242}, {-0.193256, -0.095752}, {-0.441602, 0.259315}, {0.948753, 0.001788}, {0.898141, -0.750677}, {1.346054, 0.626588}, {0.381400, -0.493532}, {-1.338972, 0.327082}, {0.220140, -0.344755}, {0.656912, -0.469924}, {1.263170, 0.096743}, {0.070575, -0.775336}, {0.716447, 1.747781}, {0.298510, 0.135103}, {0.022491, 0.885968}, {0.142852, 0.482053}, {-0.434061, -0.439810}, {0.694127, 0.094622}, {0.448201, -0.299757}, {0.087507, 0.008116}, {0.250792, 0.103017}, {-0.059841, -0.687843}, {-0.071647, 0.860597}, {0.728315, 0.820186}, {-0.640044, 0.101480}, {0.211384, 0.028702}, {-0.457781, 0.490619}, {-0.178352, -0.304710}, {-0.563754, -0.733470}, {-0.770274, 0.082873}, {-0.762355, 1.140889}, {0.797291, 0.304485}, {-0.057014, -0.903306}, {-0.158813, 0.075113}, {-0.874554, 0.299985}, {-1.282132, -0.277777}, {0.150378, -1.322159}, {0.433856, -0.000391}, {0.119086, -0.850105}, {0.204912, 0.316619}, {-0.757190, -0.377894}, {-0.896753, 1.076560}, {1.182092, -0.196822}, {0.699797, 0.526050}, {0.405838, -0.496715}, {-0.834600, -0.037964}, {0.545939, 0.047411}, {-0.771625, 0.127979}, {0.625542, 0.978054}, {0.578050, 1.339611}, {-0.854615, -0.162544}, {0.803070, -1.575209}, {-0.722438, 0.809655}, {0.812986, -0.021617}, {0.617012, 0.621875}, {-0.694562, -0.359274}, {0.819084, 0.571131}, {0.605917, -0.877233}, {-0.166467, -0.432090}, {-0.763237, 0.021539}, {-1.007144, 0.682364}, {-0.012074, -1.138787}, {-0.793479, 0.734741}, {0.950373, -0.774179}, {0.714255, -0.444826}, {-1.824486, -1.178179}, {0.286283, -1.022538}, {0.371641, 0.412646}, {1.221297, -0.075273}, {0.513217, 0.452413}, {0.015385, -0.341663}, {-0.926360, 0.470885}, {-0.515633, 0.282595}, {-0.876782, 0.148065}, {-0.204097, -0.416771}, {0.581214, 0.730282}, {0.150986, -0.721883}, {-0.919574, -0.518872}, {-1.025393, 1.032902}, {-0.571691, -0.523905}, {0.336729, 0.277443}, {0.077651, 0.017905}, {-0.049717, 0.473017}, {-0.410902, -0.770257}, {-0.847206, 0.198044}, {0.356753, 0.100081}, {0.580691, 0.400755}, {0.718459, 0.870265}, {0.779366, 0.466430}, {-1.046243, -1.317550}, {-0.248241, -0.184969}, {0.626921, 0.660065}, {0.772665, -1.467408}, {0.189100, 0.479679}, {-1.027175, 1.032229}, {-0.110106, -0.214123}, {-0.434741, 0.523121}, {-0.947316, 0.197282}, {0.241363, 0.711876}, {-0.790393, -0.270092}, {-0.264741, 0.345775}, {0.814247, -0.835493}, {0.947799, 0.460240}, {0.505144, 0.380228}, {-0.473087, -0.638790}, {0.543595, -0.001347}, {-0.682112, 0.627895}, {-0.405487, 0.778655}, {0.090159, -1.164412}, {-1.021743, -1.421425}, {-0.149220, -0.891920}, {0.763872, -0.387818}, {0.447078, 0.686021}, {0.054443, 0.941294}, {0.946171, -0.217788}, {-0.490974, 1.129098}, {0.729449, 0.252452}, {0.815682, -0.189074}, {0.788805, -1.240450}, {0.942122, -1.379303}, {-0.702094, 0.893805}, {-1.031257, 0.993462}, {-0.515607, -1.598744}, {-1.242896, 0.696992}, {0.462112, -1.234721}, {-1.005724, 0.703223}, {0.475509, 1.468536}, {0.087152, 0.401476}, {-1.961801, 0.527485}, {-0.277783, 0.792785}, {0.499758, -0.094692}, {0.592984, -0.740657}, {-0.369076, -0.004060}, {0.610104, -0.671913}, {-0.127590, 0.291879}, {-0.769939, -0.549296}, {-0.110371, -0.651391}, {-0.324962, -0.638560}, {-0.366826, 1.409327}, {0.365052, -0.587005}, {-0.316704, -0.411182}, {-0.769326, -0.018427}, {0.918326, -0.205236}, {1.455609, 1.087051}, {0.844860, -0.653147}, {1.020463, 0.280075}, {0.559389, -0.768862}, {-1.792332, -0.215746}, {0.196068, -0.074482}, {-0.613620, -0.906514}, {-0.602302, 1.210484}, {1.537292, 0.306783}, {-0.008903, -0.974294}, {-0.532771, -0.265199}, {-0.018499, -0.535834}, {-0.014195, 0.748767}, {0.353076, -0.075319}, {0.434187, 0.928206}, {-0.355526, 0.282319}, {0.211333, 0.311046}, {-0.589182, -0.031620}, {1.002223, 0.023921}, {-0.601628, -0.329293}, {0.424415, 0.068179}, {-1.155585, 0.516343}, {0.515025, 0.512588}, {-0.779358, 0.737289}, {-0.532136, -0.528990}, {0.246092, 0.038006}, {-1.225133, 0.620487}, {-0.200500, -0.297832}, {-0.419124, -0.629269}, {0.857102, -0.394516}, {-0.627349, 0.023525}, {-0.480722, 0.194265}, {-0.967646, -0.289770}, {-0.811645, 0.778058}, {-0.330038, 0.486357}, {-0.188439, 0.216193}, {0.089880, -0.920053}, {0.123710, -0.395635}, {0.590314, 0.051432}, {-0.400984, 0.472685}, {-0.482473, -0.081664}, {1.021624, 1.195570}, {-0.641330, -0.310074}, {-0.191657, -0.668057}, {0.057035, 0.868019}, {0.161342, 0.290908}, {-0.914313, 1.611466}, {0.752373, 1.180590}, {-0.023547, 1.358874}, {-0.891893, 0.622478}, {-0.627566, -0.215932}, {0.569484, -0.032047}, {0.151811, 0.537318}, {0.643493, -0.211765}, {-0.277706, 0.641965}, {-0.055308, 0.040286}, {0.133963, -0.238700}, {-0.927043, 0.438230}, {0.737539, -1.090991}, {-0.258609, 0.790912}, {-0.248323, -0.881598}, {0.220905, 1.051752}, {0.439683, -0.240808}, {-0.081260, -0.429267}, {-0.893930, -0.301145}, {0.216628, 0.563682}, {0.495748, -0.625961}, {-0.484015, -1.195660}, {-0.717614, -0.328233}, {-0.601530, -0.572201}, {-0.055818, 0.060060}, {0.301962, 0.128367}, {-0.314449, -0.022201}, {-1.088724, 0.633684}, {-0.576006, 0.352197}, {-0.476385, -0.096264}, {-1.326078, -0.103745}, {-0.458658, -0.228827}, {0.123811, 0.703156}, {-1.208584, 0.467840}, {0.733960, 0.272324}, {-0.531940, 0.601927}, {-0.203491, 0.765397}, {0.282851, 0.489174}, {-1.410437, 0.224490}, {-0.438276, -0.013360}, {-0.061401, -0.259781}, {-0.014421, -0.307778}, {-0.475161, 1.111264}, {0.769111, 0.441227}, {0.172795, -0.268608}, {0.979869, 0.135185}, {-0.528977, -0.205653}, {-0.045259, 0.027604}, {0.722821, 0.789841}, {-0.039846, -0.938385}, {0.589344, 0.223276}, {-1.022671, -0.084817}, {0.041763, -1.074842}, {-0.588962, 0.459411}, {0.305630, -0.951329}, {-0.688286, -0.717012}, {-0.239280, -0.054100}, {0.466996, -0.578716}, {0.515927, -0.146469}, {0.728230, 1.345576}, {0.418004, 1.320527}, {-0.518194, 0.757005}, {0.012964, -1.615714}, {-0.952324, -0.315730}, {-0.857139, 0.027421}, {0.114293, 0.309591}, {-0.844651, -0.223144}, {-0.928183, 1.192097}, {-1.023982, -0.343621}, {-1.048939, -0.345626}, {0.164567, 0.377517}, {0.836105, -0.111800}, {0.071700, 0.607273}, {0.144912, 0.349067}, {0.722128, -0.075779}, {-0.279779, -0.260383}, {-0.049156, 1.120738}, {-0.640154, -0.228391}, {-0.039753, 0.150724}, {-0.415397, -0.463677}, {-0.723847, -0.209406}, {-0.524332, -1.037805}, {0.171327, -1.435469}, {-0.089687, -0.415936}, {-1.225215, 0.133157}, {-0.018497, -0.644647}, {0.396236, -0.355851}, {0.225700, 0.899203}, {0.287114, -0.691831}, {0.674085, -0.073870}, {2.000654, -0.623437}, {-0.252822, -0.415741}, {0.052088, 0.016210}, {-0.332988, -0.849652}, {0.026695, -0.376094}, {0.742096, 0.969579}, {-1.635731, 0.339533}, {-0.208349, 0.686132}, {0.828001, -0.603493}, {-0.078836, -0.444070}, {1.364974, 0.631664}, {-0.160620, 0.335231}, {-1.378768, -0.907673}, {-0.293646, 0.072013}, {1.524592, -1.461770}, {0.083610, -1.746190}, {0.102486, 0.149103}, {0.691698, 0.227990}, {0.028614, -0.864596}, {-0.152066, 0.125449}, {-1.205134, 1.186200}, {0.848843, -0.061847}, {1.081665, 0.049303}, {-0.108837, -0.099148}, {0.262042, -0.490003}, {-0.254991, 0.361463}, {-0.477565, 0.096211}, {-0.137706, -1.119345}, {0.538644, 0.486454}, {0.035114, 0.001732}, {-0.695087, 0.063591}, {-1.648017, 0.977367}, {-0.224997, 0.395787}, {-0.727539, -0.234162}, {0.078225, -0.026224}, {0.772412, -0.439717}, {-0.403974, 0.204029}, {-1.104881, -0.012786}, {-0.672931, -0.415948}, {-0.863229, -2.233172}, {1.063307, -0.258525}, {-0.529432, -0.708843}, {-0.176069, -1.026002}, {-0.384993, -0.904576}, {0.042330, -1.765663}, {0.851313, 1.091533}, {0.180840, 0.453570}, {0.337128, 0.182821}, {1.363286, -1.181451}, {1.137031, -0.433505}, {-1.325181, -0.200399}, {0.394546, 0.006217}, {0.723817, -0.068463}, {1.050909, 0.065058}, {0.084242, -0.420440}, {-0.238302, 0.258881}, {0.174215, -0.677729}, {-0.711756, 0.276335}, {-0.129577, -0.515158}, {0.866331, 0.116316}, {1.575856, 0.566488}, {0.235497, -0.285233}, {-0.831974, -0.236821}, {-0.817600, 1.539514}, {-0.485036, 0.295694}, {-1.575127, 0.044856}, {0.181119, 0.710358}, {-0.056993, -0.238132}, {0.091941, 0.490274}, {0.339556, 1.201109}, {-1.241956, 1.033717}, {-0.653462, -1.105622}, {-0.351127, 0.017888}, {-0.240821, -0.475748}, {-0.456277, 0.573568}, {-0.419904, -1.058360}, {0.052939, -0.291801}, {-0.975645, 0.317124}, {-0.277843, 1.312881}, {-0.980414, -0.689515}, {-0.328660, 0.125761}, {0.002261, 0.540834}, {0.289127, -0.906076}, {-0.583909, 0.091516}, {-0.105622, 0.534255}, {0.498881, -1.752227}, {-0.372611, -0.300411}, {0.805897, 1.430785}, {1.128088, -0.203904}, {-0.080504, -0.025175}, {0.109551, 0.071366}, {-1.018953, 0.755951}, {0.666092, 0.991101}, {0.947680, -0.016049}, {2.030778, -1.308712}, {-0.536376, -0.093177}, {-0.979295, -0.287391}, {-0.720582, -0.666863}, {-1.329793, -0.141597}, {1.120330, 0.296339}, {-0.683593, -1.193189}, {-0.890008, -0.339326}, {0.108370, 0.364104}, {0.761248, 0.181091}, {0.852765, 1.409425}, {-0.232370, 1.404779}, {-0.951683, -0.337612}, {-2.093378, -0.985796}, {-0.708897, 0.096981}, {-0.369032, -0.081507}, {0.668578, 0.410819}, {-1.449941, 1.474340}, {-0.077746, -0.719201}, {-0.522293, -0.151163}, {-0.458998, -0.377810}, {-0.371088, -0.656185}, {-0.692675, 0.536793}, {-0.856001, 0.770941}, {0.787694, -0.616170}, {0.666946, -1.360541}, {0.649554, -0.692776}, {-1.149561, -0.060654}, {-1.017696, -1.553694}, {0.594676, -0.308209}, {-0.414485, 0.300271}, {0.914811, -1.373936}, {0.593489, -0.368620}, {-0.414122, 0.825231}, {-0.946035, -0.712426}, {-0.027283, -0.856090}, {0.824075, -0.537887}, {-0.670569, -1.076879}, {1.250980, -0.782317}, {0.225270, -0.377829}, {0.977247, 1.198198}, {-0.255252, 0.458703}, {0.859036, 2.174261}, {-0.392631, 0.739821}, {-0.219855, 0.169863}, {0.412017, 0.686208}, {0.191456, 0.548503}, {0.762538, -0.306864}, {-0.618637, -0.991173}, {-0.286232, -1.189813}, {0.409556, 0.705714}, {0.604650, -0.285883}, {-0.037553, -0.284563}, {-1.752832, 0.885716}, {0.662262, 0.178240}, {-0.668130, -0.398971}, {2.333495, -0.030369}, {0.431917, -0.014914}, {-0.339628, -0.075137}, {0.979382, 0.620025}, {0.024547, -0.548793}, {-1.198934, 0.571377}, {0.089618, 0.417351}, {-0.696845, 0.721676}, {0.227661, -0.375026}, {-0.168858, -0.092691}, {0.407953, -0.657836}, {0.508885, -0.088453}, {0.062845, -0.270386}, {-0.087209, -0.221708}, {-1.042531, 0.650343}, {-0.637231, 0.804756}, {-0.316632, 0.521297}, {-0.284839, 0.380972}, {0.756041, 0.089078}, {0.367135, -0.050171}, {0.673788, -0.328597}, {-0.475960, 1.277835}, {0.050328, -0.406764}, {-1.253687, 0.528663}, {1.121088, -0.753455}, {0.576634, 0.414912}, {1.154879, -0.107302}, {0.079544, 0.382389}, {0.259826, -0.087435}, {1.064498, 0.528704}, {-0.698877, -1.021912}, {1.273747, 0.566923}, {-0.151776, 1.226809}, {-0.116914, 0.456137}, {-0.758612, 0.838042}, {0.174788, 0.207897}, {-1.054368, -0.062673}, {0.303920, 0.414262}, {0.444540, -1.599911}, {-0.263430, 0.748950}, {0.673118, 0.295838}, {0.558813, -1.015097}, {-0.182189, 0.099479}, {-0.290746, -0.204886}, {-0.429349, -0.670610}, {-1.054783, -0.017990}, {0.438704, 1.112183}, {1.172061, 0.466392}, {0.572237, 0.341187}, {0.617213, -0.632464}, {0.122765, 0.496952}, {-0.366828, 0.476781}, {0.023184, 0.226708}, {-0.410027, -1.070367}, {-1.411039, 0.798430}, {0.635652, -1.202681}, {1.131089, -0.782675}, {0.310544, 0.006326}, {0.525788, -1.242739}, {0.347988, 0.586708}, {-1.343655, 1.265193}, {0.573006, 0.820707}, {-0.145902, -0.883328}, {0.129940, 0.855404}, {0.877836, -0.239222}, {-0.451520, -0.558787}, {0.326841, -1.498916}, {-0.472055, -0.088465}, {0.420626, 0.747670}, {0.365096, -0.779117}, {0.779887, -1.025049}, {0.268789, 0.955912}, {0.427846, 0.416261}, {0.351268, 1.579771}, {0.085293, -1.166684}, {0.108972, -1.064624}, {-0.566448, -0.214947}, {-0.132223, -0.361406}, {-0.136036, 0.118975}, {0.427266, 0.217945}, {0.189904, -0.598306}, {0.020599, 0.225899}, {-1.566003, 0.465088}, {-0.151238, -0.690998}, {0.644967, -1.305515}, {-1.005521, 0.212625}, {-0.201626, 0.124733}, {0.712140, 0.508869}, {0.934268, 0.418607}, {1.930008, -0.584650}, {-0.667467, 1.471271}, {0.925854, 0.010608}, {-0.540775, -0.332686}, {-1.356718, 0.347897}, {1.008829, 0.621137}, {1.266918, -0.344629}, {-1.128488, -0.418674}, {0.157524, 0.139078}, {-0.080731, -1.515912}, {0.138870, 1.536295}, {0.096079, -0.738967}, {0.055822, 0.790336}, {0.775557, -0.154829}, {-0.762535, -0.407425}, {-1.166020, 0.176498}, {-0.001453, 0.874596}, {0.086572, 0.749436}, {-0.497314, 1.108861}, {1.253067, 0.882093}, {0.043620, 0.847310}, {1.124285, 0.394422}, {-0.028010, -0.424847}, {0.502442, -0.944102}, {-0.624064, -0.633988}, {-1.314388, -0.197072}, {-0.878207, 1.312132}, {0.164886, -0.109184}, {-1.477262, -0.055125}, {-0.030013, -0.699816}, {-1.298661, 1.409137}};codec2-1.2.0/src/octave.c000066400000000000000000000106651445607075400151110ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: octave.c AUTHOR......: David Rowe DATE CREATED: April 28 2012 Functions to save C arrays in GNU Octave matrix format. The output text file can be directly read into Octave using "load filename". \*---------------------------------------------------------------------------*/ /* Copyright (C) 2012 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "octave.h" #include #include #ifdef ARM_MATH_CM4 #include "Trace.h" #endif #define OCTAVE_BUFSIZE 2048 void flush_buffer(FILE* f, char* buffer, size_t* buf_idx_ptr) { #ifdef ARM_MATH_CM4 trace_write(buffer, *buf_idx_ptr); #else fwrite(buffer, *buf_idx_ptr, 1, f); #endif *buf_idx_ptr = 0; } void handle_buffer(FILE* f, char* buffer, const size_t max_buf, size_t* buf_idx_ptr, size_t l) { *buf_idx_ptr += l; if (*buf_idx_ptr > max_buf - 64) { flush_buffer(f, buffer, buf_idx_ptr); } } signed int printf_buffer(FILE* f, char* buffer, const size_t max_buf, size_t* buf_idx_ptr, const char* pFormat, ...) { va_list ap; signed int rc; va_start(ap, pFormat); rc = vsnprintf(&buffer[*buf_idx_ptr], max_buf - *buf_idx_ptr, pFormat, ap); va_end(ap); if (rc > 0) { handle_buffer(f, buffer, max_buf, buf_idx_ptr, rc); } return rc; } void printf_header(FILE* f, char* buffer, const size_t max_buf, size_t* buf_idx_ptr, const char* name, const char* dtype, int rows, int cols, int isFloat) { #ifdef ARM_MATH_CM4 printf_buffer(f, buffer, OCTAVE_BUFSIZE, buf_idx_ptr, "# hex: %s\n", isFloat ? "true" : "false"); #endif printf_buffer(f, buffer, OCTAVE_BUFSIZE, buf_idx_ptr, "# name: %s\n", name); printf_buffer(f, buffer, OCTAVE_BUFSIZE, buf_idx_ptr, "# type: %s\n", dtype); printf_buffer(f, buffer, OCTAVE_BUFSIZE, buf_idx_ptr, "# rows: %d\n", rows); printf_buffer(f, buffer, OCTAVE_BUFSIZE, buf_idx_ptr, "# columns: %d\n", cols); } void octave_save_int(FILE* f, char name[], int data[], int rows, int cols) { int r, c; char buffer[OCTAVE_BUFSIZE]; size_t buf_idx = 0; printf_header(f, buffer, OCTAVE_BUFSIZE, &buf_idx, name, "matrix", rows, cols, 0); for (r = 0; r < rows; r++) { for (c = 0; c < cols; c++) printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, " %d", data[r * cols + c]); printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, "\n"); } printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, "\n\n"); flush_buffer(f, buffer, &buf_idx); } void octave_save_float(FILE* f, char name[], float data[], int rows, int cols, int col_len) { int r, c; char buffer[OCTAVE_BUFSIZE]; size_t buf_idx = 0; printf_header(f, buffer, OCTAVE_BUFSIZE, &buf_idx, name, "matrix", rows, cols, 1); for (r = 0; r < rows; r++) { for (c = 0; c < cols; c++) printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, " %f", data[r * col_len + c]); printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, "\n"); } printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, "\n\n"); flush_buffer(f, buffer, &buf_idx); } void octave_save_complex(FILE* f, char name[], COMP data[], int rows, int cols, int col_len) { int r, c; char buffer[OCTAVE_BUFSIZE]; size_t buf_idx = 0; printf_header(f, buffer, OCTAVE_BUFSIZE, &buf_idx, name, "complex matrix", rows, cols, 1); for (r = 0; r < rows; r++) { for (c = 0; c < cols; c++) { printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, " (%f,%f)", data[r * col_len + c].real, data[r * col_len + c].imag); } printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, "\n"); } printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, "\n\n"); flush_buffer(f, buffer, &buf_idx); } codec2-1.2.0/src/octave.h000066400000000000000000000026211445607075400151070ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: octave.h AUTHOR......: David Rowe DATE CREATED: April 28 2012 Functions to save C arrays in Octave matrix format. the output text file can be directly read into octave using "load filename". \*---------------------------------------------------------------------------*/ /* Copyright (C) 2012 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __OCTAVE__ #define __OCTAVE__ #include #include "comp.h" void octave_save_int(FILE *f, char name[], int data[], int rows, int cols); void octave_save_float(FILE *f, char name[], float data[], int rows, int cols, int col_len); void octave_save_complex(FILE *f, char name[], COMP data[], int rows, int cols, int col_len); #endif codec2-1.2.0/src/ofdm.c000066400000000000000000002436711445607075400145620ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: ofdm.c AUTHORS.....: David Rowe & Steve Sampson DATE CREATED: June 2017 A Library of functions that implement a PSK OFDM modem, C port of the Octave functions in ofdm_lib.m \*---------------------------------------------------------------------------*/ /* Copyright (C) 2017-2020 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include #include #include "codec2_ofdm.h" #include "comp.h" #include "debug_alloc.h" #include "filter.h" #include "machdep.h" #include "ofdm_internal.h" #include "wval.h" #ifdef __EMBEDDED__ #include "codec2_math.h" #endif /* __EMBEDDED__ */ /* Static Prototypes */ static float cnormf(complex float); static void allocate_tx_bpf(struct OFDM *); static void deallocate_tx_bpf(struct OFDM *); static float find_carrier_centre(struct OFDM *ofdm); static void allocate_rx_bpf(struct OFDM *); static void deallocate_rx_bpf(struct OFDM *); static void dft(struct OFDM *, complex float *, complex float *); static void idft(struct OFDM *, complex float *, complex float *); static complex float vector_sum(complex float *, int); static int est_timing(struct OFDM *, complex float *, int, int, float *, int *, int); static float est_freq_offset_pilot_corr(struct OFDM *, complex float *, int, int); static int ofdm_sync_search_core(struct OFDM *); static void ofdm_demod_core(struct OFDM *, int *); /* Defines */ #define max(a, b) (((a) > (b)) ? (a) : (b)) #define min(a, b) (((a) < (b)) ? (a) : (b)) /* * QPSK Quadrant bit-pair values - Gray Coded */ static const complex float qpsk[] = {1.0f + 0.0f * I, 0.0f + 1.0f * I, 0.0f - 1.0f * I, -1.0f + 0.0f * I}; static const complex float qam16[] = { 1.0f + 1.0f * I, 1.0f + 3.0f * I, 3.0f + 1.0f * I, 3.0f + 3.0f * I, 1.0f - 1.0f * I, 1.0f - 3.0f * I, 3.0f - 1.0f * I, 3.0f - 3.0f * I, -1.0f + 1.0f * I, -1.0f + 3.0f * I, -3.0f + 1.0f * I, -3.0f + 3.0f * I, -1.0f - 1.0f * I, -1.0f - 3.0f * I, -3.0f - 1.0f * I, -3.0f - 3.0f * I}; /* * These pilots are compatible with Octave version */ static const int8_t pilotvalues[] = { -1, -1, 1, 1, -1, -1, -1, 1, -1, 1, -1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, 1, -1, 1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, 1, -1, 1, -1, 1, -1, -1, 1, -1, 1, 1, 1, 1, -1, 1, -1, 1}; /* Local Functions ----------------------------------------------------------*/ static float cnormf(complex float val) { float realf = crealf(val); float imagf = cimagf(val); return realf * realf + imagf * imagf; } /* * Gray coded QPSK modulation function */ complex float qpsk_mod(int *bits) { return qpsk[(bits[1] << 1) | bits[0]]; } /* * Gray coded QPSK demodulation function * * 01 | 00 * ---+--- * 11 | 10 */ void qpsk_demod(complex float symbol, int *bits) { complex float rotate = symbol * cmplx(ROT45); bits[0] = crealf(rotate) <= 0.0f; bits[1] = cimagf(rotate) <= 0.0f; } complex float qam16_mod(int *bits) { return qam16[(bits[3] << 3) | (bits[2] << 2) | (bits[1] << 1) | bits[0]]; } void qam16_demod(complex float symbol, int *bits) { float dist[16]; int i; for (i = 0; i < 16; i++) { dist[i] = cnormf(symbol - qam16[i]); } int row = 0; float mdist = 10000.0f; for (i = 0; i < 16; i++) { if (dist[i] < mdist) { mdist = dist[i]; row = i; } } bits[0] = row & 1; bits[1] = (row >> 1) & 1; bits[2] = (row >> 2) & 1; bits[3] = (row >> 3) & 1; } /* * ------------ * ofdm_create * ------------ * * Returns OFDM data structure on success * Return NULL on fail * * If you want the defaults, call this with config structure * and the NC setting to 0. This will fill the structure with * default values of the original OFDM modem. */ struct OFDM *ofdm_create(const struct OFDM_CONFIG *config) { struct OFDM *ofdm; float tval; int i, j; ofdm = (struct OFDM *)CALLOC(1, sizeof(struct OFDM)); assert(ofdm != NULL); if (config == NULL) { /* Fill in default values */ strcpy(ofdm->mode, "700D"); ofdm->nc = 17; /* Number of carriers */ ofdm->np = 1; ofdm->ns = 8; /* Number of Symbols per modem frame */ ofdm->ts = 0.018f; ofdm->rs = (1.0f / ofdm->ts); /* Modulation Symbol Rate */ ofdm->tcp = .002f; /* Cyclic Prefix duration */ ofdm->tx_centre = 1500.0f; /* TX Carrier Frequency */ ofdm->rx_centre = 1500.0f; /* RX Carrier Frequency */ ofdm->fs = 8000.0f; /* Sample rate */ ofdm->ntxtbits = 4; ofdm->bps = 2; /* Bits per Symbol */ ofdm->nuwbits = 5 * ofdm->bps; /* default is 5 symbols of Unique Word bits */ ofdm->bad_uw_errors = 3; ofdm->ftwindowwidth = 32; ofdm->timing_mx_thresh = 0.30f; ofdm->state_machine = "voice1"; ofdm->edge_pilots = 1; ofdm->codename = "HRA_112_112"; ofdm->amp_est_mode = 0; ofdm->tx_bpf_en = true; ofdm->rx_bpf_en = false; ofdm->amp_scale = 245E3; ofdm->clip_gain1 = 2.0; ofdm->clip_gain2 = 0.9; ofdm->clip_en = false; ofdm->foff_limiter = false; ofdm->data_mode = ""; ofdm->fmin = -50.0; /* frequency minimum for ofdm acquisition range */ ofdm->fmax = 50.0; /* frequency maximum for ofdm acquisition range */ memset(ofdm->tx_uw, 0, ofdm->nuwbits); } else { /* Use the users values */ strcpy(ofdm->mode, config->mode); ofdm->nc = config->nc; /* Number of carriers */ ofdm->np = config->np; /* Number of modem Frames per Packet */ ofdm->ns = config->ns; /* Number of Symbol frames */ ofdm->bps = config->bps; /* Bits per Symbol */ ofdm->ts = config->ts; ofdm->tcp = config->tcp; /* Cyclic Prefix duration */ ofdm->tx_centre = config->tx_centre; /* TX Centre Audio Frequency */ ofdm->rx_centre = config->rx_centre; /* RX Centre Audio Frequency */ ofdm->fs = config->fs; /* Sample Frequency */ ofdm->rs = config->rs; /* Symbol Rate */ ofdm->ntxtbits = config->txtbits; ofdm->nuwbits = config->nuwbits; ofdm->bad_uw_errors = config->bad_uw_errors; ofdm->ftwindowwidth = config->ftwindowwidth; ofdm->timing_mx_thresh = config->timing_mx_thresh; ofdm->state_machine = config->state_machine; ofdm->edge_pilots = config->edge_pilots; ofdm->codename = config->codename; ofdm->amp_est_mode = config->amp_est_mode; ofdm->tx_bpf_en = config->tx_bpf_en; ofdm->rx_bpf_en = config->rx_bpf_en; ofdm->foff_limiter = config->foff_limiter; ofdm->amp_scale = config->amp_scale; ofdm->clip_gain1 = config->clip_gain1; ofdm->clip_gain2 = config->clip_gain2; ofdm->clip_en = config->clip_en; memcpy(ofdm->tx_uw, config->tx_uw, ofdm->nuwbits); ofdm->data_mode = config->data_mode; ofdm->fmin = config->fmin; /* frequency minimum for ofdm acquisition range */ ofdm->fmax = config->fmax; /* frequency maximum for ofdm acquisition range */ } ofdm->rs = (1.0f / ofdm->ts); /* Modulation Symbol Rate */ ofdm->m = (int)(ofdm->fs / ofdm->rs); /* 700D: 144 */ ofdm->ncp = (int)(ofdm->tcp * ofdm->fs); /* 700D: 16 */ ofdm->inv_m = (1.0f / (float)ofdm->m); /* basic sanity checks */ assert((int)floorf(ofdm->fs / ofdm->rs) == ofdm->m); assert(!strcmp(ofdm->state_machine, "voice1") || !strcmp(ofdm->state_machine, "data") || !strcmp(ofdm->state_machine, "voice2")); assert(ofdm->nuwbits <= MAX_UW_BITS); /* Copy constants into states */ strcpy(ofdm->config.mode, ofdm->mode); ofdm->config.tx_centre = ofdm->tx_centre; ofdm->config.rx_centre = ofdm->rx_centre; ofdm->config.fs = ofdm->fs; ofdm->config.rs = ofdm->rs; ofdm->config.ts = ofdm->ts; ofdm->config.tcp = ofdm->tcp; ofdm->config.timing_mx_thresh = ofdm->timing_mx_thresh; ofdm->config.nc = ofdm->nc; ofdm->config.ns = ofdm->ns; ofdm->config.np = ofdm->np; ofdm->config.bps = ofdm->bps; ofdm->config.nuwbits = ofdm->nuwbits; ofdm->config.txtbits = ofdm->ntxtbits; ofdm->config.bad_uw_errors = ofdm->bad_uw_errors; ofdm->config.ftwindowwidth = ofdm->ftwindowwidth; ofdm->config.state_machine = ofdm->state_machine; ofdm->config.edge_pilots = ofdm->edge_pilots; ofdm->config.codename = ofdm->codename; ofdm->config.amp_est_mode = ofdm->amp_est_mode; ofdm->config.tx_bpf_en = ofdm->tx_bpf_en; ofdm->config.rx_bpf_en = ofdm->rx_bpf_en; ofdm->config.foff_limiter = ofdm->foff_limiter; ofdm->config.amp_scale = ofdm->amp_scale; ofdm->config.clip_gain1 = ofdm->clip_gain1; ofdm->config.clip_gain2 = ofdm->clip_gain2; ofdm->config.clip_en = ofdm->clip_en; memcpy(ofdm->config.tx_uw, ofdm->tx_uw, ofdm->nuwbits); ofdm->config.data_mode = ofdm->data_mode; ofdm->config.fmin = ofdm->fmin; ofdm->config.fmax = ofdm->fmax; /* Calculate sizes from config param */ ofdm->bitsperframe = (ofdm->ns - 1) * (ofdm->nc * ofdm->bps); // 238 for nc = 17 ofdm->bitsperpacket = ofdm->np * ofdm->bitsperframe; ofdm->tpacket = (float)(ofdm->np * ofdm->ns) * (ofdm->tcp + ofdm->ts); /* time for one packet */ ofdm->rowsperframe = ofdm->bitsperframe / (ofdm->nc * ofdm->bps); ofdm->samplespersymbol = (ofdm->m + ofdm->ncp); ofdm->samplesperframe = ofdm->ns * ofdm->samplespersymbol; if (*ofdm->data_mode != 0) // in burst data modes we skip ahead one frame to jump over preamble ofdm->max_samplesperframe = 2 * ofdm->samplesperframe; else ofdm->max_samplesperframe = ofdm->samplesperframe + (ofdm->samplespersymbol / 4); /* extra storage at start of rxbuf to allow us to step back in time */ if (strlen(ofdm->data_mode)) ofdm->nrxbufhistory = (ofdm->np + 2) * ofdm->samplesperframe; else ofdm->nrxbufhistory = 0; ofdm->rxbufst = ofdm->nrxbufhistory; ofdm->nrxbufmin = 3 * ofdm->samplesperframe + 3 * ofdm->samplespersymbol; ofdm->nrxbuf = ofdm->nrxbufhistory + ofdm->nrxbufmin; ofdm->pilot_samples = (complex float *)MALLOC(sizeof(complex float) * ofdm->samplespersymbol); assert(ofdm->pilot_samples != NULL); ofdm->rxbuf = (complex float *)MALLOC(sizeof(complex float) * ofdm->nrxbuf); assert(ofdm->rxbuf != NULL); for (int i = 0; i < ofdm->nrxbuf; i++) ofdm->rxbuf[i] = 0; ofdm->pilots = (complex float *)MALLOC(sizeof(complex float) * (ofdm->nc + 2)); assert(ofdm->pilots != NULL); /* * rx_sym is a 2D array of variable size * * allocate rx_sym row storage. It is a pointer to a pointer */ ofdm->rx_sym = MALLOC(sizeof(complex float) * (ofdm->ns + 3)); assert(ofdm->rx_sym != NULL); /* allocate rx_sym column storage */ for (i = 0; i < (ofdm->ns + 3); i++) { ofdm->rx_sym[i] = (complex float *)MALLOC(sizeof(complex float) * (ofdm->nc + 2)); assert(ofdm->rx_sym[i] != NULL); } /* The rest of these are 1D arrays of variable size */ ofdm->rx_np = MALLOC(sizeof(complex float) * (ofdm->rowsperframe * ofdm->nc)); assert(ofdm->rx_np != NULL); ofdm->rx_amp = MALLOC(sizeof(float) * (ofdm->rowsperframe * ofdm->nc)); assert(ofdm->rx_amp != NULL); ofdm->aphase_est_pilot_log = MALLOC(sizeof(float) * (ofdm->rowsperframe * ofdm->nc)); assert(ofdm->aphase_est_pilot_log != NULL); /* store complex BPSK pilot symbols */ assert(sizeof(pilotvalues) >= (ofdm->nc + 2) * sizeof(int8_t)); /* There are only 64 pilot values available */ for (i = 0; i < (ofdm->nc + 2); i++) { ofdm->pilots[i] = ((float)pilotvalues[i]) + 0.0f * I; } if (ofdm->edge_pilots == 0) { ofdm->pilots[0] = ofdm->pilots[ofdm->nc + 1] = 0.0f; } /* carrier tables for up and down conversion */ ofdm->doc = (TAU / (ofdm->fs / ofdm->rs)); tval = ((float)ofdm->nc / 2.0f); ofdm->tx_nlower = roundf((ofdm->tx_centre / ofdm->rs) - tval) - 1.0f; ofdm->rx_nlower = roundf((ofdm->rx_centre / ofdm->rs) - tval) - 1.0f; /* Tx and Rx band pass filters */ ofdm->tx_bpf = NULL; if (ofdm->tx_bpf_en) allocate_tx_bpf(ofdm); ofdm->rx_bpf = NULL; if (ofdm->rx_bpf_en) allocate_rx_bpf(ofdm); for (i = 0; i < ofdm->nrxbuf; i++) { ofdm->rxbuf[i] = 0.0f; } for (i = 0; i < (ofdm->ns + 3); i++) { for (j = 0; j < (ofdm->nc + 2); j++) { ofdm->rx_sym[i][j] = 0.0f; } } for (i = 0; i < ofdm->rowsperframe * ofdm->nc; i++) { ofdm->rx_np[i] = 0.0f; } for (i = 0; i < ofdm->rowsperframe; i++) { for (j = 0; j < ofdm->nc; j++) { ofdm->aphase_est_pilot_log[ofdm->nc * i + j] = 0.0f; ofdm->rx_amp[ofdm->nc * i + j] = 0.0f; } } /* default settings of options and states */ ofdm->verbose = 0; ofdm->timing_en = true; ofdm->foff_est_en = true; ofdm->phase_est_en = true; ofdm->phase_est_bandwidth = high_bw; ofdm->phase_est_bandwidth_mode = AUTO_PHASE_EST; ofdm->packetsperburst = 0; // default: never lose syn in raw data mode ofdm->coarse_foff_est_hz = 0.0f; ofdm->foff_est_gain = 0.1f; ofdm->foff_est_hz = 0.0f; ofdm->sample_point = 0; ofdm->timing_est = 0; ofdm->timing_valid = 0; ofdm->timing_mx = 0.0f; ofdm->nin = ofdm->samplesperframe; ofdm->mean_amp = 0.0f; ofdm->foff_metric = 0.0f; ofdm->fmin = -50.0f; ofdm->fmax = 50.0f; /* * Unique Word symbol placement. Note we need to group the UW * bits so they fit into symbols. The LDPC decoder works on * symbols so we can't break up any symbols into UW/payload bits. */ ofdm->uw_ind = MALLOC(sizeof(int) * ofdm->nuwbits); assert(ofdm->uw_ind != NULL); ofdm->uw_ind_sym = MALLOC(sizeof(int) * (ofdm->nuwbits / ofdm->bps)); assert(ofdm->uw_ind_sym != NULL); /* * The Unique Word is placed in different indexes based on * the number of carriers requested. */ int nuwsyms = ofdm->nuwbits / ofdm->bps; int Ndatasymsperframe = (ofdm->ns - 1) * ofdm->nc; int uw_step = ofdm->nc + 1; // default step size int last_sym = floorf(nuwsyms * uw_step / ofdm->bps); if (last_sym >= ofdm->np * Ndatasymsperframe) uw_step = ofdm->nc - 1; // try a different step last_sym = floorf(nuwsyms * uw_step / ofdm->bps); assert(last_sym < ofdm->np * Ndatasymsperframe); // bail if we still can't fit them all for (i = 0, j = 0; i < nuwsyms; i++, j += ofdm->bps) { int val = floorf((i + 1) * uw_step / ofdm->bps); ofdm->uw_ind_sym[i] = val; // symbol index for (int b = 0; b < ofdm->bps; b++) { ofdm->uw_ind[j + b] = (val * ofdm->bps) + b; } } // work out how many frames UW is spread over int symsperframe = ofdm->bitsperframe / ofdm->bps; ofdm->nuwframes = (int)ceilf((float)(ofdm->uw_ind_sym[nuwsyms - 1] + 1) / symsperframe); ofdm->tx_uw_syms = MALLOC(sizeof(complex float) * (ofdm->nuwbits / ofdm->bps)); assert(ofdm->tx_uw_syms != NULL); assert(ofdm->bps == 2); // TODO generalise for (int s = 0; s < (ofdm->nuwbits / ofdm->bps); s++) { int dibit[2]; dibit[1] = ofdm->tx_uw[2 * s]; dibit[0] = ofdm->tx_uw[2 * s + 1]; ofdm->tx_uw_syms[s] = qpsk_mod(dibit); } /* sync state machine */ ofdm->sync_state = search; ofdm->last_sync_state = search; ofdm->uw_errors = 0; ofdm->sync_counter = 0; ofdm->frame_count = 0; ofdm->sync_start = false; ofdm->sync_end = false; ofdm->sync_mode = autosync; ofdm->modem_frame = 0; /* create the OFDM pilot time-domain waveform */ complex float *temp = MALLOC(sizeof(complex float) * ofdm->m); assert(temp != NULL); idft(ofdm, temp, ofdm->pilots); /* * pilot_samples is 160 samples, but timing and freq offset est * were found by experiment to work better without a cyclic * prefix, so we uses zeroes instead. */ /* zero out Cyclic Prefix (CP) time-domain values */ for (i = 0; i < ofdm->ncp; i++) { ofdm->pilot_samples[i] = 0.0f; } /* Now copy the whole thing after the above */ for (i = ofdm->ncp, j = 0; j < ofdm->m; i++, j++) { ofdm->pilot_samples[i] = temp[j]; } FREE(temp); /* calculate constant used to normalise timing correlation maximum */ float acc = 0.0f; for (i = 0; i < ofdm->samplespersymbol; i++) { acc += cnormf(ofdm->pilot_samples[i]); } ofdm->timing_norm = ofdm->samplespersymbol * acc; ofdm->clock_offset_counter = 0; ofdm->dpsk_en = false; if (strlen(ofdm->data_mode)) { ofdm->tx_preamble = (COMP *)malloc(sizeof(COMP) * ofdm->samplesperframe); assert(ofdm->tx_preamble != NULL); ofdm_generate_preamble(ofdm, ofdm->tx_preamble, 2); ofdm->tx_postamble = (COMP *)malloc(sizeof(COMP) * ofdm->samplesperframe); assert(ofdm->tx_postamble != NULL); ofdm_generate_preamble(ofdm, ofdm->tx_postamble, 3); } ofdm->postambledetectoren = !strcmp(ofdm->data_mode, "burst"); return ofdm; /* Success */ } static void allocate_tx_bpf(struct OFDM *ofdm) { ofdm->tx_bpf = MALLOC(sizeof(struct quisk_cfFilter)); assert(ofdm->tx_bpf != NULL); /* Transmit bandpass filter; complex coefficients, center frequency */ if (!strcmp(ofdm->mode, "700D")) { quisk_filt_cfInit(ofdm->tx_bpf, filtP650S900, sizeof(filtP650S900) / sizeof(float)); quisk_cfTune(ofdm->tx_bpf, ofdm->tx_centre / ofdm->fs); } else if (!strcmp(ofdm->mode, "700E") || !strcmp(ofdm->mode, "2020") || !strcmp(ofdm->mode, "datac1")) { quisk_filt_cfInit(ofdm->tx_bpf, filtP900S1100, sizeof(filtP900S1100) / sizeof(float)); quisk_cfTune(ofdm->tx_bpf, ofdm->tx_centre / ofdm->fs); } else if (!strcmp(ofdm->mode, "2020B")) { quisk_filt_cfInit(ofdm->tx_bpf, filtP1100S1300, sizeof(filtP1100S1300) / sizeof(float)); quisk_cfTune(ofdm->tx_bpf, ofdm->tx_centre / ofdm->fs); } else if (!strcmp(ofdm->mode, "datac0") || !strcmp(ofdm->mode, "datac3")) { quisk_filt_cfInit(ofdm->tx_bpf, filtP400S600, sizeof(filtP400S600) / sizeof(float)); quisk_cfTune(ofdm->tx_bpf, ofdm->tx_centre / ofdm->fs); } else if (!strcmp(ofdm->mode, "datac4") || !strcmp(ofdm->mode, "datac13")) { quisk_filt_cfInit(ofdm->tx_bpf, filtP200S400, sizeof(filtP200S400) / sizeof(float)); // centre the filter on the mean carrier freq, allows a narrower filter to // be used float tx_centre = find_carrier_centre(ofdm); quisk_cfTune(ofdm->tx_bpf, tx_centre / ofdm->fs); } else assert(0); } static void deallocate_tx_bpf(struct OFDM *ofdm) { assert(ofdm->tx_bpf != NULL); quisk_filt_destroy(ofdm->tx_bpf); FREE(ofdm->tx_bpf); ofdm->tx_bpf = NULL; } static float find_carrier_centre(struct OFDM *ofdm) { float rx_centre = 0.0; for (int c = 0; c < ofdm->nc + 2; c++) rx_centre += (ofdm->rx_nlower + c) * ofdm->doc; return (ofdm->fs / TAU) * rx_centre / (ofdm->nc + 2); } static void allocate_rx_bpf(struct OFDM *ofdm) { ofdm->rx_bpf = MALLOC(sizeof(struct quisk_cfFilter)); assert(ofdm->rx_bpf != NULL); /* Receive bandpass filter; complex coefficients, center frequency */ if (!strcmp(ofdm->mode, "datac4") || !strcmp(ofdm->mode, "datac13")) { quisk_filt_cfInit(ofdm->rx_bpf, filtP200S400, sizeof(filtP200S400) / sizeof(float)); // centre the filter on the mean carrier freq, allows a narrower filter to // be used float rx_centre = find_carrier_centre(ofdm); // fprintf(stderr, " rx_centre: %f\n", rx_centre); quisk_cfTune(ofdm->rx_bpf, rx_centre / ofdm->fs); } else assert(0); } static void deallocate_rx_bpf(struct OFDM *ofdm) { assert(ofdm->rx_bpf != NULL); quisk_filt_destroy(ofdm->rx_bpf); FREE(ofdm->rx_bpf); ofdm->rx_bpf = NULL; } void ofdm_destroy(struct OFDM *ofdm) { int i; if (strlen(ofdm->data_mode)) { free(ofdm->tx_preamble); free(ofdm->tx_postamble); } if (ofdm->tx_bpf) { deallocate_tx_bpf(ofdm); } if (ofdm->rx_bpf) { deallocate_rx_bpf(ofdm); } FREE(ofdm->pilot_samples); FREE(ofdm->rxbuf); FREE(ofdm->pilots); for (i = 0; i < (ofdm->ns + 3); i++) { /* 2D array */ FREE(ofdm->rx_sym[i]); } FREE(ofdm->rx_sym); FREE(ofdm->rx_np); FREE(ofdm->rx_amp); FREE(ofdm->aphase_est_pilot_log); FREE(ofdm->tx_uw_syms); FREE(ofdm->uw_ind); FREE(ofdm->uw_ind_sym); FREE(ofdm); } /* * Convert frequency domain into time domain * * This algorithm was optimized for speed */ static void idft(struct OFDM *ofdm, complex float *result, complex float *vector) { int row, col; result[0] = 0.0f; for (col = 0; col < (ofdm->nc + 2); col++) { result[0] += vector[col]; // cexp(j0) == 1 } result[0] *= ofdm->inv_m; for (row = 1; row < ofdm->m; row++) { complex float c = cmplx(ofdm->tx_nlower * ofdm->doc * row); complex float delta = cmplx(ofdm->doc * row); result[row] = 0.0f; for (col = 0; col < (ofdm->nc + 2); col++) { result[row] += (vector[col] * c); c *= delta; } result[row] *= ofdm->inv_m; } } /* * Convert time domain into frequency domain * * This algorithm was optimized for speed */ static void dft(struct OFDM *ofdm, complex float *result, complex float *vector) { int row, col; for (col = 0; col < (ofdm->nc + 2); col++) { result[col] = vector[0]; // conj(cexp(j0)) == 1 } for (col = 0; col < (ofdm->nc + 2); col++) { float tval = (ofdm->rx_nlower + col) * ofdm->doc; complex float c = cmplxconj(tval); complex float delta = c; for (row = 1; row < ofdm->m; row++) { result[col] += (vector[row] * c); c *= delta; } } } static complex float vector_sum(complex float *a, int num_elements) { complex float sum = 0.0f; int i; for (i = 0; i < num_elements; i++) { sum += a[i]; } return sum; } /* Determine if we can use vector ops below. Only for non-embedded platforms as double can be significantly slower on those. */ #ifndef __EMBEDDED__ #if __GNUC__ > 4 || \ (__GNUC__ == 4 && \ (__GNUC_MINOR__ > 6 || (__GNUC_MINOR__ == 6 && __GNUC_PATCHLEVEL__ > 0))) #define USE_VECTOR_OPS 1 #elif __clang_major__ > 3 || \ (__clang_minor__ == 3 && \ (__clang_minor__ > 7 || \ (__clang_minor__ == 7 && __clang_patchlevel__ > 0))) #define USE_VECTOR_OPS 1 #endif #else #include "codec2_math.h" #endif /* __EMBEDDED__ */ #if USE_VECTOR_OPS typedef float float4 __attribute__((vector_size(16))); #endif /* USE_VECTOR_OPS */ static complex float ofdm_complex_dot_product(complex float *left, complex float *right, int numSamples) { complex float result = 0; #if USE_VECTOR_OPS float *leftPtr = (float *)left; float *rightPtr = (float *)right; float4 accumPos = {0, 0, 0, 0}; float4 accumNeg = {0, 0, 0, 0}; float4 accumImag = {0, 0, 0, 0}; float resultReal = 0; float resultImag = 0; int numBlocks = numSamples >> 1; for (int i = 0; i < numBlocks; i++) { /* Lay out vectors as follows: vec1 = rx[0].a, rx[0].b, rx[1].a, rx[1].b, ... vec2 = mvec[0].c, mvec[0].d, mvec[1].c, mvec1[1].d, ... */ float4 vec1 = {leftPtr[0], leftPtr[1], leftPtr[2], leftPtr[3]}; float4 vec2 = {rightPtr[0], rightPtr[1], rightPtr[2], rightPtr[3]}; accumPos += vec1 * vec2; accumNeg -= vec1 * vec2; /* Lay out vec3 as { rx[0].b, rx[0].a, rx[1].b, rx[0].b, ... }. Multiply vec3 by vec2 to get us bc, ad, bc, ad and add to second accumulator. */ float4 vec3 = {leftPtr[1], leftPtr[0], leftPtr[3], leftPtr[2]}; accumImag += vec3 * vec2; /* Shift pointers forward by 4 (2 complex floats). */ leftPtr += 4; rightPtr += 4; } /* dot product: (a + bi)(c + di) = (ac - bd) + i(bc + ad) */ resultReal = accumPos[0] + accumNeg[1] + accumPos[2] + accumNeg[3]; resultImag = accumImag[0] + accumImag[1] + accumImag[2] + accumImag[3]; result = resultReal + I * resultImag; /* Add remaining values to corr that couldn't be vectorized above. */ for (int i = numBlocks << 1; i < numSamples; i++) { result += left[i] * right[i]; } #elif __EMBEDDED__ float resultReal = 0, resultImag = 0; codec2_complex_dot_product_f32((COMP *)left, (COMP *)right, numSamples, &resultReal, &resultImag); result = resultReal + I * resultImag; #else for (int i = 0; i < numSamples; i++) { result += left[i] * right[i]; } #endif /* USE_VECTOR_OPS */ return result; } /* * Correlates the OFDM pilot symbol samples with a window of received * samples to determine the most likely timing offset. Combines two * frames pilots so we need at least Nsamperframe+M+Ncp samples in rx. * * Can be used for acquisition (coarse timing), and fine timing. * * Breaks when freq offset approaches +/- symbol rate (e.g * +/- 25 Hz for 700D). */ static int est_timing(struct OFDM *ofdm, complex float *rx, int length, int fcoarse, float *timing_mx, int *timing_valid, int step) { complex float corr_st, corr_en; int Ncorr = length - (ofdm->samplesperframe + ofdm->samplespersymbol); float corr[Ncorr]; int i, j; float acc = 0.0f; for (i = 0; i < length; i++) { acc += cnormf(rx[i]); } float av_level = 1.0f / (2.0f * sqrtf(ofdm->timing_norm * acc / length) + 1E-12f); /* precompute the freq shift multiplied by pilot samples outside of main loop */ PROFILE_VAR(wvecpilot); PROFILE_SAMPLE(wvecpilot); complex float wvec_pilot[ofdm->samplespersymbol]; switch (fcoarse) { case -40: for (j = 0; j < ofdm->samplespersymbol; j++) wvec_pilot[j] = conjf(ofdm_wval[j] * ofdm->pilot_samples[j]); break; case 0: for (j = 0; j < ofdm->samplespersymbol; j++) wvec_pilot[j] = conjf(ofdm->pilot_samples[j]); break; case 40: for (j = 0; j < ofdm->samplespersymbol; j++) wvec_pilot[j] = ofdm_wval[j] * conjf(ofdm->pilot_samples[j]); break; default: assert(0); } /* use of __REAL__ provides a speed in increase of 10ms/frame during acquisition, however complex is fast enough for real time operation */ #if defined(__EMBEDDED__) && defined(__REAL__) float rx_real[length]; float wvec_pilot_real[ofdm->samplespersymbol]; float wvec_pilot_imag[ofdm->samplespersymbol]; for (i = 0; i < length; i++) { rx_real[i] = crealf(rx[i]); } for (i = 0; i < ofdm->samplespersymbol; i++) { wvec_pilot_real[i] = crealf(wvec_pilot[i]); wvec_pilot_imag[i] = cimagf(wvec_pilot[i]); } #endif PROFILE_SAMPLE_AND_LOG2(wvecpilot, " wvecpilot"); PROFILE_VAR(corr_start); PROFILE_SAMPLE(corr_start); for (i = 0; i < Ncorr; i += step) { corr_st = 0.0f; corr_en = 0.0f; #ifdef __EMBEDDED__ #ifdef __REAL__ float re, im; codec2_dot_product_f32(&rx_real[i], wvec_pilot_real, ofdm->samplespersymbol, &re); codec2_dot_product_f32(&rx_real[i], wvec_pilot_imag, ofdm->samplespersymbol, &im); corr_st = re + im * I; codec2_dot_product_f32(&rx_real[i + ofdm->samplesperframe], wvec_pilot_real, ofdm->samplespersymbol, &re); codec2_dot_product_f32(&rx_real[i + ofdm->samplesperframe], wvec_pilot_imag, ofdm->samplespersymbol, &im); corr_en = re + im * I; #else float re, im; codec2_complex_dot_product_f32((COMP *)&rx[i], (COMP *)wvec_pilot, ofdm->samplespersymbol, &re, &im); corr_st = re + im * I; codec2_complex_dot_product_f32((COMP *)&rx[i + ofdm->samplesperframe], (COMP *)wvec_pilot, ofdm->samplespersymbol, &re, &im); corr_en = re + im * I; #endif #else corr_st = ofdm_complex_dot_product(&rx[i], wvec_pilot, ofdm->samplespersymbol); corr_en = ofdm_complex_dot_product(&rx[i + ofdm->samplesperframe], wvec_pilot, ofdm->samplespersymbol); #endif // __EMBEDDED__ corr[i] = (cabsf(corr_st) + cabsf(corr_en)) * av_level; } PROFILE_SAMPLE_AND_LOG2(corr_start, " corr"); /* find the max magnitude and its index */ int timing_est = 0; *timing_mx = 0.0f; for (i = 0; i < Ncorr; i += step) { if (corr[i] > *timing_mx) { *timing_mx = corr[i]; timing_est = i; } } // only declare timing valid if there are enough samples in rxbuf to // demodulate a frame *timing_valid = (cabsf(rx[timing_est]) > 0.0) && (*timing_mx > ofdm->timing_mx_thresh); if (ofdm->verbose > 2) { fprintf(stderr, " av_level: %f max: %f timing_est: %d timing_valid: %d\n", (double)av_level, (double)*timing_mx, timing_est, *timing_valid); } return timing_est; } /* * Determines frequency offset at current timing estimate, used for * coarse freq offset estimation during acquisition. Works up to +/- * the symbol rate, e.g. +/- 25Hz for the FreeDV 700D configuration. */ static float est_freq_offset_pilot_corr(struct OFDM *ofdm, complex float *rx, int timing_est, int fcoarse) { int st = -20; int en = 20; float foff_est = 0.0f; float Cabs_max = 0.0f; /* precompute the freq shift multiplied by pilot samples outside of main loop */ complex float wvec_pilot[ofdm->samplespersymbol]; int j; switch (fcoarse) { case -40: for (j = 0; j < ofdm->samplespersymbol; j++) wvec_pilot[j] = conjf(ofdm_wval[j] * ofdm->pilot_samples[j]); break; case 0: for (j = 0; j < ofdm->samplespersymbol; j++) wvec_pilot[j] = conjf(ofdm->pilot_samples[j]); break; case 40: for (j = 0; j < ofdm->samplespersymbol; j++) wvec_pilot[j] = ofdm_wval[j] * conjf(ofdm->pilot_samples[j]); break; default: assert(0); } // sample sum of DFT magnitude of correlated signals at each freq offset and // look for peak for (int f = st; f < en; f++) { complex float corr_st = 0.0f; complex float corr_en = 0.0f; float tmp = TAU * f / ofdm->fs; complex float delta = cmplxconj(tmp); complex float w = cmplxconj(0.0f); int i; for (i = 0; i < ofdm->samplespersymbol; i++) { // "mix" down (correlate) the pilot sequences from frame with 0 Hz offset // pilot samples complex float csam = wvec_pilot[i] * w; int est = timing_est + i; corr_st += rx[est] * csam; corr_en += rx[est + ofdm->samplesperframe] * csam; w = w * delta; } float Cabs = cabsf(corr_st) + cabsf(corr_en); if (Cabs > Cabs_max) { Cabs_max = Cabs; foff_est = f; } } ofdm->foff_metric = 0.0f; // not used in this version of freq est algorithm if (ofdm->verbose > 2) { fprintf(stderr, "cabs_max: %f foff_est: %f\n", (double)Cabs_max, (double)foff_est); } return foff_est; } /* * ---------------------------------------------- * ofdm_txframe - modulates one frame of symbols * ---------------------------------------------- */ void ofdm_txframe(struct OFDM *ofdm, complex float *tx, complex float *tx_sym_lin) { complex float aframe[ofdm->np * ofdm->ns][ofdm->nc + 2]; complex float asymbol[ofdm->m]; complex float asymbol_cp[ofdm->samplespersymbol]; int i, j, k, m; /* initialize aframe to complex zero */ for (i = 0; i < (ofdm->np * ofdm->ns); i++) { for (j = 0; j < (ofdm->nc + 2); j++) { aframe[i][j] = 0.0f; } } /* * Place symbols in multi-carrier frame with pilots * This will place boundary values of complex zero around data */ int s = 0; for (int r = 0; r < ofdm->np * ofdm->ns; r++) { if ((r % ofdm->ns) == 0) { /* copy in a row of complex pilots to first row of each frame */ for (i = 0; i < (ofdm->nc + 2); i++) { aframe[r][i] = ofdm->pilots[i]; } } else { /* copy in the Nc complex data symbols with [0 Nc 0] or (Nc + 2) total */ for (j = 1; j < (ofdm->nc + 1); j++) { aframe[r][j] = tx_sym_lin[s++]; if (ofdm->dpsk_en == true) { aframe[r][j] *= aframe[r - 1][j]; } } } } /* OFDM up-convert symbol by symbol so we can add CP */ for (i = 0, m = 0; i < (ofdm->np * ofdm->ns); i++, m += ofdm->samplespersymbol) { idft(ofdm, asymbol, aframe[i]); /* Copy the last Ncp samples to the front */ for (j = (ofdm->m - ofdm->ncp), k = 0; j < ofdm->m; j++, k++) { asymbol_cp[k] = asymbol[j]; } /* Now copy the all samples for this row after it */ for (j = ofdm->ncp, k = 0; k < ofdm->m; j++, k++) { asymbol_cp[j] = asymbol[k]; } /* Now move row to the tx output */ for (j = 0; j < ofdm->samplespersymbol; j++) { tx[m + j] = asymbol_cp[j]; } } size_t samplesperpacket = ofdm->np * ofdm->samplesperframe; ofdm_hilbert_clipper(ofdm, tx, samplesperpacket); } /* Scale Tx signal and optionally apply two stage Hilbert clipper to improve * PAPR */ void ofdm_hilbert_clipper(struct OFDM *ofdm, complex float *tx, size_t n) { /* vanilla Tx output waveform should be about OFDM_PEAK */ for (int i = 0; i < n; i++) tx[i] *= ofdm->amp_scale; if (ofdm->clip_en) { // this gain sets the drive into the Hilbert Clipper and sets PAPR for (int i = 0; i < n; i++) tx[i] *= ofdm->clip_gain1; ofdm_clip(tx, OFDM_PEAK, n); } /* BPF to remove out of band energy clipper introduces */ if (ofdm->tx_bpf_en) { assert(ofdm->tx_bpf != NULL); complex float tx_filt[n]; quisk_ccfFilter(tx, tx_filt, n, ofdm->tx_bpf); memmove(tx, tx_filt, n * sizeof(complex float)); } /* BPF messes up peak levels, this gain gets back to approx OFDM_PEAK */ if (ofdm->tx_bpf_en && ofdm->clip_en) for (int i = 0; i < n; i++) tx[i] *= ofdm->clip_gain2; /* a very small percentage of samples may still exceed OFDM_PEAK, in clipped or unclipped mode. Lets remove them so we present consistent levels to the transmitter */ ofdm_clip(tx, OFDM_PEAK, n); } struct OFDM_CONFIG *ofdm_get_config_param(struct OFDM *ofdm) { return &ofdm->config; } int ofdm_get_nin(struct OFDM *ofdm) { return ofdm->nin; } int ofdm_get_samples_per_frame(struct OFDM *ofdm) { return ofdm->samplesperframe; } int ofdm_get_samples_per_packet(struct OFDM *ofdm) { return ofdm->samplesperframe * ofdm->np; } int ofdm_get_max_samples_per_frame(struct OFDM *ofdm) { return ofdm->max_samplesperframe; } int ofdm_get_bits_per_frame(struct OFDM *ofdm) { return ofdm->bitsperframe; } int ofdm_get_bits_per_packet(struct OFDM *ofdm) { return ofdm->bitsperpacket; } void ofdm_set_verbose(struct OFDM *ofdm, int level) { ofdm->verbose = level; } void ofdm_set_timing_enable(struct OFDM *ofdm, bool val) { ofdm->timing_en = val; if (ofdm->timing_en == false) { /* manually set ideal timing instant */ ofdm->sample_point = (ofdm->ncp - 1); } } int ofdm_get_phase_est_bandwidth_mode(struct OFDM *ofdm) { return ofdm->phase_est_bandwidth_mode; /* int version of enum */ } void ofdm_set_phase_est_bandwidth_mode(struct OFDM *ofdm, int val) { assert((val == AUTO_PHASE_EST) || (val == LOCKED_PHASE_EST)); ofdm->phase_est_bandwidth_mode = val; } void ofdm_set_foff_est_enable(struct OFDM *ofdm, bool val) { ofdm->foff_est_en = val; } void ofdm_set_phase_est_enable(struct OFDM *ofdm, bool val) { ofdm->phase_est_en = val; } void ofdm_set_off_est_hz(struct OFDM *ofdm, float val) { ofdm->foff_est_hz = val; } void ofdm_set_tx_bpf(struct OFDM *ofdm, bool val) { if (val == true) { if (ofdm->tx_bpf == NULL) allocate_tx_bpf(ofdm); ofdm->tx_bpf_en = true; } else { if (ofdm->tx_bpf != NULL) deallocate_tx_bpf(ofdm); ofdm->tx_bpf_en = false; } } void ofdm_set_dpsk(struct OFDM *ofdm, bool val) { ofdm->dpsk_en = val; } // select burst mode, and set packets per burst void ofdm_set_packets_per_burst(struct OFDM *ofdm, int packetsperburst) { ofdm->data_mode = "burst"; ofdm->packetsperburst = packetsperburst; ofdm->postambledetectoren = true; } /* * -------------------------------------- * ofdm_mod - modulates one frame of bits * -------------------------------------- */ void ofdm_mod(struct OFDM *ofdm, COMP *result, const int *tx_bits) { int length = ofdm->bitsperpacket / ofdm->bps; complex float *tx = (complex float *)result; // complex has same memory layout complex float tx_sym_lin[length]; int dibit[2]; int s, i; if (ofdm->bps == 1) { /* Here we will have Nbitsperpacket / 1 */ for (s = 0; s < length; s++) { tx_sym_lin[s] = (float)(2 * tx_bits[s] - 1); } } else if (ofdm->bps == 2) { /* Here we will have Nbitsperpacket / 2 */ for (s = 0, i = 0; i < length; s += 2, i++) { dibit[0] = tx_bits[s + 1] & 0x1; dibit[1] = tx_bits[s] & 0x1; tx_sym_lin[i] = qpsk_mod(dibit); } } /* else if (ofdm->bps == 3) { } TODO */ ofdm_txframe(ofdm, tx, tx_sym_lin); } /* * ---------------------------------------------------------------------------------- * ofdm_sync_search - attempts to find coarse sync parameters for modem initial * sync * ---------------------------------------------------------------------------------- */ /* * This is a wrapper to maintain the older functionality * with an array of COMPs as input */ int ofdm_sync_search(struct OFDM *ofdm, COMP *rxbuf_in) { /* * insert latest input samples into rxbuf * so it is primed for when we have to call ofdm_demod() */ /* note can't use memcpy when src and dest overlap */ memmove(&ofdm->rxbuf[0], &ofdm->rxbuf[ofdm->nin], (ofdm->nrxbuf - ofdm->nin) * sizeof(complex float)); memmove(&ofdm->rxbuf[(ofdm->nrxbuf - ofdm->nin)], rxbuf_in, ofdm->nin * sizeof(complex float)); return (ofdm_sync_search_core(ofdm)); } /* * This is a wrapper to reduce memory allocated. * This works with ofdm_demod and freedv_api. Gain is not used here. */ int ofdm_sync_search_shorts(struct OFDM *ofdm, short *rxbuf_in, float gain) { int i, j; /* shift the buffer left based on nin */ memmove(&ofdm->rxbuf[0], &ofdm->rxbuf[ofdm->nin], (ofdm->nrxbuf - ofdm->nin) * sizeof(complex float)); /* insert latest input samples onto tail of rxbuf */ for (j = 0, i = (ofdm->nrxbuf - ofdm->nin); i < ofdm->nrxbuf; j++, i++) { ofdm->rxbuf[i] = ((float)rxbuf_in[j] / 32767.0f); } return ofdm_sync_search_core(ofdm); } /* Joint estimation of timing and freq used for burst data acquisition */ static float est_timing_and_freq(struct OFDM *ofdm, int *t_est, float *foff_est, complex float *rx, int Nrx, complex float *known_samples, int Npsam, int tstep, float fmin, float fmax, float fstep) { int Ncorr = Nrx - Npsam + 1; float max_corr = 0; *t_est = 0; *foff_est = 0.0; for (float afcoarse = fmin; afcoarse <= fmax; afcoarse += fstep) { float w = TAU * afcoarse / ofdm->fs; complex float mvec[Npsam]; for (int i = 0; i < Npsam; i++) { complex float ph = cmplx(w * i); mvec[i] = conjf(known_samples[i] * ph); } for (int t = 0; t < Ncorr; t += tstep) { complex float corr = ofdm_complex_dot_product(&rx[t], mvec, Npsam); if (cabsf(corr) > max_corr) { max_corr = cabsf(corr); *t_est = t; *foff_est = afcoarse; } } } /* obtain normalised real number for timing_mx */ float mag1 = 0, mag2 = 0; for (int i = 0; i < Npsam; i++) { mag1 += cabsf(known_samples[i] * conjf(known_samples[i])); mag2 += cabsf(rx[i + *t_est] * conjf(rx[i + *t_est])); } float timing_mx = max_corr * max_corr / (mag1 * mag2 + 1E-12); if (ofdm->verbose > 2) { fprintf(stderr, " t_est: %4d timing:mx: %f foff_est: %f\n", *t_est, (double)timing_mx, (double)*foff_est); } return timing_mx; } /* Two stage burst mode acquisition */ static void burst_acquisition_detector(struct OFDM *ofdm, complex float *rx, int n, complex float *known_sequence, int *ct_est, float *foff_est, float *timing_mx) { float fmin, fmax, fstep; int tstep; // initial search over coarse grid tstep = 4; fstep = 5; fmin = ofdm->fmin; fmax = ofdm->fmax; *timing_mx = est_timing_and_freq( ofdm, ct_est, foff_est, &rx[n], 2 * ofdm->samplesperframe, known_sequence, ofdm->samplesperframe, tstep, fmin, fmax, fstep); // refine estimate over finer grid fmin = *foff_est - ceilf(fstep / 2.0); fmax = *foff_est + ceilf(fstep / 2.0); int fine_st = n + *ct_est - tstep / 2.0; *timing_mx = est_timing_and_freq( ofdm, ct_est, foff_est, &rx[fine_st], ofdm->samplesperframe + tstep, known_sequence, ofdm->samplesperframe, 1, fmin, fmax, 1.0); // refer ct_est to nominal start of frame rx[n] *ct_est += fine_st - n; } static int ofdm_sync_search_burst(struct OFDM *ofdm) { int st = ofdm->rxbufst + ofdm->m + ofdm->ncp + ofdm->samplesperframe; char *pre_post = ""; int pre_ct_est; float pre_foff_est, pre_timing_mx; burst_acquisition_detector(ofdm, ofdm->rxbuf, st, (complex float *)ofdm->tx_preamble, &pre_ct_est, &pre_foff_est, &pre_timing_mx); int post_ct_est; float post_foff_est, post_timing_mx; if (ofdm->postambledetectoren) burst_acquisition_detector(ofdm, ofdm->rxbuf, st, (complex float *)ofdm->tx_postamble, &post_ct_est, &post_foff_est, &post_timing_mx); int ct_est; float foff_est, timing_mx; if (!ofdm->postambledetectoren || (pre_timing_mx > post_timing_mx)) { timing_mx = pre_timing_mx; ct_est = pre_ct_est; foff_est = pre_foff_est; pre_post = "pre"; } else { timing_mx = post_timing_mx; ct_est = post_ct_est; foff_est = post_foff_est; pre_post = "post"; } int timing_valid = timing_mx > ofdm->timing_mx_thresh; if (timing_valid) { if (!strcmp(pre_post, "post")) { ofdm->post++; // we won't be need any new samples for a while .... ofdm->nin = 0; // backup to first modem frame in packet ofdm->rxbufst -= ofdm->np * ofdm->samplesperframe; ofdm->rxbufst += ct_est; } else { ofdm->pre++; // ct_est is start of preamble, so advance past that to start of first // modem frame ofdm->nin = ofdm->samplesperframe + ct_est - 1; } } else ofdm->nin = ofdm->samplesperframe; ofdm->ct_est = ct_est; ofdm->foff_est_hz = foff_est; ofdm->timing_mx = timing_mx; ofdm->timing_valid = timing_valid; if (ofdm->verbose > 1) { fprintf(stderr, " ct_est: %4d nin: %4d mx: %3.2f foff_est: % 5.1f timing_valid: " "%d %4s\n", ct_est, ofdm->nin, (double)timing_mx, (double)foff_est, timing_valid, pre_post); } return ofdm->timing_valid; } /* * Attempts to find coarse sync parameters for modem initial sync (streaming * mode) */ static int ofdm_sync_search_stream(struct OFDM *ofdm) { int act_est, afcoarse; /* Attempt coarse timing estimate (i.e. detect start of frame) at a range of * frequency offsets */ int st = ofdm->rxbufst + ofdm->samplesperframe + ofdm->samplespersymbol; int en = st + 2 * ofdm->samplesperframe + ofdm->samplespersymbol; int fcoarse = 0; float atiming_mx, timing_mx = 0.0f; int ct_est = 0; int atiming_valid, timing_valid = 0; PROFILE_VAR(timing_start); PROFILE_SAMPLE(timing_start); for (afcoarse = -40; afcoarse <= 40; afcoarse += 40) { act_est = est_timing(ofdm, &ofdm->rxbuf[st], (en - st), afcoarse, &atiming_mx, &atiming_valid, 2); if (atiming_mx > timing_mx) { ct_est = act_est; timing_mx = atiming_mx; fcoarse = afcoarse; timing_valid = atiming_valid; } } PROFILE_SAMPLE_AND_LOG2(timing_start, " timing"); /* refine freq est within -/+ 20 Hz window */ PROFILE_VAR(freq_start); PROFILE_SAMPLE(freq_start); ofdm->coarse_foff_est_hz = est_freq_offset_pilot_corr(ofdm, &ofdm->rxbuf[st], ct_est, fcoarse); ofdm->coarse_foff_est_hz += fcoarse; PROFILE_SAMPLE_AND_LOG2(freq_start, " freq"); if (ofdm->verbose > 1) { fprintf( stderr, " ct_est: %4d foff_est: %4.1f timing_valid: %d timing_mx: %5.4f\n", ct_est, (double)ofdm->coarse_foff_est_hz, timing_valid, (double)timing_mx); } ofdm->timing_valid = timing_valid; if (ofdm->timing_valid != 0) { /* potential candidate found .... */ /* calculate number of samples we need on next buffer to get into sync */ ofdm->nin = ct_est; /* reset modem states */ ofdm->sample_point = ofdm->timing_est = 0; ofdm->foff_est_hz = ofdm->coarse_foff_est_hz; ofdm->timing_mx = timing_mx; } else { ofdm->nin = ofdm->samplesperframe; } ofdm->timing_mx = timing_mx; return ofdm->timing_valid; } static int ofdm_sync_search_core(struct OFDM *ofdm) { if (ofdm->rx_bpf_en) { assert(ofdm->rx_bpf != NULL); complex float *rxbuf_in = &ofdm->rxbuf[(ofdm->nrxbuf - ofdm->nin)]; quisk_ccfFilter(rxbuf_in, rxbuf_in, ofdm->nin, ofdm->rx_bpf); } if (!strcmp(ofdm->data_mode, "burst")) return ofdm_sync_search_burst(ofdm); else return ofdm_sync_search_stream(ofdm); } /* * ------------------------------------------ * ofdm_demod - Demodulates one frame of bits * ------------------------------------------ */ /* * This wrapper accepts an array of COMPs as input */ void ofdm_demod(struct OFDM *ofdm, int *rx_bits, COMP *rxbuf_in) { complex float *rx = (complex float *)&rxbuf_in[0]; // complex has same memory layout int i, j; /* shift the buffer left based on nin */ for (i = 0, j = ofdm->nin; i < (ofdm->nrxbuf - ofdm->nin); i++, j++) { ofdm->rxbuf[i] = ofdm->rxbuf[j]; } /* insert latest input samples onto tail of rxbuf */ for (j = 0, i = (ofdm->nrxbuf - ofdm->nin); i < ofdm->nrxbuf; j++, i++) { ofdm->rxbuf[i] = rx[j]; } ofdm_demod_core(ofdm, rx_bits); } /* * This is a wrapper with a real short interface to minimise allocated memory. * This works with ofdm_demod and freedv_api. Gain is not used here. */ void ofdm_demod_shorts(struct OFDM *ofdm, int *rx_bits, short *rxbuf_in, float gain) { int i, j; /* shift the buffer left based on nin */ for (i = 0, j = ofdm->nin; i < (ofdm->nrxbuf - ofdm->nin); i++, j++) { ofdm->rxbuf[i] = ofdm->rxbuf[j]; } /* insert latest input samples onto tail of rxbuf */ for (j = 0, i = (ofdm->nrxbuf - ofdm->nin); i < ofdm->nrxbuf; j++, i++) { ofdm->rxbuf[i] = ((float)rxbuf_in[j] / 32767.0f); } ofdm_demod_core(ofdm, rx_bits); } /* * This is the rest of the function which expects that the data is * already in ofdm->rxbuf */ static void ofdm_demod_core(struct OFDM *ofdm, int *rx_bits) { int prev_timing_est = ofdm->timing_est; int i, j, k, rr, st, en; if (ofdm->rx_bpf_en) { assert(ofdm->rx_bpf != NULL); complex float *rxbuf_in = &ofdm->rxbuf[(ofdm->nrxbuf - ofdm->nin)]; quisk_ccfFilter(rxbuf_in, rxbuf_in, ofdm->nin, ofdm->rx_bpf); } /* * get user and calculated freq offset */ float woff_est = TAU * ofdm->foff_est_hz / ofdm->fs; /* update timing estimate ---------------------------------------------- */ if (ofdm->timing_en == true) { /* update timing at start of every frame */ st = ofdm->rxbufst + ofdm->samplespersymbol + ofdm->samplesperframe - (int)floorf((float)ofdm->ftwindowwidth / 2) + ofdm->timing_est; en = st + ofdm->samplesperframe - 1 + ofdm->samplespersymbol + ofdm->ftwindowwidth; complex float work[(en - st)]; /* * Adjust for the frequency error by shifting the phase * using a conjugate multiply */ for (j = 0, i = st; i < en; j++, i++) { work[j] = ofdm->rxbuf[i] * cmplxconj(woff_est * i); } int ft_est = est_timing(ofdm, work, (en - st), 0.0f, &ofdm->timing_mx, &ofdm->timing_valid, 1); ofdm->timing_est += ft_est - (int)ceilf((float)ofdm->ftwindowwidth / 2) + 1; if (ofdm->verbose > 2) { fprintf(stderr, " ft_est: %2d timing_est: %2d sample_point: %2d\n", ft_est, ofdm->timing_est, ofdm->sample_point); } /* Black magic to keep sample_point inside cyclic prefix. Or something like * that. */ ofdm->sample_point = max(ofdm->timing_est + 4, ofdm->sample_point); ofdm->sample_point = min(ofdm->timing_est + ofdm->ncp - 4, ofdm->sample_point); } /* * Convert the time-domain samples to the frequency-domain using the rx_sym * data matrix. This will be Nc+2 carriers of 11 symbols. * * You will notice there are Nc+2 BPSK symbols for each pilot symbol, and * that there are Nc QPSK symbols for each data symbol. * * XXXXXXXXXXXXXXXXX <-- Timing Slip * PPPPPPPPPPPPPPPPPPP <-- Previous Frames Pilot * DDDDDDDDDDDDDDDDD * DDDDDDDDDDDDDDDDD * DDDDDDDDDDDDDDDDD * DDDDDDDDDDDDDDDDD Ignore these past data symbols * DDDDDDDDDDDDDDDDD * DDDDDDDDDDDDDDDDD * DDDDDDDDDDDDDDDDD * PPPPPPPPPPPPPPPPPPP <-- This Frames Pilot * DDDDDDDDDDDDDDDDD * DDDDDDDDDDDDDDDDD * DDDDDDDDDDDDDDDDD * DDDDDDDDDDDDDDDDD These are the current data symbols to be decoded * DDDDDDDDDDDDDDDDD * DDDDDDDDDDDDDDDDD * DDDDDDDDDDDDDDDDD * PPPPPPPPPPPPPPPPPPP <-- Next Frames Pilot * DDDDDDDDDDDDDDDDD * DDDDDDDDDDDDDDDDD * DDDDDDDDDDDDDDDDD * DDDDDDDDDDDDDDDDD Ignore these next data symbols * DDDDDDDDDDDDDDDDD * DDDDDDDDDDDDDDDDD * DDDDDDDDDDDDDDDDD * PPPPPPPPPPPPPPPPPPP <-- Future Frames Pilot * XXXXXXXXXXXXXXXXX <-- Timing Slip * * So this algorithm will have seven data symbols and four pilot symbols to * process. The average of the four pilot symbols is our phase estimation. */ for (i = 0; i < (ofdm->ns + 3); i++) { for (j = 0; j < (ofdm->nc + 2); j++) { ofdm->rx_sym[i][j] = 0.0f; } } /* * "Previous" pilot symbol is one modem frame above. */ st = ofdm->rxbufst + ofdm->samplespersymbol + 1 + ofdm->sample_point; en = st + ofdm->m; complex float work[ofdm->m]; /* down-convert at current timing instant------------------------------- */ for (k = 0, j = st; j < en; k++, j++) { work[k] = ofdm->rxbuf[j] * cmplxconj(woff_est * j); } /* * Each symbol is of course ofdm->samplespersymbol samples long and * becomes Nc+2 carriers after DFT. * * We put this carrier pilot symbol at the top of our matrix: * * 1 .................. Nc+2 * * +----------------------+ * | Previous Pilot | rx_sym[0] * +----------------------+ * | | * */ dft(ofdm, ofdm->rx_sym[0], work); /* * "This" pilot comes after the extra symbol allotted at the top, and after * the "previous" pilot and previous data symbols (let's call it, the previous * modem frame). * * So we will now be starting at "this" pilot symbol, and continuing to the * "next" pilot symbol. * * In this routine we also process the current data symbols. */ for (rr = 0; rr < (ofdm->ns + 1); rr++) { st = ofdm->rxbufst + ofdm->samplespersymbol + ofdm->samplesperframe + (rr * ofdm->samplespersymbol) + 1 + ofdm->sample_point; en = st + ofdm->m; /* down-convert at current timing instant---------------------------------- */ for (k = 0, j = st; j < en; k++, j++) { work[k] = ofdm->rxbuf[j] * cmplxconj(woff_est * j); } /* * We put these Nc+2 carrier symbols into our matrix after the previous * pilot: * * 1 .................. Nc+2 * | Previous Pilot | rx_sym[0] * +----------------------+ * | This Pilot | rx_sym[1] * +----------------------+ * | Data | rx_sym[2] * +----------------------+ * | Data | rx_sym[3] * +----------------------+ * | Data | rx_sym[4] * +----------------------+ * | Data | rx_sym[5] * +----------------------+ * | Data | rx_sym[6] * +----------------------+ * | Data | rx_sym[7] * +----------------------+ * | Data | rx_sym[8] * +----------------------+ * | Next Pilot | rx_sym[9] * +----------------------+ * | | rx_sym[10] */ dft(ofdm, ofdm->rx_sym[rr + 1], work); } /* * OK, now we want to process to the "future" pilot symbol. This is after * the "next" modem frame. * * We are ignoring the data symbols between the "next" pilot and "future" * pilot. We only want the "future" pilot symbol, to perform the averaging of * all pilots. */ st = ofdm->rxbufst + ofdm->samplespersymbol + (3 * ofdm->samplesperframe) + 1 + ofdm->sample_point; en = st + ofdm->m; /* down-convert at current timing instant------------------------------- */ for (k = 0, j = st; j < en; k++, j++) { work[k] = ofdm->rxbuf[j] * cmplxconj(woff_est * j); } /* * We put the future pilot after all the previous symbols in the matrix: * * 1 .................. Nc+2 * * | | rx_sym[9] * +----------------------+ * | Future Pilot | rx_sym[10] * +----------------------+ */ dft(ofdm, ofdm->rx_sym[ofdm->ns + 2], work); /* * We are finished now with the DFT and down conversion * From here on down we are in the frequency domain */ /* est freq err based on all carriers ---------------------------------- */ if (ofdm->foff_est_en == true) { /* * sym[1] is 'this' pilot symbol, sym[9] is 'next' pilot symbol. * * By subtracting the two averages of these pilots, we find the frequency * by the change in phase over time. */ complex float freq_err_rect = conjf(vector_sum(ofdm->rx_sym[1], ofdm->nc + 2)) * vector_sum(ofdm->rx_sym[ofdm->ns + 1], ofdm->nc + 2); /* prevent instability in atan(im/re) when real part near 0 */ freq_err_rect += 1E-6f; float freq_err_hz = cargf(freq_err_rect) * ofdm->rs / (TAU * ofdm->ns); if (ofdm->foff_limiter) { /* optionally tame updates in low SNR channels */ if (freq_err_hz > 1.0) freq_err_hz = 1.0; if (freq_err_hz < -1.0) freq_err_hz = -1.0; } ofdm->foff_est_hz += (ofdm->foff_est_gain * freq_err_hz); } /* OK - now estimate and correct pilot phase -------------------------- */ complex float aphase_est_pilot_rect; float aphase_est_pilot[ofdm->nc + 2]; float aamp_est_pilot[ofdm->nc + 2]; for (i = 0; i < (ofdm->nc + 2); i++) { aphase_est_pilot[i] = 10.0f; aamp_est_pilot[i] = 0.0f; } for (i = 1; i < (ofdm->nc + 1); i++) { /* ignore first and last carrier for count */ if (ofdm->phase_est_bandwidth == low_bw) { complex float symbol[3]; /* * Use all pilots normally, results in low SNR performance, * but will fall over in high Doppler propagation * * Basically we divide the Nc+2 pilots into groups of 3 * Then average the phase surrounding each of the data symbols. */ for (k = 0, j = (i - 1); k < 3; k++, j++) { symbol[k] = ofdm->rx_sym[1][j] * conjf(ofdm->pilots[j]); /* this pilot conjugate */ } aphase_est_pilot_rect = vector_sum(symbol, 3); for (k = 0, j = (i - 1); k < 3; k++, j++) { symbol[k] = ofdm->rx_sym[ofdm->ns + 1][j] * conjf(ofdm->pilots[j]); /* next pilot conjugate */ } aphase_est_pilot_rect += vector_sum(symbol, 3); /* use pilots in past and future */ for (k = 0, j = (i - 1); k < 3; k++, j++) { symbol[k] = ofdm->rx_sym[0][j] * conjf(ofdm->pilots[j]); /* previous pilot */ } aphase_est_pilot_rect += vector_sum(symbol, 3); for (k = 0, j = (i - 1); k < 3; k++, j++) { symbol[k] = ofdm->rx_sym[ofdm->ns + 2][j] * conjf(ofdm->pilots[j]); /* future pilot */ } aphase_est_pilot_rect += vector_sum(symbol, 3); /* amplitude is estimated over 12 pilots */ aphase_est_pilot_rect /= 12.0f; aphase_est_pilot[i] = cargf(aphase_est_pilot_rect); aamp_est_pilot[i] = cabsf(aphase_est_pilot_rect); } else { assert(ofdm->phase_est_bandwidth == high_bw); /* * Use only symbols at 'this' and 'next' to quickly track changes * in phase due to high Doppler spread in propagation (no neighbor * averaging). * * As less pilots are averaged, low SNR performance will be poorer */ aphase_est_pilot_rect = ofdm->rx_sym[1][i] * conjf(ofdm->pilots[i]); /* "this" pilot conjugate */ aphase_est_pilot_rect += ofdm->rx_sym[ofdm->ns + 1][i] * conjf(ofdm->pilots[i]); /* "next" pilot conjugate */ /* we estimate over 2 pilots */ aphase_est_pilot_rect /= 2.0f; aphase_est_pilot[i] = cargf(aphase_est_pilot_rect); if (ofdm->amp_est_mode == 0) { // legacy 700D ampl est method aamp_est_pilot[i] = cabsf(aphase_est_pilot_rect); } else { aamp_est_pilot[i] = cabsf(ofdm->rx_sym[1][i]) + cabsf(ofdm->rx_sym[ofdm->ns + 1][i]) / 2.0; } } aphase_est_pilot[i] = cargf(aphase_est_pilot_rect); aamp_est_pilot[i] = cabsf(aphase_est_pilot_rect); } /* * correct the phase offset using phase estimate, and demodulate * bits, separate loop as it runs across cols (carriers) to get * frame bit ordering correct */ complex float rx_corr; int abit[2]; int bit_index = 0; float sum_amp = 0.0f; for (rr = 0; rr < ofdm->rowsperframe; rr++) { /* * Note the i starts with the second carrier, ends with Nc+1. * so we ignore the first and last carriers. * * Also note we are using sym[2..8] or the seven data symbols. */ for (i = 1; i < (ofdm->nc + 1); i++) { if (ofdm->phase_est_en == true) { if (ofdm->dpsk_en == true) { /* differential detection, using pilot as reference at start of frame */ rx_corr = ofdm->rx_sym[rr + 2][i] * cmplxconj(cargf(ofdm->rx_sym[rr + 1][i])); } else { /* regular coherent detection */ rx_corr = ofdm->rx_sym[rr + 2][i] * cmplxconj(aphase_est_pilot[i]); } } else { rx_corr = ofdm->rx_sym[rr + 2][i]; } /* * Output complex data symbols after phase correction; * (_np = no pilots) the pilot symbols have been removed */ ofdm->rx_np[(rr * ofdm->nc) + (i - 1)] = rx_corr; /* * Note even though amp ests are the same for each col, * the FEC decoder likes to have one amplitude per symbol * so convenient to log them all */ ofdm->rx_amp[(rr * ofdm->nc) + (i - 1)] = aamp_est_pilot[i]; sum_amp += aamp_est_pilot[i]; /* * Note like amps in this implementation phase ests are the * same for each col, but we log them for each symbol anyway */ ofdm->aphase_est_pilot_log[(rr * ofdm->nc) + (i - 1)] = aphase_est_pilot[i]; if (ofdm->bps == 1) { rx_bits[bit_index++] = crealf(rx_corr) > 0.0f; } else if (ofdm->bps == 2) { /* * Only one final task, decode what quadrant the phase * is in, and return the dibits */ qpsk_demod(rx_corr, abit); rx_bits[bit_index++] = abit[1]; rx_bits[bit_index++] = abit[0]; } } } /* update mean amplitude estimate for LDPC decoder scaling */ ofdm->mean_amp = 0.9f * ofdm->mean_amp + 0.1f * sum_amp / (ofdm->rowsperframe * ofdm->nc); /* Adjust nin to take care of sample clock offset */ ofdm->nin = ofdm->samplesperframe; if (ofdm->timing_en == true) { ofdm->clock_offset_counter += (prev_timing_est - ofdm->timing_est); int thresh = ofdm->samplespersymbol / 8; int tshift = ofdm->samplespersymbol / 4; if (ofdm->timing_est > thresh) { ofdm->nin = ofdm->samplesperframe + tshift; ofdm->timing_est -= tshift; ofdm->sample_point -= tshift; } else if (ofdm->timing_est < -thresh) { ofdm->nin = ofdm->samplesperframe - tshift; ofdm->timing_est += tshift; ofdm->sample_point += tshift; } } // use internal rxbuf samples if they are available int rxbufst_next = ofdm->rxbufst + ofdm->nin; if (rxbufst_next + ofdm->nrxbufmin <= ofdm->nrxbuf) { ofdm->rxbufst = rxbufst_next; ofdm->nin = 0; } } /* * Returns an estimate of Es/No in dB - see esno_est.m for more info */ float ofdm_esno_est_calc(complex float *rx_sym, int nsym) { float sig_var = 0; float step = 1.0f / nsym; for (int i = 0; i < nsym; i++) sig_var += (cnormf(rx_sym[i]) * step); float sig_rms = sqrtf(sig_var); float sum_x = 0.0f; float sum_xx = 0.0f; int n = 0; for (int i = 0; i < nsym; i++) { complex float s = rx_sym[i]; if (cabsf(s) > sig_rms) { if (fabs(crealf(s)) > fabs(cimagf(s))) { sum_x += cimagf(s); sum_xx += cimagf(s) * cimagf(s); } else { sum_x += crealf(s); sum_xx += crealf(s) * crealf(s); } n++; } } float noise_var; if (n > 1) noise_var = (n * sum_xx - sum_x * sum_x) / (n * (n - 1)); else noise_var = sig_var; noise_var *= 2.0f; float EsNodB = 10.0f * log10f((1E-12f + sig_var) / (1E-12f + noise_var)); assert(isnan(EsNodB) == 0); return EsNodB; } float ofdm_snr_from_esno(struct OFDM *ofdm, float EsNodB) { float cyclic_power = 10.0f * log10f((float)(ofdm->ncp + ofdm->m) / ofdm->m); return EsNodB + 10.0f * log10f((float)(ofdm->nc * ofdm->rs) / 3000.0f) + cyclic_power; } /* * state machine for 700D/2020 */ void ofdm_sync_state_machine_voice1(struct OFDM *ofdm, uint8_t *rx_uw) { int i; State next_state = ofdm->sync_state; ofdm->sync_start = false; ofdm->sync_end = false; if (ofdm->sync_state == search) { if (ofdm->timing_valid) { ofdm->frame_count = 0; ofdm->sync_counter = 0; ofdm->sync_start = true; ofdm->clock_offset_counter = 0; next_state = trial; } } if ((ofdm->sync_state == synced) || (ofdm->sync_state == trial)) { ofdm->frame_count++; /* * freq offset est may be too far out, and has aliases every 1/Ts, so * we use a Unique Word to get a really solid indication of sync. */ ofdm->uw_errors = 0; for (i = 0; i < ofdm->nuwbits; i++) { ofdm->uw_errors += ofdm->tx_uw[i] ^ rx_uw[i]; } /* * during trial sync we don't tolerate errors so much, we look * for 3 consecutive frames with low error rate to confirm sync */ if (ofdm->sync_state == trial) { if (ofdm->uw_errors > 2) { /* if we exceed thresh stay in trial sync */ ofdm->sync_counter++; ofdm->frame_count = 0; } if (ofdm->sync_counter == 2) { /* if we get two bad frames drop sync and start again */ next_state = search; ofdm->phase_est_bandwidth = high_bw; } if (ofdm->frame_count == 4) { /* three good frames, sync is OK! */ next_state = synced; /* change to low bandwidth, but more accurate phase estimation */ /* but only if not locked to high */ if (ofdm->phase_est_bandwidth_mode != LOCKED_PHASE_EST) { ofdm->phase_est_bandwidth = low_bw; } } } /* once we have synced up we tolerate a higher error rate to wait out fades */ if (ofdm->sync_state == synced) { if (ofdm->uw_errors > 2) { ofdm->sync_counter++; } else { ofdm->sync_counter = 0; } if ((ofdm->sync_mode == autosync) && (ofdm->sync_counter > 6)) { /* run of consecutive bad frames ... drop sync */ next_state = search; ofdm->phase_est_bandwidth = high_bw; } } } ofdm->last_sync_state = ofdm->sync_state; ofdm->sync_state = next_state; } /* * data (streaming mode) state machine */ void ofdm_sync_state_machine_data_streaming(struct OFDM *ofdm, uint8_t *rx_uw) { State next_state = ofdm->sync_state; int i; ofdm->sync_start = ofdm->sync_end = 0; if (ofdm->sync_state == search) { if (ofdm->timing_valid != 0) { ofdm->sync_start = true; ofdm->sync_counter = 0; next_state = trial; } } ofdm->uw_errors = 0; for (i = 0; i < ofdm->nuwbits; i++) { ofdm->uw_errors += ofdm->tx_uw[i] ^ rx_uw[i]; } if (ofdm->sync_state == trial) { if (ofdm->uw_errors < ofdm->bad_uw_errors) { next_state = synced; ofdm->packet_count = 0; ofdm->modem_frame = ofdm->nuwframes; } else { ofdm->sync_counter++; if (ofdm->sync_counter > ofdm->np) { next_state = search; } } } // Note if frameperburst==0 we don't ever lose sync, which is useful for // stream based testing or external control of state machine if (ofdm->sync_state == synced) { ofdm->modem_frame++; if (ofdm->modem_frame >= ofdm->np) { ofdm->modem_frame = 0; ofdm->packet_count++; if (ofdm->packetsperburst) { if (ofdm->packet_count >= ofdm->packetsperburst) next_state = search; } } } ofdm->last_sync_state = ofdm->sync_state; ofdm->sync_state = next_state; } /* * data (burst mode) state machine */ void ofdm_sync_state_machine_data_burst(struct OFDM *ofdm, uint8_t *rx_uw) { State next_state = ofdm->sync_state; int i; ofdm->sync_start = ofdm->sync_end = 0; if (ofdm->sync_state == search) { if (ofdm->timing_valid != 0) { ofdm->sync_start = true; ofdm->sync_counter = 0; next_state = trial; } } ofdm->uw_errors = 0; for (i = 0; i < ofdm->nuwbits; i++) { ofdm->uw_errors += ofdm->tx_uw[i] ^ rx_uw[i]; } /* pre or post-amble has told us this is the start of the packet. Confirm we have a valid frame by checking the UW after the modem frames containing the UW have been received */ if (ofdm->sync_state == trial) { ofdm->sync_counter++; if (ofdm->sync_counter == ofdm->nuwframes) { if (ofdm->uw_errors < ofdm->bad_uw_errors) { next_state = synced; ofdm->packet_count = 0; ofdm->modem_frame = ofdm->nuwframes; } else { next_state = search; // reset rxbuf to make sure we only ever do a postamble loop once // through same samples ofdm->rxbufst = ofdm->nrxbufhistory; for (int i = 0; i < ofdm->nrxbuf; i++) ofdm->rxbuf[i] = 0; ofdm->uw_fails++; } } } if (ofdm->sync_state == synced) { ofdm->modem_frame++; if (ofdm->modem_frame >= ofdm->np) { ofdm->modem_frame = 0; ofdm->packet_count++; if (ofdm->packetsperburst) { if (ofdm->packet_count >= ofdm->packetsperburst) { next_state = search; // reset rxbuf to make sure we only ever do a postamble loop once // through same samples ofdm->rxbufst = ofdm->nrxbufhistory; for (int i = 0; i < ofdm->nrxbuf; i++) ofdm->rxbuf[i] = 0; } } } } ofdm->last_sync_state = ofdm->sync_state; ofdm->sync_state = next_state; } void ofdm_sync_state_machine_voice2(struct OFDM *ofdm, uint8_t *rx_uw) { int i; State next_state = ofdm->sync_state; ofdm->sync_start = false; ofdm->sync_end = false; if (ofdm->sync_state == search) { if (ofdm->timing_valid) { ofdm->frame_count = 0; ofdm->sync_counter = 0; ofdm->sync_start = true; ofdm->clock_offset_counter = 0; next_state = trial; } } if ((ofdm->sync_state == synced) || (ofdm->sync_state == trial)) { ofdm->frame_count++; ofdm->uw_errors = 0; for (i = 0; i < ofdm->nuwbits; i++) { ofdm->uw_errors += ofdm->tx_uw[i] ^ rx_uw[i]; } if (ofdm->sync_state == trial) { if (ofdm->uw_errors <= ofdm->bad_uw_errors) next_state = synced; else next_state = search; } if (ofdm->sync_state == synced) { if (ofdm->uw_errors > ofdm->bad_uw_errors) { ofdm->sync_counter++; } else { ofdm->sync_counter = 0; } if (ofdm->sync_counter == 6) { /* run of consecutive bad frames ... drop sync */ next_state = search; } } } ofdm->last_sync_state = ofdm->sync_state; ofdm->sync_state = next_state; } /* mode based dispatcher for sync state machines */ void ofdm_sync_state_machine(struct OFDM *ofdm, uint8_t *rx_uw) { if (!strcmp(ofdm->state_machine, "voice1")) ofdm_sync_state_machine_voice1(ofdm, rx_uw); if (!strcmp(ofdm->state_machine, "data")) { if (strcmp(ofdm->data_mode, "streaming") == 0) ofdm_sync_state_machine_data_streaming(ofdm, rx_uw); else ofdm_sync_state_machine_data_burst(ofdm, rx_uw); } if (!strcmp(ofdm->state_machine, "voice2")) ofdm_sync_state_machine_voice2(ofdm, rx_uw); } /*---------------------------------------------------------------------------* \ FUNCTIONS...: ofdm_set_sync AUTHOR......: David Rowe DATE CREATED: May 2018 External control of sync state machine. Ensure this is called in the same thread as ofdm_sync_state_machine(). \*---------------------------------------------------------------------------*/ void ofdm_set_sync(struct OFDM *ofdm, int sync_cmd) { assert(ofdm != NULL); switch (sync_cmd) { case UN_SYNC: /* force manual unsync, which will cause sync state machine to have re-attempt sync */ ofdm->sync_state = search; /* clear rxbuf so we don't try to sync on any existing OFDM signals in buffer */ for (int i = 0; i < ofdm->nrxbuf; i++) ofdm->rxbuf[i] = 0.0f; break; case AUTO_SYNC: /* normal operating mode - sync state machine decides when to unsync */ ofdm->sync_mode = autosync; break; case MANUAL_SYNC: /* * allow sync state machine to sync, but not to unsync, the * operator will decide that manually */ ofdm->sync_mode = manualsync; break; default: assert(0); } } /*---------------------------------------------------------------------------*\ FUNCTION....: ofdm_get_demod_stats() AUTHOR......: David Rowe DATE CREATED: May 2018 Fills stats structure with a bunch of demod information. Call once per packet. \*---------------------------------------------------------------------------*/ void ofdm_get_demod_stats(struct OFDM *ofdm, struct MODEM_STATS *stats, complex float *rx_syms, int Nsymsperpacket) { stats->Nc = ofdm->nc; assert(stats->Nc <= MODEM_STATS_NC_MAX); float EsNodB = ofdm_esno_est_calc(rx_syms, Nsymsperpacket); float SNR3kdB = ofdm_snr_from_esno(ofdm, EsNodB); if (strlen(ofdm->data_mode)) /* no smoothing as we have a large number of symbols per packet */ stats->snr_est = SNR3kdB; else { /* in voice modes we further smooth SNR est, fast attack, slow decay */ if (SNR3kdB > stats->snr_est) stats->snr_est = SNR3kdB; else stats->snr_est = 0.9f * stats->snr_est + 0.1f * SNR3kdB; } stats->sync = ((ofdm->sync_state == synced) || (ofdm->sync_state == trial)); stats->foff = ofdm->foff_est_hz; stats->rx_timing = ofdm->timing_est; float total = ofdm->frame_count * ofdm->samplesperframe; stats->clock_offset = 0; if (total != 0.0f) { stats->clock_offset = ofdm->clock_offset_counter / total; } stats->sync_metric = ofdm->timing_mx; stats->pre = ofdm->pre; stats->post = ofdm->post; stats->uw_fails = ofdm->uw_fails; #ifndef __EMBEDDED__ assert(Nsymsperpacket % ofdm->nc == 0); int Nrowsperpacket = Nsymsperpacket / ofdm->nc; assert(Nrowsperpacket <= MODEM_STATS_NR_MAX); stats->nr = Nrowsperpacket; for (int c = 0; c < ofdm->nc; c++) { for (int r = 0; r < Nrowsperpacket; r++) { complex float rot = rx_syms[r * ofdm->nc + c] * cmplx(ROT45); stats->rx_symbols[r][c].real = crealf(rot); stats->rx_symbols[r][c].imag = cimagf(rot); } } #endif } /* * Assemble packet of bits from UW, payload bits, and txt bits */ void ofdm_assemble_qpsk_modem_packet(struct OFDM *ofdm, uint8_t modem_frame[], uint8_t payload_bits[], uint8_t txt_bits[]) { int s, t; int p = 0; int u = 0; for (s = 0; s < (ofdm->bitsperpacket - ofdm->ntxtbits); s++) { if ((u < ofdm->nuwbits) && (s == ofdm->uw_ind[u])) { modem_frame[s] = ofdm->tx_uw[u++]; } else { modem_frame[s] = payload_bits[p++]; } } assert(u == ofdm->nuwbits); assert(p == (ofdm->bitsperpacket - ofdm->nuwbits - ofdm->ntxtbits)); for (t = 0; s < ofdm->bitsperframe; s++, t++) { modem_frame[s] = txt_bits[t]; } assert(t == ofdm->ntxtbits); } /* * Assemble packet of symbols from UW, payload symbols, and txt bits */ void ofdm_assemble_qpsk_modem_packet_symbols(struct OFDM *ofdm, complex float modem_packet[], COMP payload_syms[], uint8_t txt_bits[]) { complex float *payload = (complex float *)&payload_syms[0]; // complex has same memory layout int Nsymsperpacket = ofdm->bitsperpacket / ofdm->bps; int Nuwsyms = ofdm->nuwbits / ofdm->bps; int Ntxtsyms = ofdm->ntxtbits / ofdm->bps; int dibit[2]; int s, t; int p = 0; int u = 0; assert( ofdm->bps == 2); /* this only works for QPSK at this stage (e.g. modem packet mod) */ for (s = 0; s < (Nsymsperpacket - Ntxtsyms); s++) { if ((u < Nuwsyms) && (s == ofdm->uw_ind_sym[u])) { modem_packet[s] = ofdm->tx_uw_syms[u++]; } else { modem_packet[s] = payload[p++]; } } assert(u == Nuwsyms); assert(p == (Nsymsperpacket - Nuwsyms - Ntxtsyms)); for (t = 0; s < Nsymsperpacket; s++, t += 2) { dibit[1] = txt_bits[t] & 0x1; dibit[0] = txt_bits[t + 1] & 0x1; modem_packet[s] = qpsk_mod(dibit); } assert(t == ofdm->ntxtbits); } /* * Disassemble a received packet of symbols into UW bits and payload data * symbols */ void ofdm_disassemble_qpsk_modem_packet(struct OFDM *ofdm, complex float rx_syms[], float rx_amps[], COMP codeword_syms[], float codeword_amps[], short txt_bits[]) { complex float *codeword = (complex float *)&codeword_syms[0]; // complex has same memory layout int Nsymsperpacket = ofdm->bitsperpacket / ofdm->bps; int Nuwsyms = ofdm->nuwbits / ofdm->bps; int Ntxtsyms = ofdm->ntxtbits / ofdm->bps; int dibit[2]; int s, t; int p = 0; int u = 0; assert(ofdm->bps == 2); /* this only works for QPSK at this stage */ for (s = 0; s < (Nsymsperpacket - Ntxtsyms); s++) { if ((u < Nuwsyms) && (s == ofdm->uw_ind_sym[u])) { u++; } else { codeword[p] = rx_syms[s]; codeword_amps[p] = rx_amps[s]; p++; } } assert(u == Nuwsyms); assert(p == (Nsymsperpacket - Nuwsyms - Ntxtsyms)); for (t = 0; s < Nsymsperpacket; s++, t += 2) { qpsk_demod(rx_syms[s], dibit); txt_bits[t] = dibit[1]; txt_bits[t + 1] = dibit[0]; } assert(t == ofdm->ntxtbits); } /* * Disassemble a received packet of symbols into UW bits and payload data * symbols */ void ofdm_disassemble_qpsk_modem_packet_with_text_amps( struct OFDM *ofdm, complex float rx_syms[], float rx_amps[], COMP codeword_syms[], float codeword_amps[], short txt_bits[], int *textIndex) { complex float *codeword = (complex float *)&codeword_syms[0]; // complex has same memory layout int Nsymsperpacket = ofdm->bitsperpacket / ofdm->bps; int Nuwsyms = ofdm->nuwbits / ofdm->bps; int Ntxtsyms = ofdm->ntxtbits / ofdm->bps; int dibit[2]; int s, t; int p = 0; int u = 0; assert(ofdm->bps == 2); /* this only works for QPSK at this stage */ assert(textIndex != NULL); for (s = 0; s < (Nsymsperpacket - Ntxtsyms); s++) { if ((u < Nuwsyms) && (s == ofdm->uw_ind_sym[u])) { u++; } else { codeword[p] = rx_syms[s]; codeword_amps[p] = rx_amps[s]; p++; } } assert(u == Nuwsyms); assert(p == (Nsymsperpacket - Nuwsyms - Ntxtsyms)); *textIndex = s; for (t = 0; s < Nsymsperpacket; s++, t += 2) { qpsk_demod(rx_syms[s], dibit); txt_bits[t] = dibit[1]; txt_bits[t + 1] = dibit[0]; } assert(t == ofdm->ntxtbits); } /* * Extract just the UW from the packet */ void ofdm_extract_uw(struct OFDM *ofdm, complex float rx_syms[], float rx_amps[], uint8_t rx_uw[]) { int Nsymsperframe = ofdm->bitsperframe / ofdm->bps; int Nuwsyms = ofdm->nuwbits / ofdm->bps; int dibit[2]; int s, u; assert(ofdm->bps == 2); /* this only works for QPSK at this stage (e.g. UW demod) */ for (s = 0, u = 0; s < Nsymsperframe * ofdm->nuwframes; s++) { if ((u < Nuwsyms) && (s == ofdm->uw_ind_sym[u])) { qpsk_demod(rx_syms[s], dibit); rx_uw[2 * u] = dibit[1]; rx_uw[2 * u + 1] = dibit[0]; u++; } } assert(u == Nuwsyms); } /* * Pseudo-random number generator that we can implement in C with * identical results to Octave. Returns an unsigned int between 0 * and 32767. Used for generating test frames of various lengths. */ void ofdm_rand(uint16_t r[], int n) { ofdm_rand_seed(r, n, 1); } void ofdm_rand_seed(uint16_t r[], int n, uint64_t seed) { for (int i = 0; i < n; i++) { seed = (1103515245l * seed + 12345) % 32768; r[i] = seed; } } void ofdm_generate_payload_data_bits(uint8_t payload_data_bits[], int n) { uint16_t r[n]; int i; ofdm_rand(r, n); for (i = 0; i < n; i++) { payload_data_bits[i] = r[i] > 16384; } } void ofdm_generate_preamble(struct OFDM *ofdm, COMP *tx_preamble, int seed) { // need to modify bits per packet to set up pre-amble of a few modem frames in // length struct OFDM ofdm_preamble; memcpy(&ofdm_preamble, ofdm, sizeof(struct OFDM)); ofdm_preamble.np = 1; ofdm_preamble.bitsperpacket = ofdm_preamble.bitsperframe; uint16_t r[ofdm_preamble.bitsperpacket]; ofdm_rand_seed(r, ofdm_preamble.bitsperpacket, seed); int preamble_bits[ofdm_preamble.bitsperpacket]; for (int i = 0; i < ofdm_preamble.bitsperpacket; i++) preamble_bits[i] = r[i] > 16384; // ensures the signal passes through hilbert clipper unchanged ofdm_preamble.amp_scale = 1.0; ofdm_preamble.tx_bpf_en = false; ofdm_preamble.clip_en = false; ofdm_mod(&ofdm_preamble, tx_preamble, preamble_bits); } void ofdm_print_info(struct OFDM *ofdm) { char *syncmode[] = {"unsync", "autosync", "manualsync"}; char *phase_est_bandwidth_mode[] = {"auto", "locked_high"}; fprintf(stderr, "ofdm->tx_centre = %g\n", (double)ofdm->tx_centre); fprintf(stderr, "ofdm->rx_centre = %g\n", (double)ofdm->rx_centre); fprintf(stderr, "ofdm->fs = %g\n", (double)ofdm->fs); fprintf(stderr, "ofdm->ts = %g\n", (double)ofdm->ts); fprintf(stderr, "ofdm->rs = %g\n", (double)ofdm->rs); fprintf(stderr, "ofdm->tcp = %g\n", (double)ofdm->tcp); fprintf(stderr, "ofdm->inv_m = %g\n", (double)ofdm->inv_m); fprintf(stderr, "ofdm->tx_nlower = %g\n", (double)ofdm->tx_nlower); fprintf(stderr, "ofdm->rx_nlower = %g\n", (double)ofdm->rx_nlower); fprintf(stderr, "ofdm->doc = %g\n", (double)ofdm->doc); fprintf(stderr, "ofdm->timing_mx_thresh = %g\n", (double)ofdm->timing_mx_thresh); fprintf(stderr, "ofdm->nc = %d\n", ofdm->nc); fprintf(stderr, "ofdm->np = %d\n", ofdm->np); fprintf(stderr, "ofdm->ns = %d\n", ofdm->ns); fprintf(stderr, "ofdm->bps = %d\n", ofdm->bps); fprintf(stderr, "ofdm->m = %d\n", ofdm->m); fprintf(stderr, "ofdm->ncp = %d\n", ofdm->ncp); fprintf(stderr, "ofdm->ftwindowwidth = %d\n", ofdm->ftwindowwidth); fprintf(stderr, "ofdm->bitsperframe = %d\n", ofdm->bitsperframe); fprintf(stderr, "ofdm->bitsperpacket = %d\n", ofdm->bitsperpacket); fprintf(stderr, "ofdm->rowsperframe = %d\n", ofdm->rowsperframe); fprintf(stderr, "ofdm->samplespersymbol = %d\n", ofdm->samplespersymbol); fprintf(stderr, "ofdm->samplesperframe = %d\n", ofdm->samplesperframe); fprintf(stderr, "ofdm->max_samplesperframe = %d\n", ofdm->max_samplesperframe); fprintf(stderr, "ofdm->nrxbuf = %d\n", ofdm->nrxbuf); fprintf(stderr, "ofdm->ntxtbits = %d\n", ofdm->ntxtbits); fprintf(stderr, "ofdm->nuwbits = %d\n", ofdm->nuwbits); fprintf(stderr, "ofdm->foff_est_gain = %g\n", (double)ofdm->foff_est_gain); fprintf(stderr, "ofdm->foff_est_hz = %g\n", (double)ofdm->foff_est_hz); fprintf(stderr, "ofdm->timing_mx = %g\n", (double)ofdm->timing_mx); fprintf(stderr, "ofdm->coarse_foff_est_hz = %g\n", (double)ofdm->coarse_foff_est_hz); fprintf(stderr, "ofdm->timing_norm = %g\n", (double)ofdm->timing_norm); fprintf(stderr, "ofdm->mean_amp = %g\n", (double)ofdm->mean_amp); fprintf(stderr, "ofdm->clock_offset_counter = %d\n", ofdm->clock_offset_counter); fprintf(stderr, "ofdm->verbose = %d\n", ofdm->verbose); fprintf(stderr, "ofdm->sample_point = %d\n", ofdm->sample_point); fprintf(stderr, "ofdm->timing_est = %d\n", ofdm->timing_est); fprintf(stderr, "ofdm->timing_valid = %d\n", ofdm->timing_valid); fprintf(stderr, "ofdm->nin = %d\n", ofdm->nin); fprintf(stderr, "ofdm->uw_errors = %d\n", ofdm->uw_errors); fprintf(stderr, "ofdm->sync_counter = %d\n", ofdm->sync_counter); fprintf(stderr, "ofdm->frame_count = %d\n", ofdm->frame_count); fprintf(stderr, "ofdm->sync_start = %s\n", ofdm->sync_start ? "true" : "false"); fprintf(stderr, "ofdm->sync_end = %s\n", ofdm->sync_end ? "true" : "false"); fprintf(stderr, "ofdm->sync_mode = %s\n", syncmode[ofdm->sync_mode]); fprintf(stderr, "ofdm->timing_en = %s\n", ofdm->timing_en ? "true" : "false"); fprintf(stderr, "ofdm->foff_est_en = %s\n", ofdm->foff_est_en ? "true" : "false"); fprintf(stderr, "ofdm->phase_est_en = %s\n", ofdm->phase_est_en ? "true" : "false"); fprintf(stderr, "ofdm->tx_bpf_en = %s\n", ofdm->tx_bpf_en ? "true" : "false"); fprintf(stderr, "ofdm->rx_bpf_en = %s\n", ofdm->rx_bpf_en ? "true" : "false"); fprintf(stderr, "ofdm->dpsk_en = %s\n", ofdm->dpsk_en ? "true" : "false"); fprintf(stderr, "ofdm->phase_est_bandwidth_mode = %s\n", phase_est_bandwidth_mode[ofdm->phase_est_bandwidth_mode]); } // hilbert clipper void ofdm_clip(complex float tx[], float clip_thresh, int n) { complex float sam; float mag; int i; for (i = 0; i < n; i++) { sam = tx[i]; mag = cabsf(sam); if (mag > clip_thresh) { sam *= clip_thresh / mag; } tx[i] = sam; } } codec2-1.2.0/src/ofdm_demod.c000066400000000000000000000615251445607075400157260ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: ofdm_demod.c AUTHOR......: David Rowe DATE CREATED: Mar 2018 Demodulates an input file of raw file (8kHz, 16 bit shorts) OFDM modem samples. Runs in uncoded or LDPC coded modes. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2018 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #define OPTPARSE_IMPLEMENTATION #define OPTPARSE_API static #include #include #include #include #include #include #include #include #include "codec2_ofdm.h" #include "gp_interleaver.h" #include "interldpc.h" #include "ldpc_codes.h" #include "mpdecode_core.h" #include "octave.h" #include "ofdm_internal.h" #include "optparse.h" #define IS_DIR_SEPARATOR(c) ((c) == '/') #define NFRAMES 100 /* just log the first 100 frames */ #define NDISCARD 20 /* BER2 measure discards first 20 frames */ #define FS 8000.0f static const char *progname; static const char *statemode[] = {"search", "trial", "synced"}; void opt_help() { fprintf(stderr, "\nusage: %s [options]\n\n", progname); fprintf(stderr, " Default output file format is one byte per bit hard decision\n\n"); fprintf(stderr, " --in filename Name of InputModemRawFile\n"); fprintf(stderr, " --out filename Name of OutputOneCharPerBitFile\n"); fprintf(stderr, " --log filename Octave log file for testing\n"); fprintf( stderr, " --mode modeName Predefined mode e.g. 700D|2020|datac1 etc\n"); fprintf( stderr, " --nc [17..62] Number of Carriers (17 default, 62 max)\n"); fprintf(stderr, " --np Number of packets\n"); fprintf( stderr, " --ns Nframes One pilot every ns symbols (8 default)\n"); fprintf(stderr, " --tcp Nsecs Cyclic Prefix Duration (.002 default)\n"); fprintf(stderr, " --ts Nsecs Symbol Duration (.018 default)\n"); fprintf(stderr, " --bandwidth [0|1] Select phase est bw mode AUTO low or " "high (0) or LOCKED high (1) (default 0)\n"); fprintf(stderr, " Must also specify --ldpc option\n"); fprintf(stderr, " --tx_freq freq Set modulation TX centre Frequency " "(1500.0 default)\n"); fprintf(stderr, " --rx_freq freq Set modulation RX centre Frequency " "(1500.0 default)\n"); fprintf(stderr, " --verbose [1|2|3] Verbose output level to stderr (default " "off)\n"); fprintf(stderr, " --testframes Receive test frames and count errors\n"); fprintf(stderr, " --ldpc Run LDPC decoder\n"); fprintf(stderr, "\n"); fprintf(stderr, " --start_secs secs Number of seconds delay before we start " "to demod\n"); fprintf(stderr, " --len_secs secs Number of seconds to run demod\n"); fprintf(stderr, " --skip_secs timeSecs At timeSecs introduce a large timing " "error by skipping half a frame of samples\n"); fprintf(stderr, " --packetsperburst p use burst mode; number of packets we " "expect per burst\n"); fprintf(stderr, "\n"); exit(-1); } int main(int argc, char *argv[]) { int i, j, opt, val; char *pn = argv[0] + strlen(argv[0]); while (pn != argv[0] && !IS_DIR_SEPARATOR(pn[-1])) --pn; progname = pn; /* Turn off stream buffering */ setvbuf(stdin, NULL, _IONBF, BUFSIZ); setvbuf(stdout, NULL, _IONBF, BUFSIZ); FILE *fin = stdin; FILE *fout = stdout; FILE *foct = NULL; char *fin_name = NULL; char *fout_name = NULL; char *log_name = NULL; int logframes = NFRAMES; int verbose = 0; int phase_est_bandwidth_mode = AUTO_PHASE_EST; int ldpc_en = 0; int Ndatabitsperpacket = 0; int packetsperburst = 0; bool testframes = false; bool input_specified = false; bool output_specified = false; bool log_specified = false; bool log_active = false; float time_to_sync = -1; float start_secs = 0.0; float len_secs = 0.0; float skip_secs = 0.0; /* set up the default modem config */ struct OFDM_CONFIG *ofdm_config = (struct OFDM_CONFIG *)calloc(1, sizeof(struct OFDM_CONFIG)); assert(ofdm_config != NULL); char mode[32] = "700D"; ofdm_init_mode(mode, ofdm_config); struct optparse options; struct optparse_long longopts[] = { {"in", 'a', OPTPARSE_REQUIRED}, {"out", 'b', OPTPARSE_REQUIRED}, {"log", 'c', OPTPARSE_REQUIRED}, {"testframes", 'd', OPTPARSE_NONE}, {"bandwidth", 'o', OPTPARSE_REQUIRED}, {"tx_freq", 'f', OPTPARSE_REQUIRED}, {"rx_freq", 'g', OPTPARSE_REQUIRED}, {"verbose", 'v', OPTPARSE_REQUIRED}, {"ldpc", 'i', OPTPARSE_NONE}, {"nc", 'j', OPTPARSE_REQUIRED}, {"tcp", 'k', OPTPARSE_REQUIRED}, {"ts", 'l', OPTPARSE_REQUIRED}, {"ns", 'm', OPTPARSE_REQUIRED}, {"np", 'n', OPTPARSE_REQUIRED}, {"start_secs", 'x', OPTPARSE_REQUIRED}, {"len_secs", 'y', OPTPARSE_REQUIRED}, {"skip_secs", 'z', OPTPARSE_REQUIRED}, {"mode", 'r', OPTPARSE_REQUIRED}, {"packetsperburst", 'e', OPTPARSE_REQUIRED}, {0, 0, 0}}; optparse_init(&options, argv); while ((opt = optparse_long(&options, longopts, NULL)) != -1) { switch (opt) { case '?': opt_help(); case 'a': fin_name = options.optarg; input_specified = true; break; case 'b': fout_name = options.optarg; output_specified = true; break; case 'c': log_name = options.optarg; log_specified = true; log_active = true; break; case 'd': testframes = true; break; case 'e': packetsperburst = atoi(options.optarg); fprintf(stderr, "burst data mode!\n"); break; case 'i': ldpc_en = 1; break; case 'f': ofdm_config->tx_centre = atof(options.optarg); break; case 'g': ofdm_config->rx_centre = atof(options.optarg); break; case 'j': val = atoi(options.optarg); if (val > 62 || val < 17) { opt_help(); } else { ofdm_config->nc = val; } break; case 'k': ofdm_config->tcp = atof(options.optarg); break; case 'l': ofdm_config->ts = atof(options.optarg); ofdm_config->rs = 1.0f / ofdm_config->ts; break; case 'm': ofdm_config->ns = atoi(options.optarg); break; case 'n': ofdm_config->np = atoi(options.optarg); break; case 'o': phase_est_bandwidth_mode = atoi(options.optarg); break; case 'r': strcpy(mode, options.optarg); ofdm_init_mode(mode, ofdm_config); break; case 'v': verbose = atoi(options.optarg); if (verbose < 0 || verbose > 3) verbose = 0; break; case 'x': start_secs = atoi(options.optarg); break; case 'y': len_secs = atoi(options.optarg); break; case 'z': skip_secs = atoi(options.optarg); break; } } /* Print remaining arguments to give user a hint */ char *arg; while ((arg = optparse_arg(&options))) fprintf(stderr, "%s\n", arg); if (input_specified == true) { if ((fin = fopen(fin_name, "rb")) == NULL) { fprintf(stderr, "Error opening input modem sample file: %s\n", fin_name); exit(-1); } } if (output_specified == true) { if ((fout = fopen(fout_name, "wb")) == NULL) { fprintf(stderr, "Error opening output file: %s\n", fout_name); exit(-1); } } if (log_specified == true) { if ((foct = fopen(log_name, "wt")) == NULL) { fprintf(stderr, "Error opening Octave output file: %s\n", log_name); exit(-1); } } /* Create OFDM modem ----------------------------------------------------*/ struct OFDM *ofdm = ofdm_create(ofdm_config); assert(ofdm != NULL); free(ofdm_config); ofdm_set_phase_est_bandwidth_mode(ofdm, phase_est_bandwidth_mode); // default to one packet per burst for burst mode if (packetsperburst) { ofdm_set_packets_per_burst(ofdm, packetsperburst); } /* Get a copy of the actual modem config (ofdm_create() fills in more * parameters) */ ofdm_config = ofdm_get_config_param(ofdm); int ofdm_bitsperframe = ofdm_get_bits_per_frame(ofdm); int ofdm_rowsperframe = ofdm_bitsperframe / (ofdm_config->nc * ofdm_config->bps); int ofdm_nuwbits = ofdm_config->nuwbits; int ofdm_ntxtbits = ofdm_config->txtbits; float phase_est_pilot_log[ofdm_rowsperframe * NFRAMES][ofdm_config->nc]; COMP rx_np_log[ofdm_rowsperframe * ofdm_config->nc * NFRAMES]; float rx_amp_log[ofdm_rowsperframe * ofdm_config->nc * NFRAMES]; float foff_hz_log[NFRAMES]; int timing_est_log[NFRAMES]; /* zero out the log arrays in case we don't run for NFRAMES and fill them with * data */ for (i = 0; i < (ofdm_rowsperframe * NFRAMES); i++) { for (j = 0; j < ofdm_config->nc; j++) { phase_est_pilot_log[i][j] = 0.0f; } } for (i = 0; i < (ofdm_rowsperframe * ofdm_config->nc * NFRAMES); i++) { rx_np_log[i].real = 0.0f; rx_np_log[i].imag = 0.0f; rx_amp_log[i] = 0.0f; } for (i = 0; i < NFRAMES; i++) { foff_hz_log[i] = 0.0f; timing_est_log[i] = 0.0f; } /* some useful constants */ int Nbitsperframe = ofdm_bitsperframe; int Nbitsperpacket = ofdm_get_bits_per_packet(ofdm); int Nsymsperframe = Nbitsperframe / ofdm_config->bps; int Nsymsperpacket = Nbitsperpacket / ofdm_config->bps; int Nmaxsamperframe = ofdm_get_max_samples_per_frame(ofdm); int Npayloadbitsperframe = ofdm_bitsperframe; int Npayloadbitsperpacket = Nbitsperpacket - ofdm_nuwbits - ofdm_ntxtbits; int Npayloadsymsperframe = Npayloadbitsperframe / ofdm_config->bps; int Npayloadsymsperpacket = Npayloadbitsperpacket / ofdm_config->bps; /* Set up LPDC codes */ struct LDPC ldpc; COMP payload_syms[Npayloadsymsperpacket]; float payload_amps[Npayloadsymsperpacket]; if (ldpc_en) { ldpc_codes_setup(&ldpc, ofdm->codename); ldpc_mode_specific_setup(ofdm, &ldpc); Ndatabitsperpacket = ldpc.data_bits_per_frame; if (verbose > 1) { fprintf(stderr, "using: %s\n", ofdm->codename); fprintf(stderr, "LDPC codeword data bits = %d\n", ldpc.ldpc_data_bits_per_frame); fprintf(stderr, "LDPC codeword total bits = %d\n", ldpc.ldpc_coded_bits_per_frame); fprintf(stderr, "LDPC codeword data bits used = %d\n", Ndatabitsperpacket); fprintf(stderr, "LDPC codeword total length in modem packet = %d\n", Npayloadbitsperpacket); } } if (verbose != 0) { ofdm_set_verbose(ofdm, verbose); } complex float rx_syms[Nsymsperpacket]; float rx_amps[Nsymsperpacket]; for (int i = 0; i < Nsymsperpacket; i++) { rx_syms[i] = 0.0; rx_amps[i] = 0.0; } short rx_scaled[Nmaxsamperframe]; int rx_bits[Nbitsperframe]; uint8_t rx_bits_char[Nbitsperframe]; uint8_t rx_uw[ofdm_nuwbits]; short txt_bits[ofdm_ntxtbits]; /* error counting */ int Terrs, Tbits, Terrs2, Tbits2, Terrs_coded, Tbits_coded, frame_count, packet_count, Ndiscard; Terrs = Tbits = Terrs2 = Tbits2 = Terrs_coded = Tbits_coded = frame_count = packet_count = 0; int Nerrs_raw = 0; int Nerrs_coded = 0; int Ncoded; int Tper = 0; int iter = 0; int parityCheckCount = 0; float SNR3kdB = 0.0; float sum_SNR3kdB = 0.0; if (strlen(ofdm->data_mode) == 0) Ndiscard = NDISCARD; /* backwards compatibility with 700D/2020 */ else Ndiscard = 1; /* much longer packets, so discard thresh smaller */ float EsNo = 3.0f; if (verbose == 2) fprintf(stderr, "Warning EsNo: %f hard coded\n", EsNo); /* More logging */ COMP payload_syms_log[NFRAMES][Npayloadsymsperpacket]; float payload_amps_log[NFRAMES][Npayloadsymsperpacket]; for (i = 0; i < NFRAMES; i++) { for (j = 0; j < Npayloadsymsperframe; j++) { payload_syms_log[i][j].real = 0.0f; payload_syms_log[i][j].imag = 0.0f; payload_amps_log[i][j] = 0.0f; } } int nin_frame = ofdm_get_nin(ofdm); int f = 0; int finish = 0; if (start_secs != 0.0) { int offset = start_secs * FS * sizeof(short); fseek(fin, offset, SEEK_SET); } while ((fread(rx_scaled, sizeof(short), nin_frame, fin) == nin_frame) && !finish) { if (verbose >= 2) fprintf(stderr, "%3d nin: %4d st: %-6s ", f, nin_frame, statemode[ofdm->sync_state]); bool log_payload_syms = false; Nerrs_raw = Nerrs_coded = 0; /* demod */ if (ofdm->sync_state == search) { ofdm_sync_search_shorts(ofdm, rx_scaled, (ofdm->amp_scale / 2.0f)); } if ((ofdm->sync_state == synced) || (ofdm->sync_state == trial)) { log_payload_syms = true; /* demod the latest modem frame */ ofdm_demod_shorts(ofdm, rx_bits, rx_scaled, (ofdm->amp_scale / 2.0f)); /* accumulate a buffer of data symbols for this packet */ for (i = 0; i < Nsymsperpacket - Nsymsperframe; i++) { rx_syms[i] = rx_syms[i + Nsymsperframe]; rx_amps[i] = rx_amps[i + Nsymsperframe]; } memcpy(&rx_syms[Nsymsperpacket - Nsymsperframe], ofdm->rx_np, sizeof(complex float) * Nsymsperframe); memcpy(&rx_amps[Nsymsperpacket - Nsymsperframe], ofdm->rx_amp, sizeof(float) * Nsymsperframe); /* look for UW as frames enter packet buffer, note UW may span several * modem frames */ int st_uw = Nsymsperpacket - ofdm->nuwframes * Nsymsperframe; ofdm_extract_uw(ofdm, &rx_syms[st_uw], &rx_amps[st_uw], rx_uw); if (ofdm->modem_frame == (ofdm->np - 1)) { /* we have received enough frames to make a complete packet .... */ /* extract payload symbols from packet */ ofdm_disassemble_qpsk_modem_packet(ofdm, rx_syms, rx_amps, payload_syms, payload_amps, txt_bits); if (ldpc_en) { assert((ofdm_nuwbits + ofdm_ntxtbits + Npayloadbitsperpacket) <= Nbitsperpacket); /* run de-interleaver */ COMP payload_syms_de[Npayloadsymsperpacket]; float payload_amps_de[Npayloadsymsperpacket]; gp_deinterleave_comp(payload_syms_de, payload_syms, Npayloadsymsperpacket); gp_deinterleave_float(payload_amps_de, payload_amps, Npayloadsymsperpacket); float llr[Npayloadbitsperpacket]; uint8_t out_char[Npayloadbitsperpacket]; if (testframes == true) { Nerrs_raw = count_uncoded_errors(&ldpc, ofdm_config, payload_syms_de, 0); Terrs += Nerrs_raw; Tbits += Npayloadbitsperpacket; /* not counting errors in txt bits */ } symbols_to_llrs(llr, payload_syms_de, payload_amps_de, EsNo, ofdm->mean_amp, Npayloadsymsperpacket); assert(Ndatabitsperpacket == ldpc.data_bits_per_frame); ldpc_decode_frame(&ldpc, &parityCheckCount, &iter, out_char, llr); if (testframes == true) { /* construct payload data bits */ uint8_t payload_data_bits[Ndatabitsperpacket]; ofdm_generate_payload_data_bits(payload_data_bits, Ndatabitsperpacket); count_errors_protection_mode(ldpc.protection_mode, &Nerrs_coded, &Ncoded, payload_data_bits, out_char, Ndatabitsperpacket); Terrs_coded += Nerrs_coded; Tbits_coded += Ncoded; if (Nerrs_coded) Tper++; } fwrite(out_char, sizeof(char), Ndatabitsperpacket, fout); } else { /* simple hard decision output of payload data bits */ assert(Npayloadsymsperpacket * ofdm_config->bps == Npayloadbitsperpacket); for (i = 0; i < Npayloadsymsperpacket; i++) { int bits[2]; complex float s = payload_syms[i].real + I * payload_syms[i].imag; qpsk_demod(s, bits); rx_bits_char[ofdm_config->bps * i] = bits[1]; rx_bits_char[ofdm_config->bps * i + 1] = bits[0]; } fwrite(rx_bits_char, sizeof(uint8_t), Npayloadbitsperpacket, fout); } /* optional error counting on uncoded data in non-LDPC testframe mode */ if ((testframes == true) && (ldpc_en == 0)) { /* build up a test frame consisting of unique word, txt bits, and psuedo-random uncoded payload bits. The psuedo-random generator is the same as Octave so it can interoperate with ofdm_tx.m/ofdm_rx.m */ uint8_t payload_bits[Npayloadbitsperpacket]; uint8_t txt_bits[ofdm_ntxtbits]; memset(txt_bits, 0, ofdm_ntxtbits); uint8_t tx_bits[Nbitsperpacket]; ofdm_generate_payload_data_bits(payload_bits, Npayloadbitsperpacket); ofdm_assemble_qpsk_modem_packet(ofdm, tx_bits, payload_bits, txt_bits); /* count errors across UW, payload, txt bits */ int rx_bits[Nbitsperpacket]; int dibit[2]; assert(ofdm->bps == 2); /* this only works for QPSK at this stage */ for (int s = 0; s < Nsymsperpacket; s++) { qpsk_demod(rx_syms[s], dibit); rx_bits[2 * s] = dibit[1]; rx_bits[2 * s + 1] = dibit[0]; } for (Nerrs_raw = 0, i = 0; i < Nbitsperpacket; i++) if (tx_bits[i] != rx_bits[i]) Nerrs_raw++; Terrs += Nerrs_raw; Tbits += Nbitsperpacket; if (packet_count >= Ndiscard) { Terrs2 += Nerrs_raw; Tbits2 += Nbitsperpacket; } } packet_count++; float EsNodB = ofdm_esno_est_calc(rx_syms, Npayloadsymsperpacket); SNR3kdB = ofdm_snr_from_esno(ofdm, EsNodB); sum_SNR3kdB += SNR3kdB; } /* complete packet */ frame_count++; } /* per-frame modem processing */ nin_frame = ofdm_get_nin(ofdm); ofdm_sync_state_machine(ofdm, rx_uw); /* act on any events returned by state machine */ if (!strcmp(ofdm->data_mode, "streaming") && ofdm->sync_start) { Terrs = Tbits = Terrs2 = Tbits2 = Terrs_coded = Tbits_coded = frame_count = packet_count = 0; Nerrs_raw = 0; Nerrs_coded = 0; } if (verbose >= 2) { if (ofdm->last_sync_state != search) { if ((ofdm->modem_frame == 0) && (ofdm->last_sync_state != trial)) { /* weve just received a complete packet, so print all stats */ fprintf(stderr, "euw: %2d %1d mf: %2d f: %5.1f pbw: %d eraw: %3d ecdd: %3d " "iter: %3d pcc: %3d snr: %5.2f\n", ofdm->uw_errors, ofdm->sync_counter, ofdm->modem_frame, ofdm->foff_est_hz, ofdm->phase_est_bandwidth, Nerrs_raw, Nerrs_coded, iter, parityCheckCount, SNR3kdB); } else { /* weve just received a modem frame, abbreviated stats */ fprintf(stderr, "euw: %2d %1d mf: %2d f: %5.1f pbw: %d\n", ofdm->uw_errors, ofdm->sync_counter, ofdm->modem_frame, ofdm->foff_est_hz, ofdm->phase_est_bandwidth); } } /* detect a successful sync for time to sync tests */ if ((time_to_sync < 0) && ((ofdm->sync_state == synced) || (ofdm->sync_state == trial))) if ((parityCheckCount > 80) && (iter != 100)) time_to_sync = (float)(f + 1) * ofdm_get_samples_per_frame(ofdm) / FS; } /* optional logging of states */ if (log_active == true) { /* note corrected phase (rx no phase) is one big linear array for frame */ for (i = 0; i < ofdm_rowsperframe * ofdm_config->nc; i++) { rx_np_log[ofdm_rowsperframe * ofdm_config->nc * f + i].real = crealf(ofdm->rx_np[i]); rx_np_log[ofdm_rowsperframe * ofdm_config->nc * f + i].imag = cimagf(ofdm->rx_np[i]); } /* note phase/amp ests the same for each col, but check them all anyway */ for (i = 0; i < ofdm_rowsperframe; i++) { for (j = 0; j < ofdm_config->nc; j++) { phase_est_pilot_log[ofdm_rowsperframe * f + i][j] = ofdm->aphase_est_pilot_log[ofdm_config->nc * i + j]; rx_amp_log[ofdm_rowsperframe * ofdm_config->nc * f + ofdm_config->nc * i + j] = ofdm->rx_amp[ofdm_config->nc * i + j]; } } foff_hz_log[f] = ofdm->foff_est_hz; timing_est_log[f] = ofdm->timing_est + 1; /* offset by 1 to match Octave */ if (log_payload_syms == true) { for (i = 0; i < Npayloadsymsperpacket; i++) { payload_syms_log[f][i].real = payload_syms[i].real; payload_syms_log[f][i].imag = payload_syms[i].imag; payload_amps_log[f][i] = payload_amps[i]; } } if (f == (logframes - 1)) log_active = false; } if (len_secs != 0.0) { float secs = (float)f * ofdm_get_samples_per_frame(ofdm) / FS; if (secs >= len_secs) finish = 1; } if (skip_secs != 0.0) { /* big nasty timing error */ float secs = (float)f * ofdm_get_samples_per_frame(ofdm) / FS; if (secs >= skip_secs) { assert(fread(rx_scaled, sizeof(short), nin_frame / 2, fin) == nin_frame / 2); fprintf(stderr, " Skip! Just introduced a nasty big timing slip\n"); skip_secs = 0.0; /* make sure we just introduce one error */ } } f++; } if (input_specified == true) fclose(fin); if (output_specified == true) fclose(fout); /* optionally dump Octave files */ if (log_specified == true) { octave_save_float(foct, "phase_est_pilot_log_c", (float *)phase_est_pilot_log, ofdm_rowsperframe * NFRAMES, ofdm_config->nc, ofdm_config->nc); octave_save_complex(foct, "rx_np_log_c", (COMP *)rx_np_log, 1, ofdm_rowsperframe * ofdm_config->nc * NFRAMES, ofdm_rowsperframe * ofdm_config->nc * NFRAMES); octave_save_float(foct, "rx_amp_log_c", (float *)rx_amp_log, 1, ofdm_rowsperframe * ofdm_config->nc * NFRAMES, ofdm_rowsperframe * ofdm_config->nc * NFRAMES); octave_save_float(foct, "foff_hz_log_c", foff_hz_log, NFRAMES, 1, 1); octave_save_int(foct, "timing_est_log_c", timing_est_log, NFRAMES, 1); octave_save_complex(foct, "payload_syms_log_c", (COMP *)payload_syms_log, NFRAMES, Npayloadsymsperpacket, Npayloadsymsperpacket); octave_save_float(foct, "payload_amps_log_c", (float *)payload_amps_log, NFRAMES, Npayloadsymsperpacket, Npayloadsymsperpacket); fclose(foct); } if ((strlen(ofdm->data_mode) == 0) && (verbose == 2)) fprintf(stderr, "time_to_sync: %f\n", time_to_sync); int ret = 0; if (testframes == true) { float uncoded_ber = (float)Terrs / Tbits; float coded_ber = 0.0; if (verbose != 0) { fprintf(stderr, "BER......: %5.4f Tbits: %5d Terrs: %5d Tpackets: %5d SNR3kdB: " "%5.2f\n", uncoded_ber, Tbits, Terrs, packet_count, sum_SNR3kdB / packet_count); if ((ldpc_en == 0) && (packet_count > Ndiscard)) { fprintf(stderr, "BER2.....: %5.4f Tbits: %5d Terrs: %5d\n", (float)Terrs2 / Tbits2, Tbits2, Terrs2); } } /* set return code for Ctest, 1 for fail */ if (ldpc_en) { coded_ber = (float)Terrs_coded / Tbits_coded; if (verbose != 0) { fprintf(stderr, "Coded BER: %5.4f Tbits: %5d Terrs: %5d\n", coded_ber, Tbits_coded, Terrs_coded); fprintf(stderr, "Coded PER: %5.4f Tpkts: %5d Tpers: %5d Thruput: %5d\n", (float)Tper / packet_count, packet_count, Tper, packet_count - Tper); } if ((Tbits_coded == 0) || (coded_ber >= 0.01f)) ret = 1; } if ((Tbits == 0) || (uncoded_ber >= 0.1f)) ret = 1; } if (strlen(ofdm->data_mode)) { fprintf(stderr, "Npre.....: %6d Npost: %5d uw_fails: %2d\n", ofdm->pre, ofdm->post, ofdm->uw_fails); } ofdm_destroy(ofdm); return ret; } codec2-1.2.0/src/ofdm_get_test_bits.c000066400000000000000000000102771445607075400174730ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: ofdm_get_test_bits.c AUTHOR......: David Rowe DATE CREATED: Mar 2018 Generate input for the OFDM modem in either coded or uncoded mode. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2018 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #define OPTPARSE_IMPLEMENTATION #define OPTPARSE_API static #include #include #include #include #include #include #include "codec2_ofdm.h" #include "interldpc.h" #include "ldpc_codes.h" #include "ofdm_internal.h" #include "optparse.h" #include "varicode.h" #define IS_DIR_SEPARATOR(c) ((c) == '/') static const char *progname; void opt_help() { fprintf(stderr, "\nUsage: %s [options]\n\n", progname); fprintf(stderr, " --out filename Name of OutputOneCharPerBitFile\n"); fprintf(stderr, " --frames n Number of frames to output (default 10)\n"); fprintf(stderr, " --length n Frame length in bits (default 238)\n"); fprintf(stderr, " --bcb Insert burst control byte at the start of " "each frame (FSK_LDPC testing)\n"); fprintf( stderr, " --verbose Output variable assigned values to stderr\n\n"); exit(-1); } int main(int argc, char *argv[]) { FILE *fout; char *fout_name = NULL; int opt, verbose, n; int Nframes, output_specified, bcb_en; int Ndatabitsperpacket; uint8_t burst_control; char *pn = argv[0] + strlen(argv[0]); while (pn != argv[0] && !IS_DIR_SEPARATOR(pn[-1])) --pn; progname = pn; /* Turn off stream buffering */ setvbuf(stdout, NULL, _IONBF, BUFSIZ); fout = stdout; output_specified = 0; Nframes = 10; Ndatabitsperpacket = 224; verbose = 0; bcb_en = 0; struct optparse options; struct optparse_long longopts[] = { {"bcb", 'b', OPTPARSE_NONE}, {"out", 'o', OPTPARSE_REQUIRED}, {"frames", 'n', OPTPARSE_REQUIRED}, {"length", 'l', OPTPARSE_REQUIRED}, {"verbose", 'v', OPTPARSE_NONE}, {0, 0, 0}}; optparse_init(&options, argv); while ((opt = optparse_long(&options, longopts, NULL)) != -1) { switch (opt) { case '?': opt_help(); case 'b': bcb_en = 1; break; case 'o': fout_name = options.optarg; output_specified = 1; break; case 'n': Nframes = atoi(options.optarg); break; case 'l': Ndatabitsperpacket = atoi(options.optarg); break; case 'v': verbose = 1; } } /* Print remaining arguments to give user a hint */ char *arg; while ((arg = optparse_arg(&options))) fprintf(stderr, "%s\n", arg); if (output_specified) { if ((fout = fopen(fout_name, "wb")) == NULL) { fprintf(stderr, "Error opening output bit file: %s\n", fout_name); exit(-1); } } if (verbose) fprintf(stderr, "Nframes: %d Ndatabitsperframe: %d bcb: %d\n", Nframes, Ndatabitsperpacket, bcb_en); uint8_t data_bits[Ndatabitsperpacket]; ofdm_generate_payload_data_bits(data_bits, Ndatabitsperpacket); burst_control = 1; for (n = 0; n < Nframes; n++) { if (bcb_en) fwrite(&burst_control, 1, 1, fout); fwrite(data_bits, sizeof(char), Ndatabitsperpacket, fout); burst_control = 0; } if (bcb_en) { // dummy end frame just to signal end of burst burst_control = 2; fwrite(&burst_control, 1, 1, fout); memset(data_bits, 0, Ndatabitsperpacket); fwrite(data_bits, sizeof(char), Ndatabitsperpacket, fout); } if (output_specified) fclose(fout); return 0; } codec2-1.2.0/src/ofdm_internal.h000066400000000000000000000227121445607075400164520ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: ofdm_internal.h AUTHORS.....: David Rowe & Steve Sampson DATE CREATED: June 2017 OFDM Internal definitions. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2017 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef OFDM_INTERNAL_H #define OFDM_INTERNAL_H #include #include #include #include #include "codec2_ofdm.h" #include "filter.h" #ifdef __cplusplus extern "C" { #endif #ifndef M_PI #define M_PI 3.14159265358979323846f #endif #define TAU (2.0f * M_PI) #define ROT45 (M_PI / 4.0f) #define MAX_UW_BITS 64 #define cmplx(value) (cosf(value) + sinf(value) * I) #define cmplxconj(value) (cosf(value) + sinf(value) * -I) /* modem state machine states */ typedef enum { search, trial, synced } State; typedef enum { unsync, /* force sync state machine to lose sync, and search for new sync */ autosync, /* falls out of sync automatically */ manualsync /* fall out of sync only under operator control */ } Sync; /* phase estimator bandwidth options */ typedef enum { low_bw, /* can only track a narrow freq offset, but accurate */ high_bw /* can track wider freq offset, but less accurate at low SNR */ } PhaseEstBandwidth; /* * User-defined configuration for OFDM modem. Used to set up * constants at init time, e.g. for different bit rate modems. */ struct OFDM_CONFIG { float tx_centre; /* TX Centre Audio Frequency */ float rx_centre; /* RX Centre Audio Frequency */ float fs; /* Sample Frequency */ float rs; /* Symbol Rate */ float ts; /* symbol duration */ float tcp; /* Cyclic Prefix duration */ float timing_mx_thresh; int nc; /* Number of carriers */ int ns; /* Number of Symbol frames */ int np; /* number of modem frames per packet */ int bps; /* Bits per Symbol */ int txtbits; /* number of auxiliary data bits */ int nuwbits; /* number of unique word bits */ int bad_uw_errors; int ftwindowwidth; int edge_pilots; char *state_machine; /* name of sync state machine used for this mode */ char *codename; /* name of LDPC code used with this mode */ uint8_t tx_uw[MAX_UW_BITS]; /* user defined unique word */ int amp_est_mode; bool tx_bpf_en; /* default tx (mod) hilbert clipper BPF enable */ bool rx_bpf_en; /* default rx (demod) input BPF enable */ bool foff_limiter; /* tames freq offset updates in low SNR */ float amp_scale; /* used to scale Tx waveform to approx FREEDV_PEAK with clipper off */ float clip_gain1; /* gain we apply to Tx signal before clipping to control PAPR*/ float clip_gain2; /* gain we apply to Tx signal after clipping and BBF to control peak level */ bool clip_en; char mode[16]; /* OFDM mode in string form */ char *data_mode; float fmin; float fmax; }; struct OFDM { struct OFDM_CONFIG config; char mode[16]; /* mode in string form */ /* * See 700D Part 4 Acquisition blog post and ofdm_dev.m routines * for how this was set */ float timing_mx_thresh; int nc; int ns; /* NS-1 = data symbols between pilots */ int bps; /* Bits per symbol */ int m; /* duration of each symbol in samples */ int ncp; /* duration of CP in samples */ int np; /* number of modem frames per packet. In some modes we want */ /* the total packet of data to span multiple modem frames, e.g. HF data */ /* and/or when the FEC codeword is larger than the one */ /* modem frame. In other modes (e.g. 700D/2020) Np=1, ie the modem frame */ /* is the same length as the packet/FEC frame. */ int ftwindowwidth; int bitsperframe; /* total bits in all data symbols in modem frame */ int bitsperpacket; /* total bits in all data symbols in a packet */ int rowsperframe; int samplespersymbol; int samplesperframe; int nrxbufhistory; /* extra storage at start of rxbuf to allow us to step back in time */ int nrxbufmin; /* min number of samples we need in rxbuf to process a modem frame */ int rxbufst; /* start of rxbuf window used for demod of current rx frame */ int pre, post; /* pre-amble and post-amble detections */ int max_samplesperframe; int nuwframes; int nrxbuf; int ntxtbits; /* reserve bits/frame for aux text information */ int nuwbits; /* number of unique word bits used to achieve packet frame sync */ int bad_uw_errors; /* threshold for UW detection check */ int uw_fails; /* number of times we exceeded bad_uw_errors and dropped sync */ int edge_pilots; /* insert pilots at 1 and Nc+2, to support low bandwidth phase est */ char *data_mode; /* "", "streaming", "burst" */ int packetsperburst; /* for OFDM data modes, how many packets before we reset state machine */ int amp_est_mode; /* amplitude estimtor algorithm */ float amp_scale; float clip_gain1; float clip_gain2; bool clip_en; float tx_centre; /* TX Center frequency */ float rx_centre; /* RX Center frequency */ float fs; /* Sample rate */ float ts; /* Symbol cycle time */ float rs; /* Symbol rate */ float tcp; /* Cyclic prefix duration */ float tpacket; /* time for one packet in ms */ float inv_m; /* 1/m */ float tx_nlower; /* TX lowest carrier freq */ float rx_nlower; /* RX lowest carrier freq */ float doc; /* division of radian circle */ float fmin; float fmax; // Pointers struct quisk_cfFilter *tx_bpf; struct quisk_cfFilter *rx_bpf; complex float *pilot_samples; complex float *rxbuf; complex float *pilots; complex float **rx_sym; complex float *rx_np; complex float *tx_uw_syms; COMP *tx_preamble; COMP *tx_postamble; float *rx_amp; float *aphase_est_pilot_log; uint8_t tx_uw[MAX_UW_BITS]; int *uw_ind; int *uw_ind_sym; // State enums State sync_state; State last_sync_state; // Sync enums Sync sync_mode; // Phase enums PhaseEstBandwidth phase_est_bandwidth; int phase_est_bandwidth_mode; // Complex complex float foff_metric; // Float float foff_est_gain; bool foff_limiter; float foff_est_hz; float timing_mx; float coarse_foff_est_hz; float timing_norm; float mean_amp; // Integer int clock_offset_counter; int verbose; int sample_point; int timing_est; int timing_valid; int ct_est; int nin; int uw_errors; int sync_counter; int frame_count; /* general purpose counter of modem frames */ int packet_count; /* data mode: number of packets received so far */ int modem_frame; /* increments for every modem frame in packet */ // Boolean bool sync_start; bool sync_end; bool timing_en; bool foff_est_en; bool phase_est_en; bool tx_bpf_en; bool rx_bpf_en; bool dpsk_en; bool postambledetectoren; /* allows us to optionally disable the postamble detector */ char *codename; char *state_machine; }; /* Prototypes */ complex float qpsk_mod(int *); complex float qam16_mod(int *); void qpsk_demod(complex float, int *); void qam16_demod(complex float, int *); void ofdm_txframe(struct OFDM *, complex float *, complex float[]); void ofdm_assemble_qpsk_modem_packet(struct OFDM *, uint8_t[], uint8_t[], uint8_t[]); void ofdm_assemble_qpsk_modem_packet_symbols(struct OFDM *, complex float[], COMP[], uint8_t[]); void ofdm_disassemble_qpsk_modem_packet(struct OFDM *, complex float rx_syms[], float rx_amps[], COMP[], float[], short[]); void ofdm_disassemble_qpsk_modem_packet_with_text_amps(struct OFDM *, complex float rx_syms[], float rx_amps[], COMP[], float[], short[], int *); void ofdm_extract_uw(struct OFDM *ofdm, complex float rx_syms[], float rx_amps[], uint8_t rx_uw[]); void ofdm_rand(uint16_t[], int); void ofdm_rand_seed(uint16_t r[], int n, uint64_t seed); void ofdm_generate_payload_data_bits(uint8_t data_bits[], int n); void ofdm_generate_preamble(struct OFDM *ofdm, COMP *tx_preamble, int seed); int ofdm_get_phase_est_bandwidth_mode(struct OFDM *); void ofdm_set_phase_est_bandwidth_mode(struct OFDM *, int); void ofdm_clip(complex float tx[], float clip_thresh, int n); void ofdm_hilbert_clipper(struct OFDM *ofdm, complex float *tx, size_t n); float ofdm_esno_est_calc(complex float *rx_sym, int nsym); float ofdm_snr_from_esno(struct OFDM *ofdm, float EsNodB); void ofdm_get_demod_stats(struct OFDM *ofdm, struct MODEM_STATS *stats, complex float *rx_syms, int Nsymsperpacket); #ifdef __cplusplus } #endif #endif codec2-1.2.0/src/ofdm_mod.c000066400000000000000000000335001445607075400154050ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: ofdm_mod.c AUTHOR......: David Rowe DATE CREATED: March 2018 Given an input file of bits (note one bit per char format), outputs a raw file (8kHz, 16 bit shorts) of OFDM modem samples ready to send over a HF radio channel. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2018 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #define OPTPARSE_IMPLEMENTATION #define OPTPARSE_API static #include #include #include #include #include #include "codec2_ofdm.h" #include "gp_interleaver.h" #include "interldpc.h" #include "ldpc_codes.h" #include "ofdm_internal.h" #include "optparse.h" #include "varicode.h" #define IS_DIR_SEPARATOR(c) ((c) == '/') static const char *progname; void opt_help() { fprintf(stderr, "\nusage: %s [options]\n\n", progname); fprintf(stderr, " --in filename Name of InputOneCharPerBitFile\n"); fprintf(stderr, " --out filename Name of OutputModemRawFile\n"); fprintf(stderr, " --mode modeName Predefined mode 700D|700E|2020|2020B|datac0 " "... etc\n"); fprintf(stderr, " --nc [17..62] Number of Carriers (17 default, 62 max)\n"); fprintf(stderr, " --ns symbols One pilot every ns symbols (8 default)\n"); fprintf(stderr, " --tcp Nsecs Cyclic Prefix Duration (.002 default)\n"); fprintf(stderr, " --ts Nsecs Symbol Duration (.018 default)\n"); fprintf(stderr, " --testframes Nsecs Transmit test frames for Nsec (--testframes " "NpacketsPerBurst in burst mode)\n"); fprintf(stderr, " --tx_freq freq Set an optional modulation TX centre " "frequency (1500.0 default)\n"); fprintf(stderr, " --rx_freq freq Set an optional modulation RX centre " "frequency (1500.0 default)\n\n"); fprintf( stderr, " --verbose [1|2|3] Verbose output level to stderr (default off)\n"); fprintf( stderr, " --txbpf Transmit band pass filter on (default off)\n"); fprintf(stderr, " --clip Transmit clipper (default off)\n"); fprintf(stderr, " --text Include a standard text message boolean " "(default off)\n"); fprintf(stderr, " -i --ldpc [1|2] Run LDPC decoder (1 -> (224,112) 700D code, " "2 -> (504,396) 2020 code).\n" " In testframe mode raw and coded errors will " "be counted.\n"); fprintf( stderr, " --bursts nBursts Burst mode: Send nBursts of testframes each\n"); fprintf(stderr, "\n"); exit(-1); } int main(int argc, char *argv[]) { char *fin_name, *fout_name; int i, opt, val; char *pn = argv[0] + strlen(argv[0]); while (pn != argv[0] && !IS_DIR_SEPARATOR(pn[-1])) --pn; progname = pn; /* Turn off stream buffering */ setvbuf(stdin, NULL, _IONBF, BUFSIZ); setvbuf(stdout, NULL, _IONBF, BUFSIZ); FILE *fin = stdin; FILE *fout = stdout; /* set for LDPC coded or uncoded frames */ int ldpc_en = 0; int input_specified = 0; int output_specified = 0; int verbose = 0; bool clip_en = false; int txbpf_en = 0; int testframes = 0; int use_text = 0; int Npackets = 0; int Nsec = 0; int burst_mode = 0; int Nbursts = 1; /* set up the default modem config */ struct OFDM_CONFIG *ofdm_config = (struct OFDM_CONFIG *)calloc(1, sizeof(struct OFDM_CONFIG)); assert(ofdm_config != NULL); char mode[32] = "700D"; ofdm_init_mode(mode, ofdm_config); int Ndatabitsperpacket = 0; struct optparse options; struct optparse_long longopts[] = {{"in", 'a', OPTPARSE_REQUIRED}, {"out", 'b', OPTPARSE_REQUIRED}, {"nc", 'c', OPTPARSE_REQUIRED}, {"ns", 'm', OPTPARSE_REQUIRED}, {"tcp", 'd', OPTPARSE_REQUIRED}, {"ts", 'e', OPTPARSE_REQUIRED}, {"testframes", 'f', OPTPARSE_REQUIRED}, {"tx_freq", 'n', OPTPARSE_REQUIRED}, {"rx_freq", 'i', OPTPARSE_REQUIRED}, {"ldpc", 'j', OPTPARSE_NONE}, {"txbpf", 'k', OPTPARSE_NONE}, {"clip", 'r', OPTPARSE_NONE}, {"text", 'l', OPTPARSE_NONE}, {"verbose", 'v', OPTPARSE_REQUIRED}, {"mode", 'g', OPTPARSE_REQUIRED}, {"help", 'h', OPTPARSE_NONE}, {"bursts", 'o', OPTPARSE_REQUIRED}, {0, 0, 0}}; optparse_init(&options, argv); while ((opt = optparse_long(&options, longopts, NULL)) != -1) { switch (opt) { case '?': case 'h': opt_help(); case 'a': fin_name = options.optarg; input_specified = 1; break; case 'b': fout_name = options.optarg; output_specified = 1; break; case 'c': val = atoi(options.optarg); if (val > 62 || val < 17) { opt_help(); } else { ofdm_config->nc = val; } break; case 'd': ofdm_config->tcp = atof(options.optarg); break; case 'e': ofdm_config->ts = atof(options.optarg); ofdm_config->rs = 1.0f / ofdm_config->ts; break; case 'm': ofdm_config->ns = atoi(options.optarg); break; case 'f': testframes = 1; Nsec = atoi(options.optarg); break; case 'g': strcpy(mode, options.optarg); ofdm_init_mode(mode, ofdm_config); break; case 'n': ofdm_config->tx_centre = atof(options.optarg); break; case 'o': burst_mode = 1; Nbursts = atoi(options.optarg); fprintf(stderr, "bursts: %d\n", Nbursts); break; case 'i': ofdm_config->rx_centre = atof(options.optarg); break; case 'j': ldpc_en = 1; break; case 'k': txbpf_en = 1; break; case 'l': use_text = 1; break; case 'r': clip_en = true; break; case 'v': verbose = atoi(options.optarg); if (verbose < 0 || verbose > 3) verbose = 0; } } /* Print remaining arguments to give user a hint */ char *arg; while ((arg = optparse_arg(&options))) fprintf(stderr, "%s\n", arg); if (input_specified) { if ((fin = fopen(fin_name, "rb")) == NULL) { fprintf(stderr, "Error opening input bits file: %s\n", fin_name); exit(-1); } } if (output_specified) { if ((fout = fopen(fout_name, "wb")) == NULL) { fprintf(stderr, "Error opening output modem sample file: %s\n", fout_name); exit(-1); } } /* init the modem with our (optionally) custom config */ struct OFDM *ofdm = ofdm_create(ofdm_config); assert(ofdm != NULL); free(ofdm_config); /* Get a copy of the completed modem config (ofdm_create() fills in more * parameters) */ ofdm_config = ofdm_get_config_param(ofdm); /* set up some useful constants */ int Nbitsperpacket = ofdm_get_bits_per_packet(ofdm); int Npayloadbitsperpacket = Nbitsperpacket - ofdm->nuwbits - ofdm->ntxtbits; int Nsamperpacket = ofdm_get_samples_per_packet(ofdm); /* Set up LPDC code */ struct LDPC ldpc; if (ldpc_en) { ldpc_codes_setup(&ldpc, ofdm->codename); ldpc_mode_specific_setup(ofdm, &ldpc); Ndatabitsperpacket = ldpc.data_bits_per_frame; if (verbose > 1) { fprintf(stderr, "using: %s\n", ofdm->codename); fprintf(stderr, "LDPC codeword data bits = %d\n", ldpc.ldpc_data_bits_per_frame); fprintf(stderr, "LDPC codeword total bits = %d\n", ldpc.ldpc_coded_bits_per_frame); fprintf(stderr, "LDPC codeword data bits used = %d\n", Ndatabitsperpacket); fprintf(stderr, "LDPC codeword total length in modem packet = %d\n", Npayloadbitsperpacket); } } else { Ndatabitsperpacket = Npayloadbitsperpacket; } if (verbose) { ofdm_set_verbose(ofdm, verbose); fprintf( stderr, "Ndatabitsperpacket: %d Npayloadbitsperpacket: %d Nsamperpacket: %d\n", Ndatabitsperpacket, Npayloadbitsperpacket, Nsamperpacket); } if (testframes) { if (burst_mode) Npackets = Nsec; // burst mode: treat Nsecs as Npackets/burst else Npackets = round(Nsec / ofdm->tpacket); // streaming mode if (verbose) fprintf(stderr, "Npackets: %d\n", Npackets); } if (clip_en) { ofdm->clip_en = true; } if (txbpf_en) { ofdm_set_tx_bpf(ofdm, 1); } uint8_t txt_bits[ofdm->ntxtbits]; memset(txt_bits, 0, ofdm->ntxtbits); char text_str[] = "cq cq cq hello world\r"; // Add text bits to match other tests char *ptr_text = text_str; short tx_varicode_bits[VARICODE_MAX_BITS]; int nvaricode_bits = 0; int varicode_bit_index = 0; complex float tx_sams[Nsamperpacket]; short tx_real[Nsamperpacket]; if (verbose > 1) ofdm_print_info(ofdm); for (int b = 0; b < Nbursts; b++) { if (burst_mode) { fprintf(stderr, "Tx preamble\n"); complex float tx_preamble[ofdm->samplesperframe]; memcpy(tx_preamble, ofdm->tx_preamble, sizeof(COMP) * ofdm->samplesperframe); ofdm_hilbert_clipper(ofdm, tx_preamble, ofdm->samplesperframe); for (i = 0; i < ofdm->samplesperframe; i++) tx_real[i] = crealf(tx_preamble[i]); fwrite(tx_real, sizeof(short), ofdm->samplesperframe, fout); } /* main loop * ----------------------------------------------------------------*/ int packet = 0; uint8_t data_bits[Ndatabitsperpacket]; while (fread(data_bits, sizeof(uint8_t), Ndatabitsperpacket, fin) == Ndatabitsperpacket) { if (ldpc_en) { /* fancy LDPC encoded frames ----------------------------*/ /* optionally overwrite input data with test frame of payload data bits known to demodulator */ if (testframes) { if (use_text) { // Get text bits int nspare = ofdm->ntxtbits; int k; for (k = 0; k < nspare; k++) { if (nvaricode_bits) { txt_bits[k] = tx_varicode_bits[varicode_bit_index++]; nvaricode_bits--; } if (nvaricode_bits == 0) { /* get new char and encode */ char s[2]; s[0] = *ptr_text++; if (*ptr_text == 0) ptr_text = &text_str[0]; nvaricode_bits = varicode_encode(tx_varicode_bits, s, VARICODE_MAX_BITS, 1, 1); varicode_bit_index = 0; } } } ofdm_generate_payload_data_bits(data_bits, Ndatabitsperpacket); } ofdm_ldpc_interleave_tx(ofdm, &ldpc, tx_sams, data_bits, txt_bits); for (i = 0; i < Nsamperpacket; i++) tx_real[i] = crealf(tx_sams[i]); } else { /* just modulate uncoded raw bits ------------------------------------*/ /* in uncoded mode entire payload is input data bits */ assert(Ndatabitsperpacket == Npayloadbitsperpacket); if (testframes) { /* build up a test frame consisting of unique word, txt bits, and psuedo-random uncoded payload bits. The psuedo-random generator is the same as Octave so it can interoperate with ofdm_tx.m/ofdm_rx.m */ ofdm_generate_payload_data_bits(data_bits, Npayloadbitsperpacket); } /* assemble packet of bits then modulate */ uint8_t tx_bits_char[Nbitsperpacket]; ofdm_assemble_qpsk_modem_packet(ofdm, tx_bits_char, data_bits, txt_bits); int tx_bits[Nbitsperpacket]; for (i = 0; i < Nbitsperpacket; i++) tx_bits[i] = tx_bits_char[i]; COMP tx_sams[Nsamperpacket]; ofdm_mod(ofdm, tx_sams, tx_bits); for (i = 0; i < Nsamperpacket; i++) tx_real[i] = tx_sams[i].real; } fwrite(tx_real, sizeof(short), Nsamperpacket, fout); packet++; if (testframes && (packet >= Npackets)) break; } if (burst_mode) { // Post-amble fprintf(stderr, "Tx postamble\n"); complex float tx_postamble[ofdm->samplesperframe]; memcpy(tx_postamble, ofdm->tx_postamble, sizeof(COMP) * ofdm->samplesperframe); ofdm_hilbert_clipper(ofdm, tx_postamble, ofdm->samplesperframe); for (i = 0; i < ofdm->samplesperframe; i++) tx_real[i] = crealf(tx_postamble[i]); fwrite(tx_real, sizeof(short), ofdm->samplesperframe, fout); // Interburst silence int samples_delay = ofdm->fs; short sil_short[samples_delay]; for (int i = 0; i < samples_delay; i++) sil_short[i] = 0; fwrite(sil_short, sizeof(short), samples_delay, fout); } } if (input_specified) fclose(fin); if (output_specified) fclose(fout); ofdm_destroy(ofdm); return 0; } codec2-1.2.0/src/ofdm_mode.c000066400000000000000000000163131445607075400155550ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: ofdm_mode.c AUTHORS.....: David Rowe & Steve Sampson DATE CREATED: July 2020 Mode specific configuration for OFDM modem. \*---------------------------------------------------------------------------*/ #include #include #include "codec2_ofdm.h" #include "ofdm_internal.h" void ofdm_init_mode(char mode[], struct OFDM_CONFIG *config) { assert(mode != NULL); assert(config != NULL); assert(strlen(mode) < 16); strcpy(config->mode, mode); /* Fill in default values - 700D */ config->nc = 17; /* Number of carriers */ config->np = 1; config->ns = 8; /* Number of Symbols per modem frame */ config->ts = 0.018f; config->tcp = .002f; /* Cyclic Prefix duration */ config->tx_centre = 1500.0f; /* TX Carrier Frequency */ config->rx_centre = 1500.0f; /* RX Carrier Frequency */ config->fs = 8000.0f; /* Sample rate */ config->txtbits = 4; config->bps = 2; /* Bits per Symbol */ config->nuwbits = 5 * config->bps; /* default is 5 symbols of Unique Word bits */ config->bad_uw_errors = 3; config->ftwindowwidth = 32; config->timing_mx_thresh = 0.30f; config->edge_pilots = 1; config->state_machine = "voice1"; config->data_mode = ""; config->codename = "HRA_112_112"; config->clip_gain1 = 2.5; config->clip_gain2 = 0.8; config->clip_en = true; config->tx_bpf_en = true; config->rx_bpf_en = false; config->amp_scale = 245E3; config->foff_limiter = false; memset(config->tx_uw, 0, MAX_UW_BITS); if (strcmp(mode, "700D") == 0) { } else if (strcmp(mode, "700E") == 0) { config->ts = 0.014; config->tcp = 0.006; config->nc = 21; config->ns = 4; config->edge_pilots = 0; config->nuwbits = 12; config->bad_uw_errors = 3; config->txtbits = 2; config->state_machine = "voice2"; config->amp_est_mode = 1; config->ftwindowwidth = 80; config->codename = "HRA_56_56"; config->foff_limiter = true; config->amp_scale = 155E3; config->clip_gain1 = 3; config->clip_gain2 = 0.8; } else if ((strcmp(mode, "2020") == 0)) { config->ts = 0.0205; config->nc = 31; config->codename = "HRAb_396_504"; config->amp_scale = 167E3; config->clip_gain1 = 2.5; config->clip_gain2 = 0.8; } else if (strcmp(mode, "2020B") == 0) { config->ts = 0.014; config->tcp = 0.004; config->nc = 29; config->ns = 5; config->codename = "HRA_56_56"; config->txtbits = 4; config->nuwbits = 8 * 2; config->bad_uw_errors = 5; config->amp_scale = 130E3; config->clip_gain1 = 2.5; config->clip_gain2 = 0.8; config->edge_pilots = 0; config->state_machine = "voice2"; config->ftwindowwidth = 64; config->foff_limiter = true; } else if (strcmp(mode, "qam16") == 0) { /* not in use yet */ config->ns = 5; config->np = 5; config->tcp = 0.004; config->ts = 0.016; config->nc = 33; config->bps = 4; config->txtbits = 0; config->nuwbits = 15 * 4; config->bad_uw_errors = 5; config->ftwindowwidth = 32; config->state_machine = "data"; config->amp_est_mode = 1; config->tx_bpf_en = false; config->clip_en = false; config->data_mode = "streaming"; } else if (strcmp(mode, "datac0") == 0) { config->ns = 5; config->np = 4; config->tcp = 0.006; config->ts = 0.016; config->nc = 9; config->edge_pilots = 0; config->txtbits = 0; config->nuwbits = 32; config->bad_uw_errors = 9; config->state_machine = "data"; config->amp_est_mode = 1; config->ftwindowwidth = 80; config->codename = "H_128_256_5"; uint8_t uw[] = {1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0}; memcpy(config->tx_uw, uw, sizeof(uw)); config->timing_mx_thresh = 0.08f; config->data_mode = "streaming"; config->amp_scale = 300E3; config->clip_gain1 = 2.2; config->clip_gain2 = 0.85; } else if (strcmp(mode, "datac1") == 0) { config->ns = 5; config->np = 38; config->tcp = 0.006; config->ts = 0.016; config->nc = 27; config->edge_pilots = 0; config->txtbits = 0; config->nuwbits = 16; config->bad_uw_errors = 6; config->state_machine = "data"; config->amp_est_mode = 1; config->ftwindowwidth = 80; config->codename = "H_4096_8192_3d"; uint8_t uw[] = {1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0}; assert(sizeof(uw) == config->nuwbits); memcpy(config->tx_uw, uw, config->nuwbits); config->timing_mx_thresh = 0.10f; config->data_mode = "streaming"; config->amp_scale = 145E3; config->clip_gain1 = 2.7; config->clip_gain2 = 0.8; } else if (strcmp(mode, "datac3") == 0) { config->ns = 5; config->np = 29; config->tcp = 0.006; config->ts = 0.016; config->nc = 9; config->edge_pilots = 0; config->txtbits = 0; config->state_machine = "data"; config->ftwindowwidth = 80; config->timing_mx_thresh = 0.10; config->codename = "H_1024_2048_4f"; config->amp_est_mode = 1; config->nuwbits = 40; config->bad_uw_errors = 10; uint8_t uw[] = {1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0}; assert(sizeof(uw) <= MAX_UW_BITS); memcpy(config->tx_uw, uw, sizeof(uw)); memcpy(&config->tx_uw[config->nuwbits - sizeof(uw)], uw, sizeof(uw)); config->data_mode = "streaming"; config->amp_scale = 300E3; config->clip_gain1 = 2.2; config->clip_gain2 = 0.8; } else if (strcmp(mode, "datac4") == 0) { config->ns = 5; config->np = 47; config->tcp = 0.006; config->ts = 0.016; config->nc = 4; config->edge_pilots = 0; config->txtbits = 0; config->state_machine = "data"; config->ftwindowwidth = 80; config->timing_mx_thresh = 0.5; config->codename = "H_1024_2048_4f"; config->amp_est_mode = 1; config->nuwbits = 32; config->bad_uw_errors = 12; uint8_t uw[] = {1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0}; assert(sizeof(uw) <= MAX_UW_BITS); memcpy(config->tx_uw, uw, sizeof(uw)); memcpy(&config->tx_uw[config->nuwbits - sizeof(uw)], uw, sizeof(uw)); config->data_mode = "streaming"; config->amp_scale = 2 * 300E3; config->clip_gain1 = 1.2; config->clip_gain2 = 1.0; config->rx_bpf_en = true; } else if (strcmp(mode, "datac13") == 0) { config->ns = 5; config->np = 18; config->tcp = 0.006; config->ts = 0.016; config->nc = 3; config->edge_pilots = 0; config->txtbits = 0; config->state_machine = "data"; config->ftwindowwidth = 80; config->timing_mx_thresh = 0.45; config->codename = "H_256_512_4"; config->amp_est_mode = 1; config->nuwbits = 48; config->bad_uw_errors = 18; uint8_t uw[] = {1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0}; assert(sizeof(uw) <= MAX_UW_BITS); memcpy(config->tx_uw, uw, sizeof(uw)); memcpy(&config->tx_uw[config->nuwbits - sizeof(uw)], uw, sizeof(uw)); config->data_mode = "streaming"; config->amp_scale = 2.5 * 300E3; config->clip_gain1 = 1.2; config->clip_gain2 = 1.0; config->rx_bpf_en = true; } else { assert(0); } config->rs = 1.0f / config->ts; } codec2-1.2.0/src/ofdm_put_test_bits.c000066400000000000000000000056701445607075400175250ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: ofdm_put_test_bits.c AUTHOR......: David Rowe DATE CREATED: Mar 2018 Slurps up a stream of test bits generated by ofdm_get_test_bits, useful for testing ofdm_mod and ofdm_demod. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2018 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include "codec2_ofdm.h" #include "ofdm_internal.h" #include "test_bits_ofdm.h" #define LOG_FRAMES 100 #define NDISCARD 20 static struct OFDM *ofdm; int opt_exists(char *argv[], int argc, char opt[]) { int i; for (i = 0; i < argc; i++) { if (strcmp(argv[i], opt) == 0) { return i; } } return 0; } int main(int argc, char *argv[]) { FILE *fin; int i, f, Nerrs, Terrs, Tbits, Terrs2, Tbits2, verbose; float aber; if (argc < 2) { fprintf(stderr, "\n"); fprintf(stderr, "usage: %s InputOneCharPerBitFile [-v]\n", argv[0]); fprintf(stderr, "\n"); exit(1); } if (strcmp(argv[1], "-") == 0) fin = stdin; else if ((fin = fopen(argv[1], "rb")) == NULL) { fprintf(stderr, "Error opening input file: %s: %s.\n", argv[1], strerror(errno)); exit(1); } verbose = 0; if (opt_exists(argv, argc, "-v")) { verbose = 1; } ofdm = ofdm_create(NULL); assert(ofdm != NULL); int Nbitsperframe = ofdm_get_bits_per_frame(ofdm); char rx_bits[Nbitsperframe]; f = Terrs = Tbits = Terrs2 = Tbits2 = 0; while (fread(rx_bits, sizeof(char), Nbitsperframe, fin) == Nbitsperframe) { f++; Nerrs = 0; for (i = 0; i < Nbitsperframe; i++) { if (test_bits_ofdm[i] != rx_bits[i]) { Nerrs++; } } aber = (float)Nerrs / Nbitsperframe; Terrs += Nerrs; Tbits += Nbitsperframe; if (f >= NDISCARD) { Terrs2 += Nerrs; Tbits2 += Nbitsperframe; } if (verbose) { printf("f: %d Nerrs: %d aber: %3.2f\n", f, Nerrs, aber); } } fclose(fin); fprintf(stderr, "BER..: %5.4f Tbits: %5d Terrs: %5d\n", (float)Terrs / Tbits, Tbits, Terrs); if (Tbits2 != 0) { fprintf(stderr, "BER2.: %5.4f Tbits: %5d Terrs: %5d\n", (float)Terrs2 / Tbits2, Tbits2, Terrs2); } ofdm_destroy(ofdm); return 0; } codec2-1.2.0/src/optparse.h000066400000000000000000000261361445607075400154720ustar00rootroot00000000000000/* Optparse --- portable, reentrant, embeddable, getopt-like option parser * * This is free and unencumbered software released into the public domain. * * To get the implementation, define OPTPARSE_IMPLEMENTATION. * Optionally define OPTPARSE_API to control the API's visibility * and/or linkage (static, __attribute__, __declspec). * * The POSIX getopt() option parser has three fatal flaws. These flaws * are solved by Optparse. * * 1) Parser state is stored entirely in global variables, some of * which are static and inaccessible. This means only one thread can * use getopt(). It also means it's not possible to recursively parse * nested sub-arguments while in the middle of argument parsing. * Optparse fixes this by storing all state on a local struct. * * 2) The POSIX standard provides no way to properly reset the parser. * This means for portable code that getopt() is only good for one * run, over one argv with one option string. It also means subcommand * options cannot be processed with getopt(). Most implementations * provide a method to reset the parser, but it's not portable. * Optparse provides an optparse_arg() function for stepping over * subcommands and continuing parsing of options with another option * string. The Optparse struct itself can be passed around to * subcommand handlers for additional subcommand option parsing. A * full reset can be achieved by with an additional optparse_init(). * * 3) Error messages are printed to stderr. This can be disabled with * opterr, but the messages themselves are still inaccessible. * Optparse solves this by writing an error message in its errmsg * field. The downside to Optparse is that this error message will * always be in English rather than the current locale. * * Optparse should be familiar with anyone accustomed to getopt(), and * it could be a nearly drop-in replacement. The option string is the * same and the fields have the same names as the getopt() global * variables (optarg, optind, optopt). * * Optparse also supports GNU-style long options with optparse_long(). * The interface is slightly different and simpler than getopt_long(). * * By default, argv is permuted as it is parsed, moving non-option * arguments to the end. This can be disabled by setting the `permute` * field to 0 after initialization. */ #ifndef OPTPARSE_H #define OPTPARSE_H #ifndef OPTPARSE_API #define OPTPARSE_API #endif struct optparse { char **argv; int permute; int optind; int optopt; char *optarg; char errmsg[64]; int subopt; }; enum optparse_argtype { OPTPARSE_NONE, OPTPARSE_REQUIRED, OPTPARSE_OPTIONAL }; struct optparse_long { const char *longname; int shortname; enum optparse_argtype argtype; }; /** * Initializes the parser state. */ OPTPARSE_API void optparse_init(struct optparse *options, char **argv); /** * Read the next option in the argv array. * @param optstring a getopt()-formatted option string. * @return the next option character, -1 for done, or '?' for error * * Just like getopt(), a character followed by no colons means no * argument. One colon means the option has a required argument. Two * colons means the option takes an optional argument. */ OPTPARSE_API int optparse(struct optparse *options, const char *optstring); /** * Handles GNU-style long options in addition to getopt() options. * This works a lot like GNU's getopt_long(). The last option in * longopts must be all zeros, marking the end of the array. The * longindex argument may be NULL. */ OPTPARSE_API int optparse_long(struct optparse *options, const struct optparse_long *longopts, int *longindex); /** * Used for stepping over non-option arguments. * @return the next non-option argument, or NULL for no more arguments * * Argument parsing can continue with optparse() after using this * function. That would be used to parse the options for the * subcommand returned by optparse_arg(). This function allows you to * ignore the value of optind. */ OPTPARSE_API char *optparse_arg(struct optparse *options); /* Implementation */ #ifdef OPTPARSE_IMPLEMENTATION #define OPTPARSE_MSG_INVALID "invalid option" #define OPTPARSE_MSG_MISSING "option requires an argument" #define OPTPARSE_MSG_TOOMANY "option takes no arguments" static int optparse_error(struct optparse *options, const char *msg, const char *data) { unsigned p = 0; const char *sep = " -- '"; while (*msg) options->errmsg[p++] = *msg++; while (*sep) options->errmsg[p++] = *sep++; while (p < sizeof(options->errmsg) - 2 && *data) options->errmsg[p++] = *data++; options->errmsg[p++] = '\''; options->errmsg[p++] = '\0'; return '?'; } OPTPARSE_API void optparse_init(struct optparse *options, char **argv) { options->argv = argv; options->permute = 1; options->optind = 1; options->subopt = 0; options->optarg = 0; options->errmsg[0] = '\0'; } static int optparse_is_dashdash(const char *arg) { return arg != 0 && arg[0] == '-' && arg[1] == '-' && arg[2] == '\0'; } static int optparse_is_shortopt(const char *arg) { return arg != 0 && arg[0] == '-' && arg[1] != '-' && arg[1] != '\0'; } static int optparse_is_longopt(const char *arg) { return arg != 0 && arg[0] == '-' && arg[1] == '-' && arg[2] != '\0'; } static void optparse_permute(struct optparse *options, int index) { char *nonoption = options->argv[index]; int i; for (i = index; i < options->optind - 1; i++) options->argv[i] = options->argv[i + 1]; options->argv[options->optind - 1] = nonoption; } static int optparse_argtype(const char *optstring, char c) { int count = OPTPARSE_NONE; if (c == ':') return -1; for (; *optstring && c != *optstring; optstring++) ; if (!*optstring) return -1; if (optstring[1] == ':') count += optstring[2] == ':' ? 2 : 1; return count; } OPTPARSE_API int optparse(struct optparse *options, const char *optstring) { int type; char *next; char *option = options->argv[options->optind]; options->errmsg[0] = '\0'; options->optopt = 0; options->optarg = 0; if (option == 0) { return -1; } else if (optparse_is_dashdash(option)) { options->optind++; /* consume "--" */ return -1; } else if (!optparse_is_shortopt(option)) { if (options->permute) { int index = options->optind++; int r = optparse(options, optstring); optparse_permute(options, index); options->optind--; return r; } else { return -1; } } option += options->subopt + 1; options->optopt = option[0]; type = optparse_argtype(optstring, option[0]); next = options->argv[options->optind + 1]; switch (type) { case -1: { char str[2] = {0, 0}; str[0] = option[0]; options->optind++; return optparse_error(options, OPTPARSE_MSG_INVALID, str); } case OPTPARSE_NONE: if (option[1]) { options->subopt++; } else { options->subopt = 0; options->optind++; } return option[0]; case OPTPARSE_REQUIRED: options->subopt = 0; options->optind++; if (option[1]) { options->optarg = option + 1; } else if (next != 0) { options->optarg = next; options->optind++; } else { char str[2] = {0, 0}; str[0] = option[0]; options->optarg = 0; return optparse_error(options, OPTPARSE_MSG_MISSING, str); } return option[0]; case OPTPARSE_OPTIONAL: options->subopt = 0; options->optind++; if (option[1]) options->optarg = option + 1; else options->optarg = 0; return option[0]; } return 0; } OPTPARSE_API char *optparse_arg(struct optparse *options) { char *option = options->argv[options->optind]; options->subopt = 0; if (option != 0) options->optind++; return option; } static int optparse_longopts_end(const struct optparse_long *longopts, int i) { return !longopts[i].longname && !longopts[i].shortname; } static void optparse_from_long(const struct optparse_long *longopts, char *optstring) { char *p = optstring; int i; for (i = 0; !optparse_longopts_end(longopts, i); i++) { if (longopts[i].shortname) { int a; *p++ = longopts[i].shortname; for (a = 0; a < (int)longopts[i].argtype; a++) *p++ = ':'; } } *p = '\0'; } /* Unlike strcmp(), handles options containing "=". */ static int optparse_longopts_match(const char *longname, const char *option) { const char *a = option, *n = longname; if (longname == 0) return 0; for (; *a && *n && *a != '='; a++, n++) if (*a != *n) return 0; return *n == '\0' && (*a == '\0' || *a == '='); } /* Return the part after "=", or NULL. */ static char *optparse_longopts_arg(char *option) { for (; *option && *option != '='; option++) ; if (*option == '=') return option + 1; else return 0; } static int optparse_long_fallback(struct optparse *options, const struct optparse_long *longopts, int *longindex) { int result; char optstring[96 * 3 + 1]; /* 96 ASCII printable characters */ optparse_from_long(longopts, optstring); result = optparse(options, optstring); if (longindex != 0) { *longindex = -1; if (result != -1) { int i; for (i = 0; !optparse_longopts_end(longopts, i); i++) if (longopts[i].shortname == options->optopt) *longindex = i; } } return result; } OPTPARSE_API int optparse_long(struct optparse *options, const struct optparse_long *longopts, int *longindex) { int i; char *option = options->argv[options->optind]; if (option == 0) { return -1; } else if (optparse_is_dashdash(option)) { options->optind++; /* consume "--" */ return -1; } else if (optparse_is_shortopt(option)) { return optparse_long_fallback(options, longopts, longindex); } else if (!optparse_is_longopt(option)) { if (options->permute) { int index = options->optind++; int r = optparse_long(options, longopts, longindex); optparse_permute(options, index); options->optind--; return r; } else { return -1; } } /* Parse as long option. */ options->errmsg[0] = '\0'; options->optopt = 0; options->optarg = 0; option += 2; /* skip "--" */ options->optind++; for (i = 0; !optparse_longopts_end(longopts, i); i++) { const char *name = longopts[i].longname; if (optparse_longopts_match(name, option)) { char *arg; if (longindex) *longindex = i; options->optopt = longopts[i].shortname; arg = optparse_longopts_arg(option); if (longopts[i].argtype == OPTPARSE_NONE && arg != 0) { return optparse_error(options, OPTPARSE_MSG_TOOMANY, name); } if (arg != 0) { options->optarg = arg; } else if (longopts[i].argtype == OPTPARSE_REQUIRED) { options->optarg = options->argv[options->optind]; if (options->optarg == 0) return optparse_error(options, OPTPARSE_MSG_MISSING, name); else options->optind++; } return options->optopt; } } return optparse_error(options, OPTPARSE_MSG_INVALID, option); } #endif /* OPTPARSE_IMPLEMENTATION */ #endif /* OPTPARSE_H */ codec2-1.2.0/src/os.h000066400000000000000000000042521445607075400142510ustar00rootroot00000000000000/* Generate using fir1(47,1/2) in Octave */ static const float fdmdv_os_filter[] = { -0.0008215855034550382, -0.0007833023901802921, 0.001075563790768233, 0.001199092367787555, -0.001765309502928316, -0.002055372115328064, 0.002986877604154257, 0.003462567920638414, -0.004856570111126334, -0.005563143845031497, 0.007533613299748122, 0.008563932468880897, -0.01126857129039911, -0.01280782411693687, 0.01651443896361847, 0.01894875110322284, -0.02421604439474981, -0.02845107338464062, 0.03672973563400258, 0.04542046150312214, -0.06189165826716491, -0.08721876380763803, 0.1496157094199961, 0.4497962274137046, 0.4497962274137046, 0.1496157094199961, -0.08721876380763803, -0.0618916582671649, 0.04542046150312216, 0.03672973563400257, -0.02845107338464062, -0.02421604439474984, 0.01894875110322284, 0.01651443896361848, -0.01280782411693687, -0.0112685712903991, 0.008563932468880899, 0.007533613299748123, -0.005563143845031501, -0.004856570111126346, 0.003462567920638419, 0.002986877604154259, -0.002055372115328063, -0.001765309502928318, 0.001199092367787557, 0.001075563790768233, -0.0007833023901802925, -0.0008215855034550383}; /* Generate using fir1(47,1/6) in Octave */ static const float fdmdv_os_filter48[] = { -3.55606818e-04, -8.98615286e-04, -1.40119781e-03, -1.71713852e-03, -1.56471179e-03, -6.28128960e-04, 1.24522223e-03, 3.83138676e-03, 6.41309478e-03, 7.85893186e-03, 6.93514929e-03, 2.79361991e-03, -4.51051400e-03, -1.36671853e-02, -2.21034939e-02, -2.64084653e-02, -2.31425052e-02, -9.84218694e-03, 1.40648474e-02, 4.67316298e-02, 8.39615986e-02, 1.19925275e-01, 1.48381174e-01, 1.64097819e-01, 1.64097819e-01, 1.48381174e-01, 1.19925275e-01, 8.39615986e-02, 4.67316298e-02, 1.40648474e-02, -9.84218694e-03, -2.31425052e-02, -2.64084653e-02, -2.21034939e-02, -1.36671853e-02, -4.51051400e-03, 2.79361991e-03, 6.93514929e-03, 7.85893186e-03, 6.41309478e-03, 3.83138676e-03, 1.24522223e-03, -6.28128960e-04, -1.56471179e-03, -1.71713852e-03, -1.40119781e-03, -8.98615286e-04, -3.55606818e-04}; codec2-1.2.0/src/pack.c000066400000000000000000000106201445607075400145350ustar00rootroot00000000000000/* Copyright (C) 2010 Perens LLC All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include "defines.h" #include "quantise.h" /* Compile-time constants */ /* Size of unsigned char in bits. Assumes 8 bits-per-char. */ static const unsigned int WordSize = 8; /* Mask to pick the bit component out of bitIndex. */ static const unsigned int IndexMask = 0x7; /* Used to pick the word component out of bitIndex. */ static const unsigned int ShiftRight = 3; /** Pack a bit field into a bit string, encoding the field in Gray code. * * The output is an array of unsigned char data. The fields are efficiently * packed into the bit string. The Gray coding is a naive attempt to reduce * the effect of single-bit errors, we expect to do a better job as the * codec develops. * * This code would be simpler if it just set one bit at a time in the string, * but would hit the same cache line more often. I'm not sure the complexity * gains us anything here. * * Although field is currently of int type rather than unsigned for * compatibility with the rest of the code, indices are always expected to * be >= 0. */ void pack(unsigned char* bitArray, /* The output bit string. */ unsigned int* bitIndex, /* Index into the string in BITS, not bytes.*/ int field, /* The bit field to be packed. */ unsigned int fieldWidth /* Width of the field in BITS, not bytes. */ ) { pack_natural_or_gray(bitArray, bitIndex, field, fieldWidth, 1); } void pack_natural_or_gray( unsigned char* bitArray, /* The output bit string. */ unsigned int* bitIndex, /* Index into the string in BITS, not bytes.*/ int field, /* The bit field to be packed. */ unsigned int fieldWidth, /* Width of the field in BITS, not bytes. */ unsigned int gray /* non-zero for gray coding */ ) { if (gray) { /* Convert the field to Gray code */ field = (field >> 1) ^ field; } do { unsigned int bI = *bitIndex; unsigned int bitsLeft = WordSize - (bI & IndexMask); unsigned int sliceWidth = bitsLeft < fieldWidth ? bitsLeft : fieldWidth; unsigned int wordIndex = bI >> ShiftRight; bitArray[wordIndex] |= ((unsigned char)((field >> (fieldWidth - sliceWidth)) << (bitsLeft - sliceWidth))); *bitIndex = bI + sliceWidth; fieldWidth -= sliceWidth; } while (fieldWidth != 0); } /** Unpack a field from a bit string, converting from Gray code to binary. * */ int unpack( const unsigned char* bitArray, /* The input bit string. */ unsigned int* bitIndex, /* Index into the string in BITS, not bytes.*/ unsigned int fieldWidth /* Width of the field in BITS, not bytes. */ ) { return unpack_natural_or_gray(bitArray, bitIndex, fieldWidth, 1); } /** Unpack a field from a bit string, to binary, optionally using * natural or Gray code. * */ int unpack_natural_or_gray( const unsigned char* bitArray, /* The input bit string. */ unsigned int* bitIndex, /* Index into the string in BITS, not bytes.*/ unsigned int fieldWidth, /* Width of the field in BITS, not bytes. */ unsigned int gray /* non-zero for Gray coding */ ) { unsigned int field = 0; unsigned int t; do { unsigned int bI = *bitIndex; unsigned int bitsLeft = WordSize - (bI & IndexMask); unsigned int sliceWidth = bitsLeft < fieldWidth ? bitsLeft : fieldWidth; field |= (((bitArray[bI >> ShiftRight] >> (bitsLeft - sliceWidth)) & ((1 << sliceWidth) - 1)) << (fieldWidth - sliceWidth)); *bitIndex = bI + sliceWidth; fieldWidth -= sliceWidth; } while (fieldWidth != 0); if (gray) { /* Convert from Gray code to binary. Works for maximum 8-bit fields. */ t = field ^ (field >> 8); t ^= (t >> 4); t ^= (t >> 2); t ^= (t >> 1); } else { t = field; } return t; } codec2-1.2.0/src/phase.c000066400000000000000000000213621445607075400147240ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: phase.c AUTHOR......: David Rowe DATE CREATED: 1/2/09 Functions for modelling and synthesising phase. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2009 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not,see . */ #include "phase.h" #include #include #include #include #include #include "comp.h" #include "comp_prim.h" #include "defines.h" #include "kiss_fft.h" #include "sine.h" /*---------------------------------------------------------------------------*\ sample_phase() Samples phase at centre of each harmonic from and array of FFT_ENC DFT samples. \*---------------------------------------------------------------------------*/ void sample_phase(MODEL *model, COMP H[], COMP A[] /* LPC analysis filter in freq domain */ ) { int m, b; float r; r = TWO_PI / (FFT_ENC); /* Sample phase at harmonics */ for (m = 1; m <= model->L; m++) { b = (int)(m * model->Wo / r + 0.5); H[m] = cconj(A[b]); /* synth filter 1/A is opposite phase to analysis filter */ } } /*---------------------------------------------------------------------------*\ phase_synth_zero_order() Synthesises phases based on SNR and a rule based approach. No phase parameters are required apart from the SNR (which can be reduced to a 1 bit V/UV decision per frame). The phase of each harmonic is modelled as the phase of a synthesis filter excited by an impulse. In many Codec 2 modes the synthesis filter is a LPC filter. Unlike the first order model the position of the impulse is not transmitted, so we create an excitation pulse train using a rule based approach. Consider a pulse train with a pulse starting time n=0, with pulses repeated at a rate of Wo, the fundamental frequency. A pulse train in the time domain is equivalent to harmonics in the frequency domain. We can make an excitation pulse train using a sum of sinsusoids: for(m=1; m<=L; m++) ex[n] = cos(m*Wo*n) Note: the Octave script ../octave/phase.m is an example of this if you would like to try making a pulse train. The phase of each excitation harmonic is: arg(E[m]) = mWo where E[m] are the complex excitation (freq domain) samples, arg(x), just returns the phase of a complex sample x. As we don't transmit the pulse position for this model, we need to synthesise it. Now the excitation pulses occur at a rate of Wo. This means the phase of the first harmonic advances by N_SAMP samples over a synthesis frame of N_SAMP samples. For example if Wo is pi/20 (200 Hz), then over a 10ms frame (N_SAMP=80 samples), the phase of the first harmonic would advance (pi/20)*80 = 4*pi or two complete cycles. We generate the excitation phase of the fundamental (first harmonic): arg[E[1]] = Wo*N_SAMP; We then relate the phase of the m-th excitation harmonic to the phase of the fundamental as: arg(E[m]) = m*arg(E[1]) This E[m] then gets passed through the LPC synthesis filter to determine the final harmonic phase. Comparing to speech synthesised using original phases: - Through headphones speech synthesised with this model is not as good. Through a loudspeaker it is very close to original phases. - If there are voicing errors, the speech can sound clicky or staticy. If V speech is mistakenly declared UV, this model tends to synthesise impulses or clicks, as there is usually very little shift or dispersion through the LPC synthesis filter. - When combined with LPC amplitude modelling there is an additional drop in quality. I am not sure why, theory is interformant energy is raised making any phase errors more obvious. NOTES: 1/ This synthesis model is effectively the same as a simple LPC-10 vocoders, and yet sounds much better. Why? Conventional wisdom (AMBE, MELP) says mixed voicing is required for high quality speech. 2/ I am pretty sure the Lincoln Lab sinusoidal coding guys (like xMBE also from MIT) first described this zero phase model, I need to look up the paper. 3/ Note that this approach could cause some discontinuities in the phase at the edge of synthesis frames, as no attempt is made to make sure that the phase tracks are continuous (the excitation phases are continuous, but not the final phases after filtering by the LPC spectra). Technically this is a bad thing. However this may actually be a good thing, disturbing the phase tracks a bit. More research needed, e.g. test a synthesis model that adds a small delta-W to make phase tracks line up for voiced harmonics. \*---------------------------------------------------------------------------*/ void phase_synth_zero_order( int n_samp, MODEL *model, float *ex_phase, /* excitation phase of fundamental */ COMP H[] /* L synthesis filter freq domain samples */ ) { int m; float new_phi; COMP Ex[MAX_AMP + 1]; /* excitation samples */ COMP A_[MAX_AMP + 1]; /* synthesised harmonic samples */ /* Update excitation fundamental phase track, this sets the position of each pitch pulse during voiced speech. After much experiment I found that using just this frame's Wo improved quality for UV sounds compared to interpolating two frames Wo like this: ex_phase[0] += (*prev_Wo+model->Wo)*N_SAMP/2; */ ex_phase[0] += (model->Wo) * n_samp; ex_phase[0] -= TWO_PI * floorf(ex_phase[0] / TWO_PI + 0.5); for (m = 1; m <= model->L; m++) { /* generate excitation */ if (model->voiced) { Ex[m].real = cosf(ex_phase[0] * m); Ex[m].imag = sinf(ex_phase[0] * m); } else { /* When a few samples were tested I found that LPC filter phase is not needed in the unvoiced case, but no harm in keeping it. */ float phi = TWO_PI * (float)codec2_rand() / CODEC2_RAND_MAX; Ex[m].real = cosf(phi); Ex[m].imag = sinf(phi); } /* filter using LPC filter */ A_[m].real = H[m].real * Ex[m].real - H[m].imag * Ex[m].imag; A_[m].imag = H[m].imag * Ex[m].real + H[m].real * Ex[m].imag; /* modify sinusoidal phase */ new_phi = atan2f(A_[m].imag, A_[m].real + 1E-12); model->phi[m] = new_phi; } } /*---------------------------------------------------------------------------*\ FUNCTION....: mag_to_phase AUTHOR......: David Rowe DATE CREATED: Jan 2017 Algorithm for http://www.dsprelated.com/showcode/20.php ported to C. See also Octave function mag_to_phase.m Given a magnitude spectrum in dB, returns a minimum-phase phase spectra. \*---------------------------------------------------------------------------*/ void mag_to_phase( float phase[], /* Nfft/2+1 output phase samples in radians */ float Gdbfk[], /* Nfft/2+1 positive freq amplitudes samples in dB */ int Nfft, codec2_fft_cfg fft_fwd_cfg, codec2_fft_cfg fft_inv_cfg) { COMP Sdb[Nfft], c[Nfft], cf[Nfft], Cf[Nfft]; int Ns = Nfft / 2 + 1; int i; /* install negative frequency components, 1/Nfft takes into account kiss fft lack of scaling on ifft */ Sdb[0].real = Gdbfk[0]; Sdb[0].imag = 0.0; for (i = 1; i < Ns; i++) { Sdb[i].real = Sdb[Nfft - i].real = Gdbfk[i]; Sdb[i].imag = Sdb[Nfft - i].imag = 0.0; } /* compute real cepstrum from log magnitude spectrum */ codec2_fft(fft_inv_cfg, Sdb, c); for (i = 0; i < Nfft; i++) { c[i].real /= (float)Nfft; c[i].imag /= (float)Nfft; } /* Fold cepstrum to reflect non-min-phase zeros inside unit circle */ cf[0] = c[0]; for (i = 1; i < Ns - 1; i++) { cf[i] = cadd(c[i], c[Nfft - i]); } cf[Ns - 1] = c[Ns - 1]; for (i = Ns; i < Nfft; i++) { cf[i].real = 0.0; cf[i].imag = 0.0; } /* Cf = dB_magnitude + j * minimum_phase */ codec2_fft(fft_fwd_cfg, cf, Cf); /* The maths says we are meant to be using log(x), not 20*log10(x), so we need to scale the phase to account for this: log(x) = 20*log10(x)/scale */ float scale = (20.0 / logf(10.0)); for (i = 0; i < Ns; i++) { phase[i] = Cf[i].imag / scale; } } codec2-1.2.0/src/phase.h000066400000000000000000000024461445607075400147330ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: phase.h AUTHOR......: David Rowe DATE CREATED: 1/2/09 Functions for modelling phase. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2009 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __PHASE__ #define __PHASE__ #include "codec2_fft.h" #include "comp.h" void sample_phase(MODEL *model, COMP filter_phase[], COMP A[]); void phase_synth_zero_order(int n_samp, MODEL *model, float *ex_phase, COMP filter_phase[]); void mag_to_phase(float phase[], float Gdbfk[], int Nfft, codec2_fft_cfg fwd_cfg, codec2_fft_cfg inv_cfg); #endif codec2-1.2.0/src/phi0.c000066400000000000000000000210471445607075400144640ustar00rootroot00000000000000 // phi0.c // // An approximation of the function // // This file is generated by the gen_phi0 scripts // Any changes should be made to that file, not this one #include #define SI16(f) ((int32_t)(f * (1 << 16))) float phi0(float xf) { int32_t x = SI16(xf); if (x >= SI16(10.0f)) return (0.0f); else { if (x >= SI16(5.0f)) { int i = 19 - (x >> 15); switch (i) { case 0: return (0.000116589f); // (9.5) case 1: return (0.000192223f); // (9.0) case 2: return (0.000316923f); // (8.5) case 3: return (0.000522517f); // (8.0) case 4: return (0.000861485f); // (7.5) case 5: return (0.001420349f); // (7.0) case 6: return (0.002341760f); // (6.5) case 7: return (0.003860913f); // (6.0) case 8: return (0.006365583f); // (5.5) case 9: return (0.010495133f); // (5.0) } } else { if (x >= SI16(1.0f)) { int i = 79 - (x >> 12); switch (i) { case 0: return (0.013903889f); // (4.9375) case 1: return (0.014800644f); // (4.8750) case 2: return (0.015755242f); // (4.8125) case 3: return (0.016771414f); // (4.7500) case 4: return (0.017853133f); // (4.6875) case 5: return (0.019004629f); // (4.6250) case 6: return (0.020230403f); // (4.5625) case 7: return (0.021535250f); // (4.5000) case 8: return (0.022924272f); // (4.4375) case 9: return (0.024402903f); // (4.3750) case 10: return (0.025976926f); // (4.3125) case 11: return (0.027652501f); // (4.2500) case 12: return (0.029436184f); // (4.1875) case 13: return (0.031334956f); // (4.1250) case 14: return (0.033356250f); // (4.0625) case 15: return (0.035507982f); // (4.0000) case 16: return (0.037798579f); // (3.9375) case 17: return (0.040237016f); // (3.8750) case 18: return (0.042832850f); // (3.8125) case 19: return (0.045596260f); // (3.7500) case 20: return (0.048538086f); // (3.6875) case 21: return (0.051669874f); // (3.6250) case 22: return (0.055003924f); // (3.5625) case 23: return (0.058553339f); // (3.5000) case 24: return (0.062332076f); // (3.4375) case 25: return (0.066355011f); // (3.3750) case 26: return (0.070637993f); // (3.3125) case 27: return (0.075197917f); // (3.2500) case 28: return (0.080052790f); // (3.1875) case 29: return (0.085221814f); // (3.1250) case 30: return (0.090725463f); // (3.0625) case 31: return (0.096585578f); // (3.0000) case 32: return (0.102825462f); // (2.9375) case 33: return (0.109469985f); // (2.8750) case 34: return (0.116545700f); // (2.8125) case 35: return (0.124080967f); // (2.7500) case 36: return (0.132106091f); // (2.6875) case 37: return (0.140653466f); // (2.6250) case 38: return (0.149757747f); // (2.5625) case 39: return (0.159456024f); // (2.5000) case 40: return (0.169788027f); // (2.4375) case 41: return (0.180796343f); // (2.3750) case 42: return (0.192526667f); // (2.3125) case 43: return (0.205028078f); // (2.2500) case 44: return (0.218353351f); // (2.1875) case 45: return (0.232559308f); // (2.1250) case 46: return (0.247707218f); // (2.0625) case 47: return (0.263863255f); // (2.0000) case 48: return (0.281099022f); // (1.9375) case 49: return (0.299492155f); // (1.8750) case 50: return (0.319127030f); // (1.8125) case 51: return (0.340095582f); // (1.7500) case 52: return (0.362498271f); // (1.6875) case 53: return (0.386445235f); // (1.6250) case 54: return (0.412057648f); // (1.5625) case 55: return (0.439469363f); // (1.5000) case 56: return (0.468828902f); // (1.4375) case 57: return (0.500301872f); // (1.3750) case 58: return (0.534073947f); // (1.3125) case 59: return (0.570354566f); // (1.2500) case 60: return (0.609381573f); // (1.1875) case 61: return (0.651427083f); // (1.1250) case 62: return (0.696805010f); // (1.0625) case 63: return (0.745880827f); // (1.0000) } } else { if (x > SI16(0.007812f)) { if (x > SI16(0.088388f)) { if (x > SI16(0.250000f)) { if (x > SI16(0.500000f)) { if (x > SI16(0.707107f)) { return (0.922449644f); } else { return (1.241248638f); } } else { if (x > SI16(0.353553f)) { return (1.573515241f); } else { return (1.912825912f); } } } else { if (x > SI16(0.125000f)) { if (x > SI16(0.176777f)) { return (2.255740095f); } else { return (2.600476919f); } } else { return (2.946130351f); } } } else { if (x > SI16(0.022097f)) { if (x > SI16(0.044194f)) { if (x > SI16(0.062500f)) { return (3.292243417f); } else { return (3.638586634f); } } else { if (x > SI16(0.031250f)) { return (3.985045009f); } else { return (4.331560985f); } } } else { if (x > SI16(0.011049f)) { if (x > SI16(0.015625f)) { return (4.678105767f); } else { return (5.024664952f); } } else { return (5.371231340f); } } } } else { if (x > SI16(0.000691f)) { if (x > SI16(0.001953f)) { if (x > SI16(0.003906f)) { if (x > SI16(0.005524f)) { return (5.717801329f); } else { return (6.064373119f); } } else { if (x > SI16(0.002762f)) { return (6.410945809f); } else { return (6.757518949f); } } } else { if (x > SI16(0.000977f)) { if (x > SI16(0.001381f)) { return (7.104092314f); } else { return (7.450665792f); } } else { return (7.797239326f); } } } else { if (x > SI16(0.000173f)) { if (x > SI16(0.000345f)) { if (x > SI16(0.000488f)) { return (8.143812888f); } else { return (8.490386464f); } } else { if (x > SI16(0.000244f)) { return (8.836960047f); } else { return (9.183533634f); } } } else { if (x > SI16(0.000086f)) { if (x > SI16(0.000122f)) { return (9.530107222f); } else { return (9.876680812f); } } else { return (10.000000000f); } } } } } } } return (10.0f); } codec2-1.2.0/src/phi0.h000066400000000000000000000001161445607075400144630ustar00rootroot00000000000000// phi0.h #ifndef PHI0_H #define PHI0_H extern float phi0(float xf); #endif codec2-1.2.0/src/pilot_coeff.h000066400000000000000000000011261445607075400161160ustar00rootroot00000000000000/* Generated by pilot_coeff_file() Octave function */ // const removed since this provides gain // on the STM32F4 platform #ifdef CORTEX_M4 /* const */ float pilot_coeff[] = { #else const float pilot_coeff[] = { #endif 0.00223001, 0.00301037, 0.00471258, 0.0075934, 0.0118145, 0.0174153, 0.0242969, 0.0322204, 0.0408199, 0.0496286, 0.0581172, 0.0657392, 0.0719806, 0.0764066, 0.0787022, 0.0787022, 0.0764066, 0.0719806, 0.0657392, 0.0581172, 0.0496286, 0.0408199, 0.0322204, 0.0242969, 0.0174153, 0.0118145, 0.0075934, 0.00471258, 0.00301037, 0.00223001}; codec2-1.2.0/src/pilots_coh.h000066400000000000000000000003671445607075400157760ustar00rootroot00000000000000/* Generated by write_pilot_file() Octave function */ float pilots_coh[][PILOTS_NC] = { {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}};codec2-1.2.0/src/postfilter.c000066400000000000000000000113471445607075400160210ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: postfilter.c AUTHOR......: David Rowe DATE CREATED: 13/09/09 Postfilter to improve sound quality for speech with high levels of background noise. Unlike mixed-excitation models requires no bits to be transmitted to handle background noise. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2009 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "postfilter.h" #include #include #include #include #include "comp.h" #include "defines.h" #include "dump.h" #include "sine.h" /*---------------------------------------------------------------------------*\ DEFINES \*---------------------------------------------------------------------------*/ #define BG_THRESH 40.0 /* only consider low levels signals for bg_est */ #define BG_BETA 0.1 /* averaging filter constant */ #define BG_MARGIN \ 6.0 /* harmonics this far above BG noise are \ randomised. Helped make bg noise less \ spikey (impulsive) for mmt1, but speech was \ perhaps a little rougher. \ */ /*---------------------------------------------------------------------------*\ postfilter() The post filter is designed to help with speech corrupted by background noise. The zero phase model tends to make speech with background noise sound "clicky". With high levels of background noise the low level inter-formant parts of the spectrum will contain noise rather than speech harmonics, so modelling them as voiced (i.e. a continuous, non-random phase track) is inaccurate. Some codecs (like MBE) have a mixed voicing model that breaks the spectrum into voiced and unvoiced regions. Several bits/frame (5-12) are required to transmit the frequency selective voicing information. Mixed excitation also requires accurate voicing estimation (parameter estimators always break occasionally under exceptional conditions). In our case we use a post filter approach which requires no additional bits to be transmitted. The decoder measures the average level of the background noise during unvoiced frames. If a harmonic is less than this level it is made unvoiced by randomising it's phases. This idea is rather experimental. Some potential problems that may happen: 1/ If someone says "aaaaaaaahhhhhhhhh" will background estimator track up to speech level? This would be a bad thing. 2/ If background noise suddenly disappears from the source speech does estimate drop quickly? What is noise suddenly re-appears? 3/ Background noise with a non-flat sepctrum. Current algorithm just comsiders scpetrum as a whole, but this could be broken up into bands, each with their own estimator. 4/ Males and females with the same level of background noise. Check performance the same. Changing Wo affects width of each band, may affect bg energy estimates. 5/ Not sure what happens during long periods of voiced speech e.g. "sshhhhhhh" \*---------------------------------------------------------------------------*/ void postfilter(MODEL *model, float *bg_est) { int m, uv; float e, thresh; /* determine average energy across spectrum */ e = 1E-12; for (m = 1; m <= model->L; m++) e += model->A[m] * model->A[m]; assert(e > 0.0); e = 10.0 * log10f(e / model->L); /* If beneath threshold, update bg estimate. The idea of the threshold is to prevent updating during high level speech. */ if ((e < BG_THRESH) && !model->voiced) *bg_est = *bg_est * (1.0 - BG_BETA) + e * BG_BETA; /* now mess with phases during voiced frames to make any harmonics less then our background estimate unvoiced. */ uv = 0; thresh = POW10F((*bg_est + BG_MARGIN) / 20.0); if (model->voiced) for (m = 1; m <= model->L; m++) if (model->A[m] < thresh) { model->phi[m] = (TWO_PI / CODEC2_RAND_MAX) * (float)codec2_rand(); uv++; } #ifdef DUMP dump_bg(e, *bg_est, 100.0 * uv / model->L); #endif } codec2-1.2.0/src/postfilter.h000066400000000000000000000020221445607075400160140ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: postfilter.h AUTHOR......: David Rowe DATE CREATED: 13/09/09 Postfilter header file. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2009 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __POSTFILTER__ #define __POSTFILTER__ #include "defines.h" void postfilter(MODEL *model, float *bg_est); #endif codec2-1.2.0/src/quantise.c000066400000000000000000000754531445607075400154670ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: quantise.c AUTHOR......: David Rowe DATE CREATED: 31/5/92 Quantisation functions for the sinusoidal coder. \*---------------------------------------------------------------------------*/ /* All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "quantise.h" #include #include #include #include #include #include #include "codec2_fft.h" #include "defines.h" #include "dump.h" #include "lpc.h" #include "lsp.h" #include "mbest.h" #include "phase.h" #undef PROFILE #include "machdep.h" #define LSP_DELTA1 0.01 /* grid spacing for LSP root searches */ /*---------------------------------------------------------------------------*\ FUNCTION HEADERS \*---------------------------------------------------------------------------*/ float speech_to_uq_lsps(float lsp[], float ak[], float Sn[], float w[], int m_pitch, int order); /*---------------------------------------------------------------------------*\ FUNCTIONS \*---------------------------------------------------------------------------*/ int lsp_bits(int i) { return lsp_cb[i].log2m; } int lspd_bits(int i) { return lsp_cbd[i].log2m; } int lsp_pred_vq_bits(int i) { return lsp_cbjmv[i].log2m; } /*---------------------------------------------------------------------------*\ quantise Quantises vec by choosing the nearest vector in codebook cb, and returns the vector index. The squared error of the quantised vector is added to se. \*---------------------------------------------------------------------------*/ long quantise(const float *cb, float vec[], float w[], int k, int m, float *se) /* float cb[][K]; current VQ codebook */ /* float vec[]; vector to quantise */ /* float w[]; weighting vector */ /* int k; dimension of vectors */ /* int m; size of codebook */ /* float *se; accumulated squared error */ { float e; /* current error */ long besti; /* best index so far */ float beste; /* best error so far */ long j; int i; float diff; besti = 0; beste = 1E32; for (j = 0; j < m; j++) { e = 0.0; for (i = 0; i < k; i++) { diff = cb[j * k + i] - vec[i]; e += (diff * w[i] * diff * w[i]); } if (e < beste) { beste = e; besti = j; } } *se += beste; return (besti); } /*---------------------------------------------------------------------------*\ encode_lspds_scalar() Scalar/VQ LSP difference-in-frequency quantiser. \*---------------------------------------------------------------------------*/ void encode_lspds_scalar(int indexes[], float lsp[], int order) { int i, k, m; float lsp_hz[order]; float lsp__hz[order]; float dlsp[order]; float dlsp_[order]; float wt[order]; const float *cb; float se; for (i = 0; i < order; i++) { wt[i] = 1.0; } /* convert from radians to Hz so we can use human readable frequencies */ for (i = 0; i < order; i++) lsp_hz[i] = (4000.0 / PI) * lsp[i]; wt[0] = 1.0; for (i = 0; i < order; i++) { /* find difference from previous quantised lsp */ if (i) dlsp[i] = lsp_hz[i] - lsp__hz[i - 1]; else dlsp[0] = lsp_hz[0]; k = lsp_cbd[i].k; m = lsp_cbd[i].m; cb = lsp_cbd[i].cb; indexes[i] = quantise(cb, &dlsp[i], wt, k, m, &se); dlsp_[i] = cb[indexes[i] * k]; if (i) lsp__hz[i] = lsp__hz[i - 1] + dlsp_[i]; else lsp__hz[0] = dlsp_[0]; } } void decode_lspds_scalar(float lsp_[], int indexes[], int order) { int i, k; float lsp__hz[order]; float dlsp_[order]; const float *cb; for (i = 0; i < order; i++) { k = lsp_cbd[i].k; cb = lsp_cbd[i].cb; dlsp_[i] = cb[indexes[i] * k]; if (i) lsp__hz[i] = lsp__hz[i - 1] + dlsp_[i]; else lsp__hz[0] = dlsp_[0]; lsp_[i] = (PI / 4000.0) * lsp__hz[i]; } } #define MIN(a, b) ((a) < (b) ? (a) : (b)) #define MAX_ENTRIES 16384 void compute_weights(const float *x, float *w, int ndim) { int i; w[0] = MIN(x[0], x[1] - x[0]); for (i = 1; i < ndim - 1; i++) w[i] = MIN(x[i] - x[i - 1], x[i + 1] - x[i]); w[ndim - 1] = MIN(x[ndim - 1] - x[ndim - 2], PI - x[ndim - 1]); for (i = 0; i < ndim; i++) w[i] = 1. / (.01 + w[i]); } int find_nearest(const float *codebook, int nb_entries, float *x, int ndim) { int i, j; float min_dist = 1e15; int nearest = 0; for (i = 0; i < nb_entries; i++) { float dist = 0; for (j = 0; j < ndim; j++) dist += (x[j] - codebook[i * ndim + j]) * (x[j] - codebook[i * ndim + j]); if (dist < min_dist) { min_dist = dist; nearest = i; } } return nearest; } int find_nearest_weighted(const float *codebook, int nb_entries, float *x, const float *w, int ndim) { int i, j; float min_dist = 1e15; int nearest = 0; for (i = 0; i < nb_entries; i++) { float dist = 0; for (j = 0; j < ndim; j++) dist += w[j] * (x[j] - codebook[i * ndim + j]) * (x[j] - codebook[i * ndim + j]); if (dist < min_dist) { min_dist = dist; nearest = i; } } return nearest; } void lspjmv_quantise(float *x, float *xq, int order) { int i, n1, n2, n3; float err[order], err2[order], err3[order]; float w[order], w2[order], w3[order]; const float *codebook1 = lsp_cbjmv[0].cb; const float *codebook2 = lsp_cbjmv[1].cb; const float *codebook3 = lsp_cbjmv[2].cb; w[0] = MIN(x[0], x[1] - x[0]); for (i = 1; i < order - 1; i++) w[i] = MIN(x[i] - x[i - 1], x[i + 1] - x[i]); w[order - 1] = MIN(x[order - 1] - x[order - 2], PI - x[order - 1]); compute_weights(x, w, order); n1 = find_nearest(codebook1, lsp_cbjmv[0].m, x, order); for (i = 0; i < order; i++) { xq[i] = codebook1[order * n1 + i]; err[i] = x[i] - xq[i]; } for (i = 0; i < order / 2; i++) { err2[i] = err[2 * i]; err3[i] = err[2 * i + 1]; w2[i] = w[2 * i]; w3[i] = w[2 * i + 1]; } n2 = find_nearest_weighted(codebook2, lsp_cbjmv[1].m, err2, w2, order / 2); n3 = find_nearest_weighted(codebook3, lsp_cbjmv[2].m, err3, w3, order / 2); for (i = 0; i < order / 2; i++) { xq[2 * i] += codebook2[order * n2 / 2 + i]; xq[2 * i + 1] += codebook3[order * n3 / 2 + i]; } } int check_lsp_order(float lsp[], int order) { int i; float tmp; int swaps = 0; for (i = 1; i < order; i++) if (lsp[i] < lsp[i - 1]) { // fprintf(stderr, "swap %d\n",i); swaps++; tmp = lsp[i - 1]; lsp[i - 1] = lsp[i] - 0.1; lsp[i] = tmp + 0.1; i = 1; /* start check again, as swap may have caused out of order */ } return swaps; } void force_min_lsp_dist(float lsp[], int order) { int i; for (i = 1; i < order; i++) if ((lsp[i] - lsp[i - 1]) < 0.01) { lsp[i] += 0.01; } } /*---------------------------------------------------------------------------*\ lpc_post_filter() Applies a post filter to the LPC synthesis filter power spectrum Pw, which suppresses the inter-formant energy. The algorithm is from p267 (Section 8.6) of "Digital Speech", edited by A.M. Kondoz, 1994 published by Wiley and Sons. Chapter 8 of this text is on the MBE vocoder, and this is a freq domain adaptation of post filtering commonly used in CELP. I used the Octave simulation lpcpf.m to get an understanding of the algorithm. Requires two more FFTs which is significantly more MIPs. However it should be possible to implement this more efficiently in the time domain. Just not sure how to handle relative time delays between the synthesis stage and updating these coeffs. A smaller FFT size might also be acceptable to save CPU. TODO: [ ] sync var names between Octave and C version [ ] doc gain normalisation [ ] I think the first FFT is not rqd as we do the same thing in aks_to_M2(). \*---------------------------------------------------------------------------*/ void lpc_post_filter(codec2_fftr_cfg fftr_fwd_cfg, float Pw[], float ak[], int order, int dump, float beta, float gamma, int bass_boost, float E) { int i; float x[FFT_ENC]; /* input to FFTs */ COMP Ww[FFT_ENC / 2 + 1]; /* weighting spectrum */ float Rw[FFT_ENC / 2 + 1]; /* R = WA */ float e_before, e_after, gain; float Pfw; float max_Rw, min_Rw; float coeff; PROFILE_VAR(tstart, tfft1, taw, tfft2, tww, tr); PROFILE_SAMPLE(tstart); /* Determine weighting filter spectrum W(exp(jw)) ---------------*/ for (i = 0; i < FFT_ENC; i++) { x[i] = 0.0; } x[0] = ak[0]; coeff = gamma; for (i = 1; i <= order; i++) { x[i] = ak[i] * coeff; coeff *= gamma; } codec2_fftr(fftr_fwd_cfg, x, Ww); PROFILE_SAMPLE_AND_LOG(tfft2, taw, " fft2"); for (i = 0; i < FFT_ENC / 2; i++) { Ww[i].real = Ww[i].real * Ww[i].real + Ww[i].imag * Ww[i].imag; } PROFILE_SAMPLE_AND_LOG(tww, tfft2, " Ww"); /* Determined combined filter R = WA ---------------------------*/ max_Rw = 0.0; min_Rw = 1E32; for (i = 0; i < FFT_ENC / 2; i++) { Rw[i] = sqrtf(Ww[i].real * Pw[i]); if (Rw[i] > max_Rw) max_Rw = Rw[i]; if (Rw[i] < min_Rw) min_Rw = Rw[i]; } PROFILE_SAMPLE_AND_LOG(tr, tww, " R"); #ifdef DUMP if (dump) dump_Rw(Rw); #endif /* create post filter mag spectrum and apply ------------------*/ /* measure energy before post filtering */ e_before = 1E-4; for (i = 0; i < FFT_ENC / 2; i++) e_before += Pw[i]; /* apply post filter and measure energy */ #ifdef DUMP if (dump) dump_Pwb(Pw); #endif e_after = 1E-4; for (i = 0; i < FFT_ENC / 2; i++) { Pfw = powf(Rw[i], beta); Pw[i] *= Pfw * Pfw; e_after += Pw[i]; } gain = e_before / e_after; /* apply gain factor to normalise energy, and LPC Energy */ gain *= E; for (i = 0; i < FFT_ENC / 2; i++) { Pw[i] *= gain; } if (bass_boost) { /* add 3dB to first 1 kHz to account for LP effect of PF */ for (i = 0; i < FFT_ENC / 8; i++) { Pw[i] *= 1.4 * 1.4; } } PROFILE_SAMPLE_AND_LOG2(tr, " filt"); } /*---------------------------------------------------------------------------*\ aks_to_M2() Transforms the linear prediction coefficients to spectral amplitude samples. This function determines A(m) from the average energy per band using an FFT. \*---------------------------------------------------------------------------*/ void aks_to_M2(codec2_fftr_cfg fftr_fwd_cfg, float ak[], /* LPC's */ int order, MODEL *model, /* sinusoidal model parameters for this frame */ float E, /* energy term */ float *snr, /* signal to noise ratio for this frame in dB */ int dump, /* true to dump sample to dump file */ int sim_pf, /* true to simulate a post filter */ int pf, /* true to enable actual LPC post filter */ int bass_boost, /* enable LPC filter 0-1kHz 3dB boost */ float beta, float gamma, /* LPC post filter parameters */ COMP Aw[] /* output power spectrum */ ) { int i, m; /* loop variables */ int am, bm; /* limits of current band */ float r; /* no. rads/bin */ float Em; /* energy in band */ float Am; /* spectral amplitude sample */ float signal, noise; PROFILE_VAR(tstart, tfft, tpw, tpf); PROFILE_SAMPLE(tstart); r = TWO_PI / (FFT_ENC); /* Determine DFT of A(exp(jw)) --------------------------------------------*/ { float a[FFT_ENC]; /* input to FFT for power spectrum */ for (i = 0; i < FFT_ENC; i++) { a[i] = 0.0; } for (i = 0; i <= order; i++) a[i] = ak[i]; codec2_fftr(fftr_fwd_cfg, a, Aw); } PROFILE_SAMPLE_AND_LOG(tfft, tstart, " fft"); /* Determine power spectrum P(w) = E/(A(exp(jw))^2 ------------------------*/ float Pw[FFT_ENC / 2]; #ifndef FDV_ARM_MATH for (i = 0; i < FFT_ENC / 2; i++) { Pw[i] = 1.0 / (Aw[i].real * Aw[i].real + Aw[i].imag * Aw[i].imag + 1E-6); } #else // this difference may seem strange, but the gcc for STM32F4 generates almost // 5 times faster code with the two loops: 1120 ms -> 242 ms so please leave // it as is or improve further since this code is called 4 times it results in // almost 4ms gain (21ms -> 17ms per audio frame decode @ 1300 ) for (i = 0; i < FFT_ENC / 2; i++) { Pw[i] = Aw[i].real * Aw[i].real + Aw[i].imag * Aw[i].imag + 1E-6; } for (i = 0; i < FFT_ENC / 2; i++) { Pw[i] = 1.0 / (Pw[i]); } #endif PROFILE_SAMPLE_AND_LOG(tpw, tfft, " Pw"); if (pf) lpc_post_filter(fftr_fwd_cfg, Pw, ak, order, dump, beta, gamma, bass_boost, E); else { for (i = 0; i < FFT_ENC / 2; i++) { Pw[i] *= E; } } PROFILE_SAMPLE_AND_LOG(tpf, tpw, " LPC post filter"); #ifdef DUMP if (dump) dump_Pw(Pw); #endif /* Determine magnitudes from P(w) ----------------------------------------*/ /* when used just by decoder {A} might be all zeroes so init signal and noise to prevent log(0) errors */ signal = 1E-30; noise = 1E-32; for (m = 1; m <= model->L; m++) { am = (int)((m - 0.5) * model->Wo / r + 0.5); bm = (int)((m + 0.5) * model->Wo / r + 0.5); // FIXME: With arm_rfft_fast_f32 we have to use this // otherwise sometimes a to high bm is calculated // which causes trouble later in the calculation // chain // it seems for some reason model->Wo is calculated somewhat too high if (bm > FFT_ENC / 2) { bm = FFT_ENC / 2; } Em = 0.0; for (i = am; i < bm; i++) Em += Pw[i]; Am = sqrtf(Em); signal += model->A[m] * model->A[m]; noise += (model->A[m] - Am) * (model->A[m] - Am); /* This code significantly improves perf of LPC model, in particular when combined with phase0. The LPC spectrum tends to track just under the peaks of the spectral envelope, and just above nulls. This algorithm does the reverse to compensate - raising the amplitudes of spectral peaks, while attenuating the null. This enhances the formants, and suppresses the energy between formants. */ if (sim_pf) { if (Am > model->A[m]) Am *= 0.7; if (Am < model->A[m]) Am *= 1.4; } model->A[m] = Am; } *snr = 10.0 * log10f(signal / noise); PROFILE_SAMPLE_AND_LOG2(tpf, " rec"); } /*---------------------------------------------------------------------------*\ FUNCTION....: encode_Wo() AUTHOR......: David Rowe DATE CREATED: 22/8/2010 Encodes Wo using a WO_LEVELS quantiser. \*---------------------------------------------------------------------------*/ int encode_Wo(C2CONST *c2const, float Wo, int bits) { int index, Wo_levels = 1 << bits; float Wo_min = c2const->Wo_min; float Wo_max = c2const->Wo_max; float norm; norm = (Wo - Wo_min) / (Wo_max - Wo_min); index = floorf(Wo_levels * norm + 0.5); if (index < 0) index = 0; if (index > (Wo_levels - 1)) index = Wo_levels - 1; return index; } /*---------------------------------------------------------------------------*\ FUNCTION....: decode_Wo() AUTHOR......: David Rowe DATE CREATED: 22/8/2010 Decodes Wo using a WO_LEVELS quantiser. \*---------------------------------------------------------------------------*/ float decode_Wo(C2CONST *c2const, int index, int bits) { float Wo_min = c2const->Wo_min; float Wo_max = c2const->Wo_max; float step; float Wo; int Wo_levels = 1 << bits; step = (Wo_max - Wo_min) / Wo_levels; Wo = Wo_min + step * (index); return Wo; } /*---------------------------------------------------------------------------*\ FUNCTION....: encode_log_Wo() AUTHOR......: David Rowe DATE CREATED: 22/8/2010 Encodes Wo in the log domain using a WO_LEVELS quantiser. \*---------------------------------------------------------------------------*/ int encode_log_Wo(C2CONST *c2const, float Wo, int bits) { int index, Wo_levels = 1 << bits; float Wo_min = c2const->Wo_min; float Wo_max = c2const->Wo_max; float norm; norm = (log10f(Wo) - log10f(Wo_min)) / (log10f(Wo_max) - log10f(Wo_min)); index = floorf(Wo_levels * norm + 0.5); if (index < 0) index = 0; if (index > (Wo_levels - 1)) index = Wo_levels - 1; return index; } /*---------------------------------------------------------------------------*\ FUNCTION....: decode_log_Wo() AUTHOR......: David Rowe DATE CREATED: 22/8/2010 Decodes Wo using a WO_LEVELS quantiser in the log domain. \*---------------------------------------------------------------------------*/ float decode_log_Wo(C2CONST *c2const, int index, int bits) { float Wo_min = c2const->Wo_min; float Wo_max = c2const->Wo_max; float step; float Wo; int Wo_levels = 1 << bits; step = (log10f(Wo_max) - log10f(Wo_min)) / Wo_levels; Wo = log10f(Wo_min) + step * (index); return POW10F(Wo); } /*---------------------------------------------------------------------------*\ FUNCTION....: speech_to_uq_lsps() AUTHOR......: David Rowe DATE CREATED: 22/8/2010 Analyse a windowed frame of time domain speech to determine LPCs which are the converted to LSPs for quantisation and transmission over the channel. \*---------------------------------------------------------------------------*/ float speech_to_uq_lsps(float lsp[], float ak[], float Sn[], float w[], int m_pitch, int order) { int i, roots; float Wn[m_pitch]; float R[order + 1]; float e, E; e = 0.0; for (i = 0; i < m_pitch; i++) { Wn[i] = Sn[i] * w[i]; e += Wn[i] * Wn[i]; } /* trap 0 energy case as LPC analysis will fail */ if (e == 0.0) { for (i = 0; i < order; i++) lsp[i] = (PI / order) * (float)i; return 0.0; } autocorrelate(Wn, R, m_pitch, order); levinson_durbin(R, ak, order); E = 0.0; for (i = 0; i <= order; i++) E += ak[i] * R[i]; /* 15 Hz BW expansion as I can't hear the difference and it may help help occasional fails in the LSP root finding. Important to do this after energy calculation to avoid -ve energy values. */ for (i = 0; i <= order; i++) ak[i] *= powf(0.994, (float)i); roots = lpc_to_lsp(ak, order, lsp, 5, LSP_DELTA1); if (roots != order) { /* if root finding fails use some benign LSP values instead */ for (i = 0; i < order; i++) lsp[i] = (PI / order) * (float)i; } return E; } /*---------------------------------------------------------------------------*\ FUNCTION....: encode_lsps_scalar() AUTHOR......: David Rowe DATE CREATED: 22/8/2010 Scalar LSP quantiser. From a vector of unquantised (floating point) LSPs finds the quantised LSP indexes. \*---------------------------------------------------------------------------*/ void encode_lsps_scalar(int indexes[], float lsp[], int order) { int i, k, m; float wt[1]; float lsp_hz[order]; const float *cb; float se; /* convert from radians to Hz so we can use human readable frequencies */ for (i = 0; i < order; i++) lsp_hz[i] = (4000.0 / PI) * lsp[i]; /* scalar quantisers */ wt[0] = 1.0; for (i = 0; i < order; i++) { k = lsp_cb[i].k; m = lsp_cb[i].m; cb = lsp_cb[i].cb; indexes[i] = quantise(cb, &lsp_hz[i], wt, k, m, &se); } } /*---------------------------------------------------------------------------*\ FUNCTION....: decode_lsps_scalar() AUTHOR......: David Rowe DATE CREATED: 22/8/2010 From a vector of quantised LSP indexes, returns the quantised (floating point) LSPs. \*---------------------------------------------------------------------------*/ void decode_lsps_scalar(float lsp[], int indexes[], int order) { int i, k; float lsp_hz[order]; const float *cb; for (i = 0; i < order; i++) { k = lsp_cb[i].k; cb = lsp_cb[i].cb; lsp_hz[i] = cb[indexes[i] * k]; } /* convert back to radians */ for (i = 0; i < order; i++) lsp[i] = (PI / 4000.0) * lsp_hz[i]; } /*---------------------------------------------------------------------------*\ FUNCTION....: encode_lsps_vq() AUTHOR......: David Rowe DATE CREATED: 15 Feb 2012 Multi-stage VQ LSP quantiser developed by Jean-Marc Valin. \*---------------------------------------------------------------------------*/ void encode_lsps_vq(int *indexes, float *x, float *xq, int order) { int i, n1, n2, n3; float err[order], err2[order], err3[order]; float w[order], w2[order], w3[order]; const float *codebook1 = lsp_cbjmv[0].cb; const float *codebook2 = lsp_cbjmv[1].cb; const float *codebook3 = lsp_cbjmv[2].cb; w[0] = MIN(x[0], x[1] - x[0]); for (i = 1; i < order - 1; i++) w[i] = MIN(x[i] - x[i - 1], x[i + 1] - x[i]); w[order - 1] = MIN(x[order - 1] - x[order - 2], PI - x[order - 1]); compute_weights(x, w, order); n1 = find_nearest(codebook1, lsp_cbjmv[0].m, x, order); for (i = 0; i < order; i++) { xq[i] = codebook1[order * n1 + i]; err[i] = x[i] - xq[i]; } for (i = 0; i < order / 2; i++) { err2[i] = err[2 * i]; err3[i] = err[2 * i + 1]; w2[i] = w[2 * i]; w3[i] = w[2 * i + 1]; } n2 = find_nearest_weighted(codebook2, lsp_cbjmv[1].m, err2, w2, order / 2); n3 = find_nearest_weighted(codebook3, lsp_cbjmv[2].m, err3, w3, order / 2); indexes[0] = n1; indexes[1] = n2; indexes[2] = n3; } /*---------------------------------------------------------------------------*\ FUNCTION....: decode_lsps_vq() AUTHOR......: David Rowe DATE CREATED: 15 Feb 2012 \*---------------------------------------------------------------------------*/ void decode_lsps_vq(int *indexes, float *xq, int order, int stages) { int i, n1, n2, n3; const float *codebook1 = lsp_cbjmv[0].cb; const float *codebook2 = lsp_cbjmv[1].cb; const float *codebook3 = lsp_cbjmv[2].cb; n1 = indexes[0]; n2 = indexes[1]; n3 = indexes[2]; for (i = 0; i < order; i++) { xq[i] = codebook1[order * n1 + i]; } if (stages != 1) { for (i = 0; i < order / 2; i++) { xq[2 * i] += codebook2[order * n2 / 2 + i]; xq[2 * i + 1] += codebook3[order * n3 / 2 + i]; } } } /*---------------------------------------------------------------------------*\ FUNCTION....: bw_expand_lsps() AUTHOR......: David Rowe DATE CREATED: 22/8/2010 Applies Bandwidth Expansion (BW) to a vector of LSPs. Prevents any two LSPs getting too close together after quantisation. We know from experiment that LSP quantisation errors < 12.5Hz (25Hz step size) are inaudible so we use that as the minimum LSP separation. \*---------------------------------------------------------------------------*/ void bw_expand_lsps(float lsp[], int order, float min_sep_low, float min_sep_high) { int i; for (i = 1; i < 4; i++) { if ((lsp[i] - lsp[i - 1]) < min_sep_low * (PI / 4000.0)) lsp[i] = lsp[i - 1] + min_sep_low * (PI / 4000.0); } /* As quantiser gaps increased, larger BW expansion was required to prevent twinkly noises. This may need more experiment for different quanstisers. */ for (i = 4; i < order; i++) { if (lsp[i] - lsp[i - 1] < min_sep_high * (PI / 4000.0)) lsp[i] = lsp[i - 1] + min_sep_high * (PI / 4000.0); } } void bw_expand_lsps2(float lsp[], int order) { int i; for (i = 1; i < 4; i++) { if ((lsp[i] - lsp[i - 1]) < 100.0 * (PI / 4000.0)) lsp[i] = lsp[i - 1] + 100.0 * (PI / 4000.0); } /* As quantiser gaps increased, larger BW expansion was required to prevent twinkly noises. This may need more experiment for different quanstisers. */ for (i = 4; i < order; i++) { if (lsp[i] - lsp[i - 1] < 200.0 * (PI / 4000.0)) lsp[i] = lsp[i - 1] + 200.0 * (PI / 4000.0); } } /*---------------------------------------------------------------------------*\ FUNCTION....: apply_lpc_correction() AUTHOR......: David Rowe DATE CREATED: 22/8/2010 Apply first harmonic LPC correction at decoder. This helps improve low pitch males after LPC modelling, like hts1a and morig. \*---------------------------------------------------------------------------*/ void apply_lpc_correction(MODEL *model) { if (model->Wo < (PI * 150.0 / 4000)) { model->A[1] *= 0.032; } } /*---------------------------------------------------------------------------*\ FUNCTION....: encode_energy() AUTHOR......: David Rowe DATE CREATED: 22/8/2010 Encodes LPC energy using an E_LEVELS quantiser. \*---------------------------------------------------------------------------*/ int encode_energy(float e, int bits) { int index, e_levels = 1 << bits; float e_min = E_MIN_DB; float e_max = E_MAX_DB; float norm; e = 10.0 * log10f(e); norm = (e - e_min) / (e_max - e_min); index = floorf(e_levels * norm + 0.5); if (index < 0) index = 0; if (index > (e_levels - 1)) index = e_levels - 1; return index; } /*---------------------------------------------------------------------------*\ FUNCTION....: decode_energy() AUTHOR......: David Rowe DATE CREATED: 22/8/2010 Decodes energy using a E_LEVELS quantiser. \*---------------------------------------------------------------------------*/ float decode_energy(int index, int bits) { float e_min = E_MIN_DB; float e_max = E_MAX_DB; float step; float e; int e_levels = 1 << bits; step = (e_max - e_min) / e_levels; e = e_min + step * (index); e = POW10F(e / 10.0); return e; } static float ge_coeff[2] = {0.8, 0.9}; void compute_weights2(const float *x, const float *xp, float *w) { w[0] = 30; w[1] = 1; if (x[1] < 0) { w[0] *= .6; w[1] *= .3; } if (x[1] < -10) { w[0] *= .3; w[1] *= .3; } /* Higher weight if pitch is stable */ if (fabsf(x[0] - xp[0]) < .2) { w[0] *= 2; w[1] *= 1.5; } else if (fabsf(x[0] - xp[0]) > .5) /* Lower if not stable */ { w[0] *= .5; } /* Lower weight for low energy */ if (x[1] < xp[1] - 10) { w[1] *= .5; } if (x[1] < xp[1] - 20) { w[1] *= .5; } // w[0] = 30; // w[1] = 1; /* Square the weights because it's applied on the squared error */ w[0] *= w[0]; w[1] *= w[1]; } /*---------------------------------------------------------------------------*\ FUNCTION....: quantise_WoE() AUTHOR......: Jean-Marc Valin & David Rowe DATE CREATED: 29 Feb 2012 Experimental joint Wo and LPC energy vector quantiser developed by Jean-Marc Valin. Exploits correlations between the difference in the log pitch and log energy from frame to frame. For example both the pitch and energy tend to only change by small amounts during voiced speech, however it is important that these changes be coded carefully. During unvoiced speech they both change a lot but the ear is less sensitive to errors so coarser quantisation is OK. The ear is sensitive to log energy and loq pitch so we quantise in these domains. That way the error measure used to quantise the values is close to way the ear senses errors. See http://jmspeex.livejournal.com/10446.html \*---------------------------------------------------------------------------*/ void quantise_WoE(C2CONST *c2const, MODEL *model, float *e, float xq[]) { int i, n1; float x[2]; float err[2]; float w[2]; const float *codebook1 = ge_cb[0].cb; int nb_entries = ge_cb[0].m; int ndim = ge_cb[0].k; float Wo_min = c2const->Wo_min; float Wo_max = c2const->Wo_max; float Fs = c2const->Fs; /* VQ is only trained for Fs = 8000 Hz */ assert(Fs == 8000); x[0] = log10f((model->Wo / PI) * 4000.0 / 50.0) / log10f(2); x[1] = 10.0 * log10f(1e-4 + *e); compute_weights2(x, xq, w); for (i = 0; i < ndim; i++) err[i] = x[i] - ge_coeff[i] * xq[i]; n1 = find_nearest_weighted(codebook1, nb_entries, err, w, ndim); for (i = 0; i < ndim; i++) { xq[i] = ge_coeff[i] * xq[i] + codebook1[ndim * n1 + i]; err[i] -= codebook1[ndim * n1 + i]; } /* x = log2(4000*Wo/(PI*50)); 2^x = 4000*Wo/(PI*50) Wo = (2^x)*(PI*50)/4000; */ model->Wo = powf(2.0, xq[0]) * (PI * 50.0) / 4000.0; /* bit errors can make us go out of range leading to all sorts of probs like seg faults */ if (model->Wo > Wo_max) model->Wo = Wo_max; if (model->Wo < Wo_min) model->Wo = Wo_min; model->L = PI / model->Wo; /* if we quantise Wo re-compute L */ *e = POW10F(xq[1] / 10.0); } /*---------------------------------------------------------------------------*\ FUNCTION....: encode_WoE() AUTHOR......: Jean-Marc Valin & David Rowe DATE CREATED: 11 May 2012 Joint Wo and LPC energy vector quantiser developed my Jean-Marc Valin. Returns index, and updated states xq[]. \*---------------------------------------------------------------------------*/ int encode_WoE(MODEL *model, float e, float xq[]) { int i, n1; float x[2]; float err[2]; float w[2]; const float *codebook1 = ge_cb[0].cb; int nb_entries = ge_cb[0].m; int ndim = ge_cb[0].k; assert((1 << WO_E_BITS) == nb_entries); if (e < 0.0) e = 0; /* occasional small negative energies due LPC round off I guess */ x[0] = log10f((model->Wo / PI) * 4000.0 / 50.0) / log10f(2); x[1] = 10.0 * log10f(1e-4 + e); compute_weights2(x, xq, w); for (i = 0; i < ndim; i++) err[i] = x[i] - ge_coeff[i] * xq[i]; n1 = find_nearest_weighted(codebook1, nb_entries, err, w, ndim); for (i = 0; i < ndim; i++) { xq[i] = ge_coeff[i] * xq[i] + codebook1[ndim * n1 + i]; err[i] -= codebook1[ndim * n1 + i]; } // printf("enc: %f %f (%f)(%f) \n", xq[0], xq[1], e, 10.0*log10(1e-4 + e)); return n1; } /*---------------------------------------------------------------------------*\ FUNCTION....: decode_WoE() AUTHOR......: Jean-Marc Valin & David Rowe DATE CREATED: 11 May 2012 Joint Wo and LPC energy vector quantiser developed my Jean-Marc Valin. Given index and states xq[], returns Wo & E, and updates states xq[]. \*---------------------------------------------------------------------------*/ void decode_WoE(C2CONST *c2const, MODEL *model, float *e, float xq[], int n1) { int i; const float *codebook1 = ge_cb[0].cb; int ndim = ge_cb[0].k; float Wo_min = c2const->Wo_min; float Wo_max = c2const->Wo_max; for (i = 0; i < ndim; i++) { xq[i] = ge_coeff[i] * xq[i] + codebook1[ndim * n1 + i]; } // printf("dec: %f %f\n", xq[0], xq[1]); model->Wo = powf(2.0, xq[0]) * (PI * 50.0) / 4000.0; /* bit errors can make us go out of range leading to all sorts of probs like seg faults */ if (model->Wo > Wo_max) model->Wo = Wo_max; if (model->Wo < Wo_min) model->Wo = Wo_min; model->L = PI / model->Wo; /* if we quantise Wo re-compute L */ *e = POW10F(xq[1] / 10.0); } codec2-1.2.0/src/quantise.h000066400000000000000000000074641445607075400154710ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: quantise.h AUTHOR......: David Rowe DATE CREATED: 31/5/92 Quantisation functions for the sinusoidal coder. \*---------------------------------------------------------------------------*/ /* All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __QUANTISE__ #define __QUANTISE__ #include "codec2_fft.h" #include "comp.h" #define WO_BITS 7 #define WO_LEVELS (1 << WO_BITS) #define WO_DT_BITS 3 #define E_BITS 5 #define E_LEVELS (1 << E_BITS) #define E_MIN_DB -10.0 #define E_MAX_DB 40.0 #define LSP_SCALAR_INDEXES 10 #define LSPD_SCALAR_INDEXES 10 #define LSP_PRED_VQ_INDEXES 3 #define WO_E_BITS 8 #define LPCPF_GAMMA 0.5 #define LPCPF_BETA 0.2 float lpc_model_amplitudes(float Sn[], float w[], MODEL *model, int order, int lsp, float ak[]); void aks_to_M2(codec2_fftr_cfg fftr_fwd_cfg, float ak[], int order, MODEL *model, float E, float *snr, int dump, int sim_pf, int pf, int bass_boost, float beta, float gamma, COMP Aw[]); int encode_Wo(C2CONST *c2const, float Wo, int bits); float decode_Wo(C2CONST *c2const, int index, int bits); int encode_log_Wo(C2CONST *c2const, float Wo, int bits); float decode_log_Wo(C2CONST *c2const, int index, int bits); void encode_lsps_scalar(int indexes[], float lsp[], int order); void decode_lsps_scalar(float lsp[], int indexes[], int order); void encode_lspds_scalar(int indexes[], float lsp[], int order); void decode_lspds_scalar(float lsp[], int indexes[], int order); void encode_lsps_vq(int *indexes, float *x, float *xq, int order); void decode_lsps_vq(int *indexes, float *xq, int order, int stages); long quantise(const float *cb, float vec[], float w[], int k, int m, float *se); void lspvq_quantise(float lsp[], float lsp_[], int order); void lspjmv_quantise(float lsps[], float lsps_[], int order); void quantise_WoE(C2CONST *c2const, MODEL *model, float *e, float xq[]); int encode_WoE(MODEL *model, float e, float xq[]); void decode_WoE(C2CONST *c2const, MODEL *model, float *e, float xq[], int n1); int encode_energy(float e, int bits); float decode_energy(int index, int bits); void pack(unsigned char *bits, unsigned int *nbit, int index, unsigned int index_bits); void pack_natural_or_gray(unsigned char *bits, unsigned int *nbit, int index, unsigned int index_bits, unsigned int gray); int unpack(const unsigned char *bits, unsigned int *nbit, unsigned int index_bits); int unpack_natural_or_gray(const unsigned char *bits, unsigned int *nbit, unsigned int index_bits, unsigned int gray); int lsp_bits(int i); int lspd_bits(int i); int lsp_pred_vq_bits(int i); void apply_lpc_correction(MODEL *model); float speech_to_uq_lsps(float lsp[], float ak[], float Sn[], float w[], int m_pitch, int order); int check_lsp_order(float lsp[], int lpc_order); void bw_expand_lsps(float lsp[], int order, float min_sep_low, float min_sep_high); void bw_expand_lsps2(float lsp[], int order); void locate_lsps_jnd_steps(float lsp[], int order); float decode_amplitudes(MODEL *model, float ak[], int lsp_indexes[], int energy_index, float lsps[], float *e); #endif codec2-1.2.0/src/reliable_text.c000066400000000000000000000403731445607075400164520ustar00rootroot00000000000000//========================================================================== // Name: reliable_text.c // // Purpose: Handles reliable text (e.g. text with FEC). // Created: August 15, 2021 // Authors: Mooneer Salem // // License: // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License version 2.1, // as published by the Free Software Foundation. This program is // distributed in the hope that it will be useful, but WITHOUT ANY // WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public // License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with this program; if not, see . // //========================================================================== #include "reliable_text.h" #include #include #include #include #include #include "freedv_api.h" #include "freedv_api_internal.h" #include "gp_interleaver.h" #include "ldpc_codes.h" #include "ofdm_internal.h" #define LDPC_TOTAL_SIZE_BITS (112) #define RELIABLE_TEXT_UW_LENGTH_BITS (16) #define RELIABLE_TEXT_MAX_ZEROES_IN_UW (4) #define RELIABLE_TEXT_MAX_LENGTH (8) #define RELIABLE_TEXT_CRC_LENGTH (1) #define RELIABLE_TEXT_MAX_RAW_LENGTH \ (RELIABLE_TEXT_MAX_LENGTH + RELIABLE_TEXT_CRC_LENGTH) /* Two bytes of text/CRC equal four bytes of LDPC(112,56). */ #define RELIABLE_TEXT_BYTES_PER_ENCODED_SEGMENT (8) /* Internal definition of reliable_text_t. */ typedef struct { on_text_rx_t text_rx_callback; void* callback_state; char tx_text[LDPC_TOTAL_SIZE_BITS + RELIABLE_TEXT_UW_LENGTH_BITS]; int tx_text_index; int tx_text_length; char inbound_pending_bits[RELIABLE_TEXT_UW_LENGTH_BITS + LDPC_TOTAL_SIZE_BITS]; _Complex float inbound_pending_syms[(RELIABLE_TEXT_UW_LENGTH_BITS + LDPC_TOTAL_SIZE_BITS) / 2]; float inbound_pending_amps[(RELIABLE_TEXT_UW_LENGTH_BITS + LDPC_TOTAL_SIZE_BITS) / 2]; int bit_index; int sym_index; int has_successfully_decoded; struct LDPC ldpc; struct freedv* fdv; } reliable_text_impl_t; // 6 bit character set for text field use: // 0: ASCII null // 1-9: ASCII 38-47 // 10-19: ASCII '0'-'9' // 20-46: ASCII 'A'-'Z' // 47: ASCII ' ' static void convert_callsign_to_ota_string_(const char* input, char* output, int maxLength) { assert(input != NULL); assert(output != NULL); assert(maxLength >= 0); int outidx = 0; for (size_t index = 0; index < maxLength; index++) { if (input[index] == 0) break; if (input[index] >= 38 && input[index] <= 47) { output[outidx++] = input[index] - 37; } else if (input[index] >= '0' && input[index] <= '9') { output[outidx++] = input[index] - '0' + 10; } else if (input[index] >= 'A' && input[index] <= 'Z') { output[outidx++] = input[index] - 'A' + 20; } else if (input[index] >= 'a' && input[index] <= 'z') { output[outidx++] = toupper(input[index]) - 'A' + 20; } } output[outidx] = 0; } static void convert_ota_string_to_callsign_(const char* input, char* output, int maxLength) { assert(input != NULL); assert(output != NULL); assert(maxLength >= 0); int outidx = 0; for (size_t index = 0; index < maxLength; index++) { if (input[index] == 0) break; if (input[index] >= 1 && input[index] <= 9) { output[outidx++] = input[index] + 37; } else if (input[index] >= 10 && input[index] <= 19) { output[outidx++] = input[index] - 10 + '0'; } else if (input[index] >= 20 && input[index] <= 46) { output[outidx++] = input[index] - 20 + 'A'; } } output[outidx] = 0; } static char calculateCRC8_(char* input, int length) { assert(input != NULL); assert(length >= 0); unsigned char generator = 0x1D; unsigned char crc = 0x00; /* start with 0 so first byte can be 'xored' in */ while (length > 0) { unsigned char ch = *input++; length--; // Break out if we see a null. if (ch == 0) break; crc ^= ch; /* XOR-in the next input byte */ for (int i = 0; i < 8; i++) { if ((crc & 0x80) != 0) { crc = (unsigned char)((crc << 1) ^ generator); } else { crc <<= 1; } } } return crc; } static int reliable_text_ldpc_decode(reliable_text_impl_t* obj, char* dest) { assert(obj != NULL); assert(dest != NULL); char* src = &obj->inbound_pending_bits[RELIABLE_TEXT_UW_LENGTH_BITS]; char deinterleavedBits[LDPC_TOTAL_SIZE_BITS]; _Complex float deinterleavedSyms[LDPC_TOTAL_SIZE_BITS / 2]; float deinterleavedAmps[LDPC_TOTAL_SIZE_BITS / 2]; float incomingData[LDPC_TOTAL_SIZE_BITS]; float llr[LDPC_TOTAL_SIZE_BITS]; unsigned char output[LDPC_TOTAL_SIZE_BITS]; int parityCheckCount = 0; if (obj->bit_index == obj->sym_index * 2) { // Use soft decision for the LDPC decoder. int Npayloadsymsperpacket = LDPC_TOTAL_SIZE_BITS / 2; // Deinterleave symbols gp_deinterleave_comp( (COMP*)deinterleavedSyms, (COMP*)&obj->inbound_pending_syms[RELIABLE_TEXT_UW_LENGTH_BITS / 2], Npayloadsymsperpacket); gp_deinterleave_float( deinterleavedAmps, &obj->inbound_pending_amps[RELIABLE_TEXT_UW_LENGTH_BITS / 2], Npayloadsymsperpacket); float EsNo = 3.0; // note: constant from freedv_700.c symbols_to_llrs(llr, (COMP*)deinterleavedSyms, deinterleavedAmps, EsNo, obj->fdv->ofdm->mean_amp, Npayloadsymsperpacket); } else { // Deinterlace the received bits. gp_deinterleave_bits(deinterleavedBits, src, LDPC_TOTAL_SIZE_BITS / 2); // We don't have symbol data (likely due to incorrect mode), so we fall back // to hard decision. for (int bitIndex = 0; bitIndex < LDPC_TOTAL_SIZE_BITS; bitIndex++) { // fprintf(stderr, "rx bit %d: %d\n", bitIndex, // deinterleavedBits[bitIndex]); // Map to value expected by sd_to_llr() incomingData[bitIndex] = 1.0 - 2.0 * deinterleavedBits[bitIndex]; } sd_to_llr(llr, incomingData, LDPC_TOTAL_SIZE_BITS); } run_ldpc_decoder(&obj->ldpc, output, llr, &parityCheckCount); // Data is valid if BER < 0.2 float ber_est = (float)(obj->ldpc.NumberParityBits - parityCheckCount) / obj->ldpc.NumberParityBits; int result = (ber_est < 0.2); // fprintf(stderr, "BER est: %f\n", ber_est); if (result) { memset(dest, 0, RELIABLE_TEXT_BYTES_PER_ENCODED_SEGMENT); for (int bitIndex = 0; bitIndex < 8; bitIndex++) { if (output[bitIndex]) dest[0] |= 1 << bitIndex; } for (int bitIndex = 8; bitIndex < (LDPC_TOTAL_SIZE_BITS / 2); bitIndex++) { int bitsSinceCrc = bitIndex - 8; if (output[bitIndex]) dest[1 + (bitsSinceCrc / 6)] |= (1 << (bitsSinceCrc % 6)); } } return result; } static void reliable_text_freedv_callback_rx_sym(void* state, _Complex float sym, float amp) { reliable_text_impl_t* obj = (reliable_text_impl_t*)state; assert(obj != NULL); // Save the symbol. We'll use it during the bit handling below. obj->inbound_pending_syms[obj->sym_index] = (complex float)sym; obj->inbound_pending_amps[obj->sym_index++] = amp; // fprintf(stderr, "Got sym: %f, amp: %f\n", sym, amp); } static int check_uw(reliable_text_impl_t* obj) { assert(obj != NULL); // Count number of errors in UW. int num_zeroes = 0; for (int bit = 0; bit < RELIABLE_TEXT_UW_LENGTH_BITS; bit++) { if (obj->inbound_pending_bits[bit] ^ 1) { num_zeroes++; } } return num_zeroes <= RELIABLE_TEXT_MAX_ZEROES_IN_UW; } static void reliable_text_freedv_callback_rx(void* state, char chr) { // fprintf(stderr, "char: %d\n", (chr & 0x3F)); reliable_text_impl_t* obj = (reliable_text_impl_t*)state; assert(obj != NULL); // No need to further process if we got a valid string already. if (obj->has_successfully_decoded) { return; } // Append character to the end of the symbol list. obj->inbound_pending_bits[obj->bit_index++] = chr; // Verify UW and data. if (obj->bit_index >= RELIABLE_TEXT_UW_LENGTH_BITS + LDPC_TOTAL_SIZE_BITS) { int uw_bits_valid = check_uw(obj); // Only verify data if UW is valid. int resync = !uw_bits_valid; if (uw_bits_valid) { // We have all the bits we need, so we're ready to decode. char decodedStr[RELIABLE_TEXT_MAX_RAW_LENGTH + 1]; char rawStr[RELIABLE_TEXT_MAX_RAW_LENGTH + 1]; memset(rawStr, 0, RELIABLE_TEXT_MAX_RAW_LENGTH + 1); memset(decodedStr, 0, RELIABLE_TEXT_MAX_RAW_LENGTH + 1); if (reliable_text_ldpc_decode(obj, rawStr) != 0) { // BER is under limits. convert_ota_string_to_callsign_(&rawStr[RELIABLE_TEXT_CRC_LENGTH], &decodedStr[RELIABLE_TEXT_CRC_LENGTH], RELIABLE_TEXT_MAX_LENGTH); decodedStr[0] = rawStr[0]; // CRC // Get expected and actual CRC. unsigned char receivedCRC = decodedStr[0]; unsigned char calcCRC = calculateCRC8_( &rawStr[RELIABLE_TEXT_CRC_LENGTH], RELIABLE_TEXT_MAX_LENGTH); // fprintf(stderr, "rxCRC: %d, calcCRC: %d, decodedStr: %s\n", // receivedCRC, calcCRC, &decodedStr[RELIABLE_TEXT_CRC_LENGTH]); if (receivedCRC == calcCRC) { // We got a valid string. Call assigned callback. obj->has_successfully_decoded = 1; obj->text_rx_callback(obj, &decodedStr[RELIABLE_TEXT_CRC_LENGTH], strlen(&decodedStr[RELIABLE_TEXT_CRC_LENGTH]), obj->callback_state); } // Reset UW decoding for next callsign. obj->bit_index = 0; obj->sym_index = 0; memset(&obj->inbound_pending_syms, 0, sizeof(complex float) * LDPC_TOTAL_SIZE_BITS / 2); memset(&obj->inbound_pending_amps, 0, sizeof(float) * LDPC_TOTAL_SIZE_BITS / 2); memset(&obj->inbound_pending_bits, 0, LDPC_TOTAL_SIZE_BITS + RELIABLE_TEXT_UW_LENGTH_BITS); } else { // It's possible that we didn't actually sync on UW after all. // Shift existing UW back 1 bit (or 2 if OFDM), add the bit(s) // from the data portion to UW, and try again next bit(s) we receive. resync = 1; } } if (resync) { obj->bit_index--; memmove(&obj->inbound_pending_bits[0], &obj->inbound_pending_bits[1], RELIABLE_TEXT_UW_LENGTH_BITS + LDPC_TOTAL_SIZE_BITS - 1); if (obj->sym_index > 0) { memmove(&obj->inbound_pending_bits[0], &obj->inbound_pending_bits[1], RELIABLE_TEXT_UW_LENGTH_BITS + LDPC_TOTAL_SIZE_BITS - 1); memmove(&obj->inbound_pending_syms[0], &obj->inbound_pending_syms[1], sizeof(_Complex float) * ((RELIABLE_TEXT_UW_LENGTH_BITS + LDPC_TOTAL_SIZE_BITS) / 2 - 1)); memmove(&obj->inbound_pending_amps[0], &obj->inbound_pending_amps[1], sizeof(float) * ((RELIABLE_TEXT_UW_LENGTH_BITS + LDPC_TOTAL_SIZE_BITS) / 2 - 1)); obj->bit_index--; obj->sym_index--; } } } } static char reliable_text_freedv_callback_tx(void* state) { reliable_text_impl_t* obj = (reliable_text_impl_t*)state; assert(obj != NULL); char ret = obj->tx_text[obj->tx_text_index]; obj->tx_text_index = (obj->tx_text_index + 1) % (obj->tx_text_length); // fprintf(stderr, "char: %d\n", ret); return ret; } reliable_text_t reliable_text_create() { reliable_text_impl_t* ret = calloc(1, sizeof(reliable_text_impl_t)); assert(ret != NULL); // Load LDPC code into memory. int code_index = ldpc_codes_find("HRA_56_56"); memcpy(&ret->ldpc, &ldpc_codes[code_index], sizeof(struct LDPC)); return (reliable_text_t)ret; } void reliable_text_destroy(reliable_text_t ptr) { assert(ptr != NULL); reliable_text_unlink_from_freedv(ptr); free(ptr); } void reliable_text_reset(reliable_text_t ptr) { reliable_text_impl_t* impl = (reliable_text_impl_t*)ptr; assert(impl != NULL); impl->bit_index = 0; impl->sym_index = 0; impl->has_successfully_decoded = 0; memset(&impl->inbound_pending_syms, 0, sizeof(complex float) * LDPC_TOTAL_SIZE_BITS / 2); memset(&impl->inbound_pending_amps, 0, sizeof(float) * LDPC_TOTAL_SIZE_BITS / 2); memset(&impl->inbound_pending_bits, 0, LDPC_TOTAL_SIZE_BITS + RELIABLE_TEXT_UW_LENGTH_BITS); } void reliable_text_set_string(reliable_text_t ptr, const char* str, int strlength) { reliable_text_impl_t* impl = (reliable_text_impl_t*)ptr; assert(impl != NULL); char tmp[RELIABLE_TEXT_MAX_RAW_LENGTH + 1]; memset(tmp, 0, RELIABLE_TEXT_MAX_RAW_LENGTH + 1); convert_callsign_to_ota_string_(str, &tmp[RELIABLE_TEXT_CRC_LENGTH], strlength < RELIABLE_TEXT_MAX_LENGTH ? strlength : RELIABLE_TEXT_MAX_LENGTH); int txt_length = strlen(&tmp[RELIABLE_TEXT_CRC_LENGTH]); if (txt_length >= RELIABLE_TEXT_MAX_LENGTH) { txt_length = RELIABLE_TEXT_MAX_LENGTH; } impl->tx_text_length = RELIABLE_TEXT_UW_LENGTH_BITS + LDPC_TOTAL_SIZE_BITS; impl->tx_text_index = 0; unsigned char crc = calculateCRC8_(&tmp[RELIABLE_TEXT_CRC_LENGTH], txt_length); tmp[0] = crc; // Encode block of text using LDPC(112,56). unsigned char ibits[LDPC_TOTAL_SIZE_BITS / 2]; unsigned char pbits[LDPC_TOTAL_SIZE_BITS / 2]; memset(ibits, 0, LDPC_TOTAL_SIZE_BITS / 2); memset(pbits, 0, LDPC_TOTAL_SIZE_BITS / 2); for (int index = 0; index < 8; index++) { if (tmp[0] & (1 << index)) ibits[index] = 1; } // Pack 6 bit characters into single LDPC block. for (int ibitsBitIndex = 8; ibitsBitIndex < (LDPC_TOTAL_SIZE_BITS / 2); ibitsBitIndex++) { int bitsFromCrc = ibitsBitIndex - 8; unsigned int byte = tmp[RELIABLE_TEXT_CRC_LENGTH + bitsFromCrc / 6]; unsigned int bitToCheck = bitsFromCrc % 6; // fprintf(stderr, "bit index: %d, byte: %x, bit to check: %d, result: // %d\n", ibitsBitIndex, byte, bitToCheck, (byte & (1 << bitToCheck)) != 0); if (byte & (1 << bitToCheck)) { ibits[ibitsBitIndex] = 1; } } encode(&impl->ldpc, ibits, pbits); // Split LDPC encoded bits into individual bits, with the first // RELIABLE_TEXT_UW_LENGTH_BITS being UW. char tmpbits[LDPC_TOTAL_SIZE_BITS]; memset(impl->tx_text, 1, RELIABLE_TEXT_UW_LENGTH_BITS); memset(impl->tx_text + RELIABLE_TEXT_UW_LENGTH_BITS, 0, LDPC_TOTAL_SIZE_BITS); memcpy(&tmpbits[0], &ibits[0], LDPC_TOTAL_SIZE_BITS / 2); memcpy(&tmpbits[LDPC_TOTAL_SIZE_BITS / 2], &pbits[0], LDPC_TOTAL_SIZE_BITS / 2); // Interleave the bits together to enhance fading performance. gp_interleave_bits(&impl->tx_text[RELIABLE_TEXT_UW_LENGTH_BITS], tmpbits, LDPC_TOTAL_SIZE_BITS / 2); } void reliable_text_use_with_freedv(reliable_text_t ptr, struct freedv* fdv, on_text_rx_t text_rx_fn, void* state) { reliable_text_impl_t* impl = (reliable_text_impl_t*)ptr; assert(impl != NULL); impl->callback_state = state; impl->text_rx_callback = text_rx_fn; impl->fdv = fdv; freedv_set_callback_txt(fdv, reliable_text_freedv_callback_rx, reliable_text_freedv_callback_tx, impl); freedv_set_callback_txt_sym(fdv, reliable_text_freedv_callback_rx_sym, impl); // Use code 3 for varicode en/decode and handle all framing at this level. varicode_set_code_num(&fdv->varicode_dec_states, 3); } struct freedv* reliable_text_get_freedv_obj(reliable_text_t ptr) { reliable_text_impl_t* impl = (reliable_text_impl_t*)ptr; assert(impl != NULL); return impl->fdv; } void reliable_text_unlink_from_freedv(reliable_text_t ptr) { reliable_text_impl_t* impl = (reliable_text_impl_t*)ptr; assert(impl != NULL); if (impl->fdv) { freedv_set_callback_txt(impl->fdv, NULL, NULL, NULL); freedv_set_callback_txt_sym(impl->fdv, NULL, NULL); varicode_set_code_num(&impl->fdv->varicode_dec_states, 1); impl->fdv = NULL; } } codec2-1.2.0/src/reliable_text.h000066400000000000000000000044471445607075400164610ustar00rootroot00000000000000//========================================================================== // Name: reliable_text.h // // Purpose: Handles reliable text (e.g. text with FEC). // Created: August 15, 2021 // Authors: Mooneer Salem // // License: // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License version 2.1, // as published by the Free Software Foundation. This program is // distributed in the hope that it will be useful, but WITHOUT ANY // WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public // License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with this program; if not, see . // //========================================================================== #ifndef RELIABLE_TEXT_H #define RELIABLE_TEXT_H #ifdef __cplusplus extern "C" { #endif // __cplusplus /* Forward define struct freedv for use by the function prototypes below. */ struct freedv; /* Hide internals of reliable_text_t. */ typedef void* reliable_text_t; /* Function type for callback (when full reliable text has been received). */ typedef void (*on_text_rx_t)(reliable_text_t rt, const char* txt_ptr, int length, void* state); /* Allocate reliable_text object. */ reliable_text_t reliable_text_create(); /* Destroy reliable_text object. */ void reliable_text_destroy(reliable_text_t ptr); /* Reset reliable_text object for next sync. */ void reliable_text_reset(reliable_text_t ptr); /* Sets string that is sent on TX. */ void reliable_text_set_string(reliable_text_t ptr, const char* str, int strlength); /* Link FreeDV object to reliable_text object. */ void reliable_text_use_with_freedv(reliable_text_t ptr, struct freedv* fdv, on_text_rx_t text_rx_fn, void* state); /* Returns associated struct freedv object. */ struct freedv* reliable_text_get_freedv_obj(reliable_text_t ptr); /* Unlink FreeDV object from reliable_text object. */ void reliable_text_unlink_from_freedv(reliable_text_t ptr); #ifdef __cplusplus } #endif // __cplusplus #endif // RELIABLE_TEXT_H codec2-1.2.0/src/rn.h000066400000000000000000000334371445607075400142560ustar00rootroot00000000000000/* Generated by rn_file() Octave function */ const float gt_alpha5_root[] = { 2.86997e-05, 2.2286e-05, 1.82863e-05, 1.42303e-05, 1.04905e-05, 6.70859e-06, 3.05918e-06, -6.22187e-07, -4.22748e-06, -7.85603e-06, -1.14317e-05, -1.50227e-05, -1.85712e-05, -2.21275e-05, -2.56455e-05, -2.91642e-05, -3.26453e-05, -3.61199e-05, -3.95556e-05, -4.29778e-05, -4.63581e-05, -4.97179e-05, -5.3032e-05, -5.63184e-05, -5.95548e-05, -6.27565e-05, -6.59032e-05, -6.90085e-05, -7.20538e-05, -7.50509e-05, -7.7983e-05, -8.08605e-05, -8.36678e-05, -8.64141e-05, -8.9085e-05, -9.16888e-05, -9.42119e-05, -9.66619e-05, -9.9026e-05, -0.000101311, -0.000103505, -0.000105614, -0.000107627, -0.00010955, -0.000111372, -0.000113099, -0.00011472, -0.000116241, -0.000117652, -0.000118959, -0.000120152, -0.000121235, -0.000122201, -0.000123053, -0.000123784, -0.000124397, -0.000124884, -0.00012525, -0.000125487, -0.000125598, -0.000125578, -0.000125428, -0.000125145, -0.000124729, -0.000124185, -0.000123518, -0.000122709, -0.000121766, -0.000120685, -0.000119471, -0.000118119, -0.000116633, -0.000115009, -0.000113251, -0.000111356, -0.000109326, -0.00010716, -0.00010486, -0.000102424, -9.98553e-05, -9.71528e-05, -9.43199e-05, -9.13551e-05, -8.82623e-05, -8.50404e-05, -8.16936e-05, -7.82211e-05, -7.46271e-05, -7.09109e-05, -6.70773e-05, -6.31256e-05, -5.90607e-05, -5.48823e-05, -5.05954e-05, -4.62001e-05, -4.17016e-05, -3.71002e-05, -3.24015e-05, -2.7606e-05, -2.27195e-05, -1.77428e-05, -1.2682e-05, -7.53795e-06, -2.31702e-06, 2.97965e-06, 8.34567e-06, 1.37796e-05, 1.9275e-05, 2.483e-05, 3.04382e-05, 3.60975e-05, 4.18011e-05, 4.75467e-05, 5.33273e-05, 5.91403e-05, 6.49787e-05, 7.08393e-05, 7.67152e-05, 8.26029e-05, 8.84957e-05, 9.43895e-05, 0.000100278, 0.000106157, 0.00011202, 0.000117864, 0.000123681, 0.000129468, 0.000135218, 0.000140929, 0.000146583, 0.000152183, 0.000157725, 0.000163202, 0.000168608, 0.000173938, 0.000179183, 0.00018434, 0.0001894, 0.00019436, 0.000199211, 0.000203949, 0.000208568, 0.000213063, 0.000217426, 0.000221654, 0.00022574, 0.000229678, 0.000233463, 0.000237089, 0.000240551, 0.000243843, 0.000246959, 0.000249895, 0.000252644, 0.000255202, 0.000257562, 0.000259721, 0.000261672, 0.000263411, 0.000264933, 0.000266234, 0.000267308, 0.000268152, 0.00026876, 0.000269128, 0.000269253, 0.000269129, 0.000268754, 0.000268123, 0.000267232, 0.000266079, 0.000264658, 0.000262968, 0.000261006, 0.000258767, 0.000256251, 0.000253453, 0.000250373, 0.000247007, 0.000243354, 0.000239412, 0.00023518, 0.000230655, 0.000225837, 0.000220723, 0.000215314, 0.000209608, 0.000203605, 0.000197304, 0.000190706, 0.000183812, 0.000176621, 0.000169145, 0.000161363, 0.000153275, 0.000144895, 0.000136224, 0.000127266, 0.00011802, 0.000108491, 9.8679e-05, 8.85877e-05, 7.82196e-05, 6.7577e-05, 5.66636e-05, 4.54822e-05, 3.40369e-05, 2.23311e-05, 1.03695e-05, -1.844e-06, -1.43041e-05, -2.70061e-05, -3.99444e-05, -5.31139e-05, -6.65082e-05, -8.01218e-05, -9.39481e-05, -0.000107981, -0.000122213, -0.000136638, -0.000151248, -0.000166036, -0.000180995, -0.000196115, -0.00021139, -0.000226811, -0.000242369, -0.000258056, -0.000273861, -0.000289776, -0.000305792, -0.000321898, -0.000338084, -0.000354342, -0.00037066, -0.000387027, -0.000403434, -0.00041987, -0.000436324, -0.000452784, -0.00046924, -0.00048568, -0.000502091, -0.000518464, -0.000534785, -0.000551043, -0.000567225, -0.000583319, -0.000599314, -0.000615196, -0.000630955, -0.000646575, -0.000662049, -0.000677361, -0.000692506, -0.000707464, -0.00072229, -0.000736922, -0.000751266, -0.000765372, -0.000779217, -0.000792798, -0.000806094, -0.000819098, -0.000831793, -0.000844168, -0.000856207, -0.000867898, -0.000879227, -0.00089018, -0.000900744, -0.000910906, -0.000920652, -0.00092997, -0.000938844, -0.000947263, -0.000955214, -0.000962682, -0.000969654, -0.000976119, -0.000982062, -0.00098747, -0.000992332, -0.000996634, -0.00100036, -0.00100351, -0.00100606, -0.001008, -0.00100932, -0.00101, -0.00101005, -0.00100943, -0.00100816, -0.0010062, -0.00100356, -0.00100021, -0.000996162, -0.000991392, -0.000985892, -0.000979654, -0.000972668, -0.000964925, -0.000956415, -0.000947131, -0.000937065, -0.000926208, -0.000914552, -0.00090209, -0.000888816, -0.000874721, -0.0008598, -0.000844046, -0.000827453, -0.000810015, -0.000791726, -0.000772581, -0.000752576, -0.000731704, -0.000709965, -0.00068735, -0.000663865, -0.000639509, -0.000614269, -0.000588146, -0.000561139, -0.000533246, -0.000504468, -0.000474802, -0.000444251, -0.000412813, -0.00038049, -0.000347281, -0.000313189, -0.000278215, -0.000242361, -0.000205629, -0.000168024, -0.000129546, -9.02024e-05, -4.99954e-05, -8.93026e-06, 3.2988e-05, 7.57537e-05, 0.000119361, 0.000163804, 0.000209075, 0.000255167, 0.000302074, 0.000349786, 0.000398297, 0.000447596, 0.000497676, 0.000548526, 0.000600136, 0.000652497, 0.000705598, 0.000759427, 0.000813972, 0.000869223, 0.000925166, 0.000981789, 0.00103908, 0.00109702, 0.00115561, 0.00121482, 0.00127464, 0.00133505, 0.00139605, 0.00145762, 0.00151973, 0.00158238, 0.00164555, 0.00170922, 0.00177337, 0.00183799, 0.00190305, 0.00196854, 0.00203445, 0.00210075, 0.00216742, 0.00223445, 0.00230181, 0.00236949, 0.00243747, 0.00250572, 0.00257423, 0.00264296, 0.00271192, 0.00278107, 0.00285039, 0.00291986, 0.00298947, 0.00305918, 0.00312898, 0.00319884, 0.00326874, 0.00333866, 0.00340857, 0.00347846, 0.00354831, 0.00361808, 0.00368775, 0.00375731, 0.00382673, 0.00389599, 0.00396506, 0.00403393, 0.00410256, 0.00417094, 0.00423904, 0.00430684, 0.00437431, 0.00444144, 0.0045082, 0.00457457, 0.00464052, 0.00470603, 0.00477108, 0.00483565, 0.00489972, 0.00496325, 0.00502623, 0.00508865, 0.00515046, 0.00521166, 0.00527223, 0.00533213, 0.00539135, 0.00544987, 0.00550766, 0.00556472, 0.005621, 0.00567651, 0.00573121, 0.00578508, 0.00583811, 0.00589028, 0.00594157, 0.00599196, 0.00604143, 0.00608996, 0.00613754, 0.00618415, 0.00622977, 0.00627439, 0.00631798, 0.00636054, 0.00640204, 0.0064425, 0.00648186, 0.00652009, 0.00655722, 0.00659322, 0.00662808, 0.00666179, 0.00669433, 0.00672571, 0.00675589, 0.00678488, 0.00681266, 0.00683921, 0.00686454, 0.00688863, 0.00691147, 0.00693305, 0.00695336, 0.0069724, 0.00699016, 0.00700663, 0.00702181, 0.00703569, 0.00704826, 0.00705952, 0.00706947, 0.00707809, 0.0070854, 0.00709138, 0.00709604, 0.00709937, 0.00710136, 0.00710203, 0.00710136, 0.00709937, 0.00709604, 0.00709138, 0.0070854, 0.00707809, 0.00706947, 0.00705952, 0.00704826, 0.00703569, 0.00702181, 0.00700663, 0.00699016, 0.0069724, 0.00695336, 0.00693305, 0.00691147, 0.00688863, 0.00686454, 0.00683921, 0.00681266, 0.00678488, 0.00675589, 0.00672571, 0.00669433, 0.00666179, 0.00662808, 0.00659322, 0.00655722, 0.00652009, 0.00648186, 0.0064425, 0.00640204, 0.00636054, 0.00631798, 0.00627439, 0.00622977, 0.00618415, 0.00613754, 0.00608996, 0.00604143, 0.00599196, 0.00594157, 0.00589028, 0.00583811, 0.00578508, 0.00573121, 0.00567651, 0.005621, 0.00556472, 0.00550766, 0.00544987, 0.00539135, 0.00533213, 0.00527223, 0.00521166, 0.00515046, 0.00508865, 0.00502623, 0.00496325, 0.00489972, 0.00483565, 0.00477108, 0.00470603, 0.00464052, 0.00457457, 0.0045082, 0.00444144, 0.00437431, 0.00430684, 0.00423904, 0.00417094, 0.00410256, 0.00403393, 0.00396506, 0.00389599, 0.00382673, 0.00375731, 0.00368775, 0.00361808, 0.00354831, 0.00347846, 0.00340857, 0.00333866, 0.00326874, 0.00319884, 0.00312898, 0.00305918, 0.00298947, 0.00291986, 0.00285039, 0.00278107, 0.00271192, 0.00264296, 0.00257423, 0.00250572, 0.00243747, 0.00236949, 0.00230181, 0.00223445, 0.00216742, 0.00210075, 0.00203445, 0.00196854, 0.00190305, 0.00183799, 0.00177337, 0.00170922, 0.00164555, 0.00158238, 0.00151973, 0.00145762, 0.00139605, 0.00133505, 0.00127464, 0.00121482, 0.00115561, 0.00109702, 0.00103908, 0.000981789, 0.000925166, 0.000869223, 0.000813972, 0.000759427, 0.000705598, 0.000652497, 0.000600136, 0.000548526, 0.000497676, 0.000447596, 0.000398297, 0.000349786, 0.000302074, 0.000255167, 0.000209075, 0.000163804, 0.000119361, 7.57537e-05, 3.2988e-05, -8.93026e-06, -4.99954e-05, -9.02024e-05, -0.000129546, -0.000168024, -0.000205629, -0.000242361, -0.000278215, -0.000313189, -0.000347281, -0.00038049, -0.000412813, -0.000444251, -0.000474802, -0.000504468, -0.000533246, -0.000561139, -0.000588146, -0.000614269, -0.000639509, -0.000663865, -0.00068735, -0.000709965, -0.000731704, -0.000752576, -0.000772581, -0.000791726, -0.000810015, -0.000827453, -0.000844046, -0.0008598, -0.000874721, -0.000888816, -0.00090209, -0.000914552, -0.000926208, -0.000937065, -0.000947131, -0.000956415, -0.000964925, -0.000972668, -0.000979654, -0.000985892, -0.000991392, -0.000996162, -0.00100021, -0.00100356, -0.0010062, -0.00100816, -0.00100943, -0.00101005, -0.00101, -0.00100932, -0.001008, -0.00100606, -0.00100351, -0.00100036, -0.000996634, -0.000992332, -0.00098747, -0.000982062, -0.000976119, -0.000969654, -0.000962682, -0.000955214, -0.000947263, -0.000938844, -0.00092997, -0.000920652, -0.000910906, -0.000900744, -0.00089018, -0.000879227, -0.000867898, -0.000856207, -0.000844168, -0.000831793, -0.000819098, -0.000806094, -0.000792798, -0.000779217, -0.000765372, -0.000751266, -0.000736922, -0.00072229, -0.000707464, -0.000692506, -0.000677361, -0.000662049, -0.000646575, -0.000630955, -0.000615196, -0.000599314, -0.000583319, -0.000567225, -0.000551043, -0.000534785, -0.000518464, -0.000502091, -0.00048568, -0.00046924, -0.000452784, -0.000436324, -0.00041987, -0.000403434, -0.000387027, -0.00037066, -0.000354342, -0.000338084, -0.000321898, -0.000305792, -0.000289776, -0.000273861, -0.000258056, -0.000242369, -0.000226811, -0.00021139, -0.000196115, -0.000180995, -0.000166036, -0.000151248, -0.000136638, -0.000122213, -0.000107981, -9.39481e-05, -8.01218e-05, -6.65082e-05, -5.31139e-05, -3.99444e-05, -2.70061e-05, -1.43041e-05, -1.844e-06, 1.03695e-05, 2.23311e-05, 3.40369e-05, 4.54822e-05, 5.66636e-05, 6.7577e-05, 7.82196e-05, 8.85877e-05, 9.8679e-05, 0.000108491, 0.00011802, 0.000127266, 0.000136224, 0.000144895, 0.000153275, 0.000161363, 0.000169145, 0.000176621, 0.000183812, 0.000190706, 0.000197304, 0.000203605, 0.000209608, 0.000215314, 0.000220723, 0.000225837, 0.000230655, 0.00023518, 0.000239412, 0.000243354, 0.000247007, 0.000250373, 0.000253453, 0.000256251, 0.000258767, 0.000261006, 0.000262968, 0.000264658, 0.000266079, 0.000267232, 0.000268123, 0.000268754, 0.000269129, 0.000269253, 0.000269128, 0.00026876, 0.000268152, 0.000267308, 0.000266234, 0.000264933, 0.000263411, 0.000261672, 0.000259721, 0.000257562, 0.000255202, 0.000252644, 0.000249895, 0.000246959, 0.000243843, 0.000240551, 0.000237089, 0.000233463, 0.000229678, 0.00022574, 0.000221654, 0.000217426, 0.000213063, 0.000208568, 0.000203949, 0.000199211, 0.00019436, 0.0001894, 0.00018434, 0.000179183, 0.000173938, 0.000168608, 0.000163202, 0.000157725, 0.000152183, 0.000146583, 0.000140929, 0.000135218, 0.000129468, 0.000123681, 0.000117864, 0.00011202, 0.000106157, 0.000100278, 9.43895e-05, 8.84957e-05, 8.26029e-05, 7.67152e-05, 7.08393e-05, 6.49787e-05, 5.91403e-05, 5.33273e-05, 4.75467e-05, 4.18011e-05, 3.60975e-05, 3.04382e-05, 2.483e-05, 1.9275e-05, 1.37796e-05, 8.34567e-06, 2.97965e-06, -2.31702e-06, -7.53795e-06, -1.2682e-05, -1.77428e-05, -2.27195e-05, -2.7606e-05, -3.24015e-05, -3.71002e-05, -4.17016e-05, -4.62001e-05, -5.05954e-05, -5.48823e-05, -5.90607e-05, -6.31256e-05, -6.70773e-05, -7.09109e-05, -7.46271e-05, -7.82211e-05, -8.16936e-05, -8.50404e-05, -8.82623e-05, -9.13551e-05, -9.43199e-05, -9.71528e-05, -9.98553e-05, -0.000102424, -0.00010486, -0.00010716, -0.000109326, -0.000111356, -0.000113251, -0.000115009, -0.000116633, -0.000118119, -0.000119471, -0.000120685, -0.000121766, -0.000122709, -0.000123518, -0.000124185, -0.000124729, -0.000125145, -0.000125428, -0.000125578, -0.000125598, -0.000125487, -0.00012525, -0.000124884, -0.000124397, -0.000123784, -0.000123053, -0.000122201, -0.000121235, -0.000120152, -0.000118959, -0.000117652, -0.000116241, -0.00011472, -0.000113099, -0.000111372, -0.00010955, -0.000107627, -0.000105614, -0.000103505, -0.000101311, -9.9026e-05, -9.66619e-05, -9.42119e-05, -9.16888e-05, -8.9085e-05, -8.64141e-05, -8.36678e-05, -8.08605e-05, -7.7983e-05, -7.50509e-05, -7.20538e-05, -6.90085e-05, -6.59032e-05, -6.27565e-05, -5.95548e-05, -5.63184e-05, -5.3032e-05, -4.97179e-05, -4.63581e-05, -4.29778e-05, -3.95556e-05, -3.61199e-05, -3.26453e-05, -2.91642e-05, -2.56455e-05, -2.21275e-05, -1.85712e-05, -1.50227e-05, -1.14317e-05, -7.85603e-06, -4.22748e-06, -6.22187e-07, 3.05918e-06, 6.70859e-06, 1.04905e-05, 1.42303e-05, 1.82863e-05, 2.2286e-05}; codec2-1.2.0/src/rn_coh.h000066400000000000000000000634071445607075400151070ustar00rootroot00000000000000/* Generated by rn_file() Octave function */ const float gt_alpha5_root_coh[] = { 4.05576e-05, 2.58255e-05, 1.58964e-05, 5.78773e-06, -3.71244e-06, -1.33229e-05, -2.2664e-05, -3.20611e-05, -4.12734e-05, -5.04935e-05, -5.9545e-05, -6.85565e-05, -7.73902e-05, -8.6137e-05, -9.46835e-05, -0.000103097, -0.000111281, -0.000119289, -0.000127034, -0.000134559, -0.000141789, -0.000148756, -0.000155393, -0.000161723, -0.000167689, -0.000173315, -0.00017854, -0.000183382, -0.000187794, -0.000191793, -0.000195333, -0.000198429, -0.000201038, -0.000203173, -0.000204797, -0.000205922, -0.000206515, -0.00020659, -0.000206117, -0.000205109, -0.000203541, -0.000201427, -0.000198743, -0.000195505, -0.000191693, -0.000187324, -0.000182382, -0.000176885, -0.000170822, -0.00016421, -0.000157041, -0.000149335, -0.000141089, -0.000132323, -0.000123038, -0.000113258, -0.000102985, -9.22439e-05, -8.10442e-05, -6.94109e-05, -5.73536e-05, -4.49012e-05, -3.20661e-05, -1.88794e-05, -5.35615e-06, 8.47105e-06, 2.25833e-05, 3.69472e-05, 5.15418e-05, 6.63317e-05, 8.12934e-05, 9.63895e-05, 0.000111594, 0.000126869, 0.000142183, 0.000157497, 0.000172781, 0.000187996, 0.000203111, 0.000218088, 0.000232892, 0.000247474, 0.000261806, 0.000275847, 0.000289559, 0.000302903, 0.000315839, 0.00032833, 0.000340339, 0.000351824, 0.000362751, 0.00037308, 0.000382774, 0.000391795, 0.000400108, 0.000407675, 0.000414464, 0.000420437, 0.000425565, 0.000429812, 0.000433151, 0.000435544, 0.000436975, 0.000437401, 0.000436865, 0.000435237, 0.00043246, 0.000428592, 0.000423608, 0.000417497, 0.00041024, 0.000401823, 0.000392231, 0.000381449, 0.000369471, 0.000356284, 0.000341885, 0.000326267, 0.00030943, 0.000291373, 0.000272099, 0.000251612, 0.000229921, 0.000207034, 0.000182964, 0.000157726, 0.000131338, 0.000103821, 7.51956e-05, 4.54842e-05, 1.4721e-05, -1.7067e-05, -4.98479e-05, -8.35883e-05, -0.000118248, -0.00015379, -0.000190167, -0.000227336, -0.000265248, -0.000303856, -0.000343104, -0.000382942, -0.00042331, -0.000464152, -0.000505403, -0.000547003, -0.000588883, -0.000630979, -0.000673218, -0.000715533, -0.000757849, -0.000800092, -0.000842187, -0.000884054, -0.000925613, -0.000966788, -0.00100749, -0.00104765, -0.00108717, -0.00112597, -0.00116397, -0.00120108, -0.0012372, -0.00127227, -0.00130617, -0.00133884, -0.00137017, -0.00140008, -0.00142848, -0.00145528, -0.0014804, -0.00150374, -0.00152522, -0.00154475, -0.00156225, -0.00157763, -0.00159081, -0.00160171, -0.00161024, -0.00161633, -0.0016199, -0.00162088, -0.00161917, -0.00161472, -0.00160744, -0.00159729, -0.00158419, -0.00156807, -0.00154888, -0.00152655, -0.00150103, -0.00147227, -0.00144021, -0.00140482, -0.00136604, -0.00132384, -0.00127818, -0.00122903, -0.00117635, -0.00112013, -0.00106033, -0.000996946, -0.000929956, -0.000859348, -0.000785117, -0.000707261, -0.000625779, -0.00054068, -0.000451952, -0.000359651, -0.000263788, -0.00016436, -6.13947e-05, 4.5076e-05, 0.000155016, 0.000268384, 0.000385134, 0.000505217, 0.000628582, 0.000755171, 0.000884923, 0.00101777, 0.00115366, 0.00129249, 0.00143421, 0.00157873, 0.00172596, 0.00187583, 0.00202822, 0.00218306, 0.00234023, 0.00249965, 0.00266119, 0.00282475, 0.00299023, 0.00315749, 0.00332643, 0.00349691, 0.00366882, 0.00384202, 0.00401639, 0.0041918, 0.0043681, 0.00454516, 0.00472285, 0.00490101, 0.00507951, 0.00525821, 0.00543695, 0.0056156, 0.005794, 0.00597201, 0.00614947, 0.00632623, 0.00650216, 0.00667708, 0.00685086, 0.00702335, 0.00719439, 0.00736383, 0.00753153, 0.00769734, 0.00786111, 0.00802269, 0.00818194, 0.00833872, 0.00849289, 0.0086443, 0.00879283, 0.00893832, 0.00908066, 0.00921971, 0.00935534, 0.00948743, 0.00961585, 0.00974049, 0.00986123, 0.00997795, 0.0100905, 0.0101989, 0.0103029, 0.0104025, 0.0104976, 0.0105881, 0.0106738, 0.0107548, 0.010831, 0.0109022, 0.0109684, 0.0110295, 0.0110855, 0.0111364, 0.011182, 0.0112224, 0.0112575, 0.0112872, 0.0113115, 0.0113305, 0.0113441, 0.0113522, 0.0113549, 0.0113522, 0.0113441, 0.0113305, 0.0113115, 0.0112872, 0.0112575, 0.0112224, 0.011182, 0.0111364, 0.0110855, 0.0110295, 0.0109684, 0.0109022, 0.010831, 0.0107548, 0.0106738, 0.0105881, 0.0104976, 0.0104025, 0.0103029, 0.0101989, 0.0100905, 0.00997795, 0.00986123, 0.00974049, 0.00961585, 0.00948743, 0.00935534, 0.00921971, 0.00908066, 0.00893832, 0.00879283, 0.0086443, 0.00849289, 0.00833872, 0.00818194, 0.00802269, 0.00786111, 0.00769734, 0.00753153, 0.00736383, 0.00719439, 0.00702335, 0.00685086, 0.00667708, 0.00650216, 0.00632623, 0.00614947, 0.00597201, 0.005794, 0.0056156, 0.00543695, 0.00525821, 0.00507951, 0.00490101, 0.00472285, 0.00454516, 0.0043681, 0.0041918, 0.00401639, 0.00384202, 0.00366882, 0.00349691, 0.00332643, 0.00315749, 0.00299023, 0.00282475, 0.00266119, 0.00249965, 0.00234023, 0.00218306, 0.00202822, 0.00187583, 0.00172596, 0.00157873, 0.00143421, 0.00129249, 0.00115366, 0.00101777, 0.000884923, 0.000755171, 0.000628582, 0.000505217, 0.000385134, 0.000268384, 0.000155016, 4.5076e-05, -6.13947e-05, -0.00016436, -0.000263788, -0.000359651, -0.000451952, -0.00054068, -0.000625779, -0.000707261, -0.000785117, -0.000859348, -0.000929956, -0.000996946, -0.00106033, -0.00112013, -0.00117635, -0.00122903, -0.00127818, -0.00132384, -0.00136604, -0.00140482, -0.00144021, -0.00147227, -0.00150103, -0.00152655, -0.00154888, -0.00156807, -0.00158419, -0.00159729, -0.00160744, -0.00161472, -0.00161917, -0.00162088, -0.0016199, -0.00161633, -0.00161024, -0.00160171, -0.00159081, -0.00157763, -0.00156225, -0.00154475, -0.00152522, -0.00150374, -0.0014804, -0.00145528, -0.00142848, -0.00140008, -0.00137017, -0.00133884, -0.00130617, -0.00127227, -0.0012372, -0.00120108, -0.00116397, -0.00112597, -0.00108717, -0.00104765, -0.00100749, -0.000966788, -0.000925613, -0.000884054, -0.000842187, -0.000800092, -0.000757849, -0.000715533, -0.000673218, -0.000630979, -0.000588883, -0.000547003, -0.000505403, -0.000464152, -0.00042331, -0.000382942, -0.000343104, -0.000303856, -0.000265248, -0.000227336, -0.000190167, -0.00015379, -0.000118248, -8.35883e-05, -4.98479e-05, -1.7067e-05, 1.4721e-05, 4.54842e-05, 7.51956e-05, 0.000103821, 0.000131338, 0.000157726, 0.000182964, 0.000207034, 0.000229921, 0.000251612, 0.000272099, 0.000291373, 0.00030943, 0.000326267, 0.000341885, 0.000356284, 0.000369471, 0.000381449, 0.000392231, 0.000401823, 0.00041024, 0.000417497, 0.000423608, 0.000428592, 0.00043246, 0.000435237, 0.000436865, 0.000437401, 0.000436975, 0.000435544, 0.000433151, 0.000429812, 0.000425565, 0.000420437, 0.000414464, 0.000407675, 0.000400108, 0.000391795, 0.000382774, 0.00037308, 0.000362751, 0.000351824, 0.000340339, 0.00032833, 0.000315839, 0.000302903, 0.000289559, 0.000275847, 0.000261806, 0.000247474, 0.000232892, 0.000218088, 0.000203111, 0.000187996, 0.000172781, 0.000157497, 0.000142183, 0.000126869, 0.000111594, 9.63895e-05, 8.12934e-05, 6.63317e-05, 5.15418e-05, 3.69472e-05, 2.25833e-05, 8.47105e-06, -5.35615e-06, -1.88794e-05, -3.20661e-05, -4.49012e-05, -5.73536e-05, -6.94109e-05, -8.10442e-05, -9.22439e-05, -0.000102985, -0.000113258, -0.000123038, -0.000132323, -0.000141089, -0.000149335, -0.000157041, -0.00016421, -0.000170822, -0.000176885, -0.000182382, -0.000187324, -0.000191693, -0.000195505, -0.000198743, -0.000201427, -0.000203541, -0.000205109, -0.000206117, -0.00020659, -0.000206515, -0.000205922, -0.000204797, -0.000203173, -0.000201038, -0.000198429, -0.000195333, -0.000191793, -0.000187794, -0.000183382, -0.00017854, -0.000173315, -0.000167689, -0.000161723, -0.000155393, -0.000148756, -0.000141789, -0.000134559, -0.000127034, -0.000119289, -0.000111281, -0.000103097, -9.46835e-05, -8.6137e-05, -7.73902e-05, -6.85565e-05, -5.9545e-05, -5.04935e-05, -4.12734e-05, -3.20611e-05, -2.2664e-05, -1.33229e-05, -3.71244e-06, 5.78773e-06, 1.58964e-05, 2.58255e-05}; const float gt_alpha5_root_coh_neon[] = { 4.05576e-05, 4.05576e-05, 2.58255e-05, 2.58255e-05, 1.58964e-05, 1.58964e-05, 5.78773e-06, 5.78773e-06, -3.71244e-06, -3.71244e-06, -1.33229e-05, -1.33229e-05, -2.2664e-05, -2.2664e-05, -3.20611e-05, -3.20611e-05, -4.12734e-05, -4.12734e-05, -5.04935e-05, -5.04935e-05, -5.9545e-05, -5.9545e-05, -6.85565e-05, -6.85565e-05, -7.73902e-05, -7.73902e-05, -8.6137e-05, -8.6137e-05, -9.46835e-05, -9.46835e-05, -0.000103097, -0.000103097, -0.000111281, -0.000111281, -0.000119289, -0.000119289, -0.000127034, -0.000127034, -0.000134559, -0.000134559, -0.000141789, -0.000141789, -0.000148756, -0.000148756, -0.000155393, -0.000155393, -0.000161723, -0.000161723, -0.000167689, -0.000167689, -0.000173315, -0.000173315, -0.00017854, -0.00017854, -0.000183382, -0.000183382, -0.000187794, -0.000187794, -0.000191793, -0.000191793, -0.000195333, -0.000195333, -0.000198429, -0.000198429, -0.000201038, -0.000201038, -0.000203173, -0.000203173, -0.000204797, -0.000204797, -0.000205922, -0.000205922, -0.000206515, -0.000206515, -0.00020659, -0.00020659, -0.000206117, -0.000206117, -0.000205109, -0.000205109, -0.000203541, -0.000203541, -0.000201427, -0.000201427, -0.000198743, -0.000198743, -0.000195505, -0.000195505, -0.000191693, -0.000191693, -0.000187324, -0.000187324, -0.000182382, -0.000182382, -0.000176885, -0.000176885, -0.000170822, -0.000170822, -0.00016421, -0.00016421, -0.000157041, -0.000157041, -0.000149335, -0.000149335, -0.000141089, -0.000141089, -0.000132323, -0.000132323, -0.000123038, -0.000123038, -0.000113258, -0.000113258, -0.000102985, -0.000102985, -9.22439e-05, -9.22439e-05, -8.10442e-05, -8.10442e-05, -6.94109e-05, -6.94109e-05, -5.73536e-05, -5.73536e-05, -4.49012e-05, -4.49012e-05, -3.20661e-05, -3.20661e-05, -1.88794e-05, -1.88794e-05, -5.35615e-06, -5.35615e-06, 8.47105e-06, 8.47105e-06, 2.25833e-05, 2.25833e-05, 3.69472e-05, 3.69472e-05, 5.15418e-05, 5.15418e-05, 6.63317e-05, 6.63317e-05, 8.12934e-05, 8.12934e-05, 9.63895e-05, 9.63895e-05, 0.000111594, 0.000111594, 0.000126869, 0.000126869, 0.000142183, 0.000142183, 0.000157497, 0.000157497, 0.000172781, 0.000172781, 0.000187996, 0.000187996, 0.000203111, 0.000203111, 0.000218088, 0.000218088, 0.000232892, 0.000232892, 0.000247474, 0.000247474, 0.000261806, 0.000261806, 0.000275847, 0.000275847, 0.000289559, 0.000289559, 0.000302903, 0.000302903, 0.000315839, 0.000315839, 0.00032833, 0.00032833, 0.000340339, 0.000340339, 0.000351824, 0.000351824, 0.000362751, 0.000362751, 0.00037308, 0.00037308, 0.000382774, 0.000382774, 0.000391795, 0.000391795, 0.000400108, 0.000400108, 0.000407675, 0.000407675, 0.000414464, 0.000414464, 0.000420437, 0.000420437, 0.000425565, 0.000425565, 0.000429812, 0.000429812, 0.000433151, 0.000433151, 0.000435544, 0.000435544, 0.000436975, 0.000436975, 0.000437401, 0.000437401, 0.000436865, 0.000436865, 0.000435237, 0.000435237, 0.00043246, 0.00043246, 0.000428592, 0.000428592, 0.000423608, 0.000423608, 0.000417497, 0.000417497, 0.00041024, 0.00041024, 0.000401823, 0.000401823, 0.000392231, 0.000392231, 0.000381449, 0.000381449, 0.000369471, 0.000369471, 0.000356284, 0.000356284, 0.000341885, 0.000341885, 0.000326267, 0.000326267, 0.00030943, 0.00030943, 0.000291373, 0.000291373, 0.000272099, 0.000272099, 0.000251612, 0.000251612, 0.000229921, 0.000229921, 0.000207034, 0.000207034, 0.000182964, 0.000182964, 0.000157726, 0.000157726, 0.000131338, 0.000131338, 0.000103821, 0.000103821, 7.51956e-05, 7.51956e-05, 4.54842e-05, 4.54842e-05, 1.4721e-05, 1.4721e-05, -1.7067e-05, -1.7067e-05, -4.98479e-05, -4.98479e-05, -8.35883e-05, -8.35883e-05, -0.000118248, -0.000118248, -0.00015379, -0.00015379, -0.000190167, -0.000190167, -0.000227336, -0.000227336, -0.000265248, -0.000265248, -0.000303856, -0.000303856, -0.000343104, -0.000343104, -0.000382942, -0.000382942, -0.00042331, -0.00042331, -0.000464152, -0.000464152, -0.000505403, -0.000505403, -0.000547003, -0.000547003, -0.000588883, -0.000588883, -0.000630979, -0.000630979, -0.000673218, -0.000673218, -0.000715533, -0.000715533, -0.000757849, -0.000757849, -0.000800092, -0.000800092, -0.000842187, -0.000842187, -0.000884054, -0.000884054, -0.000925613, -0.000925613, -0.000966788, -0.000966788, -0.00100749, -0.00100749, -0.00104765, -0.00104765, -0.00108717, -0.00108717, -0.00112597, -0.00112597, -0.00116397, -0.00116397, -0.00120108, -0.00120108, -0.0012372, -0.0012372, -0.00127227, -0.00127227, -0.00130617, -0.00130617, -0.00133884, -0.00133884, -0.00137017, -0.00137017, -0.00140008, -0.00140008, -0.00142848, -0.00142848, -0.00145528, -0.00145528, -0.0014804, -0.0014804, -0.00150374, -0.00150374, -0.00152522, -0.00152522, -0.00154475, -0.00154475, -0.00156225, -0.00156225, -0.00157763, -0.00157763, -0.00159081, -0.00159081, -0.00160171, -0.00160171, -0.00161024, -0.00161024, -0.00161633, -0.00161633, -0.0016199, -0.0016199, -0.00162088, -0.00162088, -0.00161917, -0.00161917, -0.00161472, -0.00161472, -0.00160744, -0.00160744, -0.00159729, -0.00159729, -0.00158419, -0.00158419, -0.00156807, -0.00156807, -0.00154888, -0.00154888, -0.00152655, -0.00152655, -0.00150103, -0.00150103, -0.00147227, -0.00147227, -0.00144021, -0.00144021, -0.00140482, -0.00140482, -0.00136604, -0.00136604, -0.00132384, -0.00132384, -0.00127818, -0.00127818, -0.00122903, -0.00122903, -0.00117635, -0.00117635, -0.00112013, -0.00112013, -0.00106033, -0.00106033, -0.000996946, -0.000996946, -0.000929956, -0.000929956, -0.000859348, -0.000859348, -0.000785117, -0.000785117, -0.000707261, -0.000707261, -0.000625779, -0.000625779, -0.00054068, -0.00054068, -0.000451952, -0.000451952, -0.000359651, -0.000359651, -0.000263788, -0.000263788, -0.00016436, -0.00016436, -6.13947e-05, -6.13947e-05, 4.5076e-05, 4.5076e-05, 0.000155016, 0.000155016, 0.000268384, 0.000268384, 0.000385134, 0.000385134, 0.000505217, 0.000505217, 0.000628582, 0.000628582, 0.000755171, 0.000755171, 0.000884923, 0.000884923, 0.00101777, 0.00101777, 0.00115366, 0.00115366, 0.00129249, 0.00129249, 0.00143421, 0.00143421, 0.00157873, 0.00157873, 0.00172596, 0.00172596, 0.00187583, 0.00187583, 0.00202822, 0.00202822, 0.00218306, 0.00218306, 0.00234023, 0.00234023, 0.00249965, 0.00249965, 0.00266119, 0.00266119, 0.00282475, 0.00282475, 0.00299023, 0.00299023, 0.00315749, 0.00315749, 0.00332643, 0.00332643, 0.00349691, 0.00349691, 0.00366882, 0.00366882, 0.00384202, 0.00384202, 0.00401639, 0.00401639, 0.0041918, 0.0041918, 0.0043681, 0.0043681, 0.00454516, 0.00454516, 0.00472285, 0.00472285, 0.00490101, 0.00490101, 0.00507951, 0.00507951, 0.00525821, 0.00525821, 0.00543695, 0.00543695, 0.0056156, 0.0056156, 0.005794, 0.005794, 0.00597201, 0.00597201, 0.00614947, 0.00614947, 0.00632623, 0.00632623, 0.00650216, 0.00650216, 0.00667708, 0.00667708, 0.00685086, 0.00685086, 0.00702335, 0.00702335, 0.00719439, 0.00719439, 0.00736383, 0.00736383, 0.00753153, 0.00753153, 0.00769734, 0.00769734, 0.00786111, 0.00786111, 0.00802269, 0.00802269, 0.00818194, 0.00818194, 0.00833872, 0.00833872, 0.00849289, 0.00849289, 0.0086443, 0.0086443, 0.00879283, 0.00879283, 0.00893832, 0.00893832, 0.00908066, 0.00908066, 0.00921971, 0.00921971, 0.00935534, 0.00935534, 0.00948743, 0.00948743, 0.00961585, 0.00961585, 0.00974049, 0.00974049, 0.00986123, 0.00986123, 0.00997795, 0.00997795, 0.0100905, 0.0100905, 0.0101989, 0.0101989, 0.0103029, 0.0103029, 0.0104025, 0.0104025, 0.0104976, 0.0104976, 0.0105881, 0.0105881, 0.0106738, 0.0106738, 0.0107548, 0.0107548, 0.010831, 0.010831, 0.0109022, 0.0109022, 0.0109684, 0.0109684, 0.0110295, 0.0110295, 0.0110855, 0.0110855, 0.0111364, 0.0111364, 0.011182, 0.011182, 0.0112224, 0.0112224, 0.0112575, 0.0112575, 0.0112872, 0.0112872, 0.0113115, 0.0113115, 0.0113305, 0.0113305, 0.0113441, 0.0113441, 0.0113522, 0.0113522, 0.0113549, 0.0113549, 0.0113522, 0.0113522, 0.0113441, 0.0113441, 0.0113305, 0.0113305, 0.0113115, 0.0113115, 0.0112872, 0.0112872, 0.0112575, 0.0112575, 0.0112224, 0.0112224, 0.011182, 0.011182, 0.0111364, 0.0111364, 0.0110855, 0.0110855, 0.0110295, 0.0110295, 0.0109684, 0.0109684, 0.0109022, 0.0109022, 0.010831, 0.010831, 0.0107548, 0.0107548, 0.0106738, 0.0106738, 0.0105881, 0.0105881, 0.0104976, 0.0104976, 0.0104025, 0.0104025, 0.0103029, 0.0103029, 0.0101989, 0.0101989, 0.0100905, 0.0100905, 0.00997795, 0.00997795, 0.00986123, 0.00986123, 0.00974049, 0.00974049, 0.00961585, 0.00961585, 0.00948743, 0.00948743, 0.00935534, 0.00935534, 0.00921971, 0.00921971, 0.00908066, 0.00908066, 0.00893832, 0.00893832, 0.00879283, 0.00879283, 0.0086443, 0.0086443, 0.00849289, 0.00849289, 0.00833872, 0.00833872, 0.00818194, 0.00818194, 0.00802269, 0.00802269, 0.00786111, 0.00786111, 0.00769734, 0.00769734, 0.00753153, 0.00753153, 0.00736383, 0.00736383, 0.00719439, 0.00719439, 0.00702335, 0.00702335, 0.00685086, 0.00685086, 0.00667708, 0.00667708, 0.00650216, 0.00650216, 0.00632623, 0.00632623, 0.00614947, 0.00614947, 0.00597201, 0.00597201, 0.005794, 0.005794, 0.0056156, 0.0056156, 0.00543695, 0.00543695, 0.00525821, 0.00525821, 0.00507951, 0.00507951, 0.00490101, 0.00490101, 0.00472285, 0.00472285, 0.00454516, 0.00454516, 0.0043681, 0.0043681, 0.0041918, 0.0041918, 0.00401639, 0.00401639, 0.00384202, 0.00384202, 0.00366882, 0.00366882, 0.00349691, 0.00349691, 0.00332643, 0.00332643, 0.00315749, 0.00315749, 0.00299023, 0.00299023, 0.00282475, 0.00282475, 0.00266119, 0.00266119, 0.00249965, 0.00249965, 0.00234023, 0.00234023, 0.00218306, 0.00218306, 0.00202822, 0.00202822, 0.00187583, 0.00187583, 0.00172596, 0.00172596, 0.00157873, 0.00157873, 0.00143421, 0.00143421, 0.00129249, 0.00129249, 0.00115366, 0.00115366, 0.00101777, 0.00101777, 0.000884923, 0.000884923, 0.000755171, 0.000755171, 0.000628582, 0.000628582, 0.000505217, 0.000505217, 0.000385134, 0.000385134, 0.000268384, 0.000268384, 0.000155016, 0.000155016, 4.5076e-05, 4.5076e-05, -6.13947e-05, -6.13947e-05, -0.00016436, -0.00016436, -0.000263788, -0.000263788, -0.000359651, -0.000359651, -0.000451952, -0.000451952, -0.00054068, -0.00054068, -0.000625779, -0.000625779, -0.000707261, -0.000707261, -0.000785117, -0.000785117, -0.000859348, -0.000859348, -0.000929956, -0.000929956, -0.000996946, -0.000996946, -0.00106033, -0.00106033, -0.00112013, -0.00112013, -0.00117635, -0.00117635, -0.00122903, -0.00122903, -0.00127818, -0.00127818, -0.00132384, -0.00132384, -0.00136604, -0.00136604, -0.00140482, -0.00140482, -0.00144021, -0.00144021, -0.00147227, -0.00147227, -0.00150103, -0.00150103, -0.00152655, -0.00152655, -0.00154888, -0.00154888, -0.00156807, -0.00156807, -0.00158419, -0.00158419, -0.00159729, -0.00159729, -0.00160744, -0.00160744, -0.00161472, -0.00161472, -0.00161917, -0.00161917, -0.00162088, -0.00162088, -0.0016199, -0.0016199, -0.00161633, -0.00161633, -0.00161024, -0.00161024, -0.00160171, -0.00160171, -0.00159081, -0.00159081, -0.00157763, -0.00157763, -0.00156225, -0.00156225, -0.00154475, -0.00154475, -0.00152522, -0.00152522, -0.00150374, -0.00150374, -0.0014804, -0.0014804, -0.00145528, -0.00145528, -0.00142848, -0.00142848, -0.00140008, -0.00140008, -0.00137017, -0.00137017, -0.00133884, -0.00133884, -0.00130617, -0.00130617, -0.00127227, -0.00127227, -0.0012372, -0.0012372, -0.00120108, -0.00120108, -0.00116397, -0.00116397, -0.00112597, -0.00112597, -0.00108717, -0.00108717, -0.00104765, -0.00104765, -0.00100749, -0.00100749, -0.000966788, -0.000966788, -0.000925613, -0.000925613, -0.000884054, -0.000884054, -0.000842187, -0.000842187, -0.000800092, -0.000800092, -0.000757849, -0.000757849, -0.000715533, -0.000715533, -0.000673218, -0.000673218, -0.000630979, -0.000630979, -0.000588883, -0.000588883, -0.000547003, -0.000547003, -0.000505403, -0.000505403, -0.000464152, -0.000464152, -0.00042331, -0.00042331, -0.000382942, -0.000382942, -0.000343104, -0.000343104, -0.000303856, -0.000303856, -0.000265248, -0.000265248, -0.000227336, -0.000227336, -0.000190167, -0.000190167, -0.00015379, -0.00015379, -0.000118248, -0.000118248, -8.35883e-05, -8.35883e-05, -4.98479e-05, -4.98479e-05, -1.7067e-05, -1.7067e-05, 1.4721e-05, 1.4721e-05, 4.54842e-05, 4.54842e-05, 7.51956e-05, 7.51956e-05, 0.000103821, 0.000103821, 0.000131338, 0.000131338, 0.000157726, 0.000157726, 0.000182964, 0.000182964, 0.000207034, 0.000207034, 0.000229921, 0.000229921, 0.000251612, 0.000251612, 0.000272099, 0.000272099, 0.000291373, 0.000291373, 0.00030943, 0.00030943, 0.000326267, 0.000326267, 0.000341885, 0.000341885, 0.000356284, 0.000356284, 0.000369471, 0.000369471, 0.000381449, 0.000381449, 0.000392231, 0.000392231, 0.000401823, 0.000401823, 0.00041024, 0.00041024, 0.000417497, 0.000417497, 0.000423608, 0.000423608, 0.000428592, 0.000428592, 0.00043246, 0.00043246, 0.000435237, 0.000435237, 0.000436865, 0.000436865, 0.000437401, 0.000437401, 0.000436975, 0.000436975, 0.000435544, 0.000435544, 0.000433151, 0.000433151, 0.000429812, 0.000429812, 0.000425565, 0.000425565, 0.000420437, 0.000420437, 0.000414464, 0.000414464, 0.000407675, 0.000407675, 0.000400108, 0.000400108, 0.000391795, 0.000391795, 0.000382774, 0.000382774, 0.00037308, 0.00037308, 0.000362751, 0.000362751, 0.000351824, 0.000351824, 0.000340339, 0.000340339, 0.00032833, 0.00032833, 0.000315839, 0.000315839, 0.000302903, 0.000302903, 0.000289559, 0.000289559, 0.000275847, 0.000275847, 0.000261806, 0.000261806, 0.000247474, 0.000247474, 0.000232892, 0.000232892, 0.000218088, 0.000218088, 0.000203111, 0.000203111, 0.000187996, 0.000187996, 0.000172781, 0.000172781, 0.000157497, 0.000157497, 0.000142183, 0.000142183, 0.000126869, 0.000126869, 0.000111594, 0.000111594, 9.63895e-05, 9.63895e-05, 8.12934e-05, 8.12934e-05, 6.63317e-05, 6.63317e-05, 5.15418e-05, 5.15418e-05, 3.69472e-05, 3.69472e-05, 2.25833e-05, 2.25833e-05, 8.47105e-06, 8.47105e-06, -5.35615e-06, -5.35615e-06, -1.88794e-05, -1.88794e-05, -3.20661e-05, -3.20661e-05, -4.49012e-05, -4.49012e-05, -5.73536e-05, -5.73536e-05, -6.94109e-05, -6.94109e-05, -8.10442e-05, -8.10442e-05, -9.22439e-05, -9.22439e-05, -0.000102985, -0.000102985, -0.000113258, -0.000113258, -0.000123038, -0.000123038, -0.000132323, -0.000132323, -0.000141089, -0.000141089, -0.000149335, -0.000149335, -0.000157041, -0.000157041, -0.00016421, -0.00016421, -0.000170822, -0.000170822, -0.000176885, -0.000176885, -0.000182382, -0.000182382, -0.000187324, -0.000187324, -0.000191693, -0.000191693, -0.000195505, -0.000195505, -0.000198743, -0.000198743, -0.000201427, -0.000201427, -0.000203541, -0.000203541, -0.000205109, -0.000205109, -0.000206117, -0.000206117, -0.00020659, -0.00020659, -0.000206515, -0.000206515, -0.000205922, -0.000205922, -0.000204797, -0.000204797, -0.000203173, -0.000203173, -0.000201038, -0.000201038, -0.000198429, -0.000198429, -0.000195333, -0.000195333, -0.000191793, -0.000191793, -0.000187794, -0.000187794, -0.000183382, -0.000183382, -0.00017854, -0.00017854, -0.000173315, -0.000173315, -0.000167689, -0.000167689, -0.000161723, -0.000161723, -0.000155393, -0.000155393, -0.000148756, -0.000148756, -0.000141789, -0.000141789, -0.000134559, -0.000134559, -0.000127034, -0.000127034, -0.000119289, -0.000119289, -0.000111281, -0.000111281, -0.000103097, -0.000103097, -9.46835e-05, -9.46835e-05, -8.6137e-05, -8.6137e-05, -7.73902e-05, -7.73902e-05, -6.85565e-05, -6.85565e-05, -5.9545e-05, -5.9545e-05, -5.04935e-05, -5.04935e-05, -4.12734e-05, -4.12734e-05, -3.20611e-05, -3.20611e-05, -2.2664e-05, -2.2664e-05, -1.33229e-05, -1.33229e-05, -3.71244e-06, -3.71244e-06, 5.78773e-06, 5.78773e-06, 1.58964e-05, 1.58964e-05, 2.58255e-05, 2.58255e-05, }; codec2-1.2.0/src/rxdec_coeff.h000066400000000000000000000012451445607075400160760ustar00rootroot00000000000000/* Generated by rxdec_file() Octave function */ const float rxdec_coeff[] = {-0.00125472, -0.00204605, -0.0019897, 0.000163906, 0.00490937, 0.00986375, 0.0096718, -0.000480351, -0.019311, -0.0361822, -0.0341251, 0.000827866, 0.0690577, 0.152812, 0.222115, 0.249004, 0.222115, 0.152812, 0.0690577, 0.000827866, -0.0341251, -0.0361822, -0.019311, -0.000480351, 0.0096718, 0.00986375, 0.00490937, 0.000163906, -0.0019897, -0.00204605, -0.00125472}; codec2-1.2.0/src/sd.c000066400000000000000000000047241445607075400142350ustar00rootroot00000000000000/*--------------------------------------------------------------------------*\ FILE........: sd.c AUTHOR......: David Rowe DATE CREATED: 20/7/93 Function to determine spectral distortion between two sets of LPCs. \*--------------------------------------------------------------------------*/ /* Copyright (C) 2009 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "sd.h" #include /*---------------------------------------------------------------------------*\ FUNCTION....: spectral_dist() AUTHOR......: David Rowe DATE CREATED: 20/7/93 This function returns the spectral distoertion between two sets of LPCs. \*---------------------------------------------------------------------------*/ float spectral_dist(float ak1[], float ak2[], int p, codec2_fft_cfg fft_fwd_cfg, int n) /* float ak1[]; unquantised set of p+1 LPCs */ /* float ak2[]; quantised set of p+1 LPCs */ /* int p; LP order */ /* fft_fwd_cfg FFT constants */ /* int n; DFT size to use for SD calculations (power of 2) */ { COMP A1[n]; /* DFT of ak1[] */ COMP A2[n]; /* DFT of ak2[] */ float P1, P2; /* power of current bin */ float sd; int i; for (i = 0; i < n; i++) { A1[i].real = 0.0; A1[i].imag = 0.0; A2[i].real = 0.0; A2[i].imag = 0.0; } for (i = 0; i < p + 1; i++) { A1[i].real = ak1[i]; A2[i].real = ak2[i]; } codec2_fft_inplace(fft_fwd_cfg, A1); codec2_fft_inplace(fft_fwd_cfg, A2); sd = 0.0; for (i = 0; i < n; i++) { P1 = A1[i].real * A1[i].real + A1[i].imag * A1[i].imag; P2 = A2[i].real * A2[i].real + A2[i].imag * A2[i].imag; sd += pow(10.0 * log10(P2 / P1), 2.0); } sd = sd / n; /* mean sd for this frame in dB*dB, which can be further averaged across frames */ return (sd); } codec2-1.2.0/src/sd.h000066400000000000000000000022131445607075400142310ustar00rootroot00000000000000/*--------------------------------------------------------------------------*\ FILE........: sd.h AUTHOR......: David Rowe DATE CREATED: 22/7/93 Function to determine spectral distortion between two sets of LPCs. \*--------------------------------------------------------------------------*/ /* Copyright (C) 2009 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __SD__ #define __SD__ #include "codec2_fft.h" float spectral_dist(float ak1[], float ak2[], int p, codec2_fft_cfg fft_fwd_cfg, int n); #endif /* __SD__ */ codec2-1.2.0/src/sine.c000066400000000000000000000447651445607075400145760ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: sine.c AUTHOR......: David Rowe DATE CREATED: 19/8/2010 Sinusoidal analysis and synthesis functions. \*---------------------------------------------------------------------------*/ /* Copyright (C) 1990-2010 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ /*---------------------------------------------------------------------------*\ INCLUDES \*---------------------------------------------------------------------------*/ #include "sine.h" #include #include #include #include "defines.h" #include "kiss_fft.h" #define HPF_BETA 0.125 /*---------------------------------------------------------------------------*\ HEADERS \*---------------------------------------------------------------------------*/ void hs_pitch_refinement(MODEL *model, COMP Sw[], float pmin, float pmax, float pstep); /*---------------------------------------------------------------------------*\ FUNCTIONS \*---------------------------------------------------------------------------*/ C2CONST c2const_create(int Fs, float framelength_s) { C2CONST c2const; assert((Fs == 8000) || (Fs == 16000)); c2const.Fs = Fs; c2const.n_samp = round(Fs * framelength_s); c2const.max_amp = floor(Fs * P_MAX_S / 2); c2const.p_min = floor(Fs * P_MIN_S); c2const.p_max = floor(Fs * P_MAX_S); c2const.m_pitch = floor(Fs * M_PITCH_S); c2const.Wo_min = TWO_PI / c2const.p_max; c2const.Wo_max = TWO_PI / c2const.p_min; if (Fs == 8000) { c2const.nw = 279; } else { c2const.nw = 511; /* actually a bit shorter in time but lets us maintain constant FFT size */ } c2const.tw = Fs * TW_S; /* fprintf(stderr, "max_amp: %d m_pitch: %d\n", c2const.n_samp, c2const.m_pitch); fprintf(stderr, "p_min: %d p_max: %d\n", c2const.p_min, c2const.p_max); fprintf(stderr, "Wo_min: %f Wo_max: %f\n", c2const.Wo_min, c2const.Wo_max); fprintf(stderr, "nw: %d tw: %d\n", c2const.nw, c2const.tw); */ return c2const; } /*---------------------------------------------------------------------------*\ FUNCTION....: make_analysis_window AUTHOR......: David Rowe DATE CREATED: 11/5/94 Init function that generates the time domain analysis window and it's DFT. \*---------------------------------------------------------------------------*/ void make_analysis_window(C2CONST *c2const, codec2_fft_cfg fft_fwd_cfg, float w[], float W[]) { float m; COMP wshift[FFT_ENC]; int i, j; int m_pitch = c2const->m_pitch; int nw = c2const->nw; /* Generate Hamming window centered on M-sample pitch analysis window 0 M/2 M-1 |-------------|-------------| |-------|-------| nw samples All our analysis/synthsis is centred on the M/2 sample. */ m = 0.0; for (i = 0; i < m_pitch / 2 - nw / 2; i++) w[i] = 0.0; for (i = m_pitch / 2 - nw / 2, j = 0; i < m_pitch / 2 + nw / 2; i++, j++) { w[i] = 0.5 - 0.5 * cosf(TWO_PI * j / (nw - 1)); m += w[i] * w[i]; } for (i = m_pitch / 2 + nw / 2; i < m_pitch; i++) w[i] = 0.0; /* Normalise - makes freq domain amplitude estimation straight forward */ m = 1.0 / sqrtf(m * FFT_ENC); for (i = 0; i < m_pitch; i++) { w[i] *= m; } /* Generate DFT of analysis window, used for later processing. Note we modulo FFT_ENC shift the time domain window w[], this makes the imaginary part of the DFT W[] equal to zero as the shifted w[] is even about the n=0 time axis if nw is odd. Having the imag part of the DFT W[] makes computation easier. 0 FFT_ENC-1 |-------------------------| ----\ /---- \ / \ / <- shifted version of window w[n] \ / \ / ------- |---------| |---------| nw/2 nw/2 */ COMP temp[FFT_ENC]; for (i = 0; i < FFT_ENC; i++) { wshift[i].real = 0.0; wshift[i].imag = 0.0; } for (i = 0; i < nw / 2; i++) wshift[i].real = w[i + m_pitch / 2]; for (i = FFT_ENC - nw / 2, j = m_pitch / 2 - nw / 2; i < FFT_ENC; i++, j++) wshift[i].real = w[j]; codec2_fft(fft_fwd_cfg, wshift, temp); /* Re-arrange W[] to be symmetrical about FFT_ENC/2. Makes later analysis convenient. Before: 0 FFT_ENC-1 |----------|---------| __ _ \ / \_______________/ After: 0 FFT_ENC-1 |----------|---------| ___ / \ ________/ \_______ */ for (i = 0; i < FFT_ENC / 2; i++) { W[i] = temp[i + FFT_ENC / 2].real; W[i + FFT_ENC / 2] = temp[i].real; } } /*---------------------------------------------------------------------------*\ FUNCTION....: hpf AUTHOR......: David Rowe DATE CREATED: 16 Nov 2010 High pass filter with a -3dB point of about 160Hz. y(n) = -HPF_BETA*y(n-1) + x(n) - x(n-1) \*---------------------------------------------------------------------------*/ float hpf(float x, float states[]) { states[0] = -HPF_BETA * states[0] + x - states[1]; states[1] = x; return states[0]; } /*---------------------------------------------------------------------------*\ FUNCTION....: dft_speech AUTHOR......: David Rowe DATE CREATED: 27/5/94 Finds the DFT of the current speech input speech frame. \*---------------------------------------------------------------------------*/ // TODO: we can either go for a faster FFT using fftr and some stack usage // or we can reduce stack usage to almost zero on STM32 by switching to // fft_inplace #if 1 void dft_speech(C2CONST *c2const, codec2_fft_cfg fft_fwd_cfg, COMP Sw[], float Sn[], float w[]) { int i; int m_pitch = c2const->m_pitch; int nw = c2const->nw; for (i = 0; i < FFT_ENC; i++) { Sw[i].real = 0.0; Sw[i].imag = 0.0; } /* Centre analysis window on time axis, we need to arrange input to FFT this way to make FFT phases correct */ /* move 2nd half to start of FFT input vector */ for (i = 0; i < nw / 2; i++) Sw[i].real = Sn[i + m_pitch / 2] * w[i + m_pitch / 2]; /* move 1st half to end of FFT input vector */ for (i = 0; i < nw / 2; i++) Sw[FFT_ENC - nw / 2 + i].real = Sn[i + m_pitch / 2 - nw / 2] * w[i + m_pitch / 2 - nw / 2]; codec2_fft_inplace(fft_fwd_cfg, Sw); } #else void dft_speech(codec2_fftr_cfg fftr_fwd_cfg, COMP Sw[], float Sn[], float w[]) { int i; float sw[FFT_ENC]; for (i = 0; i < FFT_ENC; i++) { sw[i] = 0.0; } /* Centre analysis window on time axis, we need to arrange input to FFT this way to make FFT phases correct */ /* move 2nd half to start of FFT input vector */ for (i = 0; i < nw / 2; i++) sw[i] = Sn[i + m_pitch / 2] * w[i + m_pitch / 2]; /* move 1st half to end of FFT input vector */ for (i = 0; i < nw / 2; i++) sw[FFT_ENC - nw / 2 + i] = Sn[i + m_pitch / 2 - nw / 2] * w[i + m_pitch / 2 - nw / 2]; codec2_fftr(fftr_fwd_cfg, sw, Sw); } #endif /*---------------------------------------------------------------------------*\ FUNCTION....: two_stage_pitch_refinement AUTHOR......: David Rowe DATE CREATED: 27/5/94 Refines the current pitch estimate using the harmonic sum pitch estimation technique. \*---------------------------------------------------------------------------*/ void two_stage_pitch_refinement(C2CONST *c2const, MODEL *model, COMP Sw[]) { float pmin, pmax, pstep; /* pitch refinement minimum, maximum and step */ /* Coarse refinement */ pmax = TWO_PI / model->Wo + 5; pmin = TWO_PI / model->Wo - 5; pstep = 1.0; hs_pitch_refinement(model, Sw, pmin, pmax, pstep); /* Fine refinement */ pmax = TWO_PI / model->Wo + 1; pmin = TWO_PI / model->Wo - 1; pstep = 0.25; hs_pitch_refinement(model, Sw, pmin, pmax, pstep); /* Limit range */ if (model->Wo < TWO_PI / c2const->p_max) model->Wo = TWO_PI / c2const->p_max; if (model->Wo > TWO_PI / c2const->p_min) model->Wo = TWO_PI / c2const->p_min; model->L = floorf(PI / model->Wo); /* trap occasional round off issues with floorf() */ if (model->Wo * model->L >= 0.95 * PI) { model->L--; } assert(model->Wo * model->L < PI); } /*---------------------------------------------------------------------------*\ FUNCTION....: hs_pitch_refinement AUTHOR......: David Rowe DATE CREATED: 27/5/94 Harmonic sum pitch refinement function. pmin pitch search range minimum pmax pitch search range maximum step pitch search step size model current pitch estimate in model.Wo model refined pitch estimate in model.Wo \*---------------------------------------------------------------------------*/ void hs_pitch_refinement(MODEL *model, COMP Sw[], float pmin, float pmax, float pstep) { int m; /* loop variable */ int b; /* bin for current harmonic centre */ float E; /* energy for current pitch*/ float Wo; /* current "test" fundamental freq. */ float Wom; /* Wo that maximises E */ float Em; /* mamimum energy */ float r, one_on_r; /* number of rads/bin */ float p; /* current pitch */ /* Initialisation */ model->L = PI / model->Wo; /* use initial pitch est. for L */ Wom = model->Wo; Em = 0.0; r = TWO_PI / FFT_ENC; one_on_r = 1.0 / r; /* Determine harmonic sum for a range of Wo values */ for (p = pmin; p <= pmax; p += pstep) { E = 0.0; Wo = TWO_PI / p; float bFloat = Wo * one_on_r; float currentBFloat = bFloat; /* Sum harmonic magnitudes */ for (m = 1; m <= model->L; m++) { b = (int)(currentBFloat + 0.5); E += Sw[b].real * Sw[b].real + Sw[b].imag * Sw[b].imag; currentBFloat += bFloat; } /* Compare to see if this is a maximum */ if (E > Em) { Em = E; Wom = Wo; } } model->Wo = Wom; } /*---------------------------------------------------------------------------*\ FUNCTION....: estimate_amplitudes AUTHOR......: David Rowe DATE CREATED: 27/5/94 Estimates the complex amplitudes of the harmonics. \*---------------------------------------------------------------------------*/ void estimate_amplitudes(MODEL *model, COMP Sw[], float W[], int est_phase) { int i, m; /* loop variables */ int am, bm; /* bounds of current harmonic */ float den; /* denominator of amplitude expression */ float r = TWO_PI / FFT_ENC; float one_on_r = 1.0 / r; for (m = 1; m <= model->L; m++) { /* Estimate ampltude of harmonic */ den = 0.0; am = (int)((m - 0.5) * model->Wo * one_on_r + 0.5); bm = (int)((m + 0.5) * model->Wo * one_on_r + 0.5); for (i = am; i < bm; i++) { den += Sw[i].real * Sw[i].real + Sw[i].imag * Sw[i].imag; } model->A[m] = sqrtf(den); if (est_phase) { int b = (int)(m * model->Wo / r + 0.5); /* DFT bin of centre of current harmonic */ /* Estimate phase of harmonic, this is expensive in CPU for embedded devicesso we make it an option */ model->phi[m] = atan2f(Sw[b].imag, Sw[b].real); } } } /*---------------------------------------------------------------------------*\ est_voicing_mbe() Returns the error of the MBE cost function for a fiven F0. Note: I think a lot of the operations below can be simplified as W[].imag = 0 and has been normalised such that den always equals 1. \*---------------------------------------------------------------------------*/ float est_voicing_mbe(C2CONST *c2const, MODEL *model, COMP Sw[], float W[]) { int l, al, bl, m; /* loop variables */ COMP Am; /* amplitude sample for this band */ int offset; /* centers Hw[] about current harmonic */ float den; /* denominator of Am expression */ float error; /* accumulated error between original and synthesised */ float Wo; float sig, snr; float elow, ehigh, eratio; float sixty; COMP Ew; Ew.real = 0; Ew.imag = 0; int l_1000hz = model->L * 1000.0 / (c2const->Fs / 2); sig = 1E-4; for (l = 1; l <= l_1000hz; l++) { sig += model->A[l] * model->A[l]; } Wo = model->Wo; error = 1E-4; /* Just test across the harmonics in the first 1000 Hz */ for (l = 1; l <= l_1000hz; l++) { Am.real = 0.0; Am.imag = 0.0; den = 0.0; al = ceilf((l - 0.5) * Wo * FFT_ENC / TWO_PI); bl = ceilf((l + 0.5) * Wo * FFT_ENC / TWO_PI); /* Estimate amplitude of harmonic assuming harmonic is totally voiced */ offset = FFT_ENC / 2 - l * Wo * FFT_ENC / TWO_PI + 0.5; for (m = al; m < bl; m++) { Am.real += Sw[m].real * W[offset + m]; Am.imag += Sw[m].imag * W[offset + m]; den += W[offset + m] * W[offset + m]; } Am.real = Am.real / den; Am.imag = Am.imag / den; /* Determine error between estimated harmonic and original */ for (m = al; m < bl; m++) { Ew.real = Sw[m].real - Am.real * W[offset + m]; Ew.imag = Sw[m].imag - Am.imag * W[offset + m]; error += Ew.real * Ew.real; error += Ew.imag * Ew.imag; } } snr = 10.0 * log10f(sig / error); if (snr > V_THRESH) model->voiced = 1; else model->voiced = 0; /* post processing, helps clean up some voicing errors ------------------*/ /* Determine the ratio of low frequency to high frequency energy, voiced speech tends to be dominated by low frequency energy, unvoiced by high frequency. This measure can be used to determine if we have made any gross errors. */ int l_2000hz = model->L * 2000.0 / (c2const->Fs / 2); int l_4000hz = model->L * 4000.0 / (c2const->Fs / 2); elow = ehigh = 1E-4; for (l = 1; l <= l_2000hz; l++) { elow += model->A[l] * model->A[l]; } for (l = l_2000hz; l <= l_4000hz; l++) { ehigh += model->A[l] * model->A[l]; } eratio = 10.0 * log10f(elow / ehigh); /* Look for Type 1 errors, strongly V speech that has been accidentally declared UV */ if (model->voiced == 0) if (eratio > 10.0) model->voiced = 1; /* Look for Type 2 errors, strongly UV speech that has been accidentally declared V */ if (model->voiced == 1) { if (eratio < -10.0) model->voiced = 0; /* A common source of Type 2 errors is the pitch estimator gives a low (50Hz) estimate for UV speech, which gives a good match with noise due to the close harmoonic spacing. These errors are much more common than people with 50Hz3 pitch, so we have just a small eratio threshold. */ sixty = 60.0 * TWO_PI / c2const->Fs; if ((eratio < -4.0) && (model->Wo <= sixty)) model->voiced = 0; } // printf(" v: %d snr: %f eratio: %3.2f %f\n",model->voiced,snr,eratio,dF0); return snr; } /*---------------------------------------------------------------------------*\ FUNCTION....: make_synthesis_window AUTHOR......: David Rowe DATE CREATED: 11/5/94 Init function that generates the trapezoidal (Parzen) synthesis window. \*---------------------------------------------------------------------------*/ void make_synthesis_window(C2CONST *c2const, float Pn[]) { int i; float win; int n_samp = c2const->n_samp; int tw = c2const->tw; /* Generate Parzen window in time domain */ win = 0.0; for (i = 0; i < n_samp / 2 - tw; i++) Pn[i] = 0.0; win = 0.0; for (i = n_samp / 2 - tw; i < n_samp / 2 + tw; win += 1.0 / (2 * tw), i++) Pn[i] = win; for (i = n_samp / 2 + tw; i < 3 * n_samp / 2 - tw; i++) Pn[i] = 1.0; win = 1.0; for (i = 3 * n_samp / 2 - tw; i < 3 * n_samp / 2 + tw; win -= 1.0 / (2 * tw), i++) Pn[i] = win; for (i = 3 * n_samp / 2 + tw; i < 2 * n_samp; i++) Pn[i] = 0.0; } /*---------------------------------------------------------------------------*\ FUNCTION....: synthesise AUTHOR......: David Rowe DATE CREATED: 20/2/95 Synthesise a speech signal in the frequency domain from the sinusodal model parameters. Uses overlap-add with a trapezoidal window to smoothly interpolate between frames. \*---------------------------------------------------------------------------*/ void synthesise(int n_samp, codec2_fftr_cfg fftr_inv_cfg, float Sn_[], /* time domain synthesised signal */ MODEL *model, /* ptr to model parameters for this frame */ float Pn[], /* time domain Parzen window */ int shift /* flag used to handle transition frames */ ) { int i, l, j, b; /* loop variables */ COMP Sw_[FFT_DEC / 2 + 1]; /* DFT of synthesised signal */ float sw_[FFT_DEC]; /* synthesised signal */ if (shift) { /* Update memories */ for (i = 0; i < n_samp - 1; i++) { Sn_[i] = Sn_[i + n_samp]; } Sn_[n_samp - 1] = 0.0; } for (i = 0; i < FFT_DEC / 2 + 1; i++) { Sw_[i].real = 0.0; Sw_[i].imag = 0.0; } /* Now set up frequency domain synthesised speech */ for (l = 1; l <= model->L; l++) { b = (int)(l * model->Wo * FFT_DEC / TWO_PI + 0.5); if (b > ((FFT_DEC / 2) - 1)) { b = (FFT_DEC / 2) - 1; } Sw_[b].real = model->A[l] * cosf(model->phi[l]); Sw_[b].imag = model->A[l] * sinf(model->phi[l]); } /* Perform inverse DFT */ codec2_fftri(fftr_inv_cfg, Sw_, sw_); /* Overlap add to previous samples */ #ifdef USE_KISS_FFT #define FFTI_FACTOR ((float)1.0) #else #define FFTI_FACTOR ((float32_t)FFT_DEC) #endif for (i = 0; i < n_samp - 1; i++) { Sn_[i] += sw_[FFT_DEC - n_samp + 1 + i] * Pn[i] * FFTI_FACTOR; } if (shift) for (i = n_samp - 1, j = 0; i < 2 * n_samp; i++, j++) Sn_[i] = sw_[j] * Pn[i] * FFTI_FACTOR; else for (i = n_samp - 1, j = 0; i < 2 * n_samp; i++, j++) Sn_[i] += sw_[j] * Pn[i] * FFTI_FACTOR; } /* todo: this should probably be in some states rather than a static */ static unsigned long next = 1; int codec2_rand(void) { next = next * 1103515245 + 12345; return ((unsigned)(next / 65536) % 32768); } codec2-1.2.0/src/sine.h000066400000000000000000000034701445607075400145670ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: sine.h AUTHOR......: David Rowe DATE CREATED: 1/11/94 Header file for sinusoidal analysis and synthesis functions. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2009 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __SINE__ #define __SINE__ #include "codec2_fft.h" #include "comp.h" #include "defines.h" C2CONST c2const_create(int Fs, float framelength_ms); void make_analysis_window(C2CONST *c2const, codec2_fft_cfg fft_fwd_cfg, float w[], float W[]); float hpf(float x, float states[]); void dft_speech(C2CONST *c2const, codec2_fft_cfg fft_fwd_cfg, COMP Sw[], float Sn[], float w[]); void two_stage_pitch_refinement(C2CONST *c2const, MODEL *model, COMP Sw[]); void estimate_amplitudes(MODEL *model, COMP Sw[], float W[], int est_phase); float est_voicing_mbe(C2CONST *c2const, MODEL *model, COMP Sw[], float W[]); void make_synthesis_window(C2CONST *c2const, float Pn[]); void synthesise(int n_samp, codec2_fftr_cfg fftr_inv_cfg, float Sn_[], MODEL *model, float Pn[], int shift); #define CODEC2_RAND_MAX 32767 int codec2_rand(void); #endif codec2-1.2.0/src/ssbfilt_coeff.h000066400000000000000000000024241445607075400164370ustar00rootroot00000000000000/* 2400 Hz LPF FIR filter coeffs */ /* Generated by make_ssbfilt Octave script */ #define SSBFILT_N 100 #define SSBFILT_CENTRE 1500 float ssbfilt_coeff[] = { 0.000077, 0.000463, 0.000493, 0.000100, -0.000451, -0.000713, -0.000382, 0.000393, 0.001013, 0.000853, -0.000162, -0.001315, -0.001550, -0.000384, 0.001462, 0.002427, 0.001369, -0.001234, -0.003330, -0.002842, 0.000386, 0.003994, 0.004736, 0.001300, -0.004057, -0.006836, -0.003963, 0.003096, 0.008764, 0.007615, -0.000664, -0.009984, -0.012111, -0.003687, 0.009789, 0.017150, 0.010450, -0.007246, -0.022299, -0.020386, 0.000889, 0.027053, 0.035350, 0.012531, -0.030900, -0.062153, -0.045268, 0.033405, 0.150957, 0.256445, 0.298716, 0.256445, 0.150957, 0.033405, -0.045268, -0.062153, -0.030900, 0.012531, 0.035350, 0.027053, 0.000889, -0.020386, -0.022299, -0.007246, 0.010450, 0.017150, 0.009789, -0.003687, -0.012111, -0.009984, -0.000664, 0.007615, 0.008764, 0.003096, -0.003963, -0.006836, -0.004057, 0.001300, 0.004736, 0.003994, 0.000386, -0.002842, -0.003330, -0.001234, 0.001369, 0.002427, 0.001462, -0.000384, -0.001550, -0.001315, -0.000162, 0.000853, 0.001013, 0.000393, -0.000382, -0.000713, -0.000451, 0.000100, 0.000493, 0.000463};codec2-1.2.0/src/test_bits.h000066400000000000000000000011141445607075400156220ustar00rootroot00000000000000/* Generated by test_bits_file() Octave function */ const int test_bits[] = { 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1}; codec2-1.2.0/src/test_bits_coh.h000066400000000000000000000035041445607075400164600ustar00rootroot00000000000000/* Generated by test_bits_coh_file() Octave function */ const int test_bits_coh[] = { 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0}; codec2-1.2.0/src/test_bits_ofdm.h000066400000000000000000000036741445607075400166440ustar00rootroot00000000000000/* Generated by test_bits_ofdm_file() Octave function */ const int test_bits_ofdm[] = { 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0}; const uint8_t payload_data_bits[] = { 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0}; const int test_codeword[] = { 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0}; codec2-1.2.0/src/tollr.c000066400000000000000000000005471445607075400147620ustar00rootroot00000000000000/* FILE...: tollr.c AUTHOR.: David Rowe CREATED: July 2020 Converts oneBitPerByte hard decisions to LLRs for LDPC testing. */ #include #include int main(void) { uint8_t bit; while (fread(&bit, sizeof(uint8_t), 1, stdin)) { float llr = 10.0 * (1 - 2 * bit); fwrite(&llr, sizeof(float), 1, stdout); } return 0; } codec2-1.2.0/src/varicode.c000066400000000000000000000346031445607075400154220ustar00rootroot00000000000000//========================================================================== // Name: varicode.h // Purpose: Varicode encoded and decode functions // Created: Nov 24, 2012 // Authors: David Rowe // // To test: // $ gcc varicode.c -o varicode -DVARICODE_UNITTEST -Wall // $ ./varicode // // License: // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2.1, // as published by the Free Software Foundation. This program is // distributed in the hope that it will be useful, but WITHOUT ANY // WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public // License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, see . // //========================================================================== #include "varicode.h" #include #include #include #include #include #include "debug_alloc.h" #include "varicode_table.h" /* output is an unpacked array of bits of maximum size max_out. Note unpacked arrays are a more suitable form for modulator input. Code 1 covers the entire ASCII char set. */ int varicode_encode1(short varicode_out[], char ascii_in[], int max_out, int n_in) { int n_out, index, n_zeros, v_len; unsigned short byte1, byte2, packed; char c; n_out = 0; while (n_in && (n_out < max_out)) { c = *ascii_in; if ((unsigned int)c >= 128) { c = ' '; } index = 2 * (unsigned int)(c); assert(index <= 254); byte1 = varicode_table1[index]; byte2 = varicode_table1[index + 1]; packed = (byte1 << 8) + byte2; // printf("n_in: %d ascii_in: %c index: %d packed 0x%x\n", n_in, *ascii_in, // index, packed); ascii_in++; n_zeros = 0; v_len = 0; while ((n_zeros < 2) && (n_out < max_out) && (v_len <= VARICODE_MAX_BITS)) { if (packed & 0x8000) { *varicode_out = 1; n_zeros = 0; } else { *varicode_out = 0; n_zeros++; } // printf("packed: 0x%x *varicode_out: %d n_zeros: %d v_len: %d\n", // packed, *varicode_out, n_zeros,v_len ); packed <<= 1; varicode_out++; n_out++; v_len++; } assert(v_len <= VARICODE_MAX_BITS); n_in--; } return n_out; } /* Code 2 covers a subset, but is more efficient that Code 1 (282 compared to 1315 bits on unittest) Unsupported characters are replaced by spaces. We encode/decode two bits at a time. */ int varicode_encode2(short varicode_out[], char ascii_in[], int max_out, int n_in) { int n_out, n_zeros, v_len, i; unsigned short packed; n_out = 0; while (n_in && (n_out < max_out)) { packed = varicode_table2[0]; // default to space if char not found // see if our character exists for (i = 0; i < sizeof(varicode_table2); i += 2) { if (varicode_table2[i] == *ascii_in) packed = (unsigned short)varicode_table2[i + 1] << 8; } // printf("n_in: %d ascii_in: %c index: %d packed 0x%x\n", n_in, *ascii_in, // index, packed); ascii_in++; n_zeros = 0; v_len = 0; while ((n_zeros < 2) && (n_out < max_out) && (v_len <= VARICODE_MAX_BITS)) { if (packed & 0x8000) varicode_out[0] = 1; else varicode_out[0] = 0; if (packed & 0x4000) varicode_out[1] = 1; else varicode_out[1] = 0; if (packed & 0xc000) n_zeros = 0; else n_zeros += 2; // printf("packed: 0x%x *varicode_out: %d n_zeros: %d v_len: %d\n", // packed, *varicode_out, n_zeros,v_len ); packed <<= 2; varicode_out += 2; n_out += 2; v_len += 2; } assert(v_len <= VARICODE_MAX_BITS); n_in--; } assert((n_out % 2) == 0); /* outputs two bits at a time */ return n_out; } /* Code 3 simply allows the modem to pass incoming/outgoing bits to/from higher levels in the code. */ int varicode_encode3(short varicode_out[], char ascii_in[], int max_out, int n_in) { // We only support one bit at a time. assert(max_out >= 1 && n_in == 1); varicode_out[0] = ascii_in[0] != 0; return 1; } int varicode_encode(short varicode_out[], char ascii_in[], int max_out, int n_in, int code_num) { assert((code_num == 1) || (code_num == 2) || (code_num == 3)); if (code_num == 1) return varicode_encode1(varicode_out, ascii_in, max_out, n_in); else if (code_num == 2) return varicode_encode2(varicode_out, ascii_in, max_out, n_in); else return varicode_encode3(varicode_out, ascii_in, max_out, n_in); } void varicode_decode_init(struct VARICODE_DEC *dec_states, int code_num) { assert((code_num == 1) || (code_num == 2) || (code_num == 3)); dec_states->state = 0; dec_states->n_zeros = 0; dec_states->v_len = 0; dec_states->packed = 0; dec_states->code_num = code_num; dec_states->n_in = 0; dec_states->in[0] = dec_states->in[1] = 0; } void varicode_set_code_num(struct VARICODE_DEC *dec_states, int code_num) { assert((code_num == 1) || (code_num == 2) || (code_num == 3)); dec_states->code_num = code_num; } /* Code 1 decode function, accepts one bit at a time */ static int decode_one_bit(struct VARICODE_DEC *s, char *single_ascii, short varicode_in, int long_code) { int found = 0, i; unsigned short byte1, byte2; // printf("decode_one_bit : state: %d varicode_in: %d packed: 0x%x n_zeros: // %d\n", // s->state, varicode_in, s->packed, s->n_zeros); if (s->state == 0) { if (!varicode_in) return 0; else s->state = 1; } if (s->state == 1) { if (varicode_in) { s->packed |= (0x8000 >> s->v_len); s->n_zeros = 0; } else { s->n_zeros++; } s->v_len++; found = 0; /* end of character code */ if (s->n_zeros == 2) { if (s->v_len) { /* run thru table but note with bit errors we might not actually find a * match */ byte1 = s->packed >> 8; // printf("looking for byte1 : 0x%x ... ", byte1); byte2 = s->packed & 0xff; for (i = 0; i < 128; i++) { if ((byte1 == varicode_table1[2 * i]) && (byte2 == varicode_table1[2 * i + 1])) { found = 1; *single_ascii = i; } } } varicode_decode_init(s, s->code_num); } /* code can run too long if we have a bit error */ if (s->v_len > VARICODE_MAX_BITS) varicode_decode_init(s, s->code_num); } return found; } /* Code 2 decode function, accepts two bits at a time */ static int decode_two_bits(struct VARICODE_DEC *s, char *single_ascii, short varicode_in1, short varicode_in2) { int found = 0, i; unsigned short byte1; if (s->state == 0) { if (!(varicode_in1 || varicode_in2)) return 0; else s->state = 1; } if (s->state == 1) { if (varicode_in1) s->packed |= (0x8000 >> s->v_len); if (varicode_in2) s->packed |= (0x4000 >> s->v_len); if (varicode_in1 || varicode_in2) s->n_zeros = 0; else s->n_zeros += 2; s->v_len += 2; found = 0; /* end of character code */ if (s->n_zeros == 2) { if (s->v_len) { /* run thru table but note with bit errors we might not actually find a * match */ byte1 = s->packed >> 8; // printf("looking for byte1 : 0x%x ... ", byte1); for (i = 0; i < sizeof(varicode_table2); i += 2) { // printf("byte1: 0x%x 0x%x\n", byte1, (unsigned // char)varicode_table2[i+1]); if (byte1 == (unsigned char)varicode_table2[i + 1]) { found = 1; *single_ascii = varicode_table2[i]; // printf("found: %d i=%d char=%c ", found, i, *single_ascii); } } } varicode_decode_init(s, s->code_num); } /* code can run too long if we have a bit error */ if (s->v_len > VARICODE_MAX_BITS) varicode_decode_init(s, s->code_num); } return found; } int varicode_decode1(struct VARICODE_DEC *dec_states, char ascii_out[], short varicode_in[], int max_out, int n_in) { int output, n_out; char single_ascii = 0; n_out = 0; // printf("varicode_decode: n_in: %d\n", n_in); while (n_in && (n_out < max_out)) { output = decode_one_bit(dec_states, &single_ascii, varicode_in[0], 0); varicode_in++; n_in--; if (output) { *ascii_out++ = single_ascii; n_out++; } } return n_out; } int varicode_decode2(struct VARICODE_DEC *dec_states, char ascii_out[], short varicode_in[], int max_out, int n_in) { int output, n_out; char single_ascii = 0; n_out = 0; // printf("varicode_decode2: n_in: %d varicode_in[0] %d dec_states->n_in: // %d\n", n_in, varicode_in[0], dec_states->n_in); printf("%d ", // varicode_in[0]); while (n_in && (n_out < max_out)) { // keep two bit buffer so we can process two at a time dec_states->in[0] = dec_states->in[1]; dec_states->in[1] = varicode_in[0]; dec_states->n_in++; varicode_in++; n_in--; if (dec_states->n_in == 2) { output = decode_two_bits(dec_states, &single_ascii, dec_states->in[0], dec_states->in[1]); dec_states->n_in = 0; if (output) { // printf(" output: %d single_ascii: 0x%x %c\n", output, // (int)single_ascii, single_ascii); *ascii_out++ = single_ascii; n_out++; } } } return n_out; } int varicode_decode3(struct VARICODE_DEC *dec_states, char ascii_out[], short varicode_in[], int max_out, int n_in) { // We only handle one bit at a time. assert(max_out == 1 && n_in == 1); ascii_out[0] = varicode_in[0] != 0; return 1; } int varicode_decode(struct VARICODE_DEC *dec_states, char ascii_out[], short varicode_in[], int max_out, int n_in) { if (dec_states->code_num == 1) return varicode_decode1(dec_states, ascii_out, varicode_in, max_out, n_in); else if (dec_states->code_num == 2) return varicode_decode2(dec_states, ascii_out, varicode_in, max_out, n_in); else return varicode_decode3(dec_states, ascii_out, varicode_in, max_out, n_in); } #ifdef VARICODE_UNITTEST void test_varicode(int code_num) { char *ascii_in; short *varicode; int i, n_varicode_bits_out, n_ascii_chars_out, length, half, n_out, j, len; char *ascii_out; struct VARICODE_DEC dec_states; if (code_num == 1) { printf("long code:\n"); length = sizeof(varicode_table1) / 2; } else { printf("short code:\n"); length = sizeof(varicode_table2) / 2; } // length = 10; ascii_in = (char *)MALLOC(length); varicode = (short *)MALLOC(VARICODE_MAX_BITS * sizeof(short) * length); ascii_out = (char *)MALLOC(length); // 1. test all Varicode codes // ------------------------------------------------------------- if (code_num == 1) { for (i = 0; i < length; i++) ascii_in[i] = (char)i; } else { for (i = 0; i < length; i++) ascii_in[i] = varicode_table2[2 * i]; } // printf(" ascii_in: %s\n", ascii_in); n_varicode_bits_out = varicode_encode( varicode, ascii_in, VARICODE_MAX_BITS * length, length, code_num); printf(" n_varicode_bits_out: %d\n", n_varicode_bits_out); // for(i=0; i. // //========================================================================== #ifndef __VARICODE__ #define __VARICODE__ #ifdef __cplusplus extern "C" { #endif #define VARICODE_MAX_BITS \ (10 + 2) /* max varicode bits for each ascii character */ /* 10 bits for code plus 2 0 bits for inter-character space */ struct VARICODE_DEC { int state; int n_zeros; int v_len; unsigned short packed; int code_num; int n_in; int in[2]; }; int varicode_encode(short varicode_out[], char ascii_in[], int max_out, int n_in, int code_num); void varicode_decode_init(struct VARICODE_DEC *dec_states, int code_num); int varicode_decode(struct VARICODE_DEC *dec_states, char ascii_out[], short varicode_in[], int max_out, int n_in); void varicode_set_code_num(struct VARICODE_DEC *dec_states, int code_num); #ifdef __cplusplus } #endif #endif codec2-1.2.0/src/varicode_table.h000066400000000000000000000172411445607075400165750ustar00rootroot00000000000000//========================================================================== // Name: varicode_table.h // Purpose: Varicode look up table // Created: Nov 24, 2012 // Authors: Clint Turner, KA7OEI, Peter Martinez, G3PLX // // License: // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2.1, // as published by the Free Software Foundation. This program is // distributed in the hope that it will be useful, but WITHOUT ANY // WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public // License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, see . // //========================================================================== /* The following table defines the PKS31 varicode. There are 128 entries, corresponding to ASCII characters 0-127 with two bytes for each entry. The bits for the varicode are to be shifted out MSB-first for both bytes, with the first byte in the table being the first one to be sent. More than one zero in sequence signifies the end of the character (i.e. two zeroes are the intercharacter sequence, so at least two zeroes should always be sent before the next character is sent. This file is constructed with information from the article "PSK31 Fundamentals" by Peter Martinez, G3PLX by Clint Turner, KA7OEI */ unsigned char const varicode_table1[256] = { 0b10101010, 0b11000000, // 0 NUL 0b10110110, 0b11000000, // 1 SOH 0b10111011, 0b01000000, // 2 STX 0b11011101, 0b11000000, // 3 ETX 0b10111010, 0b11000000, // 4 EOT 0b11010111, 0b11000000, // 5 ENQ 0b10111011, 0b11000000, // 6 ACK 0b10111111, 0b01000000, // 7 BEL 0b10111111, 0b11000000, // 8 BS 0b11101111, 0b00000000, // 9 HT 0b11101000, 0b00000000, // 10 LF 0b11011011, 0b11000000, // 11 VT 0b10110111, 0b01000000, // 12 FF 0b11111000, 0b00000000, // 13 CR 0b11011101, 0b01000000, // 14 SO 0b11101010, 0b11000000, // 15 SI 0b10111101, 0b11000000, // 16 DLE 0b10111101, 0b01000000, // 17 DC1 0b11101011, 0b01000000, // 18 DC2 0b11101011, 0b11000000, // 19 DC3 0b11010110, 0b11000000, // 20 DC4 0b11011010, 0b11000000, // 21 NAK 0b11011011, 0b01000000, // 22 SYN 0b11010101, 0b11000000, // 23 ETB 0b11011110, 0b11000000, // 24 CAN 0b11011111, 0b01000000, // 25 EM 0b11101101, 0b11000000, // 26 SUB 0b11010101, 0b01000000, // 27 ESC 0b11010111, 0b01000000, // 28 FS 0b11101110, 0b11000000, // 29 GS 0b10111110, 0b11000000, // 30 RS 0b11011111, 0b11000000, // 31 US 0b10000000, 0b00000000, // 32 SP 0b11111111, 0b10000000, // 33 ! 0b10101111, 0b10000000, // 34 " 0b11111010, 0b10000000, // 35 # 0b11101101, 0b10000000, // 36 $ 0b10110101, 0b01000000, // 37 % 0b10101110, 0b11000000, // 38 & 0b10111111, 0b10000000, // 39 ' 0b11111011, 0b00000000, // 40 ( 0b11110111, 0b00000000, // 41 ) 0b10110111, 0b10000000, // 42 * 0b11101111, 0b10000000, // 43 + 0b11101010, 0b00000000, // 44 , 0b11010100, 0b00000000, // 45 - 0b10101110, 0b00000000, // 46 . 0b11010111, 0b10000000, // 47 / 0b10110111, 0b00000000, // 48 0 0b10111101, 0b00000000, // 49 1 0b11101101, 0b00000000, // 50 2 0b11111111, 0b00000000, // 51 3 0b10111011, 0b10000000, // 52 4 0b10101101, 0b10000000, // 53 5 0b10110101, 0b10000000, // 54 6 0b11010110, 0b10000000, // 55 7 0b11010101, 0b10000000, // 56 8 0b11011011, 0b10000000, // 57 9 0b11110101, 0b00000000, // 58 : 0b11011110, 0b10000000, // 59 ; 0b11110110, 0b10000000, // 60 < 0b10101010, 0b00000000, // 61 = 0b11101011, 0b10000000, // 62 > 0b10101011, 0b11000000, // 63 ? 0b10101111, 0b01000000, // 64 @ 0b11111010, 0b00000000, // 65 A 0b11101011, 0b00000000, // 66 B 0b10101101, 0b00000000, // 67 C 0b10110101, 0b00000000, // 68 D 0b11101110, 0b00000000, // 69 E 0b11011011, 0b00000000, // 70 F 0b11111101, 0b00000000, // 71 G 0b10101010, 0b10000000, // 72 H 0b11111110, 0b00000000, // 73 I 0b11111110, 0b10000000, // 74 J 0b10111110, 0b10000000, // 75 K 0b11010111, 0b00000000, // 76 L 0b10111011, 0b00000000, // 77 M 0b11011101, 0b00000000, // 78 N 0b10101011, 0b00000000, // 79 O 0b11010101, 0b00000000, // 80 P 0b11101110, 0b10000000, // 81 Q 0b10101111, 0b00000000, // 82 R 0b11011110, 0b00000000, // 83 S 0b11011010, 0b00000000, // 84 T 0b10101011, 0b10000000, // 85 U 0b11011010, 0b10000000, // 86 V 0b10101110, 0b10000000, // 87 W 0b10111010, 0b10000000, // 88 X 0b10111101, 0b10000000, // 89 Y 0b10101011, 0b01000000, // 90 Z 0b11111011, 0b10000000, // 91 [ 0b11110111, 0b10000000, // 92 "\" 0b11111101, 0b10000000, // 93 ] 0b10101111, 0b11000000, // 94 ^ 0b10110110, 0b10000000, // 95 _ (underline) 0b10110111, 0b11000000, // 96 ` 0b10110000, 0b00000000, // 97 a 0b10111110, 0b00000000, // 98 b 0b10111100, 0b00000000, // 99 c 0b10110100, 0b00000000, // 100 d 0b11000000, 0b00000000, // 101 e 0b11110100, 0b00000000, // 102 f 0b10110110, 0b00000000, // 103 g 0b10101100, 0b00000000, // 104 h 0b11010000, 0b00000000, // 105 i 0b11110101, 0b10000000, // 106 j 0b10111111, 0b00000000, // 107 k 0b11011000, 0b00000000, // 108 l 0b11101100, 0b00000000, // 109 m 0b11110000, 0b00000000, // 110 n 0b11100000, 0b00000000, // 111 o 0b11111100, 0b00000000, // 112 p 0b11011111, 0b10000000, // 113 q 0b10101000, 0b00000000, // 114 r 0b10111000, 0b00000000, // 115 s 0b10100000, 0b00000000, // 116 t 0b11011100, 0b00000000, // 117 u 0b11110110, 0b00000000, // 118 v 0b11010110, 0b00000000, // 119 w 0b11011111, 0b00000000, // 120 x 0b10111010, 0b00000000, // 121 y 0b11101010, 0b10000000, // 122 z 0b10101101, 0b11000000, // 123 { 0b11011101, 0b10000000, // 124 | 0b10101101, 0b01000000, // 125 } 0b10110101, 0b11000000, // 126 ~ 0b11101101, 0b01000000, // 127 (del) }; // This code was used on FDMDV version 1, and is more compact that Code 1, but // only covers a subset of the ASCII character set char const varicode_table2[] = { ' ', 0b11000000, 13, 0b01000000, // CR, end of message '=', 0b10000000, '1', 0b11110000, '2', 0b01110000, '3', 0b10110000, '4', 0b11010000, '5', 0b01010000, '6', 0b10010000, '7', 0b11100000, '8', 0b01100000, '9', 0b10100000, 'a', 0b11111100, 'b', 0b01111100, 'c', 0b10111100, 'd', 0b11011100, 'e', 0b01011100, 'f', 0b10011100, 'g', 0b11101100, 'h', 0b01101100, 'i', 0b10101100, 'j', 0b11110100, 'k', 0b01110100, 'l', 0b10110100, 'm', 0b11010100, 'n', 0b01010100, 'o', 0b10010100, 'p', 0b11100100, 'q', 0b01100100, 'r', 0b10100100, 's', 0b11111000, 't', 0b01111000, 'u', 0b10111000, 'v', 0b11011000, 'w', 0b01011000, 'x', 0b10011000, 'y', 0b11101000, 'z', 0b01101000, '0', 0b10101000}; codec2-1.2.0/src/vhf_deframe_c2.c000066400000000000000000000056701445607075400164620ustar00rootroot00000000000000 /*---------------------------------------------------------------------------*\ FILE........: vhf_deframe_c2.c AUTHOR......: Brady O'Brien DATE CREATED: 8 March 2016 C tool to extract codec2 data from freedv VHF 2400A/B/whatever frames \*---------------------------------------------------------------------------*/ /* Copyright (C) 2016 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include "freedv_vhf_framing.h" int main(int argc, char *argv[]) { struct freedv_vhf_deframer *deframer; FILE *fin, *fout; uint8_t *bitbuf; uint8_t *c2buf; uint8_t zbuf[] = {0, 0, 0, 0, 0, 0, 0, 0}; int frame_fmt = 0; int fsize, c2size; if (argc < 3) { fprintf(stderr, "usage: %s (A|B) InputOneBitPerCharFile OutputC2File\n", argv[0]); exit(1); } if (strcmp(argv[1], "A") == 0) { frame_fmt = FREEDV_VHF_FRAME_A; } else if (strcmp(argv[1], "B") == 0) { frame_fmt = FREEDV_HF_FRAME_B; } else { fprintf(stderr, "usage: %s (A|B) InputOneBitPerCharFile OutputC2File\n", argv[0]); exit(1); } /* Open files */ if (strcmp(argv[2], "-") == 0) { fin = stdin; } else { fin = fopen(argv[2], "r"); } if (strcmp(argv[3], "-") == 0) { fout = stdout; } else { fout = fopen(argv[3], "w"); } /* Set up deframer */ deframer = fvhff_create_deframer(frame_fmt, 0); if (fin == NULL || fout == NULL || deframer == NULL) { fprintf(stderr, "Couldn't open test vector files\n"); goto cleanup; } c2size = fvhff_get_codec2_size(deframer); fsize = fvhff_get_frame_size(deframer); /* allocate buffers for processing */ bitbuf = (uint8_t *)malloc(sizeof(uint8_t) * fsize); c2buf = (uint8_t *)malloc(sizeof(uint8_t) * c2size); /* Deframe! */ while (fread(bitbuf, sizeof(uint8_t), fsize, fin) == fsize) { if (fvhff_deframe_bits(deframer, c2buf, NULL, NULL, bitbuf)) fwrite(c2buf, sizeof(uint8_t), c2size, fout); else fwrite(zbuf, sizeof(uint8_t), c2size, fout); if (fout == stdin) { fflush(fout); } } fprintf(stderr, "BER Estimate: %f total_uw_err: %d \n", ((float)deframer->total_uw_err) / ((float)deframer->total_uw_bits), deframer->total_uw_err); free(bitbuf); free(c2buf); cleanup: fclose(fin); fclose(fout); fvhff_destroy_deframer(deframer); exit(0); } codec2-1.2.0/src/vhf_frame_c2.c000066400000000000000000000052341445607075400161450ustar00rootroot00000000000000 /*---------------------------------------------------------------------------*\ FILE........: vhf_deframe_c2.c AUTHOR......: Brady O'Brien DATE CREATED: 8 March 2016 C tool to extract codec2 data from freedv VHF 2400A/B/whatever frames \*---------------------------------------------------------------------------*/ /* Copyright (C) 2016 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include "freedv_vhf_framing.h" int main(int argc, char *argv[]) { struct freedv_vhf_deframer *deframer; FILE *fin, *fout; uint8_t *bitbuf; uint8_t *c2buf; int frame_fmt = 0; int fsize, c2size; if (argc < 3) { fprintf(stderr, "usage: %s (A|B) InpuC2File OutputOneBitPerCharFile\n", argv[0]); exit(1); } if (strcmp(argv[1], "A") == 0) { frame_fmt = FREEDV_VHF_FRAME_A; } else if (strcmp(argv[1], "B") == 0) { frame_fmt = FREEDV_HF_FRAME_B; } else { fprintf(stderr, "usage: %s (A|B) InpuC2File OutputOneBitPerCharFile\n", argv[0]); exit(1); } /* Open files */ if (strcmp(argv[2], "-") == 0) { fin = stdin; } else { fin = fopen(argv[2], "r"); } if (strcmp(argv[3], "-") == 0) { fout = stdout; } else { fout = fopen(argv[3], "w"); } /* Set up deframer */ deframer = fvhff_create_deframer(frame_fmt, 0); if (fin == NULL || fout == NULL || deframer == NULL) { fprintf(stderr, "Couldn't open test vector files\n"); goto cleanup; } c2size = fvhff_get_codec2_size(deframer); fsize = fvhff_get_frame_size(deframer); /* allocate buffers for processing */ bitbuf = (uint8_t *)malloc(sizeof(uint8_t) * fsize); c2buf = (uint8_t *)malloc(sizeof(uint8_t) * c2size); /* Deframe! */ while (fread(c2buf, sizeof(uint8_t), c2size, fin) == c2size) { fvhff_frame_bits(frame_fmt, bitbuf, c2buf, NULL, NULL); fwrite(bitbuf, sizeof(uint8_t), fsize, fout); if (fout == stdin) { fflush(fout); } } free(bitbuf); free(c2buf); cleanup: fclose(fin); fclose(fout); fvhff_destroy_deframer(deframer); exit(0); } codec2-1.2.0/src/wval.h000066400000000000000000000134401445607075400146000ustar00rootroot00000000000000/* * Generated file: * * ofdm_wfreq = 40.0; * ofdm_nval = (int)(ofdm_fs / ofdm_wfreq); * ofdm_w = TAU * ofdm_wfreq / ofdm_fs; * * ofdm_wval = MALLOC(sizeof (complex float) * ofdm_nval); * * for (i = 0; i < ofdm_nval; i++) { * ofdm_wval[i] = cmplxconj(ofdm_w * i); * } * */ #include static const complex float ofdm_wval[] = { 1.000000 - 0.000000 * I, 0.999507 - 0.031411 * I, 0.998027 - 0.062791 * I, 0.995562 - 0.094108 * I, 0.992115 - 0.125333 * I, 0.987688 - 0.156434 * I, 0.982287 - 0.187381 * I, 0.975917 - 0.218143 * I, 0.968583 - 0.248690 * I, 0.960294 - 0.278991 * I, 0.951057 - 0.309017 * I, 0.940881 - 0.338738 * I, 0.929776 - 0.368125 * I, 0.917755 - 0.397148 * I, 0.904827 - 0.425779 * I, 0.891007 - 0.453991 * I, 0.876307 - 0.481754 * I, 0.860742 - 0.509041 * I, 0.844328 - 0.535827 * I, 0.827081 - 0.562083 * I, 0.809017 - 0.587785 * I, 0.790155 - 0.612907 * I, 0.770513 - 0.637424 * I, 0.750111 - 0.661312 * I, 0.728969 - 0.684547 * I, 0.707107 - 0.707107 * I, 0.684547 - 0.728969 * I, 0.661312 - 0.750111 * I, 0.637424 - 0.770513 * I, 0.612907 - 0.790155 * I, 0.587785 - 0.809017 * I, 0.562083 - 0.827081 * I, 0.535827 - 0.844328 * I, 0.509041 - 0.860742 * I, 0.481754 - 0.876307 * I, 0.453990 - 0.891007 * I, 0.425779 - 0.904827 * I, 0.397148 - 0.917755 * I, 0.368125 - 0.929776 * I, 0.338738 - 0.940881 * I, 0.309017 - 0.951057 * I, 0.278991 - 0.960294 * I, 0.248690 - 0.968583 * I, 0.218143 - 0.975917 * I, 0.187381 - 0.982287 * I, 0.156434 - 0.987688 * I, 0.125333 - 0.992115 * I, 0.094108 - 0.995562 * I, 0.062790 - 0.998027 * I, 0.031411 - 0.999507 * I, -0.000000 - 1.000000 * I, -0.031411 - 0.999507 * I, -0.062791 - 0.998027 * I, -0.094108 - 0.995562 * I, -0.125333 - 0.992115 * I, -0.156435 - 0.987688 * I, -0.187381 - 0.982287 * I, -0.218143 - 0.975917 * I, -0.248690 - 0.968583 * I, -0.278991 - 0.960294 * I, -0.309017 - 0.951056 * I, -0.338738 - 0.940881 * I, -0.368125 - 0.929776 * I, -0.397148 - 0.917755 * I, -0.425779 - 0.904827 * I, -0.453991 - 0.891006 * I, -0.481754 - 0.876307 * I, -0.509042 - 0.860742 * I, -0.535827 - 0.844328 * I, -0.562084 - 0.827080 * I, -0.587785 - 0.809017 * I, -0.612907 - 0.790155 * I, -0.637424 - 0.770513 * I, -0.661312 - 0.750111 * I, -0.684547 - 0.728968 * I, -0.707107 - 0.707107 * I, -0.728969 - 0.684547 * I, -0.750111 - 0.661312 * I, -0.770513 - 0.637424 * I, -0.790155 - 0.612907 * I, -0.809017 - 0.587785 * I, -0.827081 - 0.562083 * I, -0.844328 - 0.535827 * I, -0.860742 - 0.509041 * I, -0.876307 - 0.481754 * I, -0.891007 - 0.453990 * I, -0.904827 - 0.425779 * I, -0.917755 - 0.397148 * I, -0.929777 - 0.368124 * I, -0.940881 - 0.338738 * I, -0.951057 - 0.309017 * I, -0.960294 - 0.278991 * I, -0.968583 - 0.248690 * I, -0.975917 - 0.218143 * I, -0.982287 - 0.187381 * I, -0.987688 - 0.156434 * I, -0.992115 - 0.125333 * I, -0.995562 - 0.094108 * I, -0.998027 - 0.062790 * I, -0.999507 - 0.031411 * I, -1.000000 + 0.000000 * I, -0.999507 + 0.031411 * I, -0.998027 + 0.062791 * I, -0.995562 + 0.094108 * I, -0.992115 + 0.125333 * I, -0.987688 + 0.156435 * I, -0.982287 + 0.187381 * I, -0.975917 + 0.218143 * I, -0.968583 + 0.248690 * I, -0.960294 + 0.278991 * I, -0.951056 + 0.309017 * I, -0.940881 + 0.338738 * I, -0.929776 + 0.368125 * I, -0.917755 + 0.397148 * I, -0.904827 + 0.425780 * I, -0.891006 + 0.453991 * I, -0.876307 + 0.481754 * I, -0.860742 + 0.509042 * I, -0.844328 + 0.535827 * I, -0.827081 + 0.562083 * I, -0.809017 + 0.587785 * I, -0.790155 + 0.612907 * I, -0.770513 + 0.637424 * I, -0.750111 + 0.661312 * I, -0.728969 + 0.684547 * I, -0.707107 + 0.707107 * I, -0.684547 + 0.728969 * I, -0.661312 + 0.750111 * I, -0.637424 + 0.770513 * I, -0.612907 + 0.790155 * I, -0.587785 + 0.809017 * I, -0.562083 + 0.827081 * I, -0.535827 + 0.844328 * I, -0.509041 + 0.860742 * I, -0.481753 + 0.876307 * I, -0.453990 + 0.891007 * I, -0.425779 + 0.904827 * I, -0.397148 + 0.917755 * I, -0.368124 + 0.929777 * I, -0.338738 + 0.940881 * I, -0.309017 + 0.951057 * I, -0.278991 + 0.960294 * I, -0.248690 + 0.968583 * I, -0.218143 + 0.975917 * I, -0.187381 + 0.982287 * I, -0.156434 + 0.987688 * I, -0.125333 + 0.992115 * I, -0.094108 + 0.995562 * I, -0.062790 + 0.998027 * I, -0.031410 + 0.999507 * I, 0.000000 + 1.000000 * I, 0.031411 + 0.999507 * I, 0.062791 + 0.998027 * I, 0.094108 + 0.995562 * I, 0.125333 + 0.992115 * I, 0.156435 + 0.987688 * I, 0.187381 + 0.982287 * I, 0.218143 + 0.975917 * I, 0.248690 + 0.968583 * I, 0.278991 + 0.960294 * I, 0.309017 + 0.951056 * I, 0.338738 + 0.940881 * I, 0.368125 + 0.929776 * I, 0.397148 + 0.917755 * I, 0.425779 + 0.904827 * I, 0.453991 + 0.891006 * I, 0.481754 + 0.876307 * I, 0.509042 + 0.860742 * I, 0.535827 + 0.844328 * I, 0.562084 + 0.827080 * I, 0.587785 + 0.809017 * I, 0.612907 + 0.790155 * I, 0.637424 + 0.770513 * I, 0.661312 + 0.750111 * I, 0.684547 + 0.728968 * I, 0.707107 + 0.707107 * I, 0.728969 + 0.684547 * I, 0.750111 + 0.661312 * I, 0.770513 + 0.637424 * I, 0.790155 + 0.612907 * I, 0.809017 + 0.587785 * I, 0.827081 + 0.562083 * I, 0.844328 + 0.535826 * I, 0.860742 + 0.509041 * I, 0.876307 + 0.481753 * I, 0.891007 + 0.453990 * I, 0.904827 + 0.425779 * I, 0.917755 + 0.397147 * I, 0.929777 + 0.368124 * I, 0.940881 + 0.338737 * I, 0.951057 + 0.309016 * I, 0.960294 + 0.278991 * I, 0.968583 + 0.248689 * I, 0.975917 + 0.218143 * I, 0.982287 + 0.187381 * I, 0.987688 + 0.156434 * I, 0.992115 + 0.125333 * I, 0.995562 + 0.094108 * I, 0.998027 + 0.062790 * I, 0.999507 + 0.031411 * I}; codec2-1.2.0/stm32/000077500000000000000000000000001445607075400136355ustar00rootroot00000000000000codec2-1.2.0/stm32/CMakeLists.txt000066400000000000000000000216121445607075400163770ustar00rootroot00000000000000# # stm32f4 support for Codec2 # # CMake configuration contributed by Richard Shaw (KF5OIM) # Please report questions, comments, problems, or patches to the freetel # mailing list: https://lists.sourceforge.net/lists/listinfo/freetel-codec2 # set(ARM_GCC_BIN "" CACHE STRING "Path to the bin directory of your arm-eabi-none-gcc (optional)") project(stm32f4 C ASM) if(CMAKE_CROSSCOMPILING) message(STATUS "We are cross compiling...") else() message(STATUS "Performing standard host build...") endif() cmake_minimum_required(VERSION 2.8) include(cmake/gencodebooks.cmake) # # Prevent in-source builds # If an in-source build is attempted, you will still need to clean up a few # files manually. # set(CMAKE_DISABLE_SOURCE_CHANGES ON) set(CMAKE_DISABLE_IN_SOURCE_BUILD ON) if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") message(FATAL_ERROR "In-source builds in ${CMAKE_BINARY_DIR} are not " "allowed, please remove ./CMakeCache.txt and ./CMakeFiles/, create a " "separate build directory and run cmake from there.") endif("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") #include(cmake/STM32_Toolchain.cmake) ################################################### set(FLOAT_TYPE "hard" CACHE STRING "Floating point: defaults to hard.") set(CMAKE_TOOLCHAIN_FILE "../stm32/cmake/STM32_Toolchain.cmake" CACHE STRING "Toolchain defs") ################################################### # # Find the git hash if this is a working copy. # if(EXISTS ${CMAKE_SOURCE_DIR}/.git) find_package(Git QUIET) if(Git_FOUND) execute_process( COMMAND "${GIT_EXECUTABLE}" describe --always HEAD WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" RESULT_VARIABLE res OUTPUT_VARIABLE FREEDV_HASH ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) message(STATUS "freedv-gui current git hash: ${FREEDV_HASH}") add_definitions(-DGIT_HASH="${FREEDV_HASH}") else() message(WARNING "Git not found. Can not determine current commit hash.") add_definitions(-DGIT_HASH="Unknown") endif() else() add_definitions(-DGIT_HASH="None") endif() # Set default C flags. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -std=gnu11 -mlittle-endian -mthumb -mthumb-interwork --specs=nano.specs -u_printf_float -mcpu=cortex-m4 -ffunction-sections -fdata-sections -O3") add_definitions(-DSTM32F40_41xxx -DCORTEX_M4 -D__EMBEDDED__) add_definitions(-DFREEDV_MODE_EN_DEFAULT=0 -DFREEDV_MODE_1600_EN=1 -DFREEDV_MODE_700D_EN=1 -DFREEDV_MODE_700E_EN=1 -DCODEC2_MODE_EN_DEFAULT=0 -DCODEC2_MODE_1300_EN=1 -DCODEC2_MODE_700C_EN=1) if(FLOAT_TYPE STREQUAL "hard") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsingle-precision-constant -Wdouble-promotion -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D__FPU_PRESENT=1 -D__FPU_USED=1") #CFLAGS += -fsingle-precision-constant else() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msoft-float") endif() option(VERIFY_OPT "Enable this for dump files to help verify optimization" OFF) if(VERIFY_OPT) add_definitions(-DDUMP) endif() # Set default build type if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Debug") endif() if(CMAKE_BUILD_TYPE STREQUAL "Debug") link_libraries(g m) else() link_libraries(c m) endif() # Setup defaults that can't be set in the toolchain file set(CMAKE_EXE_LINKER_FLAGS "-u_init -T${CMAKE_SOURCE_DIR}/stm32_flash.ld -Xlinker --gc-sections") set(CMAKE_EXECUTABLE_SUFFIX_C ".elf") set(CMAKE_EXECUTABLE_SUFFIX_CXX ".elf") set(CMAKE_EXECUTABLE_SUFFIX_ASM ".elf") set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -x assembler-with-cpp") # Check build flags message(STATUS "CMAKE_C_FLAGS: " ${CMAKE_C_FLAGS}) message(STATUS "CMAKE_ASM_FLAGS: " ${CMAKE_ASM_FLAGS}) ################################################### # STM32F4 Standard Peripheral Library include(cmake/STM32_Lib.cmake) ################################################### # Macro for elf->bin macro(elf2bin target) add_custom_command(TARGET ${target} POST_BUILD COMMAND ${CMAKE_OBJCOPY} -O binary ${target}.elf ${target}.bin && ${CMAKE_OBJCOPY} -O ihex ${target}.elf ${target}.hex COMMENT "Creating binary for ${target}") set_source_files_properties(${target}.bin PROPERTIES GENERATED TRUE) set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${target}.bin ${target}.hex) endmacro() # This macro just adds generation of a map file with the same name as the executable and .map suffix # to the linker command line. This works in older Cmake version (versions >= 3.13 have target_link_options) # it should be a one to one replacement for add_executable macro(add_mapped_executable target) add_executable(${target} ${ARGN}) target_link_libraries(${target} "-Wl,-Map=$.map") set_source_files_properties(${target}.map PROPERTIES GENERATED TRUE) set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${target}.map) endmacro() include(CTest) include_directories(../src ../unittest inc ${PROJECT_BINARY_DIR}) add_subdirectory(unittest/src) # Codec 2 # Output path is such that #include in codec2.h works set(CODEC2_VERSION_PATH "${PROJECT_BINARY_DIR}/codec2") configure_file ("${PROJECT_SOURCE_DIR}/../cmake/version.h.in" "${CODEC2_VERSION_PATH}/version.h" ) set(CODEC2_SRC ../src) set(CODEC2_GEN_CODEBOOK_SRC ../build/src) set(CODEC2_SRCS ${CODEC2_SRC}/lpc.c ${CODEC2_SRC}/nlp.c ${CODEC2_SRC}/postfilter.c ${CODEC2_SRC}/sine.c ${CODEC2_SRC}/codec2.c ${CODEC2_SRC}/codec2_fft.c ${CODEC2_SRC}/gp_interleaver.c ${CODEC2_SRC}/interldpc.c ${CODEC2_SRC}/kiss_fft.c ${CODEC2_SRC}/kiss_fftr.c ${CODEC2_SRC}/interp.c ${CODEC2_SRC}/lsp.c ${CODEC2_SRC}/ofdm.c ${CODEC2_SRC}/ofdm_mode.c ${CODEC2_SRC}/phase.c ${CODEC2_SRC}/quantise.c ${CODEC2_SRC}/pack.c ${CODEC2_SRC}/dump.c ${CODEC2_SRC}/cohpsk.c ${CODEC2_SRC}/fdmdv.c ${CODEC2_SRC}/freedv_api.c ${CODEC2_SRC}/freedv_1600.c ${CODEC2_SRC}/freedv_700.c ${CODEC2_SRC}/freedv_2020.c ${CODEC2_SRC}/freedv_fsk.c ${CODEC2_SRC}/filter.c ${CODEC2_SRC}/varicode.c ${CODEC2_SRC}/golay23.c ${CODEC2_SRC}/freedv_data_channel.c ${CODEC2_SRC}/newamp1.c ${CODEC2_SRC}/mbest.c ${CODEC2_SRC}/HRA_112_112.c ${CODEC2_SRC}/HRA_56_56.c ${CODEC2_SRC}/linreg.c ${CODEC2_SRC}/mpdecode_core.c ${CODEC2_SRC}/ldpc_codes.c ${CODEC2_SRC}/phi0.c ${CODEC2_SRC}/HRAb_396_504.c ${CODEC2_SRC}/codec2_math_arm.c codebook.c codebookd.c codebookjmv.c codebookge.c codebooknewamp1_energy.c codebooknewamp1.c ) set(STM32F4_ADAC_SRCS src/stm32f4_adc.c src/stm32f4_dac.c ../src/codec2_fifo.c ) add_library(stm32f4_adac STATIC ${STM32F4_ADAC_SRCS}) add_library(codec2 STATIC ${CODEC2_SRCS}) add_library(codec2_prof STATIC ${CODEC2_SRCS}) target_compile_definitions(codec2_prof PRIVATE PROFILE) set(SYSTEM_SRCS src/system_stm32f4xx.c src/startup_stm32f4xx.s ) add_library(sm1000base STATIC src/sm1000_leds_switches.c src/debugblinky.c ${SYSTEM_SRCS}) set(PROFILE_SYSTEM_SRCS src/stm32f4_machdep.c ) list(APPEND PROFILE_SYSTEM_SRCS ${SYSTEM_SRCS}) #---------------------------- set(DAC_UT_SRCS src/dac_ut.c ) add_mapped_executable(dac_ut ${DAC_UT_SRCS}) target_link_libraries(dac_ut stm32f4_adac stm32f4 sm1000base) elf2bin(dac_ut) #---------------------------- set(USART_UT_SRCS src/stm32f4_usart.c src/usart_ut.c ) add_mapped_executable(usart_ut ${USART_UT_SRCS}) target_link_libraries(usart_ut stm32f4 sm1000base) elf2bin(usart_ut) #---------------------------- set(USB_VCP usb_conf/usb_bsp.c usb_conf/usbd_desc.c usb_conf/usbd_usr.c usb_lib/cdc/usbd_cdc_core.c usb_lib/cdc/usbd_cdc_vcp.c usb_lib/core/usbd_core.c usb_lib/core/usbd_ioreq.c usb_lib/core/usbd_req.c usb_lib/otg/usb_core.c usb_lib/otg/usb_dcd.c usb_lib/otg/usb_dcd_int.c) set(USB_VCP_UT src/usb_vcp_ut.c src/stm32f4_usb_vcp.c ) list(APPEND USB_VCP_UT ${USB_VCP}) add_definitions(-DUSE_USB_OTG_FS -DUSE_ULPI_PHY) include_directories(usb_conf usb_lib/cdc usb_lib/core usb_lib/otg) add_mapped_executable(usb_vcp_ut ${USB_VCP_UT}) target_link_libraries(usb_vcp_ut stm32f4 sm1000base) elf2bin(usb_vcp_ut) set(ADC_REC_USB_SRCS src/adc_rec_usb.c src/stm32f4_usb_vcp.c ) add_mapped_executable(adc_rec_usb ${ADC_REC_USB_SRCS} ${USB_VCP}) target_link_libraries(adc_rec_usb stm32f4_adac stm32f4 sm1000base) elf2bin(adc_rec_usb) #---------------------------- set(SM1000_LEDS_SWITCHES_UT_SRCS src/sm1000_leds_switches_ut.c src/sm1000_leds_switches.c ) add_mapped_executable(sm1000_leds_switches_ut ${SM1000_LEDS_SWITCHES_UT_SRCS}) target_link_libraries(sm1000_leds_switches_ut stm32f4 sm1000base) elf2bin(sm1000_leds_switches_ut) #---------------------------- set(SM1000_SRCS src/sm1000_main.c src/tone.c src/sfx.c src/sounds.c src/morse.c src/menu.c src/tot.c src/sm1000_leds_switches.c ../src/codec2_fifo.c src/debugblinky.c src/stm32f4_vrom.c src/stm32f4_usart.c src/memtools.c ) list(APPEND SM1000_SRCS ${CODEC2_SRCS}) add_mapped_executable(sm1000v5 ${SM1000_SRCS} ${SYSTEM_SRCS}) target_link_libraries(sm1000v5 stm32f4_adac stm32f4 CMSIS) target_compile_options(sm1000v5 PRIVATE "-O3") elf2bin(sm1000v5) codec2-1.2.0/stm32/README.md000066400000000000000000000055241445607075400151220ustar00rootroot00000000000000# Building for the stm32 ## Quickstart 1. Build codec2 (with -DUNITTEST=1) for your host system, see [codec2/README.md](../README.md) ``` $ cd ~/codec2 $ mkdir build_linux && cd build_linux && cmake -DUNITTEST=1 .. && make ``` 2. Install a gcc arm toolchain: ``` $ cd ~ $ wget https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/8-2018q4/gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2 $ tar xvjf gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2 $ export PATH=$HOME/gcc-arm-none-eabi-8-2018-q4-major/bin:$PATH ``` NOTE: We do not recommend toolchains provided by popular distributions (e.g. the Ubuntu 18 gcc-arm-none-eabi package will not work). 3. Create a build directory (```/path/to/codec2/stm32``` recommended to support unit tests) ``` $ cd /path/to/codec2/stm32 $ mkdir build_stm32 $ cd build_stm32 ``` 4. The STM32 Standard Peripheral Library is required. The download requires a registration on the STM website. Save the zip file somewhere safe and then extract it anywhere you like. You will have to tell cmake where the unzipped library is by giving the variable PERIPHLIBDIR the location of top level directory, e.g. for version 1.8.0 this is STM32F4xx_DSP_StdPeriph_Lib_V1.8.0. In this example we will assume the library has been unzipped in ~/Downloads. 5. Configure the build system by running cmake: ``` $ cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/STM32_Toolchain.cmake \ -DPERIPHLIBDIR=~/Downloads/STM32F4xx_DSP_StdPeriph_Lib_V1.8.0 .. ``` Or a more general case: ``` $ cmake /path/to/codec2-dev/stm32 -DCMAKE_TOOLCHAIN_FILE=/path/to/codec2-dev/stm32/cmake/STM32_Toolchain.cmake \ -DPERIPHLIBDIR=/path/to/unzipped/STM32F4xx_DSP_StdPeriph_Lib_Vx.x.x .. ``` 6. Build binaries (including sm1000.bin) Finally: ``` $ make ``` To see all the details during compilation: ``` $ make VERBOSE=1 ``` ## Flashing your SM1000 1. Power up your SM1000 with the PTT button down. Then flash it with: 2. ``` sudo dfu-util -d 0483:df11 -c 1 -i 0 -a 0 -s 0x08000000 -D sm1000.bin ``` 3. Power cycle to reboot. ## Loading and Debugging stm32 programs 1. See unitest/README.md for information on how to set up openocd. 2. In one console Start openocd: ``` $ openocd -f board/stm32f4discovery.cfg ``` 3. In another start gdb: ``` $ cd ~/codec2/stm32/build_stm32 $ arm-none-eabi-gdb usart_ut.elf (gdb) target remote :3333 (gdb) load (gdb) c ``` ## Directories Directory | Notes ---|--- cmake | cmake support files for the stm32 doc | SM1000 documentation inc | top level sm1000 source, drivers, and some legacy test code src | top level sm1000 source, drivers, and some legacy test code unittest | comprehensive set of automated unit tests for the stm32 700D port codec2-1.2.0/stm32/cmake/000077500000000000000000000000001445607075400147155ustar00rootroot00000000000000codec2-1.2.0/stm32/cmake/STM32_Lib.cmake000066400000000000000000000465601445607075400173300ustar00rootroot00000000000000################################################### # Definitions for the STM32F4 Standard Peripheral Library #set(PERIPHLIBURL http://www.st.com/st-web-ui/static/active/en/st_prod_software_internet/resource/technical/software/firmware) #set(PERIPHLIBZIP stm32f4_dsp_stdperiph_lib.zip) set(PERIPHLIBVER 1.8.0) set(PERIPHLIBNAME STM32F4xx_DSP_StdPeriph_Lib_V) if(NOT PERIPHLIBDIR) set(PERIPHLIBDIR ${CMAKE_SOURCE_DIR}/${PERIPHLIBNAME}${PERIPHLIBVER}) message(STATUS "Using default path for StdPeriph Lib: ${PERIPHLIBDIR}") endif() set(CMSIS ${PERIPHLIBDIR}/Libraries/CMSIS) set(STM32F4LIB ${PERIPHLIBDIR}/Libraries/STM32F4xx_StdPeriph_Driver) set(STM32F4TEMPLATE ${PERIPHLIBDIR}/Project/STM32F4xx_StdPeriph_Templates) set(DSPLIB ${PERIPHLIBDIR}/Libraries/CMSIS/DSP_Lib) add_definitions(-DUSE_STDPERIPH_DRIVER -DARM_MATH_CM4 -DHSE_VALUE=\(\(uint32_t\)8000000\)) include_directories(${STM32F4LIB}/inc ${STM32F4TEMPLATE} ${CMSIS}/Include ${CMSIS}/Device/ST/STM32F4xx/Include) set(STM32F4LIB_SRCS ${STM32F4LIB}/src/misc.c ${STM32F4LIB}/src/stm32f4xx_adc.c ${STM32F4LIB}/src/stm32f4xx_can.c ${STM32F4LIB}/src/stm32f4xx_cec.c ${STM32F4LIB}/src/stm32f4xx_crc.c ${STM32F4LIB}/src/stm32f4xx_cryp_aes.c ${STM32F4LIB}/src/stm32f4xx_cryp.c ${STM32F4LIB}/src/stm32f4xx_cryp_des.c ${STM32F4LIB}/src/stm32f4xx_cryp_tdes.c ${STM32F4LIB}/src/stm32f4xx_dac.c ${STM32F4LIB}/src/stm32f4xx_dbgmcu.c ${STM32F4LIB}/src/stm32f4xx_dcmi.c ${STM32F4LIB}/src/stm32f4xx_dma2d.c ${STM32F4LIB}/src/stm32f4xx_dma.c ${STM32F4LIB}/src/stm32f4xx_exti.c ${STM32F4LIB}/src/stm32f4xx_flash.c ${STM32F4LIB}/src/stm32f4xx_flash_ramfunc.c ${STM32F4LIB}/src/stm32f4xx_fmpi2c.c ${STM32F4LIB}/src/stm32f4xx_fsmc.c ${STM32F4LIB}/src/stm32f4xx_gpio.c ${STM32F4LIB}/src/stm32f4xx_hash.c ${STM32F4LIB}/src/stm32f4xx_hash_md5.c ${STM32F4LIB}/src/stm32f4xx_hash_sha1.c ${STM32F4LIB}/src/stm32f4xx_i2c.c ${STM32F4LIB}/src/stm32f4xx_iwdg.c ${STM32F4LIB}/src/stm32f4xx_ltdc.c ${STM32F4LIB}/src/stm32f4xx_pwr.c ${STM32F4LIB}/src/stm32f4xx_qspi.c ${STM32F4LIB}/src/stm32f4xx_rcc.c ${STM32F4LIB}/src/stm32f4xx_rng.c ${STM32F4LIB}/src/stm32f4xx_rtc.c ${STM32F4LIB}/src/stm32f4xx_sai.c ${STM32F4LIB}/src/stm32f4xx_sdio.c ${STM32F4LIB}/src/stm32f4xx_spdifrx.c ${STM32F4LIB}/src/stm32f4xx_spi.c ${STM32F4LIB}/src/stm32f4xx_syscfg.c ${STM32F4LIB}/src/stm32f4xx_tim.c ${STM32F4LIB}/src/stm32f4xx_usart.c ${STM32F4LIB}/src/stm32f4xx_wwdg.c # Not compiling for now # $(STM32F4LIB)/src/stm32f4xx_fmc.c ) add_library(stm32f4 STATIC ${STM32F4LIB_SRCS}) set(CMSIS_SRCS ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_abs_f32.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_abs_q15.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_abs_q31.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_abs_q7.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_add_f32.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_add_q15.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_add_q31.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_add_q7.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_f32.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q15.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q31.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q7.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_mult_f32.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_mult_q15.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_mult_q31.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_mult_q7.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_negate_f32.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_negate_q15.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_negate_q31.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_negate_q7.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_offset_f32.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_offset_q15.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_offset_q31.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_offset_q7.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_scale_f32.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_scale_q15.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_scale_q31.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_scale_q7.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_shift_q15.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_shift_q31.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_shift_q7.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_sub_f32.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_sub_q15.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_sub_q31.c ${CMSIS}/DSP_Lib/Source/BasicMathFunctions/arm_sub_q7.c ${CMSIS}/DSP_Lib/Source/CommonTables/arm_common_tables.c ${CMSIS}/DSP_Lib/Source/CommonTables/arm_const_structs.c ${CMSIS}/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c ${CMSIS}/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c ${CMSIS}/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c ${CMSIS}/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c ${CMSIS}/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c ${CMSIS}/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c ${CMSIS}/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c ${CMSIS}/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c ${CMSIS}/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c ${CMSIS}/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c ${CMSIS}/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c ${CMSIS}/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c ${CMSIS}/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c ${CMSIS}/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c ${CMSIS}/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c ${CMSIS}/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c ${CMSIS}/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c ${CMSIS}/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c ${CMSIS}/DSP_Lib/Source/ControllerFunctions/arm_pid_init_f32.c ${CMSIS}/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q15.c ${CMSIS}/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q31.c ${CMSIS}/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_f32.c ${CMSIS}/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q15.c ${CMSIS}/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q31.c ${CMSIS}/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_f32.c ${CMSIS}/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_q31.c ${CMSIS}/DSP_Lib/Source/FastMathFunctions/arm_cos_f32.c ${CMSIS}/DSP_Lib/Source/FastMathFunctions/arm_cos_q15.c ${CMSIS}/DSP_Lib/Source/FastMathFunctions/arm_cos_q31.c ${CMSIS}/DSP_Lib/Source/FastMathFunctions/arm_sin_f32.c ${CMSIS}/DSP_Lib/Source/FastMathFunctions/arm_sin_q15.c ${CMSIS}/DSP_Lib/Source/FastMathFunctions/arm_sin_q31.c ${CMSIS}/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q15.c ${CMSIS}/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_conv_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_opt_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q7.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q7.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q7.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_conv_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_conv_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_conv_q7.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_correlate_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q7.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_correlate_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_correlate_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_correlate_q7.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_init_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q7.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_q7.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q7.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q7.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_lms_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_lms_init_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_f32.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q31.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_lms_q15.c ${CMSIS}/DSP_Lib/Source/FilteringFunctions/arm_lms_q31.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_add_f32.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q15.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q31.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_init_f32.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q15.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q31.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f32.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f64.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_f32.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q15.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q31.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q15.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q31.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_f32.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q15.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q31.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_f32.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q15.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q31.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_f32.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q15.c ${CMSIS}/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q31.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_max_f32.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_max_q15.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_max_q31.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_max_q7.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_mean_f32.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_mean_q15.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_mean_q31.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_mean_q7.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_min_f32.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_min_q15.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_min_q31.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_min_q7.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_power_f32.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_power_q15.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_power_q31.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_power_q7.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_rms_f32.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_rms_q15.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_rms_q31.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_std_f32.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_std_q15.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_std_q31.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_var_f32.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_var_q15.c ${CMSIS}/DSP_Lib/Source/StatisticsFunctions/arm_var_q31.c ${CMSIS}/DSP_Lib/Source/SupportFunctions/arm_copy_f32.c ${CMSIS}/DSP_Lib/Source/SupportFunctions/arm_copy_q15.c ${CMSIS}/DSP_Lib/Source/SupportFunctions/arm_copy_q31.c ${CMSIS}/DSP_Lib/Source/SupportFunctions/arm_copy_q7.c ${CMSIS}/DSP_Lib/Source/SupportFunctions/arm_fill_f32.c ${CMSIS}/DSP_Lib/Source/SupportFunctions/arm_fill_q15.c ${CMSIS}/DSP_Lib/Source/SupportFunctions/arm_fill_q31.c ${CMSIS}/DSP_Lib/Source/SupportFunctions/arm_fill_q7.c ${CMSIS}/DSP_Lib/Source/SupportFunctions/arm_float_to_q15.c ${CMSIS}/DSP_Lib/Source/SupportFunctions/arm_float_to_q31.c ${CMSIS}/DSP_Lib/Source/SupportFunctions/arm_float_to_q7.c ${CMSIS}/DSP_Lib/Source/SupportFunctions/arm_q15_to_float.c ${CMSIS}/DSP_Lib/Source/SupportFunctions/arm_q15_to_q31.c ${CMSIS}/DSP_Lib/Source/SupportFunctions/arm_q15_to_q7.c ${CMSIS}/DSP_Lib/Source/SupportFunctions/arm_q31_to_float.c ${CMSIS}/DSP_Lib/Source/SupportFunctions/arm_q31_to_q15.c ${CMSIS}/DSP_Lib/Source/SupportFunctions/arm_q31_to_q7.c ${CMSIS}/DSP_Lib/Source/SupportFunctions/arm_q7_to_float.c ${CMSIS}/DSP_Lib/Source/SupportFunctions/arm_q7_to_q15.c ${CMSIS}/DSP_Lib/Source/SupportFunctions/arm_q7_to_q31.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_bitreversal.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_bitreversal2.S ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_cfft_f32.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_cfft_q15.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_cfft_q31.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_f32.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_f32.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q15.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q31.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q15.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q31.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_f32.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_f32.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q15.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q31.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q15.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q31.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_cfft_radix8_f32.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_dct4_f32.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_dct4_init_f32.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q15.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q31.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_dct4_q15.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_dct4_q31.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_rfft_f32.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_f32.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_init_f32.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_rfft_init_f32.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q15.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q31.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_rfft_q15.c ${CMSIS}/DSP_Lib/Source/TransformFunctions/arm_rfft_q31.c ) add_library(CMSIS STATIC ${CMSIS_SRCS}) target_compile_options(CMSIS PRIVATE "-Wno-double-promotion") codec2-1.2.0/stm32/cmake/STM32_Toolchain.cmake000066400000000000000000000014121445607075400205250ustar00rootroot00000000000000set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_SYSTEM_PROCESSOR arm) set(CMAKE_SYSTEM_VERSION 1) set(CMAKE_ASM_FLAGS "${CFLAGS} -x assembler-with-cpp") # specify the cross compiler set(CMAKE_C_COMPILER ${ARM_GCC_BIN}arm-none-eabi-gcc) set(CMAKE_CXX_COMPILER ${ARM_GCC_BIN}arm-none-eabi-cpp) set(CMAKE_ASM ${ARM_GCC_BIN}arm-none-eabi-as) set(CMAKE_OBJCOPY ${ARM_GCC_BIN}arm-none-eabi-objcopy) set(CMAKE_C_FLAGS_INIT "-specs=nosys.specs" CACHE STRING "Required compiler init flags") set(CMAKE_CXX_FLAGS_INIT "-specs=nosys.specs" CACHE STRING "Required compiler init flags") ## https://stackoverflow.com/questions/10599038/can-i-skip-cmake-compiler-tests-or-avoid-error-unrecognized-option-rdynamic set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") codec2-1.2.0/stm32/cmake/arm_header.cmake000066400000000000000000000054071445607075400200140ustar00rootroot00000000000000CMAKE_MINIMUM_REQUIRED(VERSION 2.8.4) #custom command to use objcopy to create .bin files out of ELF files function(make_mbed_firmware INPUT) add_custom_command(TARGET ${INPUT} COMMAND arm-none-eabi-objcopy -O binary ${INPUT} ${INPUT}_${MBED_TARGET}.bin COMMENT "objcopying to make mbed compatible firmware") set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${INPUT}_${MBED_TARGET}.bin) endfunction(make_mbed_firmware) #assume we're using an LPC1768 model if it's not specified by -DMBED_TARGET= if( NOT MBED_TARGET MATCHES "LPC1768" AND NOT MBED_TARGET MATCHES "LPC2368" AND NOT MBED_TARGET MATCHES "LPC11U24") message(STATUS "invalid or no mbed target specified. Options are LPC1768, LPC2368 or LPC11U24. Assuming LPC1768 for now. Target may be specified using -DMBED_TARGET=") set(MBED_TARGET "LPC1768") endif( NOT MBED_TARGET MATCHES "LPC1768" AND NOT MBED_TARGET MATCHES "LPC2368" AND NOT MBED_TARGET MATCHES "LPC11U24") set(MBED_INCLUDE "${CMAKE_SOURCE_DIR}/mbed/${MBED_TARGET}/GCC_CS/") #setup target specific object files if(MBED_TARGET MATCHES "LPC1768") set(MBED_PREFIX "LPC17") set(CORE "cm3") set(CHIP ${MBED_INCLUDE}sys.o ${MBED_INCLUDE}startup_LPC17xx.o) elseif(MBED_TARGET MATCHES "LPC2368") set(CHIP ${MBED_INCLUDE}vector_functions.o ${MBED_INCLUDE}vector_realmonitor.o ${MBED_INCLUDE}vector_table.o) set(MBED_PREFIX "LPC23") set(CORE "arm7") elseif(MBED_TARGET MATCHES "LPC11U24") set(CHIP ${MBED_INCLUDE}sys.o ${MBED_INCLUDE}startup_LPC11xx.o) set(CORE "cm0") set(MBED_PREFIX "LPC11U") endif(MBED_TARGET MATCHES "LPC1768") #setup precompiled mbed files which will be needed for all projects set(CHIP ${CHIP} ${MBED_INCLUDE}system_${MBED_PREFIX}xx.o ${MBED_INCLUDE}cmsis_nvic.o ${MBED_INCLUDE}core_${CORE}.o) #force min size build type if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE MinSizeRel CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE) endif(NOT CMAKE_BUILD_TYPE) #set correct linker script set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} \"-T${CMAKE_SOURCE_DIR}/mbed/${MBED_TARGET}/GCC_CS/${MBED_TARGET}.ld\" -static") #find CodeSourcery Toolchain for appropriate include dirs find_path(CSPATH arm-none-eabi-g++ PATHS ENV) message(STATUS "${CSPATH} is where CodeSourcery is installed") #setup directories for appropriate C, C++, mbed libraries and includes include_directories(${MBED_INCLUDE}) include_directories(mbed) include_directories(${CSPATH}/../arm-none-eabi/include) include_directories(${CSPATH}/../arm-none-eabi/include/c++/4.6.1) link_directories(${MBED_INCLUDE}) codec2-1.2.0/stm32/cmake/gencodebooks.cmake000066400000000000000000000113451445607075400203650ustar00rootroot00000000000000# # Generated sources # set(D ${CMAKE_CURRENT_SOURCE_DIR}/../src/codebook) # lsp quantisers set(CODEBOOKS ${D}/lsp1.txt ${D}/lsp2.txt ${D}/lsp3.txt ${D}/lsp4.txt ${D}/lsp5.txt ${D}/lsp6.txt ${D}/lsp7.txt ${D}/lsp8.txt ${D}/lsp9.txt ${D}/lsp10.txt ) # lspd quantisers set(CODEBOOKSD ${D}/dlsp1.txt ${D}/dlsp2.txt ${D}/dlsp3.txt ${D}/dlsp4.txt ${D}/dlsp5.txt ${D}/dlsp6.txt ${D}/dlsp7.txt ${D}/dlsp8.txt ${D}/dlsp9.txt ${D}/dlsp10.txt ) set(CODEBOOKSJMV ${D}/lspjmv1.txt ${D}/lspjmv2.txt ${D}/lspjmv3.txt ) set(CODEBOOKSMEL ${D}/mel1.txt ${D}/mel2.txt ${D}/mel3.txt ${D}/mel4.txt ${D}/mel5.txt ${D}/mel6.txt ) set(CODEBOOKSLSPMELVQ ${D}/lspmelvq1.txt ${D}/lspmelvq2.txt ${D}/lspmelvq3.txt ) set(CODEBOOKSGE ${D}/gecb.txt) set(CODEBOOKSNEWAMP1 ${D}/train_120_1.txt ${D}/train_120_2.txt ) set(CODEBOOKSNEWAMP1_ENERGY ${D}/newamp1_energy_q.txt ) set(CODEBOOKSNEWAMP2 ${D}/codes_450.txt ) set(CODEBOOKSNEWAMP2_ENERGY ${D}/newamp2_energy_q.txt ) # when crosscompiling we need a native executable if(CMAKE_CROSSCOMPILING) include(ExternalProject) set(SOURCE_DIR ${CMAKE_SOURCE_DIR}/..) ExternalProject_Add(codec2_native SOURCE_DIR ${SOURCE_DIR} BINARY_DIR ${CMAKE_BINARY_DIR}/src/codec2_native CONFIGURE_COMMAND ${CMAKE_COMMAND} ${SOURCE_DIR} BUILD_COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}/src/codec2_native --target generate_codebook INSTALL_COMMAND ${CMAKE_COMMAND} -E copy src/generate_codebook ${CMAKE_CURRENT_BINARY_DIR} ) add_executable(generate_codebook IMPORTED) set_target_properties(generate_codebook PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/generate_codebook) add_dependencies(generate_codebook codec2_native) else(CMAKE_CROSSCOMPILING) # Build code generator binaries. These do not get installed. # generate_codebook add_executable(generate_codebook generate_codebook.c) target_link_libraries(generate_codebook ${CMAKE_REQUIRED_LIBRARIES}) # Make native builds available for cross-compiling. export(TARGETS generate_codebook FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake) endif(CMAKE_CROSSCOMPILING) # codebook.c add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebook.c COMMAND generate_codebook lsp_cb ${CODEBOOKS} > ${CMAKE_CURRENT_BINARY_DIR}/codebook.c DEPENDS generate_codebook ${CODEBOOKS} ) # codebookd.c add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookd.c COMMAND generate_codebook lsp_cbd ${CODEBOOKSD} > ${CMAKE_CURRENT_BINARY_DIR}/codebookd.c DEPENDS generate_codebook ${CODEBOOKSD} ) # codebookjmv.c add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookjmv.c COMMAND generate_codebook lsp_cbjmv ${CODEBOOKSJMV} > ${CMAKE_CURRENT_BINARY_DIR}/codebookjmv.c DEPENDS generate_codebook ${CODEBOOKSJMV} ) # codebookmel.c add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookmel.c COMMAND generate_codebook mel_cb ${CODEBOOKSMEL} > ${CMAKE_CURRENT_BINARY_DIR}/codebookmel.c DEPENDS generate_codebook ${CODEBOOKSMEL} ) # codebooklspmelvq.c add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebooklspmelvq.c COMMAND generate_codebook lspmelvq_cb ${CODEBOOKSLSPMELVQ} > ${CMAKE_CURRENT_BINARY_DIR}/codebooklspmelvq.c DEPENDS generate_codebook ${CODEBOOKSLSPMELVQ} ) # codebookge.c add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookge.c COMMAND generate_codebook ge_cb ${CODEBOOKSGE} > ${CMAKE_CURRENT_BINARY_DIR}/codebookge.c DEPENDS generate_codebook ${CODEBOOKSGE} ) # codebooknewamp1.c add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp1.c COMMAND generate_codebook newamp1vq_cb ${CODEBOOKSNEWAMP1} > ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp1.c DEPENDS generate_codebook ${CODEBOOKSNEWAMP1} ) # codebooknewamp1_energy.c add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp1_energy.c COMMAND generate_codebook newamp1_energy_cb ${CODEBOOKSNEWAMP1_ENERGY} > ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp1_energy.c DEPENDS generate_codebook ${CODEBOOKSNEWAMP1_ENERGY} ) # codebooknewamp2.c add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp2.c COMMAND generate_codebook newamp2vq_cb ${CODEBOOKSNEWAMP2} > ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp2.c DEPENDS generate_codebook ${CODEBOOKSNEWAMP2} ) # codebooknewamp2_energy.c add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp2_energy.c COMMAND generate_codebook newamp2_energy_cb ${CODEBOOKSNEWAMP2_ENERGY} > ${CMAKE_CURRENT_BINARY_DIR}/codebooknewamp2_energy.c DEPENDS generate_codebook ${CODEBOOKSNEWAMP2_ENERGY} ) codec2-1.2.0/stm32/doc/000077500000000000000000000000001445607075400144025ustar00rootroot00000000000000codec2-1.2.0/stm32/doc/3dot5mm_cable_config.png000066400000000000000000006127511445607075400210670ustar00rootroot00000000000000PNG  IHDR 7cbKGD pHYsodtIME :!q$ IDATxyeUusε>NS E"H4H4" MMƘEw5rϘI%ї`$b%.р4҄ޢ^kqs9V!Ş?>bコ^kUU駟 =y\ps@k_###}}sy晜z={pEgg}.<|o@ᦛnb۶m o8-o/m}cN;;3AYgw󝁎|ERDUBsH @C C HFFFFFFFFFFF& |]vet:g?ف]w>7p[nLOOsWc?w1qԧ>51K.d9>| }"-[p1 t lΝuQ14́$f(6!'[ t6kgV\9qؼy3֭{֭]6 }΅삕!k@222222222222$###########Z%"O9qx"1X֭xgjjj/(ox>W\q^{ᓟ$s@`׮]sa\xo\ve׿v[ցf͚ESN9e "\o tRUDwFFFFFFFFFƁ'lÛ!322222222222$###########~/˔e9qK>?<[na?vō78qذa;?Ǡ*/ |> 袋>n/ Z裏fʕ1FGG lŊ t &###4086Yl@ 9FGG8E(fsa||сիYj'߫WfŊ>﹐]222222222222d HFFFFFFFFFFF& ddddddddddddzRKCD$######## 9O$Kᨣxajjj/(?s?71˹k>]twu@`׮]]s?Az.ҁù;1ho@@DXb"‰'8qFFF`I,UEDgddddddddd9qx"16O=###########L@222222222222g?;k)rpW| z!6n8q;ٵk@`vvo.ٳo}i&֯_?q+>|ӟ6~cww}_\pKcXv`34c\êU:"fs022BQ.4 FFF>V|+V | =k֬scY|.XO9!$##########w8VXk1"(! %BPE0( 5TyH崙zeESUcMȈ ACP\6No4hkIV4(92cGA1>D MAKzX+ qLbCW !Tj7?iDMձwiL7BGC#>ϦX UOA`Ԁ}%+q_)"N \Р4(AR{|ux* ȏ2B9y.W 3ՔVjugP)q?P .!s~i16&'x Ӟ!Cj$K7A%%=#SH4&&%:ld$*%y5C 6u"DRze2Nexd3SSx8kb_.tp!^sZWE۰hbQפMdJ#)9tbْ\xRx29Cbظu/fv䁍;0ȸ9 TiXVϜ 2]q_cÜ5~_]$ "ٻw!-|79OzOdGӻ4N=^L"8ϧ\%HbPb#fsl.[:Ӻ&cA4s![Zo&P?kL#zY蒳 XM61"ll$}δ*9;)V''ߥ(w@oWռ/ܹ??@ ?W^y%y{:]w6m-oy@Uz:1mo{_|^&=|wsd"uӥWf L%WjQO q܂qvyz-E{7"ox@JaЧ~@L) 8Sn —mB|v?Wd~'pX+ņw^C_R'Q #:GA&ݤ11q=I}}mAU ˒$B-X/ཉ Nў> sZJOk#]~ҳW̢JԕY,QY|^ε͋Wa\R`$ 5$NL?Yt Hձ?m۞(9ǬwnjÂ/~v>{wi)}lCsd H$"=]tuC#٩M93> ֭:^pʺ?;<d\B|z⶙^ћǤt۳BT7~~"=ՐھLW A!1A摔./$!VBڥz$ti UZLkaXob>W!BXjazMk}">#W B"D֘(>mHqQTm;ňmn!`Smy㗈k09Wcs$####СSV6>ٯ4 1bxjFW󈶌#Q dz6f'6{&?WqڧπB@6lHz… ?}GVL=K5j lu`qdijM̂ݶ$aFe>u~!PMe^¶d\x tTUpX# *hP!FP _LUIzb sX)(yetQvBbseqhp]pWow<1q:kih /ٵq\Ġ(g'޻|`dY/׭zf;ϫ&t ʢ~c!^̧ i^Q'_/l[^*,s]R,W׻=-ǂέKc@ ЭUb4~$KHt5/q݊&+ƪQH:YP:$C=L@22222~t|_hHsxώ-VU{}[̂fe~N=.'j"I35ӟ$I1&f:58oVIz[?Z[%ĢUdsG>zDu|DwvU8n3b- `ao[P%WU<ӹ01_\ Ip/ZL]al2I=n?{a۶m<kfcn`,+kYCchNaq>Gl`c8],\c6郗pozp%߯-nݓԝ@F:#h"R9|K~Irc˻fN1?i$Y$)QKd_s@ڌE?~IfH1Zm6˚.uǛ/a^'-;G~wݵՀiתPRϴT]r'V###E1100>>>sC$V^=1;'o">g`_ b?ãL30-e22 V5GZzh3_<[?ch@ZkwCX$^}],ci{ۧYF؊u7|{=Q_$g(I~=^ԖȘ?i\{ι`ߙB;/S;W%kO-Lu>>s3\%U$^Bh 5;C!kmP1=Kzg`AZ튤5YεP"c91OBx-]JSřjǜLsØV02lΒrRej\aˬ29ZFBL&]GoNʪ'7j> y|tzԩ{dZNS$*4_B449!O{cT fAf1?{5ݍ/"ɡ 58vRoS:u%b!kbG?OR?uҴ4dЈ!(4f^Ot"Wo#`"6% h8'7=#&}$Ӊל "BϾCf暠B"Jj!zwAV2"]0sF"Xgy|8(fKiwJמk-{Z) tUwqn}D(4r6:o~.-y/,/kehrq٭\c3 yZCazv|NkV?} G}yny4ƪZ nޒ`6% mXt$&F&bw)Erxxt+:7fUD H!Tmr#`,zJuvzxaSFbjmVfmN?yTm!q[/ 4FIj5Ӫ[KH22222[vNlNOsK]3 - _]kxoxūNjqҩ%6|5tf Okh k gz_?|ӑM@'`g | ҉ vrA!EeAڞ7(XH"fA06VP$A;S51"F0؇#DAU0v*=>'k:Ta w?f&Y*[zWWR,t5iNze>'.ۙoҷR=ŚE:~#F\EL@222228O>ϔ5Y~L"GZI Zp?fE@ycxtZ(g+HAh |I |?uW_yz>,FU%rK X&g;lش wc^OZh:vuUngÄX+T+F,CQ({khFfIii6Z 8ug ]Mq6ƉȇUz<^]5\)(tAB:o0=ByuﱬHR?ODO}?V҈K8%P29nߺ vQmpt|X&+h6CSj0.NEwՐDRC5PeCkX9GuEYHE(h 5i5 h5EjX E +as :4GAe'pѻNaeO1w*ﻅZk[K~mρ=߿7=~-kq cM<89Ex.%H@7s饗<1sJ -GUt*`ֽP)k*7:CC-Mɫ$u26j=ʼnM-YV;֘s<'GV.#q]j"Ai8 h6FmX͂V`Ulh6[ KYRB]l J4&ZX,@CJ-dDHE> WՄ9!b (AlhwDX݊Kbݫ^=sIUCL'$ I߻`]%QO.E>.XwO W^iƉ'81K/o@ ?87t+2q뮻ؽ{7|+:{Ї>4P|cU1hn.9󈱡=Q6,_Ѡs(U0Bʊ5⚜.8ʁ=T._/c}NMpܚ\ׇ7/ȓņ "*vl`T TFؽ{U9KBj/l'0ߩb5ƖR8Ga9;gp!j2Pa]$ {HBf_yZՀ5 U8L- U$/DK۹(j `$*N( CѠU KU`fppAդj` ciF!N7jN$5o. BP[vEEIT5`10^S;mEbs!Գ73KBzMǪj$J둀HgLj5R oFFFF(+|hIвc?c҃Rn=|ͽMx+p4Ma[2s!`8vbBfcx|M_O;\ι. Jm_+,7?(|$i/" IDATq1Z_7E_v~EA&ldx_b2W`kصw?E=WЙ011Llؘ*TU5BTV5tݮ*b M~ ~՚ U:*T}js!T"ZبbA(A73 BY Zݤ4D{$H|0%H@P '*VpW8sjUh4lD}K\$N"D"9VWE" a+jJ 'QFA]⚣D>|Ҋȫt,Zk{̑}wfmY>VJn%gddddpVh9<~DO870th"0ܴT wGQX !5F25};e]y#7^u1o1BK ܵ6leӦlٹ6 iR4/c3>f;\1k395Cx/+#iBV+dPu{%QWU+!elO qҺjIHc2k =ZNܬsx0{V(K`1[B8STpbbZ. `QaAģMGD@' nqyzxFk ll8Vh 7nbj Qyk-XMҊ`\ZU g ;12ljh]'+Հcny׶XVqF#5:[6gddddF6nC ל dOhDW04ݛʷLV ?I9Ok<ӓm6laf۸}{;T`2i@Q|rF& NCa (CY!c'+Q]Uʀ4(CQip?/K1T4 SD$'(#TAq"PufQT` ;,F->+ lPq6U`+ԒO\ց>e~XzcC҆Nz:E2oeG잘;C~0>(.WFv>׿Q3޳mb;߹;q1ݵJ&M7!`]17ó;:FFyT${Px6<k(CM/A4 ^ 9[͖;gc F/4/J֗oCtR JeL3T"MTT [H hUb|I&;h͢ ^g)&ЙmTe锄ۖ7`3:TdIhW̴;LLOgbؽ+==ػm&عwm^^>MLg^vޙ)kw`瞊=wٹdӊٹb϶]&{ #nb˦)~d޿{ŝmm|[rͷo=7^}'~\_yխ\v֭[.sYgݿ/xࠎ骫[o=}{k̋_w}|_̙gw|3}s9]f޽|/GgqFm]yy믿믿;+ju{]gff>T?W_}5gg͛9s89sؼy3zիwgpg,z}{^x_җ.;N>-ze/{/}K[[|K_ⵯ}:,gg}ˏZYxͼ?/?Q^~kw+^òUs9ex g5 E_׀r4?ÿ~V鶃1kã,_l_?~ ֓yu]φ;xt.6n`fV(\Aùؗ@046*Q!v:U`׮ f'`*ŠM* |15J ej1IQqo`l&= ! t6NTXCG+s.AA ! #QR{WE);PAՂ(0JhcjOZT 8CA}Ԋx8wۖ|RQ7DyTKn\PqMj@YUE#,NK(C=Op;:; RJm(zCHU 'H88Ю 6b qI2BP?RqqyKNeհ(n,I{f[$3\wbQ]j9q]=+ jrh+W@ Ȟ={x_w#ñexы^ĵ^x_s7e#:'QU3'qEa1X~>ߟx6 }>OO7G+ćy)e38#L|[m-eT T䩪|캄W{獯~AVtpO"xٺm;vO2;+h6hGjh5[|JLJnP:UI2qr-iMʪM۔I@h[yzOE1VRˑ s 4Eb*ɕɇhj4~Sv4 DDJ5ۜH37*%N͜,<"_)F .Xs>jGAJ4Td]EDR+"U!**+JQoŀW:UqnHԬ$]ʡJ@a3 'nd1Xmc:}P%>P< $ IӺcP Ơ!0`E)QߌQT,`fC x8u > 1C+8OW)⬏d_sQ-=(tGU)1l:Z*X1TBDA,^=HŖH^-F5MfgYjgax0 m`G,jy lB:dkrzF3G D<#|xF}x+[wM02Ԣ94s_ ?PX[egZ}}h1>g_vγn玶vU›Nm%_ǛyIٌgC#3lݵ;CW=,~Cf+M`lhUVrqDzz4dž0HWNV>>%ƂX!XQ\ٰGt[2p 4D+^ CP%ćQ-1!/+'&%"T]aA8B5`* x#Q$n,  !V#ZABlXZ$1cr#qfX!1Dq L&m=LPk+*Q0XV-gƉ I<,Y#t|}*eY+{CYu|EYhUY2ݞe6T3U'P>nS L(m<7bj*U웮UHvK{OluW%'O~09~=;O劷nS9I{>C1LNylCñÕh6j6fFi5 !ã+DUaPAKٽT,(ƩBIcE(ROA Kъ68"D2 F,8\pL`(G ޠ2zuBtJA*ĪDHK&X̄k\v O(=%-SXTyPXe'U 1.V&{1cEJzI`*~UÇO@ BA -TF0c 4{`qHd|V"4zl [Qʳ֬a8>}cԄCѸnG$zaFF~'\=ZkoZPrQGY}u=Y26dSgEN+|9q+t5#ܻȳ8l)~쟩[kcz?uw6MZٿɯ'U7pV/?Od'g-Ӵ) ff᭜g? Ȫkbl|VF#)S_U*0"2ў=;]bYAU[ `CCh;Z%&: :(#T5݊X3BrcJ V (bWgNQ<\JG(DN&A V,hlW"ી@a,ZUDP_u U@Ke8mI+ ^0Bm1-4%P?Uq pRyYDb"bb'iNI6[IcWvDŽ8L hIdi(eBkd*B|LM.LNlabcL.83*0k$QU-KJamC8S+!h<J*PEU?5Ea=bT4I-Z&\Hԙ%R4ޢGW E jA{Tu}a&M[GPy nwH\gH&աN݁P(C*x)Dzh1BPG[LР9+hAMS$@Xj6.рj`瞽>1{!7 36 0뮻[ne/_y:˽ K>/| $,eL{CPÊ}pLXϣ;f ~&p7Ky߹o'ӝ^z4Ö?4W("wXRj5Gs[0Kl'̓>N^]ϵо6wu>Vׄ/=(k#<}R}kS= VV +zCQ_Uj剎Ne 3ӳLL31]oGc FN`'2661+sǝqv,U5j9i$Ar񨱈X!>[D&kETԢH>R۟Br2B)@ħ3WX U"y5 Kgv\8w(ҔWLP 14݋v!\ h!WtJ5 ʙ6E͉U&ʉhB8k: %U/4QW+5KaB/Lw@GAl}PN㱻Yj+.ɀ;\;D㣭ҭ9Ε([j'(33Z Ibs ESPu:QP*,h2(&:;a[@TǮ$bE!J1kc;!`mtւ%:g)e-$#B5:]eu! `l 8C&CR#*`b I,qZh%./VeLQg%8qltwg{#(MCK|0f]V8g"$˘P | 쁣D$JZY.$#4*=uڕg)ڝF# xw XxY>S|cllbzz{/ˌsnrVO~8󙞞ӟ4EQ''_=sީxijN:wЖi~QvMv_ b Tt:Ӭ<~)W6eƗ/g}3*8db]xSvƍ}#={*۸"@<ǜs&*ow=Cqs aL>;8b\ܵo:eIOcĠ&!YGmVur+1y !j2FpI-NvgSCCBU)v (F}LEP"qb1A.m[Qq?BLlD݊1ɯ6԰U}Ie+ԒG uU!&Pbl$$#EaUllcbkYaqg) I@T0RMI/|rkV/z_|$Rm Ul{Ebk`f^ BE81!jc=ql+LF}>h\kMH,'.4LNNrsN&''$DD'>{^&&&$pyni6Ƚccc^Gu& CCCݜaʕ8lذ|3o>'&j7l= IDAT݇q=^7]Q2԰\{yo-"T[0w/5o'pC9fEpW_Ȧ ȡ5P[ ٘,uY0 tK\p怳*2LX[@hzqxk0I%:Q1ǂ[B54UpLu+֌tQ0#4Xߎ"4Ј \#N- ASù8t:&V:01P &UUSVe4ϨA$ш*;N-Ty(Ƙ 9IIlU' q:j@FR{U p.r"xJ >6uBIᢃ4\UӐC *=jXbchBqV@{`ɯ޿s<4#ifI$KȒla/aȮKLPuST{+u!Er!.u+)8% ı aImIF˒5zf4yc9#i U*͙9޽hTn&b?R fi (E %IG_djn\hmO6 W^ 7Zʟ-^Dܹwg۶m~/z7o[;v~oӦMsmIkJG}0ѩn=۷o{"=ǹxQR㈦;8+3Ohk_/~ۼ%Vɺ';SO /疩>A4ErTGV/ )鴦C gcљi)5PW>&'>`2[Rqjdz4z-`>D nL-e:ƨ-3 M =UhJ>ĉkdZK~|0U ^ģQOBj$\0j*H T<(ʪ+ՃU,/,ok؜dou.fJ>GBڀQJah$UҢ%ò9K&S!-uV)8]Z٭ +QY+8޽{_u/}:47Ν;QUG?SX&?]1uONٱuX_cwm>s0OYq+ 3z9w^9 i ԌO/\p2;N[-#gi[Zm̛mK5ұ߾}+~ o-\x3uO~=Z¶5,^%-GخlH=!9gy+[Q! ^SuF)QA:X.=+~=v#V9+q§XFU(EΘV+ Yoy"5ͥJ41ʙRMYsҎ2pJp* `! 3\"s# o"5t'%< i N[))1~}giPj-5a|j+m#-U$a it4,t.$5K$Ux>7pvk_dU+07!X}/kvq|}߆_Tqdjyys=w|+~ ܝ+[+~aj?Q;￟/)Ssw8mSaC,m;}^2|<ӯ}`=Y_ZJ߳?w5{9M{$ESB,${)!2Ld>̰?yoռi5d/00$i!v yPغB<0 n4ܭ́*,VqT*jo~o' g.\ƞFZGވ nN]Qp$>jٔR W*a5WڍIzݡ"7їF,r ĤE$!( dPP猩@ K96%JޛaI!(/O<jLJ-94#Pg3aI2yKʱԒO)Rr udQZԢ|?Ƴ51cBc?RPU{Svp6} .2w6f7f_;oYZO|\ ҦM\'Tqk_'7rR7j!FE !ΞYmRJMwz,͠%&;B_RJ$#D녖nNQpg}o{\sHqebU:K¥m#h$IM f qC5^'&ad@Rsvjd_'T*H Vn]*+S~LoBe.ۍ8RCio$>Ru'TUNI?4ӁK3ʒHtH1p;dUXP:qpjM'S# <6r2Ď*뜭i%+↱Uf'(ZOYٹs'СC/zCV{yA.X{auuu\veߒ#K\ugZj/̗?;\v‘NXKxw?KOݷt<]p Q~~7vS_GmܫfE-o>I'fN4")PW0'@=\)dAGB)¨ kIyvs½'̦MwK/3:V3kǀTj f':Ϧpִ)Х.DZsaAm|Ft.@J13"2HG9^/%Zy>h +hkhJpÌ,'$!5,,!췊h^%_A ;>"4ڗ)[a‡VӉ5sR29gLkL,SXNdZz{pTd*u)%& )0Lׅ-&w|֥l:/u?׽c瓴 e9pt]+|C?g\Oqx Ռ̦3vw0׽qKKO`%Un6VwL$[4~-e@S"#$\kd QVea)zn4b($%=DGCuF'ч;(NQa췁5t;bG˅$)bAʉ.KUs2#"ua(҅'Sz2uiF̩%(IN{sBA) nHЗJа$̚YlX\ÚNDc*ĨC%khڋvc8JnV:Iiᇂ#DR;Ix $M(ȉiE-Z>KC:2׌4|TЧdZ+jj~Ww])%v񼯩\qy晸;Flٲ+[9p$}}.zU"p9+#|m wm¹| WBGW\ :|0m^$'j?][>=0_ԷNO)RxXFMPrH09^=Pj!D3\ng{}U\zylZY) >u2N8wE\)HQ΋.΢)ũ$t80Jτ֥$ L3jL D_o7 gr}'ܭS5z{07_)`cqlU|ٻ_s._lc=i3J"-K,XYA^F4]ݙJi"NMrR~7IМH)Cэ8oRC$\}{ o\zՙm\w%|;s^cV1B2){Q:IcLmNfP [8RchXJZ?j'?7g0JצzQi"/l?q 7^?ouxu]''7PGU8/*_t6CR +t_*T|a@G˛NqJ&Čdz%6y| IioC\/2Vi-II))gp33 61 Ǫ.%j-%ܨ `,lU&0Rr~+5 Ɍ%c(g}FVԡ8(4#!%AE<)u@~ŵj0F$>G֡㩨4wkq_m۶s?s~.B. rF:ӥ.}'/˩f9oǧܶ8skǮF\k[?9sw2t HUYt珽gNqBF꿺;G 1t܆7 /|isR^DEPg׿8 '(@ASE5N#2.NkF0RJsTr#WE.wfɅ~srÐسwqRDý*R XZY! O1uȀBڧmBu8/95k!hZn1P%5ڙ NBVattI(C22.&Q ЭxKyJBeb$|\59(EKuV 5GFYvQuTCTBN_aR04YsZʑRL35,̓VehC2SWk8Gk֌6E-^{[ k׮]Exf@Ɓٱ9w6ywQV.>kלܴ'clx1wU^X;>&=)K)Xux[S>>grdMu h 48UIͬ4񴗰@N ));8146>MpLOy{^>8ptIIMO"T/&Ep"8>,nk{;Fլ6;X%LY+CSlc [\[Gm9*g6}))]gQ9jַ=4bM^G!DB|bʑS".BMI.A~I5"!ӘٍւkӳQ0ՙmhsPMJd Uor_9aw@y_|{ "GG绔_-6a[gx=|]wzOC2jIcB/TԩM55A$afd^#R"k"!kZYɚ%)oוҁ$^}iM8Ӊq豊0BJBOM[фx"q˭b xPfP:D$as HZjKbNsӁ8.zG`,Aq3 >'iq9[xY[h&VF>ObnXg;A\x=@,{˚([XZ KfrF0:]2%2雈8j-QJamlۖ97G1qi[:c+> n۶E>ENefoBl <]Nf%(Dh2Ղ*.t ]JT3GfE8FyL~S4=IPSbÀRQp*sB0wJRjBN-U4Qy`aDBքr#Z"Ssu`uIRkB,lց HZ]-VPHs\č:X5L̃77sAސYLϔpWorUWmh#G?·? z!nF>}]v_Wg?ˣ>zJAnv<ȵ^>Te׮]\X#K>b9w}\|/;{FP4Tr?.v )uYdBKOb񶷽mqd||φlݺucY>Cwy{gu|w}שm^c+?xЛb2}KǗ>1/kuA%K$~`Ch>߳ !/RVrFt QeBGGGh)%EA'oA]QE8 Yuڬ/aRrNuYe#mJЅćx4&Z* Ʌ:GKjXUK` E#0% S$*T06D_qӹh{#ܦ@bJмS5Z"DײxЙ8 АA R3U pL O4ީGnZx! V2: ,Ni I2N-QlTs&I~S+@HvͧM/uXb rX}?PES`wvV~}I=^sNUoBbpJDɔ;yI6 IZcD51a:Ka9O4mJM3KAo\<,nZԢ{-uw^~nzx .b~wO<ּn\K LNEצG4'+oŁ~v.j"nz#ߴ0QEs4nұeEͷd윾F\ܵD՞< |P(9(IgY~48W%p}RUEDHQ;B-ޞB2e H: BEt6ۺXw#Tӄ :D$٩Hr!5QBߨWnu*Bqг6 f#=88 #UpyFL)Ӏ{$fR(nDm k>OMMDiO.O,jQZԢQXZ:q9]d>{.Yl걨Nd4t܅hU6Hv :ocF0v 9/4ë@uNj7%@ÏL'oⵯgmtcr=r`R%!]PPRɩ >uЫhjER!i$ls aӌ6=IJ SoM x4f%I+@$2T"/EO0IҤB` mDJmW֜ iFpQ bnL)A,]-yLH-/5Ĭ"I# 2(M)z }O~9R#;ľJqᆺ2la?kns(7O$GhD6mАCP%a \jUFI92o~-^wͼo^ʷ]r2 RDܭ߾Fnk85UתA !uj$wFrJx2RGPUuu:,^;!@77$԰UZiBpdpjKE,2P=& }sQJ GKG~;RT``/Gx|V  *Ocwsql=Αw3yc`u]D)gRӝS=4 NqPM)e0ahFG+ ߻LlٶD Tº69м*.6Qh@($O՜u$h&8a+S 4C 1BI$ZBFEBH"Q\gIy"TGFG"ɼY zpJ" x#O<ǿ}$Fش-s!NǍRo60E&K1)Uw÷Mv4 ̊{|g31ڈ}??o| MgQQ\s ^{-?#?XE-jQQ6-+8uWo>t._/7˿u?zgiA X{lEF'Ьl;ɠ3uY@ARLV;#>G}|cg~gE-ꛎ5I_emy/羵hX'Y셗^VճO h1YJ`V4gT"uGjR+%ӾL2APKaP;d(Uˡ8#҈ʗt/`뭻y[7[p!gPG'0b(o{]2)5AJ6E=4㮈'i gb$02&$2xeĩR@ lw3#tRv`akͽ Ql`eƖ1`VQ*]L[X='\F,lߺd8rq?tmBW&kc;tckY=ra#k +kVM<YƈGd5Vq Z͙L%t(81e(34o&nW n}{I뮻ݻwod2ٷo߆^Gy??_wy'7pÆ___X4U8/-g_\2{]G U\0IAˆnhXSOY˦Og]__{jh8ezC74{Яp4JPJ&4B2V.I^R=&;2Έ;0\KYQCR Hգ<0a'ܿ tnNA56&1-ȣ*!dDvZcaU#DZzs֒$X84&B. F;Z%&$"XZJ& DHdR!g#IhR ^wo%%(*ìy?Ҙ܍ٲi Ke>}ÔahC"nѳ郙1L8#Rgr<7zUAl9pY8dŊksJcj“"0tzR™6=3p{ '@_آ7ShB h7D 7,U6 xЭ C)0k~hIj , x ^0[:7{VF]R V@{XE3 >(9 8K) ]x{޳Xܿpiyez&~6y&8On擴]ԢN 4SES4)^ ߥ5 ȸpwRN$ytv㘬QS¼4T +IQFHVar7b2kuP@S$w9]H]@$R݇ ;b eL4/KͭI,޽2=r,JZ_)&cLZKEqI@F؈@J]mUL˄aԦvhX^^f~@0&fY|P9W<}"ȹ:MViRǘu k,cIB'33Jvkn 2 YԢEg?Y8ݻ_2o>~Ek/G𭅣(~BBJaGxR4n);Cu&zFhRᄠXEI g("d/bqiojqn\Q_+ ZY6Dau-sHaJ&' }*5k&,lji(t-H*Rhb`R$4 3ƋAFc:J-֞mTEbzT4@V-M/mrDz3aPj~ )+[8rhz8%IL3CR۴R(hCTRgW ^ 'E<,I3YVFآg={pwpW} 8묳;뮻E-HJ4wHD%PC_RDD`k8פLJnvԝԊJGb↢80K/9ӳ 5w #3J҈Ճ<~}&3q8Wm ,A%&=y~TQP+N#,yՊ[L++䜙{Y﯈t^מ={˿K$㮻ѣ88Ç[S99wKFFF^qCěs !㳅ǚO $q2ɋ'ӿBEwj~,??YE0+d޽vȷK8B*FwFt1+M4ԕ&׫jds>׍1Ԅ:PMN1oz*a}=wnE|dU{ G+ڡ D*Ibhƀl<;9#V,EJ *r”}ow#*5.W^7:g`lR`뚍S&8OiX#rO9.+w$ng4'K~'de%sn9?F㣣@"MC-P\J4;R|pFq^SOɾ6l`ffu]sN:szс׶m+'O95\s>5ui/|/d\uUo~E'%rOE`;;: _AhO ֿ{P"ttP[G߻ww@.s>*'p+0dsoWdjm9$%AT ™8U4M6bt8DH gys}f8G/ѣ:@-R&Hs'WGJV0Nc[*bm<[>xrNd]MfpĦ:7Mˊ9W9irkS S+V!c++*dWxըƈ9ēŊ#Bݐ Q4;FQiR*R% UwԩJRjܭ)*"tiom<ŕVhu5B֎ql$hqwwʿssb߳]رcG*sf<㟚ccc"jbbP4+NZ%] [O𱴴tQc%˽ ~%"aZAI]_ڵ=@knbDUy[VdD\^*ܪ%FT6,ٓ%UD5H5qU*Bb^Fyxj?7Ul۱Ǘm0/1cJ̧<%-Ju]VD1I6ҷfKS2Xe&<-w޺O[BA?Y/7wLYjrċrV+5!HdsX ;'Wŧ#N F*9ooT$ǀ|opzz^߇e~XZ '5gFGhj4JVV0O&HFiW«Jܗ]vmA ^Hzzq!?gx+9}Q//}os?zwq"DDٗlr䦱N@V#)*h*˚`S%4I]Q249Bu_ÏW $$V>ds&%jHDscDR_"fP8' 䠫3$,6CRc0"켽i8B#x$E C# 8A;.TU=NjU:6U5GCCnK ̝Y0H[xf\)84qE\*xPDǃ7j|Z4[>7 H92oGx轄g?K!]=6&ֻ8gInw萲{bw#g0]j\(!TeȊuX/@q)B%{41+]6^\k/F`<ͦeIiNiVڭ^*RN4M2wlp(zڜ8+3 "#f.y4bήD( 铣E1Rx^PH 3ޛwGw`JX)\DĔp[#ԠE\$dh((Dg3Xae.PkQ\7ncu5B{t3D_W_jX'"+"Wvu3'!gOr #H;1ĕƂ7\AR&''9|w)y=+ᯪl߾} }Ͻ X4 'O|Y+{6G|)c>Ԝi:,9Jwqv0V|yqF6` f/CsWsb}.>G?K\(HƊ8rQْF)ls % wNSȮjSPƒ&m=%XN oz\e3'i^X_ϑsԺ#3o|o=FՑ43@DHJ eA\I`o'&%@!\cAdB0%!'v|'ex2G$ IMM HQ M1&L)|Ek|Q8O ~;TXVgBHJ`g:edd4+$5stc*RB(1M8g'+-}qR'jC&v׼5C_}Ç[U^t=gEs|y+1uc=vWR? g`֭\veG[֚w>t\}k뮻ZĹ뮻K̏|#|x̃#s>cr󪉧8G19|MGX:s,Mg[.iPJ=f=)F6hE*ޒoki9D5= \\~lH&ˠPOH=)frGHI:l`pʀPm6=R8wN϶"V vmڨz2I6n<8ƒ87 Dx`H$*MɺFFsOVKs$B)) !:>8 WU" P^!ɪ&++Dtblt##,ab1?7I|ll3ݏ~ _9g2}N¦MY\\iƕB{z!SqxL(B+ ?DײR_953aq_0aǹ>7(@s<9riyz nOs=/y8׬=tp__.B_@e܈K*6_lMlJwqu{WBo D $to^0yrkz x1u|H]UŪΑfE!bmsr"yA$IO@1")H6ly$dRRk"Δļ&4%p@V!l^:R.CŰYf8PM (eߊKiRa^ ebLp0NCVh] 1?*ǨTuqO 8 m}|y%VE{d[ODbʌ1iz,//ە3Wu]|'Ϝ2Nzp)+psܘJph7L'5y&ks@j՛&?ιAniZt###l OFGGy/zs~mmݶOZI3s~fba=jObo%8ҙ#| |[~ncCCMx]: {6l (=ڬcZENVjбυYy-&}߆\V8k6su xCıqs3vG'29:Fv̻%Kۀڨ@ p=ِl3O| DAZV/{ƍٸq_'ʯZ?5/N!,:-3=rc6켖Gew^桁 UDLՈjdV0W˟6 P&5ׯ\`)u͐i2"-B®+6p\}#3Fv]\O7H jUBʦVU$ls _RR/p*/|L}KV[x O@oĝ*>e7;otg?4.[㻫YIܽؖxI(p2Iݼck@u3,w VdN&Rz=IC E\ g 9wTu̞r:T9RPj}>8ב[l߾Ç /1FGGq|epL^{K9{Zw-^i42#qzCw{{Ι}k1;;˞={/?/Uq2B%hhW%X!"l߾}'|: LV0Op ckr_ՠMdUm{$(>=sVl%;;ѣGiZ311!X}#9?k^;k˸16=˙v-cWqf8Er)<{!ܯ:+2RŎcLdd|+6^u&₭9PI.T+ 2!+}Y$1SGίx;oo=~;vZs~s1ah//>IWLq5=Ez sĦCltN:o}.\K($tbF*P`WJ&8{ˣfQJD8KAѬdyHJT&6&9&[49{H{F[ apE'! "H hp_tP2ruC$C%&58xSXR%טּPA"HP3)4u6HDE:!>THQ=&Cp8$Q@Bir"ix|vԡ"L*bAd&Ɓ7XUQ*0qtZ,M07 yk!S{5RBU M#I&6C .bڼAb4&jjb+T+>^ދ5|ooc?1.9z~ YXbi9':'8X8cq KhoxV87%XsT2?2ǂE֔=\;Ͷʝ\dxL.CQR!f}0LNe8d'x @ǻ#hNj>1W{o">Ę9E*77ng>Cگگ }Cwy'GcٻwE?C=4{/│yxGxG.j{/jz'O,+ʖ-[[[yG?w=Cz뭄n?|?c??s}ٽ{k~P%V?qZ}92nmӧO1|7,̟uu2$z3_lUb1rk.|cc4quy!CW #s{2.\x YF30hKE0宀x;n",/^A*ZdcJ_~(Df6i WL]W2gS[ hFc%P T@/E{BjtL<)|/d充«I#©E$\iP<5Ub >#(M&FX8ƿUƫ{Gs坫)={r|2y ip+5PF(Zi˶gqpaEjqU_۶mMOO:fkyBZw12[m%67 [ayXmޜslذak۷o_uW^hV+D_srB^u$ㅻy6u(:y8w~apUĉC18v. auwёy{Xػ_{O?~ ndbxϾ+p18R>7mV%& r,2juY9,30-. ryx.9sˋ_pC>Z7D)%8KUY{NlIA̜0UPٵ{2dfz,m15%l|>yˉ8fW<)QuBQ!x;F/Ȅ!:6WR~!MMʋI/|0ə "Ħ{Gp xr UD)8pb_N5/īPmܦx ;jYQO>}sx#/j" ma'bDK%)!&qfylGMxk 1uA*˝C(J9KzK去%7213i VNٜ؛ >FpOd甑bg8X\}8^ j1`pnQJH"z=+N3SǕZWqK1jܠNHM+T ؊FBJvѾF5lblM G҈cL(Ձ=v|dfcQOg9sLfqP2c,Q8 Z\0bo_Y,Wg@[R֜zzzF4C:!j*c"Eu~^2zz<@jTK)Ah-'I c㓼 |/t8ƛr)u:`=.'fӟ[bg+u)%\?""p<Ij HwVE-<dp.]h]Fi<-zI9=7x-Fjw9!x+/g=&R?~l)'\'=" tR"Ĕ#vj3qDfOIfm?z,#.rFrT[IDp`NŜK"y@rL g!8&bIwBPq(>x3I^QgfLE}hH.d"G@o9Bʙ^x_ᵐ\s$UDJX.xn153Ej<[0S5bGdDZCy~8ww1?JͿ7)stB 'pYJנtV] _+_|{{㮕8y$5.O vYXX`~~RF<wqǚ>s|cֶ&-kBk̠֡u&eρ9?ϡ9=thscGy7N$%]dfanYcx#܉tLV#td2mũ}e5lqHW5Nz{޳ ܚ7|d;W_t-oyKռ馛|$&fᓏn{OzD5 (z!aeOs<^BמF9}'8-~͞]_X]AUԩSCkpʿ/cCj!()'L<9gY!qFVpDDL ZҗpY >5%.hX4| L͌t:ssp7`dAs&;pX^nY3 őiCU͞'qAN122Aq'קSGMRZDB=d-b?W9eVh2G+4r|<7"+kYZVMv "s,6*,Dg_wS2~g)KAW8I QWU>/bŒ։*'R':8@wyNv^*7AkRSr7{`Iq2I+%bMer=s'y,<,r٦jUZի_|_\-Ī^H!}I?ă<}_|2Tj] ]&eCqyZ;r)kUZի_ЫZJ]OđxܮCW} LyE"$1ɗIlN7m/ O%9a?#W穫\U@:  p8ՅT(`Bo`h4"6LǶ_$!\+dBy2(Nm6V+} {@7WD,uCgXJmc>' :&TJmgiMvbHʳċh4uܠvGAIJjH1ilY@|QMHZ&ogBxXjSI5Tx]xl5|Hd|ຣWpmwQ wOqMWQ_sg/Tf,"C*/,dڲ>ZwIZ8xO7'&8qjao𻿷MEG= IDATSqZ?{8マ  s6U=;B*^PiPYIK*N%Pv< x)"*%(a.'V8XM(WHw\t+ˆQb(ZhdMT&Єѩ#^ :h)IhpL))*/Ց RXDEܙH&%&"Iz7)6Z: Tk&e06x31FRN5e4:LrzlT/h :\owG>s t2f:grpBu/p[w+>0-MɌ8UYR0/.<?H.銐￟E{ɓz )_}- ٳg:<_t#?#BɄ$RpT1Iz/=)Z }*YFꈆ_QRVjDDDb="a!"~Fa<ֈu+.mܛ0njdA($fVQOa)T'5H$2uI(]c VpN[ᵂ Fb֤F,ӳZERkL4[#HքiSK "= 6NɝNYbi_m?KY~TBi"g%X+Jxწ:]t]%#gO̧̱]3۫T5RHE;x-1SAto!ò&KEcS_|s]}+yp7נ{k!֫+d}7$`sss__ u]=t.iw=/{&׿GA["Y|AV%FUDDDݪ>Q<0R&Lْ`ZHt*nVG(&se$Q5$%K[C$/+dPWP%#mЫF"^Q:r"I-z6yY+M6@kanF 9%O>Ky $''  Z:%/#/T۬ > ĉ':j[W3>W&ddUߋ7׷];g1 4w8z`VW Zj]DZPn䥮˨%4x#u[ 'ļɪI\ +8ee0HS; נ() OS;LW1Ɋ+Rɴ<Jt.(`rWRj"H5ż/353T%FA]&-yʱR0xGDE URT019c*`DUj9ge *ba9skk5Zi]Nuy[9$[ۛo$̉kEfdlZ/P7\qMHH # >+q.#_ebjDD qZժVl;N\3}WrW~z{؛s_}spIVz7 "Y.xKƂq\pH^@Ф=q"ɡH,rҦ2FC:2=uq_{g}Ǟ<&)0|'NQ,` ] { 4'Sdoh E ߁p2.Rf-)K[$n1H3/bnW5amFЧ. *)(9S$-V",$_)D,:iIZ&DEx`VIs^]b.&E'Ș(]g> ri?9%Oz]n;Q:yG1>rnsk c)˦GYES&RZpPBG^yUZk^L9U۽rkn_U7wqW~5o!l~+6jU/]\6oPkm;SyJhJ 0\-*`B֞s;)*N"kEڦ)0W#{ϧ? _&$8'B+]^u2-D.8ؼ5\+)+scMSJ}<|IFqϋlOpխGWwvnxϟĭ08+͇3g {:=/K{c9vNzٿp4q -A6ð?0wgggO@.T2uoPZ 㴻bY*PYZ/#ѴYX7=OFdfnG.ѹw?OOӧsbxxɳ<qwl-yJ*hAu>!K͘[ܰb@Ȟ:!Os PWwwd-bT>iH4a6o(Rꍈ㐩4hDܢ?c-P*(^s98REI躎X17: 3vNO-ldg6*^ ;zCۇy7^oy ?$}aq?yuJ-x.l<qJnϲw/}E'un~Oqછce`l{˛\/K*&jqmZ膴cn(X|ʛk312TLccu ?Rlz] HSρ5wҭ,+Iq#=?gsӈ5wj4 (5& sion #0yQVB0nFjkiP07/GXHK"dhb$%hL4FkDVphڄ%Yk$9M7,㈤;IPmޖjhF/17E|M`8u ͇(ˡMテGN:L_mo.'Nat!uS"gq1|xZVUjUlcGD!_}a摫C='vcV %UD3d}_Gy UVx:)X]D4U<:d2 U O04EmHZ訥5K#: Mj ppϵo8>!4eRfO;(U,1YL:|KjT 0X*SZb"<&SbTĩlbQE\Q]->ZT;2aڗb;L@4;k2=$b#rK1mw:*J @ɂzw&F*E%yxRG5pLqN\} e\}ðo/q[s5Wcٓ]LcRhω4kqj_ * gUڏ+bsj^+ukgb{CW#׾q³Xg;Xp7RFgm(øVG[G<A/cUQ{ڸKAҗ$%HJuc􊷍4~fkHaj 5wâ@P{s$1r| $M9] jT~^#[sU!ypѬMAE͇-bRRk%YL D?brGkaMO&5qSB6 F_"hD^jӥJo $f=Iφy>XȿB(*! kJ )HZ軎]0 'p.kNwNL ]Jt"1ϑ,;ljU//xYE*m57cudܳ]8E:vKjdֶq r+Ǫ^7 //?ӯIvZdm~(B%\Qĩ4 'Xp^lS& \^MfT'b{糁l#ldNfB-SR^g>grN:0%xtADQB:rLbD4@xՂP-Z?(9TrʑN5N7H Y AY$hIa/Dc &/hjcdˤ@N+↩ AH~-q+)) D(Iм>JNX %%Nkwb]t`zq[q=]u/r\G2rlB/iD_C=Du\{E_"\s Gݷk0͸{x{߻qͿ7_={]7߿wKZ_*oy[!\ܰ_yԱ}Z_8afx)ur&%!]7^{k]Uy'G[< oo@~Wk@WJNNιڄ@HwmK5nN]DÚEZ^@⣓TR02JN Pvxk_][axq.{HjJp~ӻ $+!IH,,Rl1HBRl֓\JJ VqH@N5݀4vpÜ/Lյ=]D^}{RQlӒj. 'z!qkiY0LҒZey\m`N9EΜ3uMko}x)Nh(/6H)];1^'N`cccu]﯅kkka9./\/!SE9Kka-yAl0:/q+_>Q ':|wK\y#y7D̫8YO9m8R(U 0JvZ7椔qlG1~hKY#ݡE }lD ߂$dH}PB%AO-V4;S},>EN ̑C;v#i#t[ 1f$ i14帘$CWiNEk`4 x4]lbSӃ R̩Aі%夺QP7&tm!*.Jm>q,M99V)O̓Oָ )+.gqN5KHR"O59N5a QxAs ⼵ 1ᱧΐmܝ0*=U& #*P,,hMg}΋%4R035dr+VUqw}n;5<|ͫ^ժa* Hjҵ5 0kveFJa (Z"!P bu''!$<JH ﲶ&qrdu(tHB,9cۊƵp<cL1RifF¹H"eH)SW$%Pc 1QCJ7acAt3!c$|eejs:ѥwL`RNA JR5ShJ*_ <)\cҔ]Jd2Աx" Ü=KvÜ=Ք?!RI]F2TL"=V>AIhh܉S(|G\\~EsidkJYժV;3|+?CDN;w=^ժV wDlH܍A1M 1XEh0QE]S',+r#t I'LV'^СM\<Dž{Ixߠ؈B!NIyq];`.!ǺD|yx<Q.^KETXij)0֒"}x-꒤.*ҠĔCRšjHR03R$TG4Ar IDAT-LZ0@P0a.E dbl(B"ĵ EryjUZUOO\p#?sZժ7~y;{ Kks/e2"FBb c3X ='pJZD/D_Ƞ$ =7p G:i)'ygP#)5cdy9dY$yi(0`X ^Ȟmk8ZYDt(eZGE& [uZ3!G˚#6WUHdmy <4B3g-f:p G^xٽJgv&H^[L&uv5c>)E,x XM:ȔP`Y3dr)$"@1q }UZ7߅wkEVu|C'`wwE?[̍ -kdcؿ 836g3΄7@B';<#o I~Wz^"ˡC8w+MmH隹SKn6Fujl i('5&3 JG[8{_qfCc\q(6OOn͗1|ZHoCք=cG?|T$=McmmlMsν بZkb3h1igDzeJ=6>V-I41H0$Z+e,s="a=r[o'{gv[b_w?r[[y!5ֽfߠ[F']l^I`J"j FѦ B) 'Iu-.Vd ÙսHTI$~OH 9b^:"BjKƨV#I"w!#Iy~(T+3v8};%?A&L\QF5"Jʅ6]vƤeӏ>\=%.Y]FZIWVZW#ep1 ??:~g~f߯c}tq> Ck{U2FyO@&Dϔ2exYk2Oo0|g\]!߰4:]g6 R/SuqpIvd&2A%(j-R}$I&,J-!=(uz!)UjI8Sցu67gO#o Խ]T%xz.|IOfUl^cmyej4fT/玱P 3E,13:*}00Tpq$JL32&Oؼ CG%ѥ&35N쳐<#i”ﵶ#^ BT1 yP#kL2piiNm6NRRɎJkYNZA*C5r0.=Źs3Lll`scl֨t0D3Dq6}J9nǎ r.u))uT Hlj> +]3SB&KS_:c Bs5Ν;./^|݂¾ wlmmqС)wUZժV˗٨oҗuꍸ 2rc3ӭCt¹ S.p5G}PkOqF?7\ sWA<މd%%4]%deJ&2I@ vG̭Y! H#7c)53yسL0KZBΙ;Рki˄.kQY%NńP)VȒ3߻gܹg&M {?t6HBb ɄO-&i%OPqQD0GL+&є`h pcLf($UyH)|#*=gΜYB>*]w~;omnբjUZ9.BVj@rJ`xԶaF6MH\v[ŤXG%Nä\(j3A j2Wܔ3x-7P 0g 7p5w6|#i;LH%R `<wP'r_lGR-6͋d'iI"W:O"ao;xZ/!WsOeٖ":(E/,~Nbx㑠UʀבOwq9~Gg.8adg25E5&+T />U^ٻ,YǸ uI)! YHk< DUqy OOя~t%ef<ǟ1wr{7bӭ092hJyl/x̡C d2]z/oOzR /^o>,?_}c~  =5o`Suxߏeݿ+ ȉ'^#KCi&-_H*1z#JWr3fٔCMj3[ÃM5CzGuuHxΟ5>/>q=7xq{\8My VPQ &3;Eߧ Z#w_i)!<RRH͇,<0r-Ur!&6 brQY0GBV/15|:VZAbw,u6X[칳8w3DD^bKJmqyfط|O}=w5psr|_b<-סxnxVްoy0zWm.gFf-k3f.1"zKR Z@cx7\b|1~}we?A;8IH3 :SJuGTm$Oy.NJR%4wg85sƆ7"_z${ cE XΛ[ TeSgR FqSakEcS@?Lf3Tu0ncyk ,]t6{77 99L ƽh$]mV/1?.&^,14ԩSӪVUjU.5RqylR5"5Nu2 oDBى8WKFN4I!.bl yloefj|qmo[NuDJ"Kbg=*J ˢP2ԂX1;RaY,h#/X;^¤/dB(rxntg22F=>jb~QF`U4IU‰^=S lndsca>g`jkq \~M,>_Ji}HIv{lmm%EF2e72bW(5Ճ(2`UBHu]ժVUjUzUViH"7Қ w{(.6T#bhH Oŗ RnNVDg73|=>Nz4LQ|I#K$RR˦a0pw*VcnaGbjS)K6SwZ ;!jr܌"Fm<4 R)#U5!B#G;Rќ)jA.bN).gH@sy\2tv^F0Ohryp%<-X6qxyX4\pay/\񲚝qUe/i6WUjUz_?*.XjՀ2)&!\`=UҦhSBr'SH=ISAE##*b* (sdB5~"U'TijpݛnB6*nRPa^ %T lEq<6׶0CZqzU5|]b¢!Y9sm`hI1Q ~P+ASōRjZ,{f -7IH-NX$K0qTJc2٠VP 3keWucεyVw^@1/9y0/';׹16I唓[T*S - s: F~@@ FC ~wsa̽i-lsRI}֞gǘc?)=ej*v?[ iBS$u\ +سg*xՌb1:k>5:a ̏)>[U&"4u"{_W?/o|#7uc~o/޽7MKٵk???d/FwT̅TH=q 5U)]D"OyAO&e>)OC4dSГN,GX~V)_[8<)Ou.bFcNs\)cnVz^:կni*1-]w^>-{M7g-~7sKRĿWm^lFq򘧮sXn/tj<{a0ƙ,݃$T{@O+Y2Ö= i}k]7??>djAZ"8]R 1WLAM0QFR֧ HDX ]D++!h/|ox1{9rQؾ|O3X8ZW$e>qbrQ% р]001Pf;6ME)TI;ܘuUc\JY9ֵ0J=̡Oq5w;ɤЕ$ 3R3D("$W<%!J?y,/,rBvscF TI:+6̏93uL4&TeWȩZk|"+sObFXv*%쪂oR\~ z?YXXiN&ӟOmdq}c[~W/˷:,,,p9 s_j1u }cDzo*>3wW"z6;&|R.>"F߰` 'ȋbb~4!R4W) ]W2D$"٭0Ԋ6\J.-o? ?];Yٱ/k7]wA|Ouk=)9>ӊJJUGu ҸhypiZhh|5'YP&*< @B(DH9ϜȦ#9(dL-:wTH0ulx2ntGSzj_SHh@ZdhNؾ0^g}8)Ŏx?u6VIׁ.p=G׳+;V欭OZeƄZRZv'dZ%FJ5HBm?y X?VȚN"Ghr IDAT_Xa_+zqH@<+B?&YPkcS+dJq qz-(3Zچj3aȑY(+ˬ9qT}X7Ȏ?ﺗ)e I-hNX;rXs/iČ9XN}Lޘ0e5v~ؽ{|!1ńV׹,:+>NuBsKж 1yxü`!TFN4z: ܳjd ?:g$v9 fI Q&v+4F95+ a}>)^Bs8J$\'ib2)t]>xŻYw!DaP4"Պ_E^qHʨV41Qe݌lm2q$l3^T- 3N'NqbJMB)&me6$b}0#5Q:IJ!:I&x -_Ѓ0v%:}ba!Z ?<:03RAzϊ#mc{Rd햣FaR`NN16P(E@LbLMa,2#OGP ㉋.9GĝwbСCБ#G0 >d2y| `nzw^a`,--m/"t]GJ.I1-F"lwqKO?v<@D9ξ}(D}4*M8sȉk9uB*ykH-@J q D}FN#4䞎G%޴ Va}<`y6AI$lQ6V \ UDJ]Ķ;a /oJpK9di"8&͓i?:.n@&Qx8"RE8u] l rF ф԰/Κ$6@N&ᠤ 'FNJX_0~/-Fdᬳ躎a2C' ̄ 3g83\9> yZ3KH)GZPb9IB\)^Pȃggt2mH{(>OK_x ܹ1_ԧ>νK1v]wd޽/~qk| o}+_җ[Muǎ/?'̌_+~:q\{Otq 7?[z{{[z e)| VuyqC?fO돸r𲗽%Ze.4svJ``=|Tɖ=z~ _DxK_G=wk9lT#wl4+n4lBŏm{`Ht9|$N)mK#@ɔ*W6a+ 2뙸县g! ,!6>{hVRUǝvVd|&͚Xr]hQ &%ЈxtQ7-^ ӑyw4"GǞ@` AAHOE&rfiudGbqaw ر@#GτGCCUF]ϑPz֊F KF p"Y4 v95Sr,-1d}yDU>ժ#lXW.˹Y\\\uU;'@g<%I)=! /7M'|[~Wk߾}]zc[(%p%l.clqQs\p{ަ?7g;3~t]6osמҗMixh OEoO:8%"tcHBM1:Q)SeR >MU!,Rj#wS $M)JŅ -vjd *BF\ '6D"teamʤVHJB\QQl$լaàBNjZ WAr 9)u w-m5\b )5W3f99,k+BQ+(E$˹I+#Vwrs:kTkVv&1ر4F)J%LAﻎ,,-2.$ݐܵq5樥IV89eJڀQh+h+֪HA[O;\c1yc[3 ?z^m fw?ywo|#o~󛏫 y(eO~SԡPRHA<%`ũZHtP=4Cg"[_K A-PN_V^c}!BV7TcR;opnV]0Yь"3[¼RK eB+%*-fQ(5t8t99kBZŸZ =zn,֪UbNEm[E$F$FWZ)D4FVk1yNΙLG=+,.,%_քDxao-`y0.hEM8͉2hH G2Smܢ2+,e6F v]HXYYСC;x q8p:-M7|3 }DS xӛ޴)J~}\si$s$~o7E:$FXdICsxp,lv8ZbTX H1DN(#{>91DA(-:.bY)ZDZ~}CFC lOq*TršKB!m:_gPzI.yKJ"Uz THEj9>|sߤ =:vDz cRGPG*;٩6P+7UrK]8ʔs:u3ǩ&D65# zJJ2uX;FD=5Jx/G"F {ŧ=BOA#PJA6;_pLBZwTKL"}h]޻gayL)^G`Q=DvdԄÇcm8YXZQtHJT4(|OoS!ͥ1㿶^#xq>&gyc[#qO[(<ޔw^~w q4<^|#se/{ن,Ek'/Թs 4ǣt5yG)AKŲjVD8P7Ԅ1R)ƐҀ}ހsFBtEX؅waHu>c'Y`1wؐAH4.5SwsUUjX? %a\fAm9z'kuoҴ0tilޜ@&c,u#̉NCDQm Pӗ<z{\ ;Oο]^L|6aS(aḿ=8t1OgO'/,c}r5*IJլZhg4* Pĩt.W\//<ԧn*o9y޷eawy '>_1O?C1{>p}c>|x$F'&Q)[\(t>Hلq; O(D(p?Prn7G6_p-!*:ʸV 6ο;D@Ϯۙ'>?/}1kpd݀DG$pLH*AOK#WYv6۶IF}HM$!.sʊΑQHҤT+WQ[X= $6ٵ+ho}w5vۦ?}h'`}}/| [;9p饗η3k`$,WsWI8k'?W_}5o}[7.d w=nG1mx3зly6gkdGr'zscRmH~7ToHsR 6CRLr5riV: Hs|\;Ge)}E|-ngLRGh VIF"\͢y'Ø"$:J,QJ]~Đa)C5\c$ڄVf6o!vU!%iEZ.1`Y2XXN!0a %jP5< +ax]Y?xaa hWF,, ɩ1DPC/5Cc/΍8YaQx> L9#9SɴZoXZZ-oy oy[<1ylso?^:FѣF̅gv\u10P5ֱF2g`XDDqschR+%T v PQKK+jT>ocqqՌZ;+H}.SݰfTPm:"bVC5c$.%T\" IQi~6 M D֣SVAKҔ>ycIEv?n'ej'>_GN ln?'8;o2N$S6)z= A̢RPͼBj$)v䤳.,/gW{n[yPRuĔ߸5!^vP+F&3%m =lz͢Q-zx27%ҠduqkAM†6Τz~ jMG]4mIcqAw?QJuRQ3Vp!Ku Y VضҶUFKiPsx"ѓ4ފD*Jm`FGєPX'wQTx&״F'ݏ!sd%6c'"z뭌㿑cudSyo}2O)GS7K?MJʣa!*$9+HS$[m mc\>Z1fd."t5f$qr*>w)W#23pFbˡpr7o8qsoX9hlY8)9ƚ^'xNO9;d''v5Nhhx.&?S?{~m#1:ﺎ-pߧ~(v5(*\8Z(NJdf`*1I3 LS9gbhX]#Ct Q!U4G"W~ø> ,.%4~@yX]}"mA'&E.3v)SEe\ V-:DU^(O\"w?)FQ|1g@jp W=B]&03=x+YŸ́=_1jdM(aV;8}ߑTW_Rb݆Z}/zQhq7~h1 }O> }gMsq?_> +^ ?;Ϋ^M/wR܆o֦.'ox6|}/<Ͻ}C7L'OhME|+7|&6|5y͆s=O߿S44;7|7|ꫯo>uN57|3W_} Ѧ:? ̽_ {;ޱx=mݶf<{>ooн; {߾/7|WW7}/P,}kw~wؿ ]'s)5˪ʗe}w]"{;R8|=6#MXz~ ?exw@Onum5#g5m6|Om\_n߰80=U}rk̏SO$*tdžklkki~p^kڝ4`x8z㫫\q=a⧠ >]cOݐpq>R`H`?gy9M|zElB%&,zr(yZtpo:pMS d0DVQ&ڸShbnv%@)C)p6V0RBע)5vkz#VN=MGlm [./P%U1%mm;0O!rJs IDATG$@JgWHN+a\Y ])Kʤuƕ?zoɫX-7DRDbd}ޮyst}ZdeEz?zv:vL vK)0RJ2ąH8\b_[mD)sb'0 CjRHJ }ss )Ay+?7| 5-+FūkUJ;) n\1>vSJcVLy&4mNj+Rɹo#Bun5aת] ܵܧSiRHm=B)UI$ISr[hs4sY")g MLa88+9g1a!+k9]t}?H{19 &p޹3r{]H eD95W0].:-Q 0Vtdp<1Id:IMuiX[[s&Y!ߴd8pR9~^D5uJ E$vgk3ѯY!yT UBt9Y3T {ܡbJJ$ (5=Exs[}'o[99őRƕnƇ5ܩP 7RGBs,nm0Bmbdj#Oݘ{1 \`ҍ/u+F/Qd @iBb\i3IR< 슍L/#V W\l(-"ĝ+(&VE$qW~#yǞy;wr wPgy/? 0 /ǿC28[`ўhXyDZIccNY B1G]pBojpYgTMp9gͯO n.g] nݻ{;Y^Xg?=jrF5qjx-uf~0%7Qz~Ę<1yc'lVWWY__96UeyyyC9y< xS!-6tԁHL8\h)`.i{}-ͯT/63>[B1_Cl絯v ԃ51ʉ,k\3y+^j@*^Zc0>EbŜ1F5Ƅܢ{a6.54,Q!O貒5 ȓ=F¦X"CXid#9*=s61uT½*8:GV4t,ɕB,g iRA(u;vښH{LwǬ,"8 IX脇|׌&O۸-8ÎѭI"3-1%q\gs$[aښ<1ycR>7vl9gFy2'\A?J~pӮHjڏ"gvU$3 S=DVز谔2ԧ˹gpiKLxgCȩ|hnRMkwhtM u D$a=da-\bDkt+".!'+x$Ba u32jF0.f9err\ 5e*dZC¤8X)J.3 BEh ҬmS&P1 V ;WF+f]B8]JT}Nnuvx ^S%K@LY,~@bsj@`4R<1yc'Vߧ87u<ձ2U:Cm$Z⸥W\qR;1v׍^q@B,,M$\δHY;@RGiEx$ݪ AXY^9< /8%Vwg? z\.| g?|kʭߺZ NS/\g4 ܄Z,Lkd2uW6Gp8p2IGoI :!$' C5JqjJuHB؞wZT*Ubʓ0X|(&z.H=x Ƥ+!/z3xஃLDD`>֋B[T!QPj#!'?I>o~n-?υ;}[~nM-(R/_r?)%.⿱۽{7{&<έ?mv+@kohUBDxK^a-qg>X= @BDg̣΀pJ[eԔꒃڝDMm_bn?DjP+_[|X%W/~ܶ( C!3^/ԑLpf>z} 0AiD3ܳ^ U!$Ql=Bsgņ^6SWLR P##9 +3jy$a+cB55\gD1_#I1{Wx%/ [oo 9<uP5ժ6}(iʼnHg p۱b3vV;vkk[~.B.-]v=k`$>m?UÃ,3LFt ]v9gaxt$Gz$rǘlsc;a-GND zn#;H8!pk91)"Ɋ&!uJ= NaIa@8ֱ6>'19RXP#' u 7r9B;KQ[R\ v"IkE5!Y0BĮI ߔ3uf h91bOBP&VX\(TFZ$z'JGEuhGD[{"f]WBNa;M?:JF/ Nդjgm߹y2g!"1 TR2x~絟b!)n1 eDkAj:G~h̅tg0nn;|!,/EAcDƤSku=X 5u.L=:6JUG| ϘR R,zSDC5ѩRiʧ~)%J j9 8z)1`iL!0uzV(\)I11,[7"7+a+QX!FhlIA]:d֔0f%:! =ϸdB5jf9}{d'#k%e *:<C4X<ާ2 Ͳ ]bc$YY;0=6F];O=hr-H+i4 6f<юio<1 ֋r'Ӫr%p}I9U wd?dJ ɩA^̮GCnM?P D4{ IUKS¨`s9|ٶ+sхg3t##=?˿!:XɤHHuR`!(jTzki&hlk$sb?*4%K) A$謹b`VM_]C":2a+DH5 o {jpj.f祉k xͫH$ʤ 7M&qJleKΎ ڵ Ȥ2Gx/jP]chNJ+cyc̫مG0 o[na޽ -oy ۶mg94'(_Ҷ0_.X??{rU5Zd5(*>#y80L݆(^j!VȨDRja" 8#R +7~O_s T[f<,/ʵvl˂P:|(XFъ/TpI%>AoBYG'@U#<;v[ Ѐ HH,&{ƀpŏ?c'yT8NReq3T^%)! F BЭVw8Z+P7RK{so}@XRsRࣺN1od+]NA/kAHm8O/fIYJ$WsJ5&~_1 73_} ? /8-=$l<Okp٫^][z.8hF&R܃;TOsn58|0?M.<Ѧ_o/}K~~7~cTQĿ;];Ν;wmՅo\x=~>ݟ ?n/?NCNU͸ZL4JATX/)4AA[BuV(fjOkHyLx!jdS#٘ )vOyDJ+d,!TӺg"5)͂FW=RDjt͂W>lf{sdվ%Uʼ(YQ+tUE.CMakbP$X5-,Fr̽ sЏ4AaSj=U*:H¸pB$( Gc*NI]1ˠ&8S%8|<^ÛfC&SaJh4DD4kp6fF׵8^*]9ԅ,&\c5#% $@I9cŦnXcVh%#1P<>,ZcP}WCbRt2psJc0?d\{s~t_Y-Kοkt;TLk箾GxE/M{ gJ1yvIsX&HkרqDfIuqbf\:̾:vshW[Qk嵯}-fѯ|kY&5 u88%W%5GuPD5y04% "wR שD5v%Q!T +Ξ+o?Jcc_CGst"Z<d4+I36fZ*f^&Xii`B |9Łx K^0ƥֲ*/MS"yXV$AΨ*8U;^YjX)!OM7׭ToaҀ)akØWJqn[<$ԕB9 q=Я ~:X,yZզ5:t[$J (O2@l5gYjVROp_)W}C\tEOw.,,?MIl8Y=uiI 4(/ҥF8m QAͫ4#jbT ؞GTC"ǎ+=7|/oۥ_G-wO"N;4vy_Rpx ijI ļŠ놸VrH)[7ü ARFG-m򸁁 tT麎}nt92݇gW 2. A0D9CMkKPa9릤q 2y.:) <&q%%iӑȭRkFxw2i$ )w#ҏ)a đq;wC=ʖe {X"K{ݚ_4Ũ$awd!R*+ Aucb$U"%lwm`B16OjB%e-)P*QP#s Vq )D)2RX6S5B aG?"3 kBzXRЊzveX\8;Yںqo]}PUD+Vk ;EYz,/FdMq6g5YjV'[}cn޷|6^~ AH*ykx_MROhR2 '|mw\v$'T":KwWDNJXW൫m7>'`-)"1@+d͡ip"x5]Tb\ү3󶟸{EHh}w0Z_~9b'}Ǔo1OH9NBIB+ !SRl' juE"Qu8%#ՑjbM҉;a IDAT uJ-a[=@Vru5U**QU+U40ϼ5{Qd26mHE#R  ԺR{jaTfG;TvԐ>3W~x/^7k? oF~`WUz U*fd& > "cEhXU\jMA?M~6pw_p 7|fӯ//n5P*۟^87<.==:YZZbyy[< ѭ&{{;yjRjM`S =mv"_Xn& \B [D7@mAvzy$I+Y ZFzrN̝%\8#թs%n޷HorJFt713˛~r-<.'B-~R_jHJ!\ P[슻UI 9+D3~.ESzV=k+c$wA%KKM/js󵛆^{>~<^n/6H-­RkSpR+aqrGi@!ԥRxZuX)>7>u JJ%ɓנlIb\ !I2 =LJ)hMWRn.N4 9g+$㼨PоYM)h"fN:JoaL1s+z}72լf5Yl|lܽ;)}=WY΃ |tS< }N%N}sV$9fG)ڱ]KJoI[Ĕayi;eb H0Khz'6͍=s^.U3wwހ6qP4k*[c"ܝ1F}Q G4>jN'Jh1$k}#/X$N4&-=SnލꊨEC̴L SC% VBnnVVK-H IR\5\yKUfO AT+;pMYhS&p}Մ'4ʞլf5Yq˶ҭkl'4[Y/{qǁE4|FGsƵD8{46MLA̼ǎ RŤq w!ޭR<^Z9`EP XRKcvEJSkL DA F5Rf@;6zt ٭5St7san;͉萜>4""tn^(R)g5(U'PDܵNKY X%Yg ZWs̸NT- :1 73F6&IGRFNDx6"r)ɄhVլf5S\q8=9{qWrWͨIH}`oX`#fsx9ca@'Ƞ>C 9)XZ<-2KD+"1I{e#qc\k t1:FJ"f';&U6*W#ǕrPx+"FvWCw-sx5y?sbdVլfu !7#yxÞ F:铃- a¡Qw02%=W}Zyt~nFnV}?عs'sW\qwKKKü`/wo99Ȅ$Zm{1C6>3%9FНᠣˑ]=6V$tw]4Pw?7rƶyVo!gm`asLS[^1ihBșŬ;]" F+<`Ьs[{A!Ҕ(*U KuCd@_ IX1]% @H"BLJ]/t9])ns_:z׻6:~8p7Mz>~pSbܿm'݀ 98\k+:˃bpsN[=բ21yy€מ5-9e7yaS_=gu,]ng:v)&e*)xAASU52]+WEUZ|dH `Z1RIiЦzvzG~eͶɟB%~~nӟ gux_>Mr\vL99<~bddԳ*D:(:v-oXYYy_>>(G7?g_}SBsO hF؁!:BCjH@(M e5(Ŝq_b'#(OSl%\jdc<6ŻwpY;9rKWCk?·no߳Z@2F)2%4~&AS4C3 KW rurL䔦Z"!.nN‡+ }FecXLQTBPŅAzmb@C1:%jt6f>h(}B-1q2 ;G&XN&acj&IڛV QJy$8 Vjr4q0 6:\㎭ì`8Z̾0מq(ۿڳZN[ms O[;T OoARKk os7?q?2H3]\e.sQ\` ]gܗlo&ݖrן$%*ba@rjZty*/%Xfk -a<%&z/mN3Ҡ@JDEZbIZ9#3IZFzdt2ekhPQjs2VZNZxKZo)5rh/x]%mn~)1vL_#DԌ>I6GsxՊ4def=<&yl?3OGy9묳q .٢jVճ \8*/XiȿYDxp Mo-k}xy95[tDփ4"T"3#0Ff/k=}9 R+5$aiq!@ VH܌cygi,-翘 _Rٻ߸iJ-="hkC]㽨B"5]͉R( IB0q"Ӡ)GHB'I$J35xLGRj@1㈩Kt)j= !I MTSs)kM~VPhCw1:$ Q_崅lơCYsdn+NdE;Yں,J-E}2cۑV,=ZP$Iݯ< x,HQUPrc凜2?3լf,VuU?yC?sWcg>Upj\LHܜ#±X&&ݢ&-;BMH(՝Ay2pӊWB%һ-(IU9 )\.}삝3~d7z'ݻWpM}3iv8M0R7`t┦@Md"Qx!Y&L_ BCӟ X%LLr-#BF^"BRL!ܨ 6rT*k9>VC9 #ZRpnf\` ]ױڬx0>Ρ GGGYz&[疨9a s U Kx_Z甉?ubӬ!D O^U k;&1]fyw?7ߘŞ$h{q}-Ȭf5Y=KmسU\s5=}7t:7Y&=Anנ'KPHY(:M?M'!-{JY_Qhyd[ 'z%5`e0|[<#6s'r~>V ,-ogHZǤO֡ǬD`dJ)رR뱣ce'0￟__N~w\y啳Řլ6qӞ|!gv3:^8pY]=6y.E#1h.“~;!nߖt,:F[Hɟ д 0vʑХdNeÅ>ڗ#H=WASFc.RtE`S`ERҨdabEuwgl^RЇ')MkmN`0(fhK#%aGͲD_FzrEHxFJԡ)} K&hR /Q$%/VY__о9NFaQ E ]0/!Zפ n,uΜƏzdkGЏ)1I c=ܜ.w|nft¥׏}n@Bg?˗F|orno&co6Q]p\p|˙|kPI\"m Ȁu{z3>u|_ved}}5)+jVw{y\,Op~R_@wY)eF69]HG'ipaVjŮ=j/L"xHH 1[0"h:;Fz)/8^ryt_O_LNG+N[G8nu) MTIJ٧DA +}ATȩYt/ob Hs^bǨ bNJTí֞4hQ}bM @2 kRrbRhau=x=wۖw *iQkǬ=B)q= > _hz O3GQV.0̑H>&wIXsf82&%Ǽ&0sC{0˔ Wkv Ncrm!j%~{˞KmځĹ 45Y7r \49=f4":(}!DD)} $&InaF*Pk i.SQ9\Vk\UCOfAjd(cw cqi :=tyVYYYaJ{v68ΑT8Pj]c<:ʐtUnsDkˎɅ``7Pix6&QaIt#Mk&IϏ*k* PI2e(en -pGs!!o.c2"Zc]-2I ۃSo~kJ)qR8sY\\|Y[[FU⋩{r;4]q饗>!Ǭf5YjVsD/hGPӶYZ?[K)t9%v-ISw?F癟Kƽk1ݿ- eh2:ҥf+\*"U+3tWTK$և> @΃IRi4UHp.cVIB^ w)QjD-5+D&8.)lٲ<[8+MDŽH39EG=񘕣GY\\dGX st.Thឦ ĚZe ^7Zol7֩ٻ裏rUW/|5_{OXw |d}})6w)")%Fl-լ~j'J>;furI)9H IDAT~ݓ 41q mB4jvgMJjԽ*c)I7-T:F5LwT ZZ_lݲ l3t$2}6 3#x/k7s] AKQ=D#&mw)yυ ݈4PIC,Tsr 4]$2Z+@2^ŧnNfت FWjuw΁;~lm3"{zťEVVV8r g>EJ5liEPVNfE,y'":5dUꄪV kdVZ|`nnI;@]{|gqq3yrΤضm;w|FagqSnZٿ???UJCmjwO|>2,OMa8>ǝwy^?@1^7yͦm oqM>9O?=ɛJÿv-&&G MTRl_ qJ)I!ĸTD׼8]wF(U.{n|u ?{W9x8RbngL%\eD+FC *Bwm;֜ *)!ʐ4mRxK %\V me\+\A,.x])61t4z4FP"Co@2PMw UR] 0[X9&Vi`Û[W$!X+ p閗.FiRH@$S-;籂1 y|+_'mp7r5uݱ!wN;3Ɩ-[رc>ѣGaΝ<*{}k'Dv/_CW.Ի7-$?~w~gӯ6N@o~RVcu!l O6RDS*(5S~ h426 ͉`\z49 ':Ww+_<=lz=ʗx ^:fj"S&Z4tyR{4E JCKڦ Գ c!,R,ޛhp4 P̦ϧ95H52.Ĕ,9,}z61xbŶξ}pxh<iNSS?}}渆póz!xhӚXo@~L(<$rc}5j0R ^Aʔ^|Kes+LFܿ 7^`~,s"QAt WQ)ɸC o(x OPH*^+Ĩ^#RόMy nT*U…%!9(oX6EҖI3!hTT 5Ex#(RcT⎕Xa=s>::O.SV-,ۅh}? RSk5*n~t^FŨe Ke@rŭR'uS"yb݅$d˘i1uO]~~ CvΝ;뮻fwYIaV|c6݀%s}uVujHiu#8c9s'X;*: n 5b"8--%g[LB ,<}Xd07Jʑ1}iHNJO$AʃH[p5'RjDbvCD(PPZIqd0u$ " WmM%le(3qOհߍ6z m'9}jZ~4)[vJIk8t}8?4ݧrHN6 Tuգ.@B̝Dݝja0]}@hS9ѣGOz8Ymںulf976WY =[|wLke Fd߳$DJJ)1`%J 7fšjJJN-溮+]J qc-jИ Tܳmw|pufϡUVe Ch%160䆒1ŋ 9,q%R'@xWG<\ QA]"D(f!t92B$z7L$bdXHw'u1JT/[>H ( 񼙃Y꫄5r[jW*ח!҂{ZU^7K Yn0h9uΝ;8c QK҄VEx)2M Ju3c{7L8s>sA46Z'ROgOtn eBg46aƜ>s2 w3LZžՎWu<62$z;'n%l Iv[ڴFl|âi b"0#G93FӍ'57I~~uDJtRY1c1:RNdBJ*rE*PI$MMڎZ@A5lrK AUD5EMJ/94. # wxJ8q3$иLyIJI6DrڷSJ,`R&FIB/S:L& a0±p8G)ͩM SHyn:9K1{^q}l#0z@M3\ LLD6Oi%Ԭ2|pȠxi>]Nϳ?E40?ӟ4\yO}v|#d0utd}3 躎Es[o}Bɿ6^{-vۦl߾|_u~~~fxO֦n4/k׮M?ꪫg> Qy}*6L+N[G#3mŸL^8]/:+Cnܳ>Lc;|,_tlހ[w[o啯|a/x صk'Z{& ^v te>p,j:IGG)1LxHܝm۶=)R |;<̧syy n6c9TpϷz_ffŦ_qU.ڱ+e14{p˜w{s#yրu>~mSɽb߿' vz?9ЙS6fFhed8X-$OmbK(V3zT"ΣWs҃YqݏU  _Ug9(g,f1Y{IgvLvd_̸8$gh"FtX& @<+ j $J X.{ P?7F#(,1L,)FA䲮M Yˆ0FOE 9; Zäz jX6WՇBv T'yKUW.$cZA$bMAڦa:D9 2uވapEQ?ZU??F;wf[rbskƛc+wccuuh9} 8i1FԔKO\567@Z]3źDl+V HPP7⠴YA g7D<1<}Vgnس,k\Ƞ|/B C{1/I/Ç9vW]u_=o^qQ F:s `e GD!j"x ?_AL-'ɖОN&!&Tϐe^ L)ؒvB&߈%C $4DRW]*VՏ%8v&QiDmKϳVP )Jk*qty@Z2MtTKmVxC#CQ$Y(#kG3L;)[B!윝93?7l7Wl$4M`H)377"+++. vUì8OF*?'WG_-,yE{/}KgOħ~g0Ybj;03ӟ4"oxx_1}+ڞo_)~㌲N,(q+sao W2:uɯxj?^J*U赃MےЙa&lA,BQm1B9H Z7c{O.+NJK[mn̸S0obR,QT:VRܩfe;W .K&W[3CJ!w}`V?9`,*nԞ*l|kh q%"[ަm[Whjm[b `-;DB#B;hayx;9K(PD4輺TJgѪ2F-ad V˕cnynrZ,)$orcAxл ZVhZ1j+*"DDQCM"tC 4FˇzmQDY^^H 27G#x8BJG-g7GRt![Drv֠hR tbNfTQ(K#Lxlt\~~Y]veoݭH~)6GgOO򲗽@Ç馛_Υ^z᛾/>yG>w>>1WUy}Nwug+$Coev>` fNWA4x5Yʤ'A+n VtR9B{FҼk Рu-u D-5`RB0'40%&CRRqY0RT0΅ΠF]G(-ۆAP85"+tLZ,y5%B.`D!Z!Q ˉ.Mt!/P+6W!9Mh qD*GkCc07Y^^DDJl88N, ќ FVDȰ ץP"='ZX5ѻ_znnpeoVݿw\r%Jʮu݁~R8s o}[i`0`~~É'I^qr=?#;9gbsss߅b#n3",!̄M|?W^y>6!įTY_hvQz|׹o_Ģ.j%LnUP+k=քȹ6ʹ0 nBWB\"hh(ap%ިlr|)GFC (QJ0'V T i%H,Bs88Ѽ=OJ'Л;|O"=.O;;X]]<0sYnkj,oڤ  C||?S?3?OOE+}f'l_и($TWm3WR Bd*`fP}0čvkSmh))qX٩T>B L4n|snэ 0RJ!D"!FgrMϐ,h(rMo] VEF9OH1LE*]+5 nVu`!oR/ۘ[v cb! !5MH)O*Vɪ BJ%;7YUBcIRHi#0PL麌ťiiP% %4KiO UXV oV+hɁ{"+0 v)b9,T '2Y3qBnnr,.0p.־(࣏ロmOLIKm抅n f'm_ ?y<\!Rεm*t bլH q&d仌/ V];@ IDATWr5 DQUyLhF<ѿGᅰhF~lZՇ'\Y+x ժ9ݹ)9WR!*Q$4sG;()UI=PfǏ^.\`(˗\N2z˕F8A]3.Q2i&^ !v%V2=bZD]JĨ.rD2^) 0Ѝ[c 9TQNh@A:*5h)\ĵV'x&wҮBv^,f1Y c ""yoEK9o|xΡ-0M} >d+UJ|oJ]YMgK5īDW `0<,%y$hjKH2%R芷-QBRfacX[yXidLgc뱹jY_A-A%xd'+5d.BmcE'${-yYɘyEtf^¥ve6ucZ[ἥ+679L&bB` Å%^lB;$rnB%j'hp|QЖ\ i .!Kςb. c}` S˅8zTѓ<'zXurf-,f1 z׻F_1.}k9~9X\8 ch wΡoN|>_x;g?{ԩS-o9w//y[ + oxÁ@5Yn G5#r {l\=UʸŸfid'#0fx3㮻:G%[y衇.R Flqo "uռ(ݎ;:# K؎ T'LZ̊9!][ěI]UMz|5 ō~Omm]9ez! V1~)r-GOpEj"dUbP9v-orQif3'[)\4 Qr&hLɉ#ҹ2Vq*I %% >18d}kxh&h+V\L%0 h,ZFBDPbTǂh$˵Dhj$NlI+zַ~J,.NdaҢr77ϖ9sp1~~u]u]wUzLmC)%|O|\y;|~Ex-vG{F@_ "s_9sT,7q>hD *t9S(`h7^ FF:!ۊWJۨhni)L)\:VڎwcbZN;:o"g'.<>qۮOddǓ xŎXrYPAKAHUM+KGI iXzlM5CENH CRb0a1oou(4!H.oCHWfĦK"LB#<1^\ַMd,fqaʘSMY[[@ Xn;4>󠂰E!'+nlr%bM[Ɔ;D5OCh@xL׍)%iHwYxe@T"1BQ 8$m¥VŌLDW.bUxUb^Y ^̈1|.2後Pc3sxs1]5Ju"lՏ@ʏ߳i%%4XUWEWafsP YqBw, [/0fI&C R=G̪IN̔tb[Cl^Q+@ CO@";;Yb,zLG/O}(u>8tfZ,ءM;1jPIՔɫ䩃3#AV4LB-9F;!ĝ֣FNv9Y jXW+Rcؑl-+/U[ ^34MwǓ fȩLIbNr`ۢ1BoW!ƸpW2Fr.].JHPrJFɹG-;2"g!(I3) :߭4hD !Q}ʌd 1.dF0U,8V\Yzɹd5,f1YO}~闦n1w/37zkF)SʘoаWQrrh Jm<Op26r_s}"noϥTdx bT#';x XrakcӧN̙ӧX[;Y7X[[%/y1]q ;&D?h{ a=3]++9r2.9uSX[[cu,kkk?z㷰"Uڶo"ѶsՓEx6 ֞3h #-R1RK܀PMZ,Kwрye#m T"`\z! jXJҕBA4qx s|ճW) ֐%bڲxVE >;EӴ^޻ʩ{f0w~zm~s=S_}W~~}{9=}ʯoYor S_O=S:n)=>ӟS''S_OݾŇ>/8N~[ox)]w]wy[؞wSw]omwλ޵j[[S__}^{&{O|O[]][nyJh4ڗ߳<| a~n>&OЇ>S/>/(7؟SSµr9ypL|w|1|w}׾ۿ[eqo|~/gϞ=g>J.&d"ϷOL=K>)\Lq}C ٜ c)yV"sۿOo|]ۿq_uD[^ײ0/9ǎMw[9ۏأ̳n3,sùg#|"xѩ,--MǎW6^m E!FY8W]$ *`q1[#0J^ 0?9x EN ]NmJS Sq"f[cwi/1U(lm5R 1(AGP6mnPXYYs%&gϞuqʙ=0RUFlmmq*9(WV8jmm yRJFIdscu̔#08|Gy.PHV2:0ꄱ9%6G0 x˔S\H΂q+伌q ltܙrbsIDJ \vCԖش/j),.g]y`"m۞ڱc8~9ۛaqq`X^^fyyy=z틋߽~=ۧmۧzb:tÇO=G{홼{=kuggд}7wzw}w-,,45^~*̡'1 4T.[s^s Oo d}m}Bӧ.Tmoo6~uuW4AcKA*>]0"9qgC"4_p5 *;R8Xې ~+ +[zqQ֨R K%9 {O1(')R9%icB1B`4:G`0ueu#By3Ɠ/RJGYIU7a٣'& V='A\A91ڤ Mp%'nfS<5,_\sQ9hXVsDԀh@.d/Nf4Mdl6F9љIIڂeTVy Gm_ł=u#80NKe>;kAU:J=iU9_;9v8q1o+yGk7pz#ȍϾtVj,f1YT~~1]l jq?2F#~G􋦂c?c/ڣ[-(AZ x ^||}s|f__4V@v0÷<>y׻ rP ƒ>x^ԃ{?| x+ke8߫_,, lO},̯MK: ص^}/57 |x~^|ԩS =y 0Iy1rN4M|+w)W8,6nPXJquZ Xr#`#$KB4nPW' DW*VZWGvW/v h;;m[apG(S|1ihbSI➌w]h@J|1>{7S >GE%=ަk8tg:憗pJFY Mx)s研z}(Ay>:ĩ4nh$]1p:m|K^˿"#(k[D8qǹli&w4zUUo#gc\F dQ _gRQo??spر>z?~g87rW-n+y{޾E+x+^1UUQ^b~/j\@pMP4X}3cccc*8odj$¥g9UrDT\nU\ |^aHy\X(e`}aW1!2.d'Mg :<"XI(%#u'vVe%n'NDoY}Q&ݞ IDATҰ_LI HVP"(td#(iDm#rxn7YXnPb:( Q2HGìoH 0Pl|#d2q41jLcc3gBh~q؋'gĠU׬d5$8 ,f1 Vܳ:'c~'~7M_q1Ʃ$ܱ2?xz!_c`xJh|aBB/=["umr( 5$%=V BD80X^AΈ(P$WB@*t@*@TEհ\hH.FNvIv+W{RةRݝ(VBqc 4!j W. BN\\i43#D%ֶ8DZ5S43 HQ%FvfD!(lKR{G A!ZP"ww/g6FH1"o;zF>+n `U %41ԲU D'tA!6#b,N w͉$G2c0d1Oʙ7 |3sE?4$+pQЙw3yUs>5s妔:O[9R56'@\&7ORQ U 8DT^[̊U^Ue\ q&V´hqdVn({ڬqB$uU m7b{=Y)bT̈_"U z}vmՂ82!(f%0NF&rP\YK<1\P(*A?ƽA$11[0.PGmc&9ĈJ$ yV>\ ,6v'H7+b,nu6ZZN/aHտ9yξՏqV<;?/%tgw]ŕPr &zZa56N܂`ږ(q}@6|௅/8d~y~>9힪 ;obof,--?M!ỿ|%/yɅ݀jҡ`@2H޳'^E}+:i;%gA*wϐqJ;WR4A.)ND*չ) m\&}RcnU'{L$^Q{]ccTWIRJ."B&!?doT}'WJ $39{e) knUWke᫾:^++DvoaTB.#d.EVMT(կ jNz xRd$ ^u5)N=(1(tCUxd7 (V _"4mE +ϐF2j"<:0rvWJ!nR)Z8RHّQڪDe%;gȉ|S;yz>v+]qth}+h,3 dPRBlȖxSu3x}aMTɾd @/"p ~ a ^撹&MM͌e~g__C[[[lzs˿(g|) |HiĬB /}K:y:gNUQm[ F=J0!NxdeHwES!4H# 2M\ 2)uNbWD,{u2Bu? `٫ rwdi. fj=LQ:۶v]愓Ojn}MZ v?xRˤ¤ǹY9uuh ƅd楡)JY!J:L&L E(BʨdFZ]%c!L0.Jʩֹ[[l?)2GP ^u1ַyt{3#Y R1:'+JlXqU~Ȅpi3,f1Yʈ>!^wa|{{7M|}'?<>caanWU]fvmMňxn8R9 mܷ-N'm&_jkdL ABFwcPWQ?+z[Tw zy) 3SwjGzq⦮Aݼq n@ a4+z%UKUDGzf IUL ж WfɾT̫5Mc)WMcUm`xRb41co=eW]M#s"%LD_pp֘*P7n۵VDgOYimU[ksn{4B2J就v4іptGnG-n%I4@FB7{{y3뽒Q%ʻ*2;{?k]ZדV̇8ŷ<Ů>#gΜ~xy'?I>ļ[9s [I)ņ jӋ[kRÎ} izS # 4b)&&4I.nXq6Bp0e&m|D&Qi0V.J"]%-Ɠcf34AFF㘚؜CXMF_'KʕR ]HLd)_X& 0.bzbc֑Z eqi#'o 躍XmURZ.OH+C1ǜDaB0Ċ =sxsftl5ms7$!֡id# tu : kb>Th0bJ{\'wamuk]z2Kwg|Slc#9y??!Mwgÿ/>{y?xI}<#k yAoN>}]'q"}f(grԒb6b> fDvEjp~V;NI-Z,JքVkjBQ@I)~5ƬSff}7qw?̃<.r`z'N$>3Nj0.NKkŅdAI JI() a>$ٖRC- T=#=|HX~ݠC +} *E&& Hd qsIN&PㆻKI m,-j>{ ! L҉*ӬYh,\HG$43)Cb+KDP)X (>p-> $4 nҜݝ.+ix{amj;}\ H7 MMozӱ_o;_kx+qJd=`0?u_s^|rF'9\%$<]5ɮ{?ҳ3nr  [n9|~U,~BG{r7$!Rm5t!?O }-PBHT1F3\:$  IDz-GU%K:b)bʒ>a$l| 6K:HsÜ(X`c531zyO@%S\ec VT?2 P(V e5S5_Sġ԰-nH'&FT6 hQ22SժDr<r#Sr{!r@Kx>y 6}ꀹGcB{ +륺6P j֥Ho@$"L+xۭ*g)7j[1F3, CS䎺h7A1s!¶憕RM~";2 h$pC21B d5mV-}q\#V)-a 鐻gK.p/eq>g\,!,K ]G5B2*+ӎ-0 d0%Ș  ɦi|c?.^x`X} /_SԱ_~~AY'eWz4#Of[S<.eGGPz[ qgfo;9sPbF-6}H9l^s^ JT(H7ҀNSA=Rwsı8$XM9rM:*RQ3NXXnJZ;oNR/$Ghq@ǀU bN@+a%Q\b* fiZ9U,Cn&3FI,J"R"~zF:>q;>=\]|qqqⅮ Sv[tmD1#j{kPbb1&9(MT.$ =wJ )瘰I4XeUlFΙ^[[[~Tn 9g:t]wh֍7޸Ff_ʊc%GʣPZ?6 E55t f}G{J)L&Rv5XjPlrs2KU$5+ B- oԪvfNgo)W. |m/ͧ{x9yRb^D##CI bUñ:X,G)p94 008 `)]Z6 78Űm4TEhs^*GpAr<B:\|uTAyg7N1l>S6p,J*$E4pLֺj'L1(bFԨYFq~gϮ/x gҗt Fxы^n׍7x+89s@1cP S;=pSk_ OK׾-kY IBi$5f%5Rd46f|եbiX &b$dsWя|7}˸%6Ϟ]~CӌC )DҦ=U~B8lû* =t jzLO?V@=#HW״ IDAT YN:C7nm KV 0Zx&Dݽv/?pAp #xm}?O)|:2bgnf\<c$qⒺ\ϊJ- AȪ0JI/GAjUǵǺֵuk]Z_^ODC5g [Dɪ6 ,,С"tN;ui5kfHA&̱ZhDzk@{j1]In^yIS+|?h:uVC%LK Yujb1B{Ʋ TDJX qZ4a.wKz\5c|KI R߳MBfhЄ{! sQSH'NFu ḕICGjAs{6O{s`+&Ls`uk]Z׺e}%!#swn \Xa{oO6?%d2.7-CcZ(DCRݚ[ZZH/"[7#ൽ)t?$B/^:wqn;vC/Az2?Z%@TkK)˜ H$@kтV`&3fQ!%;̬M.bjCBBqFTαqA(.|X%[_#pPwg+Wds MlvCJ5jIAf\:>,(df[wTo2ެsJnRqQ'{FU/꺯JmZuk]Z׺g}?]Xuhc .MONUHJXŶVu(A]šM,BiG@ X-\,4E#Q(^ mTjB}{|-1 [^+^nǜVMJ_XXд"!`iD\mrq£T)pz$u3 j8Nm{cdhNi H)\`Vұ78)o@N]N fr<+c80t??ŻQ/&9o}LG~K.ð`lֺ~lsd0=]Ja0](2bۨ*:&|%<91&C1*9mzdyyxz^:`]W8OzA/$aB\c2mxSsx xSuhu.GR3BxrI$ NCЂ6'i9,hUɩy[x ʹsrE]]{WٹGx<ðO`eal,b(1%3rJdq'eD( cWMIW}C|?X~~X˗_c,{q~>O|دOO5P*_~z7yG E[.uek]6.r?7x.=U/ F;zнݭi UFKJjNXBTXJ v9ܨ2 nKQN \q~]ȫ_rn/<9~⡇vȒEy!7ph6QcU1ѰV5F:ZjXu \ =-h{Ar&u )MLޱ_ XM 57>I׷^xyb}'79C-.^`H,m݃(Ta>ߥԑ'N7:) {y SH5_IeA@K,cZVQ|ؕկ~z[ o58y$??q>kk'g~g?W@Y 3>}_ǁ{LjpX1x0x+__yϵ ]6vAoӄFǓE]bxHGK T&0hdVzc,J]\^7չ|lLI^D98nbGcѝʵ2CV)Y+ȡn6inN q^bQH5CdF#q2#6yq6{E|3gt9 ex"tFW0GS•+Y?c>L8 T3bT9fiD2;aPWu#[ֵuk]OFgk0oh]Yɡ8>ޯRVR)8VÒWT1DF`8cXTq :4a?Ĝ#o}vO~8Y37,e9.\Σ"ߧ_^ '<ڮ"5[OthDqspKޜEv*/v+NIk5L dl.csHGft67tbdlonpeami%`X0ExHpWX ۳(!ka<<ФWk3úֵuk]:\r !ԁQk scx7~VTkZK j B 1Y~4chGڐ}W2e\rG0 +^jQ:DGǫַV] llUwpҴr·ѧ 0YB+ڀUckk:^l"QdijR0Qj7Mθ(+$c(y֑ScwganԖ!mM92Eu:ȚqFrZPW`v`{w$ +KPe4B1 [f$-7ٜўzZ׺ֵugO) jiػDH܄DJʭq,$f sCDLub 5fH' ;)% oAHJPMl.mU2|Yp59ߝ-kj >V!cu(+DǬ͆8!iil(VkNj#91bnFõB Ӏq hʜ8YF7cow70YW]Y\c@Jւ%bhMPuZL°MdڱfT>\eֵu*XA%xfj}닪(xܭoKbJki U29[Өx܊0%t Xō2e} *"{`Qo–V"^Iv|pSh${|+^«W!i Ѻd fJ&RMâ&𱚲}tLBkVphzI獶uD׉G(Zay,xKtt݌2 =ISht" c ߸^)>+ hG 'CET8u'WUZ)em.j{?=2>qlvq,T9}9$6j_f-A۬~QgM;t{^~w؟P~~|3z .^? wuoy[:|c77:_ c5oؿb?;cEoo*x z hC 6:D.C d.MN1fl6]f\*}#7ڜ2xKA/ޯ#ec^5_ɭ/}9#DOlbZ %O"S UIǪ(;֪t롴麫Wl6i)&Sv8t9DV&R5hnT=4#SΝY?o4 72ί0=RgqnA9bJK[䜗ɨ ]?c lk/>H7)Ȭߠh**mG9.ëZmXT.Xݯ{ȏ58}4cz+z_W??k`$>a9c;1ỿ|)рXsFm'@V:Jw(U1< ),yBe> `JOb$XQ2(qU`{sg.}owweW~}EMBLF4~09/M 6ګ!$k厉!1j&zzAj)X!JE`mSj@e(;$Uj1;@}N [;^yV0Z N3Ŝnk([B51 0O8VJ# h MODpdhӀZuk]뺾ҵ NAnn$wZ[Oxr]ʗ( CR.soa0wT$SG9Z9uk`$=՜Z sC%#f+[Џ1>ه{[6Ow;{*ۑ&n1s"'K _Ђ0DS.--VN C!"-k%Cp]$@*h"24X̃dѦ)Ar+ Dy ݅S-Nlm*X=kMm vR3XV"ArjKk'T:kJ-0k]Z׺usQXzYzJT#_PFI9hUR#y "T1jPnF5=0^AUbx`PpjVJ5;uDY5񧟾KFj3zMN>"xѝl1𣔪 ZWsºV.*Xi2%"e$$ -=0oflFYyE mAg=[' 'lQMSKBX)՘(X&ktu1K :jZXqD<7ȳ Bҋbl̪ITfej#0WJuRA1sW1LYo^k]Z׺+?$G%L5j ox[%:8Au}| sU&¼;Q.4*dO VCﰨ`*SF]~#bM"pkNP*!^Cb:@J-/b\Xpz3e_,M_=FTBMSP=)G LLՑqej5Y}y>Ҋ̖ͱ/ݱRN<ĉ\8,EstGY h^sRi3H3''j@SnJjɄ{LEV8Zx (Y(ޤMۓ͓IANXm=bֲ@Z7V|ȍid]Z׺9t<{sUNt9Lv(J+cB*,Lrq% Ks,jƞFD1p'"ZH] mM?Ѯ@jq P}`rGʊ3 =&),w bqygoy~%{V9y%\;@+"Qqv}G?cxg?c.]o~?n~دwدuSE6̆w 88U^xÜryC|s.qv+\Gzg!^ >femN_Oҋ~_}~?mvwrŖ%-M&@5v5,BJ$Oh ɕ.ݛ̃ZԉՑRcWP)gBkH'mEv/#2,^$'YsFS#j 恬NMVm&0 >Vo"hZRԄ sd%猨2,x0X"/E4t%ڀGRZAn"Dm&io"b1| w=eZ~y_տL髚qs\GIA5!KETJIN酡֖6hq˼kkvdr^2~zcNMozӱ_w:vms?s~ 5Oh_{.Lbjn <{{`^KCo dc;G^_B׸!˓:y}}:O&~~뭔;Dap (&X<;T`,Kˮntj衦rB`[ĵc5 q%OvnZ#ȉISBa1S|j%gSn1GXI1U1Qw531ܤZ];f[v/2l Av8ub /f/f|KPjlnː[H: 0,-5^dU FrG6 ="!`%纮uk]Zuԓ >*G^})NIfT15LbdHQǁCQ\:b͛M-U*^j&#rY:^8}RS 4h}7H))hKf,躠+4D`){.%jհ/)N1;q{`X]u3lmXlm/3\{{R@,. "~).YX,T Sgu4CQSEa3n@hB2M1=uȺֵu/ g K9nE{gO_n[ZS@5M.nNݒѻЁG+"2gS2z{ lSpfZ0ir憙 IPb5ZHIa+4P!;v(b՟t$IxH}u2]wzi7<(VѤ-qaʕ("w%#h |\ﳽIN@h =l ሇ#7ȕs,w躓 p}ZQUM7F| .9z IDAT,RV$kNnf9Q$VD긦#!,И}3.ֵuk]ULg]oڥ'Px1]567WOܡ"rb|yK@;eIrS0ǫSy[hh7D*\חuk]Z׺p^7 ˁʫ{7'4/ts=w}1 dcc[nŜ={gϲɓ'8.\{Oqn==nVMK @^ONM1>T2V 0XbJֳ;^ɾ6vS(5"^%zZ5% PDv@YX6=B*3{O7pOzUקqmzCz d]483Ka 5GB̖^{>`y厭Sg x8L )w3c,PZ6=}#]GhOtS4zTpOFumt:swa,i7?k7a]Uzձ>iqvm/>kp%?w͇>!~X'> Ν;^c?S??XR:>!CU^v._fɾhu"wɇ?an}Qy/.>.^x㍜9s/盾H)1H~oWGs7 O oI 𯀷xnKz]Ι2WT34gHiY6*`5%e*&mIQ. qѿ*N[Fȷ~뷮,7 ~ N:u _c__>1.X>[.r0"ox8wΝӟ4~{{NN8z7~7VxM[7>n]OjmґHAOnF^  [[X1愨]02HYD!Pm4,K*CaL j>. 齄:gF*]RlINjѝ{LGT8.V4M2XqѪ`iJB5S,9UM"xcDu\Y4$䌛d`%t"UȶEW&9]2D: }::YZ;|iz UpE=c>.SIXZFWb^fSl8KJ[ .g\DOP+F>F}!kˋ+ @x&@I[$V"Q !"\׺ֵu]_=1 ~s.c3#|>_>wqwq}ky^,WF{<"~$%BvU!Ѿ_DHSY9Z^&%ș5lq->lRL FZv JHah.3 ihdᘤa.8wA>hYԇ)&e\N&mwv9i@!/Lۀ]NZ +\V۴#4K$NbAPȩ@TG J1R:Iߟ"y1$B"2.AjhB┼ΥK^ Itt@SF$nC;4uMll#fMްzu+fWH*V"4q$g,N)tŏ Jxduk]ZSY̒s-ic#??ϝw_~LJ?a^?={vzO(<{k௿<F. Eǚ? _>xpxOVoiS'Y$tOf\"X-(AyS _p W1!޻IvUg>YU]PK-$$ F C׏`Ōf̘s;{:%p`aLFd $, iFOWUf׺}UZE(Ȭo}w";O~,;N~XnjRYYx2&Sc'd98ކNgIg- M `B3fsZL0}HB' u3kGrd@5yk^v-&㹧cBa/敯|%\r | 5׿k^tzLgOsؖ*oVOOx瓁-*WQ'5 R+UJNG:sE5c>!K/=P aaZ{ju66b^[ƣxEtМ$D=(UqSiba8s]f#FTCRK=B͚Ώ!Yh6x`jk #wJ_`aiﶓuԘ n"i&y<`o$\j$)ݶv.,k +˘{BXK#F;Y\Ҷ,,vhZ*QD"D:J1>T+s!2L1]H!ģ|xL߰s2yk^7+H}91h 7{.Ї>E^W#?#G;ϸ~D_!$/:7pƱnhc=lpܩ!+eHj3GR+5 $$;&y,kP h"yUo;LFRZzx$ yC=V}ߓG^Du fw , t[cT ~Jif{hY$ AZs-BXϒi~*ۖNgǮ:&#3*ڒ' rZ`b#5'䜘XkfRA{cJ 4Phh)ST@*b7!i4{,,ON0)elڣ 5MѰxߴ5yk^:218=:ؕr=zq]>/{x_|T4lm‡S>i}|vh g3Wߍ眬yRk`zssA?+9u 6]-;M,9Gzw59d:NqRKfeݛ5jgOF]NMInEJ9D_N A1}bEKXRh0>̧M t y.Ёu"b5{i@L5B-zի(gtVrݣ~Mac8o}[cZ+·>!>uݦ+0޵zLy\\}c} D8Y;gHFp8戵zYF󩲖=?xEQ+XwjoJWTrc]$M$.)"FB R k(m`ibLMT3~GzޮWR֧]/Ya|xfF)ȌZu!.D@n:iBi쏻c^1m+ܿ~ ޻" 3V<SU(J0>fi (})"ΝYZ%/]t9g>QWC=f ./QjΑ+K@/=+2[k^׼rq'f{w&xǦԺKy[޲ }βN:}sPwu F"\pHa;Wx;s\ sCӺ@ Rօh tbt)@F`tDpETO딮 ]+1dM$ޥH[`+ꤼ 3Bmҝa}=u`#҇2Ʀ22L x~2^YˑLh?ݿkE b♷aCӠQ@dSSO>Lp6;KYTOXH!%p {bh[铇 ʳJ7^8acgo~ti4-O]FG#oYZ\ sAK~{QVK׿vs.k_چ솷_qz?s?7ivܹ^=;<ޘ_ o?mݶ}/7(_q?+k_]tц%/xCk'7D^7t}K7XN@w}/}K7sW]uq޽{ٻwq=檫sq{㕯|冷cmxk^󚍿Dyް};1:}u~я~n~u>|;>KjMo{{>浯o~ڛ]ćZ;y%(n]ʓY'?z>_~3w]GmA|߸~[޲{6 Fx;߹[7/2{;ٟ_~96 1o ;n|~Qx=M??׿^|"&b$+y{Q+o|%ݰgg~q|Cu~dGN<;v3&?MOa~~#L_e6>ud#mKD)fM,hɴppe¾;rxe+;;;jk)e;Dzz ,:jwz7sRNN2LnnLUF`߭|ORmჇrØSc4Dtpdҵ+V~Snq-rXh !J|6vu '2^x%n'{ر!<̓neyQ"9F$Mw#|Hf Md@j:\ FK V$kޚ*>v1pPI$Fme j4UWz 0b!wVb5+w#gWVp`&cuuh4Z7IŽzihB`pcT!dp's'EGd$P=ښA]kAFIbtI(V̡U.;3.-.@lbR~?>9n Yg>!{ +)e Se3Rk%7C#>fe}:c2yk^=Srtu]ǻ.[;;oÄSN>`_ !. hQ+JA"QW 0A"Z#c 'l`=k0/*!:L7Rc2P툇ElXP(q{|/I, 54 rv܅.D`Rx #'Ӟ,foRPj%4" Eb@7Z$A%EB" a񁰐3FKXmApQ+y=8QHZjHIY̋L0sC|yޏg>Гy9\%!pdL9]x#~2@y58a1!׼5 >1'/v49soj.`n˿L&G:}+n Zݏ)=*:9 ՝W@SX"&HT|˞,RRS-tU(`J5׌{e:]kduA>aƫ &Q&QLBfuZV BA0v/k#8tt*}1/L.r[hA ^Ag: yD%J1&![UG)#>VA&eta*? ,ӳVRnePW8WNi>\_&jm'?Ʌ^\Oo~[z wLRַ6#J/}iSKݭTDz*T~޽{[Me]v̦{\|ś޿+'.?7xID_/~[z[Dx!8&կ~n1 bbh.-n8 L(}@؀1^e% !!v\f.!gF+%M` 9n#ңO%vѭs2c/FB0Uj~ (iUj5dZ hE3Ibk_*ϙ $@j9ćsU(=:|(FRFgpΒتXvӥ&FpU,6FDFVE,Cx_P^/;7SI-Ftq%lx05g}1w/x.I:.O޸f<~j,|_Kc-.*:n5lRkm=a v.3Tr19i%B fn^ܘpG*'btDBxle .t#VV2n=Yct) u $ p.CDrGF$HhSh9#ȚI9R,H]FC<2cZ0 R0@6gE bCFR%zumLV1pw|ҫ9y?x|3§?}9a|a*-ᔓNc2 ηELm[nno1+͉,*Թd^׼uwom75N|_~7ݬjVVV6x h T7+.߅ɛ.9@%z"ca\ gaZ@%Jl ܮhc?K^0fd BbfW vq"cZpzJd80dRȋ)ӟȾ'$åA%]TsXrIdoܑ4#D3YULLhAJ&,*hMnB/t#*ZKcb=ti.`w*kFJuLMV%ˬzQj!wF|WqƞS+oDd*<̧?Yzƽr+X>Y3K"HV҄>m#ڜ5yk^䥲aӜsf޽&oG>¯%Fw`bH"y=+^Lj~Ӏvl{{˲qڒ!=\=\-w.ڮu82l+G'?IT7./󕫾P ISNL-.T(UK8bg'`lؔȐ׼5yz`[ ݯF' >7Ꜽs*Oy G ,ޱW~Mִj9qoZNV>Xܔ%ԢTo]Ϛ b1D!7IRB ӾZ+%/RdZ%ʪO+LTn}2kͻO'R2A'F4v3dԾb5k>ƛUa:3ü`-; Ѱ4R f܅dz7. 6:D"$j8r"N.ZxMLƅDn0_ni/PƉ=yf'h.ʥسfZJ&Tc&LJ)Sj c< !ڨXt=bsι ּ5y{, }}+++\wuZWkfCc*ќ:7|@lowonh?"ƽ`z_}T} J<Ħve7>9_xh#*^kIj 4"/b TSp{X&w4g*aDPa6 )+Uz/z*W&"h8)\Ø֞J`nFĀōVz3WFeTUfC4012…,>Ȅ4RV?ˣ }sSiU][!7 Y-sW jJ:_Z]'`)n-?nF>ou+Uo| ;rT}k[f-. /O6MWkw8xrc[ qmZGtX$a7q{e}Z#Ibn'C8\¥`@#R*LQؙh~#g75SKmZA32`4X-@ ,Dv;_ $CSm7#iZ$&-Ps›&HH A=F&v39V%q 4@SGcDN_khPE- ˪5H@R):.3}jAZkIT#}P@dL42QN<0M,L;D~duJ^XFsZ˙qtrA>}~8/A$ 293߮oZjyy[\8S8s:b;Xt-!Fƨ Ld a9t)\f{1VkEUƫB=. YXmI14X9[gmǘP 䮅H:1@ w }I2EO(e/R v>S>gN}F ۷"kf:1f1g`1^QZ1g.A׼5yO9l rСc6[VWWY]]}@V4|~ĸlѿt$=kmd:$i5c_$ܨ:ṁEggܯEHƜI#cxrL@4wBM"5]ֿ0#ⰊWV&"U $JKwةW1 :RsXAtK,+fI).S#RMt(^ ^gt4+Ck˙iHθcVW %;Nj 'D1ަ'K%wjW3* ->GyUzF2bTG^b$=1عX]QV| KpF% D+YG@Ef[}m&$K\>yk^:>sT6m:4=YYYapn<eQ'?!b?uEdx{Ol~tZ}))IRK(1A`rdh+xP;a57F5,iLKKGlpu5 5}Q  5DK@$IXFT5\#iV0e REaW6f"%U@CUrĨh X_hfLdeƷAafMa}*fZbm< %oZZA*Ҕ,v=rm0m014F~1g?{™d9?yb^cdO@&ƶAnuH؏!"pzk^׼ 6Ç˿keek >et^Al p{ Ơ, }cy7e@FmqWF * @F)V9YáF#/*nhuf}ke .MQ 0{I0w#\=B%4E%5W/!e!kwCT)«=&UD0J)gMMJjHՄ[X БU4Q\-=5kpƯ=VLjY$z4%͝#{Tpϔ}\z uEWןO}+|.))9;_u <n}>M7Ǝt 9ciȋ7Ըs}g׻n-~;p5pymu-/}K:K/i2X wꫯ>.gt}K]|u@o{| x; |*PS=?>g!8&rUW-$u3"SpkBZn7 `[?]:ߥM$)G IDATxˣ.:]xEZQ,vHφ#xK0,+ ѥpJ3@4a>E5JbXtA 0c!])2V`R+{S<1^Zq6pzESd7s(}hR`dukcpA0rDz+Zrx`/#PkR+rNq][75 dqs@Kt9k댃w@]svs픒ٶ蘐Ia*c\;xnX͂xWj˯'-gugu֖_g>//4[>6Mc̀qA9\'B,L;֊>ɺ]hcWsx*3h=A~ɸ;]w3 =RQR ٨KυcSKE'w".>*Y 0*k =\~Z"xpNs%Q G]z!=RZpHW]J0`qо FTYj4VJdBX Z4M{$ &X7oOVP+IE5(f `JDFcj #ﳍ%bڱ wㅩU|QLPiecu?<GnSOT5>Fk;=,s}zD2yk^ڈF=Vn@0 >7?Śch*Gwg?Ywۛ7[\ ||?,q`5#[`$ʤ'41mژTjQXH!!{B"V+KUT3NE=ƒI(Z$$uh#TN0rpc%g/=}d&f Lq "`ƔĘj9,,x{H'eF*+(U{Tv{j9t1G[a$KuFmc 4< Ń.H1ꊧRXZ1IuTYfy╤\ XtO?SY{~ǞƵƵ7*.,#MGduDn8Y8 c6:7yk^]nm󜨮9o1]vm X<2rBPuΙЈڀ>x~.){DG1))@ 5r.Ĝn$LkYs-j ʐUA,o fjKRO2G#39tq_)TeD7h]S4g2YfZ2?Ր2:F#Òx%w ]n&("䜎N:Q5yk^wqRA.03r#VOR`Jo> 5ÈuMMzB;Jh>ۥYvC8()iְ:j-b%27Qj pR ċ +_ $g6(gţ'"47/aP`^)`H)*{FDmk!RmIupm@.CXcj͵##%c"!wx5Eica-P}vqaB}L'PV'c. I#F ;XX8m?m˘+YBSځ ZEPFΏ)$hNmCƆ6Z3nj`Vwh\Jˆruic666X[[;03?3kkk]ݺ:U?S?u~G?,'@#"t_;mX#uJIKY1$)p( >UDbam"h!8b4x-pO13\SܘHd\j?t}xPA'ػ:p͍f5D@e(b_SP̴Q\5PyQpq$)-)l^3 UB_SK  kWJ7$:`p/s,DeN~ұFuiOB2 H7R^P=}j׳qDFMnHLH%ZF+$),$GYkӋH?k@z<ꦛnZ ԁݭ:Ɵ_ W]u|+:<990G.7x3Ϙ5Yc&vg癧GbWj]ʲO,)C3ɓeRvm|FzRPȾPb65qit#O@b(-\|iSt$yrJݫVƕ4ce Ѧ,4}Lh5b]q'dfaD^MT)qx$y)6oH-ip-)tBjЫ\ZdO6 V#T2|ZNt<|@h?g‰'?yU6.N͠0ō.)=KcOm *x]zQԠ>nP j&J0A YJ hU^ b, /}$$FG!,z$EHꁘV cR *5b!45*Xt9S=,y-t:D4bwYJҴ7JB)2N@ݽi_Nt5IvL|`60(9Lsmۧ)C7z &J"ӲfTf3u4,׺Qh/mKTZjhaV"UjUZyI4=KQDxg>B=g0N)<؉sn5067'ˁ{9!n'Vj9W$) ŒޓTY,*[~E3H[ vL)/XfKhJH5:b|^R,„iV7/AR&i˙/O%"ǭU&\5$_$YJ 9\4m' 8D3{TB e4ef 65AF TK2p (k+Nw l gosb:Бv9ӧ`wwcJgJ.v͹bA|E](uZV'4!kͳ#VQ_Ӱiϑ;iL_N,RΤW1ZժV'@/oOBCyjcc=yW:\.uqNįگus5(ոᢽ|>-oyw6__2q(ѿ]{ W;70٣cxr>O/q߀\;"ɓ'/zȗ㎋f&|J.cNҠ7$*xXTPQ6pr ŮD $Q] y p "p L"#vITF2i<1iLJ)4 fHW+baϫ 7ғ*b h .ͯI"\ZXP  ÂY.)*Ō$z͘[ӖQziGnVvwq: 3:Ee&'6uvvΒsjꚱ b<:A3f6my ;مttHJIt %MDUǫ)wHKKW!@F+޶^r廾V[|Ǐoo<밲"7߬A3^ _Zo?Ι3W;p_~_*}k/ @x`)t|)tU~R sڏ M"q_^ ǀwEe' ?F1[ "FTó)R8& Ya@ՠ$q@/{*[!vǭv@"tb 4MR,3o/iΨ'I8UA2]2ɘ 0AN@ǔfp{a(}$_Y{kRj#CJŋ?I%Z ӘXLU\љd, ;[2mxN\uUvbg{{8>^Cno 6FS0R^@mcN ZVLu`0lǩZyi|ShҀjUZժPܷKn&^\k)r˥m=y/\|؀πQͼ\Wr  F/%IyD{Өs]jON8MÓ4c2LODZ^FY# qNm*Q;2&|n.=Z.w 4gJ-Kͅ鹿J{nuFm-ltrߣeJ]kc![i%؜GJs5Q5([_K].Pdml "1:zǎr9j ָ^oklpk6)άѧj1J-X01"C-896_$(P9nJJn =v* 9VxY6T ZR3nO?Qmr4VUjUz5$.]x _3Fe/{%=(g;@4~{Ȅ]NE [ݨTA_5FLrR%&16jQ{4췆#h%K5Bli hEڦ3S")R+R`7 ځv,;`Ь8Q#%,br(CٕN96 nT j TY VJ0?yҜhx~ Dwa:R*" Lvb`X .'X32;]&ݔ뛸Fi=x-ͬV;p@s Fm~ȪVU yhzBwoСCoLŹT2> hej"I"eF^#E8V nL a5f JMHjAK/,D66/AS"cVZQR ʑ HPGys*ƀ)PKRx/  OxjqF3\Tt)+u)F8FE0aQ]VdUaJaSC!yADYX Y v+q.b+}N|YU#د7GWJ ~)=kc .o gNRII-p&QNå̄%ДT7s %H'p?\?s}577p)>u?~W|{w&/Jr7W]ɟ_Xd>{v- LT`~~Sﹲ_. @GזFS%x MqL,w0,f&)D$,&2Ң} R%3ctY$4SE# '`x;&ƧT4X*)XR)5VLCA 1A@B\Д! EDQMAJ I[w ^0DcҥIٔdB&×+Xw]G fm\R(TSwf :g6 : eY%#(5;?W&]JXߘ Y, IDAT5@믿E/ĉz 8z(rˁ_뮻;밲GzRN&yO1rA#X9}?|>'rQkHPra5+y8.7M2侏%JUjUc_ƙYُ6ɕD;pС~ هֿv[zo`8[Ɵ&#q"Ӓ27NWE'-K"R%JN[ch&XХhkFeJh=ri%j"IrkBh!ib9oӔ5=J](emZ[ cRј7 5 %vcg x 8s1, ޥ6Y{s&KS ھ(LD[G@naܔ.hR4eDCg3Ta1sd:]xRĖV9rÛុ 5P[ޢsjz%SR TMCܻVjUZժVl{`X麎rR%rW?}#|+S UbJ_kqy"O1&Y^&XV=Q-QWK6g?i$~w)s̘ $TB$=0R](TԜ'^Vt*0\duvlyvLqc( E^T_PI;+ ,ȵ0MΝc#LJ,|JΎJm)\J 2 P7>T SLl>9|kkE]W+sKLGhWj̛8_pu$h3f)&G0@t3êR9k8%Mz& c2XYw;|klw7hAON\x5wZzaPe{ bh245#lѾy?VUjUO zӝ|ԡM_K8G^׼#3뜞u_[c/ǿkDU/L}/\ٯa tɋ%| ֣p}Τ ÂZ-ܞZ]8t}aFi9iFغ^^j72SsҦ! **9; #B-GQ"6aI`WrJ]y'/>fC-Z\j$2qTbB3j%:1eJ}ºDIBIx62C׸ T%Wz&ؼaUf]fE.lnn9v,ZG/b/8t'gϰt:]׷$tM /R UH S %u|@.yͿpٟY>O58}4-|sx +r;;$ k/mf oo~t:u we/{nf?4|-pD ? P}} !Pv:|_|{2׃pرUr}иZcwt'/f%7'Onqh!(FӮ!{5=B-9R͖[~GCoHNXqҘ؞Xc4sP(Х,c5-sj DV0!!$Q,(Yc_KiԐ0js#fRpE‚7;zkL֮F.ud W_} ΝekkahayҴlͬѨ}\ͼC?B65sׇ' baIa|P#hucat4бwmv]7 ~~'/x x;yO?zc5dn7yxP#Yg.:hfoFU_էuyWmmmockk벷G) GK:qrwz衋bN@<5ǎ[4 h8hkQw& $RIxL+RtGR=6e$x-A!/yLaZnE*P[_F[hZFy-T@MCFDNuO;w[E# #Ŕ@a␫#HzͤšF tȃ3A9űwGtZvCXK|> 7"ЄȕK1^W9g:מ<OLO`rnrs<3ڵ"i4:DH<^(Kc $YժVU+#G|Ew|;3u׾+nVu|ܷ?%aXO T"nEF `Upk CGii\F!9*O2u^M| #tOYk3V uŅ6)և$H)2)a* Ќ,j!wIH!27h&#tۛTLkAB%q̩1aQu*%\-;bZ H8bNͱ) HrS"JU!J:7БfN•|>gcm9s 6QevgOXNb R8rT(irԴ(a"`Ҝdq̝F +_K >\VUjU_f ||rC3u{O3o~vvv.ήskO(bx6c X}sK_ҁ>ƩS|_ gΜ#ȁ_O~~`oKWVCឭW ;oy;ɍ75u7px;Kvm5ӳy>} B VԪ;#~7~SoȔkoxM\)?gzZڄu Q`-qy$)>}s7kass?~N8Ç:/?kdvm~ޣɫc; v|XtM|#fOſoV:n5\0sݎ[>F7Jakv1ѓXǿ ߈+57b$= <4$AfM!JՖ0nx(FMwݞiGx8FD*;Y3C!D纅ׄF8+3ʅ] 1fEPX\CigtԖ1桘x!lllg|2!ÂRh<țGX8ʡC'HCkR#$iBaۋz[3/]QW܁h 6)IHR"/$2N~}F&SzNeXcXuhAH&n!&W35'&V*9hNbc11sLHl%ч?.7Y5QǏ?kRɓ~ĉ~Wo " ppfEeokfLS^׽oΝc'D8|0~n4}\Zs1m\Z>|8{?AhI p[W+?ygX!a^C`M259" o$إNd iTrRfCm MŗV Ǐe6mr§?}71$q\('(B a#GaoB3;[[=}N3 srjd P[nJVOS4ѯ_9zYL6OP%\a"HJKޔc"l|.򤂹>aH "1k(21@ݡ#r?rH)ͱjL,M4nq~zܯAׇ1^i.eL[b457-SLhqB@h󖛲'P_}jUZժ3mh37_s~TZ7׼5|sЇ>W)/}Kyы^M7W_M)%tbSr[E%ǫwW6$Vx2taHƘcD5C76Hu 1pU(P)bdB`{^IcZY BP*Ț(eWMyw. KG>+_r6]˿I0&)'J !I.+^Ѩ1(V3Ժ %Hi϶˟>=;4XVZ!&A}rj 4euq)fbϰvlu$5jV%,SjL6L0I9Zd qx6CEQmBS8*9!)QXbrc@/0+CaRBEڡG~2%ni7,ҡ)c. 4J5+i( ա.1e1q0_C%*;z+UjU\[^ͮ|/ ָ[x_~rra^Wb7n>i`oy{2^5_=?h_/%!z6vYj9\#SK${[pDUuHr7b@bxVZ,eC9/|sgo_(u8uz,XH2RNH$kB :*prB?JFgO?w~wIC  d!RxcŘ7"^flY;p3_7")!:0/s'&)lnՅy)|RLTqP1!IS[Kwj -R(9yCg{(kJNRBpѰ.Vi&BC sAAwW"åameAAK)&o#yX:M-tZժVS8/9y7f_!ij,ַ->rwrsyD]a`ccɓ'8~8ysk)0 r3Xr< *|T WdBK~iItX6} kF5 Nts"xz7֭7S$kQўZwQI$w*k5;wC3Zu<d̕ݝdFi,CA,~iNWv/pOuK ClL '2wƦíi b&$RQ/o_`L2 , M&NJA w=(qW{~4Y 4l4}S-42eB@.Ҭ+T7[{D!uGE.g.A*ձ D}Ԇ!(g)lݜ=,ykǪVUjU ߻W'>ωfW IDATb`XRo7ͨPT!s:=}] ǽ~Tzaor}-\Kĉ|Ziҡ͐#(BټAaZu aJH0 0 a["qpj:t9RbX@){_:ŹtJNaq񧝍>(:hAw#l@=]}y& uJY{rΑњ3PN)-7h W[9uS.'{ @׬xEc)-f1y 3!uO+!37&f1аTNsX E# +z$uZK3v>sK&4)BE뙡)@piAB7^οO?OGG~>;;/ҁ_oo?k(|]x?:􄜣MZr1 )%ֺY)ZCOxW󥝣,i|OÚ-i<;zh-\acc㢽e' O~BNF {yҾGFDbtMTM@iNa8t!`6护H`7kJAIg٥dmcVnّ?1WU47Mc)?Qg>ü5QCS< Teٱ[܂7^kr~ 7u/ECA&=9):H !lS3 K')BHzoIӒH$Ѧ AzC@J VKo'x cNeZ7*X5*I9. ЉxD_(9ݛھ}ŀ^zӛ޴~'Gu'x%ի^qJ|u\:<ɗίuGwyΡ]L ՄR8 / .L5wdu&ڿ_Ad{ȩ{>KB {eU[{so>2GUY%cX6a0vݎ"f by&9xyg_1.]KSBM`ˈ M;?57~7eIYZ0Uoy$5̳KbDP#@7DV٬f( d1,zI =ȨWaRܚ筄 !vbx=yi( =Si(SRH R!jՠ|a]x."#28}1cċE>F$Dx4OOr5ؽdT(j  Vp7kGs;qӇ#a/XG@TY do1ШCb"oa D5~sstmGM#IWKkAb?$ήQڥX]^eaj.Zeb1 ! FQ'MY2'yv(*n uGmBpVcdh#1KJvzAB@1J.a;H ƠM 4YC  V#E>M +sY,_540Dru\\LGB!Mj+T=T01_/F/`ɧ`yvW)X:3:!dϯh)56DZ50񉵐RC.s=u&v!;Gb" ZKD=mAșsz)Qkdd X9%OHV a̤VYfvLIa~m M3I\LԄַgXY2:2Z^/}~j)EDJ"zt%bXAۉc1cErÉlo {~fD5S-{3\~&-j^qfaap,v ŗBG.9X%"+xdfP 0|O%{p-I@>&֘X $\^JPb5F$ErHsMH $ꄠ&ښ5/2 'E!j~BwʱS83-cii3s;vny7[eIP+-k2Q`1Vx& 2_r$ŐLEB)~nNRJ# D,z}09I(tu^W)&D;DuEbHtZ!Q<,r5 Bŵ9:t6$.YYs!:p]֛^Kы'?9Μ]" G8Nif*-ϟu85#ZE}؞C@N IT([%#1c1 HjuǙ7<~tcT lY.W>_He }?>,hQؙVU<>WVVҗcqpyuv_5槽"{/!DDU"B#m[D4 3pqJ%eTm1psN#;3;_Ɏ@elo䮐;d@Br&C@K7z3;r?N!d|ONT(vx9g3 !R^yڹ[0'X[[8Qc0hzҲtqu D=ȝq$)LR ׭$"T@m׮:AHD^ on޻JHH=}8_ʣ|oc,g $4tEr^S,.I!'71ի-r Dl ǟ~Ņzz?M#Gpvۿ'NpM>p ӟe?oMw},--m?M?\pÇ9q9rȦΦϞ=#?~@ˍO?O?}E>}?M眹{7}#*3>On>~F/؋y_p~%+۶KTG/;>gO|{t__SJk_"kkkWt-_unnoCގ Ǘz<29?xl?_x~>uwdO=37qbD>-Цu mb7\jnN;KMIҾNdbi}nQ6YK/#?#wo/+,#o}^ W?vRI. {3SkSOOo;dǎ>3?3~rI_`?X`&e~~?ʯJ۷o^aqnmꪲ!d?5V!!zM ZfP `5.):˄PggՂ_Ѹ<:`)t }$K2g獽 Ǐ_$Q (KkgSS/0, 8Y:</{\\XV\SJ:uj0zq21%N>=",ނJsg *I7{H䮀H14hQ#" Sv^l\ǢU#5!\+ `NDUpqWj,-g:{ɖXmgz2sr$7]{393# ,.>˭\z fƮ={/js"ҟ 5Mm18APͼ6LLL011鵲MzLMM} '.pnΝ;72)pumz|333ToWUiarr~c799yEc4 ӛg!fff6gq723|O۷o'tE055E׻qsy1?.waΝs5lhu޽.؋y[5`ٶmի˝/4vSUs1͌;vlz|k۽ο#|ɓSfYeyԠ6k/`>'"ƀ=[d?&(ky>\O\`4Rh4)coHy1ʶW1:#ARY.9{I>>{[fj373a@%)d)z)o{ ,,-lcɓ(Rr oxM |vbXo;/o};򅓬-?} xQ?^~~\R~os)ZZblܧZgeuue/vhiI!k[mӑ'9ɱX6JZ6%2(2S{78vlz=s'?ak>qG@MQ )1Y h;M>YtmzՃ0m eŋ0Z/ڄiz59 Q)hE?53&qU׾6/SV[zV~dՙL)Zhꕌ(0\bDM6LÊ޲FR/ɤPx̉gxiJ/Jc}ЖtܣH`.X]YczbG}`PbqZR^SGɛwYbJ{V3AUna︾?c1}|~&f1`v.s%}Q~WQ+ \=Yg=q'჏\jt$DN~..?7}҈k[WBfebӂ|S%:!,-&SQ=Ǣ ZmpWR'F VJ ̡WL23>;vs+v{5=>$bV5+JUpu yOk ې~f{ '"fxz^RӖuh ު|%WCj%ZWdU#1-1 ]b)L6~!yL@@bz!5yO1Cm d'07`30=s7 |kOrFÅ3? fSӜ=$ϜbbD d.&Y"yďꎘ`mIcc1c?j^g5#5 3:Á [^Jt5O(!)$RTVj؝S V!"i;c w.^fe9o>qG?CL"j:HЕBAqq O[xJ)#BmX66"QU$xzGch;t ԼtϢek(x۔bhĐtP"XD+^R1Q90EߘBp!sJ&ݹؕn=;{Z۲p !"qm+0r޶7!4y!N&qah|0y#jnh!)}1c1c/MHQr1ڶcgbIzJz S$ʃxkOk4-hRݷ *:Cո+`愖>o(>!EE5 >)ĐPra$gU}a_T̍! -|R MӸn%J Vҡ*~JL)>6Xfy֖N3g7mX[rf"# %4\jA!`BՌ^L%8$BγCX$Wfx O~q^y+8zx,lw93Uu+YC}X BB !q cYWOp(z~1c1c񶪟඼ 6J -i><8_l\4IujX誷 eF=z iCuNDmb@JD(N|P̼T l\s&w{uUqf,/psN#M&@#bz=.^8gE#(UUڶdk|ASH)cﱺ6 Xۺ|siKBA X[CL?[bb7px˛Vpcz^1xU+2=WDVi[."!E!t8ŗ;{ǎ>LW^%y/(hfja'HQJiIj˞]LbR5ֵ:YTݲ׆w [c1Ƹr\͜冎 }}V|3_ߏχ1éB[6>Cn|rk6/\kp57ꔤN8 T=/5.RFGn 'VW7- * zڒF\F.j$~ z‘s0w$"lY4c. °2RL$ lbb~MӰmvosRWUt.N/h+hL(s՛DD!F@G-TO$o? ZCBPOR QMmKuPEMIkݱգLwXwsq7v~C-m[n]QDdyRP"u*詯 G">o`8i7j+?M~ٳݖoo}<~7JĶ: 4c Gz]00 3 t Aaޏ, 6cŀ]^炙1 6XW\ Q7XaVS]nI"z]vٶ"bЋji{-pALG|Yaay]H"L}P-,sql 3 IDATcE6t_RނWp(jDcQ5&ŊWë#`=''X[H1a꥔/tAgB A옞$7 ށ" B贸otPLzcdHX$zx+j}-g:.2)%ziȃ=t|Rĉ'xi[jF]Y_jAm~C}l8Mc1c\ 2{}g(31T{H(V4  vz^U\⥱W*B7hR8$%>RUL_%x;$FB-$dHHҵHpbtk7gʗ<,-Z̵mVN I^$ W ){x7/I: ='JHI襶Y3d-x%AO  ht'J[$ "MOl>=N1{̮b\%Ĉ*;JD,,@,E0JSj Ϟ}7BL:%]G)eWfbٶ};񐽡=T+sJPs-oFSRQ` muA6(n1\58b!DFqKQE,ul^SwmRSL5 >qǟx%e^fw 5ЉCX=bJ6~n WxYc1c&j!sտ)wxSGrٷ{y˵0_<{А̅1f-/Bn] BBj,..ryy|ӧϐR;F @ IȰj0Pj`Ɋ٨A TPQ J{e"Dhk[0/ĄTH@ jY]B@KjF&m[B4}b\䕮0IG閹awx%o83O?(& !*V@J H[Z?*B7VÌ;c1clQ|b{km `|:aޏߕL0!V+WԧsAM3W^ %#AH(jPԵS 6.xN@Abhb™?v,ZkݶAL5 1}gBL3"jw`zG\8]\̠0+uŽ ғ;8rqRUBu f'>Vi*Fϣ Q!2ȭ(Ubmܸ{ 165SC02F[ F@, = RB$XS'Z$4Ni 4=6td =>c|S/03ݧ I\(%Wb$">J"^ZaxXmh ǎԩS[O0??`0lsaqq{lˏÙ3gx駷8|3c Y^W %rCiw=c|N5 #/OO6]v]ՋMDN:H4]KԌwLk yζ D$^: bC#ijt*MT=. & zfY\1Mpm 3"&<@8HP F BS[}LbDwj$ױHц(SBQ ) d $Ѕy\dFOh`۹ׁF ZWᇏؓ'iILZA<2D]X QպcDD=E.G[B-?MӬna2lm7cwHqnnn>v}jKεb> 00.-lĘP(&xUZRՕ/Т#a5ۭk$xkon?OBDR2=:(k)qr bn%ZrDIr3]G.?wa]{冃3?gΜh v :jV@T ȹ%֌39_4$>2QoR!aM=@(^ŠGqȍ (gE G1Zr^=iZIGzNL_fVκ|\yu"xUW &ah; 3*/ePxR1#nwnJAPz)p<|;f}Νl):+b$uUD %ֱj:\!h2!D_G`ffg>3ameR|ޏ_F7+m^84Mm9z}\\̟jЛV%\KRR֪hqqGרT]ІGH7C%qsVXlղFȩt@Z)t Z37MBcU< Ħly=7$Y1c1[nO0_Ds[s_^b=@L 8l Bj]{)QB@ Y n ì)1xj:M FoC^2Yx7SˏBd"ڒ@# ݴRr% QAXy [9/˨B*HVA^Â5,E RDJ@-UKh$$\U1c1c-?zh7qWcx>J% x5À]uv-T1$x˜<!y)M򸻥iaY}jJ?F4)mjEomIu%Itm!5T)bx@hD/p + 6Z;iRYOWjT ӷ Zf|\bB (Ya޽?~ B! 1zK~iv:,$++k W:[6&%]8t)V[EBDSbaH\.jۜjC+2 U~@(KkssR1g3& c|c11 `b\.[{_xWb1Fw\{0HDm0vP=Q`=[a1-:ǔ (E C-x2{NSL'J97?O'!uS4@&h Faw<1$lo|lckֶ\X[]Asan<`YzS;ر};A@sz hQ&0I WNJRL1D)fm nT@Rtw(d-MH$ q|nB @JP[*0ISaz6rc.VDWF0~>q-=o֖??=ܳᡇ{˿[~ ;FQ[={4/=pXwЃއ|P϶x߽\^AB w*5.j:1rh.*W_9;șbujP?JiN D8so|,,ϼMw0m'O?H)봀g>EMn؇NR!a7?7ncb#0;$v s>IBGe*Lﺎfj_ .Ո z)*<9>u I۟Gv>"*V¥P(UY/8p`I +ӌ`ɳC_C f 5qMO=1vf.GMQ&qnHL.!:b/zm"7~~nˏÁx{޳;__cD!o}GoE4Ux%`NF%BGx/"'O,oܘ"R֕nKNLm8VdԆY jVX3!yp*! =*ηuB7If}qV rn&+U),))<`8V66 >7lX+'}03;˶m۹|"1ع%ڱAT`j~z;Mri$| (q<1'Y- '> z%(֑BBnf9vfz}hB&`hRT)FBӚmtQoR~V'6$sXʈV QF4bF B9R" VRXD`~܍T@LFr͓Qe%HmVQXD9c1cנּ\EjoU&FJ.P?14gu jΪ'Ъ`KQF%WG.T yVr_J[;4q[s٘HjkTJDwNlC8G hC[l`>1.oH%* I$~ X]^ME;eϾ[ً,A"$jT{y?5Pu4(*F F2hEVxu mdd#`ayL0TwSqA|%fiԘI-$tCqC xlyNK5Hc1czoĖB"_^o~Z\>d&9p .h? [iaȃs|UYu^tEPl.Gy Bu^qaq0_)A!4E3IM^cG#w]|k' wt550v!OP֍NOVY648%6:XMKrmpZژ "A)m؉ŋNҴ3!6LWYQ$omS}܏牛BD'3f$O oVw a]3{ƘɃ U.gIoŀ!PǬBj2Z2k@/? aJtC >/}i~[z -.=z??pO~rˏn1ޠ.X}~Lnd2 '1}Mtp!†JTv_WA~d "|l%^77Wmћh|%?'5fڨF.|PW0ڎjWQ"mCedbsgVVl5H>ќx:ɞ̙Yp.N#" Z!(L.IEM̰:XcqaPbrqP 5fm{ndv>VVҏB'{ǵ4:R7ы8&A$҈&smF)ьjR\"BU fTRZ)"% m MBsvWi)$DmKju&,0t 9:KLdV?Fx*\/?S?`ǎ/ҖCqС-?wuckj-]iih>ZzNr:$Nλ>g_^g}/ת8bq#@cw܂a-I . bh IDAT*X t7ɼo9!Y5% 4ՆY/t՞t'NlCN8;5Z uLP$.k|qbs5:)@סѨSuר ;. \H¡$hy0+Z A`MFHb pwJ 'D멈w` zKzrq"$86Uȳ \s5\sz,p!_I-ȩm7+p'39wѱ:&TPUr2*tN)SkD ՚ku-ֺ91N\cbꄨfc l7P$Js_r'7~j!bjU̝#E B).ᄵVj{4,*NԺNus=Kw1L|KE B x{IJt`؏G@&2rI,s:c RjT8!H6qN)4qZKmiRFI 2At4H i#:J}t\s5\sG(6yS0,3IO>LVUux @Z-!ItOj,֓5dNJu>t '( awk*grzLӽim 9MXM MBm 34<$K\D;n8Rl_2E5롃r2s6dG.rW Tdv*qk@s"ehbWS-Y)'ڡnZ-fmSwI:""s\s5\gXuV#`aι[s=e%ʪYoE75?")X^&/| AX,ZQ. k:bl7B1CKk[Xr߲I5/ 5chi6`4kuOi Iiɲ)>X? % LR7#SimNi@oճVMk \pr#P1?FjXAԘPF*^Ӆ+hI\-Z|ݓnLkZhnSx&%`qR?CZ(J3i]~&%!acM boNdK_YO]'6az7l58z(˿υ|#_7{~~~hϯ"i [Ksߚxc|n%$_țyEw}#hv/Ko ;KsZ|fĒܰmgg:i|~W~宷L}͝:k">hEtRм W=$2uaو9ԩhbdH& J4H"%H8rh?;xBQݟ u^{eFX7jbLNPr  1Li;pVZMKQ=̤IwR3QPZT,ρ žÏy_qYV,jb s޵QÂV'=D0t).L5x{Σp:O*V'\Xi_ԒI2 Kj4Zk9i-;}S}R S6iCZdQzVt<ѻrOݫ:ykxK^СCȏȞ_G=Q>uS`l/-}'%*őTi?[YB+ RIJ;T V<u;$Y# @9(*2x dDLuСB:0/':EctӇD]lA465t dڒȹKX?=| ر;U(R0$dofsڰM8nPwDެRđ餵kP= ڳY2@kQ,*x&|%3aC+tz^Z+=P-I ۩,d NTk:҂/z\vg<}UODM=\L< zԗ𖽹 ;f1%]ɣnBlѵ,f` 7P)w۔GƒN +Pk]mGŨu]r oyI0؍C ܂C;PI>t:$gNx<1rs9poO|w|:Nv RRT(b 0e{磲d' Y!Xң,mv4g5Og0 5cZZ10t7EaED/ֆwSVR4FxKa VzRuw60]E-#@mT3awO_k묃x#oeTF4GۏfJ!w/KyiY#39+}9;AR<Ij) 53SgR S oa5XakkpKKN5>V'd J6uj6'-\[UvZ:Hi٢pd{>2b<α;nQ4ᭂ;Ew/wl?ǰu\ -R*5 )y(Y K)i)*2{*6,?}BQ=X,VU {^"aH\gIx*B TS=~j)@&4>1uK"Ԥt!1up}*zt*HS=6'fkq`~k\oz&}{қycU*<<+2-d+!O| x @Q __.GФV f;1UT,'X^7.OCv5RkR!Z6e`h:s;~:5\uz4IGT$>i-^GCX?"|c@M56Y.^@wqX&ՊhIT!iWbM%J1T ek`5<Эv{E$--Y^Zԁ -+ۗ0uO0e(LzISOtrQ\C :8(Ò+7ZLJPwjXA%h>R0$:>\a{Jez[¾}xӟ\_=.lϮѣGy_]zoop5pM7_{z~G__k4ojy=x= >Tawsq>3)~;}xғ#&?VC|6EboV!,I/X> #wzo#GOBC嗾%;X-?G??____?r&lSV.(F S5WB9GY*^'튝=Ug)"7Jn;lCćo(~\{{8q^| ?u&*'*Ui%=C˷)F_ODZ bJmb5 XӐy"ԌA! quN3dj`9q8ElU 2LKTSEѢԍ˕W9QvCY@,uP PEa4%3& J?|JW.~OpZۈ kの/#sF"p;`/yko=-GK/K/tϯS{|@_ `_QLO?ķ|÷<өe||ZrH`4Vֵ`V:y߉᭻AW MHY2M#SIWȔp JMh6bݟ$<_v V;o8Br i @6bfxm (("7BKvH UPE$`$&L-Sp= t([,YEV':`%]6S3!(TD$pLFOߵհvfh sZ VeM.xUO6RJ.C8rw"6iXs5\s='Xi{^^w>?f7ԧ>O~&t̋nM=N;N爖; x19X}<`$ao{="@wA- sP{HJO.TLԶQ[-q|5ṃ_bt`E ՜iRڽsUzם+wx O}NNLH9D &3br>nV D7%S)v+h=E%U=5:%53otBE.5 JҬPŵG[k鶵\;q Xfj5eaNkɔ5BSmQrPZKwJP`8~﫠eyƗ^|7\AgGW | CyPn~;"\)]?23;$(ޒ2{gkl$uCնb e h4mq]%d)ycdž_k: .^sSnW|~9M^{-??K_R?]AH<|G;3֧;SnE}0 ! HNDGC5ҼbwB>dl4d ld @P*q$#xړ>|#vapL^W@ArfNGRRgT0&Rv@ys>UI**vx C[1󸩧 A8k]L LKD H52'HL}oxUٸ J NЧNj:nWLtʌkz̋n|Ǐ~?~V/9??ϑ#GvՑL.\~|gr%8\3DX % ȐnK5%ZӸƁl#XNtRO?9]T$w%*ho<{}#\c\y/f+.NCŏ 3+=/*a"m (bG~"nMwFaa9PUXGb&ؐT"oN]0el:M4.NZyk{P%E@ýSܢ'kvuJ[cjN0*H*}% 49wT)nf`^LYXAf;FE #ij7*AOY99j}?Ֆ7zɍk\s5\sNa眡+/Y[)vvvN;ƥnE{쪸[us3lդdFkΠ`J tAuPl2{smFQƮ!7S Wԃ mn1%8> Bugtap/>`JɭS.TWF(]b gBixJк+UNxX$"(6ZHhsgؠ9HcPA@`@XTWj eNL&!HX:tMT7b@XT2|[ k<ᄦdjZJ4D88M`7CK԰TՁA nKR\ZS `$fl~soo+ww=v υ뮻WU{~w׿~ϯ|̻4o$ u`^__n&^Wc@@F+=>o_D/]rompOȷ980Z']G; )ӵ>:MtS =,Qꍩh #G롆QÛmr >s(>bӴ2 )|\il-8ycᚻSk9ڤ>qpk#Dn MQB8{M2(pG^lTtY(NN'YN<!kC7Rl~H_IKQXkEzBXO&R ŒZ+ʾ IDATҌ&yOC}6&*iic*tNm3ookp򲗽lϯãh;sϯ^Zoo5pwQKso^L~7!y] ^>l{bi>l˻`ş2|^+K{[7i {27C3LHuCjM&=nj xEEq̆\NʘZ b&6I0w%h}]\ݦj2 $A"RWZ fH`k= 0sKg0A֚b0M ;Xj :Zd}>-l *NDkwKnE Hj)8I;KjWd`eĢeH<7ږH{hXF ǹk:Rp"A{Q0[[P YV4pM;c偕u-^ozxPuDOy5-Sε8V7M;)Z@{(b蓊ZQvWtJ I)?^扇]Daq;֫䧎bf:%E ݥ4[jlKa+%a~ͻdF!ԩjśS'#TlLmJ) N 5ţfVJ($gAm0,a2WmjL3Eil*-:EJ4E4N+sԤO;Zԥ퉕64"rC UtqoX RAKt*:f'oBhgtLq$/йkμZ:2OPUzꪇ5|'fv<ڙ\Y=(*{w=RC,Shu$=ՅHrbtT'ă2>v Pϥ@Nu)KN%v_h5zGA(,ةʮEf$m3]po8 Fto6%IB)F-!9)Y,5X 6knR)I"=D05X8" &@CA=jK2Ի?`u2hs1iO h+Wh,zРlij骕DA$ihQ!n^4'Y.R+!d.Br連..]4<k*sˑz^k+-'n >\v=(ִq1(Cҫ"o0E& "BQiGt+xi#/6#n|N["&ێr3Mܹ:ʊ;kab"/h-&)ΎW&lK1jNR4PZ=Hv9@D&aHbI0񀩡!ԊN/A@)C4h\AI͌Yfn]Jf, (J1CZfK+G@{8Dnkik\q[jkN23$:岧GMji (CL-ϫE))#<@Asp}tk3-WC>Xu]7߼F8=@s=mmg&B%>0[`ڳ9Z6c!Hm 1vz: J! G!0|-ZvEZ֧2mJ{713az 3W*=YϚ,EgdNT-GK.{~ p0?3?1Y;Ou]CǑ'N]NYr_k`b Ӟ?oϯRʙID4;>jkVS&o 5jl*ړw-xL4:$i۵j)ގNpFۄYoH[o}"AU֦XZMȠ 0\hTHwyZ!kǨ@1h^7IޝSJ"EwiE,;3`SRQT-VǑNP$'1t3K0E\# )׈t{(Mt<ji 6LuXI3.RMMG4DYXaWS.B`r~ӯ :I!y>gO̴O1֖f $tFWkob^Re%?ǫ bWް]~gp%QKKl?+Xɝ̮H2 82oX9x큆6rC:2ӢQ @C1ҢWU5ֈތNS۟1=@of=ALQMP#MRz2kTGӃDx$u4dFd {T-)`] 8Wh"VRQ5 xVFRsWF2ڂoO$S-%&xXOB0"֧\EB`KW*chjXhH,Z+A(N{]El~; 5R[_o{EUz{z?>{~p[/l<1 :p^xi1&ӑ$lHXƮ4 nMu5*(]!᭥Ͱ)aJ'pKwh06]Rz2 郇o99nXfbTӇ?i=lۄ0`{cltBbp;sϯÇ=]v߿||a~~oϯcw}!zIB)g=Y}_8:8l n:x2+XqO "³{Kޯ'dB6TjNI]L&L^<Ĕ(U6tbT t*@:JZ>B: PE Z :Yx`) 4%BcE1V'=d1PHk]SHt*_c6gB_F1aor{+ FN1tҢPjl09ɿsS&OESˤu%45hNtgԤX>t{PVқ""j3RjK6BڜUTBatxeRKj AO-oM:=-ַޯv?~xW|+wwo̓%3{w[jJh0r#dl`,63np9ho0n;6 7!Gn[` <BBh(Rխޛ{fJ{g|yy9g[ne~Wub|~7~co馉/؟>'O<| Ə1B |X0p$ʛf//M<__m#2W\qozӛ({g]TGh~A{꽴XOPSEuf9>f c6t/ ,_?*6wc++I}؟ VkC؟UbΝc|dp-yv} Įf=f=sss?u־?{GXZZ+TU5X9 33-|c }%1I8VNЕ'V*Oz}|ѣKuW. 8z}{ Xk Qʫb4rPQ`K C/٘z֭gIzuhJ8l"C=jڅ+F~Q<:'fUcC b TU4%J0 9QTzZVN1 Zl7\{sq\AףݙTQRC=#+\vu=͓42ι' @۝V$,˱I}ͤ㫪*I4'SOyLʥ IDATø٩~ΤX?ձS}Lݙ{heee۩~cwf;l6^obRw&S=o}=-;vQx!QK=H؃«.YdUS~g278v鰲2}&nZ6l>s*ޯ?ɇ61pTcA1cW'oeF=]^>xƱ[|V~?v|6eYRUmfggYZZZ("uX&.q$cCLt/]X6 ~$\s 7|sSձV/҉ 5fZrۘ?6tE'~VL&IIJWDX}8pBJ1"s&񎓷cT;@N;Ƚw};A=".݋ J -WҶ8D$ƁJ%JjRեB ܙ<7 Z&c `[p4&73"DcBq:YcRS!6  >K *B`Z`Q O-Vү="I›T |j!J kAQ Dyު I u AT7D[kAlmUE֧^T QWcMUOI}- coWqV0^ѪƆUOK㬍5Nي:T,JtaC}V.xn`V2m~0'}b$=IӐH222222msniۼ-oyE_zwxE9`*`0-΋ܯpb$+""&`XpEXu1IPl"bU>M\}%\g3kyf{Ƞ мH8{$Y.Tlm7k^[n{XBa-]vx;ظq#:ý/{F)_ <|Õy[^1??ɾr[pߟc(߿29zbӎ]/`ӖyP5LU*WMm<B^]ئx#deQ7ާ؂$g2]n:`l$ãHLUcڸգR/Q5>f`KKcn  9TkB!yġv'Z!ִBb$woWY1hM^$ůc 6GT,hUDSj|DޛoD0})8)u*`I+<9A0VQi6MRcՊVRV;6rѮ-,%v\EŀHP@@oc= Yߗg ? 3Wx„_U=yw}7wy'?<#6l]xwwsvOI<$@6<Q<8%]6lo}+͛yk^GOPgu"i8o.͞peKw=C?J?M?r-lj fUN532sZ^Ѣ#{|pn?qJ9rC׻͛sxi|u*.N<9w}F6W\vnk<_cGz:w`ŠAF a# "052X!h\rRW"t:uY \]̍AD5ʏ=w?~`Z kxf[X5&8ߡd|T锔*61Ӟa9:FBַPqg) CaJITo~F=@!!?$I+S'/~T~ꪫ6oo{[o=4;`؏Tᵯ}-ǧ: _p0 9YY>o/ys(b`keB t ,CѧO# mvtC9__Ni>W%ubk.~-[{\,p%Nk C'j귯j#Gއ>a,,,̳gVvlߊ-O,<¡'YZuƹ`uE+j_( Ѧ!Q*J:D%( )l6[+m݅s8k蛀1/BV6.T< pOf*- LCXccEHXԵKa<>f\D#b =uL"9pI~(uT'Bjt!%3P`qPtB0aNLA,)JZº~e1gu< `Fq("Ij4$([3$(r,Xxnf&&\Qm'3ߥ剕߿=wVjJ2rk6/6{o_Do5\||eYЭ;oKsvM ?q__>-33 }zW2P&Vضe ߿:_:|}n+>}\vElݼ~wkhHM T!!SS{jakkeQnW!abo..0RlۚLT#)!و`=Pؚ6P5" TK= 5-UpNؿ1eR2Hՙ   p"X¶ Ƙ91J~.Pk~ڥ 8vf))ٲЦә,KڝN$֢FPc!xzÍJZ=gAc,)0=o| bY{iF܀11JƶS+˵o_ mX9^)QzNHCϿ8۶m5y ??{5( ⊑\u-H_LȞKssI)Yh/Qvﺀ[swnw,tߵ ` CZ5.TE8N*v*cJIk"Ԗeՠ}n+,EBUbkc-F*Ql=UTu vDQIjk!#R Ht$5:cP ")GyTveE(\+gX 5}S! V]cV.锔]ZVY`Mҕ:%(\(LDӜdd*+J$ bdX&}k0fu#cH0Mo)HFFFFlHڦoS$omܴ~ʝBspkGfxDg큣3~A5XlJmx fXW$t*yjbH|'7tәfIH?(bQ5FX,g-|x#h]0;c^l <2>ԴZ$I`L IZbIֺ(> DAyMtƣSs>*F MXD)-J"ٰ`l5.U`W1Td%g8t5鴄ٹZl̴ڴZm\(&Vq1PbQBXj1jV D_~xETx1:C7is Q5 LIR2TMa$I"bb) 3l0@Js'VHAhJgc/v͕W^9_Ÿgyͅ^81XZZS{^8pwu7pTرc\S[nm۵}cOd n>ӊRp99<Ʋ<hZ*Ԇ~0 0g^-a8'h^ş "TݥtoQ}xSLR-..e˖~GN T&9H@k7% } {lo|8 kAP Hb C鄹fft:t-ZmGQX-0QL дi! ;DWrT6TªQPBcn♙~_1&I'hʹA1j5d'$2ʠАNJ2M.R$H84FO&uh c$M㡖ZC? 0p*X^,K+++EsnjcB`yy}:Tǡ*B/iűcXXx*:zW1ưeb.S1f3LLbQp79ģEէݪ~!nݺ ΄|4_jgxPKu;_|*?ZtkhVػȑ<&z=Ka-p+QUE XgQ>-Y΂$YmS"`map6Qk03`^VLU`n.Kf-6m^lZEA˵΀!gX|1PAS^Ear|/2%@t&!5Ӟ!Ii'b)!/C'實] D\O$KCHф)b&\S\@ rMb4n S32! uӌô' =لxN;( GôL>n9C]Մ?L3Hߴ)f=GWN;7ќ8- 1IN:'$ګru+6p|bScG^XOӦtg)5f. K^HZ' ycbE(J5g=Zh273LPζthKf3>i&3(f% 4}\QZ4n5kkW") 7t1~5ΝC6C*19#3ЄX=koM" j%$±J$1f1mV[ّ x/?Hw̆spt@k2Emgu熀 S Ym$VC&M+=[:M՗_lg?<E8J.sNVv$t%,5uF늹9fffqƕ*[30;;sVkN*iw eQ):X(˒VQH2YO)ԦeW$`Jn6?Ymjm1%-jѦt U|C‰Ė*L2L4 D9Yՙ`s! ؞ӫzMjN` c8!qerh {P\B4KOM *k >"cИqS pn:t#DCa_mpKGÿ́G$tVIDAT5QRt(NҧEIOE /{u7\wFo>KLv* Mm5( CV004HЦ.ʼt=Ʒ) 4m?1$5d!ya 'Uk9I4Tʗ*:E! K!|-I "&Xn>R$*H1l/'B:XmiYh^=`*\rאRttccMf`DPięٙuKv,<~}p|džmәU wIA5Xy_~+ kocOW* O4IÉgS1w\PU%M[>ش %7 6(&dhumkpH|>>E$Kc6{+&I$ 8k0vn:Ǐ# 3h!hL$(fk ïS q\,ٿ.vdq>AKG}Ë]MF8;Tg\f(SHu&CsVG|g,J&%:q:2Ld?É0ɮuuax_%2rXH`wu$ *uͺn$YrHA;^AתI` i4DSqĶijMPe],#####cpcg 32Gh\|DKw9@hZN~p31L8 ڦBa!P3Z9?BRJV)+=i M3w$Ӵ#0 < x5ܶT"Y_t]a;^q9IغiKV^J3Uw{x?/5d8[<8HѶ*JMǘ5o+&5<)" e۸6&: :ÂKQk\Hdm[L<5 ~Q'#HZlDАa>Iƿ}X-1 &4dˌy`㈮C2nFmdU8H ڊC!k&FKbndķ&#####c^W]8זּgd|g 8{K;xVbjʄ(+è&Q|I'g;hGǴ(_U]cMIB^  fF2!bӴ g#/+I&$kTLhZ4DBM.s ?1D `1w+ *|1`lLI E>vpVֺڮ&FE0BljnM ,N$ s>?801X^^ ᡇ+_#T\tOrr4;JyB?wVsMwo_>?rVw{)ݻOKi jdp4YF U֐R t]d܌=z F^VW55~ekD$I6!|!\fմ85w2 D%y5Nk8~d[ :4BjFX<>2|ǵdN8n՜MF7~pp,AbcxItz ZeYNm B=z͛7OPU+++lذav3;;;q8p۷ogw}G?u\r Sez'acdal1]q8I6qXPמwy+?+}Gٳg3a]Į&2>I{4jIsHX2JڣRf~ 9 k֞jI9J1b0$·h:8j'AC9nEY{1(f \CAkp 8T? h] :l'#####[q?A_lϲe9#~>E};9hpN$Þkݰתc '¸kF)h[6M>oA<7 d5n>༬f@HĬq=_L7xĄ8/"aMabt &U^.QHKq+P,دzU%fU|iPXL±'A8o!pdz].޹霓sF@N5u:u+c@uws'BeQtPF{g|3N&t(lc d.m]a8u pd!5|RiHĂ,Il2ix?ybTEvj^me5xi8!Hf"fADP+O5( 9ȈpgM8ຯ#!#* ~`FgRFFFFiG_r-</plC~GH"B]8~a%Gm?u0iT{g? ,w]3J-V`e>JO;[>αQ{߿Sp sܱcԓٟeiii~>g>󙩏>" 07 x/M/p߹L@22222222!~$9r|#J{v#[/•3`L&#gt_[>ΉRW}ؽ}:c& >~?o~UYљD{n evUoQuU mWix3xjco;4Rhn=YFƩl&{RG_ 5[[T_O}Sp E1q?c~|cpS%\rT_"w .pwҗtÇ`w^NB0:-.ݵ.e/g::u2x`r222222222222Ștf'?8<L$ "–-[Zӊ-,--M啯|OO?=q[뮻: w9q>M}]2OONu D7N}("ٳg "Ύ!tUEDgddddddddd 9qx21*XOzFFFFFFFFFFF& dddddddddddd{{S}su=q'?91x衇xǦ>w}7t]n=ʝw9qxy>>1smM}~w7gL} ~{ݩ6k>pv˜\(˦> Xk>[nnOu s\xS/Z-.,EQ=1^v1⪫|w}JVx322222222222$###########f4$ddddddd<!#9O& L ?,--M/8z?wuTСCmo{k_7t᳟,8qxK^29Co|T@D{AD袋:"B*X 8rdbex322222222222P)rIENDB`codec2-1.2.0/stm32/doc/sm1000_cn12.png000066400000000000000000002505631445607075400166660ustar00rootroot00000000000000PNG  IHDR a pHYs+Q%IDATx]\I "¡EEbzzgb7XQ EC|Ll 鉐8ξ7CJ"} T&BW*~oޒ >XZ#kD!M|2[ F!Sn @DMfuy4ju: zQ' "sbY$1bh hŭ@CRggWa׌O )lh kg tk' ɍ[l`)ʦjÂGͩOY.1Q̃q ^{λ a案ldZd`aSUI֓&?pqq5ǖzf9 e MlA賵1 g ĚLR)DN=%7?꫐MH  +xHAxeÇ e;{Fd9 fjNyo"ű/ẸN3ߡ%(£'<Qah'>V>)[7KѣG{O>5&)t&Q| x3a9EQӮYxȶ)z5L莁rz9&>o}Eknd]ZC>!{e`үL Q"æ |p|HL?o'9p|aWeOv菽ޜ| vi[v&7 xOetAJ|JlB͡PaE{25o(a'Tpk]Ftfy'G=yE8hC"NM+ɬ)-+߲1~x "Hї|%3cL;Ց(#RcYFJ .|=̤祀lF$eC|ɧ!}^c0-G33t)gOމy$J'&BQNGzM+/W')M-73 hK~02A%kDuGw[["\<"##CƏO{+ChəF:4>k#+x'{ӣ\ ͦtYOrb%svYXAIAGxI#wZ֫ރ*Y(,a S]S >pf-Jioc|ل: ?Iy<#P&[ق"aX JuI ˯9dffɶf5~N~GX+۶R ^ɲ b'B50a}ڭ e9IM4Vf}g< }M.U`( fȯ؄#))z^LF&g]G8Mr[˽k/G-@cqG'CjfpUN<ˣxZ 1GTP>.VF}l"W-_7>#";~ (s:٥YJQ˹iJ#kńK.T$)S-˘*M`V54G9o?+"a[uѼ%rhW4…R_D4ߓ9LUOV]^M:y$Šyэ}pA* BnWrnJ٦]0w#mgSu_o 5{|D] ׉&Nt#D'nb4GœreVajEq{_-"v^haTK.UOR˥d+&!H'm;r8ZZհV%1D؞|&8zP%=)ƣן@n`!H!R"aZ:{mRisdsRjeeI:Dbѩf͠ZDǞ:4"߭PÖ6XR5S@i!q= Z2A0 d)#6Ǜ0!LMM%g:=YzF`ͤ$Mώ0^AyBĵ/OE-3lb[aUUu >Ds# .YCe“a6`$rЁNV8 I Lޝ3C*uG 6MVu񼷆E_ԲM(8/)8{Y@̎%v&A ]>h@w6R_w5ֲI-N(AL&K_C "ͭ#4Tn }C Ljv+3W<^.$#5: N)^L%zLcC}ekރ <]9+H),l Xr@BN]0tEU=Ii Y)92ݦ?W3`C'Cn{*\(%g{d)j 80a{%G9D}I'S6f2w+^exuqǾ!Y0gHU> oo=ckw'tlj/Q^?+Ζ~OeGY =2ΜB6=e8ag=LDO DArh z>bJ?7Cgl7|61abW> -Yʉt4KNɑ/~s/Z G"rlQC'ĩЅI]Z ]UQP']ЇQ_cZ?B "&f=LRJd6kFcGTW7Li0꒓6* |xQ|dKG O_#.~-T&O\RTT19H5 od-# Oh+SJih1<`/AH'8u3<|>lx;C֫IJM*.. ` cNEAkGC2ے$`u󫧪n5e(,]WMY EWJtQQOۆ.+d^޲R̩ClQH"0k=JSfSqT^Ε!_Q=ќP@sJ]KR&% EJ9x.K:1ca*eѲ5lZ%l+:(DҔґ^VL=+˔mj:TiFa`U.0ݣNY>򵵽pyΐM 08EIFRPj Xr\{/$}`"Ġˡjd&J\UA#?]E#xTI.}E99CQkح$}Yb851HnƵɡ9ֱ w G"`: #n)\K2g;b9Y#=O#_wQ%qnKʑٸB:6rw "}hᄱ̗F0c>mFu1\/[xL@ "uX!RIa_UdbX&}e" A6z:E `ιb^R5Ocelr_DOph9c#!Kf3 q…vjaN9vlm nIw8^2Xr>!nۿ_DkV_8eF=E0rǀPx_h+#LfQn>>>3}uxL+IТF^'١IH)Șܫ} De FUU)'^ژ[8twz@#Q-'B;"4?ԑn$' Y*R]oT끙nE¦$V>W?e{FQs1{%bVNqn N'Y,$|+f51ȒnV&g75(>9ñ#C0`mmH#'D4SI$PAB((bk75+=ʤGBȎz>{pS-Ei8HY~Rb_ pc&5OǼWI̷63vIc>lC7"qcq/&90656:HQ &ώ4C?D[9_ah)tnH }I7PFn#ڀ3p@iT)O,Js@_U_ιDU7iz H8YЋ/Q(at;_F*SV T Wt/,0:ϼpkC_<K]+!'6eĶI` 9<)0<&kzο|eu/ʏ H9 $>қ C&XxƳSri;0tKF{P i#'c4e4$ |v77 n,`;~/i.5v Z~M ;&ڍi4lRgJ$ A֎n>'gnH"L$,JfXZ FG"&SZˋ2:}.bP3#CI& #&5I޸RuiX>%׫Wk~o)=WyeOl. +F*j HRۂM -`=$mA:Tn ^Z-,[jUA";F3b\ziտ-ӳ ,mU!Uip 8xՓ)'pK7¸oW}G;ZJT=ƜيgX3I)! )ۂS2vp9zSuZefa^u?u)ܚ2B/?_U /W*޽ߣe? |;a*V&[5;[)y=1dҍqkfC['sXyrG;P&Z=bJ?7-}ىjp3.$c[aįS寮E{뵵p3@ lx ό<ܛ]PL[rA+e1t+{.zaTPQ5O*o&li$^]TBURoGX—8զ]@>AX94M«QMp݋%Lz|f_ׇ# 2}k5IT'W^L71j`4I /ɫ_(lx1aĆ|i`B&e7a!ͫ{i!4_y9g"Tg=7"J(Z{ȡyKkh\=$0:}7Z8$Pg<Z1mD" #4]uqW@ޠjӏ)ԯzbN0~#$jN'!|r@xR[2!j^ZqfAPtHbYҍߟK,:*Ct0ґ4#l RHQp@?ψq%k e҄!4 2IH$iwyQy(:GX3FHN*W=zcJe_-A Z2f?vR:{GkG C& !#v%BMJxOֵ:?M,{0>wvwZó_t 4eo>XC#D^`Ǣm+/|[H}Du2禠`_l)}@+caM#a`^Ů0}Sbp}b6'PǗIcmqOhAߕHRI g A-fG]})?;t>8:@/!~ w1Ns_Bxf V-S7<+XsQ1z[[[TKJfqF+ErC...Iy,&9;;R_ D , 3PÄ%o|7AxfڞKIpTF̣&P7Ȕ04IƼñ|2S$R%_$5jCi\ "wQ_B?SB͌! JMGt0ґFSj>OeJcQ !Oe¦jѧLc+Rݦ2&M`5)uP#ծ|}[Zr]cz*G6?U*lIw 4m/~g1L\aA?[j ;sUqҔ "WZ}Ѓ+Y:mوoO,f0YԤlxDex{йCF~N!Gi5>Hm±|.x/ 6`N62RoMk\?aakW<#wm˾~|kjzG#m6DY~<خ|UYhZ3.Xs `-(}~mazL؜$30.<{x!vGQE.ymqXQZN8hCj|B"Z#!.n)n4V /=v 8P9 9\翂gg_E"1I:NB5-Đ&WjTz* a7E&¿Q\\D%ll?%kADv|HL?o'm޽{U}ug4d Cv8[zI(㪝X%mje5 'P &y$І";\R0`ٳg); Hʿ[ba[H'T Ak옾hqa>†`,—(ς^$;ռg739C}ڲc&Pmq}J[W ME\-F&@.0rK׻[KP Orov%g G5~]ګCR}00RS$Chr:h~^qpXxI/-֟' ߷9;ASoyql?2]*Ism:L?e`\]_KVXBmSiów^eVڙH@r*hjKOÝlULMXuWc$m/A:ʏYjlLɂdj>ҒgcjO<;N5Aw ^~Orvzv,&sa#0YjivNfygn%wn*Y ( ̍gGl}$H@kd3lU~ wLJ/}-ͅC|TqYIjVrHd=P9։Ck׮qw]!sw8,Tg+j*x<63mHM )clr.WqcvJ+9 4T9NE d/ cOˮl0_󝫙h)IPY\sGLsxB:RNyvFG~֠sY[wٱkoYa* 0g.w͔۟m>:c {w+-?3햨(";) ~Շ,a3Dxpw# I!ZUb߾1rZ #MQ9&0D,z*pC#EW/3ѧ7T`;Ȏikw7nu«WPik 5sroB&ȰbCJ 64Q^#O#zLX̵jZ&9ָ^S=MYC׹#^=j{Њ&9\36㛻 TUs8v4Q+O_`/V߱;tX[! `hkSE[+9BOqk%r$'}gj÷q==~0$BI?_SC]k)/<%>Z_E!i^{3{}O׭ad8+1;;0lm;沿WkCQǜ!LagzEũgycf N-zgS??!)gXcX5VR;1D 2AZo9sEq;Ͽ3d/~ 9_wԒn?NrbF}04Hn5؍Z :I͉qQӵ1aha?k4~(T`ۭ>XB:DsZ <֫wNSA[܃`+,< Y糠rHOCb)1D1$sNʷ`0"7ě!"'F*  C PKhkp몟jHnVQ`:EV: 﫫/`ǴC@\o³VEL#ٽ\NHhBZc ^4R,eKaP{ԩʟH YhZҪr0HHHEoyFoowם :u7W\ޑ t+ (JW'հ&'~ 7ښzF%ثv7Y E[z.Pulv IN`cr>b :؆U#9I=k?F9 _u5asrP^ba 3y VCf;GmaĪ;Qnu~Pp k-qo m(0ϽL*qY=„0c}:Mױ_|XK y5+)WB B _Ѐ9ӥXiQ`D'|vnv d)N kU" ܃3"##((v kMH߱¹x^?C}=V\ժè^z jXц;!kpY?z]ZG ^nD.iIT@mL>fKsvF{N}UVP}Doog܂E O.։ 2?sQ1Ax w* 0!ʢ.\?v<`-}ϒ}֫CLcC3W9SᜉhM466P\Ǵ3Vj'ďC῎J4ү0$iTaE@냁Fv'C8h axYZ QB)a("GJ~ YxR2FEp>z R!gְNuPRy5o=DŽ01DNELֵq؇;Ǘ,X"UJ7g/ݱn\Ro F 815 ?:ƣcGpXے%N)I3nc]g_ vc9Z`?qT"4BR%! ID^'1" 3BU= ãZMƝW)g֮XTB)hZ #nX@I=J];__;o^BPNq›! m"̜6W(꣸[U 1ɕChkm'UVdME[ yH{1퍶PbxPBF 5ۦa+)@ }6ZW ;޽/jih[ꅖHx^r5C vWT̳Ch^B"f@ƣ[H0m-* MYv7Cډn>ᅤyeOsٙ-˦ge:QMEvlS:k{ِm֨\)g)4TAIpeF8pxsXQ#Dr$C$icvs.N;Z}jW-nwx-{{9©WrB3AgqiU$DCR"S({'״#y:Z?Vl]&M֔U3s7k`,!(hg1z>[TZmLÂͱu T9f7+{EqBC=}:Y_Vjʍ4>.6*D&xζVەCη2$s˔'lNoKP'֪TƆz;N aDXA˼Qުzvp{iasRbJ .NQ͋D gdll\\Twޠ8,#F+*rC !TVhgPd4vk@Lvd Y>Ʉͅr(HWE%wB5/6n3u1n82=zܝv~Y/ahd@**aWӌ 7Uj3O0B^.& aI"{EA~ӏxC۬MrPKcyЊ4=,&dJ$!~gU47ѭԸDbTbO.{R;~$4m|AmpagQK`Lٓi~uL 1  FdAH/v_T74O4pJc[cF[ғ3M`li<G Hc K$71ҺNmt_6Q'*[Xr2_/vnYw#!uQ 1, ՆS4Ts/fn#"LNc7SNfrJtaE[S/=TS\ Ըz`I$^06zDy[O]l+^ +=[$/|c ƗH߿VPuApļϧ}B`׮.yHRҗlv$-ȋG [۳S"}'#m)K!*̚ը<0%EpD{0s?WEO8uR%U*)K7 !;~8:Ke#^zo) h7\ֵ&i,w!Af?6m&_ב]]uRH!uB0ȃR5FB8S~oY~0[ f=L_R(uQLHwJ㗀|lsr29Aw,em Zp^% 2_my/`gϜm)!.sw/o˺{ttS,ZJ<*g4.169ӺhYTҙh1hؗ?8BXlMnO'Um#VQի}^-B #. cJvqq1 WayĚuAH&N4us)`]o$d: G-ެ*ItȑC;gč} RJ>=#EVL1<Ě+809]0'e9ҋM)EF@Hks KO }f0*6i,OsNH á'cNI1pC~r#k)M&ۖk+b'<裟!5d={J!jPCD'm3);ʧm;aE\yiّGLcp /_YK'qdGa4;]Ǐ'N3l03mT=@۹s>+{&fEI w>ka:`{;CeDg3+ȱMGf׮]ƍڢKO;7oC~h;-8h7*J4[o?Le|湐uJFwo=0_K/lXR FƜ|G+tH'ߝOYۗai?{,{ز/M>ZMrO ʯ~ |wbNB/Lt Ig՝7qolv&pKPx¢mmf,&6)mvsjlU0hΉ1Xwlf[&IYxֆrh*u ŚqB[}`exޣq^Cb; ZzҲ8#ٽVOFAVQIˆɺ"&n,*Brݼ#!N 9jsXoˠVm l%bA8~Kb[jpd$"4bRKK1$Z?%\@Ge]p:L@39`D,J#V=V 6zvp{W{h[O}Xu0/H*IdChއkFIR+sHOEfӼ̼*"J@##n`ލڊMSިMh]UkY7duT߈,Ak&ǂ#MG8$> J>9Z_FWEcICK/-G?H~Xd_euH1rF:q[DPjIc?\DŴ3p<>#"X|)zL(^V$$ݹJcU֓<>Pn=zƾ@G:yDR@ƍAN^`{E^ Gn#Fý&;Ge0)hrpd$WM'ntHp-k:b99ʣRcnd֮ 7(/:ᛤ&0!a$}ٗzq-'/ͱSk)m f °v!ysvp*eh5rK5͛7w~!Ӯ- q 0q7}L; }JJm]kkK}}wlj_6׏o 8 w^$hOayԾU۲`auE_OIh;#`$tRFi GB'YX3o.08A[c ^w[3G;/{ǂą:zyt& L%h&\JvpG+^ٰ%^56V]tut="i/qB|t&ҪCQ:Y穠(4:(cRIƜ|?6VWEקwoZU1Gfb62O}[ :A-o:y:KF:ԗQ#~RQlwaT"ƫAuGUj}$e\qjIѮARq$V ٻ.qCZ_{Y}~i\̟;ߩh\iƓ[?}0W]/v:M0~E`ԩV3SXjkB8C,wJ,$;TM=pg aT:6e /Hz N `, UJ Ώ P;Γ/rN’0^{2x.`B{@S蟔3~^P:3M2쟚ï4aw~J #&s"wb˞jn9qOD:Ik0z 1lM1 v8cZh}[ >\XXX *b]`Ç~F ȼAlLV9; nF$Ժh@.@\~yW SV^ayI>|=cf=]3#¢aj%'E$7jWsQZB@Zyߥz=0Ud&e%;[OsX'ndGzm^n1~ Ow"-2ߏ҇1,/Zw_e%Ukձg 5Sc7ЉQ{:i=j?|ڇK"XCgәl˯j(44'g XrE11HDZ2GF-'~SNBH>||p#[< :aG®s.u6]j&$вo %]f_&6oG,w[b{&56䣾>ކJmXdXrMͮe䧔WgF37wxA΄YcJd+qxx9+Ы2kV#n^b_}if\| Џ+*$7S6D7+k+/Ng%YOU„POF%.\]s{s:Ѧލߢz&jDNIE]f^O3}JoZܵi[֭2O]eB[/[vq>6X#u)k?.r7FB܍XRVd8ȼ/u:UЪ-E+i] "KNHHQNOc63#F2ѿ~T k˫{1<Fτ4M[D[):YF[D6FA8SПEw a$bi,gWMuQĶĎ@H}u)L&Sh&>њϤʉȂznߤƜe-UN6Q=端 *d?SA"덚GẶl=,2)+ ЄSHlĭ\ׯHIXJw~깹C=$@^zHį>o)\C}xzYCD bEMuiCҝ{^f ?>B\\*֒ȫhnjUԉzN4Q+/L )ܚ/,*3y+)eVlJd^ǃM+PL칔˫ÖcW8+БNѨs6ԗyÃd䊘ػO)DZ ?2ӳ ֬T`܎2 cɣRNwd߾KM,d `oS_t?z|`A3V}F#AKբ{u G~ıQoXLEF6FN5[gޚ2BCK#p+'>fCCQZLk2a>4w#$to IH*u}kS`*dF%vʣz{Oޠv!3#>p|[\]+)a(704W&-+PY??\pES1=J[H-$n:X#y3͉h0)ۂ6+>Y-'DhIk1ԃmuI!yTݻwʙ}Zʘ &݋Ҷ3=v`_19d+F*sj[7 VΗ!Y-Xu,J[2pmԮt{[ΆFzkiI[޲( 8e NTp/{ {"*(nd(RK)-mi ~Jן.M=w;6߽wv-gʕ(s,(ih .x|)έ84L`eBA#7'Yd,2j۱Ə<Iy]|RH2yl,zWX^_@`V-cs ȝOdnS bAlLF##_?B Fy;"ĕ9@MO>=#DxhP[sm3ϰ^;s×# 0B*i9ۥ`2~E󑴴tuuuou0=mK0)N]Bʹg~1ҍ$ Tmb{I.E ɱĞ|㣪*d4 6SrmC`;Di`3$A57J*`'!GJ+~V2; w-?&jdV48Å$za(* ,}4׀_,t%d7<\z{_LeCZRY]X쳵UGγާGc(1 ƒ6`3™jF]K!#sk⊆~MB2,}Dh3Jr*Ɉ)[B Ck>j7?f ')6~g8?V_WΥ2#"& Jo.bprX =.|&l~уո2ԦA\c&~(u,T\ @axCI7&Iv O#DXB=.(ts~L2Ԫ'wzІ??:FP\Iz:@$",8u.%rիAkL‹v!;2? qPUpKٳɨ ɵ=?t׍hOΒ}O3 d>")*l@x։T;ۤ/ZDtm,e{l3ơ̂W"Kq핮C(>z-Ř 132k^$4CRfzjL^-: * /cnL݄gX|LA&9o@Se#!)"{;&sb8kga')&x.;fA*a4%0XpϩWXxyiռ~}{̍gPͬ9\C|H9zDsmMe)kGHD0!vd&#CVP}*(jL;3ǨUo򠂭FI00'{>/Oa-zB!aTV=r6d-ouyft npݱoFݶ$>טV<#WC%! lI9w?3w=0gS^F >p@@S5e !&ۛ͏B|u@ᖼ @"""\]]HG&!$ t"c"}WhRc {6ަB6p!<^e(\4i#fʪIْM@ìPQR-ln=}K~x īޣ{G#*&B iOۅpb')1IJW̙L Dq C񜛄k0^v@[c009u`*uMI l3 >עN劌Au_NOZ>^ڸi+ϛW25eQ+j>PnC J C{XQW.V՗ˆ .]"Hou#(GG!3@wj]B#}A "ы.[w4eJI.#(&m'*5|aB~]Lm7;>7YA rkfEJ QMfb5gr< P8L|/nkpAh3Oܙ.ɊӲd`$ŞrA "Te{`W< *+Z{_Tv`ʦmZNyQɝh잘5qt?9IᙶzZ@E^+rӇĈSI}IƯROd4Կ$?4R,+y13d X Vb#~ @D2'ѯ$kɃ,P}Muo#>6B`N/Vnt0RCQhT{.=xf{_Z{Xev ":=iJ X `KJ.bJ*#h,~pIхM+̨C @̰wDd:8Q Eup7lS^+]nͭq|?Ye]0qU Z0!m$'2Sdkmy<&{LQ 8vA n8, w <\4tC!h o-,דR4D`}%5Zbn=pOĭ;hwlQwn4c(jRWϟ?˷ ]*$X&͢I?{wN(!A-76r} .g":k>v2KsOb֢tC#7ȭZؖQ]p"FwIu~st|:ۉKZ^\ի֓iVLN@&˭K:hSEz6kͦ/#!# 1b%ӥZ1sjvjg^#V]'41?m"bۇ6i Wqm{jIla`I #Ts_pmI&}"Vn< kqEds%P>b g 彑JF_3U(&'~>̊*0w u=G‹X-j\rUt g:#m 㐅0MNʂ+}(Xf?T2 N )t%"l,g`щ;n`eE G^_ba;/~ \-ᇊ$+BP1  ۈ?6my͔Ͼi\i'> ZY{G(Z6Bg.C%;*Ɉca`Mpl0qd->(;3˿eD}CA!AE&UW^oٟY*5מ4\9mh Q^4[kt`ل_K'S k.||d.T0x0?8٢p7p25H+ra2At[ I*gC~doeG(XۍBdB WTM;'n.7l_U״8i^YI‚8_z@_[tǢ+# }hBZSAuX\_h)Bs@<"/܌IV[: ? -2?[$i˳Oػ=tMj]Җi΍* GH_.q: 7vC1JpǙ6z"DDncWݸIYNn&YŅn9 8Gw2gdB*YXoDq4ITU!:3 -"Ɂनcyy#B:Y"A@l4ǕIXPpVٗ+0\A?Win X`⩦D*8Et&e%IhjݤMq+ >̅U7c->L%1߲;p\1Zc 2,2Oa2 Nsߢk)Ȼ/?4u0∆3( v1^My-hk =mq%&#P>B8Fx;"A柫|M]udXIc+S3i1LOw$˦L3&`G/&$~'?j";8fTq?Mo=X}9`[Edtw{tE8Xay=J7?LXJDM R E8ss6sxs?7H^F? VAH?n41 "}}}@P7r 3 0t+nuDn.s୞1@;TJWa͓SPI|Ĉi-c,y$/ %C>VIlWwN@ňdTf\uk{% d=`2a4N(|Z݌͈Ln jδۇoPhg؞v4ؔ$K= #0J= PnIKo6$D5Hn3\C@%a.h(67R.:lh^L%,$+vo"C Dg+J^kO||ubG (P>B D?)@Cbzd*ya,lE^lpך  (P2BJF(P@ (P2hIj2KOg^9avXesM@aC@n>Tv:PPXB1ϤxfqPjn9]J501%?y$ _zJE6lk4Ml8n&ƒdHe8垜TyY5k 2ݶhA J gM1*(TJ) I5aᣚn_1J5S.1جf )iQ! 72=M"ihltfC9--S22iq j倽_o6, W2)%3@9m)m{N[6eړH=mee ':;hǛ#Z,(-* Uݠ\U1/W)_sc)c7A_߿n1JYvv'cC b@iU1ާUy~?az-P]Րfdmk1{U]TMFu,ZUABV~)?vdQhwAEQGXl!-%T~)ZYP?*v&^U[di`A)2 4<4ޛ m#R-yEjȏ UeA26 J@I݉vdy͈; ~^x&~=$⤉4oFΔ ,g?62؅9Q*+u2Iu#C~K[[aM)w,ȳ愰lc]֪/L|Y k J!k0o^J l^κ8yBa?Yc}4~Ս2C2* z9 n^%Iu?B>i>oSKZթ~ͨ'~#< ~++B0 6-Uly";[@5%0<\4]es 2iꗾ'B`j'#/?42jXpPX{ea?YXyН(\3]fnYHmg1;g1UPT G:(euI+?շ|͗, m;$ !JvX@@ui :o K o2/(m2)99Q[ALbDiɧ! iJ[md9+/ ܘͱsSb!?)&}Rct(u-!I9ɾ& =0QlP8]I@e`찟WQ(aT|U+maw!RD? MDxUwJ&+B {\AvTU (#>%Bn'+BGH"O, i #믐aLOddm6[еͦ|KF$۳+LCp:IzVU-ƕ9bxXf6GPTUUiK\MltԺ-:%(~IoZWg2e8"-`[0UfO+*۵ϷfJ)(P'YTEIuXn3~@ 1u3r4я>!w7ndNێvv^s/o W>uݡR֧ P g L d-Ж [ aKAKXUؚи:GC@4(P$X iڎɱdP@o%#(Pd (@%#(P@ (@QP2LF_$m@Bm6(xi6$#I?*!hAKAuH.f4t P2BJF(P@Ԧ 3Ӓ{ $ai3/h9ޞ0䱗FZd/e3o%Q گ\]H̹E$ #jS?:5qd p͒{($[(}3lX!Pi*2=n9d/T<%3~ *i Hq"=:g`pRSDQd$!S*2̨d/ ]" ؚz7TؑE:. / z: ;28 \ [\{- 32IgE}a3,;2,t wRBYG2jטf?Gn~h07]1P qm\q)yG(hɫE'4QV{tp޽s GaH < wo""t /őo{H.&a_#^Ȉ\ b4Bm @Y aUcM &qn3~/.=Cu{VtipcpΧ^c8dVUPw =y02^q7\"')76#@}dN&5%qlWW NHŴo|fkOLYbN#\6ݽ0 :@$0ka&%BjX 8SUg |/; ay$H~AP Kpl _5AOtGbUuM(נdD7׹1DըvRXe[)2ٿ3Ԓ/}QK}.fvD%XX䜱C4ֲ8éƏB;2 Ecx0}G1Hd4TXwSd:7L_(3zYu=8m޼&v{HDM!hO'B%y0}IdVC"~ ^Y]oķ̌>1wjYZpQ'$tiT|+:P7%6<5ܑQDDDӧts):UP@wMܢr[H߈BeDhL<#xL]}#%n#m$e,6=8XctQႌ\]]{ѭ=hJeQ25"&Xb2JP2⎌x8w*ƀ ^'X)i"S/Эڛ ^lyCP (1WO6 f3̳Ğ_l JFt832lu]/v!=3QU[<7_CV1sMyP=EJF X4L0< YGSY5ߚ͆Sq2Ǣ\#<]xEeVn~h?0hV-'CL@X H$CX pbXQ2D2<"c$ܼ<< ).d$ڮ1@C%FG){xv("]leVǣsȉ%#>U73`&+[[&M#Sxq0Bj_`Y4+chP~LkQdi=_6 uW>Ɖ`?W92dO0Q;#n]$"Q!S8,o)we쇮EP2bˮУ*pEĬ 6Ugᘾcܽ}XwO^ԞJFt:򩦼]1i~VZˣ;rDTXp %#<!u/=} YLOInwct/ K kGL>٠ծ̻}H7^qf#-,gy7>sJ7(a,ٗkϽ7f{#3"Bok o?kL>qZPG18(DPT̓Sk,1/JF(!w%jbq00^#ڃ66}ҠL?&ren}ulr"(נdĈt ؿ{*֩e̓M-BE"ٯ]Uga{}K-y$cJF xJ\+f9\Ah)%'#z5*繮3QAɈ2›B㙆C9a1=:4 l;p ikױǧsG;nj-gsRq·_!c^ƪ̽ZBvW /MOКSO)4ux`휘PyVK 8wێ% ag&l5'{$f\?Ӎ[;O<9D>zaIߋV"2hW`gHF]/h D<<F3#I'<0mG\뜫#o WzqRGQpڵ3Ti!?u?VɎ^=(rOA][ +3&_M2Bf*U+{%N|̽s|BWߞtU z ܵpeG_td %YQ\J|sTzg=o7?;4 Uё#l=^_Z44! 9!@gm}@5g l~PCR˲\ZS" t}"m6TUϙ.ia)D^X" '[7pA^Z kU0`ÛdaA=8 Cdg튕KxX lXU@+3yB2Q+7l~5hTV VARl].?Z n y'NnF ~,!*Ƴ^ki<'75Д@{K{ð _uHe5uiOBɭYL6S,iJڠ#m}:f0f·;-1#O@-] KK14,Lṫ4xK M Gz#䯒^#bmy[7C ȉ}C 7 J@۷a2Aثhz]~at}1c ;~BVVA5&[Z:>{OE`Ŗo{[W9*JvYRYN7 s*D@@ƍ2 ϼ+i1y#PuelT4sD8+XPi,Cƌuy0ln>3zmNW96: 姼>\ᄇa-j.l>Ķ pD ds`lڴIJJoP_{?:aLO [D6GYO,%f5X(44!eq$N=9UHZ@ k?y|+,TK*Ƥ|c?XTbPᎌ<==T~ILGDR>͋W nh0NqE=rZP )  E 2KI wSbƪ(pGFxts_\Xz|MMgO;ֲ4%QT?SX_qӲ*rIj ݔXvA8s2ruEHjΏٔⳘY5mUeY8}X*`m4 <fi9r2t<K^li&册L W߼йW-jJ$ya/O<]znP=| %VJћ53tȋAۏtNU !bu䣬\j@Я:Wfa`ԹOYsZFwtVYźmP;"k g `QAɈ8f,UQN"CBF˜. ma/kU1˯ʉҥ(^[QAɈw]{z{zC~q3\J:·LDDϏsAӸ`vc<ƒdvBaa"MR20 eyi QMeFP[WxʥМ '@2bRPLVF1\<l[IQj>+==X_30;,[ߖke N=ң- ?2~.D7Vf5lqӄ%#N1Bc`5kuag~|})oh]Fg׏amnc'ާ/hC,E>7k]b#cC ?%3~ *i 'iYWe;x Uk6VarZZ8T8 v\x3Qۑ0EAsoA >mҺ6zFCrkb>~QUtn=c%#^0@ћ쌼7)yB83ҿϳ~WP-bߦ,>BS"4 'U<~Ecdf J@a(N n&C9P~8T.xs[^LY[]T% Ad2gnjҪƾJJRhBɈ;ȭqaWZ/5 30X=aIߋyprݴѲ5kcay;y"jj>tRDd\ܔ300 y(hB0%QzC.[z o[{%r`}M떵sjz G^8N:.b`iW Ol;N,'K)9 <\4]es B3A gjP}:uʏEW;sT V9 m`a6Gr` ^bsiqX{U?%#⢂v0Ӱ0R-?$ nͨ8̄lT\Ѱ`5c9 K ogNc`&x\J@- Zcj ó}pB[)-T3gNk`G-#qbUyV9V?cW8AQn;;ل0[@& G24u2b獄+ζ7@^NyW9Ne7TVڮMI\c e7]Bn{׵5:NAqb+jH1wtf@׹H\.-2]uN //߿v!i)>G2(]|2/a h]6^Z􁛂 *eaA$*(PURM:ڌB ^ȄT#>(I pAi˒K0d!ft 좧'r  f" k;Ux'2ܛGZ͆~Ӓ0t.C=% 6>hjn1j@Oj_,`z8X֟80c )bC9r bɨJ,R=EOV}a7 }qMq3ne2AEo3–7 S2"Ĭi3^κ8E Ig$(o['Ȭ8<\L2fSm~H)h=M=s3JVgS _Vny~I$g|<ȨeGBaA}_T/ aaaINٌYx3U@dDe"6X*4  aҰ$ńjYMHbseS^ߕ x̠Q{)LbDiE ?N.ŋaK;fs {ݽ׌$VbZk%L d0sA^kqu3Q=h }I. -·p\: &tk Q4-U}{^Ɉ,ox!2e#F`xSs|`NAF842c' 7%:w/?ƌU%]~2@Ɉ#|Ic,b;GZ xLiOmMh"IV`>HgkF(u,;}2N< yRUIK놮C%#FN16};,|y!d-kn%_&?z=ޚCT6(P2b;{&k"bp|M/F\՚:K=KsmXk3ϰ$4-JF$+:@C̣rXBd^_^rPϕ!uդN6N:>؍s(NF +L #@ow3u@Fwj4}+)?嶇A)ah+j?ʅncrʧl{OpK5y۰EAQg78tYVluR+n{:Zud20 u{fWh?Y ʩ}ˋ2n]]K@=*8nAtaLCy!An ^^ܤ(zG\`&rX{Pu<\Jsch3l&1w]{evAu/[R +_kJ1!7FC'4MYnjk`}&'bQ_SR$ N{4 ( Opv401QaGAlVޘ7  5삪?e^;i^n-6hzĺEFCWڬ=cM7մP+?aČKO K۬c W_3+}}aÁ=wWbUWD?;iΛnχ]V45PK嚿LF15{L6cg-/od;ذ{3e&^I֞t%MP%"Z(}?%NAb~% ˯3d}:5yu~}7[ױ~?`ҰaM|0 7~G^`ߜQ ė}y{CiZZœ9q5$HC0o#䈁& ds6ƻoUz&SɹYq.11a^'O䄉n]P"@Xwo/1mwc3c?u}6kBO[򺏦e 1x%Pe!^~oM/E y{,iM|S^I-]H+uXP?r+-|w[w2GE}0-b 0 l֌TRu֣)+9vP2M%_aI20%Dϐѿ(dʺ=.W9a7v &lxyvWbƋ#⇪J4HFXAEA%U3F+x0!#h_W^W\4Ѝ]}É!-`&Yb }~d.\Vsɷ\ 5qd rDmjUc/B%#Fߦ"C݋}'lbv3/x/"6'EU<>`'髖W ts㓽NA:v=dE (o['"ِ,p,1Jݹ1W7\qD$~]TeO4RVHa؃ X=G̦z9o KuarnJH;7EDD Y<Ω]ھ٘`1`A$Jɓ٧JB/^v5šݔZuE n 7n-I@:?|bWUC~ j5/:3 ʂ.u@ [.wMp}JY@اcwEݝFEJ."sSS!k6]Ē1;2B抶`uQu2 ஶ! 01%0}K.Tz5Ü$b`"dC^{&{+|%#$2LR fu(zog:;IUn2-maR83Mi6!mD23OiN%AkP2b>;sMiiWBH"F*<>#ڪR|flWx)}*=0p+mxxzp25b{wO8sݖx{d8LU]8wQ*8 rB%P=Gn%-ͬ93,{NYF5BɈZ^v`")_v'n5SeG^DZCLmGo8 2,JF=:Ɂ}V *+G"/)(Dן"&u.Yο኉ؤ*bHe"u1꯼&l]$~$f 3ݸ￵˧}ȕ3}Xwޏ!b? .Ȉ 4j ]MwE*)P˪^)d{zpȔOSf7֍]unSN` {s#-|mp7*]z.Ub1RC h̘d6|Va&1 CG*S\A霰< v3EC+4]t7*v9ucDiQiWF/zq/X0@M^]L+Ӿч!lpVw?nx?C-yx· YϓO#bS" 4,}"mǨ;ugCk "ٻ_~)9҆B)2t)y)4eObۙƂ{U zf x^9>e;GqJIqYv|`QcnaE0>u3TK̴1!𜪨bMuaYj$֠▞7!}H[i[gςAZrCPf2ª-[G԰ O c,x8wGHtHHH4*X-H * ҈tݻᎆ~{l>ݙ l5_;^J`\{e|Ieߝ7駘&NDG6[k@VQ//*7 >I&Gp;.t&jH8d s佸Mz0H:3ߞ7entB1jH;ȯw%Hsb1TP-"me!X09e_tjmNoDkMC.*c0įzKφ=/o-ȉ;f7>α77sQ<{䁯e K#{%`(g9s]ݣ%l>1&c41V|uIY lx~`\66cA"`JZ?ׅxO˚ntZ7xfd r1 K,ϡuNq 04 g3>[%^g}tSdۗKeG?{P1C:1 sO Dz]pL ڛZ=XaK'A@bױ 7J"b$+"k非~G:k߷K`z\r DFT[0+#0FXºbƋ obyIMzFC߳O;Ӑƨw+VGLLW %Rgʷ}}eE\ʼ˔xl}L$TMs^\Wg{$Cqݜ Z/q-B|o'^c.LYq]ErlM@!59 &IHl#R>*dv_.HK2Nͫ;_/,ʥ QlHO,\Zf*PH(26kE;M7݆蝘 Y0XSAGFye⳩+ZbrJzo+hP#B+|5K8(Ѹ0>-nlzkjiXm;;Cy7.X%uHJa=;5B}`W@{I]Xrt@{Z[~Uݎ漹Dw %~{۰"Hn:\{|VoƨF vv| bʡ_˘̌,_î3[weA|Le;XiyHBvAC1a͌ɱaGQ_lkk9gbD\D$g`S**~UG(HڤK}E'v̶tm3.EfH{01 ^c/ ÛJEHG`SI籠r9|\YC@t\j3o7gUzěw$U0of%>XD 5{cȁ!BR_AЪ/YF&ZlE75F2f9/b́'y@~?O6նUM~-82FI,I}^هl/y J;P[D@^oTD>4[J^/uʏ)Bm+72z-!`p)#P#$c㭜5'eBR*tnfv!D OD;d#s't:X#=xx=tFMCD,_z֥J@PdRO4=ښy$ {% Ø:llla;R{oQ%Ͷ $]prȑ95$wi2ÝX%kde"Xl{(l{XZsbbGU9j}<>=~ҧu⳸`1CźZ3$,@zMv罖FZ7ٕ$>cW1R?TL㛹l )E+;zԳ:{ @@Dq}sS1ƨſ;h20Tg|-P3_Ylu}fnI-,6Bn[7$Qn~dCC]Goܣȥ;ExI157>f#gsCljc-و1J> 8vȨl(~,fK-aШtvS> | {gwt/xL2x\>#s Q(4Bɯ9]3?$gYNbh˥~of<$c LM/v|~3=aގEB&K@BL:+ҧFUҠ&߷tLhl(LU9yj՜$|WqSS2hnF o43]%(2?1Ti/&NH5f(K]Ѥ` YKM-ܙr1b#&eIe2`<:!H/|H{<#3J%h&[o{\zH)Wj>KWވD"Ʋ3jla6_#Kjcm`b ķx1OK(²Trl+o$#5IBn58L4$Dsa{a [Q۴to@uC+E $(SU'YhL؛JˬM^Z2ŽNCDdu ,pC _c`#T+ ) c@N6 6< q5 :j@m`p}筎Oh&al4ZH>ZG%YxsEgߟ>3 wQKip_w Dr K1f pLr.ːr/x/CrJ2"';2mD%bֽԥ{ pOJw#1&ZXe~:%vJN;)B<إ`j=rw[ ABzv;"A|"2g=[+׼1y=OMO\ސjg\@A6pznNY۹5xMv)ᡲJ Ȉۖ9a{8 >hƭ:lb *ёӷNH,Tg]Nód :oY\L븐x 3ퟢoamꬿVee6ٗ}D?P%KNiq;BB.i 3t:jRNX5u|3"`Uj!?|`*M/cCRr{vՆ@ΡEkTXoqCwE”=^rv~q7xMZsvrS :so !e.fF\Ч"PY{[{>o,ld&C̘{Xm͝Ef>`&u-+Z*oR'^yP?S:֑u`C4_ /S/{&" Ǧ6=I~,//O~1(&|OIהx~[}kLYzi6`y3N5~d7Fs?b*JTO3זM+7yς_p-#uQvϰQzc/ X64GQMv5 GTx*<!hI%UsgqjSr(q %hD6eNPǺ~/HYSk,KQ@)_*:%Xq4Xisdn E>|ZTXeŨEQUIc#١<$0mګw?4_jxK\)嚒_h7`/$r\BWyb_ALwO}WmThb%IisZkٿ1>Z^KǕţz+T \yAdW]bKL/>gdf;QY*5Qaq}FU* LM%i-<!`YRMN%]'fLڻKb 9f4U7wl:4AtW _P?Qí'΋JW% "e1~]Qn*ت KA9" N-/5S& KCQ2\O[!H>'F\ZH26FQL] |w?5YzWקjZ`̆XpBUs!# E%m qBPK~8X汻ۭC RY{2QcA ԘRϷE5CVOK9Oh.ґsI0 C¤ҼnOsLg};Ok c_;a[>޿rgsگ9$ |R[mT$E̠{_0lGtVWGȷz#" )S"+Z$ $u%qᐘqZj7֦= xClg *b%#¬>x2 m1%ԛ:!BZ%+.FYˆkC&Q=]q>9 JE&b1vlNӆZvF1XDc-FHDc`$Rg gU:^Tè.MyI]0> x8`YA"~:{zk@ 8e`3< )Po n^>Xt%xe1vGFi? h#6h#6T@6 X!jKX`ҭ F3*[6~XȠ$O2X`R F3(ϺM 0;ɭCō]| ?&m4#҂lN:@kLh#Qkq+}_F&TumA3kmݵYW\oyc;IX~*};#gsYE7Ȭ)V܍YDžDD)*enVoz1|{%;O(Ylڠ@.6"ʁ{K]^iZFPLcZDsF D*0#Qi/Zwi۔e6NrEP1n9?֕ ŗ"s#0ՑN*nX%gW jk x 2=`"tX8}#qy:rc9jBɡ;+T1ni G9ɸ5Wyv}>SͫKK@`:k0$޻F]j!3SAʩZMaW1 SK2u*O"qjasʲnCOYҡǹE|{!%҆367D}m(~(~[sg~AO-4D4]ᥳߔKgo'E֟Klʯqyŵ M--mX,@@$(B4  91303xxf7o >$Է45BH$E@N"'c6Qy 2S**Z`Sى$d(zryafc%^!d`zi#">+o&XsvYk*D'GXp9]GCm 1%j0,{n-gp#bYWt˔L!wI$5yILUfd}X4jm3)QT]zE g0CN6_Ljx=M 0reޥ2G{3cVJnDT4ӹ,4 u`YXEGEz`( IdW[\Hcs(9M[iJFZF FgUR5;^%+dU|e,M0ũ> gw.U%=oY%w̤{=!BQk #Rud헨=SS`Bs;ƸH ZD6eNPǺ~/;S J-mH&~Z,|l /n8/ǦX`*iP 0h_2˴9Vg(n WMZ~2uڂ {0QW?2Ґ . ӸlVjpϻtz*{Q {S{A+nv6iX]{[bh$"gU<BeH{, 7MNR!^1mkNgCC5YG)"f)Ar(!7[5Ft~/Eij=lߟ_w-YR3|2ir"d>[W˴.PsbQSK簚s@{ErLJ4c RPVMB{TMYUc)(Cưͣ_^Ŗ#FN:?W9r;u\>_Z5^Ǵ2X[Sqy"~FՀFR:dBRJ7xҤ=v u F%'ȅ7dLj_XVp:`A8Ӱ/(.yNؗ#cC$EUkX٣▓}e0 iԟ6Sr+^Y& p[~ _Ks{٫lzbz8rbt \! `6Sޑ;VJ,'pW^d@ Z)بӮs8v\uFtuJ[y[b!'dxQlkMx۬D2䷆}$D,?FFP9w臶kUђu<*>J%o{%<=&;KNfhV`9DܶQ52b2lFuOO.8 [| yDϜM^aE| ک*vYplx6uyag"Zq=/`JPSd?^nHMNRIEm A&CbRx^FN`])=ZSc #y.BzIsNrHGUGcʓw,,ۙ 1)FrX26:4!< M-E.oZğ]bFw`eځbn4 n/ $xy4{` OS{g?eQ6fϿӔ0jIrpɂHNW(eZrtdp\LS3WcPS;F/ZSKI8_~{c):JYIk8}K/+=D IobwHSnEms#ЖvF⻹G@DʄU'Vb N)+D(p*<$DkF?);V8L2}WMߜpn54DsɎſXA>ܥ\Hͳ:Y=HX'AGDp5§2P wB d0.T=Ћ]2o4`_m3"olMDatI $(BjrWyD@eWbX[,|u*(j#jjZA^=666#* 8%m|zUaKRv;j-|~`GFW8NW.E J?  ?կMiv!oPt؁s,}3`z9|bq2Q}(h!gl^Y&L6T؊.hRN93ڕ@dbv)0|da7| _Di Xr*N jp uayWAm4ïW ilMmXDbmljgg#mƿU5SXmTSSrgY򲶶ƹ=-^@ 5.9OYH A+]{mjt["^dŠE5(§y8z`Qh0؊YNOKqs^TC[+nL@K+ @ml ɭkj}BH]&"%yQRI&<]Nc:bۅA+oF‘"?3^Sر͙,\UqFs+[;u!:J2![ DZ 6 b!GG o= NW!X$4WKN [.`f1J1xf@ HYUFjEjݣ#/[h mJ.᠍ƻ=MouZ+ `.٩] N2"rՖKc? #AAL974vǧ,?j@'zױ(rR] f+rBL̦GB3 :V]Gh#hqcK$<5cv%s y:@F;oˣt&ÖweMOORݜ߮b^1eyނ:o8hD8 A)OLMvDz7FK}\?$:wrzM-z 9hO \W L=9)_=M8a6seiZTXlNשk rҁlnd85TsSFT ۗKK:RO܉`f6hZlmXFׂ֏Dǯ] du܊偩J]& VHz7zyCSۺS˫ثnU= ˪w`n;j;pS0>hHqK[fԼ i'7+PwcI)䤽G193=RXZz9K0Э̢*a` 7hpa*׵gQ\*U0wkG:z41%lCX܊Ɩvz]ء sF7`'%WUhb y|Cdܐ̢v;52u@~}+5M6%d#N&*mi3U~4PNq÷iJ+jI m%&t< ' #>w\Z )1 591 9IuCKemKMC+[;DyUܛMXM|^1)"$#!@(ɈѐVoM$'d. [Qe5kF~I7i%^AI7'#%Dh)Imm~+XCS[ckr1S[hXy=M|>6: V+u2~kkǬt3 yl. *i9.xp#]\n*?R@?஗ϗ5MNkeqQX}vt~Icx6 ӨlJ,V=n{BXfTt`3 d,ܒʋAq 6!"@?fqiܿ|,N 0h#8p- ;N[)+~.~-qt; m!t{cm,rβD5{^n_[ 8v\t3VD^_T}f >0H1M; %mY~IJug\ć~Ώ6I^7XƝUܶ)54MIQPZU=W"&?P h#_a&rVt`H$ G9DZ;69λ_-^wt[1KC"!9.' @q6yDEEW3 Ħ_+F|vᱎes) P?\\1))ҡ&r0R~٥ĕ&E+KWr*~غͼ$" ԤIE@>PDhֱEm4cܺu6np= k?=>{]T Zz7w;lFİR;gkkLWܷꤔhqaP𠦡U2Nq #fPTc9¸19!斶NPf 贷j(x[߼y^#zUT=+GP +sBQ9{yl φTZFA%)1Q-^gOIwl HAEFQXέߎ:CTc~_Z'-ƂB8óX|Z 1(F3 cc-^Y7_ܱ^4U3~#(ێ ߳!0(6g:֖CWnefSawA#Oʪ%@q>49ވjj@NaY@M `8L$}g_*9h+L虛Y۽{Q_ĿgI~oIb%W!BF~PIJfy'Qyg[ڜ7[Aٍ/,U힔4ͣFk]X,WQf#5x&@Y ?;^p[{Eh#l3=u?n(mcAvħUk' bj!#!ҕ|:+o._a|{oo8hoonI-.Ƨ] cG ^L62OqoORo51(o|0{?'jG05m !VUG_>|y?5㥕 @F%;5:GyqCOO>r}wt`|P hHq 0aCNދ K(ܭ-sb DM|[Ѯ[եAO+ҽ:UvMG-\ćo}P!su~>]MCc03Lfq75LY-B8h'-;W/C!-폎QOYK.-tԄ09+Rfq MQy}9&@㒝Ej/ܾ\b|58 MA>Oz*L.>ZXiܢ8xHgT*sCx%#vF{N:(B9G 8될@ m8ouL:C,a׽.<ʂMrwq>4h[淾;+]W -󛘊j3uɿ3u|#(zw{~"h͕k>{?DŽoSR&4׽ԥ{.w4z-#^d]۰u5ee7rxk"Lq:fg" /uMm?grΧ:Y 7IYEՇnEJ wݦde\0t+l\*J:JM;1U-'(W+,%M'"@ڛK+,:0ļR8E1 ZRm M|oVߥ㵸h8*!j!2ҡ56k.foD[sIZNdžCYL勵|>U{b^qQ+:^X9g2t&'b]QG{gG M.lJ{(=|b2xeDNYih,zB5Sp;^Q\]ZQށaGs:)ewtvYUǓҪFb"Bz*RȈ$H&4~ud }9IP,[؋ܠ*ؒQ0RiI 1 -UUu-Mm4$j/%iȌ]䭵F @̀tJG1},6bo.aD,(@f(\k6tj]ˆm!|0]/^/R ~jy_n.BrOX Ib3np[vl)$ؔ8)Elhj+(燄BXB{-y 9xfs+.'U Xh9䄘9Sr Q957BgV9[Q0|âDf|9.~6~d%s?(zUTm+)0CY3v #;ᖬ^}ئl,yu+q b OϗwRc( ~Q)*+tЀωƐ$"v ٓ$Q1!ߊy6hRI^nQ{Һ)A ؙGK[Oi%pֈPK΃G }>W׷3 ˋ\H$b\gzW%$ ^zkjP^diߏ> ƣpmi(;`*>QEClT[a-UL`Fm>\0X@bbAU7i+lvXik!KDJ4GZdTn=Mc<,u}Vkhj3:^ :hM>&t սpk4ƣJ$.(SBD= \B Jk(Gy%ufI{q!9p'm;zuaa,_qqq`/?&|ImzEf#ӗ-^ʣ H]!sk2ǘNfm)s& ?=g|<~T *,2 -lMر i[eUM=S`dhT.N7O2Ң!$-ቘJHޣ |Һn9 m݌ '``:YxŽ6u oo^U`_| tmֹ*jhF8s\6+tt`Ѡ;@ic)1$_rZ/r~42A]j2 O艖]-3'M͛H޼yӳ///kk9`!%$0c9w_Zk?yl0ٻꞫ &jnI¸TēI9!mhzfZTG}yytxsPm@Bk[/T*MɭboCXLk%5=AJn%FŬ(E?i"` fi =ӄ FeB[ D&猌U+~mPc O,Dׯn۔di4AHs7wEEŬ"ۯ#C軕!0a4r{#ErR {ǽf:DXNya0^mד41\ t'ԾGlο8.(Y;13.My3_~#090qI"Va^呓8/g~a8,J}ė|M ȅL񣥵mk3+k\Y㧝/iɂ[@jrfPFRb1&:FF555 w_ˡWֽFeϕ)rFq,/!5ULN?ӑ%6 4jŪ}ܓ5a|8)$ɒ+] c"]ױ(H@q&Pf "(]}P"S$cDR.{)tWx%{upH6,͗LS]ߪ%…B0`+ qMaQ1h#p,_{#8o˼ʏIg+EIGFxmG2٠NA2Qo =RO#Fe+..l#j.9*JzBsIk/HHADSשw 9hيՏO/.[J*cSMw%Fu./mh(că2@ڂ\ bJ3>_F.wrێ˩sQZYU;/S-um=VG|Sm v]{C\'PYUVK8@AL9*kUzZbw) |^$Dy_KkͲϮ?春<(FQ!pچNBǿWnt}sAS43P*x.d}q& 0 yy_^I%sҎ 67Yy^}:&` ]@J2dƛnYNA$MjZ޼B&qf2m hve6;9'[4n@~YUܫ#'E=װMC */PէGX+sbpF1^]%l:cl]L})D˚pxjj0;RZhe$FKplip}:._o1{q8ou$2gojSwq>4h[7Gct{%R H-1`A=9Rő\}^P=I'.mufMNR(n$,t;F ɑ3m˹,ug{ 2+}J!w|qˢ䖣ϻ>H;Yah:щs@ZY 6|luq{&!T`_Tmި<{!n\WKۙF3O+p9:\H,ճ:mQ6cfD~BuYOxABGMJ ˵ov)c*Bwi_Ɂ^c$ u1xl!xН|ü?߷B 6~8۔e6NrEP1r[6燞ۺrDrVva&[a#TݒK$e#C#\pK}S*(hvk7yy%u\t.[CϭO.h#D? vڮ$,ihilnonhi`HE@" $@+lE:~,IVJVյ\x5- ! @ Hኀ %&Ғf_-y?jR $Pu˗'z[ķ7B$Vp~l~ #H콥ͭU 1h4RNm"5lcw7aZ2ؼCPyZ9!Y4AhJs}B?] ƖΎN \LjL :TRW'FXsu] 3#Xܶ߇̗r~R5_.rr30.\>Vj#WH}w_ ~׳ϣ8QLGaȝDIM^!Sվu06|>O,ه44҈g$|Qf5nF"Lr;h LLE :˞[ȇX2e%,(ʪ݊TQeN#{*=h#Dq#߅NnV|}Q5Z gIeoRr+7 [Y8^ O*Z,t| eܗSQp-ԼJ# 1VZ01[rL*Wmo{@{1!_Դud헨=SS`BH;ƸH #j7J7:yZ/a]+)UyiͲ´σ a}+ TiM]S`2:B\tpCmٿt{LLYАMDu;Fj;x*??{oHeJ$ii JJT2ewRHIHQBR׽G׿˽tޯUϽ}=|R PagYJ^ NgnϏ=Y[g9^UӊƍHlr6gWQp{GO.i3]T d4Vi2Gr f0_wAr(V˹QDHDn6iDs,&-kX((>wΎa.PCxIM[0T˪[4 j\Y_ؙxĊDUfYZE9lfM_I_e0E6ÖӌBu,ON_w@>Ϲu'OH{7ܢ{7 QjisTƇﺵU.#<}&WDmqsPnWs#VS;@j~նV^A)Hl\C[w\"r,[gΜ ʘܿ?&FrSmb2XxƤ*;>&y~|IKKNqI f;x-Skg'nVg)3Kx^5:. >'-҇ wxy3t[%M.`[?\=u(n14\K5dd)8__w׹[-dt}vdu2P GX9AZ^Ͻc/DE$'Ӣ(^ͽuZoo0Y&L_qvvs .\3|䦲j2oa.&d}c AV ϻΧ%Y4$b ,.&H+Y;sŌe7L9:& z wGZm̎:{DKtsko?zΆ}% ӓbfӓ; X  ^3y|i׋ڛԷto_:dC+cq2:8p F7v PU|SZ!Qn'*k ZYj&+l4fbwMmcey1du>-(ʰ!k˹G`#@K%b< 8vEPvTC~ K-_¢xWb®/ƐDD㮞('=;e@FmyzW?Y]#S 6䖗H{ɵbS􀅡hoA?"ˬ-/|,)u!}{nеurnjPq ^O,r9bJz/ō^NmYe%X0 _W6w Kz^AǛЃ`U m5Rq\(cb8ޟq jFEW D@LgSSQ8&ު+$:[4uN)ɵG\t qmLJ]v:![Av6 TpUt ydK'WBVw u= 3=u|f9q<(܂UgMK]T_ K[[Ur2uv~:-t̜gZ3wvSk=raJ=o\"Yd w9y `=C`x~ 141 vo:U*'-WBtJTg\]s$_IHH*/Ȑo񹒑U\GUԚꩮX ,Qֻl!#?T148h)"0p-uM;?m Wqg1:ݦф+DW5, @ce]zqo7krxtހ5 hlmsWIQ+%eO ̎Wɻ`* \LRgѕMJgV;6SkWoOZx/daFE[fbŜzpP]hXrvl~0G{}{.;$+2_9ERnamK FRO\t.Q^fPϕ -h (Jp/;ws1:dD\vKG5Y= O*p6`eI8beupzu A.L'b,ouC1[Hp\m^^^1~0p@ *Uv ۴H`&"Xxn-J3y@O6PHX(Ǥ*owԑ$]\~7^E7d)}\7kEC(An+ HQyMq3؁dm#X X!iq&ؼ{HJj~ҹ䘫騜gRaJJZ4 ] 0uJd 벚6-whPWpaFف/Ufgb`>ɴB?f0]UUM\ ه^Z*Da[{w3>e!DQ_ #siq\oKL6J+g^(@ZdÏ~3$PnƎhb;!A5=\>4 )scjC'%SO5֣vq7}A~sXC8N!ҡ#&ˆ<_ A to1饡{XiJKJucAyӭׅu=l e}Ko}>vqҩ[/)2w_"~/mA}'`P|'mWР($,4ČEھYnUe] 5N{e ɣL҂dғˆqM}A69W?7_OWTK;>(n1f.Qa&]I֪sd*׬FX>\O,x&u9%E 'VFjfz궮nt1ҡTx̔fTb |dxRuTtԔ (vfz^:ѽ~; rÙL #"|},o$$gW\yyK%=- =5+  XWQQ"g5^$Rh#0*8yWϷU} 2Q/{$ՎNG~l[MʥO7OG( VcF%rbۻі7u?kVׁ-@|{qxɋsE0Ѣ{~ iF3Kg3PXlTsqxQ{yObJ³cOsW C?WiKػݘN֧>GMvbT6C]{Tc\kmsMbKUìu$-QodLꋷէ]u3sN+ޡ?xZVL)(oZ%+pdqCv0u"#L6 V'f)[soI 2`%T)2z35Qu :F' !hW)“2Qj|.?^.R>$$ݗ-W t$],̤c{oc_Ů{x<"E 7]ŰSB6 ܀ܞ~ o_hGG+Uinǡh%/<[41ېsIR'">/ybG;-tBc:@Tl zY2>EWwKD&l`ޱ6%CtR"g\'Ť~ȡvT'd^whQ_?/B0?CthnJ|]2 Ǩ Lubȼ+#Mi-ۖY-ra STѴУh y]H79o'&a;=%+{~/8(l]9dL3E%%}'5Gy.J@8Ȯnso}":0>нߒdNh) W5Bu/?d QV1 ?|\i2`z3ZY|-%"+0YqAkg!X헚/KJUMlW!LZxDF  R4֝Y_b,A0ѡN \cJx 6vcS۲FiQCKEӗ M*y,JLG@W8ޭ`Uz/H}좒w\?XgetB-?gسRE֫Z $cED1J$rϕ r @Bmt4 XzNAA)HPgY#ry,-" ̧sYMm}.m.f&3Ѕ33G߼`(n#1o{Q[s6 18iUm4Hͯa, kcs$xT ^%J7i#WW׶6 +ޥddCgBGs 1'RM[W/IyK!Y1NE9c 0cQ\t6 w(`_rǕfZj m&&=[%]`c΅Q_-V1 bIX{t*-sb3(&w)]a7Ȏ0[TJ !w^RSQ 5)))?+#1ebbBGG7 XjCF~Q6ވ{swΔ(ļruS-ɍ&O_ڴT89!r5?0 \yڈR e}ͺ(?2|,^=kzs!AQN)dANz.0{*jT4Rg{V%}=);i*IG$J%"jqj_9Z_b) ~*< VЌHG!ލrXD 0Vwheeqɳ1p^SFd~x>?e";w3?Y`Lf\J$6=4r((UpkrF j\h_qò?;8ܥNQ)eOCM:j6-8~ FXo&n&`]86.1U7 G]?víQfb`E{՞'3СՄ˩b: Q1Md$aB}&^0 [89|L'KYSsu1z*]~l`{vVLGnm 09Y^G a7i#utᄌ~kt9*a73:+C]i8k;H=EģV;Ugv"utݽXQu#F1pbƼkف8> -<))MF0*>Vś ,:-Fb!,Q?WD9O/m_8FϕO q+<,ci'A:Orȁ5re9'ƫ:*~vfAN&Fz*Z*nLkKcgw/VSN_r[&3Yo5v^Tt2";>QJ+DOMDuۻ5M l?lEB+ \ʏCTJȅa0b{\qSik(MUύy̪.*Q--/yoD"wͅs%}«W ̴pLBQ;: m= muMm=4\:p > TS }MwNm6,^A.F^f%g .*;^Լx;u\Sz+),=x`В+-(s@YN⺚ƮXlkş2 첵~ A.7ϷUτR6EeԏmݴԔ2bz Bb,+ky[ 7oF~k#O*;V%PR o1vVgh2vhl1tx.b<)x"ά+ת37im@}ˈ}3KoS+钖z;cΑZl\^^~/g!Ǟ3#òR2o'mƛ;wIIͯ\d &R}*gyOv:gq/%`}t >|29ၿ%k״-Pkz: I??=0U;aBJrQ:(픛`/sBabGN,S d;HNPV%|񷤧!#^)ow$*K mYqIeKa+:f-ݽXӝY-L*`qKI]),47ݶ֙Նs4%n-NqxTpހmJ?7'k's߾cCa;~,4.cAGѫ YUDcdK/I_6L5=D߭=JB* &Y@;Dx3B~ݨ 8xDr5;*qxACc^whu>Ұ l㽘IV9~*r'im)hE kag}^b 鎛YA$lMZ2b {=3-·f\mdyﮯ9?ɵoB:V{J"i#\s.}Q%&"ھRCqOj 3b_aGd\ +[ hll LX?-1FiF'*;S>|-%"+0Yq( ڿpf^vy[XP̨Mwy?=t@U4UʞgS6K7mcc_En\(`HNGpsɌ`I>bYlNH%G lt3(xWю  |l#Ӡ_ZY4NG 11Nn@/JLG@"8+.t()^wsՋiX:wbmlʴ6P<(Y9v**t[Y8W{%v|۳t4:{YJv0zؙ"c霅wVSs}[K[ /0[ydc.c0u6s9:b٘Lb_3` AܬDE)d?EF_1ܬc\C5m}\z,'aσ/d8OYh^Ƅxd>|q??;wsڨ퓊z(yHHbdȈl ~VP4h*6fA<R|~= 2.6>b8pyPAjAq@5E;}1D1Hj-;#Ɇ_?YeìWSނj;41SLli]\r"yRh? F)qZ 9ZuQ BydԾQqRVO)SxltyAA}4Hy/6pCoΙ吘WgvsKrzjn՟# ^̩7P2CumMQ7ذ`Xlt$.ƾšHO[Y|[줩t$&(qM<;-rB'ǿd2mT7Jک PUj(AX,ԝ ci!)1~6֓ 6Dmjq& Bn ӘfY ?~/y:D 7kE뙣F!*vb/(oPm5d*yn=)"`薨66 qa&: F8⤥pd+#Y= t.pZUҰX[SsSKHFWڰ.q~3(p2[_`^;wFQ%'U)= ƺPkږx?<4d$a"y.V:u[|-ȶT«}^<"4%25xO5mޫ)m8m 9v^!KRGg10"6:b;2]aHҸ{w%X3؁Wj$25hɉlǰ}&"$.o5&uDSXY״inAup=K 4P&xElc.Dw>moS5?f+:Ϻ듢:$:jB"Х F0 e_w͒;p5V<0Pf}Ww@; y;f~'Ri5촛K4!SQٷԥMB+mσy89DO]f仛=',mBC=RCNscTզ/FxlO{Smm=,o^ܪ>!7X>o"fߣyޫTa]>`>6쾐K.g7`3gg. s1,蘠QkyMUĀcwa} )7tT^An-Z$uJQ)U,* Fʣ}3aFYCkQ4̰2.xIzQ^&X$-ѕeb]sĂW]=y[mZ+;4Q\-Qyg5C49erS_IS]\ #6OhdÒZqոRߑ}\]ÃiaDqb H+o"&<8~n?#/lШ9.g-ka:V%xsCѨ8Ը5PokL|o\H]OF}&5T:YyLbNjrtGL"p3.IKq*;{0pU׃a nPQR( MZk"d)  L4gnJIٗ4l ^ QR PTԔx-+Pv|L_P3r/uh(m-=; eXWg nss0Wh]}+ %DyR_7{,Qa&]I֪sd'8Gl$~9[eI2Wuz1^4?@ӭ6m. %L>m+IElWf2*{kWJ{{yC(xE-yC>6쿚QU C:B+Hڣڦ..+TŹ@J<˩O`"yz.*;K{[+%¶ dJk/>- +?AcpUgw ׏(=lSˌ9~sƳ"ͳo{WU-;{Qg7JƷm=%x͗՛1BpSKs?VRP ֛IHW0i@+6aAs37܈o[it&>Җ10J{T$@Єpk& --KckݬS?a?V=a`%kϏiNǞ4Б$)5暭7s-cv, wJ~~ei2iCiUu˚\,:ٗ8t׮|*Z XV,e8#~B"&fMc?,LmäɶTţ[+򓥪 uɸ"*Yлgodn q#M]P.ٓoesQԐᏕ}Bt_Hm) ѕtIKgHE F5.hQxϟ{Θs\!C?WiKػݘ@ޚķ>920Sqn9Ƴ!J?Uֵ_ivL6 ŷHb31ѯew,Hg%0wb|[Vɘk38qZFΙl[ܭ鶉 ''NGT4ZР* GNI0WkDbP:(픛`/sBad:oubfR`5 3ARS|-j三5Cʳ̹^o< AKp1:YAӷJq&殺:cIn6Βĵ ^c;l4?o!CL6 鮏n<?:*I)4qAPHnVH+RlҧWoAR)0"} ܣLf,Xn$8ސ'E[V[JH^+ݎ3?=iC_I?ǿA^"G ؆:ddw{ Q_cٽއv 4gQڕӪ4S7P\}͋PU-mH9GYF2_ۇ}/43癮ZOLG"uȼ}w# s3\ dzY%918j^rʆ#Nt0/4 GN=]/ZwHF`hΙ/3İ46R8 ^6߮m<ȣ},Z~4M1#yd)ij9#loo zWtKk > oe :נgI3Q9-Vopx⫲~垥fbFhh2H|Epa<1yOYǁԈ`cH$DgWwJ #$F G -eϢ07Eu܎e*IavmyAǣO}A^L,gSט0|<%e?R^r@E}zDt4˷ {ы,yO7L>EŔ܃^ Aˆ6ڀ2`h#0WW7tF7޺/jrP@&! `ڨv@Ir~@GM5[Os*ɵ0WSQ כɌtջ~m[T\= XDţ,Nr\^>wlobS+5 6&-!#Ʊ=M ;@$E?ð0Lۧ.dK'WBVwD0j,$ৄ+\lj,ՀҠy{0D0[\ɑ <\yF ܁f ^q~ٺE@COCDiYݜb|nkLKx\@Bmhdd#۹ocz4z16$lp۽VQު{^ A3s+ w[(RAcۅ;$y>4VFs\AZ3wvSk=r#tDZZZ *:`KmLm6_<}j#.Yz/JhUܣQYh-Ɣ"Â/&;K~A%y~UEk Dg/flSZKDWh'2ۏ("wH@Jm RgRUW|? Q /rJ7 bg3r fZ^π$A/& r8 >5ތOT ,(]6m|qihhhod)k#AtSLliSeX˂j}j#`1h, j<ݕMJgV;6S@z's2oN#,Wԍ=2O@T&AW HP8Q|40{i4 pjb,1&B7ۋ5s9qw FE'D~#/xvߥ]b.u kO/_ qX l7EٹL m,&KSW~Uh#Hl|'Yɠi ;|;\ZV4^2b9]legjoNWދxZ)p.4]BLEco]2`D>;eNsG!mwbߦ^B &\,t-v;2OC/o?|XY퉉:@V_ݰ?Eh[l*;><:}RZ lIH9{W!F2d NC35\cgZ%ao1 0.~S!k"I/ aOBh(ӂlo$*;B퇃so<**]˕]l-Gꚻі`6 /YG~-+hJP2!Xgж|HT9_no3ՆCoy"pp;_dYҞFB9C^EΘt3%v]\r5#5yP+ޢ#*mQ&-BnR]ڠ;=Pnh(mt̀0BT~HC.x:b<6| 7ӭUJ5_gb\nk?6}a'U-6$cwwoF {32l zHՋâx&Ƚ'dŐ:scvvGdG<-pQԘs݋-ދ,.8QOR#Cn| #V?jds->qvH-&$qF!㽖h p ~ٯִﺬܕ7nr :/@!|6M'|?rMIU˦E֊֣H,֓ۺ2]Z@C V&V}M,|wacrƑcӲKڌCk$4=UvS9^R ꯻ gFzܨU"Ct񮾓| ZKEW f6z*t]̚fu4m0ӗ[t!Hɉ;DՋ$Uظ|vßM;z[.vmܱ3(/ֽubD:\4]ܘh኶˻'sf +G(OX_hr}'j|Vc ׭J7v3 n57erBx5 eUfy:?]a aʍ \' `["D{`[k '1Mf?̥oԝb˫}$=]pM9:pw:"_ȰQ/}7g`\2f|LRݛY۔4@a62Rkq<=#?TmEM,yWx 7] u\p<Y!Y uV :]qݱ <ĺe"<n. 5s^)r{^h$D-3UYJ>WM8_iZ;TMe( w0뙪N4Ϛ` o3QX2tMweRÔu?^y/*Lݯ 2[;ԑ> EB=ꍷ : %tQʟp.K`}NYG.yAZG>vex B~(%6K7w=;iC:̩AK>6(m%'piz\9T?Ir9ޗ7}a◔X`wtzRwzҵ2?@Wqrav!C?WkZXvÔc0hs%kʞ˔6/?R?`"ZѭoYч>F5p|^^wwi~oRP VSpjy?xOR(Y;K@,_Dڎ^Y"5󘃿va⁳w}i[pr:tWgKPsVȧۼW"8x{z:/1;~b)b;_9$h#DBp6njN23ɠv|0 ro@r/VwWRAF(rژ<;9K:B}ͮx.p z|Ȫ/ $g8oo zl#$\{~x7_WCt[,g/*='#AF$$6|2nEƎo^`h#H|iV^gvuLy3bƒ{>ʾF>lճT8jGvAPޤ6.?| F&m8?f'M']4Rqyi `hϧ@"V޺/jrP@&! up idB%N_B[:s&`OM&,e@}=o>;Gew{rm 4dOFm 6r  ID$<---`[R+%5Ie`ڞVA ^9q#1BqұٸwZ5 3yO?[vx19kЪ"ǭgAtmx̯Y0&CC|"ۘ`j~5> k[[HɃَB',,UT舷1s5oƊՉ9Β"Z zEd]+IrnGLt$-*J(@@38*ȫWyO#6uF+ ^,mTW6VvK,G\Fps <28_vo_\u69_P&۞֐JZ( ,/uQټD W Se5 `#+7]jq_U[#_`4Mf F@H,--AL*"ˆTA/1SQ֔ۀՠdѽX?& O5ZZl(v:>.FA}8f2NE54[YIr[-V[Ob!NCQN.y #i` J!<(|ɻ<6)MRio#\< n; .]sYwü)kic;,~сcQUWw@R`ILz*9d>FJn ?FaE Zn(Bz!)@e24υ=rh ιGrYw*f%Xv8;ϦK_hm5/#ce5mbcN&C <`$6.{STtܭlM#PePZ1=a{Zd_ApΟ#cPd߽|_x dh#`ÑV{b3{0R_0Y Zq}ȸ̴dƫ%AKiP`Ԝu#@yCعes: ?d%go wp_:G[A#z<vsIinCgq{Fe |z6gBV8=*,# NG(myi]SS6}8Fc'B7ۖ(ϹGog~| u`J{h4 {~9r @ZuPbӗ6E .o5.BCޗ^dOc^yػJ>Z;Ѧ;5w1X4g AL)x"d)H[F0C5|ɷ#Yoj;l4¼LT`fei\Q ^F: n[]ug U1E:A2ݙOb?׵px*J$; -;=ܾa|RYQY5'5, &h#ȋsH)QHAI!kx4bYo2{G0&j?{F@m+LP ~;T~+' SI T Vz%4XT-,;&f ^3*x3 q U ,ˠPJ.WCQYF 3vLxo)m2n(i,9K-)%HG%p:h^vЬfZ +3bR׊֣1SL9j r,/es{.ᕽbT9rx9QɊ6#+#!>J_B7Gq6&0>9%hlQE$p)6}+gU~_6sF2~>'lSf  ~|?m-N_P?lOqr|z\sm8\]F0HPK#8}PKrgP settings.xmlZ]s6}x3$aI!$4̒MP#KIʘ:!tΑt{tŗ׈TTKDH{+gޗOb4C$p]Q56Q؝H^DQU$UA]˭)+қh}:NOG~v4Tn}iGt+ʼr!ěha>TqZ/Z]LJ 5sE8v1mF=WYlBk,alr?*TCdb {l4^zHY0}/ߏ}Qe&) D-^Y/)^zzü #}|Vz~T;=:? _H\;I<^ˤ$z1ޥR< @%>ts-T8R4=[Cɦd0zM/גӘչa4h 6Ktz^GsXl=dIo(v"k;]i EMWnoMދ`b]b`Lȭ_1 &ʉu,MhwT w"t0u-^MH sp5!| b~I?MT䣘毁4Q[\/=s;͖ RAmXz96zM!oTmm_*{6KtqԾ0nQe4478Q g`8?xN~݇&0C@hr .I0 y|/zU(лTqfO 5d jcPPxDO ~L~>1A2ؘP*%w-* P^m\jhd5QgZjIFY}o|?[NM4-uc-׵0;w]4I![(ඁ擥O#r] ƔR5 7/{oO$lVݦ ySad \sx8'"2ƺxiLn)zjG-#MOa&r{Wa@uߜx;;nle > g6}Hxk#ZV'@KHɽ[mzhSƒē~E4~Kzu˔RXsd&[]`f)ʜ]A0U:~x b/ܐn)檉Sb  ن\V o04PK"#PKrgP content.xml]r8ߧpyjtT$]$7[dn(vBxތQ0vų^x83 o5gd$Nv~Dnפmc,˴_ڏLndo6ƲTm"Wx%-^}/z3^&I8v;٪-Dٲ, ;\|":",,+mòJz؉]jl݆fњ]E ҎZTQTQ]N55{TI^Vm² TN䅭o3C UqtuIF^"J9*ؾS W@Cr$/&"iiu!]Y/;#<l ikM,[:&C-FIayE-_pm.\(RG;CDx`ØY*&D^ 6%QupEbmuvH!<\eٌ遶eS=0stU&, gTkv͋VÓr%ıE- umפ~,9o~Hקx^cowZ';@^-"(_-ɥ5 @@ W08h1ؑG'W u9o|8z=Eݍ~V` ])}_[yKFjSoΒ 7ĺ UH?!̽\ Bh/((MQ"åšm Fx}ufM9% q>Dnȝh퉡TI!;'Y ;H [Xb&ؾ@:N,Z8{:Ia`Ex%rysۏQV^PJy9|8zP61|{hф/_ld %k}o)P]WneTMzMgC{bh8 $0L3x$8t?T91Z*rk 0D 0Rs|ڹ| 7(OIu/efM^ddݿrDʅ>W~c[@o m8 p^422]c1@J0[K\,رgTy'4}Uօ4UމWSeO ':VB7’ V*`Z0xB+ѩkBq+kQʒEw'~TM*cgAǴ6bdVr8Lf fHTSiF7TvcK.ڏl"rΚg˱;퀃rq/`#p}'U"qDȼJtn)*2!^%>S~\6!]8"t~ZA[bmEV]q@v`E/Mcs|-b"Jfdmȉ !?3>Wg#=xi9QICzo7cϝfbo1bIe,EJꋢWlg+gU3ƅ/heM bKPG;[+3 f(`OoHC "e4RdC^[k Sܔ*j"2r!: Ҟ򚕐ڴ7j4ʾwy. ѝ8O_3ȿcT^43t|b1dxE% N#, l [dKqɑ/"| _d/2oh݉|Q/?_| _t.:oB]Y [Tl1xĺg HrQJ 3M2r̬#<'ӁWňӗaKӸGvdH} ھqoH db& ǐ?;YZ4Y4,4G2GI``~?L7{3\2v4Qfl)ymi'V2ѵrʬ&/ՠ Gkhf.gٱ]a9%J ́%J ́J ΁ %4@ %<@ CrDe:${@ yʔHǪ.kҐLa)9V*4[joPg1Lս:kk﫡W kh! ^iHWCZrzb_DC&W0d;h7 M3{HEVXI/>J3FYhyZ&Qv? |u?)_5}纯Z^ݟ mjDզxg9bphlS tMT܌4Yfe9}i3"<#_L}T) LaRς;a'o~{logif툑3XU&V`?uEsl"4XM[sMW~Ͷ.F~$<0奮̋,v(~:2Sԝađ_iMl֟ tuUysUbn+hPӣaz>7c.H~"X39TrGkL})1FXhϭ8tmMu z˿f,U 6έb9ZQrkZg~^+::>MIpLhjcp\fzvBz\12:D=:90BF-BGJ^;o3+&8x!aXR9S!Pތ ]FSIAGJE$\uLjmPvE}Bl14[%ujUKS1 &9q2&'Y! "F-F"dN>(e<ݴ#tf٭`He47*Qڊ}<]3=

L1]Ä0j&kQQ4ۨY>9I=!iJɄdIΞeIX){νN¾=?.fENEF5QjT:ϱjWDL"z\ ASg UJ5̳CLHIߋr\A23TsIqCҍ84g8_sڰ%+kus +D:;k#5rI꺮nv]WvB)TsL*DNX,V<}`ݬ98L5yյ+۷Vtvg,kOV+|-@h!sB<W M絵1).&cHL-eNSǺ1I0_ KN׾|cվų{w,Fw/ɵ,ӊ s-*ɹVҕpIRҵ%KE07Hkیwt+ks-+C&i'Ek1Vtf G/O57鷆 #nZB9ɵ\7TK]Cc$&˗M~ylMɩfN7&\r V.BҴ@K #w"4˽蜺Ե_V!BωVooDnA% >-n,Fe ߍm)ndl#p@Ǯ"dkS\;7WX3X׍eT7bKJ; [n092XsyL!oc [7ڝvϑLLg1Vuu0fЇ\ƚaXfGv˘oF֖+ %E/n2IzW>D/bYw)Fg_YIlLAiT KqMŒ yRw4uڃ_ZcL׀^1S(mcs+ ⻑T ;ܝZ]ҵimmȟB86YuO*xGT]G ^n$K/eeT&59ʤښjvU}*X/M(ܺ:v5+SpF9p)0 U{|7FG?~5{$֗߃Jw㹧uB4;tC7\fxn-jWЫO^Da|M BxԿ;u x@}SyǙTըF5QjTըF5QjTըF5QjTըF5QjTըF5QjTըF5QjTըF5QjTըF5QjTըF5QjTըF5QjTըF5QjTըF5QjTըF5QjTըF5QjTըF5QjTըF5QjTըF54Z,IENDB`PKrgP styles.xml[_o6Tɲ6)- $kAK]I(ʎK}$7CeKumv$ ə!g$>K %;\Yv'wEʫlIhh$V--E=_hڬ`D3ui=:[<#y`2Ը!)NjK&dCߝnUAGWJIϑG:nQYdk&ds͹x6-&"8G*wmr!VK{~N3 8 a% 2nD5_ RYW@B2#,p_z:{sIf2aiPކ$Ib Ky7{ :[)TzŔkVkb.< ?6Xe~M-,;d,RJc7?~L0,~-yIMݼ3FE1MO! -)Ԁ W]J.φPx1{9BWJ<=?#B3OOAtJhjg *.!ASAtGuk zXTϟ7jT!TA> !wEFv),crQH[[JMegr-xZ{T{C&+x:wk1YWS h\لؘ嶵zuQ tD h_>_k Ep٣*:=j= 4[&ގѼA>iv1_O_騽=QʞE"2,nnKAc$˲ ׻7 .&mcuѧ'&kJ◾rFsNctZ`^$UHv,y/YO߉Is()+zX|{w*mMJ^LX}9{ۮ/ ֑gBc {@fTWvMw:FG-` .vλ8HU<\\jE⃅?hR*ܵRR8Zkܭ;Gw?a|TG0*._ J,bzkrA@qUuPKZoF6PKrgPMETA-INF/manifest.xmlSKj0F{KmVEɢP3 >}m'.%Cv3}ݡw:CLaU@ڷH]þ_;7; ,Q +W $ ɬ@ew_NLn!`ˮC?N@jUD8 ~S-Pr`uP0PТ%@T$H : 'ԉ5:d#xMU rM/֞ո v%NN[d (zx*$\@Tb$_,l, /6o0x^l\=zɆӌ5[aE7nxf:ݮСCÿy%' k>0uI-'܎R'k@ѣGm+Տ-[hϼҗ3>>ڎQ(K5n]28egΜYjU_ԄqUMh4ܬfݺDEEEߎVU  Jqʺ_yС1Zܵ\w7[]F˯fi-&&1ik/7[[ۈ^~~֬Y>$gϞ]r%{J[ޞ7Z僬ǧ ><(;9n`X aa]"8)n>88+b6-׬kt"'GVV[L^l}RR[͐olH7Z꫈!H(!᝾1“0 upe6n.ۋV5͙3GZ^QdCڱHRe귻ȉofB9\*;A݊BVV~ 9!8 |4J!#O90ܹJX4o@-b>="%@<4)w'z۾jfpxw(T`߆DWUL=J5I{[gy(0:whKs~tf$l0+==3fe 紏AX/"WNu{l63d5M昛['(aͮd5-?wZl-&`jjrMv2Gn擼ȉ[P81-B1"ivJoֱA}446SRYڽ{7}܅>w.{8Nr(0t'%Bp,,,^zm!tO9--yǏ4>w[xoF:b}yիԞ}3@7ZC77ds֭ds߾}"GFd𛩂v^zuƹv{* ۴kO6maw.;~H }0O7“!ZY{ٚem=PhD]u.NUb\ti/Ჵ0]J6?OplO8볓&}y{6llcPݲ1***WaءFZTO+<\r=,U ;xMqm~odžͫBeF2<'MO<JJ999]ii;pe8a`¾=t]j}N6 ]>'! M?NBt+'~ G4 %=Ll,%xrz}iSĊo٤jjj_.==]GG34mmm~Ѿ v}k#t\{{{63l !uUG2<{0hq#~wzDҊ^FF6dCCa8b@vqiݱcվ0#%;wյOZX,S+;!ɾr'Nn1&!8ۓSTCmQNo\\\Z9]4?P ՆE% ~tm 1Tެ0Y-KsvL* Cbka/s 8)̵kjj6B[23@9K]G@8^EILJi:[ ㌦E&M~@iu[bPlpyVÉX>pC"ِl5o߾vy Fs}m{lN׃̙ӐuoHBv ؼ`lnPl[k/^322^QB(^w,)skwܙދSKLjt9zzb׋/$ ?:! -?,Hck!`/Fm%~XkFxwU.:4+םr0)~][ kA6=~\Jlφ Z3f &Ki2'Y ک2_dчD]8qgz6|+p홓4xe~|ٙ Na;?>~P0!(Q7͙qO6Dih vt5 X3hflC4ok,zS2ދbD59U|\x=thK^ o\e `]HYnI -p|tb׈g 444tsêz3?~tI6C佼ry H`YS{]y,GyH m6*Ck}{4ϐ Cztn+ZZӜmC0!w@MTZi;,4.;gU۠cK&b.l Q&--P9bS@dv{[ePF&@ -}0z&٘}j  ߶ 땞xJ÷#a)J$_jͅ3V!mRvj+e"şIԼ]1Of[S =:֨84xh+f7h-F3)"d & =ji}Cn|tx1`e5Tgx'՞ڟw5~.{SKɅ\>2wa]Fg搲oݩ5QdVr}): Kr0Ƞ xckPARFS:is%׃JHB |_Hc (!Hpu'%#Y =eJV"ɮ4 Btq!LzD o`.-BzjC>BmL>ٖ0+\AnDI?.=#8](T޼Z.xl]lnnb?5 ^3 =5!3iVڡm[LnWNnL"Ν+%u[=c <Pڒ'GNHU}(((Xc `^E"{nY,Z֢3d2{ݥ5Pd3fff}2))Y YgaF14?eEXŮ@ |/_9_.@Qۤi;N`uw>nk>+"eq_eyW\ygJ8 ;sM(XԩS=uC2iGw#-}%* ݖ{f L-R.&L?m?ڻ.E?ܴeh 5Ia^v;vlyyy_0#;Ƞ5RgΜU$`Ozx|x01сr (^bZJ~>=ylookbR(i8`{723eʔ]ZCB*gu0N2{5}?9믽_M1~wThkYYقf==,--">HGGӧOGxhŷ4^}` FV -;~6',NG;2a^:]k8] V]jii}w.VntgC@^y842WO/J7$;ikl-?~=+~uǀM}f@>Qm,z6FXN 3=ӱVJo߿^wȱ#,Ask0hitAVO]ӗR֯_nݺ/M'4{,BRdzKӨE@D|ch>A<y; j@P,+4S w.s)yxx2_s;̏[@it3Nt_[Ќ4ѧȔN%R}xsE`>;Dv)~k&pj$BFp5^3|Tl$*?Ҽ> 8M.u*Y`ܥ]*ӹc KFUMu>V̙s'#WڧXjZ֞?G(""fZSn-x+l6Ew}a厇ñ[RˤGJrȿ,ttN;5&Lyf K!w)>aHNG8@mS[ׯgNOD<Б]yb!p|!頣<"t -`ѐs\x^~ mS]|Ct,Bw>pL6֗mzERIT09%?սGtĉ(ːŲx4̜?3:zדEzS\.h`[kC_r*$W'//l8QxYtwD K%Zps]3yy]QӑV@.+[[ eLj'hK'r^QsC Y*ϳNJ+r?vmIWEtۯ^׳Yvk >;cA\w׿. tҽZxbg7QWHh]nO"07{;=n̆eO7ΰ|*PlEGh*/C)PCByW,?+bq~|zi:JFҒ3p7ol{0l}<4God?%K#CTxRnK1Gak +ߴI'{ut CFYA[!S37}0BaG~G l F_pZ xf F$@t# Roɓ's-ovr^6&_6`'5`MaUo 3-˾8i{Ͽ6l:ozLO$Ŧͩç}έR[F Zϰӧ6yMDGB_)q^XDK2߿Otzv !{I֭[:; : ~Z(*k;IEN*%xƉ^XI"ugA:=)do r0}nj ?p> ID5JI0Y{rHkkXM}A$i.9 :DzjPP]----q!Y;?H<{xZ.$+҅ peGOt)XE9݁x^Xʕ+t?hd[1+^ϒ?$&huX d޽{afz#O^UUi(I1r:Snfn ,,֖qT_X'puFߺdCs -hсǿ'#q /kx{{~0]X6LvڲØO} T2i|i9ò^~=..u> ggt=z_ toIKϨМ1 ^6E}C~'.]iku>DvN=jGč^V4o=~'X>R,#S;σeGb=PWV/**ڇދ&uJe(窼1c$_V>cKFFL]tt¤N}} ) ̰ࢎH^@twwSNfG>|8m4Dt11]zb9Go%H!DB'!${0Iw&s549ýLV#~6CU=s(6ǎh5`6,,Y`#BO/8-OX +v+* |' :DM["tD"G6ֽ`C ;ߴ܇+Jlp]dҷt>=TjO!g![lP( Χt#]2k]a3-D1gN(xB$i)x]C͑}*)~O1 =Q)dAW*9S^u=~qqND 0BBB̗NP~S"PzZ|Q*d2N< }1񠻫G.ʖeϖwmv`Dbx"i8ۦ@WC7 2DXA>,fuرo޼ٷof;zɖs=[lgNETe50u?H59=YMgo{D7|$D0`@III3jF= ~6/*mg'-Ֆ{nm*S!>\ (*_q@g!7 @}ǁaw}.{...۶mCV&ї/_~…^.Z."Q%]OIth p!z쫿 @t>wL*mX1\%5Hvm?HwnZ. .7stw;g]Bu捻^Q Z/Q2ERLC ;SjC{Nqq*MSODlxxr=^(Teݻj fӤxb2KKC<j"ݶ[W|\O_Z?/}ݸݿ@3 Թ״Z6+>,BLqLl(r &KV1GɝG~F8@;n:OM-K_"Zz_,,[Ҕ]^i@\RSţRR$'[*h(٩ PT~ KFū̐{d>F3G?a<2Q ZsϪc)r4Ž.x5Zy/.OӍ?w(Eߌ0g9o{5ymOll~#L#i%WQuOW~0e 1* m_4bbS&+8<Y;cSo3, $}TQ옣oiyLMgSrg\pg`Om3vIG?V (g 0sJxm_w!7-N= 8`p~nk5S? XT$l8cTا[6N&A~#>Ek:FGW$-Ԣ@f0 ɷ!q.D$47-3XKKK>JKKmmmoܸ(o>111 R[[{I$(qA///$@uu6mp __a"ZBA!F?i>īG%3q }A%mvڲi' Nqku+ao㻫3t]M6^9+@\JnsWϲ8d߰|x.8CCrveϐBHԀyaHBHZ`8!ql5 ˸8;Kjȍ4 Ad"ƀ{%7xo̙o7 yZ^/πFiX,9?9^w85|ؽ9***.A=rQcj[ֆ&L+:FYvly8O5MT(`N(D{LWN b8U+((]'j[ktPUUldLGa G0gff޹ӇtR$v3lE?hf˗/s sl߾Qwm 0q wx? yn5cj>;~Dmll\bUPQQ1`0'=@*gU!)_tQ_.Ƿɓ''O\TԲL$%%կbOA'+XZZE?ӧO89g̘j9 VU"y}lsp uŋ) BC?0Iϖʣ+t^kёũ߂Y{|fSK5bFzldojzׯ_fWaS93\*~| TUU? f{IU`ϗD\hQ{Cg+„׈a5o6!kL6?W/Y KGΓ"ϯ6 ^;MOVmsʾʹ;D?IHZi3}ިg~򥄄x#q25M0 r9ׯG?p*GGG Y-b֭wxyOd=5Q@2 3;*O}e2µr#1ywp-C|tIJH!(F iP.޼T|ԩk ܀On_$rBB~{ @z5xqqJ==K}gQ DNr&cS'x ZO2fh&1I)>Ji1 2mޯwBǍkĿAvrpDH?A!`"u=ݢ`;:N4'AS~! [_|MWdT3}ï5;x0@܆Y:]̻ KLvp|/mjaXDq$/M7a QDyHX3WD }CSe/1qJwB5WxrHeT HIIE#Ĉ /y$ax0[SSu0ςp'&nC1xؒeo݋& r}I풆iwY=I^Ocz>s…1cƔ0 4Nd})S2G=lmmǎ˼pfllL[H2]4Mvs±U,ĶgCˎM` 4g֞!Y"ZW ܁_g^CJVYUUuΝe˖]O1&&Q(Ks\xbֱT8֭[w)!HMh(#NiK9;; p*3O;KuUo*\'S?bRS 0N=g< hl㈐UV!n3EpV9[Cg-ņTP޷oEHKK3 2b]gf] %˞!DDh|uZC^W7ה <,e89>ߪo(uHd/[3+p|ۀN#B2*;f]SH/BBj4CeSfY!***YYY`R7&4ة9.=S'0j7@º'NPRR?~sP ҌŹ~%uVӰs۷oA` ìܡ-=\^^Sı -gpD Zu.$02?uI]]/ҹgUp|c @"q.$tibP4w!J$^ooE114{|{\g߁y3`yu^<-iHE`K8\KFE)o"B:2vv+yDjD-]aVinjoˀfE?69cK]QKO@@Ih $$bM~{ &:NFg4M> 395=}1潷ot1Ұ={%"5ht߿N,{Wsi/R!)+ G>r%=췒ʳ7DDD<^UM@ +yы$AR~x5 =D".ؕ+W0b8s指:o޼7otpb"B6/.nx.h3sO6$,&OA/]䄸:_p?x1uWL!0QR}AK MҧMrEwWRR:CgY4XEˡ-,"m4}`0h%ΩVe{GXYꝰxD𤎮54ކC?Q9[|_544˘#BDBm?( JE1Ի C(3Җ\zDȠ ,vkM,GIZ~Xt*s -;GpNV!,a SL~î5c9\R@jhnJsЂB+3Эj|%"Hݟ[YzF̞ 5G"4wjn݂ :ޅFd6>XRPrɫa J0Gjv 9#(Do[BYz|-Iv7>t+(u9vjQ􋳙JCqG}5[x=N<@R23(vgk驗ATabUWOE@-_-|8<֭[!NC[ޱhi 1/,;M}=}!9Rz߸qCKK 7c̝={_w"kVZhV$=2nnaҥ̖@Yxj%?NR {gD۩$*"7'_0"H k8jܗ#G;RMcwJΥQ>'f)T\[RRSz]V)Oow4c/ "/\gҖG|FWߡC+r<#5?@Б3ۃ؎]юsr8#D^LiD5÷_6}EC\xqJMe܁H-xWT!nD#1-F ~$M5 ,/gZiJ6̆"_/>dB; znݝ"3xb}Z%ҷhn*xZe_·!uXv8ujFz7C0c;pơyܣc,X7yǸwy^m9%zԚw0vκ<' A3G/;}}1VbĽ>| ,VYOx'Fixƥ>]x@Su)Dau`d7H))-F/=?&++csgA/ǣŖP.O|sK{YCJSO237&B vzqE\xe:+vc`gz2}Å;YSE-qM3ysvn;! Iw懲ϯX3䫤.9v!EQ~Fqe+saQɉ- UmZݑ6j2qghvA=ADiD|ܶ^;cj %?M)~OpV\\PrXݿWuD)@/T:󚒪?A)QEI ^:sO6 uKv;tЁV|biYƮ~E[|\xQITɋ#juG[ؽ\/fj1wL#i"#e{(~*kytEK?_RAb@ ,ūW'/ 6͕xQ/ IT|tьO#?LT}B6ϊm/>˳*aB$@'ɓ`KI(;Mڄ`\:%=KF k}XWBWE:˕Ĺ)GوN ,TZS ZV*7:<ϟsѤ/w2E*-(`Y j02>gqg-4UD:m>SO GCq3]*BPnD}ʇjm^Ʒ%^@ARqLN,KG1Q jt" qGd9qG=-,' lˠߴ^O@g+2x&߀Ro)5b!_FVs|SBvvYWP()NDk[T:0zP.'\;G;\v7,,%8L}=\vYN(\29@w#~oQKp.sşRfr2Y=`ߝkLeBg/C.HoKH2n7| sejq 'Vb? t~lepٽvv*^q7&'A4z"sBk@M qjγG*WsYw ; E~ t2c 9ZXx>.ȗNS4^oHO=ZtgF`ojAq*.Qo|Na3E$o@׺ 11QEE/++KLLQV^^xĈ-8JJJÇOKKT3m]MJN {N AuDQ)uFc?HFm)IxGCZ7])BӶd0H3o0 8{lRRR?c9qǷM gϞ >}q:SQ3f8x("0*t`vo=u,6-n0JB]J2ĢTrWa.N~6pbpzCC7 ܹs;r4X?{_655w:RW1###`?;ZYN-}YrIF;,*[li??iniB/Oat'6|m֗Ҷ w]DpYlq"""9;M^>=0iچBQQQ իkkka^q\ĬY_=֭*_rGkkLURnhherv==gYȢwﰴ>`o߾AsMt])))\v6'L4DGqϬ^+nr,&VEe!&˃z]3f|Xʽfܹ3gSbV)$x)3@;;;;Mqk9"/\6Q n\ ]~P:wqhrZGG/bn @w7ng1 j\IW:_~~~lC CVYwGY^P6=kda:>AQ"/ta WljqXV>]v`b KNd/:!e1Qrla=?g&lw=#“'O;Y ߿gۙ&QQQ <<<,j ??[+8{lw]2Y;6y|5 pjz ۞Y`V7FÉէLn~Ir(JO%lnn9cZ=annnPP]޼yzjqq~tR*͉'ƕ+WёB`Htpp{… _vZ0^Pf(2ANjٻ} g)Ռi"FQy׈4+8A0gu5ZCo;wO كgO: `\pJz.[#q ̱tXYŬL"e&eTZ-H#+*3q鴠\֫~(2p_)30M[_;Ne 3hOljK]~ep/A-ՊPEwՊoC_QRKY%4p@RjxMkDJaĈ؆Ϟ=yU"͉T x뼼!`ͼN]e5"86#UC^4iӧO99<]tQu*-s/N;766n` JfbYjj^N,X0nحl^Bxi]B_j5*$޴͢k%&nC^W @]K;`:c-D!Rߟ HE0V.*f\|1U4 ZYZ_ߘu oN x;7mx/t!Z` *CP={{.3X{Bm V.]Gh ._t+MCxƄr=8nʕۻFGIz/_DT9vlt$F?IIq@JO>}@F-j7d3㓓5559Cٙ3g:nYQ1hnx1#V-z+6PEO/#""_ADD ϳ ^'eT%ܬ;_>E{.G{ I=..nĉs6lc[KC!k`Q93F%da%MP~4Gv97; 2$:bFٗו#ɔ!v_v?b|nV0Θ7oN3귋4{&46}$NU+tL jd0#o7u vػw/8 Ūv.!|Ҟ}}ƌYYY{.,dS^HHP:"\i̋E$ ,w<є7|/sq+,F F> m#v LX,ŋ SR? G߿:t(Èahhb$lm^aeZz'dh30>3F!eb(7p_%99mmm&mk9cbbd%%_~ ^  WQQ״Çw?(a]?zAR(h0}%O$QhiˮWBiͱ ]=7}`[u- |@Szz_uѣGIh;n܁lSq'&&Μ9ѣ7o? <== X+$ҪUV\6JJJJ=c;#ٵ}XzݦLK2X$>'5a[OBAn)ϒ+=ލݻ5ydSSӭ[- KЎ] K&^X~; a>Db(Y /4uAǍnm5g.2P*W Z55߈-"##òɓ'AAAQQQVVVi,=p)S:>!']'Lkj`@ +W o?1/n0x9w]ށ.)abGnEN >35H#iIF:ueܹt7$J[tù´bŊ~NUÜx*BV@c?w 0`D4A,mz, o| VPuZ^r9-r:RpPRFlXE? ֶ27bnkD~pٽFQLmo@hAE1Ԥ5Gϟcz$*rm{GsmL-nRoup}TXD+HQBJKO?, RK [УtcM@SIAW]եI@' :R92Sq&7Gwڷ (0ٱE*q1+h$F:RkxҒ1u߱3-[RR¨ޱrފA#}:ES"eee/ddAO>iӦTgT5=z4::#,,,$$}nfUҥ[nqRFd7Ɗ SM H% r,?+wx[3 IOhse5 zW]v))) LO;88ŋjnnnbbY-[̟?Š 6_`LLR+W׏~/f3awCJDKf tMGx @766RUUUvv+Mϝ @=P(phR&V[[-ȳϟ:f<(ҕKR?* T934J}I4_{i {cw1jb{%!IWխ46 44Ğ|sdz$6u 1 N,K: 6/uH+T<9Vت,藵$nD%<D3P?qS8ٸFI,XA̱qƖo'bN>aÇh@*wZȑ#`5 | Gwz{xxлwsmŋR#<<|߾}-V _s#Z}ݛ9s&{DD2~]jjj]^J0R `4#0O)]s /_͛l?X6϶*ϟ9gϞ:RȒ#Fo7,f+F4mYX8 D6ӄ _III)PXt]SwX[[3wt6T~KIPDe ,b1cG*3iwަz;Ư[=iͅQ@O ;w;3ivtq Z{nnn 3ڶ:##mgRໝzx~bSٷvǚ?^9Vyg!P@Gz>}0=5nyyy9׭Μ-GB/Q#N2,?0~i&𿳳s\\yxx[ӧ5 007ׯ_wuuJ-'_?"aoi; c,iYoz@m4}ȑ#Z;*^Qdzxqb_< ށ|WN]u.zʦf^MLL?N=+IGG͠4{'VVy>:pSVjn'$B$/:v/FES?\'ywTi6v=_;,HӇL=clfِ7;񾘺#_-nG*3csjjj'p"kxEn- z۞G@[y[KC&BPhZ4!1tϲ_3ꥫ{DDDX<\1wf#&}Nn;x xuoZGܖ,RQ,m11mꊰ+D2)g:Cc߄u($GJ( bI髏9 &F9 ̛7D%mo*Ԧ/VYRvq7a+}&뢽D"IIIKKK ;$̼ 9LϐEwD!r_p8۳fB߾}STZ04h3%%ESSOwiP'bwk¤ʧ/n9cZ.>NII D Tٝ$z||_b+ wupzeSUUh 8[#/:uD]LA*u6\C]zAG  agee1Cy*_{X[`wJy] &w޽_'4 Sd ##4wVϜ5 KX_|+(AIf4!g9zǏYL3f{mqkn@h!h1r(2s?W,[|||.]pʕN;wY&y,Ďd2#'{=\Ԫ#b+0lҢUX:u*&&̌5xEJL*E0[c ph#? DPPC%%A/^ֈY/}6aڈ ~u"h۠~@E! W {]a.g4iRU,|,d:v'̨Fa4yɓOOԖв@(iSddd?aW9傒EwՊoC_v^@,쯫xvwӡ%FsYFj!b %3'>-M_0uѭw@Ќ+n=;4, ӯRIϤ-3/'P2 ЄV*',7և_[/יl|Myza ;&LEB LbZzK>u>r" eҌ2Zu bNt؝K Dn<0S9yaD+/իWst;E;?N܎5 t7_ vXݳpNϙe-4Ҍ$ ֗״X%q>!Ǐw#.ǎV}Wǧ3DW{?|x]~3voq\\>]?$8ǧO;zSSIBBB}қTTwc&82;;;}~Hp##8kg0pN`p:ixY=Uؿ=&K.zeg,l*mCׯ_?`ĶS_BJJJ{PpVwKJJٳwYdoo> u|||pp .\%8؛QQQ݅\ 鋊gܮsn9xopKvޯUci .NV .w. | .+@9a>|-(Ndy#{7!n]l/f. o}cjirN" /NmU_;{ieu$0]kOKVvzxn8s)gƫ-ےW/8yTs85v*S-2ʞ=w^-etY>Z1JR #.ܼd`kAJܦe/ k~*#ju|kFO>Cẉ&ޱ&sA\o??2l..pǃ:Ԋ ˋw~ESZG.ןst{gNd3tKL>Лz(Wis'٥ot^zㅀs.=i]{fG˜e":v,}nf$· { ߝaz J A7Ig'QbDđs|3.IcbMLP$2,AilFFc|fHaNu{}0#VXnaW7e:^x:tW'ѪfL]7T屈ZƬC užڬz"(w% -̲U첄?v5"$@+jӲWC_$6F`ᕥc H#Y!JdKff!蠩V QI\N0hN:6-ko39NgGb*3vx&V㬑ݫǘs;\p\\pWT!$.8ה!;npr咁#Aw.bQ6_Z)%A7\p.!s;\pſ | .ԊG.oI.پnO}~#O~G[mq"EZZΦQ|0<﷎ћa>;Lr"~9MmMmS;NZvr˦+Q+ 8w7[~̱M< V>xR~%հꏲXJ/Iz~1eը7#YIqZS+ HiNG[B )637,',֙=`6Ֆ[Ԙ4P ,7[d߫5\W iTvn-?38(~ޣ%Ĕ<ɂl)([(L:k;*Zw|mH){ ubƬU?`0555YYY.#vuuu^Ȩ0`СCǏÝe455EEEeff:a^^np?(ɥ9 JUSxDtL,'\REU|2DsP g=|8C^Mxiɑ\ 2_}2l9¬׈T+Z$6~*T h%Sj]=| v#]-u7ó|qqI|nݺ 0VUU9sߟ˔!88xժUSΝm6kkk߿߿Ç%$$n޼iffƥ؟{f̘=m4ɻw x,GBXzNb&s2Ʃ+Ԇ_>'5ἡXI-ϋލbnM1]1ILL 8Ǐ\P("""K,!L֙vl9: (5~AiJL6w Q0jr jm80k,))2. |GmXw1oS~5@|bL\KDU6CILyG+SN.5@?\ |Ta\cqzJJ*"5x@avzbtt4W"޿?|p6jw [Z]1}# m$ Gxx} ([%vgAEg.d7inʮ(IJJ+Vxs&%!ћHuϟ?ϲt“Dې%Z;G1##Ғ"v^Mjj\@ 9;;҂L&3仉IǤ B9LL 9rrrY;(dƊ{֛K~vÎ:>i#ˡw bc>7o޼rJf یGoY,u{`Ur6ؕ16lSEL8QAAajJJJVVV\b9Eoa߾}"""UUU-3-nn?fv>{lU"QQц+WwafQ }!FffԌ3߿߲k%%%\2r;[lpϟ?7;x`VcѱL0̍7͛ו9iӦӧOqiG(++۹s'xANNN]91__H.򝳡F$+** 455=<<苋0pB]]ڵktkS4766p֭:::m:K۷os?4: RfԨQ}bbba.zqƯ^/_Ǹ򝳑t#Gr ==z S*KjE NOoV;ػdA9r$gܨz,Xp=@)))N!CWRF2V2"Y[[4,{[riGK@@@ff&Ȟ_`(((zj0aҐ+9@s400HOuU_w 0 8i)|r r6`ĉ鍍-,Lm%K鬡odaaᒒ???.%{}}%[I.0DiiҐ ~+1eGxVoӀ ޫ#Q3W/ly>(á<.\y/^455׀g{J^) ߿Ceoׯ_aaaՀ>qEFeaÇ%%%D"QXX(递@grݝK?"u( ~mQQx/`0  <5&0g zo|nhq}K {SZ(E ]0Q. e^d`R{|Ijh}z7 J+)Vzl2m --'OrаǁဤuV;?~`9zh*zŋ׬Y8nv~%߁UqK vH]? CҎ8>wρC 귲FPrz(O,F}BݽG'Є3.ϛh~#&~#auz*t7>dDž;G@+*LJϟ!!!! .r'2dو1iFFF@r#eeecǎe#h&M:ϟ?(Ew t9Hu=iJJږ+' vPqbȀSaʞO<`mzsǤ|Gd36k콫WfJ:|R/w!f+ JjqDca s[;_ Hg:egN=ͼk\ǍLb% ^V &\_!)Pz>/E\"3/U*!d "IPf̘ŋV n[}YK,M;c{Ş={tuuYÁٵWMLL^;PyD.'PWpp{&Ʀϝ˹w]bbb,M1آsl<(7lxaD?s6WڱcϹ!NK. o_Ͳe<<<ZbᢻPTT%%%v:EIII[u"쌺@Vq~-,,2d/F^ 㾗?*ߍY~ii{>sP98+@ptt#qh].\ZQKH~B`P6=55֖˱Knݺe믦p.1;ɓ'sMsʘ5:A1 Xo@SSs„ ÇoY<;PiJ)$1hV$9v TիWs]hz ?>x/pEŸ#=ryb6 Tҙk囹JK|¶ɹaK̖<v= .=QUjTUUWZŭĕ 2  y}u"Wꀲʂ7nTUUa HqΝ;wĈD"gWY\@4fQ'Lv=F{9o}/0byd$8}.5zj k5}=5bS7{D]sQQӧOMLL:n)SɁȭʕi $ν{[KJJR( kjjYVV&""wޔ.BLL@VTT2d MPRRFT(11D"XW]=XvD]y! z*CX^ )H`*V< #T[@wYVVvذa<<6mx/,|ll,'OL8VVV Th=8=77حd\އ̨Qy}{mddd2g ׯ_c;`7nt,aE 1cΞ=ң Hw*TdIv VPj phb1d G6~>;tV䉺;wڵ+ ̟kcB}ܹ &ٳg֭]7EUo<&zcGZ'Om$)_VkR[UWWmF'''khhpHP7|!3g>9;!6ʁ~38jПMGt1;~k0oNqz< F?~<'xY7k͂Y g 7'2 ^ӾN^+  `Hࢷ}wVWWf`NanQn(m͇PV]{azn>i,555긵)h""Ao`llvRRRo(Ě~Gn~WT.%GWkt0O8xyw;uC ok&22r֬Y \Ymiim*G/2/j^ObvrjQ7n<ӭ_!PU@%:Ҧ.{YVjBm+(Ϙ09sHK@l^,cxJI3r4!~!t@_~eee]~5@a[Y ||ٳgEEE~~~:1|||ԲmfX̦ǎ5;XK6&=I[=c4u'w瀟Ң~XW?ߝ:%FeBc"m&[ϜDS;2=N&}v-ՐpdϖB6 ͛v̙3GIIԓ+9T^^.P׶vq^8ĀI+UfA]Vɾ eeeqļyZ-v̚5+66̫dN^mq"E؂Fi*uWNOM.-j;6"5ZrXw5ёer"e_wF+MWVpnc%P͝YRZ)f%հꏲXzK%֗$ jƛ2SSSyyyNځHt+5^WWammݕΜ9qȑuqiG`0msEHH8ݻ\%<̼9rbn_mEmHD@Dak[5!yA#-Sf.8H' 2eݭWZGM&ؕ]V6i9RC]C1kUdVuuuT\\}} 6MUUՉ'r WWJ.Sy\",,L& mR9>>~߾}>y&<}8Osycc#P̽Y6{=AAWrK?PLTBefYul/NFDb&_YT95F}'kV|sr#?xTjg9*ʶL\\7.\i&=00ёˑ~@vȔC28{xѣ œ9sԀ *))!LdffT^Xd.|69 MMjyFVQ#ѫ2?gTR$( 닙M 姝H7Gj:Y`?.ܷlra4tÇˋ100&3X8jԨ2v@}g#"\o߾ixw@??gd5G`(AA̬pQ ;p䘁`.XNW\ZF-ԾeZjigxV= '+"i߾}ܧaq, W}ݍO/ eiqw \.w2|ͨ^? => iHLLbZ~=} 68qǏly5ӦMkjjJOO߿K~bk-]bWj:*N)Bo͵l՝ƻR#w6Cx7byurNNNҴTL*"mP?OY:XI ]߿MRRˠӧOdi]h6'd Jm\"{1íhhOtY,v/] MNC0o.S_VB/W]N) qǿE+]N%:ν tTux{qhҥS-ܚW@Doi̙O ?P>>111Lx]*'_b40W?i}G8q"c{'x5\"%&W<~ZTTt OwO xUed:cU u֬Y3ϥ;N۷o[ZZ4]Қ k} 7o!{ϟ?oߥWjoo_/&梧N n\3aMSx!}Bjy0Ɵ:vvYWxP+w]9F 1>hҽ]|1Q*n]RKR4ybqTw؝OLː7}_ X^^~]?qƌ/^vוּc=J]ynFp5 DJت9&0ҴKGu{@ /!!!aʕǏg͌?ÇCqY; ۷o\2u_xq͚58.>>_v t>*)?Q7vJQRho3aĠ}ؘ$""`Rbcni6:mQsgx%DPd"+:'/o\~{233X,???_۷og4-ƌ6222Z0pS`(=_n.Um%ƅF9p']SS6<"^ ᢢ@wP)ߛ#輎iC1BeٳgvvvAAA;v`ӧOjjj+Vҭ-RSSQ(ԩSk~0JJJ~pLU֨zJiQ)(7\__hY,5O,;;(G nxk7o/00x^ 00[ccc}a„ @4CGG'-- 1/Lf̙% _~L2^4 $/((Af/^Ne F}BݽG'Є3.ϛhQ #&~=q.++ߕL4@4}RRRaaa7E=YCbK5HIIIjg imm]ήڧ $%r~l q^F㏥eWG? _|KϟO<9''G^^Yg.6O1Nsӆb]zJGg{n0/Aу4_?`̒3l۟#=&;";uɰ_c]0SbQf"DI6tWkpdHN+Y| !XYY^|y.by9lߎZ0:"'[vh`!ʺ"iFE1~)~"s:usN--Dl;rLܬ;џN=|ԹkFOOkll۝Vp'uP˶+.u?4zҤI瑡ĿD+!PֽեᢴtB= Kv+🠲%-:bFMk. խwET`0cwՀs=<h!"3ĭW_WW'** d'+Hii)l :< ri1tCh&5FK}q!5o >Mˋ* cԍ6r?zcȥYgʠh@nnnUO~)7Eg tF@=BBNS'Sd5¨_wIe;8Ƙs l۶ x+ tYڶ"Amy" 1>4TWW9af#X%}ys6M3w^PVV7 L>Ug%ÂՕWt#TWۄzn]8q.CP/^/JJJD2Vո⡫ zw=E93r|Xh/[{9-j{%̈w@.m:kO}IUXd ;CCC̊wvvL򚚚I|l.zg kfcC,9e' : !p;_i$ˢE@`zuUMVVӧOa )!!w@1vDR; ¥"1~7Gw—Zܵ`hO8lUh3 BGGK"ݲ+qEА ۇܣ=$?>tRhۤ4x!DG۱u%} PY֕U.^@jJaa!Ç %<)wG+N| D8M/ #\0ުIOOG"999˗/N @⟁4&*}1N$##9<}m)a 7/x7N; -[Xd G>>ŋ5U? >{C^r??7uG[q*Dk]q QDnL[n`>J N-}܅EpV-\>Z ̛ҒpʪY~۷X޴S4¹r0jVǛ >ê6UV'7.4~\w3s MlGfg)S-%GenCGaGbzHOגMNN>AF9$--ׇ@ `꾝6m222ttt "Q?? \Ĉ?`ys? ^֢2fܛkdS;w5gyzr$SX#I>"Ȥ$*+W}j@_r6w 29BʚFڃ֪V&lܡI٪1S",8#207Vj9GSQBBx^^^bR@^!!!mll(ߙɈ#**jـPK^P ǏMD}!۟YyDyEM}#OgKR[nu:8u3iaI( ڰaþ} VB>|8Ν^__/$$ܜOS0l}&|xVӽtEbIEx}ON9zC/($)((TVV&%%98#***--]\\ ?N ~Ն{z'=bT-߶+_3{)do% `\,0gyY-;K:|zFb}AXzh?z؄UI *D>v(կT&!l}knx&>'NAW9Ww"`>L Oڕbъdf-߷o;BصꟳKVj鄘8xEVnt-rw C>å=8e+Ua"bl?b$3TLbѱH 40?psa֓Vƅ!%bP(ggǏ6J 05#|wY$_2h]3͆"8^?nIws2.8FښBAy%  J2$wWOk(N2#8 Ftt;⯭[s%=D 0&J. ˊ|!yYGÚ~}ED[[TxŁd5dG>FC W#3FOOt~\Dd38z @ljjj:d NtW[R|{ܥ_Rgee]|Tt*> 111؀yyy/_Kb(ihl,;k,=hh4-77.1w\ _ D6 888b<())utt@x}7oGAPH$)84r7<B< 0`适O.T_0` A\6 v ;4n-<y [DJ2(WIENDB`codec2-1.2.0/stm32/doc/sm1000_cn4_cn12.jpg000066400000000000000000001611111445607075400174140ustar00rootroot00000000000000JFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222S" HL"bbP$PA`YA$P@15 1$L A H J@`"`@YDB!e&2dę1,KIDD @" ̈́QdĹ1 L2dJbD"DH@%dsu:9j;83u2^K̎'5х\^ׂ)]%)QrR^9溘Ds -Դ&Ut9nQuTud:s''2zdJk=.m $ #oF{}N6zx[w{x7/<˪g=]rNo<)4[&7یNwnTޕ nkZ6z:s*cv^?:y]l|xs:2D8'.zDIQ2csls',>Lo0q;pdݯnܫ8V.~_{yއ3W˒0כ{'Oqfj32i۫rk ;W5Ѷ};z\z&=G<~iWG*atfv>˓˜Ԋ "bc/|JhV~G6hW.׉o-xx}2՗{3bR3eko^gC7i-6\gj:kʗU}=7>t͵s7)u 9ե;/KղkWJyhߥO}XUC:-swy:9pb-QklgϞ}܎#mc^1?}>7s_1B}~ɩ;ufb5lyڿѝ94,-~]sXutso9GfF1=zL &$"`DDe1Ky;vVϵ'~FVTs&])ν1ǵ+^ݯ{<ձ͍YttYN۔5{8 ի7юWf.`蝗[[]1(ҽ)ݶ6ѿJ>,gLA$!SOqr+N=SMoΕVUw.vXӲo30V@gOJIN:˩&Vyc +wcf{3,k2͜ ƍ79B uiKjSc{t1e__5bZsk/{k߸ת[rʭk[iMZX2emT3ƶvx]چv1ʞV2ZyձKqv:9=,R8n1j;5xk{8P,b6W]tzzhft)8ZV1_E78,13]}^^w׮ftO7WO|/+׏6#eyJוK9ދg)srN^$e1YJ`$BDFC۪9fʲK;hQbߎ7F\^+}ιr1ֱ[ ~祮~~Z|\S si%7SLvyzB}t/~>vVny;tLod@  !#1e&HHb=?^te~z!@PJ0#($Bd2BD%KR $+"@& $La9HJ"SQ ! (LM !0! /f$Ā"BJB`$}!yqvGgdqvGgdqvGgdqvGgdqvGgdqvGgdqvGgdyoEv]s=_r[ynm3<՜k^$!r.9!$6j2lӷQf?BuN9>WyW%Wmەm̰[>tܐծuBDJ"3q2De f9,2Ĝ31Ͼq`:~9ջ[Wu֚=8Ekbc\{{e+v,"Ӿ SuBTXbg.'F[kس/:ϧ=nT6uZRԳ:jE|9&cf6aF[tKuL2P5Cnsee5q2ZJw~=|O#?GF9ѭ^8ԥgDz3ǡBktMDBgIvĢHƱ C"c{&'x} BÞ xnKhGX Zc1֘Lu:i)Y|*;b1֤ZQ֤ XZEiPPN_hX:cXLU*j:َcf:َc=GD2oR!-s ȶn*x8Ô][5`Y[/@ռ2\H$֯YóU LxLʣy݃SJ#$l椴hb5mi|59։tit~|aKuᐥ@44NMt5ZīH ]Z\6/+;p-x:x5 >m%ΨG19CѢZcdp:FӆɹzaTpLg! Wk6J nL' %SFwBv4Sl(N~t.$G/(c$3]tmlVZZdT܄.>V5%[%(F'¤mmCOH[ǣ8H܍ƹ$hCC FJ5R/FXj$FL/rX4~,F'Ԛ2ŔihkR^VZmZ-*w;}QZ!<>|*_yU@t-iOC1Rƌ8 Pv4G 2+.$txח7=hu(4& و(ro,6aT;pQ@¥+!B$}EhLjHgܖ196c;;$[,M>M]!wMk4Q}mC:5t5蔦8 <K[Z42ri~!n~ePD&-ZME eiEqKUP &QT$'Q@I,p̒U[2÷s]julچ]"YTVr XN* yAJfU]?gW$=a]fKU *.H>ku$qC6pi$H)qmsՑOZXE SRoڳnVi]C 姊BP! %c `ya jǚA)!5eL.qy`Л{,a]gLh֑XZ0qð +vtz{X)#Dv[wvX̰]]ݤ1bq0/DD4)1V%CHa1kjJV1EX q $MF KMµP]J9ʢ4ŅKR |OԁWHڎVX Ag}KW mUp;M7dՑZkU&N18 ŧz+z{#r*[k*nw/ L#  <ۢ0R/ICCڡK5Khǜv95Zm Uj4D_ 3]"a¢VGݧNIk*)y'R]Vh4#1j6R"RFd;}!w1*=q[eo-wUH)P ʴkBָ^7'(z/GѭQ9{HK0_&t58I Sl$!26ieGf=P4fn*ƪh4> %E"Q^TqtRuJT]"wz!y̴֮ OB _yA &VQ%)V a СWrAG%6QBF @F j H"»)4Y[,Py/7lb#t)B$tN)I=M9\Zz3Q3 `?)_8:h"6I#zYuxZn*9R=-`ָ~3p+Z/ ,Z+MM;] Aֺ٧=W5"tcUqw)rZL +.K.eoXa{-=@dVұ|.)~1b!mMPOJҐ"+2iqjgֽ+"jt?Ύ6^Z$XfRdVαW$9(ԟn˚kN(3VPǮD<ƪ34fAtoN| d/H܈"rh܋9HӣJT{@-{{G^pg/3>\iK $cK^5qzԜ;-~ L%&[a mN tEm -bJئվ5O&ܡg>WSHRϚP2ƈzC<֟8f+[h).ېV2`(oV`{->>$%L3gLm o6ܒh)]{eeڞ=uR7Aҭ^mm#VT"h7ᛰz|,EA&;`l;Rt?v2O9Zƥu \IIu ԣ=I$ZKilgKO&IB_OJ>cQXtԑ4@Ha&Zk>, [O#[[flBu61Vx7Ҏ73bv,B˨.$(0W4 hiSn[8}:iTf[g"gH^V5y)SQXSLnPBkKֆB'4 >Zg^\whh,Adu$m5ϒW1:y^1 I{؞C:,n;aLB9IOW?v[GDNMݭNp"F%(&knjWB3m$"@ t}P@6ݦ܅]am-m TiX#Ju,[ x#Wڭ ZڶiE(=z:Zt9l-ဤܥ@4god=`F4sR[D V]s;bC"v${%aA{m[ynFqmvږF,",$$,ɶ$+"6C{TuO1IE:t{Rv-= &\';gvl!" і$)IGt K}CW-[#sA u(/kX?8O-,$w\=eo-q@(Sޢn'YCJ>x+Ȗ rYڬ.2)&mQ&V\+KmFh6j 7U2ĚdˊȩUPI">1Qu/o F2̘pS܆NI幟A%#UqFFjZYV(>nEgKk:WUӰ^lQ)A+ѬֻrZUM쵷/mu.եMfL-!>ɣ7R" /U=k4k42&l1~+Ә[LI#d Eb+H10iVZV\bJ\}pVkB֐m9_rU#tk5З!bVmQϮdȘ(̿MVp*nVL{HBHcuoek(:W/oщf 9E\ubz/4N+_IX&V~$Pb}_GtfY B +UP0E4EJ0ZVȦ JGY=+}x=}cbW籈Z+II3u5+RVZcZcqk\X֕oG[Bhv݊b Hf7 ׁc;b\đU\ۛ훯J+PBek+^ZV-yk^ZW_z9Ydݖ?g(;!TסX~F;Oǃ_e?jJ;!Ek)~oFbOЬM S1~ Z)N>F<| CQA{3Y)ns'}V1](êQo/Gi4ɮ)[PoX-nI|'hΡ0I 1A"|< C>d~ƉM>ږ2±QƣAڇ}dQzS!΃5_S/??e~ѨIӧ'I>TaRvgѡ_緁}xߣS{S#hoC#f3$I[L+C)AY$8DZl=G] CfۡZ"׭lHz;%"Ps\eIY/Q֯:?MdQGOg_J_e?ݑ<ׯfb=vO\:W/{1ہ tDOomp/P\=yhO\Wis>-=>A= Cdžob3di "I=*_۪\"I7#)}HZWGl (DS#J6=G熧A}:f?&1[0^zFJ9vtr;ӹ&du#%=DD=x"RR2߄ S2#87f<5xǒJ0;#R|#r^~Sy lS.] UŮ[Y\f&OKCHIR1C<3\tᒋK*c9E۱cD0tK(,;)vRQ5g7+51MĜg~QRL53m5%'bE>N bmmd2OQBdM9b] t{Z|ɨ'Qjj6}tbBJ*Oc<^5|svƒݱjhzsi=HZÓ-72FHRKB/N?s 2$Wr]L/qĒ9||lƊء"w%ASuCX215^N{K*=ba/~"} GOK^.:q*4zz8b؜TA:)([{5U3M v7GEG>q] R/^'mښٶCN5lhBkrsUQ69:&-B3])NEpYDlԆ.dڱ؛gdL wfON?Gw,}*2i5Rۨ] [T]Jڳ`*Re"Ihů){_GwYh1N_ rrOKcっ爮fƜ,F2G"V =x3VYȵÝ;q.G/KCmG(Pkq^r'(FSǓf]ŒG q^].%_/Ѣ((QEQEQEp(aQEQE{ثtxzG-hRrVEkҴZ-|<,\l> !(FN mؑLI3`r٦bOߋQPQQ{{),{'EqY>L^b]|\gz첦&dd6-222393s~Fyp^ɭi6sfeH{}N4z ^) !10@A2"QPa`?ȺN{/[UӪmlߦ=*Ͳv/(jŕS:izԋښ@K1/LhjN4+{ >E-ՕWFKID.ƏDNZ53/E:/ɥ/(ӎ7j:nu:x;gD[Zw1OeD^N3S$u%mӸ̭ω''p W"PI#k%r#O[кݞũ]ձ6ND=4uk:C[uk~ܚף?J;5vi'C='ugJꅹi>OfIз!C縿g$DUL~NwNWCh}Qg; Cdmm7}n&tܝ ,bQ=CS'N[g.-#UI)>i2$~}v7{NY5#!֌Ccd>FtM,*H ̧SULbmO.z"ΨTEwm 5ASf>-G,[٤lԐRB Zd/5&(|l>-w;Ln%f;N5K:g*ڒ$] ,DNEҎ. ك>6|Lycy]+x ~%dY,K%dY,K%dY,K%dY,K%d;K_[/e"*ă-$E%\xt>BE\xh6\xAjѸ]ԘW$g*Vc㾊E\xhFzSjN=ZtNmW$6NI$ZV,[Ps-$}3Zy.YTaAx+3vlS;8MiS璗D̮E+Yb7vR/ jN$~&12Yti(Ȩ1EPU Sʼ# DC ̫ !)rc{S8$3Tb=B}& bae_YhH0)hj*LOunL 䤦'a rV,Sȕj YzS1:2LN3&a(3/j 8('8PEG'g}^]YUWWF郊đd}HEzETRۭvܵJzGF)9 "*ɁtfJnW!KP-Qn.t2Hsܡܧ(p-[;B/˩=(1zw@F&69UP= jv7V{@tR!e5j}Q 9="TYdƷ vܧ7;AFP}5-zE$\(Z(Dbe&y#;J=f rMk==SAϞ++ scV(v^"3,I/8@G8_a2ӭeK'lsާ!!48w6 "n#a\j2! N:;O|uKӀ0 AX'*V Xy[9yb귍YZ(/ '%ⶊ9ܮUFPE k/Zpo:Z{PhIF-7$NcwzsOل(nWnc:8t-:B4a8i0J;nj&[!A"+ܱ:I-GR 31 S?]:9 ٝ91(M ~+:&%;&`Jnv)fC6 &񸐊m)ܴaLb74[!l8[i6f^kOk؆+R6MWF2 غֈ4O^{ћ$8frd_%x[I {a@1 "ָc`:  5+FeMitس rk[{?܌ ,IG/DGz)22Tr>t18PPa;܃k {Qo$[: *\rDQ0T hWQ{S:&4L"/ܲy* 'FNm N#tk1IM"QM\qG(VC٠XxŠ̬ϙH%'N`S{!p X $4;BVK603d5tЪM9W[CҜ3D"G[$40QwrVTZ1~HWhULBkfrQ/my-`$^Bv@4 ܈DԌȸ첷UJDϔ)4jԫ'D]lud,a'{DrOA (ʻ% "o]Z^QEk_֓nKv,)asethuP9Bψc ygb[K3a䌩 5YrDrN,aSNhP͝:U]Rܑ-t@o㢈b6S/`UA<VoYEfVoYE+j,3ժ{ZdjlMB2ZY[?kG0[f}18<&AC5Vز6J[ el5|+<}¨⹚4c*ETSۣ7f3h=k&`L6iPÊnYNqLIϫadUgetv8t9sDaG:+eصQ 6(og/4L֔'/-ʋZ yh=RpD=E4 M@+;vKPSi)ÁkR2J;,`VIZ}a`tb<4($$}PQLVl .Q!5ÿ]VS_f. \7u4Qέ'6]+IV`pWEniG84 NN4X^'Zy4DvywyiNɹ6<4]9HvHqHfYx"*BSzFouj"܌pPT%ܛe0kvgjPam3MА$ L.!͢9v2LA,4E G,.@?鲞VαG ̣:|9JqZǽ[[[NShM!SC{VV|Uڸ. ~~uڲ,ݦT0c֯4&/U1DqC1ܛxUgiE7(PB 3Kh"L ZGj% ˦V&Lf+{se l*emsZt4Ħ 9vR$oS,L7G, J"|8 MR({/zG`Pgִ։sBm7\(V]'(Z@QQmm'{zIBw%)meJoZ\S XAB6,J-oeOTZhv ?U|V䲷 QElV[%d-J+d[%lb=An,p4UXe+dXʚ晕u.%B*R"R*j䵂i cs oʹ[E\U*mrW*6*sVU%+l+hV[EmV[EmV[EmV[Khm[J ̋~|$]J{PGJ'7>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>pњs+s+s+s+s+s+s+s+s+s+s+s+s+s+s+s?'xؿGJ'N0d̠9>qP[I[I[IQzJVVVVVUq}%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o%o}%o%o%o%o%?W!2"]LWr?c6Dᖸp(jV*KtKvkal-5[ annOG櫃^ku~k[Q em!c1:]T9N ˈr: S{YY[E[Y[M,.̂cxaϖ>t#> EW?~*Gy+'[ev>3>ϖ>e:9x"٘R4SOo7ORFՎuem)*&l?J??4 hngr颩 [>jzq3叹є誑 eOGOV4X4]\~}gs԰V6B(C4vW/([<=| ,}RtQF~X,}h`(: |D2wVMoaF7lyo,0?cVϚz*tHPS*Uv__| >Ly<S0T-sdsTl&.jTnF#PĄa{p >08d (`S?~^o2pyagDK cQ!T' (i`*Pg| ¨쒰]*ڞkq6uK,{ 2KB`I`ZhS_#r^bN셷~o淭[|B[Vx5o7moڶS~AUPa׭;gs׾~푇+T䶊ZupGMì'K\g ;ۥIuR_d^.,['*X.0Lgf+J&W^yqr^V`xxTQu/;Xt_Yzϑ|L?3_CK'\DUoT[=V _*/~Ky#-!UbA:En]Db'cph^,:pBYfTЅ2;bPSEERdid%3tyNSX(MIY :1ñesQ5Fbn٨Z:O:ecFAE2) 6ЩTa㞖e?YE6o>I6Ne+0E^+7!%T3|kXb>!тXqbV阊ڤޕ(+/J+]3</jR18Kz@0qI&4.[׀\+.d+SQCOHHԓ1]+Btnī$j^lWۂ$Ytf7.Pp˺lyR[YgԖ;*1r/0]V~&3`ǗCdPD`ZxWY+i`[֠ݽzNeY੊gYb\rr1*DC^J&f䷘A2QEXӢ0U+ _-8yG%ZKb 1Ћ -. qW-27" B>2[[ eq3fPuuaz± ckB5zzN?*2ƊQuBbXU6uo7ꃔww9 ]O?bcTn%gE\PљJL!hEfImM( 9z *.Q)[ThWR`4r|3b SrJ+yoy_6XN˞dL.M?ݡr3( vI8κKe+hC)uhØvXicr:yxuM5B묣s@UrO{P#&zST+ R>4R/C9a7riDPj&8qx,2 8b[-F TDBz˩++rfңp_ y6-5.0#3r="/HmݪR(s2z3x,B_.j !laJ Aa#J\nY(WxS*ewfӷ-%mm x= "*:OvIߤ4[+f6CAev,PI-j<~jk;nzǠ n.Φz1 ^%@ke5CCVQRʷ5;E[6 C=[ SC%EkNYb[uRUsۗеjD6(q+7;jXw7d[jVX?Bͱ *)bJӟrvJ6zjgĞ$7B-B1zՁظb\*vE[gR.;$VK0d<P}bS%Hextƥ.1 HB鸀n9hPHfcZt"&k )]c1ʄey[/ sKzRgpKLc@~ji xu8jdUloavb}%流ÔJNSm̵[Ɵ/#e_OUImĤ49̠8u6~E Rmd%'Am]}5?y蔷_rV[{).{Av?@=o60%V_yoǥp)cǤJ1Q\M.jZ$> /S%\r=r`<+&!Hq/:֞2+f @`#Cp7gMÚ?SC &E/-58sp I(;(-bSXzTlЦ ߼vs}|7rԮ6=R[1 / V_qγ%Hk "MR.CJ05T BeXpF{ _Ya;婾s&UXe L4كr 8Q䠃{'y:4u]Rv(y?|?A_P0# |%m*^ 1J-h5;MVhPj{8Ġ[lk5Ժ~sS9k&,(1]KH#&aw Pʤ?+TdX`*U*dd l0%sa:Mhp6{yXoko 1CXQuh<%tLgG} "W ,yAe:S(3өj%؛IZ%G!4fѢu) 1 רD>PG7bp+Dzd3ST#PsͼXW7#Z2ndCy[ïQGj\[|˭9 W4!W9ĴN1һ'pwe;{Ghй󘂴h-`pVyܸJ[Qb/)\/4H`T"ڎ xsB\s0vlUK 6!ĥ+gfZjo\!_k ԢEjX8n5[BdhQ؛-L't+;%~+}p`\k@ Pb!gPY"Ϥd30VK [J0]t~p@Q}\~l5虙:Csa|lR̈m,J! .Aq5jkyemlrn`pJW7FIJk#U/.j)WTb{BUYEGMİ/ų~?;=߭F#@[8.Qh MeB3TW-L[VV|s0DaEfUեu=3,"Zx#J{@Ë?S ;⮽e)ܯt ׄzy7w/4s*@`EBˊ* 6.K@x̂ ރfVG':&W|U UZqXp'.yP<8O\ R^8TgSh8Ysx^eq9^l+;.t1aCˀW5ʇ@ _IKQr8:1hFNg^K WNai:Q[[6te+; &jS˪\<*1.& 8YIb_7Ox+]snka %S24q+Vw;r!KgpR嚁c̏Yul:!\Wbxq;5+J |2~7n]Jt*, 1"pK4 S f[L9\ю/j^ԵR/ YnX'nq3LC7yn0n^19Y>n' ~%5ˁzEW&)ks1;efgpBT z!<#llAKXC?.qȀHًZM$& AM#G!w Y\ʌ􀶔'76|1깏KR*fX츮Yu.l;X6hn R'$vт=bVs͸xk\^9uP7;Pm1}eK!gHHȣDTz-s0:832>7$h3nij(傯v81aG7Z8xi]fO|grfZU GDX‰g@ǟ>im7CK.(h‹pRp8AB nYʊ5# ^/tp+v9B6 uTC^zXعɈCEURW,-WU(l"FqD%k(J~*nTO7dQy:/oXl\a`LsYWqioYm7-rqXUKڷ,x!0Ҫ2A}%QvS0#.?yK95!e[6)U,^r֦7t:Bٟ[mQw};:D1p?c)+ѻмx*l$4ib!q[|oLsߤ&|wR\ʙT2N N 1*Űr iOizkWCy_8msirk&?7Y,,+jZX LJ18;ik[ϜD(bq-ϼ0Kiql/(Wsw6#if>幓ny { n5:5=Djpu3$F>PRN@&D ȸdg/sS4e?ܯ_TKטסF3yj|H[(-Q (OoY)8 WpWE] B_F4vXU2= iث'QV~#E\CTXS5]gy8+߉=OHk#$<(eba-LFZ;*J;2Qˣ/hEAAP['rgr>% ꛌUkH"hNcrEIE^e"Gp-%}DoTsytm~e*=z];@7/ , #!hY ;ҹxܸ* ;Cd¥SeZĻ'3ԟg }󗤪(Yxћ>cw`^Sc Ӭ_$wUqJJ߬+ '23%1egWTdU"veTu%ؑ1/7>4ג/t:"eC3zv\Q"8$XeB7[kRZPv q?"%6%.n:<.+)lzD8tqemLbhk4Jҽr%gZjWЫ{!i oy>4.aLCvЂ31bLN$~}/R:I[h}{b.;&LD -H59[8¤8bT)Ԇ ,27YkH)7**SohyD·nA 7\ܽv'hU^b=v/]P/Sq5۳fv"@d᧕ jc00~hm0QE ӢQW!p9C<(a,丨~Y["wM;+Uzz^XB:5⮲|›%aaHT*TJs|@-j'EVmPGA#Pd2HL*Jr>Dga*7fnk`[@rJtbz0!S_2j¥kERFV5=ENnwЋ0%Agu"җ H*]GH 8Uhӕȳ@A* I1,+ 9T.uޣK7v1^Of 6Ch ACȩIʊ )py.cSY]@WP9X+qe ㈵bd9;AoxÅtQBʴ<?WY p/rs>r6q$pj,;5U~VR((QdS}b½Y\:"ځЎ6.kP:=vZ3) w˼7E50 rfG0= 0h-7ܞSng'yRqbO'ҏr?ПO> n:P:džX,H0V)|?܎}g%@ 2[1)[pX&/T̬+'6iL)pJe(WcUJRBOZwFAl.e7KC) 7_w+vYIb3 *W د^v39<8__~|ϟߟ>~|ϗߟ/>_~|}ϗߟ?>_~|}ϗߟ/>~|ϟߟ/>_~|>}ϗߟ>~|>co=Oߟ>~|>=σߟ>~|={7Wo"t;3*}:v*zJqcZ_nG-V[;N|Lψ9g3i{35m|4OۘLw'~_K?COۖ{sϛ۟>n.9sσ۟75>?n|~}r qt"6>I]<؝ i]er\@%,4e(*KoiN;8 ?9z s-:`,_52%ISSFGtn5X r?oX?CDVbYX*)PM=eb5( 4+' -1,V^D\{U:!Lj,*_9^_} d3K(XW`/@?UXEH I^:'d}wd.9s5Ex Jb,D9FV&RF|wxb^+!>J }!  P̠Y U8Ŷw0@tZNGM yz~'c x 2y'_Lj_Sk]!uu]!~&1OBr9}a%A' g)gF~-TJP*TRs7 _ɯ,F . ̻2$[9,CY!@T Qc I$ 3IUs 񱩜%/W2F3}01C&(q dʝDmCEZ9b %J0@ܨ?_aL^9\3"Pb0`aw0V+[1%'72\q{Kʕs1ed}Yea-n;̻I{|M<+\=r"flx6#9xͧ0 G& Xz(JJdCFE[y!ƪ,:F&@u2A;9uۏ rod"2 #Ei24b{aUCq,~+|_>5Ss`&2&YiE wG)\¥bv1lgt!pۏtn$Q1{XhƉJr֝?c P^(jT纆[|8%_8>?O1|G迿< O\WTp!ɀ7('ԗq UxW\?>7.]̞*Zs FnS\/XX<+]LjM|YsL@CtgVP0A䛥N񶯍SK0~q3%bQ%D`L?Ek|%G%M1%1Qhs$4 FИ xVM5}Bc/Su> t=ªzWLx hCvPlS* \~"Mjc26yAK#}A#sQF]+ǽ.T< ^dm9[ Fi?ˇw7\1w큘<.%q\deKl(/ω}#h 3Xu!uL-by,j(| *OYu@:-\:?VZvb]Ųbj!Fɉdbrρ>A ~pF*,7VB(zy:ד.0/}}\=av__6r> aPͅϪ}Ŝ]qODJe>rDKR^^_C.w_sn}1x;DO"c i2u'p[inZK%]`QR@xWğx- 98v^. oY)#(.pVyk_WĦxd_EBf۪!Dz`m`|D< # gTIF3>çZg7{ٯȨQg_a˲;EwxH1 >%)_88|ڧ .Ή(e·م5!rhxroQUC"܍J6m9l>[zHw)YXNҖO7EJ޼(?-|,Ad1f%z}9uRPqYzo=)dn(8lEOޘ:B&&%ucıU &_zHV{]$ݑ霡{[ٻ :(ߘaP@\r,&hBLZCk0qKX Q r=E]_MGy$g v2=',"14 PTG+;bDb42w YtoK6*"PJz h_7qhk.,"$ ,r'Z `=O}?T'IDuoPzrB2 7.A.Nͬ+:T.dU~M)ptNE O!&:zy?w7 =gg|)CyN$ƞH4~]p߰=65 Ѡy"Z[&2xѰ a .Q 1e]}%iH#qG #_B5q`8KޛzSaRe,)1dFWlXjw"$> fy5.Gr8Y);%vRRISL5 bQ\w_~[y \2LP7wōc7Z)D6+A~=ᆡ@F'5cӸäQKE!˴@T'h@n>j_BDU.OyGid0+2Ǻ<Ƚv8y^XQF̰ mo1©Ua-&,S. OgLٯ4GA_4qFe|+~\2%lF*Jٸ3 02IZ@b)Tp,*!fAJA ~0[nX Q A:^bܘ LWNc$Xa<(Z/v#qÈ1DijQϭ.\a4@B-7GdBDaf-ZmT`kQz1+m2.!Svif*g@?z5/Rf#5qUfI-00;@³i XŸKXbO0FvK;\l6b|]2ϜO!1,pԻ<0 9jt)7+Äbq w0W/_RW}maIiħJq)ħJJ%8SN%8SN%8RQ)ĤJq)'RJq)ħJq)ħL(B>iiK%˗/<-=G_.=E"FD,W4[p"*lYFLAIdwC#cG$!RNB_QfwI ~J.wM7 }5讽0X]I!kщ讁A#> K"z4Z nUoPKQ[pX'h)y8>JMFYp}0gәXs^&̦ xx ݣ eE̽G@)Bo0a\>=o)!1 AQa@q0P?o^ oM븿W_S}>}IϦQ?\@?ڦ՘j:DU9B9ubI"n&Fmưa_iV za&|+9*:E4> EZb|wheIV^, <.669GaDj2M! XcT~Zlrl,2hh 3(.G-(H[o*iF{hM?:#j5kG nDtc1Nþu '%B8 t-†ԓ4[~>#93Yc)KB m Gto)DmAA\a-AE7E!!WLnO]]/ 8VwDgcHBTŠykhR$rVjk ȅmLrwE `B<pZt\3l>p' mhmx"O!yWȃGqw8,XW#fִZ'B 0"bzГj[C9ZôXjV>9WEbY"Dz@84'Eh5cBGo?.=B7HWcu3'6 MT6k| |/&w'ȏrJnbQ”ĒpjkGa)ciS ;˶ &dN1LD> ZqM5H2|b\^& ҵF!4NJLeFFij(IF,Dl"t'%Hb4&G,w ?`, ObЋp>n8C"BXIs𺔿%/~K{+-49D3Ye_{< W-!7Z1rL\!146~1%bGL!:!Ln<$}LC{q=Ǹ{q=Ǹ{q=Ǹ{q=Ôr{q=ǸTHW$Ə^F8ֳ 2a[E ТM3xx#G/'#}ʼn&6lGaL#.Cdml]Pk%U"l+_#ACDIZ!0,,iPiPގxYB,4Cw!:B.EIRee]%eQ& KXyHhze$D  LBQ!' QF:MaQQp({EOq2!2bQLL5bnc|:XVF:{tBabû ݄#rw+!1AQaqP `0@?نfyfkzn_iK>}^c<\RcLC-Ŷ\zAܼ.cS[^f}%rup̼.З6\R\Ń #|GQJ]1`Rg2,B2w7^}90s1pj\=1r<̑ץzW}9.fsr`Y2,).ʗ qzKYdKr-Թy :s>g}rN!&!SSȷ3i~\X2̥e&LI4DVSѴw0˗z C/3sO\ cfVei`K7)6ԣ̣+s^f39k2ni6ryJs)+++ ס(g)Gc>.Zn-pr187./2ۡUE?(\CBYW( /lx3cЉ_YQ;5kqy-?It}b@s)97t>Tfss1*'B%Kv}baL)WOԺ(Qu~K_쀨)'nWV~G]~ EȰ`㜶cXɀǙLv}Lų ٻ}X(ۀYSͻ>B Ybu>ŢGL^*?zCMwMfVN,.0Pɿ&&=.{{a{ŊX}2 eգS dk)ut!6j3*)J_Wш E˴" {1FkMEՂ`{/jT*)llt`E"Hp@h!qY03B U.LQsjV89ߤ+^U K1}Y~cH=VLKQjVbcg EDO &dD$t6z hՠ)lT E5l|eʅ6Xe C sY0s]}ݰb*%8lT^<%ª9g6Zso:~\6](TM}s,n )9@^E ln\+BOd a*?KSټË3w` 0M !ax2WH'|~gBPPnnPzZ^ՏFZn ",'Y `7S!̠ %zT!sz32a̾1ֹ \)fT~j`$J99]`ӗ= M#B@A]NܳQm͖sW%֔U  7OW3.,N[|˿x-&;^Ycv?YRӪ+F 3 aG_aC |%|n-Q%0ߕFIbr+9 BWMݣA|GNkj1ʱ W4?阎0`uY" M`Ys&(nEx@bd.`K]9ncI(3#BZt"H&q28lZB0';RiA( ݤ?N(P.W& (9:y1Y 3xf]'M Xakt1䐍aJUҧZL{I]mxkm1¢PZ[%c( fPZC +((\BWe誀9z|%ұv\P6 a~C-MWh-gqzR !K~0 kRl@)í7^ҙ7|~3 Qӟhu(QlC+# g<)Cs}fj(`!E}Ӣiσ:'@+|N2Xi "p@FW?X[*#9eA,oF '\EJNEY TɌܢSj" "ik lhyMSlmlEZ-G0S@!Ĕ+\XLo[egoP9&23L`?EUhwQ[;odE KSY1Pf B#ξX)anIQ&N5)⼃JaۨA1LW8;V9%t;T4JbمDB.Ѵ@ۍSh/ʵJ֣^w:C˔=x$pVt6mM1H.lx_G$ԼtEw ª6p\sa iC֐ݮ=$;܂n p #;[Iwu RvzLLZɏy[rL^%DY7w\Pqń9\qkЄFjM`b!5RyD.3E@Ix8{t"ŒxD6!@9݌B-CbJwD+V@`+CO!`i3ݢ9kfD.+f`{`E#KLJZ{c{/(W&sի3Ka:tvn4r ^mߌ {/¡C )R @dç)%8&Fof }9UWJ^Mr85{էI[ºEEb4T u{ˉFB*-JFs$Cqu Hse+B2k )%|âN iʣHb/7$a$:}p.^LLR?YM!gh‡:wZ設 ij*%k{@҇/W2`Ul(WŰ4,:^%$B,pLIWr⢣*]zm|:Y0\|Ā|`h("M Kn`тQX47<2Vqd:eEwgHCnmQAW E@QK Q,_Xx*<$oQ7(؄ 2g>|sm^%ߘ( { KfQb+_Ԕ\k/Q!Uvw(H_?s?%fsZFZrKy2 0,BJĨD̮uVR`] m`\Ixk* =-镴+ux}9ux* /g'C`LO [+ Fc̥vTYK5+kzPs%{>we[E2 u2HX{\);i94^lGi Z:VaUiJl@_z +!4t|怨TTr  v &^r&*amZJUc>mYz {7Wℝ'1Vdz 1+(8"ȵЭ"Ǵl<Dx$"Vd:R;?,JBGw@>6e]ۦ@QpFUЛt()JU.1@c8ܯCq~%"QF5P9itS%t[Rw)x\,Æ },TǛ wi{9kJmc_ < N2ͼn7Z< wF996uZG{_<5JrsQ6.XA(We r C1rk%-1H.QP] >%ʙrpxH Btf"UlӜ!jGibZ;hlZn2V7͔{~ B L+.)r hBԿ (ߴpc [U7f%:%UvP%er;e%q#E.G %^}?,d{r4:]k ֗c͔m+(Q"TBOxPgИGj1N/5ѻw1lF@΍vܴ- .fYiocXQ׽ԵwA~up3=3u^ @ԭ0Sb஗PبEUYI~%BI]I -yRuwgٗFx.#@⭜fqA|l.shTptDZEE::x9 WpTMSH"d}PնEיmcy,.K#-۝*f~[P*K]3[m^a`H)0RiY0v?:Z,#5yChM#G%˚5s7c0#a3+s&8ku Pe@ Gpbg' mhA 쿯f`h6+}(XfP{s6 : hZ-h~qfP21 5kq6;z~ @I,ت0c/yba DÊK" R*O0EZ`]jgLJ_?~O?FaZ:*zh|:/M ^ ڎ wL }JV'j TAň g#[z[@ZR|FE;ASwY!:*Z+Sl"|QR{3 ,PvhPB:v>Xe\3K TONH@6f!UU_zk7{AaJTf1s9,(&ehXWEJJZ%@:4eiQ4T+A[W@[m+4hZc rȻ{EmNy9ef4;HA!G ̤ }R@:a m`=eg<LnI]SlfpeP]‹Aƙ%SͽU@[ԫ@:B^3DN3FUC ~!K3.\UE*\Kow7AB0yb]r(V4Y2Fa'M{6l+gx `Ǯ%{w9?Cn`<>R/2|%(j sˁ[9`lI)\xB")"r<%ai)WIa4}|FT.Q[Ush(n#SB[|F:۔Yu[bDwġˤ̴Pv69V>eVrMD*|1Z[nwѼ<ʛ^C3jx.6?i ,.WhFG5S ;bt_ 3~n9u3ڦ[(x2s`ʚŵG}76caQK!x .p? hh3XiBYrr ޢv[! ccmBtKiq"hk;w2T̵fM#M~![A*Da]1#4{hԪeFHT"NB*hFrwH84I~xa{Yz-+1$1@VMFtuԹ~\ڨyj7_Xf럘$ XUOȖ-66;siP3r -hR,E=+}XqMP)0{|D Kh77KTC@7kpɈm ]QV zšQ6ɋji?J$ F+k)kpӵe`hv̬׼p][̰XBTvDZCaqC ]1aKp-p:E,3u܈܃k0va*3Plb26!`)UcArrQB)u# BrE+؄0s-~~%G8;]|Jc`A\@2NKU!NiQ[KTW9YUÝ1—f=FB!@7\X{Q ;柈*AhbtndaJg@m/vҷߜAPf ok33xg Ȋq;c023+*\h5dfƣ` [qbxVa(/5ҽ 1qW/b69REt6Έ0䪽 bIF\X虨3NUElHw}t,$b\d0(!3 9Js˴h":Ta6-,DdU}֕" %Sfͨn iANhկ(nҾq鷤-$[Z7 7cX…X7@HӍ\n8Dc\Զn.b "B ,g"$ +Y%J~.)1@U/`XeB(AM^rKF !:ԻQ,@YspM1` xzDPZsEuuV/ua#?QENC^H;U( l1Uhn6^↯Y2pUy,8h׼Ag%K<6bU1ϨܪFP:~Ud0l%y֫7.h/X~-Zr c[a h=vT3E\qJc#0mZdh|ţJϴwAȧ`cԽ2a`28s : PR͜JTls-:fĭ$qXejFflG!;_),3;+fw(b*Ε˞j!k\@ F!jn Twa֌t!`4j`gcQcˋIP`U[[9fVE/w%8˹'%:*LzfȔP}-m;GcǓ+aOkZ0}%Uu2kR@2˩z%^+k4V$Z v׀ 6-{K3^q R]E(U3Cކr =U nn qYzTOe[6j;tt"3km8, L"QºN>N|-V :mmxoRrcR np*dLdSMq6ZslS-G !ðDŐ+6Ab0t ?02*s/2ؑ.I#x--ܯMi+eAp[7@F$f~y".DW@xuTvyB\;XI@s6KC'x =cqe۩eh;. ` r `N:Uby<*g=jaG@EP U*ܷg1PX9әpnA M{Ag JyxY4PEc 5GA73Pw *5կ@avACxVg 6l*&A(RRŠ`UV`(b xn-[lx5@9S2GR;hqpx*t!}LԪ?KU"P /vYLnBfKjMuW:%24 Pcpn5Pa}]9aBA՝F!ejADDy0@,n!{& ei7-p#azU)vp\)op}Gq ~4:t~Ѯ+zu^$ykuQg ~٨.T Bb GR)L U@n ;vBḭĝf 6ˋur9Ewl%P[ ďdfogؕ7LDͰc LWڠ 3ZX|(hg+ZC.;Lϔ~2^Z2M 6R1@FCSN!{b/ZZzYv+m }FŒh>Up񴘧0WvCD-LMKВ3=xuuКm tCwSlUYv\\jw?+m\^̨`mXVm@:^hiiT)Mje*EbÊ< @*9gXF[eZ ]*%XʜHK+1nKK'؜L" rYⳆ 啯"J*)%39硎a"#| Z d JDKUMpA( j,'oJ0cA ͕UZIkAnaoxtaU)l..+|nآ 5UF}{Er?S0w@JR8@?Q5kuqQX\Rʕ|jUZ4-K$>f+yuvaPpX|7)@PVwbW0ƥA#xg)G|V(P/ &"cUsmwrc̵ Ʊ̻/JqYeWaijԮA E {b ~?1Q,a,s_zL=S`SqN U@ ]ьZm5"S[0GodMbe)t@3Pnr aCuRVx}T:#d or uf&Usj~&ІՁB!q/8gUʰ}i{Y UfT(+cQJK*V 2hZ.څ$ PGTc Dg4N9!Z5=iV%ζ`芍1E9Ku Frl1lgh.3+2NKëmC+VDp7BVE"k9(YRsʁx==Ǚ:U#)]·F/F{W<KLXRa_ 3- #,"-R#n+V1_C7/3qu)%% gXh.۞ [AE뙐ed]ZM{/wu:BwIuQfH~Q @3 6nlQ0=[xʹ빗 [tX ѯ7c 2/TY O%^OavBNb^n54A k%c;h z}yF@0F\H4dDck`(rӎQ} eӽ\^zFo$vU̧'Z^|j6QSŤ$<`rvYό]C$zY^eFiTL37i |ŰAfj˯ij1 G0)ls /vLIe0T6, ̬9s`f,#` +[qCE*,Id9%=*Uqy7Lj2a 2(-y5Ґ#kcLIl k%Эуn5X ME.3=e0 Cww7 0hA|9iB/E؁]4Nj HI5$ >GĿB [1-EE(a1} ~ 3Ck.-%3C|bAj2ʥ)A`6=(Ur? UJ:zj;,y/ݔwO/Ar eQ~C5r@oDSB`6,YAE/6`Gu:Cie?DcyY' N pv22wH`QHEu~bZ&nAW/hLZ. Ipƴ!-RH+q*!3(]z8ȋ1X%[Ž[Q10J7A [̮_4X"QoY8JzBg(oˍB+O$T9y` P(lW5.iP7?3~ķ<Ɠ/ $ #0G )BJzBRn*Pyq\Q"m'HC/cRJHJfɢcMz&bWrGѝ)PfW0!OYeJǔ?op'W_?reQ'jiy,ICteDp GE9kiq ZӮy{&0^ADx2|\s >;ǏjF.j1ŎYFkީPQ-6g7p'rWEw-D -VeUh֬Rꗳaߩv_4R Rh%mK?1I΂^[2.*x5rx`qlc6 4g;'ʠ$nw6ZFU d5M% S*g-7bjXb:q5CLЧ(_IKI XpI3*BBEw,s,--GpZEtJ+^ # X83)J e:@ aC`H4VCrZ*wGdF^Z[M" e Yhn,}_xU]ʤNVVB7GFJi=Z@KwUN}jB ꆜm35mi L=%VDNE'r`~',|j G/*mCf^^{h?*#H`*CmxA󍹹lPpKu^G|qjBPWK,yCóW įmENc3 b2`/ 9`4[0L_0h@Vp\( `4MV` Y,9i= ~!w v,BYN~يF~ 9x;ɧ̪ {G% ).4TF1 4wW\X}DiR^رY,tY^+sZnGiyIiJ Z1JV"U0j{&e_$@SJ^@s,]T)s0vd `[2j]U!Nu(lTKH 3byPf.quf r$EYԼ@q cpy{#UjUxhxkcN~ rK!~FGvYfBtKN*^:v@neD0xg7h4Nl;`V8MK8Bm{[8̩p 8"չQ_Xt5rYXEBֱ5WH7 T(c)f3C|/Ud$Ȋּ˂}٫%}-3 gMNj05F,b+Ax\Xv<' ?YѨ(!Iڔb6z.^",/>Y0 p){v]UP:6*)~LuhZj5 x%@q0]W-r*e@99Ġ ~XVe䍣y3(gԪ2AyeHyM5[yF @[;,x9FAat| Z;̥)1X.vr-?0B=O5q1̾ :, %H9"1ʇaC{ Ee-esp:K4ox\_$۾hwd† KG7e]?r/(bR1ځT-yV\Z >T:UM]q'x貜f:qx&=ibnx]uSK{PE*)-p(U5uK9)=WΣKȬ1xja Ĺcd\n ^~8@j1-NfԻE쏕{Z'̫bu!iv;Bۻ~f*cE-F( &L( ]мy9s&] ZQ|la\ P9J3_PjX/Vo\EBǬ´@'rb0&[`%;Bckl_hL"嗊 "nJZZ,&1 B LEU AbPNq+>uy&qu-AK[Xz* 8G ©. 30enCjS}=盈- J6EW3Q+ݙzfS" 1HB tX7QCIu(!+*%@K3b0`K@6JSY1N``PXة"Pұ̦.l+}"۔;+Fʭe񛌑ѿg25CZP *8Kk24=!@e[aka;A]I(\v&naY'5 3*HП_JLp0ZߘBHSj%fb9-Ձ!V ’༑J%*ə-ZWuzks H3`E//f.ж"8tyb/21pG+ڷwQ >m!1 -es`3N!W'HhBm*qn7e!u̠+E Qߨ*!Ci92"FP21ys:xTѨ% 9LڝW>JSAMSUNGSM-T800HHGIMP 2.8.102015:02:27 18:34:42 4 <"'}0220 D X  l t  |      |b  0100XѠ   !  6 2015:02:26 11:11:342015:02:26 11:11:34ddd d" 0100  Z@PASCIIuser commentC0A89043AC0A4F4AA1B926ED2F558FABf R980100 h(?HHJFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?5 $^y'Xv':5F+DɻۚbъRR)iqJ0iÊ\TWӈmyd=P|R=дO2%~IKXZ00 QbyDQ+.\ @}clXWSKn2UP4RV߅uLiGwm## !I( ^ )搜SIs֊oZ(h/zR*QQ\s@ iqKhC2hs@'xvWpbd=~@3amy\r> ૛ͳ_oP]军i"c^u?SޭbUX8S%"\?$B(vtpq8Pvf`\B0xaMF]k=QchN@PHMu^4=㒸 1'L*l\bG O8?5[#,suj|%)Z弅ћq G\Z^Ya`8;lU啝I)dsНia1{Ps2߃4{c6H2m/UU+(ّ<'zWlRG2RVf*$<\>bwTBm@U2@Rg)Y+%k ;Rp,f8_m[Xva7{m[-Бڸ'rI'Mسy&ͳt)\eޔ\Nq-#w={V%@+oFCy6q 53;5`>RZGl4ugJפMQEC ( PDw5Bk?H'Dk% u NB+JHFOV8%7;^ E$6/C1*}@#քmch[ sHgm!3O5e]Jp{SMO-ԬxUsL5,HYT2pyP\{;Rr? -kj$vܳczI>k3d)Tn/z*~d8IE.( >^OEba."9pqW-z'gfX>BW^1GrM31!*eG_ 1WX\gy>ZsJA=*J7zFQK=ioed?TѼ*F ))j E4fŠLњ@.i'EvB@u❚JVѣ4ȶϩu ?,6=5z{7(jњ^ap5$s)..2ľ'{k{vHTcq&;JmlĎ3$M $L& bNw MPSVϹi0sVtTt bE'4P"|+.otsaտ$θ}خ3|s߃!vסvp2O.3 2W?߅ڵƋsKq%(Ul!Oһy%EVF2 VӬY?}Ov{ ULz>ͭ-Ri5KvWN c|:Sۼrjq}ZnVo]H,eN __ M?ӯ^M|^cmLzATCW*KKe]C)fJw5vŊJhhO vM8Jt'3zxKiH3R3=陬Rf4Z-.˫.:'dv;GJ7w|L24HENh''jM@k6OAA5BY ܆(BW*( 0:vCeX@0ii)n3E-KV9bD82#?]~5Tr\ǽvAi(ٞP\Z NSjVu9d̓w[j:O#(3Zd^X\z]YKwc갋W=;+%e .T`:n+e[Ѭr'>߉=;~Ğ lGMUVIx;A'ANm[JF-ڲZgǮF20hӧj rkvg&ݳv+s^mEaxZMui۠E\na,{XlBFF8#ڊ4ZgZr.Inj67k+2VһD,wS@1ѹS/-e8 ?ZƢjt=Ѵ*3cPYcg }{Ʃ]Gkv b4H)te85xYdB33A\pG*ďw#Caz rޔs\h I1" Ȉl?YcPSm(YrGq 1.)qT!1E8Ɗb$FXg1J3]He9m3ZJc"sVMm ֞mSICr]XX1T' 8R '='ß4G-fM1TyDqk1j$mV2X̨` c|_5=._F#PTMV}gVKsn*Hm59V-:{Cg=r:+̴ov3AGckzk>t] ֤׳Mkc'Zstw o2b9W=Gv^Z20\Һh5:ȵ-cn~\VoIZN,j6nu#^{lUL^Ƽ #Yb5j4dT7"|uk=qW&0#[G<ޣl摹&vTIF))ݨ R7ҜivFj$m. ;m֊^Sqyxab2%HE# w4MݪB;RST[ PȮxmjkF9 n7RBOP~VW=_5.M]Yƍ*)ëA7O:!GQAssHV~N<8\yRn72@w%Q<2|='w{[g TO&٭[xG  OG$sIh3I::<܊Pծa\\}?&gguQ m Gnpx !^\,"25]+zhJn)X.7ix@p(! Microsoft Windows Live Photo Gallery 15.4.3555.308 01.00 3 2.497562 1.000000 1.051616 0.000000 0.000000 0.000000 01.00 3 2.497562 1.000000 1.051616 0.000000 0.000000 0.000000 3264 1836 SAMSUNG SM-T800 Top-left 72 72 Inch T800XXU1ANK1 2015:02:26 14:13:18 Centred 2060 bytes undefined data 640 360 JPEG compression Top-left 72 72 Inch 1/30 sec. f/2.4 Normal programme 125 Exif Version 2.2 2015:02:26 11:11:34 2015:02:26 11:11:34 4.91 EV (1/30 sec.) 2.52 EV (f/2.4) 1.82 EV (12.10 cd/m^2) 0.00 EV 2.53 EV (f/2.4) Centre-weighted average CCX  緾r|qMkq!% LeK-ڦK(L*BG"F3ESkP IC1 ( R5 iRc@-N.HYn H6F%" !1D``I B-PdED `#5#G"")"!M0 R R$-/` rL(cfcDʆH2c%J% D"PmB R($t A5) L+m T 6  $Fb KbP&-$ k@ fL:& 0!l}k"' ŗ+Rp8B H DԅXȒ tЅ26Mb"SS-4 N %D SS(  p.S̚~f9S1!ʣ??E[cb@1AC1B)@UH((( h[xi:mL$bӤ@h( K(#NQ Ko4ߴ{;&`" 9ۘLlg7 Ǔ ڀЀht@@c*"b"&؜F`BtRrQCA4ڑXS # .k͝=q&IM>q޷}rBo62pyV:)k5b!AoD!) R-pD$115(0@7C.}ɮM4R9((RD^+>)F^Cŭ Lahز񕟐FMq5PPP,`"~Q3F 0ɑb3iѡX0CrR6:ڹ}W"怄`6Q":,ռgaRވeXfw]$X9☲q{3et1n ۞ΦY TPiBT9j)3N`қFX\5I9>(A6U3[CcˮmA޻#vz]&l Y32K>Kl$LWu7糧wRWodb6 !"hɐ J'rNHmьp=OבP89]lq3:}9jYkY/#7ǓPt~N5vDBT dBj8x6ӚGΠ IMt $Q5)kMڂ+l]aeҾs"&J,Lf՞Ɩ>ѫO~Kqnի{:vz= ~?ln[ֶP w b(NlF?б9޷6 u#R4I$!3`,Kf.(MMmP@@HP`u}[}//m̦Nrg2k];+czV=}L^[eɰ;n{=,uE@J9CǑPơ_7!!5#4B$ptl=थ  5|7~~KwvuzطuvqnثGǷZ]{m80gCqi|K{ד,‚Y"j{o 0,S&RtN咜P7fom;L@BBBp9[^{Ŝmck;wN~}CRC{Ntw4N:ݛKs`~\ͣΗպ|KoS-(H{W{"LGp8~˃ٴw'a($ᔊ2**ۏmc6~;NŖ6wN6l WnnԃQ×M9 2C2&rKMCR6 .F#46N~ϡ/'!(t QBa%@tʛx;:-`"繱F]ϯ8]+:uś%/ PE%B>c?|.傠RBbqX hGj: /ne] THIJd9SB!!"[ ..jr؀B Hˆ0c'-ul`03kf3+bAŗ;Aұ hRii=ooEM6zls}=($RT3T NPԧ : NLXA($anW*OsKնuhCHBp><[5P @5 >v^s'b+[_I_/2 2UHԦIt N( "({Fʇ*g@ B4 ,0nW_6۳ʅ P xp3Ϲi?Gfrc%n.k$"2Nt9*%)U'HRP($(p(DdX̓w^_[p=Eж4 py睌x#Ed>* \˷*z^z?w=^_^U r!T)\Ht BG CP MZ/dx(T5(d#cz?Ȳ2HjrT'c3p&0W7%pu%+}7-ϭL2\G!JBQ*2 )T $RP:ӡB%Egr:e?ߛd~wOa _i_M[`9a TAA) P'T )EI z y~ B`@ԕsu+5~+MjiJb~>7'Ec_i{} :nQMwِLtR U p e.@"*B Zx_8FH1 (xrI.Re; Wm TF-U{|{kV/ĿFq~ٷGn2iv1@ymי>*hd9 D()pܡ! "GAAHPGpN?cǎ^ Y|WB֭^AjǢjF.w_ExJ>)Ο9_)>h|;d7>e!¡ ify=n,w}ްÞ@-ĺ3$#$H$(`oWr8\Kvmd PJL$Ls52ԕ-R{~zG OYzg p^cz{k ,<%t|{ޫXݔ1 @U NC0AX''V ['Uvu~'"4@RhEȹ Co}K/13X|~glPʾhxoB Bcq{gڵWI]%C) t&}/^) i@, KR|i=S&݋.q+K!E 0PoEǸlߜGRa\0AB#i;gǸO)ҵQrw!pdd(b@"ХK=_"xm-$P"|Ly# `Rp6P=.VI]_,NQ`(2ҡ*2<ӾT|;F V"-~{}lOAPQ@VLz{A{ KP EILD業_GU\_sB e0 `%G0r)DhZQJDzN5ې J[[_|c.IoS4zM65!W߭~ɚj}m0MiZӶ) 'wkK/_{Xy(pF.VWKmaC`%QA"Sb%Xœb045$d lKSIYIƚe͏O 2cWwu;躗~}sc ,o_w?<=?~l kYJRH*jeDOwvsYnS(vZGzLq[`P %7fLz~Nq]AP(If5c'Cɳb2r^%HsI5/hkUD,;[B,{6= rSqnWlr^|gشF|)>_Żqo}/W?>cs g"f 5lv{w^1^ɹKّB  %ģ>DtM< 4HLU%2 $B iE*2Z^芜^E6gMs_M/o}Ms!KwxsrzܻnUЂJZ@4 RB2ׇ>#.'2X ,UBEU5vuĒZ CjB9{uOª,k{8x9!jEwtoyߪ|O̧FOM7Џqta<`&m|5M tԩ*횙]z0H) eVrϸkAEˑ"SA2)CFjf$Pjq@ZnZV|xYxvK5Sܶ~~VqdyO>P= -=}p/H/zZwk}GBAJ jZ? R!bHjW7B׫u**6[hELe%d*R!h5ƴIۛz.ITX\o5 !Wf9h/4_MQߒHu_߱}Ogp[m?B?U{/@-z}f v8t,s_"sT i#swI,d9M sTKTQ}J.6Vj2N+$`rxx̕trzrnmhzOo`ߚ}~'xoFR}{z=׽#~Ŭ>-G~uT ݽ ^7H˝YO6 iT XMsL7u77  D` ѲjsϊΌsUș&$~z #}7t̓?Wଢ଼vO;躟:'CKz-׶þ@@) Oo^;2ejlstSmhڸrw,`9-8-X2CiKNH Ͱ-)Z4:Xqz-K9zF] e{D t{*ZB242Xg -SUHY0 @6ZIxȰ<*lժeV8??gx};mD7y^_:cط;>wܝk%5:ܜަML3. M쐸5djXT'R b҂A[D m!rTĴ2JشoBcsN!"R>ם!x o}>g~: o>kn{~$-\_ͦ75.SqqR\P1.Д>e;;0U@ i,-Z(PP)P Q4RX|5Faf%dNOg},~=&Xe_Sp8gwWpup˓ͧ~+-6e\-b@M@74M&cV3z(Ɉ([HƱUK!5h j6Lx[,MV&[\wlP~K'V\Gžv6oCs+%~NNf^1Ȯ7%R$ &,  <`z/alBOn!#X6B`,VLzxY[y s]}gS:F TV,+ ̋YJ"dN0S`#f!ر- ̆De-6O n lR!#ЅIx۳\k1a.UTkK>Hw}ƾ>z;>WGcd3 Id@ս#@5(,.A@jBl)#$(jKx"$R6tERE2  BhեU[LJxZaXәSjTaR/o~s[N0eإݢ! hԢCKVlcS{FFc1!B D)b2J LlIH}7P59MkbN9+ȋ2MqVwmOcjyLn4i[5rӀ%bP0DNa jGAAEd7Le' -UЊ֑L]&@h3xN1 vvSXuW1[L޾| K @BrQ#9V Q=Q-  5 1^$&SHbPT)Vd`¼ LZT LƐlSM(6ڸƧaSj>KgVpsg.q]d`K `@+0bj $5-2$LtbP64!1A "203B5$%4#6C/VهuRWn-apC=Phs V9ᅎ}'C^[I Aptm΃XE )Ȅdz]H ƇV,mNz[Ptra Xtp^L 9Pp.4 )+vmYY-%t{\ޜs+<)J}OJ4XBו)=FR)JQ4Y1T !F榥IJS8fiQhMiGQ5*{kTY`l6ν|;sU*>rF.̺]QQ*ӚJBZ`.(YpVYD2Y !KEY:R׭=|=硯Zz)YI:B 1KLњIģ˜!W WÕ)tJʊH.XC:DIIĞZV%8$zCJ:yBrQǛ"IQj)*V{UNӡS cj`_TW##ޙ΄ ivAl"@o\;eXRU8u%sh}jWa2VÔΈrWIʭPS-{ pj{ W<1.5[91 SJ$s^A~}igka_ DG謢8Ujd0``b.pCou"Ec'#ѣZ"4X%<$ڀ+Ih<|}zH)UUz G!OBQC@jl%PMGj xvi䦕-9J=>j$)<Ņ9Jns0P!6bS:֙t>}|}2Jd1VU1"9zju/C|Cj9Y5~'PX^$t (Y^^}v=~jLrW\rNbyHH@"Ɣǂ[Scѕ"Ɔ:gq,uJVmzDqyN\0GLR0B7 `7f] 0P+r?CuM5~^@+pBb·bk\We p030D8g? F>|1w nlBmZx/yyY:NMCP=C@+yPp)mly"giQ ʝKmyd̺h14cKF~Jt_Ha]W+÷zP06^0Eo; ,i2'AP/ǏLBX]1 ]stODŔD(x[Z7WZu%,ͯ_ G@zL j [ϖYJKZ˜΅rFJ$WZw9 bUላQƇQʩL[ 16ߵP+r.3h%eghL]|tο\yYHoI09Ma_Reur,•TT^UX1aDPӥ3pkT\*kꗼ5e{֭Rdd6509r:?po+)s⃉MnV}CR1l\ iK2yQNJ.Hu) [\I2Mqļ;ϿN9E{,k,c)T)\Y(s(œ jjsAEU  K[}c+J;:vrWK'yhݸC1!0FhǛ)sNzV~ 73)R?KIҙNo Z<[}>䯺"?RBTETC69HQĢ)7?hJi|H^Ui&A+v٨ʰ\ HzxCUj LR<3ΞEU*"IyLhϷm-\:1Ҷa/@e~*jOPA[<} r=K^!ȶէt'"|[pƵƓ gFݬ$cE2̗6lSw(֪}~Kt UOÏ'3*F1V4*ls^}nƇVUB~(LDÖ0`pӖxc,mnJ8 rƛw'08f&1$GKʶs xI^)sTz2=/;jUe"y)^-*-wZGWF6+5[L:LCƩjg n2Y9cjoaeañ rcbC gZJ["dIuhyUWƔ;5bmN: YرäܴjJ5+X4*?CԞJ%eK«X٩$ ][Vto 7sPN r ڽ˗ }N'C0Xd-r8 c*׺%rBICRaJ+(R,G sT#Ja< 3ˋPw`JX@iGn04vmp {ӚQ%((8p`'7+nJuVJlyrݴJ;O&Sfiw&9GtZe^ԯBҲANQTFJĻ "F]+(t=ߧ,<"p6)Lpp t6ӹ ,ix)ý.p:t'(rFܣQ!9]( lM6B!y7׌UM50,iGU.ON۵$+*z *GDenUzL0! PY+ҽrzjO<@(#e88& `_Ր "O`ʉ> ;?L48/Vp7)yb>bLSM 8))lEy@j$:gP;LVq)/BСn HN99Д vhJ+i.ZsIQ!7.$} \P8_nyvIVג-ہ2<8+GmI:rh0H$8spq7[Qhjkt}H 6uJÿ|]1Iő^?dl2M7HJN~TkVOBk &JG! qNQGDiQ8= so~Ӓ! %rc6nFSnVǕKr @bˆ̣)ڜ9),BVKgk%m/xn,Z5jSXx n \O8XC ijnA;v8X疮IY+7< C)-E;s# tq+!Ւwq-v~_O-t0K"KEE: &٭[(`L *Ԍ#k--F ^aB SM8!mh,9YH;Yy$! -ˏEۓ> v\W2Qaڰ02\`J\ IQIhNXb$ Xx[Vڱ-97%*Ĝ;/,9R-ZiJca ŭ+@I ,atչqrwrtGA <"ᓄ2 PNzі@G.NK:*,'AD'A:x~J=?9p!=<>\`BabІZ:].%s0I օe?psӾ;-$XX6B-rkVw#2ܶö×1 pa:Y](TVa*Jvr1_D@A !mMl svQΈG(v7~+n#-Mɧ! 8, pPrC~8O[0D" [HY8M@4-m䅷'g d{VF&N+7I5KȻ,ʅCLk^a414Ϡxݔm+ZO-ǰxZս[q$- %SPNCCmŪP^QGc?g,1DCORST.Aht;I,CZqxL!1AQaq "2#0BR$3brCS4@s%5Tcd?"58HCiنݬ6wDԺaܫz>fՏr']Og5|z7sXrc!Ƭ+ơܩbV4ވCӨs5\Հzj+~)wg\r?41T_ⶬ9jgU 18ZjVsxyJ܅T[*yjW4 Y~s<7X~P\.ZtFV!Y䳟:CVséBU]Eg?=ʷjau-Crb^wςͫ?Uz6 T9~K'(WV+9s X,*.8*9 3z%܍\'#Uvsj>[\QzިTPYE*z bTHm%t&PYJB២g9ׇϨusޫsRX*+mX?%gbUwlVg곝g?uO޷j}QTs8x$-TXjᬯb3=^ ܰ拚(\kzܪPq{w6=OV|\s熬oWB=`jE !r:Fw~3 sV/|YG^ݨ=婪!6V=AoVƹ5%9^7Ѻ'BXKox#[Dg%63<8fVy/h,B)׎W  >Y[ Y^xg ϢqX͟5s%9jaNJ+w s䩝opTO{[h#;"ToFҍ= AhiXaWײl4=Ȏ͇&ǴӚɭbqME&.> uL:jM-jg9ru {sÚVs+媖p[zUqY*ϩkVA 9be 0[?17gNUl9!䱳>c]G[e4Fo'˞ mΆȐcCJ]N{mn)&m40EEmivE|s_j~T NvفsF][jUg?eyEK.VsE6c^ #9U~K8,s5';Rb ?!rgk7"Co4Q&mu(~sݿ;8] PZ?駪VilTm d(⹦Ĉƀ*vE/R"ǗxmVn䳩#,Z߇JėtWGCł-MIѼ Rұ⥤оl<I:o{\=[ cE+5h9[m*6*]DH^xgrlnuYPs]{W.wy `TԮG{CINĒXmiW5/@g8Q\>p_/5韢(ݪTz^Q`U+ݜHn;OyqVܞƘ6RLtL|(qVP)8.qt.%W/]$Xz@{Yhw2KGDz|p%n^ y}=ڈ_҅݀Ot&GdHa]P~F6'|!sm(.hEeᩭ.!Z(0'/]ԠTԼl-7m]^+]$ƌ;`֔偱ME"eGJF<(_$'DΌ8(s"XYuGEV X~hLDܥHma蛥˭6umPe"PTO촱-ΩcZ>7L(AZ[@wgU-Bf3UUU+o}Pa!T :ahjw펔3E vo6:=4Pr8Q$+&hk]h"9#Z+4qU]pDiMA&d#C^-JZai͊Iz:rbQ-u@iZE82= f%uhigISk m`lshѽl`׌E =lR{35-ޝA#wWke- ZRG~pMĝu.wjZabli`ه5RTT50_~ |sVQpVP]뫏S,6(saS4iW8.7i׌nT"Zbƺ>T W%!aBQ-h%D/ǂs(k8p]-DU>>2 ]wˋkmwÓ{/hw[Sbre#>(6]k{tw4}WkcioT$:!q1h"{`vvg{vň7f7]Mvh6&c6]iŻȑ{ʸ 3MK|'û ~tP N imIcLKndm EQ[h,TPt9ɰ^n=ר6a.昭odR6xR,ўJ|5 knw8]F^VT]$ 6Y_'曎~Vr,csj|g:荦2f$Hb 3#a?84o@2vqکэ_F؁u(.Ϛ8osй:- tf̽SJvGO{Ft-8ԚwYܡUcii-'bԴ q6KC#}Z:Aҝ'I0bdƧNNP1,s 5=U9/츒^8wt7 kujZfx6Μx")YGtC0 l Ss0=,7Qu1(דu};h͘gG)#/ R F{,{6 9BYb `mP`;8L/yg7ƈv-q _h"EӰ|1KZ>IonCxϊ[JcC@"ޯyn7!^a +: 9^o4IXⶉqclQ FpI'+aBhuK W hfg j7E(Z}TXnq߇uJ NqPeK uS]5HD 5D 㟒EW^0ZEsɪ?ܸ[[]4(3뉼q `~uzpMkM_# GGiիlo2?) KK˜dX_ӸBl8n|6ln@k*٘7G E7ؒrB.dYZo7!Es"JLNTgV63vj+]BqN6Ms$vLVvm2ưV b[V5k΋Y=Kim|X!m*C ~K xQ^ZMDvlo:>J[r-!Gٕ`1Hl;nEKt8Q\͛ a#_+ 3LSב4Sn1c@C (jp;yQ:#jqUˬu 骙!qNx Ì)-+,Ck +SR_aZa{M͵E1hڛ6FjSNoxnMX[b t6|@><3TF:a`lKٚԻ\#Xb[(_59rsS5mE{.vn犿Ps9+͈WUSP늁+XaiX l7:ujTI8Nى1 M؍cn-ՊÎKK'mpr^58zJ4lA[X P[ h]=Xk :C(7Sdy|7Vso<-;>Z,!=$vZIhڃLJh9 Jв3ډ+C H󪔔dIkkBm6Q^&X5R,N o<l#T`Ecjk8xpNN' BJ!ԥ::xZd$'Ȏc^;mwܥ Ibvȩu8.?E$mʠ4",F+Ay d' 4 䌴FR GTw_l7TRIfOvb7d}5V5 CC>A\ X!*$v.L}m;:>Lw[zcb@9@& f,3VOoOk[sE|QCWs:JAqiM?Ecj~7mnuEq|W|>biK l;s~|L$T4@`ąC8N4&#ǘd>փW }l4S:srnӍQ&ɨe5Ro5J^n^e:kjUrRrSrژ͑E^ȬN.FOT_*c>*#,} 9,C<{g^.ȢhiVuАKl^5gUU @w~WoƑ؃ASi]+M!]D I4t)"@Nc48jkvj9B$T(q}V&+tAl߹ 9סߟ۝ (P)CE&UkQߨrW?t}3x~mGF洼Ӱ^/ZT0ٸإ }Ccbh-R[w>+:]mAbՠa<Ԍ̓8 E4Ћߊ3KZ?Bi]()8];N4'9Yw\:F]Ů!^Xz2n+]i[Pk\}Tұ!MbBF # Ҹׇ56#TSTazIhp\{Mp@sjV@Q[Oziϒ5]z%xr᨝_,A2Qrg6x"7ktCv]1t[ٴ$)bs$cvڝƊ4(bV9akb*-q{/51+= sĆa4kSj1 ֌53C1]/m#vA{ȥ- &ZcEhqlIxeAV8}↔mš4?hhnO 8)9iO+b4qi)^?=7i V)ŢP*(q5[DZ A1}kf$'5hvm]SMKA5f R˩X)q g--lv+JFgEc-6˽ssFkpȱ8[jm5 @  A oP mShQ g_.|\\|ueMUTMBl,7Fк݅Ne٢: GJ 2;,{>N PIC 4K!Շkmo t>B l)XC#: EEhJxD6ij m^iXZWFKE3aF`1a "^hzcBA-oO7$&XopT" :i^%1V48Z89_e"JsQ\ȑ?NFMA .pq |Q:J!#;cxM,4qZ6L]nuӂRtn#C'6 W$(\VUz~< SJNJ>:U'CKZٖ:qq*N~+ #"mF nP ;+B.MiT[3]]X#X?/Tonc~{ݻv+QFb5DLH-)Fņ6i] ʾacvG1-0ZON{=5BǶG75M>蹘0♨PK=mU- sZmT&FJ= N,(M+ogh?iFV# هҖ5R-V] `Le'*/42wKEa'IO0n4Fr-&( l)U0s7#Үh yQ4/݇G6ӆ%MIŘRE4v:!Lcn^vhp l7UM{-3H~HeǖNmbiXfq+qp_mw ~ |Յ߫ $/xsmK)Z轝)n^b, 1{'6P]q<ftGd8dfv<&"D )o bw 5oA 腤~u`6,OUSN*ɑ6N5 Jh3.RyH1-pxrZxf)NJThNE~qQ`u)CU_\86"xz@hPm/?OE訚;-Vj7iTjFym9/U(V[%m}/@kS5ς|Ԝ 9, n׊aRb ^8ZK6{ARkK{=!>3ѸWw mñ) 6 dtp7emq?qW_{̬g6:F9®d"; hZi[(s0g!m6„/j=e2\.ٺ_Zf 9h߲#tx7Fvr¦Eo贶d.sDvG }V5gƱg-c[/KNn%֌?3[Fs܀7䯪><՟G<z]\Vnwg3]胟M@ߨ8ֈ*Tn[ cQ>*bNZn@QέAlZS8f4Tsjm+Hh!5+{PǷuE)B.Op>=} Yxs0#KL0D8SƖ6it>cy*mqq_%ջ7sSZ/{$}a=!uhZj$ 1ݗYmYm.~4/ϊUng725PI&Kmm*k\w X P$3m VxƩE|JoOgkShS9XqbD.ph#i jRd@{vhh@i'';(t07h ; ˕ھEyiDvЏlQQg7%CdHma6(, 6wxx,U2UEk)`[G>ZEɜ:&crɭ" k7xFfҎ앆sB8,y۬|U(ةojl@Q9TlZU@h@JܞƐC{{]G-wwzҞhԕsi V ɸ9я¡M|$@G 'aE y٘3,SWƼ r VGƘcFZT1o' O){ ?^{#~ci.|4sƶy|WQ4$9(F[Z 9޴?- wG_¸o*apl"&vgfĻ#Je,we;'{@SKo[z  Qldg'QXbfLoZ#g'U]F?X>~Y,J<5 . [ xgBh5#r*T]u J\xwz2oj4Xu]qҼ9-%etG\+@M+Lm-q#檿1%&d 'L֚Q(,߲kQx^hC[ v-,;o4ShyU,V0ÙjÆ(LȲsv]4^.]%syM4h" mV|\c&VS, ,_gH;4⅋ PѦj5gbiW܁Uf#ewU(@*.#)W ]V7IHUߡPMK<3:HCVDgeVw iVN]aeŠZEG`@qbBꖂ\ޙMsY^Xvb~|Ul[X(2X]Vf$:LE)&e6eX톷`sK^yԤx fJFu|@gz5-kY:5M2s܈[dz fsܶUoDU]]|Q?u9ҿ\+j Q\j, =Jj[Y)8THs'њW#5, l 4б_L>b] ?xhmlQti,3cZn!Lǜ|ggi&v+?E[==eW/[ߺ͆1pX _j\ֆ_7[ҴކS%'c[踒ICLˁI$FHJ,]4f3h0Bh%1a1+kF9Wz}˿/'*ImI@&PU*9 ZrUV[V^9*~P9 &gPE}3fR\K'^|B7怱gpRz">"ќ-hvs}|A-ɤgP3jzZBd9κ(>7ٝco=r˾6hv9lxQkÆ\X;?>+s'g ,Zl` w,3huhb-t6גs?Fuoh7[iA[TZ>pUFUfs/D~jz:U_T1ETϚ璧J ,Yg+V(c=h|Aꇼoٵԟnl47,y-l(?[{YL֑;Iff\tVѱ[nSs#L¼1݈H z~x1!8`ǹA9W:AٻK))B/sm(E@jr7UUN{$UWVl7#9U^~ nx!UoRsވ[瞮Y5 -$BܬY\sr ިuwe;vg5ꨣ@nxPtFꊎ夽zmDmf o8-5,m.w|LdN7㊖x6Qr4Qݜl,D>UG<5djß߫Ox,ï娬}u^6" D}sT7Pw*5{~y~-͢.z EmF]˖ͫgZ19T7sܫ\~b Q|йܑ;ǹ9j-ڂv=\GϪu}YEA x_H!1AQaq "02B#R$3brC45Scs@?kF K|O?"DNjڙVS%BZpZԒ*kK[*owg~zd!8p\pVs>*kܮuV5g?tVOn|9rjV<oGV_BkED7ڀ9ޮ<ܱ[n95xhx*؉U՟VsX+{u㫞=rV/Lz~^9*F(`@*+<scnTǯUnpG?EsX+w~Uz:bXQלsܸ+V4V?|:!fmG9=`CS 3ߨg9rϪY˗ߏV껩 ^X,!`5g9kqwS-P_%p`#{#>\Vsm X;`zVלjAV\w skߪ,VFWou]UU^țb ';,QSNZEmm.\үלu3z5fxXS9Xj7?ek~US.WgW9^I<8x5 ,>́(3:ؐSAq6ac0hض5ƦF6nݻD8TtjMMR/Hۉj$yBu)k[m@c & 4=E{`NՆĬY]RwMVEnDlD1W}ςt7vmBaQ(ܰXUYs?{Uhsu*uθ0rtEb##ivG{fb iCi#-rpx3MtP6 $I a/kNZZ;cMKdx>b47>"˅n b<&QaĚt R3;1"EkhC\S&> $cbJhf9[ԴߙaWccr/LfHe~S9ɱl@NӇ|"_vocE|‰)2ѻVỾ(u|2֡Aitł/8לu k'Q47-jn}V~`xsu5pM`B*ޚ<76[h"HLlb2=E^loT -ZPm!>[ͦv^)hq*/F$Ub4gA Ҕծ0Mџ5;F{*n,䶙aگd^+?ė5{VӅ34lQʗ)iYw[c-EO|Iigt;Bu,P2V7vlS勡808RJo1:#: r! V,xǒ駦:$2M݇LJF[xgXSӤƴrz[ѧY諫҃<}-|QՂYϚlu)~JsI1sֲ JdʹEkIs 7dǞv{ERF9.ۧhtyY}("Ⱥ!CZm[\j9"Cy sMy'A.c˜vb1g`>#k1R)x%⡷b'sfѴ4j{"WB'[ܣtb9(+Ӳe?׳\'v&D(Ji`5Êq zM9`>&- 6(kNFEֺU .MJӏٝqtR.p,'AyGg0hrsOS ܆>Z8ruZ!FErݟ\7gL6Z>抚pbzG5c~$7skV,uնԏ;b$(X1D9H.uxnQ`>/M0XI,͈)* qpsEs?%,ǖm0"JR(?0&J#̄VN6[SJ;%:s#h*nrEeaAQ@07^,v#KUi>>A ƅDZ oR`D;$Vf/Ć$&zJ֖Zj#11 mKkfEԛq(*nwIY-olFz$(aC~[}R:%fF2h@E6E {=#ݴ^Iw]zՈx*)^N}9FnQտƥE|k /e2Ȅ 9A,whi431]Cc`ZC}NջR·o7g7:>%~hMZ ب]KF~~r ]n`w)!_-+WT7N$GO!8ʷ&ǑٛDRwNM2pl(Bi lj[GKf"h8 *=;zFZݖj+M֩x2= YzfShC 7Gʷb1khMMmSHNĻa8:ڏ%#/&@#8 IXqzH}ָvM6!|ܼB Pdݞ{6+ޠh" gHBr_-S!`+ yqB#N*UoVxP#yrM9=~ޅ_p3[k8,(R5BX~6557kgiՅ*TYG4d1_0fY54Ѳ7EWjZ1Kk}Et6q>ӊ)b[m(Ҫ >niilglPt?GP{ aY_%(K>+jQ@3s@lG\vO@dԭ]+Mb3&&v:(fpGG]2Ɇ0Yo!ZLOd# (ڻjFؑ yi(A*k 扑m0uU_dQF]r@8.DM]G^{Ár}gm>CknoG1Yu8\E+ '.vɭ֎;lhVf`m+-o e; $-jS?}^|= be3j% 7_Z:@wq*%_jz48`Àv G׊4ʶk?t5Y sLKWg67!EQ!Aqi"aÚP6]~g:hch6nQ$@H -R~]=\OQrhe:ChkvEz[!ˣhw9C\:a&A}0W~g[9_gW^sXTIhQ+Po"Hڴһ8Y*Ɉ5tgPWj7kdҴZlǃ]um܆\;O#ؚڐo@\@vF5}~shjB1‚kyoDCdOK Ze- cὤ0գ:^KGr|踊G Vᶎ7Z+nz/QA_Y3z C?DwG;-ٌB}EŽuJDlO3j`Q l$dhT.atʼ~[J~v,xQ F?mNgkZ|sEԻ7/1CET|ixKOYYMw^sz v{(hQ⒡0W_8l9gꉯSV XOP8ZZL\Xmi"/ӵMmi|A rm'LCװ{I5RPtTو1kŎiPVN&:&icbP oQ[Q hGZT.ݚe m/֣a Eߪl: 濥E 5‡*@ E.4X UVs .,Gs0"lF;JoJ*R}yإ`BpƊXi"ƈ.dfTh1%# QB8n/gS:==Bx=KO HNixͲa4¦ţge 0Q5W\wO 7fo@Kll8.=쑆0BnoY=^B5XWj7#r Q*,, 4BT8$8?DCu nꛂ+(X5-1j: È4; h&1ZcrZâs0J:O9eaFZe=8/1͵ M Rs8R3)튊`"m8'Hi8&X@{ u [^Jk o̷3eHo XJsZMbRl‰-\u:70^ݢlfֈNV9ޣxhyYqS  wR<8l8Ein߂S8뮳>z{(уA>5NЩ)g%O<>9^ ՟uk%zs\V+y䫐Êy6 $VB1>FommkF䠈 ¿LQaLnR6$(oBrOF:#>%*x 1ԢyoxQφns.s i-t ;(_dP?ߏUt1afBLǂ-? v Å;)`n" BjFKKkWm\Mo 4,֢ZhN?]VqXz?u&`4;iؕک ~>?o'd]R8*ݞWY(" .TV/r_H>J@a'~OQߟ1_q0g".-h4hh,vM[w>hN50n#"n:4QȀ} )l68QL|=3Ļd?e=W*N"8 [m4QQ"m9(m5F‡\*{'>YF׊ϕgVc-}jZabQm{F屚#b%4/f^&K9,|{! WgyoF߬gwYˈfچVp-p5Sr1^XҘZ=l;rԮuEJ8Gٲ AbsA-݇DzqP*gLع,zZ$^I?|fV{ORQmU)hA0זFUkd"pRӰIh Akx7$M&a&iwR󒳌%c;1,5kGv 0C^k3L|33lV9;$o4pmF |%к7 ,Jy#x?MTEGVsQE!M9/.IۏqSr2?s߶P/*<4a êJ0DtGP(0EJx*k>:r>%Eը⎱*#.5|QK; ǵċ8)CiXM-}[^xޥ Cc5Нq7 *8P%͇dg4`[vI5QtcC^ ĔRzXb),%0װiRZK'$]fm0>`_* KFq2V)k\ۍVįJhgf4:~:7\q[56ݻzHP`-&۔Mqx5wҋF6t:(">kMI>"oUܰ[ '1sC惒;[L {>;4#U=CoLGb%?:>KMZ _uyR1كob,񎐅0Gz7.j2r |l&$Da7q)5vCx?ڟ~1b&HCso&^p۳6@p4|HC4v6 KQ,za::#!ڿ/n@㿚 !FĆaiU~u>θailF56PNL;gQi= 1*DX+-> BmO\l{AR7Jx(V\V>+{2`E8(jWT鿴mRz^FaæoLR؟,E&'A|[=im.Ғmмqǰ۠XN˰v9 :.a+%#vL:f[ڭ>F;CbTmГ6d"a8Lʽና?)n1Z'&Ŧl* WYSl/ bV4tFv{]uԲF[E8ZiσPl~潶T8ۂr^rV 9mfb{.h=}wu ieP_u,sNKL3ُ9&%!p$37.;b\{S?U4NmN7bYS%b;} j5_eɔ>+Ou(Jص8*,;ħ1i-_3tktXD顋 /Ŵ$lЭ'zH?],pJN Z㴴ˤ8|#򃛶5vmp$ih~p#iMhfMiH]&F5¡&ԭ-&iYN u-bv acvjLQ 20k\6`7uIYXZuS'h)4hE ኱ڢԪܝJXC9 *,L5g9T  ۟d@ŝxZ5]PbnA%&z6VՏca^-'%46ǁV$7 {NiK4c8kiN0]tGmD{i^1挣"9`[b"{6ZGwzO@ҍ0g;B3mÒ᪞_t4i024ys\HG5Iif!CI;6-?##5cCPATTTߪEz"‹X846t&4- uohSbĄ 4ؤ$ƆM3m *WHJNmXg {?' L4|C:?mjt'{9j/m3b'o:2z>=;„xEгcGj+;Eh[Jѓ3pA.xaL8cvM ]/fkG i6M-+4ZK"bRuD ]\Ťɧh׽',]gWW_i 6Bt rǦf(Omu uke9?R-ql"ZhqqBpą5 @l߹AvYbGKnPI-wഗ>oD8Ƨǭvl͉UXJju^ iLJ7*bhb;[Qʺ*ܪX`|U 8,35Dj \A jq zӒs5lD6W.iMJJ>^/u{ok{Oybё& 3Mv^7i_CC2a8mkw|YfeѠ Mh4$I3,؍ӶͶ.u(np4rݖwJH9HR.ecXqNGZJ!6?p.6"U*y {[kfoDXsj^Lݟ "C~*jsUע}.U5]gzzj/BڔTr>kcΪOMN j͈<0B)/k [>hSޮRZ^vFQK[a?ܤ #ť淎DwŅeǶL+xiGLD2ouXK,w}G|: !TB7߳ #zE"F5T?91ZצMmAM}9pZDsa{kEn6cNf!FohxTp^gP>kfg򀯞K9zX9(bnsVH<)wfrgr>&G& c(~<_ PFK[Me w"g}ψGح}}GH"< X !1AQaq"2#BRbr $3CS4Dcs%t&E05Tu?RֲZDSyg3`&j=KLNZu{%kڛ^ҿN`Nʌ77oShy)M5ijxo蟆Y <7*#k[ʼrŌɎPnܼ-u\yxP[ªiGF 7l+FUrm+wDjF}fɱrWn*ɰa Ul*ǣ07&|ZݏyaͫVV]U[&`ѯJT[ߣ 6V}j5\Uw5&Uz ҭ7ws!㇓rCʸfʳ;٣U?qhJdѪ4VUW}WۣSms6hńjUZ4jfΪmαsNG͇}YF }Ei٪<վҡE0urO9CD}*n~5qX6F>=kL+=j U1;W{ ްn7xU}[][MVß|`kɲV>^U\Z5/VMחk{UxrͣG]ӖLWZ^[,kɥx4 845qUW.o?FW@M*>mOVJ&`6Uj> 7f{s!*d2x!BlZRTSK6 |tK^efǀ>B0hZ,'>m֕7QhUjw1Fn=Ū70]Ϳ 6UZOֽ~Ur^/{}M0m=jn]WU(WU}oj *hjV 1Jܺ;Pl9& jMU{m]gYɥQUy{g:cC٣}pb*I߻s{h&[&5%G'o #Iґl @=bH)骠gtݤtqecV{0c6 y )~T,҄nMh 1+;;RDͧz}h5WB9PmGt[뗌wk՟ENhU{Ū_^^j I:jkUUEUջ֦ƪƵ-ֹwjͥUBuy7p&ƽ[ܳw4Z-Ŏ{ 10Ű}Z^MV%۽ az5Wŷ}+±shB,cͲrCuW>U 6g |!I`[o(XVK39vn_ب5V}Sk)LQ62f;K#jJP_BO=YDRjh|%X2͂DGa/Ǯ*tڒW0Be͈e|wG[ g[o@UpѵqjHһ^Ū[tJ-vuBUUť3ժGẃBI~\ۃ jp=tMVսgwwI:mtf ͸xxqFѹ^mUX5V:㹏ӗ>L7 ΌԪd7I qWvub;JzU ۅA説ګ?oY.Tt11)ϳv[һwKM՝ݪѵ,-V>]߬yʻgM b`8Or)6#0?"ӣ?(ۏͫRn?zŷW4&^._zcWc:4ڃB-^=ҏNt0Ъo&ݽhC hZUMͽU^a$F- \XiUCVkqUūLō޼YJc|#M;e[]u=!%͙H=\X6m6p(+BaI) ZZYV]!QR p۱th\^Z'XLlٮ{[^6wJH⾨%,ɴ~$6tr:]7Q|&C^ڞY?ZlIw֨'$q0 [V,%?QrAZءHvRI9[QjZD!$,F0@,fdx|p&e#fڿ_Uۜ]M8~w&1<@)ô;4Sh4٠çsb^ln[q]6 koEq1.ZU՝{8wlB"7 j,A;<^x7Jgt#3œqku\ p֫c8wj"b֋޸~;:xc͸W~Uʷyxtk5n8z9qoUUVP k&рuQh>^Vo&R-?m~l[t|(}\xw7zz6W*KeG0=z"m=kR;ͷV*ã&tT+a~hufJ=X@$CRٳ^%:zo=xuwfXz<ڿ*͆VZb`@w;Mn+S9I AH9܁+#Hm`*Fqכ>mb/T]PR_;@!7FZ;%eh(;,{͟hl c{jYuRUڋ=Y[WmO:SYlkFow,R߳mB\yQ,:-h=tht} vazŭ{;7ɂh H* w2_;ee]Ew*k=bmvizVR_\#,@d[GmvխnW;0 $]c%ݧfN~?!ٍv6[U*E=C DЖղY}BlЗ L?"sMgX(ԗjJ4{$:{ <|Dufr&3^;sh랇yy~ t&r gKqe6-z&k!`Ε ]ZlURע#~XNqBղqa)ҐҒeN#qeYг *|!8݆zacPVvWUqHvcm}oеuyU5aIk3Boo|Y~/._TUFCswV {DC;sJt!iRT "2g0!AH3`kF[h5Rnz4jc9ùYf84x }VmjƄ͡·{x8=V{yMŪV+tZSѧ^U(wk&Yqx`:L}ӓ%HUF\KuV:["KwqN\-YtW%^)oHLRLPg{kt%oEU]ʾ jU۪Us KJz5p]*ƫlx٠+N8 yIksV tDc`V:UMxSo&fPs{hx.Hϴ`Ѵ;x2/BWXJR! Yˋud\]*J{SOj I,Ͳ)ZR!GHʲmgzK΄*ʗJTs8v=RbP%1BS?t㠤ؔU]%@J/Ym qfHw/l7X}I]uqR817o?=%=w<#JĽG 5Ӷm*R]. HLi-۴ݳ_y 30 ͭZͱӕ6pZpJJ=B%lĿ^&%0r+w T%6KvYP~e[;Bɴ6b]!H p{)1IG1okgOJT-<}(D@LTM!k;[B۳vWYC-Q`ܽF39oylbĻDayGHpͶ [2Xme]3D:zٗڮic HMU}5\z BU9>RbkΪ1 AYJ Yiyԛōxj8KNHI5ʽc-~ *jW|i>97)/f5Y4`ɳl-KSσ"}jaDn$=\5K38rP! AtPoV>ÚevN]%~q Bo%vT35%((ĉ^t:e\th A<2ڻB}ꞭPzVLW0f k FrRʗi ܣD] !Oî+eX_s7f9,=._\ 7Jl{f99x.-.d":%}cy6^r)*x_U)S˙B`!@Ŝ(kK*\;Z]?o.ITTVJ 3߆vJ)ӷK}%Q(uzN/ސ ݩn5XZ׃UJj͕9VZRTZ'Ż6 ƽz$gUjX/&zJ9Q0j㽡x6UIUG DT{KZ\Wlktx+ң*ZMrϳ%чm|׏U=6MXUq ]S : H7OUEWne;xKJB |m*{qhS31 EY}zePhKVXywӪ, 2{K67%.%ZR@28^L-Ge*Aѻ[ڪ5}z<[ ϣwEV5U«@-s՗gHФ9.\CjJ,`|p-\Tc VqVᇓeJ- >)ѪMJpSj6/|vj놭>ч٪5Ɂxoh5ڊ |k b2?Jȴ~p,řvK`zrÅWуytV \*ZעLLd{0k8Qt)70Lj_(Y_Zë[ëwwUՀ`Lq-[Fiگ ԡ0DoEW"Lʈg6uqt]>+P!OS"1ML@Fe;[m/bvJOWdt,Zva}B]Q=D#CK|u+ɼn#)1tyUrixnjލUCtWwF]56^̩E.$˼DtyWsBcl5Wjqΰjo3qR4c΋U`+ r[c ι45,I$.TNgFwku'hz2|\l3ByVjnrG'[YurEfܚ^ϡ{@9XmOVWa)^-F%j@&qu,\=p~IW`؎1ewݩQxc=BM K nXoTY@./;D>kנew϶c&ToA "s2gn-vzoo CZ}j?U] t %qTwkJ3'9UZeVpjεj5NZ0mN d~Y5`3iZžie^=+զ>Ѯ-/ +մzs$p\٢/Z?ba1d.v):IOaG"8IPoTsjﯵUw^}Ӫ[x7}eΫ>-^^5W&QmRncxֵ}b~2bPyhJؠSNjR^J ՝Ҁ;j%JP6天ϲkz\_UjڲջW.WηM۫MVg ⅾ+.xpK;0/Sg=_Mf?V$BQ#WnJə25^^MUX i5APV RRIժťUɪ}ZFkZݥxAiUPc>~,EQjnUJ 4k6*ոף%۰^)Gg5Embȋ8ܩC|g 6ϳ"΄ V^Q9ɼ7Mj+V㿣h~˽hSݤ>)R"x:nRt Ph@IS(^b#x#ϢףɱѪ1c<'Da Nݮg&jQ$ MɣUbZ|&sUOG6[gߧGv_fʫٻ˳?g9eUZWM+A|3Ҕp9mβ0Cv{vnIH.3y!uY_u/f%$SQٹyI6<*t\Yݨױ7 ,/n_.~rM^mRb AJH{g)˕ٝ/P•)R S D2?x^b(I?a5wjֲQ!'͖J5F%Ff>mUמtZT J ߇=[+ vJG̞8IdEuWX6YA|(?iyRgQ@v1ý}~U?Fhz4؊ݛskm)|6v}o{k]膑,jзFVgDCˬ)3Y$HC %ePmޭTz7,#j~mcR誉tjϦ5U`۽:87V-UQof;95xsje!.˵>%tBw"ٌfϝZ\- |ET/!I F0ɵX3t!+7:e*Cިږ DԂuǖ{;l*Ѵ%]ԕ  CE dۧ2ݡB]$#} YrCK/W *|7TpŖɑ ySoƸ7ÅwVyxrUTBIvD;6 Y;Y5+˳LSZ|_f˕Aݡ^LH߷Zh鯜.:[ׯ i10NWPbA`GZѽ"z!fY"nH(eէ~ųjRzEWXxϋxtwrUxڹםTڱVm^>}<~Ub%N-OTx-ۧ//T] NPgN-Dg*KŽkRSp$ Xg}RuJEWivAiE;8Eg\jzM^hzoG{VPX+A5Yt}t :Ѿj=jiժL# ULݨuwYqx,DX$] HD$ ==cy]mSWP erIQ0ݩؕ՟ T9`Շj7em+>`EVC!.ڝuXDoIDv/ б.8i $ٞS ?Ldzn- v!}T|B De:zh%*BPdD tVjr?Fz[GC`k6/FϢ7k:E&KUV Y,7_xtWEF ŹUBLUjUgPj^3o\Nq#6yVYF4!U/&zooZW6{?bjtag(TաN'&- p 8ɾ^}属' Pm0c-ZZ6aŧn{8m,nSo ,G 6_c߅*]ny`Rw#{BO(&eYv17&)ZT$Db,jRtB!^J: hJE>m|kíub].E̲ܿv#? K8I|ߚ;~HZZlW$ )7u}0b`} OTP!=[!WzP8er-h~c`xV7pl8Qc:ϧm誨4kݸc^-Uܚn5ŏ0Wn7N8n*QD5j95jUڰnN=X5iG;XzbUVNu t5Z6oc^=W6־4NYzrjz1p`xX؃y5H lݜ"aMcWbC76ݘCEdl{skBOm مiL!*ݦ˶AWض;m $gz(Izf/[-@IZݬ;*CuPnߡզ̷-`rzzh`'g؝B-)syJxP%SKd4i֔. >3 kt?Ϳ=GeǓvJuXE1&*lpg4j;ѱk_~iph5ܥ>6ʟ+ g.+X38 ߹Ls9B5oFz]V~0fכc X AFGGwUТxtH@ !E0}{l*v|.=ozT*6B/ 8kݧ6}0Ǐ&O֛"nvOl%F/ |`ϭhYm?rGG:8#䴸siFZOr`mԐ[ZЕ8+^Rg"=HcՕ%1s3-u6 P{/lܿvTt1 l`\[ܒV[Kڬ5UJc\y-W×u\SC%]%1k/U{];^r,oAaQkΖݦnJNbGM6ϣtU}{a>ZׇGןEUQ~zNFjZ0ea>~|N,=m8ƣÓcۆ^xl+w-|{q{ :GiBG  81KZ^sUo~=Ҡ[4QҢՠD7ꔷpcưR>wOKK0ˋl{ۧkKTjͿ dQ,n?h5EJn6.RɆ`(}T3+]v P q f궇hK<ٖµlArՓg=[ v4H?t͒o\,|RO+=+J ]W `&ZaK4_:(pנ"E=`\.&@ 䋤@nQoYP} cDM۸Ha.mI$G\ gKQl|Z7pn{tx5ioUV؃)?0Un}U*mo<.Al柸R},n>==VZ^UXΫF=wo| 'fd52b(BbJ]NkZF0/=[ TQmfa&ߍWIV0˻F=ww}W~- ѱwc< "5"0DC Y֙(l&@;{s+w8y6N,8ڶi%emo@vkR#QݒBږ˱ݭd Et.Բ*Eǰ!xס"bdS֠;Od[_[_vQrTȦٳ/j=t簨ԇvͅ6B5,E|RR÷%Ą<Y5r r وpI_ίQ݄kQI2xǓ|UZZ'|sA3ķ|4ލηKX~ףTŰ}y73 ׌JtiZYTXF;3)cǛm歞xr4@vn"姐)mcR?Ė~6-А?T\I)8~-3vfW=I v``F RE1o\~ivsk_8xveފ7R; %D^f?l#]ra%t))N ҤRwwgKOUnRlv?&ڎч~Rgj}Ρ/CFJD?H`F Aӣ'L>OT$0LDS*줅xe;t{37'CwբN9գ?V;}| <-On UĘJ p|ۨsBxD1\T tT;kʑe>qwnpx=}ro>~0h 0ߟV>RՍT`}Z`F ӞRYqgN>j/ NMg)ůe!#h,o&jd=sZuLqhJudJXbv~э ]CO7@2,y݃l0O\=0sÓMfz/:~RL+A)ю^ ѭyLjɺT&]v=rwB$J;#6Bgxi+tAIʡk͘][gxu czWC*mk{zthz![ŏjaSetfukŵn^ū9}wËOƫT7ixn~h#C0&Oe[t,cۣ61֡=؉Bw* 3׈=F,k9(C-ՁPm&Z m#>ޭ\w¼Yø67v-L}ߊX;-ay6vǘ^MVm;x%"+ nF&/@ #e^7* q kӵ1|Sg*=Zm[Uj~E6T!|]gf2hR+GY׺J+Pz \qe[vzC#1Ƀ!*S0ACsBzUfSt{TN9kw;\=Ȼt g=ĨyT֝[ZٚrYɵNٳ泥CJYkAi8c>&_lZR{M$q,]jf}\>_-s6)*e0X Kԑ8wCVbp .%hvBT OG..i*P]%$!{牼*%oc K2 )d 5ueԭN7/^%'e-[:ԫBiB޸zSzobA&bZ--VkZ]! \A4Y[:.d;MSAh7PDAS281|@`c}hF4v'ẽW ohPh6# [ŃĪꝀ>Sݞ^Y FӲ)[wF.li͝hRR+)7BxG߸zo) I*2kK1-gB)/Q:A`]Umǖl6ҳ *P^0rWwZgm+"_Xۺ"z KIR^FH 6EҮx)՝+PpK!00ckP#iX]g~]fcuߊ[%me(qzL~ݣe%NDx]sicZ6Fʹ,63r][w8^RWv57#c>mdIr |z O[JԤ0ܺ#uzČؿvkM]{ ae b `kTiɔ/`+<pDby^e0':{b|GxjƠa·5W{UV ?]{{9𜛅yo[S ~RL5CvQּZ'I&=0&|u#݈|c>I5ÖOlE!봗b9{%%$!E`$dp.8DGLXn~Tlg o8_#BX^ʶe=.^:[%Ũa( .Ԣ S6t,q6];K-Dm>visipB.#ÍԗZ$]kz$;/,a?ἑ;VkAj/V* K}bxU..ЁA:]uV7L)%*N-٭EŢ̔׊ ?RVZzCJT 0]YSC!η;|!~X&09ϬnI{e?ٴ~̺; ij.Ȳ-O6=uսj]XsL;|7 J,eWܽ(Qsjuyҹ*-}v$Zl؜ vzvI앗d#FtzT+^P04H||ZͰ&)Gť?G^Cǃc3ݼ2ES38xGO *3C<=|ZpSǟ 7LЩ 0 QcΨ7 5 a=|NF&Q?iͷ)Ffҷ33bfI=H7c۳û *LX-]*?jR* q?jҨζxBk!/l݂n!й8@&H\&Ur)`K<X-F9tTѪn|76`hxI1TxrdYQms &>\B/nU/ jVTQ+3ȮcJU->š:2Kݲz}o a׋eTjz1zf"/0p _ Ր$|H8$aq\1Lz֚ѾxF\u%/x`&3~x4?Tq֡3̴5v[ 9oМcu鶑\Z gπ1njG*,@]h4}0>-P@ǎ~ ]8Dg!/1ư4~ok3p,12`a-uOx,a_\XOe׶Ua?>ȹs:Vu;V\?̔=S&毌jqOl/e˵"AK UbaQ| =~]De И=,p/0$ b<>C^~1M@Ya1c8#Qall}#7$EBfEN{5] *3dvX!XԷ@9#-/HRRo ݽգ^]kPK!|&V"LRvqvmɴv}hQM踶~c?AJSC[R̷JYPp} *]+7,D.p_BˋC `w/`=q.~׳rN #e_XeYOUn U=8rOjы%_:O(^DIV;-mi&;w KwLशƶ<$Bn*)U(z:٬djoR]VK۸Aͣ\z%#XrjmUW{k\j ]u,5(5WJ͝TzA"+A3!i.OTRqR琄 篾`5h}1s3-L>` |f496bda{Љ&yp̒ۥ N0zGc4Fף>~F;}'V9 £C~C`#9BR1}&'\=(`jљ^:rѰ9Pisly1ĝNzP&8mFp ;r0r;pЀx6ߘ?O Lb&u#^  ^ J16XkB{qVmX_ UO)P!d@I3~I(.u2fނyu gwPxv(r?([pM8Q G;Mˇn㚗P c{6V֫O[+1K%2!jMZZ"6ó6k|n#hY}}L<Wܥj݊,hyzL# vd!a% 6r̅)vX͵GZ,@ ֋<Ԁ/Uo誋Y,v (NxV^t?V•8R"a:xa!?z:]٭Iz(U:⮬-c}gxh&-CpA&.(-ق* Z~-:ߣnǠ߉;fZ["t*9C*XjKmH6%JHD$0$ պ7lWfdu~gw"h Hhuik k`TG c `10Q? Gt 0l# N2>|9IB5jc3jݬpߔu2׵pښ( G6Dg G߹^B>\ۇM'֢0exŴ,Tmٰ&ΧC"`߄)J; \:Uh5VXK0m2㖱lN5pj֋oѥUQɪ|*4j&K29Iŏˎ{0Gax6GdX1N8s?ѯLx6&Q$Ա"0|c mQ8wnp1ݡ|yОV8faf9Iҧ28i^XDGM9*Ҁ+/,vTJcz !RÖpNMh}d#}gzO27e4A}m;0~%ۆCAC@Fq /Cg_b8Q!!NΕat;eĢ.M΂x F[J^&jr ,xX.Ԙ.iJxHXoL}%+of*HM=jV"%}+m.n29v^z{~ٻAObHr-.?Ch0p]".5Vsnllk݄rٳ:T-(+Rpo\2߾JgFѴι,T]Z;N8B2-Z^mUь;A'.$5Մ΁:Ѱͪ[OjܾڱY=.Q Z0*ݺ>Bq ~;VpG\0o |yjc\ s&M#Scȓߦ wVYc4)uxrZ vlI @q0kv,e Q23dywTP1aÃ|>"]>8#`L/32iQե|~c\4Ґ?׃@OX1>6e܃o#㬧YeSadNjǵ0iwcߋF{?irho9AcL!q8ӏp GG/YŻb_ˌrִeeQղϓx wϹU޹z3F)|kt'A,xɑgڣ0OXvo@=HQ63!*ŶlP#ZbC]K7ѕ疎9L\"b!1v!JjpS|UuHUYq+6a )0emw㭢u.ݗ B(~z~wĴ&5۹joQwJ&xBYeOhطXh?>Xy7ٗŏY S)&;qWrHK56a/FlaJ6dqc# wѣ5IxJuX'ΆMF8V0:͌>` Q8օ#e8XcVx]9VNˏnkxIh0ُ"٪?)&$@ "9w]<J[TT&Rwi_$qixvmA#dR{Qe̻*ԢVgiHWSjtcxDfK-h7lS3ukzJm[5K M̭Rʢo ]A32`߈m_WUc)wd|w$Wz'BRӴ6wܻx?+V{JӴvl((cZn[eRkWW*ZUYܿw~Dzb(Fp*HILDgN|P;{nδkY)W5 4}ڰű֫ůB/U'NҿqT8bYO^TUp@;$D%9`1˄2J53Y4?? cDZg2쉶OA#2ьpp>PcDD%|b0wcdgdЏldcnGw/ A10|%-LZӺ fǘZwCz)̰:5A`4SGY 1xfa(a~~c|r-9W&: z̈́F80lpd  ߆$JfG*2vS G8Mz1>>KMo"z*8F,p&9'wx1h ɠAbrMLǦ8h%(ol!=G"| 7Ɇ;DFY~/S@AMf;U ὫF#)'x]ӮsEm4Jx! .eR6.l0z˅X.Ec!K%GAǂl;.gOiAO.@yt ː UѴE\\vz^^D w +.߾y֘|B+9 Z͵vqB!>UfY+D%B#ǗX[,q,ĥ഑ A_)XJ TI%FzeBb@ߞaZUAgv;;դ=>'rU`# S俳YB:|AK"$yZ9c޺'v`U^d/&pYʊME7SBit" bi8%>"̯d$$O9ZRT;ZBjQ%#9 d-x`Q8)KozMqӒ^7g~M1Cpwrkiw a[͌%w-{"@+I~`%HW ~L3L4\Y7u` DKw}Xbwwoc=+&LF~Q!sPC&xd40>%wi$¢#xM8cc?"+DށT\!Le708wxe?IDnxoh VxduUrŌ6_v>Ym}gOy닿a.@ Y۝gz*aDY+t+J RDŤqt=ugMn؟=cb)Vghxb5j Sgax_:3]Z,Nx0S k^qkxЩy85e&ixfZ]CbT 9ϱ{]~ ?&)^,ZJgO^|!jNn`bNrⳙPaWAZ@@sa@GdžmX"iy5FHi3! el2~n>z{#ʼqm sO)P*bݩ'|N6m\{'yϔ۶wc!ߺ-rkg~ۙŌgt}\;?&iXn^',=>·}y'}sioVq c Fa1XJù9Fp_fJWܻ\>~4mҖ剃] ~صlt5ihۛJU#_Yc+8>GA,J^|!?=tOD JTʴlٶDAŪ'g-rK1b;}`X qmwvR9M*I'FB A {1u*zVo.qү"O[d|DxDK1->Suv%Z LrmR콋i}fv^mGJ,jSNiQ,Vjwq%: %WJ %xQta,Om zPx{#HJue@%#rc@<31"#'Z&g>pi9ǻ%z*"Y nn Ktew(p2HĴx}evp۰پqRODcuD8|-nh-9c<|bKC\a间Xh1 tbtgLpՁ8JbyPCUPp5>LX13ce'3K搌0g 'Rz`Ї>I@i.c2]ǗcѼIf}MjteX}Z2rD1lS'#3eNQc qdž#dDľl6i?Ue<8׋OL*: x\|y09'A#m(KQ@eN!8 EfHx}̘S˿̈́8yB"BCQcWa^QϟK6\p/p+Ӌ*d$p;CS( 869!M `' =1ra馵D̵* GV\Z*`EV(XuK*.iH[Ux.#}A& ?2gxGSF[@sL 7%o,a2p*N&d>掸S)gX9}գK~@δ850\}39=0knx8GĘjqhN+&]Ûii ` Ǐ8DŽ){xaA$?g,cRq#3-&3 zO{$Gogt30F0<#ݗ`~m{ʤDÞ1x7At0X{FB2 ra2j_F XzC,Ya0O.hH)L$/WkG+2ʽx;C-L0,d1`]~O<~) fg,eZ*rßvyhݡ3×;<`9.q,,n<'˄hR' Oa;<7avn/L"8C\رoG x2=!/ohwY۵Ez "Feew`O݊pֻNl'3Up&S9ƴj3́πegRh㾅KV+\drKKԜي}|=>&~e418AtvF{!?z> e-&{Ǜn>_n[BCy. 5>)#Y᪷nd+:н0UF~m1/- qm1:|nM&paN%*%㎍(Ke\xf[i qlai1yvOH0<:(8n&x30^|m"-0L1JZdwND F-1brO=$'G8CNjHn&9hy.ygeҁcGz.y|Z8N(ɣv' C]9DdϏۆ?oL@F2n2!Z70ߏ)3ݖ~#t0)Ĝ'0<2k8B }/8Ϝ13 3II#p#&01FE^n!8wqibxDݦd.qJe#DD!ů<Ūז>?XHS#, SraSL1L,RՠaŻqJeSs_ݏ)_7}[nIK),ݕoO!ÂVf_7/fS3 C eWaɫ{kW(?UFO@C#aavdOc&Gk%͹%ÏȷOY<:?eRXO'!1AQaq ?!dqr F{#łHPJ0 "W)H?+ݏu&hyL##sL Ҁ:P@mOn²$3DπI:(egcnz1y{ At7-2x^]Q M+ZtGoc'2X^ $2<-0b9lZtOM㍤4@Tdlp=Ɍ;m.3Zc>Xlx>r gv&hǺuW?sA 2>7 qL&*AFdy==1S}9`LkzY4f:i {;ez9^0$"ﻎ2i1;^YzSYw7\x?#ϹgRg*W۾ăݕxkD;n,l*u*"l g ĆxIO/zp :I_ؙ.qFWL`O): ]U23.$rOhj>yGxTn 5)yu:R2v~uwϊ K\1/b 6Nr6>:kqUٳٸ3.1V JcYX\_g=N678,z/oɻ |N>Wè^%D6 K.F{s+~!cms;BBUδMDr'j磰g4sزVgXʱ~nIUp}k& 2Y;)1LQ?ȶ1Ӹ{\+󭏃I8 >Cʝw/nیN2 ˓F-nҸJhT j8X[x >-gs)CKN';,]}Ə?xB lQ [\Gp,Fx4hOF$I8e[+f8߸ɛ/7r4M&r1vkt Z:9T8~W޼thz/0®:gC>wv=T-$;%dl^1 ۭΟN {޶$0Y&^'q<sQF(_M&OîI ݛكyKCרa'(.,=W]}c>Ӭ1&R1˜tCsJC `0DƳ)bqsYXn:틺 fdx0ɊvwE''L|:WM޶|.3:N)~K f2ynkZ!iًY>3k0ltGX`wΖcoW@+⯜ERcg ؠ޲5GgeLktXY?EU̳8Ł5sr䫽MPP>>uȍs0e8`N`< 0nccڛ3 lҟ ~\џaэ38F>c_ጚL%"l ILӅɳW |.9*r~]~bZ3v灘(M~pqe, !{)B!zuCх3$dUj]ICIDFag Cktt|=0=Ht2/n3F;|<ۖ&DW: aexk*qR3 {433;zpb[1y38  sїP}*`ok#9A{1Mwq#\%K2߸i7iLhT:}y`[`=8^HV?x &9 kyx'RZ**Ywu,ۀS63'!3'^ƅ5qp.Rx8>QXo,1k7huy- #N= S;L`<3RF5 1L;<|(ܝt`!=U1O N ^eߪ^7I2.3 lm(=#t&{і|er+` 9^\R# |s0xp {A3sT ^ߙ?^dg͓ /YI.;c*~=x ;wuz/J\jF :$覸^=MoFqg~A5Ҵ9;bg;vŚJ'Ac5>gu\ǧ܈9rʮdgPD ѵ˦Z5|es u3S]a>!.,Wyc})+ N_f$jm%X{p3<[EM=ek;q ')fr~*BUtƋiKy S|ܼpJ:6%\:FƷb͚T;Y<Yu`Qӌ3x=;MKׂ^~`f};b:YXg/{U#vгEr3!^mA1`S|iс: If9 Ka;EªB\Qb)Mgy <=Jˈ>-c1JĊS &F "1DϪceve`+<=W`fx\ְD:^0@vL8H8T8.U {~=|fu~Ljnm2fNb}ӎs:tC9IoDwB2gV2̜;)\~xK&m `S|8LPg?|GOe&4d˚b8~S3` cZ1! 51[֞`j&f̉L[֍(C:_ /Y!?D e8ެ愿;>Ȏog;EF^`6O.~DK>$$Jй$Ƙu~I[D—,U0t>weOy:3o+SQeaQs;e&0ہQh+g >diie&1f<#ُͬ󝲘9}.v49dO*93\8|xCj`]d-+3_.sD.6kdx+;v/aj2Qo3 "=Y}NTxdicYrt t¾adlj8pڐM/nd)X&pFJ2MȆ:9d 0yapxuig1c4WS}xnGCV$`{Op!سXټ9j2۴KA3eȏ=b} _Gi8?0g06U)nO`SU>NWJ˳Zf`,¢E0Nl}\r&_^ ӂnk:s֞W]aaiKpd*ꤰﴼD#LFRgށqFr6~ =gRBXg4Θ\Qk,~9H9 7q;)fJoWy=Hal;;ߓd0>]G=pc=@\pL``ninVߊ,~;̄.{됿]6›?)7qƹ0@DD#<|*6dd<˿<:o #ks=Z=pwsϗxy+So<'&}.V Rȅ ̕'b02s!tphYTɔrb?Y8AJ2#5Ų0r:ih2)y6h)+[νI>gIp9RTegHlɟٕ(J㜳hu+6g'hul-N(pmS8%C`T\LfW ͞?L8UGRf/ny2,}2 s+ +_ƿ,l?.̓"t8Pφ˓ uZH4vїlg)87ӹ@>Fd<%!Iuya}k|K{,⌸z2^g MmϦp\suOiMc'^y9.\k:[/һX LFf&o{Όk0X,*~&Ok W(j.t,L6fB#># /q'dUL>4Q0:{M6{Mq ?}gnKބPTƼ8Ojz9̯*E";XBy$2|~N ꁄ.rQJj9uxzn80}~_d6V0;x69.3.AYKUN0O*2&DPyp1y3710MyKh Y(̀;e^7^6{ :u^^^.|Śc<|ߦgcܿzcfx߹>7Hs" N 8ąpp7]oق*ό=xeтIv=S5/|k6,@uE4"&c~y|6FĒD0GpTs2ћfaZ9f>*r<5N .S*.O2ĉV!^vKֹzxMT\fLW%кwT;F3CѸ5󉗛q {=5납SǓ6\7#5 ?,|ߝθC)jB .WL,km.b_È/\ON$X]31żd WrXF,UFd ռ"n F'_J';&Xk\]&;m[o;¾\uu ᛟwӞ{'uדÑ< !PLyfui1Ғ-%=q zqjhA6x"^JgX;] a e:$W"C9-&8󬚿YfC<\<3PxX=92@hB&' oss瑡vZ̑H+Nh0轆r'~noiOIn{~jc.3筫]W'YYHt2iߘ^v={=+:Y\{Fr{ihn92 dĽ8[8)5 -XJ=͉Is_mYJF&"sO].}`ˌ 9O='e!GnszS? _7sĂWu Qz|jD~PVřw &^XBPV3>BxzŶZ(;;&ֈP7pZ T @8ȁ. Jh飐v&-d\P@Fa@po򳢋UEL~PMJ>x]'W4\nWux3Xgo`1x7v d/W7u~b;4V醭1 ޴QG 們 eKNLS1CL|3‡ѣ:2IMF^d8xz\C/272 ?Rup5!\ Ft3huHidG%#Gg6cc:W*+ڭxF $rIl@{3z!̫ر]e8%w>?1LTjwNLBbɋ:Z+Ŋx¾Je vLex îyj2W"ř߫)}CO ;nn^=)+jxӢlzӞp=n;3s˗Iqmvo7j Z*. 8C*MLkzYAd.m,ׇGEf/9EQ.: '4ht3籚r<48BKvBXK٠:De dnr ǑFأnP@+$gL A n"+);HaǍ:G}w^=w3ZrݓY1FcXǿ=c_k-Ɠ^3pr2brfz6f3{87i`5GT|BjuiN3UAbH@jYS[yq[,3kMfg7+\Ms a,Lv #tbY e"`]m{}h:ro!4pm#OH= "nhLGீv05ӄMZc#xM q'jP00t dr~ϭO%PFgYw9=B~>7+?'g|$=9IOw,OI:F'>wƥ*`, Cg/ӂnE}VTXxN!!zz T&%qQ5U2M 'yIiŨAt`T8/AkeTR[Z ʃ2 C /)Y P1ǢBfa\&H! ̛hNy"P)kAWg\؞ּVy2?y{y֦OFqf/Ώ~=2\^߿é.cN?!Fu$voA$|'5[E`(@FllzpbhyjtOnM"pecN~qS#\=.Fd2$ou;:)Dz]Z'MS͝t>PaV̤_eSo8nB[(rR)yJ㭙m'^_5Mɉº.sW>wdЮ\ ^%:J AA,!iL]0au2Lʮ7|0L̓N)!L㘺wW %?8hxpW^zykNyq2D@TY`~H^JnrOxD"-Ah.Hhd.H6a=&-`\kmkQa24xR ;)vuG/E5!(g!DbLn3U!X#ЋjQ)鲕ie =僂*/|9`IĭX ]MUJ.;KJpeWx#N0wAszjuu?W c8=vhs[wܙ^۬ j/e:4O̞ 9KYcEL;7x&ܸ񰚽'irvEg|iq`cPݍsd֙Ð~$-3}8{m|w κs6`^F]/Ěaw!txrl"}l}Sz[D_ *9 =⠲*18uqGN^巗=,3c/_NR¦?ȕt=.e 3{y| )79[c99c:AUVXc;:[\dz/L=eV]CTs) fpsئTJdZE|n` `hGB<'@oB&T#i _gi7'|,2<_zy)։0w:|/z8]G;18nPD9g8뉜ekttO wu!aEVn*",ԭ$S\!xAS5ڝPW4Sڨ#`[ZN2)Ljy2I* 'r](_'ɝ:`玾32BGf~>GICގb Kwn6y;=&i [d1=|K)C$e@q rv28L r]QpJT5#FJ\!"],rlEsx]&˚df8xjh@D;Dʲ9.s)FsCm iQcx:OA3lD8x9xӔՑ?mppA7V#aJf`S&c%@7rm¹v`@"Qڞ?zpziOϏ߭soJCVga{8\:IuϜo8ɟ8~zǓ{erֶ9% s + ̯~>o99ȫӔgD̿Fs=Ntx=՗8Ȯ5YJ-Ʌxd Ce$H<ciy`cn, YƉɜNp(nc1JCL,p8I(s:,Bq tO'ؓxupSut?;5$.`|ũM$?p#/D zy !V j0@8>Tד|1gp Vҝ:m.{R0ٓ'R>3B3#˄'/ K z6Ǔ:ߠbK]l\7zsOG>kg C0 &sׯVތJ=;ey:bLb2?P:z4[ҝ$maΧQjr[fEp KnkE„G DetCO%J4D54{*9k@^Rd%- 6"ף f= 8)j9U%Y p_EZPuh@PL.8 V_%fCxF@@XL)*4:<`r// S$ bEei0X1d3'|Vz `;Fgm?7&wWwq3L5yퟯ8|ǃn'A$!4}eV^;`{.x ?E$'\Ϭk %&o&h2Cћ4OGweyWȀGΦsc@˻S<{*4vaqx|(ͶWɃ:ofFf6 ;c==qI_}WU1hxIZ! D7W*70Nty.d{WNXP0aQAj.wz8BJ!RMP_f7h?C ,r܊tH[:?p!e~ܫo٢#3a 1wTd/a ^oLi9zZx 5 q}blܝѼ)mԄY+G)J.&vz&1:fΰ)0cJrY.omlcZoyH c\`z$ ^`32Sxw;~&w&9Ga`*bF|բ!( uF~ q =CƌO 5 @  Ykr4wztP+S¶9-u%&.58Xc[$ Z:ízMxhi&b}o\Η&4MwORǗgoy|Tg?>xqmMb{'%8e4L%S14&9(yNϷ/R5ѹ-1Vq˥yx6jSRݠ19AC_"2)z yL\4F, !᫚"^+Jùdu;|Ql8K{V"2G_#<")dwI{0|eX3BM!דr\nz\&~H8s/Zoр1N0FY!ʬ%aEP/B!4!%gw/&_?Z{jc_78=1-[wGO[YӅ ѿdzsg 몱ux7bY^3}z.k\u<;'x4aLvg=^2rYߠc[n<$!l;/MeCݻq&)iy 6﬜4c&w$woկ @lFY:7g(^0I1SLIN)d֑#CX2 ]Ѐ^BT^w=|+Uȣ{3~kɑgץپiXc{cM6Z,5 &|ƦXzvJv =w=\O]30v{02]'Mo<7~ꋞ>\ |`M\f;5 3־_7CԸV M7Xْ9j74"|ś%fKXe;L[5ٞ (0}Rw1dK)=LNNÂR7\wLߗԬtᆖY֝3Raն[2awOMk g npOsܗw,w›lۻns5<`WQ||[ \X~W!-qg gD9߶syk_ok~R0oOb_|3߾v⼻W񻛓go2ìG%&߬NמX8s2BZ Sv<^(!OeRXg=nR.2N*raO#[q:gOJcn+R=6߭ɬB]vh~_LëN;Uv7T?~_cSߍý~01u1x\59 y3_~==@@ QW Ye+6_4X߯K[ ]YnDNw>Y6GDfYE\qOA1I*;ٍ2z|1|~jg1z=?lcx\nvn#[{|a0=~O<ɯ-|cǏ[|Cxx ;n;}k\=z?G띘ɮNKLj$Uṷmf,XO"'|29vbdp~Xr>A):|-8AI[VW~QκиJc^M}oUv`yS̬W)4Dߌ #k_!եעSydK2l tr9Rw 2E.ӯ 1ٝfL(Y'{:uJ)!s8+820 S{tb'A ʚ;Ltz:-5<3V*x2X;o\# By}rN{q;9iMȜڭ/`w?{})1` LJzI_ܦ7YUvMgcf51"]olf!sIojOcW>nSΪjdžGg 3u9aGRg7lz{P_&q`ٰ(Sw"C^z*)7?QE 88\xI.Z\4(҃ \)wC,=ϯIَ._WW<7uݻNpi1fO[ ~wχi+a#k׷:xch~z$FV; <1yѰ˅}VΣ~X#|]r{{r'|R5~8Q[m^"2c =zCNk8/zdžxa\oWG54,LNMf&Y? 5XzHV CP]dDZGJBaf D3Wm}NyT=1q)zU.ѮeF+6j_5SG0(y@n5s  " |1?eGn`^ߝC-x3Y߃S2zj8ǟ>a_B}/f_Wޜ}_ %26x{>pμq_9ϊׯ]=oOn<~ssǜ{7ʙ6'޳M kǮ=s}G{McX hדWNudߚx 3ב7ö]ǽ/gˬuyTJ}#e𫂘s N'pCjsU mqXKˏE co`_5U #P4U2}YΫRbx2LӮ}^%p>o5v7 %GJƝc9.3~+,ֱ߉cpx8.fKaGЩ&\>xXdnpPbe۫}q"kf sޯ,AWyw3 (8ː]F?5i/(\b&DFl jF=kfA'wcCU7U +Iן,lXm/1-jr KׇG-;0~Fk ~!o h#LRkyӖU#=-YK<,5!_'yӦPf~͚%^z5W@1-1B ch_d~fgZ|aBi::{iL~ˇg&qsspgb?.8njv?}zV;2f=gY7:+Nm)qngLÃ~ZWs;sD&fOsϢZ^O_{RNnvo,&f'Y/_7qps(%6Yxbt;(qa1'Wɧ80Ck# qu ai=?Y'3Aw뒺ڋ'ˢt` fC36c?oo2wdY;?Mh{K~x3YQ>;)2c}|G跡ߓ^/{PwMr513}uxxTL˸ho x91;>sV~8|sm|K8u臾GT2NtI=xY\F^i)!TrTCVAq&9<yL)X{=c/5uz&vOT3G.0 @r}jw;^9> }|u~8oi[Su4o_?wOWu 1C½:DT;9_ q31BLB| KezJv'P#x )1x4>3Wht_.>j )&YH-0n jd.:u;·!Xhu3i0+\8G܃P 2B +uۮ >j_Q 3(z8J 2wX91=~qŌG|+0ƳΣ/~i' '溡_&'_=\u'.x\Xh0串 9?8~ΩDOaf8Ł/;mc2Ο|bLLc6!t"Ǭ3:w<ӷ@Y<σxo9{|)t}MÅN1kkY6 KYtw^)JNaEɭk'OZ5yQ;sLS24.\WhQ IW&1_7߳C)hL643 ]sl9q\YG|8TM͝?+ms^k偍=f}JRRÈ^W>z̦r%r\4uz6x~opc%a <:xi{KO~3L?Ej\p$F2 EeEVuuߑ AI"HtoJƤ`7R_?>:˹vdgY/ɹ}km;trϘ/|˭~pofᾫ/A*k]+~\[ +31M62鿠զ/χCJۯs29I 8Uü^vݜ-;ŝULc79Y[.wC,S]? 1! yCsOQɚ:U|3W(LG.RTbo:S?9kO 6Y&1|nGXIͪ]`mT<11B^*5ebgѤ$bjwmV`"ۆTQVf8 H*VH<~t7=9o=G v׶sʠi1xْP95z|cz('k 59̴ 8L|/r?<+w\g=8_S}:5>8+7.Izk?G߿9s^A댃MSys/;﫝w@6ޕ̽.4v2Į&9Ƶ{G\7y1FÞ\S:M10>yՎ$]a={ˬ!gX\Lӹyw\3P~e5=_z®<9Son4=~;n>XY|zzNpx^dp\6ٟy3{|}Wﯰ=pkKtzƱr\ 8 î@ʮɇŎLݻR  'x\ 7! <u?׃<{Z' C+-qKjԜ=dȟmݸ#Nc/;od]{RM^n'ZWvy^>.N.G}cp[j@vzg]|펼MqBacZ띟 :Ͽzq˄/o^O:d-;ަiK9WϬ#3S^dʟoOsOjxgnt蝓!F㏁M}qGǟ=wWc~-ζ/&'mL 6>gvC|'6 K=|Y6'nzJ;1o wq<{xyJJΰ^+&FU7N7CoSCN9R$p˨@oyy"$LIk+ mrR3ar>]C; "x{s!34 W75(&FYzTnu*LLǞ˙9]TR.+8{I\|e[BR5!4\uIEX ٷ:4^5@eM(8Q2ھV)76 q-0At/dt2|C특,f'N%<}8.9P_haÜKҘҋWb#f21N8D+Cr$7=a1Sl].H_P9spIu|ϢW'yF%3 Ws N JBZ #Ǘ?9xH#?24 7K;c8nNnYL drOHu2<\ׯא:pIkx8exv>;,fL1=2>&3:鐁rv1?6s1:2pQE@tTn1ͳ@G{]~5s'Sn-OO(QnZ7rS_ߎ1Gcipn{||S.np\tם8] &zKA0^Wpamuf3|[WP?1|k0c2s}\gYO: kٝ16NB%L_jU)>W>;O9uËU5:PL&cX-Ҷd? : d F3O31>2{nzsLE) cdy]´a1^]auTc6f67/z $Hc(6\ KZNvp~Y aA@ =4E|  sjґ  z[YGJkPiSv팎lr{vR̜WƍYkTYc81EL/~7Apgx0.s`ND\3i*њ9 ǃӨ:"Erߌy}aB|s,H-M硼/X3 pCu]++]{|b1G?j|< .2rsL; tC0A^ i^K2$zc:q3gWnxu?iE@|{v4pioDDzUgOa?=XsB7fny|J ?F9j g8̜v/o}y:{Ic_)}_Yy:j>] t3y!xƲlI?^8+=x :WfN/#f?-Γ2J\ ȷ>]S-[CDT|1h) 1$s)DQЈ>. )ۓ)Bk%=dP̥(M;EۉWSr@#P2MǾLw^mnmi)}; \wz:o}:󷀤o`tTTpVdVqd˄\FAt:fGyt@Of yT~ W+w頏Nꆛm6UUDx yg)pglw= P͇züoiwue'k(X_n˩*j 7i P@<3&sFYm.*#ە,B*Ҋ.$2<2z~=<&^5uɉgm7*$MyzY)5:k}3tu`aYd  0)2-ro.X;`] h\/sR[b]o&\b^_@z/e-~=,kNJa\7UM_E[{.Y)'(:r%<[Ŏ .dưyZ-UՌp0/-{VCăDw_ǴS\XX whjx3T廰)K d9z5\blċVz]1+4QSp?М e.AY#s2hV E =bP1iaW*Gfj%7xs* (A.]\4 APG8 ny%UФpchbWڙ`IsRWo &6BbepSY>!Y\ im=siq[tCd|<}ߧĝ;㮮,Q CeMe8lU"⏅ח^I[ʸy1-owy?njs9RЁơ'G #&04%LJPo~q0`^ k Vth#GqBC]88s!wA6IU,+‬I΄͌e$?c<lf p?%6ݎ|=ޒyN &! Oz9XVͨܛRG8?F<ü7ΣSn wA9U1ؗkw~>x4F}>.<+'[u}cw =| r뾽Eq?T0xq90?GOZ ,")5ֽ$}AV-J^g,0Mj8%pyݮf[?O_ϣ1 v+Ǔި=P "# ,8лH@/a(38-69Y]>dχ>:]듒D,/:5B3Mk|Enb3mj}/cîQni۳sɓ|_䲶}ְ=Iԙ߁>-μ4ݿOG\7k o~iSX+|%>i8cs9Ru߭awo) [_'tr:OĎ~5qSgS<&G{&&swB ǟ<Hrx6&60,&^,+Dlfe@f{Hi7Nkkg&&0cp3f }Dz+L7=qqۇ }@$pdM)%'5 âրּFvN'-=+ts˒(%s̼c] Së8B D_fUskbSƯI `rqtbUR֗1=L'ͮ#6```r;`2uaմbwU;^:=< cz;305Hc/|Ԟދq ,!q3o&db*MO 7CZj9AtK6"#-f)cҷ;R8m}Cg/9TXߟ/|{{?=|q6zOf~E|QZI3<_9> uKF d@d8E_+0n'~8NLCF3_ss6s?cM>d4m>G-1mS5 1 cn#ck(a;Ã`B˯Rw,:oZD9;3x2]!0_ag^c8?wІ),EP6ec7pOOn vxpQorׁ+"~+:H\~c 4~ i끽 kSAє 8a]>fױ<0؏͎ǃ8] ˜mL6'/h#Y 'm%F͈ `Li@/pǣNjSgZ)19K\ۘ\,qJ{1;3\LΕCl@љK1"8mwD8,)\GHJ\a8Ef\8,`Q"X$Nc^rik&W2A:hqQd%Q:xZ*@>GxCLѭHR WX`nmX޿W3NL#q-^}{Mҫ[A*=$Sz:a$ysǏ;-sߜwӶ;Ҹ2[.Ԃl/lf}mtq ;eL*B|^{3qк>}oq>\8׍~U͝v&a3soT\.|#Zde^J6!BSQPO :*ǰxbS vr|a6) |5ޒmC)pɚfA~SIk/aV.rDŽzjcž k7 VcX A/o^et-"Qr6UdWsgq^\f 8},bO5sجr-g*˛|vdo:{ {.q|g{uGana8Y#|0@&w)%NR 䢠y.[ \JkxB|nu\Hw%oXG83B F9 â4ZiOAsd`.rl.DBLa.cV(hcCҧN ѵEn|9\.r[I0뽮\e1!G ,Yd| %hd,s0n h0cLz \qQ(>8b^v&f `(h n]h]xy*<':#828M,f|^D`Y˱RJ'.lBNdG&5. :6dT+7̳c0x2+t "ӸRq%Gz^:( [GB~=,R[}LEΧ<攤;Eg #`g|hcVgk(.912& 0*{ ;or>lsFp3tYahNd\:'gw.L%#1d`Nō 9jӟU2W@ Atڈ5]BR ^#1L zpJ92.BD 607qZDW*̉ͪxB2(>fAV9xUebTyČ 58a05x5`A? 1s?fzDUekW&2|*TQIhy@⁹:&&}5)01-0WyJ.=m˧=)㾹q_Ďn>s,s n&+ >̺1Ldc?G-Ƶ-\fu}+&ϕJ6g |S\Hm gNvƝ=FlcxTIfeNa:֙6G 0+K3iOFYx`&[ɇp'FAszLsJh߷ʇZkbo yoA\/G;N}8"F# Q]uּVffaOGt8=b5h }yIɄ) <K ?gfT8/I =5~S3A L\9i̐ [aYy&9 4xR>?@=' ([!9n*LYKh.NK46׆#0Ro7gmiF;WiY\mXmoyɇR,6`Sokn!;qٍ^&VLs/iEвT ,0k&G䉑esBݦ,-8w%$EQ`u1ۘde3Z- ٝkB?,x9lL$>21jmkW ,d*̶o x1pC$2ApFrr Ps+zdR]8ޟkX-Q7#PQ2PLg%E)0WeVʔri9[V3ȖTahF4 ]GV!9a &J\)U)f&ɵ}*g>NPv o(U$ 4pBaȿ'FdL`%r8VFr8J9+ uBNޚ vF 63>C Sx-Y^nwB͸~B\WC:ݐO郕 VMgVq`N13@= # 3: `F.6壼x9';dލGϥls'A2Lz2Ax66>%mؽc&U0CBtȉc.#DJI C9`d}!R@\ 2\ĿgiڀJ!dLYP4WRsp Nw"ܯCwgS]W/^g+n?9>RRFN3#,ӭ*&lņ F%o&axG}_Z.\?|[d3ưnŦz#x虈oa:m{W* 8INVl@(?qc2d^XŀH_3mrLdBxE.<3L!LXJ30qQj ǙIDM*6!z̴n4x)DVp,Mcu0EƎaQ;#sߖS yP CshC∈A.ſW~ּr ``5au{)Ѥ\TR~~l\n3W_믏䄊Ǣ.x/"s1Yq7޹9c{NyG0J;{ϯi W]Z@x.2q\];ۜ %#܇A|g:amlyCR2i͠SJqt p;idkh7|cI 7~oMfּr{޿y4y|c+WJ]83͓&wLT,6Ѓ|\ogft FPU}2!;)t PuP]Jq'J-vE~xz{3ST3.nuZgi0gRx g(1B(7-݆9*#$5E764fM*{5NJy7.k- [^ͮqM7v{޸HW }b(]g0?h2>o¢gnK;eu174Jqe@lp`3჌%&oz E9Yɷ C7t`13vɱ f R9[nMm5GӡM&n{$/_L9`?ʰ(rFyE.ߡ #FNh=F ]Ǡ/b/B /kH  1'̣%O L3IŹԘ$'њ(@'{ ө(\ưj? ؞^6 _K , D,8>غV-AA &!e!lqr qLC TZ+"F&@#B!&7῞hɑ9\,M([[6!8 ckLʪ4lTveIW%YŘc߶1FP"f%!C>'8ۘ^VU(EOT4$*d8 U^o0Ȇ Dx8{*6$TF\pJj=EA1X1s$Ľ̿Lc.\`uDᛥਕREٔMk[| ~cş ,1uNy2u>'^'WqFd%߃~y _Og~b}jJW37jkγtPYwF\S903Lg;Gܟ`0Wg]|O+Qkxb_LrVѾu7w3u10+^8ʻ9Z!H j*tDtBe@0@Nf#V *1wWOUQ6fˡ|44xqݽPXյ]<@׏J)Bm4 8/C@#Aij? C%Ɍ3- f3|,EqZF*z՟5 S0K퓙`C+"VDhٳCD_$.*ـA{8{`Бry$vlt-rY4ݍ-~PtdxʺU19g/dؚnNnS܂=x06/\(U!|-h+M е7@Nf,9PLnPV ±1`YLHt_pphM~LDΰ1U UPpJLov J ^:tMSmC&2y}#@TBu&ܼp3NۘZ;`Ys`2O ` ­4Vhlk8!IKK-3Z?~?,nu==' Ls%xxXbU h*y8gg7!]YΒuٗk:a \7_b8]@mj,:Bghv1f|yg^ٞ gm `vG*|792cXHLly]{فwZL#nrGYk}SZ0ZpJ <a\@AK­; "  # 䂻pTQCI*]:fzQ2Y2ol3< 瘉aUD'*JMi82wr-U ^Uf0f}rg}H21R \eafPsvɞX+McF82fRatvyd l]v[|Uѩe0TxQM5 qe; GJI8^/y֒"aCmyb&Wδ.At2zAa=" `( cA3dL:f-as$ E",,WLܫ[ktn೜mPG٠S%(d$z  fs.q*3d9bmJ Ƃk^@Ȳa636f4p9dp$vx FŦscO1Rr*1HCAs<%9d ̭_m|d]#X=uь $xX;2S x3Nq-qT"=z.3s֩re~3i`Hؑʼn8Ϩ!pzk8̖߯~yq `ǧ\/@ aq`S|N9vB&/3XIяkyK;f R9DLV(tCe=ĊAs\"lJ[h2Y& 4.c-m0l;FL Jŭ'ibl8iϟ0OKRq>—`I{ + mAAP!L $"Ȕn> 02RLĄ0I6*rhuܗ41:C _#WaQAp3KG&;`6AEZ6˗0X&&v`dV]`E,Y`_Tnu5Pz\\c_>z*AW;oDcF0)Yr\}W dJ3﷔5QIj`q 2 0 X 3~3k .qrR,JGF@`&ʙw9@@P3b I\pW)rhL6&.1[F{=GMwjs` ('j"pTh0,Үl+' @W P>¡e GwfDN#k<Rd40W Eqgqw49HHK@0$. 26+& cw>%/c23PQ5XƥsGj{x!\yLt3GX?\O E",k T,HrzE&6l vC/,1 pS@'?Bp7mpءn PhC0`&P,"%F!F^ !%cS.D%R p1e98& PhC+;p[ R\!BbpAة)+̌ e":4pr)t6)$g.n+j02``n#s=O&^. <7! a\͘gigHŒ75IWp3Z.p B S~"9͕&ĖZ(Dl:!x>\v%@#7(8,X6ٺ8ħua$t?,u"1oϮ83c {"/<˶Yt`ȲnzQi_="\cz/r &t>o77\dtMkjhDV!QTWь611gf&[MG/Xj (ɎT&t;|%\P ,Q*óDˇOkK^g)nFBv[C:;Y-"@I m%N:\XyOKHZ&#S@ TȎ %CJ)qʺ_mNŘݡqұ^BN:"(0Z-~ދ?=Gpdܚ2 GŪFxިs0M@S:&q@.1J>1ɵFzO4й ˾yj_WD 5sU.\"~K_˷(B haW_nw|yCE_4<$uKcmei!}^ }| 55\r t-bTIH n,52:2M-b @*`UFq@ʋ]Ӡ8A"nXpQÔ10 r%|TQ[ L2+1Esńz  D pSa 9{eJV8UHb`W(IVE1@gqJo!y*vI$ibL8EyeHJZF.8p @T'Od8BotAQLqC i`j=;R>MrwٚaSf2^JAɂ.L4|(*%1Z^Q ydӤ,ՐTY.,yBTtq`c†! VdnWWqQ"Rxl%އ\24R#ЮySkp9ِFPi""4D\[~ϳ8?25 M_.^U29 H0z'K HGOS~/? 20"[[W9T:悌|221Ch Pz\QVeKz p'ԉ t X$CFЌJeq, ;1L iE;w!VW0Eɡ!{%ybɻ H۟Idkť4%XN>T IR -By==࠾+1a"ðlGdijFV<42dE_#aKJs 8 QM7=7n>v.gACX׭θt~` _CF" ԋ c!|'<MY~\Bɏ잆wpN T3b 61Cr`y{vWښa&*9<`N,X2^ sL5.a[øمQUJ]Aa81G& 5QW!A!3-@1'9צլ6)Ʉp@ٙB@|:J:0׈f-/}6XwZ \.@PaMzlTVa{1_%(h&ZDT#"`",ZʲhhU "LL+:0?..%t9>+|lu'r1WMPc~j=J .8Th90Z v|qNv%aNa#3j.NèOG,ty *O=6LM@:sF(ɢ#r]\1BЦ.87S&;XEBtn2YaYYPakU<"mspѶ!i| 3(˒3#wM:yk^bLȹ7#ryd)38TfNwd35w̱v%vLRZa $T6b[^J.Ny&p@0R3<:"j?xDD)#)=aYJaS[RHV*dd/7_EI^$9;9'vMʢ$,:gɃP!323M@l2h#-ьXfD88O߰ FZ[2(iō%K@hg0 wDo*얆 FW2" R9ش|PNeRҔk2S {3UqRgpxx7zNZʓ`\meq3ϳ;2ك `{ˠt<= sP* ]JC@݇tjEgū䭒0,`blfojBX;^ Iw@=\&;\aKhUz!P% !L0mqq+=MOJ eT%uCY@tufPfdStʩvh'BaJL\dVmnfSL=e~y2rjȷ,l̮aY6NF-@iEqq 01x:d9N[ >HzUkxCе3u_`d#1c#= Ui`Lӷ`&9`+%o48Y[܀FW J(-PT 2T g7|̽L*a;L郧e>b#FS!#9C[0,/Pa H6*ŵbOX #[Ι #r89&CY|VW"I<u c*aKٱk@ qN*R@̀Q*A!8\yhvY2P`H4M6(Meq8Sd4J86!Z8YsS! >]H^3!]xYt:"E& 7B0LrDT˜PfչOmᚓl3U Sì7ٙݜr»Nt&kWQLr&Af>"N)*ɽ \`0 -axFw U=rģR3 yKukC,Hum!ˍF-㌥{o+}ZWLݢ9 64;: oTp a|dTg.(,4z'IATF-u H9dL6`bOD-TAz Tɛ 6Jv;e\|HB%g"[0%n!FJth1me#)E8xy |<.;ֱ4 !~Q8@1lK҈#(/)+uBD6,z$WY9f'ٞ` 3DLL*a<@z4G{Q2r4zNX+t8ăWZ^fgLJS(vtt {8Fc?ڌ* AOJ&uiNH+o 0ɡp:66F9x)V1!q5b(14"Sq ;XPk怰!&Ѥ{gWՆ)qQ}|5ܴSM ]*s zCSyy\sh~ l"H"9!\ [@&6v;+W- RD~(NH("]4Ifr"I\|&Q=$:Uqxp3H8K+>p[ ΡqUVnS!c< (`VE3d0̣m +ImaW@bEpT۠6d3fWx̩lU) &* 0;,[Yp)B-mdj s08H/L? FD1]zmc"<];qd1<&af.eWk9H} hс@bP;%*Vq `y!ؚ2y+ۀ5Ok瀊]12S5N[X%RԼn`[/Iȩ̒VwM0iLm3eL.\k{2+Vha;gnW/Xa[q T`YɁGNfBS˕KLP[UJHKn\qptBI`3H ̽~ptr*蠅H&7v/f&G,A/HS, os*vԑc/EکEΆϐʜHې`x^<ıd9Nfڪf90aG!= cW(_f\uDaaX?2bL=o/Bowh͊ R MPokcZYPrw4MG"9*W8'8&P`1,bQh6"9K *rf%ZJ!a -<i@I5e)3t}2Ψ"CZb B7Q CL`]$O:GkY$}pQws38 FxGj5 erTCK6zIs ]<AǙÝ2aY<.Cl p6یVq. ֚vƟ':p? ~O~8qy~柏Ŀsq͟6~soӚp~G\9s_;7?_<.+9?C?<Eϗvs sÓ/= _5\$m' ć`XM\­߯|Ab%\mmfX[3e6.PO?7t+A?(!X}O]ke ꂴy6 qJl/ 6w]^(e`\jB@{iq?)1ѭVǔ'*w6ԕ~xFewo8մN2Ԏgb4|5Y=Q!6V *W-׫iT„~d $횳?C8'!@YOCȻ`~DZU] vEW+1t ˒*9v}pw1x 6eu*EޣW8+ ;X^w*2xp{g {N(!1AQaq 0?Bz~lN#"PeUzX D9UUWl{e{.1:gQmaJ 뺦<xSA2yȅ1$5dleGLjg4qmzQ^9YhU%Ü9e3f^U}3!zoMf]-gX]6gjf̰^xRM?+ǀ+f<?~>e!bzw=60n ']Grexř;U-lb]lSLF^ެNSmB > Gezj+#ֱYy;ibzȚ0kyC!8'x>E5L9=Kj'۝X}pX:coWxwd4߾VY.SuDN^+w:813 jN6*|3b﷢vC{[(8u:1A3fN.31vf㕇jj_Ρ=G>fqf.gMvc{[NِSP LۈT9oLsL~oŽNge1"5w~&XCNW aʿ_#G:9={Eih=sH 2y|_1Pi߆;\g h Ƴp8L1hpLk> sp.tNpCXw3 u8 4<!/@Zc )\ (E_s|MɦZ}qd1P=j  d3.֛s;`WwG%aeםN]! ;˻|s,{#yMyXzɄIvLN ::;pDeho/|6AQ.-& M ܥ'i>y޼~1`o\+Qywu.KGf/&i|w[UaҥT6Lȷ-4sYx-f\eD-Öx`=d\U^|`:us:3{W%3pEAE9Ǭo>4 VO:W. xs&gA~r3=aֵ7|=o{ΏVw3δr{j1sJ$fI\{+' kﯞ7wnżIk m:7:w}br1,~ e0~1β|c]vnjfeo5LMN96N t{^.oRXN7gUm>c8C&u|:pΠ5E J73R>imؐ.WnSvs:.Jc:֒e EQإ&-13L]!m$erw+fhJ a163,Lt z%J-CdgG-,G`6Dn~6GzMG-~k}gX<=fz-tnYzH9EHk&eJq)mG'3LnxGjo?/Jnk'Lp8f ~'}Xϛl2g>zyEV4]qv3']?z92/O`&Gxq{VbMi* Vfr?hP2dr+[d:G;LFoo]dI~y0%~%þ.nG_>M7>8}>wΒZML߼ ,UClLY>\`F6ML]}dRݷXr_n Ħ! yw?{3kEFc>$qlfi55G?*&x0zL5WrE&F/Ii:SСm?[uqg-)޿f xqƣe&0/FwIsvxXS]XQU3!ш[{cS+Ykus릓,0N]D› ䷼`.d0F[Iۓ.nPY?$?*1(z v\51x V(X뷓X0uugu`Bے@{0?8! 戱7mvS )1Lp2.:%|DѠ3248 cNbkN=eL'B?VNA$qOޣ50.!&す#<[Mf ė}qv+|)Ta'7;!09p* .׽W8ԉ&^3X醧^-oQ|%/i.l7g_L_/ǎZ\?(\JHM$qVq;^L*mJ/N@fxUzxDSLϯ^`Ib(uٗF_A2ħ~\/SWV'̤#82O-A[4LY+7ro:kllZ<5صnڶ5lSǼކfqzxpC6%2я7( {8-B5@‰"A.8IAokC$,ۗ K"VCߧާS0mǞOѦwtGd 2 h=Nϧ WI;zs[+g{3uZ!Iѫ,`73iZ+1[.Y{s:\emcMfc:~N֎Qr搫K\2BN2ҮAxʟFPj€3sNcᄍ "ˌhnčp\f^*e%]<=!ѵ_!\c\h}쯻|RوLXh؍k]ҝxsf4~uk0gezӊmiu rho29xX}&^sgYܘ?$8\5 P\45"@8#W(JɜP`KBMv+k E $ݾb<g jfvdу +b{;-ULXذ nQթH.2a'Ut;:x8m)>^$pnaK=b7vd88L3.y߻ CLۄ˾;#5ouu^v\~uQ>޸oG^#:p1ROCAᵝ)] nUн)>Wu}ǎ geZlnk82@uwy8pOY~kpނ~뮎4?5w=Hf*qڟg"R-U1-Rez qݞ2W&? cE70!3=S4; 'h3;8dHπ:]g!:BzRF,^tS1ąs= ֽmz)q)"Ŗ1ӻ4 6꼬h36gK=휐 dl;>e{!(fmk8,;yn0QE/Zx'nm7xW2H&=ܼ1/BcuuuVIzMwDQMhGI2&q3:| &;Cc(#F8a2f D0|73Ee۫!σ ̘-TzfyƟ; oO;ЎWLm9u?>뙍czHa0P[wHC?PQ .r^x,ls!1.YTWv?QFfʨ^5ScGzԦoL!\rVݦDaEj5L~#dK))u-A-3?t)4{\m(.9j'eN A +L&U{#|@!ERŚ05ugnx.3__$8 묞x 71 v. 23Cm˝:WF8-&0絅#cvx(zE[ΉמwU:FKQqE9MNׂ4ĉئ${@EzatqaX a=D"k:V93Ƒr? `;8 (v];`Ԍ3Hn嘘fVf7  ~@;@RfϾb |3hx/lk. 7hF}kƐzϱtZo 0h>n8޸mNhѥʦJz_ e\RU8+z13C(7'$`!^cX۪mn:~-=;DBc8|@P3gDg~3Da]ow$3׭cBevh3ǹ~ER5ar4= hA׎NK᠓oGs 'a#zFeZӬL(/E`yv;*c.%?o:f r#?&-2!Ta1 4|U5rXm.2]u48.94Bo㿌[ξYY74W` \4WWbf7g3BĊĢD\o1􄧗d (&^r7?o>e0Ssxj ܏XnaH~~B1v|ޜ7M޼@Fc?3Y']ω`cXm^u<~ߜ #i7ye.8_cۍl0U?;Q-.A$,3Z80>&-~o;%)O?|pGPexc;nYW&~Wa=;WwI|(u[7|B#qrHDil18`J뻘Ź9 a ]5LV (3b>VLj HÌ,f# x][\ؽw}1^  :c,FL.Xޙ5a+E1MvÏN>pti'⯚x.,19)WJ3V=&_ 4ʒu:eFqc6棖+7>2qK-r{FW>z>^!v)e}!`+/tG}ϯ>ߟ*Q`oLE϶.;5u}`v~(Xcppv|&pBkg׏}"\1݈G2῅mf\|ylr>D1q"ɎHl[F1_8wZ0/NZ9?ǯ7c_^~~#sc~\pbn=k?|tT\1Of4 2"F.:|Gp&g)D3qh8-xřML$(! x<+Kҝ4}:(aF9\6(#6 )L Dto8\O3[lT1n'fD] ^NB+**d%Me'G%NePsDN3ÔVgY@%8dKSTdd\F9bL$сcv44q{q'L !Q$w%a$,p2$_jv\FłUT7v2~7|MSvtێ"S <:ppTuq`r3̮E˽y.DBRmx)V'awc5b?-fxc8+NK.7cӓwXT51Q@`q.L}70g| G."uo8n]ңBL_w.nXyz0ȞGa3&M>W?ޑ>93xllGY|`žf@yǒ( N[ (cBe#[[ɮ :}6ؿ1|J rd/SnT3}Ļܨ ʖu֯ ycrEĥ>4˵Nz~Jj<~|p+}ߍ?>f1Ȝ1)XsB'y~q֮z=>}{x|1F|~Py:w㿖{X.r_W_yFGkvG:8W~a y Ժ1.SNdgy(Lf Re\flJ-@Ӹ. 0%WTBA3Ys| (Q ㅼDj56!&*%rN Rl"͍ ( pZ(㳙@eB!͹+5l\cM_7_Q1n\SϬmY0|Wm_~0+sZg_)@hi6{Y%~L$0]S #l1<ɀ6g3}97ݛ80]Fqߏ zd"kӎ4~7w \ U_G M;Xc_j~Fm;sdp c>r,vn:gw7Pc2<߬\xϔP3,ef4-[9 H-Weש7+Zfd1vw_;_sۄMo_ઓ5 |#Zh}yl9IP Xn.|q$tyN(l8oaxɽۅrh%"Z.rlr1sg\g<\1\&10mz ֌}~; .\c9$OǜgCr~yn[׳8\^Ko$osXW:fI|q.I_.fp:^I2n C7u5~)0BKT 9彙`RY bX2_&&sn2pu 뮮_Ӄq>-B2\Zq{;da*u S`*Do({ p(*;^:/iM$4*ym>q i1#z9#gθΞ!g8o.:zלn?>Ǽvˇ>5Қ$i|/O?]V`<H;[Lrx<p<ngRu< o\f=dM>^u7c}r78`-P8Qn1;t~21hMe}KrƯ%ɳ-;5"#DPFTsާ]i&f;|1/P3۝_Eq橫MOyBOy<|arĵ :vXy:!n; \8Wè?* ޭf8TrzX ˿f8|޵~SN _me vcEӟd?t{:_)s󣃞Wgim?Z?54`25VK3wVDyM/)ͦ:"/t1=TgdzuǾlζ[q;Y\g> lv0i3uBSfߧd1<>z枆Efݮs2\uj -ӻd( b[ МrU*4sfA-Oo,wo1;G=]m=wBڎ-Ə 3M96&3U.rHyˊ~|rg?\!}`B1o?I22_0{yR8o *|ԫNd3Dsgd{\+2K㝪`^>Ǧ17k=g#A_fS5tu'C--K#tݼdHTT8> W"ghC\aQA%u@oEF,L.XMyUr|OY{_&?'o}}62vC~yH[]qwH-™tW^/(&SnjóOz]rg99HBù|MF+yǫR>8RN eSpvcKs/57u|jx/^ ?ɁmYzVMyr\,:F9TUlswt(03Yܺō>nfϘHM<lD8j D,nf+ ofNp9wwA('YU7IgTc7^=o$jʽ}1 Fnxapl=o,lw$KwR>xDԹq@~oUrPgE7N/K_ tAЎ7s\ q/Ujյ׃ƹA_^|peWJ03N z}1ÞYz';|N4jCD :N &SE} RxY ~K863:əxt|?>O۞?@NMO9@.(ό\#BkcxW+n=|{~ap|ޭ$[=ikF&d18c'7=G7$O~?=s;ց,ǒkYs'0uy>g|hؐiѬax%Pp0-u3\!'Y\}"V_;k;#bۤ+ ηSdh$ yU&n%V@X g'@gЮ&LI~?Z:O=uyzi>,wTޏs-"ozb}mu3c uL|G韅ϝuʢgxŖVǗ˭۝lq</~ٟ/r2fpld}s:?ſ[Ͽ&_G(@]0g&$tm`.dbt@i qP0dQ0#s¼ >fM_s f-3nu#+ߠn/|V}y0  eC﹂MysrfVSTaw2ǿZ$Ü>q:otz^'g;A5|2s5x~kscY`?Jl^>3fJ'gϔg[ʈ͝nG;w$vf")U,=tLc,W!JPޝSF2&c$vp&a?V8 lD:FNy4vy[L4+@VI\fBiRpg]efe{yd.Jc3QIy-XCpCNk=3gPq&_>8Z^ͤg)-&-I3CYn(Ecn9kb{L3}zg;E ?S>뺸 o;ƾ*}g{;}!w^d"dWgӿ渰0&%~r-@QdY *aSA3) @b#C**eG0\e--D3zu@c6bS!Ը# L?BHhu͏T=y|;ٙ5>Qe f|?>r<\=Y< }%Ƴg]X%\~!ٺEt}~uєm΃:}O`u\SYہ QO kt>[qa:ϸ"(vb&;)yU1;O:y|;y-wu\~;|}w]$h s[8n-=coUW3uš  [ə5rW)12A6C9O~>-~G&:@[ɒ~<ɇǝLuqfr8|8oǟ}~߅Xtcɽv~˝p-{$v'g7Uaw߬BCgwe'ly?a_늻@[z ypSlqU.}ɞ'^v~u{M~|҅mOL:į|9ٿ~o^_˼s%h|qwo3|O?+wY Bof<`Dˢܹ'X4|4\K0M&p1LS@Db\a v4)Ɏ9DP%e8HBsFE=gDKqeA\C'o 5:aܙ?<;3@i|r u>ޟ/&{t~cgW>=< GXOq$3ڂ'ľs< xHsm_>92o l1rf-?@~C\qYٛgTU`;ny^9ȩV )'l M"!ipgu"a?Y%y\v`f972~/lΐǴGN7]ּcfvx/Ln&wq;p0+qe[ F8ك-Q*2mppiۆryO1\X;|bיĺM%3xy>ٜɣ}}uқӏhqփxhtt7v}"0Y\PulPRG6:h7n\8]9BRcxwFp.TB0g`Lw3ƁS=kAU֮%MuYnj ߞeAn&Z{P^2.=4t.Kk}fwN޻r+scT1C `I.l_.FM:l\byJm'gNC+ҷ&olワY[|\o[nYp^ ӽ6iټ{}\!ѳewGSm5c q npdp!K 9救f7DNSGak7Xm\e2!֘oh _LLaJ'!;D&M1qo` תNwlr>wo_CICǏ78O1~;wiֺ |JV[\zŲ'qpp| ?@ߟ?ŗhޏo?[2Ǡ9jBPLl „O؎|/|Eb>5q 0Ly۬ƧJ 2dpPD_o'{`߳`|秿3챑O|5{$8e[ 1ϖY,PHX`^ֹ-7{ j?Ϭg&q9j7>4~8uO{CywtWFSx7͘ˈYP0c;7c(ow885L>{Ǧ;32]*hOʸ&tD)D@,Fv |xc0 h%w3LO9#Dɺy ko :}\8Vun/L8)e`&@o_4]{y8B=֎sNU~ɤffus:L/;R}fq8l1K0h T )3K^ζTrߧίs8x$`uk_ګ/;.;l<$Wˑgx7LVQrfQS}7)LbU6'{,ss9qߎߦ]q{q]'l~5=o՗-#,oEqҺ ACXx3 qW\o(rz2EΕ'S2X`JfWe 3' Uڈ;,)_s>~kY}VrҞ}{6ai5LL.Lhp(3k+C8ɉr.gioXշmZ8dK[E<%фޱYF1Bsx8 ;ONۅL,ʗ,WZ#e}@p /_?#(|}M8`E˒i>8wH579;>rpiIdEX`2QEVZq—] I[^cHČG .DkɎVhnlCP QEWeP2wq &qe#LU*RP};N7f7rWaˠ)&f7覞z&S!vxMvS(㊇$!)6o09Oo=g+!?OԿs}5gt.cQxR1`xi׾{?_P6I=g5X'b_ =?睟x~LqB~=rg4Xr7␘KPu#O}y;)G[(.]gb.݅\8Fs_4";n.yF;RӶ9UXV=x͓0"_7Dq$ †=5 ׍h\@OƟ'W '>̾=pRV_/J.? c:#\q˕1/T9uUmu<;fBb o+.Hj .LL2pLFFD3"`vr0󢼶.""QISQ9%- 39WfZ[ⅰ,$ȖɞFf[\nj} *Asu' Y̩ 'JH c`;|#1p﹎LG$~9x7< W6LgMusތa2n@f8rg1ug|\F{7 ^OyM WǯGS>8د38ys<#/OR;Mc/؅?Ha^ >0[O?M|M7<{~O1?o]>e&Y'῭=c盉3:&ܻl1fiG:3ES8_\wˬ&70vpo% l&?D{?}sXĀu5<]dƆx1AxŠlr{i1{Î`u$d@|;naL 8ǃ{]ɍ\j[M.Kg:ru= y:누z7onN;0K3e_=992bs Mx F 1}3wc2M.rOm}&D\g۬ݒ]B;:SOx(_e~׈֮epYR)wN'ei/6•lh3 q[NY\N KK[CW,0hS(yT{1kAkÿzT*&L' (:;H#hr3!VgFӻ|mЎ\ya“뎀ֱ[{Zζ=N~C6bk޺$r\JYJx^(3%P1 )F034Y.a- t35-σb q.FV.m8\ =׎g}c_s}+6Lۮ~K[8w翜7s::X~SJpz׳;J;pL8_Uuz"2VyB#>߽ ^m+72UseƽazV_8W] q)Ķ"d=\41/xy& Pzt.nH$s#8ֳ<ޮq?<%o |?;+e`;ϟ/k7&dˉpQRU!u}P71r&IYq {-g* jJ/EtqoOw6yr\L]Sݣ lֺӳ>fz?gÙìN9]δeq[ =ɭO?V mYgwώҹ\u>)9ܿqfp7Os=^tgnjYsI,Ss/*X͘>qʬ>;C~2޺E?IO@y#ۍsI PpL?|HF&U;u%96r.F۞<!uHC}`Vzxzw~=gXoοl]`*\9Y-=M'iQ7Eٚ 0 hm t z܊dm5k+ Ey㚗Y|s Ϟ^xrϿL4Iǻ}Lke3nbn># plK6wyL^ᄋ:9|ɾ+\Ls1EkgǮV?Vn<Ү !33wXe>Dw3aq\l&fo']d(ьc33ݟ;ozhngf?YL2قRg(&QZ3,CgK[.z^gR'sx1uqFw|O~}i.dۑp7hdi˞[mki)2Nrzŗ}<8a5ֺjE@Ǵ4ϟ9{4h:> x9i/dv `hT-WFqpS6SЀ`N\65U1oH *Q–brHja޴3"o/Je˒3Y1X( g *Rf\@Rɳ!{_362tl#_GZ)3oZ~Ztx;ώ;|'r7tptdlDɏ"=XIqtC 1rYbb(9(1&3ӘO,Xu o˿pX2o4R='-)  33'^y {4=J C?9 0 {!*JRgDH(`a8 2 BZaJ7/Gi `O(mˎȈ,Wta;\OO_ή~^0f0>8>G 똊!ygCd%98%g]dӥrחiB|Pm}<z ;';VZ˚=wluF{3~~>ya;?L _8nGRɘ[ s/<uTw-;.;~Sp2]\a'-Z{Ð8Zos돩Mʘ'Gi1ܕ\SZV@: YLTM飊3>ٕ/W+fr~9,x3ןDžKupǹQ[XHy< Jz{)C!fBUtpµys`t3-S#)1\xC}HMx;ӜPtڒ8P6 2򂋲 ,S^͆NCW ^A2 Dmਃ)_Q@C$}s bƏ2 >MYS%]z΃w<+3N/D:,k oσM\7C3[ 4#׼ï8Yp'W;1|_ߟyoG m_C߶7?TnLk{Yh}g(| `6.+-j5\ 7QnVLM2a_ջxc1ORcy`6nuvoy+tgEh0q'=`Ҁ*IWfi󞸰|5E1W\)4⎀0'AEǝE{1Iș5N "81d(Q~Ōd0\W/2&%j MQ7n*Ȓa Ί ֘dXEQ>6IΨ-BE[0^*֫q.10ֹzPȮQ$ Cap0%236#ESJvJсEN.v) bjӘϥhv#&0U ogo0c]Jpɼq\ڵMby7snWv4k s1r`͏L,*\mfsIЏԥ̘&!C/ hga1kZ a W v43v끐iq92`#?-k0WYg[]MLOAD{2,0FH&.x #6Iu!fa* NM+0DkS2FHIrUև!(β7#qn`e²89-XgbF"q r<3%xTHfX7%ntLd <07,.s0<ce rZv`r=\ՋߺU(rgw,T|3* RweN̝Mo+-4fۛ,+?'@|ΈRo+2^/M ␓@ަ /L =Vr*(q'dYH(қR T q4# rӍC9Շ AaqYnv\}x- 2g>&8 ԑ7:?בoW?{y7F7]:*nsSF}.Vk|-W=o<uFk#Њeӣ|$(* 48! u[[ dED-bˌ ט8V krR2*L$2Эb ,f@#J!x@k#(^T68uDN `n(4692!)ҝwl Up|~x| y[Tu\wC/Lpdܣυ!HcK;Ew4j3P16N5)2Hgmu\݋|E# B9 Jjg5,C4` aNnB Q6Ю noO>YD<[ێvor:c/[\=.znw3-D3=3_= wĩS-J!biۙoZnN>>~w^-{e#{{: 媻lq? APX(6@H tLÁ@TB|uCI*X!AxόwY"QBbVP J>yE\!ɋp$Z7s^̹["Cd.e 8A/n\T6!2wJjxwcoXU7U{.屼dF3K[ ?^Y6e+J.rщϖV7KمΈrFśˍ\pipn>DÝsn`8D153Dz 0zZ(Q.kN\]Ǭ aLxn %eԸ M/yT'\.Wh䋤a*Q1&2o;y 甊0VtͽTg{g2i E'}~]FuP<wX#jB6 g{F5yW}dHTqPN U,"P473.E-;ǯ?oӫ\n:ݼeI੩4oMg@*>7織XwuJTcF{d R|O؀c|nn/&̧gH\Z,"cxh5 oZKn<|(ϕT5_21 \:Vˮw0eC&mƽ|~% rs||tp ]xF69W'w"D  atK?StQBi)m`HF2ngU%fM qyS9߯yPpZ\-3@"d6%)hQflɿ6` $q|G&$OTH_b hģ8`ȣ 0ԱL- m͸ZK]p8ߧ2naמIuL/ͯwߞ;{z{jI~9Y}\}~ZJ7*}v\*ܦђnLAk3|eCѿ?ߗ?;{sy~o[u3<SiɌe+/bSvr{;5Lu4×&EJ gcg(^l>3 3+Ê$&T46!%*bw(X7nr&'YgHW$ 社1BHޱ╄C&m9ٮAJxq]LoXzɹ5zEzy=ߛ|{{$3bW Fsub[{ 8: 7(/Z\g[T\ nLq81 GF'fg$.Vx01u'\ȹEwm⊛s{$eٖ>wqE!'J=D8~.e u6|.{1n˒2GKP:ÇQHsA,)E{i=NXXK"h'PD g&rUf8պ)eMQ#J(PL'U⚻fN Q Z-)E ȩ3ZXSMtpv0,W9H*"S$ RpDr` )SuLga1u:g^xGCL}G}T,3~kߌ2anƛ7);W`v;dsvVnRGuYP0$~S.<.v?lCĕ~i٥zOxq|rXS^|o09 fuMMl]F>pb @[ٜ'[Kvvdvf'~({@IhoX^qLx&ӌ%D1 N/c g rſy>,[=&pӼk M N>\ό27G8;֜F=wyڎNqx]3Q _l }LcwzoXǾߞ?џAԒ{.n~=qSݰL2{!DLc;}Y뿬oUq`{7}&-]T]c@fssa@-JpA 3eڹ3\c1g&CBLeZc~T%fV$L.Weco* ۓN9& ni,QbhDR#;WL֐(Q(=.B36\֫!pi,!ꃊA^L@g sDY9Rh" mPd00qcLoտ)l!|a{>\Mc]@PgKDZ(u0(-VD 15>roSsqzp` s>36hl)-\g [Ġ DT+l}xn"+Eв\/lG!kI|)IYJ{qs-"jRUp:CBQm9c%ae!s󼫞c~\c1¨C8/Gսǯiv%kl^Ui6)%~# 51-ìcuGԻw"*I18_<,sԋg˚ R>}{wj{Ӯn@qagAwgfsTU!2Z{\rfIGk-L4m`y gX@ܚ-tte00*91]93&w(\.O#>}6~_[Ӈ89,׵oX"EMsF:~=NdV6i4 0Lt;w|)zLFxQviѼ8i7 E+boLwF^h2Nnn-F~b[jc.C&Aɋ:sn.8fUjA/_6NN$6FqZ@b0sS@#:1[_Z8?ӷ4w=M-jdqケ [cq7-dvEfkDPi$*(ЕlHAlԚ-R0a&"iYZ3k(xMIف7s7?(S {K @(\}=3 )*`L28̗tef#mv#$/Fۼ :[`3pʰ`Z[CλEErfz?9UcH1̘}o_79W9ySƿ%|} m|g}~3\ACLY|q^ξO0[z傗 Q L}ws'M_gs71髕W߮,?w>p9i`9Z+.,Y+ 4::I1qbf]tfW7l$-ְ>fʦvB⌙tmǐ:9ú8u1k$Ұĥ|c˖ӗdS?fβa52G$i޻{bc8e>%@q *s**\%xblCsW, #!H6ö)b\x1EQ9h27IJQWGGِ'f41K\ ˜k5+.8Rwr r}Bѽgך .h 6c(+ji *2賑Jto^/MLF^+ w]DjeJXou6k)hzKoX!Tswk}Q虘Ϟ@85dllZ9xJ3oݜ“C}. 6ĥ L:}!ٜg^$BV-+(! MSiLs&3>S=9*H a|fIB=.u9PhC{D<ћ @6;τc'D;{=H]Z6;(Jsz@eQۣ'f3.~ǔҙ27̻_ߛS6F9sdc+[q814aښa){~PporŚ< ]-qK^\k8U}vdfM75m}CrޕW7xoR7Q5: +v˜o Q&1Đϕl;q}sT&o/Jߣ/(7 -/~<1ޞ:ܸ 錰~3w/rvggrB+Zou'Ŵ.mG8e|2Lx :8h)~rg |G]S`Wqh75N*WjI5}K%̼ &IfOcW^)1;xYό٫s̀?޴nqe8Ǟ^e<1,hT%ba9heu DTwd6p.tieM^wK|ߟ64@.&Fώely-8LSP<`^ 0fx{sP$]TW1TCZ0*vKWM7Y~|~f\wǪF2A1[nP\ta0(-Hg6'7ax4>O1 C9ǭ)$u^-3}=5gQP%0<{1`4eEPFB&6.@:B+,d0T0N@V<1\hb * y 4^*8(Lš^a`jf BAz֕јdcS!Vc2Q9|&\}-(*@Y`KtXQ :FixEQEVblہ/@rK=(&Cm;5 ;dA}Έ3Zv\@F[1U{V߃+.S5}2L3nx[:s=%c=U]he<{^#lWGxیR3O/%3=Q?ɥYSG^p: .ؓ)z piL]J7Lw I8 'ճ6E\.β9~}Lq,2S&wE=T[[?s'ɰv.sl2Y=ׂNM?Jۓ\=g^ {I@6\QJ "/e1i3RWaaH&n8ټU0f͈$T"fFjfܢj,U2P,U:RpBC W Y0.\v2.fגb^;ܚ|ufr&ۀeS*f4Eu+ȰPy(F%4w~PµϕoB %y\$v[\%WOe4qrqi-А'l^wx p<;:viG6^h>5wWI"my\c}67Osh~uޯz?ǯ=M vL=(|LÖ5q 108#Y{9!< ]Eϸ“z? zە@;Ac0o˜:ࠐ1 {YluyV`$o& s$lꘃXcʖvkRC^<2'Xx 2[Z'op.蹫> Vu2Y^f \|ef8M~YcI9oFLRB =Q|WJ{N1 >locɍU@"`fSnu|&n1iŲF&>W'&0RɬuC4h10..2!4)5E"xP2MEQrItWj@av`# AC65B\EVf &uḪER :L?zgߊ1NüxrAqҰCS&]d3pq+C}K6#q^bq;xUn!qHܔo?>c< ֱ3on[k \y1\d7؞o}犛z>pʼnԹK2W?\~'?ꚝz;=^qToo?<À3Lׯ4|Y(LWP;Rp>~Uf7=rQD3tYU. 1rc5=ϯSY;wwJZ7C2WȇULɵdr޻XYf-,ox­\]#?3@j&ʛ&VGBS;iL#Bg.'gy Fuu2v1`J<ϸW&%3 10(_qź Op>1#,xݹw8ҋER7Kwn@R;L 8 N(`V !W/q*t._xJgՎjkJE=&3׎b{g}Y/fI)Sa_.!31cz#9U'3cˑ3۟"02MjɘcwaGL6R,]/Y) +CWcⴛEɴE#F-!Dt< xɭJSe){VCأ DKl VIm3QO)%ww;LsS"ƴw/ƾ?\XcE?N,|P2C's8Ձp/|vHC˾٪R0IC0a\ ;#_4Ugu |g: ʿ9jbbmwæqfoc~. ug(""k;D-/_ׂ2ψz.S&g?oN5tx*IT!q<9t yz󎻋}?w\΋ɨgkq9m@ĺ;ɬ>z8\jr8pRu[J"L]n=!AI9Ehg&p(EjE\R sgR)$vfx뙢\1'[p7L2y>f9pIt1[aI@+v |I*!:x)}9*VdO8Lp"q q eۘw~>9z"ojN80whd[L^-/ M362I&ns@b/^mO".sN^uբ*).rˏi%pdPEtkAHt{0o?灳#ޝ{д9qf𓲶4Q(^&2aA#KJoztڈd;3DsW9)lݷgHRAqi0a L혯P9*1:nQR\79Pʠ{Le˂h.j? s:+-2.V _:dzwA# Yڞ/>Sm8Ws(`'~/X(B0,\ʓ/{?1%~lEM:Xyo7fuCYə\L"uۿ` c%||orќy^u;i ɏ^Mwy >6T~C@5 z/i!0loN! I gNOӦty_|V=mpdfW=Co7zޱUpeҝ\N*i.j=ܳ0mqcLjL. zF@KOlFAl Ǣ@qZS|s-U k:}dRvfX yS!i[Zaa8j1+}wÓ0vczg:\5Muس8,u1 aAhߕG^0egxnߞѿpOVR6|y|kx<ܿ?)/PˁM_n\Vy#?3% dtX|YWWw(N+w|>83c<^g_E#z8E[}kٓ׹@1|pv2Y6OSpA7 ̈?F>q]6z1Q4bz#6~ߞ aMq׆{w$+֓( .X%z,^y3^ s}s4i{ՎY5 3HS>4f?wܱ78K +-eְL.fbo8 E)}g25 N;^^ы ryqFC 3:T` ȹ\cP֍adVER$B#do s|TaTLI/J/d'т3:uw1yLP"CϛgL&2'6foA)y0Mw}g7%R~渂IleDBu炒uF-#Z&wӒe*o7׼:e n8le fǜ.l&}oi%}LTC+֠N+ޓzNnϼ#շ-,cq?2d1ЈǾi19Vy:V}<q}kgxK2ϊ8޿_>s7牆f.>,[M)I7zuֵޡe=jeGư}VVF0|<uyxņs$:o3g:r?4>? ޜ^C=q\׃矲i5q/_˚?ߛOۏp/_'? ?.?omiqߞ~^4>۝ۏ|sw>ts/?'9e~a_'>_?7`C~j|?{g'!1AQaq ?x L>fFBȨ-VhgA 1[n~7_-/",S":d_w1N L43דX?~7U~+.]琌I:E A=Vُ75$7N|0Ol;?z&mBTr&\\VV'Zދ@a\m+f|k$` ,\`U+c "D)7y0-\LF1:OT/C E錯%Ua W|d#Pc7y .Lݐ?xr8QBf55̠m%8'|YIPΞL*SE뻓b< K>03E^{'q0f5D.W(e^5{W3խ=2ÁcDK'E3f⋢#vs`{LBRoG,S?K&F $J2!-,gw>LfTq&<^9Vĸ~3fa0a}Ӊ%leNshD>=B >OR?=; hsEUݼ%"N0g@lŘ4Q!'.J#86lYJiPUA ad ͯY.5 eLl$E` xa\g0 Wbiaj8Q{$"ժj| TboPj"e8D_xBZ3+} cɎέ3_ġ|0$mDXJ>c5yEf0a3Sfb] q`bbLLFwbsy!q9y+f'6ܾ8tƺ B/kDɕ tYybjGPE] ۉ|f-BDQV1a=VH6.H% 1b"/ԓ4+cwDO\$@&I"Dݳ@IwefO~c㯪׸Qƽ9ϣyY*ie#ZLo}=}ӝ:#=bxd":g(XHa\Trl; &c,JsZj\A$oZwVG:k/34:sI OLMM&{YZX+r1 ML&RGJ׃ou^q}t /YmV! k= a$FawB>cs:dpN>q&J^>/o>fo# |>0㾯!B gDiH5Ycf"'$I?>'\[%cQp-43s>ZΫ0lO[Yu&Wb@<3`N< cs.pηYnua#Gz&:KE 0 scMe>$Y \dL,!> $q0<}JUZ֧$ 2XS#1'suEF1$!Q&z<8\%!Uu\FBi>5@v LĤJ#Rq"4!}f|AĿ3N"{7D\3p93>}Oq&|70AJb>GąVn\ȰD2&2gD1ԓF싘X'=gJq9[#a,p#O H6Koշ#5Ղ+b9VTy!0fd5|2}X=O[f2H=$FkaHaE5X%;{e75™Jqq!m;7|ڟk*aSAw? &+3X|cgQ||xǏC~}2"S}0& #qi8PW>8-01~c˳ ˈ5p2\UlOIHg7숓cHO302cu~h{\%nh S>*f 1~6Yչ(DOE%LRG5Ikb/qcߎY\<g^7!$㛆3+gYdوS/ 1XR#jQSq+@ő-@yŒ1+2p].!)쳔37Kܼ)gM|E e380TL UQ6mD\M91Dn&ǾxS؉1(ʮuOQJ@"|qL<×~" DN'DE`%͟ y{8PlM4{ЌYq~ؾ5J 0I&!|Z¸/RGu 㰨5QNx>{aXW2p bFgfV-\cY8"p^ UБLF3ZXRd&lKXS9)JU^+uW\c,elzWhXŭ"Xtxf!()&uUHM@0>/ 7 0 7i6n7-&`+fIB$0}y G?dQx~WWV=A|-Wo.-^ޫɐUg;8;/K*Hrq'ișTA4VE* I2oˡ]Fa1YKX ũ^πϘ\`Jbٯ|[‘{(WMBAtGcSd72Dzǟ̺;_OLΦ~!/-N?NZ—l [b|Vzhy( .\R#'m. }mQ9b>yMXzMqt@]@5zM28.̬4:#T`1q ft?ٴ~"wɩJ,;HTo H@(MA66I8tb!."Fk|q^77w4MW OQ׎-bzAThvT⚆س* 0}>~֏uqt phMNı&/] M5bK!%F=߽Gy Br Ŗ ݈*6ܤn&d18ddj*UK?~&jWyq"bXۚ7kf8I߄19sH\PN@X:g3vԎHαqu

X]9!ɡZ};l&̙̀RaA%>43j>)"`pM$P6廯5QJD1Śs߳|k6|qF"U3|hCkܑo1iך ڨ2p Ӱ:JJTed^*Y6'8Dͅ HcEv3pCS|\2adC<'I}ГC圿߆\֨zN?G A.?r?dg&¥@3d@iqOJn%wn_\>MUǚ='Rb +7IDs1 AJ#T}=>ڳzH%DE{P6:FN%@%? >s+lZ_5P*.xXsXfZ32Ls!!znPȡ*A/7MtOj@373`{Kԑ!8e vwW<\|L&-&0?em-~fb18n&21j82`I gjH딆p=#t^~g3:zI+%ܪ*BȬd֮38TGz/<#Wc<SXv\PBfϕ^ֻ-95D 1qDBJ!(wh_p dic(o0yݘx 5~,Ecֆwޯ̴z`DK#rjɥKdhGQX4fkk R-BWG,?n&8=qI-z@pDdZJ$F 5/RcpH pԽ)|GB^5&"a,Cǣ=33I!`&gsRh)8B0gC!@L|D_YjK?ɹYK\@VvY3UWLV8l|k{o9n21'#RUV Q.p#?B#ꉓe{dw3ʲ2Ni&'\%ϯU2oGГX ZqT1Y/~^BA9Q)*@p/PG+9 TeN -uȢw~]L-{|I%d}@ԁFhdžy{'S"1OR?bc;AK7SG6TL1.KQ ΊwSȞ1(U -#JKcL!NeSN9eJkw?lv^hbOߞAbIq? 1Yџ_6}u~8~j7B9aD2Ww>$s"!_4`H)lJ$۝+JGnقޥH)N,FJX0q tSv1.AGWw^O]ޤEa{BG,Ʌ, \ff$pCRɶtm6b(q.y) .p>6)f~OŞxxbLe aiL8>cϯ\;0!ϵF&Y2"Jqq5ߟ6O_~~C\\qU*XVj^ FLf< ZTWr1:{ߧ.=_~<~3e'߯@Ft$;*zbxah  C(MR"pd&3Sn D5>-0& .J )F7W$ 8424k&KTrԮ̹Ϲs"&%\/V &#djI,\`= rVq L:.^Jb!VfFb33,Ix-!QjQ$Ry*".c0FmrTIT'2P2E. 1p8hJ(*UMaG$vIJ?Wґ{@ LAjot@'K(WDu$fGWq,'W ?-wRQYWM%$jh緑`g9%Aa80F"#u>QRy剁pI-m.gspjjhn98f;',>!cɬoS0wQ3>x\b"Z^<C=_maH{a%*7+eoHTF,|(GVi@ɩԨaϞw5_n .2HO"Ż :ZR0N,F'ܠHb 26܌v}1%d!/a$NR2$NOU&rg1̑]!ȭ?|?~Ͼj{[Q5 f:UP ]I `* ` 2*6%[:1$dv"jKc!>$E"bE'98KBd>|,J@K|gtA*D&X`FS&IGP ŹL&Z  DLp$Q1V+1ȑːrٌyfD/BS¥En1yQxu+k\$QY~-LBLDeUdl 0IU%bd/ ľ$D 6}sq-8<;NDQ6X/W6ĐEŹ'jwX L+DF"8A郰Zтu5?_ࠅmLDI癆39t|" a6  #fן"QԆgV.$ .!E% $+#9mr%oB;%&H%xH$@lqY31q%TŬ; L\(qtsH<52K 1 bNb ͑;u%q34č#и}}^L2MR!]1ql NRjژHVbRZSQI\ ~{pf n+0.S  4)\R=hRD $FX'=6 \A3o-j3qv:$ ++1brU[<w^~y> (Ɍ/*(]^LD!EdxW(?;`%P$TݡX Y%"fC L $^D|gx L+ 5jAAvȇ"kL"/,0 Jn / 9IbDLx֚u$930l XQ q<-@(V Rª%eHR6fICp`p6eb/% ep뚏^q|>9bG!OŅDvɞgBGD~>LyRm ~Ldp2 0u6|P UbIfVˎ PnB&mECd06|OY7?4?G,nRlYHbg|̴|V f(B I'۞`%`R#m+=kqPa` J,c9x׊C_+<[ gA_/l̬ pVrL 50A0>&eu/cЬ JW#8q6 iºex ;@H'~ -Icq$qQ)#V%0Ĺc'AJE3V 42m51$ #ӊŌ\--"%fUF$#9kxurk4y19"xꦨ+nQ0?za ${vr2PHB2ΏK$%^I{4CS d-K.D[Hob`(Yk7%Q" ̤ι9R {3%<$Ḧ- YR! @<#nB&9vR/b TzdDAnD HSw2v3PBq"(eQ\,9AP- $RFAfM[- DƭQ2ñ.zX?,giz{o/:߯ǾLhyǡS;X M8Cd 1,IE[#)& yC6PHx̾ad!DCOЕ#5\Pme8T 3D%2nI7JCI$yR(qP56I<+o'OzOxpaUq*ԴO]fWr̓iq ![F3":}kƳ{NԒ0XCmr1q~P,4`V&Ǒ#s x( ;"nj֡kM8%  L°D' 1S= <4Cu8lL"Tڅ3 7&7Yb84ߙbsnӃQ#qv4.PyɘEi26"Ԗgfrf)bo|h&Y+^GSEQۙq- >g슘LO]3$&;LR;'l/:!]`q\SύD}Js]ė4׹ŵ5$ķ?Z 8o}Xy:cnԓ̢b 3ݤJs  AI#+73gVTf!Ae':#f |8̺,' -^~9kaD?_| Mf+_Ϲ'Jɸ~X].13Tc߽~$ef,^gK&r,7삸<(f "488nd HH1P ;$A(Kj9U̒%M[L֩ڒbS8& nMfĢfJp&:XY :PPrG%AմqZD fnW8ISw|¡ aT%# ̉4:,،iY* IA~LW\H[#>sg'ֿ q&0<"5tDz -k2# rj3%pI"OLW⫎ZTL0}%7eAy{3E<vMu^hG kv(@蜬K,Nu4f$/S'hZ&$Y,T2NY4j.+̳eS)*Yy?L^oBG箞yMZ1G9 F繩:fh_Xh#WI_3i*tDDMb]"P>jqL8C$VLrDja$cRY-!Vp] Sخ@H_]2DI3Gl&e+d߀J~gY[o_YfhזMLIq5y5.ܾ~̙iL1 a%O\&X1S#ڽV1O߿xN|i珟 TQ2/tBY4$oJ% 1)`R!*칐NC DD_|}dsX,9ɿq_~?a›nh щ|7:Mfb ᷒(F70GNbxPLޱT{yJB@Yp7FP|H$zooLj?WOѣjv=A1˞^3GYgf[gy@Iį k8y=DCvH^c>cq1,DCz/]g bQa|z^bU$ޡew&7/:qzH$f]rG3ܑbPe*\j &}ơ,/1)I߼D;0a6O9=8Ly,{If*}֣l "; Z|H."]x+! sc$:y,I~&#TisyJ 4$ 9N(gfOHN{J-SxecΎ˚2|Nג^67 x7nKu8$|q?~,$]bc{+X6ªW~~A,=_XVOM|uy]ygƳ;?:?{8H_ԮOƸRNqBV`o4H "FHo䔵'Aty)S*'!K!:5$"ؓ_VEԸHhNT?-9 u9-6ۘ@0v,x u˭Q gW> tx 0M8V&x"#(G@W bqۅc^|sgsQdZE`F^.bbS5w#ܛu9w?G%+FOmYmBµWǿ1o^quSmuf-dgH_ĚN%}ΛnɎϚqH ~ /]ÕZ4L cǶS3ON%;a b ~RAgYyy J%L  (VАY4LrML(I7DM;U1]8r_ 0V#c!f=dK&Ddb=})f; f\> Ү—f*YͪV $+ꡘ65[מWةLXP<"_2X,Xߒb}|uf9fgPͳ8H:PaAhHBeQ(j`pK\\wd}|r؊X9yB5bL+׷GKj%h r$I IV Й|@ХC,V'>WU ,:5g.""Kޒi@ P!;j^ͱj.Βd#n'?M,!E"'Srum'Zg+s:nY=kp|OPHKct s{r_Cq\sX7q\?d,a823~cD٤DC=\u4'$G$Gc :2%0ZNy?}~Bmh~ f~R<ޱަ73TgZ de͙OyFvs3`l!Rd +EBjq8l30uĄ9{X`k-A a,|n`A ETQyY1I04AŔ11<3El($! En+!L؞O1v{'9߀%2E7bLt;d1Nw:n3'If?8,]ޠU<DZz|HJaO&}gg$#VU{fE ȳH T,m|j |G :~2x b~?-$xYopfnb""/\ V"âҸ'-YKKI>*P悾H),* X1fR&{~5)ߞSbadbYZBΖW1|[aLZlο1C3=?ą|Xix 5縜j&JtI}8_g8~1]}q<\1N(rqψ/^!q9]^+̑Ή Tjy:ϷɞfQuK%M: 1ɷL#<̬gG1,2/·8/\gM,m2'V,1 Đ*!$rҲli-! 9Y|eS<%$.wa1:wtIVf.kjTbq%ҡ'1-uGYVFHk3R RA!0|(ʉo&c (N*HHOpuHQ OzR@mV)ʎnTdc|nb^O1Sw!6N' -\]x"'MH1=}s2 3aG;oALK0Տ-p.i$!|# ;Wr^G퇾h3d*}ߋvHvYc)+ \>@Y/R(IM9twI,Km8%|s2$!R0zTrq9>:$}?/*kčLC2C$;6b:3$UER̲AaT.0kS6̢;&j. a=zQ6DN]]Gxġ x;3!l mzsQ0j޼UW2U-&jկ&dh%n#sĺ5Reh[ZfiGs|WiGH1Z!=Q`X|B^Jً#(QPƴ`~H4"3: &֤YL;&|y5qV?qaɖiŚAqpLrt;pQ!ID!bX&R#QDP>G3$Sn[-S.Hpؽ j7~`G @T%ȅHB(Ll J5 M!Ν̻W9 ljqr& ``pbbU// j-^YN}XMf;#_x"eGyc8え׸Ϸ Ϟ$7Y|U# d3ֲ?Χy;wp~?fkw|XN`$3dӎۛ`m>R9%\cί>O3k7X^F~N_0{^6jEnhgfĞ*;=M' !3}̞f!*\dϟ<]~Gv雜5NJ-y wC1U.uFJ37=VRY0B Gf{~!Wnﭞ~0Q >|]d}@vc6ac2nWwym}ޏW>}Ԍg|ĎbW~9$9 Sp118&:H gT|B`_zM(Yxh_uE R}tLVGY[(0x! KLY,E/lpABOľ8v  P$d"nRGRnBNI8p $XrŸ[ b1vF\ o"1 MhTۃKF/'2\3 (B5?>0>b}fa+}Jt%1p1u0Ȍquƅ.5{EY̩3n>p?gNF BLxI~fx%J VrGx L8Hc04v3祯?C3س>,7ʵ"./ W QlY,TDPF1Ypzqgϟ~:z"^9<_1xܷ&ɆWZ8nNe!Qg6s>ñDύti~lD.%3s0B̉tOyk Pg9WDyhdde\fX^- I•ߊцVHxO$^#&qlMTURMQ9Dd3&X2ww#S8G 6Vn "l;R `!,{Y`d%V^J*L ?)N@0ǨZ-PP-" @W8.>"wE[gnǯf86!3;i(գ H sj"wDTL=fBn[2 2 NC!e3}I3}>96W9?n0d[$)|Je+^~θ JzGB0I$aV,*oє!T /d@s0CL „ȗ{%vqsq~W# wV|q&?v k?~,.2?H}JA~+!j<~>~ J[HَV\2Rt\wlΕLF!ém0L; .<՛0cn96}17ο\O}y0?݇*ٍM\}/Z2H3e39iK)VeѤ2؍޽¶q>}SC hيRMlwp&1ᛍw}Y [F0D 33TOc?C}l I'f:>8l#oup iOwx9$'Y!'U h_}SQk"ڔ:kH% Ģ=LZVx# 7q Ș@f2(6|%IIbFyX0 U"HΚiX9ዔKQ4А@) R8v@I !e˼H$ T@C*2FDYP R'?O@45+dNzB$]0pf%<;99XFaaybiO=k78RLwStwP8f" rIaT}&qJjD*{dׅ~!|jq18Xz(@[~=#7 O8،3fi˗WN!b2gu0Is98rh4cl >=C$+nHL!`J'12n !@Ϋwx h6& i](Lb:=\^A\Sg'QΎʾQμ*wF?/ڔ}+k"57Y Hd#%c[!)R\rv@D#BYa/XaEVDN`LpTqDGxV1 UaNBBba),4A4V >9R刚،YoRq&Q+'Ip`.O)PY0($aTsEwsz7(Lek|0؃70KL4#TG55<+h@P),ҘBHdyO g{xHXlv _19DR$꞊{}2h{7Y1s'OGg~_ W ZDA/,Ŀ[xUapBI+9]L\6~[#'81{Ҿo &vq\_hLʱzL#4|LRvH֛)O-jFnܑs^Ό?w:_?)>֖ZQP\*g?F^;02C@Glq`;V Am"*+" |VațRȖƝգ  +trه`SDx-=2.!11 15&z\TFRA \َd"RRgˊ9a4}Ic`D=W}"/1dDđfDiL5wl*#ʼn$f&"¾g?%#>0ΠdJ#r) gIJ>\??[ ;0CZ3~H]֕U!549Q}P%ő`@n$e H\E"0dP"da|72TR.sZ䬚Y}bZWnO'sRS_%%RP+~YQˈ2%1`W{E)2n҈Dk6r ̾vN+ 35˩ m[ >R{894>&\<Fˍ;xw~ߞ4ǃ_w|X6GJD$<ګ< $͇kIf npX옖ڶ\^PK},f9fCj_ިJ/_O{]Ai,fcטָ2Dbg5p?~a3P! FWAqo(4WfםL!3>`q _̽-~yu3kSrRI{ʙ!f +=Y0%+h0Om{wAR{!W&1Pf/Dj*/BvM3[%,#}t#VpȨHMMS]@1sMwJGN7\ڥ!I1_g2UD!Djfq.2WIJDA;VZadPI09*3a72n'ܙcD(GbeX A6~* IZw=KG"mQEိo0fO!5BavJ oX ;DU2[ۙ뼵(vPג][8Ջ:dYf&vr0 nZ9hIUDp*Y "nd4$&T@u5 W3(R* Q0(A낐% D3&40HI3&˒bFAacjBq]|3-##'}PʝFfyqb_2&5VrgOdi%#D#ń]቉>cO|LTyXu's#Ih˹Vd"sEvO PK&A*(GI&nndc}G'O?<޲ 1,-ab'@1^VYnCmj+)#U5<s~c)LB2 5Ffw1ଔS1b ǍaY3!PHw3Z E{$bnaZ f83PD+5ŅMμ"*p:VaR{ -%dcr2DM[rOLmHg,WRBGfQ> 6 ⵏoߌjby;D[̺)m \WS(W@P,z|:;]$ x+sfzy DDư`Ɖ,ZE_M " @q '&K+ ,@ eI+MbQVT$PcTU8\d@[&kPqP9%!&QF!ibXWpIpRV r4إB#H -LC 9xVQAhRh1$0*.l ƧG"g\ ~ǮXA$PfG\B!I ̈́/CL@FT,|-^q33"!CX/VvwԵFb|_\t 6<2' u [ e2 DU$-V+$1J1z`Xa K<92Ge J%X_>8VR1LN'E!dar,L_>+LòP |F8ڌD^[-L  |8& Rg zaj+ւsjg Y1$I> %X!XPpX8(17̤\_90Y@=⭚N{:A*_[_lLK:[o3b1U/ 7R%n7x aPXsp 0pTFHI_W0a]0"&7S WFn⟯Qbs`XU‰D,hCpd8Du7q,9*fT&Km7DgN극?a܏ЌOVd|ycnʍf@|LP3/c WV[#钂=c 6o;2$)ғ<(&+#.x@ qoAGr=5iȶ`qQt( H a* D#`=r"jf&!R)V#a^m{j%Zb0+ϖCJ f`Kߝi%Y˂qHeZY9.U#2_l(WnIYv`OCBǻR-w_#;$54-..&vNX L[-)7㌭jlNmYʄzuͲ"C6@?J0z oS& ]!'""f n!؄o ɚ$w[d$ucfXH+fe0XfjQ7O$b@n0'*h f7IBFoќG s54k,GfT/`2MZ絠1xQ@,Z̝ A`z ,5 !ԦHoYIlZ@|YQ)B0ut;@jfChQUɛ$ BxJ-o EjIJ2!DJO1H`ж͌sfU?0\dKa Zy5iĭۂ`(LN" Q\BK )&N1 jj|σrI$$Ix2PP2u~&azБW}靈o.߷O D4qLHVd2'dPP-r8O2 LA%SwLX}xH*>Ujq^e+ T 5!$FLLu otAa[Q8҅Z0Nc%vx!3 *zVI{`uӜqwb, ϵ$UBKscWdqIU>ԦbVV#ݕ,CF`&; \"b~h b{CH3%h_ O3dKRf`᱉BXA3LUPH(PMEJu8#X8&{e : "A^;NN[%"n ^K%c=C-QD B悜X߃So,`=gV}G A 3t,!c/%2WċLXTE)~Z4P׌ =ur20{Gw)w>q;jc'o|5w v7nۆU+x`Ж3 #J HDe-I@Q_(S $!Gvb#!T7Ffc`_%@+ Cušg+P 5/LyfԀ"B e&A|O)>C2Ή7%Yj\Os1: `*"6Y" 'M$!a @!K3v!!L#?#Ħ#aXjf"VS'[3.[ 䄋}CTľ} e"|1&`߿ADWYٓ]GϚ+( o/ _:q%nf#K1:~\}n?qpVş6y%] 0-Vwp% l 2nE7%xQO%pBTCɆ|)2Y1d$'3 |?IKLW1je3%b![*ޣ7$bZ[g!S@Dnz0t(#S~Z9%y,3=u8VK&7r!`%X6F8] LǹR53HQ$rbY"%'UN;‘]F}oslD(`bR `Gcj\Od26aP%Lŗqη4ѫ.bqHCjEg"T3W["Dc8Z<vZDI(>IqV26%i@0MBvfT)PAq1C ||e.s/_ӊI1o `<XKDvN%0Q2WEC2΢*#%W(!c)"L0\dƭ݇'7Kl`wcj "EGB2k%HdQKr.GC1Lxշ8",qjho4rRÌy F@~y(V1. Ab7%}4 [SJ3B HU# QYc(ɢaW k L>#q tՒLu?^|_ۆJ[kU?_ Q5)rm S+T,gHȘD3d,fQ`?4F4Edr* "Yd2(N47.Œn<-(B$M$AU?u+  )<@$*1ah{*{7BKVȣ>⢭)&( жAA6a%0^:`,dH o;fbZ}ΣܶϛKOwa^(|u7ʤ N=q@pRd\N@ r 4Ϯ8u j௙|M oWh]g5`h  1A-k%3"PHϬþ2}+s|+#t&?{`@{(OTcl#511np]#}8R' о@&!z{9$;cGMĭ33>"q,CiIPq|-+aGzY,=+)x_ZMܳE>W!3t4Ob{p ES]cm(T%tjo` wμoR-P@"FB7*gpN aH)A|Kpq?O1X#%UR )*$Q#4,he2&IVP(((̩T IVf'zPaC"g'R]nNJ i1f1,bkE=M?;,'^DQ G٤ a$f$D@ed![^"=Yr2)]{,'fnVET b$!6D I{yg#7bߤ}>DOgݗ@M,l p>|#zp"~%OdOq}8e-ʓSw?WRc1O8U1fQaSUA^3uԮA0Y|1G6r"a&;U'ű MF_8J 1QxYG*`6Mϡ1:ǂ=]LN *8I!U2{i&=<*+!,D@H].s2/6bEE&"\hL53N"L~8$k)4(p]]],hN2y#a &$n" o~-\UVfi xG1y4)8:|d9끶"C_,6PLd'B\'c8c ȮbdCf0r'c vGj`%pٚ9@.ȕi4 sAsҍWqH2G8Xg*3 9FF^lc-cT0z^ 3 a.߬DvsXߑՄ o9A4STלJtQE徻䴋A-Ү!#9snȶbc-X DUꯄ˜Yf+0X"&SQ`i({+3RMD( Teo <"DF^Tq1 qU 2\ 3!*2iMfXai!B쁜O@2D d M_%͒q{റ:,!1P0ĭV%6>Bad5&N&F9dh8s߾JF܆zmNa7D݌?K$n]kQT9e|%^1%ai ؖdɇcw̅RG2wq18ufSY m!>Ia 酈2u egJ9p[LD;&h)yi*`m8b|h•i$Iܖx|IUJmPlP"$(pq &@-""y+Āԩm<؄() l8+3s"'f0EԵ?8<%$R1+2&i^.KHL1hh#ePfZ 0=P\}X̰QG1zM *ҧ*%b>q YVNz@LS,$Za.`If.:.Y=>F8Nk./hg3P`䡊c. o﹓Y0fBS`N"rMM6aࢡ ty9@# z<jQ{ Y#uDStëL.nPtXɚȿVs嫰Ka7 1m0zQPfe-?=#iqczՌ'kˮPɃxyķD9վK+ϸ:Jw'~$[3c9.D7N;Ne<JV#6k ,ZI,d8gA%@ :&ˌO"Xwč%%rpvs+5;f ʅIpɅ+ Iώ&ujTO]De0y 'VV3d63YBT㨐aL3MEaͅE-n晚JhkTjaX;9-q21Y] ̘mL:(e$I B$If"Z)`r ,(@DQTIu4Ѕ0$: ).j3D2\32Ij^ &P,* C$9\'2 @fI2q ,gR 0aa&eգM:rE7sp8pMYvIs0e&LyQ&&w/jD@ @JY@8ϮLML3oS I{Ow:ZmYWQ@baD}6s..ں:x+w#R6ye2cj#R&  MG"A]y57FBLq#sZ4,#]!(g%&R @0ULo;-8k;*n﨨cK2ITÐF%WŤ%NX<')~þ 0>4 LI5 y ıjzh,٬QLKtvR ;y)E툕FS,x!ꬶ3kZj Ln>%y!Gvpf, ZޅS*D݅*O9@EÖF^$ρ-&mWfAuErG?Ir [Es)]iɹD&DY\6yp&(+آBVi b 譀 LO,㕕&2 +l0bYDknD\{ur[ ;K9BSK$JM,(|U<<"ڇMd[Y0C2I!_(f?_F#NЖDOB3ӅnꬌI`C}[Vks+ !{IŭDM!İd,UF@w&ݱHf2꘿wY S:1y f(&<ŧ~ǦJP! n0tۃr dey`8* i>u¹'-= # YapK"!YbuQdIM›1dHfPMI2C+2{uE%TnP6mfg13̍Qry$Jw6y WϙLT-F`&H 36m&ʪ$Л"P0RB8,Kp+3%f&bpf$8AI=ʋT+.|3 d$ӊ31/љ}~?1LLb uqCnwLg|0=JY- 'ooFS=.6=az8mH_E+憎gx]Gvr %ݣ6*7.Dyȡ $4@5l2<#a5q D\9 ݤYe#Σ . FQ 0¾Eg'D Ȩ)$by1 s½wd\z] z ۃ:Kښ*(LލG@#l[[,I&*Kr$4ZsVIW`3 EIMD C2^xN23\q;(Gl D]&(K+7O3 p\2j@ /%u7DKc?fcx} dIozI,MĠKFϕ&RMp|aJ@-&I0D:«f&*f`5X "Cۦ~FQڸN"Q7>%b=cXL@ĸ/lԌIF~YY޿qFi x \{y_F_S\B4f6iiI$Us$N 2O e&*.qc{!v6ScC!S ,3#Ƥ*[;q=!2`f>/dF[ j^MntW= i$w1Q}$5+cdg*{!q-/Fd3dq)".}<&bd٧L b=Й#+`ArBw) 32 Ga ]GҚFzAm]u:EŶb.eKQKlۉί0 fεp@ Enrx@C#tjv-gWq"VP,; &ŏIa !DBh.M B1`g0h'1; Lr2*{S >ApD1GHɋ=, ̢1B *UkP/o-3@D ˼KJp#i}ςgc]߈D*o|#'55uG\2i6{[d9Jc̡"a<\}H$Ђ+lN' DLUC=ARV!+z1'&q,y̕f呈=UY83J4Zݺڡlyğc};"ڙ#7oF8L\/v *zqra|v>0 v:# јbc8VNry!NI/1"#=K*K¤7-FtL:I'gZFsq!sU^ssAYώZBD0`%#lˉDwAfPF=2$r%#'M"@{ΤGtN #dDe3)%p̬e.{Qwf(LL=o{*^޾f5QfA~3$rAq ,"'Mј!juSj7( M8.-n%qK$4y%^hXjf/Yf0ƛI붢z-ޔ_g ކ_{sOU璈\-,LM!89!n+J\ r{n sc#q}i9'6As?[*Y7|o&@7 6K~2HE|} +HpajQV fTj!_x*J',c"VQ9F'Ԋֲ'5S"&xNU #U5q70A*Idf[} yVQ2,j+| z39I_,Q2gpD2q ));gs}]Ibtתbc[_8{ "PVWJ(`m&a<&Gc>qVܱwrrdfl1*Lj1뗂%L$B3u3ex-\_(ғ s*S } S:UqOp&ɛY>%-eDγ<8ks!as* Nuxɑ]븉|x0B1sIP.V5+fr`7յK|`{3Ueۊ\IPDu'%khH$)dsC93(jʊ\dLzRNI~l&$]>៾~L)Yen(;{!u=U_ʯ0nKOys7\q1|_q_}??'?q~'ˇq1cq3﷘QS0/i^ @@("[B]8%* tȒA {e D0!(<lB CFj @ 8*zPR{@*t`IlhR HHM& U`"]7B@("UShČS*@Tqg=@]S$e‚Ֆ lq bnF7)V <7&AQPD"@ .A;C`1iHAq+4"<D_4򛄊Eh V*d RDPPjL(1QANθhO)pHqlBʀiW`0}AjP\TV/`1CCֲ~#BЅ=C)E%a cԈ@HH y@#AB}H((86W UE5B&0FbHzCQ`鵪!  Pϥ(el5j z9*F2(uvhϠATATo "JT" C8H4'M{b"8J6!S*b*"0pHdT$!!}(ҭEW@$ŘTx&B/Lza)D KJVEj 8tE @JNJ *E-pևbBT((fH5Bݪa,AQe0*bd4= L%i&C ihUXonǘ, ) MA]B V08 Ϩ޴D Ƃ$ HS% KH0P)9)1&@%qVHp],*fD&0TP,hV)APٶBOD&KocJEE BTW,&R H@c 4i'@[-6Uf\PuDJ04j")ąZ8P&#}%`$ 0DBБ!AvH1B'(-GT * @b* q>1aJ)XPa[Th( 9b"b[$('$ҁeE =csb Bt䰕P2B$@!_+#0D RRQw z|*a`FEVL!Wl%A1p{ S@H$"cAt@CThޢF4FVu(: @.=QKTFFH&}DRLٓX)¬a+~B_ TW:1w`e W`ꈲ` a X"MXq $TGA2T&QQ])QKĭH8%kZ4h#t}IgM7\Z&-hĮ@T* ,"`8Z(nDAġB5H/D`pd@ 6ATzdw d.-@(P˫<4D bFBh1v0_m iR5j**hPa&WTc@Hmv(#h:$7EO0HhZP)Fk+R7ZDV04qBP]Drr rC0qD:A-ςP:] H$vRV\LDV"DUH]QOPU۱ VD}?1+)apˣW\H*0R9NP}*x@RA 'O J'ʙтPiMB+5JTbTţ0PAӛ " @ҰEHJCIw"<& E"D#4JI 0AS\nj+Na@FS2@Lsi6\P$PҧHERQ 0B=,Kz-l. WRt-3# ҄ D򰈃`c` VƬMMC kpȇXX]$դCRSP0+TH}]Dj4QT S֙BQ""K@dK@ned( +SE( R] !0@~ hIȠ('TB `1 Mh Q5!PQ0 u)бDJ$(Jr'1HBz b7@Mԉ-Z(bF Q hM $Ҿ \I"-JHh mD*`\A Pb"xLPDX?L4H|pр:$"A!°+ %%$-[Ne YY' ( $k"% āƎ Sn [?S(h["۴ *k"`(:v֨N ]iH™KvG$(%3*aD"J*~ )B$`4CAUUΙpZPƥiH"E%dP 0@R ( & |["4\0ĝu A&U`!WE*{ATP@b*{>a Ы(m ӭ@`AEyҡ >/G^QBP&j` T ?9J )1@X]2ф |C!*'W&Ѡx,PD M ՠ,FFITjX:fM%H>BPh@t*#CBJjx4KYACB(4~UC1IfC$crE4Lc]A>|鬢~(9L)!-gN$;ʐmDRAs^C1, *@Q9r Řgr  B+S2n5` R`TbM%6 p)BjdP@DΆb@@v*yPUĠTKBPf!!*ADV 7@)4`/28]X^ҕ4(@p&*:~kcBájP@yq5.5ټ88 f ]"OO`J" z ! aEE(_Τ%Q(pHcXqVq&̑!tȆ# JDD53@ڑX+x۩*R`rT(|4m=Kc, M n EZpȑA7p|P\PM G(<trh#&"¦,A^0 @(P-FV?LJf @@"@iU/ĕo΄ݾ0[Z$a5|\xmC}E-'I0Y6JWPƔGeA)9mL|P&Tqٳڭt@*  *a OB-5XLHV_pH#<(AaD/`l (!Qj*0n‰ H%!JACu;'btE `J "xT\` `Hb(7lU~<^?({ˊ JJL K<.((A͊אT< 4\K@TE UF %Ȑ5R &Rd , E0v $%t!@x`h%l2j9pF-_$@BF`tU,Q GBNPj=z0d2e=6R_Sd f ȯh{yP9[Bb 8*l) RuhQEE[$yLBLE HmJ")PF p նp㧡y[~reMC`3Z+=,i+ai *G `焠BLZ3GDGZ"ʼn20bۑD!O0P Q n(֊”D*ϐI:m+@ ? q"`(q$ TI@ԅDvWxGT LLJA J VClzTHDR6 PtXXLQD "O: P:BO_DC@H< %>ȭj** *e*T[", txA  8و,,B ϝya, } N QR~ˠ`Cj*Yh !oE]Dd|BAf6*`jlJ}9V)N@D5ɂRтP4.o$E+$dT"X h Ba ~KQ1eND 2J.ƅj(095E(Keu2B[@#cEHrZ/y8]AZ2 #{fz017ݱ\6*dT!̠*( BE &i@} ay EMm-agJ$d"A*>Jh={A`%JU4TO ? } Wn)xǢ*v:5V˜>T C!bL-+IʠR%4BíU PsAA 1gFkNnCw鼌?b(fP)u@0HhP>`/F  .FRS.ʞ\xd4bX ԅ ja@1F \-Q( @4SԳ/Q@zmt1VبnKS * t{HodxgR4I *0- #ȈX!?BQwAe@o@7@P$7J'p1ah$NQA kTa"(8r҈c`{bCVCHaZ"`RC$pb$8R> b4 4-t4mWGRCC$THHo.~ @PB"H ӆ$ K B j)(TcoCj\7 EsB4HX 'T`zƮ+ aE Zad>AuDA, VYN4]НU"aDHK V20.D !T8CU^ l*xuWנr4T.+V"& R0e2e `CM@ԡA(u8 )$RHJCU!X C A4$?J8(+>(WU a/V$6wT0 LRj!_E* 4!zX* (ƜZVtEx LÐ,1zʼnB1(` B*ĀÀd?XU'NJN*248RJPG@S`hTEJ0>%IDFĚL{*0]ؠ|JH0lNY l\i 'rϫBiH&=Fϳ [Pq:F"eHB# JY &ɱK{XpAT0>U Vs([ E8φ ThG4*jyLCF+D(3!dM`I 2r`(x(%5N׋>@'6%PIGl2 N@@0z=~CH8Ap ,fnSD3U*6@ XՑQf E=U`aV0?K a_hY@SX8p DG CI~Gh0Tt+PaXqgQhYZ :_Z@IXO16*_9&Z,k/,ʇO]b $J,PhYNIt|J1PRp T*"")G`YU@AI#C AL rAtbwLJt,)m1:3P44PdDžvH=StJQ]$/7 b&)Gt c=Dp>RD蘁@ .XA bK``^#!=`!V Q l:E*&UhaAeB{U&}#B@PR@ p$K]%y ԐDElUDHI(B@W @థ`picPIT)TbR "[ q`!k#z™ڒ"G~k("@$!:QZPRea\ > R@@hWP y8̨@:@FP@ 2FRAi T M >*@*b='dqz`3PY,eK%ˆBw ^WN 4i&Mc{,bbo@U0Aq[IIL @Hd%Bːt<(p'XC0\! b# Pq{XP[= =!S?p ce5| W8W5M9tN\VhzIQstX3V(@j@HxaET\*@"*QM)Ģi4RyM?a65%EL AJA9)fDEOTjA&IW 5a!Q4*`EzVJ5PDX H8tDeN& iao& T+$*@!X.A"=@"T}Y D,UAU}d"z^D$›h, KD0l4{M!5>L/$C-R>$aI"B Z$X*#*t}%A3T%mTyh.  R,z)+Y0 nWD􈠢eo<;V ' N PMDi6 bP .d vr&&ϠAA=!BiHՆs~PioF0 QGk`<`X&.tqQ| h,.0"UsDQ:P!@ (T]RU+rгPQyKHʊHTPeQ]@ij~D9k y z@}ʢ6Qk6p`ђ̀.X%' #St/jM Ț%|e0]rl0<(:2eie֪j[DYXBܧ.x12ݝAY,q`HȀ<5ji;{r.3o\W:2 ȟ0$ $є (ZFD1hĤ0*4qMX$A$!-]JV(0g⁅E)=Y F!CF xCd!PBBEJ-@+\JJ*"#z`"1(VDEY3fh모T">NJ)e2 pQ #H {MuYT%4%mfP&&I({4x h*9r /hFJH߰ D( xsvS4d}FAeᅨ"h'Ŭ?sV zхh@ d 2.55R躑CFƢ7 d'LȽ0@€RH-P b2"%0 "^( xk"J@ HX €߽xv$gl%%0$RgBNBB1$X!" UD7u@HB(_PثDC6Ri=f7y l ԫ–J_V@8c)J% "8ƕ% Ain(T608)/V<֬AP@Q[R `e3lwHPa\tnNpF1 P]{ɢ7@P?P2 3)4u-(9_'M>hi8H`QrWJwtl0/$g+,.hab)Gd$b- {Җd`"T;Pl*Y%!v5^u> @  Q f" n8\E T$PEUAbъDT10xU^6(6(V(ԉЃD,ĂDQAL`MN\k |$Cq~U F$uJ5C *A0 - <UUhβeJ6$@pb\0X4k4d=y,IAX?t"%e$ UQB* )QDTp_)IbP@ƃ Vº"JURPR"RV&V+\QB-a Plx|j"_'5d(+-ZoQFS ++8=ܮ d[ R\;AQx&˛lƚ߱nΰk}e #'="@QSoX6^Vid$˚u DF9B"!BXU-h7e,X H2b)hIs%LL8"o(ZhȠEyѡ.H}J$t"jJLHdI EҠVEPA\}n#ax`D >"LG J^Bi Y/U%  [D (8BW1NP"cAVTt]]_92*Q Z@x jҊ40fV,8&b]ALTP9MVB X "\4Ưfu'PANCF+ p"@QZ9 l#Ҿ] 0< Qhӣ _BdCC8Q:%B%Z fp_eQ#sKxIytRG@>7LAV_L,UI=S`FAF'OAn$  XJ$P J8 04a#DWP@b0Q8qV U*SWj%@j$hB8*vP.Qda@"@fJ^_Cx'Oƀ[*VR$ДS\4*tDD$@QN& dC)QTCT9P'ȥ8L{MFS"[ .1,W;>V0'i)vƔ$PGD(h ]:IFL6,) .Ri< 4kR5ABN<0:9eaE? u 2Ёk9-Q @L B9rȁ)F &hdPH~ E0H-"B )!TX4(V J%I=~+T5DCM jjtC h!E~^ ý\/E@ (s"` `*X8PU Uz R*y!.%mrYK5*P^4 XKpc`4 Y'e@TEhey, b)[T&(ՈD"8ME:4aPBfR F <R@8ZITX  "Ԑ| ^}DLD^MT4} *#ZkjKp6D]8DT*P4 %`UQ,3F0 !,Zc  Pj@ԔŎ azZE#PO!,i 4*>4 !0RTDiU#q`DdIjD1$@::*]3Xe$/)BrH0(2`/ KA" bTȎDw\aH uʈihLN@tHG H+vuT\IjXjDHt4K!YO|^.jV5J@UB6PUqb0T6R-4Ȩ!$qBiPd@D{(- [A#@<eGo@R5"Z"HH)r(n "p'@6XKO"b#2%)M)B`G#%`@(R-@&(8|xD =BFOeAiJOOтZ=D (+PZUʦÉy=\":1TDIٗ! 2s<&%<Բd/|' QEC"c`Eec:H+u^bДSFP}ľ *~" >⪢!-PIB DT)W<@R )룠Y%5[\4Ih ߸UK[RRB0pv!S O58P^ġ!{eC?,LVeAQ0%$#Ud) j@tM0,d1Qg^  Z1QȽ/-M9L"* H 4"hSxZ?R"ȳA չ;oOo1ERU *BC" #a1pRdjI Z*]zpQ5OE9ЏLA"#(|JBjxm$-x>!e *" E@dQUR,4Z:Ag-P҃#JHғNZdqkdPi"UV.EBJ-(aI*_ -*+ 8``X}`Dt=ag*9⹝B"5φ8,I6zv%NdD)d 1@/QW`NF (HU( ,eHx !()¶❇ @R c6#KA_ 1#ִĥJD \ZkiFRG"- BUⓟl P֗`#-!菑`(`-~p" UNEA@gEj0x"DDjyC  [:[ =PCvPF \`S@֊ImBc%$1P@TAgR]!8B1)hB3K%  F)M3LLI4#j ԻT45/xI 65G ,T `\_YB406ȉf7#B퉼40G W|=^ Pj  ^ 9eFi Keh2 X! (RM-0E L/[&E@öQSM<4Qy'4` H]R$? ȥC xZN^TAikMl$P ZB(+F a\ŨϠQ/ @|ZJ"M(QLJcÔD,glTQQ7|W[(S)hMبI*0H08!!R(@T *<" 4AhFP"(&@E(G@RIT 24UT,5L҅kdDEJD HDXh5Pyedk2O")h"čSٔېHkr^l7 0wh! }JdPh jM4;l-AV YV ‡Aj fj&H<7v. R#i wQdM @@1 FmVbuoKB$ЩZ"Pgu5T@$T AIZ)`!XAKFEAEH=*Ā hlA8|0E d0^N $>je/P#pof`A-Y>R%‘S  9ND00x0dI)FT!  Q@H[ȅE A?tSŷT1(;5B!%L`PbZRb8d &T#F8 AE A 0#cV)f$ ĜY|P)hB(;ilQ>l SR""Tj@ j@jRh8a .y*Ti IbN ,5!Q%I]ښh@DH(-5HX (H,XFPQgUpTA l] _`VJ\`PĂb, 0W@ޟꑶNaH۴.'W:Td•X< QE6.TvF!TB bBALy* EU( =\%ӭR|! X$(=mUI*L:$WE\D!@ 9Br$) `)=#hJ )-v0 oA0xD+"B`EUe+m DBTTI*@U老7ࡈE(@$J.bVy*0b BIUH#e{E L 0BTH0"6 &QH@d 0k)cgHiF .jaH QB!j 4SK1UDTtjȣL,|-(a8`tEQۈb_BM 0Hkhb`G ,C(6th R0)`(00GX5Q|)@`EZc@T豪:l$A{ 8P8"#"[@8,#JRbj#%-t I <ન"TVVR44PE*qX%}EhiZQ3 QJ8@`@ u` ƥ~R% H(3CDLx !Q.YgR$ Q#$* * S[U r .P GI2;"lS(Jdhck)bq"`TȰ @@!B20RIdP"-kJCRdΧb"=s*j"=\`ވϗ*FUQ` zȴI3sy rFEBM2x$BDB!@Z1 Jh@jyj$PQhU\d8V [0(qi ʰW#ϣ̃@ԥb>u*_͘z L\PEg a!p  Ԟ@-QC ) ej=>&E_&B]PEpdi7(X1 zn[=SJᐡ嵔Hه75 S*8Cz?Yu A'b`QR"""jx7@ӑlP 7L͈(PDXDP* "A FJ'Cj A%M#3"]1$8)C@zȠKKC,R)O2 XT]P:4jhFR$TC!%- PsRU  iتdJ"JO, A OѰ.)Rb" E<\Lـj"QQb)F 5@)BK8”"TBB8PTC@&fM 4SA 4E F@ULNFDJ$,i"CEM*'#D ERB$,C8t 0hi$V PDADS ̋+%R@Z@B8@44X="y,Ke(EEAU S+DuCdudLj,R=W-!bL{Ch*{W~>8R>i N+EqBKk0%r)DV5V|C̡?$=z@$DҠ # JQ Px#]4!,ʒFJ0*MŅI[AAn=!0U؀NA]l0 Z (#D: YHKC&Jj) m,%m>&854h0Rb*4UR4ԌP_0"֨iH P 0Y]KpY$7vP"kqXpB»9@-jj-UR) bKH%O ʾP %M6wYu0)̄A<S*FAUElݍ8" h"~!h]P-Bįb` :b"0J'06+a*W(CsUjL*KP|otV2~Ep 5uPD]|ZA,d% kdA!7q!@!hQ*'" b$5ZH$, ;Qtj"KCBmH Cф*}r1z_,%8R@p@C CAMA~ЌK t`'P@$^fh1-H2^!0!"AkU@R uM%MDT昐)@bU"?4$:0uiAP"Nm!BACT m DD jtP@8ETM M *l`HjC@uEb'h-1M`P HNZ>J") I( *Q$`@B,+Z,Ӗr¿W2;&J Nzej2ЗF4 2袕@r_v7r72M. pF읣P $59(Jn*Ax%i %'0%RbUA*v P&U4ɰ  AJZ (@H2ӝU^6(}'d5T@bSumڐ4whX^&K@Upz qu,, AP5h A@D!#H&Oi EHVC 쁠 u` H8HUbQ Fb.D5qEqM(0Bd]ElJ\SF`~eDBcH**78Ax@)Ax &P/Zf%l#*E! ְ Y/Qh!q*bG;TyX"6(V14E JK IoD>Adib B!HI)Y>$(.c:Π0SVWŶ!HdA. * 5HKx!dT5AQ%$Z -/l> h QM )@1("PQYPA rV:)014-E B0E&iF]$ URHJrE"r4pb bk BGZ)il(PPv8+Ј 2}l Z(("9?OV%NTLS0*es8'aH.F$ ĩP*TQ. جy d2BT}/,R_#R)[kA#A ZQrN1dB*~M(]%AO@`AD/МXB@,hȡ&!?"Ҍ) XO` YPp) JfC'$T(] BP\@I D`\h hVtq㖝 U3B3t*$VBP (ES ,@ɬC(hHFf`B%L#")d҅U ]20AANbƐ$`,Y4ǁ%QJj?₹L 5vց_hAn8I>'.2OMơHUA>U Fx \ZC 6|L"ݧMR"%h ' z 0Z$ R0\|dy*@AI&n2`Љ I0@t*R^lex!f>k`D@Х-Pc ^ + ĕdA (,mKt1 oAXN(C@6 b ( "ŐyPTb))BQ:?+A/By}@  D,XrR R* C RuV( Kޔk MA(⨐ }F)xZedFDE5U*Xuр9 s> [TRBYPC[j `gHŌP]"-%C"Ab LrGs !Zhbl1GD(Pql&A8rtVJ5@fTUjJAD6SM{g證 Bʀ%zQd~h) _p:& 2B8A-j}8zZ` Yl1ր( *=虞ں4a !#dkŰ!LB1%"T/C@P@4X (W> 0$@\ED`(2BhٱtC,@FLD?(OQ*j&*NhԘ>9UhUD`F,@e@"VVXE‘AJRM= s(A@WƏcK e>± P}!HV?FZmWiRO(PR뺱T(zπpiE$, }'+@4 KURLVP" U@.Iz]Kt*JU 4NaG]dҮ\FeT},5*XDD2%/֔@ CQak 5(9rFڑ= @J( $"$TArAsrmp,)tC3DђBD^b*JGY' T"T"ȅHq(GB4)WpC`"@!}̊)U9Qv;bdO @ߎT2>5DTVM9Q&+Ux@D5.0^)im DbR*^+ʀ؜h"BSG1P|"Y,Rh:@ԢH%U"O:3lzZC05Md#)w0Ee1iOW{ $5D(RdE0;h8=UrQ\B9q! EBE*´[JheV%RppPXC*-+5fI4*ׄO,V0"l ph?#6LN"X,<0  0ƠLiw@2Hr㶨*(M@V j(z(tC`q@( N⨠ "pyr: "肪#"U,ER"*r2BjPV>MADVX0DJ+phV5KA:`iP ETUU{$cTy#@*5p"ݚA@ QڂCQEHP+$^`\I*I"HP(AD%Av%  6SbBDL <_8\VEsqMA{N@7$cW^( $z84T K \%H$chȧ] J< FK@J@uL:XEQ n*It\`D6P) ʐ> j']YIRVh@r?˴B!IS\\ʓ1u2Ul  U0U t"5BwLA$DU0phPEA1d;TpqF9Vk 2)J_;$0QD/LBiQ8KjGFaOP̠DdIkid)k5Uh@R R9 QpDZS 'Q_BQm0!N DPu o*!INwh wi;s0جj8$FMШ%Q릟A\TU@@b#, Rzj΂>I0U@>Gli(onldpFBʀ H%@ RmTI*"Jaxf nEq. Il(*E0[O@P(1WsE UBP<"Fh>1֊R˔Nq(RȖ( QmI4BDfԅ44 `J!I PA06_DPTbK b4:+@IBF DڀQA~%! t XH 'TPeq nP@R2,cL^cH¦X7 ˬP(ht"U>rlH#b&O! F`TDZ^ ܅(=A%_ H@-BC)Ed 4 /w&l Y<Dܯ)OK8=x+(I*""$>!F)T6͂+RFT$z[AS:S<*/[K@ ae`ܡZx@**<4h$eC\  9t)dm =n fB,1Cb dǁʴ^~yT1]P*j1(@ ,r|:`|D?#AU(JѱVM!B+-}'PYt>[A@3dR{[\/(',ߪ;Pg4" < ȯCN* C tSQJ**NL, tAh)UUԠAT-3ᕊ$Z$S4%BB@k #eS pȥZ E@~ҍ}) )Q&(*Y!B ATS EDpԊ hP댕H@ PGVJ[#_1NTѠF"tJTK"\PD :#Hh) p){  O$ГLJ QŰ  0 >.&p- -%S ՛9|5`Z](E cȃ2J$#IhPMHSakKdAySڠ@$^2UQiYXAQ"N`Р[K(`4Q6k*Z1Ф O U kXhlCr6QZA tCaAH-XDE!Y_ݤpϽP) |4$XXC1D1BA 搴 !ۇ1Df`*BS0-G}"L=AcAP@$!aLARP[ JRpED@ea#'"R ЕPWκІC0rD_]K76i=ibB:92jyz # A E, H'P}| *ˊ[QƑi RsJN H:P< !hE#]#%SX t0.|B6Ԉ >b3ԨP(>:Wh rU@cP0xU о1 b., ! t8R"0C caTڛ=uė!4 ! 7K %$a@5b|J%iV˦@%EMO$D9tA`") @AQPIp(Aen--i3:S"O&݁Z>CEG d J 8amI҅r8"qf[`":$ҡ` `bR) Dd6DJ* ` GR@KRB80{ʐq^Q6$(QV@B ?#Ʒ$,$rHQTU!a₁[#g0hF!^B56hIH1[ `@ͽQ ndՂ 7Im@CScЄ_K P)&iZ#&@ViM,,"$P)_()I& =aEKDI@AjvVpH,Y+^Y@*@-4Z=y$$*~`/)]1Gb,DoeJ΀A9BHiGUGI@IiJM} {H-  4(KQ*-P' %DABu;0!L2 X IW/5wEAa2DbUU`\SRqGHpP* CDDMAek~xOL@†A~bVi44Ma@K(ц:2PU%51jp ůz8KG5U,FIe ALjSł@"o`R C]M>R%E 9 O3Јq 2V !G@B %hhtL @FV $*THޛܚ!:g"+=F24* 1CGTD$BL)@#U:E0P]P$_(*+5XE Hȸ@ i{F(Y(TbN&dhp@'H$qDBiMĖa 5 +M J UTr d`sM<63qX)p#-Uw [PzD6X*a ڡb!RӚA/:0(V8[ )行Phj=#XՀ(yW  )% X*$9 KX!FX0yfOG,$( XE<^)(PzA{K3=H_JҜwB*tY{۫CX BF/$ӶV2+Jh/(+9\NN<&[`%c6 "ANe   HE5gT^8a&WP-@b|NjӢ0C3S(hZdF(Ʉ0@D14H 2C:dZ"uj%0PR(䝠 C_F5 }+x.=j,*!юo'$()^рz1tq fX"'zsb@b, 1ྥ6|J+@<h%WPUf,Hd %@tK} " T^8x1D|(K C@*?솀$D ~ (Cl 3" B) Ji,w'jä-`jwj:!0R2C'3.n,D/~LVEwS˛ge31l#%@2 IE jmb*];x=րR<V0z@($V <@ Mj*YZE*$iP BLK`LyJo@d@UY!Kzp1l(@jHL(@Y R::bFIKbT @ɡE0[0Ũ9KDGG 73 a A"ta!iHJISfR^}X@թ<]@xtѷybA:ۏBldKLdƋo֤9]/ 4RJ!_%HqQFk"VI,@_n, j%|`^jve5G `|Tw)"H܈Ql ɮ @`V*'¬ 6QDa 91"@,-"4B-kT!%)M+@ !VdDZ%1ĤQ悢 xs%)0*Z Iۀؽ%W) _+kRuXk!@zL-Wa|!Ҁ: 맹;bB2 GaPE"CamDVA@; -sYQA bZ*20!Lh* `$jBuB.V ;RdP!{(JH'Fn.LJse @(*_P"Vn+68  QW`CEZ5LJB G]@b``bI!=$!\0d.`sGi'b49JQIiq#` 8IR,d EEL,d6ŪC-2+x 8Ե5 cb aCth8X_*# l&_A@耋Xx@P0HsH%* ZȫtDDAi̠S4@@V|̧P)B QFjp.")kO{8 4`$,5;GF𾴵 YdT;H+:J@yj\\YJ;7fv)i9<[)+7-m*棄i!ܹbhP= t)0E{%>B*(2;#c~OP!0(xǁ| HT # u]v4$,?RP!* Ң%  PǴE)A:W) DX@ WEHҸhbx@ AA Yzz|00֔=l &јJy@a(t^C aaPWeP5`$IS@( dRR 짠JYT @Dm!m$vEAP@<)$KfedD "JJ! N/´p AVUq+'YG\a|h#P=E iӔ(W(!w $PX۠}u|S@JWЂp@p@ލ\P.+QB*9ɡ T H#0$BF7n0rg5j8NF`T  [$}d CU$ĊwvS4c=M\;ѵV ^ J0r0U^d XÎF 90dCQi p"*Kdž oJSE$cVeǸ!IK;vf@y@,0Dma=FLMi,W1=DGS LSPʫ,@c@@(+fEFYWI 'T [D1U BҢ `KX4iWV& 6I&^+ |Ч {68XHйb--nBDAH24<d<$A63iD&3$(Z"4@ ӏ0z\E6 @cHG(PПlr:BD8 )̱d+obkXyRˉ@EdE{Cɝ;VugӨLC~h꧋ `EP,Y|V K\Y7B ! H `*t)N%L$m!9. )BDy"&}z ]`IDB% "51i[uԺRufmIhI-DbAQJ0]́ lPH*B"hOXVBB60b38XK 0@J>*b2ĉ(Ѕ"P4bPb{Jv@Zrp*a) uN^M)NHDp#hL(&MB `rr9?J㎎r`zMka:8j5DGL0<(^ JZ2m>,k1Ѐ%mPI VpWf!@ILZ<"FŠ ka.$&MFe@  8Q]EV/)d@!AqUE PP! xރ%:)Vb^$ДKS$ R0lE!M! $J(h*I)@(VN)oC qoI AIɯCQ(wZe,P5T\ pWeMqzڔY tdֹQ<.EPBfp-)ZJנ#V؂0B (gŇ`NPf e" 0rG2ieH (cNY14Eu6(C`'"cI8+ 2 `b Ш5J>*EΒB0 T1-ނUJ0tm"hTDd0oBbq +:Q bM@$R#l0VQbԴ@7&š*΅)j'T ) `mg'R13)( "!2‘@A\R**tAV1ZCDI B+FF;j +ҠJ%uԶxa^j6Uf"9H c#zCœ"cW> Tq%W_r P 6:ފD%lNt=^uV]Q}2ȀYPLɺ#>CdbC3XvL"!`X LBmW% 4I'TϿ0p1(UJ)Sup *"=Q]JЈ/c.פJjsS#A,"; &E)E!iE`]D),$Qؐ)F_,J`B-B!'Q 5 E&`WoiQhQUUP Mȝj#` D@N"!$+N!C#E uj6˸))!6hFKaTPTi)ʬ" qp1@P/|@X>V˶Ai cmjy(%7R JrXL~!A>6ip !:la$EU^$Sa7$}4 *AA> ՈJ} L dX$VRؠБ4=S1Oe(8RbWU"h{c`!H_P2KX$hOWaѺ".p` x1`/ \@ d (&㍲-F sa_KZ]JqD}%XH%FAZL@x  &mҘ PV9@4 Scϩj_L$b"*P"*0jm,(2PH+ǩ2JkDAB+ ZǪ764Ql(9sF&GS\E(M@G I( & d qVjlgQA,j%Wq"XY^֨XW[2jx)h' J- 55;+ATE@d,wő'-Hl>@Y*v#v y{'OޙTbY; WBW~hA)A4E=~#ZnH(`{H E#((u)`HmjD@ LOh²=BTSNR_I"RQHHT QXTc*˴.@aHkPAw#ց`D`U+pWh CDDtg51BZB-9H9&a.Zdo+%Z љ0y a)8[/B{B x"QLJ/PH` 4K0(؉JRMB\u",rZySM0Ep ePWP P!Y}!Z`B6Q鱨aaH!8؂^aoqh RѢl\QJ*-* rtHHI0 5?}֍HKr!P < /0L:eHX M ! ݉6fˌaQS'kQM_,bjjPD@c|P`^^&G*%1 Apqz Dt^\0N =,Rddp) "H 5z,Yr~ *-b](:!#b)m񺈫33U  ZuC[P¢0qa͘RO)JV2t M>XF\J ?cN4 n"8] Kg, !@A3(BYAv]Ű2G G/_t@VlHzm!`͠* "$4i $7@S^cP0%]pHU"a(UUT@#;HVPؗXZ" D'B^؍*?%w@S h69R!h Q  %Y82@\FJ:8UWV 7(PJaPБBE ѽ?0=aQbI10-CGr%RFC̖\uһIDDCP4Xy}!#A-,$EH_@j^gM lP.o9 ^MP'Jȱ6!Ta!|+hPz]@͍&R8ޥ#:D '(H2,C$HU_QAeUZM@BFUP`Ҡ L`M/;X!ch"VN63o@ LV hh4Z{t䩕uTU @&V-hs^0!$&EpŠ 3jU'"bdb`LجTp(:!h,i>0>П%S F e AjM}5nPC%ĄP"75T: @dH[!"4R ]ĒA@^ b,`xPLPU RhՃVN Bi=ҕq h@BJV6ܣKUY1/n$p{L q b')CPV(FpF] @#$6X(Lf9EG%V%bƙ=(dX(AJjIC_jRD sxn͠0"0UPAQbWM@< XD@S C]2a=@`4+)0:C (k=$FU DI-L h!%] Had#Z8d k \H@ÖxBbTC@B+Y(VQe*Ҁ!h8D<DU0([qO @#047u(T@ i'9"}>@zbUQ 5%@ZV2Ve P%u0$"j~` t`R{`0-!2!*"$$G~vin( `+P `>!"^De}t$k;?YញNԎh@%U.DMF+cZBe xУf_Bn~ tAxB y#6":6CrXUvxS=79Ys@4 ?AW9IaiIW!z$bD. 0*p-`TZPK.s'!Z[ՠ{`,X`%J \+ƥfx@7(FRѪZE[D U}TI[TB3J2hP ,%UaSpDp)4JS4N@CEb=JƲ4T7Pqj$/FC&% ʵrW =0Hԉs!AB= Tx M@h,)H J(&KGq--Iר1  Æe EG+dp%@,&BT X^bIG̠Z J2QMDv jUp*G 8GH"DPk`|T QSLS+4htQx(W@ [KQҭ؀?a ("8j(A)B`VluFNyƬ51k *& DHXőܤ+v C2yDLaK[Puӌ*0 * kĀ-0I"% NCeJ1VȬQpB̢34)*hy ԣd+8$,#THNuqbC@ &T==RXa||AQ$@AC@:K})Ӭ쾱(U<ֻlE Bbg}E2`FD]4R!A J!j 2 WN NQ{YB5E,ʳJ\n-aIJ"aU>d@#RZZ? y\ & "=Yp9v4ʱpPrx`Q8-]a=y0BWA; 9V܅a+ &i*pL *(S@/z Cf5zUK CQoC4қ(C p&Y(Z'G)#nC)I!XԊBdPg/(V Pt"J(QWuP˺ * EG)`yn +!FEЊ*h(@10  Kwl8r%1̀"(fY D`'E:JMDBUT TBB#5 #!D "8[p WM]_$$!#|QZmG4bG. :[ fD頨tJv4>h2 E?mlڨBA΁ Ղ4 h(/'4 QCYL I(ǀ.JMU ?xC3Vr4]}d^Fo2|.@((v417 R^4+6J]Qr$ LT k=C ӻ2}Ќە V:U݂H]-uG6Ԛr8]DטK D!Pe}8jF*C`"!)@IB ?UNmE0NSAd!nq@΋J4T 2 #i FFKu J @A4RЎSY D#*brր.=t\.Wrt $ufB6ܣZPfjI hbubfW%"@m" %\^ 'P BbB MEЊ~1QN5zxֿEC ]eĕa ̪UE2P+%a04H& Fkމz~l[ɞΡfŀ4+[Q0V_b*VSwK:35Q*Q+E>*4d)%!~ *V"pSa u2 POH0\ ѽ#.Rh@T EJp},@"Ƃ;;ുTC3]Љ 9@$UNk.N+) L$H%6تXBc)Hc}3 pR(M, $E%b(xSzAL#@BRD4'ƈ01OA!K@yqQ*HTjX%`!R+$d>N)5R Df8-6i*Oը8 hH2:  $T  BXNAE*!C$E)T<(p< s-K0+I3 L99 8ȎQz(U6> 9h@VZ'PPHࠔ%Q7aPժP{Q\J^pKA8 a38$eL@TCk)Aؠ:dUD1qjBǘi-CjA(PBz hT&ʇ*C2* xa#&]zD 'PWI5&!JDACZ m AH80.AT.Mm ll"KAeΚ :M< ٰ奄ĭYj ׆kAҷ .GгʲVR&g` !+R&"0@FPB H7Ŭ B| D ObXUFL*BྐN'q"\&oԒQEaCIBb#DuZm v[jNjS sS j^$&aI\FD._ԛC5SUdh w@z(!JDQe, ԓ ROpA:6=G?ȄQ7 S"ߡ8鉡q e@EUS?ħ:4 ۤ0=D@ 䊾6wQk15R$d!.Ǯu@"U*PGQ"R! 1VX)3 "Az6XI!ԂXZV!!QH,+ `H0SXRJ\*: M^ј {WCg0nQ"V Td>s ` Hd x!(Dx.[&l!@$ L,InBSAGxP!ha'=@$ Õ3a4 Ed=R0_}_B"$oZY04尖AfۀRGO.I)rBLP@mDzr) HB mՠQ BFEbCBxB"md`C |NQs| o-P ڊ S*0]QBSI*P*%Hz 2 'HddJ@BE+e\$IuDAB@ZpHZQD@z}7H8 X'&Thi 8 C tH,| 6ޚH @ZqP)I PYT4 $btS; c# mC%`,x0< TE%Dlg Rذ_(?j " vtXazHsi AEAH6dD7C%$A"h 0rlQ"Qa e&,@`V T 9R*|?5Rl3QT RXj+)ȧc"b˛HcaXud38 "[D2L*)d( *O 5PT@ыlAD# J@z⥥ )J#Xu $"}4X(R,_Jjeψ1jyS;yh&4z+UKD6@P@6Dp'TUWQTa1*$PńXG@p j u Ee8J`R @ ,Ai|-B& {䒋:t'WiQ>>H:FPbc6 M;@$GgS7$D:l "Dq&ˆS֤ B@ԖKlaB'@ ub)zE 5W4@HDoLO1T}0 .{E+C*C4ASuP,#@KW4 e;:To}$$fTOУbB!;VDLRpB#΢'' iDry׀z/T15$"0 q0^Ra,6A IPPǪ"E,Zh|"Er…"M0H%6U@,*R4&*0qXlֈ,,Q0 Ԁ&H4J  X!ଐ(0: G@5Dd66Ȃ=>I=aQЕphSE^QVTDx?ART;O!PtDZVc8Qi=%/(l#hxQJPI.BdHWF\@(zPB^+jdlE h )EWs@ EaɊXBvEpB EX'ap`)aY $!fPG{%gU 0V¦#"0JUT#Ȩ`8BفDN?n?qglx?ӽ_q:7<_?<1 }Nߣ{_B&G#_?U>_?Ecodec2-1.2.0/stm32/doc/sm1000_manual.md000066400000000000000000000310031445607075400171760ustar00rootroot00000000000000# SM1000 Manual ![SM1000 front view](sm1000_enc_sm.jpg) # Getting Started 1. Connect 12V, set the volume to half way and power on. You will hear morse playing the firmware version number (e.g. "V4") and the current mode. 1. The SELECT button steps through the mode: + Analog pass through (ANA) + FreeDV 1600 (1600) + FreeDV 700D (700D) + FreeDV 700E (700E) 1. Select 1600 mode. 1. Connect the SM1000 ***Rig SPKR 3.5mm connector*** to your PC or laptop 3.5mm headphone socket. 1. Download and play the [ve9qrp_1600.wav](https://github.com/drowe67/freedv-gui/tree/master/wav) sample from your PC or laptop to the SM1000. 1. Adjust ***RIG SPKR Trimmer*** on the top of the SM1000 with a screwdriver until the clip/error LED on the front stops blinking. Occasional blinks are OK. If it blinks all the time you are clipping. 1. If all is well you will hear decoded speech from the SM1000 speaker. 1. Change modes to 700D with SELECT and try the [ve9qrp_700d.wav](https://github.com/drowe67/freedv-gui/tree/master/wav) sample. # Connection to your Radio This is the hardest part of SM1000 set up and will take some time. ***Sorry, we do not have specific instructions for your radio***. Study the wiring of you radio, the [SM1000 schematic](https://svn.code.sf.net/p/freetel/code/smartmic/SM1000-F/MFG-SM1000-F/SCH-SM1000-F.pdf) **Rig Interface** section, and this section of the manual. Draw a schematic or wiring diagram. Take it slowly. Connect one part of the interface at at time and test. For example start with PTT. When that is working, connect receive audio and test, then transmit audio. 1. You can connect the SM1000 to your radio using the 3.5mm sockets or the RJ45 connector. The RIG MIC, RIG SPKR and RIG PTT signals are connected in parallel to the 3.5mm sockets and the RJ45. ![](3dot5mm_cable_config.png) 1. Stereo 3.5mm plugs should be used if possible. The stereo 3.5mm SM1000 sockets are wired to use the sleeve for ground and tip for signal, with ring unconnected. 1. RJ45 connection to your radio – The CN12 Patch Panel is configured to connect the audio and PTT connections to your radio. You only need to configure the CN12 Patch Panel if you are using the RJ45. If you are using the 3.5mm connectors you do not need to configure the CN12 Patch Panel. Here is an example for a Yaesu radio: ![](sm1000_cn12_rev2.png) ![](sm1000_cn4_cn12.jpg) 1. All grounds are floating (unconnected) by default, but can be connected together using the extra ground connections on CN12. In the Yaesu example above all grounds are connected together using the wires between pins 10-13 and 11-12. Some radios have a separate microphone ground. 1. Some radios have reversed numbering for their RJ45. 1. Use 5cm lengths of 24GA (0.5mm) maximum diameter solid core wire for the patch panel. Using wire greater than 24GA (0.5mm) may damage the patch panel sockets. Insert one end of the wire at a time using needle nose pliers. 1. For level set up, you can adjust the RIG SPKR, MIC GAIN, and RIG MIC trimmers through holes in the SM1000 top cover. 1. On receive, adjust the radio volume (AF gain) and/or SM1000 RIG SPKR trimmer R52 so the clip/error led is not blinking. The receive level is not critical. It doesn’t work better with a louder signal. FreeDV 1600 and 700D use phase shift keying so are level insensitive. Constant clipping on the audio is bad, when this happens you’ll see the error led blink. 1. Press PTT, and adjust MIC GAIN trimmer R42 so that the clip led just blinks occasionally, at the peaks of yr speech. Once again, this is not very critical, as it’s Digital Voice. A louder microphone signal won’t make your signal stronger. However a badly clipped mic signal will sound bad. Note on some versions MIC GAIN increases when turned anticlockwise. 1. Jumper J5 selects high or low range RIG MIC level. Add J5 if your radio requires a “line level” mic input of several hundred mVpp. Remove J5 for low, mV level mic input into your radio. Then finely adjust the RIG MIC level with R47 (next step). Prior to Rev E it is possible to solder a resistor onto your SM1000 to achieve the same boost in mic input level. 1. The RIG MIC trimmer R47 is the most critical. This controls the level of the modem signal sent to your radio on transmit. With PTT pressed and your radio transmitting adjust RIG MIC so that your radio ALC is just moving. Too much transmit drive will lead to a distorted modem signal, splatter on adjacent frequencies, and bit errors. Your Digital Voice signal will not be improved! Over driving transmitters when using digital voice is the most common mistake for new users! For finer adjustment use a 2nd receiver to monitoring your FreeDV transmission. Connect this receiver to the x86 PC version of FreeDV to monitor the spectrum and scatter plot. Here is a blog post and video [describing](http://www.rowetel.com/?p=3109) scatter plots and how they can be used to tune your FreeDV transmission. 1. External Microphone – Jumper J3 provides electret microphone DC bias. Remove J3 if you do not want DC bias. 1. External Speaker – The SM1000 3.5mm sockets are wired to use stereo or mono plugs. If you wish to use a mono plug for Ext Spkr (CN8) remove the jumper J2 on the PCB. This prevents a mono plug shorting the speaker amplifier output to ground resulting in no audio. Note the first production SM1000 (Rev D) did not have jumper J2 and should only be used with a stereo plug. # Morse Menus The SM1000 has a comprehensive menu system with morse code prompts developed by Stuart, VK4MSL. There are two buttons for UI operation, SELECT and BACK. Outside of the menu, these simply cycle between the available modes. The current mode is announced (morse code) after a short delay. Holding down SELECT puts you in menu mode. The POWER LED will now flash to indicate this. To navigate, press the SELECT and BACK buttons momentarily to move up and down in the menu. Again, after a pause the item will be read out. Holding SELECT or BACK either chooses the option, or backs out. Pressing PTT while in a menu exits the entire menu tree without saving changes to flash storage. The menu structure looks like this: ``` -> Root menu: |---> "MODE": Boot-up Operating mode | |---> "ANA": Analogue mode | |---> "1600": FreeDV 1600 | |---> "700D": FreeDV 700D | '---> "700E": FreeDV 700E | |---> "TOT": Time-out timer | |---> "TIME": Total time-out period (0 == disabled) | | 0-10 minutes in 5 second steps | '---> "WARN": Warning beep period (0 == disabled) | 0-${TIME} seconds in 5 second steps | '---> "UI": User interface options |---> "FREQ": Morse frequency | 50-2000 Hz in 50Hz steps |---> "WPM": Morse send speed (PARIS standard) | 5-60 WPM in 5 WPM steps '---> "VOL": Menu volume 1-15 units. ``` Settings are saved when you hold down BACK to leave the root menu. # Flashing Your SM1000 You can program the flash memory on your SM1000 via USB using a Windows or Linux PC. Download the latest SM1000 firmware here: | Version | Date | Download .bin | Release Notes | |:---:|---|---|---| | 1 | May 2015 | [sm1000.bin](http://www.rowetel.com/downloads/codec2/smartmic/sm1000.bin) | Original release with FreeDV 1600 | | 2 | July 2019 | [sm1000v2.bin](http://www.rowetel.com/downloads/codec2/smartmic/sm1000v2.bin) | FreeDV 700D and morse menus | | 3 | March 2020 | [sm1000v3.bin](http://www.rowetel.com/downloads/codec2/smartmic/sm1000v3.bin) | Menu bug fixes, 700D modem improvements & automatic Mic EQ | | 4 | May 2020 | [sm1000v4.bin](http://www.rowetel.com/downloads/codec2/smartmic/sm1000v4.bin) | 700D sync logic to reduce stop burbling with no signal | | 5 | August 2021 | [sm1000v5.bin](http://www.rowetel.com/downloads/codec2/smartmic/sm1000v5.bin) | FreeDV 700E and Tx band pass filter for 700D & E | ## Windows Find and install the **STM32CubeProgrammer** software by searching on the [ST web site](http://www.st.com). 1. Connect the SM1000 USB to a Windows PC. 1. Apply power with PTT held down, then release PTT. 1. Run the `STM32CubeProgrammer` application and select the down arrow on the left side, and navigate to the "Erasing & Programming" section. 1. Select the `Verify programming` option. 1. In the "File path" on the left-hand side, select Open file and navigate to the .bin file you'd like to flash. 1. Select "USB" from the drop-down list on the upper right and push the Refresh button next to the Port drop-down in the "USB configuration" area. The SM1000 will appear as "USB1" or similar in the list; select that entry. 1. Click on the Connect button. 1. Ensure that "PID" displays as DF11 and "VID" as 0483. 1. Select `Start Programming` and the firmware procedure will commence. 1. A message in the log at the bottom of the window will display once complete. Power cycle the SM1000 and the new firmware will run. ## Linux 1. Apply power with PTT held down, then release PTT. 1. Connect the SM1000 to a Ubuntu Linux PC and type “dmesg”. You should see a STM32F4 boot device. 1. To flash the SM1000 ``` $ sudo apt-get install dfu-util $ sudo dfu-util -d 0483:df11 -c 1 -i 0 -a 0 -s 0x08000000 -D sm1000v5.bin ``` After about 10 seconds you will be returned to the command line. 1. Power cycle the SM1000 and the new firmware will run. # Tips 1. A sound blaster record input connected to RIG MIC CN7 is a good way to test if the SM1000 is transmitting a signal. You can receive your FreeDV signal on the bench using FreeDV GUI on your PC. No radio is required for this test. 1. Small external speakers and an external mic tend to make FreeDV sound better. A low cost analog headset works well. 1. You may notice background noise from the SM1000 with no signal connected, especially at high volume levels. This becomes inaudible when the SM1000 is connected to a SSB radio in either analog or digital mode. 1. The squelch threshold is fixed at 2dB for FreeDV 1600 and is off for 700D to optimise low SNR reception. However 700D will squelch if the Forward Error Correction (FEC) fails to decode. # Building the Firmware and Development 1. [The SM1000 source code](https://github.com/drowe67/codec2/blob/master/stm32/README.md) 1. You can use a STM32F4 Discovery board as an emulator pod for tetsing SM1000 firmware. 1. [Comprehensive unit test system](https://github.com/drowe67/codec2/blob/master/stm32/unittest/README_unittest.md), thanks Don W7DMR. 1. The SM1000 has a 115200 bit/s serial output from the 3 pin CN11 connector that dumps debug information as it runs. ## Factory Reset To perform a factory reset, hold down BACK whilst powering the device on. A loud beep should be heard and the SYNC LED should flash. Release, and the device should boot up with factory defaults. # References 1. [Support - Codec 2 Mailing List](https://lists.sourceforge.net/lists/listinfo/freetel-codec2). 1. [Buy a SM1000](http://rowetel.com/sm1000.html) - Your purchase supports FreeDV development 1. [SM1000 Ref F Schematic](https://svn.code.sf.net/p/freetel/code/smartmic/SM1000-F/MFG-SM1000-F/SCH-SM1000-F.pdf) 1. [SM1000 Hardware Design](https://svn.code.sf.net/p/freetel/code/smartmic) 1. [Series of blog posts on the SM1000 development](http://www.rowetel.com/?page_id=6172) (2014 section of archive) 1. Nice write up of a mobile [Codan NGT SM1000 installation](http://rfhead.net/?p=582) by Mark VK5QI including tips on testing and debugging a microphone level problem. 1. [Sample wiring](http://rowetel.com/downloads/freedv/vk5kx_radio_sm1000_connections_model.pdf) diagrams for several radios from Peter, VK5KX. These are not tested and provided as examples only. # Credits The SM1000 hardware was developed by David Rowe VK5DGR and Rick Barnich KA8BMA. It is being manufactured, tested and shipped by our good friend Edwin at Dragino in Shenzhen, China. Steve (K5OKC) helped develop the fine OFDM modem used for FreeDV 700D. Don (W7DMR), spearheaded the port of FreeDV 700D to the SM1000, including code optimisation and a comprehensive unit test system. Don, Danilo (DB4PLE), and Richard (KF5OIM) have done some fantastic work on the cmake build and test system for the stm32 port of 700D. Stuart VK4MSL developed the morse menu system for the SM1000. Mooneer, K6AQ, ported FreeDV 700E to the SM1000. Thanks also to the many Hams who kindly helped out with testing new firmware releases. This is an open source/open hardware project, developed by Hams - for Hams. Thanks! codec2-1.2.0/stm32/inc/000077500000000000000000000000001445607075400144065ustar00rootroot00000000000000codec2-1.2.0/stm32/inc/debugblinky.h000066400000000000000000000021331445607075400170550ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: debugblinky.h AUTHOR......: David Rowe DATE CREATED: 12 August 2014 Configures Port E GPIO pins used for debug blinkies, and control lines for SM2000 +12V switching. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __DEBUGBLINKY__ #define __DEBUGBLINKY__ void init_debug_blinky(void); void txrx_12V(int state); #endif codec2-1.2.0/stm32/inc/memtools.h000066400000000000000000000005541445607075400164220ustar00rootroot00000000000000/* memtools.h June 2019 Tools for anlysing and debugging memory on stm32. See also debug_alloc.h */ #ifndef __MEMTOOLS__ #define __MEMTOOLS__ void memtools_find_unused( int (*printf_func)(const char *fmt, ...) ); register char * memtools_sp asm ("sp"); void memtools_isnan(float *vec, int n, char *label, int (*printf_func)(const char *fmt, ...)); #endif codec2-1.2.0/stm32/inc/menu.h000066400000000000000000000051001445607075400155170ustar00rootroot00000000000000#ifndef _MENU_H #define _MENU_H /*! * Callback driven menu handler. * * The following is an implementation of a callback-driven menu system. * It supports arbitrary levels of menus (limited by size of return stack) * and supports arbitrary user events. * * Author Stuart Longland * Copyright (C) 2015 FreeDV project. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 2.1, * as published by the Free Software Foundation. This program is * distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, see * . */ #include #define MENU_STACK_SZ 8 /*!< Size of the menu return stack */ #define MENU_EVT_ENTERED 0 /*!< Menu item has been entered */ #define MENU_EVT_RETURNED 1 /*!< We have returned from a submenu */ /*! Menu state structure */ struct menu_t { /*! The last seen menu item */ const struct menu_item_t* last; /*! Currently selected item index */ uint32_t current; /*! Current menu item stack */ struct menu_stack_item_t { const struct menu_item_t* item; uint32_t index; } stack[MENU_STACK_SZ]; /*! Present depth of the stack */ uint8_t stack_depth; }; /*! Menu item structure */ struct menu_item_t { /*! Morse-code label for the menu item */ const char* label; /*! Event callback pointer for menu item */ void (*event_cb)( struct menu_t* const menu, uint32_t event); /*! Children of this menu item */ const struct menu_item_t** const children; uint32_t num_children; /*! Arbitrary data */ union menu_item_data_t { /*! Arbitrary pointer */ const void* p; /*! Arbitrary unsigned integer */ uintptr_t ui; /*! Arbitrary signed integer */ intptr_t si; } data; }; /*! * Return the Nth item on the stack. */ const struct menu_item_t* const menu_item( const struct menu_t* const menu, uint8_t index); /*! * Enter a (sub)-menu. * @retval -1 Stack is full * @retval 0 Success */ int menu_enter(struct menu_t* const menu, const struct menu_item_t* const item); /*! Return from a (sub)-menu */ void menu_leave(struct menu_t* const menu); /*! * Execute the callback for the current item with a user-supplied event. */ void menu_exec(struct menu_t* const menu, uint32_t event); #endif codec2-1.2.0/stm32/inc/morse.h000066400000000000000000000034521445607075400157100ustar00rootroot00000000000000#ifndef _MORSE_H #define _MORSE_H /*! * Morse code library. * * This implements a state machine for playing back morse code messages. * * Author Stuart Longland * Copyright (C) 2015 FreeDV project. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 2.1, * as published by the Free Software Foundation. This program is * distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, see * . */ #include "sfx.h" /*! * Maximum length of a morse symbol, including gaps and termination. * Allowing for 8 actual sub-symbols (dahs and dits), that's up to * 8 gaps between plus a terminator. */ #define MORSE_SYM_LEN (17) /*! * Morse code playback state machine */ struct morse_player_t { /*! Symbol being transmitted */ struct sfx_note_t sym[MORSE_SYM_LEN]; /*! * Pointer to the string being emitted. Playback is finished * when this is NULL. */ const char* msg; /*! Sound effect player state machine */ struct sfx_player_t sfx_player; /*! "Dit" period in milliseconds */ uint16_t dit_time; /*! Tone frequency */ uint16_t freq; }; /*! * Play a morse code message. * @param morse_player Morse code player state machine * @param msg Message to play back (NULL == stop) */ void morse_play(struct morse_player_t* const morse_player, const char* msg); /*! * Retrieve the next sample to be played. */ int16_t morse_next(struct morse_player_t* const morse_player); #endif codec2-1.2.0/stm32/inc/sfx.h000066400000000000000000000032661445607075400153660ustar00rootroot00000000000000#ifndef _SFX_H #define _SFX_H /*! * Sound effect player library. * * This implements a state machine for playing back various monophonic * sound effects such as morse code symbols, clicks and alert tones. * * Author Stuart Longland * Copyright (C) 2015 FreeDV project. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 2.1, * as published by the Free Software Foundation. This program is * distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, see * . */ #include "tone.h" /*! * A sound effect "note" */ struct sfx_note_t { /*! Note frequency. 0 == pause */ uint16_t freq; /*! Note duration in msec. 0 == end of effect */ uint16_t duration; }; /*! * Sound effect player state machine */ struct sfx_player_t { /*! * Pointer to the current "note". When this is NULL, * playback is complete. */ const struct sfx_note_t* note; /*! Tone generator state machine */ struct tone_gen_t tone_gen; }; /*! * Start playing a particular effect. * @param sfx_player Effect player state machine * @param effect Pointer to sound effect (NULL == stop) */ void sfx_play(struct sfx_player_t* const sfx_player, const struct sfx_note_t* effect); /*! * Retrieve the next sample to be played. */ int16_t sfx_next(struct sfx_player_t* const sfx_player); #endif codec2-1.2.0/stm32/inc/sm1000_leds_switches.h000066400000000000000000000047661445607075400204340ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: sm1000_leds_switches.h AUTHOR......: David Rowe DATE CREATED: 18 July 2014 Functions for controlling LEDs and reading switches on SM1000. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __LEDS_SWITCHES__ #define __LEDS_SWITCHES__ #include void sm1000_leds_switches_init(void); #define LED_ON 1 /*!< Turn LED on */ #define LED_OFF 0 /*!< Turn LED off */ #define LED_INV -1 /*!< Invert LED state */ void led_pwr(int state); void led_ptt(int state); void led_rt(int state); void led_err(int state); void not_cptt(int state); int switch_ptt(void); int switch_select(void); int switch_back(void); int ext_ptt(void); #define DEBOUNCE_DELAY 50 /*!< Delay to wait while switch bounces */ #define SW_STEADY 0 /*!< Switch is in steady-state */ #define SW_DEBOUNCE 1 /*!< Switch is being debounced */ /*! Switch debounce and logic handling */ struct switch_t { /*! Debounce/hold timer */ uint32_t timer; /*! Current/debounced observed switch state */ uint8_t sw; /*! Raw observed switch state (during debounce) */ uint8_t raw; /*! Last steady-state switch state */ uint8_t last; /*! Debouncer state */ uint8_t state; }; /*! Update the state of a switch */ void switch_update(struct switch_t* const sw, uint8_t state); /*! Acknowledge the current state of the switch */ void switch_ack(struct switch_t* const sw); /*! Return how long the switch has been pressed in ticks. */ uint32_t switch_pressed(const struct switch_t* const sw); /*! Return non-zero if the switch has been released. */ int switch_released(const struct switch_t* const sw); /*! Count the tick timers on the switches. */ void switch_tick(struct switch_t* const sw); void ColorfulRingOfDeath(int code); #endif codec2-1.2.0/stm32/inc/sounds.h000066400000000000000000000021631445607075400160740ustar00rootroot00000000000000#ifndef _SOUNDS_H #define _SOUNDS_H /*! * Sound effect library. * * This provides some sound effects for the SM1000 UI. * * Author Stuart Longland * Copyright (C) 2015 FreeDV project. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 2.1, * as published by the Free Software Foundation. This program is * distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, see * . */ #include "sfx.h" /*! Start-up tune / selected tune */ extern const struct sfx_note_t sound_startup[]; /*! Returned tune */ extern const struct sfx_note_t sound_returned[]; /*! Click sound */ extern const struct sfx_note_t sound_click[]; /*! Death march tune */ extern const struct sfx_note_t sound_death_march[]; #endif codec2-1.2.0/stm32/inc/stm32f4_adc.h000066400000000000000000000025661445607075400166010ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: stm32f4_adc.h AUTHOR......: David Rowe DATE CREATED: 30 May 2014 Two channel FIFO buffered ADC driver module for STM32F4. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __STM32F4_ADC__ #define __STM32F4_ADC__ #define ADC_BUF_SZ 320 /* divisors for various sample rates */ #define ADC_FS_8KHZ 10500 #define ADC_FS_16KHZ 5250 #define ADC_FS_48KHZ 1750 #define ADC_FS_96KHZ 875 void adc_open(int fs_divisor, int fifo_sz, short *buf1, short *buf2); int adc1_read(short buf[], int n); /* ADC1 Pin PA1 */ int adc2_read(short buf[], int n); /* ADC2 Pin PA2 */ int adc1_samps(); int adc2_samps(); #endif codec2-1.2.0/stm32/inc/stm32f4_dac.h000066400000000000000000000026141445607075400165730ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: stm32f4_dac.h AUTHOR......: David Rowe DATE CREATED: 1 June 2013 Two channel FIFO buffered DAC driver module for STM32F4. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2013 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __STM32F4_DAC__ #define __STM32F4_DAC__ #define DAC_BUF_SZ 320 /* divisors for various sample rates */ #define DAC_FS_8KHZ 10500 #define DAC_FS_16KHZ 5250 #define DAC_FS_48KHZ 1750 #define DAC_FS_96KHZ 875 void dac_open(int fs_divisor, int fifo_sz, short *buf1, short *buf2); int dac1_write(short buf[], int n, int limit); /* DAC1 pin PA4 */ int dac1_free(); int dac2_write(short buf[], int n, int limit); /* DAC2 pin PA5 */ int dac2_free(); #endif codec2-1.2.0/stm32/inc/stm32f4_usart.h000066400000000000000000000021021445607075400171720ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: stm32f4_usart.h AUTHOR......: David Rowe DATE CREATED: May 2019 Basic USART tty support for the stm32. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2019 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef __STM32F4_USART__ #define __STM32F4_USART__ void usart_init(); void usart_puts(const char s[]); int usart_printf(const char *fmt, ...); #endif codec2-1.2.0/stm32/inc/stm32f4_usb_vcp.h000066400000000000000000000011011445607075400174730ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: stm32f4_usb_vcp.h AUTHOR......: David Rowe DATE CREATED: 4 Sep 2014 USB Virtual COM Port (VCP) module. \*---------------------------------------------------------------------------*/ #ifndef __STM32F4_USB_VCP__ #define __STM32F4_USB_VCP__ #include void usb_vcp_init(void); int VCP_get_char(uint8_t *buf); int VCP_get_string(uint8_t *buf); void VCP_put_char(uint8_t buf); void VCP_send_str(uint8_t* buf); void VCP_send_buffer(uint8_t* buf, int len); #endif codec2-1.2.0/stm32/inc/stm32f4_vrom.h000066400000000000000000000045721445607075400170340ustar00rootroot00000000000000#ifndef _STM32F4_VROM_H_ #define _STM32F4_VROM_H_ /*! * STM32F4 Virtual EEPROM driver * * This module implements a crude virtual EEPROM device stored in on-board * flash. The STM32F405 has 4 16kB flash sectors starting at address * 0x80000000, followed by a 64kB sector, then 128kB sectors. * * The Cortex M4 core maps these all to address 0x00000000 when booting * from normal flash, so the first sector is reserved for interrupt * vectors. * * Everything else however is free game, and so we use these smaller * sectors to store our configuration. * * Author Stuart Longland * Copyright (C) 2015 FreeDV project. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 2.1, * as published by the Free Software Foundation. This program is * distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, see * . */ #include #include /*! * Read data from a virtual EEPROM. * @param rom ROM ID to start reading. * @param offset Address offset into ROM to start reading. * @param size Number of bytes to read from ROM. * @param out Buffer to write ROM content to. * @returns Number of bytes read from ROM. * @retval -ENXIO No valid data found for address. * @retval -ESPIPE Offset past end of ROM. */ int vrom_read(uint8_t rom, uint16_t offset, uint16_t size, void* out); /*! * Write data to a virtual EEPROM. * @param rom ROM ID to start writing. * @param offset Address offset into ROM to start writing. * @param size Number of bytes to write to ROM. * @param in Buffer to write ROM content from. * @returns Number of bytes written to ROM. * @retval -EIO Programming failed * @retval -ENOSPC No free blocks available */ int vrom_write(uint8_t rom, uint16_t offset, uint16_t size, const void* in); /*! * Erase a virtual EEPROM. * @param rom ROM ID to erase. * @returns Number of bytes written to ROM. * @retval -EIO Programming failed * @retval -ENOSPC No free blocks available */ int vrom_erase(uint8_t rom); #endif codec2-1.2.0/stm32/inc/stm32f4xx_conf.h000066400000000000000000000071601445607075400173520ustar00rootroot00000000000000/** ****************************************************************************** * @file stm32f4xx_conf.h * @author MCD Application Team * @version V1.0.0 * @date 19-September-2011 * @brief Library configuration file. ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __STM32F4xx_CONF_H #define __STM32F4xx_CONF_H #if defined (HSE_VALUE) /* Redefine the HSE value; it's equal to 8 MHz on the STM32F4-DISCOVERY Kit */ #undef HSE_VALUE #define HSE_VALUE ((uint32_t)8000000) #endif /* HSE_VALUE */ /* Includes ------------------------------------------------------------------*/ /* Uncomment the line below to enable peripheral header file inclusion */ #include "stm32f4xx_adc.h" #include "stm32f4xx_can.h" #include "stm32f4xx_crc.h" #include "stm32f4xx_cryp.h" #include "stm32f4xx_dac.h" #include "stm32f4xx_dbgmcu.h" #include "stm32f4xx_dcmi.h" #include "stm32f4xx_dma.h" #include "stm32f4xx_exti.h" #include "stm32f4xx_flash.h" #include "stm32f4xx_fsmc.h" #include "stm32f4xx_hash.h" #include "stm32f4xx_gpio.h" #include "stm32f4xx_i2c.h" #include "stm32f4xx_iwdg.h" #include "stm32f4xx_pwr.h" #include "stm32f4xx_rcc.h" #include "stm32f4xx_rng.h" #include "stm32f4xx_rtc.h" #include "stm32f4xx_sdio.h" #include "stm32f4xx_spi.h" #include "stm32f4xx_syscfg.h" #include "stm32f4xx_tim.h" #include "stm32f4xx_usart.h" #include "stm32f4xx_wwdg.h" #include "misc.h" /* High level functions for NVIC and SysTick (add-on to CMSIS functions) */ /* Exported types ------------------------------------------------------------*/ /* Exported constants --------------------------------------------------------*/ /* If an external clock source is used, then the value of the following define should be set to the value of the external clock source, else, if no external clock is used, keep this define commented */ /*#define I2S_EXTERNAL_CLOCK_VAL 12288000 */ /* Value of the external clock in Hz */ /* Uncomment the line below to expanse the "assert_param" macro in the Standard Peripheral Library drivers code */ /* #define USE_FULL_ASSERT 1 */ /* Exported macro ------------------------------------------------------------*/ #ifdef USE_FULL_ASSERT /** * @brief The assert_param macro is used for function's parameters check. * @param expr: If expr is false, it calls assert_failed function * which reports the name of the source file and the source * line number of the call that failed. * If expr is true, it returns no value. * @retval None */ #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__)) /* Exported functions ------------------------------------------------------- */ void assert_failed(uint8_t* file, uint32_t line); #else #define assert_param(expr) ((void)0) #endif /* USE_FULL_ASSERT */ #endif /* __STM32F4xx_CONF_H */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/inc/tone.h000066400000000000000000000051011445607075400155210ustar00rootroot00000000000000#ifndef _TONE_H #define _TONE_H /*! * Fixed-point tone generator. * * The code here implements a simple fixed-point tone generator that uses * integer arithmetic to generate a sinusoid at a fixed sample rate of * 16kHz. * * To set the initial state of the state machine, you specify a frequency * and duration using tone_reset. The corresponding C file embeds a * sinusoid look-up table. The total number of samples is computed for * the given time and used to initialise 'remain', 'time' is initialised * to 0, and 'step' gives the amount to increment 'time' by each iteration. * * The samples are retrieved by repeatedly calling tone_next. This * advances 'time' and decrements 'remain'. The tone is complete when * 'remain' is zero. * * Author Stuart Longland * Copyright (C) 2015 FreeDV project. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 2.1, * as published by the Free Software Foundation. This program is * distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, see * . */ #include /*! Tone sampling rate in Hz. */ #define TONE_FS 16000 /*! * Tone generator state. This holds the current state of the tone * generator in order to decide what sample to release next. */ struct tone_gen_t { /*! Current sample. (Q12) */ uint32_t sample; /*! * Time remaining in samples. (integer) Playback is finished * when this reaches zero. */ uint16_t remain; /*! * Subsample step (Q12). This is the number of samples (or part * thereof) to advance "sample". Special case: when zero, sample * is not advanced, silence is generated instead. */ uint16_t step; }; /*! * Re-set the tone generator. * * @param tone_gen Tone generator to reset. * @param freq Frequency in Hz, 0 = silence. * @param duration Duration in milliseconds. 0 to stop. */ void tone_reset( struct tone_gen_t* const tone_gen, uint16_t freq, uint16_t duration); /*! * Retrieve the next sample from the tone generator. * @param tone_gen Tone generator to update. */ int16_t tone_next( struct tone_gen_t* const tone_gen); /*! * Retrieve the current time in milliseconds. */ uint32_t tone_msec(const struct tone_gen_t* const tone_gen); #endif codec2-1.2.0/stm32/inc/tot.h000066400000000000000000000050461445607075400153720ustar00rootroot00000000000000#ifndef _TOT_H #define _TOT_H /*! * Time-out timer. * * This is a simple time-out timer for ensuring a maximum transmission * time is observed. The time-out timer is configured with a total time * in "ticks", which get counted down in an interrupt. * * When the "warning" level is reached, a flag is repeatedly set permit * triggering of LEDs/sounds to warn the user that time is nearly up. * * Upon timeout, a separate flag is set to indicate timeout has taken * place. * * Author Stuart Longland * Copyright (C) 2015 FreeDV project. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 2.1, * as published by the Free Software Foundation. This program is * distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, see * . */ #include /*! * Time-out timer state machine */ struct tot_t { /*! * Number of ticks remaining, if non-zero, transmission is * in progress. */ uint32_t remaining; /*! * Number of ticks remaining, before next warning. */ uint32_t warn_remain; /*! * Timeout timer tick period. Used to reset the ticks counter. */ uint32_t tick_period; /*! * Number of ticks between the remaining warnings. */ uint16_t remain_warn_ticks; /*! * Event tick timer. Used to slow down the source timer. */ uint16_t ticks; /*! * Event flags. */ uint16_t event; }; /*! * Time-out timer has been started. */ #define TOT_EVT_START (1 << 0) /*! * Start of warning period reached. */ #define TOT_EVT_WARN (1 << 1) /*! * Next warning is due. */ #define TOT_EVT_WARN_NEXT (1 << 2) /*! * Time-out reached. */ #define TOT_EVT_TIMEOUT (1 << 3) /*! * Timer sequence complete */ #define TOT_EVT_DONE (1 << 4) /*! * Reset the time-out timer. This zeroes the counter and event flags. */ void tot_reset(struct tot_t * const tot); /*! * Start the time-out timer ticking. */ void tot_start(struct tot_t * const tot, uint32_t tot_ticks, uint16_t warn_ticks); /*! * Count a time-out timer tick. */ static inline void tot_tick(struct tot_t * const tot) { if (tot->ticks) tot->ticks--; } /*! * Update the time-out timer state. */ void tot_update(struct tot_t * const tot); #endif codec2-1.2.0/stm32/src/000077500000000000000000000000001445607075400144245ustar00rootroot00000000000000codec2-1.2.0/stm32/src/adc_rec_usb.c000066400000000000000000000045161445607075400170270ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: adc_rec_usb.c AUTHOR......: David Rowe DATE CREATED: Nov 2015 Records a 16 kHz sample rate raw file from one of the ADC channels, which are connected to pins PA1 (ADC1) and PA2 (ADC2). Uploads to the host PC via the STM32F4 USB port, which appears as /dev/ttyACM0. On the SM1000: ADC1 -> PA1 -> "from radio" ADC2 -> PA2 -> "mic amp" I used this to record: $ sudo dd if=/dev/ttyACM0 of=test.raw count=100 \*---------------------------------------------------------------------------*/ /* Copyright (C) 2015 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include "stm32f4_adc.h" #include "stm32f4_usb_vcp.h" #include "sm1000_leds_switches.h" #define N (ADC_BUF_SZ*6) /* test tone parameters */ #define FREQ 999.0 /* make sure no alignment with frame boundaries */ #define FS 16000.0 #define AMP 10000.0 extern int adc_overflow1; extern int adc_overflow2; int main(void){ short buf[N]; #ifdef TEST_TONE float phase = 0.0; float sam; int i; #endif usb_vcp_init(); adc_open(ADC_FS_96KHZ, 4*N, NULL, NULL); sm1000_leds_switches_init(); /* set up test buffer, lets us test USB comms indep of ADC, record to a file then play back/examine waveform to make sure no clicks */ while(1) { while(adc1_read(buf, N) == -1); #ifdef TEST_TONE for(i=0; i. */ #include #include "stm32f4_dac.h" #define SINE_SAMPLES 32 /* 32 sample sine wave which at Fs=16kHz will be 500Hz. Note samples are 16 bit 2's complement, the DAC driver convertsto 12 bit unsigned. */ short aSine[] = { -16, 6384, 12528, 18192, 23200, 27232, 30256, 32128, 32752, 32128, 30256, 27232, 23152, 18192, 12528, 6384, -16, -6416, -12560, -18224, -23184, -27264, -30288, -32160, -32768, -32160, -30288, -27264, -23184, -18224, -12560, -6416 }; int main(void) { dac_open(DAC_FS_16KHZ, 4*DAC_BUF_SZ, 0, 0); while (1) { /* keep DAC FIFOs topped up */ dac1_write((short*)aSine, SINE_SAMPLES, 0); dac2_write((short*)aSine, SINE_SAMPLES, 0); } } codec2-1.2.0/stm32/src/debugblinky.c000066400000000000000000000035111445607075400170670ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: debugblinky.c AUTHOR......: David Rowe DATE CREATED: 12 August 2014 Configures GPIO pins used for debug blinkies \*---------------------------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "stm32f4xx.h" void init_debug_blinky(void) { GPIO_InitTypeDef GPIO_InitStruct; /* PE0-3 used to indicate activity, PE4-5 for SM2000 +12V rail switching */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE); GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOE, &GPIO_InitStruct); } /* SM2000: 0 for +12V RX power, 1 for +12V TX power */ void txrx_12V(int state) { if (state) { GPIOE->ODR &= ~(1 << 5); /* +12VRXENB off */ GPIOE->ODR |= (1 << 4); /* +12VTXENB on */ } else { GPIOE->ODR &= ~(1 << 4); /* +12VTXENB off */ GPIOE->ODR |= (1 << 5); /* +12VRXENB on */ } } codec2-1.2.0/stm32/src/memtools.c000066400000000000000000000032161445607075400164310ustar00rootroot00000000000000/* memtools.h June 2019 Tools for looking at memory on the stm32. See also debug_alloc.h */ #include #include #include #include "memtools.h" /* Required memory allocation wrapper for embedded platforms. For SM1000, we can just use stdlib's memory functions. */ void* codec2_malloc(size_t size) { return malloc(size); } void* codec2_calloc(size_t nmemb, size_t size) { return calloc(nmemb, size); } void codec2_free(void* ptr) { free(ptr); } /* startup_stm32f4xx.s has been modified to fill RAM segment from bss up with 0x0x55555555 */ void memtools_find_unused( int (*printf_func)(const char *fmt, ...) ) { int32_t *p, *start; int found = 0; (*printf_func)("chunks of RAM segment > 256 bytes containing start up pattern:\n"); /* count down from top of memory through stack, empty memory, then to heap */ for (p =(int32_t*)0x20000000; p<(int32_t*)0x20020000; p++) { if (found == 0) { if (*p == 0x55555555) { start = p; found = 1; } } if (found == 1) { if (*p != 0x55555555) { found = 0; int bytes = (void*)p - (void*)start; if (bytes >= 0x100) (*printf_func)(" start: 0x%x end: 0x%x bytes: %d\n", (int) start, (int)p, bytes); } } } } void memtools_isnan(float *vec, int n, char *label, int (*printf_func)(const char *fmt, ...)) { int count = 0; for(int i=0; i * Copyright (C) 2015 FreeDV project. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 2.1, * as published by the Free Software Foundation. This program is * distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, see * . */ #include "menu.h" #include /*! * Return the Nth item on the stack. */ static const struct menu_stack_item_t* const menu_stack( const struct menu_t* const menu, uint8_t index) { if (menu->stack_depth <= index) return NULL; return &(menu->stack[menu->stack_depth - index - 1]); } /*! * Return the Nth item on the stack. */ const struct menu_item_t* const menu_item( const struct menu_t* const menu, uint8_t index) { const struct menu_stack_item_t* const current = menu_stack(menu, index); if (!current) return NULL; return current->item; } /*! * Enter a (sub)-menu. */ int menu_enter(struct menu_t* const menu, const struct menu_item_t* const item) { if (menu->stack_depth == MENU_STACK_SZ) return -1; menu->stack[menu->stack_depth].item = item; menu->stack[menu->stack_depth].index = menu->current; menu->stack_depth++; (item->event_cb)(menu, MENU_EVT_ENTERED); return 0; } /*! * Return from a (sub)-menu. */ void menu_leave(struct menu_t* const menu) { if (!menu->stack_depth) return; /* Already out of the menu */ menu->last = menu_item(menu, 0); menu->stack_depth--; const struct menu_stack_item_t* current = menu_stack(menu, 0); if (current && current->item) { menu->current = current->index; (current->item->event_cb)(menu, MENU_EVT_RETURNED); } } /*! * Execute the callback for the current item with a user-supplied event. */ void menu_exec(struct menu_t* const menu, uint32_t event) { const struct menu_item_t* item = menu_item(menu, 0); if (item && item->event_cb) (item->event_cb)(menu, event); } codec2-1.2.0/stm32/src/morse.c000066400000000000000000000114431445607075400157200ustar00rootroot00000000000000/*! * Morse code library. * * This implements a state machine for playing back morse code messages. * * Author Stuart Longland * Copyright (C) 2015 FreeDV project. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 2.1, * as published by the Free Software Foundation. This program is * distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, see * . */ #include #include "morse.h" #include /*! Symbol table element definition */ struct morse_sym_table_t { uint8_t code; uint8_t len; }; /*! Symbol table: "digits" */ static const struct morse_sym_table_t morse_digits[] = { { .code = 0xf8, .len = 5 }, /* 0: ----- */ { .code = 0x78, .len = 5 }, /* 1: .---- */ { .code = 0x38, .len = 5 }, /* 2: ..--- */ { .code = 0x18, .len = 5 }, /* 3: ...-- */ { .code = 0x08, .len = 5 }, /* 4: ....- */ { .code = 0x00, .len = 5 }, /* 5: ..... */ { .code = 0x80, .len = 5 }, /* 6: -.... */ { .code = 0xc0, .len = 5 }, /* 7: --... */ { .code = 0xe0, .len = 5 }, /* 8: ---.. */ { .code = 0xf0, .len = 5 }, /* 9: ----. */ }; /*! Symbol table: "letters" */ static const struct morse_sym_table_t morse_letters[] = { { .code = 0x40, .len = 2 }, /* A: .- */ { .code = 0x80, .len = 4 }, /* B: -... */ { .code = 0xa0, .len = 4 }, /* C: -.-. */ { .code = 0x80, .len = 3 }, /* D: -.. */ { .code = 0x00, .len = 1 }, /* E: . */ { .code = 0x20, .len = 4 }, /* F: ..-. */ { .code = 0xc0, .len = 3 }, /* G: --. */ { .code = 0x00, .len = 4 }, /* H: .... */ { .code = 0x00, .len = 2 }, /* I: .. */ { .code = 0x70, .len = 4 }, /* J: .--- */ { .code = 0xa0, .len = 3 }, /* K: -.- */ { .code = 0x40, .len = 4 }, /* L: .-.. */ { .code = 0xc0, .len = 2 }, /* M: -- */ { .code = 0x80, .len = 2 }, /* N: -. */ { .code = 0xe0, .len = 3 }, /* O: --- */ { .code = 0x60, .len = 4 }, /* P: .--. */ { .code = 0xd0, .len = 4 }, /* Q: --.- */ { .code = 0x40, .len = 3 }, /* R: .-. */ { .code = 0x00, .len = 3 }, /* S: ... */ { .code = 0x80, .len = 1 }, /* T: - */ { .code = 0x20, .len = 3 }, /* U: ..- */ { .code = 0x10, .len = 4 }, /* V: ...- */ { .code = 0x60, .len = 3 }, /* W: .-- */ { .code = 0x90, .len = 4 }, /* X: -..- */ { .code = 0xb0, .len = 4 }, /* Y: -.-- */ { .code = 0xc0, .len = 4 }, /* Z: --.. */ }; static void morse_next_sym(struct morse_player_t* const morse_player) { struct sfx_player_t* sfx_player = &(morse_player->sfx_player); if (!morse_player->msg) { sfx_play(sfx_player, NULL); return; } uint8_t sym_rem = 0; uint8_t sym_code = 0; const struct morse_sym_table_t* sym = NULL; const char* c = morse_player->msg; while(!sym) { if ((*c >= 'A') && (*c <= 'Z')) /* Play a letter. (capitals) */ sym = &morse_letters[*c - 'A']; else if ((*c >= 'a') && (*c <= 'z')) /* Play a letter. (lowercase) */ sym = &morse_letters[*c - 'a']; else if ((*c >= '0') && (*c <= '9')) /* Play a digit. */ sym = &morse_digits[*c - '0']; else if (*c == 0) { morse_player->msg = NULL; return; } c++; } morse_player->msg = c; struct sfx_note_t* note = morse_player->sym; sym_rem = sym->len; sym_code = sym->code; while(sym_rem) { note->freq = morse_player->freq; if (sym_code & 0x80) /* Play a "dah" */ note->duration = morse_player->dit_time*3; else /* Play a "dit" */ note->duration = morse_player->dit_time; note++; sym_code <<= 1; sym_rem--; /* A gap follows */ note->freq = 0; if (sym_rem) { /* More of the character */ note->duration = morse_player->dit_time; note++; } } /* What comes next? */ if (*c == ' ') { /* End of word */ note->duration = morse_player->dit_time*7; note++; } else if (*c) { /* End of character */ note->duration = morse_player->dit_time*3; note++; } /* Terminate the sequence */ note->freq = 0; note->duration = 0; /* Set the player up */ sfx_play(sfx_player, morse_player->sym); } /*! * Start playing a particular effect. * @param sfx_player Effect player state machine * @param effect Pointer to sound effect (NULL == stop) */ void morse_play(struct morse_player_t* const morse_player, const char* msg) { morse_player->msg = msg; morse_next_sym(morse_player); } /*! * Retrieve the next sample to be played. */ int16_t morse_next(struct morse_player_t* const morse_player) { if (!morse_player) return(0); if (!morse_player->sfx_player.note) morse_next_sym(morse_player); return sfx_next(&(morse_player->sfx_player)); } codec2-1.2.0/stm32/src/sfx.c000066400000000000000000000035231445607075400153730ustar00rootroot00000000000000/*! * Sound effect player library. * * This implements a state machine for playing back various monophonic * sound effects such as morse code symbols, clicks and alert tones. * * Author Stuart Longland * Copyright (C) 2015 FreeDV project. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 2.1, * as published by the Free Software Foundation. This program is * distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, see * . */ #include #include "sfx.h" static void sfx_next_tone(struct sfx_player_t* const sfx_player) { struct tone_gen_t* tone_gen = &(sfx_player->tone_gen); const struct sfx_note_t* note = sfx_player->note; if (!note) { tone_reset(tone_gen, 0, 0); } else { tone_reset(tone_gen, note->freq, note->duration); if (!note->duration) /* We are done */ sfx_player->note = NULL; else /* Move to next note */ sfx_player->note++; } } /*! * Start playing a particular effect. * @param sfx_player Effect player state machine * @param effect Pointer to sound effect (NULL == stop) */ void sfx_play(struct sfx_player_t* const sfx_player, const struct sfx_note_t* effect) { sfx_player->note = effect; sfx_next_tone(sfx_player); } /*! * Retrieve the next sample to be played. */ int16_t sfx_next(struct sfx_player_t* const sfx_player) { if (!sfx_player) return(0); if (!sfx_player->tone_gen.remain) sfx_next_tone(sfx_player); return tone_next(&(sfx_player->tone_gen)); } codec2-1.2.0/stm32/src/sm1000_leds_switches.c000066400000000000000000000135771445607075400204450ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: sm1000_leds_switches.c AUTHOR......: David Rowe DATE CREATED: 18 July 2014 Functions for controlling LEDs and reading switches on the SM1000. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #define _CPTT GPIO_Pin_10 #define LED_PWR GPIO_Pin_12 #define LED_PTT GPIO_Pin_13 #define LED_RT GPIO_Pin_14 #define LED_ERR GPIO_Pin_15 #define SWITCH_PTT GPIO_Pin_7 #define SWITCH_SELECT GPIO_Pin_0 #define SWITCH_BACK GPIO_Pin_1 #define EXT_PTT GPIO_Pin_8 #include #include #include "sm1000_leds_switches.h" void sm1000_leds_switches_init(void) { GPIO_InitTypeDef GPIO_InitStruct; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); /* output pins */ GPIO_InitStruct.GPIO_Pin = LED_PWR | LED_PTT | LED_RT | LED_ERR | _CPTT; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOD, &GPIO_InitStruct); /* input pins */ GPIO_InitStruct.GPIO_Pin = SWITCH_PTT | SWITCH_SELECT | SWITCH_BACK; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; /* we have our own external pull ups */ GPIO_Init(GPIOD, &GPIO_InitStruct); GPIO_InitStruct.GPIO_Pin = EXT_PTT; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; /* use internal pull up */ GPIO_Init(GPIOD, &GPIO_InitStruct); } void led_pwr(int state) { if (state > 0) GPIOD->ODR |= (1 << 12); else if (state < 0) GPIOD->ODR ^= (1 << 12); else GPIOD->ODR &= ~(1 << 12); } void led_ptt(int state) { if (state > 0) GPIOD->ODR |= (1 << 13); else if (state < 0) GPIOD->ODR |= (1 << 13); else GPIOD->ODR &= ~(1 << 13); } void led_rt(int state) { if (state > 0) GPIOD->ODR |= (1 << 14); else if (state < 0) GPIOD->ODR ^= (1 << 14); else GPIOD->ODR &= ~(1 << 14); } void led_err(int state) { if (state > 0) GPIOD->ODR |= (1 << 15); else if (state < 0) GPIOD->ODR ^= (1 << 15); else GPIOD->ODR &= ~(1 << 15); } void not_cptt(int state) { if (state) GPIOD->ODR |= (1 << 10); else GPIOD->ODR &= ~(1 << 10); } int switch_ptt(void) { return GPIOD->IDR & (1 << 7); } int switch_select(void) { return GPIOD->IDR & (1 << 0); } int switch_back(void) { return GPIOD->IDR & (1 << 1); } int ext_ptt(void) { return GPIOD->IDR & (1 << 8); } /* FUNCTION: ColorfulRingOfDeath() AUTHOR..: xenovacivus Colourful ring of death, blink LEDs like crazy forever if something really nasty happens. Adapted from USB Virtual COM Port (VCP) module adapted from code I found here: https://github.com/xenovacivus/STM32DiscoveryVCP Call this to indicate a failure. Blinks the STM32F4 discovery LEDs in sequence. At 168Mhz, the blinking will be very fast - about 5 Hz. Keep that in mind when debugging, knowing the clock speed might help with debugging. */ int mycode; /* examine this with debugger if it dies */ void ColorfulRingOfDeath(int code) { mycode = code; uint16_t ring = 1; while (1) { uint32_t count = 0; while (count++ < 5000000); GPIOD->BSRRH = (ring << 12); ring = ring << 1; if (ring >= 1<<4) { ring = 1; } GPIOD->BSRRL = (ring << 12); } } void HardFault_Handler(void) { ColorfulRingOfDeath(1); } void MemManage_Handler(void) { ColorfulRingOfDeath(2); } void BusFault_Handler(void) { ColorfulRingOfDeath(3); } void UsageFault_Handler(void){ ColorfulRingOfDeath(4); } void switch_tick(struct switch_t* const sw) { if (sw->sw != sw->raw) { /* State transition, reset timer */ if (sw->state == SW_STEADY) sw->last = sw->sw; sw->state = SW_DEBOUNCE; sw->timer = DEBOUNCE_DELAY; sw->sw = sw->raw; } else if (sw->state == SW_DEBOUNCE) { if (sw->timer > 0) { /* Steady so far, keep waiting */ sw->timer--; } else { /* Steady state reached */ sw->state = SW_STEADY; } } else if (sw->sw) { /* Hold state. Yes this will wrap, but who cares? */ sw->timer++; } } void switch_update(struct switch_t* const sw, uint8_t state) { sw->raw = state; if (sw->raw == sw->sw) return; if (sw->state == SW_STEADY) sw->last = sw->sw; sw->timer = DEBOUNCE_DELAY; sw->sw = sw->raw; sw->state = SW_DEBOUNCE; } uint32_t switch_pressed(const struct switch_t* const sw) { if ((sw->state == SW_STEADY) && sw->sw) return sw->timer; return 0; } int switch_released(const struct switch_t* const sw) { if (sw->state != SW_STEADY) return 0; if (!sw->last) return 0; if (sw->sw) return 0; return 1; } void switch_ack(struct switch_t* const sw) { if (sw->state == SW_STEADY) sw->last = sw->sw; } codec2-1.2.0/stm32/src/sm1000_leds_switches_ut.c000066400000000000000000000023171445607075400211430ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: sm1000_leds_switches_ut.c AUTHOR......: David Rowe DATE CREATED: August 5 2014 Unit Test program for the SM1000 switches and LEDs driver. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include "sm1000_leds_switches.h" int main(void) { sm1000_leds_switches_init(); while(1) { led_pwr(switch_select()); led_ptt(switch_ptt()); led_rt(switch_back()); led_err(!switch_back()); } } codec2-1.2.0/stm32/src/sm1000_main.c000066400000000000000000001421121445607075400165150ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: sm1000_main.c AUTHOR......: David Rowe DATE CREATED: August 5 2014 Main program for SM1000. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "stm32f4_adc.h" #include "stm32f4_dac.h" #include "stm32f4_vrom.h" #include "stm32f4_usart.h" #include "freedv_api.h" #include "codec2_fdmdv.h" #include "sm1000_leds_switches.h" #include "memtools.h" #include #include #include #include #include #include #include "sfx.h" #include "sounds.h" #include "morse.h" #include "menu.h" #include "tot.h" #define VERSION "V5" #define FORTY_MS_16K (0.04*16000) /* 40ms of samples at 16 kHz */ #define FREEDV_NSAMPLES_16K (2*FREEDV_NSAMPLES) #define CCM (void*)0x10000000 /* start of 64k CCM memory */ #define CCM_LEN 0x10000 /* start of 64k CCM memory */ #define MENU_LED_PERIOD 100 #define ANNOUNCE_DELAY 1500 #define HOLD_DELAY 1000 #define MENU_DELAY 1000 #define STATE_RX 0x00 /*!< Receive state: normal operation */ #define STATE_TX 0x10 /*!< Transmit state: normal operation */ #define STATE_RX_TOT 0x01 /*!< Receive state: after time-out */ #define STATE_MENU 0x20 /*!< Menu state: normal operation */ /*! * State machine states. We consider our state depending on what events * are in effect at the start of the main() loop. For buttons, we have * the following events: * * PRESS: Short-succession down-and-up event. (<1 second) * DOWN: Button press event with no release. * UP: Button release event. * HOLD: Button press for a minimum duration of 1 second without * release. * * We also have some other state machines: * TOT: * IDLE: No time-out event * WARN: Warning period reached event * WARN_TICK: Next warning tick due event * TIMEOUT: Cease transmit event * * We consider ourselves to be in one of a few finite states: * * STATE_RX: Normal receive state. * Conditions: !PTT.DOWN, !SELECT.HOLD * * We receive samples via the TRX ADC and pass those * to SPEAKER DAC after demodulation/filtering. * * On SELECT.HOLD: go to STATE_MENU * On SELECT.PRESS: next mode, stay in STATE_RX * On BACK.PRESS: prev mode, stay in STATE_RX * On PTT.DOWN: reset TOT, go to STATE_TX * * STATE_TX: Normal transmit state. * Conditions: PTT.DOWN, !TOT.TIMEOUT * * We receive samples via the MIC ADC and pass those * to TRX DAC after modulation/filtering. * * On PTT.UP: reset TOT, go to STATE_RX * On TOT.WARN_TICK: play tick noise, * reset WARN_TICK event, * stay in STATE_TX * On TOT.TIMEOUT: play timeout tune, * reset TIMEOUT event * go to STATE_RX_TOT. * * STATE_RX_TOT: Receive after time-out state. * Conditions: PTT.DOWN * * We receive samples via the TRX ADC and pass those * to SPEAKER DAC after demodulation/filtering. * * On PTT.UP: reset TOT, go to STATE_RX * * STATE_MENU: Menu operation state. Operation is dictated by * the menu state machine, when we exit that state * machine, we return to STATE_RX. * * On SELECT.HOLD: select the current menu entry, * if it is a submenu then make that the current level * On SELECT.PRESS: next entry in the current menu level * On BACK.PRESS: prev mode in the current menu level * On BACK.HOLD: go up to the previous menu * save any changes to NV memory * This may exit the menu system * On PTT.DOWN: Exit menu system, do not save to NVM * * See the "Menu data" section of this file for the menu structure * */ uint8_t core_state = STATE_RX; #define MAX_MODES 4 #define ANALOG 0 #define DV1600 1 #define DV700D 2 #define DV700E 3 struct switch_t sw_select; /*!< Switch driver for SELECT button */ struct switch_t sw_back; /*!< Switch driver for BACK button */ struct switch_t sw_ptt; /*!< Switch driver for PTT buttons */ struct tot_t tot; /*!< Time-out timer */ unsigned int announceTicker = 0; unsigned int menuLEDTicker = 0; unsigned int menuTicker = 0; unsigned int menuExit = 0; uint32_t ms = 0; /* increments once per ms */ /*! * User preferences */ static struct prefs_t { /*! Serial number */ uint64_t serial; /*! Time-out timer period, in seconds increment */ uint16_t tot_period; /*! Time-out timer warning period, in seconds increment */ uint16_t tot_warn_period; /*! Menu frequency */ uint16_t menu_freq; /*! Menu speed */ uint8_t menu_speed; /*! Menu volume (attenuation) */ uint8_t menu_vol; /*! Default operating mode */ uint8_t op_mode; } prefs; /*! Preferences changed flag */ int prefs_changed = 0; /*! Number of preference images kept */ #define PREFS_IMG_NUM (2) /*! Base ROM ID for preferences */ #define PREFS_IMG_BASE (0) /*! Minimum serial number */ #define PREFS_SERIAL_MIN 8 /*! Maximum serial number */ #define PREFS_SERIAL_MAX UINT64_MAX /*! Preference serial numbers, by slot */ static uint64_t prefs_serial[PREFS_IMG_NUM]; struct tone_gen_t tone_gen; struct sfx_player_t sfx_player; struct morse_player_t morse_player; void SysTick_Handler(void); /*! Menu item root */ static const struct menu_item_t menu_root; #define MENU_EVT_NEXT 0x10 /*!< Increment the current item */ #define MENU_EVT_PREV 0x11 /*!< Decrement the current item */ #define MENU_EVT_SELECT 0x20 /*!< Select current item */ #define MENU_EVT_BACK 0x21 /*!< Go back one level */ #define MENU_EVT_EXIT 0x30 /*!< Exit menu */ /*! * Software-mix two 16-bit samples. */ int16_t software_mix(int16_t a, int16_t b) { int32_t s = a + b; if (s < INT16_MIN) return INT16_MIN; /* Clip! */ if (s > INT16_MAX) return INT16_MAX; /* Clip! */ return s; } /*! Compare current serial with oldest and newest */ void compare_prefs(int* const oldest, int* const newest, int idx) { if (newest && prefs_serial[idx]) { if ((*newest < 0) || (prefs_serial[idx] > prefs_serial[*newest]) || ((prefs_serial[idx] == PREFS_SERIAL_MIN) && (prefs_serial[*newest] == PREFS_SERIAL_MAX))) *newest = idx; } if (oldest) { if ((*oldest < 0) || (!prefs_serial[idx]) || (prefs_serial[idx] < prefs_serial[*oldest]) || ((prefs_serial[idx] == PREFS_SERIAL_MAX) && (prefs_serial[*oldest] == PREFS_SERIAL_MIN))) *oldest = idx; } } /*! Find oldest and newest images */ void find_prefs(int* const oldest, int* const newest) { int i; if (newest) *newest = -1; if (oldest) *oldest = -1; for (i = 0; i < PREFS_IMG_NUM; i++) compare_prefs(oldest, newest, i); } /*! Load preferences from flash */ int load_prefs() { struct prefs_t image[PREFS_IMG_NUM]; int newest = -1; int i; /* Load all copies into RAM */ for (i = 0; i < PREFS_IMG_NUM; i++) { int res = vrom_read(PREFS_IMG_BASE + i, 0, sizeof(image[i]), &image[i]); if (res == sizeof(image[i])) { prefs_serial[i] = image[i].serial; compare_prefs(NULL, &newest, i); } else { prefs_serial[i] = 0; } } if (newest < 0) /* No newest image was found */ return -ENOENT; /* Load from the latest image */ memcpy(&prefs, &image[newest], sizeof(prefs)); return 0; } void print_prefs(struct prefs_t *prefs) { usart_printf("serial: %d\n", (int)prefs->serial); usart_printf("tot_period: %d\n", (int)prefs->tot_period); usart_printf("tot_warn_period: %d\n", (int)prefs->tot_warn_period); usart_printf("menu_freq: %d\n", (int)prefs->menu_freq); usart_printf("menu_speed: %d\n", (int)prefs->menu_speed); usart_printf("menu_vol: %d\n", (int)prefs->menu_vol); usart_printf("op_mode: %d\n", (int)prefs->op_mode); usart_printf("prefs_changed: %d\n", prefs_changed); } struct freedv *set_freedv_mode(int op_mode, int *n_samples) { struct freedv *f = NULL; switch(op_mode) { case ANALOG: usart_printf("Analog\n"); *n_samples = FORTY_MS_16K/4; f = NULL; break; case DV1600: usart_printf("FreeDV 1600\n"); f = freedv_open(FREEDV_MODE_1600); assert(f != NULL); *n_samples = freedv_get_n_speech_samples(f); break; case DV700D: usart_printf("FreeDV 700D\n"); f = freedv_open(FREEDV_MODE_700D); assert(f != NULL); freedv_set_snr_squelch_thresh(f, -2.0); /* squelch at -2.0 dB */ freedv_set_squelch_en(f, 1); freedv_set_eq(f, 1); /* equaliser on by default */ /* Clipping and TXBPF nice to have for 700D. */ freedv_set_clip(f, 1); freedv_set_tx_bpf(f, 1); *n_samples = freedv_get_n_speech_samples(f); break; case DV700E: usart_printf("FreeDV 700E\n"); f = freedv_open(FREEDV_MODE_700E); assert(f != NULL); freedv_set_snr_squelch_thresh(f, 0.0); /* squelch at 0.0 dB */ freedv_set_squelch_en(f, 1); freedv_set_eq(f, 1); /* equaliser on by default */ /* Clipping and TXBPF needed for 700E. */ freedv_set_clip(f, 1); freedv_set_tx_bpf(f, 1); *n_samples = freedv_get_n_speech_samples(f); break; } return f; } int process_core_state_machine(int core_state, struct menu_t *menu, int *op_mode); int main(void) { struct freedv *f; int nin, nout, i; int n_samples, n_samples_16k; usart_init(); usart_printf("SM1000 VERSION: %s\n", VERSION); usart_printf("SM1000 main()... stack 0x%x (%d)\n", &n_samples_16k, (uint32_t)0x2001ffff - (uint32_t)&n_samples_16k); memtools_find_unused(usart_printf); /* Menu data */ struct menu_t menu; /* Outgoing sample counter */ int spk_nsamples = 0; /* Current runtime operation mode */ int op_mode = ANALOG; /* init all the drivers for various peripherals */ SysTick_Config(SystemCoreClock/1000); /* 1 kHz SysTick */ sm1000_leds_switches_init(); /* Enable CRC clock */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE); /* Briefly open FreeDV 700D to determine buffer sizes we need (700D has the largest buffers) */ f = freedv_open(FREEDV_MODE_700D); int n_speech_samples = freedv_get_n_speech_samples(f); int n_speech_samples_16k = 2*n_speech_samples; int n_modem_samples = freedv_get_n_max_modem_samples(f); int n_modem_samples_16k = 2*n_modem_samples; freedv_close(f); f = NULL; usart_printf("n_speech_samples: %d n_modem_samples: %d\n", n_speech_samples, n_modem_samples); /* both speech and modem buffers will be about the same size, but choose the largest and add a little extra padding */ if (n_speech_samples_16k > n_modem_samples_16k) n_samples_16k = n_speech_samples_16k; else n_samples_16k = n_modem_samples_16k; n_samples_16k += FORTY_MS_16K; usart_printf("n_samples_16k: %d storage for 4 FIFOs: %d bytes\n", n_samples_16k, 4*2*n_samples_16k); /* Set up ADCs/DACs and their FIFOs, note storage is in CCM memory */ short *pccm = CCM; usart_printf("pccm before dac/adc open: %p\n", pccm); n_samples = n_samples_16k/2; dac_open(DAC_FS_16KHZ, n_samples_16k, pccm, pccm+n_samples_16k); pccm += 2*n_samples_16k; adc_open(ADC_FS_16KHZ, n_samples_16k, pccm, pccm+n_samples_16k); pccm += 2*n_samples_16k; usart_printf("pccm after dac/adc open: %p\n", pccm); assert((void*)pccm < CCM+CCM_LEN); short *adc16k = pccm; pccm += FDMDV_OS_TAPS_16K+n_samples_16k; short *dac16k = pccm; pccm += n_samples_16k; short adc8k[n_samples]; short dac8k[FDMDV_OS_TAPS_8K+n_samples]; usart_printf("pccm after buffers: %p\n", pccm); assert((void*)pccm < CCM+CCM_LEN); /* clear buffers */ for(i=0; i n_samples_16k) dac_rem = n_samples_16k; for (i = 0; i < dac_rem; i++) dac16k[i] = tone_next(&tone_gen); dac2_write(dac16k, dac_rem, 0); } if (!menuLEDTicker) { menuLEDTicker = MENU_LED_PERIOD; led_rt(LED_INV); } } /* Button released, do an EEPROM erase */ for (i = 0; i < PREFS_IMG_NUM; i++) vrom_erase(i + PREFS_IMG_BASE); } led_rt(LED_OFF); tone_reset(&tone_gen, 0, 0); tot_reset(&tot); usart_printf("loading preferences from flash....\n"); /* Try to load preferences from flash */ if (load_prefs() < 0) { usart_printf("loading default preferences....\n"); /* Fail! Load defaults. */ memset(&prefs, 0, sizeof(prefs)); prefs.op_mode = ANALOG; prefs.menu_vol = 2; prefs.menu_speed = 60; /* 20 WPM */ prefs.menu_freq = 800; prefs.tot_period = 0; /* Disable time-out timer */ prefs.tot_warn_period = 15; } print_prefs(&prefs); /* Set up time-out timer, 100msec ticks */ tot.tick_period = 100; tot.remain_warn_ticks = 10; /* Clear out switch states */ memset(&sw_select, 0, sizeof(sw_select)); memset(&sw_back, 0, sizeof(sw_back)); memset(&sw_ptt, 0, sizeof(sw_ptt)); /* Clear out menu state */ memset(&menu, 0, sizeof(menu)); morse_player.freq = prefs.menu_freq; morse_player.dit_time = prefs.menu_speed; morse_player.msg = NULL; op_mode = prefs.op_mode; /* default op-mode */ f = set_freedv_mode(op_mode, &n_samples); n_samples_16k = 2*n_samples; /* play VERSION and op mode at start-up. Morse player can't queue so we assemble a concatenated string here */ char startup_announcement[16]; if (op_mode == ANALOG) snprintf(startup_announcement, 16, VERSION " ANA"); else if (op_mode == DV1600) snprintf(startup_announcement, 16, VERSION " 1600"); else if (op_mode == DV700D) snprintf(startup_announcement, 16, VERSION " 700D"); else if (op_mode == DV700E) snprintf(startup_announcement, 16, VERSION " 700E"); morse_play(&morse_player, startup_announcement); usart_printf("entering main loop...\n"); uint32_t lastms = ms; while(1) { /* Read switch states */ switch_update(&sw_select, (!switch_select()) ? 1 : 0); switch_update(&sw_back, (!switch_back()) ? 1 : 0); switch_update(&sw_ptt, (switch_ptt() || (!ext_ptt())) ? 1 : 0); /* Update time-out timer state */ tot_update(&tot); /* iterate core state machine based on switch events */ int prev_op_mode = op_mode; int prev_core_state = core_state; core_state = process_core_state_machine(core_state, &menu, &op_mode); /* Acknowledge switch events */ switch_ack(&sw_select); switch_ack(&sw_back); switch_ack(&sw_ptt); /* if mode has changed, re-open freedv */ if (op_mode != prev_op_mode) { usart_printf("Mode change prev_op_mode: %d op_mode: %d\n", prev_op_mode, op_mode); if (f) { freedv_close(f); } f = NULL; f = set_freedv_mode(op_mode, &n_samples); n_samples_16k = 2*n_samples; usart_printf("FreeDV f = 0x%x n_samples: %d n_samples_16k: %d\n", (int)f, n_samples, n_samples_16k); /* clear buffers */ for(i=0; iODR = (1 << 3); /* clipping indicator */ led_err(0); for (i=0; i 28000) led_err(1); } fdmdv_16_to_8_short(adc8k, &adc16k[FDMDV_OS_TAPS_16K], n_samples); if (op_mode == ANALOG) { for(i=0; iODR &= ~(1 << 3); } break; case STATE_RX: case STATE_RX_TOT: /* Receive --------------------------------------------------------------------------*/ not_cptt(1); led_ptt(0); /* ADC1 is the demod in signal from the radio rx, DAC2 is the SM1000 speaker */ if (op_mode == ANALOG) { if (ms > lastms+5000) { usart_printf("Analog\n"); lastms = ms; } if (adc1_read(&adc16k[FDMDV_OS_TAPS_16K], n_samples_16k) == 0) { fdmdv_16_to_8_short(adc8k, &adc16k[FDMDV_OS_TAPS_16K], n_samples); for(i=0; i lastms+5000) { usart_printf("Digital Voice\n"); lastms = ms; } /* 1600 or 700D/E DV mode */ nin = freedv_nin(f); nout = nin; freedv_set_total_bit_errors(f, 0); if (adc1_read(&adc16k[FDMDV_OS_TAPS_16K], 2*nin) == 0) { GPIOE->ODR = (1 << 3); fdmdv_16_to_8_short(adc8k, &adc16k[FDMDV_OS_TAPS_16K], nin); nout = freedv_rx(f, &dac8k[FDMDV_OS_TAPS_8K], adc8k); fdmdv_8_to_16_short(dac16k, &dac8k[FDMDV_OS_TAPS_8K], nout); spk_nsamples = 2*nout; led_rt(freedv_get_sync(f)); led_err(freedv_get_total_bit_errors(f)); GPIOE->ODR &= ~(1 << 3); } } break; default: break; } /* Write audio to speaker output */ if (spk_nsamples || sfx_player.note || morse_player.msg) { /* Make a note of our playback position */ int16_t* play_ptr = dac16k; if (!spk_nsamples) spk_nsamples = dac2_free(); /* * There is audio to play on the external speaker. If there * is a sound or announcement, software-mix it into the outgoing * buffer. */ if (sfx_player.note) { int i; if (menu.stack_depth) { /* Exclusive */ for (i = 0; i < spk_nsamples; i++) dac16k[i] = sfx_next(&sfx_player) >> prefs.menu_vol; } else { /* Software mix */ for (i = 0; i < spk_nsamples; i++) dac16k[i] = software_mix(dac16k[i], sfx_next(&sfx_player) >> prefs.menu_vol); } if (!sfx_player.note && morse_player.msg) announceTicker = ANNOUNCE_DELAY; } else if (!announceTicker && morse_player.msg) { int i; if (menu.stack_depth) { for (i = 0; i < spk_nsamples; i++) dac16k[i] = morse_next(&morse_player) >> prefs.menu_vol; } else { for (i = 0; i < spk_nsamples; i++) dac16k[i] = software_mix(dac16k[i], morse_next(&morse_player) >> prefs.menu_vol); } } while (spk_nsamples) { /* Get the number of samples to be played this time around */ int n_rem = dac2_free(); if (spk_nsamples < n_rem) n_rem = spk_nsamples; /* Play the audio */ dac2_write(play_ptr, n_rem, 0); spk_nsamples -= n_rem; play_ptr += n_rem; } /* Clear out buffer */ memset(dac16k, 0, n_samples_16k*sizeof(short)); } } /* while(1) ... */ } /* * SysTick Interrupt Handler */ void SysTick_Handler(void) { ms++; switch_tick(&sw_select); switch_tick(&sw_back); switch_tick(&sw_ptt); if (menuTicker > 0) { menuTicker--; } if (menuLEDTicker > 0) { menuLEDTicker--; } if (announceTicker > 0) { announceTicker--; } tot_tick(&tot); } int process_core_state_machine(int core_state, struct menu_t *menu, int *op_mode) { /* State machine updates */ switch(core_state) { case STATE_RX: { uint8_t mode_changed = 0; if (!menuTicker) { if (menuExit) { /* We've just exited a menu, wait for release of BACK */ if (switch_released(&sw_back)) menuExit = 0; } else if (switch_pressed(&sw_ptt)) { /* Cancel any announcement if scheduled */ if (announceTicker && morse_player.msg) { announceTicker = 0; morse_play(&morse_player, NULL); } /* Start time-out timer if enabled */ if (prefs.tot_period) tot_start(&tot, prefs.tot_period*10, prefs.tot_warn_period*10); /* Enter transmit state */ core_state = STATE_TX; } else if (switch_pressed(&sw_select) > HOLD_DELAY) { /* Enter the menu */ led_pwr(1); led_ptt(0); led_rt(0); led_err(0); not_cptt(1); menu_enter(menu, &menu_root); menuTicker = MENU_DELAY; core_state = STATE_MENU; prefs_changed = 0; usart_printf("Entering menu ...\n"); print_prefs(&prefs); } else if (switch_released(&sw_select)) { /* Shortcut: change current mode */ *op_mode = (*op_mode + 1) % MAX_MODES; mode_changed = 1; } else if (switch_released(&sw_back)) { /* Shortcut: change current mode */ *op_mode = *op_mode - 1; if (*op_mode < 0) { // Loop back around to the end of the mode list if we reach 0. *op_mode = MAX_MODES - 1; } mode_changed = 1; } if (mode_changed) { /* Announce the new mode */ if (*op_mode == ANALOG) morse_play(&morse_player, "ANA"); else if (*op_mode == DV1600) morse_play(&morse_player, "1600"); else if (*op_mode == DV700D) morse_play(&morse_player, "700D"); else if (*op_mode == DV700E) morse_play(&morse_player, "700E"); sfx_play(&sfx_player, sound_click); } } } break; case STATE_TX: { if (!switch_pressed(&sw_ptt)) { /* PTT released, leave transmit mode */ tot_reset(&tot); core_state = STATE_RX; } else if (tot.event & TOT_EVT_TIMEOUT) { /* Time-out reached */ sfx_play(&sfx_player, sound_death_march); tot.event &= ~TOT_EVT_TIMEOUT; core_state = STATE_RX_TOT; } else if (tot.event & TOT_EVT_WARN_NEXT) { /* Re-set warning flag */ tot.event &= ~TOT_EVT_WARN_NEXT; /* Schedule a click tone */ sfx_play(&sfx_player, sound_click); } } break; case STATE_RX_TOT: if (switch_released(&sw_ptt)) { /* PTT released, leave transmit mode */ tot_reset(&tot); core_state = STATE_RX; } break; case STATE_MENU: if (!menuTicker) { /* We are in a menu */ static uint8_t press_ack = 0; uint8_t save_settings = 0; if (press_ack == 1) { if ((sw_select.state == SW_STEADY) && (!sw_select.sw)) press_ack = 0; } else if (press_ack == 2) { if ((sw_back.state == SW_STEADY) && (!sw_back.sw)) press_ack = 0; } else { if (switch_pressed(&sw_select) > HOLD_DELAY) { menu_exec(menu, MENU_EVT_SELECT); press_ack = 1; menuTicker = MENU_DELAY; } else if (switch_pressed(&sw_back) > HOLD_DELAY) { menu_exec(menu, MENU_EVT_BACK); press_ack = 2; menuTicker = MENU_DELAY; usart_printf("Leaving menu ... stack_depth: %d \n", menu->stack_depth); print_prefs(&prefs); if (!menu->stack_depth) save_settings = prefs_changed; } else if (switch_released(&sw_select)) { menu_exec(menu, MENU_EVT_NEXT); menuTicker = MENU_DELAY; } else if (switch_released(&sw_back)) { menu_exec(menu, MENU_EVT_PREV); menuTicker = MENU_DELAY; } else if (switch_released(&sw_ptt)) { while(menu->stack_depth > 0) menu_exec(menu, MENU_EVT_EXIT); sfx_play(&sfx_player, sound_returned); } /* If exited, put the LED back */ if (!menu->stack_depth) { menuLEDTicker = 0; menuTicker = 0; led_pwr(LED_ON); morse_play(&morse_player, NULL); menuExit = 1; if (save_settings) { int oldest = -1; int res; /* Copy the morse settings in */ prefs.menu_freq = morse_player.freq; prefs.menu_speed = morse_player.dit_time; /* make sure we have same op mode as power on prefs */ *op_mode = prefs.op_mode; /* Increment serial number */ prefs.serial++; /* Find the oldest image */ find_prefs(&oldest, NULL); if (oldest < 0) oldest = 0; /* No current image */ /* Write new settings over it */ usart_printf("vrom_write\n"); res = vrom_write(oldest + PREFS_IMG_BASE, 0, sizeof(prefs), &prefs); if (res >= 0) prefs_serial[oldest] = prefs.serial; } /* Go back to receive state */ core_state = STATE_RX; } } } break; default: break; } return core_state; } /* ---------------------------- Menu data --------------------------- * * MENU - * |- "MODE" Select operating mode * | |- "ANA" - Analog * | |- "DV1600" - FreeDV 1600 * | |- "DV700D" - FreeDV 700D * | |- "DV700E" - FreeDV 700E * | * |- "TOT" Timer Out Timer options * | |- "TIME" - Set timeout time (a sub menu) * | | |- - SELECT.PRESS add 5 sec * | | |- - BACK.PRESS subtracts 5 sec * | | * | |- "WARN" - Set warning time (a sub menu) * | | |- - SELECT.PRESS add 5 sec * | | |- - BACK.PRESS subtracts 5 sec * | * |- "UI" UI (morse code announcements) parameters * | |- "FREQ" - Set tone * | | |- - SELECT.PRESS add 50 Hz * | | |- - BACK.PRESS subtracts 50 Hz * | | * | |- "WPMQ" - Set speed * | | |- - SELECT.PRESS add 5 WPM * | | |- - BACK.PRESS subtracts 5 WPM * | | * | |- "VOL" - Set volume * | | |- - SELECT.PRESS -> quieter * | | |- - BACK.PRESS -> louder */ /*! * Default handler for menu callback. */ static void menu_default_cb(struct menu_t* const menu, uint32_t event) { /* Get the current menu item */ const struct menu_item_t* item = menu_item(menu, 0); uint8_t announce = 0; switch(event) { case MENU_EVT_ENTERED: sfx_play(&sfx_player, sound_startup); /* Choose first item */ menu->current = 0; case MENU_EVT_RETURNED: announce = 1; break; case MENU_EVT_NEXT: sfx_play(&sfx_player, sound_click); menu->current = (menu->current + 1) % item->num_children; announce = 1; break; case MENU_EVT_PREV: sfx_play(&sfx_player, sound_click); if (menu->current == 0) { menu->current = item->num_children - 1; } else { menu->current = menu->current - 1; } announce = 1; break; case MENU_EVT_SELECT: /* Enter the sub-menu */ menu_enter(menu, item->children[menu->current]); break; case MENU_EVT_BACK: /* Exit the menu */ sfx_play(&sfx_player, sound_returned); case MENU_EVT_EXIT: menu_leave(menu); break; default: break; } if (announce) { /* Announce the label of the selected child */ morse_play(&morse_player, item->children[menu->current]->label); } } /* Root menu item forward declarations */ static const struct menu_item_t* menu_root_children[]; /* Root item definition */ static const struct menu_item_t menu_root = { .label = "MENU", .event_cb = menu_default_cb, .children = menu_root_children, .num_children = 3, }; /* Child declarations */ static const struct menu_item_t menu_op_mode; static const struct menu_item_t menu_tot; static const struct menu_item_t menu_ui; static const struct menu_item_t * menu_root_children[] = { &menu_op_mode, &menu_tot, &menu_ui, }; /* Operation Mode menu forward declarations */ static void menu_op_mode_cb(struct menu_t* const menu, uint32_t event); static struct menu_item_t const* menu_op_mode_children[]; /* Operation mode menu */ static const struct menu_item_t menu_op_mode = { .label = "MODE", .event_cb = menu_op_mode_cb, .children = menu_op_mode_children, .num_children = 4, }; /* Children */ static const struct menu_item_t menu_op_mode_analog = { .label = "ANA", .event_cb = NULL, .children = NULL, .num_children = 0, .data = { .ui = ANALOG, }, }; static const struct menu_item_t menu_op_mode_dv1600 = { .label = "1600", .event_cb = NULL, .children = NULL, .num_children = 0, .data = { .ui = DV1600, }, }; static const struct menu_item_t menu_op_mode_dv700D = { .label = "700D", .event_cb = NULL, .children = NULL, .num_children = 0, .data = { .ui = DV700D, }, }; static const struct menu_item_t menu_op_mode_dv700E = { .label = "700E", .event_cb = NULL, .children = NULL, .num_children = 0, .data = { .ui = DV700E, }, }; static struct menu_item_t const* menu_op_mode_children[] = { &menu_op_mode_analog, &menu_op_mode_dv1600, &menu_op_mode_dv700D, &menu_op_mode_dv700E, }; /* Callback function */ static void menu_op_mode_cb(struct menu_t* const menu, uint32_t event) { const struct menu_item_t* item = menu_item(menu, 0); uint8_t announce = 0; switch(event) { case MENU_EVT_ENTERED: sfx_play(&sfx_player, sound_startup); /* Choose current item */ switch(prefs.op_mode) { case DV1600: menu->current = 1; break; case DV700D: menu->current = 2; break; case DV700E: menu->current = 3; break; default: menu->current = 0; } case MENU_EVT_RETURNED: /* Shouldn't happen, but we handle it anyway */ announce = 1; break; case MENU_EVT_NEXT: sfx_play(&sfx_player, sound_click); menu->current = (menu->current + 1) % item->num_children; announce = 1; break; case MENU_EVT_PREV: sfx_play(&sfx_player, sound_click); if (menu->current == 0) { menu->current = item->num_children - 1; } else { menu->current = menu->current - 1; } announce = 1; break; case MENU_EVT_SELECT: /* Choose the selected mode */ prefs.op_mode = item->children[menu->current]->data.ui; /* Play the "selected" tune and return. */ sfx_play(&sfx_player, sound_startup); prefs_changed = 1; menu_leave(menu); break; case MENU_EVT_BACK: /* Exit the menu */ sfx_play(&sfx_player, sound_returned); case MENU_EVT_EXIT: menu_leave(menu); break; default: break; } if (announce) { /* Announce the label of the selected child */ morse_play(&morse_player, item->children[menu->current]->label); } } /* Time-out timer menu forward declarations */ static struct menu_item_t const* menu_tot_children[]; /* Operation mode menu */ static const struct menu_item_t menu_tot = { .label = "TOT", .event_cb = menu_default_cb, .children = menu_tot_children, .num_children = 2, }; /* Children */ static const struct menu_item_t menu_tot_time; static const struct menu_item_t menu_tot_warn; static struct menu_item_t const* menu_tot_children[] = { &menu_tot_time, &menu_tot_warn, }; /* TOT time menu forward declarations */ static void menu_tot_time_cb(struct menu_t* const menu, uint32_t event); /* TOT time menu */ static const struct menu_item_t menu_tot_time = { .label = "TIME", .event_cb = menu_tot_time_cb, .children = NULL, .num_children = 0, }; /* Callback function */ static void menu_tot_time_cb(struct menu_t* const menu, uint32_t event) { uint8_t announce = 0; switch(event) { case MENU_EVT_ENTERED: sfx_play(&sfx_player, sound_startup); /* Get the current period */ menu->current = prefs.tot_period; case MENU_EVT_RETURNED: /* Shouldn't happen, but we handle it anyway */ announce = 1; break; case MENU_EVT_NEXT: sfx_play(&sfx_player, sound_click); /* Adjust the frequency up by 50 Hz */ if (prefs.tot_period < 600) prefs.tot_period += 5; announce = 1; break; case MENU_EVT_PREV: sfx_play(&sfx_player, sound_click); if (prefs.tot_period > 0) prefs.tot_period -= 5; announce = 1; break; case MENU_EVT_SELECT: /* Play the "selected" tune and return. */ sfx_play(&sfx_player, sound_startup); prefs_changed = 1; menu_leave(menu); break; case MENU_EVT_BACK: /* Restore the mode and exit the menu */ sfx_play(&sfx_player, sound_returned); case MENU_EVT_EXIT: prefs.tot_period = menu->current; menu_leave(menu); break; default: break; } if (announce) { /* Render the text, thankfully we don't need re-entrancy */ static char period[6]; snprintf(period, 6, "%d", prefs.tot_period); /* Announce the period */ morse_play(&morse_player, period); } }; /* TOT warning time menu forward declarations */ static void menu_tot_warn_cb(struct menu_t* const menu, uint32_t event); /* TOT warning time menu */ static const struct menu_item_t menu_tot_warn = { .label = "WARN", .event_cb = menu_tot_warn_cb, .children = NULL, .num_children = 0, }; /* Callback function */ static void menu_tot_warn_cb(struct menu_t* const menu, uint32_t event) { uint8_t announce = 0; switch(event) { case MENU_EVT_ENTERED: sfx_play(&sfx_player, sound_startup); /* Get the current period */ if (prefs.tot_warn_period < prefs.tot_period) menu->current = prefs.tot_warn_period; else menu->current = prefs.tot_period; case MENU_EVT_RETURNED: /* Shouldn't happen, but we handle it anyway */ announce = 1; break; case MENU_EVT_NEXT: sfx_play(&sfx_player, sound_click); /* Adjust the frequency up by 50 Hz */ if (prefs.tot_warn_period < prefs.tot_period) prefs.tot_warn_period += 5; announce = 1; break; case MENU_EVT_PREV: sfx_play(&sfx_player, sound_click); if (prefs.tot_warn_period > 0) prefs.tot_warn_period -= 5; announce = 1; break; case MENU_EVT_SELECT: /* Play the "selected" tune and return. */ sfx_play(&sfx_player, sound_startup); prefs_changed = 1; menu_leave(menu); break; case MENU_EVT_BACK: /* Restore the mode and exit the menu */ sfx_play(&sfx_player, sound_returned); case MENU_EVT_EXIT: prefs.tot_warn_period = menu->current; menu_leave(menu); break; default: break; } if (announce) { /* Render the text, thankfully we don't need re-entrancy */ static char period[6]; snprintf(period, 6, "%d", prefs.tot_warn_period); /* Announce the period */ morse_play(&morse_player, period); } }; /* UI menu forward declarations */ static struct menu_item_t const* menu_ui_children[]; /* Operation mode menu */ static const struct menu_item_t menu_ui = { .label = "UI", .event_cb = menu_default_cb, .children = menu_ui_children, .num_children = 3, }; /* Children */ static const struct menu_item_t menu_ui_freq; static const struct menu_item_t menu_ui_speed; static const struct menu_item_t menu_ui_vol; static struct menu_item_t const* menu_ui_children[] = { &menu_ui_freq, &menu_ui_speed, &menu_ui_vol, }; /* UI Frequency menu forward declarations */ static void menu_ui_freq_cb(struct menu_t* const menu, uint32_t event); /* UI Frequency menu */ static const struct menu_item_t menu_ui_freq = { .label = "FREQ", .event_cb = menu_ui_freq_cb, .children = NULL, .num_children = 0, }; /* Callback function */ static void menu_ui_freq_cb(struct menu_t* const menu, uint32_t event) { uint8_t announce = 0; switch(event) { case MENU_EVT_ENTERED: sfx_play(&sfx_player, sound_startup); /* Get the current frequency */ menu->current = morse_player.freq; case MENU_EVT_RETURNED: /* Shouldn't happen, but we handle it anyway */ announce = 1; break; case MENU_EVT_NEXT: sfx_play(&sfx_player, sound_click); /* Adjust the frequency up by 50 Hz */ if (morse_player.freq < 2000) morse_player.freq += 50; announce = 1; break; case MENU_EVT_PREV: sfx_play(&sfx_player, sound_click); if (morse_player.freq > 50) morse_player.freq -= 50; announce = 1; break; case MENU_EVT_SELECT: /* Play the "selected" tune and return. */ sfx_play(&sfx_player, sound_startup); prefs_changed = 1; menu_leave(menu); break; case MENU_EVT_BACK: /* Restore the mode and exit the menu */ sfx_play(&sfx_player, sound_returned); case MENU_EVT_EXIT: morse_player.freq = menu->current; menu_leave(menu); break; default: break; } if (announce) { /* Render the text, thankfully we don't need re-entrancy */ static char freq[6]; snprintf(freq, 6, "%d", morse_player.freq); /* Announce the frequency */ morse_play(&morse_player, freq); } }; /* UI Speed menu forward declarations */ static void menu_ui_speed_cb(struct menu_t* const menu, uint32_t event); /* UI Speed menu */ static const struct menu_item_t menu_ui_speed = { .label = "WPM", .event_cb = menu_ui_speed_cb, .children = NULL, .num_children = 0, }; /* Callback function */ static void menu_ui_speed_cb(struct menu_t* const menu, uint32_t event) { uint8_t announce = 0; /* Get the current WPM */ uint16_t curr_wpm = 1200 / morse_player.dit_time; switch(event) { case MENU_EVT_ENTERED: sfx_play(&sfx_player, sound_startup); /* Get the current frequency */ menu->current = morse_player.dit_time; case MENU_EVT_RETURNED: /* Shouldn't happen, but we handle it anyway */ announce = 1; break; case MENU_EVT_NEXT: sfx_play(&sfx_player, sound_click); /* Increment WPM by 5 */ if (curr_wpm < 60) curr_wpm += 5; announce = 1; break; case MENU_EVT_PREV: sfx_play(&sfx_player, sound_click); if (curr_wpm > 5) curr_wpm -= 5; announce = 1; break; case MENU_EVT_SELECT: /* Play the "selected" tune and return. */ sfx_play(&sfx_player, sound_startup); prefs_changed = 1; menu_leave(menu); break; case MENU_EVT_BACK: /* Restore the mode and exit the menu */ sfx_play(&sfx_player, sound_returned); case MENU_EVT_EXIT: morse_player.dit_time = menu->current; menu_leave(menu); break; default: break; } if (announce) { /* Render the text, thankfully we don't need re-entrancy */ static char wpm[5]; snprintf(wpm, 5, "%d", curr_wpm); /* Set the new parameter */ morse_player.dit_time = 1200 / curr_wpm; /* Announce the words per minute */ morse_play(&morse_player, wpm); } }; /* UI volume menu forward declarations */ static void menu_ui_vol_cb(struct menu_t* const menu, uint32_t event); /* UI volume menu */ static const struct menu_item_t menu_ui_vol = { .label = "VOL", .event_cb = menu_ui_vol_cb, .children = NULL, .num_children = 0, }; /* Callback function */ static void menu_ui_vol_cb(struct menu_t* const menu, uint32_t event) { uint8_t announce = 0; switch(event) { case MENU_EVT_ENTERED: sfx_play(&sfx_player, sound_startup); /* Get the current volume */ menu->current = prefs.menu_vol; case MENU_EVT_RETURNED: /* Shouldn't happen, but we handle it anyway */ announce = 1; break; case MENU_EVT_NEXT: sfx_play(&sfx_player, sound_click); if (prefs.menu_vol > 0) prefs.menu_vol--; announce = 1; break; case MENU_EVT_PREV: sfx_play(&sfx_player, sound_click); if (prefs.menu_vol < 14) prefs.menu_vol++; announce = 1; break; case MENU_EVT_SELECT: /* Play the "selected" tune and return. */ sfx_play(&sfx_player, sound_startup); menu_leave(menu); prefs_changed = 1; break; case MENU_EVT_BACK: /* Restore the mode and exit the menu */ sfx_play(&sfx_player, sound_returned); case MENU_EVT_EXIT: prefs.menu_vol = menu->current; menu_leave(menu); break; default: break; } if (announce) { /* Render the text, thankfully we don't need re-entrancy */ static char vol[5]; snprintf(vol, 5, "%d", 15 - prefs.menu_vol); /* Announce the volume level */ morse_play(&morse_player, vol); } }; codec2-1.2.0/stm32/src/sounds.c000066400000000000000000000035411445607075400161060ustar00rootroot00000000000000/*! * Sound effect library. * * This provides some sound effects for the SM1000 UI. * * Author Stuart Longland * Copyright (C) 2015 FreeDV project. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 2.1, * as published by the Free Software Foundation. This program is * distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, see * . */ #include "sounds.h" const struct sfx_note_t sound_startup[] = { {.freq = 600, .duration = 80}, {.freq = 800, .duration = 80}, {.freq = 1000, .duration = 80}, {.freq = 0, .duration = 0} }; const struct sfx_note_t sound_returned[] = { {.freq = 1000, .duration = 80}, {.freq = 800, .duration = 80}, {.freq = 600, .duration = 80}, {.freq = 0, .duration = 0} }; const struct sfx_note_t sound_click[] = { {.freq = 1200, .duration = 10}, {.freq = 0, .duration = 0} }; const struct sfx_note_t sound_death_march[] = { {.freq = 340, .duration = 400}, {.freq = 0, .duration = 80}, {.freq = 340, .duration = 400}, {.freq = 0, .duration = 80}, {.freq = 340, .duration = 400}, {.freq = 0, .duration = 80}, {.freq = 420, .duration = 400}, {.freq = 0, .duration = 80}, {.freq = 400, .duration = 300}, {.freq = 0, .duration = 80}, {.freq = 340, .duration = 120}, {.freq = 0, .duration = 80}, {.freq = 340, .duration = 120}, {.freq = 0, .duration = 80}, {.freq = 300, .duration = 200}, {.freq = 0, .duration = 80}, {.freq = 340, .duration = 400}, {.freq = 0, .duration = 0}, }; codec2-1.2.0/stm32/src/startup_stm32f4xx.s000066400000000000000000000464371445607075400201720ustar00rootroot00000000000000/** ****************************************************************************** * @file startup_stm32f4xx.s * @author MCD Application Team * @version V1.0.0 * @date 30-September-2011 * @brief STM32F4xx Devices vector table for Atollic TrueSTUDIO toolchain. * This module performs: * - Set the initial SP * - Set the initial PC == Reset_Handler, * - Set the vector table entries with the exceptions ISR address * - Configure the clock system and the external SRAM mounted on * STM324xG-EVAL board to be used as data memory (optional, * to be enabled by user) * - Branches to main in the C library (which eventually * calls main()). * After Reset the Cortex-M4 processor is in Thread mode, * priority is Privileged, and the Stack is set to Main. ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ .syntax unified .cpu cortex-m3 .fpu softvfp .thumb .global g_pfnVectors .global Default_Handler .global EndofMain /* start address for the initialization values of the .data section. defined in linker script */ .word _sidata /* start address for the .data section. defined in linker script */ .word _sdata /* end address for the .data section. defined in linker script */ .word _edata /* start address for the .bss section. defined in linker script */ .word _sbss /* end address for the .bss section. defined in linker script */ .word _ebss /* stack used for SystemInit_ExtMemCtl; always internal RAM used */ /** * @brief This is the code that gets called when the processor first * starts execution following a reset event. Only the absolutely * necessary set is performed, after which the application * supplied main() routine is called. * @param None * @retval : None */ .section .text.Reset_Handler .weak Reset_Handler .type Reset_Handler, %function Reset_Handler: /* Copy the data segment initializers from flash to SRAM */ movs r1, #0 b LoopCopyDataInit CopyDataInit: ldr r3, =_sidata ldr r3, [r3, r1] str r3, [r0, r1] adds r1, r1, #4 LoopCopyDataInit: ldr r0, =_sdata ldr r3, =_edata adds r2, r0, r1 cmp r2, r3 bcc CopyDataInit ldr r2, =_sbss b LoopFillZerobss /* Zero fill all memory from bss up */ FillZerobss: movs r3, #0 str r3, [r2], #4 LoopFillZerobss: ldr r3, = _ebss cmp r2, r3 bcc FillZerobss /* Zero memory from bss up with a sentinel value */ b LoopFillsentinel Fillsentinel: ldr r3, = 0x55555555 /* sentinel value we put in memory */ str r3, [r2], #4 LoopFillsentinel: ldr r3, = 0x2001fffc /* end of ram */ cmp r2, r3 bcc Fillsentinel /* Call the clock system initialization function.*/ bl SystemInit /* Call static constructors */ bl __libc_init_array /* Call the application's entry point.*/ bl main EndofMain: bl . .size Reset_Handler, .-Reset_Handler /** * @brief This is the code that gets called when the processor receives an * unexpected interrupt. This simply enters an infinite loop, preserving * the system state for examination by a debugger. * @param None * @retval None */ .section .text.Default_Handler,"ax",%progbits Default_Handler: Infinite_Loop: b Infinite_Loop .size Default_Handler, .-Default_Handler /****************************************************************************** * * The minimal vector table for a Cortex M3. Note that the proper constructs * must be placed on this to ensure that it ends up at physical address * 0x0000.0000. * *******************************************************************************/ .section .isr_vector,"a",%progbits .type g_pfnVectors, %object .size g_pfnVectors, .-g_pfnVectors g_pfnVectors: .word _estack .word Reset_Handler .word NMI_Handler .word HardFault_Handler .word MemManage_Handler .word BusFault_Handler .word UsageFault_Handler .word 0 .word 0 .word 0 .word 0 .word SVC_Handler .word DebugMon_Handler .word 0 .word PendSV_Handler .word SysTick_Handler /* External Interrupts */ .word WWDG_IRQHandler /* Window WatchDog */ .word PVD_IRQHandler /* PVD through EXTI Line detection */ .word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ .word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ .word FLASH_IRQHandler /* FLASH */ .word RCC_IRQHandler /* RCC */ .word EXTI0_IRQHandler /* EXTI Line0 */ .word EXTI1_IRQHandler /* EXTI Line1 */ .word EXTI2_IRQHandler /* EXTI Line2 */ .word EXTI3_IRQHandler /* EXTI Line3 */ .word EXTI4_IRQHandler /* EXTI Line4 */ .word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ .word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ .word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ .word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ .word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ .word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ .word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ .word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ .word CAN1_TX_IRQHandler /* CAN1 TX */ .word CAN1_RX0_IRQHandler /* CAN1 RX0 */ .word CAN1_RX1_IRQHandler /* CAN1 RX1 */ .word CAN1_SCE_IRQHandler /* CAN1 SCE */ .word EXTI9_5_IRQHandler /* External Line[9:5]s */ .word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ .word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ .word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ .word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ .word TIM2_IRQHandler /* TIM2 */ .word TIM3_IRQHandler /* TIM3 */ .word TIM4_IRQHandler /* TIM4 */ .word I2C1_EV_IRQHandler /* I2C1 Event */ .word I2C1_ER_IRQHandler /* I2C1 Error */ .word I2C2_EV_IRQHandler /* I2C2 Event */ .word I2C2_ER_IRQHandler /* I2C2 Error */ .word SPI1_IRQHandler /* SPI1 */ .word SPI2_IRQHandler /* SPI2 */ .word USART1_IRQHandler /* USART1 */ .word USART2_IRQHandler /* USART2 */ .word USART3_IRQHandler /* USART3 */ .word EXTI15_10_IRQHandler /* External Line[15:10]s */ .word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ .word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ .word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */ .word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */ .word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */ .word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ .word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ .word FSMC_IRQHandler /* FSMC */ .word SDIO_IRQHandler /* SDIO */ .word TIM5_IRQHandler /* TIM5 */ .word SPI3_IRQHandler /* SPI3 */ .word UART4_IRQHandler /* UART4 */ .word UART5_IRQHandler /* UART5 */ .word TIM6_DAC_IRQHandler /* TIM6 and DAC1&2 underrun errors */ .word TIM7_IRQHandler /* TIM7 */ .word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ .word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ .word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ .word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ .word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ .word ETH_IRQHandler /* Ethernet */ .word ETH_WKUP_IRQHandler /* Ethernet Wakeup through EXTI line */ .word CAN2_TX_IRQHandler /* CAN2 TX */ .word CAN2_RX0_IRQHandler /* CAN2 RX0 */ .word CAN2_RX1_IRQHandler /* CAN2 RX1 */ .word CAN2_SCE_IRQHandler /* CAN2 SCE */ .word OTG_FS_IRQHandler /* USB OTG FS */ .word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ .word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ .word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ .word USART6_IRQHandler /* USART6 */ .word I2C3_EV_IRQHandler /* I2C3 event */ .word I2C3_ER_IRQHandler /* I2C3 error */ .word OTG_HS_EP1_OUT_IRQHandler /* USB OTG HS End Point 1 Out */ .word OTG_HS_EP1_IN_IRQHandler /* USB OTG HS End Point 1 In */ .word OTG_HS_WKUP_IRQHandler /* USB OTG HS Wakeup through EXTI */ .word OTG_HS_IRQHandler /* USB OTG HS */ .word DCMI_IRQHandler /* DCMI */ .word CRYP_IRQHandler /* CRYP crypto */ .word HASH_RNG_IRQHandler /* Hash and Rng */ .word FPU_IRQHandler /* FPU */ /******************************************************************************* * * Provide weak aliases for each Exception handler to the Default_Handler. * As they are weak aliases, any function with the same name will override * this definition. * *******************************************************************************/ .weak NMI_Handler .thumb_set NMI_Handler,Default_Handler .weak HardFault_Handler .thumb_set HardFault_Handler,Default_Handler .weak MemManage_Handler .thumb_set MemManage_Handler,Default_Handler .weak BusFault_Handler .thumb_set BusFault_Handler,Default_Handler .weak UsageFault_Handler .thumb_set UsageFault_Handler,Default_Handler .weak SVC_Handler .thumb_set SVC_Handler,Default_Handler .weak DebugMon_Handler .thumb_set DebugMon_Handler,Default_Handler .weak PendSV_Handler .thumb_set PendSV_Handler,Default_Handler .weak SysTick_Handler .thumb_set SysTick_Handler,Default_Handler .weak WWDG_IRQHandler .thumb_set WWDG_IRQHandler,Default_Handler .weak PVD_IRQHandler .thumb_set PVD_IRQHandler,Default_Handler .weak TAMP_STAMP_IRQHandler .thumb_set TAMP_STAMP_IRQHandler,Default_Handler .weak RTC_WKUP_IRQHandler .thumb_set RTC_WKUP_IRQHandler,Default_Handler .weak FLASH_IRQHandler .thumb_set FLASH_IRQHandler,Default_Handler .weak RCC_IRQHandler .thumb_set RCC_IRQHandler,Default_Handler .weak EXTI0_IRQHandler .thumb_set EXTI0_IRQHandler,Default_Handler .weak EXTI1_IRQHandler .thumb_set EXTI1_IRQHandler,Default_Handler .weak EXTI2_IRQHandler .thumb_set EXTI2_IRQHandler,Default_Handler .weak EXTI3_IRQHandler .thumb_set EXTI3_IRQHandler,Default_Handler .weak EXTI4_IRQHandler .thumb_set EXTI4_IRQHandler,Default_Handler .weak DMA1_Stream0_IRQHandler .thumb_set DMA1_Stream0_IRQHandler,Default_Handler .weak DMA1_Stream1_IRQHandler .thumb_set DMA1_Stream1_IRQHandler,Default_Handler .weak DMA1_Stream2_IRQHandler .thumb_set DMA1_Stream2_IRQHandler,Default_Handler .weak DMA1_Stream3_IRQHandler .thumb_set DMA1_Stream3_IRQHandler,Default_Handler .weak DMA1_Stream4_IRQHandler .thumb_set DMA1_Stream4_IRQHandler,Default_Handler .weak DMA1_Stream5_IRQHandler .thumb_set DMA1_Stream5_IRQHandler,Default_Handler .weak DMA1_Stream6_IRQHandler .thumb_set DMA1_Stream6_IRQHandler,Default_Handler .weak ADC_IRQHandler .thumb_set ADC_IRQHandler,Default_Handler .weak CAN1_TX_IRQHandler .thumb_set CAN1_TX_IRQHandler,Default_Handler .weak CAN1_RX0_IRQHandler .thumb_set CAN1_RX0_IRQHandler,Default_Handler .weak CAN1_RX1_IRQHandler .thumb_set CAN1_RX1_IRQHandler,Default_Handler .weak CAN1_SCE_IRQHandler .thumb_set CAN1_SCE_IRQHandler,Default_Handler .weak EXTI9_5_IRQHandler .thumb_set EXTI9_5_IRQHandler,Default_Handler .weak TIM1_BRK_TIM9_IRQHandler .thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler .weak TIM1_UP_TIM10_IRQHandler .thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler .weak TIM1_TRG_COM_TIM11_IRQHandler .thumb_set TIM1_TRG_COM_TIM11_IRQHandler,Default_Handler .weak TIM1_CC_IRQHandler .thumb_set TIM1_CC_IRQHandler,Default_Handler .weak TIM2_IRQHandler .thumb_set TIM2_IRQHandler,Default_Handler .weak TIM3_IRQHandler .thumb_set TIM3_IRQHandler,Default_Handler .weak TIM4_IRQHandler .thumb_set TIM4_IRQHandler,Default_Handler .weak I2C1_EV_IRQHandler .thumb_set I2C1_EV_IRQHandler,Default_Handler .weak I2C1_ER_IRQHandler .thumb_set I2C1_ER_IRQHandler,Default_Handler .weak I2C2_EV_IRQHandler .thumb_set I2C2_EV_IRQHandler,Default_Handler .weak I2C2_ER_IRQHandler .thumb_set I2C2_ER_IRQHandler,Default_Handler .weak SPI1_IRQHandler .thumb_set SPI1_IRQHandler,Default_Handler .weak SPI2_IRQHandler .thumb_set SPI2_IRQHandler,Default_Handler .weak USART1_IRQHandler .thumb_set USART1_IRQHandler,Default_Handler .weak USART2_IRQHandler .thumb_set USART2_IRQHandler,Default_Handler .weak USART3_IRQHandler .thumb_set USART3_IRQHandler,Default_Handler .weak EXTI15_10_IRQHandler .thumb_set EXTI15_10_IRQHandler,Default_Handler .weak RTC_Alarm_IRQHandler .thumb_set RTC_Alarm_IRQHandler,Default_Handler .weak OTG_FS_WKUP_IRQHandler .thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler .weak TIM8_BRK_TIM12_IRQHandler .thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler .weak TIM8_UP_TIM13_IRQHandler .thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler .weak TIM8_TRG_COM_TIM14_IRQHandler .thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler .weak TIM8_CC_IRQHandler .thumb_set TIM8_CC_IRQHandler,Default_Handler .weak DMA1_Stream7_IRQHandler .thumb_set DMA1_Stream7_IRQHandler,Default_Handler .weak FSMC_IRQHandler .thumb_set FSMC_IRQHandler,Default_Handler .weak SDIO_IRQHandler .thumb_set SDIO_IRQHandler,Default_Handler .weak TIM5_IRQHandler .thumb_set TIM5_IRQHandler,Default_Handler .weak SPI3_IRQHandler .thumb_set SPI3_IRQHandler,Default_Handler .weak UART4_IRQHandler .thumb_set UART4_IRQHandler,Default_Handler .weak UART5_IRQHandler .thumb_set UART5_IRQHandler,Default_Handler .weak TIM6_DAC_IRQHandler .thumb_set TIM6_DAC_IRQHandler,Default_Handler .weak TIM7_IRQHandler .thumb_set TIM7_IRQHandler,Default_Handler .weak DMA2_Stream0_IRQHandler .thumb_set DMA2_Stream0_IRQHandler,Default_Handler .weak DMA2_Stream1_IRQHandler .thumb_set DMA2_Stream1_IRQHandler,Default_Handler .weak DMA2_Stream2_IRQHandler .thumb_set DMA2_Stream2_IRQHandler,Default_Handler .weak DMA2_Stream3_IRQHandler .thumb_set DMA2_Stream3_IRQHandler,Default_Handler .weak DMA2_Stream4_IRQHandler .thumb_set DMA2_Stream4_IRQHandler,Default_Handler .weak ETH_IRQHandler .thumb_set ETH_IRQHandler,Default_Handler .weak ETH_WKUP_IRQHandler .thumb_set ETH_WKUP_IRQHandler,Default_Handler .weak CAN2_TX_IRQHandler .thumb_set CAN2_TX_IRQHandler,Default_Handler .weak CAN2_RX0_IRQHandler .thumb_set CAN2_RX0_IRQHandler,Default_Handler .weak CAN2_RX1_IRQHandler .thumb_set CAN2_RX1_IRQHandler,Default_Handler .weak CAN2_SCE_IRQHandler .thumb_set CAN2_SCE_IRQHandler,Default_Handler .weak OTG_FS_IRQHandler .thumb_set OTG_FS_IRQHandler,Default_Handler .weak DMA2_Stream5_IRQHandler .thumb_set DMA2_Stream5_IRQHandler,Default_Handler .weak DMA2_Stream6_IRQHandler .thumb_set DMA2_Stream6_IRQHandler,Default_Handler .weak DMA2_Stream7_IRQHandler .thumb_set DMA2_Stream7_IRQHandler,Default_Handler .weak USART6_IRQHandler .thumb_set USART6_IRQHandler,Default_Handler .weak I2C3_EV_IRQHandler .thumb_set I2C3_EV_IRQHandler,Default_Handler .weak I2C3_ER_IRQHandler .thumb_set I2C3_ER_IRQHandler,Default_Handler .weak OTG_HS_EP1_OUT_IRQHandler .thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler .weak OTG_HS_EP1_IN_IRQHandler .thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler .weak OTG_HS_WKUP_IRQHandler .thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler .weak OTG_HS_IRQHandler .thumb_set OTG_HS_IRQHandler,Default_Handler .weak DCMI_IRQHandler .thumb_set DCMI_IRQHandler,Default_Handler .weak CRYP_IRQHandler .thumb_set CRYP_IRQHandler,Default_Handler .weak HASH_RNG_IRQHandler .thumb_set HASH_RNG_IRQHandler,Default_Handler .weak FPU_IRQHandler .thumb_set FPU_IRQHandler,Default_Handler /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/src/stm32f4_adc.c000066400000000000000000000212441445607075400166040ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: stm32f4_adc.c AUTHOR......: David Rowe DATE CREATED: 4 June 2013 Two channel ADC driver module for STM32F4. Pin PA1 connects to ADC1, pin PA2 connects to ADC2. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2013 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include "stm32f4xx_adc.h" #include "stm32f4xx_gpio.h" #include "stm32f4xx_rcc.h" #include "codec2_fifo.h" #include "stm32f4_adc.h" #include "debugblinky.h" struct FIFO *adc1_fifo; struct FIFO *adc2_fifo; unsigned short adc_buf[ADC_BUF_SZ]; int adc_overflow1, adc_overflow2; int half,full; #define ADCx_DR_ADDRESS ((uint32_t)0x4001204C) #define DMA_CHANNELx DMA_Channel_0 #define DMA_STREAMx DMA2_Stream0 #define ADCx ADC1 void adc_configure(); static void tim2_config(int fs_divisor); // You can optionally supply your own storage for the FIFO buffers bu1 and buf2, // or set them to NULL and they will be malloc-ed for you void adc_open(int fs_divisor, int fifo_sz, short *buf1, short *buf2) { if (buf1 == NULL) { adc1_fifo = codec2_fifo_create(fifo_sz); adc2_fifo = codec2_fifo_create(fifo_sz); } else { adc1_fifo = codec2_fifo_create_buf(fifo_sz, buf1); adc2_fifo = codec2_fifo_create_buf(fifo_sz, buf2); } tim2_config(fs_divisor); adc_configure(); init_debug_blinky(); } /* n signed 16 bit samples in buf[] if return != -1 */ int adc1_read(short buf[], int n) { return codec2_fifo_read(adc1_fifo, buf, n); } /* n signed 16 bit samples in buf[] if return != -1 */ int adc2_read(short buf[], int n) { return codec2_fifo_read(adc2_fifo, buf, n); } /* Returns number of signed 16 bit samples in the FIFO currently */ int adc1_samps(){ return codec2_fifo_used(adc1_fifo); } /* Returns number of signed 16 bit samples in the FIFO currently */ int adc2_samps(){ return codec2_fifo_used(adc2_fifo); } static void tim2_config(int fs_divisor) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; /* TIM2 Periph clock enable */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); /* -------------------------------------------------------- TIM2 input clock (TIM2CLK) is set to 2 * APB1 clock (PCLK1), since APB1 prescaler is different from 1 (see system_stm32f4xx.c and Fig 13 clock tree figure in DM0031020.pdf). Sample rate Fs = 2*PCLK1/TIM_ClockDivision = (HCLK/2)/TIM_ClockDivision ----------------------------------------------------------- */ /* Time base configuration */ TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); TIM_TimeBaseStructure.TIM_Period = fs_divisor - 1; TIM_TimeBaseStructure.TIM_Prescaler = 0; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); /* TIM2 TRGO selection */ TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update); /* TIM2 enable counter */ TIM_Cmd(TIM2, ENABLE); } void adc_configure(){ ADC_InitTypeDef ADC_init_structure; GPIO_InitTypeDef GPIO_initStructre; DMA_InitTypeDef DMA_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; // Clock configuration RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1ENR_GPIOAEN,ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE); // Analog pin configuration ADC1->PA1, ADC2->PA2 GPIO_initStructre.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2; GPIO_initStructre.GPIO_Mode = GPIO_Mode_AN; GPIO_initStructre.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA,&GPIO_initStructre); // ADC structure configuration ADC_DeInit(); ADC_init_structure.ADC_DataAlign = ADC_DataAlign_Left; ADC_init_structure.ADC_Resolution = ADC_Resolution_12b; ADC_init_structure.ADC_ContinuousConvMode = DISABLE; ADC_init_structure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T2_TRGO; ADC_init_structure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Rising; ADC_init_structure.ADC_NbrOfConversion = 2; ADC_init_structure.ADC_ScanConvMode = ENABLE; ADC_Init(ADCx,&ADC_init_structure); // Select the channel to be read from ADC_RegularChannelConfig(ADCx,ADC_Channel_1,1,ADC_SampleTime_144Cycles); ADC_RegularChannelConfig(ADCx,ADC_Channel_2,2,ADC_SampleTime_144Cycles); //ADC_VBATCmd(ENABLE); /* DMA configuration **************************************/ DMA_DeInit(DMA_STREAMx); DMA_InitStructure.DMA_Channel = DMA_CHANNELx; DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)ADCx_DR_ADDRESS; DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)adc_buf; DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory; DMA_InitStructure.DMA_BufferSize = ADC_BUF_SZ; DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; DMA_InitStructure.DMA_Priority = DMA_Priority_High; DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable; DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull; DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; DMA_Init(DMA_STREAMx, &DMA_InitStructure); /* Enable DMA request after last transfer (Single-ADC mode) */ ADC_DMARequestAfterLastTransferCmd(ADCx, ENABLE); /* Enable ADC1 DMA */ ADC_DMACmd(ADCx, ENABLE); /* DMA2_Stream0 enable */ DMA_Cmd(DMA_STREAMx, ENABLE); /* Enable DMA Half & Complete interrupts */ DMA_ITConfig(DMA2_Stream0, DMA_IT_TC | DMA_IT_HT, ENABLE); /* Enable the DMA Stream IRQ Channel */ NVIC_InitStructure.NVIC_IRQChannel = DMA2_Stream0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); // Enable and start ADC conversion ADC_Cmd(ADC1,ENABLE); ADC_SoftwareStartConv(ADC1); } /* This function handles DMA Stream interrupt request. */ void DMA2_Stream0_IRQHandler(void) { int i, j, sam; short signed_buf1[ADC_BUF_SZ/2]; short signed_buf2[ADC_BUF_SZ/2]; GPIOE->ODR |= (1 << 0); /* Half transfer interrupt */ if(DMA_GetITStatus(DMA2_Stream0, DMA_IT_HTIF0) != RESET) { half++; /* convert to signed */ for(i=0, j=0; iODR &= ~(1 << 0); } codec2-1.2.0/stm32/src/stm32f4_dac.c000066400000000000000000000330741445607075400166100ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: stm32f4_dac.c AUTHOR......: David Rowe DATE CREATED: 1 June 2013 DAC driver module for STM32F4. DAC1 is connected to pin PA4, DAC2 is connected to pin PA5. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2013 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include "stm32f4xx.h" #include "codec2_fifo.h" #include "stm32f4_dac.h" #include "debugblinky.h" /* write to these registers for 12 bit left aligned data, as per data sheet make sure 4 least sig bits set to 0 */ #define DAC_DHR12R1_ADDRESS 0x40007408 #define DAC_DHR12R2_ADDRESS 0x40007414 #define DAC_MAX 4096 /* maximum amplitude */ /* y=mx+c mapping of samples16 bit shorts to DAC samples. Table: 74 of data sheet indicates With DAC buffer on, DAC range is limited to 0x0E0 to 0xF1C at VREF+ = 3.6 V, we have Vref=3.3V which is close. */ #define M ((3868.0-224.0)/65536.0) #define C 2047.0 static struct FIFO *dac1_fifo; static struct FIFO *dac2_fifo; static unsigned short dac1_buf[DAC_BUF_SZ]; static unsigned short dac2_buf[DAC_BUF_SZ]; static void tim6_config(int fs_divisor); static void dac1_config(void); static void dac2_config(void); int dac_underflow; // You can optionally supply your own storage for the FIFO buffers bu1 and buf2, // or set them to NULL and they will be malloc-ed for you void dac_open(int fs_divisor, int fifo_size, short *buf1, short *buf2) { memset(dac1_buf, 32768, sizeof(short)*DAC_BUF_SZ); memset(dac2_buf, 32768, sizeof(short)*DAC_BUF_SZ); /* Create fifos */ if ((buf1 == NULL) && (buf2 == NULL)) { dac1_fifo = codec2_fifo_create(fifo_size); dac2_fifo = codec2_fifo_create(fifo_size); } else { dac1_fifo = codec2_fifo_create_buf(fifo_size, buf1); dac2_fifo = codec2_fifo_create_buf(fifo_size, buf2); } /* Turn on the clocks we need -----------------------------------------------*/ /* DMA1 clock enable */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE); /* GPIOA clock enable (to be used with DAC) */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); /* DAC Periph clock enable */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE); /* GPIO Pin configuration DAC1->PA.4, DAC2->PA.5 configuration --------------*/ GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, &GPIO_InitStructure); /* Timer and DAC 1 & 2 Configuration ----------------------------------------*/ tim6_config(fs_divisor); dac1_config(); dac2_config(); init_debug_blinky(); } /* Call these functions to send samples to the DACs. For your convenience they accept signed 16 bit samples. You can optionally limit how much data to store in the fifo */ int dac1_write(short buf[], int n, int limit) { /* artificial limit < FIFO size */ if (limit) { if ((codec2_fifo_used(dac1_fifo) + n) <= limit) return codec2_fifo_write(dac1_fifo, buf, n); else return -1; } /* normal operation */ return codec2_fifo_write(dac1_fifo, buf, n); } int dac2_write(short buf[], int n, int limit) { /* artificial limit < FIFO size */ if (limit) { if ((codec2_fifo_used(dac2_fifo) + n) <= limit) return codec2_fifo_write(dac2_fifo, buf, n); else return -1; } /* normal operation */ return codec2_fifo_write(dac2_fifo, buf, n); } int dac1_free() { return codec2_fifo_free(dac1_fifo); } int dac2_free() { return codec2_fifo_free(dac2_fifo); } static void tim6_config(int fs_divisor) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; /* TIM6 Periph clock enable */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE); /* -------------------------------------------------------- TIM6 input clock (TIM6CLK) is set to 2 * APB1 clock (PCLK1), since APB1 prescaler is different from 1 (see system_stm32f4xx.c and Fig 13 clock tree figure in DM0031020.pdf). Sample rate Fs = 2*PCLK1/TIM_ClockDivision = (HCLK/2)/TIM_ClockDivision ----------------------------------------------------------- */ /* Time base configuration */ TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); TIM_TimeBaseStructure.TIM_Period = fs_divisor - 1; TIM_TimeBaseStructure.TIM_Prescaler = 0; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure); /* TIM6 TRGO selection */ TIM_SelectOutputTrigger(TIM6, TIM_TRGOSource_Update); /* TIM6 enable counter */ TIM_Cmd(TIM6, ENABLE); } static void dac1_config(void) { DAC_InitTypeDef DAC_InitStructure; DMA_InitTypeDef DMA_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; /* DAC channel 1 Configuration */ /* This line fixed a bug that cost me 5 days, bad wave amplitude value, and some STM32F4 periph library bugs caused triangle wave generation to be enable resulting in a low level tone on the SM1000, that we thought was caused by analog issues like layour or power supply biasing */ DAC_StructInit(&DAC_InitStructure); DAC_InitStructure.DAC_Trigger = DAC_Trigger_T6_TRGO; DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None; DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable; DAC_Init(DAC_Channel_1, &DAC_InitStructure); /* DMA1_Stream5 channel7 configuration **************************************/ /* Table 35 page 219 of the monster data sheet */ DMA_DeInit(DMA1_Stream5); DMA_InitStructure.DMA_Channel = DMA_Channel_7; DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)DAC_DHR12R1_ADDRESS; DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)dac1_buf; DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral; DMA_InitStructure.DMA_BufferSize = DAC_BUF_SZ; DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; DMA_InitStructure.DMA_Priority = DMA_Priority_High; DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable; DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull; DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; DMA_Init(DMA1_Stream5, &DMA_InitStructure); /* Enable DMA Half & Complete interrupts */ DMA_ITConfig(DMA1_Stream5, DMA_IT_TC | DMA_IT_HT, ENABLE); /* Enable the DMA Stream IRQ Channel */ NVIC_InitStructure.NVIC_IRQChannel = DMA1_Stream5_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); /* Enable DMA1_Stream5 */ DMA_Cmd(DMA1_Stream5, ENABLE); /* Enable DAC Channel 1 */ DAC_Cmd(DAC_Channel_1, ENABLE); /* Enable DMA for DAC Channel 1 */ DAC_DMACmd(DAC_Channel_1, ENABLE); } static void dac2_config(void) { DAC_InitTypeDef DAC_InitStructure; DMA_InitTypeDef DMA_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; /* DAC channel 2 Configuration (see notes in dac1_config() above) */ DAC_StructInit(&DAC_InitStructure); DAC_InitStructure.DAC_Trigger = DAC_Trigger_T6_TRGO; DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None; DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable; DAC_Init(DAC_Channel_2, &DAC_InitStructure); /* DMA1_Stream6 channel7 configuration **************************************/ DMA_DeInit(DMA1_Stream6); DMA_InitStructure.DMA_Channel = DMA_Channel_7; DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)DAC_DHR12R2_ADDRESS; DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)dac2_buf; DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral; DMA_InitStructure.DMA_BufferSize = DAC_BUF_SZ; DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; DMA_InitStructure.DMA_Priority = DMA_Priority_High; DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable; DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull; DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; DMA_Init(DMA1_Stream6, &DMA_InitStructure); /* Enable DMA Half & Complete interrupts */ DMA_ITConfig(DMA1_Stream6, DMA_IT_TC | DMA_IT_HT, ENABLE); /* Enable the DMA Stream IRQ Channel */ NVIC_InitStructure.NVIC_IRQChannel = DMA1_Stream6_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); /* Enable DMA1_Stream6 */ DMA_Cmd(DMA1_Stream6, ENABLE); /* Enable DAC Channel 2 */ DAC_Cmd(DAC_Channel_2, ENABLE); /* Enable DMA for DAC Channel 2 */ DAC_DMACmd(DAC_Channel_2, ENABLE); } /******************************************************************************/ /* STM32F4xx Peripherals Interrupt Handlers */ /* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */ /* available peripheral interrupt handler's name please refer to the startup */ /* file (startup_stm32f40xx.s/startup_stm32f427x.s). */ /******************************************************************************/ /* This function handles DMA1 Stream 5 interrupt request for DAC1. */ void DMA1_Stream5_IRQHandler(void) { int i, j, sam; short signed_buf[DAC_BUF_SZ/2]; GPIOE->ODR |= (1 << 1); /* Transfer half empty interrupt - refill first half */ if(DMA_GetITStatus(DMA1_Stream5, DMA_IT_HTIF5) != RESET) { /* fill first half from fifo */ if (codec2_fifo_read(dac1_fifo, signed_buf, DAC_BUF_SZ/2) == -1) { memset(signed_buf, 0, sizeof(short)*DAC_BUF_SZ/2); dac_underflow++; } /* convert to unsigned */ for(i=0; iODR &= ~(1 << 1); } /* This function handles DMA1 Stream 6 interrupt request for DAC2. */ void DMA1_Stream6_IRQHandler(void) { int i, j, sam; short signed_buf[DAC_BUF_SZ/2]; GPIOE->ODR |= (1 << 2); /* Transfer half empty interrupt - refill first half */ if(DMA_GetITStatus(DMA1_Stream6, DMA_IT_HTIF6) != RESET) { /* fill first half from fifo */ if (codec2_fifo_read(dac2_fifo, signed_buf, DAC_BUF_SZ/2) == -1) { memset(signed_buf, 0, sizeof(short)*DAC_BUF_SZ/2); dac_underflow++; } /* convert to unsigned */ for(i=0; iODR &= ~(1 << 2); } codec2-1.2.0/stm32/src/stm32f4_machdep.c000066400000000000000000000046311445607075400174570ustar00rootroot00000000000000 /*---------------------------------------------------------------------------*\ FILE........: stm32f4_machdep.c AUTHOR......: David Rowe DATE CREATED: May 2 2013 STM32F4 implementation of the machine dependent timer functions, e.g. profiling using a clock cycle counter.. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2013 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include "machdep.h" #ifdef SEMIHOST_USE_STDIO #include "stdio.h" #else #include "gdb_stdio.h" #define printf gdb_stdio_printf #endif volatile unsigned int *DWT_CYCCNT = (volatile unsigned int *)0xE0001004; volatile unsigned int *DWT_CONTROL = (volatile unsigned int *)0xE0001000; volatile unsigned int *SCB_DEMCR = (volatile unsigned int *)0xE000EDFC; #define CORE_CLOCK 168E6 #define BUF_SZ 4096 static char buf[BUF_SZ]; void machdep_profile_init(void) { static int enabled = 0; if (!enabled) { *SCB_DEMCR = *SCB_DEMCR | 0x01000000; *DWT_CYCCNT = 0; // reset the counter *DWT_CONTROL = *DWT_CONTROL | 1 ; // enable the counter enabled = 1; } *buf = 0; } void machdep_profile_reset(void) { *DWT_CYCCNT = 0; // reset the counter } unsigned int machdep_profile_sample(void) { return *DWT_CYCCNT; } /* log to a buffer, we only call printf after timing finished as it is slow */ unsigned int machdep_profile_sample_and_log(unsigned int start, char s[]) { char tmp[80]; float msec; unsigned int dwt = *DWT_CYCCNT - start; msec = 1000.0*(float)dwt/CORE_CLOCK; snprintf(tmp, sizeof(tmp), "%s %5.2f msecs\n",s,(double)msec); if ((strlen(buf) + strlen(tmp)) < BUF_SZ) strncat(buf, tmp, sizeof(buf)-1); return *DWT_CYCCNT; } void machdep_profile_print_logged_samples(void) { printf("%s", buf); *buf = 0; } codec2-1.2.0/stm32/src/stm32f4_usart.c000066400000000000000000000035211445607075400172110ustar00rootroot00000000000000/* stm32f4_usart.c David Rowe May 2019 Basic USART tty support for the stm32. From: http://stm32projectconsulting.blogspot.com/2013/04/stm32f4-discovery-usart-example.html */ #include #include #include #include #include #include "stm32f4_usart.h" #define MAX_FMT_SIZE 256 void usart_init(void){ GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; /* enable peripheral clock for USART3 */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); /* GPIOB clock enable */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); /* GPIOA Configuration: USART3 TX on PB10 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ; GPIO_Init(GPIOB, &GPIO_InitStructure); /* Connect USART3 pins to AF2 */ // TX = PB10 GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_USART3); USART_InitStructure.USART_BaudRate = 115200; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Tx; USART_Init(USART3, &USART_InitStructure); USART_Cmd(USART3, ENABLE); // enable USART3 } void usart_puts(const char s[]) { for (int i=0; i * Copyright (C) 2015 FreeDV project. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 2.1, * as published by the Free Software Foundation. This program is * distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, see * . */ #include #include #include "stm32f4_vrom.h" #include "stm32f4xx_flash.h" #include "stm32f4xx_crc.h" #define VROM_SECT_SZ (16384) /*!< Size of a flash sector */ #define VROM_SECT_CNT (3) /*!< Number of sectors */ #define VROM_BLOCK_SZ (256) /*!< Size of a flash block */ /*! * Starting address for the flash area */ #define VROM_START_ADDR (0x08004000) /*! * Number of blocks we can fit per sector, including the index block. */ #define VROM_BLOCK_CNT (VROM_SECT_SZ / VROM_BLOCK_SZ) /*! * Number of application blocks we can fit per sector. */ #define VROM_SECT_APP_BLOCK_CNT (VROM_BLOCK_CNT - 1) /*! * Total number of application blocks we can fit in flash. */ #define VROM_APP_BLOCK_CNT (VROM_SECT_CNT * VROM_SECT_APP_BLOCK_CNT) /*! * Maximum number of erase cycles per sector. * Table 42 (page 109) of STM32F405 datasheet (DocID022152 Rev 5). */ #define VROM_MAX_CYCLES (10000) /*! * EEPROM block header. */ struct __attribute__ ((__packed__)) vrom_block_hdr_t { /*! * CRC32 checksum of the data, offset, size and ROM ID. * A CRC32 of 0x00000000 indicates an obsoleted block. * A CRC32 of 0xffffffff indicates an erased block. */ uint32_t crc32; /*! * ROM ID. */ uint8_t rom; /*! * Block number in the virtual EEPROM. */ uint8_t idx; /*! * Number of bytes from the virtual EEPROM stored in this block. */ uint8_t size; /*! * Reserved for future use. */ uint8_t reserved; }; /*! * The size of a block header in bytes. */ #define VROM_BLOCK_HDR_SZ (sizeof(struct vrom_block_hdr_t)) /*! * The amount of data available for application use. */ #define VROM_DATA_SZ (VROM_BLOCK_SZ - VROM_BLOCK_HDR_SZ) /*! * EEPROM data block. */ struct __attribute__ ((__packed__)) vrom_data_block_t { /*! Block header */ struct vrom_block_hdr_t header; /*! Block data */ uint8_t data[VROM_DATA_SZ]; }; /*! * The first block in a sector is the sector index block. This indicates * the used/free state of the entire block and counts the number of * erase cycles for the sector. The index block has no header. */ struct __attribute__ ((__packed__)) vrom_sector_idx_t { /*! * Number of erase cycles remaining for the sector. * 0xffffffff == unprogrammed. */ uint32_t cycles_remain; /*! * Block metadata flags. One for each data block in the sector. * Does not include the index block. */ uint16_t flags[VROM_SECT_APP_BLOCK_CNT]; }; #define VROM_SFLAGS_USED (1 << 0) /*!< Block in use */ /*! * Return the address of a virtual EEPROM sector header. */ static const struct vrom_sector_idx_t* vrom_get_sector_hdr(uint8_t sector) { return (const struct vrom_sector_idx_t*)( VROM_START_ADDR + (VROM_SECT_SZ * sector)); } /*! * Return the address of a virtual EEPROM block. */ static const struct vrom_data_block_t* vrom_get_block( uint8_t sector, uint8_t block) { return (const struct vrom_data_block_t*)( (void*)vrom_get_sector_hdr(sector) + (VROM_BLOCK_SZ * (block + 1))); } /*! * Compute the CRC32 of a block. */ static uint32_t vrom_crc32( const struct vrom_data_block_t* const block) { struct vrom_data_block_t temp_block; uint32_t size = sizeof(temp_block); const uint8_t* in = (const uint8_t*)(&temp_block); uint32_t tmp; uint32_t crc; memcpy(&temp_block, block, sizeof(temp_block)); temp_block.header.crc32 = 0; CRC_ResetDR(); while(size) { tmp = 0; if (size) { tmp |= (uint32_t)(*(in++)) << 24; size--; } if (size) { tmp |= (uint32_t)(*(in++)) << 16; size--; } if (size) { tmp |= (uint32_t)(*(in++)) << 8; size--; } if (size) { tmp |= (uint32_t)(*(in++)); size--; } crc = CRC_CalcCRC(tmp); } return crc; } /*! * Find the block storing the given index. */ static const struct vrom_data_block_t* vrom_find(uint8_t rom, uint8_t idx) { int sector, block; for (sector = 0; sector < VROM_SECT_CNT; sector++) { const struct vrom_sector_idx_t* sect_hdr = vrom_get_sector_hdr(sector); if (sect_hdr->cycles_remain == UINT32_MAX) /* unformatted */ continue; for (block = 0; block < VROM_SECT_APP_BLOCK_CNT; block++) { const struct vrom_data_block_t* block_ptr; if (sect_hdr->flags[block] == UINT16_MAX) /* unformatted */ continue; if (sect_hdr->flags[block] == 0) /* obsolete */ continue; block_ptr = vrom_get_block(sector, block); /* Verify the content */ if (vrom_crc32(block_ptr) != block_ptr->header.crc32) /* corrupt */ continue; if (block_ptr->header.rom != rom) /* different ROM */ continue; if (block_ptr->header.idx != idx) /* wrong index */ continue; return block_ptr; } } return NULL; } /*! * Get the sector number of a given address. */ static uint8_t vrom_sector_num(const void* address) { /* Get the offset from the base address */ uint32_t offset = (uint32_t)address - VROM_START_ADDR; return offset / VROM_SECT_SZ; } /*! * Get the block number of a given address. */ static uint8_t vrom_block_num(const void* address) { /* Get the sector number */ uint8_t sector = vrom_sector_num(address); /* Get the offset from the sector base */ uint32_t offset = (uint32_t)(address - (const void*)vrom_get_sector_hdr(sector)); offset /= VROM_BLOCK_SZ; return offset - 1; } /*! * (Erase and) Format a sector. * * @retval -EIO Erase failed * @retval -EPERM Erase counter depleted. */ static int vrom_format_sector(const struct vrom_sector_idx_t* sector) { uint8_t sector_num = vrom_sector_num(sector); uint32_t cycles_remain = VROM_MAX_CYCLES; if (sector->cycles_remain != UINT32_MAX) { if (sector->cycles_remain == 0) /* This sector is exhausted */ return -EPERM; /* This sector has been formatted before */ cycles_remain = sector->cycles_remain - 1; if (FLASH_EraseSector(sector_num + 1, VoltageRange_3)) /* Erase failed */ return -EIO; } /* Program the new sector cycle counter */ if (FLASH_ProgramWord((uint32_t)sector, cycles_remain) == FLASH_COMPLETE) return 0; /* All good */ /* If we get here, then programming failed */ return -EIO; } /*! * Find the next available block. */ static const struct vrom_data_block_t* vrom_find_free(uint8_t run_gc) { int sector; if (run_gc) { for (sector = 0; sector < VROM_SECT_CNT; sector++) { uint8_t block; uint8_t used = 0; const struct vrom_sector_idx_t* sect_hdr = vrom_get_sector_hdr(sector); if (sect_hdr->cycles_remain == UINT32_MAX) /* Already erased */ continue; if (sect_hdr->cycles_remain == 0) /* Depleted */ continue; for (block = 0; block < VROM_SECT_APP_BLOCK_CNT; block++) { if (sect_hdr->flags[block]) { used = 1; break; } } if (!used) { /* We can format this */ vrom_format_sector(sect_hdr); } } } for (sector = 0; sector < VROM_SECT_CNT; sector++) { uint8_t block; const struct vrom_sector_idx_t* sect_hdr = vrom_get_sector_hdr(sector); if (sect_hdr->cycles_remain == UINT32_MAX) { /* Unformatted sector. */ if (vrom_format_sector(sect_hdr)) /* Couldn't format, keep looking */ continue; } for (block = 0; block < VROM_SECT_APP_BLOCK_CNT; block++) { if (sect_hdr->flags[block] == UINT16_MAX) /* Success */ return vrom_get_block(sector, block); } } /* No blocks free, but have we done garbage collection? */ if (!run_gc) return vrom_find_free(1); /* If we get here, then we weren't able to find a free block */ return NULL; } /*! * Set flags for a block */ static int vrom_set_flags(const struct vrom_data_block_t* block, uint16_t flags) { const struct vrom_sector_idx_t* sector = vrom_get_sector_hdr(vrom_sector_num(block)); uint8_t block_num = vrom_block_num(block); /* Compute the new flags settings */ flags = sector->flags[block_num] & ~flags; /* Write them */ if (FLASH_ProgramHalfWord( (uint32_t)(&(sector->flags[block_num])), flags) != FLASH_COMPLETE) return -EIO; return 0; } /*! * Mark a block as being obsolete */ static int vrom_mark_obsolete(const struct vrom_data_block_t* block) { /* Blank out the CRC */ if (FLASH_ProgramWord((uint32_t)(&(block->header.crc32)), 0) != FLASH_COMPLETE) return -EIO; /* Blank out the ROM ID */ if (FLASH_ProgramByte((uint32_t)(&(block->header.rom)), 0) != FLASH_COMPLETE) return -EIO; /* Blank out the index */ if (FLASH_ProgramByte((uint32_t)(&(block->header.idx)), 0) != FLASH_COMPLETE) return -EIO; /* Blank out the size */ if (FLASH_ProgramByte((uint32_t)&(block->header.size), 0) != FLASH_COMPLETE) return -EIO; /* Blank out the reserved byte */ if (FLASH_ProgramByte((uint32_t)&(block->header.reserved), 0) != FLASH_COMPLETE) return -EIO; /* Blank out the flags */ return vrom_set_flags(block, -1); } /*! * Write a new block. */ static int vrom_write_block(uint8_t rom, uint8_t idx, uint8_t size, const uint8_t* in) { /* Find a new home for the block */ const struct vrom_data_block_t* block = vrom_find_free(0); struct vrom_data_block_t new_block; uint8_t* out = (uint8_t*)(block); uint32_t rem = sizeof(new_block); int res; if (!block) return -ENOSPC; /* Prepare the new block */ memset(&new_block, 0xff, sizeof(new_block)); new_block.header.rom = rom; new_block.header.idx = idx; new_block.header.size = size; memcpy(new_block.data, in, size); new_block.header.crc32 = vrom_crc32(&new_block); /* Start writing out the block */ in = (uint8_t*)(&new_block); rem = VROM_BLOCK_SZ; while(rem) { if (*out != *in) { if (FLASH_ProgramByte((uint32_t)out, *in) != FLASH_COMPLETE) /* Failed! */ return -EIO; } in++; out++; rem--; } res = vrom_set_flags(block, VROM_SFLAGS_USED); if (res < 0) return res; return size; } /*! * Re-write the given block if needed. */ static int vrom_rewrite_block(const struct vrom_data_block_t* block, uint8_t size, const uint8_t* in) { uint8_t obsolete = 0; uint8_t rom = block->header.rom; uint8_t idx = block->header.idx; const uint8_t* cmp_block = block->data; const uint8_t* cmp_in = in; uint8_t cmp_sz = size; int res; while(cmp_sz) { if (*cmp_block != *cmp_in) { obsolete = 1; break; } cmp_sz--; cmp_block++; cmp_in++; } if (!obsolete) /* The block is fine, leave it be. */ return size; /* Mark the block as obsolete */ res = vrom_mark_obsolete(block); if (res) return res; return vrom_write_block(rom, idx, size, in); } /*! * Overwrite the start of a block. */ static int vrom_overwrite_block( const struct vrom_data_block_t* block, uint8_t offset, uint8_t size, const uint8_t* in) { uint8_t data[VROM_DATA_SZ]; uint16_t block_sz = block->header.size; int res; if (!offset && (size >= block->header.size)) /* Complete overwrite */ return vrom_rewrite_block(block, size, in); if (offset) { /* Overwrite end of block, possible expansion */ block_sz = offset + size; if (block_sz > VROM_DATA_SZ) block_sz = VROM_DATA_SZ; memcpy(data, block->data, offset); memcpy(&data[offset], in, block_sz - offset); } else { /* Overwrite start of block, no size change */ memcpy(data, in, size); memcpy(&data[size], &(block->data[size]), block_sz - size); } res = vrom_rewrite_block(block, block_sz, data); if (res < 0) return res; return block_sz; } /*! * Write data to the virtual EEPROM. */ static int vrom_write_internal(uint8_t rom, uint16_t offset, uint16_t size, const uint8_t* in) { /* Figure out our starting block and offset */ uint8_t block_idx = offset / VROM_DATA_SZ; uint8_t block_offset = offset % VROM_DATA_SZ; int count = 0; /* Locate the first block */ const struct vrom_data_block_t* block = vrom_find(rom, block_idx); uint8_t block_sz = VROM_DATA_SZ; if (block_sz > (size + block_offset)) block_sz = size + block_offset; if (!block) { /* Create a new block */ uint8_t data[VROM_DATA_SZ]; int res; memset(data, 0xff, sizeof(data)); memcpy(&data[block_offset], in, block_sz-block_offset); res = vrom_write_block(rom, block_idx, block_sz, data); if (res < 0) return res; } else { /* Overwrite block */ int res = vrom_overwrite_block(block, block_offset, block_sz, in); if (res < 0) return res; count += block_sz; } block_idx++; size -= block_sz - block_offset; while(size) { /* Work out how much data to write */ if (size < VROM_DATA_SZ) block_sz = size; else block_sz = VROM_DATA_SZ; int res; /* Is there a block covering this range? */ block = vrom_find(rom, block_idx); if (block) res = vrom_overwrite_block( block, 0, block_sz, in); else res = vrom_write_block(rom, block_idx, block_sz, in); if (res < 0) return res; /* Successful write */ count += res; size -= res; in += res; offset += res; } return count; } /*! * Read data from a virtual EEPROM. * @param rom ROM ID to start reading. * @param offset Address offset into ROM to start reading. * @param size Number of bytes to read from ROM. * @param out Buffer to write ROM content to. * @returns Number of bytes read from ROM. * @retval -ENXIO ROM not found * @retval -ESPIPE Offset past end of ROM. */ int vrom_read(uint8_t rom, uint16_t offset, uint16_t size, void* out) { /* Figure out our starting block and offset */ uint8_t block_idx = offset / VROM_DATA_SZ; uint8_t block_offset = offset % VROM_DATA_SZ; uint8_t block_sz; int count = 0; uint8_t* out_ptr = (uint8_t*)out; /* Locate the first block */ const struct vrom_data_block_t* block = vrom_find(rom, block_idx); if (!block) return -ENXIO; if (block_offset >= block->header.size) return -ESPIPE; /* Copy the initial bytes */ block_sz = block->header.size - block_offset; if (block_sz > size) block_sz = size; memcpy(out_ptr, &(block->data[block_offset]), block_sz); out_ptr += block_sz; size -= block_sz; count += block_sz; if (size) { /* Look for the next block */ block = vrom_find(rom, ++block_idx); while(size && block) { if (block->header.size <= size) block_sz = block->header.size; else block_sz = size; memcpy(out_ptr, block->data, block_sz); out_ptr += block_sz; size -= block_sz; count += block_sz; block = vrom_find(rom, ++block_idx); } } return count; } /*! * Write data to a virtual EEPROM. * @param rom ROM ID to start writing. * @param offset Address offset into ROM to start writing. * @param size Number of bytes to write to ROM. * @param in Buffer to write ROM content from. * @returns Number of bytes written to ROM. * @retval -EIO Programming failed * @retval -ENOSPC No free blocks available */ int vrom_write(uint8_t rom, uint16_t offset, uint16_t size, const void* in) { int res; FLASH_Unlock(); FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR); res = vrom_write_internal(rom, offset, size, in); FLASH_Lock(); return res; } /*! * Erase a virtual EEPROM. * @param rom ROM ID to erase. * @returns Number of bytes written to ROM. * @retval -EIO Programming failed * @retval -ENOSPC No free blocks available */ int vrom_erase(uint8_t rom) { int sector, block; FLASH_Unlock(); FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR); for (sector = 0; sector < VROM_SECT_CNT; sector++) { const struct vrom_sector_idx_t* sect_hdr = vrom_get_sector_hdr(sector); if (sect_hdr->cycles_remain == UINT32_MAX) /* unformatted */ continue; for (block = 0; block < VROM_SECT_APP_BLOCK_CNT; block++) { int res; const struct vrom_data_block_t* block_ptr; if (sect_hdr->flags[block] == UINT16_MAX) /* unformatted */ continue; if (sect_hdr->flags[block] == 0) /* obsolete */ continue; block_ptr = vrom_get_block(sector, block); /* Verify the content */ if (vrom_crc32(block_ptr) != block_ptr->header.crc32) /* corrupt */ continue; if (block_ptr->header.rom != rom) /* different ROM */ continue; /* * Block is valid, for the correct ROM. Mark it * obsolete. */ res = vrom_mark_obsolete(block_ptr); if (res) return res; } } return 0; } codec2-1.2.0/stm32/src/system_stm32f4xx.c000066400000000000000000000517571445607075400177750ustar00rootroot00000000000000/** ****************************************************************************** * @file system_stm32f4xx.c * @author MCD Application Team * @version V1.0.1 * @date 10-July-2012 * @brief CMSIS Cortex-M4 Device Peripheral Access Layer System Source File. * This file contains the system clock configuration for STM32F4xx devices, * and is generated by the clock configuration tool * stm32f4xx_Clock_Configuration_V1.0.1.xls * * 1. This file provides two functions and one global variable to be called from * user application: * - SystemInit(): Setups the system clock (System clock source, PLL Multiplier * and Divider factors, AHB/APBx prescalers and Flash settings), * depending on the configuration made in the clock xls tool. * This function is called at startup just after reset and * before branch to main program. This call is made inside * the "startup_stm32f4xx.s" file. * * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used * by the user application to setup the SysTick * timer or configure other parameters. * * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must * be called whenever the core clock is changed * during program execution. * * 2. After each device reset the HSI (16 MHz) is used as system clock source. * Then SystemInit() function is called, in "startup_stm32f4xx.s" file, to * configure the system clock before to branch to main program. * * 3. If the system clock source selected by user fails to startup, the SystemInit() * function will do nothing and HSI still used as system clock source. User can * add some code to deal with this issue inside the SetSysClock() function. * * 4. The default value of HSE crystal is set to 25MHz, refer to "HSE_VALUE" define * in "stm32f4xx.h" file. When HSE is used as system clock source, directly or * through PLL, and you are using different crystal you have to adapt the HSE * value to your own configuration. * * 5. This file configures the system clock as follows: *============================================================================= *============================================================================= * Supported STM32F4xx device revision | Rev A *----------------------------------------------------------------------------- * System Clock source | PLL (HSE) *----------------------------------------------------------------------------- * SYSCLK(Hz) | 168000000 *----------------------------------------------------------------------------- * HCLK(Hz) | 168000000 *----------------------------------------------------------------------------- * AHB Prescaler | 1 *----------------------------------------------------------------------------- * APB1 Prescaler | 4 *----------------------------------------------------------------------------- * APB2 Prescaler | 2 *----------------------------------------------------------------------------- * HSE Frequency(Hz) | 8000000 *----------------------------------------------------------------------------- * PLL_M | 8 *----------------------------------------------------------------------------- * PLL_N | 336 *----------------------------------------------------------------------------- * PLL_P | 2 *----------------------------------------------------------------------------- * PLL_Q | 7 *----------------------------------------------------------------------------- * PLLI2S_N | 352 *----------------------------------------------------------------------------- * PLLI2S_R | 2 *----------------------------------------------------------------------------- * I2S input clock(Hz) | 176000000 * | * To achieve the following I2S config: | * - Master clock output (MCKO): OFF | * - Frame wide : 16bit | * - Error % : 0,0000 | * - Prescaler Odd factor (ODD): 1 | * - Linear prescaler (DIV) : 14 | *----------------------------------------------------------------------------- * VDD(V) | 3,3 *----------------------------------------------------------------------------- * Main regulator output voltage | Scale1 mode *----------------------------------------------------------------------------- * Flash Latency(WS) | 5 *----------------------------------------------------------------------------- * Prefetch Buffer | OFF *----------------------------------------------------------------------------- * Instruction cache | ON *----------------------------------------------------------------------------- * Data cache | ON *----------------------------------------------------------------------------- * Require 48MHz for USB OTG FS, | Enabled * SDIO and RNG clock | *----------------------------------------------------------------------------- *============================================================================= ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /** @addtogroup CMSIS * @{ */ /** @addtogroup stm32f4xx_system * @{ */ /** @addtogroup STM32F4xx_System_Private_Includes * @{ */ #include "stm32f4xx.h" /** * @} */ /** @addtogroup STM32F4xx_System_Private_TypesDefinitions * @{ */ /** * @} */ /** @addtogroup STM32F4xx_System_Private_Defines * @{ */ /************************* Miscellaneous Configuration ************************/ /*!< Uncomment the following line if you need to use external SRAM mounted on STM324xG_EVAL board as data memory */ /* #define DATA_IN_ExtSRAM */ /*!< Uncomment the following line if you need to relocate your vector Table in Internal SRAM. */ /* #define VECT_TAB_SRAM */ #define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field. This value must be a multiple of 0x200. */ /******************************************************************************/ /************************* PLL Parameters *************************************/ /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */ #define PLL_M 8 #define PLL_N 336 /* SYSCLK = PLL_VCO / PLL_P */ #define PLL_P 2 /* USB OTG FS, SDIO and RNG Clock = PLL_VCO / PLLQ */ #define PLL_Q 7 /* PLLI2S_VCO = (HSE_VALUE Or HSI_VALUE / PLL_M) * PLLI2S_N I2SCLK = PLLI2S_VCO / PLLI2S_R */ #define START_I2SCLOCK 0 #define PLLI2S_N 352 #define PLLI2S_R 2 /******************************************************************************/ /** * @} */ /** @addtogroup STM32F4xx_System_Private_Macros * @{ */ /** * @} */ /** @addtogroup STM32F4xx_System_Private_Variables * @{ */ uint32_t SystemCoreClock = 168000000; __I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; /** * @} */ /** @addtogroup STM32F4xx_System_Private_FunctionPrototypes * @{ */ static void SetSysClock(void); #ifdef DATA_IN_ExtSRAM static void SystemInit_ExtMemCtl(void); #endif /* DATA_IN_ExtSRAM */ /** * @} */ /** @addtogroup STM32F4xx_System_Private_Functions * @{ */ /** * @brief Setup the microcontroller system * Initialize the Embedded Flash Interface, the PLL and update the * SystemFrequency variable. * @param None * @retval None */ void SystemInit(void) { /* FPU settings ------------------------------------------------------------*/ #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ #endif /* Reset the RCC clock configuration to the default reset state ------------*/ /* Set HSION bit */ RCC->CR |= (uint32_t)0x00000001; /* Reset CFGR register */ RCC->CFGR = 0x00000000; /* Reset HSEON, CSSON and PLLON bits */ RCC->CR &= (uint32_t)0xFEF6FFFF; /* Reset PLLCFGR register */ RCC->PLLCFGR = 0x24003010; /* Reset HSEBYP bit */ RCC->CR &= (uint32_t)0xFFFBFFFF; /* Disable all interrupts */ RCC->CIR = 0x00000000; #ifdef DATA_IN_ExtSRAM SystemInit_ExtMemCtl(); #endif /* DATA_IN_ExtSRAM */ /* Configure the System clock source, PLL Multiplier and Divider factors, AHB/APBx prescalers and Flash settings ----------------------------------*/ SetSysClock(); /* Configure the Vector Table location add offset address ------------------*/ #ifdef VECT_TAB_SRAM SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ #else SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */ #endif } /** * @brief Update SystemCoreClock variable according to Clock Register Values. * The SystemCoreClock variable contains the core clock (HCLK), it can * be used by the user application to setup the SysTick timer or configure * other parameters. * * @note Each time the core clock (HCLK) changes, this function must be called * to update SystemCoreClock variable value. Otherwise, any configuration * based on this variable will be incorrect. * * @note - The system frequency computed by this function is not the real * frequency in the chip. It is calculated based on the predefined * constant and the selected clock source: * * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) * * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) * * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) * or HSI_VALUE(*) multiplied/divided by the PLL factors. * * (*) HSI_VALUE is a constant defined in stm32f4xx.h file (default value * 16 MHz) but the real value may vary depending on the variations * in voltage and temperature. * * (**) HSE_VALUE is a constant defined in stm32f4xx.h file (default value * 25 MHz), user has to ensure that HSE_VALUE is same as the real * frequency of the crystal used. Otherwise, this function may * have wrong result. * * - The result of this function could be not correct when using fractional * value for HSE crystal. * * @param None * @retval None */ void SystemCoreClockUpdate(void) { uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2; /* Get SYSCLK source -------------------------------------------------------*/ tmp = RCC->CFGR & RCC_CFGR_SWS; switch (tmp) { case 0x00: /* HSI used as system clock source */ SystemCoreClock = HSI_VALUE; break; case 0x04: /* HSE used as system clock source */ SystemCoreClock = HSE_VALUE; break; case 0x08: /* PLL used as system clock source */ /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N SYSCLK = PLL_VCO / PLL_P */ pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22; pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; if (pllsource != 0) { /* HSE used as PLL clock source */ pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); } else { /* HSI used as PLL clock source */ pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); } pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2; SystemCoreClock = pllvco/pllp; break; default: SystemCoreClock = HSI_VALUE; break; } /* Compute HCLK frequency --------------------------------------------------*/ /* Get HCLK prescaler */ tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; /* HCLK frequency */ SystemCoreClock >>= tmp; } /** * @brief Configures the System clock source, PLL Multiplier and Divider factors, * AHB/APBx prescalers and Flash settings * @Note This function should be called only once the RCC clock configuration * is reset to the default reset state (done in SystemInit() function). * @param None * @retval None */ static void SetSysClock(void) { /******************************************************************************/ /* PLL (clocked by HSE) used as System clock source */ /******************************************************************************/ __IO uint32_t StartUpCounter = 0, HSEStatus = 0; /* Enable HSE */ RCC->CR |= ((uint32_t)RCC_CR_HSEON); /* Wait till HSE is ready and if Time out is reached exit */ do { HSEStatus = RCC->CR & RCC_CR_HSERDY; StartUpCounter++; } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); if ((RCC->CR & RCC_CR_HSERDY) != RESET) { HSEStatus = (uint32_t)0x01; } else { HSEStatus = (uint32_t)0x00; } if (HSEStatus == (uint32_t)0x01) { /* Select regulator voltage output Scale 1 mode, System frequency up to 168 MHz */ RCC->APB1ENR |= RCC_APB1ENR_PWREN; PWR->CR |= PWR_CR_VOS; /* HCLK = SYSCLK / 1*/ RCC->CFGR |= RCC_CFGR_HPRE_DIV1; /* PCLK2 = HCLK / 2*/ RCC->CFGR |= RCC_CFGR_PPRE2_DIV2; /* PCLK1 = HCLK / 4*/ RCC->CFGR |= RCC_CFGR_PPRE1_DIV4; /* Configure the main PLL */ RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) | (RCC_PLLCFGR_PLLSRC_HSE) | (PLL_Q << 24); /* Enable the main PLL */ RCC->CR |= RCC_CR_PLLON; /* Wait till the main PLL is ready */ while((RCC->CR & RCC_CR_PLLRDY) == 0) { } /* Configure Flash prefetch, Instruction cache, Data cache and wait state */ FLASH->ACR = FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_5WS; /* Select the main PLL as system clock source */ RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); RCC->CFGR |= RCC_CFGR_SW_PLL; /* Wait till the main PLL is used as system clock source */ while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL) { asm("nop"); } } else { /* If HSE fails to start-up, the application will have wrong clock configuration. User can add here some code to deal with this error */ } /******************************************************************************/ /* I2S clock configuration */ /******************************************************************************/ #if START_I2SCLOCK /* PLLI2S clock used as I2S clock source */ RCC->CFGR &= ~RCC_CFGR_I2SSRC; /* Configure PLLI2S */ RCC->PLLI2SCFGR = (PLLI2S_N << 6) | (PLLI2S_R << 28); /* Enable PLLI2S */ RCC->CR |= ((uint32_t)RCC_CR_PLLI2SON); /* Wait till PLLI2S is ready */ while((RCC->CR & RCC_CR_PLLI2SRDY) == 0) { } #endif } /** * @brief Setup the external memory controller. Called in startup_stm32f4xx.s * before jump to __main * @param None * @retval None */ #ifdef DATA_IN_ExtSRAM /** * @brief Setup the external memory controller. * Called in startup_stm32f4xx.s before jump to main. * This function configures the external SRAM mounted on STM324xG_EVAL board * This SRAM will be used as program data memory (including heap and stack). * @param None * @retval None */ void SystemInit_ExtMemCtl(void) { /*-- GPIOs Configuration -----------------------------------------------------*/ /* +-------------------+--------------------+------------------+------------------+ + SRAM pins assignment + +-------------------+--------------------+------------------+------------------+ | PD0 <-> FSMC_D2 | PE0 <-> FSMC_NBL0 | PF0 <-> FSMC_A0 | PG0 <-> FSMC_A10 | | PD1 <-> FSMC_D3 | PE1 <-> FSMC_NBL1 | PF1 <-> FSMC_A1 | PG1 <-> FSMC_A11 | | PD4 <-> FSMC_NOE | PE3 <-> FSMC_A19 | PF2 <-> FSMC_A2 | PG2 <-> FSMC_A12 | | PD5 <-> FSMC_NWE | PE4 <-> FSMC_A20 | PF3 <-> FSMC_A3 | PG3 <-> FSMC_A13 | | PD8 <-> FSMC_D13 | PE7 <-> FSMC_D4 | PF4 <-> FSMC_A4 | PG4 <-> FSMC_A14 | | PD9 <-> FSMC_D14 | PE8 <-> FSMC_D5 | PF5 <-> FSMC_A5 | PG5 <-> FSMC_A15 | | PD10 <-> FSMC_D15 | PE9 <-> FSMC_D6 | PF12 <-> FSMC_A6 | PG9 <-> FSMC_NE2 | | PD11 <-> FSMC_A16 | PE10 <-> FSMC_D7 | PF13 <-> FSMC_A7 |------------------+ | PD12 <-> FSMC_A17 | PE11 <-> FSMC_D8 | PF14 <-> FSMC_A8 | | PD13 <-> FSMC_A18 | PE12 <-> FSMC_D9 | PF15 <-> FSMC_A9 | | PD14 <-> FSMC_D0 | PE13 <-> FSMC_D10 |------------------+ | PD15 <-> FSMC_D1 | PE14 <-> FSMC_D11 | | | PE15 <-> FSMC_D12 | +-------------------+--------------------+ */ /* Enable GPIOD, GPIOE, GPIOF and GPIOG interface clock */ RCC->AHB1ENR = 0x00000078; /* Connect PDx pins to FSMC Alternate function */ GPIOD->AFR[0] = 0x00cc00cc; GPIOD->AFR[1] = 0xcc0ccccc; /* Configure PDx pins in Alternate function mode */ GPIOD->MODER = 0xaaaa0a0a; /* Configure PDx pins speed to 100 MHz */ GPIOD->OSPEEDR = 0xffff0f0f; /* Configure PDx pins Output type to push-pull */ GPIOD->OTYPER = 0x00000000; /* No pull-up, pull-down for PDx pins */ GPIOD->PUPDR = 0x00000000; /* Connect PEx pins to FSMC Alternate function */ GPIOE->AFR[0] = 0xc00cc0cc; GPIOE->AFR[1] = 0xcccccccc; /* Configure PEx pins in Alternate function mode */ GPIOE->MODER = 0xaaaa828a; /* Configure PEx pins speed to 100 MHz */ GPIOE->OSPEEDR = 0xffffc3cf; /* Configure PEx pins Output type to push-pull */ GPIOE->OTYPER = 0x00000000; /* No pull-up, pull-down for PEx pins */ GPIOE->PUPDR = 0x00000000; /* Connect PFx pins to FSMC Alternate function */ GPIOF->AFR[0] = 0x00cccccc; GPIOF->AFR[1] = 0xcccc0000; /* Configure PFx pins in Alternate function mode */ GPIOF->MODER = 0xaa000aaa; /* Configure PFx pins speed to 100 MHz */ GPIOF->OSPEEDR = 0xff000fff; /* Configure PFx pins Output type to push-pull */ GPIOF->OTYPER = 0x00000000; /* No pull-up, pull-down for PFx pins */ GPIOF->PUPDR = 0x00000000; /* Connect PGx pins to FSMC Alternate function */ GPIOG->AFR[0] = 0x00cccccc; GPIOG->AFR[1] = 0x000000c0; /* Configure PGx pins in Alternate function mode */ GPIOG->MODER = 0x00080aaa; /* Configure PGx pins speed to 100 MHz */ GPIOG->OSPEEDR = 0x000c0fff; /* Configure PGx pins Output type to push-pull */ GPIOG->OTYPER = 0x00000000; /* No pull-up, pull-down for PGx pins */ GPIOG->PUPDR = 0x00000000; /*-- FSMC Configuration ------------------------------------------------------*/ /* Enable the FSMC interface clock */ RCC->AHB3ENR = 0x00000001; /* Configure and enable Bank1_SRAM2 */ FSMC_Bank1->BTCR[2] = 0x00001015; FSMC_Bank1->BTCR[3] = 0x00010603; FSMC_Bank1E->BWTR[2] = 0x0fffffff; /* Bank1_SRAM2 is configured as follow: p.FSMC_AddressSetupTime = 3; p.FSMC_AddressHoldTime = 0; p.FSMC_DataSetupTime = 6; p.FSMC_BusTurnAroundDuration = 1; p.FSMC_CLKDivision = 0; p.FSMC_DataLatency = 0; p.FSMC_AccessMode = FSMC_AccessMode_A; FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM2; FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_PSRAM; FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b; FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable; FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable; FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low; FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable; FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState; FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable; FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p; FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p; */ } #endif /* DATA_IN_ExtSRAM */ /** * @} */ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/src/tone.c000066400000000000000000000102071445607075400155350ustar00rootroot00000000000000/*! * Fixed-point tone generator. * * The code here implements a simple fixed-point tone generator that uses * integer arithmetic to generate a sinusoid at a fixed sample rate of * 16kHz. * * To set the initial state of the state machine, you specify a frequency * and duration using tone_reset. The corresponding C file embeds a * sinusoid look-up table. The total number of samples is computed for * the given time and used to initialise 'remain', 'time' is initialised * to 0, and 'step' gives the amount to increment 'time' by each iteration. * * The samples are retrieved by repeatedly calling tone_next. This * advances 'time' and decrements 'remain'. The tone is complete when * 'remain' is zero. * * Author Stuart Longland * Copyright (C) 2015 FreeDV project. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 2.1, * as published by the Free Software Foundation. This program is * distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, see * . */ #include "tone.h" /*! Fixed-point shift factor */ #define TONE_SHIFT (12) /*! Static compiled quarter-sinusoid. */ static const int16_t partial_sine[] = { 830, 2488, 4140, 5781, 7407, 9014, 10598, 12155, 13681, 15171, 16623, 18031, 19394, 20707, 21967, 23170, 24314, 25395, 26411, 27360, 28238, 29043, 29774, 30429, 31006, 31503, 31919, 32253, 32504, 32672, 32756 }; /*! Length of quarter-sinusoid in samples */ #define TONE_PART_SINE_LEN (sizeof(partial_sine)\ /sizeof(partial_sine[0])) /*! Total length of sinusoid */ #define TONE_SINE_LEN ((TONE_PART_SINE_LEN*4)+4) /*! * Generate a sine from the quarter-waveform. */ static int16_t tone_sine(uint8_t sample) { /* Key points */ if ((sample % (TONE_SINE_LEN/2)) == 0) /* Zero crossings */ return 0; if (sample == TONE_SINE_LEN/4) /* Maximum */ return INT16_MAX; if (sample == (3*TONE_SINE_LEN)/4) /* Minimum */ return INT16_MIN; if (sample < TONE_SINE_LEN/4) /* First quarter of sine wave */ return partial_sine[sample-1]; if (sample < (TONE_SINE_LEN/2)) /* Second quarter */ return partial_sine[(TONE_SINE_LEN/2)-sample-1]; if (sample < ((3*TONE_SINE_LEN)/4)) /* Third quarter */ return -partial_sine[(sample-3) % TONE_PART_SINE_LEN]; if (sample < TONE_SINE_LEN) /* Final quarter */ return -partial_sine[TONE_SINE_LEN-sample-1]; /* We should not get here */ return 0; } /*! * Re-set the tone generator. * * @param tone_gen Tone generator to reset. * @param freq Frequency in Hz, 0 = silence. * @param duration Duration in milliseconds. 0 to stop. */ void tone_reset( struct tone_gen_t* const tone_gen, uint16_t freq, uint16_t duration) { if (freq) /* Compute the time step */ tone_gen->step = (((2*freq*TONE_SINE_LEN) << TONE_SHIFT) / ((2*TONE_FS) + 1) + 1); else /* DC tone == silence */ tone_gen->step = 0; /* Compute remaining samples */ tone_gen->remain = (uint16_t)( ((uint32_t)(TONE_FS * duration)) / 1000); /* Initialise the sample counter */ tone_gen->sample = 0; } /*! * Retrieve the next sample from the tone generator. * @param tone_gen Tone generator to update. */ int16_t tone_next( struct tone_gen_t* const tone_gen) { if (!tone_gen) return 0; if (!tone_gen->remain) return 0; if (!tone_gen->step) { /* Special case, emit silence */ tone_gen->remain--; return 0; } /* Compute sample index */ uint16_t sample_int = ((tone_gen->sample) >> TONE_SHIFT) % TONE_SINE_LEN; /* Advance tone generator state */ tone_gen->sample += tone_gen->step; tone_gen->remain--; return tone_sine(sample_int); } /*! * Retrieve the current time in milliseconds. */ uint32_t tone_msec(const struct tone_gen_t* const tone_gen) { uint64_t ms = tone_gen->sample; ms *= 1000; ms /= TONE_FS; return ms >> TONE_SHIFT; } codec2-1.2.0/stm32/src/tot.c000066400000000000000000000044541445607075400154050ustar00rootroot00000000000000/*! * Time-out timer. * * This is a simple time-out timer for ensuring a maximum transmission * time is observed. The time-out timer is configured with a total time * in "ticks", which get counted down in an interrupt. * * When the "warning" level is reached, a flag is repeatedly set permit * triggering of LEDs/sounds to warn the user that time is nearly up. * * Upon timeout, a separate flag is set to indicate timeout has taken * place. * * Author Stuart Longland * Copyright (C) 2015 FreeDV project. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 2.1, * as published by the Free Software Foundation. This program is * distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; if not, see * . */ #include "tot.h" /*! * Reset the time-out timer. This zeroes the counter and event flags. */ void tot_reset(struct tot_t * const tot) { tot->event = 0; tot->remaining = 0; tot->warn_remain = 0; tot->ticks = 0; } /*! * Start the time-out timer ticking. */ void tot_start(struct tot_t * const tot, uint32_t tot_ticks, uint16_t warn_ticks) { tot->event = TOT_EVT_START; tot->warn_remain = tot_ticks - warn_ticks; tot->remaining = tot_ticks; tot->ticks = tot->tick_period; } /*! * Update the time-out timer state. */ void tot_update(struct tot_t * const tot) { if (!tot->event) /* We are not active */ return; if (tot->event & TOT_EVT_DONE) /* We are done, do not process */ return; if (tot->ticks) /* Wait for a tick to pass */ return; /* One "tick" has passed */ if (!tot->remaining) { /* Time-out reached, reset all flags except timeout */ tot->event |= TOT_EVT_TIMEOUT | TOT_EVT_DONE; return; } else { tot->remaining--; } if (!tot->warn_remain) { /* Warning period has passed */ tot->event |= TOT_EVT_WARN | TOT_EVT_WARN_NEXT; tot->warn_remain = tot->remain_warn_ticks; } else { tot->warn_remain--; } tot->ticks = tot->tick_period; } codec2-1.2.0/stm32/src/usart_ut.c000066400000000000000000000005701445607075400164400ustar00rootroot00000000000000/* usart_ut.c David Rowe May 2019 Unit test for stm32 USART support. tio is useful to receive the serial strings: $ tio -m INLCRNL /dev/ttyUSB0 */ #include #include "stm32f4_usart.h" void Delay(uint32_t nCount) { while(nCount--) { } } int main(void){ usart_init(); while(1){ usart_puts("Hello, World\n"); Delay(0x3FFFFF); } } codec2-1.2.0/stm32/src/usb_vcp_ut.c000066400000000000000000000047311445607075400167460ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: usb_vcp_ut.c AUTHOR......: xenovacivus DATE CREATED: 31 August 2014 USB Virtual COM Port (VCP) unit test that I found here: https://github.com/xenovacivus/STM32DiscoveryVCP Remarkably, it compiled and ran first time, and even the LEDs blink as advertised, they just happen to match the LEDs on the SM1000! However the speed was capped at about 130 kB/s. After a lot of messing around I found suggestions in the comments from a similar library here: http://stm32f4-discovery.com/2014/08/library-24-virtual-com-port-vcp-stm32f4xx/ The key was changing APP_RX_DATA_SIZE in usbd_conf.h to 10000. I guess the previous size of 2048 was constraining the length of USB packets, and the USB overhead meant slow throughput. I could achieve a max of 450 kB/s with this change, about 1/3 of the theoretical 1.5 MB/s max for USB FS (12 Mbit/s). I used this to test grabbing data from the STM32F4 Discovery: $ sudo dd if=/dev/ttyACM0 of=/dev/null count=100 4+96 records in 44+1 records out 22615 bytes (23 kB) copied, 0.150884 s, 150 kB/s However I occasionally see: $ sudo dd if=/dev/ttyACM0 of=/dev/null count=100 dd: failed to open ‘/dev/ttyACM0’: Device or resource busy Googling found some suggestion that this is due to "modem manager", however I removed MM and the problem still exists. \*---------------------------------------------------------------------------*/ #include #include #include "stm32f4_usb_vcp.h" #include "sm1000_leds_switches.h" volatile uint32_t ticker, buf_ticker; #define N 640*6 short buf[N]; int main(void) { int i; for(i=0; i 500) { GPIOD->BSRRH = GPIO_Pin_13; } if (ticker > 1000) { ticker = 0; GPIOD->BSRRL = GPIO_Pin_13; } /* Every 40ms send a buffer, simulates 16 bit samples at Fs=96kHz */ if (buf_ticker > 40) { buf_ticker = 0; led_pwr(1); VCP_send_buffer((uint8_t*)buf, sizeof(buf)); led_pwr(0); } } return 0; } /* * Interrupt Handler */ void SysTick_Handler(void) { ticker++; buf_ticker++; } codec2-1.2.0/stm32/src/usb_vsp_ut.c000066400000000000000000000075161445607075400167720ustar00rootroot00000000000000 #define HSE_VALUE ((uint32_t)8000000) /* STM32 discovery uses a 8Mhz external crystal */ #include "stm32f4xx_conf.h" #include "stm32f4xx.h" #include "stm32f4xx_gpio.h" #include "stm32f4xx_rcc.h" #include "stm32f4xx_exti.h" #include "usbd_cdc_core.h" #include "usbd_usr.h" #include "usbd_desc.h" #include "usbd_cdc_vcp.h" #include "usb_dcd_int.h" volatile uint32_t ticker, downTicker; /* * The USB data must be 4 byte aligned if DMA is enabled. This macro handles * the alignment, if necessary (it's actually magic, but don't tell anyone). */ __ALIGN_BEGIN USB_OTG_CORE_HANDLE USB_OTG_dev __ALIGN_END; void init(); void ColorfulRingOfDeath(void); /* * Define prototypes for interrupt handlers here. The conditional "extern" * ensures the weak declarations from startup_stm32f4xx.c are overridden. */ #ifdef __cplusplus extern "C" { #endif void SysTick_Handler(void); void NMI_Handler(void); void HardFault_Handler(void); void MemManage_Handler(void); void BusFault_Handler(void); void UsageFault_Handler(void); void SVC_Handler(void); void DebugMon_Handler(void); void PendSV_Handler(void); void OTG_FS_IRQHandler(void); void OTG_FS_WKUP_IRQHandler(void); #ifdef __cplusplus } #endif int main(void) { /* Set up the system clocks */ SystemInit(); /* Initialize USB, IO, SysTick, and all those other things you do in the morning */ init(); while (1) { /* Blink the orange LED at 1Hz */ if (500 == ticker) { GPIOD->BSRRH = GPIO_Pin_13; } else if (1000 == ticker) { ticker = 0; GPIOD->BSRRL = GPIO_Pin_13; } /* If there's data on the virtual serial port: * - Echo it back * - Turn the green LED on for 10ms */ uint8_t theByte; if (VCP_get_char(&theByte)) { VCP_put_char(theByte); GPIOD->BSRRL = GPIO_Pin_12; downTicker = 10; } if (0 == downTicker) { GPIOD->BSRRH = GPIO_Pin_12; } } return 0; } void init() { /* STM32F4 discovery LEDs */ GPIO_InitTypeDef LED_Config; /* Always remember to turn on the peripheral clock... If not, you may be up till 3am debugging... */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); LED_Config.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15; LED_Config.GPIO_Mode = GPIO_Mode_OUT; LED_Config.GPIO_OType = GPIO_OType_PP; LED_Config.GPIO_Speed = GPIO_Speed_25MHz; LED_Config.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOD, &LED_Config); /* Setup SysTick or CROD! */ if (SysTick_Config(SystemCoreClock / 1000)) { ColorfulRingOfDeath(); } /* Setup USB */ USBD_Init(&USB_OTG_dev, USB_OTG_FS_CORE_ID, &USR_desc, &USBD_CDC_cb, &USR_cb); return; } /* * Call this to indicate a failure. Blinks the STM32F4 discovery LEDs * in sequence. At 168Mhz, the blinking will be very fast - about 5 Hz. * Keep that in mind when debugging, knowing the clock speed might help * with debugging. */ void ColorfulRingOfDeath(void) { uint16_t ring = 1; while (1) { uint32_t count = 0; while (count++ < 500000); GPIOD->BSRRH = (ring << 12); ring = ring << 1; if (ring >= 1<<4) { ring = 1; } GPIOD->BSRRL = (ring << 12); } } /* * Interrupt Handlers */ void SysTick_Handler(void) { ticker++; if (downTicker > 0) { downTicker--; } } void NMI_Handler(void) {} void HardFault_Handler(void) { ColorfulRingOfDeath(); } void MemManage_Handler(void) { ColorfulRingOfDeath(); } void BusFault_Handler(void) { ColorfulRingOfDeath(); } void UsageFault_Handler(void){ ColorfulRingOfDeath(); } void SVC_Handler(void) {} void DebugMon_Handler(void) {} void PendSV_Handler(void) {} void OTG_FS_IRQHandler(void) { USBD_OTG_ISR_Handler (&USB_OTG_dev); } void OTG_FS_WKUP_IRQHandler(void) { if(USB_OTG_dev.cfg.low_power) { *(uint32_t *)(0xE000ED10) &= 0xFFFFFFF9 ; SystemInit(); USB_OTG_UngateClock(&USB_OTG_dev); } EXTI_ClearITPendingBit(EXTI_Line18); } codec2-1.2.0/stm32/stlink/000077500000000000000000000000001445607075400151415ustar00rootroot00000000000000codec2-1.2.0/stm32/stlink/elfsym.c000066400000000000000000000074121445607075400166100ustar00rootroot00000000000000/* elfsym.c Read symbol addresses from a .elf file. Based on libelf-howto.c from: http://em386.blogspot.com Unit test with: gcc elfsym.c -o elfsym -D__UNITTEST__ -Wall -lelf ./elfsym elf_file.elf */ #include #include #include #include #include #include #include #include #include #include "elfsym.h" #define ERR -1 int elfsym_open(char file[]) { int fd; /* File Descriptor */ char *base_ptr; /* ptr to our object in memory */ struct stat elf_stats; /* fstat struct */ if((fd = open(file, O_RDWR)) == ERR) { printf("couldn't open %s\n", file); return ERR; } if((fstat(fd, &elf_stats))) { printf("could not fstat %s\n", file); close(fd); return ERR; } if((base_ptr = (char *) malloc(elf_stats.st_size)) == NULL) { fprintf(stderr, "could not malloc\n"); close(fd); return ERR; } if((read(fd, base_ptr, elf_stats.st_size)) < elf_stats.st_size) { fprintf(stderr, "could not read %s\n", file); free(base_ptr); close(fd); return ERR; } /* Check libelf version first */ if(elf_version(EV_CURRENT) == EV_NONE) { fprintf(stderr, "WARNING Elf Library is out of date!\n"); } free(base_ptr); return fd; } void elfsym_close(int fd) { close(fd); } unsigned int elfsym_get_symbol_address(int fd, char symbol_name[]) { Elf_Scn *scn; /* Section Descriptor */ Elf_Data *edata; /* Data Descriptor */ GElf_Sym sym; /* Symbol */ GElf_Shdr shdr; /* Section Header */ Elf *elf; /* Our Elf pointer for libelf */ unsigned int symbol_address; int symbol_count; int i; /* Iterate through section headers, stop when we find symbols, and check for match */ elf = elf_begin(fd, ELF_C_READ, NULL); if (elf == 0) { fprintf(stderr, "could not elf_begin\n"); } symbol_address = 0; scn = NULL; while((scn = elf_nextscn(elf, scn)) != 0) { gelf_getshdr(scn, &shdr); // When we find a section header marked SHT_SYMTAB stop and get symbols edata = NULL; if(shdr.sh_type == SHT_SYMTAB) { // edata points to our symbol table edata = elf_getdata(scn, edata); // how many symbols are there? this number comes from the size of // the section divided by the entry size symbol_count = shdr.sh_size / shdr.sh_entsize; // loop through to grab all symbols for(i = 0; i < symbol_count; i++) { // libelf grabs the symbol data using gelf_getsym() gelf_getsym(edata, i, &sym); if (strcmp(symbol_name, elf_strptr(elf, shdr.sh_link, sym.st_name)) == 0) { symbol_address = sym.st_value; } } } } return symbol_address; } #ifdef __UNITTEST__ int main(int argc, char *argv[]) { int fd; unsigned int flag_addr, ptr_addr, file_addr, len_addr; fd = elfsym_open(argv[1]); flag_addr = elfsym_get_symbol_address(fd, "syscalls_gdb_flag"); ptr_addr = elfsym_get_symbol_address(fd, "syscalls_gdb_ptr"); file_addr = elfsym_get_symbol_address(fd, "syscalls_gdb_file"); len_addr = elfsym_get_symbol_address(fd, "syscalls_gdb_len"); elfsym_close(fd); printf("flag_addr: 0x%x\n", flag_addr); printf("ptr_addr: 0x%x\n", ptr_addr); printf("file_addr: 0x%x\n", file_addr); printf("len_addr: 0x%x\n", len_addr); return 0; } #endif codec2-1.2.0/stm32/stlink/elfsym.h000066400000000000000000000003511445607075400166100ustar00rootroot00000000000000/* elfsym.h Read symbol addresses from a .elf file. */ #ifndef __ELFSYM__ #define __ELFSYM__ int elfsym_open(char file[]); void elfsym_close(int fd); unsigned int elfsym_get_symbol_address(int fd, char symbol_name[]); #endif codec2-1.2.0/stm32/stlink/stlink.patch000066400000000000000000000320551445607075400174730ustar00rootroot00000000000000diff --git Makefile.am Makefile.am index a315dd7..7406216 100644 --- Makefile.am +++ Makefile.am @@ -7,7 +7,7 @@ bin_PROGRAMS = st-flash st-util noinst_LIBRARIES = libstlink.a st_flash_SOURCES = flash/main.c -st_util_SOURCES = gdbserver/gdb-remote.c gdbserver/gdb-remote.h gdbserver/gdb-server.c mingw/mingw.c mingw/mingw.h +st_util_SOURCES = gdbserver/gdb-remote.c gdbserver/gdb-remote.h gdbserver/gdb-server.c gdbserver/elfsym.c mingw/mingw.c mingw/mingw.h CFILES = \ src/stlink-common.c \ @@ -24,14 +24,14 @@ HFILES = \ libstlink_a_SOURCES = $(CFILES) $(HFILES) -libstlink_a_CPPFLAGS = -std=gnu99 -Wall -Wextra -O2 +libstlink_a_CPPFLAGS = -std=gnu99 -Wall -Wextra -g libstlink_a_LIBADD = $(LIBOBJS) st_flash_LDADD = libstlink.a -st_flash_CPPFLAGS = -std=gnu99 -Wall -Wextra -O2 -I$(top_srcdir)/src -I$(top_srcdir)/mingw +st_flash_CPPFLAGS = -std=gnu99 -Wall -Wextra -g -I$(top_srcdir)/src -I$(top_srcdir)/mingw -st_util_LDADD = libstlink.a -st_util_CPPFLAGS = -std=gnu99 -Wall -Wextra -O2 -I$(top_srcdir)/src -I$(top_srcdir)/mingw +st_util_LDADD = libstlink.a -lelf +st_util_CPPFLAGS = -std=gnu99 -Wall -Wextra -g -I$(top_srcdir)/src -I$(top_srcdir)/mingw EXTRA_DIST = autogen.sh diff --git gdbserver/Makefile gdbserver/Makefile index bd5c73d..6763388 100644 --- gdbserver/Makefile +++ gdbserver/Makefile @@ -1,12 +1,11 @@ PRG := st-util -OBJS = gdb-remote.o gdb-server.o +OBJS = gdb-remote.o gdb-server.o elfsym.o CFLAGS+=-g -Wall -Werror -std=gnu99 -I../src LDFLAGS=-L.. -lstlink # libusb location -LDFLAGS+=`pkg-config --libs libusb-1.0` -CFLAGS+=`pkg-config --cflags libusb-1.0` +LDFLAGS+=`pkg-config --libs libusb-1.0` -lelfCFLAGS+=`pkg-config --cflags libusb-1.0` all: $(PRG) diff --git gdbserver/gdb-server.c gdbserver/gdb-server.c index f92fc05..e54d136 100644 --- gdbserver/gdb-server.c +++ gdbserver/gdb-server.c @@ -1,11 +1,12 @@ /* -*- tab-width:8 -*- */ -#define DEBUG 0 +//#define DEBUG 0 /* Copyright (C) 2011 Peter Zotov Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. */ +#include #include #include #include @@ -20,14 +21,29 @@ #include #include #endif +#include +#include +#include #include #include "gdb-remote.h" +#include "elfsym.h" #define DEFAULT_LOGGING_LEVEL 50 #define DEFAULT_GDB_LISTEN_PORT 4242 +/* stdio command codes from target */ + +#define GDB_STDIO_PRINTF 1 +#define GDB_STDIO_FOPEN 2 +#define GDB_STDIO_FCLOSE 3 +#define GDB_STDIO_FWRITE 4 +#define GDB_STDIO_FREAD 5 +#define GDB_STDIO_FPRINTF 6 + +#define MAX_STR 256 + #define STRINGIFY_inner(name) #name #define STRINGIFY(name) STRINGIFY_inner(name) @@ -46,11 +62,12 @@ typedef struct _st_state_t { // "/dev/serial/by-id/usb-FTDI_TTL232R-3V3_FTE531X6-if00-port0" is only 58 chars char devicename[100]; int logging_level; - int listen_port; + int listen_port; + char elf_filename[255]; } st_state_t; -int serve(stlink_t *sl, int port); +int serve(stlink_t *sl, int port, char *elf_filename); char* make_memory_map(stlink_t *sl); @@ -76,13 +93,14 @@ int parse_options(int argc, char** argv, st_state_t *st) { " -p 4242, --listen_port=1234\n" "\t\t\tSet the gdb server listen port. " "(default port: " STRINGIFY(DEFAULT_GDB_LISTEN_PORT) ")\n" + " -f \tenable File I/O of target executable elf_filename" ; int option_index = 0; int c; int q; - while ((c = getopt_long(argc, argv, "hv::d:s:1p:", long_options, &option_index)) != -1) { + while ((c = getopt_long(argc, argv, "hv::d:s:1p:1f:", long_options, &option_index)) != -1) { switch (c) { case 0: printf("XXXXX Shouldn't really normally come here, only if there's no corresponding option\n"); @@ -110,25 +128,29 @@ int parse_options(int argc, char** argv, st_state_t *st) { strcpy(st->devicename, optarg); } break; - case '1': - st->stlink_version = 1; - break; - case 's': - sscanf(optarg, "%i", &q); - if (q < 0 || q > 2) { - fprintf(stderr, "stlink version %d unknown!\n", q); - exit(EXIT_FAILURE); - } - st->stlink_version = q; - break; - case 'p': - sscanf(optarg, "%i", &q); - if (q < 0) { - fprintf(stderr, "Can't use a negative port to listen on: %d\n", q); - exit(EXIT_FAILURE); - } - st->listen_port = q; - break; + case '1': + st->stlink_version = 1; + break; + case 's': + sscanf(optarg, "%i", &q); + if (q < 0 || q > 2) { + fprintf(stderr, "stlink version %d unknown!\n", q); + exit(EXIT_FAILURE); + } + st->stlink_version = q; + break; + case 'p': + sscanf(optarg, "%i", &q); + if (q < 0) { + fprintf(stderr, "Can't use a negative port to listen on: %d\n", q); + exit(EXIT_FAILURE); + } + st->listen_port = q; + break; + case 'f': + sscanf(optarg, "%s", st->elf_filename); + printf("-f arg; %s\n", st->elf_filename); + break; } } @@ -162,7 +184,7 @@ int main(int argc, char** argv) { sl = stlink_v1_open(state.logging_level); if(sl == NULL) return 1; break; - } + } printf("Chip ID is %08x, Core ID is %08x.\n", sl->chip_id, sl->core_id); @@ -177,7 +199,7 @@ int main(int argc, char** argv) { } #endif - while(serve(sl, state.listen_port) == 0); + while(serve(sl, state.listen_port, state.elf_filename) == 0); #ifdef __MINGW32__ winsock_error: @@ -625,7 +647,179 @@ error: return error; } -int serve(stlink_t *sl, int port) { +static unsigned int func_addr, ret_addr, pstr1_addr, pstr2_addr; +static unsigned int strlen1_addr, strlen2_addr, file_addr, ptr_addr; +static unsigned int size_addr, nmem_addr; + +static void write_buffer(stlink_t *sl, int target_addr, char* buf, size_t size) { + /* write the buffer right after the loader */ + size_t chunk = size & ~0x3; + size_t rem = size & 0x3; + + if (chunk) { + memcpy(sl->q_buf, buf, chunk); + stlink_write_mem32(sl, target_addr, chunk); + } + if (rem) { + memcpy(sl->q_buf, buf+chunk, rem); + stlink_write_mem8(sl, target_addr+chunk, rem); + } +} + +static void read_buffer(stlink_t *sl, int target_addr, char* buf, size_t size) { + unsigned adj_start = target_addr % 4; + unsigned count_rnd = (size + adj_start + 4 - 1) / 4 * 4; + size_t i; + + stlink_read_mem32(sl, target_addr - adj_start, count_rnd); + + for(i=0; iq_buf[i + adj_start]; +} + +static void fileio(stlink_t *sl) +{ + int func, pstr1, pstr2, strlen1, strlen2, ptr, size, nmem; + int ret = 0; + FILE *file; + char file_name[MAX_STR]; + char mode[MAX_STR]; + char *buf; + + stlink_read_mem32(sl, func_addr, 4); + func = read_uint32(sl->q_buf, 0); + + /* func != 0 means target has requested a system call */ + + switch(func) { + + case GDB_STDIO_PRINTF: + stlink_read_mem32(sl, pstr1_addr, 4); + pstr1 = read_uint32(sl->q_buf, 0); + stlink_read_mem32(sl, strlen1_addr, 4); + strlen1 = read_uint32(sl->q_buf, 0); + buf = (char*)malloc(strlen1+1); + assert(buf != NULL); + read_buffer(sl, pstr1, buf, strlen1); + buf[strlen1] = 0; + #ifdef DEBUG + //printf("gdb_stdio printf pstr1: 0x%0x strlen1: %d buf: %s\n", pstr1, strlen1, buf); + #endif + fputs(buf, stdout); + free(buf); + + break; + + case GDB_STDIO_FPRINTF: + stlink_read_mem32(sl, file_addr, 4); + file = (FILE*)read_uint32(sl->q_buf, 0); + stlink_read_mem32(sl, pstr1_addr, 4); + pstr1 = read_uint32(sl->q_buf, 0); + stlink_read_mem32(sl, strlen1_addr, 4); + strlen1 = read_uint32(sl->q_buf, 0); + buf = (char*)malloc(strlen1+1); + assert(buf != NULL); + read_buffer(sl, pstr1, buf, strlen1); + buf[strlen1] = 0; + #ifdef DEBUG + //printf("gdb_stdio fprintf pstr1: 0x%0x strlen1: %d buf: %s file: 0x%x\n", pstr1, strlen1, buf, (unsigned int)file); + #endif + fputs(buf, file); + free(buf); + + break; + + case GDB_STDIO_FOPEN: + stlink_read_mem32(sl, pstr1_addr, 4); + pstr1 = read_uint32(sl->q_buf, 0); + stlink_read_mem32(sl, strlen1_addr, 4); + strlen1 = read_uint32(sl->q_buf, 0); + assert(strlen1 < MAX_STR); + read_buffer(sl, pstr1, file_name, strlen1); + file_name[strlen1] = 0; + + stlink_read_mem32(sl, pstr2_addr, 4); + pstr2 = read_uint32(sl->q_buf, 0); + stlink_read_mem32(sl, strlen2_addr, 4); + strlen2 = read_uint32(sl->q_buf, 0); + assert(strlen2 < MAX_STR); + read_buffer(sl, pstr2, mode, strlen2); + mode[strlen2] = 0; + + file = fopen(file_name, mode); + + ret = (int)file; + #ifdef DEBUG + printf("gdb_stdio fopen file_name: %s mode: %s file: 0x%x\n", file_name, mode, (unsigned int)file); + #endif + break; + + case GDB_STDIO_FCLOSE: + stlink_read_mem32(sl, file_addr, 4); + file = (FILE*)read_uint32(sl->q_buf, 0); + fclose(file); + + #ifdef DEBUG + printf("gdb_stdio fclose file: 0x%x\n", (unsigned int)file); + #endif + break; + + case GDB_STDIO_FWRITE: + stlink_read_mem32(sl, ptr_addr, 4); + ptr = read_uint32(sl->q_buf, 0); + stlink_read_mem32(sl, size_addr, 4); + size = read_uint32(sl->q_buf, 0); + stlink_read_mem32(sl, nmem_addr, 4); + nmem = read_uint32(sl->q_buf, 0); + stlink_read_mem32(sl, file_addr, 4); + file = (FILE*)read_uint32(sl->q_buf, 0); + + buf = (char*)malloc(size*nmem); + assert(buf != NULL); + read_buffer(sl, ptr, buf, size*nmem); + ret = fwrite(buf, size, nmem, file); + free(buf); + #ifdef DEBUG + printf("gdb_stdio fwrite ptr: 0x%x size: %d nmem: %d file: 0x%x\n", + ptr, size, nmem, (unsigned int)file); + #endif + break; + + case GDB_STDIO_FREAD: + stlink_read_mem32(sl, ptr_addr, 4); + ptr = read_uint32(sl->q_buf, 0); + stlink_read_mem32(sl, size_addr, 4); + size = read_uint32(sl->q_buf, 0); + stlink_read_mem32(sl, nmem_addr, 4); + nmem = read_uint32(sl->q_buf, 0); + stlink_read_mem32(sl, file_addr, 4); + file = (FILE*)read_uint32(sl->q_buf, 0); + + buf = (char*)malloc(size*nmem); + assert(buf != NULL); + ret = fread(buf, size, nmem, file); + write_buffer(sl, ptr, buf, size*nmem); + free(buf); + + #ifdef DEBUG + printf("gdb_stdio fread ptr: 0x%x size: %d nmem: %d file: 0x%x\n", + ptr, size, nmem, (unsigned int)file); + #endif + break; + } + + if (func) { + memcpy(sl->q_buf, &ret, sizeof(int)); + stlink_write_mem32(sl, ret_addr, 4); + + func = 0; + memcpy(sl->q_buf, &func, sizeof(int)); + stlink_write_mem32(sl, func_addr, 4); + } +} + + +int serve(stlink_t *sl, int port, char *elf_filename) { int sock = socket(AF_INET, SOCK_STREAM, 0); if(sock < 0) { perror("socket"); @@ -650,7 +844,33 @@ int serve(stlink_t *sl, int port) { perror("listen"); return 1; } - + + /* init for file I/O */ + + func_addr = ret_addr = pstr1_addr = pstr2_addr = strlen1_addr = strlen2_addr = 0; + file_addr = ptr_addr = size_addr = nmem_addr = 0; + + printf("elf_filename: %s----------------------------------\n", elf_filename); + if (*elf_filename != 0) { + int fd = elfsym_open(elf_filename); + if (fd == -1) + exit(0); + func_addr = elfsym_get_symbol_address(fd, "gdb_stdio_func"); + ret_addr = elfsym_get_symbol_address(fd, "gdb_stdio_ret"); + pstr1_addr = elfsym_get_symbol_address(fd, "gdb_stdio_pstr1"); + pstr2_addr = elfsym_get_symbol_address(fd, "gdb_stdio_pstr2"); + strlen1_addr = elfsym_get_symbol_address(fd, "gdb_stdio_strlen1"); + strlen2_addr = elfsym_get_symbol_address(fd, "gdb_stdio_strlen2"); + file_addr = elfsym_get_symbol_address(fd, "gdb_stdio_file"); + ptr_addr = elfsym_get_symbol_address(fd, "gdb_stdio_ptr"); + size_addr = elfsym_get_symbol_address(fd, "gdb_stdio_size"); + nmem_addr = elfsym_get_symbol_address(fd, "gdb_stdio_nmem"); + elfsym_close(fd); + #ifdef DEBUG + printf("func_addr: 0x%x\n", func_addr); + #endif + } + start_again: stlink_force_debug(sl); stlink_reset(sl); @@ -924,8 +1144,13 @@ start_again: if(sl->core_stat == STLINK_CORE_HALTED) { break; } + + /* file I/O if enabled */ + + if (*elf_filename != 0) + fileio(sl); - usleep(100000); + usleep(10000); } reply = strdup("S05"); // TRAP codec2-1.2.0/stm32/stm32_flash.ld000066400000000000000000000072711445607075400163120ustar00rootroot00000000000000ENTRY(Reset_Handler) /* Highest address of the user mode stack */ _estack = 0x20020000; /* end of 128K RAM on AHB bus*/ /* Generate a link error if heap and stack don't fit into RAM */ _Min_Heap_Size = 0; /* required amount of heap */ _Min_Stack_Size = 0x400; /* required amount of stack */ /* Specify the memory areas */ MEMORY { /* ISR vectors *must* be placed here as they get mapped to address 0 */ VECTOR (rx) : ORIGIN = 0x08000000, LENGTH = 16K /* Virtual EEPROM area, we use the remaining 16kB blocks for this. */ EEPROM (rx) : ORIGIN = 0x08004000, LENGTH = 48K /* The rest of flash is used for program data */ FLASH (rx) : ORIGIN = 0x08010000, LENGTH = 960K /* Backup memory area */ BKPSRAM (rwx) : ORIGIN = 0x40024000, LENGTH = 4K /* Memory area */ RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 128K /* Core Coupled Memory */ CCM (rwx) : ORIGIN = 0x10000000, LENGTH = 64K } SECTIONS { .isr_vector : { . = ALIGN(4); KEEP(*(.isr_vector)) . = ALIGN(4); } >VECTOR .eeprom : { . = ALIGN(4); KEEP(*(.eeprom)) /* special section for persistent data */ . = ORIGIN(EEPROM) + LENGTH(EEPROM) - 1; BYTE(0xFF) . = ALIGN(4); } >EEPROM = 0xff .bkpsram : { . = ALIGN(4); KEEP(*(.bkpsram)) . = ALIGN(4); } > BKPSRAM .text : { . = ALIGN(4); *(.text) /* .text sections (code) */ *(.text*) /* .text* sections (code) */ *(.rodata) /* .rodata sections (constants, strings, etc.) */ *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ *(.glue_7) /* glue arm to thumb code */ *(.glue_7t) /* glue thumb to arm code */ *(.eh_frame) KEEP (*(.init)) KEEP (*(.fini)) . = ALIGN(4); _etext = .; /* define a global symbols at end of code */ _exit = .; } >FLASH .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH .ARM : { __exidx_start = .; *(.ARM.exidx*) __exidx_end = .; } >FLASH .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array*)) PROVIDE_HIDDEN (__preinit_array_end = .); } >FLASH .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array*)) PROVIDE_HIDDEN (__init_array_end = .); } >FLASH .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array*)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } >FLASH /* used by the startup to initialize data */ _sidata = .; /* Initialized data sections goes into RAM, load LMA copy after code */ .data : AT ( _sidata ) { . = ALIGN(4); _sdata = .; /* create a global symbol at data start */ *(.data) /* .data sections */ *(.data*) /* .data* sections */ . = ALIGN(4); _edata = .; /* define a global symbol at data end */ } >RAM /* Uninitialized data section */ . = ALIGN(4); .bss : { /* This is used by the startup in order to initialize the .bss section */ _sbss = .; /* define a global symbol at bss start */ __bss_start__ = _sbss; *(.bss) *(.bss*) *(COMMON) . = ALIGN(4); _ebss = .; /* define a global symbol at bss end */ __bss_end__ = _ebss; } >RAM /* User_heap_stack section, used to check that there is enough RAM left */ ._user_heap_stack : { . = ALIGN(4); PROVIDE ( end = . ); PROVIDE ( _end = . ); . = . + _Min_Heap_Size; . = . + _Min_Stack_Size; . = ALIGN(4); } >RAM .ccm (NOLOAD) : { . = ALIGN(4); _sccmram = .; *(.ccm) . = ALIGN(4); _eccmram = .; } >CCM } codec2-1.2.0/stm32/stm32_ram.ld000066400000000000000000000055531445607075400157750ustar00rootroot00000000000000ENTRY(Reset_Handler) /* Highest address of the user mode stack */ _estack = 0x20020000; /* end of 128K RAM on AHB bus*/ /* Generate a link error if heap and stack don't fit into RAM */ _Min_Heap_Size = 0; /* required amount of heap */ _Min_Stack_Size = 0x400; /* required amount of stack */ /* Specify the memory areas */ MEMORY { FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 1024K RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 128K CCM (rwx) : ORIGIN = 0x10000000, LENGTH = 64K } SECTIONS { .isr_vector : { . = ALIGN(4); KEEP(*(.isr_vector)) . = ALIGN(4); } >RAM .text : { . = ALIGN(4); *(.text) /* .text sections (code) */ *(.text*) /* .text* sections (code) */ *(.rodata) /* .rodata sections (constants, strings, etc.) */ *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ *(.glue_7) /* glue arm to thumb code */ *(.glue_7t) /* glue thumb to arm code */ *(.eh_frame) KEEP (*(.init)) KEEP (*(.fini)) . = ALIGN(4); _etext = .; /* define a global symbols at end of code */ _exit = .; } >RAM .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >RAM .ARM : { __exidx_start = .; *(.ARM.exidx*) __exidx_end = .; } >RAM .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array*)) PROVIDE_HIDDEN (__preinit_array_end = .); } >RAM .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array*)) PROVIDE_HIDDEN (__init_array_end = .); } >RAM .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array*)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } >RAM /* used by the startup to initialize data */ _sidata = .; /* Initialized data sections goes into RAM, load LMA copy after code */ .data : AT ( _sidata ) { . = ALIGN(4); _sdata = .; /* create a global symbol at data start */ *(.data) /* .data sections */ *(.data*) /* .data* sections */ . = ALIGN(4); _edata = .; /* define a global symbol at data end */ } >RAM /* Uninitialized data section */ . = ALIGN(4); .bss : { /* This is used by the startup in order to initialize the .bss section */ _sbss = .; /* define a global symbol at bss start */ __bss_start__ = _sbss; *(.bss) *(.bss*) *(COMMON) . = ALIGN(4); _ebss = .; /* define a global symbol at bss end */ __bss_end__ = _ebss; } >RAM /* User_heap_stack section, used to check that there is enough RAM left */ ._user_heap_stack : { . = ALIGN(4); PROVIDE ( end = . ); PROVIDE ( _end = . ); . = . + _Min_Heap_Size; . = . + _Min_Stack_Size; . = ALIGN(4); } >RAM } codec2-1.2.0/stm32/unittest/000077500000000000000000000000001445607075400155145ustar00rootroot00000000000000codec2-1.2.0/stm32/unittest/README_unittest.md000066400000000000000000000207031445607075400207340ustar00rootroot00000000000000# README Codec2 STM32 Unit Test Don Reid 2018/2019 This is the unittest system for the stm32 implementation of codec2/FreeDV which runs on Linux systems. It requires a STM32F4xx processor development board connected to/having a ST-LINK, e.g. a STM32F4 Discovery board. ## Quickstart Requirements: * python3/numpy * arm-none-eabi-gdb install and in your path (see codec2/stm32/README.md) * STM32F4xx_DSP_StdPeriph_Lib_V1.8.0 (see codec2/stm32/README.md) * build openocd from source and have it in your path (see below) Build codec2 for x86 Linux with unittests. This generates several artifacts required for the stm32 tests: ``` $ cd ~/codec2 $ mkdir build_linux && cd build_linux && cmake -DUNITTEST=1 .. && make ``` Now build for the stm32, and run the stm32 ctests: ``` $ cd ~/codec2/stm32 && mkdir build_stm32 && cd build_stm32 $ cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/STM32_Toolchain.cmake -DPERIPHLIBDIR=~/Downloads/STM32F4xx_DSP_StdPeriph_Lib_V1.8.0 .. $ make $ sudo apt install python3-numpy libncurses5 $ ctest -V ``` You should see tests executing (and passing). They are slow to execute (30 to 180 seconds each), due to the speed of the semihosting system. ## If a Test fails Explore the files in ```codec2/stm32/unittest/test_run/name_of_test``` When each test runs, a directory is created, and several log files generated. ## Running the stm32 Unit Tests 1. Tests can be run using the ctest utility (part of cmake) ``` $ cd ~/codec2/stm32/build_stm32 $ ctest ``` You can pass -V to see more output: ``` $ ctest -V ``` You can pass -R to run test matching . Please note, that some test have dependencies and will have to run other tests before being executed ``` $ ctest -R ofdm ``` To list the available ctests: ``` $ ctest -N ``` 1. To run a single test. This test exercises the entire 700D receive side, and measures CPU load and memory: ``` $ cd ~/codec2/stm32/unittest $ ./scripts/run_stm32_tst tst_ofdm_api_demod 700D_AWGN_codec ``` In general: ``` $ ./scripts/run_stm32_test ``` 1. To run a test set (example): ``` $ cd ~/codec2/stm32/unittest $ ./scripts/run_all_ldpc_tests ``` In general: (codec2, ofdm, ldpc): ``` $ ./scripts/run_all__tests ``` ## When tests fail 1. If a test fails, explore the files in the ```test_run``` directory for that test. 1. Try building with ALLOC_DEBUG can be helpful with heap issues: ``` $ CFLAGS=-DEBUG_ALLOC cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/STM32_Toolchain.cmake \ -DPERIPHLIBDIR=~/Downloads/STM32F4xx_DSP_StdPeriph_Lib_V1.8.0 .. ``` ## Sequence of a Test Consider the example: ``` build_stm32$ ctest -R tst_ldpc_dec_noise ``` 1. The test is kicked off based on `src/CMakeLists.txt`, which calls `scipts/run_stm32_tst` 1. `run_stm32_tst` calls the test setup script, e.g. `tst_ldpc_dec_setup`. Typically, this will run a host version to generate a reference. 1. `run_stm32_tst` runs the stm32 executable on the Discovery, e.g. `tst_ldpc_dec`, the source is in `src/tst_ldpc_dec.c` 1. The steup and check scripts can handle many sub cases, e.g. `ideal` and `noise`. 1. `run_stm32_tst` calls the test check script, e.g. `tst_ldpc_dec_check` which typically compares the host generated reference to the output from the stm32. 1. As the test runs, various files are generated in `test_run/tst_ldpc_dec_noise` 1. When debugging it's useful to run the ctest with the verbose option: ``` $ ctest -V -R tst_ldpc_dec_noise ``` Set the `-x` at the top of the scripts to trace execution: ``` #!/bin/bash -x # # tst_ldpc_enc_check ``` ## Directory Structure | Path | Description | | --- | --- | | `scripts` | Scripts for unittest system | `src` | stm32 C sources | `\src\CMakeLists.txt` | ctests are defined here | `lib/python`| Python library files | `lib/octave`| Octave library files | `test_run` | Files created by each test as it runs ## Running the tests remotely If the stm32 hardware is connected on a different pc with linux, the tests can be run remotely. Test will run slower, roughly 3 times. 1. You have to build OpenOCD on the remote machine with the STM32 board. It must be built from (https://github.com/db4ple/openocd.git). 1. You don't need OpenOCD installed on your build pc. 1. You have to be able to run ssh with public key authentication using ssh-agent so that you can ssh into the remote machine without entering a password. 1. You have to call ctest with the proper UT_SSH_PARAMS settings, e.g. ``` UT_SSH_PARAMS="-p 22 -q remoteuser@remotemachine" ctest -V ``` ## Debug and Semihosting These tests required a connection from the arm-none-eabi-gdb debugger to the stm32 hardware. For this we use a recent version of OpenOCD. Running tests with the stm32 hardware connected to a remote machine via ssh is possible. This works only with a patched (fixed) OpenOCD, see below. ## OpenOCD We recommend OpenOCD instead of stlink. Most linux distributions use old packages for openocd, so you should build it from the git source. If your test runs fail with error messages regarding SYS_FLEN not support (see openocd_stderr.log in the test_run directories), your openocd is too old. Make sure to have the right openocd first in the PATH if you have multiple openocd installed! It is strongly recommended to build OpenOCD from sources, see below. ## Building OpenOCD OpenOCD needs to be built from the source. If you want to use openocd remotely via SSH, you have to use currently the patched source from (https://github.com/db4ple/openocd.git) instead of the official repository. 1. The executable is placed in /usr/local/bin ! Make sure to have no other openocd installed (check output of `which openocd` to be /usr/local/bin) ```Bash sudo apt install libusb-1.0-0-dev libtool pkg-config autoconf automake texinfo git clone https://git.code.sf.net/p/openocd/code openocd-code cd openocd-code ./bootstrap ./configure sudo make install which openocd sudo cp contrib/60-openocd.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules {un plug/plug-in stm32 Discovery} ``` 2. Plug in a stm32 development board and test: ``` $ openocd -f board/stm32f4discovery.cfg Open On-Chip Debugger 0.10.0+dev-00796-ga4ac5615 (2019-04-12-21:58) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD adapter speed: 2000 kHz adapter_nsrst_delay: 100 none separate srst_only separate srst_nogate srst_open_drain connect_deassert_srst Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Info : clock speed 2000 kHz Info : STLINK V2J33S0 (API v2) VID:PID 0483:3748 Info : Target voltage: 2.871855 Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints Info : Listening on port 3333 for gdb connections ``` ## st-util (deprecated) Most distributions don't have stutil included. Easiest way is to build it from the github sources. The source can be downloaded from: (https://github.com/texane/stlink) After compiling it can be installed anywhere, as long as it is in the PATH. The program is in `build/Release/src/gdbserver/st-util`. The newlib stdio functions (open, fread, fwrite, flush, fclose, etc.) send some requests that this tool does not recognize and those messages will appear in the output of st-util. They can be ignored. 1. Build from github ```Bash git clone https://github.com/texane/stlink cd stlink make sudo cp ./etc/udev/rules.d/49-stlinkv2.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules ``` 3. Add the st-util util to your $PATH, if not installed in the default location ( /usr/local/bin ) 4. Plug in a stm32 development board and test: ``` $ st-util st-util 1.4.0-47-gae717b9 2018-12-29T06:52:16 INFO usb.c: -- exit_dfu_mode 2018-12-29T06:52:16 INFO common.c: Loading device parameters.... 2018-12-29T06:52:16 INFO common.c: Device connected is: F4 device, id 0x10016413 2018-12-29T06:52:16 INFO common.c: SRAM size: 0x30000 bytes (192 KiB), Flash: 0x100000 bytes (1024 KiB) in pages of 16384 bytes 2018-12-29T06:52:16 INFO gdb-server.c: Chip ID is 00000413, Core ID is 2ba01477.G 2018-12-29T06:52:16 INFO gdb-server.c: Listening at *:4242... ``` # vi:set ts=3 et sts=3: codec2-1.2.0/stm32/unittest/lib/000077500000000000000000000000001445607075400162625ustar00rootroot00000000000000codec2-1.2.0/stm32/unittest/lib/octave/000077500000000000000000000000001445607075400175435ustar00rootroot00000000000000codec2-1.2.0/stm32/unittest/lib/octave/ofdm_demod_check.m000066400000000000000000000025351445607075400231600ustar00rootroot00000000000000% ofdm_demod_check.m % % Load results from reference and stm32 run and compare addpath("../../lib/octave") % Constants (would prefer parameters) err_limit = 0.001; % Reference load("ofdm_demod_ref_log.txt"); % DUT load("ofdm_demod_log.txt"); % Eliminate trailing rows of all zeros (unused) sums_ref = sum(payload_syms_log_c, 2); last_ref = find(sums_ref, 1, 'last'); sums_dut = sum(payload_syms_log_stm32, 2); last_dut = find(sums_dut, 1, 'last'); last_all = max(last_ref, last_dut); syms_ref = payload_syms_log_c(1:last_all,:); syms_dut = payload_syms_log_stm32(1:last_all,:); % error values err = abs(syms_ref - syms_dut); err_max = max(max(err)); printf("MAX_ERR %f\n", err_max); err_vals = err - err_limit; err_vals(err_vals<0) = 0; errors = err_vals > 0; num_errors = nnz(errors); %% TODO, print errors info (count locations,...) if (num_errors > 0) printf("%d ERRORS\n", num_errors); else printf("PASSED\n"); end % EVM evm = sqrt(meansq(err, 2)); evm_avg = mean(evm); printf("AVG_EVM %f\n", evm_avg); evm_max = max(evm); printf("MAX_EVM %f\n", evm_max); % Standard deviation sdv = std(err, 0, 2); sdv_max = max(sdv); printf("MAX_SDV %f\n", sdv_max); % Plot figure(1) figure(1, "visible", true) scatter(real(syms_ref), imag(syms_ref), "g", "+") hold on scatter(real(syms_dut), imag(syms_dut), "b", "o") print(1, "syms_plot.png", "-dpng") hold off codec2-1.2.0/stm32/unittest/lib/python/000077500000000000000000000000001445607075400176035ustar00rootroot00000000000000codec2-1.2.0/stm32/unittest/lib/python/sum_profiles.py000077500000000000000000000030421445607075400226660ustar00rootroot00000000000000#!/usr/bin/env python3 """ sum_profiles """ def sum_profiles(fin, frames): data = {} total_time = 0.0 active = False for line in fin: if (not active): active = line.startswith("Start Profile Data") elif line.startswith("End Profile Data"): active = False else: words = line.strip().split() if (len(words) == 3): part = words[0] time_str = words[1] time = float(time_str) total_time += time if (not part in data): data[part] = 0.0 data[part] += time # end else # end for line data_sorted = [(p, data[p]) for p in sorted(data, key=data.get, reverse=True)] print("Total time = {:.1f} ms".format(total_time)) if (frames): print("{:.1f} ms per frame".format(total_time / frames)) print("") for part, time in data_sorted: percent = int(100*(time / total_time)) print('{:2d}% - {:10.3f} - {}'.format(percent, time, part)) return(data) # end sum_profiles() ######################################## if __name__ == "__main__": import argparse #### Options argparser = argparse.ArgumentParser() argparser.add_argument("-f", "--frames", action="store", type=int, default=0, help="Number of frames") argparser.add_argument("file", metavar="FILE", help="file to read") args = argparser.parse_args() fin = open(args.file, "r") sum_profiles(fin, args.frames) codec2-1.2.0/stm32/unittest/lib/ut_travis.enc000066400000000000000000000006201445607075400207670ustar00rootroot00000000000000\|4Aj1 j&tyԖBR2خsa e Lؠ{{6_%eF`*YH{{xnR0wM#qe: _9 /+G 21B%+ZY؏2/}^t("(#Y7sJ[*Ȁ|2˜ֺ" _1t+tqaj!dvr+rg F[U{*U_Wl ~$pC+X>1 0 196{}I)/*pHg'O t$,x{w (_Sz2B;ve""codec2-1.2.0/stm32/unittest/scripts/000077500000000000000000000000001445607075400172035ustar00rootroot00000000000000codec2-1.2.0/stm32/unittest/scripts/check_ram_limit000077500000000000000000000013571445607075400222510ustar00rootroot00000000000000#!/bin/bash # # Compare the amount of RAM used in all stm32 programs to a # threshold. The idea is trap changes to x86 code that will # cause out of memory issues on the stm32 # # This can be run from the command line or via a ctest, it doesn't # require stm32 hardware. # # usage: # cd ~/codec2/stm32/build_stm32 # ./check_ram_limit [threshold] echo "Checking end of used RAM in all stm32 programs......." thresh=0x20006000 [[ $# -gt 0 ]] && thresh=$1 map_files=`find . -name '*.map'` for f in $map_files do ram_used=`cat $f | grep bss_end | sed 's/^.*\(0x[a-f0-9]*\).*/\1/'` printf "%-40s 0x%x\n" $f $ram_used [[ $ram_used -gt $thresh ]] && echo -e "\n ***** FAIL - LIMIT is $thresh !!! *****\n" && exit 1 done echo "PASS" exit 0 codec2-1.2.0/stm32/unittest/scripts/kill_run_stm32_tst000077500000000000000000000003261445607075400226730ustar00rootroot00000000000000#!/bin/bash list_descendants () { local children=$(ps -o pid= --ppid "$1") for pid in $children do list_descendants "$pid" done echo $children } kill $(list_descendants $(pidof -x run_stm32_tst)) codec2-1.2.0/stm32/unittest/scripts/plot_ofdm_demod_syms000077500000000000000000000027411445607075400233430ustar00rootroot00000000000000#!/usr/bin/env python3 """ plot_ofdm_demod_syms Plot QPSK constelations of reference demods. Later read stm32 log...... """ import numpy as np import os import sys ############################################################################## # Read Octave text file ############################################################################## def read_octave_text(fname): data = {} with open(fname, "r") as f: for line in f: if (line[0:8] == '# name: '): var = line.split()[2] print('found {}'.format(var)) line = next(f) if (line.startswith('# type: matrix')): line = next(f) rows = int(line.split()[2]) line = next(f) cols = int(line.split()[2]) print(' matrix({}, {})'.format(rows, cols)) data[var] = np.empty((rows, cols), np.float32) # Read rows one at a time for row in range(rows): line = next(f) data[var][row] = np.fromstring(line, np.float32, cols, ' ') # end while True # end with return(data) ############################################################################## # Main ############################################################################## ### Text not supported!!! ref_data = sio.loadmat('ofdm_demod_ref_log.mat') ref_data = read_octave_text('ofdm_demod_ref_log.txt') import pprint pp = pprint.PrettyPrinter(indent=4) pp.pprint(ref_data) codec2-1.2.0/stm32/unittest/scripts/run_all_codec2_tests000077500000000000000000000011271445607075400232270ustar00rootroot00000000000000#!/bin/bash # # run_all_codec2_tests # Find the scripts directory SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # Setup common variables source $SCRIPTS/run_tests_common.sh declare -i Fails=0 run_stm32_tst tst_codec2_enc 1300 "$@" || Fails+=1 run_stm32_tst tst_codec2_enc 700C "$@" || Fails+=1 run_stm32_tst tst_codec2_dec 1300 "$@" || Fails+=1 run_stm32_tst tst_codec2_dec 700C "$@" || Fails+=1 if (( $Fails == 0 )); then echo -e "\nAll Codec2 Tests PASSED" else echo -e "\n$Fails Codec2 Tests FAILED!" fi exit $Fails # vi:set ts=4 et sts=4: codec2-1.2.0/stm32/unittest/scripts/run_all_ldpc_tests000077500000000000000000000010061445607075400230060ustar00rootroot00000000000000#!/bin/bash # # run_all_ldpc_tests # Find the scripts directory SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # Setup common variables source $SCRIPTS/run_tests_common.sh declare -i Fails=0 run_stm32_tst tst_ldpc_enc "$@" || Fails+=1 run_stm32_tst tst_ldpc_dec ideal "$@" || Fails+=1 run_stm32_tst tst_ldpc_dec noise "$@" || Fails+=1 if (( $Fails == 0 )); then echo -e "\nAll LDPC Tests PASSED" else echo -e "\n$Fails LDPC Tests FAILED!" fi exit $Fails # vi:set ts=4 et sts=4: codec2-1.2.0/stm32/unittest/scripts/run_all_ofdm_tests000077500000000000000000000015211445607075400230130ustar00rootroot00000000000000#!/bin/bash # # run_all_ofdm_tests # Find the scripts directory SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # Setup common variables source $SCRIPTS/run_tests_common.sh declare -i Fails=0 run_stm32_tst tst_ofdm_mod plain "$@" || Fails+=1 run_stm32_tst tst_ofdm_mod ldpc "$@" || Fails+=1 run_stm32_tst tst_ofdm_demod quick "$@" || Fails+=1 run_stm32_tst tst_ofdm_demod ideal "$@" || Fails+=1 run_stm32_tst tst_ofdm_demod AWGN "$@" || Fails+=1 run_stm32_tst tst_ofdm_demod fade "$@" || Fails+=1 run_stm32_tst tst_ofdm_demod ldpc "$@" || Fails+=1 run_stm32_tst tst_ofdm_demod ldpc_AWGN "$@" || Fails+=1 run_stm32_tst tst_ofdm_demod ldpc_fade "$@" || Fails+=1 if (( $Fails == 0 )); then echo -e "\nAll ODFM Tests PASSED" else echo -e "\n$Fails ODFM Tests FAILED!" fi exit $Fails # vi:set ts=4 et sts=4: codec2-1.2.0/stm32/unittest/scripts/run_all_stm32_tests000077500000000000000000000007471445607075400230470ustar00rootroot00000000000000#!/bin/bash # # run_all_codec2_tests # Find the scripts directory SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # Setup common variables source $SCRIPTS/run_tests_common.sh declare -i Fails=0 run_all_codec2_tests "$@" || Fails+=1 run_all_ofdm_tests "$@" || Fails+=1 run_all_ldpc_tests "$@" || Fails+=1 if (( $Fails == 0 )); then echo -e "\nAll STM32 Tests PASSED" else echo -e "\n$Fails STM32 Tests FAILED!" fi exit $Fails # vi:set ts=4 et sts=4: codec2-1.2.0/stm32/unittest/scripts/run_stm32_prog000077500000000000000000000043011445607075400220120ustar00rootroot00000000000000#!/bin/bash ####################################### # Parse command line options # Options (starting with "--") are stored in $ARGS. # Non-options are taken as the test name (last one sticks). declare -A ARGS for arg in "$@"; do if [[ ${arg} == --* ]] ; then ARGS[${arg}]=true else ELF=${arg} fi done # Add the parameters for connecting via ssh to # your machine with an stm32 connected to # UT_SSH_PARAMS # e.g. # UT_SSH_PARAMS="-p 22 user@host_with_stm32" if [ -z "$UT_SSH_PARAMS" ]; then UT_SSH="" UT_SLEEP=${UT_SLEEP:=1} UI_SH_FIO="disable" else UT_SSH="ssh -f -L 3333:localhost:3333 $UT_SSH_PARAMS" UT_SLEEP=${UT_SLEEP:=4} UT_SH_FIO="enable" fi rm -f gdb_cmds if [ ! ${ARGS[--st-util]+_} ] ; then # OpenOCD if [ -n "$UT_SSH" ]; then cat <<-EEOOFF >> gdb_cmds shell ${UT_SSH} killall -q openocd\; sleep 1\; openocd -d0 -f board/stm32f4discovery.cfg 2> >(tee stderr.log >&2) | tee stdout.log & EEOOFF else cat <<-EEOOFF >> gdb_cmds shell killall -q openocd shell openocd -d0 -f board/stm32f4discovery.cfg 2> >(tee stderr.log >&2) | tee stdout.log & EEOOFF fi cat <<-EEOOFF >> gdb_cmds shell sleep ${UT_SLEEP} target remote :3333 monitor arm semihosting enable monitor arm semihosting_fileio $UT_SH_FIO EEOOFF SHUTDOWN="monitor shutdown" else # ST-Util echo "---------------------- STARTING gdb/st-util ------------------------------" cat <<-EEOOFF >> gdb_cmds shell st-util --verbose=0 --semihosting 2>stutil_stderr.log >stutil_stdout.log & shell sleep ${UT_SLEEP} target remote :4242 EEOOFF SHUTDOWN="" fi if [ ! ${ARGS[--noload]+_} ] ; then cat <<-EEOOFF >> gdb_cmds load EEOOFF fi cat <<-EEOOFF >> gdb_cmds monitor reset halt monitor adapter speed 4000 break EndofMain break abort EEOOFF if [ -z ${ARGS[--debug]+_} ] ; then cat <<-EEOOFF >> gdb_cmds shell printf "\n----------------------------STARTING PROGRAM-------------------------\n\n" continue set confirm off $SHUTDOWN quit EEOOFF arm-none-eabi-gdb -batch -x gdb_cmds ${ELF} else arm-none-eabi-gdb -x gdb_cmds ${ELF} fi codec2-1.2.0/stm32/unittest/scripts/run_stm32_tst000077500000000000000000000031011445607075400216520ustar00rootroot00000000000000#!/bin/bash # # run_stm32_tst [--noload] [--st-util] # Find the scripts directory SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # Setup common variables source $SCRIPTS/run_tests_common.sh declare -i Fails=0 ##################################################################### LOAD=${ARGS[--noload]:+--noload} STUTIL=${ARGS[--st-util]:+--st-util} RUN_DIR="${UNITTEST_BASE}/test_run/${FULL_TEST_NAME}" echo -e "test full name: ${FULL_TEST_NAME}" setup_common "${RUN_DIR}" if [ ! -f "${SCRIPTS}/${TEST}_setup" ]; then echo -e "\nERROR: scripts/${TEST}_setup not found!" echo "Test name correct?" echo "valid test names:" cd scripts; ls tst*setup | sed 's/_setup//' exit 1 fi # Call setup - run - check scripts ${TEST}_setup ${TEST} ${TEST_OPT} --clean || { echo "ERROR in ${TEST}_setup! Exiting..."; exit 1; } cd "${RUN_DIR}" run_stm32_prog ${UNITTEST_BIN}/${TEST}.elf ${LOAD} ${OPENOCD} | tee gdb.log [ ! ${PIPESTATUS[0]} -eq 0 ] && { echo "ERROR in run_stm32_prog! Exiting..."; exit 1; } # stop now if we see an assert() fire, no point running check phase grep -q assertion gdb.log && exit 1 ${TEST}_check ${TEST} ${TEST_OPT} 2>&1 | tee check.log if [ ! "${PIPESTATUS[0]}" -eq 0 ]; then let Fails=($Fails + 1) fi sleep 5 # Delay for st-util to close if (( $Fails == 0 )); then echo -e "\nTest ${FULL_TEST_NAME} PASSED" else echo -e "\nTest ${FULL_TEST_NAME} FAILED!" cat ${RUN_DIR}/check.log echo -e "\n -> look at log files in: ${RUN_DIR}:" ls ${RUN_DIR} fi exit $Fails # vi:set ts=4 et sts=4: codec2-1.2.0/stm32/unittest/scripts/run_tests_common.sh000066400000000000000000000042051445607075400231360ustar00rootroot00000000000000# This file must be "sourced" from a parent shell! # # run_tests_common.sh # # This is a collection of common variable settings for stm32 unit tests. # # The variable $SCRIPTS must be set when this is called. if [ -z ${SCRIPTS+x} ]; then echo "Error, run_tests_common.sh requires that \$SCRIPTS be set!" exit 1 fi ####################################### # Set default directories based on the parent of the SCRIPTS variable. set -a #UNITTEST_BASE - Location of STM32 Unittests and files UNITTEST_BASE="$( cd "$( dirname "${SCRIPTS}" )" >/dev/null && pwd )" # STM32_BASE - Base directory of Stm32 files STM32_BASE="$( cd "$( dirname "${UNITTEST_BASE}" )" >/dev/null && pwd )" # STM32_BUILD - Build directory of Stm32 files STM32_BUILD="${STM32_BASE}/build_stm32" # UNITTEST_BIN - Location of STM32 unittest binaries UNITTEST_BIN="${STM32_BUILD}/unittest/src" # CODEC2_BASE - Base directory of Codec2 CODEC2_BASE="$( cd "$( dirname "${STM32_BASE}" )" >/dev/null && pwd )" # CODEC2_BIN - Location of x86 utiliy programs for Codec2 CODEC2_BIN="${CODEC2_BASE}/build_linux/src" # CODEC2_UTST - Location of x86 utiliy programs for Codec2 unittest CODEC2_UTST="${CODEC2_BASE}/build_linux/unittest" set +a ####################################### # Add directories to PATH export PATH=${PATH}:${SCRIPTS}:${CODEC2_BIN}:${CODEC2_UTST} ####################################### # Parse command line options # Options (starting with "--") are stored in $ARGS. # Non-options are taken as the test name, then as a test option (optional) declare -A ARGS unset TEST unset TEST_OPT for arg in "$@"; do if [[ ${arg} == --* ]] ; then ARGS[${arg}]=true else if [ -z ${TEST+x} ]; then TEST=${arg} else TEST_OPT=${arg} fi fi done # Prepend the common test name to the option if given if [ -n "$TEST_OPT" ] ; then FULL_TEST_NAME="${TEST}_${TEST_OPT}" else FULL_TEST_NAME="${TEST}" fi ####################################### # A function for setup setup_common () { if [ ${ARGS[--clean]+_} ] ; then if [ -d "${1}" ] ; then rm -rf "${1}"; fi fi # Make run directory if needed if [ ! -d "${1}" ] ; then mkdir -p "${1}"; fi } codec2-1.2.0/stm32/unittest/scripts/setup.sh000066400000000000000000000010561445607075400207010ustar00rootroot00000000000000# This file must be "sourced" from a parent shell! # # setup.sh # # This is a collection of common variable settings for manually running # stm32 unit tests. # # This assumes it is called from the "stm32/unittests" directory!!! SCRIPTS="${PWD}/scripts" # Setup common variables source $SCRIPTS/run_tests_common.sh ####################################### # Add directories to PATH(s) export PATH=${SCRIPTS}:${PATH} export PATH=${CODEC2_BIN}:${CODEC2_UTST}:${CODEC2_UTST_BIN}:${CODEC2_SCRIPT}:${PATH} export LD_LIBRARY_PATH=${CODEC2_BIN}:${LD_LIBRARY_PATH} codec2-1.2.0/stm32/unittest/scripts/stm_stderr.txt000066400000000000000000000000561445607075400221330ustar00rootroot00000000000000semihosting test - stderr Error 2 opening fin codec2-1.2.0/stm32/unittest/scripts/stm_stdout.txt000066400000000000000000000000321445607075400221440ustar00rootroot00000000000000semihosting test - stdout codec2-1.2.0/stm32/unittest/scripts/sum_profiles000066400000000000000000000024511445607075400216370ustar00rootroot00000000000000#!/usr/bin/env python3 """ sum_profiles """ def sum_profiles(fin, frames): data = {} total_time = 0.0 for line in fin: words = line.strip().split() if (len(words) == 3): part = words[0] time_str = words[1] time = float(time_str) total_time += time if (not part in data): data[part] = 0.0 data[part] += time data_sorted = [(p, data[p]) for p in sorted(data, key=data.get, reverse=True)] print("Total time = {:.1f} ms".format(total_time)) if (frames): print("{:.1f} per frame".format(total_time / args.frames)) print("") for part, time in data_sorted: percent = int(100*(time / total_time)) print('{:2d}% - {:10.3f} - {}'.format(percent, time, part)) return(data) # end sum_profiles() ######################################## if __name__ == "__main__": import argparse #### Options argparser = argparse.ArgumentParser() argparser.add_argument("-f", "--frames", action="store", type=int, default=0, help="Number of frames") argparser.add_argument("file", metavar="FILE", help="file to read") args = argparser.parse_args() fin = open(args.file, "r") sum_profiles(fin, args.frames) codec2-1.2.0/stm32/unittest/scripts/tst_api_demod_check000077500000000000000000000167741445607075400231200ustar00rootroot00000000000000#!/bin/bash # # tst_api_demod_check # # Setup input and reference data for one of several versions of this test. # Find the scripts directory SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # Setup common variables source $SCRIPTS/run_tests_common.sh # RUN_DIR - Directory where test will be run RUN_DIR="${UNITTEST_BASE}/test_run/${FULL_TEST_NAME}" # Call common setup function to make the directory setup_common "${RUN_DIR}" # Change to test directory cd "${RUN_DIR}" # way of performing a rough comparison of two output speech files that are not exactly the same function compare_energy() { energy_ref=$(python3 -c "import numpy as np; x=np.fromfile(\"ref_demod.raw\",dtype=\"int16\").astype(float); print(10*np.log10(np.dot(x,x)))") energy_target=$(python3 -c "import numpy as np; x=np.fromfile(\"stm_out.raw\",dtype=\"int16\").astype(float); print(10*np.log10(np.dot(x,x)))") printf "ref energy: %f target energy: %f\n" $energy_ref $energy_target python3 -c "import sys; sys.exit(1) if abs($energy_ref-$energy_target) < 1 else sys.exit(0)" if [[ $? -eq 1 ]]; then echo "energy compare OK"; else echo "energy compare BAD"; let Fails=($Fails + 1) fi } ##################################################################### ## Test CHECK actions: declare -i Fails=0 case "${TEST_OPT}" in 700D_plain_test) echo "Check reference decode" p1=$(grep '^BER\.*: 0.000' ref_gen.log | wc -l) p2=$(grep '^Coded BER: 0.000' ref_gen.log | wc -l) if [[ $p1 -eq 1 && $p2 -eq 1 ]]; then echo "OK"; else echo "BAD"; let Fails=($Fails + 1) fi # echo "Check target decode" p1=$(grep '^BER\.*: 0.000' stderr.log | wc -l) p2=$(grep '^Coded BER: 0.000' stderr.log | wc -l) if [[ $p1 -eq 1 && $p2 -eq 1 ]]; then echo "OK"; else echo "BAD"; let Fails=($Fails + 1) fi ;; 700D_AWGN_test) echo "Check reference decode" uber_ref=$(cat ref_gen.log | sed -n "s/^BER.*: \([0-9..]*\).*Tbits.*/\1/p") cber_ref=$(cat ref_gen.log | sed -n "s/^Coded BER.*: \([0-9..]*\).*Tbits.*/\1/p") printf "REF uncoded BER: %f coded BER: %f\n" $uber_ref $cber_ref # As per notes in tst_api_demod_setup, coded BER is unreliable # for such a short test, so we'll just sanity check the # reference uncoded BER here. Bash can't compare floats # .... so use return code of some python script python3 -c "import sys; sys.exit(1) if $uber_ref < 0.1 else sys.exit(0)" if [[ $? -eq 1 ]]; then echo "OK"; else echo "BAD"; let Fails=($Fails + 1) fi echo "Check target decode" uber_target=$(cat stderr.log | sed -n "s/^BER.*: \([0-9..]*\).*Tbits.*/\1/p") cber_target=$(cat stderr.log | sed -n "s/^Coded BER.*: \([0-9..]*\).*Tbits.*/\1/p") printf "TARGET uncoded BER: %f coded BER: %f\n" $uber_target $cber_target python3 -c "import sys; sys.exit(1) if $uber_target < 0.1 and abs($cber_ref-$cber_target) < 0.01 else sys.exit(0)" if [[ $? -eq 1 ]]; then echo "OK"; else echo "BAD"; let Fails=($Fails + 1) fi ;; 700D_AWGN_codec) # 1/ The two output files sound OK, and when plotted look very # similar, but they don't match on a sample-sample basis. # 2/ Suspect some small state difference, or perhaps random # number generator diverging, sampling codec2_rand() at the # end of the x86 and stm32 test programs might show up any # differences. # 3/ At this stage - we can't make sample by sample automatic # tests work. However there is value in running the test # to ensure no asserts are hit and the code doesn't crash # (e.g. due to an out of memory issues). A simple energy # comparison is used on the output speech files, which # will trap any large errors. # 4/ We can also manually evaluate the output decoded speech by # listening to the output speech files. compare_energy; # make sure execution time stays within bounds execution_time=mktmp cat stdout.log | sed -n "s/.*freedv_rx \([0-9..]*\) msecs/\1/p" > $execution_time python3 -c "import sys; import numpy as np; x=np.loadtxt(\"$execution_time\"); print(\"execution time max:: %5.2f mean: %5.2f ms\" % (np.max(x), np.mean(x))); sys.exit(1) if np.max(x) < 80.0 else sys.exit(0)" if [[ $? -eq 1 ]]; then echo "execution time OK"; else echo "BAD"; let Fails=($Fails + 1) fi ;; 700E_plain_test) echo "Check reference decode" p1=$(grep '^BER\.*: 0.000' ref_gen.log | wc -l) p2=$(grep '^Coded BER: 0.000' ref_gen.log | wc -l) if [[ $p1 -eq 1 && $p2 -eq 1 ]]; then echo "OK"; else echo "BAD"; let Fails=($Fails + 1) fi # echo "Check target decode" p1=$(grep '^BER\.*: 0.000' stderr.log | wc -l) p2=$(grep '^Coded BER: 0.000' stderr.log | wc -l) if [[ $p1 -eq 1 && $p2 -eq 1 ]]; then echo "OK"; else echo "BAD"; let Fails=($Fails + 1) fi ;; 700E_AWGN_test) echo "Check reference decode" uber_ref=$(cat ref_gen.log | sed -n "s/^BER.*: \([0-9..]*\).*Tbits.*/\1/p") cber_ref=$(cat ref_gen.log | sed -n "s/^Coded BER.*: \([0-9..]*\).*Tbits.*/\1/p") printf "REF uncoded BER: %f coded BER: %f\n" $uber_ref $cber_ref # As per notes in tst_api_demod_setup, coded BER is unreliable # for such a short test, so we'll just sanity check the # reference uncoded BER here. Bash can't compare floats # .... so use return code of some python script python3 -c "import sys; sys.exit(1) if $uber_ref < 0.1 else sys.exit(0)" if [[ $? -eq 1 ]]; then echo "OK"; else echo "BAD"; let Fails=($Fails + 1) fi echo "Check target decode" uber_target=$(cat stderr.log | sed -n "s/^BER.*: \([0-9..]*\).*Tbits.*/\1/p") cber_target=$(cat stderr.log | sed -n "s/^Coded BER.*: \([0-9..]*\).*Tbits.*/\1/p") printf "TARGET uncoded BER: %f coded BER: %f\n" $uber_target $cber_target python3 -c "import sys; sys.exit(1) if $uber_target < 0.1 and abs($cber_ref-$cber_target) < 0.01 else sys.exit(0)" if [[ $? -eq 1 ]]; then echo "OK"; else echo "BAD"; let Fails=($Fails + 1) fi ;; 700E_AWGN_codec) # 1/ The two output files sound OK, and when plotted look very # similar, but they don't match on a sample-sample basis. # 2/ Suspect some small state difference, or perhaps random # number generator diverging, sampling codec2_rand() at the # end of the x86 and stm32 test programs might show up any # differences. # 3/ At this stage - we can't make sample by sample automatic # tests work. However there is value in running the test # to ensure no asserts are hit and the code doesn't crash # (e.g. due to an out of memory issues). A simple energy # comparison is used on the output speech files, which # will trap any large errors. # 4/ We can also manually evaluate the output decoded speech by # listening to the output speech files. compare_energy; # make sure execution time stays within bounds execution_time=mktmp cat stdout.log | sed -n "s/.*freedv_rx \([0-9..]*\) msecs/\1/p" > $execution_time python3 -c "import sys; import numpy as np; x=np.loadtxt(\"$execution_time\"); print(\"execution time max:: %5.2f mean: %5.2f ms\" % (np.max(x), np.mean(x))); sys.exit(1) if np.max(x) < 80.0 else sys.exit(0)" if [[ $? -eq 1 ]]; then echo "execution time OK"; else echo "BAD"; let Fails=($Fails + 1) fi ;; 1600_plain_codec) compare_energy; ;; *) printf "ERROR: invalid test option. Valid options are:\n 700D_plain_test\n 700D_AWGN_test\n 700D_plain_codec\n 1600_plain_codec\n" exit 1 esac if (( $Fails == 0 )); then echo -e "\nTest PASSED" else echo -e "\nTest FAILED!" fi exit $Fails codec2-1.2.0/stm32/unittest/scripts/tst_api_demod_setup000077500000000000000000000117631445607075400231740ustar00rootroot00000000000000#!/bin/bash # # tst_api_demod_setup # # Setup input and reference data for one of several versions of this test. # Find the scripts directory SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # Setup common variables source $SCRIPTS/run_tests_common.sh # RUN_DIR - Directory where test will be run RUN_DIR="${UNITTEST_BASE}/test_run/${FULL_TEST_NAME}" # Call common setup function to make the directory setup_common "${RUN_DIR}" # Change to test directory cd "${RUN_DIR}" ##################################################################### ## Test SETUP actions: case "${TEST_OPT}" in 700D_plain_test ) # Config is , echo "71000010" > stm_cfg.txt # # Copy N frames of a raw audio file to stm_in.raw. dd bs=1280 count=100 if=../../../../raw/hts1.raw of=spch_in.raw \ > setup.log 2>&1 freedv_tx 700D spch_in.raw stm_in.raw --testframes --txbpf 0 \ >> setup.log 2>&1 # # Reference freedv_rx 700D stm_in.raw ref_demod.raw -v --testframes \ > ref_gen.log 2>&1 ;; 700D_AWGN_test ) # Config is , echo "71000010" > stm_cfg.txt # # Copy N frames of a raw audio file to stm_in.raw. dd bs=1280 count=96 if=../../../../raw/hts1.raw of=spch_in.raw \ > setup.log 2>&1 freedv_tx 700D spch_in.raw mod_bits.raw --testframes --txbpf 0 \ >> setup.log 2>&1 ch mod_bits.raw stm_in.raw --No -20 -f -5 2>&1 | tee setup.log # Reference: - When the OFDM modem initially syncs, it often # has residual freq offset that causes abnormally # high LDPC decoder bit errors forthe first few # seconds. This leads to a high coded BER being # reported for short duration tests. This # settles down after a few seconds, and we get # the expected coded BER when averaging over # longer periods (e.g. 60s). However this # particular test is necessarily short due to the # slow speed of the semihosting system. It is # therefore sufficient to check that the # performance is similar to the x86 C version, # rather than expecting a low coded BER for a # short run. freedv_rx 700D stm_in.raw ref_demod.raw -v --testframes 2>&1 --discard | tee ref_gen.log ;; 700D_AWGN_codec ) # Config is , echo "70000020" > stm_cfg.txt # # Copy N frames of a raw audio file to stm_in.raw. dd bs=1280 count=48 if=../../../../raw/hts1.raw of=spch_in.raw \ > setup.log 2>&1 freedv_tx 700D spch_in.raw mod_bits.raw --txbpf 0 \ >> setup.log 2>&1 # # Reference - give it a hard time with some noise to exercise the LDPC codec and get us to max CPU ch mod_bits.raw stm_in.raw --No -20 -f -5 2>&1 | tee setup.log freedv_rx 700D stm_in.raw ref_demod.raw -v \ > ref_gen.log 2>&1 ;; 700E_plain_test ) # Config is , echo "81000010" > stm_cfg.txt # # Copy N frames of a raw audio file to stm_in.raw. dd bs=1280 count=100 if=../../../../raw/hts1.raw of=spch_in.raw \ > setup.log 2>&1 freedv_tx 700E spch_in.raw stm_in.raw --testframes --txbpf 1 \ >> setup.log 2>&1 # # Reference freedv_rx 700E stm_in.raw ref_demod.raw -v --testframes \ > ref_gen.log 2>&1 ;; 700E_AWGN_test ) # Config is , echo "81000010" > stm_cfg.txt # # Copy N frames of a raw audio file to stm_in.raw. dd bs=1280 count=96 if=../../../../raw/hts1.raw of=spch_in.raw \ > setup.log 2>&1 freedv_tx 700E spch_in.raw mod_bits.raw --testframes --txbpf 1 \ >> setup.log 2>&1 ch mod_bits.raw stm_in.raw --No -22 -f -5 2>&1 | tee setup.log freedv_rx 700E stm_in.raw ref_demod.raw -v --testframes 2>&1 --discard | tee ref_gen.log ;; 700E_AWGN_codec ) # Config is , echo "80000020" > stm_cfg.txt # # Copy N frames of a raw audio file to stm_in.raw. dd bs=1280 count=48 if=../../../../raw/hts1.raw of=spch_in.raw \ > setup.log 2>&1 freedv_tx 700E spch_in.raw mod_bits.raw --txbpf 1 \ >> setup.log 2>&1 # # Reference - give it a hard time with some noise to exercise the LDPC codec and get us to max CPU ch mod_bits.raw stm_in.raw --No -20 -f -5 2>&1 | tee setup.log freedv_rx 700E stm_in.raw ref_demod.raw -v \ > ref_gen.log 2>&1 ;; 1600_plain_codec ) # Config is , echo "00000010" > stm_cfg.txt # # Copy N frames of a raw audio file to stm_in.raw. dd bs=320 count=100 if=../../../../raw/hts1.raw of=spch_in.raw > setup.log 2>&1 freedv_tx 1600 spch_in.raw stm_in.raw >> setup.log 2>&1 # # Reference freedv_rx 1600 stm_in.raw ref_demod.raw -v \ > ref_gen.log 2>&1 ;; *) printf "ERROR: invalid test option. Valid options are:\n 700[DE]_plain_test\n 700[DE]_AWGN_test\n 700[DE]_AWGN_codec\n 1600_plain_codec\n" exit 1 ;; esac codec2-1.2.0/stm32/unittest/scripts/tst_api_mod_check000077500000000000000000000051471445607075400225770ustar00rootroot00000000000000#!/bin/bash # # tst_api_mod_check # # Setup input and reference data for one of several versions of this test. # Find the scripts directory SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # Setup common variables source $SCRIPTS/run_tests_common.sh # RUN_DIR - Directory where test will be run RUN_DIR="${UNITTEST_BASE}/test_run/${FULL_TEST_NAME}" # Call common setup function to make the directory setup_common "${RUN_DIR}" # Change to test directory cd "${RUN_DIR}" ##################################################################### ## Test CHECK actions: declare -i Fails=0 case "${TEST_OPT}" in 700D_TEST) # echo -e "\nReference check" if freedv_rx 700D ref_mod.raw ref_rx.raw --testframes; then echo "Passed" else echo "Failed" let Fails=($Fails + 1) fi # echo -e "\nTarget check" if freedv_rx 700D stm_out.raw stm_rx.raw --testframes; then echo "Passed" else echo "Failed" let Fails=($Fails + 1) fi # echo -e "\nCompare output binary data" if compare_ints -s -b2 -t4 ref_mod.raw stm_out.raw; then echo "Passed" else echo "Failed" let Fails=($Fails + 1) fi ;; 700D_CODEC) # echo -e "\nCompare output binary data" if compare_ints -s -b2 -t4 ref_mod.raw stm_out.raw; then echo "Passed" else echo "Failed" let Fails=($Fails + 1) fi ;; 700E_TEST) # echo -e "\nReference check" if freedv_rx 700E ref_mod.raw ref_rx.raw --testframes; then echo "Passed" else echo "Failed" let Fails=($Fails + 1) fi # echo -e "\nTarget check" if freedv_rx 700E stm_out.raw stm_rx.raw --testframes; then echo "Passed" else echo "Failed" let Fails=($Fails + 1) fi # echo -e "\nCompare output binary data" if compare_ints -s -b2 -t4 ref_mod.raw stm_out.raw; then echo "Passed" else echo "Failed" let Fails=($Fails + 1) fi ;; 700E_CODEC) # echo -e "\nCompare output binary data" if compare_ints -s -b2 -t4 ref_mod.raw stm_out.raw; then echo "Passed" else echo "Failed" let Fails=($Fails + 1) fi ;; esac if (( $Fails == 0 )); then echo -e "\nTest PASSED" else echo -e "\nTest FAILED!" fi exit $Fails codec2-1.2.0/stm32/unittest/scripts/tst_api_mod_setup000077500000000000000000000043471445607075400226630ustar00rootroot00000000000000#!/bin/bash # # tst_api_mod_setup # # Setup input and reference data for one of several versions of this test. # Find the scripts directory SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # Setup common variables source $SCRIPTS/run_tests_common.sh # RUN_DIR - Directory where test will be run RUN_DIR="${UNITTEST_BASE}/test_run/${FULL_TEST_NAME}" # Call common setup function to make the directory setup_common "${RUN_DIR}" # Change to test directory cd "${RUN_DIR}" ##################################################################### ## Test SETUP actions: case "${TEST_OPT}" in 700D_TEST ) # Config is , , , echo "71000000" > stm_cfg.txt # # Copy N frames of a raw audio file to stm_in.raw. dd bs=1280 count=48 if=../../../../raw/hts1.raw of=stm_in.raw \ > setup.log 2>&1 # # Reference freedv_tx 700D stm_in.raw ref_mod.raw --testframes --txbpf 0 \ > ref_gen.log 2>&1 ;; 700D_CODEC ) # Config is , , , echo "70000000" > stm_cfg.txt # # Copy N frames of a raw audio file to stm_in.raw. dd bs=1280 count=48 if=../../../../raw/hts1.raw of=stm_in.raw \ > setup.log 2>&1 # # Reference freedv_tx 700D stm_in.raw ref_mod.raw --txbpf 0 \ > ref_gen.log 2>&1 ;; 700E_TEST ) # Config is , , , echo "81110000" > stm_cfg.txt # # Copy N frames of a raw audio file to stm_in.raw. dd bs=1280 count=48 if=../../../../raw/hts1.raw of=stm_in.raw \ > setup.log 2>&1 # # Reference freedv_tx 700E stm_in.raw ref_mod.raw --testframes --txbpf 1 --clip 1 \ > ref_gen.log 2>&1 ;; 700E_CODEC ) # Config is , , , echo "80110000" > stm_cfg.txt # # Copy N frames of a raw audio file to stm_in.raw. dd bs=1280 count=48 if=../../../../raw/hts1.raw of=stm_in.raw \ > setup.log 2>&1 # # Reference freedv_tx 700E stm_in.raw ref_mod.raw --txbpf 1 --clip 1 \ > ref_gen.log 2>&1 ;; *) printf "ERROR: invalid test option. Valid options are:\n 700D_TEST\n 700D_CODEC\n 700E_TEST\n 700E_CODEC\n" exit 1 ;; esac exit 0 codec2-1.2.0/stm32/unittest/scripts/tst_codec2_dec_check000077500000000000000000000015201445607075400231300ustar00rootroot00000000000000#!/bin/bash # # tst_codec2_dec_check # # Setup input and reference data for one of several versions of this test. # Find the scripts directory SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # Setup common variables source $SCRIPTS/run_tests_common.sh # RUN_DIR - Directory where test will be run RUN_DIR="${UNITTEST_BASE}/test_run/${FULL_TEST_NAME}" # Call common setup function to make the directory setup_common "${RUN_DIR}" # Change to test directory cd "${RUN_DIR}" ##################################################################### ## Test CHECK actions: declare -i Fails=0 #case "${TEST_OPT}" in # 1300) # 700C) # esac echo -e "\nMust manually listen to this!" aplay -f S16_LE stm_out.raw if (( $Fails == 0 )); then echo -e "\nTest PASSED" else echo -e "\nTest FAILED!" fi exit $Fails codec2-1.2.0/stm32/unittest/scripts/tst_codec2_dec_setup000077500000000000000000000025611445607075400232210ustar00rootroot00000000000000#!/bin/bash # # tst_codec2_dec_setup # # Setup input and reference data for one of several versions of this test. # Find the scripts directory SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # Setup common variables source $SCRIPTS/run_tests_common.sh # RUN_DIR - Directory where test will be run RUN_DIR="${UNITTEST_BASE}/test_run/${FULL_TEST_NAME}" # Call common setup function to make the directory setup_common "${RUN_DIR}" # Change to test directory cd "${RUN_DIR}" ##################################################################### ## Test SETUP actions: case "${TEST_OPT}" in 1300 ) # Config is , echo "41000000" > stm_cfg.txt # # Copy N frames of a raw audio file to stm_in.raw. dd bs=2560 count=30 if=../../../../raw/hts1.raw of=spch_in.raw \ > setup.log 2>&1 c2enc 1300 spch_in.raw stm_in.raw >> setup.log 2>&1 # # Reference c2dec 1300 stm_in.raw ref_dec.raw > ref_gen.log 2>&1 ;; 700C ) # Config is , echo "81000000" > stm_cfg.txt # # Copy N frames of a raw audio file to stm_in.raw. dd bs=2560 count=30 if=../../../../raw/hts1.raw of=spch_in.raw \ > setup.log 2>&1 c2enc 700C spch_in.raw stm_in.raw >> setup.log 2>&1 # # Reference c2dec 700C stm_in.raw ref_dec.raw > ref_gen.log 2>&1 ;; esac codec2-1.2.0/stm32/unittest/scripts/tst_codec2_enc_check000077500000000000000000000023651445607075400231520ustar00rootroot00000000000000#!/bin/bash # # tst_codec2_enc_check # # Setup input and reference data for one of several versions of this test. # Find the scripts directory SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # Setup common variables source $SCRIPTS/run_tests_common.sh # RUN_DIR - Directory where test will be run RUN_DIR="${UNITTEST_BASE}/test_run/${FULL_TEST_NAME}" # Call common setup function to make the directory setup_common "${RUN_DIR}" # Change to test directory cd "${RUN_DIR}" ##################################################################### ## Test CHECK actions: declare -i Fails=0 case "${TEST_OPT}" in 1300) echo -e "\nCompare output binary data" compare_ints -b1 -c ref_enc.raw stm_out.raw error_count=$? if [[ $error_count -le 2 ]]; then echo "Passed" else echo "Failed" let Fails=($Fails + 1) fi ;; 700C) echo -e "\nCompare output binary data" if compare_ints -b1 ref_enc.raw stm_out.raw; then echo "Passed" else echo "Failed" let Fails=($Fails + 1) fi ;; esac if (( $Fails == 0 )); then echo -e "\nTest PASSED" else echo -e "\nTest FAILED!" fi exit $Fails codec2-1.2.0/stm32/unittest/scripts/tst_codec2_enc_setup000077500000000000000000000024151445607075400232310ustar00rootroot00000000000000#!/bin/bash # # tst_codec2_enc_setup # # Setup input and reference data for one of several versions of this test. # Find the scripts directory SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # Setup common variables source $SCRIPTS/run_tests_common.sh # RUN_DIR - Directory where test will be run RUN_DIR="${UNITTEST_BASE}/test_run/${FULL_TEST_NAME}" # Call common setup function to make the directory setup_common "${RUN_DIR}" # Change to test directory cd "${RUN_DIR}" ##################################################################### ## Test SETUP actions: case "${TEST_OPT}" in 1300 ) # Config is , echo "40000000" > stm_cfg.txt # # Copy N frames of a raw audio file to stm_in.raw. dd bs=2560 count=30 if=../../../../raw/hts1.raw of=stm_in.raw \ > setup.log 2>&1 # # Reference c2enc 1300 stm_in.raw ref_enc.raw \ > ref_gen.log 2>&1 ;; 700C ) # Config is , echo "80000000" > stm_cfg.txt # # Copy N frames of a raw audio file to stm_in.raw. dd bs=2560 count=30 if=../../../../raw/hts1.raw of=stm_in.raw \ > setup.log 2>&1 # # Reference c2enc 700C stm_in.raw ref_enc.raw \ > ref_gen.log 2>&1 ;; esac codec2-1.2.0/stm32/unittest/scripts/tst_ldpc_dec_check000077500000000000000000000032271445607075400227210ustar00rootroot00000000000000#!/bin/bash # # tst_ldpc_enc_check # # Setup input and reference data for one of several versions of this test. # Find the scripts directory SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # Setup common variables source $SCRIPTS/run_tests_common.sh # RUN_DIR - Directory where test will be run RUN_DIR="${UNITTEST_BASE}/test_run/${FULL_TEST_NAME}" # Call common setup function to make the directory setup_common "${RUN_DIR}" # Change to test directory cd "${RUN_DIR}" ##################################################################### ## Test CHECK actions: declare -i Fails=0 case "${TEST_OPT}" in ideal) BER_LIMIT_RAW=0.0 BER_LIMIT_CODED=0.0 ;; noise) BER_LIMIT_RAW=0.15 BER_LIMIT_CODED=0.015 ;; esac echo -e "\nCompare output binary data" if compare_ints -b1 ref_out.raw stm_out.raw; then echo "Passed" else echo "Failed" let Fails=($Fails + 1) fi # echo -e "\nReference BER values" n=$(grep 'Raw.*BER:' ref_gen.log | awk '{print $7}') p1=$(echo $n '<=' ${BER_LIMIT_RAW} | bc) n=$(grep 'Coded.*BER:' ref_gen.log | awk '{print $7}') p2=$(echo $n '<=' ${BER_LIMIT_CODED} | bc) if [[ $p1 -eq 1 && $p2 -eq 1 ]]; then echo "Pass"; else echo "Fail"; let Fails=($Fails + 1); fi # echo -e "\nTarget BER values" n=$(grep 'Raw.*BER:' stderr.log | cut -d ' ' -f 7) p1=$(echo $n '<=' ${BER_LIMIT_RAW} | bc) n=$(grep 'Coded.*BER:' stderr.log | cut -d ' ' -f 7) p2=$(echo $n '<=' ${BER_LIMIT_CODED} | bc) if [[ $p1 -eq 1 && $p2 -eq 1 ]]; then echo "Pass"; else echo "Fail"; let Fails=($Fails + 1); fi if (( $Fails == 0 )); then echo -e "\nTest PASSED" else echo -e "\nTest FAILED!" fi exit $Fails codec2-1.2.0/stm32/unittest/scripts/tst_ldpc_dec_setup000077500000000000000000000024651445607075400230070ustar00rootroot00000000000000#!/bin/bash # # tst_ldpc_dec_setup # # Setup input and reference data for one of several versions of this test. # Find the scripts directory SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # Setup common variables source $SCRIPTS/run_tests_common.sh # RUN_DIR - Directory where test will be run RUN_DIR="${UNITTEST_BASE}/test_run/${FULL_TEST_NAME}" # Call common setup function to make the directory setup_common "${RUN_DIR}" # Change to test directory cd "${RUN_DIR}" ##################################################################### ## Test SETUP actions: case "${TEST_OPT}" in ideal ) # # Config is , , , # echo "00000000" > stm_cfg.txt ldpc_enc /dev/zero stm_in.raw --sd --code HRA_112_112 --testframes 6 \ > setup.log 2>&1 ldpc_dec stm_in.raw ref_out.raw --sd --code HRA_112_112 --testframes \ > ref_gen.log 2>&1 ;; noise ) # # Config is , , , # echo "00000000" > stm_cfg.txt ldpc_enc /dev/zero enc_out.raw --sd --code HRA_112_112 --testframes 24 \ > setup.log 2>&1 ldpc_noise enc_out.raw stm_in.raw 1 \ >> setup.log 2>&1 ldpc_dec stm_in.raw ref_out.raw --sd --code HRA_112_112 --testframes \ > ref_gen.log 2>&1 ;; esac exit 0 codec2-1.2.0/stm32/unittest/scripts/tst_ldpc_enc_check000077500000000000000000000025621445607075400227340ustar00rootroot00000000000000#!/bin/bash # # tst_ldpc_enc_check # # Setup input and reference data for one of several versions of this test. # Find the scripts directory SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # Setup common variables source $SCRIPTS/run_tests_common.sh # RUN_DIR - Directory where test will be run RUN_DIR="${UNITTEST_BASE}/test_run/${FULL_TEST_NAME}" # Call common setup function to make the directory setup_common "${RUN_DIR}" # Change to test directory cd "${RUN_DIR}" ##################################################################### ## Test CHECK actions: declare -i Fails=0 #case "${TEST_OPT}" in # # plain) # ;; # esac ##### TODO: ldpc_dec should be able to check this outputs, ##### it currently reports Tbits = 0! #echo -e "\nReference check" #if ofdm_demod ref_mod_out.raw ref_ofdm_demod.raw --testframes ${LDPC}; then # echo "Passed" #else # echo "Failed" # let Fails=($Fails + 1) #fi ## #echo -e "\nTarget check" #if ofdm_demod mod.raw stm_demod.raw --testframes ${LDPC}; then # echo "Passed" #else # echo "Failed" # let Fails=($Fails + 1) #fi ## echo -e "\nCompare output binary data" if compare_ints -b1 ref_out.raw stm_out.raw; then echo "Passed" else echo "Failed" let Fails=($Fails + 1) fi # if (( $Fails == 0 )); then echo -e "\nTest PASSED" else echo -e "\nTest FAILED!" fi exit $Fails codec2-1.2.0/stm32/unittest/scripts/tst_ldpc_enc_setup000077500000000000000000000016341445607075400230160ustar00rootroot00000000000000#!/bin/bash # # tst_ldpc_enc_setup # # Setup input and reference data for one of several versions of this test. # Find the scripts directory SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # Setup common variables source $SCRIPTS/run_tests_common.sh # RUN_DIR - Directory where test will be run RUN_DIR="${UNITTEST_BASE}/test_run/${FULL_TEST_NAME}" # Call common setup function to make the directory setup_common "${RUN_DIR}" # Change to test directory cd "${RUN_DIR}" ##################################################################### ## Test SETUP actions: #case "${TEST_OPT}" in # # plain ) # # Config is , , , # echo "00000000" > stm_cfg.txt ofdm_get_test_bits --out stm_in.raw --frames 6 --verbose \ > setup.log 2>&1 ldpc_enc stm_in.raw ref_out.raw --code HRA_112_112 \ > ref_gen.log 2>&1 # ;; # # esac exit 0 codec2-1.2.0/stm32/unittest/scripts/tst_ofdm_demod_check000077500000000000000000000426551445607075400232710ustar00rootroot00000000000000#!/usr/bin/env python3 """ tst_ofdm_demod_check Testing for tst_ofdm_demod_* tests Usage tst_ofdm_demod_check quick|ideal|AWGN|fade|profile|ldpc|ldpc_AWGN|ldpc_fade Checks are different for each option, but similar - Convert stm32 output to octave text format (stm32 does not have memory for this) - ... """ import numpy as np import math import argparse import struct import os import sys if ("UNITTEST_BASE" in os.environ): sys.path.append(os.environ["UNITTEST_BASE"] + "/lib/python") else: sys.path.append("../../lib/python") # assume in test run dir import sum_profiles Nbitsperframe = 238 ############################################################################## # Read Octave text file ############################################################################## def read_octave_text(f): if (args.verbose): print('read_octave_text()') data = {} for line in f: if (line[0:8] == "# name: "): var = line.split()[2] if (args.verbose): print(' var "{}"'.format(var)) line = next(f) if (line.startswith("# type: matrix")): line = next(f) rows = int(line.split()[2]) line = next(f) cols = int(line.split()[2]) if (cols > 0): data[var] = np.empty((rows, cols), np.float32) # Read rows one at a time for row in range(rows): try: line = next(f) data[var][row] = np.fromstring(line, np.float32, cols, " ") except: print("Error reading row {} of var {}".format(row, var)) raise elif (line.startswith("# type: complex matrix")): line = next(f) rows = int(line.split()[2]) line = next(f) cols = int(line.split()[2]) if (cols > 0): data[var] = np.empty((rows, cols), np.complex64) # Read rows one at a time for row in range(rows): try: line = next(f) # " (r,i) (r,i) ..." col = 0 for tpl in line.split(): real, imag = tpl.strip("(,)").split(",") data[var][row][col] = float(real) + (1j * float(imag)) col += 1 except: print("Error reading row {} of var {}".format(row, var)) raise # end for line in f return(data) ############################################################################## # Read stm32 diag data, syms, amps for each frame ############################################################################## def read_tgt_syms(f): # TODO: don't use hardcoded values... syms = np.zeros((100, 112), np.complex64) amps = np.zeros((100, 112), np.float32) row = 0 while True: # syms buf = f.read(112 * 8) if (len(buf) < (112 * 8)): break row_lst = struct.unpack("<224f", buf) ary = np.array(row_lst, np.float32) ary.dtype = np.complex64 syms[row] = ary # amps buf = f.read(112 * 4) if (len(buf) < (112 * 4)): break row_lst = struct.unpack("<112f", buf) ary = np.array(row_lst, np.float32) amps[row] = ary # row += 1 if (row >= 100): break # end While True return(syms, amps) # end read_stm_syms() ############################################################################## # Write out in octave text format as 2 matricies ############################################################################## def write_syms_as_octave(syms, amps): with open("ofdm_demod_log.txt", "w") as f: # syms rows = syms.shape[0] cols = syms.shape[1] f.write("# name: payload_syms_log_stm32\n") f.write("# type: complex matrix\n") f.write("# rows: {}\n".format(rows)) f.write("# columns: {}\n".format(cols)) for row in range(rows): for col in range(cols): f.write(" ({},{})".format( syms[row][col].real, syms[row][col].imag )) f.write("\n") # amps rows = amps.shape[0] cols = amps.shape[1] f.write("\n") f.write("# name: payload_amps_log_stm32\n") f.write("# type: matrix\n") f.write("# rows: {}\n".format(rows)) f.write("# columns: {}\n".format(cols)) for row in range(rows): for col in range(cols): f.write(" {}".format( amps[row][col] )) f.write("\n") # end write_syms_as_octave() ############################################################################## # Main ############################################################################## #### Options argparser = argparse.ArgumentParser() argparser.add_argument("-v", "--verbose", action="store_true") argparser.add_argument("test", action="store") argparser.add_argument("test_opt", action="store", choices=["quick", "ideal", "AWGN", "fade", "profile", "ldpc", "ldpc_AWGN", "ldpc_fade" ]) args = argparser.parse_args() # Use ENV value of UNITTEST_BASE from upper level shell script (default to .) if ('UNITTEST_BASE' in os.environ): run_dir = os.environ['UNITTEST_BASE'] + "/test_run/" run_dir += args.test + "_" + args.test_opt print(run_dir) os.chdir(run_dir) #### Settings # Defaults, (for tests without channel degradation, results should be close to ideal) max_ber = 0.001 # Max BER value in Target max_ber2 = 0.001 # Max Coded BER value in Target compare_ber = 1 # Compare Target to Reference? # Used if compare_ber: tolerance_ber = 0.001 # Difference from reference for BER tolerance_ber2 = 0.001 # Difference from reference for Coded BER tolerance_tbits = 0 tolerance_terrs = 1 # compare_output = 1 # Compare Target to Reference? # Used if compare_output: tolerance_output_differences = 0 tolerance_syms = 0.01 tolerance_amps = 0.01 # # Per test settings if (args.test_opt == "quick"): pass elif (args.test_opt == "ideal"): pass elif (args.test_opt == "AWGN"): # Still close enough to compare BERs loosely max_ber = 0.1 max_ber2 = 0.1 tolerance_ber = 0.01 tolerance_ber2 = 0.005 tolerance_tbits = 1000 tolerance_terrs = 50 tolerance_output_differences = 2 compare_output = 0 elif (args.test_opt == "fade"): max_ber = 0.1 max_ber2 = 0.1 tolerance_ber = 0.01 tolerance_ber2 = 0.005 tolerance_tbits = 1000 tolerance_terrs = 200 tolerance_output_differences = 5 compare_output = 0 pass elif (args.test_opt == "profile"): tolerance_output_differences = 1 pass elif (args.test_opt == "ldpc"): pass elif (args.test_opt == "ldpc_AWGN"): max_ber = 0.1 max_ber2 = 0.01 compare_ber = 0 compare_output = 0 elif (args.test_opt == "ldpc_fade"): max_ber = 0.1 max_ber2 = 0.01 compare_ber = 0 compare_output = 0 pass else: print("Error: Test {} not recognized".format(args.test_opt)) sys.exit(1) #### Check that we are in the test directory: #### TODO::: #### Read test configuration - a file of '0' or '1' characters with open("stm_cfg.txt", "r") as f: config = f.read(8) config_verbose = (config[0] == '1') config_testframes = (config[1] == '1') config_ldpc_en = (config[2] == '1') config_log_payload_syms = (config[3] == '1') config_profile = (config[4] == '1') #### fails = 0 if (config_testframes): #### BER checks - log output looks like this, for non-ldpc: # BER......: 0.1951 Tbits: 14994 Terrs: 2926 # BER2.....: 0.2001 Tbits: 10234 Terrs: 2048 # # Or this, for ldpc: # BER......: 0.0000 Tbits: 15008 Terrs: 0 # Coded BER: 0.0000 Tbits: 7504 Terrs: 0 # # HACK: store "Coded BER" info as BER2. print("\nBER checks") # Read ref log print("Reference") with open("ref_gen_log.txt", "r") as f: for line in f: if (line[0:4] == "BER2"): print(line, end="") _, ref_ber2, _, ref_tbits2, _, ref_terrs2 = line.split() elif (line[0:3] == "BER"): print(line, end="") _, ref_ber, _, ref_tbits, _, ref_terrs, _, ref_tpackets, _, ref_snr3k = line.split() elif (line[0:9] == "Coded BER"): print(line, end="") _, _, ref_ber2, _, ref_tbits2, _, ref_terrs2 = line.split() # Strings to integers ref_ber = float(ref_ber) ref_tbits = int(ref_tbits) ref_terrs = int(ref_terrs) ref_ber2 = float(ref_ber2) ref_tbits2 = int(ref_tbits2) ref_terrs2 = int(ref_terrs2) # Read stm log print("Target") with open("stdout.log", "r") as f: for line in f: if (line[0:4] == "BER2"): print(line, end="") _, tgt_ber2, _, tgt_tbits2, _, tgt_terrs2 = line.split() elif (line[0:3] == "BER"): print(line, end="") _, tgt_ber, _, tgt_tbits, _, tgt_terrs = line.split() elif (line[0:9] == "Coded BER"): print(line, end="") _, _, tgt_ber2, _, tgt_tbits2, _, tgt_terrs2 = line.split() # Strings to integers tgt_ber = float(tgt_ber) tgt_tbits = int(tgt_tbits) tgt_terrs = int(tgt_terrs) tgt_ber2 = float(tgt_ber2) tgt_tbits2 = int(tgt_tbits2) tgt_terrs2 = int(tgt_terrs2) # simple hack to tolerate zero bits > NAN if (math.isnan(ref_ber2)): ref_ber2 = 0 if (math.isnan(tgt_ber2)): tgt_ber2 = 0 ## Max BER values if ((tgt_ber > max_ber) or (tgt_ber2 > max_ber2)): fails += 1 print("FAIL: max BER") else: print("PASS: max BER") ## Compare BER values if (compare_ber): chk_tolerance_ber = abs(ref_ber - tgt_ber) chk_tolerance_tbits = abs(ref_tbits - tgt_tbits) chk_tolerance_terrs = abs(ref_terrs - tgt_terrs) chk_tolerance_ber2 = abs(ref_ber2 - tgt_ber2) chk_tolerance_tbits2 = abs(ref_tbits2 - tgt_tbits2) chk_tolerance_terrs2 = abs(ref_terrs2 - tgt_terrs2) passes = True if (chk_tolerance_ber > tolerance_ber): print("fail tolerance_ber {} > {}". format(chk_tolerance_ber, tolerance_ber)) passes = False if (chk_tolerance_tbits > tolerance_tbits): print("fail tolerance_tbits {} > {}". format(chk_tolerance_tbits, tolerance_tbits)) passes = False if (chk_tolerance_terrs > tolerance_terrs): print("fail tolerance_terrs {} > {}". format(chk_tolerance_terrs, tolerance_terrs)) passes = False if (ref_tbits2 == 0): if (chk_tolerance_ber2 > tolerance_ber2): print("fail tolerance_ber2 {} > {}". format(chk_tolerance_ber2, tolerance_ber2)) passes = False if (chk_tolerance_tbits2 > tolerance_tbits): print("fail tolerance_tbits2 {} > {}". format(chk_tolerance_tbits2, tolerance_tbits)) passes = False if (chk_tolerance_terrs2 > tolerance_terrs): print("fail tolerance_terrs2 {} > {}". format(chk_tolerance_terrs2, tolerance_terrs)) passes = False if (passes): print("PASS: BER compare") else: fails += 1 print("FAIL: BER compare") # end Compare BER # end BER checks #### Output differences if (compare_output): print("\nOutput checks") # Output is a binary file of bytes whose values are 0x00 or 0x01. with open("ref_demod_out.raw", "rb") as f: ref_out_bytes = f.read() with open("stm_out.raw", "rb") as f: tgt_out_bytes = f.read() if (len(ref_out_bytes) != len(tgt_out_bytes)): fails += 1 print("FAIL Output, length mismatch") else: output_diffs = 0 for i in range(len(ref_out_bytes)): fnum = math.floor(i/Nbitsperframe) bnum = i - (fnum * Nbitsperframe) # Both legal values?? if (ref_out_bytes[i] > 1): print("Error: Output frame {} byte {} not 0 or 1 in reference data".format(fnum, bnum)) fails += 1 if (tgt_out_bytes[i] > 1): print("Error: Output frame {} byte {} not 0 or 1 in target data".format(fnum, bnum)) fails += 1 # Match?? if (ref_out_bytes[i] != tgt_out_bytes[i]): print("Output frame {} byte {} mismatch: ref={} tgt={}".format( fnum, bnum, ref_out_bytes[i], tgt_out_bytes[i])) output_diffs += 1 # end for i if (output_diffs > tolerance_output_differences): print("FAIL: Output Differences = {}".format(output_diffs)) fails += 1 else: print("PASS: Output Differences = {}".format(output_diffs)) # end not length mismatch #### Syms data if (config_log_payload_syms): print("\nSyms and Amps checks") fref = open("ofdm_demod_ref_log.txt", "r") fdiag = open("stm_diag.raw", "rb") ref_data = read_octave_text(fref) (tgt_syms, tgt_amps) = read_tgt_syms(fdiag) fdiag.close() write_syms_as_octave(tgt_syms, tgt_amps) # for manual debug... # Find smallest common subset hgt = min(tgt_syms.shape[0], ref_data["payload_syms_log_c"].shape[0]) wid = min(tgt_syms.shape[1], ref_data["payload_syms_log_c"].shape[1]) ref_syms = ref_data["payload_syms_log_c"][:hgt][:wid] ref_amps = ref_data["payload_amps_log_c"][:hgt][:wid] tgt_syms= tgt_syms[:hgt][:wid] tgt_amps= tgt_amps[:hgt][:wid] # Eliminate trailing rows of all zeros # Sum the rows to find rows of all zeros row_sums = ref_syms.sum(axis=1) + tgt_syms.sum(axis=1) nonzeros = row_sums.nonzero() last_nonzero = nonzeros[0][-1] # stop index is 1 past the last!! # and use the Magnitude of the complex values ref_syms = np.abs(ref_syms[:last_nonzero+1]) ref_amps = np.abs(ref_amps[:last_nonzero+1]) tgt_syms = np.abs(tgt_syms[:last_nonzero+1]) tgt_amps = np.abs(tgt_amps[:last_nonzero+1]) # Differences - Syms #diffs_syms = np.abs(ref_syms - tgt_syms) # This is the mag of complex diffs_syms = np.abs(np.divide((ref_syms - tgt_syms), ref_syms, where=(ref_syms!=0))) print("Minimum syms difference = {:.6f}".format(np.amin(diffs_syms))) print("Maximum syms difference = {:.6f}".format(np.amax(diffs_syms))) print("Average syms difference = {:.6f}".format(np.average(diffs_syms))) if (args.verbose): # Print top 10 differences diffs_syms_sorted_indexes = (diffs_syms).argsort(axis=None)[::-1] print(" Top 10 differences") for i in range(10): j = diffs_syms_sorted_indexes[i] print(" #{} @{}: {} {} = {:.6f}".format( i, j, ref_syms.flatten()[j], tgt_syms.flatten()[j], diffs_syms.flatten()[j]) ) # Errors are differences > tolerance_syms errors_syms = diffs_syms - tolerance_syms errors_syms[errors_syms < 0.0] = 0.0 num_errors_syms = np.count_nonzero(errors_syms) error_rows_syms = np.amax(errors_syms, axis=1) num_error_rows_syms = np.count_nonzero(error_rows_syms) print("") print("{} symbol errors on {} rows".format(num_errors_syms, num_error_rows_syms)) # Differences - Amps diffs_amps = np.abs(np.divide((ref_amps - tgt_amps), ref_amps, where=(ref_amps!=0))) print("Minimum amps difference = {:.6f}".format(np.amin(diffs_amps))) print("Maximum amps difference = {:.6f}".format(np.amax(diffs_amps))) print("Average amps difference = {:.6f}".format(np.average(diffs_amps))) if (args.verbose): # Print top 10 differences diffs_amps_sorted_indexes = (diffs_amps).argsort(axis=None)[::-1] print(" Top 10 differences") for i in range(10): j = diffs_amps_sorted_indexes[i] print(" #{} @{}: {} {} = {:.6f}".format( i, j, ref_amps.flatten()[j], tgt_amps.flatten()[j], diffs_amps.flatten()[j]) ) # Errors are differences > tolerance_syms errors_amps = diffs_amps - tolerance_amps errors_amps[errors_amps < 0.0] = 0.0 num_errors_amps = np.count_nonzero(errors_amps) error_rows_amps = np.amax(errors_amps, axis=1) num_error_rows_amps = np.count_nonzero(error_rows_amps) print("") print("{} Amplitude errors on {} rows".format(num_errors_amps, num_error_rows_amps)) # End compare_output #### Profile if (config_profile): print("\nProfile:") with open("stdout.log", "r") as f: sum_profiles.sum_profiles(f, 100) print("\nStack:") with open("stdout.txt", "r") as f: for line in f: if (line.startswith("Max stack")): print(line) #### Print final status message if (fails): print("\nTest FAILED!") else: print("\nTest PASSED") sys.exit(fails) codec2-1.2.0/stm32/unittest/scripts/tst_ofdm_demod_setup000077500000000000000000000100021445607075400233310ustar00rootroot00000000000000#!/bin/bash -x # # tst_ofdm_demod_setup # # Setup input and reference data for one of several versions of this test. # Find the scripts directory SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # Setup common variables source $SCRIPTS/run_tests_common.sh # RUN_DIR - Directory where test will be run RUN_DIR="${UNITTEST_BASE}/test_run/${FULL_TEST_NAME}" # Call common setup function to make the directory setup_common "${RUN_DIR}" # Change to test directory cd "${RUN_DIR}" ##################################################################### ## Test SETUP actions: case "${TEST_OPT}" in quick ) # Config is , , , echo "01000000" > stm_cfg.txt ofdm_mod --in /dev/zero --out stm_in.raw --testframes 10 > setup.log 2>&1 ofdm_demod --in stm_in.raw --out ref_demod_out.raw --log ofdm_demod_ref_log.txt \ --testframes --verbose 1 > ref_gen_log.txt 2>&1 ;; ideal ) # Config is , , , echo "01000000" > stm_cfg.txt ofdm_mod --in /dev/zero --out stm_in.raw --testframes 10 > setup.log 2>&1 ofdm_demod --in stm_in.raw --out ref_demod_out.raw --log ofdm_demod_ref_log.txt \ --testframes --verbose 1 > ref_gen_log.txt 2>&1 ;; AWGN ) # Config is , , , echo "11000000" > stm_cfg.txt ofdm_mod --in /dev/zero --out mod_bits.raw --testframes 10 > setup.log 2>&1 cohpsk_ch mod_bits.raw stm_in.raw -20 --Fs 8000 -f -5 >> setup.log 2>&1 ofdm_demod --in stm_in.raw --out ref_demod_out.raw --log ofdm_demod_ref_log.txt \ --testframes --verbose 1 > ref_gen_log.txt 2>&1 ;; fade ) # Config is , , , echo "11000000" > stm_cfg.txt ofdm_mod --in /dev/zero --out mod_bits.raw --testframes 60 > setup.log 2>&1 ch mod_bits.raw stm_in.raw --No -24.5 -f -10 --mpp \ --fading_dir ${CODEC2_BASE}/build_linux/unittest >> setup.log 2>&1 ofdm_demod --in stm_in.raw --out ref_demod_out.raw --log ofdm_demod_ref_log.txt \ --testframes --verbose 1 > ref_gen_log.txt 2>&1 ;; profile ) # Config is , , , echo "00001000" > stm_cfg.txt ofdm_mod --in /dev/zero --out mod_bits.raw --testframes 100 > setup.log 2>&1 ch mod_bits.raw stm_in.raw --No -20 -f -10 --mpp \ --fading_dir ${CODEC2_BASE}/build_linux/unittest >> setup.log 2>&1 ofdm_demod --in stm_in.raw --out ref_demod_out.raw --log ofdm_demod_ref_log.txt \ --testframes --verbose 1 > ref_gen_log.txt 2>&1 ;; ldpc ) # Config is , , , echo "01110000" > stm_cfg.txt ofdm_mod --in /dev/zero --out stm_in.raw --testframes 1 --ldpc 1 > setup.log 2>&1 ofdm_demod --in stm_in.raw --out ref_demod_out.raw --log ofdm_demod_ref_log.txt \ --testframes --ldpc 1 --verbose 1 > ref_gen_log.txt 2>&1 ;; ldpc_AWGN ) # Config is , , , echo "01110000" > stm_cfg.txt ofdm_mod --in /dev/zero --out mod_bits.raw --testframes 30 --ldpc 1 > setup.log 2>&1 ch mod_bits.raw stm_in.raw --No -20 -f -10 >> setup.log 2>&1 ofdm_demod --in stm_in.raw --out ref_demod_out.raw --log ofdm_demod_ref_log.txt \ --testframes --ldpc 1 --verbose 1 > ref_gen_log.txt 2>&1 ;; ldpc_fade ) # Config is , , , echo "01110000" > stm_cfg.txt ofdm_mod --in /dev/zero --out mod_bits.raw --testframes 120 --ldpc 1 > setup.log 2>&1 ch mod_bits.raw stm_in.raw --No -30 -f -10 --mpp \ --fading_dir ${CODEC2_BASE}/build_linux/unittest >> setup.log 2>&1 ofdm_demod --in stm_in.raw --out ref_demod_out.raw --log ofdm_demod_ref_log.txt \ --testframes --ldpc 1 --verbose 1 > ref_gen_log.txt 2>&1; ;; esac codec2-1.2.0/stm32/unittest/scripts/tst_ofdm_mod_check000077500000000000000000000024641445607075400227520ustar00rootroot00000000000000#!/bin/bash -x # # tst_ofdm_mod_check # # Setup input and reference data for one of several versions of this test. # Find the scripts directory SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # Setup common variables source $SCRIPTS/run_tests_common.sh # RUN_DIR - Directory where test will be run RUN_DIR="${UNITTEST_BASE}/test_run/${FULL_TEST_NAME}" # Call common setup function to make the directory setup_common "${RUN_DIR}" # Change to test directory cd "${RUN_DIR}" ##################################################################### ## Test CHECK actions: declare -i Fails=0 case "${TEST_OPT}" in plain) LDPC="";; ldpc) LDPC="--ldpc";; esac echo -e "\nReference check" if ofdm_demod --in ref_mod_out.raw --out ref_ofdm_demod.raw --testframes ${LDPC}; then echo "Passed" else echo "Failed" let Fails=($Fails + 1) fi # echo -e "\nTarget check" if ofdm_demod --in mod.raw --out stm_demod.raw --testframes ${LDPC}; then echo "Passed" else echo "Failed" let Fails=($Fails + 1) fi # echo -e "\nCompare output binary data" if compare_ints -s -b2 -t3 ref_mod_out.raw mod.raw; then echo "Passed" else echo "Failed" let Fails=($Fails + 1) fi # if (( $Fails == 0 )); then echo -e "\nTest PASSED" else echo -e "\nTest FAILED!" fi exit $Fails codec2-1.2.0/stm32/unittest/scripts/tst_ofdm_mod_setup000077500000000000000000000022761445607075400230360ustar00rootroot00000000000000#!/bin/bash # # tst_ofdm_mod_setup # # Setup input and reference data for one of several versions of this test. # Find the scripts directory SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # Setup common variables source $SCRIPTS/run_tests_common.sh # RUN_DIR - Directory where test will be run RUN_DIR="${UNITTEST_BASE}/test_run/${FULL_TEST_NAME}" # Call common setup function to make the directory setup_common "${RUN_DIR}" # Change to test directory cd "${RUN_DIR}" ##################################################################### ## Test SETUP actions: case "${TEST_OPT}" in plain ) # Config is , , , echo "00000000" > stm_cfg.txt ofdm_get_test_bits --out stm_in.raw --frames 10 --verbose > setup.log 2>&1 ofdm_mod --in stm_in.raw --out ref_mod_out.raw --verbose 1 > ref_gen_log.txt 2>&1 ;; ldpc ) # Config is , , , echo "00100000" > stm_cfg.txt ofdm_get_test_bits --out stm_in.raw --frames 10 --length 112 --verbose > setup.log 2>&1 ofdm_mod --in stm_in.raw --out ref_mod_out.raw --ldpc --verbose 1 > ref_gen_log.txt 2>&1 ;; esac codec2-1.2.0/stm32/unittest/src/000077500000000000000000000000001445607075400163035ustar00rootroot00000000000000codec2-1.2.0/stm32/unittest/src/CMakeLists.txt000066400000000000000000000157221445607075400210520ustar00rootroot00000000000000set(STM32F4_SYSTEM_SRCS ../../src/system_stm32f4xx.c ../../src/memtools.c ../../src/stm32f4_machdep.c startup_stm32f4xx.s ) list(APPEND SEMIHOSTING_SRCS semihosting.c ${STM32F4_SYSTEM_SRCS}) list(APPEND SEMIHOSTING_PROFILE_LIBS codec2_prof stm32f4 CMSIS rdimon) list(APPEND SEMIHOSTING_LIBS codec2 stm32f4 CMSIS rdimon) macro(profiledSemihostedBin target) add_mapped_executable(${target} ${target}.c ${SEMIHOSTING_SRCS}) target_link_libraries(${target} ${SEMIHOSTING_PROFILE_LIBS}) target_compile_definitions(${target} PRIVATE "-DPROFILE -DSEMIHOST_USE_STDIO --specs=rdimon.specs") elf2bin(${target}) endmacro() macro(semihostedBin target) add_mapped_executable(${target} ${target}.c ${SEMIHOSTING_SRCS}) target_link_libraries(${target} ${SEMIHOSTING_LIBS}) target_compile_definitions(${target} PRIVATE "-DSEMIHOST_USE_STDIO --specs=rdimon.specs") elf2bin(${target}) endmacro() semihostedBin(tst_api_tx) semihostedBin(tst_codec2_enc) semihostedBin(tst_codec2_dec) semihostedBin(tst_ofdm_mod) profiledSemihostedBin(tst_ofdm_demod) semihostedBin(tst_ldpc_enc) semihostedBin(tst_ldpc_dec) semihostedBin(tst_api_mod) profiledsemihostedBin(tst_api_demod) semihostedBin(tst_semihost) semihostedBin(tst_codec2_fft_init) add_test(NAME check_ram_limit COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/check_ram_limit WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) add_test(NAME tst_ldpc_enc COMMAND sh -c "./run_stm32_tst tst_ldpc_enc ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) add_test(NAME tst_ldpc_dec_ideal COMMAND sh -c "./run_stm32_tst tst_ldpc_dec ideal ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) add_test(NAME tst_ldpc_dec_noise COMMAND sh -c "./run_stm32_tst tst_ldpc_dec noise ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) set_tests_properties(tst_ldpc_dec_noise PROPERTIES DEPENDS tst_ldpc_dec_ideal) add_test(NAME tst_ofdm_mod_plain COMMAND sh -c "./run_stm32_tst tst_ofdm_mod plain ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) add_test(NAME tst_ofdm_mod_ldpc COMMAND sh -c "./run_stm32_tst tst_ofdm_mod ldpc ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) set_tests_properties(tst_ofdm_mod_ldpc PROPERTIES DEPENDS tst_ofdm_mod_plain) add_test(NAME tst_ofdm_demod_quick COMMAND sh -c "./run_stm32_tst tst_ofdm_demod quick ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) add_test(NAME tst_ofdm_demod_ideal COMMAND sh -c "./run_stm32_tst tst_ofdm_demod ideal ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) set_tests_properties(tst_ofdm_demod_ideal PROPERTIES DEPENDS tst_ofdm_demod_quick) add_test(NAME tst_ofdm_demod_AWGN COMMAND sh -c "./run_stm32_tst tst_ofdm_demod AWGN ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) set_tests_properties(tst_ofdm_demod_AWGN PROPERTIES DEPENDS tst_ofdm_demod_quick) add_test(NAME tst_ofdm_demod_fade COMMAND sh -c "./run_stm32_tst tst_ofdm_demod fade ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) set_tests_properties(tst_ofdm_demod_fade PROPERTIES DEPENDS tst_ofdm_demod_quick) add_test(NAME tst_ofdm_demod_ldpc COMMAND sh -c "./run_stm32_tst tst_ofdm_demod ldpc ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) set_tests_properties(tst_ofdm_demod_ldpc PROPERTIES DEPENDS tst_ofdm_demod_quick) add_test(NAME tst_ofdm_demod_ldpc_AWGN COMMAND sh -c "./run_stm32_tst tst_ofdm_demod ldpc_AWGN ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) set_tests_properties(tst_ofdm_demod_ldpc_AWGN PROPERTIES DEPENDS tst_ofdm_demod_quick) add_test(NAME tst_ofdm_demod_ldpc_fade COMMAND sh -c "./run_stm32_tst tst_ofdm_demod ldpc_fade ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) set_tests_properties(tst_ofdm_demod_ldpc_fade PROPERTIES DEPENDS tst_ofdm_demod_quick) add_test(NAME tst_codec2_enc_1300 COMMAND sh -c "./run_stm32_tst tst_codec2_enc 1300 ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) add_test(NAME tst_codec2_enc_700C COMMAND sh -c "./run_stm32_tst tst_codec2_enc 700C ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) set_tests_properties(tst_codec2_enc_700C PROPERTIES DEPENDS tst_codec2_enc_1300) add_test(NAME tst_codec2_dec_1300 COMMAND sh -c "./run_stm32_tst tst_codec2_dec 1300 ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) add_test(NAME tst_codec2_dec_700C COMMAND sh -c "./run_stm32_tst tst_codec2_dec 700C ${UT_PARAMS} " WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) set_tests_properties(tst_codec2_dec_700C PROPERTIES DEPENDS tst_codec2_dec_1300) add_test(NAME tst_api_mod_700D_TEST COMMAND sh -c "./run_stm32_tst tst_api_mod 700D_TEST ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) add_test(NAME tst_api_mod_700D_CODEC COMMAND sh -c "./run_stm32_tst tst_api_mod 700D_CODEC ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) add_test(NAME tst_api_mod_700E_TEST COMMAND sh -c "./run_stm32_tst tst_api_mod 700E_TEST ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) add_test(NAME tst_api_mod_700E_CODEC COMMAND sh -c "./run_stm32_tst tst_api_mod 700E_CODEC ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) add_test(NAME tst_api_demod_700D_plain_test COMMAND sh -c "./run_stm32_tst tst_api_demod 700D_plain_test ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) add_test(NAME tst_api_demod_700D_AWGN_test COMMAND sh -c "./run_stm32_tst tst_api_demod 700D_AWGN_test ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) add_test(NAME tst_api_demod_700D_AWGN_codec COMMAND sh -c "./run_stm32_tst tst_api_demod 700D_AWGN_codec ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) add_test(NAME tst_api_demod_700E_plain_test COMMAND sh -c "./run_stm32_tst tst_api_demod 700E_plain_test ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) add_test(NAME tst_api_demod_700E_AWGN_test COMMAND sh -c "./run_stm32_tst tst_api_demod 700E_AWGN_test ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) add_test(NAME tst_api_demod_700E_AWGN_codec COMMAND sh -c "./run_stm32_tst tst_api_demod 700E_AWGN_codec ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) add_test(NAME tst_api_demod_1600_plain_codec COMMAND sh -c "./run_stm32_tst tst_api_demod 1600_plain_codec ${UT_PARAMS}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts) codec2-1.2.0/stm32/unittest/src/Makefile000066400000000000000000000757061445607075400177620ustar00rootroot00000000000000# Makefile for stm32f4 Codec 2 unittest programs # Include local definitions if they exist. -include local.mak ################################################### FLOAT_TYPE=hard ################################################### CROSS_COMPILE ?= arm-none-eabi- CC=$(BINPATH)$(CROSS_COMPILE)gcc AS=$(BINPATH)$(CROSS_COMPILE)as OBJCOPY=$(BINPATH)$(CROSS_COMPILE)objcopy SIZE=$(BINPATH)$(CROSS_COMPILE)size SUDO ?= sudo ################################################### CFLAGS = -std=gnu11 -O2 -g -Wall -DSTM32F40_41xxx -DCORTEX_M4 CFLAGS += -mlittle-endian -mthumb -mthumb-interwork -nostartfiles -mcpu=cortex-m4 -Wno-unused-function ifeq ($(FLOAT_TYPE), hard) CFLAGS += -fsingle-precision-constant -Wdouble-promotion CFLAGS += -fdata-sections -ffunction-sections -Xlinker --gc-sections CFLAGS += -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D__FPU_PRESENT=1 -D__FPU_USED=1 else CFLAGS += -msoft-float endif #CFLAGS += -DDEBUG_ALLOC ################################################### # STM32F4 Standard Peripheral Library PERIPHLIBDIR ?= STM32F4xx_DSP_StdPeriph_Lib CMSIS = $(PERIPHLIBDIR)/Libraries/CMSIS STM32F4LIB = $(PERIPHLIBDIR)/Libraries/STM32F4xx_StdPeriph_Driver STM32F4TEMPLATE = $(PERIPHLIBDIR)/Project/STM32F4xx_StdPeriph_Templates DSPLIB = $(PERIPHLIBDIR)/Libraries/CMSIS/DSP_Lib CFLAGS += -DUSE_STDPERIPH_DRIVER -I$(STM32F4LIB)/inc -I$(STM32F4TEMPLATE) CFLAGS += -I$(CMSIS)/Include -I$(CMSIS)/Device/ST/STM32F4xx/Include CFLAGS += -DARM_MATH_CM4 CFLAGS += -DFDV_ARM_MATH CFLAGS += -DSEMIHOST_USE_STDIO # Precious files that should be preserved at all cost! .PRECIOUS: dl/$(PERIPHLIBZIP) STM32F4LIB_SRCS=\ $(STM32F4LIB)/src/misc.c\ $(STM32F4LIB)/src/stm32f4xx_adc.c\ $(STM32F4LIB)/src/stm32f4xx_can.c\ $(STM32F4LIB)/src/stm32f4xx_cec.c\ $(STM32F4LIB)/src/stm32f4xx_crc.c\ $(STM32F4LIB)/src/stm32f4xx_cryp_aes.c\ $(STM32F4LIB)/src/stm32f4xx_cryp.c\ $(STM32F4LIB)/src/stm32f4xx_cryp_des.c\ $(STM32F4LIB)/src/stm32f4xx_cryp_tdes.c\ $(STM32F4LIB)/src/stm32f4xx_dac.c\ $(STM32F4LIB)/src/stm32f4xx_dbgmcu.c\ $(STM32F4LIB)/src/stm32f4xx_dcmi.c\ $(STM32F4LIB)/src/stm32f4xx_dma2d.c\ $(STM32F4LIB)/src/stm32f4xx_dma.c\ $(STM32F4LIB)/src/stm32f4xx_exti.c\ $(STM32F4LIB)/src/stm32f4xx_flash.c\ $(STM32F4LIB)/src/stm32f4xx_flash_ramfunc.c\ $(STM32F4LIB)/src/stm32f4xx_fmpi2c.c\ $(STM32F4LIB)/src/stm32f4xx_fsmc.c\ $(STM32F4LIB)/src/stm32f4xx_gpio.c\ $(STM32F4LIB)/src/stm32f4xx_hash.c\ $(STM32F4LIB)/src/stm32f4xx_hash_md5.c\ $(STM32F4LIB)/src/stm32f4xx_hash_sha1.c\ $(STM32F4LIB)/src/stm32f4xx_i2c.c\ $(STM32F4LIB)/src/stm32f4xx_iwdg.c\ $(STM32F4LIB)/src/stm32f4xx_ltdc.c\ $(STM32F4LIB)/src/stm32f4xx_pwr.c\ $(STM32F4LIB)/src/stm32f4xx_qspi.c\ $(STM32F4LIB)/src/stm32f4xx_rcc.c\ $(STM32F4LIB)/src/stm32f4xx_rng.c\ $(STM32F4LIB)/src/stm32f4xx_rtc.c\ $(STM32F4LIB)/src/stm32f4xx_sai.c\ $(STM32F4LIB)/src/stm32f4xx_sdio.c\ $(STM32F4LIB)/src/stm32f4xx_spdifrx.c\ $(STM32F4LIB)/src/stm32f4xx_spi.c\ $(STM32F4LIB)/src/stm32f4xx_syscfg.c\ $(STM32F4LIB)/src/stm32f4xx_tim.c\ $(STM32F4LIB)/src/stm32f4xx_usart.c\ $(STM32F4LIB)/src/stm32f4xx_wwdg.c STM32F4LIB_OBJS = $(STM32F4LIB_SRCS:.c=.o) CMSIS_SRCS=\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_abs_f32.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_abs_q15.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_abs_q31.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_abs_q7.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_add_f32.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_add_q15.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_add_q31.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_add_q7.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_f32.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q15.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q31.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q7.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_mult_f32.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_mult_q15.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_mult_q31.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_mult_q7.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_negate_f32.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_negate_q15.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_negate_q31.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_negate_q7.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_offset_f32.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_offset_q15.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_offset_q31.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_offset_q7.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_scale_f32.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_scale_q15.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_scale_q31.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_scale_q7.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_shift_q15.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_shift_q31.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_shift_q7.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_sub_f32.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_sub_q15.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_sub_q31.c\ $(CMSIS)/DSP_Lib/Source/BasicMathFunctions/arm_sub_q7.c\ $(CMSIS)/DSP_Lib/Source/CommonTables/arm_common_tables.c\ $(CMSIS)/DSP_Lib/Source/CommonTables/arm_const_structs.c\ $(CMSIS)/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c\ $(CMSIS)/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c\ $(CMSIS)/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c\ $(CMSIS)/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c\ $(CMSIS)/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c\ $(CMSIS)/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c\ $(CMSIS)/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c\ $(CMSIS)/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c\ $(CMSIS)/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c\ $(CMSIS)/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c\ $(CMSIS)/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c\ $(CMSIS)/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c\ $(CMSIS)/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c\ $(CMSIS)/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c\ $(CMSIS)/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c\ $(CMSIS)/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c\ $(CMSIS)/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c\ $(CMSIS)/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c\ $(CMSIS)/DSP_Lib/Source/ControllerFunctions/arm_pid_init_f32.c\ $(CMSIS)/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q15.c\ $(CMSIS)/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q31.c\ $(CMSIS)/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_f32.c\ $(CMSIS)/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q15.c\ $(CMSIS)/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q31.c\ $(CMSIS)/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_f32.c\ $(CMSIS)/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_q31.c\ $(CMSIS)/DSP_Lib/Source/FastMathFunctions/arm_cos_f32.c\ $(CMSIS)/DSP_Lib/Source/FastMathFunctions/arm_cos_q15.c\ $(CMSIS)/DSP_Lib/Source/FastMathFunctions/arm_cos_q31.c\ $(CMSIS)/DSP_Lib/Source/FastMathFunctions/arm_sin_f32.c\ $(CMSIS)/DSP_Lib/Source/FastMathFunctions/arm_sin_q15.c\ $(CMSIS)/DSP_Lib/Source/FastMathFunctions/arm_sin_q31.c\ $(CMSIS)/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q15.c\ $(CMSIS)/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_conv_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_opt_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q7.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q7.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q7.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_conv_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_conv_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_conv_q7.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_correlate_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q7.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_correlate_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_correlate_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_correlate_q7.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_init_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q7.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_q7.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q7.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q7.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_lms_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_lms_init_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_f32.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q31.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_lms_q15.c\ $(CMSIS)/DSP_Lib/Source/FilteringFunctions/arm_lms_q31.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_add_f32.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q15.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q31.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_init_f32.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q15.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q31.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f32.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f64.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_f32.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q15.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q31.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q15.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q31.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_f32.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q15.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q31.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_f32.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q15.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q31.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_f32.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q15.c\ $(CMSIS)/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q31.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_max_f32.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_max_q15.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_max_q31.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_max_q7.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_mean_f32.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_mean_q15.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_mean_q31.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_mean_q7.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_min_f32.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_min_q15.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_min_q31.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_min_q7.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_power_f32.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_power_q15.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_power_q31.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_power_q7.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_rms_f32.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_rms_q15.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_rms_q31.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_std_f32.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_std_q15.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_std_q31.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_var_f32.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_var_q15.c\ $(CMSIS)/DSP_Lib/Source/StatisticsFunctions/arm_var_q31.c\ $(CMSIS)/DSP_Lib/Source/SupportFunctions/arm_copy_f32.c\ $(CMSIS)/DSP_Lib/Source/SupportFunctions/arm_copy_q15.c\ $(CMSIS)/DSP_Lib/Source/SupportFunctions/arm_copy_q31.c\ $(CMSIS)/DSP_Lib/Source/SupportFunctions/arm_copy_q7.c\ $(CMSIS)/DSP_Lib/Source/SupportFunctions/arm_fill_f32.c\ $(CMSIS)/DSP_Lib/Source/SupportFunctions/arm_fill_q15.c\ $(CMSIS)/DSP_Lib/Source/SupportFunctions/arm_fill_q31.c\ $(CMSIS)/DSP_Lib/Source/SupportFunctions/arm_fill_q7.c\ $(CMSIS)/DSP_Lib/Source/SupportFunctions/arm_float_to_q15.c\ $(CMSIS)/DSP_Lib/Source/SupportFunctions/arm_float_to_q31.c\ $(CMSIS)/DSP_Lib/Source/SupportFunctions/arm_float_to_q7.c\ $(CMSIS)/DSP_Lib/Source/SupportFunctions/arm_q15_to_float.c\ $(CMSIS)/DSP_Lib/Source/SupportFunctions/arm_q15_to_q31.c\ $(CMSIS)/DSP_Lib/Source/SupportFunctions/arm_q15_to_q7.c\ $(CMSIS)/DSP_Lib/Source/SupportFunctions/arm_q31_to_float.c\ $(CMSIS)/DSP_Lib/Source/SupportFunctions/arm_q31_to_q15.c\ $(CMSIS)/DSP_Lib/Source/SupportFunctions/arm_q31_to_q7.c\ $(CMSIS)/DSP_Lib/Source/SupportFunctions/arm_q7_to_float.c\ $(CMSIS)/DSP_Lib/Source/SupportFunctions/arm_q7_to_q15.c\ $(CMSIS)/DSP_Lib/Source/SupportFunctions/arm_q7_to_q31.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_bitreversal.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_cfft_f32.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_cfft_q15.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_cfft_q31.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_f32.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_f32.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q15.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q31.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q15.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q31.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_f32.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_f32.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q15.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q31.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q15.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q31.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_cfft_radix8_f32.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_dct4_f32.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_dct4_init_f32.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q15.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q31.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_dct4_q15.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_dct4_q31.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_rfft_f32.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_f32.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_init_f32.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_rfft_init_f32.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q15.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q31.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_rfft_q15.c\ $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_rfft_q31.c\ CMSIS_OBJS = $(CMSIS_SRCS:.c=.o) $(CMSIS)/DSP_Lib/Source/TransformFunctions/arm_bitreversal2.o ################################################### # Codec 2 CODEC2_DIR = ../../.. CODEC2_SRC = $(CODEC2_DIR)/src CODEC2_BLD = $(CODEC2_DIR)/build_linux CODEC2_SRCS=\ $(CODEC2_SRC)/lpc.c \ $(CODEC2_SRC)/nlp.c \ $(CODEC2_SRC)/postfilter.c \ $(CODEC2_SRC)/sine.c \ $(CODEC2_SRC)/codec2.c \ $(CODEC2_SRC)/codec2_fft.c \ $(CODEC2_SRC)/cohpsk.c \ $(CODEC2_SRC)/linreg.c \ $(CODEC2_SRC)/kiss_fft.c \ $(CODEC2_SRC)/kiss_fftr.c \ $(CODEC2_SRC)/interp.c \ $(CODEC2_SRC)/lsp.c \ $(CODEC2_SRC)/mbest.c \ $(CODEC2_SRC)/newamp1.c \ $(CODEC2_SRC)/phase.c \ $(CODEC2_SRC)/quantise.c \ $(CODEC2_SRC)/pack.c \ $(CODEC2_SRC)/codebook.c \ $(CODEC2_SRC)/codebookd.c \ $(CODEC2_SRC)/codebookjvm.c \ $(CODEC2_SRC)/codebookge.c \ $(CODEC2_SRC)/codebooknewamp1.c \ $(CODEC2_SRC)/codebooknewamp1_energy.c \ $(CODEC2_SRC)/dump.c \ $(CODEC2_SRC)/fdmdv.c \ $(CODEC2_SRC)/freedv_api.c \ $(CODEC2_SRC)/filter.c \ $(CODEC2_SRC)/varicode.c \ $(CODEC2_SRC)/golay23.c \ $(CODEC2_SRC)/fsk.c \ $(CODEC2_SRC)/fmfsk.c \ $(CODEC2_SRC)/freedv_vhf_framing.c \ $(CODEC2_SRC)/freedv_data_channel.c \ $(CODEC2_SRC)/ofdm.c \ $(CODEC2_SRC)/phi0.c \ $(CODEC2_SRC)/mpdecode_core.c \ $(CODEC2_SRC)/gp_interleaver.c \ $(CODEC2_SRC)/interldpc.c \ $(CODEC2_SRC)/HRA_112_112.c \ CFLAGS += -D__EMBEDDED__ CFLAGS += -I$(CODEC2_SRC) CFLAGS += -I$(CODEC2_BLD) ################################################### # Codec2/STM32 CODEC2_STM32_DIR := ../.. CODEC2_STM32_SRC = $(CODEC2_STM32_DIR)/src CODEC2_STM32_HDR = $(CODEC2_STM32_DIR)/inc CFLAGS += -I$(CODEC2_STM32_HDR) CFLAGS += -T$(CODEC2_STM32_DIR)/stm32_flash.ld #enable this for dump files to help verify optimisation #CFLAGS += -DDUMP ASFLAGS += $(CFLAGS) ################################################### ROOT=$(shell pwd) # Library paths LIBPATHS = # Libraries to link # Standard ARM semihosting LIBS = -lg -lrdimon -lm --specs=rdimon.specs # startup file SRCS += startup_stm32f4xx.s SRCS += init.c SRCS += stm32f4_machdep.c SRCS += $(CODEC2_STM32_SRC)/system_stm32f4xx.c all: libstm32f4.a \ tst_codec2_enc.bin tst_codec2_dec.bin \ tst_ofdm_mod.bin tst_ofdm_demod.bin \ tst_ldpc_enc.bin tst_ldpc_dec.bin \ tst_api_mod.bin tst_api_demod.bin \ tst_semihost.bin \ tst_codec2_fft_init.bin libstm32f4.a: $(CMSIS_OBJS) $(STM32F4LIB_OBJS) find -L $(PERIPHLIBDIR) -type f -name '*.o' -exec $(AR) crs libstm32f4.a {} ";" # Kludgy target to build a file with CFLAGS -DPROFILE %.profile.o: %.c $(CC) $(CPPFLAGS) $(CFLAGS) -DPROFILE -c -o $@ $< # Rule for building .bin files from a .elf %.bin: %.elf $(OBJCOPY) -O binary $< $@ #####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#### ##### Used for debugging stdio (with semihosting) : ## ## TMP_NEWLIB_INCS = -INewlib ## TMP_NEWLIB_DEFS = -DARM_RDI_MONITOR ## TMP_NEWLIB_OBJS = Newlib/fread.o Newlib/refill.o Newlib/syscalls.o Newlib/stdio.o Newlib/readr.o Newlib/fclose.o Newlib/fflush.o ## ## Newlib/fread.o: Newlib/fread.c ## $(CC) -c $(CFLAGS) $^ -o Newlib/fread.o $(TMP_NEWLIB_INCS) $(TMP_NEWLIB_DEFS) ## ## Newlib/refill.o: Newlib/refill.c ## $(CC) -c $(CFLAGS) $^ -o Newlib/refill.o $(TMP_NEWLIB_INCS) $(TMP_NEWLIB_DEFS) ## ## Newlib/syscalls.o: Newlib/syscalls.c ## $(CC) -c $(CFLAGS) $^ -o Newlib/syscalls.o $(TMP_NEWLIB_INCS) $(TMP_NEWLIB_DEFS) ## ## Newlib/stdio.o: Newlib/stdio.c ## $(CC) -c $(CFLAGS) $^ -o Newlib/stdio.o $(TMP_NEWLIB_INCS) $(TMP_NEWLIB_DEFS) ## ## Newlib/readr.o: Newlib/readr.c ## $(CC) -c $(CFLAGS) $^ -o Newlib/readr.o $(TMP_NEWLIB_INCS) $(TMP_NEWLIB_DEFS) ## #####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#### #################################################### # Test Programs # ----------------------------------------------- TST_API_TX_SRCS=\ tst_api_tx.c \ semihosting.c \ $(CODEC2_STM32_SRC)/system_stm32f4xx.c TST_API_TX_SRCS += $(CODEC2_SRCS) TST_API_TX_SRCS += $(SRCS) tst_api_tx.elf: $(TST_API_TX_SRCS:.c=.profile.o) libstm32f4.a $(CC) $(CFLAGS) -DPROFILE $^ -o $@ $(LIBPATHS) $(LIBS) # ----------------------------------------------- TST_CODEC2_ENC_SRCS=\ tst_codec2_enc.c \ semihosting.c \ $(CODEC2_STM32_SRC)/system_stm32f4xx.c # TST_CODEC2_ENC_SRCS += $(CODEC2_SRCS) TST_CODEC2_ENC_SRCS += $(SRCS) # tst_codec2_enc.elf: $(TST_CODEC2_ENC_SRCS:.c=.profile.o) libstm32f4.a $(CC) $(CFLAGS) -DPROFILE $^ -o $@ $(LIBPATHS) $(LIBS) -Wl,-Map=tst_codec2_enc.map # ----------------------------------------------- TST_CODEC2_DEC_SRCS=\ tst_codec2_dec.c \ semihosting.c \ $(CODEC2_STM32_SRC)/system_stm32f4xx.c # TST_CODEC2_DEC_SRCS += $(CODEC2_SRCS) TST_CODEC2_DEC_SRCS += $(SRCS) # tst_codec2_dec.elf: $(TST_CODEC2_DEC_SRCS:.c=.profile.o) libstm32f4.a $(CC) $(CFLAGS) -DPROFILE $^ -o $@ $(LIBPATHS) $(LIBS) # ----------------------------------------------- TST_API_MOD_SRCS=\ tst_api_mod.c \ semihosting.c \ $(CODEC2_STM32_SRC)/system_stm32f4xx.c # TST_API_MOD_SRCS += $(CODEC2_SRCS) TST_API_MOD_SRCS += $(SRCS) # tst_api_mod.elf: $(TST_API_MOD_SRCS:.c=.profile.o) libstm32f4.a # $(TMP_NEWLIB_OBJS) $(CC) $(CFLAGS) -DPROFILE $^ -o $@ $(LIBPATHS) $(LIBS) # ----------------------------------------------- # TST_API_MOD_700D_PROFILE # TST_API_MOD_700D_PROFILE_SRCS=\ tst_api_mod_700d_profile.c \ semihosting.c \ $(CODEC2_STM32_SRC)/system_stm32f4xx.c # TST_API_MOD_700D_PROFILE_SRCS += $(CODEC2_SRCS) TST_API_MOD_700D_PROFILE_SRCS += $(SRCS) # tst_api_mod_700d_profile.elf: $(TST_API_MOD_700D_PROFILE_SRCS:.c=.profile.o) libstm32f4.a $(CC) $(CFLAGS) -DPROFILE $^ -o $@ $(LIBPATHS) $(LIBS) # ----------------------------------------------- # TST_API_DEMOD TST_API_DEMOD_SRCS=\ tst_api_demod.c \ semihosting.c \ $(CODEC2_STM32_SRC)/system_stm32f4xx.c ## (for debug use) sbrk_dbg.c \ # TST_API_DEMOD_SRCS += $(CODEC2_SRCS) TST_API_DEMOD_SRCS += $(SRCS) # tst_api_demod.elf: $(TST_API_DEMOD_SRCS:.c=.o) libstm32f4.a $(CC) $(CFLAGS) -DPROFILE $^ -o $@ $(LIBPATHS) $(LIBS) -Wl,-Map=tst_api_demod.map # ----------------------------------------------- # TST_API_DEMOD_700D_PROFILE api_demod_700d_in_10f: # Each frame of OFDM is 160ms which is 1280 speech samples of 2 bytes each. # dd bs=2560 count=100 if=../../../raw/hts1.raw of=tmp_spch_in.raw cohpsk_ch tmp_spch_in.raw tmp_modout.raw -20 -Fs 8000 -f -5 --raw_dir ../../../raw freedv_tx 700D tmp_modout.raw api_demod_700d_in_10f --txbpf 0 # api_demod_700d_in_10f.c: api_demod_700d_in_10f xxd -i api_demod_700d_in_10f > api_demod_700d_in_10f.c # TST_API_DEMOD_700D_PROFILE_SRCS=\ tst_api_demod_700d_profile.c \ semihosting.c \ $(CODEC2_STM32_SRC)/system_stm32f4xx.c ## (for debug use) sbrk_dbg.c \ # tst_api_demod_700d_profile.profile.o: tst_api_demod_700d_profile.c api_demod_700d_in_10f.c $(CC) $(CPPFLAGS) $(CFLAGS) -DPROFILE -c -o $@ $< # TST_API_DEMOD_700D_PROFILE_SRCS += $(CODEC2_SRCS) TST_API_DEMOD_700D_PROFILE_SRCS += $(SRCS) # tst_api_demod_700d_profile.elf: $(TST_API_DEMOD_700D_PROFILE_SRCS:.c=.profile.o) libstm32f4.a $(CC) $(CFLAGS) -DPROFILE $^ -o $@ $(LIBPATHS) $(LIBS) # ----------------------------------------------- TST_OFDM_MOD_SRCS=\ tst_ofdm_mod.c \ semihosting.c \ $(CODEC2_SRC)/ofdm.c \ $(CODEC2_STM32_SRC)/system_stm32f4xx.c TST_OFDM_MOD_SRCS += $(CODEC2_SRCS) TST_OFDM_MOD_SRCS += $(SRCS) tst_ofdm_mod.elf: $(TST_OFDM_MOD_SRCS:.c=.profile.o) libstm32f4.a $(CC) $(CFLAGS) -DPROFILE $^ -o $@ $(LIBPATHS) $(LIBS) # ----------------------------------------------- TST_OFDM_DEMOD_SRCS=\ tst_ofdm_demod.c \ semihosting.c \ $(CODEC2_SRC)/ofdm.c \ $(CODEC2_STM32_SRC)/system_stm32f4xx.c # TST_OFDM_DEMOD_SRCS += $(CODEC2_SRCS) TST_OFDM_DEMOD_SRCS += $(SRCS) # tst_ofdm_demod.elf: $(TST_OFDM_DEMOD_SRCS:.c=.profile.o) libstm32f4.a $(CC) $(CFLAGS) $^ -o $@ $(LIBPATHS) $(LIBS) -Wl,-Map=tst_ofdm_demod.map # ----------------------------------------------- # TST_OFDM_MOD_STACK # ofdm_mod_ref_10f: $(CODEC2_BLD)/src/ofdm_mod /dev/zero ofdm_mod_ref_10f --testframes 1 --ldpc # ofdm_mod_ref_10f.c: ofdm_mod_ref_10f xxd -g2 -e -i ofdm_mod_ref_10f > ofdm_mod_ref_10f.c # tst_ofdm_mod_stack.profile.o: tst_ofdm_mod_stack.c ofdm_mod_ref_10f.c $(CC) $(CPPFLAGS) $(CFLAGS) -DPROFILE -c -o $@ $< # TST_OFDM_MOD_STACK_SRCS=\ tst_ofdm_mod_stack.c \ function_trace.c \ $(CODEC2_SRC)/ofdm.c \ $(CODEC2_STM32_SRC)/system_stm32f4xx.c # TST_OFDM_MOD_STACK_SRCS += $(CODEC2_SRCS) TST_OFDM_MOD_STACK_SRCS += $(SRCS) # tst_ofdm_mod_stack.elf: $(TST_OFDM_MOD_STACK_SRCS:.c=.o) libstm32f4.a $(CC) $(CFLAGS) $^ -o $@ $(LIBPATHS) $(LIBS) -Wl,-Map=tst_ofdm_mod_stack.map # ----------------------------------------------- # TST_OFDM_DEMOD_STACK ofdm_demod_in_10f: $(CODEC2_BLD)/src/ofdm_get_test_bits - -f 10 | \ $(CODEC2_BLD)/src/ofdm_mod - ofdm_demod_in_10f # ofdm_demod_in_10f.c: ofdm_demod_in_10f xxd -i ofdm_demod_in_10f > ofdm_demod_in_10f.c # ofdm_demod_ref_10f: ofdm_demod_in_10f $(CODEC2_BLD)/src/ofdm_demod ofdm_demod_in_10f ofdm_demod_ref_10f # ofdm_demod_ref_10f.c: ofdm_demod_ref_10f xxd -i ofdm_demod_ref_10f > ofdm_demod_ref_10f.c # tst_ofdm_demod_stack.o: ofdm_demod_in_10f.c ofdm_demod_ref_10f.c # TST_OFDM_DEMOD_STACK_SRCS=\ tst_ofdm_demod_stack.c \ $(CODEC2_SRC)/ofdm.c \ $(CODEC2_STM32_SRC)/system_stm32f4xx.c # TST_OFDM_DEMOD_STACK_SRCS += $(CODEC2_SRCS) TST_OFDM_DEMOD_STACK_SRCS += $(SRCS) # tst_ofdm_demod_stack.elf: $(TST_OFDM_DEMOD_STACK_SRCS:.c=.o) libstm32f4.a $(CC) $(CFLAGS) $^ -o $@ $(LIBPATHS) $(LIBS) -Wl,-Map=tst_ofdm_demod_stack.map # ----------------------------------------------- # Not working yet! TST_LDPC_ENC_SRCS= \ tst_ldpc_enc.c \ semihosting.c \ $(CODEC2_STM32_SRC)/system_stm32f4xx.c # TST_LDPC_ENC_SRCS += $(CODEC2_SRCS) TST_LDPC_ENC_SRCS += $(SRCS) # TST_LDPC_ENC_HDR= \ $(CODEC2_INC)/mpdecode_code_test.h # tst_ldpc_enc.elf: $(TST_LDPC_ENC_SRCS:.c=.profile.o) libstm32f4.a $(TST_LDPC_ENC_HRDS) $(CC) $(CFLAGS) -DPROFILE $^ -o $@ $(LIBPATHS) $(LIBS) # ----------------------------------------------- # Not working yet! TST_LDPC_DEC_SRCS= \ tst_ldpc_dec.c \ semihosting.c \ $(CODEC2_STM32_SRC)/system_stm32f4xx.c # TST_LDPC_DEC_SRCS += $(CODEC2_SRCS) TST_LDPC_DEC_SRCS += $(SRCS) # TST_LDPC_DEC_HDR= \ $(CODEC2_INC)/mpdecode_code.h # tst_ldpc_dec.elf: $(TST_LDPC_DEC_SRCS:.c=.profile.o) libstm32f4.a $(TST_LDPC_DEC_HRDS) $(CC) $(CFLAGS) -DPROFILE $^ -o $@ $(LIBPATHS) $(LIBS) -Wl,-Map=tst_ldpc_dec.map # ----------------------------------------------- TST_SEMIHOST_SRCS=\ tst_semihost.c \ semihosting.c \ $(CODEC2_STM32_SRC)/system_stm32f4xx.c # TST_SEMIHOST_SRCS += $(CODEC2_SRCS) TST_SEMIHOST_SRCS += $(SRCS) # tst_semihost.elf: $(TST_SEMIHOST_SRCS:.c=.o) libstm32f4.a #$(TMP_NEWLIB_OBJS) $(CC) $(CFLAGS) $^ -o $@ $(LIBPATHS) $(LIBS) # ----------------------------------------------- TST_CODEC2_FFT_INIT_SRCS=\ tst_codec2_fft_init.c \ semihosting.c \ $(CODEC2_STM32_SRC)/system_stm32f4xx.c # TST_CODEC2_FFT_INIT_SRCS += $(CODEC2_SRCS) TST_CODEC2_FFT_INIT_SRCS += $(SRCS) # tst_codec2_fft_init.elf: $(TST_CODEC2_FFT_INIT_SRCS:.c=.o) libstm32f4.a $(CC) $(CFLAGS) $^ -o $@ $(LIBPATHS) $(LIBS) ################################################### clean: rm -f *.elf *.bin rm -f libstm32f4.a rm -f $(CMSIS_OBJS) $(STM32F4LIB_OBJS) $(CODEC2_SRC)/*.o find . -type f -name '*.o' | xargs rm -f codec2-1.2.0/stm32/unittest/src/init.c000066400000000000000000000001261445607075400174110ustar00rootroot00000000000000/* * Dummy function to avoid compiler error */ void _init() { } void _fini() { } codec2-1.2.0/stm32/unittest/src/semihosting.c000066400000000000000000000005111445607075400207750ustar00rootroot00000000000000#include #include #include #include #include "semihosting.h" extern void initialise_monitor_handles(void); extern int errno; int semihosting_init(void) { initialise_monitor_handles(); setvbuf(stderr, NULL, _IOLBF, 256); return(0); } /* vi:set ts=4 et sts=4: */ codec2-1.2.0/stm32/unittest/src/semihosting.h000066400000000000000000000002051445607075400210020ustar00rootroot00000000000000#ifndef SEMIHOSTING_H #define SEMIHOSTING_H extern int semihosting_init(void); #endif // SEMIHOSTING_H /* vi:set ts=4 et sts=4: */ codec2-1.2.0/stm32/unittest/src/startup_stm32f4xx.s000066400000000000000000000463521445607075400220450ustar00rootroot00000000000000/** ****************************************************************************** * @file startup_stm32f4xx.s * @author MCD Application Team * @version V1.0.0 * @date 30-September-2011 * @brief STM32F4xx Devices vector table for Atollic TrueSTUDIO toolchain. * This module performs: * - Set the initial SP * - Set the initial PC == Reset_Handler, * - Set the vector table entries with the exceptions ISR address * - Configure the clock system and the external SRAM mounted on * STM324xG-EVAL board to be used as data memory (optional, * to be enabled by user) * - Branches to main in the C library (which eventually * calls main()). * After Reset the Cortex-M4 processor is in Thread mode, * priority is Privileged, and the Stack is set to Main. ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ .syntax unified .cpu cortex-m3 .fpu softvfp .thumb .global g_pfnVectors .global Default_Handler .global EndofMain /* start address for the initialization values of the .data section. defined in linker script */ .word _sidata /* start address for the .data section. defined in linker script */ .word _sdata /* end address for the .data section. defined in linker script */ .word _edata /* start address for the .bss section. defined in linker script */ .word _sbss /* end address for the .bss section. defined in linker script */ .word _ebss /* stack used for SystemInit_ExtMemCtl; always internal RAM used */ /** * @brief This is the code that gets called when the processor first * starts execution following a reset event. Only the absolutely * necessary set is performed, after which the application * supplied main() routine is called. * @param None * @retval : None */ .section .text.Reset_Handler .weak Reset_Handler .type Reset_Handler, %function Reset_Handler: /* Copy the data segment initializers from flash to SRAM */ movs r1, #0 b LoopCopyDataInit CopyDataInit: ldr r3, =_sidata ldr r3, [r3, r1] str r3, [r0, r1] adds r1, r1, #4 LoopCopyDataInit: ldr r0, =_sdata ldr r3, =_edata adds r2, r0, r1 cmp r2, r3 bcc CopyDataInit ldr r2, =_sbss b LoopFillZerobss /* Zero fill the bss segment. */ FillZerobss: movs r3, #0 str r3, [r2], #4 LoopFillZerobss: ldr r3, = _ebss cmp r2, r3 bcc FillZerobss /* Fill stack area with a fix pattern for observince max stack use */ mov r2, r3 ldr r3, = _estack ldr r4, =0x55555555 b LoopFillStack FillStack: str r4, [r2], #4 LoopFillStack: cmp r2, r3 bcc FillStack /* Call the clock system initialization function.*/ bl SystemInit /* Call static constructors */ bl __libc_init_array /* Call the application's entry point.*/ bl main EndofMain: bl . .size Reset_Handler, .-Reset_Handler /** * @brief This is the code that gets called when the processor receives an * unexpected interrupt. This simply enters an infinite loop, preserving * the system state for examination by a debugger. * @param None * @retval None */ .section .text.Default_Handler,"ax",%progbits Default_Handler: Infinite_Loop: b Infinite_Loop .size Default_Handler, .-Default_Handler /****************************************************************************** * * The minimal vector table for a Cortex M3. Note that the proper constructs * must be placed on this to ensure that it ends up at physical address * 0x0000.0000. * *******************************************************************************/ .section .isr_vector,"a",%progbits .type g_pfnVectors, %object .size g_pfnVectors, .-g_pfnVectors g_pfnVectors: .word _estack .word Reset_Handler .word NMI_Handler .word HardFault_Handler .word MemManage_Handler .word BusFault_Handler .word UsageFault_Handler .word 0 .word 0 .word 0 .word 0 .word SVC_Handler .word DebugMon_Handler .word 0 .word PendSV_Handler .word SysTick_Handler /* External Interrupts */ .word WWDG_IRQHandler /* Window WatchDog */ .word PVD_IRQHandler /* PVD through EXTI Line detection */ .word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ .word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ .word FLASH_IRQHandler /* FLASH */ .word RCC_IRQHandler /* RCC */ .word EXTI0_IRQHandler /* EXTI Line0 */ .word EXTI1_IRQHandler /* EXTI Line1 */ .word EXTI2_IRQHandler /* EXTI Line2 */ .word EXTI3_IRQHandler /* EXTI Line3 */ .word EXTI4_IRQHandler /* EXTI Line4 */ .word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ .word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ .word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ .word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ .word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ .word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ .word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ .word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ .word CAN1_TX_IRQHandler /* CAN1 TX */ .word CAN1_RX0_IRQHandler /* CAN1 RX0 */ .word CAN1_RX1_IRQHandler /* CAN1 RX1 */ .word CAN1_SCE_IRQHandler /* CAN1 SCE */ .word EXTI9_5_IRQHandler /* External Line[9:5]s */ .word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ .word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ .word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ .word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ .word TIM2_IRQHandler /* TIM2 */ .word TIM3_IRQHandler /* TIM3 */ .word TIM4_IRQHandler /* TIM4 */ .word I2C1_EV_IRQHandler /* I2C1 Event */ .word I2C1_ER_IRQHandler /* I2C1 Error */ .word I2C2_EV_IRQHandler /* I2C2 Event */ .word I2C2_ER_IRQHandler /* I2C2 Error */ .word SPI1_IRQHandler /* SPI1 */ .word SPI2_IRQHandler /* SPI2 */ .word USART1_IRQHandler /* USART1 */ .word USART2_IRQHandler /* USART2 */ .word USART3_IRQHandler /* USART3 */ .word EXTI15_10_IRQHandler /* External Line[15:10]s */ .word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ .word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ .word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */ .word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */ .word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */ .word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ .word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ .word FSMC_IRQHandler /* FSMC */ .word SDIO_IRQHandler /* SDIO */ .word TIM5_IRQHandler /* TIM5 */ .word SPI3_IRQHandler /* SPI3 */ .word UART4_IRQHandler /* UART4 */ .word UART5_IRQHandler /* UART5 */ .word TIM6_DAC_IRQHandler /* TIM6 and DAC1&2 underrun errors */ .word TIM7_IRQHandler /* TIM7 */ .word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ .word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ .word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ .word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ .word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ .word ETH_IRQHandler /* Ethernet */ .word ETH_WKUP_IRQHandler /* Ethernet Wakeup through EXTI line */ .word CAN2_TX_IRQHandler /* CAN2 TX */ .word CAN2_RX0_IRQHandler /* CAN2 RX0 */ .word CAN2_RX1_IRQHandler /* CAN2 RX1 */ .word CAN2_SCE_IRQHandler /* CAN2 SCE */ .word OTG_FS_IRQHandler /* USB OTG FS */ .word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ .word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ .word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ .word USART6_IRQHandler /* USART6 */ .word I2C3_EV_IRQHandler /* I2C3 event */ .word I2C3_ER_IRQHandler /* I2C3 error */ .word OTG_HS_EP1_OUT_IRQHandler /* USB OTG HS End Point 1 Out */ .word OTG_HS_EP1_IN_IRQHandler /* USB OTG HS End Point 1 In */ .word OTG_HS_WKUP_IRQHandler /* USB OTG HS Wakeup through EXTI */ .word OTG_HS_IRQHandler /* USB OTG HS */ .word DCMI_IRQHandler /* DCMI */ .word CRYP_IRQHandler /* CRYP crypto */ .word HASH_RNG_IRQHandler /* Hash and Rng */ .word FPU_IRQHandler /* FPU */ /******************************************************************************* * * Provide weak aliases for each Exception handler to the Default_Handler. * As they are weak aliases, any function with the same name will override * this definition. * *******************************************************************************/ .weak NMI_Handler .thumb_set NMI_Handler,Default_Handler .weak HardFault_Handler .thumb_set HardFault_Handler,Default_Handler .weak MemManage_Handler .thumb_set MemManage_Handler,Default_Handler .weak BusFault_Handler .thumb_set BusFault_Handler,Default_Handler .weak UsageFault_Handler .thumb_set UsageFault_Handler,Default_Handler .weak SVC_Handler .thumb_set SVC_Handler,Default_Handler .weak DebugMon_Handler .thumb_set DebugMon_Handler,Default_Handler .weak PendSV_Handler .thumb_set PendSV_Handler,Default_Handler .weak SysTick_Handler .thumb_set SysTick_Handler,Default_Handler .weak WWDG_IRQHandler .thumb_set WWDG_IRQHandler,Default_Handler .weak PVD_IRQHandler .thumb_set PVD_IRQHandler,Default_Handler .weak TAMP_STAMP_IRQHandler .thumb_set TAMP_STAMP_IRQHandler,Default_Handler .weak RTC_WKUP_IRQHandler .thumb_set RTC_WKUP_IRQHandler,Default_Handler .weak FLASH_IRQHandler .thumb_set FLASH_IRQHandler,Default_Handler .weak RCC_IRQHandler .thumb_set RCC_IRQHandler,Default_Handler .weak EXTI0_IRQHandler .thumb_set EXTI0_IRQHandler,Default_Handler .weak EXTI1_IRQHandler .thumb_set EXTI1_IRQHandler,Default_Handler .weak EXTI2_IRQHandler .thumb_set EXTI2_IRQHandler,Default_Handler .weak EXTI3_IRQHandler .thumb_set EXTI3_IRQHandler,Default_Handler .weak EXTI4_IRQHandler .thumb_set EXTI4_IRQHandler,Default_Handler .weak DMA1_Stream0_IRQHandler .thumb_set DMA1_Stream0_IRQHandler,Default_Handler .weak DMA1_Stream1_IRQHandler .thumb_set DMA1_Stream1_IRQHandler,Default_Handler .weak DMA1_Stream2_IRQHandler .thumb_set DMA1_Stream2_IRQHandler,Default_Handler .weak DMA1_Stream3_IRQHandler .thumb_set DMA1_Stream3_IRQHandler,Default_Handler .weak DMA1_Stream4_IRQHandler .thumb_set DMA1_Stream4_IRQHandler,Default_Handler .weak DMA1_Stream5_IRQHandler .thumb_set DMA1_Stream5_IRQHandler,Default_Handler .weak DMA1_Stream6_IRQHandler .thumb_set DMA1_Stream6_IRQHandler,Default_Handler .weak ADC_IRQHandler .thumb_set ADC_IRQHandler,Default_Handler .weak CAN1_TX_IRQHandler .thumb_set CAN1_TX_IRQHandler,Default_Handler .weak CAN1_RX0_IRQHandler .thumb_set CAN1_RX0_IRQHandler,Default_Handler .weak CAN1_RX1_IRQHandler .thumb_set CAN1_RX1_IRQHandler,Default_Handler .weak CAN1_SCE_IRQHandler .thumb_set CAN1_SCE_IRQHandler,Default_Handler .weak EXTI9_5_IRQHandler .thumb_set EXTI9_5_IRQHandler,Default_Handler .weak TIM1_BRK_TIM9_IRQHandler .thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler .weak TIM1_UP_TIM10_IRQHandler .thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler .weak TIM1_TRG_COM_TIM11_IRQHandler .thumb_set TIM1_TRG_COM_TIM11_IRQHandler,Default_Handler .weak TIM1_CC_IRQHandler .thumb_set TIM1_CC_IRQHandler,Default_Handler .weak TIM2_IRQHandler .thumb_set TIM2_IRQHandler,Default_Handler .weak TIM3_IRQHandler .thumb_set TIM3_IRQHandler,Default_Handler .weak TIM4_IRQHandler .thumb_set TIM4_IRQHandler,Default_Handler .weak I2C1_EV_IRQHandler .thumb_set I2C1_EV_IRQHandler,Default_Handler .weak I2C1_ER_IRQHandler .thumb_set I2C1_ER_IRQHandler,Default_Handler .weak I2C2_EV_IRQHandler .thumb_set I2C2_EV_IRQHandler,Default_Handler .weak I2C2_ER_IRQHandler .thumb_set I2C2_ER_IRQHandler,Default_Handler .weak SPI1_IRQHandler .thumb_set SPI1_IRQHandler,Default_Handler .weak SPI2_IRQHandler .thumb_set SPI2_IRQHandler,Default_Handler .weak USART1_IRQHandler .thumb_set USART1_IRQHandler,Default_Handler .weak USART2_IRQHandler .thumb_set USART2_IRQHandler,Default_Handler .weak USART3_IRQHandler .thumb_set USART3_IRQHandler,Default_Handler .weak EXTI15_10_IRQHandler .thumb_set EXTI15_10_IRQHandler,Default_Handler .weak RTC_Alarm_IRQHandler .thumb_set RTC_Alarm_IRQHandler,Default_Handler .weak OTG_FS_WKUP_IRQHandler .thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler .weak TIM8_BRK_TIM12_IRQHandler .thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler .weak TIM8_UP_TIM13_IRQHandler .thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler .weak TIM8_TRG_COM_TIM14_IRQHandler .thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler .weak TIM8_CC_IRQHandler .thumb_set TIM8_CC_IRQHandler,Default_Handler .weak DMA1_Stream7_IRQHandler .thumb_set DMA1_Stream7_IRQHandler,Default_Handler .weak FSMC_IRQHandler .thumb_set FSMC_IRQHandler,Default_Handler .weak SDIO_IRQHandler .thumb_set SDIO_IRQHandler,Default_Handler .weak TIM5_IRQHandler .thumb_set TIM5_IRQHandler,Default_Handler .weak SPI3_IRQHandler .thumb_set SPI3_IRQHandler,Default_Handler .weak UART4_IRQHandler .thumb_set UART4_IRQHandler,Default_Handler .weak UART5_IRQHandler .thumb_set UART5_IRQHandler,Default_Handler .weak TIM6_DAC_IRQHandler .thumb_set TIM6_DAC_IRQHandler,Default_Handler .weak TIM7_IRQHandler .thumb_set TIM7_IRQHandler,Default_Handler .weak DMA2_Stream0_IRQHandler .thumb_set DMA2_Stream0_IRQHandler,Default_Handler .weak DMA2_Stream1_IRQHandler .thumb_set DMA2_Stream1_IRQHandler,Default_Handler .weak DMA2_Stream2_IRQHandler .thumb_set DMA2_Stream2_IRQHandler,Default_Handler .weak DMA2_Stream3_IRQHandler .thumb_set DMA2_Stream3_IRQHandler,Default_Handler .weak DMA2_Stream4_IRQHandler .thumb_set DMA2_Stream4_IRQHandler,Default_Handler .weak ETH_IRQHandler .thumb_set ETH_IRQHandler,Default_Handler .weak ETH_WKUP_IRQHandler .thumb_set ETH_WKUP_IRQHandler,Default_Handler .weak CAN2_TX_IRQHandler .thumb_set CAN2_TX_IRQHandler,Default_Handler .weak CAN2_RX0_IRQHandler .thumb_set CAN2_RX0_IRQHandler,Default_Handler .weak CAN2_RX1_IRQHandler .thumb_set CAN2_RX1_IRQHandler,Default_Handler .weak CAN2_SCE_IRQHandler .thumb_set CAN2_SCE_IRQHandler,Default_Handler .weak OTG_FS_IRQHandler .thumb_set OTG_FS_IRQHandler,Default_Handler .weak DMA2_Stream5_IRQHandler .thumb_set DMA2_Stream5_IRQHandler,Default_Handler .weak DMA2_Stream6_IRQHandler .thumb_set DMA2_Stream6_IRQHandler,Default_Handler .weak DMA2_Stream7_IRQHandler .thumb_set DMA2_Stream7_IRQHandler,Default_Handler .weak USART6_IRQHandler .thumb_set USART6_IRQHandler,Default_Handler .weak I2C3_EV_IRQHandler .thumb_set I2C3_EV_IRQHandler,Default_Handler .weak I2C3_ER_IRQHandler .thumb_set I2C3_ER_IRQHandler,Default_Handler .weak OTG_HS_EP1_OUT_IRQHandler .thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler .weak OTG_HS_EP1_IN_IRQHandler .thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler .weak OTG_HS_WKUP_IRQHandler .thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler .weak OTG_HS_IRQHandler .thumb_set OTG_HS_IRQHandler,Default_Handler .weak DCMI_IRQHandler .thumb_set DCMI_IRQHandler,Default_Handler .weak CRYP_IRQHandler .thumb_set CRYP_IRQHandler,Default_Handler .weak HASH_RNG_IRQHandler .thumb_set HASH_RNG_IRQHandler,Default_Handler .weak FPU_IRQHandler .thumb_set FPU_IRQHandler,Default_Handler /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/unittest/src/tst_api_demod.c000066400000000000000000000157221445607075400212710ustar00rootroot00000000000000/*------------------------------------------------------ FILE........: tst_api_demod.c AUTHOR......: David Rowe, Don Reid DATE CREATED: 7 July 2018 Test and profile OFDM de-modulation on the STM32F4. -------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ /* Typical run, using internal testframes: # Input # Copy N frames of a raw audio file to stm_in.raw. dd bs=2560 count=30 if=../../../../raw/hts1.raw of=spch_in.raw freedv_tx 700D spch_in.raw stm_in.raw --testframes # Reference freedv_rx 700D stm_in.raw ref_demod.raw --testframes # Create config echo "71000010" > stm_cfg.txt # Run stm32 run_stm32_prog ../../src/tst_api_demod.elf --load */ #include #include #include #include #include #include #include #include #include #include #include #include "freedv_api.h" #include "modem_stats.h" #include "codec2.h" #include "semihosting.h" #include "stm32f4xx_conf.h" #include "stm32f4xx.h" #include "machdep.h" #include "memtools.h" struct my_callback_state { //FILE *ftxt; }; void my_put_next_rx_char(void *callback_state, char c) { //fprintf(stdout, "text msg: %c\n", c); } void my_put_next_rx_proto(void *callback_state,char *proto_bits){ //fprintf(stdout, "proto chars: %.*s\n",2, proto_bits); } /* Called when a packet has been received */ void my_datarx(void *callback_state, unsigned char *packet, size_t size) { //size_t i; // //fprintf(stdout, "data (%zd bytes): ", size); //for (i = 0; i < size; i++) { // fprintf(stdout, "0x%02x ", packet[i]); //} //fprintf(stdout, "\n"); } /* Called when a new packet can be send */ void my_datatx(void *callback_state, unsigned char *packet, size_t *size) { /* This should not happen while receiving.. */ fprintf(stderr, "datarx callback called, this should not happen!\n"); *size = 0; } #define SPARE_RAM 3000 int main(int argc, char *argv[]) { char dummy[SPARE_RAM]; int f_cfg, f_in, f_out; struct freedv *freedv; struct my_callback_state my_cb_state; int frame; int nread, nin, nout; int sync; float snr_est; // Force test to fail unless we have this much spare RAM (adjusted by experiment) memset(dummy, 0, SPARE_RAM); semihosting_init(); PROFILE_VAR(freedv_rx_start); machdep_profile_init(); //////// // Test configuration, read from stm_cfg.txt int config_mode; // 0 int config_testframes; // 1 int config_verbose; // 6 //int config_profile; // 7 char config[8]; f_cfg = open("stm_cfg.txt", O_RDONLY); if (f_cfg == -1) { fprintf(stderr, "Error opening config file\n"); exit(1); } if (read(f_cfg, &config[0], 8) != 8) { fprintf(stderr, "Error reading config file\n"); exit(1); } config_mode = config[0] - '0'; if (config_mode == 8) { // For the purposes of the UT system, '8' is 700E. config_mode = FREEDV_MODE_700E; } config_testframes = config[1] - '0'; config_verbose = config[6] - '0'; //config_profile = config[7] - '0'; close(f_cfg); printf("config_mode: %d config_verbose: %d\n", config_mode, config_verbose); //////// freedv = freedv_open(config_mode); assert(freedv != NULL); memtools_find_unused(printf); freedv_set_test_frames(freedv, config_testframes); freedv_set_verbose(freedv, config_verbose); freedv_set_snr_squelch_thresh(freedv, -100.0); freedv_set_squelch_en(freedv, 0); short speech_out[freedv_get_n_speech_samples(freedv)]; short demod_in[freedv_get_n_max_modem_samples(freedv)]; freedv_set_callback_txt(freedv, &my_put_next_rx_char, NULL, &my_cb_state); freedv_set_callback_protocol(freedv, &my_put_next_rx_proto, NULL, &my_cb_state); freedv_set_callback_data(freedv, my_datarx, my_datatx, &my_cb_state); //////// // Streams f_in = open("stm_in.raw", O_RDONLY); if (f_in == -1) { perror("Error opening input file\n"); exit(1); } f_out = open("stm_out.raw", (O_CREAT | O_WRONLY), 0644); if (f_out == -1) { perror("Error opening output file\n"); exit(1); } frame = 0; //////// // Main loop nin = freedv_nin(freedv); while((nread = read(f_in, demod_in, (sizeof(short) * nin))) == (nin * sizeof(short))) { fprintf(stderr, "frame: %d, %d bytes read\n", frame, nread); PROFILE_SAMPLE(freedv_rx_start); nout = freedv_rx(freedv, speech_out, demod_in); PROFILE_SAMPLE_AND_LOG2(freedv_rx_start, " freedv_rx"); machdep_profile_print_logged_samples(); fprintf(stderr, " %d short speech values returned\n", nout); if (nout) write(f_out, speech_out, (sizeof(short) * nout)); if (sync == 0) { // discard BER results if we get out of sync, helps us get sensible BER results freedv_set_total_bits(freedv, 0); freedv_set_total_bit_errors(freedv, 0); freedv_set_total_bits_coded(freedv, 0); freedv_set_total_bit_errors_coded(freedv, 0); } freedv_get_modem_stats(freedv, &sync, &snr_est); int total_bit_errors = freedv_get_total_bit_errors(freedv); fprintf(stderr, "frame: %d demod sync: %d nin: %d demod snr: %3.2f dB bit errors: %d\n", frame, sync, nin, (double)snr_est, total_bit_errors); frame++; nin = freedv_nin(freedv); } ////// if (freedv_get_test_frames(freedv)) { int Tbits = freedv_get_total_bits(freedv); int Terrs = freedv_get_total_bit_errors(freedv); fprintf(stderr, "BER......: %5.4f Tbits: %5d Terrs: %5d\n", (double)Terrs/Tbits, Tbits, Terrs); if (config_mode == FREEDV_MODE_700D || config_mode == FREEDV_MODE_700E) { int Tbits_coded = freedv_get_total_bits_coded(freedv); int Terrs_coded = freedv_get_total_bit_errors_coded(freedv); fprintf(stderr, "Coded BER: %5.4f Tbits: %5d Terrs: %5d\n", (double)Terrs_coded/Tbits_coded, Tbits_coded, Terrs_coded); } } printf("Done\n"); close(f_in); close(f_out); memtools_find_unused(printf); printf("\nEnd of Test\n"); } /* vi:set ts=4 et sts=4: */ codec2-1.2.0/stm32/unittest/src/tst_api_demod_700d_profile.c000066400000000000000000000067011445607075400235400ustar00rootroot00000000000000/*------------------------------------------------------ FILE........: tst_api_demod.c AUTHOR......: David Rowe, Don Reid DATE CREATED: 7 July 2018 Test and profile OFDM de-modulation on the STM32F4. -------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include #include #include #include "freedv_api.h" #include "modem_stats.h" #include "codec2.h" #include "semihosting.h" #include "stm32f4xx_conf.h" #include "stm32f4xx.h" #include "machdep.h" /* Input and Reference data */ const #include "api_demod_700d_in_10f.c" struct my_callback_state { //FILE *ftxt; }; void my_put_next_rx_char(void *callback_state, char c) { //fprintf(stdout, "text msg: %c\n", c); } void my_put_next_rx_proto(void *callback_state,char *proto_bits){ //fprintf(stdout, "proto chars: %.*s\n",2, proto_bits); } /* Called when a packet has been received */ void my_datarx(void *callback_state, unsigned char *packet, size_t size) { //size_t i; // //fprintf(stdout, "data (%zd bytes): ", size); //for (i = 0; i < size; i++) { // fprintf(stdout, "0x%02x ", packet[i]); //} //fprintf(stdout, "\n"); } /* Called when a new packet can be send */ void my_datatx(void *callback_state, unsigned char *packet, size_t *size) { /* This should not happen while receiving.. */ fprintf(stderr, "datarx callback called, this should not happen!\n"); *size = 0; } int main(int argc, char *argv[]) { struct freedv *freedv; struct my_callback_state my_cb_state; int frame; int nin, nout; //////// PROFILE_VAR(prof_freedv_rx); machdep_profile_init(); semihosting_init(); //////// freedv = freedv_open(FREEDV_MODE_700D); freedv_set_snr_squelch_thresh(freedv, -100.0); freedv_set_squelch_en(freedv, 0); short speech_out[freedv_get_n_speech_samples(freedv)]; freedv_set_callback_txt(freedv, &my_put_next_rx_char, NULL, &my_cb_state); freedv_set_callback_protocol(freedv, &my_put_next_rx_proto, NULL, &my_cb_state); freedv_set_callback_data(freedv, my_datarx, my_datatx, &my_cb_state); frame = 0; //////// // Main loop nin = freedv_nin(freedv); int in_ptr = 0; while(in_ptr < api_demod_700d_in_10f_len) { PROFILE_SAMPLE(prof_freedv_rx); nout = freedv_shortrx(freedv, speech_out, (short *)&api_demod_700d_in_10f[in_ptr], 1.0f); PROFILE_SAMPLE_AND_LOG2(prof_freedv_rx, "freedv_rx"); //if (nout) write(f_out, speech_out, (sizeof(short) * nout)); frame++; in_ptr += nin * 2; } machdep_profile_print_logged_samples(); fclose(stdout); fclose(stderr); } /* vi:set ts=4 et sts=4: */ codec2-1.2.0/stm32/unittest/src/tst_api_mod.c000066400000000000000000000176351445607075400207650ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: tst_api_mod.c AUTHOR......: David Rowe, Don Reid DATE CREATED: August 2014, Oct 2018 Test modem modulation via freedv API on the STM32F4. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ /* Typical run, using internal testframes: # Copy N frames of a raw audio file to stm_in.raw. # N=6, count = 6 * 1280 * 2 = 15360 dd bs=1 count=15360 if=../../../../raw/hts1.raw of=stm_in.raw # Reference freedv_tx 700D stm_in.raw ref_mod.raw --testframes # Create config echo "71000000" > stm_cfg.txt # Run stm32 run_stm32_prog ../../src/tst_api_mod.elf --load # Check output freedv_rx 700D ref_mod.raw ref_rx.raw --testframes freedv_rx 700D stm_out.raw stm_rx.raw --testframes #optional: ofdm_demod ref_mod.raw ref_demod.raw --ldpc --testframes #optional: ofdm_demod stm_out.raw stm_demod.raw --ldpc --testframes compare_ints -s -b 2 ref_mod.raw stm_out.raw */ #include #include #include #include #include #include #include #include #include #include #include "freedv_api.h" #include "codec2.h" #include "semihosting.h" #include "stm32f4xx_conf.h" #include "stm32f4xx.h" #include "machdep.h" #include "memtools.h" struct my_callback_state { char tx_str[80]; char *ptx_str; int calls; }; char my_get_next_tx_char(void *callback_state) { struct my_callback_state* pstate = (struct my_callback_state*)callback_state; char c = *pstate->ptx_str++; //fprintf(stderr, "my_get_next_tx_char: %c\n", c); if (*pstate->ptx_str == 0) { pstate->ptx_str = pstate->tx_str; } return c; } void my_get_next_proto(void *callback_state,char *proto_bits){ struct my_callback_state* cb_states = (struct my_callback_state*)(callback_state); snprintf(proto_bits,3,"%2d",cb_states->calls); cb_states->calls = cb_states->calls + 1; } /* Called when a packet has been received */ void my_datarx(void *callback_state, unsigned char *packet, size_t size) { /* This should not happen while sending... */ fprintf(stderr, "datarx callback called, this should not happen!\n"); } /* Called when a new packet can be send */ void my_datatx(void *callback_state, unsigned char *packet, size_t *size) { static int data_toggle; /* Data could come from a network interface, here we just make up some */ data_toggle = !data_toggle; if (data_toggle) { /* Send a packet with data */ int i; for (i = 0; i < 64; i++) packet[i] = i; *size = i; } else { /* set size to zero, the freedv api will insert a header frame */ *size = 0; } } int main(int argc, char *argv[]) { struct freedv *freedv; int f_cfg, f_in, f_out; int frame; int num_read; //struct CODEC2 *c2; struct my_callback_state my_cb_state; semihosting_init(); memtools_find_unused(printf); //////// // Test configuration, read from stm_cfg.txt int config_mode; // 0 int config_testframes; // 1 int use_clip = 0; // 2 int use_txbpf = 0; // 3 //int config_verbose; // 6 //int config_profile; // 7 char config[8]; f_cfg = open("stm_cfg.txt", O_RDONLY); if (f_cfg == -1) { fprintf(stderr, "Error opening config file\n"); exit(1); } if (read(f_cfg, &config[0], 8) != 8) { fprintf(stderr, "Error reading config file\n"); exit(1); } config_mode = config[0] - '0'; if (config_mode == 8) { // For the purposes of the UT system, '8' is 700E. config_mode = FREEDV_MODE_700E; } config_testframes = config[1] - '0'; use_clip = config[2] - '0'; use_txbpf = config[3] - '0'; //config_verbose = config[6] - '0'; //config_profile = config[7] - '0'; close(f_cfg); //int use_codectx = 0; //int use_datatx = 0; //int use_testframes = 0; int use_ext_vco = 0; //////// //PROFILE_VAR(freedv_start); //machdep_profile_init(); //////// freedv = freedv_open(config_mode); assert(freedv != NULL); fprintf(stderr, "freedv opened %p\n", freedv); freedv_set_test_frames(freedv, config_testframes); int n_speech_samples = freedv_get_n_speech_samples(freedv); short *speech_in = (short*)malloc(sizeof(short)*n_speech_samples); int n_nom_modem_samples = freedv_get_n_nom_modem_samples(freedv); short *mod_out = (short*)malloc(sizeof(short)*n_nom_modem_samples); fprintf(stderr, "n_speech_samples: %d n_nom_modem_samples: %d\n", n_speech_samples, n_nom_modem_samples); fprintf(stderr, "mod_out: %p\n", mod_out); /* // This is "codectx" operation: int c2_mode; if (config_mode == FREEDV_MODE_700) { c2_mode = CODEC2_MODE_700; } else if ((config_mode == FREEDV_MODE_700B) || (config_mode == FREEDV_MODE_800XA)) { c2_mode = CODEC2_MODE_700B; } else if ((config_mode == FREEDV_MODE_700C) || (config_mode == FREEDV_MODE_700D)) { c2_mode = CODEC2_MODE_700C; } else { c2_mode = CODEC2_MODE_1300; } c2 = codec2_create(c2_mode); int bits_per_codec_frame = codec2_bits_per_frame(c2); int bytes_per_codec_frame = (bits_per_codec_frame + 7) / 8; int codec_frames = freedv_get_n_codec_bits(freedv) / bits_per_codec_frame; int inbuf_size = bytes_per_codec_frame * codec_frames; unsigned char inbuf[inbuf_size]; */ freedv_set_snr_squelch_thresh(freedv, -100.0); freedv_set_squelch_en(freedv, 1); freedv_set_clip(freedv, use_clip); freedv_set_tx_bpf(freedv, use_txbpf); freedv_set_ext_vco(freedv, use_ext_vco); freedv_set_eq(freedv, 1); memtools_find_unused(printf); // set up callback for txt msg chars sprintf(my_cb_state.tx_str, "cq cq cq hello world\r"); my_cb_state.ptx_str = my_cb_state.tx_str; my_cb_state.calls = 0; freedv_set_callback_txt(freedv, NULL, &my_get_next_tx_char, &my_cb_state); // set up callback for protocol bits freedv_set_callback_protocol(freedv, NULL, &my_get_next_proto, &my_cb_state); // set up callback for data packets freedv_set_callback_data(freedv, my_datarx, my_datatx, &my_cb_state); //////// // Streams f_in = open("stm_in.raw", O_RDONLY); if (f_in == -1) { perror("Error opening input file\n"); exit(1); } f_out = open("stm_out.raw", (O_CREAT | O_WRONLY), 0644); if (f_out == -1) { perror("Error opening output file\n"); exit(1); } frame = 0; fprintf(stderr, "starting main loop\n"); //////// // Main loop while ((num_read = read(f_in, speech_in, (sizeof(short) * n_speech_samples))) == (sizeof(short) * n_speech_samples)) { fprintf(stderr, "frame: %d\r", frame); freedv_tx(freedv, mod_out, speech_in); write(f_out, mod_out, (sizeof(short) * n_nom_modem_samples)); frame++ ; //machdep_profile_print_logged_samples(); } printf("Done\n"); close(f_in); close(f_out); printf("\nEnd of Test\n"); return(0); } /* vi:set ts=4 et sts=4: */ codec2-1.2.0/stm32/unittest/src/tst_api_mod_700d_profile.c000066400000000000000000000110231445607075400232200ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: tst_api_mod.c AUTHOR......: David Rowe, Don Reid DATE CREATED: August 2014, Oct 2018 Test modem modulation via freedv API on the STM32F4. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ /* This is a test implementation of the Freev API Modulation function. * It is used for profiling performance. * * The input is generated within the test. * The output is ignored. */ #include #include #include #include #include #include #include #include #include "freedv_api.h" #include "codec2.h" #include "semihosting.h" #include "stm32f4xx_conf.h" #include "stm32f4xx.h" #include "machdep.h" struct my_callback_state { char tx_str[80]; char *ptx_str; int calls; }; char my_get_next_tx_char(void *callback_state) { struct my_callback_state* pstate = (struct my_callback_state*)callback_state; char c = *pstate->ptx_str++; if (*pstate->ptx_str == 0) { pstate->ptx_str = pstate->tx_str; } return c; } void my_get_next_proto(void *callback_state,char *proto_bits){ struct my_callback_state* cb_states = (struct my_callback_state*)(callback_state); snprintf(proto_bits,3,"%2d",cb_states->calls); cb_states->calls = cb_states->calls + 1; } /* Called when a packet has been received */ void my_datarx(void *callback_state, unsigned char *packet, size_t size) { /* This should not happen while sending... */ assert(0); } /* Called when a new packet can be send */ void my_datatx(void *callback_state, unsigned char *packet, size_t *size) { static int data_toggle; /* Data could come from a network interface, here we just make up some */ data_toggle = !data_toggle; if (data_toggle) { /* Send a packet with data */ int i; for (i = 0; i < 64; i++) packet[i] = i; *size = i; } else { /* set size to zero, the freedv api will insert a header frame */ *size = 0; } } int main(int argc, char *argv[]) { struct freedv *freedv; int i; struct my_callback_state my_cb_state; int use_clip = 0; int use_txbpf = 0; int use_ext_vco = 0; //////// PROFILE_VAR(prof_freedv_tx); machdep_profile_init(); semihosting_init(); //////// freedv = freedv_open(FREEDV_MODE_700D); int n_speech_samples = freedv_get_n_speech_samples(freedv); short *speech_in = (short*)malloc(sizeof(short)*n_speech_samples); int n_nom_modem_samples = freedv_get_n_nom_modem_samples(freedv); short *mod_out = (short*)malloc(sizeof(short)*n_nom_modem_samples); freedv_set_snr_squelch_thresh(freedv, -100.0); freedv_set_squelch_en(freedv, 1); freedv_set_clip(freedv, use_clip); freedv_set_tx_bpf(freedv, use_txbpf); freedv_set_ext_vco(freedv, use_ext_vco); // set up callback for txt msg chars sprintf(my_cb_state.tx_str, "cq cq cq hello world\r"); my_cb_state.ptx_str = my_cb_state.tx_str; my_cb_state.calls = 0; freedv_set_callback_txt(freedv, NULL, &my_get_next_tx_char, &my_cb_state); // set up callback for protocol bits freedv_set_callback_protocol(freedv, NULL, &my_get_next_proto, &my_cb_state); // set up callback for data packets freedv_set_callback_data(freedv, my_datarx, my_datatx, &my_cb_state); int frame = 0; for (i=0; i. */ #include #include #include #include #include #include "semihosting.h" #include "codec2_ofdm.h" #include "ofdm_internal.h" #include "interldpc.h" #include "gp_interleaver.h" #include "stm32f4xx_conf.h" #include "stm32f4xx.h" #include "freedv_api.h" #include "machdep.h" int main(int argc, char *argv[]) { struct freedv *f; FILE *fin, *fout; int frame, n_samples; semihosting_init(); //PROFILE_VAR(freedv_start); //machdep_profile_init(); f = freedv_open(FREEDV_MODE_1600); n_samples = freedv_get_n_speech_samples(f); short inbuf[n_samples], outbuf[n_samples]; freedv_set_test_frames(f, 1); // Transmit --------------------------------------------------------------------- fin = fopen("stm_in.raw", "rb"); if (fin == NULL) { printf("Error opening input file\n"); exit(1); } fout = fopen("mod.raw", "wb"); if (fout == NULL) { printf("Error opening output file\n"); exit(1); } frame = 0; while (fread(inbuf, sizeof(short), n_samples, fin) == n_samples) { //PROFILE_SAMPLE(freedv_start); freedv_tx(f, outbuf, inbuf); //PROFILE_SAMPLE_AND_LOG2(freedv_start, " freedv_tx"); fwrite(outbuf, sizeof(short), n_samples, fout); printf("frame: %d\n", ++frame); //machdep_profile_print_logged_samples(); } fclose(fin); fclose(fout); return 0; } /* vi:set ts=4 et sts=4: */ codec2-1.2.0/stm32/unittest/src/tst_codec2_dec.c000066400000000000000000000077261445607075400213270ustar00rootroot00000000000000/*------------------------------------------------------ FILE........: tst_codec2_dec.c AUTHOR......: David Rowe, Don Reid DATE CREATED: 30 May 2013, Oct 2018 Test Codec 2 decoding on the STM32F4. -------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ /* Typical run, using internal testframes: # Input # Copy N frames of a raw audio file to stm_in.raw. dd bs=2560 count=30 if=../../../../raw/hts1.raw of=spch_in.raw c2enc 700C spch_in.raw stm_in.raw # Reference c2dec 700C stm_in.raw ref_dec.raw # Create config echo "81000000" > stm_cfg.txt # Run stm32 run_stm32_prog ../../src/tst_codec2_dec.elf --load # Compare outputs compare_ints -s -b 2 ref_dec.raw stm_out.raw # Manual play (and listen) aplay -f S16_LE ref_dec.raw # aplay -f S16_LE stm_out.raw */ #include #include #include #include #include #include #include #include #include #include #include "codec2.h" #include "semihosting.h" #include "stm32f4xx_conf.h" #include "stm32f4xx.h" #include "machdep.h" static char fin_buffer[1024]; static __attribute__ ((section (".ccm"))) char fout_buffer[4*8192]; int main(int argc, char *argv[]) { int f_cfg; int frame; void *codec2; short *buf; unsigned char *bits; int nsam, nbit, nbyte; semihosting_init(); //////// // Test configuration, read from stm_cfg.txt int config_mode; // 0 int config_gray; // 1 //int config_verbose; // 6 //int config_profile; // 7 char config[8]; f_cfg = open("stm_cfg.txt", O_RDONLY); if (f_cfg == -1) { fprintf(stderr, "Error opening config file\n"); exit(1); } if (read(f_cfg, &config[0], 8) != 8) { fprintf(stderr, "Error reading config file\n"); exit(1); } config_mode = config[0] - '0'; config_gray = config[1] - '0'; //config_verbose = config[6] - '0'; //config_profile = config[7] - '0'; close(f_cfg); //////// // Setup codec2 = codec2_create(config_mode); assert(codec2 != NULL); codec2_set_natural_or_gray(codec2, config_gray); nsam = codec2_samples_per_frame(codec2); nbit = codec2_bits_per_frame(codec2); buf = (short*)malloc(nsam*sizeof(short)); nbyte = (nbit + 7) / 8; bits = (unsigned char*)malloc(nbyte*sizeof(char)); //////// // Streams FILE* fin = fopen("stm_in.raw", "rb"); if (fin == NULL) { perror("Error opening input file\n"); exit(1); } setvbuf(fin, fin_buffer,_IOFBF,sizeof(fin_buffer)); FILE *fout = fopen("stm_out.raw", "wb" ); if (fout == NULL) { perror("Error opening output file\n"); exit(1); } setvbuf(fout, fout_buffer,_IOFBF,sizeof(fout_buffer)); frame = 0; //////// // Main loop int bytes_per_frame = (sizeof(char) * nbyte); while (fread(bits, 1, bytes_per_frame, fin) == (size_t)bytes_per_frame) { codec2_decode_ber(codec2, buf, bits, 0.0); fwrite(buf, sizeof(short) , nsam, fout); frame ++; } fclose(fin); fclose(fout); printf("\nEnd of Test\n"); fclose(stdout); fclose(stderr); } /* vi:set ts=4 et sts=4: */ codec2-1.2.0/stm32/unittest/src/tst_codec2_enc.c000066400000000000000000000104431445607075400213270ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: tst_codec2_enc.c, (derived from codec2_profile.c) AUTHOR......: David Rowe, Don Reid DATE CREATED: 30 May 2013, Oct 2018 Test Codec 2 encoding on the STM32F4. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ /* This is a unit test implementation of the Codec2_encode function. * * Typical run: # Copy N frames of a raw audio file to stm_in.raw. dd bs=2560 count=30 if=../../../../raw/hts1.raw of=stm_in.raw # Run x86 command for reference output c2enc 700C stm_in.raw ref_enc.raw # Create config echo "80000000" > stm_cfg.txt # Run stm32 run_stm32_prog ../../src/tst_codec2_enc.elf --load # Compare outputs comare_ints -b 1 ref_enc.raw stm_out.raw # Manual play (and listen) c2dec 700C ref_enc.raw ref_dec.raw aplay -f S16_LE ref_out.raw # c2dec 700C stm_out.raw stm_dec.raw aplay -f S16_LE stm_dec.raw */ #include #include #include #include #include #include #include #include #include "codec2.h" #include "stm32f4xx_conf.h" #include "stm32f4xx.h" #include "semihosting.h" #include "machdep.h" static __attribute__ ((section (".ccm"))) char fin_buffer[8*8192]; char fout_buffer[1024]; int main(int argc, char *argv[]) { int f_cfg; struct CODEC2 *codec2; short *buf; unsigned char *bits; int nsam, nbit, nbyte; int gray; int frame; //////// // Semihosting semihosting_init(); //////// // Test configuration, read from stm_cfg.txt int config_mode; // 0 //int config_verbose; // 6 //int config_profile; // 7 char config[8]; f_cfg = open("stm_cfg.txt", O_RDONLY); if (f_cfg == -1) { fprintf(stderr, "Error opening config file\n"); exit(1); } if (read(f_cfg, &config[0], 8) != 8) { fprintf(stderr, "Error reading config file\n"); exit(1); } config_mode = config[0] - '0'; //config_verbose = config[6] - '0'; //config_profile = config[7] - '0'; close(f_cfg); //////// //PROFILE_VAR(freedv_start); //machdep_profile_init(); //////// codec2 = codec2_create(config_mode); nsam = codec2_samples_per_frame(codec2); nbit = codec2_bits_per_frame(codec2); buf = (short*)malloc(nsam*sizeof(short)); nbyte = (nbit + 7) / 8; bits = (unsigned char*)malloc(nbyte*sizeof(char)); gray = 1; //softdec = 0; //bitperchar = 0; codec2_set_natural_or_gray(codec2, gray); //////// // Streams FILE* fin = fopen("stm_in.raw", "rb"); if (fin == NULL) { perror("Error opening input file\n"); exit(1); } setvbuf(fin, fin_buffer,_IOFBF,sizeof(fin_buffer)); FILE* fout = fopen("stm_out.raw", "wb"); if (fout == NULL) { perror("Error opening output file\n"); exit(1); } frame = 0; int bytes_per_frame = (sizeof(short) * nsam); while (fread(buf,1, bytes_per_frame, fin) == bytes_per_frame) { //PROFILE_SAMPLE(enc_start); codec2_encode(codec2, bits, buf); //PROFILE_SAMPLE_AND_LOG2(, enc_start, " enc"); fwrite(bits, 1, (sizeof(char) * nbyte), fout); printf("frame: %d\n", ++frame); //machdep_profile_print_logged_samples(); } codec2_destroy(codec2); free(buf); free(bits); fclose(fin); fclose(fout); printf("\nEnd of Test\n"); fclose(stdout); fclose(stderr); return(0); } /* vi:set ts=4 et sts=4: */ codec2-1.2.0/stm32/unittest/src/tst_codec2_fft_init.c000066400000000000000000000052501445607075400223640ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: tst_codec2_fft_init.c, AUTHOR......: David Rowe, Don Reid DATE CREATED: 30 May 2013, Oct 2018, Feb 2018 Test FFT Window initialization in Codec2_create \*---------------------------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include "codec2.h" #include "codec2_internal.h" #include "defines.h" #include "stm32f4xx_conf.h" #include "stm32f4xx.h" #include "semihosting.h" #include "machdep.h" static const float expect_w[] = { 0.004293, 0.004301, 0.004309, 0.004315, 0.004320, 0.004323, 0.004326, 0.004328, 0.004328, 0.004328, 0.004326, 0.004323, 0.004320, 0.004315, 0.004309, 0.004301}; static const float expect_W[] = { -0.002176, 0.002195, 0.004429, -0.008645, -0.012196, 0.065359, 0.262390, 0.495616, 0.601647, 0.495616, 0.262390, 0.065359, -0.012196, -0.008645, 0.004429, 0.002195}; int float_cmp(float a, float b) { if ( fabsf(a - b) < 1e-6f ) return 1; else return 0; } int main(int argc, char *argv[]) { struct CODEC2 *codec2; int i, j; //////// // Semihosting semihosting_init(); //////// codec2 = codec2_create(CODEC2_MODE_700C); j = (codec2->c2const.m_pitch / 2) - 8; for (i=0; i<16; i++) { printf("w[%d] = %f", j+i, (double)codec2->w[j+i]); if (!float_cmp(codec2->w[j+i], expect_w[i])) { printf(" Error, expected %f", (double)expect_w[i]); } printf("\n"); } printf("\n"); j = (FFT_ENC / 2) - 8; for (i=0; i<16; i++) { printf("W[%d] = %f", j+i, (double)codec2->W[j+i]); if (!float_cmp(codec2->W[j+i], expect_W[i])) { printf(" Error, expected %f", (double)expect_W[i]); } printf("\n"); } codec2_destroy(codec2); printf("\nEnd of Test\n"); fclose(stdout); fclose(stderr); return(0); } /* vi:set ts=4 et sts=4: */ codec2-1.2.0/stm32/unittest/src/tst_ldpc_dec.c000066400000000000000000000136471445607075400211110ustar00rootroot00000000000000/* FILE...: ldpc_dec.c AUTHOR.: Matthew C. Valenti, Rohit Iyer Seshadri, David Rowe, Don Reid CREATED: Sep 2016 Command line C LDPC decoder derived from MpDecode.c in the CML library. Allows us to run the same decoder in Octave and C. The code is defined by the parameters and array stored in the include file below, which can be machine generated from the Octave function ldpc_fsk_lib.m:ldpc_decode() The include file also contains test input/output vectors for the LDPC decoder for testing this program. If no input file "stm_in.raw" is found then the built in test mode will run. If there is an input is should be encoded data from the x86 ldpc_enc program. Here is the suggested way to run: ldpc_enc /dev/zero stm_in.raw --sd --code HRA_112_112 --testframes 6 ldpc_dec stm_in.raw ref_out.raw --sd --code HRA_112_112 --testframes cmp -l ref_out.raw stm_out.raw << Check BER values in logs >> */ #include #include #include #include #include #include #include #include #include "mpdecode_core.h" #include "ofdm_internal.h" #include "semihosting.h" #include "stm32f4xx_conf.h" #include "stm32f4xx.h" #include "machdep.h" /* generated by ldpc_fsk_lib.m:ldpc_decode() */ /* Machine generated consts, H_rows, H_cols, test input/output data to change LDPC code regenerate this file. */ #include "HRA_112_112.h" int testframes = 1; static char fin_buffer[1024]; static __attribute__ ((section (".ccm"))) char fout_buffer[8*8192]; int main(int argc, char *argv[]) { int CodeLength, NumberParityBits; int i, parityCheckCount; uint8_t out_data[HRA_112_112_CODELENGTH]; struct LDPC ldpc; int data_bits_per_frame; FILE *fout; int iter, total_iters; int Tbits, Terrs, Tbits_raw, Terrs_raw; int nread, frame; semihosting_init(); fprintf(stderr, "LDPC decode test and profile\n"); PROFILE_VAR(ldpc_decode); machdep_profile_init(); ldpc.max_iter = HRA_112_112_MAX_ITER; ldpc.dec_type = 0; ldpc.q_scale_factor = 1; ldpc.r_scale_factor = 1; ldpc.CodeLength = HRA_112_112_CODELENGTH; ldpc.NumberParityBits = HRA_112_112_NUMBERPARITYBITS; ldpc.NumberRowsHcols = HRA_112_112_NUMBERROWSHCOLS; ldpc.max_row_weight = HRA_112_112_MAX_ROW_WEIGHT; ldpc.max_col_weight = HRA_112_112_MAX_COL_WEIGHT; ldpc.H_rows = (uint16_t *)HRA_112_112_H_rows; ldpc.H_cols = (uint16_t *)HRA_112_112_H_cols; CodeLength = ldpc.CodeLength; NumberParityBits = ldpc.NumberParityBits; data_bits_per_frame = ldpc.NumberRowsHcols; unsigned char ibits[data_bits_per_frame]; unsigned char pbits[NumberParityBits]; // // Allocate common space which can be shared with other functions. // int size_common; // uint8_t *common_array; // ldpc_init(&ldpc, &size_common); // fprintf(stderr, "ldpc needs %d bytes of shared memory\n", size_common); // common_array = malloc(size_common); testframes = 1; total_iters = 0; if (testframes) { uint16_t r[data_bits_per_frame]; ofdm_rand(r, data_bits_per_frame); for(i=0; i 16384; } encode(&ldpc, ibits, pbits); Tbits = Terrs = Tbits_raw = Terrs_raw = 0; } FILE* fin = fopen("stm_in.raw", "rb"); if (fin == NULL) { fprintf(stderr, "Error opening input file\n"); fflush(stderr); exit(1); } setvbuf(fin, fin_buffer,_IOFBF,sizeof(fin_buffer)); fout = fopen("stm_out.raw", "wb"); if (fout == NULL) { fprintf(stderr, "Error opening output file\n"); fflush(stderr); exit(1); } setvbuf(fout, fout_buffer,_IOFBF,sizeof(fout_buffer)); float *input_float = calloc(CodeLength, sizeof(float)); nread = CodeLength; fprintf(stderr, "CodeLength: %d\n", CodeLength); frame = 0; while(fread(input_float, sizeof(float) , nread, fin) == nread) { fprintf(stderr, "frame %d\n", frame); if (testframes) { char in_char; for (i=0; i cmp -l ref_out.raw stm_out.raw */ #include #include #include #include #include #include #include "mpdecode_core.h" #include "semihosting.h" #include "stm32f4xx_conf.h" #include "stm32f4xx.h" #include "machdep.h" /* generated by ldpc_fsk_lib.m:ldpc_decode() */ #include "HRA_112_112.h" static __attribute__ ((section (".ccm"))) char fin_buffer[8*8192]; char fout_buffer[1024]; int opt_exists(char *argv[], int argc, char opt[]) { int i; for (i=0; i. */ /* This is a unit test implementation of the OFDM Demod function. * It is used for several tests: * * tst_ofdm_demod_ideal Simple 10 frames with no degradation. * tst_ofdm_demod_AWGN Just AWGN in channel. * tst_ofdm_demod_fade AWGN and fading in channel. * tst_ofdm_demod_profile Profile, disable verbose logging. * * See tst_ofdm_demod_setup and tst_ofdm_demod_check scripts for details. * * This program reads a file "stm_cfg.txt" at startup to configure its options. * * This program is intended to be run using input data, typically * Codec2 frames, which may have had simulated RF degradation applied. * For example: * * ofdm_get_test_bits - 10 | * ofdm_mod - - | \ * cohpsk_ch - stm_in.raw -20 -Fs 8000 -f -5 * * Reference data can be created by running the same input through the x86 * ofdm_demod tool. * * ofdm_demod stm_in.raw ref_demod_out.raw -o ofdm_demod_ref_log.txt --testframes * * Comparison of the results to the reference will depend on the test conditions. * Some small differences are expected due to differences in implementation. * */ #include #include #include #include #include #include #include #include #include "semihosting.h" #include "codec2_ofdm.h" #include "ofdm_internal.h" #include "mpdecode_core.h" #include "ldpc_codes.h" #include "interldpc.h" #include "gp_interleaver.h" #include "test_bits_ofdm.h" #include "debug_alloc.h" #include "stm32f4xx_conf.h" #include "stm32f4xx.h" #include "machdep.h" #define NDISCARD 20 extern const uint8_t payload_data_bits[]; extern const int test_bits_ofdm[]; static struct OFDM_CONFIG *ofdm_config; static int ofdm_bitsperframe; static int ofdm_rowsperframe; static int ofdm_nuwbits; static int ofdm_ntxtbits; static int ofdm_nin; static char fout_buffer[4*4096]; static __attribute__ ((section (".ccm"))) char fdiag_buffer[4*8192]; static __attribute__ ((section (".ccm"))) char fin_buffer[4096*8]; static char *statemode[] = { "search", "trial", "synced" }; static FILE *fout, *fdiag; void flush_all(void) { fflush(fout); fflush(fdiag); fflush(stdout); fflush(stderr); } int main(int argc, char *argv[]) { struct OFDM *ofdm; FILE *fcfg; int nin_frame; struct LDPC ldpc; // Test configuration, read from stm_cfg.txt int config_verbose; int config_testframes; int config_ldpc_en; int config_log_payload_syms; int config_profile; int i; int Nerrs, Terrs, Tbits, Terrs2, Tbits2, frame_count; int Tbits_coded, Terrs_coded; semihosting_init(); fprintf(stdout, "OFDM Demod test\n"); // Read configuration - a file of '0' or '1' characters char config[8]; fcfg = fopen("stm_cfg.txt", "r"); if (fcfg == NULL) { fprintf(stderr, "Error opening config file\n"); exit(1); } if (fread(&config[0], 1, 8, fcfg) != 8) { fprintf(stderr, "Error reading config file\n"); exit(1); } config_verbose = config[0] - '0'; config_testframes = config[1] - '0'; config_ldpc_en = config[2] - '0'; config_log_payload_syms = config[3] - '0'; config_profile = config[4] - '0'; fclose(fcfg); int Nerrs_raw = 0; int Nerrs_coded = 0; int iter = 0; int parityCheckCount = 0; PROFILE_VAR(ofdm_demod_start, ofdm_demod_sync_search, ofdm_demod_demod, ofdm_demod_diss, ofdm_demod_snr); ofdm_demod_start = 0; ofdm_demod_sync_search = 0; ofdm_demod_demod = 0; ofdm_demod_diss = 0; ofdm_demod_snr = 0; if (config_profile) machdep_profile_init(); ofdm = ofdm_create(NULL); assert(ofdm != NULL); /* Get a copy of the actual modem config */ ofdm_config = ofdm_get_config_param(ofdm); ldpc_codes_setup(&ldpc, "HRA_112_112"); ofdm_bitsperframe = ofdm_get_bits_per_frame(ofdm); ofdm_rowsperframe = ofdm_bitsperframe / (ofdm_config->nc * ofdm_config->bps); ofdm_nuwbits = (ofdm_config->ns - 1) * ofdm_config->bps - ofdm_config->txtbits; ofdm_ntxtbits = ofdm_config->txtbits; ofdm_nin = ofdm_get_nin(ofdm); ofdm_set_verbose(ofdm, config_verbose); int Nmaxsamperframe = ofdm_get_max_samples_per_frame(ofdm); int data_bits_per_frame = ldpc.data_bits_per_frame; int coded_bits_per_frame = ldpc.coded_bits_per_frame; int coded_syms_per_frame = ldpc.coded_bits_per_frame/ofdm->bps; short rx_scaled[Nmaxsamperframe]; int rx_bits[ofdm_bitsperframe]; char rx_bits_char[ofdm_bitsperframe]; uint8_t rx_uw[ofdm_nuwbits]; short txt_bits[ofdm_ntxtbits]; int f = 0; Nerrs = Terrs = Tbits = Terrs2 = Tbits2 = Terrs_coded = Tbits_coded = frame_count = 0; float snr_est_smoothed_dB = 0.0; float EsNo = 3.0f; // Constant from ofdm_demod.c COMP payload_syms[coded_syms_per_frame]; float payload_amps[coded_syms_per_frame]; COMP codeword_symbols[coded_syms_per_frame]; float codeword_amps[coded_syms_per_frame]; FILE* fin = fopen("stm_in.raw", "rb"); if (fin == NULL) { fprintf(stderr, "Error opening input file\n"); exit(1); } setvbuf(fin, fin_buffer,_IOFBF,sizeof(fin_buffer)); fout = fopen("stm_out.raw", "wb"); if (fout == NULL) { fprintf(stderr, "Error opening output file\n"); exit(1); } setvbuf(fout, fout_buffer,_IOFBF,sizeof(fout_buffer)); fdiag = fopen("stm_diag.raw", "wb"); if (fdiag == NULL) { fprintf(stderr, "Error opening diag file\n"); exit(1); } setvbuf(fdiag, fdiag_buffer,_IOFBF,sizeof(fdiag_buffer)); nin_frame = ofdm_get_nin(ofdm); int num_read; while((num_read = fread(rx_scaled, sizeof(short) , nin_frame, fin)) == nin_frame) { int log_payload_syms_flag = 0; if (config_profile) PROFILE_SAMPLE(ofdm_demod_start); /* demod */ if (config_profile) PROFILE_SAMPLE_AND_LOG2(ofdm_demod_start, " ofdm_demod_start"); if (ofdm->sync_state == search) { if (config_profile) PROFILE_SAMPLE(ofdm_demod_sync_search); ofdm_sync_search_shorts(ofdm, rx_scaled, (OFDM_PEAK/2)); if (config_profile) PROFILE_SAMPLE_AND_LOG2(ofdm_demod_sync_search, " ofdm_demod_sync_search"); } if ((ofdm->sync_state == synced) || (ofdm->sync_state == trial) ) { if (config_profile) PROFILE_SAMPLE(ofdm_demod_demod); ofdm_demod_shorts(ofdm, rx_bits, rx_scaled, (OFDM_PEAK/2)); if (config_profile) PROFILE_SAMPLE_AND_LOG2(ofdm_demod_demod, " ofdm_demod_demod"); if (config_profile) PROFILE_SAMPLE(ofdm_demod_diss); ofdm_extract_uw(ofdm, ofdm->rx_np, ofdm->rx_amp, rx_uw); ofdm_disassemble_qpsk_modem_packet(ofdm, ofdm->rx_np, ofdm->rx_amp, payload_syms, payload_amps, txt_bits); if (config_profile) PROFILE_SAMPLE_AND_LOG2(ofdm_demod_diss, " ofdm_demod_diss"); log_payload_syms_flag = 1; /* SNR estimation and smoothing */ if (config_profile) PROFILE_SAMPLE(ofdm_demod_snr); float EsNodB = ofdm_esno_est_calc((complex float*)payload_syms, coded_syms_per_frame); float snr_est_dB = ofdm_snr_from_esno(ofdm, EsNodB); snr_est_smoothed_dB = 0.9f * snr_est_smoothed_dB + 0.1f *snr_est_dB; if (config_profile) { PROFILE_SAMPLE_AND_LOG2(ofdm_demod_snr, " ofdm_demod_snr"); } // LDPC if (config_ldpc_en) { // was llr_en in orig /* first few symbols are used for UW and txt bits, find start of (224,112) LDPC codeword and extract QPSK symbols and amplitude estimates */ assert((ofdm_nuwbits + ofdm_ntxtbits + coded_bits_per_frame) == ofdm_bitsperframe); /* newest symbols at end of buffer (uses final i from last loop) */ for(i=0; i < coded_syms_per_frame; i++) { codeword_symbols[i] = payload_syms[i]; codeword_amps[i] = payload_amps[i]; } /* run de-interleaver */ COMP codeword_symbols_de[coded_syms_per_frame]; float codeword_amps_de[coded_syms_per_frame]; gp_deinterleave_comp (codeword_symbols_de, codeword_symbols, coded_syms_per_frame); gp_deinterleave_float(codeword_amps_de, codeword_amps, coded_syms_per_frame); float llr[coded_bits_per_frame]; if (config_ldpc_en) { uint8_t out_char[coded_bits_per_frame]; if (config_testframes) { Terrs += count_uncoded_errors(&ldpc, ofdm_config, codeword_symbols_de, 0); Tbits += coded_bits_per_frame; } symbols_to_llrs(llr, codeword_symbols_de, codeword_amps_de, EsNo, ofdm->mean_amp, coded_syms_per_frame); iter = run_ldpc_decoder(&ldpc, out_char, llr, &parityCheckCount); //fprintf(stderr,"iter: %d pcc: %d\n", iter, parityCheckCount); if (config_testframes) { /* construct payload data bits */ uint8_t payload_data_bits[data_bits_per_frame]; ofdm_generate_payload_data_bits(payload_data_bits, data_bits_per_frame); Nerrs_coded = count_errors(payload_data_bits, out_char, data_bits_per_frame); Terrs_coded += Nerrs_coded; Tbits_coded += data_bits_per_frame; } fwrite(out_char, sizeof(char), data_bits_per_frame, fout); } else { /* lpdc_en == 0, external LDPC decoder, so output LLRs */ symbols_to_llrs(llr, codeword_symbols_de, codeword_amps_de, EsNo, ofdm->mean_amp, coded_syms_per_frame); fwrite(llr, sizeof(double), coded_bits_per_frame, fout); } } else { // !llrs_en (or ldpc_en) /* simple hard decision output for uncoded testing, excluding UW and txt */ assert(coded_syms_per_frame*ofdm_config->bps == coded_bits_per_frame); for (i = 0; i < coded_syms_per_frame; i++) { int bits[2]; complex float s = payload_syms[i].real + I * payload_syms[i].imag; qpsk_demod(s, bits); rx_bits_char[ofdm_config->bps * i] = bits[1]; rx_bits_char[ofdm_config->bps * i + 1] = bits[0]; } fwrite(rx_bits_char, sizeof (uint8_t), coded_bits_per_frame, fout); } /* optional error counting on uncoded data in non-LDPC testframe mode */ if (config_testframes && (config_ldpc_en == 0)) { /* build up a test frame consisting of unique word, txt bits, and psuedo-random uncoded payload bits. The psuedo-random generator is the same as Octave so it can interoperate with ofdm_tx.m/ofdm_rx.m */ int Npayloadbits = ofdm_bitsperframe-(ofdm_nuwbits+ofdm_ntxtbits); uint16_t r[Npayloadbits]; uint8_t payload_bits[Npayloadbits]; uint8_t tx_bits[Npayloadbits]; ofdm_rand(r, Npayloadbits); for(i=0; i 16384; //fprintf(stderr,"%d %d ", r[i], tx_bits_char[i]); } uint8_t txt_bits[ofdm_ntxtbits]; for(i=0; i= NDISCARD) { Terrs2 += Nerrs; Tbits2 += ofdm_bitsperframe; } } // config_testframes ... frame_count++; } // state "synced" or "trial" nin_frame = ofdm_get_nin(ofdm); ofdm_sync_state_machine(ofdm, rx_uw); /* act on any events returned by state machine */ if (ofdm->sync_start) { Terrs = Tbits = Terrs2 = Tbits2 = Terrs_coded = Tbits_coded = frame_count = Nerrs_raw = Nerrs_coded = 0; } if (config_testframes && config_verbose) { fprintf(stderr, "%3d st: %-6s", f, statemode[ofdm->last_sync_state]); fprintf(stderr, " euw: %2d %1d f: %5.1f eraw: %3d ecdd: %3d iter: %3d pcc: %3d\n", ofdm->uw_errors, ofdm->sync_counter, (double)ofdm->foff_est_hz, Nerrs, Nerrs_coded, iter, parityCheckCount); } if (config_log_payload_syms) { if (! log_payload_syms_flag) { memset(payload_syms, 0, (sizeof(COMP)*coded_syms_per_frame)); memset(payload_amps, 0, (sizeof(float)*coded_syms_per_frame)); } fwrite(payload_syms, sizeof(COMP), coded_syms_per_frame, fdiag); fwrite(payload_amps, sizeof(float), coded_syms_per_frame, fdiag); } f++; } // while(fread(.., fin)) flush_all(); // To make sure this function is included in binary. fclose(fin); fclose(fout); fclose(fdiag); if (config_testframes) { printf("BER......: %5.4f Tbits: %5d Terrs: %5d\n", (double)Terrs/Tbits, Tbits, Terrs); if (!config_ldpc_en) { printf("BER2.....: %5.4f Tbits: %5d Terrs: %5d\n", (double)Terrs2/Tbits2, Tbits2, Terrs2); } if (config_ldpc_en) { printf("Coded BER: %5.4f Tbits: %5d Terrs: %5d\n", (double)Terrs_coded/Tbits_coded, Tbits_coded, Terrs_coded); } } if (config_profile) { printf("\nStart Profile Data\n"); machdep_profile_print_logged_samples(); printf("End Profile Data\n"); } printf("\nEnd of Test\n"); fclose(stdout); fclose(stderr); return 0; } /* vi:set ts=4 et sts=4: */ codec2-1.2.0/stm32/unittest/src/tst_ofdm_mod.c000066400000000000000000000153031445607075400211270ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: tst_ofdm_mod.c AUTHOR......: David Rowe, Don Reid DATE CREATED: 25 June 2018 Test and profile OFDM modulation on the STM32F4. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2014 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ /* This is a unit test implementation of the OFDM Mod function. * * Typical run: ofdm_gen_test_bits stm_in.raw 6 --rand ofdm_mod stm_in.raw ref_mod_out.raw echo "00000000" > stm_cfg.txt compare_ints -s -b2 ref_mod_out.raw mod.raw ofdm_demod ref_mod_out.raw ref_ofdm_demod.raw --testframes ofdm_demod mod.raw stm_demod.raw --testframes * For LDPC use: ofdm_gen_test_bits stm_in.raw 6 --rand --ldpc ofdm_mod stm_in.raw ref_mod_out.raw --ldpc echo "00100000" > stm_cfg.txt ofdm_demod ref_mod_out.raw ref_ofdm_demod.raw --ldpc --testframes ofdm_demod mod.raw stm_demod.raw --ldpc --testframes */ #include #include #include #include #include #include #include #include #include "semihosting.h" #include "codec2_ofdm.h" #include "ofdm_internal.h" #include "ldpc_codes.h" #include "interldpc.h" #include "gp_interleaver.h" #include "stm32f4xx_conf.h" #include "stm32f4xx.h" #include "machdep.h" #include "debug_alloc.h" int main(int argc, char *argv[]) { struct OFDM *ofdm; FILE *fcfg; struct LDPC ldpc; // Test configuration, read from stm_cfg.txt int config_verbose; // int config_testframes; int config_ldpc_en; // int config_log_payload_syms; int config_profile; int Nbitsperframe, Nsamperframe; int frame = 0; int i; semihosting_init(); printf("OFDM_mod test and profile\n"); // Read configuration - a file of '0' or '1' characters char config[8]; fcfg = fopen("stm_cfg.txt", "r"); if (fcfg == NULL) { fprintf(stderr, "Error opening config file\n"); exit(1); } if (fread(&config[0], 1, 8, fcfg) != 8) { fprintf(stderr, "Error reading config file\n"); exit(1); } config_verbose = config[0] - '0'; // config_testframes = config[1] - '0'; config_ldpc_en = config[2] - '0'; // config_log_payload_syms = config[3] - '0'; config_profile = config[4] - '0'; fclose(fcfg); PROFILE_VAR(ofdm_mod_start); if (config_profile) machdep_profile_init(); struct OFDM_CONFIG *ofdm_config; ofdm = ofdm_create(NULL); assert(ofdm != NULL); /* Get a copy of the actual modem config */ ofdm_config = ofdm_get_config_param(ofdm); ldpc_codes_setup(&ldpc, "HRA_112_112"); Nbitsperframe = ofdm_get_bits_per_frame(ofdm); int Ndatabitsperframe; if (config_ldpc_en) { Ndatabitsperframe = ldpc.data_bits_per_frame; } else { Ndatabitsperframe = ofdm_get_bits_per_frame(ofdm) - ofdm->nuwbits - ofdm->ntxtbits; } Nsamperframe = ofdm_get_samples_per_frame(ofdm); // int ofdm_nuwbits = (ofdm_config->ns - 1) * ofdm_config->bps - ofdm_config->txtbits; if (config_verbose) { ofdm_set_verbose(ofdm, config_verbose); fprintf(stderr, "Nsamperframe: %d, Nbitsperframe: %d \n", Nsamperframe, Nbitsperframe); } int ofdm_ntxtbits = ofdm_config->txtbits; uint8_t tx_bits_char[Ndatabitsperframe]; int16_t tx_scaled[Nsamperframe]; uint8_t txt_bits_char[ofdm_ntxtbits]; for(i=0; i< ofdm_ntxtbits; i++) { txt_bits_char[i] = 0; } if (config_verbose) { ofdm_print_info(ofdm); } int sin = open("stm_in.raw", O_RDONLY); if (sin < 0) { printf("Error opening input file\n"); exit(1); } int sout = open("mod.raw", O_WRONLY|O_TRUNC|O_CREAT, 0666); if (sout < 0) { printf("Error opening output file\n"); exit(1); } while (read(sin, tx_bits_char, sizeof(char) * Ndatabitsperframe) == Ndatabitsperframe) { fprintf(stderr, "Frame %d\n", frame); if (config_profile) { PROFILE_SAMPLE(ofdm_mod_start); } if (config_ldpc_en) { complex float tx_sams[Nsamperframe]; ofdm_ldpc_interleave_tx(ofdm, &ldpc, tx_sams, tx_bits_char, txt_bits_char); for(i=0; i=3) { fprintf(stderr, "\ntx_bits:\n"); for (i = 0; i < Nbitsperframe; i++) { fprintf(stderr, " %3d %8d\n", i, tx_bits[i]); } } COMP tx_sams[Nsamperframe]; ofdm_mod(ofdm, tx_sams, tx_bits); if (config_verbose >=3) { fprintf(stderr, "\ntx_sams:\n"); for (i = 0; i < Nsamperframe; i++) { fprintf(stderr, " %3d % f\n", i, (double)tx_sams[i].real); } } for(i=0; i #include #include #include #include #include #include "semihosting.h" #include "stm32f4xx_conf.h" #include "stm32f4xx.h" #include "machdep.h" #define min(a, b) ((a < b) ? (a) : (b)) int main(int argc, char *argv[]) { semihosting_init(); printf("semihosting test - stdout\n"); fprintf(stderr, "semihosting test - stderr\n"); uint8_t buf[128]; int count; int i; FILE *fin = fopen("stm_in.raw", "rb"); if (!fin) { fprintf(stderr, "Error %d opening fin\n", errno); } setbuf(fin, NULL); FILE *fout = fopen("stm_out.raw", "wb"); if (!fout) { fprintf(stderr, "Error %d opening fout\n", errno); } setbuf(fout, NULL); // Unrolled while loop for simpler debugging: // Pass 0: expect 16 bytes 00-0f printf("Pass 0: feof(fin) = %d\n", feof(fin)); count = fread(&buf[0], 1, 16, fin); printf("read %d bytes: ", count); for (i=0; i
© COPYRIGHT 2011 STMicroelectronics
****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include "usb_bsp.h" #include "usbd_conf.h" #include "stm32f4xx_conf.h" #include "stm32f4xx_gpio.h" #include "stm32f4xx_exti.h" #include "stm32f4xx_rcc.h" #include "misc.h" void USB_OTG_BSP_ConfigVBUS(USB_OTG_CORE_HANDLE *pdev) { } void USB_OTG_BSP_DriveVBUS(USB_OTG_CORE_HANDLE *pdev,uint8_t state) { } /** * @brief USB_OTG_BSP_Init * Initializes BSP configurations * @param None * @retval None */ void USB_OTG_BSP_Init(USB_OTG_CORE_HANDLE *pdev) { GPIO_InitTypeDef GPIO_InitStructure; #ifndef USE_ULPI_PHY #ifdef USB_OTG_FS_LOW_PWR_MGMT_SUPPORT EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; #endif #endif #ifdef USE_USB_OTG_FS RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOA , ENABLE); /* Configure SOF VBUS ID DM DP Pins */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_11 | GPIO_Pin_12; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOA,GPIO_PinSource8,GPIO_AF_OTG1_FS) ; GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_OTG1_FS) ; GPIO_PinAFConfig(GPIOA,GPIO_PinSource11,GPIO_AF_OTG1_FS) ; GPIO_PinAFConfig(GPIOA,GPIO_PinSource12,GPIO_AF_OTG1_FS) ; /* this for ID line debug */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_OTG1_FS) ; RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_OTG_FS, ENABLE) ; #else // USE_USB_OTG_HS #ifdef USE_ULPI_PHY // ULPI RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOH | RCC_AHB1Periph_GPIOI, ENABLE); GPIO_PinAFConfig(GPIOA,GPIO_PinSource3, GPIO_AF_OTG2_HS) ; // D0 GPIO_PinAFConfig(GPIOA,GPIO_PinSource5, GPIO_AF_OTG2_HS) ; // CLK GPIO_PinAFConfig(GPIOB,GPIO_PinSource0, GPIO_AF_OTG2_HS) ; // D1 GPIO_PinAFConfig(GPIOB,GPIO_PinSource1, GPIO_AF_OTG2_HS) ; // D2 GPIO_PinAFConfig(GPIOB,GPIO_PinSource5, GPIO_AF_OTG2_HS) ; // D7 GPIO_PinAFConfig(GPIOB,GPIO_PinSource10,GPIO_AF_OTG2_HS) ; // D3 GPIO_PinAFConfig(GPIOB,GPIO_PinSource11,GPIO_AF_OTG2_HS) ; // D4 GPIO_PinAFConfig(GPIOB,GPIO_PinSource12,GPIO_AF_OTG2_HS) ; // D5 GPIO_PinAFConfig(GPIOB,GPIO_PinSource13,GPIO_AF_OTG2_HS) ; // D6 GPIO_PinAFConfig(GPIOH,GPIO_PinSource4, GPIO_AF_OTG2_HS) ; // NXT GPIO_PinAFConfig(GPIOI,GPIO_PinSource11,GPIO_AF_OTG2_HS) ; // DIR GPIO_PinAFConfig(GPIOC,GPIO_PinSource0, GPIO_AF_OTG2_HS) ; // STP // CLK GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 ; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(GPIOA, &GPIO_InitStructure); // D0 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 ; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ; GPIO_Init(GPIOA, &GPIO_InitStructure); // D1 D2 D3 D4 D5 D6 D7 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_5 | GPIO_Pin_10 | GPIO_Pin_11| GPIO_Pin_12 | GPIO_Pin_13 ; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ; GPIO_Init(GPIOB, &GPIO_InitStructure); // STP GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 ; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(GPIOC, &GPIO_InitStructure); //NXT GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(GPIOH, &GPIO_InitStructure); //DIR GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 ; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(GPIOI, &GPIO_InitStructure); RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_OTG_HS | RCC_AHB1Periph_OTG_HS_ULPI, ENABLE) ; #else #ifdef USE_I2C_PHY RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOB , ENABLE); /* Configure RESET INTN SCL SDA (Phy/I2C) Pins */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_10 | GPIO_Pin_11; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOB,GPIO_PinSource0,GPIO_AF_OTG2_FS) ; GPIO_PinAFConfig(GPIOB,GPIO_PinSource1,GPIO_AF_OTG2_FS) ; GPIO_PinAFConfig(GPIOB,GPIO_PinSource10,GPIO_AF_OTG2_FS) ; GPIO_PinAFConfig(GPIOB,GPIO_PinSource11,GPIO_AF_OTG2_FS); RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_OTG_HS, ENABLE) ; #else RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB , ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOB,GPIO_PinSource12, GPIO_AF_OTG2_FS) ; GPIO_PinAFConfig(GPIOB,GPIO_PinSource13,GPIO_AF_OTG2_FS) ; GPIO_PinAFConfig(GPIOB,GPIO_PinSource14,GPIO_AF_OTG2_FS) ; GPIO_PinAFConfig(GPIOB,GPIO_PinSource15,GPIO_AF_OTG2_FS) ; RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_OTG_HS, ENABLE) ; #endif #endif // USE_ULPI_PHY #endif //USB_OTG_HS /* enable the PWR clock */ RCC_APB1PeriphResetCmd(RCC_APB1Periph_PWR, ENABLE); /* Configure the Key button in EXTI mode */ //STM_EVAL_PBInit(BUTTON_USER, BUTTON_MODE_EXTI); #ifdef USB_OTG_FS_LOW_PWR_MGMT_SUPPORT EXTI_ClearITPendingBit(EXTI_Line18); EXTI_InitStructure.EXTI_Line = EXTI_Line18; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); EXTI_ClearITPendingBit(EXTI_Line18); NVIC_InitStructure.NVIC_IRQChannel = OTG_FS_WKUP_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); EXTI_ClearITPendingBit(EXTI_Line18); #endif #ifdef USB_OTG_HS_LOW_PWR_MGMT_SUPPORT EXTI_ClearITPendingBit(EXTI_Line20); EXTI_InitStructure.EXTI_Line = EXTI_Line20; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); EXTI_ClearITPendingBit(EXTI_Line20); NVIC_InitStructure.NVIC_IRQChannel = OTG_HS_WKUP_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); EXTI_ClearITPendingBit(EXTI_Line20); #endif EXTI_ClearITPendingBit(EXTI_Line0); } /** * @brief USB_OTG_BSP_EnableInterrupt * Enabele USB Global interrupt * @param None * @retval None */ void USB_OTG_BSP_EnableInterrupt(USB_OTG_CORE_HANDLE *pdev) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); #ifdef USE_USB_OTG_HS NVIC_InitStructure.NVIC_IRQChannel = OTG_HS_IRQn; #else NVIC_InitStructure.NVIC_IRQChannel = OTG_FS_IRQn; #endif NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); #ifdef USB_OTG_HS_DEDICATED_EP1_ENABLED NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStructure.NVIC_IRQChannel = OTG_HS_EP1_OUT_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStructure.NVIC_IRQChannel = OTG_HS_EP1_IN_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); #endif } /** * @brief USB_OTG_BSP_uDelay * This function provides delay time in micro sec * @param usec : Value of delay required in micro sec * @retval None */ void USB_OTG_BSP_uDelay (const uint32_t usec) { uint32_t count = 0; const uint32_t utime = (120 * usec / 7); do { if ( ++count > utime ) { return ; } } while (1); } /** * @brief USB_OTG_BSP_mDelay * This function provides delay time in milli sec * @param msec : Value of delay required in milli sec * @retval None */ void USB_OTG_BSP_mDelay (const uint32_t msec) { USB_OTG_BSP_uDelay(msec * 1000); } /** * @} */ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_conf/usb_bsp.h000066400000000000000000000042561445607075400172500ustar00rootroot00000000000000/** ****************************************************************************** * @file usb_bsp.h * @author MCD Application Team * @version V2.0.0 * @date 22-July-2011 * @brief Specific api's relative to the used hardware platform ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __USB_BSP__H__ #define __USB_BSP__H__ /* Includes ------------------------------------------------------------------*/ #include "usb_core.h" #include "stm32f4xx.h" /** @addtogroup USB_OTG_DRIVER * @{ */ /** @defgroup USB_BSP * @brief This file is the * @{ */ /** @defgroup USB_BSP_Exported_Defines * @{ */ /** * @} */ /** @defgroup USB_BSP_Exported_Types * @{ */ /** * @} */ /** @defgroup USB_BSP_Exported_Macros * @{ */ /** * @} */ /** @defgroup USB_BSP_Exported_Variables * @{ */ /** * @} */ /** @defgroup USB_BSP_Exported_FunctionsPrototype * @{ */ void BSP_Init(void); void USB_OTG_BSP_Init (USB_OTG_CORE_HANDLE *pdev); void USB_OTG_BSP_uDelay (const uint32_t usec); void USB_OTG_BSP_mDelay (const uint32_t msec); void USB_OTG_BSP_EnableInterrupt (USB_OTG_CORE_HANDLE *pdev); #ifdef USE_HOST_MODE void USB_OTG_BSP_ConfigVBUS(USB_OTG_CORE_HANDLE *pdev); void USB_OTG_BSP_DriveVBUS(USB_OTG_CORE_HANDLE *pdev,uint8_t state); #endif /** * @} */ #endif //__USB_BSP__H__ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_conf/usb_conf.h000066400000000000000000000220111445607075400173760ustar00rootroot00000000000000/** ****************************************************************************** * @file usb_conf.h * @author MCD Application Team * @version V2.0.0 * @date 22-July-2011 * @brief general low level driver configuration ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __USB_CONF__H__ #define __USB_CONF__H__ /* Includes ------------------------------------------------------------------*/ #include "stm32f4xx.h" /** @addtogroup USB_OTG_DRIVER * @{ */ /** @defgroup USB_CONF * @brief USB low level driver configuration file * @{ */ /** @defgroup USB_CONF_Exported_Defines * @{ */ /* USB Core and PHY interface configuration. Tip: To avoid modifying these defines each time you need to change the USB configuration, you can declare the needed define in your toolchain compiler preprocessor. */ #ifndef USE_USB_OTG_FS //#define USE_USB_OTG_FS #endif /* USE_USB_OTG_FS */ #ifndef USE_USB_OTG_HS //#define USE_USB_OTG_HS #endif /* USE_USB_OTG_HS */ #ifndef USE_ULPI_PHY //#define USE_ULPI_PHY #endif /* USE_ULPI_PHY */ #ifndef USE_EMBEDDED_PHY //#define USE_EMBEDDED_PHY #endif /* USE_EMBEDDED_PHY */ #ifndef USE_I2C_PHY //#define USE_I2C_PHY #endif /* USE_I2C_PHY */ #ifdef USE_USB_OTG_FS #define USB_OTG_FS_CORE #endif #ifdef USE_USB_OTG_HS #define USB_OTG_HS_CORE #endif /******************************************************************************* * FIFO Size Configuration in Device mode * * (i) Receive data FIFO size = RAM for setup packets + * OUT endpoint control information + * data OUT packets + miscellaneous * Space = ONE 32-bits words * --> RAM for setup packets = 10 spaces * (n is the nbr of CTRL EPs the device core supports) * --> OUT EP CTRL info = 1 space * (one space for status information written to the FIFO along with each * received packet) * --> data OUT packets = (Largest Packet Size / 4) + 1 spaces * (MINIMUM to receive packets) * --> OR data OUT packets = at least 2*(Largest Packet Size / 4) + 1 spaces * (if high-bandwidth EP is enabled or multiple isochronous EPs) * --> miscellaneous = 1 space per OUT EP * (one space for transfer complete status information also pushed to the * FIFO with each endpoint's last packet) * * (ii)MINIMUM RAM space required for each IN EP Tx FIFO = MAX packet size for * that particular IN EP. More space allocated in the IN EP Tx FIFO results * in a better performance on the USB and can hide latencies on the AHB. * * (iii) TXn min size = 16 words. (n : Transmit FIFO index) * (iv) When a TxFIFO is not used, the Configuration should be as follows: * case 1 : n > m and Txn is not used (n,m : Transmit FIFO indexes) * --> Txm can use the space allocated for Txn. * case2 : n < m and Txn is not used (n,m : Transmit FIFO indexes) * --> Txn should be configured with the minimum space of 16 words * (v) The FIFO is used optimally when used TxFIFOs are allocated in the top * of the FIFO.Ex: use EP1 and EP2 as IN instead of EP1 and EP3 as IN ones. *******************************************************************************/ /******************************************************************************* * FIFO Size Configuration in Host mode * * (i) Receive data FIFO size = (Largest Packet Size / 4) + 1 or * 2x (Largest Packet Size / 4) + 1, If a * high-bandwidth channel or multiple isochronous * channels are enabled * * (ii) For the host nonperiodic Transmit FIFO is the largest maximum packet size * for all supported nonperiodic OUT channels. Typically, a space * corresponding to two Largest Packet Size is recommended. * * (iii) The minimum amount of RAM required for Host periodic Transmit FIFO is * the largest maximum packet size for all supported periodic OUT channels. * If there is at least one High Bandwidth Isochronous OUT endpoint, * then the space must be at least two times the maximum packet size for * that channel. *******************************************************************************/ /****************** USB OTG HS CONFIGURATION **********************************/ #ifdef USB_OTG_HS_CORE #define RX_FIFO_HS_SIZE 512 #define TX0_FIFO_HS_SIZE 512 #define TX1_FIFO_HS_SIZE 512 #define TX2_FIFO_HS_SIZE 0 #define TX3_FIFO_HS_SIZE 0 #define TX4_FIFO_HS_SIZE 0 #define TX5_FIFO_HS_SIZE 0 #define TXH_NP_HS_FIFOSIZ 96 #define TXH_P_HS_FIFOSIZ 96 //#define USB_OTG_HS_LOW_PWR_MGMT_SUPPORT //#define USB_OTG_HS_SOF_OUTPUT_ENABLED //#define USB_OTG_INTERNAL_VBUS_ENABLED #define USB_OTG_EXTERNAL_VBUS_ENABLED #ifdef USE_ULPI_PHY #define USB_OTG_ULPI_PHY_ENABLED #endif #ifdef USE_EMBEDDED_PHY #define USB_OTG_EMBEDDED_PHY_ENABLED #endif #ifdef USE_I2C_PHY #define USB_OTG_I2C_PHY_ENABLED #endif //#define USB_OTG_HS_INTERNAL_DMA_ENABLED #define USB_OTG_HS_DEDICATED_EP1_ENABLED #endif /****************** USB OTG FS CONFIGURATION **********************************/ #ifdef USB_OTG_FS_CORE #define RX_FIFO_FS_SIZE 128 #define TX0_FIFO_FS_SIZE 64 #define TX1_FIFO_FS_SIZE 128 #define TX2_FIFO_FS_SIZE 0 #define TX3_FIFO_FS_SIZE 0 #define TXH_NP_FS_FIFOSIZ 96 #define TXH_P_FS_FIFOSIZ 96 //#define USB_OTG_FS_LOW_PWR_MGMT_SUPPORT //#define USB_OTG_FS_SOF_OUTPUT_ENABLED #endif /****************** USB OTG MODE CONFIGURATION ********************************/ //#define USE_HOST_MODE #define USE_DEVICE_MODE //#define USE_OTG_MODE #ifndef USB_OTG_FS_CORE #ifndef USB_OTG_HS_CORE #error "USB_OTG_HS_CORE or USB_OTG_FS_CORE should be defined" #endif #endif #ifndef USE_DEVICE_MODE #ifndef USE_HOST_MODE #error "USE_DEVICE_MODE or USE_HOST_MODE should be defined" #endif #endif #ifndef USE_USB_OTG_HS #ifndef USE_USB_OTG_FS #error "USE_USB_OTG_HS or USE_USB_OTG_FS should be defined" #endif #else //USE_USB_OTG_HS #ifndef USE_ULPI_PHY #ifndef USE_EMBEDDED_PHY #ifndef USE_I2C_PHY #error "USE_ULPI_PHY or USE_EMBEDDED_PHY or USE_I2C_PHY should be defined" #endif #endif #endif #endif /****************** C Compilers dependent keywords ****************************/ /* In HS mode and when the DMA is used, all variables and data structures dealing with the DMA during the transaction process should be 4-bytes aligned */ #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED #if defined (__GNUC__) /* GNU Compiler */ #define __ALIGN_END __attribute__ ((aligned (4))) #define __ALIGN_BEGIN #else #define __ALIGN_END #if defined (__CC_ARM) /* ARM Compiler */ #define __ALIGN_BEGIN __align(4) #elif defined (__ICCARM__) /* IAR Compiler */ #define __ALIGN_BEGIN #elif defined (__TASKING__) /* TASKING Compiler */ #define __ALIGN_BEGIN __align(4) #endif /* __CC_ARM */ #endif /* __GNUC__ */ #else #define __ALIGN_BEGIN #define __ALIGN_END #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ /* __packed keyword used to decrease the data type alignment to 1-byte */ #if defined (__CC_ARM) /* ARM Compiler */ #define __packed __packed #elif defined (__ICCARM__) /* IAR Compiler */ #define __packed __packed #elif defined ( __GNUC__ ) /* GNU Compiler */ #define __packed __attribute__ ((__packed__)) #elif defined (__TASKING__) /* TASKING Compiler */ #define __packed __unaligned #endif /* __CC_ARM */ /** * @} */ /** @defgroup USB_CONF_Exported_Types * @{ */ /** * @} */ /** @defgroup USB_CONF_Exported_Macros * @{ */ /** * @} */ /** @defgroup USB_CONF_Exported_Variables * @{ */ /** * @} */ /** @defgroup USB_CONF_Exported_FunctionsPrototype * @{ */ /** * @} */ #endif //__USB_CONF__H__ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_conf/usbd_conf.h000066400000000000000000000057031445607075400175530ustar00rootroot00000000000000/** ****************************************************************************** * @file usbd_conf.h * @author MCD Application Team * @version V1.0.0 * @date 22-July-2011 * @brief USB Device configuration file ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __USBD_CONF__H__ #define __USBD_CONF__H__ /** @defgroup USB_CONF_Exported_Defines * @{ */ #define USBD_CFG_MAX_NUM 1 #define USBD_ITF_MAX_NUM 1 #define USB_MAX_STR_DESC_SIZ 100 /** @defgroup USB_VCP_Class_Layer_Parameter * @{ */ #define CDC_IN_EP 0x81 /* EP1 for data IN */ #define CDC_OUT_EP 0x01 /* EP1 for data OUT */ #define CDC_CMD_EP 0x82 /* EP2 for CDC commands */ /* CDC Endpoints parameters: you can fine tune these values depending on the needed baudrates and performance. */ #ifdef USE_USB_OTG_HS #define CDC_DATA_MAX_PACKET_SIZE 512 /* Endpoint IN & OUT Packet size */ #define CDC_CMD_PACKET_SZE 8 /* Control Endpoint Packet size */ #define CDC_IN_FRAME_INTERVAL 40 /* Number of micro-frames between IN transfers */ #define APP_RX_DATA_SIZE 2048 /* Total size of IN buffer: APP_RX_DATA_SIZE*8/MAX_BAUDARATE*1000 should be > CDC_IN_FRAME_INTERVAL*8 */ #else #define CDC_DATA_MAX_PACKET_SIZE 64 /* Endpoint IN & OUT Packet size */ #define CDC_CMD_PACKET_SZE 8 /* Control Endpoint Packet size */ #define CDC_IN_FRAME_INTERVAL 5 /* Number of frames between IN transfers */ //#define APP_RX_DATA_SIZE 2048 /* Total size of IN buffer: */ #define APP_RX_DATA_SIZE 10000 #endif /* USE_USB_OTG_HS */ #define APP_FOPS VCP_fops /** * @} */ /** @defgroup USB_CONF_Exported_Types * @{ */ /** * @} */ /** @defgroup USB_CONF_Exported_Macros * @{ */ /** * @} */ /** @defgroup USB_CONF_Exported_Variables * @{ */ /** * @} */ /** @defgroup USB_CONF_Exported_FunctionsPrototype * @{ */ /** * @} */ #endif //__USBD_CONF__H__ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_conf/usbd_desc.c000066400000000000000000000203571445607075400175410ustar00rootroot00000000000000/** ****************************************************************************** * @file usbd_desc.c * @author MCD Application Team * @version V1.0.0 * @date 19-September-2011 * @brief This file provides the USBD descriptors and string formatting method. ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include #include "usbd_core.h" #include "usbd_desc.h" #include "usbd_req.h" #include "usbd_conf.h" #include "usb_regs.h" /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY * @{ */ /** @defgroup USBD_DESC * @brief USBD descriptors module * @{ */ /** @defgroup USBD_DESC_Private_TypesDefinitions * @{ */ /** * @} */ /** @defgroup USBD_DESC_Private_Defines * @{ */ #define USBD_VID 0x0483 #define USBD_PID 0x5740 /** @defgroup USB_String_Descriptors * @{ */ #define USBD_LANGID_STRING 0x409 #define USBD_MANUFACTURER_STRING "STMicroelectronics" #define USBD_PRODUCT_HS_STRING "STM32 Virtual ComPort in HS mode" #define USBD_SERIALNUMBER_HS_STRING "00000000050B" #define USBD_PRODUCT_FS_STRING "STM32 Virtual ComPort in FS Mode" #define USBD_SERIALNUMBER_FS_STRING "00000000050C" #define USBD_CONFIGURATION_HS_STRING "VCP Config" #define USBD_INTERFACE_HS_STRING "VCP Interface" #define USBD_CONFIGURATION_FS_STRING "VCP Config" #define USBD_INTERFACE_FS_STRING "VCP Interface" /** * @} */ /** @defgroup USBD_DESC_Private_Macros * @{ */ /** * @} */ /** @defgroup USBD_DESC_Private_Variables * @{ */ USBD_DEVICE USR_desc = { USBD_USR_DeviceDescriptor, USBD_USR_LangIDStrDescriptor, USBD_USR_ManufacturerStrDescriptor, USBD_USR_ProductStrDescriptor, USBD_USR_SerialStrDescriptor, USBD_USR_ConfigStrDescriptor, USBD_USR_InterfaceStrDescriptor, }; #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED #if defined ( __ICCARM__ ) /*!< IAR Compiler */ #pragma data_alignment=4 #endif #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ /* USB Standard Device Descriptor */ __ALIGN_BEGIN uint8_t USBD_DeviceDesc[USB_SIZ_DEVICE_DESC] __ALIGN_END = { 0x12, /*bLength */ USB_DEVICE_DESCRIPTOR_TYPE, /*bDescriptorType*/ 0x00, /*bcdUSB */ 0x02, 0x00, /*bDeviceClass*/ 0x00, /*bDeviceSubClass*/ 0x00, /*bDeviceProtocol*/ USB_OTG_MAX_EP0_SIZE, /*bMaxPacketSize*/ LOBYTE(USBD_VID), /*idVendor*/ HIBYTE(USBD_VID), /*idVendor*/ LOBYTE(USBD_PID), /*idVendor*/ HIBYTE(USBD_PID), /*idVendor*/ 0x00, /*bcdDevice rel. 2.00*/ 0x02, USBD_IDX_MFC_STR, /*Index of manufacturer string*/ USBD_IDX_PRODUCT_STR, /*Index of product string*/ USBD_IDX_SERIAL_STR, /*Index of serial number string*/ USBD_CFG_MAX_NUM /*bNumConfigurations*/ } ; /* USB_DeviceDescriptor */ #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED #if defined ( __ICCARM__ ) /*!< IAR Compiler */ #pragma data_alignment=4 #endif #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ /* USB Standard Device Descriptor */ __ALIGN_BEGIN uint8_t USBD_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] __ALIGN_END = { USB_LEN_DEV_QUALIFIER_DESC, USB_DESC_TYPE_DEVICE_QUALIFIER, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, }; #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED #if defined ( __ICCARM__ ) /*!< IAR Compiler */ #pragma data_alignment=4 #endif #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ /* USB Standard Device Descriptor */ __ALIGN_BEGIN uint8_t USBD_LangIDDesc[USB_SIZ_STRING_LANGID] __ALIGN_END = { USB_SIZ_STRING_LANGID, USB_DESC_TYPE_STRING, LOBYTE(USBD_LANGID_STRING), HIBYTE(USBD_LANGID_STRING), }; /** * @} */ /** @defgroup USBD_DESC_Private_FunctionPrototypes * @{ */ /** * @} */ /** @defgroup USBD_DESC_Private_Functions * @{ */ /** * @brief USBD_USR_DeviceDescriptor * return the device descriptor * @param speed : current device speed * @param length : pointer to data length variable * @retval pointer to descriptor buffer */ uint8_t * USBD_USR_DeviceDescriptor( uint8_t speed , uint16_t *length) { *length = sizeof(USBD_DeviceDesc); return USBD_DeviceDesc; } /** * @brief USBD_USR_LangIDStrDescriptor * return the LangID string descriptor * @param speed : current device speed * @param length : pointer to data length variable * @retval pointer to descriptor buffer */ uint8_t * USBD_USR_LangIDStrDescriptor( uint8_t speed , uint16_t *length) { *length = sizeof(USBD_LangIDDesc); return USBD_LangIDDesc; } /** * @brief USBD_USR_ProductStrDescriptor * return the product string descriptor * @param speed : current device speed * @param length : pointer to data length variable * @retval pointer to descriptor buffer */ uint8_t * USBD_USR_ProductStrDescriptor( uint8_t speed , uint16_t *length) { if(speed == 0) { USBD_GetString ((uint8_t*)USBD_PRODUCT_HS_STRING, USBD_StrDesc, length); } else { USBD_GetString ((uint8_t*)USBD_PRODUCT_FS_STRING, USBD_StrDesc, length); } assert(*length < USB_MAX_STR_DESC_SIZ); return USBD_StrDesc; } /** * @brief USBD_USR_ManufacturerStrDescriptor * return the manufacturer string descriptor * @param speed : current device speed * @param length : pointer to data length variable * @retval pointer to descriptor buffer */ uint8_t * USBD_USR_ManufacturerStrDescriptor( uint8_t speed , uint16_t *length) { USBD_GetString ((uint8_t*)USBD_MANUFACTURER_STRING, USBD_StrDesc, length); assert(*length < USB_MAX_STR_DESC_SIZ); return USBD_StrDesc; } /** * @brief USBD_USR_SerialStrDescriptor * return the serial number string descriptor * @param speed : current device speed * @param length : pointer to data length variable * @retval pointer to descriptor buffer */ uint8_t * USBD_USR_SerialStrDescriptor( uint8_t speed , uint16_t *length) { if(speed == USB_OTG_SPEED_HIGH) { USBD_GetString ((uint8_t*)USBD_SERIALNUMBER_HS_STRING, USBD_StrDesc, length); } else { USBD_GetString ((uint8_t*)USBD_SERIALNUMBER_FS_STRING, USBD_StrDesc, length); } assert(*length < USB_MAX_STR_DESC_SIZ); return USBD_StrDesc; } /** * @brief USBD_USR_ConfigStrDescriptor * return the configuration string descriptor * @param speed : current device speed * @param length : pointer to data length variable * @retval pointer to descriptor buffer */ uint8_t * USBD_USR_ConfigStrDescriptor( uint8_t speed , uint16_t *length) { if(speed == USB_OTG_SPEED_HIGH) { USBD_GetString ((uint8_t*)USBD_CONFIGURATION_HS_STRING, USBD_StrDesc, length); } else { USBD_GetString ((uint8_t*)USBD_CONFIGURATION_FS_STRING, USBD_StrDesc, length); } assert(*length < USB_MAX_STR_DESC_SIZ); return USBD_StrDesc; } /** * @brief USBD_USR_InterfaceStrDescriptor * return the interface string descriptor * @param speed : current device speed * @param length : pointer to data length variable * @retval pointer to descriptor buffer */ uint8_t * USBD_USR_InterfaceStrDescriptor( uint8_t speed , uint16_t *length) { if(speed == 0) { USBD_GetString ((uint8_t*)USBD_INTERFACE_HS_STRING, USBD_StrDesc, length); } else { USBD_GetString ((uint8_t*)USBD_INTERFACE_FS_STRING, USBD_StrDesc, length); } assert(*length < USB_MAX_STR_DESC_SIZ); return USBD_StrDesc; } /** * @} */ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_conf/usbd_desc.h000066400000000000000000000063271445607075400175470ustar00rootroot00000000000000/** ****************************************************************************** * @file usbd_desc.h * @author MCD Application Team * @version V1.0.0 * @date 19-September-2011 * @brief header file for the usbd_desc.c file ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __USB_DESC_H #define __USB_DESC_H /* Includes ------------------------------------------------------------------*/ #include "usbd_def.h" /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY * @{ */ /** @defgroup USB_DESC * @brief general defines for the usb device library file * @{ */ /** @defgroup USB_DESC_Exported_Defines * @{ */ #define USB_DEVICE_DESCRIPTOR_TYPE 0x01 #define USB_CONFIGURATION_DESCRIPTOR_TYPE 0x02 #define USB_STRING_DESCRIPTOR_TYPE 0x03 #define USB_INTERFACE_DESCRIPTOR_TYPE 0x04 #define USB_ENDPOINT_DESCRIPTOR_TYPE 0x05 #define USB_SIZ_DEVICE_DESC 18 #define USB_SIZ_STRING_LANGID 4 /** * @} */ /** @defgroup USBD_DESC_Exported_TypesDefinitions * @{ */ /** * @} */ /** @defgroup USBD_DESC_Exported_Macros * @{ */ /** * @} */ /** @defgroup USBD_DESC_Exported_Variables * @{ */ extern uint8_t USBD_DeviceDesc [USB_SIZ_DEVICE_DESC]; extern uint8_t USBD_StrDesc[USB_MAX_STR_DESC_SIZ]; extern uint8_t USBD_OtherSpeedCfgDesc[USB_LEN_CFG_DESC]; extern uint8_t USBD_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC]; extern uint8_t USBD_LangIDDesc[USB_SIZ_STRING_LANGID]; extern USBD_DEVICE USR_desc; /** * @} */ /** @defgroup USBD_DESC_Exported_FunctionsPrototype * @{ */ uint8_t * USBD_USR_DeviceDescriptor( uint8_t speed , uint16_t *length); uint8_t * USBD_USR_LangIDStrDescriptor( uint8_t speed , uint16_t *length); uint8_t * USBD_USR_ManufacturerStrDescriptor ( uint8_t speed , uint16_t *length); uint8_t * USBD_USR_ProductStrDescriptor ( uint8_t speed , uint16_t *length); uint8_t * USBD_USR_SerialStrDescriptor( uint8_t speed , uint16_t *length); uint8_t * USBD_USR_ConfigStrDescriptor( uint8_t speed , uint16_t *length); uint8_t * USBD_USR_InterfaceStrDescriptor( uint8_t speed , uint16_t *length); #ifdef USB_SUPPORT_USER_STRING_DESC uint8_t * USBD_USR_USRStringDesc (uint8_t speed, uint8_t idx , uint16_t *length); #endif /* USB_SUPPORT_USER_STRING_DESC */ /** * @} */ #endif /* __USBD_DESC_H */ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_conf/usbd_usr.c000066400000000000000000000053221445607075400174270ustar00rootroot00000000000000/** ****************************************************************************** * @file usbd_usr.c * @author MCD Application Team * @version V1.0.0 * @date 19-September-2011 * @brief This file includes the user application layer ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ #include "usbd_usr.h" #include "usbd_ioreq.h" USBD_Usr_cb_TypeDef USR_cb = { USBD_USR_Init, USBD_USR_DeviceReset, USBD_USR_DeviceConfigured, USBD_USR_DeviceSuspended, USBD_USR_DeviceResumed, USBD_USR_DeviceConnected, USBD_USR_DeviceDisconnected, }; /** * @brief USBD_USR_Init * Displays the message on LCD for host lib initialization * @param None * @retval None */ void USBD_USR_Init(void) { } /** * @brief USBD_USR_DeviceReset * Displays the message on LCD on device Reset Event * @param speed : device speed * @retval None */ void USBD_USR_DeviceReset(uint8_t speed ) { switch (speed) { case USB_OTG_SPEED_HIGH: break; case USB_OTG_SPEED_FULL: break; default: break; } } /** * @brief USBD_USR_DeviceConfigured * Displays the message on LCD on device configuration Event * @param None * @retval Status */ void USBD_USR_DeviceConfigured (void) { } /** * @brief USBD_USR_DeviceConnected * Displays the message on LCD on device connection Event * @param None * @retval Status */ void USBD_USR_DeviceConnected (void) { } /** * @brief USBD_USR_DeviceDisonnected * Displays the message on LCD on device disconnection Event * @param None * @retval Status */ void USBD_USR_DeviceDisconnected (void) { } /** * @brief USBD_USR_DeviceSuspended * Displays the message on LCD on device suspend Event * @param None * @retval None */ void USBD_USR_DeviceSuspended(void) { /* Users can do their application actions here for the USB-Reset */ } /** * @brief USBD_USR_DeviceResumed * Displays the message on LCD on device resume Event * @param None * @retval None */ void USBD_USR_DeviceResumed(void) { /* Users can do their application actions here for the USB-Reset */ } codec2-1.2.0/stm32/usb_lib/000077500000000000000000000000001445607075400152545ustar00rootroot00000000000000codec2-1.2.0/stm32/usb_lib/cdc/000077500000000000000000000000001445607075400160055ustar00rootroot00000000000000codec2-1.2.0/stm32/usb_lib/cdc/usbd_cdc_core.c000066400000000000000000000600151445607075400207310ustar00rootroot00000000000000/** ****************************************************************************** * @file usbd_cdc_core.c * @author MCD Application Team * @version V1.0.0 * @date 22-July-2011 * @brief This file provides the high layer firmware functions to manage the * following functionalities of the USB CDC Class: * - Initialization and Configuration of high and low layer * - Enumeration as CDC Device (and enumeration for each implemented memory interface) * - OUT/IN data transfer * - Command IN transfer (class requests management) * - Error management * * @verbatim * * =================================================================== * CDC Class Driver Description * =================================================================== * This driver manages the "Universal Serial Bus Class Definitions for Communications Devices * Revision 1.2 November 16, 2007" and the sub-protocol specification of "Universal Serial Bus * Communications Class Subclass Specification for PSTN Devices Revision 1.2 February 9, 2007" * This driver implements the following aspects of the specification: * - Device descriptor management * - Configuration descriptor management * - Enumeration as CDC device with 2 data endpoints (IN and OUT) and 1 command endpoint (IN) * - Requests management (as described in section 6.2 in specification) * - Abstract Control Model compliant * - Union Functional collection (using 1 IN endpoint for control) * - Data interface class * @note * For the Abstract Control Model, this core allows only transmitting the requests to * lower layer dispatcher (ie. usbd_cdc_vcp.c/.h) which should manage each request and * perform relative actions. * * These aspects may be enriched or modified for a specific user application. * * This driver doesn't implement the following aspects of the specification * (but it is possible to manage these features with some modifications on this driver): * - Any class-specific aspect relative to communication classes should be managed by user application. * - All communication classes other than PSTN are not managed * * @endverbatim * ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include "usbd_cdc_core.h" #include "usbd_desc.h" #include "usbd_req.h" /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY * @{ */ /** @defgroup usbd_cdc * @brief usbd core module * @{ */ /** @defgroup usbd_cdc_Private_TypesDefinitions * @{ */ /** * @} */ /** @defgroup usbd_cdc_Private_Defines * @{ */ /** * @} */ /** @defgroup usbd_cdc_Private_Macros * @{ */ /** * @} */ /** @defgroup usbd_cdc_Private_FunctionPrototypes * @{ */ /********************************************* CDC Device library callbacks *********************************************/ static uint8_t usbd_cdc_Init (void *pdev, uint8_t cfgidx); static uint8_t usbd_cdc_DeInit (void *pdev, uint8_t cfgidx); static uint8_t usbd_cdc_Setup (void *pdev, USB_SETUP_REQ *req); static uint8_t usbd_cdc_EP0_RxReady (void *pdev); static uint8_t usbd_cdc_DataIn (void *pdev, uint8_t epnum); static uint8_t usbd_cdc_DataOut (void *pdev, uint8_t epnum); static uint8_t usbd_cdc_SOF (void *pdev); /********************************************* CDC specific management functions *********************************************/ static void Handle_USBAsynchXfer (void *pdev); static uint8_t *USBD_cdc_GetCfgDesc (uint8_t speed, uint16_t *length); #ifdef USE_USB_OTG_HS static uint8_t *USBD_cdc_GetOtherCfgDesc (uint8_t speed, uint16_t *length); #endif /** * @} */ /** @defgroup usbd_cdc_Private_Variables * @{ */ extern CDC_IF_Prop_TypeDef APP_FOPS; extern uint8_t USBD_DeviceDesc [USB_SIZ_DEVICE_DESC]; #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED #if defined ( __ICCARM__ ) /*!< IAR Compiler */ #pragma data_alignment=4 #endif #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ __ALIGN_BEGIN uint8_t usbd_cdc_CfgDesc [USB_CDC_CONFIG_DESC_SIZ] __ALIGN_END ; #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED #if defined ( __ICCARM__ ) /*!< IAR Compiler */ #pragma data_alignment=4 #endif #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ __ALIGN_BEGIN uint8_t usbd_cdc_OtherCfgDesc [USB_CDC_CONFIG_DESC_SIZ] __ALIGN_END ; #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED #if defined ( __ICCARM__ ) /*!< IAR Compiler */ #pragma data_alignment=4 #endif #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ __ALIGN_BEGIN static __IO uint32_t usbd_cdc_AltSet __ALIGN_END = 0; #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED #if defined ( __ICCARM__ ) /*!< IAR Compiler */ #pragma data_alignment=4 #endif #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ __ALIGN_BEGIN uint8_t USB_Rx_Buffer [CDC_DATA_MAX_PACKET_SIZE] __ALIGN_END ; #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED #if defined ( __ICCARM__ ) /*!< IAR Compiler */ #pragma data_alignment=4 #endif #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ __ALIGN_BEGIN uint8_t APP_Rx_Buffer [APP_RX_DATA_SIZE] __ALIGN_END ; #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED #if defined ( __ICCARM__ ) /*!< IAR Compiler */ #pragma data_alignment=4 #endif #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ __ALIGN_BEGIN uint8_t CmdBuff[CDC_CMD_PACKET_SZE] __ALIGN_END ; uint32_t APP_Rx_ptr_in = 0; uint32_t APP_Rx_ptr_out = 0; uint32_t APP_Rx_length = 0; uint8_t USB_Tx_State = 0; static uint32_t cdcCmd = 0xFF; static uint32_t cdcLen = 0; /* CDC interface class callbacks structure */ USBD_Class_cb_TypeDef USBD_CDC_cb = { usbd_cdc_Init, usbd_cdc_DeInit, usbd_cdc_Setup, NULL, /* EP0_TxSent, */ usbd_cdc_EP0_RxReady, usbd_cdc_DataIn, usbd_cdc_DataOut, usbd_cdc_SOF, NULL, NULL, USBD_cdc_GetCfgDesc, #ifdef USE_USB_OTG_HS USBD_cdc_GetOtherCfgDesc, /* use same cobfig as per FS */ #endif /* USE_USB_OTG_HS */ }; #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED #if defined ( __ICCARM__ ) /*!< IAR Compiler */ #pragma data_alignment=4 #endif #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ /* USB CDC device Configuration Descriptor */ __ALIGN_BEGIN uint8_t usbd_cdc_CfgDesc[USB_CDC_CONFIG_DESC_SIZ] __ALIGN_END = { /*Configuration Descriptor*/ 0x09, /* bLength: Configuration Descriptor size */ USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */ USB_CDC_CONFIG_DESC_SIZ, /* wTotalLength:no of returned bytes */ 0x00, 0x02, /* bNumInterfaces: 2 interface */ 0x01, /* bConfigurationValue: Configuration value */ 0x00, /* iConfiguration: Index of string descriptor describing the configuration */ 0xC0, /* bmAttributes: self powered */ 0x32, /* MaxPower 0 mA */ /*---------------------------------------------------------------------------*/ /*Interface Descriptor */ 0x09, /* bLength: Interface Descriptor size */ USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: Interface */ /* Interface descriptor type */ 0x00, /* bInterfaceNumber: Number of Interface */ 0x00, /* bAlternateSetting: Alternate setting */ 0x01, /* bNumEndpoints: One endpoints used */ 0x02, /* bInterfaceClass: Communication Interface Class */ 0x02, /* bInterfaceSubClass: Abstract Control Model */ 0x01, /* bInterfaceProtocol: Common AT commands */ 0x00, /* iInterface: */ /*Header Functional Descriptor*/ 0x05, /* bLength: Endpoint Descriptor size */ 0x24, /* bDescriptorType: CS_INTERFACE */ 0x00, /* bDescriptorSubtype: Header Func Desc */ 0x10, /* bcdCDC: spec release number */ 0x01, /*Call Management Functional Descriptor*/ 0x05, /* bFunctionLength */ 0x24, /* bDescriptorType: CS_INTERFACE */ 0x01, /* bDescriptorSubtype: Call Management Func Desc */ 0x00, /* bmCapabilities: D0+D1 */ 0x01, /* bDataInterface: 1 */ /*ACM Functional Descriptor*/ 0x04, /* bFunctionLength */ 0x24, /* bDescriptorType: CS_INTERFACE */ 0x02, /* bDescriptorSubtype: Abstract Control Management desc */ 0x02, /* bmCapabilities */ /*Union Functional Descriptor*/ 0x05, /* bFunctionLength */ 0x24, /* bDescriptorType: CS_INTERFACE */ 0x06, /* bDescriptorSubtype: Union func desc */ 0x00, /* bMasterInterface: Communication class interface */ 0x01, /* bSlaveInterface0: Data Class Interface */ /*Endpoint 2 Descriptor*/ 0x07, /* bLength: Endpoint Descriptor size */ USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */ CDC_CMD_EP, /* bEndpointAddress */ 0x03, /* bmAttributes: Interrupt */ LOBYTE(CDC_CMD_PACKET_SZE), /* wMaxPacketSize: */ HIBYTE(CDC_CMD_PACKET_SZE), #ifdef USE_USB_OTG_HS 0x10, /* bInterval: */ #else 0xFF, /* bInterval: */ #endif /* USE_USB_OTG_HS */ /*---------------------------------------------------------------------------*/ /*Data class interface descriptor*/ 0x09, /* bLength: Endpoint Descriptor size */ USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: */ 0x01, /* bInterfaceNumber: Number of Interface */ 0x00, /* bAlternateSetting: Alternate setting */ 0x02, /* bNumEndpoints: Two endpoints used */ 0x0A, /* bInterfaceClass: CDC */ 0x00, /* bInterfaceSubClass: */ 0x00, /* bInterfaceProtocol: */ 0x00, /* iInterface: */ /*Endpoint OUT Descriptor*/ 0x07, /* bLength: Endpoint Descriptor size */ USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */ CDC_OUT_EP, /* bEndpointAddress */ 0x02, /* bmAttributes: Bulk */ LOBYTE(CDC_DATA_MAX_PACKET_SIZE), /* wMaxPacketSize: */ HIBYTE(CDC_DATA_MAX_PACKET_SIZE), 0x00, /* bInterval: ignore for Bulk transfer */ /*Endpoint IN Descriptor*/ 0x07, /* bLength: Endpoint Descriptor size */ USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */ CDC_IN_EP, /* bEndpointAddress */ 0x02, /* bmAttributes: Bulk */ LOBYTE(CDC_DATA_MAX_PACKET_SIZE), /* wMaxPacketSize: */ HIBYTE(CDC_DATA_MAX_PACKET_SIZE), 0x00 /* bInterval: ignore for Bulk transfer */ } ; #ifdef USE_USB_OTG_HS #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED #if defined ( __ICCARM__ ) /*!< IAR Compiler */ #pragma data_alignment=4 #endif #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ __ALIGN_BEGIN uint8_t usbd_cdc_OtherCfgDesc[USB_CDC_CONFIG_DESC_SIZ] __ALIGN_END = { 0x09, /* bLength: Configuration Descriptor size */ USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION, USB_CDC_CONFIG_DESC_SIZ, 0x00, 0x02, /* bNumInterfaces: 2 interfaces */ 0x01, /* bConfigurationValue: */ 0x04, /* iConfiguration: */ 0xC0, /* bmAttributes: */ 0x32, /* MaxPower 100 mA */ /*Interface Descriptor */ 0x09, /* bLength: Interface Descriptor size */ USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: Interface */ /* Interface descriptor type */ 0x00, /* bInterfaceNumber: Number of Interface */ 0x00, /* bAlternateSetting: Alternate setting */ 0x01, /* bNumEndpoints: One endpoints used */ 0x02, /* bInterfaceClass: Communication Interface Class */ 0x02, /* bInterfaceSubClass: Abstract Control Model */ 0x01, /* bInterfaceProtocol: Common AT commands */ 0x00, /* iInterface: */ /*Header Functional Descriptor*/ 0x05, /* bLength: Endpoint Descriptor size */ 0x24, /* bDescriptorType: CS_INTERFACE */ 0x00, /* bDescriptorSubtype: Header Func Desc */ 0x10, /* bcdCDC: spec release number */ 0x01, /*Call Management Functional Descriptor*/ 0x05, /* bFunctionLength */ 0x24, /* bDescriptorType: CS_INTERFACE */ 0x01, /* bDescriptorSubtype: Call Management Func Desc */ 0x00, /* bmCapabilities: D0+D1 */ 0x01, /* bDataInterface: 1 */ /*ACM Functional Descriptor*/ 0x04, /* bFunctionLength */ 0x24, /* bDescriptorType: CS_INTERFACE */ 0x02, /* bDescriptorSubtype: Abstract Control Management desc */ 0x02, /* bmCapabilities */ /*Union Functional Descriptor*/ 0x05, /* bFunctionLength */ 0x24, /* bDescriptorType: CS_INTERFACE */ 0x06, /* bDescriptorSubtype: Union func desc */ 0x00, /* bMasterInterface: Communication class interface */ 0x01, /* bSlaveInterface0: Data Class Interface */ /*Endpoint 2 Descriptor*/ 0x07, /* bLength: Endpoint Descriptor size */ USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */ CDC_CMD_EP, /* bEndpointAddress */ 0x03, /* bmAttributes: Interrupt */ LOBYTE(CDC_CMD_PACKET_SZE), /* wMaxPacketSize: */ HIBYTE(CDC_CMD_PACKET_SZE), 0xFF, /* bInterval: */ /*---------------------------------------------------------------------------*/ /*Data class interface descriptor*/ 0x09, /* bLength: Endpoint Descriptor size */ USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: */ 0x01, /* bInterfaceNumber: Number of Interface */ 0x00, /* bAlternateSetting: Alternate setting */ 0x02, /* bNumEndpoints: Two endpoints used */ 0x0A, /* bInterfaceClass: CDC */ 0x00, /* bInterfaceSubClass: */ 0x00, /* bInterfaceProtocol: */ 0x00, /* iInterface: */ /*Endpoint OUT Descriptor*/ 0x07, /* bLength: Endpoint Descriptor size */ USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */ CDC_OUT_EP, /* bEndpointAddress */ 0x02, /* bmAttributes: Bulk */ 0x40, /* wMaxPacketSize: */ 0x00, 0x00, /* bInterval: ignore for Bulk transfer */ /*Endpoint IN Descriptor*/ 0x07, /* bLength: Endpoint Descriptor size */ USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */ CDC_IN_EP, /* bEndpointAddress */ 0x02, /* bmAttributes: Bulk */ 0x40, /* wMaxPacketSize: */ 0x00, 0x00 /* bInterval */ }; #endif /* USE_USB_OTG_HS */ /** * @} */ /** @defgroup usbd_cdc_Private_Functions * @{ */ /** * @brief usbd_cdc_Init * Initilaize the CDC interface * @param pdev: device instance * @param cfgidx: Configuration index * @retval status */ static uint8_t usbd_cdc_Init (void *pdev, uint8_t cfgidx) { uint8_t *pbuf; /* Open EP IN */ DCD_EP_Open(pdev, CDC_IN_EP, CDC_DATA_IN_PACKET_SIZE, USB_OTG_EP_BULK); /* Open EP OUT */ DCD_EP_Open(pdev, CDC_OUT_EP, CDC_DATA_OUT_PACKET_SIZE, USB_OTG_EP_BULK); /* Open Command IN EP */ DCD_EP_Open(pdev, CDC_CMD_EP, CDC_CMD_PACKET_SZE, USB_OTG_EP_INT); pbuf = (uint8_t *)USBD_DeviceDesc; pbuf[4] = DEVICE_CLASS_CDC; pbuf[5] = DEVICE_SUBCLASS_CDC; /* Initialize the Interface physical components */ APP_FOPS.pIf_Init(); /* Prepare Out endpoint to receive next packet */ DCD_EP_PrepareRx(pdev, CDC_OUT_EP, (uint8_t*)(USB_Rx_Buffer), CDC_DATA_OUT_PACKET_SIZE); return USBD_OK; } /** * @brief usbd_cdc_Init * DeInitialize the CDC layer * @param pdev: device instance * @param cfgidx: Configuration index * @retval status */ static uint8_t usbd_cdc_DeInit (void *pdev, uint8_t cfgidx) { /* Open EP IN */ DCD_EP_Close(pdev, CDC_IN_EP); /* Open EP OUT */ DCD_EP_Close(pdev, CDC_OUT_EP); /* Open Command IN EP */ DCD_EP_Close(pdev, CDC_CMD_EP); /* Restore default state of the Interface physical components */ APP_FOPS.pIf_DeInit(); return USBD_OK; } /** * @brief usbd_cdc_Setup * Handle the CDC specific requests * @param pdev: instance * @param req: usb requests * @retval status */ static uint8_t usbd_cdc_Setup (void *pdev, USB_SETUP_REQ *req) { uint16_t len = 0; uint8_t *pbuf; switch (req->bmRequest & USB_REQ_TYPE_MASK) { /* CDC Class Requests -------------------------------*/ case USB_REQ_TYPE_CLASS : /* Check if the request is a data setup packet */ if (req->wLength) { /* Check if the request is Device-to-Host */ if (req->bmRequest & 0x80) { /* Get the data to be sent to Host from interface layer */ APP_FOPS.pIf_Ctrl(req->bRequest, CmdBuff, req->wLength); /* Send the data to the host */ USBD_CtlSendData (pdev, CmdBuff, req->wLength); } else /* Host-to-Device request */ { /* Set the value of the current command to be processed */ cdcCmd = req->bRequest; cdcLen = req->wLength; /* Prepare the reception of the buffer over EP0 Next step: the received data will be managed in usbd_cdc_EP0_TxSent() function. */ USBD_CtlPrepareRx (pdev, CmdBuff, req->wLength); } } else /* No Data request */ { /* Transfer the command to the interface layer */ APP_FOPS.pIf_Ctrl(req->bRequest, NULL, 0); } return USBD_OK; default: USBD_CtlError (pdev, req); return USBD_FAIL; /* Standard Requests -------------------------------*/ case USB_REQ_TYPE_STANDARD: switch (req->bRequest) { case USB_REQ_GET_DESCRIPTOR: if( (req->wValue >> 8) == CDC_DESCRIPTOR_TYPE) { #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED pbuf = usbd_cdc_Desc; #else pbuf = usbd_cdc_CfgDesc + 9 + (9 * USBD_ITF_MAX_NUM); #endif len = MIN(USB_CDC_DESC_SIZ , req->wLength); } USBD_CtlSendData (pdev, pbuf, len); break; case USB_REQ_GET_INTERFACE : USBD_CtlSendData (pdev, (uint8_t *)&usbd_cdc_AltSet, 1); break; case USB_REQ_SET_INTERFACE : if ((uint8_t)(req->wValue) < USBD_ITF_MAX_NUM) { usbd_cdc_AltSet = (uint8_t)(req->wValue); } else { /* Call the error management function (command will be nacked */ USBD_CtlError (pdev, req); } break; } } return USBD_OK; } /** * @brief usbd_cdc_EP0_RxReady * Data received on control endpoint * @param pdev: device device instance * @retval status */ static uint8_t usbd_cdc_EP0_RxReady (void *pdev) { if (cdcCmd != NO_CMD) { /* Process the data */ APP_FOPS.pIf_Ctrl(cdcCmd, CmdBuff, cdcLen); /* Reset the command variable to default value */ cdcCmd = NO_CMD; } return USBD_OK; } /** * @brief usbd_audio_DataIn * Data sent on non-control IN endpoint * @param pdev: device instance * @param epnum: endpoint number * @retval status */ static uint8_t usbd_cdc_DataIn (void *pdev, uint8_t epnum) { uint16_t USB_Tx_ptr; uint16_t USB_Tx_length; if (USB_Tx_State == 1) { if (APP_Rx_length == 0) { USB_Tx_State = 0; } else { if (APP_Rx_length > CDC_DATA_IN_PACKET_SIZE){ USB_Tx_ptr = APP_Rx_ptr_out; USB_Tx_length = CDC_DATA_IN_PACKET_SIZE; APP_Rx_ptr_out += CDC_DATA_IN_PACKET_SIZE; APP_Rx_length -= CDC_DATA_IN_PACKET_SIZE; } else { USB_Tx_ptr = APP_Rx_ptr_out; USB_Tx_length = APP_Rx_length; APP_Rx_ptr_out += APP_Rx_length; APP_Rx_length = 0; } /* Prepare the available data buffer to be sent on IN endpoint */ DCD_EP_Tx (pdev, CDC_IN_EP, (uint8_t*)&APP_Rx_Buffer[USB_Tx_ptr], USB_Tx_length); } } return USBD_OK; } /** * @brief usbd_audio_DataOut * Data received on non-control Out endpoint * @param pdev: device instance * @param epnum: endpoint number * @retval status */ static uint8_t usbd_cdc_DataOut (void *pdev, uint8_t epnum) { uint16_t USB_Rx_Cnt; /* Get the received data buffer and update the counter */ USB_Rx_Cnt = ((USB_OTG_CORE_HANDLE*)pdev)->dev.out_ep[epnum].xfer_count; /* USB data will be immediately processed, this allow next USB traffic being NAKed till the end of the application Xfer */ APP_FOPS.pIf_DataRx(USB_Rx_Buffer, USB_Rx_Cnt); /* Prepare Out endpoint to receive next packet */ DCD_EP_PrepareRx(pdev, CDC_OUT_EP, (uint8_t*)(USB_Rx_Buffer), CDC_DATA_OUT_PACKET_SIZE); return USBD_OK; } /** * @brief usbd_audio_SOF * Start Of Frame event management * @param pdev: instance * @param epnum: endpoint number * @retval status */ static uint8_t usbd_cdc_SOF (void *pdev) { static uint32_t FrameCount = 0; if (FrameCount++ == CDC_IN_FRAME_INTERVAL) { /* Reset the frame counter */ FrameCount = 0; /* Check the data to be sent through IN pipe */ Handle_USBAsynchXfer(pdev); } return USBD_OK; } /** * @brief Handle_USBAsynchXfer * Send data to USB * @param pdev: instance * @retval None */ static void Handle_USBAsynchXfer (void *pdev) { uint16_t USB_Tx_ptr; uint16_t USB_Tx_length; if(USB_Tx_State != 1) { if (APP_Rx_ptr_out == APP_RX_DATA_SIZE) { APP_Rx_ptr_out = 0; } if(APP_Rx_ptr_out == APP_Rx_ptr_in) { USB_Tx_State = 0; return; } if(APP_Rx_ptr_out > APP_Rx_ptr_in) /* rollback */ { APP_Rx_length = APP_RX_DATA_SIZE - APP_Rx_ptr_out; } else { APP_Rx_length = APP_Rx_ptr_in - APP_Rx_ptr_out; } #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED APP_Rx_length &= ~0x03; #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ if (APP_Rx_length > CDC_DATA_IN_PACKET_SIZE) { USB_Tx_ptr = APP_Rx_ptr_out; USB_Tx_length = CDC_DATA_IN_PACKET_SIZE; APP_Rx_ptr_out += CDC_DATA_IN_PACKET_SIZE; APP_Rx_length -= CDC_DATA_IN_PACKET_SIZE; } else { USB_Tx_ptr = APP_Rx_ptr_out; USB_Tx_length = APP_Rx_length; APP_Rx_ptr_out += APP_Rx_length; APP_Rx_length = 0; } USB_Tx_State = 1; DCD_EP_Tx (pdev, CDC_IN_EP, (uint8_t*)&APP_Rx_Buffer[USB_Tx_ptr], USB_Tx_length); } } /** * @brief USBD_cdc_GetCfgDesc * Return configuration descriptor * @param speed : current device speed * @param length : pointer data length * @retval pointer to descriptor buffer */ static uint8_t *USBD_cdc_GetCfgDesc (uint8_t speed, uint16_t *length) { *length = sizeof (usbd_cdc_CfgDesc); return usbd_cdc_CfgDesc; } /** * @brief USBD_cdc_GetCfgDesc * Return configuration descriptor * @param speed : current device speed * @param length : pointer data length * @retval pointer to descriptor buffer */ #ifdef USE_USB_OTG_HS static uint8_t *USBD_cdc_GetOtherCfgDesc (uint8_t speed, uint16_t *length) { *length = sizeof (usbd_cdc_OtherCfgDesc); return usbd_cdc_OtherCfgDesc; } #endif /** * @} */ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_lib/cdc/usbd_cdc_core.h000066400000000000000000000074721445607075400207460ustar00rootroot00000000000000/** ****************************************************************************** * @file usbd_cdc_core.h * @author MCD Application Team * @version V1.0.0 * @date 22-July-2011 * @brief header file for the usbd_cdc_core.c file. ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #ifndef __USB_CDC_CORE_H_ #define __USB_CDC_CORE_H_ #include "usbd_ioreq.h" /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY * @{ */ /** @defgroup usbd_cdc * @brief This file is the Header file for USBD_cdc.c * @{ */ /** @defgroup usbd_cdc_Exported_Defines * @{ */ #define USB_CDC_CONFIG_DESC_SIZ (67) #define USB_CDC_DESC_SIZ (67-9) #define CDC_DESCRIPTOR_TYPE 0x21 #define DEVICE_CLASS_CDC 0x02 #define DEVICE_SUBCLASS_CDC 0x00 #define USB_DEVICE_DESCRIPTOR_TYPE 0x01 #define USB_CONFIGURATION_DESCRIPTOR_TYPE 0x02 #define USB_STRING_DESCRIPTOR_TYPE 0x03 #define USB_INTERFACE_DESCRIPTOR_TYPE 0x04 #define USB_ENDPOINT_DESCRIPTOR_TYPE 0x05 #define STANDARD_ENDPOINT_DESC_SIZE 0x09 #define CDC_DATA_IN_PACKET_SIZE *(uint16_t *)(((USB_OTG_CORE_HANDLE *)pdev)->dev.pConfig_descriptor + 57) #define CDC_DATA_OUT_PACKET_SIZE *(uint16_t *)(((USB_OTG_CORE_HANDLE *)pdev)->dev.pConfig_descriptor + 64) /*---------------------------------------------------------------------*/ /* CDC definitions */ /*---------------------------------------------------------------------*/ /**************************************************/ /* CDC Requests */ /**************************************************/ #define SEND_ENCAPSULATED_COMMAND 0x00 #define GET_ENCAPSULATED_RESPONSE 0x01 #define SET_COMM_FEATURE 0x02 #define GET_COMM_FEATURE 0x03 #define CLEAR_COMM_FEATURE 0x04 #define SET_LINE_CODING 0x20 #define GET_LINE_CODING 0x21 #define SET_CONTROL_LINE_STATE 0x22 #define SEND_BREAK 0x23 #define NO_CMD 0xFF /** * @} */ /** @defgroup USBD_CORE_Exported_TypesDefinitions * @{ */ typedef struct _CDC_IF_PROP { uint16_t (*pIf_Init) (void); uint16_t (*pIf_DeInit) (void); uint16_t (*pIf_Ctrl) (uint32_t Cmd, uint8_t* Buf, uint32_t Len); uint16_t (*pIf_DataTx) (uint8_t* Buf, uint32_t Len); uint16_t (*pIf_DataRx) (uint8_t* Buf, uint32_t Len); } CDC_IF_Prop_TypeDef; /** * @} */ /** @defgroup USBD_CORE_Exported_Macros * @{ */ /** * @} */ /** @defgroup USBD_CORE_Exported_Variables * @{ */ extern USBD_Class_cb_TypeDef USBD_CDC_cb; /** * @} */ /** @defgroup USB_CORE_Exported_Functions * @{ */ /** * @} */ #endif // __USB_CDC_CORE_H_ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_lib/cdc/usbd_cdc_vcp.c000066400000000000000000000164211445607075400205730ustar00rootroot00000000000000/** ****************************************************************************** * @file usbd_cdc_vcp.c * @author MCD Application Team * @version V1.0.0 * @date 22-July-2011 * @brief Generic media access Layer. ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED #pragma data_alignment = 4 #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ /* Includes ------------------------------------------------------------------*/ #include "usbd_cdc_vcp.h" #include "stm32f4xx_conf.h" #include "stm32f4xx_usart.h" /* Private variables ---------------------------------------------------------*/ LINE_CODING linecoding = { 115200, /* baud rate*/ 0x00, /* stop bits-1*/ 0x00, /* parity - none*/ 0x08 /* nb. of bits 8*/ }; USART_InitTypeDef USART_InitStructure; /* These are external variables imported from CDC core to be used for IN transfer management. */ extern uint8_t APP_Rx_Buffer[]; /* Write CDC received data in this buffer. These data will be sent over USB IN endpoint in the CDC core functions. */ extern uint32_t APP_Rx_ptr_in; /* Increment this pointer or roll it back to start address when writing received data in the buffer APP_Rx_Buffer. */ /* Private function prototypes -----------------------------------------------*/ static uint16_t VCP_Init(void); static uint16_t VCP_DeInit(void); static uint16_t VCP_Ctrl(uint32_t Cmd, uint8_t* Buf, uint32_t Len); static uint16_t VCP_DataTx(uint8_t* Buf, uint32_t Len); static uint16_t VCP_DataRx(uint8_t* Buf, uint32_t Len); CDC_IF_Prop_TypeDef VCP_fops = { VCP_Init, VCP_DeInit, VCP_Ctrl, VCP_DataTx, VCP_DataRx }; /* Private functions ---------------------------------------------------------*/ /** * @brief VCP_Init * Initializes the Media on the STM32 * @param None * @retval Result of the operation (USBD_OK in all cases) */ static uint16_t VCP_Init(void) { return USBD_OK; } /** * @brief VCP_DeInit * DeInitializes the Media on the STM32 * @param None * @retval Result of the operation (USBD_OK in all cases) */ static uint16_t VCP_DeInit(void) { return USBD_OK; } /** * @brief VCP_Ctrl * Manage the CDC class requests * @param Cmd: Command code * @param Buf: Buffer containing command data (request parameters) * @param Len: Number of data to be sent (in bytes) * @retval Result of the operation (USBD_OK in all cases) */ static uint16_t VCP_Ctrl(uint32_t Cmd, uint8_t* Buf, uint32_t Len) { switch (Cmd) { case SEND_ENCAPSULATED_COMMAND: /* Not needed for this driver */ break; case GET_ENCAPSULATED_RESPONSE: /* Not needed for this driver */ break; case SET_COMM_FEATURE: /* Not needed for this driver */ break; case GET_COMM_FEATURE: /* Not needed for this driver */ break; case CLEAR_COMM_FEATURE: /* Not needed for this driver */ break; case SET_LINE_CODING: /* Not needed for this driver */ break; case GET_LINE_CODING: Buf[0] = (uint8_t) (linecoding.bitrate); Buf[1] = (uint8_t) (linecoding.bitrate >> 8); Buf[2] = (uint8_t) (linecoding.bitrate >> 16); Buf[3] = (uint8_t) (linecoding.bitrate >> 24); Buf[4] = linecoding.format; Buf[5] = linecoding.paritytype; Buf[6] = linecoding.datatype; break; case SET_CONTROL_LINE_STATE: /* Not needed for this driver */ break; case SEND_BREAK: /* Not needed for this driver */ break; default: break; } return USBD_OK; } /** * @brief putchar * Sends one char over the USB serial link. * @param buf: char to be sent * @retval none */ void VCP_put_char(uint8_t buf) { VCP_DataTx(&buf, 1); } void VCP_send_str(uint8_t* buf) { uint32_t i = 0; while (*(buf + i)) { i++; } VCP_DataTx(buf, i); } void VCP_send_buffer(uint8_t* buf, int len) { VCP_DataTx(buf, len); } /** * @brief VCP_DataTx * CDC received data to be send over USB IN endpoint are managed in * this function. * @param Buf: Buffer of data to be sent * @param Len: Number of data to be sent (in bytes) * @retval Result of the operation: USBD_OK if all operations are OK else VCP_FAIL */ static uint16_t VCP_DataTx(uint8_t* Buf, uint32_t Len) { uint32_t i = 0; while (i < Len) { APP_Rx_Buffer[APP_Rx_ptr_in] = *(Buf + i); APP_Rx_ptr_in++; i++; /* To avoid buffer overflow */ if (APP_Rx_ptr_in == APP_RX_DATA_SIZE) { APP_Rx_ptr_in = 0; } } return USBD_OK; } /** * @brief VCP_DataRx * Data received over USB OUT endpoint are sent over CDC interface * through this function. * * @note * This function will block any OUT packet reception on USB endpoint * until exiting this function. If you exit this function before transfer * is complete on CDC interface (ie. using DMA controller) it will result * in receiving more data while previous ones are still not sent. * * @param Buf: Buffer of data to be received * @param Len: Number of data received (in bytes) * @retval Result of the operation: USBD_OK if all operations are OK else VCP_FAIL */ #define APP_TX_BUF_SIZE 128 uint8_t APP_Tx_Buffer[APP_TX_BUF_SIZE]; uint32_t APP_tx_ptr_head; uint32_t APP_tx_ptr_tail; static uint16_t VCP_DataRx(uint8_t* Buf, uint32_t Len) { uint32_t i; for (i = 0; i < Len; i++) { APP_Tx_Buffer[APP_tx_ptr_head] = *(Buf + i); APP_tx_ptr_head++; if (APP_tx_ptr_head == APP_TX_BUF_SIZE) APP_tx_ptr_head = 0; if (APP_tx_ptr_head == APP_tx_ptr_tail) return USBD_FAIL; } return USBD_OK; } int VCP_get_char(uint8_t *buf) { if (APP_tx_ptr_head == APP_tx_ptr_tail) return 0; *buf = APP_Tx_Buffer[APP_tx_ptr_tail]; APP_tx_ptr_tail++; if (APP_tx_ptr_tail == APP_TX_BUF_SIZE) APP_tx_ptr_tail = 0; return 1; } int VCP_get_string(uint8_t *buf) { if (APP_tx_ptr_head == APP_tx_ptr_tail) return 0; while (!APP_Tx_Buffer[APP_tx_ptr_tail] || APP_Tx_Buffer[APP_tx_ptr_tail] == '\n' || APP_Tx_Buffer[APP_tx_ptr_tail] == '\r') { APP_tx_ptr_tail++; if (APP_tx_ptr_tail == APP_TX_BUF_SIZE) APP_tx_ptr_tail = 0; if (APP_tx_ptr_head == APP_tx_ptr_tail) return 0; } int i = 0; do { *(buf + i) = APP_Tx_Buffer[i + APP_tx_ptr_tail]; i++; if ((APP_tx_ptr_tail + i) == APP_TX_BUF_SIZE) i = -APP_tx_ptr_tail; if (APP_tx_ptr_head == (APP_tx_ptr_tail + i)) return 0; } while (APP_Tx_Buffer[APP_tx_ptr_tail + i] && APP_Tx_Buffer[APP_tx_ptr_tail + i] != '\n' && APP_Tx_Buffer[APP_tx_ptr_tail + i] != '\r'); *(buf + i) = 0; APP_tx_ptr_tail += i; if (APP_tx_ptr_tail >= APP_TX_BUF_SIZE) APP_tx_ptr_tail -= APP_TX_BUF_SIZE; return i; } /** * @brief EVAL_COM_IRQHandler * * @param None. * @retval None. */ void EVAL_COM_IRQHandler(void) { } /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_lib/cdc/usbd_cdc_vcp.h000066400000000000000000000051251445607075400205770ustar00rootroot00000000000000/** ****************************************************************************** * @file usbd_cdc_vcp.h * @author MCD Application Team * @version V1.0.0 * @date 22-July-2011 * @brief Header for usbd_cdc_vcp.c file. ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __USBD_CDC_VCP_H #define __USBD_CDC_VCP_H /* Includes ------------------------------------------------------------------*/ #include "stm32f4xx_conf.h" #include "usbd_cdc_core.h" #include "usbd_conf.h" #include /* Exported typef ------------------------------------------------------------*/ /* The following structures groups all needed parameters to be configured for the ComPort. These parameters can modified on the fly by the host through CDC class command class requests. */ typedef struct { uint32_t bitrate; uint8_t format; uint8_t paritytype; uint8_t datatype; }LINE_CODING; /* Exported constants --------------------------------------------------------*/ /* The following define is used to route the USART IRQ handler to be used. The IRQ handler function is implemented in the usbd_cdc_vcp.c file. */ #ifdef USE_STM322xG_EVAL #define EVAL_COM_IRQHandler USART3_IRQHandler #elif defined(USE_STM3210C_EVAL) #define EVAL_COM_IRQHandler USART2_IRQHandler #endif /* USE_STM322xG_EVAL */ void VCP_put_char(uint8_t buf); void VCP_send_str(uint8_t* buf); int VCP_get_char(uint8_t *buf); int VCP_get_string(uint8_t *buf); void VCP_send_buffer(uint8_t* buf, int len); #define DEFAULT_CONFIG 0 #define OTHER_CONFIG 1 /* Exported macro ------------------------------------------------------------*/ /* Exported functions ------------------------------------------------------- */ #endif /* __USBD_CDC_VCP_H */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_lib/core/000077500000000000000000000000001445607075400162045ustar00rootroot00000000000000codec2-1.2.0/stm32/usb_lib/core/usbd_core.c000066400000000000000000000246241445607075400203250ustar00rootroot00000000000000/** ****************************************************************************** * @file usbd_core.c * @author MCD Application Team * @version V1.0.0 * @date 22-July-2011 * @brief This file provides all the USBD core functions. ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include "usbd_core.h" #include "usbd_req.h" #include "usbd_ioreq.h" #include "usb_dcd_int.h" #include "usb_bsp.h" /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY * @{ */ /** @defgroup USBD_CORE * @brief usbd core module * @{ */ /** @defgroup USBD_CORE_Private_TypesDefinitions * @{ */ /** * @} */ /** @defgroup USBD_CORE_Private_Defines * @{ */ /** * @} */ /** @defgroup USBD_CORE_Private_Macros * @{ */ /** * @} */ /** @defgroup USBD_CORE_Private_FunctionPrototypes * @{ */ static uint8_t USBD_SetupStage(USB_OTG_CORE_HANDLE *pdev); static uint8_t USBD_DataOutStage(USB_OTG_CORE_HANDLE *pdev , uint8_t epnum); static uint8_t USBD_DataInStage(USB_OTG_CORE_HANDLE *pdev , uint8_t epnum); static uint8_t USBD_SOF(USB_OTG_CORE_HANDLE *pdev); static uint8_t USBD_Reset(USB_OTG_CORE_HANDLE *pdev); static uint8_t USBD_Suspend(USB_OTG_CORE_HANDLE *pdev); static uint8_t USBD_Resume(USB_OTG_CORE_HANDLE *pdev); #ifdef VBUS_SENSING_ENABLED static uint8_t USBD_DevConnected(USB_OTG_CORE_HANDLE *pdev); static uint8_t USBD_DevDisconnected(USB_OTG_CORE_HANDLE *pdev); #endif static uint8_t USBD_IsoINIncomplete(USB_OTG_CORE_HANDLE *pdev); static uint8_t USBD_IsoOUTIncomplete(USB_OTG_CORE_HANDLE *pdev); /** * @} */ /** @defgroup USBD_CORE_Private_Variables * @{ */ USBD_DCD_INT_cb_TypeDef USBD_DCD_INT_cb = { USBD_DataOutStage, USBD_DataInStage, USBD_SetupStage, USBD_SOF, USBD_Reset, USBD_Suspend, USBD_Resume, USBD_IsoINIncomplete, USBD_IsoOUTIncomplete, #ifdef VBUS_SENSING_ENABLED USBD_DevConnected, USBD_DevDisconnected, #endif }; USBD_DCD_INT_cb_TypeDef *USBD_DCD_INT_fops = &USBD_DCD_INT_cb; /** * @} */ /** @defgroup USBD_CORE_Private_Functions * @{ */ /** * @brief USBD_Init * Initializes the device stack and load the class driver * @param pdev: device instance * @param core_address: USB OTG core ID * @param class_cb: Class callback structure address * @param usr_cb: User callback structure address * @retval None */ void USBD_Init(USB_OTG_CORE_HANDLE *pdev, USB_OTG_CORE_ID_TypeDef coreID, USBD_DEVICE *pDevice, USBD_Class_cb_TypeDef *class_cb, USBD_Usr_cb_TypeDef *usr_cb) { /* Hardware Init */ USB_OTG_BSP_Init(pdev); USBD_DeInit(pdev); /*Register class and user callbacks */ pdev->dev.class_cb = class_cb; pdev->dev.usr_cb = usr_cb; pdev->dev.usr_device = pDevice; /* set USB OTG core params */ DCD_Init(pdev , coreID); /* Upon Init call usr callback */ pdev->dev.usr_cb->Init(); /* Enable Interrupts */ USB_OTG_BSP_EnableInterrupt(pdev); } /** * @brief USBD_DeInit * Re-Initialize th deviuce library * @param pdev: device instance * @retval status: status */ USBD_Status USBD_DeInit(USB_OTG_CORE_HANDLE *pdev) { /* Software Init */ return USBD_OK; } /** * @brief USBD_SetupStage * Handle the setup stage * @param pdev: device instance * @retval status */ static uint8_t USBD_SetupStage(USB_OTG_CORE_HANDLE *pdev) { USB_SETUP_REQ req; USBD_ParseSetupRequest(pdev , &req); switch (req.bmRequest & 0x1F) { case USB_REQ_RECIPIENT_DEVICE: USBD_StdDevReq (pdev, &req); break; case USB_REQ_RECIPIENT_INTERFACE: USBD_StdItfReq(pdev, &req); break; case USB_REQ_RECIPIENT_ENDPOINT: USBD_StdEPReq(pdev, &req); break; default: DCD_EP_Stall(pdev , req.bmRequest & 0x80); break; } return USBD_OK; } /** * @brief USBD_DataOutStage * Handle data out stage * @param pdev: device instance * @param epnum: endpoint index * @retval status */ static uint8_t USBD_DataOutStage(USB_OTG_CORE_HANDLE *pdev , uint8_t epnum) { USB_OTG_EP *ep; if(epnum == 0) { ep = &pdev->dev.out_ep[0]; if ( pdev->dev.device_state == USB_OTG_EP0_DATA_OUT) { if(ep->rem_data_len > ep->maxpacket) { ep->rem_data_len -= ep->maxpacket; if(pdev->cfg.dma_enable == 1) { /* in slave mode this, is handled by the RxSTSQLvl ISR */ ep->xfer_buff += ep->maxpacket; } USBD_CtlContinueRx (pdev, ep->xfer_buff, MIN(ep->rem_data_len ,ep->maxpacket)); } else { if((pdev->dev.class_cb->EP0_RxReady != NULL)&& (pdev->dev.device_status == USB_OTG_CONFIGURED)) { pdev->dev.class_cb->EP0_RxReady(pdev); } USBD_CtlSendStatus(pdev); } } } else if((pdev->dev.class_cb->DataOut != NULL)&& (pdev->dev.device_status == USB_OTG_CONFIGURED)) { pdev->dev.class_cb->DataOut(pdev, epnum); } return USBD_OK; } /** * @brief USBD_DataInStage * Handle data in stage * @param pdev: device instance * @param epnum: endpoint index * @retval status */ static uint8_t USBD_DataInStage(USB_OTG_CORE_HANDLE *pdev , uint8_t epnum) { USB_OTG_EP *ep; if(epnum == 0) { ep = &pdev->dev.in_ep[0]; if ( pdev->dev.device_state == USB_OTG_EP0_DATA_IN) { if(ep->rem_data_len > ep->maxpacket) { ep->rem_data_len -= ep->maxpacket; if(pdev->cfg.dma_enable == 1) { /* in slave mode this, is handled by the TxFifoEmpty ISR */ ep->xfer_buff += ep->maxpacket; } USBD_CtlContinueSendData (pdev, ep->xfer_buff, ep->rem_data_len); } else { /* last packet is MPS multiple, so send ZLP packet */ if((ep->total_data_len % ep->maxpacket == 0) && (ep->total_data_len >= ep->maxpacket) && (ep->total_data_len < ep->ctl_data_len )) { USBD_CtlContinueSendData(pdev , NULL, 0); ep->ctl_data_len = 0; } else { if((pdev->dev.class_cb->EP0_TxSent != NULL)&& (pdev->dev.device_status == USB_OTG_CONFIGURED)) { pdev->dev.class_cb->EP0_TxSent(pdev); } USBD_CtlReceiveStatus(pdev); } } } } else if((pdev->dev.class_cb->DataIn != NULL)&& (pdev->dev.device_status == USB_OTG_CONFIGURED)) { pdev->dev.class_cb->DataIn(pdev, epnum); } return USBD_OK; } /** * @brief USBD_Reset * Handle Reset event * @param pdev: device instance * @retval status */ static uint8_t USBD_Reset(USB_OTG_CORE_HANDLE *pdev) { /* Open EP0 OUT */ DCD_EP_Open(pdev, 0x00, USB_OTG_MAX_EP0_SIZE, EP_TYPE_CTRL); /* Open EP0 IN */ DCD_EP_Open(pdev, 0x80, USB_OTG_MAX_EP0_SIZE, EP_TYPE_CTRL); /* Upon Reset call usr call back */ pdev->dev.device_status = USB_OTG_DEFAULT; pdev->dev.usr_cb->DeviceReset(pdev->cfg.speed); return USBD_OK; } /** * @brief USBD_Resume * Handle Resume event * @param pdev: device instance * @retval status */ static uint8_t USBD_Resume(USB_OTG_CORE_HANDLE *pdev) { /* Upon Resume call usr call back */ pdev->dev.usr_cb->DeviceResumed(); pdev->dev.device_status = USB_OTG_CONFIGURED; return USBD_OK; } /** * @brief USBD_Suspend * Handle Suspend event * @param pdev: device instance * @retval status */ static uint8_t USBD_Suspend(USB_OTG_CORE_HANDLE *pdev) { pdev->dev.device_status = USB_OTG_SUSPENDED; /* Upon Resume call usr call back */ pdev->dev.usr_cb->DeviceSuspended(); return USBD_OK; } /** * @brief USBD_SOF * Handle SOF event * @param pdev: device instance * @retval status */ static uint8_t USBD_SOF(USB_OTG_CORE_HANDLE *pdev) { if(pdev->dev.class_cb->SOF) { pdev->dev.class_cb->SOF(pdev); } return USBD_OK; } /** * @brief USBD_SetCfg * Configure device and start the interface * @param pdev: device instance * @param cfgidx: configuration index * @retval status */ USBD_Status USBD_SetCfg(USB_OTG_CORE_HANDLE *pdev, uint8_t cfgidx) { pdev->dev.class_cb->Init(pdev, cfgidx); /* Upon set config call usr call back */ pdev->dev.usr_cb->DeviceConfigured(); return USBD_OK; } /** * @brief USBD_ClrCfg * Clear current configuration * @param pdev: device instance * @param cfgidx: configuration index * @retval status: USBD_Status */ USBD_Status USBD_ClrCfg(USB_OTG_CORE_HANDLE *pdev, uint8_t cfgidx) { pdev->dev.class_cb->DeInit(pdev, cfgidx); return USBD_OK; } /** * @brief USBD_IsoINIncomplete * Handle iso in incomplete event * @param pdev: device instance * @retval status */ static uint8_t USBD_IsoINIncomplete(USB_OTG_CORE_HANDLE *pdev) { pdev->dev.class_cb->IsoINIncomplete(pdev); return USBD_OK; } /** * @brief USBD_IsoOUTIncomplete * Handle iso out incomplete event * @param pdev: device instance * @retval status */ static uint8_t USBD_IsoOUTIncomplete(USB_OTG_CORE_HANDLE *pdev) { pdev->dev.class_cb->IsoOUTIncomplete(pdev); return USBD_OK; } #ifdef VBUS_SENSING_ENABLED /** * @brief USBD_DevConnected * Handle device connection event * @param pdev: device instance * @retval status */ static uint8_t USBD_DevConnected(USB_OTG_CORE_HANDLE *pdev) { pdev->dev.usr_cb->DeviceConnected(); return USBD_OK; } /** * @brief USBD_DevDisconnected * Handle device disconnection event * @param pdev: device instance * @retval status */ static uint8_t USBD_DevDisconnected(USB_OTG_CORE_HANDLE *pdev) { pdev->dev.usr_cb->DeviceDisconnected(); pdev->dev.class_cb->DeInit(pdev, 0); return USBD_OK; } #endif /** * @} */ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_lib/core/usbd_core.h000066400000000000000000000045361445607075400203320ustar00rootroot00000000000000/** ****************************************************************************** * @file usbd_core.h * @author MCD Application Team * @version V1.0.0 * @date 22-July-2011 * @brief Header file for usbd_core.c ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __USBD_CORE_H #define __USBD_CORE_H /* Includes ------------------------------------------------------------------*/ #include "usb_dcd.h" #include "usbd_def.h" #include "usbd_conf.h" /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY * @{ */ /** @defgroup USBD_CORE * @brief This file is the Header file for usbd_core.c file * @{ */ /** @defgroup USBD_CORE_Exported_Defines * @{ */ typedef enum { USBD_OK = 0, USBD_BUSY, USBD_FAIL, }USBD_Status; /** * @} */ /** @defgroup USBD_CORE_Exported_TypesDefinitions * @{ */ /** * @} */ /** @defgroup USBD_CORE_Exported_Macros * @{ */ /** * @} */ /** @defgroup USBD_CORE_Exported_Variables * @{ */ /** * @} */ /** @defgroup USBD_CORE_Exported_FunctionsPrototype * @{ */ void USBD_Init(USB_OTG_CORE_HANDLE *pdev, USB_OTG_CORE_ID_TypeDef coreID, USBD_DEVICE *pDevice, USBD_Class_cb_TypeDef *class_cb, USBD_Usr_cb_TypeDef *usr_cb); USBD_Status USBD_DeInit(USB_OTG_CORE_HANDLE *pdev); USBD_Status USBD_ClrCfg(USB_OTG_CORE_HANDLE *pdev, uint8_t cfgidx); USBD_Status USBD_SetCfg(USB_OTG_CORE_HANDLE *pdev, uint8_t cfgidx); /** * @} */ #endif /* __USBD_CORE_H */ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_lib/core/usbd_def.h000066400000000000000000000112531445607075400201320ustar00rootroot00000000000000/** ****************************************************************************** * @file usbd_def.h * @author MCD Application Team * @version V1.0.0 * @date 22-July-2011 * @brief general defines for the usb device library ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __USBD_DEF_H #define __USBD_DEF_H /* Includes ------------------------------------------------------------------*/ #include "usbd_conf.h" /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY * @{ */ /** @defgroup USB_DEF * @brief general defines for the usb device library file * @{ */ /** @defgroup USB_DEF_Exported_Defines * @{ */ #ifndef NULL #define NULL 0 #endif #define USB_LEN_DEV_QUALIFIER_DESC 0x0A #define USB_LEN_DEV_DESC 0x12 #define USB_LEN_CFG_DESC 0x09 #define USB_LEN_IF_DESC 0x09 #define USB_LEN_EP_DESC 0x07 #define USB_LEN_OTG_DESC 0x03 #define USBD_IDX_LANGID_STR 0x00 #define USBD_IDX_MFC_STR 0x01 #define USBD_IDX_PRODUCT_STR 0x02 #define USBD_IDX_SERIAL_STR 0x03 #define USBD_IDX_CONFIG_STR 0x04 #define USBD_IDX_INTERFACE_STR 0x05 #define USB_REQ_TYPE_STANDARD 0x00 #define USB_REQ_TYPE_CLASS 0x20 #define USB_REQ_TYPE_VENDOR 0x40 #define USB_REQ_TYPE_MASK 0x60 #define USB_REQ_RECIPIENT_DEVICE 0x00 #define USB_REQ_RECIPIENT_INTERFACE 0x01 #define USB_REQ_RECIPIENT_ENDPOINT 0x02 #define USB_REQ_RECIPIENT_MASK 0x03 #define USB_REQ_GET_STATUS 0x00 #define USB_REQ_CLEAR_FEATURE 0x01 #define USB_REQ_SET_FEATURE 0x03 #define USB_REQ_SET_ADDRESS 0x05 #define USB_REQ_GET_DESCRIPTOR 0x06 #define USB_REQ_SET_DESCRIPTOR 0x07 #define USB_REQ_GET_CONFIGURATION 0x08 #define USB_REQ_SET_CONFIGURATION 0x09 #define USB_REQ_GET_INTERFACE 0x0A #define USB_REQ_SET_INTERFACE 0x0B #define USB_REQ_SYNCH_FRAME 0x0C #define USB_DESC_TYPE_DEVICE 1 #define USB_DESC_TYPE_CONFIGURATION 2 #define USB_DESC_TYPE_STRING 3 #define USB_DESC_TYPE_INTERFACE 4 #define USB_DESC_TYPE_ENDPOINT 5 #define USB_DESC_TYPE_DEVICE_QUALIFIER 6 #define USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION 7 #define USB_CONFIG_REMOTE_WAKEUP 2 #define USB_CONFIG_SELF_POWERED 1 #define USB_FEATURE_EP_HALT 0 #define USB_FEATURE_REMOTE_WAKEUP 1 #define USB_FEATURE_TEST_MODE 2 /** * @} */ /** @defgroup USBD_DEF_Exported_TypesDefinitions * @{ */ /** * @} */ /** @defgroup USBD_DEF_Exported_Macros * @{ */ #define SWAPBYTE(addr) (((uint16_t)(*((uint8_t *)(addr)))) + \ (((uint16_t)(*(((uint8_t *)(addr)) + 1))) << 8)) #define LOBYTE(x) ((uint8_t)(x & 0x00FF)) #define HIBYTE(x) ((uint8_t)((x & 0xFF00) >>8)) /** * @} */ /** @defgroup USBD_DEF_Exported_Variables * @{ */ /** * @} */ /** @defgroup USBD_DEF_Exported_FunctionsPrototype * @{ */ /** * @} */ #endif /* __USBD_DEF_H */ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_lib/core/usbd_ioreq.c000066400000000000000000000121271445607075400205070ustar00rootroot00000000000000/** ****************************************************************************** * @file usbd_ioreq.c * @author MCD Application Team * @version V1.0.0 * @date 22-July-2011 * @brief This file provides the IO requests APIs for control endpoints. ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include "usbd_ioreq.h" /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY * @{ */ /** @defgroup USBD_IOREQ * @brief control I/O requests module * @{ */ /** @defgroup USBD_IOREQ_Private_TypesDefinitions * @{ */ /** * @} */ /** @defgroup USBD_IOREQ_Private_Defines * @{ */ /** * @} */ /** @defgroup USBD_IOREQ_Private_Macros * @{ */ /** * @} */ /** @defgroup USBD_IOREQ_Private_Variables * @{ */ /** * @} */ /** @defgroup USBD_IOREQ_Private_FunctionPrototypes * @{ */ /** * @} */ /** @defgroup USBD_IOREQ_Private_Functions * @{ */ /** * @brief USBD_CtlSendData * send data on the ctl pipe * @param pdev: device instance * @param buff: pointer to data buffer * @param len: length of data to be sent * @retval status */ USBD_Status USBD_CtlSendData (USB_OTG_CORE_HANDLE *pdev, uint8_t *pbuf, uint16_t len) { USBD_Status ret = USBD_OK; pdev->dev.in_ep[0].total_data_len = len; pdev->dev.in_ep[0].rem_data_len = len; pdev->dev.device_state = USB_OTG_EP0_DATA_IN; DCD_EP_Tx (pdev, 0, pbuf, len); return ret; } /** * @brief USBD_CtlContinueSendData * continue sending data on the ctl pipe * @param pdev: device instance * @param buff: pointer to data buffer * @param len: length of data to be sent * @retval status */ USBD_Status USBD_CtlContinueSendData (USB_OTG_CORE_HANDLE *pdev, uint8_t *pbuf, uint16_t len) { USBD_Status ret = USBD_OK; DCD_EP_Tx (pdev, 0, pbuf, len); return ret; } /** * @brief USBD_CtlPrepareRx * receive data on the ctl pipe * @param pdev: USB OTG device instance * @param buff: pointer to data buffer * @param len: length of data to be received * @retval status */ USBD_Status USBD_CtlPrepareRx (USB_OTG_CORE_HANDLE *pdev, uint8_t *pbuf, uint16_t len) { USBD_Status ret = USBD_OK; pdev->dev.out_ep[0].total_data_len = len; pdev->dev.out_ep[0].rem_data_len = len; pdev->dev.device_state = USB_OTG_EP0_DATA_OUT; DCD_EP_PrepareRx (pdev, 0, pbuf, len); return ret; } /** * @brief USBD_CtlContinueRx * continue receive data on the ctl pipe * @param pdev: USB OTG device instance * @param buff: pointer to data buffer * @param len: length of data to be received * @retval status */ USBD_Status USBD_CtlContinueRx (USB_OTG_CORE_HANDLE *pdev, uint8_t *pbuf, uint16_t len) { USBD_Status ret = USBD_OK; DCD_EP_PrepareRx (pdev, 0, pbuf, len); return ret; } /** * @brief USBD_CtlSendStatus * send zero lzngth packet on the ctl pipe * @param pdev: USB OTG device instance * @retval status */ USBD_Status USBD_CtlSendStatus (USB_OTG_CORE_HANDLE *pdev) { USBD_Status ret = USBD_OK; pdev->dev.device_state = USB_OTG_EP0_STATUS_IN; DCD_EP_Tx (pdev, 0, NULL, 0); USB_OTG_EP0_OutStart(pdev); return ret; } /** * @brief USBD_CtlReceiveStatus * receive zero lzngth packet on the ctl pipe * @param pdev: USB OTG device instance * @retval status */ USBD_Status USBD_CtlReceiveStatus (USB_OTG_CORE_HANDLE *pdev) { USBD_Status ret = USBD_OK; pdev->dev.device_state = USB_OTG_EP0_STATUS_OUT; DCD_EP_PrepareRx ( pdev, 0, NULL, 0); USB_OTG_EP0_OutStart(pdev); return ret; } /** * @brief USBD_GetRxCount * returns the received data length * @param pdev: USB OTG device instance * epnum: endpoint index * @retval Rx Data blength */ uint16_t USBD_GetRxCount (USB_OTG_CORE_HANDLE *pdev , uint8_t epnum) { return pdev->dev.out_ep[epnum].xfer_count; } /** * @} */ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_lib/core/usbd_ioreq.h000066400000000000000000000052561445607075400205210ustar00rootroot00000000000000/** ****************************************************************************** * @file usbd_ioreq.h * @author MCD Application Team * @version V1.0.0 * @date 22-July-2011 * @brief header file for the usbd_ioreq.c file ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __USBD_IOREQ_H_ #define __USBD_IOREQ_H_ /* Includes ------------------------------------------------------------------*/ #include "usbd_def.h" #include "usbd_core.h" /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY * @{ */ /** @defgroup USBD_IOREQ * @brief header file for the usbd_ioreq.c file * @{ */ /** @defgroup USBD_IOREQ_Exported_Defines * @{ */ /** * @} */ /** @defgroup USBD_IOREQ_Exported_Types * @{ */ /** * @} */ /** @defgroup USBD_IOREQ_Exported_Macros * @{ */ /** * @} */ /** @defgroup USBD_IOREQ_Exported_Variables * @{ */ /** * @} */ /** @defgroup USBD_IOREQ_Exported_FunctionsPrototype * @{ */ USBD_Status USBD_CtlSendData (USB_OTG_CORE_HANDLE *pdev, uint8_t *buf, uint16_t len); USBD_Status USBD_CtlContinueSendData (USB_OTG_CORE_HANDLE *pdev, uint8_t *pbuf, uint16_t len); USBD_Status USBD_CtlPrepareRx (USB_OTG_CORE_HANDLE *pdev, uint8_t *pbuf, uint16_t len); USBD_Status USBD_CtlContinueRx (USB_OTG_CORE_HANDLE *pdev, uint8_t *pbuf, uint16_t len); USBD_Status USBD_CtlSendStatus (USB_OTG_CORE_HANDLE *pdev); USBD_Status USBD_CtlReceiveStatus (USB_OTG_CORE_HANDLE *pdev); uint16_t USBD_GetRxCount (USB_OTG_CORE_HANDLE *pdev , uint8_t epnum); /** * @} */ #endif /* __USBD_IOREQ_H_ */ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_lib/core/usbd_req.c000066400000000000000000000442021445607075400201560ustar00rootroot00000000000000/** ****************************************************************************** * @file usbd_req.c * @author MCD Application Team * @version V1.0.0 * @date 22-July-2011 * @brief This file provides the standard USB requests following chapter 9. ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include "usbd_req.h" #include "usbd_ioreq.h" #include "usbd_desc.h" /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY * @{ */ /** @defgroup USBD_REQ * @brief USB standard requests module * @{ */ /** @defgroup USBD_REQ_Private_TypesDefinitions * @{ */ /** * @} */ /** @defgroup USBD_REQ_Private_Defines * @{ */ /** * @} */ /** @defgroup USBD_REQ_Private_Macros * @{ */ /** * @} */ /** @defgroup USBD_REQ_Private_Variables * @{ */ #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED #if defined ( __ICCARM__ ) /*!< IAR Compiler */ #pragma data_alignment=4 #endif #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ __ALIGN_BEGIN uint32_t USBD_ep_status __ALIGN_END = 0; #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED #if defined ( __ICCARM__ ) /*!< IAR Compiler */ #pragma data_alignment=4 #endif #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ __ALIGN_BEGIN uint32_t USBD_default_cfg __ALIGN_END = 0; #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED #if defined ( __ICCARM__ ) /*!< IAR Compiler */ #pragma data_alignment=4 #endif #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ __ALIGN_BEGIN uint32_t USBD_cfg_status __ALIGN_END = 0; #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED #if defined ( __ICCARM__ ) /*!< IAR Compiler */ #pragma data_alignment=4 #endif #endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */ __ALIGN_BEGIN uint8_t USBD_StrDesc[USB_MAX_STR_DESC_SIZ] __ALIGN_END ; /** * @} */ /** @defgroup USBD_REQ_Private_FunctionPrototypes * @{ */ static void USBD_GetDescriptor(USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req); static void USBD_SetAddress(USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req); static void USBD_SetConfig(USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req); static void USBD_GetConfig(USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req); static void USBD_GetStatus(USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req); static void USBD_SetFeature(USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req); static void USBD_ClrFeature(USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req); static uint8_t USBD_GetLen(uint8_t *buf); /** * @} */ /** @defgroup USBD_REQ_Private_Functions * @{ */ /** * @brief USBD_StdDevReq * Handle standard usb device requests * @param pdev: device instance * @param req: usb request * @retval status */ USBD_Status USBD_StdDevReq (USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req) { USBD_Status ret = USBD_OK; switch (req->bRequest) { case USB_REQ_GET_DESCRIPTOR: USBD_GetDescriptor (pdev, req) ; break; case USB_REQ_SET_ADDRESS: USBD_SetAddress(pdev, req); break; case USB_REQ_SET_CONFIGURATION: USBD_SetConfig (pdev , req); break; case USB_REQ_GET_CONFIGURATION: USBD_GetConfig (pdev , req); break; case USB_REQ_GET_STATUS: USBD_GetStatus (pdev , req); break; case USB_REQ_SET_FEATURE: USBD_SetFeature (pdev , req); break; case USB_REQ_CLEAR_FEATURE: USBD_ClrFeature (pdev , req); break; default: USBD_CtlError(pdev , req); break; } return ret; } /** * @brief USBD_StdItfReq * Handle standard usb interface requests * @param pdev: USB OTG device instance * @param req: usb request * @retval status */ USBD_Status USBD_StdItfReq (USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req) { USBD_Status ret = USBD_OK; switch (pdev->dev.device_status) { case USB_OTG_CONFIGURED: if (LOBYTE(req->wIndex) <= USBD_ITF_MAX_NUM) { pdev->dev.class_cb->Setup (pdev, req); if((req->wLength == 0)&& (ret == USBD_OK)) { USBD_CtlSendStatus(pdev); } } else { USBD_CtlError(pdev , req); } break; default: USBD_CtlError(pdev , req); break; } return ret; } /** * @brief USBD_StdEPReq * Handle standard usb endpoint requests * @param pdev: USB OTG device instance * @param req: usb request * @retval status */ USBD_Status USBD_StdEPReq (USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req) { uint8_t ep_addr; USBD_Status ret = USBD_OK; ep_addr = LOBYTE(req->wIndex); switch (req->bRequest) { case USB_REQ_SET_FEATURE : switch (pdev->dev.device_status) { case USB_OTG_ADDRESSED: if ((ep_addr != 0x00) && (ep_addr != 0x80)) { DCD_EP_Stall(pdev , ep_addr); } break; case USB_OTG_CONFIGURED: if (req->wValue == USB_FEATURE_EP_HALT) { if ((ep_addr != 0x00) && (ep_addr != 0x80)) { DCD_EP_Stall(pdev , ep_addr); } } pdev->dev.class_cb->Setup (pdev, req); USBD_CtlSendStatus(pdev); break; default: USBD_CtlError(pdev , req); break; } break; case USB_REQ_CLEAR_FEATURE : switch (pdev->dev.device_status) { case USB_OTG_ADDRESSED: if ((ep_addr != 0x00) && (ep_addr != 0x80)) { DCD_EP_Stall(pdev , ep_addr); } break; case USB_OTG_CONFIGURED: if (req->wValue == USB_FEATURE_EP_HALT) { if ((ep_addr != 0x00) && (ep_addr != 0x80)) { DCD_EP_ClrStall(pdev , ep_addr); pdev->dev.class_cb->Setup (pdev, req); } USBD_CtlSendStatus(pdev); } break; default: USBD_CtlError(pdev , req); break; } break; case USB_REQ_GET_STATUS: switch (pdev->dev.device_status) { case USB_OTG_ADDRESSED: if ((ep_addr != 0x00) && (ep_addr != 0x80)) { DCD_EP_Stall(pdev , ep_addr); } break; case USB_OTG_CONFIGURED: if ((ep_addr & 0x80)== 0x80) { if(pdev->dev.in_ep[ep_addr & 0x7F].is_stall) { USBD_ep_status = 0x0001; } else { USBD_ep_status = 0x0000; } } else if ((ep_addr & 0x80)== 0x00) { if(pdev->dev.out_ep[ep_addr].is_stall) { USBD_ep_status = 0x0001; } else { USBD_ep_status = 0x0000; } } USBD_CtlSendData (pdev, (uint8_t *)&USBD_ep_status, 2); break; default: USBD_CtlError(pdev , req); break; } break; default: break; } return ret; } /** * @brief USBD_GetDescriptor * Handle Get Descriptor requests * @param pdev: device instance * @param req: usb request * @retval status */ static void USBD_GetDescriptor(USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req) { uint16_t len; uint8_t *pbuf; switch (req->wValue >> 8) { case USB_DESC_TYPE_DEVICE: pbuf = pdev->dev.usr_device->GetDeviceDescriptor(pdev->cfg.speed, &len); if ((req->wLength == 64) ||( pdev->dev.device_status == USB_OTG_DEFAULT)) { len = 8; } break; case USB_DESC_TYPE_CONFIGURATION: pbuf = (uint8_t *)pdev->dev.class_cb->GetConfigDescriptor(pdev->cfg.speed, &len); #ifdef USB_OTG_HS_CORE if((pdev->cfg.speed == USB_OTG_SPEED_FULL )&& (pdev->cfg.phy_itface == USB_OTG_ULPI_PHY)) { pbuf = (uint8_t *)pdev->dev.class_cb->GetOtherConfigDescriptor(pdev->cfg.speed, &len); } #endif pbuf[1] = USB_DESC_TYPE_CONFIGURATION; pdev->dev.pConfig_descriptor = pbuf; break; case USB_DESC_TYPE_STRING: switch ((uint8_t)(req->wValue)) { case USBD_IDX_LANGID_STR: pbuf = pdev->dev.usr_device->GetLangIDStrDescriptor(pdev->cfg.speed, &len); break; case USBD_IDX_MFC_STR: pbuf = pdev->dev.usr_device->GetManufacturerStrDescriptor(pdev->cfg.speed, &len); break; case USBD_IDX_PRODUCT_STR: pbuf = pdev->dev.usr_device->GetProductStrDescriptor(pdev->cfg.speed, &len); break; case USBD_IDX_SERIAL_STR: pbuf = pdev->dev.usr_device->GetSerialStrDescriptor(pdev->cfg.speed, &len); break; case USBD_IDX_CONFIG_STR: pbuf = pdev->dev.usr_device->GetConfigurationStrDescriptor(pdev->cfg.speed, &len); break; case USBD_IDX_INTERFACE_STR: pbuf = pdev->dev.usr_device->GetInterfaceStrDescriptor(pdev->cfg.speed, &len); break; default: #ifdef USB_SUPPORT_USER_STRING_DESC pbuf = pdev->dev.class_cb->GetUsrStrDescriptor(pdev->cfg.speed, (req->wValue) , &len); break; #else USBD_CtlError(pdev , req); return; #endif /* USBD_CtlError(pdev , req); */ } break; case USB_DESC_TYPE_DEVICE_QUALIFIER: #ifdef USB_OTG_HS_CORE if(pdev->cfg.speed == USB_OTG_SPEED_HIGH ) { pbuf = (uint8_t *)pdev->dev.class_cb->GetConfigDescriptor(pdev->cfg.speed, &len); USBD_DeviceQualifierDesc[4]= pbuf[14]; USBD_DeviceQualifierDesc[5]= pbuf[15]; USBD_DeviceQualifierDesc[6]= pbuf[16]; pbuf = USBD_DeviceQualifierDesc; len = USB_LEN_DEV_QUALIFIER_DESC; break; } else { USBD_CtlError(pdev , req); return; } #else USBD_CtlError(pdev , req); return; #endif case USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION: #ifdef USB_OTG_HS_CORE if(pdev->cfg.speed == USB_OTG_SPEED_HIGH ) { pbuf = (uint8_t *)pdev->dev.class_cb->GetOtherConfigDescriptor(pdev->cfg.speed, &len); pbuf[1] = USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION; break; } else { USBD_CtlError(pdev , req); return; } #else USBD_CtlError(pdev , req); return; #endif default: USBD_CtlError(pdev , req); return; } if((len != 0)&& (req->wLength != 0)) { len = MIN(len , req->wLength); USBD_CtlSendData (pdev, pbuf, len); } } /** * @brief USBD_SetAddress * Set device address * @param pdev: device instance * @param req: usb request * @retval status */ static void USBD_SetAddress(USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req) { uint8_t dev_addr; if ((req->wIndex == 0) && (req->wLength == 0)) { dev_addr = (uint8_t)(req->wValue) & 0x7F; if (pdev->dev.device_status == USB_OTG_CONFIGURED) { USBD_CtlError(pdev , req); } else { pdev->dev.device_address = dev_addr; DCD_EP_SetAddress(pdev, dev_addr); USBD_CtlSendStatus(pdev); if (dev_addr != 0) { pdev->dev.device_status = USB_OTG_ADDRESSED; } else { pdev->dev.device_status = USB_OTG_DEFAULT; } } } else { USBD_CtlError(pdev , req); } } /** * @brief USBD_SetConfig * Handle Set device configuration request * @param pdev: device instance * @param req: usb request * @retval status */ static void USBD_SetConfig(USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req) { static uint8_t cfgidx; cfgidx = (uint8_t)(req->wValue); if (cfgidx > USBD_CFG_MAX_NUM ) { USBD_CtlError(pdev , req); } else { switch (pdev->dev.device_status) { case USB_OTG_ADDRESSED: if (cfgidx) { pdev->dev.device_config = cfgidx; pdev->dev.device_status = USB_OTG_CONFIGURED; USBD_SetCfg(pdev , cfgidx); USBD_CtlSendStatus(pdev); } else { USBD_CtlSendStatus(pdev); } break; case USB_OTG_CONFIGURED: if (cfgidx == 0) { pdev->dev.device_status = USB_OTG_ADDRESSED; pdev->dev.device_config = cfgidx; USBD_ClrCfg(pdev , cfgidx); USBD_CtlSendStatus(pdev); } else if (cfgidx != pdev->dev.device_config) { /* Clear old configuration */ USBD_ClrCfg(pdev , pdev->dev.device_config); /* set new configuration */ pdev->dev.device_config = cfgidx; USBD_SetCfg(pdev , cfgidx); USBD_CtlSendStatus(pdev); } else { USBD_CtlSendStatus(pdev); } break; default: USBD_CtlError(pdev , req); break; } } } /** * @brief USBD_GetConfig * Handle Get device configuration request * @param pdev: device instance * @param req: usb request * @retval status */ static void USBD_GetConfig(USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req) { if (req->wLength != 1) { USBD_CtlError(pdev , req); } else { switch (pdev->dev.device_status ) { case USB_OTG_ADDRESSED: USBD_CtlSendData (pdev, (uint8_t *)&USBD_default_cfg, 1); break; case USB_OTG_CONFIGURED: USBD_CtlSendData (pdev, &pdev->dev.device_config, 1); break; default: USBD_CtlError(pdev , req); break; } } } /** * @brief USBD_GetStatus * Handle Get Status request * @param pdev: device instance * @param req: usb request * @retval status */ static void USBD_GetStatus(USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req) { switch (pdev->dev.device_status) { case USB_OTG_ADDRESSED: case USB_OTG_CONFIGURED: if (pdev->dev.DevRemoteWakeup) { USBD_cfg_status = USB_CONFIG_SELF_POWERED | USB_CONFIG_REMOTE_WAKEUP; } else { USBD_cfg_status = USB_CONFIG_SELF_POWERED; } USBD_CtlSendData (pdev, (uint8_t *)&USBD_cfg_status, 1); break; default : USBD_CtlError(pdev , req); break; } } /** * @brief USBD_SetFeature * Handle Set device feature request * @param pdev: device instance * @param req: usb request * @retval status */ static void USBD_SetFeature(USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req) { USB_OTG_DCTL_TypeDef dctl; uint8_t test_mode = 0; if (req->wValue == USB_FEATURE_REMOTE_WAKEUP) { pdev->dev.DevRemoteWakeup = 1; pdev->dev.class_cb->Setup (pdev, req); USBD_CtlSendStatus(pdev); } else if ((req->wValue == USB_FEATURE_TEST_MODE) && ((req->wIndex & 0xFF) == 0)) { dctl.d32 = USB_OTG_READ_REG32(&pdev->regs.DREGS->DCTL); test_mode = req->wIndex >> 8; switch (test_mode) { case 1: // TEST_J dctl.b.tstctl = 1; break; case 2: // TEST_K dctl.b.tstctl = 2; break; case 3: // TEST_SE0_NAK dctl.b.tstctl = 3; break; case 4: // TEST_PACKET dctl.b.tstctl = 4; break; case 5: // TEST_FORCE_ENABLE dctl.b.tstctl = 5; break; } USB_OTG_WRITE_REG32(&pdev->regs.DREGS->DCTL, dctl.d32); USBD_CtlSendStatus(pdev); } } /** * @brief USBD_ClrFeature * Handle clear device feature request * @param pdev: device instance * @param req: usb request * @retval status */ static void USBD_ClrFeature(USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req) { switch (pdev->dev.device_status) { case USB_OTG_ADDRESSED: case USB_OTG_CONFIGURED: if (req->wValue == USB_FEATURE_REMOTE_WAKEUP) { pdev->dev.DevRemoteWakeup = 0; pdev->dev.class_cb->Setup (pdev, req); USBD_CtlSendStatus(pdev); } break; default : USBD_CtlError(pdev , req); break; } } /** * @brief USBD_ParseSetupRequest * Copy buffer into setup structure * @param pdev: device instance * @param req: usb request * @retval None */ void USBD_ParseSetupRequest( USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req) { req->bmRequest = *(uint8_t *) (pdev->dev.setup_packet); req->bRequest = *(uint8_t *) (pdev->dev.setup_packet + 1); req->wValue = SWAPBYTE (pdev->dev.setup_packet + 2); req->wIndex = SWAPBYTE (pdev->dev.setup_packet + 4); req->wLength = SWAPBYTE (pdev->dev.setup_packet + 6); pdev->dev.in_ep[0].ctl_data_len = req->wLength ; pdev->dev.device_state = USB_OTG_EP0_SETUP; } /** * @brief USBD_CtlError * Handle USB low level Error * @param pdev: device instance * @param req: usb request * @retval None */ void USBD_CtlError( USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req) { if((req->bmRequest & 0x80) == 0x80) { DCD_EP_Stall(pdev , 0x80); } else { if(req->wLength == 0) { DCD_EP_Stall(pdev , 0x80); } else { DCD_EP_Stall(pdev , 0); } } USB_OTG_EP0_OutStart(pdev); } /** * @brief USBD_GetString * Convert Ascii string into unicode one * @param desc : descriptor buffer * @param unicode : Formatted string buffer (unicode) * @param len : descriptor length * @retval None */ void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len) { uint8_t idx = 0; if (desc != NULL) { *len = USBD_GetLen(desc) * 2 + 2; unicode[idx++] = *len; unicode[idx++] = USB_DESC_TYPE_STRING; while (*desc != NULL) { unicode[idx++] = *desc++; unicode[idx++] = 0x00; } } } /** * @brief USBD_GetLen * return the string length * @param buf : pointer to the ascii string buffer * @retval string length */ static uint8_t USBD_GetLen(uint8_t *buf) { uint8_t len = 0; while (*buf != NULL) { len++; buf++; } return len; } /** * @} */ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_lib/core/usbd_req.h000066400000000000000000000045621445607075400201700ustar00rootroot00000000000000/** ****************************************************************************** * @file usbd_req.h * @author MCD Application Team * @version V1.0.0 * @date 22-July-2011 * @brief header file for the usbd_req.c file ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __USB_REQUEST_H_ #define __USB_REQUEST_H_ /* Includes ------------------------------------------------------------------*/ #include "usbd_def.h" #include "usbd_core.h" #include "usbd_conf.h" /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY * @{ */ /** @defgroup USBD_REQ * @brief header file for the usbd_ioreq.c file * @{ */ /** @defgroup USBD_REQ_Exported_Defines * @{ */ /** * @} */ /** @defgroup USBD_REQ_Exported_Types * @{ */ /** * @} */ /** @defgroup USBD_REQ_Exported_Macros * @{ */ /** * @} */ /** @defgroup USBD_REQ_Exported_Variables * @{ */ /** * @} */ /** @defgroup USBD_REQ_Exported_FunctionsPrototype * @{ */ USBD_Status USBD_StdDevReq (USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req); USBD_Status USBD_StdItfReq (USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req); USBD_Status USBD_StdEPReq (USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req); void USBD_ParseSetupRequest( USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req); void USBD_CtlError( USB_OTG_CORE_HANDLE *pdev, USB_SETUP_REQ *req); void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len); /** * @} */ #endif /* __USB_REQUEST_H_ */ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_lib/core/usbd_usr.h000066400000000000000000000055551445607075400202150ustar00rootroot00000000000000/** ****************************************************************************** * @file usbd_usr.h * @author MCD Application Team * @version V1.0.0 * @date 22-July-2011 * @brief Header file for usbd_usr.c ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __USBD_USR_H__ #define __USBD_USR_H__ /* Includes ------------------------------------------------------------------*/ #include "usbd_core.h" /** @addtogroup USBD_USER * @{ */ /** @addtogroup USBD_MSC_DEMO_USER_CALLBACKS * @{ */ /** @defgroup USBD_USR * @brief This file is the Header file for usbd_usr.c * @{ */ /** @defgroup USBD_USR_Exported_Types * @{ */ extern USBD_Usr_cb_TypeDef USR_cb; extern USBD_Usr_cb_TypeDef USR_FS_cb; extern USBD_Usr_cb_TypeDef USR_HS_cb; /** * @} */ /** @defgroup USBD_USR_Exported_Defines * @{ */ /** * @} */ /** @defgroup USBD_USR_Exported_Macros * @{ */ /** * @} */ /** @defgroup USBD_USR_Exported_Variables * @{ */ void USBD_USR_Init(void); void USBD_USR_DeviceReset (uint8_t speed); void USBD_USR_DeviceConfigured (void); void USBD_USR_DeviceSuspended(void); void USBD_USR_DeviceResumed(void); void USBD_USR_DeviceConnected(void); void USBD_USR_DeviceDisconnected(void); void USBD_USR_FS_Init(void); void USBD_USR_FS_DeviceReset (uint8_t speed); void USBD_USR_FS_DeviceConfigured (void); void USBD_USR_FS_DeviceSuspended(void); void USBD_USR_FS_DeviceResumed(void); void USBD_USR_FS_DeviceConnected(void); void USBD_USR_FS_DeviceDisconnected(void); void USBD_USR_HS_Init(void); void USBD_USR_HS_DeviceReset (uint8_t speed); void USBD_USR_HS_DeviceConfigured (void); void USBD_USR_HS_DeviceSuspended(void); void USBD_USR_HS_DeviceResumed(void); void USBD_USR_HS_DeviceConnected(void); void USBD_USR_HS_DeviceDisconnected(void); /** * @} */ /** @defgroup USBD_USR_Exported_FunctionsPrototype * @{ */ /** * @} */ #endif /*__USBD_USR_H__*/ /** * @} */ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_lib/otg/000077500000000000000000000000001445607075400160455ustar00rootroot00000000000000codec2-1.2.0/stm32/usb_lib/otg/usb_core.c000066400000000000000000001567641445607075400200350ustar00rootroot00000000000000/** ****************************************************************************** * @file usb_core.c * @author MCD Application Team * @version V2.0.0 * @date 22-July-2011 * @brief USB-OTG Core Layer ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include "usb_core.h" #include "usb_bsp.h" /** @addtogroup USB_OTG_DRIVER * @{ */ /** @defgroup USB_CORE * @brief This file includes the USB-OTG Core Layer * @{ */ /** @defgroup USB_CORE_Private_Defines * @{ */ /** * @} */ /** @defgroup USB_CORE_Private_TypesDefinitions * @{ */ /** * @} */ /** @defgroup USB_CORE_Private_Macros * @{ */ /** * @} */ /** @defgroup USB_CORE_Private_Variables * @{ */ /** * @} */ /** @defgroup USB_CORE_Private_FunctionPrototypes * @{ */ /** * @} */ /** @defgroup USB_CORE_Private_Functions * @{ */ /** * @brief USB_OTG_EnableCommonInt * Initializes the common interrupts, used in both device and modes * @param pdev : Selected device * @retval None */ static void USB_OTG_EnableCommonInt(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_GINTMSK_TypeDef int_mask; int_mask.d32 = 0; /* Clear any pending USB_OTG Interrupts */ #ifndef USE_OTG_MODE USB_OTG_WRITE_REG32( &pdev->regs.GREGS->GOTGINT, 0xFFFFFFFF); #endif /* Clear any pending interrupts */ USB_OTG_WRITE_REG32( &pdev->regs.GREGS->GINTSTS, 0xFFFFFFFF); /* Enable the interrupts in the INTMSK */ int_mask.b.wkupintr = 1; int_mask.b.usbsuspend = 1; #ifdef USE_OTG_MODE int_mask.b.otgintr = 1; int_mask.b.sessreqintr = 1; int_mask.b.conidstschng = 1; #endif USB_OTG_WRITE_REG32( &pdev->regs.GREGS->GINTMSK, int_mask.d32); } /** * @brief USB_OTG_CoreReset : Soft reset of the core * @param pdev : Selected device * @retval USB_OTG_STS : status */ static USB_OTG_STS USB_OTG_CoreReset(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_STS status = USB_OTG_OK; __IO USB_OTG_GRSTCTL_TypeDef greset; uint32_t count = 0; greset.d32 = 0; /* Wait for AHB master IDLE state. */ do { USB_OTG_BSP_uDelay(3); greset.d32 = USB_OTG_READ_REG32(&pdev->regs.GREGS->GRSTCTL); if (++count > 200000) { return USB_OTG_OK; } } while (greset.b.ahbidle == 0); /* Core Soft Reset */ count = 0; greset.b.csftrst = 1; USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GRSTCTL, greset.d32 ); do { greset.d32 = USB_OTG_READ_REG32(&pdev->regs.GREGS->GRSTCTL); if (++count > 200000) { break; } } while (greset.b.csftrst == 1); /* Wait for 3 PHY Clocks*/ USB_OTG_BSP_uDelay(3); return status; } /** * @brief USB_OTG_WritePacket : Writes a packet into the Tx FIFO associated * with the EP * @param pdev : Selected device * @param src : source pointer * @param ch_ep_num : end point number * @param bytes : No. of bytes * @retval USB_OTG_STS : status */ USB_OTG_STS USB_OTG_WritePacket(USB_OTG_CORE_HANDLE *pdev, uint8_t *src, uint8_t ch_ep_num, uint16_t len) { USB_OTG_STS status = USB_OTG_OK; if (pdev->cfg.dma_enable == 0) { uint32_t count32b= 0 , i= 0; __IO uint32_t *fifo; count32b = (len + 3) / 4; fifo = pdev->regs.DFIFO[ch_ep_num]; for (i = 0; i < count32b; i++, src+=4) { USB_OTG_WRITE_REG32( fifo, *((uint32_t *)src) ); } } return status; } /** * @brief USB_OTG_ReadPacket : Reads a packet from the Rx FIFO * @param pdev : Selected device * @param dest : Destination Pointer * @param bytes : No. of bytes * @retval None */ void *USB_OTG_ReadPacket(USB_OTG_CORE_HANDLE *pdev, uint8_t *dest, uint16_t len) { uint32_t i=0; uint32_t count32b = (len + 3) / 4; __IO uint32_t *fifo = pdev->regs.DFIFO[0]; for ( i = 0; i < count32b; i++, dest += 4 ) { *(uint32_t *)dest = USB_OTG_READ_REG32(fifo); } return ((void *)dest); } /** * @brief USB_OTG_SelectCore * Initialize core registers address. * @param pdev : Selected device * @param coreID : USB OTG Core ID * @retval USB_OTG_STS : status */ USB_OTG_STS USB_OTG_SelectCore(USB_OTG_CORE_HANDLE *pdev, USB_OTG_CORE_ID_TypeDef coreID) { uint32_t i , baseAddress = 0; USB_OTG_STS status = USB_OTG_OK; pdev->cfg.dma_enable = 0; /* at startup the core is in FS mode */ pdev->cfg.speed = USB_OTG_SPEED_FULL; pdev->cfg.mps = USB_OTG_FS_MAX_PACKET_SIZE ; /* initialize device cfg following its address */ if (coreID == USB_OTG_FS_CORE_ID) { baseAddress = USB_OTG_FS_BASE_ADDR; pdev->cfg.coreID = USB_OTG_FS_CORE_ID; pdev->cfg.host_channels = 8 ; pdev->cfg.dev_endpoints = 4 ; pdev->cfg.TotalFifoSize = 320; /* in 32-bits */ pdev->cfg.phy_itface = USB_OTG_EMBEDDED_PHY; #ifdef USB_OTG_FS_SOF_OUTPUT_ENABLED pdev->cfg.Sof_output = 1; #endif #ifdef USB_OTG_FS_LOW_PWR_MGMT_SUPPORT pdev->cfg.low_power = 1; #endif } else if (coreID == USB_OTG_HS_CORE_ID) { baseAddress = USB_OTG_HS_BASE_ADDR; pdev->cfg.coreID = USB_OTG_HS_CORE_ID; pdev->cfg.host_channels = 12 ; pdev->cfg.dev_endpoints = 6 ; pdev->cfg.TotalFifoSize = 1280;/* in 32-bits */ #ifdef USB_OTG_ULPI_PHY_ENABLED pdev->cfg.phy_itface = USB_OTG_ULPI_PHY; #else #ifdef USB_OTG_EMBEDDED_PHY_ENABLED pdev->cfg.phy_itface = USB_OTG_EMBEDDED_PHY; #else #ifdef USB_OTG_I2C_PHY_ENABLED pdev->cfg.phy_itface = USB_OTG_I2C_PHY; #endif #endif #endif #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED pdev->cfg.dma_enable = 1; #endif #ifdef USB_OTG_HS_SOF_OUTPUT_ENABLED pdev->cfg.Sof_output = 1; #endif #ifdef USB_OTG_HS_LOW_PWR_MGMT_SUPPORT pdev->cfg.low_power = 1; #endif } pdev->regs.GREGS = (USB_OTG_GREGS *)(baseAddress + \ USB_OTG_CORE_GLOBAL_REGS_OFFSET); pdev->regs.DREGS = (USB_OTG_DREGS *) (baseAddress + \ USB_OTG_DEV_GLOBAL_REG_OFFSET); for (i = 0; i < pdev->cfg.dev_endpoints; i++) { pdev->regs.INEP_REGS[i] = (USB_OTG_INEPREGS *) \ (baseAddress + USB_OTG_DEV_IN_EP_REG_OFFSET + \ (i * USB_OTG_EP_REG_OFFSET)); pdev->regs.OUTEP_REGS[i] = (USB_OTG_OUTEPREGS *) \ (baseAddress + USB_OTG_DEV_OUT_EP_REG_OFFSET + \ (i * USB_OTG_EP_REG_OFFSET)); } pdev->regs.HREGS = (USB_OTG_HREGS *)(baseAddress + \ USB_OTG_HOST_GLOBAL_REG_OFFSET); pdev->regs.HPRT0 = (uint32_t *)(baseAddress + USB_OTG_HOST_PORT_REGS_OFFSET); for (i = 0; i < pdev->cfg.host_channels; i++) { pdev->regs.HC_REGS[i] = (USB_OTG_HC_REGS *)(baseAddress + \ USB_OTG_HOST_CHAN_REGS_OFFSET + \ (i * USB_OTG_CHAN_REGS_OFFSET)); } for (i = 0; i < pdev->cfg.host_channels; i++) { pdev->regs.DFIFO[i] = (uint32_t *)(baseAddress + USB_OTG_DATA_FIFO_OFFSET +\ (i * USB_OTG_DATA_FIFO_SIZE)); } pdev->regs.PCGCCTL = (uint32_t *)(baseAddress + USB_OTG_PCGCCTL_OFFSET); return status; } /** * @brief USB_OTG_CoreInit * Initializes the USB_OTG controller registers and prepares the core * device mode or host mode operation. * @param pdev : Selected device * @retval USB_OTG_STS : status */ USB_OTG_STS USB_OTG_CoreInit(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_STS status = USB_OTG_OK; USB_OTG_GUSBCFG_TypeDef usbcfg; USB_OTG_GCCFG_TypeDef gccfg; USB_OTG_GI2CCTL_TypeDef i2cctl; USB_OTG_GAHBCFG_TypeDef ahbcfg; usbcfg.d32 = 0; gccfg.d32 = 0; ahbcfg.d32 = 0; if (pdev->cfg.phy_itface == USB_OTG_ULPI_PHY) { gccfg.d32 = USB_OTG_READ_REG32(&pdev->regs.GREGS->GCCFG); gccfg.b.pwdn = 0; if (pdev->cfg.Sof_output) { gccfg.b.sofouten = 1; } USB_OTG_WRITE_REG32 (&pdev->regs.GREGS->GCCFG, gccfg.d32); /* Init The ULPI Interface */ usbcfg.d32 = 0; usbcfg.d32 = USB_OTG_READ_REG32(&pdev->regs.GREGS->GUSBCFG); usbcfg.b.physel = 0; /* HS Interface */ #ifdef USB_OTG_INTERNAL_VBUS_ENABLED usbcfg.b.ulpi_ext_vbus_drv = 0; /* Use internal VBUS */ #else #ifdef USB_OTG_EXTERNAL_VBUS_ENABLED usbcfg.b.ulpi_ext_vbus_drv = 1; /* Use external VBUS */ #endif #endif usbcfg.b.term_sel_dl_pulse = 0; /* Data line pulsing using utmi_txvalid */ usbcfg.b.ulpi_utmi_sel = 1; /* ULPI seleInterfacect */ usbcfg.b.phyif = 0; /* 8 bits */ usbcfg.b.ddrsel = 0; /* single data rate */ usbcfg.b.ulpi_fsls = 0; usbcfg.b.ulpi_clk_sus_m = 0; USB_OTG_WRITE_REG32 (&pdev->regs.GREGS->GUSBCFG, usbcfg.d32); /* Reset after a PHY select */ USB_OTG_CoreReset(pdev); if(pdev->cfg.dma_enable == 1) { ahbcfg.b.hburstlen = 5; /* 64 x 32-bits*/ ahbcfg.b.dmaenable = 1; USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GAHBCFG, ahbcfg.d32); } } else /* FS interface (embedded Phy or I2C Phy) */ { usbcfg.d32 = USB_OTG_READ_REG32(&pdev->regs.GREGS->GUSBCFG);; usbcfg.b.physel = 1; /* FS Interface */ USB_OTG_WRITE_REG32 (&pdev->regs.GREGS->GUSBCFG, usbcfg.d32); /* Reset after a PHY select and set Host mode */ USB_OTG_CoreReset(pdev); /* Enable the I2C interface and deactivate the power down*/ gccfg.d32 = 0; gccfg.b.pwdn = 1; if(pdev->cfg.phy_itface == USB_OTG_I2C_PHY) { gccfg.b.i2cifen = 1; } gccfg.b.vbussensingA = 1 ; gccfg.b.vbussensingB = 1 ; #ifndef VBUS_SENSING_ENABLED gccfg.b.disablevbussensing = 1; #endif if(pdev->cfg.Sof_output) { gccfg.b.sofouten = 1; } USB_OTG_WRITE_REG32 (&pdev->regs.GREGS->GCCFG, gccfg.d32); USB_OTG_BSP_mDelay(20); /* Program GUSBCFG.OtgUtmifsSel to I2C*/ usbcfg.d32 = USB_OTG_READ_REG32(&pdev->regs.GREGS->GUSBCFG); if(pdev->cfg.phy_itface == USB_OTG_I2C_PHY) { usbcfg.b.otgutmifssel = 1; } USB_OTG_WRITE_REG32 (&pdev->regs.GREGS->GUSBCFG, usbcfg.d32); if(pdev->cfg.phy_itface == USB_OTG_I2C_PHY) { /*Program GI2CCTL.I2CEn*/ i2cctl.d32 = USB_OTG_READ_REG32(&pdev->regs.GREGS->GI2CCTL); i2cctl.b.i2cdevaddr = 1; i2cctl.b.i2cen = 0; i2cctl.b.dat_se0 = 1; i2cctl.b.addr = 0x2D; USB_OTG_WRITE_REG32 (&pdev->regs.GREGS->GI2CCTL, i2cctl.d32); USB_OTG_BSP_mDelay(200); i2cctl.b.i2cen = 1; USB_OTG_WRITE_REG32 (&pdev->regs.GREGS->GI2CCTL, i2cctl.d32); USB_OTG_BSP_mDelay(200); } } /* case the HS core is working in FS mode */ if(pdev->cfg.dma_enable == 1) { ahbcfg.d32 = USB_OTG_READ_REG32(&pdev->regs.GREGS->GAHBCFG); ahbcfg.b.hburstlen = 5; /* 64 x 32-bits*/ ahbcfg.b.dmaenable = 1; USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GAHBCFG, ahbcfg.d32); } /* initialize OTG features */ #ifdef USE_OTG_MODE usbcfg.d32 = USB_OTG_READ_REG32(&pdev->regs.GREGS->GUSBCFG); usbcfg.b.hnpcap = 1; usbcfg.b.srpcap = 1; USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GUSBCFG, usbcfg.d32); USB_OTG_EnableCommonInt(pdev); #endif return status; } /** * @brief USB_OTG_EnableGlobalInt * Enables the controller's Global Int in the AHB Config reg * @param pdev : Selected device * @retval USB_OTG_STS : status */ USB_OTG_STS USB_OTG_EnableGlobalInt(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_STS status = USB_OTG_OK; USB_OTG_GAHBCFG_TypeDef ahbcfg; ahbcfg.d32 = 0; ahbcfg.b.glblintrmsk = 1; /* Enable interrupts */ USB_OTG_MODIFY_REG32(&pdev->regs.GREGS->GAHBCFG, 0, ahbcfg.d32); return status; } /** * @brief USB_OTG_DisableGlobalInt * Enables the controller's Global Int in the AHB Config reg * @param pdev : Selected device * @retval USB_OTG_STS : status */ USB_OTG_STS USB_OTG_DisableGlobalInt(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_STS status = USB_OTG_OK; USB_OTG_GAHBCFG_TypeDef ahbcfg; ahbcfg.d32 = 0; ahbcfg.b.glblintrmsk = 1; /* Enable interrupts */ USB_OTG_MODIFY_REG32(&pdev->regs.GREGS->GAHBCFG, ahbcfg.d32, 0); return status; } /** * @brief USB_OTG_FlushTxFifo : Flush a Tx FIFO * @param pdev : Selected device * @param num : FO num * @retval USB_OTG_STS : status */ USB_OTG_STS USB_OTG_FlushTxFifo (USB_OTG_CORE_HANDLE *pdev , uint32_t num ) { USB_OTG_STS status = USB_OTG_OK; __IO USB_OTG_GRSTCTL_TypeDef greset; uint32_t count = 0; greset.d32 = 0; greset.b.txfflsh = 1; greset.b.txfnum = num; USB_OTG_WRITE_REG32( &pdev->regs.GREGS->GRSTCTL, greset.d32 ); do { greset.d32 = USB_OTG_READ_REG32( &pdev->regs.GREGS->GRSTCTL); if (++count > 200000) { break; } } while (greset.b.txfflsh == 1); /* Wait for 3 PHY Clocks*/ USB_OTG_BSP_uDelay(3); return status; } /** * @brief USB_OTG_FlushRxFifo : Flush a Rx FIFO * @param pdev : Selected device * @retval USB_OTG_STS : status */ USB_OTG_STS USB_OTG_FlushRxFifo( USB_OTG_CORE_HANDLE *pdev ) { USB_OTG_STS status = USB_OTG_OK; __IO USB_OTG_GRSTCTL_TypeDef greset; uint32_t count = 0; greset.d32 = 0; greset.b.rxfflsh = 1; USB_OTG_WRITE_REG32( &pdev->regs.GREGS->GRSTCTL, greset.d32 ); do { greset.d32 = USB_OTG_READ_REG32( &pdev->regs.GREGS->GRSTCTL); if (++count > 200000) { break; } } while (greset.b.rxfflsh == 1); /* Wait for 3 PHY Clocks*/ USB_OTG_BSP_uDelay(3); return status; } /** * @brief USB_OTG_SetCurrentMode : Set ID line * @param pdev : Selected device * @param mode : (Host/device) * @retval USB_OTG_STS : status */ USB_OTG_STS USB_OTG_SetCurrentMode(USB_OTG_CORE_HANDLE *pdev , uint8_t mode) { USB_OTG_STS status = USB_OTG_OK; USB_OTG_GUSBCFG_TypeDef usbcfg; usbcfg.d32 = USB_OTG_READ_REG32(&pdev->regs.GREGS->GUSBCFG); usbcfg.b.force_host = 0; usbcfg.b.force_dev = 0; if ( mode == HOST_MODE) { usbcfg.b.force_host = 1; } else if ( mode == DEVICE_MODE) { usbcfg.b.force_dev = 1; } USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GUSBCFG, usbcfg.d32); USB_OTG_BSP_mDelay(50); return status; } /** * @brief USB_OTG_GetMode : Get current mode * @param pdev : Selected device * @retval current mode */ uint32_t USB_OTG_GetMode(USB_OTG_CORE_HANDLE *pdev) { return (USB_OTG_READ_REG32(&pdev->regs.GREGS->GINTSTS ) & 0x1); } /** * @brief USB_OTG_IsDeviceMode : Check if it is device mode * @param pdev : Selected device * @retval num_in_ep */ uint8_t USB_OTG_IsDeviceMode(USB_OTG_CORE_HANDLE *pdev) { return (USB_OTG_GetMode(pdev) != HOST_MODE); } /** * @brief USB_OTG_IsHostMode : Check if it is host mode * @param pdev : Selected device * @retval num_in_ep */ uint8_t USB_OTG_IsHostMode(USB_OTG_CORE_HANDLE *pdev) { return (USB_OTG_GetMode(pdev) == HOST_MODE); } /** * @brief USB_OTG_ReadCoreItr : returns the Core Interrupt register * @param pdev : Selected device * @retval Status */ uint32_t USB_OTG_ReadCoreItr(USB_OTG_CORE_HANDLE *pdev) { uint32_t v = 0; v = USB_OTG_READ_REG32(&pdev->regs.GREGS->GINTSTS); v &= USB_OTG_READ_REG32(&pdev->regs.GREGS->GINTMSK); return v; } /** * @brief USB_OTG_ReadOtgItr : returns the USB_OTG Interrupt register * @param pdev : Selected device * @retval Status */ uint32_t USB_OTG_ReadOtgItr (USB_OTG_CORE_HANDLE *pdev) { return (USB_OTG_READ_REG32 (&pdev->regs.GREGS->GOTGINT)); } #ifdef USE_HOST_MODE /** * @brief USB_OTG_CoreInitHost : Initializes USB_OTG controller for host mode * @param pdev : Selected device * @retval status */ USB_OTG_STS USB_OTG_CoreInitHost(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_STS status = USB_OTG_OK; USB_OTG_FSIZ_TypeDef nptxfifosize; USB_OTG_FSIZ_TypeDef ptxfifosize; USB_OTG_HCFG_TypeDef hcfg; #ifdef USE_OTG_MODE USB_OTG_OTGCTL_TypeDef gotgctl; #endif uint32_t i = 0; nptxfifosize.d32 = 0; ptxfifosize.d32 = 0; #ifdef USE_OTG_MODE gotgctl.d32 = 0; #endif hcfg.d32 = 0; /* configure charge pump IO */ USB_OTG_BSP_ConfigVBUS(pdev); /* Restart the Phy Clock */ USB_OTG_WRITE_REG32(pdev->regs.PCGCCTL, 0); /* Initialize Host Configuration Register */ USB_OTG_InitFSLSPClkSel(pdev , HCFG_48_MHZ); /* in init phase */ hcfg.d32 = USB_OTG_READ_REG32(&pdev->regs.HREGS->HCFG); hcfg.b.fslssupp = 0; USB_OTG_WRITE_REG32(&pdev->regs.HREGS->HCFG, hcfg.d32); /* Configure data FIFO sizes */ /* Rx FIFO */ #ifdef USB_OTG_FS_CORE if(pdev->cfg.coreID == USB_OTG_FS_CORE_ID) { /* set Rx FIFO size */ USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GRXFSIZ, RX_FIFO_FS_SIZE); nptxfifosize.b.startaddr = RX_FIFO_FS_SIZE; nptxfifosize.b.depth = TXH_NP_FS_FIFOSIZ; USB_OTG_WRITE_REG32(&pdev->regs.GREGS->DIEPTXF0_HNPTXFSIZ, nptxfifosize.d32); ptxfifosize.b.startaddr = RX_FIFO_FS_SIZE + TXH_NP_FS_FIFOSIZ; ptxfifosize.b.depth = TXH_P_FS_FIFOSIZ; USB_OTG_WRITE_REG32(&pdev->regs.GREGS->HPTXFSIZ, ptxfifosize.d32); } #endif #ifdef USB_OTG_HS_CORE if (pdev->cfg.coreID == USB_OTG_HS_CORE_ID) { /* set Rx FIFO size */ USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GRXFSIZ, RX_FIFO_HS_SIZE); nptxfifosize.b.startaddr = RX_FIFO_HS_SIZE; nptxfifosize.b.depth = TXH_NP_HS_FIFOSIZ; USB_OTG_WRITE_REG32(&pdev->regs.GREGS->DIEPTXF0_HNPTXFSIZ, nptxfifosize.d32); ptxfifosize.b.startaddr = RX_FIFO_HS_SIZE + TXH_NP_HS_FIFOSIZ; ptxfifosize.b.depth = TXH_P_HS_FIFOSIZ; USB_OTG_WRITE_REG32(&pdev->regs.GREGS->HPTXFSIZ, ptxfifosize.d32); } #endif #ifdef USE_OTG_MODE /* Clear Host Set HNP Enable in the USB_OTG Control Register */ gotgctl.b.hstsethnpen = 1; USB_OTG_MODIFY_REG32( &pdev->regs.GREGS->GOTGCTL, gotgctl.d32, 0); #endif /* Make sure the FIFOs are flushed. */ USB_OTG_FlushTxFifo(pdev, 0x10 ); /* all Tx FIFOs */ USB_OTG_FlushRxFifo(pdev); /* Clear all pending HC Interrupts */ for (i = 0; i < pdev->cfg.host_channels; i++) { USB_OTG_WRITE_REG32( &pdev->regs.HC_REGS[i]->HCINT, 0xFFFFFFFF ); USB_OTG_WRITE_REG32( &pdev->regs.HC_REGS[i]->HCGINTMSK, 0 ); } #ifndef USE_OTG_MODE USB_OTG_DriveVbus(pdev, 1); #endif USB_OTG_EnableHostInt(pdev); return status; } /** * @brief USB_OTG_IsEvenFrame * This function returns the frame number for sof packet * @param pdev : Selected device * @retval Frame number */ uint8_t USB_OTG_IsEvenFrame (USB_OTG_CORE_HANDLE *pdev) { return !(USB_OTG_READ_REG32(&pdev->regs.HREGS->HFNUM) & 0x1); } /** * @brief USB_OTG_DriveVbus : set/reset vbus * @param pdev : Selected device * @param state : VBUS state * @retval None */ void USB_OTG_DriveVbus (USB_OTG_CORE_HANDLE *pdev, uint8_t state) { USB_OTG_HPRT0_TypeDef hprt0; hprt0.d32 = 0; /* enable disable the external charge pump */ USB_OTG_BSP_DriveVBUS(pdev, state); /* Turn on the Host port power. */ hprt0.d32 = USB_OTG_ReadHPRT0(pdev); if ((hprt0.b.prtpwr == 0 ) && (state == 1 )) { hprt0.b.prtpwr = 1; USB_OTG_WRITE_REG32(pdev->regs.HPRT0, hprt0.d32); } if ((hprt0.b.prtpwr == 1 ) && (state == 0 )) { hprt0.b.prtpwr = 0; USB_OTG_WRITE_REG32(pdev->regs.HPRT0, hprt0.d32); } USB_OTG_BSP_mDelay(200); } /** * @brief USB_OTG_EnableHostInt: Enables the Host mode interrupts * @param pdev : Selected device * @retval USB_OTG_STS : status */ USB_OTG_STS USB_OTG_EnableHostInt(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_STS status = USB_OTG_OK; USB_OTG_GINTMSK_TypeDef intmsk; intmsk.d32 = 0; /* Disable all interrupts. */ USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GINTMSK, 0); /* Clear any pending interrupts. */ USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GINTSTS, 0xFFFFFFFF); /* Enable the common interrupts */ USB_OTG_EnableCommonInt(pdev); if (pdev->cfg.dma_enable == 0) { intmsk.b.rxstsqlvl = 1; } intmsk.b.portintr = 1; intmsk.b.hcintr = 1; intmsk.b.disconnect = 1; intmsk.b.sofintr = 1; intmsk.b.incomplisoout = 1; USB_OTG_MODIFY_REG32(&pdev->regs.GREGS->GINTMSK, intmsk.d32, intmsk.d32); return status; } /** * @brief USB_OTG_InitFSLSPClkSel : Initializes the FSLSPClkSel field of the * HCFG register on the PHY type * @param pdev : Selected device * @param freq : clock frequency * @retval None */ void USB_OTG_InitFSLSPClkSel(USB_OTG_CORE_HANDLE *pdev , uint8_t freq) { USB_OTG_HCFG_TypeDef hcfg; hcfg.d32 = USB_OTG_READ_REG32(&pdev->regs.HREGS->HCFG); hcfg.b.fslspclksel = freq; USB_OTG_WRITE_REG32(&pdev->regs.HREGS->HCFG, hcfg.d32); } /** * @brief USB_OTG_ReadHPRT0 : Reads HPRT0 to modify later * @param pdev : Selected device * @retval HPRT0 value */ uint32_t USB_OTG_ReadHPRT0(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_HPRT0_TypeDef hprt0; hprt0.d32 = USB_OTG_READ_REG32(pdev->regs.HPRT0); hprt0.b.prtena = 0; hprt0.b.prtconndet = 0; hprt0.b.prtenchng = 0; hprt0.b.prtovrcurrchng = 0; return hprt0.d32; } /** * @brief USB_OTG_ReadHostAllChannels_intr : Register PCD Callbacks * @param pdev : Selected device * @retval Status */ uint32_t USB_OTG_ReadHostAllChannels_intr (USB_OTG_CORE_HANDLE *pdev) { return (USB_OTG_READ_REG32 (&pdev->regs.HREGS->HAINT)); } /** * @brief USB_OTG_ResetPort : Reset Host Port * @param pdev : Selected device * @retval status * @note : (1)The application must wait at least 10 ms (+ 10 ms security) * before clearing the reset bit. */ uint32_t USB_OTG_ResetPort(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_HPRT0_TypeDef hprt0; hprt0.d32 = USB_OTG_ReadHPRT0(pdev); hprt0.b.prtrst = 1; USB_OTG_WRITE_REG32(pdev->regs.HPRT0, hprt0.d32); USB_OTG_BSP_mDelay (10); /* See Note #1 */ hprt0.b.prtrst = 0; USB_OTG_WRITE_REG32(pdev->regs.HPRT0, hprt0.d32); USB_OTG_BSP_mDelay (20); return 1; } /** * @brief USB_OTG_HC_Init : Prepares a host channel for transferring packets * @param pdev : Selected device * @param hc_num : channel number * @retval USB_OTG_STS : status */ USB_OTG_STS USB_OTG_HC_Init(USB_OTG_CORE_HANDLE *pdev , uint8_t hc_num) { USB_OTG_STS status = USB_OTG_OK; uint32_t intr_enable = 0; USB_OTG_HCGINTMSK_TypeDef hcintmsk; USB_OTG_GINTMSK_TypeDef gintmsk; USB_OTG_HCCHAR_TypeDef hcchar; USB_OTG_HCINTn_TypeDef hcint; gintmsk.d32 = 0; hcintmsk.d32 = 0; hcchar.d32 = 0; /* Clear old interrupt conditions for this host channel. */ hcint.d32 = 0xFFFFFFFF; USB_OTG_WRITE_REG32(&pdev->regs.HC_REGS[hc_num]->HCINT, hcint.d32); /* Enable channel interrupts required for this transfer. */ hcintmsk.d32 = 0; if (pdev->cfg.dma_enable == 1) { hcintmsk.b.ahberr = 1; } switch (pdev->host.hc[hc_num].ep_type) { case EP_TYPE_CTRL: case EP_TYPE_BULK: hcintmsk.b.xfercompl = 1; hcintmsk.b.stall = 1; hcintmsk.b.xacterr = 1; hcintmsk.b.datatglerr = 1; hcintmsk.b.nak = 1; if (pdev->host.hc[hc_num].ep_is_in) { hcintmsk.b.bblerr = 1; } else { hcintmsk.b.nyet = 1; if (pdev->host.hc[hc_num].do_ping) { hcintmsk.b.ack = 1; } } break; case EP_TYPE_INTR: hcintmsk.b.xfercompl = 1; hcintmsk.b.nak = 1; hcintmsk.b.stall = 1; hcintmsk.b.xacterr = 1; hcintmsk.b.datatglerr = 1; hcintmsk.b.frmovrun = 1; if (pdev->host.hc[hc_num].ep_is_in) { hcintmsk.b.bblerr = 1; } break; case EP_TYPE_ISOC: hcintmsk.b.xfercompl = 1; hcintmsk.b.frmovrun = 1; hcintmsk.b.ack = 1; if (pdev->host.hc[hc_num].ep_is_in) { hcintmsk.b.xacterr = 1; hcintmsk.b.bblerr = 1; } break; } USB_OTG_WRITE_REG32(&pdev->regs.HC_REGS[hc_num]->HCGINTMSK, hcintmsk.d32); /* Enable the top level host channel interrupt. */ intr_enable = (1 << hc_num); USB_OTG_MODIFY_REG32(&pdev->regs.HREGS->HAINTMSK, 0, intr_enable); /* Make sure host channel interrupts are enabled. */ gintmsk.b.hcintr = 1; USB_OTG_MODIFY_REG32(&pdev->regs.GREGS->GINTMSK, 0, gintmsk.d32); /* Program the HCCHAR register */ hcchar.d32 = 0; hcchar.b.devaddr = pdev->host.hc[hc_num].dev_addr; hcchar.b.epnum = pdev->host.hc[hc_num].ep_num; hcchar.b.epdir = pdev->host.hc[hc_num].ep_is_in; hcchar.b.lspddev = (pdev->host.hc[hc_num].speed == HPRT0_PRTSPD_LOW_SPEED); hcchar.b.eptype = pdev->host.hc[hc_num].ep_type; hcchar.b.mps = pdev->host.hc[hc_num].max_packet; if (pdev->host.hc[hc_num].ep_type == HCCHAR_INTR) { hcchar.b.oddfrm = 1; } USB_OTG_WRITE_REG32(&pdev->regs.HC_REGS[hc_num]->HCCHAR, hcchar.d32); return status; } /** * @brief USB_OTG_HC_StartXfer : Start transfer * @param pdev : Selected device * @param hc_num : channel number * @retval USB_OTG_STS : status */ USB_OTG_STS USB_OTG_HC_StartXfer(USB_OTG_CORE_HANDLE *pdev , uint8_t hc_num) { USB_OTG_STS status = USB_OTG_OK; USB_OTG_HCCHAR_TypeDef hcchar; USB_OTG_HCTSIZn_TypeDef hctsiz; USB_OTG_HNPTXSTS_TypeDef hnptxsts; USB_OTG_HPTXSTS_TypeDef hptxsts; USB_OTG_GINTMSK_TypeDef intmsk; uint16_t len_words = 0; uint16_t num_packets; uint16_t max_hc_pkt_count; max_hc_pkt_count = 256; hctsiz.d32 = 0; hcchar.d32 = 0; intmsk.d32 = 0; /* Compute the expected number of packets associated to the transfer */ if (pdev->host.hc[hc_num].xfer_len > 0) { num_packets = (pdev->host.hc[hc_num].xfer_len + \ pdev->host.hc[hc_num].max_packet - 1) / pdev->host.hc[hc_num].max_packet; if (num_packets > max_hc_pkt_count) { num_packets = max_hc_pkt_count; pdev->host.hc[hc_num].xfer_len = num_packets * \ pdev->host.hc[hc_num].max_packet; } } else { num_packets = 1; } if (pdev->host.hc[hc_num].ep_is_in) { pdev->host.hc[hc_num].xfer_len = num_packets * \ pdev->host.hc[hc_num].max_packet; } /* Initialize the HCTSIZn register */ hctsiz.b.xfersize = pdev->host.hc[hc_num].xfer_len; hctsiz.b.pktcnt = num_packets; hctsiz.b.pid = pdev->host.hc[hc_num].data_pid; USB_OTG_WRITE_REG32(&pdev->regs.HC_REGS[hc_num]->HCTSIZ, hctsiz.d32); if (pdev->cfg.dma_enable == 1) { USB_OTG_WRITE_REG32(&pdev->regs.HC_REGS[hc_num]->HCDMA, (unsigned int)pdev->host.hc[hc_num].xfer_buff); } hcchar.d32 = USB_OTG_READ_REG32(&pdev->regs.HC_REGS[hc_num]->HCCHAR); hcchar.b.oddfrm = USB_OTG_IsEvenFrame(pdev); /* Set host channel enable */ hcchar.b.chen = 1; hcchar.b.chdis = 0; USB_OTG_WRITE_REG32(&pdev->regs.HC_REGS[hc_num]->HCCHAR, hcchar.d32); if (pdev->cfg.dma_enable == 0) /* Slave mode */ { if((pdev->host.hc[hc_num].ep_is_in == 0) && (pdev->host.hc[hc_num].xfer_len > 0)) { switch(pdev->host.hc[hc_num].ep_type) { /* Non periodic transfer */ case EP_TYPE_CTRL: case EP_TYPE_BULK: hnptxsts.d32 = USB_OTG_READ_REG32(&pdev->regs.GREGS->HNPTXSTS); len_words = (pdev->host.hc[hc_num].xfer_len + 3) / 4; /* check if there is enough space in FIFO space */ if(len_words > hnptxsts.b.nptxfspcavail) { /* need to process data in nptxfempty interrupt */ intmsk.b.nptxfempty = 1; USB_OTG_MODIFY_REG32( &pdev->regs.GREGS->GINTMSK, 0, intmsk.d32); } break; /* Periodic transfer */ case EP_TYPE_INTR: case EP_TYPE_ISOC: hptxsts.d32 = USB_OTG_READ_REG32(&pdev->regs.HREGS->HPTXSTS); len_words = (pdev->host.hc[hc_num].xfer_len + 3) / 4; /* check if there is enough space in FIFO space */ if(len_words > hptxsts.b.ptxfspcavail) /* split the transfer */ { /* need to process data in ptxfempty interrupt */ intmsk.b.ptxfempty = 1; USB_OTG_MODIFY_REG32( &pdev->regs.GREGS->GINTMSK, 0, intmsk.d32); } break; default: break; } /* Write packet into the Tx FIFO. */ USB_OTG_WritePacket(pdev, pdev->host.hc[hc_num].xfer_buff , hc_num, pdev->host.hc[hc_num].xfer_len); } } return status; } /** * @brief USB_OTG_HC_Halt : Halt channel * @param pdev : Selected device * @param hc_num : channel number * @retval USB_OTG_STS : status */ USB_OTG_STS USB_OTG_HC_Halt(USB_OTG_CORE_HANDLE *pdev , uint8_t hc_num) { USB_OTG_STS status = USB_OTG_OK; USB_OTG_HNPTXSTS_TypeDef nptxsts; USB_OTG_HPTXSTS_TypeDef hptxsts; USB_OTG_HCCHAR_TypeDef hcchar; nptxsts.d32 = 0; hptxsts.d32 = 0; hcchar.d32 = USB_OTG_READ_REG32(&pdev->regs.HC_REGS[hc_num]->HCCHAR); hcchar.b.chen = 1; hcchar.b.chdis = 1; /* Check for space in the request queue to issue the halt. */ if (hcchar.b.eptype == HCCHAR_CTRL || hcchar.b.eptype == HCCHAR_BULK) { nptxsts.d32 = USB_OTG_READ_REG32(&pdev->regs.GREGS->HNPTXSTS); if (nptxsts.b.nptxqspcavail == 0) { hcchar.b.chen = 0; } } else { hptxsts.d32 = USB_OTG_READ_REG32(&pdev->regs.HREGS->HPTXSTS); if (hptxsts.b.ptxqspcavail == 0) { hcchar.b.chen = 0; } } USB_OTG_WRITE_REG32(&pdev->regs.HC_REGS[hc_num]->HCCHAR, hcchar.d32); return status; } /** * @brief Issue a ping token * @param None * @retval : None */ USB_OTG_STS USB_OTG_HC_DoPing(USB_OTG_CORE_HANDLE *pdev , uint8_t hc_num) { USB_OTG_STS status = USB_OTG_OK; USB_OTG_HCCHAR_TypeDef hcchar; USB_OTG_HCTSIZn_TypeDef hctsiz; hctsiz.d32 = 0; hctsiz.b.dopng = 1; hctsiz.b.pktcnt = 1; USB_OTG_WRITE_REG32(&pdev->regs.HC_REGS[hc_num]->HCTSIZ, hctsiz.d32); hcchar.d32 = USB_OTG_READ_REG32(&pdev->regs.HC_REGS[hc_num]->HCCHAR); hcchar.b.chen = 1; hcchar.b.chdis = 0; USB_OTG_WRITE_REG32(&pdev->regs.HC_REGS[hc_num]->HCCHAR, hcchar.d32); return status; } /** * @brief Stop the device and clean up fifo's * @param None * @retval : None */ void USB_OTG_StopHost(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_HCCHAR_TypeDef hcchar; uint32_t i; USB_OTG_WRITE_REG32(&pdev->regs.HREGS->HAINTMSK , 0); USB_OTG_WRITE_REG32(&pdev->regs.HREGS->HAINT, 0xFFFFFFFF); /* Flush out any leftover queued requests. */ for (i = 0; i < pdev->cfg.host_channels; i++) { hcchar.d32 = USB_OTG_READ_REG32(&pdev->regs.HC_REGS[i]->HCCHAR); hcchar.b.chen = 0; hcchar.b.chdis = 1; hcchar.b.epdir = 0; USB_OTG_WRITE_REG32(&pdev->regs.HC_REGS[i]->HCCHAR, hcchar.d32); } /* Flush the FIFO */ USB_OTG_FlushRxFifo(pdev); USB_OTG_FlushTxFifo(pdev , 0x10 ); } #endif #ifdef USE_DEVICE_MODE /* PCD Core Layer */ /** * @brief USB_OTG_InitDevSpeed :Initializes the DevSpd field of DCFG register * depending the PHY type and the enumeration speed of the device. * @param pdev : Selected device * @retval : None */ void USB_OTG_InitDevSpeed(USB_OTG_CORE_HANDLE *pdev , uint8_t speed) { USB_OTG_DCFG_TypeDef dcfg; dcfg.d32 = USB_OTG_READ_REG32(&pdev->regs.DREGS->DCFG); dcfg.b.devspd = speed; USB_OTG_WRITE_REG32(&pdev->regs.DREGS->DCFG, dcfg.d32); } /** * @brief USB_OTG_CoreInitDev : Initializes the USB_OTG controller registers * for device mode * @param pdev : Selected device * @retval USB_OTG_STS : status */ USB_OTG_STS USB_OTG_CoreInitDev (USB_OTG_CORE_HANDLE *pdev) { USB_OTG_STS status = USB_OTG_OK; USB_OTG_DEPCTL_TypeDef depctl; uint32_t i; USB_OTG_DCFG_TypeDef dcfg; USB_OTG_FSIZ_TypeDef nptxfifosize; USB_OTG_FSIZ_TypeDef txfifosize; USB_OTG_DIEPMSK_TypeDef msk; USB_OTG_DTHRCTL_TypeDef dthrctl; depctl.d32 = 0; dcfg.d32 = 0; nptxfifosize.d32 = 0; txfifosize.d32 = 0; msk.d32 = 0; /* Restart the Phy Clock */ USB_OTG_WRITE_REG32(pdev->regs.PCGCCTL, 0); /* Device configuration register */ dcfg.d32 = USB_OTG_READ_REG32( &pdev->regs.DREGS->DCFG); dcfg.b.perfrint = DCFG_FRAME_INTERVAL_80; USB_OTG_WRITE_REG32( &pdev->regs.DREGS->DCFG, dcfg.d32 ); #ifdef USB_OTG_FS_CORE if(pdev->cfg.coreID == USB_OTG_FS_CORE_ID ) { /* Set Full speed phy */ USB_OTG_InitDevSpeed (pdev , USB_OTG_SPEED_PARAM_FULL); /* set Rx FIFO size */ USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GRXFSIZ, RX_FIFO_FS_SIZE); /* EP0 TX*/ nptxfifosize.b.depth = TX0_FIFO_FS_SIZE; nptxfifosize.b.startaddr = RX_FIFO_FS_SIZE; USB_OTG_WRITE_REG32( &pdev->regs.GREGS->DIEPTXF0_HNPTXFSIZ, nptxfifosize.d32 ); /* EP1 TX*/ txfifosize.b.startaddr = nptxfifosize.b.startaddr + nptxfifosize.b.depth; txfifosize.b.depth = TX1_FIFO_FS_SIZE; USB_OTG_WRITE_REG32( &pdev->regs.GREGS->DIEPTXF[0], txfifosize.d32 ); /* EP2 TX*/ txfifosize.b.startaddr += txfifosize.b.depth; txfifosize.b.depth = TX2_FIFO_FS_SIZE; USB_OTG_WRITE_REG32( &pdev->regs.GREGS->DIEPTXF[1], txfifosize.d32 ); /* EP3 TX*/ txfifosize.b.startaddr += txfifosize.b.depth; txfifosize.b.depth = TX3_FIFO_FS_SIZE; USB_OTG_WRITE_REG32( &pdev->regs.GREGS->DIEPTXF[2], txfifosize.d32 ); } #endif #ifdef USB_OTG_HS_CORE if(pdev->cfg.coreID == USB_OTG_HS_CORE_ID ) { /* Set High speed phy */ if(pdev->cfg.phy_itface == USB_OTG_ULPI_PHY) { USB_OTG_InitDevSpeed (pdev , USB_OTG_SPEED_PARAM_HIGH); } else /* set High speed phy in Full speed mode */ { USB_OTG_InitDevSpeed (pdev , USB_OTG_SPEED_PARAM_HIGH_IN_FULL); } /* set Rx FIFO size */ USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GRXFSIZ, RX_FIFO_HS_SIZE); /* EP0 TX*/ nptxfifosize.b.depth = TX0_FIFO_HS_SIZE; nptxfifosize.b.startaddr = RX_FIFO_HS_SIZE; USB_OTG_WRITE_REG32( &pdev->regs.GREGS->DIEPTXF0_HNPTXFSIZ, nptxfifosize.d32 ); /* EP1 TX*/ txfifosize.b.startaddr = nptxfifosize.b.startaddr + nptxfifosize.b.depth; txfifosize.b.depth = TX1_FIFO_HS_SIZE; USB_OTG_WRITE_REG32( &pdev->regs.GREGS->DIEPTXF[0], txfifosize.d32 ); /* EP2 TX*/ txfifosize.b.startaddr += txfifosize.b.depth; txfifosize.b.depth = TX2_FIFO_HS_SIZE; USB_OTG_WRITE_REG32( &pdev->regs.GREGS->DIEPTXF[1], txfifosize.d32 ); /* EP3 TX*/ txfifosize.b.startaddr += txfifosize.b.depth; txfifosize.b.depth = TX3_FIFO_HS_SIZE; USB_OTG_WRITE_REG32( &pdev->regs.GREGS->DIEPTXF[2], txfifosize.d32 ); /* EP4 TX*/ txfifosize.b.startaddr += txfifosize.b.depth; txfifosize.b.depth = TX4_FIFO_HS_SIZE; USB_OTG_WRITE_REG32( &pdev->regs.GREGS->DIEPTXF[3], txfifosize.d32 ); /* EP5 TX*/ txfifosize.b.startaddr += txfifosize.b.depth; txfifosize.b.depth = TX5_FIFO_HS_SIZE; USB_OTG_WRITE_REG32( &pdev->regs.GREGS->DIEPTXF[4], txfifosize.d32 ); } #endif /* Flush the FIFOs */ USB_OTG_FlushTxFifo(pdev , 0x10); /* all Tx FIFOs */ USB_OTG_FlushRxFifo(pdev); /* Clear all pending Device Interrupts */ USB_OTG_WRITE_REG32( &pdev->regs.DREGS->DIEPMSK, 0 ); USB_OTG_WRITE_REG32( &pdev->regs.DREGS->DOEPMSK, 0 ); USB_OTG_WRITE_REG32( &pdev->regs.DREGS->DAINT, 0xFFFFFFFF ); USB_OTG_WRITE_REG32( &pdev->regs.DREGS->DAINTMSK, 0 ); for (i = 0; i < pdev->cfg.dev_endpoints; i++) { depctl.d32 = USB_OTG_READ_REG32(&pdev->regs.INEP_REGS[i]->DIEPCTL); if (depctl.b.epena) { depctl.d32 = 0; depctl.b.epdis = 1; depctl.b.snak = 1; } else { depctl.d32 = 0; } USB_OTG_WRITE_REG32( &pdev->regs.INEP_REGS[i]->DIEPCTL, depctl.d32); USB_OTG_WRITE_REG32( &pdev->regs.INEP_REGS[i]->DIEPTSIZ, 0); USB_OTG_WRITE_REG32( &pdev->regs.INEP_REGS[i]->DIEPINT, 0xFF); } for (i = 0; i < pdev->cfg.dev_endpoints; i++) { USB_OTG_DEPCTL_TypeDef depctl; depctl.d32 = USB_OTG_READ_REG32(&pdev->regs.OUTEP_REGS[i]->DOEPCTL); if (depctl.b.epena) { depctl.d32 = 0; depctl.b.epdis = 1; depctl.b.snak = 1; } else { depctl.d32 = 0; } USB_OTG_WRITE_REG32( &pdev->regs.OUTEP_REGS[i]->DOEPCTL, depctl.d32); USB_OTG_WRITE_REG32( &pdev->regs.OUTEP_REGS[i]->DOEPTSIZ, 0); USB_OTG_WRITE_REG32( &pdev->regs.OUTEP_REGS[i]->DOEPINT, 0xFF); } msk.d32 = 0; msk.b.txfifoundrn = 1; USB_OTG_MODIFY_REG32(&pdev->regs.DREGS->DIEPMSK, msk.d32, msk.d32); if (pdev->cfg.dma_enable == 1) { dthrctl.d32 = 0; dthrctl.b.non_iso_thr_en = 1; dthrctl.b.iso_thr_en = 1; dthrctl.b.tx_thr_len = 64; dthrctl.b.rx_thr_en = 1; dthrctl.b.rx_thr_len = 64; USB_OTG_WRITE_REG32(&pdev->regs.DREGS->DTHRCTL, dthrctl.d32); } USB_OTG_EnableDevInt(pdev); return status; } /** * @brief USB_OTG_EnableDevInt : Enables the Device mode interrupts * @param pdev : Selected device * @retval USB_OTG_STS : status */ USB_OTG_STS USB_OTG_EnableDevInt(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_STS status = USB_OTG_OK; USB_OTG_GINTMSK_TypeDef intmsk; intmsk.d32 = 0; /* Disable all interrupts. */ USB_OTG_WRITE_REG32( &pdev->regs.GREGS->GINTMSK, 0); /* Clear any pending interrupts */ USB_OTG_WRITE_REG32( &pdev->regs.GREGS->GINTSTS, 0xFFFFFFFF); /* Enable the common interrupts */ USB_OTG_EnableCommonInt(pdev); if (pdev->cfg.dma_enable == 0) { intmsk.b.rxstsqlvl = 1; } /* Enable interrupts matching to the Device mode ONLY */ intmsk.b.usbsuspend = 1; intmsk.b.usbreset = 1; intmsk.b.enumdone = 1; intmsk.b.inepintr = 1; intmsk.b.outepintr = 1; intmsk.b.sofintr = 1; intmsk.b.incomplisoin = 1; intmsk.b.incomplisoout = 1; #ifdef VBUS_SENSING_ENABLED intmsk.b.sessreqintr = 1; intmsk.b.otgintr = 1; #endif USB_OTG_MODIFY_REG32( &pdev->regs.GREGS->GINTMSK, intmsk.d32, intmsk.d32); return status; } /** * @brief USB_OTG_GetDeviceSpeed * Get the device speed from the device status register * @param None * @retval status */ enum USB_OTG_SPEED USB_OTG_GetDeviceSpeed (USB_OTG_CORE_HANDLE *pdev) { USB_OTG_DSTS_TypeDef dsts; enum USB_OTG_SPEED speed = USB_SPEED_UNKNOWN; dsts.d32 = USB_OTG_READ_REG32(&pdev->regs.DREGS->DSTS); switch (dsts.b.enumspd) { case DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ: speed = USB_SPEED_HIGH; break; case DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ: case DSTS_ENUMSPD_FS_PHY_48MHZ: speed = USB_SPEED_FULL; break; case DSTS_ENUMSPD_LS_PHY_6MHZ: speed = USB_SPEED_LOW; break; } return speed; } /** * @brief enables EP0 OUT to receive SETUP packets and configures EP0 * for transmitting packets * @param None * @retval USB_OTG_STS : status */ USB_OTG_STS USB_OTG_EP0Activate(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_STS status = USB_OTG_OK; USB_OTG_DSTS_TypeDef dsts; USB_OTG_DEPCTL_TypeDef diepctl; USB_OTG_DCTL_TypeDef dctl; dctl.d32 = 0; /* Read the Device Status and Endpoint 0 Control registers */ dsts.d32 = USB_OTG_READ_REG32(&pdev->regs.DREGS->DSTS); diepctl.d32 = USB_OTG_READ_REG32(&pdev->regs.INEP_REGS[0]->DIEPCTL); /* Set the MPS of the IN EP based on the enumeration speed */ switch (dsts.b.enumspd) { case DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ: case DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ: case DSTS_ENUMSPD_FS_PHY_48MHZ: diepctl.b.mps = DEP0CTL_MPS_64; break; case DSTS_ENUMSPD_LS_PHY_6MHZ: diepctl.b.mps = DEP0CTL_MPS_8; break; } USB_OTG_WRITE_REG32(&pdev->regs.INEP_REGS[0]->DIEPCTL, diepctl.d32); dctl.b.cgnpinnak = 1; USB_OTG_MODIFY_REG32(&pdev->regs.DREGS->DCTL, dctl.d32, dctl.d32); return status; } /** * @brief USB_OTG_EPActivate : Activates an EP * @param pdev : Selected device * @retval USB_OTG_STS : status */ USB_OTG_STS USB_OTG_EPActivate(USB_OTG_CORE_HANDLE *pdev , USB_OTG_EP *ep) { USB_OTG_STS status = USB_OTG_OK; USB_OTG_DEPCTL_TypeDef depctl; USB_OTG_DAINT_TypeDef daintmsk; __IO uint32_t *addr; depctl.d32 = 0; daintmsk.d32 = 0; /* Read DEPCTLn register */ if (ep->is_in == 1) { addr = &pdev->regs.INEP_REGS[ep->num]->DIEPCTL; daintmsk.ep.in = 1 << ep->num; } else { addr = &pdev->regs.OUTEP_REGS[ep->num]->DOEPCTL; daintmsk.ep.out = 1 << ep->num; } /* If the EP is already active don't change the EP Control * register. */ depctl.d32 = USB_OTG_READ_REG32(addr); if (!depctl.b.usbactep) { depctl.b.mps = ep->maxpacket; depctl.b.eptype = ep->type; depctl.b.txfnum = ep->tx_fifo_num; depctl.b.setd0pid = 1; depctl.b.usbactep = 1; USB_OTG_WRITE_REG32(addr, depctl.d32); } /* Enable the Interrupt for this EP */ #ifdef USB_OTG_HS_DEDICATED_EP1_ENABLED if((ep->num == 1)&&(pdev->cfg.coreID == USB_OTG_HS_CORE_ID)) { USB_OTG_MODIFY_REG32(&pdev->regs.DREGS->DEACHMSK, 0, daintmsk.d32); } else #endif USB_OTG_MODIFY_REG32(&pdev->regs.DREGS->DAINTMSK, 0, daintmsk.d32); return status; } /** * @brief USB_OTG_EPDeactivate : Deactivates an EP * @param pdev : Selected device * @retval USB_OTG_STS : status */ USB_OTG_STS USB_OTG_EPDeactivate(USB_OTG_CORE_HANDLE *pdev , USB_OTG_EP *ep) { USB_OTG_STS status = USB_OTG_OK; USB_OTG_DEPCTL_TypeDef depctl; USB_OTG_DAINT_TypeDef daintmsk; __IO uint32_t *addr; depctl.d32 = 0; daintmsk.d32 = 0; /* Read DEPCTLn register */ if (ep->is_in == 1) { addr = &pdev->regs.INEP_REGS[ep->num]->DIEPCTL; daintmsk.ep.in = 1 << ep->num; } else { addr = &pdev->regs.OUTEP_REGS[ep->num]->DOEPCTL; daintmsk.ep.out = 1 << ep->num; } depctl.b.usbactep = 0; USB_OTG_WRITE_REG32(addr, depctl.d32); /* Disable the Interrupt for this EP */ #ifdef USB_OTG_HS_DEDICATED_EP1_ENABLED if((ep->num == 1)&&(pdev->cfg.coreID == USB_OTG_HS_CORE_ID)) { USB_OTG_MODIFY_REG32(&pdev->regs.DREGS->DEACHMSK, daintmsk.d32, 0); } else #endif USB_OTG_MODIFY_REG32(&pdev->regs.DREGS->DAINTMSK, daintmsk.d32, 0); return status; } /** * @brief USB_OTG_EPStartXfer : Handle the setup for data xfer for an EP and * starts the xfer * @param pdev : Selected device * @retval USB_OTG_STS : status */ USB_OTG_STS USB_OTG_EPStartXfer(USB_OTG_CORE_HANDLE *pdev , USB_OTG_EP *ep) { USB_OTG_STS status = USB_OTG_OK; USB_OTG_DEPCTL_TypeDef depctl; USB_OTG_DEPXFRSIZ_TypeDef deptsiz; USB_OTG_DSTS_TypeDef dsts; uint32_t fifoemptymsk = 0; depctl.d32 = 0; deptsiz.d32 = 0; /* IN endpoint */ if (ep->is_in == 1) { depctl.d32 = USB_OTG_READ_REG32(&(pdev->regs.INEP_REGS[ep->num]->DIEPCTL)); deptsiz.d32 = USB_OTG_READ_REG32(&(pdev->regs.INEP_REGS[ep->num]->DIEPTSIZ)); /* Zero Length Packet? */ if (ep->xfer_len == 0) { deptsiz.b.xfersize = 0; deptsiz.b.pktcnt = 1; } else { /* Program the transfer size and packet count * as follows: xfersize = N * maxpacket + * short_packet pktcnt = N + (short_packet * exist ? 1 : 0) */ deptsiz.b.xfersize = ep->xfer_len; deptsiz.b.pktcnt = (ep->xfer_len - 1 + ep->maxpacket) / ep->maxpacket; if (ep->type == EP_TYPE_ISOC) { deptsiz.b.mc = 1; } } USB_OTG_WRITE_REG32(&pdev->regs.INEP_REGS[ep->num]->DIEPTSIZ, deptsiz.d32); if (pdev->cfg.dma_enable == 1) { USB_OTG_WRITE_REG32(&pdev->regs.INEP_REGS[ep->num]->DIEPDMA, ep->dma_addr); } else { if (ep->type != EP_TYPE_ISOC) { /* Enable the Tx FIFO Empty Interrupt for this EP */ if (ep->xfer_len > 0) { fifoemptymsk = 1 << ep->num; USB_OTG_MODIFY_REG32(&pdev->regs.DREGS->DIEPEMPMSK, 0, fifoemptymsk); } } } if (ep->type == EP_TYPE_ISOC) { dsts.d32 = USB_OTG_READ_REG32(&pdev->regs.DREGS->DSTS); if (((dsts.b.soffn)&0x1) == 0) { depctl.b.setd1pid = 1; } else { depctl.b.setd0pid = 1; } } /* EP enable, IN data in FIFO */ depctl.b.cnak = 1; depctl.b.epena = 1; USB_OTG_WRITE_REG32(&pdev->regs.INEP_REGS[ep->num]->DIEPCTL, depctl.d32); if (ep->type == EP_TYPE_ISOC) { USB_OTG_WritePacket(pdev, ep->xfer_buff, ep->num, ep->xfer_len); } } else { /* OUT endpoint */ depctl.d32 = USB_OTG_READ_REG32(&(pdev->regs.OUTEP_REGS[ep->num]->DOEPCTL)); deptsiz.d32 = USB_OTG_READ_REG32(&(pdev->regs.OUTEP_REGS[ep->num]->DOEPTSIZ)); /* Program the transfer size and packet count as follows: * pktcnt = N * xfersize = N * maxpacket */ if (ep->xfer_len == 0) { deptsiz.b.xfersize = ep->maxpacket; deptsiz.b.pktcnt = 1; } else { deptsiz.b.pktcnt = (ep->xfer_len + (ep->maxpacket - 1)) / ep->maxpacket; deptsiz.b.xfersize = deptsiz.b.pktcnt * ep->maxpacket; } USB_OTG_WRITE_REG32(&pdev->regs.OUTEP_REGS[ep->num]->DOEPTSIZ, deptsiz.d32); if (pdev->cfg.dma_enable == 1) { USB_OTG_WRITE_REG32(&pdev->regs.OUTEP_REGS[ep->num]->DOEPDMA, ep->dma_addr); } if (ep->type == EP_TYPE_ISOC) { if (ep->even_odd_frame) { depctl.b.setd1pid = 1; } else { depctl.b.setd0pid = 1; } } /* EP enable */ depctl.b.cnak = 1; depctl.b.epena = 1; USB_OTG_WRITE_REG32(&pdev->regs.OUTEP_REGS[ep->num]->DOEPCTL, depctl.d32); } return status; } /** * @brief USB_OTG_EP0StartXfer : Handle the setup for a data xfer for EP0 and * starts the xfer * @param pdev : Selected device * @retval USB_OTG_STS : status */ USB_OTG_STS USB_OTG_EP0StartXfer(USB_OTG_CORE_HANDLE *pdev , USB_OTG_EP *ep) { USB_OTG_STS status = USB_OTG_OK; USB_OTG_DEPCTL_TypeDef depctl; USB_OTG_DEP0XFRSIZ_TypeDef deptsiz; USB_OTG_INEPREGS *in_regs; uint32_t fifoemptymsk = 0; depctl.d32 = 0; deptsiz.d32 = 0; /* IN endpoint */ if (ep->is_in == 1) { in_regs = pdev->regs.INEP_REGS[0]; depctl.d32 = USB_OTG_READ_REG32(&in_regs->DIEPCTL); deptsiz.d32 = USB_OTG_READ_REG32(&in_regs->DIEPTSIZ); /* Zero Length Packet? */ if (ep->xfer_len == 0) { deptsiz.b.xfersize = 0; deptsiz.b.pktcnt = 1; } else { if (ep->xfer_len > ep->maxpacket) { ep->xfer_len = ep->maxpacket; deptsiz.b.xfersize = ep->maxpacket; } else { deptsiz.b.xfersize = ep->xfer_len; } deptsiz.b.pktcnt = 1; } USB_OTG_WRITE_REG32(&in_regs->DIEPTSIZ, deptsiz.d32); if (pdev->cfg.dma_enable == 1) { USB_OTG_WRITE_REG32(&pdev->regs.INEP_REGS[ep->num]->DIEPDMA, ep->dma_addr); } /* EP enable, IN data in FIFO */ depctl.b.cnak = 1; depctl.b.epena = 1; USB_OTG_WRITE_REG32(&in_regs->DIEPCTL, depctl.d32); if (pdev->cfg.dma_enable == 0) { /* Enable the Tx FIFO Empty Interrupt for this EP */ if (ep->xfer_len > 0) { { fifoemptymsk |= 1 << ep->num; USB_OTG_MODIFY_REG32(&pdev->regs.DREGS->DIEPEMPMSK, 0, fifoemptymsk); } } } } else { /* OUT endpoint */ depctl.d32 = USB_OTG_READ_REG32(&pdev->regs.OUTEP_REGS[ep->num]->DOEPCTL); deptsiz.d32 = USB_OTG_READ_REG32(&pdev->regs.OUTEP_REGS[ep->num]->DOEPTSIZ); /* Program the transfer size and packet count as follows: * xfersize = N * (maxpacket + 4 - (maxpacket % 4)) * pktcnt = N */ if (ep->xfer_len == 0) { deptsiz.b.xfersize = ep->maxpacket; deptsiz.b.pktcnt = 1; } else { ep->xfer_len = ep->maxpacket; deptsiz.b.xfersize = ep->maxpacket; deptsiz.b.pktcnt = 1; } USB_OTG_WRITE_REG32(&pdev->regs.OUTEP_REGS[ep->num]->DOEPTSIZ, deptsiz.d32); if (pdev->cfg.dma_enable == 1) { USB_OTG_WRITE_REG32(&pdev->regs.OUTEP_REGS[ep->num]->DOEPDMA, ep->dma_addr); } /* EP enable */ depctl.b.cnak = 1; depctl.b.epena = 1; USB_OTG_WRITE_REG32 (&(pdev->regs.OUTEP_REGS[ep->num]->DOEPCTL), depctl.d32); } return status; } /** * @brief USB_OTG_EPSetStall : Set the EP STALL * @param pdev : Selected device * @retval USB_OTG_STS : status */ USB_OTG_STS USB_OTG_EPSetStall(USB_OTG_CORE_HANDLE *pdev , USB_OTG_EP *ep) { USB_OTG_STS status = USB_OTG_OK; USB_OTG_DEPCTL_TypeDef depctl; __IO uint32_t *depctl_addr; depctl.d32 = 0; if (ep->is_in == 1) { depctl_addr = &(pdev->regs.INEP_REGS[ep->num]->DIEPCTL); depctl.d32 = USB_OTG_READ_REG32(depctl_addr); /* set the disable and stall bits */ if (depctl.b.epena) { depctl.b.epdis = 1; } depctl.b.stall = 1; USB_OTG_WRITE_REG32(depctl_addr, depctl.d32); } else { depctl_addr = &(pdev->regs.OUTEP_REGS[ep->num]->DOEPCTL); depctl.d32 = USB_OTG_READ_REG32(depctl_addr); /* set the stall bit */ depctl.b.stall = 1; USB_OTG_WRITE_REG32(depctl_addr, depctl.d32); } return status; } /** * @brief Clear the EP STALL * @param pdev : Selected device * @retval USB_OTG_STS : status */ USB_OTG_STS USB_OTG_EPClearStall(USB_OTG_CORE_HANDLE *pdev , USB_OTG_EP *ep) { USB_OTG_STS status = USB_OTG_OK; USB_OTG_DEPCTL_TypeDef depctl; __IO uint32_t *depctl_addr; depctl.d32 = 0; if (ep->is_in == 1) { depctl_addr = &(pdev->regs.INEP_REGS[ep->num]->DIEPCTL); } else { depctl_addr = &(pdev->regs.OUTEP_REGS[ep->num]->DOEPCTL); } depctl.d32 = USB_OTG_READ_REG32(depctl_addr); /* clear the stall bits */ depctl.b.stall = 0; if (ep->type == EP_TYPE_INTR || ep->type == EP_TYPE_BULK) { depctl.b.setd0pid = 1; /* DATA0 */ } USB_OTG_WRITE_REG32(depctl_addr, depctl.d32); return status; } /** * @brief USB_OTG_ReadDevAllOutEp_itr : returns OUT endpoint interrupt bits * @param pdev : Selected device * @retval OUT endpoint interrupt bits */ uint32_t USB_OTG_ReadDevAllOutEp_itr(USB_OTG_CORE_HANDLE *pdev) { uint32_t v; v = USB_OTG_READ_REG32(&pdev->regs.DREGS->DAINT); v &= USB_OTG_READ_REG32(&pdev->regs.DREGS->DAINTMSK); return ((v & 0xffff0000) >> 16); } /** * @brief USB_OTG_ReadDevOutEP_itr : returns Device OUT EP Interrupt register * @param pdev : Selected device * @param ep : end point number * @retval Device OUT EP Interrupt register */ uint32_t USB_OTG_ReadDevOutEP_itr(USB_OTG_CORE_HANDLE *pdev , uint8_t epnum) { uint32_t v; v = USB_OTG_READ_REG32(&pdev->regs.OUTEP_REGS[epnum]->DOEPINT); v &= USB_OTG_READ_REG32(&pdev->regs.DREGS->DOEPMSK); return v; } /** * @brief USB_OTG_ReadDevAllInEPItr : Get int status register * @param pdev : Selected device * @retval int status register */ uint32_t USB_OTG_ReadDevAllInEPItr(USB_OTG_CORE_HANDLE *pdev) { uint32_t v; v = USB_OTG_READ_REG32(&pdev->regs.DREGS->DAINT); v &= USB_OTG_READ_REG32(&pdev->regs.DREGS->DAINTMSK); return (v & 0xffff); } /** * @brief configures EPO to receive SETUP packets * @param None * @retval : None */ void USB_OTG_EP0_OutStart(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_DEP0XFRSIZ_TypeDef doeptsize0; doeptsize0.d32 = 0; doeptsize0.b.supcnt = 3; doeptsize0.b.pktcnt = 1; doeptsize0.b.xfersize = 8 * 3; USB_OTG_WRITE_REG32( &pdev->regs.OUTEP_REGS[0]->DOEPTSIZ, doeptsize0.d32 ); if (pdev->cfg.dma_enable == 1) { USB_OTG_DEPCTL_TypeDef doepctl; doepctl.d32 = 0; USB_OTG_WRITE_REG32( &pdev->regs.OUTEP_REGS[0]->DOEPDMA, (uint32_t)&pdev->dev.setup_packet); /* EP enable */ doepctl.d32 = USB_OTG_READ_REG32(&pdev->regs.OUTEP_REGS[0]->DOEPCTL); doepctl.b.epena = 1; doepctl.d32 = 0x80008000; USB_OTG_WRITE_REG32( &pdev->regs.OUTEP_REGS[0]->DOEPCTL, doepctl.d32); } } /** * @brief USB_OTG_RemoteWakeup : active remote wakeup signalling * @param None * @retval : None */ void USB_OTG_ActiveRemoteWakeup(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_DCTL_TypeDef dctl; USB_OTG_DSTS_TypeDef dsts; USB_OTG_PCGCCTL_TypeDef power; if (pdev->dev.DevRemoteWakeup) { dsts.d32 = USB_OTG_READ_REG32(&pdev->regs.DREGS->DSTS); if(dsts.b.suspsts == 1) { if(pdev->cfg.low_power) { /* un-gate USB Core clock */ power.d32 = USB_OTG_READ_REG32(pdev->regs.PCGCCTL); power.b.gatehclk = 0; power.b.stoppclk = 0; USB_OTG_WRITE_REG32(pdev->regs.PCGCCTL, power.d32); } /* active Remote wakeup signaling */ dctl.d32 = 0; dctl.b.rmtwkupsig = 1; USB_OTG_MODIFY_REG32(&pdev->regs.DREGS->DCTL, 0, dctl.d32); USB_OTG_BSP_mDelay(5); USB_OTG_MODIFY_REG32(&pdev->regs.DREGS->DCTL, dctl.d32, 0 ); } } } /** * @brief USB_OTG_UngateClock : active USB Core clock * @param None * @retval : None */ void USB_OTG_UngateClock(USB_OTG_CORE_HANDLE *pdev) { if(pdev->cfg.low_power) { USB_OTG_DSTS_TypeDef dsts; USB_OTG_PCGCCTL_TypeDef power; dsts.d32 = USB_OTG_READ_REG32(&pdev->regs.DREGS->DSTS); if(dsts.b.suspsts == 1) { /* un-gate USB Core clock */ power.d32 = USB_OTG_READ_REG32(pdev->regs.PCGCCTL); power.b.gatehclk = 0; power.b.stoppclk = 0; USB_OTG_WRITE_REG32(pdev->regs.PCGCCTL, power.d32); } } } /** * @brief Stop the device and clean up fifo's * @param None * @retval : None */ void USB_OTG_StopDevice(USB_OTG_CORE_HANDLE *pdev) { uint32_t i; pdev->dev.device_status = 1; for (i = 0; i < pdev->cfg.dev_endpoints ; i++) { USB_OTG_WRITE_REG32( &pdev->regs.INEP_REGS[i]->DIEPINT, 0xFF); USB_OTG_WRITE_REG32( &pdev->regs.OUTEP_REGS[i]->DOEPINT, 0xFF); } USB_OTG_WRITE_REG32( &pdev->regs.DREGS->DIEPMSK, 0 ); USB_OTG_WRITE_REG32( &pdev->regs.DREGS->DOEPMSK, 0 ); USB_OTG_WRITE_REG32( &pdev->regs.DREGS->DAINTMSK, 0 ); USB_OTG_WRITE_REG32( &pdev->regs.DREGS->DAINT, 0xFFFFFFFF ); /* Flush the FIFO */ USB_OTG_FlushRxFifo(pdev); USB_OTG_FlushTxFifo(pdev , 0x10 ); } /** * @brief returns the EP Status * @param pdev : Selected device * ep : endpoint structure * @retval : EP status */ uint32_t USB_OTG_GetEPStatus(USB_OTG_CORE_HANDLE *pdev ,USB_OTG_EP *ep) { USB_OTG_DEPCTL_TypeDef depctl; __IO uint32_t *depctl_addr; uint32_t Status = 0; depctl.d32 = 0; if (ep->is_in == 1) { depctl_addr = &(pdev->regs.INEP_REGS[ep->num]->DIEPCTL); depctl.d32 = USB_OTG_READ_REG32(depctl_addr); if (depctl.b.stall == 1) Status = USB_OTG_EP_TX_STALL; else if (depctl.b.naksts == 1) Status = USB_OTG_EP_TX_NAK; else Status = USB_OTG_EP_TX_VALID; } else { depctl_addr = &(pdev->regs.OUTEP_REGS[ep->num]->DOEPCTL); depctl.d32 = USB_OTG_READ_REG32(depctl_addr); if (depctl.b.stall == 1) Status = USB_OTG_EP_RX_STALL; else if (depctl.b.naksts == 1) Status = USB_OTG_EP_RX_NAK; else Status = USB_OTG_EP_RX_VALID; } /* Return the current status */ return Status; } /** * @brief Set the EP Status * @param pdev : Selected device * Status : new Status * ep : EP structure * @retval : None */ void USB_OTG_SetEPStatus (USB_OTG_CORE_HANDLE *pdev , USB_OTG_EP *ep , uint32_t Status) { USB_OTG_DEPCTL_TypeDef depctl; __IO uint32_t *depctl_addr; depctl.d32 = 0; /* Process for IN endpoint */ if (ep->is_in == 1) { depctl_addr = &(pdev->regs.INEP_REGS[ep->num]->DIEPCTL); depctl.d32 = USB_OTG_READ_REG32(depctl_addr); if (Status == USB_OTG_EP_TX_STALL) { USB_OTG_EPSetStall(pdev, ep); return; } else if (Status == USB_OTG_EP_TX_NAK) depctl.b.snak = 1; else if (Status == USB_OTG_EP_TX_VALID) { if (depctl.b.stall == 1) { ep->even_odd_frame = 0; USB_OTG_EPClearStall(pdev, ep); return; } depctl.b.cnak = 1; depctl.b.usbactep = 1; depctl.b.epena = 1; } else if (Status == USB_OTG_EP_TX_DIS) depctl.b.usbactep = 0; } else /* Process for OUT endpoint */ { depctl_addr = &(pdev->regs.OUTEP_REGS[ep->num]->DOEPCTL); depctl.d32 = USB_OTG_READ_REG32(depctl_addr); if (Status == USB_OTG_EP_RX_STALL) { depctl.b.stall = 1; } else if (Status == USB_OTG_EP_RX_NAK) depctl.b.snak = 1; else if (Status == USB_OTG_EP_RX_VALID) { if (depctl.b.stall == 1) { ep->even_odd_frame = 0; USB_OTG_EPClearStall(pdev, ep); return; } depctl.b.cnak = 1; depctl.b.usbactep = 1; depctl.b.epena = 1; } else if (Status == USB_OTG_EP_RX_DIS) { depctl.b.usbactep = 0; } } USB_OTG_WRITE_REG32(depctl_addr, depctl.d32); } #endif /** * @} */ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_lib/otg/usb_core.h000066400000000000000000000274451445607075400200330ustar00rootroot00000000000000/** ****************************************************************************** * @file usb_core.h * @author MCD Application Team * @version V2.0.0 * @date 22-July-2011 * @brief Header of the Core Layer ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __USB_CORE_H__ #define __USB_CORE_H__ /* Includes ------------------------------------------------------------------*/ #include "usb_conf.h" #include "usb_regs.h" #include "usb_defines.h" /** @addtogroup USB_OTG_DRIVER * @{ */ /** @defgroup USB_CORE * @brief usb otg driver core layer * @{ */ /** @defgroup USB_CORE_Exported_Defines * @{ */ #define USB_OTG_EP0_IDLE 0 #define USB_OTG_EP0_SETUP 1 #define USB_OTG_EP0_DATA_IN 2 #define USB_OTG_EP0_DATA_OUT 3 #define USB_OTG_EP0_STATUS_IN 4 #define USB_OTG_EP0_STATUS_OUT 5 #define USB_OTG_EP0_STALL 6 #define USB_OTG_EP_TX_DIS 0x0000 #define USB_OTG_EP_TX_STALL 0x0010 #define USB_OTG_EP_TX_NAK 0x0020 #define USB_OTG_EP_TX_VALID 0x0030 #define USB_OTG_EP_RX_DIS 0x0000 #define USB_OTG_EP_RX_STALL 0x1000 #define USB_OTG_EP_RX_NAK 0x2000 #define USB_OTG_EP_RX_VALID 0x3000 /** * @} */ #define MAX_DATA_LENGTH 0xFF /** @defgroup USB_CORE_Exported_Types * @{ */ typedef enum { USB_OTG_OK = 0, USB_OTG_FAIL }USB_OTG_STS; typedef enum { HC_IDLE = 0, HC_XFRC, HC_HALTED, HC_NAK, HC_NYET, HC_STALL, HC_XACTERR, HC_BBLERR, HC_DATATGLERR, }HC_STATUS; typedef enum { URB_IDLE = 0, URB_DONE, URB_NOTREADY, URB_ERROR, URB_STALL }URB_STATE; typedef enum { CTRL_START = 0, CTRL_XFRC, CTRL_HALTED, CTRL_NAK, CTRL_STALL, CTRL_XACTERR, CTRL_BBLERR, CTRL_DATATGLERR, CTRL_FAIL }CTRL_STATUS; typedef struct USB_OTG_hc { uint8_t dev_addr ; uint8_t ep_num; uint8_t ep_is_in; uint8_t speed; uint8_t do_ping; uint8_t ep_type; uint16_t max_packet; uint8_t data_pid; uint8_t *xfer_buff; uint32_t xfer_len; uint32_t xfer_count; uint8_t toggle_in; uint8_t toggle_out; uint32_t dma_addr; } USB_OTG_HC , *PUSB_OTG_HC; typedef struct USB_OTG_ep { uint8_t num; uint8_t is_in; uint8_t is_stall; uint8_t type; uint8_t data_pid_start; uint8_t even_odd_frame; uint16_t tx_fifo_num; uint32_t maxpacket; /* transaction level variables*/ uint8_t *xfer_buff; uint32_t dma_addr; uint32_t xfer_len; uint32_t xfer_count; /* Transfer level variables*/ uint32_t rem_data_len; uint32_t total_data_len; uint32_t ctl_data_len; } USB_OTG_EP , *PUSB_OTG_EP; typedef struct USB_OTG_core_cfg { uint8_t host_channels; uint8_t dev_endpoints; uint8_t speed; uint8_t dma_enable; uint16_t mps; uint16_t TotalFifoSize; uint8_t phy_itface; uint8_t Sof_output; uint8_t low_power; uint8_t coreID; } USB_OTG_CORE_CFGS, *PUSB_OTG_CORE_CFGS; typedef struct usb_setup_req { uint8_t bmRequest; uint8_t bRequest; uint16_t wValue; uint16_t wIndex; uint16_t wLength; } USB_SETUP_REQ; typedef struct _Device_TypeDef { uint8_t *(*GetDeviceDescriptor)( uint8_t speed , uint16_t *length); uint8_t *(*GetLangIDStrDescriptor)( uint8_t speed , uint16_t *length); uint8_t *(*GetManufacturerStrDescriptor)( uint8_t speed , uint16_t *length); uint8_t *(*GetProductStrDescriptor)( uint8_t speed , uint16_t *length); uint8_t *(*GetSerialStrDescriptor)( uint8_t speed , uint16_t *length); uint8_t *(*GetConfigurationStrDescriptor)( uint8_t speed , uint16_t *length); uint8_t *(*GetInterfaceStrDescriptor)( uint8_t speed , uint16_t *length); } USBD_DEVICE, *pUSBD_DEVICE; typedef struct USB_OTG_hPort { void (*Disconnect) (void *phost); void (*Connect) (void *phost); uint8_t ConnStatus; uint8_t DisconnStatus; uint8_t ConnHandled; uint8_t DisconnHandled; } USB_OTG_hPort_TypeDef; typedef struct _Device_cb { uint8_t (*Init) (void *pdev , uint8_t cfgidx); uint8_t (*DeInit) (void *pdev , uint8_t cfgidx); /* Control Endpoints*/ uint8_t (*Setup) (void *pdev , USB_SETUP_REQ *req); uint8_t (*EP0_TxSent) (void *pdev ); uint8_t (*EP0_RxReady) (void *pdev ); /* Class Specific Endpoints*/ uint8_t (*DataIn) (void *pdev , uint8_t epnum); uint8_t (*DataOut) (void *pdev , uint8_t epnum); uint8_t (*SOF) (void *pdev); uint8_t (*IsoINIncomplete) (void *pdev); uint8_t (*IsoOUTIncomplete) (void *pdev); uint8_t *(*GetConfigDescriptor)( uint8_t speed , uint16_t *length); #ifdef USB_OTG_HS_CORE uint8_t *(*GetOtherConfigDescriptor)( uint8_t speed , uint16_t *length); #endif #ifdef USB_SUPPORT_USER_STRING_DESC uint8_t *(*GetUsrStrDescriptor)( uint8_t speed ,uint8_t index, uint16_t *length); #endif } USBD_Class_cb_TypeDef; typedef struct _USBD_USR_PROP { void (*Init)(void); void (*DeviceReset)(uint8_t speed); void (*DeviceConfigured)(void); void (*DeviceSuspended)(void); void (*DeviceResumed)(void); void (*DeviceConnected)(void); void (*DeviceDisconnected)(void); } USBD_Usr_cb_TypeDef; typedef struct _DCD { uint8_t device_config; uint8_t device_state; uint8_t device_status; uint8_t device_address; uint32_t DevRemoteWakeup; USB_OTG_EP in_ep [USB_OTG_MAX_TX_FIFOS]; USB_OTG_EP out_ep [USB_OTG_MAX_TX_FIFOS]; uint8_t setup_packet [8*3]; USBD_Class_cb_TypeDef *class_cb; USBD_Usr_cb_TypeDef *usr_cb; USBD_DEVICE *usr_device; uint8_t *pConfig_descriptor; } DCD_DEV , *DCD_PDEV; typedef struct _HCD { uint8_t Rx_Buffer [MAX_DATA_LENGTH]; __IO uint32_t ConnSts; __IO uint32_t ErrCnt[USB_OTG_MAX_TX_FIFOS]; __IO uint32_t XferCnt[USB_OTG_MAX_TX_FIFOS]; __IO HC_STATUS HC_Status[USB_OTG_MAX_TX_FIFOS]; __IO URB_STATE URB_State[USB_OTG_MAX_TX_FIFOS]; USB_OTG_HC hc [USB_OTG_MAX_TX_FIFOS]; uint16_t channel [USB_OTG_MAX_TX_FIFOS]; USB_OTG_hPort_TypeDef *port_cb; } HCD_DEV , *USB_OTG_USBH_PDEV; typedef struct _OTG { uint8_t OTG_State; uint8_t OTG_PrevState; uint8_t OTG_Mode; } OTG_DEV , *USB_OTG_USBO_PDEV; typedef struct USB_OTG_handle { USB_OTG_CORE_CFGS cfg; USB_OTG_CORE_REGS regs; #ifdef USE_DEVICE_MODE DCD_DEV dev; #endif #ifdef USE_HOST_MODE HCD_DEV host; #endif #ifdef USE_OTG_MODE OTG_DEV otg; #endif } USB_OTG_CORE_HANDLE , *PUSB_OTG_CORE_HANDLE; /** * @} */ /** @defgroup USB_CORE_Exported_Macros * @{ */ /** * @} */ /** @defgroup USB_CORE_Exported_Variables * @{ */ /** * @} */ /** @defgroup USB_CORE_Exported_FunctionsPrototype * @{ */ USB_OTG_STS USB_OTG_CoreInit (USB_OTG_CORE_HANDLE *pdev); USB_OTG_STS USB_OTG_SelectCore (USB_OTG_CORE_HANDLE *pdev, USB_OTG_CORE_ID_TypeDef coreID); USB_OTG_STS USB_OTG_EnableGlobalInt (USB_OTG_CORE_HANDLE *pdev); USB_OTG_STS USB_OTG_DisableGlobalInt(USB_OTG_CORE_HANDLE *pdev); void* USB_OTG_ReadPacket (USB_OTG_CORE_HANDLE *pdev , uint8_t *dest, uint16_t len); USB_OTG_STS USB_OTG_WritePacket (USB_OTG_CORE_HANDLE *pdev , uint8_t *src, uint8_t ch_ep_num, uint16_t len); USB_OTG_STS USB_OTG_FlushTxFifo (USB_OTG_CORE_HANDLE *pdev , uint32_t num); USB_OTG_STS USB_OTG_FlushRxFifo (USB_OTG_CORE_HANDLE *pdev); uint32_t USB_OTG_ReadCoreItr (USB_OTG_CORE_HANDLE *pdev); uint32_t USB_OTG_ReadOtgItr (USB_OTG_CORE_HANDLE *pdev); uint8_t USB_OTG_IsHostMode (USB_OTG_CORE_HANDLE *pdev); uint8_t USB_OTG_IsDeviceMode (USB_OTG_CORE_HANDLE *pdev); uint32_t USB_OTG_GetMode (USB_OTG_CORE_HANDLE *pdev); USB_OTG_STS USB_OTG_PhyInit (USB_OTG_CORE_HANDLE *pdev); USB_OTG_STS USB_OTG_SetCurrentMode (USB_OTG_CORE_HANDLE *pdev, uint8_t mode); /*********************** HOST APIs ********************************************/ #ifdef USE_HOST_MODE USB_OTG_STS USB_OTG_CoreInitHost (USB_OTG_CORE_HANDLE *pdev); USB_OTG_STS USB_OTG_EnableHostInt (USB_OTG_CORE_HANDLE *pdev); USB_OTG_STS USB_OTG_HC_Init (USB_OTG_CORE_HANDLE *pdev, uint8_t hc_num); USB_OTG_STS USB_OTG_HC_Halt (USB_OTG_CORE_HANDLE *pdev, uint8_t hc_num); USB_OTG_STS USB_OTG_HC_StartXfer (USB_OTG_CORE_HANDLE *pdev, uint8_t hc_num); USB_OTG_STS USB_OTG_HC_DoPing (USB_OTG_CORE_HANDLE *pdev , uint8_t hc_num); uint32_t USB_OTG_ReadHostAllChannels_intr (USB_OTG_CORE_HANDLE *pdev); uint32_t USB_OTG_ResetPort (USB_OTG_CORE_HANDLE *pdev); uint32_t USB_OTG_ReadHPRT0 (USB_OTG_CORE_HANDLE *pdev); void USB_OTG_DriveVbus (USB_OTG_CORE_HANDLE *pdev, uint8_t state); void USB_OTG_InitFSLSPClkSel (USB_OTG_CORE_HANDLE *pdev ,uint8_t freq); uint8_t USB_OTG_IsEvenFrame (USB_OTG_CORE_HANDLE *pdev) ; void USB_OTG_StopHost (USB_OTG_CORE_HANDLE *pdev); #endif /********************* DEVICE APIs ********************************************/ #ifdef USE_DEVICE_MODE USB_OTG_STS USB_OTG_CoreInitDev (USB_OTG_CORE_HANDLE *pdev); USB_OTG_STS USB_OTG_EnableDevInt (USB_OTG_CORE_HANDLE *pdev); uint32_t USB_OTG_ReadDevAllInEPItr (USB_OTG_CORE_HANDLE *pdev); enum USB_OTG_SPEED USB_OTG_GetDeviceSpeed (USB_OTG_CORE_HANDLE *pdev); USB_OTG_STS USB_OTG_EP0Activate (USB_OTG_CORE_HANDLE *pdev); USB_OTG_STS USB_OTG_EPActivate (USB_OTG_CORE_HANDLE *pdev , USB_OTG_EP *ep); USB_OTG_STS USB_OTG_EPDeactivate(USB_OTG_CORE_HANDLE *pdev , USB_OTG_EP *ep); USB_OTG_STS USB_OTG_EPStartXfer (USB_OTG_CORE_HANDLE *pdev , USB_OTG_EP *ep); USB_OTG_STS USB_OTG_EP0StartXfer(USB_OTG_CORE_HANDLE *pdev , USB_OTG_EP *ep); USB_OTG_STS USB_OTG_EPSetStall (USB_OTG_CORE_HANDLE *pdev , USB_OTG_EP *ep); USB_OTG_STS USB_OTG_EPClearStall (USB_OTG_CORE_HANDLE *pdev , USB_OTG_EP *ep); uint32_t USB_OTG_ReadDevAllOutEp_itr (USB_OTG_CORE_HANDLE *pdev); uint32_t USB_OTG_ReadDevOutEP_itr (USB_OTG_CORE_HANDLE *pdev , uint8_t epnum); uint32_t USB_OTG_ReadDevAllInEPItr (USB_OTG_CORE_HANDLE *pdev); void USB_OTG_InitDevSpeed (USB_OTG_CORE_HANDLE *pdev , uint8_t speed); uint8_t USBH_IsEvenFrame (USB_OTG_CORE_HANDLE *pdev); void USB_OTG_EP0_OutStart(USB_OTG_CORE_HANDLE *pdev); void USB_OTG_ActiveRemoteWakeup(USB_OTG_CORE_HANDLE *pdev); void USB_OTG_UngateClock(USB_OTG_CORE_HANDLE *pdev); void USB_OTG_StopDevice(USB_OTG_CORE_HANDLE *pdev); void USB_OTG_SetEPStatus (USB_OTG_CORE_HANDLE *pdev , USB_OTG_EP *ep , uint32_t Status); uint32_t USB_OTG_GetEPStatus(USB_OTG_CORE_HANDLE *pdev ,USB_OTG_EP *ep); #endif /** * @} */ #endif /* __USB_CORE_H__ */ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_lib/otg/usb_dcd.c000066400000000000000000000220261445607075400176160ustar00rootroot00000000000000/** ****************************************************************************** * @file usb_dcd.c * @author MCD Application Team * @version V2.0.0 * @date 22-July-2011 * @brief Peripheral Device Interface Layer ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ #include "usb_conf.h" #ifdef USE_DEVICE_MODE /* Includes ------------------------------------------------------------------*/ #include "usb_dcd.h" #include "usb_bsp.h" /** @addtogroup USB_OTG_DRIVER * @{ */ /** @defgroup USB_DCD * @brief This file is the interface between EFSL and Host mass-storage class * @{ */ /** @defgroup USB_DCD_Private_Defines * @{ */ /** * @} */ /** @defgroup USB_DCD_Private_TypesDefinitions * @{ */ /** * @} */ /** @defgroup USB_DCD_Private_Macros * @{ */ /** * @} */ /** @defgroup USB_DCD_Private_Variables * @{ */ /** * @} */ /** @defgroup USB_DCD_Private_FunctionPrototypes * @{ */ /** * @} */ /** @defgroup USB_DCD_Private_Functions * @{ */ void DCD_Init(USB_OTG_CORE_HANDLE *pdev , USB_OTG_CORE_ID_TypeDef coreID) { uint32_t i; USB_OTG_EP *ep; USB_OTG_SelectCore (pdev , coreID); pdev->dev.device_status = USB_OTG_DEFAULT; pdev->dev.device_address = 0; /* Init ep structure */ for (i = 0; i < pdev->cfg.dev_endpoints ; i++) { ep = &pdev->dev.in_ep[i]; /* Init ep structure */ ep->is_in = 1; ep->num = i; ep->tx_fifo_num = i; /* Control until ep is activated */ ep->type = EP_TYPE_CTRL; ep->maxpacket = USB_OTG_MAX_EP0_SIZE; ep->xfer_buff = 0; ep->xfer_len = 0; } for (i = 0; i < pdev->cfg.dev_endpoints; i++) { ep = &pdev->dev.out_ep[i]; /* Init ep structure */ ep->is_in = 0; ep->num = i; ep->tx_fifo_num = i; /* Control until ep is activated */ ep->type = EP_TYPE_CTRL; ep->maxpacket = USB_OTG_MAX_EP0_SIZE; ep->xfer_buff = 0; ep->xfer_len = 0; } USB_OTG_DisableGlobalInt(pdev); /*Init the Core (common init.) */ USB_OTG_CoreInit(pdev); /* Force Device Mode*/ USB_OTG_SetCurrentMode(pdev, DEVICE_MODE); /* Init Device */ USB_OTG_CoreInitDev(pdev); /* Enable USB Global interrupt */ USB_OTG_EnableGlobalInt(pdev); } /** * @brief Configure an EP * @param pdev : Device instance * @param epdesc : Endpoint Descriptor * @retval : status */ uint32_t DCD_EP_Open(USB_OTG_CORE_HANDLE *pdev , uint8_t ep_addr, uint16_t ep_mps, uint8_t ep_type) { USB_OTG_EP *ep; if ((ep_addr & 0x80) == 0x80) { ep = &pdev->dev.in_ep[ep_addr & 0x7F]; } else { ep = &pdev->dev.out_ep[ep_addr & 0x7F]; } ep->num = ep_addr & 0x7F; ep->is_in = (0x80 & ep_addr) != 0; ep->maxpacket = ep_mps; ep->type = ep_type; if (ep->is_in) { /* Assign a Tx FIFO */ ep->tx_fifo_num = ep->num; } /* Set initial data PID. */ if (ep_type == USB_OTG_EP_BULK ) { ep->data_pid_start = 0; } USB_OTG_EPActivate(pdev , ep ); return 0; } /** * @brief called when an EP is disabled * @param pdev: device instance * @param ep_addr: endpoint address * @retval : status */ uint32_t DCD_EP_Close(USB_OTG_CORE_HANDLE *pdev , uint8_t ep_addr) { USB_OTG_EP *ep; if ((ep_addr&0x80) == 0x80) { ep = &pdev->dev.in_ep[ep_addr & 0x7F]; } else { ep = &pdev->dev.out_ep[ep_addr & 0x7F]; } ep->num = ep_addr & 0x7F; ep->is_in = (0x80 & ep_addr) != 0; USB_OTG_EPDeactivate(pdev , ep ); return 0; } /** * @brief DCD_EP_PrepareRx * @param pdev: device instance * @param ep_addr: endpoint address * @param pbuf: pointer to Rx buffer * @param buf_len: data length * @retval : status */ uint32_t DCD_EP_PrepareRx( USB_OTG_CORE_HANDLE *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t buf_len) { USB_OTG_EP *ep; ep = &pdev->dev.out_ep[ep_addr & 0x7F]; /*setup and start the Xfer */ ep->xfer_buff = pbuf; ep->xfer_len = buf_len; ep->xfer_count = 0; ep->is_in = 0; ep->num = ep_addr & 0x7F; if (pdev->cfg.dma_enable == 1) { ep->dma_addr = (uint32_t)pbuf; } if ( ep->num == 0 ) { USB_OTG_EP0StartXfer(pdev , ep); } else { USB_OTG_EPStartXfer(pdev, ep ); } return 0; } /** * @brief Transmit data over USB * @param pdev: device instance * @param ep_addr: endpoint address * @param pbuf: pointer to Tx buffer * @param buf_len: data length * @retval : status */ uint32_t DCD_EP_Tx ( USB_OTG_CORE_HANDLE *pdev, uint8_t ep_addr, uint8_t *pbuf, uint32_t buf_len) { USB_OTG_EP *ep; ep = &pdev->dev.in_ep[ep_addr & 0x7F]; /* Setup and start the Transfer */ ep->is_in = 1; ep->num = ep_addr & 0x7F; ep->xfer_buff = pbuf; ep->dma_addr = (uint32_t)pbuf; ep->xfer_count = 0; ep->xfer_len = buf_len; if ( ep->num == 0 ) { USB_OTG_EP0StartXfer(pdev , ep); } else { USB_OTG_EPStartXfer(pdev, ep ); } return 0; } /** * @brief Stall an endpoint. * @param pdev: device instance * @param epnum: endpoint address * @retval : status */ uint32_t DCD_EP_Stall (USB_OTG_CORE_HANDLE *pdev, uint8_t epnum) { USB_OTG_EP *ep; if ((0x80 & epnum) == 0x80) { ep = &pdev->dev.in_ep[epnum & 0x7F]; } else { ep = &pdev->dev.out_ep[epnum]; } ep->is_stall = 1; ep->num = epnum & 0x7F; ep->is_in = ((epnum & 0x80) == 0x80); USB_OTG_EPSetStall(pdev , ep); return (0); } /** * @brief Clear stall condition on endpoints. * @param pdev: device instance * @param epnum: endpoint address * @retval : status */ uint32_t DCD_EP_ClrStall (USB_OTG_CORE_HANDLE *pdev, uint8_t epnum) { USB_OTG_EP *ep; if ((0x80 & epnum) == 0x80) { ep = &pdev->dev.in_ep[epnum & 0x7F]; } else { ep = &pdev->dev.out_ep[epnum]; } ep->is_stall = 0; ep->num = epnum & 0x7F; ep->is_in = ((epnum & 0x80) == 0x80); USB_OTG_EPClearStall(pdev , ep); return (0); } /** * @brief This Function flushes the FIFOs. * @param pdev: device instance * @param epnum: endpoint address * @retval : status */ uint32_t DCD_EP_Flush (USB_OTG_CORE_HANDLE *pdev , uint8_t epnum) { if ((epnum & 0x80) == 0x80) { USB_OTG_FlushTxFifo(pdev, epnum & 0x7F); } else { USB_OTG_FlushRxFifo(pdev); } return (0); } /** * @brief This Function set USB device address * @param pdev: device instance * @param address: new device address * @retval : status */ void DCD_EP_SetAddress (USB_OTG_CORE_HANDLE *pdev, uint8_t address) { USB_OTG_DCFG_TypeDef dcfg; dcfg.d32 = 0; dcfg.b.devaddr = address; USB_OTG_MODIFY_REG32( &pdev->regs.DREGS->DCFG, 0, dcfg.d32); } /** * @brief Connect device (enable internal pull-up) * @param pdev: device instance * @retval : None */ void DCD_DevConnect (USB_OTG_CORE_HANDLE *pdev) { #ifndef USE_OTG_MODE USB_OTG_DCTL_TypeDef dctl; dctl.d32 = USB_OTG_READ_REG32(&pdev->regs.DREGS->DCTL); /* Connect device */ dctl.b.sftdiscon = 0; USB_OTG_WRITE_REG32(&pdev->regs.DREGS->DCTL, dctl.d32); USB_OTG_BSP_mDelay(3); #endif } /** * @brief Disconnect device (disable internal pull-up) * @param pdev: device instance * @retval : None */ void DCD_DevDisconnect (USB_OTG_CORE_HANDLE *pdev) { #ifndef USE_OTG_MODE USB_OTG_DCTL_TypeDef dctl; dctl.d32 = USB_OTG_READ_REG32(&pdev->regs.DREGS->DCTL); /* Disconnect device for 3ms */ dctl.b.sftdiscon = 1; USB_OTG_WRITE_REG32(&pdev->regs.DREGS->DCTL, dctl.d32); USB_OTG_BSP_mDelay(3); #endif } /** * @brief returns the EP Status * @param pdev : Selected device * epnum : endpoint address * @retval : EP status */ uint32_t DCD_GetEPStatus(USB_OTG_CORE_HANDLE *pdev ,uint8_t epnum) { USB_OTG_EP *ep; uint32_t Status = 0; if ((0x80 & epnum) == 0x80) { ep = &pdev->dev.in_ep[epnum & 0x7F]; } else { ep = &pdev->dev.out_ep[epnum]; } Status = USB_OTG_GetEPStatus(pdev ,ep); /* Return the current status */ return Status; } /** * @brief Set the EP Status * @param pdev : Selected device * Status : new Status * epnum : EP address * @retval : None */ void DCD_SetEPStatus (USB_OTG_CORE_HANDLE *pdev , uint8_t epnum , uint32_t Status) { USB_OTG_EP *ep; if ((0x80 & epnum) == 0x80) { ep = &pdev->dev.in_ep[epnum & 0x7F]; } else { ep = &pdev->dev.out_ep[epnum]; } USB_OTG_SetEPStatus(pdev ,ep , Status); } /** * @} */ /** * @} */ /** * @} */ #endif /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_lib/otg/usb_dcd.h000066400000000000000000000104161445607075400176230ustar00rootroot00000000000000/** ****************************************************************************** * @file usb_dcd.h * @author MCD Application Team * @version V2.0.0 * @date 22-July-2011 * @brief Peripheral Driver Header file ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __DCD_H__ #define __DCD_H__ /* Includes ------------------------------------------------------------------*/ #include "usb_core.h" /** @addtogroup USB_OTG_DRIVER * @{ */ /** @defgroup USB_DCD * @brief This file is the * @{ */ /** @defgroup USB_DCD_Exported_Defines * @{ */ #define USB_OTG_EP_CONTROL 0 #define USB_OTG_EP_ISOC 1 #define USB_OTG_EP_BULK 2 #define USB_OTG_EP_INT 3 #define USB_OTG_EP_MASK 3 /* Device Status */ #define USB_OTG_DEFAULT 1 #define USB_OTG_ADDRESSED 2 #define USB_OTG_CONFIGURED 3 #define USB_OTG_SUSPENDED 4 /** * @} */ /** @defgroup USB_DCD_Exported_Types * @{ */ /******************************************************************************** Data structure type ********************************************************************************/ typedef struct { uint8_t bLength; uint8_t bDescriptorType; uint8_t bEndpointAddress; uint8_t bmAttributes; uint16_t wMaxPacketSize; uint8_t bInterval; } EP_DESCRIPTOR , *PEP_DESCRIPTOR; /** * @} */ /** @defgroup USB_DCD_Exported_Macros * @{ */ /** * @} */ /** @defgroup USB_DCD_Exported_Variables * @{ */ /** * @} */ /** @defgroup USB_DCD_Exported_FunctionsPrototype * @{ */ /******************************************************************************** EXPORTED FUNCTION FROM THE USB-OTG LAYER ********************************************************************************/ void DCD_Init(USB_OTG_CORE_HANDLE *pdev , USB_OTG_CORE_ID_TypeDef coreID); void DCD_DevConnect (USB_OTG_CORE_HANDLE *pdev); void DCD_DevDisconnect (USB_OTG_CORE_HANDLE *pdev); void DCD_EP_SetAddress (USB_OTG_CORE_HANDLE *pdev, uint8_t address); uint32_t DCD_EP_Open(USB_OTG_CORE_HANDLE *pdev , uint8_t ep_addr, uint16_t ep_mps, uint8_t ep_type); uint32_t DCD_EP_Close (USB_OTG_CORE_HANDLE *pdev, uint8_t ep_addr); uint32_t DCD_EP_PrepareRx ( USB_OTG_CORE_HANDLE *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t buf_len); uint32_t DCD_EP_Tx (USB_OTG_CORE_HANDLE *pdev, uint8_t ep_addr, uint8_t *pbuf, uint32_t buf_len); uint32_t DCD_EP_Stall (USB_OTG_CORE_HANDLE *pdev, uint8_t epnum); uint32_t DCD_EP_ClrStall (USB_OTG_CORE_HANDLE *pdev, uint8_t epnum); uint32_t DCD_EP_Flush (USB_OTG_CORE_HANDLE *pdev, uint8_t epnum); uint32_t DCD_Handle_ISR(USB_OTG_CORE_HANDLE *pdev); uint32_t DCD_GetEPStatus(USB_OTG_CORE_HANDLE *pdev , uint8_t epnum); void DCD_SetEPStatus (USB_OTG_CORE_HANDLE *pdev , uint8_t epnum , uint32_t Status); /** * @} */ #endif //__DCD_H__ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_lib/otg/usb_dcd_int.c000066400000000000000000000522421445607075400204730ustar00rootroot00000000000000/** ****************************************************************************** * @file usb_dcd_int.c * @author MCD Application Team * @version V2.0.0 * @date 22-July-2011 * @brief Peripheral Device interrupt subroutines ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ #include "usb_conf.h" #ifdef USE_DEVICE_MODE /* Includes ------------------------------------------------------------------*/ #include "usb_dcd_int.h" /** @addtogroup USB_OTG_DRIVER * @{ */ /** @defgroup USB_DCD_INT * @brief This file contains the interrupt subroutines for the Device mode. * @{ */ /** @defgroup USB_DCD_INT_Private_Defines * @{ */ /** * @} */ /** @defgroup USB_DCD_INT_Private_TypesDefinitions * @{ */ /** * @} */ /** @defgroup USB_DCD_INT_Private_Macros * @{ */ /** * @} */ /** @defgroup USB_DCD_INT_Private_Variables * @{ */ /** * @} */ /** @defgroup USB_DCD_INT_Private_FunctionPrototypes * @{ */ /* static functions */ static uint32_t DCD_ReadDevInEP (USB_OTG_CORE_HANDLE *pdev, uint8_t epnum); /* Interrupt Handlers */ static uint32_t DCD_HandleInEP_ISR(USB_OTG_CORE_HANDLE *pdev); static uint32_t DCD_HandleOutEP_ISR(USB_OTG_CORE_HANDLE *pdev); static uint32_t DCD_HandleSof_ISR(USB_OTG_CORE_HANDLE *pdev); static uint32_t DCD_HandleRxStatusQueueLevel_ISR(USB_OTG_CORE_HANDLE *pdev); static uint32_t DCD_WriteEmptyTxFifo(USB_OTG_CORE_HANDLE *pdev , uint32_t epnum); static uint32_t DCD_HandleUsbReset_ISR(USB_OTG_CORE_HANDLE *pdev); static uint32_t DCD_HandleEnumDone_ISR(USB_OTG_CORE_HANDLE *pdev); static uint32_t DCD_HandleResume_ISR(USB_OTG_CORE_HANDLE *pdev); static uint32_t DCD_HandleUSBSuspend_ISR(USB_OTG_CORE_HANDLE *pdev); static uint32_t DCD_IsoINIncomplete_ISR(USB_OTG_CORE_HANDLE *pdev); static uint32_t DCD_IsoOUTIncomplete_ISR(USB_OTG_CORE_HANDLE *pdev); #ifdef VBUS_SENSING_ENABLED static uint32_t DCD_SessionRequest_ISR(USB_OTG_CORE_HANDLE *pdev); static uint32_t DCD_OTG_ISR(USB_OTG_CORE_HANDLE *pdev); #endif /** * @} */ /** @defgroup USB_DCD_INT_Private_Functions * @{ */ #ifdef USB_OTG_HS_DEDICATED_EP1_ENABLED /** * @brief USBD_OTG_EP1OUT_ISR_Handler * handles all USB Interrupts * @param pdev: device instance * @retval status */ uint32_t USBD_OTG_EP1OUT_ISR_Handler (USB_OTG_CORE_HANDLE *pdev) { USB_OTG_DOEPINTn_TypeDef doepint; USB_OTG_DEPXFRSIZ_TypeDef deptsiz; doepint.d32 = USB_OTG_READ_REG32(&pdev->regs.OUTEP_REGS[1]->DOEPINT); doepint.d32&= USB_OTG_READ_REG32(&pdev->regs.DREGS->DOUTEP1MSK); /* Transfer complete */ if ( doepint.b.xfercompl ) { /* Clear the bit in DOEPINTn for this interrupt */ CLEAR_OUT_EP_INTR(1, xfercompl); if (pdev->cfg.dma_enable == 1) { deptsiz.d32 = USB_OTG_READ_REG32(&(pdev->regs.OUTEP_REGS[1]->DOEPTSIZ)); /*ToDo : handle more than one single MPS size packet */ pdev->dev.out_ep[1].xfer_count = pdev->dev.out_ep[1].maxpacket - \ deptsiz.b.xfersize; } /* Inform upper layer: data ready */ /* RX COMPLETE */ USBD_DCD_INT_fops->DataOutStage(pdev , 1); } /* Endpoint disable */ if ( doepint.b.epdisabled ) { /* Clear the bit in DOEPINTn for this interrupt */ CLEAR_OUT_EP_INTR(1, epdisabled); } /* AHB Error */ if ( doepint.b.ahberr ) { CLEAR_OUT_EP_INTR(1, ahberr); } return 1; } /** * @brief USBD_OTG_EP1IN_ISR_Handler * handles all USB Interrupts * @param pdev: device instance * @retval status */ uint32_t USBD_OTG_EP1IN_ISR_Handler (USB_OTG_CORE_HANDLE *pdev) { USB_OTG_DIEPINTn_TypeDef diepint; uint32_t fifoemptymsk, msk, emp; msk = USB_OTG_READ_REG32(&pdev->regs.DREGS->DINEP1MSK); emp = USB_OTG_READ_REG32(&pdev->regs.DREGS->DIEPEMPMSK); msk |= ((emp >> 1 ) & 0x1) << 7; diepint.d32 = USB_OTG_READ_REG32(&pdev->regs.INEP_REGS[1]->DIEPINT) & msk; if ( diepint.b.xfercompl ) { fifoemptymsk = 0x1 << 1; USB_OTG_MODIFY_REG32(&pdev->regs.DREGS->DIEPEMPMSK, fifoemptymsk, 0); CLEAR_IN_EP_INTR(1, xfercompl); /* TX COMPLETE */ USBD_DCD_INT_fops->DataInStage(pdev , 1); } if ( diepint.b.ahberr ) { CLEAR_IN_EP_INTR(1, ahberr); } if ( diepint.b.epdisabled ) { CLEAR_IN_EP_INTR(1, epdisabled); } if ( diepint.b.timeout ) { CLEAR_IN_EP_INTR(1, timeout); } if (diepint.b.intktxfemp) { CLEAR_IN_EP_INTR(1, intktxfemp); } if (diepint.b.intknepmis) { CLEAR_IN_EP_INTR(1, intknepmis); } if (diepint.b.inepnakeff) { CLEAR_IN_EP_INTR(1, inepnakeff); } if (diepint.b.emptyintr) { DCD_WriteEmptyTxFifo(pdev , 1); CLEAR_IN_EP_INTR(1, emptyintr); } return 1; } #endif /** * @brief STM32_USBF_OTG_ISR_Handler * handles all USB Interrupts * @param pdev: device instance * @retval status */ uint32_t USBD_OTG_ISR_Handler (USB_OTG_CORE_HANDLE *pdev) { USB_OTG_GINTSTS_TypeDef gintr_status; uint32_t retval = 0; if (USB_OTG_IsDeviceMode(pdev)) /* ensure that we are in device mode */ { gintr_status.d32 = USB_OTG_ReadCoreItr(pdev); if (!gintr_status.d32) /* avoid spurious interrupt */ { return 0; } if (gintr_status.b.outepintr) { retval |= DCD_HandleOutEP_ISR(pdev); } if (gintr_status.b.inepint) { retval |= DCD_HandleInEP_ISR(pdev); } if (gintr_status.b.modemismatch) { USB_OTG_GINTSTS_TypeDef gintsts; /* Clear interrupt */ gintsts.d32 = 0; gintsts.b.modemismatch = 1; USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GINTSTS, gintsts.d32); } if (gintr_status.b.wkupintr) { retval |= DCD_HandleResume_ISR(pdev); } if (gintr_status.b.usbsuspend) { retval |= DCD_HandleUSBSuspend_ISR(pdev); } if (gintr_status.b.sofintr) { retval |= DCD_HandleSof_ISR(pdev); } if (gintr_status.b.rxstsqlvl) { retval |= DCD_HandleRxStatusQueueLevel_ISR(pdev); } if (gintr_status.b.usbreset) { retval |= DCD_HandleUsbReset_ISR(pdev); } if (gintr_status.b.enumdone) { retval |= DCD_HandleEnumDone_ISR(pdev); } if (gintr_status.b.incomplisoin) { retval |= DCD_IsoINIncomplete_ISR(pdev); } if (gintr_status.b.incomplisoout) { retval |= DCD_IsoOUTIncomplete_ISR(pdev); } #ifdef VBUS_SENSING_ENABLED if (gintr_status.b.sessreqintr) { retval |= DCD_SessionRequest_ISR(pdev); } if (gintr_status.b.otgintr) { retval |= DCD_OTG_ISR(pdev); } #endif } return retval; } #ifdef VBUS_SENSING_ENABLED /** * @brief DCD_SessionRequest_ISR * Indicates that the USB_OTG controller has detected a connection * @param pdev: device instance * @retval status */ static uint32_t DCD_SessionRequest_ISR(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_GINTSTS_TypeDef gintsts; USBD_DCD_INT_fops->DevConnected (pdev); /* Clear interrupt */ gintsts.d32 = 0; gintsts.b.sessreqintr = 1; USB_OTG_WRITE_REG32 (&pdev->regs.GREGS->GINTSTS, gintsts.d32); return 1; } /** * @brief DCD_OTG_ISR * Indicates that the USB_OTG controller has detected an OTG event: * used to detect the end of session i.e. disconnection * @param pdev: device instance * @retval status */ static uint32_t DCD_OTG_ISR(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_GOTGINT_TypeDef gotgint; gotgint.d32 = USB_OTG_READ_REG32(&pdev->regs.GREGS->GOTGINT); if (gotgint.b.sesenddet) { USBD_DCD_INT_fops->DevDisconnected (pdev); } /* Clear OTG interrupt */ USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GOTGINT, gotgint.d32); return 1; } #endif /** * @brief DCD_HandleResume_ISR * Indicates that the USB_OTG controller has detected a resume or * remote Wake-up sequence * @param pdev: device instance * @retval status */ static uint32_t DCD_HandleResume_ISR(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_GINTSTS_TypeDef gintsts; USB_OTG_DCTL_TypeDef devctl; USB_OTG_PCGCCTL_TypeDef power; if(pdev->cfg.low_power) { /* un-gate USB Core clock */ power.d32 = USB_OTG_READ_REG32(pdev->regs.PCGCCTL); power.b.gatehclk = 0; power.b.stoppclk = 0; USB_OTG_WRITE_REG32(pdev->regs.PCGCCTL, power.d32); } /* Clear the Remote Wake-up Signaling */ devctl.d32 = 0; devctl.b.rmtwkupsig = 1; USB_OTG_MODIFY_REG32(&pdev->regs.DREGS->DCTL, devctl.d32, 0); /* Inform upper layer by the Resume Event */ USBD_DCD_INT_fops->Resume (pdev); /* Clear interrupt */ gintsts.d32 = 0; gintsts.b.wkupintr = 1; USB_OTG_WRITE_REG32 (&pdev->regs.GREGS->GINTSTS, gintsts.d32); return 1; } /** * @brief USB_OTG_HandleUSBSuspend_ISR * Indicates that SUSPEND state has been detected on the USB * @param pdev: device instance * @retval status */ static uint32_t DCD_HandleUSBSuspend_ISR(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_GINTSTS_TypeDef gintsts; USB_OTG_PCGCCTL_TypeDef power; USB_OTG_DSTS_TypeDef dsts; USBD_DCD_INT_fops->Suspend (pdev); dsts.d32 = USB_OTG_READ_REG32(&pdev->regs.DREGS->DSTS); /* Clear interrupt */ gintsts.d32 = 0; gintsts.b.usbsuspend = 1; USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GINTSTS, gintsts.d32); if((pdev->cfg.low_power) && (dsts.b.suspsts == 1)) { /* switch-off the clocks */ power.d32 = 0; power.b.stoppclk = 1; USB_OTG_MODIFY_REG32(pdev->regs.PCGCCTL, 0, power.d32); power.b.gatehclk = 1; USB_OTG_MODIFY_REG32(pdev->regs.PCGCCTL, 0, power.d32); /* Request to enter Sleep mode after exit from current ISR */ SCB->SCR |= (SCB_SCR_SLEEPDEEP_Msk | SCB_SCR_SLEEPONEXIT_Msk); } return 1; } /** * @brief DCD_HandleInEP_ISR * Indicates that an IN EP has a pending Interrupt * @param pdev: device instance * @retval status */ static uint32_t DCD_HandleInEP_ISR(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_DIEPINTn_TypeDef diepint; uint32_t ep_intr; uint32_t epnum = 0; uint32_t fifoemptymsk; diepint.d32 = 0; ep_intr = USB_OTG_ReadDevAllInEPItr(pdev); while ( ep_intr ) { if (ep_intr&0x1) /* In ITR */ { diepint.d32 = DCD_ReadDevInEP(pdev , epnum); /* Get In ITR status */ if ( diepint.b.xfercompl ) { fifoemptymsk = 0x1 << epnum; USB_OTG_MODIFY_REG32(&pdev->regs.DREGS->DIEPEMPMSK, fifoemptymsk, 0); CLEAR_IN_EP_INTR(epnum, xfercompl); /* TX COMPLETE */ USBD_DCD_INT_fops->DataInStage(pdev , epnum); if (pdev->cfg.dma_enable == 1) { if((epnum == 0) && (pdev->dev.device_state == USB_OTG_EP0_STATUS_IN)) { /* prepare to rx more setup packets */ USB_OTG_EP0_OutStart(pdev); } } } if ( diepint.b.ahberr ) { CLEAR_IN_EP_INTR(epnum, ahberr); } if ( diepint.b.timeout ) { CLEAR_IN_EP_INTR(epnum, timeout); } if (diepint.b.intktxfemp) { CLEAR_IN_EP_INTR(epnum, intktxfemp); } if (diepint.b.intknepmis) { CLEAR_IN_EP_INTR(epnum, intknepmis); } if (diepint.b.inepnakeff) { CLEAR_IN_EP_INTR(epnum, inepnakeff); } if ( diepint.b.epdisabled ) { CLEAR_IN_EP_INTR(epnum, epdisabled); } if (diepint.b.emptyintr) { DCD_WriteEmptyTxFifo(pdev , epnum); CLEAR_IN_EP_INTR(epnum, emptyintr); } } epnum++; ep_intr >>= 1; } return 1; } /** * @brief DCD_HandleOutEP_ISR * Indicates that an OUT EP has a pending Interrupt * @param pdev: device instance * @retval status */ static uint32_t DCD_HandleOutEP_ISR(USB_OTG_CORE_HANDLE *pdev) { uint32_t ep_intr; USB_OTG_DOEPINTn_TypeDef doepint; USB_OTG_DEPXFRSIZ_TypeDef deptsiz; uint32_t epnum = 0; doepint.d32 = 0; /* Read in the device interrupt bits */ ep_intr = USB_OTG_ReadDevAllOutEp_itr(pdev); while ( ep_intr ) { if (ep_intr&0x1) { doepint.d32 = USB_OTG_ReadDevOutEP_itr(pdev, epnum); /* Transfer complete */ if ( doepint.b.xfercompl ) { /* Clear the bit in DOEPINTn for this interrupt */ CLEAR_OUT_EP_INTR(epnum, xfercompl); if (pdev->cfg.dma_enable == 1) { deptsiz.d32 = USB_OTG_READ_REG32(&(pdev->regs.OUTEP_REGS[epnum]->DOEPTSIZ)); /*ToDo : handle more than one single MPS size packet */ pdev->dev.out_ep[epnum].xfer_count = pdev->dev.out_ep[epnum].maxpacket - \ deptsiz.b.xfersize; } /* Inform upper layer: data ready */ /* RX COMPLETE */ USBD_DCD_INT_fops->DataOutStage(pdev , epnum); if (pdev->cfg.dma_enable == 1) { if((epnum == 0) && (pdev->dev.device_state == USB_OTG_EP0_STATUS_OUT)) { /* prepare to rx more setup packets */ USB_OTG_EP0_OutStart(pdev); } } } /* Endpoint disable */ if ( doepint.b.epdisabled ) { /* Clear the bit in DOEPINTn for this interrupt */ CLEAR_OUT_EP_INTR(epnum, epdisabled); } /* AHB Error */ if ( doepint.b.ahberr ) { CLEAR_OUT_EP_INTR(epnum, ahberr); } /* Setup Phase Done (control EPs) */ if ( doepint.b.setup ) { /* inform the upper layer that a setup packet is available */ /* SETUP COMPLETE */ USBD_DCD_INT_fops->SetupStage(pdev); CLEAR_OUT_EP_INTR(epnum, setup); } } epnum++; ep_intr >>= 1; } return 1; } /** * @brief DCD_HandleSof_ISR * Handles the SOF Interrupts * @param pdev: device instance * @retval status */ static uint32_t DCD_HandleSof_ISR(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_GINTSTS_TypeDef GINTSTS; USBD_DCD_INT_fops->SOF(pdev); /* Clear interrupt */ GINTSTS.d32 = 0; GINTSTS.b.sofintr = 1; USB_OTG_WRITE_REG32 (&pdev->regs.GREGS->GINTSTS, GINTSTS.d32); return 1; } /** * @brief DCD_HandleRxStatusQueueLevel_ISR * Handles the Rx Status Queue Level Interrupt * @param pdev: device instance * @retval status */ static uint32_t DCD_HandleRxStatusQueueLevel_ISR(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_GINTMSK_TypeDef int_mask; USB_OTG_DRXSTS_TypeDef status; USB_OTG_EP *ep; /* Disable the Rx Status Queue Level interrupt */ int_mask.d32 = 0; int_mask.b.rxstsqlvl = 1; USB_OTG_MODIFY_REG32( &pdev->regs.GREGS->GINTMSK, int_mask.d32, 0); /* Get the Status from the top of the FIFO */ status.d32 = USB_OTG_READ_REG32( &pdev->regs.GREGS->GRXSTSP ); ep = &pdev->dev.out_ep[status.b.epnum]; switch (status.b.pktsts) { case STS_GOUT_NAK: break; case STS_DATA_UPDT: if (status.b.bcnt) { USB_OTG_ReadPacket(pdev,ep->xfer_buff, status.b.bcnt); ep->xfer_buff += status.b.bcnt; ep->xfer_count += status.b.bcnt; } break; case STS_XFER_COMP: break; case STS_SETUP_COMP: break; case STS_SETUP_UPDT: /* Copy the setup packet received in FIFO into the setup buffer in RAM */ USB_OTG_ReadPacket(pdev , pdev->dev.setup_packet, 8); ep->xfer_count += status.b.bcnt; break; default: break; } /* Enable the Rx Status Queue Level interrupt */ USB_OTG_MODIFY_REG32( &pdev->regs.GREGS->GINTMSK, 0, int_mask.d32); return 1; } /** * @brief DCD_WriteEmptyTxFifo * check FIFO for the next packet to be loaded * @param pdev: device instance * @retval status */ static uint32_t DCD_WriteEmptyTxFifo(USB_OTG_CORE_HANDLE *pdev, uint32_t epnum) { USB_OTG_DTXFSTSn_TypeDef txstatus; USB_OTG_EP *ep; uint32_t len = 0; uint32_t len32b; txstatus.d32 = 0; ep = &pdev->dev.in_ep[epnum]; len = ep->xfer_len - ep->xfer_count; if (len > ep->maxpacket) { len = ep->maxpacket; } len32b = (len + 3) / 4; txstatus.d32 = USB_OTG_READ_REG32( &pdev->regs.INEP_REGS[epnum]->DTXFSTS); while (txstatus.b.txfspcavail > len32b && ep->xfer_count < ep->xfer_len && ep->xfer_len != 0) { /* Write the FIFO */ len = ep->xfer_len - ep->xfer_count; if (len > ep->maxpacket) { len = ep->maxpacket; } len32b = (len + 3) / 4; USB_OTG_WritePacket (pdev , ep->xfer_buff, epnum, len); ep->xfer_buff += len; ep->xfer_count += len; txstatus.d32 = USB_OTG_READ_REG32(&pdev->regs.INEP_REGS[epnum]->DTXFSTS); } return 1; } /** * @brief DCD_HandleUsbReset_ISR * This interrupt occurs when a USB Reset is detected * @param pdev: device instance * @retval status */ static uint32_t DCD_HandleUsbReset_ISR(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_DAINT_TypeDef daintmsk; USB_OTG_DOEPMSK_TypeDef doepmsk; USB_OTG_DIEPMSK_TypeDef diepmsk; USB_OTG_DCFG_TypeDef dcfg; USB_OTG_DCTL_TypeDef dctl; USB_OTG_GINTSTS_TypeDef gintsts; uint32_t i; dctl.d32 = 0; daintmsk.d32 = 0; doepmsk.d32 = 0; diepmsk.d32 = 0; dcfg.d32 = 0; gintsts.d32 = 0; /* Clear the Remote Wake-up Signaling */ dctl.b.rmtwkupsig = 1; USB_OTG_MODIFY_REG32(&pdev->regs.DREGS->DCTL, dctl.d32, 0 ); /* Flush the Tx FIFO */ USB_OTG_FlushTxFifo(pdev , 0 ); for (i = 0; i < pdev->cfg.dev_endpoints ; i++) { USB_OTG_WRITE_REG32( &pdev->regs.INEP_REGS[i]->DIEPINT, 0xFF); USB_OTG_WRITE_REG32( &pdev->regs.OUTEP_REGS[i]->DOEPINT, 0xFF); } USB_OTG_WRITE_REG32( &pdev->regs.DREGS->DAINT, 0xFFFFFFFF ); daintmsk.ep.in = 1; daintmsk.ep.out = 1; USB_OTG_WRITE_REG32( &pdev->regs.DREGS->DAINTMSK, daintmsk.d32 ); doepmsk.b.setup = 1; doepmsk.b.xfercompl = 1; doepmsk.b.ahberr = 1; doepmsk.b.epdisabled = 1; USB_OTG_WRITE_REG32( &pdev->regs.DREGS->DOEPMSK, doepmsk.d32 ); #ifdef USB_OTG_HS_DEDICATED_EP1_ENABLED USB_OTG_WRITE_REG32( &pdev->regs.DREGS->DOUTEP1MSK, doepmsk.d32 ); #endif diepmsk.b.xfercompl = 1; diepmsk.b.timeout = 1; diepmsk.b.epdisabled = 1; diepmsk.b.ahberr = 1; diepmsk.b.intknepmis = 1; USB_OTG_WRITE_REG32( &pdev->regs.DREGS->DIEPMSK, diepmsk.d32 ); #ifdef USB_OTG_HS_DEDICATED_EP1_ENABLED USB_OTG_WRITE_REG32( &pdev->regs.DREGS->DINEP1MSK, diepmsk.d32 ); #endif /* Reset Device Address */ dcfg.d32 = USB_OTG_READ_REG32( &pdev->regs.DREGS->DCFG); dcfg.b.devaddr = 0; USB_OTG_WRITE_REG32( &pdev->regs.DREGS->DCFG, dcfg.d32); /* setup EP0 to receive SETUP packets */ USB_OTG_EP0_OutStart(pdev); /* Clear interrupt */ gintsts.d32 = 0; gintsts.b.usbreset = 1; USB_OTG_WRITE_REG32 (&pdev->regs.GREGS->GINTSTS, gintsts.d32); /*Reset internal state machine */ USBD_DCD_INT_fops->Reset(pdev); return 1; } /** * @brief DCD_HandleEnumDone_ISR * Read the device status register and set the device speed * @param pdev: device instance * @retval status */ static uint32_t DCD_HandleEnumDone_ISR(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_GINTSTS_TypeDef gintsts; USB_OTG_GUSBCFG_TypeDef gusbcfg; USB_OTG_EP0Activate(pdev); /* Set USB turn-around time based on device speed and PHY interface. */ gusbcfg.d32 = USB_OTG_READ_REG32(&pdev->regs.GREGS->GUSBCFG); /* Full or High speed */ if ( USB_OTG_GetDeviceSpeed(pdev) == USB_SPEED_HIGH) { pdev->cfg.speed = USB_OTG_SPEED_HIGH; pdev->cfg.mps = USB_OTG_HS_MAX_PACKET_SIZE ; gusbcfg.b.usbtrdtim = 9; } else { pdev->cfg.speed = USB_OTG_SPEED_FULL; pdev->cfg.mps = USB_OTG_FS_MAX_PACKET_SIZE ; gusbcfg.b.usbtrdtim = 5; } USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GUSBCFG, gusbcfg.d32); /* Clear interrupt */ gintsts.d32 = 0; gintsts.b.enumdone = 1; USB_OTG_WRITE_REG32( &pdev->regs.GREGS->GINTSTS, gintsts.d32 ); return 1; } /** * @brief DCD_IsoINIncomplete_ISR * handle the ISO IN incomplete interrupt * @param pdev: device instance * @retval status */ static uint32_t DCD_IsoINIncomplete_ISR(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_GINTSTS_TypeDef gintsts; gintsts.d32 = 0; USBD_DCD_INT_fops->IsoINIncomplete (pdev); /* Clear interrupt */ gintsts.b.incomplisoin = 1; USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GINTSTS, gintsts.d32); return 1; } /** * @brief DCD_IsoOUTIncomplete_ISR * handle the ISO OUT incomplete interrupt * @param pdev: device instance * @retval status */ static uint32_t DCD_IsoOUTIncomplete_ISR(USB_OTG_CORE_HANDLE *pdev) { USB_OTG_GINTSTS_TypeDef gintsts; gintsts.d32 = 0; USBD_DCD_INT_fops->IsoOUTIncomplete (pdev); /* Clear interrupt */ gintsts.b.incomplisoout = 1; USB_OTG_WRITE_REG32(&pdev->regs.GREGS->GINTSTS, gintsts.d32); return 1; } /** * @brief DCD_ReadDevInEP * Reads ep flags * @param pdev: device instance * @retval status */ static uint32_t DCD_ReadDevInEP (USB_OTG_CORE_HANDLE *pdev, uint8_t epnum) { uint32_t v, msk, emp; msk = USB_OTG_READ_REG32(&pdev->regs.DREGS->DIEPMSK); emp = USB_OTG_READ_REG32(&pdev->regs.DREGS->DIEPEMPMSK); msk |= ((emp >> epnum) & 0x1) << 7; v = USB_OTG_READ_REG32(&pdev->regs.INEP_REGS[epnum]->DIEPINT) & msk; return v; } /** * @} */ /** * @} */ /** * @} */ #endif /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_lib/otg/usb_dcd_int.h000066400000000000000000000056051445607075400205010ustar00rootroot00000000000000/** ****************************************************************************** * @file usb_dcd_int.h * @author MCD Application Team * @version V2.0.0 * @date 22-July-2011 * @brief Peripheral Device Interface Layer ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef USB_DCD_INT_H__ #define USB_DCD_INT_H__ /* Includes ------------------------------------------------------------------*/ #include "usb_dcd.h" /** @addtogroup USB_OTG_DRIVER * @{ */ /** @defgroup USB_DCD_INT * @brief This file is the * @{ */ /** @defgroup USB_DCD_INT_Exported_Defines * @{ */ typedef struct _USBD_DCD_INT { uint8_t (* DataOutStage) (USB_OTG_CORE_HANDLE *pdev , uint8_t epnum); uint8_t (* DataInStage) (USB_OTG_CORE_HANDLE *pdev , uint8_t epnum); uint8_t (* SetupStage) (USB_OTG_CORE_HANDLE *pdev); uint8_t (* SOF) (USB_OTG_CORE_HANDLE *pdev); uint8_t (* Reset) (USB_OTG_CORE_HANDLE *pdev); uint8_t (* Suspend) (USB_OTG_CORE_HANDLE *pdev); uint8_t (* Resume) (USB_OTG_CORE_HANDLE *pdev); uint8_t (* IsoINIncomplete) (USB_OTG_CORE_HANDLE *pdev); uint8_t (* IsoOUTIncomplete) (USB_OTG_CORE_HANDLE *pdev); uint8_t (* DevConnected) (USB_OTG_CORE_HANDLE *pdev); uint8_t (* DevDisconnected) (USB_OTG_CORE_HANDLE *pdev); }USBD_DCD_INT_cb_TypeDef; extern USBD_DCD_INT_cb_TypeDef *USBD_DCD_INT_fops; /** * @} */ /** @defgroup USB_DCD_INT_Exported_Types * @{ */ /** * @} */ /** @defgroup USB_DCD_INT_Exported_Macros * @{ */ #define CLEAR_IN_EP_INTR(epnum,intr) \ diepint.d32=0; \ diepint.b.intr = 1; \ USB_OTG_WRITE_REG32(&pdev->regs.INEP_REGS[epnum]->DIEPINT,diepint.d32); #define CLEAR_OUT_EP_INTR(epnum,intr) \ doepint.d32=0; \ doepint.b.intr = 1; \ USB_OTG_WRITE_REG32(&pdev->regs.OUTEP_REGS[epnum]->DOEPINT,doepint.d32); /** * @} */ /** @defgroup USB_DCD_INT_Exported_Variables * @{ */ /** * @} */ /** @defgroup USB_DCD_INT_Exported_FunctionsPrototype * @{ */ uint32_t USBD_OTG_ISR_Handler (USB_OTG_CORE_HANDLE *pdev); /** * @} */ #endif // USB_DCD_INT_H__ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_lib/otg/usb_defines.h000066400000000000000000000146461445607075400205170ustar00rootroot00000000000000/** ****************************************************************************** * @file usb_defines.h * @author MCD Application Team * @version V2.0.0 * @date 22-July-2011 * @brief Header of the Core Layer ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __USB_DEF_H__ #define __USB_DEF_H__ /* Includes ------------------------------------------------------------------*/ #include "usb_conf.h" /** @addtogroup USB_OTG_DRIVER * @{ */ /** @defgroup USB_DEFINES * @brief This file is the * @{ */ /** @defgroup USB_DEFINES_Exported_Defines * @{ */ /** * @} */ /** @defgroup _CORE_DEFINES_ * @{ */ #define USB_OTG_SPEED_PARAM_HIGH 0 #define USB_OTG_SPEED_PARAM_HIGH_IN_FULL 1 #define USB_OTG_SPEED_PARAM_FULL 3 #define USB_OTG_SPEED_HIGH 0 #define USB_OTG_SPEED_FULL 1 #define USB_OTG_ULPI_PHY 1 #define USB_OTG_EMBEDDED_PHY 2 #define USB_OTG_I2C_PHY 3 /** * @} */ /** @defgroup _GLOBAL_DEFINES_ * @{ */ #define GAHBCFG_TXFEMPTYLVL_EMPTY 1 #define GAHBCFG_TXFEMPTYLVL_HALFEMPTY 0 #define GAHBCFG_GLBINT_ENABLE 1 #define GAHBCFG_INT_DMA_BURST_SINGLE 0 #define GAHBCFG_INT_DMA_BURST_INCR 1 #define GAHBCFG_INT_DMA_BURST_INCR4 3 #define GAHBCFG_INT_DMA_BURST_INCR8 5 #define GAHBCFG_INT_DMA_BURST_INCR16 7 #define GAHBCFG_DMAENABLE 1 #define GAHBCFG_TXFEMPTYLVL_EMPTY 1 #define GAHBCFG_TXFEMPTYLVL_HALFEMPTY 0 #define GRXSTS_PKTSTS_IN 2 #define GRXSTS_PKTSTS_IN_XFER_COMP 3 #define GRXSTS_PKTSTS_DATA_TOGGLE_ERR 5 #define GRXSTS_PKTSTS_CH_HALTED 7 /** * @} */ /** @defgroup _OnTheGo_DEFINES_ * @{ */ #define MODE_HNP_SRP_CAPABLE 0 #define MODE_SRP_ONLY_CAPABLE 1 #define MODE_NO_HNP_SRP_CAPABLE 2 #define MODE_SRP_CAPABLE_DEVICE 3 #define MODE_NO_SRP_CAPABLE_DEVICE 4 #define MODE_SRP_CAPABLE_HOST 5 #define MODE_NO_SRP_CAPABLE_HOST 6 #define A_HOST 1 #define A_SUSPEND 2 #define A_PERIPHERAL 3 #define B_PERIPHERAL 4 #define B_HOST 5 #define DEVICE_MODE 0 #define HOST_MODE 1 #define OTG_MODE 2 /** * @} */ /** @defgroup __DEVICE_DEFINES_ * @{ */ #define DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ 0 #define DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ 1 #define DSTS_ENUMSPD_LS_PHY_6MHZ 2 #define DSTS_ENUMSPD_FS_PHY_48MHZ 3 #define DCFG_FRAME_INTERVAL_80 0 #define DCFG_FRAME_INTERVAL_85 1 #define DCFG_FRAME_INTERVAL_90 2 #define DCFG_FRAME_INTERVAL_95 3 #define DEP0CTL_MPS_64 0 #define DEP0CTL_MPS_32 1 #define DEP0CTL_MPS_16 2 #define DEP0CTL_MPS_8 3 #define EP_SPEED_LOW 0 #define EP_SPEED_FULL 1 #define EP_SPEED_HIGH 2 #define EP_TYPE_CTRL 0 #define EP_TYPE_ISOC 1 #define EP_TYPE_BULK 2 #define EP_TYPE_INTR 3 #define EP_TYPE_MSK 3 #define STS_GOUT_NAK 1 #define STS_DATA_UPDT 2 #define STS_XFER_COMP 3 #define STS_SETUP_COMP 4 #define STS_SETUP_UPDT 6 /** * @} */ /** @defgroup __HOST_DEFINES_ * @{ */ #define HC_PID_DATA0 0 #define HC_PID_DATA2 1 #define HC_PID_DATA1 2 #define HC_PID_SETUP 3 #define HPRT0_PRTSPD_HIGH_SPEED 0 #define HPRT0_PRTSPD_FULL_SPEED 1 #define HPRT0_PRTSPD_LOW_SPEED 2 #define HCFG_30_60_MHZ 0 #define HCFG_48_MHZ 1 #define HCFG_6_MHZ 2 #define HCCHAR_CTRL 0 #define HCCHAR_ISOC 1 #define HCCHAR_BULK 2 #define HCCHAR_INTR 3 #define MIN(a, b) (((a) < (b)) ? (a) : (b)) /** * @} */ /** @defgroup USB_DEFINES_Exported_Types * @{ */ typedef enum { USB_OTG_HS_CORE_ID = 0, USB_OTG_FS_CORE_ID = 1 }USB_OTG_CORE_ID_TypeDef; /** * @} */ /** @defgroup USB_DEFINES_Exported_Macros * @{ */ /** * @} */ /** @defgroup USB_DEFINES_Exported_Variables * @{ */ /** * @} */ /** @defgroup USB_DEFINES_Exported_FunctionsPrototype * @{ */ /** * @} */ /** @defgroup Internal_Macro's * @{ */ #define USB_OTG_READ_REG32(reg) (*(__IO uint32_t *)reg) #define USB_OTG_WRITE_REG32(reg,value) (*(__IO uint32_t *)reg = value) #define USB_OTG_MODIFY_REG32(reg,clear_mask,set_mask) \ USB_OTG_WRITE_REG32(reg, (((USB_OTG_READ_REG32(reg)) & ~clear_mask) | set_mask ) ) /******************************************************************************** ENUMERATION TYPE ********************************************************************************/ enum USB_OTG_SPEED { USB_SPEED_UNKNOWN = 0, USB_SPEED_LOW, USB_SPEED_FULL, USB_SPEED_HIGH }; #endif //__USB_DEFINES__H__ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/stm32/usb_lib/otg/usb_regs.h000066400000000000000000000524021445607075400200320ustar00rootroot00000000000000/** ****************************************************************************** * @file usb_regs.h * @author MCD Application Team * @version V2.0.0 * @date 22-July-2011 * @brief hardware registers ****************************************************************************** * @attention * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2011 STMicroelectronics

****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __USB_OTG_REGS_H__ #define __USB_OTG_REGS_H__ /* Includes ------------------------------------------------------------------*/ #include "usb_conf.h" /** @addtogroup USB_OTG_DRIVER * @{ */ /** @defgroup USB_REGS * @brief This file is the * @{ */ /** @defgroup USB_REGS_Exported_Defines * @{ */ #define USB_OTG_HS_BASE_ADDR 0x40040000 #define USB_OTG_FS_BASE_ADDR 0x50000000 #define USB_OTG_CORE_GLOBAL_REGS_OFFSET 0x000 #define USB_OTG_DEV_GLOBAL_REG_OFFSET 0x800 #define USB_OTG_DEV_IN_EP_REG_OFFSET 0x900 #define USB_OTG_EP_REG_OFFSET 0x20 #define USB_OTG_DEV_OUT_EP_REG_OFFSET 0xB00 #define USB_OTG_HOST_GLOBAL_REG_OFFSET 0x400 #define USB_OTG_HOST_PORT_REGS_OFFSET 0x440 #define USB_OTG_HOST_CHAN_REGS_OFFSET 0x500 #define USB_OTG_CHAN_REGS_OFFSET 0x20 #define USB_OTG_PCGCCTL_OFFSET 0xE00 #define USB_OTG_DATA_FIFO_OFFSET 0x1000 #define USB_OTG_DATA_FIFO_SIZE 0x1000 #define USB_OTG_MAX_TX_FIFOS 15 #define USB_OTG_HS_MAX_PACKET_SIZE 512 #define USB_OTG_FS_MAX_PACKET_SIZE 64 #define USB_OTG_MAX_EP0_SIZE 64 /** * @} */ /** @defgroup USB_REGS_Exported_Types * @{ */ /** @defgroup __USB_OTG_Core_register * @{ */ typedef struct _USB_OTG_GREGS //000h { __IO uint32_t GOTGCTL; /* USB_OTG Control and Status Register 000h*/ __IO uint32_t GOTGINT; /* USB_OTG Interrupt Register 004h*/ __IO uint32_t GAHBCFG; /* Core AHB Configuration Register 008h*/ __IO uint32_t GUSBCFG; /* Core USB Configuration Register 00Ch*/ __IO uint32_t GRSTCTL; /* Core Reset Register 010h*/ __IO uint32_t GINTSTS; /* Core Interrupt Register 014h*/ __IO uint32_t GINTMSK; /* Core Interrupt Mask Register 018h*/ __IO uint32_t GRXSTSR; /* Receive Sts Q Read Register 01Ch*/ __IO uint32_t GRXSTSP; /* Receive Sts Q Read & POP Register 020h*/ __IO uint32_t GRXFSIZ; /* Receive FIFO Size Register 024h*/ __IO uint32_t DIEPTXF0_HNPTXFSIZ; /* EP0 / Non Periodic Tx FIFO Size Register 028h*/ __IO uint32_t HNPTXSTS; /* Non Periodic Tx FIFO/Queue Sts reg 02Ch*/ __IO uint32_t GI2CCTL; /* I2C Access Register 030h*/ uint32_t Reserved34; /* PHY Vendor Control Register 034h*/ __IO uint32_t GCCFG; /* General Purpose IO Register 038h*/ __IO uint32_t CID; /* User ID Register 03Ch*/ uint32_t Reserved40[48]; /* Reserved 040h-0FFh*/ __IO uint32_t HPTXFSIZ; /* Host Periodic Tx FIFO Size Reg 100h*/ __IO uint32_t DIEPTXF[USB_OTG_MAX_TX_FIFOS];/* dev Periodic Transmit FIFO */ } USB_OTG_GREGS; /** * @} */ /** @defgroup __device_Registers * @{ */ typedef struct _USB_OTG_DREGS // 800h { __IO uint32_t DCFG; /* dev Configuration Register 800h*/ __IO uint32_t DCTL; /* dev Control Register 804h*/ __IO uint32_t DSTS; /* dev Status Register (RO) 808h*/ uint32_t Reserved0C; /* Reserved 80Ch*/ __IO uint32_t DIEPMSK; /* dev IN Endpoint Mask 810h*/ __IO uint32_t DOEPMSK; /* dev OUT Endpoint Mask 814h*/ __IO uint32_t DAINT; /* dev All Endpoints Itr Reg 818h*/ __IO uint32_t DAINTMSK; /* dev All Endpoints Itr Mask 81Ch*/ uint32_t Reserved20; /* Reserved 820h*/ uint32_t Reserved9; /* Reserved 824h*/ __IO uint32_t DVBUSDIS; /* dev VBUS discharge Register 828h*/ __IO uint32_t DVBUSPULSE; /* dev VBUS Pulse Register 82Ch*/ __IO uint32_t DTHRCTL; /* dev thr 830h*/ __IO uint32_t DIEPEMPMSK; /* dev empty msk 834h*/ __IO uint32_t DEACHINT; /* dedicated EP interrupt 838h*/ __IO uint32_t DEACHMSK; /* dedicated EP msk 83Ch*/ uint32_t Reserved40; /* dedicated EP mask 840h*/ __IO uint32_t DINEP1MSK; /* dedicated EP mask 844h*/ uint32_t Reserved44[15]; /* Reserved 844-87Ch*/ __IO uint32_t DOUTEP1MSK; /* dedicated EP msk 884h*/ } USB_OTG_DREGS; /** * @} */ /** @defgroup __IN_Endpoint-Specific_Register * @{ */ typedef struct _USB_OTG_INEPREGS { __IO uint32_t DIEPCTL; /* dev IN Endpoint Control Reg 900h + (ep_num * 20h) + 00h*/ uint32_t Reserved04; /* Reserved 900h + (ep_num * 20h) + 04h*/ __IO uint32_t DIEPINT; /* dev IN Endpoint Itr Reg 900h + (ep_num * 20h) + 08h*/ uint32_t Reserved0C; /* Reserved 900h + (ep_num * 20h) + 0Ch*/ __IO uint32_t DIEPTSIZ; /* IN Endpoint Txfer Size 900h + (ep_num * 20h) + 10h*/ __IO uint32_t DIEPDMA; /* IN Endpoint DMA Address Reg 900h + (ep_num * 20h) + 14h*/ __IO uint32_t DTXFSTS;/*IN Endpoint Tx FIFO Status Reg 900h + (ep_num * 20h) + 18h*/ uint32_t Reserved18; /* Reserved 900h+(ep_num*20h)+1Ch-900h+ (ep_num * 20h) + 1Ch*/ } USB_OTG_INEPREGS; /** * @} */ /** @defgroup __OUT_Endpoint-Specific_Registers * @{ */ typedef struct _USB_OTG_OUTEPREGS { __IO uint32_t DOEPCTL; /* dev OUT Endpoint Control Reg B00h + (ep_num * 20h) + 00h*/ __IO uint32_t DOUTEPFRM; /* dev OUT Endpoint Frame number B00h + (ep_num * 20h) + 04h*/ __IO uint32_t DOEPINT; /* dev OUT Endpoint Itr Reg B00h + (ep_num * 20h) + 08h*/ uint32_t Reserved0C; /* Reserved B00h + (ep_num * 20h) + 0Ch*/ __IO uint32_t DOEPTSIZ; /* dev OUT Endpoint Txfer Size B00h + (ep_num * 20h) + 10h*/ __IO uint32_t DOEPDMA; /* dev OUT Endpoint DMA Address B00h + (ep_num * 20h) + 14h*/ uint32_t Reserved18[2]; /* Reserved B00h + (ep_num * 20h) + 18h - B00h + (ep_num * 20h) + 1Ch*/ } USB_OTG_OUTEPREGS; /** * @} */ /** @defgroup __Host_Mode_Register_Structures * @{ */ typedef struct _USB_OTG_HREGS { __IO uint32_t HCFG; /* Host Configuration Register 400h*/ __IO uint32_t HFIR; /* Host Frame Interval Register 404h*/ __IO uint32_t HFNUM; /* Host Frame Nbr/Frame Remaining 408h*/ uint32_t Reserved40C; /* Reserved 40Ch*/ __IO uint32_t HPTXSTS; /* Host Periodic Tx FIFO/ Queue Status 410h*/ __IO uint32_t HAINT; /* Host All Channels Interrupt Register 414h*/ __IO uint32_t HAINTMSK; /* Host All Channels Interrupt Mask 418h*/ } USB_OTG_HREGS; /** * @} */ /** @defgroup __Host_Channel_Specific_Registers * @{ */ typedef struct _USB_OTG_HC_REGS { __IO uint32_t HCCHAR; __IO uint32_t HCSPLT; __IO uint32_t HCINT; __IO uint32_t HCGINTMSK; __IO uint32_t HCTSIZ; __IO uint32_t HCDMA; uint32_t Reserved[2]; } USB_OTG_HC_REGS; /** * @} */ /** @defgroup __otg_Core_registers * @{ */ typedef struct USB_OTG_core_regs //000h { USB_OTG_GREGS *GREGS; USB_OTG_DREGS *DREGS; USB_OTG_HREGS *HREGS; USB_OTG_INEPREGS *INEP_REGS[USB_OTG_MAX_TX_FIFOS]; USB_OTG_OUTEPREGS *OUTEP_REGS[USB_OTG_MAX_TX_FIFOS]; USB_OTG_HC_REGS *HC_REGS[USB_OTG_MAX_TX_FIFOS]; __IO uint32_t *HPRT0; __IO uint32_t *DFIFO[USB_OTG_MAX_TX_FIFOS]; __IO uint32_t *PCGCCTL; } USB_OTG_CORE_REGS , *PUSB_OTG_CORE_REGS; typedef union _USB_OTG_OTGCTL_TypeDef { uint32_t d32; struct { uint32_t sesreqscs : 1; uint32_t sesreq : 1; uint32_t Reserved2_7 : 6; uint32_t hstnegscs : 1; uint32_t hnpreq : 1; uint32_t hstsethnpen : 1; uint32_t devhnpen : 1; uint32_t Reserved12_15 : 4; uint32_t conidsts : 1; uint32_t Reserved17 : 1; uint32_t asesvld : 1; uint32_t bsesvld : 1; uint32_t currmod : 1; uint32_t Reserved21_31 : 11; } b; } USB_OTG_OTGCTL_TypeDef ; typedef union _USB_OTG_GOTGINT_TypeDef { uint32_t d32; struct { uint32_t Reserved0_1 : 2; uint32_t sesenddet : 1; uint32_t Reserved3_7 : 5; uint32_t sesreqsucstschng : 1; uint32_t hstnegsucstschng : 1; uint32_t reserver10_16 : 7; uint32_t hstnegdet : 1; uint32_t adevtoutchng : 1; uint32_t debdone : 1; uint32_t Reserved31_20 : 12; } b; } USB_OTG_GOTGINT_TypeDef ; typedef union _USB_OTG_GAHBCFG_TypeDef { uint32_t d32; struct { uint32_t glblintrmsk : 1; uint32_t hburstlen : 4; uint32_t dmaenable : 1; uint32_t Reserved : 1; uint32_t nptxfemplvl_txfemplvl : 1; uint32_t ptxfemplvl : 1; uint32_t Reserved9_31 : 23; } b; } USB_OTG_GAHBCFG_TypeDef ; typedef union _USB_OTG_GUSBCFG_TypeDef { uint32_t d32; struct { uint32_t toutcal : 3; uint32_t phyif : 1; uint32_t ulpi_utmi_sel : 1; uint32_t fsintf : 1; uint32_t physel : 1; uint32_t ddrsel : 1; uint32_t srpcap : 1; uint32_t hnpcap : 1; uint32_t usbtrdtim : 4; uint32_t nptxfrwnden : 1; uint32_t phylpwrclksel : 1; uint32_t otgutmifssel : 1; uint32_t ulpi_fsls : 1; uint32_t ulpi_auto_res : 1; uint32_t ulpi_clk_sus_m : 1; uint32_t ulpi_ext_vbus_drv : 1; uint32_t ulpi_int_vbus_indicator : 1; uint32_t term_sel_dl_pulse : 1; uint32_t Reserved : 6; uint32_t force_host : 1; uint32_t force_dev : 1; uint32_t corrupt_tx : 1; } b; } USB_OTG_GUSBCFG_TypeDef ; typedef union _USB_OTG_GRSTCTL_TypeDef { uint32_t d32; struct { uint32_t csftrst : 1; uint32_t hsftrst : 1; uint32_t hstfrm : 1; uint32_t intknqflsh : 1; uint32_t rxfflsh : 1; uint32_t txfflsh : 1; uint32_t txfnum : 5; uint32_t Reserved11_29 : 19; uint32_t dmareq : 1; uint32_t ahbidle : 1; } b; } USB_OTG_GRSTCTL_TypeDef ; typedef union _USB_OTG_GINTMSK_TypeDef { uint32_t d32; struct { uint32_t Reserved0 : 1; uint32_t modemismatch : 1; uint32_t otgintr : 1; uint32_t sofintr : 1; uint32_t rxstsqlvl : 1; uint32_t nptxfempty : 1; uint32_t ginnakeff : 1; uint32_t goutnakeff : 1; uint32_t Reserved8 : 1; uint32_t i2cintr : 1; uint32_t erlysuspend : 1; uint32_t usbsuspend : 1; uint32_t usbreset : 1; uint32_t enumdone : 1; uint32_t isooutdrop : 1; uint32_t eopframe : 1; uint32_t Reserved16 : 1; uint32_t epmismatch : 1; uint32_t inepintr : 1; uint32_t outepintr : 1; uint32_t incomplisoin : 1; uint32_t incomplisoout : 1; uint32_t Reserved22_23 : 2; uint32_t portintr : 1; uint32_t hcintr : 1; uint32_t ptxfempty : 1; uint32_t Reserved27 : 1; uint32_t conidstschng : 1; uint32_t disconnect : 1; uint32_t sessreqintr : 1; uint32_t wkupintr : 1; } b; } USB_OTG_GINTMSK_TypeDef ; typedef union _USB_OTG_GINTSTS_TypeDef { uint32_t d32; struct { uint32_t curmode : 1; uint32_t modemismatch : 1; uint32_t otgintr : 1; uint32_t sofintr : 1; uint32_t rxstsqlvl : 1; uint32_t nptxfempty : 1; uint32_t ginnakeff : 1; uint32_t goutnakeff : 1; uint32_t Reserved8 : 1; uint32_t i2cintr : 1; uint32_t erlysuspend : 1; uint32_t usbsuspend : 1; uint32_t usbreset : 1; uint32_t enumdone : 1; uint32_t isooutdrop : 1; uint32_t eopframe : 1; uint32_t intimerrx : 1; uint32_t epmismatch : 1; uint32_t inepint: 1; uint32_t outepintr : 1; uint32_t incomplisoin : 1; uint32_t incomplisoout : 1; uint32_t Reserved22_23 : 2; uint32_t portintr : 1; uint32_t hcintr : 1; uint32_t ptxfempty : 1; uint32_t Reserved27 : 1; uint32_t conidstschng : 1; uint32_t disconnect : 1; uint32_t sessreqintr : 1; uint32_t wkupintr : 1; } b; } USB_OTG_GINTSTS_TypeDef ; typedef union _USB_OTG_DRXSTS_TypeDef { uint32_t d32; struct { uint32_t epnum : 4; uint32_t bcnt : 11; uint32_t dpid : 2; uint32_t pktsts : 4; uint32_t fn : 4; uint32_t Reserved : 7; } b; } USB_OTG_DRXSTS_TypeDef ; typedef union _USB_OTG_GRXSTS_TypeDef { uint32_t d32; struct { uint32_t chnum : 4; uint32_t bcnt : 11; uint32_t dpid : 2; uint32_t pktsts : 4; uint32_t Reserved : 11; } b; } USB_OTG_GRXFSTS_TypeDef ; typedef union _USB_OTG_FSIZ_TypeDef { uint32_t d32; struct { uint32_t startaddr : 16; uint32_t depth : 16; } b; } USB_OTG_FSIZ_TypeDef ; typedef union _USB_OTG_HNPTXSTS_TypeDef { uint32_t d32; struct { uint32_t nptxfspcavail : 16; uint32_t nptxqspcavail : 8; uint32_t nptxqtop_terminate : 1; uint32_t nptxqtop_timer : 2; uint32_t nptxqtop : 2; uint32_t chnum : 2; uint32_t Reserved : 1; } b; } USB_OTG_HNPTXSTS_TypeDef ; typedef union _USB_OTG_DTXFSTSn_TypeDef { uint32_t d32; struct { uint32_t txfspcavail : 16; uint32_t Reserved : 16; } b; } USB_OTG_DTXFSTSn_TypeDef ; typedef union _USB_OTG_GI2CCTL_TypeDef { uint32_t d32; struct { uint32_t rwdata : 8; uint32_t regaddr : 8; uint32_t addr : 7; uint32_t i2cen : 1; uint32_t ack : 1; uint32_t i2csuspctl : 1; uint32_t i2cdevaddr : 2; uint32_t dat_se0: 1; uint32_t Reserved : 1; uint32_t rw : 1; uint32_t bsydne : 1; } b; } USB_OTG_GI2CCTL_TypeDef ; typedef union _USB_OTG_GCCFG_TypeDef { uint32_t d32; struct { uint32_t Reserved_in : 16; uint32_t pwdn : 1; uint32_t i2cifen : 1; uint32_t vbussensingA : 1; uint32_t vbussensingB : 1; uint32_t sofouten : 1; uint32_t disablevbussensing : 1; uint32_t Reserved_out : 10; } b; } USB_OTG_GCCFG_TypeDef ; typedef union _USB_OTG_DCFG_TypeDef { uint32_t d32; struct { uint32_t devspd : 2; uint32_t nzstsouthshk : 1; uint32_t Reserved3 : 1; uint32_t devaddr : 7; uint32_t perfrint : 2; uint32_t Reserved13_17 : 5; uint32_t epmscnt : 4; } b; } USB_OTG_DCFG_TypeDef ; typedef union _USB_OTG_DCTL_TypeDef { uint32_t d32; struct { uint32_t rmtwkupsig : 1; uint32_t sftdiscon : 1; uint32_t gnpinnaksts : 1; uint32_t goutnaksts : 1; uint32_t tstctl : 3; uint32_t sgnpinnak : 1; uint32_t cgnpinnak : 1; uint32_t sgoutnak : 1; uint32_t cgoutnak : 1; uint32_t Reserved : 21; } b; } USB_OTG_DCTL_TypeDef ; typedef union _USB_OTG_DSTS_TypeDef { uint32_t d32; struct { uint32_t suspsts : 1; uint32_t enumspd : 2; uint32_t errticerr : 1; uint32_t Reserved4_7: 4; uint32_t soffn : 14; uint32_t Reserved22_31 : 10; } b; } USB_OTG_DSTS_TypeDef ; typedef union _USB_OTG_DIEPINTn_TypeDef { uint32_t d32; struct { uint32_t xfercompl : 1; uint32_t epdisabled : 1; uint32_t ahberr : 1; uint32_t timeout : 1; uint32_t intktxfemp : 1; uint32_t intknepmis : 1; uint32_t inepnakeff : 1; uint32_t emptyintr : 1; uint32_t txfifoundrn : 1; uint32_t Reserved08_31 : 23; } b; } USB_OTG_DIEPINTn_TypeDef ; typedef union _USB_OTG_DIEPINTn_TypeDef USB_OTG_DIEPMSK_TypeDef ; typedef union _USB_OTG_DOEPINTn_TypeDef { uint32_t d32; struct { uint32_t xfercompl : 1; uint32_t epdisabled : 1; uint32_t ahberr : 1; uint32_t setup : 1; uint32_t Reserved04_31 : 28; } b; } USB_OTG_DOEPINTn_TypeDef ; typedef union _USB_OTG_DOEPINTn_TypeDef USB_OTG_DOEPMSK_TypeDef ; typedef union _USB_OTG_DAINT_TypeDef { uint32_t d32; struct { uint32_t in : 16; uint32_t out : 16; } ep; } USB_OTG_DAINT_TypeDef ; typedef union _USB_OTG_DTHRCTL_TypeDef { uint32_t d32; struct { uint32_t non_iso_thr_en : 1; uint32_t iso_thr_en : 1; uint32_t tx_thr_len : 9; uint32_t Reserved11_15 : 5; uint32_t rx_thr_en : 1; uint32_t rx_thr_len : 9; uint32_t Reserved26_31 : 6; } b; } USB_OTG_DTHRCTL_TypeDef ; typedef union _USB_OTG_DEPCTL_TypeDef { uint32_t d32; struct { uint32_t mps : 11; uint32_t reserved : 4; uint32_t usbactep : 1; uint32_t dpid : 1; uint32_t naksts : 1; uint32_t eptype : 2; uint32_t snp : 1; uint32_t stall : 1; uint32_t txfnum : 4; uint32_t cnak : 1; uint32_t snak : 1; uint32_t setd0pid : 1; uint32_t setd1pid : 1; uint32_t epdis : 1; uint32_t epena : 1; } b; } USB_OTG_DEPCTL_TypeDef ; typedef union _USB_OTG_DEPXFRSIZ_TypeDef { uint32_t d32; struct { uint32_t xfersize : 19; uint32_t pktcnt : 10; uint32_t mc : 2; uint32_t Reserved : 1; } b; } USB_OTG_DEPXFRSIZ_TypeDef ; typedef union _USB_OTG_DEP0XFRSIZ_TypeDef { uint32_t d32; struct { uint32_t xfersize : 7; uint32_t Reserved7_18 : 12; uint32_t pktcnt : 2; uint32_t Reserved20_28 : 9; uint32_t supcnt : 2; uint32_t Reserved31; } b; } USB_OTG_DEP0XFRSIZ_TypeDef ; typedef union _USB_OTG_HCFG_TypeDef { uint32_t d32; struct { uint32_t fslspclksel : 2; uint32_t fslssupp : 1; } b; } USB_OTG_HCFG_TypeDef ; typedef union _USB_OTG_HFRMINTRVL_TypeDef { uint32_t d32; struct { uint32_t frint : 16; uint32_t Reserved : 16; } b; } USB_OTG_HFRMINTRVL_TypeDef ; typedef union _USB_OTG_HFNUM_TypeDef { uint32_t d32; struct { uint32_t frnum : 16; uint32_t frrem : 16; } b; } USB_OTG_HFNUM_TypeDef ; typedef union _USB_OTG_HPTXSTS_TypeDef { uint32_t d32; struct { uint32_t ptxfspcavail : 16; uint32_t ptxqspcavail : 8; uint32_t ptxqtop_terminate : 1; uint32_t ptxqtop_timer : 2; uint32_t ptxqtop : 2; uint32_t chnum : 2; uint32_t ptxqtop_odd : 1; } b; } USB_OTG_HPTXSTS_TypeDef ; typedef union _USB_OTG_HPRT0_TypeDef { uint32_t d32; struct { uint32_t prtconnsts : 1; uint32_t prtconndet : 1; uint32_t prtena : 1; uint32_t prtenchng : 1; uint32_t prtovrcurract : 1; uint32_t prtovrcurrchng : 1; uint32_t prtres : 1; uint32_t prtsusp : 1; uint32_t prtrst : 1; uint32_t Reserved9 : 1; uint32_t prtlnsts : 2; uint32_t prtpwr : 1; uint32_t prttstctl : 4; uint32_t prtspd : 2; uint32_t Reserved19_31 : 13; } b; } USB_OTG_HPRT0_TypeDef ; typedef union _USB_OTG_HAINT_TypeDef { uint32_t d32; struct { uint32_t chint : 16; uint32_t Reserved : 16; } b; } USB_OTG_HAINT_TypeDef ; typedef union _USB_OTG_HAINTMSK_TypeDef { uint32_t d32; struct { uint32_t chint : 16; uint32_t Reserved : 16; } b; } USB_OTG_HAINTMSK_TypeDef ; typedef union _USB_OTG_HCCHAR_TypeDef { uint32_t d32; struct { uint32_t mps : 11; uint32_t epnum : 4; uint32_t epdir : 1; uint32_t Reserved : 1; uint32_t lspddev : 1; uint32_t eptype : 2; uint32_t multicnt : 2; uint32_t devaddr : 7; uint32_t oddfrm : 1; uint32_t chdis : 1; uint32_t chen : 1; } b; } USB_OTG_HCCHAR_TypeDef ; typedef union _USB_OTG_HCSPLT_TypeDef { uint32_t d32; struct { uint32_t prtaddr : 7; uint32_t hubaddr : 7; uint32_t xactpos : 2; uint32_t compsplt : 1; uint32_t Reserved : 14; uint32_t spltena : 1; } b; } USB_OTG_HCSPLT_TypeDef ; typedef union _USB_OTG_HCINTn_TypeDef { uint32_t d32; struct { uint32_t xfercompl : 1; uint32_t chhltd : 1; uint32_t ahberr : 1; uint32_t stall : 1; uint32_t nak : 1; uint32_t ack : 1; uint32_t nyet : 1; uint32_t xacterr : 1; uint32_t bblerr : 1; uint32_t frmovrun : 1; uint32_t datatglerr : 1; uint32_t Reserved : 21; } b; } USB_OTG_HCINTn_TypeDef ; typedef union _USB_OTG_HCTSIZn_TypeDef { uint32_t d32; struct { uint32_t xfersize : 19; uint32_t pktcnt : 10; uint32_t pid : 2; uint32_t dopng : 1; } b; } USB_OTG_HCTSIZn_TypeDef ; typedef union _USB_OTG_HCGINTMSK_TypeDef { uint32_t d32; struct { uint32_t xfercompl : 1; uint32_t chhltd : 1; uint32_t ahberr : 1; uint32_t stall : 1; uint32_t nak : 1; uint32_t ack : 1; uint32_t nyet : 1; uint32_t xacterr : 1; uint32_t bblerr : 1; uint32_t frmovrun : 1; uint32_t datatglerr : 1; uint32_t Reserved : 21; } b; } USB_OTG_HCGINTMSK_TypeDef ; typedef union _USB_OTG_PCGCCTL_TypeDef { uint32_t d32; struct { uint32_t stoppclk : 1; uint32_t gatehclk : 1; uint32_t Reserved : 30; } b; } USB_OTG_PCGCCTL_TypeDef ; /** * @} */ /** @defgroup USB_REGS_Exported_Macros * @{ */ /** * @} */ /** @defgroup USB_REGS_Exported_Variables * @{ */ /** * @} */ /** @defgroup USB_REGS_Exported_FunctionsPrototype * @{ */ /** * @} */ #endif //__USB_OTG_REGS_H__ /** * @} */ /** * @} */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ codec2-1.2.0/unittest/000077500000000000000000000000001445607075400145445ustar00rootroot00000000000000codec2-1.2.0/unittest/CMakeLists.txt000066400000000000000000000103531445607075400173060ustar00rootroot00000000000000add_definitions(-DFLOATING_POINT -DVAR_ARRAYS) include_directories(../src) add_executable(tfdmdv tfdmdv.c ../src/fdmdv.c ../src/kiss_fft.c ../src/octave.c) target_link_libraries(tfdmdv codec2) add_executable(tcohpsk tcohpsk.c ../src/cohpsk.c ../src/octave.c) target_link_libraries(tcohpsk codec2) add_executable(tfsk tfsk.c ../src/kiss_fft.c ../src/kiss_fftr.c ../src/octave.c ../src/modem_probe.c) target_link_libraries(tfsk m) add_executable(tfreedv_data_channel tfreedv_data_channel.c ../src/freedv_data_channel.c) add_executable(tfmfsk tfmfsk.c ../src/octave.c ../src/modem_probe.c) target_link_libraries(tfmfsk m) add_definitions(-DMODEMPROBE_ENABLE -DXXXXX) add_executable(tofdm tofdm.c ../src/octave.c) target_link_libraries(tofdm m codec2) add_executable(tofdm_acq tofdm_acq.c ../src/octave.c) target_link_libraries(tofdm_acq m codec2) if(UNIX) # Uses pthreads add_executable(tfifo tfifo.c ../src/codec2_fifo.c) target_link_libraries(tfifo codec2 ${CMAKE_THREAD_LIBS_INIT}) endif() add_definitions(-D__UNITTEST__) add_executable(tnewamp1 tnewamp1.c ../src/quantise.c ../src/newamp1.c ../src/mbest.c ../src/kiss_fft.c ../src/sine.c ../src/nlp.c ../src/dump.c ../src/octave.c ${CODEBOOKS}) target_link_libraries(tnewamp1 codec2) add_executable(compare_ints compare_ints.c) add_executable(compare_floats compare_floats.c) add_executable(tvq_mbest tvq_mbest.c) add_executable(tfreedv_800XA_rawdata tfreedv_800XA_rawdata.c) target_link_libraries(tfreedv_800XA_rawdata codec2) add_executable(tfreedv_2400A_rawdata tfreedv_2400A_rawdata.c) target_link_libraries(tfreedv_2400A_rawdata codec2) add_executable(tfreedv_2400B_rawdata tfreedv_2400B_rawdata.c) target_link_libraries(tfreedv_2400B_rawdata codec2) add_executable(tfsk_llr tfsk_llr.c) target_link_libraries(tfsk_llr codec2 m) add_executable(thash thash.c) target_link_libraries(thash codec2 m) add_executable(tqam16 tqam16.c) target_link_libraries(tqam16 codec2 m) add_executable(t16_8 t16_8.c ../src/fdmdv.c ../src/kiss_fft.c) target_link_libraries(t16_8 codec2) add_executable(t16_8_short t16_8_short.c ../src/fdmdv.c ../src/kiss_fft.c) target_link_libraries(t16_8_short codec2) add_executable(t48_8 t48_8.c ../src/fdmdv.c ../src/kiss_fft.c) target_link_libraries(t48_8 codec2) add_executable(t48_8_short t48_8_short.c ../src/fdmdv.c ../src/kiss_fft.c) target_link_libraries(t48_8_short codec2) add_executable(tquisk_filter tquisk_filter.c) target_link_libraries(tquisk_filter codec2) # Build CML as part of unit test setup find_program(OCTAVE_CMD octave-cli REQUIRED) message("Octave command: ${OCTAVE_CMD}") include(ExternalProject) set(CML_PATH ${CMAKE_CURRENT_BINARY_DIR}/../cml) ExternalProject_Add(cml GIT_REPOSITORY https://github.com/drowe67/cml.git SOURCE_DIR ${CML_PATH} BUILD_IN_SOURCE 1 CONFIGURE_COMMAND true # No configuration required BUILD_COMMAND cd ${CMAKE_CURRENT_BINARY_DIR}/../cml && make INSTALL_COMMAND true # No installation required ) # Create fading files (used for channel simulation) as part of unit test setup add_custom_target(fading_files ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/fast_fading_samples.float DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/faster_fading_samples.float ) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/fast_fading_samples.float OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/faster_fading_samples.float COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR} && ./fading_files.sh ${CMAKE_CURRENT_BINARY_DIR} ) add_executable(freedv_700d_comptx freedv_700d_comptx.c) add_executable(freedv_700d_comprx freedv_700d_comprx.c) if(LPCNET AND lpcnetfreedv_FOUND) target_link_libraries(freedv_700d_comptx m codec2 lpcnetfreedv) target_link_libraries(freedv_700d_comprx m codec2 lpcnetfreedv) else() target_link_libraries(freedv_700d_comptx m codec2) target_link_libraries(freedv_700d_comprx m codec2) endif() add_executable(golay23 ../src/golay23.c) target_compile_options(golay23 PUBLIC -DGOLAY23_UNITTEST) add_executable(golay23_runtime_tables ../src/golay23.c) target_compile_options(golay23_runtime_tables PUBLIC -DGOLAY23_UNITTEST -DRUN_TIME_TABLES) add_executable(mksine mksine.c) target_link_libraries(mksine m) add_executable(vq_mbest vq_mbest.c) target_link_libraries(vq_mbest codec2) add_executable(tesno_est tesno_est.c) target_link_libraries(tesno_est m codec2)codec2-1.2.0/unittest/check_comp.sh000077500000000000000000000022631445607075400172010ustar00rootroot00000000000000#!/usr/bin/env bash # # Check Octave and C raw data mode waveforms have about the same # compression - sanity check for C port of raw data modes. # # For manual run outside of ctest: # cd codec/build_linux # ../unittest/check_comp.sh ${CODEC2} ${PATH}:${CODEC2}/build_linux/src CODEC2=$1 PATH=$2:$PATH set -x octave_log=$(mktemp) ch_log=$(mktemp) echo "warning ('off', 'Octave:data-file-in-path'); ofdm_ldpc_tx('test_datac0.raw','datac0',1,100,'awgn','bursts',10,'txclip'); quit" | DISPLAY="" octave-cli -p ${CODEC2}/octave 1>${octave_log} oct_rms=$(cat ${octave_log} | tr -s ' ' | grep 'RMS:' | cut -d' ' -f4) oct_cpapr=$(cat ${octave_log} | grep 'RMS:' | tr -s ' ' | cut -d' ' -f6) freedv_data_raw_tx datac0 /dev/zero - --delay 1000 --testframes 10 --bursts 10 --clip 1 --txbpf 1 | \ ch - /dev/null 2>${ch_log} ch_rms=$(cat ${ch_log} | grep RMS | tr -s ' ' | cut -d' ' -f5) ch_cpapr=$(cat ${ch_log} | grep RMS | tr -s ' ' | cut -d' ' -f7) # Allow 5% difference python3 -c "import sys; sys.exit(0) if abs((${oct_rms} - ${ch_rms})/${oct_rms}) < 0.05 else sys.exit(1)" python3 -c "import sys; sys.exit(0) if abs((${oct_cpapr} - ${ch_cpapr})/${oct_cpapr}) < 0.05 else sys.exit(1)" codec2-1.2.0/unittest/check_peak.sh000077500000000000000000000027151445607075400171650ustar00rootroot00000000000000#!/usr/bin/env bash # # Check peak level of each FreeDV waveform is about the same to present # consistent drive to transmitters. # # For manual run outside of ctest: # cd codec/build_linux # PATH=${PATH}:${HOME}/codec2/build_linux/src # ./unittest/check_peak.sh # OR: # voice_test() { mode=$1 echo -n "$mode " f=$(mktemp) freedv_tx $mode ../raw/ve9qrp_10s.raw $f --clip 1 octave_cmd="cd ../octave; t=load_raw('${f}'); mx=max(t); printf('%d ',max(t)); if (mx > 16000) && (mx < 17000) printf('PASS\n') else printf('FAIL\n') end" octave-cli -qf --eval "$octave_cmd" } data_test() { mode=$1 echo -n "$mode " f=$(mktemp) freedv_data_raw_tx --framesperburst 2 --bursts 3 --testframes 6 $mode /dev/zero $f 2>/dev/null octave_cmd="cd ../octave; t=load_raw('${f}'); mx=max(t); printf('%d ',max(t)); if (mx > 16000) && (mx < 17000) printf('PASS\n') else printf('FAIL\n') end" octave-cli -qf --eval "$octave_cmd" } if [ "$1" == "LPCNet" ]; then # these don't get run unless we build with LPCNet voice_test "2020" voice_test "2020B" else voice_test "1600" voice_test "700C" voice_test "700D" voice_test "700E" voice_test "800XA" voice_test "2400A" voice_test "2400B" data_test "datac0" data_test "datac1" data_test "datac3" data_test "datac4" data_test "datac13" fi exit 0 codec2-1.2.0/unittest/check_real_comp.sh000077500000000000000000000012221445607075400201760ustar00rootroot00000000000000#!/usr/bin/env bash # check_real_comp.sh # Check the output of freedv_tx() and the real part of freedv_comptx() match, # as they use different code paths. Run from codec2/unittest, set path to # include codec2/build/misc and codec2/build/unittest set -x cat ../raw/ve9qrp_10s.raw | freedv_700d_tx > tx_700d.int16 cat ../raw/ve9qrp_10s.raw | freedv_700d_comptx > tx_700d.iq16 echo "tx_real=load_raw('tx_700d.int16'); tx_comp=load_raw('tx_700d.iq16'); \ tx_comp=tx_comp(1:2:end)+j*tx_comp(2:2:end); \ diff = sum(real(tx_comp)-tx_real); printf('diff: %f\n', diff); \ if diff < 1, quit(0), end; \ quit(1)" | octave-cli -p ../octave -qf codec2-1.2.0/unittest/compare_floats.c000066400000000000000000000033501445607075400177070ustar00rootroot00000000000000/* compare floats - a test utility */ #include #include #include #include #include #include /* Declarations */ /* Globals */ /* Main */ int main(int argc, char *argv[]) { char usage[] = "Usage: %s [-t tolerance] file1 file2\n"; float tol = .001; int opt; while ((opt = getopt(argc, argv, "t:")) != -1) { switch (opt) { case 't': tol = atof(optarg); break; default: fprintf(stderr, usage, argv[0]); exit(1); } } if ((optind + 2) > argc) { fprintf(stderr, usage, argv[0]); exit(1); } char *fname1 = argv[optind++]; char *fname2 = argv[optind++]; FILE *f1 = fopen(fname1, "rb"); if (f1 == NULL) { fprintf(stderr, "Error opening file1 \"%s\": ", fname1); perror(NULL); exit(1); } FILE *f2 = fopen(fname2, "rb"); if (f2 == NULL) { fprintf(stderr, "Error opening file2 \"%s\": ", fname2); perror(NULL); exit(1); } float data1, data2; int count = 0; int errors = 0; double rms_sum = 0; while (fread(&data1, sizeof(float), 1, f1)) { if (!fread(&data2, sizeof(float), 1, f2)) { fprintf(stderr, "Error: file2 is shorter!"); exit(1); } float err = fabsf((data1 - data2) / data1); if (err > tol) { errors++; printf("%d %g %g %g\n", count, data1, data2, err); } rms_sum += (err * err); count++; } if (fread(&data2, sizeof(float), 1, f2)) { fprintf(stderr, "Error: file1 is shorter\n"); exit(1); } if (errors) { printf("Fail: %d errors\n", errors); printf(" rms error = %g\n", ((double)rms_sum / count)); exit(1); } else printf("Pass\n"); exit(0); } // main /* vi:set ts=4 et sts=4: */ codec2-1.2.0/unittest/compare_ints.c000066400000000000000000000065051445607075400174010ustar00rootroot00000000000000/* compare ints - a test utility */ #include #include #include #include #include #include /* Declarations */ /* Globals */ /* Functions */ int get_data(FILE *f, int64_t *dd, int signed_flag, int bytes) { int res; int8_t d_8; int16_t d_16; uint8_t d_u8; uint16_t d_u16; // TODO Loop on reads until, but catch EOF!! if (signed_flag) { switch (bytes) { case 1: res = fread(&d_8, bytes, 1, f); *dd = d_8; break; case 2: res = fread(&d_16, bytes, 1, f); *dd = d_16; break; default: fprintf(stderr, "Error: unsupported size %d bytes\n", bytes); exit(1); } } else { // unsigned switch (bytes) { case 1: res = fread(&d_u8, bytes, 1, f); *dd = d_u8; break; case 2: res = fread(&d_u16, bytes, 1, f); *dd = d_u16; break; default: fprintf(stderr, "Error: unsupported size %d bytes\n", bytes); exit(1); } } if (res != 1) return (0); else return (1); } /* Main */ int main(int argc, char *argv[]) { char usage[] = "Usage: %s [-b size_in_bytes] [-c] [-s] [-t tolerance] [-n " "numerrorstoexit] file1 file2\n"; int bytes = 1; int count_errors = 0; int signed_flag = 0; int tol = 1; int numerrorstoexit = -1; int opt; while ((opt = getopt(argc, argv, "b:cst:n:")) != -1) { switch (opt) { case 'b': bytes = atoi(optarg); break; case 'c': count_errors = 1; break; case 's': signed_flag = 1; break; case 'n': numerrorstoexit = atoi(optarg); break; case 't': tol = atof(optarg); break; default: fprintf(stderr, usage, argv[0]); exit(1); } } if ((optind + 2) > argc) { fprintf(stderr, usage, argv[0]); exit(1); } char *fname1 = argv[optind++]; char *fname2 = argv[optind++]; FILE *f1 = fopen(fname1, "rb"); if (f1 == NULL) { fprintf(stderr, "Error opening file1 \"%s\": ", fname1); perror(NULL); exit(1); } FILE *f2 = fopen(fname2, "rb"); if (f2 == NULL) { fprintf(stderr, "Error opening file2 \"%s\": ", fname2); perror(NULL); exit(1); } // Convert inputs to SIGNED long values int64_t data1, data2; int count = 0; int errors = 0; int rms_sum = 0; while (get_data(f1, &data1, signed_flag, bytes)) { if (!get_data(f2, &data2, signed_flag, bytes)) { fprintf(stderr, "Error: file2 is shorter\n"); exit(1); } uint64_t err = llabs(data1 - data2); if (err > tol) { errors++; printf("%d %" PRId64 " %" PRId64 "\n", count, data1, data2); if (numerrorstoexit != -1) if (errors > numerrorstoexit) { printf("reached errors: %d, bailing!", numerrorstoexit); exit(1); } } rms_sum += (err * err); count++; } if (get_data(f2, &data2, signed_flag, bytes)) { fprintf(stderr, "Error: file1 is shorter\n"); exit(1); } if (count_errors) exit(errors); else { if (errors) { printf("Fail: %d errors\n", errors); printf(" rms error = %f\n", ((double)rms_sum / count)); exit(1); } else printf("Pass\n"); exit(0); } } // main /* vi:set ts=4 et sts=4: */ codec2-1.2.0/unittest/fading_files.sh000077500000000000000000000011241445607075400175130ustar00rootroot00000000000000#!/usr/bin/env bash # # Generate fading files used for channel simulation output_path=$1 echo "Generating fading files ......" cmd='cd ../octave; pkg load signal; ch_fading("'${output_path}'/fast_fading_samples.float", 8000, 1.0, 8000*60)' octave --no-gui -qf --eval "$cmd" [ ! $? -eq 0 ] && { echo "octave failed to run correctly .... exiting"; exit 1; } cmd='cd ../octave; pkg load signal; ch_fading("'${output_path}'/faster_fading_samples.float", 8000, 2.0, 8000*60)' octave --no-gui -qf --eval "$cmd" [ ! $? -eq 0 ] && { echo "octave failed to run correctly .... exiting"; exit 1; } exit 0 codec2-1.2.0/unittest/freedv_700d_comprx.c000066400000000000000000000106611445607075400203110ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: freedv_700d_comprx.c AUTHOR......: David Rowe DATE CREATED: July 2022 Complex valued rx to support ctests. Includes a few operations that will only work if complex Tx and Rx signals are being handled correctly. \*---------------------------------------------------------------------------*/ #include #include #include #include "codec2_cohpsk.h" #include "comp_prim.h" #include "freedv_api.h" #include "freedv_api_internal.h" #include "ofdm_internal.h" int main(int argc, char *argv[]) { /* with no arguments then run with no test code */ int test_num = 0; if (argc == 2) { if (strcmp(argv[1], "tx") == 0) { test_num = 1; } if (strcmp(argv[1], "rx") == 0) { test_num = 2; } } fprintf(stderr, "%d\n", test_num); struct freedv *freedv; freedv = freedv_open(FREEDV_MODE_700D); assert(freedv != NULL); /* note API functions to tell us how big our buffers need to be */ short speech_out[freedv_get_n_max_speech_samples(freedv)]; short demod_in[2 * freedv_get_n_max_modem_samples(freedv)]; COMP demod_in_comp[2 * freedv_get_n_max_modem_samples(freedv)]; /* set up small freq offset */ float foff_hz = 25; COMP phase_ch; phase_ch.real = 1.0; phase_ch.imag = 0.0; /* set complex sine wave interferer at -fc */ COMP interferer_phase = {1.0, 0.0}; COMP interferer_freq; interferer_freq.real = cos(2.0 * M_PI * freedv->ofdm->tx_centre / FREEDV_FS_8000); interferer_freq.imag = sin(2.0 * M_PI * freedv->ofdm->tx_centre / FREEDV_FS_8000); interferer_freq = cconj(interferer_freq); /* log a file of demod input samples for plotting in Octave */ FILE *fdemod = fopen("demod.f32", "wb"); assert(fdemod != NULL); /* measure demod input power, interferer input power */ float power_d = 0.0; float power_interferer = 0.0; int frames = 0, sum_sync = 0, frames_snr = 0; float sum_snr = 0.0; size_t nin, nout; nin = freedv_nin(freedv); while (fread(demod_in, sizeof(short), 2 * nin, stdin) == 2 * nin) { for (int i = 0; i < nin; i++) { demod_in_comp[i].real = (float)demod_in[2 * i]; demod_in_comp[i].imag = (float)demod_in[2 * i + 1]; // demod_in_comp[i].imag = 0; } if (test_num == 1) { /* So Tx is a complex OFDM signal centered at +fc. A small shift fd followed by Re{} will only work if Tx is complex. If Tx is real, neg freq components at -fc+fd will be aliased on top of fc+fd wanted signal by Re{} operation. This can be tested by setting demod_in_comp[i].imag = 0 above */ fdmdv_freq_shift_coh(demod_in_comp, demod_in_comp, foff_hz, FREEDV_FS_8000, &phase_ch, nin); for (int i = 0; i < nin; i++) demod_in_comp[i].imag = 0.0; } if (test_num == 2) { /* a complex sinewave (carrier) at -fc will only be ignored if Rx is treating signal as complex, otherwise if real a +fc alias will appear in the middle of our wanted signal at +fc, this can be tested by setting demod_in_comp[i].imag = 0 below */ for (int i = 0; i < nin; i++) { COMP a = fcmult(2E4, interferer_phase); interferer_phase = cmult(interferer_phase, interferer_freq); power_interferer += a.real * a.real + a.imag * a.imag; COMP d = demod_in_comp[i]; power_d += d.real * d.real + d.imag * d.imag; demod_in_comp[i] = cadd(d, a); // demod_in_comp[i].imag = 0; } } /* useful to take a look at this with Octave */ fwrite(demod_in_comp, sizeof(COMP), nin, fdemod); nout = freedv_comprx(freedv, speech_out, demod_in_comp); nin = freedv_nin(freedv); /* call me on every loop! */ fwrite(speech_out, sizeof(short), nout, stdout); int sync; float snr_est; freedv_get_modem_stats(freedv, &sync, &snr_est); fprintf(stderr, "sync: %d snr_est: %f\n", sync, snr_est); frames++; sum_sync += sync; if (sync) { sum_snr += snr_est; frames_snr++; } } fclose(fdemod); freedv_close(freedv); if (test_num == 2) fprintf(stderr, "Demod/Interferer power ratio: %3.2f dB\n", 10 * log10(power_d / power_interferer)); float snr_av = sum_snr / frames_snr; fprintf(stderr, "frames: %d sum_sync: %d snr_av: %3.2f dB\n", frames, sum_sync, snr_av); if (snr_av > 8.0) return 0; else return 1; } codec2-1.2.0/unittest/freedv_700d_comptx.c000066400000000000000000000023221445607075400203060ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ freedv_comptx.c Complex valued Tx to support ctests. \*---------------------------------------------------------------------------*/ #include #include #include #include #include "freedv_api.h" int main(int argc, char *argv[]) { struct freedv *freedv; freedv = freedv_open(FREEDV_MODE_700D); assert(freedv != NULL); /* handy functions to set buffer sizes */ int n_speech_samples = freedv_get_n_speech_samples(freedv); short speech_in[n_speech_samples]; int n_nom_modem_samples = freedv_get_n_nom_modem_samples(freedv); COMP mod_out[n_nom_modem_samples]; short mod_out_short[2 * n_nom_modem_samples]; /* OK main loop --------------------------------------- */ while (fread(speech_in, sizeof(short), n_speech_samples, stdin) == n_speech_samples) { freedv_comptx(freedv, mod_out, speech_in); for (int i = 0; i < n_nom_modem_samples; i++) { mod_out_short[2 * i] = mod_out[i].real; mod_out_short[2 * i + 1] = mod_out[i].imag; } fwrite(mod_out_short, sizeof(short), 2 * n_nom_modem_samples, stdout); } freedv_close(freedv); return 0; } codec2-1.2.0/unittest/hts1a.h000066400000000000000000001775221445607075400157530ustar00rootroot00000000000000short hts1a_raw[] = { -14, -14, -8, -7, -11, -15, -14, -16, -24, -26, -25, -26, -22, -22, -24, -19, -19, -19, -26, -28, -28, -21, -16, -14, -19, -19, -18, -18, -16, -18, -26, -28, -35, -28, -19, -12, -12, -14, -15, -21, -16, -12, -9, -11, -5, -8, -7, -5, -8, -8, -7, 3, 3, -1, -2, -5, -1, -7, -5, -4, -4, -7, -5, -9, -8, -12, -21, -21, -28, -28, -24, -25, -29, -29, -31, -32, -28, -31, -35, -26, -35, -31, -28, -32, -26, -21, -22, -16, -15, -14, -18, -12, -19, -12, -12, -16, -15, -16, -16, -16, -12, -15, -12, -18, -18, -15, -19, -18, -16, -14, -15, -16, -16, -16, -14, -16, -11, -4, -8, -8, -9, -8, -15, -12, -11, -12, -9, -11, -8, -11, -14, -11, -18, -16, -14, -14, -9, -5, -8, -15, -16, -14, -16, -18, -15, -31, -32, -19, -15, -12, -16, -15, -18, -14, -12, -12, -16, -24, -25, -19, -18, -22, -21, -19, -16, -16, -14, -16, -24, -24, -19, -24, -24, -19, -21, -24, -25, -28, -25, -25, -26, -18, -12, -22, -25, -26, -25, -24, -24, -22, -21, -19, -16, -15, -12, -12, -14, -8, -12, -11, -5, -1, 0, 0, -1, -4, -4, -5, -7, -7, -11, -8, -11, -5, -4, -2, -8, -5, -12, -14, -14, -14, -12, -12, -7, -16, -21, -22, -22, -25, -28, -24, -31, -32, -33, -33, -35, -31, -29, -32, -36, -36, -35, -35, -32, -26, -35, -29, -22, -18, -11, -16, -14, -14, -11, -8, -8, -12, -11, -24, -25, -12, -8, -7, -9, -5, -9, -8, -4, -7, -5, -11, -11, -4, -5, -5, -8, -4, -8, -4, -8, -14, -8, -9, -12, -11, -15, -22, -21, -19, -22, -15, -22, -18, -15, -16, -18, -12, -14, -21, -19, -16, -19, -21, -22, -21, -25, -19, -26, -21, -19, -21, -19, -16, -15, -18, -9, -8, -9, -8, -14, -19, -15, -16, -16, -16, -12, -11, -12, -11, -11, -7, -19, -18, -14, -28, -28, -26, -28, -31, -31, -24, -25, -26, -29, -28, -31, -28, -24, -21, -19, -21, -16, -24, -24, -18, -16, -19, -12, -9, -12, -14, -12, -7, -9, -9, -5, -5, -9, -7, -5, -5, -4, -21, -25, -12, -5, 5, 10, 10, -1, -2, 3, -4, -7, -8, -5, -11, -12, -25, -26, -24, -33, -32, -29, -35, -36, -33, -38, -42, -38, -38, -36, -36, -33, -32, -38, -32, -28, -22, -18, -14, -9, -15, -9, -8, -11, -2, -2, -5, -2, 3, -2, -1, -4, -7, -12, -12, -12, -16, -15, -11, -11, -8, -7, -5, -9, -12, -12, -18, -19, -26, -26, -22, -22, -24, -21, -15, -12, -14, -18, -16, -15, -26, -26, -28, -26, -26, -25, -28, -25, -14, -12, -14, -18, -24, -14, -9, -5, -7, -9, -7, -8, -14, -11, -8, -15, -8, -7, -5, -2, -5, -5, -8, -15, -15, -16, -33, -35, -25, -15, -14, -18, -22, -18, -22, -24, -29, -31, -32, -33, -31, -36, -31, -25, -31, -33, -28, -26, -22, -25, -25, -16, -18, -16, -15, -15, -14, -11, -7, -5, -4, -8, -4, -5, -8, -4, 0, -7, -1, -1, -9, -11, -12, -14, -15, -9, -8, -7, -5, -11, -12, -12, -19, -15, -16, -16, -12, -18, -19, -19, -18, -15, -19, -24, -19, -25, -28, -26, -26, -26, -28, -26, -22, -21, -25, -19, -16, -16, -9, -9, -12, -7, -11, -7, -12, -15, -18, -24, -16, -16, -12, -19, -18, -16, -25, -24, -22, -25, -21, -25, -24, -24, -19, -15, -26, -19, -14, -19, -16, -18, -26, -28, -16, -4, 10, 15, 12, 13, 10, 8, 8, -7, -11, -19, -29, -31, -33, -29, -26, -26, -26, -22, -15, -16, -15, -19, -18, -19, -12, -15, -21, -21, -24, -22, -19, -19, -15, -16, -16, -24, -18, -25, -24, -24, -26, -21, -22, -22, -18, -16, -19, -22, -22, -19, -24, -19, -16, -19, -15, -16, -12, -4, -9, -19, -12, -15, -19, -16, -16, -15, -14, -12, -12, -11, -8, -9, -9, -12, -11, -11, -8, -9, -5, 5, -1, -1, -4, -8, -8, -8, -9, -8, -7, -11, -19, -19, -18, -26, -21, -24, -24, -26, -35, -32, -36, -31, -26, -28, -26, -25, -22, -26, -35, -35, -36, -45, -45, -33, -28, -19, -16, -9, -14, -12, -5, -11, -8, -7, -5, -5, 2, -2, -5, 0, -7, -5, -11, -14, -14, -8, -8, -7, -9, -11, -11, -15, -15, -14, -12, -14, -18, -16, -9, -12, -12, -14, -16, -22, -25, -26, -31, -29, -26, -29, -25, -22, -19, -18, -24, -21, -24, -19, -12, -15, -15, -16, -15, -14, -16, -15, -16, -24, -19, -22, -26, -24, -19, -18, -19, -15, -11, -5, -2, -2, -4, -7, -4, -8, -8, -11, -15, -11, -9, -7, -9, -4, 2, -8, -1, -2, -12, -9, -15, -21, -31, -38, -32, -32, -35, -31, -28, -33, -32, -35, -33, -33, -36, -36, -42, -45, -43, -33, -29, -25, -21, -14, -12, -11, -16, -15, -12, -14, -15, -15, -9, -2, -2, 0, -5, -4, -2, 0, 8, 9, 10, 12, 3, 6, 5, 9, 3, -7, -9, -25, -32, -25, -11, -1, 2, -1, -9, -15, -12, -15, -21, -29, -35, -39, -39, -31, -33, -33, -26, -28, -29, -31, -33, -26, -24, -22, -24, -21, -18, -15, -18, -26, -25, -22, -18, -21, -24, -26, -35, -28, -26, -26, -24, -22, -16, -18, -22, -15, -22, -24, -16, -14, -11, -4, 3, 5, 3, 8, 8, 6, 0, 6, 3, -5, 0, 6, -5, -5, -8, -11, -14, -19, -21, -24, -25, -28, -28, -22, -28, -38, -38, -26, -26, -22, -32, -31, -26, -18, -12, -11, -9, -16, -21, -19, -16, -16, -18, -12, -12, -8, -7, -15, -16, -16, -19, -21, -22, -22, -22, -25, -32, -29, -35, -32, -33, -33, -29, -25, -18, -15, -16, -12, -12, -8, -2, 0, 6, 2, 0, 5, 2, -5, -1, -5, -8, -8, -8, -9, -15, -12, -11, -5, -9, -18, -19, -22, -16, -14, -11, -2, -2, -8, -16, -21, -22, -19, -24, -24, -16, -16, -12, -7, -8, -5, -8, -16, -24, -29, -35, -36, -36, -38, -41, -38, -43, -41, -39, -35, -32, -31, -32, -32, -28, -24, -24, -19, -16, -18, -12, -2, -1, 5, 5, -9, -25, -21, -15, -14, -15, -14, -18, -16, -12, -11, -5, -2, -7, -11, -7, -18, -11, -5, -2, 0, -2, 0, 0, -5, -11, -14, -12, -14, -14, -16, -18, -18, -29, -38, -38, -42, -46, -38, -35, -32, -31, -16, -5, 0, 12, 19, 20, 17, 20, 20, 16, 16, 12, 5, -7, -15, -14, -22, -25, -26, -26, -32, -38, -43, -45, -49, -55, -56, -52, -56, -48, -39, -33, -28, -31, -24, -29, -32, -26, -16, -7, -14, -11, -11, -16, -18, -29, -28, -24, -14, -11, -15, -4, -11, -12, -5, -2, 3, 5, 2, 10, 5, 6, 2, -1, -7, -7, -12, -14, -16, -22, -21, -18, -19, -22, -11, -1, 3, 2, 2, 3, 6, -2, -7, -15, -18, -24, -26, -31, -38, -41, -39, -36, -39, -33, -26, -24, -18, -19, -21, -19, -18, -16, -21, -21, -15, -14, -18, -24, -25, -31, -38, -43, -45, -46, -43, -39, -33, -28, -19, -11, -8, -4, 5, 12, 12, 17, 16, 9, 9, 10, 6, 8, -4, 3, 0, -5, -11, -14, -28, -26, -15, -24, -32, -32, -28, -32, -28, -18, -22, -22, -15, -15, -24, -25, -26, -25, -16, -16, -18, -22, -21, -26, -29, -25, -22, -19, -16, -9, -4, 2, 6, 10, 3, 2, 0, -7, -7, -14, -16, -15, -22, -26, -29, -25, -25, -22, -29, -35, -25, -19, -14, -15, -12, -15, -26, -24, -29, -28, -26, -26, -29, -32, -38, -42, -38, -33, -29, -25, -25, -21, -14, -5, 5, 6, 8, 6, 2, 0, -1, -9, -16, -18, -19, -22, -22, -21, -15, -18, -22, -11, -8, -11, -7, 5, 2, -2, -4, -5, -7, -5, 6, -7, -9, -8, -19, -22, -24, -26, -29, -33, -29, -25, -24, -21, -21, -24, -29, -28, -26, -25, -21, -26, -26, -25, -31, -31, -38, -39, -38, -33, -21, -9, -5, -4, 5, 3, -2, -7, -8, -9, -15, -16, -16, -22, -21, -24, -24, -16, -22, -21, -24, -26, -22, -16, -9, -11, -2, 6, 2, -4, -9, -16, -21, -21, -21, -24, -22, -22, -19, -18, -16, -12, -14, -12, -4, -2, -4, -8, -5, -5, -11, 0, 2, -7, -8, -12, -14, -19, -24, -25, -28, -9, -5, -29, -33, -22, -22, -21, -15, -18, -24, -21, -26, -29, -25, -33, -29, -29, -29, -31, -28, -28, -25, -24, -21, -25, -14, -7, -5, -16, -19, -21, -28, -33, -38, -36, -26, -25, -22, -8, -5, 0, 5, 10, 16, 13, 10, 8, 5, -4, -1, -7, -11, -18, -28, -31, -42, -43, -38, -38, -22, -11, -8, -7, 6, 6, 3, 13, 8, -7, -2, -9, -16, -11, -15, -18, -24, -28, -24, -25, -22, -25, -28, -25, -38, -39, -35, -36, -14, -25, -42, -16, -9, -29, -28, -26, -31, -29, -39, -29, -12, -7, -1, -2, -4, 0, 2, -5, -15, -21, -35, -32, -22, -19, -18, -19, -5, 6, 0, -14, -26, -11, 0, -19, -24, -24, -25, -25, -31, -35, -32, -19, -5, -7, -1, 0, 6, 8, 0, -8, -5, 9, 9, 6, 2, 9, 13, -7, -26, -36, -35, -42, -56, -49, -42, -42, -36, -28, -12, -12, -21, -18, -24, -19, -22, -25, -24, -21, -18, -15, -15, -8, -7, 3, -4, -11, -22, -22, -16, -24, -21, -7, -22, -31, -16, -21, -11, -12, -21, -26, -28, -19, -28, -31, -25, -38, -38, -29, -33, -38, -33, -9, 10, 19, 5, -4, -4, -1, -12, -21, -18, -16, -16, -19, -8, -5, -7, -2, 0, 12, 16, 15, 2, -14, -12, -22, -29, -42, -36, -25, -16, -18, -19, -12, 6, 2, 2, 9, -4, -11, -19, -25, -24, -28, -35, -43, -35, -25, -41, -45, -42, -39, -35, -41, -33, -29, -18, -2, -19, -32, -12, 3, -8, -11, -26, -35, -29, -29, -24, -15, -9, -8, -1, 2, 0, -1, -2, 2, -1, -8, -9, -18, -21, -26, -32, -35, -26, -15, -9, -7, -2, -2, 2, 13, 12, -2, -11, -15, -18, -28, -29, -24, -28, -32, -31, -28, -15, -9, -21, -4, 10, -7, -5, -14, -18, -9, -21, -25, -29, -32, -36, -31, -16, -24, -18, -18, -22, -25, -32, -31, -12, -8, -8, 2, -2, 15, 9, -14, -9, -9, 0, -1, -22, -24, -18, -32, -29, -29, -39, -33, -24, -41, -33, -18, -33, -28, -32, -28, -24, -35, -32, -24, -21, -14, -21, -25, -18, -9, -8, -11, 0, 3, 5, -5, -14, -19, -15, -9, 2, -2, 0, 12, 10, 19, 22, 8, -2, -5, -9, -22, -16, -5, -16, -21, -19, -16, -16, -26, -29, -28, -25, -1, -2, -15, -19, -29, -35, -35, -38, -36, -38, -29, -46, -56, -38, -45, -62, -55, -48, -33, -42, -79, -93, 33, 207, 203, 112, 30, -29, -28, -70, -148, -176, -96, -69, -87, -32, -45, -24, 46, 64, 76, 46, 43, 60, 39, 20, 12, 6, -35, -26, -28, -67, -8, -18, -55, 6, -38, -75, -24, -5, -5, -25, -25, -35, 22, 93, 23, -28, -55, -83, -42, -83, -103, -56, -22, 44, 3, -33, 6, 8, 12, 17, -5, -131, -189, 100, 265, 40, 49, 135, -59, 12, 51, -123, -87, -182, -298, -226, -192, -205, -198, -49, 30, 39, 183, 238, 183, 141, 187, 132, 83, 176, 16, -116, -90, -118, -138, -189, -123, -137, -147, -9, -28, 49, 125, 66, 29, 43, 46, -70, -100, -75, -121, -117, -109, -58, -28, 29, 77, 74, 128, 118, 63, 12, 56, 158, 90, 0, -29, -127, -103, -33, -137, -140, -18, -43, -66, -7, -45, -73, 6, 42, -35, -111, -104, -92, -147, -526, -1264, -1575, -765, 438, 997, 1207, 1339, 1320, 1748, 2310, 2055, 1176, 299, -434, -1009, -1257, -1632, -2439, -2960, -2928, -2615, -2054, -1308, -736, -303, 445, 1377, 2112, 2587, 2728, 2464, 2061, 1838, 1525, 888, 182, -511, -1203, -1516, -1425, -1447, -1556, -1386, -1076, -642, -16, 437, 547, 662, 915, 1092, 1055, 883, 519, 53, -259, -472, -771, -1037, -1070, -981, -814, -511, -203, 2, 251, 519, 616, 631, 648, 582, 476, 391, 271, -18, -305, -348, -399, -478, -389, -348, -351, -222, -121, -386, -1735, -3442, -2533, 573, 2049, 2601, 3434, 2708, 2736, 4175, 4209, 2551, 296, -1119, -2477, -3494, -3361, -4179, -5485, -5636, -4580, -3316, -2031, -22, 1181, 1763, 3271, 4874, 5510, 5224, 4612, 3186, 1425, 652, -147, -1598, -2834, -3484, -3818, -3613, -2537, -1594, -1278, -574, 734, 1997, 2818, 3281, 3233, 2488, 1960, 1561, 520, -672, -1616, -2288, -2651, -2450, -2115, -2137, -1772, -998, -341, 312, 891, 1208, 1322, 1574, 1687, 1285, 810, 427, -18, -404, -664, -1030, -1306, -1064, -656, -397, -182, -16, 170, 514, 922, 1023, 956, 915, 626, -42, -1701, -4508, -5074, -1033, 2559, 2488, 3256, 3525, 2940, 5224, 6208, 3992, -50, -2480, -3034, -4628, -4714, -5427, -7560, -7667, -5645, -2855, -1414, 621, 2572, 3066, 5038, 7469, 7951, 6155, 4438, 2841, 544, -373, -1233, -3376, -5177, -5271, -4414, -3653, -2121, -788, -392, 720, 2701, 3972, 4022, 3914, 3451, 2206, 1426, 796, -632, -2163, -3381, -4159, -4113, -3045, -1776, -1312, -743, 275, 1098, 1851, 2335, 2131, 1527, 1259, 1200, 713, 73, -516, -1176, -1677, -1755, -1672, -1670, -1336, -625, 37, 718, 1435, 1620, 1412, 1445, 1137, 438, 388, 645, 505, 194, -907, -3965, -7195, -5524, 1111, 4509, 3145, 3535, 3294, 3846, 7424, 7315, 3111, -1601, -3095, -3366, -4972, -5281, -7332, -9647, -8219, -4862, -1956, -808, 1125, 2677, 3750, 7120, 9202, 7949, 5515, 3979, 2538, 716, -4, -1881, -5029, -6072, -5264, -4448, -3573, -2254, -1472, -802, 1513, 3981, 4536, 4289, 4083, 3336, 2484, 2141, 963, -1417, -3088, -3937, -4523, -3991, -2694, -2023, -1694, -593, 580, 1431, 2310, 2417, 1777, 1433, 1598, 1241, 374, -69, -753, -1490, -1449, -1357, -1625, -1628, -1176, -845, -356, 723, 1418, 1370, 1530, 1663, 1222, 1057, 1140, 345, -576, -628, -1435, -4343, -6010, -2139, 2712, 2651, 2832, 3744, 2781, 5433, 7295, 4184, 117, -2377, -2990, -4553, -4853, -5022, -7143, -6439, -4074, -2314, -1340, -260, 822, 720, 2570, 4741, 4967, 4932, 4619, 4026, 2856, 2222, 1221, -911, -1898, -2510, -2962, -2593, -1870, -1447, -1553, -1085, -648, -342, 240, 418, 505, 623, 1054, 1416, 1337, 1193, 544, -101, -348, -407, -426, -604, -573, -519, -297, 9, -235, -589, -927, -952, -563, -310, 9, 168, 219, 369, 245, 40, -235, -451, -287, 46, 415, 683, 836, 842, 670, 489, 316, 166, 54, -36, -65, 36, -96, -883, -1693, -1570, -756, -117, 340, 975, 1918, 2596, 2086, 1068, 199, -509, -625, -662, -529, 71, -33, -597, -1067, -1512, -1670, -1870, -1901, -1547, -974, -269, 142, 260, 272, 56, -164, -24, 509, 1019, 1292, 1496, 1616, 1660, 1613, 1357, 966, 660, 605, 597, 480, 275, -134, -671, -1134, -1376, -1473, -1534, -1564, -1496, -1237, -812, -402, -128, 64, 267, 431, 522, 479, 332, 320, 468, 565, 548, 407, 180, -63, -264, -455, -638, -685, -574, -358, -32, 238, 328, 329, 371, 427, 438, 448, 424, 383, 441, 482, 29, -1189, -2337, -1898, -396, 261, 599, 1708, 2529, 2347, 1500, 312, -430, -148, 278, 227, 432, 471, -532, -1710, -2265, -2405, -2323, -2014, -1597, -1182, -690, -406, -567, -617, -358, -89, 343, 1088, 1780, 1952, 1833, 1659, 1418, 1391, 1493, 1446, 1302, 1180, 911, 415, -45, -492, -962, -1186, -1142, -1095, -1100, -1196, -1422, -1556, -1353, -995, -586, -59, 257, 287, 287, 197, 3, -36, 156, 418, 737, 932, 759, 427, 165, -84, -252, -225, -148, -84, 34, 39, -96, -169, -168, -72, 63, 179, 360, 539, 485, -67, -1439, -2707, -1793, 379, 1014, 1030, 2144, 2711, 2106, 1211, -4, -525, 364, 955, 628, 584, 170, -1432, -2769, -2892, -2525, -2075, -1551, -1390, -1363, -1025, -944, -1087, -615, 145, 594, 1099, 1758, 1969, 1712, 1453, 1289, 1384, 1843, 2083, 1800, 1387, 975, 400, -86, -260, -446, -681, -781, -918, -1183, -1481, -1768, -1877, -1558, -1020, -515, -28, 192, 9, -261, -322, -178, 98, 444, 706, 805, 761, 492, 145, -5, 6, 20, 53, 81, 27, -103, -249, -325, -219, -9, 139, 291, 473, 547, 400, 42, -904, -2367, -2330, -46, 1336, 924, 1518, 2371, 1895, 1372, 564, -271, 454, 1397, 1020, 578, 328, -986, -2542, -2821, -2398, -1994, -1564, -1564, -1956, -1922, -1598, -1434, -879, 175, 771, 983, 1429, 1726, 1615, 1534, 1616, 1721, 2049, 2369, 2073, 1426, 888, 304, -192, -219, -94, -284, -630, -961, -1359, -1618, -1696, -1748, -1454, -778, -324, -128, -18, -195, -423, -382, -226, 70, 483, 701, 628, 428, 210, 10, -22, 114, 227, 272, 257, 169, 25, -75, -138, -118, 102, 328, 287, 159, 135, -135, -1224, -2588, -2139, 243, 1339, 861, 1548, 2238, 1746, 1333, 575, 20, 917, 1538, 977, 662, 405, -964, -2463, -2640, -2228, -1890, -1544, -1616, -1970, -1980, -1750, -1567, -867, 258, 771, 834, 1153, 1445, 1448, 1465, 1600, 1732, 2025, 2283, 1981, 1387, 883, 305, -131, -60, 112, -138, -472, -713, -1204, -1632, -1686, -1616, -1274, -676, -513, -574, -314, -246, -516, -545, -349, -28, 512, 853, 680, 427, 319, 192, 159, 289, 343, 264, 254, 193, -29, -143, -148, -107, 152, 371, 271, -62, -913, -2303, -2531, -572, 992, 788, 1179, 2054, 1888, 1608, 1079, 285, 625, 1391, 1211, 911, 815, -239, -1829, -2473, -2303, -1946, -1557, -1548, -1949, -2143, -1976, -1775, -1202, -178, 458, 614, 910, 1272, 1374, 1395, 1466, 1518, 1745, 2114, 2090, 1680, 1224, 657, 53, -175, -52, -45, -203, -454, -892, -1329, -1492, -1447, -1204, -814, -655, -631, -406, -247, -334, -468, -526, -358, 83, 466, 547, 455, 343, 228, 230, 309, 335, 371, 394, 352, 231, 64, -60, -48, 104, 202, -11, -747, -2004, -2576, -1166, 550, 643, 737, 1650, 1868, 1642, 1375, 674, 546, 1071, 1077, 943, 1115, 595, -841, -1963, -2249, -2154, -1810, -1444, -1523, -1822, -1890, -1813, -1512, -726, 32, 333, 650, 1095, 1306, 1343, 1429, 1450, 1429, 1627, 1802, 1692, 1440, 1016, 360, -106, -130, -84, -157, -290, -645, -1068, -1270, -1301, -1210, -984, -715, -532, -436, -353, -370, -471, -464, -363, -165, 206, 496, 517, 400, 306, 192, 166, 284, 373, 383, 386, 383, 319, 224, 135, 127, 115, -491, -1799, -2388, -1161, 363, 522, 420, 1024, 1442, 1559, 1517, 1026, 750, 863, 628, 452, 800, 684, -348, -1405, -1942, -2143, -2044, -1704, -1476, -1461, -1526, -1621, -1422, -716, 5, 325, 585, 1013, 1288, 1380, 1476, 1487, 1409, 1382, 1354, 1255, 1174, 968, 519, 129, -52, -240, -438, -441, -399, -604, -941, -1258, -1284, -315, 394, -628, -1085, -532, -675, -126, -277, -1573, -522, 598, 237, 407, 805, 1075, 653, 318, 362, -59, -56, -240, -233, 312, -489, -2514, -4669, -4202, -712, 2020, 3805, 4136, 2529, 3440, 5718, 5515, 3867, 1626, -647, -2193, -2176, -1803, -3276, -5465, -7012, -7661, -6402, -3818, -2200, -1338, 105, 1535, 3292, 5837, 7231, 6633, 5443, 4310, 3120, 2167, 863, -1674, -4124, -5139, -5305, -4852, -3473, -1936, -1080, -52, 1583, 2812, 3833, 4309, 3278, 2191, 1920, 1330, 168, -1132, -2559, -3548, -3413, -3045, -3000, -2440, -1105, 424, 1562, 2003, 1718, 1409, 1794, 1922, 959, -191, -649, -329, -22, -2232, -7587, -10133, -6123, 3815, 11010, 10048, 7655, 4465, 7798, 10768, 5766, -1615, -9642, -12287, -10166, -6666, -6229, -9606, -9109, -5832, -1326, 4475, 7162, 6468, 5722, 6975, 8255, 7576, 5333, 919, -3576, -5125, -4751, -4305, -4140, -4257, -4346, -2541, 1238, 4948, 7386, 6832, 4496, 3434, 2708, 1527, -206, -3454, -6091, -5990, -4237, -2710, -1963, -1253, -324, 1191, 2740, 2787, 2061, 1796, 1911, 1408, -65, -1632, -2642, -2612, -2111, -2132, -2119, -703, 1824, 2113, -3052, -10217, -9285, 2474, 15080, 14696, 9168, 3569, 1871, 8840, 7733, -863, -10981, -16373, -12835, -7172, -2606, -4832, -7242, -3728, 1232, 7185, 9862, 7265, 2730, 1101, 4013, 4560, 2412, -866, -5642, -6610, -3630, -702, 380, 20, -726, -825, 2400, 6645, 7202, 4332, 728, -1582, -1799, -535, -1312, -4539, -5701, -4256, -1013, 2246, 2495, 1214, 859, 1630, 1894, 788, -715, -1510, -1008, -797, -1376, -2139, -2347, -1166, 64, 874, 1826, 2927, 1167, -7529, -13865, -7119, 8693, 17405, 11376, 5806, -706, 3910, 12384, 4898, -5841, -15567, -15268, -9199, -2915, -2, -6828, -7298, -645, 4931, 9593, 8510, 3404, -1029, 1545, 5927, 3179, 704, -3058, -7267, -5092, -1456, 523, 578, 803, 476, 128, 4503, 7132, 4843, 2484, -314, -2661, -1629, -312, -2667, -4845, -4645, -3556, -106, 3033, 2307, 815, 1327, 2202, 1608, 238, -1347, -2299, -1676, -1349, -2026, -2123, -993, 185, 601, 1363, 2536, 1356, -6385, -14216, -8118, 9341, 18113, 10028, 5714, -662, 2201, 13868, 5555, -6998, -16122, -13932, -7484, -3936, -511, -7031, -7875, 1569, 7356, 9852, 7233, 2382, -812, 2168, 7258, 2096, -2579, -3745, -6101, -3546, -123, 70, -1707, -134, 2587, 1895, 4233, 5028, 2090, 1861, 1389, -720, -1444, -1278, -3112, -4277, -3164, -2898, -1520, 861, 1640, 1528, 1967, 2726, 1695, 329, -492, -1697, -1969, -1929, -2346, -2041, -600, 480, 449, 1232, 2001, -2082, -11654, -11999, 3894, 17853, 11683, 5279, 1994, -1245, 12112, 9934, -5184, -14616, -13918, -5837, -3437, -2238, -7345, -9704, 1457, 9286, 8837, 4980, 1010, 1222, 4271, 7312, 1819, -5336, -4002, -3308, -1866, -985, -3300, -3466, -199, 5187, 4104, 1751, 2997, 2126, 3600, 3670, -678, -3106, -1891, -1261, -2368, -2264, -3919, -3476, 176, 1251, 1354, 400, 691, 2138, 1896, 1695, -373, -2231, -1989, -1816, -1622, -1393, -557, -261, 839, 1234, -6099, -13830, -6704, 12207, 17650, 5219, 4873, 2652, 5438, 14840, 2038, -11781, -14722, -7010, -2482, -5104, -8182, -11393, -3796, 9197, 8387, 2298, 752, 2771, 7659, 8564, 3986, -5080, -5073, 893, -749, -2984, -6554, -6884, -950, 4891, 4912, -866, 561, 5333, 7261, 5833, -1037, -4326, -1758, 1554, -393, -5394, -5454, -3454, 179, 2665, -1061, -2457, 677, 3635, 4058, 1347, -451, -846, -346, -403, -2221, -2535, -1778, -671, 454, -2159, -10071, -12945, -179, 17116, 12061, 403, 7550, 7610, 11287, 11279, -5843, -14361, -7034, -1442, -6719, -11613, -12495, -8241, 4100, 9619, -682, -1891, 5146, 9786, 11057, 5758, -974, -3229, 3852, 2712, -6304, -8209, -8290, -4368, 1412, 1119, -2455, -1243, 5528, 8521, 7421, 3537, -1505, 772, 3590, -341, -4257, -4940, -4165, -2414, -583, -3011, -4147, 39, 2313, 2528, 2055, 1207, 1947, 2715, 1007, -2408, -2377, -414, -1230, -1867, -3633, -9724, -12863, -3041, 14045, 10335, -2909, 9310, 13964, 12254, 12191, -3180, -10105, -345, -192, -11763, -16662, -13357, -7749, 648, 2417, -6327, -892, 9776, 11498, 8643, 4306, 4143, 5477, 7138, 935, -8335, -6130, -4015, -5890, -6088, -6166, -3580, 1133, 4766, 3210, 4129, 8211, 5810, 3999, 3155, 502, -186, -1683, -4503, -5169, -3667, -3607, -4424, -3364, -1626, 496, 2096, 1967, 2167, 3503, 3642, 1586, -283, -332, -32, -1544, -4229, -7899, -12648, -8414, 7338, 10181, -4368, 4177, 17458, 13517, 13236, 4243, -5162, 1964, 2892, -11114, -17844, -12323, -7832, -6496, -4604, -7565, -3331, 7284, 7605, 3611, 5653, 10209, 9934, 7845, 4885, -679, -230, -329, -7610, -9785, -6780, -5146, -4804, -3114, -808, 1753, 6140, 6461, 4152, 5323, 6386, 4387, 857, -710, -1095, -2162, -3546, -6282, -6035, -3066, -2787, -2956, -1881, 510, 2940, 3258, 2654, 2028, 2429, 2474, 1033, -233, -2762, -7034, -11056, -7771, 4646, 5433, -5715, 3990, 16374, 11856, 10648, 5494, -18, 5462, 1544, -10835, -12677, -6704, -7160, -10246, -8169, -7359, -3156, 2089, -420, 260, 6647, 8892, 6911, 7202, 8552, 5729, 4090, 1688, -3204, -3246, -3532, -7259, -7538, -4539, -3069, -2792, -884, 932, 3421, 5464, 3526, 3536, 5345, 4133, 2168, 584, -281, -1044, -2500, -4101, -4951, -3804, -3109, -3549, -2503, -910, 410, 1643, 2037, 1937, 2188, 2788, 2315, -572, -6503, -9657, -1302, 7699, -1541, -6680, 9781, 13307, 6279, 7430, 3430, 3365, 5749, -4342, -10037, -4328, -4039, -10940, -9452, -4717, -5445, -3381, -2392, -2448, 2723, 4173, 2037, 4710, 9437, 7904, 4223, 5554, 4404, 1385, -43, -3303, -4253, -3654, -5194, -5691, -3290, -1456, -2081, -498, 1909, 2226, 3394, 3325, 2560, 4033, 3472, 1280, 1159, 354, -1428, -2003, -2912, -3889, -3756, -3522, -3245, -2163, -801, -58, 556, 1671, 2327, 2137, 1292, -3214, -7879, -365, 8792, -2058, -6971, 10764, 11376, 2080, 7475, 5194, 2926, 4953, -5039, -7315, -715, -5646, -12680, -6937, -1755, -6613, -5901, -2174, -1343, 2238, 575, -682, 5661, 9086, 4503, 2478, 7910, 6936, 1933, 1266, -19, -835, -2541, -5805, -4897, -2034, -3317, -5455, -1761, 1654, -167, -301, 2165, 3287, 3091, 2318, 1799, 3063, 3081, -334, -481, 970, -1720, -3691, -3239, -2820, -2991, -3206, -2470, -811, 529, 173, 716, 2623, 1564, -3845, -6581, 2529, 8041, -5370, -4499, 13582, 7503, -109, 8820, 5684, 4438, 3673, -6724, -2925, 1272, -9126, -12206, -2956, -2350, -9067, -5194, -1653, -1288, 390, -2551, 530, 6921, 4657, 798, 5477, 10107, 4739, 2049, 4361, 2961, 561, -2843, -4325, -1612, -2273, -6381, -5260, -109, -1162, -3773, -522, 1928, 1069, 328, 1702, 3025, 2946, 2046, 955, 2895, 2338, -1672, -1136, -243, -2378, -3644, -2902, -1987, -2112, -1495, -920, 270, 1683, 595, -992, -4240, -4096, 5163, 3365, -8693, 2644, 13871, 721, 2637, 10991, 4279, 5176, 1215, -4254, 1188, -1917, -10538, -7706, -284, -6409, -9875, -1970, -2217, -3228, -2424, -2575, 1869, 3423, 1156, 1937, 7458, 7611, 2627, 5239, 6736, 2968, 897, -186, -48, -1270, -3511, -4529, -2943, -1507, -4284, -3616, -532, -870, -1332, -877, 1520, 2161, 605, 2045, 3158, 2852, 1636, 554, 1527, 479, -1720, -2091, -1287, -1420, -2853, -1994, -642, -702, -651, -305, 809, -1228, -6310, -3284, 6444, 57, -9694, 6692, 12322, -2264, 4655, 10553, 3995, 5217, -66, -1294, 2509, -3061, -9247, -4914, 871, -7968, -9271, -1035, -3443, -5114, -3791, -1539, 1162, 829, 660, 2385, 7135, 5285, 1660, 6675, 7080, 2594, 1368, 2909, 2358, -1581, -2121, -1548, -1810, -3079, -4944, -2309, -1422, -3854, -2656, -14, 115, -634, 735, 2188, 2383, 1821, 1231, 2298, 1998, 6, -378, 210, -244, -1924, -1735, -317, -1118, -1969, -886, 5, -368, -410, -812, -3948, -5540, 1489, 4735, -7002, -3001, 13628, 3594, -3100, 10227, 7590, 2375, 2916, 1211, 1479, -631, -3134, -6350, -1802, -978, -10207, -6177, -1046, -4499, -6925, -3423, 1443, -1421, -584, 2444, 2882, 5009, 3294, 3499, 5559, 5411, 3077, 1096, 4451, 2750, -1703, -631, 383, -1183, -4035, -2959, -1350, -3069, -3804, -2694, -236, -904, -1864, 513, 1545, 1463, 455, 1019, 2475, 970, 230, 551, 798, 211, -916, -468, -216, -352, -1036, -1298, -138, -232, -750, -580, 40, -1001, -5521, -4688, 5193, 3492, -9220, 1094, 13917, 1137, -3168, 7172, 9020, 2400, -2739, 3367, 3104, -2930, -2350, -4632, -2215, -2432, -6993, -6593, -3793, 228, -5689, -6176, 2457, 1840, -1003, -1275, 4305, 5439, 333, 2841, 4258, 4558, 3512, 1238, 3254, 2559, 1884, -421, -1639, 1150, -1170, -3158, -3000, -1500, -1025, -3848, -2200, -277, -804, -1328, -773, 1228, 162, -96, 884, 812, 1234, 386, 645, 708, 381, 633, -624, -126, 146, -872, -957, -586, 223, -698, -781, 544, 261, 200, -328, -2742, -4169, 1605, 6106, -3718, -5298, 7649, 6832, -1261, -1390, 4067, 6767, -470, -1764, 1864, -38, 257, -2297, -3900, -2558, -1958, -1561, -6583, -4334, 516, -2266, -3226, -2200, 2206, 1794, -1454, 1915, 2658, 3157, 2576, 1949, 3410, 1896, 3450, 2310, 117, 1588, 1002, 917, -1493, -1639, 129, -2106, -2237, -2421, -1808, -1254, -2307, -727, -923, -651, 449, 46, 471, 268, 1098, 710, -117, 1031, 362, -192, -90, 398, 471, -775, -349, 271, 125, -277, -403, -31, 162, 682, -104, -477, 441, 534, 682, 136, -219, 114, -447, -2159, -2436, 1852, 1779, -2721, -567, 1960, 1799, 1184, -179, 1457, 1266, 629, 1852, -82, -866, -345, 61, -696, -3194, -1676, -726, -1898, -1857, -1936, -516, -494, -253, 808, -301, 554, 1218, 1193, 1286, 398, 1408, 1364, 843, 1215, 506, 400, 94, 496, 632, -447, -192, -387, -386, -505, -1087, -390, -591, -458, -196, -703, -257, -225, 87, 90, -470, 210, 258, -121, -270, -150, 267, -203, -43, 302, -101, 47, 244, 209, 63, 142, 353, 64, -158, -79, 312, -121, -985, -253, 224, -389, -603, -351, -28, 56, 376, 220, -222, 353, 635, 478, 441, 85, -219, -768, -570, 876, 771, -478, -189, 482, 529, 329, 211, 618, 210, -94, 575, 101, -511, -508, -454, -437, -1064, -996, -845, -1071, -617, -593, -579, -382, -58, 471, 253, 135, 289, 926, 1221, 374, 432, 626, 645, 834, 325, 203, 84, -69, -36, -344, -247, -287, -308, -257, -498, -158, -109, -198, 51, -60, -96, -138, -56, 98, -11, 54, -73, -188, -216, -209, -5, -219, -244, -28, -33, 68, -84, -84, 80, 73, 119, -16, 66, 277, 234, 102, -55, -16, 47, 2, -93, -193, -113, -55, 50, -53, -307, -24, 213, 98, 37, -31, -7, 158, 335, 243, 22, -138, -114, 100, -46, -12, 59, -209, -89, -387, -869, -338, 349, 214, -232, 57, 417, 335, 312, 414, 604, 151, 63, 478, 22, -329, -402, -315, -355, -754, -553, -526, -538, -332, -424, -199, -28, 5, -42, 94, 415, 271, 316, 136, 90, 485, 233, 202, 189, -7, 119, 61, 238, 200, -237, -254, -49, 136, 64, -79, 20, 129, 93, 9, 163, 95, -203, -49, -24, -295, -223, -110, -223, -396, -499, -400, -240, -33, 98, -1, 54, 179, 134, 97, 78, 77, 83, 197, 296, 85, 70, 180, -124, -99, 192, -128, -218, 57, -193, -181, 74, -113, -140, -164, -338, -179, 243, 366, -42, -277, -104, 326, 618, -14, -451, -82, 427, 529, -158, -205, 119, 80, 131, -334, -213, 29, -440, -203, -304, -836, -890, -169, 646, -67, -447, 172, 636, 871, 527, 643, 608, 262, 642, 401, -199, -569, -523, 23, -393, -1005, -848, -468, -303, -376, -237, -406, -287, 127, -24, 32, 107, 294, 410, 155, 369, 735, 1157, 894, 228, 386, 77, -355, -358, -547, -555, -441, -222, -250, -179, 108, 136, 345, 287, 162, -33, -328, -152, -376, -598, -557, -479, -116, -18, -29, -179, -58, 306, 129, 206, 138, 67, 337, 284, 462, 255, 127, 401, 97, 33, -124, -90, 194, -120, -174, -185, -107, -46, -546, -587, -11, 101, -488, -414, -205, -223, 604, 237, -778, -128, 197, -56, 346, -42, -471, 543, 625, 42, 398, 270, 352, 612, 226, -97, -545, -986, -945, 180, 328, -916, -487, 557, 1254, 725, -351, 751, 1211, 679, 478, -325, -431, -253, -48, -569, -1721, -1248, -523, -457, -1384, -1587, 255, 138, -553, -114, -66, 592, 657, 497, 609, 570, 1263, 1060, 490, 405, 734, 1057, -32, -239, 210, 68, -104, -819, -495, -219, -666, -557, -737, -389, -352, -536, -222, -397, 50, 74, -90, 59, -155, 548, 417, -70, 325, 411, 649, 248, 204, 645, 186, 219, 112, -70, -109, -446, -278, -542, -702, -586, -596, -352, -617, -462, -216, -222, 25, -247, -18, 456, 500, 543, 379, 531, 935, 1053, 335, 25, 672, 318, -28, -816, -2456, -1516, 306, -121, -1684, -1292, 1694, 2342, 236, 60, 2252, 3274, 1020, -188, 1232, 1227, -252, -1636, -1516, -904, -1924, -2779, -2848, -2019, -1439, -2150, -1854, -683, 309, 118, -339, 1142, 2092, 1617, 1234, 1834, 2791, 2007, 1289, 1677, 1789, 1272, 289, 217, 270, -317, -828, -1357, -1162, -1102, -1626, -1775, -1529, -903, -1022, -1267, -600, -113, -67, -274, 162, 766, 571, 349, 359, 1031, 1385, 534, 396, 1299, 1418, 144, -242, 669, 265, -870, -965, -404, -662, -1479, -1228, -777, -889, -1008, -862, -344, 42, 110, 54, 404, 1167, 1098, 571, 942, 1528, 1010, 363, 766, 584, -897, -1931, -1206, -25, -637, -1718, -533, 1422, 900, -67, 1286, 2403, 1732, 659, 1009, 1558, 228, -802, -877, -925, -1503, -2632, -2514, -2009, -2026, -2343, -2281, -906, -525, -892, -334, 718, 1351, 805, 1249, 2375, 2283, 1903, 1872, 2457, 2290, 1439, 1279, 1129, 860, 43, -607, -550, -942, -1455, -1851, -1708, -1513, -1901, -1768, -1313, -951, -920, -816, -144, 112, 93, 227, 495, 816, 757, 554, 582, 1324, 1474, 458, 711, 1433, 798, -86, 145, 626, -513, -1102, -339, -651, -1347, -1325, -907, -1033, -1323, -828, -642, -444, -113, -33, 411, 789, 969, 827, 980, 1337, 1112, 1075, 727, 374, 27, -933, -1200, -696, -79, -913, -1343, 905, 997, -110, 963, 1732, 1617, 723, 866, 1238, 71, -341, -839, -1040, -1214, -2238, -2186, -1978, -1808, -2140, -2121, -819, -845, -894, -189, 489, 830, 605, 1397, 1894, 1789, 1928, 1903, 2286, 2038, 1530, 1394, 1204, 891, -12, -249, -227, -934, -1386, -1439, -1292, -1607, -1796, -1363, -1213, -1135, -1015, -678, -307, -260, -90, 165, 466, 520, 431, 665, 667, 502, 727, 1115, 806, 367, 1021, 1166, 173, 83, 558, -42, -816, -562, -464, -1091, -1190, -917, -975, -1025, -924, -692, -450, -291, -193, 142, 595, 626, 686, 970, 1082, 990, 805, 867, 843, 319, 17, -195, -859, -952, -270, -365, -1005, -184, 815, 199, 328, 1211, 1085, 894, 789, 633, 384, -89, -576, -976, -924, -1469, -2074, -1662, -1558, -1801, -1713, -1090, -713, -758, -223, 244, 524, 791, 986, 1443, 1626, 1612, 1636, 1802, 1817, 1365, 1225, 1156, 713, 267, 23, -169, -603, -894, -988, -1146, -1236, -1325, -1250, -1073, -1022, -940, -717, -448, -366, -295, -28, 160, 192, 305, 522, 591, 553, 554, 502, 492, 703, 751, 373, 354, 735, 388, -164, 102, 87, -564, -675, -444, -706, -992, -816, -678, -750, -689, -505, -259, -150, -116, 176, 438, 465, 560, 815, 880, 638, 615, 851, 466, -58, 207, 19, -777, -959, -577, -66, -379, -678, 444, 939, 363, 565, 1241, 1237, 565, 407, 598, 155, -564, -972, -849, -1078, -1833, -1883, -1422, -1428, -1737, -1373, -620, -553, -545, 46, 621, 725, 734, 1186, 1600, 1530, 1380, 1579, 1777, 1428, 1053, 1111, 992, 452, 61, 49, -175, -716, -967, -907, -1025, -1335, -1370, -1115, -1063, -1161, -979, -622, -477, -475, -219, 156, 240, 243, 503, 785, 734, 650, 795, 826, 557, 315, 452, 605, 60, -329, 190, 153, -550, -494, -135, -389, -811, -593, -314, -597, -669, -386, -167, -210, -266, 78, 299, 187, 206, 471, 554, 353, 455, 582, 393, 261, 217, 119, -53, -186, -361, -647, -732, -604, -236, -86, -325, 388, 1004, 599, 871, 1273, 1200, 945, 645, 653, 224, -325, -740, -1025, -1149, -1776, -1976, -1733, -1752, -1781, -1622, -985, -698, -570, 27, 500, 829, 990, 1336, 1726, 1749, 1748, 1770, 1867, 1667, 1258, 1130, 910, 447, -38, -286, -509, -991, -1326, -1383, -1461, -1615, -1615, -1384, -1196, -1080, -838, -482, -175, -14, 216, 546, 721, 771, 874, 1017, 977, 800, 710, 674, 476, 139, 50, 37, -290, -491, -485, -547, -501, -539, -647, -450, -303, -443, -355, 5, 6, -121, 158, 337, 213, 237, 445, 488, 373, 371, 309, 216, 257, 166, -93, -67, -25, -487, -577, -237, -757, -1373, -832, -334, -368, -174, 226, 1135, 1470, 1102, 1724, 2099, 1709, 1214, 900, 893, -62, -961, -1193, -1544, -2098, -2837, -2650, -2327, -2490, -2272, -1748, -890, -508, -179, 742, 1418, 1785, 1945, 2451, 2852, 2549, 2342, 2263, 2071, 1439, 723, 422, -70, -780, -1397, -1652, -1795, -2228, -2373, -2126, -1836, -1672, -1380, -736, -179, 146, 496, 999, 1399, 1449, 1470, 1602, 1565, 1249, 881, 663, 364, -144, -546, -764, -1006, -1224, -1274, -1323, -1236, -962, -746, -407, -120, 80, 463, 721, 747, 843, 993, 900, 669, 618, 533, 236, -48, -107, -201, -458, -556, -542, -529, -465, -437, -307, -188, -438, -662, -305, -39, -849, -1609, -263, 1428, 228, -375, 2323, 3098, 1664, 1745, 2553, 2535, 1112, 77, -77, -756, -1720, -3222, -3587, -2878, -3439, -4100, -3459, -1755, -1227, -1445, 83, 1728, 2314, 2379, 2965, 3941, 3821, 3266, 2732, 2490, 2154, 755, -389, -760, -1169, -2230, -3181, -2864, -2619, -2872, -2717, -1946, -927, -441, 68, 922, 1777, 2357, 2318, 2405, 2664, 2408, 1643, 895, 553, -104, -1131, -1816, -2166, -2399, -2609, -2615, -2416, -1697, -736, -598, 40, 1632, 2103, 1854, 2137, 2549, 2345, 1456, 902, 564, -128, -821, -1510, -1762, -1629, -1827, -1897, -1407, -639, -298, -256, 342, 1237, 1516, 948, 881, 1300, 285, -601, -106, -1005, -2152, -765, 366, -225, 105, 1800, 2667, 2263, 2358, 2609, 1902, 1309, 383, -1178, -2028, -2431, -3415, -4550, -4205, -3344, -3426, -2845, -1330, 27, 949, 1939, 3073, 3622, 4112, 4210, 3486, 2987, 2535, 1477, 2, -942, -1447, -2432, -3129, -3225, -3139, -2816, -2288, -1557, -826, 190, 1229, 1697, 2171, 2713, 2848, 2494, 1998, 1574, 810, -38, -777, -1573, -2133, -2414, -2554, -2640, -2453, -1750, -916, -403, 165, 1489, 2218, 1984, 2950, 3358, 1847, 1268, 1173, 3, -1163, -1755, -2176, -2690, -2518, -1972, -1908, -1192, 22, 618, 1019, 1695, 2107, 1666, 1636, 2010, 1092, 94, -263, -1376, -1768, -457, -1731, -5151, -3981, 955, 2337, -400, 750, 5303, 6160, 5173, 3503, 1711, 2310, 1724, -1812, -6147, -6323, -3861, -5816, -7464, -5990, -3493, -1001, 97, 1540, 2770, 5367, 7786, 5898, 4386, 4606, 4302, 1937, -1267, -2217, -3112, -3790, -4215, -5298, -4526, -2551, -773, -546, -32, 2599, 3965, 3955, 3518, 3064, 2937, 2131, 893, -1169, -2477, -2268, -2844, -3763, -3940, -2899, -1616, -1023, -181, 607, 1586, 2617, 3023, 3070, 2914, 2991, 2172, 623, -310, -1374, -2183, -2752, -3338, -3214, -2667, -1629, -816, -278, 799, 1765, 2420, 2415, 2095, 1811, 1020, 509, 175, -542, -1258, -1676, -1622, -1721, -1740, -1068, -852, -2054, -2617, 929, 5290, 4343, 2568, 4316, 5511, 5146, 3002, -412, -2276, -2717, -3204, -6159, -8896, -7253, -4846, -3602, -2969, -1694, 1159, 3995, 6267, 6021, 4739, 5447, 5599, 3839, 720, -1621, -2390, -3349, -4039, -4975, -5170, -3395, -1315, 139, 701, 2083, 4056, 4738, 4561, 3559, 2429, 1602, 507, -1149, -3232, -4042, -3810, -3787, -3580, -3000, -1677, -99, 1293, 2238, 2416, 2580, 2706, 3382, 4128, 2082, -743, -502, -239, -2169, -3426, -3827, -3585, -2181, -999, -751, -658, 1255, 3304, 2794, 1816, 1619, 1680, 1241, 8, -1322, -2153, -1180, -321, -1526, -2302, -1478, -72, 363, -230, -426, -82, -103, -77, 2541, 4581, 3326, 3631, 4197, 3161, 2512, 785, -1567, -3641, -4417, -4491, -6115, -6640, -5357, -3878, -2181, -630, 1004, 2187, 3811, 5725, 5413, 4276, 3600, 2869, 1625, -298, -1819, -3206, -3817, -3270, -3022, -2734, -1844, -175, 1408, 2225, 2944, 3158, 3145, 3144, 2440, 1057, -421, -1236, -1857, -2701, -3165, -3225, -2780, -1898, -937, -298, -206, 87, 1419, 3719, 4816, 3523, 2068, 1482, 881, -351, -2295, -3896, -4219, -3195, -2016, -1842, -1410, 9, 1300, 1732, 1636, 1591, 1442, 1292, 1060, 905, 951, 40, -693, -286, -671, -1437, -1264, -383, 371, 148, 623, 1538, -1352, -5744, -4090, 1312, 2921, 1799, 1479, 2488, 5347, 7009, 4782, 210, -1976, -191, -607, -4050, -6603, -6961, -5451, -3585, -2599, -3395, -3123, 320, 3569, 4271, 3628, 3813, 4892, 5331, 4548, 2148, -569, -1301, -1040, -1894, -3494, -4162, -3511, -2160, -805, -235, -93, 737, 2313, 3162, 2711, 2027, 1466, 942, 786, 684, -712, -2331, -1677, -1330, -2395, -1867, -539, -52, -62, 434, 820, 233, 735, 1092, -206, -628, -8, 124, -546, -681, -390, -814, -535, 90, -5, -80, 381, 1054, 919, 810, 759, 221, 373, 445, -358, -1278, -1213, 15, 517, 240, 469, 618, 117, -366, -1994, -3771, -679, 3229, 1528, -90, 1057, 1545, 2429, 2774, 1183, -1064, -1624, 94, -409, -2670, -2848, -2292, -1846, -1057, -812, -1316, -1070, 454, 1003, 468, 747, 1275, 1268, 1598, 1792, 975, 808, 942, 410, 441, -32, -622, -261, -436, -603, -474, -709, -641, -368, -305, -310, -242, -165, -29, 114, 107, 193, 187, 158, 287, 194, 100, 51, -28, -31, -70, -19, -33, -143, -165, -225, -240, -244, -273, -283, -269, -118, -7, 34, 68, 94, 196, 267, 258, 202, 136, 102, 29, -72, -179, -281, -298, -274, -227, -161, -15, 162, 227, 236, 268, 332, 335, 237, 132, 8, -77, -130, -179, -220, -267, -270, -218, -159, -65, 46, 111, 144, 187, 226, 197, 129, 56, -14, -93, -179, -259, -280, -256, -236, -198, -168, -134, -41, 51, 66, 42, 50, 76, 107, 156, 168, 144, 124, 110, 76, -5, -50, -72, -130, -219, -284, -253, -181, -118, -75, -56, -9, 77, 144, 175, 176, 206, 247, 240, 187, 85, -15, -79, -158, -240, -274, -283, -257, -178, -96, -36, 44, 131, 196, 206, 180, 175, 134, 61, -26, -116, -179, -195, -188, -215, -250, -209, -137, -97, -62, -22, -5, 32, 84, 114, 93, 100, 142, 135, 84, 33, 3, -8, -9, -22, -60, -79, -50, -5, 17, 2, -1, 6, 23, 40, 43, 25, 26, 42, 29, -15, -55, -104, -134, -147, -203, -244, -220, -175, -118, -58, -5, 44, 95, 136, 135, 134, 132, 115, 60, -4, -46, -72, -110, -124, -135, -159, -145, -93, -46, -21, 44, 107, 141, 151, 132, 111, 110, 100, 44, -15, -43, -67, -92, -107, -110, -96, -80, -58, -15, 13, 44, 67, 68, 42, 23, 19, -15, -49, -86, -101, -121, -131, -141, -159, -165, -152, -120, -92, -52, 13, 67, 107, 139, 151, 141, 117, 76, 36, 10, -16, -35, -73, -75, -56, -46, -49, -58, -46, -15, 17, 40, 43, 53, 59, 49, 34, 12, -9, -19, -43, -79, -116, -130, -134, -123, -100, -96, -77, -48, -12, 30, 44, 59, 60, 47, 40, 25, 20, 22, 15, 6, -14, -24, -29, -35, -36, -43, -45, -41, -33, -18, -9, 3, 6, -2, -4, 3, 9, 17, 20, 17, 10, 3, 5, 3, -12, -24, -31, -36, -45, -52, -48, -55, -59, -60, -55, -53, -53, -63, -65, -60, -50, -43, -48, -35, -24, -25, -35, -41, -39, -33, -16, -2, 12, 27, 42, 57, 68, 66, 61, 51, 44, 25, 0, -9, -31, -49, -53, -52, -36, -39, -41, -7, 27, 25, 15, 27, 32, 23, 20, 5, -18, -26, -36, -39, -50, -62, -63, -62, -55, -50, -41, -33, -25, -14, -1, 5, 9, 15, 5, -7, -18, -26, -33, -46, -56, -73, -82, -66, -67, -50, -38, -22, -7, 17, 30, 37, 36, 29, 19, 13, 12, -7, -25, -41, -42, -38, -49, -49, -35, -26, -8, 6, 0, 0, -2, -5, -1, -4, -2, -12, -12, -15, -16, -19, -24, -35, -39, -48, -46, -35, -25, -4, 13, 25, 27, 3, 2, 30, 27, -1, -1, -16, -25, -18, -36, -42, -48, -62, -56, -48, -53, -46, -36, -26, -15, -8, 12, 23, 29, 25, 13, 5, 5, 0, -16, -12, -19, -25, -24, -29, -29, -39, -33, -25, -33, -19, -5, -11, -22, -24, -18, -25, -32, -39, -39, -32, -41, -36, -43, -39, -18, -11, -7, -12, -8, -4, -7, 0, 5, -4, 2, 6, -2, -5, -19, -25, -29, -33, -39, -36, -25, -24, -12, -7, 5, 13, 16, 34, 29, 3, -1, -1, -14, -16, -18, -19, -19, -26, -22, -32, -26, -26, -28, -14, -11, -5, -2, -4, 0, -9, -15, -16, -28, -28, -32, -48, -56, -52, -55, -56, -56, -48, -41, -31, -22, -8, -2, -1, 9, 10, -1, 3, -7, -1, 0, 2, -1, -11, -16, -28, -38, -45, -41, -42, -24, -15, 5, 9, -9, -19, -62, -192, -328, 125, 1057, 514, -579, 277, -138, -1499, -18, 595, -276, 67, -332, -853, 761, 1310, -301, -237, 513, 762, 540, -164, 57, -1481, -1500, 396, -1350, -365, 1445, -933, 136, 1200, -686, 876, 1901, 166, -349, -244, -198, -1073, -1085, 187, -481, 294, 893, -877, -4, 659, -7, -7, -178, 73, -62, 463, 223, -523, 500, 209, 318, 199, -818, 398, -28, -508, 320, -635, -127, 226, -688, 83, -65, -426, 214, -318, -297, 425, 134, 29, 311, -21, 115, 316, -417, -84, 127, -294, 407, 219, -470, -110, 221, -148, -176, 231, -189, 180, 194, -562, 172, 71, 110, 90, -645, 107, -58, 267, 646, -467, 349, 628, -366, -205, -16, -235, -386, -322, -31, 22, 54, 316, -226, 219, 689, -186, 272, -288, -679, 37, -351, 17, -284, -130, 95, -312, 347, -15, 563, 439, -696, 54, -113, -233, -212, -246, 190, -33, 91, -76, -106, 192, 88, 117, 196, 432, 56, -100, 279, 0, -65, -243, -412, -49, -193, -361, 121, 104, -280, 102, -89, -120, 488, -7, -145, 194, 261, -270, -314, 396, -185, -93, 271, 81, 134, -317, 13, -158, -549, 445, 388, -53, -2, -550, -332, 88, -237, -131, -45, 36, 386, -128, -243, 90, 145, 686, -259, -511, 217, -213, 422, -318, -277, 809, -339, 131, -73, -577, 354, 296, 527, -158, -488, -89, -196, 203, -252, -86, 146, -242, 264, -39, 56, 287, -470, -624, -666, 71, 632, 221, 292, 189, 390, 39, -600, -80, -182, -79, 182, 44, -33, -700, 101, 319, -417, 895, 459, -155, 550, -325, -645, -325, -94, -491, -460, 284, -193, 182, 669, 325, -58, 122, 520, -504, -423, 169, 169, 360, -165, -195, -404, -161, 42, -1156, -581, 449, 434, 301, -41, 405, 544, 298, -87, -716, 46, 322, -460, -590, -164, -28, -530, -140, 141, 138, 776, 514, -121, -461, 380, 1170, 257, -32, 10, -174, -114, -369, -771, -925, 148, 571, -413, -89, 539, 17, -87, 6, -716, -392, 683, 124, -436, 233, 473, 66, -198, -329, -478, -26, 588, 0, -475, 362, 483, -189, -145, -310, -516, -4, 63, -461, -269, 413, 360, 507, 805, 291, 447, 580, -383, -723, -312, -141, -270, -638, -824, -416, -89, -277, -126, 476, 1006, 1010, 898, 1040, 320, -185, -148, -794, -989, -1019, -972, -450, -210, 17, -31, 83, 90, -138, 415, 219, -162, 597, 1156, 1003, 108, -376, -202, -291, -216, -644, -1095, -404, 282, 248, -150, 145, 371, -104, 305, 261, -512, -267, -101, -549, -553, 59, 260, 350, 557, -114, -223, 495, 388, 278, 414, 177, 22, 23, 29, -12, -65, 90, -250, -756, -60, 533, 142, -76, -157, -181, 193, -77, -1185, -1054, 54, 333, -124, -750, -431, 700, 1449, 1017, -877, -1236, 415, 277, -586, -126, 373, 326, 85, 410, 132, -361, 185, -293, -440, 915, 1344, 155, -698, 262, 519, -270, -431, -678, -693, -556, -294, 78, -182, -325, -478, -675, -55, 248, -404, -395, 415, 907, 614, -206, -14, 699, 387, -135, -276, 192, 759, 456, -263, -420, 340, 585, -128, -208, -114, 111, 781, 93, -675, -99, -7, -560, -835, -647, -638, -199, 853, 291, -198, 666, 439, -127, -266, -457, -229, -134, -103, -678, -1277, -120, 782, 461, -101, 124, 985, 421, -76, -128, -329, 493, 806, 653, 363, 349, 687, -593, -945, -67, -495, -1020, -1158, -869, -436, 359, 757, -753, -1234, 42, 680, 217, -504, -137, 609, 934, 333, -750, -252, 867, 632, -327, -104, 951, 1184, 548, -529, -618, 565, 969, -179, -967, -184, 680, 735, -87, -1227, -985, 125, -7, -1102, -794, 676, 669, -28, -332, -1333, -1237, 513, 1204, 335, 318, 1758, 420, -2489, -1776, 76, -359, -1987, -1489, 925, 2204, 2995, 2332, 306, 1254, 3049, 1171, -1367, -1189, -468, -1397, -2357, -2116, -1536, -1060, -750, -790, -788, -75, 638, 683, 699, 383, 91, 642, 911, 258, -376, -362, -271, -167, 241, 296, 308, 650, 945, 999, 883, 953, 946, 418, -453, -808, -461, -706, -1258, -988, -434, -52, 66, -123, 151, 679, 428, -481, -509, 771, 714, -512, -1035, -1486, -726, -31, -1281, -1212, 1309, 2854, -717, -5541, -2528, 4411, 4364, -965, -2135, 1605, 6128, 6542, 901, -2670, 955, 3056, -1970, -6739, -4304, -1117, -2714, -3398, -2501, -995, 1508, 2242, 360, -608, 1734, 2558, 452, -246, 119, -35, -26, 448, 260, 60, 1385, 1602, 292, 541, 1344, 673, -386, -482, -556, -744, -250, -352, -906, -236, 1023, 238, -1847, -1223, 598, 466, 107, 156, 44, 587, 1174, 431, -1296, -1827, -647, -169, -780, -1298, -1319, -43, 2335, 3246, 1074, -2402, -6047, -7079, -1059, 4745, 1480, -734, 4822, 9405, 9224, 5118, -67, -1939, -822, -1629, -6357, -8638, -5218, -2163, -2139, -2847, -1910, 727, 2801, 3025, 1442, 682, 1915, 2640, 1630, -328, -1203, -831, -587, -253, 102, 145, 388, 1416, 1997, 1157, 750, 902, 285, -634, -968, -935, -1489, -1441, -559, -307, 98, 255, -79, 393, 757, 383, -92, 224, 977, 612, -250, -768, -1037, -1196, -1434, -1257, -528, 53, -83, 128, 1382, 1759, 1323, -341, -8125, -13054, -157, 15976, 6087, -6341, 5951, 14103, 11032, 4159, -6743, -10446, -3027, 1775, -9133, -16626, -6476, 3326, 1674, -3781, -1209, 4156, 6635, 7114, 2682, -1791, 1685, 5147, 898, -4427, -3907, -1369, -1268, -375, -530, -1009, 1666, 3818, 2716, 1439, 2971, 2807, -334, -836, 548, -1022, -3429, -2739, -1867, -1887, -494, 346, 44, 972, 2167, 1438, -239, -396, -202, -971, -1043, -826, -696, 13, 401, -335, -805, 129, 226, -515, 410, 1208, 717, 88, -5350, -13627, -8527, 10641, 17424, -276, -2734, 12987, 14423, 8109, -1717, -11484, -8209, -128, -4410, -16396, -14255, -1867, 5154, 1136, -2316, 3394, 8584, 10376, 6841, -603, -2497, 2138, 1684, -4646, -7354, -4663, -2188, -675, 945, 795, 1892, 5103, 6024, 3291, 1198, 1634, 500, -1851, -2889, -3691, -3739, -1530, 228, -833, -215, 2780, 3205, 1946, 1246, 642, -103, -849, -1823, -3171, -2957, -1587, -1554, -1490, -322, 710, 1122, 1530, 1998, 1508, 689, 476, 669, 754, -720, -4025, -6837, -7325, -6367, -2698, 6174, 12964, 9699, 7442, 11835, 10703, 3935, -2704, -7836, -10023, -10369, -10922, -12144, -10017, -3153, 3001, 3870, 4798, 9021, 10308, 7988, 4810, 1285, -1649}; codec2-1.2.0/unittest/mksine.c000066400000000000000000000017771445607075400162120ustar00rootroot00000000000000/* mksine.c David Rowe 10 Nov 2010 Creates a file of sine wave samples. */ #include #include #include #include #include #include #define TWO_PI 6.283185307 #define FS 8000.0 int main(int argc, char *argv[]) { FILE *f; int i, n; float freq, length; short *buf; float amp = 1E4; if (argc < 4) { printf("usage: %s outputFile frequencyHz lengthSecs [PeakAmp]\n", argv[0]); exit(1); } if (strcmp(argv[1], "-") == 0) { f = stdout; } else if ((f = fopen(argv[1], "wb")) == NULL) { fprintf(stderr, "Error opening output file: %s: %s.\n", argv[3], strerror(errno)); exit(1); } freq = atof(argv[2]); length = atof(argv[3]); if (argc == 5) amp = atof(argv[4]); n = length * FS; buf = (short *)malloc(sizeof(short) * n); assert(buf != NULL); for (i = 0; i < n; i++) buf[i] = amp * cos(freq * i * (TWO_PI / FS)); fwrite(buf, sizeof(short), n, f); fclose(f); free(buf); return 0; } codec2-1.2.0/unittest/ofdm_check000077500000000000000000000040571445607075400165620ustar00rootroot00000000000000#! /bin/bash # ofdm_check # # A series of checks of the ofdm functions, mostly decode. # # This uses ofdm_mod to supply test data to ofdm_demod and mostly # assumes that the encode function is correct. # Define macros to (later) allow testing alternate versions. alias OFDM_MOD=ofdm_mod alias OFDM_DEMOD=ofdm_demod shopt -s expand_aliases # PATH PATH=$PATH:../src PASS=1 ############################### echo echo "Simple test, plain, ideal" OFDM_MOD --in /dev/zero --testframes 100 | OFDM_DEMOD --out /dev/null --testframes --verbose 1 2> tmp cat tmp p1=$(grep '^BER\.*: 0.000' tmp | wc -l) p2=$(grep '^BER2\.*: 0.000' tmp | wc -l) if [[ $p1 -eq 1 && $p2 -eq 1 ]]; then echo "OK"; else echo "BAD"; PASS=0; fi ############################### echo echo "Simple test, plain, AWGN" OFDM_MOD --in /dev/zero --testframes 100 | cohpsk_ch - - -20 -Fs 8000 -f -5 | OFDM_DEMOD --out /dev/null --testframes --verbose 1 2>tmp cat tmp n=$(grep '^BER\.*:' tmp | cut -d ' ' -f 2) p1=$(echo $n '<=' 0.10 | bc) n=$(grep '^BER2\.*:' tmp | cut -d ' ' -f 2) p2=$(echo $n '<=' 0.10 | bc) if [[ $p1 -eq 1 && $p2 -eq 1 ]]; then echo "OK"; else echo "BAD"; PASS=0; fi ############################### echo echo "Simple test, LDPC, ideal" OFDM_MOD --in /dev/zero --ldpc --testframes 100 | OFDM_DEMOD --out /dev/null --ldpc --testframes --verbose 1 2>tmp cat tmp p1=$(grep '^BER\.*: 0.000' tmp | wc -l) p2=$(grep '^Coded BER: 0.000' tmp | wc -l) if [[ $p1 -eq 1 && $p2 -eq 1 ]]; then echo "OK"; else echo "BAD"; PASS=0; fi ############################### echo echo "Simple test, LDPC, AWGN" OFDM_MOD --in /dev/zero --ldpc --testframes 100 | cohpsk_ch - - -20 -Fs 8000 -f -5 --fading_dir ../../build_linux/unittest | OFDM_DEMOD --out /dev/null --ldpc --testframes --verbose 1 2>tmp cat tmp n=$(grep '^BER\.*:' tmp | cut -d ' ' -f 2) p1=$(echo $n '<=' 0.10 | bc) n=$(grep '^Coded.*BER\.*:' tmp | cut -d ' ' -f 3) p2=$(echo $n '<=' 0.01 | bc) if [[ $p1 -eq 1 && $p2 -eq 1 ]]; then echo "OK"; else echo "BAD"; PASS=0; fi echo if [[ $PASS == 1 ]]; then echo "PASSED"; else echo "FAILED"; fi codec2-1.2.0/unittest/ofdm_fade.sh000077500000000000000000000011451445607075400170100ustar00rootroot00000000000000#!/usr/bin/env bash # # David June 2019 # Tests 700D OFDM modem fading channel performance, using a simulated channel results=$(mktemp) fading_dir=$1 # BER should be around 4% for this test (it's better for larger interleavers but no one uses interleaving in practice) ofdm_mod --in /dev/zero --ldpc 1 --testframes 60 --txbpf | ch - - --No -24 -f -10 --mpp --fading_dir $fading_dir | ofdm_demod --out /dev/null --testframes --verbose 2 --ldpc 1 2> $results cat $results cber=$(cat $results | sed -n "s/^Coded BER.* \([0-9..]*\) Tbits.*/\1/p") python3 -c "import sys; sys.exit(0) if $cber<=0.05 else sys.exit(1)" codec2-1.2.0/unittest/ofdm_phase_est_bw.sh000077500000000000000000000017271445607075400205620ustar00rootroot00000000000000#!/usr/bin/env bash # # ofdm_phase_est_bw.sh # David August 2019 # Tests 2020 OFDM modem phase est bandwidth mode option. Locking the # phase est bandwidth to "high" is useful for High SNR channels with # fast fading or high phase noise. In this test we show that with # high bandwidth phase est mode, the BER is < 5% for the "--mpp" (1 # Hz fading) channel model on a fairly high SNR channel. # # To run manually outside of ctest: # $ cd codec2/unittest # $ PATH=$PATH:../build_linux/src ./ofdm_phase_est_bw.sh results=$(mktemp) fading_dir=$1 # BER should be < 5% for this test ofdm_mod --in /dev/zero --testframes 300 --mode 2020 --ldpc --verbose 0 | \ ch - - --No -40 -f 10 --ssbfilt 1 --mpp --fading_dir $fading_dir | \ ofdm_demod --out /dev/null --testframes --mode 2020 --verbose 2 --ldpc --bandwidth 1 2> $results cat $results cber=$(cat $results | sed -n "s/^Coded BER.* \([0-9..]*\) Tbits.*/\1/p") python3 -c "import sys; sys.exit(0) if $cber<=0.05 else sys.exit(1)" codec2-1.2.0/unittest/ofdm_time_sync.sh000077500000000000000000000022061445607075400201020ustar00rootroot00000000000000#!/usr/bin/env bash # Shell script version of ofdm_time_sync() # David June 2019 # Tests ofdm modem sync time, using real, off air files onerun=$(mktemp) results=$(mktemp) # bunch of runs at different time offsets into a sample off air file with low SNR and semi-staionary fading for start_secs in `seq 0 29`; do if [ "$1" = "700D" ]; then ofdm_demod --in ../wav/vk2tpm_004.wav --out /dev/null --verbose 2 --ldpc \ --start_secs $start_secs --len_secs 5 2>/dev/null > $onerun fi; if [ "$1" = "2020" ]; then ofdm_demod --mode 2020 --in ../wav/david4.wav --out /dev/null --verbose 2 --ldpc \ --start_secs $start_secs --len_secs 5 2>/dev/null > $onerun fi; [ ! $? -eq 0 ] && { echo "error running ofdm_demod"; exit 1; } cat $onerun | sed -n "s/time_to_sync: \([0-9..]*\)/\1/p" >> $results done # a pass is we never take longer than 5 secs to sync (mean is much smaller) python3 -c " import sys; import numpy as np x=np.loadtxt(\"$results\") fails=sum(x == -1) print(\"fails: %d mean: %5.2f var: %5.2f \" % (fails, np.mean(x), np.var(x))) sys.exit(0) if fails==0 else sys.exit(1) " codec2-1.2.0/unittest/reliable_text_fade.sh000077500000000000000000000013261445607075400207070ustar00rootroot00000000000000#!/usr/bin/env bash # # Tests reliable_text fading channel performance, using a simulated channel results=$(mktemp -d) mode=$1 snr=$2 min_text_packets=$3 clip=$4 build_folder=$5 fading_dir=${build_folder}/../unittest rx=$build_folder/freedv_rx tx=$build_folder/freedv_tx if [ $clip -eq 1 ]; then clip_args="--txbpf 1 --clip 1" else clip_args= fi $tx $mode ../raw/ve9qrp.raw - --reliabletext AB1CDEF $clip_args | $build_folder/ch - - --No $snr --mpp -f -5 --fading_dir $fading_dir > $results/reliable_fade.raw $rx $mode $results/reliable_fade.raw /dev/null --txtrx $results/reliable_fade.txt --reliabletext if [ `cat $results/reliable_fade.txt | wc -l` -ge $min_text_packets ]; then exit 0 else exit -1 fi codec2-1.2.0/unittest/sum_debug_alloc000077500000000000000000000041541445607075400176220ustar00rootroot00000000000000#!/usr/bin/env python3 """ sum_debug_alloc Sum lines reported from codec2-dev/src/debug_alloc.h and report Lines like: CALLOC: run_ldpc_decoder(112, 32) MALLOC: other_func(238) """ import fileinput by_func = {} by_addr = {} def new_func(): rec = {} rec['cur'] = 0 rec['max'] = 0 return(rec) def new_addr(): rec = {} rec['func'] = 0 # Where allocated, may not be same as where free'd! rec['size'] = 0 return(rec) for line in fileinput.input(): if ((line.startswith("MALLOC:")) or (line.startswith("CALLOC:"))): if (line.startswith("MALLOC:")): words = line.translate( str.maketrans("()", " ") ).strip().split() func = words[1] addr = words[2] size = int(words[3]) elif (line.startswith("CALLOC:")): words = line.translate( str.maketrans("(,)", " ") ).strip().split() func = words[1] addr = words[2] size = int(words[3]) * int(words[4]) #print("Alloc: {} to {} in {}".format(size, addr, func)) if (not (func in by_func)): by_func[func] = new_func() data = by_func[func] data['cur'] += size if (data['cur'] > data['max']): data['max'] = data['cur'] if (addr in by_addr): print("Error: duplicate allocation to {} in {}".format(addr, func)) else: by_addr[addr] = new_addr() by_addr[addr]['func'] = func by_addr[addr]['size'] = size elif (line.startswith("FREE:")): words = line.translate( str.maketrans("(,)", " ") ).strip().split() func = words[1] addr = words[2] if (addr in by_addr): func_a = by_addr[addr]['func'] by_func[func_a]['cur'] -= by_addr[addr]['size'] del(by_addr[addr]) else: print("Error: free of unallocated location {} in {}".format(addr, func)) #print("Free: {}:{} in {} to {}".format(func_a, addr, func, by_func[func_a]['cur'])) ##### total = 0 for func, sum in by_func.items(): max = by_func[func]['max'] print("{} = {}".format(func, max)) total += max print("Total = {}".format(total)) codec2-1.2.0/unittest/t16_8.c000066400000000000000000000046131445607075400155550ustar00rootroot00000000000000/* t16_8.c David Rowe May 10 2012 Unit test for 16 <-> 8 kHz sample rate conversion functions. I Evaluated output by plotting using Octave and looking for jaggies: pl("../unittest/out16.raw",1,3000) pl("../unittest/out8.raw",1,3000) Listening to it also shows up anything nasty: $ play -s -2 -r 16000 out16.raw $ play -s -2 -r 8000 out8.raw */ #include #include #include #include #include "codec2_fdmdv.h" #define N8 159 /* processing buffer size at 8 kHz (odd number deliberate) */ #define N16 (N8 * FDMDV_OS) #define FRAMES 50 #define TWO_PI 6.283185307 #define FS 16000 #define SINE int main() { float in8k[FDMDV_OS_TAPS_8K + N8]; short in8k_short[N8]; float out16k[N16]; short out16k_short[N16]; FILE *f16; float in16k[FDMDV_OS_TAPS_16K + N16]; float out8k[N16]; short out8k_short[N8]; FILE *f8, *f8in; int i, f, t, t1; float freq = 800.0; f16 = fopen("out16.raw", "wb"); assert(f16 != NULL); f8 = fopen("out8.raw", "wb"); assert(f8 != NULL); f8in = fopen("in8.raw", "wb"); assert(f8in != NULL); /* clear filter memories */ for (i = 0; i < FDMDV_OS_TAPS_8K; i++) in8k[i] = 0.0; for (i = 0; i < FDMDV_OS_TAPS_16K; i++) in16k[i] = 0.0; t = t1 = 0; for (f = 0; f < FRAMES; f++) { #ifdef DC for (i = 0; i < N8; i++) in8k[FDMDV_OS_TAPS_8K + i] = 16000.0; #endif #ifdef SINE for (i = 0; i < N8; i++, t++) in8k[FDMDV_OS_TAPS_8K + i] = 16000.0 * cos(TWO_PI * t * freq / (FS / FDMDV_OS)); #endif for (i = 0; i < N8; i++) in8k_short[i] = (short)in8k[i]; fwrite(in8k_short, sizeof(short), N8, f8in); /* upsample */ fdmdv_8_to_16(out16k, &in8k[FDMDV_OS_TAPS_8K], N8); /* save 16k to disk for plotting and check out */ for (i = 0; i < N16; i++) out16k_short[i] = (short)out16k[i]; fwrite(out16k_short, sizeof(short), N16, f16); /* add a 6 kHz spurious signal, down sampler should knock this out */ for (i = 0; i < N16; i++, t1++) in16k[i + FDMDV_OS_TAPS_16K] = out16k[i] + 16000.0 * cos(TWO_PI * t1 * 6000.0 / FS); /* downsample */ fdmdv_16_to_8(out8k, &in16k[FDMDV_OS_TAPS_16K], N8); /* save 8k to disk for plotting and check out */ for (i = 0; i < N8; i++) out8k_short[i] = (short)out8k[i]; fwrite(out8k_short, sizeof(short), N8, f8); } fclose(f16); fclose(f8); fclose(f8in); return 0; } codec2-1.2.0/unittest/t16_8_short.c000066400000000000000000000042501445607075400167710ustar00rootroot00000000000000/* t16_8_short.c David Rowe 19 August 2014 Unit test for 16 <-> 8 kHz sample rate conversion functions. I evaluated output by plotting using Octave and looking for jaggies: pl("../unittest/out16_short.raw",1,3000) pl("../unittest/out8.raw",1,3000) Listening to it also shows up anything nasty: $ play -s -2 -r 16000 out16_short.raw $ play -s -2 -r 8000 out8.raw */ #include #include #include #include #include "codec2_fdmdv.h" #define N8 159 /* procssing buffer size at 8 kHz */ #define N16 (N8 * FDMDV_OS) #define FRAMES 100 #define TWO_PI 6.283185307 #define FS 16000 #define SINE int main() { short in8k_short[FDMDV_OS_TAPS_8K + N8]; short out16k_short[N16]; FILE *f16; short in16k_short[FDMDV_OS_TAPS_16K + N16]; short out8k_short[N16]; FILE *f8, *f8in; int i, f, t, t1; float freq = 800.0; f16 = fopen("out16_short.raw", "wb"); assert(f16 != NULL); f8 = fopen("out8_short.raw", "wb"); assert(f8 != NULL); f8in = fopen("in8_short.raw", "wb"); assert(f8in != NULL); /* clear filter memories */ for (i = 0; i < FDMDV_OS_TAPS_8K; i++) in8k_short[i] = 0; for (i = 0; i < FDMDV_OS_TAPS_16K; i++) in16k_short[i] = 0; t = t1 = 0; for (f = 0; f < FRAMES; f++) { #ifdef DC for (i = 0; i < N8; i++) in8k_short[FDMDV_OS_TAPS_8K + i] = 16000.0; #endif #ifdef SINE for (i = 0; i < N8; i++, t++) in8k_short[FDMDV_OS_TAPS_8K + i] = 8000.0 * cos(TWO_PI * t * freq / FS); #endif fwrite(in8k_short, sizeof(short), N8, f8in); /* upsample */ fdmdv_8_to_16_short(out16k_short, &in8k_short[FDMDV_OS_TAPS_8K], N8); fwrite(out16k_short, sizeof(short), N16, f16); /* add a 6 kHz spurious signal for fun, we want down sampler to knock this out */ for (i = 0; i < N16; i++, t1++) in16k_short[i + FDMDV_OS_TAPS_16K] = out16k_short[i] + 8000.0 * cos(TWO_PI * t1 * 6000.0 / FS); /* downsample */ fdmdv_16_to_8_short(out8k_short, &in16k_short[FDMDV_OS_TAPS_16K], N8); /* save 8k to disk for plotting and check out */ fwrite(out8k_short, sizeof(short), N8, f8); } fclose(f16); fclose(f8); fclose(f8in); return 0; } codec2-1.2.0/unittest/t48_8.c000066400000000000000000000045421445607075400155630ustar00rootroot00000000000000/* t48_8.c David Rowe May 10 2012 Unit test for 48 to 8 kHz sample rate conversion functions. I evaluated output by plotting using Octave and looking for jaggies: pl("../unittest/out48.raw",1,3000) pl("../unittest/out8.raw",1,3000) Listening to it also shows up anything nasty: $ play -s -2 -r 48000 out48.raw $ play -s -2 -r 8000 out8.raw */ #include #include #include #include #include "codec2_fdmdv.h" #define N8 180 /* processing buffer size at 8 kHz */ #define N48 (N8 * FDMDV_OS_48) #define MEM8 FDMDV_OS_TAPS_48_8K #define FRAMES 50 #define TWO_PI 6.283185307 #define FS 48000 #define SINE int main() { float in8k[MEM8 + N8]; short in8k_short[N8]; float out48k[N48]; short out48k_short[N48]; FILE *f48; float in48k[FDMDV_OS_TAPS_48K + N48]; float out8k[N48]; short out8k_short[N8]; FILE *f8, *f8in; int i, f, t, t1; float freq = 800.0; f48 = fopen("out48.raw", "wb"); assert(f48 != NULL); f8 = fopen("out8.raw", "wb"); assert(f8 != NULL); f8in = fopen("in8.raw", "wb"); assert(f8in != NULL); /* clear filter memories */ for (i = 0; i < MEM8; i++) in8k[i] = 0.0; for (i = 0; i < FDMDV_OS_TAPS_48K; i++) in48k[i] = 0.0; t = t1 = 0; for (f = 0; f < FRAMES; f++) { #ifdef DC for (i = 0; i < N8; i++) in8k[MEM8 + i] = 16000.0; #endif #ifdef SINE for (i = 0; i < N8; i++, t++) in8k[MEM8 + i] = 16000.0 * cos(TWO_PI * t * freq / (FS / FDMDV_OS_48)); #endif for (i = 0; i < N8; i++) in8k_short[i] = (short)in8k[i]; fwrite(in8k_short, sizeof(short), N8, f8in); /* upsample */ fdmdv_8_to_48(out48k, &in8k[MEM8], N8); /* save 48k to disk for plotting and check out */ for (i = 0; i < N48; i++) out48k_short[i] = (short)out48k[i]; fwrite(out48k_short, sizeof(short), N48, f48); /* add a 10 kHz spurious signal for fun, we want down sampler to knock this out */ for (i = 0; i < N48; i++, t1++) in48k[i + FDMDV_OS_TAPS_48K] = out48k[i] + 16000.0 * cos(TWO_PI * t1 * 1E4 / FS); /* downsample */ fdmdv_48_to_8(out8k, &in48k[FDMDV_OS_TAPS_48K], N8); /* save 8k to disk for plotting and check out */ for (i = 0; i < N8; i++) out8k_short[i] = (short)out8k[i]; fwrite(out8k_short, sizeof(short), N8, f8); } fclose(f48); fclose(f8); fclose(f8in); return 0; } codec2-1.2.0/unittest/t48_8_short.c000066400000000000000000000034001445607075400167720ustar00rootroot00000000000000/* t48_8_short.c David Rowe Dec 2021 */ #include #include #include #include #include "codec2_fdmdv.h" #define N8 180 /* processing buffer size at 8 kHz */ #define N48 (N8 * FDMDV_OS_48) #define MEM8 FDMDV_OS_TAPS_48_8K #define FRAMES 50 #define TWO_PI 6.283185307 #define FS 48000 #define SINE int main() { short in8k[MEM8 + N8]; short out48k[N48]; FILE *f48; short in48k[FDMDV_OS_TAPS_48K + N48]; short out8k[N48]; FILE *f8, *f8in; int i, f, t, t1; float freq = 800.0; f48 = fopen("out48.raw", "wb"); assert(f48 != NULL); f8 = fopen("out8.raw", "wb"); assert(f8 != NULL); f8in = fopen("in8.raw", "wb"); assert(f8in != NULL); /* clear filter memories */ for (i = 0; i < MEM8; i++) in8k[i] = 0.0; for (i = 0; i < FDMDV_OS_TAPS_48K; i++) in48k[i] = 0.0; t = t1 = 0; for (f = 0; f < FRAMES; f++) { #ifdef DC for (i = 0; i < N8; i++) in8k[MEM8 + i] = 16000.0; #endif #ifdef SINE for (i = 0; i < N8; i++, t++) in8k[MEM8 + i] = 16000.0 * cos(TWO_PI * t * freq / (FS / FDMDV_OS_48)); #endif fwrite(&in8k[MEM8], sizeof(short), N8, f8in); /* upsample */ fdmdv_8_to_48_short(out48k, &in8k[MEM8], N8); /* save 48k to disk for plotting and check out */ fwrite(out48k, sizeof(short), N48, f48); /* add a 10 kHz spurious signal for fun, we want down sampler to knock this out */ for (i = 0; i < N48; i++, t1++) in48k[i + FDMDV_OS_TAPS_48K] = out48k[i] + 16000.0 * cos(TWO_PI * t1 * 1E4 / FS); /* downsample */ fdmdv_48_to_8_short(out8k, &in48k[FDMDV_OS_TAPS_48K], N8); /* save 8k to disk for plotting and check out */ fwrite(out8k, sizeof(short), N8, f8); } fclose(f48); fclose(f8); fclose(f8in); return 0; } codec2-1.2.0/unittest/tcohpsk.c000066400000000000000000000304301445607075400163630ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: tcohpsk.c AUTHOR......: David Rowe DATE CREATED: March 2015 Tests for the C version of the coherent PSK FDM modem. This program outputs a file of Octave vectors that are loaded and automatically tested against the Octave version of the modem by the Octave script tcohpsk.m \*---------------------------------------------------------------------------*/ /* Copyright (C) 2015 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include "codec2_cohpsk.h" #include "codec2_fdmdv.h" #include "cohpsk_defs.h" #include "cohpsk_internal.h" #include "comp_prim.h" #include "fdmdv_internal.h" #include "noise_samples.h" #include "octave.h" #define FRAMES \ 30 /* LOG_FRAMES is #defined in cohpsk_internal.h */ #define SYNC_FRAMES \ 12 /* sync state uses up extra log storage as we reprocess several times */ #define FRAMESL \ (SYNC_FRAMES * FRAMES) /* worst case is every frame is out of sync */ #define FOFF 58.7 #define DFOFF (-0.5 / (float)COHPSK_FS) #define ESNODB 8 #define PPM -1500 extern float pilots_coh[][PILOTS_NC]; int main(int argc, char *argv[]) { struct COHPSK *coh; int tx_bits[COHPSK_BITS_PER_FRAME]; COMP tx_symb[NSYMROWPILOT][COHPSK_NC * COHPSK_ND]; COMP tx_fdm_frame[COHPSK_M * NSYMROWPILOT]; COMP ch_fdm_frame[COHPSK_M * NSYMROWPILOT]; // COMP rx_fdm_frame_bb[M*NSYMROWPILOT]; // COMP ch_symb[NSYMROWPILOT][COHPSK_NC*COHPSK_ND]; float rx_bits_sd[COHPSK_BITS_PER_FRAME]; int rx_bits[COHPSK_BITS_PER_FRAME]; int tx_bits_log[COHPSK_BITS_PER_FRAME * FRAMES]; COMP tx_symb_log[NSYMROWPILOT * FRAMES][COHPSK_NC * COHPSK_ND]; COMP tx_fdm_frame_log[COHPSK_M * NSYMROWPILOT * FRAMES]; COMP ch_fdm_frame_log[COHPSK_M * NSYMROWPILOT * FRAMES]; COMP ch_fdm_frame_log_out[(COHPSK_M * NSYMROWPILOT + 1) * FRAMES]; // COMP rx_fdm_frame_bb_log[M*NSYMROWPILOT*FRAMES]; // COMP ch_symb_log[NSYMROWPILOT*FRAMES][COHPSK_NC*COHPSK_ND]; COMP ct_symb_ff_log[NSYMROWPILOT * FRAMES][COHPSK_NC * COHPSK_ND]; float rx_amp_log[NSYMROW * FRAMES][COHPSK_NC * COHPSK_ND]; float rx_phi_log[NSYMROW * FRAMES][COHPSK_NC * COHPSK_ND]; COMP rx_symb_log[NSYMROW * FRAMES][COHPSK_NC * COHPSK_ND]; int rx_bits_log[COHPSK_BITS_PER_FRAME * FRAMES]; FILE *fout; int f, r, c, log_r, log_data_r, noise_r, ff_log_r, i; double foff; COMP foff_rect, phase_ch; struct FDMDV *fdmdv; // COMP rx_filt[COHPSK_NC*COHPSK_ND][P+1]; // int rx_filt_log_col_index = 0; // float env[NT*P]; // float __attribute__((unused)) rx_timing; COMP tx_onesym[COHPSK_NC * COHPSK_ND]; // COMP rx_onesym[COHPSK_NC*COHPSK_ND]; // int rx_baseband_log_col_index = 0; // COMP rx_baseband_log[COHPSK_NC*COHPSK_ND][(M+M/P)*NSYMROWPILOT*FRAMES]; float f_est_log[FRAMES], sig_rms_log[FRAMES], noise_rms_log[FRAMES]; int f_est_samples; int log_bits; float EsNo, variance; COMP scaled_noise; int reliable_sync_bit; int ch_fdm_frame_log_index, nin_frame, tmp, nout; coh = cohpsk_create(); fdmdv = coh->fdmdv; assert(coh != NULL); cohpsk_set_verbose(coh, 1); /* these puppies are used for logging data in the bowels on the modem */ coh->rx_baseband_log_col_sz = (COHPSK_M + COHPSK_M / P) * NSYMROWPILOT * FRAMESL; coh->rx_baseband_log = (COMP *)malloc(sizeof(COMP) * COHPSK_NC * COHPSK_ND * coh->rx_baseband_log_col_sz); coh->rx_filt_log_col_sz = (P + 1) * NSYMROWPILOT * FRAMESL; coh->rx_filt_log = (COMP *)malloc(sizeof(COMP) * COHPSK_NC * COHPSK_ND * coh->rx_filt_log_col_sz); coh->ch_symb_log_col_sz = COHPSK_NC * COHPSK_ND; coh->ch_symb_log = (COMP *)malloc(sizeof(COMP) * NSYMROWPILOT * FRAMESL * coh->ch_symb_log_col_sz); coh->rx_timing_log = (float *)malloc(sizeof(float) * NSYMROWPILOT * FRAMESL); /* init stuff */ log_r = log_data_r = noise_r = log_bits = ff_log_r = f_est_samples = 0; phase_ch.real = 1.0; phase_ch.imag = 0.0; foff = FOFF; /* each carrier has power = 2, total power 2Nc, total symbol rate NcRs, noise BW B=Fs Es/No = (C/Rs)/(N/B), N = var = 2NcFs/NcRs(Es/No) = 2Fs/Rs(Es/No) */ EsNo = pow(10.0, ESNODB / 10.0); variance = 2.0 * COHPSK_FS / (COHPSK_RS * EsNo); // fprintf(stderr, "doff: %e\n", DFOFF); /* Main Loop * ---------------------------------------------------------------------*/ for (f = 0; f < FRAMES; f++) { /* --------------------------------------------------------*\ Mod \*---------------------------------------------------------*/ cohpsk_get_test_bits(coh, tx_bits); bits_to_qpsk_symbols(tx_symb, (int *)tx_bits, COHPSK_BITS_PER_FRAME); for (r = 0; r < NSYMROWPILOT; r++) { for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) tx_onesym[c] = tx_symb[r][c]; tx_filter_and_upconvert_coh( &tx_fdm_frame[r * COHPSK_M], COHPSK_NC * COHPSK_ND, tx_onesym, fdmdv->tx_filter_memory, fdmdv->phase_tx, fdmdv->freq, &fdmdv->fbb_phase_tx, fdmdv->fbb_rect); } cohpsk_clip(tx_fdm_frame, COHPSK_CLIP, NSYMROWPILOT * COHPSK_M); /* --------------------------------------------------------*\ Channel \*---------------------------------------------------------*/ for (r = 0; r < NSYMROWPILOT * COHPSK_M; r++) { foff_rect.real = cos(2.0 * M_PI * foff / COHPSK_FS); foff_rect.imag = sin(2.0 * M_PI * foff / COHPSK_FS); foff += DFOFF; phase_ch = cmult(phase_ch, foff_rect); ch_fdm_frame[r] = cmult(tx_fdm_frame[r], phase_ch); } phase_ch.real /= cabsolute(phase_ch); phase_ch.imag /= cabsolute(phase_ch); // fprintf(stderr, "%f\n", foff); for (r = 0; r < NSYMROWPILOT * COHPSK_M; r++, noise_r++) { scaled_noise = fcmult(sqrt(variance), noise[noise_r]); ch_fdm_frame[r] = cadd(ch_fdm_frame[r], scaled_noise); } /* optional gain to test level sensitivity */ for (r = 0; r < NSYMROWPILOT * COHPSK_M; r++) { ch_fdm_frame[r] = fcmult(1.0, ch_fdm_frame[r]); } /* tx vector logging */ memcpy(&tx_bits_log[COHPSK_BITS_PER_FRAME * f], tx_bits, sizeof(int) * COHPSK_BITS_PER_FRAME); memcpy(&tx_fdm_frame_log[COHPSK_M * NSYMROWPILOT * f], tx_fdm_frame, sizeof(COMP) * COHPSK_M * NSYMROWPILOT); memcpy(&ch_fdm_frame_log[COHPSK_M * NSYMROWPILOT * f], ch_fdm_frame, sizeof(COMP) * COHPSK_M * NSYMROWPILOT); for (r = 0; r < NSYMROWPILOT; r++, log_r++) { for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) { tx_symb_log[log_r][c] = tx_symb[r][c]; } } } /* Fs offset simulation */ nout = cohpsk_fs_offset(ch_fdm_frame_log_out, ch_fdm_frame_log, COHPSK_M * NSYMROWPILOT * FRAMES, PPM); assert(nout < (COHPSK_M * NSYMROWPILOT + 1) * FRAMES); nin_frame = COHPSK_NOM_SAMPLES_PER_FRAME; ch_fdm_frame_log_index = 0; /* --------------------------------------------------------*\ Demod \*---------------------------------------------------------*/ for (f = 0; f < FRAMES; f++) { coh->frame = f; // printf("nin_frame: %d\n", nin_frame); assert(ch_fdm_frame_log_index < COHPSK_M * NSYMROWPILOT * FRAMES); tmp = nin_frame; cohpsk_demod(coh, rx_bits_sd, &reliable_sync_bit, &ch_fdm_frame_log_out[ch_fdm_frame_log_index], &nin_frame); for (i = 0; i < COHPSK_BITS_PER_FRAME; i++) rx_bits[i] = rx_bits_sd[i] < 0.0; ch_fdm_frame_log_index += tmp; /* --------------------------------------------------------*\ Log each vector \*---------------------------------------------------------*/ if (coh->sync == 1) { for (r = 0; r < NSYMROWPILOT; r++, ff_log_r++) { for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) { ct_symb_ff_log[ff_log_r][c] = coh->ct_symb_ff_buf[r][c]; } } for (r = 0; r < NSYMROW; r++, log_data_r++) { for (c = 0; c < COHPSK_NC * COHPSK_ND; c++) { rx_amp_log[log_data_r][c] = coh->amp_[r][c]; rx_phi_log[log_data_r][c] = coh->phi_[r][c]; rx_symb_log[log_data_r][c] = coh->rx_symb[r][c]; } } memcpy(&rx_bits_log[COHPSK_BITS_PER_FRAME * log_bits], rx_bits, sizeof(int) * COHPSK_BITS_PER_FRAME); log_bits++; f_est_log[f_est_samples] = coh->f_est; sig_rms_log[f_est_samples] = coh->sig_rms; noise_rms_log[f_est_samples] = coh->noise_rms; f_est_samples++; ; } assert(log_r <= NSYMROWPILOT * FRAMES); assert(noise_r <= NSYMROWPILOT * COHPSK_M * FRAMES); assert(log_data_r <= NSYMROW * FRAMES); printf("\r [%d]", f + 1); } printf("\n"); /*---------------------------------------------------------*\ Dump logs to Octave file for evaluation by tcohpsk.m Octave script \*---------------------------------------------------------*/ fout = fopen("tcohpsk_out.txt", "wt"); assert(fout != NULL); fprintf(fout, "# Created by tcohpsk.c\n"); octave_save_int(fout, "tx_bits_log_c", tx_bits_log, 1, COHPSK_BITS_PER_FRAME * FRAMES); octave_save_complex(fout, "tx_symb_log_c", (COMP *)tx_symb_log, NSYMROWPILOT * FRAMES, COHPSK_NC * COHPSK_ND, COHPSK_NC * COHPSK_ND); octave_save_complex(fout, "tx_fdm_frame_log_c", (COMP *)tx_fdm_frame_log, 1, COHPSK_M * NSYMROWPILOT * FRAMES, COHPSK_M * NSYMROWPILOT * FRAMES); octave_save_complex(fout, "ch_fdm_frame_log_c", (COMP *)ch_fdm_frame_log_out, 1, nout - 1, nout - 1); // octave_save_complex(fout, "rx_fdm_frame_bb_log_c", // (COMP*)rx_fdm_frame_bb_log, 1, M*NSYMROWPILOT*FRAMES, // M*NSYMROWPILOT*FRAMES); octave_save_complex(fout, "rx_baseband_log_c", (COMP *)coh->rx_baseband_log, COHPSK_NC * COHPSK_ND, coh->rx_baseband_log_col_index, coh->rx_baseband_log_col_sz); octave_save_complex(fout, "rx_filt_log_c", (COMP *)coh->rx_filt_log, COHPSK_NC * COHPSK_ND, coh->rx_filt_log_col_index, coh->rx_filt_log_col_sz); octave_save_complex(fout, "ch_symb_log_c", (COMP *)coh->ch_symb_log, coh->ch_symb_log_r, COHPSK_NC * COHPSK_ND, COHPSK_NC * COHPSK_ND); octave_save_float(fout, "rx_timing_log_c", (float *)coh->rx_timing_log, 1, coh->rx_timing_log_index, coh->rx_timing_log_index); octave_save_complex(fout, "ct_symb_ff_log_c", (COMP *)ct_symb_ff_log, NSYMROWPILOT * FRAMES, COHPSK_NC * COHPSK_ND, COHPSK_NC * COHPSK_ND); octave_save_float(fout, "rx_amp_log_c", (float *)rx_amp_log, log_data_r, COHPSK_NC * COHPSK_ND, COHPSK_NC * COHPSK_ND); octave_save_float(fout, "rx_phi_log_c", (float *)rx_phi_log, log_data_r, COHPSK_NC * COHPSK_ND, COHPSK_NC * COHPSK_ND); octave_save_complex(fout, "rx_symb_log_c", (COMP *)rx_symb_log, log_data_r, COHPSK_NC * COHPSK_ND, COHPSK_NC * COHPSK_ND); octave_save_int(fout, "rx_bits_log_c", rx_bits_log, 1, COHPSK_BITS_PER_FRAME * log_bits); octave_save_float(fout, "f_est_log_c", &f_est_log[1], 1, f_est_samples - 1, f_est_samples - 1); octave_save_float(fout, "sig_rms_log_c", sig_rms_log, 1, f_est_samples, f_est_samples - 1); octave_save_float(fout, "noise_rms_log_c", noise_rms_log, 1, f_est_samples, f_est_samples); #ifdef XX #endif fclose(fout); cohpsk_destroy(coh); return 0; } codec2-1.2.0/unittest/tesno_est.c000066400000000000000000000013731445607075400167170ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: tesno_est.c AUTHORS.....: David Rowe DATE CREATED: Mar 2021 Test for C port of Es/No estimator. \*---------------------------------------------------------------------------*/ #include #include #include #include #include "ofdm_internal.h" int main(int argc, char *argv[]) { FILE *fin = fopen(argv[1], "rb"); assert(fin != NULL); size_t nsym = atoi(argv[2]); assert(nsym >= 0); complex float rx_sym[nsym]; size_t nread = fread(rx_sym, sizeof(complex float), nsym, fin); assert(nread == nsym); fclose(fin); float EsNodB = ofdm_esno_est_calc(rx_sym, nsym); printf("%f\n", EsNodB); return 0; } codec2-1.2.0/unittest/test_700c_eq.sh000077500000000000000000000007301445607075400173000ustar00rootroot00000000000000#!/usr/bin/env bash # test_700c_eq.sh # make sure 700C EQ is reducing VQ distortion results=$(mktemp) c2enc 700C ../raw/kristoff.raw /dev/null --var 2> $results var=$(cat $results | sed -n "s/.*var: \([0-9..]*\) .*/\1/p") c2enc 700C ../raw/kristoff.raw /dev/null --var --eq 2> $results var_eq=$(cat $results | sed -n "s/.*var: \([0-9..]*\) .*/\1/p") printf "var: %5.2f var_eq: %5.2f\n" $var $var_eq python3 -c "import sys; sys.exit(0) if $var_eq<=$var else sys.exit(1)" codec2-1.2.0/unittest/tfdmdv.c000066400000000000000000000300001445607075400161650ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: tfdmdv.c AUTHOR......: David Rowe DATE CREATED: April 16 2012 Tests for the C version of the FDMDV modem. This program outputs a file of Octave vectors that are loaded and automatically tested against the Octave version of the modem by the Octave script tfmddv.m \*---------------------------------------------------------------------------*/ /* Copyright (C) 2012 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include "codec2_fdmdv.h" #include "fdmdv_internal.h" #include "octave.h" #define FRAMES 35 #define CHANNEL_BUF_SIZE (10 * M_FAC) extern float pilot_coeff[]; int main(int argc, char *argv[]) { struct FDMDV *fdmdv; int tx_bits[FDMDV_BITS_PER_FRAME]; COMP tx_symbols[FDMDV_NC + 1]; COMP tx_fdm[M_FAC]; float channel[CHANNEL_BUF_SIZE]; int channel_count; COMP rx_fdm[M_FAC + M_FAC / P]; float foff_coarse; int nin, next_nin; COMP rx_fdm_fcorr[M_FAC + M_FAC / P]; COMP rx_fdm_filter[M_FAC + M_FAC / P]; COMP rx_filt[NC + 1][P + 1]; float rx_timing; float env[NT * P]; COMP rx_symbols[FDMDV_NC + 1]; int rx_bits[FDMDV_BITS_PER_FRAME]; float foff_fine; int sync_bit, reliable_sync_bit; int tx_bits_log[FDMDV_BITS_PER_FRAME * FRAMES]; COMP tx_symbols_log[(FDMDV_NC + 1) * FRAMES]; COMP tx_fdm_log[M_FAC * FRAMES]; COMP pilot_baseband1_log[NPILOTBASEBAND * FRAMES]; COMP pilot_baseband2_log[NPILOTBASEBAND * FRAMES]; COMP pilot_lpf1_log[NPILOTLPF * FRAMES]; COMP pilot_lpf2_log[NPILOTLPF * FRAMES]; COMP S1_log[MPILOTFFT * FRAMES]; COMP S2_log[MPILOTFFT * FRAMES]; float foff_coarse_log[FRAMES]; float foff_log[FRAMES]; COMP rx_fdm_filter_log[(M_FAC + M_FAC / P) * FRAMES]; int rx_fdm_filter_log_index; COMP rx_filt_log[NC + 1][(P + 1) * FRAMES]; int rx_filt_log_col_index; float env_log[NT * P * FRAMES]; float rx_timing_log[FRAMES]; COMP rx_symbols_log[FDMDV_NC + 1][FRAMES]; COMP phase_difference_log[FDMDV_NC + 1][FRAMES]; float sig_est_log[FDMDV_NC + 1][FRAMES]; float noise_est_log[FDMDV_NC + 1][FRAMES]; int rx_bits_log[FDMDV_BITS_PER_FRAME * FRAMES]; float foff_fine_log[FRAMES]; int sync_bit_log[FRAMES]; int sync_log[FRAMES]; int nin_log[FRAMES]; FILE *fout; int f, c, i, j; fdmdv = fdmdv_create(FDMDV_NC); next_nin = M_FAC; channel_count = 0; rx_fdm_filter_log_index = 0; rx_filt_log_col_index = 0; printf("sizeof FDMDV states: %zd bytes\n", sizeof(struct FDMDV)); for (f = 0; f < FRAMES; f++) { /* --------------------------------------------------------*\ Modulator \*---------------------------------------------------------*/ fdmdv_get_test_bits(fdmdv, tx_bits); bits_to_dqpsk_symbols(tx_symbols, FDMDV_NC, fdmdv->prev_tx_symbols, tx_bits, &fdmdv->tx_pilot_bit, 0); memcpy(fdmdv->prev_tx_symbols, tx_symbols, sizeof(COMP) * (FDMDV_NC + 1)); tx_filter_and_upconvert(tx_fdm, FDMDV_NC, tx_symbols, fdmdv->tx_filter_memory, fdmdv->phase_tx, fdmdv->freq, &fdmdv->fbb_phase_tx, fdmdv->fbb_rect); /* --------------------------------------------------------*\ Channel \*---------------------------------------------------------*/ nin = next_nin; // nin = M_FAC; // when debugging good idea to uncomment this to "open // loop" /* add M_FAC tx samples to end of buffer */ assert((channel_count + M_FAC) < CHANNEL_BUF_SIZE); for (i = 0; i < M_FAC; i++) channel[channel_count + i] = tx_fdm[i].real; channel_count += M_FAC; /* take nin samples from start of buffer */ for (i = 0; i < nin; i++) { rx_fdm[i].real = channel[i]; rx_fdm[i].imag = 0; } /* shift buffer back */ for (i = 0, j = nin; j < channel_count; i++, j++) channel[i] = channel[j]; channel_count -= nin; /* --------------------------------------------------------*\ Demodulator \*---------------------------------------------------------*/ /* shift down to complex baseband */ fdmdv_freq_shift(rx_fdm, rx_fdm, -FDMDV_FCENTRE, &fdmdv->fbb_phase_rx, nin); /* freq offset estimation and correction */ // fdmdv->sync = 0; // when debugging good idea to uncomment this to "open // loop" foff_coarse = rx_est_freq_offset(fdmdv, rx_fdm, nin, !fdmdv->sync); if (fdmdv->sync == 0) fdmdv->foff = foff_coarse; fdmdv_freq_shift(rx_fdm_fcorr, rx_fdm, -fdmdv->foff, &fdmdv->foff_phase_rect, nin); /* baseband processing */ rxdec_filter(rx_fdm_filter, rx_fdm_fcorr, fdmdv->rxdec_lpf_mem, nin); down_convert_and_rx_filter(rx_filt, fdmdv->Nc, rx_fdm_filter, fdmdv->rx_fdm_mem, fdmdv->phase_rx, fdmdv->freq, fdmdv->freq_pol, nin, M_FAC / Q); rx_timing = rx_est_timing(rx_symbols, FDMDV_NC, rx_filt, fdmdv->rx_filter_mem_timing, env, nin, M_FAC); foff_fine = qpsk_to_bits(rx_bits, &sync_bit, FDMDV_NC, fdmdv->phase_difference, fdmdv->prev_rx_symbols, rx_symbols, 0); // for(i=0; iprev_rx_symbols[i].real, fdmdv->prev_rx_symbols[i].imag, // fdmdv->phase_difference[i].real, // fdmdv->phase_difference[i].imag); // if (f==1) // exit(0); snr_update(fdmdv->sig_est, fdmdv->noise_est, FDMDV_NC, fdmdv->phase_difference); memcpy(fdmdv->prev_rx_symbols, rx_symbols, sizeof(COMP) * (FDMDV_NC + 1)); next_nin = M_FAC; if (rx_timing > 2 * M_FAC / P) next_nin += M_FAC / P; if (rx_timing < 0) next_nin -= M_FAC / P; fdmdv->sync = freq_state(&reliable_sync_bit, sync_bit, &fdmdv->fest_state, &fdmdv->timer, fdmdv->sync_mem); fdmdv->foff -= TRACK_COEFF * foff_fine; /* --------------------------------------------------------*\ Log each vector \*---------------------------------------------------------*/ memcpy(&tx_bits_log[FDMDV_BITS_PER_FRAME * f], tx_bits, sizeof(int) * FDMDV_BITS_PER_FRAME); memcpy(&tx_symbols_log[(FDMDV_NC + 1) * f], tx_symbols, sizeof(COMP) * (FDMDV_NC + 1)); memcpy(&tx_fdm_log[M_FAC * f], tx_fdm, sizeof(COMP) * M_FAC); memcpy(&pilot_baseband1_log[f * NPILOTBASEBAND], fdmdv->pilot_baseband1, sizeof(COMP) * NPILOTBASEBAND); memcpy(&pilot_baseband2_log[f * NPILOTBASEBAND], fdmdv->pilot_baseband2, sizeof(COMP) * NPILOTBASEBAND); memcpy(&pilot_lpf1_log[f * NPILOTLPF], fdmdv->pilot_lpf1, sizeof(COMP) * NPILOTLPF); memcpy(&pilot_lpf2_log[f * NPILOTLPF], fdmdv->pilot_lpf2, sizeof(COMP) * NPILOTLPF); memcpy(&S1_log[f * MPILOTFFT], fdmdv->S1, sizeof(COMP) * MPILOTFFT); memcpy(&S2_log[f * MPILOTFFT], fdmdv->S2, sizeof(COMP) * MPILOTFFT); foff_coarse_log[f] = foff_coarse; foff_log[f] = fdmdv->foff; /* rx filtering */ for (i = 0; i < nin; i++) rx_fdm_filter_log[rx_fdm_filter_log_index + i] = rx_fdm_filter[i]; rx_fdm_filter_log_index += nin; for (c = 0; c < NC + 1; c++) { for (i = 0; i < (P * nin) / M_FAC; i++) rx_filt_log[c][rx_filt_log_col_index + i] = rx_filt[c][i]; } rx_filt_log_col_index += (P * nin) / M_FAC; /* timing estimation */ memcpy(&env_log[NT * P * f], env, sizeof(float) * NT * P); rx_timing_log[f] = rx_timing; nin_log[f] = nin; for (c = 0; c < FDMDV_NC + 1; c++) { rx_symbols_log[c][f] = rx_symbols[c]; phase_difference_log[c][f] = fdmdv->phase_difference[c]; } /* qpsk_to_bits() */ memcpy(&rx_bits_log[FDMDV_BITS_PER_FRAME * f], rx_bits, sizeof(int) * FDMDV_BITS_PER_FRAME); for (c = 0; c < FDMDV_NC + 1; c++) { sig_est_log[c][f] = fdmdv->sig_est[c]; noise_est_log[c][f] = fdmdv->noise_est[c]; } foff_fine_log[f] = foff_fine; sync_bit_log[f] = sync_bit; sync_log[f] = fdmdv->sync; } /*---------------------------------------------------------*\ Dump logs to Octave file for evaluation by tfdmdv.m Octave script \*---------------------------------------------------------*/ fout = fopen("tfdmdv_out.txt", "wt"); assert(fout != NULL); fprintf(fout, "# Created by tfdmdv.c\n"); octave_save_int(fout, "tx_bits_log_c", tx_bits_log, 1, FDMDV_BITS_PER_FRAME * FRAMES); octave_save_complex(fout, "tx_symbols_log_c", tx_symbols_log, 1, (FDMDV_NC + 1) * FRAMES, (FDMDV_NC + 1) * FRAMES); octave_save_complex(fout, "tx_fdm_log_c", (COMP *)tx_fdm_log, 1, M_FAC * FRAMES, M_FAC * FRAMES); octave_save_complex(fout, "pilot_lut_c", (COMP *)fdmdv->pilot_lut, 1, NPILOT_LUT, NPILOT_LUT); octave_save_complex(fout, "pilot_baseband1_log_c", pilot_baseband1_log, 1, NPILOTBASEBAND * FRAMES, NPILOTBASEBAND * FRAMES); octave_save_complex(fout, "pilot_baseband2_log_c", pilot_baseband2_log, 1, NPILOTBASEBAND * FRAMES, NPILOTBASEBAND * FRAMES); octave_save_float(fout, "pilot_coeff_c", pilot_coeff, 1, NPILOTCOEFF, NPILOTCOEFF); octave_save_complex(fout, "pilot_lpf1_log_c", pilot_lpf1_log, 1, NPILOTLPF * FRAMES, NPILOTLPF * FRAMES); octave_save_complex(fout, "pilot_lpf2_log_c", pilot_lpf2_log, 1, NPILOTLPF * FRAMES, NPILOTLPF * FRAMES); octave_save_complex(fout, "S1_log_c", S1_log, 1, MPILOTFFT * FRAMES, MPILOTFFT * FRAMES); octave_save_complex(fout, "S2_log_c", S2_log, 1, MPILOTFFT * FRAMES, MPILOTFFT * FRAMES); octave_save_float(fout, "foff_log_c", foff_log, 1, FRAMES, FRAMES); octave_save_float(fout, "foff_coarse_log_c", foff_coarse_log, 1, FRAMES, FRAMES); octave_save_complex(fout, "rx_fdm_filter_log_c", (COMP *)rx_fdm_filter_log, 1, rx_fdm_filter_log_index, rx_fdm_filter_log_index); octave_save_complex(fout, "rx_filt_log_c", (COMP *)rx_filt_log, (FDMDV_NC + 1), rx_filt_log_col_index, (P + 1) * FRAMES); octave_save_float(fout, "env_log_c", env_log, 1, NT * P * FRAMES, NT * P * FRAMES); octave_save_float(fout, "rx_timing_log_c", rx_timing_log, 1, FRAMES, FRAMES); octave_save_complex(fout, "rx_symbols_log_c", (COMP *)rx_symbols_log, (FDMDV_NC + 1), FRAMES, FRAMES); octave_save_complex(fout, "phase_difference_log_c", (COMP *)phase_difference_log, (FDMDV_NC + 1), FRAMES, FRAMES); octave_save_float(fout, "sig_est_log_c", (float *)sig_est_log, (FDMDV_NC + 1), FRAMES, FRAMES); octave_save_float(fout, "noise_est_log_c", (float *)noise_est_log, (FDMDV_NC + 1), FRAMES, FRAMES); octave_save_int(fout, "rx_bits_log_c", rx_bits_log, 1, FDMDV_BITS_PER_FRAME * FRAMES); octave_save_float(fout, "foff_fine_log_c", foff_fine_log, 1, FRAMES, FRAMES); octave_save_int(fout, "sync_bit_log_c", sync_bit_log, 1, FRAMES); octave_save_int(fout, "sync_log_c", sync_log, 1, FRAMES); octave_save_int(fout, "nin_log_c", nin_log, 1, FRAMES); fclose(fout); fdmdv_destroy(fdmdv); return 0; } codec2-1.2.0/unittest/tfifo.c000066400000000000000000000034351445607075400160240ustar00rootroot00000000000000/* tfifo.c David Rowe Nov 19 2012 Tests FIFOs, in particular thread safety. */ #include #include #include #include "codec2_fifo.h" #define FIFO_SZ 1024 #define WRITE_SZ 10 #define READ_SZ 8 #define N_MAX 100 #define LOOPS 1000000 int run_thread = 1; struct FIFO *f; void writer(void); void *writer_thread(void *data); pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; #define USE_THREADS //#define USE_MUTEX int main() { pthread_t awriter_thread; int i, j; short read_buf[READ_SZ]; int n_out = 0; int success; f = codec2_fifo_create(FIFO_SZ); #ifdef USE_THREADS pthread_create(&awriter_thread, NULL, writer_thread, NULL); #endif for (i = 0; i < LOOPS;) { #ifndef USE_THREADS writer(); #endif #ifdef USE_MUTEX pthread_mutex_lock(&mutex); #endif success = (codec2_fifo_read(f, read_buf, READ_SZ) == 0); #ifdef USE_MUTEX pthread_mutex_unlock(&mutex); #endif if (success) { for (j = 0; j < READ_SZ; j++) { if (read_buf[j] != n_out) { printf("error: %d %d\n", read_buf[j], n_out); return (1); } n_out++; if (n_out == N_MAX) n_out = 0; } i++; } } #ifdef USE_THREADS run_thread = 0; pthread_join(awriter_thread, NULL); #endif printf("%d loops tested OK\n", LOOPS); return 0; } int n_in = 0; void writer(void) { short write_buf[WRITE_SZ]; int i; if ((FIFO_SZ - codec2_fifo_used(f)) > WRITE_SZ) { for (i = 0; i < WRITE_SZ; i++) { write_buf[i] = n_in++; if (n_in == N_MAX) n_in = 0; } #ifdef USE_MUTEX pthread_mutex_lock(&mutex); #endif codec2_fifo_write(f, write_buf, WRITE_SZ); pthread_mutex_unlock(&mutex); } } void *writer_thread(void *data) { while (run_thread) { writer(); } return NULL; } codec2-1.2.0/unittest/tfmfsk.c000066400000000000000000000131531445607075400162050ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: tfmfsk.c AUTHOR......: Brady O'Brien DATE CREATED: 8 February 2016 C test driver for fmfsk_mod and fmfsk_demod in fmfsk.c. Reads a file with input bits/rf and spits out modulated/demoduladed samples and a dump of internal state. To run unit test, see octave/tfmfsk.m \*---------------------------------------------------------------------------*/ /* Copyright (C) 2016 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ //#define MODEMPROBE_ENABLE #include #include "modem_probe.h" /* Note: This is a dirty hack to force fsk.c to compile with modem probing * enabled */ #include "fmfsk.c" #define ST_BITS 10000 #define ST_FS 48000 #define ST_RS 2400 #define ST_EBNO 8 #define TEST_SELF_FULL 1 /* No-arg self test */ #define TEST_MOD 2 /* Test modulator using in and out file */ #define TEST_DEMOD 3 /* Test demodulator using in and out file */ int main(int argc, char *argv[]) { struct FMFSK *fmfsk; int Fs, Rs; FILE *fin, *fout; uint8_t *bitbuf = NULL; float *modbuf = NULL; uint8_t *bitbufp; float *modbufp; size_t bitbufsize = 0; size_t modbufsize = 0; int test_type; int i; fin = NULL; fout = NULL; /* Set up full self-test */ if (argc == 1) { test_type = TEST_SELF_FULL; modem_probe_init("fmfsk", "fmfsk_tfmfsk_log.txt"); Fs = ST_FS; Rs = ST_RS; } else if (argc < 7) { /* Not running any test */ printf( "Usage: %s [(M|D) SampleRate BitRate InputFile OutputFile " "OctaveLogFile]\n", argv[0]); exit(1); } else { /* Running stim-drivin test */ /* Mod test */ if (strcmp(argv[1], "M") == 0 || strcmp(argv[1], "m") == 0) { test_type = TEST_MOD; /* Demod test */ } else if (strcmp(argv[1], "D") == 0 || strcmp(argv[1], "d") == 0) { test_type = TEST_DEMOD; } else { printf("Must specify mod or demod test with M or D\n"); exit(1); } /* Extract parameters */ Fs = atoi(argv[2]); Rs = atoi(argv[3]); /* Open files */ fin = fopen(argv[4], "r"); fout = fopen(argv[5], "w"); if (fin == NULL || fout == NULL) { printf("Couldn't open test vector files\n"); exit(1); } /* Init modem probing */ modem_probe_init("fmfsk", argv[6]); } srand(1); /* set up FSK */ fmfsk = fmfsk_create(Fs, Rs); /* Modulate! */ if (test_type == TEST_MOD || test_type == TEST_SELF_FULL) { /* Generate random bits for self test */ if (test_type == TEST_SELF_FULL) { bitbufsize = ST_BITS; bitbuf = (uint8_t *)malloc(sizeof(uint8_t) * ST_BITS); for (i = 0; i < ST_BITS; i++) { /* Generate a randomish bit */ bitbuf[i] = (uint8_t)(rand() & 0x01); } } else { /* Load bits from a file */ /* Figure out how many bits are in the input file */ fseek(fin, 0L, SEEK_END); bitbufsize = ftell(fin); fseek(fin, 0L, SEEK_SET); bitbuf = malloc(sizeof(uint8_t) * bitbufsize); i = 0; /* Read in some bits */ bitbufp = bitbuf; while (fread(bitbufp, sizeof(uint8_t), fmfsk->nbit, fin) == fmfsk->nbit) { i++; bitbufp += fmfsk->nbit; /* Make sure we don't break the buffer */ if (i * fmfsk->nbit > bitbufsize) { bitbuf = realloc(bitbuf, sizeof(uint8_t) * (bitbufsize + fmfsk->nbit)); bitbufsize += fmfsk->nbit; } } } /* Allocate modulation buffer */ modbuf = (float *)malloc(sizeof(float) * (bitbufsize / fmfsk->nbit) * fmfsk->N * 4); modbufsize = (bitbufsize / fmfsk->nbit) * fmfsk->N; /* Do the modulation */ modbufp = modbuf; bitbufp = bitbuf; while (bitbufp < bitbuf + bitbufsize) { fmfsk_mod(fmfsk, modbufp, bitbufp); modbufp += fmfsk->N; bitbufp += fmfsk->nbit; } /* For a mod-only test, write out the result */ if (test_type == TEST_MOD) { fwrite(modbuf, sizeof(float), modbufsize, fout); free(modbuf); } /* Free bit buffer */ free(bitbuf); } /* Add channel imp here */ /* Now test the demod */ if (test_type == TEST_DEMOD || test_type == TEST_SELF_FULL) { free(modbuf); modbuf = malloc(sizeof(float) * (fmfsk->N + fmfsk->Ts * 2)); bitbuf = malloc(sizeof(uint8_t) * fmfsk->nbit); /* Demod-only test */ if (test_type == TEST_DEMOD) { // fprintf(stderr,"%d\n",(fmfsk->N+fmfsk->Ts*2)); while (fread(modbuf, sizeof(float), fmfsk_nin(fmfsk), fin) == fmfsk_nin(fmfsk)) { fmfsk_demod(fmfsk, bitbuf, modbuf); fwrite(bitbuf, sizeof(uint8_t), fmfsk->nbit, fout); } } /* Demod after channel imp. and mod */ else { bitbufp = bitbuf; modbufp = modbuf; while (modbufp < modbuf + modbufsize) { fmfsk_demod(fmfsk, bitbuf, modbuf); modbufp += fmfsk_nin(fmfsk); } } free(bitbuf); } modem_probe_close(); if (test_type == TEST_DEMOD || test_type == TEST_MOD) { fclose(fin); fclose(fout); } fmfsk_destroy(fmfsk); exit(0); } codec2-1.2.0/unittest/tfreedv_2400A_rawdata.c000066400000000000000000000064201445607075400206220ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: tfreedv_2400A_rawdata.c AUTHOR......: Jeroen Vreeken DATE CREATED: 24 May 2020 FreeDV 2400A rawdata test. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2020 Jeroen Vreeken This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include "assert.h" #include "freedv_api.h" int main(int argc, char **argv) { struct freedv *f; int i; printf("freedv_api tests for mode 2400A\n"); printf("freedv_open(FREEDV_MODE_2400A) "); f = freedv_open(FREEDV_MODE_2400A); assert(f != NULL); printf("Passed\n"); printf("freedv_get_mode() "); int mode = freedv_get_mode(f); assert(mode == FREEDV_MODE_2400A); printf("Passed\n"); printf("freedv_get_n_max_modem_samples() "); int max_samples = freedv_get_n_max_modem_samples(f); assert(max_samples == 2040); printf("%d Passed\n", max_samples); printf("freedv_get_n_nom_modem_samples() "); int nom_samples = freedv_get_n_nom_modem_samples(f); assert(nom_samples == 2000); printf("%d Passed\n", nom_samples); printf("freedv_get_n_speech_samples() "); int speech_samples = freedv_get_n_speech_samples(f); assert(speech_samples == 320); printf("%d Passed\n", speech_samples); printf("freedv_get_n_bits_per_codec_frame() "); int codec_bits = freedv_get_bits_per_codec_frame(f); assert(codec_bits == 52); printf("%d Passed\n", codec_bits); printf("freedv_get_n_bits_per_modem_frame() "); int frame_bits = freedv_get_bits_per_modem_frame(f); assert(frame_bits == 52); printf("%d Passed\n", frame_bits); printf("freedv_rawdatatx()/freedv_rawdatarx() "); int frames = 0; { short mod[nom_samples * 10]; /* Note: A codec frame is only 6.5 bytes! so the seventh byte will be half empty! */ unsigned char payload[7] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x70}; for (i = 0; i < 10; i++) { freedv_rawdatatx(f, mod + i * nom_samples, payload); } int nin = 0; for (i = 0; i < nom_samples * 9; i += nin) { nin = freedv_nin(f); unsigned char payload_rx[7] = {0}; int r = freedv_rawdatarx(f, payload_rx, mod + i); if (r) { int b; for (b = 0; b < 7; b++) { if (payload[b] != payload_rx[b]) { printf("Received codec bits 0x%02x do not match expected 0x%02x\n", payload_rx[b], payload[b]); } } frames++; } } } if (!frames) { printf("Did not decode any frames successfully\n"); goto fail; } printf("Tests passed\n"); return 0; fail: printf("Test failed\n"); return 1; } codec2-1.2.0/unittest/tfreedv_2400B_rawdata.c000066400000000000000000000064201445607075400206230ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: tfreedv_2400B_rawdata.c AUTHOR......: Jeroen Vreeken DATE CREATED: 24 May 2020 FreeDV 2400B rawdata test. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2020 Jeroen Vreeken This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include "assert.h" #include "freedv_api.h" int main(int argc, char **argv) { struct freedv *f; int i; printf("freedv_api tests for mode 2400B\n"); printf("freedv_open(FREEDV_MODE_2400B) "); f = freedv_open(FREEDV_MODE_2400B); assert(f != NULL); printf("Passed\n"); printf("freedv_get_mode() "); int mode = freedv_get_mode(f); assert(mode == FREEDV_MODE_2400B); printf("Passed\n"); printf("freedv_get_n_max_modem_samples() "); int max_samples = freedv_get_n_max_modem_samples(f); assert(max_samples == 1930); printf("%d Passed\n", max_samples); printf("freedv_get_n_nom_modem_samples() "); int nom_samples = freedv_get_n_nom_modem_samples(f); assert(nom_samples == 1920); printf("%d Passed\n", nom_samples); printf("freedv_get_n_speech_samples() "); int speech_samples = freedv_get_n_speech_samples(f); assert(speech_samples == 320); printf("%d Passed\n", speech_samples); printf("freedv_get_n_bits_per_codec_frame() "); int codec_bits = freedv_get_bits_per_codec_frame(f); assert(codec_bits == 52); printf("%d Passed\n", codec_bits); printf("freedv_get_n_bits_per_modem_frame() "); int frame_bits = freedv_get_bits_per_modem_frame(f); assert(frame_bits == 52); printf("%d Passed\n", frame_bits); printf("freedv_rawdatatx()/freedv_rawdatarx() "); int frames = 0; { short mod[nom_samples * 10]; /* Note: A codec frame is only 6.5 bytes! so the seventh byte will be half empty! */ unsigned char payload[7] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x70}; for (i = 0; i < 10; i++) { freedv_rawdatatx(f, mod + i * nom_samples, payload); } int nin = 0; for (i = 0; i < nom_samples * 9; i += nin) { nin = freedv_nin(f); unsigned char payload_rx[7] = {0}; int r = freedv_rawdatarx(f, payload_rx, mod + i); if (r) { int b; for (b = 0; b < 7; b++) { if (payload[b] != payload_rx[b]) { printf("Received codec bits 0x%02x do not match expected 0x%02x\n", payload_rx[b], payload[b]); } } frames++; } } } if (!frames) { printf("Did not decode any frames successfully\n"); goto fail; } printf("Tests passed\n"); return 0; fail: printf("Test failed\n"); return 1; } codec2-1.2.0/unittest/tfreedv_800XA_rawdata.c000066400000000000000000000103671445607075400207010ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: tfreedv_800XA_rawdata.c AUTHOR......: Jeroen Vreeken DATE CREATED: 24 May 2020 FreeDV 800XA rawdata test. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2020 Jeroen Vreeken This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include "assert.h" #include "freedv_api.h" int main(int argc, char **argv) { struct freedv *f; int i; printf("freedv_api tests for mode 800XA\n"); printf("freedv_open(FREEDV_MODE_800XA) "); f = freedv_open(FREEDV_MODE_800XA); assert(f != NULL); printf("Passed\n"); printf("freedv_get_mode() "); int mode = freedv_get_mode(f); assert(mode == FREEDV_MODE_800XA); printf("Passed\n"); printf("freedv_get_n_max_modem_samples() "); int max_samples = freedv_get_n_max_modem_samples(f); assert(max_samples == 660); printf("%d Passed\n", max_samples); printf("freedv_get_n_nom_modem_samples() "); int nom_samples = freedv_get_n_nom_modem_samples(f); assert(nom_samples == 640); printf("%d Passed\n", nom_samples); printf("freedv_get_n_speech_samples() "); int speech_samples = freedv_get_n_speech_samples(f); assert(speech_samples == 640); printf("%d Passed\n", speech_samples); printf("freedv_get_n_bits_per_codec_frame() "); int codec_bits = freedv_get_bits_per_codec_frame(f); assert(codec_bits == 28); printf("%d Passed\n", codec_bits); printf("freedv_get_n_bits_per_modem_frame() "); int frame_bits = freedv_get_bits_per_modem_frame(f); assert(frame_bits == 56); printf("%d Passed\n", frame_bits); /* Note: A codec frame is only 3.5 bytes! so the fourth and eight bytes will be half empty! */ unsigned char payload[8] = {0x12, 0x34, 0x56, 0x70, 0x89, 0xab, 0xcd, 0xe0}; unsigned char payload_tx[7] = {0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde}; printf("freedv_codec_frames_from_rawdata() "); unsigned char codec_frames[8] = {0}; freedv_codec_frames_from_rawdata(f, codec_frames, payload_tx); int fails = 0; for (i = 0; i < 8; i++) { if (codec_frames[i] != payload[i]) { printf("byte %d: 0x%02x does not match expected 0x%02x\n", i, codec_frames[i], payload[i]); fails++; } } if (fails) goto fail; printf("Passed\n"); printf("freedv_rawdata_from_codec_frames() "); unsigned char rawdata[7] = {0}; freedv_rawdata_from_codec_frames(f, rawdata, payload); fails = 0; for (i = 0; i < 7; i++) { if (rawdata[i] != payload_tx[i]) { printf("byte %d: 0x%02x does not match expected 0x%02x\n", i, rawdata[i], payload_tx[i]); fails++; } } if (fails) goto fail; printf("Passed\n"); printf("freedv_rawdatatx()/freedv_rawdatarx() "); int frames = 0; fails = 0; { short mod[nom_samples * 10]; for (i = 0; i < 10; i++) { freedv_rawdatatx(f, mod + i * nom_samples, payload_tx); } int nin = 0; for (i = 0; i < nom_samples * 9; i += nin) { nin = freedv_nin(f); unsigned char payload_rx[8] = {0}; int r = freedv_rawdatarx(f, payload_rx, mod + i); if (r == 7) { int b; for (b = 0; b < 7; b++) { if (payload_tx[b] != payload_rx[b]) { printf("Received codec bits 0x%02x do not match expected 0x%02x\n", payload_rx[b], payload_tx[b]); fails++; } } frames++; } } } if (!frames) { printf("Did not decode any frames successfully\n"); goto fail; } if (fails) goto fail; printf("Passed\n"); printf("Tests passed\n"); return 0; fail: printf("Test failed\n"); return 1; } codec2-1.2.0/unittest/tfreedv_data_channel.c000066400000000000000000000212751445607075400210370ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: tfreedv_data_channel AUTHOR......: Jeroen Vreeken DATE CREATED: May 3 2016 Tests for the data channel code. Data channel frame behaviour is tested with test vectors. \*---------------------------------------------------------------------------*/ /* Copyright (C) 2016 Jeroen Vreeken All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include "freedv_data_channel.h" unsigned char test_header[] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66}; unsigned char bcast_header[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; struct testvec { char *testname; unsigned char *data; size_t data_size; size_t frame_size; unsigned char *frame_data; size_t frame_data_size; unsigned char *flags; } testvec[] = { { "Regular packet, does not match header and no broadcast", (unsigned char[]){0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12}, 0x12, 8, (unsigned char[]){0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x47, 0x6e}, 0x14, (unsigned char[]){0x00, 0x00, 0x04}, }, { "Header", NULL, 0, 8, (unsigned char[]){0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x5a, 0x60}, 0x08, (unsigned char[]){0x08}, }, { "Broadcast packet", (unsigned char[]){0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11}, 0x19, 8, (unsigned char[]){0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x3c, 0xbe}, 0x0f, (unsigned char[]){0xc0, 0x07}, }, { "Broadcast packet, header does not match", (unsigned char[]){0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0x22, 0xbb, 0xcc, 0xdd, 0xee, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11}, 0x19, 8, (unsigned char[]){0xaa, 0x22, 0xbb, 0xcc, 0xdd, 0xee, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x1a, 0x68}, 0x15, (unsigned char[]){0x40, 0x00, 0x05}, }, { "Header 6 bytes", NULL, 0, 6, (unsigned char[]){0x11, 0x22, 0x33, 0x44, 0x55, 0x66}, 0x06, (unsigned char[]){0x2f}, }, { "Broadcast packet (6 byte frames)", (unsigned char[]){0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11}, 0x19, 6, (unsigned char[]){0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x3c, 0xbe}, 0x0f, (unsigned char[]){0xc0, 0x00, 0x03}, }, { "Broadcast packet, header does not match (6 byte frames)", (unsigned char[]){0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0x22, 0xbb, 0xcc, 0xdd, 0xee, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11}, 0x19, 6, (unsigned char[]){0xaa, 0x22, 0xbb, 0xcc, 0xdd, 0xee, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x1a, 0x68}, 0x15, (unsigned char[]){0x40, 0x00, 0x00, 0x03}, }, }; static int ret = 0; static int vector = 0; static size_t frame_data_pos = 0; static int rx_done = 0; void *tx_cb_arg = (void *)0xaa55; void *rx_cb_arg = (void *)0xbb44; void tfreedv_data_callback_tx(void *arg, unsigned char *packet, size_t *size) { if (tx_cb_arg != arg) { ret++; printf("FAIL: %s called with wrong argument value\n", __func__); } printf("--------------------------------------\n"); printf("TX callback called for test %zd bytes data for test %d:\n'%s'\n", testvec[vector].data_size, vector, testvec[vector].testname); memcpy(packet, testvec[vector].data, testvec[vector].data_size); *size = testvec[vector].data_size; return; } void tfreedv_data_callback_rx(void *arg, unsigned char *packet, size_t size) { if (rx_cb_arg != arg) { ret++; printf("FAIL: %s called with wrong argument value\n", __func__); } printf("RX callback called with %zd bytes\n", size); if (testvec[vector].data_size) { size_t data_size = testvec[vector].data_size; if (data_size != size) { printf("FAIL: Received size does not match test vector: %zd != %zd\n", size, data_size); ret++; } else { size_t i; for (i = 0; i < data_size; i++) { if (packet[i] != testvec[vector].data[i]) { printf("FAIL: byte %zd does not match 0x%02x != 0x%02x\n", i, packet[i], testvec[vector].data[i]); ret++; } } } } else { if (size != 12) { printf("FAIL: Received header is not 12 bytes: %zd\n", size); ret++; } else { if (memcmp(packet, bcast_header, 6)) { printf("FAIL: Header is not a broadcast!\n"); ret++; } if (memcmp(packet + 6, test_header, 6)) { printf("FAIL: Header does not match!\n"); ret++; } } } rx_done = 1; } int main(int argc, char **argv) { struct freedv_data_channel *fdc; fdc = freedv_data_channel_create(); freedv_data_set_header(fdc, test_header); freedv_data_set_cb_tx(fdc, tfreedv_data_callback_tx, tx_cb_arg); freedv_data_set_cb_rx(fdc, tfreedv_data_callback_rx, rx_cb_arg); while (vector < sizeof(testvec) / sizeof(struct testvec)) { size_t frame_size = testvec[vector].frame_size; unsigned char frame[frame_size]; int from, bcast, crc, end; int i; size_t check_size; unsigned char flags; int nr_frames; freedv_data_channel_tx_frame(fdc, frame, frame_size, &from, &bcast, &crc, &end); check_size = frame_size; if (frame_data_pos + check_size > testvec[vector].frame_data_size) check_size = testvec[vector].frame_data_size - frame_data_pos; flags = from * 0x80 + bcast * 0x40 + crc * 0x20 + end; printf("0x%02x:", flags); for (i = 0; i < check_size; i++) { if (frame[i] != testvec[vector].frame_data[frame_data_pos + i]) { printf(" [0x%02x!=0x%02x]", frame[i], testvec[vector].frame_data[frame_data_pos + i]); ret++; } else { printf(" 0x%02x", frame[i]); } } printf("\n"); if (flags != testvec[vector].flags[frame_data_pos / frame_size]) { printf("FAIL: Flags byte does not match 0x%02x != 0x%02x\n", flags, testvec[vector].flags[frame_data_pos / frame_size]); ret++; } freedv_data_channel_rx_frame(fdc, frame, frame_size, from, bcast, crc, end); frame_data_pos += frame_size; nr_frames = freedv_data_get_n_tx_frames(fdc, frame_size); if (frame_data_pos >= testvec[vector].frame_data_size) { if (nr_frames) { printf("FAIL: nr_frames is not zero: %d\n", nr_frames); ret++; } vector++; frame_data_pos = 0; if (!rx_done) { printf("FAIL: RX callback not executed\n"); ret++; } rx_done = 0; } else { int vec_frames = (testvec[vector].frame_data_size - frame_data_pos); vec_frames /= frame_size; vec_frames++; if (nr_frames != vec_frames) { printf("FAIL: nr_frames != vec_frames: %d != %d\n", nr_frames, vec_frames); ret++; } } } freedv_data_channel_destroy(fdc); printf("--------------------------------------\n"); printf("tfreedv_data_channel test result: "); if (ret) { printf("Failed %d\n", ret); } else { printf("Passed\n"); } return ret; } codec2-1.2.0/unittest/tfsk.c000066400000000000000000000152421445607075400156630ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: tfsk.c AUTHOR......: Brady O'Brien DATE CREATED: 20 January 2016 C test driver for fsk_mod and fsk_demod in fsk.c. Reads a file with input bits/rf and spits out modulated/demoduladed samples and a dump of internal state. To run unit test, see octave/tfsk.m \*---------------------------------------------------------------------------*/ /* Copyright (C) 2016 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ //#define MODEMPROBE_ENABLE #include #include "modem_probe.h" /* Note: This is a dirty hack to force fsk.c to compile with modem probing * enabled */ #include "fsk.c" #define ST_BITS 10000 #define ST_FS 8000 #define ST_RS 100 #define ST_F1 1200 #define ST_Fs 400 #define ST_EBNO 8 #define ST_M 2 #define TEST_SELF_FULL 1 /* No-arg self test */ #define TEST_MOD 2 /* Test modulator using in and out file */ #define TEST_MOD_H 3 /* Test modulator using in and out file */ #define TEST_DEMOD 4 /* Test demodulator using in and out file */ #define TEST_DEMOD_H 5 /* Test demodulator using in and out file */ int main(int argc, char *argv[]) { struct FSK *fsk; int Fs, Rs, f1, fs, M, lock_nin; FILE *fin, *fout; uint8_t *bitbuf = NULL; float *modbuf = NULL; uint8_t *bitbufp; float *modbufp; size_t bitbufsize = 0; size_t modbufsize = 0; int test_type; int i; fin = NULL; fout = NULL; /* Set up full self-test */ if (argc == 1) { test_type = TEST_SELF_FULL; modem_probe_init("fsk2", "fsk2_tfsk_log.txt"); Fs = ST_FS; Rs = ST_RS; f1 = ST_F1; fs = ST_Fs; M = ST_M; lock_nin = 0; } else if (argc < 10) { /* Not running any test */ printf( "Usage: %s [(M|D|DX) Mode TXFreq1 TXFreqSpace SampleRate SymbolRate " "lock_nin InputFile OutputFile OctaveLogFile]\n", argv[0]); exit(1); } else { /* Running stim-drivin test */ /* Mod test */ if (strcmp(argv[1], "MX") == 0) { test_type = TEST_MOD_H; } else if (strcmp(argv[1], "M") == 0 || strcmp(argv[1], "m") == 0) { test_type = TEST_MOD; /* Demod test */ } else if (strcmp(argv[1], "DX") == 0) { test_type = TEST_DEMOD_H; } else if (strcmp(argv[1], "D") == 0 || strcmp(argv[1], "d") == 0) { test_type = TEST_DEMOD; } else { printf("Must specify mod or demod test with M or D\n"); exit(1); } /* Extract parameters */ M = atoi(argv[2]); f1 = atoi(argv[3]); fs = atoi(argv[4]); Fs = atoi(argv[5]); Rs = atoi(argv[6]); lock_nin = atoi(argv[7]); /* Open files */ fin = fopen(argv[8], "r"); fout = fopen(argv[9], "w"); if (fin == NULL || fout == NULL) { printf("Couldn't open test vector files\n"); exit(1); } /* Init modem probing */ modem_probe_init("fsk", argv[10]); } srand(1); /* set up FSK */ if (test_type == TEST_DEMOD_H || test_type == TEST_MOD_H) { fsk = fsk_create_hbr(Fs, Rs, M, 10, FSK_DEFAULT_NSYM, f1, fs); if (test_type == TEST_DEMOD_H) test_type = TEST_DEMOD; else test_type = TEST_MOD; } else { fsk = fsk_create(Fs, Rs, M, f1, fs); } fsk_set_freq_est_limits(fsk, 300, 2800); fsk->lock_nin = lock_nin; /* Modulate! */ if (test_type == TEST_MOD || test_type == TEST_SELF_FULL) { /* Generate random bits for self test */ if (test_type == TEST_SELF_FULL) { bitbufsize = ST_BITS; bitbuf = (uint8_t *)malloc(sizeof(uint8_t) * ST_BITS); for (i = 0; i < ST_BITS; i++) { /* Generate a randomish bit */ bitbuf[i] = (uint8_t)(rand() & 0x01); } } else { /* Load bits from a file */ /* Figure out how many bits are in the input file */ fseek(fin, 0L, SEEK_END); bitbufsize = ftell(fin); fseek(fin, 0L, SEEK_SET); bitbuf = malloc(sizeof(uint8_t) * bitbufsize); i = 0; /* Read in some bits */ bitbufp = bitbuf; while (fread(bitbufp, sizeof(uint8_t), fsk->Nbits, fin) == fsk->Nbits) { i++; bitbufp += fsk->Nbits; /* Make sure we don't break the buffer */ if (i * fsk->Nbits > bitbufsize) { bitbuf = realloc(bitbuf, sizeof(uint8_t) * (bitbufsize + fsk->Nbits)); bitbufsize += fsk->Nbits; } } } /* Allocate modulation buffer */ modbuf = (float *)malloc(sizeof(float) * (bitbufsize / fsk->Nbits) * fsk->N * 4); modbufsize = (bitbufsize / fsk->Nbits) * fsk->N; /* Do the modulation */ modbufp = modbuf; bitbufp = bitbuf; while (bitbufp < bitbuf + bitbufsize) { fsk_mod(fsk, modbufp, bitbufp, fsk->Nbits); modbufp += fsk->N; bitbufp += fsk->Nbits; } /* For a mod-only test, write out the result */ if (test_type == TEST_MOD) { fwrite(modbuf, sizeof(float), modbufsize, fout); free(modbuf); } /* Free bit buffer */ free(bitbuf); } /* Now test the demod */ if (test_type == TEST_DEMOD || test_type == TEST_SELF_FULL) { free(modbuf); modbuf = malloc(sizeof(float) * (fsk->N + fsk->Ts * 2)); bitbuf = malloc(sizeof(uint8_t) * fsk->Nbits); /* Demod-only test */ if (test_type == TEST_DEMOD) { while (fread(modbuf, sizeof(float), fsk_nin(fsk), fin) == fsk_nin(fsk)) { int n = fsk_nin(fsk); COMP modbuf_comp[n]; for (i = 0; i < n; i++) { modbuf_comp[i].real = modbuf[i]; modbuf_comp[i].imag = 0.0; } fsk_demod(fsk, bitbuf, modbuf_comp); fwrite(bitbuf, sizeof(uint8_t), fsk->Nbits, fout); } } /* Demod after channel imp. and mod */ else { bitbufp = bitbuf; modbufp = modbuf; while (modbufp < modbuf + modbufsize) { int n = fsk_nin(fsk); COMP modbuf_comp[n]; for (i = 0; i < n; i++) { modbuf_comp[i].real = modbuf[i]; modbuf_comp[i].imag = 0.0; } fsk_demod(fsk, bitbuf, modbuf_comp); modbufp += fsk_nin(fsk); } } free(bitbuf); } modem_probe_close(); if (test_type == TEST_DEMOD || test_type == TEST_MOD) { fclose(fin); fclose(fout); } fsk_destroy(fsk); exit(0); } codec2-1.2.0/unittest/tfsk_llr.c000066400000000000000000000027031445607075400165320ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: tfsk_llr.c AUTHOR......: David Rowe DATE CREATED: July 2020 Simple test program for 4FSK LLR routines. \*---------------------------------------------------------------------------*/ #include #include #include "mpdecode_core.h" #define M 4 #define BPS 2 #define NSYM 5 #define V_EST 2 #define SNR_EST 10 /* Generated test vectors with: octave:100> init_cml('~/cml/'); octave:101> rx_filt=[1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 1] octave:102> symL = DemodFSK(rx_filt,10,1); -Somap(symL) */ /* one col per symbol: 0 1 2 3 4 */ float rx_filt[] = { 1.0, 0.0, 0.0, 0.0, 1.0, /* filter 0 */ 0.0, 1.0, 0.0, 0.0, 0.0, /* filter 1 */ 0.0, 0.0, 1.0, 0.0, 0.0, /* filter 2 */ 0.0, 0.0, 0.0, 1.0, 0.0 /* filter 3 */ }; float llrs_target[] = {7.3252, 7.3252, /* bit 0, 1 */ 7.3252, -7.3252, /* 2, 3, ... */ -7.3252, 7.3252, -7.3252, -7.3252, 7.3252, 7.3252}; int main(void) { float llrs[BPS * NSYM] = {0}; fsk_rx_filt_to_llrs(llrs, rx_filt, V_EST, SNR_EST, M, NSYM); float error = 0.0; for (int i = 0; i < NSYM * BPS; i++) { fprintf(stderr, "% f\n", llrs[i]); error += pow(llrs[i] - llrs_target[i], 2.0); } if (error < 1E-3) { fprintf(stderr, "PASS\n"); return 0; } else { fprintf(stderr, "FAIL\n"); return 1; } } codec2-1.2.0/unittest/thash.c000066400000000000000000000006311445607075400160170ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: thash.c AUTHOR......: David Rowe DATE CREATED: July 2020 Simple test program for freeDV API get hash function \*---------------------------------------------------------------------------*/ #include #include "freedv_api.h" int main(void) { printf("%s\n", freedv_get_hash()); return 0; } codec2-1.2.0/unittest/tnewamp1.c000066400000000000000000000230511445607075400164450ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: tnewamp1.c AUTHOR......: David Rowe DATE CREATED: Jan 2017 Tests for the C version of the newamp1 amplitude modelling used for 700c. This program outputs a file of Octave vectors that are loaded and automatically tested against the Octave version of the modem by the Octave script tnewamp1.m \*---------------------------------------------------------------------------*/ /* Copyright (C) 2017 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include "codec2_fft.h" #include "defines.h" #include "dump.h" #include "newamp1.h" #include "nlp.h" #include "octave.h" #include "quantise.h" #include "sine.h" #define FRAMES 300 int main(int argc, char *argv[]) { int Fs = 8000; C2CONST c2const = c2const_create(Fs, N_S); int n_samp = c2const.n_samp; int m_pitch = c2const.m_pitch; short buf[n_samp]; /* input/output buffer */ float Sn[m_pitch]; /* float input speech samples */ COMP Sw[FFT_ENC]; /* DFT of Sn[] */ codec2_fft_cfg fft_fwd_cfg; /* fwd FFT states */ float w[m_pitch]; /* time domain hamming window */ float W[FFT_ENC]; /* DFT of w[] */ MODEL model; void *nlp_states; codec2_fft_cfg phase_fft_fwd_cfg, phase_fft_inv_cfg; float pitch, prev_f0; int i, m, f, k; if (argc != 2) { printf("usage: ./tnewamp1 RawFile\n"); exit(1); } nlp_states = nlp_create(&c2const); prev_f0 = 1.0 / P_MAX_S; fft_fwd_cfg = codec2_fft_alloc(FFT_ENC, 0, NULL, NULL); make_analysis_window(&c2const, fft_fwd_cfg, w, W); phase_fft_fwd_cfg = codec2_fft_alloc(NEWAMP1_PHASE_NFFT, 0, NULL, NULL); phase_fft_inv_cfg = codec2_fft_alloc(NEWAMP1_PHASE_NFFT, 1, NULL, NULL); for (i = 0; i < m_pitch; i++) { Sn[i] = 1.0; } int K = 20; float rate_K_sample_freqs_kHz[K]; float model_octave[FRAMES][MAX_AMP + 2]; // model params in matrix format, // useful for C <-> Octave float rate_K_surface[FRAMES][K]; // rate K vecs for each frame, form a // surface that makes pretty graphs float rate_K_surface_no_mean[FRAMES][K]; // mean removed surface float rate_K_surface_no_mean_[FRAMES][K]; // quantised mean removed surface float mean[FRAMES]; float mean_[FRAMES]; float rate_K_surface_[FRAMES][K]; // quantised rate K vecs for each frame float interpolated_surface_[FRAMES][K]; // dec/interpolated surface // int voicing[FRAMES]; int voicing_[FRAMES]; float model_octave_[FRAMES][MAX_AMP + 2]; COMP H[FRAMES][MAX_AMP]; int indexes[FRAMES][NEWAMP1_N_INDEXES]; float se = 0.0; float eq[K]; for (k = 0; k < K; k++) eq[k] = 0.0; for (f = 0; f < FRAMES; f++) { for (m = 0; m < MAX_AMP + 2; m++) { model_octave[f][m] = 0.0; model_octave_[f][m] = 0.0; } for (m = 0; m < MAX_AMP; m++) { H[f][m].real = 0.0; H[f][m].imag = 0.0; } for (k = 0; k < K; k++) interpolated_surface_[f][k] = 0.0; voicing_[f] = 0; } mel_sample_freqs_kHz(rate_K_sample_freqs_kHz, K, ftomel(200.0), ftomel(3700.0)); // for(int k=0; k= M) { for (i = 0; i < M; i++) { for (k = 0; k < K; k++) { interpolated_surface_[f - M + i][k] = a_interpolated_surface_[i][k]; } } /* store test vectors */ for (i = f - M, m = 0; i < f; i++, m++) { model_octave_[i][0] = model__[m].Wo; model_octave_[i][1] = model__[m].L; voicing_[i] = model__[m].voiced; } int j; for (i = f - M, j = 0; i < f; i++, j++) { for (m = 1; m <= model__[j].L; m++) { model_octave_[i][m + 1] = model__[j].A[m]; H[i][m - 1] = HH[j][m]; // aH[m]; } } } } fclose(fin); /* save vectors in Octave format */ FILE *fout = fopen("tnewamp1_out.txt", "wt"); assert(fout != NULL); fprintf(fout, "# Created by tnewamp1.c\n"); octave_save_float(fout, "rate_K_surface_c", (float *)rate_K_surface, FRAMES, K, K); octave_save_float(fout, "mean_c", (float *)mean, 1, FRAMES, 1); octave_save_float(fout, "eq_c", eq, 1, K, K); octave_save_float(fout, "rate_K_surface_no_mean_c", (float *)rate_K_surface_no_mean, FRAMES, K, K); octave_save_float(fout, "rate_K_surface_no_mean__c", (float *)rate_K_surface_no_mean_, FRAMES, K, K); octave_save_float(fout, "mean__c", (float *)mean_, FRAMES, 1, 1); octave_save_float(fout, "rate_K_surface__c", (float *)rate_K_surface_, FRAMES, K, K); octave_save_float(fout, "interpolated_surface__c", (float *)interpolated_surface_, FRAMES, K, K); octave_save_float(fout, "model_c", (float *)model_octave, FRAMES, MAX_AMP + 2, MAX_AMP + 2); octave_save_float(fout, "model__c", (float *)model_octave_, FRAMES, MAX_AMP + 2, MAX_AMP + 2); octave_save_int(fout, "voicing__c", (int *)voicing_, 1, FRAMES); octave_save_complex(fout, "H_c", (COMP *)H, FRAMES, MAX_AMP, MAX_AMP); fclose(fout); printf( "Done! Now run\n octave:1> " "tnewamp1(\"../path/to/build_linux/src/hts1a\", " "\"../path/to/build_linux/unittest\")\n"); return 0; } codec2-1.2.0/unittest/tofdm.c000066400000000000000000000522221445607075400160240ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: tofdm.c AUTHORS.....: David Rowe & Steve Sampson DATE CREATED: June 2017 Tests for the C version of the OFDM modem. This program outputs a file of Octave vectors that are loaded and automatically tested against the Octave version of the modem by the Octave script tofdm.m \*---------------------------------------------------------------------------*/ /* Copyright (C) 2017 David Rowe All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 2, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #include #include #include #include #include #include #include #include #include "HRA_112_112.h" /* generated by ldpc_fsk_lib.m:ldpc_decode() */ #include "codec2_ofdm.h" #include "comp_prim.h" #include "mpdecode_core.h" #include "octave.h" #include "ofdm_internal.h" #include "test_bits_ofdm.h" #define NFRAMES 10 #define SAMPLE_CLOCK_OFFSET_PPM 100 #define FOFF_HZ 0.5f #define ASCALE (2E5f * 1.1491f / 2.0f) /* scale from shorts back to floats */ #define CODED_BITSPERFRAME 224 /* number of LDPC codeword bits/frame */ /* QPSK constellation for symbol likelihood calculations */ static COMP S_matrix[] = { {1.0f, 0.0f}, {0.0f, 1.0f}, {0.0f, -1.0f}, {-1.0f, 0.0f}}; /* constants we use a lot and don't want to have to deference all the time */ static float ofdm_tx_centre; /* TX Center frequency */ static float ofdm_rx_centre; /* RX Center frequency */ static float ofdm_fs; /* Sample rate */ static float ofdm_ts; /* Symbol cycle time */ static float ofdm_rs; /* Symbol rate */ static float ofdm_tcp; /* Cyclic prefix duration */ static float ofdm_timing_mx_thresh; /* See 700D Part 4 Acquisition blog post and ofdm_dev.m routines for how this was set */ static int ofdm_nc; /* NS-1 data symbols between pilots */ static int ofdm_ns; static int ofdm_bps; /* Bits per symbol */ static int ofdm_m; /* duration of each symbol in samples */ static int ofdm_ncp; /* duration of CP in samples */ static int ofdm_ftwindowwidth; static int ofdm_bitsperframe; static int ofdm_rowsperframe; static int ofdm_samplesperframe; static int ofdm_samplespersymbol; static int ofdm_max_samplesperframe; static int ofdm_nrxbuf; static int ofdm_ntxtbits; /* reserve bits/frame for auxiliary text information */ static int ofdm_nuwbits; /* Unique word, used for positive indication of lock */ /*---------------------------------------------------------------------------*\ FUNCTION....: fs_offset() AUTHOR......: David Rowe DATE CREATED: May 2015 Simulates small Fs offset between mod and demod. (Note: Won't work with float, works OK with double) \*---------------------------------------------------------------------------*/ static int fs_offset(COMP out[], COMP in[], int n, float sample_rate_ppm) { double f; double tin = 0.0; double step = 1.0 + sample_rate_ppm / 1E6; int t1, t2; int tout = 0; while (tin < (double)(n - 1)) { t1 = (int)floor(tin); t2 = (int)ceil(tin); assert(t2 < n); f = tin - (double)t1; out[tout].real = ((double)1.0 - f) * (double)in[t1].real + f * (double)in[t2].real; out[tout].imag = ((double)1.0 - f) * (double)in[t1].imag + f * (double)in[t2].imag; tin += step; tout++; // printf("tin: %f tout: %d f: %f\n", tin, tout, f); } return tout; } /*---------------------------------------------------------------------------*\ FUNCTION....: freq_shift() AUTHOR......: David Rowe DATE CREATED: 26/4/2012 Frequency shift modem signal. The use of complex input and output allows single sided frequency shifting (no images). \*---------------------------------------------------------------------------*/ static void freq_shift(COMP rx_fdm_fcorr[], COMP rx_fdm[], float foff, COMP *foff_phase_rect, int nin) { float temp = (TAU * foff / ofdm_fs); COMP foff_rect = {cosf(temp), sinf(temp)}; int i; for (i = 0; i < nin; i++) { *foff_phase_rect = cmult(*foff_phase_rect, foff_rect); rx_fdm_fcorr[i] = cmult(rx_fdm[i], *foff_phase_rect); } /* normalise digital oscillator as the magnitude can drift over time */ float mag = cabsolute(*foff_phase_rect); foff_phase_rect->real /= mag; foff_phase_rect->imag /= mag; } int main(int argc, char *argv[]) { int opt_Nc = 0; int ldpc_enable = 1; struct OFDM *ofdm; struct OFDM_CONFIG *ofdm_config; static struct option long_options[] = {{"nc", required_argument, 0, 'n'}, {"noldpc", no_argument, 0, 'l'}, {0, 0, 0, 0}}; int opt_index = 0; char c; while ((c = getopt_long(argc, argv, "n:l", long_options, &opt_index)) != -1) { switch (c) { case 'n': opt_Nc = atoi(optarg); fprintf(stderr, "Nc = %d\n", opt_Nc); break; case 'l': ldpc_enable = 0; fprintf(stderr, "LDPC disabled\n"); break; default: fprintf(stderr, "usage: %s [Options]:\n [-l --noldpc]\n [-n --nc " "NumberoFCarriers]\n", argv[0]); exit(1); } } // init once to get a copy of default config params ofdm = ofdm_create(NULL); assert(ofdm != NULL); struct OFDM_CONFIG ofdm_config_default; memcpy(&ofdm_config_default, ofdm_get_config_param(ofdm), sizeof(struct OFDM_CONFIG)); ofdm_destroy(ofdm); // now do a little customisation on default config, and re-create modem // instance if (opt_Nc) ofdm_config_default.nc = opt_Nc; // printf("ofdm_create() 2\n"); ofdm = ofdm_create(&ofdm_config_default); assert(ofdm != NULL); ofdm_config = ofdm_get_config_param(ofdm); ofdm_set_tx_bpf(ofdm, false); // same levels as Octave sim ofdm->amp_scale = 1.0; // make local copies for convenience ofdm_tx_centre = ofdm_config->tx_centre; ofdm_rx_centre = ofdm_config->rx_centre; ofdm_fs = ofdm_config->fs; ofdm_ts = ofdm_config->ts; ofdm_rs = ofdm_config->rs; ofdm_tcp = ofdm_config->tcp; ofdm_timing_mx_thresh = ofdm_config->timing_mx_thresh; ofdm_nc = ofdm_config->nc; ofdm_ns = ofdm_config->ns; ofdm_bps = ofdm_config->bps; ofdm_m = (int)(ofdm_config->fs / ofdm_config->rs); ofdm_ncp = (int)(ofdm_config->tcp * ofdm_config->fs); ofdm_ftwindowwidth = ofdm_config->ftwindowwidth; ofdm_bitsperframe = ofdm_get_bits_per_frame(ofdm); ofdm_rowsperframe = ofdm_bitsperframe / (ofdm_config->nc * ofdm_config->bps); ofdm_samplesperframe = ofdm_get_samples_per_frame(ofdm); ofdm_samplespersymbol = (ofdm->m + ofdm->ncp); ofdm_max_samplesperframe = ofdm_get_max_samples_per_frame(ofdm); ofdm_nrxbuf = ofdm->nrxbuf; ofdm_ntxtbits = ofdm_config->txtbits; ofdm_nuwbits = ofdm_config->nuwbits; int tx_bits[ofdm_samplesperframe]; COMP tx[ofdm_samplesperframe]; /* one frame of tx samples */ int rx_bits[ofdm_bitsperframe]; /* one frame of rx bits */ printf("Nc = %d ofdm_bitsperframe: %d\n", ofdm_nc, ofdm_bitsperframe); /* log arrays */ int tx_bits_log[ofdm_bitsperframe * NFRAMES]; COMP tx_log[ofdm_samplesperframe * NFRAMES]; COMP rx_log[ofdm_samplesperframe * NFRAMES]; COMP rxbuf_in_log[ofdm_max_samplesperframe * NFRAMES]; COMP rxbuf_log[ofdm_nrxbuf * NFRAMES]; COMP rx_sym_log[(ofdm_ns + 3) * NFRAMES][ofdm_nc + 2]; float phase_est_pilot_log[ofdm_rowsperframe * NFRAMES][ofdm_nc]; COMP rx_np_log[ofdm_rowsperframe * ofdm_nc * NFRAMES]; float rx_amp_log[ofdm_rowsperframe * ofdm_nc * NFRAMES]; float foff_hz_log[NFRAMES]; int rx_bits_log[ofdm_bitsperframe * NFRAMES]; int timing_est_log[NFRAMES]; int timing_valid_log[NFRAMES]; float timing_mx_log[NFRAMES]; float coarse_foff_est_hz_log[NFRAMES]; int sample_point_log[NFRAMES]; float symbol_likelihood_log[(CODED_BITSPERFRAME / ofdm_bps) * (1 << ofdm_bps) * NFRAMES]; float bit_likelihood_log[CODED_BITSPERFRAME * NFRAMES]; int detected_data_log[CODED_BITSPERFRAME * NFRAMES]; float mean_amp_log[NFRAMES]; float snr_log[NFRAMES]; FILE *fout; int f, i, j; /* set up LDPC code */ struct LDPC ldpc; ldpc.max_iter = HRA_112_112_MAX_ITER; ldpc.dec_type = 0; ldpc.q_scale_factor = 1; ldpc.r_scale_factor = 1; ldpc.CodeLength = HRA_112_112_CODELENGTH; ldpc.NumberParityBits = HRA_112_112_NUMBERPARITYBITS; ldpc.NumberRowsHcols = HRA_112_112_NUMBERROWSHCOLS; ldpc.max_row_weight = HRA_112_112_MAX_ROW_WEIGHT; ldpc.max_col_weight = HRA_112_112_MAX_COL_WEIGHT; ldpc.H_rows = (uint16_t *)HRA_112_112_H_rows; ldpc.H_cols = (uint16_t *)HRA_112_112_H_cols; /* Main Loop * ---------------------------------------------------------------------*/ for (f = 0; f < NFRAMES; f++) { /* --------------------------------------------------------*\ Mod \*---------------------------------------------------------*/ /* See CML startup code in tofdm.m */ for (i = 0; i < ofdm_nuwbits; i++) { tx_bits[i] = ofdm->tx_uw[i]; } for (i = ofdm_nuwbits; i < ofdm_nuwbits + ofdm_ntxtbits; i++) { tx_bits[i] = 0; } if (ldpc_enable) { unsigned char ibits[HRA_112_112_NUMBERROWSHCOLS]; unsigned char pbits[HRA_112_112_NUMBERPARITYBITS]; assert(HRA_112_112_NUMBERROWSHCOLS == ldpc.CodeLength / 2); for (i = 0; i < ldpc.CodeLength / 2; i++) { ibits[i] = payload_data_bits[i]; } encode(&ldpc, ibits, pbits); for (j = 0, i = ofdm_nuwbits + ofdm_ntxtbits; j < ldpc.CodeLength / 2; i++, j++) { tx_bits[i] = ibits[j]; } for (j = 0; j < ldpc.CodeLength / 2; i++, j++) { tx_bits[i] = pbits[j]; } assert(i == ofdm_bitsperframe); } else { int Npayloadbits = ofdm_bitsperframe - (ofdm_nuwbits + ofdm_ntxtbits); uint16_t r[Npayloadbits]; uint8_t payload_bits[Npayloadbits]; ofdm_rand(r, Npayloadbits); for (i = 0; i < Npayloadbits; i++) payload_bits[i] = r[i] > 16384; uint8_t txt_bits[ofdm_ntxtbits]; for (i = 0; i < ofdm_ntxtbits; i++) txt_bits[i] = 0; uint8_t tx_bits_char[ofdm_bitsperframe]; ofdm_assemble_qpsk_modem_packet(ofdm, tx_bits_char, payload_bits, txt_bits); for (i = 0; i < ofdm_bitsperframe; i++) tx_bits[i] = tx_bits_char[i]; } ofdm_mod(ofdm, (COMP *)tx, tx_bits); /* tx vector logging */ memcpy(&tx_bits_log[ofdm_bitsperframe * f], tx_bits, sizeof(int) * ofdm_bitsperframe); memcpy(&tx_log[ofdm_samplesperframe * f], tx, sizeof(COMP) * ofdm_samplesperframe); } /* --------------------------------------------------------*\ Channel \*---------------------------------------------------------*/ fs_offset(rx_log, tx_log, ofdm_samplesperframe * NFRAMES, SAMPLE_CLOCK_OFFSET_PPM); COMP foff_phase_rect = {1.0f, 0.0f}; freq_shift(rx_log, rx_log, FOFF_HZ, &foff_phase_rect, ofdm_samplesperframe * NFRAMES); /* --------------------------------------------------------*\ Demod \*---------------------------------------------------------*/ /* Init/pre-load rx with ideal timing so we can test with timing estimation * disabled */ int Nsam = ofdm_samplesperframe * NFRAMES; int prx = 0; int nin = ofdm_samplesperframe + 2 * ofdm_samplespersymbol; int lnew; COMP rxbuf_in[ofdm_max_samplesperframe]; #define FRONT_LOAD #ifdef FRONT_LOAD for (i = 0; i < nin; i++, prx++) { ofdm->rxbuf[ofdm_nrxbuf - nin + i] = rx_log[prx].real + rx_log[prx].imag * I; } #endif int nin_tot = 0; /* disable estimators for initial testing */ ofdm_set_verbose(ofdm, false); ofdm_set_timing_enable(ofdm, true); ofdm_set_foff_est_enable(ofdm, true); ofdm_set_phase_est_enable(ofdm, true); //#define TESTING_FILE #ifdef TESTING_FILE FILE *fin = fopen("~/codec2-dev/octave/ofdm_test.raw", "rb"); assert(fin != NULL); int Nbitsperframe = ofdm_bitsperframe; int Nmaxsamperframe = ofdm_max_samplesperframe; short rx_scaled[Nmaxsamperframe]; #endif /* start this with something sensible otherwise LDPC decode fails in tofdm.m */ ofdm->mean_amp = 1.0; for (f = 0; f < NFRAMES; f++) { /* For initial testing, timing est is off, so nin is always fixed. TODO: we need a constant for rxbuf_in[] size that is the maximum possible nin */ nin = ofdm_get_nin(ofdm); assert(nin <= ofdm_max_samplesperframe); /* Insert samples at end of buffer, set to zero if no samples available to disable phase estimation on future pilots on last frame of simulation. */ if ((Nsam - prx) < nin) { lnew = Nsam - prx; } else { lnew = nin; } // printf("nin: %d prx: %d lnew: %d\n", nin, prx, lnew); for (i = 0; i < nin; i++) { rxbuf_in[i].real = 0.0; rxbuf_in[i].imag = 0.0; } if (lnew) { for (i = 0; i < lnew; i++, prx++) { rxbuf_in[i] = rx_log[prx]; } } assert(prx <= ofdm_max_samplesperframe * NFRAMES); #ifdef TESTING_FILE fread(rx_scaled, sizeof(short), nin, fin); for (i = 0; i < nin; i++) { rxbuf_in[i].real = (float)rx_scaled[i] / ASCALE; rxbuf_in[i].imag = 0.0; } #endif /* uncoded OFDM modem ---------------------------------------*/ ofdm_demod(ofdm, rx_bits, rxbuf_in); #ifdef TESTING_FILE int Nerrs = 0; for (i = 0; i < Nbitsperframe; i++) { if (test_bits_ofdm[i] != rx_bits[i]) { Nerrs++; } } printf("f: %d Nerr: %d\n", f, Nerrs); #endif float symbol_likelihood[(CODED_BITSPERFRAME / ofdm_bps) * (1 << ofdm_bps)]; float bit_likelihood[CODED_BITSPERFRAME]; uint8_t out_char[CODED_BITSPERFRAME]; if (ldpc_enable) { /* LDPC functions --------------------------------------*/ float EsNo = 10; /* first few symbols are used for UW and txt bits, find start of (224,112) * LDPC codeword */ assert((ofdm_nuwbits + ofdm_ntxtbits + CODED_BITSPERFRAME) == ofdm_bitsperframe); COMP ldpc_codeword_symbols[(CODED_BITSPERFRAME / ofdm_bps)]; for (i = 0, j = (ofdm_nuwbits + ofdm_ntxtbits) / ofdm_bps; i < (CODED_BITSPERFRAME / ofdm_bps); i++, j++) { ldpc_codeword_symbols[i].real = crealf(ofdm->rx_np[j]); ldpc_codeword_symbols[i].imag = cimagf(ofdm->rx_np[j]); } float *ldpc_codeword_symbol_amps = &ofdm->rx_amp[(ofdm_nuwbits + ofdm_ntxtbits) / ofdm_bps]; Demod2D(symbol_likelihood, ldpc_codeword_symbols, S_matrix, EsNo, ldpc_codeword_symbol_amps, ofdm->mean_amp, CODED_BITSPERFRAME / ofdm_bps); Somap(bit_likelihood, symbol_likelihood, 1 << ofdm_bps, ofdm_bps, CODED_BITSPERFRAME / ofdm_bps); float llr[CODED_BITSPERFRAME]; int parityCheckCount; // fprintf(stderr, "\n"); for (i = 0; i < CODED_BITSPERFRAME; i++) { llr[i] = -bit_likelihood[i]; // fprintf(stderr, "%f ", llr[i]); } // fprintf(stderr, "\n"); run_ldpc_decoder(&ldpc, out_char, llr, &parityCheckCount); /* fprintf(stderr, "iter: %d parityCheckCount: %d\n", iter, parityCheckCount); for(i=0; irxbuf[i]); rxbuf_log[ofdm_nrxbuf * f + i].imag = cimagf(ofdm->rxbuf[i]); } for (i = 0; i < (ofdm_ns + 3); i++) { for (j = 0; j < (ofdm_nc + 2); j++) { rx_sym_log[(ofdm_ns + 3) * f + i][j].real = crealf(ofdm->rx_sym[i][j]); rx_sym_log[(ofdm_ns + 3) * f + i][j].imag = cimagf(ofdm->rx_sym[i][j]); } } /* note corrected phase (rx no phase) is one big linear array for frame */ for (i = 0; i < ofdm_rowsperframe * ofdm_nc; i++) { rx_np_log[ofdm_rowsperframe * ofdm_nc * f + i].real = crealf(ofdm->rx_np[i]); rx_np_log[ofdm_rowsperframe * ofdm_nc * f + i].imag = cimagf(ofdm->rx_np[i]); } /* note phase/amp ests the same for each col, but check them all anyway */ for (i = 0; i < ofdm_rowsperframe; i++) { for (j = 0; j < ofdm_nc; j++) { phase_est_pilot_log[ofdm_rowsperframe * f + i][j] = ofdm->aphase_est_pilot_log[ofdm_nc * i + j]; rx_amp_log[ofdm_rowsperframe * ofdm_nc * f + ofdm_nc * i + j] = ofdm->rx_amp[ofdm_nc * i + j]; } } foff_hz_log[f] = ofdm->foff_est_hz; timing_est_log[f] = ofdm->timing_est + 1; /* offset by 1 to match Octave */ timing_valid_log[f] = ofdm->timing_valid; timing_mx_log[f] = ofdm->timing_mx; coarse_foff_est_hz_log[f] = ofdm->coarse_foff_est_hz; sample_point_log[f] = ofdm->sample_point + 1; /* offset by 1 to match Octave */ float EsNodB = ofdm_esno_est_calc(ofdm->rx_np, ofdm_rowsperframe * ofdm_nc); snr_log[f] = ofdm_snr_from_esno(ofdm, EsNodB); mean_amp_log[f] = ofdm->mean_amp; memcpy(&rx_bits_log[ofdm_bitsperframe * f], rx_bits, sizeof(rx_bits)); if (ldpc_enable) { for (i = 0; i < (CODED_BITSPERFRAME / ofdm_bps) * (1 << ofdm_bps); i++) { symbol_likelihood_log[(CODED_BITSPERFRAME / ofdm_bps) * (1 << ofdm_bps) * f + i] = symbol_likelihood[i]; } for (i = 0; i < CODED_BITSPERFRAME; i++) { bit_likelihood_log[CODED_BITSPERFRAME * f + i] = bit_likelihood[i]; detected_data_log[CODED_BITSPERFRAME * f + i] = out_char[i]; } } } /*---------------------------------------------------------*\ Dump logs to Octave file for evaluation by tofdm.m Octave script \*---------------------------------------------------------*/ fout = fopen("tofdm_out.txt", "wt"); assert(fout != NULL); fprintf(fout, "# Created by tofdm.c\n"); octave_save_complex(fout, "pilot_samples_c", (COMP *)ofdm->pilot_samples, 1, ofdm_samplespersymbol, ofdm_samplespersymbol); octave_save_int(fout, "tx_bits_log_c", tx_bits_log, 1, ofdm_bitsperframe * NFRAMES); octave_save_complex(fout, "tx_log_c", (COMP *)tx_log, 1, ofdm_samplesperframe * NFRAMES, ofdm_samplesperframe * NFRAMES); octave_save_complex(fout, "rx_log_c", (COMP *)rx_log, 1, ofdm_samplesperframe * NFRAMES, ofdm_samplesperframe * NFRAMES); octave_save_complex(fout, "rxbuf_in_log_c", (COMP *)rxbuf_in_log, 1, nin_tot, nin_tot); octave_save_complex(fout, "rxbuf_log_c", (COMP *)rxbuf_log, 1, ofdm_nrxbuf * NFRAMES, ofdm_nrxbuf * NFRAMES); octave_save_complex(fout, "rx_sym_log_c", (COMP *)rx_sym_log, (ofdm_ns + 3) * NFRAMES, ofdm_nc + 2, ofdm_nc + 2); octave_save_float(fout, "phase_est_pilot_log_c", (float *)phase_est_pilot_log, ofdm_rowsperframe * NFRAMES, ofdm_nc, ofdm_nc); octave_save_float(fout, "rx_amp_log_c", (float *)rx_amp_log, 1, ofdm_rowsperframe * ofdm_nc * NFRAMES, ofdm_rowsperframe * ofdm_nc * NFRAMES); octave_save_float(fout, "foff_hz_log_c", foff_hz_log, NFRAMES, 1, 1); octave_save_int(fout, "timing_est_log_c", timing_est_log, NFRAMES, 1); octave_save_int(fout, "timing_valid_log_c", timing_valid_log, NFRAMES, 1); octave_save_float(fout, "timing_mx_log_c", timing_mx_log, NFRAMES, 1, 1); octave_save_float(fout, "coarse_foff_est_hz_log_c", coarse_foff_est_hz_log, NFRAMES, 1, 1); octave_save_int(fout, "sample_point_log_c", sample_point_log, NFRAMES, 1); octave_save_complex(fout, "rx_np_log_c", (COMP *)rx_np_log, 1, ofdm_rowsperframe * ofdm_nc * NFRAMES, ofdm_rowsperframe * ofdm_nc * NFRAMES); octave_save_int(fout, "rx_bits_log_c", rx_bits_log, 1, ofdm_bitsperframe * NFRAMES); octave_save_float(fout, "symbol_likelihood_log_c", symbol_likelihood_log, (CODED_BITSPERFRAME / ofdm_bps) * (1 << ofdm_bps) * NFRAMES, 1, 1); octave_save_float(fout, "bit_likelihood_log_c", bit_likelihood_log, CODED_BITSPERFRAME * NFRAMES, 1, 1); octave_save_int(fout, "detected_data_log_c", detected_data_log, 1, CODED_BITSPERFRAME * NFRAMES); octave_save_float(fout, "snr_log_c", snr_log, NFRAMES, 1, 1); octave_save_float(fout, "mean_amp_log_c", mean_amp_log, NFRAMES, 1, 1); fclose(fout); #ifdef TESTING_FILE fclose(fin); #endif ofdm_destroy(ofdm); return 0; } codec2-1.2.0/unittest/tofdm_acq.c000066400000000000000000000055731445607075400166570ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: tofdm_acq.c AUTHORS.....: David Rowe DATE CREATED: Mar 2021 Tests for the acquistion (sync) parts of the C version of the OFDM modem. This program outputs a file of Octave vectors that are loaded and automatically tested against the Octave version of the modem by the Octave script tofdm_acq.m \*---------------------------------------------------------------------------*/ #include #include #include #include #include #include #include "codec2_ofdm.h" #include "octave.h" #include "ofdm_internal.h" #define MAX_FRAMES 500 int main(int argc, char *argv[]) { struct OFDM *ofdm; struct OFDM_CONFIG ofdm_config; ofdm_init_mode("datac0", &ofdm_config); ofdm = ofdm_create(&ofdm_config); ofdm->data_mode = "burst"; ofdm->verbose = 2; ofdm->timing_mx_thresh = 0.15; ofdm->postambledetectoren = 1; assert(ofdm != NULL); int nin = ofdm_get_nin(ofdm); int rxbufst = ofdm->rxbufst; FILE *fin = fopen(argv[1], "rb"); assert(fin != NULL); short rx_scaled[ofdm_get_max_samples_per_frame(ofdm)]; int f = 0; float timing_mx_log[MAX_FRAMES]; int ct_est_log[MAX_FRAMES]; float foff_est_log[MAX_FRAMES]; int timing_valid_log[MAX_FRAMES]; int nin_log[MAX_FRAMES]; while (fread(rx_scaled, sizeof(short), nin, fin) == nin) { fprintf(stderr, "%3d ", f); ofdm_sync_search_shorts(ofdm, rx_scaled, ofdm->amp_scale / 2.0f); if (f < MAX_FRAMES) { timing_mx_log[f] = ofdm->timing_mx; ct_est_log[f] = ofdm->ct_est; foff_est_log[f] = ofdm->foff_est_hz; timing_valid_log[f] = ofdm->timing_valid; nin_log[f] = ofdm->nin; } f++; // reset these to defaults, as they get modified when timing_valid asserted ofdm->nin = nin; ofdm->rxbufst = rxbufst; } fclose(fin); /*---------------------------------------------------------*\ Dump logs to Octave file for evaluation by tofdm_acq.m Octave script \*---------------------------------------------------------*/ FILE *fout = fopen("tofdm_acq_out.txt", "wt"); assert(fout != NULL); fprintf(fout, "# Created by tofdm_acq.c\n"); octave_save_complex(fout, "tx_preamble_c", (COMP *)ofdm->tx_preamble, 1, ofdm->samplesperframe, ofdm->samplesperframe); octave_save_complex(fout, "tx_postamble_c", (COMP *)ofdm->tx_postamble, 1, ofdm->samplesperframe, ofdm->samplesperframe); octave_save_float(fout, "timing_mx_log_c", timing_mx_log, 1, f, f); octave_save_float(fout, "foff_est_log_c", foff_est_log, 1, f, f); octave_save_int(fout, "ct_est_log_c", ct_est_log, 1, f); octave_save_int(fout, "timing_valid_log_c", timing_valid_log, 1, f); octave_save_int(fout, "nin_log_c", nin_log, 1, f); fclose(fout); ofdm_destroy(ofdm); return 0; } codec2-1.2.0/unittest/tqam16.c000066400000000000000000000020361445607075400160220ustar00rootroot00000000000000/*---------------------------------------------------------------------------*\ FILE........: tqam16.c AUTHOR......: David Rowe DATE CREATED: August 2020 Simple sanity check for QAM16 symbol mapping. \*---------------------------------------------------------------------------*/ #include #include #include "ofdm_internal.h" int main(void) { int c; for (c = 0; c < 16; c++) { int tx_bits[4], rx_bits[4]; for (int i = 0; i < 4; i++) tx_bits[i] = (c >> (3 - i)) & 0x1; complex float symbol = qam16_mod(tx_bits); qam16_demod(symbol, rx_bits); if (memcmp(tx_bits, rx_bits, 4)) { fprintf(stderr, "FAIL on %d!\ntx_bits: ", c); for (int i = 0; i < 4; i++) fprintf(stderr, "%d ", tx_bits[i]); fprintf(stderr, "%f %f\nrx_bits: ", creal(symbol), cimag(symbol)); for (int i = 0; i < 4; i++) fprintf(stderr, "%d ", rx_bits[i]); fprintf(stderr, "%f %f\n", creal(symbol), cimag(symbol)); return 1; } } fprintf(stderr, "%d tested OK...\nPASS!\n", c); return 0; } codec2-1.2.0/unittest/tquisk_filter.c000066400000000000000000000021421445607075400175740ustar00rootroot00000000000000/* tquisk_filter.c Unit test for complex band pass filters in src/filter.c cd codec2/build_linux ./misc/mksine - 1500 2 | unittest/tquisk_filter | aplay By adjusting the frequency you can audibly test filter response. */ #include #include #include #include #include "filter.h" #include "filter_coef.h" #define N 159 /* processing buffer size (odd number deliberate) */ #define CENTRE 1500.0 #define FS 8000.0 int main() { short buf_short[N]; complex float buf[N]; struct quisk_cfFilter *bpf; int i; bpf = malloc(sizeof(struct quisk_cfFilter)); assert(bpf != NULL); quisk_filt_cfInit(bpf, filtP200S400, sizeof(filtP200S400) / sizeof(float)); quisk_cfTune(bpf, CENTRE / FS); while (fread(buf_short, sizeof(short), N, stdin) == N) { for (i = 0; i < N; i++) buf[i] = buf_short[i]; quisk_ccfFilter(buf, buf, N, bpf); /* we only output the real part in this test */ for (i = 0; i < N; i++) buf_short[i] = creal(buf[i]); fwrite(buf_short, sizeof(short), N, stdout); } quisk_filt_destroy(bpf); free(bpf); return 0; } codec2-1.2.0/unittest/tvq_mbest.c000066400000000000000000000016371445607075400167230ustar00rootroot00000000000000/* tvq_mbest.c David Rowe Dec 2019 Generate some test vectors to exercise misc/vq_mbest.c */ #include #include #include void write_float_file(char fn[], float *values, int n) { FILE *f = fopen(fn, "wb"); assert(f != NULL); assert(fwrite(values, sizeof(float), n, f) == n); fclose(f); } int main(void) { /* we're only interested in searching the inner 2 values, outer elements should be ignored */ float target[] = {0.0, 1.0, 1.0, 0.0}; write_float_file("target.f32", target, 4); float vq1[] = { 1.0, 0.9, 0.9, 1.0, /* this will be a better match on first stage */ 2.0, 0.8, 0.8, 2.0}; /* but after second stage should choose this */ write_float_file("vq1.f32", vq1, 8); float vq2[] = {10.0, 0.3, 0.3, 10.0, 20.0, 0.2, 0.2, 20.0}; /* 0.8+0.2 == 1.0 so best 2nd stage entry */ write_float_file("vq2.f32", vq2, 8); return 0; } codec2-1.2.0/unittest/vq_mbest.c000066400000000000000000000225301445607075400165320ustar00rootroot00000000000000/* vq_mbest.c David Rowe Dec 2019 Utility to perform a mbest VQ search on vectors from stdin, sending quantised vectors to stdout. */ #include #include #include #include #include #include #include #include "mbest.h" #define MAX_K 20 #define MAX_ENTRIES 4096 #define MAX_STAGES 5 void quant_mbest(float vec_out[], int indexes[], float vec_in[], int num_stages, float vqw[], float vq[], int m[], int k, int mbest_survivors); int verbose = 0; int main(int argc, char *argv[]) { float vq[MAX_STAGES * MAX_K * MAX_ENTRIES]; float vqw[MAX_STAGES * MAX_K * MAX_ENTRIES]; int m[MAX_STAGES]; int k = 0, mbest_survivors = 1, num_stages = 0; char fnames[256], fn[256], *comma, *p; FILE *fq; float lower = -1E32; int st = -1; int en = -1; int num = INT_MAX; int output_vec_usage = 0; int o = 0; int opt_idx = 0; while (o != -1) { static struct option long_opts[] = {{"k", required_argument, 0, 'k'}, {"quant", required_argument, 0, 'q'}, {"mbest", required_argument, 0, 'm'}, {"lower", required_argument, 0, 'l'}, {"verbose", required_argument, 0, 'v'}, {"st", required_argument, 0, 't'}, {"en", required_argument, 0, 'e'}, {"num", required_argument, 0, 'n'}, {"vec_usage", no_argument, 0, 'u'}, {0, 0, 0, 0}}; o = getopt_long(argc, argv, "hk:q:m:vt:e:n:u", long_opts, &opt_idx); switch (o) { case 'k': k = atoi(optarg); assert(k <= MAX_K); break; case 'q': /* load up list of comma delimited file names */ strcpy(fnames, optarg); p = fnames; num_stages = 0; do { assert(num_stages < MAX_STAGES); strcpy(fn, p); comma = strchr(fn, ','); if (comma) { *comma = 0; p = comma + 1; } /* load quantiser file */ fprintf(stderr, "stage: %d loading %s ... ", num_stages, fn); fq = fopen(fn, "rb"); if (fq == NULL) { fprintf(stderr, "Couldn't open: %s\n", fn); exit(1); } /* count how many entries m of dimension k are in this VQ file */ m[num_stages] = 0; float dummy[k]; while (fread(dummy, sizeof(float), k, fq) == (size_t)k) m[num_stages]++; assert(m[num_stages] <= MAX_ENTRIES); fprintf(stderr, "%d entries of vectors width %d\n", m[num_stages], k); /* now load VQ into memory */ rewind(fq); int rd = fread(&vq[num_stages * k * MAX_ENTRIES], sizeof(float), m[num_stages] * k, fq); assert(rd == m[num_stages] * k); num_stages++; fclose(fq); } while (comma); break; case 'm': mbest_survivors = atoi(optarg); fprintf(stderr, "mbest_survivors = %d\n", mbest_survivors); break; case 'n': num = atoi(optarg); break; case 'l': lower = atof(optarg); break; case 't': st = atoi(optarg); break; case 'e': en = atoi(optarg); break; case 'u': output_vec_usage = 1; break; case 'v': verbose = 1; break; help: fprintf(stderr, "\n"); fprintf(stderr, "usage: %s -k dimension -q vq1.f32,vq2.f32,.... [Options]\n", argv[0]); fprintf(stderr, "\n"); fprintf(stderr, "input vectors on stdin, output quantised vectors on stdout\n"); fprintf(stderr, "\n"); fprintf(stderr, "--lower lowermeanLimit Only count vectors with average " "above this level in distortion calculations\n"); fprintf(stderr, "--mbest N number of survivors at each stage, " "set to 0 for standard VQ search\n"); fprintf(stderr, "--st Kst start vector element for error " "calculation (default 0)\n"); fprintf(stderr, "--en Ken end vector element for error " "calculation (default K-1)\n"); fprintf(stderr, "--num numToProcess number of vectors to quantise " "(default to EOF)\n"); fprintf(stderr, "--vec_usage Output a record of how many times " "each vector is used\n"); fprintf(stderr, "-v Verbose\n"); exit(1); } } if ((num_stages == 0) || (k == 0)) goto help; /* default to measuring error on entire vector */ if (st == -1) st = 0; if (en == -1) en = k - 1; float w[k]; for (int i = 0; i < st; i++) w[i] = 0.0; for (int i = st; i <= en; i++) w[i] = 1.0; for (int i = en + 1; i < k; i++) w[i] = 0.0; /* apply weighting to codebook (rather than in search) */ memcpy(vqw, vq, sizeof(vq)); for (int s = 0; s < num_stages; s++) { mbest_precompute_weight(&vqw[s * k * MAX_ENTRIES], w, k, m[s]); } int indexes[num_stages], nvecs = 0; int vec_usage[m[0]]; for (int i = 0; i < m[0]; i++) vec_usage[i] = 0; float target[k], quantised[k]; float sqe = 0.0; while (fread(&target, sizeof(float), k, stdin) && (nvecs < num)) { for (int i = 0; i < k; i++) target[i] *= w[i]; int dont_count = 0; /* optional clamping to lower limit or mean */ float mean = 0.0; for (int i = 0; i < k; i++) mean += target[i]; mean /= k; float difference = mean - lower; if (difference < 0.0) { /* bring target up to lower clamping limit */ for (int i = 0; i < k; i++) target[i] += -difference; dont_count = 1; } quant_mbest(quantised, indexes, target, num_stages, vqw, vq, m, k, mbest_survivors); if (dont_count == 0) { for (int i = st; i <= en; i++) sqe += pow(target[i] - quantised[i], 2.0); } fwrite(&quantised, sizeof(float), k, stdout); nvecs++; // count number f time each vector is used (just for first stage) vec_usage[indexes[0]]++; } fprintf(stderr, "MSE: %4.2f\n", sqe / (nvecs * (en - st + 1))); if (output_vec_usage) { for (int i = 0; i < m[0]; i++) fprintf(stderr, "%d\n", vec_usage[i]); } return 0; } // print vector debug function void pv(char s[], float v[], int k) { int i; if (verbose) { fprintf(stderr, "%s", s); for (i = 0; i < k; i++) fprintf(stderr, "%4.2f ", v[i]); fprintf(stderr, "\n"); } } // mbest algorithm version, backported from LPCNet/src void quant_mbest(float vec_out[], int indexes[], float vec_in[], int num_stages, float vqw[], float vq[], int m[], int k, int mbest_survivors) { float err[k], se1; int i, j, s, s1, ind; struct MBEST *mbest_stage[num_stages]; int index[num_stages]; float target[k]; for (i = 0; i < num_stages; i++) { mbest_stage[i] = mbest_create(mbest_survivors); index[i] = 0; } se1 = 0.0; for (i = 0; i < k; i++) { err[i] = vec_in[i]; se1 += err[i] * err[i]; } se1 /= k; /* now quantise err[] using multi-stage mbest search, preserving mbest_survivors at each stage */ mbest_search(vqw, err, k, m[0], mbest_stage[0], index); if (verbose) mbest_print("Stage 1:", mbest_stage[0]); for (s = 1; s < num_stages; s++) { /* for each candidate in previous stage, try to find best vector in next * stage */ for (j = 0; j < mbest_survivors; j++) { /* indexes that lead us this far */ for (s1 = 0; s1 < s; s1++) { index[s1 + 1] = mbest_stage[s - 1]->list[j].index[s1]; } /* target is residual err[] vector given path to this candidate */ for (i = 0; i < k; i++) target[i] = err[i]; for (s1 = 0; s1 < s; s1++) { ind = index[s - s1]; if (verbose) fprintf(stderr, " s: %d s1: %d s-s1: %d ind: %d\n", s, s1, s - s1, ind); for (i = 0; i < k; i++) { target[i] -= vqw[s1 * k * MAX_ENTRIES + ind * k + i]; } } pv(" target: ", target, k); mbest_search(&vqw[s * k * MAX_ENTRIES], target, k, m[s], mbest_stage[s], index); } char str[80]; sprintf(str, "Stage %d:", s + 1); if (verbose) mbest_print(str, mbest_stage[s]); } for (s = 0; s < num_stages; s++) { indexes[s] = mbest_stage[num_stages - 1]->list[0].index[num_stages - 1 - s]; } /* OK put it all back together using best survivor */ for (i = 0; i < k; i++) vec_out[i] = 0.0; for (s = 0; s < num_stages; s++) { int ind = indexes[s]; float se2 = 0.0; for (i = 0; i < k; i++) { err[i] -= vqw[s * k * MAX_ENTRIES + ind * k + i]; vec_out[i] += vq[s * k * MAX_ENTRIES + ind * k + i]; se2 += err[i] * err[i]; } se2 /= k; pv(" err: ", err, k); if (verbose) fprintf(stderr, " se2: %f\n", se2); } pv(" vec_out: ", vec_out, k); pv("\n vec_in: ", vec_in, k); pv(" vec_out: ", vec_out, k); pv(" err: ", err, k); if (verbose) fprintf(stderr, " se1: %f\n", se1); for (i = 0; i < num_stages; i++) mbest_destroy(mbest_stage[i]); } codec2-1.2.0/wav/000077500000000000000000000000001445607075400134625ustar00rootroot00000000000000codec2-1.2.0/wav/david4.wav000066400000000000000000016514541445607075400153740ustar00rootroot00000000000000RIFF$SWAVEfmt @>dataSe. }VG  X(@KٝE"^o Df]"q*N@zwM C#'y O " A /%}U )]/H(/x r7q e#Wc4)}8~!$ 1W  l\r 3&8&-w #d-A S @"G2$/ i$rP R Xa`"15 #; Xvj $Rɚ VwwQ!Z٬b j  _6x/4L+HbKb% ]Ev o ;*lO "  oHhj|i64< ͋ UJI>iFl#ox8._]}3S3aۿR)! vޯ tK?xA Tl Ws B4Q },)Ԝ] w u# VD%;d+Ts-g|DT_1VL ( ^rsx9'<֮I}  -9V(ry\%x0?NrQ-Clw'_ ޳A_v/ VC'Uי%T n < &gv9+ oT, dl])BiX\# ^"a"U3q  g<qdq\/!4{d9ܿ8.}&V bTIm) p   hE_X'(K R* t`7,n s%{g 0 d /%x^ S b$-$BT*Uءt -l] uK9, 0/~Q%7D )vU2,![xP9 qv}"z^  0# h,zXj'0+b )eh^ ${ 4 oOs Z UDN+("Ah'X l>fMJ#^ !ݶ̝9! Fי " 5ZVj;e\:L٠]'G)yɄvPs1RV Ӗ‰+H `H$+.~KG$9##\ *fx-y֞'%ܔZ M7,D0"\@dw1 @ A &+kmU8J4N?q2TC+T%= X- H@xu Rи&n%10`m   YZ  sM 02G/5< :.0$Y5VN`e.+$E''qXS bx}C&JV)&%g5'= e$.rF% +^*eۤ!$V p)2[lSE I: E33/'L=  I3b"1"k C>"* j6 )b C?j xb y [Vh9-1ee^H3C2'TL**/  @q1x x)݃7PA|;  gD9[J!2c t)ЫԀ'0v5 l[#2!bp'rV]L. -uC^7r ML i< 4 *mX  `,A`&'QSrm 0QπV @$ Y  qYt T r 3* (Y0 4)Db4]:oO x:4#Υ#.@k  'ih5r0h_f95\f]z{4iڌel)]Bݾc  } 0=1 !KT5Qc$9g wp9`. %1 ] } ( uJ BsM ;5]U&~&*r 1 ~kE c5ߗf [;|$m-έB$Jm`O*,`$ u!2#E *5 MT "zW޹IU86; :G~c Woh-9Ru U]# %)2 AkA rdb/ $tۛF!E<   i/"[ r7|P.N; 9OQ`$f `I yu{;Ǔ) i%0 zzPfD?pyD7t-]G_ۀ&("t`  A5]ܑ6 ZD 6Xi 1'8 G? d=P")v$==F z!?Eގ>'ܨ<   +Afʹݍ3`W g hm-؃ 0 N&$ x7ڕ4!߾@e ,شz 4qz-[")r_ vB RC$AP^; 38"2 <.'?3:/x >x0k  8[ %J4da)"/ޣn yx Bdl]"Q3 `T My L) )Ϝ~=44S ήؔ"jh x0g"zGW#,0 E _Zv F)Leɷ|  @ OFv"NmSOL{ٞO!h#mR56(|{  kyX&!Y/rĀΤ u >83o 4 's! 6=&6/!z w-0Hu  \#5@}}2 "wQq c n?v"ݞ+!m5 A +`ݨ W f [O_* Px|Tu(2)BL G(6W?' Zpߡ4,fݭ{`$eU ے- P)   Ie2X ] 3(JsSyWU Wg%Z6Bdʵ, 9 gq "0 ]- .'G &/ Z}&*[M D 5>) 3 &#^R= G; %[^m*w g:  `  !|k hw!8)C@ Y2(' ڻ.#& r= c,D@(*c>$C# ؑۘQc0#'x;~d1zG1,h,~<kBuWMrW B3 VE}L 6o{! pO!K $K3 L>\} y~4jZw h %` s' [/&U 3v%s7 g}>@` l>wZ$^C@ylq E/>Z9,+ W <*/x؜r /=@ Tc Zj:#-F#Z Y"2*1 e/VW/]3(K'3 (aPu Jg,%r8: ?ٸp| ?lF zQ +#q% v G%b'#0 )'I#ż$[ea 3#G uu 8 T-*/m*ϖ  Uh_ DB,ݹY1 ?mX.q{n3 N!8/T{ p1u qA[ X5R84N2 i_7HѶ -ɽ}/ B( qE_Ry{% D_` |ޜ,"8(3jR'SyDhTFNk g7L 2d2i=" lLGK2} iB ;HDh`" QE ڟω(~բ|%m,)_af١2]'y#4`η#71G{ P4C$B1L 5 ~1 KވB47U,"uB-0 4o.  \mkG0.Rx s?.  i/e R"0 ~ ZZdyx c  m#X.w٬7к  Q.g2#96Eۙ s} 3wy55%a=Ú 0 ]{ z  ,]HX.P7e X %L^{ /d'=w7݊a ,,Odo-#;2 q,5"CF2di?c0k_: *h :5:  snfk z L  $u M  @^ N; "9/ 8$r&'x*xb^&))4c.7"P'wɧdUtf$Yu#`*2)vc*;XZ֗>%Н  ^ `!"Y9< rY 7'@. $E  JAu& ^v3+('"h  m;T  8Yt X|##G &z1 TZWl%Im):B(  qYOF=@N ;Ok&!}=_ I-xtu0V= 2Yռcs}  LVd-B%  _؝-^%HgU) "`iQ1"OeEq\\I- CU t >O\)qVTm1BH.Ml!@IQѣ+"'{D0d)u"d}2-P0/1߻?KSV^ 8@}O d$0=-=/Cqx 4" T Q!ׯӖn  'isc6zZ C" A]T_uz_;Tn-^ {kv1)r) %] S-Igao<2 3e4  Y*_e o]D0A(RLwk6$" F 8g٧ӎ T[ 0DCe ]k7c f~kp h5 zv _-'֩ m-L"%l},t+:`,lM !:YʿkHGc9 cF oi|L׃*(<SMG#r$/O) @>\,$ 7] oy n t8} R6Y ~)%&Z}P$ 1CM8)wϭ) Zfٟ' /NЈ! E]~ xOW27"L ~ N$52M!ߢd !83q$ݿ *=tB'P/k8 Pz;%7 I ejJ At$Q /<  9O=+? ;%2Xߚ<s-Y]sq K j V7^'r$ʵ @ LXh@)X& . Q  aK]I ,cT r. @.@*s B@ݥ P vtJ? Q 2Hߘߒx .f 0 :kg '7^;(*J(\]n- % :"fO), 'f\tk- =2c5@u@w| 3  SAi`o6ng5E-"k8_$q I  Qg/}L5( U0 Z k "'Ty5Y&6 !,%? $01 RI*   3z}b@M"+ U<SZd]d *T +~r ?3th w 0'l <kC7N3um VP1# +*R ߲,^Uq8%ݥ  H t | I2b$߯9 p9 !z.!x4 k,/@ %e%A'[   q%:l, m4 /m}#V!Um * ,YP/PXZ 7S"f  21P  w޾p| ]9؈(L a Q YsGILސ& H/7cw 2 Jg"!@ݒV xV cXi5 c o?ԯ-T8\H7v %i]Lv!LոB O;O o (!Wp/I" o[$$q֋%K~V'f%75()3` YPL^ 5 7z3? 9 ,`p F )+ z> h A= uT'} LR{~ =S'5fM 3A 9ngi /N{Rg"+\N7 $m n4dalR9=V%WWM3 [J L>_U )  8x,ބN Xx' A N YP|4 ^wL =!A? z2 ,H c-0 Ѷ 2z]r)t6RF*0B8>1 )u r  AQWA  jO4R ldW !b$d? {@&"٧ X:,{Bޱ=)$F XV %s(K 0 z:>lM%% F FM4gu q@. 4 OҨ1i  l~C IA v,Gv& oI ep7jڎ "51/<+'A1-& 7= Qd |jD'( gA| 5m Fsq 2Z:Uړ.r b&y*Y\%^w ]!CڎZ '} *7 $ ]++l0P6F* EW "!\ Oي`rV $./ !Q Y6S!2h\V$m-b0IO4-]C "{p@m? l=Y8y&~ c/R7U  =pG  Qs+T$ sٮ l-(ýc2d2$ X? Y:vA ^6r ]  C& WIݠ @*қR+kJ6 f67*aqc2, =5(;U#F 8# FܔےmRR86Pz+ OU A  Ktd &?  }!.&U/UY2 'G yAhQe[Qc WB\ AN Uc'brs { P2+_',?=s2[aF 6n #h1 7]-G 9m L ~bO 5VkL );"" !S ! IH\Z \ p& `BbHh8+~Kva"B9H #l3 ]Yf e.$j 09 ?h} 92 $B!Ζ4 JB( U+!Lό 4 MK8  t$|Zc*%W!a, | jE&#"M&q;lue:ָYK !Wߋ,TM)4&K/ DA } A& 2g6>l%7 ,VҢY0"x> I7% 8 cVx  f ?,M+Re2#۫N_ 0ڈ* C 2^V *# $U "7@O7d 6 \CZ*$p$n t$p. .ڎ۳d(o"(8_ 9 AR)jE!C6R;  ?%O,$z'a yk e1 b,2?&n-~h  Z!L0WHZ-yrX >)5, 8+T6Ǔ+I4 O_Z} +m4'k([2!IL۸3;m0QaN!p%9{&}XXQB*ys b M yUU?\!"3q!m} v f \, ":LUݗJ y8!'ޟ-< Kmh F 7ߴ xW7љ nܰMԺpj@R cX $)[˃"[{PpqO^Χ Z&9,%&x  zbb_.m-m "A 9'&JoO;L%$|6 ?> - +-!d7ZBg&Eu& @03E[1>7-t+ |+2؛ǘW ! xJx(dr qE*H2cy_J [A R9)6I ?! % (, xy/ȫX2# &6^'X'+r&Zf{Ka( w r2:~da,5h &  +qٔ;1-(+҆_%2u՛a!57K "DSDjh" 5> @je 6v4#BCDm~Q29&^_\T  , ?8݉5'>)> R N/(js LxP! nB kۆ( 9F)εC: K*:  #ZKvJ9 F) -g{(ޒ#jAw Sc (F*C *nYiDaVn Q vڋ,5= ~aY C 3 nN!  !3, 1f(yWF"_ / c . G&<=c&.q RuTh!jj%+ z[2=A[3F q'Ogg(mqN&]X{;[3!&X֏2 ^'D}jnlcO#I@3z O uZ?3W w)<՝#4^$/qٓZ= Yc'Wn5ZCCaI)}b F |{%@3%O8 tqqI4ڧ(7T$LY1//8d"f  ,B߉4.x^|"? Se& 1(OpR *!*/VQ*%Q  2vV"abcW+u#cfݬ/-9- X.,?f C#)׺ya*+ xn2J@I\F*# 7)h {N+F{ 9 T&Q ,&,yx+Kwhj"H$= k9z>! 4/YIۙ RAh. dJ6 ԟ5h r$7V fzSz) g(J~ND O1DFp` 6 gdA 1" #- .tmfgn2k". n%mw!'suhWd%,~ P0q3w'SO?ݢXcmKk*7DRK p()773VbQ/OZ^T4l6!B" 8Mc' \*"n$LyT WP6ס+<%ҕ+,  bxX~b&~@}7Nߓ/y uc1 yb !(:S#sW3j 40{LPw\cHEp';ɡަ G&F-,WH- 8` )f+c,L6} O ;'Rիp)j[x8$  D $-.q*I$l]b +-ٔ ]0< i`S  t =5 m JFe*Йs x i`jy/ q J2+/wɣ0 u$ؓW T\51408:xQ.] gZ E6~-ؽϣJ+gYax!xXߐشV#YPN[J 'C p}; /  # c3=%1$ -I If. G h>~ 1 dbF " M u ix{!~;{!#7#SH|nn"  NP%}"\W 7= a_.#p 4;ҿބt& .  8 t}6 rV: ^uqZMC  V}% @KVH<5\" . 2$5 Qk 93) BT4 {f] z Es+J0;O0Zs_~V:  s Qqn+=[]"  aew(} X; `vU x{a,"N+ C}:MIk|) b;dE qro=M&.$hs@o `&3 Lڠ1qM}/.ud,Kv vDV %x &2\ v l  %7 @"dcRnG$JAb  RU 0"-S;&p /J~ RpY(׊=AUI~1/؅Ĝ'S*&_ H}UI(* omo k^ݦKDJYE\ V*:\  /;,m|u 6Zc : -+c'*@|> : ,ځ5#" g IjZnC<-\)U , (Hv9<s{$O?3L 7|8xgF q*k  @1rK#U t܅"B8J8`#e _y4!Vb}b0B2} %3j  hMoRV4Sn bts 9/ߣ\P^@qN "&P"D@: | Z- 1C&+K<I-#j$ LCS+F֯v B M d$]&@U* m 2@~ j  7u.4q0A# n0cX c^_x` qE! ,Dv "W_I $B ,Q4zH] { 6l E*/w, k;(z/"1c9F* W>l.BvUּgsJ] t0 Ykމ7$s >  Chk O S^nO,e^r ωt#iD7! &>_@ +_bb (a{!~HyZ"=t{Y TW4Id ˚$6 B *u(P) a]t+ '?܅kXf   EU WQ | jxo#-(fȒ٘"4wA=R38l#`"RSoAan6 xD* h!S- -cZ{^ 4D6E,z`Z[ n R6E#) "%GUqXw6 x4'! |K!  [nH @zQ' 7U}* 8*]П- Eb"W>'''YNF jA, ч  ayVK`(u8/u9a<U\yL(:f{2 4[#%X% 84&o*)$H"LB݈8fW ++.~'0#Lcd B0#  i: -  b1G?pu #\ DHoЍ %:Lc~k-Ғ_LHk i=Vq+Z49}tmN8$ d1ojP, b Ql& ^(갷A xwZ+ ';=ܸ lq3i BB wj8 j D|Յ y$2bpsՊ='; X,L; pfP:r r C  &oiKSx[aگ 5 sW&@a,(tf :Y6 . e ]16>h.d;+^M `  % a "f] " NP-VY% IqYP 3v kW!Ri٨ VSf mnu3X r1IA?ܩ]h_"  2~ dl&(2&-: N ;asC)dP4 +kX Z" .BdV4 4G**r̳*)  ,Tx#D u0s>']",40BE&> ($iT6<#'˼T&Ngܣ%X_r% N38$&+spG2"/) ZRXI[%$/5)Nv a u 1.0[Mq ) JZ} K6"-zݜE c.Ў`C@4E `$(Z"k9K  :a] $g!4kl 7ӱމ  {P l r#Y# D>!&(2 ' qe']& J'=Xv4 4 #c 7/K>*V1V&>\_  ( ] %\Ys c||*8ޫr8rY*&p8Jg\Tx?aNu=g3+і&Bp (u }M{2G[)Mf\BΩG)( h8[7;&7/1pX2!;%҂!4KCGE kO\({djz _K wdc z:<J<@'ut%O5f&&m/}+ \R - ?z_&< ءۉ {' A=zg X&T eNIG!bGxgv6c m b~@+dlw!\ߙ>&*7-=j5&$ ^(9"]( )A X_@&fr rJ`:^ p%gr0I1!b F@;{)%w1W{{%s} | A D( )'۞  0>ܻ3*fT/t8Pq J*s`"C2*oM" Ҍ\I7HOz3*bLfp[=C.4 A I:aA2!5{s: #T%^.d(A5E- Rֈ s  bgƃ' (ؾ=:(2R &!+%7X[\2[0/.MbTK6 R r<'{8   ozkbxgxC^H_p%w D [> KYnkIPzq2[{` L8L3%h"ܙ/ &8qNx+ O%-#  hS ]b ޴c[ (#{7X9+xsh*3WKKmT~!I >K#ZW=H]J^_ 81`H% e ߅ QR E `1s pX\ ^m a= O 3#%< ySM e%{ u5   c 4s41N ox,"|.a'f~7Ћ k:g4!DB5 y<q)M 6X0 )2ߛ} j a7~q [kdrV12mL .! XTkh%^n N e{N5߭"yCN  ~ 0JB;l*\P"P\l _<bHX#p *z[L!z>* !  %@'K0+*z!Ah >ٯ6=(! jy'P0ED#5 ٌ8 M M TGt[ RBlzS3 ^ [jOEJ  R2l bVL Ec7= &3kQVC 6f` LA0&G 1_em>` l5{)A=UXX}Y UV u,XGC7 e+%^ZvUNo g8 SB7ibH;G[QT ap';YN|3͖'6#^y<]~}O@R(7ވǡ}0nT7%1g] &/4 PdLh#fV-hgR,%S G $R & 6-$+-}OSjǞ'mwUw3=v Jx lCi,l1Ql jc$, =V+Fۺ+ | b, Vw sW 2E ;b!r4!K2,+37"M#D : bJ7i $6g{3ZxC% 5DfN +zi-A 0 VșM-0s(V9R8@*] 3lx i7Vz'0S ,9By r>vtD+_f&c3ݴ- BV 9 @& (a jp =4C;.|,i޼5#" ! 8b(uҀp #&@BvI\Ot(?~G 'N ' `<Y vzz,_8e\|M M j ^'Yi zlN+,1`CMJ Z "1 p> -4ܫ#0 g)#YM`up B&t:PU,Z.=#Wu  o'QߩFLti3T)"((%4hKtSO v)5+[ݧ T-cy> ,g 7>(p x /)r$vf @{U</#~w#oV) ,I-Gb8\L.5" P $hKD 1igCOUc 9v\bPm9%'"]=';N*oF) 2/p^)G1 > X"# )n##?q Nf7+:Ԟv1\c2$cڂM0  Z  #.+ ` Fw }v 7s [DsAG(=WzL1Z Eju !״=. &y>*'#rl T%5*3!A c}M yLb M)HoS:MZv6' O x(I_aPJ 2 ("#], \T3++U3,)le [ g w)i_ L6 7 Jv*VSOQx Q?R,HLj@&]z@#u#;{@]Vs'&(Y3;$ US4FUD"Q eb qʍ. ! D (.pi  ' _:o 0ptsA+3"K |EM mY1 / s$}]e_D}B#Z\q'B+2$_ Hey<T!B+#7Z=> ?&&%M[! v k}.ݦ6)[2O Eɸ5Rϲc-a LnP#| Oa+ Iҹ:Z *o% >V ;gi Y'9lFG  ,Ԝ~ !0-S * W[Tos ̛ mF> ]P< /$חݍ(8# @S:V"3 C'0%e DtQ< xD IS x g ; VߠSr }:$:!0|m4|7~;# 4$W#JXcEZ( "3aM=-tkX_' \3'= G#2  k _<&.< P>)]A% l#Y\^ 524'V s<4!""6v@*!855LtU ? >K*p|Lx3_ Z2(coPo| #9̎"se_. g5J$ !"dj*_508y aI@k 3 V QXz$vZ{ C>6leaX!J; , /./T Z9 7$&"D; ,A+${Xڢ3@ h[v b<c& ޵اY*$V T*]S,d#-/%C{(` >9F{ $@?$=8m1 :@sU u! T*; 73P[p%!!$HӮJ~. U 0_)ܩ14R*:ǂ p`>8GQCjlh P+:JB0y o1*_.#u& 5@cU= e$ c2e+q\ ^Z nz+E[Z&tZnnVz4-1$. qM:2G՞f+\'J)Gh0F Z Y{/< UQ]nՊ>< st#\j5).J mBTml(9?Q  p"%j  R( q"H]6j, lc ~X t& %S T]ٻo-dc2y58) # rW  ;nN + ] W(rden"^}8e)0n^$eEF &3I( B %n+U2G F/ @~=V+TG)'# V%C[PB SX Wr+2V~k۽6 6k@I)P41h >(]qtSw+}5#vű!$*p= F5 m 2׏ @+ Vΰ9{֖O)4_J- 8׿c16z^*60p hqP`ubJ׽-|. >O<sjo Sh}/q-D$*fem"  rҌD$66QF)0#|i0  - D<Wg .Bl kڀ G 087zK ާ'y5 @׍E Hu Dl}` M4s-sA5Ng  98ߤ ! @IR(D| -G2xˁM_ uMf! 2P9+9.wr *_phLA 7'D@ lEv . DP+\U)w.0ٝ ,. Hfx.j%tCm r`dqڎ<#X h#T+sd"v  )\Lf(w'k $"| u] _ *sm#\" S(u?L^: m5Kk j1 ; [ .{v //DnY 3*6jߟO$_G   {#&$T! z'? ZVؤ  2 b/w I mEV P ^ #> r#U; (2{3:'fNJ+7g")ǘk 9o%ا9 R(|&  Ot F[,I\Y _ e! e' A$T.(Mv(Zz ,8n r߽|+G~KW+ ҋ# %M5xtEk8.>E E &E& j | k oApa-dѨAu9w2H6 - Ah +G('juW[0j#d/ )|D <%^ [ @v%zGGd Ef[ >x0".g(.!$  &47&,9-Mj8Ta Dvkh0*Pn9\C \jc{; *M*{% "Sk.&Sm F@ p#C @.&%tmܤ%%  qOg A m! TdPR1#`)U*eX 6 XZl/# P * ax,k   ݼQh 9+τ$& ؉h{A`A/OV  4qFyJ= %  E 3&>u 4x (~ a 4 &">oku,4 Q. 'A@* wQyc.kP.eҚӇ'5 "!@ {W qY U "YO6 ֐! 3 bUarg7tQ 3 Z]l @G $Ne <2?;- ݉IWu8"^S 01 $- u#Zڴ g!*x}I 4g0Qd G,^bv.*h5)ο@"XSH{J <_*p3E`7'1Z'r#R >$( ZDbHB#!#ĺ "{ /W3<%9%5{ 4qF t\XN4r*)K9 UO %_&Ďh.~<p5w1HL'h*'"x 9O 3xp'oiI uQb2ah7-0 Ua PJV+j.r Y1X8  ˶֍b ufX6Dy'ξn9.dNR ob U*L)լO(rw Ig!* /8 q Ve%Np5Պ 2kr  uFw,v; *!=x[{!#>{ x֪5 X3%b'_!- Pc V {7EIf +l.3aMhE>{i/g he _kX]( tRv f ^m'RCfߞqOxsio7@2"PGPz)֋PLb31.">6):# ]J4f7 / `[jp'*o fZCgX` 0f %/aTs$[ ;20*x Bt+ KEer$ '1&;Tm|pconi]Ki'Kut{W, .cN eH  $ bNl O {#`5 ?p',|/X&TߺU#k&Bg؄T<!+ aqO XB".ߊB$k8 zd ]Y`|;.Ud 9):~:6f,3zfR_F1aHn> 8 M S$5pJ$\ )_6v8J__"ast/4s >I=OH "^% p׋+*{ t߯ JB"b & 72uoPvS03K  *Qs*C]V_[H $ SYwuD\, WY"gPm' #$$!")2  V,oC0#*w j6< 80?@& ma25(ح|S/d> Arch eͫK' ., X 8 b ?4?(Pd cR-Ob#Z/ $n}+ lj: 2Ҭb + (5\k-> ] % 6S < i$Y! f m*SFE ;+b+>9>AmWV@F"#($4y=k.(ϘoZ#q B R*8[ZNI&%YFQ س7' j;s)gSߏj VxB,yNOy (  U?~2g.[ ) tM؟! i (5!%UثJ&&=N*?f w. %2c x?}8 $Bс޵0IDD rwR _e g [?):mܿ/cـkTx.е\&e1C~ x_h yjp ~?t yXʂ U_V E# )ab-KC%!5  `|KL%7 +O3o I%#) 1TR 4`M* VklL1iV  d;` M| 7:+ӞX Cwk&&$ ~\ d C Ix/}ˑa ? *9/B8=M~ 4 S o &7X) r"<ܯcEe Q[/g -] Yt {jL ,I80GN:B -Yu |># X4s XĒ3+$ * sn5g۽ 3r ,kcE|0ݲ>. 6ڵ leA%M 7m %= / 8u V= ^Our,pՀ >Xo \]`)"$7BDp}:&B;0 ](1mK1&o0zJs p o,,B1p jmHPK *)< 'JT; D.c|B OU4- mTwst s +#m ;;ph* Q "\ZO])7x .4G&Z  w,M~KPQ gE @J0\ W7'! cPP -dߞ%0awza6n+4q̣( OQz|N/' 2 mx{_ tI # C 8/r4#*  {@Jv 35ujaa(Gce |3%fm n Z{(1d"ޭ6=L T3$Hq.X!C%dn#sd,!UI1 ,)1 d $. T! *9aT  .(DC ' 61m%J< UΌ0z(  r 2xcט79~!9UHvJ1!r s$O %ʒTo(EV}s LZ)=ի2) c`OO-P159V 0 $ 8  |w V =*( JZ _ [1!U  Z Y:pI''Wp%? c\)W"POІ _00E :6Y|DhEbM;Wk_6Z<ٹ!z 1i<݃ 2gE)exx1k &"9 k3qt~ h!\E WR-K7( rk N (`. 'o BS  vGR%[+Zُ=, K I ot 9 iW7"6 1]J-n; z?|?3 1MxjT *X+ P 1.$?3 ,w Vs& O(~"{h7#.$K? ] a2.'@v#XZ xos niBk1*7im NNP*،L&K =`epNZE&Y &AҎGw 0W&*/55<B$-F PgL4p!8pTVmV nsB&?I  d& x~.mMXhM= 6,?-cO D 7$+K& gQ<o>[y B'D{ c, ]rC';(; 1R !<~.PO ZD.(uGzo!j ] J?% 6m$JQAL> s# @8W6N3"m8koF 4'ATW50qQrV`G5x 8('"`h&dg" 8u  Ji$31. w݂  "#o^e2#r  0xF{@QwBѫ$ hC$"#@"e#o "eC 6[tp_y8( (ߗ'ڴ (?y <}ߤ*&k3"Q&Lin ) #n) ۽S) :X7u&C" 3G YOw1!Uꚽ@ e1)$slӔ EDD C!+7Q z##$f[#> %l2P Ѳl+`";Q6N#3#4 $6$4 y ~ }- X # Xs_rYS B 6, O*$}M ڛ8\$k"WYC'<1 '%% X[m4w | t/8}#(,(LG$ 8&d5-ls? $.R"ة|dm1O Exb9 d'X9ݫB u c,y%`٪RU fU?)O#1w7^yk6g?bM/87v".x?>/(b|c0z%Ҹ`VuU$8W)2/jIǮ3s X$.|!u :s KX lY^*5)6#KrGm  (E,]قZsۗ  - S׾e+ <-, +$2mN{R @D;18 L xB (0rԫf(jHQ<"#he:c 0 B8(]v [@# Z e=g, Ft/#v*P2ߵO# ԏl&i. 4m K3fd7W7o (k&V c 5Ԓf3(=xD _^, c0`%:ϗ.# a+?fC v w ͏e. Eyu $.;)4\:q$1/7(/\e& ! μ-X mI& C}eqqIPo 3(^| F!|21!'j6,> 9>#h+U% 2  DaW1"yEF c2p i UDl6#_vu:%Zݍ$+>5%7 ` 2 BZ ]0]4ZPDЂٸ+B-+Zh ( "7~ D#h_ɽ<". Ҍ(z' ~#fS y);ZA+ ?n/Tv^} k`+-2˷Uk~rN /8z(i e)5 c 1B-5u W &"r{ף6%jS *]![҄(pU F(f" i??zV{(GߑKpMSK0] ~- ) !MD+{7, ]/(l Y,] .w"_ H. _r4y'jhx b9,9%%3߆^ (`&ա$hY_2VK`7S (P C@$ WMbX.'B= '* ܂s~2"o2l"K!LٲFp~c ^@1 MY  { 8;.#ωP48 X |}5qpw #C{%ʴ#!  u^#g)Nyc8&t`ݷI(_zR_)p| - .Yk%J  RUQ Ij! _( ,~ qb ($l -@ v>Z.T}''ic TLrB'^K!<-?+pR!(Z3'!/LLMT Ӂ8h$,w& '֮'5;ۉ. n#'$  { \e/N<0? qI O i-z yR eC - UHq6 D  X'_` r| 0 H' !{mھ< p ~S>*=J]G%LN g{{"({)E- ? N7˚+ 0G%x  jMJV9-S ' &%8 ^NhE( a&FmzTb gm  AM@ R0T#%)L, Y  Oڃ%_mg o\! f( $'ٹ]G >  %UXk}k o%)ԉtK r1\l92.~ ߥ.#w*k{w'd fIzEO>=!T{ wt L1 .Q JїS w*( cn^2*@݂4 ~A YiRb KN5hskBj W_Rovr B'"y|=c  x5jYJf FRl:S/e$!(eln dd91Fd 7A dT O10)ՉӔ]\H, +qI(x*D H5. g,$U1qM#FScŽ%!\'JGI'A1^KLV"x uv} kI% 5 8M(t_Vky py48.P x Q0$,tx97n mmR  tp$" 8i&:  % p54z$PRF#>F u cw~ 'y,J K<)f^$qiE _w#N[?\"Ѽ4 o _A Mi TF v/&Pj[5y /x3\ouّ$mVf!d#o۩zk >%k{v 2aRt.; Z@׋4  Jq,bN4,  H c<] `  Dhd֞C3,'X" | h&.}R+ Yeb 7#2,m v W*) 12 oX^*r׏''><' T(H$7Ŭ&AxPD ~0 d= x_=#[iӑ ߵ{# X\3  7K hP:} , Z1 8 c R+a[ Z52h.|-  "JcΙJ.,FQU),S&.@^ߏʬm& s & E %p$ V !& 8!!) G0 " R4 ^̤ gL/ru)F f.$lR -!3 .4>RU&q; Vܹ 4/&i2g<&!r`$d:a ` NS1|"#DD#>(ޮ0ӗ+ ))2 Iwq;&  d i(6z܎&`~rfF 9n! IG|*Yy=6I . 'm"|([ZYNh[c(xsp &"eؖ  X/k*/+ho5܉ *.K FB?@Z  qNs9f0 LY+G8 & 9l" KFS ^ ):Q$/)Z8 # vyfqРM S/)q Sv !1Q̺<UX^ vymu؃s&': 8 , Мo/ "tf)ɾ3) i }Qzg>%'&0pgqA aC):"g$! jn ,Q0SE),[)t)L#je7E *.zK Xr} Jei= +- ڎZg ц?q.U [#'5@s! r &L2<T2^D?Z_5N [gX9 uݡw?3 pR |6Y3+k3A y,qg;CC/3 lZ4G[ v$UB n? <, ~.7qO!r. *"o>:h d*"*n# < fM($..b3?Nj 6#%YJ9d ts !*e  " w ND 6o,5y_5wR P6mpaQ0"7)s )1 ; 3< "|('%} )')q Z[uD=M%&7d^Da[;dc !i:j i8`5Y q!1C  W : ʂ.Y$E(ܜ.3+"f r"y͜^]1?  < !x[hf6~.h!CZ;D1p!E!G*WӁ0.>XU=W> tn_( P/j! NV}LG ]j $?"J  +-/C_qH AA  QA}30prhx&X, G ; yF L HeԷJ;~<2  jaX%^ a 6 `q2kl x y 8e\t W  .;^ tPhlCA _* \C N_\w x} ;p 0$g7 5^- #uj\&;X. Z/u3}ya#qC_!R!Q+xYK6u M4{0^m#1 i' sb}@A'm} /e" 0+,)m r,b(3m*ן܍R ݥo/@xD- .#et-ZkyW F * 5A-CB: SfW` +o >.!fJ I2Q%%o-!(@"̢,%=. ֢$-|PQ5k Y2 LC {G|Rk \. Dvu+  5'VoԹ pt  ^ 3)(gjQ,7#V I:{6tg :Ee nA{M.! N etR{/9O "HZ .$ C nY܋* G l ! pB;STy*)y" %lQLʩq3!v{ q@ #6HwP^-bhN-N E>8 1j&PjR0$z!M39ٝݥ@""%} ߪ 0@[i  WW,?ފEX& =2׫O p pXَu7 W E 1ݱI l~ b  R\M_./Yl~4 e  L(qd)-w ޳ar|"*8Ӻ!g~d Xi J' cP6\!];Fb *b $fF  #$a~J bSH2 ("i0Wrj3 b #B8C]rqGC_!CJ <OxGE5 W P]чY*E ̰6"ܹ3&)wN$dPF IF / mPVX8܍'/ I< %* O&;&/  GǞs$n/4)N"/3 +)p?+= dVv? p  { Abߒp\5@߳4g Uj+7 e @TH+UJ = "t  H C~A#iFՂ1t'&AKY j ?6z%ޮ+=e311 v wyMT$]2[ o"IJt޸> ם l)>(m" N ?k KQݬlE9 >ĺ5(p0cv .+6 UM au8aY&)`#+B[?nlCO ;iCո U/%)~w8/*Pٜ#?4)mLL [ C_^  ' "O T&R 1$e!Y1$ۋd,3g; _= pI N8'!u p[ *$Z 3u }oyG4 s^ t vKii W/[`r$ %P̈́I7 44i  Jt_& ](c o^L2 m7@tMb/4b";5 >ְP c|/ B=#w #!6w!|&X/,/;|hA_pRS40 ^N)$ H {P۩t#^p  3M"#DP d.4`JVs _^0Lr /4#r r ' t-'ؒXs%SE2& e>' +/ϨH8 |գj<%Dځs 5# /Z;D)g N EzlS(nmC6c#׉ 2_AԆC0`|, I5fWjBPeeB y : oO|8] Rֶm!]צ/NCmK[-i ( ,N> N #h ^U /A7 GH ee6}. &!U !N k 6Z4 y-10m]ܤ-+~D ( :Q n 0gݻ4*T C/[ * FLR2QiݾQO%$(SK {iO,݇+(O> F} 'a0ݞ֦C^u-, ӎo ܷuM@x- @"ձJ &&r\ E' c@# c1S/6 |Hd'd V "tf[ = TmS}D&2-w 3,fb[ +!4$ iޔ>7 xYG hv& ?߈"7<Ǡ!2h < K FM x!CA\C@ IdI q Zmv <@vRCm.Y ݞVNOzE".*W.L >0a)" U7q8u)i9 ]~ 2 #,!K XKLH&@/z0 ^|W -\9O#a T:t=kM(! 6 W ohgٮLZ*":N[|&x 1p0ivK0Y5 f 1 %RS 99Xm`l =b OMU3ac %9ϴ} gXz $(G!R=L a HI (?T,9 YZ6y'hr h { TS :!ܢfv O,vaid A1')up|#/ U1=tΑD" Md>)S#!C+"=?\B; R{Eu+,^%(/+ c#G=/{`| A (?o  p 5 (=?i} a'3 s ^b :$&LJm4 5   4y  e0 7ܵx x$1@6(r#=ڈl\x'S)` E& >M+o 9p=V5[Ru@+u ޟ..~ߺ(xP8ZI{wI$ ۱c)8M'LOٛ0,. X`y9J7`aUh 9u^,d9-45g 1"/J 8yyh{)z`FSC((  /Dq. ""P CS4 vk@jbXF1" JD`S1,e @R Z Z Bʹ^ ;˩=!4hQ)FHWސ\-cBf yE#n S %;-=>= 2r&u) bUc)s ۾$$s ,(%Rw]W9Ei"6 h\ )V=   phc#'4|'ڼ*@-5X; _JդaCh 8+v 4' !3231I 3U>[ EC#s] %z *8Zګ~ T t.NQR|B) SSiXM&/ _#PM  /:P)* %u23]Qeb K}2.!|L'! gڒ-(fGv? W,_ؔ w% g_ (?Y  K W'v{%aD<7:})A'1$ڲaXW,f8;6B ;+  ?ѹ!quR ߠ b]Ƀ gM"A g/`4 5%|iY -}),} $ͨ8 y 619C B p-X %! Mؑe'`6ؤ=?u;E&RcreY(ݡ#Ba_ o=_*`/ٓ h)   7L#A%  8I/*~"Q q_+L V2 wqF0mԻ !@ a 8 Q_/)U9  D[%6+NtCX63< G88u# ^9] b,E 60GD܌ +# SROE  ]Ё01f9j ],0${gFMGkl 7ݫ]&i lZ#q" V [-z` # Xv7uA& )8Jw%40 i nyE$q <fݞ w*F"ILwT b)(JUJ~hI$) q  of70%P5EL`'vmv|}^`?gVl 0D_'R;+IOO1V=_+(=)[ nuNf۟05XTk%9b)B  o@ M*9k0R!+PWr(v~  S\!)J 6ST1"mIZh d =o SR.usWkUD+T!.'KD_޺ ,k_ڋVu vS޸ ;&|7  ?ށ1+ C` 7b  d.Z !> kBkJ( >Y6$:zy  = W(6D$1I**)R7>0R'-w%}_}T   RN  N%c`:+ hn.YNY=!% TCj4!,9|q Odךx }'VB pY)  /WO %d&54 & =AX# 2 } IJT, 2U |y'6w M., 'Ob<epq2C##$x'FQ#a[mȘݴ"@i&LDH5JS uJP ,  B.10 |" 6G;#q 8y aQeA1& %r5mkǕկAIz )syoi D!& R!Bu ez< 4i h+4`*zV-F0d` wTu:h gRw-u k1uVRw,4G K ܘ@l,%_ڝ$USH1E qJޏ +eG )# ޼+ lP*C{ q#8) 2 KRI  pa cRW]"x*zX > .B0!bc gW ' ۜ~%ޤ F> ,6< A S g&1 }"!$Rc& HYS#k!>^* ,L ׹B,*A%w Q)+ 3& ~ANQ =3ujt 7 lh a{1 "ڇ A  P I_ b!G4s; _&@T"u GGM Tm0o'Cٝ"mrH~D-X '#] ;P32& Aܴhs K*'#t,E&G  |!x-G< C"IDK&iVFku Nd}T6D=b [  N;A" R c#iDA~  fiz%#k W (2tS ,J6*`4|b 7u7<~ (h Xp% q!p.#~V S*"scpd|)4} -y[: # G 6i-$8 r) {'k   _ WN@\ yvp E Rp0T dTj2 8tYc>E Wj~27ӷu qhDߪ."v +rQr 5(Xe ,4N 1  bZ ^r'6*54eE ې])G4=e H"KvWVpM  e0]Ja WF c  \ hGbvT,{=YF #g& Q/2T`ɕ'(Obdj FR( u#fQ+S RIy74ZI i=S% upɩ N&d& ~^ e,2mʷ ~)pI22M1;U*o4EW] |UQ b5N&)bE+(޳<) -N3ѐe$y{ݢ-4q@TM*HuJ6nD DE"m^ \ Oe/9Ѽԑ/u4#*YZaP qyjS TE #:<oh{Vk@!y/(raw ! Yysws:2 ٘%qe(1W-.%a3a:<j @ a 1G ohwL$I*ڿ"pߓ~% hKTu `q0 of6 &NF<N *3,1 Y^%  qM\:rFQ6x-w` jM-/d8YVv_ }t `3#1= {ɗ2"4Y"65 ʪ.c)` ԏj&L^ g 6m0 ]t94$FvPEW]M _` %7}$Հ<9*d 69 X07ߋj(\J#8$ UGr $EQ #U%7"Yb;{n cuHa+ -5պ " A2o,O ++*%&!P 99ig%qE 4Nx> h`^^~(Z  E&SͼG 2 ' bB٧h!$^ޢh`R[yz ` >!+c nTp۸$1NH. h! ˑܥ" |p@2&7,M1sݣ* (Ԭ *|  2 2 =lZ F C ] aJ!y b\.#GHKRi =g[nW9Z ,  FOsj&v_ a۟`5 3i6^> +  ?D}m MLCe]" ;x?  ! ,fځT, !Ϝs   >(=v}5 %iۉ):]x./>F b v Be k"f5 O  njgX_  B V* Uh I p۬%1= ', qY"b" m4%r(#f$%c _s &EzkkNe"Y!?? ]PM y_!0{h (29=At\R l5@z, <"G{_4 -k 6֟6p V\ZL&x,W.6; $#X  |"lpR*-.f{#R  KH %TkJ dKT.{o ܓݭi@ G ZaC’ V # U` 5 o%Ar H H~h| !A hc Xn##eǀc[p 6 C$  {" }-7܌3hD .Gk I".; 2#^lT͉'T"\> G" Q 'ۻ=8 H\c '!?"ޜ- J" >U@.%9G a݇8 c O \ V P 74U2]xC BK4bm}fߕ , Gq ?ph@q #SނYL<T}L _6v }Wt KFe c+) %Z(#h-!"[p Y P6<{* 4Tu p]0 Z,F*ݴ"c6> l' d*4h yhͨj#N*g<9') Od C %fq0A)OkwAq q &s/fU>^] iި%MV!n"6=.fG|B{3F)#X(X1 -CDq I`}Jnu]=&'FXD(&n# .J%n!YK,]a< `\6,. +o7M,mF &0+5 xor C!` _V#+ Fe5e_7 0s+d;P33^$>EC+ux* -I$(%$V\L{5;Q Y:>(*LS l ipL-r n4p% N('.%$KE`~ߣ3 ?%#EU _$6-*K!=HGI ) w%YV$# &$X2]*)%Wt }l cHR'I(N2Oـp*'J9w^ ?#/ ; ]  "W }k N KVE+Kؓs ng/ kPo -JB? v0!(eboJUb {i*&]AFJ$pH$ce٣ ] v/&U%j;;3%g58 ABE `c g)]T DSs. ;k"P 1$ D(I;!!ϧK YӔ){%[PbC, %c Y]x!u`]% B uG B<!&. : ݊ !* ,ה")a) W,"ۦ23} 4{D%Vp׃p %z {Z߄N ! 1Q/ӥ#fZ Ɂ";u*f-) ~DP?W Bbٜ |:#֏&&j3|f]:'&߃!4,RXG  D;c Q<"UwwZ  , Q^?_b" 0$#o[!"y#h LB 93?'3-1T aAP@g/-\Tv G-yb_'tl `5~8 7ݮ!m=/<4#@'Jx22u 5 [ +I9Wtlh ''0'1Y &-9ْ ! Z b 3oz޹T| g'Wr"<fX$_'ҼIekԳq zܘ,k݉F[ "-8%V7#~7<7 Z= :X%R%aG:u@5:ubŝ6!w:Ec"71@ #}*oޤ n|[s>*ޡ w! 8rN ' &*Y4 b-J{nj" 6r8 X xcG8+~C oz@  #!)9 X (mDߑR8/ ,* x? 7+ L F ak(6`4:;t "r<+ ) ) ) w!_ԛR#%( ?7N J`$ f o ,x,?!1 Y^u .> B ^ .>&}[; UWhK SL>%sUƹc k ڎ#)" .x]EXx# Yb$fd^v u4 gh הK'3η^ hc,?9u|/| p;PT01 d%e'ؔ;?%i(Z f6 Xm! a\{_(W-";Nr& ۈ- !*| G R0Ya &4Tz"%P<õ#+>7$ J9 q {> %C k_"l"p .1ۼ#$ A%yn*D7~da#8e1a"3A[ x^a{=1uFy7)" >kX $_{P80QHگD`   L%\"~m/0+!o)sQmxAѮM;%,7_\}dN LF$kP vQ? U V Iw   b 3@?,:,ua+ e+^2 =>KS ֮#iZ.$ +%KY d I%5vG1E Y!A9 Ws "T*-K-%vK( X%\^sW Z"\W  2G&w)b0ɭ\H% yPݕR[ b ^V[ N v+ 6r"n }c fo]O x Z t F jA 2)/; P",-הڴ"#VI% " NG6(.H# +&9ۇN'2F &% N\Ydq4 tlJ"T[C  ")7  N V-%X@ d !}ݤ(F"`$(D N7" PVfD{nPLDu }e/;$+n#q5 CO#m̫g'*' 9&YaIe},qpߔ)V~b޹G,?#iтy2$ 8?Bh#M.zQy JؗMG#_#j21$brT(8 rGHRU  Z K` Wfp =m@z%  hZl P_'Vc%* yG#!se~a3mKTu B" |EҒ7 E(!֧A' / NccB A 3to^Fh2( Fz 2e$կփ;T4%ԙQ  J")Q% *7[1b8 +*`+vE vq!~K/)C vAym I `U[+'P7_fH{( (>XCJ Y6aE J +c~lZhd }q%0v%g @e k؆= e%F J2   58u`!-",R2:B4! AH =)|<, ta$01;%a]+O/!4+Ԩ,ѝ^&1ɡ`'u7wY Q5 h3q l?`Y  }Y(D,nG$H"PC!` ()Y( /ʟ {]R`M;(o D 'Tߍ( ~efp \uC3SQD !f_RDRe+!2[}I\X,e*; b'/ Zj &DYKz@Z.G|F iX1 6NCdj-.9ɡ  %dL~  jڏDRj5w |9 K-YJ`5 +[|y x g H %R=:#'Y&.*gѾ Y y* VA=>'zdo!&< v$w2E EJ!2=2-JgFvԇa7eX 5b/*pԸb ;c 1j -P u 'jR._U-M<"h!W` <2;Fb_ I@'xh CY R _ ~EJضc/A= {4 MN$w34l  c 3Y/]pi ^ .*Aa"maIQ rߛ  %MIP7 km+= ܹل#a'[ !X3^ 9 -Ave3N Wb M 0[$ U #9ؘ 2Qkޅ}G !+jh8 +./+  F  l 4,9W ]b$'-1- 7T3d?? ~LN UjW]_V ;eާ & }% Ko!}8~VS}Vs[d%0'~hR!QH)J% ! )^O\'Y D t  _=BcxW2(*C ݣ1\ v\#(1F!ѷ(F1( /zd#%+v zeJqmLTIvyr+Lm.u$:\ k\} T!V>Zs =(x%b,W;  - h/>G6kϳs`=A" # jq g(!~~c  D ft J< n*fa;gjUwӴA W x%G B2-ݝ7oJ{DG).9!P Wq*L. 8~Ye1  ?i:)2 'k߮Ύ}j#JM@3 ( >76k p%2! t 4# &D)ާ   ]G YGGXI qRkU9' %=E> hE<4nۨj15W_Q@$;9ˡf#o $xX| \ x!d>024]Z %"Ek9f-])jreL10~#QԝfZ\ v-+ ]-uK za6*Zf i~& u.< {  5L v,dO& N/\Aڳ׽ m!B`;oi*w1RlHT*Aq  C8S  %J m cE/M  +z*&&w)) gXx Vο*E:diw rE/Q R4t)פ<%G kA&4 Wz ]F G$+u Q'W –! ,N.d<'@gZ0m 2ޢ#C <jHx.p nS vqQ?Yv  A EX*EL } 3n3|8e(#5Q;=)O.j~T8  OWqX$ ܘo#2: C037 Y /F A 5N+  d. (# v,V T f^/s p N~@ ic!f BR^ؚ3k (|o->{]f !.Jxnh" k lFL/ ;e+ Fdj p=؃((Lo kd v#M I /(=.U n\]q8yOx T{Pi /n W!ߐ. E ;Mh\ l~5/&sG۾}ݙ7q&ݱ gD  D?fՀL!%>DE 7 W#K,&jR)` /]Wt, %:ّi0h[nޫlK4 N C0 Pjbwe -wػ~ ^P( Z -n8J:E147Ө =@a  |gp]E  DAb;nLݏ ?3E vԘ <Gx{% ;+xX +'P%& 9KO^]B \0z\ # x {i ]\ ۀ :c @X .*.6ׅ +ۂ% 71r w (d " & 8  $]ʀ<U[M̠",ML0LM2/v$:Z  jq/ ' }Xo &%J& +$3`M4 j9;@=ߡb5"7!0 ݥm3 \)WQң'0S)E*' t7MxYYYk_w#. 1q M |Ι0U t%vJ C ZbBmI viiPz7*.)A4$&! j8DR b?U%  t  O D!$%]6ex1D\vI4'#EˈgWv!  c`}<A)09SҫdP i 0zP8 U LHbl`YeaG /9'$>޼C} o Q *f޵ 9U^W1*(y, 6Rn y^ t Pzw.:uڟ {-a% Q ,$< 25"=(ͭ! Eg'oV\&4%+ .+}8p]EF( Oׄ! . h\F,j%e C 61-Ug ;E<-& kJA.+]Mf KKTpz^? o>'%+.i2`6z hft _|7׫0Oh^j ;߭ zݸ #HK583 Q   ;ʟ$@`i`ߥ%< r  yk-!g|oݘ_+H) 1 ~Eh! 11&Є@(."%-PWM:U) l &yX| R sP  " ~ $A=YP!VGq*т:v|(* .P $`ӹq-("5#5~} &"<~~ h;C%W )k ) &1v =\Gm @&'$϶7.'tׂ6=:zOނr=#F,Wbk* R@}"*; 8h0L,K!ZRBw}\P1i z:#ڪt 9C: 'q;e 9'8P 0!  _ W 1nj 'r m p 7 ou =zEokQ&%ezWBc qZm.o#V o `a#~ h߉DE0. Bq"$&3' 0aO^ 5d8wK&#Z9 - )$X io > nXojdھ hzĕ)(-["BVs  ="T- e*!Ĩ%Տ,b 9+!9P3}$& U`$- oA|8 is JBB,k &$,7Xǁ) *( |=$mc)G) ׫f+I p= =  Zx"(F@b>;`8D$;n UW Eׯ9 42)hgSrDOk \ ?X]Q&v` ?N| #~,yx!=0yʤl!BmW' ol:^":-(ՎYE <  -NZ W*  5?)"dg\M`H B-u 2D-d8 (  cE`Е%0&3S1 %Ҋ!S&" + , sQ'`.+|6~Vwr  nd I e] c Tz hSl 1b #0'  +`%5͢<i 8j'`mfU-+)~%C` { X| tE9-iDd1 ~ -6sJb>3 D%-5!% =nT~UO32EZ9= F"B?p 8_0#3F W;HSA/x k _ $X3) )sx۱+O խ,8}-S-(=/',*C&g 3%'k1wnz D|#~);).'A K?D 7%71 FZ : z-+ {\ي*w+8qgz88 <<&X c v } srAG/EFa )f =Y fG D׈ #hV=y$}p/Pz)6\!mqB& p%jYZ h~g5Y"S2"y Jq n|F+#3  x&M!/wb#q5G/^"h.n[&P " vX OjsM -0͢9@B _> C( ?4[- OLT e '$ .d86 34b[ty(]Z}""# T f.Xw1=9t|tQOb>'KLa +F 6XIP1ؼ  ^޿_ q y &y!hTa ;v ׻BI5 tvY  dKb kvt. +" J -11*&' 6$Y+ p7O*:= '"DY3X  ![2? 'Pk?[r =#ޚw$[: &[j #z = kT*r{݋[@?Y-"-&gΏٗ(S#, \iX 8YK#XNPl#J0 t .J0K0y=uLv,$! /4Zעݿ@a!j \t^C>'_  l @  2m!.( mpv2LGs=*)BqO ]!yM|`ve f%U1qH_B5_> Yh5^v? w9x ] e ڶV,aAc W&z,c| x(?< >4*&J m%-|79 ODc yqFG,!b RqxXQ0W ri tx QI '7M#!%?FJ1 B ]d,mpU;l*! %$ | 8 OP_͕i&|Khb? Rj=2 MaC>%g?jiD3 x h +3A1 )@3$ -F2}(.{X*nyUM)*^*Pdm=$})7B&'?%[]ފ+n4 `L;qs*]'U3F _ InxIU &J;"D^Jzar08m Q{ 2s{1k߰ @C%n*߷3Rv: : >(*8gD.љq"U;(܋R&d۱ &o u:@9 E(* Hdr)=b9 Wm`!Hgq"Z ^s*?o7 Azo Һ &%H?j3W v $=(]si .%v &6+׉L]9-0o,d(pY]X:Z &Ţ<-(/   Dlk * ><E|s'x<  k&|w ".Iu4V&Kҵ  Mp FٿGU1 ~;5x  Ztm kCC]' <ցvT W Q?r.{ (pdrb"D0? X gzj )a+R2w ( ^m VO C<"P o ][ @ 26ڀ  p#p2;"V&`Ƿ!Og 0kk{ F& Hl]"#|l R=,Mv  _wb*A x{ v k2m 9`'vu>N Xf}h mG.VF t_ } }k. κ 2ϰ$"6H$7qi 'z7.lV 3D$L+IS 5|~ ^9 * j&7 D $" Th@۽q# ՙ9By^o )~ u$و#eD`d xO+;1G!$L D YWR ʈ 4OӡK9q 6V/(o  %( \Qma Rug H1>0?n~.6 Yٖ ZLg # Jl1 |fRDwq +- P[[uBo ] ;<89]: $ ޮ7]̖p5r #z oNAZybls yg]IBU*f .{2d&~T-!n2S !m ^ *Ζ'w/s> OtF G `/& ?C}%r gkz  qO o G 'c B6"݆|0( )  r* >%"r1h)mDHw D)ez r\~SV6K yj " Z'<" %"m޾Q : $5MSf,W1-5dS:)]_}+%,+! mwI]3 $ P%/% 2 e)]f5SP%97b92 R5 VQi 1 /& Dcgd8l] E:-]W~~?B{{*5$#X +@Q 1+18eLJzvu id lY5 ?P;-O ( v2J @D. $ '2"Sc z V0q([ $xp/_ f` UT26~TB5 5e' 2k, _H 7Ś`:ì/ )#3j lZ ?d8;-i; v  I y֣# G!G ~x=AJqD j"3 [P##M3- f#>n *6_ -\ H[G2^  ]95(*hcwDyN |4$Z( "XV34݂yGI)%݋!C9aV 1 '* #-4=W _  9 {+,wB Dd.d"ٱtz -6[m% s~](\eZ ~38 X_ 6 ):-!6tep ` 9:cMk88~f v#k(5!)z  F(TG -  r5 RR !2PAU |x1j A2S" 2Lu9G _ V%Oa r+[ "> +l97u"s8]񭻀ND, M ; nG ) #ZC "R" H/L\D gK#dy 1 lG F E@%sw7Q0!) 4#u< z4 # xP' pT *ՙ'&wd1mM (Ku|Fq7 bqH'zgP&1J!.Q2)"5b <M~o5 {-ut.G,.D?:/v% O*0Z h+D( @'`|W v6Nl.~_eYЫ(8c&2Z.z  m- 2;} D >ndl60%uۯ3O#(Yl z$Y{yYNC'&p' $R 'H -9E "  A W'"^+4Q p5$X8#( P8E*7@ɕ'T |Ar6Gߤi N"~  +cx-0G Z. l1G"'yP;N:,'YK "j+UX$Vץ,/,Kc),;s=Nފ l ,uW%C&G\0k%C l )ւċ 9\!s-/!8$H9CS -+tyo  P Q J!F t!(X %n3 v[4$ $  M ]b S;27-UgX*aV D _Y4 + z!OһB\,I)-kYaKP` + R !mer֜ Hl[S%K< )h%3=m A(nv8 n3,?su d 5<&QK <=%2jy0+=]? Wd J F#1 *: pC"e#7ܥվ7|GނZ9b T9=ޗO,6EʖG2<.l  ,sLI3 7\Wq@2W:$;! %13+\v "C!c(;y6 4Q ogM" $_1"md +%~z R ^Iq"ӥ *)1/4 2sU}g&m@0 N {) a+  1I)V''Y`9h"!0K)̻a1V<1ڙݞ Z]G˷ܣ /g_h,}^҉Mrd~#o ^ q%#liya, 3`s.J\#~+tfqDPVL4aJ[I!IW_K8@m* z%aEgLu- J%!U  o,b۰ S/ '$޲w-7{b=W //,#C'\1Bt,uK Um-b(p}< ' | yz4 dDv x M K.t z!x0 U  htP  =8pW Y _:] }` ZZ ,+כ R*!aY |8,e2'M ,lG v +CG$u/92  !haD1 x S Z {dT%%՝@QH[ w#P$W m! %?!޵ v Y6x4qkM Qz;Z %M$֣A#<K SV[ !o k=3 ' \Tޫ >} ^ qJ'1# ,{P g + -E2I ,')$4hi7}3d  v2q +f/ә*$=7 z Kx*ć)r h)Tjv|T& 5e]{EAv&49;eUA Mq l;N\BHu5[`^v! %5&]d "*"= Zo^Q+  UD E[V dWauG*~<$|;c@,7  > w(""-Yb8=k p{-!k+9S 81M,V7>^ !4JFK0~ E;_5ΉUO2!a ,* &'d uKy eRi;/+ .cQr "Q xL݆ S- }OO|COEllOh8 k$E  V (Ek v t rp%ϡ$ ' P|  ( h 7\rob Xa b" ?L 2 k E!Z7&/ bF  \w i <`[[n $ UnLu =  A^ 5ט&r,Z^ 41q<&dKV|. {S OQى 4 Y +G Uq'~ <b !!-iBo'#w^s z_ &SܳW #Z ? } ``^ %\׹}3 { r8fET 4%ш7&/ y#BfvwD!( {J}} > ?2#' z]u! `y ,eu)nc]5E y|?r4 z$ՕY X,: )$ӛ W"( '%;(LG J0Xk%};4eaIϼ&Y)KҢ $3 h $1B ImJ? ['II(Tۢ ~3B'|ZB5 (Ih)T sb" p =)W\~Whs: ##k(bi[ _@ ^ l& --Z&[!< Jsp/H-)ܟX *SfJ݂( OZ 0K PٷRw%_Kb^F z .7"ޠ*m!! Xҟ# 77vb  НZB $em3O3 !~MV  \9 &Ls]'CTmlox]tJM5SnvP),ݢ ޺-"'w֪)9@8h4T v1 ] SA)EֆuwoN6B|߰Z 2*,#/sķ=/K7[׀2bW?p ; ;6t$X $,F5  o*2lu!#O' 8i %iT v E #z:N < YLM@^ cZ21$~WD ADD >(ZMLiR )(mts aF-TX{'b4 &A40#` W@( B LV*)+;h`S \! =1s:$GN +F.V8i3$$?YUNC  J# -XI*Y >I($tHY1RL M 2q - Z#P9:N Z>#%` ܊q0 {>T:S Ew@[8$EsT < g$apM+ܡ݇6S>Z""T? KӮ$1X3FS"7p $bQnk<& T% k ,lh ShqI0 j`b+$^.*l F4z1D9sm'hK *J T;z>w 8 : C 0,ʫO 1J p0sEq"v.i> 2=^&(l `5' "ΗU_L29 i<܂h'.g`A  *wxe JA]H @zx<*rϵ f XO% U4 / {]w9mx ?C#2[ .Bu%!ӓf(ndn';1o"|I/S :PA5U D# 2Ĭ  d~ G+ 2j 1%TIFd$'ْHt:]< v۰4JH3'(Pj0 eZ5=< TRh=@yYgo2  O> v nn ^3@uCwHg <i"[H3 x ^o db z*G;r$2k>XKI6 &Ce B{Z R  @e? ;3 H b : 0<SU(~ u ӆ| !+O?X Iٵ}$lӽ)-rC .^^)`(3{YpQrW; mmS<* y W!g2L? }Cr nZ 3I*gl <ۛM#wk.o2#  {  @df(5!@9Z 5e!~BwJU5H /}Qtc( u+|5u e9'" ށw3cwӾ#h/O߰нEm zݕ 2~#+܉ B QXLV:V J 'I" 0 $!kس "GRm"B=V gMl 0 ;IhFe!d(y#f o\ , eD%N .) %W'Yli4yvq%$P,j *5, '6BqKۏ+eJis zy hL%I- Pezzb#)FA2@f>$eM Eb'+(p(Wd&Nr< vֶݵ{*&  ad3%K 9Ed5-q0+#Д?QGC2e& Dd} {JAx { ʓ="-u6 T&\[m(P c $x 3B.3tb=zb`~'3&#b0K l=% CKY 431E=FX,67j [y+f$*#L6~w9( 8 4&[?=hFB >Q?u # pbs> $zHrW*e[('.2S' s}t*]M2Ы H)hWZRo,sޟWM9}[C  {'<3E/g{ |CLft% s3ہ$$(wi,:+ q= % \*EvٮW 3&θY.6k  {#Zޓ N ;ޮ;( !T&$M*)kE,*Tie  : [Hk^6*ϓܦw, a z  > ;u&!dZ gZJH|tj 73/xS&'n #@gi,Ivv**;w `: $K1K1Mz%޷#UE6 $# U8<< | ~ > "j50gyF(r'X!c }GXolJ = #&m&2!) ) "RT2& g>i $ cx_$tF G t|= wX~X#3C [<M4 bg x;դ9L$/W I47h& y_!  #J*<8 \ 섽J!A^ n!ܶgT6 _y^ @c'? ҈l!xMZ T D]? HO9;:%)ޔZ#coًP6&& !oa1cOEG t},(R'T'dDC  > TX? :ލT,CO޻VӆD&Pɚ#\;p P b&.8Cז?bDEm@kk l' ; qA !&0wsZ N&'t & )Gu+tK؁lf36{^` zOY Q2]= @'WjT N 3 n%]Zkuy! *tf$|)L 5 7b SH*[#vX& |mJ Sa\+*) a !(Ay #0k kc  fK!0 6,@a$I 6w@ ( -Wuv|+. M$a'h^  u$E !11_ )3?.I.l$s~ J&7=Y~H!9= Gh7ߌ8.% dj<"` TyDtXm?6  H ـ!l=>؁K4.F=Xp k&> tx+@K8;w ujUoxSB_X?\A W!# V__E $ E'52mH`"r !*#SZ B.NԦ3Og&xF'J 3Xa 0[k> L~ enr FO@5 #8;St R m51CbjU t * +b4)5ztB" -" @&T,!6ҋ : 8):90' KYr'c Y@ K =@+ۃ4%!>5>!~!{7*g /fRe J7E>}%-E ۟'jO ;kf3 yn.'8?t*_14#8/u /2"$q  R׼ 'l4}i( \ %/ 9 >L}%&Y7a(% kl [8|H Q -3# >i5&FbQH  SXI _ 2  .Yؑ#;F"3Nk'r?%r?E3  #*~S CZ~?~ W=c `;z1"8$]vƳq1(~yQH(p t61.Q.8 XF7j Q5u<c\P )jWD/}$  Un+Qk e#6(c1F}? #94܊+4n 8M Ksr YW')S :S %0қR$'  J W x p+IW׏P6' _\7*y7ּ\p ZiJ">">  j 7]~ wq"_6D R!P z3qYy5tt"9 'oL$ fo8=.C68 DX ʼn` j~a3 31J{&շ%FoH-gy&,6`ͪp&dZ ?Y-D8n[*' .@#؂>Լܒ(o_ X]qnx -  J"*A4!!uEuE s722 0 sJ*!EE*sCNQڣ8" /w E >K ߏ(_%}Zi\< X0!. 3<K%&DWzcp ]Pb $Bl'LfD. ާ*o # > C]#(m(TA[L;!V  Wln F`D1O)Q1fcS rV/N-$"t ZWx 4!SE͢?~O"|< |'_׏J (d, Ay XZ/w S Ԭ,`*^7[.! !8Hl8%ؓ$'G2 4L  ;4# 2 ? $h"i8߯E  m}FN(+p ' 9 VނT-;50+p bz )#* !@'DP %fO =:r# 2_AF |J D*[`X4 q^mQw #~ni. 8 !9#u,.F_u? >A)(JS /*Y  _Cw8UP , J#  ) Bѥq P(/] 9, R F KHoT3o 1}_!l$kYھ,\&0;Y)s U$˪] @o+t( WHH(:) Q o x'x* 3])i,"0Us 2'[YBҋo?#L H '1iRW>u%"w~Ϥ$&!?: ߺWe8 S"#zjJw 4W46 /i 4 WN(^_L B o H >wQ}t YZ] w89[ Eiic >*00ڀ7 i i ll YW [SQAdkyc&'-T/l-9V j SE3+VMCC |}T-_#]/}p51uJ l! 3W^i3n H|. ?d}O#&85<rm+L>#Qg =^] ,1s Kh)x v '( =XF6ll&@.l|$;tܻa$= L~u( #q2Ӝ 4Yp/5:@<^ YsP  }.4 $h ;N 9   x1pbmW&@: * w+,۳OK M x; m , e2)Y^8c>eq+,Fy(~' md_  *(ޝ sZ- RKU)u)Y 5// ݴհo(D\/C{ToWpDh;C$|ZL V _ ذ ' ѿ! &*SG/1 {%0 <M'KffخFLp#߬  T \%{M *~4 /R A &Bn 6IFi[ %) r zX@Mi `("` `5 T $y ,*^2C:5PN&tJ] & ^O m*i ka @hV[r^,!p-FBY.$_$d 7+3  V/7L-}9%64_n ҈$.m9 B T+w߅#"(>9CL T'2r 6) Rk?&1$s *:l"o5{+Lv*E$ᔻ: 8Ni6>8.Gt րH  G^So T"8U]uw"eG6 ;)\$wU6"$1 `{c*(4"c"wt0OMr lE@+ X8C 'neeCkJH_> )22 77c  ۠FR'T 2't0R }FlZ^S3 d ]9( Ӌ'; !1HV/׃ڤ|. AQk4>~؉'.K~ Ft"Aѝ `"YoHh8U8k]n/ [nNzl Xk߹p 5g\/R_R Xp{'A}; 1t 1i  6S-{,\5  / =-&EO#J Ho 43sQnv %( <lݑq [ c#L>%Jko 9d E qEK6 =]s % Xܨ \ cM 9 _N/#w f (W z", c  v.7S}q/- 1  [f* y=lh+-AVبj |Y@}z BTp ` Qڱ*\\is rZ 6} Fy6O[<$-3 9)# $~gY -&G|K!b ˥_Uw(v&/D E$0oF=  o zA2 5BIwM- [بa^_\Z O)*q! p% | xݣR ! b2;b*% /\ fvx xހLB0#F:ծdv=ucHQ8O8/ZE n7zS F^4 Tv t] #2% Gt $Kx2(R&We;e z X1@!AOI3 v@y+9-8 :;0-$I@F>!"  q6  sG  tN 3[ ~fnߗb BM %^ {S2-)sՉ"ؾ Y&NO$H.8 $ : }y1_pF  3w z.yNԑw x`"|>O&" Ӟ2M57d]3 a 0)+yf) t 6E-5^ߑ^/ !< r?[3W^Q >I 3Fr6ؗ.)NS M P-'e2,w H% Q5x p,yo3K + Yݓ 'j\ !v, )9f (JEr/;h8?i xh>dQ>1 /J [)&3_  <wW Bh?v _ZCq u% <$g G֗ & BA.` ƅEn Q-t60{#=gOk]s bWL) 5x#QMO \ 5Q2jQ m?cD29 v~6+ 9}w;$drv&m% ,, }j 0k7D0&yޫ| zZ @w \ "]ѿ% ~d{ـ#-y׸S9e c4ޞ# -"]1B$9Oz  t# r  +ހ:H 1e)$|*V.H^ZQ %g)NeѲ4 hҤ_.P&Y"V :B S $F$.xL%Z D#b"V0Bl #5r eBf ' ^H@ E > L6q! ` {ƖG'&$^sE8(>uh0dV8MDRnwJ9 k C!9~)z d10!&V # '8/e  -CC?1z7Uy0  Qtp4)6N,  Ry 5:* s luBkh2 |  ԣ>|-t9;i-}HIPA (q{*4D&<wϰU"${z>e @w,pG2r^& 92/5V k" >3#6%TV ګ__ T Iy32^b,  5 ')rXY؞یqs > z!x" k s  sn'"L ! '0 |jXZ^m )!GO5aTs"=na &ƫq!@ tS8FHD)Sb4R& 4) T$ Whï61 Zu.= &  !5wPْ*V a F  XLi-K}rh'( Q   m{ oa) )(?! @+ > ?Dή/, 9 $9z o'kp |J%3 Hu 8U7ѵe+i?  $r / R[tlRXN}2 C%t [-fp;@O($]"ک!.'. O *,h ;sUB) I Lbh M3-cvt +n_H%5;* "(S8OMKEΉ( X5 &//0x#uEKp +aыu1 q! bm6-f)-_w oWC$߸" [2 ?:PZ "T٥ړ> c l8C)8 \qn3&_0| {?G" ZDc'"(,ZvX G YI"(YCRvE;  Ks}$*k,-I> Y+\am;(#r * P.D` F =b՝#$"" &l+0Ԝ7i7}bO8HPyo+H%q rAkn  }9 /K[ep(g  ^ +d& _CBֽgL,- K>Z!vR } xs&X׹=EfmWcy ՈM" h).1%Y Oy< **Nk}C%#(ԡ..p!Y E -Gڗ$J([dߣ$[Ft zX~ #'&:* 7 ;xV J~oR %|J#G  y#ؘ0'T ]@tK 10,] &TL #4&nN!:~*2c3yi >V N$ &265̴֙1 oZB E;"iV޾ 5%7|<;-G J(xD J.4>%p~t8!U! /b#  E~+NO^e' ;$!ٚݒ.&M\ hr|u3!)8[b]*`"~2Qtzd!&,!a(04eNH ޾e0rl==]3!V( L e#I4vdBi,2"@@-k2<T'`eS* C/ױrQ 6% L+{+)1 Jq4>8[I  ) Pj.!ZS 2<Lyj2p/g(J)Z<3L, tm8F"*p&-e#fG};m ? 8%z@1&!` xUmoO\GZA a._# y h b^s~ 2(0ϼ^ R ;8wb ` $"PR:E,P -/U%op!:2+??ԵU 0{ 'nKebz$ %P /raܸ+~m<,FҡP1df 'G9Q9!p/mdP\0K UcM \,M"M`0= < [S g" ;U8x O( bXp9oEO  M%<'g8f:#&}(+J v0P^O+,ްR qm05,*v[o%+ $! %u-W+pu 6XJWk.pF#   Xݲb<R):ݛZ -F+ed n$Qqak YdGї" e&-K4Upwr^8'; $$ #9)9,e-8R -\'ѐt  QZ~'x6 ::-:5I%f*`]tg-ԾBf  =֜2.=fw EEl97K+#.,T!u  "b |e }!1ڍ~ sOv (Et _"xhL od  o] \);gy5d ~u$p !$o 6/;y^!Y ,zfv.V+  6 /xTT&P.#Xݐsn; y u-Wʆ 3*]e 'B m ,ԍ6%Sb<;~%V\ g m#_9 k~"^;%&)g:j- s tF<#L9s4ۓ)ZQ? nұ΁ ,N $A /lT** Ҳ$) Q BG \) xԧ | ֬.-YsWۤ;4״ߋGa#'6֢""d` V[D,Jb5<з  /h0r&'k LS5ZmZ6i[*r!"Iep(*W) 3-q}P0*ֺ \n\q b tkmG)40$ˣWfL!W&_"(%( UU$ 6tuv| DV } _ 4.W#zs=A@iU4JK{"<D.O xFu }w+#hIh#bke#lU)̘F EX s}a1& a'vj O>WҗIf.{3 Cm -2+0p &Yj +s&Ds, !\8 5*>XX  hpJ-iF"G:,] %Hq ISWP@%B>, |"w(٘lX+ %)D,(6%8C' G ' S\Yjӳ ? :۷eZrK(!7 $ Gv .eb?!95ۖ|8}W on{ I = *@!Z]͐]I U*#!u "ދy5W-6 $= ~|p I# )P p y%n4 G ${3& 8XAC /٫ @ meV?zf~ E 6L\_-PZv\ @7 ~ !c2)$:T_F 5LJnV %%:V\ (wtC N\ w~jI P$u -h gIֳF B7:Q)U!6pn\ 5[<-?bK C!K8 R N ,bZ@<  mBe1  *\9.CO x\_;&/B) ~WiI qp4q-=/n )4eI231&A A%" 5sp$]!ĺ Z#4 /E߮ܬ,9(Dw zjm4V.$N@JA"J [x DR -Ruj # J l4Bت7$j~)X)hҶ30%35 /׫ x9 T($[ 4 .%QN 4~C%=XNDi)p׏c #xx%3  (> }d91+cp bn : k/oQ*)Z C;z!eЗ%M0, 70l K &|) zf ,1v&1)< yt kfo :(d*-$-R^g {"Y.߿8go Z L$o|KKZU 9G  (7 >SiB R! H=BٮE=.]3? 5  7mn2=3Z4 <ߑI ] Rj;/i1O"5< ycmu# MDB$/{ 6ߔ:  v;#7^ .ͱL #Z 1% h^i:܋!2 =ܤ NS!B MY6n߅i"1N5s%3,%^ : IӅ` . 0Y0t1nG @jMm:M)Pe +2Ed)pDSժ2.L1}  {NE ? gxQ/v޿(I p^D;'l]K4 B)s'FW.bw & /ڈ% S09MF vm?q dK J٢ So 8z"}mCo+--:G&}1q!Rօѫ -a&pT/r0ARo9Be iqS4uO<iGAI{ϝb J/[x3 4 *ү(#;u*(#>Q~ov F e)k4 d j]! s3J aZM8 *![H~=J1;/k j <A 4C0֬E "Ag'C"D 6 8  $bh2 n< `  ݙRG Bzd% @F^P\] ^x-1JH`whO+&&޵V p z yq 1.c _Zy*~N. y Kpذ_;*d e#fGjcn t8^ח igZ!em.Y.f @+w\'{92m/%HO!( q0^&')v+'bD:@>b M /Z, f `Jg $ %bf] ;8 $<,o#hC (.xA ~D}C. =Q2{އ  |IR]Ԯ7 /YIС1 FsnzKeNuueTح :)!/.ҝÀ#>)s|^wG yE . _&~Q " ؤ W(Iά%+ -w ii WG:ܧ,lԎ:[ +nƍh1@C1(D)nJ & 1_a,_ۈ2}!2O C&=Q5 3f}2KԼ -C |!5f/%Э nLL0( ~-M 7y ]$  `-z&0nd!c=w$&C$#-jlp 8t f- ;ab. |;!.P+cj:H2ЗXWR$+.-K(ߋmBXx[7\D,%E is 4$΍ȵ"7a IΪ ./a1?]g3Uf`D b)xcmoF@&.)&/t$ :Vr-y7 73'Ty i`\k| v| $ azI/dT՜ihjzqo~^Y)H `PbV4T_. r ;,$yۣ=d[i HbYH) 0Q&9  P  u*ָE/bHs!5Y_A 3wl %DڍDSthjy_Y // rn*E-'!DI  gfvx` ӿhbkh{*ѡoQ ߮](36gam9a &$VYj qZr,#))D:OY1s5nE u %g4x& 6\fc;aP_  /`l{=xL ,?݊?cRM;&C }6R.Y!^_H" kW \ X*dE) h.7 `"~$F$##FX[,TǨ79,R Gh1^hy= %,f  i1'X4r AeGp)"#R. 77Z< 2c _i8%z ,xFlE j?  E4]+9L'r D =+S)5%U>x92 N~J1*@ % "% %V { 2 -K.#27?y8#2 t}6`s&fm%$C-|VF7goC~^V7RǹS!M F7uZ_ 'L nZ*3| `x##6  y8JҌVq F h$8ކ? Z1X`--q~:}o1r. q!ش])4 k18]Y7\Q&?, ܬ%ά /&xu?tSW W1IOp^  D.G :j9Oo %3`ȏ'* M" !! #4/su?F\[a-f(\T{ " 5tj _b|E  {d Zj P XI@ q?#Q"OK\qx>Qs) Key-nŷ/݋ 4T /K%]!-rq-h>0y s!y;9 r `ވ U^oA }SR;G@e'z$ oipFq7#*1D䡽̤y$,fBH5#>K !9&]#eB {.o;( ~ }G  \6/ ['kv&*{"x Cx{_!# xޝ!OPN n#py' pOI|"豿$((bڴE*2E&d `:*= ju 6 # yS" Ц=M(b' Zbu& SN/z2 #n dl7Z+%0ȱ>89 avCNZ'd-%)1\+H-i q 1&:KЏ jZ/{e&^E&j8Y_ : _ C/ j`yJ =(8 Mu6 eݲW!gi 4OVs91"9  ~szy*/vj9 eN] !`cP&fkX]k%bZ*v P gt = lR G ]y #-K;4 #"3  NT%i /ׂ%f;MhEUGKL ,9G f,: ; Z$ ; 9ߺ# !~6  7As]3E ,) +   Qk-sUF5k "  %W*A> Y Y wۉ a:'%'S} , k   AX%l@ d# JA@2' /4g>1 _ e .Nm$&GGF ThS <;{CQlͫXyOX "e #p IhB&=. " t*/8"ߝ߾*K 6;I\u3$8 NQ#6!~eH N"bҸ '`k, 6e0X%/Tv] ?(k7Nld ,oS=h P[ J /=qh,* ?b(.YU^'ܚb)H Hzz)W#݉5& z/ܯ 5Ǟ1=Jwj 4*g &m~>^Z,oR5_ (<; y+<m }Yk{B4@XL"b `pE vD)*Fӄ 'J,(m) $KJ@yH>}w3= "&c /L )j[+[G #@ GaO3! >#=4=OK Se(eZFQ2;_`% I cvB'm8v W ڥ  XuyևTK )Nh%C~% zI|+ ԯ7V32$paW#ur"<@EMHC=)PM I  |!{ & 2|ycMZ " ^ P**ϴ@>׎L /. 3[5-}ӨZ H +hih߁ J*Rc|@B%G kI hy 3ԏ%3jbB/P&5jgk- ipgO,%t D[ }9m{H qX%+71 {)f "l ӯp#,,A xu ^F!qևɞ%6 . z }h n( 6w& BvVFhwۖ`)d&W >!wgH u<%'re (bS(&f+k k&j Y1&> RV ?b$# StQ Ob\_޽r $W 7T1 t"B,-r ~p]G1 &_b &: %QQ&!:*e%ڶk x^z!]!|7\ E [~ r'!R< #L KL< _!2BhBHs 4D" {ٶ M(~ %$6P  Q TQJ7p SW2I%:ݿ '4܄#] `ߨd s_k" YGjG)7߭ M&4 g&rX6 I2jސL7 u )`N ~ 3&׶j'D\1 b8 6 H 49!$LX^ 6l2- Mٸ0' N$+%  ޺Q{ 5+ un Vw Ha7)7U:`V) &"1 ^% >xH; p3/ l y^1z$bC| -=7)  OW5,(J3W=! $&:7 1;DԪ5֞FM>> ]aEW+8X"I']6 5 ~3 t׿^!$K %$|ҳcVz"2US Q [}*pOY~hg2X #e D wra ML4o~ O2  dة*o &+'ܢ ,&Mxw.  \]#;k&aj .ac eV`  CUQ,tQ V'x3& ] wE$Aq`%(gj K8I L8KST|r9#%*'mA M `޽+oJZ + -Z"ff ;vkس~.^ *6 5 0YjO! kW0` + _n}F3 Zy%! 0m:C "1фe,2ry;1 e* Ud4}':CKXwQ : KxdV:UL\2m %WQmm- 7ѣL,Mܕt(!)n"(3Y/YTkm/ 4jD 9f6 7dY lK @ir3!<#h& |.i 0 b 3nb,+@;> :"m#9Ez A "5) tG%L@IS $mEp # S| ߞ*K#%[,7  s4 b&,z"E=)ݑs V `M.ã  De 'l  E C (Kpޒ@[ j)<ԉgT3F\]- Y?Ep@ , B6 & A+,oU! YEZi`o wQ7s$ ٙ & . $+2g `)ի%-U$ :K{ +x.!  [z.tR=[l H܎j%7HCi x u w Fr<2 &:S`0ICpH ~=gFv/`GCQ26Q |( /(V Xl@} kD \p+Ly %e#|I%$+&"S9"(W,;qkc}') ;0 "]Y* #{3Rgy_ bK-5w,Vl#Z+ FQJo wйݯJڴ#+u-r+l.ag~: *0HS=A %C+4ƞR1%@ ? 52m=) 8.q>()0t-% p#K$D$0Vڌ$^!Uzpr֢z%5.Og%D)|%  w  :| HS!&  9 (` u (X "8)=,3* W<-Iڏ"+; =>l =@.M5 Ƕ9 F| D r|dgރ S!4!шw :Uv<wz"_+!8+XTm!' X^  OBi +'M  I!Xo3.F |a^)-t޲K1?DùE  U!P C a%[(߸ӹ1)$b>%J"% Z3a' e 3;3 >zh L̫\ }9fe '*Oer \' (J 6/ [ޙ 0yn(I++ ,u Uf L 17'3,; hzVm(R :24X % :\ ,c QpK1$/0~Oqj4yD ^ , #@![8s< ^>*iMXjL=$#1 }y /N 66)E=<ڨv!/V('^kx%YDbMu{"_ D ":Ռ]uJ7a gZ q(I)v[ :mw VhN<7 < "2j4 >zGK c4 iY S) F&.tQ" *OYSX-g ^?xb-)"$ܜ D*(L):K s D |GoT _Wq  p $x t_(q  }  p<܁י*%xtE#~6 y? g-!8و Fyځ-1F' ܅rY%0?ޮ1@ [Le{pj^2% Yzca(p =3-."p&; 1o]K9 R+b /Q0= R_n H },ub 0AJ6; 4 $Ӝ % J3-SM!i "kqݚ/l1~ Nt@ UjB'GPD` jQ cE!M(Co%"͋8{$]~J.d ! ˺(+'$nDg%"^vaTSX3.+Yf 1jU"!ڮ `5#8s_X%]L1QBC : L$WqL; (!,%)fiS 1"]V3H! 0RQ10 +c{9r<  ]9 q= P?} i4)9c0&wت!hvE E ӨB#. {6$L,#* = "~j1ieH(NY V}7fA o#'Wz( 5 $3D8 3 XI7 @%i  ' pHC&g d  gaIP&{'o|e1/ l} j  fRLuD)rGH-\m+ D_44 հyp+dӵwJ i.- Yp ` a0\ a 3j%/SQ P\1 $UC!7 ./(oh{:+-zT,ޡ_)NWxm0(.@6 4 ]/ `i hV mD;~{ gX0b -" UY iS/ 'ݗwwx "1j+ӹ%:W cdY9 \d"  y o1  =;'yAIVoB0 GB,Q5 } `|f5D^,c!~,0E )޹*Jy'-%y"#$s25@3  2PHP " ؂99l#*be+ @  ]t{9 b2 f Q$XlG F )P }  $BIt9^ 1] %P!qx+_ ,[  2|y뀿Lvo5ϱ$@(~p=H#2z&J^& ]b R. 0 N[+ 2o2r5#88 Rx u$#0rJ 0YHO  KݽCG,r,%syI2  l~ǝ";*Dh8 "#j΁LBT+<Կ@N2l,x(Mm p" 94(^z12$n%D V. "!_ 0lbQ'Pc$KO  ׳M S &?:zN(>*' ,_, ?& *!&LN$W64 F`#s?#IӤ-6'xD"R, b&+zB }k YqRuw:` e  J j (4 ,W ?][i_ Wp rN 6>$?@Э y7 #P^3 =/HQ H.Tj~LR7}DM* +$E} `M } BU%4u($)4b4  p"!s gh ,""}{l "k, `2Az qʈGs lO. 5`/.b> g4 b Q 81Z 3 3Ȧq9'g $E zM;zS D`1jq' 3S &ԛZ+.C ~J`m.Q O 0:H   1-1*M FRc0 M; 9^f gM܃7 T]", $! Ax&c)*߰9-x*~ORx[[+;HJ #-mdNN9 H+[s5d&j4/ u: y {h;y!v:'tʭߴj7Rφ9q#^#*ś3Aqq5 `t} (IE"Y ,]Jdf",g Kt) !\3& 7`g | ((2Z`'InA?9!];1 =Я%!!ܢ hS\M't4k + S~ F ~s*)s,M"w `N, Bӿ+e"a ^e 0!lr8#! v' ]j.5p % XV\Zd xJxZ9,Xc!i8[3 B*/jrCY P^ .. YW;թ ߩKyI( s0i 2 SAKC>h%?xGnjph ^hgy6  @xsqM@ )޼@ O W$j!kl8$Y-f@ / &Z۸31= !X6k  aA:^ xCj' }-HwCP#" L 3g#ufΎ;c_  Z V , |g yTN5 Ra %pwRFQ  xܟ&D2!$g-(: J(G QH&sT ,)hӾf|H\0  "} ښ6)B'l# !&d7Fd=.t,&+5| cH { qC} R/q !~K(؏s$sVʥ2/ +e9Km A d-Ƣ~0ۙ1!u5 O!UGP8d bc@s.{~kY K Z _h+&(Qu':.z!a`n 4Fm4Z qsg  *`0Q^z %yh'OOo L}m IXV 4 sD&5G ϋUR.J3  A9+Ri-'dօK+N: @*-h h^g/L.!l8$+ Ft$G: |Ԉ .-Ahz :? {B %'\)( "+!Ak!.Q0 y b aBt9 vآKJמۮ ,ծ"Hf> +Gp 1"1(Wo_ zIj$f0l Hv [0_^@  MKzzmgu33a;2e1@[!PXy#qv[:#4, R']  &6-;9 "Z ,`%YA<fthSl %qn=&2,ݩqsm$%8L \ {J(d )mMr&W!ek_qND hTC_&x-&=/Zl!%HM 3-"Y126?"CkbOQLt @  Y(^ cg(+b0 $wu9U ?Z Y 5Mn&P3by! y%*_!!f  t [ 4k.!F^<+"i cTjVQ8bl Wz_ 9l4| ~61,jj$nm L4ax%)x9kCyVy om+RRR %Uv?eVM1{.{H Iq6ϮmJ n Lgo;vЕ$!QQ . MD|#y 1$,[  29{@&o2 j%I HCA I 5n gx^ ;*jZي5Ye__gC! uN NWA{Mܚ nA' *`!q$' />k/l('1&m * C' 4U]Q$\w Dw-/, !-q." +U i&j mA aPp {,O *6'%W#3:.{ )@pK4RB/  Rd$0"5Ś< #B1;ch"l/Z G UAY9 iuQ l~ XfT(Pf SQRܑ",&[4~)OX ^  (Y^'X) /; ރ3,Q ܏uG _XU*L]+ZW  2 9A ~!Or^rs)K ٸ j6)} l6O[-D`QJ tH XP #&L P?m;2fu(6 -,/um%;2}-/ ?o( k"A\ q|A$ \3//2' > Dan-<:B*߄\cxdF60DMObs a h7q[S (_ 7/գn#[4x Ae#/8}%Vq+Z5V. / *_  Ag5G 3{ geW e "I!Ph6ٝ;(Y 5D.2  P.-X^7 q , !]c`(0  |F*ib`19UpBec;4Gz$(K8 c^% GZ/g[@ kp5 &MW[bQ _6 :+e}F*n>l e " Sj] egߎ(5cNv!+z5X/ڿ$?4 U~i h  cFà n 1__ j*p ~ڿ :!ޡ\ )Q,YW  Rט A2~!  T\W [,XT P;8u  \ip1M{x!+k3L ,4flڷ `(M! mX,S s,v0ۗ A, m U#)M}1T0;5sw TO|%&  v8+v05JSG\$bil,$ o͠ E+1e7d3x]j2'S~ܻ  Q !б1 -D7  (_[L qH!5Yg2V &Ƒ+.wf>R)l  ;l -@ / Pe xm!Zf& u !W.% lUkC zy#M/(2%S] V e%/["  yA B ?%**5:fNډP# @ T'T釽Bb K^y1J6R_[H7  ^W"&2X!7ٲ- Ce`ݛ+׍FPl(<jGSK 5>!YP 8zXU bm D #.#'Z [8Dc L!bUHp6qM&y%ؑ(#cʾg~ 'Fۿ7Jʑ#U _v 36P f~Uf MAfT ho *&xIw^g-  U{T Q 4Mi >H RG)MKL* 6[ަ0 XkB # {5ӄ1 &t1 H]PM9 3yfYHO {[Cr% خB);yT̞p"~6fnd i4xT(  1%Ĕ~>"ݡ;$z bD~!(c0{K~!c +7iL = S } n]-6I71,! ҋpkB7q  OY; eR ߀- slI` 05U$!*x=9*> v &f&r  ($.j+˛!D5p,F9/G  6F;{I ; ~ UI XC F(i PEeQ)0<% N ձr dn{b) ]fr }vWSfHOW rb !Kb K ! Y 9*u6t$ ,!`D</oqI': ׽3,lb}M+< yTE.u."مȫY7 /- -O. \$oF "0 !sS8  k@ t 4P!umH 4 d!V 4q<1` 5 *$"tq?8,Uk9m, gl MPs);q,! dI mS vLN;/$(U + l *#1 % ZkW5K6w - V.h5  pi҆h33U@6 ^ (A#;&|(&n.] G \v40eՂF!TX/ Pt('%Ȥtg\nc& 0Ƕ~*fQ3 _ T[+8 0 V T J=9$ a )U%L !c~%l>!+ P3t 2 Y6O!&"$ "i;G m'qz=7F ] V1K""us *3 Ozr ) +nr'sP% (4|t!^kC*HcR} g ,:"fpHaoxc g Hp,x d hL@=~$CT$tla i 9xp i U1 1#  A 7Y :(' Ք84]z8 16 KU" oN )r"L 4 ]3_ %F 1Q rGQ_2 i܊4<o 2"  B-jN  (vTՕc0Y4Y b( jirG9 .<RU =?-  tp pB"-{$ 5Z$?( wG g K Rf q_IuDKN)V ۂ% Tpqb(\!ZT6%q3 H?$ _4|uؒ  wp)Y e(XQ Z 6yd ttRKuLܮZeQ /` _ s@ 7vF&p ռ$$n t>_0t75M4Ax@+g"1%//'}( [8 " ɂ18] gZCݙ\ 6z!])G=O y v '$ rZ Y Jy6J3x)9$} f:Cs0 e:AܦdhE1pP9q+l5H 1 lV>8# *zbQ %E) r7Ӑ jA%2w w& 9q*TcF$(EXM w 8I$> v-r)qfC o׽=-9C3|=[Jeey ^5%Ba0_ s*B U˜غTӦҧg>$0 ( 3`vV[ e!)$^i !|M(X " ogkI` WW c, 5.C z5.(v՜ U!ݱյynA_ Z7 #~9t'ZбG e!)+"&iXk 7Z#<nc;L# m=,[!cw %Qn k!Y&{Gq)(ݗ/42j~z3 & .mߗ]Ok_&  ]'cFfd E.#pɽF0.*j, ןY6w0 |#5-=)j};i^5PN_SlQxWRj5= L?\ j\1w u [jR<~o V c &ϋA9%dD,|e, ًh$6h,{.D 2S_()I7 )*ay o-9.-Dkؗ!1ooib3y9/nj'CW,nQnt sb dC+g'O' 4%\x"2:-]>k/Zqeؒ!+:\4 _ B7SF  T7  MUl* . #6L 7 D?". pg%w<ԅНxe3A+X'4 ][0 N҂j[B. u%Tja2, <W<&0hR+5D`&1 Bdk&o C3Fnd u$ej] Kd,J EۍB2 $E{ ' J' a4 ?]s| 6 IR Cao)J~$'*pBOwD !XoozDt [ /o:!(bAxxL0 :1Cj(XH6LV %[o:  "rRH%N^ [ 4 )@4NZ$9K i+et/9V VPr [ %;+ 6-ӓ::ZC E$  Er  cX< Xt/vx0 Lb~v&:(894 ӕ:#@v|W M 9d*enNҺ /;a#Dε L%h._ -DGol/gLZ`֙+* x  ;] p4 Ӱ ;"! +/ Jxu=0' _ cI>u8 8~};rN 5GN*C g&o :/Ob @\ W 6&c =0"UzB ^ R-2x5:<$t' 1eIK#!ݕ 1 ^ۙ t!=y>G 'i K n3y R1~ Y3?: / n&  ^J"-v82`9)%ASa>(i6(H Zy 5 hiz&1^wQ.bp"K%\h$7  'M!\NB)) %P  >pY T -a w V$&Pw {a AHCX M $ {$ p% mfW= '8h' + -u6Jb3`1ʍ! ULkB eYK ޾ NNt (8xZ5e0 v(%$D$M*Z 3-X?p]*j,7h)!8x/o h4 PE|*4L%S {/:8C -+^ wlsx z oh Dqh7 3a-A , k8D'#DN u=_ !sALF #! =X"^ >B "hK b(W3C]ok)Q:^)" 9 a c6 ܨ D.N;# 7 g)ݠ_^ks! i D  j=  ",R22#х"v+W~ {Q8 $U%EmA=~&8x }xdc "L9i4Zv MXt)Y ~ r_v'O#C ;&skKp53~ McЅ\ zfp-(UKXnQk NKs  TG%j`9d#D 9g > ;ެyJ-b ekjMx#% P ֛mǚۈ#F1j Bc <p) Mؿ.!(O3V J4 =3e /M 42 Y  9b,&ߘ 1;* W:ݖ&MB3'` ' C?~Q5^/-bJ1V^OP uVs.S\ q=qlG' ە~C"|ʼn !ZRKd 5t` g1# iS ='# 5 TdVbd62&J/N*  /7`l K!dKeO!3t֚+1,=+-(?iK yɖ&f_'Dи$e'0b`/\4YmD"d%J f.y7@&x~e\ | +CI\,% .w!$ ^&"$|>P$~hzI #'C Ӛ++Bl F8 : } 2 e h#dPZ sUj6#(/ҝ "t T?+HDj 0 >#q1 _0#A lG l-b c&% F}cM_ c : ,(w 6S v"A .%55 js_ X?] +{z{t5b)|%%VH.@ %Oubd.._X)/> T]A3W:=N CsiQ i I |J+]y!hv1&@pu MJI/H % . %%N  $݉'%Y?e2 8֦F @% ]#^fNe/&Z  /.mOe%iy#=#+:=[o *D` jb+Q %5`3, !(-R~\|]> { y LM hw |^L?V! e EyIJ1$_ 1Eޠ @I;H tJX q H7_ G0.K!CrOa }qZ/[~S%bC~X? *_ ;io % <;5-+w9yQA yלbl8S >m-Ly- l9 MX  4 n%5[+cX ?=$ 4!1)&3Qv H+s# .PKԾ'/8T>3JMf)X+ kߠu% j==R^ zYN t;_ %n[;4G pձPxfCwA b}t$* U  wde,! k ku sx vj7 !^B!qI*6B b o?A^(D4 {z %֟D'Uay") s e Hj!=  [$اV>ML+<$ܿ26'&ml   Yւ('1ֳ!1$!-4my"'1 .%}H +#D ;!q 8ݳU MJ e 6 &#4=6-~}hi3*Z7 !SJT$CM*B$۶U*cT\Vz B2;)ar6(O G$b?!!Q vr"J15 qn F) >4 1'.ؔն&G'ڐ|Q)jCP 2%&+N +* #Bh8g4, o@%P(Nf/  ~,B[)L9 ZIܖ&*7Z{C( ;!۴.md)j)qFk$ b&5%ն"XDYs ,oH'a eTS*Q ?h ; hfM pQa$Ϳ-T5Kt ~q'Q&Áa+ Az sr fT~t NCIZu}O @Pw #(  ~IZ# jSK1 yi S7.H"nFFlY\  [~4oOOA y c(&J :m9  !MOLi ( !$MI"/.@$k"(dcnV5'*hw &q2)K/wdK g% WCf 5#a<M&oF/k0</*.X c9 4j6c t#a HlۦM]x Jdz ;Jn}s;~5 T1 ',)? ,Ol<F @jƪ֭a&J\RAM [y 'QV ?&,t]=,!31v5.c+&Wk('$]C ): $vm`!l,s Hr)Q7}I3 qW& ٘01_$U ;Z'J   J ,QiW&-{9 L E,rWs*O'@ AtZܭU:)x%!:04{0] ڎM#( f6|FߋM'/zG٬V]61͇w6 o_A+9L(t6H
͏ Y9 _&rm tK}r P`$!-] fDX] xvq+M  '!9[X!eOQ xܭm(m,a j|(N/ +\ 0W+ d/J mcI [-8aawӳE r2 #%[A1 +Z %  !w+@o@Eg o!Er!Kf8f(y#.jDk '` cO lR H &vZ Nt c9:VEcN!1 <>%c9DPќ5%bR/2HG #qX 4/ޝ4 W/+ A 8 4 # ,VB K#7i7 Mh@i pu 2W  ޔs ݤ?!= okj \%*R;F0  *nxj'QK2 k Kr`ɢ&}SD Lض?v/x#(5ˮ~$> ޚ4 :6 @aGlk1BD  ͹("lScW_ #A A m8c{l m8\W 12dՐ.|j&$ P'* :0,24|):V ң*u OM  { e"9#?%"Lr  ڱ"yje$Q8 ; Yp;Ex 9٤ R~t2# #  B p. N:%#jBәV gu@/ ^hS,L hXظ8)[V0 $~!_; &s{ s F7 ),ѺҜb y 3ump94L5 u$c'hev-H 0yG)!|; j )!Ro Dw  Ha jvO5 > 60Jy.Jp;R&) 1Dt M  >!5 @ * ٲ+*> 3!"V ",'SY\ Dc#| };I TS&= f\~8R'l B$ 0MԮ}lfs 4wMn=\ a UG3I<m  V 2/ -Dm^ Z-I8# c N8"(\ Cjѵ+? &v X4p"A f;%&5 M*/P} ; Lxm O Դ'6 3~qq+S.uZ \j9u>& $F8hFTiDPd&ZR@I j):Y6Rw!k B X!A!MU.+>-]('M"8$&iEڌ &%OA@!{ N Y@J I.6V|>z  9QVK}  ڽ,*2Sр b-$ԅ$"`4 k:!@0B^q{P<U j#T A *..ʾ= 4 *I c~ K._ $7 &20'jb#~TO%wDo gE$ >BdݍW .~]YSJ(@L Agrd 7[ 91; j1N 7= MIYs "nת 9 q*x yVJ 4q_GS\Px Js!);5TW4'wk D:Q   zI+(#jHX2"y -]1Z .!*/ ^A@rv'R)/>$0&Y!pر1 e?CS2$ARij33g) $* ]4Եs1JW74/zB t "2 /aF Si۽^ NdRh Ay-F/ш /%Bwljr P5+!e9h (1Py^< t0b  ?9gTu p&  X =24v28 ,  l,""k P-O} .h2#_!>Uu !*S ɉ9 xS})Llu #) PQ aT3# #ar k)p|0[LUj1. wl% H/TR',%_ s>E[3 4. G "yB1q( )_ u K!(@pܠ m&i)؄X P#vّ `.11!Wę " 1|C2Rn9-1q0z.?%[~ wQ #  ?h& 5w +jvkw<  LZ t`rG EyZ+Dd ^9ZQR"A57wCuC _!\$ Z] 0 ' E* 5 v= bX"((7&g#^ّ{ONbcy!06I;2Y'D +hߪHs.0A@ S% r5C!  , !& nR9 MR B918.άJ< ]d)J'Eޝ}%I =BSqny ^\ I1g xb ?Н!') ͔J88u }5rܒm "R B 7rq f `& |B^* _  *  '*$ L )* ku ]w.6ܦ `p <$--jj'4RQUB Am<^G] Es,c/!NCN}%Pq oP_ ; v3ba*6(#A(3 H pe3PtHm u '>`) s !@kXy)(D  _]yMWi mMO&GR6;3#x$f   f= Hm6 1q2&k k9#3<0  \9  4c;S Vd 2߯*X: `VwhC M5% [ z_uX ݻ# 5?M+&& !~ ~7*"o(pQ 2jw-PA  d ! Ih. 6]$G6#N .ijYB^OF 0YX64- W  Uj+D'N'dD$(lgsI$؄?K X*r ݢ q (Qh I&kٱ _ \z  JGd, J\ :# `Y Q :S> Ys e g vo=@%I\`WRNlUw JX cx\(%8y Y% @y '}Ld$.!) bg2iM2{ 4?p %d>Lgz_bHm P/KO a-P19@>|%_#?'s$uA */Wt"#)LYE"8a 'xW, @5>#(,bo!!G - n-isNyuy  )( \@iZ#Y+ ; 5 LD5J ߳OT!~B;W'%2B\ "m" ԜҪ'+ X `ۑ0L s/+܋ 45 ) *~x L Tnm( 2\  B=~ J ,2/v9ݛ(+l- C~,m%j8 8y a4#?EronoS%^$ZfA)   , tO0=C( RI8/ " IAZXql|J&%ELP2Y&  H 6&%@ 6~ ٹ +7D *(EL +~13+AM* R+m +c{Pc-#_yψ$$ԊJoҜ^/g[is':@  D cf> ^\ Id+BAJ =g1A+; i"p$=- 2D]ݤY ~$t"5 }#/ WJ  :?{  =)! J(.Z5&{ ܩǢ>*wFN yAF*Nt1Ub~+1s/K q e 1@q*> "_Y3CA\#rUHbF))+QԱj"e#5!eZ%Cam/;⹽ߧ&l K >   U!"!֧gO gpvvl A /=W9g8%wR#^5/s.j_ 6Ӟy u/SupI)j _ ;) 0 >oK,0ݶ ~ _OU(P'k &$5K$Ѕ'JEB'C u^"6r6  J'35#ݫ/ :` L%Z'[ߋ j[ %:<S_QUA&Gߠ74% J!&^57;!ޒ I |,TXy;&" a ohқ1F132#0u-cY 7#6_(M~ 49  J] #'-t?݂z VfGT\I7 ,rp+1՜03ԬHvX >a  tO&-:t2e v 6bP&_ =[e'>X k `W #<uCPl דi L(^>8  d E?0 SxF)}5k Ib%c  V|f ZNr'"~'J|4" (Y ڑP[-3 7+fb!\' {B 5  IX *(  \I޽   y$G [Oo #;W˅u 92 fWnRIٮQ)Q__d3d.&V,7.y 8u@DDQ< O f\ TX@!RPܮ  _^Ptj ߎ, uK0!4Ow a  $sޗ -I)FJJ8/*Kg{["xg "#`(f*Yq ?W|  ; E!io }mr+F.S#09Q ; 6q );  Qak*&eء"!(i Z)H 9 @8a&Z pQT l<]?(W,1ax3!(@R߯@U p J-V*٩*+kqNC)25 NV޷޿!T,;Es'O(`p,OFyr I j= m i$ \=XW(\pO GQU s#7BZ ?0 jCh[+z^21Oٚѓ+F, WNdA;$91 5$SΙ( 5d{&bs+/F Eu"īN"; b ,) U 0451-1wd4;1 'ET q YN0O  p~N H@)NuL{opZ 4,tT')A!l'8.Րe ~k >Jph3{ ?uh&K; " ;0; YsAAC /nߍb$.UULL>UJ 7@"< X SmXoD |ٰ0 $/ulR &@HԖ _Op /yխ C/gHǹ/%޳IPO wR]6 X  <k=Bޠ$K) K N% f&N<5\9kN#'&G/D_r%|jGK $^*BV v@kd JSD }NZD{Rn F AM)V/?AGUh. Zӳpn ;/+kR X(`w)*X@7,\= ݂}  U0@ "I-ERj`N[ K/ H0 >S)T W -B$n \I qk $gT S +"/Ԧ%-w.nI,)9+DMK@%n %} w4X%;"(Ud t -2#s+D*gԇ! U Vva ]LiPs )0x, V yYAq {h~3 lBj0%&%IgI._ڞ:$*!ٸ2"% ^ "v Q",@!7>@ (-) Rm)' EX g-#a/ ־ ! Z4) KJv :QQfZ  )*ä3&+tEkƿ X  D,j"?= B ! " QpI0#wxܤ ^ 87ef<%!6Z[UM~ݓ0">q(IZ }fQ|Y + '&@T~3 Tw f v͙" Y L*-l9T(\"$+.i7)H(NG/.$m _ h&aA t>oz % B q  O]8M"H+ 9} x~a ) @dsO34\  Q(o w?eM FGkWD1 rU ,:ىt !"O (bFd 8y / f+&5P + GuQa(n ,5!%$3l;p0*Q7u!0W+Jha 4n/  KP+D2>ސ(0s#O}`p-1V^,Q.'WH{ dD fB%n5Ę5/+I \8 ۙ`$d"%"&W. tT!." f=3Iq( }MW%I3*d Ҟ6 ItbT&!V pD\, _ 0"}<+:J:w :Q:/3)+e~ PFDW!M X & < &H $ '\y \d AZ 4XU  Vn}sE A0-/A!<J[#_[J)ަ /1QݔT+i }SW!]&  ==^HF&ڰEtc H / XB#437"04[+h J:Q P5Y~#da1qoU-TU/Q6VBis  BzIb  2*N1k.{E ] P`9 &vY"3/H Q%ܑ 2WN R-}"ec.e vmxLl1l~Y-8$ :-Y72GPq7s"X 7" -~ if-" ˹Y8 ' g0 =I ,K%| ptv"RGwg+(S4QY&#u q'!ݣ5d(L#(D IrP QL"( }_" \Iv1 $ #$GSi 3|4~.2MK CW1^ l1 W^# "\ k( +cQ(Ho 1 8 f3C+ׯn E-qS%DMO'TS  jq( _G׫4Ӆ+mT*>)9 :f ۮ[v8KU]̢*% #K.ՄG$;%%3n D kP; :& 6 Hxf(7 evi>S3o!aCQX, 5@"_.W wyuQ(J"_R.'&\ٰ,-@%k ver.'Cg]ˍ/5tD֒#) q|-e 41#WNK w`6 /.9%V~(_ jZ h=7% -]vecL#CeI] Cd%eI "41a 1XjV Hs{`u   9{ 6 ֆO`K u\ /!N7C4QlJ En B<ڀ c R\+M 0 8l^n L ;.$YO$ kީ< D,p'<? ݌`2 Z$r &Փ7%? R%&Y U| 0KukF( PS&LDH'1s8 c#x$ </vd%i p.#=OyUCh5-?ߪ80pCL OXݬ55"> 5"/} zѲ8l!Ҁ! Bc% H!Y%^ZM) 4CP* [ J`o*kb < J6%kwr)`&_ e+? ߁$ 6.+Tߟ@ )XY)I)>(0 u$İ5+Udw] UqWn1U 9ER,ZO iM #$Iٸ E ugspJb{ C~QjT!w" a\#~ER29 `R+L)#A  Y}+{IYZ5QMc7o&NX j ^YiE&!2v&*0] ]pce:#"`9 PEBJ"D] } QSA+ B j: 7N3%Sϲ &  ), 4j3 6 &#,[ 1 ,44֋|=y%[ 7 &#yݶG &PYJ V  vN Ir IRtc%2z-1$(Ӽn`"'.- H#ND!H / .?g2DSP} |^%U6,? 23h! y #u&! 7B6%;%0l8DpdQ  )LЧ"Qܳ [ 2--M49^u^; a&y/ !}UwoaK )qyf 7@n7Ro8K~E=& K/1Wp<!#Q\ ؄w (Ab.My n T! B ) V8Wp/q)GrW*m0̩~  Ce Q-!kHLJ    Mʻf fݘq5 Ib jZLt { 0zl1|M bQ \KP  ? @c ) 'O |/R9 ܲ#TST Nvg@ Yς$ G`[}(:+#X؞= 5k-d#P` @ 6 :-0Ί6/&& fYG&[ UD#S*=#} G.&پʿ B@ C< vL+"!, tލ$.ݿ 5g _M V=dn/fx$]#!4J`! L  _}8nsT@aC]uO NZ \˙˪`fQ F![(t(Ԅ"yqMsOU !bA#ة*!PGRa F]VY w{Y?{' 7 $ z |y^" {h'd t@  ~-ws49 &lr !p" i} )] UA٥ T 9\0){]J!})!o "Sl{F Ts|h$ ݺ.` ?TZ   4R #.0(@': 8%'!4*  :$ $))Ԕhi7mm˖) i  G -x ZaM}WE, 4< q0J>4i  $ ]T\ܶ*:}zB V5T  ,uDcX$  ^ f+ և (!0$ڄ am   e, y O ?O $S {@Yզ C x- Z ^jBA.| enNq'd˫$!ZlN*_C6E'$>d-p" {xK 8?4._ŊA$) {y~]: . : BdЈ@,t-% -  h>3 bL MTsS GuM00E|v2 U&{!!A%E9kwpe D \8x?Ot LiI2^kٳ APgS9c !"E [٣)#E 0)Q| fBcIS Xw 98A d ]D]_1. Q0Eϸ9Q $ 3ѝb("@#k3jc'Z dX }$ 5-2.qo'Xjr .Mh*^4%8ك}#t SZ,Y7{1`d $&ݾ#@ \fBX ny- {)0LT @ d?VH!  iB;{Z9k'}IVY vi[z1אN 28w)^cV1Fvh8zoUE6(|VL!SH D/% "~ ]X#'oǞ#$*nۀ&vS. Լy3)T>+L HQe3Y0rgFg&)s5 _N ,!ÿ(4 _"BԈK 0# "2G$" 1>X '5.LO Dc0:d*rN 'tu;& z'y 2+ FB! 1R-*yԸf :u9 49"G'$piNOl O  5Fy22tytjnyBl) E|$ ؚG~TTdV 8[ 7a8 19ޡ-GTj:& ' 9К S ? s2g a-& tY9L H;"U BB ,cTU8/g )f  $k&t!d$/ q&#Q--5x \ǷN^ % F9`] d>;)Lnc% m 5V$& op$P|{UY XAmj [= >L$89(ڃi ' vWW7K[pfV X>a5g|xF"d80 c0$'W 16G"`J&Jo5O'9 pg.  k],$vRݨ!OfB'81|#_3Cޠ$%sB !G< A9 fY uQ-;_e (9f> +Jurj XV'$}A|@(i->X$S"H ]Mݭ%kav*lACԽKJ!z0T |s#[{L r j ѳ65s 7,RUc+1#. &ܴ Iݝwl.c1abraG %X-A| s O_`Fu3 n*q7 N I{!Dd3/NMډ ;P >atu 1a;..WBRAR_-9+U(y Uh]:R5 +Jʟ ,# R, 5n., E/% 3:X i=<u:2R-}!]#bTӒf\rڸ #V '%1ڿ(aC;5kS,F9  A|= N" K/Q[|c E &*݋׊D4q I?DI>L I# 1UbضRyP `-t8F8}," q~$ 6 )&&)[+.lLO y#? `   [>(. &w"ۯ MDf#ie YM[ mP!_ j 'g"0fuD!E 8K/8R Cf sIn ^IU]g Q&W ,= F ?P # +N:boj& ޗ˃@%RdA 31 0o +եB)Y ` f#"&z mf1 rk;M%M /mg &K m]I} `C "5oC  Q l B=+-,Zi)2Mő2 4r0Q  6"1 YM 7 GC?-X F_?mM}l "$j7 9AE/=ui#,'l pټ -Oq`(1YBaXj$L #%L-}L:  8c5!)\Կ> 0v} Z>mT D.I>1$l% 5-QP1M k)AbX$o Ns*"$s 1]F4F Zv1c 6&b2N * 3qd-fj@Ճ %SS"7  `Mp.Pi* $@&7::/rd3b gޭr'~](Yb*|y,##&JNS{ '#wƶ߭j E ]A)uI&g'>\O)[Ua< S6. i 5  ? 2 Exج0D^.=\D ',V680{ a Ws!  s @$(,߆z jc^Wl+ _=pQ#>&aٮ G79?>N<; M* ܻ4 A S H.aNR X"- 9e( /NA;?"@eKJ" FkO  e`GW> O?*  'D -jb_NV~JxD" {ޣ N q DT"  jL9(hN7];ߡ)  L ^*;M  $)r .mU R+m/W/ fՇlO{>!ؓ5 CGr&*w A ^23(.?WG- NJ<3 ] Ti(i$=n5*> o(- <6:/7!Kh %-ܴ ,b = C NV~<})6&=De7^R;6| VC ) a +"Cqd&+%r)s R0 /C ڗ`_$ (  B ugsG -s^YZ|TG}igBt04*] ӧ &t۟ ;M"Jj:aX94.Ήϖ<3 OU'q/]mhc c/r-` i4IAyt/./,  &M! D w qcQ5 6>'Q?]f h $ kMXܸ'Qs *"5 ^ $>ۑ(-!*q |r R y ̾.3X% IT/7f M &?+CEd3>_Vބ 81X -" ~o  zK>?`#h &@z6 e) >G+^@g(z FN[e ^m wO5Dn P:$l\ ~L %i% G C3+,={i odp:L$ o ]7T{'+y=iMXW# F] s}~# םQ  o>/PA :$b';VQ odM- a &GF+hb vҘ,ac%3 ч(!& JFVTP _.*EM? ( '^?w(utWow V/i&ރ  /B{0F#Nܞ)*](Á"(l& 7 -[zW18j7   j$Z >"u.3nKI){nt uK1M'}P spe< sg + ߲ J{s Ѡ2Bԙ]%@ fS.KJC 6o^ @nN)D v/1{A /QU <OR@ UK?1\v|2-P[% pna,yR : =[DppW:j 95TK qsh._? 2b,+p!#c 2Hƽt = 0&>v8 o&=k G ;0f(lVvK *H  o%iDg8lIF3JT d+ MU,,jAաg3&-syJT#39E'v2UcY J! !HKOR! |6}A!_r+P#|Q΅N [mTwwu Vx t,j1^T{oLT9T.7d_ "{ >E te +nk~I[Qj8s+ N ] [:$JP-q $Qgi.%L?( hf['@b (l|$a3'* Kp5 m U ~g YXc 6BM@1 !dVc%(>0 D;8] z=1 7 +~r \s   x|Xdi7%0;dr%Dq- ? dX،^.۶ F tkb@Y MD  X5eڰ0/H|&A4C .!> u/ai6(;kn>*)uR'˱-6/  /'A. $XR, T{a_]fD%#V (  "vt%)&oq(#Dڴ [p' Vw v t #q#U JM% > H  Cz$kn -܇,-9(h:#!s*hZRR&(KOj*d :oq? ^ g2rkt uj#wW{ B A  ު ( z()rs0#)GZ #U*a"sZBIJfV"636 (@|V4 }K: ]'' x. { Z+ N:Q NmR 6bڈ< |{ H  P5v.ȿ2- T {, >#@Z|)/\ ;"Dۚ !&ie #)mGal}޴3.X̩b " SPr9l; D[<5r) ItAZy= e#-5yu TiT S3'ˉ" I &*b>0F ^ v ' ]w Pc Y Dn#- 6 c;~ Ajt UIL& # 8{"c 3E, BS%W#!ܴKxC' A Z $_T` IxBW#Tq7"x#BD& _)( S&g!+_[ D=7 dV6[iMT d   k {J1E( [X?19܂=r|&ޤШX] $E* $Y %_ +e {iN&^d 4' J \W$ 9 YiOuX X * GGDz+T2| 6& Z0S]/   #Ԓ=U' my0*0[Td)y`. Z'( 7PP0%@+ 'i hnL o  ?4T ^N/gߥ:h N0px :ғ#^ȯv!I"}A*3k\M- 'f3M B &B1!"-9%\X}  l$2U N T090mo* ? 1 mТ-lh%z' a !yJ5  AQ o \0. v1'  B21(ԏڃa"1 UX2&:&KRJ xVҫ0 ! KsHu<|3R6aD+֬  !P.&#R[( &5X R ]Nvt  pWq &^rG']b85 ~NyKG?%n0 LS1? *;$'SߗoK= B>- ɀTJ!$B2w 2e 1 mUy-?pp@$! ,|( UU'FB12;\$ q(&S l$/(sE  l #0]L$#*h " nճ#91#O9ô'Ui؎ Jly#8 % a CUC[ _n] XC? j 5P8! iw' "476 !݈B>#f9J R QEh 7 Yt#*. *@m9| g!!ϋ "ۤ`2B xE*#D(OLT+IP 4.RS! GLT8\~ '_W(hDP0' &,n8}ۨ-]N3oM ! A#EHZd x 1[ kd c-6# # f qJ _C 1j>] z'  bl 54p ` 1, c"(@ )eQ.#Kn!X  |.e8%@#n%!p3u1)0ܩ.&H {3 <7#V2&"qT! dɑ U $"x-;*14Y [:9 p 3̨ݣ6oä$1rߺ"ĢZ36f٧oRG! aC[{ݧ#0F"wh2 1jҬ?+5x 'Pbg9*J' No.!; op\X\"2 c> Q'% غ2O.PGeM /@4Ȳ5AU[<2(#3#-M# l U*&-yIF D YvkCU.^LGS%uƩ!Ijڰ0T?.D&M* Ej T IQNcP;SZ 11.&"H T If?&] "ar(5\'bC-S Yo"!tZ<Xb-\V rU  E ^G0C>_ - v ' hYk$" ala1i q 9 ^ EX!@x L%?;!11٩5 !Wvz#5% /My+D gE 9Wy*/!v_G0$5 2{. S_ W= By  _|$$ZY!,ض**H8 4xecsg$vVr.(2S3+Qu -"&!:3-)JܚLs Uon_ɶX% CG Hi8@yjV5 V =[6/#' y)D3+S佽;(ݚR ; dvhZ#j<Ln%Vhj&";?nr.|Kp3/)N"wfG1NOvJ%WZ5#6!? )6i 31((g _ x Z@rV B54ACs Ϫ1X J%t !O <\''9v"*i3:ߊWN imHj. [*4'67 fg)AG ;$0 7 /D_  C? S{A $C ~mW$V/ - 9u!66҉q@26{W U  X< aטݸ -p$$@!/ po]Oϊ9-'JT(5;t\1/ ca!0-H ,e|_ 28) % grm07(Y!%` i 9V^B#4/tB>>C-y :2.;4 Y}˘+"< :| r DD\/y .5b2%nL1 0 F/ g  !H+v Cܬ<  E:$ :;rjϠ !-6 Xbޟnk g 2eل$.%!^Ѣ*n  90!0ȓv+x!Oy; ) L?H xT"VB}F K~ @D! uY1 f;5+/B fm|^,2M K܎ނO/ڠ Zp !J%wM5 >ҏ% U, P/ } ޵ !;qln ++Qk  ! ~̐)m WAD\ _ h %+) p<V4?j>/f .#y/^ ^B9 /*=eE&N HL 6&s %/rEEp (])7 0?_t8ErJT~j l&qC{ hJ6Z<|8 fh(1O+ ?[  _^v"Amo'S+&Ssn !* 8?D!; GijX { @ &KNW JP[@L,j#{%_{1Vi8:0:-5gO9 V6 }-eJi % !Ua- - ieތ eqj id[ߌDKM HS B7]mh13Q -ä2T%FU  {$/Q Q)%Hrg<d +)-@ٌۖ2L] $S7o/9sX F $2ovsg   ,ɱs1 0ǿy.(zG/W , )= ݟ? lT Q,<ĺ+ &^ i;w &"_|%9c &5) +  } ;C wa #-e@ ,G($و"K A;-r!$CPS>;-ڸ.lw?}7<nUހo N"K )  `z3) Cr=~FpL z45e^R J# Diu3 5~ uQ_bc <1"E* DlK%txN\ b3[7|7F1-F βPUN$[!' xn2Q# Zb l=+ݓ |O 4\P6?j/BGxFZN\#07+kk !$! R WL/rJf* u"uM`ZK \.I'Sy | ?#&,جM|A u&H*!ӹ$ 4c|1.ؼ$ m-#sRO 4J Nqٜr^.1{,-~*ҿ#,0`%|Fo^}S e"@) 1( |m=v= P!Kհyb$@Y N݋-t+ڂ- ED ` ]g%&q & BWE] ]z2<[7w"`1ԠT yn*Ooc. b~1Z+HS71+ 4 Oӌb)/FO d[|}ڦK#.Mi5D QZA-)3UU+7+̀/ h\ل/I 0aR'o [ / dzPC ;  kҖ&z K {dwh3FVݵ)$2vL= +A "C?XEm|4qBg"s #hށl l/ eQ nCݵ\&ztABpv9J WuC([}#$vM  {)\b~Mk=e op | rt ~ !' ez60^l>hW,k!=r7nyt$&9zMԕx/f)07p  rp CU7b(i!<]$_r'2 x% j!/R}\ ` ~}"(#Cc  dj7-5 !jn`4&3!{%n7:.$Cr eWB^2@j!)%  ?Dl0DwsNR" v!T U a]Id6* *@t -D́.[$b( =/ :3rUVIP gL=]?J%%J+ Za P*!nh"]=; "G ^CEVyZ h;A K  (xX7` 1 $v!&~vX Ax b EBCB t > D jJP+#Xm N  ?|( OZfJD x#l%&?Q ,B(X՚P# ja\eh aѭ/Pf9 (3'v#O ?,bSt:-.  7 w V Zg #=_6pHxM (L3.e'|d{u< jJ/c ujk1m`0t:xlW ' Tpq O fC] uBhG li } m._& ` >S%Z۫ d</}!3ej 4Cr߄ OfZMc_.&bWk   xP'~e/* ,*=1!!!2R 'M =u Z($].T 2 O"w W9< 1B@ aϰJ 6- VA(@Xٺ+Y;,C]X6598~hK 1 C J:,~||!-P^N3-z  c? "*R! $g+ %_w #mz  zT%  *T o0Oэ M~'O *F3%db0lA?BNxk `8'$z+ AD#ApxH*>t I'cc ]%I)jt NN)(49Bq* =* N3п*b*:2gw; .GS+X\!v#-j#4T @ %yk<~ ^(.+QVṈ,<0'x.MԟbE rr"M  5r#7F_ tJ K #? s?u  bpD fs~ x,3׹' .!n4}=|/ ;\XI@zkC!#@ =rEh < &,>$EUc2B b];m9ق({)+P &+p K)4l_}Jqjf !x8 =Q}j+h ,6ن3. 9<b%<(,g <Kc {7" .ePfRKޤI%js~߹5!ڢ&f @_ [x:ڳW(*  `8:ؾ)*O ߠ+05EIw> L -UZf0 Z _ܽ 3R@.Z;w s* 0 #2%/ M@4h!! aڊ G(DKk7Fޝ [ !CJ5?Ml5 ]:X> T`0"ie{>Wѩ$3 P!"mֈջ^, 2 D6!jDL,;6m[ \K# wX & /B8 C ״H W@M7aO e[ :N m7_ -  #s 9ݪo,_:0+2~'' fM*m;fP"[ W!rQXb 9 *&{ daH6\%*1kʲɪ% V fkuaZ $ 8S^24H\ ^ c!_EZ  \S݈\cJvl  e (UϚ; &Q] %2& ߽k$L?~EQ C [ M hN `Q_3`-C-r,h޲(I"UUuav!f(  !# .Ye72W SQ%A* - brn^ V +J>_Urn 7}+ZB</3wX ;p+ '.pHbK.e%1'0d?o"wg#X? C;H N8 J6O   y!pDQy;%F_D 9_kcI( E`P k^ !vs>UJO%'nA Ucqc"3-طx7t M ߋ47 O) 2k% VH% _#*on 9I+3[/{۞ ggj=x1a.X] c  N:ܼ.gO5V {u-, t{ * E7 |qnR? a+? N{.)`E~#V'a-JwCQT2m  Q"@k :t؝ +)E%#hD o07%j /Ӥ 0WT%:`)3زI;/>-h$@: aF zx]a,x5$-U r7c/R~x @A8(ME .%i3;1+eW!*TL] 4k5C!,Y67E @ 69+$pםM%&,Lط p n 2NP:W~ڄ&_B+C  +  >M"`Ԯ+ M; %Т!8FU1F1N  GZ ,/~s e( /5`h"C{ _Si-e4"{&>FK."N7?~Z{kd;(q Cz~A=>#*W`okr <KLJec02qKکo 7 j7`{) s5'd_g}EB%xg; $pLkU iWl~+i_/N g+22")mM'_, _@ 7 ]3 fh&zyBL @DN^ yRy4"/tu8*y!2O c,&[ $W(a+5ܗE!C5 oX@=%$tR5  RIR,{F 3"-23M G$A T=a;,(Y8N4z#:&s^z jib XT#CA,=a0FH\tr m޲)ZM|>$4v@ 6&ۍ} |"#e0] 6*N̨c( Ws$} 8p+et#*p $w'U limփ2E4V %:OR:E' eu . ZhUv>f ǟ1WOg K\VpX"A*blhp1/B ; u` (( ^`/50kf o :zk!e Ax @ 1s Bi lD 9 ~ rr^ .%v&]*ݖo8)CDD>C! E16|I^"1%'#B1} ZO& ~#_ƓI!K0-x4!ZDc6IGro2 (2÷M6n5kߋ> &84 ,l@'"dC(vC {#f G|S |   Z ESC S+h 0 1@ /c' t/J ( <]C. ?O.E'q B] . ["]cWiiz7vXPEWKN9T V2 "& h :CAc 70=˸;  I to)B%UY/1xpϿJ BB66{6 'nbh  Ո37y:Nj04tK"5!Ă.$v"bͫȑ]%dirT#g߬"9yJ B PNj< _R   ",#' (;6 ?2:> ,b[cpV G    NKSn`  I  S B (W EC 3 A vn(2]ζszU zv S?Z)G$ 0$| pal >vM3s|ݱ* 8}N3nX"&T֣ 'ng'a(5?o: M@};-qO)OC o %M 'H4%Y g& { - z|Ze(RK *6lK!\)V8yaa E a!h-v 9W|/ [!c@5Y H^T; C*#Rl{ m :w)fqZ-b LIߝ<2 f1X&p#5d   \xF+w&>ɜls)pDEgx >q%$|c"% qZ wR6,<#4iB=}#LG   ;/=rB~k 1s7j !;G9;aQ!a) > 1q 0 }aL^1<| 'T0nE!  o d]5 S1'CBdeMm?E5zb fݱǺ)4FnsQItx&c dѶ!.4(W peHdݩ le%M?s&>e J,2ɹ Y +N45՞N  *BQ!2k"~[ZLx5}k<(%^Ջbpp 4| ]7"pb-H хs5PC9F{8j߽T Nߖ8*,_$(&Juc 3N *L.\Qi U]=<N-R% w8;++~(6}qW Q9T@ʜq(8&f:_ &WEq [ *+[j#"?ޮB 'ia2 6I3\d52K ,(]0w  B /Z/ G/O C=q 2N7'3n$g79 ط (N#&-J$ G +Eϒ/2+*+ axOP ;Z >y3( z b(dF HU^<.( o C[_+ם]~<y>w9 a( /pc+ZBhw {4 sF`i71g uH ̚*.bx'$s_ !/ '# lE*  He qd!^tQB% %+ S dr  [$)w$! " (9 l&rPFx F/\s' }0*;ba4ze8I,E%s~ _  JYOk* 9 "!-I! ް,>T޽X:+Z( ދ( Vb6AL/=,t [` d)ķ\Q+#%:##32osU 3DJ Kx_ <%f `atg~9S 1T T& F7cH zB!'ۧT3  ]2 }1޲U W }, U  6H&KU]  ylj $z s+djN(L}V GX%a wCzf r4g ʤXN+N <J W[\ iA;*8 hR a( #I n 08 egw~8'N^-U_6ީ=-X"p"Sl u u  t[ Tk( 4?8 K 0b!&c!:c*Q=THuD9"@J_SaF # U| a ^s p R&Y _,Ս?( :`&~:t C` R.G{mk M! E ),*O C |@!ݨ,:p B&|.,w$6 <R)NckR'e!V܂01 " ~W P>C \L=W "|UO^<.+ w>Ա=n!y=maYtr"xE*n\&/ 6 w%/o;; -938 f@6 W- B>| fAv ClyoYp] "X(r^ op 8)+ x): ;.= =#L!] D2 [3'AhEk7 ̋J w'>82*"\; !Ox؄>+ߍb#n {` pD2 6 Ͱ)0dbC jD-w&O Z F\c}u= 4|9"= nh~ "V aC%ig ? l)` =%V t{ OJ<%,ϤF > (O50ho_,U'rF+ Igx:fK:0%tn')b4 ]&"N\,S$*< kiLX + {T k*8Sr(H% %j# iep)_) = (.߁%=wjm(k{P ]D{hA%Eځh oo^LZF a9"!a:?+g H@+ ǥ| 3X[Jy)*s 5';? يڐ vLas  ,όЋ! rb2 ]8Skݗ/<9Ϲ. + B$n(o_ mz 7lR r  gCجj \pa *ib? +P wU  ,$: n#T) H[-  yie-P t2 %6n$h:I k5\;nE- \ -k4 VG <0"Hܽ͵'+#J,?Eu54 i dUn$ Q' J%/7 5d{)e *Sc2 Fqk.  TJ a J +n {,!. of': khm0W`zG\(& % )dh=0!X$#t((.d6spT',x[ });z}"p[!>jMi  ^m i?-> k-S&En4 W ͗)Ek8 .)z<ׯ.T 23 s 64h&SVk\B2L{& 8B.R+ZAm ٝo !v֛+nn ؄n i ܂fM}$" I4 r ۯh&Pwnb;Ύ:($yoE)-NU yU Bm Cޓ/&TȄR0 yfa v4 ' B`$( i*XS q$X$~v#<C iLP (V5! HgD4!)==% cH7 <&kW- ߉[  ^vՍU!nK]&p= V L'.x*0W F>j-@ % x iBj*SRFx )' >M Rm_u4>- >TQ j= $3(:J#?2Yejt+'Y67%"ޤT q koz^k3 }* 5yr -60Ϗ e>_4 (~O/^ b{'F<z zqK68NDdPrI|!M&|E6' /$6z6z5I7vl1"z9] C"Xhk /pH7 A#L 62g q~/%V"h3 Z0/RW*'y7$g IP8 wׇ;#b jZZ b\_ q-!,}" [ϓZ Wo!#/  bڛ||-  Le%.ܥՒv%+&TXغm<G- ` {  pIpb7e[ p>O;!S%x*5=GaYq0\))A>' >h(C۳1"afh J[h&=$ TvM u@Z w`-|Hb ;E\8 $!ߪlS  jME>o:9 n+[;(5`Ukn - 'B K3 b ,8#2g+^')$wKZ)8; ي (O={  "us\y 7ߞ"; tT@[/v/ ;L#Fe aVk _Y,V) ^6GK[}ثjl k$C(˯#qNTf/Y1| u\sܔx:8NK  Vh[5 c AsK "(~A7  s 3E,ZΕU gL b8,= ej (?!:=&r ^ B?݋t ` V 3`xe<h!.f#  tc4 Ojh(`kYZ h#V]#T%j$jFB *$*'lW4)]$o etXv}24A. 9E!sS u\MX!G* E d!-A&K$6  !QW}#.*:,$% !ά- ?<w$ .pmfU H sU H*~(2P# #84Jgh7޸0+T1ʲ-$I'*7 &w AS)gN =P"2 ]&!9ŔYRTv HB*@7@ e0R"J \S$1L7$ă!v*ZsP 5g"T8@!Y qrV yO@ 1 F|!/'n8& P  ~֢ 5:&>ofZ( , `V"XF :eap D+ {_  #3(L0! x4 j!c%Tc g`oN-s C2@3P " 8Kذ 6q e*AٙOC& +L#eb4^o ["X.RiW x%3rLo3L0.^%#8b#R$kܾ)EYP Np.   *4U Bۄ >#? A@2 nE" "%? m)$zgW0+M|n" O+ f%~ +H^s IxNv',`*[oP ]e38 m6 !.7~Au [/ PG 3} V H}+vJMt J   }xݽ0 *Q1P: '{Y/HgYOо%(!σۃ  j 'ʩcF_Е! `X] ]$ i Tx `+ p/ 33[wPZvF::% `5 feL7` (aFK2 ws  {) @j D|f X GX]S W)T;56P j6q~ oOw$$h)" "P$OЗ X2#m+T& GB= eksյ"EvҘ- ].[wZ3#1'9ic~ m'SXAq BH] Z Lbљ6n!wQEU!  q` %| ~mQ+g1A# HnS:2 kYw4&5HD;5D'  ""C X eS`P# e%WV>a>S`[}sį7j61DlHx, e<}e~ - i. :7b)' nu)_J R$ Z+a' N$Y!ٗ)p"(nէxl | M8 bw],̆-'+W D  z$ԱY  d~!IkF)&e % %CcQ0| Cvh\t8з$ uPΌ0aH+bm4Ԕ /# 5>!CX T [ fE\78#++{˚=w(-F&]v@ Ga -e ) VAG; H qc.ښe4 #: d0gb 'ۇ *r Fb b *n G_%&p͛܂Xs:F(o27+s0ܧ /'0v3 ch* Ӥ1{) =CZ_S ym5 Cu?% Mڿ%1 ?t> +%lg&+*79҅Y |G>&{i &|:>\`w(5 4$QQ#v,gڕ"i!<\#X# b>Y*CѬ< r % 0 da R ~H+h D2hNk\# R-} m.B&J /]V !Foy&4ץ|1LN J T+Ks5y\3Y#60 r  b^cd_xh+W7M -c'y3npo vMPoJܐK ܮs4j.7 v y!kڵ" 26< ^Z` CX̲u z& 5` < %1^Yс*m{79|Vn E * k*O;(h L{U d wbkVU6 *"t)Ub#bP$!-_I~$ {? *hڣ !4h" m * w_G?RQ"Y۠U avbO1'y#Ոh@%x1-24[n !wԹ4`dYT>}[ڣc'L^|kc O^ < = o 4 A$PC Wfip= 70V xqUn] N'$!#{ ܚ (OOh OW #!w lTJg 4,hYW4r(pC $(@Y+ @+4Ss,>2=!+ZxUsX,/&/-r 3 $ق׃*y?_M֞= a8i;Vt Q*VK dI0 x7l k -F_ w b8|ۅn)L6/['dbot y  = ~3l(LO"ZW{;.Qb;m  1' *.0+X}0,w"%(C Y o}y TzwPn) n,'sM  Da@QxW ;08,< n5AP #x0cD *4&͡L jtaoK qO)$ 'w f<2_EXk^Y$Cl ))h,Cf7.Af!jٟl U!g 9m#)}N8 4f7 /.-(֝   axRW݇! +ۖ >< r 9+;XUaF gR'P%U2 +!rI$ N''c !&i k .*z &x] #5l,} D& H!Z !: _ (b"*O4JIϒO,&6f 82[&/ P2z ]L6J  I5lJ}<zA,2 sR9 SR w mu lyDF *)"Q9\3 V8E  ڧ&"aE+< Y:&($'4:- h8+JWlIY"1. 8 |f pc3I!т$"R4+   zL#T z*%m u2Z z{  7 2ŭ$ l Njy; j&REFg `!̾(K b} #Jj#1@C G  ' 4w4TjaZ 4 m4O-cN1'"*G?a0vxzn} <+~5 RGD$o& 2 70'+#Dw &K[K+.(!{ Q1wry 0 psM|u!e|f( Q`oL+scc9>~%n&#VV;ۓ 44 "t#sAV> .[34F/ #=?* #l$Y .*#eJ Mg Bc T(M"n 0uBI""<  b]>r0*F:[2Zֹˬ&L  Z;.P#*!kVKpA Hh٦#.(Ž42_1 yr eҽ$ %@%m ' ' ,M+gדթ5)%t Q٭S$4hޖ| !UWn-jOg҃`(N6 +(pI0k/}4"|]" k?G3$ڝ_mY3u]gI$&7 K!0A W Ka֥߾'  3a"QʙK5'p|Ӹ I bb ,A_*5a_  % eɷ2)iJs BcVZ z 2 _p'+Mưt}, J  F|_3u#| !' zY/r4$ a >:Tk" BSbb O (F +? (-SΎ1&+=IqѤ1  (R ۥ֘ME ,e )i&C ]C I Ex$8AKVR a-b- l ^iE  H ,"PQCv '66 Urkܩ/ mq |a >'o!Xk%Hw:@6# qA-׷ DQ G cD%M"6 !pP,|o . YNo898 [#5,`k5;f w[MFN56M $8i &o;:{+*YA6['_@+"?BG #w~e>-KT > = 6B 6  kS<MJ %A m P \IO$I kN ^ bz!m9Ka1 = $i%'׽$-x;ًƻ/$dq@n5Y h4<\USA  E@<p oYT J_  K(pqW"1. sl 7 QE&( ܮm*e"is| m  ] @mOQUQ $];D Hӣ#)0!!ҏe}"19;fj#BmV ,Ap+ | S-`nI' 3% u>=$ f+1G7v  gw((%ݯsQaOW'T*NJ &c%y%!51 "/IT Ee}%3Sf}c P^F ɦ(.G-?4[@, Ek x \ha* #I 2 G[0( Y F ! '0iz@)T]0#E Uhew5/ nM. ٬&QM)bC 4aQ w $ &$ 5`1 d}$!t Ab/1oH| 8 W3(x$! 0 W # In lr+  Ede-hK5+ t ,5~.9 rJ )v ݰH6G"WlI/+G >KA,k J 0ܛ- Ru]gB j " }0 5M #q!B ^`=\U O( n0I1& Y*]/'-\w'@/ʉLt;  BU1M.(5x 8=1 "-[R (iZr#;Y C3z fuX6)%k^ѓ2%d >شM&A/ K,iBm="e fM\|50IT4niW B4'L l[p$64cIشA<4?^ >u " [ CCN'Y}X [1r`m `$ vi; ~^  ?l@& wul $a]I}H. `(%\& ' E%|#e He\( 2wAR u V:V |) t\!#N-ۣR0 ; [L< u=9|:i(r!ޅ ,Zg)8SO/}Ku"ff t%)715[HFV\ $t WiP@!eucP!!cem[[!E)`5|! -_[$s 6u I\}Sޠ6 =09*Ly0!)rw f6 } "FffaG,b'3N$ a(/ v sy# f  rOS^ O';(<^&a   -Kߓu%֢*}6|̒x#y% #n);ˍ;,kR0H. G z >{:}0&O;x y Y  U-y6+%AOβ@H2(g.$K O K1( d:[)pC ߅ 6W8 b Gc7!y)3%( qr[U"Ib*A5߈ B?PiS%+!gI-%W":*ٷ - ]y U) oi'(]IdQRr1g WTO")*wSJKz#/"'xd <t"[{" '"+3ʸ%nQ݌ )CS2 \,A ,Ji)Ou a#6bcjԭٲ T  LH )N } i||lV+0{ǧ&'$! gIh  # \,T# B t'T:}r 9  *5 8<4% }ީ!eAxA^1 bi| 8 w$D I(|5s $SVm w6` yӋ 6  ^^$ ~/mbO[Uf0InIm N˓6 Q&2H*̯߮  o6舿M(!߳d *Bk$-cRSI_Mw  lv6 ,(8tYa"W<٥@ m { Fh*=bcO;c͞%)f|a]a ="6!%j  3^>W{Z #N27f$HGaN 0]&Mbfg !cfQH]׋ t \4+;bc[:yZW ZW!%ޓz^/ !Z2F$!Tܱ*]JK#d J\?++iDBX$ݟ M&8QTHYO $$ 9&  _<h'LL(5 5#?mP qQ Z  l EAJ-! hw5'q.= ,0u[?(N?Xu] 5=St @4s0 i} RiZ! ]58 W @zV9'B")E Jle2 EM<G ^, v  Qo7]!*$mh #W ME,V9V ee#Y#;"I!0=ӊ[8gWް5Q d DO /? b&e K M<0!Ȍc& YY=ޱջd 28,`E{ =e #CƠԠL5`[9 p? A3?ƨ o i Bݩ+| lux  j;X rL 5 gMZ+jwXnwɕ%* *]RFh2g,3,2fG[H,M`pz<14_+6~d$a&[/L&Zln FȦ-&C]|0џt&""U/7]}]`< ,sFw/k %#.S3tfWIl  el9! a m 0+mJ d<V 3TaAy6>. {0,y)@ ;m iJJ#' C%QE_)m  [ "l0 T9:m  l/w}0C( CSe #91#xգy%nڌ*qΚjn >s5q_B0eܸU4 5&п_ 71=)kZ8B}& kUWS A %,DW Usm M$x4%+8yߣV EE <; g' :Yf%iS*C|1#A+iBswZ [NJ 0n RL,W6  g!b) ڲ<w )VK $^% !6-ѥI X$/tMEY A B܄@$5p{MӋ."X4 6|Yh| 1 wKAn*# d t vAد~0'j >(w(,q&,'rc  _ tnOq" L &/ Zz Vb=G eO~B@F*u=|0 .>fkh #wʫ `h"dg@ۓ1\:5$W o .x-J$oG G6٠-$=nSvPe&l 7ls /  6c|8!  !!Ei _ ;b|mH%""ϥ&iͰ7#ZΡͲ)e<A z iR4 kD ( (U k po(B!nI6{%OLmvI)"|2,\|4P,_%g14B%h j#.T֍PD aD T^yC] _`u& 52#`cE|2T8%/0 =bx+UҞ_?]ߢP: t3\Y& %WU2.fPm NU )=͚ zlڽ> g)E b YJ"\Q}!yFe%U Pl{=t<(YfR k\+k &!$ vb xz;]!3q] _fP!%ʁTL-&u%(UD ec /R W a(c϶wK<4x' t  ZE4?T A Y 7t- P* vG 6"*@u AB@$ F"u<F4 e6IoK2' Gl<J M \O,/ovބ ,(Kpt 9+8!a)s w 9%I ).7$JN FCP8Yx D`vRJu0$&۹2^f VTYH  lYF ^/)(e P'&APZ!4h)&_waO _U $&r$$3 y<J}<V*>l3K{4k !)eFo"O*>=%X 5W;]v ' Lbx$'-O R ?7')! 7}U7*B#  "*)4dϋ wdC\7v xxt! Th 7 nx= (7 WݵЦ!<tf `W8'5 =;Zԕz #K v#q2kJ /Q.wގp( ) # q-1/ʧvn o9c#JLID?(Rac3 by| n* /YX vP2e@v #rRe L"?Q)E / ݰ8 6 " ؾϽz0H +&    @{ % X C xUaiDD7/" & X} fA 6$Q_ oLj?ѩ$H 3u  Kp{2&2 - n)/~*Ɋ) #XZ'SP'N~ Mrk{+ٛW =X<+՘ DX3e-Ź&p,]P1> #SKW"$ qN߾^%4c 55"mPYW}F>6.nז!` -[M* :X ȼ7 $ Wu z3h g;^K5'+p*F-'܋ #8+7  9 ) =sMGwm rY8 ~ +`Bʷ( w0~u';(x. aTʣ? FDh([V.ܕp!.A۩ }OF cN/ s$_""X3  cR-'ft=G FW $G  ; ۃ,0%p2/PC F [YVF#3 RX$4t, -K 4h G-Qi;e {S#It36Be8Dyw"' A 4M _XORYoJXk*U 1^?q1@T1: [ , Md# y6L BQF   hC ;MD'XRqZ Vb/z /&8 +P  g= j? W2 QSU5۪E /L &#D[g<r Mxq|%?ާ897A t *W#  28~ K * &\'\. {Fc RcX*Ï 5{hN!of~. LgM'<!}  `.\<ʆ'a* v } q]ہzy W E!A'0&5 ue >C 5p^ Xq zGфی2g/, E Oa /h 7)\*߹Loj# jګ -%1*aW'mbT$^u޸*P'ާkM - 94H  -R$Kzm OY)lz;,X= }u 8SnS <Wj = X  cMU` hSjd e' `D `F!l[54  I|ti+FHz* c~ ^Q0=+#< i4in c a 66jOEU n bQ  [w G ^{#%? ۩ȾW4$sfy  C+֘Zv" )!m#mUk $/&m [ |D"}[;Fp]E9] 02(i\Z"rן+C WA  1 [$-]D'70[W p|2B g{SSs1("3]J {#^?' C n 20*O "4 :)AYZYh#Bd 0 8H-   c! @/8R / a< L B];y$bOj  ً < X#L 'A ֩V- w Y+&i~)Fa /  cyO|L4?[M :<;} xPUrOj & /؍r"a<^#y4Iyy ` ܌ޡP-ekC '+:D8 jmJ "gނǻ (u " ;t@'* h - I [ 4&YQr3+$2T"7Q 18X#W 4 - h}U'ض/}%7: j_Y#z  H9}vGU  "| ) Tugt!' bX^9 >t;.uP|\^Rh{f@SB w=f` b 'r0H{w4!L\* 1.)'  Ro>-27>"k! m9 $]t #IY ` 8hP_#j%0շ<"JNR= Hz1~ a9AJwSM  y #T:'TJ9c:!~!IsUs^,%H&  @%=Cy Ua3NCl! XW"Lֻz>,؇i[. r#9 @t&S8 =`s +E4'lB׵:Avz<;X 8 Na_0$|5R(97B=X A ϘӼH 6eR&))4؄ClV5^/S/ )_ tgf1 JFP#" Yߙ0(SQ  x@$+܇i< &#4A+ [\x % 41 6h,~iG: ~x >Xt%2nձ` Ly-i?jǞ'"i.ZS Y  rZ "d(dl{  LW S D=J#3͙` Ew~ E@[rnY"K  ޑq;**"Ŕ 'Mh6?Jr # t  |۷+3m l*1- X.6+ h)v&LF#>ZZ "]; s+T}}> KKzQ{ P|r \S t ua]F"͞ z:$V  3C-I" %z ve$1!/'-&*tƚ,s" f vxw}FG 2C- k?  ' ;Od)> #w'J3m$/+ݹ/ ofOd~(b5bG9 Rs* <J RB\( & 4U.S2gŻ$ 4Rv,*!8Ub~ =IU#) P-r` bf$ L $cim.M.$  N'odUBg(' v>/j ! V  S2+%[CS w@y,_?-RӾ 4 m(M*\W3l &/ $ HZ׶ "R).Hy wR" ,_g߰3*R]ΐ|A$ؘ&@\H  Fz> _ 1d+%* q 6 j:ߐCp.Bp F%#M z  Hjڽϑ0< }vlN(6} H#? c'w'#&s'7! YV E y3o &$0 + U P Xn-D ej [.p%CY6rfi;g  2_ ^!n7(\( H .4գr8T4!#2ի1QtRfY1,3( v~-2 Uj, lO} I>33ьR#~kw U ME8J|}@n0&nl1 #6*" y&,Wu% -Z7 h% :r4uUt`{j D |zZ;.i-O(sT 83p%(am1z#/\ZoSlh G? 5ߍPLRW0%F ;v!6G A < E"w $( /l +:9*ՙ, ?}_# )GfӼOTR$J nvFE ' g q!%F1Xe `vpP 6%p ;\ !-L? m*bw JObD%Yt >{߾8*"+(*$UpY91"ߪxv5Q*.n.`4vz \ ~s ^|K I k 1-|<@ׯ (9Kw>=( @G R~ 60 & @g#`q @[RK(+m<'נ%-wb *$*6k n}<*$ /ΒΕ`d TX[ "hBp6#B &W-#R^ dXl: /!-acY!o ?qm+ ݤ /BS S ^ g! >'rXLu'-:=(׊r#!o? 4pp. Q(? ӆ"O% cC #!p'S(K|+&,"Z 8$A ~"f8k)^ j!LC a]{o R Fs)؁+ YwX=9p}53'!<@ / yW=Q:X7%4~^TV9C Ph'_ (SdXuA X]u h 8`=ޖd%m 2~Q="׈,_ $^h9 2z #/&wG!+D& u.L[ p ?My ?9  ~o v  @ ]3זb2$ (T u'ҼN M RUư4$78>t:XhcJ.-F D}b " vtNXM=y`5 ,B <& |-Pg 7q , -CN C7 !;b k"BDN Yۭ2\t'!>!r8N guE ٷVb#B"Y&6uk(˄8 (܋ ]vI/l!r FH4 TWsx N1N a*e 7($"c ERZfr  fVp}5m{%.v Y!(d/W)mLu#^|SL2l#H#Y%\fGr(JnWu/D۴$&"t,A7g HG`{^V'.L  KhN& "1 E")K&3$E *8߽P\-8 c'.f\72=xz^jS$TBrKJ|6*N٭ DWv| IB4O 1H $ !#9l!]$>&F3AĀ'/:e 83"k)mw9~!q fD.1H  S@[ u 0x ϙӆ 7  = q63x5ҏ k-a1(#N bU `}&;p_ Bd* 5' n'/~i u !=K,o{:39NHG kCv0wEuo=IN A+N:VAQRB TzE 8 a c %pwz-=r,2&c`xd6"  3l->B."4fsC! mN$\Eڟ"6;P Dd ez* E2o <7.T*/BfY׽Q1' Zw4j P'e 'N !@~ 9VI{9 8$Lo xvi ,8` ^XHTB+v2 !R;݊|:. o%2lY 3b֒ -#YK ` ̰a+$3X7 D I|NJo 5 q߅<)\N; =?+p q0eKQn ,"!Tkk{W+ٞI%3߰K-$uL&k |%Q#R (~$9 :gV׹y(% Y-p oh 3n$W߬ ,W3RL{T0 =~x>-~ 7 *8N+>bۏr 1 SФ,7ljո9Kv UhDf,<dE|/cN= 'wbd/KSu 2 /IP-rN5Y0 !X0 pb8΀ h32 XYUM  D~%& EXtFH 9t*+c$zJE=^&P s&~ +EyE@{Q)?>pPU co_`/ܞ*   A" &!R<ckӇ t0'%AX'b3)Nܰ  =eA YQbZ&!CE1S*\35El 5#Rտ !rB0=bH4KLa)^U((%uͯb wGlݫt]/'c% #i >:1= #$$d-L6:F7g'L E7X:\m $t41S3OkNafA~RDG݈MCA T(J d1 IM {X#%/CD$ G - | G%dT,! g׾^%e*Fv FE@`V (&*0 V96 vՁؔ .M/10U*p0'J؎- ?D63" )$"-  !>JRsp/#0Ѿ -)"tR-L5+ 6Q($'P u< > )S .Փ6?.y/{)o k/I # q% <3mG ~|& L+ *,]2gV|O 26 ;T(k CUgSF 'N/ \1 =Ji|Q@^] p:.>_) =gLMe&[ K$ҿn ?.Y:UѹhMDO-* %e>]?0+ fCg Y-'~8q4mF!R0$i E p+ aA<KKr W)0 0 9u'W!;-> p (9Fwnl 9Y =L# hD~| %o, ?$h ?U+ ^O.1 R A߭i9S $:B(ɴU. *߂#;̈.; m jbCJ@&8OHX' y;'w$#lV5[G w]/*]E+3ĢՑ |"nb!BV2kKG/SEO)#AI/[# %m ނ, s+%ѾRR.h2L>! O%ӜDNXkuz| bܲ5".2Y!F +6G%2*-AP/b ( %(?1%%M < !x"!&Owyr ;$ Ң + j yEI>8+Htt xu !1$-1 ہܞudw BW-E? %]'%74=-1JO0-"pҧ׷'H+A#qgH=}?"f1UwJw !q 99r7+e0 JrIz-b !A{X ou* z̔}3,z2 zr$^ vp z $e4ZfucQ {W %3\T n9 $>E+G6-&=!G x4X s+ ;P w/Hj۠ 4F 20D5d +=. XE1a%4+ӵ Rit)&+o& i7EyN9Yy"K 1 ʢ+p%` 5C :I s5rKP"Bߟ q F# b"j:n } q'w%~ 3Dc߮$ i  #@:`IKrRj ;u W  /ځӚ^}x?fkӝ'E ~j) 7+ O&.um`EB 4m(2 +P>c] E> n" S(i&Y! /@|ky&=&@|3.,;,f!S\<0y " 7o{ W+!|'>?H ɰ  ?R3S-B  ӿ3+2& %ž7@on Nw~oJx PxZk,NJ]* m v7`7 -FS0rK#)b9]% 84i~wӼ&+o\sA|C : H \NQ)I [A+&S׿'xT uyK { >+/cH# Flq!y1eKX25'I ,ݺN#ai  ߀X '>W"[SkЧ/ [%V2 := g1>H\WB  >Y3|Jb&{*]!%$d0 WIڪ S&%=$~]3n( ! l9 R' +ϊ#H)&[xR+=?<Z& c5l ,7 "?SJyϜ8)8=!\  zzSp}0] Ӻq[!rFv("y ܴ '-jUF:,n9] w/&+c< +J S0u/ έd! kMJ޶3VZ %&#Rs8. m" =Z p{cOD M ~v,]w0D !~bYu G  Z Dm b W@4V % Nv  C+:Յҷ;oM^Rc8ISZ "hD r i'$Br(GI"7 %݋ "+,}Y#R k$N_*X;n0*?; :U .S+'Fx! &$W)]J,A  >F A ]U%"{Ѓb( $ 02 by {LQ(Tx #e'4 I֊ce@ op  v0#U b9!T3EZ+" ll m  O2 OD!.t`0tֲ&S01̦ L NfߢB0wI)Pn2j 2k8xpz  &!Cc3 9O ֈ[%rtR.S A7$`i  : X&H )(q) )5_f`&f& , +44gܐ  }'[ B`j 3\WC S,]2  */Fu'z*5e@e9q_)) CcF"<7TA&R.ZR3 tPrG  4f$8q? XNO݆v x_,qpe#!,{"D#GMZd389   |/ A' `&*ip *s9g  u_kphA|Wn!-{ '|#Xxۆc( FL](61a&є"@ ` N%!`c(>E)~~B E 6d"ΝqHp?$3luܡ  S m '  7d#i݁(e.]!?(P* U Z^IJ~,8I A$XeӸ'" P>E/nRڂ"q *7 [Q0=/ + sB S!*Cu_טQ $q"SododO EF}#a 5Q [V >'p 1Kc8vf#1Bn7ko xHU&1#%y)*i ,U" (iR!?  Oi @'F 1 (o*ԗ#!%8& 5  dI{ Zk3 2 :L&)  ޗ^ >)fcb!T ?!!5ͺ 4;}nq'V ~ QS X6h64p3 ! @`Y= "&Q54 '[ I E@j%  +ݺ'=-!|ۭp p&$?O0 ?.cC~ c UMh m/R\l @%hy 9 %n +/O &A\hK݄{*S)wfU UxhE#eiD k !h ;bk4vw{\r d9: !k 6OBI۱ Pp"Rj &6)&ԉ#. KT?C4; JC  K )#?-lYCr $ۯ* 7u'0ϖƥ=M%_= -Cs$5%/e x$Sj&8 Q,>x֛ ZЕ*ޘ /^0l8G={R # n * m  3 E"8M a8 2I (45Rt$#ƭt b "2]Q*,0J|cEn R@c  љΚ!MyA*O FYR1ے#.*( _ Ekn n-0 (wp9N:"&U ߈3 ^S(! hW+#*"c٘tqph eh&%߸ G?>ߎ+MTK 1mA#F&$=uJgaFqt$;Mhq(u$Nu߾w< 7 { op%28PԲ/d o l9hn(gH545Z V TG; g-s`\^8MAڒi%d#)0Z&W+lb/' \j! %dJ$1"&a tre X[{5>   O:Dr̩Ɲ+(? WP \ rNGL(\r 'Z ܘߓ N wϩ+/moVeB!5<7ܥ 4 ;B "]-< gb_c-Ye l8  bOQ)MjHk.o< ' +Tv ( Ux {. ߻BE<|$A '!A&[|B2BJiF#~{5 Am(#K4'$w#5sB-m!ޜЍ-bv{)  =AAN߶F1  !8 w12qe߭ 6&215E#r4%65LIP6* [pF )&%:БeB$a.7c !t*t Y ~uJ ["8FO5 4)\#6,YsHE1'N^~0KJ*q+0<( {.#(*Ȍ.''xhӁ&[WV5 B f{# n r">lJjBM*/ }' $~52 ?2G%bz\{#"i o U݃,!3J Z[$_h<*z%1!(jTUN)+:[3r+!!t$1GCNק J)$e  Skh.Nvwwk F 2i Ly _bXQ+e δ,I z^I" ] 7 2  _A_Q1-uY%W!h/k[}eVIm ^Tc@)^E $B:Н` #YH ' ( })ڸ ;)[%!vE^OBp&&J̙'GZ1Y/ Ao Y (>hO F:C" fzZT'!q=`=_צw==٬rG&HϽ _4Ky'"Rؾb!Q,`1k^$ P<  g6W w ""o1v < & aU$%ier,<cV< 6 &Hf_'ac@4wYnDk/6//bZ.'8 P"!a:=&('BA%  ORG uQyծV/~ i%+H2D7 2 >g l$]%S sѢ 267v  ($/b]e  ]h6*_\Wtp! x `W-ML @i+D0_1(  5H'p[*Ls IU Jpco<}Ix X)"91{ X*%6" ӘV{+*Hl\~  +ե˄7'K1  0$ H*-FT?= n >ա+&;vyt3 DGT /z bPs'[Ҵ=QU ($w./U =\LP( & Ңf%@ qdH= )э73"8uKSD\}z{Z Vo% YP-RuH<m{r$"Jf} V&  &{p!ۆK {{u qoBR 8!?)9|"K' (E4a |""- !"1])B9# GONh!p2  z ! V$`՝ںx*:~' s a%J(""k@   %/;ޠHUOd>Q !ߦ " M(4Ef _fEq@i )0RH]1|fU>ڞ& lA Nm2 uRA : L2g-%_  omQ nw/S) Ui }@%Wd= s'\+`1T rC) \zw4}&) L}rϠ4 qFjM BW$ YDT-GN; _6%y I cxO4bQwkP A"Wcl Dq9 + /$  &nY* eV(({t ' >! |\G r/zI.Q(  Z5 4 6 43 Dۓ=1 .  "Ǎݤ 53X4KX ~B4x-p$aۄ})?aNmyMO@.c!Tl'6L} s R93r$/ײ'!ԋ0Z$4>ͣ, XcaM 8W,Go2#)p3]ZDJp0>.o j_i2 D x+!u<]*Z8\=C*#5'*˶"1  @ ,wo~n &K5ݚH?A7 o\ w!C Epֿ ,>@- p >He+ _ -B:ŕ&A#,:Oj(FE+H3e.K WG@]:qYDD)^ }%4myV L"[4 "?i}) x3 ~@5#Ф'K߇[k: 9^j8:C{,91 f1*XE5 V'|'EOx} . z eb5-" ѵE( Cl$(w\lZʍ5ip ۧM%x.ߖ3 pw@P a;cq 1O#F 5{( 8LƊLQX* Fkp$ m? zN !M#7]ܸ:N5!5']ž f-.OF; ,N3"&^^* H!f8 C1/ӥӠ l1 mH[5 <C93$8%P x}u֏d'I2F شE  2 uzQ *x oG|&rK b!PU? >ePv($hN[Uv Fs&R5R; e '&& УT_jN)Fo |i;QiA9[ k"<:+OW$3 es )#ޖaO"O }ST 9D^Q%] K u} H ^ %Bh Q`cS .u}x# `*7 EkϬ Kiөv *;{M v)-F#WY,Aw <3 & C rG@ln >T'=1 #B ^`T!GzJQ #=-5 . י% & ;:A jϑs(.}#| j&߂MU-'  87 j7 [UY 1 U;.esU& B+(1A(ъ> u =G)rb )2 )no .3j"o(7#Kg޹6:'* ;!Bc!SD vS / 3KA('$O y)Cf .^LL%,^ ?# GG&s6\ M"I4>z߇;24:a  Gץ&)KqOO& : |lj 0y)fvm]+QkeY 3|# =_pT #F /kQ  g#D Z=Q,G |P\;Jmc- 8 (*7+%Yհ%Z='"X߷7m҈'<]B7A-[ [lX iyu9~ Ѧ l !3u9 x GZC; q C,.sb""y>-  /(8Byv < M P 0Er3 _SV܅o hQ`l\ԯ":i`Џ^  $`݂i"lV a)QO# ,.vb5 %Q x4)N;#APS sd nm$ci j \g 6&Di' .P r _ J4 t}l8 F x  O- G" @)R&$V7R) W}0# Kӷ56~ >*{  J3 b&<l $s X{T Bl&:4U+I,V tS! s$U-&\XUǐ;$i# a 8F kHV /!Q2 G" } 5㮶ޝ LYz oii{BP4: Muq& (~]-o|qiF42 U0 &fB1"- 4 vkU2\_gBq }[kJ-1! ^mϻ%f8]oӼ< -f x8>Ȩ\ 37 Jq <L 0h(Хޗ\<@LHmڇs2eIv"Qѳ* ")3z|R oLyZ> 1wk]|xjc[[I.2Fl 3!- $ ^Q; 1"` G/ "b {(f! f0_& Vmsa ^mH4u1P o ! # cs T7#AJVi1r*E&!Sm |ZW HtX~j(+`r  w-v O(kѻES J % $<%H` |A[ 27<@x0d 2= B %U:#R߭(u") 0r'& BUj |b& ! z+2(gf)s- mgE{f "$^#;<\&U))"wa 4nd =k(l!8ݵ֫?h%8ZN Am szڞ!O9M8 *>*.|x< 5$q$,J t'aZ i $>i'"/Q,3"Eֳ͞= 7$6k_OD=00]'!\ ~? DG S\ CL k'CIt"_ v ~Z=K̮4*8L3Xuֻ\JR:JI.:BW!f2ݥD '-J(!j)6rn#} !G B 1" d0 +b.-3 ^L9tEk }pЙZJD&{]XujHyBS 4 zf '~n!ׇW2C-$v? %?Hͤ$ %, u%b% V)$*oqe_ޮ&wN TRxG*[H m KUd#: Uu5״$n86X{}y)+  S,a P X9! ngTFYc!8!kEE -6 q#c<^ $# D 'R(?4 JxNJ 8 C DA sq%&-L%pK :p)T@ bB SݿP4 G: Z Z^bi .kel8(Є;8&0R[54B 8k4b-' jAuyAyە$A! ZC #-& ,, ='q=?' *$-_ f@Ssj1 Ahx7" g>0+ySUECy , *2B/qK\ = tE7F>{ osC' (Q 97 L3pcؾura;[g # ,t$M0Zhj  kaWDwc~U5Z$cQTMVNisbrF(fS $]4++ N?")7ْ>/1R#jك ,10 37*MsA J9~!$G zp D:L%g8l a$ ,XO4t#P`(Ft* X .,܁ 64Dwn+ !*Պ@74"@ԟ,B:WK<  "θ $H2 p1C9 o ~=GZH W .2xR5g.;e6EbCZVI"=1 mY--S/7a'ow< pܒ{wt M% ,#-$Tr #YK> )5'q E"^t|a )[('Vėv .U  8ZB 4 ' xy*w/ Tk4o<1g*<!ݎ a`4 eo#7=Y TxAV 1"-$-|7 0YI-  G#ێ{^c%ݨl$RM_'c$ӎDV]~  k  b$D:: L 5sp++U3 , & /o .R #.!V- %ӯMa 0Ҹ#UUf$۔P$./h&>+l k u-x\>KnPB6Jzl 06!!`A[ ;%;3+r& (܍d mgi^n. 5V {6  `5A!*  L - 7L!deV}-B;g2#L a$7 9F%rpV uk*1?&>c"{  OP>,T?1JU <8 h'% - S_ AW4+E#j8!բZKyt.`ϗ. ~+ xvq  *(6 uU+ s  Ң5e %8 ? fr/%ܮX Mi0B f 2ګ hLc k;~l I V '0#%W " ܑ)'eu l ̽Y! omѕoW {.)ySmZ34"d՘u &6~/ 8l HBєq2dԳ| 9> 4  y4JU% i( ! 9 a|cX uc ^ <`"hNg&*֙٣%={3[[eL 9~9ު 5n׸$/<*sdO:]G@G { ,R?#Z q BQ*I]Lݨ5qhOdI ~!W =ߕIjSD^GڧD Rv'WPp!@`f& 8P$ 8uڡvF4!J:9/N&m|fW j}hVkK 5Bdع"2m.DKp >B{rH-hM<ث/Y-%a a <՞"# 3y 8 '# &I,Y&E,h 6\M= ( *V(m M -mY""0U-No(c+"|M2U XVxT')4 &)6$*B 33P*`.)'Fݸ  e;=W n 82N"f*A@~ur ٟ#iZ( Es_ܯBPhon-UX N $i;Z4QGyN qh !TZp4zaSdo"7 9+5`Rlu Y^ 'Zlk[ ym hc? PBet / pfF.\ &A;9[&ee'4F͆ " fؼ )/ٛ IGTX3ټdowJ.  φb..% 6"C8'#g&tdNzu_ G dY_T(`3@g| :pB#- 8uCpv hm k 2dP(#\6 2$A S14(v`/u(_f eP"kuB v bl_w 0.{KQ !|"V* .$T$N\G.   +~b #'Jڛ^ t  c ^m 5d c*UǸ(]4(b!"*1 7-o2z~K}* #RP D6Aq}n!<̏)N9@Gwo k@ WC$k':TdߌP 8k9 )^ + a^-OZ X scL+w'Ċ2,$Cn2$#5Kqkt 1|dm0^~xjd W1$?F %WR H+0  4  (8! jute< :s6q .%u=}z B8ݽ, #'{|q) g t p a73,[ Fee{uh kd" MAr F @y )XA, neeo ?N7 abu7f/ .  ),.h3YD?9Q|6s 9 +]ԸGy djQ/ ʹʢ *lD: ~+1-B*ېY>3΃ $KWqE/!)׎ j%2_TP7"^2 I 80 n-dO:Ϙ0^G3#G6(,Z=S#K Z8<  K9i\Mհ-{30 ,b"Vx#*-#;+џw~ :E^(9MT!Bڌv8thO<_U msB1ǔ &D^=4 $| 0' J:0 f;% WGY WNo H@ٿDaI/ ق$ ( n1  iD#Gݣ 6g־- uCi %,#JT%RV$A(d5S*-cbs: &HpN ,g!ssz8 XH b^ &=tT]A Q  D g ;/vf@M'%ZC+"3?}q$$&'j :HT)5?>7 k٧e"1 S? GKeyV#p-u@f aD2 &@> T+2?hI. @ *9Yߢ6(F+6- s̅0B`fi-PW/#Ս P s2( S|,D E=Yz-+)=P>|C@) :b+KDt?lg%. o f˛$# !Ia< gj E{By w0P> $2$w %hЄ G LH Q&2PH"\i%P `ph)[t 5 ? CS-Q&iV H^'}&S /o Ɂ S  ROyr0 a/1+\ۿ2`+*=4K6/bdvz "x8ާ{#Y zv'!6י-%!i&H u /P pҊq'o "U RgO5w* 8 c$s@G%6bruM +qB- mRރw0 Ջk3Dݎ )YZ@D ')M)^\wA_ V.u, GLm A O y|0A }])n0Niia5 kkWm #}jk 4}\ 6h8j4cl|)6]yA!5Yt9d.!e 1G xvO s" fў$BV2O rEm ] ${ } 3.ܥ+)'F@}B l +H#m, VP wCx)/8)F n !8M/8YV?H  hG\!/ dX-oG Pu ;qA  6هx6K O 5 Fu 0_ 9W  G$|6ˌp 8~7*b+\/ t'FI > Q  +Fv3> /PΗ5:;; yys> "Jqֺ+? $|5# 7}d$yâuT/ Iv W fg&m4/+dy ڇԟ B^J4 S B -=G?7!dR{ Hf=I*=%ԣ<za@O[ ߣ H | U:21 yq*T|n$VdUr! ;ʊ#C ` 6t<4V ٖ5sZX C"=J + v ?ޔ4 t։-1I q : 5#7Q%C)0e}MW p~8 ,0(#]F r {+ ^;5)OKx5 yZOH|IP^A ! M%/( .:,*+ p7-%)Զ d s}  70t{ UNG  ]wK -[O$U}Ki*, 1'EK;ϨRC? T0a3{5t!WGk 3} ;r^T;dB 5" . IC7m.QEA$1 x9ۨ M;d t.a3SB  |g36^]OJ pU )+?~!%U8;G Vz7D)+r9W#' 3!O'~#5 s , o  &r1#ޛL G Y KfU( at% 6jͮ:-V` =61B;A wt-}?.V $ e#kgf ۲ f!Z  ] 6 eE S # <dԅ } WM /3N 1ؐ q Zd Jm/>0QXu  n % O}2[ a03rZ/SԞ2> N u{b ? 5 eX#L*\ilbu oIa w@56m M^g_ m d֪n{ - p!'+္:+xT- y*@>1"*#Wb.1v_V0H%4o; l"P %g]h" b*HH G6 7B ! % N+~_')u  S>]S+Y  4=[ !Y?)Q`[r"bo ]  Y٭ D7r0VD#  (&ߦ<*D,0Z T*{)..c<It[=Ta> A0 G6rg 8C :1[΍T 2"a)   (| UR!/4F-<Q&_ u{#aSW2o ;v dynl=:R 5 ua+1na۵& r{,r7 ۗ+%#  lߑ8W&t,l("T΂l %'w9*&؊5R?I+{G.aPdSQ 4  Ð&7^f:-#mE   =&ۡ&g LTDp[ q7WN#;ۃ,%uF(~+T6?jR"'DeD[ &jM*~Xƺw!.2> 8 wJdAnj * m UO ] wJ6c |We'0)^$<Mo" NC6eUEө. i F2bi6cFR2$4ǣܯ|#Q 7 XS#2@^;> &J{ &t xҏͯ x3r>q% Ь j7,2W K |)$< U#]A+*l72`W\, A ;ڀg#' ޜ\mk@D &9!%ܥ܈6 ._K$!ۃޯ/4d@/  IXso FXPy|ps B( (0| A% F24c h>T p= $ E)!,v bZ PibE:'ٺD!=y|! g r/'$c ! _]8v/E%-|I8c<B4<}P[} a3I+RFWC&B"[|//go,D\v+* P+`x;bk4);$-ͫ"q  lJ i!C8}# `>;cچe0N _L0'x i(' .#RGFK7  ?ӵ'QZrkwEgv"(+ E)5 ޔo*UWs}r W,!سϣ (epj^l0+<5 e(=r)J= lK+ r`  ue  pXׅh2NPgy1]p*8N ( Ulh7#  e=rld"~8<3%o%y/cn$I~"'Q "`"V ޝa%IBcg wVF Z ?xW;"!], v0+e3M[Γ8 O'~ !Pl# Հe+u" O.' MU6ik , T B [U/&l U r /"B%%S%y6& &R(g= #׊k"q$`%lw"!$, $f7 c#,$'td {;$ BT H=.F)u% y ϰ%$ t $xDC3%8?\s *"S!׸7) tAos!8%?.Gq]  r`0 )$PA sO O%1JT\Sld?4"3 > *%K. y|* 3@.| IE$A\2 ZP bX'jx;-G*QTYߓ ;/9 N ]\B+ & ?8LAKSEL!"ڿ Bz&a8T*HxpBr)"~gzou$ F[AU ,P u \@!Z\]{[ bh$ ]Vnj vO;*lbq'1 `r@67:>^&9 D%k ljMPWhJ m%b= %)9.A z @gNpG D1 5o- B i3 WgtL($ QWLl"R7er9(A}q 1}B` X, [ [eڅ($ QHA$?i%z g Ew r zy!پg>G ]],cT!!u])Jo!#(n gu4C^)2**(k0{u i"#CP+2֏#tJbݕ -8<;m)/wg"t ? r*O Q1ۢ%/^>e0 tf916^] ~K`  ?j2[0ӝJ%e a\19 s?#;!.Ehؤ%6Ub'Bqx$1Bca4 ;" /  (k%R B v4g5 sN2c@V,u /Zb>' k EH;qFBu 8kQjBq(*P&n+b1 L EhfJ_0 *2h` +VFD N <.a 2 .Wh ?r*fӿ< X4?'ٹ!ggbU=)x " A/&~i@~ ~%. q0MGB!| {{cNRX Xd=Va~!Z$ #n  w k 4uϵ v]] ^w.@" @j`> Vh 8, R x M[UtRrwtR wZwt i J: pj3j 6/d_h J48hM=ij- tH$o ;Y 3 a'- O0}UeL_+m Hz)[Yם _5nAuf~ ) !O Q@ -"ʠkg B/-%NP}a !hJ{mh$Onc('!@2 {!  u =^2&jl =rBs6A JfܧJ r OD_H; ^`', weqԂ6:,62t+#/p6!] vJ-y {=W"-ʘ @':+ĽpQ,\#m( yk(?ٺ I&{Fts!cJb|KyUHXYXl1]?  p?@TCC 0 \vh %%0 2 )t*MK2 ejܖ _4.Kn?ە> }S  g5GLb . M=@Tat,6z ;"mT%q w=)g)#,PYCLS m|@,5 ?~JH @pA΅3k/I[ /)  *5 m 8 @gs rR56+ϽT Gl  nRٰ߹^8 .()i# XkpQ ''I;H/T-82B   #5 Q 'iA m6  [ Jh6!вVJ * Os ^w1q =uvځd6^`ҊG"$7-ڟY/>>gr%5Oy& A)w 7{ydh!,{ U8 Ei7(w ۢ!&S*7:Sө)1gT=6 d z=7S.WDI > ``  &p MDD\')j~ nm S'8#`LI,Aj'[vgNo ^ )GA kA`~S'Rh1{iSFv#ksM*X e>j,3  btC!'pK?@ #ѓ{ 6o F\ -#HwݨL ~%"CD"kE3WaZ '6i3ixw w"! hMU O5AZ^ ?% IjDv.?lLBDˏ1,$ sp@pl%4<"&z^ %>ܴ JfpHi["'   '_=w#d 8LyM 1j ' ;48`J1 YD-` R h%$^PRN%%F{ $K"4 VӸ}01/X& RJԑ ԑg(%Fl IG_fD bQ( ݢؕ1ujc I&#ea:z?-|7NkRTbnn AÅ'$2޵ g \ub!*!g Y10"=^ Su=5> 0"*!lR &TU .R (֕Yr m $$|hbJ7" Ї1V  ] lDY|CP eV E / !Ma{ I< H2s .?HW(8x=v*w8t(-+la@`B͜\' f,!<v[a3(W*Bt KC^<4e Im@ FnbA({q8y ^ %ys>s; N g}/ 3AոcL"FP F GR'O{$ DoҌO Ez RuFT8 j't G, |!'% it\:,l ݃ TO ^'.Hu! +z7 >JL+`naZ ii\ _jp:1: p GsWO JE".QqX$yO- WI\ lb#xPB V %q\ wRQc$ h#E 44d d4)sݏ4s % / ڕݷ&.^ , |]qJLvo': f/lc~ >R1 2 #>:ކ*;2UM˒w#F(4.  [~1t x#*m*H# "Qo  aٛ O _ex&Y3~n]' X8x4,-WI) JͶ =+o4Y^DHZct ;i.!&X8em 5B2F, l,j!o޷N "M*$G Yd  b n Dv{7  $2$4Iߚ2#XD)+"7I$%X(Im, T 39) 5gc<(1 ?.  A{<sM#y$5=Ӄ M& :~ pׂ>"v#L!΄ vE 4 0& ;2" my.O ۑϣ , x, f:b%2[xĈ; D[ W dm)~t1< ,}݋d @$"3$F7 #"8# E| h> 8 |I#8!C e3Xٺr[+E CfX E= d5gw9E.*`j4 .g"c-ٌn{9*Q $0I##L l tJf $ eb rmo M\xH1'Zo,hUZ| !S 2#'J{f OU V' 6h}h5$$T[6saR>+& r&?r$1 MŊWk1|> C"[U!0J'@:! [0!C <O&$7Nx'B ؆"qJr-m"Wԯa N - INi>%P6g)8LZ[׉CtCZPS2B-8"LZ  e;u _\-+5UlhG8 gFH|'YN,s.*#| >=++_Ny (Ӥ#Q7Owܾ$s y: \ԧ3A׍, `fS# d  Z*w+W kd#+~ gUf` 'lk"-)Bd &!w|#( &7 G Ha+ `R%4A tS "e1k݄~Dݬ.?!7jJ! H 8Lڀo 1 D}O d -ny > ، Z>(D-S &~]8Vo8 px=H q CP"IO 6.Zv u7j %K%}':1 m DYPFuPݎ_%4L9f+i a ,v"hWMo<Q, kٽI bM'g(`1gB P,;c%stb ?rC&kj {I $7FQ _n/'r 3 h]jd;oQ k E  HH   J ^tV k*W$c   P ZH;$fY, M % P_ *"7 Y $ Dg o  n MŽh0 cG^!a^$( Ŕܐ f > mH "n .o(U%-OՒ p &H -4'%v# I?gmb$bZ`Gz & gHXcF ܕ*Eyvi`d̩9Mj&ܻQ\ W+( ;T n"h%n`er,7Fل N<#bAq1h:#ջWca E  ܟ&+$RP-& ! [=#)4E^j /Dq| % XIx [ d {c"(s qy|p52 (  ^Ct"{g3- Ko cp N bsݚ$ daf+\rN=sJ #SĄBm'a=:N  `]׀+ 4VKYL%7|h(Mٶ62-7$Eg1% ,mq& cIS)1֗WS)y0?G!/gC| HHұ*:)ZHݐC 1jfv(pΉūf k# +|)#'j.&:iܪ )39 S 7"C a_._"' ;U,'mZ&jp  , JUU= VD ud5 $ C Cm&{125ƈ +,,3G-W 9*/ 5M4 sa FN 0A m(L00##x\jy=lHRk  8s^KF yq+sפO7ZJ0tN{(  ED1l{ l+ ^{80d % $ v# -#,F: @ `~ p-1?R m7% ֓- j' /:~.s/ +>:| `=i!s%D"x}@8 2ߤ-1!Lظ'<MiyrOap {bRlօ$" 0B;  F*+x %XI*^.ڽ =U dmƌ:U!)gF453Oa)  ?|^)Q>t:h mq=٧D0r"I 3 w 9 !` O3 bAЙ& t]Hlܐ+RK&FJ#%'DE 84rg N@.S=Mii#KAf2( ] 7߹ .@gQjY"4n2HO^#Jʐ# keB83a `Pi w GkP,! |Qz ks0Wޟ7m!3t 193V[ܩc+zޱH溿 ?։<> -^_Ax>]yۦZ@y80K!Hc^CpODpnEc"Om+ /jFF ja>?A} x5,SN Y׾ 2|٣;$?T*o2 (O(I 4 !ta![.Q1Aӕ<Yf& H" bO=߈z2QJ ( |&N-#p(6v  Ft"H7 X0o WB{JT\ qt5 5J"! G5 | $ QY N_s |rf !_V ȥ0)-B Y4d Nއ& /' 3x)1{'fg~ժ) A |;6tXJ Y1 6)bUi&o644 }( 0B~;1z\ v >O #eS:7M"DN^ c^p\ 0F_8s']M Wp'xw`2d3 ۰ uIyf}x K_[qWtv'  A/9C'_M A{$ 'Un`-M p߹ b' ag0# nˉ+HR\# $T!?  ּ&ު %3"Zb#Z3؅[o@TGۅӫ;:P"mlMn &$q h-_'\&F&:ֱ*"X#ӯW [m 4P$vRuK,^FMi ch | Q 5Mk}D G 4(O'\Y KϾ (3K{s: 9 D[ YN1)1.b"+$N" ?N׫ e - : , ڣH*"\"5IA f ?ۣ"4@z(ܪZ1'| N \"Q S2q Z|/ 5 ^(J(#*Db 0} W z/ 1 anBld}( 5 Q>Ju!d=hee#_j7 eͲ 9mg' + -Q X e} 1cn"!!g " ~ aA  6 *2#ZU ?0 vUr'>(%) ۣP:V56O#+%ެ~(;1c(p .IX QA1s%gk2Ja-d kn94 6"k4 /4\  4$<,e m.&:(#(6Ϡ 5)AS ; h XSx 3 ^dEn3=E3OR L9m(+޳F*s#[ٔP(J#unb8@ D+ 7| ={I 5TQyAnKTW9"#x 0i` <+(^ޗ ;!(7n2j  :d #"Dƣ5Ga >5 a+b$?x/%wHLl,*O#7I h Z{)Z aF3. a fF lG/b xM{M ,(nj Р w/>uk { I?|c F! ~s > GEt? 3 e> 0${o Q> ZB 8TY:ko B .!C {aM9R"gF hvF^21ѬۋS4#!Z&/"^ P)SAFZ:װzp#P߲~fq #S" } ! [I< 0# (%  ,+%Vr6(! yG7$ ;fa@5 _'.Kc%i= 0Ex : 0Qa3K^M _I#  N $6785ϰ(i @f >d0 =&}B -[3F$","|}  2OP$`%imݘ`!M OB  :&zL7 Y tB CYN% 4} WfG ~(&n 8 \!f7MV$$I )lN2S]ݳIg+2/  (`i4 wn ˣ@m^C;2 7@"0_, foMFvzm=R6,<"ukn"3T~#qt<k@"lro`  !iʒ ,m E l~qK L ~&$] ^]͞ W6\ B9g S!m&T -,D SU E0& | #c"^CzLdT ,5<~ i = o.0r3 !|e6(;%E&*)-0R  Td **C׏5 (2] hEo  @>-sB#tcT+>(ڤ6 Dy,6+ 6 "'8 gF (-80ZO :( JWȽj$1Rɑ~0) )ftڹ&0hZ%0m<P"by{a 6p HC !,%h m6U .gzԊq,{ x֡D07[u>06#% Gs ]{ ~Y 7y T&6IY__6f .T"Xʽ.sE VWt--h^Pz5 $ t\TG'f B KYV#0Ea:gn +E\ >#R,+?А:"[KG&%#dB# *:!ݳWK8 j-'Fߞ|W$W)F)B ' _*/6Q&6 L\ف  cKh6 K0Su vz0 0 .Q %s,:&4$:̒  t t--sXodaD5j& )YWK%!`Юڕc* 6F 0Qo1' ~ &&ް,Az^"#B|6: Dޔ7`:0}ު>$ 7$?{_Bu v=(4^Lu jo7 K#0}t %܇.)I/[PI U uY|^?7(v 1e a6S!n#`kv ,CU N( [tyx E%O [##ŝX{'j  q;p~:ky$]Q ] dP  )$]u 0yM'|&~L GZ sQ2;t +Je!!n$+* -jsV}18 @X&kڞ  4Zq X%ٍ7}!PU;^+0Wm( #eտ" :38[#Da@`-ɳ.R ) FZ wGo 3 6l9z e =>6ki n4An~Yp׷-l 6 Y/  "aݞF /C=~ A2'$0-4۾#;U X @pV4:m,x fl"X>,`(qwJ eQeUQB776@^ H O.,D4".E %]`F $7HHb3 ?{HOd\NG D &"tD 'ӡZIldn!F m'w^  ZQYe3M69^jg#y26xu: -M"gK0G"-;j#hDwJM&2D/, zYlv^4n{&m;& ~ (kF٦1;z \r3kV q U "~ L z&u##5xFD H:&j@Yu kqx26(6e?J!>- Yn'ZNwUMg$5t_<2vX.0ռ'mdp| ? y S S{ \F% T@c 9U) +ռ*| ¿b* kt`,= n# hLto "Z%.?aQ> o#zz<q;+&{ME Xd)z( Nzl 2Emcҍ,#  7NmZ3,5V n  klaMWe#490V%` : ?b!,#RAg ~  L\` hIW &OA_l'A&g;k)Q4{}K (,.e%" Gh 3!k(Q|IF-?/   5EPJz !  "  3ws)vk>~`!&l Q   , <3J[qJ !e@  4 ܆  w mS|(  o,!(ӭLk[0W2|S ]΍ 7v׾$To|e8.m^Q<=V.}E9C`5NJ Ӧ 8;d.,z)(.%ٯhw "bg~}K2! $ u@  d( ^ `nhD!mm Y< |@z  c-3)E$"@՝/_vs G|!RW VO>c+DjQ.+շAcT3TGp*9ـ֌,&%lL /Dl _&R*0V$ *:?U AEsiD.%XPޞ iz H iR)eVg}`mل _M R y=K1 d<Em ߌ 5r [ tk;_esehB y\8[ J_xKsYl V  {xB2 a1c[z+l C4!s"Q&' nܧCi ~4  r(C=&M+03|sc18P(9-թn#iF][R9 1@h2Z, |(O%8a#'+Lh U8ߝ + "Je0 @=s A|W IM׀'_3 أ WQ7%f ShcJ8`p B"A :\XJ e\U$ v: s-h,qɾץG')ca*nۜ$ S0'L< shf?N) !`n :Oxϟ%H< ,8j=:4fCWA5 ^ Hi!MO މ//= R%'AC8B#e=// mS!IY؇ z@jݳ  [z@ee?+  ݢO$ /E_~;G(R I *EU&!.'S <!% g$^"h,EK |i ڌ(T`+uk=nq ^4+07$`; S "?W? k-܌6AG8ى:E Wqbdz \9t'+ & 5'^ r#"(t ; f![ GEe޻ 9 + MIR uB2%}UU;#r @7(:tM q|F<aI& ].M7+z: gu9̧.evh/"u+(ʘ)'*-`14_ F k]/h 3 ) @6c(hA(D3"RiR;4Y"Ի+%m%{_,"?LUTx@  U&:3|l2 j '2'UW\rT!$kG~,w )]n Zj &-  WK_3-'/52  p\ "K%Blj$oִjqg)gV 00zWi >|~X aTj`=g<ʂ$guU'z e8H P p a $ , #g,p. Tk )y)-/۶M` :2 ?܈ 2%\2ջk3#(t>P9V 2b&#y'DGJ6 Qz<2#v~D޲Y D*'z_8 |0V@*=9!5:~U MXq*'G=^i] xl+ -+%! Ax. fѬ$ !O1,&Hرˊ !T'4 Al'f-Oט DPx[ s  j/W|F0 %Xx-6; D1 <` 9&U - R] '$#-rf[y [>T' 3 }GA A60  4ae> _ǝ$(, $V*dT,$qfOn=ODuC9 [ ړU !0 3+ (mw)Ut,] 3%%k<[[@ݨ< :44$ "K%:u#!6h0^Y{ 1eg4XW 1D)8k2kߔ:LLp g(TD Zq)<h8Ղ%e ]:aמ7) M -.alh*&$E. Z6'RZ "am7=!4`*be CW6r-/` 2l#2%Z2Hx (Bj)= "Jf5R \ ~ o(Cz6:ܷs+).E I`2խ ވQ_'} (%בI3$\ &7 *ch)\F 6Bawڤ> 1ߏKdH oY M-P$- x_j0e8Tbh')sG<T 4bGJ! j k #+!}\8wݥ3R.y !b#>#T(?A "<(!&Ro%% R*'=_1pAtiy56S _TV5 g+U &,x["(#}ؑ$)=mf&Qk"0[0 dChc)x#8| |z#= v. | w@ \ !G<ͳ '` B%h34 [ݷ~' Z%w ?2;Z{'@AA>E]@ezK y$5ulvBg$5p 33yI9/7 "z* 7(ݙi'm'o۩ [;/ m0W |[h_Y*Op " ح &;s h,/ `M1.-_5WA E҇>?.F7p tvx )PU ; [:Ӄ{2 f' Is,!A n! 4>dO7 NL@ mdq[  '8.2#n&Zn L;p[6$$ت T 5"b$d\G'!d|a3]|\5 & JO'9ߙߎ= 4ۊP"w*!0T5#Uh_W y'#~"$ s$!Vnl eq Xh $ w:52Eef,f?&2~N+ lm WT :6-2B1$>K{1Ju 2 r: E, 4lvN_7"%3U-1%zfPk+#V' ^s' b{  (e%Qs~rA=~{n:7$2"|qP9t%8.-5Z; f 5# E]~&I#!"@ 6 >j V ID :# >2E~eA_@O "B/o!\R (e){"1)5v J 25co 4!EX x) + X*$4`  (!d1ٞ k)@ :i(40a_W; O#)c $MJJ  U݀.HUnt  b2V :[Z  T?  H "&{#f\x߽% 5h[Ռڤ&TcN$#" -/ d(| (K бӢS&S %2` <ܑ0 ] E Aܯ D;ףo&fPj= ߽Ӯa,V  X-c<Ѫ #4H _ ) } eAYN }W+O%*Ong+` Ve%en:[|/UBq -cv3. !Z";5# h*N,A `h;l >| ^V G &biW } 4[c/  2 צz(Rڞ &AItn s+" qԜ+*iŧ1z  z~/ !3 s 7G [}1]k68 #$t`#K#b ١H6;@!M8P u ]E ;7 Ito'i Q: U`fL2~ W׈ ,_7@; 9%Ʃ()^(W :) 0͸ 5& Z +}DF' % Ptd~zT 4$!2Y r 1 *A6' x%idяv#G5 Uq*!$ RO! 87$6 u|c AAڍ7a$է #| "ګ(]\ )g h,` .T)] 3!}`m X)S ې A }K&"S&.Nf6% o  :JD'O2"" =j=  M, I "3J#n Fj _E:%ea=D : }-V]d@%%b;-L'\ mhR'H 7qjBB  W" ޡS :%w3޳ ,lbh {v 9!`OBS }T ,^?0% $'  GFrXNq_,4ӕ7{2.uHOkN!wd.1mhH ; Q ]{d L#k_&e&Q)G(}[50 &@Qx (~ =w>K<$N1x B\ 7%[ A ofTL xTC `~,u ˞ !u9q  B csB 2pt0_gM>u(]\HD 3 B &8LD %:* 2*Q.d6:TP 2 =>'v$"WGPM C[*v;.>%+۰ڷ& qy#tL(j(\/ 0-  e !&nGҽo+l!'5nb a R=Q U 7h /n^rL$c6' +">DG% , 19{K{M jj\ |UiOh_:: N׶ #s'!"ؾ5+ 4 C- ub,A*=#  V ,` ~ 5` 2m-U^ X,E' )2`& 6Dע?ݤQA<4Sr    gA m?W6m5)/)!S*8 :ho5,pAP _^@  ETfw "" G A )%xgWʜ)h 2@jeNP [%, AY<1O" 4"P o_]}Vl K h8P[ /;5{ߏl#Vpj4eiޘo y $M0+(4QE !}w תo 78]iox0C$l  + w-'&0{ZͶ:^6A1DvDf I3`y3$RG#K mG.PW "TT[17&Z$A#Ay-yJ*i0 aKߺ& yR3- m r AyF`H  '#YU>  W,*'"sxp G8(+#_  8S Jh-"2z ޶ߞ5+ LOxU-cF:yGު( g`\~ VWG H:?L#\/ sd  ЮvT  Z 2s- r+wc . @Y w Ane B KalOZ(;@"׮x4J, Hf!xRzظ.&9 /Z  ݞ<~ yAq2; "@R 7-X8o!EZ8!chg2j #* O wU_mUr%}L> Â$u :_O: m5D   7 A+Yܚ9 b^R0%2xv} _`w/c  k2_ _|$ Na&Z= 1O0n3$! DA  yx_; kI[ VEM 2Toޛ" uF_N&4"A` N#Q%h #X v(;Ac f6sT  =^H  9;L X S)^ cP - =5"^/  Ӡ16q   Z)/!w:k=E/ ,| 9w&9s_ߡ!1هm#\CpRyF,,2B#&:Wr!z "Ld%'W߱g"6s\G  yy)_ZP ~+ެ3q"L&fvT I! EPFw O>a(s%1S`IV 0PkL, ث+iy2.\O)+36r2t `BCSl +=e<;V q=N^k)-1x.em;3 * zk` vp!z#8  &Me=   d:&%k.ss  U ?@ ~L!.&, !j+ vF 'a=]" El Kj2N uz@?Zr(nCyEmq0Apy4VO7  c c3$*T  m 4 *S&a#:; KE)i%/T'*5# O%c9׉~I7 vf [`@$!5ۢ93D!Fה'6-&VH  5#Azp{0%Ck$,wNB dkz!3vTojSrb7 1vF ֐p/G_U0%1jZa2!@zPW<5JCz$\]r@XOmn Z 1( fg' Pΐ$'>:-ErCET/4gM6 #(S _. x#M"yyi CA&p/`8wYgؤ'u-X݇gu E( m&ּE8 Zp 7sMW)[G <)X/VfN [ ]ׇ$(w^b:= &, !\b  G R|H#q"#"!7 ! R Zث- Tj [ iP%>[|һ9 g56"@ښgm\E3K"x Ѐ/6 R {'-w=rECU~$]<.l-O+;)$+;E< 4%$m I=$D pI\ a; &h1 :M*8yx%BaK Cߵ%pۗ  ,PG;X+;; GYa %wW Dx ioqzz_-{~M"II/ѓi 9"' :'U% U )>xקڒG ( $I'__n\{ p # 8}42 XlFtj3A~+,e Nv$5):g9g!(RB  Ϣ1,Myg:  S#A9rs0 >f ' CyG϶&P/:N9 $B  ]' Eh:?V&t1"4-$,A|j0$?h vqKM k؛$&hW?q 0{QsE֧ 3:}<6h37 D ̕,u!ijڋ 2*'&' N# Y3I35B&v~0 T Vpo IeA1Ae 7$+a[MI'+/צK   ';e< D D=dk \)u"@[Mp 'pf''=e EF# ߔO\d[ =2'D٠LzizC uVb "V}["v".t 2>&ϩ5& l\`x) # #Jwd0W.۪%@+&#|~ llwH g:B#JC?!JdH ",&.4OLB [= #A TѼм 7* ID 56) i'J*#0*(qؿ\sλ.: `#z7Y@yfr" &;7A}/*ox3}mn$ n BS=Dt DYz)S1ܥY /Σ P% /ak,s=#b;_(Б# U ( SE ߫Pi 002e*05td<7M'* *0-r8!QuI&= 8 r \ K' Y Q%7r#^ .)T'@ Z#V'%߂]"+o_-  = jRT]  o \(,&Σ {/e 1zU <^.X; -.E-Q0"! .T*'f] j_ A 3>F ߭GY #r5Y^ Ra= 9ZsW_3 V \O LT%h٩3 C<}00 ?  HԊ; 7mp: ULRB /#lbg v 1Zr[4v?`-< 9:m\3 kU]nJ1 " Rr>#3"EtP 3t H` dz%T#")o1P! "N =REh,9 {R'q fgYf;l9_ x 5ϛ֍;usڢ0= JA=9/w :go `U/RxhAT ?U Q e%Q'r1^@h:EBU^tN+ xIZ*H/ o Jw8~ %2K(M<  _ wI9 [^ 0sVY>! P+U. DZ eަل! m=[ #:mA mVT8'KK UCN5ެ*]e8. 8 .PwZ+p wdJy!  q80XZh  &$ J2 !94k"52oQ)5B3x{EE=.1S;i |/+#s-͔") h7 Y)k 8 Z"aSkʿ :t 2P0-E? (H {ߨ|21s8n 8F})V7E9_% B) w9ٝ-|E mi >^ =MW By (TR*o5 ${ !%-0$_r^v0!]2p iRr MT y #2: ( (D o .u a\s% "9}% !xF }L#F` 8W e)2ӜrC UP )rr1 1)lGXY>  19!$(<U |mU2;5 \ .Ilm54$կPl % 6"2Q9 }d9![sd!)t  Q+ \5!_C4&*PpSZG>6 _,n $]d+ٌ L- uv;+&L S  7/j#I H[bv `|c F7( iM>j! E0=QU tK-! (aܲ= <|*C :-] < Z]F9U#+L ’%Ol FχDy 9iN4t#,Fyz n@T*֟ icM9n{  'Kle- ]<oT ~@! H>hWC$- 2wbc3v H>N z ({&**+! DC N boTk`5@'y1Y < r _}T'(a +:+а' P>} ~udeb: -" [rAW .3W ve2 a ۑm*o/i 5/'*87yc 5,$RIܣ[Q1'2XcxC]^0/:~, L 1hY!/ 6c6Ԉ_.]Uw2_ $*. NDԻYN b Ym9P$x.x/ 3SF. *M+AusR@ AnۮS.-M E ^h9#,/9g3wP RMT\  ?nikkRD\ l3^63=P[I0q5^Z0Yuޥ ;3}iq.#9;51a)C#Ub&8!X&V < (&}@ yXM au 0  r {Fj A  e)$: `XU,4G'J Iwi  Qo\VW~ (oDPh!+K W ,0hUF7, `gЀ*[Mt L`W k@O -$ hȌ/ЬM(=&-ӷV!-u(2+R-)IT/ }FXr =&JY% Z?_"K;orD"~ lKEH3y- "mHkSP nټ$U!$d =,ҾT19ٌ W$q%5x,38Xer#nd)R7\3٧ Ct`;# 4 @AY(mo5C PExܯ *X.1 ~ u "^-+z9f̕)0m%T0[-=o"&{>oU  [ * 6X":B@sS\.TMob $(!.Lp^ [:/#2YKQ(29 'M9 /m =+mz <B DTm!A"* / )$nH  &PX-{3'8{ NJ} e 8e -&z3\t$N zz%'L۷Q  9KwV S% 7֙$)#19`^1)$j%)*0 zPDA $ 10+N~"OjVEit2BJ#8 2{؜ VQr QR08V kjEP }RZf*41=!!Eэ%RWU!\ &4#my Vi2R-D D p #n -S#Ht$"~ 60e ~5(jG3^{f*@0' W zE{!5B ["x P1*|pfސk~n {?g9 .. @DZ" f9le4=Tk]x) 2u A=(J߹X57 W *|2&>I L~'~) W # Q%7 R r@y#'%qXj "6 &ƙ*bsV hXx Q )YH }z5d!j߆a}W  1x1'*OvIS&.D>J9 '! N? )s%Jj 8CcA .H )B 2 Z'et$)~X - {v ^WH( O5M3_1'*M4 +L ##(̑&P D \33;~@ K%4 ? 4VR|]MHl߂`1"CKv"] r/Z.2k)" w\ "OKm>$#j/2Lrd Rv7-|sIV d  $HgIgq B qP%~^]~ 4}>g/*&/12?uq@rqq }>P 9V(('s % |Ll/3cIwa EQ=x%3$!p 4^ DI"E!60Wxj k;/  5y7%:S C0J JQi  _83JR*lqq)qd-%*´%;|C !4F G.KT۞]   -oW{ c K %F1F ] Z`=!gs , ݉b vZչ!(hDM  ><*t| ;D6 Q$9bMS P{Ff v Qۋ( '|% ]So 5;}Dc @ )4o@  e 47<}!T1(ٶ u~)Chsԉ(`J)AsJ25cI;" "y<)9S}1ܿ@voQ| c-CQ DP9 CxtqJr -O$ԟ S3XAg FW  aH1HC,@  ]Ua% >lg( }% $eq(dLQ yߨW5/M   K".2u 1f?j >\^26 SP J+#N܈"{j( :o  vcNN\4t f^i6 @$laG_|m*B V g)'U  /GD4FU'\CPX Y/Qt!4^)oHRI1>WD WR6F. 8(hGbTg ڦ ,  !ffj!LS ;\3٠ߦh B\(~ `Wp"U))"' 4!2=R_ 5<  1?%Xm, ٗc{%uˮ3 Ljh -y" k'Y*/!a]K a&cW4Ly6 q$p)Gb`kW"̤  U %5 :Y@Y1Sq%zG? v< #UOg*}Sj '=%^ /9!ԯS0 G HF2k%I(> U_iQZX1&p 'S~> Wo&ASS=Љl na ^5 !ݎ[82 msؘ$f+" f DHU, Rl '="=8Oݦ(./ eh @c >"`773{ڦ+W+q?LqRm(Rea5 3*Xnay5 c=ez) x s"B ){3V;EZP&q~;7Vy1 \P ͬx!|7=?L 9Az[ _c ! _  " ~ jM O(, $7x   l-+ ,  N l ,OX) ,?eMZ Mo+ca KA YH2 ޕW "2o:5 \ f > wAm Ѡ^/] J# +jO" dy#6 Q{*u2BZ  YaBu} $[~UO4л 1 )>Bͬј ;Wtڌ̳& %G K $[v6 m)R Ez n{"6> ,# - z)*}rW'(%S k >X{Y  xJ2ۏ<& n% &=e(pi͑ @SE1U%P B"] \Fb  10W >WZ5va Fv=+9>'J DcZV%(+5^/ )"+((%- Ҩ7*6 d}3 L~ll$ ?+^/+  ~&PB )ޭ2, 2R=۳~* X}Wp$ +*- }# c^M#H p>I#,e3[ݱdO IiQ~{ (x)n`B+ʜ_ 0nt5%9 ZAVG R%7\bw?U 9( Ku |% }7c.ېw1 $.2ߩ9] ,U @fk#QT,!NЛR- & jˇi$ Ex s V R,(ҍY $*-T,E)u--L_ t",K$v@g ) B6=\} %8U %o$ ڟ8 ) ȧ'?8+Z%{=~  Bg*Fv + [ 1r>u&% q mIN`) qn 3sgn3 c\ 3tέ|  ]e u.=g  2Dz >P:-S1t(?ؐ!3 :,2e*Q\!:)e`h1ժ+EE(#35؈ o 7 >W4  f f*%u*Lb WTrU&Z?  %-SpE ]"i+Up,T2! )XA 4 |M n.7 + tև"2; '6z +Vτ* 8+u~0.%fH#_69EIQ jh!P1*"(R wԆ+'e "sO rdy6 wZKE}N12Z 9f ) 7, IDg'\ KltfZ|ߛ ng  qo8ߑ0P 5Q' 8NL\=#9݊$hp R W k t HQr)( X,3#Ir(-Q$KK[; j$1{{2 ςCf ~S]24m##o4s' % H3Pf UHD\Ha<.]#OPg6 au!]شB!:1G(G" +=,r b %" գ5#Wi $aχc, m)S *sIcC \I{( 0p%ɇ0/O,1!Tr%a HR`O !qz| hl4ڪS sxn's?q#ߴV,hM4C0ӡ (k;~1`(+ A $tC"[hfԒ.r!wbNnh$&8#V!^k k  ,GiNMg% OQzh#M߫B2 o(3,t" ߚFA 3.8Z &k ;RuK~0A8 ?12RVGD|I), #(2$ n-X [lQ4/*j"K&X> b j-o%>HcD 9V 7eNi ;l < ~pu_F ~\E~SԜߏN8 }W8L5[~5A (if -ƕt0g!UԼz6~;7L)$9~,9N iqI0J1jy cc " 7 M8"3S(  aהQf^2/l3%nz Xԙ5 {@hn1: 8bD-$ <\} wSf: bPA}k&p/79 =': xaz)Q:I)A t! y 1`-%Uhp ! ,DK,A"KH_ K%q .d% nn#'o !^  ܈O b{ 6 7 [ @V5# ~ 2 Sd֭'Lݸr \5,W@.ϧ)\}8E)! +ʬ3= ת-X>zR -x di)hJU(?" c߸ : 3|+ 69m[ɭ qZ c'i6)ۥ %Gsc[v_ciUsP p~**Q!w`M(#  j9]/ 1"< !)!Bj$ bEKl 9xu dae 7 5d<{1oݏWp ( s zy@%>(`'lOVnv3EC H6t vԃ!yr&Xm y}X .* 6'E*'m"~v!>Q%V' pd q$zdxS 9 \ '8'. _<V T%i-:^13uӐS=)&sWޭnB j6 2E$)u!2%6 V#Mbv e ` `vVJ U?[<sVwWvTaGtRN)Ooh r-+*" * F A /{1(lRR nh'(- ;"!% ;Rk Dyl ޞ,p 7 `v +{3JLr'? pѮ& DA%2 7'L{ z/Vtx {L LqY X&+# 3"$޵̥ j ?|H>h^< H " 4?!G RX 6~G >Ȗ!Y'705{&v}wg"&(ӵ77 NAjV1 u+J[7 F -XO0lm"/&q a# w L]n8U] c/L.sS#^]t&?(λ~H|f 'ɼ۾R6 [S Z \ht@3S!$1Hd( M8i\.^~4 * &OrB BVI)8oIЫd mg~(^1%Y ,~J7 6&SdKҽ$y+Dg" *-\|)( L{ d *? - 5Յ) +Q( _ݝ+57< c&E 9m_tjmI J d\N w 7&y-yW !b{h/5w c҉ƒ)du,  mJ}#  f'_' \@]I kj kEYH o";sQH%&Ҟ/ 8sڀ_ /rO  ePW?AeMmp0a.N f9OqO96[1x![xf! ͣ ;lg^M8 +y >9 ʵ %&m. Ҫr &2  q ]} Y4 b%1 ]j)/ ==sv;߀8)s'? ^OCkCrS! ި#Oz<g5 jY=L2DS 99?fXCFcp&E #{"~:ӑ ^4 rR ^ uf <$-q) @6 &)ܝ4e* 8֯r2WA'K6 } d*n,gJ-U7`Aq- bAP >kobu+?)   R233 8E/S$WHT WS:mjiB !4_bO?-IփE : U*@֝$++UG= 4+ Ea'JK g # yYDi!<睷r('}%ՖQv(. xTR sV=U$|".)O \0's#A 5 82{_ */$_b o tS)  L  kU=~7 U2'+jf($gXj5 $-l 5 b , [ aP(Q $@Lj k$6 hۆ )#N q~'Ob{CfU_H0"& aJo$S(m# k,-4tz{*=#}m *xf e]% SCO YA^4 &x?`6%\+/ͼprQ$', PN*$r;0I_xVo bm(@MWt'N"( &Hj& ߃w/T . ӌE"9/ ( ~wKw U׺l+uiVx&02*Y^rANAݹiebK)0 4t*g O(=O) MfXށ~'Dn")#%S )GjG!D^z=,rR jRR 3pT RRJ'j]  w :5 Fu3˾0%"^߻:5~~%P,\޽`ma"~& : qV  zl L^ ObM (sޘ#"|$rfu+q[ ?F~\Qj4.LKڍL',EY@@!I '(#h 4|7[; "iP r=ߤ Ř oXhj' %`Y &3 Io+@L?.N { MH |$GlKgWw|X1Gl2ǖ)t+PI8AT#aCm<j_)P ]V׹*:OyE Aң֯ Zu 8N!1iRWi S;0 #g# G; T o , ` v"p)YE#qN26 R+#hcU1*<(22`CL)v| 'xh!%8nKLv vj#@| oR !Zܱ+1.,9 A, 8~ v C*9E$Ap-^%0Ӯ1 x % 7;R(.-_* w)yY HL<J -t~d/ [#zd @c5|E#2  %G קƁ>* 1d)~ U V)7r60%b8"n2jIMqjχ#O90 Es,b)"' |Ii% )Ԩ[ C ;.A 8qҺ m\?u |U>F 43AW #!_Qw*6ZS+.-O 7"SD(*11S~^T< >1 +?yN_K) OHl U 6` -} - }Lh} xV\S'f3mCa=21 VԔ  LA?(L%^aX 0 U A>m^D@"Vx(N Gs,o[g >RKL+$R9W3( P -@"K=V#F"c b a!/!t)Мw{ vT W,WtLk o'K0xC<$n zn@ ]$05 H #W }:۲'(YF!E &t K0 c- Jq!8 gO`Ӂ..\ E% ! bnd\ 2L.3% vy# ?! K Q Hs$Kٶ%  ߵD+.t՞? v _eSk_0[#N۹/rY"}MFe ;' * \(&(R {Q#? &c4c# _=r) !H`BQ5&2)D GX $/Vf-k ) xSk{\>)_Բg18: vFFw bm 8$j ?'ebW%q} y'#<_TYs A(V.:Uo6p}H  G%#_G| " ߗX$B@p  \%'&ӧ3)XaP'iG6 jgFp&A1zf2Y M3  I:oiR ^W8/qIh qSn&  Y45R Y ~ + 1: W> *8.?a-l,| Mh@i E 0 >Cn? s}k %a '/pb)+ ;%,<5E[# {Y_2^F8 N ܀؍( !e+k  : mnpQՓ*$xD/ 72@(aܬFQ bK"sk < a"P anӨ) R~  y@l i \g+jϩ,*%|"bV #m3+HG!(z w) 0a}2[Q߈a D6RH"zB]l > ^߰%n+Q*#* ~C WZ#_'"@׷fa+h  9`(5p Gz{%7wYBh( 9 ;޺ MSU&/  ? F[&(P3ME7 A [ka0) *Q. ojf&G(y)[s;j A "p 1- Co # 0|  /c%k"P(d"_7  ! pgfJPW|]2) 3ehd#) K1o%Z;ݾuC@J#@RQ  3 4))NXCw / PO3 7ң[MIp K`Up 1 { /a7?K x !w PV%E   ! ܊׌*EH"/}z#/_*lFԝ3A"Xp)3.'e{iF3<)=^T7 }RgVE-"G H %} }If XXH~A&/;l.xc "A&*XFض"Z4 ?^0P%' _*5/`Uz EMU v g _"B e)n-ԥp H ԩ-  'V{G>;H@$ c =!$4 SWa6Q *e ; [7";L)> QM"ڳNX<' 3')8  16+z B*^--*`ٿG(: "$hd,2L$ *Sԑ +#D 6<I5'^]~ e&=# Q\4W".WU AA j 2_%7/~ \Kn/!P }2d#Q 5&0~  mp+ v  ߖ%*n $0V[aUZ Z~J R7,s+ R c*?0,^Ä{4rT"|jćb&*/{,"#/j1& f,(~! ?, -#v a LΙ +)r6cWyl.5 M@u %YH[ A Y'3F N9|IZ1 ](]|?$1 VB9"oX#:#cI BPUc & >P 6 \hbM>/4Zbe7+#"d ]M $ gX1T W ^I I \KN gwT1g  @~fD zܳY WQe$ yRx: P  UU% cii mж~  : w@FbJa*$"2 W  W8" ϫ2$QcjS "y R >v"} >Si? M<=_qk V-P6 #q D`;{luk C ||#,8Vmn N7 g(yڃRm"u 1gR$l cZ ~ D"F n]r `c?i". [ ] W* lGV 4J ;?yX\^qd,u j! ^M_0Fv)\V.4#VD9U(#g< l Tjr6%/d- 9# ne F"1_K% J r r+Lp? S LC+D~K"*//%:0' ?  T3 G%,4 +> -  c?g  " 3XXA b!Lp [J< . >' i nD yW [;r ث0 F8/D/W Se Q"[p TuLo)@zgA%m Sos[) STP5(P#۫ +1 V:Aڰu3N(!P 4U *dR(F.< g||ux[ + &~G+Ķ;:?Ǔ\) %q4P _U.P(&cc%*8>d[P#u!̿3$m]1֛3/   y`O:]cw&.}ŲA'-(,c%"9`z9|dr\O|4 )g 7ʟvn1g *  Xʣޫ/ S% c{ O;M"w,( o5. ^d (1ݘ% ?$8 ط{ x# |H@t6*Io׉)X'|]Â'"8. 1%/ e)A7} #7 (4r k,$h0!i7F goc-$#(ߌWS&6ڃšQ1K*B7 3D%F c=~e|Y5Q-!J2P~ b1 48 (ֆڐSD_ 1 [e* "&wv7&Ǣ߶ Y IsIJ vZ(7 ? j <Mj2 4 S8  '$v| "'2  G K  U{ A P YM x,>xK = -~Q s\~ *Bs,;7RhFB |ݣ(Z/u [S6MU"r l`('2m% YEq#ؤ |xb $~Bu٩4yL 7^RV%y:q9&W$> ɞ%+v Uؾ Fwj $X[=fIh\bT ~s.J d: ?-) M~ -!~V|1ɵ/)4Uu PH%+'+^C-8 {xx@d  uai9 !/jE)=3 O y fw $ ^ Y6 5GOϗd"qY,V)3,], { f( ?Zs {%OJ X CgLww Qދ':T^R_j@&q&ޔ 5k , -QUB޶"%QL;j}7wځ /M "}>9e ""i'$p[ ֌n..X^w(b `'$|OysPO0: 1 F2& #gRZ `d7BKߏ4r$0yܸҽW ;A~ &-C  6(Ri vc|* qV ]. Z"d0 X&- B_!1 Q 66+~bv\"ٱ8w 4f&Gmј 0;?p4. iSH %}" >YA. ͪgu\hBE 56X+ P`n0/2-6-k4: 0 d-?D8.gz#~")+)w&>4 8$ 8 P.fm /  ` @ -ZU 0( P!]~\XufE  m / "(Lx%.k$/['_+ ]2A( #rK : ,[(Ng 2!d4t=&ox|J.M%ct 9B8&ߖ 91)1^f4x9i= ~ 4;#?-֜s5~*#Dn\S 6'b-=8_ R|N!30({_B!d *0|(%EE?<#&uAz2 i YvC6fՊN&%[ o O( VXn:f ' => e τmc |!q[ K_"f$ y3ߎ? 7L^N:_ tCLr؜^h{!/-D #  m%N-Eȫ'/) T>pk, .B&,n*KIW׋E%G X&b!leZ 8:sDH &?U ,`u-4$} W}0d3 [G S%~'Ojq9B &+ \ ΨL^p P bBl,0^oO r} Y sQLԡ] Uߛ IE*H m E  j=c '!E!MS5f!(-ߗ(c0 c Q U n Q CY]& W'.wa"^CQ\C<& K = t[y =5 x', ]S? ce 0 5'z1-!%; '?pm7) fu#+ 'm@%n *Vc-E7 aF Q FC24 bݽ D LRg/Yi'c3"1 y.T|6%t,ܧG `/9TZ .zp ; } `% ' *o* N ]#=-V yO}B_ )VHqD.W !hu,Z f,R@ [?l[!Jis DTp k I$%(  q Nxe/j7O ,nO~+l/.[ 8 :Id֣ޗs RX;<R3_\ HROo۱ p8'1lT x+Z oI /\ b, [v؜ l' 3F 6Q$^ G? O 9ڊW,N IX"  <G`1 V E[rn \1"6"!>C~&6W)Zz" k,s;} NYW?jkL"V D   6 )?[= )P2 8N3 Ͻݪ $M):cȼ'*~Kj i}ڤP\$ `pp( .E %E f#)#? ebEr\?R}b We8 #6* c7)φ׆_R~HB$8wHq }'X e|*&a` !rb~,GB46wz@=fC.F Zj8'B#,#U2x  " 3/f ?k 9 jJfZ sj0݆Kֆ%{#  2D!s) \D1 &V!r=]_n I 7M @=^#d1*k==vs.'6 _U ܵ3$7  5Q^Rس5+9NE"/_Th!L  !Qo/ʕ s24Ӟ 5 G#X"a/w-f{ s cyy#h#Ut^,w&L}4Ls*3HS32}A*))۹ N z nV[A+8fޕ" }Q50 5b% :P"s"5 6%Pns0g o!  $b'g+1!<p+$9q m%v @`l[X pg P ;^ )r1B, ; f? Q$q:{y& sO) tk[19Lk id5 S b:c  b # 61+f() %)ϐ )`>WGzZ.Ui $] r3 '9L -5muY ,T-TllG(I[̳  ^c\+9D! ) 6]Z58Y$>  no~T "Ws gf!$r_: k DpW-; o_L&3 sߩ+$t2 }KeL >/ y-~psr8's C;''!&y $!@ gLf AwyJ ;[D/`M%,JUe~ I=y/rݔ3((T" Te r2" v >I &^GtkpGEd % D&0 + G  K~  9c*(6 =hq& zU$uWz$ J%Ry HD| iޡ" $ > ' ZA t&!&[\;O_7FA#% UPۜ ) eOr) 1 \ZWB  wgoD.*%1 &^ YH,a XE je * &f A[ *LQT  &En+?IG [] 8i&7=Ik cZw*)ؗA ( +h=) EfZA$3&z9"[!Qu%4|Mv: [vC r ;nv rbElg )S  SfG  Cw qRcӻqj)&"+1?F$RXl &;qT_5" d NIi qJc$ XR"vW;y7LΪS?*"M Q P~&71[L@F%y(p6tsM C2j.FS >#D5! e_Y'R" ss P.!{Q E.\S 7 8~@d(z -}M |_sM W-EǴPggd8z skg C; X$!}hm{ E O}Q C%}\ ,$];l#N55U=d_Z'fQ*% 7#I~5ܟ$l>|9Gz1#;&2 yYolܰZ b9܋dc! gA!U9 'P 6&JcP vS1lܩܢ m(f F ݺTe\ )1c^A SJxpr " uָdX6h ?as"9ADG^X *.5D HFKS ~ V1~_F" V% qF} Dyp++#-;4br4طnYT=0- ,v !K#Gy 5 E#(0V 6ـ#j RA} fsEH< kx / I*@#Ğ %!/[7 i "E4  !:U.Ճ+"!g2 5% @<ŗ<i q Sugռ%1$ E!htF} n Gd tA  6'% y1d K-կv{ )$; %bF~ t .!*8  )F>آn P >$< THh F&4߽]k"Tj4 ~'5* *$ v{ .RJi  4 !11 = Cx Eg Et."ޑd IV\)#R 2w "=G19d2 4*0#- KA 9  "f UA'*2XL wCo)c,8rd%1r?%$LxL;2gXЃFT&(Y ;&2R2R,EMg V'3@ ! &mL}y22R Kc%W  wI[|Db}'Lv/ vI!dK R'؁@#B'ֱ$% Y :s'6 ےfK jU#Ա|EV wQ&v -L: *r8;hp  B>DK^.-$N]WXiqL!.ɐ7 x/* t-h]͙" <4=' W> ("hڕD(S:) ON[w "g<'IQ bX8<1s*c2 }E'/D$`>߽$)PLS֙h*cŊ'u)B0]& 7{fH #Y4y"v[K! (k PHv?4}}$Ez!A Hg k>{6v~:Ǻz# -($c9 !Rߢ #Pc.S , -ۤG @"Xn ]_2IJ ^ r&.Z  (4 N\C!'4P>Nc!"N"z   ' V`ERGP//]׉܇'^E^>%y( i  NԋpO!<dS) v* ;'tu x v7_V* ;ɾlz$ApWp,u e 6  lՑm'(K t_~'Kc W1u]5~?\z HQ$iI e ަEtc jW4@d؈v2"'/ z/Rk O-߿.N( \3`#mb k!&lbZ:h Yf..K # s d@  tLBr&}d8u%!(QǺ*+}3  t y%TO-M:! );HK tgVsg  |Aa9N&+ p**Sv"@ -f[:ٗkv sJ2 Y[_fw2/he: D ~TCv@Tm#Nyٜ y6 p/r ~P" oV , uխl]:[_:`r Q/T138 Yn@*.n/ ](P> C ёp-MW wDe  yam H'v3b< $# oݻ*%%8V ܢ(*;@v5AJy 4)GNVX uz H' ~ג("m1.!"jmT#[4 & &_G.:RwS# 6SQvPtez 1  [ߨ&H/}K '<5 (rVk|  uv4>x9.(7utb ^3/zxO] Y 7+0Q')&ұru*Watv( ] 9To#^ |[X@ J Gr F#I (o N ^t>*%CSPx1 =BZOA z| X/ _Q_!=I p<l %I\a c j8? };Kq M> e$&ߖTC45@ ub_IkeH ov o 6im,;f / 82A0F:'/Ib b!ݷ<%wi%r U#z60 rH ^59rT +(~gAc--K 9 Jz 6 Ӄ - sx)X۶֪53*= **#Ye2 < &j3821x-'7׀_D#(XBN YMy m3+{!  Hvj hY qEkۥ 0t]^ =z~:'ESݲ&0H ~Nl <-iePI;} f,w|mf/ P&1T?) R K L[W ?x T7 Ej`k.i5  *<4c *T 25Z r|΃جpd[F_zկ~0 P@ 6mMwo!X$ S .7ŷ$UK+;d &)kG)w.C@E $[yg?21Dt=y2UT Y 4&$FP!t% 1'dD f jSt~ ~ ?< cGY % z 5'  Uۜh.e$ h[/0=# j3 0*2/n?f~UL\  ,&f??'^o v./ N%p~aS9A Iem As b ~ޖ!?޲̞22@zi4h#o~t"P%'r} /*PH*X04݄E+"6EZ%1b 0[`92%|! ׌a'6ޜ@lH-{/[tߓ oֲC!Wװٱ1 2 # I Nn \F\?A zGZ%kLHM<}PtS, 7? dF[<lM2ZAՁ- %H&a< MH, mu? _" B +]Nqi4us-( ,S3  #y  SZNev3>g} 3Q>eƋy)o7T:=hߠPg4M tj%VUO_ ?eGU' xZ@oV*qL,?%$0]_ U2 7xk10F U ?Ԉ22S%/ڶ  !H""Zz ކ8+[& {kZ^nV&uvGp  U6M#&gvePw G*; UZ6 MI˹ # n  4s = };!W,$Y^ 8' 0|e/OOq~n Za#AmrYBwx" ה%#)$*q jHI9k|e[?K3\Rml~6 jlp Z KK6 `|NN(iQ  O `b-L2wSWpwy K /@' %s8  R:01 & *w s6+&'qٚ" S(o!}/6_ Z~ <|(0% '$GQQq < T K cA:#@S^ o ?4T2d zr FcrT"c ߙ<u_y (]5czJ$ 9jYޏM =m]qR; ^Q&dV(ɸo/ $v   ,L!sVE'zx ( B ZI-9۴G 2a2##\Gt h{q/ E ,è&* u 0 BMZ ;\U$ )* #Z/(Z:U]: lE;t΁P0 )60s+ }|t !S K)3  }y`e1ާ*yQ^)5v:# Z D$i% ^-!aXK +6+#[)]iZڡ2m1_r#$&13,\n Fs!1 h\U/I–3; )Fy !;QT'  Мl n. :1;=5&^V0!3،9R tI"g" Ή} #f! n W8i%^Sb%#H`n< ? qG1)sE`6nL) cL)U$s_j Omr yI1C m {_"S^0cJ  V6"J 4mo8+$ x`*sUYq S eLU '8lm  )0}{9XU9Ҋ5MoaS#;UB*.-Ԟw& M4 1.)1."U W1|S@ E2oW)e PB:) V e՚RF7:^ #" Lw'wu< L @+tL C  !,/ 1c 9O m 7 |C"#t?-֑D  WKh:C=-?"]9e.o}ӓD)-F 9:[K ;r߉s?޻ Z  @td+$TG !$80RE0_> no:3(6zّEj[!/sRF; lUJ5ON !|@B jF 4 #^ vbtއ)= ۥ(N^ԝ xD"Gm [< (PuNvSҙ ($uA!J xt zHEBZ R |f''F)k -i@ $ugYEO{p D hHzm{js@2;)WX'M < ^/ZN${Ҡ af]$f+GI  KT b0#,:ߪoL'pcvk`10F j t y LR3pho .b@>Qh3Sc NM.g -u=]ڽ &'Ho )#S%[/)یM e"O # w7aQ4%7 g )-B  "ٍ(D?Hb%.+OIUͫ+7M $ =m) 47SuSyޙ #\ِnrj^Hy #}d3J!!h۷  GL+1aIj,n/x$ yuof ~%YO,^{& h3 d"Y6y#_O^R m%r!:8ڪq/ Q& (5 sץ 2 t5*hϋYR  U*[RLoD 4 .FاU$?  o 3Dp+N-x{ - ! 3C v| ?&Y vMٝ G.D6%5 v 3#31XU6r",Ngx2 n  oJw  b(p1'T"1D{oae,p&",~:0ה_Z $2'hg Hn/ b%ef'u"Tݑq-  O kϵoP 2A+^ -Q#h$P:};9 YL?= { :8J#Y A3R0 Z VW QVKM' ]: <#3/USDm brUAC d h =ހE')1yz J&_փ/|ַ%U,. <=e#^l; _; g^،*]NtzKb5 MF(7 sݠE O&^]܈T A&oK!J#,8E% C#&SCxA0B;YC~  3 s׍W5ޞg' ?n \/%b26/} $: *Wi N/ {:+ 58S#7JtS +1F WK{yC7A )FU cS܂g67Fv N Ge: &-!ZW i4 v q2 1 jL/g6[: 1kVN* |z՘dB D FC~v#>( tSr[4 "un 1 6{Z#8EAq%|$J. 4ugG:V9jL#P1֣ s>xc IW(Tld0 4ZQ۴+x^ 1=#(R( +Ix0Ur>*4 :% v?(204hv 3 6@r,grP^Z*v2 D  ؃6#v2)uضY(9  M _me;"Эe$>71R ],| .  t -cF7&!N+_QC>QQ,<n ".|P*A@  usq@8Lʸ1%r Fݷ".) eЩ|!! bQA5vw\ $kn ! '6PRb(B'dJ]P(# '_ } V@ 9l( e' 6KC" Cz&*k8K1j#4=puM w6" 0:"*&v06 Dv( +9 5SVHV< 6"?];"gD+H V Ju+.2nv5` *\ o!)+7mW  Z+%` 2U `MS@B j7 w0j݃bvSY { K= ' 4b #p>h gwD,$#rbȟס7~ 3у6r'%  &@Kb lo{Tvn"5p@  " Z(8 E _+LC0jYNgzc I;ٹ 1#%r[*JHrSc,3X oK} '`1 p` \p7ܔś7 &J׾ qF! 8Fk@ v$%>N_co%`%7λ7), Tj 5]S$':l&{ e O_ Vz Pn%l22O't|%qyC1(Tuf/i/.HLh5$} E3%: u m[u"  C( Ȕ)$m/t ( F.  Y S lV lkO]h$$.;yLenES s)u;(6 C@1O k`#Tqk/ Pp<ؕ/,_Յ /#. 4T xIkoE b U6>*#*R$l +X >yh7 Ժ,c >M{x B#{3"BYg 6 AV3)'66^G[3ӷ 6V3$ ` IA@_ ;FVf5*0Z>g)$lhE#'9:KOf;< !Cq7 LguN wXqBNeT?oRo@ 0 jgUq4${j4+ $ $ w^9 m{ jF5֒9Ki`r3L%{~iTXQ AT 8%f 'bMj+Ph6 RQu l' !  o x)|B| j bIT*fQC&3]ɥ(- tj&qӤ!hH< #aAS4& & [R !\'z6PX4 v !'̓ t]'j8R*!rCЁ  99 2-`$ zc5Rta D2xF)m \Bza|" 7 .l'\m.133hοy' "d|M#o!!pE ,:y: G7  T{k 12H /Id !e:#-a}7y*jBQQ&u6=#)I wT'u\+- ZmHzD-:׍)-ƥ7kMU2 *ˮ! 0.V %@:R$f tӲ E !  wf) bm~03#cH7$5Fs\\^% ,5 }QK u PW (p _?6Htf^U&2D#*qNCQS ؖx0U 'vӒ ݗH rci, :% H  9$-S w+T   @%ߙd%kSF+@( IVK0(טaBO2k< {RNd,`2e+;@ wOF|K%6'+$ \ 3c;8TJ#`s wP .Qt< A8 0:`2tRpm( 2f6r> ^bELuF,,:iII@<*=<yѽW v_4  j-q (880 0#= =,  MQݯ u vS3 X CUiGVMOX*H|$+4e6*)p  {  Y Ny &+ϛ ! lawV qA{,=` :-VB  xݶI t9$7܉Q&2, ! oUcI Kߜ { ;TWcGߟr +'= T~(>>$1 Dhso y Pg$(z}_  VETU ֕P  *P=L1)B x q( P s ~ fEHp .`B,uJD v 7"Uz - u K0O% e4 t%N* <!H"\< ,+$[ -J( 1n"^$V2ٞ#y/Qv +#58T[ߚ>$If J S3W[aN .q(V)2* A(ק1 40 C 813w`^! OnD hj\ \D1 ڎi &*Ob( CR nC r e/+-5U |FB(&~#68;$z$) P&4 ZHP !!G zfh۝t2ܣ ` / v@ <a!a3/1Iw3WnWybkA> ך0!j> (d3) pR d l- & 84& j~kSha9 [CD  ?ޙ; >1ZrS)?8Vn%XP b 2O \ . pZb^g+ˢzG,I~@UQ2GcH@U6e 5?(T2-]c~q x$&ة#:c y r ڙu"85'W2چ  c >s K.*9 ?M 3ْ F5*unn3 +*i&H  f$+b+[ QgL9s ! ^  .6?  n) 37x `La-,,)g BX,ԽN8" d(֕+"17^t { :)V\&n ?Fzs/  7ztB Ap F+ ߌ u >RE  J$ =p Dc0OHo50C%e(  6 _ײb 78wR`"'P &.6_.bqO= hW +7 *3״e!T'595cbs v2#QIO݀F,9Z}OC2 Fُ0"zxPr$VKτ8hT<B*< _ Br .2+v- `1; yK  Z}s S:o  \Ai75  N#u $o$E1Fۣ4 la2kܐ~>b!]%[S VL8 m G]< C}#)/0J"U*JX1d.0bg5q ; s 8 ݝ˞W%N,"#&R 68JP3* x9K*e60"YÑ/Smb3k> si Z/ EuA r FtR 5@J; k ~B ~~?vn[-pt S`KPQ l^r'!~z`LVoZZ\X +*sH (O*3n ]8u\8 {n3YѕT#,lf Nx OGU-h%5Q Ifv @v) & lWs g^ tqyx> dwg>_1:-= X+&eM%*Q BB}; x^Uq (F? $6'NlX/q@ $躼F/\>p ". 6q3mGZ {)g -#I DjI_ZO@q $ T vVc ~( Dy<R""f iW ;&4 7X,^3 d.@$`nrH 2 _ e\2ܵ \u32r JE{HO x @qާ.hvv?#Eo߹.- psO XOhBQa|"u!O4sL )  ݣ!cw (W]<r p'd {)q| F*W+ 4br0?##I #c(4yݧ*? H[1Utܱ" Ov )L< 7' VgŘA%7['=΢am -k Rb'^ ami9NF<q= zJ >Yn`E/f&S O  %d6Ç؇!!~f }\vX&^ݹ_ l#lu/ ]($܆ Ab  19n #߲s  u mn'΁,{htӄx;hcO-|z)h =7iQW('# g6k }|kFX"' HT ( ڢ'+^p6*g()'Y J5 3#p @P@e>&,903-4\ iA.&1C&mL. =;8~"[$u6̒- Lm f! 9# A^L X& ebPӶru/ m !o   Gh &/U @ ?$"+O  Q e7{dow, YI ]5J\/E ٌfOD&:*P N&^** H٠ * "w 0.]h<#CMkj  U 5nw%Lw &Cn&; 0<ܟ{> 6 ٩&&6tB>c  /W1Cqr{ %x:eu Z 2 @! r _> m4 "Fl W6]R\*'a 74 ) {(,X7Jż'$)sBnX49~c[HWW*)ߖg7 r 2+ u;+ >0E& tZ^mA+(o Gwv U o%w_ h a {ZX 2z /\^#J)z01nk'BC-7X$dڌ#ooj(!"F9R>8Z< bO@l$Mw ) v>L ˸HY^S-)A||"cD+,hV{=JAPWbBˈ5+2yXg !QP2T-u1NQ գ ԛ'=VQ"ޙ$ h.)ڸ2 )|db"*c[0.2+ v j" w"!ێ7W!7QQ7,) ٍ6 JV]#b|q gyl 8+t HKO~xL;%]0|M:{ <y ST<%)@YsgY*")7d !(heF0zL! 8.Em) {~Qn P b 5% }ONL +J .Ѻ/Q%@~f!s FH E~ !COev6  a, &g޶D (*M@Օ$ f| $; !B WMνY3%# W ' /L% d$Z3XCAf"&v8AC*#R'#)ܤ˼+=&=w4z>g T)v@*ir_} [. '*r0 . )xQx "o~ b D9 iߜפv+ O !] #ڼ]n6n h~"7z @- _Wh*r/BڝSOZ E3v( =՜d$*%!A( ITiVtK8 ۊ0%`F1F ' WZ2T A^|+ ~V y~Gnۍ;5>M X  w; A199C  Dg 1^+m9֘Қ'!8kO& Cim>5dH 5٧e#q$r@&!)r KgD)V4 :p7| N 3 uR,)0O-p0( HyY;AG/9 7xD ,$?0" d܀ oYk/ Y-` cUBx # R | eW|٭4/x8 f?r j7y/&,7"  Z&@c.*N߅7   K*6t iv_Ы\L\ !:1˄c'2O_ (݃ U xB!"B6֔ 91 BDK@^ /<U ZPSx `/  7K} qF&=n :o޽k4{>%_7/U0+ aZD&!:޲)-@P6L/br fg !+*VX~2 P+hl' k g ޴ >T'*PI8_?<^ r/,&(,zAL $qVbH3 |9"<H d; g[ HDm40 V? |ނ(o g 1Sj <0# r|+gp7zh)C ׶VN%K! 4x7h&WרTROR $ F#1PK9W{hy4) (+[>Vfdoabdڑ*, HQ"R 8 3 i$ 3t!Z9!њN<k q/ 5 "kZ Uc%&N2,.kn7! Uo} ۶ KZ<`'sIP\! J̃6,/~ <ެz3,I /o 8,|= Gp&!^Z)jy G N  =Ж$C8"b !\[ 9U,[ 0ct])1:3'$Yq=gynPSqs' S 3՚O+';"D, jӅ5OBlqB PI>  VwF!h&SGv.5 l $x ʌ'&ݐ P`. >`$+1#'aVmx0#)C* G4]Dno* $i/ ԜxVoQy D ry},Cm ` ,eIs߁0 2ܾ.)La:3͐_D g`,` 0 ]uK{ qG)S  6CtqJР(>0l> ~\ˆY S! >)$1ZSpj ` U}Ah|`Y& + x{ ) g+ W q0V?? &u#1bұe #Iz&3^*P.P!:#coy #" D*2 ,^f HW' s *MS;~+@sa8F (  ۋ&jD[ڐ ~ g.D.v/e  XՖ3')> W϶/,L n+v9ޙ5lK O۠{ (8n'_]{ b_6z y$X/B+7CY%Ou U 8|bOB Z39 :r$ϸ z72 u#{-GߧыE#0ں&ie9 , zH^&v \x 5ޭ51v& 1|=?cRX< ? yCI5  <)C$c? %E0f= y}Lv> T {A6E %BMC5A. ^%I_t" {a0 3)޸ $ENӿ~wMZ (WPu[ >&-6y65{ @l)O6 'M 0%^rX?:ˊ|*| mi '*u!!q>6hY֕,1 9 ͙4z2rL8 b"~ Rf**$$*4K.eTh{a S]\YHlS VW Sg>OYӭ  Z( (c o iJY|t% R 0\ 9C ^$w( B kۢ * 9(_1 +- $EP[{,t"Y&#:4c Rc '!PӼ/?&~W0} D%vgޫ'R S =Kǽ#zuQO? l4whp>I a- Op!?]P:6׭ 4r^n iU+kl;% ++w]lL<  {==( y9 $U-Oۑ˙/7f Dj L9?  nIM Jg 2 `1߰M_{ym+^P"1AP f SKA fwaUL=|s b(,X 3hqx)'Oir>"= _N# PHJ 2Hbc gB`g| }lA ( *?TxE.<ۻT M //^ YJ'A;0CP. UmRL! #Kj&.6WMb2X p7Xe yU,(@6*ޤF2,V >]&JBl2^Jp #3N!Æ3x2 UHYZsrvݠ"O8"I.b %8Ir&hkƢ? Ժ k{zc@D!  [Q]9VRx ^ S6' _-3F0N [9B<0%Q]/{.6 E9  |S rWkS4# ZzuG'xS \p `vn"w7m [= UxOY a d g%d#_5 R ;!;Qv~  3 4'?  w th \!#p_ [Gn:@d>'`-Q yH= OYYj ,{Fm#:J~s h4Cj vߵ'6Sן ed5qp#֪L3) $hu Y@9~MX*9wa"Ŵp w\ B&ԋ1b>(&_:ܚ:i3 ƚ %2Y `s 8 S,>Oؠʈ=3f,n7n{ V;w  X$Y-u-r 5[< 8p^&" !%+<܂ #Tۍ 4(clH s }A #Q$,*t_."/Td ; wK %݂;zK.\ 7Ks1sNM*-h_+%B>mob##  uYl5{ r!ץ"b(L"]%& o. t&q$<$qzx )):f -Q {R{h#PT"3*-J/X [?/Szb8$qN-Ag5/$[ F@"Z w? |'3X ':  . 3 y!^ g\,o%$1ix%G` %7ooߪ.\"K S1&)|bUw4ip G<)g$@ W Z!: d1&%2(:A""~# Y JqbxZ fi h%OMFRz2 E ^ s? >YT!(v37OѼP %Gey`k ' &n ۠z(hQ \3 ^: ;-(4I2f S lU? ޶'q&meFl< -,d %> u(R?%S h[8 E<,]ZЕͬ c&FC I1 [~ d-i wj6'+F)tݖv$ut5N \;YsDV^T;  /1ן>6YZLJ& 3)!E\! ߈X9f/b. d wΟF"2#kX(cLEtY_S 6Vb qc&/sj%J*Jh & P#;בk_Ω^ 3(l1 s+*o VM? _|2 g 8MxSX3{k9.4&,;~ ZBS  -!e" I\1= QQ  =?"^ A5~OB10g%py | ڥ Q p d$3 ,/J 3;CfBrW!LV ob b 'R,d-! s "&}&R\'d"'\9F# 3<]N` J KY} &# X  ?Eo O%S<,0 : 1 XB$!& 3KrK Xn[ @ x +5r%c 2(2H!/?S{2 W ap"=ܓ4@"3( X 61oU\O_" A=i{ 9 |JnUMhj( iLݲ" _9r Q jsl !?)?( )+l\k&r" BC = Ug@ +<@ ~Q I%*fo6 z uw-`, ۝=/ Wޝ 3T=^{mg f BA~r52L" ",H:jc E ! tm+r6*}R !  q rCLl ?N pq  '7* 'F w?WW% SSK1A,&ޯ & *Mؓo"0lnx  8q"F* #!٭Yt +K[&_چ`$rgd/  l(j  n i֦B!"H H\ u2e_kK['^̉~(q5avQ$mN05G4 ue oL;'1'G t 9F5)bմZB _97  : ^@+Qu Q_!=MyR;4 !6#0KӞ(03$H U2 DOpHz-icܡ)p(= 04'{&z5 0ۮIdk&_v׍Nw\+E U&|Zk',&G -yzMg< </M Ew#I Z'ݚ+1)L+uV3dvڠ/ +"I,   WYs b4  -ؼJ>'Z}#K$9W 7 FOܴ !1] oSދg/4׊y Q.HEVm6x<&t  ,! `( wn4YJ<{J WNem ; "a QqcOx eJ8/`~^\Om `k-OijjI'*T]| 0 `ʏdEf]8 z|2 :&-,Mu 3 iFR 3ϰ#&=ҡ8/Sƍ<`~w$&ˢ>(" @ 0'GI}~ ߁ M1e*"Q$WA"w ޣ04"[AMf/rZ#G dWYnr6>n!J X ,V=}"* "F( =O }]  Zc#qBӧCp # ; #&Z4-  z 1? 6r*! Oe %7%i. $`kfsc|  %)ם 3(ٸyT JWۋ v }`,/wU /M+2܋ \ @ ;_xPܫp+9NTNb @QSzX<ݮq4`"v5,1@j SR-yWM }u@ `6o1\!' W2 ML-7'P2>,Ӿ,+ iSk-= d 3K]%+ KR&,.8:Dcr!K:M8|"HX'#N} {=-/^'6і0Iq _% D  :jt h )K5O da^ ~ "X ~ ~%lcC  6+Cs7ݶb+#$-@m%yg4+>(;RP{u#d''U/&o=˚"+k  6R^K?[4WH)=-> 7:= P& >y]f#Yzy!xiS!vJ "2GM 'Zmmjq2.~ߢ/f u  & Z  !D"vx* S3@s/9kI; i ?zRQ:-=Lf6"  |^ lRK% ZS{q  )$ 5 bJn Y/ݗz5$ ?F9~O|=? %#Qq 99_ zJ x_<E'%R \ [V0%("LRʬ=)p18474((ݼ Al"u,hY|&HmE _m 6 +tB6* \k!4 \-((BC](n~G !n24"+0gH*4 7# 7o"x ,~# ] 9' xW# *o%.38=a6F PǘL(,d_-Ud H5~ }& )Fqk9֓p,o%#RoRJJ7 ߎ*(f\??f;zv i=i$26PA01B5STU GZN z4)5[c<fDТ% up=-Z՞Q| &<IR{ L^T"z j'o[-erZ ,6f1nr!p091kܕ$1#Nnf!=P b߷15(ѳ(Z*)IS}0ѻ͎;(> dMjh'Yr33ߵC{` ? wG !p }7 C 0u$`&Fl Z/&nr*/ S(-SVF6{T :H)e ,yyjzoMby w): Z!?7n6;~o 1,. ( . !7WydGt /_*8f10 C~: };\/< EQPxD'l!i ;=k} KO[ # FحHFT )R1y)l \[i1s 0me uZ:%}',2- S"7 4 $ s%F IӮ Vk-si)4KaN@={F:1`dX JF;!j `=u/ j_ y >3-( O$Q:  H T_r9F l|= ! :rz K ۞ <iF|; ,[F  K{w R.f&+ n j_ AWLUV%g E.!Ex"1xr?! p:/ =^fVKj 9v o E1:S!~D  `$$! 'XQF$)F  jYA !. g t  wLm,5%hSf|3 I *gF00D <iimq bEPMs-L\A[8eB^ 98 YZa J{M$eb !xni ' " N:!x " UG5Zs7( $a'AU< A/X2) 3x^6 %9 T\!-Y""yDT .=e`*1e:"Z>JayP %KQ$8_uR ]PphW"G$eR_ -b |Uf@3zh" vO s< ^< z1ew#4w !ayg}5e K1+U;CYՌ.'gԗ(44"06ת#C4n.- U1_fߛy!(BBd^wx !Zm#0ߴ1fݺz.u X >)R `Fl ~"E2  r6~"`{s,< ;Q3`L1@3&vZ\%A`<2;.J0!-iЂ$\\`s";3.[l Ki^F1!QnVN @\r_j C O0Zє5jk8&l,ghZnQ&? 74Bf9C) V!g"f: Ev  &?^تp" \ $< 3 LW{"S v"ƿ5 %[+ 4%wh Mf m *u{*f߳p{S)*  #qHӑs!!` % )'ν B [@l 7 `('Dn_!D#ec]I%U1 3n^YJ*{a-&'_kԽ5p քv8' k o<'LYFG^CtdL% +4R,+ Wm! D`M *Xa1.j_`(2 bfdrfv ji Г=J#},C7*!z3 s\|h*.Iވ)Ch 8$tM djW p)c#&F'%+#;* s,7ؗTnF Jhj Q&a.@rݟJ a ns NF<΍ Sl1$CHd jk D;JZ : ADo (2Y*/zy-$EK =~iz   ئ-jKt~gE<1h6J  X߷y&iUp* "tږ+-#!}l'<yFl6O$.$QՀ4)+$ i 6Z? Ll&"'t  &>J֦!D F!Ld8 C:k `>?+q"9VCM s>) X b`e/v `$v7D n< }g \k V{ 1 %ޝ-e.S? 2I t&J6 SС$Q& J0k4B'|#=$ ,n$C%][S ?Q y 4}V!?Lج#-Mu@ Q!xb Nr=CL 3&! ï :roSAbkU^JңU"v* <7 # OU RdmM^ ?WPXQk 1'xy!:d*)6[&] @D jM0ȸd 5O &Z (F# H 9*N$"$g"ފ bal#A+/h pjI+g/!0 + nN+i'N NZkN 5Ks HQ )co @~&S$p2n#*ӘO[ FjדW  T$ahP Hr'x ؗ )ޡ1k p3GU(^l0 צI+.%')"'>V@ V2Q= y ,cq g !Rk v J?v? W &l! !-8"WL"TRݪK<p o 2skvD3 1% 9m :1</ҋʅ;8" ;MH umGD4_I? & m$.hMer^d $5d &/ ^-q3e' H= "7 =M^]l)+t:*]T<$%s%/&  N$+-_&,2ѿ}frb  ,PAMOR$10H8-X;%R0V. X>m#)Sp?r5y$qb{v"=̦YBj$X u|4'Fc#YKh % n+lkX^>VK" J.&gSrL(;~J%-{&A ͭ ,UWߣ,. M$> p? OՈԇf i14ֆf9qِZ.&(FS $C&3x-fy~;5Xk]o(8o[ ,x+g--);`ZZUl 6-رij؆/ 5&alf4%Q1} 9I׳u$4} RK;0]2T Ne{ ] O/{O%'\ް !ֺ 2sCJ/ n)ya |1]E&\ Q?u4Z!Fa{4 :#Z -IY/RTmE[1M0܇w,qH' GobnS:j/AeNP $ێS$ #gڔ**/ # F$JO N>  P  ( ,F7m-5/bUL-*%V Ƿ,:n 0{8Sp4իHBv)#4  &Ҋߨ)%*t0Dhi >+ 6 8.y'L2;W^> rWJ'2 LG@'!sޫa #_[sLBݷI"U !Y(.Si J_ UL%@L/T!1v;.!%̮h)%_a| l<V9 22f[ s` eL/ ( 2H% K4ix|,fV \Xz)- 7"?E d 70A#r-O\O (h3'U@ NeJ8o .@LO̐Y v OT&Q6j4pg%<roS}$p}&6y? {<.qR[%i }~- 2k){'`Ү6] :v%53)8#s)@'4 #@ L g +H:f(3 !oBK H"S hL| Hz }u1&H|jG.@E #IwR *P 9 N$1$_ڂI)*ZK^((34ܜ 7G S8 Q/ w!& Ec:^#X @< ( 5$c< O;Ct. /Qkfis·&) -~`k4?d w [[ )frXJ H1:  J /aV2IyQPDEkZB-g[) K8u0}Nn"~qztG,)?\; XYm /e#Dxh <L oLjZ. ' #K mr"/о ZW -w@Jf,G 6#K ; u+۠o9V+R #n el_J1 1ʅ$mZ;b "csdF5iw\ ,'"!6)NX }o:R 1?x*ao(Q 7}w 'nJ UV= E# )Z &% ջ }hnM;@ })L]4*1L  _f '# lP"9Wt*qhtmD73[ T 8b PPXU TtI  U h A&r+|F\-( }Κ"Co{ JT a 9d"%R܎ KT P [rsW4t(J_! z 7_Ton?{ ? s~ 8#B26 P KX(Q _E4{ mFUn4 ֠"%, Lv @:h kʯ .1 {z0!aaO'w P#T V6}B zUF ~<ݮs-?I2QW ,t/ qq$X9`6. ,+ D,T=\x q a #Arr Mo&3 Lc v_+ \ n1t KD <: ## +; [b pNoN8vN Ѡvpvۨ#"+0/)9cbG j4{j?9=I͏(sO *c>ʍ[ r 0.#*B!5 ϱ',+Ex\fx('#o$""4$])/Ic & `V8.  ,z\n^*v$  G I ނ#0%܀& /$/~2H~V7i15:&!8{ۺDA c 7.#Ѓմ#N"pd>'qh'* #%M_- go|&o>vZ. 9̀ *,- H  V , Yn1 9ڮ\ W.[# # FJ ve?e<-6' \'%!.G~{ >fY2  Uu >I2L&ޱzKI} NL2LQ)( 0i "ٍ//YJ7 S,TR.- ]u /C# (%ӥ u wA VJ9rz5-r9,sFtf,(/ֶ'o DFHR+ +5̊ < E go`:'\+) ( (n+n{T^v ,r{\:}I!Mm/aY(E  hm7YZde u"o.(#$( ^tJnw׫@& u2[0a+=-F DDQkw!9 LJq%7 8Yt7 D R\ ?a#Hhu~ K + \.غtܹ  "N25]ۅ J^j$d W-J "gӗ"6@v$@>d ` L5 u_%3  Q UB 5>BxW~;k= ;\'$* W'l P#;tM!  R 3C1K)U W#O= weo}G#&t!"(Gԭ Z=&>^r. Ec! l! C0$! [߸ : g<[go 4*݌bg |ڑS n( od:& / ke{( n!3P C"ANT)^K>tQ)%%  rx* =݁o &+ ! T-'lL#(={R}pWx/o͆($:aDߧE^v"%)x#$ $*mL9R%mb msBf(# XH <}  a #J| =m@kx((-0#]y ' #SҹhK+Q6ء">9 jzI TTm S5>("6w$7E."=M sg8{&Ay*{ jex :Q_{xk r  UH =T]"־(- /& RׅaD (^-Rc/*9 (v ;U'$Vjܤ-Q S %)&z rT I>s |+ԀA#!{0B]^I w P'+g F аpGgO3VW]R [# /  . Jw (ӌv,*4.0+]HzP"Uc& XHQA Ӥw$ s]r)V"hO $R 'gD C1{ Ts% E{: Nf%!| \a)\`F=&sR@':n"_+:II [ZsJ#c#uf ! )6 Ղwv,fOJ h/WG$N ]WAv.c#yxFi;Ri!p|7h u4XUB}ilc RL!fbHEw!>UH5tr6lx45 &cjY#}f[ NeCBQj =&m{Tl2 h:~% 3@ 8,0K !=Y"ٳNLD 8A A iq!T'B-!/f 8?hm#*S^r UZ/ B= n 52̠FB/ F[ \K*9r!R'6L.^"S"*C '(j{ % [Q HdrS9 c9[ӑP I !MP T $rv#4Ov D!Ԕ _#-v4y$޹ Re3$w֕,X "ڧ +3-$ jΒ"6~ϡT J cat ".YIRW84 $  QrhRm8&HJ''6A_!P*Mn %9)^ 5hnJ^}Zt%n kr^ (o$P-Yxu ?; 2i"ۺ;8,!,T׵Jӛ#t')|P~!A&(. ikr$ 6`. #54 j ] HO  EQ4jgPW/t`B!"[ T  [כiCz }6#1) j b^ -^j '0 *L (HKy0XzeU  `qg3p uТ $d7!G OaOj2 ,U"_ ~~NAL~   S !سޖ  (,+  XG] 7 &, hg _*դ )k0sDFG 6#?`x -n cs&Faa"q2@P@-..sU Yݪ, /7, daY  )&0#lp>5]WbL w*!Rq#?; H"|p} .+Y&XF%;CvF[0yC_ wv H Dlp  &'xAT7s| _* ]2 ۴VT4щ!"l)h%"Iahg i))(v 1<rIy##.7m{,;E9}0*j,uw kFI -O  "T_H{#lN)g5d;WqS z&jQlM3(xiK* U)%N܇(! BjK $5 K" S"j؎"e<е,H 1{{*Qh:M9t%lAq m h (@~  7|Tv6x Q)l 9 .gɻ['  &R IG[ zэc0g- #Dz2{$;l&mأP^ 'sLl U<3؟X -K ޡzFP'{ ځVH)$*q)n!~3ؓ#u !Yv(KXJvZ Y]$6A Al \ ԅd:yD M1y|QAz ^lE(9[D2 "#"!?QdH[~ &&&;  @Yc't4@1"7_4l'3 Ij E  .C'$D?jwoVI5g^z+ Op4Y- 25Ҏ'(V>iW  La9 )N  70(Bi; v uZqBkږ 8b&=*xki++4E H"{%Lgg0h2k cWr _s t&. ,L ] 1$ta,/9.݆\' *~\af!>ҽ,xK N]! wY(3-m YB4dNMGN 3 H)MF!`8w Tw /\'!M&[J/M Da9]2&H V 'Vq # 8 YnQ $ J9uF 5!Al0Qv 4 P8.#3p-_ FD n L0 9ZTH [ &I& ! #cC*f4yzSl= !6BkqW%#EO6- X=L cٴ&OZ(XJ +W'' IH%0Nb"\':+d A^'$  x3% 6zۋ 2 =U?  3`"x'*uV +?lԅ;CC@%jptM]zJS v1'ϙ <y66` 2c,9<֌S' j 6i/ Nk -Jl $'=Vp S 'c$+-(ܣ&*@n ]64 N J&. ˅2pW,pA&D 4  ro=z]xu?1.0cq$$!6Y̓z):5;_qKO* w*~ =urw1tB(~8`)V mXV {YϦt6:'2$R8%Sh% 2%JFm5Y^d # 0 I-$.i\9 *&| > -$I.85ʪ4O;C("> *S)e%J Szz! .P+ wjuk? 51iE'  4OsJ} .m : \S).{_S@!'`@'R(S#  R L RKݏ) %]B)mq'#A]TX*"٘/ יw%,{ޗF * I!rn 7{- E8DU E4I  LcoW)wY? E C= A 6 . qgj}(b+kWv 9ac >4q~#= ).h o"+l Y" [  S I4gUI"( sL*]X"#x% e~0w7 *0i^!&FM2 6]5   --([:& lH"4' 'o0l %a n!ثb'Fir[s* ( 40)&j%xd6NS>6O3  I Y' ܳ#3y9Lj[ sՎ *6 Mo_BڨJuzbwZc&` 4!-t9\^.Ds*/MTG/H}7j ;(,Ȉ8E#%У>)5{i$7!)r ~$/7 l; y7n{n /٬?#Y$%s1xސP +O S?NFW.srҨ ~d@ ,\V 6'w XxDC= q O )(D w+F ?_҆({RiY? ( U\' S44'j-;Dn dQ!g4fd;G$y#9bs0,n9 T pJDHHOWXQӃ>/R:x[ P!v 0'C%0Y +Cb4%?S Z$1j(u0vq8+Ȭ"#j >  8L* Yd pM \&,K**y P|g!#??| $Fi1 Iޚz0<Krer  ,>\M c (+ V n*yt11p!(9ZP" F<(L{$ ) yO>kb W  ZVm*/-&W15p ")*ԡC  Zά؈X-:i A/v4 \ "z"_,m=(V0* WЮP$sE,Y_aO/kٯ"h  `'b * r '8DZ\ / ;]Imw4<xEqi% 7==nT&x, DƉ',: p1Q2 p Z&`'\ v*mJ!!E , 74ެ9&" m4֮`Y/;ײG! JOXD Q/")&}Sz"  K7N o W?0 7"t"Ԧ;QSq Y~i&] SovW8Upd 7\LW5Luj.j(xۗAj7J^ _jmxpq [# vI*fZYP "  NcI]a % rf!> } ,L(O7"#m9~5:л3}#$=,]P߽t+]w Puc|<#9`= &< A+@Z S&B e D'} S  t`~ (J#<' :sG R~ u4c 5h xUg%(M8  I #,060ڝX)<ܣf~zhS # {u%>ߔ Z^ }#d`ۑ], fE/ !s: !7f2'zXLz ߌn2a05/ 3)X J4=  =>Q XN RR _'Y-hJ{ i\mXX/d:%t̛_u b(',N q|=O H ^ ݅  v &[ !/y F x$T_Z ;Gg W'Ww*dmL)SC"zWH( V[$'՞#: 0E(_-l=9k&20>&a7> T=SH@S0N M-eV >2h - ll!e'6Aa 'J! #H^I"T9g  ~lx,v_q.`޸&2 /WHXjׁgXy4?t *a M  k* #1ak^pӞ4ޜ+K~9=3pApD c  FN&v B;Vdx O. '݂0,&mM*f5wm x :KH*=q"G? M ׳ =## L w%Eaڕ $jm !L-MUuS<="'.ɓju[  ܬ !Em ;ujuO P\8&3um * Z 2P/#V*z;y{h B%'Ւ F&FxטAW e.5]J[*%06!2Y {,%i ]hR# >"^B D"  HlgZ`-2, PT0 H}+=;K  i( `+-# e.y:&I'Kg>s2<  .,X*Mh7U B 4oC twdYI1< u:E\<'=9 *@w.r ?^]\*88#A [z>!!?8AR*aN*)u a#w  0^K ^0g!'؟Է AkZwt 8!- &@QݘVjv'=*1 c٣  3X,o)%&gr)jKG 7qQ ?A QI=&x(h*srH trb+rH67"<& Gs`z$k|] $26F`V]Ffto!h< tB~_-. @! C}l-#u}ד- 01 @E E ft 4u-LD0 /# iq֌Q(DT r 1. \0If*S,(1`!B\R K Hio ZOǘ!lxւ"J(E+*7+TEJ*mX@ɤ1 h 3.S[  "J `NGC [{{)1=/߅-EDҙ #+K v%?4H4t+hdd6$TA 2F gs  ;q W =uuҺz)r o e}J!<z՗xFnY\ -a S,I[9 dy&u ~T#_lA2s>HC@Z_= 8 %  }#6? >dbl^FԘ'3(& )*czC0D?K gOI UZT 5# /AAETL_"Dzg1 !!g"r m?L*8hLW/ E$ Qd-, E&{DC8:Y @J7D 8EW}~ ++ *rMqh+3g! 70 ~4  ڽ #m $Ɠ u,4f 07% ?_)a-1 "$[5Wu^V: /Aa#7,3]Z K Dwm[ _#d U x d!~ؐ6 ,<Xs'w$Ɲ?{sD * )aE J-'V F W,fO(%7O};YT֤ *)<cd"$Ψ :U,'Kq&`E 7Y ,<:r"NΏ՟ d{`Rr eY/3 +J!a c<6#f!]Ry w6׃ 8  1(l^ . dI #H/C9{ |6P !;c_) =kO,:]X7 gl Vqu%;UY' d<B ?SjE7t,ZCԭ/ OiX Y'&B y#cx֬ v_ )z+8kje>C + k $4-~4  vd0#"KTT3#Ӓu^W |" &3Rh7Rp$!\JF%/XInemϗrL(s` _T `6 YgCԤ$u](D;sDCE quxQ _7h r7 NT @' 3e# j?)>D O n">NR# b E,K~zd8U/$>/0}(")'|-ez9Ko Wz\A lCZb?# (XF d:Oc1E>Z #~m^": 2#1<  M #r To2 ~ 9 ,Hߪ43zbSL}[ kXJ#Lx YWCW = U)y ̹ %6k .M 8 n;heXݛ2-tVB!C7Oqb \s\p5[    _ ::%lx 48! < }9 7"T1  / Z,۵ D5vAq| blz AR"$D>0/4%.6 &f I ;V?V _#JcZ`T# l+#Q0w[.o?"flS+3Nji-l7 "Ҿ" rr28Tߑ79 QTmmT0 SjOw $ ׇ[HI  0`E(K,+p3f4Ul. UkU 9m/!+ ,6r`DBe ;E0tGShR gRf(4@; 2y%p lϏ"s!$ -3(4 Fa\*g \5 !1 k Pl_9@ \k `? KW jQp! P{h 6"& s{&Ã'f{ pn)u x0sva  0ВD)  DD]XTT#(ӭm## (04/J7d (bbHfW~3#?yq#mR&"+  &6 < Zk ml $L q 0!Q{WZoEs! rc |[ >Fu-l.XK20 cJC &( $#!fx4  .m$m(.\J4  '%N 7:9\"ƘЮ sR(& ~1J<V>  _pMB bN-L sq/ G,\JA q+:~CGH s l!`e&i ^/ (u6ZN /}4I/ zi=$d$ A !U z\N|P^ZC{m) 2E[N[lR K5N`++9~K U,T-0R yt3 rEp ]%5TqnOOq 7"8;\Z6VU*o#Uɟ &|#7C1W1$,rJ*!  VAgII kHT2o8~32z=^/Ҫi}8 6#_8H* d % S;JT _h.B)Pr(V ط Mn!vHiB1 2J RXbZv[4 \lnج;u!aZ',X9"'G^_sDEj.%Jށa  & x xzl)׀^ 61 So{'\5T N V&K f G0t#O հ 4N/@ $K 2E h&M e9>* zW5xJ Y&YWQhKwc,I! gK mML zL />#WV:|nk}Ze߰,-_#U) &9_ YΡϗg? ' ֗Zu <c(h79ӰQTK!&x}   fY9  3_m7at@!nI )g V4  &|dܢQ**.Tq e  sX BrYK6+ ib bt[Bڢb RqX q  \ IBp A ma8.Q: 7zG2]Go { 1O"0T1a- 4 rr J FB3&^mD-b oSf=/"s"̳.S0]%) /zJ )< AK 3 *lf F Dd8 <JG1nkOe &$ڴZE <zY@2H":!8]%2]  ~) g-w'fa T 9&d }')* } ھ!( bK*wvxZ, TG&8)AC,iZ =" ( ;Lw }% GZtK vt>p  ޱƙ#%+ EZ)83 iin  :p8/$Vs EBN ߖ+~%ly ,RqYxC !wmpu!* + NcVl1'o! o#s 4lA}P y,Uif4V2M>+]K6kR.bQA $vJAon ihŽ !%ihxc::-eU qWQ_O   < ڀ k *W@$k] h$}7$1G ϷzP #W,.w=0 x$Q  =8 "$M]z&59z s~`d- E R|Q-j0p.2 / m60#S %& J Hq>:$93Mib0s Sp !DR0R C[$l5 j˓ Q 4uSB ! FOtzh*~( *49fV"2ؙgX> aM12?o3H"K\2 f* SBS: hўs6u݂& W_(1+Ht#N=0g E+|h(¤J#T$ TB d V#z x9E A m> ~zQmiJY*0+0VSQ ކݫ]1/A,N@!&MEkF!|b5k/v&r unp3 yxyV GjltAb{Wm +g0 4K  A Zx?LzF$X  R8+ E _mdD+(| $:JY"d"}l XMs8p-{%3 8|< 7_+Z w`D"y'ĉ+#dWVr DM\z,s h (%0F1?&"Qpj cq *>f } \GLfft (NX2m0Ns26/jb>d4r%ӓ4Ai :`$#,Vq#%aRIS$AS*c#[K ( ӎ(>o."8 )Ÿ<%#φθ%&! mIw 5"YP8 z!J# &oYK0$-NA`%=Xvq&R!%4 3>7Og(,G,#*i_=m] ]Y Ws(m%y'XW;  E5fTG h M!@ ,\w  r! aAT"!%AX*[j y3_ 3RcG F 0VC[L #S*L#*B@ Zp[Mu#- \FrT S7 53f} uwqlMf::63 k1Nݦ $B Z6 =-- T0:ڠ# 1|~H&Q<w: & _1:MT? R8WTP>`E +dR$&' !e_-P0}܇b E pz($ \zg@Q[+yy{/ }/o XTn x | 6 XJ'88 ~pҴ jGt&&SA0RٳA u 0oHJl[@,=w|DxBf$ Db Z)s.,щ& 6 hXd3hd]  $0U)+\0 oh0'gi  ;%%q4nޤ1p*+x[֜ J%8Ƙ Q G*+ GDoY$]B ٬:+ P g F8 $5y V& s &8[lPT*+o{!R| .:)ҔF "&|!  :*&Y $t :X/e%iC-Q5'b{%, <rn .e r#% ' #!'myߍ(#[ j9\/& `Zz .ߛ60+1#uR+ +re s5qY4 r D >u0 u (ai\*{pG IƳv)5~` lC1OӲ`}Dr E-YD %"E+L.2p4 = ?E~!s& ~ l} ,k`+cMAl x mh;| g1 9) 2VEIZ~ )@ ;) Yo&L:" u `-D @M{e)!r*98*aRj *-F125 +*_q UHmZs$s  $Y$.&S6%v!"jf g+?%b:$z#&?;   6Tރ )F 0CZd 3zPu   & +M11&t AA: Ho?N Q 4{ 0L5"2D! F ),I U9 W1o  -ҝK$#Xw ED~41 $<X+ Hv5py%92H]U 2 )\  B B* Վ3 codec2-1.2.0/wav/vk2tpm_004.wav000066400000000000000000021056541445607075400160240ustar00rootroot00000000000000RIFFWAVEfmt @>dataj$ l|L r\KMr 2_  5 [4DI iZ*nW%Rj:&Vm UG#Xxj_ (D p' #%Xy6RA. KN \ FeGb|i"~P ' Mi)E Z ; Cv?^ S-gbk t wnP.g c@hiv* lH*E +<_wYR=&6s6y83 S twpEG^! Ayd;F^,c5k 3o c9i,u>bXX Nh&E3]E<myc>6 %BN]v=:*w+ &xKO AF n*_"w@ [ ~,Ec}PY A|a5euj"G{WMxAa{mzt % F :qLD]  mz.  cU`Wd@+UmvF Su, " RL_/_~T Jb3k& [ gxhEGK|  b5%2 2I $ p &w l wt R{]K X& rD?M .! , vi@$  wH9 oXms B 0Lh `lIkO#=4rm%y [Q ciB!9!c Kg Qwd aLbZxZ<o m H kz ixSA}(x]: a]I$8NN .,i1`~ D( Xj | uU\i#  bM,# ;( T5K2 U b.vLk~1v0>?h_ sp  Wmq 23 Q#lDy  bKC4*?R}$4<~3XwH<:I"bPx Es]G XS9JH?xt}U#   ~ ?0 [ RT Sg}HI h6MQ~ lkM_oxs- - $:uo- hL jooM  r2mxE3 ~| 4/  ee+A,Nk<()Ax. +}GfCJGe `T #Xc }g fE:Q 30P_c/ wtNP bN4d-L!3 i8 :% W3OW!&2\2R~=Zl>|@ 2Br"+%Ch.I VY : )5K k` ]3%s7yR@8qU+84<x~ 6 :PgS 5XCg8ti NH:X\{x!uV$, O[# K@{Y Jk>]Y*B l qn""@2! ; "- WBTAo7 9)y2fxa2db/`V6$ X Q' &a,Cs}ZFr-3} rS0X:gyM.KE^Xh0+xM;ncO 4}-bE  Y.!&Pi(bi]F n'+ p s6c 2a)N Tv94l g:pK {4T=N@K>zOjx a'8r*+Bs }y5"4 kgXop ~d t y  ]x^a .!Nc 5  {nT33nMf+<jnLxNh Z SW.U4ovf 9 S2Yp 3#^E M5[F 2. 9~)IeDW>}% $1oh}_# 3 * ^ K y T FptjB* ba  2Q>K #5  9  aRPoB ti<n~jP 'X- y/ 5U CJha o 833\ L BV)# 3Wm@@)a;[Fre&"  gydb DZeA?AzoVPNr?X.Suc@'RbGmeI v {n z]pp "!h'mV`u ^}lM   rI <%)7wB+ z lZ4HCAVX:c nb r+ ,  yB>lKj ~;0 lo9rS,?"0h $OXV v b$ZEXu8FEeA-BV 3%vnrvm)*]BDV.Hk /"FgvgYY *]nq80ursdZ :yvxXQR+ 5 VgVRp -.Hv!3%28 uN C/S IQ\(lRh[: q; }Tf8Mg  x-\ =6ipsa:|C/>d@Q yAyDZ'W`Gk A 7# Oen@2D(Mp ?v5 t Ue N$qWl SV\d%{x Md@ w` W| -3{a mcQvy D#sxQ77?)iL V8UXFNL +C66  pr_ WPPnT_::fT=wHUnX*KXdBt }6Z~   I!( fh.Z ZV2lv @#j ;5 K8qYEC<gwO0vyse Zy3a /"I/"'27gM@d4S0$$9U ,Anr|3Ev y{HUvty jz h TT|#^!q9*j%pwb;m$yt :$<8'T1  -Cl;3]$WYQV@'"`R7J6%f+z mVj!@~cpZ 3v]n=lNGi@gIQ;UMyMJcGTt~Z R5:"'?hP [Jpg/\kQ m;i 731 gM ~w;gLT2u{{77<\ ZL {!/P,vO5C @ g y$i HA5Kg[ YmzZ.tH!7GIz6J# 9cgGH6LGifiB (g'u C} M9#,/R/I=;q&c/1FO*} FK1  K]Em,J tz` <l0+3f77y < VCE)J:iehQy  5k P 5l] tA.zc2X 21 g!T w9 uU-YsU >J3 I fw}ZZ,?~OClr<.`S,` fP W JD 0u|w#sN_OWt :={9qy rX (?<ou w&' <~},a~# H2vVB D`Vlw)kR ,v<VQwh ^xf2  + " ypM#K chxF2*K; EKT>E?y`rX5{G6', vcY/>" p#jIIT<2T] Q/up=.w&M e[ v(Io c(  9 {_ drw @!5$ 'b! oir x})  Q9f #~ G)X"JoMDN9S b nfb kkfc{GFPS% O^0nPZQ+H!O& 4 >z;p)k : Lh \X =8 N?$B 9VbrSw)-~8) (byV)D'`|-[9.o'TN\NW 3 ~ Ya N[,: =#RV{TjQr6WfBG6 { AJ ayy \C /!% Dm  1&2gLD%j?.Z6ZU2v#4 t2f~JL CXwZ:IQzqUDQgTrOtLtH?C >? [W w) x ) eA1ysIW, cdXn rnC;}*WZmo I[?7 }r7`EC `*6,B.,aRWB s!Q g eJMKG7L W $ #49n-%wETTOj~0,f/hV2J3XRn cK 9 *X? %[j$v ?!V @P\ $@ Q'.9O!K A 8WN M03n q{B&1 y`27Ndp)`N9PS+wmfI'!_ o|+O(Iz F@f_e E ] t__g90?23~T h]8s l^ LeuGo G*-` Loz _5 z! uB  EZp 4 6E@UGTE 3L- 1Kz ;= G-9U f EFg.M -wO9 / M\N~h- v y 6 v-U} 9PtoO)3 J C A P> ^|k;mf-{M kqt0ByhC( w?mA$b.  Y7lf8o,I Q^LB (n E`Z:DY 4," oJ vq! F Ut-/A0)VT &<& 3 O6=w b\2  FzH LZO % my{  6nNtOOY*"  | 3bJ]fm2e^|}MZ >miiNS _&65AIw C( 7j x{n)P / |= ;em. : j  l%Mzp te{R |& ^B @N: 5Jn|Z>6XKnM- (3H (@=K~MY1 2   l wfEPxh@=,Olgs7 4Lc,0R 2<=rDna J  9B~x rg  R b+h]Xc[a&X E%rE !30)L{XD XC{Kn!p*Ajz d c r& e1E5BT!1zf;'l GVA n ^ x^c Zv { !?c$8nkF{42f5bvL`0F~ ie Zx:w4J|l@ T  j '3 fIYmL/O0,_B50 `'_B)e ,EIW<$  Tu %P 55V S;/IqN'gr l Kr& 8\:BU Vw AJa> iE{M #.?EK) ~GLzR'$FCK<m 3e 2]\8 F eb CL  X4 4&{)f'I~/ s O  p o `#+3;yCI$ /yoa-` "f}1[.E He}oWc  -@V DX]E,:1 }"DRVvY bSH]{ 6u4@H G (O Q[ [*H j H Cy(?_d<mfA &wTi&6 /EE2g amna ih<i2F?9^})*95;;, Q I._IIIT U i@L#F \o;_p zn  SMS:  rrf/ MOO:ERW,<  @ rw~  MIj av%aE%z  `.LI sHl Sul6DQ 1 B~^ 'ghLS+J0)(C Cx7tLh_+ !hKA  uk 8dR@=b. Z-tLq@pAwd  O ZQb\ZthCnLCb~K% D = $K" ;NwM>~{u 4e%e ER2E :yP  % ~ct 8O 5EQ&2 C VApG 1_F`YS_c^-n ?!@o~Fa*U`" >f+nFr 9(l9<)1J< #FD 'Y JTM>G?zMe ;i k@amE'! mjk[Qn< nX(7D=1 Q[ - 6(B J   e~RAoy ;~QRAt+ `g =4,$4/4f%*$(d%AK-K*7X~) XsJ  txo 5!o6K O@ E ZW6d 1_J)$Le 7lDRE!EvZyPM$tX:m?xwVUL $<y;H ^6VX-f""m5aMPxqWfXX$l7F%kr g y =R *A5] oz=rj*2b 5l ;^D/x{ X?e1'p,W ^ i *qIn KAl(71c &th= *@&tJ&D. 7Z"CYn|j&"XQXEP  |8 ;$k6q GmjvBA GaETgK|M  =MDB B %9&'E{a[ Epfhh,Mj%N #: Uo L{t F&c}YXW9nSK'vC!V2zSS7N4g,`3{ ;('w{z q| :7A ]<<^/FRivor5 XF~=n (z GCF >pI  S-r8@VqW0& (JHlsD\9 #1966= og*1D1( e{?J >fsv $5c Sz  n+}'LK~  IpLV]]O[ wA < 8 - l +)ON 4 w7aHeFvjg$C a\EgX|T`x% K2?[ORb ro  %tx0o } lT-d~N'x`~+HD} /% st {u4[ ;$6 bq  &s?HR> bjR ;j5aL PF[ wrC_;p;O|1Gzao}8Pm <  \QTLkM  !_*`~ IGPb| kC[ (gS mQ TM n%Dgq# Oc t ,V{}Qg9Dp_1R^wo)V3%cm<]Q/Kx`8!hzX!jn.x;DA E*6jWi Giz 0;Q_0|y"Qne20 .U vz[ :< WQ kFuS> KCC]Rn-b DNwVmf'C}^J/+GtTqWPDODwu g66-C&H.J `$vH2ZxKQ"8RwYF~&5ZuH/f( rh0Y)R u `l qDa '! PD i  Rd} fXUim]2ObdpT f (+qNk7k } oj  6o)Xss2p )&IYqx)( $ ycJ {C93sK6^pb\ HiS 9!{ ,B"j}'\$ I+@R 4a]Ba][MMi^wH 9J&g/ Y{R[01A f8r7K`0Ob U c ~g$odPB}; 4J<$` US-`ky(Wby00( o;~sSksUxh^Mh*)\|wOP QX J* "w z4 = ` D A, ,_Dm: zcLzv,z7)uy~{g8L&jW6]cK.0,+! TU;_K.g7x[I&%m7K5<t RNk jz\e |1od~BkPp*| EU<QQd'g[Z W{ b9:d.YaN2D(PB`n! G?qJz8 WuwXwY:"0 k|.wjQ($[BF $e}F smfS6{2H'a4[xq  Ig (}F d v l [1 UO[sHL@B"i}?eQ6_FF=$)- z82^y:!sb'4go1cY?8M="5_;sGOkg  rD oW&,/e kb/D:b@"j{I> AmXx?s2lX2n0 \o{B% s- Y R: @ 5$msj 6w`Q?o,{I%^lv*Y}<%bhU_`*\{;;k \Q( $e\p~IOrk\|rJ2sEL wO)L a}sh7_lu M`[VK'  nX2 , sw S 7 E z`xP&<B?x WU.c`6/)sSR:N+ 1( ;% h^ sQJRJ# T  !DXc(R0K}Z_/ 8unr S: Z }z"/W~< XHdidL~.%6Z< u8 HI +H:aURK/G 21s?K.V]Kyps)(g{"%D I 2Df o Z1hdh<IbeC2g@}oX `,+wr 7 D^%=% ] I g- & F [VI\n@"u T6`@ *uJO!+#s 7 /xKFO]o{bi  I g1 YbSUrfVJQ U 1B 5l\60d6Nrg X4F\v6(z|_ BO stY[|k II  E: 3Nnu X ozs ?^3 7v"{F1q }Ev)JZ1 'I) L$ ! " ;?{ />^9A8\Md *PF4!%iSuf7BLg9 a% k{ r1[-kz dnVhcb NN0-! "F, _tb RWtL@C&$#E$v+!C{w-4U!?5b[ CR[`Xd]Ak(5 .0 ?-(b\otfS ,(Bh`KAGo -#Dxi|k Gl.?7Fj~uKK !W W 5 [ZVjL .\bD{ FOt"1-qa Q2hl} {u P XF $E*0B41&  ]@/AaM;t+ 05gL]#O9~Kp@RW:{::C cEp5zmH TMQ,~<=EJI8/b3F ; Jz\q* 4> (>- } =Bawn n @ 0|S (+ 0 w v11] K /Q S(E4@a:c IkYIE9b`<4P D _nZO y o ' L@Zt-9 p!E_xtDy*. 6r }w6H;, PZd w> i?bG U @\9^eftu$dn/1c! &VvGl  $;  { p, *K+@w ><|8Z% ECE]^| 9U722n@aY5DBNCMou|i(h G^%WL /$3 8! .  gi50KnM94/ j- ,#`~(z ` sr: '}9{^N |e!#lQ  EU9[ `2o  .n>~b7 &\ { n 5AfD] Q8>?k ;dS1L [X9 h=|k N>=~9@c#2[LS,! *Rc|; 5CX{([T2&GX 51, 0 THG6 _u$ JU;(-#U p-b^?+ /jzh 4$" E7?%;/6{M935w4^WdfS yI{%$h=B/Hp1\@:8hy"M6DKyH,fymwdY>M[xf l6c+!6DH:%3 Q g@/ BQ'xv4  w8E y^0. %K >1 _ BV"0 [Y-q d&+3McY' U 6U<of+&jZ;(h[VZ %x- KnJCZw< *  5o8& 0su$k+ g$v I(g_F6E|VntnR_/xikExC7= Q~ji Wj7= ~N=} # C> si.pGU4NO6 Lk?Ah z >; g 6os$  +`J/U/xHiyd b}A5Rgk7s6OuSx*B8G6T] u X GCT #cA $]#&hSWmzf,|/Gp11% dI;Z8T w8$]R*5sD? c VOzaOWP{ ]IH iy::Oc$7=l9T]9I]:V7-33~r] _-w1 N D J .A ##8"G! oy:+ Hcx|Zb6 np]pmg2tJ  *bJ e\n(As8gm1Zy\18Cq6 wzQ RctbqV:x&;qg >wel~c6 o- $v)b,*]R ]N I  Oe&\@  M u ]+ k< S"d 7X4 F%XHx F(dNRTI7~ ~i%+e& ]?o8`jf+2pi&sa7xK6{E:aQQ  3& m>{#O9 nV o5z. $c#:.uGmON||mjf \IBE|r {x< r5.[T#I2VAqjs`  vA06RmF S/ YA z! x%r /}G ^bYo2% RL qj& Uf3sPX EP z[~ _mI&Y1}k5 $?&fLP(cSBjJ  kr |K \ jH aem @_-jsg>yLzXg FC9iZ>F bLJYL  WK g&_([ + :6 ^ . D#| 38 -5/2y&/NefG1%o $!g# G X)05G90_{ Qjb]w'0QI  lA _q+^r*E.gDu@j&~d#8x {ft9i&; fT0 Gy ( } #0X* z" O&{ %| < o$XV ( yD+0 :>_oT )#@~'kMxQ TN  `0-]vJMTtEm~^% E hj\T [ SF35>X WDTBFY  j] lVMWi aW )9RTPf3 /@_ t(C![4  5T 1uagY| Ow_g":u $%1 GCac |K~e CD6hWq':uth= gNV}u)sknX3 AiP5n DjH J EK'ik, i kiml + @- ~@ ~ TSbEdbn"pd'l @ R i|s & 4 (*X8* 9 2>D *A0cV3lfqq (M24uod+Lw&qPU4(: Jo7F;c1Y4Hx ]tpGG l5e7*(jss5%' Ha#{ iOzd)8Si T(W(E! 7oWZ'|"O$}:sFLoS*Q+y;m<g.4fV ]@kW?MX5!,.z.*|7Y`n'z~1 4l[ PSH/uZ=0FIpiN?8 qW3i1C&83x V(y n" CRm _fH cKY'CC R   /K;ZT>^yMm3di/`z 76KG  @d{nEog FoT6Q4YE `HD^"k D S\KM30]#%#sxSYiWn5i!? v^guT;'4a*$su r7 <cwj~7 F ;  @p y*_- eo69Az%H6#'Cu_/  [Zz F|)KK7QSjWh+3QGB,i$D7-hN3k Ss(.:*_T;{m[ j$pB `(@gi-zq.0/l :O, WEV~_e% L G^AsB/lwy;9bE+p}6gQpBE *   DWIS%^9 r EWKP3cPWZhL72|Qby%u- ( '&zraO]? Wv! v Y{E`Ek&/ [t\bx+A/ ? M'f:Y-lfh )LLLi 3/g i J9wXI_49UrBv]Cf|C:PL\p thu| DL>+Gq' } 1PP 5  0 0$L7du+3v:7F#x_#(F YN nV+|q?aOCzO <  ]o(`& *1v;8"GMcd j=dF$OYFbgGEQG n4I ~`$D&qX<v+&ju "'! ! 0(a \,LI 9VTCV +$g1FjhTqJ]l2)L ; A% Q : G?P  FB |pDoB !Vh7LeFY  Nc7 0rCtb, ?  ]6n*D#=a_? V-F 42A Q {!# 6 L O j, p1 6W{m p3<97aQ"*cb h8 j 'DuO & " f !S}O}= *'v ` nC T 1 ) '~ dUV_jO aS Xh0+  0 M Bch =g b4 - ;jc>oP*KJk@k uW \YT d M$m [! c 2 ;T J{O`Jra'Ej-9wKrUKV-^) G tO i.c. Mj6y4x/9zz@( N^ }9 1#G Z ;+e|>W " hS6m 4 sm_ ddn YtTVm *_wf@q 28Eg YEusWW]"B|;}oV2w 1] I  qRde 8 ${f3$okq VFr/ C0:] G|1! "{G\o1;h t;?<NlnA dJ T Mjsnq}DW  akt {8$IGOw9u5L+MS'gNtk  Rbl D ', { AQ= QB&NWF FgQ fja2/\nbI,Lnf016wH["il^K .. <KFd9~3 obv mE  i ' $ QA U?_  G3 a bLoX  .)]cKXe/ 4 % M U$ "EPo tWlr:  1 uc I*5x0  SS]| [U[l H~S t@ pIAM9^o8 4jQB&:;U4ft ,,0V=]#  X V "j0 Qs,zj8`Gw 9 n KXYi} r$%#jj $\A Q fWaPp4L 3 )NHaKw_8]r}U"w/EB_ _| _D  m k Eg l}g/ll ]}! >p + ' ; Ej@ = ? oie)N Wd) 6 e, - )F0@8x[)= Bho TF B'>8* v2RF  :6@8s5*I (lCG^ Z$F y?g$X Sg";0zUa f T7>! \ - qV 0 qM51 J(R7JCQ/ 0!fK8\jBa<mIGs_gY] =u GbR :-86t 0QL{.A nr+y =M ^!)"j }$8SuG" L { *\8^'Qj(G;Ja W ~d54fV IeyP"` sOH6 QWS/~ s_Q+> tA  sr~mg<D;;Nc {i)\xkg.M,"1HtX9lGs5gC a(O)xh*?Gs3*=>(Wc$#FaoUqp -; lK0 W` v % px ! 9#jggl"k>8N Bx%&uxJ}O"2( Y ~ kp;)s= U *p js^6IzE*7V @q Q0  7no 4zG]}2M707 7x SXSw  KLc  0 !i X;O\lCl b`y6O/Sy)>R4  kx 3m\#O +@/,"UW,n$j r zi7L9A66eb~YTTm1;n Zw]E2whx~!; &m|?)L 79(C Q* SHys' %UB, 4)Hs  e* q m} b@u 1*h p;(Qx0|;!zV ZV+[ zc@P $6r;"e.tq;^9l A77V:w`}v ohT 93 :~vT?d:Kb?\ e\R 6 yDu 6/ Rk%3 pbh  7CJ MGV.&M3W nl`h`r c ! [,@= B4  "z ~/ vT XBuU! M*"&H" + g]m.ne=cgMH pXm  -AY ynnRWe ~pE pa ?#X' .oLg  0$Iu1 da1Uvju0qy[A+HHR8N[*  g<+  -<TpRZ/ kBr&wb[] & (`P"3 j B'? =O 2]X'O8K_8IOBG k %U R I lQYM< t\+^Yh   {dy+3VX;f ;Zd4)[j@j{}y kffixyZ 6IR  E}gLSIuY;  GiCMwCF$$eJ n hw6\  v:A7vXWYDclBL*6; %__W FC;By U2 ;+6vHWw;x7E8*: Vyy 6`wf Dc PaE-&MK#hL} $ -AZ(EvAJ$d[  rI cf |``b z} gokD '8PX $VCTP|=0 J tf 94ktP94y^uS ~)[ +S" 'K f A 4 9gp1  o`q(b}#VJ FK Wl N . S)d0CAf,gy8sK N_6?QT B.q*/ Hjjwq9-ZncZ3:_}U62i0bsI9@*  IX5b M]@`N .  wh~`Ne Y4fL%6aP#C?H*gm8}SL~MJ ^?sB 8 n)bJ.c)e P Ij Pfs 6eHwf\+ _&deA U$ .vF GI=o=t!^ K:j#?c% ?wY6V Xd|[4K<7"DFN < [ i'Wk F rMWx8r| [ D7>g c6n S1#O?E*`lu!K_l vWSKVhK; ~4 KOJo_ /Z?]jB X\{rV'hWO .x>I5 acd=$ ZRe` n l/bM ~F>u j6#LI\lRM|n ;dj5e huaM/H|;/ R?'5S  dH(ADP pl8bU`6K <6+L(8?).` v>  KKbaRHhs Nb D o\F& Aj0h-h}iv.L]2 - O|uaFP>Z 4"}[ 1JHS0#}_9o<_4S J  t |kHQ@%i I+ @ )%t < J"i;;i7yKX8b}X8e?8D[bN<(eDF7aFwIo$A  /  " xCX )I'rK 76 j (+  'q1 Hm |SYP9w{8"4q fDVife;\7)1+n4If[ Mj 3 a;h0N4")F%6^Zj1x, wLxax 2-CsH -T] /VEF R]C } b z @[,vu g& *f  ^ktkL|Tml i@ JF 3vDD\-{BO5m={VXE!#m v1x8nt B% E1~rF5- /sfGmzQ%gE l`Y HZ (&ub fK"!90-J5r V i dv , ZpNXjI-k]" mfdYf(7UW$zyS=t3_tL_jOS I]t}NP.Q5 t> A7$h^GT i 6j\ ^l<t=gB rg p n]i]v@QM#: ` ]8VQj(7\E` X6s0sB&U4qPh$`m:yb?II9@{CKX Ii! jIi8\#{I2ZfsRXKC\:&lv 9"  I Qt^ R wk. zj@er"y-D IIEI \K `[_W}#oaw nrx\9n5nb |* D= ? ^j u 6sJ&5 ; jX^iXaa@6 R.h>q k3w|  ~ mE 2m cRj[VK& $wa FG!nvN4v^8R[4Z%=J4CN vruB$dZN.UIq  -%d !MZ7N}uX+J * %H] x e_(  a+& Nj|n#0*s Q- cc4AZl ITtF~%3 <itZ72ckO4J!no*^i  >m8T"3#y& !+NB9lpNiT Y{Q %8QO7%{i7yB+m0-@VV$X =;pc>H:dj M  K`B6 %2 m/15AuY'BOR4q@U(YDgC0tBz=5z[E3^%^PY=rb/lB<e}MLl^)` M0G 5 ^ ,L JUv$G1}"T;}5*|jr E \1 9{ CMF/We @`"C_* vH@B@GH-){ 0O*hmrQ\p1> 9_F <}bp(hVy!u,^H n17?r#~- {@YV ]I ushb _R%pNE&)$ CSf1 W!<vQ\+MID U7 N=W EK:f ZkzE+M7l;9*Z@#!e %x62=fAhja D-O gVg &' +f nNAX yVq'r ]3m x6rqzXI>j[ S_{8 ,7nYld0VRRQ!.Xr>@2e} <GZU t : )A :-&+  7 i*c! b&C2 |Q1|. RP#ir^ $  J] t. x1yD%@^XNoU OE Ry-Tb ;f dPD A9vY#{dA<_<& h n? U<dgQmG  q[VEthE6tF.= 8 Py c45w@c*1 Z # |_G fu9 =i km4h `W @ 7MeFqmyMO_U W(kp1 = ? eY[W:[ [DI_  q'Z rH )= !(I W\$SF5 ]`9F/!O! {/ 4  ~$L 8vhc!W) ;I\/ `I2 n2Rav"'J__3N&q" &'w,?  7( wURP!8uTO47jFBkX=i ?3I2 ep73_4m=`R_EFz:73?P q"my8SL= )9'~X<?[UG3 C3X.dUOw2\PY@G/I m 5@W\4a.b\~# 9BOy! U & 4p t7^R 3Eu 8 ^)gMeI #X$_< 9 S|y9x|>@tX@_+ oOx(<}o>  ~6< ) y1o2R?&rK\emoj 2 e x`pEL FnWx 9}D:{~7" B^ e=2h{([nNi7s:r[1*Ddsh<,O(aWuW)Q(!)fe5KK \e 8w>xLK >~]> a  D Bg JwU x!#Mj ~Odu?0^h'\ i 0Z#I'AL jU0P&IzoA5i4U] v4 ^s 0& $?{ hO z7z d+pT x i-Z Z>]/]8}0g : r1"P|3# g9 /'q%h)%;sDJu g y HK*J o=:1eRex .& h ?@g 36x3Ls 4 HX g 9^D0 B>9 1? Joz 7f&B\av_oy+ 5AFV$  w=P$q` Q@+Y&j'kc@\ ( Z# ^2ub 2>x%X5C -! .dlr1 |(f!{FE3 V%9 $r crmEj#M~s) J%# o$EUbn {j UBt}`3r//H>Xr1r( v' 6'uI_;Sl'&,XL4DZ!\Y"LXwRIh$iIXWgLh9YU :*_S,Z FI H fmZR ^- - r:HC !dE ?[gK5 (>+)lj_c&<&_H P =+^L'.>!.P+\0~UE/$?W>IpmigVE_xR(bH5{^ `Dq^X,-y [uuR& nsT #eff'8O R* QGX@\a>1,#[Kb'eg>qd [}SGn3'iD@FkZu-#Dg331D^XXmr-!Q6> l''9-o}Y u"`X  5 g* )Dx(>m. EwQv  OyL Oe1/,:, e-)0(Adz)t / B ^v?FzqYf* !w>D:u h3waY-" 3=:l >x Uzrg ",9 k cr7 4===*G.i( pOp7ed)s+lF-l x . R .2k^OLy7 _|U 'D " 5AV{ $tBR #P(<E i=l fq#:3h z_ < 5HY <~ Ep5L?Z;#;h;kG42 1(3 G4k e :' |mo, /;84U%v=CUu 6 } ? p< "I/roSr $( < y ~9Vq+} , 2sKoj  os='PI Q~)Dvt^s[mX5 wpLB& |~%XcZP;g|TF'E(', L p_"| Kum;*} =, 2W\oBO6XZ`(bF0fY!.C&knBlO-pHz5'A0ZYKjN :"Z , &# b 5Yh *Kd2 Z pNqX -B?*;ynf X6] gx9 rv -d`r I4H\NC,vmw( a XGL';vKd Mk#M_)H=Fdw <98z0R S / u6 A!N1 O34_Yy^J)Uu;}il )QQg 7d3 "tm}A K'y7d3d% 7 H5RRg:&dCr{,&w } [2   Q pd(p'M I\DzR c !duFcUB GrtAA Xe' $? _Mn0 JWd#*O!`vhZH(=x23ZS Mf>Fu`I :,hpM%*Jh4_&v#[}!=) 7 i nz?p'i \}( `Z~'_ 0 & MJ \?jy 5n~v* *vk %_v( )Qh kFM  )J]D|UBv RwB  H :p!}e$ }mvx I,a9f|  e(\fo}qA<\Ub%t u9gP  w #EF:w BXBRQUdVgUdv"k V s3{|IX7n ByC2aaK E :| 61 jF?B 7xq[4vRNA VJL k?  7 F m3  ED  x s 8 p 4zH[\ b J * zh a_ A=R Q  > xF &2nJ8(o? Mrqf nY13 &l3NJh  ?=me[ zb B@u3 kX COJHmZ'K~|@9 !?o~Op_' .]'zfe5QM-~@D='>` >6K [ DI00E  Fjov }`^ ]^_n AoU kF# z GauwOMH[ aIe @ tSS 'S [ y~* "g M&B+uN&Y,t&;XH; | : E&V53M & oN"'Bv|!7* 6G$=[U O \`  %~k .YTA 9KubHF/%c_H7LHjyH zTBNXm .34c]t}\Fi z 2p>46|@#nM !U+nyBn,Y` |Q`(y d  ?c<2p u(a U Q7e( ~5;avi V"rnm T f GxT oZ  C.Q% RZUlewV A aeU^ gz vQgCX z< ;o #)ky {>4@ )J>T)?CDF|o P [KR,t- W [yVj[ E 9 S%fi7Akm^=R 8%R"LtMR    PJ/ AKXD& vAu=P`  f0QQ n9 :$j( : X  7$A( *[[ 3VR[= %cTmE83Lp=l V8@b 927. ]k X\6{ D- + '0@Q/yQ v:H @X=!2<9$ $E ~? n J662Y a ` \ n 5! Y53 O n rv  q {J  2[ < C K[JWy@U nC#=@:jCYdWxejdH]M_A a'y\[?9OJoj8l w%a#On,x'KPV !tcC   B{[g9 pB] 8Qqs ' qa0F;I-t%H.9>Uy|9AqI P Bk63 Yk bG ^ ?Jy V e~6@\ (iwG. -2E  PK~!$.KsW^M !1k jt2vT %a'Mutf Rn. L - qQJ klc$ADkH_a7 8w  QNEGu;KwTKNr 09z>}L k9s*BD >T L&2 eX* HD|6* P5nD b$@ 0% J  7#'8L1Bh tdw{a``*^hU 5QbyH+<\a) 4 _n g OVwSER=jD X* TGb['0)ux^nicL7 2 u#'GJ1Uf 5r yw f,x}1/ot& p ~ btk)U2 <xJVW1 +%z !T<xp}  FKT{65]EC6-Q@ t{ (b llhq 0]\"{lJe jGF4k6VKN 4 %:]zf ', j((O^& npf b d7 P-r8H _Gi?E cr3A~ r   m>pt;o;h3~Ng]8e EgrFI OE. ;; 6,n]"4/ j3 jA 3 0@ LNz)B.!ELjyE 2Q1  w ;m>J`~k~ !  9U_ )I <YDe$w~pR/+5xZ 1k v.J&t> 9s4OS iNoEYs^ ]Y O9"%<G=hQ82&4 o gr_uc6 9XkXZr4 DI#W N Ew Cr"} E 6 He!1 ( *TJ80?*N W41|~Dp{fRW:t NNIL1CEzV%@~kI + W`QA ,o<i,CC# 5AN (R < F o*i b fy<5 p]/HKM=&l}h;$1\Y k|w/bp_u* gA54[[`C8A  _8-  W a.B'F58z2='2~ac0 B0k H, &s  ^;j0N +=w-{ ]9h NrL*638 + CpHj1!~ *;.h* /O9YG7o -\3:w]:b_tt 2uI In "M[ (  U-/#Z , 9R]"ws Azh m1aI  S% 30B -Xl1S E ^>4 \" b (\[0vx^XWZ"|ZiEm:  <He6% Z w V P qqPJ T.q}K~4@WS9+41#B5 %';l|*0 w vF  w(t ` 1R_#nl >'7# ] 0E1w{w5:: L E]K_* kz [X gnvhm KH+1 T^]{iK~0d  cC rI;7+W3 a. g_"^ 1.!^(2CbV4+F-x Ms25\Sx f]m" O;q!i\;(} )`H !dsQs  xw ] hxCZ0  bnz8 @0 ,K'Zhz &uP bk6mW Z8y,XHV7%RM)#O$:c "H-Om4mNln  9k/ N4e D#=g~\m;ScWj,o,{+D/uJ@ ,Sw:IL~n vL t F gTpG3&o    JJ TI!i|M kGY3,eQLj k+"P<)F" YR Z )  X~=V)UQ8r -? 4Yn0 i?4+UJJ6 i21n=)k*lk$ %Q~1c\< 7OpUAx p |:]."Hz.f b)I O_ 6 L  NY|e  3TSU)+b0J mD.:Y9 v3 28 O(TVy%& f|:^}!s-zoPsap5vXg > /o{4Z`\  %#|jm1eMfg lhz,j=  2 y$@ =<T\(+DiID_fF^ ;Ct(Yr~Zy t/r Z0u;HFk~Cc{.;d 'ua za %dWQzA^ C69p(?@hiF[)P P 8 F.k+[4$*} Mn>qkFJj, YWK  o Mx 0^X;+bGWZ(uL mE*DMzPDwYf j7! ~6UUD5 3 Dvr%WL`! A46VI 1 H* By9v~!"% fOi p^ Ma 2~A=3Dz )Ez H%Z!K7  cY& ',`_p4C2 {HxSVFDn: 1- T G}`3C'YenF ZD-Ey  rA fyQR]FH@b qIg9HaIKETZk6(<2v< hb9  v~wlgkXS@YAOj&\[Rb\ -m r`5 B R! GDd2 0}~hr Q[T P)KGAUSHRH$]KaJo;2durdZE (~9(!m Bl!  h;B} 0  eI\c%QI%CVpC Y,] 4kD |FC \VJ H& 7 NP] 2a PC6y2KA#vQTQsn Xb5'cC} tm[G  $EQmU3< F J|IyPf~s 1=1].pi }tF Q?r#) X]H]nh}  N D+% F {~nz Xw} )-SRp?\( l7 DJUf,y+f{S h b 2 ,uu TT) 9d =S<]h9n}6vc9j7 Y (l 7Xg-' 6x[A +FK=f4 );hsf,Odt g-d 9fl $U >__@yvHt Spm S) >[Mcm  & @.Ij F`9 (jzz+Tu"N/H{SQ6zilzCv % &+Xn]SYExw'R- $Dz$" ]"Y kO+U3m,\ 4   :, Y (4 u>j$U q1Q ?EI]OD; /# Ik^w : QjL j{QI_ HT P, +| 95J|!!x;+}.qe|N xI![9Tj=Uvd t_u,BV^qG' nX t Pl F' Y %:< !H`Nq" nF~zXgf+PI)F o.J&d| #$ )%<%  >RF6<,7zm~b6{U+bl^JM_Nr{ { y4Xrnm S 8 qPSr !@A-j\ Q| ]h @@EAytk )# A Ywo6U?z  \./ X" H}$~ :> j VL *O~}@#{ P  - Jj IdRb uL N@)kv'3 K{b7 #7Y gLHc _O6_v I,K)p9Q\wURqj6Bc\CAw=tWm :f!  q4}% ? '_S 5X/J 0JWf$9 ;r b-R5/6Y<# 63;6 ;qs2?= <Y|{ 3sbhJC ]2*fT^)a7I.A+ Eo" EG [< _~Qn{H4E6,EK} ?;|WX v< ScnX52s + -d7 8P&@ vD=(i~3M0 vaLt * # c =B%_UZ(uI]flO(k9su }c9$l  7bvaUj%EMJ =t PY  G'Ed*xgUYn-<gU r O kkE BhK!UXMz, ]~ t ^& r=[(& 7 c)v w:5 <ZY#PF +[V H 5 ( 0u: ^U. *7v )YG9QQZv%n: OM^Wl7X17Z/4 UZ^ </ &f2g<#^(~I g]$L x 5,_ c0 I J, efq `rg dUUua EFl6yPT0y+ ~1h T\; |d' ?tU$W>11eWlzE>G J 7Mjy(}.: tWT /;hMbno x$2HE YSJ Ww,QW n c'bvP`[cQEr Wo 9 nGC I+a1V{ o ffz<~) KWVh A `o'sO%3P;@:o@Ga ) % pZ`B*"y?etv/|ht O 2K?W ,QA$M qc/ 3a?DuR5\kS 3 _ ~/ R j,f*n!^16N+LR]/gjW8y6QfC#{|T DW  +Y w& 0UVISR Z H Kp! 5 s h]+R a?0OO1X ;.Jm I X18Z%Zy  _5 2 @` ~oh 4B8X>T[~ LJ[,I P{DkXpzVaf+  r}$rtu  E';   _t n@c` vH`^  qF kz=&e9S| tL (Mi. ;7 b WRkq%j'&Y$`5L{e] N! >T] { - 7" McI 6{D e7^sW ?{3'{Ci+a m:.\-uBf!Fe 1 nm   h!=aZFqMY&L+91B}vD0jO%5 Oc =A- #W %%+ ^vg(H|~L` z=j7WF xbO #ej hOVU*;4t)%,B7}u  mC5 t K?K !f & F +eF}Bm l/LN!'vtG<9&v* !`: 6)2 >5zYUw Jo# 29kF hJpTLwl72i?=9}B~0  <\|vk#ohn6Yl gRJ_zUKRa]h@>'`B7;5> GlAz}J`UGx8aLW,{Rs 7:b "}" idt.~  R{"8FWm=bPI(fiMv&o2yAnY5)  trr X v (G3Ska?nwW'(g `j>g "DiF#(uB & P@ ^ahG FM(?Ra6K%eEvQ_G ({Q tb -S=KJBh[>$P}y !])mf3 IX1 XkX3m cz >8 6" Nov ~>KVZ2G' ~ wm l:Mkv"W# iI,'KU^A{!xQ&IP HQK! !{<Gi-"w+uV>3]d y6X);6U q=;_$" +bg_.$v-NO2N9^ 6y5Nr }TS$b+ v  E(R)-| y TS'c@< :0TJ?2 fu5GOX@= {cm 1>Hg` MF:g||.bEBk=O+]{:O>w7hO+9PUh% I= 3; ["?<Qj^z43s0&Ec?b3%m+<(dS!hnGK,$z3<5R&A DCaR S +! H&m3jA LR[BR8 q bR| 3 (rK]PT!lp+sd9v OroO\QY-.v  B) A6 Q.^JzI.Zak}]SEA |TJ z; R8-Aj6jGdS@o )QZ:`=V2A , 7F_@3m9V6~!03giDI7 =;?sV \(]>sl  yEl_5 }%`*)94F [ $_y  oi{h f~-@m!V ?]6nX. J2#|t s2>8M^Y $ ~kY~(W ) t2l }? '^iY'~MDGmQ99w*I3 hYj4@ ]J (F* Gc u0 `cS' 3C[%C =  ]HDn, wiQ p_ 8Jouj-kk(|l@9vcqC?1{|u0TW)Y! rU=0fKZSZ]|tL P1: O  r]` b= )P [j|U mC-YD4 O WPbf/ A@7P1 S Zy 0 <6JvXY#p;JigNmx T3b|",~@ 0WaZ (Kd|K u IDRDOfMc[d}mydJ J * =d:dzu JGnr(j/aV/P>p9HjF >l"C QjiLw J I"S\B Tvs.2-85'AK'vBwb-3=}D0? x+CP H f TeSSK&Xj|cnD7 uP w K F MC KdZE^ 3 z 5 TNB y6+n?Jz Gi['D0 19q_L0o~KM ]q M$#=Nk#RhEHZ.pL#3J /? k[ pt b;l_:-YKn_(\g|8K3p& w/p^+i"pQ |LC= ;{CgS^/n~_  s> r C,& ;~Y>VZ(y  cUh2^FK p S m5F`X TaN[ to LeL >;p"ZKl{x.b 3{ Kw( I E  + \ fmr3[A")*`P <5- > AX8  YH^a^ _ n@Z(QZg W4 qnh46 8} Ch=m` f 8HdG.xJLsAE+A VP=~v)"zvyr0, k   D>FW *=/M; y~ ( Xls~?;Z &3 r 4CCb {r!"u @_ ;"A ex2| '1"6$r9QWmo {( lN|oA -E  d<dx, s Q gSe "'.1w:J9m mvn S ) mqR +'<.6  O-lf 3` y r2moHi\yf j f n!`3M C B M q$9)eY 3* ,| If C-6g5  %6 p vzt  P8?i   O7e } FO rU sJN _z~_^IgU[ }JMzxq (2-j}q= UE p2V G n=( l x 7 @c 5 bXT0fP !;H2TK5W =56 B  . Q,S P! @X d^[nS-]"ov;fs ? Y T6M  q( O7hfFW3 K . Y#d KV IQ% Y Q%Uot>u+BPE ! = ^U>tDQ  aEi si fspI+wr *5 =_k POX 8i [:?r0NC&[us N5t6Q  o >ANv9 V~ l= ) -S 3 'x -a a'U OaEUW_M\ Kt/ 8g4T} mE`#%}`|*JEu Psb\S  " W83 qEDc{17gB# 53Q; 9 a|!N"w Rk-jd4n%%KnQm  3tw2  D X`r5f<1}(1/IkQ'M Df#:f xX|Gx=vTS2;fMl9e3 8 cBo  ;.J YYB @ M'yFA!JT 0H Q WhLl 72_ X  l'8Ji8k1< ` mi8{Q 6 &~0O GX3|&${T~i '7NtJ 1n*@  L rl>! $Qr\!p,c 3x 9 ehiq0X I C1>#<Mx$qE O h%'z=J ; 0 nw B5H+ s - ^^) hMT oUjb7 A#:O3vzEJn eK o  ~ y\  I & Rrfq$2cy}so@('g! k 31Rb jWv $k&O` c :Jh ?_HK7J #QDTyw?_M ^(D /' b >sw7 p3GN R>(U T hPT 1thBX bB 9 63pi3 NyN:| a R'tbJ p:I HT .] gxa |9QVio% kbU} #]m#P kR B=Ee m |p Z]+$A{i>' + N= 0>H,q_B,-Sb5 ,@$: y j ED HSm{K$]qc: C ~? A X> urni0Pu:)UB #[B{ b?}s |c= p-:=q HUB!&wp3hUW ca= e D7 ~ x}?D$#SudK 7 G^wwf~ K  c F+ =! b`5Rl  DDv)@f /jYl$vevf x2v^!a>\wc#.j:A5M a = q Ww 14 B?5U,:jWP^D.SD%L,Zj  KPKv3 F'K4NII:rpP>=oK8wIv=E}XR1O!W %x^ /a ul"wK[K[G |>6SYB,q( / 5D -3 G#]mu9G]R{6+yIv)sbk tpo"HzA4^(~O1qcx^.BDlE N 3L RT ["V$C  TO  mmZ3[ |!zN6AzA`/HU][ VAF 9U POEuv ja  0:x ~-B e pT-9s?[U N\*~ };E@a~ @ 6| Z< x6p ?}D, 5#r*;35G i7 Nbl H#> +ai s<)IU Gw RXbKh g C L5NA1% V drW ZS[ AF r;_ @m9N 7 cR t+ us%1 J{b$[8S]L<I}|s`8 M]%?<f'wpi[;h<.{ F cU L@|I%saJ?VO8k [; M `iF  "mK(?=K Y%#L ez ycUy Sxi Z1 N g y^>R_`(G0d z M&Sp "no u !--n|y7Gq, >ypi^:zaU9-KW[*=C/u7)G p^Ef6d S ^6Q7l=gF]dOF W 7Lj< \% wgz-Ii1 "TR#+=,|MI)w ? mK" | 70f";t&-(},YY]PxK\`'^Sp+ m " gN7 FN 3| e!Bk\W"\KW ';HrRaBh4v4LiQwN]fg - ~%|Y_y}"  (3 Dp$TJ<eI%M0mp > ^`D; ^; #} s{VQ 78=7{y1 0 t xA-fF! xy?V`)^D5yXP8Z/FZ=aWHnI>/ - P )-Nx C/~s //$oC " d^xI z |KxyEAN`[ A Q.HCT A?Y*? % %rZa '*^  ,O4z1 C$ $~|KD>M2(Tfz[Y L 3O h{0 l-z2t;"TxLNU=Q&@^ 1Z% sx BN m& RcYmK /$hQ7' hin_ ,b~H x BPG $:>{#eNUGPsH>FFr_~k'[Td[< .57 # $bYjFF[YSAQ|6|&o  _MspfB z7V mb w ` h U%  (o-(ua!@5F[g:KH+@$~\\V H zh7Z2  lscmX7kcvG X5 3*/{ A "$3 O k|kbgq2 .JJ xj3w cL@< | M }[|{ g2H  oWyAl&L~ 19MI%L@6>0:!ub{D; 3ySdQ mJYD y|kxKXA:4MdP^ ^r{cH&bEC ;Lej 5AgWt>o K ^[zK78!{@k  NSCYN ?n :op'  Fj3Fkzq!yn { 3%3ia %?C+ Lgg2u2 @ C x = '[*3'RT T{_C @J 3{}! ,C=,|w\^lPzRL~iG&g-CN*2 CJ O* Uv/:J wF ! D;R?DF\h Ok.Mg& c j \BwOGU uy?G] # Rt|RS1K"2  j &I*:"i+\;k;]aJ> 5 ZN1' }s=TA ZJ}e 3[ i P b#   bV* V bR U S |*guY` *y\ k A9` U`W"dc{;z.f : P c`PF __?E c d  W^[y 3$ =c q3u ge -Q *:V)R>nzB H5F*>L < qJh[qB[XG5 \j,jS""FEaF4+m^?B1Y2 ]?3 & 0b 0-nQe7W%UksWNRV 3A J &0 *D' ]C Sq M<t  N&XG@K a Haea' plJ< wAe4L / 9#T ^ } 6U E&*0:G:9Pt9S@ 67F(pr LF FA l\ 0;;~z?r5-9!OZ \ ;/ U aOFS1!zkFp"q0uGP/b98,f:HsX*T/#V~- @tj_ W{:  ^L2(e xoz ! ` 'Q N\_TL !s BEW| {  R= F r  k)af9 G[  ~dD[vSj">[?E& $;W%cB`9E_5z >&/ (VtoNHl ]bks5YK -Q7 X_Mtk Nt7 aP K$v `]X B/ l68 Njmbo ~}O $`G_F7J?v=| cq6P?d^ s1n K RAH~3Ar|_+eX.l-"/ "Joh k)`MRJcY3#k d: 7D#< PG _l3 ( tq+ Vp@ ` =aN w: Om ^ -R j ?`1Gg k8Ywsin y+<-$4 &+[ M I1[5 mV UL!`Zn#pA{phxw+ " ^w F2/vf u!]vgY}48 | @K h3 2 qf nV99u;1kg Z v~ T:M ts v e `NV 9c|I/\ at @  >I> 2k`.e}{/&i S[KsnB%KOSn?ca^: .!  '" 5~ #}wV Adp2,p>4$}Hm%gPGNW<z>@w` a l? F 1@U-=%   ;  %  vr- R8R>Q i1c( P =v,Kc+]; t+^ s B M6r B P ze? e # Eu4n}r> Q ke }s\=p]( H Jz 6_` pZO  YG R%-c 8b/~R}R D@hMM>Y } SN #C  T? F/ g + | 1\ o D [!@ v RNs^.d/ IP d% JSaMnE nmXl [ FIPr\ r# 0Ye> 0 Q qA@[|7>_upwT>g `a5c?:, &a  uA P McV=|wG Jv, 8)'%+ b   CJW"VU|b-eLCN6a _&< Xw ;  b J]h x<@ D2+"+?A} x1"I> u ZWGe ' ^ PrA[  T 9 > &RP;z~tL$: V^ r <_ @ $o :'^-wU#jD+ } 6/r{ .pZ rx66?p00W'H v \ w<J@Iq )Q].1@ y  sv_ Nj\ md o%  +1bbq)?Z1JRM^J%f%e'V>p`0m vo^D~RXLnC9 IdYxk 8foXYWPeQfNGS>LO>'OR!ei\kS;6 `b*xWyArs BbgJn6)t85lIAo!gWB2q6 7HN\gmN6`&1z)O " 'or<=?vfN4% >4w^/s0e+mv #I WP>D>Yj{Gf4V^P'"\ $Z''LA7(Q{V9+M<,Vi?"*f_@,[xFX@~}L`R_ H1o?cz]yph89A80'ipZ`l'j [q  Z6@9+;tbb+4>34eJs\v{JcT{f"QV#&ho8J 3uy?Q{D"G"6b-d;U='qDl%bsZS(Aam} FHq#O\3)CB q]89Ft> 9Mwo`7DZ\\"pJ4;~w/zq@exFwa$hn,]I"MU{,fnK?]'9tj5 *FXO^`S[M G;=gxq !kHT:!H,A/U=CP`/!:bnYeGS25FrZGkS 5hY`bncor)?3OYOz.OF%\?l+n2|W ;UzCcVh/W6-A4`,| ? Y}>UPC8J  :H?A$DK025<=K}e0<*S]9vh? n2>NX#)&>Wg@![l* z]Lqh 5f a Kc}?FV21=W8~w!e` ("O,8MUH OsFgL=-oq"yW8sPG"wOKe = ns:EKa9u3f7HUa]u1k#.B&`b hfw:W_P\86Wv(Q M3+Yd@ /._*B Vr#bc~x0|2SYxL\ E"Sg- fa3 PJCeN$a}gH@/mmBa_\q81;Cg<Jfe@dl6p:.G &%rC-Pl"Q sUMvHw2# #)H3vHeNalce/T>R+&oSU:{=`y]}N Nn?{ u*}Q!g ] /9O1lJwG5`.k4<o9_Lu~6&I^ :3jM, Sr@g33N"x3IY!\*#%T O+6R Y ~t}#5r sI[Cj[CRLcQ4=Ff.Qga {%7 M H"~q6%JTf,V l.:.s%v)@1G5 Ld7Sy0 e~2 u ~:.;m|FGmFM9X2VU|QN a I V7 $ XtH ?#V! w @gUrru:8 [&K"qoB)3  zae! b iq %ptCY`>6t>yd`e`mB*`7/<nr_t3@1$&63K:w%!-'EKSKFXDFmv=Y7cCT*b]xjQ\L4bW E !\&81/k vS&    \k JVKzCB@312RO*u om D} U ]k i"|=VrSy58[Fo5A9 s`Zb 0b) NI B0' R5T'MQ@zoiG!k@ 'DE)]wW`{^ @6CJbPt1 %(<#nG65w9S!8>U)6 ;<z5}rOol s k:NYzpo   _| GeMm7+c Z *^|7  7 fd   U b 9tWgsyre3 !~ KjWNV X]  ,+2 U ]pRc/:}hV5S lhG_dR KH(Ptk~^? d )& E%YM0E :i/B$uGv N< 4^h.  uUZ S qO+\} *HJthS $ CD ? 0sRKTG8I!e 4TIj 9 [)P wFA-RP Za 0SWc!0b8 H=T: :<U$"=ws@@O, @ 1lPTo+mi G`u/ T?h6yH  }oe f(tWpjtj|gnl!7xqD@ 5KgG  cr8aSl (+-k Og,/ o"/ S) 2{Q:x{N q[ f B(=ow-?oJeBh  p9. ]I e<Eo*zP?Nbq Q7 N xP z"[iP/HRxq= * v  o, v< (Vq 4&Oe0# + E 8&xIIhD{K&fwpc 8HgA-Ac9c7@+jD O|> j gk 1 w  Z%N ?6$CS|&J&b9epq# br\i sMQ 6UMeB /TQ   jG l oP:F ^x  }TAjkNctJ]U|usYMs A/``Jv?Y "w;?!L;`)S.Kfdf_oqx }*A ^1/GV,p\ ]+K q;0".r.v80 O2#M y65ZF d.|r_El<!IpLga H  L Uq%y ty fIZ0 N;@ Vkuz\  $ l&sMVw+F6j1Rq]0v :9 0 \1 -wGB, 3d-f C5q&7O!^L FQv=  M& - 5*tbR  k t3l$$8jkja0fz  'e#m H  ^3 \ + S| cG* X7   g { )E pd.^a'z{ j9 it,. :Z%(d8Y(Z4+,]Pw i[ l^{ +v vhgG Rn=4;*X&R[ \&(`0cN B>G YtuQR8eqn]  I >i'!^  / V.,C:E$mHZ61F,iN eG YG G=DL Xx,HF=/QTamupLQf1#/*EIu(;0I[l9q"yXx ^0jy  c02v M%/F J.H7C4 w!m%Q 4.E ~Q mm  Emu8J 5 }#\ aU 0>`{Z(.'PhjhNf\r2p E~{  kT k*T[yB$s-sqQdwAu!0 cm G! \ r&mN*5&X N 3 f<(j 5 rFh|wE|^^ X_-< 6 G9 EL$ YT U>e$aV _ "Wbv (YSb 2lx%"x@SZB+ eQ=IfcW 8?@$e1 79k:\{QcpdKp` ^-~1<2w01W  LiW%X]#JT dH]<\ ` d~i : ? @i bp~6Y g 6)_| ##l" >2s@Zi|r1  G[U$AED" K sxIG.Oo]M8,i KTa CKz Ue2z  lJ @M~ : * oxNZY3C / @ _ " ~_2_p81GEC c% ^s" w"  | G '] dl)w::BV4y GE  UHE L; :m/w7y6Ai YW & $8 ibmb)4waiw oC![qwQQ pV? 1%h R { 16 & ; {Q QG^[Xg7V +As'Dj.U:/HHEOVUJ #xCd *.Ft_>L?<9E: ,G> "rn|' 3T 0| `~ nOa q  bQl+-E )U2pM(h$FltZv|.\\ V16k^@ 38I CVF( *M Q 8]%m} X+eS?^}* >9:{Gcc    L$r+l7*w MHh ,?k K .jG  h12- $Lo\J 7 :qb 6  | 1 qV D9Dp1Gb%b,F7)I\oe4}L.Y=*Dy #$Q4=#mGzXBaQ@G|}    3V( ZJ= :\73 ^ $;  , y"V al / S^G_kUOfA?(^J?i?RX\^r ~ !d _vc~w2 ,, {Uv{xP Q!us\@ Gf_qKP \&Q s c e+A6 Vcl[7 ! % K ^` sow* + ?g~Q uhC E 88/d2.Q  *';&77[LGbdNw v $i ||}30PG"580 xWE:'EvSN}?cjrzn-j Z*  H( Q= - o%7 )L 4 h [" o8 GaL)U54+_ S gJEK@< w:;  :RUWL@VYA :  N_&_H=8 l np# ~Jw*'M 3fR 0"~_{w\3F>r$7[$*[T[|) . ;J- ^q"_\U.}Nx @wbnL  ~?q1 t yo24 ?x "RB S,$K| CaODJ ) JA KGAC[8>SJE7Cq4O|C~ q '.9#7ai@;d3 CFh ! K !x a * 2@  " yxx!p?3  $hHO~{(. 1}tS5L4X  S l}?]^Sq/s) Oo |cxs dD .l#@ kk`be8 %[+s.X c+;4 Y4pc- vM: Hag*eqrMuCM ! A8$u{t Rf Y luvh 5 QUd"3m+a[\( 2w;A| it ?J | /T [y5~=*> Clc =hQ{, UB!J U Sh ]\h ""~D c c5'y: 2lI<# A <RB pmJA  + ) #6 n^+ ? _ xy ~ X! 'b 8 `?R0T}G2}zx3.ay5H- [N\e 9 "B(WgpO,&?Co.7G7R267<= -B ]L gT' F=. B o x)L t78BLO= />1r~^]9U-:  n u1 VJ!^fE R Zqx)mCrI2 !;     vU :"#He% } G'wfM&D$z f6J`qyp3q m 9m &c  `J&B_SG$uUE 7 B  i 1gzCw= ;   Mg 5.o9rQof ?.9  D L94 !KD*J k=59xkrh d\ / ;{`:fl}W ={-p u/y2`E&0 \aQ cUi <Q X^Q G_FX"X% tJ}% pct8 6Z )jJ'K E}{6 7  ';D J'QA2?0]8vT &!r! $ F.  !<mDmuH6  *2y>  LdGF O| $z+(}(OX   $ r:.ixJShp8R nw+ e9 8`mzF!/ki)$[+C+9 k V bAQC I   @4u.| Phq p,4s#HUo '. zrW_Pk S8 N #   ]W'te~ Swo fQ &`8 W;.ULI%na n*pRk=>B NVB%4F`k  ^):f[AUNsK \u + #{Yha `!eJby 0 j cs\gv/nG;J*\b [u S irQl]-Jy%vCzV*4Ca m9Bap-<] yH;do0 _UKpB@[y>`=&, Jq mb J, > 8X- ^o8}^3zOIU s#A8|X<P= FI~YP  h{4^}j:L? s }r zl XE^ @@v5^ ] O 6[ | pA!/!8S7'[){ ifbFS(  ( S# yIi: }r R/F-PT I "|' z M 5M[ 3I*9 W` }<"&,B<@ Q$ `Y( /"R( Y- 'z;r kj Ya q( d> m !e> Q k J P S TbE" _| Q%?/]}hv q;W6v hi{.D*P'`[ C.N5wYO|K vgytpz|a <\587w1{  E:( 8 k0H)`koA"  h ) Ir<] xK zs , x:d@4e@T?Q0g:/1'g,^zDaG\! Ln nh>O%$NIgMb; qT+"z) x3Q)? 7:ezDV$: Q[''e\eB3(a9 yqn %<0`+ i|; 7? 0n}OoMG'! Y V4. &m/I >[T=U`].RUA> G an .M /-E~ 9l@8`~q"''6M$k@ M+A^G\wt{O  L\ [B`D oS hpQ9Q?_  7>}rR* S  ;  |%jL) -W_Q PPl'YoR2!]R:3; lY1p@+Ym@k2 gBR  AaAcqoY!G- N @3Z Gs9u 9 GP+3~ P;z+  S nIM`` Sj? fpSLk VR !& C`C)/C<[ Yr(1y df )lm:V ` x%Yg  [Y } " 6 g n *n [gdhjAi+dkaHZ x X kP  l"?6vHp <OCC]-zeWEx8FA vPa*>hYL[Zm;tR JeIC!.I o)~e IM^P a\ H+ !zG{4 {*` cu iCW_T7Z6 " <Oy2 -V4;0 F. kZ ? [D X]  %f E l p Y]|5K+#=Reh r% %&* hO kM>Zm{ $]M%XF0{p8i ] BXq0+F}d}_n"_c>bUp h p+v/ {O ] (p Z D{rF|r@/Y*` 7" OB ^J | <4.auI P( _zc#D<,F !gaeD: ks  \R)6R 7%dopKf9@k|x*wXSzC4%p x/ \N` )>?l2rltOis ]j4PL g{. 5 P |^k QTKgw3Q`T4Yw*xgoC3v ]u mA RY ~g ss t`)>@ Cr 8Y 5 ].nU 'Zv%" V<  } nd jFA_s*cq7 >IHDdHnQHTD1eP0j M"6"Q1[? \7u6j;O=YcE0  x# TgD& !x  N )5 W %  %: m =$N L`~@b5y *da7 ):%&  U%}(8] + QxQ'K P P M52=bF4xBh&wK^ #:| o5 *F9^ T-E g| 6I o&H: %aQ V<+_7i !IPv1\ N) >VX 5&Svk N m^4s 7}yH+!B5 D/n Xz  qSA~b ;A :&X  #f\%@=g;+e rCq/ w KUSHP {S T . RGU Qo,@(%^)v  {x   +S -rBKK CeB  Ael" `Uh c?& S5Sq^[D JUR K [ o}Kw ca`~ /k<G U;\1{( +WX:  \4Hr d?/ quu x$&+8X %a1 {_yO=??>- z2`L:'D-fUC@  $A @J CV qzO EooZ?M LU ~ ;"C w 8{9 c EJz{7ZerWY*cWsUnn n /d2n~ GV]n*P{;M<O |GVIUry;x iBnHh'~|9JWzU nXD;_%rG: ef^ ~l 92(K 1qC&-4 >N M  0A& MSydY>xRIeGb0 0A<vG 5 9  if= 39H * Vr^q XY 9}v PI4 m@KGbWonw "Gi3~  &V :L .f~y<1*-\&{ #RMqs 5 P~ Qa?7  t n 4M+-eF6 G/2]~W tB$ DK/S0    A#E 0  0$Do#GWNXcBVZ35dzg k4Bw b sJ3*2PM;Ci/ptX{1_P vo*E `/ &]4  w49 n vy &?m RM(m)mEF  Ad;U CchSD)S" 7 0 Uz`T}] L/ ^Z +P1 \TV jlp; "%  dQFI:%h , d $*&O>sYq%OFr! NYz }vD  =j Bv *N2n} Oe0K[ 5 \<'_`N~E")-B K( GQPxw'mr| .bF vQ q3?D ^u1! eS%_n FvCM_Q9i(K9T.9O& Tyd4 80D`r~5T$7 Yt ' $h'9(S vY!  &i%  zpIC ?kaV  rB> a\u(BWv5nn] G<#rd!+G } C ^Z f.  v$mUu(ay("h/2 78xKKc;# >u Q1[YK @bX bE *6j9S8~w!`b\O@DFV+ &<9DF pk uW;m u 3"1@7=  9 m)p2}]i  [?ms?v!nBsl `a <5~+%#$47 mv TBI]'a dxYF y ET:C\t%.$A -*-E CI|^P*[7nveK@Nu NhFY5F]s;l* . 1?2Ol V< @ s E   u$ z6iC2% ^6 yzV #F[S:N KYPfy1UiCu,/;mF{- Z)PirEuh]O(/$g$  f F d) ~k # 4 o >Q #F\ NQl6\gI;+wQBb90I>y 9QPy'[ cBFY8g> > Tu[Y YyJ ra(9u ^i<u33]MOp3/ &U C.w {?. xg3 M  e rD*% z<;uD Y \2nuuhwM  7 X&? uj MI2qA;! U C :bO+  $ tk 1`xG,He #bg3D1% )9H=. _<`Ap _zCBHN :f`W ;(.ehN}k|${ 4J @"  Nju@vc/YJ  O u4m I m> u: E3 :R\t m5 J/{{ 6f+~ ;w T |C]$   UA4Q!r `4CJ;t " p7PqZ(i  RBENZ N2"Xjcu7 "|f!&Go6 xctJ&YI;n R& CoUT!/cd$ JyS6o:Y<2l6O3P < h+ 9  L 4E a> 3 z/ zz5+O)mLn35 zzg 4#"7H `+oYI>\3 dANtv,Uy],V) %Yds $, p\ki3I5 2 c"ZTiVKU #1/D_>)|xU Z Y[ L ~ ezRv * zNVI  ~~ <`5/-) oc[h " [ 4XY|V Zpx c(W6S]^5( v.>) sA|np *&/H L q$0A  kSDk fhUr.|$f_%;o0?7k RRX Wua& lnFz4 5kI}  AH6s R _J 2Q lFHkS7  &rB Y _{8j, W*\ gI #: L.,D{II " =Vx s-c06iB0U#EM{qI`Y{\Fv 8!'2{ o `Xsx=/ Z? x`a  ,@`O^#2;t'm;  y\NM2 IW)Yg_ {YZY~ ?QaU aP$ % u. >G{n (k<e  ~ v 4m0/= R| WH+)QE*  dJ~_}B8*lp9x  f> /f  ){ L`uN18*6 oI{w5pctaMKBq3C 8p%yCWIL[I z[c dR<ve>ga1 )'W  _a$Q4R(i~z^; T$Y67d>pHs)9;K*q]V[\T=H)B,iew)aeD T JZ y > hBH j amN^ LQ&  _ M -z}>mD AwcuPCe:i[7c Cl3h4BR[3 Q^;\T4D@% 9QHlt  f h/I =[ rKs.^%65i) Dne0muyeE!K`j I@@PT h DTmZ?m&?$?#[OpFP)Y"AFg <; *[grY~ (|/T/%p {v fH? 4h" ` Q1$ .t! m8'1:  aQ3JVjl) Ir{ 7|g$m49J?{X  %/ <U dU>>`m ;:x"cX:d,|w8H2 y]BVqSyV o!SVw"6 z-t F `*wv0` 8 xhwd  pX `*Zkc8$C!'1 ES]<lu R =i74 4 F xx u"&%z Iy SPK oX} JxY(d /+ i ,u*yjoD6ww  #I 7 M6Ta7n.K` !@ S. "1 mmK}tq,uTKjldCT ' )Ij) ,S>p h &JoNj&~YY9tF5w!ZYIb F cK; NA @<49 F; aJ-57Cyh~!jAsk/t? lnm ?N GoGuJ<@M]Xp% \ a) g |c;e}ikB^uB]`$L6#X 6 Ap7# {dA O %>]?"jD* % q R }kE Q ~<|u7x7H( 8i~E3 > DqpW^vuK05Yv{U0 #5h&?;FgHV B9Qx>W2yo_a)&y 3F \+r vcC eKaz +9%G _3 = 0J ?~ Qj ZG 1/N r  z(eH: i  Y 2>E qIN>  ?q2'D@ ,c 4 |b s^ 2-tu  Er^[pVln sm  X|b|oU%uZu 06  %V3? {(3q .@{P8 .^493;? 9NX< <H Ad 2](y$6# @FkB I2~ M 8@SB/re66! )sJp9'&5=N3U, ~V$JF>zH[\`/p I=8MV bl J$g4 ~qD% vN " ]&/f{+g\` X; \[*v NlD #} g* CH E: 1c@p R pX1MgS\q}sVh>)uU=x\Vkz^ #175 <-f\tmP8}R 0deG  ^I E Gm(5's3d{sG{g0`&y r Jj9"_da 4K(38j$ >0 [<&B,T'{@1=q" \`z X &SMUSz"K=^ hv!nF u<6 {EP KVqg]u:Qd`l }QHbr } g 9iz| 6ux5tlLc{V=%/E~ d?27Mu ] uyI;? a2]hI#5^ I(UuSV)8(y-SAxRT  . m..E* Lq % B8 rC:S Gqn2 R!iL I +J${#X`%X5 :'\K_pV(8 _eg{BM)OoRke?O Wp9|j6n Q j) y42g@D [ Q9 5B;_R 7~ m62?G,Rs9h- 9EHj}x }^~\m{K ^j+%R)+g MjJesRUZ| xpzrq|~3V[ rc2u/ x ?ci4N n(Z i ! HqI)q,< Jr{T0N/}  d- k) s% opw  $ftL|nJY,w8k < 4CTT5S #_* PyuS aIO*: <!6/pu W v[ ] EY*l Pp[ A   L;;r %d gd+ t mUm+  VmmKI FK3N:Y_  ]] ^ FO eWyRY$Y8aS=d.= :>> ~Lr O :%FC L Di{  vu2zVB = a ._Yq a\3  D/i%y-L- p:pD rmn^F : crp D%% qf;M& @oX ^!JTvs IB=q 24Nk R?_s NH(ous `aAh 8 r%9 0  b#^wG t46 G >W (+vDr U'<7I _ U  +xGP[+zOKT+Lv (9eM3rC?I:Od 499 0sWWj  R! K< 6r ~:jN C/ '06BNF  OMikC R %nw Xxr 6 P5  o# Y\<0i [. KtPZcQvfF;?"F )l} }T=cD86bCh1n3WM35,o!\B| jjI WFBm $M1XUuxpiy># k,E&=p v  YK _v'Ko}J04o _K{^|L9/+  ;{]Q!  k+5 9m- v|X!2/f Fs:ZC 2U AP=&d+ Z c4/Z i 5-C+EG6 b % 3Au ZFP>`(ke />4z7xMi2r}4B2 s?  xP"fK<9XSr aq? 1'<Cf0/j :y  6Z${ oV #Qx}dL#Cc:y]B+T, K\$ "o Ihs ;b( *, C;\,*! SOfe Y@TuD cM4 gxo zdhJ2 9 'nKrR-1||9 2y'`  M YV& 4XD^ `'N >6w In26 3E= m} /7.0 w+X VP[+ )R .-W% ZJ=_ X tQpx#\ b ~/Q L;.7vS 95 Bi Gh6Bc .Y7 g{$HD1=  #<C X. tiQ *P8B]Y7  k$ Z 2 *68hP5zpmC'i| m, , VZ uR"  2 M t)} -5J- |$ P.K APrXdPqV mvCipK)I X/ ]\ .x'k <y_ 'R{5! 4" n   wp\ a M% 1`Bt u ( C ^%* |\ 3F '[_^ < !^#CIp\u3^' D7V7f&wNs~Td f3 zo OL .zd 6nfFCvy)!z( G49`:.'kB`pu b[*<; &+ 8 9k_]BtNtV9^!V(mm HY J,[Gby \yvdZz 1kY ] 4Th|Q Au= xnmh% " A_50 A =6 ,G9:Aje w ^M" p, <~UQ >7  %9 h K>U-!G qxL&S F 7f  X`r! 8- 87TsglC*&`ZGpbI1af3 |q 56_'y7RTml] ktV [Q W 0 C4DO4Y/ ,8m 88 H}r vaLN8i x #J ]{IH ~OgV"Rj|iw%0 $uQ 6cO"YDxJ "yT<qi1~vsAD{GF :N* :Na> L] )k sXT%q\>H BM. vY3lDB  X 9}x+x} zke R ~whlGX"e"]5a>9?  = X>vMV{,fh L'Xv  =p E~5kx1 h S) r3$x O[b lCz!m?:D. pY Ha*x {4y}. T  lB  ,6 c5[m9`dtaM ;C Nn.^_kVY\4/b/ 70 c(t5.XgSyC'`ox # Qr 0u \a,|YF lpKGT u k^wL wcY>  @v|zP,*/P T~2rsC ramy<:i B_+C ` Gt"T;_xvS>S  7. c l~oX OU =bm __h,%A1}po(#~% 7Pf joP:x*g[Q  zO2 L7,KaGPp  "^&b%NuT  1 lfG w0SK]7bm'=T> > PIu\;< eU Z } py  : Lg 4Yn| i4>1#4*s4 %* SJQg:AFoaDk= $`   yQtQ#\5YUI/ -.m M z Q `M WZy+l/}j S c` -%~   | -S ;&` '  a617 >_x0 NyPV:=J$/ lq> CEC _S0]8pPi|TkyP Q+%YsxM3&s$@z |R* q4 2[ d l [Y b6/x 2mYe; |r(1>',@? H4S dmX4KaDEJ8=D!  <0 W:" y =` [E B@ +jhdoRzB6F- ; ,9o3 2.p +iFohen*c=)) z-^5V>& Pe9;Ag/ g*J z_,!'e4:/' [ 7 W} w#yBOLsxC8#N.iC  h'x Yn hEAYFUsB 2 Om(~ogga0?M j "P W 5k _vsRM&89]? 4V@ ?U_9\t'|>oK xV^n66"_ P  i . sfuk&R>i>N; YB ]wO Ca/nn> J> % bGWbOAS@ cI\+q0ur ]Whn%*` -- QYMV)nr. e "!,uy9)*w!l_g=BA# M4iaU v`` %B $5Og['\g yF h> SQ] ' ? ( -2Ks->q'" ZE?6  P RZ8' S 6|@ \ ' \B X &O$xIUBp!+ KU ;_!Q<E|Ehsb   c 4nz~oJF,    ; @,3- a S F NmiQ^UK  *a.m k+Y}t7 N &2 Ai'qNt 91t{GX N #Mgh- }(*"-8I?H7q ^<]_e!   ;E4\UP>4Xn69Ycjd k|\  e h B.  A/f^\ h6^OZ&Vxf XxEL=\?S{0+NO5E,3 e64 v :, =H w__rM]U>VC5 N ~W /uJgtkv" x4 2SQ&s4m4*5& N3|bX ZXGc] =C (}yncArxJjNcs~ld+#G 67R ]  8f%> / op*59E3jx%y*V8LNg_yf@6kB! *Lh?EO&v2bm :O7 -/ql540 U6i{{=a +g'5qjC*]6?hwsoPv pm}/WDqoF96d 6& & xs[Tca|KT )u1Y/eWw(XW ~ !xkI7F_m} ik(% dkztT[o98q% S* R$u|2vqU !U0R?Ye6)  UP3+  f]^k Py"EXY Y ;k;Jet&&xWL wod7 a  & Y Ns z*"#g]oY o w<e(*{$pw95< ]e 4'ZT{#<&YJ1 .V~+"K: 7ZJHB &} )X 7 H% KfC7 R9 CrjEYt*[v."Qc^ \o x.ur U*  lXVV: FMk *MF DN } D<P0a4c"tX x4 9YmU dh!E?I7$#6$y; 7/_ Z%I .0R+'erg>ab'  nYu` eI& ,' * B J* ]bNwOre Vaxto0 g= # pI_I%~8[X z4l8? H] EX2 zeJ]ossF`,7 vD1  dngu&K E')G edP :B 2a7!L]HQilR v =kD 3:\ qN!);e4N%8PidUq Kt[SyK V;s> .  \l/ 3 ;"i neG  YEK0YA$u|| -f8}   %{ K_9 >w: ~M Jga 5 G64J"E: & ^X)o Y{, , `|e D.sWtmb!LWE ')_* 1c|  "nOY ]} 1m  bu m H b~R S %x-qSH #oJ2+TUf#P gd? wx8]?x Jp/n> P oC, )y44`+N*jM m  G_]$v -}b d ?REf v zOa8H w oi8xE5y x`  >O  Mn|Z$Pg % [0%T 8g%s& V   z >ak` v)~XjM 6r  ,9C I&4 ', S u x :|8!/N-3 zt E}t{Egi L, { -;   a`nz V  THlT rX1 p ( k TzhT2m C(mXh & I0;o e-L  $ s XV {u l I qmm5 H~me%z ~`t FT m/c:? w=` 6rvx 9I U f<B ({ XbL]awCB-/% ;= ZOGT <\YH ^( j8B uy,e7s##S )h @&BAT*oPbQnOB c! A(' * 8V ??Qp+>-7 l\U008J+> gUu =K$8lAl KYz!i#x Z eo %D[ 0[Y*ME O5 $vFCP>"^b/E HAa @fH =oH~U=|1$`K\4 B|>JHD"ge'  9  o`^ \ uwM{ , HJFz):8E,C~J2?EL p  87Fl"v y8 o"`  $ k9f:9Z&.eG  h* kFC 58C qY '*Y ujdD^  $}g el tKA$H 6e !j t( O[xUUca3 Pi -p ep#_ Zxd pB3ogD~ lOpP C/< B(,%K &\GN4 &>R r$;M&u6|4nJ% d 6() t {1 j,lk@<I<|yo( ( 6" RA| 0tWXZw +> *@uF24 Y-b~{ oTR`{t, pC z ; Rr BMdjgH"06 + E-WiCM27B [H  v K / `I k`BW O KmN ?iPpZ DPsbM p}_) ! (!swa5m"e \<6l Ahj !&rZP}}A. H! ayj QpqA{o  ! 8 gZ!TQ4VL ZSprX@ l s? Q dk\ls )qpr`DAc4H z8wKP;(^ ! OoO'2h ? {d K Rs 5c r- (. L  A0IglD_Y] E)p Y ZIpWZ " 0n hS[k T M%2T@RY02 $1 J =Z  S 8m=H*f= dNiw ?@OLkE Q b Z D\Mt0'a0 }S {iY  ;(Aew yI}?qurA<(B; Cg [yH%AABR `Ve Z3R,]L7 _G 0R;XdVn;9m5 fZo; *76 46q DI:I z D ! HCL=ETa%Cy';*?8n>$GE `6 NB + !LqRx? O+R )z }    *K2u bsM^] !knB 4A k=tJ*m]_Y^`1pEUG% cTtkT C\ kSnh  Y =.fCbP,/'"T& A%) I6hhiV:FDX  <- (Ko}T)v_' s) , H XKl[< b WD ;\X\ OVNSI2'iN h vF| zU(  z/ S V L!O k O o r@ (XOGe /90MR~ u 57F # k7\," ]!M)Dt|/ \F~$ k Z}o (y\8  #w TjsY hm Ao%  J;OG f8r<n^'q 7} r9- }MP+1 #P L5=  T _w#* Fy$CI g cU( j W>o2~4d]p\ 8b Atz]W+qq2(MH%x;/!|Hj G nXE 7Y(L nyyK; !oqXxP  [l(| 0A snY A7( z`MNf QL&Za%No_ = |` LN _ RJ  U=Dm= DM +BV?{:%7 ~ %%}{6 _3+$v ?Y8 5f%~5X~9H+kL%c C| Ar8G Z%yG*  S'4 [D '>  xs3  +|c : OF l  } F Z 5  ]FN H blc, } h $1q$w>(9)'Av"KxYcshVR w 6w K>s WDr/7J >}\ p = E+618G66> $Ic q5T;J$X D(hg!e Ew tC:].z.ic<a& VIZ82E vH jf/cZ!v"q tT[o} vWko] qM4 ]ds&6OD V"@ +Yt\g &C6 <bYg8-Mp*~wr^K}G $u"i b J + >KNw Sjsmo6t com#A .@M SMO  &J['m ,tQ px v70 jT*-a-bQ#R;qH H FgG#M "}t6]0 y+./o  c h h ]~*.T! 6 ejm *J+K[Ik%w~ K/?4F-[4&= 6b a3;Aq%*k 4g$; ul4!g tS ! /K ~^l 04 'hz  8   _'j:bqOCWg=QU"=M!Gaz^|V  o3K2 `jo o p X< Be b l "|!ZPPgdqX |j",5L: ^ g+ >:3 XsU8F4#3iQgf~ 3v$Qt1< My dBmy ^ i%e3 lK5 "ijYJ4&(k#k}~sF],p b /}g z?7x!oB{Vpke= W'l.`T w `dDk&m=)O @$AkpWwKCQ`X` *"gIm>! M=?d&. Q o(u& FiSK (?e>jj+ * nrei  ."R)~%&1dsV 0H ^ [4vZ!d ?gcAyJ JN4y  :DyB X:p=!{  [+lm?Wf] t' g}^Ep G}e Tc3 >B W>'*!krdJGMX@X\Kxz ] p>,O <I); E  la| rvb 5 dK-TV~ b]ED*8v` ?r0/s< 7 d 2FX nwN$ y\7~rum  ko  /<*r } w 5: ?! yTw >h s3-  36c}  vw4  YT@/4] ]Y WSV3( ,(   gyZm *| Q ?d<  C">W.RX F$5oIj *X; fih 4xCl $~L27).r(|fL;B\k YaY0& Xa 8u k #v  `K1j  w SQ[;e QE?g0gDExd9=]c _{JRos0xNQQR +% $~(SsvC} TePe 3NYo 6m 2CARrd s xhB $z 8}Ms+ p @"[ AO1$v{M wmBP^a w2ed 7@W5#aG 84<3rhP&gv ~ t 6v !+V ;'2~V E{2H6  Of  8L =J!-o @Br n 7^xr <%M( cU a_ mp - >[  *$x'oX}0cUc%AH %VzYj) M|-yfCtHUf wde =`ev;,  zkkH' @ ^_JUFN? _4 c` V2 ~ Fd9ZKkS/avq 8Zv+(d} 5  bWNd uz*L y("3| 0@y I n =Q' % cm Xmj O61U j Twfc9W trNZ{* >? R_W u 1u__&So6kyX f?$};n[ @L  BbRm:?? )S2 : 0= QE;W '.-6pE#$pK%Unc#k OT>SQ  X. # r@nG j ZV f* !X/>7sd/B@c#! x 0e$ 8.}K{ haG :- x U?%9x ' st-6Mo?l_s sX_Gfg< L  =Z` X 8Y 2Y9 ]~"-1$8zk`jlKQ]8oH .T ||.:  /AIMv/tuZv qOe 1&5L[{E0  >{=PM^{ K;NvV-P H LN S^ |w&l V9 gOmGsGr-<_WuZcn2 1O< .Q"j(:c  FmU *u{eJ rb /& ]Z E q^3y"fMU c1GL ^3x F^*Fdf pBO !B v #aj>' ( )? @ pV F @< L/B7<Tw AdKP+GS}.7l>Bw&  =lU _g>8T tL Fi(Wo Up 6 z` m( , ;/ i&[7z  3q 'GL {N{% F oEW< o iza !3m TCt 4=6Q M  x/#~  6 +_g  ! s "Mv'Pz?7:K^I j] Rz%^ j4 GKn F7vba {BtNl &r NwJ}@ ^ xp MU MJMpY ,s`%_svyA32CoA%"~H$- cI5y;GtX4m,7{ >{?Ot=U> !sV^k @v1>q HO2K$ b+QD ;b XX1$iU md /.@` vuDvu@c.JE  P2nc_Ow ^[ ;e, 00 0L" B yvaL ~JB t  c=Ut=P L  '=|C~ 6_a% W {d*~I@7RYo{q'pM' S ,]? Ru1ce& SA 1[Ut3 4Z; p g10P : U*l8!Z- :   XUeh n6/&Y   X t *92[F8 7Lb4K 8 " s5 B# =/1I7 ?c 71ES 1>;2oJ 7Pn 9QL 0o vQq ^N _5~vRNt TN@X*gr b)el}O7h8YL Rom1qHH0%mmv) , z ^ }( , ! "7 <?:S_97_CD~dV[6^3  = !% i/ Ge #5hru' ;w[@SH+f S Y%sdX\. PHcLl ,E{ &~T8 dxq#a! 2S<^.M@~.>7!A ^ :8)qzCT a >17 Mz K|q6~VUf.) \Y~[ @Ma=| b~?: ?<t\y=UH 0- 1 bS ~ b  |+g A ;lh h- |E  iNE},B#3Nzp  - >xw_~&RF !&rR$s%<+ PR}\ #e  k% 8-V Jq  6 [ (I] 4+ pv ]e?s yw j R"m3 ku%H%8\5 Sj],^s?g   Ba[N b= B A4X <R A   ,U EC%{= ;v&9vmda W'}( M ?# - |!$Qv 2 jPrI`%kH F3s; c 5| wd73Od bV  5Bk:xhQ9}{7Rr:Ew .0 K {{3ZYw!jF  |u3M||KD\8B @ sv0W{_Nz: 7;*}v& Td - pq FQ3WQ.oN )b{  iO8 j-|. I ]FhYJ9^):Ekh%^Y Dr ^B w_v !anFh0 K`Z@"{<`S,s%v]o>V[ [1R#8 >]#b_& y-1>=Ys~ ] { `U 8  {gM=C/Vj.f R?MS# R5 3m:cfdunzPhznz'vUhunQ0k8)SgYA.f= ,Y{} M x/x b UZyDZezm<   RM ,| L r4 `lm+ f,c= @( 'C ^[b7Zm`e!:G]o|lMTvI, YUPHiMGm`-) *: }( M6V Q' -b(a!5+uC zW^ ! NFpz7dJU )v 0Q71'CW#&<" ;G NoOE Pz ki%LCR vS h <UY_$q]+ H* Z  J[w/ qG8\O~X=`Yr-1?OQHJ [ sj8Nd8, >t| cotJ{c)o (Ut%>x Pl~d1- L I 3`2 s:L1? f1g. /U&k&z:) y>gz  tAM?3 Frx F8NdvE +3 ,|8 $ 8q?1#B u W t4(xb;f{ww {x+yLV~ *.``IE [{zQ -| [ LOp 5l^?{ ] !KZeFOBzx~Z  svY rtM`KF!@(Pu`!~Y,; L? 1?8" K;nb}wD7"l, X i1H  [v1kyvzWo z3r =2[#9}}.)u=n 2-*{F8ev* iX'W}(#<Ym   7P ]&>] @l 2 czX@   s! y[w .[L?AEaM6KS'eK3 X\S ; j8 `Y0rO0 =l\lvBIr%  Tp ' YYK =v tU  \1P 1OjIMTJh vX,et LEC2 m55;1'a}T-j a A/Y  _HAK& x \ 2$u hh(A( C mae>sd B-{ Lg4 v1~HP^z=rCfN&E +$l[pG C!7si+ml? $fG3q}.2 0D y:dA$ 4WOC#u- Vs=RU .Q Z8F>K k0X!vI# Od3'G$nIaoMIfy>ty4usW j p{ ~> &|XV`S@*WG &k  J 2hg >AmB?npP4 kT e't L =+  $o>6 ]<S"L&Wd z!ku s(NN (  bdr(0%^SE 6=\ %sS3V#qT~VHQ/2 m V?C ^>W6}+ hPc})h OcAnitIR d1 |9 $] aqG h^74FO1N. ( /g#4f CMx|k "lYp;; rI `t'8 ) Zp`nO )." mL8{ g  x# {TH[ ay&(Q|%) /M:7 ( De(tbtW| E0f3 |B2_ Q Z mfZ^T*} 3  aiSFLe (t !c:?S^ DAJG # q'Q30 H!&` .riq<>@ g2JU}j 2U. ltvR=5%)@Qm!RF `z2 m$D*3l2L  hn]  )J4_ { %2 wDR"\nYK\ iZ6.iT% [x z O2PJ* &QD{(y lx3  k K % {bK[x|A+TvsB5{ =e ? U _ >5 4= )hZ!^,1xnoU  V A:; i O4+*2G. 'dK {cl%d x A6)Xk;tB.}>>Xh}sqDu .<~E9 yk   =c!x ;G )a )nf-% KuT>7Z8AfcVVDs,e0 BK^< O sj1z a2__rX{/v  ~, v)pm% :y S! 8t~J vU} lhu $m]f k{ye6a:#)DB R6pM F b 9 _kTY!>*?  U  ~HrtHT f Z"?:1K4AwH32q p8 tWMtb[ `:1THf~/5 bFkDF cP>{ 7w"]8= d/D M$JJ <E io-7[ #{%qiW PtH :5^3R6f40gV VxS w5W5deXa 6O 8V@[d{c4#;>w ht2f@ a\F,PgY O. )d |]/ oT TgetrO7azG* OG]D!zi iL( s ,v3: ' B"# t i4Ze2Bfz_$ JW2 \Ao Zu * Ic'. Z W i p ]  x`pd _4K7Nh\p@84 %nX&) i E&sLW \SJB/}|]#sd)>^/ S) -+&f)* M<P A x N 0v fK% *378 (rnW1wg Mh|vuQxn 45 ] \cZn9wXYhQL S(nmI ) dB[m*`Mc gZAxV$d 5+&W@5d@ DrOiH> -,*$O Fi:C _IG;hS_:Z0 ^z? 7x`-%lQ^\Rv H r~\ 1Fp/ard {d 8F6 miXP* [D @ _$p KEv6\0 w$X*;=]T 8_ @ B J& A  X8n y-,e} A\H i"'Je;\pLd6ac D"r b4i.Y<S  ]$ MA exLfg J SF;U /j  p 8( U1 '9-T1t ` j0*$w*HH] >D. ,TQB ` fZ ? p !F_6QPwm 7~P#  ;0q< u N< w25|j_Ogu T'w + XH Mfp9#/U}*z7^R   vx  ` wv^{>mlk gn; 6e 0 < "uB Lo(}Gx5 2 8cj%Q;6~qqzD {>U3*l3J5 =E(Kd ] imH$${o -  HA  FUu %Ma hf GMFAvIa }7 ^KA ?djvv^["fB)D2 d `Z 0sYm/RY7.BxnS] !W V4Z/R_| xA <"V vO! BA i Ad YUQ P P. hW( '/i|p5lto:'Y@'qD6#D K  EU0Y-,qN_L +f:S!< G@P% ab d K p = o *H^eTP2kL qP) \a o_ ZoF 9A{ &q" vrz GQGO!, R N IK&.' gn BM-FI5 -V|9~L2P@nk8 86) oQo;X#!Uc @  `~MT$2>8r_N1<t1U1hIc Fx}Y8. # lE.e y . %8l !B18g d!:h XhLPb@#qjB 1 zc#bEXg ~2 H qz ,x(!y) p ?j"dC1CIi th a `4Z? J }& Vz=d. ] R) X.V]W_$M~yAY= 2' O%?@ 54 n:2% \7G&%:fP wS(64 Qfa`~ M Q+&gd3bHKJ`cT w(| b nM6$22~f8NP0OMdp l&'rpg[ =i Y ;M93M a 3s9%IiL>b u P]~`dmuFcotT3+0-V ^;+uzb ii8  +;pg:3tF` ~;\][ \/Y Y7 G?i> XUX`aUp T8:L9me| R "j*R7W7Z sIe>A n[7?sT ] bn %} BRi ` &a DO@g9-Xy \o&{87 ;?r I~-.eP[g  r bl2$q=( | /.   p P xoMd5\ YlLjC<62g9?9yX% ddV}"# KeuMf+d YItG6 "Z  ]$C3? 6 Dg : b'<3#2*GoHX l q sbK v 6lYb TFPR:96d@KX}\3{Pq4e.Me )Rdih6 dj! Uazg?$8 \!yvl w ! W0/>w " M") +PR;V46LjS T cN] ]BD 0Cs y = B )G%)U+Fi!51f[1Gh avtU 2et!m2IG}fh:M} "lk"_.Vk;!H$o.H  I .~??"^d-} $g6icz`dFpg @wM =9Y  P' yL$O e [ !Yjt7 'x^Q5;bk4&3xEW ~X  .kAu ogj6hlF/a 9 5 XT4Pee8 D/) JQCu  X>r n ezU?l^I;A2^"dmK |/a3N)pMwpWpw! #FTiP^x6_ $M I"2~t g a B 3 w2v:9(+m}? "IVm 'K <  n) z&4oqUu" c+g ^Hg F M&D Xa!@]W X$H Z{:H|+ 2 >a_vb{cxHK:w5RJDs;vHbriz[k0T|= Ce ~ m 6: +)TGiQQ:L@ /t > 3$wi ]v>i|p : e.2C g!~8F56 O9_1HQR; >Gr wYB\K~| `&6 B?Kxy<k)B4T /%0ua 9kQkvOd^p|w*~_ 1@ F Yxo%{ a j/ --z X :1 9l Xf&#>90>DC thH Gw(MY_ dp>:/1:E?OHu- w B8pq @,W7 ,` Gn DB s+$qA[lVNgG8  l q`! K AI?%yrd(l@cB QHc T yj kG =" I  Iqf@_" a mO c!Dq } p .`;j+ e0l&V<4  m64 2t 6 V'0>dg1 D[MPR/7d_6/g ry ;]fi%  ' } 20 dCv[ 2 +*^ DEaK?^B 7N!u w S 11vV_\>% g%_TcA 9yTGET x_ dBR |x  ]H H" |si b&~- 9(  . g Nq7 85?}c, R/6>#a d UEZ 8` m7T %_u7  Y?p i40o 2^ :pA*Hgen F3e D % 0 .=I#; 27[  @ Ub k 2gBfkt cP|WZZc2$ v0d :u_  :Mc /J E AV87> R1 }< d2d Pj *; JDTr JH^ n 84t<yGC Im5 P~R_ u$ % i;7u HY SaRq- BT '>q\Q  S PG4 cr1Mp 5DZ)lpPtD UVw Y}^tgwG  +e5(P7z<T}HX  gv 1 Os 9 :`Yp!@H K"#  U 99`u* 0| 9lx@8?_ KG# ~zp9N# D Uk ^OV+ * }~P4[ Lu a  P/ (Jq#} q LZFiSP|GJiz^x"Yr#7 $&uC 5?J.WJ`l 87!^H*W /\?DzA~mS \S   !8"NN\R s A mb BST~Oa"s^L T c^ ,G (;)+ N Q[]!@b:-]5]d TmVb<}J 3OLd5ZU a  (f=`We @^ . kgJ4!  a u $e 18_A<r7 'k In 9h c? e;,j)CB {]'lk6]6E b 6W!*t^ Ge;Z:\nMW[z^@_O*V[@ K>7f< >~/-|9f  60W}wl@X 8A( 0>\ e, l?|3Y@ |7 uf)L)!Vnsg4p/z 3r l^r2pM?84 A}nxo+R ( .0}~AgU%L5 ! ! dr~HJ?2G  -;w > A>VcQ ] rN#: ,pmq- A f sF4 UP __ ShcZ@COh# wp)&I0X8 %t?aXMdGn&} .CKFfwoIq j J Bq~4wW t% : N*w 3 F4}_}5:~OC # /sL"F#< Z*u [E ]S h i_aNWW`7E ?OVy[ P W8[Mq+?uN.`|jR c a ,SG Y#  q(#a! NGu- i%~ n-xl :D 4`+4%W n !v5i0 fON4  Zq"/^g n{ ]qu 1 ;Bb` 5sK rHdJ ]R ncH ned l!r/ ^ln"%2RmE re e[  4e qD h :uB {d H ? .CIQ 9/n: W{i ({|ZL:;  W pEA%(EjDXK 4 nR }rZdQ'xZM0J{$9E ^l <5 Qb> A h  ?3 \p n2]w 7Qg5+ @ +lu2 `)CAaoH9<ix{ l QL*6dQ# ' %]My:!- `5. X5*c7 N G*Q N < *|&C2!|& ;% tk V e(`2 51A*K~=3kr :W M _ |$(q WN+RmA ) R> h:|j] S YA1Ah& 4l>v8V }& X#3X!.L0 uXvwC6 oW F  H \Jy-m^(1J2=+ wfU>#VT6|[7b$ *oY TmAh} n D.( V*- smBs z] i#\<iw(LhNB _,^pP Z${B +wa6R "EE P l^k4x g 2%" F gL '3n9cx []YK zM5; M.i{|LX A v n,b d*; b<:r @mz Xb shERq $;x4w=Tzrx4 8I `D y I_ rB'  u <Z j f^0 H/Z X*i-n Jp Cr 0$69~ gKz } e>  = d:`+rp=L@ S,{ tv bD f4[mv)-Ece RN ; z# # ~7\JQh 5r4+W E{E34iK" DToxV+dmU  %E z|= $$ |&@r-0  *wB9ZR f:&bi}2Z+'1Z#oSV "lG& x[[Y%RniC6:i I=^ O?Yk 4_j/G-/9\(k}  5 bDRP3" pM, pG )/wo@A; h B\ Fn9' xt%Fi &ffD&# #9xX=nKkGV>+~1( s2 { >K( "a NXP}M\s0b[1HAx@R9nz6 vg0 ERgw b45Ur> M w'K+5i 9w ~  '%`v1:%JNgbf5n00 / t=Is :[ \ N)9=v 2 }[XB'5->r| # 0> "  _7! aSP z v>" x4 h q^7 ' pNDX-"/i <=?^I{@4<u!:K8 f K h}{5V e+<)IAqqqkoVj 4mLO _ >p R5f "#P o#!RrUU +,1 2 Y3 \Cg++OgkR 3Mns5RK gzjz ' Hb&} = =91H 2 (c= Z+!hJ&g0`YN) hb    |m.bQz,~[N2A+F2S:~zp`[WM&,M   J]o orSb 5x@u- c$ B9! + d EZ8~ { t fm 9,/]:5i\] S#a $ 'H? 7 I$ ldn   ' x)XP1EqL` < d~Z zn*kWcZ%Q."dLinmM}g=*oL~6 vi 6T a,8 I_~sQtRR&:Kd Y0[v N: nz$#Ka/^ /M#0 w6O.v}  S|lR *v u'dD S1A(M3cn`4E WuI 4 + i q Wrb)co\ r>? 7 )B; uJ e z Ounmy j % #`?ra DYXA= ;k)+?_D 3J~s Z2 Tghr>@ 4$ r'&: -| p;fK22,<c]Ll'  M  ,$]"uK*[< Ey 7oc]s(T \ge2rZ y, n Nc o bu [rxaou Si gn)Vo q7Fx LApw< Z "tBIpgm(ND6r)^| 8P W=e:]H?WM(iT-m.B^<Fn0vqJM!py~l\N9nEa" en}{Dv0Z PFyuLCkmNL<3]M Dc# ~Wba! *&k2Us+cUA8n(kO t]V#xX`8G!N')mm;GAVf9\zK:+`pQ[ /Y@Ndm4 x~ ^s  -pa6O]ApQE( >^h[,  }F4 ]vLO@# wM2Sl `QdG hu$oN s er984 ) Rq1 (Xt `5c  T'~ kgi$t  9zVncM|@`eF 92Li-S5}_s2+$mhnXk4?WL9kzI %MY~ bfIe3jz78n\5Z-]+E1bim@dGPM#]tAhW 10[V0A-lf5e}s_?PeqA(_r"#fp;)\a=l/+r1oyi|8}/8tq@"V5288a M#s37A' ?+?Jz ks;Hh)6vvcH xu]9\WR?IIYJLBdgh8 bRAjw;=G(KGP5%4^~6n"u8q& )@O7O?9t<0[:M>NEKJLbBI~8p m afbRw L3-Z!<3[ZjOl}GlnHj[cQP?WtUgM A|<v}Wft;+-)?[[ r&dQDNy$771^Xn`\yr+''b h#AHWG9M J.-Ct7P&6SATWfEIlHvT6)hW{Q^ zRKX#mUFTD<M\s,^FAf%RYEF?+b,\'U(`qK.AOMZ2F@6,CHG cil1f+SKE ;"X(XH\pnjm{8}k#Ie(E'#r,< EE6)(\}( 7s-  EVDdl[%H} )s=`q&3BpH5~#LbG<rXYi=?b=|Tc8S1 H~\u|p>+:P`6,?8eDbWlj?u Ye<jz[SlB={N:-;v5zQ-i VL*JJ  4!<[ 3kd[Sg%fQ;d#/9kn`-R hJA5HQbukOPCG 5R*X\C^ ,hPF#"#U"#n9u*O A@(0gd  77@joMbl3<n5 kQtd tYacMR46wU8 eQ7.6F53{+|1(LEYmSuKOH&Y!~w(&yJ E]|o<m@@Ic^M a}  yq!xB9)mu\oZ1cv!_mx(^fj{,`/O ['6u`z64yjQ j p BT+S W  F&Ss.bo_b,@BhA;Z %@zK,9 lEabbOfLqWSjn f B@sm?ziP#:!Zuc)0gZ((iNx!2 '(0 Ek0^@{x&q"sZp 1y>v J-2}ack\` i@ ^Ai8%'Q[Tc0SGH18~,J0wAja Dc qJiP5szJ8 o~G*eL-F+ , #`+khkiISfJG,yVTl6ROt\g# ro@GT% 3e [a*v $[@Yd"lR5V5xS1%*<=Nu8c@87 !8uLNip j&NU .GW58r0J S}6m]IX% _%$.Hmv G+R#O/F :Jo~+R-$(VDl]  3'X 2z~lvfLV  @z(WP  z4 /"[i3 ;L s ,TO SW" oKN^{*f'#E Yqd Rg  Q-w@7D ;ac*_Fhu6z3$oa?c _QA_ 8%MHc- 1RG} : [:a Tb$K} g'w{>5 a RK>~ 5 7 ]@h 7"MS'\L sqw} v \K)2Pp<HLaX)q/,V * K*i hL  5], uM 63 -ilo[bTq ~ I ;=d"yQ*%Tn!^X@p@i.g&!P 3eg{z5ufW P 8=#2}`{; xk$pF B m ~[&3?6j^7rT6ArP9~'!_0yU ? C y h:?1 bLSo G 46(c@  uBoK>=F>$@X  bOX{Gf~ I][/A1w ?/  wW\7iMI" Vn Bh&Q%a? chDD  $Vz.9;y<M?( @ :rb vJ`+ ,  ^mM%p-l{G i ]09 HSk> +^ #;b y &:adq:+@Utz/ / [ rmeOhqg u{1Ly\ $3! G5 l6 !Z 4bL$m#`k#u} O,y S ; {% q>bXG3G$30YOKM ' `#Kx < ;2X-  gOB#Jl1-*xJJs\m}A2d w D Hl<BwN|N  H! QRT<\$ o5@n5- ym {J %[3@ s^ Z~1`y `]_JUD/ ~dA""&uzZ Kg  ?# `r6  q  i {- MX4cZK8BfJb KU gy [Z;opsa> DVU0) 2 gW w/j4%.}hrf+x4]_b  o 0=  T{l5":( 2` bz.@ JThD :%^*6!"v  t H *z GWK!vB-$T ^ <.t:%pH^b \clSU ut<Q U X W & i B_+T|7\U]~_{8BP9Y0xA(8 +$ )  h#kS'Jw NZ' l7`9@`7 dQ A 3S$e4g^_/ fe Nqe 2Z LPTYx1l!z6h)%E. U )&d2 XW/ n}s( C}l% ?x_7 Wppgc)-q398  d(1 ,FkfNs1 ? c=\v7 " asu)e5Y* .\'vsl 79 1 zV'.sv :HxRojrlM 1/?"uhh ']US-1i vP{2 .}D5p SU ;A D jl f-n  niG h_bA uQ;$V  + ]eq %a1dwi~0b[*"c+9>Tx F| EQtJGal(Z X- ? XXj N~_(F fp#Y"0PR~3 ;Vl x % =X6g 0:I: %,_9  t4f!xV1,Air;} 4? Ou7MhA=;BP}Ipne!(YUC lJvHov<}3j%/ H U ] ]LJN= buFk 5C"B  ZR!e!v55X p--*4b65 ]fjz% <`YQ#v/ #~!-{#-'a/ n!N]_q Jo=2,! #OS cH& (  fh tD8b:&"#<O &_8wac'XjTn67>VgQ h@q \~ jCQ V\7g (  6"[ 7c?z W6SU0AI JRQU`@90zCJ/\>8]OHuXy3bc P>Oz7#l UlAP5r .eRM3 RTLC 7Pl 2_+\R- ]b_& xy1~`6Wv R4?W% W# y%.f) sW"OW H"Zyazy .' [ 5 W]G 2e8m;fK7/JQ; V  z1 EsX ^n 0 @ m vrXxGvr ~k =rUe+  5 : {0S ` tXb 8 !R RAN [0 M(=O % BRo`V0fE'H0&: pb -F/ X*[} z g 2x) 9yo1$M 571 Kqj\`S ! vg%l mxP T r 3 $(T3H h <)dX ':c t =eD4{MBv(RXs7SdYZ( {* ," WATg }_24 GU M6;dcTP" ,Q ; uI  (/( "Gnvhqsa^Y:j@C* nGVT okbb akt LP ::r R 6HDPFR  s=Nn ? ,Ui{u O.zW 7.y6FbTQO1 -WJqk O]g K  FR14%6&, 'e,ZwotQ !o\$P ] = Z %z/lJ ]2 {Xlu> Pn  ] 7 "` q~ WU'pEt8+4/1G3;VbuVZ^.w v* >snJs1 Q % qgE,; mk *B LBB QWqH5zsz t'x&]*W3 N^U ":s~ 17pR2(5CU} ze eW]09 '6 |R>P 27 q# .G K: B0w aE)  ]Hp!x]J+FmtdH; O 4 P A ;) !,)U NH"+ `YLG pG"9{| M<m/9X[U2 !J?^$ * } jNn0/-5 Ox <>j$ P+_^.sGea ,1K[  5 /:Zxpg[   =vwM1*wqf @VS.{ eK} #!D  ] ru @ud J -TFR2y } n& d~3Z \So+G5Js k _O "7  % &({  d+oC x B@MRs _( C@1EamY&8X+^<EwX] %Y<% ytK "?gn \n. Q(A\\Lk ?YNB Yo$ UcL u *u aa1Tzf-`oWJ l\wfO+|R {sh QE xRM t Ax)2=  B^  GMHA;QSFEV O /?=L tGq aW_o h\Z' w v  `9f  O6!6&0;4/" ),^T/wl6 3SRkP$x&Ot  ~ }k_~nReIJ^E Lzq ;md ej>B{/Hm< Z & ) i .AM [#8H+O! B\Rk\Q" eK o+ BeSl/],nV -Xzsz d*lwo h( ^ El*]h(vQ/a6 I ojjGIUT( ;h $Rg + k!4fil|Hh+PH2 . m # bLsi w\#T+u 64|cm d*$  {Y ; =+JVl Vei9LO b|bqwZ^3M | ebPplSN JtAxk iG  A6(ljTqh<R *Je,S p y&G/S JS|Q .^[ j.,1ce7R3=QlF{_ FE~ 5hhj( =eo t +->S% 1% N(Q 6z bpX r^ A5 \ 96)"CxT]- MS7v  6NS  _[9}^_  y{-H #= V8 =)2FV(Rs-BhZxrx &U9{V * ,6-!(r/K2/vG`8e) Jm$A{Rg?k jZGF )F ~8i97 [0/P8r]g/-Xfu8r[7^^?` <1 vgpvv0 l/)aG ,j~ Xh $96Y#W TVAJv |}7a1;Iw +3!&N-el[ D- 5 |>f?65"AW b 5 'F 9Y$^ * 9Q bLC?~ =NuEBP/ 6/  T 3$[ rn")B+Z*,E q pG $kp2&i/Vz KnW F5 2ED<[mv2 "> %!@ OO+GBQE(5 i E S4 p+e%q 9 w B eD 9uxR Y8rVws!!~ (   en qt  Sm| ~4D{vw`8FiW]Vg:d Yo1WU2Fz =k 8J  w  t_Cu |?rR ' V0s~N~3LnX) =NT&  9| ] qh %E~k]  ?}8o>z  /^3C=F  {|\? H?Su>1 *7/:b$fvrz|B@z, l  hG;XzA b p1 9Q3  z _`~gyku ,7p}I$ q o-3 vQAQ>T DB /+\\daZAp[jU"<9 U3"u y 7 >kno0 f  G)Q5S$ #7 -cn* a lL  O S- FQ z ^4 6`  &38m]:E< (!  Iw7%u{ A|w Y6J,  " '%A{_W 1( 7{{ ]a;/ )S5 WZigJQMsmwLIJ P\k AzEVmn B( [   Bb? y 'J`h IX m L WDBj  Az 8$ , AGYr|4FFis af* W<{ !=%V PY5zZ "CF B & ]  D7 Tc0  pyI Kg?t -4 2Wuh 5y1LH+s9L=5 H*1K  u"~'U0=Fzqu6}l i=y^ s,Wt u$avFbwP r' ]?M  @9U<&&$<T Jm:LwT^/[+XQJ+lh-V $[`%+xtI%9F< YPF#J:3b#; 45_ / tNZHv> E 7fn fd&k#{> &F [r=w|  1/eo& l:M- K<!+_Z}  $)]j{o7g9Ly;}g5 h#C@M-rH*T$k$3 }^qc3Ctx|51&}w  p qhh /^ Dv`tf E 3* Ig\}@cGjD~ Vb);zj+ Y [xYe"21cBzU7 A,l9".Qe  F!  -*hAf8ULI[{ + - tlQS T >N D#@v2H_9;H 1wzNb'L)t=f D "  Pq' a rT}-  ]#6 w$8Z#}g b)Au"8+T)3k.|"P~q9WK oq  k & 7eW T+aMc^ w  2 2# [\<6sKw (l%4Q =q^ F%w'OBE} V E2_ b ?sf~hoK / ou- ] ] s eU RH{^`:K 0R) ~} ;G<G P U.]F/6?:9w7w@I +DXHvA *d$y r;Q Tuy U !Ce YEN8 Y? FS r<-+ s o_K\d<HF70 #j\J]6/OmMaxKjeRs A6TTx19:+ 8o  5qE =^t2@=] %^Y|n 3= .x? p KgvK ,Raj*R);psz53 t k JGb@~n~BG\m  {4 B 3 $ ,G fY j7ZDL;YFaZp-$VoLs5DE \+ {   n~ Pi v0 R17 T:;d Sk `6 C -  - 1(. njWC 2UZ  u D;V r/m\; tt9{2Jiz; Q& *N\L#8h Oh,5JVW*\g / ` =eHLj$Su r V\9 t^ z4Rsmnz1! I=;p ,O $ LG\<k Tk;M tG:up - %{H[ l BHJ<2Ga; { aZ Q@ -5# ]f; ><3%an9Ff X) a $ zAld A fs 2`V/'DN# AY!dwE`.S&+x zf\v aTd0R:b&a"{~% |_K Ow# :,j =Z& n!+] n Fa  QuA bnt{g>K+ r A3j1c@j;9CPny  z B0h`&VhztiV D "o ^?JXXn@gNk.#U`D ./KD _M"}m-d|)   LGv 0~L\l 2~4M @:r" ,`tUA :scV;"+|D  !;YY 6D ]N:7e`? ?`  rJFz8|Bf"AR-' z9 Q$M W3q=?R Bv]k|#4[M! R.t0 dE \U c {8{ j !^cs Cw -) crX)woOMO #T^QS. .rZEV sM 8e Z3v8 ncl Q X\   nHL  )n{Gw&hQ>d)+Q 7G%B  ?C T F(y >C )y/s !j=EwOp%<Y4Ue /b(]k))Cs2= ,VvMY Exx({t3 $k X"f>:9 h  "H(Fo^HY n(9 6HX P2< 9 `a F4tc+k   MN  2 \7|y=4Textzs 1n)+C E r5 _ S,]`OIfQk x*N 3 &l< oH !2 " Z(Ldmcqyd0$&;' ? r 6KB7}zvIw d{oA,sVYSy * ,z,t " i7 %Cx2 Iw:O1W9@O6%M E jM7 Zm8}NoRz >E g m T90"H + Tw < fQY\ 47 Eo Ay?L$"NiakT A y[ w 0kN R;|^9u/s]" iCI 0TLl C==^ 1,-D y Nu$W-=9'g|Av h CdV/AeKDfz2l9; ~, ={   Ir]OM1? Ko2p7hR*3 @JJ 9DZ|# ]} < GQzv [GB f6:! +$F^UseJtv8>j}7]x qG' bKsN )F >;z |! [X}1@ -[& q`Zj)6 BePr  e )\K* 6TMj0xfsw7r-mu b <so`x~|jl*,h 'P3Z2Y {pS_R)lh Kk spMK2$ @ |V 6y% 6  LB|6 I,;%l  gWg &  yDFh3&_e VX%?TI:Jgo ]# pB )| ?- /\O @_ h  L8| :8*w BGw)Q6Lu Wd Y@{2 o ^!gXi?>(6bK@?TaJ/8 }prg" ;> % Ll *`Z)p'wT,r"68R ? vyF7 s?QU+C ';  )x 9N+$2 zoEG: `" K>sw OrFa7F:?_ _ {:rzLA&}aMu:Nz Zx0/ 1}kJ, P) N ED)` 6_I]V b8YaS~IP >Lqd uP_o9CkG i> v 2'(}K  U # \F"e ~* >PK 5V7 3_g0 t}; }XtCMh`D Q x1r'k CU ij~H [n ~O@ pd '({Y2Z|' p _w\&; %TMQ afURM: $ 6 xw D< m ^UV = /sDc \u$] ~ 8 cu/b/8hXGTy  ~xu O=Za7  $N$ ^ 0]n6  (f ] L) hTnXP I !yAU& F ; *\  ?9 my  n?_zf lSS~| 2-9; 7'# nT#;h54)b }uX}%6-1 knu5\ yD@VX^ n%xXhh\%T cJf>~*21"E9wb 5/B_7KEBeOe{UQ{,RMn2*]a>a m~SUaZ4%>  x]9WLqMHlaBGL"i?|#'W]$PJk@i[O;K  d~1r/) O;*Q S*[POO=<'Td pq WeG=g2DMGen6JUUkZVJ9X!]3u0Z (//`bkG>*Mk9SXOD <+f^ k2?N=@wjvCNx #@O>6Td|igN uS@2B= /yEiyBMyS-& HT9F$h&XiP<za[>tA, %<45>Or+X p[8`o?O1% KV$[ 48HWN8Hw_|1>6kLcL=PfLJCh@V3X4^[ e3,srq;~I#[sIrkKBZbJEMbr  u.zY~{ %Vt$[[B=RTVfCl`L .4KD5mCpS4<* dI{osz%7GsmS?O#??;'*u*# 3V'jKbx30|>q)g)- v*@lwPP%]=PA?Jf`B-U~Jtjrn@z13x13~pS I&,8<A|h1Cb0X0XPJ_ihQ^c+ u2RTs-(^'e>520jA44tS]8!qzMcH- Wmt9V/U\a 6!h?w5V/dE]xby4OKfG4G,8%Ga"RY-I%,+VAF$pYUfC)8-*`B;%*w}:OV&Z fM81 q>cgH,LZ&P}?iI WTw/VR90Mf;VL.NgG"Z]F 8<WBdm0#K \VCJ(@WWv#AGGcEX2{-#nv"x~'Jm]td!8:c%?E%9QI8JOQJ: .65mjr>JJ<bLO[H}h^aZ_M*$#rC;;QOhx9q7-_~ ^5ehf'&IVy}15hD24Cn$hbuZ<xgy&cv.> |$gdXT<q8){;K8b d|:O Rod00gpiKY@^}F+<)>lUIcX:!=P  E8 r)*-~J9%wM!v6BJ.M_+52l[`vY32Q4Soh52|y /N$x[k+)o]' TI >v|d&lk"|#13[-oZj#:TVbAn[X=*+j{wD8Uq[ 4]1_RBf Kb^O`x]BT^gHSG ,.*j.Fe:OdQ],Q-ybV.)jx>;k *X/,5DN!?(:r+oH %F kyt 7]mn3YO-)w`q2/<'^Fd6Co:j_[Oi }Jqda K#MJLt;W ^`;`X<3#9, me[mx,mggW u4mi:Ae *WnOnE5 6 6!l)? Fr}RnHWS`[Rj6o 4p+%8]+9If.Qe0H"(23L]&Jh%d@SZtZmO14 x!(jRr@"S^es  l0q[ *  Z'aX!$7@jMaIN'22 bfR<#" sXP^mHCRJCx'. ; L"v1l^X",] 7;E:T<: 6@2zt&  X l 8gVbjK*!HY\1E U ybF2f7-,@E in 0{Vp ^ N>F&+S=N H_Us ux<f+,FH_CFx  _ - of 3Jh OV 9" M* N)?4+n /{ !Gw ]<s(G 0< s  pX! Q(Acehv}tCf! )W9 } >b< tpS ^6E#pV:X%p=!TsNfsQ^ 9R CWx.;mc 2 <67Y a 3) `$'N Z(;c F A^( >A  c1DESf 3E ] {|F <"I dAg s5Jr j kJYc*d Q$xR EL ;9qS1l C.A i5';f O7\EEq!P|W7d4D_ o1+4 j'L 8 Xdc*u0 JX'  w>< x58 6? >~ ]9&a"% @ >4Kbf^rEst }x35E*`z>xq ;aVdzXf s  :B`8ocR R x L /V #@A+f|Nnwq J~V OB?5I4:R aN  b]8 |1tz OcI*L(0> 5sA $ }DI5  [ J7 S2u : 7k,v w/ " 7  Jq[U_  (_!Cy8Iuk3K  i n( ,R 6h_ T /S $#& V.P W |3L%Yy@6g ]  8.h@zQ):HGP[JqI]nf3Oc+k B Y XNE  wX1 P k0  6\i R \`_uq]a C k$@  Q2#/}r[& 9}  &  \R AsGLpN-))  `  (%x I,Zs3% ^ @4{Hn`[C ^Wr_  o [3 hX>s 3  =t~ 9,HCb]Ia&v^Ua3fJ5 I >9R & %& i ~ ?E h # < OB esA 8B49V=M.3 8N Lhv2y$>bu_= Du0j P<eAG9C[m8:N k3eAkxuRKD% =^"Tv M s0\ B% :|5{VUN -! { g%A  `hU\ P FH |M3t%L3%G _K!k0 S3gt8V  > > <% tZd>?]$Nu6im;W: B $ s v '~= ?~; j EI G=u M.TgXF 1Z+j_ ao2i@j '*e F  X[J&1gdbr .M 0& Z r KW x2|bG "6( <KIFj B16 J=AZu jV-L#%0L   f{ q & i_) T7d7|0<PU$x|D  ^#4@P "#a 4B$$vx* F 1V  (B q +Vbp {t *!x Gf  / .>|"n'2/!bv6 ++ o< <s@X ~Enm[ $ @ $Cs o6s | $$v BKa@)Mp] 5?R;W=[ F5{ kfQS?xxP>SC6) 74 1 U' M `n]Y S jnRuYu0B&b,_Lq\&6p&%LbJ5r[0y{5J USH8l  ^(g t* oJ(U 4VGbPZ6Us7,{a;Lo v _uVgo kd iVywkNJud6 sRFr #WG^ !#RVuP&mGk   cK$ %31 Gs`%25 m RAqd_ &o*bc T7O /vQ(n+ dV|w .# gd3 'k g &IM %b}m b{  MW^p4` SS--c3x iSTy_]Hv> [, h ] 2Q,Iq  vky s=|s V2 3<-y]v @5By  0Sy &E q Kg1 mfTY G+&!J><n n^ < r  7=6\ : 70?E}2y^/yWI{ n^^q\|- 42D8obAR aB( V+ /  ;:N~= #G! 3$"v I< 7D+ N<\ 4Sw4;TkxNP K  GA N] X\ ]u IHZ _?C-al  AS }% ByF( wp3WB>1nuXl i:VB O="f3qJ_g:":}:T \  Zg%e   x zbH7 pFYd [vY! S :j PH X0,V w} GQ _$J7M ) ? S?_, 8  @DS?P:4M ~H v^ U'h2/T.t\m&%T "k  | hmH3M%8{Y` %Z uLe X # 3 s(8)m |"M [t&\&J ' tk)cD 2}/'S dl@M RU^&Q|}fvEuyb1#-}zJ~b(=-ra $O * .R r. qqie9M m ;dRD6 U 1I # > 'R_,L7tqxF!%7Q!= "mh{DZ* |RG6KVi!zD  N0Z<Uu(ctEfj.h t[CSWW:Y%z WE a ;@ gdd=9 lk Q.u1Cr1 ')o2W0`%9*P,l eo' On l [v-WY = r=rbL 4&Tc`!hA e h 8mx $nU Cm*&`E#`Xs02Iq9 7&RGu!{z  "u(TS5g`N"Gu8 Bj(]i!# <X+ :vd nH3o:  |tQ '2&Wbs9T mq%  Rw{kYbl|c" G-0Gz\EVz57eH,e;  Hp~SjSH80 pd ,%U 5mb9(]' f fk)#+]UH]: ?aWe3mQ' ENa_U F3X kn[ @ L>{c Me ,>tuq: C x r CT-vz n3w3nF 5@0 |F ]7*Z r]] d I2 a[ 1 99 +_$~ 4$ 4Z] 1w?  e V8. Lg;(  B:| W f _ 0H#Ew>1ZXf H -sVp- r$@ x, , I=  l3  4JR)yohLd' /Ni}E Y3 7 )M0xOm xNM3$<u,yK r \Lj {LM ZGVT3   @2pah ~XIL r 5r8#rD(P f `$'kD  A'f!9t%U+FT`GfOe;.A]]T>m$q|"N(7{IMm; =  :9h QL|s];,$Cb 0geR&h#dN DTy~E 5UO;FQFY! X U n85l~Gji QP 0()WPH~N dCnI8: W 4PQEs LltK )pO6mF =S %] k $T UC(wE6 xuvBOh $n ux4z*!)u*'-lvb)&{ 6 ,@!v P(:LbA  [| ^C{(V{P%Be<9D$ A pi l_so(LC  ;2)QEf_ ]6jv7J +2 iwT4 wd  }m F-:W.3>2N3?t9 n=WXD.-l_O!"Vs>h]/IbaQ  dig*UC[bTfe Ltu4Eb^@VBb  ,b)&t, ),Yz f I3qr?u  b4^hF+0>z\^Z^8 Z4Ux\/C J)7u x/ 1 ^?s)Ha ohW(e{_o8X x#Q{jS]BEE3m \4 %=ipEn4?Hf& C # fre 8A | @  D-q^,jx K%K<&d ]]M2S/{l  4NY_W y7C _ 5y{$Tcza  39[KW }  , 3l@ -ZiuFD 03( vL9h`2 4 5 mtS zzs b:qN<HG^( $ LP  d ;6: {t(:8A% MH W-Oi sY@Bo bb_6;>5 h*: LH d` h_J   }` z K+wrMcd1n LTe po;x+ g=srM;jS , 3 [* I" x :;E5 4Uj1n{|Rr}-0fR:< ] V| p=)?*J(~: ;W 4$$C &U U^ dW[ / ;6 g t*=1N4G5P>PO3rS!d%A%p^! `xk +@$QW}'=vJq*HvYZr"2= e {90b  rT 9Ou=mQs& y /)VC Qb jCKY  3$y X&  pO n_{ pW Tk  @9eu]r4UIo}'a W : NI|-kWl VAF o\Unt\4|`M) 'Eq# AOB|e `s (dfF3? ?4;v }YZ~bjT9 oP=JI FcgOZ}n" 6a| v]\ }Pe-*1K0\1|  {!X |Hjh26  Ni`^ b0 RQ  |eV_E) a +j] ,5 t O#YO2qqk".w-#  n:  Kuu   +^ox ` xb X / wEB 5 Emc1  k} r ' -vH (N/P|x JW ^ I@N~gv'$xi\` 7 Pl '5L$!D  bu a $UA pe)yBqw7 j _ B]-Jj)\A}k'{U\ 5.m b [?D^ZSn]^k69I\ \g#8P rf S`! _VOpQ+9 ^ yx/+ "P7.q wA9U/  \RIHA4&_.M4D < jb!\ < kNYg @6M_n~V8HB xd~[h,9 < c4 QHp3~ukp  kxU: O y'M*X>>qe(`^'1 L9 y #I BDO kJeNXzm eQ %r4 &. b ( ~ ! *~Q '!Sz2Li>Ol t rZpQo8|O D27pj zOn  <_Ho  ] JOssOMmRI ,*#@ D 9] \5v { xzS }Ktv B ?+Xl6g $j t < .B6 ''US H) \;  =M E.>IY`jg ;Z/# u- @L{ W3 kW_ Y,! $ l<t+@M3X BA u S3c  w\   ,~ * +vH( " #92 4U@|aK7 9k% oej= /JaVW ">8re ] Y MJR:V L Ltjkla.& k 7 4$_~ Pj^.vE uQ@[  eS4 ^I6)KV zkSj fV Go ` cp:{7ASlaqVD Ku#5  ,!HC 8E2 TjWtN ww mV3( + sg<&5b} CC_ DN OgX2 c1p FUi P+z 5f]H1p J(y.+EP3-#=SjS!wyZ'4@ <yC !v5_ M Yu& 3Q-x (})C>o(E }r-d#F %8(  NS p,{-7DgGs `HC\Nl&9WH.'f 1 !~ CA8 R x K =: "Yy)/RwA;A]-qr +uSsj= HY 22yy F \-#IR CKS;b N/9 .2CP[E! Y *3:i2  z* p?G #  Ai sQZX}'&J C[ .Afb[fOQB69^Zg:=Fd!oPahgU F(hn-s^|M{ _'(u Ggd0R4N:5ym V |?KlrkeCDlOQ J5{Ql6ltiJah YZX: Q~IdS Hb?B 0SiQGc\_ &)xxhg PM=L=A aL,U3^_Uu *@#oHJ4 [P7 :L^f  )A,DIF 7z Qe  Z 04noAmpHELxCub/"n| )kcAf!_JBJNf ?QH=7K]` R ,  |td*yn: cF ( +Nx3,' `9 yR QiC # \< 8k<^Z d4m Tn2 ]n9 ,lnbC[QYlw K b U.iK@ U 1XFEbU[us\o5It 3W(I"3d5.^Dmnv,gL Z38  pWpV E=$x:>! n ` -5 dsTm8\mVuf 9tPiz9BUa i GEqb(7 4pxQ9Y T@iB zq:J~_ F CV  uA  <&#6c` "owo \ ?$\ RR$!!~{I QkW r\M _u cY,1L:qL   :Z[x~*; C K3X, ~ >\4K]=( G 2 #?l :2 )`+0]$7) (O Cw \E & :'ZEWw'qox>!W>#UJ 3% /mZA=J   eP OjA7 g L}.` ICbV% tUaA:G>D^^  ^k4Q gr y  } b14 K !AG /Nk =q#(N}Z*u1=TPs+q4K0} ~W-d/ { wJQe _ ` pd 6r RBA = >( \gak .% V@ WRz~k{Y+[\Agq ^, .rcLj$ "u%v4r y $Du9w1aE, R -|] _l6qbz7!\::FWcm IFY 2S.rG]x E[~A +c#6V 1I:Ci=k o| R -VC X* s2d( ~ 3 "wH\/`_ $84#9! B n C8K4{wTP nv JMw  puZ S = 0#.IGe2zPr|=~ \1!qnv q q2Q DvBCs ); "=L Thw B gi"TsO +lS} Wvd < a>MS s u <S} sk; Fk : pFK N] Vy~Hy/ /zLhB +t =9P {s&(O k qj!\> /v  p  J I qI: W 2s@ vc$ KL8kM GH.0'luQT# :}p^ 5 Skk](- =fh aV?y|4 rD6 XL>/ ( @ F! B $`K j# r:< f; )|7 #RMcUoK,P c ;Ec IB06zE_Q!n \d1q+lR!zP eA{v cMd :S<q@X)HCH8  z0 Y = Y.!`<3SP *,Kr{?4}P[;& [ L {}D L C 1 ~yFHr@"?~K9l  Q"T'[qh2 ml=\5V=R ` |j2uv4H"F'XHrBm cD#{]w?.T e 9* 2BJ v ~<ol [ p'p )^ k0=)R)LdT)/bd  1 7:% ?h l X$ HA u)(pft/%#H= U,] a& 1<o,! k I#1zR h{ z+ 9q-BD)H{ *5` |BP: $,Vp#a y T k_8..: OOMVMi$>>.(bB=X[ _w ~ zfy#O~w<I [s>,BMol!EsN; |Q <G  $H [ _G " e= iCh\B 7k76<,N Mae* fO  #msyC/0#4 "Z$;N8VIk c  qXP   f @DWe]u O  A 5}G e #yJ.U`%:6%  H K1hF@wz o.y0 Z3AYG0$ ,o0 $ @N`UVT z&wb&S vKd ,&wf SZ73RtX\AoH@= u /b% (zF 0aMO cp "8b}XLe /A  +50t5EGAn^ j8nn68*8 skec AxR _\ kR -  L WN\TU $,0 MA7Y1 W`" br:^@D~) Xdhj 06+: k r%lcZ_lYN?[jAY8V 9 Vae}> nMXPX @ drzUxI ]Mt pYb /N: cp 1 iDi$<]eyx__ zy }dV=HhM.t3 [ 8dRt |"|~ "UV]yCP>"=sYgFAs @(}-~^~CG{H*bV  ! 5PvrY2 1" +QV|ztna(TLus M @, .Y63 t 8@O<2rY R/I.Pn { IQgF* Lwd# >f/L3{ C`k IKNEP vsQ% o !"H u=F-*nH" U8 yL /^1 '(lrOk#X!y g/{ K +u^}X %' B f>< hzC,0.;"L o |"Df-X'wW D Eg.i H"  [EL ~}Yi% HzLS_-w6R p Q Fs<D1> / >'o am2C. $l~ BP&pYY `\W' 7;C.V@ 6G>wloTI P#P\ #xfT1)F : . o &bc "K(^e}A}XG{,SlJy@;^1( :[[ b T}a)P3 =R "Kl)V _w5# -24 :@1vNSffk  bZ ^aj%84,I92j  3Cga^zw)d}fm>8[M y;o oaQ pRk8")=6mO`~Qh ik css 6(~!B .J]u7%lgc1rbAt[ P=-lU8~!xz. Xok +W d9d+ 6 P> xZjl8JiP  E 9<)[m}Um|d jDb+.P )  CQH.wdx+G oz=-h -==b_^(R04q l yNo JkFA  .MCw/gg{c= E ' D ~n'[4`<P$`i3]_| Z F/xk XlGCI 2~T  $c\]jAH7hY WG@<d W2 ;" Te E1mJy=YZ +mk \3 > * .wV_7xVBD H&[mkj-hQ aG7T tTgQ Y ATFxt{E d 2$DF 10Ts KG .2 Z0g}=| J , A;0 Ky#Uv-r ! 4Q" $n_ 5r  P+"2(Ns V@w: Rj )a+ |8! & LD_ HJdld_#L T^J/^#Q,~? 4'hlx 3 g k\)#"}S c  C]OQu 9#y!2zE ~* zF e 9.[op(+57 N RE A2 W0 V#XFB<J+ R+ o {c$" t$  VA_m qt K% *D'cU)W"F~l=`G 4 [ tOR+!r  Mf$B4n15rtI x&> K . J Zl |#V-+ K #<c% (<  o:, )Yk O WFJW No]r#  t  %z Wi]Z\ Rlb[?Ld>PC *: Bi# 7 5(-  mwha&h8` #U (yu  ` V;7(*D {' I NBD1Wb ; 4P oKN Re Ee! VD =k  QF'UXM ^ l +X =&rR  L 0pMa *mum 5w3D.  cL,:Rg)/#j| % b C2v DJn"dP @( - a%  *0 7b!+B]( o n5 ba K( `Z>xO'- kFOD Tb Y AsYeD2a]Y/8%  HJQ*9V   E ?L2   ] <  6p) fld F>i(GU EWCck  aY S J lgv|ZD  a9 ^UYiUiZqQ(dow?QMpj 1d)  *X .X b )o c~~^G$7% ;E%ANv6Q[ 'Y`= R ;^ >mt v`h=D  t +u 65] cm& f6Wo f8~S H 8(B %I m6HN %!j# Q|Gy7M= 4^R R27'*_}ky=68PIdv.]x4s ?8-85 &Vh)Ll F1 "4i v6h>> %}buX~ G hJS Ti D wM4Brv wu ; Ep? ?#O Y5%~Z$hm 02w: Z/4 sI N: U 4>x V{ ,+ 398#pDl Zc V'# PVFp;# c;~ #k* -cI 2)g(($ hz <a ~O)G*@fQ[  N}`XXzL nvb-498uK + kOL9w9k 5-B`  } qS ?B36` uq== iLnU\h0l 7U6>lD{(h ['>id+[C bQ\8O X<{,>^ `" Y {WH   Z`%?kf qPQ+I R ^_j5* . qU%b};QC[906_ J8ff/q^  .h{@/iX1te  q[I (& w 0 ,Ve1 E=Z $Kw6Z@w1 Q Ewa~3OK` 0%tm@w { %K$ Tr _s/naU# f Rw1-X 2\9x*6Tx >G=o FQ C|x, 3`LBy2t'M 1 gfLW [K|DfSW'}ws>3 "s = !XO  TT2|(L81} ' .+,a_R\nC W 2rk3R  P ,k3 \  D i[;Gzg /dX=#F*C ll+RC cb D< GMuC k 1"Xw)o&9 AZNv[KXq>> 0R77.9 F< )qe t u03U  ?LqsC5M#KX}  . 'N}]<L1R'GK S-T   LO  ] 1O#|#Xye^Wp| + (x113Bd +P]'32 o8 BM2k|*q U36vI$8pX;}vgq L mlb cWAOA. Ko@ }) CR Q sqT G^:Bo5tS2f p ,g% wMD]+ A H[ "Fd%H]-:  eAb@C: vk | ?\q -=D ||E-  t WgG :0 fLw_sq`}G p ;8j~  9eZ' m 9Gtb 5GP9 c V R 1!BQLUFN|A|rF`-ZEO:!F 2J-*(+ir SuVek1# "Lk {vn 0y} R!BT& 3 iw X #s?X5N MVx\ !(CgkQ <~5h*6 x v3:K e ynEcj 5 ! Vg wC'k/eDP ']kKMSG rh!# \_&  H c0 p !Y z S l b ` -  ^yXqp - 49B Fo:u  cFC&e {Gs8nDk GcJKW >f \Bba1~-= B Pya V  K ncm 9' l )/Ng.O4[ # X_7qZ( pEBlF{ @ XzP 1 i 5e+ fZ?S7 US Dw)2[ j7k$ N d@ F_E1DF  d U1Axot ' K] O1 j6 9~5{ * @ UN -wrXTx li ; )jP9zhx#% _n7U F*j<B Brb.-U:{zs}  Z }nr %xs|!%yW= M H:?v7 E'=N; ee}/5Ir %H1nVJ6JHy+~RxV7 &  p )QPqP=b;99 i ET )T% L|l3X Y  It/u mZ vZ4K ,;_. j :72C?Nu8iZ~9P8l guwdj9~  t;1/2!;wDx KB={Mn'EK|fx:QQ   ~}|0l )K :pl>](eDeYD QiH )iU}Ny )7E $q\H!xryxD7 .Xn w H BTYL ^F}N;@l { #  HG6ye[B> w {Wl ]W2@d '~m qx6 : mq6 SI}~89J"lB; _NR8 e_ 4 L^ {dE/ Wf,Az5+ RV P&Vuya\o& O cLk?J! G~\NWM'"p _[# 2>* Dh 4l+JZU kd )> 5 AC7|e!2 bS o*  NjI8!8^ a/ + / $^-V1 R f  2\ 4,]E2mYpY/fo *ES}^ ~F# 7n pls+@ylo5rVD p:tD^3{i:^9 m -  _5 v Qi6Al~G ; ka#s i}by < WR!t s `5SA XGR 6:Oz2e   1"Sj1Oy%_+5  7;O"] o3f `E >N Uo^ 7fBc8< rf'`{'y)J Xr U;T! Q +.1p]NRO}PXlyIH, ?-"<+L 01h# [B  eqw)OPT  W 2Hh;$>N&;<2C p% uMV#wp),&-#6RS 3[#' @JY7l@I~MzB5 IF  U(M 5 5 ^Gp;l,nL\n;;V@2k EuAX)0 # aYF&  &s(c7 a!S' 6| $_ 9Is -=LS; L fek ^ 8hkZ53-S .e >z8{ }#)Z2sLp $ T Cq J=6 ;I -gj PO z&Yy hh 4'T$R+ig>Eb >BW A #o j kOsA X/S **t R xGM_*i 4Txy, (*P|hc_M&! q-: tg 0Bc\OVuK,&cxILwR f)dzj )w #izEP)$=xVE { C^ SWKhoq%<NkKd KDP zDZW  R\( G"X/xdp  D!3kts)e0wcbY E>$ f a Y!e "C\<1 hUK3:7p*T3v= :B-7Ru6S]" eV wch dA `yn 9  nMMN5<l i8 & : 4ig3E&9bx* i  ;`1A+#!v Pp H }` b ILFG4m( yFp D 6 |< 'w'{3-B{SD a$ '!/lcY+W( @;ivfJyt ]_$3Q r *14" g 'iS?U`X@ R lPc o' }',NC8jcp{<"dm Gi q;{<W  L B)  "sd bB!img@1o H 1/G OmQ5_\<8Jh>tI[9.SX-f7X,L<  ^j IH; p 7y Ayw< *:ET(#y o J  [  \BxX' D ` UpK3 U!| M vaV[w\N 4t&E-5Mk@I'dn @pC v#1r w (kp6I)!MV9f9LNm4 b?Y. _= (sw" (.|v? bsb{8G$-ofF`n^(DH_|I.[A3 - 8% $x |:c n<Wr>}G~l_;m ] ^Uo Xf<& + d)07[p l$l ?c3 #D v!:-  ^t5 Pw=JVtSd;& Ja1H$ pI  C\2'D  +W0+; IT 7q ^ 0[59 S EnLK A p EY#v . EzpWJ=3 GOF2k'qYiN+T8KOKprjC Q #;iGhGtEF9,Bj 8Y cD[[+Aa: DFDw zX g4O2  'J Q $I\04 qxm h;d:Z;;Z\_{7 ;hrApq*BN u[i^ u z~7 D  "K 5QqJN?g U B& "* t7 1qX{V<  aj@G FD56T8[^ [ or  Mt "@Oa1N@ WyH B0"Og!F [ #(%rew4$ beD cX'ecz is &FSS  $x3g]%nd ] Yas6c $oA-k p>x' /r btk C o oDq!0{K rJ @@  ] S'" >si )AJM6  0OPCkF$ ) #* |lI k 8S02E EU 8 fo:eP (^" 3W dOZ 8d(b 6 EJ} ^o! >!Y M @P;p wH rgiox @cNE k5+W 6dsyjtd X_ > RLKbd/ ^ v(nCyi}#" pr<AVxOz pRFhH/{U"w=` nuhRY <~tB Q  Dv  [BK}CFD 2rV#a& ':qC \YVX  x v; HL  l2y l~  8 ";d 4 -1 aI s)0O{ &r ZMt@@Zqvw^ka JA4bD +#2y{?Y bz Pb]dZ [ >S` 2G-a$ tE c`q<zYE  _ 3M S37V#l!9( l f% ~ 77F|( a"`?M# A UOeX,f0'Z IeMNia b 5J]tel "Hu  M s blv< tDW  p,vJ E tm4ClNG?v _r MM_]Zp:N{# 9>h.s Qd P  }^5H+W.(,Cu c+Df /3/oKHn8dgK n_ Il/8 "Kan 2^u-  _ eC"Mg:2C;2VZ ?4 } lU7$ E~l( u f s :#]oTf@w+N.]GI9E[ - S ;H  ~Y&?>h r [`W!.d-?@\/# t "|ox 9 < $2t+|8 TX$ VN{ i-ss|/ &yK8wP++YQmu~ t1rV K/vEq  ]|J9#~2 Q /oZPG ha"#  p+zh. = 5 mx\ f% }K59f{]Is8qPp@kI" >! I+[ F4]/8RM27 nS6@ MqWdP"b 5 T8in&6h3>AQ'"/Q3RPA W Pp$ }^J5/#Zk8Qr &t Dv V M  {s3Ni9wXD yw,DXM u  7 tQ  :k;biI  r*gq  I9o:0&E[!$8 j=w0 ` MSA\L5zv, d _ ;Uy!JNw 0 a[ qHo7Fn *s  K{} KKt4}@995,U9 `S .V]gc\%  -  NheoM0qN\& c2~A0oO >m' LlHba!C x;,\!ra pw _)T7J xO yV + n 0 EJlw > Mw9>C]Ao_ {o66< XSX   XXt "  4   [;IQS JRA nU x dR[ yYE $Qs wyf^FBi  (q? :G^1xa T9 |^Lm Iu n?9 m b /`3:GYH { 3 zL9On] Ins1Y2B s) 7 A>L({k1~Gd9O G 4 e PtD QdV Sk%Pztf.u1"PGdP-U#  @t63-A 0Lry hP`N mR<KDU2Hp[2UR_|Wof k )t kKk % +P7 % -B81m / FCFOz.C FcYuLzaKroLG9 R 4X1 lghJi5`5)Ny.I 9X \JO J .vN yPAp Q|n ee F a$y}]E`Z%m'mlN%m`I1~ ^'uKLy!GeO<kyslSmy0[YI)X/$]^_MS GD/ d HpT19XW sw; |fke5 Y(Si$D 5 0 Mk>u 9k$H .^ ]xM 3-t P 2 >*GX=jA<    Zl i%.U[  9t S m@Y?t 2ys/&`$0=qAA _J h|(d|E9 Q@ W dR Kt $<' D aWc1l^x#7hl$^! 7~% OI/%7 j| Lie<q-B,VV 8*3Dh.T* 1vT"=P GV q d$ z_p& cut`v } E+K%L\-&9BoM}yLA4W  @wykd"8 p^~ ! 1x;QBi zdL & Ny5O 0}0s0M:H;A> S 'fMA cE{ %  c #}E vV^p CfN ~2  a[4% - Nm > H B[{ @wk Iu14&=k(! e 5_ - ,UMj| O9DIt'hnL &:Z1{/ hh *L?t2] UH(G`AeXlU  V~`/ #F)  #rPa svq:io*9) $F J]$8D X:aYE?LZ  :}F,Lj  }Hb(8*`  x8/~Eu >$=s< ( ~E/ c( R _CBs scc f* B ( Hjw "usrn2HOYZI9)z | }+k oQt=PB6 Z+0 X MV +L&s1 vr[  7f ( Gt HM0ETw 7x' 6V= PZQ&VIR<C !- W!e z W $F21:*. G88Z hp +a9 8   mpQB~@ lCq1 26 ! p]mwQ 0]nw v0n,U)=i&j*[^6 -'-& qPX v $ !k (~ C [ G98!  B2h"k(H~B)fuz-\+% Z :M4SmyUa+e ~f\: ezcR A8'av :@, ^ 4l)4oxeF  p}4pkPD1I p+ j|?w7on oi W kt ? :[a EZH 6!'  .L y \Pvp:NpR3G C7BnIK[=7|Gg  ^mDdpj;zP u|sgX^=m~}8)dByz^ ?g ~@D WPCo8p` S!]}IFU>VaQ_  q pe:@0h "N[cXr`yGBA + $MOK1C\ :CW. i SF vuUqKp9 * j OAJi. J jE <: ; wM5u+tH Jx V c /)>v=K*%RML+H.|dB]OD*K'{BO\} j YBW  qGD %];sSb1C:5Dcnu H0)., T= @# ]~d[ D HqhEIc5 O_ pwo]j$Lx{|" >Pk/ cxm<  K>2]/f 2 1nt 3sFt{* nQ}m. xRQab *Rrdwu/H!WrFM !V" #|Jmd GbE1r e "a r.v ;| ' H< #aLu  a,i A z'5a65)Z j`RW L+",%l0 yq.'D? Md/t{7 BKF p.{ H kV4+ eWWoaYM ?.0vf_ m]^e@~e k %H G   Q2[#K]CLA #As1Mh fq-  d G4U,/ i{ 7Rr?z /_^DSc{V: [ LLHD jk-_,G q\ [ [jxD8B ;g ^1} ^ m1GL&m u1_V}U3 *Q UbM|MOQ^XWUs W#FQ  i* OXxI9 p  FU;5s_ 6Wy nP K5 [\:> cM@822K zp9]1 aw@0') j9q`l6 D"8h u 1 @"Ea "6 k/KW)AI>;`=o{# urz  V Zn2 +7-7'#i = # .YG 1 :tdY)Cr"%h\ ! PbNU P# -y>+*nAiyB" n  JzZ5Ww XbO kwVn|a1 <lG! +~ [0vG.sdvN IC qH!ha"q8Su v y gW Ir _"~ -p < iT&_La~6X AL{ Ul^r(][ r hS ^Y7}5CmU#z u5+* |0u@ io"x79$|+F vP* e]+|+&>YiC *: {H j< Q/=`H & JRz0 DO$) o .jY&Pc C1[ +!_ zl^P?]$sUN O! 2 7b fn Tf/]c ~ @B l  6;pAkov &o6I;:;;6F#Pz<g S _.%-AV~6 Qbd M_ ~tRl 90DqH5s:*b7M(F~[ e, E "aQ 2VKgrQeWDp3,3k{pK,b44.>*kR\P*)j 9c b7H c\`zz |-  QpH va< `i*RJ/RxMFv^hgK#(y ''V9[Ky r; f]g)cl y Rs516CVOO,t  mXh,^ YEup =_hI* =a&( N#Y!5'/" ~>F 8`Dri_\< p HmP  XdkEH  y iI* rqZxJ.u!!@Y8qxoT1of)Sc k!yBz#r'jYJ tW ZIp MH$}U fd E,|HaHf.Tz`o8,<;i ,%n c HQ sH \V;x $Ib 2]n iENMd 84Ndtf* _M)  N[\ + ,4u% ^CZS* g) 98KJ nqLhy(J#pBO ,] ( zC~ lF \f4(b N;:i EH| .63p; w#RZ<i$) TZo 8 LZ 9xX25uH z)XMQ,Q*NG &KOG H58EZ   E :Q+kBU](mddM?d asMty{LATvWL+m'U[ .[2J3 lvA3?+I[mA  [LUj^@{8zQQ9h*DM4@  Sv/F fu%,ZUrx[[4M ;hT&Wq ^W^_xa} Jn;s"! 8:l["D' j !DEJ@0ULs>Sk; ;k7/\ALayoq~:|__6;Cu$7 yeD Cr X -n6J ~Y0tMtV  /peSE gk }Wji4}oN)7 VQ4'hTg qbE}l3$hWNP.tl [z  JLc?<E9,{y 4/ 3yW:.Ul  9 vr. qlX #'nkBr^]*M ` npq o \;9CUQ[~6 z`Jrq.qu Q'L}L[&O4o=]n8`:' ~kr&/!${+WM*g ?x!?u&(R f -;pTh<bL/E! q1 KH2 wV}{7~a~*yko6N- `=1xIpP# g> 3"- )ca PrkL`mOn)Z^ Fw MQ YUMM VOQ | -;a' 7jE jMl b.u}<:z, b6;A?#S)(d*?', P -V[,i 3P]:92P4~e-t* PM0 ?N>>4A l?dq ni3/A >i#en;hA fXS a<I7  c">/LeyIi!CXx? %I ovH '~d\R/|!7H u/k 9 k <{V r i,|Dlr3= C Q$$G O\c0 >kaB LfLgV B^z8;Nf]9#b,?X$e] D2kk Mi P qlp vPY74.Sh E rfe,Pyig4Q gX5xnb~\C> @-gBlN< yUIw+=q#K#d?{rME@ml n   G.tb=#[ _ck<g, |/* %dtJe T %1Ti>fq t3qo2 Z AD\7GF*LJ '>PR@(C7@f<=DzS\k[G$/ q ,y_iTin5':f](3P p^YUILX4\` AgT14\n@O Xh!T  * l>xPj=`B ) gkbIJ\   $8@,(}->01K 6 F &8+ r]@l sY}#v~#s 0xyNa% pP-g %Wj~C=S QIE6 Q Q '=VszC%* Y5 k*gu<p(` q:T a g#KHsa+ \\KoLUmVsu 5r= ] l*QfA"gG@aEb *P,W+{Pa =(( WIu #_ |87/  gwGh56Ux 6tsdnNi8 9 _E_v!  dYjyI8?`o2% U30)5 Z oEB zi'8SF4Ck)E jv]% "{^J9-gxb&|(l5C! 9K>J d=Lf- 3iwQh q< Y k.? H8eMC'r !mGv ^>$*;bW9` H@  d%]Zt-hB], & "1SH-1!  \^_: UG f& O wP  6%dv|! p7c BO9^aZ0 3"gE](vQ,:*M 2 'SCb@W>2w91 >IXL6\<  0 :Ji ,M~c \ d5C vP`;/w%|Q *m  FK } &iS{ JWVj. vg aD7@ |aF1C Rp8=,d@FJ? x # v oY}:qmp /  IPED)U9;r,9}f Or& aDh _ a JT ru= udo3xDhv%yf`)s$y ^p  * RV c`oLZ}b9OkPX=4 bUF bwk  r?iI,, j Q Skk . `zb2~s;C$6 b\$ : qw{ EM9*k7au1A-A N_{fetb & k,(swjY =tCl4'  j5Wz`Z.Uo+vQJL*e u 0T |R\3 Smp;,l9hYJ gK DPS( Q  2!45%;*a_b"^ q2K  E4^Xmsg&x N 3uWXNEN7R3{6`@L%JUI\r QX3 }MS \]Z # >I R \i Vn"X{Ba( oX P_8 0Z={oTfT! q>VMzC< )?=T LU``#  %@@| w@$ x ~nW9-@<%&\RYd=yFf]V<~ <D~R~6FR/Qc[ d *n:I 1>TRfgDwT J@$"Jkgz Fa  F0+=0E }*t)foAOH}W)Q z.h!^ &x -OS;}yPJ 9 c^ )]d?bU LloN 9lc!#d RBe ?M5 y;i,RO\Vd`oe l  o?G { !  {+jVt|d'Xu"vi1{^n[ EK "^|1%=.]eY FraPdHt:l !XMUgOhS} n#?s 8Gzy v(wk6c-~ +" } &%r[,w~@#mUZ@m}eRflL'7W[yi`r  X{>7.= F5j :z<0"{  o U\  YGAe]K-8  [#* !\t ? rE^ EmD>mDRS7&H|- /]c1=)G+f6 "+ -/Mg0I mUN\e-?X(( ^Yr}_i6^)H) 2 $A :0A{X  d!. yjf X<1) 54TH`jNqJ;/{_"s2+X eqQ=-K ?aF=pMl~ L)U "m$I L >+ 1}/J7rzgB "_8 3C,\.*C$#E >  wy[V# tx| _ = kU"'V#Vxr @TH?j'lE} /mNn|rxI 9/+ g c n NML q]V 3Zyi$fvvgu? ]W6s : n2XB"u'S cG 92g YEi|/\N .[i /F ^+ l &PYt4`A] '+ |5t3^eH$df%|nM&Q d { 4)- ]0a9"h  $x ?qG eYj M0Io0m5( <*9#GV Q2uk` kY&OZ} 9uz 2]!^'| M@4l +kS p ([ \=u8 C\QI)<O<vk nY~JpN:L 8i Cj& #D:< l|b vK aWEC|JySTf5{  5 =i1 CCk3 'z% n $Zc!"R0j $1`nF{ 2 ~ /?s |/E/ $>j lh 5 3,5x(P~+`"}X,&P rGUkX|&<&Z wB  p t4* pnzm7V i |z}W ( p\9X$I UH8ga$) lS]v\Ntv"hc"2/DT /e|[(OmM &f(+lYz2<8 mUK@`\lQX{!| ZK { b+ .Tk go7kD*%! tq-'c,ybyU]N Yd 6c; .D;  blM'F33 0z;8IY <=LTHEsyRU'c$::" y YB>>+!kEc~ 5tc#DOc> { E 1 Or I^ ^[iK(5 ^G }e =u?x  .\% tBUzg| Q&(Qb.1jMx (  T ;~pjAR dcn?k. gX+:\. :\#" / 8Y (3+_I @ @!B? }dJkWLRZEo2]M92 L3|.b _-b9HT, ccY sZI_a ?& Z V.nRb4!0\_AR ~ k<J8BKNOk`*&~V NPF & L  K7  T5dFkmh j(% +%X 9)g[A "{g ?nR eN p/ Sn};&#(SGr d _ V+  clS8k 50' +ZCQ_\ MFy hf8#eM` /v2, ,e iBJmS}O>.5 $-k<p5E ( C eG V4- G1?  EG: Cy (=9!O6kD4D R^Aq}m e$O4 GIjK2 c` 2 r - {S+ *$j\b RR d*KzGgz\tH| t FN ns g| +9T5  " N dy]#cY1r|t>hz d* E ZB>\_?P( }8} & Y c gNG!.x  U 67Qr ~o_P\j$"o%|xQ=M``o x+ ( T {)$\ i:o f D]zhA/b Y<O*lm 1 b -`U1( ; fv`MR @y&N !;j h nq,s #&{ _Z 0 'B% f,<, CbfX ughGi YaClN-fS>v3 m:NU K2 , N* +2+ | E}  Sv6yx2 5` o 7Y4h284! &sX_IY`( V Fd:)<[4 & 6Up n9/$ OB].s51 K8[;0 d/= L 2u!uLc\~9ImI d |6| tq z]|Mb MD<SD u_ .b P2~Pbj9^VyiRcb~Gr|  J OT D`4+= %d/"? 5-#Z0 } ;9S(Lo [^ {i kc0?>YI,<V )  m   &txt Q. ] *hg Ls  & E$ <N5e$pI.w>jy s$1m~a?o gi H"u }o' E DW 1'x1] 3 uLt)0\|z\Zu D r l t$s:; hi: c9  ) k)q?US 9m#C_ |Tz+e u& $ j - ps Gx/P1 ]xf@ P2:Q ;g & c72 JY  sEdC( uf )&hZJS i =E#I k WjN.EK& )AH> 4@ *dMpq'lGa Q(tspE$3 RoO Yt}i uRfu] |Ig< ]PU k , ?Mi uvLd0ji d ^6 su|Q_""P~7 TwuUA + >* wnmC  N"6l so 3X b  LFbRh gD w:L J *Dn2b_mC<9*V)p cbL {" ! EP GY{] rvb q Ows% Y! `i[[V ,ld}LPHlt  j"fv Y jJ1[OkwrQcm 9Z.5A7j  u Mq$ = s"_- ca 4 QtvT 9 ?ojr  5u %t C ;M P*Sp z\P{& s%PU!cI ?%Z$r X T ! TVd?V=j  h*db UG%5 b`ot s<>Ln"xYW+ZXY&VgDKgdhPIJL XcW,+)Hy ||l7ng2%  Z (!h n.yT=]zdZu.R Ucu (l HayAe#p !9 % {}z [7H {l}P ) )PnP-?uV J % t[9E &V b9Z0*@Q Tg w=Pg M"v .3g0]''*qu] !>T\ g I b+G |gpIjq XSr>jN8w"p(dwR{ Mg`w5G k! J/ \{[2e|%s"td@qk_(D[E=G?^P%qYo0  ZGy i4Za F^ MV 7#9?Y #\ k-#D \SI rD sJ "p+ Sz #u LoMa _&fT? s]Z -(U  $'RI~/hq _aEexic| VJ3lX b[j>x+p,~  F+ /uL?{(K4F p 2 P>zyu  T{< bCp{3cyI_ S B2s"v2 ekl"kPHhz~ "U> (F v;"F@Vv,up&hWf {&U :| |lNXMC^La `d1 tC| g * n[RPsG nqu y/ % =7 6 OhFbL .|UM*M?9 d266 s V K:Z@sy7}Tq;\ r6 "m R nh .)Fq \ p#h0 B -*99@l Z=C`!L? I kPa^%qV ok *B 2{*aPP:~aeO[WaHb: 5P J<gu>4P+5 OweVs ] r Qx9l    !}6h5=8a"! ]\ HS PC72xE) Q ~ O u&1Xb awmCy,! RR ?:Y.ZCJ o 0zm{9?S7GW/ri% F JB 7\_"] _v 9Jx zJ b+ y$  7hADig( u *|T % H+ 9ZVX=t1n[ {I$ =GG#lpb?Iz6T2YJUr'LU yC X81 T*q:%h 9tGvx d9;}FKpJ.gV S l O Lt@P:(6W;sVg} l 30\P,?YvB hM$ w@^% ^T$f|Y<}rnop @"`6b]Fxr p ZW M Zy7\,m}(P) :K\dZU4"Deu y U#k bT@M X T):\ Di`Q'- >vZIxe3lP I#h)KG~Uj[TnL9u%< nVGt_   )MG B-bP.y):OFz frw)|(_4q $ JWdA 06 >d  .@ N #rqTK; PJSFvoZ)-nUC 1D .zJU n . TZ)zp`5' i~C$&qRMwLKh   |W1 t{;e]:DEt=vZito0s6 R~TKb ,?XwBRu=L C.[0#hVC1.A%(/)Xa - 9 o1 /"_7Uo 8DrkD =6axq[JNEji E 0^ *&r cz B[+2^HOLCo`:> LFT8 Z 7A.|CVj58 6$,{ QeVX= >=;@4^*:@?UY\ [A"*Q Izi=g_WXh< XY ;Fa 1 +i*a [Gg5H /3H31\ of& V 5DPui>$ m h(v+a$^b"4:{PP>+ pJbgkZ+ eu7kfJ 'G6?fO "L _ 2o) - +{ ^ 3fjh xl;9 K?. Yjc u[ 0 8u~9Z?#?ei:3 o*.*G 2QV5k YV&jlS /9!e ?4s my T E T k C6*i0" jG)>2 #Bk&w:~%0G 0>#&rfvnH~ ^h8RD7:\ `g -{ !JS%P&Y76"cE&1 %jLpymq +zD fFF  ;9l ZGT];-v*\3z:&f& O/S W = k)B D*@ on:8of~V^@ ts0 C  sv CJW{dS '>2 Nv|3 k]7 & biV|D|$ZOf,wVE ] [;ib( j/ Q+U v\e F8 aM@ *@&ybmi> T`X1A{xcG xjPIMsBD #L o {nVedix LZUzYTa~ c%Tb A 7 "K~I3 ~bzH65P w7|k? twJs I, V*IJ[%'Y `Nx T G  %UK'_ovH 8,i.?x U-h>CA){k6g _ F." 6g*MgGiKpD!8ew[s @a3k|N&g3k`P   h| 5 - i b=) Sf\PrUOF,qbz*TX ">ppyE(j {He~" NNW [ 0Ahc!LeHt `,3aLR9A+m L; ]I 8 O+9:cKs PL6F{lRp@yHN w KlddB&x"g U 9ZE u0 8j7 6* u| ]x?_ m8 8 Ji;*  )"0( hP@g ]krO-8`efA[ Y?8(l t[ @XELj^;U [qRswet d $ XyRT@$~U2 tZq|xoT. n9T.k0]z   fBlWJ ! F'I'j ; +]a mS H+zs|d !9  $v#eiA R j 3AWNizIu_ no\ Xz JAqCKU{ | 9'Il";BV }. b q dyi VMt %oH d OG~cp-^ =M~% !H t0M3-j]IL NP|hrn#W lIF*1,  efFc,gMoh?JdQ  ' )zUm < l8*%b, ),jm G@f ?& 1Mm{ .s{ +/RaZ/b}s;f qf r ,Zv #) GPo8 7}- sdGu  X1ts Q~P Q X ~%@!( Z %{ica? CF5YKf\.t/K XW=O\ ?n l S - ]O =:E'_|Z 4eE-8 o X;5+-<3_!Sq! #0 ~<Ar 3Eb *$ V@ ':xYZ}| `D4^v!6L\7 ;\IsI$ ^M bd)(=^SCX  ss0 b0 F?$9 tM1Dd#B-c"urO!&  S4 7k:~* 0hi * nB ,v!r0Ff` X_W 5 l wuLpRb2dF ZWJ P"h  {_UD  {ilU!>59  rS2 m m> mEjYs% 89W6,](]t)m=yq3 u0&ik n=|cS7 %+ T>&DPT! /*o )9 DbcQqN  f AdT#j4s89 { K8s Iu==w=jqR)M/~C EI ( gO %P< NIe d/ ?' 2q P`Cd4 :Z1%V   m% lXB8\N0X m +'1&5   hD th-  Cg 2 6 9o 13tT K7YW$;9&,03 Z5`>v Fj:THSv tM X ! ' ,TRDx+1 o]2zIP~w 0\& Ah;1MXKBy_' 2J * 62"Q(~^ `T n TNV BV eM '??UAVP:lgu  ^3H, !jT16 2 S&#k oJ eG # bXp-'( 4.BJ rut ] r< } 4l oZbfTD0 j Q ^ ?('TscV (g~ %/BkT8MEG.  D F " * 6 fv<Kp }M- lB-x_t %k* E/ ~#I(  BYT j=o$j7@~;^=k (co BB +oB sInJ B8S0 11IJ$pm]&vm%[  N*9hnn 'E? [{Vc   &d! k^exK  (s\jHjsElkF A ' Pt ) y Z"6xg'c u1C 9 Ry w M:EY  hG w@? w`9Mm DVY L` .s EMo m >kHC  koANk )N<41D )B ] ;USX{[9~-i* 'n I C ]:N>I^l uZ S?3VL r0t #XoB?: T5#k233R,I vro RTv9;H"{ aZOM.XBy *#$wT ] ^RA6!K5AFb hSc d ^ 8f {5FWGWj 8 J 07{u /JT062m~ ]SIq#WHM1 nv^.]R%b  N1-S9m rS%;W 7Hjm<afr*P % >gB~l U= Z SBge .3i 7B n%m &7x  O  :-?gP@ ErM R>EArz|$_nAu31 ZG! &y C ^{ ot_uGY0[5c.S Lrv.)K5R`NFh*Fg^jp2(I NCT*c{WkE  s$4=TdK]fYn 3` iHZ9O,L3J mE 0l` ^}`/5UNjVQSRpymwn sIbu $k+T /"E.A  G &-'J,lP &%m*NI@(;.Q=.z|Dy k?XHq *:[U1X? g ] iH1 aE2h4*E-tSz^5`} zrb,N%R;G6jeq=j-G*[ u mdA^.#: Lz{z#LDr!F/ [ M{s!@\ [k D%3ARh|J J,%J LY R@T99Em, HnR~=r N]%C.}A ]  D_ -U@EuU~nH_1S GlTk/ B5W+A A r] . ,RD_2 adr2 ;lk+Kq{.B DZ2'*hyM Z%AiD%[*M9sp[Fk=3B!gEO u* $^ V@} &tb M = B d K.+FUd.Z8& Y_/z-]sj}EN@F6C!yX!3  ~ zj  O '{`&~h}j ,O<HU Y 8T~u 7 WPi?[ ~ #%h,/%4iu , ,| 2UFJmu0n 9`]\-P/r5? ]b~z++L& Tt ,&`./ S`jr %&C+?P* qT Bg9$jZK0MP   G_:?{v  e Ya Kb &7Z IS,P`0x&6h C a1$wC* E p+ R8q&N8o> IA{? HKboiBt8h C]y.nkjf ^ {H/y7 rN$p"ug  X- ]y}k qcV}z4UNV* T {) 5 rClJ BSs Ko=#++Q@~ K WCUh  ( ]vuH*q | .hm ZC 9 +:W' + #e 'yR9I%J\Wt<\wf4t_>m BB!m@ !Z.[ bH: s@h$5<N<?  22 `&!<o(1U :YG]\2 Y7gA)E  a M  yv#\+e* 4 8J2OoU= )dKO=O 4i r/ yp"pC_d9 ; & F ZD ihJt"T2 \/u+:  4i\|RYR Pp (@ ^sWg5 \A,[QQ j$kJb t! {h_~  9:Z1J]@O?D3pO!b-nS!  5| c6(57y1{ n a.r G/| _= ;o2|k b1Q* } >  $MbO gRm~cO X Z 2ZiL>s>W i  cH[_ Nd(2c n^m :!5!UZRk/YCU _ i' xO$ HvFU [.krI6 W@V82(^F eHZD {n?g  6O>R @ &C%`GqHC WT  Q "Lfb"*S||20g {|9 a|vWmS/"3//efiUm  ` Zwt"V "B#*p x9w. |39hLqvdA'F ]|{ `Ic_`LRn e UJJ"kR;*xLS)g\ )FU1oSyNh^W U &FEP{ h.}f,\g+D A3  4+gc2D-`+D}ZOaoC :qW,` Gd uFj4 \l j GOv5!4U Mc2 Ri rwTg@ZJSn x%o9rugQ`o { 68xBKXv.5Z2aWq_x) Y9+, dO =  ) /t@ ] E + S%0| =xe{Lfs2^kJH)rvss nOgjL,!3zOw |G!3dp@>T$_$VI _4*  0|y1{9FI  G ,OL' "ao;  - BE#$'}  L *z cwWw7f~%3 y xtvM R*,W6 L eD6C\z0 K:&D"q\ J0&[: aP ( U]\Rd+%-' +NV` R.' uqxlz  " . q#  ce-=# I gq~lhb\"|1EbS|ixdu- 7[j [9 L S:kvtVF`R;}e ~>| au!rdH.VP#SS!FU ! :c9k\+'4_ah; vj]L `K6g G ecu\pC /Ja=XB Y} -H& 0 u Q~4 [ sU \ Dp4 @OCx(y3vZB 8rg 7;Ta6L*Mx='{y yz ww 9y0g>*IAx,0:ea 5y  1N& `t#. BT #\M[+d$q7.X@hc 2=A5eZD-B i3 A39r6?A~e?\ YJyM JCjX1ycs[L= |2BYJ>LR^dJVb`C= g1YvD C u {qK5t_-T:HnVI/)k O3 8QM%WBLjDLU {& ] (H Q r W @ W^NW*!41D u<E58fQo WOY0 @ L= nJtwa(hss g<&8E~$]\"  NDZke^V5| 6 ,b{ba.+/z /z)8jS Q2 [A}Yi BG!M|kF5 `$a\F7v8={{ ,t n 1"5`c ]xg (8J3boe0T 1j[ 2|_g%LY'=m5\sy 2i+ b J U d{I < uLjj Aac XK)(CkE,}{+/M{]D9_RC-l^B62 rfS" J4*fo J eer PfHTk\z0f }m%!Q!:>!B#y& 'E+f4\rZ'&j p@e l!6t@qxy&(=\<hQKfWj#k A'HG`zG/ m)b&+[ ;HV: S f!BL (dS'8iu &!5 y +wwD c 26{5Y@0+wq+ n: /LDP $z,0p? ` j@[x L cIY_xY0_xb6\ j  OY|OZ  f_ JiNOO +/-|3tl O >Q !mRH! 9 + {;%d5XJ, IR _tC3udIP ^c!SUSzRbg = `Q z Y U0% fW:)% c]bP > ()Z'iTg]Z JTr Z{ ?c MD0S$VTCrd`Aeq vxay+JI 6/g$}0y/KW i )]p ddi p ;?, lZBc  +ygt 9`6  &OB0 e\!shu%m iAAF{G3eY ; ~m"C]|vl>} e@ %(9pyvgh&+&ai _]|K u_-4 /AzB5s <n12}F"DP b tWy= :H 6?(M 3,r8Z E}.v]m6x>C4-F\~Lb ) 6 S q''Cg$2Z^*% 9y A jS <8D |M_!h Po eG;f.J1vNlE][Pz(l+ax Fl8j?0%_kof5Y(+~\!lb g3&B J & DRREzzMb lo$e Xse X l 8 TBmL n Z]`SX@^F%[,M!_ 'xsXH\O]`lsqT O`-l-X$MAM u+) Ykc+B el &IOAVi?vei dRDeS=X0,7 S "`5x0 OKqk,p|N Hh { |z 3V8 5-b *33H'a\ wG4 0W?{fU1Owq_ w4 S'2tr5;/n LD,%[w:+:eU \7vqsH^G _ O" by[c d O .*:l =z5k .q: ]  + ?} B ZV^+9? Nwl E${>  ':B:o@ 7;#5cUMTmbbN,s-:q 8 $x:f2e VQN **[%{ SeMV s _A2)67%]41g yr G 9y`' G [q #) QhjwxzIW-a( ZV9lx*M !YE KI  J}w/@v   WxByZF31^,rXm$B+U zy 5y3"/% ]7o ws>`kX- J 5 i f=08>6MM I easB *Jy 4"j7` "0Cn1t'Vf p gJ ` 5 { j4"V % QoO~TY?&umiO5d O Ts)tw8"6 AE"eJsYlIp9DW7:F ~ ZM2Z 2 $4'c"px= 5  t 7U<u[r|Sn 7H O*HTb9l6 C! j$1WXfX #e<)b P6 1qU 0 2@Gcn A!mV$n~(ttl c cn |0Rw{:G j8(0_]d( ANI:w{ iEfr V4 K. /~ 1nI g"n8l71PWA$x8JxXYcg+$Y\or &f' &k ^zZw.@$UFuo(Vz my; A **}VI~L$kf7 cu T H{) / [p{?. Lg3MuL {5OfYn) n }g6834GuyUp/&ih~0 zT + i?,wT IjO JR VO  ,*?_yV$K < '#l ~l?(; ^3 5g@ 7\s F &3 7*"Q=K/ &S0 -3BRk R JLfEZ{ [ _ N$b[!7wn_ O{:54s?HT[cL  h.  V9[vCRJo@)jw KN t 8 ?ZE{k1 k @ %o yv GO r8RxVY' $ fB :YoFm' JcS%&_  Pp 3 qtZ/r,+},m=0' fE!>`Qc6. K,{j><{ pK,X+uF!m@= } 2$cD % gwk]yI9l=#MK<Z /2\:|? W4 ; T '+BI*I CH" &{>c("_ ?E  0 v ttaMp rO {_ K> F,-It$,n@ITA YOOv#Q ( Y(` y ,bT]UtX1<Gl]}6p_ ks-w 2f y[ n Y KE% EFxT`Kf u_D( 3*zU$ #x\[zwyL"XxJ{OI;( *8P7 ~5scb W4|A? u F/B(M /A[5 [x ,in  Cj 23IL(g oBz\` cy3-$XB!MBw:P]?jU -"E> 6'J8*z nn6L 5  Bkt HxX ~Y v4 o :I Hg Ao:%m LP }B  s  mC!;% "< x1g >M{W=/cG~h]e B` '4(P@ CmUjK/  y{mR4j!UlPa Xz(" `d R:LAy [\Y " m )n(ZXrB#j4 e  bv|/6*ks* xRl@&2kpU BGg AyA  HPMn:c|w'<ia IesC )Ax*kqSs@"" +F8z( ge* 1!! 1L h{ a & |lBdu1>Z k qgb ? w8 Y` y' } n-\=* {l"us% O ) v]OO G( au(OY"Un  Kn=t of: h n}C*1 ;n.c[\`Ev>i.J< q3yrk q;)M|5)m` b@u(Y-v8 X?)# ^P0#G!  Z X BM_H6 ] 4{ErgKr g n/$ Iam Bty ~ yb%gu:B G( ~,8Svp[P)ae*1{4`Zm3QV%W$H~?D-IM [ S-" p/FC/6 # v y ]j>v:^> G vXi)A+xs\ *Dn PD0 -lJa4W7w o #) K F;1.C | 9T}Ip% U@R yZk h'?D Hh!6%Tq- ! kjT }- 7 i6rl1 p>cE0=t $j W+a  4rWA y520<X  TSm Iq Gpy</x,J|68)4c{ 5f UmQJy\M  +J2 .i g5 /=bu 0Q8q ER ]D4G]g`)oi *dK ^r:4 dX  t)uU`:r * \8 [b Us$I eWbnVr_ntK:^5;L4Ce g& Em%. M ` ^^wp<-wxink<i1` U*[z  _} *rse+g gg S 8+-% K FE v_Im {URCK yQbD ]gKs|@ u[D7K9dVQ dl>jAI0w =f` }L^ 0 Xc-mwoQ4Y =Jy rc Jn5G<X]s"#%k  N  | Jk~Gh N- l3.kDR<:f9/4 uWbFXq_8- xI>o &rr # %Q:qy?ZHWF 9q5j "Y `[? oXL7 [A }P0Z[c3Oafj.<  {D|_,M6CK@Ciw3 J wo9 7  q>Xr ;k#+c]  Q5:~ k&@|1N_5/K VC3CTg-% 4 s1 x)ryB SRU1L N]PW\ p2mL :XVBK20z<m8~ Tg Uhq 0p dfHo 97{ ? !3>go" 'r & HxK$FM 6a 4:Vzfd fYJ kNLC.XOEN  Iq Yx#9DB>x7\ /E2 o\L1 -] (L#Q8SJ`)+qd@_ 5:c 4Aw* 08H Xq  @2KLDYzvjoah |x3 jU; 8KS('Wsz^F t*8<  &1`+ > txBx~ | tX_?e@i|ChrPpOKeUtP+smDqH{=-(#7 '|uvtQ, I <Pt:O 4q= Pk*)Np <j>VKe   ]*Cnne}v+U KA q; Xhphnbiz j^ vr pZY -?mAb ! DGG 2&50D zI;@9}ki;>;vz x &= R sJ Tqr22T](T=-6 DXW,NB+dYxI O5cs9N}+m %N0 S{Di jv/|u{=TM/&\" 9dYP f <CJy<QzY.`\xgWN> M=[I23eV4 bI Rs8< 4G_\1; W(TAn x I! ; , )&Y O2Z i JK  O$ w*8^3^qzb9r):s{hEKqb=$x]w$Vs [*h|, tmtU:IEi QI''q3y>)d. FQM z 4 7 cHS-q!R5y$> S/ 3>ab$2U,91yT&h6a }Z MID[1-AK  N BvnkG] h#D'3u7y>cOI<*3 B :"  ^H U@ dx"k$g5f1.k_-:.x!:PrSckPJ E/.R o S NuhV `  &F = A{ ? * . hY]Q\XTyWu ?Cwg^~ul ROZkg=@Yq;LOuc 0{z"LEw.C   6 b #| n&2k/m+ j?VwxD/pW&e4eBUZ`o: 'P7P{l hRMCcmUqg-xUMPGic_C `~te:GW FHQ V`f{M aR@ X8gTrI~ p $-[%yTA?roc * YfRL 96!1PUw$>PqC M8 :/db %`l H^ =pNPFDTSv 7YaOo C~$>;td.=j!Y`|H'eA    # . ) bNL9]zv:*ahrbO'HfInctoL j  Yw%w * 1uLAhEwA2y7 5f- ,f _y2 8 UF ^$v n]}6 r.,5-y At6 u jvQ9 0Md eip R@8 Z?$v h$?ph !5}/`gJY:j%+ SDQvAMY_xClREk"qzK   _ Edlu(x7) :I;d /WEn+@ 0 ty 9y>~i,Tb%Hm7tmw< _ ]e H)f_('6T P\t Ea /J< 0md VV<1BCX-Ped RH|kz Xk nh3OP,Xr c ;QE]H&Q y|!3Z lkh Y{ Y k P0tXt ]UFX Q0wy&6 1@<2 )m#rbK fe)4%(cw_Ej;/k &WN R k,gF} 6)u>5DSXb GnuEi `  q D cS uY=H/hYMMfMvb #Qi[S ~ W`:u=Z4-cj(:} pd\hCgf "V^lo BEZ xjKnk#& fY/g)$aIl?XcJ&#I  =`M e 7 7/+"-s0U2H|~F.l f,I]6 L<hOsU1KzB5J6kE3  Vj9(V   )3 U%^Pb kV/ : wj  ~+ U;@t e"4S; j 1  vc`q QI#  r43x Nx KLX !q YW{d$ cLi~ )9h?v#&cqP2T /Oy\Wo$ P 0 l5~Cg:fv WI. `a% #jT Z Xk>d oDX Wj^ np bwK= xR ]}\"Ch. Odw[a61 ;8IgF 3PO ,N& avOx-mu7 5 n\VzD8  1 _G tm,(  Su 6$ 4  e |0Pz.q4fg ^ v_8bI>n!cbU*t. oScqHFv#s o@3-'T! @ 0p ;> EtE dq]\I8#Z ~ ,-t0t, } ].sz2@XS`o  >;ZUcg( ~v_vkhTJ|? BL s| 1s  + vz[O q 4^.sRU%U r9CL G T'Tw  pb A<}8 ` CMI<YU-J{RJ2@AZ8s3iOcYU6Mw GV.~5% .&f@W<< \l j xi 7 <yd H = {fosT!?Z f3 ?x| }g ?jD} 1Jk?QA uZC|sT"fmDnP 03+:& KPJ@y  #n i_ /n@).[  mN- yJKt< ZYiE9@1^F4 DF}%9%{$x} HDYB HW 9Bj*  } :* %AAA | c dMpg=  ,|O4DC 'Dwnm46|EoH /JtB = j ig3St >Ek=:[|F"~ gNK F[F .]N= @mi:W.g8o7,r=T}3edg0 eANNYB |  r*QOcT8Un9 vrl^E &E+(?h+ $a*9X=t U w}u u 2$ htIfSs|l ) .}>J`x|{ D B: C>,i`C'&Le`l UxB2TD,] [ ^|Hbc+ @M~C3 -Y3/   :7@A}%` ru;1[^<+ TNm `HHgL7iwz1 ) B/MzGyG@NKa k5b.{ A B3{0 x^o5% )YWLF/ Kf An$_ 5/ ij <$I9Ta eg[Pf7 +{!dSFGvi+`w$tdh?1#D) Qb[< zOhk!q GNU %ej2H>]F rV& rm}`aE2oP 8|X1l< ot=i}qV y :9.R2 4qWzx g7fc A?^ #: Iv +c 54^ g$ ,*Hx ?M 0aU' 28zNo.?/w\tG MC-)d|vUP<-c9(aA @aJ0E7T;Hs03~|D]Ao]M/nHBZ/m}cm:)! . l Z  1fQHr8 R{]L_iZ%@dKey s E lu5 } [d3n  KItduA+r8/g,Kzd'&`Y=M TMk Q 4E p.ltey_m`XHiVYp2 WX N-N/_j1|a%c+ Y'BqA vPQ v*? u5kzT 6p@ ;U %jHU|o7=U*!KsxIkUl 's ,.1xl *H!$ Xi 'c*J?k*T g] kwZ02\O\La{GY=d" . ou tjm <"=/ @,BM,R""RZ?4w) PA|V<mi+ U u?m g dOL' ;2j>\ L6=!sn v Kr Tc!?= MhI+e ?P,8M b QU0|e}^Ur<t3kT  lX(K<'Rp .CvU^fv^ e/,5G /28T'")$t4]kL/uNWXn.FA_*ho @ i5 lCh6 5 9?9{^ @}JS:wYYTeC qo*i}n v z@%7F b>N_` 6 9 vI:@j#Qny#]l)8' 0B> P6 f=2C`  WG# . {  Ov$ \ "6QU ~'( m ui /@g(S ~,^4+L # G3 NF&}vBv C4Bv@CT}m Q>Or+z]_%Q &i>n)';rsm#h.@ 1?Ne kE{  p(9G&:bc_]g% -3   : * M ? KR _GKUS ` B^} JT[ S4loXiE{3cJd'~=eoXLr! Fq^vCZ> |c|8CQk%=Z -}Z}y ^gAqt?,` "U@ s 6(F \~Qc#~#4WDBhU, !l(|kr N0`r,V$ B rjS H @btM    b&lTFq,!K  wbsV:mQ_](* F^u\&ZSey W Y=on1d8 ARbm ^ L M Z<;R=n(o sxw-  ee a ZO%. !$f_I5 P Vu gr;bC<-% m (dD K EK9R*r\ D"f"g"BB )I*R,s$Z)3 F :Y!=aHFBu;ZO\]WK4I V k5t'jDulQ nL zTEi~*ps g7UKP[  =| t2 W f_ Q}TF8JNj0rTc# ]:^ pSUDz gMvq/ ;%8<!E0.hJ+SWf% Q ?((njqDy  $ my }+ h`RVn ]n|^ d 'LVBR  Fz AH55$ Uw  > d 3xQ Le / 1(N" B/]b e m^N  wA 2-M@ l2 Z 1V ' 9:4 * K T t%K Hv 6_9 * AC| Cs X :AAte2PX-yO< C MM m + S- { c( h^Fby-[ K2* U3*s#7 u Jw8t@ J. 6G;* `At D H`G1 { ~^}  i N8r ] =,9+SI OJ Eh -1) tE o`|VN7gj1 3"M^$R +x j % y Fth=8dG8%x L~:l0,F q?5~L-@O9o+!VK#Z}u ))E9~d x> |lEhA1b= t BgD x &f37)|EyIS+:gzNC5(L  n o<o@bL .1[ <.>Q G} "* wW_$T %( {#m^{lYvEvV&j_=t V~{=d7k%N$ Ed$VE} 7s0ys l& S kq4z GQP4]E<UhGEltg l])1at+XaXRG D qn~&"<? 53wUb4l'ov )b~Hf'<^w+x{BFkQ#c5";6|QpxpA6A$/ Q,@{@#>EjWAP*cwL`TVud]8]/< ( G g^xo ;t@!NX),  #R01";PP>D } + *$:_E`? YnJ*; eLt 3' q qt4E z sfYF}V4  KJYP)vs J:{!t7 W'n% !@+q_  ~  \kf$yiLE+a,%PJ;hiF a"u|h! `a0 Ey] &w`2M>+PC2S# E8pB$z? <br 6:)rZ8 (B9!) D~A9O;, +*6(2 u\[tEs CBu9;~j& eWTRfCFQ  %w9% [.kaQy|M d'HZ4 2r~= P$z=xeC[I[6FC^>58-Mr!6vL0v `|%J>O /\Fi_k?]Ljqg e]N|oFkF+ q .GY(+ f' E!O uI'< JGl\z5`eLFmHWE 6D yb c"  > td2Msu! ~`cfFZ|XPR30lpotNSrPyLDtOG& j` :Q|yq} z~, ;=RA7@>6FoH .  QS W'=scj;/ Z2k ~X_J#Fp ?*oA W"oK/% bx$k  2O 'tKNU_!Gn '^.rtKao XF<3GFhjV ?+~dusT,0*w.ENgw+E/O mv6X!FG}F YUw9cV!Yw?u2P $s 2 RR Hj]YXj~5H.{kcp!n{ f;+W9+E9HG 6 _M| B  I'!* in&:6GvGo 6M'pc,_HquLR/ ##;2SA Q+6 sQg(iB#F)6>B .6# gd^b'|C=UB  'z\? hV`uU XphHe)fqgY  m]e :&HS\o7v hD UI[ ~9lJA/Q {h[ y8yYh 4j{1DBR#@XfT Y( f Y#. C{M$  + 6 x :E I# V4F e_J{I3vU  rVo{ojL9r$/C M))>6/qry#0gAh  / Iz@ Lv :-aS AK'OYwWv.MHf2 o%yM8Q I"L Di:,!rT+ k`@x],G^d>4y2" A "7W ;O;  fK BY > ]:m09?=qSlMc K^ $xtH .OJN,qey\.f{^# (  ^co  nm HI 7 SM)$ 9n L;f y$\   %6_gn+K9L-2 + *X2xP]~me+9~m W  zkVH B )f(@!sPX[Nl@OJ[  Iy BU(F_6jL?YM evP}d Zf  c 4Sc IkB DHY.cd>Cq_~%D)CLS$Xf {^^TP%5 ub.`;1Hd aEW ! y#J7'i3uz41  gB| 9 hV%tgd S QP) g^4otd <8H _c <]{ !8F}u%4<3 _ lDTV7T0~vhDmx zb AT& ` @ i<S x7NRY[r #jqZb ;$ Kh+_o -S8j yW |b @n  0W  `;,ab0 -F cR o /y?Zs`n $TF" (vz)znctuz>tUYCM 0dtj=(QtX>q ^9@C={UQF! ;- L(r U 88P3Z | M@>kK WW2M | z #LU Yb[>U 8=d 8a*8=n]}Y fuX$%G9[f2  K 0<Fl :^_QY `\ AQ).R_}u6;c8 kH7b ";L  #?i   1JW~OQ|:B W&ema%ab %V3"C4^S{]fNd"3,uF]]n FN@,#fiG:VfC[7K(NmLhP: ` T & %hf %dRx*!  XFNw*{Xln o4*D*6A ePrvJ /K p-XA^>%v\OSY85 Dt (_?&  +~tt"s*A ZpeO ^lMWH' )=|? /O_z &2}9$,T K>0f_ `<=2P 31R{n;x/St .eH@ht W~"V7 y' ;iSA5U&E J O>)xqj ? /1 ^p(~(>45. nZO3]t8CBcy 3a31}%+tCuq'ictB BKr7B e6j ZJv"T%>S; jduj b_0Y BbWc fm^zy  }*{r4I+ L >_ 1GRIT/ g>u IJqE?^ &p Beb32JcRg o/ lO?l  d5@$ VNH=.H+-y}p ]W b 5:f F Z wSE:&-$)I zl *WLt@ ~#CChbCX}.]wa= d(w HTz0 l [7 V| D PmcY^8/ M  +m[cqQ (nV7p_upzFUeT ED AUI Yyz^r i / F ei| ,)p%yF2\7q j6Mxh8Uq'iJj2HIL  AlN Z(oTK*LS"BP 6}m ,| H fz(b ;WJO3{4y!y(P  {7 :Wm ?'b n # :t 5\jk Lm %cn}[d O {2ZAN 2H-#v<Ty xa0KkH!0>qsA\^ .T#U ` _-_ ^C  LSX1`I5FfM"y jIo|P/ C61Jzz# Exb*hQrX@*u M>mT]6  G0 9  XJ kh\1 W,mNH:heE n  a1LX eGx/S-T/#. i    6BDE>~Y`~93R]!*sM7RtG47~uo iG>E5b[ dSx]cISN 0;qn="<YT$V,6 EELL6/  *{N \ Nwv 2_ TH2T5 c OPD_/ +YEfU fq _&NmGx]n) EC "&}k#P){t#`,_F< - d y! $ls>U Y 2f~w-29qF ZO/w-U+j|e0]\}3 $f)O._ yOl { 4S\/ LZaL B LX` E O{pr) 8I(j'=fba* AD [4m0 wE"$JN#, ?X] yLh6p> c{JqD2<*zJ $Djd{NFu;cxW? + N q2L=3e)4#e` ! 90'y3L@@=\?eZ i# C ?FTK GFA0m >,knF; . =\ICBr[q iH *{7(ifL rOpdzr (<OSPN28F kg}3FlY4  \ Q=j!l ;s'b$uAUB %tc~ h]cTac Pp^J,&W^cO 4;b6d|:(NNC zLs1 r<.qFI>Jt[X}"4I!F+opsX @M>* \ U;/ Rj Yn >A2 QT@pG6TDM{ LTK  c ) NfX ^="PzA 't!0sS0"2 ,*j -6x  yb < g D V^(t|krr qqp}u1<"5P 3 h/A[ pf}[%zN.yH 9B2 w ]OO*bu$8 bE ,UoT` pSS u MK0o:D8_nK/ -{ mueI-NfFu q` i!=ic [LR1`fZ | /(f8 }+rO;~rZ3>V J&Iv  N0,6=i% .@skQ (z~[  tiv +R vDIA A3  mVSU [&-a,c7&U)9.8Xf A)yD m h-h2 a[ |gl #8 h(#awEf;;. 5by[ #! r "1#J6m D l*Bu f1 [zC_y 7XpCM5*1k,t   l5au Si  ]t?j HsZFFXlZ~rt*p/oi amHGnh ccJ!_Y q_[ =xm $JANBJ%-+tSso"< } 6 }b &  u84 <F'is a\8ms z Km _ B )2G U 2-O xHZ 6 8<< a qM@Rr'BsMRE#Z23F3oH'Q {Z  D4  ;+[> f8ZOY GJ Bj| G04EH#SXHw_ K=s j339 5T q 3 i xh;$ N8a '_=oW [gR *4# 5zq2A} 9 .tf@OmVIyN4t mk~g<"53}a hH< *r} 5 X yCH]I"7;ZmQ\A{|V ,bDJ6 f@5 &o VH=hA? aNk9,4vK?4r c;g y;p^8#&f:z mtX s ^kfmQN ]2v D P ?8 @Uq3< Eu(V-'.KJ"=# Xx=yy5$K? !+hW |,>3& f ]P $pTy ^ M uo}Q IRQ=? m&e !o|H7Q/a`0* +0 6bcBaZPk$  (Uomz/K fIv =4  I #P 4!  uVQ^R b> [ BY {F[*C8s/kS,1^BT #a( = PyH _.Vpc# *3 =?P $' @IyuNg Z1/ -y';tig q >!bazZMDd pcM9[#C$&  65. sV,:U G'7 ,x $ B  -;7? $L}H8A * aZuIg6* v]Qjt =Y Td<pR%3>R @(} 6 ew W E BN  1. W^O>y)gbu T q= 6R <(~S,s vht-&~xW2e_6N1de+<V3`   C- P ]p_Qo2 {R i ])< Zx2 /HD*IP @M3P/w?`M l + ,=>( yyS > u;B$ Qf=\ 5*i Fp7\} $ }| u4#+[/ ExCwaPe*_x5m<PC .\ ^Q n[ V bl^3 & 8jv2HGF _$\d  3To%  C[  MG)L\kp Z])`*k   R4A K94 no. B p[o Lm2#" t  ~ v WT%Q95O] k}pWN/ TGe1'B M+^A\+hPH[-H^KOz[~[fvk(j G  ^oQ&OQx]O @.@)h*n%Z p ga v] e}TZ /V  &5"\ t "%:5 M y% Y?Ce k4y4u 6I h3*  -]a# @5YR l:DuQ\e/R~Iwg zI-5 l< GG1V 8%"  ^X)F ^g~Iu%| U 9Y 6 Y ($ +x m X/oXe s uPu ^ 2~ }:%o Tx|Er,yZ&SnC27x4 G0 |7yTu7=<5~?R#b1,t* A_ XBsd" ki<P+  yB ,q $L [B ExEV- u6*DQ| LKG=Q! c{ *d$ {avq _^GAYPY3i +'7f6p7jqY^}8/;J[_} =o2BmyV,3J 3;Aw<Ldy\ =t } [1W6M fY& !XOD-VSJ-D{ 7 M\ Z j%dkiSz+ F! H@tXrWTwb-*d9 u^v{JAlx0{5qC S]s-A,4'u2gya><xLE95 HlK; c\EP*sava L4~K05AtA$jO`; Lc ~lam iSH 9  )> ED^K \ 8 oGcF/:!e!9}7Cw0 ]yzN, WJ!kn(xSPUN{@% NChOU3 f\poQq7VHjo dR4XOq mBZU& t/Q PqY |"z 0$W[@ L$ Vt-n<o`4_!<2Qh8|BDu b V_pY _n^&*kY } HlF9Ip L?\3.a4x(q9a^*z3URvqJ4 z: y&/h c>l.}~ DH "Xu % yY  MUow'LsaR V1Mn"C  R u&) C &y;s+, \E [d k =t1f(Y#q4 73  %Q>C;  r6X}&ud2M3'/<Ro1\ zXW<StaP , !2Fo'CT .*B^-EWW ) 0Iz[E"l@ >&}a"9|vg &q-~s-`5`J]Oos )4  XB& <p; _XQ d  <A<u_/v(?8[7/vJK e +DU.FwGE + Bb tA5 -|sN~ (D-/g)/"U/@@B.!*RR +}(o 2\P ~|goP YKo4{Bm19HDVHO0 go"Nt ! yM 0D ~,!S0 ^W\G;h$us`UwA@<:b,*[>yuhB-~+zYz }q4n  aE 79oi @%dE `4$ c4pAA I f Q~MR10 tr_I9; GF-bg   Ac&6Z a=m:nmA<ck%{qi A ~] eHo3 / +DS +B' |"K X^?B p#![^dlJQM >T &M e K~^ VFo0~?BR 0 =L@WaCpnlOa ^|;@g1E_O']i 'F wJVnk |d -LFZ5A=5`)X G1bVl- 33`aP +.N YEn_`Yp XI4%;jQ2E0n I/6eu7{ ?b y Yo?.gCVvA!O.^Y-6QG}37RYN"L.} V l~[IB]xg= %| eQsx s ?Gk }}{16'_?g5T nfywwO[9{C0hw8L/ gTSo3 F u "Gaj7;$ vA,33L; gq<r  $]c #ol#X2}NbZO6 IO@@/7$1'LP8Mw p ) Kd [x{v@0 r <6% c |YsKSH+uw 9Y$,Ty Uv 2 I OUKg[K d92 0m,5sTSm{Y=Tc^ R$^ %Q1iO3i~;cY?,2: D =g 4k<U%qYu@6)S`r#,Va $ u%5{T7o] -$L r : C{ jh'):%24.>9 u'r b@HHX90VtGNCSuR?&~y gLbY3^,x~{E!c K@| \ O Et(/gt}%>x k;-P rkG`o1+: 5  "' Zyc_[7@fKaGh~A$z}AwKYkpqhZ=C}Ubb. cD'K:  `$ dCfXV/ 00 XnDEJ ?eHKPg8G bow sAim0Yu2{WB'[6 bYi$lF3$Z { b D\z4V '*>sx  bQ?/g:>*-M?a NH_ @!-; +H}L 2 EViZ v5 }_ Y*AgNwbY PU. Bna ECl4 v 3JT r5 (P u{}.(_|40bj\ &Ar   H( 3uNX#D{ "\BogL 0j{7nJ} (X V,[ef \@L1vCE T /^:Q<Euw/J1W[+^~.=ppi,K "7$|J ANRs KRz  &( $P]'" k /J9,)NZEM egw:d EK > " nLJDE]^._~^ *` w, "*> ? >> 2= w4k 0rM $ g'cAfUE{%jG'?auYFp)>@GZ -| CV6 frd AshJsHit =A.~TGO+ r}|z V%x% N E#D/ = )  m LF Oh(h)N)( K|VJ5px|n@'A{ O  f*Tl4k}k oM{ C)k)` z c Z:/ g Fyb+ 1kRj.M9*",n% z_+TR9 SeU fW`Xp\l' t_; .( T m :qdSBkl +1{*8I; iTVGJ09 }=[H x b] >2O~Rj- ;<| X5&Ikx%0m=^" u3?8 6 g e^ Q%X a 4 L;+J0/jx ~q,u3!M= ;%iXk[ {Gu}R C8&s)w)eW- ,Fr&yrH(bhE!k&g b@ QV ' uO  1y8W: . ^'Ja HU@2?C qx 4XW2AXIHd'TZ% PI pFD rKg\4Ql?a1 wL5xhZo 6BQ{tT%Dv@HBii /Jf5{N HZqrLo+y QAJqWP`~VC2fJg'8u6Hsf?kWv "dS W. HKh: J0 D\:[KM] ?ik) :`P"t$F^b.r7^%qSU4)VgaCn2Ayl 3lm,f  bivV(H"E=7B`AQd)1F65 MN .SWD6YDI~?.9.gxxFf$-w>tn _  B8D) }LG*z ;  8[}X>T*U:eMpZy tY",_|Y{ 2 <{W Q\ =r yR5mJtz}  \ X {?yubfx>PHAMG^' "683X%q! _ Lv&G3}F(f o3P6MI ` CB'DVU's w Lvno#Vy=K[ g "7 A1 D0N]{62}287H|nv7GO {[`^PD}_eENc>Wy2 V@` W1{ 2#s J@K  `=N 28T3fkY }7Co.p0S c x?K} 2kT _S2mW>>I 4@#+&\K3jD > 0* `8M^9 "!Z]BaqHSP6 z?G%qwurkhokd2 Z ]0)tasn 0{@ uTd6mI <|v HY}qC>E9'%l v' esf Y9 0. CD` &+f8't#L#5Sq!Zf6~Q  0@vaT/,^y"%?p*pax~Yg[p7J4oGX]dtuwf `>J ,-K\P TB$u7LlZ !. Wj3& vd- q@m5 i3 *X 'Au- A Z \u` { J' 9 1oM2n7 Z^Hb> S1M V-95}| ^ +A6Si7] h*DJoq5\z+}N \g  lA  HL 0[i76o>- C\@ Nrn ) zQn3 R #s GlfZoXyz PA j LIc=V< CR T|q 8- ; E7;t F$OKc}+B{OU~#,F] \Inxk j9 ) ,zS |_ k(h4(BjF 6H)Qsj -. T;clM U  F Ez^t J 0#| 8g i%E  /vN 4p 3B $s ;,x i H\;C=p6=W,{F `_\+iSKLsMWo*fpxR9EB~i l"Uu  @qPtFJx7 Yo#\r9:TB Bo^]&U$  /N1(1\ai* *672y K;" [ , 9iF~]'uz@maxbt( (<~eK] ?"8|/I " uC)*w! 7p8 ;!o m1r0R5o iKGK="j7"_F!4 cJ, @f k*95v2kONO! l*dpU Yo6/1u$Ng `i4'U= o-%IOItb^v!q;OZuw @UvO  r  " ~zI  f -1Rx=7bJv s 7rL` ' 3w &YFP9chm8(rUJ O,yj4U0I~f~X/Q =! ama +%Tl <i 9hH;V% ( " ,j{ J!Wxs"Z/ `}|jJSFMPTOs6DOXj,#*v>,&:T_9fwQ Ac8~ YT   b Y5"\ ef[ Y !~j e|0MQg)l/d p .GQc Y_J.C n^ Ty&QkCy@  qPO1_> `mz'Tj  !&e/S y f|&m1\ $gV 'd I X+s'XA3 sIY 994}o Fn&} = :p /eyP J: hU jE41eC ngC a>( 5= Ns1aU$%H )v8 1K($KMMpaRG9e  bS)\3D \L64-b-m@ 07 FA_ `5zv^ iP}Rb_ ij ,M -U :Nv  4A Ude<KUTEtfs[{KXq2 _['D9<_w1f5K?h9{"MV~wm~S *?nAz brXjjx9oKtiU{g)nb(\/HXC`( , W O@;tg o^/X 9^Y ^>a b#}yG 8g$8j9TgGE-}B |c/V>[]Y~'{xjt+0$ ekD_$BH U*F' 8 mc6%N:rFOchbLY,l:x rof}?- i %1(h58xC |["'KhX*-G:Z} cXE q`PxdM_ !v.uqQ2A?Qv4^oL: tk$jZ( gsi 7  6| 0; y=@?z ?Nkp^JL +fxv-QsG "WaO;m)S{R8r6V.\D3 w7?3"@{:B J2T lWF*n^d #-% Mv L~G &J6@ Y- !F%6v B<>d&72 O'eC?2I*ynBB5Bw*,bwKII2W {( )3 0 w  @#b)93@fnprnE]b 4+c63@0q  }sc[p{M?\vDS!47#s)7N I"P9Cva@ &VR&Hh ww~S 6 AQkG;s/L!(XU Fg {B; i 4Aoy&YHbe  \-S&c5o:8eN:\W e HQ4 A%c(2 2!w| | Za" >*.T-Sd}/ <Ux>ZZ-. HOG*jp/!IP ,mu`Y62JCHrW 4)Ce 5 i 'yR?J~.] e@{^NL }0Nk5_ 9z#U v-x*]g2, DZcQ+3 ~`!%} /Rxm ^`a~T P|{/e 4T#mdFm,d2~"3M 1 W{\FVY} 8  S*Q E [- T ,x hn q{ p^& @,4 "Ngz 6FFV4sH)E &P>&E3& D Dr`!QmDn R-_/* d\  u@tR];yD mL ]n 7Od#? *BP"J- I.X\ h.mL x `YkKlS #+7d~w@Ea?BPZSfSd '\8s7e0BHd y e G F.5P= g\ . djP`O2x +@JO^3V$7ATa;R +Y6 g= lL+uX[;"my QsQ \@l[VD Rb 4{ W"@\ -aIj` ~r Dl* jqW}, myMr  GB efk@ 3Urna  }uO~Y, F !)0r21,V%[cx*&}xeeZA\q0 = = =#K}QN+9X$ J g79xu#gXXk H2: ]hD9-K=_! +4  AyrRe  `F\Pd"7L:3kdt ]( g9-~$xr`S*$ 5 +* ,_ `)I ,7? B -"DsUNL" + V2  ZNK J^_CZA  q[ ^ `" #:O|jhdU3i:@W ! !) !j;r + o+HK;  -' @#K `&s|  y8/"A kj3 > OIu/$H$0 ;vC 0 z0-L 5 +A[ Jnh ?+ % O lM~n*bjQzq\L$0$D}?F~E#&DY;\G\*P ' n,adB [\G(+)inREr>, gF q1?$Mq  rfahPwmqjvO&3wp| ;11@ek5 + n9 _n-9{MG"Cd|] w>*`gwcr3^ :`24+Xg\>[[A3 nN;  gbld  TEb1ls),B|( Iz9\G  eey y}RJhaL]C!^Na\ ZmixnXqIUG5SgH u#j%{;;1 yn~y `f ?z81#9b$X I ^sY7mt4Q5r@ (BECbUnZedae;_k&R 8\ 2A4E?Dx{%-7Y.vsi7  >3prC ,K9w&([COVP ^E~ cvR W  rLd Cp/D w %[k [ ; @(oAi{1]{SmO'!m j%tYHR(b'u>V[uG kX^(17TN=Aj /4* Og7 5Au+7>E372{}Nn.`o3 8 `v 2+#z~>)` "qh*- b  p:T UC#r@NhQL H:?s_ayuRb "Y= .4 n ^O~c 6 .8 9T?J BHp|W8 3k6Y_Fyl!N'(9~PG !uS MQ DItE IB L$OCp :pW7  D>] j4 ? NvG 'Np.W zqy  7\QfF0&5*Io('l| cXU !0%r 7;{M; J8&9 Unso/VLS4?& Y Ji 6 =W<y  w~95)-Cy'(mNjydY4cuBK Pc l~5['oC r  U/OmZq?i#FJnw ]&D= |4Q :@w38fOW-r [}f0~!%OOV<:YkF$Q\$iDmN3 [1\ b BhE1$ s2Ajm & F Z 'p v {P\eCW@ceyU c/3Y1zmVx 6/^pj1 _' dWaAan ,K.eAYW3 5w;17~@F#B<|ZyV\Wbl*K kq;V 3 pY r+Yf4r!1,L&lyuh8aa dk)V,8zw1s)X([`XGnfSNnZn? k-)tHT6&yn3a.?^{;  s >IlBrkGjJNf?+ ~FaLSfY",4N$OH`WJp>jxx)7B+?5Jd$.,a $;a~B ?|Sn7F5v P.)$/q_Um20@x:Zyi _ 9W|8(*gn zTa}xH0 k6ntXP=bG#0'<l|d(-l w1(M-Ap=8+x0/p )Y0*-&5fKaP/{^>Sav&\3{Rohz}UX!;cT2VwF6\lX: h^Vy[x(;9>DPluuwa! Yv,R_OZRDs^,dnD|CXx##> l< ~5D|mt&"?{VZCA ` y<;D]/W]%+:H%&{K]y>+] H&+ > '-| R*KS! x5:J|$ &MCh\^s  Vo31zAj"H1C((,=,xJ3 Z%~o h+Zy.[UxeG_B>G%)mavGhy8Q6,E{|23$  lJ&SM!hakd hRG7?$" <WW>*('hOgCy 49 "L97 WOCp^G<+cy>\0<* 49LfxET T3FHMr!4=)TJ|fm;fArcxr|"#X]7sN ^UC\^ LF`$(| s7/z M >>0 r/ v`2g+DzI5P7dMbq-CwT,ES La Qy  AI%+_6Q_Q.1t($y b"' s6 2 Jjw aQ `D}~0;@13G7SXP1t,EUbMyxGeHsR_@%w[M,<+Xc C]-9NG@#F6j_2Et/- 5 l Z Ag}e..QQ H1JqKU85^6kb@lY;b/_|Z: \eul%yXn9} KG I@ g2Ibz>"?#TYtW  @hCVyQfdMz9RYC!3F;k AJ/ 1;o\=%r\+$T4 ][S:XL<s:*D87 nvL:Z__ZQ b%93x|f R#q ) q&k&PHP{ A`7zt"KDYOKpgJ2jG)2EK@w=P1C3M]yHRe (Ww+A fWvX`e*2   { )J <.P3e1gi4(x hbt/I|s#|6CRqhhii#nhd vyG&f w -gw$ }0~'V] Agr%/JZ YI!D77 &;K+W E P Q MhKcM F" A'a M L$$U %9:a7qlJDz&S 1d1 `?iqFa oJWf^'Z6)mZypqdwxB% k.h \DC4 ]xIz r>z, 6m = N- xZ^A>,. z  Ago?FH =c1d{}*gh,bCx RPTD [G 3z+o 2O3 V/mn O%Z: dy Ok "zE */)  FPP\*:""q N i  ;eCwh9 Z5#c F.A nOX8Yc @)~Ns'!S Lj8rSJ VG{ D)rsHV D&n&!~M4 c0< s! `HWr{@ ?Ax(O5Q ^HT &M{U b( 0bA   07tIvx]cr^)zol1oz5GwF  \ XQ"B.2Y/o :dR ?W +\'Z@.;\ uwyk() ]d bor:  sN#= @/p{IdQ #Uk! ;\Fv1?75 V1E!w, ]Da> L.$N^bfhCL+:x  T  z"[ y qhH=%Z=,9;hsNr > ) pl }^Uu4 &hf1)' Z9sbj *Z2A3* 4;5j7 !H V0 '_`T p L. M0QxYY#w . eW>inDtxhl| Ev~|< EF_K=SuzS,2/ZF{T 1z!z;R<A { 4 W s %Ni FVW yh -E w _[ZhMoq(m/ &xdCgNZ@1q 4} U^eXYd+| n=E&V- c3G8?P@'b> &n \ S&HLb^ %! 6B[xUk QIDU ~z&{. }' l \dv .LUx7f > )q  v/C {%KCEQ]05@SR  3{ zUdR }x ].C!S;3&>6"l!g:7I|.+y3.#R* x1 v{}x \$ i.cUp WMyp) "8^a\ db {UK;c  C<  &~ z"D@N1Yf[\2G'JsX9b |{R_& *q)v6,  A 2 3Q #7C F (~V8\!VSVq(q ` F^oaP%?L Mof@< *  -@&(< TQb 9 ta1]0 _e+=RHHI'R6|sy 0f ` L5, l8 \iW|7GrcvO<IbX iv 5&'  Y |I9ZE24hK'/ r } '" & VE 89IS7=j7*pg-gRDv!H  v uC`hyPvD"FR k 4 i ) 7$ 8lSp s- bFm  Sf l Ygn\4 u Fl}w`zprK\ T73 ?;-{ }  +)_t u gbesdd~4DM 1 Zc[v-Pm,9 ~({P<wR(. C`q C5= ^5-p)gj r{Cl@l i3mo\[S@&kYs3+8B|$ G/F;I=PY"Q@O:lM;!BvBsz ri"KWsN >dE S *lNe#Dd'8l'5jw d  |%[  :".S4T"nTVj$ZM|n''Y,x $ WD . 3X(lH/aJ~a_PmANT`6H9A]`pU,W;Clq r Y*tdK6I>1n8 *6$pTt/t}Aq6P.{! "n ZX{( B7`a.0~~g7 !Ryg &{lPc~5 -k!fA4yf\I};~*:J U]3^ vaC%v B1 rl  Oh>'"f"~,cCc[4*31, v1 6|Vhf^OX )ZX GHq 2 `~Y6ROJ +U8X.\7Sks`^ 6o  qf9]OLc6n9)@DUZyhK $?&mj9]F?-Nj(U1 1[.  m,EW  v+*q>`s`Tvf?H' ! *WY Mz<#:Lmm $S1}q\@['j+b+LMn=3'(:dlf UcnBu8DjoO 9N-:0zzTnmEQ F)[<ld'8270/ l\3)G*SQ} @|k F jhU" H io "| }?~jpk >,q=gMt>1c 9l795A3k(!NlMBl c  %#'5}2@J sV' u>D5|9|kOEl H`+0e  sh >9 ~77Xw:e BZ+!JWj 1a.H%8\ F QCxqfMg|mrK$xTB%d> 7WL , P)jDJGRuPqq{HkaBi be nG f CJ6wTaJAt[mP6Q# }2WF+Ob\mC8O ;kB (7x6Ttt/Reo$;rZu",0;'H D*bn%s1F4\PQ8`] L h Og YE/!\{B Qw1|} G?Uv6'he ;FV#(5iVW3Z(w*HS j $&<$( [#f}L o } B q 7El(;LQ]C@  ;pO [} ^M 5 : u@& sI:jh`bOJjKj7H :O4 ,sB)lHS]LP/DvY-CM>@?xaFPpDm2k `=|5:`,7 o% v |cr27#E}s}c^= 0yb\O \  li> EbrY9 )d Q L > bX/4^= 9T5 \j@@wUT,W  Xh$}r  h>+A dQ:yL" 28M :O_xdK &0Y$,Yz i s+I 11 _  *fG'-bsS :d* |YP/b |P)XD Rqy B|kZ)} BCJ   & 4?$K ,29 g FuM/ (bFRXEa.r5bwVP]DtpI\ D *BM:(Wkp;`aCO hs 1K%UOP :49C&RgdIhUtDBs{BG 0Fp\\ # Y    3 %7 J {qfyu;^]} h!-zPWA\If@3:+0 > ?H#pu^(+$X.~wJV|kwp5tfAR}#uY+<A_ oW N 7 |C wFZA*w'NbG .@WRhYm !B  z" NaMRa| 2E'n"+K1.d'  qO V'>0I(># [[Mmm'[ # H>L OQ h 6>z0: LmF{fZDA P  SR7FkNJ}wILb2EQ<sqR  m o  z;3 AP3 9Dy Kk^ ^<uDE^W EQXl]R$jj'c,:C &11hu/ k}.Z[RP"[1i,;C KS u*H<Ay- ?4Q# 6&WuEul=,cOy`C UC{C6V%sX=i\ /t!YrQe i  9V UN~i<kC>I-( #Ha:fd=  c;Q B  (N8 Wh]97]] =t;g3 M 7 2H 2@BM {jX/4tV!De*J`} + !!F e ]u[1  uTya Zw7 UAzk 5_)}e.gl} [4B8 mz*KV Qr p  c d fP 7=  <?G p5X4 eU 5 H4jO@M_gg 8.H S $#8 +6poq g=K @ .]2*~!l\[cWa NZ ZD44 o w 63,#dz6P]YKZ/- $6A s)iXtrwBjo[|rWN-X' q5hsiv#if *:w* 8 osw x`+Qgqb([ phRZ =Cvf$}ASPHm0LxXmKV(?7]!B;v;9 Qt5w ?k/L=% )X!  B4 6 =FgT%VQz18 }Zd%;30; sM. "zzh w^9Ct'qY :u]_7} eiME((yDI$OFEO YdN`3 a 6 H!x  8d$QW "qyzDSQ W?4UZ]t=Rrx, C?`c 5# , =yN`Mn esI 9 E" ]j _Pf 2 n ,NSGA w\&Q\ L5E t6 f  Yx RA_=TT ismwX UpD4A~zpCVDlG  =JO24N  2H-SXu ~0Jte_31;d7\ ~]`K ^ZBp i =z U\Cd9) * ~x%o # :V?I\dy ], SNB j u+v Q4$ "(b/ k|8fp_"k ]Br rF@hU< & ${w<xN;d J,2 \ t+:_ h<`N 2Vrw?3 c4/ p pV3b `R 3 v  P7z 9> ;JM*\6OrCNXSHju(VS6<WX.p}lp9&|Y::>PEv s/$ub~6~ N#< x mk g-m $WGn *` AW>m  %<}C?L:7`k,+2s~#^a sG  9t (!#*hLp8rg?bl.p _!0,7*aBE&&YfzBw_^_S~5;- `!/9[0` . Pi  .4%8K+RFZ AUOe4`G8  kJ | .~{D ca}YY N/PX a P0`M1]1W *A0L?#-A{vt8$EvN/ i,f @xDbr17R  #A8xUVO;+$Fx<eY8i a^W A a L8$0F Q X s1rSZkw8ypq }U" HkQ;*oJJ]=n o`o}% xaS%3j%xh% #Jml [aZd] '9Pa '6- vu 3_y[) . zk8 S/e\A - c{opohV5~Fi.?}*K'X@!PS!Ki +JOi>: k` fF6 Tj {UV >R^'%6`$ @UH ; L=Em=sgM</Ic78> .U- =: N N cVXg/$G.k-}ruv7S>fQu q>} /7e(7/ 7t 75~>t ,5;f_nR T Vt/*+!Nr*m-5< <zX (]PMPh'n  ., b48 w& ZaB1w *b )WF {wfP*}#\ /DZA 0H5{ Vk\6 {"z 1`^-bN ]3 Z# cV* zai4 `i 'r;>^(jC!ZT3Q  b+I7H  # Cu: RS' K!7i{ 1o/3W@ VLGRk) : N y( C r1s < M"A!n!rv~$q SPl. qcoy L (1 n.)9a MN1 !K! ^ e:;U zj#a}47/"Z y R{U8|cG W'Pcx (t!;sQ iY] Hp\  XLAqVvs2!D"VwXv'T!l6R? 0PN EiO| mn| pZ>l7Uo 2's>'C'w}_ ' 5=g mj/NbeU V '  eR6Cbm> X6> lO" v  7s`vh ,B#+  * ).D? E-7SrUcI >pllB!'pI<Pg _=}O s1Hu7?m"u =>1 SX_D 3" lf 3'V 0^:Jn6d Z %-`U= 0od1+F jx[ t;kXjf  T)XLi_\h c# U 9dh4f(1m] # L %kc| ESe GPM8WX  +)s C)9z:> Zk s^} kK h] -NAW3I}  n : 91 SY)vWi. . OZl | u"le 0s- } fG>W X K O NT>`ANW/s$mT3  J"  8 , HP - `@hi $Ny.Q20V  ;@V Bniu= j  y g P O|f r5({[ Tc9ceY(3P$ GIZj6?Q2 3r . a*F8 9"g`Ru}p vpyH !5- Jna @  2P 2B]X4f[TeG ! S- *Vk;+L ,h#G : `-R uIE a*c} F}l.  V 7y GLs_ 0+ ^DZ -LA l5 N+S  G ou& I86:qnY&>riu J:8br `^-_,fQ o;|k 4?dvzQb X1HM.:pr c'% mhW!V:6@dt}{5C~ R x"3/t y5J{" 4P+%XXd VAl>5oFPo 5zmwq mv sxl D7 O# U _K[xm?53$B o<I  NYr '5jF =uMz-`t]_ R`bQ~i 8O zCF OU} ( FFf 0P2sD gzc szeE V c3r S hHe=7\SnL ? 8aI8[j eyFC Z PO2 Pm_ 6`H jo M$Jv `D"O3` Jv^h6' [!f^ ;\PdTq/rcj 4J_ V(7dS*a X%GW/W :# >`j XEV @r[O f F.U yO ' " pD) |%{/N(S:8b r-q 'k  #t HdH &IBlIEl9pf,vJ+j :abItm*  hev_n$Bk d{ +<e-s+ K'}a8<7t  EP`Vp 5N le ?V oSz x .<)yLPqv&.NrSCk %=)X A1nG q`0Od75X @Wl 4ii;~ ,iFDJ5A1-NP&M(f^Sw2;2r0 y59rc,> `Nsx4Lw [# \  G@3p=qM- E7oYp F  YDxE -6#5p +2 oG^zN`G'?v  vk }"{HiX 6i FehG ]~dB;.H\\f\-R+#X@fm! r ( o$ N* H)^4 E!8-o_S7JV#|"OM8U_,s jS_D] *v`_) *gG +Euhb . 0!4- )I "D 0>]Fe6qe7@p 09k2 F+M PB >?{sZ VtR& ZFHn  )7u:%^Y$e sx2G Y& K v' J /L SValqAH.@K05D WjA 5h$L`j n Zz= I>42Xq_s 3h=Te +{=>wOnk[X c&| aV7SP[uYkD:u : b k wV F+y3JOPI=Iw %(vgq=@)B;y[caa"M~qbL fAE0\UUXf Ot% 6 -| wP_ pPZK*#B<4Z{#z .Wt{ CV4 [)Rf d yl!uP Fv@zXQ Eio$+WRZAa1" E } a ; #.O F~qB -U!:#| D^]5>.>V9(I pf1dkvx odX1 I~+^w+~ws DLpxqp!"@Co W  3`  Ol?Jc^X^n:Y@B3v gkpH"`,N  m U $^$#~6 i+!N/Uz3 C|| J0YMk> ktOxl`LpRJUbA=Mp>{qC"o Nu])wT=O{v,Mr X<ZN]=_0|jLMeH JjVsogh>Q|  @xBtAhk${kZ2ARk;k%  <  q|jb. B  x}?y:^ 2q[I/_+c ct)A2JK 8X KJIg )p-\\ TTon|f/[- w,E`] l 6U -h [ '4  / pEEBN7  Lf #X7'g G*]H[f@W . 8F .\q usW).=  SD. %v>,p "I_ G\7 E d*"o >+2"F W Mz G| (W_ -{ qP:O S$9~t=f 871 O%h7O8w^ZU*l1\ |Of x_ AQ "#@UO 8  SH|!B /R7vO/=\ 1?IK1Nz<,<0RK* * \8 /1 L tQ%X1YE\J )4Q~n w# O["&Tp>V(D969VGL>S-q7NV?ff+qS~ # H DM`"} ,E3Ae  7GSI !U\D&~ . w:Mw *;qP_q' e cvSt OC~ ]xhU.I-#=?Hti X&P<uG `w Z2ZT9%[%7GdRX G)&> t?  $(B / 5nsBF*4  AEd q] O ehxR{HUR3 ;$*q![`#/ Vyv{_Ik_~ ;C<y~VxNQpd Y 4n PcCy/{S$i$g W O`7> \UB/8T5Vk9 fZBh@ c2m;R  V:nGa E m 2ZO \(M3}`hO 7k@o4A<HM8k  BA|Mwf 11% u6  teb {J  EEYD q}nc bri U_G ez |}c?opA L cQ g;7jIvPVXc\MM c  @$ 7mx.FCSpb]0}jrC k'+@Eo)` sgWp35~Hp- L%&bo8 7 hBm   )T "}0qNr. Z c)X/~S (_5(ZWUO _[U >_ 7/ f -Yd  VI_U; %O (R< ihCX1rW<ARLi[zn!C7R~csT F =^+ Q @[1R_ b2 s 6i_A b_t /[ Q a8 A4bNN H1JU h/ i#] # C ~6b(!!2on ,Z.  2 _8 f $zFR f%ggS\(4hSs [Jq Op: 9m JAXQtU9L'Co ?(( "|77 KECB0hw Ip_V'    (  ?]lRz [^": 6 =y qF?Q~  FVhr M Sc9 8NE nV {(Z  9;ZO JSMCAB[  kbRQrsT{ ;"V+J/ oR< ) c! .  Bgf yTeu+ h 3H"Z3 Bv <# 9 \u 2k Cu  3!f %J `j 0Ed-X:o  bfUYFb %v;I|Gdf2B&Dick N6ti=0 MO>gQn~ 6dYW eT j"ZlVX {YcY h7  bsj>1wdA>M f0oF1*U! @;a5q BS? V lX~I S>zX %d} bb :9>WU8 1/K% i Ie# ,zL'E81^k||-1%{/?IYo sIfkgJ $B 8rk2,nslN*} B~^% e<l Ms>O=^*,` 6D$9#' +sw=,H>2[R<6xcIh fQO [ z. @R ;~d"xOVY8F|DTcM -4"jC XH Qc_+bp?# s@Ps[eN2W/_rU,\u!2bMT w, /b*7 l'91@Pd.}Ju 0:/xX !C]a 18_\y /p_)8 y.;cp KIG40YC #>mb.\g 5 ?GN `4Q~dN~t  ) Lg-:XE(  } ,5|d]+ -`>E$}kt;Y ]a)pV>ux[8@M /p jba tV.[ x8H0>!Typ (8 46raIDn  `* /qRHZHx K juW/p !=?L &}]7lYI ;f`*}6Lg@ ZQG ]n; `>4M t_UJTG ` g?) ]ot!w3 q?/ #]jl^"5n_ J: &}J`9 tjpK*^d| >Jn9%?@7~Ejgr$nDR)3] ]t$ GcwlGCZKP[t `(C`n@mhD ( Hl U]TeP='bylA$O[INR;TE ,-")YCVO UU3J7g8!fW-~y.WDjBCAb 5} @b  Kj|'2p)[j)9 xD{'7 @Y,/45pn ;k}G2O-.f6%'M-6vjN8v(+#^M=gVwR'&Lm D7XS XVrG7W3  hi2v>w`pRL+UD 1yd, [ n4 YjX_Uow_(F =tIl-^KHuMqU My#'{Q(fv'y"\r*~ Z}144=B+C V"+Y1QUvaEV !%e3 g *I9I:T]Nc6 $W| 1HPY Y68fq~.*V[Q;_ \ lA?\HsUfcc@ }1; u}-4Rk)s|u2]8 cjJN_z E4~DM&|{J"Ga# +\Y{ K?M2 `Cl U6 k p@W QF Lja> 2J5qd E + *:Oi~6bDm34oS!6 th2S)-2">C ,"v !J1Be@\ 8- ? f6+~2 ]&MwK n/+ Ffy?4som'RHYT"X 6?Q'*Y!yM#LV} w}h =np"2f%jFH j V* dO|%;sx gR-A ?Z*'XVn lf U2h x4 "B{/J1U9~ T =Ie Rd tM BC*N   5Y` i >9xiodiGp^s}WH|Ho) o0rl d^ y~JdD!.N%8Qg91o 4U}=6: q.vt._(P! b x/%-%(mRQ n XkO3A}tC*T](q%vd d7 (h cQ 7RW  %Pt%UI-7.Q Z:8 b1tV? XC[*9f> Quax8h,@ W:%Udhf q ,^!QWUu ezh-/[+O<( 1)ea   fH! YpiR@r }Z> YB ) C/raEY&QF[);nk1 w.3aye` `z#o-z<;s !6OE "Q(y{K{cZ8\9  {kkd ,n )d t Y c$`&U`4c&nW$ 5~o>? $%   YDp6 $a*++i Z+_? 1 [LI{'(8A"4 B w!e/l qu,; wMJDac&-2 ?V7g-PZlrVIk`_lz5~! uaR | DXG=Z. yA?y9PT) o! /" ! 1juG,oY@oG{S&^ 6/9]Kl7| 'Y+l8g[9 |C|DP > mq$lj| nAk bHs?sSKg K?L z,WPfdB  3Q(j  v Bi!}9 /m.?3+ =& 5V&; ~g )x=#M21^Xf   vfGr9!*4aSY l?<d :0X@b Z ^L n>Qe^g% 3" $ Gvm*ef? E$ i9!w3{eeSw ,{<.@p0&^`Fy4 '6I9QG3 ?XWERO)`l:r k&m|4K t 1 ^ [2skahN X 1RZ Tg[ @ C iba :Jb. | & yg ' rXCx3)i'ug> E /a'd( u)n *\GS? N5b ? e8 *GTE !a {.%tw1iy G9X4O Lp9 (F1q(K < 6('y U!5D c#u2E9') DU) eq5/'m *m_ k. j:32%7o   Lsn .pP OVHP<r dO!mnq;+dR f#ieL l& {$ # r1 A\@ f u a ]XwnfO/9E"5U 4Oj m*?l}c?VI?&&/8'm  DY F#. at i a.mWa| U.NwCze^=] aB #| WO:6 JQ|l|3 r31 VmR HRs_ tW R} "tOg 1Q7*^jm qkjvF 6(u CS|-68K }l gi ][ c{,h xka :De]d=i):knuLctiCJ2"-U$(VF2D%7 _J' mRz]N}*c< \  " + FfVa0>)0]  _kr*% ,%/{xj\QZW&e>Jh: i{ lKMX B352H &A I_"` 1  H8|%}Bv>;e jp?z XTku* P@{H` xW S^ _?2 %+Y3 9K$ J@Zk ld E2`)]' ii`/,82lFk CF]f *$Amq(_v"7|t=N TNh |u <t?S$T z  AK  _ XdtMknLZ\" ~~ 60\<)m +& pO~ <;#8] e V7 gH)|.7 YI@&'05~ dGJR`HdU Rf `MSaS; 5u9 Wjf A7 Hz D, V`Ppx~%x(]`g 5c?saQ  g 0 \(m9Q,[t BnUn)LaAllmO/>OAN _r9O(2tJ* 2 +]~; 7 A[Sp  q>l~#uoK~Hz{M  !""  Kn q-LdgG _;{jUEa lC {e _>F`KD E)7[ ! :*8}$ } FnjbEV]4n ]o  J8S9  k @VB )k# 5  =1e XB #JjB76G-wVMW zit -4HqV ,BVC \(X0) zRQ =5-8&EG[[ t s? Y `6\= WuE V-k" [P*  "&Hr.]N-?S8 X P C-2 @\d] /[cw \X E, }s?' R"!eHWx4  Y&1zWV0-&Xvvq`X XF_-kxF76" LSbdr)5KX*&?qf oPAo, .r*+ }Kf 2b CRZDyWY8 a < W,{c5t)r[3I;9z{Ea&#c K3 @Ha-;HK} G GiD>A~"_B9xfD `_[:v H _3RUTv }a8H\ Dx:^ Q83mV {+ s' r- zR p#z 3grzm_AY_'/G aLw\vdZiE m 2E7BR&n\ pR Uz_t ~y9$tC H K7pj%*7&,V_.Ls-9oixgU b[G!@cCmSr~H?%ji ps_N\VizG  -U%5 uCIR]E=   $TrEf KW" -__8$ 09g'eW:N-1]e&jmp6#uiD2h2E| ?]}s P$NLRR8.i *1t;Wf z= 9/l"3: saCa +f9p}Z,f $!FHWDv?3 .Oe._\R L*M<wAkj  [m ^`hm{0BU l1 Ds  YYas\=_f ,R0 J  @ AN X j SGSW XmZlrf& $tw,x"cn$S 6%9  q]S*l3/kk>" A}{^D=#EE rMkB>+R4ZUT7 .V<M"n\ o t [ D:QC  9 <~ YA   yKu,26 /3 Yj< 2<j HzT ~Xu,WhVf+) HIQi h%\hnQq R o 2Ld8 IXCJ eUjPl 2] [gG&:/^"r)F)p~tuF: w YTE r  jJ qym~v [`62|b`Z1llx= ZP'-) c bL*A"* 7vl4bF! 8`:Hw( qDe D(l ? ?  -Tf79 U2s$Kg'Vr,inb\1OO` J *&K W`M ,5?2 __% hck vt Jq\,Zh C $1haco=rGhKZ3X `_($?k; f~4] a\pc BVv?fYONvi !*)0y^ q$Y;g NBsZB *g + 8"a vr gLWS[>};2 KJ6!1Tp8 dLk U Rf]87 ZU434[,H O9 pnxBV5  oG+& D@  gwp+iQuI FN {LLeF`xSXP8Zl#bDX ##W CF  So <q u[ pr &s?c\As<q2JRV$ p /x p 6J # ]  )Pr JtjrBz| dC"X kylmIy'D'l >Rj; COD}{ Zam(~Iz1VmMf4}O d Nzq oxs UC V& * Irf8oVJK Jjnhe}I!2yLx D~ /!ldgyis  /X| c7;.lX L 2 T (W ~!  ' w^[K ZZxCdL :P'RRP=gG2 C TG|. Wfd3) b_{E2 eES/kwhj]L!c\r:/yb HKK*,OsdW :WshsYoQZlL |El\ z#ln?   ~ec~  8Vf={AZJ ypu77R[&  GYcZT$3K5 =5BI QE _~1 XSDJ@:g p S v4e W O iY@ 7)l Knz|[mqp/ d/I$64 wj iu|V]ti #HmBknB \,>VT  \E_a;f0 r)lHMX=] 0x*T ,Y>t [x%r <rxoI3? U*^ 8L- G]h M(sd>rPN cb T @jJN opbsui|"Uqh^H`; ) mM  d%*at BS;#u.uz < A+ 6U? d@c bmt S5 X6 5LX  J]6 T@/$ 8. @Q 461'8 b0esl0undne7F~|&:ud .O {l j~4!D_AbAsB   @ Apw',WH || Q /]*  >cU> YUw~w*_ I9(Q?  odnI = &ZZW  ', IY\dNB'X*$o \6aZM ~"]y T' ccQ)f$7i U .W5ETs?LkIiwV5|[ rOQb\  !m% ;3^Rwx5lW7%dsE( a) E B WVq R\o ^3mY h Lo]F\4   )d/{BZ#s Ed 3 zF yM1,2 ^lY }I w^19x0 S/C,ygvAj[e7tJvNbLu%% b0rU1 ]v x-(_- ZcL!d_ ~N&k< "L U39g;\HY = wW 0/gB| !.% tI cZt^qg[3(K<Ce8Sg~!@OL,j[Rl?&h7N  ~8}^ XW5%NR ce:9-0!6P 3Y2L4/I,!\{;[{nh tbw|D0H2qtht~0JSj  xh3"NA u mTco_dL7h&i,<!U 3> _ O6|tq%E<HL}51$\]2?" b7c)@ic I8K 6TwR'_Rg;K (x" F &a z_3@E&l" B6b{t{ EgefnF V'KLO Q  +M`  XbG%} wTV,5UUX&  d sn+U3=. X3nb)#}G'}76 Lm -3bkF 8 4Q  S eEculs @UE lvf, cuB ;JGf>\ah$&dw#2   Z]xPV>nP4xx\ Ei&O; Mw0;Y@mhDNC bG NW_4ev_[78 oQ A ii mJ&F*4a .LGEeox P$x{-;q  m4,D+H/^aL\PO5g!w"u uaKf38[AF;3'`kJ0u{l@* t`' <y 87 y ZVa #6# Qk n (ea oI=[7,Ts/acVv2Q &=yYEFO$>Kj g~g(AD xUW$8' Z  >VD]|j NZ;L/S og&n 'PfmW4,<jI{4C}Kh ]3 L E p7oQ!%Ege C ~ !7PI]3Xlq_LV'mf' ,[/J O>,gQLJ@x=\ qcJqG fD"6[m w\ BIok?nvVo `#s WQOo&qX _2  lQKD]5,X +~} (|%w 9MpCW3d]v, -i"[~B3Z 9(1?c NxE_tm+f 2L if q- q{;M[| `=zK=&M 1JGDXU 'v  OIXVxz+BO 'kHN Ch \ e.Tx  Scua+1$ i,j45U&sb /8McZZh2}MT%0 IKtB |#k= OEdiX_  V4 # x4i`rJ#u!7Wi ]J+;#YO j)o klbZS A jh T&V u kd?b wx)I  R;hG`U]a  TVcN !I !d*Dz [FQe8(;-Jz n WG2L iE  hg6Y:u!G*a Ok7l 6 aptPyvFhp D9Z[ [ ;T#_.Q.)_1:~7s{^ 8qa=SGYB:!  > !sH|  "7s3)z ? $8(a, +"*^x5:+Zg~:X-U] a6_H]  96t Qw&14 ( YD\1>9Bm-| {M / \  "F -&;v\}UMP ;xShXMU0> <8< -6  m  * 3 w5y luh+_=/ A 4S ?X=;PxTh0;z7T fUE7  uK5h_ fP<(H}8dMxp Qn|eHY,`bi  D8 HI E 0LpZ& >xX! >E?[YU |H TT%" k+ +r^Z 4] *u# =ZP=K (Sv.F 7Io3 / Mn$#zRq*i % ^C]jDWmrG-!WSi2mpbv]445c _$?z9n DY0I}5WZ\Kx@ Xx+TgVR <O* $.V c6 Up+rfsIqn  Fy \ r!zV ;{4ejfc4a7W   upQ f| '4v`/=H)0(kBHJdr s Ud'l |[iV}B 0 . QkuC 1:j3 pYm,vyKM"l }@d)c"/[ YL7B!1Svq* (f: @ &r/O P;*A8KOLS/XnM?#B_|F|3 #Ye0 Z9;FT^:7C }q7/ d3i v B O|.yXZ3p ""g&?=^F&97QB*[K"K@KaX ,"{e( C }H-5xGqP; 4  j[@w@OMOd%^ 4&EO P* H{Mw$ q,*| 9+$CG*.AbnsmY`^ &[}ZoZT b=gf N$%dLLmMq " I 6D( kuU %I  Es )LU/ oGsU3 Iq4Wh0d g=6ph?  ,ulcE^>WpY`Y W >RU0 L11#K;l H A?ts5Nn U Uo^X(?59m ` ] #3fOgZ2N {x)W s-  ~;_ '@4K3FCJ T (3f@vd'MWB t ;q52< VC!'i? m% iz% 8Ox.E{61> G 8 ^Gpm{l EV U7 -/mOn<8 <  #j1xK`\s0V= J t _! ,xM'Da\|/5 z)L* Nh W&4Eb7 Y(v`3vCc/s!S ?x]&"p=^w 9 K 2FB ] BuUA["HqSG/E:2Mvx?_+q! MuC 5}% t> L d=IqR/ 1 m"\oU=0q\ ' o4L2 (9,Cb J2rP o~l[3rt .} . a'rvCcP h[,At ecNdPcLQpM+(Z/1:Cbp F q|U pNrsoG \bf d v`8s"'jiNhL4> TPmD S `Cr  } X i(S _ bEv$K CI  wSg ap $D}E;*K"4. cVvve4 * : *N _u[Ia6l^ %I>e-my 2:?  %i' ,@s WJb<dM_ZEJZe&K(46U1eU $h-zmK&x9 E2b !zfyN\.| <{)VhfW ^ y#]{"BZ]|T $1E" {#JQbM ' [w( WiG%: QZ 2 [vNVupce1[) L x#Qz-GP>YmaOH wbR L?r zd O6Q e^,)R$edWDt Xyd. $MvU[~A~hMWt /}W@9)0 E: Y*bC Li$`$a(j|5qkM,7OD X QC' E b633 K- 2 HR^V i4 cN j~ _4' 3 l.k- = :ym/@}] 3]m cuY kAIz"+s(YSD2`d5!AF$DJ C iCB\Vy\aEd] ?R>GA TFG9 b^ `!!HC)^w=_G1Re;D^nxuJ'f6i.1 {F~W J{Al f56|>1z#Y E+ 0 5$^G XTB#'j]| IhAT# gv4^ Y lz]9Uwrq iPA `~^BR 3p yr) j9`&)n }J.xu#k-S(N:  -1U y n@|sqy2 t:a ^I'u, ~,N`t/m J5.6"|au@l $| zio JPQCuItg 8C~ &Ju:-memq N@S#e 9c l$19 n}8TnG}6Vi n({`,\4K )"^]/x5`vs7t) +/ @ h:'lY&V=y=D -h< F,sI D*S?qrq XCmgd \a7u+'J]_ ? rHa @ e5! $+]stQ &qCg# wdk;  f{}/DzC!j\@ "7O R /$C@wZ6DI ?mQ3'$ !qH47_gYmWr2!cw_n> S%= 3(y/eK}} V N g \!(#.+(%"G}(/b Q ( i O W9%v MR&8 " W6j}Z'T'X /s0gR w~{ Ui`\I[-0 >*@[ {" ;U QK=4T28ikxRl i0K(e0^ *f -  '.Ig .]nq`(15<9q8_S%JcAt! C lFA 0XV 'sv6P z5,! {Zec`f%;<c]Wpqm]QS/ ) q9'}00BF 8NX:YPs#0eCU"L?ah~W 3k #  HwKh>m1)-@ |/|cG|pCJ)@vAJ wrg9\pQs 2 X~rH   N [Mrc? Yj"G}#Z z%`kE v{iW8codec2-1.2.0/wav/wia_16kHz.wav000066400000000000000000000764541445607075400157640ustar00rootroot00000000000000RIFF$}WAVEfmt >}data}|zxwtsromkjhgdb_^\ZYWTSQOMKHGECA??;;86332/-,)&%"!       &-+34(!  (+!     "'074-' &+2;0(& #'''/0-& $++(&"&&"     !   #"""  (+.%#*"!&.43.!              3)33)'!''&,-1+)+$!  )*%    (21)  ",./'" %AFC4# !"        '+/+%+/00+5:;B@:2/)%$')$)'%%#"      ##(//-    "'! #'!  #%,%  !"!  &()&$),,"  "#))'&    ! %+/&"$!""!!-0)&!$!"                        "!'$%!!!'(#(($$!          !! ###! ""              ##'%%,),&%%   """ %$##('++,-,200.1*(# ! !###!"     %''$&#        ! &($% "!%))'!! *3664,)(&'&#        !&)../'"" !  #%%$          "!! "!               !%#)#'(&+,,))! "$!       %'*-),'%)&*)+(.1-/18:86/("#(#'*,,%%&%"         '%"$%!!"! ##$%! !"!%"!      "  #!"#"$!"!"#! !$! %(%&$**&))*'#!     #*(&(,//2/1+!$!#(*02342633422%'($#"#%'$$)((%       '0,1('&%  "'1.10+#"     !# !#*")"$ 40#"* "*$ . '#$!.*$    0  DO +&- . !+ ($+"2=4LZ%:B.00C1 -#!A' )& &, ",  :1><-) 66, H25 6j )hcQ{SLO,=:K@Bs7d g93^] IE't 1- " s,\,U{2CCu RRB1E=BC+8aF #CN[*e&-SMo6 B69xjQp+R!CGExgi=L4h8 -jyo+KzuZgj:8Z ad,ZC }Nw2Fj@X.e$XH&83q3Y:-Sd (rr:u/7pmr`In zRY#R>M'zhOudE6YJBf<(G@A,%wV2_f Cr.ZHdP< 5WOP|| 1B<_u;ragGF"%.Nfdy``3]amC-O`2DSj-YwLRxJV~jUj &+Z4=3Gf]"Od83fVSY #wy:m>2>Oc""1itr[W%=5tbA,U}$]kL;t0hh#g*iJ -*y"or-bgH_#n~xQ"Eeia f%AOs:$8,` ?HoXhla]QAuVB dW$Y;:}BezN:&/Y;$C.`5a|X(w3=,q|<@p;OnMN#xnCjTt cb3<XURTY0q3 Q;M.89k>WQj7i1y E0.l| gv :xe9vM,{k,+?C{ <[NIoW>[p@IAUj#RRlL? :gChUD+P fF!D';ln#;64H$p)zoU&t]3x,zN'(~=xwx._JW$[9@Vq{I.u:1d4 G$#mrBXSy`)b-_1I6 f0j`"E,j ,/IV? LB j\[*#9ZI.)5 4 l91B>PkQ|? M0D}~ NN^ZJ|q`+% tthjsh5L$fllk+%{=klK1##KFHj6jXw7m (sa}[j=X TzblK_hS: O`DGG0;h}OPW*NWR/32U`6ym3.rBMj3_  CP FA  "EG%D5kM l   M <- ;6r؅܍v:U{%VE  \Yg w03+^cb> cm$  A H{QC8[{\O DuKz E  }      }rY<23 \= Ŝ֔Fi g K~!M!0I=b "Ac(P&p"\GV}D0=P7 L0 [E > G $  @ q :jS CYI sغ0|Ú؄6nm *8 @1 VPe>\ VXL^6w2:K,|Npy N 1 " w d?c,O3 ] > )#iI<rs4zβ`OH# W  <O`45&Rwۀ3ʆ̳@n c d TO*.S+Z R +, T|3{ " SZD 8H  6g`@o;It! Dr eff{s"Xvu  " (;3>h2 cvO K} - w  x"sd[? t59N|Mӭ֘9 7~#<"  \(1Be3R> Q^Sz ',O.uA,"adQj <^,v^:/t4+/G1R kTxIn\~[XL/A8 `' %g Kc#]y*1tHFuV# j yCm*| FmV)+`u Yf3k V5 U"b~oSYN9xI A  e ,  K ( nyp6Y[G-9Ac; ,.e&tdLA 3  7"I 2LXL :,v)k$qkbe~$lc7>/PM dNbsPL'"  A ^I4Ol<aiS*m%*VC2X 1a  ^3#j}Ooo ~L; zR'YwLy,A99yd9b  e! g& u<}܋1߁FHE g  >A \eC(O<[T% s*[W p)_j=Q##Gt LRB۹|P|YV- x ~6!Mm+c~DBh2e dFa #&$=X%6+J8QUyb C^YQnp1dF WSW[&FpH|1[&u F( 8!: 'Cz,)X5%@ j5y $V = \ # "T'ma? J1 \ 7yaF<\%duR # m Dd.v~3<LؗC;: 1@i&kxif0E x4 "0 'Ji5W&sr s}RS=9d(lSe3j _ uTC -S (w)@_ s 5!bD n  ; w ,F f3KXs^ B;O#1x].'Dn(C>nXJ<Z?f\v*`dXd\4QUD\r'LsklFz871S,rW>3[^)W1QO*:  ^xUr5/HhPxA*;-MCU V*Pc `=%>8n6<B]'g]zja~T^P_Xt`4`2N\C"cQm<xdTwU7zq'jA n+05EPrP 7O> Q&x9Vl;'')=QI | & $YD F JCX a !#qoulT+A_7O3A6]~t7 AF52fm(u fuUzi{`f ޴6)mz\ PnqmA <S & q  $u 9+b2SL} h+ 4L/"\&(*P+!+(^")kyOY(! B| g0ނ#ާ< J S ) m ϘkʊbXaeK;RRN  &#$!$6"] "%+(U+b-~.d*G'.g2SO1 ]3  u|iCѰƳɁԍd

PAubf$/G&h2Khh.$1]3釡kµ)CdD}Qh7)A DdA'8uڪCmis$4_>O|ԣ!:`٤ĦBs)>;35]%+6_?C㰄xjuj̈5+[0IaQH=GƄB QRkCb;֗P{2jN(tB/Džy- Ԉ(wy~".ovj{(:5f(C< !ޭcFdDLy2n#!eKSd)QJj] w# 1}@b0H#3^2VL\׉wkh2w:!wut5@ZǶMFGQ eĉ-{ihM4çUM|LwAƊojp:\DDmk`=,_ &Ջ)\@DG`qvrQs bnlN*g$߶xpgl}Os"6B ^OkpvŽIbKP8)I?v<XQ!4`=|_>ؕ&ɑ7;6uKi/~*;XF>/#zoUL?8/l3hn$y4vD`˨Lb”[Fbr׮0<:Ef+bwLXem iWe cqА'TH@`1}WNnhpn%;-Fʒ(a)[8~{k 279 '/CzyI'6a QؔaIhtmj] _iz&Zf {IbcS[=:NJ2LJJjϧ}ln/CdĭMq>mbLKdhD`I$A)>-,)&u)v37o3iZa_c70e.9tg44-Q~ڧ`P&CL=Ɵ)…>;Ch*8E^nD ci?^NW$$PABW%1%i5X"ry@R}ࣷ%3*nAªE4kD)<SYE"]AG$=߸S Hv9}(v gt$dX#OLc 1>R%:{ +)2u\y-IU뛴x̽ EbLbtXQDIv!aNyt. &c|}T#!djWf޿͘tL~nN&c{AӋYNAXSb Zv i f#Oy)ʐymS{1;^x*~e &LUj-W\~^+43\ҿ:OccY);7s K h} d?@#s)JHS!%:#94$6XDX;7$BM\QQςrVbX :z(LjHNFL'E H>c$LӨC +3LgJ?&{M#nͽ Qy` !A6 aȷ,BԺFC A4!P{P~bX ;lLmxC;%B3f?y RW%4ck2A9` {OYdGfkl}8>q}G+bH{Akt?0#XGAd!aџp :M(cxBმu mKn=C60IH<2 'G7\2}-SεuEvWs@Qh (aweaI<&A'hzkH,W{ދNL?"ֆD1I( H6QO>1μ[r>atRk;"2lCTHEID,~JƝs*3_nĊDjn."4NѯdiS.q@YލOM3NL(` 2f`\A.(}"鐻Sg2 n%ZNFBD*YҀO$ad,/QS4ߵ+t5q60yeE{ANœͨ*3cȉ%k*(o_#[&Vd56;u"ˠCv)d^EzO3R*5 Y,$)50w,˙R'o*^Z㔿!T3DgO2PYBs*27÷ń|'ŒzmtúB뭮c]̭Ǯ|PLvNhHLgyX1*"Ub4>@"JM@L 蹿k9~z`'2ﻟ?X]GB'/#J0tKx事6$XLɓ߹Br'}R/<sEpwiu*E/8b/¬'jxJ${,Pܟ(aD '̧ k~ُ&  +?TM/2fGc/ĝLҟT蕥jt_$"JGBSʡ 1+Qs9p,@0XK;S!<1r{^ EhP-&oJ2y 56_X)e^=XBi߼G L9@t($+ĖE9YMLfP`ъBI_'TaBߞx^VLSƙ׆$7|wEYS%:#q7tj/O +}+%F.;r/ IDATf:?O2b 7BҷTpeR2fD'JɈH#y?:#-5뇅cJ5&wğ&pފ}EkUp@>Z{L5 uONő! A KP3ȎYQUQ1) &xkfwyWm|| S;. Z clB-zRP `{5e#`>_٠H}?O3I/ŸՏ~Lb#ѨhHq HH,{+@(Ԏj 37dR:L9b;$6EWBbK8RF]BnL92}Z-)'1*J %q*;*!j_(mQƴk J<~9 r'VPb, (l2XU|g}@)﻽/b،D+D!uAF ~է!~Rb J1BMooo 0(PVL5ƢpCjL +/ GOuխ(` zNCqmm`Dk#ډ$݅+ԏY%-VuwS&*G2be vs2ΌL=?)MT3*5&@f;7`l|H#3#\[A[gKٯlgBbZ _yj4j4rØoGkrS`{%c8>v':-C0GqQn|$֍ 2$so2 /R]:#'QPH.1Ia bV9:&f[hijR#^=1$WezCpWRCI4k2NDd(l|ƮƴEHQ 'lh0J"GjRlؒ2Q޼LSsuga>>AI%]c3nV'3<>Mh[})pg¢r5J+z싫$\Z_b=6ގz92-ezhh(U={(_h Н|eb)wG|:*f=v\KdȻm٪BdR֋L:p%8 _apb&z ĊDk^O֌EgN%Q} ]Ӊ a =}@Ma"K80v=`PRe(E>Gu/Dw.٣qHvVĦUF~Y~yI煊qH 'd2KS"[Ĩ{ M] |l20DKfܜwBlonN& M0 TOO*>1}iLY(ؒ"T %$K;K&Po,3qgg 5GBTBqc}AKb^[;R_%*O_ͪ$ZTI_\#>0Oo-Nxi,f#E)o_Л5K]tW/Rṭ7ҝv/#l $]؞S#L$UO!ȇdi _hzL?aJ]?zǤ?7EHMsJbl{+?-c4ˠݴB2!љSUO2nN~DސHeL!Ϛ$4s2*~ 7hԘaZ.# 56]]gMۦ!T) h/*HϷI`8!^u~7/60M<]"Fa;E%Է2ž=[.S?B*x-Vi/-|( :3)"*4Sgʸb '`R,Z1G*~'ij5< =K 2A"K6]R Vȓ%Joue/>+8+fbrxd(b]bp,fH~e ?r?i|H[4>6[{M\eJK|oHwƠyؤp#B$ތ8MePF bL3m:_@jjHĎmVB-.Zh]pFQ0zM2i2!Q?Lo@אs>L*.va00Qk>9%nX2>d.W+4ό1y.~ԡFHjDb2%٢,%֩B)0;l!0u;/1HHt$)I,i)Bp0]UJ49?iQewQ)M!2f3 0ѕ# ,bÅRnSbW߼$,1r`u%~Z{EGE󀌜E>.&LvTi>.27Tb)uK-DT"Yqfx_v H/\'y:<  TJ8 9a|=?EŃ InhK+0և#WKO3P'.ډ$f3~H-TՑXxɑ+:MuIѝ5 'LP"}Is_Gd构uwG<,w3,4>_"Vc<"SnVy&&LQvľԉ6 FbM;Xu#ڞ #T_ :)8"ӟq D$ YIBh/hIIx?~= /#Bˌh]wf4~ &1ֆSiΈb$\7'#^ n ^=-ՉF*R댘XBTyHyjJ }pOGC^L!Mb'8AIظ9nq@ ;"-|DgOt}ChAigPhʋˢ⭑:4i-Ph)dc!$#  yY^':]nwDhX(kQa)7(Dmp ^{9 @nEfy,Kw"wI{gh>E:y)k ]ď ^= Y;:=B}2"(µiK;kw|QxY&6A](mCN9W%O^s5Oe{R %" :mxY ankzMbC`ĭ`ax99L.3mG^&D!ah&[ sy*e>`tL. bdX/Z#Ga?0kpxnc.+PKW0vF@?|npƁJӸ+ žۈ? \6< U{ OP">"x#X1w6nPQS -o ˂lYt^t(~Ӈ1' Ʊ.!;" !ӯ[UE}`B"CqЈ,`vH0 d;oaNN>G) k]XqOxF|&OrEӝѐƱ{3D?qc,3uZ'|\W#('L #SQZ)dTG l%kIJ)(_JZy~fte]F9rϊ~Og= H 2tX $~F}ͿE9QN_{hqV/bޭ $!o>;K{Qr?$G9΢r,gYE*OP;Df*С,ƍUܳGQpIs3`gtiw> ,Dm {CfwckH5WQ/:=1ж;WF֫xgNğ@, bDc$iI|'gq 2b^[C]#XZFo g ғQ.e0`wh}x1<ߟyXCltyA9&2$&ubY|S?NH\+ dbYeO9ɩd1Z`\^fxxnA'@:-r(~o~p;z+T~/1N&3SxbOc紊Q<0)y'$5G,P&DCH 5q?&!9'ףM d%,UG6^"Csi<| (WY\A{Cdsat}q q] 3t0wxmdJ}:{ 7}: & 󻗉&1޽K<3%ey(rr,E"qJ|` 2Ϣw_X;*IaVx.OphDfL4 6RsT??Cg^!$.{] }9+%C$eNx8 8tn?1½exnHX$803o3<9ChtfU%cQF3$M}DTgTLM<2ӽF NT@#3g%~=60KYqs zLKJKԟF)ЊId(K$4t i%do7wALlJ#6u=n, :ڔh~t)O}'Hq r/#ЛK2͐lT_'`(=)BKMx|/0@dٔ`oŘY/ f 5)gLV$ t$̚ȕTpLD!ьI>"?\Gi6&ˤ Ev ,I u(P]~JOD:L '",=z"њ49Ng1AP? {֡~`O45MgA;'3m"dQUrb %1N^?#׻iLПUv瞅O4iX&z[v!㧀!uk y= dG'o0 ،?ENHؠnS.04ASC&>{ D#;X!7 :'|LwE)h~m2O(Kt~IGbM%v1@!I u7(hxHij0e lc1=S&לgʼxxj?!z'}v  jhYv$ګBVÇWX4HK2(Bъ:|I[ͣdBYXkmQo ?Sk&.D<B<[anV`L$KdJ=vޙ"?ߢ 8ңWWd&_]%ϒHiҡĀ^pC0.C&]or1jd, ykŲR 0S.n#A9VrGxLhQJqM'c$j3_|@yk*ą2J> m b|>D)$IJDjI' +Ԁ52[Q;O[i}ܱDi@c2;!R%ehE7X2-WND3Svil2]E )~aCc9&|4%\K"$$XZ?TAz(İ0,LM7{ IwVeGWWWWwO}bf0cpxR`EZ-jBՆvaٻUXZԱזI%&As;mԐZ}?h>"5SYf=MG{$;ɀG!_(IZ4(vpfv*dQ gvubإa֡R#3FGNJ0'1c9ך$[pA*$E;uuLS {e.ھ6cM2+EF?lnd@!pwDD VGx' Nskd89HV 9ԫ׈XEF}Cr\ J Nr3WTѵ1xbZpMV|. Z RnJ =WgO[Bbx8Z!k_Ǟ9wkum[`L ez ].fzkIht7ob,r# IDATϑxksb7i(w" MDk h=-1/KLh127D)Ԟ-xX i<"`}4Ρ)'"HryduCVtGS$ظJ70tNw_ FѭmX=i^T& Pb4'æ=k)TrVi 듾)*c'l_,QstveiOˢ"K ,CG&Hn`; V 5Y(ϋA^%d^'"]A%uX= c `gB_i;PBoGE'[TbC: 1%6H+S~33`˴ȞL:k8#W0G'hTQ_JiANENDBrk9B$OsYE=Nw"&p P& WtF9{ִshx)~b0]|f$̻'Ѻ cRFܦWe2IC$Lh]A^B@dOKBMa{8NoE{w;AQk| A:NczzafTXƼL{{F@#y"ԓH>B C2VNU1AljGm:<=:ǬDEu`- džj~d㗰G^["I$XgD+-^4mU-L&Qv-\f『>c;5PAA"+o^pE:jW&u K}7:C@j6xE#_ٌhz򡽛& %S¹MPx0fBrp?tN9o؄j&t([%z[}d`3;4ze/*x E??i݈UDOD:~7H\]-L ; %ydt3 O|u)Hߖh,[3)F"4)5\1-"ء ?[t&".!~COV# DI͹'yx5G/?ɠ( }&hΪ8y/B|HD#>gdh5E`H%}gq qJ>+4Kht Tܻ[MDMhO#kt11,әY|^EWMo@ea#]%5$Κ5G_i.6X2H6pZiգ+]h109 U0ZH=VL\ϝOhO"FQ@hpL@;2vkN$[ef^&GcYM$u!H4zRJ{C^4hax}WО[:KkY2DXi[cca>N>zE:bTǰ\4U'մ,vGT wEiLE췥_M\/>&j'EWV&{]D>T55ǨjÍѦJ6B1}+D hd,7MJ`BI{ju:*TyEDioclbkOj[^FmB$pgE]^wcjK<z9QU>)+QILlƹu1Vv׈L ?EȪ3}W 2E2Ѯ-\)|f?k-Td'XZA>9Cr\ F+Bg sǧU!TɬS@Ɲ ؇oV%غ0H[IXQjO{D s;(D,5?<-ޢ0N q6$?\'~J@'I4gT^_""֤;mQG!7B *陀 RHtJCet'GT:;3Zb0f??E£{ BCbhPVk;+97Y/b"KeW1޸E ;0,}Yb. ͯn}A hnлreFh7ɹō@|ZܑNޠ'DdJ7a-T{cY߾H8}zkVaI H,G]jJ"e1)hIqZ? TRMN~٤~$ɠ1(-H թcW}\K{wQ " ɿӦDq$VQJ6o$#{%E;ԑ 5T ]V_(@e/ %zu͑HVpr{lM;FoCo4>PjD}` 6ȟ*׮M2\F 7S=Ljs_ixmZiоGN{ 䧺̯)N^JSzΡ]m<RGe|^{sPO 9'u,$jf5kI|NŌjwT6#ڻ#74c8@mݬDRI7y s=0i&XDo#_sn#s]khv4ѕ q4Ub걭;L&'w[Z/2Cc ܿ[fdz6oJ_;0 gu]H- Y.F'M !ֵ37TGQMԞLĆ`. ȫf0kQ #{2ւLwK@B?v3pd(|]eRte>0PDQ٥}d ;w/MAgJC 6 eR;[iq4q&A{]x{!ќSS~,ĚU`t&WΛ3`4b$kR OV% +Zi_H+_jp*፻D+, )ab7`W]"4,% zbN;Bkuv<34z(EܔT)\6y>2忛A.1p=[?1??vHSw:+}2l:ĄwمͷK MsY6!A!1Ҹݝ9*&妀(lvf+ΨC튮G|IL#:8F#${[tm RQ}Wk>3KN^tҰC(V7$ _Z ݊A{{RtDVHص U**"Ys+gVe;%{B3$}[t֣tO#0Xeca9"$ģk e)[ ]%:MT%c{i2j[o\st+8ͿgXM]4P{z$# Pv$H]"$Uycm1p;,񛫶vZ=KgRbP+]#ߝ'= }N⺇*p 7 %@VWWV!LA~ݴM9DCQkOD7vHkiyjf7A>];}[DKgOl¹փ]#1ٗ| ?Lb>ܬF,?#k^BM2LC :CHUqvN@t|Jt沀h*@nE.H~xˢ#ZMv4AhMOTXZ*+ߍfߔC<&fzhǣt7)#7هVw_#T^]ɋhPeg"|$: H#z"%%:" FODP #t+5OWrCW(Z'N+1!Z:iGJx8ݪ靀tևQ$7a6'EQn4D,zK"9/_;o^!wGqD'0ԩ^S}_ Z>ve|SBGḢx Os vVA>.=! Qn'qq'#>:Sq?Fxy IDATr>7ݐ6Q/MAuC{1.nBٷ uzԵ?ߠ_T-hm݃֍H݋eTQoM3TyfA鞊(/-džHت9Zdrĺ LG"}jC|I$Zq3 zTM"T)EEg/q}Xz_ɇ✭>5 2ɇ/`6c* sr"R'Mc;Wg;~;¼ݪN' Sb͙$hyv+ ]c7$rWP"CDXmP6Fh_h5􌃟6P6ڸy"]a䫷h/fg :N7}%ޣ2#o }[Agl$8~x1 [BgM_3dd_W)sM1|DD).J[tٽ !S[sQLHKXqғ-MzAL↎ѐIߔcE;#N4 !ͯ=2EgڅsgPDs#$ qwS0QFy\O&Bep z[Ӣ+4>FgI'Y*km9<őra^8T[ʃUÊ\wJ.+*v^D躢JH}ݖ@\3?7"y̓%7/ۈ.-R!WĺTK%j2K/ QeTu}՝ېolfU[t|}f؁R~pvJ|UD* b- ;!kGh=HX^Y%9a-BlgQ.H|"9D* hc=]}?&i 9!9i{4ɻg@!yA#?"~u2MGg|/m1{4q{=%P{:z&0UKrA!wrTbP2кA!Eo<6L c5AHQNHz2 D_k!7Ěku =ߔ@WIUa{] $N1}8>"1(*B7zn'rN9b#Yػ.3@XIqyeքKiCe+3c±˦سvVŬ{ϴG% \bG}UF?s&tN/:__"1'gB"MfPY;EePbءo%s&=)>ux,u|;1þQ˘>ݹm)c/Tp2 "M&d(5_3.$uFPo_i Yb anDQѹu2-b-0rKH8E7/-`7-~CEœsjɰ\𥇬NS9-{@|Ec«+TžJ$gYG H1|Ob \2#NgB;#b3zB $"3$5#Lֲė$ RD|t=򗡹bۗ9`&A!fo3UZ=r}*+w5vtԚJ1%\0[Q\U\V:v>bN\\$T+4coEYK)*'zKbB]U'ւѤܵkgo&EͮIJT }j_39kHc9P䦅=Q~]f޶{'wܳ*kP kh&4fMR2)9 kFf43cC1<4RlScZiERlE-ؗ.*ԚwͶ'R(d$cV%64['@3ȉ(d|d3$N8O*5+52{^4y;1ٯDm("*UH/E8+§~PGw"dd(lњ+d:bP5D48+RS#;&GܮNl2w .Ȭ|*'2jp*QS#0Ft3?ؖP o$_9MuN`Ǥn VU6~Xgq荨Q ZPLbR~ A 2w *0 f-MMyKpRj-S omV%j*'?3C/q&ވdאg ^k7ћƸy*wdDl蕐ozC#2krŕh5-6kii g'tDa'zz}x #YEJ`k ab#vnBTㄵ:P"y_usXln:r+!1Ə&M] {׈vMߝ}b8g S -J3`>aY]g7 @BwVmv^yb-EBBg} *BT,xBv p`0(z ߿gv3uNHrC˸K@UDDΗ/̔EhYFIL iu?@8(sD7bhI<풎y)5OH^oLz5(mclGQ7YrET7.u˨V螜y E,Cj# R .Ob4%g pfh 'L92eڧ1["%v$,38 *&} n"WiROB׶HLt4Pz]xzUS»do.J!OfmI`&HT/V.nEF8YAڬ`C-l&rDQX=oa(Kt>v5.I>o#'3,;H Ji2W0&LI[Aʦu=\BF@zQ{q?z Y7Q=KmG$w:^dkxy/+er$2[ cxigեuf`$#t'MV?aթR\FZ`pa ʓmTB[~9w;ȺAd%!%d]'5څz ]jzCl I Fd{lL`oWa-%?fYL&{uk&V.m+Q&ƈ4eZgfIl$qڏ"kTD)G : NBe]SB?/)3rå#X_݈|hPbU ¥Ǩ#D"%`7SV>`O,KdǤ2BcAhƴgX_3#wh|-16cv%26_hO|sJ$sPa]]n}I Mc~F&VM*,1Cg:ΔڴTOLG`9͗ T뫗plc#? !C SCNڪuB!1d.=&>sÍ8%SgGdncl3H.QMAP4P,[hSNIdvQo"FH I2 gnOʧ2$\##n=hklqvE*΂$cod|ڧgHEL%G)#~ճ(o˘ثeFnzkHԱblIR!?M/ӟg봁u`<$2U6$C*g(=72^Ƥp-&k0*x%/@ 6k#k_Β^/)z/<j KyARM{\liH_='B2 Z#0m?QN ʇѺ7(s$Ә㐵Hobul cl+Xȯ$1썐feЄAH#+—ZiBs7d1[uZ{l#&gʐƇfeAԀ?/ҙ$  }V~z<{ԇ%̪މhϊp#$. eL\7,,zF`ȁD  KS/nV$M!}:ij.m D>z]'zM@0QPbkc%z >.#Eja!(7!+ߖD Br%"+YQ~fÿ0%Xb*^S2ObcM?sjk*j ,\GYBoK(M e_qCw V:Y5Q/$i-D(%XuVT*G lLN)oȁ{}͊~eZؾD+E IDATeHݮcJ_Do=ٗLNY<uf٣5f,{ G#X$ld8i#>;0.QO'PNȄ[ȅ<@f5ytlEǕ? N |#L?X^nc3P4'hr:Z7ߑ0W!z6FSt98 $zz F#`[āuBpILz}< YGvA^L.B"3v\N,{OiOQk {PRol"wAp/!6J.+Ŏ#<6#KI9A}6}Ƈ] AA~ ?pk81{Ts&lN;~N#]YQ;G -Y1 vy;S+؍cWnv'Q.i ?ܢ3 ?6@Y@HxX1[!yϡvD@58nm( +!vuCӱ Z箔iji`kkٔL> ###Hiց<)rv:$WC*l*0e^@ )ɘvocV9F@m15=W͈P`mƢ; ? ~DTLwH{I}q$ENe%$ɞ7ƚL<3!·;rtu"6xI5" / gDAV!DLyȕRʏ Z?qN28k.H 4z;MnkP3I{Z;t'[߾Yt1(Hh8qZpF,wj!u9ֵEYE1(5[bXm A47Rxi~>j_8=6z6+'$k@(_-=?;ݩ?/:[[i2f-ESx(T9[PS"\뿳"^J%2#6ObnxGκO-$iIz#8A9q6I6]ㄝf*yoDEXs Ě"oFmBb#7F* 3i ֍;mvNJT9`'H-?βіhBD*lpOoWN}כƋ%7. CՇt~i)/`m xJC~DK4v|*G%w%4Hb(s߻d]$ᐓ=:wΒBgt8c|A[7p13%DoGʰ֕0 {}~Q & 0kP"7AGZS0 kgͷP*w0&/+ἵF,A](EA^쁃Jo&@p JxFBtLJ )1GOh PՈ_=mxD`қña'\{b&)R?z{\z! eJ`@"#Ȅ]M- 2xMF{hYǠVUJsMD4|dϓ~$r]j~ "3"ccy_x2#1q3YP;2 N E\$ׄw\jkP;('W:Be'@cPALjHhY~pI2tD(c'RBU=$QgEX;N}SrX~ {6$'Sg~<<n5=Ex@Л"m |P*ޮ"eb>G-A$1fPЌ4j/@[ Q`zğ],iķFfhqh?7D{Lw1b[ې)DF(BlȺIL!~/2"_{j콐ing,T_-%b)Ċқ0 wO"1UQ*m:ύٗ'=I<;J?\!<<?X&35q}zGx!S:yXPM zik{`z)$JАt-Km3K$$A{F"$ ?L4J~#W(Sxy.vI%ZҴAo_GKqUߺ+{6)ǦE~N` )3Ic|2UVX[u6I˾L}#QgQݦ}vC8wih6J6G)tHThp&LM_@|h ))No!z>S4-ܬZGd̚+8g=ci"z7&=E8%, h(IXHi:*oܣ"Z@b50!&f#%|X6$e3zROZalJ$<=fp`\){!u|{8K 1my~".횄K7'f,r;AoZ}@T%zgN0(1wc>ֆ?%z{G: 70?)[,5/;Pl—P;;MိaL̛O) [}:%>Pq'(,aAx)%$.X_DYB w ~@|Zo%<{%ƾILblwvp 3O|,f Xޘ 0 i,4 I:S*(N Y߹?΋%zcV9c%Z _Y?8C+ĒUP13%W1!O|>ֆKMyvJU ϜXf^@{܉(vQ̃;m}Nֶkx"Q$>H=ܤt4) i}x4>y`JD4Ik`{&4%]ȏ4NRU­m]9m8Yzt+ڨ,-Й1I6#dn5-\8Ij 'EuXRεu$EAp)OC2ՓIz$CA͖4 oY D֕.忳aϯ %l̵A A-Q ~"[LXz2^1I~4U즵$Eq`(xY!r)F+ \q21ՃWcFsBQ_zR9i@i ct`]z`@a_'!sOp3JZOЅ'cڳ SOڐ^$- k>淮~iGD7%cM|L~٠ĝLc#yhHPCeCdeJ(#[ 4{5_N}Ӹ#!.>Su$Gwڤ= S1jF1MMZ{Bӆ8b;<ֆA1&uWePRS &kzGFO֧a[G$&yeʫs2x,ڏ _ ɵօ/;nN%Q Y"{"#(z85ltzQi,DlLH_bxMsU'&NG >QF{2]E:y8i!ŜHҐ;D?1$ )ܬ<1cV 0`DG\P]q^Le]K8vx銘iCx-.aNY]w*gqۄi 7QI&.IT_+6o<!MWH %,bErT/LeH/*(:LxH,:!GdEfcY>P>ᬇ(`WIo]C.k2l{'i,MuC|Geb֡Z Gpb/aUk^E}:J:-HgҝKXP/!+%§c(^LzO`!d є(?/y:7B,^Oׇn ɵP l.[#)*{pj7JؔsE@@p:2[i|Ġ .M)̚/*cgQ7EsAP;6Ald~ r~&ڡ7%Z?"dtl}/:3)|t]ljd]xFƐ"'Ѷ;Ht_yА^$(hAER&ɊxI /MC-ZP+&RP[Ļd Kt&UJئz$u{{4WDL kVƢ.dqJN,+dn5J`oFSc ō:q0InevM.N#B;7az&6Y?=U~$qo]&5GTߢv$H4Zb }S"vN}O0wv3O@wB'OʠdOo.ѿ}Ƈ|mm?>K/r%2&ؠ4^ ti}\(Rۯث,ec\T9(δLcIhu͟WTQȁDFgKg5HTbZs B<7I{ Hh=M k["H?{>1FmAww |UbTpt%O2g._a G:2:9tm۳zAoN4G6RHL /y3;Wi쟣W>EvR"\f<4Po%Uܴ֕@|5-j+@+۟AS$ ]4HQ9!3$+Bv@}NerJo5X$tɾVXZ icu,I;xJR7zG5B=B93K}!i1%g3Cr^?f>h":[hI4Ș?K{ߌt6"w'b>#-eeC2&zD cȡHBUaX;8E縋ZV:$*^c+J_EqGDbፆiHcJR~ex&%`1Q֣Ǡi_LP9"g}+*ʞ.`FBu(^GO0O@oL&sOF?F]xYO߈dh&L& p`=!0T%L4mmuuα4/27>N).6k2(hx3ND (}p#~$Xг޼O(xi'hm*!*qꇧF"K PsʶN hJ=ESLL*Hu7ڳ$F#Y)&7[?w\D!Ց`UٴW}vqE «8>Fw\.g=Z( IQބƂ2z.;ߡu /iQĦ y i$fj "Zs I*}6zJLCclu(g߸‮ΌdENhSysyi(4amdu^JʣDKkOHC)ޔy՘+ jxGE|3[?"c/ܑX%}Ny;(v"!/䐧& AV|ǑF L~ n^D>Ū:O Q0pU IDATyQ4X[1F^mu g$9# Z'K&|j3 P%WNB%[tvdlFܱwKHK|Z&f-1k(wLg5k>ZM J{F3i\IsA;Nڕ}K(slWI.FaAp}:3 .)kAW%1"@H {S -_A>ze#O XCh]pP<'O`;{!c*l];P f9}7ϱ#&$jezDh@pDg_Dn`ԧϧ%/vT`2@6CR-sHT{6|Dw5?ͱNJ*"w{~ظs|jU?Հ2h+v%2qԝ Xf{=CDMjl ?P7r tvb%?!AH0P=~4k3r,f䚐.*F$LZ]UXΒ-b> 6ݧ*m؂N؛"&X9k+F`ҨڴX_'bTS|7Bd3$Eӕ(0T5'X!/?`[=d; @a6?O<:_8܏G!צRK I788I݉Zߵ<{WjĠh>#͓&oi#* Eb;DDLvwˈwrD=kؒv, b"h5\W#N{IO1՞a=)d3=z64!^\mLM;=u@z$<櫯P@(R{D}5;2Y]{` iug:_#.}!^ZȊ'[#sBڌ t7OHDWdwgUGx{1&M쵘飫ݪڕi&_PpeUZ&rB2.3+ӾnWhO!dr.)@\91Zf$*1ݢ%Evd$:1bh-AhM#=`j]Xm2wb%ZCdڨB{65 Yf- H('1~B\iĴg-z*&bQJLflt(\9ōRM.RIKMK)lh,7ɢ.dP$kXݡYH$2q&Izĝ-V7V70C I|G!Q0m {uB]Sƫ e}[z$ƨJ?=Y`yڳM'*QRx c %Fv`IT2f|:neP}=+a?l5?pMF8 ;>45'q1#}19:R f#¾&Ydx9 sMƁ>{~Ad<}%`2 F!V}8ň z].՗Fp oUrPib?#7TNfP`8·|[W#Go:3 YaZrF|/)|~zl#se󌁟r fYPB70|ZV4W.PIHtMB.+4;(,Cc9nboCswRFo 8$*1Z@dUֶЭ ~$, 9-UkCuKs4+`m X]ĊLZbM L)d Bbf6Gf sN7N`M X|(,vm6?#b~uўFl #%EGY"'H$7BkXyY7{4ߺ,8hkM"ʣ $E%}Y!dƂBz9`6~RgݷbOG#G* )yU#ҺR,Vӯu`yK.Ӟ`n8zl4Q{0rc@퀆ڗhMa"u%*GCko)2$W"[2:3۟Hu9b}rqhV gfU?)ǧH/P#Bx*[ df,'6 /*`mH/j$I(Foyh?%})gŀƼ #cKl >bڬ sLN3n1I{_@6eꓒpEOuQiZs텘JtJ TW"yAwak+G(D?b%]lId"6(#.=GޔQx~^XkhDOy)Q{.&Kiޛ?Ir睟7窱1b !:,y˒-쐵av-[k[+I[-)Hbf0왾+ޞii/twU֛of~< (DǻIƪI)LX0w&`kB2K ӯQUf~%Q[+0֒tq74NmWJDȿ#ߊ8?B:gǙ>Pc瓌#1 P"R.^rϡ-,ç~DhwȼaP}oDq9= X|wmtn/hb'2HOZS>`>YZUz!)x+3;ItkG$đ% ͘qc")ƾxEDiMOm'о'T~'Aix;)O/U^ɳ3f/I,dgs>N+!);2o794UV4#$-OX"!aaM0Cvq[Y}ey6;fXƱ{A dvWd$>ʵcĸ >Jՠ;&v~Ȱ@(ŀhT0|@*3/f1WuB4lr΃45rDw=~awl/f_%ufM,NEM !W<3;#~,3dY1qg,ߣ[Kao CC>o]_HcGK; 1fCS4i>0 n%a0>blwi{WΡ&BЇ!dߋ?09Tq'l2?5bC#u+5ԵvO(]r Ix\d@gfwlѧV9r9fFU2!)CV,?@-qMJMkm(k]ܜ@DWGs12ޛ%]g - PN vRɵC8e|o鵀>- [1%k^o"4J+iދ>u&\c=P;eTGu@?PRdIu :qp#7ub<5-U] :UmXp}"TUFo[ʆl79 Tg/Atn50!>pL% ]'y '񳏓E$z_'HÜF?fG$&iXVkl쬄q>Nr[kD#L4c0t?0e=NHׇDt$޸Kb"NDmF8?Rxiŏ'{aQ x^Z%zYK*ABp@4BNh*ʞXЫDϏ2JR[m Ͳޗ0 (y8--F?%'b&#OՈ '!B$̭t?dz)S/#t6\yɝm1T|DM:(hUޥҟ cvDz-!{1KEʙ^ dA8ec-~q͑aƞzc2ɝ^نVIm>MI /hx9 A|µX \n:{`*fOQ}F/QW-0C* Z?se# 4ArS,?QI;wQԒD|"+ HGيWzВJH8I?%+#x rom^0*ۂ"rBm5C[^D!?\E|Ef;s&f]ƛِXl=e IvFM¥Pc)5Fy(=vb&9ém 2{ˡR b?^OhvI/KT M;fP`:o{&AIc#/3'SX_2p(WC{3M}jLڔnĶCvpCMޛ, ݜ@@_Mai5rá\^8&ء XbčQpњĶTrӝ1LŐYGs D]쑜9頖Yq=s$`ЦF٫ A$(?ړ@vq`5BT5Ĭ+$v"fHg18Kdn{r/И7|M~ Eh1e$7T{&UMc (dOs"+h y[K53 V<[r @|_VzCI]Bh[%C/>fV2,D cO@[;8f.^#^X%\ [ oFXuυ#$0K8%[oTo|:3$/F*td͗ |֩ f+ {F)0sgG ӷO?)ب~aaGf&}j%"X ||?cY":ss;ts4.~3ADXpQ.MLsCYƲR(%- `8.(P{,Hƶ):T ye| aF,Gq)8O1@ПN9S%DIn.d͉OJXáَ ;eOO0rߦ_n"Q*"tv=+ Y%A-r_P\~e*2=!g$Ɣ@QlXs!N$s@  ,_xJRɢ8 ߴ&" SŲ%Ce7iR{BucU xscn11JJkvX6J ~i^Iy1&:(8% f;)nd/Td&zCPx,z,Kk.ʬpĊ ptg"Um2ҡүĹށI߼0&-[.>0Dm/@o h\AZyrN>nHZIϡ׳i@`|6ƹ;Ҵ;O> "'^II7on:WL\Jy9ƪ ϶ٙKKˬ/] mZB_sKù.?c 'к ʎNj]F` #j~44zW7+]3uՋ u0 K!zGZPow6qO=Mf^ {+B}G2-sM׋bx+=fSu.Eh( c|; quܓt:IFj_v5#Ņ*F0T(~FrI+tVSx*B4ћtI`0L qW]He80qf)na%P/ IDATi[V:$q!f'!b\wi6h>eA +RU6zCHC4{MTM7 w%2+ޢ4e $@օ>sj6>;A&Hޭ5[!0C`WCvDODaI2k>Ocůbc9&j>3$^{3f0!} AӼ*`hdzm"UMKu[c 8:BwdЄQNjX mҫ>ɵT.^#VWf*4%2Ppom 1Qh2 E{Sy(^@LhAf%S.=ʫy@g^94)OTA DK+L^$)Yy -JzwN`}KoѝO0Z2Z{bS~d5AY>+T?DgAeL%C[2[H%{wPNʏ˚J{Ru,Wzװ.o $uX ^b|Md >4C*1SMUW}RYy}ԏ >4Y$4es0F7ԏD!^Ynn^ޓ*[4 'rX2dP(L뱱Pdy/9peNHe}6)\JTFs"N@mZ@{-ϛ"x {!l4{bnIoHqW&6q)/ܓh"Vg;mY U ^Z#'ör :I/b =e42?#3ǁ*>MduXR`+bT'Fyf( u8jCU*Ӓ{H8Mڋ:MBA)KGNU *Ոm!Yh, Z?s.\!;2:rfOʚ?ߤ(Zb rJc_ OjВR!dXRލp1J֗YƽܗjtcV?dɺ$]։}X/Pxy~ IT4NN66\ԁ;$Y}<<^c-&UhgEW/'i إZUԗUD *ys-"4c_~w:b-tg4ܢ!߿ur랬n$rKrל{CBs*(G$kWoj/!k9!Z0rX_=G=aН Rs\:" Jo;L~uesԪ@dI]@zԏ] B=?HǪ ;`G^.﶐4E`Gv?;%^,EW2(i~"4I`*FiW2#uʢVˠ:9[^H`C֐)/N[tlVfN;j\JlR~AfYP=pUM2D *ߒÞH۝ n-[K4l? άI8{d?XhrM>AJr6ܜ/߸QJ0ӷKח8q#)d]?P#GŝuѬ{snݥO\Ѹ^,`n(rYuPDwҨۦ_JCzMٙue$vB{Sco@~,QN^c!zO:k!4aB}PgٷqB4 =şrq]9 ;o|s-lҌ=>2,G$W42ӅEhIvF&sZLHH]*Mnp=2 347-@* vi‹Yr@jUaEՕwMnLHsv)SJo&k86Iaˬp*$Fu4!]WaߎZ*؁W,MiT5PP0m.RGp֡7ƲzbgNA_~T=!X^A汷=eڨF/r0ADY0=IJnNPG`o.'/NAيpԙ5b NIj{sO!lMAvTy f'peGe|`+"z` 2s.ү3It&Vu0*3gp ?y9BOfC*S(A QߺRGU-bXVHmD>{H؀}n>>R$8XaX6 )̍6/X!x}I5G[iw7 Pl&q.}C6; j "8X~wgY7Nw篢< &MRz+6GH[eAӗ;ܦ/]JK`ݘ1v?0+LʪĮ;PGu!q"_:l*П,=AFZc&by{ˌ=Ĭ WsDBoƒЍ}*V3Fx<Ꟙ!?Zj3k1PH#^QHb'0qf3aV}&OI ꠬0~Gsl@ "?srrihb5|K*$y>ý& N`}i`PV1ڂ`f b+~ қ)] \|":m6Y i=dHP In!P7Csh z ]Uqf7"wiVֈ?:~xi d0NjvCg?:3fRC1\y6<3KRu#3x9)*I.DT^ ho [JA.IKQ m( ,QQO@A埞bҷ4OAYOgV>na5<w,?Ca&HMIR+*f1l_Ѻ*B%O#3F}&qQn/\g6kw˸yH794N1yo"dͣw]SͤNvKOCv(p7V,-Ɂwy1V&x|aIS= &^[cS!3eoiRFzB} Z1C\WglncoAEb?1J)BMrG`@ J2du.`! zNIpr>,vH`()Xx#P)܏O@l2? C]eUh&ݝwh0.[1Zw-D@QzQcWȾFbVq!ګPgu 6ZGI #U0w_DB ɕJP7.-oDaCMZt0]UT=z4▉3mR_@ph΂9!3O+ &xšhPyAx9݈HSWb¤D/֩=kBbEAOw~\M!=8A ] XOX`0Q݃j13Nо˽3wDM%Y9Ϧ 'k*b= ~,[?;Y",(y}BYDQ5q_ƠAFpU!_!]SpȜ] s{폍5"gM߼ʈ C"0*gghR{.CS)Oo1+6cW<>[䶠` 0vF}Kt'u}%YLek^q!pm*N1?aTZ:"YK}o)"1Ÿ@?!yޒs>vh\Ew"qSO~6C8|LS%aBkEZMQGZIhβ3>U/wd~EP~yZq#pluq '@FӨ^~:b wyo] Rz :)|me| TTP/}>N뽳 l2߼sZOG*F͈ɗv ^zs1k1GaWD+:s%ZG/N4?חILՉ&pt3vGv Yf_>8CG^ຽMX \uVu} gnAarH{-!!zDg^0ﵱIfM 7UA2FpQЌ43txF4 Ϫ0uФ7/%`HE~Rk$^V.lBH2MZ>[J *V3wioUy&s(S?/Փ 2$}[MO{*0$u7@re| ۨCF&&1k(S$֤M0%Oi(@b5i/QvI&Ju^T=vuwS4$IOtw4d}⡃ZLV.cƋmFyDcs2OU+kM?6@$A]Ա*^V7btxAFY30=BqT썽u%|kM쯾M4Mf`S R;>`;$u&rcK"bfi Rk rgngSX@GWޤy-D Nh|!:f|7T?1!}kmz3[> co-_`B[Rcua٤,!{/ 2u.Z&Y:K&-L~c'@ٯ5/u 4݃eAXDB̃D<gqͣubϣܒd~8Q@u &tzhE@`yϳPBp&l`슏E o9'yy E(FBђn5%N" WtL!` +r* LBBF~%AZP JDTHj(x9A*w9 q,Je {c GMPG*ϓ+ofQ{rV!e< Ϣ~t<07q/~̛*z2}X}i5 Iy laDkl?fGj3$4T Wg܋xImF4,ޅg0/sO.g(] ̦riXnc9kC+!F?$dIU }*`&deGhfA5Ah XފG@yЀi=, <6ӶӐ^V@cP17en@nڔ1uG'2`;ul1 ѻ*Pg5ǁ?ҡamj,YE:"Ӈh+3  Bzuϝ[6e{aRwO&2qm)1["}>_ViFĂAk)OFaMC2A+:KFje"[ ':;y҇`xY=O#eƻ҈i̺J`hDd4609bÞ %12 fޣ  +ep7R̾_9K~8n"+F_Rj,|n0*@[G*8c 熴x3>:"PPn$5A+9&@k55̶/ mC3Xm~L8}($P3t/ JQI%jO2r>`2CJrweª:DJGtOS|Q^0'$t J@{NpzC?w b_ԓ)A{v:DE2v @'!I Cdԟgbb̚Ŀ?MxyH"ԚI:T^q䯪ff]a9ci4G<~3[!ENkV=ThX; @=.І I(Q}qHw^KGq"8EA@hH΂'m1S|{м$;C:p%F-vNLLKoujuiBK08 cw(`lu!͟-!N{L[Ghn5'JK}!gG tMI9ɦ֩jwhkjo95`.lcCẏUBRGI?9jѧqƘ[U&@)qƆC:jv5XvQ.[cFo4zKLP|%֬q,K̀~5-⺏ }^63<22i{&~ Ԯ,ٌpSЙ[bcK+~0NA͈䚨f rª~Da++-YL!ߟڲK]ek$`3d$G7&wPi)^ 57ΐD&Qij$+!P9P kXۣSRo[Xwe#5g*}G_i>|cˎ q.NRYaeAq1>Z'( & s$Q dGfSs1O}hi%YOSY<-lŤ͍,111^8EH.(]1#x#w E #)}ƯDoBޒ1vj6ՁĚDq࿚W< \j9BޒՈĺ\!jiwƸE~n&[)AV#2 # 't&>u͖0jnV>>d.x]yc67cPb,nT1Dݲh4OTV$2b7*[uGF>{- ޚؿ=MJdoC_ g6IOl~wc2EutmNU]~D|FM0#®%7c+1E\fN kݓL ДQ9'q̻x t 5^w k]Zw?{k9Wq)wFƸŘV#OZ]qJ܌Q ŕk%c&t'SϜĦ,~$R -N^%SQ }`.4| \lͱd/QҦ7 FhIjh (vZe*6ư?~T5Qq?=~・ls""z>7QR)|˺+O>$[ŷ-^~_O~|shpI$ICxoQ$3wam"ǴǞҟ΃$e# 0z(oWźo$-$DyHN$G (߿!I1Z!N[";O)Yc`%"]]BoARΔN$zܝ56?3$"nAl)$˿-/0d%EmNOmb>|cNd8OΏ;B1 8_|0{.&YggvQw7q4[Pe3jOH) /^.'=a1tA|weJt${*Bg*&@B@>R!}ߡ+ST,IXs@OJ*W"oLlU5BbJ_I 6ՉQC^A.L( - qbd9)q& S;hk^@BJoBc0Rϣzr z~0mG- =h߉z{#sI.DWnn0.n?fZ߿Dڭp@N7qz:rGe\ܯ-'wEelLq 7bW#@"OJcؗ\΄B$I*暌sG⦁ dmgF$68oG;&u:SՓK6y`F^ vW?ߥUHӛ']ҕ. A.d2Gn uc0Ǩ4JגG>} `ƥ]x^6;خA-f^]b_7F7Cr'/yJv>G5W5ʧeC=2~'.i j|ʩ~;gp :]+*n\~(}O075jgo}D{ 2-BX|9Cp? e$3"e+23/ k,QK'7բW؁ \cJ{_͐ ] TI-T-΀M6NQAE`-~IJR@ q|(oWWOfQ]:_bJt0r."-h?>W[2^RAoKX˿>c:uW^y]7~7?7 Ξ=w?'X\ ŭ;5F@`y X`| &J†z7^Z$cUʭ>Dn87+vc+$ȚBR!ʗ@ C;%TGNb'W'uc6_:D*ds+* h(߹7{h q@b#ds'Vp8CLcQ!٥R.KBiҩXK:e{!jTD+$N1&zǞ7nOi 4<(x4/flϥ2}C.TQ+R4A ƿۣW^Zs8$@8^epWD)Q돛' ߹Ex3bF~P2>p;BU|XEx{̤nQ_g|U]Τu-&n1$&2m?3Co5lHgRT΄&NL5$~D}uz ?$7P}]Qx*o\!xk=o & 27z>>CcOtTBOM*CkZ=SߟVŀxG 95ӞT2 $$1q,=0XBe&z>4[SLoBxxY5{0G1n%1]VkNper>#g>M=.kerM'Go2{h8Ԯ- Ȱ<Q ͙V}ȡ噌ZjDfNBIL.m }wƞɑ[=j#pR!}?cHR~䚘I BkF=%$_Z.bSP|MnܸگL&$/~=)woKA2(,`:[7[$fT2B}t G*upD3Wn#UN$07\ԞA )P$m$[)Ӑ-hɐPU(K_T_O|]!l4:F\k _V b#E>:"Wn5=  zF0jrO\ȲE$J*Eg{M5H-x'H}:͓#!-_D Ħ@a=2ӟ_$}ae( 2 c /)b kt 84vRŕ.^P6<1KDzk2L}|ִBK%*q AԻDkӞHnHtt،2aeB%_Y ʥI TlUT=e5̷k(U>a6aZǞHgOeȽU#C]m_}u2Qksx'_G_G8禅m\#ZXFZ|sLLsޑ t3эS*( Z:O|*WqW>uQ_yC^*jiJF4L2B:ON2 l>O{FV$*t{vl|4 bEtVc1v5&xۊHŃy,`4_IP'{ĆݎhOd|-+t& *6DuO[zHzAN=.Q($ebғEjDE)Wֆpůn#LEurM!!6fJo.la~m2VSeq 9WV@VH ekW? D-ІʤK\>m $J{-g<# !vEvq1%H|sC+Ȟnn>3Ķ߻G{7qM ):džDΧ QsC$Wl X?#HҙTP*D7VX=dH7إx1Ajţx~"%lRzs&iR>f&FwR"HChHOTNI7LRFt&dj?Y-HXH)܂ؘX;DFo¡o#,eܱMn)~HAGDWnи}~N4qh/&v-Stg2aY-M}InD4v%6F8EZtfLRgQSYR_ cXk>>5]>ENߏI(<5#*f;T$ c,Ξm&hEuo*gt5t0b]3~*&VciAPIc [I|rz_Ί]4(ȾFi븶N2"ϛ$WdrѝX\PVl=&j*jHi:D8a2QSyyԖJB4[kng¶}+4Zx aZ4(mj9 }&Ԗs-M,PL|mQ5ptR︂p]=C;*>OzuSŀḥ揻ޡ^PIe>JLDO/!oPk@$ZCLDXVa! lj=XLxt/ #u !.3; 5ΔL{CE=S4&LRUJqCU#1^N|hf"ҙ~~%QX-J էv@YQ%gHlhd IDAT2jFH}?c-Ktfc2/m`I;  R 3-{M vH7>ۃ`O }Ss.T5:S0kƪt+q,e]*Y2RЙX@œ2O'*tqQ_i$&رIPWQ;H{r&+'pڙ!k}^FLAMUb9'04k'L|NyT%ύүTZ"Vd7lO(b$̑Y>+|??qѠX,>44D^c9Z5ڵW^qn"݅7~xeK'#-SߟAC)I6@- ]Gٷ ɏD.Ϊk2>+"K/)&4'HoADn M1K-,S3ANWq{{>Ko ۧ8 vʧ˨onqGJx΍._;fmvVE$V$vT9q,R$dGfclA6a.ZÜ GMmҨ1D'~>f#$mZ/93?[=&mtme T'Z΄ -{+!Q>#`qYo_ ZZAl>u7{XQ̅{: DDrLY,4</~N)le?~Vd}oֿO31Gj{ENOh,iQTj(ju y>5C8z'}tԂy0b{bX(\g hzKTĖ+F` D*Πޭ)X?Sβ;9$\5q Km6B5!0C^<6*Qi 뾂_ H}&!ܭr/+򍉍Uq{/%X\&ʈ6MREvW*;gQ~W`sVvwXf`mĚ|_Ah,i)^-OhE#䨝iPԟTPc~a_=)2G4<;d 'J iaOgu<^NlAĖ~~Ǥ@Hd: /˨ m'ǡ-R(^ >/zK|%3)h('zWd03':jWƚk[_Kz8y- 5R늊按DD tR_ M\Fb)Q y-TF(Ϋ*͋. /XK}@Ti4v 0SzQDEUZ.k (~VGq}1)Q͵9/ȼ֊ă-2q#u!4r*­'ZP2ow#(b2U0T0B"U(oq'ȉqe<9K)K"Vj= e;oПs>ziP#_ 4231ctA&\F,@a`}eOoб໕ VK26ㅦB(<py:??߻[ %`c{3$2CpPXV$7{h i|%_DH(Wȅ"k3CgbN܆?ix?T$w$2ȑD{JC܌e/ZRod k5$H(A _JlYh5CZnĔ>1t:@ٷx]JեMlۯQg oYA9KԢ3-ɍ-HZf"'e|q2MoUZ"*BQN;|򧖨Bo W-TmЫĄe:iR"Ƌct'J'VvQ?R GgЊZ*$>:a9Ա(6gr>O(}c:PԹEA9wcfGQz>F &*j`xh_>(Ay"r il!| ֝'!GHJFcYQ}37\*(2q"M&NKH~ԵQn%EIz(Pjg͐O2.69jO =YŪISڇGe(T$LjU^V=! ٶ+2O-+"Wm+tio8vhJc"슌/ ҥMZ %+-!әԙE0ezǪ8JS *ӚVP{BU{2$3t#=ƿe5s!+=njmL }E}Уx^#zsL!(cyXOPK3s2?nd5FEȾ_:Z:^V&`"qXH[0Sc$A6AoDpvǫ4v2?O؟]"#;>ߢ7banJL~e^9Kᒂ]v,cC&CRKʝ$? l;L]Z)?AB;!Z inWRHأ3A>;pfAR"q8AoDT :2a. RiU3ȁ7UD- SۧSVp2Co4)kP?%U*_#wv]#a BBYVb?-&#JGŝhMZQId=5~=>K2/1?%E'a~*9rs.Zۧ6AV\FV%ΥP^{y4%{P^H"u?$Dӣ~\r~Z3b!GkkO!(%H"S !z(JZPHVR >~9X!4cRKZKCUW3HGī .^ǗYO&FMb䜏QL>.X]O/`WSn#⎄x릎gm{[Kg3mJ^&cBU&,{X3wuX#+WkWiv7pCѷ =6)z:gܜoi(י9ĭ;ku[%}rtFJ!sr"bo !3p w6ybzr&__E[!Ɲ0O=Ak[Ofq-nި"F,.3T}?>F3V~D BJA\eDk0e}ScLMY=5fKtb*jt]:JfxmVae{8Ҡr|^0A:̷0ݼ)R+ip~w%dw$f=X,ECѐMZRIJS=5U8//X\b'O0MR;Zs ZMW ĺ@z z VUYz暰(%m2r/HguR0ÝZt!0%2s2+/$z2&4%(Q?d#yfR' |\#IcY%GiE˄(^PRYBqwc14 g1'(R:X1kTUB{+=ޗ]:T Zo PS ~fC6&Sc>I#9$:Hw#'J_cX o@jNII _ps2PLA\!^bk/I(IWCTddf4+"\`#̝( u֟"6  3#y sA?3ȮƇ]@'w= Hq$ܾ6c}GkElvʷVX{&Q<&~wr ]0t%{UI'|8&;SwF?$T=CĦ_cE,D_/[ݻ{qYj_xꩧ~#aAX) )WDMoQ~ȎJ*&="V2QzPX]3?Τ(|$ć>.yiE: 朁ڕ^?2,2 "ި8&8~,w y$ !gDn4Rv|jxD9+K %T$Af5RaRmѭ$`fh*!"k[1F ؗ #R㽴6 @-8hO ]zN?Z/a2AoXǷĎ)/T ?%W 4m]ˊEUlQ.82B`JlL\O svpcUj"\[\ܓ%v ɱ@FvDڏQc 37E՛bnr!\j ر''80;ysI"G Kړ4D-o C M"NȅL=ɏ5Hc "T.ԑ`KlHͷe2痰+2D.@(2W ?fl;!{]Jo9bBfB{F"s/K,Du>~Z92-3Gt-ս6nS.E`䳂4/VHP}6ʨj˂D R#3ӨfHi`qrXT6@AŐ2r֧KX{qt! Eʼnq *QM$l :tYW{vToF C 1\_yVGRzl<>tDOFo e@b_z,R ͘GId7Y?T|jW( nQk?1{IwdYYYUYYW_5=G̐MΌȑ)XYMS2B`+AX˲XYII$r8ᐜtOwWW]Uw[Y- @23?8*QM֔PVOV;[Vijbr0Y}z/ HMwxj,"=/9<Q7 UW>z=r k'Pw~@U?[(hHSPgpFTz?`-~4PoHvzhDXhnm eFdZdmg0:!n>=%7/<8c7\ړaUWƿgXmZ|:cJO*/wz7{>t XH. GLmՅ S/&P7x3c-^|+ |Kd_PImnv]æF6C9]#Aix/BF)4/!mdžnܡzX y>T%lڡ sb/)\1% *S3OD3o/E/K~"^:{.3(n:BQxDr8C4lOҰEC ^jB=sc7RAzf;MM;Pw4cckQ mgd IB_oYqQw Pjْdx^OްG@@z#bY0.Y$NS:ç ˜ȉvkM|C:nd3kg}[GL{\QmH H?草Oo RzA nIh Lf@`=qk&̀/jJLkt G,NURӴ*1'/ PA 藓t4p=zOb9lpg/9Vl.X9ԧ>P?R'N`޽oxg>AѪ_p$,c]]!v>9z6UrT_#R!f]n"Hv!h*QߦHZꌼ]#tq05AE)NqI:q?j U]Ƙ/L;F~*a`'cLəPmFλ^cEA;  FSvP%= Bm(@O-}0^A廨3S'vqiy MnSYWT~Gg"F06:4gĪ!&Cʛ^*؛="Y& qT'Bsd4;}z0LNM)Dr ?!Q|dEF0<.ayN qj],3|7$T $^BEoE$WBW[/Q?Au"9t 9ͫXFX muwQ(##$ԉ" (p"Wj0;{̖ - iau?1I$TZivF=|wD6I=G` $-2XoFJX8%A6_LM 84E߼?;NO{JO'к Pz锠/34/Z Pzɹ6ݩ8yJ7h&fb֩ .IܪJ{&&ЛL$Q9e7%NR(dܔ]Lі)@7 IDATF(.k'tHd?/qaEtOXs*xMq|]!{{ r 4Ag*"d2c?pT4 [X_hNC1P,(Lɣ{+U%r\ 2/2 Pр}z>}7 _ZdTɯo"E BQnC.g\@ݧ'B(~{ =cnxq,"Nm ݟQ}̤}Fүi {vP/Kt3T%ihQrG}%?DꛬY^ÀXRMFM5gП@»2#BuXb+XN,FmԠ?͓. Q&"6a&]}dLDZomɢ!!%)Q鬤pTKCD̪ 7N 5S2\KEuކڕ&1eIIG#̖z"N*ru-LHc1`wMh {Ds0gգ!:TqZCM .1o3ldY;^q١7cU$xC΁Ib@ܓQ"AoK_[u8GzD%Ojƾ-{^IpY$c8_p:Z[f49=8^Ggt/R.[њ0H+qO3G۲րR}i7/&ћK2!G|N#07,O?PC@X5RI. k=,u7xSBkFbMrQ@#m穴גih 37%N)#)^Vd̛Ķw\% #]o3FC5U5S]@v%rmg,1WX2ښF᪇(,rFdlY7n׋Mȵ)2!\!-Ӝ<[*&c x/pr+${z;;ώe(DcJ4?R=%ue|Z)?O4+2s圜3 Kij>;8~=Eaj/L1|O%WW0*\ h];WPYJ(h~"YM/ʛFT}7 [m2j"U(5:)}rXmn$V5\tət&CZ ʿyhcebk3bJ8F) 2NG 9NNGH 똞tt{Hqy9\&=<<$hr D}q*z%%|$,%K x*?1A:r-SBky$5S"E&sEasI6^"q+I2-ΤPsjK@oo›D`J-Djd\*fQ7o&wn=$z &U2?;Kg㹤|bMW>5Igy_X5#3yi|KH㣘ܡFu4OEZ@_UZC55+&o_AZ r]H&x88?m)wT{0EdRX.eI/Oj$^E]E["zviaS~=~l= +z ؀ch-WP_*?H|-ċ+]r JQE5>mcKȎLܥqbȎmH-4g [oKu)=BPfD/ <f0.̋g$ΊH MXc梊Jg-]3$ 3dsgCm>ګ霚G{R ]wƙS/'UGK:}:Ϫ(]UZޒ^e8:PV, Pܟ90%:QX9CxL+8f=" zdQ; \D'$N )e[҉YDdjTwgr(skhėH΋dH :^›&ys-2װY{!FFEqFjҌp'^"ru*dﹴtK')$~ae(Exu%%kc^Qf46%IB9֔IB2#z9j:,ށq2r/GNf*$:1:L]* . "j ,ڃmR?"sT!RBtwzC_z|wyn L?vc4F9< h2QH t"2eb;4,PUuvHCH}XQ*3wjoiyyP7BF0?B$4=8GD:(;6;R;R]a-89`Ow>ѐh:&dڼ 0%¼K`fyzuE~ VSxMcYCLJFFN!8kخFJL{@!BS*/(߯roWɗwrm?H`?^Hc+wlJn!$mİd*NS<<=W2oҝg !޲к!rqθT;:ƹ( 5~|ў/('}.9nOv=OH$$3‡PfG\}2OX #nj]JNa|z뺉b|# v BїuagٷuܔL(s'fR[Еolȁ=$('+hzܭˋGqj /cg+:j_*g?;NثYl]GatFJg TJ#YzjB ?&23t'#r":{*Z ߤ5R݋􎌡uRNOR3l. 13+䯅v) (>[[#g4H!i-*֋$ѐuhvHSe_ȣ*5 Zpjri=4ҽdPȑxGP{ l w(8w ] R1檨u.RS|'ԎM1,ԯo-tܻIT)e|O#~ՠU𑐮'qc 92SQ/ƨH[Q wHuK#T.h*j_y/vpKCވDElKMk5~Pm[.[CIBbNt&o^>ZF2vr=T*"-!sQQo}& ި{6TxK,'&Q 2_{ONYC"sM') jJ!A#Hu 2<~z'fyFͭpsK!s7 D<%zDsQҚ4p$o\V 2ljB"_8Ur/! M1A*Ž(27Dwi}C6hWPM!+T;D~n4i,2*vDl9!g&=A ORTثiC}_뛌ԫsXaM|xlqX˭Mn L윆l{ߕE4+Ma{P#oh}$F#v[;}~ާ9_tPt&"N#`TfAqkwIJ;ްJ49ޔw>d?W1Ivئ4=ZAʯ[fßF账dpU^)0JхW Cm(H\!R_ew^בATP1^aVQFU1ִZ5"UX"+Bo 6W0 uVmCw3Nf. w3"VޤA Q>ωX-vcIL3tn |Y!1^RI?p&]D[5- d`l;I`D$V#k X4Y]1Y~Q8hY(L` ,I#{';1Q${K 0` uO\Uz#jC[! z{=4)`ouvZ.RQΘk;>Ck(+'B}lDX*3]$=%+B2z ;yQ_eq͝M I.FX߾Bsb_bȾ>R/Ī6z6~DjO8Cmk.F+HnFp2gˤxeDm[S2!ث[3cK-)HLߜevgdpv)oIl>=AD/!z{XG9/6ѦUneb?c1Vu4XL/!8m$ ВŸxӗo\AݷYH,۸C|?Ng\_|J#}q#y)!I2bw +uѫ>6U մ@)aOxQkK2ip!}t)W/=VB- M\UlBc?;ՒSF3G4A6}P-P$?Rۯ񊏷sD7q4J#sJE̗/bz"I/1YC>sq:C_P1|GoDu34HAa@g:NHK"C)bCBP+z Ŗ^R茉ȾIP="ۥ1+VIOxx{hRėX/n8AOwL7"S/ќQ{71HHh Z|鯺d8l<'Z "YXְ 2)dDlJ 4@2NMK5-^g'ZDcVA.:Umb\/9]?d %06^vuoPg+Fk6"sBCS]6+>֡g%C (Q=ўI0fDGoDI؇l{Erġ {Lϡ]%5F? 6ҙRL{6$wE eQsU%l$VaO{sG2y{O솉Q;PבS>~2`Dv/mE$IV}"ϯ95A IDAT̽ ;7gIBC'_Ѭ-w+:Fo:CkLԎIX>@WX_?@~hj zLG uO`үf#aowKD (dXM&␿Qk.oWb dO"4W h̊غUQeu0 5R#Wy2A@g$R%6j)D_@ʳ\dh?W˅oߧN!NK`˴;L}=$ w=(z8h*GlN%aEQ] )LؓndkCFe07Z'H)&I#v%%7k"/gLl;BV اt~]Hbiq}U(ƏM)Ll[\j(4| J"Quʼny3X^~l )4 `YKXBXoP|Ghf]hxN`v ԧ[<5^Y9_vV=e^IO:4w0LIj_j6:֑Q[WJ4x D@޻Ic\&|vYɋdlkGe|b{v8**M`-uT'މ* +B=tIj| J#ro-anWэ3E0HL!ӛɢu"#&l  4":ѽy{nQd Tß_@~㒰.X>jmwL~@ Esw /S;A>vp`q JhM-~(]IOfݝzK;긶*Dp `W燢L}0L?Ĭޱ-;8(=-NѪ:yVwfC#l aZ,>=L7QUSCykVIQ:D5 &0\Dź$aO@ d'{Z#Ԝgrm(3G*֦KHPRW*3~=I &HυW#:cnZ8T2s>}^6O(DJDN@`0v%Z{Ԏh;#lPܔjOB`E;7e:;V`a}ݒxߣo5 vxJ0 FUW9YYDe}SpF(Va+*Ƹ6p@D[UމH\!0ak-߸Cgƿ;)HO&7ygވ,*z9n{MYՙ)ĈϷ Oj?9#Guoy!rufjǚ>VEgf=Ol~}ʑ" u'1:ew tcqBM(7F=$Ta#c$.{Z8A7KNX*֥%Qdݎn ?&Kw4Er <.j?Q¿;b4d/ 'IċuQ*U^=:%xN*$R֟D Nw >{?_ϘR1>ͺOj!DN{Ptp:H'QeG GEgLt[9ck2tnǏXP̀K3t%d=UzfJ{4I/P6jC5P;c8"*RЭZx[2[^rDV<9~ʤjo&%P"c[M}κ(rko ̻>[soHl;;g-r;C2Esh'/TQfv" LTՑX)'E毁QDKODž*[Ϊɬک8(.p䪎 7%~aڧ5t2l o#2C̊ݫe.ڪ H;X<哺'd@澏ځS&khX̤(8s[>9"b 5nɤ/G}֢9U_Pp0sE(u)u.2_8Kn !bbސEc]*UE=o+yR]96jiYx?&!-nNIbl7!1C $rw.&a"H wgr' 7/ O`,7/b u9ΰ}G}N ޡ1M" A "Fݤ(Z.1d .rSEz0yv`if246O}ã2P -haIxDwT_4 ktJfUŤb-7Dt0±b*nrgN<AEf~U{yZT: -c<"WcW9^|}LgBF *ZRMn@Kb;FjK,N}#;<-VLa˩Ī֦E?v3#TQCl8O- ]"Dg "cn@c?9M֍ RGtp*et+oww-arhp8,M{pS aCSR1:EnFGu#eEz93FuqN?Z?֔H.;1٧݌|k ;|ط3A4a؟pfhs_>$YI+X[C PОjYVHW^y*`gj'| 2?;K0;»uǒ ` k]Jb (kU@.*!IvZŞr=!O%{$yg ) ×8!? ٸWH,#Y&ցړ/Lxbq E1&Z7..'t=4aF>Z[&ϳĬ"NN!{ϥzT"ڐP|Ə{/%V`e)H"6~z7Ev{8%*|+;<>2P Оd7$ʅRrc7vv ibb3qDI DQHER-6)@M(_]A DdV{{>@;xIL}God\ґ(G'͸/-69T)Cw.^50 5`J">C}+A!nTۧi=W#D|:9HL5X-q|x}yq͇3H,LC ƓU!'o3W&+]KaJa:P|GPDb'Hvw)dUWBz?0ɽx}t&rV>%e]_1UlQ-NW8t ;HfÞtqsbl0̞ d`B3jhVmxփ#"1#{*8i}$̆ 5B/ϰq=ܘ>M~M:lWS2i6Egxq|"ߎ2MwN(LgABk* 3HL @EoLOއ{ ^/ }S!ZuI{b '0T jURYR~hĖD;,6pZ 7iR8ץϤ?-26dԄj+QFNc"E%nlM!F !A7&8ClU{{xM{=F*t SAK̔hJD! g;2R;^L$aThܯVm]zCj(92] vF&KgUb+ {'F3h BY!s%TD3zu^$!HDܗ{ pJ>t?TL8:!#8whC3$dEǺI:c5LË}ZGCLlCBàRx&+;z|y&r=d73eF QUt=1QNYN }ֱbrBl|TPC&$s T >6^ B]EVCԜ-:<4Tv7>23'beD~4+@O猊+t:{G/gL>hw7p3vz~$D3 }Bb?03Lޛ˴x)Q-slo_q%/dǸ 0(+MⳳewDyS +VyX`ꞟ̗bn&BZ* ߅unE$J6[N3u◷n,b?ꅉ(hO$G|jh#t+UVͨFdz^MHo.v)ߛ| _ @¾&ng\P0JoyTNOêt}=ʳ&F'$s}к)@aNsrVgCtVF%4:)腇X9z!Ntͭ)u{-xwvFNKSUU,OKH] ⁩9Q2KṀl=,ϰ*~Μ)*Y>u$IBv䋉N}ޓ)kQF *$o: ꉽtN".&X oLd'čClĐS.V#V^bT@<niAmQѼKhOX ݚh^Z u% .o <\IZ+QMNS}r;k7l}}W3,7rح^AN O+FQWQՀO\{r{Xo*_3oѝՑ=^ Yhˬ~*$JJl)FY笠2<]Ű"59 ;',)jKS+rZ8"Xe[!}Rq\ȎeMsz~F76SXlib/,Noch,}R`ϭ6KܰZv;nj=4yP쟨slb Uh-sFG?-|(5|DfKL޷T'\7hVq+6ru$yn\ϓ}7;d(ev@t]OB? V/_hKgiZG|”KwN0\.kw -`icLXîd xpsLf91ߧپdX5~4+BMP' XW:)шM f\gq G?>1yWo4NJ9z(?#sL\wzIq)YFSw:G8GFd/t mjfP_QaEd ɞP|j݊@]<8)'v0TѺ B"]>oS 1?\, '>J<;ACl)P8`H\o,.][Gfh?S]B7fH8軫?2:CT 'GU kn9" IDATRSz,Iw3ZqIhK%\e*Hʰ nN9(TN*dǙu1b %34?>ٔQ;+j@(%UF#ܮ|5F|/ / 7)d{(jHUHa#AO3K&^=?3HK$ C:HAh?SMXUChO:!.i*i 4s$U({ΓQWhLבjcl??ptf1Jdv /7U@"k!;EOO! Z@!MZ$m 폏a0(:FOu'wA‹ ٗ0 =(|ê8/%DaqcugR |&YD\dxQH u@Bͦh~l!=>{u \¼DU4k䮸hW?<&ݧkh}4ݓ_ᑹwh>Du2FIaRQ-WW’?`Ϙ-[iZOz1Z?YԑmclJHPrp%kEe:|pV'\80J!8pxQEO z4x2h2=S'X +!.MS)E\e#goQ&v(&ӹ߫qW0L_C s?.NuO:)PC|)FlX)n0:qljM-8*ӹ? }|j`i:x]2ƈb{&$Xt" Ὣ(>nf9 \W:|fT.p!(P‘b)lˌI_&t?Ll_K3EQ"b^~2o^GBs|fv'oz#uZq+i^r-/|f.|O({LCb:-2!CMu#z}Û |Ev2ҧ8F;tYS&I.Z M ;FkwRo*N4^!EKd&z$b0?V $̏6$_+*gMn#!Rن2)q䨏ĹZgn옆_p8u&\P 55KUNxQHX;/1zxLg oIYpvT+imy`4։^5 Qb J {ЅKh[[QD86Fv1 '#̽=z('U>t^qH*kE\~@levj!)gK0= (_Kؓ.҉@'5%-cdEQIyX3r [w(C?\`,[$M70 Н+a|%Olӱ#DdN~QtZ;## ڶ@{ԧ/ϲ?Ul`JFn YV9hWϱ @f7yDV~2)FkWǨ,"u{HYO*E_RΖ?1MHVMal:vF!>48V^bXQI/d,B]=D{2/3OSxot]<r,Iʥ8'f-) Fb},PF',s Z| .c\Z=:1[J&ٰDI.y@.DJ)/Db٢Y {cV\bEUB@5$ D)uQ9IFHx 㒐QD&$i0Hޱ*C ( +idYėFQ\sk\{) PHS*0Mn°XHޖpbUc6vC\/0.Gh`-IKLur@ d/_܌8!a Ap*¸')䠒92͇ b2nLI)$^:HD=cwW~"raYFa\I?Z$Uva9YF{UK%lGN%E:Wś@ 5TP."ȺI|eE$nn5?1,DV$N DN P= amp9vNF &waatBFE ;#yjG916 &)`^i2>Q#AvkD`ϴzWsxHCm[ +1SxM[dMF?b6dG[$#6"dYXNLreL*/2l/k4?o8GMHXߖGjlPaX t%H3@Bh\R !VN{!jزh2CT'AјߢEZ;I‚KnCc^ MQ+cLFAp'*2p#4C&#w+\pr!Q_=<Ovl'xv wMkqfP٬gku8|v"n~58 fyocTmxGkvԬ/Wfjt8^ס>x5Jd Qd٩.ԧرLfjEË2_hcι 'Vi*:մ"7T,lK'Qz&.sd1fͭfss$3#BIU璠%_ ^Ic_@b)f`_0 uC$̓k)uwi2ǞfLrڕ RmkL! Ԁ8B2jSY#ӟ҉u#41Fdu}U{ !vGUNw8j1W!y_Sc!F蕵}DPo i"E-PkU;^ʄ ԝՈ4|̀¹.w|+dX5}$o \@gΉOD UaTX=D3'ޔq,ņaUiEGH3;aMDz?`\Pp!y4~h/\u#YF;@vWa>Hޑ˴})dv:óW"*t&Ie̺2FD=iqZSEY1@YҕvcM&!zG 씐qI}4ϧІ"B߉%gnOʧ)gsCOUXq@n} {7W:g"H] DJU5JBvC!qE Lx"^N%d7ؕKߵnݓdbAB-S'h2f5FsX"b߀v3i/X%q~so 0Ups;Ǣb" mX(+&}RBn m[/ވP U}SBb|RI:PE$\mdԫQO%2#Z4ϒzICTy!FӾ܊sdD`{;7!z$|y|um(BrS#FHPYW&n\š Yxꎳ;gR4xJ`tLqQJyCߔ(mP~:^w=h  Yhp77 (HVO߶w:Չ.)u r]yW<8~-lCQZE(o>-]Zbv&1hH@(EBn)RwDK8iXJo*e1\6~y7Jd6,(Ѷ.BzIR1KH__7MdO!*^tnH*fW6,qmf\Lv=\Ͱl[CxMڋ F wa&y-.w\j/K+i^W4ObJMQ&W;BJq7IdifoQt0 Q,[d[ :y2@'Hy}a`,.9JΎ3NؿB.zڰPt.FScZ8ߢ`4E:G9XCS71W4W3lRQBۏ's'K$ouf&^@DXě7*uL~pg5fceDxdgDS#4qx^w3CN?CSnj-u vk򒆔snĉ.{s(3= 9bR0\|̦DKQ,&]z;K:7$PZv<[%^BjMI=OZUċ$PJ.r77%vZ KHL5 ;.NB$wڧ\o1 ]DiJ<>-(Xxկ^JtC7~)#~e&zUQo8Li%PEJxEU]T5 TBr!9d _:M]YQ+ ؓ}+<2w+v>|e*u¹.a*s SqQĶ5䮨ߒ[h*9< NbK~6cK#v 0lFiVHv+.!~Ӥ8hf'> WnKӟ&rʥ52aq{ Ԉ @g9عdj )M{jB[ö5u;J,b) Û{H]&;t(+z^8d:m(y;maK_!C9IHo^  ~:;|=g]^x8G Uej/;5 [.ETՕ.Q^0朐MM^[fx1pNc{HALf `x؃FsdkBw(\L6~̠)V#{ewe0%SO*$|ϐ* i覂 nJI梮D/*aEfɤ J2[NAt}cbt[P. q^#9;)乗Wy5#5/e{~,:x)L˰ s2z܃"aVϔR9iikl>[ŵUߎPfHG6iC%sOBKk:!4o;rHoAɞ1$D:F4KKkBM&n0U?g28e^F̎&5%!K4?1Oׅ E2d2#ve)L0"?1ֻ=\/1[#,Z4T-톫h0R*U^HQboB .^^2&&zyGO 2wP7v)-XHh5QG `%fELs`bhifi7˘m/:XE%qPyN"G: [ ; ^ [*ވ18rLRX'0+DVacId#+DIlw K`$.d*d.I/ tgYa8)wȜo8dwz1eTi/n| E hb:=Rʈf'Y WMv)(7˘Me,#H?1ϯ5ԒK!gP3#LDT\SfT206TR7$ZLemL0 !cBܻ1Ɗ;+M U0^( :ԄI5) `$)B|-`e{Jte|Rg뤗}6>GKahT" g->!65`ʎsJ=OL_ ع_졉1ID)No4ODsc2qaXUm * /&˲1DjQ'd_AIH_:g{"U=xnagt$$FU"@!ΡI 3]F=dWG.y|(c $q^%r~^"}x+DDMȥ"ɻ6ʫɜo#eJX"k5"~LCJ48JO-J)t<%ё.[{'~I\QZyM)NeEeI7~3MGkIFKcM[abB3 NڄXÙW)\v LXxµ2w o ~g4qwlr}If;/L ӷi !Wv&I:$gGCBdwx"BTxsme~NTcC"#>wc 2v/OSYE)@ IDATCɟIs-O9dccn Hm^R+,9ƾNnC[3 XnL{*Օݺ|P~34 U?5*/v._>ʱ&^-#Uu[C/\MOp,_c{1d5`u@.u;LZ_1*)GYnL: 슏;P)l${Qx#d[ e.rSW$ev3V/i m%aCS*AàgףxQ}7".Q> -ݫ訟u|+lQwKim_WJ[y!CqމkƙgȾI*vDb ʯJH,VFc8653{Of\PUC앸ݑmMl'at{bWtšHKmO| c0.oJ|ƢߍNX[ 銆S\!V`FxJ{>vQINH2X1T~mMНU| ͒z4FB?`4e=4]3nD*x0tFFAw.8"X*J^7]anɓоbϧ?drq {)Ajr%B!êB![=6^a CѶA{ Ggpˤڸ1ApD*Hd$*Xkn.[Ϯw"[Dm h@Jpm%[['j`u_b0{{pO;'R¶I^{IOwWWWW93=p83px$ڲlqػ,d]$`aE` ;Zrlْc,QM﫧g>뾞z}.k @p@tU=~XhMGplwA8{ټHc_r aJcRQt/EiOG^v:}Si'ʉBĊ,oWu|F>Bz$_·mBE%϶N ux"ͲNOn,Er5߶n<;b* )7I]-@3-5دհR MI_[M >=!5Fpds@4Dxc_:u@ju|FD ..n ?GѶBA} |]Fk {߇WG }{آ;Ƭ@p&?9CoX7sܷnݺzwo=;%i~b#I3TĻuO1dcȮK'H}Ȏ@V*s?R{>A"&rV> c*GE!ٷQ?D[!g+ E9zhd< l_1*p xK2ǂY^І]d;AdD >JDV9%oy2t&؋)#Cn.!"cDD iL؍"t%&DϞ@*7$ugWoz 9u1q%Lam sZ{P:0%U~@c.ɮ/(N_fg^1U(U"yـu؂Q(EP6"C;!%`@rD$FKJ p?"cAC4FgC*ވZ{)M}$Pw?q'*Bl}TO蟜Si TJ/Զ;ƮF= ^پ~OdyĜCuFLݺ7S_1Iah.P urHԻ"ho;Q/AKDomDH[=%@kĿ~c`DĵT6 mΤ0I~)\IEaNQue֤G'yG!>`q'* uwΠQ8c 0W =fv3K(ҧ?"T>A +/I[l Ϟ rǠGܻs.uPИYZIs4H9Dq|7,Z%)]Yd'bKFU3U̥+BE,n[0q2"PP\zUyTPFpHsaVns-J q̷.||Mj(ѳni&> 7oH_Kէ[Ԡ[bMOhOF}ܭ"FD'3IxáSY tѰM_V7g(꺎05Da n[#w݋`t< 2Ӕup:h9fFKnC`v^Ex |b.9 SGȦG(B{Z3N[%E ,1nL ~É PKQ砯|֘YH< I&_5W", 2BHey ]-(ēƊFh+hoB^/(!Wtg FEIJ 3gy"<1,=gpr[aKrP}~"aŔ(FEV{ vզS8Ɖ@?cOEPۼBt9S]qEv:.朁 L!,ZEꠃRHHsa&4Y(`0CxYaPP.8gۄ,XPbl,(º8CA@eU S(Ц@2 gmF;Q;КQ)m壃Y{*?{au!=Z~8J:E(|ߩScp)izyq7gP[vet_'Exa|ǁ\. Bws>cϖQq" (2F?#],ur(R}/S?1I`|:x| “eιqwQj%2ך7b(ae>P")H_;3N|ÇplPAZ\C9t3覨F xr>G{W ;)eIJW=  oDz{pv"En%x8JH>^$wu\]4xrsFbLc~ G|^(ۓG;¿'{=6sEr4Bt:?x&erhE:'|ye |p 57Dp{&T`m5D2J9d.nuTY%@*Jax\0{>BG*!/u4ԛ^ŶEdejcΓ2BuqVyX$5qxhmtWQ&HZ;8JQX"`<e-:' ؼ#l5􏔈5T2_]GV%ov;/02EΈDb Z&L8$D|܄Ahӧ]2PlH]"$Qyv7,1khtԮ7$Q GH;6Og*m9Q=*3 B.g$P}]i1U$1c#g*"wPe2黎@Vl[ (MܧqpXx<-2CItO{Efoo*-ОSQGtk\›E%t-,ғH:2 '6{W+U8^^[W(~s/#6o1fz@] bc&1>k}C8 7,ڒP 1vaٓ0k>*n* C Caw@+UB0L̍.W+Uԡa27{t"*FãQ4g?3Dϋ9qcS$/{YzkkoGX 7,_p2JHidObt o_|H=W7x>F#"1#-v-FXԇ:ŷtFMz6ݴJ@28 <2ٖ].81"!sZI#y`ih2ST?u`# 3R_>=3MܒCaE uIodz#!DgϏI0yrZ7@ʼnAbV/.ֿnTT_QT.*&љM}"7 ԽA6$=VJ _6=T&[-j=*u.16$F p*KQ_: :&p1ۯ z@ %ܰ= 4 'UQu4JH=;.ӫì]N;cOS87 S*CoJGXӈHglW{&v(}'uj3BW7-_UPlPz2ɻXEVZiYD nU a~Lj.:Lbb Nq>7'Yqbm`tO𑒰9_b'Ɛ#(*|o%T.N#yPq"oXP=N^젵E[90PE:} )TwTQ]YO gp;v1 t`'F AqyTo3|Sn!|vRRqp[a=+l/!8ض 4E.9q9|M]\(ܓ]#w@ެG+l E"obuQF*$x?;>m%a Cv|, /1탱r`[M8q 7a=Zv9~^",\/JMőx2k^"kVZUְ_*[-o4b*+^CmNI5p"6PۭӞ9~;McJ"34'.1zY3U܈OiQUնxFɸ!j*vL&5B kuEk <^V@9D@S_܀˖%]AcZӡљJ_+Pa* )ptmot>&YF#٬1ljVI*Y~Rv7$B N(s(Q(yP8Fk(Vn3%d~>B-ѷzc#ȎEjգ;$pGK(8x,au쇫m8 }0']{3ܞW]S69N;!.*)sOo8hM!{u4As;0׺DzշgiLjH|-U(0SD-;qh0tCuFCr>gZ̉cA&j ԡN}Tǝ{Yx/T'ExhR?6Y"̒Ӟ?9Cko]1#Fdߞ#1gxl+Tzh+@udJHGh$E-n_gs(}!t[UZ{ƾ퓾!{Dl⫰1 ?+/hIckYXWQ,,~+UTB6:BCaKmƄ:@̣RE >VZW.9;v T2ڜ*WWEquc'wDb.oF o&vB V^䫤ZW !r@|$!bvLkrSGH 0.?"/ќ pSy}7N.ĈF,*t:qdǧ7Bxe z@m= xavIFoyqO|>/+]W<]c{k; 0Zxr`Mdǎɸ!;Mҗ61OڝL1_x|@65UfpM{ԘXJx&ğlH^ 0ΏJݟEFh BT?5AݱN@cZ34]CGu2VT |$dBo]Ÿ%g?Ufxe.g -D퓓H^G8!Z3yeJ`\|wQy}X yOz#!BnBv&*z <,Oh/wz) n!'}m"o1a#'*Jxh$b6<;i4a.6a*m|yքI4(w .?:ck8Ds2T*ds"aw/q:J?)BIZe"/o((\EV5^t&rHP{_hCIՈXOM!{HGPNȄ6]E~BB9PhZ #Ӝ~֤Fdͧ>][PmEA"gOP9k*KW&piӷC߭ Rw{X9~#@9)] 0͉quDXTvKD\ZHY81Id~9q{5xl$0.R hGLII^FUcd0pp7AN AOe8=f^jZi#KLB'.7tNY!KD(6}V_ uQ|)W ??9 M^كW:2 ">2Rw6vGFjn'T5o߇,$a| /%yj|y7a$DiaG\䞂7ӥXUӧP5/XT^UnZ.?b{.*81ᯜ譎DqQޑ=?EJ/tOV9RWѓ(\%(#2T]p.BģΘ5Ε }P@hEaG?%^^#K|~9E//Խhd먄R<*J~5D0sb Õd4~R!K/.}8PIpDdU5]=(96K>t4\ڣ2>8Ȏ[qRbvT%('uϦ3^hg_D CQdr;,gt ;!,8z@k:LbΧ5nDBk]Dۗ9 A:K"TZdba ]uhU&Xt}@"ߞgm?tDŞr؟G.)wWƨNb58Fњڻ1n.ać(l ō:Z1- ?F#撼dT;%C~C)kQ+Ɠ,mBP 9ƔDlEF[bձ݂N}ԾNXsi%B-bg&%}Mo"3R`FVke >r(N`jtTV8UE&]{޹?*GR= :\S*Q z/N17߬dSc.!ғ-[ Z7@%6_t)P0i~,%HKoX@ DqwOk: k2(_U$AhhL F?Uݱ`{ aIo֩4FhLcIlEAi QigdQVO T^~@Pl3&+T?Uf*K ^ϑi˴zO{sOp瞠D(]@"N <6dAJncQ R&J4J2F=sY>S“ݺVq#r?ƤbTS cەOwRBcmv7$# e>59QqBtZx$uP<i}!ɮM\t sM|&EFH'ox<ޭ{1@Sg%&X]YG:qcTgD%]:["a76ϠX$+ H.b'ɛiyŔg|ZcϬ7$Um:tv;,Dƴ»+)R5j n3%Յ6dʶOJ/e6J_"8uDTY~#y|UBv5oɿYPݢQfkl> P :Q5 7X}LKS^8kf\_=+Bg0+w 2ɀn^@1é(8u7X 0l_~ƤBy9 `z(Z@;UѺgP%1}v;XYI vO?AC?NT(/k2C~$(]\SPLlVID3?zE"NEE?})__8I/'ްZG2Ygj=cΉްI?cĵRR}<n΢quܽcJ"wYnHνBr!o)|һ} ?0kK.d\?:vCacDlTApMkTzQH LL;5Twm"NRl~_쓎w/pEPщ.4y7 ɳPF7IcV .6fNN@eI(Y" Q?z@m"F+#2#e/<#]'ncU_-z/ʼnJ_=L%r9%nħan:ȪO$aǨ4uc:DxY&>ߧ]*gO)NeG̩w .ܠg /v SG8݋EA?#ۚP78D%;"N>莹:ir]͸D WXe {BTw] ZL}J{D#uҗhu 7b?1kϞ#x/E͈'+י.AJ%h++^: HDEзae%.lw2v'<]; Q&5Ar>ۦC; ckh[ݏ'LWmk@ R$i&4&uz&+bUU7ij|(# +%ʁ>,|6ߩ̘BhŽ> c߫F} K B֋S1ŸD|F鹸''<[>6Kx3%S*tN|#RȄnR='UsQ9i +#y׏_C e5D@Lhpϕ_|Zn \'/ Mu|a]vKNG!ZSQDA"P%OqeP>/&Pdz)U=&q&dtGl:P=ŬT>=FaOAFzH]į7>"ɮV'8u!8:4LmB ]lߺRX@(gF>^FP]颾wT=NnЊBPa E*OKT1ϐ\yzy.wg1; NA{2_~Ӝ4G !zy 5FΡgOJMQAua(ҤSt8LxR%mQ{Ohl.x|xJC:C[A~j|jŻIq07-\w=%:N{wh8MacKa—F hM+:&P%—'G0kxƱޮ"QܘP\BxئS Kt&͗KOI-j_H;Q}LZ6,<#-}2+Y2RڡWB^- hU ۗ-pu.kϛDV?ݢGjGܒ:+cw %L]=Q3*ћJ[:Ƈjy% .ƨVG h #C*.jOY1An^a$UڧJ4_(1G#e|rt: _ pR 6CkFm!uzq̿wu4>f܇р.P#4_$ MNtѥxfY6wu?0nXR T0c9".}IA=PdB?^B*r2+e(5 7RVZ5^5q>ݣcH>D &aG%uӏLLNx-꧋غDXnes1j̔E[ʇ֒%K_9Cn)0<0/zv I!=YEnX{sOȪϑEV1&%=Vej V <=@$,Gô#U?]"t&Jw!FUrC :͸i ?$bm@+ ٢l>&;ԤC~U֫IoMb=/Xk Q{&OTz6cckfk`E.Dڹ]J.Q̍[G5دJ:j >O0t_h)bK>ĩQ9"9QF!AMSHt?g^fNarMָp>~C]T.,%)=)ͽBt&N&@NJ >jO5d@.޽B8_M1BJR/Z#,̶ 'KB,\T}b Fc F+HH =YwbX99Q 33Q2kxжB"Ym к>ZE5I'v=vdO.ǧG?U}8V)Q$_" .ͧrpQT-sqԞ5"tϗ1$[`F?}zczٙ{vx )Q2%R$DZ-r$GJ)9%9Q\rDN\e$ZPE"  ^b黟~w@S5Uٞ>}[6vNez= 6鮊[zX)$ƼxS-*^$|,3EnIЂO-; 6E<Ǚ.G8c*>) n?/nx9zيO$9BӦw EoF?*V*:7i՘HpW l)1mUg$^'& Aju`ypp.MN,TӄE lx'c-hLM 3ȉgISD4WLv)́!!E"Jd3 Fd~8* NO 2)~N'U?`$6x~AI Na]^nHyL2#^Z%`ԝ]iћ{fK)Hk'2wP;=7]C/%>cEch&d㴟*+7 Z%R蜠7(?p>~N&WW&{b]:1aB{^7)3rG~'ptBMXh(y:O/gLؤ"N^Q1o ]ޤ9xh?}cJ5]fp!9F6O;:2Q)$T䘈!qwl\osg$&-̿HS ַ?!$ wCF”[ T=$0(kQ +oט(;ˢvUл2*r 1蝝&6g{ | Z怽 ,͈ y?1%@3h V.6( h*5s+ĺJj/`SSDE{Jd4QJx'xy?R~i"R !~5NG%Nz9EO_R9"V'䉷Xt:6w" ǮxZACPwƷ@rT";JS(8T 2c/N;L!wZHM'D:A3<=h?j\ Zg0a탳(r.K}}W.¸k+Yu<ڒY lK¨tL n#M~_fB'B%#ys'Br=6+<]F =}(?Wy, O^&1bv9o5*ԌkUY+ALeBzD~6 C_@S ƄZ+(nfLeTT5ZDv%yB}XV Z5[' .o#MT MWIfQ^yL[pPQxh[R>!S!ݳ3̿8O}9G6V7WE\ #m)2w"nw M`/S23du1C}?&[0bQq?{իBZHg؏ŴTgVE72 #2ϪX?[ <[P! /\ "v"-"(-"' B[ę .[|tm˄)}-0Z Mad/2%'Lgױwlx{N#PGw9%K)^B`ýO ~FA>u: >{, 苟DqT-"WMH4C`}BSFoAoBD^J Iy[wvrc9OmVk_%rȺaxzֻe^]Cu*8g#5AI]Wy(2|gL|eWƣj޹Qbd( n}|rQc0(Ky)҅"aG">9<ٹlY24/͎S|C# e״} ]H2)xz ĮU{#ԒU~ex7VD`h &W)pqԎ4''BJDFBw!!ڮl}" ?/#PBUcGcf3 gÍDo>(#UL5bgiρS'+Q;̹!/Fneijiclj )$$tg@=]OG~^N;stV^(] >#SM;L7b ed;ęc?93TP.^1~.!gtuE,P]1>d#3:Tr=V~T""%f># hO &*`O**;.36/4׬Zlts\g(K[45X]s7+ڌ\vM?.ֆ{Co1P1)Ps=пТ\VC7}y*0E}o:#’] C]rK`y9i&^b%C(<.Q|k[$j"6^!O7 &; rO!'?j.>9kC!HQSd$Ns'F1xRv9q`bҨK"#%<)tGf# am&r$k)3{  R{j=Rw'4'\̺j̠*b ]|غ=*a4#ڐOC5狘#0xRu< f_=}ނPfK=Pڔ}"#ܒ륾KN!GO=f"ϫ@-qaXMk7>exZ{=A|skSE|i*, B?m }{N7%~RX #~iڏHbFMXP/b e܂9r7hfμ_0h8ꃛ=%$3_}cYB*8V`b`T|GvUՄis,iѳH'%jdX"۶i3GpW,¬ŕi8R"D2fc:o/Oqt%N߳- (TkkhW7kȕ 7$:4A~ rbLXNM}Q>J]y ND)F_SD7$ )]?&IdQ}OT%\? [.&#cn$oxqZ)_ lwNw{A{>3vɮFd3ENBT#}sb{70{,RG J>57=) whg qՑǪ|Yb+0jh W)9$cM{WZdEn (|tgul8OH:f% НPEҍp)7qh?{n#;֕Hՠp/`“nw5 ϊJV,6DjHd$Q<{O$^7^h:jȠ82t/E9S&wl33tfBT q-.niXU$FxdCHRY x:ެϠ(g'Im9X?'%e_H踋|8AJǘД RGw=iD&ʺ1 4fw4G\{ m~l A:‰tύL fCx#ĺړ_?OĻ&x՟#oj}|$+ɔQ9Ox;"n}.ITc ,TCdfEf7~$ddI`#c3Jh'D1xd@&L|+7)Vh" $}_.1 2??FTBµ>eқx%b}['9 HB]*c1yxNtF@+k콧ԷB? dgLbMFu$R"$w#u|ȼ<_GOޒ{.;-:22K?«nޒO&u9VvH-AEgS5;%ߺ@cȁLI(!* Ʈdnۤk({p>XCGU~jkײ F$FOPBVh*L{UH|:W%?6MrBU|VԌɑ-n'c'lJ!W=J65l,H *KI{6d?v[*ϜGw҄'0ŃzcҀeqd~#]7υS Q#]ֱm24Q"s_F;ZZX#LL՘9:tɝQMw:d~DMkҪIg*7[h&G~W*3z_03s!dR#MZIeͶhƶ;WbGR(6<qj|| O)jeZT r6'6Y[euyof(QuDx,JgQ՘ivl.MO)D&yW.r~t"%wr+zz һp=ge'i$2H13>څ $eU ]iΪ\dEL|3DT@bdFQƙ*Dj|IQ2r9x^{vHOxv~*Y% >ql?=67xJ2>)N>L9u Ete(qGёtE ml@HηF;yګ)\fHYX`4d_~ o|!V**OBZe_T&Ogf![4/Y B؎'N3\72=j*Mj2T7 T/HD/90WZ:7Ӧ(j>FL3~8AoB~ g"=!{_?*SO4wPr>Q&Q/ B 3|*5yYb'WZ.s r8q[{E&d]G98K2?Y5nm=~M942=l'V6i%g"Ő]XPhZg'9so+;w)}ҙ1PH..c\^'Ī3ū~P^~(_.JdV/N8mS" X9D@W{2['ITWi-śQIzEc}I8'w5^?"@F-UGTA$m7n+B@kHcU#/-ڕ.$ V‡K&X2^5DS#\BzUbP Zn]LbhXZ?oCouhȣikd(Hp?԰Yxxvi&-&2mw(gT69PDJzn$8!.nS֘4[,{`G7]7fGX= z/i.ڦA[cX ostLjTMnt,ZY/\q?f{h%J8-u91N?}@}۳_vDX> `|/}"#age, 8~04KX=!A*H52=m}_X|qq]viKSlR q[C`1KJWRnpk]+'ld}+O/U%aPi6#sשbL7(k"]RWϡ%4"cՠpS"-P24T3bC&URu)f9UP͈،AIDUET eҫB#r6>1hqߺۘje߫8QFWE̼fz~p7TYDԘho,`(NB9'l+x@NwzV''~.&%wQzLv,a3!+cg.H`!*EN<89pCVa)\6!<F&xySflڭ *z,撗au7mMipEG7>UċTr[OF*!-#FwX=Ohl*.I5 Q5rcVk G)t *nY;%)QE+#wEBUh\ %mM+Cgɨshk7?2H*o#(u {T/V!2Vٜ S;29Gmoо60xږ6g21RF-F,AVL}qjuT x|gީqvW">"2U.`o'f%]2:J]%QoԨ=tw0rcd?wiE(ft'MfBy~|gG!!Q~ȘIGhZi5="ؾI0Sd3d?wi|Дh9B8{]d;MTog1d⟘D$:s&) , IDAT½Ň,Y̖gp kۘ߾ 3z(C~U"S*c܂\ FCTPL:y.!/!Q1Q<3E<~I@X#wIfe#EF9 K5 _Ai:d`*;> z/F~.]D#\#SM:l D{{Hr >@]#7&GQ;.$Vk]\GML $*}bT_yXi_BN01W1ICJvt9A J$2 8k f#03["K NQ~i_@|JX&ۣ#k2΄AMⴍқ(d(՘XI_ZAMPd蓯_UPf]V~$K׶{&:J0YxMހSx .alF蝄˂QBKK$vW{#eeD>f3=Dža9xgQLpFtm &~OH/ :XP*a3MqIzE{<$3:N${_fPQe!>DB9o{4'KqδI03 {E;e2 ]?:-he(qs j3g4PKވF,I8C2 jX"dLGw$= "2TX{nAAjjvfdjI,\@[KtJ ݢ}_}XŸMwjVdDS?#15 a\df@bY#a4d*j6c<e Q4?<ˌ`z啷PF/0yq&# ՃbEz'Tؤ_>1&yJF?,ub2}q 呣[ lVЄ%{CB~o*aUzYf8OcSHLz37e]8L $(QKq_8NZSLG$7cUf3Ha?٤ !'CL=$k3lRBKdexjr:*zWb*"+' F̶Y=qy4XzѾ[dPNQ%ufWJx*~!d&*җTYdW&L <@E%v?XIڵq6ݩD$V}N3~4aǀXƪA8833s;\2G/ClLf[,T%C^aY9: "ՠHDH&#HkOB']ȰQa')FHzʀHۤ$|G[ձev 4FSMp̺{:٥D }4#$Z!RWPH8# 7&p&Q`_k}w E49F/fr,݈h J*&5cANKіMm?)QAJ%!6X_2;%ԁ3:7l-X$yrZ&eF?د&~s/GM\8@Ac*dew,6?ltu zCn;0z@QBKZUQ{2s$.:tIx9UyjBLR$c|b'.K)ܒ"MugN1/b3 POxW H?٢K16hIΜQzD9r5ʒ4l@tIYY%XVx%Sՙx5vZn5B &>L-ԯ+!Ρ?ӛ)Ùg-Pl<4ֲF^V K}}RMҵdƾ'OQ Ojk;|TR1?R!{OOIH]=T ՚-59SXGsud FȬBײ +ZUBDjԮ {kvc l|n6#9OHX:INhmAݑX}W#EL#֦Dpnx*lݩP8Ȯ D쨔 z7&{MƎJwџ ~S[jo?bBg2&#KX7Af03B7Cg*mUHgU\R=aOCm)x9X`o<(T}o,Mz)m\l7rjwr:BGR?.z"DLlBWבCDq,6*1>FFл|->FGf-EݐDSѻ1+oQymIuskקrK0 #3^BfEƌHPdA42=/Q 'p&DJop+jL5CvQڔ=8ɞ7Ѧ-(.&cJl`rw=o Dii p?3pHAveԺJ*O-k3P=AإwJ6ҝ^\Qo=Hx~c_^t7#sC%sWEks T02z%CpS?1a[TЊ]-S#:/mH2%ݵnkCaw3`$OIՋ AZ$U,sL v{4k?5&ƌΡ |u86i=QOZm&^ },~^{n=j"o8s{ؚ`V|)DQx?\1s9{-W1~wqtP낙Lq(N,܃}wԺJ3M?2WK} rK!UNU#0vTW(q=\31k/-0]n6imfAis!R[%:w$^U1w[Cb{ Ny~ڷo^F$ZHZGYVlkLSQըNb83ɔ'dSGe{Yز$J6PIw9l68ߓ* UqY~hNCT IFy@HLX}yguB9dC2tNOx2E-i6#}%ץ;eɯ7Hޓ}[4==ܶҖG֒lHӯއbre=1k ٔLP8֗lǨH`/oW²T|}֍U-S qݩc{*ދRř6JڳՕ;b5FIZWY{B#}K#^b[*$w{,Ip6{ps:f˧#k%O "=GQ.M@&Z1R_9K)NDo7{r^M2oݓt:X\?ݴ~xf^. B bxd|0J ۛ.hPGjnQ_R*ޑj Q{|{þE!"Y Fϡ հW<[DӇ"81}(Wob"yC*젆 72p [ zR8a{U.+v%2[׏N2_q #| *cx # eoaQ%atMbODIQ"o.,f3xƩ NA'^@R*UwM+ sIU }怰=X#oh3GP^jDZ:{h>X&J:E{<^buP'Qwh Ԥno {~īP#{W-_9Wױ6]ޮ1ܱI|!ZDώSwgpդ~c{p J涏Ao.EgZaUq27Fۛ~ԊF o_?E_bm 6* ZB:')$`p?ibvBUSB,O>*[f ,ALj&?W%(ktD w4b*Lث'T%&~uIm's\UE"3$DAنQD {*j3 >1H⯟ c57iw`#є3cri{~w[YNpDgZC 쿾:bH0XDٯ9y k>Y{-UZ uukfJ]94fãq`xF|^ͤxaH2:8q=aA_%ޢww,6"[腘Vm do{}\_Yeqz, 5zG'Ή9ar&TI>(}vb[B-V)Ih[h$[a!c~"IhېIFGgX2X͈'AD: hu|ޡT$sAGsƣy8+4Ezǫvoҙa_G=ļb+HUqb )M6GF㎅OF(#AwDA8%~ HK{lLBDK:&pl<!z56~,IR53-=5dL@2o-@pP!hfOe~B`-܌pLe`6A zӍL}uG< iKof P2 t*4ܲ^ VbtCrB&~xB.1"x⑺d0DO|(У`P}]K~_s"ĿBu6NBoTH.tf(Rt+:! HRoM0vfĠduU@%=6 ZS ̎!l蟔J >!oWI<tO:KCZ [\H`8[q/I-ޘN%a_^`k?U%""Eg7B7ȵ>ͽ1e(P~sX\{l$l2?=Il+b<+òBDOgL$ȁ-nzsEÏ 1t܊OXu]h]ސ=p4ʑ{M'_Z%clUHT] yisDLC:2Px>Ѿ9Q{y c_ŏ VO!MF}NkNc@htg/Іpj>؆4 |rւOHf=16?-FzW0G 3^a5|Qw!ҝKXݓbTN J&:DA GF#t]!<܉4)$pzgϝ) (}+j&Vv 7YPCWؖ >" 8J2 4U_9Cagw i劌Z<{KD,ڥ8 e+;=>t_x35/΍ $vkN-:6Ơ5"E\& 7fKhJ^N0QN$4)$LVP݈pr*q% I[!($!JyD-3$VBg<Ǐ2i+$B,|[*$VB"C~_vi ,*~B#T=F{ΒS8cqkmDvu 2M>}e}, a$F>B$j..(8Jl?i% /$넳%_'Qz@EhW]1΍0.asB Ru>QR%2Ȣt?k`Vb0X4?8rdoIlS?j)^B޺CDZֆ=W432@{KkhgˌՈn)\2N0SsDB!V)[fSTMeח[:Uo /_g5HzT mUWa0fMOЛ}ϣ;e2,  >]l ^-".dz,1' 'B̺`Gm~5"Ji=f&B ?57L!8m ҷt,fS_'l@:OPGP`0*f6ޗFa-A+ߓc=BS_l:_!HRQSyxy,dnE@XсޤdJ IDAT:&c5tWEy"ӘC3v6MtaIGy "h1۠`Pk1C'sn0e30(FK$<$y~cE6Y21'jXО7(Y{R&L `DzS9zHu,ZHgF rD0ȃ>YeP07UK , {p08{]BOWY{>_0cbvH4aR8`Bwckې ͧFؐ5a3N*9]ĭji?8P<FYWfĘ3)\ 8m`+4>2 W05PZOox_WδJ .~Jq?)/;PUg2`DMV|U5 wƣ+g2kj ^N:Lðo(y%Lhd gWva{N)Q*`Z(ޕQ萸`ҞA>M^,i0 AdI7n}qFYyO6bNJ%"P>bΨҞ1oXu0,(YHưU&Ϗ Չ[* ٿpWWȞmݓŷ#2?#njf3hNA7P^6;ͰE*C{N(1{q|L¦Ih%((Hf .|8+OWp@A=̈02JD2B?mҭiIޗHWho~ yӓMΌيTwZHnZ0GL^wп{el:L>4 ԨOMП Rws2~OËIgudK"L2 lA~Y5"]0o5Pc%A5ǩ< gYzSDt6{e%9Jl<ڛ7韜|{k7'uCSIܨ47E)/KA*k q9^њW(\qI(JNk|k7puC|G#^8qVwC2 b uA0U&$Y;m'+QOLz=/-"]!pu4,h*'k ųhCY=VEoݒv\Ter шHWpAՒd+h4͕֒1ɩ>5D\1eCO^f81^!񛛄qiHkOeةTum h0+^C-K֏KC#y8ٛlka(@.=%UEm֬i &Km""]%*fj+^ˎdP !%[;7U=:Y!^WDR[=9`lkk++dέީk'޸5wC#Z^ѵ&ӯ#gT ;x}]V-{AYB#*RjiKVbB +7І!QRIuuU ́ҏ6M^x,TmWC<[/A7H>, BVtlRx0=#Pg G#̺sSd:T%тA5Di{}F R+%pAvr;3*$"2\4U+ GD_uP^c$eNQ:ۣ_0!>-yOHś)?AY~_We{cg|Iwg4uA⍇Rr7'1% v3 dy Y^SF7cMUR'ߔ #ϤCIlK0U_c v'<8֖\9y+}q}6z_'vF 5(k$H}GO.jئq~U)+[p6_QМXX"Nh[=Y!yg2#ќ j|-ϗYB+I. /\C~ 7*)4'Mu`ugcDDO^ٔdgSW-z㺼O6duf]GV$5cgԭF[f!mtE{Wv`k+oIIvR_9ZYwt#9XC˻),QɝwT&rA!ҵ߷UjcLW%f6#>۶v=317p>*~ާtޡtnR d8:-"Fw.VO%U"-BuK%ώRw Fhc-km]?@s`sǷ`틧H7MM"?ӎ J6TD ~\oi_1|*oCB|G?瓶2>'VJw3ryT=WVـo*󎼮}AGX#Gu~Z_}|Ka턅zisVt+|=rUYoܲO涏WPzSp+<!" ʂeM8w42^gVֱ<'Gr]6nےtoe`//Sڥhχdέa+; 7=W@U;la}M2,˵S G-FIuGY}!lT썀z4?ݝ1%-?/'q!kRh]JmbF[ fJ vtb[>^BGVY}N0+sx)z/Bد,`=Ċ'u9bz+lʍAg3q{vۑHՁt>l9U8h {].Tvag-hx%gbgtDZWq^J; RMiU1`߆o6D!rE۳ m>DO|E0#7 5U8;%]c6gGiv"R]+ח,u?@E-ۢD5oZȣF PVf!{ӉmULjV7n@$_f%qy(Ӣ4u`Np`"'s^ջpwi[ۣc]6.2Jo_{@.h`5ڳZ"F9G#D3UW̎tW7.\'x(?x Rjm=O&0>S<"Qn^'ր|ɨ@y$sϧ$=;%WTru 6ȬO͡""U!(Nڦ?x G[lFVf(h4"ti>7K*D* O8h:*>JL.ҧ}܌@:$ vv 2= L=kȅ۔FO@,9`"רtxSEKx!`*xP)xm6~$ a\]B΍wzw.nCtI0À0D,(ATJ(X&~!Atv\Dx>h4;{>NRzKt JXbQI.2Ke>Q Oۤ^Y$jB=SD*Vi?Q!`YR!"st6?9I=>7gJ*aM2* NQP|k@`άBT`r֘R1@Ul}gX=DK2F8S9Z*/;!X}Ff=Ol3R M'PTAdW7-<0zH@HwBEI;V4Qw)hCHpMD,Gv.#wT>.!G!'[:6ݛT%mhk:e]oϔ)x^բs0Gg.S ] )/B{*k|\XoiT^`= z]ҏlOOد_HzlQ4 '8~L;Rxۣq1,u> n-|~AY%go6[?"=9b1 A\rTD(פI,|S}#'T^]ȍ'CP?JlC ~u6>9CkAaYФT A0?AI:-d&x냐k0vȝ6OUf3(k4NDS.ЙQM,و P.D7 [@vaYh׈ibQJ%wx 3 _>R!R&, l>7ɇ{ Wh$ o+({ڠe5M=@SBz|Y#fs= D3a_ xlf/NsJ㰊 uj߂B;Yҙ'] s| qO 9p+͠RE$ #Yھ.6,CKc bvHܢ8WmX`Lu§oyslcuLH7"~/^ 'f$Irs%-89>8{iʫi R,Jd!+4&~#;#<>>+idG *gk8bQ1߽E+U>Y0tmZAmf(Ntf)&-fX]~ptb=dm y 럭b܃()YAg6FKgmKWa} QNj+d6['R!w[f/v0BOȼba"*.%{$ w6JELx=k S0Yjh$÷@+O6pCI)\P0=נGGkL~L-tbZf0ԈAN DL׸ِ4)##rT@P -'Y{:F滋}N1"wQ%4ǥ_ i<Kžuh?Q)Z_[?$0b*(I8D 7 M&fPR>14Td7:*c.S_iu2NLeޔq*+- 6U~g Z+>o}߀iR(Aէ#O ث8I`tzxB^n]Ybn?.~rΠ0g9Q/w"s5X׉6韚ET'Z۔(6=z[wvh`DP?E.HƋgIm/\l{_P޿O]B0*~lGάvd>:ʈ21AtDs/DIBIĉ;WXȠ&89͢Ջ6C< &}Ű,!&qyҶg brl,Ƀ5gڥ{ q1VP8Vď | la)6LbpCĥg$hIڥ;mw*g4O]ɨgTI:rL#EPH^hLP ĉtr~a"U %>s #Y {:GL-,9-wNHmyԤ=k%`㘺zin7#d=Ev9ΰl|ƃN)ދp{snRi#l];{q {g/Z .ݕ$zpd^';M7otؖ \$C4d"SfekGtdjRҩ=/n{ mB~EGD<g 늤) *GR)fkOJȣO, Q| ,BjCy~x.~&`X@AN&6 9(1(CwRG\!gQvڑ:ѯ(`$l,֓ ۫f0ZPo1JhVMI- J3ah3*d7@*6'Y(nnI>&[ƖI75q s} W(Z$O$G.i,H `jNu$"3ٖ;ȝt7tvWVц!}gxQhÂ`0!(PXkY]b~랉;I ]£TkbPny {ߠ:#I]\g훵2JKhb6C/GlEk"+ʎ_QT4JP6\ųx y ;Vj?'ժ"wd[A\[ 8yшNzrB*=@ևg!nޠWSHRz!![LJTW?{ %!ml`qH;6G'R֛ qeEcӺ8lP*u(A@~iE.?Pl;[Ehχ;Z4qMFT6]On){B߆'z$6 vg7f?T}ɇ"&R#,Cob|דt]LK̴C{FK[t] SI7 jp0cmp,Hqw!TL{Dg>`,%kc6{~w%tqָϏn ZXn_?_7YݷG iKe^~D7]N6YSfX~Z%S]PBʮ'*Y6oʑ5b*dWq Ԉb>qL2Zx clԕj蓽1ާ~$`HDqwTz 5h{)/vq0vtn%svn r,SޔTL4zײ,qQ㍇*7O`#,̺n;ʦ::ɹ{Iڻb8.ΤGjY>sd}Uey'BJ-:]־x Z! {3>Bn>`M: ?ɿܠx.|l S}:mH/`ף?7"آ7yD6ƣ +Y2x$uYRE#{Wzۀϖ)7@0n;*lriLٝݤsإG;r@so0PlQ:db_'ªvN9=b~I'a]g ]ٟ dͪq q7tG#m4I=twZGa4(\ 1urƿPkW:do5|/5%[yYڔ9U<}rNJf IDATwsݐEuD: Ci:OڣS_cl0H[l~|(n3J"L q{)2І![R7yJ 韚rT@["Zu~&Q`\]B,e0NJ'!A$-4PMR0_ƏKMQܵ{>tTo /s3S5b K0:X626k5{!3tBd&N9 bB _Gse])[ĢieV??GJiyr؍gdnG1ΜA`* 0B ?I]3ؕm5Dkr^p {f +#CeP6IgLjT~U6BQ鍫];>[DA@pr/zG`8>aJ7s$<$,r@ ՃxO!%b=ߑhF2`|_& $hH{Tqr:{S' 7^IW W!H]o"FK v&[G(#`tz@b9K?;tby|mY7̐y 4ba A: TZ߯)PF0 rڋ%ZBMmkX |_F FY]jo%7$h/o84ɔ ,#Iz%*A2A a0#s&IP,3*;i\GhS|acz„ez(SO涓'~7-0k4#Wxxmj@#zUCYq%!̘,>7ئ%FY [S}Gfj _|@;Yƚq%A+lБUʾ ޸=bEI/6)ZlQkEym9ޕ$R%گMЏ &rq fkbd /?Mjv%/f8,uˈrz%vO'zGoяIM{#'6ʿ33x } \qGck)N[+1B74J/~*I4֪t/bXJe0^_%V"k^@44dP{t j[&ZR4v0U;hn7&a1b昗okHl G/r{P4oymxNauZA!b;dϏ8\bE؞xa?>bXpza I2|qXKAH&+oV#IE0g.q_Jk7̧\9;6NnpSIb'}u ָhu0v2(J\jDMCI(t;Х' \Զ zwtrg}V5S01, gƩ{#Ӣoj}E-J0qǢ~*:ev a;XF"=~ eaFב%rmd$ *Uj)ʦV_Gbm*D2=2ً6=A^k锿5>a]Ďo?@B X["m$cF\WI1?BQ }^砫/tij!'|af+ҕp>DZDx]'%e1dU:NgJL zOML4tI_`|Zn*pBx5›>ma|*#@ݙmh ؓCq,Z<GJ%&' >J.pCsUr:8E(XY{4`LA Qmb?wHgu(x^ \#Ln-sD1toaڈJcޮR{2(zG9Cv7?mxD)#dQZc;03(3m DTlNZH X |d2WBſpoɿIYmO_Dey Cx40 koef'1>W0.ml_ =&ocǩ8)tq 5=/I+.㤄Quc\:f%@'Th=Coqn#%BuW1viy{_ O]bכLUT3 S-@Zfl;l$b`ב7;FF_-e#2lLoW0x!G2~6I{A3/O!<U,H~ lxHv'e$IC`,NPn>W/XhI1ZuZ)a@_I iGоsWc?QB }59^" H /3H1D O# .2"ma{/*$oY "r]t`BC2l'M*a'552OW0Bk~qh-PE"wiDԏ'H)G}>%\U&T?q" $(4"2Cdh]PO#+MITPSM2@( $}/RH3.jء(턁qwff솩=&~7GLMJdC Rבּ~'OtEbKx ݢϣS1 `"$]\WAx;Bb}A%ЭĈnzo MF1QJ+Z2/mz4vDaPȪDT'bdQKm6 !1%eᨀ)MF,T&N[2O&'iC #%^&qϢ=#ezr0+[cebݲLߜ M0HC7c ?m75[o*&H].:thi a+#.DwglFiQcȻteMNd^0v,\`!Rz@OSѧkȊUO`G'\QX5xHy$1Uꌁ}(Y0in$~|Mŋ G;(+c,'ٞԂU#ܻ+R%Op  #:Ìя lO70hL+ ePrBϴiC zؾ̠Hz9Ms|>˫yQI/3v9٤`v8mM1J`dEPy?IbGr#Ї<3m2NdE_(g4+1|:3#al֖Ȝ'+l?'z]řh$0${Z4]MN#̣03.褯x&6 #q܈O|M.f"4JB6*+h>K9"ߏ`G2:d*Zt*3Jix7󌏝q|tϖF p3}lY|9ڒ݇uA{JFkTd̈/\AV Ξ?XɆF4UOHsj1V4r * /Zj1}}-JefQ M1362V-DNM~ 3LgiJ3;D\(%M$w4fO8T^ȝ2JXylqg0O&FXy$_A|nwDNkSL~#&"?;`R:lϥH}k˄mzE%8% m2cܩ?=΋ތd-lES5C} i$H ~C*G24β 0tU$v`\#;PpҸ3|=,W3'G5#߻HTvj4L Y0fy5( V1`:JJQJճhq>y[`*UHn/7_Ff#jX{ tf4B_1 i#(u'8УG}8 [Diא B";-Xr#Y3 1e6~8C#E@+KXb4`lK )zOԍdք$[cH_R?fzz0i%/U< 2jW} -Nw&cY#E̗b\^YwL خ"_D-o]rԃr2ҥE L} ·,!Ԏw&z _/wh43i\]BCK[XvT TLn#峌΢fP3SH@?wPr2E5ֶU ܐqtF- *k }I:u9LezH o ޠ|~ Z迨o tZQzHMQ`S$vT`n M_az*þAOD0d:ڔQPlg4\:s WIƇ5y$3N Do.MDb!T!ڒ0nHYH,T :̨$SAcjJ0E` ǂ^אh_eԾ@`x*P?,2.C`.+7J0j0bZ6~L;YJz!C43k\)0'ͧ$ӟi>L L11Y'xa66 dO*t}75.iDjM:!gǤ}:q.MN̒ ;?BUbsQnG=˻y9u~o[\b41vڄy鯞eIBo$vUNGˌ>M>FI䘩XN7mhmdBvX?UtnF/Ő'}zB$HQUƊQSpt!! ǷylaQ~ɡ2gZ  WdƤ!LV/?432ʩ(G7"4o NÉN;k@e2H/6FǦZl%!}uGzM͞v:ߧTᄏoSm%dơ}k\}fis];b%͘LKZg&jrLbv{ 8Ah +J,L㭄$ÉhGav.Vd|~ŠO&,H-$.멜!17Q$FtU<|VmP!z}vM u]·e2:Yb."iK Vi20rUX7)#:a80v"xXBvƱMAghP?L~ktZM2R-0Vq *h+:jlQF*~JldQ%nGM߾1.L>񘄐@(>! e<$:ƶ4ݴ 4*?c.2R_a<`P(}ۥvLΗȓt(}3kXx+*9M^Y Z}yfw2??`0rW$nv ]ۤD6P#;>Jtm]㄂_HD]"[bt+mu9z*Rq| YG] 46DN N %:6uhn]r(=;(`pB!%]ş)ԺrU:x E"v5踘!N8!skjD}"m;a)iJ=ruή&h~& =,4E"C[,ѵ1F8Cp_d?~%0$3 R  R %V|~fBАp5dB5QV`V\$^ayb/Ϟt=q\F 3[ ww,F)<V\e(K38skM*;kkh]AC 5Op hnWp)&,Tɘ NW/h!<`'.%_ӡj|ԛ7h/?猪8Qi ,Y )'C -?#Gb8z`eb K2g4ͥ-GfH,tWңhZ+}+ zV_'cCqtTIܹ?>>" q"6ѥvV&Ddmd{?}X )]7_ĨI9269Om#Ƅ3ܟG4`#&_1-jOefSG L#1+y@¨<BkKϞ_Pc6jS&}ݦഹ_ \ [Z*d B Se,8d0N(S=w4V47 Df˕q/&Ⱦ"|`};8+n42jD#Izz#h9Jc\^8i5It/ض"<3YOpV"!L[C[ܽUdU0"o1k?Ax!f23?Au\{7K[\rڷ 6$~Y:]:(!o0"<̑ .+ a%=K"C;Ȓ|3d!ĨGS,0;&c6?]fOTuce ܬBl b(wB Gl,~,h F1xtCHزB3h]h}<{FW3lYQ%/:rb7l$̸"qEs<Ztue4Di!BU Ⴗ0E+MerOƨ!̯B9G)ܐk$n K4 J 3# gkpo+N+ғHyeg7 s*vIj02eFM]a@9KU) v,rÜWQ*N 0Hޱp (f~*?%TL D!G1kO.G(s3x8Րoc+7Ѻ6%ly %xhȯ^b쁀KT̗2"cȩ$rAVj 'ntlqMTdRM%HqW~Ĥ]% *jZVZp"u薔 S#G"V-RW:9A׀Ȇ6I nTcPJE:߾pě / oH71?'+W{#(" <(KgUD($^707d3Wוq"&Rou٠UXK 1W7L\.ܣb0p;Ϥ $'agډFHuȽ@ipBҮbbϧ263 ]@]-K2{O!5hw Ewl`nPN;^лܷ}S4<6 l`4ʯkTPܣ֮JmbV|옊֖HrQF!?5 y4myp6D}xsA=vpGv=3W~`˝*u2oX ɠ8쮯~U0+HڻI;<ڻʁLe&FŊ{ ' }$f&yTc ''Tvpœl-1̯@(Jkm*OHaf՟G]66N 4T >h(챊( D#&vvڱ8J_BIߋ{- ~"P GFfWJnpt$X۠s:0kr%uE&gu .;8؎yɁz˧qY0EDӸD%q+&d/ɍ> ,j_>CZq2L J꺏x(} %ecj U 䡵@.z]F;=EE͸q{:l7D[1 ʾ OD;g.#}@kĹm"CgJ|$z] T!}g(}/ o;O`7i׀=ZHh3w7J8=rekB(wEhH߻@dc']Cwf0gWd3FCСGteps_"}F!z'h[Q їQ*Ɋ-e䓼!oqC U_=׃;.\V17}Y#`Hݰ]oxGQ:>RKg w![.rXsw6Nw!Gĥ[thEe˝x%q0_KldJ《 R<'Q}#W#.3:RbH :-+_<{^"# 927:`v!ex^޶I|.n>=X,ÙD,>7bS>Bc? i@D]q F8< T=L(Dip =B~ɧd ?Xf FY+̱Lr/n2(脪F7 }p8BP$'E5dTn_=T(xeq8bh_?(8irybu__@zo×19|:R>fA)Lx}"G",^9??*k-+Q09`YoM4(*R$p~w[h&pzm{3| A\_v9߮"-oLsbhr(=!8sXq؎GAe]!,D R&@`&zgI婠8+5n/tLqr?qq/ DBt[ tcb~'SvGc%J |ˢSOa|,%\C1e Иq }@?הR ]17Kߢ2s|?/Hr 92fC"Ԟ/D <~|HoT)Ur&p@Ttܥ0 To z.ay41u}B5c Byxr0-^\1;>G]&p4bjaZA $;xɋumڑH]si-j5dG 5AgNCKMv!F!L~1NxO>XFt g 4ZSWu|%lDՈ?h 0DmǢK8\x؈n3Wb-Sbaޠ/ &+lH`5<- Ee '$Ȟi2Ni0<LhUμȈQ{R-r*8da7?Imwqԃm_ 3:5#Fy}TXWI^iM ,ܬE_:{_Y'&'ges-Ǡ7%0P5| bk&>((=M%vQ*T>k^H݀8?=[]Kk}7o.ҟvjLL/(\|QwA@e{ cgAKR"}va/`Dl='t~A&ԣ{4lB`^n!Nءg,j.|i|/$US{oT1= ћ wUF"J ҟ '@ChK#c/! cV uf ml*O+G4v>\Ǝq3>Ci81sh?"Tt2 __`㟔hsXBLFHڄpoQ&8ɋUzSaDg.%9IVt4#{OoDRH~AGfVO& چ u /R{"&gU( 2Gx]b7N+F{ 9t?O=s@<%HKL[:#g.:[W[JUqśUڬ(vId6eSYI  03gAS775F<36|7$*u^V3+ ǿ I2Xt9nބB枇S҄YQNHoQf &|)y^=c \~0UH4't{TT>/ {#3d7!V!d`@uqmP`__(RNG%#$;=;?/}ho^J60}DSPH| Wl}tz~ ՕT{"G!T%:NQ)BCFЛ1)9`_]@_r 16"O@~ZHp6e(ph~bA4;EYbzx~~E'=o #0$7HX%fp{$#lh.v f#E1Ѫ`iޘJoBhƤZ3S#trJy`OL0ΜFb7:cp*rw9~|6-u"GHm ACᆋb{DZUt5TbIh wN7үb7T} wwb4e z#GQ{h',>HQLGTo5[G9.$X<,ȲJr2Q0XxHRrku{ýH)H," e *:)[~Hg^)'P0ӟI^FAEh Oʻt]F%UPG8Jiqo.7'*4(/ DZr ʕZ@Qf̴C}u.=Vf0j z.б #S_H!V?H.2?w%z=^\ұ4(&^9TRBuA^@)4w &RQ@ Zwp/+cmE40vI1aNI_FN}EN@혁xc!kP_yӨ.\j*$InHp / Bw=SM+&\Cg{t!c>A1@n+0w`$@*n[UsĠ?!L@s0(bJ՟ NkvU1Lw.3 x>ޒIDf>?cnB1ME8i %Pbŗp&s]5وp~^V2iK>0!xk3^ H_UIC`禰VpsC~NŗHVA :*Ng>tA„FQh}% ̓ DLHFyAWij 󏅫s>r`L4Aol=@J'rEh.%sάo* %R:4 &`(aR*;PPl?5Fo ¹)b*Ir:ɴ%d/VKE›Q&:]'WҸ#Lf5~-$o]ɡoEOoz["̙̭HL 'Ǔdޭ]0T${"y@mIF_Pg0*c?AOEܲk2&t'5'Л!q**'Q<0Dž\*:Q2Ei>%1ʑ<*^| OP .8<7Nu Lд9b5 ,Ꮃw IDATVU„gɂ*!0bMّq2P>lZb 4GWuA`U#LbY$G1\T;Yo&QGXoc!}A}3JO&xNқPI4e]_h,w8<3L0€٤Cv̭PP{~|RT"vtj@,S:Lr{n@dt*Gh-h 5ބbZkaB"U΂=;N"IT'¨dަ~zn%1  TJvEUIu݈DG *Q(cV Ht$p|Jh  7:L7ePZ}5TH c!Z nhGݣu8{ /ZT H& q䶄e ,IJ}tw$d_*#^2Cn2۰s"%p>r LjXDX6ΘGF2^VP1?n8jCE_?, k!&PKzG4|e_J ^VBa/ N08>-XD>R(#|ce)$$sChp8ꝙG-F6*" Z; 2ūR1Og^%(cIZ dOƐ,. ܜ.\UGlŨ'DcLd_"C} v~|.D7v&G+~77#y2`֎x{FB[)TG0"]y&'Q#Y0^_;4)$XIfw=qJ($Pmy=Hkb]j)wъeP?Oj7e +oX.bgp 掄DY #+*xbu1[ flX ֓<cO+(hqiN{ZxDD|ޥxAp6wtEk(tR^F̸/]$l4i3DZOX^ } Ⱦr_ 4[Wo63[(r:: ?41`8O/ÔJ ǧE{wCvSҹU3GTԎY89"MFSeB[_u܇pujK2U͆/;#ZE %˦M6@} g(~^Z?* )ZPH"c4ujGtjGt|ꈠfyYHv 1nNgGT|;M;U9:fugDr5DA_kO03/ޮشzeګ25POߥHл)~- Hs`&@wCF HuZ#Z";80C Z}h-cx )ӝRvsLeF`k>pKbO[l?ZfYdAN2+.ʡ(y@qXZ@"%ּAnH`Un_$RAbxfv0= ?Or'$,Q=-S;.8a(P=-s1 aEo?2jjL}GDϣ[?GFňΧҝ*ͥEՖ_yάB{13hu_@̟lx|k'sVtߜF83! 3/'EP;3OG X Jvo5EQ/eo1Cϝg_@4#2^1 doIT?P|סw!Ր'(\krXz*)D SqQcOǴbD-^|*MԜKgv6 zލ?e+dU~)`O4κ$0ZqߟAoí$p+tJf!EO,rCRUqoԞH]ݠT^&cbSԃ{2Bo.C[ A&Yu/0[牳iV{HߎUU $ZMbMyg}ʨ,r8oT.zepeZ9xa Y#j]%5RK՞LwRT"Ě!%1829q(\@t“ԏdc'!VcӘ"C'!u+A>JCOu$'03`+ NfB(j4 ߥqgm&N[tPI{Nmb,'(]RH&/u+ܖU0!y12g3rfXuecs-uՈއDO(d=3eLNlq 05VՈDf7s6_{ćL*PM0WgoQwr1;6p]k IVqHHU:?ӥUM"oD[txOZ"1=dEl!ۂk%rHDL|e/$2ڏQ ɪDs#2RAN"GEݐ )ܢf^ ok2r /cO$ h-]Viap3PS_T9ICqM'MTg籀T0z/Y!3_>jX6mcfy4;]GۄFL 89+XM`\^#0d1Tsw{ְd}JgL ُ)#$=aOX>mLyH=ϋl\zx ,D(\DrdxGdqJlIcUÝv Dc1Rȝgts3Ό[٭RȬ/:QDQ74JLg^BjL- 7/ hL~ۃaH[܉p YYbMA*ȼ['}oȾK+LDOgƛE<+owC3C0H>vs5/QGHokL{)PzOH&q61W\J{ zzk- [(jw9Vh `XWˡ[@i: DEx-iPA6th[=ZRN^i=H(鵐X̋C|k(^^&}Ң7&vv[jmOh.6k.nnLs~0'ʚ?rR6k8 ? ۏ {\hi b 鍩1CoAxL#jk8K~H`F=sEA $R+P |AH!ʰ5lSk,i?:DmM 1Z A[G"#vT&Lix٘g۠t|r_'R.Jd}$GFm)sd+s an z G- ss*a&ecN8=7a,2 !HVe~`K_m6W6|e`~ 3#X>g3%ZE~-iG!h)+/ڄD) -/ gATBӧ Y}|%YF *gC~F?n  ߒsfY A hu0:qqɶ>FVz*;1u! MAQ먃XR4Ul~7nm3X{Zˁ RqH$|% 0AJ?}'u}P=yr#UM܏!0;Q`nҁAlDgXNTKw EGdZK!*H)45wE Q_S(1r]PP3e|K|lŲܮ4ԗ:ja}W\c~`I /PQPxC*]}B#Ƽqpq$dfN* z Pe$G&,ɝ҂9#2}0.da/`A^Hm{meQUޒ)\z pw-3. g"ՑT(VeR]v^p RAImDOo%"*ӯH yHZFH'g爲6+4NA(Px7&Yi0(~< }b EA40>'R_8MJk1V=_i*߂-C]-DwO P{_$^V0o#U"dnV{Dݣ?%b _g-<&ٳQ)GyAL8Kw"!1x9(5Toyi7oc1_2Q;r2ֳ*ea! $ʮW8@NHJ d=Ar&cxDXk.Z/DNlC%!bߥDpήQpJ:f֛.݇H^d9nL^zG())MԵ:먕 a{lQ cmu䶍wz&Glio*g%ɪ%< hJH,"6mҙW(]=d w*'#7x&a7Hi N.N݊h-H F ?XÙb4~)3VE.&c%B]B~VDX n1fw>'I NoS D.ԅfHj Ѷ47{7<>Eg!&+zZ#CR:%BwI\M`4Ck)ItX^7 =?[2D<T$`1$^NNQS߿M=7cup"]to'LG>A }So8#1S]| ?u; CA4'mwҤ~G(}u[,"PY.n?Wƫ%Vl۸pJ2$>VޤLĖFĂh d|iH1!)2{`R*ޡ):G] Ao^TH/3S zS!͍XaڠzR}c{~~Ef&qRrS)|5j/,Q~fGvYtn@ꫯS>cM-HSDA͠u-JtuzS: k'`mOcI TbE +QKHmHh" b+ eswZ%ZCǨ}1Lp?%AjۧyP%,QQ-󄁚#oI(4U1J^uNthE2pF$D5FocAHu ͐XB"5;ᎇ]fɝءHDj=Y#PA[N0rV?d'Hkֺ(Zr=ǷH=z#S5O˸Yq_o\grqVҥzbLv@BoYorZ_taO}5. :oxvרҬ& %T`}:aJ W0hr{ys'!q`zfmtk[_ۃqʩX+i!dVB)ܭG_5pA]1'&HmԞS_^aSIƾϒ<]Fr ֆ;!C[hI RHI%zc a*( m*6SۂЯHe6xŘwUz_hGeFSR-|Wúh0^gN0?Ii.^5{RI`zOFoJ^vxY +wC@$DD|. 4`!d 2X% ~r?F<1_ap| kM1gT d*6{~BFsA'82 ' (#UrʪF^|oxH~d P ]}}Eұ6!s/$Vdz2y8PW6jT jgCVJo@镀!aڸS17$6ҨK s5_&}O(K~./B"p/#֨Ρ`+DD"y{(?| g*zsimK5m"ϠֺD#9N*h#uW6}hD`i(7JeP} giRH11cAl=)?~ &۟^C39gK~Dh"iPhm˸9 ,tʡHbY>@L(N|}> x}5侇÷"} ?|2(> :fPoˆ%hg2>(:y9/ ։Q:''1nl9{@CK_8[EQRoudHS~EuSbr7@^~`&ق81pBe:@vvBݍ{x4*6_ڨ IDATtxϞ|A-]&={ ӛ iH[#T!HrK0&;K d#.~:eGɫ)cŚ$p "nHĚJ(qZ% D(h/Hl4~6m?b*i d'VcRUƪbM̀D֡?T<~ϔqIK1Ief.$1jO™T nPK$ZB^.$!2_>GY!z7$RS=p!'fs!*Q?"PbEކy ,#1qnR<4N.gCV~,P?3F9&Sp@e|4AQBA"= 3ᑜ됬$ 6-͐r3DpuAM5]継@cߒHdZW{B0ƲiᒃYΰF]\ՉPV jGS'bTO *p_L+E;0&0!(R a{yTsɵ.%D(qS*%7Sfǻ I܅5gP\AC ‰t#~({"=L=y\yAv`[Ņ֧hX_z5Ȯk􈐑B/*k-ZH I~Y7u=~@flV5n17 %R!D-D l2p;^{>&t /Tv_I7I^>2&xhrBA~{l3bS= ] p{"xm̦]5o M_PI;A1-0}u0b SLI٨=)F\|Ω=3]dGNKh b5wAXsgK!s=q<`u8=)PElEktL:gQ Sm`p(r[yo*t)]ט,ԟs%>@5V'CXOlFHkEMt6z[BugUJԤ~H?r жz*kyZĠF!̘VHIevNEtr7c^2d6]u"DV#̬C%eӯY`j&#7B# ʱ6JHEe^?Y qtUCi0Îw&UPbH0*A 3( 7gQț}U(m"jU'uGQQĀ~\7o%EePN!g}"i(jv笨;\C7ElZtB8, VLf@Py=D9KU* $(@2g阠^,0m_h A_4Z2v`CD3FjDdspwuQq 1۟>Zi3_&\֞+0 Bƶ{6L&Sf {sܦ\0[2$Z1C2qk^@QB683B D#B""%{鲐9{L %Ps3HI!Rf(5yAyW y!lWyū}J5M^YNL.ybŗ( J'iPɽdrO!sSYʱ 0 *zdO& cu']C.+Ԛ1$,MoxDwM*FI6d&an{ NԑU Z y\ԅ WbrUjX);1q=Y!~5KDbȈ1WF*Ȟшԣ?c|t$HBThUK4K!y8ى;} ?cY.wʌ&%VnPoFL~7dyƠ$ӖuW-F?XWu2{EQ~G[{ȧXm~l]nvʼrgxX˛Dn\L-$ܥ נ×1kۋ2I3{treGaNk(Y=B+6ٓk0w>CkH2t$Bjd%YnQD  э+FA'!;2| % ^zn 45/)ے÷ޏ)mHMo$Ѩ2Qϋ=j 不7A=wI!RM+5ҧ.yjX- wRG !w=M) R]-]QN^x}ol@8qOePΜE ϿIs7C:lHk( rȺICpLgF>s ,Sj_h&MGܓVz=RGL s]su0{dZ'6X(d~|{\ `ҧqoN v ûIڪ \r-6ݣ.`A?e;ff$ Iu?0ص@靜%((m:)kEܓ5/dC&2ZO=+1o18TKJbH0͐DC m(Q=ǝGmhF7E牊OR$0*8#]9P"Tw-ۖM {:r1IH83 |C!2#QxCBֻ 'Z2-5EnĪK@޼O$[+>N8THHtBڃ@Hݑ|b5c$l`UaAڗ~\qXF탗ݏI^0UdΦpN@™" HWQ|K~讂h"z/}K(S"`HcxIe( lF뷑VpO8#49ѓ6"$-DjH!X N`_R&%+#bCD#[T̋j:jLo\X&Fҙ߼L]9)ت#;̃;;^Ro!][[Š6MFq%BI܊)! )ћVкk=GohRlG@:|peL ˃Q*V $ {?:Y"L}i]3ʾRy~{+H}aZ*ia^-;kO~ gT(.XZ^WdnH#q>0@w}w>;.EcT:oeേD#v-p&!1gꏠpNFLUWϤFzJ¨ coVlaL Q\aҺOݑVjam(D w>!5 p'ɏЛwr:LE#j<%a>zN'|$ogHۢ&=B[6U;dC:ݩ}k~IüS99?"q|b\Vch$"`4U|!OQq32ߍr>k ڦA, 'dqo"7U|.,svNd5D>VUE`pVXD-V9lclYRk N(4 {,9T)ƒmlc YX"DޠSQXMDr)Xڞ?Ig_"iG{VaQchJDr_3[jWX˓rWvXlcH,{A⎊a /]ċCY;/Ah$̺ VO.K8)"t**z'$vP WHKoZ3FUߎ1zPѿz}xT+ej4M2BO43Z z'GC)gW5"'I.<{CkSڕiLjM Ta3WuvYf~r'DɛpE{̹4z֦} 6צ^OltRl҄vH h[gLҸZ$s2DodW3 z*iajQDCk Qa[q1Mm6l]" 91Ø! IDAT$oZ% A2WadXz4MQڸZĮܫIR@dg\Lf(ث r(ԾJاtccSl|YPث'_c>/tI:s!&!Ԛt_?N`DmLjoD|1ѬlDXў2Rayw)XS%oK4󳢪(}Eq8dC{Swd}<_ASG0!&-b??&AzmmǓWn +' ,aBaa$Z!JaE(D{N Z=D~IΣ~DXE$)uG"{MibB7k=per7M lwX1PFU?Bqзڂas8t!GpҸ9C&Ƨϯ=~4_h8B rvXߟ߂w}u"{!2lrV}ؕ fRHcuRFˏB0).IXQ@;NX6I7D831WC*+\#w(Sp:ʽM1T_E_^ /_bg?S!sF_6ݳSFjuQ4H7=+7vmlׯf(]9]G@QQ8oRWvՉ]ڠXOsבELAdoX[r( E.DGFAGg!^m➚%E>dS?cK 'w 0|$;O^ib?=?{t. ukjf笂oIjy WO*,FR?b{2A榋UӘU u{'ɘw:}HQ%CZ"fdE wSId\3eMo ouD{hV|0,Fu͕wNRIOPg0gmb[=_Q T?:Iq`Bj9@W4[FuBdO^Q(k2 1aZܸ`L2w<.LdDZA,B$ BúWX[8'}v' j]J&MoFNn$њm)l NAwG5TW"l[{\ڍ[& McoAvD{NhH(uU$ҷ#+wN_Y"~:yPC_uG5W$yO&С_I(Le/Y* *Sd?}_NpftHm:g qHHEDuu*2/VQ1)z@{Ns @+tdb5&dQ7"$ƿS'+()DP01!-#:%za6&6!tlp7|)"V ˦_DgeI{qu*4ʟd EbH/ n9f8N#Q1 2Dd]2^p@%S!F٩YV:NG$'!#.f }Jn+iLN(H!hwcEq@è c tPBɻt&=4逰j0?^aaUCU{f鿑HߐաݱP4ŒG$I QJЍ?դ9r:N5IHF_G矜@K瑖v?4_Q ^* }[q{2+ؗcc/l¾뢪!4$7=RҮ!l^ yg 6{L,utL62ؘ7Tr>Î@Ta"`[ |hLDw.Կ="tN%Bˀk]ܬJ vЌ0v52\I.қ]`?m+(oG-"oЌ%P+h~a+1oQ ֶDUQ?LyH- NԈKy"Zrɫ]L)ho) ƈ~\?.S FdG?T0FKijW{*)su2DWp;3H~2=9PݯدuHSof&.ݣEBUt&>/YLљћXm0oo&.U)Dyk~Q%B&ghzBtڃH ]ߵtwU7^Jb#:Xo< xmKVwO͓Zޡv?B=-~_kC_])XfMwdU%S 4 :A%zۧ3-k#`T%05M2o6c2}8PONl\_=Wv&d,T'B-h>c-7K_(j=kk /pK;#|syC{<GrN'|o }Wh#E\jႰO!vI-E ׾>0}pĚOϠDѺ peE /U"uo0W;[!W/a`Aq"FRW^b_ v}SY2wt?4THI <֍DQ ׆M(5їF8љ5&_coDKX$/ďɄfxX;B=#Hֆ":7%]3>yNt4C H[nn ۓI Ѻ"$'V_zC$  ~ZDu# 8Yֱv7ꛞ67쭀Z8r%5//]7%$R?]|MYTe, y#FԈ̝!FDcQÇGDby'@jO(3읰{v8ϞA^Z*ێ`^?'ԚJF^*/JqMի]utBG.Uy/8aK#^=AhȘ*~Wcw3Me2ԟqZ Ye CK⒀KB Fq!Ȅ-M(OwX_^#V (VHtuIЕvˢ~G)LgQԺ=sGA\qc-gQf2._0 ًh,A{j}z LӢ*l=JA` XF'%?Vۑ6 5Q-ZY ,D֕_8~R>;׷+-[$VaՀ[qQߵ}zݳ7U~6I( bdGb?O@1|HvIqmf@j)Bq[&*) ^5ЗI/9;)6dcQ;7T;~@ (w,kSڐ6D`f$gO`}~j^8r*f@bU8'!s+ZP߼GJx7A""4E]UB6I]{?c#4m$"$_kndI1q-~kv_=(4k6W=.NN)퍈B_buY ! B~9?;Z*aԄ:+dڐiOdI+~{CTx^t8ԉR hّ+$<ת5xƦ!;I6?q/cmG4 ȪS\p'S}Bc8%\ #*cCZs9L}cO߾7Z'_}J{zQoQfM".ea{L#~l"wc#^RBfsÌ(.}ΘE(5 4>h?`>߮]HWo 7:뷄usUIp%;-`!&Il$oH^!x0b X rf|kѬ$~g&о~[&3HD(4 Vum L {+ _ỉ-CUGwBl؞D$IxGD  7/ꀰdpB|dodx "`|@i/بBwx Ε]u|^)C #Rowmv;"5z!vۻt;&7<  ީ O]YukTT/בE/] Q2i7%H}ghf(^Q{goQ u ߖPԡvp >9w$l'#X0k;HݓPd?\7P26N/n7)|y|䲌2 2v}8Fkqh> rU[I}wd/i`H4x$jowpwҙ}"v"F3()X_I|mlTsbS9+a ZPǾcg.%`H.)A{Fu"Cb) qm% U3Kp#26@Ƌ igS38eTd<Zl=1B-yf@sRBzMضugS2ǟNDX X%+6m/:e1')!ňӚ FCl@Nw> :}`JssrGږf"򐩿iL)k2!Ivz@ӈ)+sG[υd4:zG蜬Dr%dΔAhFp>} ڧJ~O| 3L*=@}h?v2GX_<:xt)4Tu "@2$Cv?bC$"%IgHlBEbPUBOhHCߒ >+[r!K8T,(l̚JpL2`Ʀ"Ix#Vdd^Y0DD^"|$D+$6}f@g֤>) "[*7jKe8#1PUe Y!08&eRz p<@Bl/Vi<ƬB A1)8Q?ʊINh.2#9h4Y*äJtݲ 2_nZ3#P{䳗ugH43yՁԲUU Lb7C IDATB"b;B)>nB5M 7g}~N|Ce J/h]H^!T%#=EDd\kJЕ(}  ne:Oi; 1BOJ+4O.=ZD~ ujWF<:7z啑bJBic(}ԓs3+!nN w<7U9&S&?߸+P=.-I1fпzI붺$_]K$qw% TK4u%*A vO+#7ʱoc}(3+ܔEĬX\ -q@HAl~,S_\u.^C_QZk^b  ϟ$0^xP],)~9@oCE=Zro(#%MoɢLzQU*!tWԷn^ h.(ͅLY,!!NG!{Yon2vs{M.Z2gOP=%%NNaJdOe|pw\tj݈7uUEϞ@*abl=1ӣ>zGHߎ,_[f:)ŬAsQ`+0 `P k<`YޢNE}BREE`J~Dp Yd&ԲG<#|/bPF#NU.^ޢ?6r:7O%Y·Э "3\qgobMgWG5+[);7R#MuV}ܔ2L a>[E8ܒOE*j^b֤pNg[~-P jOBHoE<Ps5~k <%Gw?.8~i3? !p3 U0myC8<_AU?L"?X ?duvqs_2vDKS J.3::ʼn&PotExOP{7 ,3߼7D"$2P(ըzgeSrPGyFr'd+-1 IcLj(%"dsgWWUwR{kEaD"̻y8(4{wσ Qr=ijut5IT5bX.cM#iT %\ Y}[~D{DL c/lc;/OJHsIJ45q}5bP=j_hbHZџ1Z@&" Q)9!*j b8G05tK4Ƨn%qbTH_o]FGf'0f}PgK5֞Mݟ\lI4NeCBSfΐڊߔLSԄ$RiggV!/K$g<@ҷR&j2EFˎXL:1c:*~Zh$GU$ޡ ϼMM075z{lWmaM4BǰHo?2݃\'qc.VDV (3ȥQ"6^8 QK%%$PB:·AR$w9iJThj'g1%d;-Xԃ}eeƊĵ-0;TADXy[ gq<#tK5gOک^9."2dѻ` @~,$#4&Q22f#}#EtJ)"Imep/+amqN2݈ʉ9ԏ*O GtzUUb,+ mӯ&;T悂[\3!N I uA/=+|- H6:Z§%حԞӚi1t>W {(dhS:S6}B$K- u$QĤ} EL@KľLfI_G us1Bqc2q(<4l?O5 Q2ey 4e;.z j* >hH(X*ַ.`BhAZ?QCtD㈁YWnR$6eF@a 1-s6ZOf0\pJJ%q`l=e` ߭e3@h1\!⛝-*JHϣDW$bczUeDo!KLz#ˣ߭I%Ʊ &)#U/ّiktbC&Rwhk ViSVhrt 2߿xԡD.):&!y?&y_Tu=LqQ<]T~X'rI4xBL;Px3bXiEK@,XP)?!!2Fbi\aЂnZe?9i'q2>\f@R!qc*Ɵخh-P1^`[M@* S}tͭ,萰}*}( J?}ҟ鏀Mb][> r@2euo4ѽwpk L oDCLCF*3=F Ϭd*I]0b1VZkujH=%*ҭZc5#|OlPzFݳjh]u ݰi틘|ta`lm?ʸAj}ؗt6l>wk7d&4N(YY=n}g6݌B(=ii9A=lRW"{cOHVɽh*zWBo[jFxih2lp)e)P,:xI*'.Ŭ'EQϰ8#@&}{#~>2?߲/^&+H]="\'ԟNcO$WDUq?!zBsK;jiδ4cuq%'-Z 22C.N9d{2ƶBry@ TG`E9F^MX!#kydDm22n1b0&ӫ8ňı&, SJ4jc-{ZQEqdȎ70iϧ:*;+273k/ss{x8 K[|#O) P%,OzIڀC"r>\Go4ht E!yeX ҝP$g^SFUMA9aRϖ쏉C!IM0^2*BwJe8X+2#>ֆN\ ,An.3uUX;v7>)Զ?4+֭H2ֶ0.`rŁQi%mOpbR,at"uA+[m•5Bo_D-uK N|edI2X&y9n9}eB.d+kԼY2G?2ReHQg"V$H"&-ZHE-b}؄\[qk=0 ੎VijHwEӅ6w'*m1شeϜ¸"^ a:-(#*SyܢM`i9BK3k2zc{uP 8.r.KZsك=aD玣5b]EHW1d2:t){(j($#mr_hJddF_oƨ?KYte}]B+&UBKD@,Xqs0P1 Loւ쿿O%EfooHbzy{w'UbEh9q3 QeuS ?m@b˧WU '1fc"#o H}(7p>7=7A8?z`~TE<:]sH/IL,q{}ZN]bIIPKt%x ½e7 g& 8byЇi͏O1xB~D*!/[ C1#z8 C5;%˟MʨA^{`5 őAw6^=T$!Hl=0z.`8 -&}_+g'A$bEƸB =x`nlIߖ}H]Iߍ)P*dmԲptv)h wg>v1zGUdU'ErG"ϣl(?2NnCϔiVGqc:<9s3 ,}t4\Ġ$$cf,G/J y ЫuW^itc 98բױjS W^GY,5up$Q^O:ͽ{#; B/egbOQ~(z*nz2*RL\BujFH_q9ixjdp8ċ iz >R_a ͎U(SD5ԮL_;P!e6>!R4x!-a(l~@Z24 1Ԟ̢u%$W!{U!4%"EB?С5#aTA^A܂ֹ/ Uuʿ*'v{<83.J[.*4D WV.dZQK,/^ ?Z! )׃wPԓ/^eLebE"JĴdNK RddoS; Ě6I / 7{4&E:P75zU /ћbl\KPc]Id1?ԦUI+џM@{_0%lH{>f*:oCҢuHbSo8ާ-3ntxI-7'h!rR*7F1j } a>9Kgsu:C885i>WRb2zDJ7g<>xK~.bvj}j@í1$A6".^g`LM#4RB%yz&3'sCgۘH2ƒIK12+K%ˡ67YogHbQ}f^ŝ h$o jo&)/:wG@Q*vٹuf2,/1-D9a O\` k\0MoP<]}&|Yb;ejbbIVojZew^TGaf$TWDgY6~~ĚnqE}ftuq7 =(8xCFG;t{IzS1{P6>޷:(a()}^~"J|7!hf1: ?ѡn+c$ _T U ?U6%c`0SCdٗ:2&1ՐC@GIDuK$ꏀ6BXh?l^L譅xl&ptR2A&qeIY (%:3#401_'b W3=¾6]R(|CX | ! <䲌U^U@8NDr2FN{6\LkAj>1u'UϸCRWn)B-$2 q$QAvȽT S?p9nZ"Js.@)c[OLqt_BRU}H/ǫWVvýkW0_Jn?5McD5s(oB9@wFT.Ax]n=a^^ke#?osXNcL8%qD'4GTt.#ouBሄugc9qYzw#qXSwۇl-Z8y‰Hΰ쨏$SU64~4)i7fUB3leK"HJhɼxnUq,'"m"rH)*TzB^ P-z JNj91^LS, mm8 yB3U` 4bb5&u/ލԎ>}˧Nd]ySj_Bq$6>u!-`AA!%fXT9H2,/vzНQ__bP p !c)?),ۇ,^*%;Eݽֻ1hKo^JA>r-k+@&M8U; >]`on7X>rPĎGfQwâ s͈L K[3ӞK8` GDt\28VD94ގvfLdI)kM3-ӛ$bmD#/&!{NtYbFgBsAJ;07 ) "c&7tئ~LBVc4Ƿc BiY>bѺHlqhMMvAτ ]@ކi'͘%4+n!ZU.AQhH(؆˹Ѫ=ǽkj'V)#?$(Wp 1PDX5 rC'mVP8 Kk;rKg*#7r>zݸFC}{OfsoyTU#Mks@@pi^PEvV@P#dHL-`sQ7 IDAT% Wsړ|['x<#lg[Ba5Im`tDū+@6<ܶt$m0pyA 2ƏAe(0|'Pm'PgmP59v%+[c`0bIױdU&[Y]+aqlw; 򯩸kc>S&#.AVH~,VGP=K@(7SXKnhhko@ܪvy,]0p:A[gP|JV=es۬ d?D:n3Fa?P0CP^7kDύvJ4|ᐘVˡ|/T5FC_Ѹ#6 kNt51dl2#,):`(!R_=/"amkWڢ l0&{cSМ2A!`csJWN2C'2T3D gY. 4r[e8#[4Ī(D,Zv,cSj4\Khg wxVљ2P{2 Zaf<Ԃ˾MF+MtDFGSC/Z&-*F~mT'f,!hܶ%q:Ы"\`a󄎽an45mUňp 1QnU#pfԏ9Q6&akQog|e4@.*YVWi-Nb*"omƸ5 ?DܛM3!tE 226cEAJhI?)ՈD S9 %@bWuN֗XyIsAD#NU w)MWQ7uH%ķHO)9]=_qY{BCQMDMJ%Z"UO4F;홑1qzBI`ʢ!tN{F"B۶؝[3Hh1#'ځC*7^Gfp,W^guCo6/y|/wh/?4>J1&п*5A=~9B1 N0{Wo>\$O :FS"v- 0*7uJK8dwb1A1@.&ᔋb b(ӯedq{(O D{^G⋸PuTJUN5`Cn!Q+lHLphCp=ԡWN^7HSAo(tvh>0K7\BRl?J956cߗh>/:M6?gxAj JTO*DBL%nk{U3 éّ"m K1e$}R_~72skRzqe2mQ~Uv%4~YC>tG‡4ޚK]Cv.y:P1*!Dil4Z)fu)JgddW>X] fqs&@x[oʘm&uWfm W?梬nehn T 0CNXm|?p3カ"WuDxD.Sw[1ʶ7k924MɁUFtu/߶˳ >9Bv=Pf:ƹiƪ۬6rPH\6 QG.5`}7~'GP4D`"w>J]VQP3贀`8fhJ_"!KD-^E?( J[e Md?)1Dm?Ssm^Bo 6G>m~hH;N*G7|`1+iYhǙtDa8K43AkA}?AaEU܏LbU%ٗ}t ) r+"EX ?]=>$j?Rfꅀ# ۟L˳D=T>ۧ3o8|4LFp?&Sy!")] l=ԘXw_l4"TY: CrEsǑoִM4;0,ۇLfLb+`XRP馂r 4;-\Pq1,ZvD/^%g$'T9v*ЂPbdre ! D%R%zt.`GI~Z)tjQ@T,scRBcqzHͩUe<>ߎa}gZ.2cI䪻p/ۨuɏ`ssGgv8e1|nE ? zPqtЀĦS"u?؅i/`=)K?v().CZ: pi0H^%ĵvGl(!DU='#⺖^2::&#i:{PJ$$Э AbEcBKED%d?GЦs?oe qQ坞3e{݊)R@emTqFulmEjMd鬾O(Ȍո;s)H9dQ R aS< VRT%_>((|Md$ϊ15+?Qqҙӟw2g4b5qr* 3:QR U v̝< \H;ɞ/nC(}Wgc H.^0RFCq(8|c=:K9P5h6LNWT(^ kS|wНh{&SPT\mF)9jL9 ##фa4dڿżm`,$m'J\ƿJEMB>g)EU`!}[@"U J,uZ)4%$tr ̫&OL[4E//X[u$#"A dvIDMBmkT@v.w56>u=H̰ou:B'ֈ"K"W5Q_@n',I%߭ntT-Ԃiac3UlZcSe To'oQfz~B le;e2o5LHsI wRJ?ҙk'/.Wpija}$H}1vphUĮ21ѐ܊ ͘`~1`gV&ü@MH`*OC,ΚYEħS^T1[/T\>J XjM%Sw$H4 "E uզ_=56"⌿$hɨ-xQ_='h+cm)HzJ2S> ) MbՅ&֍5#‘nrT{eܢ3+M7~ꈪx2IE&]o9$Hg  l ^B17/ehVȥ2Ù[聆Rk !k(?u7bܪOP.!W&ɢ__E-{ۘ=$cKU"ayq m: rKR(3kpRtgd~m }YZ{58-ׯQ%x4FcgX 'AȽfT^*7({E =BCȾ201\D^UpQ \^y"qGvpxvޤ}jA9Wʷ4N=g=z6/ bEL&IEh} k3qH'9&$$!, 2k>?9x #~u4y~ܜv&C_HQGYFc͇d4.k6#ŔtsHf R!QSn-D7 H!}[`TEFث|"e@ND$8"" J?mPj2E,7&t]rԊ&K㴊t^qemw5d̞{i!7QBݐƸ9%ب߰\ie͂#;߹{ޛDHzemLz,V#ƶơ?8b;4Ґfd"EQ$UMvs&B6ԂBm(;~W?-~PFT"̼y97B|YXEME{֋ j~!gjʩ4.Yh)N^LZqԾړ(MOMқ>=P:My_.;=ENpbh=F4'T%Y@ɴt gNV~REZTP]ď ;{ FS `u6Z6OlmG f»glJnZ8#Qxn ZGuS\#PO+Ϊ43eӢqARP~U,_3puc}4X2(v*q@t@*t133`|tHf\!ʟdaJ'JL[7,x#[v5KõvWI0lUvnIM4$"vf\Hu)SzndEZBwq+q&'Q~v14Qe $t|:Mdwi\. 0P}2a~%rzUIJiǛ$S=j-b'R*`MfcofUzHA%Fl_ Hh lj 9c>/-O;]f'mH?^GlyFգሎa`q=_<'/׍:A#w5 J?X;c ʩ.tJ52$b"xq(:1GIQp6CcLO0oY3CgZgLAqKIA}Bl] |HcO1d <'Y h$ i)cbLd/CCBŕQR/Ed"zސNhSRI-qɹ ]~n't0UQMkMrCj9sv8aW7O9t=}dOX:G[˺)Яǘ]+TP*іn yZ/MFaNdIfLG v7WW>=_?\#pϖqV:tG- u_.765>5FHO\*&zړiYZtM{* P :AF+;pt%ɯiOJ!ѭ8D-1R;% M`U -m/I VP*k+tQw>}Bo:]{m=܄J|M|-G(\lNܑzH/BGD#\gxxO>Qi&cE9?Иrl\uh=IuM7Izt 9Г,^2!lyp :Hi5ԟ/ˈs?.~ug0Z!{) y)HX HުXa=z/5 5R5*g,Ef>s/.00]̆uC]RG&0V8?'55A45VEYX{Va' >5q1hr8.Qgi: 0zuy~x>|v5"'CoRy#>R =g% 7%Ԥ Y؎3pӰKYKbͧzZǏi+Z[!}CèQgiEhP?$n:Etv%zš[ֹP9+)r=2;-o`mb4$:dv 7yH_?<R =cCMj?.bԥ֓Gu ]cԥ&{Ca9]~%ڿ&FDHȜ 0WMF)Z:A YGҐF1J_Rc;!jJ!X[Loa.l ߬&ͺ>GgJN1\P\IƱߙ _5Q%;hrM"-J_a1ސ_ AXQ:2jf`e9N ֥@Ƈ4$1˓1_&Q*} C "ޘhVƨxܩ*'YJ@ KEHr-N7qYje^bweL }8+*K7A|3"ZykGe^q+ڡٰ1؎\'Z-IX(DCNIx{tԳ rgPxK4+{{;A Pˠy/kL#$;!@B&~}b4@Cy*]W0Lu]o(FX`2fEǨo`If4c; ~_WzG^2`D"Ub/1>'"R! `ۑ1i6(Y+lE ig:bhkY\_?`a9V'/ofe/hV;{َH:G?ݑ/H-DZD]̻zFPB0 Q*l*sҟ&*`+F \c_>Mo( ‡?%U!@JF+ޔl /Ȉ3꡷.QAk0ZdVi>{sGn1jj~Z_2F?:P֨~O6Rt znK>t~-%t5Oמ9Sߔ:/?Mi>FSqsD-@tfחYĖ0 wkD7 JC_Y -?-F¥UIޕqT~y- @,o鹆LoDjW6ЦoRt_5[2 n(d.R%}A'U fEpA殏#*dt)~s~ǵ j>ƿy (R8ƶF Qy*DFq[' 5zA)7z̝6SG ^I+ CHGO;m9BWU\a0>D:mVUFl@)*t";$NR ?i̮XQAۂؾ {ǥZL^nH(7鏧EcC7 *MV-Go8&. "b{WQe''R)#F~rLA'gP= \ >iLUPl~1KFL|bONRzKԏw  `X) 4IHۂkSߪbU u)"LAFe϶pmsIj#w5" l0:}t{'@\o 9 Dh }Q8h??I`*!h=;BxȹAҩZo 2|--&zAKi]I@ ø3Ci2[0NW7cD⍆5)J{"d/Zj?ckGu2@)ht!>c)B?P1k A[6[b&ZĴSCP|7Bf^Po&*CJwT|]ճ<Ϋ$q] ӈMbjK44"SPY`36e߆;GUyF!*FX75T03ˌi6k$c*R7>6'}'hjƞFaOJ>T8_-r!Uƈ ?&-IcP= /ęx%~&MbAP:&Xv+ 4*Aj4tz?c_pm@+!7i|̠)k[2t &?B׉q r6^Ry&A01 4No( 4V| tʯ1H̫Oc{Cy `j4D@La6zE~VPh |tC962'uo'}]!`OϪGi$}%%4 oG[QQ[c0*[0·xg̾gj60k ${1דU"0Ƀ=amu:!bD3g>==SqԁBJv})06ڣ*z UzV=Doj)WZExl`$٨]| 0]qh8EWpʘ;sWEȺsTR$) zKz$QSw2y ]!*U+y m_n: l':'{e# D2Y,}ƺkb#* F 4%iң4 ~<ˌeTAF%~sV'T.l\ZJ$пpOUz/ 2^)w<;Ay!*CtFMy̛T~b֤B{[TN箰+#v':S/>oP7O DgO1~pj+d=LB2ΨUtK8uZ1Bt;KQJ#~yw(]P&!Y B9`|ne4')ʥ;D%I.P1OZ/\'` GӉTP$|V'8^&%2Q&CᏧOHiضBO.?;V'#c3hS݀OK`ü8m}бͮ#Al]÷`V-Ml8I\' !$*D?˲_[ESMp]D2;?| Y jGpM5MjOpӛzO#yM`Lj8M2[}Z:;^5GX/Bv>'4A2@EOf1Z9#=B\=;U nZ :u{ץy\FHFxt1Փ`ya${!SEu}]zކ\۞4RC;U( !.Ɂ\6sHpih󻗨}l?gQ5k׉v19bgG6xC&8^fsJ]#zG-H|_<( t%/c6 -5H1ZzG \z "H_׉AgTrFDiyOU=AJfFS0Z A,B4Ԧ[Z*l ޒ(ِkJ͕*1\)0g7;9doKC ߒ kOAdBUUI,l]SP~=`dVt‘o4HuB2aw7EnFG(~ogmlePW_*lDe/Zɐ #yLH=AnIrAq ZO*O-:A:D9mX{ɴ`a4_ۤq6JށF_8R& /7$tHV ;>I~ ALufsSJ? f(OP_Cl8 3.D>Q@V۫ ?=_)By_̬tnQwk؋ߥy9xfseo_JP#T<1 [cYd,`#O4ck?O\&yeNuFO2ΖO˜yaBebmAYjbĿz(Z/ 4A|9cBr  5IgB',I:v /aPtQк+08[&sϣSɾLPH*'އRT䪇Y'*co\;=ys]ێBfqQ'-dh}gUaڧr3 B]6‘0`օe^H2q@wX=Y Q+7J> Q=h5=My~\êz6D Ս}ڢW1kpNfG*ZaH$=Vgq~AHM F)( zS!Xzߙl~s7wz}̽.PTWFK Εqv$?a8O5kt_<* :tK0ZGCv>^h sFEzO]_=3Շ χ.oBJGqES[+vʣ{= 0oKJDD9M'Q,eK&>Z#HW!yeh8Otr#](ƭu3 I1L'sk{?~e'ˢly·N\^E- I\ -$p6; H-tI/.rm$#%}kqEn wNKDsmB_!KбO G]%#qZz%$6paQmNX1 G&J,CYD^Ao9bl])>H.Ρj,o}b6b @d8z03<, ե&yeeDOI-aS/N{tuQf4mbkXץBV' (NG'~M}bUma>ju& W`_YC]< |4OM,y(&6NSaVcy.ʅ[8 s`Q;^p!$5cmQWWPT\ ;[#si (&BѰ/9.퓹ǰwMfWq3kרr籍[(Msb3bUC;'yyfv:<'>^Lf boQIKh}Rpi =7/^#-w&RT:e8h+/FE<{e(`V\7{߻I|Y`Gc ZW S IDAT.VI.tXdɥ, MG$k*bspa5L3d3u"R"~QF H[DKWeD{C(byzD>Z(WQGr2}S؋5)٤0NnPWpV: {jN]ԅu |nuFB̊U%Iǒ R 2 k]5̶M/U8Fb?NCn$iNXW!t,J?m_1H~i6 2[*u Bb?/+~<''I *JM|nܻxglTF r]%K/o;_s@,oo+'z-ShG SeJK!#%oaXITfqݒEwX`5Ub{1ȽraV~-I`GMF=68Z^AcRs$uS! ZGdLN|]uv@ъH_Fo}IĂox/WqΪWПUB'Ny{)3؛ G5 ?18^Dq!PiwHȬ'(W>Ri|fX,o o?v Y}}.]0oYc׏qό mvZ"&bl7J_'xL-I4P A.#CʻgMj%2+*VSF@J6Hb0G\/ G<+鶻.ΖO/_@5 R a.;U-f[I1xb&SSEfIEOj]ԥ6?0NvD;q>{> 5:+d~~?B6D0j$= 3mPU⻂nw~L.3K%)4/8#0~p6"& $# O?ŬnDdPnΧ _ɠy6tl]ISy:Y }4T+Ӝ& ?vEmtC6n"PE(*a~X aa0GfMXʨͪ,ߪ#[ק5ud .\ՊEKkAqe9EF81;pg}aFq6s>F'@x͇#VpiQ86?:K4>8%8=ItλӋ4oʌ}x8q5ʝݐ,"]c(wWu4 tϟ.NnBè{=mj5{+߿vt`k?DkSmVaD8TYX,oIVDN~Fa"ַQ)ǧRi~%2|C8_A;:H'AU׀lCy\ui~ ѕ99h [NkɪͭzHg PW0<wt n߃O!F(I4;6AG0Y:hw7h~F;Dh:!TVQ8o.lEPo/bt2:"5f`p=ykݗBG=xVñ!~gSX߽|{'XlG؄ghw"ug UB?UvӨ,n^C[J_$L^|2>bLjxg .&(` tM3z{z?+[=vQ\p*1MY(kz<{v sypM7Z,]9,a Qk;mMd(f9l ̹5(G.7, vdequ| y]爉84 X ՗&}뛰V, K Z1h§f3(Nkcm{=];>#zOۂOWPpO7 +DK#o]G:Fdh$~r4,p8’0M!IEo/䳘{=J$Zlb~4O"sq}a:l c$vNhœtM1;o\;#8PqW\鲪JOK 0fnqtϕI}a#=L/c^\`>IZ";MIk*In-0.R'Z޸ʼnͮ e<e(hR?ªI#3KDGF0{EydJNwbUBz!)1Hkna.eX% Z*nB%i$QDU YG<_$tΘy!5i=?X'cߩb5}ͣ \}*Е6FG3cKX͓Ӆ[Rͣ\9$'"",W.$־F)yV?Ǩ0txbym2@)mޙ߽$#:]x1:,~=>EbKkh?%T1nˁaTZnmS؛}Fb?4/fg:!n'?$nByэ;LȦWQ%7Y'G0bcV998֫WPjhm拓ĪrHH!XZ[(Cy}ۻDDxlb1a J>'kNpcK{R%P DIְ;U@׺DWP2w5.#eHz ľsʚ,~fA,oIe,`.!ֶz}yJ`6 3|8Ǽ(zas+UZ/R!J8 ,]@K 0#?ai?(̶~NI%cqS\Nqp{4NX~<' C_K(݃ꇆH򓫘w`Eb;`V\ԳxyhhxC?#]=<>Zf5i#JS+?7mht߽=W:{ /ĉSJi}wp}|ZC̋2T*/Ep%"ŗ6l2/{(Iљ0 &斘i",ԟ%Fr,+yzS#ky%hwW%R V \YțF 6Z"A\|S Z @ɦQnHΓp^V pnSjphw?/f@<:bV|W$ .$_#S;{*E21΄*4ģ#"Jn1H\1M8:F\AN}[ЗurM\{H:wXODc#Gc;ZwyEB/fސvN cc w*! £*Z zSEU3p]w/Wޠz֐Cۦ-;OzP;"ww_^V98:rPU3Ibm2am0Vv06>J <_ŷmܴt]~>]"}R|n^9~H}!Ygh)ײ77װʘhIa4*>=sڅpw\PRF#1?3_k#f=i⮮:fZb# ιА/q _Wꝑ>Y M)t Ft'qgτa8q+tߛ<4Vb:~e_i*JLu\lٞVh]F䠓h,5{KлJ">r04m⯻&NՕhzqA_ R7WcxTvJ?Ξ¸$u\5e=; hwȽhr-= +Z_5=^y1]as֎Cu`͌n6(wuM{n@PK?XDT n8gpٔtJ'm⮮a ͺ{h\9-==}[wTl0.[];fC M`h{qY k*5OqWF`{\wqfP,D/x(VoZE7Z=7 z/ kLrcIFѰם@rR-Ot Y i  o8 yAeвBCԷF sh}2p18^ u0gf 0WP#(w~ʓt"rؘs]Fv5?&cP.,GXDAi.f'1]WhqoUyssjl<їh|xBIQ#}, `t̾FTqN Γl CABz+c$sS./.+yᯃnO wޤE(y}| (53K83YNO^L?[2 l-w3A Tvߏн>C~Ehf7%)|Du{˛sr B Zm?%i_/Q1EjCS[~*Ji x$(KЛI.E9(e]5hy4zn==5sq1"NlkE"b$H1:OM:iLm}O\^K'v(z]96q* /PY ڙH9?qk[GQ=IQ=;N -Eb²ȥ -~\*t< 9ت.clUQtf,kWa,sLHY9;$i^̑nQjM yZ%zU%bRz*-U%[Cߩ,FJUN%BOӚkh?fҞ-Sx3{r;-"?Us"1byeB}%c;wO^Jb̦OY>/EŤ^ PqI-Q}/h>$K^Dkjܸ]ә!(]fep\SzDAwab`r<)rD7'XzA7Nә4闳Nd 5]Y.dSSmyʓh|el/~Ơ1^zDZ;OF1負熉N$C;T?8VUz3iy^ +q]ߨ4EC-ت^s4!&^ee ,4 9"Iw6ÚھXŒe ki5cn\XT}h~_}7pvY:g~wg:"$Q A*Hv"E1o麜T@,f6Q(dh?z!V&xQOsE~,ҷm^ΔEHjAPr"Bwܸ(o huWeqt*ҟ,^@sV2kb=CEӻ>N  cN?7[ît4Af]mJ0kP<.n. "w:%N'AqJpu '{~-=s󂘟 ^(h͆oY8 Ĭ[gċxSLEӨ8t_maOP;}ʍ2&w%VDu}9Sut_ %) IDAT0VvhO[!,)ItCkE>hF U<;ĵTAmNZawuxq8%Iq!Eg:rл> +(;ِ[sEa7𺌑=7FG7mɼcgt OuG^_mzDzgkBYiAuµEߨxYu?(tއdL8OQpq-UH<*E?3+zN[((w3>!tTx4d?]?d8qAM[] k)Z4&ӉtN 0*ǡI0͵N<rAwT%$u( 見`tb~)btHl;b DG"]Pj0Zd NŊ *AX'!vRςιp7BtCʸ}$ʮ~n97.tMw\qEhh8ܻqez~iêR #BAL.-mϗ8n%K*!py1/ctq::۳i[ rA<֗H@߶:Ny j^V*M뒱zz̬;: :Jr|n@`y i8kzo<|ElOCPHnz-'7vGuأATGLMjtg^$ͫZr, !"% ' One"?@v=6 ,m;O "QyؾZ*{`CmA3absҘsMs%2_Jg ,%&Ӓ&ʍ˲1tOg\F'm jV[8]a$iaD8)cmA-=@IZ-Ru|i AbOjT>*PiOf[zKAo22>mql`w)(^3W^!Ko2F!A4BkZ'pMgMF%3sxN{3w?ǏG=MO?IIyEhvs Յ!e^oVSQP5]t3Ӹ;h'%Eӄ*䊮Lf 5BP<͹J6ӟJz|X[_nUw@̵J!:ֻ11< Bk-@rYrL}yt3CbOiu]:׊|qSgkȭDj =я ahN6*]хYߟGW]T {-{$OB͏f5_ITvVmuĀ@͏Z'EΠcwz-A@AFjYN괔]8;+Wh zNj[y5~W-%kE!h[%"ԠCaPP6E4PF5%ݵ::fWEVkl$vi_C={:jqx%:H\oaS`Z@}JXwO߻&16ܗAV˛ TEjP4ʋO*4̮8lV߲=iS]qt^cSӉo"^+'aUgtZ9|7 fZ}phyh v>Fk!sDTOGD(8._?X[ 1R?{yށ-ОЦ]!v ^Zlqw4Ϧ4>m~pOr_&;{3y_<Z8H=ҠdBuo&MeقtgK$6{T3jX(B5E}8. w&.A0P'򴯗͛=M 5WTyB$.`O`j KޑHIoYtJQv{!`)X1wP)%5Noq-  8@GG Ҳ?a;!cvbȽK2H"; 7N-f].R zas?OQ?$ڣzV5$ҕu,2<T>d]Coٴ>XAf+7z-,/DBQr<1 nS7:QD^q~=7hrt=DiVzLfO.{U󉯷&֭ebU;ehװ^/S,)i2Qm9x$ekƠ_ApQ^ 8}<%8x;JjK6(|CM$}| TޘFG>]3jd/>%bq;K/o.Н0% %[t)~9fH~ ^]6Qm;oaU]CLxű}L0qUTC_#JR;7;)k%ԩJƫ7Pv'& $;ys>(5l"OWQ[]:i]a}Up>wSԾZ9;8 H.0.~ULۖ%EWRgAq]}EQnXW htT|DĒKyEHezlMNW k%+9I"މ ޸ITԃ X]H=|}N,B,B'_[xg.ʍ˴f"M]jM~j#7ߔyO%"+e%:&Nst-#.̟|k4%^ssWړWx3UJ(\ŊJtQ>DQTp/Hj᜞~"=OAd+{Cd+r#cP$P'x3R {p*F˕qw}/[$U*b4}Z(fAjEΠX2Cvesp fq΍a-4_vEAZZF+ж"yIi^b,ԃ n6Zs6}DIߞeQܣ.ԟm㨮J|]RAj]Ff~OLo(t T'@q|Psc[G{ڒCAj>Y_̇W !i!2.WE'wvz_h'l/f`'6_wɟOlz3lMZPK6B$6a]fHǷmWti:cM ,Z3adGJ oj {*E˕ &#Z͡vjz*S:κ]h>~e|4פ P-}sY3uҝD+#~>N72D[ YN(F6Ԑ)t7v;hW:y+C|gIJ%`zgDS{n>|v/t2]K/h/EsqqJ"ѻ5$щ^q{䆝὎{F&ס;iyk轀vI{e^Zn`U=`6 ws /v0.UZ.tt*5@QĀ]^!c$Z F+8CBwѸZWB:zW4zG!L~Hy]9e'..yz9!j6}";Пa:`vDo?XW.B&(o D ą=W F׃J7 .C4Rh&yg"87rͭP܏A8iS#pLjDx_Yp-Fq%Pd'%04K{'1XZԋ&' b{7Su.!^ &.Xu[طv5*V c&"6IqD{ghNx$@՚?< ;ꆾý΋#k_rC/ӝ%hĸ"c'U:3q:쟫kDmV@ӧ轀􋶰fzZIm²,3g~5wE[i$0KpNcsy% h(5Gq+i\C/m-m3~keo( dYR}j;ؙc 2H?a4WZ̵~HOI=BCz2F37V*xVc'N 'GC$0 ̦цv)5z`pd?v; ,خt+*al u%asp 5iڷ'y}!~7M.Sꚰ..^3 OͫϤI>Ր . !V*줆-E' aG ?@\e{o[ &>{!AEloAq?z'al2z?9qut2dskWR;cGtO֘,A [q.dXG|5qҦ&xK½&9 :ץUK7;P@'{40Qr^L,~>X7;_\7|4^DErEw?hWI:1 +B=s0tҞ)Z>%w]TŔi--K9Cz^&'iuP԰=$Qn-9k(skR6[锸aFG/ ?|߇=WN!=٢#amʣ|Xvq`](gB=`x (wEOܸL0EO$Qxe0#i^(o߹{4z4)yg(HyP67 V`J3;Q'tq..d^ f*j%?3-ix"vN::+7.=e)XThKP`O\iiT_E];S D_2((xQp>>|t{_5?7"}Qֶ߫$>oE]:IRD.ʶtx]q'FZa4[r#Q"ֈZ6{GˏXHқn|r ]ݫQD^e{z}y2֤m \lDۥ+I]+%u-7&$bVzkD_x ͭֈ~t7K΀u)?;/m0_e}q(]È%x%jH]'[Q}޸Ir(ӓDno`P -GH[Xa[uzQXJ-t.;8oc((ğ~$33cBAK[r]>E`Uh tX 'r j qȇl esk"q읙%X(y"HUq꟝y!SD'}D$~:F|%㻰UD`&cQ-#x$]͏ pBY;BMP7T:KP@/_Y[j%t"zSmmg㐥'+"Ma}Z,Α5+v1؏h/a2Oi^L#M78bw]R6/egtTO!ۓ{L<8CYG~/F_ޢ q؏ ]JtR-'c$P<#˻$vMt 4tU}kquМ74XG?Kaw]ORZI1N-LS7M'mAozSD>~@7~?UܧV1dw%T2_4[(N)uwp;4gL _4 sDs%F%p}x 7]dv]XmKZ;"G0]?MŨuQlpJcMWXKDX %EQ`,+O_}"dZGA.-͢G*\mXuðNan'7vEGa=%;cXq,֑nLѿZWQ]n-PCp]hz`$~ KyZ'_!Q}d4>zyZë쉜Y̵=}6I0=+5{"M\;eT_?`3Ah(}TD1#Dn-u&۠Y&yΛwdF#v-Un/J2nDMH*_ѽ^&Gqý;LؓT+rI]iоqMfi1IW(ie1b8xI;/Ws"i0 t-t~ɕvw-м9K? 'n>bF%o."[egT }gp*/r=]MSX_:硕K8sYEqq)^(YJH'hIԣ&J"rF M|N,C yiY1ϗ"]}(S<(ijH W8E96Z,r f{BݗelfDdt,܈DbXjHoJ/垛F[)\_@ʆXf(jlHc6 (޶zMsZ ewu!Zצq}ӊd2 0i/1Rj:(Ah: ٘m޾Hv?OO6 rI>ql`_?Ob5Fen4 va;(S/ 7if bLҨ ^>-q#ړ{w %Sاì>u"Sb%̋:ޙ0:lx15}k1h*ghO6Pv{PW9AI] :3X=k{Pr(Uz D|,J< 12zXT~1D'!MpoI(Us؏EhF%ň*%x.dB}%kZcxdȣ艤^RW򈕁[? IDAT%b]==n}s#6] GBOCvqgPj Ռ`-%zyEQL+ ),opȑ 5n=)$$6ӓknuj" wUkؗF _P;lJbѺ2%ߋx5eѾ%i9T;ڐH/CsL)r/\ۆ(]\ 4†gq0}C FwW,\{?=`\#ޑ5mhRo*WJ|Dõ~Ny L8e^h;eq[,cћ͊Ͽ~k΄Kv25Ai6Z7"6"@lzwuAw(n>.l8o0ܼJeXKD8.^}55hUA+i=ȤPSpl e77a>Ѫ_LGiHTԄD+iԓGD tj4.лP$L43"k6Rۓ}~ؾxʓ<ܖF}A0+Xz}Am=lOW=DK$qq*Gd+½'²L?A*W1>J&j:%NW(k;R]P|H#:T+BR8{nn14U|&&'_Q fhgd2\S{.+1>mK'"Z.KlėJg|( R}A} b V:}b{9 <=g;8S8 FD!&a$aǷґ*1>6OyTPpf:z`kw21:U04ĩQ !/')C*[L/"pl.&Th αɖav]?*j}㧗F>z9lr`%rhc<|%kcZA?IQ #TOh2`#4T14Ro5QP*~8=ƲmyJI*? jfdQ;6K!=<'C!-D‚Q||02̐f:BO,{x#WVh2K 4r )'?A' .F}FKnTl91rceI<-yqD,wTh8jH?4 ~N/ܼ4܀pcfå+W%6ֱl %be 1\/:-11G{ܼ̕N{뉁ȉuOҺ\?f ǽ[`'w?1x3J7B?;P0T~7NpɅс_mƭTڡipI`oF zN pxo&4j)Ĭ| EqF?3{|sNo"Bc7_V}_2(=qu|' _W =?цrOSEX ׮vXі`HgV!kp7.ƈ{r;dLڔ;B_OJ{gfI75oZ.jC<\d{* . iTJ~vR14Ήjٓ b$Csī0lHDy1s|ii~I,14("-kwC?!frkRB'esv8~¹j˟t? 8.NMh.[1ѻP(ެNӝs!E$vK; 3-Hͺ7TLjHRݴu\JuN{ 3EjIcu0̆eTfdl}x1137$kh9ASmlX֨"`QаkMXR%Xa-~0ʌTbC{kw?%-l ݡs(k`kQn\ƍ(7.gZU"^ϪIjFh$`UX($^tV9>ޫ]9J[ϾEk5Z,9i,$qcn@o61>`X)O h7 @*ԤP{'qbX&Z#aհ+WkkK65 p6e e{K4o΢'3h'D ;>vT eŹyؽҼ=*~ g94>ZD-NJ!ҲM0YWUQQֶbΣn](t-zt'Lymzbuke"]%iDh,ŒE vYz p? X5w+]w3$}HM:~S#kv hu6}L=ݟ8t(b!l k](>Z:sy#5bujB{lq.9İ˹t o&/18 #4o8|q~l,wu4ձـ]\ ih!T'T}bX`wpc 5rL}]>m/^2r5Uː( N)wRi [_C_ڐyM~m 5{ L0cvpSfТ?bz:~ҒTBA[ ~i^#}]u:N&]ʄQ&Ѻh*zC e?޵,M{N3$HQԵTRuwMvgvw;b;?ስp^'qlLtOOVWJ*EDRH ȫ?Rd乼}nIUO@s.^!;,SLfwa' w@ $L^<͛Nf3(_>#"oI{2tPȲFhDh<;E uB<]Q?N w[m13ܛvTX Rmw=bv.6A>7$cܣGSd~i.]PdTg`O^6_HV!œ4_CzI#du@{w ~ ;.bf[HkƆ{TiBon_]6NQ4]P8LI/~J7u0lS<:8js:Z̗eg"m#@x Ct,&L" ZhuZDG Qn+4"iIq=ނsws4E4  5\[=:M XsxQ]20\*3T [ 4MOs8 pS&Ğƍ4:3I2I21sdгIV&V udP9b` />z:,!rH5Y{* w>'f} Ηa'UA!&?X ~X3=Wφj128*SZcBX  C.{ pS&gȖO DEh-쮴5L  !kCoc?7Jш.E nw!:dn飦7f͛jQjd|'>'2I:3ItzL:g!fNhQwv1Bw\;>C,;Kڄ7?I/KD#BE@og ]ӛh-g{:x azExGecxy2[ %^l!ßqS+7J94NC9CO} 3p* ex\ut΁9ĝCNP9oȳwvΙ(5[M4LlGiȥtC3< E[EL(]^$X[h^ ­G 8Sc8(bRB9;ОHB4k*Z"<_^?w :$,m9Ew0SVuaDNᵊ /)ܿj㑸@{LQU.ojC1&J.'VT diWЎ۰bG]ҡ8.t"}CBe~q ia;$e >@.}D2 9D3Ex2t/։<77lw.O(X">d vէd<D4ŷ:3>.FcVTDz없>]ݝ3;\0^=Q"sqjYRw5{0]DW.uaCO(#, r},Wa uqyq(]2)MZ+*5sӥ'36}"I ڹMO9p4CZ~O3's]zi2?Y~?{FEϟ'պbkw 0SI ֪P=4pvv@ WK3e2 秈!tMКЇֽ"c6ݔ̀ͱ*YH ? XX nf*Cc!,AQ -Aۮ@{_O\PQ 6:ᡛ"PܣQ>@+7pdF tm1EY1ktX-r q ֏.,?Mԣy]8!=o0ވ fd#Wd78)B=Ch#Hd MY~qwh!bɌhEU.I^RIZ}WTІ]~{<04}o#1,6-$|-@&dTb;F7%JPL_m2tFEX'!ސİ1dlzʷXq*7F`ٳEbbo@{1ͼJqA_|O qy}t BܸGuAC+=*p4* W;'L%LeD~)6?AgTD7%8yoY||*!Un=|6DEovZAՆ\BF_:./MR&LZ[G.3Yybys<7gYaN'F/) dz d+Xu:MlDʾ~NrVL{JM4vȸt4{Ϝrܩ 7 YKVbEFN}Ă #=s(N\>+'z D+&=^'9bM ^J~X!_Y Gu0Vzdہ&VG>Gq#L!3HAQxjx>4e) d:TC%ׇٜ؏.{s \gCXALwy-2X\CiObR4\BJe8>T>j&m$jдt2^Z 39prA]B߼Cc)ׯ!x8"R0,u l ͂CtGoQYVB]zh4H,uR3q(߽fBN10M ,-I`)LDL%!9x%\3/%b`F6z_܄3AaaػLpCKla8id/qR09,q1\BܛGzᐑC +D`E҄j$c 7PO1bQ:!|2(xs3e 7k{.goٗE/DвQ}e}f>4 :ELљC?h7ZQ߬9DlfhEK<(Ir)ʣnFJ1 ir'83-@3n~8G(w ]y'K{edI(gڏP "ܨʑpWL ϧ`L$9ۆjpԓ(vx ]{Jh޽'ԣUKD8],f^'=)[ƊiIEfP>_;^iDhT&OEawn)z&9Y`ŕ2f&q1A_هz4c" !K$Cj qM|tKps!ȏF8jfݟR@{uh*I0Z,Q f54h(%ԾGX~ o_c@7'(1 T_Hg{Dn;㐺>($U.D=Pcmuc OALzY  l%3GӨG`qxEkt+ij~p6Jt-͏[Y'%t p&!k=bDlO)Y7mski"6q(M`4 IDAT['π}o>ANgp" !Bh$O0[Yܞ|+Ig Q瘝;?;}H /v?Y"}5GATT*磵 5Kw|;T;]a'U%ޗ}vN$EG^qߊ1H$$_Zi<>r.TAQ ?Wn dFd*DqU-{+`ӏĭCȖPJվqk1wsы>z=1D _QaGT ʂ BƷǟG!fȼ0"yso 2X/P< Ԧҏ4DJ#Hl1USixpՋ,ldz{. ~ TG?^Q+ Ihmrh'ܪ^x"A=['`8?8b~:y&e0zhP37#-usnQ{]Ka.iDF^%:LJkH<"}҆Qc"d0J:([yoRBEywI6[t=!2?뼬v!T5C-034c! vR__4ZwصX>ݦCzNL(`R;"aЩ ?gd{ ]!ziUhpYSn9|n_bU|6pt?uKSQ!-rFD/h`X!!B2uXGŶ vm抦,D(P6`Ǒ+O$Bl͋7!l#g֐>9@Ψ[14&%s>Gܵ4>#D!-̡LxHU6z#JzxnCd`RUS*XiQ;dPxq)(bo\L/q.pcHNyIiA m졗W>EmB5ȕ& {5UQ钝Qy;uR$GM.y*lvڄY}EbτƟBUB )Njˋt6i$;!CHꐾ3[|ޘ\ئ!^9R⟞@7"[Y`{FQ6 2z;FbB.kC$̊ 9FF\4`]`ܙVuZksT=U]16O18,M@ETo'YM\)A3kpH\<\isO9~?^gPy^k/^Py\zܗfS! RwMbﵻ5!vQ2!|v ϥ\k䙽#i.Ո0 :1л`bkbBLVx p(Np|4y̝Tb=أI2Ez* = jAj|"oGp&ge+-U`P~8㯾!@eX k!^Rhoh1")ŏ;`-ț T?ˡ0J“׼hr=Sh,&^8pQcp! ={, c asBfs;.ELe(6Hyg, SHVԩnxlIt2"X߹E(# +?1DZ,g9q~1G8| 7[D Odd]Ҷ<~9ΗoY@1hFM%7 .6<ܨ$bmN;8%5?\q22@;,!CfWf ԑE (e2&mf2D 85 ǡL+C" "W`-?(vY(*NkKMLd-슪 wSI2J]c1#mQ2!3 PsQ=rYI&evN_o!cD Dӄ5|`iڜ O\4<%5[xg~Y,dP(jc{ZtT()pHˎA|w&Kͭ˿h(YnTX%Uŏf^8tqx =bXf\|`Ib'8ZR8%HF J` z)vgS6 Gȿ|g!y2jzA72_>#O J' Vߟ. ҭ($ *5,QtH6= (6 xO4QͻCh/k^Q$.xc 4i%G5˷b2g!&%B_g `o "@ ¾>.qj Kp?Y_Bx`IJ8ps)i'B4Y?Aka~1U4_{ gi^W/qFaL!d3>ԣ:&"uvmBWsh0UW|ۅrBnbxg5r!e84[ MfIFvVTD]*BA8ޙk݇Y0nC{}LT&6z܀Ti5Y/Cܧ(9gu2*GM+NDq@ވk87`wវŸCa4/z`t$p218"n uS!@Ն /aB9Ԍ=WsC>Cx;j-vws`l8h_ 6I8SI %4KQw!PBR)Xp}G.I:{{|0h:w,S.,H׊_̒><@<!6qƉ[e"᯽Qߘ04ٯ=p]xcơ^9ԋqFL՛AD#jAo=[<im87>}ߚ%ҐNjpJϠIS}Σ)g.H_ա4Gz zEѢ,gshLP8X4JBexqܱJ$RO2BHI- Z_s-h.'io51IĭC,:3.M)5 6&7ꔇwtɱz+].Y7Z-#Z$dYLJ߲`}@_=x EKI]RZE~v\ ěOTwo_dl)| W'gh5|Ob~C#f̧˸y v.>-VAL>̝g8U?KuKd8'JyX1kNt=Wdi߁Kr0 à7&Kf7nis(Pك?X?ƒnS&}O 8&GW/t/u8ڔx2]\"{B7Q}f~r^]`:v;2Ld?ϕ.S.9S!j_^:qUjAAm6sɀE"EE߽2xnRz֟ NHW{)jtw `%}$Rp7 @((`WZՅGЪou`{P&a+C4M-wo@\^Z`n6.gI,t :qLQ[ gigbLkz; 9:o xQg".ǫy#y3߶ XQͻyr RѸ'JȽu4Ln:Fmˋ D^xp'ڱDf1ػPgT‚a.A5Dۃ'1BSvvˈtpq;ױxU68Jܽ5 WCP@w'љ -YQ$sq~M:=>y4 s^\ѽ̟=GF 7= u6Kpt?sEET\^{Dvq fC eJ`}S;˴+e߇A+D]4? "ۆ]%7E8qA!ވs^H s4$!8EiHzH)e2WYm6LKt(BPdGu` S&2H/ve&t\, )a0TY1 ;B,:Y_bۡ:!ó0N]!bVgh}ݿDw[= %ƤP -(ltdhRޟCix!d]g woQk~vx9q kggSQY^BHs%s 3 kOv T)%H#uB*`/ 36m;\ppG͎pFP\;k×) dpq ~e]x4( DXGLUighZ^cX6|64 z#t0ہS[Jx@?o/FyT~;ljÃMt2 (C!w<#@Mpf '|j݇ !Aj?.Y"0HOȨ&_i f1FAQ~6S1Ƹ) Sx$ eI,(]FiLƅ9 GM[Pk 9*`HqU>a9G`sP'3ށFIn ]KyXg[CM0ǹ:fߙ9\gT ]<bfnoIovH?2!9Z!N MC} o40NNY 4W;h]KA@>ਸW ԱQZ߳9(PX|D"7pu# k^I,<]?Cl(1!NQ5O&MF<$ICw<A:Rq “`YCg> SSI$3_kz_܄NlF zh Z>ĞG{i6Cҳsپ >Vua, zPκp&!zmp4 l_i׊Pp3I u}Dn\ALŸA-OEm(4[wEL l-i7JO(&<&JxC{I6Cž>?aϣP;;7ahϧѻ9 e)d5_G) 6{@1B%$&=xېFYAj3A1Hc}I9lWr B'S\@1OZ΁=,DhR 6$_B66<@nI#fǠwOPVhf bVaضșG9hbJCwTV7:]ln-!8 ctoO8~OO5t.|cBR4w34AMj/ͽ&GD+4-I-5ޓGCgl¯"$U}ok2D$9(37av, @vPoQ ?0u!׻[l/ځD&pk>5 X(sv8D&X [EA ~ 'WPJ{׷}+gO ۆR-P@B/./..1~A0+:lk Dާ7 JR ܞgݚH<]h|ڹ1+3JYk-jA'И1ogmBH%Yr`z)7PXz6K4v2xNtYѿ|sb.H28Q-V]$DUW> bף^Tա=5|D%0xf65J'9C| 3pd8_aIyyO>-i?^irͽD { 1~^0>;yľޅF ?Az?І7O,N"<lLBђ :Pb m=3ObJ b`t:>'7p9|9=? θfL#:lw]Y)Aflѽĭۅ{t %1AOPO{ѻ3wPZtbA Y00p| w@5@ *C9^, ]zTrDlwBw]H`d-/MZ woͦwйW}ʭb%?/}6X8ɦ E!}S [ X, wP,r#iGSsJW!8|)L=E,./O޽':&A<< 8ɡR#AQyHxK;c07?AqdW.\m]gc@AQ x޳L &W~ށlQlhu,!jW|WyMP$b!iaֽ0W7NF!1*X| +Č]4y%ջƻ75>~ 1Pyyd)5?:]Zҷ x-fPuy}NNfϪpMdC:OoK=?5S'KȂ 8qJ/}Zc]I3E*d4G nNK,pv`|\[s.1XD Mbf {;]>R cT:.]g!]Mkwt [ KEC|(䕯0 IDATp x(S0C7C54>OUl(T|?[9k>$s( D XA{* 5T@u>B厈'UGg^*I Vǥ½Zzx߬D"h, NFBPTʁ~I\dhh/T\C~@DY-@ j$pBо9WO!f20B~vL~1S"'6:3Id msK?B z/g`/O v I']*u'{c&$uڟSZ-Hq8QR޸ 7/hN0@f570:.BP4T3Ml$A4x+qB>c X{}:/F)uP` 3Pq9l"KrK㰱S㵈4Ei( bx("c2xk7Mtu>0@՝r~[sz TNRBBSZ!ZHw P>t82-6g{ L&nbs; N\ #B^[y:piUk e2==D MBKhn! }fImn?^%naƉeN u ˁl)^f`"e\BSAeC. T8ovGx+됿{s$BҐ&t ](Gu8qVZ'פ\ !ð߇~(ShLVhCf\6Lin n>&( 7(>,}pE"]`6:GP҄{eI \);MTqD}/ @dh_0d&y܂6V=4sqoN`f$= .ӁjmB+/v Ox / tHbn!AF7D酡}(w2CTDYǎж+|׈:uE6Ƴze6:#,(\1!o U$ )sr Dtʤ d1,V2X"Σ¨ G Zrh5Wk}P|y]1~ [Hrh<vLFw܀\i⻼7nEy4t scp)чd9_Ʃ!}rh6Tr` 8SZ~g&AlnqVB>YP_6x(z /wPQ a;) { GnP?7u w4g丏udw> B%A2u6P"f*F }>ݠn}Ŏ|B󯈒kh(:h('Fo?;rG# 0Q ζ!4;}5ⴓnV^M8qz ;(!RAv cD$BN*CD4!\Sc]sLn1H'rhE#_ еE0坿"t\4ܙ,{[MtٙÞR Q`>5&ĕqDڂ}LZvOCڻ?dvhLBf)Ry!TqzWF̑`g!_d`YoFRhŽP9:.Ń[da Y޽k$98{Tp}x9X1y2rSDn LQ܆xxFFdqBy'D7КР\9Ȃ Љm2U8B#&B{:?C0JÚJ1~Єs{ ?FubBv L_AоWrj#$[BȌ_%}GLpC9gk(xq!=juxjMxAvqH6BwNC,׸IpSuIj'89ݾwvN?J~? (^b`c~Ǩ^T;bHySXt3K9UQ-/#nnh _EIapޡ;6zr[qFNQ v ^1 H"'7AQ3&%DɑXH&d!œL-Cΰۇ`-//A|jh9fgs`G-VoP /(+pॆ"m{`ws?{{ObgJ`;-B:x|;*s:uȑUSN{#_tfihp+gP{ +hSIxIZ2?gkG$g!)9|C H 'k}E"@a]Try $)1QVr׃ Br>6b< w zMC^AnAV&`#IZ|ц{gnj& P8Fgp3`l8[o@$YfD:\#ޛxބ1![@ k<>-3Dӄ8{x[iЬNZC"[U})hM k"Cvl"u ND- ߼D |A=ET>80h "ջIT%:ޚ'K@|)܏ܐ n40NuD `f(^iL Or2Yxޡ'Y T2kʥK WL30S !3) \O%&pc92:߿ChKxg6?{oG="23N$H 8bv촴ےZIzӟգ5Ifڙޙi:Q,+q&S_gD&X3Y[W=OT|ރ+cyBC93B^=[L)9 ^oȡ/93~G,GFsh5]Nل'*OS8ǩ[+PGAkK/U9&-|^):$v^3ɐ(`eD7l'\3°&C>HyN2I(tlD ݣ.@Q.l:ݫC147:0 x:fMkϏ}" '&So$"c+?V !eJsLrh}{eh_cG+^!r/lZK܀SsnβfE 2ex"B]9]8 3$ۈʘ Oc2Ep%)ghΈM˃vGF]VC q_(P-M)@\񐌡bLF6<"EIEbf$XĎQ>\*,qMS[jieA u{-2k%sMѵCDdB蚦4W#4 ֘Ce4cbh6X6 ɳ9 ~tH*SC . J`уRMPc-t_^T#d ʭ_9oVCfSl߱VyCFeA-ThgdRlRM&s҂҄0}|OjչYG~p("c%8`KD{MNRvO21㰮MAq؃Z7 ـzx<礵]"/^~n퇳vHZqc 9'X@WsY7>"@Թپvɯ/ d~k[yp Z%EBjKĉ Qkyľ)}%I;Wu(4ZD- x-_Hf;jIM25( gww?L୾9صE*z~* _64!b:} >S7;:%M9v Wp)9Rhڄ.-<dt%@ܿ[AݯPjxx ?T^F 0`vty>5k9gJ(t_8/P]Hhm*ScX?w~l%h1F ]ߣgpvN.Sğ©Tx*B&T:`Q(\CoDG?80:z7>wfS3R2[rrϒ|7~|ֵ)XקW{Uh. ɎCMrJ6atGh=rΚf;pG3}Wi m8N| vZ礉Vi"VS Y`4<̑(Oxw~ꯟڥh<cY5 X4SOe 4=xV> |Nlx.KDͦ:IXS}}-OW\@ypO8̱8dV-&_Ӏm[zR] #Qj ( jSmI6w"Oɓ3( 4YٵEp\qor @2/_>?]~bFXXλ03(W[r j йJex+=ڿxءy{rlAd˾]$+ȹ9iRo8hhSiS9961o-$dsj밗JTGq}[Dߞ$| ѷPwOQ_@,yt714K *ť.NW>8hGM`%9Ԯ롶,'v7oW;T_s4l>{x}eд?7 Ѫșė;hhLԥ;90]qk""8Dt\xGtCz$16Bu:@S"$N+'#,PV/48FK4[hLB u]Zn›U̠vrO4d-;ܓZb"?ZR(P~~ b+@h`Z褷 Ď{HHL5;yLc죲r+!rփJ]ZHk"t3 )cwQ~.GIcD5S<OrOԀva wbN5,\j@9ൢ&Ƀdk|9.qV`XliGԀ8}lxгeHꭡ#4ɸHC&i85b7 pVО?_Q0"r>W65AMnK Ie ROAr\*i BVhi&941 YR Ċ0lk3}}ݺj?+\Jb(MHQ>sMס$glK!jZ ADS0Y]x5,eݲ(WCg~٤Z᣽6Ԏch ҫՉ%٬\NIt^&2͢S<؊ ߌ}>Ak/0<0I2m;J/ܵ20ۃ2]+N(&i6a&9X zEuk#]Xצih]I!= njh^A1D q nT?G d}sVÉ0Ui+o`ݜYD'UTl}HO2= I7͡ YP}el~ 1Z,bj4\]OBw>{ ^q'M[:y8C+8`N9>n?+L7$BO5+E] )\4 j@94j6Uyej U*y~Mb?_Qtl=ӔM#݂un8X;XYfHmRq6[jhpC𻃼ޢC;C`Ǜǩc ` 1sJ-ׇKPL_y'<<{"5&FPd(,(8I3zvwquxΥrcQj .܍uq<nj҉RR">Gp\)A 6oLYѼ_+=}gq(`nGbMzyWcPtfPIs+FiL8馍x-q=CEW`nCq=4؁=o#\;o 'T*=ϠWkP~=Yt '4Hܨ*ui硦{jNmנWMZE($|(vJΧ=1N:|^GV zrԦ)QAfP<ѡ"`P":k3P~V?ʲao9OtH Zӑ<ц~oZ#kr({GݝH#ȅ'{gV"[p*E;f('kBilAq=MHM@/>><_΂{ N!փĎ;]YFfs0Ygts 4HcX&BBnN-wx{kݟ?SH f]NAOU&v=B>4͟,\NBA.͗`ݜW_h_}ޏoC=]= 7ʉ9::7t=y"X>utxm|Y857L'BZ:I/])ؓ57 3=.OV(#WX~V. faP]~vzZQ?Zj{h,X.C:$nԦ ɳн"ezRI2Q$ DvX8I3w: {qJl>gB#^2gI:erZM&,rȭ֤\RִY<;!#X:E%Sxb?`66d(G@/kJ6?q(y( iX,є|e_>MJ3 x埑Brd5:76 9>әRɵ( ݂[I]yO=lP8P#GJ Nƀڴd; {g"XD?⿹*"?~J6{XEg>Q3ј 'Omp_-]P%ShMh8.ftǷp_h)pg_?Cf v@/骸]0N=qPnf$МˎSϟOKȮ`8kμ| Q̧pF3P# LRap=is)+6/OJӃ(@4B)$ڃ3aoӎ#s> $w/CyK,"d47N&Y;]m\#cSaT& Px>m7-<Ъspx^Gwq 9(Gw=' @J&a¾9 3hm6]B㸁ևӈTGc#M%t.- $:_Ly#獈4`wo}枤P9Ц`tCeBНS0#F9~{6ޫ f^DD*MwFoS4}I `Ept?o 57}C)?,$7v`\eSmi-XgѽSBJ [%dVkPy=Dۀ 2鯾yހAMx4iUU1Ӧ\(ʳ^6(|$ٹ9?,"QqXsc0BzlqY ((nPhtڒfrn hZm'_^2+B8jC6 ڧp ՟"m_Ӌ:{%GkP;vN8K".!w Opfi*Ǡ2I>th0XhT@-M25kvR)AVī}BY[>[Og)8RZ4 EJ$(KPwCwD5Ms?ϛiD﮷ {GTepqh2!N{G~ov-.lj{FsRMgstfS2j;:p$~hWŭ1u}Zwr俻 WfO%fm`tUZd(6#[~0B2{zGZ_QC7^ e3ҋj>OQQ_~-o"Qjaui]t> Y:qj0*g^3:μ٤9}|/›@g2Br =nCasY+몥I(UZ1~KE~h{t1!tp6..~8'xs{kL@?FS9?>ޣ;PO$w*VV*5evM(zOze/EhiքJl5[۔v27y<?mM HP{}y"Ɓt^Fr8q$/`bH__."FzNACoQ,UlAm@o1e#Qs[WGU_F!vƉ c?}kEFLRznu8IPG@Ⴄң݉<9߼${塢ۈ6*H5S\B7rY(/_N/>B?ijBF83J/ƾe3;%)5m2 ЬMO{432G@jǕ,i0@q5~x+o"*wԏ}RT:igPbgVAz0 UslA*;45a"> %{|W rD·M ߜͺ\sަꚜ3S:7K h?Ft|;5Ȑ?V"3#9yhK9| Qҝr<#.1| YN!BwC,^|sU QK\뿈Ā-5}~: ŧY),͗mQ^ꗻ pcL^)EܚDŽ~ꡈȜEG˒|^:rQRJ#MiU0ǫ#óKMfaR*(ow8 ,Vo!Zu ҁ=B3{tʃ[}d-Yٷ.ԻP_c>ytųMCyuiVZCρw1k4V#TS2wT]^!߁9_8CThk39zz IZ(m}üHa\c0˅V Ù&~*MUOC&O~|ݟ?Ptѣ4iO,uz']/7m+Dŷho舌Z}7>y֧>%J<?WsQl Z1^YS(q88FJB 0mi<cWPIukD92 h0f{`>#LM^ EgI2 ܳ*tOѬ_ K츟+'z52k|v0l+= E}r}Fl mө:(2M ]f[Cg![xﲺ|v#@{i՗"aL@.B?Bj 4c 1b{8W42_A[A Ԯ}zF ElZp~p%hOBI%SU>Ff X%ܯ}xH4 g}:3;DPj :Psq@AfV~ i4΃+>Z! E9(gv2*3H)4@*܍~G-VϏ6yeƕ'oj#vO~emBh:ݹ-BM/æPq1C,SP'}{!M<_=D2jh" M=?GsdrvO;3xhus鞝KZ({  k!pޔ ]YүEr`>rMpY*|QWTkbVkC1hΊc؅&|!+1&#,?BPy1;)cD;,.X"{"K}@q]E]jہuwxܼ po+eNqQT8"q8PwN`E>Q_r^SUCU2Y 3G^ƅDhA>d`D-7Y>Z%0GPw@6錌r50]'c|TPP+RsFq nf ցd螮GtrǁR>wтzLV?JpiE饠93܋8u'Pcp$Ǿ^Q en#YB97 4fvz;Bdp .D&{u]B|q* !chA,N"eՕ̕b=LD-t`X1Gn,˝N1(O~ï|iAM$qv'Cӷp=#C аS(#ِJ 9o,8\ ǚ ^""OJ2,z#1xW妒GH $:;h/wHbgDzv(Ժ6+#&Z,kph?[@ѽ:\_l)c/MqzE&zp 9ݾhS\4݅EuZs.!ӵZ4'ɵwD&NxإKjg]}8-irnGׁ7oΤyoI,QmneDy+`3ٵH<f'i +D){{SQ`1 pL^n lG#|Q $)` kp'8E ㌚GW`lSJ"~5@g#uT,jG 4o ̔U N8qU47cr]9>uJ_NIH: r}t"9#;C\C7Bԉ^@7>yWUv,4-"R?(aD˞_lFWW FѪ-!vP/\uxۖN?EP;."O7peP@t^ؗ0Z3M$=$;sDBv}u||"dWϤv5p{?Tdd|]Z);;I(P9_h%{:{{"@D 5M9ψ9@E:|)c{e2)f{dd9!b.g\* 臍~G5W4]2řt0^3~4@<#J, Mhkԝ6bTM?fEk6@Ȧo0ށddcYTl IDATpEd^ͦ fbQxw֠vX;>E݀InL OMf힆jN܃*ԉ+m>1\{h5j9?; cޮ ޶ўP,J9moتW^:*Sλ!T`-kDF]4-YyjAG(Um":͕P]3s}TVؼƟi3tIlB"FfLG #!;}7kFeT^^Қ@B7 ,(NA{?W 4"Xb킮P=4 !{R%D# ItݿO/$S2͉u$bvLRiGFu\D7+rM f`tSV'I4};8;O?F'2M&%&pcz˂&Y!YN@0ЇPTq pн1iK[ۡS9""Kz=h j+88S}'ǧ4N̷@_P:@u2 oVoJ(P2Rq6߽!M¤,|| yg$v\{kѣ65c KM{#:˞b,O"CFX33aXx=|TZ;K k sH\: vWZ9l}v0V82顳kgho/NqD8qްc fR]#H7M$\܃DCbfYmQ{F]5f5GoQU25yy㫈5(蠂6cg74ԯ'1M!sq~/ 6]} J*!2`ƥFex+!͆RR' P'^J#/e3P~ Pbid(xܟFrC^:%'n(GRBo mنh-,s*SBM*놌,MP\G ZZD $oba#^mG"h_@{gK$uvel},+^;O7~_9jC 8*̟}i&  _!N4ew "j$UydǷup>"7nc10pw<O1N~oe_߇r`hNFf"4N7A| kJHGڒb߼(5ĔְF9:IF;@7மSeԊ;?MzV9˥עzIܕ *C-i̓s,djC9HK-bF Eh'GJ@jCVMqqZɩ|VAc.er\Ck'߼n^Ew@M@<*LeJerJuƕsd34k.A -?;J4ݲՂfz5D8/!# qd` (!$;x3Ϗ3h#KsQ6Gc1|L}*s=8n( yD^POE4[gWC5˓^!2w5fW"NbƒoޡS$[.bl.cK87d-|"} g6EQB1juuu:?n)7$45a`mJC1AWps($ p*]A:q/fнS7885@'Ә_C/1/ qLD8 %<{RM@{TE{k8x + *(w_78<}݉!εCk>d&S{e\ZZl{(no!gƉ~/7<"6EH̟7᪊DRTd<@ꍭ3fZsYABW,t_JhVƆP b9hM`#yj14MvX?{ ++#w!7NIn_!vԅqjC:aZM*RQd=M1S K9 {."S>J62z"rG|tP@w܀ hw3|D_AtA{x"~_SR*z {p S{:Kk]C?l\nui!*Ԇ73q+:ܳ b`D)]p??7l8Q}\UМdP#Ǘ"C(G{Ө-;s8id6-xجQަͨE2EIO1=޳,O[GОN\$ȋwܜ[B8d6'3? <&d wbԜVkXCqPVtƁXo t-T,8 u/RfoGw!!C 517F=uC"O{Y2A?81NݿYѻ; 3CU5랛ZmF;ԩ82Y Mb Y >GqξxC{L]P3Ze(dblpVCy*d6P'WzLM 7:_YF+У5 :]߃2U;866cn?k(JDAf8}k=$a~;,AѪ'@yIfM^$zr?B r/A98f[)^,}"v4=Xa 7g2@&vmnl~TbmYx$=oM54Qσ!V'u=`olwuZzD-PgAߍ]0U2P>F_~q3 R~>=E2x$Btj"h'^YʵϙSCh7[qtDtDW O$X$R_l2jO.~\^.D֎SKr1zV>ÈPRITqv'^!垢.-AH Z8Ƒ@!yےl A,&/q]9\Hn)vN[ilSi:qMP#΀QQt…,ũ/ P&!OC{rP&ѺYPaI,c^m`{PG)ס6mH?_  , HͫİjZ}&[9z7K\|'`ݽu焘c0 {7&{Pmem\΃Q*Xmp~Bi<%clI( =JdwҤdFOݘi!'+$YaI՚۸s#ipE%7 >bmX6%p6+hh:3(O!ûҏf/6!A-8𖯠3kvٌܓC]/98}l?ZR=ARkh8ȓ fwy|Mgp'aY]#qk>8՚DˡfX?e[6ЧW2:Be!״QwcGGGޏ8~3|'n`@7rVנd2>sVנ5=[P[G//nA7`WL^33sr\?J+'+fMGq$. t_h4g]QEȹ!JyU3v7A!Nq4K4nH۠8T}s  Mmp;X7jiR:iIvBWٔ۶K dA^ ^N{e+VÎT@{kv:yDDj^$9M^/M@WBT>|挽!ǗPB{LՊ4CEE ZofBZKKO%XR\N Y%;S%\fְsq0LcotAoV$yb{βjbk[< ɀEpե/g%&IUy1|o ݕAkZul%s s\ٝ&eH Hd" dRQbմ[;&_&blGqhܒ%J*kEAkows /$\=o5.+a$6͇2nnA4>fy WqRT j٥yÇ׿Ȟ?aԹ23#C,>E<(Lb(<)P&1~R*z2n zgP l,z2ĮC3a^}1wf|TB5k%8}Ѫ0= 1 :*?;/#hJ$WaعI }ĜX#$뒋OBϵduu!&G 5rS.T=hP8` "mr Jss曤H} BM Ӆ] Ĝ@{W#V,f:?qKELl4 />rRRkSna(*dQmpcuրyWrcf'p5εmHIQ%#)C?qq8.RMxqQ:P^cq ˹496 0nS˷"t 4;>20 v [(z.~G<={k.`d1!=YX.& ]%( K~A6 6W1O"ۆsx,@)b`|>"jgba,CmZ.bE}ֽY"cHl҇no7ظTY+(>m`P@[iH4{TTsO*;|(:?GYC+#ʭT=yM .`G$(ZmIC]3:CXp>ch=b1`I88:sIP !(_>uDiԾ7؏CJxKG۞vlr6Kh[M?:ue w `40iQ^9;eh&N漟Ŷ0)|;r]u^Vȡ OL%S`jlr* I־@QdqN0Vl4PB%Ig?]]@ Ԏ-#81L!枛 .ĸ@FdAd IDAT}k.~"r܆RMzxw-C=Pi tǐPO@F5 .WYEXۂ6KiDYE5v:H9bJE3|2)J)h'De 2rCDOÈd4K6\rW6 *U[oX^,U [&9y멐x ty{fBv}MF>;"T¥ 5g*4HV]qI*BO18g盐>'THjb>;qb b܀Fa^DkFC zC'/ ϖ @f, ַK?Nk܇/pOgFFm2ܸEc~2Spў!(^њ+!~)|p)'-2~i0 OFQ;Gw: 7uA oy/cYiP,H:~!MB)uN;3Aa띏试)&@Y^D"v$Ùt߼=?ՖBB{0|fze]!VTG# ݽw| rZmtR@W.rvPj.Z 9y&Du<#&>AF  M_"_?nEC42͆(|A)ezjL\nؔUu9] 7dҡS"DzD[)$Boў3CD(mf> mxGѤy)radӰɅs32BQ6|QΑ 8;t1&D\ E\NlƲ-p`v yz p -#fS֍yS92`[Y=@\[#:9dO(,9]CάTכPU2!dGt8zѕ:q5#ʹ$Y~ֱ-~1[W!o@`^Fk)  ٥Cn*: @utm(桤3d,]۬=ZѺilI&<^HDbh/$Kkp%&"k{kp_b!pf\DnB}JϢ,ѿ^;hH!{"Vgj#4niP"@o)KBȟP!Z!/b3N9ST7.CП ` ȉ]c"V4쏬cx +К&r9BZбpNԼ6 snYGc% ^| _þR,G4+%hx!G$L۰,(V>MMf.̓Y(?s rzц Po}<{Jl?t,"uD;2EzTM R*F3>@} i`27[p`GpEV+0n/]&siA>mҁpBlA3#h NDKR|Q("\p`f[4f.< sErdpI2I߾DT[qB̴nx(p|i.is+N-8)caHp;*v S@^5r {85q+Sa$n ^]Qx$S:%<| GehcSh/)˝JL'd)fs\غBHb i@===ߓӉ&ݼwmV؅q{?7uE?4 \VT򓯈*; Po +7ŴݫӢ ,<^yQQ Czr2v:=B2ť܀ 8AIw8}d}<%9Ch}|W J\,5 Z?.ǍiAGW3}GucP%5Eyh\$rUbYe0fN')LRbqmDgYںF"y1ƞ5Gכb ]U0 $Qa24olO҆`Y[WW`mnHʰu zMhRNP*C~el>5:>źASoxojWĒK:=??ܢ%a:k}(V9N.& zKPY<yjy,bB$uN#*'Dz`MZN̏c-'Z}㔯l)(ܣ*z\h5F/~^vpd_}$gp0?(w*MN7/ꈝ~"S: 0 zX ɿ~ i}ZrpO8 AJ9X˄$`rЦ#|exfܸ$k5_cȪ|KlN݊WJ ߠڻ(ˋ0bhɈcBDq]CWpGπ | H#Rp1H0QHS4lB^;ﶉZ%cGU(QQU.͓*7ɧvPn!%ѳ+`BgO3-2wz$U%*Ȝnۿyϧ_[wވ UC*OC' ֨F:1yr.'.uᎥ<n6[oҽyM׶!qj_`Xa*PΕ+^5TH_+qbF-H3,كR +LIey^ˉX*60B=9͖_ 21IFfk,Z _)4nDomi엯L+Dw3ɨtyi[#w" gO2isS(jDt)B߂4m8;GVjdžP=$PZʂ7?=aTI9lRDG ,!r?4|ths%tgt$ _*`W_5w" _<ziG#&@HguJK.L#W_t`ިv:#"KF<ԟ>D z hxgc[T◰,) nwa%huw`<^I(:=vBIyJE&q(?}V OM *#s\h +p$N q)֏|x ӁAoi~w $ֽY .O#`/UOd`?{o 򯾆tZ]=TVi} l|Ʊ`擡}0F`RJx5>ľC9CDv).M=1:L{a^f+pkh塥0/\\,ޭ_Q)7ZR| 5-^Xې i0`*uld͕4 , ]cPPks(9oqO(*(R+ݚ;fKIn Sdg]]Ȭ 3uc!`"ƀ:ɷNi2CI3Ӵht*:#@ʍcPH@K ɢ[*pHP;1W`TRaZ1G!θʸ5O$BqJ8l^;{6͗wxㆧq \q(L|AC/z{2hn?( {No/)vZr ?(y {>&#btl?ؓ]H^=rzԅQ Ƙ{R=}It2QrOaԚSy(38_@6lrȫ .O(FjtV>FY(F15&ExK_s2N1#D SEunD2t "g|]a1>BKD>݇j ?FI͋]*c謘 9@FV ڮi>A}FtjO( )Tr!b9~daE%D~ ڏd!h?}|zD-ɒDzM7"߯}^#y"yB76H2(L 3޻FM3篎n8/[Zgf}GTz 5aVbdp;YQ{qE\82=̜k=%q8J碶~tF =F]y_)LtKUIKWi{bZMц nҾ珈)4,NO0Ƭcb |~p)& ׷0s k+@{E [\Amw;D 0?>qQ(&s.#z*9CXgM<'#Frqt-Ę,j+ }4ŷOc%Pz.y;JnV3]\4ŷ-9_^*$[C\֠XT)/ 7ӈyd`dNj\/qO@ݯ)gMS!PйSz]Ew0"ҵm`,\&#=@ {]:NAo.!MOAvqDCU+?;(EĎ]]RFJhDRKJ\P }E3[]_AcQ$3oY||NUNb[.">`#UYa#'t-B885 m($=wg&2jMN,LPֽ%׬' e3`sczz} h@Ҝ>3O(M?PY*}^4#)Ep Mdh!-#&?R:%G6H+hbK"98ۋ0c3sb>:3UҘHV;4it$w-t2,?}1y@fHF/)}%OBHHDO<9 DdģJpQ ?{ ptP@V " Ծѽ4W{։-c {?XЙVjGFBEByŴݿ':i p-b xjƇ!G .YA7o~Aϟû-Wi+K^ `$} B)RQ[I[ɡsvIVBK>>t0b3:$b-$ , s@dskĎU[i{ lV j+!ȗ0^5^!O+= ivvVc+ iLA!~V1 `4 3h/)1C FGl@48~{NJ4`bUIn o@Hks lRw3U5/kDc@)Ѫ| 3b6{| h$!o{(\ VL}ǘqV[HH6G|9ةe;Ekw֘ *Ld_gwV:H!Tϛo8)b-8 z{T>J9rRw@s+G.|mI\ہ|cYe!P@o;@g>%P=GaNb^; sYN<Œh{e2P&?\|-=TD쨏r% h1}ioLq1Zh zP_X ]ݽe|zŒ˔RJ!woAN:ȉ{Prp,1 MSr k(t3[Pz,n BMC}^ k䫄7Igс\]쳁p;>h"K(*P\^`,i}dkHaNw#\*n4AhC@aQpܢg3cϹНΥĞ) A04h_h$Db.1 )av5DlZBjt`>G͢[m? &}uRWyw,@?OCB" 8gDgP"1ʘ>8ؖ@et ½ch`=H %9ͫzE;o5a"jx5- 1n H>|Drǀ <¦u ?yKOꐾ|5(WJP o_"vnk%EXV.)a`'rgpzv)gjZU)BڞmL&t@gOE<>8 λGP$>_ohpsM^ wf pW !U8-S;ОV{ eV? kfxF{{OK 5DkH; 7v8KH4Jp/CJrn\h(yAl=@@Uql,C>îMj ֙݊Y"'t:љ^$Zpcق")tXa̗ܹBJ`:g 0%MZl)X77F9g6,&y. }Br{}H>^<[YJ[jЛMC}jSr'3ۇu>{Zf\FĄ={$iZ6ǣT/`BpA^oAzu.ǑzH'+*Ib2:'` 3+-ȊNz1 Jp%8,[{;3{rFw۔630amq!Lh]Cfx }GܮAj7˔̿4 <#qaݘG9t jjzSO52gM8Qf,}_BB0\h-Y a@L%Cov榠>\np<|8~\u0R ["oD+NX1Of6](J( hmu6܇ϩ=x 9@c% Wf:pe{Qh.D+zKЅB<3Ec)Æ;^|\ ]@k1gtMgLo:zwf4e$u)%\ H>YQq(tO("fNr:cc }܃3>Z̒)YnûL=āSD?e# t04֕$7C)%xsSWfCV|To3XVt/ߠI~TMTq-Eis܌9}U.@ʍ~Oނ*ӰQzdэ"N9¶TEtdX6 :T)a}oqi Jv2BO,BQ/^ JGyg0>fECDF|@ _.@챈/t霝|c_)S>VX,Dnpq,yl n2Ƙ+ţqc9!*({mMޅhGtOXdzP==a8v/i )CG_R"x/,m^ M}ebBsCɴjXįI lF0ED0Y)BZT=:`H* 3c4-(n3$*Ha\*JG?ځjw, gߝ.!q({gp[mc=Sι Y̟}_%D <;mлUF'O1[0 ?{ *7+`_<.Xcq8(o[wZpiݐdtk~pRpwa"s*WJ"<`(C~ wzX rէ *'Vs2-4aY(}&qtt?4`L%cv: ^mZHusuW4ORvd _#AnW壺L.VȬs$ly"_ڛ wf!|߿;C؇0&m1V K@ƅLE1˦eEe3{sxd@|IBK`T~VD>4qMJYJ搄&`mR/gQĆ}|֠!Iy\ XfD,HMDȰӓ'7$\qtJHTd7D|'>Io v:)Ȼp; mZ18QERgbQ% &c~T}o'נv1"@qv6͑u9Xq!'B`RkSa@2 mۋ>{ er * xV }2_sCFAniX&a;DM.OmpAz|(vПa'; rҼOh&F;L#Ckãi/ qȔG7Bk9H.!G 3WH֠@il۾E5>S'C zl &iE,/gi{׈Ffo B3k}Jߥ8XK~ymͿ5Z?>5Q Y'B4e7p f3AptKFfmY2PJEχ1xt?!Zj)\cX0s鑠{sU3BOEKxb'NOcM u0}O=ݑtp&IF2pX1ɧi*9on,d(..RhmqUtF!5gBϦ 1d^oQ3i.C{{atB*n̻,2vi_$goijRW )bU2rT\"@%b F\ODs/(tޙQ ?NЙQ}4 `u o{y@Jd׵hs~1ɇg`ݾo>V #HʐV udBJ ^ϝȎ UeE|8 q29-hSnER K00H(ۋ`jDTs ;49:mxjH|BVAg.If?CŞL )C_Q7ps(b] Dh}%]*Cnt2D߈s v.tlN;: 1VП}.1JT`^-!2`=zV1=k5+sp>GϿ!Z>mУ*f~it қ]B}!4wYWJ"9AY'g_y"?k+p3 bOC?Y*^*.TȐ C̉CjK0.T[@61I.C:SAt{ܿIS0b)r@w,JmFs# NiE4 p6?V`SPm b s #_T+I7W!ӈ<߅D1A![Y G 9dj+:TD^[ktK?CG>aY?fNݽg'`A{h`0 D02!oM)8_Va*pItG$ JiG {{cqIH;jBoKк 8mBʋspMA1n='9Vۏ4Hf, pfz ʣ T-š ܐID+iܝB_QS b~8"Ѥ{R&IR^W试Tt߂SyY h- ZLłļZBhѡ(Fp 15Ƈ`˱$M66w+e nD=:9=w[Sy$p+px4[DrLkDZ[WJ$ z&^TD1sEdS-ƄXLSB"P\)>EqXv:"uLV"\!Wн]<5/`p?J8h ?oN 8OJH\=7- &8 q doG&P ^=r7/u_8<!M=BkwG28 nd:A=LH*>ݓ*>yH%,C p37s YIaQ $5𭘿zSܒP)k}'d:< tLX(ú5#b9G*PgkW(Ck&yu|<$P=d~ѣn8kg٤bDuƊS0s&Pc*:3a9@6aD DnG8ZR7ŞlY$,q5Ųd[۞I'ӹ no o/!E!@d ILO{iH%S([,b5~}9P<>?`0m:G60N(J+̒pq+s .2? Vk9^1u!f[q̰a|Fk LV q5ln%K{Uغ֛%O ѰtFI&@q:! drՓ2S)A5@a=s?s/e=1;b 6bݑJTk'Dj4q.a;?%MK&<{;=oqY\ w1XbTόm,l@y=ƅ59*:Eؓ͝{8e)$+4s9g2̄;8[敏>t+jɞ[Zq:C  &3w:==6}r f@5P9$ZZ)>Z[H?iIM i1BN=c 1{f>jѾP-u}(-GaFB~B9~Jb6{L J(m(&`˘?#0.OCDShD|DńdjӆڴqWq^К`HX0cbU 򛻂/bwjRzj x f@>dk3<#Dɶ&I{֟O_v{T@ՁQ..C$! ~&.d'̯.#CC_" icA&ٟssi`JI3a0HC$85v@D|Wz-ΑߞZ)Ke_/}e6bD(Y3>Ȳȴft K Nߛ@2pQWfL !sFzmr: &,Cdv/f$RyMhiAňNA:D@&S07mA5>l,1 X{hp>C|EOo̠ -^~ų~7e,ؗOǼ5V`1 Ml]L$-Bk_l<vQ9tf'ѝɈZA;@i%b:C~{ucUi}h (K碐B3)!ɮGESo9id@`Ge؅,TK"˞V)s f;)b UĢX^<;G.4y*e\[RohgRPt>ܾ,i| J2L%8Q@]~]=gf3(zY(P_.D|cC|fB³5b 8 St8>):.10xW)rؤ3s+F,FӅgU"Dlgav jˁRB7>{h~FfQv{4 w^C uh 1;8/o#-lYq#oD0!!Bgogȉ贍o+!r`s%0a::9ڹ{-tG#0+)#BlU vМt0Ď,Qgs [eٴP&K2Q‚Y_ ˔9@̝2euN箧m:vr54vT'׋M\UPsh (Zm#:گ>Atth{ݽ@ z@饛W,ۙ g̵uB|`6T=Es:FjGB!Zp6Syx jSForT0FlkOdN.'fhD3AK"};CaС,BiHm0k6+qtN $|,/R]o1&3/ᨊ@Eٓ-hvL?WRo~͓ q4h#Ȍɢ-Fh|]i}Z˩жOldv }}vn `qNA7KIt(^BLGC[ Y4r)Qe|s,ˎkgh.8qd%T={Ҷ?4=fIǭ˾sc190Vu#gۂͫhg~;DcJEEQ_k]iSNVKs}DX -Psk'}k!0w6R!}>!1SOn{tv`Mf@4D-1{򢰈Ąm}VphՔl($z?L> 3kun߉>tbޤZyó?ZA,BEQ1Bs# ՔcB¯_3j?q8, ZSyy|LV7an#b?[UB8quoqHݏ9$ֹ2'=*mBiM T*o5I HXm:K_|weyѿ}rl!G8ɤ`>l r.+jե)t~8f RωVdDj6_rbLOJpEWT[Uh645e7Fa/n#ziD} LlNEF%j~Ւ8*Qeo^E1$vh&` 1% "pKDwB)PLq*@4#~ia<1er8_ނ< eVf ": ͧKiGY,ܼ4 飻RK0FTȮ/@ICګB*Auaǵʣ,/Z浟[,AIgq CֽTסԚM 1ڊ`??=;o )Eg`}8U|U"uv, 5`@Jf<kesQ;3^ֲZǙW*_̍-NVaoH6gk(Xv>VL)0 y7߷Ѩ@V$F:c V吴vFsۜG?[DTN db2zb]-8O1­\i,1Īs|88"&rFn@"2КhyLq\($|@A UA@a:p׳9JJLk9sAb )?~Q9[p];%V׀(pnJ>A%ت)MAa]tF%X5}kA "_ۨ/'#`H;h#?b8bUpۘӁvjE{20kn-M9\a5ɏСQaa0 {P@r;Q_A- }R1HSl=&!sIHS,sW1$k@%f^їՕAto+VQ G6Sz7 nL<@ "'U%H;K9:Q'[̸ȷI*'5H{UR?v7(wnG]`J5p5r.KFiy:+: e[ 1fh]y-P_!J*J=:@c9w3Xeig,KKe2{P"wg ЉKs>i UYg[a]*jﯻ8ߠŕAqizԽUA& |wT#GƲ֐WdڼPYk?Z~N1 CfUr}Df \VG|H%C8޾Ng0!P@j}=Cf݇tJ1~#@#QMs>3qH_mY[s%7 =G-cT 6ˠC}bȗ_WY^|eyQɒ7;*苋aMwE'_ ]'Z\[~mx,]ҶѝL MmnlZ3 R^w\`x0XlUs}kHc9N)#$иPXߞ}?ܴԶFogt9I! ZƑ] eoqN:]Zm1WϓIQwTu|a]8N<%)X8C';?"@'}g!nV";PWa?xg% "Cm9_l!vHMм҅dLbXqٵLw 6`o+-G6ڨP>pНb 8O_2>9'h[ so__}Iykh+;6qv%D lz'o砌O@-JLQea$ƏYG>ϴ4,oQe6U8 x*s7-T*ꩽC+%HcOkle^U)Iݴ.x<ԥX0 |< .:|͑ߩ[(Ɋ'NImWȒ΁N)uF(<5A{ia괗!WNQ1e&#Ri9-\jWaL~h7`j=9 @z_Wzm2!mӄ(qr;zfRA܇ue WƠ>z^w|mN<j󯭀 a(ZK9O̫RG_Kӈ5-?8{8K__BjSq9*-,l ƕ់*LQDvz,;'D IDATFw< }K1&441^:\A]"p:>-9mˡȵ0~k- ߛWq)'ӐZb.>/g*=q_"fUlQeݾ.֖^I`|jɴ G)ϑhNg;p)Of M}Bv${0~~r,AF9"yeGҐ&T{F +!3ovn_=`|ƏB?;#eZ)AȾn_GR` rV w r,)P BY`L+wsaCa|cKS{p%7FJ]6p5A?r,DU3r3yh>{kil4#,GKӨ/Dɫ.q+))qYΈ~`%)d9@J|YA7O1{4G/L19mR#D!},ǞݖoR"'deLY*2ep-]7 gsdY,ː\c"uO.ML*>{)@zIV{V-Ci)F`(X,Jvkkihsct@ׂkKT {1s!3" pf'!UN`Um/-=$6s#P.IO{X]>S.E^M!w үjYJP&]TFBFTK0 f Aivأ`irr.u:tPkk7R2]kSi@"^ i<uNP߀Wݣ5!&?45TяׅL ic.GL{P䬜87q:.!W)8@^!*Q'ǽrd.6%Q<xD\z $N0_F}`vV*B211ټP_"WI䨤( Hb;^Px(H t %IeaU(CۈqU=vpr(.;LwݵB#)X⨁ ^Re{>SN&Zǭ1Ejy<0g(w/#rn@{,S{/LdNi% zߗuu0ih'~E(J\^$"̹ ㆵ:0whK*#6g[Кe q.>#tdn;*ӿ;0@*Cf4>%x'7\j<%#$[wkB ZƵTqUwEp|H }406cBlaR!؈3rAyss|/'y`n@gDyg.4ؗO_tf^+#^n_}X$`{~ jJ:0ŖgH}Zz"Ez@w:2RW*[[13n_,da *NoȮu=18iEt)Gnys}FгjD9G>":X,}0WAa%ݕESP8G&FlxVR]'!W?:Iʏ+G{Cju!ݼ*ƣq}. e5D J4`{>I91=$׆O3gT\ ݣN1䈸0VdFY>^Dk=(tD0M!# Fnm$Æ:3FVb32",Ci\n9Ic]̝@"I0COKK^1H8On`V {ݸ^2Y(nlbqwVb!QVˮuМA6փoͳ۲+Gb &kA, j]Gr Kt/Fk&!BD[L`Lq;B gJ S *esY(_ڲJ}|^ωE0]scS~Jjda趏hu[ )}D<ϠmB{mUk>;Icb%'ʜӆbv\dTJ 96)$)MۧYt N9MP%}i}e>XSP?},,D@Z,W)tрT#] ΘNY53ʠq})SgRcG$n&B(=~aC{(# \>[!hzlf:+7z{󑟣x gCH@_J̰-\{Nͣw^.O.rMҶ`$}/އ99Kl]'kk+S2Nߞqwܹľ }VBo;b#^['v"Ǜ ZK, d6Գ6d}v "?cv/wI桏(095~کw0&3F_fR2-B}v>B׋|=oùHh" MT>%F:$Bb2SfC]KfXpC^y% uxk6XD<9!h"X;"̽}(ˋPk([DI,t\X[Y]T[صSHG5͈ gu^bQP( SvL>^ )vfN:rDe,c%¬Җ8[t^(jWb΃'.NP6/r2 V 8"36H SqXG ٛªLDŽ_."&|(G_ Q\/x*=O\[Ns( 9l|GdozQA7쵱@y9BEG% Z{JkO~T nԳ.rRפ@<|~88T;[D)azX$$l{Z"kYXWJPQa{$ݼ {ȩef6`B*ˋV Z}`+B o]$rQ0U@'ľVmȺk)%lnBI /{DXk(%3s{h}cZ T]T#h.!Cw<98ٌ(lnFct_F)@r͑ X, 4 yj*H~Df`"]KaBIc2l QCCD؅d*HCL?_A$ݔp>+#[|O㝕9Gl Ctnc/{ށH2-$nlj8}#OTIK7B]߇dwHP'5@U`rI}EÄ.`rn VN)O/C;WH*xhe7{G=-2k3Sl@ kr(b*Bq#D +i1+ŕt_&g,F1ȴ;߀td纖(@" ެuFFM,S(m2 )ޞYV9/j1tfL B/=ʏF//Ѡsu&3w\֭+uuQB"ߠ5jLv\2=_zqaxVİtV J ڃ[]YcVԠ[.Uت$2}8.;ĎkbAG;3Ÿ4/J>Vo@DiģUmX;[3 ў v GW8͖+GtP3ϓqWCKsLDVV}b{ؑۀg2S + o D[ a=SZxVٲuϐxWJ/+KVԺNV$OvI, XS!(׽ I8Ӄ|Ѿa!vd]6Ny\ˋB8a K-BXVi$=%{?=IAg:*Xa{6Ӏa 3pa CWc?sXc?`Ys鼈-7;>xT#FR~EU 8 mqpWY7Y[$$67 A[ש=1Msϲ̊Ġl]W~0&S* AVہZ ,xJ/k+>D- +2m!smDXZ^08"D^7Vb]qbokI|l Hfb}Nv,H~.XF}ߧ*Ċ4#TnK>|.$Kc3H7Bnt(^s҆/`+g, dn)X:C""G&u3I%TQ YcPj o컶[r6 B5~{߫utLQ '΄q,ic֬ê I9~+)׏ILVȻje`#: -g X_y;n+EEbP1UͲ_[;IȦ@~Devtfz|9Nu~ QB Pdȱ*$" Q!G"6*2d Bo`XRyKb~[+%ȇ5`+rX} cy zle>r2mx4XV,R.& .d&F]gpe͵ڒ4@I~arJ̒"`b [a`Ʉ-_`W&=gsvRlkϫS$@Y}V%*{fȢ,{G*`O`E@4ul3ۻ{$G9쳜ˊ'CZ'+_XƅL]1(Gحʰk%M\oɹ%0#6XStϭr "{>4wʁ+'.vS.蜡OJk b^&\DvG^ޏp\4Q5h I1Em;eXk6_Sz^ &̽nKf 2f҇HX[TpZ[׾?.,1v:ÒF._w!sCk5dF *@6wEZxsXl Z;l;y"jl]*@n^Ǘ*Ra8:8s܇uRCgeRyF4] h$@->ŅTIDAT6w;eEͼ-4օ~Yߖ4!~s եqd%wju " _ -Wͫ4&1>j@&E Kt1V徶 NZ['C\K/P21lm7pk"֮ՄMEm?Yz&4})[ש6vsXao59z{A_H)Nn!Z&}FخªR! s!o'?  hIՄ An7 >s(Դ<8<1W DF];LPF+ѽKU,)Ds9)FdjDضH(?#ʿ0nU /=a `U!9jR# x ʏ$seqGa/7^g1fspm,We~mN*.T1x ˒n^aZG\&_ jWs] ͇.$ Dn6IEj-P[+%f9"iȉ,gPUxϕ\ Կ {o]ڀTGH5vkg`r&րQYh.?>Ckwn`LE`coe"ONjg@j]Twظ֏f(no?\ٛQeHc'sXW\I9un!+N;{C8Y:1֩vex ^À1:rGHX;` uEJ-d;?xoJ$l; o?vpXyM$ɴ2he9j6X2+c)Fb&*;l4 gar[l,ԶuX{A;*P)BN(uJ)vZș[oSb~Fe~uhp:X[4v<6Wݹrr:Mްw ㍾yK)? vz6w%CzS>[AryxHXi˔]8/~ !m+z*ѹ VqFkʂ7oS @7<^&G an퐥@1FݮBj*dHmS~:{T#gW9ݡ3@?:CIn_Vw:>4}kѧ^1pfT_/٘q+B4藧 }9t_0zlD7b)͔@X !%1!Q>!9e21F֟scr!% rYdH7vԁ;h+*i2(u5[ /}%ݛ`7`> 4bMpjxKPc֒" F.J)ePyj`;$s\;Q|/DO^blDX2Rr߯\MYdci$Kir:OJNqڝ~ \۝ ʻU AbճvY.ho I7c'p\2S$ޅP]y˰MwR= q{%|hA9U;nX7р7u?n^,x>=,'B䢍^ưHH Oy8"r;+E:v`@I-.a[{" @@mV TEr-olgWݕ"H>쥔K ãĸ˺B>i{saC5/ƞNsk Akhxۯ/r2)sJ dGU%#loLĄl pySj:>9eSh\#Z> 83.5=Y_\I9Z/o"epVRS$m{x #hs/7M<^}~<"ݷ/D]huf'ť$`W# m,+ps>~s`N}\3MU q9F˙XvR<6o7ej׾gr1&qn Jguȹ5bp:.ô̗뛷7⫇b\0MEHBZ$!ǻ_mC. B{D' j D=JCK`}ȗh=aCi0*N0-#\wpFH%ۈoԠͧdftzXE|vYz`2wKAiIbR}|߆fVYrK=[\xA?Aþ0vvKkCZSb3' Y6C]П^]$ 2@oG=WDI}QBt/tx9<۟./;ҡ.Gbcހql ;&s^r2ID[~g& `01,PYWDJ㍁c\bT2҇pnu*Zd;k"aV*$2DiIa@asc@:7huNw_jNjCǞȱޗ0+A-Niؚ( _g핦{^~E:?=E]_\|iK|dciY 9̵ ŵ"Fx)lۻJX_h]7wO"X3oo"Enf\O?K$D2S$):;Z 1ȾTyG+ʠj>jAmo;i0qWRsϗԽ Z 0񶐚eƠ;<":~,a&a[(ݹs+׽ dJ?vA$t%}rBI Ewpx~M69}C#}ꛮkwQgģ+Xww1n_=ǰSYz^ յx5f[{tjIdɀR(u 5Rgyeދ1 ;:E{!-B᥁APs^]<(]8&-!J̋4mBԪȥy1T={)h}WwMO#!/ێjLf^R[D\0 b> /a{|5"Ư{s7 V?~m^_ ߻չV{ϻĦ۾1`#J@mjLaHm|uF#0ܵ!Y/n ҰIu8nc.% %'úsXNour|Wbj"o ;}lu6B|9k2sUmSeu tپc?G #W~oǰ}g=7\{͝wJg k& |D_g7(n ('sC$ނ ,lY,\= ' a|[0לA:0ㇲB}pox{oX(<4408FaFPU~g?U~lQFaFaFaH/a2ҏ5#W~JaFaF?P~l/mƋGX FaFaƏ% #0#0#0/aFaFaFa^#0#0#0#FaFaFaFx9#0#0#0#rFaFaFaF80#0#0#0qaFaFaFa04q5-l0#0#0/a[F#0#0#rFaFaFaF80~6SFaFaFx9o~^8z`(M䦆:Q`(U"?A"p"ȂH ZզV~,¨)&&͛3w^ uq^#:{=3>_J(Pܾ(r 1(iP]n} H϶.c{'m|mм lr b3r EdC*@AXZ6PcUx(ۺժP8۷@9|w{9L`C[1~$!Y_z%)l +el Jl0 ˉ*REϮ(@BxF}}}E> O9^[[퍑f1::j>` xzz:jkk!tU?)ntqUUU,--s?{muKT5nO+%_]+kﮚ lWxNoo/ǩT*/,,D*ݾ}[za~Ǫbnn.l,..`477[R%|豱tRD[[[Di(r [(Fr 1(e||Hd2q1&666ƍq5Y&߿xbr9Y&>'O$#D&}\ EOOOHd"c&fffb}}=._#$ڻwŋCCCL pd28uTLMME[[,X%%%k׮8zhT \dX\\hnn KI8sLTWWٳgezm Ǐ#E.UY&qP߿?޽+$V>ӧO#T iPqʕ8|D[[[HSSSdܹsqi&Q&&&bdd$FFF?""ĉL޽;=z---QVVGΨe6$dtvvFIIIDWWW444DDLK@+5cP@9cP@9cP@9p~UIENDB`codec2-1.2.0/doc/wenet_image.jpg000066400000000000000000013464641445607075400164420ustar00rootroot00000000000000JFIFHHExifMM* n z(2iRaspberryPiRP_imx219HH2020:05:14 07:21:29"'20220Α    0100 X%2016:12:29 19:52:502016:12:29 19:52:50k2 Qhttp://ns.adobe.com/xap/1.0/ 2016-12-29T19:52:50 2016-12-29T19:52:50 2016-12-29T19:52:50 RaspberryPi RP_imx219 Top-left 72 72 Inch 2016:12:29 19:52:50 1/2710 sec. f/2.0 Aperture priority 50 Exif Version 2.2 2016:12:29 19:52:50 2016:12:29 19:52:50 Y Cb Cr - 11.40 EV (1/2710 sec.) 2.00 EV (f/2.0) 3.02 EV (27.79 cd/m^2) 2.00 EV (f/2.0) Average CCX   gvXn{a[smĄE!I{sv=/I_Vf|jz4m"R>2IєsK o1uGL>edY=upյjTLϩ~pNSϧ/W<OHOe.f'Pz?kxfN=ڱ4ڞ$Pi]\o"Brog;Z!۔r~ѳۺ'3؞|2k8.nye\4gxkMYr-/T#tJq<$a2$aBFp,QTEJ,YRE8I*$`$ߧ9Gq&HtR]h:}f:Xa^|!{ k A`gjgjNlNpm[{Uڥ*ڭ5.NJ﹣xW΢@r"q&ȰOa &pҌl,aE]b(&0$[6)tg:@3ρ` ,W؈_blq; .VZpWiWklBceVÕ[X)6Rpr=*sG)%0ş~+­+Z-^a^htwNy+! )_:a@ȾLҘ (0YEb00aI a 9 qCp  X\//:P->Xk|EUnSplE=kB[˄dgD=Aι9\f}3_f:Xd2p`u6\c#6Ն1mb{Fa[F7\} wO@l+- = }Xr4aX + *QaFDeeȃNp〧0Ur-qi@L`ELxJ{F(ZQޚɛi˗\[#'^yɐm4S܊;.½W+ |hZn- ʎ6ntUjתKQDT&m3 i+FAmM<{obۣ&'}1L y<wO:zqWE_@OfeL}Zޮ<.z[˞ysղ>^l=[=UEW|7i ycֲ+J[#ySs>]$INyM t0ʍsaY}sjH*P=殚WU&z.zܨNbQ`t)@ABi| Ec9ՎkSBUzGGBF|hYg@.*WC1 .^7U?w>V=Y>AoNM| /A-OL_8zz;~pw3-KY?=)O=zB/FBJ_a|12=^oS6:"=͔UX+eqJ/+zBWsB>dNxvEsIddM<ıEdK|BC\1jc. t,deS`b[RS140 U[T !}qc°*%p1G ]94o,r!>ƭa} }y{)z6W#L;xq4ȶX_.LOCNo y1pt 5YfP!;Y譈S`襂ƫSg!O[wA}Se[D㼮$-G~{/蜖Ou&3m^!U:0v@ʽf#@fN7S3ղ.c^:Xli+lQ|N^nȥ?BW@洱'c*In%P5nG2Kq 4U6P?)hxMS%#H͛j"a)Y ʮ6oDlR (>j2IY'G8&tV:WtU5$xmq6cͽ5` d2,Q<煉Q_g'L,舚TԺ `IA%J+˟ 5 ˞^_-Ha&6UӦٶ2)Z\$9ZnH$+p}VК'Uk*U9Qu.Va`Gak MMOYs=SdMO(Kp>uwznI\ͺ` 6)/:Ж2'Q]6LKo@i~ΦFI{q:ϺQR5+gƕ-N 빸3Lm}VR8ܬʬ-5uHQDչ:ݡ;]$;F+3!Y/]SbPJ9esm%?ȑS ]5kuUU&|;Ϲu~]}w 7:$6&,,A'i f\vy #[j]֑AO} &m+X1:qeV NDѧ󑋯t/t( R~w湚AUГӫ ]3źh3g3V-yÍV+n3CZ^t#Ѭ9p :T<&t< boQe(m&; lqyCicF&xZu:~<eL Żɹ<m7NgteO7m[ YXErR!'Q0YM)/ t`;Y>E<&hQ`|nJF5WB}P1ؙ&nXk*s[>ֹ.kfq:_"JQ=*Q} 竦t.thcO.QtX7E˸c)+u)>jgZL b[98*٧Ad$=Z:jѱ&A{Cp'O>prD_\:Tүa -MϖO_=M!VK#k/XY!5BmY?ҋ*ؠ&2 C+t[s{E SJϙ 2 !!`[ D.y$jCnDDj5.:"V`./jwWpNt!M˓k3w*N*W;.1EcV9Tf_^ie%B+ usOoiK~[~?hFVu[T$(PiQ$? !E6KtγP|Q7Xs/h^$'sx`t%c,7<Vi7tJəfY!#R­K f-9lVSb +|x[8g3Ǔ_YnWKRO5#Q*YlzrµkKҌQrua!Ng}ǮUUWv]lcprDYr*!C%hn%*CHO/N ^/'NsrǠ632K-֕0ŷ+԰$\A )D (,YV(kwaUyS[WL$f!ɪtxd69j멷YMVZՈc(ɉ9Pv"ԥ-fNWdX43 iFuSK#Y.E:M[ECZW*8T[VCV j[t3^zkp.{-z7?5I\=&M1,7f ׶khD#cۭtCޝY>AeSw@%KR9dEF")J? [R3lYCnyljjY ||DI+X4;I ah T\Jwߓ$MԐë`Z/qvRW+"X qU" #KY+EaJ3PVU[AjZ+LhcWҵLMRF5?5 (IU% =dcz):-EAk,M+M'YQh[J(:{~ҠU V%d~3dm8ۖFFMfV,Ӝ;6uV=12ysp {4m4#M2|c,xY"MjnL,GqAmW j׆ !n ~I~"XiKLPE2Z U'Dc4XIqš1)76"xN @X!"[̮vȿۛ5FeQ̜qyչ˘ɰô!Ќ3Un~ b(Qy__,,p_cH< /*||X| oǷYL}>ۻxB.:+^n˽=u *&x"5"G"WrGlki^fIXƪ~2/yK-Cˇ s8dʼ_3sM'|anTdi>9><]?:NIx 9]DY"{n##u=rG|/ dσ^ost|q'HםxBCQQ]fPM!3֗yEAsY:\' )OEGlo~rX-Dk#=\$>Q&0W;eXlۀU25L6I 1'0SC̐ ~t*LXž[Iic0 E)&uIXNEജ?m߾̀|7:+-KTzG]܋kwFk?]¿h 'B3hLxc9lEs(̧Q7@EM^0Pe);bY*/ U]wu^ohlMJJ8e/&\&6X:5]g4hު+vh%1*i^uиع5Z-y:!;?2.k5?~ߪߣSCL3N:} d~ ʔyni ( 88 /J dl[W}?:y/ ;ǘ/wЖ _qĪ~~y;ݞMNRc_ԊT}5_X0_:, gt BYǬf󫺖I6Rއ'A WmdDK9B3HzLV?L_UyL.K#1ZH纣 [ښfo Nt Nw҄k9b7F~,2챸"gPӓ rh˝u^spS;*WTͯ .W?:"?KNǂ\06VbB.BۋTؐ4)MRp"wYf)z`\٘,]-VhQFhXE5Id\5&vSA7m=7n[jLG53j h!3:d^RC՘\tsai15ʼn=m~gy;w"t˜cPs ԯ#kt6jT`TE2%ZO R%_=r\ Om(⾙0p,ToJ{&po%U&\(TZ&.u2bBHU&;W Ykrt3"JgL{"QU CP^.&D2">guQh_! UE*-FVzv_oRe$hMWz\9]|KbU*+ n،ƨ(#t7O' Nojwv,6PTdR络gUKh|(sTƪL3,kG)rsԄ} p$rY7bèW|J0]7JMJj(*/[{x/d/@nrT^e,C0c *حTtRCJyG=ɸ7&UtʒEEbos):\BE«L5hDm?a!jU!y5Lm܋oQ`Oi>H籚.WUol*zc᠉~VuE[ @&C9.J8vfQb.LʸYfG t*;Oѐԛm?3%H P)28Җk/ GKkUFF@JBck3}S%Sʇ$}0WcR4fIDb\ET3=ޗ5A~"+xh\L/DaAV)_cm6u\Xbh!$Qy$Ql*u$+V&Z*dװ<05j$qYh@H{6Rc]%3[UA1ɋj^Eo|y؅#9)hrWHlҪ.(r>p-B7-8Dc[00uj-2UiXX UjV HפLo .eGdݐe6[$ _6j =?% WR^+ε΃ gB_#/P2E2cblTY7)hP)!1.0 6ĥTP$q`CW a#Ncܢ*0UM=|b1WAL{\|.K+J)Ij2iymn~M{ͪV{~=.1i9^t/Cq} ?|Gn~W]WV]?UC1]/x/=C4$u>͖~x͠hfm $ Ӆ=/pJ,ɸ5>mxHJthJbm\yMsHi+za:fXz땵\EFE,2 lj)lPҲD+Ѭh8s=~m< ϤBehNZ3%wWRkͼjk=dg<峉bCY1g3+|::N>4㻌660#(k 0*z E ,C 'HeRE&YLm qjQd/st xPR,ƪ +KRz$#/.,`.CTN+ 6dXrKL"DKCV4hФ,0 +4S9 %-icM/=_Q4,{*+5xjef4v^^?Az)w{ L{R~˯Ԉ^ks^r;%kdտzz0E_ט"h]bI~U+??[u.,E?/s"ÿٻˤ]%;uZ߀fߤ)zE_ݼ=򛿓.g-;ybCFuy]:Q#?LC6HwTοErGLRoX^vDPCk1!"#1 02A$3@%4/S O }Kljx^w#7ү3#c>w?oFv ~yO};-cžiC_ǀ3X] ?X#ozw~V}'?=|Gp/4/LISKCoiCZ扦h5K_~!ھ_tU>zm838383838m6oC-Vܯe f~#Tm}#1{~ݪ-Y?A{}Hů6NN/:jf&&غv7Cf>v?E5^#!x(ّf38 N~_Lu_yZy/9}VAv[KjmvWy1 2ϪN˾Z'3'mZQу98=N}B[3δ|S]jZ> 5=_ε bL7 :|sߓyf+h_Ts}kR̻T8N8N8N8NpsŴmmm6Mmim6Mӌm6fiqN383838N8N8N8N:T3uι:T납:\SuNLiim6Mmim6MiqMiqgq'pg p' p' p'\suι:TStΩ:gL3 gL3tN=yמz bggg=S6Mim6Mi83iqgqgpgp' p' p' psuι:\SuN:gL Ήgggg=iOLLNzS3Ҟ0 ~<gtm6Mm6g838N38N' p'\suγ:TSuN:gLtO^z330cOPRzf 3=9OD=0`4i~8ƛ?`'' '''' \\df~2~6~0N3iqgp' p' p' u:TSuN:gLtO\\g=c=YAg`330` qN3.DaK0if (ҌTDLLLDAI30i0iB (A4 g`ggO' g= HONzpp' p'\suN:T3tΙ:'D iRzf 3& `ӌlqM1t`ҌIJI0iihhhhitx4x44x<<D9YBdOݳ9lN[?~D-b1D:x`=AzuRW:+ =u :tg]sgXsg\+A\s T3tN=y1bAL& 4`ӌiL0if~*.LIHG0hhhhtx4h44].,]  AEѷC~h" ^g1u" ZuWnS.bņՆ紱9#cXOu'=ce>{ӵc@ĝ 3Sꤕ6byՒKΈ11 Cpa0L0iii 6 6.bDLL]" " ".8Eth4h4h4q J҄X4G].X8X?OONt9;S]0Q;3ic_X0×aq6os 3A@M؝vX'cȶٷsƵi'L.{!ʃPEV"~N'>ci\# \M0iqtLID"".HE"txD]"."+JtbD  4cHNgMPRiY99nSӵ=,lypxlÇ'g}&q0vc `ni ;Xb$9 ]Ѳ}-+k <X@%N!vİV"5wNM1tKEҌ]*."1tLL]&.IiB."&`HLitغfE 4qJOZ Xk/G3x2i!ԐSCcuiͰ^ǖQ^||l݆uauJet瓺jFͩuKN9W;v4l՟FlV݋9Nl`~α,7s9o9BDM+p^tVtXf4b& (`OJpQZȳunb>D{ ,nf̴ ŚY-fshc g1 8M{[5ߴ[a 0MUR5Cgdz6:vD4䓲#&Nllr0ge7d4|ܘTMΥhQ101x>$8RJF&n75Y7Эlfa?Ivt&DUDǢ*ߍ00?M.%=R'MF.,53x3.nbcsZT#襧^9qf6O* )Ƃ7W6CD˱"7Y?V>SXy)1k/AbN3CS;sLF&|g`x0 NY4q秆Lj 3۾m}\ͅU_RI}ײ̷Q1/ ';B *Z w,!"-B `O6QVOW_/mnpW=#cǟYjl\ 6yR`ٷUM?f24?wVrM'ximآYfvMO&uAe ! Yyϒv2]RXZ#>˙c;J4[]uf 5V0gIS'JAkqhglvr2u릪2xՂǭhE8ԢRl>ck[K teY= Lm<# f C:XZV-q3ok\0#ai:=|C+n+R9BFe; Hav3z"[\YxBJ7uRߐPOp{]qFGb~&혵;9fҤq.6(`W3ׂ2 %ரShJfVFVHkS90o=Õ;N愃״ ?z[(Xʡq(c xiX) UrGɸwFkc83@ ˵\m5[--c0PĭWq] 8ߢnhAvcSYe"*<`VPx5ZjYwmBe}섕j]~?jzp-s^mq,%jV@\(:,ֲ79.3߉wWxE)3'xvm<(ͼ3㬈ZW7`Yؐ5ɓg;wqjIɤu$ھfiWWiG~Ekyw*s_y^vJͦWvUxcF(hC![/[8&6- 7-ֳ;oRMѢK—YoSE2A5Y5mOu)T|g[}lXCJk]N߂I$L6ڣqhv=}o73y&R +IUbtN_FN*e J^.G`1R_]=۶䜜?#^9*ϱ}=ZP- ]OY]6ղ:Fbl@H7rjjN@}Gŝm{sHLRrypOE__M]*Ⱥ>}[h/Pߑn]W r}-5dٴf=zd3q"jɶa9V~7]:ۥr. blSc RDg'Fk%Q2bX,޲ILmNg~U5Fژ3 v\Ч4+TM=pԱ2\rXT wcr)H֍T36Vgcj [.B%x0: 9~j6+1hƮd};EMEלrfM8$d?8Ui'0֢E{- 4+5\Evm73jq׶N>u27ݹ]q=>22]SԦ;"nfų*>bX='x)uĩpK)ٻkS;YK1$ř@n[MDt$z~UaQ.& LRe[YQ}es.Xn[=Ua^3ei=:ںf[@m8ڈ|g-6|M/LX6C8_@E;.aɬߍaZ;fǨI~B3e?ȺZ!)T&۠ YȄٺ1NuNj=Sr+@ۖAvӳ7FB ˷nӰClSg*iw4QJ*M YAcuv:TC[W"ȼl\l.](8KBL|x3fM0ZŖQ3s//obP-ֲJhys;,U X؉ϴb 3u,n-|P7!结-یfxZVw#/ X7Z!؎QA1Vo, bpu6Ph xϴgmn XrlleqcvƁwMƔ;.%%(ZSʴ8ݢFv*~`9:jfE\,<ɛ+Fn0=WrBlk-EmW7wNopx[C[N iXѴn +[2w!vBUr]p߲vټgb-#^{H#Ef3'n6TlXUOwZ4*NYZo,ǣ-׶Ⱥp0P:W _ID4eޓy;~QȧSAj^Zr%ɰt)J?$s ݥy.Ni(L9}[E@F^,㻄T3jSfkgv?046n~ϑ 9oF%pi0U8N0,O[^:>L|FB! J[hުRTRݯ׀VWAΉmve'ز#pp w[\G2ⰊɶWqiؐDkirl-kR?oPllV h(VmeY8||Vs?fDSm8?{,:Y;(i@UeLǬ{oJvq]FdcgQZJ |BێGmڛ=dNdZ/SvXo n& Bsʪ6@]"Yri N- ~ցaa;Vw 9NS;!M) "]?kU7 6 ]`}&o 3f͡ b3q`FⰜwYTD*'ڥdzؔ"k`'4uJY&qeVj :|fk,yʙofyr4('Dj75)zuZ 1hٛU-v]mm@s@g?Ӕ N$3f<7"v?D W]@ [yi)qP{s21SשW`L?-+2!l:,1Ui0OH7(qYb\lu@6ヘ>mh_s'fd\Ҫ:l0&qF",0"Xn~߆o7c9Dxy?Jg ,sP v5 X亶` {v\S1ݵ:,Z,FE[TGG+:32ՉR[.ȹ/Qu=*\vGdi_䭖꬜dyo %eA`fZϜqgCDT$u:D 6 Krk.w!&v3y) NX[a‡nL hVK!{;KօP%H[ FNRYm*]lg ?w Kmzض*dd jcUv,M-$"7y oQ}ɲUMUBnV]PeWɲK8*Fw L[5~Ys8?79NSynw;+^PҢq n34 bHg49-ʞye>qq^#]@q37%Uo~=.;rn K~>%x̖݄-QI]̕b8w!>`;vSx VK^C*C46o=sNhosk"pA-T9o7xh/]`"nbBf9v/U+M:)#el1Y u"dZn=1,+Usr֮5|<4-u6u+j}7<[Q5ݛo7*hYټP m6y()oy3)i\lčk7ir&ʂq Zu$jJʱ̬>ubAҩJӘ=ըSnv9 حeR.+/]\^N1!A!U \*iiqXYH)QʺULk<RQ̂o7o7o7kIy7rcQM! [27k }5: !sqKvjVZڑNpe}e~kXɉ^JG?zҚCj[P$78[:݄*lP]ᑔ ^5&{8-c\Z }(N}om7}JӋsbbۏvbG4dqacN:6;[}̇w (ɠ>Eve ƼEM(zNVK6^;5#h9ճbV6Uk{  rZ[sS ;O*f  aob#iJ9SV,E #z-=Nm[aoxh%sbߏWeu'[(nI%( 4޵1r*Tqdc>6r٩i҄u;^gO4׾3\!]umx42kkUٲt1uRNId ŕ]|mr`Y e%1լ-uc܃ozUN>U9myơ}n߰LےJmz5o-:n>E^ZLB4 5psZ+pvBUᦽPPfn396K K]MX֫FMK1~+KҚcH%bh(h TCYR̻}NCe8^H˪ /QGj!2psv76+VS=`2>8Njf,!o ̫l \{LUfU\mƴ&8edy"EÃe[bQ0u#b9qN:cwjvƵ&6ckf5W9*ZcuLf>BKe"UڵjH覥Y?{8tPވ2iSxN XP v=@&ת1o4V2,[ay/ Uk{UkU.ǝ9Q|Ybf6pѰ)Z0q4T9Zl9E.1P?DɡwwNܜ.IS*N'q-?j>=Z1s;PJhr)K^"q8ߋk'OȽ̋kKb%XՕƻ{+f5)]/41UʥK5-WŽ?2qYm EL1r [c kߑѓV~[NM_m6&NmoXM^!Skl:n.+F*QhV1Fi6 #Fi¦cUQ~l`kBʲ.ZmXķ%oAZ˵ nf (-첅[,j4fC*obS Ay`L^iZ1we.,tB66#]Z7b@,ȩ Y]mjq.UG++ema5#J(Ǵ" \|4L̾Z5\l+~Z^MmT~\ň1장jXz )38q*LO8pRc`锆^&T)=XY5V!bV g; rҵ *{#]Y-yyi=,"YY[eʵ,i;bjVK"s/z܌ BѺ%[[31B&D/6VQf z/DMAJ ],V2ueD@Ř#͋e1L Eu V_׮Y&Fvu&~Ȩ6qҡ2o,A]vuVjc0f5]w?5yMm֚;_0E9[YaQZ6Vpdlյ.ݕ9Vr7Urmzv3@KY}\.flLaSjmrQ12,"$e^U+vtN!e'13X*B}lj敖h5QeJ5 # {oU%&BİUb5l{,9- X"zudU˱*Ȝ7|BRR La-q=V͓4a ԶSX!>?v_WoW[f) T-t3&v8kx&V_Y-ɪy-s"B$@N±jL ^E eY1dqP*!~+qڜoi̫hZ)je\*JV7P9IVmB̌7,r*]g̱"2V,u1_ME CƱuԳ0x,|K)٬|u3qFz~#?J>@uG]캾<-ƪ([hd_ 7(zM:njGT 3-xg6k,ENʅ/MGq2Mczi|K/çhYxfn%J+r5q1{_Z ae-vcm심տw)ҡ]v4ZDCu/v&kٔpj2Z+& n[IiVldRʯʾW5Z&NR95XzTL̵? }{5-cw]-XR]mZQQKDkXFҍy.kv[V(v~;@ez|몠@.wfSv*(*z]g1Y,ú`j6vUYKv5luDEbs}GZG!!:2%[\U+es-jr/8ƲXJpLۦGl4Tevk,.lKlqP2ۍԃ`*gq)U2baԌ*W+UBru$7n)Pº \*ǯzZʕJ>ÜaS63f. : ~{:bafWōZpr,Ŀcy]m{ml^X"?0# ﳍjݣI\-in{!vï/]6_FqRvOC+* \trKw9-trSG]"^eRa ZƆ{m,eK3XG< VÚ2 exUt;V9. ̕cZ3ciej&d]T"eXS=bF>;[7uk.Wo;nı u#WXf zڥky,_~@Bg/ւK@ceqE4U]Ux򋼰\ e{,kmHqx%Oc(=륙9֠n'1i]zh4m) 5m IDfU/z4mm>+!j1]Ȥ_Ϝc= 兙M|o:BiS_ab\#YÛV!v\+iu6 ü ZBcqhk-a#/wUs}*vTT1'`wxle ^#z.FZKkR[kRz̴_Az ؕnܺ笯~kf%Ԇ(9Xm"L6: tݥmTLtL+/V&PqYٯtz ]?WlX-Wŀ\Xo߶^W.MjmMMmH}ic\8Pmn+-2qM!s}wTLt,ݲ. GY$ BEk^:OTٖZ5,`~fR1Z۲9k)72T0ݲ4Ull[1Uuf[R]hLʙD21~>,6}1(Klf3'GQYLׇo"~oܺtVo0k} #ϭ^ik}T-׳oԵf7=4)agkT|ӵvo罶b+vY UmFֱ 4VPR׾"^ЉFjڢ6 9 ]mY4.k./ʂr]͕p-`$Se vz*בjOixcX;8׽ jןuPu-]yxz'Ϫ:Njj^~^nGUPE?N<;|;躧}_>H>yݟX~joygo ][M}~XmaWL?QxWJ_|d`ҾQ^ ,vsuWrm`%-W"g5oqǩĴ0bn\n2ǽ?@ammaťH;9b*U5jN [V[H:ۭnmU(ejݳRwʬN/5Xlɨ.\©֥.R_ΕaE臭i\Qkcm2D٧"||N/uBS|cxfU}@׌&xߍjC|{L<>c4j4M+G{O'g 5uy_+ 5q 3QV#܌b&B.lvBy̅ }*6x**jql *V2#T<YVؚZ2Ps6^3du 3Vf#jG;9{MVfa Ec3/^\S]aA1쀉ڣGaWвW䵌% v[? ͝lU܋o_E(0^,t0u }mDw"!7A828[42ߘꉠ/"o uhn a 7aA(7sZ:1ݙ%eU J~ɯ-k]DM >؋!mD:b"g**`wTaRRPմBO1-318Cbm%wFJ"ص9"'!IJ{cPqU*꺯_Wsm9UVq~xNحdMdfq^ k#x=eZj***$ࢢTIQQڸ*sQEVQr(7(gVܢUm¬d(ȹYEG*ەu]W5_j<Ѥ]V9Wf_;Qz-bmUַw5sraKzEk6hSς%nխZ \!gַmZZᒍ8klFtl"vc] vpZ kÎmZkq]tit6..+^1 Dw ʼcEʱ`3QܫUlUmV۟e[j. A*U}ʴ%YW(j rU}X$fsWܵV1Zw-mZ.rVj-nkF+]]kŮ2Z ^1]bFvy]c3K~[u%ۏUڛUڛm"[qۊ[hn>F!v_ Doy HϪ]b/;=/E,]?R˚l"oYٴ]ߎs}"g]۝m~|j۵v޻IfI{bלLZzת6UൊЋֳs4X6g{ Z1qZ\\'5#L1m ztGKn+!v!9nlm]GNnNm]_,Ϛ:~ޫO:}poG;Q~#ffq8rU˷$ttc%۝w.<ΓIZS[K1ZMO<Y$s -8AK˧()a.F.?w=g![n{:iBޡvM \WeM|z.Kv*S`C@(|>bYk}Yn1~~0C6`] ywyB|.]]}솁w"qhM'SkڵqZ@v1]]bcqꎘ1+~|ۯ`GM8b1v_!v7g:yrÚOtzvǙO>/0<}s?Ѣ;}eGM 3pj n ä\]O:O+GK+i~wٜ*9-ctU sLf6*g(j1h)[y~9s0̏<<iYx`5-} s}P(G( jh{u=mFa2(g8mGO8svٿ휶avǮII<3rnZS/?L*,c>֮mڵ44Zcs6i? _v(|*w"O~J~}67`-M>E{=c`C-~ }An>t%cW%g5vu0GANqCEx|xص:8Ѓtqs*CkZڵZъGqr$>j'r6|#>q;"5\$^ЫV3{e4] /q ӟnoZZݶt޵4Z?anŭ9jUfJ}ֳH zE\JcQWo1Z\ C>Whgٶ7lZ|k ?(-y?Hkk,kNv!L}J_ *6|.6b,MU)]jMM9އf|~ϽS~A`C:>ދnm_qèGdCBev:?WcgCy7.cJUA5Tݷ<b$arP-gڢ.k\~pJmws]`9#IIFnZKܫΫ_ ɸ.syF:U.C>Rŋ_K-e1jCeq]Nb-%Db8*I. "tG|{"qM,9_Lީ捶:?T\3=v~)mVW^3j8}!4^Qwyas ͍C#_ht- Tmtp̣]Z>vN4gW?Rp_ _/m R;`0XAauCa7$4g (ĕصf7 $MCG?|6,Zy#Ar4Tt"xe} ϫN!( "sU0hҾ2`b9)&߇Ȝ)H-M{S̈́g7-V,spZ>]CmGE!5vZain+Tl0/ttjEO/ucG~1_?51_ӭp$kZvՄ:h.NpV>VtN E%Ygk0.i]o<Ѩr]im )6_j{լ]N#Jnl*.o ֻZ 9^G=oGKoػ`G[~ݶ(~_ٵvYUsbm>.hOGNFGd"|VHu :zs4IU@Ϻ s;H3"_6=3Ge#bsStZHPј:DG J! 7!LcwxG飭Gf(R#L R^ dg 771GIj.ݝUr T"Qe"h.PGcfqU ͨЭBԟlN8D~8.<U@>;vb@w8ִQ."{TfDTBUmFwu!bs54,ށz?6qZ92]Cpq;uE>sj{A?KSej[jBWC8Rm mP_ڧ28l ]nyZ5v cea^ ;CErGDêtQryѨOԧQj\` 'GJ=sv_J 3=3[J:`?M$,Jn!E 8*4wi+7x*jGAmS%ش^l :?4>W񞕣 tCF} [WjhjC#EDw) ɷz41c(c81$ OCE\ګ?*G[Y:,Ks#w_w (CO IΎU[mWUsV~q]Q*W͊qsq3QG8IIA>9b>_5<;m t-Ssϒk8լm=Vڵs gE3bַSR7V#B`Tp쎏FG#vA\]6u),"Z#gUn@V_BxN6#Gc(ᰙ];Ji#-:v~,:fmz'TBm=c$7RLSRJyFآHVGl-e-l&&R:z+\ i,FR#w8vaKf| D'cJo Gcd|PHج膇G#&qw!%j7"!mi<jt:y*`9A誯UJE[gwŠ(nN&䢣Eʶw"8b T.UsQcGDp͉xcIFp<֫-S Ta^aTa(4񙅨bd)cwT1\e#J&câݹW8E6)6*W"/s*r0E19sjٽolU+\`C-ekX(MzH+bH*7(3I@f BNq8 LLwMR!Ey?ڎF>X| h#(GIp:@R7])gמe2 _䵃N"Qy2ѮÜBD7В~\h]crֵ;Hf(Ӱ'}#UgbT( CBqԢe:<.cNؒ 6Shh1wAܥA7-oϒ4ǯ6 53TC6UbBFV퇂"hǒD,/?4"c8oNddz#Jۈk0s8ꣵML-&g;4 хVE7Dm`yMvo8Z6h۽-nEC w7;_M#xbMFQ>QH'?Tp!.;H'|iM d~1FBlw;lyiS֐t|M.! ?Rsz/M6Rk_I:H:4K,t4:{K%(ht@g4,>V}D4XQ?tq}ZM>7B^3] %-xvZ~͈ ͨR4ЫֆZ\+7v \ Lsz쏢i܋0tZF5炍$Jki>ӆAMm1sZфShoͨCd|3[bD8:1jȊ @ `[xY<( ]"(N)v8e9*DZvb}S_A 6Z$o/E ؁[D4+C)̔Inw ظoFУn誯h:ZQOQ2Z !N*U܉Dy(o0݄ڋT/2YTYz vTrd\N? 3****h5grTddhspKt] љgCUȪӊY@aTm& 9/2@^Ca[ϭ5TW9ڧ9D<0@1ȕ(9G9إd(~1V(0F1͟/UB }s9 8(#tWȠejeU9J7(9EGeGvs5i_y]ˆy{&C2mkp w(3m:EiCIp߂u%!r>%#ʹgr.QͨZPUi8Q8HQl3rcFCUP-3PGbh&,B5Z*bJ] Ul 4fblP$oYfJVvtk{;UUHEيv3hݞ xAMB351#Z`6p@B$ljpiCmPB !@b6[F˕֨m̳dmPPv6~eYG93Jzvy(>*E9 \#`ʪQY:"1U*#H*** cOLsgJƈM=n|p~ͤe7I&UߝSh4D^ZVcF0G6Q;k[H LeNQ*9ͪyڌ}( Usz 3.[ar6 !gJ0O_ >=XJk` Yz%B9fs+cVBwcN(~<N34g\St:R+@^~a>̶0(iˡxv`*)}=ID$פ į=HOhb:?+eRà7zTNU h`7iVSBJQ(U & P]^ @m)E1=ZAT04|eAlS4jfMa|/ N c@7E}Z*:6q;:&wڱ o2PaE#~v"$D9Cvo HdnNOZ8ZoU-;TJ8(N@($IqG~#78D*d$DœL[௽G=rQtTsKbw~I{F窌^lgT,C7`.Y[H#蠪+(~@DP]a|[3KUml"#1>t^#ySρiO-#(D CF;*6*@`4v\2G\*DKPh#D>燢,ibn V7L@.]-B&O;hԅU xM:S6 8L]x#Ua+GvFFu&RE+Ov+XiQhcG @D@ #rA8@1D[)3unFsJYHI:7C]|xgz6Yܠ0T6gD`<8B9 3(_IF=eoD1sj; ( ܊ 6?K(n* vco2^ZFA&UҺ~RV"`B{} 6lFE\hqLF`g3XB qȏʫr ;=mYm?}f}Ql/N#?uj]9؈ۂ2"[)S^܌mA_fqDlUB4MaHE~nVy(\0AKUUj@g2UBj @( bpU,Nhؠ'%B U:IC>jACw|sj#7~SD[B&e/tuLWM!KG8t`ƟVw3=|538b4qEhHN$ޅg?Cઐ0l;c1(9M#J}ȓFs ]fNu Vޙ(<8_bSϪ%hy͊ABvDljBblQ*AjB, 犨{q#R"VX6f(%.P,[0V뺨%$ 3UO\pSyBUR nP邫]&nUB ūPTT<:HFj֯~(3vso(jUJ*s~<4Q?Mh;*gzݷQiIѾGwDGeanO#p@V<@Lx"b7fW`nBTYw{0 jL'mpLwôjv|Fo;GotP{ԴpfE1BE5ZBYe?܄LeL!j-\/9`ITFFW^ÚPmAB'okh{xSKl wrpAdL,;W~sb1S/EEwH @ a olD\dҋz be*yT j: l#C6ʁEPcn7Z3=UR-p[0d62QupOprމy٘|3;PߵqQY4c1U9A=`v\y,)t(,iMvxtY30J|{@z?謁!󋳙*=Q6фQQH\<Ϣp;sfzhANVvf9VJIt)8JT^E x"h&NjRvs$ݵxO>g9DQO7ddOu 2'>s K8 h=<0Ni53u}T9 B"xZs6T` آ/w *5;UA9]i@, a|0y,an`6 i)[Ӳ8p "!Df# MY9 R^5#m{T4=0daTfL5s#CU[p&Ȣ*ý*(i$a4 >Cy}آB23xτ8#:˸+jicӒu3)ǚѴC*'6 IAuܨ{N> Ѱy]m BjsQ@uٵV!|/k)ԁi6Wg0UŒ;M38  9QJcOv6l+XN̸I-a4U+V$3ٹ5z&BL PVaYdl HuVv)BH̬AEabXG<ַkz-`q" 7g2ZϽnЫ7ݟT>}=PN~cHEgrn(kmt]qm>Z&4UakFvA*|b"VX[>* Qb%Ct.rPhټBc ԕFا?IyG#Ou1|sbx&T@6ʎ(co-ɔL}3<%;3ʭ[x%ܼ -VP䀅Q@=8صkj =q!l%$0 5dLkX0(;Gmg85G c3,o܅(qNxedH/ŮtBSj{34) N аkbwKǪ;A On={o~͆IhL&V`eY.<ԿsrvUc[jMJ=si~Mis}pށ&RAP>u%Y%1蠧|UWZG&nV4I]rF {HѸDB`pZLuW%9A Aw`arML0GYZh1PVck-il%41gz g+snܓphIT@"=J";%% mѺ 2茉rކLD`&eXMV"USUi$'睪[o<|ZAQ61UD%ۇQ6*pUw }AеFNo>:i('x&StEԎ! AlǎP#l@D݊DH3j EŢDwlX@62ٟCH[>O=qUmѲtD)ӊ1 񙨃jlr-t#aLπ^"93mc73;"wT^8Aǒ yBPlB3䵻3u1Ntg 20RR:#u( LIBm ZBoEq9ث5Pf zh8qD_aJ#,PS݁(8D\DnM#9VZ#34֑a qD88:(NmqU]t#-<{1 0UKxF&gНؘ6VUaD~\(B) 9څ=;VPhwNs\~QDںIok*H;?qMpw͙ك^*8U^](ԇ*7X,߱UyfXGqba ;5Ό @Vjb>]vB 1A6_N!I Q$xgzesZS kCG2x\+s$ȑiQqi8c 33"ӳ"{jiCou2;ӫfjQw1a 1۷+L2 #h dfƶ?88mNai/UH͈`0g 1}3AUX_ZV[ b -*){~J0Ub"ykq_IAwڋ-Li'p]Mw6'wc鏂6;"%,zb?d]s>(:^kgQ 3֍m#Id~{'ZS>3FW}UUtR\l{~ct/eZJB #=J}{xQ>oS\Ae\ Z;19k e28h>ɭR48R67"ͩ(# ͜HHUX-\}Sh}ݦPt!tTNe dU ?J1 3UbdNsr,6w*z`tnmh=Pj'3E7J[=P$dD;Toݨ=Gr7! DpF3&t.9(AZD8F#XNd˅oU8Hɚ0VL  @IW]_Lς܅#D+B`qN} X%4mJsB D~,U͋!܋p9 յծ*z07AD]3 &.|!G򉔎 tUfS~9߂kaH5D.Bih//;񌬑܍6gn"d xl픐jHAV>7ZVǍ*0GlE#8WRUB26҂Vb\h^8:Et276 X=U+CA18+v(VwIUz"ݐfJHz?0CbkU նaU<|S:L Z<" HFk02*af).Dx+:uQv(NQdmޙrg?$ٴnUD#f*;}}`GDF_P !1AQa"Rq2B#b3CSr $cDT%4s0? Asbٹh֍\*-W;ţZ5WѭѨNJB[@ }f-Z&B|^E/2woPѺ;RV]J,TIz5?헄Ë#9:IEi$5kLTԌ*fgQW2eS*6GF!"Y+\c`[ B.#:"Zi3Z##v6 9'9Nqbvym*8k>eh͘A;.@QFtp4Й$=B7sYx湽+ԓtGigiI) ͽ'Y"^-$lę|tѲۯVzfDğ2InrttI,! /9 ħXi&Nfr{rI)rs\0tLIv{QKD6\f$=cboe)KV~[ؚY.K byQ -!Ӻ%9W-FZlVJԆ_[c3ZʚJrD"ZAkAeu+|;@|>L@$KRHY(ӺLi!,iloI1qɓc '(&ŢsםIj;{Joݐ86}5}!t ]s&K?d9~S O[ҖR!rM'z} ;'(tB6FKLA5khhm*LLV [IN눺oL8̒'J> i2e݉Sz ,lls2E:6FYh%!,BYm_2`:@tdjkXLZY4!{1"SN`wUXIC9]2 kniyR5ɯ#z_bXJ,u3^AFa&2VOh`0\[Z0:ru}^ݸIax%[)Ȏaʺ{ĽWJѕC^ʂJeX::& Nꠐc.kCGkd W\˖ޗOGP#znpĊCfOrsCɊ끻 fBm uS Ffx.h4:\RD蹑\}\\Ȝ#s$̿*G\ڻl.ڴajW>F~+F-DlZ=GhƠ{6Z%+Ebq D5-hgBzZkBx C79 @u- h عBx ͎͎Ͷ8ܹr槪x!c:gWCs)GrgQܹ1=R/w;Rz,bipW]C^wSeNOC^WR; x!v}wu<^vm^=Z/s/s}gu6M{w=Zr!y!ȇ{Wu<_*!GSԽe{qr{_.CZ%:h! ÉZ"'RJНY-Ԅ- ԴWk\\W7:HY,RW5:44~Rgq.duxqsܥHXs'Q܅ڼW{ڼ_{Ux^W91[rSr$Q$?xhr3C_‡"?CwSfrr#oz/qN!Gr }/ |!CvcBF9$"7"9Tqs(PZL!rd7/vA7UF:;;乌ʹuxԹ sk8ɫAfP޴vlY+7i|:͇GdڴqZk0S8ko6}l9\oW<#mq5fP5%(^>aYN^\Q .,U8s2ԅRb'W2v~^7/wtNf/|ͧb>Y)⏴o3xG{87j#u0~o}hefN;egspֿBWwWB!![G'uW>;v]\qT}v#M?6/Dƻ׿"k+oڏ-Dx^{!]eWW>ӳ'x}oXo_ꡓQx_N4wH]xO{aqDz~EzW}}pcI+Ml84(Gnԏ/Gy@NP?4@yFnut3ֳWWoH?3ȫwosHs03؛`~nrs{ٻ$981wdVj,P͙\,Zu|B3\ٚW5nr칷>+:a 6HKO#c1 HX0Y\?عn@׻cT.giF8\ѓ 6b! AǢeJU~3o1۩UfYƮ5/yYaWޏ-@Tyv#<<G6g>ѷ{H:#0x{N9q䏵⏴);o>;>hLw{HZwqOwӽm}7G-g1XƼ|Vr VDyB~r \zV&#u5~?T'+NZ⹬Ss8\&W52zΥ_>3B Z g w3pBN1`7(̈{E=P@]%Ƴ +cw &sYNnojvcV؄Ì؅cP5Qsqė4fcm Ƀ|ЄΫGzLZ&Efx5-G * 9\]Î;PvwK)óZšZn +\A]m:#<T*Ȉ;2?I'o];?;fe\î-(xNrwnĝ/#?zw.G~ܳiWk^Gc^`1 ,jF4s1J8Q"#<|cW DɎn0\1s '5fi`>pܥGB6݂-n o!{Y4C e2BMs2W!nTkGeZHYwj,P+ JyEv!A*J?J.لޯs- \ }W2|hruR$ڳ,(#phs+g؟MNsj]eh3^lDW?e+CdF[bǵҲ41rk_͜DO>X0Ge{ǂ洬7&ءPGaJ⹣F f;R3|NxFgo U{}[I t M֍:esP;o EOL{:W!zWCQOhv6OޢZ~Gg4YP=r6jh(Z-FhĶG8m wD?Hkeznwv(szlXB"6ovq==%dWK_uIlڎ,[o֓pԴ!3-mNݹ L#֐e2'-5o; :/|C2üpPyBfa93FՂO6@BQBLݮ DŠ~n Bs#N_,֚X3y`8^4Px'r-[cWM󟟮<d|L' |fitW23ߊ@WKꅚ|Z]PEI,'rs2uvty'<y8ljBu2\;pF,vLh,shZfq 5г$ֶ ݩHRwr {κP#;E==8@qkv sFx.c^ +[Ldbm&kY>6}s5?[`:NW&6:%v2jnmwl2؅Ju;" q9B m%5D8D"Oh׊ 9ݔl L_zx\cw$9>NY깝a \w6HY^荞Ž&rޝy5HB2e~55tDvz}.B{p>3Ϙ 4&ci3<{dwž3MBnsGq XPF,\/M{P]+S*]%~6wv@ U- iaj6=mp'4-pucMr'`JGf.%s ͈5KUMx ®+$b-)i:<KSx bm g \1h>gkg~}pe0]rj7xV]6Dr: lCsT3Mk'$O|,$>Rm.w3pЧi>F;;cZ$a.F !`le."g B_<р7r69܅[we8 Sz4Ϧ=w\;(@t[>8ԛfh\;`!e/,F ?gdHB-xٻĕӳKCե8Mq:7ې,TUgGOco#.ud 0W]}ӭ/NKm݁^+Z 1b|8.lN.usBO L%s oi8tZgUJ^r,Ou+{]96}Sa%N sX8x}t<;5 =Tt\d~kO.،eu!S%)#/5|(Vwެ|3*'knޘ>ajׂ fO |w ꝥ'~JjiKG,iFQa>ƧY=Mv!g:C9S6(uTx!ɏI+*}l05>2%_ihvOlW^Mt\w?Ez&~.}|g-b+[?Wh0S\p_=ɭE\"*Ki3ˍFk7J[Q t<_T SUJ13 %8?e'{]&CXMGþIТ;эwcܟ`q .f܄>g;j\[J=C,ֈJ-6-{Vc,hY, CsVlBI2S,3s39h?yc<2j歟8I6҅w,c'KjBU7●EH0I}TN\6@*?nɌk]}Ґ(r(?5{:eۏ(yãJdqhdaxPCq6T-_x6 'fhSkFUUڕOX>ʼnuv?wb>4| 6⹁4C\$=&ay9# $ &N.Lh-<ڴ jZ(Cg77qN.'D~Q) ;pF;p˵ 1#֚kk*qI^q'Lf>Sy^9;@4#-ɑ]zE$dd^]=d㍈h7_UNAzϒ1lgrm??aO#r I3E^z1@Uc)#bEw?3\˱yrQcdrh|axWjm/ta)WsH"A͊kd!Ï.*xNulF?˫ `hyA:=܃eM%\ ZVۚ0(^0u\\2F $ 8,fGNhY_9M?oxL1ңwڔ`3 w!MSwr[mv؄hhbU> yNEt^h\>ϲx }Veix(MkT*Zg) f0r,)Ab|lEZAvkE-H0lWFw|qJ5@5Uޟh#YFկ6Qԛj'$mui=kMx@,J"r[+ݶ m>M䈟3.mM=#9&eИmN ⊺#A=PH;^{$>f!7/ug_lvqGp332870$9wge{wk+pw- ()c0_fnCxYW=̷J >̝fj-+|mnںnnL?hR8gb/HbsGB;xִD7 ٹhNB׳%p>=T'Y!\B6δMAGwF8 8Iyӎ%)1f9mS@ >6D4gdӣaLɱcZ.'pZ!l+׿pM qN KM \m5/x@۹l8Nm{s֝$KDaz0ɻF$|hƻdz LaMYBr2#3t`&\k_!?NN{N|)|bjHdc׍v͟r0竌80X~Q#f^=-ցݩk+^'K,4!]R]AT9BE=Q!K97NQ46'4%+>_TM v}V! gD,^?7&rt{: ȹ _;nߺƤ< [kFK 0Zc+JxҚ+z5ekp/Ð:N(0T h m+0;f$p W5Z m{h]s2TFz3> ֧u|VnPvغ0݁NXx뚟fH|5p?gg )mT"knj֑UU_1;+\q@V|qT%s-ԴC7+楢Z5skv|x.P$I(A{'3F;>CUl%딇n(?/kJ]^ w QWCgӨ)m]68Sd^TRW'-  º݊ԃF^ y)6) ]չY"N[LфJ.;WE}6+:w'4vOvx=8M>#/#D5{k" _6NhIg&C|;cT!ĉ+Y9`%͐z I0ýFmϊ%kx?Ċ5gj\,{gkS>~|֙ҕ-USvk\c&ѝQpԃ_Hީ胄TsB~MJjt~SDWr#n*O5f*gD޴/q+3t(&BgT T  "hkDpjR֨nrEy-.ʭ!87(Ȧ&&Կl?l\شuq \q䤌ӧnƈŖkN5VF3wƴKMBB|3rtQ]r8 {>3Qb5 4N-)hhYFvt}ݒ<$MAW9F54pyQZ"ZOt{}$-<^o%+;!YΓ/Z^N&+GE[EsCS9>lA?N$XzA˻#gh_f`2NBSmQ#腑ikte_(ѵY [yoxL {OUcFkaBJ.s/ZfDa54ZVʞJ<49vU^'n$Ed8Fr)-vaZ8FR3Ē$lԣ%8|A&-DU;xJ{>21SWv,TÿR?rjj|lDe<d(/s^W?-Vb2Mقu iڴ. BMQP{Δ盎]|zxji:GsA)@m ‹ BnWELSB<kv6ImyN'\{!c톈Z^IR4bK nLЋ E~ Sڃ:8%{ot@N"C$EVK6i?S~,+)DЧtrӺj)rmۍC Sn$v0C~ W?"/di=Eάr){܍%κ3wyꍪ}ß]ZmN1'-We2<@4L>uq7jt[$-ēIWM(0qύi!:t!³c9:L YqU~FJw#U"qP{UUvjZ'jBo7)ɩ?J?.z)ύ u8յaMOo50^^㌑|4cqQ-Lh.|FVVE1:Mmw)Ef$k|rQ-QVa>hv%X3)x)_tuK^eQkޜI=)I SUp(V?u2RփGv$I p1">4\̀ޑFh:~s )G(.f'[o\S'ܛe {A;rVhn)2f) Ӣ &ͽIpZV45ӥx:dR'*p!9˴93hFi.dg:)\ateN g;c]i:8 v_RnTJq;$GUd)#3]Ciƌ%5"Nuஏa%] 8SUSSSO'g8tڊ$lWUO؋9 T^گ|'F7cn|]',M5㩳>ZytM 1 ;ϒʖ"dʍĔ!ʾO4q(vm:SqZk Ę!sAOt6Qi{4KgC つ巀aNc/6 xަpwp' !2rasIc|r ⅚ ӪSBȐ'#Z(0>⟒6W.6&PEu]B u5p<`7ϻuO7)7b~c6_&]ew5yJksZL̫JO5FYpPd7 ش0YgIf3W.b0(O/UzZ5gj-Ra ꞼxR\qsG f 'vKr89Vyj4՚.CA!*gMgoz㉫Q=};2SWク"_W|q&55MMMO{)>46|okv)ޢŊf)m iQ}68;0 m3ݍxHK>dG ñ6 A)Y@M A5/=cI,kF5SM6YSnWDDA 6s+; :">TC?6v'X>0xq~!a?:X hƃ'9դ6PoNQF_~Ѕ9h緹Ct|25:#əce ީ)#҆~fL)\tjlce[>B+[;ӟz7}U9+y+݊+"ӿ+3̟_hݙ?2Ny q٘(Q'z惔0<>){y9i gjK*'#2Ng8^ Ć{seA ˜>@lNͽ4 gЛ k\ tGZM0hxPL` ۩4 N1zy Qw3#-I`3گQ6 ׭> FVRh9m8vq_5`cd':; ;ʼu .s㍋)8SS2 )kxJyQcAm~:!F'жAl/ &K lD.u Z&iK\'E$9n 23u ~Ύ\qtSklHI̺#ԨG˥59#3]UCcY`>`Ms$NT>S&[*<(8OT':R̫[>SwzhMI'Qt噯`O$֝WfBSFs#S<&9< h.3s<dTK8mGKWb uCn8ڋN>[5N,~l+ؚcJg5 gHOV{|IȜ2ZW`\MxLLk(¯{'2g֦zQ4WAޡRb]Rg̼ӛyHҢA̓Om g~6*{b1D1LWZEqQ]~bI.;T]#Hѵy60Rb^3!V~F\zMZNOG^e?Tw .fc%6]=dvޡ#9O V@cAB.nͅ~hެ>v.SVDE7)j:C& a=U\{DL8OC96UZ:^8ˌakHSF O j ke@5Q^}Ms$AWK~Vk?_75~kp. d/#m!A+&x4FO\e:AYLL$5&x a;YoZ'}Nc>!f?16a205zЦYOd9O(Æ0 2"CeZFBh' %W{[8-PO|<9!H˲D٘)a"萍Ζ αG|%BT܉hP}$ˇX3ME8 *$[4J6>Bt2"?E)(RwJuޅ7gj3 fHfPeqEa"WvNx('xK[$rDxJ)aL(pB >L5w'a JH~/([|V7G|W8+s>hxĭcK]# HڧtK\t{ES i;;˚g6uRي6y3 i#:ae-٣ yZ};腝n8jBUh>健ENWXt*sϿ[~:f^vk(aGXZB E~?v#t5PF{TKQ"@{2 D.U{Ng&9˘K\rH>a"dHl-% {Ew^5M#L9=bk1o:QpmlpܝgsP7Q5`It(. 3O ODfM+hXy8q5'BmRpT&õ[b<ёjb,YV{,V)&tU& 7 h'܌"{ieaC?(09{DM<&Yc2"3f38Dx֘o@2:2EƊMU4q3I lS@|֙e?ܴ,`’ĦEy&vAE fq =vqE5'6$;~Ye! fg]ԿI&jjQhphD>J]BfY ُ`BP0{a`;AoK^=ڐ#0D`:P1cjR4Q63I}kݹ J<;Q5qq2q9֞'胛,EkV˶HYa19$`KyQ./.6.j|rգ 4K5v(pC|mF]YN}#1>!|6r$`~\wIc준Vr$0KwP̻Cjgb|V_t3O4 8JZsՖ1kܹJӣ>riO&12O|a/.i㉝Cb&AA=(kNZ4 q+r1vIshp]Cٱ:d?T荆OKth矊%JoրߴSh$;kڤ58SmޙW,ՂΝK2!l'38k\ -'9tgڴ3 ;pN9 S6ޞݹ0Dc*k9J)DJU׸i\˷Rg2+^#q>Xi9nNHީL2Xh{RXss؟i `ug9XkY:jk2&agҺe BS1)o6 /0lIf]L)NJ xr6x}F8'#*O*$ڛ~SrJ hkG4BXy(v9@OP 6vKZkZazdǐF'ȥoE~bk."u \x(?2ۏ% ɏ S7Jѝ L)LƛUIe*ȯAsLOhƀn㏾bky[F"&d(]}~;-g_2l]qTg) N$u|Ko jt#"eZpyω~%u;Ha^`auMʍOep>Ll#ZD.4c`zA ǼS4}5,EGn KekF9os@$A2x}'kNt_4 \ {$miutoj2"Dw'LpLk[&P@U9ӝ%*럒{KnJDl\Ή"isbRN@4HHڟ'xL?vξ c8'I픮UD:{%*Y0'`Jx^e1TL@ 2vz[!#|៚T⡗Tˎ&nZW&>)Kb 5 5*#~'~Diœهą) Чg&&D: *e)&ZX\މ1kMn=а7ܼ/a6}"0!rw)6chp y1 t8'0gRQ[mwLu}%]zH-GaZ(# i&pp5ћfk"2{عLovD.8^+Ӯ{E Lvҝ'r(ؒ]urA;KHnCv6ns$͓(?0P2@O,兕֣PHJSG(7fXVH蛭l&b:rWYK_lg5vŢ$ I,#B6sl15߭Dd$'g1!M衵sC\;$%h ^q&YVE6,#A^ 6;-]Z(\;!v{%t(#u =,ufj`2/ghx2ڃ]HyN7YĬWit Uڍh_T"@w&8HCؐ \ ԃJn:, ZGNqXbv|mmt9UlNo fiTcAA4c=W9X1Gu~%t#.5֨BKvvD7y>G9ҙau%惉':R KVKH gHuIʏq oK|hZ(7ꯞIdEDÍjm8A 1ڋcgIDe߇xPl1 j.ۃuOjom qN4S]TdDtG;/JAOZ,iu@%ZK#= i*a/: ʅ9~Ic"fF@-,)H8)Ww#HN>' 6%NbdY8Dc'-r&;mKS+uNϻ1k5:Њ ¸6s1T&kDY0N`"g)dP?+uKE1&\'dL7-(p}wUk=cL'$@R9 й_6}Bk\|OW 7<0I%`UBDN&NL*=6)p;tgX ,Wߑ.GΣZmKa$Nj,Xv(|c1̿ $3bt~.j~nQtSppk\8c%_yӈޔod0r{/Bv $vȺ7evC>pޱ٬̙Yu(80$RD.Eg#Y]|EFa;4MO6 :.u o~$KckZ[adՖvxvkzF\`8ҚU\Ô-vx<[8h=yd$I u0<ӈ(_6R ܯgC$#m+&TDKTęwv#Z2"4]33!ރ] ¢X^):iCAsI8eu   L3)p SOyͧx(?;0J<FdGXD{ڙODHr؝*̅0r=$ŲavrÊ-X, >r$!c+6+ag |G>m#"\ToyN$hȤ//>dRy.%CClhM1dBar5:wY*8.LDHMԇ ҧJF}P#@o4 Rԙǒɜ{Ia\җzY]5{F3;pLm\TK@K~*Ij֣uu+͝,%-HY)xwt gBIZD窹I6yHl6J @MdbN!҂g=FM8]-!.0x9"% E%3<'쟚i!2djR8γjL2ALh; bf19#3xE4k>=!#8]B6l,C 0 ^eЭ0t/Hz(Q[\Vgwv(.sMj/ Z@52(8N`LҨ3=]L7BQ>I29Q#Z/kM]hIZcKM-4i44i"5JBGy@uܓŃ%Magb  ťЙakh܁"O <əٖ9:Ibt'mo &< ߹ŁkN-HnKh[2v;+460 @v,1äĺc =ttLZ91+4* 967'l{de5Mfaɒ~@p{/ɧH b^c.uhd(lJ[.cȯSψa_&d/<Գs s]aeۢN0u@tX-9k2g.9!P&C lVhLd!3#QX L{ݢ;bkO[ fS8'iyl hl 4z&2Xgޟ p.'j[g|U4Gs\ffpT&Tie$sڡ{?Tq<ևM/D3_1Da1k.Dʀfl#ƖSĉ+32JuN;`Г!*e񸙝\|d zX=2Zfl/=_X`س{18&%ͥNؙ>l&xBR[O{w}la[/ecdm`786 F2}H6l&ih>˅m`Vڇ? lߩ.Fϟ3D݈.n*Q ={DǰsS!+\bvcLzi[BaJ*DfhBz)(HD={J~ڍ쇴 #k${?Wp$mq;7fJ"la21}+ݑ?am;l;bt$&N3iaq2~0 WDgm=lqsN3 &^TbgʞbJyXIɑ/fc6m/ibϴHL =ۓ8lJb&Xl |;^Vw~7۴U>G/bT0٘᱓捲Ĵ_~6ټ? B~7\^4KXPB$0[+R$q16T%N۽26VןKGcCō:Ua0ČNٻ!8y>\ڗዓv~+;aGqH˱8 oԶVã+hRjNՐ/g}ۨڞ{+ۿ ec`U>l< ͧ}:yV77EngOomX ͚1X](q^첌^5[?h@ *#e0[3$1G`da\&b& QP5 p}3m}cjIژ9Sn{4>ڕ:q-8/ix`xIq?UXL->dV*rI8|&"t'acD}0^|.+XV '7a/l8j {?}_2З)Dbv>3ڴl9{K8Ull<8Oua a&{93m}3i>WyX=^wDz0;'ja0qigh=cږ_gnl'-fm/a ۸Ip8iXx%Dbm>j6^ۘ|F{3+3o֜N2\?1cg}nlᵌ 'OhqN!g`XI="h;>rd` PSV"V3$ë(=ٸ}&ٍ+m[{jMV2Nw٬:f'ٜ\XEB&h-rr~Ro<&^vfm?k}i0r1xlɳ6|RF!{Lf+ \ljp&fgڛG٩Q =$Jj"Bv'm;iϞ&LK׃dF(gi6~;vvlI[A;SΏ3?׳X2Lݥ=O-m/dlvyF!X\^)s b_dTN-JS^ٻo icI8Tk64/+ q|>0K7|,H0ԐHڝ*Kg,1ӽXOiK=϶;oKb1{1;lS/` 6ĮS'gE6콍1`JV9;+met  N? ;l`Sɛ)rb%P0l$xp;ٝ^&F iI؉2[gfa0[wf"ndN%i1 NblO<$dm O+[ :vnl.`ϗ?q[?7e9qع]6j+mmr;em$d:lr$pV*~&Bzh%m=Wm`vFih'\I>aDa?dw>~ژmbMfdXfcXNrdc[SnbvVOӁK ^S٘? Is_ӌZ!Grimc}XJd쭝e1.F i{G1Xebq)l9>^f`v[7>c=͟6qʕ.dDNϙp; 2\m Wca =m<7#j~ fדea8`c5-*Vgln3%1RJGQwdS`yaՍwdzl g6ؘY;S 'bK\xDOal>jh?n3gl-0ic`زmd;#3 ?⥉SF.\D-vFL6H{EL_SP(;ZF6\s̑]"$KTiڛcm>tLٞ7gE6mΚPi+0v؛wI~}ۘ/3յ@0qYRf`f8S+ }sqX$aFy&3gq 21;Okm*6lRRqˬ"t3;.N?Զ81/[7hEætr'tȗʄ·OE1Xݟ+{-d`Fۘi36[[ѴFg&xs=#`vԙ)2c !#k+ٽ; # Z~#'bv7f`Kacqg¥R%LనL?ٽػK`lvbR@Ӷ^>fml7jɘ%?RRO)XUofvݭb~xM{"Vb6n18챱]?g8%HD؅NTN _c6.8hvBoohv"qS2Q;ة2'ȓ_X^%x2H36jl7_kga*-Ɠ'bWKqxljbW2Bj\b}ٻ3mcr#n{EJLmR0rɓ)ɖXd"[F̘c6Th6{fidhg콤6oO)XIy2J&XRa+^/Fi: Fלh6ΙHQOf fgʟ']Xx؛6nٻ]"BG7*l4LS0<4 "F'iʑ#3:\˚e{t#7Kbmg^,IXLF1R1ꗊ;Ny8i*YB30O{U>F򾷅ڽ ŝ>v 6Nmhc2Tfc*L}[X?ٍ[Sb}I_6/bb'b{oxș+ N a~M6{1#Wg#iٓ0XL>O~a0>%\N:DM{A`};[kmRbG6}<|$6vzlm9S?bMz2M2ե{1o `;;&lN2v^bvo퉩V#Lɲgc%'v# {?\7X%Ʉ#fĝ8}K?Xa]4p~\^;g}bnc:nF2fc(0S#&ZFyI["HŨN;gamŴ5x(LM>r3JҤ'v~"~oh0HmgfI2s09^pXevǯh;?iQMglySe*f^- ],\>j!;//c6>'lhmiv@;sncc[W8)Eh`L`S# HTjܯf&{/^hfp*f{=Ι8b:< G͛N;71xAX)f\fNIO2fΔ#p[*č# !O R9n I~{U|b*^֗NL18Q2%}7YQn,Fvz%{kٽ4dbdb\l2.1)^ڛ#i{Y.OClM66v%x=xɞ1KiH^ ^͟پ#jh&"v~jٳɘn <.' ^X͓[gle/ Aⶺ;Rd{Sӱ-; Gg{0ɓ0a}o3vbvVTt;/hLb\~ŧhb1X ($IKFa8Jv_ܕV!*cQ%&erOZ:Fmyi;jc~Lϙ3imh$`gOr063`~gH҂T1BԫSwEыR^ʛj'q<lO'jbpJTHNZfk$b-^)VmDm%6N3ZX|6#i`eL&30 &kJ_iqm-ⶎSFe}lM>l^ى)Ia0$=rv;761'hi}dm^ciN<fLVR-SqRv>>l2bqBOGцMiX?ՇD}vV7xg3zl2yxpFO73CGYqp$`lo$*IM;$ 6ڝ&{Jq?I6Nԓ.S#OGm٫ U x!5}` j aMFѕS>kՊv6v?p  ytd;f0?gdz#)_^>V*dhm9Dϝ<3 1#f5}{;*qFFp80[gɛcflbJO鄩8|2v^;?[?c{Y{>z={Y1hұi?#bbW;V&〈HLr68#jMXMFQՌ&e^_cHV:QՋ(GWu|XxV:dQSE+8?G~/׏{fǜ]ccş<#/#_(GW2qєFQeC4z,95τez_^u_ӗr(QՌ(:u}zuc_(:Վ_(Wu|1򎯔u|գHR:QՎuc GO~wpw?鋅,:䄏k_2iј~lY(v1/L_ׯC_˿TRoGחo?XlLnȟ6u?:v3ґؗIBbKv;3CQޑs' uj욳h=/tg')P^b(<=zeFQeqez^Qռe2쌣(:Q\/(GW8yGW:򎯔5<8GV2_]oF:PV,:.R#{G&2O22?bW(َ3?8_6Gj~&3Qb{ߔ3Y/ŐO4o;@?C$-]oUA7l8$7ez|#'Tz?o5?G]#vt1Zg{PS?K|c;:d{X7:3 uH,w{׏.Q-]}i_Y_2:_8V:u<_(ߗdGV:^qucXV,W+w('?Lg#;xGQQݞ|HXyљ==^~p?ݤ~B?H]";Ջ^\<qo-{!S1H 9=Ė?.HSF֣? {,ǞPm%1TTyR> !_Y1WS?8^/7Gݧq?$;n! |T f.3"g/L2c4PG}x_qfd~^do4;bGZ_E;XUrucu|-#/uc cW&/(yGVť׮z[ї_CHG9(1dIVÔd?1hJ|(Ǿ+yW6/*ߎ{B>xRPOGVcK&M? =iJ3[?2YfC7&-? ~&w{f7e/ IHX~ըc{ ng[~'IO+.)O>??x|c|c,Ęc Z7}??^:?|H31h#:2eFQՎQՎ ":~e$wCT~Q<3Pbܟ(<)OMHCZNQ|:G_J$p@CfrPx>=B[ &v'Q#B[GQg!!¤vTtG_;Eķ=J2iР~O/a'yۺ/-jiJ@j"RpM6?t'J9qQW(Je;*۾:DbʷvKMCmcpٸ4~o?A̚-mM?äI}`wLooԿ@?yEd$*~q貚QZ4t`|>vaޥ+N%@ sБ(LY(P[_G\Ā(,G֠9f.8Tۍ2_sQY =F-&gn8xtKK~P &cII19YCj_:~#\z:lUo,&nQyc]?(R?=1xrDu@?aμ8.? FOB i 1)oo[9@2d/̖qjX%t_yU)3T q)c[J;}h/$?.?К^3ow\CL= @]*9dT@?(iRVN]r>Ox#O&Ha)gj epLtoJJ}3=&1짋Is þDGVy|ԓoDh',NkV3ѼZ3Oc@q 1^2<#(ɼ8Em}x߲=GBz|c[![r/F_&G?8?ǎ1)*T%;L};SYL8_dyCV9_Y}E7_,VSp~z@9z'wYuL}aj|FpJFHNzFN_lUߧ'toC c:?:3.ߗ#9iDW%qdLΠ== TV!.2@e:ִU_)"/1J9xq$P~/8D] B|5OFU G?vGbYKpa~%2dKW#, iB|7ٖ $/ )|?H:'otXpHR{n< t4 `mhK<|aPpgᔟERv1jݲ!VuAc7Ū=/P1=*W/^AvЋ;={(_po`8'Ls&sgQT])_!ocx^)H ETpQ8dKiL^/6b)(R:G+. <^\ J(R9+.GX(IZRG2SXb8O"3KPtѹ)=ddfN-%!YVOz+^x-$D>gTz'9.ݏni%emb= tbX(pPя7 'c|a:1sV/cSB<ܫ +_6/e-ЏZF&K7|}*'o_(In:ۑՄn+(J6kdb?Z7)2 叜ghR zZ7r0 MJKk< )IH:C #w Qn.Okkɘ2O2FSFjI9< hz6{>}8dUl^WŐx;۞Iă#Js[AqW%?kڿBaKx7>\xEVY)'AR$3JKrx $s69&Iur| yzq-ө!UwTZrf, %9R[bE"?}1]7dN̲Gk^(HF9D]K~R>*0Udi#Ixt"e&ݼ"T7)]XayUU7~˵O)Kŗ\w(yrG{|Z7bX~R{_~^Qdxv^+(?I?(S%+}C`+yG+$|2zӀ&ok Gٛe SݖM*6wjp*ϻ./UHv7;DRJoSotd MV=LoR?) 8I 4} JIK4A+@Δsq0G l@'ƗhZ[RA 3L<7ڵxF쐭3'Tܒ~9FTA?8r10ۧRMHJG]M_(OwKE`8v78 EұtCh۽un7#VI7''^ȘŽ>BX ǼBYxr|`s nHF[X0D8(4SJVf'1 [c[%K NU,*tS x]"IҠI6)TAiαq1kGA7I5x9_;{F구q] K*X#-0ϻ'Üd޽g^,ߝj!\ӭ/T{8%)K}~X儜vv1Hkow@ D](|`V' F?p[ɍ__h֩E7L~.2/ZQnvƻi>67q13?(sruSK?gu}riyx0-*n0Ȗs=k:#pA ]JWy\cI.!7bձ.Ru:?̙-EB6Mɗ/ {R7SR'!|T= J֯lɷpn"M/G_U3/|3%r??uO8JAx(sRRt~bCny8Zo% _ t\y7;"2"~ߔ=iˆ o(G_7kF~>FE#R Z(P#4.*A#r[\|&B%EJn3Vq?$/F]'Sف܏٠7R~f3_^ΙO &Z *Li?faXuoH? =%J*f̿$×'5,|OPFe G篬Q/cv30?JyJ~p'62n̈ |n~Qkuw|@>QpGkXzŒbjy S*K)D PV%֝mWvG"eTOu$c&VZ oB.J_v})2[+fb@SanY*$W͡4iB/8"~pa9C?Y.Tj{#¸_<^E/a}JR?g=5J~=}op8nMF_/n^׿|?#(=ց Ø`kݪALEtT*dI #QZ-8r`(,?әIP:jO`>p)+JK?תGp ә3 %e"(H]z8!h="P>1-|zu-RRiB|t$GޥvSySt[8?(IJKϷ(u'-_֗@nx W4_ᔪss{!?rUKA( |uˇX *WgWJDm!M)IJ|jŠ$N|@~I=~P9HݐU:I/K)_ջPZYKw7Ğ=,S/iJ\+)>e Ϲ")$c>1PDD~yx@4 Rr/{E3}wm7VR*n@ d%Zu R!Sq77eήJUi$|#Ky ST w8vwnKOE4Ñ8>^#Nc0o (0hnk!;Fm$bHo43{=}z8^kC);aP:F(B/ߎPfGo t^7MD7(3TdTDŽ Rv|'V&\nAz5vSj.)* zt JL}HW:98W,Ϻ$WIť z>Zx"LO׌ J?cC~|X}ŋXS+~ܡV>fBaMEZ}Z hI^o7KFTǙ$PI=!O O&* P,n@gDW#T@'n賫Q=T2{ %E%&X-s1-^g(a#()K{¯O^Qnpg&u bZkRVH ])pIVX]G6R:Ge<j5wkK2} |!TP/aKxQyi|#u2p~Ԧd{ޝs*0.xxRCN|}VO+@d@?<<=زdp/i)*oxۉIB;oZu,L\Egq-reCPI qHTٝQ I[ݭaz|S5rK0XU+>Pz{ K~*9trfpmJ/$#GG✞%@Tsh*dT?Q7P{K)/A=6/о^ `a!\oWE]:B$v N/7&%ΌJg p?rn×|[1>ܒ`aPCZW%Rʹ|oH m1/B*h5MXuq&33񀤺qu<.ݜ|ᒦ{W=(MtZTPa_=j]l.io7xzIC?_ɓ:0 FRTT4tapGo%e6"Vb07CX|ν5( $^8y41ssjd s`g7#}h$E?k b/=<3<[to zn|!SSU$;*U ̖ۨ5OH{ٛ-)pQwc 0SJEC %\V>ZfUYh$wu `I3fipUwJ9->12)=ʊT'Kk`.syGJxf!1Ca2 Z4r٪#Ѽ4H_j\2Z_􆙈38X"ZT x~ĨkqGJfSEc:E@?˵7/~E#] qf{܋,ԡ}>cz3{xe|ٙmx?"=~f,_7|#2~ }4E- jJԄ@Z=5|њC/@b8zfX #zRTR(~:(4=_5+2 v]0}[l^7BGUm(xGT#BAyvÕ?( OyS|Q,cq O vgJ[ ToL٩>A,7n02T9 99_yiM#bGDg"O6vRh|!Y!@w ϭ-! *7kts*=!FAub{b@RDuj !ԓ[ |fU?1o鶱RDf"ёu%REB۽!hTR,khEz[S't,Ԥ IRIJ[H0jÕ3sQk~ێr},9]#C&_H~(?8/1@qd|}*Q4.Of&PG F3"iU';5M4iKc-uX{C_*&qĹCN"?b/̐B mJ{GR?(ͪ?F*_;p|!IZ\w'0]I za=,Kf7,{.|W0|ĥjʿOS.ZG3bFߜOڝ'^ܬ;A?/("ҥxh="|˴.p JY6siiQG5RRiӵ-l|'ơ?>nFKh)$ޱK$$w|m ʖsh?0`9O)%_83 aO<rWi8,*K y_u> SMZe) c(7J߉Jn`e}3()f }]^Jd_(o\xgK]\Z X9?QָUqS_<[.7C@pƙ,MwNzf<fa ٹRK^^v\cX3S̛+bth/RʝF9~U }J +)! I fŰp xR%jR 0+*W)sx& ,&ϛϴ7T % |Dؼ)ba!jRvw6˟85{>0+>oӐdtt~(a;,3x8{b.CC)6?v4ߧlR`s$Їwݤpֱ+FEl >Sn 45)$!ث*S|ƭG\+Cg|texu~P=ь%$9NIO&'-~%MR\_*^"}ve:G0Z=7.lkÉrx\#L^RVc|>vSMOɷǷMdP{/$(1 ZRu-v!*D3Roh2ol350v$QhRe.FOTJws|[%g|w^:  ;b{KTjyu9`\Rڵ| 3 H?x%(d;˙Q< $jor{x%$$[bO 07ЄpMJ*Cx6;A`cĬOi8ܡ*BH S_PTszŠ؎1\QuFgţ;,O(CkF *W\B:sG[2}|~ZB1y@dJ'#O{ۆQ3C|ԣ?BæiF6ESfaԭEG`c(HzxLq$9:'*~*[252ʚc%qK@9%$eÜ,Fyw7>OZ3uz:ѺT]h38O<(nFx_ݧ~ezY7/8s5_yK?Pe%]3~{L!˞e}%ӣ|./^HW`Wz9,viNRf%z=CDI)>)vEHT`%'[B@H{Z~ пC|4Ǧ]E)I*_/~ׇ=~Nqe7ao8.WW/K:x0x?OfZvqaf'*7k>"7EFe<\0Jf1.u^\aY]֎~0hG=8Eev?شY}Vm@P#y;ݗ~-? |bH``ϛv]Ws^7Oa)6U dVWDeR|-lt~?(K/{Rkq1~RwE5֭UY>G_(eRn ?y<;#yHW#jG9A,n/mb;Ǐ "쥀[vc,xp8afH}?M!/HneL =3J׻nl9.(ܖ_T^ͦCO!saH׺>=aǏ(Yݘě";|GG?N_Fqr|O_NpghgPuP$>Cs,"{-nةCbNxo\aJ  @xxh?=d#U-s Yʯ @s'љ6IP*kjuϕa"3=~XrMf~t|=lHϮz}S~_Rn609f;?T2k4{A[v'7P- FG*@<%,=h"b$/⎙%?`7s aVL6uыG<&G!I8~p3>7o8..z[zG?BU3ߘyv2PgB?ӐL"[C($fkpI Vv޸SVJL .b;3~M0Mc@xgxI'8)4_x8zGZ2Q24OU)w(5=s`{ Q l Y\b ˵%J,?5 Q[ UQ>WE̖.9@uL\Dd|^(Y8:0_:Bz8,C.k eόB_|nYC|B52p2ӃA[չ\ t/D$U ;6D$w5'OP\Z*U)'{>^z#tfk"Rًy9Pц: })),BAl ƙSNDxB}%^ ˌ \=CFlɭ[YZIX[- e 6JA&ܛX(Sܤ&p0?~6hd oSŃzR8( Ηro(^^׮_G7FCxYyE\{ $^Əɸs0˖wRD?+L?~1xhTZ #\FhCz(HhR  *My0iVEbI[&DGp=oK^6POBK^ƒϦ̀GL(ܘe 9yq6a$ C!$Üx\ӔR Y]v=eq:d5t7ƐJOURiC?;/*k~xd5 =zZ牍 akEg3337О44)S2;|"~79#:Ffi7x!R)Fn '2,i?q˗1'6pP mK\w7>yq;E#7DQRf3dm&.ݡ[1inZ}Ga:2T5 Q 3ZITI#DE^E/ao RK<^x;gZst Z_&p,OpRm!A6N}J)GV3sKx7x~Go=|>`?]^2;z3ɋ>]=.c/?8ތs篌/,%ݼtQ*[f-nibёcCǀ}@ACYFw8 UQkBkÔ]$d 1s( Gm:O`%U>C>R)PN}КeoYUX!N:ehyX >PwN*0S&tA\kݹ^:=tbJ7F%%n#?Ђ5b,m6Mm4AEOR.Q-`_u9Ō1xOhl6|XԫŵຊH5#Վ:A CJ*Ё)4%~";r<5oY蘳)5Է~qNJBcqJn|R/dJ_-Nz*b'@@Էn&v~06PvL)]Ԯb J8 @ Kf_2?¯τ8-m*Ůs k,_<1t:p)DXWz(]QUc$f1QX0aqPl6/ 5AI4B&SEMhTĥ J`,ݼD=7eJpBJsbl9._2|1q8Itޘޅ3#B)-w}}ʢkJeEل8,;W&\vSqPv117wJ؊l~oN_FBՆ+rK9XR_-_׋ZeLrIf4*V3,ULQGVl͸ecH օcZ wߡ:oexLee4%!{HXzCL57EMa0@"u2RolMJ1g ,LI#ZBй<0u796|I۴C?]+^ 8/kn7`{ZwkK *7xGᠬۃ^ !SV%gJy4xa5Ib'PRkHIO X; B@p8~w(JZ:ʠ~P϶(W:U×d;Gw>x@TXBB ]d;ɒ󦔐xYU-ctVH<"ؐ3#/yB:)ih{oL,?( M סY`9-ex<:T fMRxE HJFIRA]#w[) (WFֽw% Z.;_<ݎ20˗2r4(OK' aJD&bFE?g.gr>v't$pdV M6$uL/#dad8r0e4ɉ=UA T}هWUVr?Wݞ@=!¬,&"0klL҉2 J$uTG)Iu_z]SJ?f@.{6%=Wa-5s<w-s4 ,F/&bۑ=HzFOt!'vP[3zĵ\S줐@LBd^RP9/JW#3<*8\^,$&€Mt\ԭى+BTZ]잱׶ <@v<.L SnjTs$1ߟ8E=i%NNS,^Nqe7jq[6g`#,P墘qm7-PDayݚ*IeqvܧX|ۻXZR_8]!*zcP\ven(,Vw%_E%7-Y"ُcCz}z e^;֟]r׾ *) Af5{9U3GT4rĥb|> !+8tUa.VY(NJ*(^_ iiOBcwT˩HJKݳb.bT %[mХKCݺ(Cy=%Q %U:[;lZs.3ak?@Ue*wNI fhXHt Y%2èU1[ BtV^ޔ6]!(8>̥ls}s@dLg7SsGF]lapDLo`p/Z&WB ^1k㩧.߈N@i,jJTsORٿ3Nfw`>c h[ P1)%[(ocS$*.*ǫ#zC(H** H$,M5!E%YRp|<ͿPMvQIY^ ː:99ǯ}@ XS(8ˇ2@/^PwGW@GC/׮ϧSlxMJ(uu>wʬTVgtՉCOBJ`4$r`Gٞ=M kVA.j1swRH!;ى6H+t"2,P( Va҃BS:fw"xć3ɕ9 ̒0("]@LB%t7WCD/_uI뻶ukUjttk꥔NJE72ׇRhKRقRtɨRRϼ7n@=e$<.fUW U eȐu]Ԛ3F$>@n6hVz̫̀D~7ҙʙ5(K3UnK$RAZ.OC,J%*$R!6.ZJT VgRvV º Κ:Gݨ.;0Qr\O^';PuH$hbH[ƀrd3jqzE!Kxy3AI^ ^0W'Bv{>PtU$r'0Bfn'tRI,Q ~PF.}X@MA Qv+QQu+4YٽY(ĩcOy\H>C{䲰kݡt\6w'{׎& `lhTBҋ|SҕQ,;<-[JIq+<)wl L}erkHjeR&cىK&ӾG @ml&H,'BU,1q -Hp䭉p3L*ZjEC `={5PoQC{-SRJBl{2qsBIJ!K2$]CLI,2( VU 8LɊs7v#2Ÿ 2:)VcsR=f QZlЋ ÄPjgc Nmk]PmP(H`\xJZ (e+sG"/a 9j(IRI`{f6t(3NV;ݐNv]FRykqJE/qgZҀNnaI,SŚ,uwPYrE# m:E,TsK)|97tnthT| Qg]'# ׍kJms<"cї90vIRHе`(u u0?Z?z}+)Sf*(Aě $\jKVr/'t2JCɨ!J-ۜ%ʀ4:1Snb-YpJ,tj]P7Rmj)б(kN꒶]$(x\PT 1{6wh3ABRVj-]`2$?!5,K=R%@9gRµ)_)N* T!Xb5*7atkWTbYRDA2pd!jRd]F:yV I.fls3WDL7&BybZ ](7S 2)sՅ ke s5A)L\J͜’NfKLp%*Z 'tF\ً B R]]`*4aE 3wRB*`)*%e*XY3©%BDЭFDJI?X \[II"rMWR\W|DNMBnR'K^Z.mAsffy.-C<^(Ύit<p/ ۣr564ҭ6j*r8Ti5vI#})•B罡 %$DE17m͹<4kOwۆ(l~!孭*AUZQV\WI mꑽe 7+Qz7Wָ5V?|cp|:9 Kvv۔C srkYTaĞLIA{NW6؉LkT͙dK$3R&5S,C))q%+R%Ct2 -Hphb*Mv8y(JħiB! ! <ڣ \*]I_DgK(I%RjYpenb(CbSQ3- w=OmI&:A(򸆜U)5tp Hz,ƴ;DGFHTFDHXqg3y)S w>!ln!xBBwfϟBnĒn cXL-jHk%NKHM-Sk2S݂\WkQf-WVM5D:.j2sWH$uUìRa7xBHJa/k&eHfʨ!3TQ*iΠK]Y +F"tLΏ Jn!5Rʪ)TZ&gJTBT&Ȗ%B]% Hf{=g829>9IRz6{'bM 2IY)Z9U(- Aiuՠ!$Lf[|Gt!Dz:e1,4O<{!2GW<9D 3ZFx:yGxlD!JQ9=4(&{0M6s~'8&k=*j{n*'|;tn+xCE`CaYCV9Z-wUv)x[8$O'>?@PW~C{^VWG"oX*Kv433O[kt(r cvv3ە]/aXb龿Ha*eL4';]kfX'C$_DJW݃I௵MްI9v;8 M{a!&ٳ;\96/{60tݸ#-Sf_ K4M31W9u`"akn)CJNUI 'P!)RSZ^LNv t%/юWړqYw-$B$VUIQ\R2pƫ!`SH 37HʬYse7HHӽ-S3} z1n+ΤMihR *JOxɘ' R_iEwPO'M:_fQ vME,ÖB juƱ`njHpM;’Y"0WawȱӾP:Yun:tWb/E>ܱ^%P+zUso.VHlg]+ B@~ Zg2mYGDJaS{sI(s:Go|yYB~@W 8 O"JS; ORk>XSe'/+h~8 M+Fgh/:0=V뱱Y GX}ݠvYZgfhC&pjE#I-Ф'Zgjk~0]`UY6"%!KYR0&jdec~ovO“åkIϬ Baq +s%ITP{J@ "tɸz+݂`͙ɭg~MrasTh *T׬攘M6DLL UNTؽ Z-h IWHkxKd2{l I.;wTREK ^"r0rʟVJRQQvR(WVMR,Z@D^8eSq|%ҠTܶ6e+VjG1 T )AJ֕MN/Aτt!ke,H< (ʔ6ZY([,pMBOuF{տ8F;s0K%*'/n9DVkLr)Rx+ URINJ 9Y!.[K7rBPX5-z2kLxJ9^0jJ*[&Ԫ2[~Z7=G$?r4tiy悪̦2HqBر.q#7UA![qnERك5:uнT @*%#R%4ah)D¾5CL-Qj~h_GԗPm{V$Xzh P ԌXPRSksoiZr%{ŋ_[XAIE!,s/4-(zɚ I9sObT: M!ol- MVasýlw[Mgdv82JYM].Q)h\ w@VV@1cKf‘np/wn,W5 ˟R [LT .0IbQ)sb0ғDK($T*Iչ`VT̐4By J(n.:.)"SL* ȀAH:[tnS):9~ 3'!I7Oؐm4':ˊ\c'D $PvWRhB$XT q%MESdcU1aah dV۩soaIFeSEB/aKINw)*R 3{ԹZc!Jp`5/U!^ݱ)UM=^B+@ʥݩ/aGmnNQ~'Gn& ~mݯM?X6fZB ?{AÓNmoY"^E-xt hߔ,5E.beSOh\ɹn 5z]J꾖pЕ-%P) ^` `'Je?ieZXe ? A~.3I&m*V`ROxZbvM1^^Zx`8 /$CeϤ(J '|*L"d9Iyjhܷ TTtA]~%((TZYE$0J3d-[s/-*`DttثY޹=/pgYJPJ+f .]|BG`6 0 XCM 9 @RI9 ŏW4Ъ$,hyRY/+Y]P+h٨[A{*P99Oᨓq! RSxy!Kٴa[g0p 6MƓcmNQZz YAP&nHiIeYBj\LPR3+$=!H;E82ڢX*XΞlBSh &Z$417 Kc0)SVʘALdjFyS2GIAyDu $N` 4WkK$ݠ%DT@H9&X @ NsѤgF"_GHf)Vd+VE ]CzYTQA~N.S:TFjBQJꏳ uD2k$AJt*%_TJ4*4!0TnJ  []%LQNyL ᓈB֩!wJE0V'PrL*BN .UJZ\ʐ"h@ܩRwPr \*afe-҆!(V%25Y)çe .يAJٞZRt@-gBH $sJz̗ 7:l1""ATf%ܕK ˍ"pj~@M)t]=yz9%r%wT,Daz ȕ8LTP.URRjfхIv%39=.06uN0ە\)"lS#Dr ePI'J2qDӛ .TĠ,ds)jT]@:jeylRsq畧˭=d/i))PZ&K$84f M&g/=cUTN7˻TjBm2PIܸB(Jito"ċ`}ШÈNDpt'SY;A5'GʗezF=ᥧ/E>dUc% +0JQtܯyhg˰\ 2ˋWJ]BX+wMQ+TVY-' ]$%%[t[<*4]-m [f DbsS0AO:w~qs]%UX֗p> _JH=Z xؒVħ"=Yf~N{ĊHrnK=JA&lZVi`@4BOH:T^!|fu3pH#.X\j HSI`E8':tXVU(#;'6cnU {n*RBp/jD#mK~vP' ­8L^v I `g.X ~/I*vNT\R1~Yi} 3yA=4 4,;>-"dYG)G%v!SR7u$c=,$o%*|9c^l/ WlERKTMҜ)GE+Dɰ K(u5]8*߻>P:Q=/P\`)E ](P){ꝙKոiJT3ALkUx5Y?О< ҐԄ<-HZʑr`WH)G)Ac%s=S;=@J%[_+^Q2b'brOK!*ITjQjC˖Sp", ּfZk7PwmJxyv1)rv"d iw?Oň})Z{BJҗJRydUO)wBUH){fxGI :̂ 5{x$}W@'*CEIgX1ZhmNFmb]F="> tl<2Xr+I2b? r)smKnjhL@ )C V>ti!EAۤN*ZK>kN8Pt&:D6aa^@ !j\|ĈMjQ$],sH|tfCXӅ7uP3INuow˾pul%!&=ɸ}tFrzY.r))N)%@\ŃٱP}X!(/I jδCQ aQE wXp.\{ 0,%6% k-գK*I ѬveԦ [ Yg_X*ql{in8$99jRLۤD'ZKqы1g9Ѳ Ag3xל5bzSϟ޷ѧwBwR9% I4=~w՛fRHI3*zBK\ ՐC-)W0IcRJY.u?w&H0D$Yz\%"Y ;nwU==ZR٥E%WKn\ @:5dwO ʞo)A9$#6πuH@w?5f;Ӂ@osL|usq _HBS.ZIjKɛ1JxeR Hn4LR-1*M7*~𺂷KT~p n:a;U"uSѵ=!CJw[52zkiקeEKYS 8fz>Ȇ $ݾk=I2)^:YV;)J6%fˤAyC̰q(H jtIC!$+bRVݽ2j-*I0.`uw"l\A,EP-xD))Ntz8gЮb-*ZHS <0Rt7?#][("DҩzܓBz5ʔ$R7 ˔)xkQwZ1.|BJC:_7Gp[8u6F*PS:hÌɋ3cE2ӼuԢ R8TۆWJ3:-vH+ t(S'A$ WHZƾStJא* h!429 ;ånͅ~-!bȽT%oR×ol$ʜ\B՛p׳B\&;j]MU9jhkZLNqmN"uh3xt+7$I7T-~WiVZ O)iYeS؆ न&R$&RjPR5*wCWgtzK˧'Y5r6KVPT [%1d=.TcWC d7M}t1@$!$?Yk b@Ϻփ%VOb2)K3GU*mK%#ݫ2‘ZdMr2pMҼfpD,K5$5x0&ϫI5HJ6dHkTZ ]P*{ì-~%ΙOB_[Wt}呟,Bn):(+R@/[885d ;\r*eiУ.ѥGWuEt e̖y)%+[; C9RUzq 9vVoxLҲ@+ ,n!{ Ч:! {6|Eӆ 5e.*H/k-񅽟.!\$vhHP:XǬG>pxk=ai Rs(A`#ut8+k?ׂRVV!:E]D{сBEg|&g[YYR IQ#S S'yLI '6FW RѠTQMTnݪb-/q*(.uMnM*JdL( /_Qafb@tSg)=D!GSja= 6]ٛ*3JiHJYLcWX͒q!,= BVNmPM *R -=b2'=C3pGC\IJM!RgFMS#k==,* !@k}%ȵw-A#fzQ+v , B)uO ]m2d-SPQ$?GzwB*ʅ1eY 69V E't^w7T )$/u5-Oz&Lo{ya iCi|nMKJJH5 ]`)[=A@gfjRqN0 9l AK-M%*dٹL~@|aN2kdCleEWj#)HH6Ts9Ҳ?(y=߼2uQ0 iI಩}u-N0v7)3Q1 @*BC5WY *fK]A:o]TdW 뮧K/RˬGsdeKSanRRQ/ା0(!ؑq|!_h M1b|z#+p*})v ") PC\xmuliϧdtxќѭ_7.Lْ1LRRA_*R=]"̠^^x(JePVY<(ZSk)$xshotK?%NF?Q]{Vu'^b!v!S1JZ%Hf߈OIF]Qut͍iѸxU%Ӣ펝4R5(JK8@uSNݬo $`UhHMQ(d,-)r*Q"H=G#UP ΀M)VWVgPHH]7 f1Jul3'*DK!`(ՀFL- jB Fdfr;\\>qzJhPno: Cit |7v03Z;sSf{|4֪rD⧬qg Yr H$sɡ )K~YYYNƁPZ(\e8JjpU{rxB:e( րENCyz%Aa@$gǼY$Y6 4n^]fbM`@J쀢X>g@Po[{琁(&PR=QW5./ r 9z=U q.gE9lH?yAº^O:RY9q, ]Up\HC&eRD)(` OzR~((ݾVmď`[ֱWH8\T$OXR&RQs*{Ă8J~ΰ:yj Ug] \ r4̥}МBKA㗌 5@G<&+l[J/UIMvx0`!L :wƒقLqݘf-H*Tm/t8ȑ Ta̳B1Wڨ AU J ]Ii^'%nM_wZVVnSH?H4RHnMʫb,bu,kl)ޱ-?鸅Fo`{r(L;>a=ɥ jnhBLs*7_'Ϝ4N-|⢪RZ󱊂kyA I)[/o!z:g{_(o7?8QH*ϓxZ%IQZMʐ¨HYG𩓔 i#u/0⡠~p̛9Y %Bٲ Үxp!7]/c(U7S(m-ouE;AC+UܻbJ HHU` CY$?e(05\|̀kFTfbiI ՙ%-VļRkSP',ìK]uT6b9,BsPf Wr,ܼے loxtiJG}2[M`3Ql"̖//Lڃ r-}k p5'.T%IGgG?ܭ6)NF9[d1?X9BT*M@!+Ԝ$16b"n!#,UQMjB5%I{z)J*NaW:: MWnc (IR:Oovˋ2áO\JFWW *f%Ã]]A KrU1V3mv(kz 0B,IJ셺)&}4oFd9ߌuaBzH9X'?HzPM5\.IJi)Z f% iQ4Ck;ARE2@W&ͼ7w܇x$%%{ tX%%")NB]S~˞)H#5 )VN¥I{nd/҂_ϗܢa2JeT,+8clSK)}Ey7x#by To>Tݵit OW8MUH᭟[J 2BRUY΁a ]V - p[ }Ub[) I~W?$e f PIs>G&n҃ͦCІ|]i;ؤK[v-(]ß.& o}4ZYڼKBT9n%E nd݇ա>=粼 K \띭 Uq QC-EmĈ)'U3aJ)}pRd>Nfe~|)MCŏaJEW>("֤3};㥕ZY v{Bֵ,J_rP;1J:TUAZ^t0F_K8{/n2/h EAWa˶,u[!3+)5VkL/^ DRw6Q5keb1) =e<)* R U4Pʿ'"8AQt.gp:@P2 eʖE͞lm߱u%[owT #} k<0RQvJyBP㭼l XYywK݈uN"dŨjNy!w7sCvyu_fa3h(O/(jK? RuBi}mwѵfWPsB E=PX#\XzzBvZe07qi&!(HR.QLGZl;B7A,| ^ffo'MARuR ^FM:sףQ.!*PVX'?;dǞp笮YNj4Kò9h8|}KY˸ S*P)50B6*K'@L!)uCݹ[~ H=%(899wH,*3p5Դe;Iq(u1+Rjlqۧ(D>6GK4.SjȞ zV mbEe!'ݬPI2]%:nGFW}a-iu\aB*JPR'ZIVɼ5Bg4x|Uz9vp2xȢUH#5$l߄]6`;8*[Pf#ǧBrO`!ULp,Ta $խTIwl}xwB=ХhNd#VX*vhSS 3hOQV|\y+4"oڦ5&$L]s<,6b\>S(S k0oxh2T`3/ L'7PϏ} LUkC-uOdIːP˲+'%(PU!wi?y~Syb+S ԞL9(RX$J :i +nXx뛂"g;k9;r=Uz'+zY!BʼnI %nJe&ݮ0,+ \)}գ-* bG 8$sX.xs*%Rɇ+Hbv1ٲL葖p]'G'A9Б}ܟY.[-}rx-_g->odY$)Ft'頥 r -8PR*ٴ/(m! ,|uT;3\@~YEgHR(Hpy_SɇK%` B\Jd˕s?pvNh/J]*S7?27iBH$[Pi ]y*YLW u9@pp̜w&TtA_Tda99!*StE`*KhJnIԿW:`% JT=O~6r ۙ>.\ޭ\/τ%IuSy% N(ae6!nZ}DuU8hS fK)E8ûӄ-SVPyɅfJ~%5!N;G"VTAkP)Hiw0 Y%goH[{ %,Re,rrirlw`ْx5LAWj>~u[k0tM7r_@/aAD2n-$ S$taKHoXJ% {͢tmT64d]qɥ2՘YS`{3\ʛ/I[Ȭٌf!8MbHW9͞-SXb5W^S{By$n).cLv<)1HPr K[.ځ׷9r&&h @|H+W$_Xe%7!KsbFmc`rjYxd5RjHVW/8 @mUERjV۟lT\e f޹,g@Pb8z#R z!E[ ږo !=zD~qwlL3XL/ uW-iH.z8y7d*:>vo[\ۜ&bC}J[fZC|E)r -N~p~]Z8&,Ӯ{lX)PC] fGׅJiz>ye]U_n.HfgX`w<# H%BKQ^뵍8zb f^|aS))z@'QRߓ>k,eKnQP@ w.s pLm>APjؖiMtMqSy3 eLj`PJ2b[Gq:< rHK8٤"`M௨! Kp{"jtv"5!ᮅi5VL>QC'y(R}bMkȗb& QH7l0pO I)I+֔8Rn!xm\n"VN*a6rd%e2Դ%j)@\EG_h>=ߘYKO6e)'17~;OJ0OGObaP )@OH2pR'ΚSadLO4S*D̜0%I ,TY hʾB/iJwOg(H#Z؜BbjБRRUMTkSJZwŠ [VĆ6S* ۑV%@0:w FIIH59-v~(^D~rP7HIOD.,)Av.,Kl2s9%$.12 ;?h7H>ڜTojMGR&6uX)I^qo[y NҪ RA`y+FI}. EP,yqNobuWЀ3*::-%iU,.¦P͍;a]C][GgR/iLLdf^T(ISRG0ۓ=b*|ЉFZ60횥3l}u=12=jL8y镱6*|*R/ 12=a`[lolFl\.gHa(AWMOAa&cXi3O:tIK\[MTJZSSxDQ0(a0666lI$Du&2Y$] ٘>x)RrgM!SL˛4%+c|"v>m߬)&N)G12$l ٳv~j^.lb/Lʛ6i,=8>[e:$*t߭GjcLٲӌHD8MVR#dv'aV;دi>e@MEl沺;}8y8tӧ=$ʔTɓ7BSr% ^v¶IJƧ~ΝČDD3he]rVi!aX?h%6RՊV-`vrHQ*ThF*xKfIFYxݝq/dv3pafb .&J0xuϓ92eL%) \"^̣۳ u'i rjsShmibFm L'^L$*d&82f)K%D<%SWBI+vK?HxGC "+M9(}!T?VBLBj /͌QYC* RKX19}_+))N+? gjI B҇Z׾:Yw/(P:MKj毼7WB*•P(%}o!EiAn$k|}MH*d T¦1˗?lJTd@ rmwKB7e!bdZ̞(T\:\csPRl eg]Cf3 z%{Uy)R5sh4lB ZŴ&&[pf-DHA6bTHfntBeUaJk}纮SPR;op񀔍쉸?22Jl)Y Zj( #A Wݸݳ0 h$ s (I)(pmۓeW)43KK sqx@J\SN*,@ v fbulܤ OoOc0]))$qeh* ܸd2</RRY*g2l9%+RI:}}7LR5yq/Vl?JSY lY+'5:\boG 1~A 2ԓOUGyfӽ=mQ|քdz.(P`3n<2g!ifj3˾8j9qx ?vLo8b %xx[%MxidD+2!H_}*S5ĩ2=҄$~[R/uFC>2V'ϱ'0l!NhPNTɳVivgil{/vr JKi03bÁ01;tʛimY; ӮKQXDJJ&Z~m 4؋ۓfO 03Щreb@U@`J8If> a$߀לav.n"nSB/pzܧ}:+`͑*acN@rҥ0;Qv52ug'n.߮Wp+ e~J_ պS.^-7Of0/a'cK/ c$fKaBQD{&j  ;>BqM&r:dq8Y˒& O*tKTt% V˕;;IpU5]!q;S$kTVOhJ)Dkc>؟Z 2fx=+a g*XFj:;3j)0x s:I]'蒡T2IoL&Rg͞ H9NJJLR#)LWbSdJQnNc~gڻYx|~d9S*vĮTKl-*\EiPlW2RIRO; % \*e(2&~{kJ?h690"$sR{shRJԜ2oq9J :;> vGH^\*׬/kFUX)'~wa HSpu6폴wk6,,ʢ>#@ɲTncݯ{,}-x(IHI~mꪎ%JWKg{-`fGyfE:w4L?fSєrgPy&% S,ߟ +fxC!}b75J]*r;,C$rة!D2l5u 钝Х tǽ =e tKJ.j`V]~C(V閃2r}~p%T2a~^f&%(ITB^i5չ㽖ã%DtU)շlيF+&ֆJj͠5D_g+.R,RyBԇ%=`>O*\9˻_E,832թl&?u)bA;ʛgtgPNЂVQrRlm*ZzTL6\w=*u3$Pݞ$5 Z 5Q;ZHVvm{]ƺvk ZE!h @8f *z[=rEÃC>Zr+ERH%%M?&u3WT?@+&]9)/b\<' )jI%fKt5E%ҔUwT T%!FX8  i[7ZReuK oyܴ7eI(UKI_WꩥV~M,^k(*zR8o\RqP/yUlvZetWRp?9^ќvw; ;O&SWv. (&bҶ2FԭHIc-e)YêX=%_Km*ZG+HRm{"~K2AEXً&u*TAGK3gIړՈ6ndl;Ҝ.) rts YKU!,)Ʌ؛Vd"Tvt3IL9SMw#V\Ĵ A)JB4Ny'6d'ga7ʝf͜O3C/,- sw{Km^;gfxﰑ*ILdC$Z0[l/ F0IF yJ2i+UBԆL; `;?$SLR'H/ae2ݸcTaޙ;? 08ee}\OyV#Tz†"9^{S7(LHjRfġ ZJBCmMקab`aV^8l.>^ѕ𳓈*tT1 "zM)sI'`l#6>lq&|OA2ii ])+MF=L}텊RF s Toŷrh͠vqrFxBŔRi+VD.Ŏ\]ǔDp_hyu) ~N`P-˾P>z -(!,ݽ0ME*&,?8tܽ$oVv) zٞ >~PB*ARTd,zö.Bb`'\ϰu(IӘvǃ 襗Hf)6۳UY,ssপh!0-+BP_#B%T㮿MRT>KeG21SHWM~=hJ;n9Pc2zJÌto,1 rVOcwzݺL%@mKd2x2-̮ʳ  ![1rɥۀߴ 7ohNizeOVe:IIҫY; T] z3.i-4)b B&m\Y5͛yJTٺL vH')EQpml~PTQ1&I 垶Jș*G|a:A>ZRvTf.>Lٴs jg.@l).km&V[w4ңt@)ʰ㗣IS*e ЉivJE TCǗl)2 `[u/taj+4㨐 IbX.@0R"bD򒴽J$d84Y jѽ%\̏#RΚtIa(IR0E!)^'O \k RZ]1vSJRM=ߔLIPm`Kh9%5tjW[& dؾ\eN9)-EdW3rFexƝ~(x7d I [( `F 떎yņ}XӐwdqaOjo&N?=0ى/ڈRجKJTJ¦ L+:ԑ$l9;Č&՘|᱒-/LRɏ * 6DڳNF>bT&fq\iTW MNif d%qR^1^ON$BBU1=mg'';;U85NcefQLXtG.E8}KV9rq{li[  Ys]ʭ8?E9ժZga+d?iUTD kٜ/?nlJN.*;i˕3+q;ҾQ1}_˯qsmLXؿ+ǯ 1F&BPfq2daVc1^2Bl9P"vىŌ$J ZWF_sestL}E(womrGq&`a00M8W. V@Qc7L:\>>tQ)wsK?JVf*I٘,݋6N6T[FtÌm\Zӂ6YvNb&҉dc)&?fHNхcPʼnXM2 v,))K`e6~ai q8J6qʒ|"'faU`sN2odh2b%Nv+`l9,2WH7E$/8`gvN7/gϘ)V' .rk I Q%)':SMFK%&FЬDQpA. ώ!-Qv}me &0 }f” hOTq"?N߲+fg@loaIRSmv<3 KG&Nq: #1hBkZzr} dk~)Ir@C_uRFR$| a?d}ܹ4LAM %˶CBN$ةSUE7s%% `t騖@\q|ȤU nC%j>,8\ !))+s73KR qKQn"uZkE:t% j$'ĵbr|8Z], Eozt]m=iY[?UųBf0*KҖtC&5*BM^`(S(sAIȤ 7x5d1:9vwÉM7:9-UB{aXNMvS7RbTU.Q3r$e\1llE<R]i5 L-4{ˊ,݄3YJb `ZKp藼օK2N@ߟ 'FߤW:ZNzăhT*k RT(nUf-J=`hIH;0zTi*$R!T,aΆ\ t=}liWUPΚ%% Spi/e ɤ*\Ĕ).z^%bHJpJ, g9]"yYƄ^ =#% w }|o HISHmFېW%?υ&fM? ,NR&FijW'H(g ,fHP^u$2m tAD.8JtRdڪls5 Ei1.T5^2GĽv*vҔEɓ?eC.RTGv%Uf 3'NMdXΙfY.BvLGQ/ B?htJV3K*W #R9WJ~4T$ TٷT /6'Ӕ2%~!o<VK% f'$契/Y_4s %VO2 {'4HY`$8x@\iEW>/ H*6w8A8X ;;fLQ^Ԃ@Ǘg2DޒKxzs=4n\Ƒ9h8/'nq^~< LU<>hJ~fOgR_@><rm,A17WM@) Tt %D.q<a("T| HK,[&M*=}wJIaaݭxK3 y塄̕S uc՞Bsu$|Ic(Ih=DdDHCS:Š{wwFNt(_K-AҚ}w܃gcgBbd &94&%KY!ٳ'u [[=]*`mí,Qk!2OL e97ZrwIZnx/sbTJNM}y30moHx u_t:VI ]/~SxG0*#PAV˶%UB^Xj5(n0D-b |DJ)AMD麫fŁxp8cH y7&pnA?hn|{#%2 ܮiSV2y(JII xBBWO\f.(2%2Xn@'F0U+\|mpݐ $f֥TYf#m"rJ6/tjLte2z@JZMJlTM+|'Ij7~(RX-=+}ڍDL&)-f .z"lwrxQ[|nRsn۾*Q|%^=mld '{5J\ /Q|j}ϝ4,lJLbЏfD0ϛn.fOb3fH2deSTTљhZy#qv|&/?eX{5xu:Y"Bx&R1 DWNN_\Qם9POHEhNyzxB$߄{xG}nTyv@ xNQYDT]!TgWtQ%Ļ(s<ޑal,|Z]8:QŢ+h~Ie_?Tez9 s2/Ajj'? m5$;5Zf%̤,<N_Zkd- >B8 )IyRwRz1bIQߘwۀUCyT.\xꚲ8uRÎ!73ˌR)MIً,xf%*6905陙^w4IlA(y^a!ԝı͡T*ާ hQ3TZzPzFMk%*K767P+FNnQэ r@>0)\E֒r(y {!JBV wKCq–b*+Q'+.S ˖uh&ljnRb-EH!A=〇kɤppBT%KwS_;q.b;qЊe<%HmAB6V+ ]iH.+M|/ RcABe]@'[raW߫ f #_ J:N'j'hdl2ѾꗜJR&]̀>K;I&رղ +D/li@`vHдmY[9Cv,-*KMDУs/wz)ZR:N<HPjt5*nHЙWqv {Z)A)~UL\Z4.buJH}ӒMNPMDZ{ԢFW(UGWݍxr׻/)!)-g7AL.8RR[PU(1ˑx'!1AQaq0?!u~xȎ>~̏c㴎i/zoyb2+K52J0Wq/Agݫ|/I *U3#:?|\Qt&E&?{39H'sO ^ʙR;&Cv++ /.vqp¼Y Y$UR2*@_"Ψnt-itvHZHZpCPiqa西fܤrseQ -}d)|3YC`><ȤE%ȡکR򂁛M+U/PW%׀095*9E֩y7ΤT6Aa,yPB:قs¨ƭ' hFN5p8g$ 1;S.Nu)4k5g̈́dz0yd @&Q*7W'#PcX01 yiJoXar|<y+RV);Y q@^lk埍J % ]eb7;E^h`,u_g_/rBu?rG/zg?<5?O?>:~9/y>>M=WAo}=~|W|g߾st޿~r2#~~/?~>wbPȘ[ӅLmWP.N>Tި!`4&wj 3Uq'vO o7afرUcT8֡&Sghi&?7RDLj8yk8[>w.Rjg:,uWa?x~O=ms|[nNc9fz+ >ٮ:}$kM_'>Y>>םW^qoϬREg}s|}9xǶG#=~=]z~?x3߿o#EώO߯#M}sfKx>ϻϯ>>}NCӻ1ߏ3d'=7Ͽ_\?Lzo?:}wO&olѯǤdwǦKQz[wo>oߏt>n=eGuu~o?ǯ=Blk\}_>s=%SS<>E}_~/߳ξ>G^7q|~r]oyqO>?YC%y^=+>2}yΜI\?_9{>5|'{8􉏼WQf0~3|IsIL_^xU=or}tw~:>^5Y}?׿Y_z}yG?d;=~ܴy~szk~Y8>a?Yoj}X?,9}%y&<|_bXxG~6~X~kq?7ׯl٩/N>z} zQGgu`&L"x|fOpo~ύB_i uzB8OX8'Or~wgWnવ㿻8:ɛ2}G>^ L?/2[7#ǧ`kY8ǦsD^״ovǝ=4qI>1Qf2xj/U5s|g_߶O<~~s믿|q}"q??^3^}u=<~c_?1_Ȣa5ss_Ǚ=};~>Wys9s} l5~csg_<~޻>x*9 Qkϩ`޹7_ڜ6!9|?\G$mSn8"wf|:Lu`=ܘlU󂏕;x82vȑ<=pqou'ǃଅ}渿o( fr裭:\pL6koGLʥ X8FWW3,X ORX^y?5Ͼ=r\}a9}y}}g/ӏ3^s_\^|} Om'Io8R}sx:g'xѯ|wg|_wo{U7<~0>> Uz+ϼ~}|p~xTE|92\kx.k ku^&za/'%ҙ8>*pGފ0G~^'O&#Χg $j=O. {j'q㏎."`㙃_Unv5޹%\G]c5<iofǯÆBKocxiyw>XEbMy>'-ŘgL}Y.'@y#{r5{\/UPG<.8K+Wmޫ\U>x.%wʻ<